@effect-app/infra 0.104.0 → 0.104.1

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 (26) hide show
  1. package/.cache/effect/095519d034161945a8d2616a506d3e7f35a9b3d868814f44c747429c60fc4e7f.content +2 -36
  2. package/.cache/effect/095519d034161945a8d2616a506d3e7f35a9b3d868814f44c747429c60fc4e7f.hash +1 -1
  3. package/.cache/effect/134218688132dfbdea493cbe1f26e73449f2759121df35ddd5448346b59c9a8d.content +6 -24
  4. package/.cache/effect/134218688132dfbdea493cbe1f26e73449f2759121df35ddd5448346b59c9a8d.hash +1 -1
  5. package/.cache/effect/14eb9da4ca6d22162888c7fdb7f39ab772d2a2dc6625db6031ecdb32ac89158f.content +40 -75
  6. package/.cache/effect/14eb9da4ca6d22162888c7fdb7f39ab772d2a2dc6625db6031ecdb32ac89158f.hash +1 -1
  7. package/.cache/effect/1bfd92946b11da4292f2ed99dc0e322462b60559148f9524abc20e26f70779e1.hash +1 -1
  8. package/.cache/effect/49c1bd9ec26e6df78b994d8df0bfe21b119803fa4aa46349bf4679fd0f1e7cda.content +1 -3
  9. package/.cache/effect/49c1bd9ec26e6df78b994d8df0bfe21b119803fa4aa46349bf4679fd0f1e7cda.hash +1 -1
  10. package/.cache/effect/58d4ccde8bd2db7829706db5bebd01b99900ee83f0f6a8413b53d17cbd69f510.content +1 -1
  11. package/.cache/effect/58d4ccde8bd2db7829706db5bebd01b99900ee83f0f6a8413b53d17cbd69f510.hash +1 -1
  12. package/.cache/effect/72a5a16a6b62b63cd71719c833091128207d7e6c823cb32293549b3dd58c451b.content +7 -15
  13. package/.cache/effect/72a5a16a6b62b63cd71719c833091128207d7e6c823cb32293549b3dd58c451b.hash +1 -1
  14. package/.cache/effect/7a9c33db6aedaf00093a132c1d4e48e9d043cef05e932b8a37da24d44e224248.hash +1 -1
  15. package/.cache/effect/8594f0f42afc0641b00e88998000cc47382a1d07da31f4a148f7976701ca22d5.hash +1 -1
  16. package/.cache/effect/c67d971634d2dc8118b40452b61c9a51620c35809be4a89982476aa80701d852.hash +1 -1
  17. package/.cache/effect/f38adf43700dab905456a534a0690eaf882cff2cd576c731f23d6d14a3c3d659.content +1 -5
  18. package/.cache/effect/f38adf43700dab905456a534a0690eaf882cff2cd576c731f23d6d14a3c3d659.hash +1 -1
  19. package/CHANGELOG.md +6 -0
  20. package/_cjs/api/express/makeOpenApiSpecs.cjs +4 -1
  21. package/_cjs/api/express/makeOpenApiSpecs.cjs.map +1 -1
  22. package/_src/api/express/makeOpenApiSpecs.ts +4 -1
  23. package/dist/api/express/makeOpenApiSpecs.d.ts +3 -0
  24. package/dist/api/express/makeOpenApiSpecs.d.ts.map +1 -1
  25. package/dist/api/express/makeOpenApiSpecs.js +5 -2
  26. package/package.json +2 -2
@@ -1,8 +1,6 @@
1
1
  export const $in = $in_1;
2
2
  export const $notIn = $notIn_1;
3
3
  export const $is = $is_1;
4
- export const $includes = $includes_1;
5
- export const $notIncludes = $notIncludes_1;
6
4
  export const $isnt = $isnt_1;
7
5
  export const $gt = $gt_1;
8
6
  export const $gte = $gte_1;
@@ -27,12 +25,6 @@ function makeHelpers_() {
27
25
  notIn(path, value) {
28
26
  return { key: path, value, t: "not-in" };
29
27
  },
30
- includes(path, value) {
31
- return { key: path, value, t: "includes" };
32
- },
33
- notIncludes(path, value) {
34
- return { key: path, value, t: "not-includes" };
35
- },
36
28
  eq(path, value) {
37
29
  return { key: path, value, t: "eq" };
38
30
  },
@@ -84,18 +76,6 @@ function $notIn_1(_, ...v) {
84
76
  function $is_1(_, v) {
85
77
  return $$is(v);
86
78
  }
87
- /**
88
- * @tsplus fluent ReadonlyArray $includes
89
- */
90
- function $includes_1(_, v) {
91
- return $$includes(v);
92
- }
93
- /**
94
- * @tsplus fluent ReadonlyArray $notIncludes
95
- */
96
- function $notIncludes_1(_, v) {
97
- return $$notIncludes(v);
98
- }
99
79
  /**
100
80
  * @tsplus fluent string $isnt
101
81
  * @tsplus fluent Date $isnt
@@ -152,12 +132,6 @@ function $is__(v) {
152
132
  function $isnt__(v) {
153
133
  return (_) => $isnt_1(_, v);
154
134
  }
155
- function $includes__(v) {
156
- return (_) => $includes_1(_, v);
157
- }
158
- function $notIncludes__(v) {
159
- return (_) => $notIncludes_1(_, v);
160
- }
161
135
  function $lt__(v) {
162
136
  return (_) => $lt_1(_, v);
163
137
  }
@@ -196,9 +170,7 @@ export const Filters = {
196
170
  $lte: $lte__,
197
171
  $contains: $contains__,
198
172
  $endsWith: $endsWith__,
199
- $startsWith: $startsWith__,
200
- $includes: $includes__,
201
- $notIncludes: $notIncludes__
173
+ $startsWith: $startsWith__
202
174
  };
203
175
  /**
204
176
  * @tsplus fluent string $startsWith
@@ -230,12 +202,6 @@ function $$is(v) {
230
202
  function $$isnt(v) {
231
203
  return { t: "not-eq", v };
232
204
  }
233
- function $$includes(v) {
234
- return { t: "includes", v };
235
- }
236
- function $$notIncludes(v) {
237
- return { t: "not-includes", v };
238
- }
239
205
  function $$lt(v) {
240
206
  return { t: "lt", v };
241
207
  }
@@ -272,4 +238,4 @@ export function makeFilters() {
272
238
  }
273
239
  return test;
274
240
  }
275
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vX3NyYy9maWx0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6ImFBdUlnQixHQUFHO2FBWUgsTUFBTTthQWNOLEdBQUc7YUFPSCxTQUFTO2FBT1QsWUFBWTthQWFaLEtBQUs7YUFXTCxHQUFHO2FBV0gsSUFBSTthQVdKLEdBQUc7YUFXSCxJQUFJO2FBK0VKLFdBQVc7YUFPWCxTQUFTO2FBT1QsU0FBUztBQTNUekIsTUFBTSxVQUFVLGVBQWU7SUFDN0IsTUFBTSxDQUFDLEdBQUcsZ0JBQWdCLEVBQWdCLENBQUE7SUFDMUMsT0FBTyxDQUE4QixDQUFBO0FBQ3ZDLENBQUM7QUFFRCxTQUFTLFdBQVc7SUFDbEIsTUFBTSxPQUFPLEdBQUcsWUFBWSxFQUFnQixDQUFBO0lBQzVDLE9BQU8sT0FBcUMsQ0FBQTtBQUM5QyxDQUFDO0FBSUQsU0FBUyxZQUFZO0lBSW5CLE9BQU87UUFDTCxFQUFFLENBRUEsSUFBZ0IsRUFDaEIsS0FBbUI7WUFFbkIsT0FBTyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxJQUFhLEVBQUUsQ0FBQTtRQUMvQyxDQUFDO1FBQ0QsS0FBSyxDQUVILElBQWdCLEVBQ2hCLEtBQW1CO1lBRW5CLE9BQU8sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsUUFBaUIsRUFBRSxDQUFBO1FBQ25ELENBQUM7UUFDRCxRQUFRLENBRU4sSUFBZ0IsRUFDaEIsS0FBUTtZQUVSLE9BQU8sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsVUFBbUIsRUFBRSxDQUFBO1FBQ3JELENBQUM7UUFDRCxXQUFXLENBRVQsSUFBZ0IsRUFDaEIsS0FBUTtZQUVSLE9BQU8sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsY0FBdUIsRUFBRSxDQUFBO1FBQ3pELENBQUM7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QTtBQUNiLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEZpZWxkVmFsdWVzIH0gZnJvbSBcIi4vZmlsdGVyL3R5cGVzL2ZpZWxkcy5qc1wiXG5pbXBvcnQgdHlwZSB7IEZpZWxkUGF0aCwgRmllbGRQYXRoVmFsdWUgfSBmcm9tIFwiLi9maWx0ZXIvdHlwZXMvcGF0aC9lYWdlci5qc1wiXG5pbXBvcnQgdHlwZSB7IFN1cHBvcnRlZFZhbHVlcywgV2hlcmUgfSBmcm9tIFwiLi9zZXJ2aWNlcy9TdG9yZS5qc1wiXG5cbi8qKlxuICogdGhlIGZ1bmN0aW9uIGRlZmF1bHRzIHRvIFwiZXFcIiwgYnV0IGhhcyBhZGRpdGlvbmFsIHByb3BlcnRpZXMgZm9yIG5vdEVxLCBpbiBhbmQgbm90SW5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBXaGVyZUZpbHRlcjxURmllbGRWYWx1ZXMgZXh0ZW5kcyBGaWVsZFZhbHVlcz5cbiAgZXh0ZW5kcyBSZXR1cm5UeXBlPHR5cGVvZiBtYWtlV2hlcmVGaWx0ZXJfPFRGaWVsZFZhbHVlcz4+XG57fVxuZXhwb3J0IGZ1bmN0aW9uIG1ha2VXaGVyZUZpbHRlcjxURmllbGRWYWx1ZXMgZXh0ZW5kcyBGaWVsZFZhbHVlcz4oKSB7XG4gIGNvbnN0IGYgPSBtYWtlV2hlcmVGaWx0ZXJfPFRGaWVsZFZhbHVlcz4oKVxuICByZXR1cm4gZiBhcyBXaGVyZUZpbHRlcjxURmllbGRWYWx1ZXM+XG59XG5cbmZ1bmN0aW9uIG1ha2VIZWxwZXJzPFRGaWVsZFZhbHVlcyBleHRlbmRzIEZpZWxkVmFsdWVzPigpIHtcbiAgY29uc3QgaGVscGVycyA9IG1ha2VIZWxwZXJzXzxURmllbGRWYWx1ZXM+KClcbiAgcmV0dXJuIGhlbHBlcnMgYXMgV2hlcmVIZWxwZXJzPFRGaWVsZFZhbHVlcz5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBXaGVyZUhlbHBlcnM8VEZpZWxkVmFsdWVzIGV4dGVuZHMgRmllbGRWYWx1ZXM+IGV4dGVuZHMgUmV0dXJuVHlwZTx0eXBlb2YgbWFrZUhlbHBlcnNfPFRGaWVsZFZhbHVlcz4+IHt9XG5cbmZ1bmN0aW9uIG1ha2VIZWxwZXJzXzxURmllbGRWYWx1ZXMgZXh0ZW5kcyBGaWVsZFZhbHVlcz4oKSB7XG4gIHR5cGUgUGF0aHMgPSBGaWVsZFBhdGg8VEZpZWxkVmFsdWVzPlxuICB0eXBlIFZhbHVlPFRGaWVsZE5hbWUgZXh0ZW5kcyBQYXRocz4gPSBGaWVsZFBhdGhWYWx1ZTxURmllbGRWYWx1ZXMsIFRGaWVsZE5hbWU+XG5cbiAgcmV0dXJuIHtcbiAgICBpbjxURmllbGROYW1lIGV4dGVuZHMgUGF0aHMsIFYgZXh0ZW5kcyBWYWx1ZTxURmllbGROYW1lPj4oXG4gICAgICB0aGlzOiB2b2lkLFxuICAgICAgcGF0aDogVEZpZWxkTmFtZSxcbiAgICAgIHZhbHVlOiByZWFkb25seSBWW11cbiAgICApIHtcbiAgICAgIHJldHVybiB7IGtleTogcGF0aCwgdmFsdWUsIHQ6IFwiaW5cIiBhcyBjb25zdCB9XG4gICAgfSxcbiAgICBub3RJbjxURmllbGROYW1lIGV4dGVuZHMgUGF0aHMsIFYgZXh0ZW5kcyBWYWx1ZTxURmllbGROYW1lPj4oXG4gICAgICB0aGlzOiB2b2lkLFxuICAgICAgcGF0aDogVEZpZWxkTmFtZSxcbiAgICAgIHZhbHVlOiByZWFkb25seSBWW11cbiAgICApIHtcbiAgICAgIHJldHVybiB7IGtleTogcGF0aCwgdmFsdWUsIHQ6IFwibm90LWluXCIgYXMgY29uc3QgfVxuICAgIH0sXG4gICAgaW5jbHVkZXM8VEZpZWxkTmFtZSBleHRlbmRzIFBhdGhzLCBWIGV4dGVuZHMgVmFsdWU8VEZpZWxkTmFtZT4+KFxuICAgICAgdGhpczogdm9pZCxcbiAgICAgIHBhdGg6IFRGaWVsZE5hbWUsXG4gICAgICB2YWx1ZTogVlxuICAgICkge1xuICAgICAgcmV0dXJuIHsga2V5OiBwYXRoLCB2YWx1ZSwgdDogXCJpbmNsdWRlc1wiIGFzIGNvbnN0IH1cbiAgICB9LFxuICAgIG5vdEluY2x1ZGVzPFRGaWVsZE5hbWUgZXh0ZW5kcyBQYXRocywgViBleHRlbmRzIFZhbHVlPFRGaWVsZE5hbWU+PihcbiAgICAgIHRoaXM6IHZvaWQsXG4gICAgICBwYXRoOiBURmllbGROYW1lLFxuICAgICAgdmFsdWU6IFZcbiAgICApIHtcbiAgICAgIHJldHVybiB7IGtleTogcGF0aCwgdmFsdWUsIHQ6IFwibm90LWluY2x1ZGVzXCIgYXMgY29uc3QgfVxuICAgIH0sXG4gICAgZXE8VEZpZWxkTmFtZSBleHRlbmRzIFBhdGhzLCBWIGV4dGVuZHMgVmFsdWU8VEZpZWxkTmFtZT4+KFxuICAgICAgdGhpczogdm9pZCxcbiAgICAgIHBhdGg6IFRGaWVsZE5hbWUsXG4gICAgICB2YWx1ZTogVlxuICAgICkge1xuICAgICAgcmV0dXJuIHsga2V5OiBwYXRoLCB2YWx1ZSwgdDogXCJlcVwiIGFzIGNvbnN0IH1cbiAgICB9LFxuICAgIG5vdEVxPFRGaWVsZE5hbWUgZXh0ZW5kcyBQYXRocywgViBleHRlbmRzIFZhbHVlPFRGaWVsZE5hbWU+PihcbiAgICAgIHRoaXM6IHZvaWQsXG4gICAgICBwYXRoOiBURmllbGROYW1lLFxuICAgICAgdmFsdWU6IFZcbiAgICApIHtcbiAgICAgIHJldHVybiB7IGtleTogcGF0aCwgdmFsdWUsIHQ6IFwibm90LWVxXCIgYXMgY29uc3QgfVxuICAgIH0sXG4gICAgZ3Q8VEZpZWxkTmFtZSBleHRlbmRzIFBhdGhzLCBWIGV4dGVuZHMgVmFsdWU8VEZpZWxkTmFtZT4+KFxuICAgICAgdGhpczogdm9pZCxcbiAgICAgIHBhdGg6IFRGaWVsZE5hbWUsXG4gICAgICB2YWx1ZTogVlxuICAgICkge1xuICAgICAgcmV0dXJuIHsga2V5OiBwYXRoLCB2YWx1ZSwgdDogXCJndFwiIGFzIGNvbnN0IH1cbiAgICB9LFxuICAgIGd0ZTxURmllbGROYW1lIGV4dGVuZHMgUGF0aHMsIFYgZXh0ZW5kcyBWYWx1ZTxURmllbGROYW1lPj4oXG4gICAgICB0aGlzOiB2b2lkLFxuICAgICAgcGF0aDogVEZpZWxkTmFtZSxcbiAgICAgIHZhbHVlOiBWXG4gICAgKSB7XG4gICAgICByZXR1cm4geyBrZXk6IHBhdGgsIHZhbHVlLCB0OiBcImd0ZVwiIGFzIGNvbnN0IH1cbiAgICB9LFxuICAgIGx0PFRGaWVsZE5hbWUgZXh0ZW5kcyBQYXRocywgViBleHRlbmRzIFZhbHVlPFRGaWVsZE5hbWU+PihcbiAgICAgIHRoaXM6IHZvaWQsXG4gICAgICBwYXRoOiBURmllbGROYW1lLFxuICAgICAgdmFsdWU6IFZcbiAgICApIHtcbiAgICAgIHJldHVybiB7IGtleTogcGF0aCwgdmFsdWUsIHQ6IFwibHRcIiBhcyBjb25zdCB9XG4gICAgfSxcbiAgICBsdGU8VEZpZWxkTmFtZSBleHRlbmRzIFBhdGhzLCBWIGV4dGVuZHMgVmFsdWU8VEZpZWxkTmFtZT4+KFxuICAgICAgdGhpczogdm9pZCxcbiAgICAgIHBhdGg6IFRGaWVsZE5hbWUsXG4gICAgICB2YWx1ZTogVlxuICAgICkge1xuICAgICAgcmV0dXJuIHsga2V5OiBwYXRoLCB2YWx1ZSwgdDogXCJsdGVcIiBhcyBjb25zdCB9XG4gICAgfVxuICB9IHNhdGlzZmllcyBSZWNvcmQ8c3RyaW5nLCAoLi4uYXJnczogYW55W10pID0+IFdoZXJlPlxufVxuXG5mdW5jdGlvbiBtYWtlV2hlcmVGaWx0ZXJfPFRGaWVsZFZhbHVlcyBleHRlbmRzIEZpZWxkVmFsdWVzPigpIHtcbiAgY29uc3QgaGVscGVycyA9IG1ha2VIZWxwZXJzPFRGaWVsZFZhbHVlcz4oKVxuICBjb25zdCBmID0gT2JqZWN0LmFzc2lnbihoZWxwZXJzLmVxLCBoZWxwZXJzKVxuICByZXR1cm4gZlxufVxuXG5leHBvcnQgdHlwZSBXaGVyZVZhbHVlPFxuICBUIGV4dGVuZHNcbiAgICB8IFwiZXFcIlxuICAgIHwgXCJub3QtZXFcIlxuICAgIHwgXCJsdFwiXG4gICAgfCBcImd0XCJcbiAgICB8IFwibHRlXCJcbiAgICB8IFwiZ3RlXCJcbiAgICB8IFwic3RhcnRzLXdpdGhcIlxuICAgIHwgXCJlbmRzLXdpdGhcIlxuICAgIHwgXCJjb250YWluc1wiXG4gICAgfCBcImluXCJcbiAgICB8IFwibm90LWluXCJcbiAgICB8IFwiaW5jbHVkZXNcIlxuICAgIHwgXCJub3QtaW5jbHVkZXNcIixcbiAgQSwgLy8gZXh0ZW5kcyBTdXBwb3J0ZWRWYWx1ZXMsXG4gIFYgZXh0ZW5kcyBBID0gQVxuPiA9IHsgdDogVDsgdjogViB9XG5cbmV4cG9ydCB0eXBlIFdoZXJlSW48VCBleHRlbmRzIFwiaW5cIiB8IFwibm90LWluXCIsIFYsIFZhbHVlcyBleHRlbmRzIHJlYWRvbmx5IFZbXSA9IHJlYWRvbmx5IFZbXT4gPSB7XG4gIHQ6IFRcbiAgdjogVmFsdWVzXG59XG5cbi8qKlxuICogQHRzcGx1cyBmbHVlbnQgc3RyaW5nICRpblxuICogQHRzcGx1cyBmbHVlbnQgYm9vbGVhbiAkaW5cbiAqIEB0c3BsdXMgZmx1ZW50IG51bWJlciAkaW5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uICRpbjxBIGV4dGVuZHMgU3VwcG9ydGVkVmFsdWVzLCBWYWx1ZXMgZXh0ZW5kcyByZWFkb25seSBBW10+KFxuICBfOiBBLFxuICAuLi52OiBWYWx1ZXNcbik6IFdoZXJlSW48XCJpblwiLCBBLCBWYWx1ZXM+IHtcbiAgcmV0dXJuICQkaW4odilcbn1cblxuLyoqXG4gKiBAdHNwbHVzIGZsdWVudCBzdHJpbmcgJG5vdEluXG4gKiBAdHNwbHVzIGZsdWVudCBib29sZWFuICRub3RJblxuICogQHRzcGx1cyBmbHVlbnQgbnVtYmVyICRub3RJblxuICovXG5leHBvcnQgZnVuY3Rpb24gJG5vdEluPEEgZXh0ZW5kcyBTdXBwb3J0ZWRWYWx1ZXMsIFZhbHVlcyBleHRlbmRzIHJlYWRvbmx5IEFbXT4oXG4gIF86IEEsXG4gIC4uLnY6IFZhbHVlc1xuKTogV2hlcmVJbjxcIm5vdC1pblwiLCBBLCBWYWx1ZXM+IHtcbiAgcmV0dXJuICQkbm90SW4odilcbn1cblxuLyoqXG4gKiBAdHNwbHVzIGZsdWVudCBzdHJpbmcgJGlzXG4gKiBAdHNwbHVzIGZsdWVudCBEYXRlICRpc1xuICogQHRzcGx1cyBmbHVlbnQgYm9vbGVhbiAkaXNcbiAqIEB0c3BsdXMgZmx1ZW50IG51bWJlciAkaXNcbiAqIEB0c3BsdXMgZmx1ZW50IE9iamVjdCAkaXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uICRpczxBLCBWIGV4dGVuZHMgQT4oXzogQSwgdjogVik6IFdoZXJlVmFsdWU8XCJlcVwiLCBBLCBWPiB7XG4gIHJldHVybiAkJGlzKHYpXG59XG5cbi8qKlxuICogQHRzcGx1cyBmbHVlbnQgUmVhZG9ubHlBcnJheSAkaW5jbHVkZXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uICRpbmNsdWRlczxBIGV4dGVuZHMgcmVhZG9ubHkgYW55W10sIFYgZXh0ZW5kcyBBW251bWJlcl0+KF86IEEsIHY6IFYpOiBXaGVyZVZhbHVlPFwiaW5jbHVkZXNcIiwgQSwgVj4ge1xuICByZXR1cm4gJCRpbmNsdWRlcyh2KVxufVxuXG4vKipcbiAqIEB0c3BsdXMgZmx1ZW50IFJlYWRvbmx5QXJyYXkgJG5vdEluY2x1ZGVzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiAkbm90SW5jbHVkZXM8QSBleHRlbmRzIHJlYWRvbmx5IGFueVtdLCBWIGV4dGVuZHMgQVtudW1iZXJdPihcbiAgXzogQSxcbiAgdjogVlxuKTogV2hlcmVWYWx1ZTxcIm5vdC1pbmNsdWRlc1wiLCBBLCBWPiB7XG4gIHJldHVybiAkJG5vdEluY2x1ZGVzKHYpXG59XG4vKipcbiAqIEB0c3BsdXMgZmx1ZW50IHN0cmluZyAkaXNudFxuICogQHRzcGx1cyBmbHVlbnQgRGF0ZSAkaXNudFxuICogQHRzcGx1cyBmbHVlbnQgYm9vbGVhbiAkaXNudFxuICogQHRzcGx1cyBmbHVlbnQgbnVtYmVyICRpc250XG4gKiBAdHNwbHVzIGZsdWVudCBPYmplY3QgJGlzbnRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uICRpc250PEEsIFYgZXh0ZW5kcyBBPihfOiBBLCB2OiBWKTogV2hlcmVWYWx1ZTxcIm5vdC1lcVwiLCBBLCBWPiB7XG4gIHJldHVybiAkJGlzbnQodilcbn1cblxuLyoqXG4gKiBAdHNwbHVzIGZsdWVudCBzdHJpbmcgJGd0XG4gKiBAdHNwbHVzIGZsdWVudCBEYXRlICRndFxuICogQHRzcGx1cyBmbHVlbnQgYm9vbGVhbiAkZ3RcbiAqIEB0c3BsdXMgZmx1ZW50IG51bWJlciAkZ3RcbiAqIEB0c3BsdXMgZmx1ZW50IE9iamVjdCAkZ3RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uICRndDxBLCBWIGV4dGVuZHMgQT4oXzogQSwgdjogVik6IFdoZXJlVmFsdWU8XCJndFwiLCBBLCBWPiB7XG4gIHJldHVybiAkJGd0KHYpXG59XG5cbi8qKlxuICogQHRzcGx1cyBmbHVlbnQgc3RyaW5nICRndGVcbiAqIEB0c3BsdXMgZmx1ZW50IERhdGUgJGd0ZVxuICogQHRzcGx1cyBmbHVlbnQgYm9vbGVhbiAkZ3RlXG4gKiBAdHNwbHVzIGZsdWVudCBudW1iZXIgJGd0ZVxuICogQHRzcGx1cyBmbHVlbnQgT2JqZWN0ICRndGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uICRndGU8QSwgViBleHRlbmRzIEE+KF86IEEsIHY6IFYpOiBXaGVyZVZhbHVlPFwiZ3RlXCIsIEEsIFY+IHtcbiAgcmV0dXJuICQkZ3RlKHYpXG59XG5cbi8qKlxuICogQHRzcGx1cyBmbHVlbnQgc3RyaW5nICRsdFxuICogQHRzcGx1cyBmbHVlbnQgRGF0ZSAkbHRcbiAqIEB0c3BsdXMgZmx1ZW50IGJvb2xlYW4gJGx0XG4gKiBAdHNwbHVzIGZsdWVudCBudW1iZXIgJGx0XG4gKiBAdHNwbHVzIGZsdWVudCBPYmplY3QgJGx0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiAkbHQ8QSwgViBleHRlbmRzIEE+KF86IEEsIHY6IFYpOiBXaGVyZVZhbHVlPFwibHRcIiwgQSwgVj4ge1xuICByZXR1cm4gJCRsdCh2KVxufVxuXG4vKipcbiAqIEB0c3BsdXMgZmx1ZW50IHN0cmluZyAkbHRlXG4gKiBAdHNwbHVzIGZsdWVudCBEYXRlICRsdGVcbiAqIEB0c3BsdXMgZmx1ZW50IGJvb2xlYW4gJGx0ZVxuICogQHRzcGx1cyBmbHVlbnQgbnVtYmVyICRsdGVcbiAqIEB0c3BsdXMgZmx1ZW50IE9iamVjdCAkbHRlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiAkbHRlPEEsIFYgZXh0ZW5kcyBBPihfOiBBLCB2OiBWKTogV2hlcmVWYWx1ZTxcImx0ZVwiLCBBLCBWPiB7XG4gIHJldHVybiAkJGx0ZSh2KVxufVxuXG5mdW5jdGlvbiAkaXNfXzxWIGV4dGVuZHMgQSwgQT4odjogVikge1xuICByZXR1cm4gKF86IEEpID0+ICRpcyhfLCB2KVxufVxuXG5mdW5jdGlvbiAkaXNudF9fPFYgZXh0ZW5kcyBBLCBBPih2OiBWKSB7XG4gIHJldHVybiAoXzogQSkgPT4gJGlzbnQoXywgdilcbn1cblxuZnVuY3Rpb24gJGluY2x1ZGVzX188ViBleHRlbmRzIEFbbnVtYmVyXSwgQSBleHRlbmRzIHJlYWRvbmx5IGFueVtdPih2OiBWKSB7XG4gIHJldHVybiAoXzogQSkgPT4gJGluY2x1ZGVzKF8sIHYpXG59XG5cbmZ1bmN0aW9uICRub3RJbmNsdWRlc19fPFYgZXh0ZW5kcyBBW251bWJlcl0sIEEgZXh0ZW5kcyByZWFkb25seSBhbnlbXT4odjogVikge1xuICByZXR1cm4gKF86IEEpID0+ICRub3RJbmNsdWRlcyhfLCB2KVxufVxuXG5mdW5jdGlvbiAkbHRfXzxWIGV4dGVuZHMgQSwgQT4odjogVikge1xuICByZXR1cm4gKF86IEEpID0+ICRsdChfLCB2KVxufVxuXG5mdW5jdGlvbiAkbHRlX188ViBleHRlbmRzIEEsIEE+KHY6IFYpIHtcbiAgcmV0dXJuIChfOiBBKSA9PiAkbHRlKF8sIHYpXG59XG5cbmZ1bmN0aW9uICRndF9fPFYgZXh0ZW5kcyBBLCBBPih2OiBWKSB7XG4gIHJldHVybiAoXzogQSkgPT4gJGd0KF8sIHYpXG59XG5cbmZ1bmN0aW9uICRndGVfXzxWIGV4dGVuZHMgQSwgQT4odjogVikge1xuICByZXR1cm4gKF86IEEpID0+ICRndGUoXywgdilcbn1cblxuZnVuY3Rpb24gJGluX188QSBleHRlbmRzIFN1cHBvcnRlZFZhbHVlcywgVmFsdWVzIGV4dGVuZHMgcmVhZG9ubHkgQVtdPihcbiAgLi4udjogVmFsdWVzXG4pIHtcbiAgcmV0dXJuIChfOiBBKSA9PiAkaW4oXywgLi4udilcbn1cblxuZnVuY3Rpb24gJG5vdEluX188QSBleHRlbmRzIFN1cHBvcnRlZFZhbHVlcywgVmFsdWVzIGV4dGVuZHMgcmVhZG9ubHkgQVtdPihcbiAgLi4udjogVmFsdWVzXG4pIHtcbiAgcmV0dXJuIChfOiBBKSA9PiAkbm90SW4oXywgLi4udilcbn1cblxuZnVuY3Rpb24gJHN0YXJ0c1dpdGhfXzxWIGV4dGVuZHMgQSwgQSBleHRlbmRzIHN0cmluZz4odjogVikge1xuICByZXR1cm4gKF86IEEpID0+ICRzdGFydHNXaXRoKF8sIHYpXG59XG5cbmZ1bmN0aW9uICRlbmRzV2l0aF9fPFYgZXh0ZW5kcyBBLCBBIGV4dGVuZHMgc3RyaW5nPih2OiBWKSB7XG4gIHJldHVybiAoXzogQSkgPT4gJGVuZHNXaXRoKF8sIHYpXG59XG5cbmZ1bmN0aW9uICRjb250YWluc19fPFYgZXh0ZW5kcyBBLCBBIGV4dGVuZHMgc3RyaW5nPih2OiBWKSB7XG4gIHJldHVybiAoXzogQSkgPT4gJGNvbnRhaW5zKF8sIHYpXG59XG5cbmV4cG9ydCBjb25zdCBGaWx0ZXJzID0ge1xuICAkaXM6ICRpc19fLFxuICAkaXNudDogJGlzbnRfXyxcbiAgJGluOiAkaW5fXyxcbiAgJG5vdEluOiAkbm90SW5fXyxcbiAgJGd0OiAkZ3RfXyxcbiAgJGd0ZTogJGd0ZV9fLFxuICAkbHQ6ICRsdF9fLFxuICAkbHRlOiAkbHRlX18sXG4gICRjb250YWluczogJGNvbnRhaW5zX18sXG4gICRlbmRzV2l0aDogJGVuZHNXaXRoX18sXG4gICRzdGFydHNXaXRoOiAkc3RhcnRzV2l0aF9fLFxuICAkaW5jbHVkZXM6ICRpbmNsdWRlc19fLFxuICAkbm90SW5jbHVkZXM6ICRub3RJbmNsdWRlc19fXG59XG5cbi8qKlxuICogQHRzcGx1cyBmbHVlbnQgc3RyaW5nICRzdGFydHNXaXRoXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiAkc3RhcnRzV2l0aDxBIGV4dGVuZHMgc3RyaW5nLCBWIGV4dGVuZHMgQT4oXzogQSwgdjogVik6IFdoZXJlVmFsdWU8XCJzdGFydHMtd2l0aFwiLCBBLCBWPiB7XG4gIHJldHVybiAkJHN0YXJ0c1dpdGgodilcbn1cblxuLyoqXG4gKiBAdHNwbHVzIGZsdWVudCBzdHJpbmcgJGVuZHNXaXRoXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiAkZW5kc1dpdGg8QSBleHRlbmRzIHN0cmluZywgViBleHRlbmRzIEE+KF86IEEsIHY6IFYpOiBXaGVyZVZhbHVlPFwiZW5kcy13aXRoXCIsIEEsIFY+IHtcbiAgcmV0dXJuICQkZW5kc1dpdGgodilcbn1cblxuLyoqXG4gKiBAdHNwbHVzIGZsdWVudCBzdHJpbmcgJGNvbnRhaW5zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiAkY29udGFpbnM8QSBleHRlbmRzIHN0cmluZywgViBleHRlbmRzIEE+KF86IEEsIHY6IFYpOiBXaGVyZVZhbHVlPFwiY29udGFpbnNcIiwgQSwgVj4ge1xuICByZXR1cm4gJCRjb250YWlucyh2KVxufVxuXG5mdW5jdGlvbiAkJGluPEwgZXh0ZW5kcyByZWFkb25seSBhbnlbXT4odjogTCkge1xuICByZXR1cm4geyB0OiBcImluXCIgYXMgY29uc3QsIHYgfVxufVxuXG5mdW5jdGlvbiAkJG5vdEluPEwgZXh0ZW5kcyByZWFkb25seSBhbnlbXT4odjogTCkge1xuICByZXR1cm4geyB0OiBcIm5vdC1pblwiIGFzIGNvbnN0LCB2IH1cbn1cbmZ1bmN0aW9uICQkaXM8QT4odjogQSkge1xuICByZXR1cm4geyB0OiBcImVxXCIgYXMgY29uc3QsIHYgfVxufVxuZnVuY3Rpb24gJCRpc250PEE+KHY6IEEpIHtcbiAgcmV0dXJuIHsgdDogXCJub3QtZXFcIiBhcyBjb25zdCwgdiB9XG59XG5mdW5jdGlvbiAkJGluY2x1ZGVzPEE+KHY6IEEpIHtcbiAgcmV0dXJuIHsgdDogXCJpbmNsdWRlc1wiIGFzIGNvbnN0LCB2IH1cbn1cbmZ1bmN0aW9uICQkbm90SW5jbHVkZXM8QT4odjogQSkge1xuICByZXR1cm4geyB0OiBcIm5vdC1pbmNsdWRlc1wiIGFzIGNvbnN0LCB2IH1cbn1cblxuZnVuY3Rpb24gJCRsdDxBPih2OiBBKSB7XG4gIHJldHVybiB7IHQ6IFwibHRcIiBhcyBjb25zdCwgdiB9XG59XG5cbmZ1bmN0aW9uICQkbHRlPEE+KHY6IEEpIHtcbiAgcmV0dXJuIHsgdDogXCJsdGVcIiBhcyBjb25zdCwgdiB9XG59XG5mdW5jdGlvbiAkJGd0PEE+KHY6IEEpIHtcbiAgcmV0dXJuIHsgdDogXCJndFwiIGFzIGNvbnN0LCB2IH1cbn1cblxuZnVuY3Rpb24gJCRndGU8QT4odjogQSkge1xuICByZXR1cm4geyB0OiBcImd0ZVwiIGFzIGNvbnN0LCB2IH1cbn1cblxuZnVuY3Rpb24gJCRjb250YWluczxBIGV4dGVuZHMgc3RyaW5nPih2OiBBKSB7XG4gIHJldHVybiB7IHQ6IFwiY29udGFpbnNcIiBhcyBjb25zdCwgdiB9XG59XG5mdW5jdGlvbiAkJHN0YXJ0c1dpdGg8QSBleHRlbmRzIHN0cmluZz4odjogQSkge1xuICByZXR1cm4geyB0OiBcInN0YXJ0cy13aXRoXCIgYXMgY29uc3QsIHYgfVxufVxuZnVuY3Rpb24gJCRlbmRzV2l0aDxBIGV4dGVuZHMgc3RyaW5nPih2OiBBKSB7XG4gIHJldHVybiB7IHQ6IFwiZW5kcy13aXRoXCIgYXMgY29uc3QsIHYgfVxufVxuXG50eXBlIFZhbHVlVHlwZTxWPiA9IHtcbiAgdDogXCJpblwiIHwgXCJub3QtaW5cIlxuICB2OiByZWFkb25seSBWW11cbn0gfCB7IHQ6IFwiZXFcIiB8IFwibm90LWVxXCI7IHY6IFYgfVxuXG50eXBlIFRUeXBlPFQ+ID0gVCBleHRlbmRzIFZhbHVlVHlwZTxhbnk+ID8gVFtcInRcIl0gOiBuZXZlclxudHlwZSBWVHlwZTxUPiA9IFQgZXh0ZW5kcyBWYWx1ZVR5cGU8YW55PiA/IFRbXCJ2XCJdIDogbmV2ZXJcblxuZnVuY3Rpb24gZihwOiBzdHJpbmcsIGI6IGFueSkge1xuICBpZiAodHlwZW9mIGIgPT09IFwiZnVuY3Rpb25cIikgYiA9IGIodW5kZWZpbmVkKVxuICBjb25zdCBvYmogPSB0eXBlb2YgYiA9PT0gXCJvYmplY3RcIiAmJiBiICE9PSBudWxsXG4gIHJldHVybiBtYWtlRmlsdGVyKHAsIG9iaiA/IGIudiA6IGIsIG9iaiA/IGIudCA/PyBcImVxXCIgOiBcImVxXCIpXG59XG5cbmZ1bmN0aW9uIG1ha2VGaWx0ZXI8VCBleHRlbmRzIFwiaW5cIiB8IFwibm90LWluXCIgfCBcImVxXCIgfCBcIm5vdC1lcVwiPihwYXRoOiBzdHJpbmcsIHZhbHVlOiBhbnksIHQ6IFQpIHtcbiAgcmV0dXJuIHsga2V5OiBwYXRoLCB0LCB2YWx1ZSB9XG59XG5cbnR5cGUgRklMPFMsIEsgZXh0ZW5kcyBzdHJpbmcsIFQgZXh0ZW5kcyBcImluXCIgfCBcIm5vdC1pblwiIHwgXCJlcVwiIHwgXCJub3QtZXFcIiwgVj4gPSB7XG4gIGtleTogS1xuICB0OiBUXG4gIHZhbHVlOiBWXG4gIHJlYWRvbmx5IFM6IFNcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ha2VGaWx0ZXJzPFQgZXh0ZW5kcyBGaWVsZFZhbHVlcz4oKSB7XG4gIHR5cGUgUGF0aHMgPSBGaWVsZFBhdGg8VD5cbiAgdHlwZSBWYWx1ZTxURmllbGROYW1lIGV4dGVuZHMgUGF0aHM+ID0gRmllbGRQYXRoVmFsdWU8VCwgVEZpZWxkTmFtZT5cblxuICBmdW5jdGlvbiB0ZXN0PFxuICAgIFRGaWVsZE5hbWUgZXh0ZW5kcyBQYXRocyxcbiAgICBBIGV4dGVuZHMgVmFsdWU8VEZpZWxkTmFtZT4sXG4gICAgVmFsXG4gID4oXG4gICAgcGF0aDogVEZpZWxkTmFtZSxcbiAgICB2YWx1ZTogKHY6IEEpID0+IFZhbFxuICApOiBGSUw8VCwgc3RyaW5nLCBUVHlwZTxWYWw+LCBWVHlwZTxWYWw+PlxuICBmdW5jdGlvbiB0ZXN0PFxuICAgIFRGaWVsZE5hbWUgZXh0ZW5kcyBQYXRocyxcbiAgICBBIGV4dGVuZHMgVmFsdWU8VEZpZWxkTmFtZT5cbiAgPihcbiAgICBwYXRoOiBURmllbGROYW1lLFxuICAgIHZhbHVlOiBBXG4gICk6IEZJTDxULCBzdHJpbmcsIFwiZXFcIiwgQT5cbiAgZnVuY3Rpb24gdGVzdChwOiBzdHJpbmcsIHY6IGFueSkge1xuICAgIHJldHVybiBmKHAsIHYpIGFzIGFueVxuICB9XG4gIHJldHVybiB0ZXN0XG59XG5cbi8vIGV4cG9ydCBmdW5jdGlvbiBtYWtlRmlsdGVyPFRGaWVsZFZhbHVlcyBleHRlbmRzIEZpZWxkVmFsdWVzPigpIHtcbi8vICAgY29uc3QgZiA9IG1ha2VGaWx0ZXJfPFRGaWVsZFZhbHVlcz4oKVxuLy8gICByZXR1cm4gZiBhcyBXaGVyZUZpbHRlckhlbHBlcjxURmllbGRWYWx1ZXM+XG4vLyB9XG5cbi8vIGV4cG9ydCBpbnRlcmZhY2UgV2hlcmVGaWx0ZXJIZWxwZXI8VEZpZWxkVmFsdWVzIGV4dGVuZHMgRmllbGRWYWx1ZXM+IGV4dGVuZHMgUmV0dXJuVHlwZTx0eXBlb2YgbWFrZUZpbHRlcl88VEZpZWxkVmFsdWVzPj4ge31cblxuLy8gZnVuY3Rpb24gbWFrZUZpbHRlcl88VEZpZWxkVmFsdWVzIGV4dGVuZHMgRmllbGRWYWx1ZXM+KCkge1xuLy8gICBmdW5jdGlvbiBlcTxURmllbGROYW1lIGV4dGVuZHMgRmllbGRQYXRoPFRGaWVsZFZhbHVlcz4sIFYgZXh0ZW5kcyBGaWVsZFBhdGhWYWx1ZTxURmllbGRWYWx1ZXMsIFRGaWVsZE5hbWU+Pihcbi8vICAgICBwYXRoOiBURmllbGROYW1lLFxuLy8gICAgIHZhbHVlOiBWXG4vLyAgICkge1xuLy8gICAgIHJldHVybiB7IGtleTogcGF0aCwgdmFsdWUsIHQ6IFwiZXFcIiBhcyBjb25zdCB9XG4vLyAgIH1cbi8vICAgY29uc3QgZiA9IE9iamVjdC5hc3NpZ24oZXEgc2F0aXNmaWVzICguLi5hcmdzOiBhbnlbXSkgPT4gV2hlcmUsIHtcbi8vICAgICBpbjxURmllbGROYW1lIGV4dGVuZHMgRmllbGRQYXRoPFRGaWVsZFZhbHVlcz4sIFYgZXh0ZW5kcyBGaWVsZFBhdGhWYWx1ZTxURmllbGRWYWx1ZXMsIFRGaWVsZE5hbWU+Pihcbi8vICAgICAgIHBhdGg6IFRGaWVsZE5hbWUsXG4vLyAgICAgICB2YWx1ZTogcmVhZG9ubHkgVltdXG4vLyAgICAgKSB7XG4vLyAgICAgICByZXR1cm4geyBrZXk6IHBhdGgsIHZhbHVlLCB0OiBcImluXCIgYXMgY29uc3QgfVxuLy8gICAgIH0sXG4vLyAgICAgbm90SW48VEZpZWxkTmFtZSBleHRlbmRzIEZpZWxkUGF0aDxURmllbGRWYWx1ZXM+LCBWIGV4dGVuZHMgRmllbGRQYXRoVmFsdWU8VEZpZWxkVmFsdWVzLCBURmllbGROYW1lPj4oXG4vLyAgICAgICBwYXRoOiBURmllbGROYW1lLFxuLy8gICAgICAgdmFsdWU6IHJlYWRvbmx5IFZbXVxuLy8gICAgICkge1xuLy8gICAgICAgcmV0dXJuIHsga2V5OiBwYXRoLCB2YWx1ZSwgdDogXCJub3QtaW5cIiBhcyBjb25zdCB9XG4vLyAgICAgfSxcbi8vICAgICBlcSxcbi8vICAgICBub3RFcTxURmllbGROYW1lIGV4dGVuZHMgRmllbGRQYXRoPFRGaWVsZFZhbHVlcz4sIFYgZXh0ZW5kcyBGaWVsZFBhdGhWYWx1ZTxURmllbGRWYWx1ZXMsIFRGaWVsZE5hbWU+Pihcbi8vICAgICAgIHBhdGg6IFRGaWVsZE5hbWUsXG4vLyAgICAgICB2YWx1ZTogVlxuLy8gICAgICkge1xuLy8gICAgICAgcmV0dXJuIHsga2V5OiBwYXRoLCB2YWx1ZSwgdDogXCJub3QtZXFcIiBhcyBjb25zdCB9XG4vLyAgICAgfVxuLy8gICB9IHNhdGlzZmllcyBSZWNvcmQ8c3RyaW5nLCAoLi4uYXJnczogYW55W10pID0+IFdoZXJlPilcbi8vICAgcmV0dXJuIGZcbi8vIH1cbiJdfQ==
241
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vX3NyYy9maWx0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6ImFBdUhnQixHQUFHO2FBWUgsTUFBTTthQWNOLEdBQUc7YUFVSCxLQUFLO2FBV0wsR0FBRzthQVdILElBQUk7YUFXSixHQUFHO2FBV0gsSUFBSTthQXFFSixXQUFXO2FBT1gsU0FBUzthQU9ULFNBQVM7QUFoUnpCLE1BQU0sVUFBVSxlQUFlO0lBQzdCLE1BQU0sQ0FBQyxHQUFHLGdCQUFnQixFQUFnQixDQUFBO0lBQzFDLE9BQU8sQ0FBOEIsQ0FBQTtBQUN2QyxDQUFDO0FBRUQsU0FBUyxXQUFXO0lBQ2xCLE1BQU0sT0FBTyxHQUFHLFlBQVksRUFBZ0IsQ0FBQTtJQUM1QyxPQUFPLE9BQXFDLENBQUE7QUFDOUMsQ0FBQztBQUlELFNBQVMsWUFBWTtJQUluQixPQUFPO1FBQ0wsRUFBRSxDQUVBLElBQWdCLEVBQ2hCLEtBQW1CO1lBRW5CLE9BQU8sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBYSxFQUFFLENBQUE7UUFDL0MsQ0FBQztRQUNELEtBQUssQ0FFSCxJQUFnQixFQUNoQixLQUFtQjtZQUVuQixPQUFPLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLFFBQWlCLEVBQUUsQ0FBQTtRQUNuRCxDQUFDO1FBQ0QsRUFBRSxDQUVBLElBQWdCLEVBQ2hCLEtBQVE7WUFFUixPQUFPLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQWEsRUFBRSxDQUFBO1FBQy9DLENBQUM7UUFDRCxLQUFLLENBRUgsSUFBZ0IsRUFDaEIsS0FBUTtZQUVSLE9BQU8sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsUUFBaUIsRUFBRSxDQUFBO1FBQ25ELENBQUM7UUFDRCxFQUFFLENBRUEsSUFBZ0Is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LENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBUSxDQUFBO0lBQ3ZCLENBQUM7SUFDRCxPQUFPLElBQUksQ0FBQTtBQUNiLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEZpZWxkVmFsdWVzIH0gZnJvbSBcIi4vZmlsdGVyL3R5cGVzL2ZpZWxkcy5qc1wiXG5pbXBvcnQgdHlwZSB7IEZpZWxkUGF0aCwgRmllbGRQYXRoVmFsdWUgfSBmcm9tIFwiLi9maWx0ZXIvdHlwZXMvcGF0aC9lYWdlci5qc1wiXG5pbXBvcnQgdHlwZSB7IFN1cHBvcnRlZFZhbHVlcywgV2hlcmUgfSBmcm9tIFwiLi9zZXJ2aWNlcy9TdG9yZS5qc1wiXG5cbi8qKlxuICogdGhlIGZ1bmN0aW9uIGRlZmF1bHRzIHRvIFwiZXFcIiwgYnV0IGhhcyBhZGRpdGlvbmFsIHByb3BlcnRpZXMgZm9yIG5vdEVxLCBpbiBhbmQgbm90SW5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBXaGVyZUZpbHRlcjxURmllbGRWYWx1ZXMgZXh0ZW5kcyBGaWVsZFZhbHVlcz5cbiAgZXh0ZW5kcyBSZXR1cm5UeXBlPHR5cGVvZiBtYWtlV2hlcmVGaWx0ZXJfPFRGaWVsZFZhbHVlcz4+XG57fVxuZXhwb3J0IGZ1bmN0aW9uIG1ha2VXaGVyZUZpbHRlcjxURmllbGRWYWx1ZXMgZXh0ZW5kcyBGaWVsZFZhbHVlcz4oKSB7XG4gIGNvbnN0IGYgPSBtYWtlV2hlcmVGaWx0ZXJfPFRGaWVsZFZhbHVlcz4oKVxuICByZXR1cm4gZiBhcyBXaGVyZUZpbHRlcjxURmllbGRWYWx1ZXM+XG59XG5cbmZ1bmN0aW9uIG1ha2VIZWxwZXJzPFRGaWVsZFZhbHVlcyBleHRlbmRzIEZpZWxkVmFsdWVzPigpIHtcbiAgY29uc3QgaGVscGVycyA9IG1ha2VIZWxwZXJzXzxURmllbGRWYWx1ZXM+KClcbiAgcmV0dXJuIGhlbHBlcnMgYXMgV2hlcmVIZWxwZXJzPFRGaWVsZFZhbHVlcz5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBXaGVyZUhlbHBlcnM8VEZpZWxkVmFsdWVzIGV4dGVuZHMgRmllbGRWYWx1ZXM+IGV4dGVuZHMgUmV0dXJuVHlwZTx0eXBlb2YgbWFrZUhlbHBlcnNfPFRGaWVsZFZhbHVlcz4+IHt9XG5cbmZ1bmN0aW9uIG1ha2VIZWxwZXJzXzxURmllbGRWYWx1ZXMgZXh0ZW5kcyBGaWVsZFZhbHVlcz4oKSB7XG4gIHR5cGUgUGF0aHMgPSBGaWVsZFBhdGg8VEZpZWxkVmFsdWVzPlxuICB0eXBlIFZhbHVlPFRGaWVsZE5hbWUgZXh0ZW5kcyBQYXRocz4gPSBGaWVsZFBhdGhWYWx1ZTxURmllbGRWYWx1ZXMsIFRGaWVsZE5hbWU+XG5cbiAgcmV0dXJuIHtcbiAgICBpbjxURmllbGROYW1lIGV4dGVuZHMgUGF0aHMsIFYgZXh0ZW5kcyBWYWx1ZTxURmllbGROYW1lPj4oXG4gICAgICB0aGlzOiB2b2lkLFxuICAgICAgcGF0aDogVEZpZWxkTmFtZSxcbiAgICAgIHZhbHVlOiByZWFkb25seSBWW11cbiAgICApIHtcbiAgICAgIHJldHVybiB7IGtleTogcGF0aCwgdmFsdWUsIHQ6IFwiaW5cIiBhcyBjb25zdCB9XG4gICAgfSxcbiAgICBub3RJbjxURmllbGROYW1lIGV4dGVuZHMgUGF0aHMsIFYgZXh0ZW5kcyBWYWx1ZTxURmllbGROYW1lPj4oXG4gICAgICB0aGlzOiB2b2lkLFxuICAgICAgcGF0aDogVEZpZWxkTmFtZSxcbiAgICAgIHZhbHVlOiByZWFkb25seSBWW11cbiAgICApIHtcbiAgICAgIHJldHVybiB7IGtleTogcGF0aCwgdmFsdWUsIHQ6IFwibm90LWluXCIgYXMgY29uc3QgfVxuICAgIH0sXG4gICAgZXE8VEZpZWxkTmFtZSBleHRlbmRzIFBhdGhzLCBWIGV4dGVuZHMgVmFsdWU8VEZpZWxkTmFtZT4+KFxuICAgICAgdGhpczogdm9pZCxcbiAgICAgIHBhdGg6IFRGaWVsZE5hbWUsXG4gICAgICB2YWx1ZTogVlxuICAgICkge1xuICAgICAgcmV0dXJuIHsga2V5OiBwYXRoLCB2YWx1ZSwgdDogXCJlcVwiIGFzIGNvbnN0IH1cbiAgICB9LFxuICAgIG5vdEVxPFRGaWVsZE5hbWUgZXh0ZW5kcyBQYXRocywgViBleHRlbmRzIFZhbHVlPFRGaWVsZE5hbWU+PihcbiAgICAgIHRoaXM6IHZvaWQsXG4gICAgICBwYXRoOiBURmllbGROYW1lLFxuICAgICAgdmFsdWU6IFZcbiAgICApIHtcbiAgICAgIHJldHVybiB7IGtleTogcGF0aCwgdmFsdWUsIHQ6IFwibm90LWVxXCIgYXMgY29uc3QgfVxuICAgIH0sXG4gICAgZ3Q8VEZpZWxkTmFtZSBleHRlbmRzIFBhdGhzLCBWIGV4dGVuZHMgVmFsdWU8VEZpZWxkTmFtZT4+KFxuICAgICAgdGhpczogdm9pZCxcbiAgICAgIHBhdGg6IFRGaWVsZE5hbWUsXG4gICAgICB2YWx1ZTogVlxuICAgICkge1xuICAgICAgcmV0dXJuIHsga2V5OiBwYXRoLCB2YWx1ZSwgdDogXCJndFwiIGFzIGNvbnN0IH1cbiAgICB9LFxuICAgIGd0ZTxURmllbGROYW1lIGV4dGVuZHMgUGF0aHMsIFYgZXh0ZW5kcyBWYWx1ZTxURmllbGROYW1lPj4oXG4gICAgICB0aGlzOiB2b2lkLFxuICAgICAgcGF0aDogVEZpZWxkTmFtZSxcbiAgICAgIHZhbHVlOiBWXG4gICAgKSB7XG4gICAgICByZXR1cm4geyBrZXk6IHBhdGgsIHZhbHVlLCB0OiBcImd0ZVwiIGFzIGNvbnN0IH1cbiAgICB9LFxuICAgIGx0PFRGaWVsZE5hbWUgZXh0ZW5kcyBQYXRocywgViBleHRlbmRzIFZhbHVlPFRGaWVsZE5hbWU+PihcbiAgICAgIHRoaXM6IHZvaWQsXG4gICAgICBwYXRoOiBURmllbGROYW1lLFxuICAgICAgdmFsdWU6IFZcbiAgICApIHtcbiAgICAgIHJldHVybiB7IGtleTogcGF0aCwgdmFsdWUsIHQ6IFwibHRcIiBhcyBjb25zdCB9XG4gICAgfSxcbiAgICBsdGU8VEZpZWxkTmFtZSBleHRlbmRzIFBhdGhzLCBWIGV4dGVuZHMgVmFsdWU8VEZpZWxkTmFtZT4+KFxuICAgICAgdGhpczogdm9pZCxcbiAgICAgIHBhdGg6IFRGaWVsZE5hbWUsXG4gICAgICB2YWx1ZTogVlxuICAgICkge1xuICAgICAgcmV0dXJuIHsga2V5OiBwYXRoLCB2YWx1ZSwgdDogXCJsdGVcIiBhcyBjb25zdCB9XG4gICAgfVxuICB9IHNhdGlzZmllcyBSZWNvcmQ8c3RyaW5nLCAoLi4uYXJnczogYW55W10pID0+IFdoZXJlPlxufVxuXG5mdW5jdGlvbiBtYWtlV2hlcmVGaWx0ZXJfPFRGaWVsZFZhbHVlcyBleHRlbmRzIEZpZWxkVmFsdWVzPigpIHtcbiAgY29uc3QgaGVscGVycyA9IG1ha2VIZWxwZXJzPFRGaWVsZFZhbHVlcz4oKVxuICBjb25zdCBmID0gT2JqZWN0LmFzc2lnbihoZWxwZXJzLmVxLCBoZWxwZXJzKVxuICByZXR1cm4gZlxufVxuXG5leHBvcnQgdHlwZSBXaGVyZVZhbHVlPFxuICBUIGV4dGVuZHNcbiAgICB8IFwiZXFcIlxuICAgIHwgXCJub3QtZXFcIlxuICAgIHwgXCJsdFwiXG4gICAgfCBcImd0XCJcbiAgICB8IFwibHRlXCJcbiAgICB8IFwiZ3RlXCJcbiAgICB8IFwic3RhcnRzLXdpdGhcIlxuICAgIHwgXCJlbmRzLXdpdGhcIlxuICAgIHwgXCJjb250YWluc1wiXG4gICAgfCBcImluXCJcbiAgICB8IFwibm90LWluXCIsXG4gIEEsIC8vIGV4dGVuZHMgU3VwcG9ydGVkVmFsdWVzLFxuICBWIGV4dGVuZHMgQSA9IEFcbj4gPSB7IHQ6IFQ7IHY6IFYgfVxuXG5leHBvcnQgdHlwZSBXaGVyZUluPFQgZXh0ZW5kcyBcImluXCIgfCBcIm5vdC1pblwiLCBWLCBWYWx1ZXMgZXh0ZW5kcyByZWFkb25seSBWW10gPSByZWFkb25seSBWW10+ID0ge1xuICB0OiBUXG4gIHY6IFZhbHVlc1xufVxuXG4vKipcbiAqIEB0c3BsdXMgZmx1ZW50IHN0cmluZyAkaW5cbiAqIEB0c3BsdXMgZmx1ZW50IGJvb2xlYW4gJGluXG4gKiBAdHNwbHVzIGZsdWVudCBudW1iZXIgJGluXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiAkaW48QSBleHRlbmRzIFN1cHBvcnRlZFZhbHVlcywgVmFsdWVzIGV4dGVuZHMgcmVhZG9ubHkgQVtdPihcbiAgXzogQSxcbiAgLi4udjogVmFsdWVzXG4pOiBXaGVyZUluPFwiaW5cIiwgQSwgVmFsdWVzPiB7XG4gIHJldHVybiAkJGluKHYpXG59XG5cbi8qKlxuICogQHRzcGx1cyBmbHVlbnQgc3RyaW5nICRub3RJblxuICogQHRzcGx1cyBmbHVlbnQgYm9vbGVhbiAkbm90SW5cbiAqIEB0c3BsdXMgZmx1ZW50IG51bWJlciAkbm90SW5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uICRub3RJbjxBIGV4dGVuZHMgU3VwcG9ydGVkVmFsdWVzLCBWYWx1ZXMgZXh0ZW5kcyByZWFkb25seSBBW10+KFxuICBfOiBBLFxuICAuLi52OiBWYWx1ZXNcbik6IFdoZXJlSW48XCJub3QtaW5cIiwgQSwgVmFsdWVzPiB7XG4gIHJldHVybiAkJG5vdEluKHYpXG59XG5cbi8qKlxuICogQHRzcGx1cyBmbHVlbnQgc3RyaW5nICRpc1xuICogQHRzcGx1cyBmbHVlbnQgRGF0ZSAkaXNcbiAqIEB0c3BsdXMgZmx1ZW50IGJvb2xlYW4gJGlzXG4gKiBAdHNwbHVzIGZsdWVudCBudW1iZXIgJGlzXG4gKiBAdHNwbHVzIGZsdWVudCBPYmplY3QgJGlzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiAkaXM8QSwgViBleHRlbmRzIEE+KF86IEEsIHY6IFYpOiBXaGVyZVZhbHVlPFwiZXFcIiwgQSwgVj4ge1xuICByZXR1cm4gJCRpcyh2KVxufVxuLyoqXG4gKiBAdHNwbHVzIGZsdWVudCBzdHJpbmcgJGlzbnRcbiAqIEB0c3BsdXMgZmx1ZW50IERhdGUgJGlzbnRcbiAqIEB0c3BsdXMgZmx1ZW50IGJvb2xlYW4gJGlzbnRcbiAqIEB0c3BsdXMgZmx1ZW50IG51bWJlciAkaXNudFxuICogQHRzcGx1cyBmbHVlbnQgT2JqZWN0ICRpc250XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiAkaXNudDxBLCBWIGV4dGVuZHMgQT4oXzogQSwgdjogVik6IFdoZXJlVmFsdWU8XCJub3QtZXFcIiwgQSwgVj4ge1xuICByZXR1cm4gJCRpc250KHYpXG59XG5cbi8qKlxuICogQHRzcGx1cyBmbHVlbnQgc3RyaW5nICRndFxuICogQHRzcGx1cyBmbHVlbnQgRGF0ZSAkZ3RcbiAqIEB0c3BsdXMgZmx1ZW50IGJvb2xlYW4gJGd0XG4gKiBAdHNwbHVzIGZsdWVudCBudW1iZXIgJGd0XG4gKiBAdHNwbHVzIGZsdWVudCBPYmplY3QgJGd0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiAkZ3Q8QSwgViBleHRlbmRzIEE+KF86IEEsIHY6IFYpOiBXaGVyZVZhbHVlPFwiZ3RcIiwgQSwgVj4ge1xuICByZXR1cm4gJCRndCh2KVxufVxuXG4vKipcbiAqIEB0c3BsdXMgZmx1ZW50IHN0cmluZyAkZ3RlXG4gKiBAdHNwbHVzIGZsdWVudCBEYXRlICRndGVcbiAqIEB0c3BsdXMgZmx1ZW50IGJvb2xlYW4gJGd0ZVxuICogQHRzcGx1cyBmbHVlbnQgbnVtYmVyICRndGVcbiAqIEB0c3BsdXMgZmx1ZW50IE9iamVjdCAkZ3RlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiAkZ3RlPEEsIFYgZXh0ZW5kcyBBPihfOiBBLCB2OiBWKTogV2hlcmVWYWx1ZTxcImd0ZVwiLCBBLCBWPiB7XG4gIHJldHVybiAkJGd0ZSh2KVxufVxuXG4vKipcbiAqIEB0c3BsdXMgZmx1ZW50IHN0cmluZyAkbHRcbiAqIEB0c3BsdXMgZmx1ZW50IERhdGUgJGx0XG4gKiBAdHNwbHVzIGZsdWVudCBib29sZWFuICRsdFxuICogQHRzcGx1cyBmbHVlbnQgbnVtYmVyICRsdFxuICogQHRzcGx1cyBmbHVlbnQgT2JqZWN0ICRsdFxuICovXG5leHBvcnQgZnVuY3Rpb24gJGx0PEEsIFYgZXh0ZW5kcyBBPihfOiBBLCB2OiBWKTogV2hlcmVWYWx1ZTxcImx0XCIsIEEsIFY+IHtcbiAgcmV0dXJuICQkbHQodilcbn1cblxuLyoqXG4gKiBAdHNwbHVzIGZsdWVudCBzdHJpbmcgJGx0ZVxuICogQHRzcGx1cyBmbHVlbnQgRGF0ZSAkbHRlXG4gKiBAdHNwbHVzIGZsdWVudCBib29sZWFuICRsdGVcbiAqIEB0c3BsdXMgZmx1ZW50IG51bWJlciAkbHRlXG4gKiBAdHNwbHVzIGZsdWVudCBPYmplY3QgJGx0ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gJGx0ZTxBLCBWIGV4dGVuZHMgQT4oXzogQSwgdjogVik6IFdoZXJlVmFsdWU8XCJsdGVcIiwgQSwgVj4ge1xuICByZXR1cm4gJCRsdGUodilcbn1cblxuZnVuY3Rpb24gJGlzX188ViBleHRlbmRzIEEsIEE+KHY6IFYpIHtcbiAgcmV0dXJuIChfOiBBKSA9PiAkaXMoXywgdilcbn1cblxuZnVuY3Rpb24gJGlzbnRfXzxWIGV4dGVuZHMgQSwgQT4odjogVikge1xuICByZXR1cm4gKF86IEEpID0+ICRpc250KF8sIHYpXG59XG5cbmZ1bmN0aW9uICRsdF9fPFYgZXh0ZW5kcyBBLCBBPih2OiBWKSB7XG4gIHJldHVybiAoXzogQSkgPT4gJGx0KF8sIHYpXG59XG5cbmZ1bmN0aW9uICRsdGVfXzxWIGV4dGVuZHMgQSwgQT4odjogVikge1xuICByZXR1cm4gKF86IEEpID0+ICRsdGUoXywgdilcbn1cblxuZnVuY3Rpb24gJGd0X188ViBleHRlbmRzIEEsIEE+KHY6IFYpIHtcbiAgcmV0dXJuIChfOiBBKSA9PiAkZ3QoXywgdilcbn1cblxuZnVuY3Rpb24gJGd0ZV9fPFYgZXh0ZW5kcyBBLCBBPih2OiBWKSB7XG4gIHJldHVybiAoXzogQSkgPT4gJGd0ZShfLCB2KVxufVxuXG5mdW5jdGlvbiAkaW5fXzxBIGV4dGVuZHMgU3VwcG9ydGVkVmFsdWVzLCBWYWx1ZXMgZXh0ZW5kcyByZWFkb25seSBBW10+KFxuICAuLi52OiBWYWx1ZXNcbikge1xuICByZXR1cm4gKF86IEEpID0+ICRpbihfLCAuLi52KVxufVxuXG5mdW5jdGlvbiAkbm90SW5fXzxBIGV4dGVuZHMgU3VwcG9ydGVkVmFsdWVzLCBWYWx1ZXMgZXh0ZW5kcyByZWFkb25seSBBW10+KFxuICAuLi52OiBWYWx1ZXNcbikge1xuICByZXR1cm4gKF86IEEpID0+ICRub3RJbihfLCAuLi52KVxufVxuXG5mdW5jdGlvbiAkc3RhcnRzV2l0aF9fPFYgZXh0ZW5kcyBBLCBBIGV4dGVuZHMgc3RyaW5nPih2OiBWKSB7XG4gIHJldHVybiAoXzogQSkgPT4gJHN0YXJ0c1dpdGgoXywgdilcbn1cblxuZnVuY3Rpb24gJGVuZHNXaXRoX188ViBleHRlbmRzIEEsIEEgZXh0ZW5kcyBzdHJpbmc+KHY6IFYpIHtcbiAgcmV0dXJuIChfOiBBKSA9PiAkZW5kc1dpdGgoXywgdilcbn1cblxuZnVuY3Rpb24gJGNvbnRhaW5zX188ViBleHRlbmRzIEEsIEEgZXh0ZW5kcyBzdHJpbmc+KHY6IFYpIHtcbiAgcmV0dXJuIChfOiBBKSA9PiAkY29udGFpbnMoXywgdilcbn1cblxuZXhwb3J0IGNvbnN0IEZpbHRlcnMgPSB7XG4gICRpczogJGlzX18sXG4gICRpc250OiAkaXNudF9fLFxuICAkaW46ICRpbl9fLFxuICAkbm90SW46ICRub3RJbl9fLFxuICAkZ3Q6ICRndF9fLFxuICAkZ3RlOiAkZ3RlX18sXG4gICRsdDogJGx0X18sXG4gICRsdGU6ICRsdGVfXyxcbiAgJGNvbnRhaW5zOiAkY29udGFpbnNfXyxcbiAgJGVuZHNXaXRoOiAkZW5kc1dpdGhfXyxcbiAgJHN0YXJ0c1dpdGg6ICRzdGFydHNXaXRoX19cbn1cblxuLyoqXG4gKiBAdHNwbHVzIGZsdWVudCBzdHJpbmcgJHN0YXJ0c1dpdGhcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uICRzdGFydHNXaXRoPEEgZXh0ZW5kcyBzdHJpbmcsIFYgZXh0ZW5kcyBBPihfOiBBLCB2OiBWKTogV2hlcmVWYWx1ZTxcInN0YXJ0cy13aXRoXCIsIEEsIFY+IHtcbiAgcmV0dXJuICQkc3RhcnRzV2l0aCh2KVxufVxuXG4vKipcbiAqIEB0c3BsdXMgZmx1ZW50IHN0cmluZyAkZW5kc1dpdGhcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uICRlbmRzV2l0aDxBIGV4dGVuZHMgc3RyaW5nLCBWIGV4dGVuZHMgQT4oXzogQSwgdjogVik6IFdoZXJlVmFsdWU8XCJlbmRzLXdpdGhcIiwgQSwgVj4ge1xuICByZXR1cm4gJCRlbmRzV2l0aCh2KVxufVxuXG4vKipcbiAqIEB0c3BsdXMgZmx1ZW50IHN0cmluZyAkY29udGFpbnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uICRjb250YWluczxBIGV4dGVuZHMgc3RyaW5nLCBWIGV4dGVuZHMgQT4oXzogQSwgdjogVik6IFdoZXJlVmFsdWU8XCJjb250YWluc1wiLCBBLCBWPiB7XG4gIHJldHVybiAkJGNvbnRhaW5zKHYpXG59XG5cbmZ1bmN0aW9uICQkaW48TCBleHRlbmRzIHJlYWRvbmx5IGFueVtdPih2OiBMKSB7XG4gIHJldHVybiB7IHQ6IFwiaW5cIiBhcyBjb25zdCwgdiB9XG59XG5cbmZ1bmN0aW9uICQkbm90SW48TCBleHRlbmRzIHJlYWRvbmx5IGFueVtdPih2OiBMKSB7XG4gIHJldHVybiB7IHQ6IFwibm90LWluXCIgYXMgY29uc3QsIHYgfVxufVxuZnVuY3Rpb24gJCRpczxBPih2OiBBKSB7XG4gIHJldHVybiB7IHQ6IFwiZXFcIiBhcyBjb25zdCwgdiB9XG59XG5mdW5jdGlvbiAkJGlzbnQ8QT4odjogQSkge1xuICByZXR1cm4geyB0OiBcIm5vdC1lcVwiIGFzIGNvbnN0LCB2IH1cbn1cblxuZnVuY3Rpb24gJCRsdDxBPih2OiBBKSB7XG4gIHJldHVybiB7IHQ6IFwibHRcIiBhcyBjb25zdCwgdiB9XG59XG5cbmZ1bmN0aW9uICQkbHRlPEE+KHY6IEEpIHtcbiAgcmV0dXJuIHsgdDogXCJsdGVcIiBhcyBjb25zdCwgdiB9XG59XG5mdW5jdGlvbiAkJGd0PEE+KHY6IEEpIHtcbiAgcmV0dXJuIHsgdDogXCJndFwiIGFzIGNvbnN0LCB2IH1cbn1cblxuZnVuY3Rpb24gJCRndGU8QT4odjogQSkge1xuICByZXR1cm4geyB0OiBcImd0ZVwiIGFzIGNvbnN0LCB2IH1cbn1cblxuZnVuY3Rpb24gJCRjb250YWluczxBIGV4dGVuZHMgc3RyaW5nPih2OiBBKSB7XG4gIHJldHVybiB7IHQ6IFwiY29udGFpbnNcIiBhcyBjb25zdCwgdiB9XG59XG5mdW5jdGlvbiAkJHN0YXJ0c1dpdGg8QSBleHRlbmRzIHN0cmluZz4odjogQSkge1xuICByZXR1cm4geyB0OiBcInN0YXJ0cy13aXRoXCIgYXMgY29uc3QsIHYgfVxufVxuZnVuY3Rpb24gJCRlbmRzV2l0aDxBIGV4dGVuZHMgc3RyaW5nPih2OiBBKSB7XG4gIHJldHVybiB7IHQ6IFwiZW5kcy13aXRoXCIgYXMgY29uc3QsIHYgfVxufVxuXG50eXBlIFZhbHVlVHlwZTxWPiA9IHtcbiAgdDogXCJpblwiIHwgXCJub3QtaW5cIlxuICB2OiByZWFkb25seSBWW11cbn0gfCB7IHQ6IFwiZXFcIiB8IFwibm90LWVxXCI7IHY6IFYgfVxuXG50eXBlIFRUeXBlPFQ+ID0gVCBleHRlbmRzIFZhbHVlVHlwZTxhbnk+ID8gVFtcInRcIl0gOiBuZXZlclxudHlwZSBWVHlwZTxUPiA9IFQgZXh0ZW5kcyBWYWx1ZVR5cGU8YW55PiA/IFRbXCJ2XCJdIDogbmV2ZXJcblxuZnVuY3Rpb24gZihwOiBzdHJpbmcsIGI6IGFueSkge1xuICBpZiAodHlwZW9mIGIgPT09IFwiZnVuY3Rpb25cIikgYiA9IGIodW5kZWZpbmVkKVxuICBjb25zdCBvYmogPSB0eXBlb2YgYiA9PT0gXCJvYmplY3RcIiAmJiBiICE9PSBudWxsXG4gIHJldHVybiBtYWtlRmlsdGVyKHAsIG9iaiA/IGIudiA6IGIsIG9iaiA/IGIudCA/PyBcImVxXCIgOiBcImVxXCIpXG59XG5cbmZ1bmN0aW9uIG1ha2VGaWx0ZXI8VCBleHRlbmRzIFwiaW5cIiB8IFwibm90LWluXCIgfCBcImVxXCIgfCBcIm5vdC1lcVwiPihwYXRoOiBzdHJpbmcsIHZhbHVlOiBhbnksIHQ6IFQpIHtcbiAgcmV0dXJuIHsga2V5OiBwYXRoLCB0LCB2YWx1ZSB9XG59XG5cbnR5cGUgRklMPFMsIEsgZXh0ZW5kcyBzdHJpbmcsIFQgZXh0ZW5kcyBcImluXCIgfCBcIm5vdC1pblwiIHwgXCJlcVwiIHwgXCJub3QtZXFcIiwgVj4gPSB7XG4gIGtleTogS1xuICB0OiBUXG4gIHZhbHVlOiBWXG4gIHJlYWRvbmx5IFM6IFNcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ha2VGaWx0ZXJzPFQgZXh0ZW5kcyBGaWVsZFZhbHVlcz4oKSB7XG4gIHR5cGUgUGF0aHMgPSBGaWVsZFBhdGg8VD5cbiAgdHlwZSBWYWx1ZTxURmllbGROYW1lIGV4dGVuZHMgUGF0aHM+ID0gRmllbGRQYXRoVmFsdWU8VCwgVEZpZWxkTmFtZT5cblxuICBmdW5jdGlvbiB0ZXN0PFxuICAgIFRGaWVsZE5hbWUgZXh0ZW5kcyBQYXRocyxcbiAgICBBIGV4dGVuZHMgVmFsdWU8VEZpZWxkTmFtZT4sXG4gICAgVmFsXG4gID4oXG4gICAgcGF0aDogVEZpZWxkTmFtZSxcbiAgICB2YWx1ZTogKHY6IEEpID0+IFZhbFxuICApOiBGSUw8VCwgc3RyaW5nLCBUVHlwZTxWYWw+LCBWVHlwZTxWYWw+PlxuICBmdW5jdGlvbiB0ZXN0PFxuICAgIFRGaWVsZE5hbWUgZXh0ZW5kcyBQYXRocyxcbiAgICBBIGV4dGVuZHMgVmFsdWU8VEZpZWxkTmFtZT5cbiAgPihcbiAgICBwYXRoOiBURmllbGROYW1lLFxuICAgIHZhbHVlOiBBXG4gICk6IEZJTDxULCBzdHJpbmcsIFwiZXFcIiwgQT5cbiAgZnVuY3Rpb24gdGVzdChwOiBzdHJpbmcsIHY6IGFueSkge1xuICAgIHJldHVybiBmKHAsIHYpIGFzIGFueVxuICB9XG4gIHJldHVybiB0ZXN0XG59XG5cbi8vIGV4cG9ydCBmdW5jdGlvbiBtYWtlRmlsdGVyPFRGaWVsZFZhbHVlcyBleHRlbmRzIEZpZWxkVmFsdWVzPigpIHtcbi8vICAgY29uc3QgZiA9IG1ha2VGaWx0ZXJfPFRGaWVsZFZhbHVlcz4oKVxuLy8gICByZXR1cm4gZiBhcyBXaGVyZUZpbHRlckhlbHBlcjxURmllbGRWYWx1ZXM+XG4vLyB9XG5cbi8vIGV4cG9ydCBpbnRlcmZhY2UgV2hlcmVGaWx0ZXJIZWxwZXI8VEZpZWxkVmFsdWVzIGV4dGVuZHMgRmllbGRWYWx1ZXM+IGV4dGVuZHMgUmV0dXJuVHlwZTx0eXBlb2YgbWFrZUZpbHRlcl88VEZpZWxkVmFsdWVzPj4ge31cblxuLy8gZnVuY3Rpb24gbWFrZUZpbHRlcl88VEZpZWxkVmFsdWVzIGV4dGVuZHMgRmllbGRWYWx1ZXM+KCkge1xuLy8gICBmdW5jdGlvbiBlcTxURmllbGROYW1lIGV4dGVuZHMgRmllbGRQYXRoPFRGaWVsZFZhbHVlcz4sIFYgZXh0ZW5kcyBGaWVsZFBhdGhWYWx1ZTxURmllbGRWYWx1ZXMsIFRGaWVsZE5hbWU+Pihcbi8vICAgICBwYXRoOiBURmllbGROYW1lLFxuLy8gICAgIHZhbHVlOiBWXG4vLyAgICkge1xuLy8gICAgIHJldHVybiB7IGtleTogcGF0aCwgdmFsdWUsIHQ6IFwiZXFcIiBhcyBjb25zdCB9XG4vLyAgIH1cbi8vICAgY29uc3QgZiA9IE9iamVjdC5hc3NpZ24oZXEgc2F0aXNmaWVzICguLi5hcmdzOiBhbnlbXSkgPT4gV2hlcmUsIHtcbi8vICAgICBpbjxURmllbGROYW1lIGV4dGVuZHMgRmllbGRQYXRoPFRGaWVsZFZhbHVlcz4sIFYgZXh0ZW5kcyBGaWVsZFBhdGhWYWx1ZTxURmllbGRWYWx1ZXMsIFRGaWVsZE5hbWU+Pihcbi8vICAgICAgIHBhdGg6IFRGaWVsZE5hbWUsXG4vLyAgICAgICB2YWx1ZTogcmVhZG9ubHkgVltdXG4vLyAgICAgKSB7XG4vLyAgICAgICByZXR1cm4geyBrZXk6IHBhdGgsIHZhbHVlLCB0OiBcImluXCIgYXMgY29uc3QgfVxuLy8gICAgIH0sXG4vLyAgICAgbm90SW48VEZpZWxkTmFtZSBleHRlbmRzIEZpZWxkUGF0aDxURmllbGRWYWx1ZXM+LCBWIGV4dGVuZHMgRmllbGRQYXRoVmFsdWU8VEZpZWxkVmFsdWVzLCBURmllbGROYW1lPj4oXG4vLyAgICAgICBwYXRoOiBURmllbGROYW1lLFxuLy8gICAgICAgdmFsdWU6IHJlYWRvbmx5IFZbXVxuLy8gICAgICkge1xuLy8gICAgICAgcmV0dXJuIHsga2V5OiBwYXRoLCB2YWx1ZSwgdDogXCJub3QtaW5cIiBhcyBjb25zdCB9XG4vLyAgICAgfSxcbi8vICAgICBlcSxcbi8vICAgICBub3RFcTxURmllbGROYW1lIGV4dGVuZHMgRmllbGRQYXRoPFRGaWVsZFZhbHVlcz4sIFYgZXh0ZW5kcyBGaWVsZFBhdGhWYWx1ZTxURmllbGRWYWx1ZXMsIFRGaWVsZE5hbWU+Pihcbi8vICAgICAgIHBhdGg6IFRGaWVsZE5hbWUsXG4vLyAgICAgICB2YWx1ZTogVlxuLy8gICAgICkge1xuLy8gICAgICAgcmV0dXJuIHsga2V5OiBwYXRoLCB2YWx1ZSwgdDogXCJub3QtZXFcIiBhcyBjb25zdCB9XG4vLyAgICAgfVxuLy8gICB9IHNhdGlzZmllcyBSZWNvcmQ8c3RyaW5nLCAoLi4uYXJnczogYW55W10pID0+IFdoZXJlPilcbi8vICAgcmV0dXJuIGZcbi8vIH1cbiJdfQ==
@@ -1 +1 @@
1
- 3fdb756675565f3f5e5cdb6e2680f07a60ced261a3790df2cdfc23a21d160956
1
+ 16bfaefe5a2429ca909ad25c1703bbd285431a8192a0c87f95827a21cf7cd387
@@ -1,8 +1,6 @@
1
1
  import * as tsplus_module_1 from "@effect/io/Effect";
2
- import * as tsplus_module_2 from "@effect/data/Either";
3
- import * as tsplus_module_3 from "@effect/io/Logger";
4
2
  import { InvalidStateError } from "../../errors.js";
5
- import { checkPaths } from "./makeJsonSchema.js";
3
+ import { checkDuplicatePaths } from "./makeJsonSchema.js";
6
4
  const path = { path: "/securities/:id/search/:id2", method: "get" };
7
5
  const equalPaths = [
8
6
  "/securities/:idt/search/:id2",
@@ -11,9 +9,8 @@ const equalPaths = [
11
9
  ]
12
10
  .map((path) => ({ path, method: "get" }));
13
11
  const differentPaths = [
14
- "/securities/search/:id2",
15
12
  "/securities/:id/search/",
16
- "/securities/:id/search/:id2",
13
+ "/securities/search/:id2",
17
14
  "/securities/:id/:id2/search/:id3"
18
15
  ]
19
16
  .map((path) => ({ path, method: "get" }))
@@ -21,23 +18,8 @@ const differentPaths = [
21
18
  "/securities/:idt/search/:id2"
22
19
  ]
23
20
  .map((path) => ({ path, method: "post" })));
24
- test("works", async () => {
25
- expect(await tsplus_module_1.runPromise((checkPaths(differentPaths)))).toStrictEqual(differentPaths);
26
- for (const p of equalPaths) {
27
- expect(await tsplus_module_1.runPromiseEither(checkPaths([path, p]))).toStrictEqual(tsplus_module_2.left(new InvalidStateError(`Duplicate method ${p.method} for path ${p.path}`)));
28
- }
29
- expect(await tsplus_module_1.runPromiseEither(checkPaths(["a/:p1/c/:p2", "a/b"].map((path) => ({ path, method: "get" })))))
30
- .toStrictEqual(tsplus_module_2.left(new InvalidStateError(`Path /a/b/ is shadowed by /a/:p1/`)));
31
- expect(await tsplus_module_1.runPromiseEither(checkPaths(["a/:p1/c/:p2", "a/:p111/c/d"].map((path) => ({ path, method: "get" })))))
32
- .toStrictEqual(tsplus_module_2.left(new InvalidStateError(`Path /a/:p1/c/d/ is shadowed by /a/:p1/c/:p2/`)));
33
- });
34
- test("log shadowing", async () => {
35
- const arr = [];
36
- const paths = ["a/b", "a/:p"].map((path) => ({ path, method: "get" }));
37
- const CustomLogger = tsplus_module_3.make((_, __, message) => {
38
- arr.push(message);
39
- });
40
- await tsplus_module_1.runPromise(tsplus_module_1.provideLayer(checkPaths(paths), tsplus_module_3.replace(tsplus_module_3.defaultLogger, CustomLogger)));
41
- expect(arr).toStrictEqual([`Path /a/:p/ is partially shadowed by /a/b/`]);
21
+ test("works", () => {
22
+ expect(checkDuplicatePaths([path, ...differentPaths])).toStrictEqual(tsplus_module_1.succeed([path, ...differentPaths]));
23
+ equalPaths.forEach((p) => expect(checkDuplicatePaths([path, p])).toStrictEqual(tsplus_module_1.fail(new InvalidStateError(`Duplicate method ${p.method} for path ${p.path}`))));
42
24
  });
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFrZUpzb25TY2hlbWEudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL19zcmMvYXBpL2V4cHJlc3MvbWFrZUpzb25TY2hlbWEudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUNuRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFFaEQsTUFBTSxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFBO0FBRW5FLE1BQU0sVUFBVSxHQUFHO0lBQ2pCLDhCQUE4QjtJQUM5Qiw4QkFBOEI7SUFDOUIsK0JBQStCO0NBQ2hDO0tBQ0UsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUE7QUFFM0MsTUFBTSxjQUFjLEdBR2Q7SUFDSix5QkFBeUI7SUFDekIseUJBQXlCO0lBQ3pCLDZCQUE2QjtJQUM3QixrQ0FBa0M7Q0FDbkM7S0FDRSxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7S0FDeEMsTUFBTSxDQUFDO0lBQ04sOEJBQThCO0NBQy9CO0tBQ0UsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtBQUUvQyxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssSUFBSSxFQUFFO0lBQ3ZCLE1BQU0sQ0FBQyxpQ0FBTSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFXLENBQUMsQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLENBQUE7SUFFbkYsS0FBSyxNQUFNLENBQUMsSUFBSSxVQUFVLEVBQUU7UUFDMUIsTUFBTSxDQUFDLHVDQUFNLFVBQVUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFpQixDQUFDLENBQUMsYUFBYSxDQUNoRSxxQkFBWSxJQUFJLGlCQUFpQixDQUFDLG9CQUFvQixDQUFDLENBQUMsTUFBTSxhQUFhLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQ3RGLENBQUE7S0FDRjtJQUVELE1BQU0sQ0FBQyx1Q0FBTSxVQUFVLENBQUMsQ0FBQyxhQUFhLEVBQUUsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBaUIsQ0FBQztTQUN2RyxhQUFhLENBQ1oscUJBQVksSUFBSSxpQkFBaUIsQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDLENBQ3hFLENBQUE7SUFFSCxNQUFNLENBQUMsdUNBQU0sVUFBVSxDQUFDLENBQUMsYUFBYSxFQUFFLGFBQWEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQWlCLENBQUM7U0FDL0csYUFBYSxDQUNaLHFCQUFZLElBQUksaUJBQWlCLENBQUMsK0NBQStDLENBQUMsQ0FBQyxDQUNwRixDQUFBO0FBQ0wsQ0FBQyxDQUFDLENBQUE7QUFFRixJQUFJLENBQUMsZUFBZSxFQUFFLEtBQUssSUFBSSxFQUFFO0lBQy9CLE1BQU0sR0FBRyxHQUFhLEVBQUUsQ0FBQTtJQUN4QixNQUFNLEtBQUssR0FBRyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUV0RSxNQUFNLFlBQVksR0FBRyxxQkFBMEIsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxFQUFFO1FBQ2hFLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDbkIsQ0FBQyxDQUFDLENBQUE7SUFFRixpQ0FBTSw2QkFBQSxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQ1AsdURBQXFDLFlBQVksQ0FBQyxDQUFDLENBQ3RELENBQUE7SUFFYixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsNENBQTRDLENBQUMsQ0FBQyxDQUFBO0FBQzNFLENBQUMsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW52YWxpZFN0YXRlRXJyb3IgfSBmcm9tIFwiLi4vLi4vZXJyb3JzLmpzXCJcbmltcG9ydCB7IGNoZWNrUGF0aHMgfSBmcm9tIFwiLi9tYWtlSnNvblNjaGVtYS5qc1wiXG5cbmNvbnN0IHBhdGggPSB7IHBhdGg6IFwiL3NlY3VyaXRpZXMvOmlkL3NlYXJjaC86aWQyXCIsIG1ldGhvZDogXCJnZXRcIiB9XG5cbmNvbnN0IGVxdWFsUGF0aHMgPSBbXG4gIFwiL3NlY3VyaXRpZXMvOmlkdC9zZWFyY2gvOmlkMlwiLFxuICBcIi9zZWN1cml0aWVzLzppZC9zZWFyY2gvOmlkMnRcIixcbiAgXCIvc2VjdXJpdGllcy86aWR0L3NlYXJjaC86aWQydFwiXG5dXG4gIC5tYXAoKHBhdGgpID0+ICh7IHBhdGgsIG1ldGhvZDogXCJnZXRcIiB9KSlcblxuY29uc3QgZGlmZmVyZW50UGF0aHM6IHtcbiAgcGF0aDogc3RyaW5nXG4gIG1ldGhvZDogc3RyaW5nXG59W10gPSBbXG4gIFwiL3NlY3VyaXRpZXMvc2VhcmNoLzppZDJcIixcbiAgXCIvc2VjdXJpdGllcy86aWQvc2VhcmNoL1wiLFxuICBcIi9zZWN1cml0aWVzLzppZC9zZWFyY2gvOmlkMlwiLFxuICBcIi9zZWN1cml0aWVzLzppZC86aWQyL3NlYXJjaC86aWQzXCJcbl1cbiAgLm1hcCgocGF0aCkgPT4gKHsgcGF0aCwgbWV0aG9kOiBcImdldFwiIH0pKVxuICAuY29uY2F0KFtcbiAgICBcIi9zZWN1cml0aWVzLzppZHQvc2VhcmNoLzppZDJcIlxuICBdXG4gICAgLm1hcCgocGF0aCkgPT4gKHsgcGF0aCwgbWV0aG9kOiBcInBvc3RcIiB9KSkpXG5cbnRlc3QoXCJ3b3Jrc1wiLCBhc3luYyAoKSA9PiB7XG4gIGV4cGVjdChhd2FpdCAoY2hlY2tQYXRocyhkaWZmZXJlbnRQYXRocykpLnJ1blByb21pc2UpLnRvU3RyaWN0RXF1YWwoZGlmZmVyZW50UGF0aHMpXG5cbiAgZm9yIChjb25zdCBwIG9mIGVxdWFsUGF0aHMpIHtcbiAgICBleHBlY3QoYXdhaXQgY2hlY2tQYXRocyhbcGF0aCwgcF0pLnJ1blByb21pc2VFaXRoZXIpLnRvU3RyaWN0RXF1YWwoXG4gICAgICBFaXRoZXIubGVmdChuZXcgSW52YWxpZFN0YXRlRXJyb3IoYER1cGxpY2F0ZSBtZXRob2QgJHtwLm1ldGhvZH0gZm9yIHBhdGggJHtwLnBhdGh9YCkpXG4gICAgKVxuICB9XG5cbiAgZXhwZWN0KGF3YWl0IGNoZWNrUGF0aHMoW1wiYS86cDEvYy86cDJcIiwgXCJhL2JcIl0ubWFwKChwYXRoKSA9PiAoeyBwYXRoLCBtZXRob2Q6IFwiZ2V0XCIgfSkpKS5ydW5Qcm9taXNlRWl0aGVyKVxuICAgIC50b1N0cmljdEVxdWFsKFxuICAgICAgRWl0aGVyLmxlZnQobmV3IEludmFsaWRTdGF0ZUVycm9yKGBQYXRoIC9hL2IvIGlzIHNoYWRvd2VkIGJ5IC9hLzpwMS9gKSlcbiAgICApXG5cbiAgZXhwZWN0KGF3YWl0IGNoZWNrUGF0aHMoW1wiYS86cDEvYy86cDJcIiwgXCJhLzpwMTExL2MvZFwiXS5tYXAoKHBhdGgpID0+ICh7IHBhdGgsIG1ldGhvZDogXCJnZXRcIiB9KSkpLnJ1blByb21pc2VFaXRoZXIpXG4gICAgLnRvU3RyaWN0RXF1YWwoXG4gICAgICBFaXRoZXIubGVmdChuZXcgSW52YWxpZFN0YXRlRXJyb3IoYFBhdGggL2EvOnAxL2MvZC8gaXMgc2hhZG93ZWQgYnkgL2EvOnAxL2MvOnAyL2ApKVxuICAgIClcbn0pXG5cbnRlc3QoXCJsb2cgc2hhZG93aW5nXCIsIGFzeW5jICgpID0+IHtcbiAgY29uc3QgYXJyOiBzdHJpbmdbXSA9IFtdXG4gIGNvbnN0IHBhdGhzID0gW1wiYS9iXCIsIFwiYS86cFwiXS5tYXAoKHBhdGgpID0+ICh7IHBhdGgsIG1ldGhvZDogXCJnZXRcIiB9KSlcblxuICBjb25zdCBDdXN0b21Mb2dnZXIgPSBMb2dnZXIubWFrZTxzdHJpbmcsIHZvaWQ+KChfLCBfXywgbWVzc2FnZSkgPT4ge1xuICAgIGFyci5wdXNoKG1lc3NhZ2UpXG4gIH0pXG5cbiAgYXdhaXQgY2hlY2tQYXRocyhwYXRocylcbiAgICAucHJvdmlkZUxheWVyKExvZ2dlci5yZXBsYWNlKExvZ2dlci5kZWZhdWx0TG9nZ2VyLCBDdXN0b21Mb2dnZXIpKVxuICAgIC5ydW5Qcm9taXNlXG5cbiAgZXhwZWN0KGFycikudG9TdHJpY3RFcXVhbChbYFBhdGggL2EvOnAvIGlzIHBhcnRpYWxseSBzaGFkb3dlZCBieSAvYS9iL2BdKVxufSlcbiJdfQ==
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFrZUpzb25TY2hlbWEudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL19zcmMvYXBpL2V4cHJlc3MvbWFrZUpzb25TY2hlbWEudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDbkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFFekQsTUFBTSxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFBO0FBRW5FLE1BQU0sVUFBVSxHQUFHO0lBQ2pCLDhCQUE4QjtJQUM5Qiw4QkFBOEI7SUFDOUIsK0JBQStCO0NBQ2hDO0tBQ0UsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUE7QUFFM0MsTUFBTSxjQUFjLEdBR2Q7SUFDSix5QkFBeUI7SUFDekIseUJBQXlCO0lBQ3pCLGtDQUFrQztDQUNuQztLQUNFLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztLQUN4QyxNQUFNLENBQUM7SUFDTiw4QkFBOEI7Q0FDL0I7S0FDRSxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBO0FBRS9DLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFO0lBQ2pCLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLElBQUksRUFBRSxHQUFHLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsd0JBQWUsQ0FBQyxJQUFJLEVBQUUsR0FBRyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFFL0csVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQ3ZCLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUNsRCxxQkFBWSxJQUFJLGlCQUFpQixDQUFDLG9CQUFvQixDQUFDLENBQUMsTUFBTSxhQUFhLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQ3RGLENBQ0YsQ0FBQTtBQUNILENBQUMsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW52YWxpZFN0YXRlRXJyb3IgfSBmcm9tIFwiLi4vLi4vZXJyb3JzLmpzXCJcbmltcG9ydCB7IGNoZWNrRHVwbGljYXRlUGF0aHMgfSBmcm9tIFwiLi9tYWtlSnNvblNjaGVtYS5qc1wiXG5cbmNvbnN0IHBhdGggPSB7IHBhdGg6IFwiL3NlY3VyaXRpZXMvOmlkL3NlYXJjaC86aWQyXCIsIG1ldGhvZDogXCJnZXRcIiB9XG5cbmNvbnN0IGVxdWFsUGF0aHMgPSBbXG4gIFwiL3NlY3VyaXRpZXMvOmlkdC9zZWFyY2gvOmlkMlwiLFxuICBcIi9zZWN1cml0aWVzLzppZC9zZWFyY2gvOmlkMnRcIixcbiAgXCIvc2VjdXJpdGllcy86aWR0L3NlYXJjaC86aWQydFwiXG5dXG4gIC5tYXAoKHBhdGgpID0+ICh7IHBhdGgsIG1ldGhvZDogXCJnZXRcIiB9KSlcblxuY29uc3QgZGlmZmVyZW50UGF0aHM6IHtcbiAgcGF0aDogc3RyaW5nXG4gIG1ldGhvZDogc3RyaW5nXG59W10gPSBbXG4gIFwiL3NlY3VyaXRpZXMvOmlkL3NlYXJjaC9cIixcbiAgXCIvc2VjdXJpdGllcy9zZWFyY2gvOmlkMlwiLFxuICBcIi9zZWN1cml0aWVzLzppZC86aWQyL3NlYXJjaC86aWQzXCJcbl1cbiAgLm1hcCgocGF0aCkgPT4gKHsgcGF0aCwgbWV0aG9kOiBcImdldFwiIH0pKVxuICAuY29uY2F0KFtcbiAgICBcIi9zZWN1cml0aWVzLzppZHQvc2VhcmNoLzppZDJcIlxuICBdXG4gICAgLm1hcCgocGF0aCkgPT4gKHsgcGF0aCwgbWV0aG9kOiBcInBvc3RcIiB9KSkpXG5cbnRlc3QoXCJ3b3Jrc1wiLCAoKSA9PiB7XG4gIGV4cGVjdChjaGVja0R1cGxpY2F0ZVBhdGhzKFtwYXRoLCAuLi5kaWZmZXJlbnRQYXRoc10pKS50b1N0cmljdEVxdWFsKEVmZmVjdC5zdWNjZWVkKFtwYXRoLCAuLi5kaWZmZXJlbnRQYXRoc10pKVxuXG4gIGVxdWFsUGF0aHMuZm9yRWFjaCgocCkgPT5cbiAgICBleHBlY3QoY2hlY2tEdXBsaWNhdGVQYXRocyhbcGF0aCwgcF0pKS50b1N0cmljdEVxdWFsKFxuICAgICAgRWZmZWN0LmZhaWwobmV3IEludmFsaWRTdGF0ZUVycm9yKGBEdXBsaWNhdGUgbWV0aG9kICR7cC5tZXRob2R9IGZvciBwYXRoICR7cC5wYXRofWApKVxuICAgIClcbiAgKVxufSlcbiJdfQ==
@@ -1 +1 @@
1
- 227326c96d8f8db11aa5dd8162cb906e55a27b00a9069640a822be51cb025b58
1
+ eeeabf23eeed55cc19be92fad9db0ad57b0af0d181bde005fe3c6a7181ab452f
@@ -5,92 +5,57 @@ import * as tsplus_module_3 from "@effect-app/core/_ext/Iterable";
5
5
  import { InvalidStateError } from "../../errors.js";
6
6
  import * as RS from "./schema/routing.js";
7
7
  const rx = /:(\w+)/g;
8
- class PathsTree {
9
- methods;
10
- params;
11
- subpaths;
12
- path;
13
- constructor(path) {
14
- this.methods = [];
15
- this.params = {};
16
- this.subpaths = {};
17
- this.path = path;
18
- }
19
- }
20
- function checkShadowing(pathNavigator, match) {
21
- return tsplus_module_1.gen(function* ($) {
22
- switch (match._tag) {
23
- case "resource": {
24
- // check shadowing: if 'a/:param' comes before 'a/b', then 'a/b' is shadowed
25
- if (pathNavigator.params[1]) {
26
- return yield* $(tsplus_module_1.fail(new InvalidStateError(`Path ${pathNavigator.path}${match.value}/ is shadowed by ${pathNavigator.params[1].path}`)));
27
- }
28
- break;
29
- }
30
- case "param": {
31
- // check shadowing: if 'a/b' comes before 'a/:param', then 'a/"param' is partially shadowed
32
- const subpaths = Object.getOwnPropertyNames(pathNavigator.subpaths);
33
- if (subpaths.length > 0) {
34
- yield* $(tsplus_module_1.all(subpaths.map((s) => tsplus_module_1.logInfo(`Path ${pathNavigator.path}:${match.value}/ is partially shadowed by ${pathNavigator.subpaths[s].path}`))));
8
+ export function checkDuplicatePaths(paths) {
9
+ const methods = Symbol("methods");
10
+ const pathMethods = { [methods]: [] };
11
+ const regex = /(?:^|\/)([^/:\n]+)|:(\w+)/g;
12
+ for (const path of paths) {
13
+ const matches = [...path.path.matchAll(regex)]
14
+ .map((match) => match[1]
15
+ ? { _tag: "resource", value: match[1] }
16
+ : { _tag: "param", value: match[2] });
17
+ let pathNavigator = pathMethods;
18
+ for (let i = 0; i < matches.length;) {
19
+ const match = matches[i];
20
+ switch (match._tag) {
21
+ case "resource": {
22
+ if (!(match.value in (pathNavigator))) {
23
+ ;
24
+ (pathNavigator)[match.value] = { [methods]: [] };
25
+ }
26
+ pathNavigator = (pathNavigator)[match.value];
27
+ i++;
28
+ break;
35
29
  }
36
- break;
37
- }
38
- }
39
- });
40
- }
41
- export function checkPaths(paths) {
42
- return tsplus_module_1.gen(function* ($) {
43
- const pathMethods = new PathsTree("/");
44
- const regex = /(?:^|\/)([^/:\n]+)|:(\w+)/g;
45
- for (const path of paths) {
46
- const matches = [...path.path.matchAll(regex)]
47
- .map((match) => match[1]
48
- ? { _tag: "resource", value: match[1] }
49
- : { _tag: "param", value: match[2] });
50
- let pathNavigator = pathMethods;
51
- for (let i = 0; i < matches.length;) {
52
- const match = matches[i];
53
- yield* $(checkShadowing(pathNavigator, match));
54
- switch (match._tag) {
55
- case "resource": {
56
- if (!(match.value in pathNavigator.subpaths)) {
57
- pathNavigator.subpaths[match.value] = new PathsTree(`${pathNavigator.path}${match.value}/`);
58
- }
59
- pathNavigator = pathNavigator.subpaths[match.value];
30
+ case "param": {
31
+ let numberOfParams = 1;
32
+ while (i < matches.length && matches[i + 1]?._tag === "param") {
33
+ numberOfParams++;
60
34
  i++;
61
- break;
62
35
  }
63
- case "param": {
64
- const paramsNames = [match.value];
65
- let numberOfParams = 1;
66
- while (i < matches.length && matches[i + 1]?._tag === "param") {
67
- numberOfParams++;
68
- i++;
69
- paramsNames.push(match.value);
70
- }
71
- if (!(numberOfParams in pathNavigator.params)) {
72
- pathNavigator.params[numberOfParams] = new PathsTree(`${pathNavigator.path}:${paramsNames.join("/:")}/`);
73
- }
74
- pathNavigator = pathNavigator.params[numberOfParams];
75
- i++;
76
- break;
36
+ if (!(numberOfParams in pathNavigator)) {
37
+ ;
38
+ (pathNavigator)[numberOfParams] = { [methods]: [] };
77
39
  }
40
+ pathNavigator = (pathNavigator)[numberOfParams];
41
+ i++;
42
+ break;
78
43
  }
79
44
  }
80
- if (pathNavigator.methods.includes(path.method)) {
81
- // throw duplicate path-method error
82
- return yield* $(tsplus_module_1.fail(new InvalidStateError(`Duplicate method ${path.method} for path ${path.path}`)));
83
- }
84
- pathNavigator.methods.push(path.method);
85
45
  }
86
- return paths;
87
- });
46
+ if (pathNavigator[methods].includes(path.method)) {
47
+ // throw duplicate path-method error
48
+ return tsplus_module_1.fail(new InvalidStateError(`Duplicate method ${path.method} for path ${path.path}`));
49
+ }
50
+ pathNavigator[methods].push(path.method);
51
+ }
52
+ return tsplus_module_1.succeed(paths);
88
53
  }
89
54
  /**
90
55
  * Work in progress JSONSchema generator.
91
56
  */
92
57
  export function makeJsonSchema(r) {
93
- return tsplus_module_1.map(tsplus_module_1.flatMap(tsplus_module_3.ext_forEach(tsplus_module_2.fromIterable(r), RS.makeFromSchema), checkPaths), (e) => {
58
+ return tsplus_module_1.map(tsplus_module_1.flatMap(tsplus_module_3.ext_forEach(tsplus_module_2.fromIterable(r), RS.makeFromSchema), checkDuplicatePaths), (e) => {
94
59
  const map = ({ method, path, responses, ...rest }) => ({
95
60
  [method]: {
96
61
  ...rest,
@@ -119,4 +84,4 @@ class Response {
119
84
  this.type = type;
120
85
  }
121
86
  }
122
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFrZUpzb25TY2hlbWEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9fc3JjL2FwaS9leHByZXNzL21ha2VKc29uU2NoZW1hLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHVEQUF1RDtBQUV2RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUNuRCxPQUFPLEtBQUssRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBSXpDLE1BQU0sRUFBRSxHQUFHLFNBQVMsQ0FBQTtBQUlwQixNQUFNLFNBQVM7SUFDRyxPQUFPLENBQVU7SUFDakIsTUFBTSxDQUEwQztJQUNoRCxRQUFRLENBQTBDO0lBQ2xELElBQUksQ0FBUTtJQUU1QixZQUFZLElBQVk7UUFDdEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUE7UUFDakIsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUE7UUFDaEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUE7UUFDbEIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUE7SUFDbEIsQ0FBQztDQUNGO0FBT0QsU0FBUyxjQUFjLENBQ3JCLGFBQXdCLEVBQ3hCLEtBQVk7SUFFWixPQUFPLG9CQUFXLFFBQVEsQ0FBQyxFQUFDLENBQUM7UUFDM0IsUUFBUSxLQUFLLENBQUMsSUFBSSxFQUFFO1lBQ2xCLEtBQUssVUFBVSxDQUFDLENBQUM7Z0JBQ2YsNEVBQTRFO2dCQUM1RSxJQUFJLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUU7b0JBQzNCLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLHFCQUNkLElBQUksaUJBQWlCLENBQ25CLFFBQVEsYUFBYSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsS0FBSyxvQkFBb0IsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FDM0YsQ0FDRixDQUFDLENBQUE7aUJBQ0g7Z0JBQ0QsTUFBSzthQUNOO1lBQ0QsS0FBSyxPQUFPLENBQUMsQ0FBQztnQkFDWiwyRkFBMkY7Z0JBQzNGLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUE7Z0JBQ25FLElBQUksUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7b0JBQ3ZCLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxvQkFBVyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FDckMsd0JBQ0UsUUFBUSxhQUFhLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxLQUFLLDhCQUE4QixhQUFhLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBRSxDQUFDLElBQUksRUFBRSxDQUN6RyxDQUNGLENBQUMsQ0FBQyxDQUFBO2lCQUNKO2dCQUNELE1BQUs7YUFDTjtTQUNGO0lBQ0gsQ0FBQyxDQUFDLENBQUE7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLFVBQVUsQ0FDeEIsS0FBbUI7SUFFbkIsT0FBTyxvQkFBVyxRQUFRLENBQUMsRUFBQyxDQUFDO1FBQzNCLE1BQU0sV0FBVyxHQUFjLElBQUksU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBQ2pELE1BQU0sS0FBSyxHQUFHLDRCQUE0QixDQUFBO1FBQzFDLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFO1lBQ3hCLE1BQU0sT0FBTyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztpQkFDM0MsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FDYixLQUFLLENBQUMsQ0FBQyxDQUFDO2dCQUNOLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBVztnQkFDaEQsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBRSxFQUFXLENBQ2pELENBQUE7WUFFSCxJQUFJLGFBQWEsR0FBRyxXQUFXLENBQUE7WUFDL0IsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxNQUFNLEdBQUc7Z0JBQ25DLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUUsQ0FBQTtnQkFFekIsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxhQUFhLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQTtnQkFFOUMsUUFBUSxLQUFLLENBQUMsSUFBSSxFQUFFO29CQUNsQixLQUFLLFVBQVUsQ0FBQyxDQUFDO3dCQUNmLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksYUFBYSxDQUFDLFFBQVEsQ0FBQyxFQUFFOzRCQUM1QyxhQUFhLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLFNBQVMsQ0FBQyxHQUFHLGFBQWEsQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUE7eUJBQzVGO3dCQUVELGFBQWEsR0FBRyxhQUFhLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUUsQ0FBQTt3QkFDcEQsQ0FBQyxFQUFFLENBQUE7d0JBQ0gsTUFBSztxQkFDTjtvQkFDRCxLQUFLLE9BQU8sQ0FBQyxDQUFDO3dCQUNaLE1BQU0sV0FBVyxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFBO3dCQUNqQyxJQUFJLGNBQWMsR0FBRyxDQUFDLENBQUE7d0JBQ3RCLE9BQU8sQ0FBQyxHQUFHLE9BQU8sQ0FBQyxNQUFNLElBQUksT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLEtBQUssT0FBTyxFQUFFOzRCQUM3RCxjQUFjLEVBQUUsQ0FBQTs0QkFDaEIsQ0FBQyxFQUFFLENBQUE7NEJBQ0gsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUE7eUJBQzlCO3dCQUVELElBQUksQ0FBQyxDQUFDLGNBQWMsSUFBSSxhQUFhLENBQUMsTUFBTSxDQUFDLEVBQUU7NEJBQzdDLGFBQWEsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLEdBQUcsSUFBSSxTQUFTLENBQ2xELEdBQUcsYUFBYSxDQUFDLElBQUksSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQ25ELENBQUE7eUJBQ0Y7d0JBQ0QsYUFBYSxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFFLENBQUE7d0JBQ3JELENBQUMsRUFBRSxDQUFBO3dCQUNILE1BQUs7cUJBQ047aUJBQ0Y7YUFDRjtZQUVELElBQUksYUFBYSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFO2dCQUMvQyxvQ0FBb0M7Z0JBQ3BDLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLHFCQUFZLElBQUksaUJBQWlCLENBQUMsb0JBQW9CLElBQUksQ0FBQyxNQUFNLGFBQWEsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBO2FBQzdHO1lBQ0QsYUFBYSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1NBQ3hDO1FBRUQsT0FBTyxLQUFLLENBQUE7SUFDZCxDQUFDLENBQUMsQ0FBQTtBQUNKLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxjQUFjLENBQUMsQ0FBa0M7SUFDL0QsT0FBTyxvQkFBQSx3QkFBQSw0QkFBQSw2QkFDUyxDQUFDLENBQUMsRUFDRCxFQUFFLENBQUMsY0FBYyxDQUFDLEVBQ3hCLFVBQVUsQ0FBQyxFQUNmLENBQUMsQ0FBQyxFQUFFLEVBQUU7UUFDVCxNQUFNLEdBQUcsR0FBRyxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsR0FBRyxJQUFJLEVBQWdCLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDbkUsQ0FBQyxNQUFNLENBQUMsRUFBRTtnQkFDUixHQUFHLElBQUk7Z0JBQ1AsU0FBUyxFQUFHLFNBQXdCLENBQUMsTUFBTSxDQUN6QyxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsRUFBRTtvQkFDWixJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUE7b0JBQy9CLE9BQU8sSUFBSSxDQUFBO2dCQUNiLENBQUMsRUFDRCxFQUFzRCxDQUN2RDthQUNGO1NBQ0YsQ0FBQyxDQUFBO1FBQ0YsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUNiLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ1YsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtZQUNsRSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUc7Z0JBQ1gsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO2dCQUNiLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBUTthQUNqQixDQUFBO1lBQ0QsT0FBTyxJQUFJLENBQUE7UUFDYixDQUFDLEVBQ0QsRUFBNkQsQ0FDOUQsQ0FBQTtJQUNILENBQUMsQ0FBQyxDQUFBO0FBQ04sQ0FBQztBQUVELE1BQU0sUUFBUTtJQUVNO0lBQ0E7SUFGbEIsWUFDa0IsVUFBa0IsRUFDbEIsSUFBUyxDQUFDLGtDQUFrQzs7UUFENUMsZUFBVSxHQUFWLFVBQVUsQ0FBUTtRQUNsQixTQUFJLEdBQUosSUFBSSxDQUFLO0lBQ3hCLENBQUM7Q0FDTCIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cblxuaW1wb3J0IHsgSW52YWxpZFN0YXRlRXJyb3IgfSBmcm9tIFwiLi4vLi4vZXJyb3JzLmpzXCJcbmltcG9ydCAqIGFzIFJTIGZyb20gXCIuL3NjaGVtYS9yb3V0aW5nLmpzXCJcblxudHlwZSBNZXRob2RzID0gXCJHRVRcIiB8IFwiUFVUXCIgfCBcIlBPU1RcIiB8IFwiUEFUQ0hcIiB8IFwiREVMRVRFXCJcblxuY29uc3QgcnggPSAvOihcXHcrKS9nXG5cbnR5cGUgX0E8Qz4gPSBDIGV4dGVuZHMgUmVhZG9ubHlBcnJheTxpbmZlciBBPiA/IEEgOiBuZXZlclxuXG5jbGFzcyBQYXRoc1RyZWUge1xuICBwdWJsaWMgcmVhZG9ubHkgbWV0aG9kczogc3RyaW5nW11cbiAgcHVibGljIHJlYWRvbmx5IHBhcmFtczogeyBba2V5OiBudW1iZXJdOiBQYXRoc1RyZWUgfCB1bmRlZmluZWQgfVxuICBwdWJsaWMgcmVhZG9ubHkgc3VicGF0aHM6IHsgW2tleTogc3RyaW5nXTogUGF0aHNUcmVlIHwgdW5kZWZpbmVkIH1cbiAgcHVibGljIHJlYWRvbmx5IHBhdGg6IHN0cmluZ1xuXG4gIGNvbnN0cnVjdG9yKHBhdGg6IHN0cmluZykge1xuICAgIHRoaXMubWV0aG9kcyA9IFtdXG4gICAgdGhpcy5wYXJhbXMgPSB7fVxuICAgIHRoaXMuc3VicGF0aHMgPSB7fVxuICAgIHRoaXMucGF0aCA9IHBhdGhcbiAgfVxufVxuXG5pbnRlcmZhY2UgTWF0Y2gge1xuICBfdGFnOiBcInJlc291cmNlXCIgfCBcInBhcmFtXCJcbiAgdmFsdWU6IHN0cmluZ1xufVxuXG5mdW5jdGlvbiBjaGVja1NoYWRvd2luZyhcbiAgcGF0aE5hdmlnYXRvcjogUGF0aHNUcmVlLFxuICBtYXRjaDogTWF0Y2hcbikge1xuICByZXR1cm4gRWZmZWN0LmdlbihmdW5jdGlvbiooJCkge1xuICAgIHN3aXRjaCAobWF0Y2guX3RhZykge1xuICAgICAgY2FzZSBcInJlc291cmNlXCI6IHtcbiAgICAgICAgLy8gY2hlY2sgc2hhZG93aW5nOiBpZiAnYS86cGFyYW0nIGNvbWVzIGJlZm9yZSAnYS9iJywgdGhlbiAnYS9iJyBpcyBzaGFkb3dlZFxuICAgICAgICBpZiAocGF0aE5hdmlnYXRvci5wYXJhbXNbMV0pIHtcbiAgICAgICAgICByZXR1cm4geWllbGQqICQoRWZmZWN0LmZhaWwoXG4gICAgICAgICAgICBuZXcgSW52YWxpZFN0YXRlRXJyb3IoXG4gICAgICAgICAgICAgIGBQYXRoICR7cGF0aE5hdmlnYXRvci5wYXRofSR7bWF0Y2gudmFsdWV9LyBpcyBzaGFkb3dlZCBieSAke3BhdGhOYXZpZ2F0b3IucGFyYW1zWzFdLnBhdGh9YFxuICAgICAgICAgICAgKVxuICAgICAgICAgICkpXG4gICAgICAgIH1cbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICAgIGNhc2UgXCJwYXJhbVwiOiB7XG4gICAgICAgIC8vIGNoZWNrIHNoYWRvd2luZzogaWYgJ2EvYicgY29tZXMgYmVmb3JlICdhLzpwYXJhbScsIHRoZW4gJ2EvXCJwYXJhbScgaXMgcGFydGlhbGx5IHNoYWRvd2VkXG4gICAgICAgIGNvbnN0IHN1YnBhdGhzID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMocGF0aE5hdmlnYXRvci5zdWJwYXRocylcbiAgICAgICAgaWYgKHN1YnBhdGhzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICB5aWVsZCogJChFZmZlY3QuYWxsKHN1YnBhdGhzLm1hcCgocykgPT5cbiAgICAgICAgICAgIEVmZmVjdC5sb2dJbmZvKFxuICAgICAgICAgICAgICBgUGF0aCAke3BhdGhOYXZpZ2F0b3IucGF0aH06JHttYXRjaC52YWx1ZX0vIGlzIHBhcnRpYWxseSBzaGFkb3dlZCBieSAke3BhdGhOYXZpZ2F0b3Iuc3VicGF0aHNbc10hLnBhdGh9YFxuICAgICAgICAgICAgKVxuICAgICAgICAgICkpKVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuICB9KVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tQYXRoczxUIGV4dGVuZHMgeyBwYXRoOiBzdHJpbmc7IG1ldGhvZDogc3RyaW5nIH0+KFxuICBwYXRoczogcmVhZG9ubHkgVFtdXG4pIHtcbiAgcmV0dXJuIEVmZmVjdC5nZW4oZnVuY3Rpb24qKCQpIHtcbiAgICBjb25zdCBwYXRoTWV0aG9kczogUGF0aHNUcmVlID0gbmV3IFBhdGhzVHJlZShcIi9cIilcbiAgICBjb25zdCByZWdleCA9IC8oPzpefFxcLykoW14vOlxcbl0rKXw6KFxcdyspL2dcbiAgICBmb3IgKGNvbnN0IHBhdGggb2YgcGF0aHMpIHtcbiAgICAgIGNvbnN0IG1hdGNoZXMgPSBbLi4ucGF0aC5wYXRoLm1hdGNoQWxsKHJlZ2V4KV1cbiAgICAgICAgLm1hcCgobWF0Y2gpID0+XG4gICAgICAgICAgbWF0Y2hbMV1cbiAgICAgICAgICAgID8geyBfdGFnOiBcInJlc291cmNlXCIsIHZhbHVlOiBtYXRjaFsxXSB9IGFzIGNvbnN0XG4gICAgICAgICAgICA6IHsgX3RhZzogXCJwYXJhbVwiLCB2YWx1ZTogbWF0Y2hbMl0hIH0gYXMgY29uc3RcbiAgICAgICAgKVxuXG4gICAgICBsZXQgcGF0aE5hdmlnYXRvciA9IHBhdGhNZXRob2RzXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1hdGNoZXMubGVuZ3RoOykge1xuICAgICAgICBjb25zdCBtYXRjaCA9IG1hdGNoZXNbaV0hXG5cbiAgICAgICAgeWllbGQqICQoY2hlY2tTaGFkb3dpbmcocGF0aE5hdmlnYXRvciwgbWF0Y2gpKVxuXG4gICAgICAgIHN3aXRjaCAobWF0Y2guX3RhZykge1xuICAgICAgICAgIGNhc2UgXCJyZXNvdXJjZVwiOiB7XG4gICAgICAgICAgICBpZiAoIShtYXRjaC52YWx1ZSBpbiBwYXRoTmF2aWdhdG9yLnN1YnBhdGhzKSkge1xuICAgICAgICAgICAgICBwYXRoTmF2aWdhdG9yLnN1YnBhdGhzW21hdGNoLnZhbHVlXSA9IG5ldyBQYXRoc1RyZWUoYCR7cGF0aE5hdmlnYXRvci5wYXRofSR7bWF0Y2gudmFsdWV9L2ApXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHBhdGhOYXZpZ2F0b3IgPSBwYXRoTmF2aWdhdG9yLnN1YnBhdGhzW21hdGNoLnZhbHVlXSFcbiAgICAgICAgICAgIGkrK1xuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBcInBhcmFtXCI6IHtcbiAgICAgICAgICAgIGNvbnN0IHBhcmFtc05hbWVzID0gW21hdGNoLnZhbHVlXVxuICAgICAgICAgICAgbGV0IG51bWJlck9mUGFyYW1zID0gMVxuICAgICAgICAgICAgd2hpbGUgKGkgPCBtYXRjaGVzLmxlbmd0aCAmJiBtYXRjaGVzW2kgKyAxXT8uX3RhZyA9PT0gXCJwYXJhbVwiKSB7XG4gICAgICAgICAgICAgIG51bWJlck9mUGFyYW1zKytcbiAgICAgICAgICAgICAgaSsrXG4gICAgICAgICAgICAgIHBhcmFtc05hbWVzLnB1c2gobWF0Y2gudmFsdWUpXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghKG51bWJlck9mUGFyYW1zIGluIHBhdGhOYXZpZ2F0b3IucGFyYW1zKSkge1xuICAgICAgICAgICAgICBwYXRoTmF2aWdhdG9yLnBhcmFtc1tudW1iZXJPZlBhcmFtc10gPSBuZXcgUGF0aHNUcmVlKFxuICAgICAgICAgICAgICAgIGAke3BhdGhOYXZpZ2F0b3IucGF0aH06JHtwYXJhbXNOYW1lcy5qb2luKFwiLzpcIil9L2BcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcGF0aE5hdmlnYXRvciA9IHBhdGhOYXZpZ2F0b3IucGFyYW1zW251bWJlck9mUGFyYW1zXSFcbiAgICAgICAgICAgIGkrK1xuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHBhdGhOYXZpZ2F0b3IubWV0aG9kcy5pbmNsdWRlcyhwYXRoLm1ldGhvZCkpIHtcbiAgICAgICAgLy8gdGhyb3cgZHVwbGljYXRlIHBhdGgtbWV0aG9kIGVycm9yXG4gICAgICAgIHJldHVybiB5aWVsZCogJChFZmZlY3QuZmFpbChuZXcgSW52YWxpZFN0YXRlRXJyb3IoYER1cGxpY2F0ZSBtZXRob2QgJHtwYXRoLm1ldGhvZH0gZm9yIHBhdGggJHtwYXRoLnBhdGh9YCkpKVxuICAgICAgfVxuICAgICAgcGF0aE5hdmlnYXRvci5tZXRob2RzLnB1c2gocGF0aC5tZXRob2QpXG4gICAgfVxuXG4gICAgcmV0dXJuIHBhdGhzXG4gIH0pXG59XG5cbi8qKlxuICogV29yayBpbiBwcm9ncmVzcyBKU09OU2NoZW1hIGdlbmVyYXRvci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1ha2VKc29uU2NoZW1hKHI6IEl0ZXJhYmxlPFJTLlJvdXRlRGVzY3JpcHRvckFueT4pIHtcbiAgcmV0dXJuIENodW5rXG4gICAgLmZyb21JdGVyYWJsZShyKVxuICAgIC5mb3JFYWNoRWZmZWN0KFJTLm1ha2VGcm9tU2NoZW1hKVxuICAgIC5mbGF0TWFwKGNoZWNrUGF0aHMpXG4gICAgLm1hcCgoZSkgPT4ge1xuICAgICAgY29uc3QgbWFwID0gKHsgbWV0aG9kLCBwYXRoLCByZXNwb25zZXMsIC4uLnJlc3QgfTogX0E8dHlwZW9mIGU+KSA9PiAoe1xuICAgICAgICBbbWV0aG9kXToge1xuICAgICAgICAgIC4uLnJlc3QsXG4gICAgICAgICAgcmVzcG9uc2VzOiAocmVzcG9uc2VzIGFzIEFycmF5PGFueT4pLnJlZHVjZShcbiAgICAgICAgICAgIChwcmV2LCBjdXIpID0+IHtcbiAgICAgICAgICAgICAgcHJldltjdXIuc3RhdHVzQ29kZV0gPSBjdXIudHlwZVxuICAgICAgICAgICAgICByZXR1cm4gcHJldlxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHt9IGFzIFJlY29yZDxSZXNwb25zZVtcInN0YXR1c0NvZGVcIl0sIFJlc3BvbnNlW1widHlwZVwiXT5cbiAgICAgICAgICApXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICByZXR1cm4gZS5yZWR1Y2UoXG4gICAgICAgIChwcmV2LCBlKSA9PiB7XG4gICAgICAgICAgY29uc3QgcGF0aCA9IGUucGF0aC5zcGxpdChcIj9cIilbMF0ucmVwbGFjZShyeCwgKF9hLCBiKSA9PiBgeyR7Yn19YClcbiAgICAgICAgICBwcmV2W3BhdGhdID0ge1xuICAgICAgICAgICAgLi4ucHJldltwYXRoXSxcbiAgICAgICAgICAgIC4uLm1hcChlKSBhcyBhbnlcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHByZXZcbiAgICAgICAgfSxcbiAgICAgICAge30gYXMgUmVjb3JkPHN0cmluZywgUmVjb3JkPE1ldGhvZHMsIFJldHVyblR5cGU8dHlwZW9mIG1hcD4+PlxuICAgICAgKVxuICAgIH0pXG59XG5cbmNsYXNzIFJlc3BvbnNlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHJlYWRvbmx5IHN0YXR1c0NvZGU6IG51bWJlcixcbiAgICBwdWJsaWMgcmVhZG9ubHkgdHlwZTogYW55IC8vIHN0cmluZyB8IEpTT05TY2hlbWEgfCBTdWJTY2hlbWFcbiAgKSB7fVxufVxuIl19
87
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFrZUpzb25TY2hlbWEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9fc3JjL2FwaS9leHByZXNzL21ha2VKc29uU2NoZW1hLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHVEQUF1RDtBQUV2RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUNuRCxPQUFPLEtBQUssRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBSXpDLE1BQU0sRUFBRSxHQUFHLFNBQVMsQ0FBQTtBQUlwQixNQUFNLFVBQVUsbUJBQW1CLENBQ2pDLEtBQW1CO0lBRW5CLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQTtJQUtqQyxNQUFNLFdBQVcsR0FBZ0IsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFBO0lBQ2xELE1BQU0sS0FBSyxHQUFHLDRCQUE0QixDQUFBO0lBRTFDLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFO1FBQ3hCLE1BQU0sT0FBTyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUMzQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUNiLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDTixDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQVc7WUFDaEQsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBRSxFQUFXLENBQ2pELENBQUE7UUFFSCxJQUFJLGFBQWEsR0FBMkIsV0FBVyxDQUFBO1FBQ3ZELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsTUFBTSxHQUFHO1lBQ25DLE1BQU0sS0FBSyxHQUFHLE9BQU8s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R0FBRyxDQUFDLENBQUE7WUFDbEUsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHO2dCQUNYLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztnQkFDYixHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQVE7YUFDakIsQ0FBQTtZQUNELE9BQU8sSUFBSSxDQUFBO1FBQ2IsQ0FBQyxFQUNELEVBQTZELENBQzlELENBQUE7SUFDSCxDQUFDLENBQUMsQ0FBQTtBQUNOLENBQUM7QUFFRCxNQUFNLFFBQVE7SUFFTTtJQUNBO0lBRmxCLFlBQ2tCLFVBQWtCLEVBQ2xCLElBQVMsQ0FBQyxrQ0FBa0M7O1FBRDVDLGVBQVUsR0FBVixVQUFVLENBQVE7UUFDbEIsU0FBSSxHQUFKLElBQUksQ0FBSztJQUN4QixDQUFDO0NBQ0wiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5cbmltcG9ydCB7IEludmFsaWRTdGF0ZUVycm9yIH0gZnJvbSBcIi4uLy4uL2Vycm9ycy5qc1wiXG5pbXBvcnQgKiBhcyBSUyBmcm9tIFwiLi9zY2hlbWEvcm91dGluZy5qc1wiXG5cbnR5cGUgTWV0aG9kcyA9IFwiR0VUXCIgfCBcIlBVVFwiIHwgXCJQT1NUXCIgfCBcIlBBVENIXCIgfCBcIkRFTEVURVwiXG5cbmNvbnN0IHJ4ID0gLzooXFx3KykvZ1xuXG50eXBlIF9BPEM+ID0gQyBleHRlbmRzIFJlYWRvbmx5QXJyYXk8aW5mZXIgQT4gPyBBIDogbmV2ZXJcblxuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrRHVwbGljYXRlUGF0aHM8VCBleHRlbmRzIHsgcGF0aDogc3RyaW5nOyBtZXRob2Q6IHN0cmluZyB9PihcbiAgcGF0aHM6IHJlYWRvbmx5IFRbXVxuKTogRWZmZWN0PG5ldmVyLCBJbnZhbGlkU3RhdGVFcnJvciwgcmVhZG9ubHkgVFtdPiB7XG4gIGNvbnN0IG1ldGhvZHMgPSBTeW1ib2woXCJtZXRob2RzXCIpXG4gIGludGVyZmFjZSBQYXRoTWV0aG9kcyB7XG4gICAgW2tleTogc3RyaW5nIHwgbnVtYmVyXTogdGhpcyB8IHVuZGVmaW5lZFxuICAgIFttZXRob2RzXTogc3RyaW5nW11cbiAgfVxuICBjb25zdCBwYXRoTWV0aG9kczogUGF0aE1ldGhvZHMgPSB7IFttZXRob2RzXTogW10gfVxuICBjb25zdCByZWdleCA9IC8oPzpefFxcLykoW14vOlxcbl0rKXw6KFxcdyspL2dcblxuICBmb3IgKGNvbnN0IHBhdGggb2YgcGF0aHMpIHtcbiAgICBjb25zdCBtYXRjaGVzID0gWy4uLnBhdGgucGF0aC5tYXRjaEFsbChyZWdleCldXG4gICAgICAubWFwKChtYXRjaCkgPT5cbiAgICAgICAgbWF0Y2hbMV1cbiAgICAgICAgICA/IHsgX3RhZzogXCJyZXNvdXJjZVwiLCB2YWx1ZTogbWF0Y2hbMV0gfSBhcyBjb25zdFxuICAgICAgICAgIDogeyBfdGFnOiBcInBhcmFtXCIsIHZhbHVlOiBtYXRjaFsyXSEgfSBhcyBjb25zdFxuICAgICAgKVxuXG4gICAgbGV0IHBhdGhOYXZpZ2F0b3I6IFBhdGhNZXRob2RzIHwgc3RyaW5nW10gPSBwYXRoTWV0aG9kc1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWF0Y2hlcy5sZW5ndGg7KSB7XG4gICAgICBjb25zdCBtYXRjaCA9IG1hdGNoZXNbaV0hXG4gICAgICBzd2l0Y2ggKG1hdGNoLl90YWcpIHtcbiAgICAgICAgY2FzZSBcInJlc291cmNlXCI6IHtcbiAgICAgICAgICBpZiAoIShtYXRjaC52YWx1ZSBpbiAocGF0aE5hdmlnYXRvcikpKSB7XG4gICAgICAgICAgICA7KHBhdGhOYXZpZ2F0b3IpW21hdGNoLnZhbHVlXSA9IHsgW21ldGhvZHNdOiBbXSB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHBhdGhOYXZpZ2F0b3IgPSAocGF0aE5hdmlnYXRvcilbbWF0Y2gudmFsdWVdIVxuICAgICAgICAgIGkrK1xuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBcInBhcmFtXCI6IHtcbiAgICAgICAgICBsZXQgbnVtYmVyT2ZQYXJhbXMgPSAxXG4gICAgICAgICAgd2hpbGUgKGkgPCBtYXRjaGVzLmxlbmd0aCAmJiBtYXRjaGVzW2kgKyAxXT8uX3RhZyA9PT0gXCJwYXJhbVwiKSB7XG4gICAgICAgICAgICBudW1iZXJPZlBhcmFtcysrXG4gICAgICAgICAgICBpKytcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoIShudW1iZXJPZlBhcmFtcyBpbiBwYXRoTmF2aWdhdG9yKSkge1xuICAgICAgICAgICAgOyhwYXRoTmF2aWdhdG9yKVtudW1iZXJPZlBhcmFtc10gPSB7IFttZXRob2RzXTogW10gfVxuICAgICAgICAgIH1cbiAgICAgICAgICBwYXRoTmF2aWdhdG9yID0gKHBhdGhOYXZpZ2F0b3IpW251bWJlck9mUGFyYW1zXSFcbiAgICAgICAgICBpKytcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHBhdGhOYXZpZ2F0b3JbbWV0aG9kc10uaW5jbHVkZXMocGF0aC5tZXRob2QpKSB7XG4gICAgICAvLyB0aHJvdyBkdXBsaWNhdGUgcGF0aC1tZXRob2QgZXJyb3JcbiAgICAgIHJldHVybiBFZmZlY3QuZmFpbChuZXcgSW52YWxpZFN0YXRlRXJyb3IoYER1cGxpY2F0ZSBtZXRob2QgJHtwYXRoLm1ldGhvZH0gZm9yIHBhdGggJHtwYXRoLnBhdGh9YCkpXG4gICAgfVxuICAgIHBhdGhOYXZpZ2F0b3JbbWV0aG9kc10ucHVzaChwYXRoLm1ldGhvZClcbiAgfVxuXG4gIHJldHVybiBFZmZlY3Quc3VjY2VlZChwYXRocylcbn1cblxuLyoqXG4gKiBXb3JrIGluIHByb2dyZXNzIEpTT05TY2hlbWEgZ2VuZXJhdG9yLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbWFrZUpzb25TY2hlbWEocjogSXRlcmFibGU8UlMuUm91dGVEZXNjcmlwdG9yQW55Pikge1xuICByZXR1cm4gQ2h1bmtcbiAgICAuZnJvbUl0ZXJhYmxlKHIpXG4gICAgLmZvckVhY2hFZmZlY3QoUlMubWFrZUZyb21TY2hlbWEpXG4gICAgLmZsYXRNYXAoY2hlY2tEdXBsaWNhdGVQYXRocylcbiAgICAubWFwKChlKSA9PiB7XG4gICAgICBjb25zdCBtYXAgPSAoeyBtZXRob2QsIHBhdGgsIHJlc3BvbnNlcywgLi4ucmVzdCB9OiBfQTx0eXBlb2YgZT4pID0+ICh7XG4gICAgICAgIFttZXRob2RdOiB7XG4gICAgICAgICAgLi4ucmVzdCxcbiAgICAgICAgICByZXNwb25zZXM6IChyZXNwb25zZXMgYXMgQXJyYXk8YW55PikucmVkdWNlKFxuICAgICAgICAgICAgKHByZXYsIGN1cikgPT4ge1xuICAgICAgICAgICAgICBwcmV2W2N1ci5zdGF0dXNDb2RlXSA9IGN1ci50eXBlXG4gICAgICAgICAgICAgIHJldHVybiBwcmV2XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge30gYXMgUmVjb3JkPFJlc3BvbnNlW1wic3RhdHVzQ29kZVwiXSwgUmVzcG9uc2VbXCJ0eXBlXCJdPlxuICAgICAgICAgIClcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIHJldHVybiBlLnJlZHVjZShcbiAgICAgICAgKHByZXYsIGUpID0+IHtcbiAgICAgICAgICBjb25zdCBwYXRoID0gZS5wYXRoLnNwbGl0KFwiP1wiKVswXS5yZXBsYWNlKHJ4LCAoX2EsIGIpID0+IGB7JHtifX1gKVxuICAgICAgICAgIHByZXZbcGF0aF0gPSB7XG4gICAgICAgICAgICAuLi5wcmV2W3BhdGhdLFxuICAgICAgICAgICAgLi4ubWFwKGUpIGFzIGFueVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gcHJldlxuICAgICAgICB9LFxuICAgICAgICB7fSBhcyBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8TWV0aG9kcywgUmV0dXJuVHlwZTx0eXBlb2YgbWFwPj4+XG4gICAgICApXG4gICAgfSlcbn1cblxuY2xhc3MgUmVzcG9uc2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmVhZG9ubHkgc3RhdHVzQ29kZTogbnVtYmVyLFxuICAgIHB1YmxpYyByZWFkb25seSB0eXBlOiBhbnkgLy8gc3RyaW5nIHwgSlNPTlNjaGVtYSB8IFN1YlNjaGVtYVxuICApIHt9XG59XG4iXX0=
@@ -1 +1 @@
1
- b8406b30e5dc86e8886d361354e8ded840ddf37986c569803276d119c900733c
1
+ 8cc23346cd9bd1e663ddc1a53b36d0946bd5be2c5d457dd4fb342a3ea8f7e52e
@@ -1 +1 @@
1
- 2106804d7ed5f62d59b96efcf115903f0f9819d46ae439f0e1304f2d1b729287
1
+ 83c9f6474d25a55a8363a18bec5e9e7ef2f1e57bcf59ea51051641eb430a9ee8
@@ -37,8 +37,6 @@ test("works", () => {
37
37
  .toEqual([]);
38
38
  expect(tsplus_module_2.iterableToArray(tsplus_module_1.filterMap(somethings, codeFilter(somethingsWhere((_) => _("b", (_) => "b"))))))
39
39
  .toEqual([somethings[0]]);
40
- expect(tsplus_module_2.iterableToArray(tsplus_module_1.filterMap(somethings, codeFilter(somethingsWhere((_) => _("c", (_) => tsplus_module_3.$includes(_, "c")))))))
41
- .toEqual([somethings[0]]);
42
40
  expect(tsplus_module_2.iterableToArray(tsplus_module_1.filterMap(somethings, codeFilter(somethingsWhere((_) => _("d.-1.a", (_) => "a5"))))))
43
41
  .toEqual([somethings[1]]);
44
42
  expect(tsplus_module_2.iterableToArray(tsplus_module_1.filterMap(somethings, codeFilter(somethingsWhere((_) => _("d.-1.a", (_) => "a"))))))
@@ -46,4 +44,4 @@ test("works", () => {
46
44
  expect(tsplus_module_2.iterableToArray(tsplus_module_1.filterMap(somethings, codeFilter(somethingsWhere((_) => _("d.-1.a", (_) => tsplus_module_3.$isnt(_, "a")))))))
47
45
  .toEqual([somethings[1]]);
48
46
  });
49
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZUZpbHRlci50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vX3NyYy9zZXJ2aWNlcy9TdG9yZS9jb2RlRmlsdGVyLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQzdDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFFdkMsTUFBTSxVQUFVLEdBQUc7SUFDakIsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRTtJQUM3RSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFO0NBQ2xELENBQUE7QUFFaEMsTUFBTSxFQUFFLEdBQUcsV0FBVyxFQUFhLENBQUE7QUFHbkMsTUFBTSxVQUFVLG9CQUFvQixDQUFDLE1BQXFEO0lBQ3hGLE9BQU8sTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFBO0FBQ25CLENBQUM7QUFFRCxNQUFNLFVBQVUsZUFBZSxDQUM3QixTQUVnQyxFQUNoQyxJQUFtQjtJQUVuQixPQUFPLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxFQUFF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LEdBQUcsQ0FBQyxDQUFDLENBQ2hELENBQUMsRUFFTDtTQUNFLE9BQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFFM0IsTUFBTSxpQ0FDSiwwQkFBQSxVQUFVLEVBQ0csVUFBVSxDQUNuQixlQUFlLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLHNCQUFBLENBQUMsRUFBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQ3pELENBQUMsRUFFTDtTQUNFLE9BQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFDN0IsQ0FBQyxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFN0b3JlV2hlcmVGaWx0ZXIsIFdoZXJlIH0gZnJvbSBcIkBlZmZlY3QtYXBwL2luZnJhL3NlcnZpY2VzL1N0b3JlXCJcbmltcG9ydCB7IG1ha2VGaWx0ZXJzIH0gZnJvbSBcIi4uLy4uL2ZpbHRlci5qc1wiXG5pbXBvcnQgeyBjb2RlRmlsdGVyIH0gZnJvbSBcIi4vdXRpbHMuanNcIlxuXG5jb25zdCBzb21ldGhpbmdzID0gW1xuICB7IGE6IDEsIGI6IFwiYlwiLCBjOiBbXCJjXCJdLCBkOiBbeyBhOiBcImEyXCIsIGI6IDEgfSwgeyBhOiBcImFcIiwgYjogMSB9XSwgaWQ6IFwiMVwiIH0sXG4gIHsgYTogMiwgYjogXCJiMlwiLCBjOiBbXCJjMlwiXSwgZDogW3sgYTogXCJhNFwiLCBiOiAyIH0sIHsgYTogXCJhNVwiLCBiOiAyIH1dLCBpZDogXCIyXCIgfVxuXSBzYXRpc2ZpZXMgcmVhZG9ubHkgU29tZXRoaW5nW11cblxuY29uc3QgZl8gPSBtYWtlRmlsdGVyczxTb21ldGhpbmc+KClcbmV4cG9ydCB0eXBlIFNvbWV0aGluZ1doZXJlRmlsdGVyID0gdHlwZW9mIGZfXG5cbmV4cG9ydCBmdW5jdGlvbiBtYWtlU29tZXRoaW5nRmlsdGVyXyhmaWx0ZXI6IChmOiBTb21ldGhpbmdXaGVyZUZpbHRlcikgPT4gU3RvcmVXaGVyZUZpbHRlcikge1xuICByZXR1cm4gZmlsdGVyKGZfKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc29tZXRoaW5nc1doZXJlKFxuICBtYWtlV2hlcmU6IChcbiAgICBmOiBTb21ldGhpbmdXaGVyZUZpbHRlclxuICApID0+IFdoZXJlIHwgW1doZXJlLCAuLi5XaGVyZVtdXSxcbiAgbW9kZT86IFwib3JcIiB8IFwiYW5kXCJcbikge1xuICByZXR1cm4gbWFrZVNvbWV0aGluZ0ZpbHRlcl8oKGYpID0+IHtcbiAgICBjb25zdCBtID0gbWFrZVdoZXJlID8gbWFrZVdoZXJlKGYpIDogW11cbiAgICByZXR1cm4gKHtcbiAgICAgIG1vZGUsXG4gICAgICB3aGVyZTogKEFycmF5LmlzQXJyYXkobSkgPyBtIGFzIHVua25vd24gYXMgW1doZXJlLCAuLi5XaGVyZVtdXSA6IFttXSkgYXMgcmVhZG9ubHkgW1doZXJlLCAuLi5XaGVyZVtdXVxuICAgIH0pXG4gIH0pXG59XG5cbnR5cGUgU29tZXRoaW5nRWxzZSA9IHtcbiAgYTogc3RyaW5nXG4gIGI6IG51bWJlclxufVxuXG50eXBlIFNvbWV0aGluZyA9IHtcbiAgYTogbnVtYmVyXG4gIGlkOiBzdHJpbmdcbiAgYjogc3RyaW5nXG4gIGM6IHJlYWRvbmx5IHN0cmluZ1tdXG4gIGQ6IHJlYWRvbmx5IFNvbWV0aGluZ0Vsc2VbXVxufVxuXG50ZXN0KFwid29ya3NcIiwgKCkgPT4ge1xuICBleHBlY3QoXG4gICAgc29tZXRoaW5nc1xuICAgICAgLmZpbHRlck1hcChjb2RlRmlsdGVyKFxuICAgICAgICBzb21ldGhpbmdzV2hlcmUoKF8pID0+IF8oXCJiXCIsIChfKSA9PiBcImIyXCIpKVxuICAgICAgKSlcbiAgICAgIC50b0FycmF5XG4gIClcbiAgICAudG9FcXVhbChbc29tZXRoaW5nc1sxXV0pXG5cbiAgZXhwZWN0KFxuICAgIHNvbWV0aGluZ3NcbiAgICAgIC5maWx0ZXJNYXAoY29kZUZpbHRlcihcbiAgICAgICAgc29tZXRoaW5nc1doZXJlKChfKSA9PiBfKFwiYlwiLCAoXykgPT4gXy4kY29udGFpbnMoXCJiXCIpKSlcbiAgICAgICkpXG4gICAgICAudG9BcnJheVxuICApXG4gICAgLnRvRXF1YWwoW3NvbWV0aGluZ3NbMF0sIHNvbWV0aGluZ3NbMV1dKVxuXG4gIGV4cGVjdChcbiAgICBzb21ldGhpbmdzXG4gICAgICAuZmlsdGVyTWFwKGNvZGVGaWx0ZXIoXG4gICAgICAgIHNvbWV0aGluZ3NXaGVyZSgoXykgPT4gXyhcImJcIiwgKF8pID0+IF8uJGNvbnRhaW5zKFwiMlwiKSkpXG4gICAgICApKVxuICAgICAgLnRvQXJyYXlcbiAgKVxuICAgIC50b0VxdWFsKFtzb21ldGhpbmdzWzFdXSlcblxuICBleHBlY3QoXG4gICAgc29tZXRoaW5nc1xuICAgICAgLmZpbHRlck1hcChjb2RlRmlsdGVyKFxuICAgICAgICBzb21ldGhpbmdzV2hlcmUoKF8pID0+IF8oXCJiXCIsIChfKSA9PiBfLiRlbmRzV2l0aChcImJcIikpKVxuICAgICAgKSlcbiAgICAgIC50b0FycmF5XG4gIClcbiAgICAudG9FcXVhbChbc29tZXRoaW5nc1swXV0pXG5cbiAgZXhwZWN0KFxuICAgIHNvbWV0aGluZ3NcbiAgICAgIC5maWx0ZXJNYXAoY29kZUZpbHRlcihcbiAgICAgICAgc29tZXRoaW5nc1doZXJlKChfKSA9PiBfKFwiYlwiLCAoXykgPT4gXy4kZW5kc1dpdGgoXCIyXCIpKSlcbiAgICAgICkpXG4gICAgICAudG9BcnJheVxuICApXG4gICAgLnRvRXF1YWwoW3NvbWV0aGluZ3NbMV1dKVxuXG4gIGV4cGVjdChcbiAgICBzb21ldGhpbmdzXG4gICAgICAuZmlsdGVyTWFwKGNvZGVGaWx0ZXIoXG4gICAgICAgIHNvbWV0aGluZ3NXaGVyZSgoXykgPT4gXyhcImJcIiwgKF8pID0+IF8uJHN0YXJ0c1dpdGgoXCJiXCIpKSlcbiAgICAgICkpXG4gICAgICAudG9BcnJheVxuICApXG4gICAgLnRvRXF1YWwoW3NvbWV0aGluZ3NbMF0sIHNvbWV0aGluZ3NbMV1dKVxuXG4gIGV4cGVjdChcbiAgICBzb21ldGhpbmdzXG4gICAgICAuZmlsdGVyTWFwKGNvZGVGaWx0ZXIoXG4gICAgICAgIHNvbWV0aGluZ3NXaGVyZSgoXykgPT4gXyhcImJcIiwgKF8pID0+IF8uJHN0YXJ0c1dpdGgoXCIyXCIpKSlcbiAgICAgICkpXG4gICAgICAudG9BcnJheVxuICApXG4gICAgLnRvRXF1YWwoW10pXG5cbiAgZXhwZWN0KFxuICAgIHNvbWV0aGluZ3NcbiAgICAgIC5maWx0ZXJNYXAoY29kZUZpbHRlcihcbiAgICAgICAgc29tZXRoaW5nc1doZXJlKChfKSA9PiBfKFwiYlwiLCAoXykgPT4gXCJiXCIpKVxuICAgICAgKSlcbiAgICAgIC50b0FycmF5XG4gIClcbiAgICAudG9FcXVhbChbc29tZXRoaW5nc1swXV0pXG5cbiAgZXhwZWN0KFxuICAgIHNvbWV0aGluZ3NcbiAgICAgIC5maWx0ZXJNYXAoY29kZUZpbHRlcihcbiAgICAgICAgc29tZXRoaW5nc1doZXJlKChfKSA9PiBfKFwiY1wiLCAoXykgPT4gXy4kaW5jbHVkZXMoXCJjXCIpKSlcbiAgICAgICkpXG4gICAgICAudG9BcnJheVxuICApXG4gICAgLnRvRXF1YWwoW3NvbWV0aGluZ3NbMF1dKVxuXG4gIGV4cGVjdChcbiAgICBzb21ldGhpbmdzXG4gICAgICAuZmlsdGVyTWFwKGNvZGVGaWx0ZXIoXG4gICAgICAgIHNvbWV0aGluZ3NXaGVyZSgoXykgPT4gXyhcImQuLTEuYVwiLCAoXykgPT4gXCJhNVwiKSlcbiAgICAgICkpXG4gICAgICAudG9BcnJheVxuICApXG4gICAgLnRvRXF1YWwoW3NvbWV0aGluZ3NbMV1dKVxuXG4gIGV4cGVjdChcbiAgICBzb21ldGhpbmdzXG4gICAgICAuZmlsdGVyTWFwKGNvZGVGaWx0ZXIoXG4gICAgICAgIHNvbWV0aGluZ3NXaGVyZSgoXykgPT4gXyhcImQuLTEuYVwiLCAoXykgPT4gXCJhXCIpKVxuICAgICAgKSlcbiAgICAgIC50b0FycmF5XG4gIClcbiAgICAudG9FcXVhbChbc29tZXRoaW5nc1swXV0pXG5cbiAgZXhwZWN0KFxuICAgIHNvbWV0aGluZ3NcbiAgICAgIC5maWx0ZXJNYXAoY29kZUZpbHRlcihcbiAgICAgICAgc29tZXRoaW5nc1doZXJlKChfKSA9PiBfKFwiZC4tMS5hXCIsIChfKSA9PiBfLiRpc250KFwiYVwiKSkpXG4gICAgICApKVxuICAgICAgLnRvQXJyYXlcbiAgKVxuICAgIC50b0VxdWFsKFtzb21ldGhpbmdzWzFdXSlcbn0pXG4iXX0=
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZUZpbHRlci50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vX3NyYy9zZXJ2aWNlcy9TdG9yZS9jb2RlRmlsdGVyLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQzdDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFFdkMsTUFBTSxVQUFVLEdBQUc7SUFDakIsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRTtJQUM3RSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFO0NBQ2xELENBQUE7QUFFaEMsTUFBTSxFQUFFLEdBQUcsV0FBVyxFQUFhLENBQUE7QUFHbkMsTUFBTSxVQUFVLG9CQUFvQixDQUFDLE1BQXFEO0lBQ3hGLE9BQU8sTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFBO0FBQ25CLENBQUM7QUFFRCxNQUFNLFVBQVUsZUFBZSxDQUM3QixTQUVnQyxFQUNoQyxJQUFtQjtJQUVuQixPQUFPLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxFQUFF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Q0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsNEJBQUEsQ0FBQyxFQUFhLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FDMUQsQ0FBQyxFQUVMO1NBQ0UsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFBO0lBRWQsTUFBTSxpQ0FDSiwwQkFBQSxVQUFVLEVBQ0csVUFBVSxDQUNuQixlQUFlLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQzNDLENBQUMsRUFFTDtTQUNFLE9BQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFFM0IsTUFBTSxpQ0FDSiwwQkFBQSxVQUFVLEVBQ0csVUFBVSxDQUNuQixlQUFlLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQ2pELENBQUMsRUFFTDtTQUNFLE9BQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFFM0IsTUFBTSxpQ0FDSiwwQkFBQSxVQUFVLEVBQ0csVUFBVSxDQUNuQixlQUFlLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQ2hELENBQUMsRUFFTDtTQUNFLE9BQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFFM0IsTUFBTSxpQ0FDSiwwQkFBQSxVQUFVLEVBQ0csVUFBVSxDQUNuQixlQUFlLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLHNCQUFBLENBQUMsRUFBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQ3pELENBQUMsRUFFTDtTQUNFLE9BQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFDN0IsQ0FBQyxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFN0b3JlV2hlcmVGaWx0ZXIsIFdoZXJlIH0gZnJvbSBcIkBlZmZlY3QtYXBwL2luZnJhL3NlcnZpY2VzL1N0b3JlXCJcbmltcG9ydCB7IG1ha2VGaWx0ZXJzIH0gZnJvbSBcIi4uLy4uL2ZpbHRlci5qc1wiXG5pbXBvcnQgeyBjb2RlRmlsdGVyIH0gZnJvbSBcIi4vdXRpbHMuanNcIlxuXG5jb25zdCBzb21ldGhpbmdzID0gW1xuICB7IGE6IDEsIGI6IFwiYlwiLCBjOiBbXCJjXCJdLCBkOiBbeyBhOiBcImEyXCIsIGI6IDEgfSwgeyBhOiBcImFcIiwgYjogMSB9XSwgaWQ6IFwiMVwiIH0sXG4gIHsgYTogMiwgYjogXCJiMlwiLCBjOiBbXCJjMlwiXSwgZDogW3sgYTogXCJhNFwiLCBiOiAyIH0sIHsgYTogXCJhNVwiLCBiOiAyIH1dLCBpZDogXCIyXCIgfVxuXSBzYXRpc2ZpZXMgcmVhZG9ubHkgU29tZXRoaW5nW11cblxuY29uc3QgZl8gPSBtYWtlRmlsdGVyczxTb21ldGhpbmc+KClcbmV4cG9ydCB0eXBlIFNvbWV0aGluZ1doZXJlRmlsdGVyID0gdHlwZW9mIGZfXG5cbmV4cG9ydCBmdW5jdGlvbiBtYWtlU29tZXRoaW5nRmlsdGVyXyhmaWx0ZXI6IChmOiBTb21ldGhpbmdXaGVyZUZpbHRlcikgPT4gU3RvcmVXaGVyZUZpbHRlcikge1xuICByZXR1cm4gZmlsdGVyKGZfKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc29tZXRoaW5nc1doZXJlKFxuICBtYWtlV2hlcmU6IChcbiAgICBmOiBTb21ldGhpbmdXaGVyZUZpbHRlclxuICApID0+IFdoZXJlIHwgW1doZXJlLCAuLi5XaGVyZVtdXSxcbiAgbW9kZT86IFwib3JcIiB8IFwiYW5kXCJcbikge1xuICByZXR1cm4gbWFrZVNvbWV0aGluZ0ZpbHRlcl8oKGYpID0+IHtcbiAgICBjb25zdCBtID0gbWFrZVdoZXJlID8gbWFrZVdoZXJlKGYpIDogW11cbiAgICByZXR1cm4gKHtcbiAgICAgIG1vZGUsXG4gICAgICB3aGVyZTogKEFycmF5LmlzQXJyYXkobSkgPyBtIGFzIHVua25vd24gYXMgW1doZXJlLCAuLi5XaGVyZVtdXSA6IFttXSkgYXMgcmVhZG9ubHkgW1doZXJlLCAuLi5XaGVyZVtdXVxuICAgIH0pXG4gIH0pXG59XG5cbnR5cGUgU29tZXRoaW5nRWxzZSA9IHtcbiAgYTogc3RyaW5nXG4gIGI6IG51bWJlclxufVxuXG50eXBlIFNvbWV0aGluZyA9IHtcbiAgYTogbnVtYmVyXG4gIGlkOiBzdHJpbmdcbiAgYjogc3RyaW5nXG4gIGM6IHJlYWRvbmx5IHN0cmluZ1tdXG4gIGQ6IHJlYWRvbmx5IFNvbWV0aGluZ0Vsc2VbXVxufVxuXG50ZXN0KFwid29ya3NcIiwgKCkgPT4ge1xuICBleHBlY3QoXG4gICAgc29tZXRoaW5nc1xuICAgICAgLmZpbHRlck1hcChjb2RlRmlsdGVyKFxuICAgICAgICBzb21ldGhpbmdzV2hlcmUoKF8pID0+IF8oXCJiXCIsIChfKSA9PiBcImIyXCIpKVxuICAgICAgKSlcbiAgICAgIC50b0FycmF5XG4gIClcbiAgICAudG9FcXVhbChbc29tZXRoaW5nc1sxXV0pXG5cbiAgZXhwZWN0KFxuICAgIHNvbWV0aGluZ3NcbiAgICAgIC5maWx0ZXJNYXAoY29kZUZpbHRlcihcbiAgICAgICAgc29tZXRoaW5nc1doZXJlKChfKSA9PiBfKFwiYlwiLCAoXykgPT4gXy4kY29udGFpbnMoXCJiXCIpKSlcbiAgICAgICkpXG4gICAgICAudG9BcnJheVxuICApXG4gICAgLnRvRXF1YWwoW3NvbWV0aGluZ3NbMF0sIHNvbWV0aGluZ3NbMV1dKVxuXG4gIGV4cGVjdChcbiAgICBzb21ldGhpbmdzXG4gICAgICAuZmlsdGVyTWFwKGNvZGVGaWx0ZXIoXG4gICAgICAgIHNvbWV0aGluZ3NXaGVyZSgoXykgPT4gXyhcImJcIiwgKF8pID0+IF8uJGNvbnRhaW5zKFwiMlwiKSkpXG4gICAgICApKVxuICAgICAgLnRvQXJyYXlcbiAgKVxuICAgIC50b0VxdWFsKFtzb21ldGhpbmdzWzFdXSlcblxuICBleHBlY3QoXG4gICAgc29tZXRoaW5nc1xuICAgICAgLmZpbHRlck1hcChjb2RlRmlsdGVyKFxuICAgICAgICBzb21ldGhpbmdzV2hlcmUoKF8pID0+IF8oXCJiXCIsIChfKSA9PiBfLiRlbmRzV2l0aChcImJcIikpKVxuICAgICAgKSlcbiAgICAgIC50b0FycmF5XG4gIClcbiAgICAudG9FcXVhbChbc29tZXRoaW5nc1swXV0pXG5cbiAgZXhwZWN0KFxuICAgIHNvbWV0aGluZ3NcbiAgICAgIC5maWx0ZXJNYXAoY29kZUZpbHRlcihcbiAgICAgICAgc29tZXRoaW5nc1doZXJlKChfKSA9PiBfKFwiYlwiLCAoXykgPT4gXy4kZW5kc1dpdGgoXCIyXCIpKSlcbiAgICAgICkpXG4gICAgICAudG9BcnJheVxuICApXG4gICAgLnRvRXF1YWwoW3NvbWV0aGluZ3NbMV1dKVxuXG4gIGV4cGVjdChcbiAgICBzb21ldGhpbmdzXG4gICAgICAuZmlsdGVyTWFwKGNvZGVGaWx0ZXIoXG4gICAgICAgIHNvbWV0aGluZ3NXaGVyZSgoXykgPT4gXyhcImJcIiwgKF8pID0+IF8uJHN0YXJ0c1dpdGgoXCJiXCIpKSlcbiAgICAgICkpXG4gICAgICAudG9BcnJheVxuICApXG4gICAgLnRvRXF1YWwoW3NvbWV0aGluZ3NbMF0sIHNvbWV0aGluZ3NbMV1dKVxuXG4gIGV4cGVjdChcbiAgICBzb21ldGhpbmdzXG4gICAgICAuZmlsdGVyTWFwKGNvZGVGaWx0ZXIoXG4gICAgICAgIHNvbWV0aGluZ3NXaGVyZSgoXykgPT4gXyhcImJcIiwgKF8pID0+IF8uJHN0YXJ0c1dpdGgoXCIyXCIpKSlcbiAgICAgICkpXG4gICAgICAudG9BcnJheVxuICApXG4gICAgLnRvRXF1YWwoW10pXG5cbiAgZXhwZWN0KFxuICAgIHNvbWV0aGluZ3NcbiAgICAgIC5maWx0ZXJNYXAoY29kZUZpbHRlcihcbiAgICAgICAgc29tZXRoaW5nc1doZXJlKChfKSA9PiBfKFwiYlwiLCAoXykgPT4gXCJiXCIpKVxuICAgICAgKSlcbiAgICAgIC50b0FycmF5XG4gIClcbiAgICAudG9FcXVhbChbc29tZXRoaW5nc1swXV0pXG5cbiAgZXhwZWN0KFxuICAgIHNvbWV0aGluZ3NcbiAgICAgIC5maWx0ZXJNYXAoY29kZUZpbHRlcihcbiAgICAgICAgc29tZXRoaW5nc1doZXJlKChfKSA9PiBfKFwiZC4tMS5hXCIsIChfKSA9PiBcImE1XCIpKVxuICAgICAgKSlcbiAgICAgIC50b0FycmF5XG4gIClcbiAgICAudG9FcXVhbChbc29tZXRoaW5nc1sxXV0pXG5cbiAgZXhwZWN0KFxuICAgIHNvbWV0aGluZ3NcbiAgICAgIC5maWx0ZXJNYXAoY29kZUZpbHRlcihcbiAgICAgICAgc29tZXRoaW5nc1doZXJlKChfKSA9PiBfKFwiZC4tMS5hXCIsIChfKSA9PiBcImFcIikpXG4gICAgICApKVxuICAgICAgLnRvQXJyYXlcbiAgKVxuICAgIC50b0VxdWFsKFtzb21ldGhpbmdzWzBdXSlcblxuICBleHBlY3QoXG4gICAgc29tZXRoaW5nc1xuICAgICAgLmZpbHRlck1hcChjb2RlRmlsdGVyKFxuICAgICAgICBzb21ldGhpbmdzV2hlcmUoKF8pID0+IF8oXCJkLi0xLmFcIiwgKF8pID0+IF8uJGlzbnQoXCJhXCIpKSlcbiAgICAgICkpXG4gICAgICAudG9BcnJheVxuICApXG4gICAgLnRvRXF1YWwoW3NvbWV0aGluZ3NbMV1dKVxufSlcbiJdfQ==
@@ -1 +1 @@
1
- cc2e90554066973e1b31534d5490d33b59233503ebcbafddd5483cecb7c817dd
1
+ 20378cb1c31dd43c775c6044789dd947cb08ce40f2804afd1623ec87cfe2e4ea
@@ -67,4 +67,4 @@ export const makeMap = tsplus_module_2.sync(() => {
67
67
  */
68
68
  export class ContextMap extends tsplus_module_1.TagClass() {
69
69
  }
70
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL19zcmMvc2VydmljZXMvU3RvcmUvc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQW1GQTs7O0dBR0c7QUFDSCxNQUFNLE9BQWdCLFVBQVcsU0FBUSxnQkFBQSxRQUFRLEVBQWM7Q0FNOUQ7QUFFRDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxxQkFBWSxHQUFlLEVBQUU7SUFDbEQsTUFBTSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQWtCLENBQUE7SUFDdkMsTUFBTSxPQUFPLEdBQUcsQ0FBQyxFQUFVLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUE7SUFDN0MsTUFBTSxPQUFPLEdBQUcsQ0FBQyxFQUFVLEVBQUUsSUFBd0IsRUFBRSxFQUFFO1FBQ3ZELElBQUksS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFBO0lBQzdELENBQUMsQ0FBQTtJQUVELE1BQU0sV0FBVyxHQUFHLElBQUksR0FBRyxFQUd4QixDQUFBO0lBRUgsTUFBTSxXQUFXLEdBQUcsSUFBSSxHQUFHLEVBR3hCLENBQUE7SUFFSCxNQUFNLFlBQVksR0FBRyxDQUNuQixDQUFrQixFQUNsQixFQUErQixFQUMvQixFQUFFO1FBQ0YsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUE7UUFDdEIsT0FBTyxFQUFFLENBQUE7SUFDWCxDQUFDLENBQUE7SUFFRCxNQUFNLFNBQVMsR0FBYztRQUMzQiwrRUFBK0U7UUFDL0UsK0hBQStIO1FBQy9ILEdBQUcsRUFBRSxLQUFLO1FBQ1YsS0FBSyxFQUFFO1lBQ0wsY0FBYyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLFlBQVksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxLQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNwRyxlQUFlLEVBQUUsQ0FBQyxPQUFPLEVBQUUsRUFBRTtnQkFDM0IsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO29CQUNyRCxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLEtBQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUE7b0JBQzVDLE9BQU8sSUFBSSxDQUFBO2dCQUNiLENBQUMsRUFBRSxFQUFTLENBQUMsQ0FBQTtZQUNmLENBQUM7WUFDRCxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFPLEVBQUU7Z0JBQzFCLE1BQU0sQ0FBQyxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUE7Z0JBQ2hDLElBQUksQ0FBQyxFQUFFO29CQUNMLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUE7b0JBQ2xCLElBQUksQ0FBQyxFQUFFO3dCQUNMLGtDQUFrQzt3QkFDbEMsT0FBTyxDQUFDLENBQUE7cUJBQ1Q7eUJBQU07d0JBQ0wsTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQTt3QkFDOUIsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUE7d0JBQ1osT0FBTyxFQUFFLENBQUE7cUJBQ1Y7aUJBQ0Y7cUJBQU07b0JBQ0wsTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQTtvQkFDOUIsV0FBVyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtvQkFDMUMsT0FBTyxFQUFFLENBQUE7aUJBQ1Y7WUFDSCxDQUFDO1NBQ0Y7S0FDRixDQUFBO0lBRUQsT0FBTztRQUNMLEdBQUcsRUFBRSxPQUFPO1FBQ1osR0FBRyxFQUFFLE9BQU87UUFDWixTQUFTO0tBQ1YsQ0FBQTtBQUNILENBQUMsQ0FBQyxDQUFBO0FBRUY7OztHQUdHO0FBQ0gsTUFBTSxPQUFnQixVQUFXLFNBQVEsZ0JBQUEsUUFBUSxFQUFjO0NBSTlEIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHR5cGUgeyBVbmlxdWVLZXkgfSBmcm9tIFwiQGF6dXJlL2Nvc21vc1wiXG5pbXBvcnQgdHlwZSB7IFBhcnNlciwgUGFyc2VyRW52IH0gZnJvbSBcIkBlZmZlY3QtYXBwL3NjaGVtYS9jdXN0b20vUGFyc2VyXCJcblxuaW1wb3J0IHR5cGUgeyBUaGVzZSB9IGZyb20gXCJAZWZmZWN0LWFwcC9wcmVsdWRlL3NjaGVtYVwiXG5pbXBvcnQgdHlwZSB7IE9wdGltaXN0aWNDb25jdXJyZW5jeUV4Y2VwdGlvbiB9IGZyb20gXCIuLi8uLi9lcnJvcnMuanNcIlxuXG5leHBvcnQgdHlwZSBTdG9yZUNvbmZpZzxFPiA9IHtcbiAgdW5pcXVlS2V5cz86IFVuaXF1ZUtleVtdXG4gIG1heEJ1bGtTaXplPzogbnVtYmVyXG4gIHBhcnRpdGlvblZhbHVlOiAoZTogRSkgPT4gc3RyaW5nIHwgdW5kZWZpbmVkXG4gIGFsbG93TmFtZXNwYWNlPzogKG5hbWVzcGFjZTogc3RyaW5nKSA9PiBib29sZWFuXG59XG5cbmV4cG9ydCB0eXBlIFN1cHBvcnRlZFZhbHVlcyA9IHN0cmluZyB8IGJvb2xlYW4gfCBudW1iZXIgfCBudWxsXG5leHBvcnQgdHlwZSBTdXBwb3J0ZWRWYWx1ZXMyID0gc3RyaW5nIHwgYm9vbGVhbiB8IG51bWJlclxuXG4vLyBkZWZhdWx0IGlzIGVxXG5leHBvcnQgdHlwZSBXaGVyZSA9XG4gIHwgeyBrZXk6IHN0cmluZzsgdD86IFwiZXFcIiB8IFwibm90LWVxXCI7IHZhbHVlOiBTdXBwb3J0ZWRWYWx1ZXMgfVxuICB8IHsga2V5OiBzdHJpbmc7IHQ6IFwiZ3RcIiB8IFwibHRcIiB8IFwiZ3RlXCIgfCBcImx0ZVwiOyB2YWx1ZTogU3VwcG9ydGVkVmFsdWVzMiB9XG4gIHwgeyBrZXk6IHN0cmluZzsgdDogXCJjb250YWluc1wiIHwgXCJzdGFydHMtd2l0aFwiIHwgXCJlbmRzLXdpdGhcIjsgdmFsdWU6IHN0cmluZyB9XG4gIHwgeyBrZXk6IHN0cmluZzsgdDogXCJpbmNsdWRlc1wiIHwgXCJub3QtaW5jbHVkZXNcIjsgdmFsdWU6IHN0cmluZyB9XG4gIHwge1xuICAgIGtleTogc3RyaW5nXG4gICAgdDogXCJpblwiIHwgXCJub3QtaW5cIlxuICAgIHZhbHVlOiByZWFkb25seSAoU3VwcG9ydGVkVmFsdWVzKVtdXG4gIH1cblxuLy8gZGVmYXVsdCBpcyB3aGVyZVxuZXhwb3J0IHR5cGUgU3RvcmVXaGVyZUZpbHRlciA9IHtcbiAgdHlwZT86IFwid2hlcmVcIlxuICBtb2RlPzogXCJhbmRcIiB8IFwib3JcIiAvLyBkZWZhdWx0IGlzIGFuZFxuICB3aGVyZTogcmVhZG9ubHkgW1xuICAgIFdoZXJlLFxuICAgIC4uLihXaGVyZVtdKVxuICBdXG59XG5leHBvcnQgdHlwZSBMZWdhY3lGaWx0ZXI8RT4gPVxuICB8IHsgYnk6IGtleW9mIEU7IHR5cGU6IFwic3RhcnRzV2l0aFwiOyB2YWx1ZTogYW55IH1cbiAgfCB7IGJ5OiBrZXlvZiBFOyB0eXBlOiBcImVuZHNXaXRoXCI7IHZhbHVlOiBhbnkgfVxuICB8IHsgYnk6IGtleW9mIEU7IHR5cGU6IFwiY29udGFpbnNcIjsgdmFsdWU6IGFueSB9XG5leHBvcnQgdHlwZSBKb2luRmluZEZpbHRlciA9IHtcbiAgdHlwZTogXCJqb2luX2ZpbmRcIlxuICBrZXlzOiByZWFkb25seSBzdHJpbmdbXSAvKiB2YWx1ZSBwYXRocyBvZiBFICovXG4gIHZhbHVlS2V5OiBzdHJpbmcgLyogdmFsdWUgcGF0aHMgb2YgRVtrZXlzXVt2YWx1ZUtleV0gKi9cbiAgdmFsdWU6IGFueSAvKiB2YWx1ZSBwYXRoW3ZhbHVlS2V5XSBvZiBFICovXG59XG5leHBvcnQgdHlwZSBGaWx0ZXI8RT4gPVxuICB8IEpvaW5GaW5kRmlsdGVyXG4gIHwgU3RvcmVXaGVyZUZpbHRlclxuICB8IExlZ2FjeUZpbHRlcjxFPlxuXG5leHBvcnQgdHlwZSBGaWx0ZXJKb2luU2VsZWN0ID0ge1xuICB0eXBlOiBcImZpbHRlcl9qb2luX3NlbGVjdFwiXG4gIGtleXM6IHJlYWRvbmx5IHN0cmluZ1tdIC8qIHZhbHVlIHBhdGhzIG9mIEUgKi9cbiAgdmFsdWVLZXk6IHN0cmluZyAvKiB2YWx1ZSBwYXRocyBvZiBFW2tleXNdW3ZhbHVlS2V5XSAqL1xuICB2YWx1ZTogYW55IC8qIHZhbHVlIHBhdGhbdmFsdWVLZXldIG9mIEUgKi9cbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdG9yZTxQTSBleHRlbmRzIFBlcnNpc3RlbmNlTW9kZWxUeXBlPElkPiwgSWQgZXh0ZW5kcyBzdHJpbmc+IHtcbiAgYWxsOiBFZmZlY3Q8bmV2ZXIsIG5ldmVyLCBQTVtdPlxuICBmaWx0ZXI6IChcbiAgICBmaWx0ZXI6IEZpbHRlcjxQTT4sXG4gICAgY3Vyc29yPzogeyBsaW1pdD86IG51bWJlcjsgc2tpcD86IG51bWJlciB9XG4gICkgPT4gRWZmZWN0PG5ldmVyLCBuZXZlciwgUE1bXT5cbiAgZmlsdGVySm9pblNlbGVjdDogPFQgZXh0ZW5kcyBvYmplY3Q+KFxuICAgIGZpbHRlcjogRmlsdGVySm9pblNlbGVjdFxuICApID0+IEVmZmVjdDxuZXZlciwgbmV2ZXIsIChUICYgeyBfcm9vdElkOiBzdHJpbmcgfSlbXT5cbiAgZmluZDogKGlkOiBJZCkgPT4gRWZmZWN0PG5ldmVyLCBuZXZlciwgT3B0aW9uPFBNPj5cbiAgc2V0OiAoZTogUE0pID0+IEVmZmVjdDxuZXZlciwgT3B0aW1pc3RpY0NvbmN1cnJlbmN5RXhjZXB0aW9uLCBQTT5cbiAgYmF0Y2hTZXQ6IChcbiAgICBpdGVtczogTm9uRW1wdHlSZWFkb25seUFycmF5PFBNPlxuICApID0+IEVmZmVjdDxuZXZlciwgT3B0aW1pc3RpY0NvbmN1cnJlbmN5RXhjZXB0aW9uLCBOb25FbXB0eVJlYWRvbmx5QXJyYXk8UE0+PlxuICBidWxrU2V0OiAoXG4gICAgaXRlbXM6IE5vbkVtcHR5UmVhZG9ubHlBcnJheTxQTT5cbiAgKSA9PiBFZmZlY3Q8bmV2ZXIsIE9wdGltaXN0aWNDb25jdXJyZW5jeUV4Y2VwdGlvbiwgTm9uRW1wdHlSZWFkb25seUFycmF5PFBNPj5cbiAgLyoqXG4gICAqIFJlcXVpcmVzIHRoZSBQTSB0eXBlLCBub3QgSWQsIGJlY2F1c2UgdmFyaW91cyBzdG9yZXMgbWF5IG5lZWQgdG8gY2FsY3VsYXRlIGUuZyBwYXJ0aXRpb24ga2V5cy5cbiAgICovXG4gIHJlbW92ZTogKGU6IFBNKSA9PiBFZmZlY3Q8bmV2ZXIsIG5ldmVyLCB2b2lkPlxufVxuXG4vKipcbiAqIEB0c3BsdXMgdHlwZSBTdG9yZU1ha2VyXG4gKiBAdHNwbHVzIGNvbXBhbmlvbiBTdG9yZU1ha2VyLk9wc1xuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgU3RvcmVNYWtlciBleHRlbmRzIFRhZ0NsYXNzPFN0b3JlTWFrZXI+KCkge1xuICBhYnN0cmFjdCBtYWtlOiA8UE0gZXh0ZW5kcyBQZXJzaXN0ZW5jZU1vZGVsVHlwZTxJZD4sIElkIGV4dGVuZHMgc3RyaW5nPihcbiAgICBuYW1lOiBzdHJpbmcsXG4gICAgc2VlZD86IEVmZmVjdDxuZXZlciwgbmV2ZXIsIEl0ZXJhYmxlPFBNPj4sXG4gICAgY29uZmlnPzogU3RvcmVDb25maWc8UE0+XG4gICkgPT4gRWZmZWN0PG5ldmVyLCBuZXZlciwgU3RvcmU8UE0sIElkPj5cbn1cblxuLyoqXG4gKiBAdHNwbHVzIHN0YXRpYyBDb250ZXh0TWFwLk9wcyBNYWtlXG4gKi9cbmV4cG9ydCBjb25zdCBtYWtlTWFwID0gRWZmZWN0LnN5bmMoKCk6IENvbnRleHRNYXAgPT4ge1xuICBjb25zdCBldGFncyA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KClcbiAgY29uc3QgZ2V0RXRhZyA9IChpZDogc3RyaW5nKSA9PiBldGFncy5nZXQoaWQpXG4gIGNvbnN0IHNldEV0YWcgPSAoaWQ6IHN0cmluZywgZVRhZzogc3RyaW5nIHwgdW5kZWZpbmVkKSA9PiB7XG4gICAgZVRhZyA9PT0gdW5kZWZpbmVkID8gZXRhZ3MuZGVsZXRlKGlkKSA6IGV0YWdzLnNldChpZCwgZVRhZylcbiAgfVxuXG4gIGNvbnN0IHBhcnNlZENhY2hlID0gbmV3IE1hcDxcbiAgICBQYXJzZXI8YW55LCBhbnksIGFueT4sXG4gICAgTWFwPHVua25vd24sIFRoZXNlLlRoZXNlPHVua25vd24sIHVua25vd24+PlxuICA+KClcblxuICBjb25zdCBwYXJzZXJDYWNoZSA9IG5ldyBNYXA8XG4gICAgUGFyc2VyPGFueSwgYW55LCBhbnk+LFxuICAgIChpOiBhbnkpID0+IFRoZXNlLlRoZXNlPGFueSwgYW55PlxuICA+KClcblxuICBjb25zdCBzZXRBbmRSZXR1cm4gPSA8SSwgRSwgQT4oXG4gICAgcDogUGFyc2VyPEksIEUsIEE+LFxuICAgIG5wOiAoaTogSSkgPT4gVGhlc2UuVGhlc2U8RSwgQT5cbiAgKSA9PiB7XG4gICAgcGFyc2VyQ2FjaGUuc2V0KHAsIG5wKVxuICAgIHJldHVybiBucFxuICB9XG5cbiAgY29uc3QgcGFyc2VyRW52OiBQYXJzZXJFbnYgPSB7XG4gICAgLy8gVE9ETzogbGF4OiB0cnVlIHdvdWxkIHR1cm4gb2ZmIHJlZmluZW1lbnQgY2hlY2tzLCBtYXkgaGVscCBvbiBsYXJnZSBwYXlsb2Fkc1xuICAgIC8vIGJ1dCBvZiBjb3Vyc2UgcmVtb3ZlcyBjb25maXJtaW5nIG9mIHZhbGlkYXRpb24gcnVsZXMgKHdoaWNoIG1heSBiZSBva2F5IGZvciBhIGRhdGFiYXNlIG93bmVkIGJ5IHRoZSBhcHAsIGFzIHdlIHdyaXRlIHNhZmVseSlcbiAgICBsYXg6IGZhbHNlLFxuICAgIGNhY2hlOiB7XG4gICAgICBnZXRPclNldFBhcnNlcjogKHApID0+IHBhcnNlckNhY2hlLmdldChwKSA/PyBzZXRBbmRSZXR1cm4ocCwgKGkpID0+IHBhcnNlckVudi5jYWNoZSEuZ2V0T3JTZXQoaSwgcCkpLFxuICAgICAgZ2V0T3JTZXRQYXJzZXJzOiAocGFyc2VycykgPT4ge1xuICAgICAgICByZXR1cm4gT2JqZWN0LmVudHJpZXMocGFyc2VycykucmVkdWNlKChwcmV2LCBbaywgdl0pID0+IHtcbiAgICAgICAgICBwcmV2W2tdID0gcGFyc2VyRW52LmNhY2hlIS5nZXRPclNldFBhcnNlcih2KVxuICAgICAgICAgIHJldHVybiBwcmV2XG4gICAgICAgIH0sIHt9IGFzIGFueSlcbiAgICAgIH0sXG4gICAgICBnZXRPclNldDogKGksIHBhcnNlKTogYW55ID0+IHtcbiAgICAgICAgY29uc3QgYyA9IHBhcnNlZENhY2hlLmdldChwYXJzZSlcbiAgICAgICAgaWYgKGMpIHtcbiAgICAgICAgICBjb25zdCBmID0gYy5nZXQoaSlcbiAgICAgICAgICBpZiAoZikge1xuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCIkJCQgY2FjaGUgaGl0XCIsIGkpXG4gICAgICAgICAgICByZXR1cm4gZlxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBuZiA9IHBhcnNlKGksIHBhcnNlckVudilcbiAgICAgICAgICAgIGMuc2V0KGksIG5mKVxuICAgICAgICAgICAgcmV0dXJuIG5mXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IG5mID0gcGFyc2UoaSwgcGFyc2VyRW52KVxuICAgICAgICAgIHBhcnNlZENhY2hlLnNldChwYXJzZSwgbmV3IE1hcChbW2ksIG5mXV0pKVxuICAgICAgICAgIHJldHVybiBuZlxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBnZXQ6IGdldEV0YWcsXG4gICAgc2V0OiBzZXRFdGFnLFxuICAgIHBhcnNlckVudlxuICB9XG59KVxuXG4vKipcbiAqIEB0c3BsdXMgdHlwZSBDb250ZXh0TWFwXG4gKiBAdHNwbHVzIGNvbXBhbmlvbiBDb250ZXh0TWFwLk9wc1xuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQ29udGV4dE1hcCBleHRlbmRzIFRhZ0NsYXNzPENvbnRleHRNYXA+KCkge1xuICBhYnN0cmFjdCBnZXQ6IChpZDogc3RyaW5nKSA9PiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgYWJzdHJhY3Qgc2V0OiAoaWQ6IHN0cmluZywgZVRhZzogc3RyaW5nIHwgdW5kZWZpbmVkKSA9PiB2b2lkXG4gIGFic3RyYWN0IHBhcnNlckVudjogUGFyc2VyRW52XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGVyc2lzdGVuY2VNb2RlbFR5cGU8SWQgZXh0ZW5kcyBzdHJpbmc+IHtcbiAgaWQ6IElkXG4gIF9ldGFnOiBzdHJpbmcgfCB1bmRlZmluZWRcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdG9yYWdlQ29uZmlnIHtcbiAgdXJsOiBDb25maWdTZWNyZXRcbiAgcHJlZml4OiBzdHJpbmdcbiAgZGJOYW1lOiBzdHJpbmdcbn1cbiJdfQ==
70
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL19zcmMvc2VydmljZXMvU3RvcmUvc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWtGQTs7O0dBR0c7QUFDSCxNQUFNLE9BQWdCLFVBQVcsU0FBUSxnQkFBQSxRQUFRLEVBQWM7Q0FNOUQ7QUFFRDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxxQkFBWSxHQUFlLEVBQUU7SUFDbEQsTUFBTSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQWtCLENBQUE7SUFDdkMsTUFBTSxPQUFPLEdBQUcsQ0FBQyxFQUFVLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUE7SUFDN0MsTUFBTSxPQUFPLEdBQUcsQ0FBQyxFQUFVLEVBQUUsSUFBd0IsRUFBRSxFQUFFO1FBQ3ZELElBQUksS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFBO0lBQzdELENBQUMsQ0FBQTtJQUVELE1BQU0sV0FBVyxHQUFHLElBQUksR0FBRyxFQUd4QixDQUFBO0lBRUgsTUFBTSxXQUFXLEdBQUcsSUFBSSxHQUFHLEVBR3hCLENBQUE7SUFFSCxNQUFNLFlBQVksR0FBRyxDQUNuQixDQUFrQixFQUNsQixFQUErQixFQUMvQixFQUFFO1FBQ0YsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUE7UUFDdEIsT0FBTyxFQUFFLENBQUE7SUFDWCxDQUFDLENBQUE7SUFFRCxNQUFNLFNBQVMsR0FBYztRQUMzQiwrRUFBK0U7UUFDL0UsK0hBQStIO1FBQy9ILEdBQUcsRUFBRSxLQUFLO1FBQ1YsS0FBSyxFQUFFO1lBQ0wsY0FBYyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLFlBQVksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxLQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNwRyxlQUFlLEVBQUUsQ0FBQyxPQUFPLEVBQUUsRUFBRTtnQkFDM0IsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO29CQUNyRCxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLEtBQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUE7b0JBQzVDLE9BQU8sSUFBSSxDQUFBO2dCQUNiLENBQUMsRUFBRSxFQUFTLENBQUMsQ0FBQTtZQUNmLENBQUM7WUFDRCxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFPLEVBQUU7Z0JBQzFCLE1BQU0sQ0FBQyxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUE7Z0JBQ2hDLElBQUksQ0FBQyxFQUFFO29CQUNMLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUE7b0JBQ2xCLElBQUksQ0FBQyxFQUFFO3dCQUNMLGtDQUFrQzt3QkFDbEMsT0FBTyxDQUFDLENBQUE7cUJBQ1Q7eUJBQU07d0JBQ0wsTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQTt3QkFDOUIsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUE7d0JBQ1osT0FBTyxFQUFFLENBQUE7cUJBQ1Y7aUJBQ0Y7cUJBQU07b0JBQ0wsTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQTtvQkFDOUIsV0FBVyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtvQkFDMUMsT0FBTyxFQUFFLENBQUE7aUJBQ1Y7WUFDSCxDQUFDO1NBQ0Y7S0FDRixDQUFBO0lBRUQsT0FBTztRQUNMLEdBQUcsRUFBRSxPQUFPO1FBQ1osR0FBRyxFQUFFLE9BQU87UUFDWixTQUFTO0tBQ1YsQ0FBQTtBQUNILENBQUMsQ0FBQyxDQUFBO0FBRUY7OztHQUdHO0FBQ0gsTUFBTSxPQUFnQixVQUFXLFNBQVEsZ0JBQUEsUUFBUSxFQUFjO0NBSTlEIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHR5cGUgeyBVbmlxdWVLZXkgfSBmcm9tIFwiQGF6dXJlL2Nvc21vc1wiXG5pbXBvcnQgdHlwZSB7IFBhcnNlciwgUGFyc2VyRW52IH0gZnJvbSBcIkBlZmZlY3QtYXBwL3NjaGVtYS9jdXN0b20vUGFyc2VyXCJcblxuaW1wb3J0IHR5cGUgeyBUaGVzZSB9IGZyb20gXCJAZWZmZWN0LWFwcC9wcmVsdWRlL3NjaGVtYVwiXG5pbXBvcnQgdHlwZSB7IE9wdGltaXN0aWNDb25jdXJyZW5jeUV4Y2VwdGlvbiB9IGZyb20gXCIuLi8uLi9lcnJvcnMuanNcIlxuXG5leHBvcnQgdHlwZSBTdG9yZUNvbmZpZzxFPiA9IHtcbiAgdW5pcXVlS2V5cz86IFVuaXF1ZUtleVtdXG4gIG1heEJ1bGtTaXplPzogbnVtYmVyXG4gIHBhcnRpdGlvblZhbHVlOiAoZTogRSkgPT4gc3RyaW5nIHwgdW5kZWZpbmVkXG4gIGFsbG93TmFtZXNwYWNlPzogKG5hbWVzcGFjZTogc3RyaW5nKSA9PiBib29sZWFuXG59XG5cbmV4cG9ydCB0eXBlIFN1cHBvcnRlZFZhbHVlcyA9IHN0cmluZyB8IGJvb2xlYW4gfCBudW1iZXIgfCBudWxsXG5leHBvcnQgdHlwZSBTdXBwb3J0ZWRWYWx1ZXMyID0gc3RyaW5nIHwgYm9vbGVhbiB8IG51bWJlclxuXG4vLyBkZWZhdWx0IGlzIGVxXG5leHBvcnQgdHlwZSBXaGVyZSA9XG4gIHwgeyBrZXk6IHN0cmluZzsgdD86IFwiZXFcIiB8IFwibm90LWVxXCI7IHZhbHVlOiBTdXBwb3J0ZWRWYWx1ZXMgfVxuICB8IHsga2V5OiBzdHJpbmc7IHQ6IFwiZ3RcIiB8IFwibHRcIiB8IFwiZ3RlXCIgfCBcImx0ZVwiOyB2YWx1ZTogU3VwcG9ydGVkVmFsdWVzMiB9XG4gIHwgeyBrZXk6IHN0cmluZzsgdDogXCJjb250YWluc1wiIHwgXCJzdGFydHMtd2l0aFwiIHwgXCJlbmRzLXdpdGhcIjsgdmFsdWU6IHN0cmluZyB9XG4gIHwge1xuICAgIGtleTogc3RyaW5nXG4gICAgdDogXCJpblwiIHwgXCJub3QtaW5cIlxuICAgIHZhbHVlOiByZWFkb25seSAoU3VwcG9ydGVkVmFsdWVzKVtdXG4gIH1cblxuLy8gZGVmYXVsdCBpcyB3aGVyZVxuZXhwb3J0IHR5cGUgU3RvcmVXaGVyZUZpbHRlciA9IHtcbiAgdHlwZT86IFwid2hlcmVcIlxuICBtb2RlPzogXCJhbmRcIiB8IFwib3JcIiAvLyBkZWZhdWx0IGlzIGFuZFxuICB3aGVyZTogcmVhZG9ubHkgW1xuICAgIFdoZXJlLFxuICAgIC4uLihXaGVyZVtdKVxuICBdXG59XG5leHBvcnQgdHlwZSBMZWdhY3lGaWx0ZXI8RT4gPVxuICB8IHsgYnk6IGtleW9mIEU7IHR5cGU6IFwic3RhcnRzV2l0aFwiOyB2YWx1ZTogYW55IH1cbiAgfCB7IGJ5OiBrZXlvZiBFOyB0eXBlOiBcImVuZHNXaXRoXCI7IHZhbHVlOiBhbnkgfVxuICB8IHsgYnk6IGtleW9mIEU7IHR5cGU6IFwiY29udGFpbnNcIjsgdmFsdWU6IGFueSB9XG5leHBvcnQgdHlwZSBKb2luRmluZEZpbHRlciA9IHtcbiAgdHlwZTogXCJqb2luX2ZpbmRcIlxuICBrZXlzOiByZWFkb25seSBzdHJpbmdbXSAvKiB2YWx1ZSBwYXRocyBvZiBFICovXG4gIHZhbHVlS2V5OiBzdHJpbmcgLyogdmFsdWUgcGF0aHMgb2YgRVtrZXlzXVt2YWx1ZUtleV0gKi9cbiAgdmFsdWU6IGFueSAvKiB2YWx1ZSBwYXRoW3ZhbHVlS2V5XSBvZiBFICovXG59XG5leHBvcnQgdHlwZSBGaWx0ZXI8RT4gPVxuICB8IEpvaW5GaW5kRmlsdGVyXG4gIHwgU3RvcmVXaGVyZUZpbHRlclxuICB8IExlZ2FjeUZpbHRlcjxFPlxuXG5leHBvcnQgdHlwZSBGaWx0ZXJKb2luU2VsZWN0ID0ge1xuICB0eXBlOiBcImZpbHRlcl9qb2luX3NlbGVjdFwiXG4gIGtleXM6IHJlYWRvbmx5IHN0cmluZ1tdIC8qIHZhbHVlIHBhdGhzIG9mIEUgKi9cbiAgdmFsdWVLZXk6IHN0cmluZyAvKiB2YWx1ZSBwYXRocyBvZiBFW2tleXNdW3ZhbHVlS2V5XSAqL1xuICB2YWx1ZTogYW55IC8qIHZhbHVlIHBhdGhbdmFsdWVLZXldIG9mIEUgKi9cbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdG9yZTxQTSBleHRlbmRzIFBlcnNpc3RlbmNlTW9kZWxUeXBlPElkPiwgSWQgZXh0ZW5kcyBzdHJpbmc+IHtcbiAgYWxsOiBFZmZlY3Q8bmV2ZXIsIG5ldmVyLCBQTVtdPlxuICBmaWx0ZXI6IChcbiAgICBmaWx0ZXI6IEZpbHRlcjxQTT4sXG4gICAgY3Vyc29yPzogeyBsaW1pdD86IG51bWJlcjsgc2tpcD86IG51bWJlciB9XG4gICkgPT4gRWZmZWN0PG5ldmVyLCBuZXZlciwgUE1bXT5cbiAgZmlsdGVySm9pblNlbGVjdDogPFQgZXh0ZW5kcyBvYmplY3Q+KFxuICAgIGZpbHRlcjogRmlsdGVySm9pblNlbGVjdFxuICApID0+IEVmZmVjdDxuZXZlciwgbmV2ZXIsIChUICYgeyBfcm9vdElkOiBzdHJpbmcgfSlbXT5cbiAgZmluZDogKGlkOiBJZCkgPT4gRWZmZWN0PG5ldmVyLCBuZXZlciwgT3B0aW9uPFBNPj5cbiAgc2V0OiAoZTogUE0pID0+IEVmZmVjdDxuZXZlciwgT3B0aW1pc3RpY0NvbmN1cnJlbmN5RXhjZXB0aW9uLCBQTT5cbiAgYmF0Y2hTZXQ6IChcbiAgICBpdGVtczogTm9uRW1wdHlSZWFkb25seUFycmF5PFBNPlxuICApID0+IEVmZmVjdDxuZXZlciwgT3B0aW1pc3RpY0NvbmN1cnJlbmN5RXhjZXB0aW9uLCBOb25FbXB0eVJlYWRvbmx5QXJyYXk8UE0+PlxuICBidWxrU2V0OiAoXG4gICAgaXRlbXM6IE5vbkVtcHR5UmVhZG9ubHlBcnJheTxQTT5cbiAgKSA9PiBFZmZlY3Q8bmV2ZXIsIE9wdGltaXN0aWNDb25jdXJyZW5jeUV4Y2VwdGlvbiwgTm9uRW1wdHlSZWFkb25seUFycmF5PFBNPj5cbiAgLyoqXG4gICAqIFJlcXVpcmVzIHRoZSBQTSB0eXBlLCBub3QgSWQsIGJlY2F1c2UgdmFyaW91cyBzdG9yZXMgbWF5IG5lZWQgdG8gY2FsY3VsYXRlIGUuZyBwYXJ0aXRpb24ga2V5cy5cbiAgICovXG4gIHJlbW92ZTogKGU6IFBNKSA9PiBFZmZlY3Q8bmV2ZXIsIG5ldmVyLCB2b2lkPlxufVxuXG4vKipcbiAqIEB0c3BsdXMgdHlwZSBTdG9yZU1ha2VyXG4gKiBAdHNwbHVzIGNvbXBhbmlvbiBTdG9yZU1ha2VyLk9wc1xuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgU3RvcmVNYWtlciBleHRlbmRzIFRhZ0NsYXNzPFN0b3JlTWFrZXI+KCkge1xuICBhYnN0cmFjdCBtYWtlOiA8UE0gZXh0ZW5kcyBQZXJzaXN0ZW5jZU1vZGVsVHlwZTxJZD4sIElkIGV4dGVuZHMgc3RyaW5nPihcbiAgICBuYW1lOiBzdHJpbmcsXG4gICAgc2VlZD86IEVmZmVjdDxuZXZlciwgbmV2ZXIsIEl0ZXJhYmxlPFBNPj4sXG4gICAgY29uZmlnPzogU3RvcmVDb25maWc8UE0+XG4gICkgPT4gRWZmZWN0PG5ldmVyLCBuZXZlciwgU3RvcmU8UE0sIElkPj5cbn1cblxuLyoqXG4gKiBAdHNwbHVzIHN0YXRpYyBDb250ZXh0TWFwLk9wcyBNYWtlXG4gKi9cbmV4cG9ydCBjb25zdCBtYWtlTWFwID0gRWZmZWN0LnN5bmMoKCk6IENvbnRleHRNYXAgPT4ge1xuICBjb25zdCBldGFncyA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KClcbiAgY29uc3QgZ2V0RXRhZyA9IChpZDogc3RyaW5nKSA9PiBldGFncy5nZXQoaWQpXG4gIGNvbnN0IHNldEV0YWcgPSAoaWQ6IHN0cmluZywgZVRhZzogc3RyaW5nIHwgdW5kZWZpbmVkKSA9PiB7XG4gICAgZVRhZyA9PT0gdW5kZWZpbmVkID8gZXRhZ3MuZGVsZXRlKGlkKSA6IGV0YWdzLnNldChpZCwgZVRhZylcbiAgfVxuXG4gIGNvbnN0IHBhcnNlZENhY2hlID0gbmV3IE1hcDxcbiAgICBQYXJzZXI8YW55LCBhbnksIGFueT4sXG4gICAgTWFwPHVua25vd24sIFRoZXNlLlRoZXNlPHVua25vd24sIHVua25vd24+PlxuICA+KClcblxuICBjb25zdCBwYXJzZXJDYWNoZSA9IG5ldyBNYXA8XG4gICAgUGFyc2VyPGFueSwgYW55LCBhbnk+LFxuICAgIChpOiBhbnkpID0+IFRoZXNlLlRoZXNlPGFueSwgYW55PlxuICA+KClcblxuICBjb25zdCBzZXRBbmRSZXR1cm4gPSA8SSwgRSwgQT4oXG4gICAgcDogUGFyc2VyPEksIEUsIEE+LFxuICAgIG5wOiAoaTogSSkgPT4gVGhlc2UuVGhlc2U8RSwgQT5cbiAgKSA9PiB7XG4gICAgcGFyc2VyQ2FjaGUuc2V0KHAsIG5wKVxuICAgIHJldHVybiBucFxuICB9XG5cbiAgY29uc3QgcGFyc2VyRW52OiBQYXJzZXJFbnYgPSB7XG4gICAgLy8gVE9ETzogbGF4OiB0cnVlIHdvdWxkIHR1cm4gb2ZmIHJlZmluZW1lbnQgY2hlY2tzLCBtYXkgaGVscCBvbiBsYXJnZSBwYXlsb2Fkc1xuICAgIC8vIGJ1dCBvZiBjb3Vyc2UgcmVtb3ZlcyBjb25maXJtaW5nIG9mIHZhbGlkYXRpb24gcnVsZXMgKHdoaWNoIG1heSBiZSBva2F5IGZvciBhIGRhdGFiYXNlIG93bmVkIGJ5IHRoZSBhcHAsIGFzIHdlIHdyaXRlIHNhZmVseSlcbiAgICBsYXg6IGZhbHNlLFxuICAgIGNhY2hlOiB7XG4gICAgICBnZXRPclNldFBhcnNlcjogKHApID0+IHBhcnNlckNhY2hlLmdldChwKSA/PyBzZXRBbmRSZXR1cm4ocCwgKGkpID0+IHBhcnNlckVudi5jYWNoZSEuZ2V0T3JTZXQoaSwgcCkpLFxuICAgICAgZ2V0T3JTZXRQYXJzZXJzOiAocGFyc2VycykgPT4ge1xuICAgICAgICByZXR1cm4gT2JqZWN0LmVudHJpZXMocGFyc2VycykucmVkdWNlKChwcmV2LCBbaywgdl0pID0+IHtcbiAgICAgICAgICBwcmV2W2tdID0gcGFyc2VyRW52LmNhY2hlIS5nZXRPclNldFBhcnNlcih2KVxuICAgICAgICAgIHJldHVybiBwcmV2XG4gICAgICAgIH0sIHt9IGFzIGFueSlcbiAgICAgIH0sXG4gICAgICBnZXRPclNldDogKGksIHBhcnNlKTogYW55ID0+IHtcbiAgICAgICAgY29uc3QgYyA9IHBhcnNlZENhY2hlLmdldChwYXJzZSlcbiAgICAgICAgaWYgKGMpIHtcbiAgICAgICAgICBjb25zdCBmID0gYy5nZXQoaSlcbiAgICAgICAgICBpZiAoZikge1xuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCIkJCQgY2FjaGUgaGl0XCIsIGkpXG4gICAgICAgICAgICByZXR1cm4gZlxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBuZiA9IHBhcnNlKGksIHBhcnNlckVudilcbiAgICAgICAgICAgIGMuc2V0KGksIG5mKVxuICAgICAgICAgICAgcmV0dXJuIG5mXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IG5mID0gcGFyc2UoaSwgcGFyc2VyRW52KVxuICAgICAgICAgIHBhcnNlZENhY2hlLnNldChwYXJzZSwgbmV3IE1hcChbW2ksIG5mXV0pKVxuICAgICAgICAgIHJldHVybiBuZlxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBnZXQ6IGdldEV0YWcsXG4gICAgc2V0OiBzZXRFdGFnLFxuICAgIHBhcnNlckVudlxuICB9XG59KVxuXG4vKipcbiAqIEB0c3BsdXMgdHlwZSBDb250ZXh0TWFwXG4gKiBAdHNwbHVzIGNvbXBhbmlvbiBDb250ZXh0TWFwLk9wc1xuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQ29udGV4dE1hcCBleHRlbmRzIFRhZ0NsYXNzPENvbnRleHRNYXA+KCkge1xuICBhYnN0cmFjdCBnZXQ6IChpZDogc3RyaW5nKSA9PiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgYWJzdHJhY3Qgc2V0OiAoaWQ6IHN0cmluZywgZVRhZzogc3RyaW5nIHwgdW5kZWZpbmVkKSA9PiB2b2lkXG4gIGFic3RyYWN0IHBhcnNlckVudjogUGFyc2VyRW52XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGVyc2lzdGVuY2VNb2RlbFR5cGU8SWQgZXh0ZW5kcyBzdHJpbmc+IHtcbiAgaWQ6IElkXG4gIF9ldGFnOiBzdHJpbmcgfCB1bmRlZmluZWRcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdG9yYWdlQ29uZmlnIHtcbiAgdXJsOiBDb25maWdTZWNyZXRcbiAgcHJlZml4OiBzdHJpbmdcbiAgZGJOYW1lOiBzdHJpbmdcbn1cbiJdfQ==
@@ -1 +1 @@
1
- 6c73d6a53dba8e2732209764f5233c88f81e895dc2e244202cf05253b7fe38f0
1
+ 2ad2ca48c69fc592e81a7dea735173234df685d4464a17e30868181c4ee3959a
@@ -65,16 +65,12 @@ export function codeFilter(filter) {
65
65
  return gtCaseInsensitive(k, p.value);
66
66
  case "gte":
67
67
  return gteCaseInsensitive(k, p.value);
68
- case "includes":
69
- return k.includes(p.value);
70
- case "not-includes":
71
- return !k.includes(p.value);
72
68
  case "contains":
73
- return k.toLowerCase().includes((p.value).toLowerCase());
69
+ return k.toLowerCase().includes(p.value.toLowerCase());
74
70
  case "ends-with":
75
- return k.toLowerCase().endsWith((p.value).toLowerCase());
71
+ return k.toLowerCase().endsWith(p.value.toLowerCase());
76
72
  case "starts-with":
77
- return k.toLowerCase().startsWith((p.value).toLowerCase());
73
+ return k.toLowerCase().startsWith(p.value.toLowerCase());
78
74
  case "not-eq":
79
75
  return !compareCaseInsensitive(k, p.value);
80
76
  case "eq":
@@ -101,16 +97,12 @@ export function codeFilter(filter) {
101
97
  return gtCaseInsensitive(k, p.value);
102
98
  case "gte":
103
99
  return gteCaseInsensitive(k, p.value);
104
- case "includes":
105
- return k.includes(p.value);
106
- case "not-includes":
107
- return !k.includes(p.value);
108
100
  case "contains":
109
- return k.toLowerCase().includes((p.value).toLowerCase());
101
+ return k.toLowerCase().includes(p.value.toLowerCase());
110
102
  case "ends-with":
111
- return k.toLowerCase().endsWith((p.value).toLowerCase());
103
+ return k.toLowerCase().endsWith(p.value.toLowerCase());
112
104
  case "starts-with":
113
- return k.toLowerCase().startsWith((p.value).toLowerCase());
105
+ return k.toLowerCase().startsWith(p.value.toLowerCase());
114
106
  case "not-eq":
115
107
  return p.key.includes(".-1.")
116
108
  ? get(x, p.key.split(".-1.")[0])
@@ -175,4 +167,4 @@ function gteCaseInsensitive(valA, valB) {
175
167
  ? valA.toLowerCase() >= valB.toLowerCase()
176
168
  : valA >= valB;
177
169
  }
178
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9fc3JjL3NlcnZpY2VzL1N0b3JlL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLDJCQUEyQixDQUFBO0FBRS9DLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBSWhFLE9BQU8sVUFBVSxNQUFNLGFBQWEsQ0FBQTtBQUVwQyxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsQ0FDdEIsRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLEVBQUssRUFDZixFQUFFLENBQ0wsQ0FBQztJQUNDLEdBQUcsQ0FBQztJQUNKLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDO0NBQ3JCLENBQVEsQ0FBQTtBQUNYLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FDekIsQ0FBQyxJQUFZLEVBQUUsRUFBRSxDQUFDLENBQXdELENBQUksRUFBRSxPQUFrQixFQUFFLEVBQUUsQ0FDcEcsb0JBQVcsUUFBUSxDQUFDLEVBQUMsQ0FBQztJQUNwQixJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUU7UUFDWCxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQ04scUNBQUEsT0FBTyxFQUNXLEdBQUcsRUFBRSxDQUFDLElBQUksOEJBQThCLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUNyRixDQUFBO0tBQ0Y7SUFDRCxJQUFJLHVCQUFBLE9BQU8sQ0FBUyxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUU7UUFDdkQsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQ2IscUJBQVksSUFBSSw4QkFBOEIsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLEtB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QUFJLE9BQU8sSUFBSSxLQUFLLFFBQVE7UUFDekQsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1FBQzFDLENBQUMsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFBO0FBQ2xCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZXQgfSBmcm9tIFwiQGVmZmVjdC1hcHAvcHJlbHVkZS91dGlsc1wiXG5cbmltcG9ydCB7IE9wdGltaXN0aWNDb25jdXJyZW5jeUV4Y2VwdGlvbiB9IGZyb20gXCIuLi8uLi9lcnJvcnMuanNcIlxuXG5pbXBvcnQgdHlwZSB7IEZpbHRlciwgRmlsdGVySm9pblNlbGVjdCwgUGVyc2lzdGVuY2VNb2RlbFR5cGUsIFN1cHBvcnRlZFZhbHVlczIgfSBmcm9tIFwiLi9zZXJ2aWNlLmpzXCJcblxuaW1wb3J0IG9iamVjdEhhc2ggZnJvbSBcIm9iamVjdC1oYXNoXCJcblxuZXhwb3J0IGNvbnN0IG1ha2VFVGFnID0gPEUgZXh0ZW5kcyBQZXJzaXN0ZW5jZU1vZGVsVHlwZTxJZD4sIElkIGV4dGVuZHMgc3RyaW5nPihcbiAgeyBfZXRhZywgLi4uZSB9OiBFXG4pOiBFID0+XG4gICh7XG4gICAgLi4uZSxcbiAgICBfZXRhZzogb2JqZWN0SGFzaChlKVxuICB9KSBhcyBhbnlcbmV4cG9ydCBjb25zdCBtYWtlVXBkYXRlRVRhZyA9XG4gIChuYW1lOiBzdHJpbmcpID0+IDxFIGV4dGVuZHMgUGVyc2lzdGVuY2VNb2RlbFR5cGU8SWQ+LCBJZCBleHRlbmRzIHN0cmluZz4oZTogRSwgY3VycmVudDogT3B0aW9uPEU+KSA9PlxuICAgIEVmZmVjdC5nZW4oZnVuY3Rpb24qKCQpIHtcbiAgICAgIGlmIChlLl9ldGFnKSB7XG4gICAgICAgIHlpZWxkKiAkKFxuICAgICAgICAgIGN1cnJlbnRcbiAgICAgICAgICAgIC5lbmNhc2VJbkVmZmVjdCgoKSA9PiBuZXcgT3B0aW1pc3RpY0NvbmN1cnJlbmN5RXhjZXB0aW9uKG5hbWUsIGUuaWQsIFwiXCIsIGUuX2V0YWcpKVxuICAgICAgICApXG4gICAgICB9XG4gICAgICBpZiAoY3VycmVudC5pc1NvbWUoKSAmJiBjdXJyZW50LnZhbHVlLl9ldGFnICE9PSBlLl9ldGFnKSB7XG4gICAgICAgIHJldHVybiB5aWVsZCogJChcbiAgICAgICAgICBFZmZlY3QuZmFpbChuZXcgT3B0aW1pc3RpY0NvbmN1cnJlbmN5RXhjZXB0aW9uKG5hbWUsIGN1cnJlbnQudmFsdWUuaWQsIGN1cnJlbnQudmFsdWUuX2V0YWcsIGUuX2V0YWcpKVxuICAgICAgICApXG4gICAgICB9XG4gICAgICBjb25zdCBuZXdFID0gbWFrZUVUYWcoZSlcbiAgICAgIHJldHVybiBuZXdFXG4gICAgfSlcblxuZXhwb3J0IGZ1bmN0aW9uIGNvZGVGaWx0ZXI8RSBleHRlbmRzIHsgaWQ6IHN0cmluZyB9LCBORSBleHRlbmRzIEU+KGZpbHRlcjogRmlsdGVyPE5FPikge1xuICByZXR1cm4gKHg6IEUpID0+XG4gICAgZmlsdGVyLnR5cGUgPT09IFwic3RhcnRzV2l0aFwiXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgPyBsb3dlcmNhc2VJZlN0cmluZygoeCBhcyBhbnkpW2ZpbHRlci5ieV0pLnN0YXJ0c1dpdGgoZmlsdGVyLnZhbHVlLnRvTG93ZXJDYXNlKCkpXG4gICAgICAgID8gT3B0aW9uKHggYXMgdW5rbm93biBhcyBORSlcbiAgICAgICAgOiBPcHRpb24ubm9uZVxuICAgICAgOiBmaWx0ZXIudHlwZSA9PT0gXCJlbmRzV2l0aFwiXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgPyBsb3dlcmNhc2VJZlN0cmluZygoeCBhcyBhbnkpW2ZpbHRlci5ieV0pLmVuZHNXaXRoKGZpbHRlci52YWx1ZS50b0xvd2VyQ2FzZSgpKVxuICAgICAgICA/IE9wdGlvbih4IGFzIHVua25vd24gYXMgTkUpXG4gICAgICAgIDogT3B0aW9uLm5vbmVcbiAgICAgIDogZmlsdGVyLnR5cGUgPT09IFwiY29udGFpbnNcIlxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLWNhbGxcbiAgICAgID8gbG93ZXJjYXNlSWZTdHJpbmcoKHggYXMgYW55KVtmaWx0ZXIuYnldKS5pbmNsdWRlcyhmaWx0ZXIudmFsdWUudG9Mb3dlckNhc2UoKSlcbiAgICAgICAgPyBPcHRpb24oeCBhcyB1bmtub3duIGFzIE5FKVxuICAgICAgICA6IE9wdGlvbi5ub25lXG4gICAgICA6IGZpbHRlci50eXBlID09PSBcImpvaW5fZmluZFwiXG4gICAgICA/IGZpbHRlci5rZXlzLnNvbWUoKGspID0+IHtcbiAgICAgICAgICBjb25zdCB2YWx1ZSA9IGdldCh4LCBrKSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdXG4gICAgICAgICAgLy8gd2UgbWltaWMgdGhlIGJlaGF2aW9yIG9mIGNvc21vc2RiOyBpZiB0aGUgc2hhcGUgaW4gZGIgZG9lcyBub3QgbWF0Y2ggd2hhdCB3ZSdyZSBsb29raW5nIGZvciwgd2UgaW1hZ2luZSBmYWxzZSBoaXRcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdmFsdWVcbiAgICAgICAgICAgICYmIHZhbHVlLnNvbWUoKHYpID0+IGNvbXBhcmVDYXNlSW5zZW5zaXRpdmUodltmaWx0ZXIudmFsdWVLZXldLCBmaWx0ZXIudmFsdWUpKVxuICAgICAgICAgIClcbiAgICAgICAgfSlcbiAgICAgICAgPyBPcHRpb24oeCBhcyB1bmtub3duIGFzIE5FKVxuICAgICAgICA6IE9wdGlvbi5ub25lXG4gICAgICAvLyBUT0RPOiBzdXBwb3J0IG1peGVkIG9yL2FuZFxuICAgICAgOiBmaWx0ZXIubW9kZSA9PT0gXCJvclwiXG4gICAgICA/IGZpbHRlclxuICAgICAgICAgIC53aGVyZVxuICAgICAgICAgIC5zb21lKChwKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBrID0gZ2V0KHgsIHAua2V5KVxuICAgICAgICAgICAgc3dpdGNoIChwLnQpIHtcbiAgICAgICAgICAgICAgY2FzZSBcImluXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHAudmFsdWUuaW5jbHVkZXMoaylcbiAgICAgICAgICAgICAgY2FzZSBcIm5vdC1pblwiOlxuICAgICAgICAgICAgICAgIHJldHVybiAhcC52YWx1ZS5pbmNsdWRlcyhrKVxuICAgICAgICAgICAgICBjYXNlIFwibHRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gbHRDYXNlSW5zZW5zaXRpdmUoaywgcC52YWx1ZSlcbiAgICAgICAgICAgICAgY2FzZSBcImx0ZVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBsdGVDYXNlSW5zZW5zaXRpdmUoaywgcC52YWx1ZSlcbiAgICAgICAgICAgICAgY2FzZSBcImd0XCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGd0Q2FzZUluc2Vuc2l0aXZlKGssIHAudmFsdWUpXG4gICAgICAgICAgICAgIGNhc2UgXCJndGVcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gZ3RlQ2FzZUluc2Vuc2l0aXZlKGssIHAudmFsdWUpXG4gICAgICAgICAgICAgIGNhc2UgXCJpbmNsdWRlc1wiOlxuICAgICAgICAgICAgICAgIHJldHVybiAoayBhcyBBcnJheTxzdHJpbmc+KS5pbmNsdWRlcyhwLnZhbHVlKVxuICAgICAgICAgICAgICBjYXNlIFwibm90LWluY2x1ZGVzXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuICEoayBhcyBBcnJheTxzdHJpbmc+KS5pbmNsdWRlcyhwLnZhbHVlKVxuICAgICAgICAgICAgICBjYXNlIFwiY29udGFpbnNcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gKGsgYXMgc3RyaW5nKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKChwLnZhbHVlKS50b0xvd2VyQ2FzZSgpKVxuICAgICAgICAgICAgICBjYXNlIFwiZW5kcy13aXRoXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIChrIGFzIHN0cmluZykudG9Mb3dlckNhc2UoKS5lbmRzV2l0aCgocC52YWx1ZSkudG9Mb3dlckNhc2UoKSlcbiAgICAgICAgICAgICAgY2FzZSBcInN0YXJ0cy13aXRoXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIChrIGFzIHN0cmluZykudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKChwLnZhbHVlKS50b0xvd2VyQ2FzZSgpKVxuICAgICAgICAgICAgICBjYXNlIFwibm90LWVxXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuICFjb21wYXJlQ2FzZUluc2Vuc2l0aXZlKGssIHAudmFsdWUpXG4gICAgICAgICAgICAgIGNhc2UgXCJlcVwiOlxuICAgICAgICAgICAgICBjYXNlIHVuZGVmaW5lZDpcbiAgICAgICAgICAgICAgICByZXR1cm4gY29tcGFyZUNhc2VJbnNlbnNpdGl2ZShrLCBwLnZhbHVlKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgID8gT3B0aW9uKHggYXMgdW5rbm93biBhcyBORSlcbiAgICAgICAgOiBPcHRpb24ubm9uZVxuICAgICAgOiBmaWx0ZXJcbiAgICAgICAgICAud2hlcmVcbiAgICAgICAgICAuZXZlcnkoKHApID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGsgPSBnZXQoeCwgcC5rZXkpXG4gICAgICAgICAgICBzd2l0Y2ggKHAudCkge1xuICAgICAgICAgICAgICBjYXNlIFwiaW5cIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gcC52YWx1ZS5pbmNsdWRlcyhrKVxuICAgICAgICAgICAgICBjYXNlIFwibm90LWluXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuICFwLnZhbHVlLmluY2x1ZGVzKGspXG4gICAgICAgICAgICAgIGNhc2UgXCJsdFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBsdENhc2VJbnNlbnNpdGl2ZShrLCBwLnZhbHVlKVxuICAgICAgICAgICAgICBjYXNlIFwibHRlXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGx0ZUNhc2VJbnNlbnNpdGl2ZShrLCBwLnZhbHVlKVxuICAgICAgICAgICAgICBjYXNlIFwiZ3RcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gZ3RDYXNlSW5zZW5zaXRpdmUoaywgcC52YWx1ZSlcbiAgICAgICAgICAgICAgY2FzZSBcImd0ZVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBndGVDYXNlSW5zZW5zaXRpdmUoaywgcC52YWx1ZSlcbiAgICAgICAgICAgICAgY2FzZSBcImluY2x1ZGVzXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIChrIGFzIEFycmF5PHN0cmluZz4pLmluY2x1ZGVzKHAudmFsdWUpXG4gICAgICAgICAgICAgIGNhc2UgXCJub3QtaW5jbHVkZXNcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gIShrIGFzIEFycmF5PHN0cmluZz4pLmluY2x1ZGVzKHAudmFsdWUpXG4gICAgICAgICAgICAgIGNhc2UgXCJjb250YWluc1wiOlxuICAgICAgICAgICAgICAgIHJldHVybiAoayBhcyBzdHJpbmcpLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoKHAudmFsdWUpLnRvTG93ZXJDYXNlKCkpXG4gICAgICAgICAgICAgIGNhc2UgXCJlbmRzLXdpdGhcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gKGsgYXMgc3RyaW5nKS50b0xvd2VyQ2FzZSgpLmVuZHNXaXRoKChwLnZhbHVlKS50b0xvd2VyQ2FzZSgpKVxuICAgICAgICAgICAgICBjYXNlIFwic3RhcnRzLXdpdGhcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gKGsgYXMgc3RyaW5nKS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoKHAudmFsdWUpLnRvTG93ZXJDYXNlKCkpXG4gICAgICAgICAgICAgIGNhc2UgXCJub3QtZXFcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gcC5rZXkuaW5jbHVkZXMoXCIuLTEuXCIpXG4gICAgICAgICAgICAgICAgICA/IChnZXQoeCwgcC5rZXkuc3BsaXQoXCIuLTEuXCIpWzBdKSBhcyBhbnlbXSlcbiAgICAgICAgICAgICAgICAgICAgLy8gVE9ETzogb3IgdnMgYW5kXG4gICAgICAgICAgICAgICAgICAgIC5ldmVyeSgoXykgPT4gIWNvbXBhcmVDYXNlSW5zZW5zaXRpdmUoZ2V0KF8sIHAua2V5LnNwbGl0KFwiLi0xLlwiKVsxXSEpLCBwLnZhbHVlKSlcbiAgICAgICAgICAgICAgICAgIDogIWNvbXBhcmVDYXNlSW5zZW5zaXRpdmUoaywgcC52YWx1ZSlcbiAgICAgICAgICAgICAgY2FzZSBcImVxXCI6XG4gICAgICAgICAgICAgIGNhc2UgdW5kZWZpbmVkOlxuICAgICAgICAgICAgICAgIHJldHVybiBwLmtleS5pbmNsdWRlcyhcIi4tMS5cIilcbiAgICAgICAgICAgICAgICAgID8gKGdldCh4LCBwLmtleS5zcGxpdChcIi4tMS5cIilbMF0pIGFzIGFueVtdKVxuICAgICAgICAgICAgICAgICAgICAvLyBUT0RPOiBvciB2cyBhbmRcbiAgICAgICAgICAgICAgICAgICAgLnNvbWUoKF8pID0+IGNvbXBhcmVDYXNlSW5zZW5zaXRpdmUoZ2V0KF8sIHAua2V5LnNwbGl0KFwiLi0xLlwiKVsxXSEpLCBwLnZhbHVlKSlcbiAgICAgICAgICAgICAgICAgIDogY29tcGFyZUNhc2VJbnNlbnNpdGl2ZShrLCBwLnZhbHVlKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICA/IE9wdGlvbih4IGFzIHVua25vd24gYXMgTkUpXG4gICAgICA6IE9wdGlvbi5ub25lXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb2RlRmlsdGVySm9pblNlbGVjdDxFIGV4dGVuZHMgeyBpZDogc3RyaW5nIH0sIE5FPihcbiAgZmlsdGVyOiBGaWx0ZXJKb2luU2VsZWN0XG4pIHtcbiAgcmV0dXJuICh4OiBFKSA9PlxuICAgIGZpbHRlclxuICAgICAgLmtleXNcbiAgICAgIC5maWx0ZXJNYXAoKGspID0+IHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBnZXQoeCwgaylcbiAgICAgICAgLy8gd2UgbWltaWMgdGhlIGJlaGF2aW9yIG9mIGNvc21vc2RiOyBpZiB0aGUgc2hhcGUgaW4gZGIgZG9lcyBub3QgbWF0Y2ggd2hhdCB3ZSdyZSBsb29raW5nIGZvciwgd2UgaW1hZ2luZSBmYWxzZSBoaXRcbiAgICAgICAgcmV0dXJuIHZhbHVlXG4gICAgICAgICAgPyBPcHRpb24oXG4gICAgICAgICAgICAodmFsdWUgYXMgcmVhZG9ubHkgTkVbXSkuZmlsdGVyTWFwKCh2KSA9PlxuICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICAgICAgICBjb21wYXJlQ2FzZUluc2Vuc2l0aXZlKCh2IGFzIGFueSlbZmlsdGVyLnZhbHVlS2V5XSwgZmlsdGVyLnZhbHVlKVxuICAgICAgICAgICAgICAgID8gT3B0aW9uKHsgLi4udiwgX3Jvb3RJZDogeC5pZCB9KVxuICAgICAgICAgICAgICAgIDogT3B0aW9uLm5vbmVcbiAgICAgICAgICAgIClcbiAgICAgICAgICApXG4gICAgICAgICAgOiBPcHRpb24ubm9uZVxuICAgICAgfSlcbiAgICAgIC5mbGF0TWFwKChfKSA9PiBfKVxufVxuXG5mdW5jdGlvbiBsb3dlcmNhc2VJZlN0cmluZzxUPih2YWw6IFQpIHtcbiAgaWYgKHR5cGVvZiB2YWwgPT09IFwic3RyaW5nXCIpIHtcbiAgICByZXR1cm4gdmFsLnRvTG93ZXJDYXNlKClcbiAgfVxuICByZXR1cm4gdmFsXG59XG5cbmZ1bmN0aW9uIGNvbXBhcmVDYXNlSW5zZW5zaXRpdmUodmFsQTogdW5rbm93biwgdmFsQjogdW5rbm93bikge1xuICByZXR1cm4gdHlwZW9mIHZhbEIgPT09IFwic3RyaW5nXCIgJiYgdHlwZW9mIHZhbEEgPT09IFwic3RyaW5nXCJcbiAgICA/IHZhbEEudG9Mb3dlckNhc2UoKSA9PT0gdmFsQi50b0xvd2VyQ2FzZSgpXG4gICAgOiB2YWxBID09PSB2YWxCXG59XG5cbmZ1bmN0aW9uIGx0Q2FzZUluc2Vuc2l0aXZlKHZhbEE6IFN1cHBvcnRlZFZhbHVlczIsIHZhbEI6IFN1cHBvcnRlZFZhbHVlczIpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWxCID09PSBcInN0cmluZ1wiICYmIHR5cGVvZiB2YWxBID09PSBcInN0cmluZ1wiXG4gICAgPyB2YWxBLnRvTG93ZXJDYXNlKCkgPCB2YWxCLnRvTG93ZXJDYXNlKClcbiAgICA6IHZhbEEgPCB2YWxCXG59XG5cbmZ1bmN0aW9uIGx0ZUNhc2VJbnNlbnNpdGl2ZSh2YWxBOiBTdXBwb3J0ZWRWYWx1ZXMyLCB2YWxCOiBTdXBwb3J0ZWRWYWx1ZXMyKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsQiA9PT0gXCJzdHJpbmdcIiAmJiB0eXBlb2YgdmFsQSA9PT0gXCJzdHJpbmdcIlxuICAgID8gdmFsQS50b0xvd2VyQ2FzZSgpIDw9IHZhbEIudG9Mb3dlckNhc2UoKVxuICAgIDogdmFsQSA8PSB2YWxCXG59XG5cbmZ1bmN0aW9uIGd0Q2FzZUluc2Vuc2l0aXZlKHZhbEE6IFN1cHBvcnRlZFZhbHVlczIsIHZhbEI6IFN1cHBvcnRlZFZhbHVlczIpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWxCID09PSBcInN0cmluZ1wiICYmIHR5cGVvZiB2YWxBID09PSBcInN0cmluZ1wiXG4gICAgPyB2YWxBLnRvTG93ZXJDYXNlKCkgPiB2YWxCLnRvTG93ZXJDYXNlKClcbiAgICA6IHZhbEEgPiB2YWxCXG59XG5cbmZ1bmN0aW9uIGd0ZUNhc2VJbnNlbnNpdGl2ZSh2YWxBOiBTdXBwb3J0ZWRWYWx1ZXMyLCB2YWxCOiBTdXBwb3J0ZWRWYWx1ZXMyKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsQiA9PT0gXCJzdHJpbmdcIiAmJiB0eXBlb2YgdmFsQSA9PT0gXCJzdHJpbmdcIlxuICAgID8gdmFsQS50b0xvd2VyQ2FzZSgpID49IHZhbEIudG9Mb3dlckNhc2UoKVxuICAgIDogdmFsQSA+PSB2YWxCXG59XG4iXX0=
170
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9fc3JjL3NlcnZpY2VzL1N0b3JlL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLDJCQUEyQixDQUFBO0FBRS9DLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBSWhFLE9BQU8sVUFBVSxNQUFNLGFBQWEsQ0FBQTtBQUVwQyxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsQ0FDdEIsRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLEVBQUssRUFDZixFQUFFLENBQ0wsQ0FBQztJQUNDLEdBQUcsQ0FBQztJQUNKLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDO0NBQ3JCLENBQVEsQ0FBQTtBQUNYLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FDekIsQ0FBQyxJQUFZLEVBQUUsRUFBRSxDQUFDLENBQXdELENBQUksRUFBRSxPQUFrQixFQUFFLEVBQUUsQ0FDcEcsb0JBQVcsUUFBUSxDQUFDLEVBQUMsQ0FBQztJQUNwQixJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUU7UUFDWCxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQ04scUNBQUEsT0FBTyxFQUNXLEdBQUcsRUFBRSxDQUFDLElBQUksOEJBQThCLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUNyRixDQUFBO0tBQ0Y7SUFDRCxJQUFJLHVCQUFBLE9BQU8sQ0FBUyxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUU7UUFDdkQsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQ2IscUJBQVksSUFBSSw4QkFBOEIsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLEtB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QUFDLFdBQVcsRUFBRTtRQUN6QyxDQUFDLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQTtBQUNqQixDQUFDO0FBRUQsU0FBUyxrQkFBa0IsQ0FBQyxJQUFzQixFQUFFLElBQXNCO0lBQ3hFLE9BQU8sT0FBTyxJQUFJLEtBQUssUUFBUSxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVE7UUFDekQsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1FBQzFDLENBQUMsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFBO0FBQ2xCLENBQUM7QUFFRCxTQUFTLGlCQUFpQixDQUFDLElBQXNCLEVBQUUsSUFBc0I7SUFDdkUsT0FBTyxPQUFPLElBQUksS0FBSyxRQUFRLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUTtRQUN6RCxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUU7UUFDekMsQ0FBQyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUE7QUFDakIsQ0FBQztBQUVELFNBQVMsa0JBQWtCLENBQUMsSUFBc0IsRUFBRSxJQUFzQjtJQUN4RSxPQUFPLE9BQU8sSUFBSSxLQUFLLFFBQVEsSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRO1FBQ3pELENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtRQUMxQyxDQUFDLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQTtBQUNsQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZ2V0IH0gZnJvbSBcIkBlZmZlY3QtYXBwL3ByZWx1ZGUvdXRpbHNcIlxuXG5pbXBvcnQgeyBPcHRpbWlzdGljQ29uY3VycmVuY3lFeGNlcHRpb24gfSBmcm9tIFwiLi4vLi4vZXJyb3JzLmpzXCJcblxuaW1wb3J0IHR5cGUgeyBGaWx0ZXIsIEZpbHRlckpvaW5TZWxlY3QsIFBlcnNpc3RlbmNlTW9kZWxUeXBlLCBTdXBwb3J0ZWRWYWx1ZXMyIH0gZnJvbSBcIi4vc2VydmljZS5qc1wiXG5cbmltcG9ydCBvYmplY3RIYXNoIGZyb20gXCJvYmplY3QtaGFzaFwiXG5cbmV4cG9ydCBjb25zdCBtYWtlRVRhZyA9IDxFIGV4dGVuZHMgUGVyc2lzdGVuY2VNb2RlbFR5cGU8SWQ+LCBJZCBleHRlbmRzIHN0cmluZz4oXG4gIHsgX2V0YWcsIC4uLmUgfTogRVxuKTogRSA9PlxuICAoe1xuICAgIC4uLmUsXG4gICAgX2V0YWc6IG9iamVjdEhhc2goZSlcbiAgfSkgYXMgYW55XG5leHBvcnQgY29uc3QgbWFrZVVwZGF0ZUVUYWcgPVxuICAobmFtZTogc3RyaW5nKSA9PiA8RSBleHRlbmRzIFBlcnNpc3RlbmNlTW9kZWxUeXBlPElkPiwgSWQgZXh0ZW5kcyBzdHJpbmc+KGU6IEUsIGN1cnJlbnQ6IE9wdGlvbjxFPikgPT5cbiAgICBFZmZlY3QuZ2VuKGZ1bmN0aW9uKigkKSB7XG4gICAgICBpZiAoZS5fZXRhZykge1xuICAgICAgICB5aWVsZCogJChcbiAgICAgICAgICBjdXJyZW50XG4gICAgICAgICAgICAuZW5jYXNlSW5FZmZlY3QoKCkgPT4gbmV3IE9wdGltaXN0aWNDb25jdXJyZW5jeUV4Y2VwdGlvbihuYW1lLCBlLmlkLCBcIlwiLCBlLl9ldGFnKSlcbiAgICAgICAgKVxuICAgICAgfVxuICAgICAgaWYgKGN1cnJlbnQuaXNTb21lKCkgJiYgY3VycmVudC52YWx1ZS5fZXRhZyAhPT0gZS5fZXRhZykge1xuICAgICAgICByZXR1cm4geWllbGQqICQoXG4gICAgICAgICAgRWZmZWN0LmZhaWwobmV3IE9wdGltaXN0aWNDb25jdXJyZW5jeUV4Y2VwdGlvbihuYW1lLCBjdXJyZW50LnZhbHVlLmlkLCBjdXJyZW50LnZhbHVlLl9ldGFnLCBlLl9ldGFnKSlcbiAgICAgICAgKVxuICAgICAgfVxuICAgICAgY29uc3QgbmV3RSA9IG1ha2VFVGFnKGUpXG4gICAgICByZXR1cm4gbmV3RVxuICAgIH0pXG5cbmV4cG9ydCBmdW5jdGlvbiBjb2RlRmlsdGVyPEUgZXh0ZW5kcyB7IGlkOiBzdHJpbmcgfSwgTkUgZXh0ZW5kcyBFPihmaWx0ZXI6IEZpbHRlcjxORT4pIHtcbiAgcmV0dXJuICh4OiBFKSA9PlxuICAgIGZpbHRlci50eXBlID09PSBcInN0YXJ0c1dpdGhcIlxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgID8gbG93ZXJjYXNlSWZTdHJpbmcoKHggYXMgYW55KVtmaWx0ZXIuYnldKS5zdGFydHNXaXRoKGZpbHRlci52YWx1ZS50b0xvd2VyQ2FzZSgpKVxuICAgICAgICA/IE9wdGlvbih4IGFzIHVua25vd24gYXMgTkUpXG4gICAgICAgIDogT3B0aW9uLm5vbmVcbiAgICAgIDogZmlsdGVyLnR5cGUgPT09IFwiZW5kc1dpdGhcIlxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgID8gbG93ZXJjYXNlSWZTdHJpbmcoKHggYXMgYW55KVtmaWx0ZXIuYnldKS5lbmRzV2l0aChmaWx0ZXIudmFsdWUudG9Mb3dlckNhc2UoKSlcbiAgICAgICAgPyBPcHRpb24oeCBhcyB1bmtub3duIGFzIE5FKVxuICAgICAgICA6IE9wdGlvbi5ub25lXG4gICAgICA6IGZpbHRlci50eXBlID09PSBcImNvbnRhaW5zXCJcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1jYWxsXG4gICAgICA/IGxvd2VyY2FzZUlmU3RyaW5nKCh4IGFzIGFueSlbZmlsdGVyLmJ5XSkuaW5jbHVkZXMoZmlsdGVyLnZhbHVlLnRvTG93ZXJDYXNlKCkpXG4gICAgICAgID8gT3B0aW9uKHggYXMgdW5rbm93biBhcyBORSlcbiAgICAgICAgOiBPcHRpb24ubm9uZVxuICAgICAgOiBmaWx0ZXIudHlwZSA9PT0gXCJqb2luX2ZpbmRcIlxuICAgICAgPyBmaWx0ZXIua2V5cy5zb21lKChrKSA9PiB7XG4gICAgICAgICAgY29uc3QgdmFsdWUgPSBnZXQoeCwgaykgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXVxuICAgICAgICAgIC8vIHdlIG1pbWljIHRoZSBiZWhhdmlvciBvZiBjb3Ntb3NkYjsgaWYgdGhlIHNoYXBlIGluIGRiIGRvZXMgbm90IG1hdGNoIHdoYXQgd2UncmUgbG9va2luZyBmb3IsIHdlIGltYWdpbmUgZmFsc2UgaGl0XG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHZhbHVlXG4gICAgICAgICAgICAmJiB2YWx1ZS5zb21lKCh2KSA9PiBjb21wYXJlQ2FzZUluc2Vuc2l0aXZlKHZbZmlsdGVyLnZhbHVlS2V5XSwgZmlsdGVyLnZhbHVlKSlcbiAgICAgICAgICApXG4gICAgICAgIH0pXG4gICAgICAgID8gT3B0aW9uKHggYXMgdW5rbm93biBhcyBORSlcbiAgICAgICAgOiBPcHRpb24ubm9uZVxuICAgICAgLy8gVE9ETzogc3VwcG9ydCBtaXhlZCBvci9hbmRcbiAgICAgIDogZmlsdGVyLm1vZGUgPT09IFwib3JcIlxuICAgICAgPyBmaWx0ZXJcbiAgICAgICAgICAud2hlcmVcbiAgICAgICAgICAuc29tZSgocCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgayA9IGdldCh4LCBwLmtleSlcbiAgICAgICAgICAgIHN3aXRjaCAocC50KSB7XG4gICAgICAgICAgICAgIGNhc2UgXCJpblwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBwLnZhbHVlLmluY2x1ZGVzKGspXG4gICAgICAgICAgICAgIGNhc2UgXCJub3QtaW5cIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gIXAudmFsdWUuaW5jbHVkZXMoaylcbiAgICAgICAgICAgICAgY2FzZSBcImx0XCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGx0Q2FzZUluc2Vuc2l0aXZlKGssIHAudmFsdWUpXG4gICAgICAgICAgICAgIGNhc2UgXCJsdGVcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gbHRlQ2FzZUluc2Vuc2l0aXZlKGssIHAudmFsdWUpXG4gICAgICAgICAgICAgIGNhc2UgXCJndFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBndENhc2VJbnNlbnNpdGl2ZShrLCBwLnZhbHVlKVxuICAgICAgICAgICAgICBjYXNlIFwiZ3RlXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGd0ZUNhc2VJbnNlbnNpdGl2ZShrLCBwLnZhbHVlKVxuICAgICAgICAgICAgICBjYXNlIFwiY29udGFpbnNcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gKGsgYXMgc3RyaW5nKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKChwLnZhbHVlIGFzIHN0cmluZykudG9Mb3dlckNhc2UoKSlcbiAgICAgICAgICAgICAgY2FzZSBcImVuZHMtd2l0aFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiAoayBhcyBzdHJpbmcpLnRvTG93ZXJDYXNlKCkuZW5kc1dpdGgoKHAudmFsdWUgYXMgc3RyaW5nKS50b0xvd2VyQ2FzZSgpKVxuICAgICAgICAgICAgICBjYXNlIFwic3RhcnRzLXdpdGhcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gKGsgYXMgc3RyaW5nKS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoKHAudmFsdWUgYXMgc3RyaW5nKS50b0xvd2VyQ2FzZSgpKVxuICAgICAgICAgICAgICBjYXNlIFwibm90LWVxXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuICFjb21wYXJlQ2FzZUluc2Vuc2l0aXZlKGssIHAudmFsdWUpXG4gICAgICAgICAgICAgIGNhc2UgXCJlcVwiOlxuICAgICAgICAgICAgICBjYXNlIHVuZGVmaW5lZDpcbiAgICAgICAgICAgICAgICByZXR1cm4gY29tcGFyZUNhc2VJbnNlbnNpdGl2ZShrLCBwLnZhbHVlKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgID8gT3B0aW9uKHggYXMgdW5rbm93biBhcyBORSlcbiAgICAgICAgOiBPcHRpb24ubm9uZVxuICAgICAgOiBmaWx0ZXJcbiAgICAgICAgICAud2hlcmVcbiAgICAgICAgICAuZXZlcnkoKHApID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGsgPSBnZXQoeCwgcC5rZXkpXG4gICAgICAgICAgICBzd2l0Y2ggKHAudCkge1xuICAgICAgICAgICAgICBjYXNlIFwiaW5cIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gcC52YWx1ZS5pbmNsdWRlcyhrKVxuICAgICAgICAgICAgICBjYXNlIFwibm90LWluXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuICFwLnZhbHVlLmluY2x1ZGVzKGspXG4gICAgICAgICAgICAgIGNhc2UgXCJsdFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBsdENhc2VJbnNlbnNpdGl2ZShrLCBwLnZhbHVlKVxuICAgICAgICAgICAgICBjYXNlIFwibHRlXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGx0ZUNhc2VJbnNlbnNpdGl2ZShrLCBwLnZhbHVlKVxuICAgICAgICAgICAgICBjYXNlIFwiZ3RcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gZ3RDYXNlSW5zZW5zaXRpdmUoaywgcC52YWx1ZSlcbiAgICAgICAgICAgICAgY2FzZSBcImd0ZVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBndGVDYXNlSW5zZW5zaXRpdmUoaywgcC52YWx1ZSlcbiAgICAgICAgICAgICAgY2FzZSBcImNvbnRhaW5zXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIChrIGFzIHN0cmluZykudG9Mb3dlckNhc2UoKS5pbmNsdWRlcygocC52YWx1ZSBhcyBzdHJpbmcpLnRvTG93ZXJDYXNlKCkpXG4gICAgICAgICAgICAgIGNhc2UgXCJlbmRzLXdpdGhcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gKGsgYXMgc3RyaW5nKS50b0xvd2VyQ2FzZSgpLmVuZHNXaXRoKChwLnZhbHVlIGFzIHN0cmluZykudG9Mb3dlckNhc2UoKSlcbiAgICAgICAgICAgICAgY2FzZSBcInN0YXJ0cy13aXRoXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIChrIGFzIHN0cmluZykudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKChwLnZhbHVlIGFzIHN0cmluZykudG9Mb3dlckNhc2UoKSlcbiAgICAgICAgICAgICAgY2FzZSBcIm5vdC1lcVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBwLmtleS5pbmNsdWRlcyhcIi4tMS5cIilcbiAgICAgICAgICAgICAgICAgID8gKGdldCh4LCBwLmtleS5zcGxpdChcIi4tMS5cIilbMF0pIGFzIGFueVtdKVxuICAgICAgICAgICAgICAgICAgICAvLyBUT0RPOiBvciB2cyBhbmRcbiAgICAgICAgICAgICAgICAgICAgLmV2ZXJ5KChfKSA9PiAhY29tcGFyZUNhc2VJbnNlbnNpdGl2ZShnZXQoXywgcC5rZXkuc3BsaXQoXCIuLTEuXCIpWzFdISksIHAudmFsdWUpKVxuICAgICAgICAgICAgICAgICAgOiAhY29tcGFyZUNhc2VJbnNlbnNpdGl2ZShrLCBwLnZhbHVlKVxuICAgICAgICAgICAgICBjYXNlIFwiZXFcIjpcbiAgICAgICAgICAgICAgY2FzZSB1bmRlZmluZWQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHAua2V5LmluY2x1ZGVzKFwiLi0xLlwiKVxuICAgICAgICAgICAgICAgICAgPyAoZ2V0KHgsIHAua2V5LnNwbGl0KFwiLi0xLlwiKVswXSkgYXMgYW55W10pXG4gICAgICAgICAgICAgICAgICAgIC8vIFRPRE86IG9yIHZzIGFuZFxuICAgICAgICAgICAgICAgICAgICAuc29tZSgoXykgPT4gY29tcGFyZUNhc2VJbnNlbnNpdGl2ZShnZXQoXywgcC5rZXkuc3BsaXQoXCIuLTEuXCIpWzFdISksIHAudmFsdWUpKVxuICAgICAgICAgICAgICAgICAgOiBjb21wYXJlQ2FzZUluc2Vuc2l0aXZlKGssIHAudmFsdWUpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgID8gT3B0aW9uKHggYXMgdW5rbm93biBhcyBORSlcbiAgICAgIDogT3B0aW9uLm5vbmVcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvZGVGaWx0ZXJKb2luU2VsZWN0PEUgZXh0ZW5kcyB7IGlkOiBzdHJpbmcgfSwgTkU+KFxuICBmaWx0ZXI6IEZpbHRlckpvaW5TZWxlY3Rcbikge1xuICByZXR1cm4gKHg6IEUpID0+XG4gICAgZmlsdGVyXG4gICAgICAua2V5c1xuICAgICAgLmZpbHRlck1hcCgoaykgPT4ge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IGdldCh4LCBrKVxuICAgICAgICAvLyB3ZSBtaW1pYyB0aGUgYmVoYXZpb3Igb2YgY29zbW9zZGI7IGlmIHRoZSBzaGFwZSBpbiBkYiBkb2VzIG5vdCBtYXRjaCB3aGF0IHdlJ3JlIGxvb2tpbmcgZm9yLCB3ZSBpbWFnaW5lIGZhbHNlIGhpdFxuICAgICAgICByZXR1cm4gdmFsdWVcbiAgICAgICAgICA/IE9wdGlvbihcbiAgICAgICAgICAgICh2YWx1ZSBhcyByZWFkb25seSBORVtdKS5maWx0ZXJNYXAoKHYpID0+XG4gICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgICAgICAgIGNvbXBhcmVDYXNlSW5zZW5zaXRpdmUoKHYgYXMgYW55KVtmaWx0ZXIudmFsdWVLZXldLCBmaWx0ZXIudmFsdWUpXG4gICAgICAgICAgICAgICAgPyBPcHRpb24oeyAuLi52LCBfcm9vdElkOiB4LmlkIH0pXG4gICAgICAgICAgICAgICAgOiBPcHRpb24ubm9uZVxuICAgICAgICAgICAgKVxuICAgICAgICAgIClcbiAgICAgICAgICA6IE9wdGlvbi5ub25lXG4gICAgICB9KVxuICAgICAgLmZsYXRNYXAoKF8pID0+IF8pXG59XG5cbmZ1bmN0aW9uIGxvd2VyY2FzZUlmU3RyaW5nPFQ+KHZhbDogVCkge1xuICBpZiAodHlwZW9mIHZhbCA9PT0gXCJzdHJpbmdcIikge1xuICAgIHJldHVybiB2YWwudG9Mb3dlckNhc2UoKVxuICB9XG4gIHJldHVybiB2YWxcbn1cblxuZnVuY3Rpb24gY29tcGFyZUNhc2VJbnNlbnNpdGl2ZSh2YWxBOiB1bmtub3duLCB2YWxCOiB1bmtub3duKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsQiA9PT0gXCJzdHJpbmdcIiAmJiB0eXBlb2YgdmFsQSA9PT0gXCJzdHJpbmdcIlxuICAgID8gdmFsQS50b0xvd2VyQ2FzZSgpID09PSB2YWxCLnRvTG93ZXJDYXNlKClcbiAgICA6IHZhbEEgPT09IHZhbEJcbn1cblxuZnVuY3Rpb24gbHRDYXNlSW5zZW5zaXRpdmUodmFsQTogU3VwcG9ydGVkVmFsdWVzMiwgdmFsQjogU3VwcG9ydGVkVmFsdWVzMikge1xuICByZXR1cm4gdHlwZW9mIHZhbEIgPT09IFwic3RyaW5nXCIgJiYgdHlwZW9mIHZhbEEgPT09IFwic3RyaW5nXCJcbiAgICA/IHZhbEEudG9Mb3dlckNhc2UoKSA8IHZhbEIudG9Mb3dlckNhc2UoKVxuICAgIDogdmFsQSA8IHZhbEJcbn1cblxuZnVuY3Rpb24gbHRlQ2FzZUluc2Vuc2l0aXZlKHZhbEE6IFN1cHBvcnRlZFZhbHVlczIsIHZhbEI6IFN1cHBvcnRlZFZhbHVlczIpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWxCID09PSBcInN0cmluZ1wiICYmIHR5cGVvZiB2YWxBID09PSBcInN0cmluZ1wiXG4gICAgPyB2YWxBLnRvTG93ZXJDYXNlKCkgPD0gdmFsQi50b0xvd2VyQ2FzZSgpXG4gICAgOiB2YWxBIDw9IHZhbEJcbn1cblxuZnVuY3Rpb24gZ3RDYXNlSW5zZW5zaXRpdmUodmFsQTogU3VwcG9ydGVkVmFsdWVzMiwgdmFsQjogU3VwcG9ydGVkVmFsdWVzMikge1xuICByZXR1cm4gdHlwZW9mIHZhbEIgPT09IFwic3RyaW5nXCIgJiYgdHlwZW9mIHZhbEEgPT09IFwic3RyaW5nXCJcbiAgICA/IHZhbEEudG9Mb3dlckNhc2UoKSA+IHZhbEIudG9Mb3dlckNhc2UoKVxuICAgIDogdmFsQSA+IHZhbEJcbn1cblxuZnVuY3Rpb24gZ3RlQ2FzZUluc2Vuc2l0aXZlKHZhbEE6IFN1cHBvcnRlZFZhbHVlczIsIHZhbEI6IFN1cHBvcnRlZFZhbHVlczIpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWxCID09PSBcInN0cmluZ1wiICYmIHR5cGVvZiB2YWxBID09PSBcInN0cmluZ1wiXG4gICAgPyB2YWxBLnRvTG93ZXJDYXNlKCkgPj0gdmFsQi50b0xvd2VyQ2FzZSgpXG4gICAgOiB2YWxBID49IHZhbEJcbn1cbiJdfQ==
@@ -1 +1 @@
1
- b4b12945fbdaa4d1e98b8a2095ca4363f267e0909cdb70da478a35926e8fbba5
1
+ 35207ebdda44c6e08dd00ffc65f33a96b6b76a90f685949c026b2c702478d1fb
@@ -1 +1 @@
1
- 4e41249ba004a7c0dc89e9306f2fcedc66585f6a43cff02e094f0d73d723bf8d
1
+ a32a40b2ee49298c8da08cd6bba7807b93ce8b451fdc3072b8065764b621a666
@@ -1 +1 @@
1
- 0ec005c7e521d652727c8ec2ca65980927e1818fc3bb92eb21dbc35d225bd027
1
+ afd0a6760e1c0bb81d8f009c93722e5100019cd98eaaba1b82175573756e27d7
@@ -1 +1 @@
1
- 0958fd132e2c918acec7e021223aec95701d820ac3efbcb7b6f5c96200d7c3ad
1
+ 2e7b6be49bc3deac32bc70abcdb88dbca6696392d6f2f72d02048ceac445b558
@@ -295,10 +295,6 @@ export function buildWhereCosmosQuery(filter, name, importedMarkerId, skip, limi
295
295
  return `(NOT ARRAY_CONTAINS(${v}, ${k}))`;
296
296
  case "ends-with":
297
297
  return `ENDSWITH(${k}, ${v}, true)`;
298
- case "includes":
299
- return `ARRAY_CONTAINS(${k}, ${v})`;
300
- case "not-includes":
301
- return `(NOT ARRAY_CONTAINS(${k}, ${v}))`;
302
298
  case "contains":
303
299
  return `CONTAINS(${k}, ${v}, true)`;
304
300
  case "starts-with":
@@ -361,4 +357,4 @@ class CosmosDbOperationError {
361
357
  export function CosmosStoreLive(config) {
362
358
  return tsplus_module_1.toLayer(tsplus_module_1.flatMap(tsplus_module_1.config(config), makeCosmosStore), StoreMaker);
363
359
  }
364
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29zbW9zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vX3NyYy9zZXJ2aWNlcy9TdG9yZS9Db3Ntb3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQSx1REFBdUQ7QUFFdkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDBDQUEwQyxDQUFBO0FBQ3ZFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQTtBQUNoRCxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQWFoRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBRXpDLG9EQUFvRDtBQUNwRCxNQUFNLFVBQVUsZUFBZSxDQUFDLEVBQUUsTUFBTSxFQUFpQjtJQUN2RCxPQUFPLG9CQUFXLFFBQVEsQ0FBQyxFQUFDLENBQUM7UUFDM0IsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQTtRQUNyQyxPQUFPO1lBQ0wsSUFBSSxFQUFFLENBQ0osSUFBWSxFQUNaLElBQXlDLEVBQ3pDLE1BQXdCLEVBQ3hCLEVBQUUsQ0FDRixvQkFBVyxRQUFRLENBQUMsRUFBQyxDQUFDO2dCQUNwQixNQUFNLFdBQVcsR0FBRyxHQUFHLE1BQU0sR0FBRyxJQUFJLEVBQUUsQ0FBQTtnQkFDdEMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUNOLHdCQUFlLEdBQUcsRUFBRSxDQUNsQixFQUFFLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDO29CQUM5QixFQUFFLEVBQUUsV0FBVztvQkFDZixlQUFlLEVBQUUsTUFBTSxFQUFFLFVBQVU7d0JBQ2pDLENBQUMsQ0FBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLENBQUMsVUFBVSxFQUFFO3dCQUNuQyxDQUFDLENBQUMsU0FBUztpQkFDZCxDQUFDLENBQ0gsQ0FDRixDQUFBO2dCQUNELE1BQU0sU0FBUyxHQUFHLEVBQUUs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T0FBTyxPQUFPLEtBQUssS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUE7QUFDL0QsQ0FBQztBQUVELE1BQU0sVUFBVSxnQkFBZ0IsQ0FDOUIsTUFBMkMsRUFDM0MsSUFBWSxFQUNaLGdCQUF3QixFQUN4QixJQUFhLEVBQ2IsS0FBYztJQUVkLE9BQU8sTUFBTSxDQUFDLElBQUksS0FBSyxZQUFZO1dBQzVCLE1BQU0sQ0FBQyxJQUFJLEtBQUssVUFBVTtXQUMxQixNQUFNLENBQUMsSUFBSSxLQUFLLFVBQVU7UUFDL0IsQ0FBQyxDQUFDLHNCQUFzQixDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQztRQUNyRSxDQUFDLENBQUMscUJBQXFCLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUE7QUFDeEUsQ0FBQztBQUVELE1BQU0sc0JBQXNCO0lBQ0w7SUFBckIsWUFBcUIsT0FBZTtRQUFmLFlBQU8sR0FBUCxPQUFPLENBQVE7SUFBRyxDQUFDO0NBQ3pDO0FBQ0QsTUFBTSxVQUFVLGVBQWUsQ0FBQyxNQUE2QjtJQUMzRCxPQUFPLHdCQUFBLCtDQUFBLE1BQU0sR0FBZ0IsZUFBZSxDQUFDLEVBQVMsVUFBVSxDQUFDLENBQUE7QUFDbkUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cblxuaW1wb3J0IHsgQ29zbW9zQ2xpZW50IH0gZnJvbSBcIkBlZmZlY3QtYXBwL2luZnJhLWFkYXB0ZXJzL2Nvc21vcy1jbGllbnRcIlxuaW1wb3J0IHsgb21pdCB9IGZyb20gXCJAZWZmZWN0LWFwcC9wcmVsdWRlL3V0aWxzXCJcbmltcG9ydCB7IE9wdGltaXN0aWNDb25jdXJyZW5jeUV4Y2VwdGlvbiB9IGZyb20gXCIuLi8uLi9lcnJvcnMuanNcIlxuaW1wb3J0IHR5cGUge1xuICBGaWx0ZXIsXG4gIEZpbHRlckpvaW5TZWxlY3QsXG4gIEpvaW5GaW5kRmlsdGVyLFxuICBMZWdhY3lGaWx0ZXIsXG4gIFBlcnNpc3RlbmNlTW9kZWxUeXBlLFxuICBTdG9yYWdlQ29uZmlnLFxuICBTdG9yZSxcbiAgU3RvcmVDb25maWcsXG4gIFN0b3JlV2hlcmVGaWx0ZXIsXG4gIFN1cHBvcnRlZFZhbHVlc1xufSBmcm9tIFwiLi9zZXJ2aWNlLmpzXCJcbmltcG9ydCB7IFN0b3JlTWFrZXIgfSBmcm9tIFwiLi9zZXJ2aWNlLmpzXCJcblxuLy8gVE9ETzogUmV0cnkgb3BlcmF0aW9uIHdoZW4gcnVubmluZyBpbnRvIFJVIGxpbWl0LlxuZXhwb3J0IGZ1bmN0aW9uIG1ha2VDb3Ntb3NTdG9yZSh7IHByZWZpeCB9OiBTdG9yYWdlQ29uZmlnKSB7XG4gIHJldHVybiBFZmZlY3QuZ2VuKGZ1bmN0aW9uKigkKSB7XG4gICAgY29uc3QgeyBkYiB9ID0geWllbGQqICQoQ29zbW9zQ2xpZW50KVxuICAgIHJldHVybiB7XG4gICAgICBtYWtlOiA8SWQgZXh0ZW5kcyBzdHJpbmcsIFBNIGV4dGVuZHMgUGVyc2lzdGVuY2VNb2RlbFR5cGU8SWQ+PihcbiAgICAgICAgbmFtZTogc3RyaW5nLFxuICAgICAgICBzZWVkPzogRWZmZWN0PG5ldmVyLCBuZXZlciwgSXRlcmFibGU8UE0+PixcbiAgICAgICAgY29uZmlnPzogU3RvcmVDb25maWc8UE0+XG4gICAgICApID0+XG4gICAgICAgIEVmZmVjdC5nZW4oZnVuY3Rpb24qKCQpIHtcbiAgICAgICAgICBjb25zdCBjb250YWluZXJJZCA9IGAke3ByZWZpeH0ke25hbWV9YFxuICAgICAgICAgIHlpZWxkKiAkKFxuICAgICAgICAgICAgRWZmZWN0LnByb21pc2UoKCkgPT5cbiAgICAgICAgICAgICAgZGIuY29udGFpbmVycy5jcmVhdGVJZk5vdEV4aXN0cyh7XG4gICAgICAgICAgICAgICAgaWQ6IGNvbnRhaW5lcklkLFxuICAgICAgICAgICAgICAgIHVuaXF1ZUtleVBvbGljeTogY29uZmlnPy51bmlxdWVLZXlzXG4gICAgICAgICAgICAgICAgICA/IHsgdW5pcXVlS2V5czogY29uZmlnLnVuaXF1ZUtleXMgfVxuICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICApXG4gICAgICAgICAgY29uc3QgY29udGFpbmVyID0gZGIuY29udGFpbmVyKGNvbnRhaW5lcklkKVxuICAgICAgICAgIGNvbnN0IGJ1bGsgPSBjb250YWluZXIuaXRlbXMuYnVsay5iaW5kKGNvbnRhaW5lci5pdGVtcylcbiAgICAgICAgICBjb25zdCBleGVjQmF0Y2ggPSBjb250YWluZXIuaXRlbXMuYmF0Y2guYmluZChjb250YWluZXIuaXRlbXMpXG4gICAgICAgICAgY29uc3QgaW1wb3J0ZWRNYXJrZXJJZCA9IGNvbnRhaW5lcklkXG5cbiAgICAgICAgICBjb25zdCBidWxrU2V0ID0gKGl0ZW1zOiBOb25FbXB0eVJlYWRvbmx5QXJyYXk8UE0+KSA9PlxuICAgICAgICAgICAgRWZmZWN0XG4gICAgICAgICAgICAgIC5nZW4oZnVuY3Rpb24qKCQpIHtcbiAgICAgICAgICAgICAgICAvLyBUT0RPOiBkaXNhYmxlIGJhdGNoaW5nIGlmIG5lZWQgYXRvbWljaXR5XG4gICAgICAgICAgICAgICAgLy8gd2UgZGVsYXkgYW5kIGJhdGNoIHRvIGtlZXAgbG93IGFtb3VudCBvZiBSVXNcbiAgICAgICAgICAgICAgICBjb25zdCBiID0gWy4uLml0ZW1zXS5tYXAoXG4gICAgICAgICAgICAgICAgICAoeCkgPT5cbiAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgICAgT3B0aW9uLmZyb21OdWxsYWJsZSh4Ll9ldGFnKS5tYXRjaChcbiAgICAgICAgICAgICAgICAgICAgICAgICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvblR5cGU6IFwiQ3JlYXRlXCIgYXMgY29uc3QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlQm9keToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLm9taXQoeCwgXCJfZXRhZ1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfcGFydGl0aW9uS2V5OiBjb25maWc/LnBhcnRpdGlvblZhbHVlKHgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0gYXMgYW55LFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0aXRpb25LZXk6IGNvbmZpZz8ucGFydGl0aW9uVmFsdWUoeClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgKGVUYWcpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvblR5cGU6IFwiUmVwbGFjZVwiIGFzIGNvbnN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogeC5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VCb2R5OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ub21pdCh4LCBcIl9ldGFnXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9wYXJ0aXRpb25LZXk6IGNvbmZpZz8ucGFydGl0aW9uVmFsdWUoeClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSBhcyBhbnksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmTWF0Y2g6IGVUYWcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRpdGlvbktleTogY29uZmlnPy5wYXJ0aXRpb25WYWx1ZSh4KVxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIF0gYXMgY29uc3RcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgY29uc3QgYmF0Y2hlcyA9IGIuY2h1bmsoY29uZmlnPy5tYXhCdWxrU2l6ZSA/PyAxMCkudG9SZWFkb25seUFycmF5XG5cbiAgICAgICAgICAgICAgICBjb25zdCBiYXRjaFJlc3VsdCA9IHlpZWxkKiAkKFxuICAgICAgICAgICAgICAgICAgYmF0Y2hlc1xuICAgICAgICAgICAgICAgICAgICAubWFwKCh4LCBpKSA9PiBbaSwgeF0gYXMgY29uc3QpXG4gICAgICAgICAgICAgICAgICAgIC5mb3JFYWNoRWZmZWN0KFxuICAgICAgICAgICAgICAgICAgICAgIChbaSwgYmF0Y2hdKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgRWZmZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIC5wcm9taXNlKCgpID0+IGJ1bGsoYmF0Y2gubWFwKChbLCBvcF0pID0+IG9wKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC5kZWxheShEdXJhdGlvbi5tYWtlTWlsbGlzKGkgPT09IDAgPyAwIDogMTEwMCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC5mbGF0TWFwKChyZXNwb25zZXMpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRWZmZWN0LmdlbihmdW5jdGlvbiooJCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgciA9IHJlc3BvbnNlcy5maW5kKCh4KSA9PiB4LnN0YXR1c0NvZGUgPT09IDQxMiB8fCB4LnN0YXR1c0NvZGUgPT09IDQwNClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB5aWVsZCogJChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFZmZlY3QuZmFpbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBPcHRpbWlzdGljQ29uY3VycmVuY3lFeGNlcHRpb24oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHIucmVzb3VyY2VCb2R5Py5bXCJpZFwiXSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHIyID0gcmVzcG9uc2VzLmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh4KSA9PiB4LnN0YXR1c0NvZGUgPiAyOTkgfHwgeC5zdGF0dXNDb2RlIDwgMjAwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocjIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHlpZWxkKiAkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVmZmVjdC5kaWUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgQ29zbW9zRGJPcGVyYXRpb25FcnJvcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJub3QgYWJsZSB0byB1cGRhdGUgcmVjb3JkOiBcIiArIHIyLnN0YXR1c0NvZGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBiYXRjaC5tYXAoKFtlXSwgaSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1ub24tbnVsbC1hc3NlcnRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2V0YWc6IHJlc3BvbnNlc1tpXSEuZVRhZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIHJldHVybiBiYXRjaFJlc3VsdC5mbGF0KCkgYXMgdW5rbm93biBhcyBOb25FbXB0eVJlYWRvbmx5QXJyYXk8UE0+XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIC5pbnN0cnVtZW50KFwiY29zbW9zLmJ1bGtTZXRcIilcbiAgICAgICAgICAgICAgLmxvZ0Fubm90YXRlKFwiY29zbW9zLmRiXCIsIGNvbnRhaW5lcklkKVxuXG4gICAgICAgICAgY29uc3QgYmF0Y2hTZXQgPSAoaXRlbXM6IE5vbkVtcHR5UmVhZG9ubHlBcnJheTxQTT4pID0+IHtcbiAgICAgICAgICAgIHJldHVybiBFZmZlY3RcbiAgICAgICAgICAgICAgLnN1c3BlbmQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGJhdGNoID0gWy4uLml0ZW1zXS5tYXAoXG4gICAgICAgICAgICAgICAgICAoeCkgPT5cbiAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgICAgT3B0aW9uLmZyb21OdWxsYWJsZSh4Ll9ldGFnKS5tYXRjaChcbiAgICAgICAgICAgICAgICAgICAgICAgICgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvblR5cGU6IFwiQ3JlYXRlXCIgYXMgY29uc3QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlQm9keToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLm9taXQoeCwgXCJfZXRhZ1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfcGFydGl0aW9uS2V5OiBjb25maWc/LnBhcnRpdGlvblZhbHVlKHgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0gYXMgYW55XG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIChlVGFnKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb25UeXBlOiBcIlJlcGxhY2VcIiBhcyBjb25zdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHguaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlQm9keToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLm9taXQoeCwgXCJfZXRhZ1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfcGFydGl0aW9uS2V5OiBjb25maWc/LnBhcnRpdGlvblZhbHVlKHgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0gYXMgYW55LFxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZk1hdGNoOiBlVGFnXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgXSBhcyBjb25zdFxuICAgICAgICAgICAgICAgIClcblxuICAgICAgICAgICAgICAgIGNvbnN0IGV4ID0gYmF0Y2gubWFwKChbLCBjXSkgPT4gYylcblxuICAgICAgICAgICAgICAgIHJldHVybiBFZmZlY3RcbiAgICAgICAgICAgICAgICAgIC5wcm9taXNlKCgpID0+IGV4ZWNCYXRjaChleCwgZXhbMF0/LnJlc291cmNlQm9keS5fcGFydGl0aW9uS2V5KSlcbiAgICAgICAgICAgICAgICAgIC5mbGF0TWFwKCh4KSA9PlxuICAgICAgICAgICAgICAgICAgICBFZmZlY3QuZ2VuKGZ1bmN0aW9uKigkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0geC5yZXN1bHQgPz8gW11cbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmaXJzdEZhaWxlZCA9IHJlc3VsdC5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgKHg6IGFueSkgPT4geC5zdGF0dXNDb2RlID4gMjk5IHx8IHguc3RhdHVzQ29kZSA8IDIwMFxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoZmlyc3RGYWlsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvZGUgPSBmaXJzdEZhaWxlZC5zdGF0dXNDb2RlID8/IDBcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb2RlID09PSA0MTIgfHwgY29kZSA9PT0gNDA0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB5aWVsZCogJChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFZmZlY3QuZmFpbChuZXcgT3B0aW1pc3RpY0NvbmN1cnJlbmN5RXhjZXB0aW9uKG5hbWUsIFwiYmF0Y2hcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHlpZWxkKiAkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBFZmZlY3QuZGllKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBDb3Ntb3NEYk9wZXJhdGlvbkVycm9yKFwibm90IGFibGUgdG8gdXBkYXRlIHJlY29yZDogXCIgKyBjb2RlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJhdGNoLm1hcCgoW2VdLCBpKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF9ldGFnOiByZXN1bHRbaV0/LmVUYWdcbiAgICAgICAgICAgICAgICAgICAgICB9KSkgYXMgdW5rbm93biBhcyBOb25FbXB0eVJlYWRvbmx5QXJyYXk8UE0+XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIC5pbnN0cnVtZW50KFwiY29zbW9zLmJhdGNoU2V0XCIpXG4gICAgICAgICAgICAgIC5sb2dBbm5vdGF0ZShcImNvc21vcy5kYlwiLCBjb250YWluZXJJZClcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBzOiBTdG9yZTxQTSwgSWQ+ID0ge1xuICAgICAgICAgICAgYWxsOiBFZmZlY3Qoe1xuICAgICAgICAgICAgICBxdWVyeTogYFNFTEVDVCAqIEZST00gJHtuYW1lfSBmIFdIRVJFIGYuaWQgIT0gQGlkYCxcbiAgICAgICAgICAgICAgcGFyYW1ldGVyczogW3sgbmFtZTogXCJAaWRcIiwgdmFsdWU6IGltcG9ydGVkTWFya2VySWQgfV1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIC50YXAoKHEpID0+IGxvZ1F1ZXJ5KHEpKVxuICAgICAgICAgICAgICAuZmxhdE1hcCgocSkgPT5cbiAgICAgICAgICAgICAgICBFZmZlY3QucHJvbWlzZSgoKSA9PlxuICAgICAgICAgICAgICAgICAgY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgIC5pdGVtc1xuICAgICAgICAgICAgICAgICAgICAucXVlcnk8UE0+KHEpXG4gICAgICAgICAgICAgICAgICAgIC5mZXRjaEFsbCgpXG4gICAgICAgICAgICAgICAgICAgIC50aGVuKCh7IHJlc291cmNlcyB9KSA9PiByZXNvdXJjZXMpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIC5pbnN0cnVtZW50KFwiY29zbW9zLmFsbFwiKVxuICAgICAgICAgICAgICAubG9nQW5ub3RhdGUoXCJjb3Ntb3MuZGJcIiwgY29udGFpbmVySWQpLFxuICAgICAgICAgICAgZmlsdGVySm9pblNlbGVjdDogPFQgZXh0ZW5kcyBvYmplY3Q+KFxuICAgICAgICAgICAgICBmaWx0ZXI6IEZpbHRlckpvaW5TZWxlY3QsXG4gICAgICAgICAgICAgIGN1cnNvcj86IHsgc2tpcD86IG51bWJlcjsgbGltaXQ/OiBudW1iZXIgfVxuICAgICAgICAgICAgKSA9PlxuICAgICAgICAgICAgICBmaWx0ZXJcbiAgICAgICAgICAgICAgICAua2V5c1xuICAgICAgICAgICAgICAgIC5mb3JFYWNoRWZmZWN0KChrKSA9PlxuICAgICAgICAgICAgICAgICAgRWZmZWN0KGJ1aWxkRmlsdGVySm9pblNlbGVjdENvc21vc1F1ZXJ5KGZpbHRlciwgaywgbmFtZSwgY3Vyc29yPy5za2lwLCBjdXJzb3I/LmxpbWl0KSlcbiAgICAgICAgICAgICAgICAgICAgLnRhcCgocSkgPT4gbG9nUXVlcnkocSkpXG4gICAgICAgICAgICAgICAgICAgIC5mbGF0TWFwKChxKSA9PlxuICAgICAgICAgICAgICAgICAgICAgIEVmZmVjdC5wcm9taXNlKCgpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLml0ZW1zXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC5xdWVyeTxUPihxKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAuZmV0Y2hBbGwoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAudGhlbigoeyByZXNvdXJjZXMgfSkgPT4gcmVzb3VyY2VzKVxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAubWFwKChhKSA9PiB7XG4gICAgICAgICAgICAgICAgICBjb25zdCB2ID0gYVxuICAgICAgICAgICAgICAgICAgICAuZmxhdE1hcCgoXykgPT4gXylcbiAgICAgICAgICAgICAgICAgICAgLm1hcCgoeCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICBzcHJlYWQoXG4gICAgICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgKHsgciwgLi4ucmVzdCB9OiBhbnkpID0+ICh7IC4uLnJlc3QsIC4uLnIgfSBhcyBUICYgeyBfcm9vdElkOiBzdHJpbmcgfSlcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIHJldHVybiB2XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuaW5zdHJ1bWVudChcImNvc21vcy5maWx0ZXJKb2luU2VsZWN0XCIpXG4gICAgICAgICAgICAgICAgLmxvZ0Fubm90YXRlKFwiY29zbW9zLmRiXCIsIGNvbnRhaW5lcklkKSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTWF5IHJldHVybiBkdXBsaWNhdGUgcmVzdWx0cyBmb3IgXCJqb2luX2ZpbmRcIiwgd2hlbiBtYXRjaGluZyBtb3JlIHRoYW4gb25jZS5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgZmlsdGVyOiAoZmlsdGVyOiBGaWx0ZXI8UE0+LCBjdXJzb3I/OiB7IHNraXA/OiBudW1iZXI7IGxpbWl0PzogbnVtYmVyIH0pID0+IHtcbiAgICAgICAgICAgICAgY29uc3Qgc2tpcCA9IGN1cnNvcj8uc2tpcFxuICAgICAgICAgICAgICBjb25zdCBsaW1pdCA9IGN1cnNvcj8ubGltaXRcbiAgICAgICAgICAgICAgcmV0dXJuIChmaWx0ZXIudHlwZSA9PT0gXCJqb2luX2ZpbmRcIlxuICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgYSBwcm9ibGVtIGlmIG9uZSBvZiB0aGUgbXVsdGlwbGUgam9pbmVkIGFycmF5cyBjYW4gYmUgZW1wdHkhXG4gICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvNjAzMjA3ODAvYXp1cmUtY29zbW9zZGItc3FsLWpvaW4tbm90LXJldHVybmluZy1yZXN1bHRzLXdoZW4tdGhlLWNoaWxkLWNvbnRhaW5zLWVtcHR5LWFycmFcbiAgICAgICAgICAgICAgICAvLyBzbyB3ZSB1c2UgbXVsdGlwbGUgcXVlcmllcyBpbnN0ZWFkLlxuICAgICAgICAgICAgICAgID8gZmlsdGVyXG4gICAgICAgICAgICAgICAgICAua2V5c1xuICAgICAgICAgICAgICAgICAgLmZvckVhY2hFZmZlY3QoKGspID0+XG4gICAgICAgICAgICAgICAgICAgIEVmZmVjdChidWlsZEZpbmRKb2luQ29zbW9zUXVlcnkoZmlsdGVyLCBrLCBuYW1lLCBza2lwLCBsaW1pdCkpXG4gICAgICAgICAgICAgICAgICAgICAgLnRhcCgocSkgPT4gbG9nUXVlcnkocSkpXG4gICAgICAgICAgICAgICAgICAgICAgLmZsYXRNYXAoKHEpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBFZmZlY3QucHJvbWlzZSgoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuaXRlbXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAucXVlcnk8UE0+KHEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZldGNoQWxsKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAudGhlbigoeyByZXNvdXJjZXMgfSkgPT4gcmVzb3VyY2VzKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIC5tYXAoKF8pID0+IF8uZmxhdE1hcCgoXykgPT4gXykpXG4gICAgICAgICAgICAgICAgOiBFZmZlY3QoYnVpbGRDb3Ntb3NRdWVyeShmaWx0ZXIsIG5hbWUsIGltcG9ydGVkTWFya2VySWQsIHNraXAsIGxpbWl0KSlcbiAgICAgICAgICAgICAgICAgIC50YXAoKHEpID0+IGxvZ1F1ZXJ5KHEpKVxuICAgICAgICAgICAgICAgICAgLmZsYXRNYXAoKHEpID0+XG4gICAgICAgICAgICAgICAgICAgIEVmZmVjdC5wcm9taXNlKCgpID0+XG4gICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAuaXRlbXNcbiAgICAgICAgICAgICAgICAgICAgICAgIC5xdWVyeTx7IGY6IFBNIH0+KFxuICAgICAgICAgICAgICAgICAgICAgICAgICBxXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAuZmV0Y2hBbGwoKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnRoZW4oKHsgcmVzb3VyY2VzIH0pID0+IHJlc291cmNlcy5tYXAoKF8pID0+IF8uZikpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICkpXG4gICAgICAgICAgICAgICAgLmluc3RydW1lbnQoXCJjb3Ntb3MuZmlsdGVyXCIpXG4gICAgICAgICAgICAgICAgLmxvZ0Fubm90YXRlKFwiY29zbW9zLmRiXCIsIGNvbnRhaW5lcklkKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGZpbmQ6IChpZCkgPT5cbiAgICAgICAgICAgICAgRWZmZWN0XG4gICAgICAgICAgICAgICAgLnByb21pc2UoKCkgPT5cbiAgICAgICAgICAgICAgICAgIGNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAuaXRlbShpZCwgY29uZmlnPy5wYXJ0aXRpb25WYWx1ZSh7IGlkIH0gYXMgUE0pKVxuICAgICAgICAgICAgICAgICAgICAucmVhZDxQTT4oKVxuICAgICAgICAgICAgICAgICAgICAudGhlbigoeyByZXNvdXJjZSB9KSA9PiBPcHRpb24uZnJvbU51bGxhYmxlKHJlc291cmNlKSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmluc3RydW1lbnQoXCJjb3Ntb3MuZmluZFwiKVxuICAgICAgICAgICAgICAgIC5sb2dBbm5vdGF0ZShcImNvc21vcy5kYlwiLCBjb250YWluZXJJZCksXG4gICAgICAgICAgICBzZXQ6IChlKSA9PlxuICAgICAgICAgICAgICBPcHRpb25cbiAgICAgICAgICAgICAgICAuZnJvbU51bGxhYmxlKGUuX2V0YWcpXG4gICAgICAgICAgICAgICAgLm1hdGNoKFxuICAgICAgICAgICAgICAgICAgKCkgPT5cbiAgICAgICAgICAgICAgICAgICAgRWZmZWN0LnByb21pc2UoKCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXIuaXRlbXMuY3JlYXRlKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmUsXG4gICAgICAgICAgICAgICAgICAgICAgICBfcGFydGl0aW9uS2V5OiBjb25maWc/LnBhcnRpdGlvblZhbHVlKGUpXG4gICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgIChlVGFnKSA9PlxuICAgICAgICAgICAgICAgICAgICBFZmZlY3QucHJvbWlzZSgoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lci5pdGVtKGUuaWQsIGNvbmZpZz8ucGFydGl0aW9uVmFsdWUoZSkpLnJlcGxhY2UoXG4gICAgICAgICAgICAgICAgICAgICAgICB7IC4uLmUsIF9wYXJ0aXRpb25LZXk6IGNvbmZpZz8ucGFydGl0aW9uVmFsdWUoZSkgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjZXNzQ29uZGl0aW9uOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJJZk1hdGNoXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uOiBlVGFnXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmZsYXRNYXAoKHgpID0+IHtcbiAgICAgICAgICAgICAgICAgIGlmICh4LnN0YXR1c0NvZGUgPT09IDQxMiB8fCB4LnN0YXR1c0NvZGUgPT09IDQwNCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gRWZmZWN0LmZhaWwobmV3IE9wdGltaXN0aWNDb25jdXJyZW5jeUV4Y2VwdGlvbihuYW1lLCBlLmlkKSlcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGlmICh4LnN0YXR1c0NvZGUgPiAyOTkgfHwgeC5zdGF0dXNDb2RlIDwgMjAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBFZmZlY3QuZGllKFxuICAgICAgICAgICAgICAgICAgICAgIG5ldyBDb3Ntb3NEYk9wZXJhdGlvbkVycm9yKFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJub3QgYWJsZSB0byB1cGRhdGUgcmVjb3JkOiBcIiArIHguc3RhdHVzQ29kZVxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgcmV0dXJuIEVmZmVjdCh7XG4gICAgICAgICAgICAgICAgICAgIC4uLmUsXG4gICAgICAgICAgICAgICAgICAgIF9ldGFnOiB4LmV0YWdcbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuaW5zdHJ1bWVudChcImNvc21vcy5zZXRcIilcbiAgICAgICAgICAgICAgICAubG9nQW5ub3RhdGUoXCJjb3Ntb3MuZGJcIiwgY29udGFpbmVySWQpLFxuICAgICAgICAgICAgYmF0Y2hTZXQsXG4gICAgICAgICAgICBidWxrU2V0LFxuICAgICAgICAgICAgcmVtb3ZlOiAoZTogUE0pID0+XG4gICAgICAgICAgICAgIEVmZmVjdFxuICAgICAgICAgICAgICAgIC5wcm9taXNlKCgpID0+IGNvbnRhaW5lci5pdGVtKGUuaWQsIGNvbmZpZz8ucGFydGl0aW9uVmFsdWUoZSkpLmRlbGV0ZSgpKVxuICAgICAgICAgICAgICAgIC5pbnN0cnVtZW50KFwiY29zbW9zLnJlbW92ZVwiKVxuICAgICAgICAgICAgICAgIC5sb2dBbm5vdGF0ZShcImNvc21vcy5kYlwiLCBjb250YWluZXJJZClcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBoYW5kbGUgbW9jayBkYXRhXG4gICAgICAgICAgY29uc3QgbWFya2VyID0geWllbGQqICQoXG4gICAgICAgICAgICBFZmZlY3QucHJvbWlzZSgoKSA9PlxuICAgICAgICAgICAgICBjb250YWluZXJcbiAgICAgICAgICAgICAgICAuaXRlbShpbXBvcnRlZE1hcmtlcklkLCBpbXBvcnRlZE1hcmtlcklkKVxuICAgICAgICAgICAgICAgIC5yZWFkPHsgaWQ6IHN0cmluZyB9PigpXG4gICAgICAgICAgICAgICAgLnRoZW4oKHsgcmVzb3VyY2UgfSkgPT4gT3B0aW9uLmZyb21OdWxsYWJsZShyZXNvdXJjZSkpXG4gICAgICAgICAgICApXG4gICAgICAgICAgKVxuXG4gICAgICAgICAgaWYgKCFtYXJrZXIuaXNTb21lKCkpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiQ3JlYXRpbmcgbW9jayBkYXRhIGZvciBcIiArIG5hbWUpXG4gICAgICAgICAgICBpZiAoc2VlZCkge1xuICAgICAgICAgICAgICBjb25zdCBtID0geWllbGQqICQoc2VlZClcbiAgICAgICAgICAgICAgeWllbGQqICQoXG4gICAgICAgICAgICAgICAgRWZmZWN0KG0udG9Ob25FbXB0eUFycmF5KVxuICAgICAgICAgICAgICAgICAgLmZsYXRNYXBPcHQoKGEpID0+XG4gICAgICAgICAgICAgICAgICAgIHNcbiAgICAgICAgICAgICAgICAgICAgICAuYnVsa1NldChhKVxuICAgICAgICAgICAgICAgICAgICAgIC5vckRpZVxuICAgICAgICAgICAgICAgICAgICAgIC8vIHdlIGRlbGF5IGV4dHJhIGhlcmUsIHNvIHRoYXQgaW5pdGlhbCBjcmVhdGlvbiBiZXR3ZWVuIENvbXBhbmllcy9QT3MgYWxzbyBoYXZlIGFuIGludGVydmFsIGJldHdlZW4gdGhlbS5cbiAgICAgICAgICAgICAgICAgICAgICAuZGVsYXkoRHVyYXRpb24ubWFrZU1pbGxpcygxMTAwKSlcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gTWFyayBhcyBpbXBvcnRlZFxuICAgICAgICAgICAgeWllbGQqICQoXG4gICAgICAgICAgICAgIEVmZmVjdC5wcm9taXNlKCgpID0+XG4gICAgICAgICAgICAgICAgY29udGFpbmVyLml0ZW1zLmNyZWF0ZSh7XG4gICAgICAgICAgICAgICAgICBfcGFydGl0aW9uS2V5OiBpbXBvcnRlZE1hcmtlcklkLFxuICAgICAgICAgICAgICAgICAgaWQ6IGltcG9ydGVkTWFya2VySWRcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBzXG4gICAgICAgIH0pXG4gICAgfVxuICB9KVxufVxuXG5mdW5jdGlvbiBsb2dRdWVyeShxOiB7XG4gIHF1ZXJ5OiBzdHJpbmdcbiAgcGFyYW1ldGVyczoge1xuICAgIG5hbWU6IHN0cmluZ1xuICAgIHZhbHVlOiBTdXBwb3J0ZWRWYWx1ZXMgfCByZWFkb25seSBTdXBwb3J0ZWRWYWx1ZXNbXVxuICB9W11cbn0pIHtcbiAgcmV0dXJuIEVmZmVjdFxuICAgIC5sb2dEZWJ1ZyhcImNvc21vcyBxdWVyeVwiKVxuICAgIC5hcHBseShFZmZlY3QubG9nQW5ub3RhdGVzKHtcbiAgICAgIHF1ZXJ5OiBxLnF1ZXJ5LFxuICAgICAgcGFyYW1ldGVyczogSlNPTi5zdHJpbmdpZnkoXG4gICAgICAgIHEucGFyYW1ldGVycy5yZWR1Y2UoKGFjYywgdikgPT4ge1xuICAgICAgICAgIGFjY1t2Lm5hbWVdID0gdi52YWx1ZVxuICAgICAgICAgIHJldHVybiBhY2NcbiAgICAgICAgfSwge30gYXMgUmVjb3JkPHN0cmluZywgU3VwcG9ydGVkVmFsdWVzIHwgcmVhZG9ubHkgU3VwcG9ydGVkVmFsdWVzW10+KSxcbiAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAyXG4gICAgICApXG4gICAgfSkpXG59XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQ6IHNob3VsZCBidWlsZCBTZWxlY3QgaW50byBXaGVyZSBxdWVyeVxuICovXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRGaWx0ZXJKb2luU2VsZWN0Q29zbW9zUXVlcnkoXG4gIGZpbHRlcjogRmlsdGVySm9pblNlbGVjdCxcbiAgazogc3RyaW5nLFxuICBuYW1lOiBzdHJpbmcsXG4gIHNraXA/OiBudW1iZXIsXG4gIGxpbWl0PzogbnVtYmVyXG4pIHtcbiAgY29uc3QgbG0gPSBza2lwICE9PSB1bmRlZmluZWQgfHwgbGltaXQgIT09IHVuZGVmaW5lZCA/IGBPRkZTRVQgJHtza2lwID8/IDB9IExJTUlUICR7bGltaXQgPz8gOTk5OTk5fWAgOiBcIlwiXG4gIHJldHVybiB7XG4gICAgcXVlcnk6IGBcblNFTEVDVCByLCBmLmlkIGFzIF9yb290SWRcbkZST00gJHtuYW1lfSBmXG5KT0lOIHIgSU4gZi4ke2t9XG5XSEVSRSBMT1dFUihyLiR7ZmlsdGVyLnZhbHVlS2V5fSkgPSBMT1dFUihAdmFsdWUpXG4ke2xtfVxuYCxcbiAgICBwYXJhbWV0ZXJzOiBbeyBuYW1lOiBcIkB2YWx1ZVwiLCB2YWx1ZTogZmlsdGVyLnZhbHVlIH1dXG4gIH1cbn1cblxuLyoqXG4gKiBAZGVwcmVjYXRlZDogaXMgbm93IHBhcnQgb2YgV2hlcmUgcXVlcnkgYXMgay4tMS52YWx1ZUtleVxuICovXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRGaW5kSm9pbkNvc21vc1F1ZXJ5KFxuICBmaWx0ZXI6IEpvaW5GaW5kRmlsdGVyLFxuICBrOiBzdHJpbmcsXG4gIG5hbWU6IHN0cmluZyxcbiAgc2tpcD86IG51bWJlcixcbiAgbGltaXQ/OiBudW1iZXJcbikge1xuICBjb25zdCBsbSA9IHNraXAgIT09IHVuZGVmaW5lZCB8fCBsaW1pdCAhPT0gdW5kZWZpbmVkID8gYE9GRlNFVCAke3NraXAgPz8gMH0gTElNSVQgJHtsaW1pdCA/PyA5OTk5OTl9YCA6IFwiXCJcbiAgcmV0dXJuIHtcbiAgICBxdWVyeTogYFxuU0VMRUNUIERJU1RJTkNUIFZBTFVFIGZcbkZST00gJHtuYW1lfSBmXG5KT0lOIHIgSU4gZi4ke2t9XG5XSEVSRSBMT1dFUihyLiR7ZmlsdGVyLnZhbHVlS2V5fSkgPSBMT1dFUihAdmFsdWUpXG4ke2xtfWAsXG4gICAgcGFyYW1ldGVyczogW3sgbmFtZTogXCJAdmFsdWVcIiwgdmFsdWU6IGZpbHRlci52YWx1ZSB9XVxuICB9XG59XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQ6IHNob3VsZCBidWlsZCBpbnRvIFdoZXJlIHF1ZXJ5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZExlZ2FjeUNvc21vc1F1ZXJ5PFBNPihcbiAgZmlsdGVyOiBMZWdhY3lGaWx0ZXI8UE0+LFxuICBuYW1lOiBzdHJpbmcsXG4gIGltcG9ydGVkTWFya2VySWQ6IHN0cmluZyxcbiAgc2tpcD86IG51bWJlcixcbiAgbGltaXQ/OiBudW1iZXJcbikge1xuICBjb25zdCBsbSA9IHNraXAgIT09IHVuZGVmaW5lZCB8fCBsaW1pdCAhPT0gdW5kZWZpbmVkID8gYE9GRlNFVCAke3NraXAgPz8gMH0gTElNSVQgJHtsaW1pdCA/PyA5OTk5OTl9YCA6IFwiXCJcbiAgcmV0dXJuIHtcbiAgICBxdWVyeTogYFxuICAgIFNFTEVDVCBmXG4gICAgRlJPTSAke25hbWV9IEFTIGZcbiAgICBXSEVSRSBmLmlkICE9IEBpZCBBTkQgZi4ke1xuICAgICAgU3RyaW5nKFxuICAgICAgICBmaWx0ZXIuYnlcbiAgICAgIClcbiAgICB9IExJS0UgQGZpbHRlclxuICAke2xtfWAsXG4gICAgcGFyYW1ldGVyczogW1xuICAgICAgeyBuYW1lOiBcIkBpZFwiLCB2YWx1ZTogaW1wb3J0ZWRNYXJrZXJJZCB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiBcIkBmaWx0ZXJcIixcbiAgICAgICAgdmFsdWU6IGZpbHRlci50eXBlID09PSBcImVuZHNXaXRoXCJcbiAgICAgICAgICA/IGAlJHtmaWx0ZXIudmFsdWV9YFxuICAgICAgICAgIDogZmlsdGVyLnR5cGUgPT09IFwiY29udGFpbnNcIlxuICAgICAgICAgID8gYCUke2ZpbHRlci52YWx1ZX0lYFxuICAgICAgICAgIDogYCR7ZmlsdGVyLnZhbHVlfSVgXG4gICAgICB9XG4gICAgXVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFdoZXJlQ29zbW9zUXVlcnkoXG4gIGZpbHRlcjogU3RvcmVXaGVyZUZpbHRlcixcbiAgbmFtZTogc3RyaW5nLFxuICBpbXBvcnRlZE1hcmtlcklkOiBzdHJpbmcsXG4gIHNraXA/OiBudW1iZXIsXG4gIGxpbWl0PzogbnVtYmVyXG4pIHtcbiAgY29uc3QgbG0gPSBza2lwICE9PSB1bmRlZmluZWQgfHwgbGltaXQgIT09IHVuZGVmaW5lZCA/IGBPRkZTRVQgJHtza2lwID8/IDB9IExJTUlUICR7bGltaXQgPz8gOTk5OTk5fWAgOiBcIlwiXG4gIHJldHVybiB7XG4gICAgcXVlcnk6IGBcbiAgICBTRUxFQ1QgZlxuICAgIEZST00gJHtuYW1lfSBBUyBmXG4gICAgJHtcbiAgICAgIGZpbHRlclxuICAgICAgICAud2hlcmVcbiAgICAgICAgLmZpbHRlcigoXykgPT4gXy5rZXkuaW5jbHVkZXMoXCIuLTEuXCIpKVxuICAgICAgICAubWFwKChfKSA9PiBfLmtleS5zcGxpdChcIi4tMS5cIilbMF0pXG4gICAgICAgIC5tYXAoKF8pID0+IGBKT0lOICR7X30gSU4gZi4ke199YClcbiAgICAgICAgLnVuaXEoRXF1aXZhbGVuY2Uuc3RyaW5nKVxuICAgICAgICAuam9pbihcIlxcblwiKVxuICAgIH1cbiAgICBXSEVSRSBmLmlkICE9IEBpZCBBTkQgJHtcbiAgICAgIGZpbHRlclxuICAgICAgICAud2hlcmVcbiAgICAgICAgLm1hcCgoXykgPT5cbiAgICAgICAgICBfLmtleS5pbmNsdWRlcyhcIi4tMS5cIilcbiAgICAgICAgICAgID8geyAuLi5fLCBmOiBfLmtleS5zcGxpdChcIi4tMS5cIilbMF0sIGtleTogXy5rZXkuc3BsaXQoXCIuLTEuXCIpWzFdISB9XG4gICAgICAgICAgICA6IHsgLi4uXywgZjogXCJmXCIgfVxuICAgICAgICApXG4gICAgICAgIC5tYXAoXG4gICAgICAgICAgKHgsIGkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGsgPSBgJHt4LmZ9LiR7eC5rZXl9YFxuICAgICAgICAgICAgY29uc3QgdiA9IGBAdiR7aX1gXG5cbiAgICAgICAgICAgIHN3aXRjaCAoeC50KSB7XG4gICAgICAgICAgICAgIGNhc2UgXCJpblwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBgQVJSQVlfQ09OVEFJTlMoJHt2fSwgJHtrfSlgXG4gICAgICAgICAgICAgIGNhc2UgXCJub3QtaW5cIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gYChOT1QgQVJSQVlfQ09OVEFJTlMoJHt2fSwgJHtrfSkpYFxuICAgICAgICAgICAgICBjYXNlIFwiZW5kcy13aXRoXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBFTkRTV0lUSCgke2t9LCAke3Z9LCB0cnVlKWBcbiAgICAgICAgICAgICAgY2FzZSBcImluY2x1ZGVzXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBBUlJBWV9DT05UQUlOUygke2t9LCAke3Z9KWBcbiAgICAgICAgICAgICAgY2FzZSBcIm5vdC1pbmNsdWRlc1wiOlxuICAgICAgICAgICAgICAgIHJldHVybiBgKE5PVCBBUlJBWV9DT05UQUlOUygke2t9LCAke3Z9KSlgXG4gICAgICAgICAgICAgIGNhc2UgXCJjb250YWluc1wiOlxuICAgICAgICAgICAgICAgIHJldHVybiBgQ09OVEFJTlMoJHtrfSwgJHt2fSwgdHJ1ZSlgXG4gICAgICAgICAgICAgIGNhc2UgXCJzdGFydHMtd2l0aFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBgU1RBUlRTV0lUSCgke2t9LCAke3Z9LCB0cnVlKWBcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgbGsgPSBsb3dlcklmTmVlZGVkKGssIHgudmFsdWUpXG4gICAgICAgICAgICBjb25zdCBsdiA9IGxvd2VySWZOZWVkZWQodiwgeC52YWx1ZSlcblxuICAgICAgICAgICAgc3dpdGNoICh4LnQpIHtcbiAgICAgICAgICAgICAgY2FzZSBcImx0XCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke2xrfSA8ICR7bHZ9YFxuICAgICAgICAgICAgICBjYXNlIFwibHRlXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke2xrfSA8PSAke2x2fWBcbiAgICAgICAgICAgICAgY2FzZSBcImd0XCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke2xrfSA+ICR7bHZ9YFxuICAgICAgICAgICAgICBjYXNlIFwiZ3RlXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke2xrfSA+PSAke2x2fWBcbiAgICAgICAgICAgICAgY2FzZSBcIm5vdC1lcVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiB4LnZhbHVlID09PSBudWxsXG4gICAgICAgICAgICAgICAgICA/IGBJU19OVUxMKCR7a30pID0gZmFsc2VgXG4gICAgICAgICAgICAgICAgICA6IGAke2xrfSA8PiAke2x2fWBcbiAgICAgICAgICAgICAgY2FzZSB1bmRlZmluZWQ6XG4gICAgICAgICAgICAgIGNhc2UgXCJlcVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiB4LnZhbHVlID09PSBudWxsXG4gICAgICAgICAgICAgICAgICA/IGBJU19OVUxMKCR7a30pID0gdHJ1ZWBcbiAgICAgICAgICAgICAgICAgIDogYCR7bGt9ID0gJHtsdn1gXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICApXG4gICAgICAgIC5qb2luKGZpbHRlci5tb2RlID09PSBcIm9yXCIgPyBcIiBPUiBcIiA6IFwiIEFORCBcIilcbiAgICB9XG4gICAgJHtsbX1gLFxuICAgIHBhcmFtZXRlcnM6IFtcbiAgICAgIHsgbmFtZTogXCJAaWRcIiwgdmFsdWU6IGltcG9ydGVkTWFya2VySWQgfSxcbiAgICAgIC4uLmZpbHRlclxuICAgICAgICAud2hlcmVcbiAgICAgICAgLm1hcCgoeCwgaSkgPT4gKHtcbiAgICAgICAgICBuYW1lOiBgQHYke2l9YCxcbiAgICAgICAgICB2YWx1ZTogeC52YWx1ZVxuICAgICAgICB9KSlcbiAgICBdXG4gIH1cbn1cblxuLy8gZnVuY3Rpb24gaXNBcnJheSh0OiBTdXBwb3J0ZWRWYWx1ZXMgfCByZWFkb25seSBTdXBwb3J0ZWRWYWx1ZXNbXSk6IHQgaXMgcmVhZG9ubHkgU3VwcG9ydGVkVmFsdWVzW10ge1xuLy8gICByZXR1cm4gQXJyYXkuaXNBcnJheSh0KVxuLy8gfVxuXG5mdW5jdGlvbiBsb3dlcklmTmVlZGVkKGtleTogdW5rbm93biwgdmFsdWU6IHVua25vd24pIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiA/IGBMT1dFUigke2tleX0pYCA6IGAke2tleX1gXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZENvc21vc1F1ZXJ5PFBNPihcbiAgZmlsdGVyOiBMZWdhY3lGaWx0ZXI8UE0+IHwgU3RvcmVXaGVyZUZpbHRlcixcbiAgbmFtZTogc3RyaW5nLFxuICBpbXBvcnRlZE1hcmtlcklkOiBzdHJpbmcsXG4gIHNraXA/OiBudW1iZXIsXG4gIGxpbWl0PzogbnVtYmVyXG4pIHtcbiAgcmV0dXJuIGZpbHRlci50eXBlID09PSBcInN0YXJ0c1dpdGhcIlxuICAgICAgfHwgZmlsdGVyLnR5cGUgPT09IFwiZW5kc1dpdGhcIlxuICAgICAgfHwgZmlsdGVyLnR5cGUgPT09IFwiY29udGFpbnNcIlxuICAgID8gYnVpbGRMZWdhY3lDb3Ntb3NRdWVyeShmaWx0ZXIsIG5hbWUsIGltcG9ydGVkTWFya2VySWQsIHNraXAsIGxpbWl0KVxuICAgIDogYnVpbGRXaGVyZUNvc21vc1F1ZXJ5KGZpbHRlciwgbmFtZSwgaW1wb3J0ZWRNYXJrZXJJZCwgc2tpcCwgbGltaXQpXG59XG5cbmNsYXNzIENvc21vc0RiT3BlcmF0aW9uRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihyZWFkb25seSBtZXNzYWdlOiBzdHJpbmcpIHt9XG59XG5leHBvcnQgZnVuY3Rpb24gQ29zbW9zU3RvcmVMaXZlKGNvbmZpZzogQ29uZmlnPFN0b3JhZ2VDb25maWc+KSB7XG4gIHJldHVybiBjb25maWcuY29uZmlnLmZsYXRNYXAobWFrZUNvc21vc1N0b3JlKS50b0xheWVyKFN0b3JlTWFrZXIpXG59XG4iXX0=
360
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29zbW9zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vX3NyYy9zZXJ2aWNlcy9TdG9yZS9Db3Ntb3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQSx1REFBdUQ7QUFFdkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDBDQUEwQyxDQUFBO0FBQ3ZFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQTtBQUNoRCxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQWFoRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBRXpDLG9EQUFvRDtBQUNwRCxNQUFNLFVBQVUsZUFBZSxDQUFDLEVBQUUsTUFBTSxFQUFpQjtJQUN2RCxPQUFPLG9CQUFXLFFBQVEsQ0FBQyxFQUFDLENBQUM7UUFDM0IsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQTtRQUNyQyxPQUFPO1lBQ0wsSUFBSSxFQUFFLENBQ0osSUFBWSxFQUNaLElBQXlDLEVBQ3pDLE1BQXdCLEVBQ3hCLEVBQUUsQ0FDRixvQkFBVyxRQUFRLENBQUMsRUFBQyxDQUFDO2dCQUNwQixNQUFNLFdBQVcsR0FBRyxHQUFHLE1BQU0sR0FBRyxJQUFJLEVBQUUsQ0FBQTtnQkFDdEMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUNOLHdCQUFlLEdBQUcsRUFBRSxDQUNsQixFQUFFLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDO29CQUM5QixFQUFFLEVBQUUsV0FBVztvQkFDZixlQUFlLEVBQUUsTUFBTSxFQUFFLFVBQVU7d0JBQ2pDLENBQUMsQ0FBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLENBQUMsVUFBVSxFQUFFO3dCQUNuQyxDQUFDLENBQUMsU0FBUztpQkFDZCxDQUFDLENBQ0gsQ0FDRixDQUFBO2dCQUNELE1BQU0sU0FBUyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUE7Z0JBQzNDLE1BQU0sSUFBSSxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUE7Z0JBQ3ZELE1BQU0sU0FBUyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUE7Z0JBQzdELE1BQU0sZ0JBQWdCLEdBQUcsV0FBVyxDQUFBO2dCQUVwQyxNQUFNLE9BQU8sR0FBRyxDQUFDLEtBQWdDLEVBQUUsRUFBRSxDQUNuRCw0QkFBQSxzQkFBQSxvQkFDTyxRQUFRLENBQUMsRUFBQyxDQUFDO29CQUNkLDJDQUEyQztvQkFDM0MsK0NBQStDO29CQUMvQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUN0QixDQUFDLENBQUMsRUFBRSxFQUFFLENBQ0o7d0JBQ0UsQ0FBQzt3QkFDRCxzQkFBQSw2QkFBb0IsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUMxQixHQUFHLEVBQUUsQ0FBQyxDQUFDOzRCQUNMLGFBQWEsRUFBRSxRQUFpQjs0QkFDaEMsWUFBWSxFQUFFO2dDQUNaLEdBQUcsSUFBSSxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUM7Z0NBQ25CLGFBQWEsRUFBRSxNQUFNLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FBQzs2QkFDbEM7NEJBQ1IsWUFBWSxFQUFFLE1BQU0sRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDO3lCQUN4QyxDQUFDLEVBQ0YsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7NEJBQ1QsYUFBYSxFQUFFLFNBQWtCOzRCQUNqQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUU7NEJBQ1IsWUFBWSxFQUFFO2dDQUNaLEdBQUcsSUFBSSxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUM7Z0NBQ25CLGFBQWEsRUFBRSxNQUFNLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FBQzs2QkFDbEM7NEJBQ1IsT0FBTyxFQUFFLElBQUk7NEJBQ2IsWUFBWSxFQUFFLE1BQU0sRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDO3lCQUN4QyxDQUFDLENBQ0g7cUJBQ08sQ0FDYixDQUFBO29CQUNELE1BQU0sT0FBTyxtQ0FBRyx1QkFBQSxDQUFDLEVBQU8sTUFBTSxFQUFFLFdBQVcsSUFBSSxFQUFFLENBQUMsQ0FBZ0IsQ0FBQTtvQkFFbEUsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUMxQiw0QkFBQSxPQUFPO3lCQUNKLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBVSxDQUFDLEVBRTdCLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUNiLHdCQUFBLHNCQUFBLHdCQUNXLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQ3hDLHdCQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQ3RDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FDckIsb0JBQVcsUUFBUSxDQUFDLEVBQUMsQ0FBQzt3QkFDcEIsTUFBTSxDQUFDLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDLFVBQVUsS0FBSyxHQUFHLENBQUMsQ0FBQTt3QkFDN0UsSUFBSSxDQUFDLEVBQUU7NEJBQ0wsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQ2IscUJBQ0UsSUFBSSw4QkFBOEIsQ0FDaEMsSUFBSSxFQUNKLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQ3ZDLENBQ0YsQ0FDRixDQUFBO3lCQUNGO3dCQUNELE1BQU0sRUFBRSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQ3ZCLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FDaEQsQ0FBQTt3QkFDRCxJQUFJLEVBQUUsRUFBRTs0QkFDTixPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FDYixvQkFDRSxJQUFJLHNCQUFzQixDQUN4Qiw2QkFBNkIsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUM5QyxDQUNGLENBQ0YsQ0FBQTt5QkFDRjt3QkFDRCxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQzs0QkFDNUIsR0FBRyxDQUFDOzRCQUNKLG9FQUFvRTs0QkFDcEUsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUUsQ0FBQyxJQUFJO3lCQUMxQixDQUFDLENBQUMsQ0FBQTtvQkFDTCxDQUFDLENBQUMsQ0FDSCxDQUNOLENBQ0osQ0FBQTtvQkFDRCxPQUFPLFdBQVcsQ0FBQyxJQUFJLEVBQTBDLENBQUE7Z0JBQ25FLENBQUMsQ0FBQyxFQUNVLGdCQUFnQixDQUFDLEVBQ2hCLFdBQVcsRUFBRSxXQUFXLENBQUMsQ0FBQTtnQkFFMUMsTUFBTSxRQUFRLEdBQUcsQ0FBQyxLQUFnQyxFQUFFLEVBQUU7b0JBQ3BELE9BQU8sNEJBQUEsc0JBQUEsd0JBQ0ksR0FBRyxFQUFFO3dCQUNaLE1BQU0sS0FBSyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQzFCLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FDSjs0QkFDRSxDQUFDOzRCQUNELHNCQUFBLDZCQUFvQixDQUFDLENBQUMsS0FBSyxDQUFDLEVBQzFCLEdBQUcsRUFBRSxDQUFDLENBQUM7Z0NBQ0wsYUFBYSxFQUFFLFFBQWlCO2dDQUNoQyxZQUFZLEVBQUU7b0NBQ1osR0FBRyxJQUFJLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQztvQ0FDbkIsYUFBYSxFQUFFLE1BQU0sRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDO2lDQUNsQzs2QkFDVCxDQUFDLEVBQ0YsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0NBQ1QsYUFBYSxFQUFFLFNBQWtCO2dDQUNqQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUU7Z0NBQ1IsWUFBWSxFQUFFO29DQUNaLEdBQUcsSUFBSSxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUM7b0NBQ25CLGFBQWEsRUFBRSxNQUFNLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FBQztpQ0FDbEM7Z0NBQ1IsT0FBTyxFQUFFLElBQUk7NkJBQ2QsQ0FBQyxDQUNIO3lCQUNPLENBQ2IsQ0FBQTt3QkFFRCxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQTt3QkFFbEMsT0FBTyx3QkFBQSx3QkFDSSxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxZQUFZLENBQUMsYUFBYSxDQUFDLENBQUMsRUFDdkQsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUNiLG9CQUFXLFFBQVEsQ0FBQyxFQUFDLENBQUM7NEJBQ3BCLE1BQU0sTUFBTSxHQUFHLENBQUMsQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFBOzRCQUM3QixNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUM3QixDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDLFVBQVUsR0FBRyxHQUFHLENBQ3JELENBQUE7NEJBQ0QsSUFBSSxXQUFXLEVBQUU7Z0NBQ2YsTUFBTSxJQUFJLEdBQUcsV0FBVyxDQUFDLFVBQVUsSUFBSSxDQUFDLENBQUE7Z0NBQ3hDLElBQUksSUFBSSxLQUFLLEdBQUcsSUFBSSxJQUFJLEtBQUssR0FBRyxFQUFFO29DQUNoQyxPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FDYixxQkFBWSxJQUFJLDhCQUE4QixDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUMvRCxDQUFBO2lDQUNGO2dDQUVELE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUNiLG9CQUNFLElBQUksc0JBQXNCLENBQUMsNkJBQTZCLEdBQUcsSUFBSSxDQUFDLENBQ2pFLENBQ0YsQ0FBQTs2QkFDRjs0QkFFRCxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztnQ0FDNUIsR0FBRyxDQUFDO2dDQUNKLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSTs2QkFDdkIsQ0FBQyxDQUF5QyxDQUFBO3dCQUM3QyxDQUFDLENBQUMsQ0FDSCxDQUFBO29CQUNMLENBQUMsQ0FBQyxFQUNVLGlCQUFpQixDQUFDLEVBQ2pCLFdBQVcsRUFBRSxXQUFXLENBQUMsQ0FBQTtnQkFDMUMsQ0FBQyxDQUFBO2dCQUVELE1BQU0sQ0FBQyxHQUFrQjtvQkFDdkIsR0FBRyxFQUFFLDRCQUFBLHNCQUFBLHdCQUFBLG9CQUFBLDJCQUFPLENBQUE7d0JBQ1YsS0FBSyxFQUFFLGlCQUFpQixJQUFJLHNCQUFzQjt3QkFDbEQsVUFBVSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxDQUFDO3FCQUN2RCxDQUFBLENBQUMsRUFDSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQ2YsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUNiLHdCQUFlLEdBQUcsRUFBRSxDQUNsQixTQUFTO3lCQUNOLEtBQUs7eUJBQ0wsS0FBSyxDQUFLLENBQUMsQ0FBQzt5QkFDWixRQUFRLEVBQUU7eUJBQ1YsSUFBSSxDQUFDLENBQUMsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQ3RDLENBQ0YsRUFDVyxZQUFZLENBQUMsRUFDWixXQUFXLEVBQUUsV0FBVyxDQUFDO29CQUN4QyxnQkFBZ0IsRUFBRSxDQUNoQixNQUF3QixFQUN4QixNQUEwQyxFQUMxQyxFQUFFLENBQ0YsNEJBQUEsc0JBQUEsb0JBQUEsNEJBQUEsTUFBTTt5QkFDSCxJQUFJLEVBQ1UsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUNuQix3QkFBQSxvQkFBQSwyQkFBTyxnQ0FBZ0MsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUMvRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQ2YsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUNiLHdCQUFlLEdBQUcsRUFBRSxDQUNsQixTQUFTO3lCQUNOLEtBQUs7eUJBQ0wsS0FBSyxDQUFJLENBQUMsQ0FBQzt5QkFDWCxRQUFRLEVBQUU7eUJBQ1YsSUFBSSxDQUFDLENBQUMsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQ3RDLENBQ0YsQ0FDSixFQUNJLENBQUMsQ0FBQyxFQUFFLEVBQUU7d0JBQ1QsTUFBTSxDQUFDLEdBQUcsQ0FBQzs2QkFDUixPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQzs2QkFDakIsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FDVCxnQkFBQSxNQUFNLENBQ0osQ0FBQyxFQUNELENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxJQUFJLEVBQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUE4QixDQUFBLENBQ3hFLENBQ0YsQ0FBQTt3QkFDSCxPQUFPLENBQUMsQ0FBQTtvQkFDVixDQUFDLENBQUMsRUFDVSx5QkFBeUIsQ0FBQyxFQUN6QixXQUFXLEVBQUUsV0FBVyxDQUFDO29CQUMxQzs7dUJBRUc7b0JBQ0gsTUFBTSxFQUFFLENBQUMsTUFBa0IsRUFBRSxNQUEwQyxFQUFFLEVBQUU7d0JBQ3pFLE1BQU0sSUFBSSxHQUFHLE1BQU0sRUFBRSxJQUFJLENBQUE7d0JBQ3pCLE1BQU0sS0FBSyxHQUFHLE1BQU0sRUFBRSxLQUFLLENBQUE7d0JBQzNCLE9BQU8sNEJBQUEsc0JBQUEsQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLFdBQVc7NEJBQ2pDLHVFQUF1RTs0QkFDdkUsZ0lBQWdJOzRCQUNoSSxzQ0FBc0M7NEJBQ3RDLENBQUMsQ0FBQyxvQkFBQSw0QkFBQSxNQUFNO2lDQUNMLElBQUksRUFDVSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQ25CLHdCQUFBLG9CQUFBLDJCQUFPLHdCQUF3QixDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUN2RCxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQ2YsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUNiLHdCQUFlLEdBQUcsRUFBRSxDQUNsQixTQUFTO2lDQUNOLEtBQUs7aUNBQ0wsS0FBSyxDQUFLLENBQUMsQ0FBQztpQ0FDWixRQUFRLEVBQUU7aUNBQ1YsSUFBSSxDQUFDLENBQUMsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQ3RDLENBQ0YsQ0FDSixFQUNJLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQzs0QkFDbEMsQ0FBQyxDQUFDLHdCQUFBLG9CQUFBLDJCQUFPLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQ2hFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFDZixDQUFDLENBQUMsRUFBRSxFQUFFLENBQ2Isd0JBQWUsR0FBRyxFQUFFLENBQ2xCLFNBQVM7aUNBQ04sS0FBSztpQ0FDTCxLQUFLLENBQ0osQ0FBQyxDQUNGO2lDQUNBLFFBQVEsRUFBRTtpQ0FDVixJQUFJLENBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDdEQsQ0FDRixDQUFDLEVBQ1EsZUFBZSxDQUFDLEVBQ2YsV0FBVyxFQUFFLFdBQVcsQ0FBQyxDQUFBO29CQUMxQyxDQUFDO29CQUNELElBQUksRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQ1gsNEJBQUEsc0JBQUEsd0JBQ1csR0FBRyxFQUFFLENBQ1osU0FBUzt5QkFDTixJQUFJLENBQUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxjQUFjLENBQUMsRUFBRSxFQUFFLEVBQVEsQ0FBQyxDQUFDO3lCQUM5QyxJQUFJLEVBQU07eUJBQ1YsSUFBSSxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLENBQUMsNkJBQW9CLFFBQVEsQ0FBQyxDQUFDLENBQ3pELEVBQ1csYUFBYSxDQUFDLEVBQ2IsV0FBVyxFQUFFLFdBQVcsQ0FBQztvQkFDMUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FDVCw0QkFBQSxzQkFBQSx3QkFBQSxzQkFBQSw2QkFDZ0IsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUVwQixHQUFHLEVBQUUsQ0FDSCx3QkFBZSxHQUFHLEVBQUUsQ0FDbEIsU0FBUyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7d0JBQ3JCLEdBQUcsQ0FBQzt3QkFDSixhQUFhLEVBQUUsTUFBTSxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQUM7cUJBQ3pDLENBQUMsQ0FDSCxFQUNILENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FDUCx3QkFBZSxHQUFHLEVBQUUsQ0FDbEIsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQ3JELEVBQUUsR0FBRyxDQUFDLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFDbEQ7d0JBQ0UsZUFBZSxFQUFFOzRCQUNmLElBQUksRUFBRSxTQUFTOzRCQUNmLFNBQVMsRUFBRSxJQUFJO3lCQUNoQjtxQkFDRixDQUNGLENBQ0YsQ0FDSixFQUNRLENBQUMsQ0FBQyxFQUFFLEVBQUU7d0JBQ2IsSUFBSSxDQUFDLENBQUMsVUFBVSxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUMsVUFBVSxLQUFLLEdBQUcsRUFBRTs0QkFDaEQsT0FBTyxxQkFBWSxJQUFJLDhCQUE4QixDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTt5QkFDbkU7d0JBQ0QsSUFBSSxDQUFDLENBQUMsVUFBVSxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUMsVUFBVSxHQUFHLEdBQUcsRUFBRTs0QkFDNUMsT0FBTyxvQkFDTCxJQUFJLHNCQUFzQixDQUN4Qiw2QkFBNkIsR0FBRyxDQUFDLENBQUMsVUFBVSxDQUM3QyxDQUNGLENBQUE7eUJBQ0Y7d0JBQ0QsT0FBTywyQkFBTyxDQUFBOzRCQUNaLEdBQUcsQ0FBQzs0QkFDSixLQUFLLEVBQUUsQ0FBQyxDQUFDLElBQUk7eUJBQ2QsQ0FBQSxDQUFDLENBQUE7b0JBQ0osQ0FBQyxDQUFDLEVBQ1UsWUFBWSxDQUFDLEVBQ1osV0FBVyxFQUFFLFdBQVcsQ0FBQztvQkFDMUMsUUFBUTtvQkFDUixPQUFPO29CQUNQLE1BQU0sRUFBRSxDQUFDLENBQUssRUFBRSxFQUFFLENBQ2hCLDRCQUFBLHNCQUFBLHdCQUNXLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxNQUFNLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsRUFDNUQsZUFBZSxDQUFDLEVBQ2YsV0FBVyxFQUFFLFdBQVcsQ0FBQztpQkFDM0MsQ0FBQTtnQkFFRCxtQkFBbUI7Z0JBQ25CLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FDckIsd0JBQWUsR0FBRyxFQUFFLENBQ2xCLFNBQVM7cUJBQ04sSUFBSSxDQUFDLGdCQUFnQixFQUFFLGdCQUFnQixDQUFDO3FCQUN4QyxJQUFJLEVBQWtCO3FCQUN0QixJQUFJLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsQ0FBQyw2QkFBb0IsUUFBUSxDQUFDLENBQUMsQ0FDekQsQ0FDRixDQUFBO2dCQUVELElBQUksQ0FBQyx1QkFBQSxNQUFNLENBQVMsRUFBRTtvQkFDcEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyx5QkFBeUIsR0FBRyxJQUFJLENBQUMsQ0FBQTtvQkFDN0MsSUFBSSxJQUFJLEVBQUU7d0JBQ1IsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFBO3dCQUN4QixLQUFLLENBQUMsQ0FBQyxDQUFDLENBQ04sOEJBQUEsNkVBQU8sQ0FBQyxFQUFpQixFQUNYLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FDaEIsNENBQUEsQ0FBQzs2QkFDRSxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBR0osd0JBQW9CLElBQUksQ0FBQyxDQUFDLENBQ3BDLENBQ0osQ0FBQTtxQkFDRjtvQkFDRCxtQkFBbUI7b0JBQ25CLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FDTix3QkFBZSxHQUFHLEVBQUUsQ0FDbEIsU0FBUyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7d0JBQ3JCLGFBQWEsRUFBRSxnQkFBZ0I7d0JBQy9CLEVBQUUsRUFBRSxnQkFBZ0I7cUJBQ3JCLENBQUMsQ0FDSCxDQUNGLENBQUE7aUJBQ0Y7Z0JBQ0QsT0FBTyxDQUFDLENBQUE7WUFDVixDQUFDLENBQUM7U0FDTCxDQUFBO0lBQ0gsQ0FBQyxDQUFDLENBQUE7QUFDSixDQUFDO0FBRUQsU0FBUyxRQUFRLENBQUMsQ0FNakI7SUFDQyxPQUVTLDZCQUFvQjtRQUN6QixLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUs7UUFDZCxVQUFVLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FDeEIsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDN0IsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFBO1lBQ3JCLE9BQU8sR0FBRyxDQUFBO1FBQ1osQ0FBQyxFQUFFLEVBQWtFLENBQUMsRUFDdEUsU0FBUyxFQUNULENBQUMsQ0FDRjtLQUNGLENBQUMsQ0FaRyx5QkFDSyxjQUFjLENBQUMsRUFXdEI7QUFDUCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsZ0NBQWdDLENBQzlDLE1BQXdCLEVBQ3hCLENBQVMsRUFDVCxJQUFZLEVBQ1osSUFBYSxFQUNiLEtBQWM7SUFFZCxNQUFNLEVBQUUsR0FBRyxJQUFJLEtBQUssU0FBUyxJQUFJLEtBQUssS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLElBQUksTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtJQUMxRyxPQUFPO1FBQ0wsS0FBSyxFQUFFOztPQUVKLElBQUk7Y0FDRyxDQUFDO2dCQUNDLE1BQU0sQ0FBQyxRQUFRO0VBQzdCLEVBQUU7Q0FDSDtRQUNHLFVBQVUsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO0tBQ3RELENBQUE7QUFDSCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsd0JBQXdCLENBQ3RDLE1BQXNCLEVBQ3RCLENBQVMsRUFDVCxJQUFZLEVBQ1osSUFBYSxFQUNiLEtBQWM7SUFFZCxNQUFNLEVBQUUsR0FBRyxJQUFJLEtBQUssU0FBUyxJQUFJLEtBQUssS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLElBQUksTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtJQUMxRyxPQUFPO1FBQ0wsS0FBSyxFQUFFOztPQUVKLElBQUk7Y0FDRyxDQUFDO2dCQUNDLE1BQU0sQ0FBQyxRQUFRO0VBQzdCLEVBQUUsRUFBRTtRQUNGLFVBQVUsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO0tBQ3RELENBQUE7QUFDSCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsc0JBQXNCLENBQ3BDLE1BQXdCLEVBQ3hCLElBQVksRUFDWixnQkFBd0IsRUFDeEIsSUFBYSxFQUNiLEtBQWM7SUFFZCxNQUFNLEVBQUUsR0FBRyxJQUFJLEtBQUssU0FBUyxJQUFJLEtBQUssS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLElBQUksTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtJQUMxRyxPQUFPO1FBQ0wsS0FBSyxFQUFFOztXQUVBLElBQUk7OEJBRVQsTUFBTSxDQUNKLE1BQU0sQ0FBQyxFQUFFLENBRWI7SUFDQSxFQUFFLEVBQUU7UUFDSixVQUFVLEVBQUU7WUFDVixFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLGdCQUFnQixFQUFFO1lBQ3hDO2dCQUNFLElBQUksRUFBRSxTQUFTO2dCQUNmLEtBQUssRUFBRSxNQUFNLENBQUMsSUFBSSxLQUFLLFVBQVU7b0JBQy9CLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxLQUFLLEVBQUU7b0JBQ3BCLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLFVBQVU7d0JBQzVCLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxLQUFLLEdBQUc7d0JBQ3JCLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxLQUFLLEdBQUc7YUFDdkI7U0FDRjtLQUNGLENBQUE7QUFDSCxDQUFDO0FBRUQsTUFBTSxVQUFVLHFCQUFxQixDQUNuQyxNQUF3QixFQUN4QixJQUFZLEVBQ1osZ0JBQXdCLEVBQ3hCLElBQWEsRUFDYixLQUFjO0lBRWQsTUFBTSxFQUFFLEdBQUcsSUFBSSxLQUFLLFNBQVMsSUFBSSxLQUFLLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxJQUFJLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUE7SUFDMUcsT0FBTztRQUNMLEtBQUssRUFBRTs7V0FFQSxJQUFJO01BRVQsb0RBQUEsTUFBTTthQUNILEtBQUs7YUFDTCxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQ3JDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDbEMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUNUO2FBQ3hCLElBQUksQ0FBQyxJQUFJLENBQ2Q7NEJBRUUsTUFBTTthQUNILEtBQUs7YUFDTCxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUNULENBQUMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztZQUNwQixDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBRSxFQUFFO1lBQ25FLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FDckI7YUFDQSxHQUFHLENBQ0YsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDUCxNQUFNLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFBO1lBQzNCLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUE7WUFFbEIsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUNYLEtBQUssSUFBSTtvQkFDUCxPQUFPLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUE7Z0JBQ3JDLEtBQUssUUFBUTtvQkFDWCxPQUFPLHVCQUF1QixDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUE7Z0JBQzNDLEtBQUssV0FBVztvQkFDZCxPQUFPLFlBQVksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFBO2dCQUNyQyxLQUFLLFVBQVU7b0JBQ2IsT0FBTyxZQUFZLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQTtnQkFDckMsS0FBSyxhQUFhO29CQUNoQixPQUFPLGNBQWMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFBO2FBQ3hDO1lBRUQsTUFBTSxFQUFFLEdBQUcsYUFBYSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUE7WUFDcEMsTUFBTSxFQUFFLEdBQUcsYUFBYSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUE7WUFFcEMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUNYLEtBQUssSUFBSTtvQkFDUCxPQUFPLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFBO2dCQUN4QixLQUFLLEtBQUs7b0JBQ1IsT0FBTyxHQUFHLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQTtnQkFDekIsS0FBSyxJQUFJO29CQUNQLE9BQU8sR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUE7Z0JBQ3hCLEtBQUssS0FBSztvQkFDUixPQUFPLEdBQUcsRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFBO2dCQUN6QixLQUFLLFFBQVE7b0JBQ1gsT0FBTyxDQUFDLENBQUMsS0FBSyxLQUFLLElBQUk7d0JBQ3JCLENBQUMsQ0FBQyxXQUFXLENBQUMsV0FBVzt3QkFDekIsQ0FBQyxDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFBO2dCQUN0QixLQUFLLFNBQVMsQ0FBQztnQkFDZixLQUFLLElBQUk7b0JBQ1AsT0FBTyxDQUFDLENBQUMsS0FBSyxLQUFLLElBQUk7d0JBQ3JCLENBQUMsQ0FBQyxXQUFXLENBQUMsVUFBVTt3QkFDeEIsQ0FBQyxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFBO2FBQ3RCO1FBQ0gsQ0FBQyxDQUNGO2FBQ0EsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FDakQ7TUFDRSxFQUFFLEVBQUU7UUFDTixVQUFVLEVBQUU7WUFDVixFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLGdCQUFnQixFQUFFO1lBQ3hDLEdBQUcsTUFBTTtpQkFDTixLQUFLO2lCQUNMLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ2QsSUFBSSxFQUFFLEtBQUssQ0FBQyxFQUFFO2dCQUNkLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSzthQUNmLENBQUMsQ0FBQztTQUNOO0tBQ0YsQ0FBQTtBQUNILENBQUM7QUFFRCx1R0FBdUc7QUFDdkcsNEJBQTRCO0FBQzVCLElBQUk7QUFFSixTQUFTLGFBQWEsQ0FBQyxHQUFZLEVBQUUsS0FBYztJQUNqRCxPQUFPLE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQTtBQUMvRCxDQUFDO0FBRUQsTUFBTSxVQUFVLGdCQUFnQixDQUM5QixNQUEyQyxFQUMzQyxJQUFZLEVBQ1osZ0JBQXdCLEVBQ3hCLElBQWEsRUFDYixLQUFjO0lBRWQsT0FBTyxNQUFNLENBQUMsSUFBSSxLQUFLLFlBQVk7V0FDNUIsTUFBTSxDQUFDLElBQUksS0FBSyxVQUFVO1dBQzFCLE1BQU0sQ0FBQyxJQUFJLEtBQUssVUFBVTtRQUMvQixDQUFDLENBQUMsc0JBQXNCLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDO1FBQ3JFLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQTtBQUN4RSxDQUFDO0FBRUQsTUFBTSxzQkFBc0I7SUFDTDtJQUFyQixZQUFxQixPQUFlO1FBQWYsWUFBTyxHQUFQLE9BQU8sQ0FBUTtJQUFHLENBQUM7Q0FDekM7QUFDRCxNQUFNLFVBQVUsZUFBZSxDQUFDLE1BQTZCO0lBQzNELE9BQU8sd0JBQUEsK0NBQUEsTUFBTSxHQUFnQixlQUFlLENBQUMsRUFBUyxVQUFVLENBQUMsQ0FBQTtBQUNuRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuXG5pbXBvcnQgeyBDb3Ntb3NDbGllbnQgfSBmcm9tIFwiQGVmZmVjdC1hcHAvaW5mcmEtYWRhcHRlcnMvY29zbW9zLWNsaWVudFwiXG5pbXBvcnQgeyBvbWl0IH0gZnJvbSBcIkBlZmZlY3QtYXBwL3ByZWx1ZGUvdXRpbHNcIlxuaW1wb3J0IHsgT3B0aW1pc3RpY0NvbmN1cnJlbmN5RXhjZXB0aW9uIH0gZnJvbSBcIi4uLy4uL2Vycm9ycy5qc1wiXG5pbXBvcnQgdHlwZSB7XG4gIEZpbHRlcixcbiAgRmlsdGVySm9pblNlbGVjdCxcbiAgSm9pbkZpbmRGaWx0ZXIsXG4gIExlZ2FjeUZpbHRlcixcbiAgUGVyc2lzdGVuY2VNb2RlbFR5cGUsXG4gIFN0b3JhZ2VDb25maWcsXG4gIFN0b3JlLFxuICBTdG9yZUNvbmZpZyxcbiAgU3RvcmVXaGVyZUZpbHRlcixcbiAgU3VwcG9ydGVkVmFsdWVzXG59IGZyb20gXCIuL3NlcnZpY2UuanNcIlxuaW1wb3J0IHsgU3RvcmVNYWtlciB9IGZyb20gXCIuL3NlcnZpY2UuanNcIlxuXG4vLyBUT0RPOiBSZXRyeSBvcGVyYXRpb24gd2hlbiBydW5uaW5nIGludG8gUlUgbGltaXQuXG5leHBvcnQgZnVuY3Rpb24gbWFrZUNvc21vc1N0b3JlKHsgcHJlZml4IH06IFN0b3JhZ2VDb25maWcpIHtcbiAgcmV0dXJuIEVmZmVjdC5nZW4oZnVuY3Rpb24qKCQpIHtcbiAgICBjb25zdCB7IGRiIH0gPSB5aWVsZCogJChDb3Ntb3NDbGllbnQpXG4gICAgcmV0dXJuIHtcbiAgICAgIG1ha2U6IDxJZCBleHRlbmRzIHN0cmluZywgUE0gZXh0ZW5kcyBQZXJzaXN0ZW5jZU1vZGVsVHlwZTxJZD4+KFxuICAgICAgICBuYW1lOiBzdHJpbmcsXG4gICAgICAgIHNlZWQ/OiBFZmZlY3Q8bmV2ZXIsIG5ldmVyLCBJdGVyYWJsZTxQTT4+LFxuICAgICAgICBjb25maWc/OiBTdG9yZUNvbmZpZzxQTT5cbiAgICAgICkgPT5cbiAgICAgICAgRWZmZWN0LmdlbihmdW5jdGlvbiooJCkge1xuICAgICAgICAgIGNvbnN0IGNvbnRhaW5lcklkID0gYCR7cHJlZml4fSR7bmFtZX1gXG4gICAgICAgICAgeWllbGQqICQoXG4gICAgICAgICAgICBFZmZlY3QucHJvbWlzZSgoKSA9PlxuICAgICAgICAgICAgICBkYi5jb250YWluZXJzLmNyZWF0ZUlmTm90RXhpc3RzKHtcbiAgICAgICAgICAgICAgICBpZDogY29udGFpbmVySWQsXG4gICAgICAgICAgICAgICAgdW5pcXVlS2V5UG9saWN5OiBjb25maWc/LnVuaXF1ZUtleXNcbiAgICAgICAgICAgICAgICAgID8geyB1bmlxdWVLZXlzOiBjb25maWcudW5pcXVlS2V5cyB9XG4gICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICAgIClcbiAgICAgICAgICBjb25zdCBjb250YWluZXIgPSBkYi5jb250YWluZXIoY29udGFpbmVySWQpXG4gICAgICAgICAgY29uc3QgYnVsayA9IGNvbnRhaW5lci5pdGVtcy5idWxrLmJpbmQoY29udGFpbmVyLml0ZW1zKVxuICAgICAgICAgIGNvbnN0IGV4ZWNCYXRjaCA9IGNvbnRhaW5lci5pdGVtcy5iYXRjaC5iaW5kKGNvbnRhaW5lci5pdGVtcylcbiAgICAgICAgICBjb25zdCBpbXBvcnRlZE1hcmtlcklkID0gY29udGFpbmVySWRcblxuICAgICAgICAgIGNvbnN0IGJ1bGtTZXQgPSAoaXRlbXM6IE5vbkVtcHR5UmVhZG9ubHlBcnJheTxQTT4pID0+XG4gICAgICAgICAgICBFZmZlY3RcbiAgICAgICAgICAgICAgLmdlbihmdW5jdGlvbiooJCkge1xuICAgICAgICAgICAgICAgIC8vIFRPRE86IGRpc2FibGUgYmF0Y2hpbmcgaWYgbmVlZCBhdG9taWNpdHlcbiAgICAgICAgICAgICAgICAvLyB3ZSBkZWxheSBhbmQgYmF0Y2ggdG8ga2VlcCBsb3cgYW1vdW50IG9mIFJVc1xuICAgICAgICAgICAgICAgIGNvbnN0IGIgPSBbLi4uaXRlbXNdLm1hcChcbiAgICAgICAgICAgICAgICAgICh4KSA9PlxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICBPcHRpb24uZnJvbU51bGxhYmxlKHguX2V0YWcpLm1hdGNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgKCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uVHlwZTogXCJDcmVhdGVcIiBhcyBjb25zdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VCb2R5OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ub21pdCh4LCBcIl9ldGFnXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9wYXJ0aXRpb25LZXk6IGNvbmZpZz8ucGFydGl0aW9uVmFsdWUoeClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSBhcyBhbnksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRpdGlvbktleTogY29uZmlnPy5wYXJ0aXRpb25WYWx1ZSh4KVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAoZVRhZykgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uVHlwZTogXCJSZXBsYWNlXCIgYXMgY29uc3QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB4LmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZUJvZHk6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5vbWl0KHgsIFwiX2V0YWdcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX3BhcnRpdGlvbktleTogY29uZmlnPy5wYXJ0aXRpb25WYWx1ZSh4KVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9IGFzIGFueSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWZNYXRjaDogZVRhZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcGFydGl0aW9uS2V5OiBjb25maWc/LnBhcnRpdGlvblZhbHVlKHgpXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgXSBhcyBjb25zdFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBjb25zdCBiYXRjaGVzID0gYi5jaHVuayhjb25maWc/Lm1heEJ1bGtTaXplID8/IDEwKS50b1JlYWRvbmx5QXJyYXlcblxuICAgICAgICAgICAgICAgIGNvbnN0IGJhdGNoUmVzdWx0ID0geWllbGQqICQoXG4gICAgICAgICAgICAgICAgICBiYXRjaGVzXG4gICAgICAgICAgICAgICAgICAgIC5tYXAoKHgsIGkpID0+IFtpLCB4XSBhcyBjb25zdClcbiAgICAgICAgICAgICAgICAgICAgLmZvckVhY2hFZmZlY3QoXG4gICAgICAgICAgICAgICAgICAgICAgKFtpLCBiYXRjaF0pID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBFZmZlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLnByb21pc2UoKCkgPT4gYnVsayhiYXRjaC5tYXAoKFssIG9wXSkgPT4gb3ApKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLmRlbGF5KER1cmF0aW9uLm1ha2VNaWxsaXMoaSA9PT0gMCA/IDAgOiAxMTAwKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLmZsYXRNYXAoKHJlc3BvbnNlcykgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFZmZlY3QuZ2VuKGZ1bmN0aW9uKigkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByID0gcmVzcG9uc2VzLmZpbmQoKHgpID0+IHguc3RhdHVzQ29kZSA9PT0gNDEyIHx8IHguc3RhdHVzQ29kZSA9PT0gNDA0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHlpZWxkKiAkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVmZmVjdC5mYWlsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IE9wdGltaXN0aWNDb25jdXJyZW5jeUV4Y2VwdGlvbihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoci5yZXNvdXJjZUJvZHk/LltcImlkXCJdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcjIgPSByZXNwb25zZXMuZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHgpID0+IHguc3RhdHVzQ29kZSA+IDI5OSB8fCB4LnN0YXR1c0NvZGUgPCAyMDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyMikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geWllbGQqICQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRWZmZWN0LmRpZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBDb3Ntb3NEYk9wZXJhdGlvbkVycm9yKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm5vdCBhYmxlIHRvIHVwZGF0ZSByZWNvcmQ6IFwiICsgcjIuc3RhdHVzQ29kZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJhdGNoLm1hcCgoW2VdLCBpKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfZXRhZzogcmVzcG9uc2VzW2ldIS5lVGFnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgcmV0dXJuIGJhdGNoUmVzdWx0LmZsYXQoKSBhcyB1bmtub3duIGFzIE5vbkVtcHR5UmVhZG9ubHlBcnJheTxQTT5cbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgLmluc3RydW1lbnQoXCJjb3Ntb3MuYnVsa1NldFwiKVxuICAgICAgICAgICAgICAubG9nQW5ub3RhdGUoXCJjb3Ntb3MuZGJcIiwgY29udGFpbmVySWQpXG5cbiAgICAgICAgICBjb25zdCBiYXRjaFNldCA9IChpdGVtczogTm9uRW1wdHlSZWFkb25seUFycmF5PFBNPikgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIEVmZmVjdFxuICAgICAgICAgICAgICAuc3VzcGVuZCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYmF0Y2ggPSBbLi4uaXRlbXNdLm1hcChcbiAgICAgICAgICAgICAgICAgICh4KSA9PlxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICBPcHRpb24uZnJvbU51bGxhYmxlKHguX2V0YWcpLm1hdGNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgKCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uVHlwZTogXCJDcmVhdGVcIiBhcyBjb25zdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VCb2R5OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ub21pdCh4LCBcIl9ldGFnXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9wYXJ0aXRpb25LZXk6IGNvbmZpZz8ucGFydGl0aW9uVmFsdWUoeClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSBhcyBhbnlcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgKGVUYWcpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvblR5cGU6IFwiUmVwbGFjZVwiIGFzIGNvbnN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogeC5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VCb2R5OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ub21pdCh4LCBcIl9ldGFnXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9wYXJ0aXRpb25LZXk6IGNvbmZpZz8ucGFydGl0aW9uVmFsdWUoeClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSBhcyBhbnksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmTWF0Y2g6IGVUYWdcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICBdIGFzIGNvbnN0XG4gICAgICAgICAgICAgICAgKVxuXG4gICAgICAgICAgICAgICAgY29uc3QgZXggPSBiYXRjaC5tYXAoKFssIGNdKSA9PiBjKVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIEVmZmVjdFxuICAgICAgICAgICAgICAgICAgLnByb21pc2UoKCkgPT4gZXhlY0JhdGNoKGV4LCBleFswXT8ucmVzb3VyY2VCb2R5Ll9wYXJ0aXRpb25LZXkpKVxuICAgICAgICAgICAgICAgICAgLmZsYXRNYXAoKHgpID0+XG4gICAgICAgICAgICAgICAgICAgIEVmZmVjdC5nZW4oZnVuY3Rpb24qKCQpIHtcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSB4LnJlc3VsdCA/PyBbXVxuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpcnN0RmFpbGVkID0gcmVzdWx0LmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAoeDogYW55KSA9PiB4LnN0YXR1c0NvZGUgPiAyOTkgfHwgeC5zdGF0dXNDb2RlIDwgMjAwXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgIGlmIChmaXJzdEZhaWxlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY29kZSA9IGZpcnN0RmFpbGVkLnN0YXR1c0NvZGUgPz8gMFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvZGUgPT09IDQxMiB8fCBjb2RlID09PSA0MDQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHlpZWxkKiAkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVmZmVjdC5mYWlsKG5ldyBPcHRpbWlzdGljQ29uY3VycmVuY3lFeGNlcHRpb24obmFtZSwgXCJiYXRjaFwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geWllbGQqICQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIEVmZmVjdC5kaWUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IENvc21vc0RiT3BlcmF0aW9uRXJyb3IoXCJub3QgYWJsZSB0byB1cGRhdGUgcmVjb3JkOiBcIiArIGNvZGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYmF0Y2gubWFwKChbZV0sIGkpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5lLFxuICAgICAgICAgICAgICAgICAgICAgICAgX2V0YWc6IHJlc3VsdFtpXT8uZVRhZ1xuICAgICAgICAgICAgICAgICAgICAgIH0pKSBhcyB1bmtub3duIGFzIE5vbkVtcHR5UmVhZG9ubHlBcnJheTxQTT5cbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgLmluc3RydW1lbnQoXCJjb3Ntb3MuYmF0Y2hTZXRcIilcbiAgICAgICAgICAgICAgLmxvZ0Fubm90YXRlKFwiY29zbW9zLmRiXCIsIGNvbnRhaW5lcklkKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IHM6IFN0b3JlPFBNLCBJZD4gPSB7XG4gICAgICAgICAgICBhbGw6IEVmZmVjdCh7XG4gICAgICAgICAgICAgIHF1ZXJ5OiBgU0VMRUNUICogRlJPTSAke25hbWV9IGYgV0hFUkUgZi5pZCAhPSBAaWRgLFxuICAgICAgICAgICAgICBwYXJhbWV0ZXJzOiBbeyBuYW1lOiBcIkBpZFwiLCB2YWx1ZTogaW1wb3J0ZWRNYXJrZXJJZCB9XVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgLnRhcCgocSkgPT4gbG9nUXVlcnkocSkpXG4gICAgICAgICAgICAgIC5mbGF0TWFwKChxKSA9PlxuICAgICAgICAgICAgICAgIEVmZmVjdC5wcm9taXNlKCgpID0+XG4gICAgICAgICAgICAgICAgICBjb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgLml0ZW1zXG4gICAgICAgICAgICAgICAgICAgIC5xdWVyeTxQTT4ocSlcbiAgICAgICAgICAgICAgICAgICAgLmZldGNoQWxsKClcbiAgICAgICAgICAgICAgICAgICAgLnRoZW4oKHsgcmVzb3VyY2VzIH0pID0+IHJlc291cmNlcylcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgLmluc3RydW1lbnQoXCJjb3Ntb3MuYWxsXCIpXG4gICAgICAgICAgICAgIC5sb2dBbm5vdGF0ZShcImNvc21vcy5kYlwiLCBjb250YWluZXJJZCksXG4gICAgICAgICAgICBmaWx0ZXJKb2luU2VsZWN0OiA8VCBleHRlbmRzIG9iamVjdD4oXG4gICAgICAgICAgICAgIGZpbHRlcjogRmlsdGVySm9pblNlbGVjdCxcbiAgICAgICAgICAgICAgY3Vyc29yPzogeyBza2lwPzogbnVtYmVyOyBsaW1pdD86IG51bWJlciB9XG4gICAgICAgICAgICApID0+XG4gICAgICAgICAgICAgIGZpbHRlclxuICAgICAgICAgICAgICAgIC5rZXlzXG4gICAgICAgICAgICAgICAgLmZvckVhY2hFZmZlY3QoKGspID0+XG4gICAgICAgICAgICAgICAgICBFZmZlY3QoYnVpbGRGaWx0ZXJKb2luU2VsZWN0Q29zbW9zUXVlcnkoZmlsdGVyLCBrLCBuYW1lLCBjdXJzb3I/LnNraXAsIGN1cnNvcj8ubGltaXQpKVxuICAgICAgICAgICAgICAgICAgICAudGFwKChxKSA9PiBsb2dRdWVyeShxKSlcbiAgICAgICAgICAgICAgICAgICAgLmZsYXRNYXAoKHEpID0+XG4gICAgICAgICAgICAgICAgICAgICAgRWZmZWN0LnByb21pc2UoKCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAuaXRlbXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLnF1ZXJ5PFQ+KHEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC5mZXRjaEFsbCgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC50aGVuKCh7IHJlc291cmNlcyB9KSA9PiByZXNvdXJjZXMpXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5tYXAoKGEpID0+IHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHYgPSBhXG4gICAgICAgICAgICAgICAgICAgIC5mbGF0TWFwKChfKSA9PiBfKVxuICAgICAgICAgICAgICAgICAgICAubWFwKCh4KSA9PlxuICAgICAgICAgICAgICAgICAgICAgIHNwcmVhZChcbiAgICAgICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgICAgICAoeyByLCAuLi5yZXN0IH06IGFueSkgPT4gKHsgLi4ucmVzdCwgLi4uciB9IGFzIFQgJiB7IF9yb290SWQ6IHN0cmluZyB9KVxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgcmV0dXJuIHZcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5pbnN0cnVtZW50KFwiY29zbW9zLmZpbHRlckpvaW5TZWxlY3RcIilcbiAgICAgICAgICAgICAgICAubG9nQW5ub3RhdGUoXCJjb3Ntb3MuZGJcIiwgY29udGFpbmVySWQpLFxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBNYXkgcmV0dXJuIGR1cGxpY2F0ZSByZXN1bHRzIGZvciBcImpvaW5fZmluZFwiLCB3aGVuIG1hdGNoaW5nIG1vcmUgdGhhbiBvbmNlLlxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBmaWx0ZXI6IChmaWx0ZXI6IEZpbHRlcjxQTT4sIGN1cnNvcj86IHsgc2tpcD86IG51bWJlcjsgbGltaXQ/OiBudW1iZXIgfSkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBza2lwID0gY3Vyc29yPy5za2lwXG4gICAgICAgICAgICAgIGNvbnN0IGxpbWl0ID0gY3Vyc29yPy5saW1pdFxuICAgICAgICAgICAgICByZXR1cm4gKGZpbHRlci50eXBlID09PSBcImpvaW5fZmluZFwiXG4gICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBhIHByb2JsZW0gaWYgb25lIG9mIHRoZSBtdWx0aXBsZSBqb2luZWQgYXJyYXlzIGNhbiBiZSBlbXB0eSFcbiAgICAgICAgICAgICAgICAvLyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy82MDMyMDc4MC9henVyZS1jb3Ntb3NkYi1zcWwtam9pbi1ub3QtcmV0dXJuaW5nLXJlc3VsdHMtd2hlbi10aGUtY2hpbGQtY29udGFpbnMtZW1wdHktYXJyYVxuICAgICAgICAgICAgICAgIC8vIHNvIHdlIHVzZSBtdWx0aXBsZSBxdWVyaWVzIGluc3RlYWQuXG4gICAgICAgICAgICAgICAgPyBmaWx0ZXJcbiAgICAgICAgICAgICAgICAgIC5rZXlzXG4gICAgICAgICAgICAgICAgICAuZm9yRWFjaEVmZmVjdCgoaykgPT5cbiAgICAgICAgICAgICAgICAgICAgRWZmZWN0KGJ1aWxkRmluZEpvaW5Db3Ntb3NRdWVyeShmaWx0ZXIsIGssIG5hbWUsIHNraXAsIGxpbWl0KSlcbiAgICAgICAgICAgICAgICAgICAgICAudGFwKChxKSA9PiBsb2dRdWVyeShxKSlcbiAgICAgICAgICAgICAgICAgICAgICAuZmxhdE1hcCgocSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEVmZmVjdC5wcm9taXNlKCgpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5pdGVtc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5xdWVyeTxQTT4ocSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmV0Y2hBbGwoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC50aGVuKCh7IHJlc291cmNlcyB9KSA9PiByZXNvdXJjZXMpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgLm1hcCgoXykgPT4gXy5mbGF0TWFwKChfKSA9PiBfKSlcbiAgICAgICAgICAgICAgICA6IEVmZmVjdChidWlsZENvc21vc1F1ZXJ5KGZpbHRlciwgbmFtZSwgaW1wb3J0ZWRNYXJrZXJJZCwgc2tpcCwgbGltaXQpKVxuICAgICAgICAgICAgICAgICAgLnRhcCgocSkgPT4gbG9nUXVlcnkocSkpXG4gICAgICAgICAgICAgICAgICAuZmxhdE1hcCgocSkgPT5cbiAgICAgICAgICAgICAgICAgICAgRWZmZWN0LnByb21pc2UoKCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIC5pdGVtc1xuICAgICAgICAgICAgICAgICAgICAgICAgLnF1ZXJ5PHsgZjogUE0gfT4oXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHFcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIC5mZXRjaEFsbCgpXG4gICAgICAgICAgICAgICAgICAgICAgICAudGhlbigoeyByZXNvdXJjZXMgfSkgPT4gcmVzb3VyY2VzLm1hcCgoXykgPT4gXy5mKSlcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgKSlcbiAgICAgICAgICAgICAgICAuaW5zdHJ1bWVudChcImNvc21vcy5maWx0ZXJcIilcbiAgICAgICAgICAgICAgICAubG9nQW5ub3RhdGUoXCJjb3Ntb3MuZGJcIiwgY29udGFpbmVySWQpXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZmluZDogKGlkKSA9PlxuICAgICAgICAgICAgICBFZmZlY3RcbiAgICAgICAgICAgICAgICAucHJvbWlzZSgoKSA9PlxuICAgICAgICAgICAgICAgICAgY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgIC5pdGVtKGlkLCBjb25maWc/LnBhcnRpdGlvblZhbHVlKHsgaWQgfSBhcyBQTSkpXG4gICAgICAgICAgICAgICAgICAgIC5yZWFkPFBNPigpXG4gICAgICAgICAgICAgICAgICAgIC50aGVuKCh7IHJlc291cmNlIH0pID0+IE9wdGlvbi5mcm9tTnVsbGFibGUocmVzb3VyY2UpKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuaW5zdHJ1bWVudChcImNvc21vcy5maW5kXCIpXG4gICAgICAgICAgICAgICAgLmxvZ0Fubm90YXRlKFwiY29zbW9zLmRiXCIsIGNvbnRhaW5lcklkKSxcbiAgICAgICAgICAgIHNldDogKGUpID0+XG4gICAgICAgICAgICAgIE9wdGlvblxuICAgICAgICAgICAgICAgIC5mcm9tTnVsbGFibGUoZS5fZXRhZylcbiAgICAgICAgICAgICAgICAubWF0Y2goXG4gICAgICAgICAgICAgICAgICAoKSA9PlxuICAgICAgICAgICAgICAgICAgICBFZmZlY3QucHJvbWlzZSgoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lci5pdGVtcy5jcmVhdGUoe1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF9wYXJ0aXRpb25LZXk6IGNvbmZpZz8ucGFydGl0aW9uVmFsdWUoZSlcbiAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgKGVUYWcpID0+XG4gICAgICAgICAgICAgICAgICAgIEVmZmVjdC5wcm9taXNlKCgpID0+XG4gICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyLml0ZW0oZS5pZCwgY29uZmlnPy5wYXJ0aXRpb25WYWx1ZShlKSkucmVwbGFjZShcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgLi4uZSwgX3BhcnRpdGlvbktleTogY29uZmlnPy5wYXJ0aXRpb25WYWx1ZShlKSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBhY2Nlc3NDb25kaXRpb246IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcIklmTWF0Y2hcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25kaXRpb246IGVUYWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuZmxhdE1hcCgoeCkgPT4ge1xuICAgICAgICAgICAgICAgICAgaWYgKHguc3RhdHVzQ29kZSA9PT0gNDEyIHx8IHguc3RhdHVzQ29kZSA9PT0gNDA0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBFZmZlY3QuZmFpbChuZXcgT3B0aW1pc3RpY0NvbmN1cnJlbmN5RXhjZXB0aW9uKG5hbWUsIGUuaWQpKVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgaWYgKHguc3RhdHVzQ29kZSA+IDI5OSB8fCB4LnN0YXR1c0NvZGUgPCAyMDApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVmZmVjdC5kaWUoXG4gICAgICAgICAgICAgICAgICAgICAgbmV3IENvc21vc0RiT3BlcmF0aW9uRXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICAgICBcIm5vdCBhYmxlIHRvIHVwZGF0ZSByZWNvcmQ6IFwiICsgeC5zdGF0dXNDb2RlXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICByZXR1cm4gRWZmZWN0KHtcbiAgICAgICAgICAgICAgICAgICAgLi4uZSxcbiAgICAgICAgICAgICAgICAgICAgX2V0YWc6IHguZXRhZ1xuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5pbnN0cnVtZW50KFwiY29zbW9zLnNldFwiKVxuICAgICAgICAgICAgICAgIC5sb2dBbm5vdGF0ZShcImNvc21vcy5kYlwiLCBjb250YWluZXJJZCksXG4gICAgICAgICAgICBiYXRjaFNldCxcbiAgICAgICAgICAgIGJ1bGtTZXQsXG4gICAgICAgICAgICByZW1vdmU6IChlOiBQTSkgPT5cbiAgICAgICAgICAgICAgRWZmZWN0XG4gICAgICAgICAgICAgICAgLnByb21pc2UoKCkgPT4gY29udGFpbmVyLml0ZW0oZS5pZCwgY29uZmlnPy5wYXJ0aXRpb25WYWx1ZShlKSkuZGVsZXRlKCkpXG4gICAgICAgICAgICAgICAgLmluc3RydW1lbnQoXCJjb3Ntb3MucmVtb3ZlXCIpXG4gICAgICAgICAgICAgICAgLmxvZ0Fubm90YXRlKFwiY29zbW9zLmRiXCIsIGNvbnRhaW5lcklkKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIGhhbmRsZSBtb2NrIGRhdGFcbiAgICAgICAgICBjb25zdCBtYXJrZXIgPSB5aWVsZCogJChcbiAgICAgICAgICAgIEVmZmVjdC5wcm9taXNlKCgpID0+XG4gICAgICAgICAgICAgIGNvbnRhaW5lclxuICAgICAgICAgICAgICAgIC5pdGVtKGltcG9ydGVkTWFya2VySWQsIGltcG9ydGVkTWFya2VySWQpXG4gICAgICAgICAgICAgICAgLnJlYWQ8eyBpZDogc3RyaW5nIH0+KClcbiAgICAgICAgICAgICAgICAudGhlbigoeyByZXNvdXJjZSB9KSA9PiBPcHRpb24uZnJvbU51bGxhYmxlKHJlc291cmNlKSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICApXG5cbiAgICAgICAgICBpZiAoIW1hcmtlci5pc1NvbWUoKSkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coXCJDcmVhdGluZyBtb2NrIGRhdGEgZm9yIFwiICsgbmFtZSlcbiAgICAgICAgICAgIGlmIChzZWVkKSB7XG4gICAgICAgICAgICAgIGNvbnN0IG0gPSB5aWVsZCogJChzZWVkKVxuICAgICAgICAgICAgICB5aWVsZCogJChcbiAgICAgICAgICAgICAgICBFZmZlY3QobS50b05vbkVtcHR5QXJyYXkpXG4gICAgICAgICAgICAgICAgICAuZmxhdE1hcE9wdCgoYSkgPT5cbiAgICAgICAgICAgICAgICAgICAgc1xuICAgICAgICAgICAgICAgICAgICAgIC5idWxrU2V0KGEpXG4gICAgICAgICAgICAgICAgICAgICAgLm9yRGllXG4gICAgICAgICAgICAgICAgICAgICAgLy8gd2UgZGVsYXkgZXh0cmEgaGVyZSwgc28gdGhhdCBpbml0aWFsIGNyZWF0aW9uIGJldHdlZW4gQ29tcGFuaWVzL1BPcyBhbHNvIGhhdmUgYW4gaW50ZXJ2YWwgYmV0d2VlbiB0aGVtLlxuICAgICAgICAgICAgICAgICAgICAgIC5kZWxheShEdXJhdGlvbi5tYWtlTWlsbGlzKDExMDApKVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBNYXJrIGFzIGltcG9ydGVkXG4gICAgICAgICAgICB5aWVsZCogJChcbiAgICAgICAgICAgICAgRWZmZWN0LnByb21pc2UoKCkgPT5cbiAgICAgICAgICAgICAgICBjb250YWluZXIuaXRlbXMuY3JlYXRlKHtcbiAgICAgICAgICAgICAgICAgIF9wYXJ0aXRpb25LZXk6IGltcG9ydGVkTWFya2VySWQsXG4gICAgICAgICAgICAgICAgICBpZDogaW1wb3J0ZWRNYXJrZXJJZFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIClcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHNcbiAgICAgICAgfSlcbiAgICB9XG4gIH0pXG59XG5cbmZ1bmN0aW9uIGxvZ1F1ZXJ5KHE6IHtcbiAgcXVlcnk6IHN0cmluZ1xuICBwYXJhbWV0ZXJzOiB7XG4gICAgbmFtZTogc3RyaW5nXG4gICAgdmFsdWU6IFN1cHBvcnRlZFZhbHVlcyB8IHJlYWRvbmx5IFN1cHBvcnRlZFZhbHVlc1tdXG4gIH1bXVxufSkge1xuICByZXR1cm4gRWZmZWN0XG4gICAgLmxvZ0RlYnVnKFwiY29zbW9zIHF1ZXJ5XCIpXG4gICAgLmFwcGx5KEVmZmVjdC5sb2dBbm5vdGF0ZXMoe1xuICAgICAgcXVlcnk6IHEucXVlcnksXG4gICAgICBwYXJhbWV0ZXJzOiBKU09OLnN0cmluZ2lmeShcbiAgICAgICAgcS5wYXJhbWV0ZXJzLnJlZHVjZSgoYWNjLCB2KSA9PiB7XG4gICAgICAgICAgYWNjW3YubmFtZV0gPSB2LnZhbHVlXG4gICAgICAgICAgcmV0dXJuIGFjY1xuICAgICAgICB9LCB7fSBhcyBSZWNvcmQ8c3RyaW5nLCBTdXBwb3J0ZWRWYWx1ZXMgfCByZWFkb25seSBTdXBwb3J0ZWRWYWx1ZXNbXT4pLFxuICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgIDJcbiAgICAgIClcbiAgICB9KSlcbn1cblxuLyoqXG4gKiBAZGVwcmVjYXRlZDogc2hvdWxkIGJ1aWxkIFNlbGVjdCBpbnRvIFdoZXJlIHF1ZXJ5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZEZpbHRlckpvaW5TZWxlY3RDb3Ntb3NRdWVyeShcbiAgZmlsdGVyOiBGaWx0ZXJKb2luU2VsZWN0LFxuICBrOiBzdHJpbmcsXG4gIG5hbWU6IHN0cmluZyxcbiAgc2tpcD86IG51bWJlcixcbiAgbGltaXQ/OiBudW1iZXJcbikge1xuICBjb25zdCBsbSA9IHNraXAgIT09IHVuZGVmaW5lZCB8fCBsaW1pdCAhPT0gdW5kZWZpbmVkID8gYE9GRlNFVCAke3NraXAgPz8gMH0gTElNSVQgJHtsaW1pdCA/PyA5OTk5OTl9YCA6IFwiXCJcbiAgcmV0dXJuIHtcbiAgICBxdWVyeTogYFxuU0VMRUNUIHIsIGYuaWQgYXMgX3Jvb3RJZFxuRlJPTSAke25hbWV9IGZcbkpPSU4gciBJTiBmLiR7a31cbldIRVJFIExPV0VSKHIuJHtmaWx0ZXIudmFsdWVLZXl9KSA9IExPV0VSKEB2YWx1ZSlcbiR7bG19XG5gLFxuICAgIHBhcmFtZXRlcnM6IFt7IG5hbWU6IFwiQHZhbHVlXCIsIHZhbHVlOiBmaWx0ZXIudmFsdWUgfV1cbiAgfVxufVxuXG4vKipcbiAqIEBkZXByZWNhdGVkOiBpcyBub3cgcGFydCBvZiBXaGVyZSBxdWVyeSBhcyBrLi0xLnZhbHVlS2V5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZEZpbmRKb2luQ29zbW9zUXVlcnkoXG4gIGZpbHRlcjogSm9pbkZpbmRGaWx0ZXIsXG4gIGs6IHN0cmluZyxcbiAgbmFtZTogc3RyaW5nLFxuICBza2lwPzogbnVtYmVyLFxuICBsaW1pdD86IG51bWJlclxuKSB7XG4gIGNvbnN0IGxtID0gc2tpcCAhPT0gdW5kZWZpbmVkIHx8IGxpbWl0ICE9PSB1bmRlZmluZWQgPyBgT0ZGU0VUICR7c2tpcCA/PyAwfSBMSU1JVCAke2xpbWl0ID8/IDk5OTk5OX1gIDogXCJcIlxuICByZXR1cm4ge1xuICAgIHF1ZXJ5OiBgXG5TRUxFQ1QgRElTVElOQ1QgVkFMVUUgZlxuRlJPTSAke25hbWV9IGZcbkpPSU4gciBJTiBmLiR7a31cbldIRVJFIExPV0VSKHIuJHtmaWx0ZXIudmFsdWVLZXl9KSA9IExPV0VSKEB2YWx1ZSlcbiR7bG19YCxcbiAgICBwYXJhbWV0ZXJzOiBbeyBuYW1lOiBcIkB2YWx1ZVwiLCB2YWx1ZTogZmlsdGVyLnZhbHVlIH1dXG4gIH1cbn1cblxuLyoqXG4gKiBAZGVwcmVjYXRlZDogc2hvdWxkIGJ1aWxkIGludG8gV2hlcmUgcXVlcnlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkTGVnYWN5Q29zbW9zUXVlcnk8UE0+KFxuICBmaWx0ZXI6IExlZ2FjeUZpbHRlcjxQTT4sXG4gIG5hbWU6IHN0cmluZyxcbiAgaW1wb3J0ZWRNYXJrZXJJZDogc3RyaW5nLFxuICBza2lwPzogbnVtYmVyLFxuICBsaW1pdD86IG51bWJlclxuKSB7XG4gIGNvbnN0IGxtID0gc2tpcCAhPT0gdW5kZWZpbmVkIHx8IGxpbWl0ICE9PSB1bmRlZmluZWQgPyBgT0ZGU0VUICR7c2tpcCA/PyAwfSBMSU1JVCAke2xpbWl0ID8/IDk5OTk5OX1gIDogXCJcIlxuICByZXR1cm4ge1xuICAgIHF1ZXJ5OiBgXG4gICAgU0VMRUNUIGZcbiAgICBGUk9NICR7bmFtZX0gQVMgZlxuICAgIFdIRVJFIGYuaWQgIT0gQGlkIEFORCBmLiR7XG4gICAgICBTdHJpbmcoXG4gICAgICAgIGZpbHRlci5ieVxuICAgICAgKVxuICAgIH0gTElLRSBAZmlsdGVyXG4gICR7bG19YCxcbiAgICBwYXJhbWV0ZXJzOiBbXG4gICAgICB7IG5hbWU6IFwiQGlkXCIsIHZhbHVlOiBpbXBvcnRlZE1hcmtlcklkIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6IFwiQGZpbHRlclwiLFxuICAgICAgICB2YWx1ZTogZmlsdGVyLnR5cGUgPT09IFwiZW5kc1dpdGhcIlxuICAgICAgICAgID8gYCUke2ZpbHRlci52YWx1ZX1gXG4gICAgICAgICAgOiBmaWx0ZXIudHlwZSA9PT0gXCJjb250YWluc1wiXG4gICAgICAgICAgPyBgJSR7ZmlsdGVyLnZhbHVlfSVgXG4gICAgICAgICAgOiBgJHtmaWx0ZXIudmFsdWV9JWBcbiAgICAgIH1cbiAgICBdXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkV2hlcmVDb3Ntb3NRdWVyeShcbiAgZmlsdGVyOiBTdG9yZVdoZXJlRmlsdGVyLFxuICBuYW1lOiBzdHJpbmcsXG4gIGltcG9ydGVkTWFya2VySWQ6IHN0cmluZyxcbiAgc2tpcD86IG51bWJlcixcbiAgbGltaXQ/OiBudW1iZXJcbikge1xuICBjb25zdCBsbSA9IHNraXAgIT09IHVuZGVmaW5lZCB8fCBsaW1pdCAhPT0gdW5kZWZpbmVkID8gYE9GRlNFVCAke3NraXAgPz8gMH0gTElNSVQgJHtsaW1pdCA/PyA5OTk5OTl9YCA6IFwiXCJcbiAgcmV0dXJuIHtcbiAgICBxdWVyeTogYFxuICAgIFNFTEVDVCBmXG4gICAgRlJPTSAke25hbWV9IEFTIGZcbiAgICAke1xuICAgICAgZmlsdGVyXG4gICAgICAgIC53aGVyZVxuICAgICAgICAuZmlsdGVyKChfKSA9PiBfLmtleS5pbmNsdWRlcyhcIi4tMS5cIikpXG4gICAgICAgIC5tYXAoKF8pID0+IF8ua2V5LnNwbGl0KFwiLi0xLlwiKVswXSlcbiAgICAgICAgLm1hcCgoXykgPT4gYEpPSU4gJHtffSBJTiBmLiR7X31gKVxuICAgICAgICAudW5pcShFcXVpdmFsZW5jZS5zdHJpbmcpXG4gICAgICAgIC5qb2luKFwiXFxuXCIpXG4gICAgfVxuICAgIFdIRVJFIGYuaWQgIT0gQGlkIEFORCAke1xuICAgICAgZmlsdGVyXG4gICAgICAgIC53aGVyZVxuICAgICAgICAubWFwKChfKSA9PlxuICAgICAgICAgIF8ua2V5LmluY2x1ZGVzKFwiLi0xLlwiKVxuICAgICAgICAgICAgPyB7IC4uLl8sIGY6IF8ua2V5LnNwbGl0KFwiLi0xLlwiKVswXSwga2V5OiBfLmtleS5zcGxpdChcIi4tMS5cIilbMV0hIH1cbiAgICAgICAgICAgIDogeyAuLi5fLCBmOiBcImZcIiB9XG4gICAgICAgIClcbiAgICAgICAgLm1hcChcbiAgICAgICAgICAoeCwgaSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgayA9IGAke3guZn0uJHt4LmtleX1gXG4gICAgICAgICAgICBjb25zdCB2ID0gYEB2JHtpfWBcblxuICAgICAgICAgICAgc3dpdGNoICh4LnQpIHtcbiAgICAgICAgICAgICAgY2FzZSBcImluXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBBUlJBWV9DT05UQUlOUygke3Z9LCAke2t9KWBcbiAgICAgICAgICAgICAgY2FzZSBcIm5vdC1pblwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBgKE5PVCBBUlJBWV9DT05UQUlOUygke3Z9LCAke2t9KSlgXG4gICAgICAgICAgICAgIGNhc2UgXCJlbmRzLXdpdGhcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gYEVORFNXSVRIKCR7a30sICR7dn0sIHRydWUpYFxuICAgICAgICAgICAgICBjYXNlIFwiY29udGFpbnNcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gYENPTlRBSU5TKCR7a30sICR7dn0sIHRydWUpYFxuICAgICAgICAgICAgICBjYXNlIFwic3RhcnRzLXdpdGhcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gYFNUQVJUU1dJVEgoJHtrfSwgJHt2fSwgdHJ1ZSlgXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGxrID0gbG93ZXJJZk5lZWRlZChrLCB4LnZhbHVlKVxuICAgICAgICAgICAgY29uc3QgbHYgPSBsb3dlcklmTmVlZGVkKHYsIHgudmFsdWUpXG5cbiAgICAgICAgICAgIHN3aXRjaCAoeC50KSB7XG4gICAgICAgICAgICAgIGNhc2UgXCJsdFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBgJHtsa30gPCAke2x2fWBcbiAgICAgICAgICAgICAgY2FzZSBcImx0ZVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBgJHtsa30gPD0gJHtsdn1gXG4gICAgICAgICAgICAgIGNhc2UgXCJndFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBgJHtsa30gPiAke2x2fWBcbiAgICAgICAgICAgICAgY2FzZSBcImd0ZVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBgJHtsa30gPj0gJHtsdn1gXG4gICAgICAgICAgICAgIGNhc2UgXCJub3QtZXFcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4geC52YWx1ZSA9PT0gbnVsbFxuICAgICAgICAgICAgICAgICAgPyBgSVNfTlVMTCgke2t9KSA9IGZhbHNlYFxuICAgICAgICAgICAgICAgICAgOiBgJHtsa30gPD4gJHtsdn1gXG4gICAgICAgICAgICAgIGNhc2UgdW5kZWZpbmVkOlxuICAgICAgICAgICAgICBjYXNlIFwiZXFcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4geC52YWx1ZSA9PT0gbnVsbFxuICAgICAgICAgICAgICAgICAgPyBgSVNfTlVMTCgke2t9KSA9IHRydWVgXG4gICAgICAgICAgICAgICAgICA6IGAke2xrfSA9ICR7bHZ9YFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgKVxuICAgICAgICAuam9pbihmaWx0ZXIubW9kZSA9PT0gXCJvclwiID8gXCIgT1IgXCIgOiBcIiBBTkQgXCIpXG4gICAgfVxuICAgICR7bG19YCxcbiAgICBwYXJhbWV0ZXJzOiBbXG4gICAgICB7IG5hbWU6IFwiQGlkXCIsIHZhbHVlOiBpbXBvcnRlZE1hcmtlcklkIH0sXG4gICAgICAuLi5maWx0ZXJcbiAgICAgICAgLndoZXJlXG4gICAgICAgIC5tYXAoKHgsIGkpID0+ICh7XG4gICAgICAgICAgbmFtZTogYEB2JHtpfWAsXG4gICAgICAgICAgdmFsdWU6IHgudmFsdWVcbiAgICAgICAgfSkpXG4gICAgXVxuICB9XG59XG5cbi8vIGZ1bmN0aW9uIGlzQXJyYXkodDogU3VwcG9ydGVkVmFsdWVzIHwgcmVhZG9ubHkgU3VwcG9ydGVkVmFsdWVzW10pOiB0IGlzIHJlYWRvbmx5IFN1cHBvcnRlZFZhbHVlc1tdIHtcbi8vICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodClcbi8vIH1cblxuZnVuY3Rpb24gbG93ZXJJZk5lZWRlZChrZXk6IHVua25vd24sIHZhbHVlOiB1bmtub3duKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgPyBgTE9XRVIoJHtrZXl9KWAgOiBgJHtrZXl9YFxufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRDb3Ntb3NRdWVyeTxQTT4oXG4gIGZpbHRlcjogTGVnYWN5RmlsdGVyPFBNPiB8IFN0b3JlV2hlcmVGaWx0ZXIsXG4gIG5hbWU6IHN0cmluZyxcbiAgaW1wb3J0ZWRNYXJrZXJJZDogc3RyaW5nLFxuICBza2lwPzogbnVtYmVyLFxuICBsaW1pdD86IG51bWJlclxuKSB7XG4gIHJldHVybiBmaWx0ZXIudHlwZSA9PT0gXCJzdGFydHNXaXRoXCJcbiAgICAgIHx8IGZpbHRlci50eXBlID09PSBcImVuZHNXaXRoXCJcbiAgICAgIHx8IGZpbHRlci50eXBlID09PSBcImNvbnRhaW5zXCJcbiAgICA/IGJ1aWxkTGVnYWN5Q29zbW9zUXVlcnkoZmlsdGVyLCBuYW1lLCBpbXBvcnRlZE1hcmtlcklkLCBza2lwLCBsaW1pdClcbiAgICA6IGJ1aWxkV2hlcmVDb3Ntb3NRdWVyeShmaWx0ZXIsIG5hbWUsIGltcG9ydGVkTWFya2VySWQsIHNraXAsIGxpbWl0KVxufVxuXG5jbGFzcyBDb3Ntb3NEYk9wZXJhdGlvbkVycm9yIHtcbiAgY29uc3RydWN0b3IocmVhZG9ubHkgbWVzc2FnZTogc3RyaW5nKSB7fVxufVxuZXhwb3J0IGZ1bmN0aW9uIENvc21vc1N0b3JlTGl2ZShjb25maWc6IENvbmZpZzxTdG9yYWdlQ29uZmlnPikge1xuICByZXR1cm4gY29uZmlnLmNvbmZpZy5mbGF0TWFwKG1ha2VDb3Ntb3NTdG9yZSkudG9MYXllcihTdG9yZU1ha2VyKVxufVxuIl19
@@ -1 +1 @@
1
- 86abfcd3894752fc7211a2479161a1f24bc7df3ef89aaa7c2ff967fc7b5c673b
1
+ acd0b034bacd357b1279f27a4bbbf4912c57d104f5a5fea36a26c9b16bc39356
package/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # @effect-app/infra
2
2
 
3
+ ## 0.104.1
4
+
5
+ ### Patch Changes
6
+
7
+ - 01dfa9d: add openapi bearer auth to spec
8
+
3
9
  ## 0.104.0
4
10
 
5
11
  ### Minor Changes
@@ -54,7 +54,10 @@ function makeOpenApiSpecs(rdescs, info) {
54
54
  },
55
55
  tags: [],
56
56
  paths,
57
- components
57
+ components,
58
+ security: [{
59
+ bearerAuth: []
60
+ }]
58
61
  // test,
59
62
  };
60
63
  });
@@ -1 +1 @@
1
- {"version":3,"file":"makeOpenApiSpecs.cjs","names":["_index","require","_makeJsonSchema","_getRequireWildcardCache","e","WeakMap","r","t","_interopRequireWildcard","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","makeOpenApiSpecs","rdescs","info","tsplus_module_2","gen","$","ref","tsplus_module_1","make","Map","paths","provideService","makeJsonSchema","References","refs","parameterRefs","schemas","securitySchemes","bearerAuth","type","scheme","bearerFormat","components","parameters","entry","entries","openapi","title","description","termsOfService","tos","contact","name","email","url","undefined","license","version","tags"],"sources":["../../../_src/api/express/makeOpenApiSpecs.ts"],"sourcesContent":[null],"mappings":";;;;;;;;AAGA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,eAAA,GAAAD,OAAA;AAAoD,SAAAE,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAI,wBAAAJ,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAM,OAAA,EAAAN,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAI,GAAA,CAAAP,CAAA,UAAAG,CAAA,CAAAK,GAAA,CAAAR,CAAA,OAAAS,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAf,CAAA,oBAAAe,CAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAlB,CAAA,EAAAe,CAAA,SAAAI,CAAA,GAAAR,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAd,CAAA,EAAAe,CAAA,UAAAI,CAAA,KAAAA,CAAA,CAAAX,GAAA,IAAAW,CAAA,CAAAC,GAAA,IAAAR,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAI,CAAA,IAAAV,CAAA,CAAAM,CAAA,IAAAf,CAAA,CAAAe,CAAA,YAAAN,CAAA,CAAAH,OAAA,GAAAN,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAiB,GAAA,CAAApB,CAAA,EAAAS,CAAA,GAAAA,CAAA;AAG9C,SAAUY,gBAAgBA,CAC9BC,MAAoC,EACpCC,IAAiB;EAEjB,OAAOC,eAAA,CAAAC,GAAA,CAAW,WAAUC,CAAC;IAC3B,MAAMC,GAAG,GAAG,OAAOD,CAAC,CAACE,eAAA,CAAAC,IAAA,CAA8C,IAAIC,GAAG,EAAE,CAAC,CAAC;IAC9E,MAAMC,KAAK,GAAG,OAAOL,CAAC,CAACF,eAAA,CAAAQ,cAAA,KAAAC,8BAAc,EAACX,MAAM,CAAC,EAAgBY,iBAAU,EAAE;MAAEP;IAAG,CAAE,CAAC,CAAC;IAClF,MAAMQ,IAAI,GAAG,OAAOT,CAAC,CAAAE,eAAA,CAAApB,GAAA,CAACmB,GAAG,EAAK;IAC9B,MAAMS,aAAa,GAAwB,EAAE,EAAC;IAC9C,MAAMC,OAAO,GAAwB,EAAE;IACvC,MAAMC,eAAe,GAAG;MACtBC,UAAU,EAAE;QACVC,IAAI,EAAE,MAAM;QACZC,MAAM,EAAE,QAAQ;QAChBC,YAAY,EAAE;;KAEjB,EAAC;IACF,MAAMC,UAAU,GAAG;MAAEL,eAAe;MAAED,OAAO;MAAEO,UAAU,EAAER;IAAa,CAAE;IAE1E,KAAK,MAAMS,KAAK,IAAIV,IAAI,CAACW,OAAO,EAAE,EAAE;MAClC;MACAT,OAAO,CAACQ,KAAK,CAAC,CAAC,CAAC,CAAC,GAAGA,KAAK,CAAC,CAAC,CAAC;IAC9B;IAEA,OAAO;MACLE,OAAO,EAAE,OAAO;MAChBxB,IAAI,EAAE;QACJyB,KAAK,EAAEzB,IAAI,CAACyB,KAAK;QACjBC,WAAW,EAAE1B,IAAI,CAAC0B,WAAW;QAC7BC,cAAc,EAAE3B,IAAI,CAAC4B,GAAG;QACxBC,OAAO,EAAE7B,IAAI,CAAC6B,OAAO,GACjB;UACAC,IAAI,EAAE9B,IAAI,CAAC6B,OAAO,CAACC,IAAI;UACvBC,KAAK,EAAE/B,IAAI,CAAC6B,OAAO,CAACE,KAAK;UACzBC,GAAG,EAAEhC,IAAI,CAAC6B,OAAO,CAACG;SACnB,GACCC,SAAS;QACbC,OAAO,EAAElC,IAAI,CAACkC,OAAO,GACjB;UACAJ,IAAI,EAAE9B,IAAI,CAACkC,OAAO,CAACJ,IAAI;UACvBE,GAAG,EAAEhC,IAAI,CAACkC,OAAO,CAACF;SACnB,GACCC,SAAS;QACbE,OAAO,EAAEnC,IAAI,CAACmC;OACf;MACDC,IAAI,EAAE,EAAE;MACR5B,KAAK;MACLY;MACA;KACD;EACH,CAAC,CAAC;AACJ"}
1
+ {"version":3,"file":"makeOpenApiSpecs.cjs","names":["_index","require","_makeJsonSchema","_getRequireWildcardCache","e","WeakMap","r","t","_interopRequireWildcard","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","makeOpenApiSpecs","rdescs","info","tsplus_module_2","gen","$","ref","tsplus_module_1","make","Map","paths","provideService","makeJsonSchema","References","refs","parameterRefs","schemas","securitySchemes","bearerAuth","type","scheme","bearerFormat","components","parameters","entry","entries","openapi","title","description","termsOfService","tos","contact","name","email","url","undefined","license","version","tags","security"],"sources":["../../../_src/api/express/makeOpenApiSpecs.ts"],"sourcesContent":[null],"mappings":";;;;;;;;AAGA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,eAAA,GAAAD,OAAA;AAAoD,SAAAE,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAI,wBAAAJ,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAM,OAAA,EAAAN,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAI,GAAA,CAAAP,CAAA,UAAAG,CAAA,CAAAK,GAAA,CAAAR,CAAA,OAAAS,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAf,CAAA,oBAAAe,CAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAlB,CAAA,EAAAe,CAAA,SAAAI,CAAA,GAAAR,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAd,CAAA,EAAAe,CAAA,UAAAI,CAAA,KAAAA,CAAA,CAAAX,GAAA,IAAAW,CAAA,CAAAC,GAAA,IAAAR,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAI,CAAA,IAAAV,CAAA,CAAAM,CAAA,IAAAf,CAAA,CAAAe,CAAA,YAAAN,CAAA,CAAAH,OAAA,GAAAN,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAiB,GAAA,CAAApB,CAAA,EAAAS,CAAA,GAAAA,CAAA;AAG9C,SAAUY,gBAAgBA,CAC9BC,MAAoC,EACpCC,IAAiB;EAEjB,OAAOC,eAAA,CAAAC,GAAA,CAAW,WAAUC,CAAC;IAC3B,MAAMC,GAAG,GAAG,OAAOD,CAAC,CAACE,eAAA,CAAAC,IAAA,CAA8C,IAAIC,GAAG,EAAE,CAAC,CAAC;IAC9E,MAAMC,KAAK,GAAG,OAAOL,CAAC,CAACF,eAAA,CAAAQ,cAAA,KAAAC,8BAAc,EAACX,MAAM,CAAC,EAAgBY,iBAAU,EAAE;MAAEP;IAAG,CAAE,CAAC,CAAC;IAClF,MAAMQ,IAAI,GAAG,OAAOT,CAAC,CAAAE,eAAA,CAAApB,GAAA,CAACmB,GAAG,EAAK;IAC9B,MAAMS,aAAa,GAAwB,EAAE,EAAC;IAC9C,MAAMC,OAAO,GAAwB,EAAE;IACvC,MAAMC,eAAe,GAAG;MACtBC,UAAU,EAAE;QACVC,IAAI,EAAE,MAAM;QACZC,MAAM,EAAE,QAAQ;QAChBC,YAAY,EAAE;;KAEjB,EAAC;IACF,MAAMC,UAAU,GAAG;MAAEL,eAAe;MAAED,OAAO;MAAEO,UAAU,EAAER;IAAa,CAAE;IAE1E,KAAK,MAAMS,KAAK,IAAIV,IAAI,CAACW,OAAO,EAAE,EAAE;MAClC;MACAT,OAAO,CAACQ,KAAK,CAAC,CAAC,CAAC,CAAC,GAAGA,KAAK,CAAC,CAAC,CAAC;IAC9B;IAEA,OAAO;MACLE,OAAO,EAAE,OAAO;MAChBxB,IAAI,EAAE;QACJyB,KAAK,EAAEzB,IAAI,CAACyB,KAAK;QACjBC,WAAW,EAAE1B,IAAI,CAAC0B,WAAW;QAC7BC,cAAc,EAAE3B,IAAI,CAAC4B,GAAG;QACxBC,OAAO,EAAE7B,IAAI,CAAC6B,OAAO,GACjB;UACAC,IAAI,EAAE9B,IAAI,CAAC6B,OAAO,CAACC,IAAI;UACvBC,KAAK,EAAE/B,IAAI,CAAC6B,OAAO,CAACE,KAAK;UACzBC,GAAG,EAAEhC,IAAI,CAAC6B,OAAO,CAACG;SACnB,GACCC,SAAS;QACbC,OAAO,EAAElC,IAAI,CAACkC,OAAO,GACjB;UACAJ,IAAI,EAAE9B,IAAI,CAACkC,OAAO,CAACJ,IAAI;UACvBE,GAAG,EAAEhC,IAAI,CAACkC,OAAO,CAACF;SACnB,GACCC,SAAS;QACbE,OAAO,EAAEnC,IAAI,CAACmC;OACf;MACDC,IAAI,EAAE,EAAE;MACR5B,KAAK;MACLY,UAAU;MACViB,QAAQ,EAAE,CACR;QAAArB,UAAY,EAAE;MAAA;MAEhB;KACD;EACH,CAAC,CAAC;AACJ"}
@@ -52,7 +52,10 @@ export function makeOpenApiSpecs(
52
52
  },
53
53
  tags: [],
54
54
  paths,
55
- components
55
+ components,
56
+ security: {
57
+ bearerAuth: []
58
+ }
56
59
  // test,
57
60
  }
58
61
  })
@@ -51,5 +51,8 @@ export declare function makeOpenApiSpecs(rdescs: Iterable<RouteDescriptorAny>, i
51
51
  schemas: Record<string, any>;
52
52
  parameters: Record<string, any>;
53
53
  };
54
+ security: {
55
+ bearerAuth: never[];
56
+ };
54
57
  }>;
55
58
  //# sourceMappingURL=makeOpenApiSpecs.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"makeOpenApiSpecs.d.ts","sourceRoot":"","sources":["../../../_src/api/express/makeOpenApiSpecs.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,MAAM,iDAAiD,CAAA;AAI9E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AAE7D,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,QAAQ,CAAC,kBAAkB,CAAC,EACpC,IAAI,EAAE,MAAM,CAAC,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDlB"}
1
+ {"version":3,"file":"makeOpenApiSpecs.d.ts","sourceRoot":"","sources":["../../../_src/api/express/makeOpenApiSpecs.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,MAAM,iDAAiD,CAAA;AAI9E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AAE7D,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,QAAQ,CAAC,kBAAkB,CAAC,EACpC,IAAI,EAAE,MAAM,CAAC,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoDlB"}
@@ -44,9 +44,12 @@ export function makeOpenApiSpecs(rdescs, info) {
44
44
  },
45
45
  tags: [],
46
46
  paths,
47
- components
47
+ components,
48
+ security: [
49
+ { bearerAuth: [ ] }
50
+ ]
48
51
  // test,
49
52
  };
50
53
  });
51
54
  }
52
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFrZU9wZW5BcGlTcGVjcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL19zcmMvYXBpL2V4cHJlc3MvbWFrZU9wZW5BcGlTcGVjcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUdBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSw4REFBOEQsQ0FBQTtBQUN6RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFHcEQsTUFBTSxVQUFVLGdCQUFnQixDQUM5QixNQUFvQyxFQUNwQyxJQUFpQjtJQUVqQixPQUFPLG9CQUFXLFFBQVEsQ0FBQyxFQUFDLENBQUM7UUFDM0IsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLHFCQUE4QyxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQTtRQUM5RSxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsK0JBQUEsY0FBYyxDQUFDLE1BQU0sQ0FBQyxFQUFnQixVQUFVLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUE7UUFDbEYsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxxQkFBQyxHQUFHLEVBQUssQ0FBQTtRQUM5QixNQUFNLGFBQWEsR0FBd0IsRUFBRSxDQUFBLENBQUMsUUFBUTtRQUN0RCxNQUFNLE9BQU8sR0FBd0IsRUFBRSxDQUFBO1FBQ3ZDLE1BQU0sZUFBZSxHQUFHO1lBQ3RCLFVBQVUsRUFBRTtnQkFDVixJQUFJLEVBQUUsTUFBTTtnQkFDWixNQUFNLEVBQUUsUUFBUTtnQkFDaEIsWUFBWSxFQUFFLEtBQUs7YUFDcEI7U0FDRixDQUFBLENBQUMsbURBQW1EO1FBQ3JELE1BQU0sVUFBVSxHQUFHLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLENBQUE7UUFFMUUsS0FBSyxNQUFNLEtBQUssSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztZQUNuQyxnREFBZ0Q7WUFDaEQsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUM5QixDQUFDO1FBRUQsT0FBTztZQUNMLE9BQU8sRUFBRSxPQUFPO1lBQ2hCLElBQUksRUFBRTtnQkFDSixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7Z0JBQ2pCLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVztnQkFDN0IsY0FBYyxFQUFFLElBQUksQ0FBQyxHQUFHO2dCQUN4QixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87b0JBQ25CLENBQUMsQ0FBQzt3QkFDQSxJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJO3dCQUN2QixLQUFLLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLO3dCQUN6QixHQUFHLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHO3FCQUN0QjtvQkFDRCxDQUFDLENBQUMsU0FBUztnQkFDYixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87b0JBQ25CLENBQUMsQ0FBQzt3QkFDQSxJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJO3dCQUN2QixHQUFHLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHO3FCQUN0QjtvQkFDRCxDQUFDLENBQUMsU0FBUztnQkFDYixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87YUFDdEI7WUFDRCxJQUFJLEVBQUUsRUFBRTtZQUNSLEtBQUs7WUFDTCxVQUFVO1lBQ1YsUUFBUTtTQUNULENBQUE7SUFDSCxDQUFDLENBQUMsQ0FBQTtBQUNKLENBQUMifQ==
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFrZU9wZW5BcGlTcGVjcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL19zcmMvYXBpL2V4cHJlc3MvbWFrZU9wZW5BcGlTcGVjcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUdBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSw4REFBOEQsQ0FBQTtBQUN6RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFHcEQsTUFBTSxVQUFVLGdCQUFnQixDQUM5QixNQUFvQyxFQUNwQyxJQUFpQjtJQUVqQixPQUFPLG9CQUFXLFFBQVEsQ0FBQyxFQUFDLENBQUM7UUFDM0IsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLHFCQUE4QyxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQTtRQUM5RSxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsK0JBQUEsY0FBYyxDQUFDLE1BQU0sQ0FBQyxFQUFnQixVQUFVLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUE7UUFDbEYsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxxQkFBQyxHQUFHLEVBQUssQ0FBQTtRQUM5QixNQUFNLGFBQWEsR0FBd0IsRUFBRSxDQUFBLENBQUMsUUFBUTtRQUN0RCxNQUFNLE9BQU8sR0FBd0IsRUFBRSxDQUFBO1FBQ3ZDLE1BQU0sZUFBZSxHQUFHO1lBQ3RCLFVBQVUsRUFBRTtnQkFDVixJQUFJLEVBQUUsTUFBTTtnQkFDWixNQUFNLEVBQUUsUUFBUTtnQkFDaEIsWUFBWSxFQUFFLEtBQUs7YUFDcEI7U0FDRixDQUFBLENBQUMsbURBQW1EO1FBQ3JELE1BQU0sVUFBVSxHQUFHLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLENBQUE7UUFFMUUsS0FBSyxNQUFNLEtBQUssSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztZQUNuQyxnREFBZ0Q7WUFDaEQsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUM5QixDQUFDO1FBRUQsT0FBTztZQUNMLE9BQU8sRUFBRSxPQUFPO1lBQ2hCLElBQUksRUFBRTtnQkFDSixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7Z0JBQ2pCLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVztnQkFDN0IsY0FBYyxFQUFFLElBQUksQ0FBQyxHQUFHO2dCQUN4QixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87b0JBQ25CLENBQUMsQ0FBQzt3QkFDQSxJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJO3dCQUN2QixLQUFLLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLO3dCQUN6QixHQUFHLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHO3FCQUN0QjtvQkFDRCxDQUFDLENBQUMsU0FBUztnQkFDYixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87b0JBQ25CLENBQUMsQ0FBQzt3QkFDQSxJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJO3dCQUN2QixHQUFHLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHO3FCQUN0QjtvQkFDRCxDQUFDLENBQUMsU0FBUztnQkFDYixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87YUFDdEI7WUFDRCxJQUFJLEVBQUUsRUFBRTtZQUNSLEtBQUs7WUFDTCxVQUFVO1lBQ1YsUUFBUSxFQUFFO2dCQUNSLFVBQVUsRUFBRSxFQUFFO2FBQ2Y7WUFDRCxRQUFRO1NBQ1QsQ0FBQTtJQUNILENBQUMsQ0FBQyxDQUFBO0FBQ0osQ0FBQyJ9
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@effect-app/infra",
3
- "version": "0.104.0",
3
+ "version": "0.104.1",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "dependencies": {
@@ -19,8 +19,8 @@
19
19
  "pure-rand": "6.0.4",
20
20
  "redlock": "^4.2.0",
21
21
  "@effect-app/core": "0.77.0",
22
- "@effect-app/schema": "0.71.0",
23
22
  "@effect-app/infra-adapters": "0.65.0",
23
+ "@effect-app/schema": "0.71.0",
24
24
  "@effect-app/prelude": "0.78.0"
25
25
  },
26
26
  "devDependencies": {