payload 2.0.5 → 2.0.6

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 (48) hide show
  1. package/components/forms.d.ts +1 -0
  2. package/components/forms.js +5 -1
  3. package/config.d.ts +1 -1
  4. package/config.js +1 -5
  5. package/dist/admin/components/elements/DocumentControls/index.d.ts.map +1 -1
  6. package/dist/admin/components/elements/DocumentControls/index.js +2 -9
  7. package/dist/admin/components/elements/DuplicateDocument/index.d.ts.map +1 -1
  8. package/dist/admin/components/elements/DuplicateDocument/index.js +2 -1
  9. package/dist/admin/components/forms/Form/buildStateFromSchema/addFieldStatePromise.d.ts.map +1 -1
  10. package/dist/admin/components/forms/Form/buildStateFromSchema/addFieldStatePromise.js +5 -5
  11. package/dist/admin/components/forms/Form/fieldReducer.d.ts +3 -0
  12. package/dist/admin/components/forms/Form/fieldReducer.d.ts.map +1 -1
  13. package/dist/admin/components/forms/Form/fieldReducer.js +5 -11
  14. package/dist/admin/components/forms/Form/index.d.ts.map +1 -1
  15. package/dist/admin/components/forms/Form/index.js +16 -9
  16. package/dist/admin/components/forms/Form/types.d.ts +7 -1
  17. package/dist/admin/components/forms/Form/types.d.ts.map +1 -1
  18. package/dist/admin/components/forms/RenderFields/index.d.ts +15 -0
  19. package/dist/admin/components/forms/RenderFields/index.d.ts.map +1 -1
  20. package/dist/admin/components/forms/RenderFields/index.js +16 -6
  21. package/dist/admin/components/forms/RenderFields/types.d.ts +5 -5
  22. package/dist/admin/components/forms/RenderFields/types.d.ts.map +1 -1
  23. package/dist/admin/components/forms/field-types/Array/index.js +4 -4
  24. package/dist/admin/components/forms/field-types/Blocks/index.js +4 -4
  25. package/dist/admin/components/forms/useField/index.d.ts.map +1 -1
  26. package/dist/admin/components/forms/useField/index.js +9 -4
  27. package/dist/admin/components/views/Global/Default/index.d.ts.map +1 -1
  28. package/dist/admin/components/views/Global/Default/index.js +2 -3
  29. package/dist/admin/components/views/Global/Default/index.scss +5 -3
  30. package/dist/admin/components/views/Login/index.d.ts.map +1 -1
  31. package/dist/admin/components/views/Login/index.js +10 -7
  32. package/dist/admin/components/views/Login/index.scss +7 -0
  33. package/dist/admin/components/views/collections/Edit/Default/index.d.ts.map +1 -1
  34. package/dist/admin/components/views/collections/Edit/Default/index.js +4 -2
  35. package/dist/admin/components/views/collections/Edit/Default/index.scss +5 -3
  36. package/dist/exports/components/forms.d.ts +1 -0
  37. package/dist/exports/components/forms.d.ts.map +1 -1
  38. package/dist/exports/components/forms.js +5 -1
  39. package/dist/exports/config.d.ts +1 -1
  40. package/dist/exports/config.d.ts.map +1 -1
  41. package/dist/exports/config.js +1 -5
  42. package/dist/exports/utilities.d.ts +1 -0
  43. package/dist/exports/utilities.d.ts.map +1 -1
  44. package/dist/exports/utilities.js +5 -1
  45. package/dist/fields/validations.js +2 -2
  46. package/package.json +2 -3
  47. package/utilities.d.ts +1 -0
  48. package/utilities.js +5 -1
@@ -119,7 +119,7 @@ function fieldReducer(state, action) {
119
119
  ...state[path],
120
120
  disableFormData: rows.length > 0,
121
121
  rows: rowsMetadata,
122
- value: rows
122
+ value: rows.length
123
123
  },
124
124
  ...(0, _rows.flattenRows)(path, rows)
125
125
  };
@@ -149,9 +149,6 @@ function fieldReducer(state, action) {
149
149
  // add new row to array _field state_
150
150
  const { remainingFields, rows: siblingRows } = (0, _rows.separateRows)(path, state);
151
151
  siblingRows.splice(rowIndex, 0, subFieldState);
152
- // add new row to array _value_
153
- const currentValue = Array.isArray(state[path]?.value) ? state[path]?.value : [];
154
- const newValue = currentValue.splice(rowIndex, 0, (0, _reduceFieldsToValues.default)(subFieldState, true));
155
152
  const newState = {
156
153
  ...remainingFields,
157
154
  ...(0, _rows.flattenRows)(path, siblingRows),
@@ -159,7 +156,7 @@ function fieldReducer(state, action) {
159
156
  ...state[path],
160
157
  disableFormData: true,
161
158
  rows: rowsMetadata,
162
- value: newValue
159
+ value: siblingRows.length
163
160
  }
164
161
  };
165
162
  return newState;
@@ -187,9 +184,6 @@ function fieldReducer(state, action) {
187
184
  }
188
185
  // replace form _field state_
189
186
  siblingRows[rowIndex] = subFieldState;
190
- // replace array _value_
191
- const newValue = Array.isArray(state[path]?.value) ? state[path]?.value : [];
192
- newValue[rowIndex] = (0, _reduceFieldsToValues.default)(subFieldState, true);
193
187
  const newState = {
194
188
  ...remainingFields,
195
189
  ...(0, _rows.flattenRows)(path, siblingRows),
@@ -197,7 +191,7 @@ function fieldReducer(state, action) {
197
191
  ...state[path],
198
192
  disableFormData: true,
199
193
  rows: rowsMetadata,
200
- value: newValue
194
+ value: siblingRows.length
201
195
  }
202
196
  };
203
197
  return newState;
@@ -223,7 +217,7 @@ function fieldReducer(state, action) {
223
217
  ...state[path],
224
218
  disableFormData: true,
225
219
  rows: rowsMetadata,
226
- value: rows
220
+ value: rows.length
227
221
  },
228
222
  ...(0, _rows.flattenRows)(path, rows)
229
223
  };
@@ -318,4 +312,4 @@ function fieldReducer(state, action) {
318
312
  }
319
313
  }
320
314
 
321
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hZG1pbi9jb21wb25lbnRzL2Zvcm1zL0Zvcm0vZmllbGRSZWR1Y2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBPYmplY3RJRCBmcm9tICdic29uLW9iamVjdGlkJ1xuaW1wb3J0IGVxdWFsIGZyb20gJ2RlZXAtZXF1YWwnXG5cbmltcG9ydCB0eXBlIHsgRmllbGRBY3Rpb24sIEZpZWxkcywgRm9ybUZpZWxkIH0gZnJvbSAnLi90eXBlcydcblxuaW1wb3J0IHsgZGVlcENvcHlPYmplY3QgfSBmcm9tICcuLi8uLi8uLi8uLi91dGlsaXRpZXMvZGVlcENvcHlPYmplY3QnXG5pbXBvcnQgZ2V0U2libGluZ0RhdGEgZnJvbSAnLi9nZXRTaWJsaW5nRGF0YSdcbmltcG9ydCByZWR1Y2VGaWVsZHNUb1ZhbHVlcyBmcm9tICcuL3JlZHVjZUZpZWxkc1RvVmFsdWVzJ1xuaW1wb3J0IHsgZmxhdHRlblJvd3MsIHNlcGFyYXRlUm93cyB9IGZyb20gJy4vcm93cydcblxuZXhwb3J0IGZ1bmN0aW9uIGZpZWxkUmVkdWNlcihzdGF0ZTogRmllbGRzLCBhY3Rpb246IEZpZWxkQWN0aW9uKTogRmllbGRzIHtcbiAgc3dpdGNoIChhY3Rpb24udHlwZSkge1xuICAgIGNhc2UgJ1JFUExBQ0VfU1RBVEUnOiB7XG4gICAgICBjb25zdCBuZXdTdGF0ZSA9IHt9XG5cbiAgICAgIC8vIE9ubHkgdXBkYXRlIGZpZWxkcyB0aGF0IGhhdmUgY2hhbmdlZFxuICAgICAgLy8gYnkgY29tcGFyaW5nIG9sZCB2YWx1ZSAvIGluaXRpYWxWYWx1ZSB0byBuZXdcbiAgICAgIC8vIC4uXG4gICAgICAvLyBUaGlzIGlzIGEgcGVyZm9ybWFuY2UgZW5oYW5jZW1lbnQgZm9yIHNhdmluZ1xuICAgICAgLy8gbGFyZ2UgZG9jdW1lbnRzIHdpdGggaHVuZHJlZHMgb2YgZmllbGRzXG5cbiAgICAgIE9iamVjdC5lbnRyaWVzKGFjdGlvbi5zdGF0ZSkuZm9yRWFjaCgoW3BhdGgsIGZpZWxkXSkgPT4ge1xuICAgICAgICBjb25zdCBvbGRGaWVsZCA9IHN0YXRlW3BhdGhdXG4gICAgICAgIGNvbnN0IG5ld0ZpZWxkID0gZmllbGRcblxuICAgICAgICBpZiAoIWVxdWFsKG9sZEZpZWxkLCBuZXdGaWVsZCkpIHtcbiAgICAgICAgICBuZXdTdGF0ZVtwYXRoXSA9IG5ld0ZpZWxkXG4gICAgICAgIH0gZWxzZSBpZiAob2xkRmllbGQpIHtcbiAgICAgICAgICBuZXdTdGF0ZVtwYXRoXSA9IG9sZEZpZWxkXG4gICAgICAgIH1cbiAgICAgIH0pXG5cbiAgICAgIHJldHVybiBuZXdTdGF0ZVxuICAgIH1cblxuICAgIGNhc2UgJ1JFTU9WRSc6IHtcbiAgICAgIGNvbnN0IG5ld1N0YXRlID0geyAuLi5zdGF0ZSB9XG4gICAgICBpZiAobmV3U3RhdGVbYWN0aW9uLnBhdGhdKSBkZWxldGUgbmV3U3RhdGVbYWN0aW9uLnBhdGhdXG4gICAgICByZXR1cm4gbmV3U3RhdGVcbiAgICB9XG5cbiAgICBjYXNlICdNT0RJRllfQ09ORElUSU9OJzoge1xuICAgICAgY29uc3QgeyBwYXRoLCByZXN1bHQsIHVzZXIgfSA9IGFjdGlvblxuXG4gICAgICByZXR1cm4gT2JqZWN0LmVudHJpZXMoc3RhdGUpLnJlZHVjZSgobmV3U3RhdGUsIFtmaWVsZFBhdGgsIGZpZWxkXSkgPT4ge1xuICAgICAgICBpZiAoZmllbGRQYXRoID09PSBwYXRoIHx8IGZpZWxkUGF0aC5pbmRleE9mKGAke3BhdGh9LmApID09PSAwKSB7XG4gICAgICAgICAgbGV0IHBhc3Nlc0NvbmRpdGlvbiA9IHJlc3VsdFxuXG4gICAgICAgICAgLy8gSWYgYSBjb25kaXRpb24gaXMgYmVpbmcgc2V0IHRvIHRydWUsXG4gICAgICAgICAgLy8gU2V0IGFsbCBjb25kaXRpb25zIHRvIHRydWVcbiAgICAgICAgICAvLyBCZXNpZGVzIHRob3NlIHdobyBzdGlsbCBmYWlsIHRoZWlyIG93biBjb25kaXRpb25zXG5cbiAgICAgICAgICBpZiAocGFzc2VzQ29uZGl0aW9uICYmIGZpZWxkLmNvbmRpdGlvbikge1xuICAgICAgICAgICAgcGFzc2VzQ29uZGl0aW9uID0gZmllbGQuY29uZGl0aW9uKFxuICAgICAgICAgICAgICByZWR1Y2VGaWVsZHNUb1ZhbHVlcyhzdGF0ZSwgdHJ1ZSksXG4gICAgICAgICAgICAgIGdldFNpYmxpbmdEYXRhKHN0YXRlLCBwYXRoKSxcbiAgICAgICAgICAgICAgeyB1c2VyIH0sXG4gICAgICAgICAgICApXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLm5ld1N0YXRlLFxuICAgICAgICAgICAgW2ZpZWxkUGF0aF06IHtcbiAgICAgICAgICAgICAgLi4uZmllbGQsXG4gICAgICAgICAgICAgIHBhc3Nlc0NvbmRpdGlvbixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5uZXdTdGF0ZSxcbiAgICAgICAgICBbZmllbGRQYXRoXToge1xuICAgICAgICAgICAgLi4uZmllbGQsXG4gICAgICAgICAgfSxcbiAgICAgICAgfVxuICAgICAgfSwge30pXG4gICAgfVxuXG4gICAgY2FzZSAnVVBEQVRFJzoge1xuICAgICAgY29uc3QgbmV3RmllbGQgPSBPYmplY3QuZW50cmllcyhhY3Rpb24pLnJlZHVjZShcbiAgICAgICAgKGZpZWxkLCBba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgICdjb25kaXRpb24nLFxuICAgICAgICAgICAgICAnZGlzYWJsZUZvcm1EYXRhJyxcbiAgICAgICAgICAgICAgJ2Vycm9yTWVzc2FnZScsXG4gICAgICAgICAgICAgICdpbml0aWFsVmFsdWUnLFxuICAgICAgICAgICAgICAncGFzc2VzQ29uZGl0aW9uJyxcbiAgICAgICAgICAgICAgJ3Jvd3MnLFxuICAgICAgICAgICAgICAndmFsaWQnLFxuICAgICAgICAgICAgICAndmFsaWRhdGUnLFxuICAgICAgICAgICAgICAndmFsdWUnLFxuICAgICAgICAgICAgXS5pbmNsdWRlcyhrZXkpXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAuLi5maWVsZCxcbiAgICAgICAgICAgICAgW2tleV06IHZhbHVlLFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBmaWVsZFxuICAgICAgICB9LFxuICAgICAgICBzdGF0ZVthY3Rpb24ucGF0aF0gfHwgKHt9IGFzIEZvcm1GaWVsZCksXG4gICAgICApXG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBbYWN0aW9uLnBhdGhdOiBuZXdGaWVsZCxcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjYXNlICdSRU1PVkVfUk9XJzoge1xuICAgICAgY29uc3QgeyBwYXRoLCByb3dJbmRleCB9ID0gYWN0aW9uXG4gICAgICBjb25zdCB7IHJlbWFpbmluZ0ZpZWxkcywgcm93cyB9ID0gc2VwYXJhdGVSb3dzKHBhdGgsIHN0YXRlKVxuICAgICAgY29uc3Qgcm93c01ldGFkYXRhID0gWy4uLihzdGF0ZVtwYXRoXT8ucm93cyB8fCBbXSldXG5cbiAgICAgIHJvd3Muc3BsaWNlKHJvd0luZGV4LCAxKVxuICAgICAgcm93c01ldGFkYXRhLnNwbGljZShyb3dJbmRleCwgMSlcblxuICAgICAgY29uc3QgbmV3U3RhdGU6IEZpZWxkcyA9IHtcbiAgICAgICAgLi4ucmVtYWluaW5nRmllbGRzLFxuICAgICAgICBbcGF0aF06IHtcbiAgICAgICAgICAuLi5zdGF0ZVtwYXRoXSxcbiAgICAgICAgICBkaXNhYmxlRm9ybURhdGE6IHJvd3MubGVuZ3RoID4gMCxcbiAgICAgICAgICByb3dzOiByb3dzTWV0YWRhdGEsXG4gICAgICAgICAgdmFsdWU6IHJvd3MsXG4gICAgICAgIH0sXG4gICAgICAgIC4uLmZsYXR0ZW5Sb3dzKHBhdGgsIHJvd3MpLFxuICAgICAgfVxuXG4gICAgICByZXR1cm4gbmV3U3RhdGVcbiAgICB9XG5cbiAgICBjYXNlICdBRERfUk9XJzoge1xuICAgICAgY29uc3QgeyBibG9ja1R5cGUsIHBhdGgsIHJvd0luZGV4OiByb3dJbmRleEZyb21BcmdzLCBzdWJGaWVsZFN0YXRlIH0gPSBhY3Rpb25cbiAgICAgIGNvbnN0IHJvd0luZGV4ID1cbiAgICAgICAgdHlwZW9mIHJvd0luZGV4RnJvbUFyZ3MgPT09ICdudW1iZXInID8gcm93SW5kZXhGcm9tQXJncyA6IHN0YXRlW3BhdGhdPy5yb3dzPy5sZW5ndGggfHwgMFxuXG4gICAgICBjb25zdCByb3dzTWV0YWRhdGEgPSBbLi4uKHN0YXRlW3BhdGhdPy5yb3dzIHx8IFtdKV1cbiAgICAgIHJvd3NNZXRhZGF0YS5zcGxpY2UoXG4gICAgICAgIHJvd0luZGV4LFxuICAgICAgICAwLFxuICAgICAgICAvLyBuZXcgcm93XG4gICAgICAgIHtcbiAgICAgICAgICBpZDogbmV3IE9iamVjdElEKCkudG9IZXhTdHJpbmcoKSxcbiAgICAgICAgICBibG9ja1R5cGU6IGJsb2NrVHlwZSB8fCB1bmRlZmluZWQsXG4gICAgICAgICAgY2hpbGRFcnJvclBhdGhzOiBuZXcgU2V0KCksXG4gICAgICAgICAgY29sbGFwc2VkOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgIClcblxuICAgICAgaWYgKGJsb2NrVHlwZSkge1xuICAgICAgICBzdWJGaWVsZFN0YXRlLmJsb2NrVHlwZSA9IHtcbiAgICAgICAgICBpbml0aWFsVmFsdWU6IGJsb2NrVHlwZSxcbiAgICAgICAgICB2YWxpZDogdHJ1ZSxcbiAgICAgICAgICB2YWx1ZTogYmxvY2tUeXBlLFxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIGFkZCBuZXcgcm93IHRvIGFycmF5IF9maWVsZCBzdGF0ZV9cbiAgICAgIGNvbnN0IHsgcmVtYWluaW5nRmllbGRzLCByb3dzOiBzaWJsaW5nUm93cyB9ID0gc2VwYXJhdGVSb3dzKHBhdGgsIHN0YXRlKVxuICAgICAgc2libGluZ1Jvd3Muc3BsaWNlKHJvd0luZGV4LCAwLCBzdWJGaWVsZFN0YXRlKVxuXG4gICAgICAvLyBhZGQgbmV3IHJvdyB0byBhcnJheSBfdmFsdWVfXG4gICAgICBjb25zdCBjdXJyZW50VmFsdWUgPSAoQXJyYXkuaXNBcnJheShzdGF0ZVtwYXRoXT8udmFsdWUpID8gc3RhdGVbcGF0aF0/LnZhbHVlIDogW10pIGFzIEZpZWxkc1tdXG4gICAgICBjb25zdCBuZXdWYWx1ZSA9IGN1cnJlbnRWYWx1ZS5zcGxpY2Uocm93SW5kZXgsIDAsIHJlZHVjZUZpZWxkc1RvVmFsdWVzKHN1YkZpZWxkU3RhdGUsIHRydWUpKVxuXG4gICAgICBjb25zdCBuZXdTdGF0ZTogRmllbGRzID0ge1xuICAgICAgICAuLi5yZW1haW5pbmdGaWVsZHMsXG4gICAgICAgIC4uLmZsYXR0ZW5Sb3dzKHBhdGgsIHNpYmxpbmdSb3dzKSxcbiAgICAgICAgW3BhdGhdOiB7XG4gICAgICAgICAgLi4uc3RhdGVbcGF0aF0sXG4gICAgICAgICAgZGlzYWJsZUZvcm1EYXRhOiB0cnVlLFxuICAgICAgICAgIHJvd3M6IHJvd3NNZXRhZGF0YSxcbiAgICAgICAgICB2YWx1ZTogbmV3VmFsdWUsXG4gICAgICAgIH0sXG4gICAgICB9XG5cbiAgICAgIHJldHVybiBuZXdTdGF0ZVxuICAgIH1cblxuICAgIGNhc2UgJ1JFUExBQ0VfUk9XJzoge1xuICAgICAgY29uc3QgeyBibG9ja1R5cGUsIHBhdGgsIHJvd0luZGV4OiByb3dJbmRleEFyZywgc3ViRmllbGRTdGF0ZSB9ID0gYWN0aW9uXG4gICAgICBjb25zdCB7IHJlbWFpbmluZ0ZpZWxkcywgcm93czogc2libGluZ1Jvd3MgfSA9IHNlcGFyYXRlUm93cyhwYXRoLCBzdGF0ZSlcbiAgICAgIGNvbnN0IHJvd0luZGV4ID0gTWF0aC5tYXgoMCwgTWF0aC5taW4ocm93SW5kZXhBcmcsIHNpYmxpbmdSb3dzPy5sZW5ndGggLSAxIHx8IDApKVxuXG4gICAgICBjb25zdCByb3dzTWV0YWRhdGEgPSBbLi4uKHN0YXRlW3BhdGhdPy5yb3dzIHx8IFtdKV1cbiAgICAgIHJvd3NNZXRhZGF0YVtyb3dJbmRleF0gPSB7XG4gICAgICAgIGlkOiBuZXcgT2JqZWN0SUQoKS50b0hleFN0cmluZygpLFxuICAgICAgICBibG9ja1R5cGU6IGJsb2NrVHlwZSB8fCB1bmRlZmluZWQsXG4gICAgICAgIGNoaWxkRXJyb3JQYXRoczogbmV3IFNldCgpLFxuICAgICAgICBjb2xsYXBzZWQ6IGZhbHNlLFxuICAgICAgfVxuXG4gICAgICBpZiAoYmxvY2tUeXBlKSB7XG4gICAgICAgIHN1YkZpZWxkU3RhdGUuYmxvY2tUeXBlID0ge1xuICAgICAgICAgIGluaXRpYWxWYWx1ZTogYmxvY2tUeXBlLFxuICAgICAgICAgIHZhbGlkOiB0cnVlLFxuICAgICAgICAgIHZhbHVlOiBibG9ja1R5cGUsXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gcmVwbGFjZSBmb3JtIF9maWVsZCBzdGF0ZV9cbiAgICAgIHNpYmxpbmdSb3dzW3Jvd0luZGV4XSA9IHN1YkZpZWxkU3RhdGVcblxuICAgICAgLy8gcmVwbGFjZSBhcnJheSBfdmFsdWVfXG4gICAgICBjb25zdCBuZXdWYWx1ZSA9IEFycmF5LmlzQXJyYXkoc3RhdGVbcGF0aF0/LnZhbHVlKSA/IHN0YXRlW3BhdGhdPy52YWx1ZSA6IFtdXG4gICAgICBuZXdWYWx1ZVtyb3dJbmRleF0gPSByZWR1Y2VGaWVsZHNUb1ZhbHVlcyhzdWJGaWVsZFN0YXRlLCB0cnVlKVxuXG4gICAgICBjb25zdCBuZXdTdGF0ZTogRmllbGRzID0ge1xuICAgICAgICAuLi5yZW1haW5pbmdGaWVsZHMsXG4gICAgICAgIC4uLmZsYXR0ZW5Sb3dzKHBhdGgsIHNpYmxpbmdSb3dzKSxcbiAgICAgICAgW3BhdGhdOiB7XG4gICAgICAgICAgLi4uc3RhdGVbcGF0aF0sXG4gICAgICAgICAgZGlzYWJsZUZvcm1EYXRhOiB0cnVlLFxuICAgICAgICAgIHJvd3M6IHJvd3NNZXRhZGF0YSxcbiAgICAgICAgICB2YWx1ZTogbmV3VmFsdWUsXG4gICAgICAgIH0sXG4gICAgICB9XG5cbiAgICAgIHJldHVybiBuZXdTdGF0ZVxuICAgIH1cblxuICAgIGNhc2UgJ0RVUExJQ0FURV9ST1cnOiB7XG4gICAgICBjb25zdCB7IHBhdGgsIHJvd0luZGV4IH0gPSBhY3Rpb25cbiAgICAgIGNvbnN0IHsgcmVtYWluaW5nRmllbGRzLCByb3dzIH0gPSBzZXBhcmF0ZVJvd3MocGF0aCwgc3RhdGUpXG4gICAgICBjb25zdCByb3dzTWV0YWRhdGEgPSBzdGF0ZVtwYXRoXT8ucm93cyB8fCBbXVxuXG4gICAgICBjb25zdCBkdXBsaWNhdGVSb3dNZXRhZGF0YSA9IGRlZXBDb3B5T2JqZWN0KHJvd3NNZXRhZGF0YVtyb3dJbmRleF0pXG4gICAgICBpZiAoZHVwbGljYXRlUm93TWV0YWRhdGEuaWQpIGR1cGxpY2F0ZVJvd01ldGFkYXRhLmlkID0gbmV3IE9iamVjdElEKCkudG9IZXhTdHJpbmcoKVxuXG4gICAgICBjb25zdCBkdXBsaWNhdGVSb3dTdGF0ZSA9IGRlZXBDb3B5T2JqZWN0KHJvd3Nbcm93SW5kZXhdKVxuICAgICAgaWYgKGR1cGxpY2F0ZVJvd1N0YXRlLmlkKSBkdXBsaWNhdGVSb3dTdGF0ZS5pZCA9IG5ldyBPYmplY3RJRCgpLnRvSGV4U3RyaW5nKClcblxuICAgICAgLy8gSWYgdGhlcmUgYXJlIHN1YmZpZWxkc1xuICAgICAgaWYgKE9iamVjdC5rZXlzKGR1cGxpY2F0ZVJvd1N0YXRlKS5sZW5ndGggPiAwKSB7XG4gICAgICAgIC8vIEFkZCBuZXcgb2JqZWN0IGNvbnRhaW5pbmcgc3ViZmllbGQgbmFtZXMgdG8gdW5mbGF0dGVuZWRSb3dzIGFycmF5XG4gICAgICAgIHJvd3Muc3BsaWNlKHJvd0luZGV4ICsgMSwgMCwgZHVwbGljYXRlUm93U3RhdGUpXG4gICAgICAgIHJvd3NNZXRhZGF0YS5zcGxpY2Uocm93SW5kZXggKyAxLCAwLCBkdXBsaWNhdGVSb3dNZXRhZGF0YSlcbiAgICAgIH1cblxuICAgICAgY29uc3QgbmV3U3RhdGUgPSB7XG4gICAgICAgIC4uLnJlbWFpbmluZ0ZpZWxkcyxcbiAgICAgICAgW3BhdGhdOiB7XG4gICAgICAgICAgLi4uc3RhdGVbcGF0aF0sXG4gICAgICAgICAgZGlzYWJsZUZvcm1EYXRhOiB0cnVlLFxuICAgICAgICAgIHJvd3M6IHJvd3NNZXRhZGF0YSxcbiAgICAgICAgICB2YWx1ZTogcm93cyxcbiAgICAgICAgfSxcbiAgICAgICAgLi4uZmxhdHRlblJvd3MocGF0aCwgcm93cyksXG4gICAgICB9XG5cbiAgICAgIHJldHVybiBuZXdTdGF0ZVxuICAgIH1cblxuICAgIGNhc2UgJ01PVkVfUk9XJzoge1xuICAgICAgY29uc3QgeyBtb3ZlRnJvbUluZGV4LCBtb3ZlVG9JbmRleCwgcGF0aCB9ID0gYWN0aW9uXG4gICAgICBjb25zdCB7IHJlbWFpbmluZ0ZpZWxkcywgcm93cyB9ID0gc2VwYXJhdGVSb3dzKHBhdGgsIHN0YXRlKVxuXG4gICAgICAvLyBjb3B5IHRoZSByb3cgdG8gbW92ZVxuICAgICAgY29uc3QgY29weU9mTW92aW5nUm93ID0gcm93c1ttb3ZlRnJvbUluZGV4XVxuICAgICAgLy8gZGVsZXRlIHRoZSByb3cgYnkgaW5kZXhcbiAgICAgIHJvd3Muc3BsaWNlKG1vdmVGcm9tSW5kZXgsIDEpXG4gICAgICAvLyBpbnNlcnQgcm93IGNvcHlPZk1vdmluZ1JvdyBiYWNrIGluXG4gICAgICByb3dzLnNwbGljZShtb3ZlVG9JbmRleCwgMCwgY29weU9mTW92aW5nUm93KVxuXG4gICAgICAvLyBtb2RpZnkgYXJyYXkvYmxvY2sgaW50ZXJuYWwgcm93IHN0YXRlIChpLmUuIGNvbGxhcHNlZCwgYmxvY2tUeXBlKVxuICAgICAgY29uc3Qgcm93U3RhdGVDb3B5ID0gWy4uLihzdGF0ZVtwYXRoXT8ucm93cyB8fCBbXSldXG4gICAgICBjb25zdCBtb3ZpbmdSb3dTdGF0ZSA9IHsgLi4ucm93U3RhdGVDb3B5W21vdmVGcm9tSW5kZXhdIH1cbiAgICAgIHJvd1N0YXRlQ29weS5zcGxpY2UobW92ZUZyb21JbmRleCwgMSlcbiAgICAgIHJvd1N0YXRlQ29weS5zcGxpY2UobW92ZVRvSW5kZXgsIDAsIG1vdmluZ1Jvd1N0YXRlKVxuXG4gICAgICBjb25zdCBuZXdTdGF0ZSA9IHtcbiAgICAgICAgLi4ucmVtYWluaW5nRmllbGRzLFxuICAgICAgICAuLi5mbGF0dGVuUm93cyhwYXRoLCByb3dzKSxcbiAgICAgICAgW3BhdGhdOiB7XG4gICAgICAgICAgLi4uc3RhdGVbcGF0aF0sXG4gICAgICAgICAgcm93czogcm93U3RhdGVDb3B5LFxuICAgICAgICB9LFxuICAgICAgfVxuXG4gICAgICByZXR1cm4gbmV3U3RhdGVcbiAgICB9XG5cbiAgICBjYXNlICdTRVRfUk9XX0NPTExBUFNFRCc6IHtcbiAgICAgIGNvbnN0IHsgY29sbGFwc2VkLCBwYXRoLCByb3dJRCwgc2V0RG9jRmllbGRQcmVmZXJlbmNlcyB9ID0gYWN0aW9uXG5cbiAgICAgIGNvbnN0IGFycmF5U3RhdGUgPSBzdGF0ZVtwYXRoXVxuXG4gICAgICBjb25zdCB7IGNvbGxhcHNlZFJvd0lEcywgbWF0Y2hlZEluZGV4IH0gPSBzdGF0ZVtwYXRoXS5yb3dzLnJlZHVjZShcbiAgICAgICAgKGFjYywgcm93LCBpbmRleCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGlzTWF0Y2hpbmdSb3cgPSByb3cuaWQgPT09IHJvd0lEXG4gICAgICAgICAgaWYgKGlzTWF0Y2hpbmdSb3cpIGFjYy5tYXRjaGVkSW5kZXggPSBpbmRleFxuXG4gICAgICAgICAgaWYgKCFpc01hdGNoaW5nUm93ICYmIHJvdy5jb2xsYXBzZWQpIGFjYy5jb2xsYXBzZWRSb3dJRHMucHVzaChyb3cuaWQpXG4gICAgICAgICAgZWxzZSBpZiAoaXNNYXRjaGluZ1JvdyAmJiBjb2xsYXBzZWQpIGFjYy5jb2xsYXBzZWRSb3dJRHMucHVzaChyb3cuaWQpXG5cbiAgICAgICAgICByZXR1cm4gYWNjXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBjb2xsYXBzZWRSb3dJRHM6IFtdLFxuICAgICAgICAgIG1hdGNoZWRJbmRleDogdW5kZWZpbmVkLFxuICAgICAgICB9LFxuICAgICAgKVxuXG4gICAgICBpZiAobWF0Y2hlZEluZGV4ID4gLTEpIHtcbiAgICAgICAgYXJyYXlTdGF0ZS5yb3dzW21hdGNoZWRJbmRleF0uY29sbGFwc2VkID0gY29sbGFwc2VkXG4gICAgICAgIHNldERvY0ZpZWxkUHJlZmVyZW5jZXMocGF0aCwgeyBjb2xsYXBzZWQ6IGNvbGxhcHNlZFJvd0lEcyB9KVxuICAgICAgfVxuXG4gICAgICBjb25zdCBuZXdTdGF0ZSA9IHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIFtwYXRoXToge1xuICAgICAgICAgIC4uLmFycmF5U3RhdGUsXG4gICAgICAgIH0sXG4gICAgICB9XG5cbiAgICAgIHJldHVybiBuZXdTdGF0ZVxuICAgIH1cblxuICAgIGNhc2UgJ1NFVF9BTExfUk9XU19DT0xMQVBTRUQnOiB7XG4gICAgICBjb25zdCB7IGNvbGxhcHNlZCwgcGF0aCwgc2V0RG9jRmllbGRQcmVmZXJlbmNlcyB9ID0gYWN0aW9uXG5cbiAgICAgIGNvbnN0IHsgY29sbGFwc2VkUm93SURzLCByb3dzIH0gPSBzdGF0ZVtwYXRoXS5yb3dzLnJlZHVjZShcbiAgICAgICAgKGFjYywgcm93KSA9PiB7XG4gICAgICAgICAgaWYgKGNvbGxhcHNlZCkgYWNjLmNvbGxhcHNlZFJvd0lEcy5wdXNoKHJvdy5pZClcblxuICAgICAgICAgIGFjYy5yb3dzLnB1c2goe1xuICAgICAgICAgICAgLi4ucm93LFxuICAgICAgICAgICAgY29sbGFwc2VkLFxuICAgICAgICAgIH0pXG5cbiAgICAgICAgICByZXR1cm4gYWNjXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBjb2xsYXBzZWRSb3dJRHM6IFtdLFxuICAgICAgICAgIHJvd3M6IFtdLFxuICAgICAgICB9LFxuICAgICAgKVxuXG4gICAgICBzZXREb2NGaWVsZFByZWZlcmVuY2VzKHBhdGgsIHsgY29sbGFwc2VkOiBjb2xsYXBzZWRSb3dJRHMgfSlcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIFtwYXRoXToge1xuICAgICAgICAgIC4uLnN0YXRlW3BhdGhdLFxuICAgICAgICAgIHJvd3MsXG4gICAgICAgIH0sXG4gICAgICB9XG4gICAgfVxuXG4gICAgZGVmYXVsdDoge1xuICAgICAgcmV0dXJuIHN0YXRlXG4gICAgfVxuICB9XG59XG4iXSwibmFtZXMiOlsiZmllbGRSZWR1Y2VyIiwic3RhdGUiLCJhY3Rpb24iLCJ0eXBlIiwibmV3U3RhdGUiLCJPYmplY3QiLCJlbnRyaWVzIiwiZm9yRWFjaCIsInBhdGgiLCJmaWVsZCIsIm9sZEZpZWxkIiwibmV3RmllbGQiLCJlcXVhbCIsInJlc3VsdCIsInVzZXIiLCJyZWR1Y2UiLCJmaWVsZFBhdGgiLCJpbmRleE9mIiwicGFzc2VzQ29uZGl0aW9uIiwiY29uZGl0aW9uIiwicmVkdWNlRmllbGRzVG9WYWx1ZXMiLCJnZXRTaWJsaW5nRGF0YSIsImtleSIsInZhbHVlIiwiaW5jbHVkZXMiLCJyb3dJbmRleCIsInJlbWFpbmluZ0ZpZWxkcyIsInJvd3MiLCJzZXBhcmF0ZVJvd3MiLCJyb3dzTWV0YWRhdGEiLCJzcGxpY2UiLCJkaXNhYmxlRm9ybURhdGEiLCJsZW5ndGgiLCJmbGF0dGVuUm93cyIsImJsb2NrVHlwZSIsInJvd0luZGV4RnJvbUFyZ3MiLCJzdWJGaWVsZFN0YXRlIiwiaWQiLCJPYmplY3RJRCIsInRvSGV4U3RyaW5nIiwidW5kZWZpbmVkIiwiY2hpbGRFcnJvclBhdGhzIiwiU2V0IiwiY29sbGFwc2VkIiwiaW5pdGlhbFZhbHVlIiwidmFsaWQiLCJzaWJsaW5nUm93cyIsImN1cnJlbnRWYWx1ZSIsIkFycmF5IiwiaXNBcnJheSIsIm5ld1ZhbHVlIiwicm93SW5kZXhBcmciLCJNYXRoIiwibWF4IiwibWluIiwiZHVwbGljYXRlUm93TWV0YWRhdGEiLCJkZWVwQ29weU9iamVjdCIsImR1cGxpY2F0ZVJvd1N0YXRlIiwia2V5cyIsIm1vdmVGcm9tSW5kZXgiLCJtb3ZlVG9JbmRleCIsImNvcHlPZk1vdmluZ1JvdyIsInJvd1N0YXRlQ29weSIsIm1vdmluZ1Jvd1N0YXRlIiwicm93SUQiLCJzZXREb2NGaWVsZFByZWZlcmVuY2VzIiwiYXJyYXlTdGF0ZSIsImNvbGxhcHNlZFJvd0lEcyIsIm1hdGNoZWRJbmRleCIsImFjYyIsInJvdyIsImluZGV4IiwiaXNNYXRjaGluZ1JvdyIsInB1c2giXSwibWFwcGluZ3MiOiI7Ozs7K0JBVWdCQTs7O2VBQUFBOzs7cUVBVks7a0VBQ0g7Z0NBSWE7dUVBQ0o7NkVBQ007c0JBQ1M7Ozs7OztBQUVuQyxTQUFTQSxhQUFhQyxLQUFhLEVBQUVDLE1BQW1CO0lBQzdELE9BQVFBLE9BQU9DLElBQUk7UUFDakIsS0FBSztZQUFpQjtnQkFDcEIsTUFBTUMsV0FBVyxDQUFDO2dCQUVsQix1Q0FBdUM7Z0JBQ3ZDLCtDQUErQztnQkFDL0MsS0FBSztnQkFDTCwrQ0FBK0M7Z0JBQy9DLDBDQUEwQztnQkFFMUNDLE9BQU9DLE9BQU8sQ0FBQ0osT0FBT0QsS0FBSyxFQUFFTSxPQUFPLENBQUMsQ0FBQyxDQUFDQyxNQUFNQyxNQUFNO29CQUNqRCxNQUFNQyxXQUFXVCxLQUFLLENBQUNPLEtBQUs7b0JBQzVCLE1BQU1HLFdBQVdGO29CQUVqQixJQUFJLENBQUNHLElBQUFBLGtCQUFLLEVBQUNGLFVBQVVDLFdBQVc7d0JBQzlCUCxRQUFRLENBQUNJLEtBQUssR0FBR0c7b0JBQ25CLE9BQU8sSUFBSUQsVUFBVTt3QkFDbkJOLFFBQVEsQ0FBQ0ksS0FBSyxHQUFHRTtvQkFDbkI7Z0JBQ0Y7Z0JBRUEsT0FBT047WUFDVDtRQUVBLEtBQUs7WUFBVTtnQkFDYixNQUFNQSxXQUFXO29CQUFFLEdBQUdILEtBQUs7Z0JBQUM7Z0JBQzVCLElBQUlHLFFBQVEsQ0FBQ0YsT0FBT00sSUFBSSxDQUFDLEVBQUUsT0FBT0osUUFBUSxDQUFDRixPQUFPTSxJQUFJLENBQUM7Z0JBQ3ZELE9BQU9KO1lBQ1Q7UUFF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
315
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hZG1pbi9jb21wb25lbnRzL2Zvcm1zL0Zvcm0vZmllbGRSZWR1Y2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBPYmplY3RJRCBmcm9tICdic29uLW9iamVjdGlkJ1xuaW1wb3J0IGVxdWFsIGZyb20gJ2RlZXAtZXF1YWwnXG5cbmltcG9ydCB0eXBlIHsgRmllbGRBY3Rpb24sIEZpZWxkcywgRm9ybUZpZWxkIH0gZnJvbSAnLi90eXBlcydcblxuaW1wb3J0IHsgZGVlcENvcHlPYmplY3QgfSBmcm9tICcuLi8uLi8uLi8uLi91dGlsaXRpZXMvZGVlcENvcHlPYmplY3QnXG5pbXBvcnQgZ2V0U2libGluZ0RhdGEgZnJvbSAnLi9nZXRTaWJsaW5nRGF0YSdcbmltcG9ydCByZWR1Y2VGaWVsZHNUb1ZhbHVlcyBmcm9tICcuL3JlZHVjZUZpZWxkc1RvVmFsdWVzJ1xuaW1wb3J0IHsgZmxhdHRlblJvd3MsIHNlcGFyYXRlUm93cyB9IGZyb20gJy4vcm93cydcblxuLyoqXG4gKiBSZWR1Y2VyIHdoaWNoIG1vZGlmaWVzIHRoZSBmb3JtIGZpZWxkIHN0YXRlIChhbGwgdGhlIGN1cnJlbnQgZGF0YSBvZiB0aGUgZmllbGRzIGluIHRoZSBmb3JtKS4gV2hlbiBjYWxsZWQgdXNpbmcgZGlzcGF0Y2gsIGl0IHdpbGwgcmV0dXJuIGEgbmV3IHN0YXRlIG9iamVjdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpZWxkUmVkdWNlcihzdGF0ZTogRmllbGRzLCBhY3Rpb246IEZpZWxkQWN0aW9uKTogRmllbGRzIHtcbiAgc3dpdGNoIChhY3Rpb24udHlwZSkge1xuICAgIGNhc2UgJ1JFUExBQ0VfU1RBVEUnOiB7XG4gICAgICBjb25zdCBuZXdTdGF0ZSA9IHt9XG5cbiAgICAgIC8vIE9ubHkgdXBkYXRlIGZpZWxkcyB0aGF0IGhhdmUgY2hhbmdlZFxuICAgICAgLy8gYnkgY29tcGFyaW5nIG9sZCB2YWx1ZSAvIGluaXRpYWxWYWx1ZSB0byBuZXdcbiAgICAgIC8vIC4uXG4gICAgICAvLyBUaGlzIGlzIGEgcGVyZm9ybWFuY2UgZW5oYW5jZW1lbnQgZm9yIHNhdmluZ1xuICAgICAgLy8gbGFyZ2UgZG9jdW1lbnRzIHdpdGggaHVuZHJlZHMgb2YgZmllbGRzXG5cbiAgICAgIE9iamVjdC5lbnRyaWVzKGFjdGlvbi5zdGF0ZSkuZm9yRWFjaCgoW3BhdGgsIGZpZWxkXSkgPT4ge1xuICAgICAgICBjb25zdCBvbGRGaWVsZCA9IHN0YXRlW3BhdGhdXG4gICAgICAgIGNvbnN0IG5ld0ZpZWxkID0gZmllbGRcblxuICAgICAgICBpZiAoIWVxdWFsKG9sZEZpZWxkLCBuZXdGaWVsZCkpIHtcbiAgICAgICAgICBuZXdTdGF0ZVtwYXRoXSA9IG5ld0ZpZWxkXG4gICAgICAgIH0gZWxzZSBpZiAob2xkRmllbGQpIHtcbiAgICAgICAgICBuZXdTdGF0ZVtwYXRoXSA9IG9sZEZpZWxkXG4gICAgICAgIH1cbiAgICAgIH0pXG5cbiAgICAgIHJldHVybiBuZXdTdGF0ZVxuICAgIH1cblxuICAgIGNhc2UgJ1JFTU9WRSc6IHtcbiAgICAgIGNvbnN0IG5ld1N0YXRlID0geyAuLi5zdGF0ZSB9XG4gICAgICBpZiAobmV3U3RhdGVbYWN0aW9uLnBhdGhdKSBkZWxldGUgbmV3U3RhdGVbYWN0aW9uLnBhdGhdXG4gICAgICByZXR1cm4gbmV3U3RhdGVcbiAgICB9XG5cbiAgICBjYXNlICdNT0RJRllfQ09ORElUSU9OJzoge1xuICAgICAgY29uc3QgeyBwYXRoLCByZXN1bHQsIHVzZXIgfSA9IGFjdGlvblxuXG4gICAgICByZXR1cm4gT2JqZWN0LmVudHJpZXMoc3RhdGUpLnJlZHVjZSgobmV3U3RhdGUsIFtmaWVsZFBhdGgsIGZpZWxkXSkgPT4ge1xuICAgICAgICBpZiAoZmllbGRQYXRoID09PSBwYXRoIHx8IGZpZWxkUGF0aC5pbmRleE9mKGAke3BhdGh9LmApID09PSAwKSB7XG4gICAgICAgICAgbGV0IHBhc3Nlc0NvbmRpdGlvbiA9IHJlc3VsdFxuXG4gICAgICAgICAgLy8gSWYgYSBjb25kaXRpb24gaXMgYmVpbmcgc2V0IHRvIHRydWUsXG4gICAgICAgICAgLy8gU2V0IGFsbCBjb25kaXRpb25zIHRvIHRydWVcbiAgICAgICAgICAvLyBCZXNpZGVzIHRob3NlIHdobyBzdGlsbCBmYWlsIHRoZWlyIG93biBjb25kaXRpb25zXG5cbiAgICAgICAgICBpZiAocGFzc2VzQ29uZGl0aW9uICYmIGZpZWxkLmNvbmRpdGlvbikge1xuICAgICAgICAgICAgcGFzc2VzQ29uZGl0aW9uID0gZmllbGQuY29uZGl0aW9uKFxuICAgICAgICAgICAgICByZWR1Y2VGaWVsZHNUb1ZhbHVlcyhzdGF0ZSwgdHJ1ZSksXG4gICAgICAgICAgICAgIGdldFNpYmxpbmdEYXRhKHN0YXRlLCBwYXRoKSxcbiAgICAgICAgICAgICAgeyB1c2VyIH0sXG4gICAgICAgICAgICApXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLm5ld1N0YXRlLFxuICAgICAgICAgICAgW2ZpZWxkUGF0aF06IHtcbiAgICAgICAgICAgICAgLi4uZmllbGQsXG4gICAgICAgICAgICAgIHBhc3Nlc0NvbmRpdGlvbixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5uZXdTdGF0ZSxcbiAgICAgICAgICBbZmllbGRQYXRoXToge1xuICAgICAgICAgICAgLi4uZmllbGQsXG4gICAgICAgICAgfSxcbiAgICAgICAgfVxuICAgICAgfSwge30pXG4gICAgfVxuXG4gICAgY2FzZSAnVVBEQVRFJzoge1xuICAgICAgY29uc3QgbmV3RmllbGQgPSBPYmplY3QuZW50cmllcyhhY3Rpb24pLnJlZHVjZShcbiAgICAgICAgKGZpZWxkLCBba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgICdjb25kaXRpb24nLFxuICAgICAgICAgICAgICAnZGlzYWJsZUZvcm1EYXRhJyxcbiAgICAgICAgICAgICAgJ2Vycm9yTWVzc2FnZScsXG4gICAgICAgICAgICAgICdpbml0aWFsVmFsdWUnLFxuICAgICAgICAgICAgICAncGFzc2VzQ29uZGl0aW9uJyxcbiAgICAgICAgICAgICAgJ3Jvd3MnLFxuICAgICAgICAgICAgICAndmFsaWQnLFxuICAgICAgICAgICAgICAndmFsaWRhdGUnLFxuICAgICAgICAgICAgICAndmFsdWUnLFxuICAgICAgICAgICAgXS5pbmNsdWRlcyhrZXkpXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAuLi5maWVsZCxcbiAgICAgICAgICAgICAgW2tleV06IHZhbHVlLFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBmaWVsZFxuICAgICAgICB9LFxuICAgICAgICBzdGF0ZVthY3Rpb24ucGF0aF0gfHwgKHt9IGFzIEZvcm1GaWVsZCksXG4gICAgICApXG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBbYWN0aW9uLnBhdGhdOiBuZXdGaWVsZCxcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjYXNlICdSRU1PVkVfUk9XJzoge1xuICAgICAgY29uc3QgeyBwYXRoLCByb3dJbmRleCB9ID0gYWN0aW9uXG4gICAgICBjb25zdCB7IHJlbWFpbmluZ0ZpZWxkcywgcm93cyB9ID0gc2VwYXJhdGVSb3dzKHBhdGgsIHN0YXRlKVxuICAgICAgY29uc3Qgcm93c01ldGFkYXRhID0gWy4uLihzdGF0ZVtwYXRoXT8ucm93cyB8fCBbXSldXG5cbiAgICAgIHJvd3Muc3BsaWNlKHJvd0luZGV4LCAxKVxuICAgICAgcm93c01ldGFkYXRhLnNwbGljZShyb3dJbmRleCwgMSlcblxuICAgICAgY29uc3QgbmV3U3RhdGU6IEZpZWxkcyA9IHtcbiAgICAgICAgLi4ucmVtYWluaW5nRmllbGRzLFxuICAgICAgICBbcGF0aF06IHtcbiAgICAgICAgICAuLi5zdGF0ZVtwYXRoXSxcbiAgICAgICAgICBkaXNhYmxlRm9ybURhdGE6IHJvd3MubGVuZ3RoID4gMCxcbiAgICAgICAgICByb3dzOiByb3dzTWV0YWRhdGEsXG4gICAgICAgICAgdmFsdWU6IHJvd3MubGVuZ3RoLFxuICAgICAgICB9LFxuICAgICAgICAuLi5mbGF0dGVuUm93cyhwYXRoLCByb3dzKSxcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG5ld1N0YXRlXG4gICAgfVxuXG4gICAgY2FzZSAnQUREX1JPVyc6IHtcbiAgICAgIGNvbnN0IHsgYmxvY2tUeXBlLCBwYXRoLCByb3dJbmRleDogcm93SW5kZXhGcm9tQXJncywgc3ViRmllbGRTdGF0ZSB9ID0gYWN0aW9uXG4gICAgICBjb25zdCByb3dJbmRleCA9XG4gICAgICAgIHR5cGVvZiByb3dJbmRleEZyb21BcmdzID09PSAnbnVtYmVyJyA/IHJvd0luZGV4RnJvbUFyZ3MgOiBzdGF0ZVtwYXRoXT8ucm93cz8ubGVuZ3RoIHx8IDBcblxuICAgICAgY29uc3Qgcm93c01ldGFkYXRhID0gWy4uLihzdGF0ZVtwYXRoXT8ucm93cyB8fCBbXSldXG4gICAgICByb3dzTWV0YWRhdGEuc3BsaWNlKFxuICAgICAgICByb3dJbmRleCxcbiAgICAgICAgMCxcbiAgICAgICAgLy8gbmV3IHJvd1xuICAgICAgICB7XG4gICAgICAgICAgaWQ6IG5ldyBPYmplY3RJRCgpLnRvSGV4U3RyaW5nKCksXG4gICAgICAgICAgYmxvY2tUeXBlOiBibG9ja1R5cGUgfHwgdW5kZWZpbmVkLFxuICAgICAgICAgIGNoaWxkRXJyb3JQYXRoczogbmV3IFNldCgpLFxuICAgICAgICAgIGNvbGxhcHNlZDogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICApXG5cbiAgICAgIGlmIChibG9ja1R5cGUpIHtcbiAgICAgICAgc3ViRmllbGRTdGF0ZS5ibG9ja1R5cGUgPSB7XG4gICAgICAgICAgaW5pdGlhbFZhbHVlOiBibG9ja1R5cGUsXG4gICAgICAgICAgdmFsaWQ6IHRydWUsXG4gICAgICAgICAgdmFsdWU6IGJsb2NrVHlwZSxcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBhZGQgbmV3IHJvdyB0byBhcnJheSBfZmllbGQgc3RhdGVfXG4gICAgICBjb25zdCB7IHJlbWFpbmluZ0ZpZWxkcywgcm93czogc2libGluZ1Jvd3MgfSA9IHNlcGFyYXRlUm93cyhwYXRoLCBzdGF0ZSlcbiAgICAgIHNpYmxpbmdSb3dzLnNwbGljZShyb3dJbmRleCwgMCwgc3ViRmllbGRTdGF0ZSlcblxuICAgICAgY29uc3QgbmV3U3RhdGU6IEZpZWxkcyA9IHtcbiAgICAgICAgLi4ucmVtYWluaW5nRmllbGRzLFxuICAgICAgICAuLi5mbGF0dGVuUm93cyhwYXRoLCBzaWJsaW5nUm93cyksXG4gICAgICAgIFtwYXRoXToge1xuICAgICAgICAgIC4uLnN0YXRlW3BhdGhdLFxuICAgICAgICAgIGRpc2FibGVGb3JtRGF0YTogdHJ1ZSxcbiAgICAgICAgICByb3dzOiByb3dzTWV0YWRhdGEsXG4gICAgICAgICAgdmFsdWU6IHNpYmxpbmdSb3dzLmxlbmd0aCxcbiAgICAgICAgfSxcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG5ld1N0YXRlXG4gICAgfVxuXG4gICAgY2FzZSAnUkVQTEFDRV9ST1cnOiB7XG4gICAgICBjb25zdCB7IGJsb2NrVHlwZSwgcGF0aCwgcm93SW5kZXg6IHJvd0luZGV4QXJnLCBzdWJGaWVsZFN0YXRlIH0gPSBhY3Rpb25cbiAgICAgIGNvbnN0IHsgcmVtYWluaW5nRmllbGRzLCByb3dzOiBzaWJsaW5nUm93cyB9ID0gc2VwYXJhdGVSb3dzKHBhdGgsIHN0YXRlKVxuICAgICAgY29uc3Qgcm93SW5kZXggPSBNYXRoLm1heCgwLCBNYXRoLm1pbihyb3dJbmRleEFyZywgc2libGluZ1Jvd3M/Lmxlbmd0aCAtIDEgfHwgMCkpXG5cbiAgICAgIGNvbnN0IHJvd3NNZXRhZGF0YSA9IFsuLi4oc3RhdGVbcGF0aF0/LnJvd3MgfHwgW10pXVxuICAgICAgcm93c01ldGFkYXRhW3Jvd0luZGV4XSA9IHtcbiAgICAgICAgaWQ6IG5ldyBPYmplY3RJRCgpLnRvSGV4U3RyaW5nKCksXG4gICAgICAgIGJsb2NrVHlwZTogYmxvY2tUeXBlIHx8IHVuZGVmaW5lZCxcbiAgICAgICAgY2hpbGRFcnJvclBhdGhzOiBuZXcgU2V0KCksXG4gICAgICAgIGNvbGxhcHNlZDogZmFsc2UsXG4gICAgICB9XG5cbiAgICAgIGlmIChibG9ja1R5cGUpIHtcbiAgICAgICAgc3ViRmllbGRTdGF0ZS5ibG9ja1R5cGUgPSB7XG4gICAgICAgICAgaW5pdGlhbFZhbHVlOiBibG9ja1R5cGUsXG4gICAgICAgICAgdmFsaWQ6IHRydWUsXG4gICAgICAgICAgdmFsdWU6IGJsb2NrVHlwZSxcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyByZXBsYWNlIGZvcm0gX2ZpZWxkIHN0YXRlX1xuICAgICAgc2libGluZ1Jvd3Nbcm93SW5kZXhdID0gc3ViRmllbGRTdGF0ZVxuXG4gICAgICBjb25zdCBuZXdTdGF0ZTogRmllbGRzID0ge1xuICAgICAgICAuLi5yZW1haW5pbmdGaWVsZHMsXG4gICAgICAgIC4uLmZsYXR0ZW5Sb3dzKHBhdGgsIHNpYmxpbmdSb3dzKSxcbiAgICAgICAgW3BhdGhdOiB7XG4gICAgICAgICAgLi4uc3RhdGVbcGF0aF0sXG4gICAgICAgICAgZGlzYWJsZUZvcm1EYXRhOiB0cnVlLFxuICAgICAgICAgIHJvd3M6IHJvd3NNZXRhZGF0YSxcbiAgICAgICAgICB2YWx1ZTogc2libGluZ1Jvd3MubGVuZ3RoLFxuICAgICAgICB9LFxuICAgICAgfVxuXG4gICAgICByZXR1cm4gbmV3U3RhdGVcbiAgICB9XG5cbiAgICBjYXNlICdEVVBMSUNBVEVfUk9XJzoge1xuICAgICAgY29uc3QgeyBwYXRoLCByb3dJbmRleCB9ID0gYWN0aW9uXG4gICAgICBjb25zdCB7IHJlbWFpbmluZ0ZpZWxkcywgcm93cyB9ID0gc2VwYXJhdGVSb3dzKHBhdGgsIHN0YXRlKVxuICAgICAgY29uc3Qgcm93c01ldGFkYXRhID0gc3RhdGVbcGF0aF0/LnJvd3MgfHwgW11cblxuICAgICAgY29uc3QgZHVwbGljYXRlUm93TWV0YWRhdGEgPSBkZWVwQ29weU9iamVjdChyb3dzTWV0YWRhdGFbcm93SW5kZXhdKVxuICAgICAgaWYgKGR1cGxpY2F0ZVJvd01ldGFkYXRhLmlkKSBkdXBsaWNhdGVSb3dNZXRhZGF0YS5pZCA9IG5ldyBPYmplY3RJRCgpLnRvSGV4U3RyaW5nKClcblxuICAgICAgY29uc3QgZHVwbGljYXRlUm93U3RhdGUgPSBkZWVwQ29weU9iamVjdChyb3dzW3Jvd0luZGV4XSlcbiAgICAgIGlmIChkdXBsaWNhdGVSb3dTdGF0ZS5pZCkgZHVwbGljYXRlUm93U3RhdGUuaWQgPSBuZXcgT2JqZWN0SUQoKS50b0hleFN0cmluZygpXG5cbiAgICAgIC8vIElmIHRoZXJlIGFyZSBzdWJmaWVsZHNcbiAgICAgIGlmIChPYmplY3Qua2V5cyhkdXBsaWNhdGVSb3dTdGF0ZSkubGVuZ3RoID4gMCkge1xuICAgICAgICAvLyBBZGQgbmV3IG9iamVjdCBjb250YWluaW5nIHN1YmZpZWxkIG5hbWVzIHRvIHVuZmxhdHRlbmVkUm93cyBhcnJheVxuICAgICAgICByb3dzLnNwbGljZShyb3dJbmRleCArIDEsIDAsIGR1cGxpY2F0ZVJvd1N0YXRlKVxuICAgICAgICByb3dzTWV0YWRhdGEuc3BsaWNlKHJvd0luZGV4ICsgMSwgMCwgZHVwbGljYXRlUm93TWV0YWRhdGEpXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG5ld1N0YXRlID0ge1xuICAgICAgICAuLi5yZW1haW5pbmdGaWVsZHMsXG4gICAgICAgIFtwYXRoXToge1xuICAgICAgICAgIC4uLnN0YXRlW3BhdGhdLFxuICAgICAgICAgIGRpc2FibGVGb3JtRGF0YTogdHJ1ZSxcbiAgICAgICAgICByb3dzOiByb3dzTWV0YWRhdGEsXG4gICAgICAgICAgdmFsdWU6IHJvd3MubGVuZ3RoLFxuICAgICAgICB9LFxuICAgICAgICAuLi5mbGF0dGVuUm93cyhwYXRoLCByb3dzKSxcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG5ld1N0YXRlXG4gICAgfVxuXG4gICAgY2FzZSAnTU9WRV9ST1cnOiB7XG4gICAgICBjb25zdCB7IG1vdmVGcm9tSW5kZXgsIG1vdmVUb0luZGV4LCBwYXRoIH0gPSBhY3Rpb25cbiAgICAgIGNvbnN0IHsgcmVtYWluaW5nRmllbGRzLCByb3dzIH0gPSBzZXBhcmF0ZVJvd3MocGF0aCwgc3RhdGUpXG5cbiAgICAgIC8vIGNvcHkgdGhlIHJvdyB0byBtb3ZlXG4gICAgICBjb25zdCBjb3B5T2ZNb3ZpbmdSb3cgPSByb3dzW21vdmVGcm9tSW5kZXhdXG4gICAgICAvLyBkZWxldGUgdGhlIHJvdyBieSBpbmRleFxuICAgICAgcm93cy5zcGxpY2UobW92ZUZyb21JbmRleCwgMSlcbiAgICAgIC8vIGluc2VydCByb3cgY29weU9mTW92aW5nUm93IGJhY2sgaW5cbiAgICAgIHJvd3Muc3BsaWNlKG1vdmVUb0luZGV4LCAwLCBjb3B5T2ZNb3ZpbmdSb3cpXG5cbiAgICAgIC8vIG1vZGlmeSBhcnJheS9ibG9jayBpbnRlcm5hbCByb3cgc3RhdGUgKGkuZS4gY29sbGFwc2VkLCBibG9ja1R5cGUpXG4gICAgICBjb25zdCByb3dTdGF0ZUNvcHkgPSBbLi4uKHN0YXRlW3BhdGhdPy5yb3dzIHx8IFtdKV1cbiAgICAgIGNvbnN0IG1vdmluZ1Jvd1N0YXRlID0geyAuLi5yb3dTdGF0ZUNvcHlbbW92ZUZyb21JbmRleF0gfVxuICAgICAgcm93U3RhdGVDb3B5LnNwbGljZShtb3ZlRnJvbUluZGV4LCAxKVxuICAgICAgcm93U3RhdGVDb3B5LnNwbGljZShtb3ZlVG9JbmRleCwgMCwgbW92aW5nUm93U3RhdGUpXG5cbiAgICAgIGNvbnN0IG5ld1N0YXRlID0ge1xuICAgICAgICAuLi5yZW1haW5pbmdGaWVsZHMsXG4gICAgICAgIC4uLmZsYXR0ZW5Sb3dzKHBhdGgsIHJvd3MpLFxuICAgICAgICBbcGF0aF06IHtcbiAgICAgICAgICAuLi5zdGF0ZVtwYXRoXSxcbiAgICAgICAgICByb3dzOiByb3dTdGF0ZUNvcHksXG4gICAgICAgIH0sXG4gICAgICB9XG5cbiAgICAgIHJldHVybiBuZXdTdGF0ZVxuICAgIH1cblxuICAgIGNhc2UgJ1NFVF9ST1dfQ09MTEFQU0VEJzoge1xuICAgICAgY29uc3QgeyBjb2xsYXBzZWQsIHBhdGgsIHJvd0lELCBzZXREb2NGaWVsZFByZWZlcmVuY2VzIH0gPSBhY3Rpb25cblxuICAgICAgY29uc3QgYXJyYXlTdGF0ZSA9IHN0YXRlW3BhdGhdXG5cbiAgICAgIGNvbnN0IHsgY29sbGFwc2VkUm93SURzLCBtYXRjaGVkSW5kZXggfSA9IHN0YXRlW3BhdGhdLnJvd3MucmVkdWNlKFxuICAgICAgICAoYWNjLCByb3csIGluZGV4KSA9PiB7XG4gICAgICAgICAgY29uc3QgaXNNYXRjaGluZ1JvdyA9IHJvdy5pZCA9PT0gcm93SURcbiAgICAgICAgICBpZiAoaXNNYXRjaGluZ1JvdykgYWNjLm1hdGNoZWRJbmRleCA9IGluZGV4XG5cbiAgICAgICAgICBpZiAoIWlzTWF0Y2hpbmdSb3cgJiYgcm93LmNvbGxhcHNlZCkgYWNjLmNvbGxhcHNlZFJvd0lEcy5wdXNoKHJvdy5pZClcbiAgICAgICAgICBlbHNlIGlmIChpc01hdGNoaW5nUm93ICYmIGNvbGxhcHNlZCkgYWNjLmNvbGxhcHNlZFJvd0lEcy5wdXNoKHJvdy5pZClcblxuICAgICAgICAgIHJldHVybiBhY2NcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGNvbGxhcHNlZFJvd0lEczogW10sXG4gICAgICAgICAgbWF0Y2hlZEluZGV4OiB1bmRlZmluZWQsXG4gICAgICAgIH0sXG4gICAgICApXG5cbiAgICAgIGlmIChtYXRjaGVkSW5kZXggPiAtMSkge1xuICAgICAgICBhcnJheVN0YXRlLnJvd3NbbWF0Y2hlZEluZGV4XS5jb2xsYXBzZWQgPSBjb2xsYXBzZWRcbiAgICAgICAgc2V0RG9jRmllbGRQcmVmZXJlbmNlcyhwYXRoLCB7IGNvbGxhcHNlZDogY29sbGFwc2VkUm93SURzIH0pXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG5ld1N0YXRlID0ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgW3BhdGhdOiB7XG4gICAgICAgICAgLi4uYXJyYXlTdGF0ZSxcbiAgICAgICAgfSxcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG5ld1N0YXRlXG4gICAgfVxuXG4gICAgY2FzZSAnU0VUX0FMTF9ST1dTX0NPTExBUFNFRCc6IHtcbiAgICAgIGNvbnN0IHsgY29sbGFwc2VkLCBwYXRoLCBzZXREb2NGaWVsZFByZWZlcmVuY2VzIH0gPSBhY3Rpb25cblxuICAgICAgY29uc3QgeyBjb2xsYXBzZWRSb3dJRHMsIHJvd3MgfSA9IHN0YXRlW3BhdGhdLnJvd3MucmVkdWNlKFxuICAgICAgICAoYWNjLCByb3cpID0+IHtcbiAgICAgICAgICBpZiAoY29sbGFwc2VkKSBhY2MuY29sbGFwc2VkUm93SURzLnB1c2gocm93LmlkKVxuXG4gICAgICAgICAgYWNjLnJvd3MucHVzaCh7XG4gICAgICAgICAgICAuLi5yb3csXG4gICAgICAgICAgICBjb2xsYXBzZWQsXG4gICAgICAgICAgfSlcblxuICAgICAgICAgIHJldHVybiBhY2NcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGNvbGxhcHNlZFJvd0lEczogW10sXG4gICAgICAgICAgcm93czogW10sXG4gICAgICAgIH0sXG4gICAgICApXG5cbiAgICAgIHNldERvY0ZpZWxkUHJlZmVyZW5jZXMocGF0aCwgeyBjb2xsYXBzZWQ6IGNvbGxhcHNlZFJvd0lEcyB9KVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgW3BhdGhdOiB7XG4gICAgICAgICAgLi4uc3RhdGVbcGF0aF0sXG4gICAgICAgICAgcm93cyxcbiAgICAgICAgfSxcbiAgICAgIH1cbiAgICB9XG5cbiAgICBkZWZhdWx0OiB7XG4gICAgICByZXR1cm4gc3RhdGVcbiAgICB9XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJmaWVsZFJlZHVjZXIiLCJzdGF0ZSIsImFjdGlvbiIsInR5cGUiLCJuZXdTdGF0ZSIsIk9iamVjdCIsImVudHJpZXMiLCJmb3JFYWNoIiwicGF0aCIsImZpZWxkIiwib2xkRmllbGQiLCJuZXdGaWVsZCIsImVxdWFsIiwicmVzdWx0IiwidXNlciIsInJlZHVjZSIsImZpZWxkUGF0aCIsImluZGV4T2YiLCJwYXNzZXNDb25kaXRpb24iLCJjb25kaXRpb24iLCJyZWR1Y2VGaWVsZHNUb1ZhbHVlcyIsImdldFNpYmxpbmdEYXRhIiwia2V5IiwidmFsdWUiLCJpbmNsdWRlcyIsInJvd0luZGV4IiwicmVtYWluaW5nRmllbGRzIiwicm93cyIsInNlcGFyYXRlUm93cyIsInJvd3NNZXRhZGF0YSIsInNwbGljZSIsImRpc2FibGVGb3JtRGF0YSIsImxlbmd0aCIsImZsYXR0ZW5Sb3dzIiwiYmxvY2tUeXBlIiwicm93SW5kZXhGcm9tQXJncyIsInN1YkZpZWxkU3RhdGUiLCJpZCIsIk9iamVjdElEIiwidG9IZXhTdHJpbmciLCJ1bmRlZmluZWQiLCJjaGlsZEVycm9yUGF0aHMiLCJTZXQiLCJjb2xsYXBzZWQiLCJpbml0aWFsVmFsdWUiLCJ2YWxpZCIsInNpYmxpbmdSb3dzIiwicm93SW5kZXhBcmciLCJNYXRoIiwibWF4IiwibWluIiwiZHVwbGljYXRlUm93TWV0YWRhdGEiLCJkZWVwQ29weU9iamVjdCIsImR1cGxpY2F0ZVJvd1N0YXRlIiwia2V5cyIsIm1vdmVGcm9tSW5kZXgiLCJtb3ZlVG9JbmRleCIsImNvcHlPZk1vdmluZ1JvdyIsInJvd1N0YXRlQ29weSIsIm1vdmluZ1Jvd1N0YXRlIiwicm93SUQiLCJzZXREb2NGaWVsZFByZWZlcmVuY2VzIiwiYXJyYXlTdGF0ZSIsImNvbGxhcHNlZFJvd0lEcyIsIm1hdGNoZWRJbmRleCIsImFjYyIsInJvdyIsImluZGV4IiwiaXNNYXRjaGluZ1JvdyIsInB1c2giXSwibWFwcGluZ3MiOiI7Ozs7K0JBYWdCQTs7O2VBQUFBOzs7cUVBYks7a0VBQ0g7Z0NBSWE7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
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/admin/components/forms/Form/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAA+D,MAAM,OAAO,CAAA;AAMnF,OAAO,KAAK,EAKV,KAAK,EAGN,MAAM,SAAS,CAAA;AAkChB,QAAA,MAAM,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAknBzB,CAAA;AAED,eAAe,IAAI,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/admin/components/forms/Form/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAA+D,MAAM,OAAO,CAAA;AAMnF,OAAO,KAAK,EAKV,KAAK,EAGN,MAAM,SAAS,CAAA;AAkChB,QAAA,MAAM,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CA+nBzB,CAAA;AAED,eAAe,IAAI,CAAA"}
@@ -82,12 +82,12 @@ function _interop_require_wildcard(obj, nodeInterop) {
82
82
  }
83
83
  const baseClass = 'form';
84
84
  const Form = (props)=>{
85
- const { action, children, className, disableSuccessStatus, disabled, handleResponse, initialData, initialState, method, onSubmit, onSuccess, redirect, submitted: submittedFromProps, waitForAutocomplete } = props;
85
+ const { id, collection, getDocPreferences, global } = (0, _DocumentInfo.useDocumentInfo)();
86
+ const { action, children, className, disableSuccessStatus, disabled, fields: fieldsFromProps = collection?.fields || global?.fields, handleResponse, initialData, initialState, method, onSubmit, onSuccess, redirect, submitted: submittedFromProps, waitForAutocomplete } = props;
86
87
  const history = (0, _reactrouterdom.useHistory)();
87
88
  const { code: locale } = (0, _Locale.useLocale)();
88
89
  const { i18n, t } = (0, _reacti18next.useTranslation)('general');
89
90
  const { refreshCookie, user } = (0, _Auth.useAuth)();
90
- const { id, collection, getDocPreferences, global } = (0, _DocumentInfo.useDocumentInfo)();
91
91
  const operation = (0, _OperationProvider.useOperation)();
92
92
  const config = (0, _Config.useConfig)();
93
93
  const [modified, setModified] = (0, _react.useState)(false);
@@ -100,7 +100,10 @@ const Form = (props)=>{
100
100
  if (formattedInitialData) initialFieldState = formattedInitialData;
101
101
  if (initialState) initialFieldState = initialState;
102
102
  const fieldsReducer = (0, _react.useReducer)(_fieldReducer.fieldReducer, {}, ()=>initialFieldState);
103
- const [fields, dispatchFields] = fieldsReducer;
103
+ /**
104
+ * `fields` is the current, up-to-date state/data of all fields in the form. It can be modified by using dispatchFields,
105
+ * which calls the fieldReducer, which then updates the state.
106
+ */ const [fields, dispatchFields] = fieldsReducer;
104
107
  contextRef.current.fields = fields;
105
108
  contextRef.current.dispatchFields = dispatchFields;
106
109
  // Build a current set of child errors for all rows in form state
@@ -165,7 +168,11 @@ const Form = (props)=>{
165
168
  if (field.passesCondition !== false) {
166
169
  let validationResult = true;
167
170
  if (typeof field.validate === 'function') {
168
- validationResult = await field.validate(field.value, {
171
+ let valueToValidate = field.value;
172
+ if (field?.rows && Array.isArray(field.rows)) {
173
+ valueToValidate = contextRef.current.getDataByPath(path);
174
+ }
175
+ validationResult = await field.validate(valueToValidate, {
169
176
  id,
170
177
  config,
171
178
  data,
@@ -385,7 +392,7 @@ const Form = (props)=>{
385
392
  }, []);
386
393
  const getRowSchemaByPath = _react.default.useCallback(({ blockType, path })=>{
387
394
  const rowConfig = traverseRowConfigs({
388
- fieldConfig: collection?.fields || global?.fields,
395
+ fieldConfig: fieldsFromProps,
389
396
  path
390
397
  });
391
398
  const rowFieldConfigs = (0, _buildFieldSchemaMap.buildFieldSchemaMap)(rowConfig);
@@ -394,10 +401,10 @@ const Form = (props)=>{
394
401
  return rowFieldConfigs.get(blockType ? `${fieldKey}.${blockType}` : fieldKey);
395
402
  }, [
396
403
  traverseRowConfigs,
397
- collection?.fields,
398
- global?.fields
404
+ fieldsFromProps
399
405
  ]);
400
- // Array/Block row manipulation
406
+ // Array/Block row manipulation. This is called when, for example, you add a new block to a blocks field.
407
+ // The block data is saved in the rows property of the state, which is modified updated here.
401
408
  const addFieldRow = (0, _react.useCallback)(async ({ data, path, rowIndex })=>{
402
409
  const preferences = await getDocPreferences();
403
410
  const rowSchema = getRowSchemaByPath({
@@ -662,4 +669,4 @@ const Form = (props)=>{
662
669
  };
663
670
  const _default = Form;
664
671
 
665
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hZG1pbi9jb21wb25lbnRzL2Zvcm1zL0Zvcm0vaW5kZXgudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGpzeC1hMTF5L25vLW5vbmludGVyYWN0aXZlLWVsZW1lbnQtaW50ZXJhY3Rpb25zICovXG5pbXBvcnQgaXNEZWVwRXF1YWwgZnJvbSAnZGVlcC1lcXVhbCdcbmltcG9ydCB7IHNlcmlhbGl6ZSB9IGZyb20gJ29iamVjdC10by1mb3JtZGF0YSdcbmltcG9ydCBSZWFjdCwgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VSZWR1Y2VyLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gJ3JlYWN0LWkxOG5leHQnXG5pbXBvcnQgeyB1c2VIaXN0b3J5IH0gZnJvbSAncmVhY3Qtcm91dGVyLWRvbSdcbmltcG9ydCB7IHRvYXN0IH0gZnJvbSAncmVhY3QtdG9hc3RpZnknXG5cbmltcG9ydCB0eXBlIHsgRmllbGQgfSBmcm9tICcuLi8uLi8uLi8uLi9maWVsZHMvY29uZmlnL3R5cGVzJ1xuaW1wb3J0IHR5cGUge1xuICBDb250ZXh0LFxuICBGaWVsZHMsXG4gIENvbnRleHQgYXMgRm9ybUNvbnRleHRUeXBlLFxuICBHZXREYXRhQnlQYXRoLFxuICBQcm9wcyxcbiAgUm93LFxuICBTdWJtaXRPcHRpb25zLFxufSBmcm9tICcuL3R5cGVzJ1xuXG5pbXBvcnQgeyBpc051bWJlciB9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWxpdGllcy9pc051bWJlcidcbmltcG9ydCB7IHNldHNBcmVFcXVhbCB9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWxpdGllcy9zZXRzQXJlRXF1YWwnXG5pbXBvcnQgeyBzcGxpdFBhdGhCeUFycmF5RmllbGRzIH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbGl0aWVzL3NwbGl0UGF0aEJ5QXJyYXlGaWVsZHMnXG5pbXBvcnQgd2FpdCBmcm9tICcuLi8uLi8uLi8uLi91dGlsaXRpZXMvd2FpdCdcbmltcG9ydCB7IHJlcXVlc3RzIH0gZnJvbSAnLi4vLi4vLi4vYXBpJ1xuaW1wb3J0IHVzZVRocm90dGxlZEVmZmVjdCBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VUaHJvdHRsZWRFZmZlY3QnXG5pbXBvcnQgeyB1c2VBdXRoIH0gZnJvbSAnLi4vLi4vdXRpbGl0aWVzL0F1dGgnXG5pbXBvcnQgeyB1c2VDb25maWcgfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvQ29uZmlnJ1xuaW1wb3J0IHsgdXNlRG9jdW1lbnRJbmZvIH0gZnJvbSAnLi4vLi4vdXRpbGl0aWVzL0RvY3VtZW50SW5mbydcbmltcG9ydCB7IHVzZUxvY2FsZSB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9Mb2NhbGUnXG5pbXBvcnQgeyB1c2VPcGVyYXRpb24gfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvT3BlcmF0aW9uUHJvdmlkZXInXG5pbXBvcnQgeyBXYXRjaEZvcm1FcnJvcnMgfSBmcm9tICcuL1dhdGNoRm9ybUVycm9ycydcbmltcG9ydCB7IGJ1aWxkRmllbGRTY2hlbWFNYXAgfSBmcm9tICcuL2J1aWxkRmllbGRTY2hlbWFNYXAnXG5pbXBvcnQgYnVpbGRJbml0aWFsU3RhdGUgZnJvbSAnLi9idWlsZEluaXRpYWxTdGF0ZSdcbmltcG9ydCBidWlsZFN0YXRlRnJvbVNjaGVtYSBmcm9tICcuL2J1aWxkU3RhdGVGcm9tU2NoZW1hJ1xuaW1wb3J0IHtcbiAgRm9ybUNvbnRleHQsXG4gIEZvcm1GaWVsZHNDb250ZXh0LFxuICBGb3JtV2F0Y2hDb250ZXh0LFxuICBNb2RpZmllZENvbnRleHQsXG4gIFByb2Nlc3NpbmdDb250ZXh0LFxuICBTdWJtaXR0ZWRDb250ZXh0LFxufSBmcm9tICcuL2NvbnRleHQnXG5pbXBvcnQgZXJyb3JNZXNzYWdlcyBmcm9tICcuL2Vycm9yTWVzc2FnZXMnXG5pbXBvcnQgeyBmaWVsZFJlZHVjZXIgfSBmcm9tICcuL2ZpZWxkUmVkdWNlcidcbmltcG9ydCBnZXREYXRhQnlQYXRoRnVuYyBmcm9tICcuL2dldERhdGFCeVBhdGgnXG5pbXBvcnQgZ2V0U2libGluZ0RhdGFGdW5jIGZyb20gJy4vZ2V0U2libGluZ0RhdGEnXG5pbXBvcnQgaW5pdENvbnRleHRTdGF0ZSBmcm9tICcuL2luaXRDb250ZXh0U3RhdGUnXG5pbXBvcnQgcmVkdWNlRmllbGRzVG9WYWx1ZXMgZnJvbSAnLi9yZWR1Y2VGaWVsZHNUb1ZhbHVlcydcblxuY29uc3QgYmFzZUNsYXNzID0gJ2Zvcm0nXG5cbmNvbnN0IEZvcm06IFJlYWN0LkZDPFByb3BzPiA9IChwcm9wcykgPT4ge1xuICBjb25zdCB7XG4gICAgYWN0aW9uLFxuICAgIGNoaWxkcmVuLFxuICAgIGNsYXNzTmFtZSxcbiAgICBkaXNhYmxlU3VjY2Vzc1N0YXR1cyxcbiAgICBkaXNhYmxlZCxcbiAgICBoYW5kbGVSZXNwb25zZSxcbiAgICBpbml0aWFsRGF0YSwgLy8gdmFsdWVzIG9ubHksIHBhdGhzIGFyZSByZXF1aXJlZCBhcyBrZXkgLSBmb3JtIHNob3VsZCBidWlsZCBpbml0aWFsIHN0YXRlIGFzIGNvbnZlbmllbmNlXG4gICAgaW5pdGlhbFN0YXRlLCAvLyBmdWxseSBmb3JtZWQgaW5pdGlhbCBmaWVsZCBzdGF0ZVxuICAgIG1ldGhvZCxcbiAgICBvblN1Ym1pdCxcbiAgICBvblN1Y2Nlc3MsXG4gICAgcmVkaXJlY3QsXG4gICAgc3VibWl0dGVkOiBzdWJtaXR0ZWRGcm9tUHJvcHMsXG4gICAgd2FpdEZvckF1dG9jb21wbGV0ZSxcbiAgfSA9IHByb3BzXG5cbiAgY29uc3QgaGlzdG9yeSA9IHVzZUhpc3RvcnkoKVxuICBjb25zdCB7IGNvZGU6IGxvY2FsZSB9ID0gdXNlTG9jYWxlKClcbiAgY29uc3QgeyBpMThuLCB0IH0gPSB1c2VUcmFuc2xhdGlvbignZ2VuZXJhbCcpXG4gIGNvbnN0IHsgcmVmcmVzaENvb2tpZSwgdXNlciB9ID0gdXNlQXV0aCgpXG4gIGNvbnN0IHsgaWQsIGNvbGxlY3Rpb24sIGdldERvY1ByZWZlcmVuY2VzLCBnbG9iYWwgfSA9IHVzZURvY3VtZW50SW5mbygpXG4gIGNvbnN0IG9wZXJhdGlvbiA9IHVzZU9wZXJhdGlvbigpXG5cbiAgY29uc3QgY29uZmlnID0gdXNlQ29uZmlnKClcblxuICBjb25zdCBbbW9kaWZpZWQsIHNldE1vZGlmaWVkXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbcHJvY2Vzc2luZywgc2V0UHJvY2Vzc2luZ10gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW3N1Ym1pdHRlZCwgc2V0U3VibWl0dGVkXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbZm9ybWF0dGVkSW5pdGlhbERhdGEsIHNldEZvcm1hdHRlZEluaXRpYWxEYXRhXSA9IHVzZVN0YXRlKGJ1aWxkSW5pdGlhbFN0YXRlKGluaXRpYWxEYXRhKSlcblxuICBjb25zdCBmb3JtUmVmID0gdXNlUmVmPEhUTUxGb3JtRWxlbWVudD4obnVsbClcbiAgY29uc3QgY29udGV4dFJlZiA9IHVzZVJlZih7fSBhcyBGb3JtQ29udGV4dFR5cGUpXG5cbiAgbGV0IGluaXRpYWxGaWVsZFN0YXRlID0ge31cblxuICBpZiAoZm9ybWF0dGVkSW5pdGlhbERhdGEpIGluaXRpYWxGaWVsZFN0YXRlID0gZm9ybWF0dGVkSW5pdGlhbERhdGFcbiAgaWYgKGluaXRpYWxTdGF0ZSkgaW5pdGlhbEZpZWxkU3RhdGUgPSBpbml0aWFsU3RhdGVcblxuICBjb25zdCBmaWVsZHNSZWR1Y2VyID0gdXNlUmVkdWNlcihmaWVsZFJlZHVjZXIsIHt9LCAoKSA9PiBpbml0aWFsRmllbGRTdGF0ZSlcbiAgY29uc3QgW2ZpZWxkcywgZGlzcGF0Y2hGaWVsZHNdID0gZmllbGRzUmVkdWNlclxuXG4gIGNvbnRleHRSZWYuY3VycmVudC5maWVsZHMgPSBmaWVsZHNcbiAgY29udGV4dFJlZi5jdXJyZW50LmRpc3BhdGNoRmllbGRzID0gZGlzcGF0Y2hGaWVsZHNcblxuICAvLyBCdWlsZCBhIGN1cnJlbnQgc2V0IG9mIGNoaWxkIGVycm9ycyBmb3IgYWxsIHJvd3MgaW4gZm9ybSBzdGF0ZVxuICBjb25zdCBidWlsZFJvd0Vycm9ycyA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjb25zdCBleGlzdGluZ0ZpZWxkUm93czogeyBbcGF0aDogc3RyaW5nXTogUm93W10gfSA9IHt9XG4gICAgY29uc3QgbmV3RmllbGRSb3dzOiB7IFtwYXRoOiBzdHJpbmddOiBSb3dbXSB9ID0ge31cblxuICAgIE9iamVjdC5lbnRyaWVzKGZpZWxkcykuZm9yRWFjaCgoW3BhdGgsIGZpZWxkXSkgPT4ge1xuICAgICAgY29uc3QgcGF0aFNlZ21lbnRzID0gc3BsaXRQYXRoQnlBcnJheUZpZWxkcyhwYXRoKVxuXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBhdGhTZWdtZW50cy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICBjb25zdCBmaWVsZFBhdGggPSBwYXRoU2VnbWVudHMuc2xpY2UoMCwgaSArIDEpLmpvaW4oJy4nKVxuICAgICAgICBjb25zdCBmb3JtRmllbGQgPSBmaWVsZHM/LltmaWVsZFBhdGhdXG5cbiAgICAgICAgLy8gSXMgdGhpcyBhbiBhcnJheSBvciBibG9ja3MgZmllbGQ/XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGZvcm1GaWVsZD8ucm93cykpIHtcbiAgICAgICAgICAvLyBLZWVwIGEgcmVmZXJlbmNlIHRvIHRoZSBleGlzdGluZyByb3cgc3RhdGVcbiAgICAgICAgICBleGlzdGluZ0ZpZWxkUm93c1tmaWVsZFBhdGhdID0gZm9ybUZpZWxkLnJvd3NcblxuICAgICAgICAgIC8vIEEgbmV3IHJvdyBzdGF0ZSB3aWxsIGJlIHVzZWQgdG8gY29tcGFyZVxuICAgICAgICAgIC8vIGFnYWluc3QgdGhlIG9sZCBzdGF0ZSBsYXRlcixcbiAgICAgICAgICAvLyB0byBzZWUgaWYgd2UgbmVlZCB0byBkaXNwYXRjaCBhbiB1cGRhdGVcbiAgICAgICAgICBpZiAoIW5ld0ZpZWxkUm93c1tmaWVsZFBhdGhdKSB7XG4gICAgICAgICAgICBuZXdGaWVsZFJvd3NbZmllbGRQYXRoXSA9IGZvcm1GaWVsZC5yb3dzLm1hcCgoZXhpc3RpbmdSb3cpID0+ICh7XG4gICAgICAgICAgICAgIC4uLmV4aXN0aW5nUm93LFxuICAgICAgICAgICAgICBjaGlsZEVycm9yUGF0aHM6IG5ldyBTZXQoKSxcbiAgICAgICAgICAgIH0pKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IHJvd0luZGV4ID0gcGF0aFNlZ21lbnRzW2kgKyAxXVxuICAgICAgICAgIGNvbnN0IGNoaWxkRmllbGRQYXRoID0gcGF0aFNlZ21lbnRzLnNsaWNlKGkgKyAxKS5qb2luKCcuJylcblxuICAgICAgICAgIGlmIChmaWVsZC52YWxpZCA9PT0gZmFsc2UgJiYgY2hpbGRGaWVsZFBhdGgpIHtcbiAgICAgICAgICAgIG5ld0ZpZWxkUm93c1tmaWVsZFBhdGhdW3Jvd0luZGV4XS5jaGlsZEVycm9yUGF0aHMuYWRkKGAke2ZpZWxkUGF0aH0uJHtjaGlsZEZpZWxkUGF0aH1gKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pXG5cbiAgICAvLyBOb3cgbG9vcCBvdmVyIGFsbCBmaWVsZHMgd2l0aCByb3dzIC1cbiAgICAvLyBpZiBhbnl0aGluZyBjaGFuZ2VkLCBkaXNwYXRjaCBhbiB1cGRhdGUgZm9yIHRoZSBmaWVsZFxuICAgIC8vIHdpdGggdGhlIG5ldyByb3cgc3RhdGVcbiAgICBPYmplY3QuZW50cmllcyhuZXdGaWVsZFJvd3MpLmZvckVhY2goKFtwYXRoLCBuZXdSb3dzXSkgPT4ge1xuICAgICAgY29uc3Qgc3RhdGVNYXRjaGVzID0gbmV3Um93cy5ldmVyeSgobmV3Um93LCBpKSA9PiB7XG4gICAgICAgIGNvbnN0IGV4aXN0aW5nUm93RXJyb3JQYXRocyA9IGV4aXN0aW5nRmllbGRSb3dzW3BhdGhdW2ldPy5jaGlsZEVycm9yUGF0aHNcbiAgICAgICAgcmV0dXJuIHNldHNBcmVFcXVhbChuZXdSb3cuY2hpbGRFcnJvclBhdGhzLCBleGlzdGluZ1Jvd0Vycm9yUGF0aHMpXG4gICAgICB9KVxuXG4gICAgICBpZiAoIXN0YXRlTWF0Y2hlcykge1xuICAgICAgICBkaXNwYXRjaEZpZWxkcyh7XG4gICAgICAgICAgcGF0aCxcbiAgICAgICAgICByb3dzOiBuZXdSb3dzLFxuICAgICAgICAgIHR5cGU6ICdVUERBVEUnLFxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH0pXG4gIH0sIFtmaWVsZHMsIGRpc3BhdGNoRmllbGRzXSlcblxuICBjb25zdCB2YWxpZGF0ZUZvcm0gPSB1c2VDYWxsYmFjayhhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgdmFsaWRhdGVkRmllbGRTdGF0ZSA9IHt9XG4gICAgbGV0IGlzVmFsaWQgPSB0cnVlXG4gICAgY29uc3QgZGF0YSA9IGNvbnRleHRSZWYuY3VycmVudC5nZXREYXRhKClcblxuICAgIGNvbnN0IHZhbGlkYXRpb25Qcm9taXNlcyA9IE9iamVjdC5lbnRyaWVzKGNvbnRleHRSZWYuY3VycmVudC5maWVsZHMpLm1hcChcbiAgICAgIGFzeW5jIChbcGF0aCwgZmllbGRdKSA9PiB7XG4gICAgICAgIGNvbnN0IHZhbGlkYXRlZEZpZWxkID0ge1xuICAgICAgICAgIC4uLmZpZWxkLFxuICAgICAgICAgIHZhbGlkOiB0cnVlLFxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGZpZWxkLnBhc3Nlc0NvbmRpdGlvbiAhPT0gZmFsc2UpIHtcbiAgICAgICAgICBsZXQgdmFsaWRhdGlvblJlc3VsdDogYm9vbGVhbiB8IHN0cmluZyA9IHRydWVcblxuICAgICAgICAgIGlmICh0eXBlb2YgZmllbGQudmFsaWRhdGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHZhbGlkYXRpb25SZXN1bHQgPSBhd2FpdCBmaWVsZC52YWxpZGF0ZShmaWVsZC52YWx1ZSwge1xuICAgICAgICAgICAgICBpZCxcbiAgICAgICAgICAgICAgY29uZmlnLFxuICAgICAgICAgICAgICBkYXRhLFxuICAgICAgICAgICAgICBvcGVyYXRpb24sXG4gICAgICAgICAgICAgIHNpYmxpbmdEYXRhOiBjb250ZXh0UmVmLmN1cnJlbnQuZ2V0U2libGluZ0RhdGEocGF0aCksXG4gICAgICAgICAgICAgIHQsXG4gICAgICAgICAgICAgIHVzZXIsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh0eXBlb2YgdmFsaWRhdGlvblJlc3VsdCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHZhbGlkYXRlZEZpZWxkLmVycm9yTWVzc2FnZSA9IHZhbGlkYXRpb25SZXN1bHRcbiAgICAgICAgICAgIHZhbGlkYXRlZEZpZWxkLnZhbGlkID0gZmFsc2VcbiAgICAgICAgICAgIGlzVmFsaWQgPSBmYWxzZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHZhbGlkYXRlZEZpZWxkU3RhdGVbcGF0aF0gPSB2YWxpZGF0ZWRGaWVsZFxuICAgICAgfSxcbiAgICApXG5cbiAgICBhd2FpdCBQcm9taXNlLmFsbCh2YWxpZGF0aW9uUHJvbWlzZXMpXG5cbiAgICBpZiAoIWlzRGVlcEVxdWFsKGNvbnRleHRSZWYuY3VycmVudC5maWVsZHMsIHZhbGlkYXRlZEZpZWxkU3RhdGUpKSB7XG4gICAgICBkaXNwYXRjaEZpZWxkcyh7IHN0YXRlOiB2YWxpZGF0ZWRGaWVsZFN0YXRlLCB0eXBlOiAnUkVQTEFDRV9TVEFURScgfSlcbiAgICB9XG5cbiAgICByZXR1cm4gaXNWYWxpZFxuICB9LCBbY29udGV4dFJlZiwgaWQsIHVzZXIsIG9wZXJhdGlvbiwgdCwgZGlzcGF0Y2hGaWVsZHMsIGNvbmZpZ10pXG5cbiAgY29uc3Qgc3VibWl0ID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKG9wdGlvbnM6IFN1Ym1pdE9wdGlvbnMgPSB7fSwgZSk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgICAgY29uc3Qge1xuICAgICAgICBhY3Rpb246IGFjdGlvblRvVXNlID0gYWN0aW9uLFxuICAgICAgICBtZXRob2Q6IG1ldGhvZFRvVXNlID0gbWV0aG9kLFxuICAgICAgICBvdmVycmlkZXMgPSB7fSxcbiAgICAgICAgc2tpcFZhbGlkYXRpb24sXG4gICAgICB9ID0gb3B0aW9uc1xuXG4gICAgICBpZiAoZGlzYWJsZWQpIHtcbiAgICAgICAgaWYgKGUpIHtcbiAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgfVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgaWYgKGUpIHtcbiAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICAgIH1cblxuICAgICAgc2V0UHJvY2Vzc2luZyh0cnVlKVxuXG4gICAgICBpZiAod2FpdEZvckF1dG9jb21wbGV0ZSkgYXdhaXQgd2FpdCgxMDApXG5cbiAgICAgIGNvbnN0IGlzVmFsaWQgPSBza2lwVmFsaWRhdGlvbiA/IHRydWUgOiBhd2FpdCBjb250ZXh0UmVmLmN1cnJlbnQudmFsaWRhdGVGb3JtKClcbiAgICAgIGNvbnRleHRSZWYuY3VycmVudC5idWlsZFJvd0Vycm9ycygpXG5cbiAgICAgIGlmICghc2tpcFZhbGlkYXRpb24pIHNldFN1Ym1pdHRlZCh0cnVlKVxuXG4gICAgICAvLyBJZiBub3QgdmFsaWQsIHByZXZlbnQgc3VibWlzc2lvblxuICAgICAgaWYgKCFpc1ZhbGlkKSB7XG4gICAgICAgIHRvYXN0LmVycm9yKHQoJ2Vycm9yOmNvcnJlY3RJbnZhbGlkRmllbGRzJykpXG4gICAgICAgIHNldFByb2Nlc3NpbmcoZmFsc2UpXG5cbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIC8vIElmIHN1Ym1pdCBoYW5kbGVyIGNvbWVzIHRocm91Z2ggdmlhIHByb3BzLCBydW4gdGhhdFxuICAgICAgaWYgKG9uU3VibWl0KSB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICAgICAgLi4ucmVkdWNlRmllbGRzVG9WYWx1ZXMoZmllbGRzLCB0cnVlKSxcbiAgICAgICAgICAuLi5vdmVycmlkZXMsXG4gICAgICAgIH1cblxuICAgICAgICBvblN1Ym1pdChmaWVsZHMsIGRhdGEpXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGZvcm1EYXRhID0gY29udGV4dFJlZi5jdXJyZW50LmNyZWF0ZUZvcm1EYXRhKG92ZXJyaWRlcylcblxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgcmVxdWVzdHNbbWV0aG9kVG9Vc2UudG9Mb3dlckNhc2UoKV0oYWN0aW9uVG9Vc2UsIHtcbiAgICAgICAgICBib2R5OiBmb3JtRGF0YSxcbiAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAnQWNjZXB0LUxhbmd1YWdlJzogaTE4bi5sYW5ndWFnZSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuXG4gICAgICAgIHNldE1vZGlmaWVkKGZhbHNlKVxuXG4gICAgICAgIGlmICh0eXBlb2YgaGFuZGxlUmVzcG9uc2UgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICBoYW5kbGVSZXNwb25zZShyZXMpXG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICBzZXRQcm9jZXNzaW5nKGZhbHNlKVxuXG4gICAgICAgIGNvbnN0IGNvbnRlbnRUeXBlID0gcmVzLmhlYWRlcnMuZ2V0KCdjb250ZW50LXR5cGUnKVxuICAgICAgICBjb25zdCBpc0pTT04gPSBjb250ZW50VHlwZSAmJiBjb250ZW50VHlwZS5pbmRleE9mKCdhcHBsaWNhdGlvbi9qc29uJykgIT09IC0xXG5cbiAgICAgICAgbGV0IGpzb246IGFueSA9IHt9XG5cbiAgICAgICAgaWYgKGlzSlNPTikganNvbiA9IGF3YWl0IHJlcy5qc29uKClcblxuICAgICAgICBpZiAocmVzLnN0YXR1cyA8IDQwMCkge1xuICAgICAgICAgIHNldFN1Ym1pdHRlZChmYWxzZSlcblxuICAgICAgICAgIGlmICh0eXBlb2Ygb25TdWNjZXNzID09PSAnZnVuY3Rpb24nKSBvblN1Y2Nlc3MoanNvbilcblxuICAgICAgICAgIGlmIChyZWRpcmVjdCkge1xuICAgICAgICAgICAgY29uc3QgZGVzdGluYXRpb24gPSB7XG4gICAgICAgICAgICAgIHBhdGhuYW1lOiByZWRpcmVjdCxcbiAgICAgICAgICAgICAgc3RhdGU6IHt9LFxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodHlwZW9mIGpzb24gPT09ICdvYmplY3QnICYmIGpzb24ubWVzc2FnZSAmJiAhZGlzYWJsZVN1Y2Nlc3NTdGF0dXMpIHtcbiAgICAgICAgICAgICAgZGVzdGluYXRpb24uc3RhdGUgPSB7XG4gICAgICAgICAgICAgICAgc3RhdHVzOiBbXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGpzb24ubWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3N1Y2Nlc3MnLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGhpc3RvcnkucHVzaChkZXN0aW5hdGlvbilcbiAgICAgICAgICB9IGVsc2UgaWYgKCFkaXNhYmxlU3VjY2Vzc1N0YXR1cykge1xuICAgICAgICAgICAgdG9hc3Quc3VjY2Vzcyhqc29uLm1lc3NhZ2UgfHwgdCgnc3VibWlzc2lvblN1Y2Nlc3NmdWwnKSwgeyBhdXRvQ2xvc2U6IDMwMDAgfSlcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29udGV4dFJlZi5jdXJyZW50ID0geyAuLi5jb250ZXh0UmVmLmN1cnJlbnQgfSAvLyB0cmlnZ2VycyByZXJlbmRlciBvZiBhbGwgY29tcG9uZW50cyB0aGF0IHN1YnNjcmliZSB0byBmb3JtXG5cbiAgICAgICAgICBpZiAoanNvbi5tZXNzYWdlKSB7XG4gICAgICAgICAgICB0b2FzdC5lcnJvcihqc29uLm1lc3NhZ2UpXG5cbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGpzb24uZXJyb3JzKSkge1xuICAgICAgICAgICAgY29uc3QgW2ZpZWxkRXJyb3JzLCBub25GaWVsZEVycm9yc10gPSBqc29uLmVycm9ycy5yZWR1Y2UoXG4gICAgICAgICAgICAgIChbZmllbGRFcnJzLCBub25GaWVsZEVycnNdLCBlcnIpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdGaWVsZEVycnMgPSBbXVxuICAgICAgICAgICAgICAgIGNvbnN0IG5ld05vbkZpZWxkRXJycyA9IFtdXG5cbiAgICAgICAgICAgICAgICBpZiAoZXJyPy5tZXNzYWdlKSB7XG4gICAgICAgICAgICAgICAgICBuZXdOb25GaWVsZEVycnMucHVzaChlcnIpXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZXJyPy5kYXRhKSkge1xuICAgICAgICAgICAgICAgICAgZXJyLmRhdGEuZm9yRWFjaCgoZGF0YUVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChkYXRhRXJyb3I/LmZpZWxkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgbmV3RmllbGRFcnJzLnB1c2goZGF0YUVycm9yKVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIG5ld05vbkZpZWxkRXJycy5wdXNoKGRhdGFFcnJvcilcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgWy4uLmZpZWxkRXJycywgLi4ubmV3RmllbGRFcnJzXSxcbiAgICAgICAgICAgICAgICAgIFsuLi5ub25GaWVsZEVycnMsIC4uLm5ld05vbkZpZWxkRXJyc10sXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBbW10sIFtdXSxcbiAgICAgICAgICAgIClcblxuICAgICAgICAgICAgZmllbGRFcnJvcnMuZm9yRWFjaCgoZXJyKSA9PiB7XG4gICAgICAgICAgICAgIGRpc3BhdGNoRmllbGRzKHtcbiAgICAgICAgICAgICAgICB0eXBlOiAnVVBEQVRFJyxcbiAgICAgICAgICAgICAgICAuLi4oY29udGV4dFJlZi5jdXJyZW50Py5maWVsZHM/LltlcnIuZmllbGRdIHx8IHt9KSxcbiAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2U6IGVyci5tZXNzYWdlLFxuICAgICAgICAgICAgICAgIHBhdGg6IGVyci5maWVsZCxcbiAgICAgICAgICAgICAgICB2YWxpZDogZmFsc2UsXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICBub25GaWVsZEVycm9ycy5mb3JFYWNoKChlcnIpID0+IHtcbiAgICAgICAgICAgICAgdG9hc3QuZXJyb3IoZXJyLm1lc3NhZ2UgfHwgdCgnZXJyb3I6dW5rbm93bicpKVxuICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgbWVzc2FnZSA9IGVycm9yTWVzc2FnZXNbcmVzLnN0YXR1c10gfHwgdCgnZXJyb3I6dW5rbm93bicpXG5cbiAgICAgICAgICB0b2FzdC5lcnJvcihtZXNzYWdlKVxuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgc2V0UHJvY2Vzc2luZyhmYWxzZSlcblxuICAgICAgICB0b2FzdC5lcnJvcihlcnIpXG4gICAgICB9XG4gICAgfSxcbiAgICBbXG4gICAgICBhY3Rpb24sXG4gICAgICBkaXNhYmxlU3VjY2Vzc1N0YXR1cyxcbiAgICAgIGRpc2FibGVkLFxuICAgICAgZGlzcGF0Y2hGaWVsZHMsXG4gICAgICBmaWVsZHMsXG4gICAgICBoYW5kbGVSZXNwb25zZSxcbiAgICAgIGhpc3RvcnksXG4gICAgICBtZXRob2QsXG4gICAgICBvblN1Ym1pdCxcbiAgICAgIG9uU3VjY2VzcyxcbiAgICAgIHJlZGlyZWN0LFxuICAgICAgdCxcbiAgICAgIGkxOG4sXG4gICAgICB3YWl0Rm9yQXV0b2NvbXBsZXRlLFxuICAgIF0sXG4gIClcblxuICBjb25zdCB0cmF2ZXJzZVJvd0NvbmZpZ3MgPSBSZWFjdC51c2VDYWxsYmFjayhcbiAgICAoe1xuICAgICAgZmllbGRDb25maWcsXG4gICAgICBwYXRoLFxuICAgICAgcGF0aFByZWZpeCxcbiAgICB9OiB7XG4gICAgICBmaWVsZENvbmZpZzogRmllbGRbXVxuICAgICAgcGF0aDogc3RyaW5nXG4gICAgICBwYXRoUHJlZml4Pzogc3RyaW5nXG4gICAgfSkgPT4ge1xuICAgICAgY29uc3QgY29uZmlnID0gZmllbGRDb25maWdcbiAgICAgIGNvbnN0IHBhdGhTZWdtZW50cyA9IHNwbGl0UGF0aEJ5QXJyYXlGaWVsZHMocGF0aClcbiAgICAgIGNvbnN0IGNvbmZpZ01hcCA9IGJ1aWxkRmllbGRTY2hlbWFNYXAoY29uZmlnKVxuXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBhdGhTZWdtZW50cy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICBjb25zdCBwYXRoU2VnbWVudCA9IHBhdGhTZWdtZW50c1tpXVxuXG4gICAgICAgIGlmIChpc051bWJlcihwYXRoU2VnbWVudCkpIHtcbiAgICAgICAgICBjb25zdCByb3dJbmRleCA9IHBhcnNlSW50KHBhdGhTZWdtZW50LCAxMClcbiAgICAgICAgICBjb25zdCBwYXJlbnRGaWVsZFBhdGggPSBwYXRoU2VnbWVudHMuc2xpY2UoMCwgaSkuam9pbignLicpXG4gICAgICAgICAgY29uc3QgcmVtYWluaW5nUGF0aCA9IHBhdGhTZWdtZW50cy5zbGljZShpICsgMSkuam9pbignLicpXG4gICAgICAgICAgY29uc3QgYXJyYXlGaWVsZFBhdGggPSBwYXRoUHJlZml4ID8gYCR7cGF0aFByZWZpeH0uJHtwYXJlbnRGaWVsZFBhdGh9YCA6IHBhcmVudEZpZWxkUGF0aFxuICAgICAgICAgIGNvbnN0IHBhcmVudEFycmF5RmllbGQgPSBjb250ZXh0UmVmLmN1cnJlbnQuZ2V0RmllbGQoYXJyYXlGaWVsZFBhdGgpXG4gICAgICAgICAgY29uc3Qgcm93RmllbGQgPSBwYXJlbnRBcnJheUZpZWxkLnJvd3Nbcm93SW5kZXhdXG5cbiAgICAgICAgICBpZiAocm93RmllbGQuYmxvY2tUeXBlKSB7XG4gICAgICAgICAgICBjb25zdCBibG9ja0NvbmZpZyA9IGNvbmZpZ01hcC5nZXQoYCR7cGFyZW50RmllbGRQYXRofS4ke3Jvd0ZpZWxkLmJsb2NrVHlwZX1gKVxuICAgICAgICAgICAgaWYgKGJsb2NrQ29uZmlnKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cmF2ZXJzZVJvd0NvbmZpZ3Moe1xuICAgICAgICAgICAgICAgIGZpZWxkQ29uZmlnOiBibG9ja0NvbmZpZyxcbiAgICAgICAgICAgICAgICBwYXRoOiByZW1haW5pbmdQYXRoLFxuICAgICAgICAgICAgICAgIHBhdGhQcmVmaXg6IGAke2FycmF5RmllbGRQYXRofS4ke3Jvd0luZGV4fWAsXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQmxvY2sgY29uZmlnIG5vdCBmb3VuZCBmb3IgJHtyb3dGaWVsZC5ibG9ja1R5cGV9IGF0IHBhdGggJHtwYXRofWApXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0cmF2ZXJzZVJvd0NvbmZpZ3Moe1xuICAgICAgICAgICAgICBmaWVsZENvbmZpZzogY29uZmlnTWFwLmdldChwYXJlbnRGaWVsZFBhdGgpLFxuICAgICAgICAgICAgICBwYXRoOiByZW1haW5pbmdQYXRoLFxuICAgICAgICAgICAgICBwYXRoUHJlZml4OiBgJHthcnJheUZpZWxkUGF0aH0uJHtyb3dJbmRleH1gLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvbmZpZ1xuICAgIH0sXG4gICAgW10sXG4gIClcblxuICBjb25zdCBnZXRSb3dTY2hlbWFCeVBhdGggPSBSZWFjdC51c2VDYWxsYmFjayhcbiAgICAoeyBibG9ja1R5cGUsIHBhdGggfTogeyBibG9ja1R5cGU/OiBzdHJpbmc7IHBhdGg6IHN0cmluZyB9KSA9PiB7XG4gICAgICBjb25zdCByb3dDb25maWcgPSB0cmF2ZXJzZVJvd0NvbmZpZ3Moe1xuICAgICAgICBmaWVsZENvbmZpZzogY29sbGVjdGlvbj8uZmllbGRzIHx8IGdsb2JhbD8uZmllbGRzLFxuICAgICAgICBwYXRoLFxuICAgICAgfSlcbiAgICAgIGNvbnN0IHJvd0ZpZWxkQ29uZmlncyA9IGJ1aWxkRmllbGRTY2hlbWFNYXAocm93Q29uZmlnKVxuICAgICAgY29uc3QgcGF0aFNlZ21lbnRzID0gc3BsaXRQYXRoQnlBcnJheUZpZWxkcyhwYXRoKVxuICAgICAgY29uc3QgZmllbGRLZXkgPSBwYXRoU2VnbWVudHMuYXQoLTEpXG4gICAgICByZXR1cm4gcm93RmllbGRDb25maWdzLmdldChibG9ja1R5cGUgPyBgJHtmaWVsZEtleX0uJHtibG9ja1R5cGV9YCA6IGZpZWxkS2V5KVxuICAgIH0sXG4gICAgW3RyYXZlcnNlUm93Q29uZmlncywgY29sbGVjdGlvbj8uZmllbGRzLCBnbG9iYWw/LmZpZWxkc10sXG4gIClcblxuICAvLyBBcnJheS9CbG9jayByb3cgbWFuaXB1bGF0aW9uXG4gIGNvbnN0IGFkZEZpZWxkUm93OiBDb250ZXh0WydhZGRGaWVsZFJvdyddID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKHsgZGF0YSwgcGF0aCwgcm93SW5kZXggfSkgPT4ge1xuICAgICAgY29uc3QgcHJlZmVyZW5jZXMgPSBhd2FpdCBnZXREb2NQcmVmZXJlbmNlcygpXG4gICAgICBjb25zdCByb3dTY2hlbWEgPSBnZXRSb3dTY2hlbWFCeVBhdGgoe1xuICAgICAgICBibG9ja1R5cGU6IGRhdGE/LmJsb2NrVHlwZSxcbiAgICAgICAgcGF0aCxcbiAgICAgIH0pXG5cbiAgICAgIGlmIChyb3dTY2hlbWEpIHtcbiAgICAgICAgY29uc3Qgc3ViRmllbGRTdGF0ZSA9IGF3YWl0IGJ1aWxkU3RhdGVGcm9tU2NoZW1hKHtcbiAgICAgICAgICBpZCxcbiAgICAgICAgICBjb25maWcsXG4gICAgICAgICAgZGF0YSxcbiAgICAgICAgICBmaWVsZFNjaGVtYTogcm93U2NoZW1hLFxuICAgICAgICAgIGxvY2FsZSxcbiAgICAgICAgICBvcGVyYXRpb24sXG4gICAgICAgICAgcHJlZmVyZW5jZXMsXG4gICAgICAgICAgdCxcbiAgICAgICAgICB1c2VyLFxuICAgICAgICB9KVxuXG4gICAgICAgIGRpc3BhdGNoRmllbGRzKHtcbiAgICAgICAgICBibG9ja1R5cGU6IGRhdGE/LmJsb2NrVHlwZSxcbiAgICAgICAgICBwYXRoLFxuICAgICAgICAgIHJvd0luZGV4LFxuICAgICAgICAgIHN1YkZpZWxkU3RhdGUsXG4gICAgICAgICAgdHlwZTogJ0FERF9ST1cnLFxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH0sXG4gICAgW2Rpc3BhdGNoRmllbGRzLCBnZXREb2NQcmVmZXJlbmNlcywgaWQsIHVzZXIsIG9wZXJhdGlvbiwgbG9jYWxlLCB0LCBnZXRSb3dTY2hlbWFCeVBhdGgsIGNvbmZpZ10sXG4gIClcblxuICBjb25zdCByZW1vdmVGaWVsZFJvdzogQ29udGV4dFsncmVtb3ZlRmllbGRSb3cnXSA9IHVzZUNhbGxiYWNrKFxuICAgICh7IHBhdGgsIHJvd0luZGV4IH0pID0+IHtcbiAgICAgIGRpc3BhdGNoRmllbGRzKHsgcGF0aCwgcm93SW5kZXgsIHR5cGU6ICdSRU1PVkVfUk9XJyB9KVxuICAgIH0sXG4gICAgW2Rpc3BhdGNoRmllbGRzXSxcbiAgKVxuXG4gIGNvbnN0IHJlcGxhY2VGaWVsZFJvdzogQ29udGV4dFsncmVwbGFjZUZpZWxkUm93J10gPSB1c2VDYWxsYmFjayhcbiAgICBhc3luYyAoeyBkYXRhLCBwYXRoLCByb3dJbmRleCB9KSA9PiB7XG4gICAgICBjb25zdCBwcmVmZXJlbmNlcyA9IGF3YWl0IGdldERvY1ByZWZlcmVuY2VzKClcbiAgICAgIGNvbnN0IHJvd1NjaGVtYSA9IGdldFJvd1NjaGVtYUJ5UGF0aCh7XG4gICAgICAgIGJsb2NrVHlwZTogZGF0YT8uYmxvY2tUeXBlLFxuICAgICAgICBwYXRoLFxuICAgICAgfSlcblxuICAgICAgaWYgKHJvd1NjaGVtYSkge1xuICAgICAgICBjb25zdCBzdWJGaWVsZFN0YXRlID0gYXdhaXQgYnVpbGRTdGF0ZUZyb21TY2hlbWEoe1xuICAgICAgICAgIGlkLFxuICAgICAgICAgIGNvbmZpZyxcbiAgICAgICAgICBkYXRhLFxuICAgICAgICAgIGZpZWxkU2NoZW1hOiByb3dTY2hlbWEsXG4gICAgICAgICAgbG9jYWxlLFxuICAgICAgICAgIG9wZXJhdGlvbixcbiAgICAgICAgICBwcmVmZXJlbmNlcyxcbiAgICAgICAgICB0LFxuICAgICAgICAgIHVzZXIsXG4gICAgICAgIH0pXG4gICAgICAgIGRpc3BhdGNoRmllbGRzKHtcbiAgICAgICAgICBibG9ja1R5cGU6IGRhdGE/LmJsb2NrVHlwZSxcbiAgICAgICAgICBwYXRoLFxuICAgICAgICAgIHJvd0luZGV4LFxuICAgICAgICAgIHN1YkZpZWxkU3RhdGUsXG4gICAgICAgICAgdHlwZTogJ1JFUExBQ0VfUk9XJyxcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9LFxuICAgIFtkaXNwYXRjaEZpZWxkcywgZ2V0RG9jUHJlZmVyZW5jZXMsIGlkLCB1c2VyLCBvcGVyYXRpb24sIGxvY2FsZSwgdCwgZ2V0Um93U2NoZW1hQnlQYXRoLCBjb25maWddLFxuICApXG5cbiAgY29uc3QgZ2V0RmllbGRzID0gdXNlQ2FsbGJhY2soKCkgPT4gY29udGV4dFJlZi5jdXJyZW50LmZpZWxkcywgW2NvbnRleHRSZWZdKVxuICBjb25zdCBnZXRGaWVsZCA9IHVzZUNhbGxiYWNrKChwYXRoOiBzdHJpbmcpID0+IGNvbnRleHRSZWYuY3VycmVudC5maWVsZHNbcGF0aF0sIFtjb250ZXh0UmVmXSlcbiAgY29uc3QgZ2V0RGF0YSA9IHVzZUNhbGxiYWNrKFxuICAgICgpID0+IHJlZHVjZUZpZWxkc1RvVmFsdWVzKGNvbnRleHRSZWYuY3VycmVudC5maWVsZHMsIHRydWUpLFxuICAgIFtjb250ZXh0UmVmXSxcbiAgKVxuICBjb25zdCBnZXRTaWJsaW5nRGF0YSA9IHVzZUNhbGxiYWNrKFxuICAgIChwYXRoOiBzdHJpbmcpID0+IGdldFNpYmxpbmdEYXRhRnVuYyhjb250ZXh0UmVmLmN1cnJlbnQuZmllbGRzLCBwYXRoKSxcbiAgICBbY29udGV4dFJlZl0sXG4gIClcbiAgY29uc3QgZ2V0RGF0YUJ5UGF0aCA9IHVzZUNhbGxiYWNrPEdldERhdGFCeVBhdGg+KFxuICAgIChwYXRoOiBzdHJpbmcpID0+IGdldERhdGFCeVBhdGhGdW5jKGNvbnRleHRSZWYuY3VycmVudC5maWVsZHMsIHBhdGgpLFxuICAgIFtjb250ZXh0UmVmXSxcbiAgKVxuXG4gIGNvbnN0IGNyZWF0ZUZvcm1EYXRhID0gdXNlQ2FsbGJhY2soXG4gICAgKG92ZXJyaWRlczogYW55ID0ge30pID0+IHtcbiAgICAgIGNvbnN0IGRhdGEgPSByZWR1Y2VGaWVsZHNUb1ZhbHVlcyhjb250ZXh0UmVmLmN1cnJlbnQuZmllbGRzLCB0cnVlKVxuXG4gICAgICBjb25zdCBmaWxlID0gZGF0YT8uZmlsZVxuXG4gICAgICBpZiAoZmlsZSkge1xuICAgICAgICBkZWxldGUgZGF0YS5maWxlXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGRhdGFXaXRoT3ZlcnJpZGVzID0ge1xuICAgICAgICAuLi5kYXRhLFxuICAgICAgICAuLi5vdmVycmlkZXMsXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGRhdGFUb1NlcmlhbGl6ZSA9IHtcbiAgICAgICAgX3BheWxvYWQ6IEpTT04uc3RyaW5naWZ5KGRhdGFXaXRoT3ZlcnJpZGVzKSxcbiAgICAgICAgZmlsZSxcbiAgICAgIH1cblxuICAgICAgLy8gbnVsbEFzVW5kZWZpbmVkcyBpcyBpbXBvcnRhbnQgdG8gYWxsb3cgdXBsb2FkcyBhbmQgcmVsYXRpb25zaGlwIGZpZWxkcyB0byBjbGVhciB0aGVtc2VsdmVzXG4gICAgICBjb25zdCBmb3JtRGF0YSA9IHNlcmlhbGl6ZShkYXRhVG9TZXJpYWxpemUsIHsgaW5kaWNlczogdHJ1ZSwgbnVsbHNBc1VuZGVmaW5lZHM6IGZhbHNlIH0pXG4gICAgICByZXR1cm4gZm9ybURhdGFcbiAgICB9LFxuICAgIFtjb250ZXh0UmVmXSxcbiAgKVxuXG4gIGNvbnN0IHJlc2V0ID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKGZpZWxkU2NoZW1hOiBGaWVsZFtdLCBkYXRhOiB1bmtub3duKSA9PiB7XG4gICAgICBjb25zdCBwcmVmZXJlbmNlcyA9IGF3YWl0IGdldERvY1ByZWZlcmVuY2VzKClcbiAgICAgIGNvbnN0IHN0YXRlID0gYXdhaXQgYnVpbGRTdGF0ZUZyb21TY2hlbWEoe1xuICAgICAgICBpZCxcbiAgICAgICAgY29uZmlnLFxuICAgICAgICBkYXRhLFxuICAgICAgICBmaWVsZFNjaGVtYSxcbiAgICAgICAgbG9jYWxlLFxuICAgICAgICBvcGVyYXRpb24sXG4gICAgICAgIHByZWZlcmVuY2VzLFxuICAgICAgICB0LFxuICAgICAgICB1c2VyLFxuICAgICAgfSlcbiAgICAgIGNvbnRleHRSZWYuY3VycmVudCA9IHsgLi4uaW5pdENvbnRleHRTdGF0ZSB9IGFzIEZvcm1Db250ZXh0VHlwZVxuICAgICAgc2V0TW9kaWZpZWQoZmFsc2UpXG4gICAgICBkaXNwYXRjaEZpZWxkcyh7IHN0YXRlLCB0eXBlOiAnUkVQTEFDRV9TVEFURScgfSlcbiAgICB9LFxuICAgIFtpZCwgdXNlciwgb3BlcmF0aW9uLCBsb2NhbGUsIHQsIGRpc3BhdGNoRmllbGRzLCBnZXREb2NQcmVmZXJlbmNlcywgY29uZmlnXSxcbiAgKVxuXG4gIGNvbnN0IHJlcGxhY2VTdGF0ZSA9IHVzZUNhbGxiYWNrKFxuICAgIChzdGF0ZTogRmllbGRzKSA9PiB7XG4gICAgICBjb250ZXh0UmVmLmN1cnJlbnQgPSB7IC4uLmluaXRDb250ZXh0U3RhdGUgfSBhcyBGb3JtQ29udGV4dFR5cGVcbiAgICAgIHNldE1vZGlmaWVkKGZhbHNlKVxuICAgICAgZGlzcGF0Y2hGaWVsZHMoeyBzdGF0ZSwgdHlwZTogJ1JFUExBQ0VfU1RBVEUnIH0pXG4gICAgfSxcbiAgICBbZGlzcGF0Y2hGaWVsZHNdLFxuICApXG5cbiAgY29udGV4dFJlZi5jdXJyZW50LnN1Ym1pdCA9IHN1Ym1pdFxuICBjb250ZXh0UmVmLmN1cnJlbnQuZ2V0RmllbGRzID0gZ2V0RmllbGRzXG4gIGNvbnRleHRSZWYuY3VycmVudC5nZXRGaWVsZCA9IGdldEZpZWxkXG4gIGNvbnRleHRSZWYuY3VycmVudC5nZXREYXRhID0gZ2V0RGF0YVxuICBjb250ZXh0UmVmLmN1cnJlbnQuZ2V0U2libGluZ0RhdGEgPSBnZXRTaWJsaW5nRGF0YVxuICBjb250ZXh0UmVmLmN1cnJlbnQuZ2V0RGF0YUJ5UGF0aCA9IGdldERhdGFCeVBhdGhcbiAgY29udGV4dFJlZi5jdXJyZW50LnZhbGlkYXRlRm9ybSA9IHZhbGlkYXRlRm9ybVxuICBjb250ZXh0UmVmLmN1cnJlbnQuY3JlYXRlRm9ybURhdGEgPSBjcmVhdGVGb3JtRGF0YVxuICBjb250ZXh0UmVmLmN1cnJlbnQuc2V0TW9kaWZpZWQgPSBzZXRNb2RpZmllZFxuICBjb250ZXh0UmVmLmN1cnJlbnQuc2V0UHJvY2Vzc2luZyA9IHNldFByb2Nlc3NpbmdcbiAgY29udGV4dFJlZi5jdXJyZW50LnNldFN1Ym1pdHRlZCA9IHNldFN1Ym1pdHRlZFxuICBjb250ZXh0UmVmLmN1cnJlbnQuZGlzYWJsZWQgPSBkaXNhYmxlZFxuICBjb250ZXh0UmVmLmN1cnJlbnQuZm9ybVJlZiA9IGZvcm1SZWZcbiAgY29udGV4dFJlZi5jdXJyZW50LnJlc2V0ID0gcmVzZXRcbiAgY29udGV4dFJlZi5jdXJyZW50LnJlcGxhY2VTdGF0ZSA9IHJlcGxhY2VTdGF0ZVxuICBjb250ZXh0UmVmLmN1cnJlbnQuYnVpbGRSb3dFcnJvcnMgPSBidWlsZFJvd0Vycm9yc1xuICBjb250ZXh0UmVmLmN1cnJlbnQuYWRkRmllbGRSb3cgPSBhZGRGaWVsZFJvd1xuICBjb250ZXh0UmVmLmN1cnJlbnQucmVtb3ZlRmllbGRSb3cgPSByZW1vdmVGaWVsZFJvd1xuICBjb250ZXh0UmVmLmN1cnJlbnQucmVwbGFjZUZpZWxkUm93ID0gcmVwbGFjZUZpZWxkUm93XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAodHlwZW9mIHN1Ym1pdHRlZEZyb21Qcm9wcyA9PT0gJ2Jvb2xlYW4nKSBzZXRTdWJtaXR0ZWQoc3VibWl0dGVkRnJvbVByb3BzKVxuICB9LCBbc3VibWl0dGVkRnJvbVByb3BzXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChpbml0aWFsU3RhdGUpIHtcbiAgICAgIGNvbnRleHRSZWYuY3VycmVudCA9IHsgLi4uaW5pdENvbnRleHRTdGF0ZSB9IGFzIEZvcm1Db250ZXh0VHlwZVxuICAgICAgZGlzcGF0Y2hGaWVsZHMoeyBzdGF0ZTogaW5pdGlhbFN0YXRlLCB0eXBlOiAnUkVQTEFDRV9TVEFURScgfSlcbiAgICB9XG4gIH0sIFtpbml0aWFsU3RhdGUsIGRpc3BhdGNoRmllbGRzXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChpbml0aWFsRGF0YSkge1xuICAgICAgY29udGV4dFJlZi5jdXJyZW50ID0geyAuLi5pbml0Q29udGV4dFN0YXRlIH0gYXMgRm9ybUNvbnRleHRUeXBlXG4gICAgICBjb25zdCBidWlsdFN0YXRlID0gYnVpbGRJbml0aWFsU3RhdGUoaW5pdGlhbERhdGEpXG4gICAgICBzZXRGb3JtYXR0ZWRJbml0aWFsRGF0YShidWlsdFN0YXRlKVxuICAgICAgZGlzcGF0Y2hGaWVsZHMoeyBzdGF0ZTogYnVpbHRTdGF0ZSwgdHlwZTogJ1JFUExBQ0VfU1RBVEUnIH0pXG4gICAgfVxuICB9LCBbaW5pdGlhbERhdGEsIGRpc3BhdGNoRmllbGRzXSlcblxuICB1c2VUaHJvdHRsZWRFZmZlY3QoXG4gICAgKCkgPT4ge1xuICAgICAgcmVmcmVzaENvb2tpZSgpXG4gICAgfSxcbiAgICAxNTAwMCxcbiAgICBbZmllbGRzXSxcbiAgKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29udGV4dFJlZi5jdXJyZW50ID0geyAuLi5jb250ZXh0UmVmLmN1cnJlbnQgfSAvLyB0cmlnZ2VycyByZXJlbmRlciBvZiBhbGwgY29tcG9uZW50cyB0aGF0IHN1YnNjcmliZSB0byBmb3JtXG4gICAgc2V0TW9kaWZpZWQoZmFsc2UpXG4gIH0sIFtsb2NhbGVdKVxuXG4gIGNvbnN0IGNsYXNzZXMgPSBbY2xhc3NOYW1lLCBiYXNlQ2xhc3NdLmZpbHRlcihCb29sZWFuKS5qb2luKCcgJylcblxuICByZXR1cm4gKFxuICAgIDxmb3JtXG4gICAgICBhY3Rpb249e2FjdGlvbn1cbiAgICAgIGNsYXNzTmFtZT17Y2xhc3Nlc31cbiAgICAgIG1ldGhvZD17bWV0aG9kfVxuICAgICAgbm9WYWxpZGF0ZVxuICAgICAgb25TdWJtaXQ9eyhlKSA9PiBjb250ZXh0UmVmLmN1cnJlbnQuc3VibWl0KHt9LCBlKX1cbiAgICAgIHJlZj17Zm9ybVJlZn1cbiAgICA+XG4gICAgICA8Rm9ybUNvbnRleHQuUHJvdmlkZXIgdmFsdWU9e2NvbnRleHRSZWYuY3VycmVudH0+XG4gICAgICAgIDxGb3JtV2F0Y2hDb250ZXh0LlByb3ZpZGVyXG4gICAgICAgICAgdmFsdWU9e3tcbiAgICAgICAgICAgIGZpZWxkcyxcbiAgICAgICAgICAgIC4uLmNvbnRleHRSZWYuY3VycmVudCxcbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAgPFN1Ym1pdHRlZENvbnRleHQuUHJvdmlkZXIgdmFsdWU9e3N1Ym1pdHRlZH0+XG4gICAgICAgICAgICA8UHJvY2Vzc2luZ0NvbnRleHQuUHJvdmlkZXIgdmFsdWU9e3Byb2Nlc3Npbmd9PlxuICAgICAgICAgICAgICA8TW9kaWZpZWRDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXttb2RpZmllZH0+XG4gICAgICAgICAgICAgICAgPEZvcm1GaWVsZHNDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXtmaWVsZHNSZWR1Y2VyfT5cbiAgICAgICAgICAgICAgICAgIDxXYXRjaEZvcm1FcnJvcnMgYnVpbGRSb3dFcnJvcnM9e2J1aWxkUm93RXJyb3JzfSAvPlxuICAgICAgICAgICAgICAgICAge2NoaWxkcmVufVxuICAgICAgICAgICAgICAgIDwvRm9ybUZpZWxkc0NvbnRleHQuUHJvdmlkZXI+XG4gICAgICAgICAgICAgIDwvTW9kaWZpZWRDb250ZXh0LlByb3ZpZGVyPlxuICAgICAgICAgICAgPC9Qcm9jZXNzaW5nQ29udGV4dC5Qcm92aWRlcj5cbiAgICAgICAgICA8L1N1Ym1pdHRlZENvbnRleHQuUHJvdmlkZXI+XG4gICAgICAgIDwvRm9ybVdhdGNoQ29udGV4dC5Qcm92aWRlcj5cbiAgICAgIDwvRm9ybUNvbnRleHQuUHJvdmlkZXI+XG4gICAgPC9mb3JtPlxuICApXG59XG5cbmV4cG9ydCBkZWZhdWx0IEZvcm1cbiJdLCJuYW1lcyI6WyJiYXNlQ2xhc3MiLCJGb3JtIiwicHJvcHMiLCJhY3Rpb24iLCJjaGlsZHJlbiIsImNsYXNzTmFtZSIsImRpc2FibGVTdWNjZXNzU3RhdHVzIiwiZGlzYWJsZWQiLCJoYW5kbGVSZXNwb25zZSIsImluaXRpYWxEYXRhIiwiaW5pdGlhbFN0YXRlIiwibWV0aG9kIiwib25TdWJtaXQiLCJvblN1Y2Nlc3MiLCJyZWRpcmVjdCIsInN1Ym1pdHRlZCIsInN1Ym1pdHRlZEZyb21Qcm9wcyIsIndhaXRGb3JBdXRvY29tcGxldGUiLCJoaXN0b3J5IiwidXNlSGlzdG9yeSIsImNvZGUiLCJsb2NhbGUiLCJ1c2VMb2NhbGUiLCJpMThuIiwidCIsInVzZVRyYW5zbGF0aW9uIiwicmVmcmVzaENvb2tpZSIsInVzZXIiLCJ1c2VBdXRoIiwiaWQiLCJjb2xsZWN0aW9uIiwiZ2V0RG9jUHJlZmVyZW5jZXMiLCJnbG9iYWwiLCJ1c2VEb2N1bWVudEluZm8iLCJvcGVyYXRpb24iLCJ1c2VPcGVyYXRpb24iLCJjb25maWciLCJ1c2VDb25maWciLCJtb2RpZmllZCIsInNldE1vZGlmaWVkIiwidXNlU3RhdGUiLCJwcm9jZXNzaW5nIiwic2V0UHJvY2Vzc2luZyIsInNldFN1Ym1pdHRlZCIsImZvcm1hdHRlZEluaXRpYWxEYXRhIiwic2V0Rm9ybWF0dGVkSW5pdGlhbERhdGEiLCJidWlsZEluaXRpYWxTdGF0ZSIsImZvcm1SZWYiLCJ1c2VSZWYiLCJjb250ZXh0UmVmIiwiaW5pdGlhbEZpZWxkU3RhdGUiLCJmaWVsZHNSZWR1Y2VyIiwidXNlUmVkdWNlciIsImZpZWxkUmVkdWNlciIsImZpZWxkcyIsImRpc3BhdGNoRmllbGRzIiwiY3VycmVudCIsImJ1aWxkUm93RXJyb3JzIiwidXNlQ2FsbGJhY2siLCJleGlzdGluZ0ZpZWxkUm93cyIsIm5ld0ZpZWxkUm93cyIsIk9iamVjdCIsImVudHJpZXMiLCJmb3JFYWNoIiwicGF0aCIsImZpZWxkIiwicGF0aFNlZ21lbnRzIiwic3BsaXRQYXRoQnlBcnJheUZpZWxkcyIsImkiLCJsZW5ndGgiLCJmaWVsZFBhdGgiLCJzbGljZSIsImpvaW4iLCJmb3JtRmllbGQiLCJBcnJheSIsImlzQXJyYXkiLCJyb3dzIiwibWFwIiwiZXhpc3RpbmdSb3ciLCJjaGlsZEVycm9yUGF0aHMiLCJTZXQiLCJyb3dJbmRleCIsImNoaWxkRmllbGRQYXRoIiwidmFsaWQiLCJhZGQiLCJuZXdSb3dzIiwic3RhdGVNYXRjaGVzIiwiZXZlcnkiLCJuZXdSb3ciLCJleGlzdGluZ1Jvd0Vycm9yUGF0aHMiLCJzZXRzQXJlRXF1YWwiLCJ0eXBlIiwidmFsaWRhdGVGb3JtIiwidmFsaWRhdGVkRmllbGRTdGF0ZSIsImlzVmFsaWQiLCJkYXRhIiwiZ2V0RGF0YSIsInZhbGlkYXRpb25Qcm9taXNlcyIsInZhbGlkYXRlZEZpZWxkIiwicGFzc2VzQ29uZGl0aW9uIiwidmFsaWRhdGlvblJlc3VsdCIsInZhbGlkYXRlIiwidmFsdWUiLCJzaWJsaW5nRGF0YSIsImdldFNpYmxpbmdEYXRhIiwiZXJyb3JNZXNzYWdlIiwiUHJvbWlzZSIsImFsbCIsImlzRGVlcEVxdWFsIiwic3RhdGUiLCJzdWJtaXQiLCJvcHRpb25zIiwiZSIsImFjdGlvblRvVXNlIiwibWV0aG9kVG9Vc2UiLCJvdmVycmlkZXMiLCJza2lwVmFsaWRhdGlvbiIsInByZXZlbnREZWZhdWx0Iiwic3RvcFByb3BhZ2F0aW9uIiwid2FpdCIsInRvYXN0IiwiZXJyb3IiLCJyZWR1Y2VGaWVsZHNUb1ZhbHVlcyIsImZvcm1EYXRhIiwiY3JlYXRlRm9ybURhdGEiLCJyZXMiLCJyZXF1ZXN0cyIsInRvTG93ZXJDYXNlIiwiYm9keSIsImhlYWRlcnMiLCJsYW5ndWFnZSIsImNvbnRlbnRUeXBlIiwiZ2V0IiwiaXNKU09OIiwiaW5kZXhPZiIsImpzb24iLCJzdGF0dXMiLCJkZXN0aW5hdGlvbiIsInBhdGhuYW1lIiwibWVzc2FnZSIsInB1c2giLCJzdWNjZXNzIiwiYXV0b0Nsb3NlIiwiZXJyb3JzIiwiZmllbGRFcnJvcnMiLCJub25GaWVsZEVycm9ycyIsInJlZHVjZSIsImZpZWxkRXJycyIsIm5vbkZpZWxkRXJycyIsImVyciIsIm5ld0ZpZWxkRXJycyIsIm5ld05vbkZpZWxkRXJycyIsImRhdGFFcnJvciIsImVycm9yTWVzc2FnZXMiLCJ0cmF2ZXJzZVJvd0NvbmZpZ3MiLCJSZWFjdCIsImZpZWxkQ29uZmlnIiwicGF0aFByZWZpeCIsImNvbmZpZ01hcCIsImJ1aWxkRmllbGRTY2hlbWFNYXAiLCJwYXRoU2VnbWVudCIsImlzTnVtYmVyIiwicGFyc2VJbnQiLCJwYXJlbnRGaWVsZFBhdGgiLCJyZW1haW5pbmdQYXRoIiwiYXJyYXlGaWVsZFBhdGgiLCJwYXJlbnRBcnJheUZpZWxkIiwiZ2V0RmllbGQiLCJyb3dGaWVsZCIsImJsb2NrVHlwZSIsImJsb2NrQ29uZmlnIiwiRXJyb3IiLCJnZXRSb3dTY2hlbWFCeVBhdGgiLCJyb3dDb25maWciLCJyb3dGaWVsZENvbmZpZ3MiLCJmaWVsZEtleSIsImF0IiwiYWRkRmllbGRSb3ciLCJwcmVmZXJlbmNlcyIsInJvd1NjaGVtYSIsInN1YkZpZWxkU3RhdGUiLCJidWlsZFN0YXRlRnJvbVNjaGVtYSIsImZpZWxkU2NoZW1hIiwicmVtb3ZlRmllbGRSb3ciLCJyZXBsYWNlRmllbGRSb3ciLCJnZXRGaWVsZHMiLCJnZXRTaWJsaW5nRGF0YUZ1bmMiLCJnZXREYXRhQnlQYXRoIiwiZ2V0RGF0YUJ5UGF0aEZ1bmMiLCJmaWxlIiwiZGF0YVdpdGhPdmVycmlkZXMiLCJkYXRhVG9TZXJpYWxpemUiLCJfcGF5bG9hZCIsIkpTT04iLCJzdHJpbmdpZnkiLCJzZXJpYWxpemUiLCJpbmRpY2VzIiwibnVsbHNBc1VuZGVmaW5lZHMiLCJyZXNldCIsImluaXRDb250ZXh0U3RhdGUiLCJyZXBsYWNlU3RhdGUiLCJ1c2VFZmZlY3QiLCJidWlsdFN0YXRlIiwidXNlVGhyb3R0bGVkRWZmZWN0IiwiY2xhc3NlcyIsImZpbHRlciIsIkJvb2xlYW4iLCJmb3JtIiwibm9WYWxpZGF0ZSIsInJlZiIsIkZvcm1Db250ZXh0IiwiUHJvdmlkZXIiLCJGb3JtV2F0Y2hDb250ZXh0IiwiU3VibWl0dGVkQ29udGV4dCIsIlByb2Nlc3NpbmdDb250ZXh0IiwiTW9kaWZpZWRDb250ZXh0IiwiRm9ybUZpZWxkc0NvbnRleHQiLCJXYXRjaEZvcm1FcnJvcnMiXSwibWFwcGluZ3MiOiJBQUFBLGtFQUFrRTs7OzsrQkF1cUJsRTs7O2VBQUE7OztrRUF0cUJ3QjtrQ0FDRTsrREFDa0Q7OEJBQzdDO2dDQUNKOytCQUNMOzBCQWFHOzhCQUNJO3dDQUNVOzZEQUN0QjtxQkFDUTsyRUFDTTtzQkFDUDt3QkFDRTs4QkFDTTt3QkFDTjttQ0FDRztpQ0FDRztxQ0FDSTswRUFDTjs2RUFDRzt5QkFRMUI7c0VBQ21COzhCQUNHO3NFQUNDO3VFQUNDO3lFQUNGOzZFQUNJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFakMsTUFBTUEsWUFBWTtBQUVsQixNQUFNQyxPQUF3QixDQUFDQztJQUM3QixNQUFNLEVBQ0pDLE1BQU0sRUFDTkMsUUFBUSxFQUNSQyxTQUFTLEVBQ1RDLG9C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
672
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hZG1pbi9jb21wb25lbnRzL2Zvcm1zL0Zvcm0vaW5kZXgudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGpzeC1hMTF5L25vLW5vbmludGVyYWN0aXZlLWVsZW1lbnQtaW50ZXJhY3Rpb25zICovXG5pbXBvcnQgaXNEZWVwRXF1YWwgZnJvbSAnZGVlcC1lcXVhbCdcbmltcG9ydCB7IHNlcmlhbGl6ZSB9IGZyb20gJ29iamVjdC10by1mb3JtZGF0YSdcbmltcG9ydCBSZWFjdCwgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VSZWR1Y2VyLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gJ3JlYWN0LWkxOG5leHQnXG5pbXBvcnQgeyB1c2VIaXN0b3J5IH0gZnJvbSAncmVhY3Qtcm91dGVyLWRvbSdcbmltcG9ydCB7IHRvYXN0IH0gZnJvbSAncmVhY3QtdG9hc3RpZnknXG5cbmltcG9ydCB0eXBlIHsgRmllbGQgfSBmcm9tICcuLi8uLi8uLi8uLi9maWVsZHMvY29uZmlnL3R5cGVzJ1xuaW1wb3J0IHR5cGUge1xuICBDb250ZXh0LFxuICBGaWVsZHMsXG4gIENvbnRleHQgYXMgRm9ybUNvbnRleHRUeXBlLFxuICBHZXREYXRhQnlQYXRoLFxuICBQcm9wcyxcbiAgUm93LFxuICBTdWJtaXRPcHRpb25zLFxufSBmcm9tICcuL3R5cGVzJ1xuXG5pbXBvcnQgeyBpc051bWJlciB9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWxpdGllcy9pc051bWJlcidcbmltcG9ydCB7IHNldHNBcmVFcXVhbCB9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWxpdGllcy9zZXRzQXJlRXF1YWwnXG5pbXBvcnQgeyBzcGxpdFBhdGhCeUFycmF5RmllbGRzIH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbGl0aWVzL3NwbGl0UGF0aEJ5QXJyYXlGaWVsZHMnXG5pbXBvcnQgd2FpdCBmcm9tICcuLi8uLi8uLi8uLi91dGlsaXRpZXMvd2FpdCdcbmltcG9ydCB7IHJlcXVlc3RzIH0gZnJvbSAnLi4vLi4vLi4vYXBpJ1xuaW1wb3J0IHVzZVRocm90dGxlZEVmZmVjdCBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VUaHJvdHRsZWRFZmZlY3QnXG5pbXBvcnQgeyB1c2VBdXRoIH0gZnJvbSAnLi4vLi4vdXRpbGl0aWVzL0F1dGgnXG5pbXBvcnQgeyB1c2VDb25maWcgfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvQ29uZmlnJ1xuaW1wb3J0IHsgdXNlRG9jdW1lbnRJbmZvIH0gZnJvbSAnLi4vLi4vdXRpbGl0aWVzL0RvY3VtZW50SW5mbydcbmltcG9ydCB7IHVzZUxvY2FsZSB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9Mb2NhbGUnXG5pbXBvcnQgeyB1c2VPcGVyYXRpb24gfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvT3BlcmF0aW9uUHJvdmlkZXInXG5pbXBvcnQgeyBXYXRjaEZvcm1FcnJvcnMgfSBmcm9tICcuL1dhdGNoRm9ybUVycm9ycydcbmltcG9ydCB7IGJ1aWxkRmllbGRTY2hlbWFNYXAgfSBmcm9tICcuL2J1aWxkRmllbGRTY2hlbWFNYXAnXG5pbXBvcnQgYnVpbGRJbml0aWFsU3RhdGUgZnJvbSAnLi9idWlsZEluaXRpYWxTdGF0ZSdcbmltcG9ydCBidWlsZFN0YXRlRnJvbVNjaGVtYSBmcm9tICcuL2J1aWxkU3RhdGVGcm9tU2NoZW1hJ1xuaW1wb3J0IHtcbiAgRm9ybUNvbnRleHQsXG4gIEZvcm1GaWVsZHNDb250ZXh0LFxuICBGb3JtV2F0Y2hDb250ZXh0LFxuICBNb2RpZmllZENvbnRleHQsXG4gIFByb2Nlc3NpbmdDb250ZXh0LFxuICBTdWJtaXR0ZWRDb250ZXh0LFxufSBmcm9tICcuL2NvbnRleHQnXG5pbXBvcnQgZXJyb3JNZXNzYWdlcyBmcm9tICcuL2Vycm9yTWVzc2FnZXMnXG5pbXBvcnQgeyBmaWVsZFJlZHVjZXIgfSBmcm9tICcuL2ZpZWxkUmVkdWNlcidcbmltcG9ydCBnZXREYXRhQnlQYXRoRnVuYyBmcm9tICcuL2dldERhdGFCeVBhdGgnXG5pbXBvcnQgZ2V0U2libGluZ0RhdGFGdW5jIGZyb20gJy4vZ2V0U2libGluZ0RhdGEnXG5pbXBvcnQgaW5pdENvbnRleHRTdGF0ZSBmcm9tICcuL2luaXRDb250ZXh0U3RhdGUnXG5pbXBvcnQgcmVkdWNlRmllbGRzVG9WYWx1ZXMgZnJvbSAnLi9yZWR1Y2VGaWVsZHNUb1ZhbHVlcydcblxuY29uc3QgYmFzZUNsYXNzID0gJ2Zvcm0nXG5cbmNvbnN0IEZvcm06IFJlYWN0LkZDPFByb3BzPiA9IChwcm9wcykgPT4ge1xuICBjb25zdCB7IGlkLCBjb2xsZWN0aW9uLCBnZXREb2NQcmVmZXJlbmNlcywgZ2xvYmFsIH0gPSB1c2VEb2N1bWVudEluZm8oKVxuXG4gIGNvbnN0IHtcbiAgICBhY3Rpb24sXG4gICAgY2hpbGRyZW4sXG4gICAgY2xhc3NOYW1lLFxuICAgIGRpc2FibGVTdWNjZXNzU3RhdHVzLFxuICAgIGRpc2FibGVkLFxuICAgIGZpZWxkczogZmllbGRzRnJvbVByb3BzID0gY29sbGVjdGlvbj8uZmllbGRzIHx8IGdsb2JhbD8uZmllbGRzLFxuICAgIGhhbmRsZVJlc3BvbnNlLFxuICAgIGluaXRpYWxEYXRhLCAvLyB2YWx1ZXMgb25seSwgcGF0aHMgYXJlIHJlcXVpcmVkIGFzIGtleSAtIGZvcm0gc2hvdWxkIGJ1aWxkIGluaXRpYWwgc3RhdGUgYXMgY29udmVuaWVuY2VcbiAgICBpbml0aWFsU3RhdGUsIC8vIGZ1bGx5IGZvcm1lZCBpbml0aWFsIGZpZWxkIHN0YXRlXG4gICAgbWV0aG9kLFxuICAgIG9uU3VibWl0LFxuICAgIG9uU3VjY2VzcyxcbiAgICByZWRpcmVjdCxcbiAgICBzdWJtaXR0ZWQ6IHN1Ym1pdHRlZEZyb21Qcm9wcyxcbiAgICB3YWl0Rm9yQXV0b2NvbXBsZXRlLFxuICB9ID0gcHJvcHNcblxuICBjb25zdCBoaXN0b3J5ID0gdXNlSGlzdG9yeSgpXG4gIGNvbnN0IHsgY29kZTogbG9jYWxlIH0gPSB1c2VMb2NhbGUoKVxuICBjb25zdCB7IGkxOG4sIHQgfSA9IHVzZVRyYW5zbGF0aW9uKCdnZW5lcmFsJylcbiAgY29uc3QgeyByZWZyZXNoQ29va2llLCB1c2VyIH0gPSB1c2VBdXRoKClcbiAgY29uc3Qgb3BlcmF0aW9uID0gdXNlT3BlcmF0aW9uKClcblxuICBjb25zdCBjb25maWcgPSB1c2VDb25maWcoKVxuXG4gIGNvbnN0IFttb2RpZmllZCwgc2V0TW9kaWZpZWRdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtwcm9jZXNzaW5nLCBzZXRQcm9jZXNzaW5nXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbc3VibWl0dGVkLCBzZXRTdWJtaXR0ZWRdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtmb3JtYXR0ZWRJbml0aWFsRGF0YSwgc2V0Rm9ybWF0dGVkSW5pdGlhbERhdGFdID0gdXNlU3RhdGUoYnVpbGRJbml0aWFsU3RhdGUoaW5pdGlhbERhdGEpKVxuXG4gIGNvbnN0IGZvcm1SZWYgPSB1c2VSZWY8SFRNTEZvcm1FbGVtZW50PihudWxsKVxuICBjb25zdCBjb250ZXh0UmVmID0gdXNlUmVmKHt9IGFzIEZvcm1Db250ZXh0VHlwZSlcblxuICBsZXQgaW5pdGlhbEZpZWxkU3RhdGUgPSB7fVxuXG4gIGlmIChmb3JtYXR0ZWRJbml0aWFsRGF0YSkgaW5pdGlhbEZpZWxkU3RhdGUgPSBmb3JtYXR0ZWRJbml0aWFsRGF0YVxuICBpZiAoaW5pdGlhbFN0YXRlKSBpbml0aWFsRmllbGRTdGF0ZSA9IGluaXRpYWxTdGF0ZVxuXG4gIGNvbnN0IGZpZWxkc1JlZHVjZXIgPSB1c2VSZWR1Y2VyKGZpZWxkUmVkdWNlciwge30sICgpID0+IGluaXRpYWxGaWVsZFN0YXRlKVxuICAvKipcbiAgICogYGZpZWxkc2AgaXMgdGhlIGN1cnJlbnQsIHVwLXRvLWRhdGUgc3RhdGUvZGF0YSBvZiBhbGwgZmllbGRzIGluIHRoZSBmb3JtLiBJdCBjYW4gYmUgbW9kaWZpZWQgYnkgdXNpbmcgZGlzcGF0Y2hGaWVsZHMsXG4gICAqIHdoaWNoIGNhbGxzIHRoZSBmaWVsZFJlZHVjZXIsIHdoaWNoIHRoZW4gdXBkYXRlcyB0aGUgc3RhdGUuXG4gICAqL1xuICBjb25zdCBbZmllbGRzLCBkaXNwYXRjaEZpZWxkc10gPSBmaWVsZHNSZWR1Y2VyXG5cbiAgY29udGV4dFJlZi5jdXJyZW50LmZpZWxkcyA9IGZpZWxkc1xuICBjb250ZXh0UmVmLmN1cnJlbnQuZGlzcGF0Y2hGaWVsZHMgPSBkaXNwYXRjaEZpZWxkc1xuXG4gIC8vIEJ1aWxkIGEgY3VycmVudCBzZXQgb2YgY2hpbGQgZXJyb3JzIGZvciBhbGwgcm93cyBpbiBmb3JtIHN0YXRlXG4gIGNvbnN0IGJ1aWxkUm93RXJyb3JzID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNvbnN0IGV4aXN0aW5nRmllbGRSb3dzOiB7IFtwYXRoOiBzdHJpbmddOiBSb3dbXSB9ID0ge31cbiAgICBjb25zdCBuZXdGaWVsZFJvd3M6IHsgW3BhdGg6IHN0cmluZ106IFJvd1tdIH0gPSB7fVxuXG4gICAgT2JqZWN0LmVudHJpZXMoZmllbGRzKS5mb3JFYWNoKChbcGF0aCwgZmllbGRdKSA9PiB7XG4gICAgICBjb25zdCBwYXRoU2VnbWVudHMgPSBzcGxpdFBhdGhCeUFycmF5RmllbGRzKHBhdGgpXG5cbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcGF0aFNlZ21lbnRzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgIGNvbnN0IGZpZWxkUGF0aCA9IHBhdGhTZWdtZW50cy5zbGljZSgwLCBpICsgMSkuam9pbignLicpXG4gICAgICAgIGNvbnN0IGZvcm1GaWVsZCA9IGZpZWxkcz8uW2ZpZWxkUGF0aF1cblxuICAgICAgICAvLyBJcyB0aGlzIGFuIGFycmF5IG9yIGJsb2NrcyBmaWVsZD9cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZm9ybUZpZWxkPy5yb3dzKSkge1xuICAgICAgICAgIC8vIEtlZXAgYSByZWZlcmVuY2UgdG8gdGhlIGV4aXN0aW5nIHJvdyBzdGF0ZVxuICAgICAgICAgIGV4aXN0aW5nRmllbGRSb3dzW2ZpZWxkUGF0aF0gPSBmb3JtRmllbGQucm93c1xuXG4gICAgICAgICAgLy8gQSBuZXcgcm93IHN0YXRlIHdpbGwgYmUgdXNlZCB0byBjb21wYXJlXG4gICAgICAgICAgLy8gYWdhaW5zdCB0aGUgb2xkIHN0YXRlIGxhdGVyLFxuICAgICAgICAgIC8vIHRvIHNlZSBpZiB3ZSBuZWVkIHRvIGRpc3BhdGNoIGFuIHVwZGF0ZVxuICAgICAgICAgIGlmICghbmV3RmllbGRSb3dzW2ZpZWxkUGF0aF0pIHtcbiAgICAgICAgICAgIG5ld0ZpZWxkUm93c1tmaWVsZFBhdGhdID0gZm9ybUZpZWxkLnJvd3MubWFwKChleGlzdGluZ1JvdykgPT4gKHtcbiAgICAgICAgICAgICAgLi4uZXhpc3RpbmdSb3csXG4gICAgICAgICAgICAgIGNoaWxkRXJyb3JQYXRoczogbmV3IFNldCgpLFxuICAgICAgICAgICAgfSkpXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3Qgcm93SW5kZXggPSBwYXRoU2VnbWVudHNbaSArIDFdXG4gICAgICAgICAgY29uc3QgY2hpbGRGaWVsZFBhdGggPSBwYXRoU2VnbWVudHMuc2xpY2UoaSArIDEpLmpvaW4oJy4nKVxuXG4gICAgICAgICAgaWYgKGZpZWxkLnZhbGlkID09PSBmYWxzZSAmJiBjaGlsZEZpZWxkUGF0aCkge1xuICAgICAgICAgICAgbmV3RmllbGRSb3dzW2ZpZWxkUGF0aF1bcm93SW5kZXhdLmNoaWxkRXJyb3JQYXRocy5hZGQoYCR7ZmllbGRQYXRofS4ke2NoaWxkRmllbGRQYXRofWApXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSlcblxuICAgIC8vIE5vdyBsb29wIG92ZXIgYWxsIGZpZWxkcyB3aXRoIHJvd3MgLVxuICAgIC8vIGlmIGFueXRoaW5nIGNoYW5nZWQsIGRpc3BhdGNoIGFuIHVwZGF0ZSBmb3IgdGhlIGZpZWxkXG4gICAgLy8gd2l0aCB0aGUgbmV3IHJvdyBzdGF0ZVxuICAgIE9iamVjdC5lbnRyaWVzKG5ld0ZpZWxkUm93cykuZm9yRWFjaCgoW3BhdGgsIG5ld1Jvd3NdKSA9PiB7XG4gICAgICBjb25zdCBzdGF0ZU1hdGNoZXMgPSBuZXdSb3dzLmV2ZXJ5KChuZXdSb3csIGkpID0+IHtcbiAgICAgICAgY29uc3QgZXhpc3RpbmdSb3dFcnJvclBhdGhzID0gZXhpc3RpbmdGaWVsZFJvd3NbcGF0aF1baV0/LmNoaWxkRXJyb3JQYXRoc1xuICAgICAgICByZXR1cm4gc2V0c0FyZUVxdWFsKG5ld1Jvdy5jaGlsZEVycm9yUGF0aHMsIGV4aXN0aW5nUm93RXJyb3JQYXRocylcbiAgICAgIH0pXG5cbiAgICAgIGlmICghc3RhdGVNYXRjaGVzKSB7XG4gICAgICAgIGRpc3BhdGNoRmllbGRzKHtcbiAgICAgICAgICBwYXRoLFxuICAgICAgICAgIHJvd3M6IG5ld1Jvd3MsXG4gICAgICAgICAgdHlwZTogJ1VQREFURScsXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfSlcbiAgfSwgW2ZpZWxkcywgZGlzcGF0Y2hGaWVsZHNdKVxuXG4gIGNvbnN0IHZhbGlkYXRlRm9ybSA9IHVzZUNhbGxiYWNrKGFzeW5jICgpID0+IHtcbiAgICBjb25zdCB2YWxpZGF0ZWRGaWVsZFN0YXRlID0ge31cbiAgICBsZXQgaXNWYWxpZCA9IHRydWVcbiAgICBjb25zdCBkYXRhID0gY29udGV4dFJlZi5jdXJyZW50LmdldERhdGEoKVxuXG4gICAgY29uc3QgdmFsaWRhdGlvblByb21pc2VzID0gT2JqZWN0LmVudHJpZXMoY29udGV4dFJlZi5jdXJyZW50LmZpZWxkcykubWFwKFxuICAgICAgYXN5bmMgKFtwYXRoLCBmaWVsZF0pID0+IHtcbiAgICAgICAgY29uc3QgdmFsaWRhdGVkRmllbGQgPSB7XG4gICAgICAgICAgLi4uZmllbGQsXG4gICAgICAgICAgdmFsaWQ6IHRydWUsXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZmllbGQucGFzc2VzQ29uZGl0aW9uICE9PSBmYWxzZSkge1xuICAgICAgICAgIGxldCB2YWxpZGF0aW9uUmVzdWx0OiBib29sZWFuIHwgc3RyaW5nID0gdHJ1ZVxuXG4gICAgICAgICAgaWYgKHR5cGVvZiBmaWVsZC52YWxpZGF0ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgbGV0IHZhbHVlVG9WYWxpZGF0ZSA9IGZpZWxkLnZhbHVlXG5cbiAgICAgICAgICAgIGlmIChmaWVsZD8ucm93cyAmJiBBcnJheS5pc0FycmF5KGZpZWxkLnJvd3MpKSB7XG4gICAgICAgICAgICAgIHZhbHVlVG9WYWxpZGF0ZSA9IGNvbnRleHRSZWYuY3VycmVudC5nZXREYXRhQnlQYXRoKHBhdGgpXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZhbGlkYXRpb25SZXN1bHQgPSBhd2FpdCBmaWVsZC52YWxpZGF0ZSh2YWx1ZVRvVmFsaWRhdGUsIHtcbiAgICAgICAgICAgICAgaWQsXG4gICAgICAgICAgICAgIGNvbmZpZyxcbiAgICAgICAgICAgICAgZGF0YSxcbiAgICAgICAgICAgICAgb3BlcmF0aW9uLFxuICAgICAgICAgICAgICBzaWJsaW5nRGF0YTogY29udGV4dFJlZi5jdXJyZW50LmdldFNpYmxpbmdEYXRhKHBhdGgpLFxuICAgICAgICAgICAgICB0LFxuICAgICAgICAgICAgICB1c2VyLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAodHlwZW9mIHZhbGlkYXRpb25SZXN1bHQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICB2YWxpZGF0ZWRGaWVsZC5lcnJvck1lc3NhZ2UgPSB2YWxpZGF0aW9uUmVzdWx0XG4gICAgICAgICAgICB2YWxpZGF0ZWRGaWVsZC52YWxpZCA9IGZhbHNlXG4gICAgICAgICAgICBpc1ZhbGlkID0gZmFsc2VcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB2YWxpZGF0ZWRGaWVsZFN0YXRlW3BhdGhdID0gdmFsaWRhdGVkRmllbGRcbiAgICAgIH0sXG4gICAgKVxuXG4gICAgYXdhaXQgUHJvbWlzZS5hbGwodmFsaWRhdGlvblByb21pc2VzKVxuXG4gICAgaWYgKCFpc0RlZXBFcXVhbChjb250ZXh0UmVmLmN1cnJlbnQuZmllbGRzLCB2YWxpZGF0ZWRGaWVsZFN0YXRlKSkge1xuICAgICAgZGlzcGF0Y2hGaWVsZHMoeyBzdGF0ZTogdmFsaWRhdGVkRmllbGRTdGF0ZSwgdHlwZTogJ1JFUExBQ0VfU1RBVEUnIH0pXG4gICAgfVxuXG4gICAgcmV0dXJuIGlzVmFsaWRcbiAgfSwgW2NvbnRleHRSZWYsIGlkLCB1c2VyLCBvcGVyYXRpb24sIHQsIGRpc3BhdGNoRmllbGRzLCBjb25maWddKVxuXG4gIGNvbnN0IHN1Ym1pdCA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jIChvcHRpb25zOiBTdWJtaXRPcHRpb25zID0ge30sIGUpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgYWN0aW9uOiBhY3Rpb25Ub1VzZSA9IGFjdGlvbixcbiAgICAgICAgbWV0aG9kOiBtZXRob2RUb1VzZSA9IG1ldGhvZCxcbiAgICAgICAgb3ZlcnJpZGVzID0ge30sXG4gICAgICAgIHNraXBWYWxpZGF0aW9uLFxuICAgICAgfSA9IG9wdGlvbnNcblxuICAgICAgaWYgKGRpc2FibGVkKSB7XG4gICAgICAgIGlmIChlKSB7XG4gICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGlmIChlKSB7XG4gICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICB9XG5cbiAgICAgIHNldFByb2Nlc3NpbmcodHJ1ZSlcblxuICAgICAgaWYgKHdhaXRGb3JBdXRvY29tcGxldGUpIGF3YWl0IHdhaXQoMTAwKVxuXG4gICAgICBjb25zdCBpc1ZhbGlkID0gc2tpcFZhbGlkYXRpb24gPyB0cnVlIDogYXdhaXQgY29udGV4dFJlZi5jdXJyZW50LnZhbGlkYXRlRm9ybSgpXG4gICAgICBjb250ZXh0UmVmLmN1cnJlbnQuYnVpbGRSb3dFcnJvcnMoKVxuXG4gICAgICBpZiAoIXNraXBWYWxpZGF0aW9uKSBzZXRTdWJtaXR0ZWQodHJ1ZSlcblxuICAgICAgLy8gSWYgbm90IHZhbGlkLCBwcmV2ZW50IHN1Ym1pc3Npb25cbiAgICAgIGlmICghaXNWYWxpZCkge1xuICAgICAgICB0b2FzdC5lcnJvcih0KCdlcnJvcjpjb3JyZWN0SW52YWxpZEZpZWxkcycpKVxuICAgICAgICBzZXRQcm9jZXNzaW5nKGZhbHNlKVxuXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICAvLyBJZiBzdWJtaXQgaGFuZGxlciBjb21lcyB0aHJvdWdoIHZpYSBwcm9wcywgcnVuIHRoYXRcbiAgICAgIGlmIChvblN1Ym1pdCkge1xuICAgICAgICBjb25zdCBkYXRhID0ge1xuICAgICAgICAgIC4uLnJlZHVjZUZpZWxkc1RvVmFsdWVzKGZpZWxkcywgdHJ1ZSksXG4gICAgICAgICAgLi4ub3ZlcnJpZGVzLFxuICAgICAgICB9XG5cbiAgICAgICAgb25TdWJtaXQoZmllbGRzLCBkYXRhKVxuICAgICAgfVxuXG4gICAgICBjb25zdCBmb3JtRGF0YSA9IGNvbnRleHRSZWYuY3VycmVudC5jcmVhdGVGb3JtRGF0YShvdmVycmlkZXMpXG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IHJlcXVlc3RzW21ldGhvZFRvVXNlLnRvTG93ZXJDYXNlKCldKGFjdGlvblRvVXNlLCB7XG4gICAgICAgICAgYm9keTogZm9ybURhdGEsXG4gICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgJ0FjY2VwdC1MYW5ndWFnZSc6IGkxOG4ubGFuZ3VhZ2UsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcblxuICAgICAgICBzZXRNb2RpZmllZChmYWxzZSlcblxuICAgICAgICBpZiAodHlwZW9mIGhhbmRsZVJlc3BvbnNlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgaGFuZGxlUmVzcG9uc2UocmVzKVxuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG5cbiAgICAgICAgc2V0UHJvY2Vzc2luZyhmYWxzZSlcblxuICAgICAgICBjb25zdCBjb250ZW50VHlwZSA9IHJlcy5oZWFkZXJzLmdldCgnY29udGVudC10eXBlJylcbiAgICAgICAgY29uc3QgaXNKU09OID0gY29udGVudFR5cGUgJiYgY29udGVudFR5cGUuaW5kZXhPZignYXBwbGljYXRpb24vanNvbicpICE9PSAtMVxuXG4gICAgICAgIGxldCBqc29uOiBhbnkgPSB7fVxuXG4gICAgICAgIGlmIChpc0pTT04pIGpzb24gPSBhd2FpdCByZXMuanNvbigpXG5cbiAgICAgICAgaWYgKHJlcy5zdGF0dXMgPCA0MDApIHtcbiAgICAgICAgICBzZXRTdWJtaXR0ZWQoZmFsc2UpXG5cbiAgICAgICAgICBpZiAodHlwZW9mIG9uU3VjY2VzcyA9PT0gJ2Z1bmN0aW9uJykgb25TdWNjZXNzKGpzb24pXG5cbiAgICAgICAgICBpZiAocmVkaXJlY3QpIHtcbiAgICAgICAgICAgIGNvbnN0IGRlc3RpbmF0aW9uID0ge1xuICAgICAgICAgICAgICBwYXRobmFtZTogcmVkaXJlY3QsXG4gICAgICAgICAgICAgIHN0YXRlOiB7fSxcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHR5cGVvZiBqc29uID09PSAnb2JqZWN0JyAmJiBqc29uLm1lc3NhZ2UgJiYgIWRpc2FibGVTdWNjZXNzU3RhdHVzKSB7XG4gICAgICAgICAgICAgIGRlc3RpbmF0aW9uLnN0YXRlID0ge1xuICAgICAgICAgICAgICAgIHN0YXR1czogW1xuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBqc29uLm1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdzdWNjZXNzJyxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBoaXN0b3J5LnB1c2goZGVzdGluYXRpb24pXG4gICAgICAgICAgfSBlbHNlIGlmICghZGlzYWJsZVN1Y2Nlc3NTdGF0dXMpIHtcbiAgICAgICAgICAgIHRvYXN0LnN1Y2Nlc3MoanNvbi5tZXNzYWdlIHx8IHQoJ3N1Ym1pc3Npb25TdWNjZXNzZnVsJyksIHsgYXV0b0Nsb3NlOiAzMDAwIH0pXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnRleHRSZWYuY3VycmVudCA9IHsgLi4uY29udGV4dFJlZi5jdXJyZW50IH0gLy8gdHJpZ2dlcnMgcmVyZW5kZXIgb2YgYWxsIGNvbXBvbmVudHMgdGhhdCBzdWJzY3JpYmUgdG8gZm9ybVxuXG4gICAgICAgICAgaWYgKGpzb24ubWVzc2FnZSkge1xuICAgICAgICAgICAgdG9hc3QuZXJyb3IoanNvbi5tZXNzYWdlKVxuXG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShqc29uLmVycm9ycykpIHtcbiAgICAgICAgICAgIGNvbnN0IFtmaWVsZEVycm9ycywgbm9uRmllbGRFcnJvcnNdID0ganNvbi5lcnJvcnMucmVkdWNlKFxuICAgICAgICAgICAgICAoW2ZpZWxkRXJycywgbm9uRmllbGRFcnJzXSwgZXJyKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV3RmllbGRFcnJzID0gW11cbiAgICAgICAgICAgICAgICBjb25zdCBuZXdOb25GaWVsZEVycnMgPSBbXVxuXG4gICAgICAgICAgICAgICAgaWYgKGVycj8ubWVzc2FnZSkge1xuICAgICAgICAgICAgICAgICAgbmV3Tm9uRmllbGRFcnJzLnB1c2goZXJyKVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGVycj8uZGF0YSkpIHtcbiAgICAgICAgICAgICAgICAgIGVyci5kYXRhLmZvckVhY2goKGRhdGFFcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YUVycm9yPy5maWVsZCkge1xuICAgICAgICAgICAgICAgICAgICAgIG5ld0ZpZWxkRXJycy5wdXNoKGRhdGFFcnJvcilcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICBuZXdOb25GaWVsZEVycnMucHVzaChkYXRhRXJyb3IpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgIFsuLi5maWVsZEVycnMsIC4uLm5ld0ZpZWxkRXJyc10sXG4gICAgICAgICAgICAgICAgICBbLi4ubm9uRmllbGRFcnJzLCAuLi5uZXdOb25GaWVsZEVycnNdLFxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgW1tdLCBbXV0sXG4gICAgICAgICAgICApXG5cbiAgICAgICAgICAgIGZpZWxkRXJyb3JzLmZvckVhY2goKGVycikgPT4ge1xuICAgICAgICAgICAgICBkaXNwYXRjaEZpZWxkcyh7XG4gICAgICAgICAgICAgICAgdHlwZTogJ1VQREFURScsXG4gICAgICAgICAgICAgICAgLi4uKGNvbnRleHRSZWYuY3VycmVudD8uZmllbGRzPy5bZXJyLmZpZWxkXSB8fCB7fSksXG4gICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlOiBlcnIubWVzc2FnZSxcbiAgICAgICAgICAgICAgICBwYXRoOiBlcnIuZmllbGQsXG4gICAgICAgICAgICAgICAgdmFsaWQ6IGZhbHNlLFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgbm9uRmllbGRFcnJvcnMuZm9yRWFjaCgoZXJyKSA9PiB7XG4gICAgICAgICAgICAgIHRvYXN0LmVycm9yKGVyci5tZXNzYWdlIHx8IHQoJ2Vycm9yOnVua25vd24nKSlcbiAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBlcnJvck1lc3NhZ2VzW3Jlcy5zdGF0dXNdIHx8IHQoJ2Vycm9yOnVua25vd24nKVxuXG4gICAgICAgICAgdG9hc3QuZXJyb3IobWVzc2FnZSlcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIHNldFByb2Nlc3NpbmcoZmFsc2UpXG5cbiAgICAgICAgdG9hc3QuZXJyb3IoZXJyKVxuICAgICAgfVxuICAgIH0sXG4gICAgW1xuICAgICAgYWN0aW9uLFxuICAgICAgZGlzYWJsZVN1Y2Nlc3NTdGF0dXMsXG4gICAgICBkaXNhYmxlZCxcbiAgICAgIGRpc3BhdGNoRmllbGRzLFxuICAgICAgZmllbGRzLFxuICAgICAgaGFuZGxlUmVzcG9uc2UsXG4gICAgICBoaXN0b3J5LFxuICAgICAgbWV0aG9kLFxuICAgICAgb25TdWJtaXQsXG4gICAgICBvblN1Y2Nlc3MsXG4gICAgICByZWRpcmVjdCxcbiAgICAgIHQsXG4gICAgICBpMThuLFxuICAgICAgd2FpdEZvckF1dG9jb21wbGV0ZSxcbiAgICBdLFxuICApXG5cbiAgY29uc3QgdHJhdmVyc2VSb3dDb25maWdzID0gUmVhY3QudXNlQ2FsbGJhY2soXG4gICAgKHtcbiAgICAgIGZpZWxkQ29uZmlnLFxuICAgICAgcGF0aCxcbiAgICAgIHBhdGhQcmVmaXgsXG4gICAgfToge1xuICAgICAgZmllbGRDb25maWc6IEZpZWxkW11cbiAgICAgIHBhdGg6IHN0cmluZ1xuICAgICAgcGF0aFByZWZpeD86IHN0cmluZ1xuICAgIH0pID0+IHtcbiAgICAgIGNvbnN0IGNvbmZpZyA9IGZpZWxkQ29uZmlnXG4gICAgICBjb25zdCBwYXRoU2VnbWVudHMgPSBzcGxpdFBhdGhCeUFycmF5RmllbGRzKHBhdGgpXG4gICAgICBjb25zdCBjb25maWdNYXAgPSBidWlsZEZpZWxkU2NoZW1hTWFwKGNvbmZpZylcblxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwYXRoU2VnbWVudHMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgICAgY29uc3QgcGF0aFNlZ21lbnQgPSBwYXRoU2VnbWVudHNbaV1cblxuICAgICAgICBpZiAoaXNOdW1iZXIocGF0aFNlZ21lbnQpKSB7XG4gICAgICAgICAgY29uc3Qgcm93SW5kZXggPSBwYXJzZUludChwYXRoU2VnbWVudCwgMTApXG4gICAgICAgICAgY29uc3QgcGFyZW50RmllbGRQYXRoID0gcGF0aFNlZ21lbnRzLnNsaWNlKDAsIGkpLmpvaW4oJy4nKVxuICAgICAgICAgIGNvbnN0IHJlbWFpbmluZ1BhdGggPSBwYXRoU2VnbWVudHMuc2xpY2UoaSArIDEpLmpvaW4oJy4nKVxuICAgICAgICAgIGNvbnN0IGFycmF5RmllbGRQYXRoID0gcGF0aFByZWZpeCA/IGAke3BhdGhQcmVmaXh9LiR7cGFyZW50RmllbGRQYXRofWAgOiBwYXJlbnRGaWVsZFBhdGhcbiAgICAgICAgICBjb25zdCBwYXJlbnRBcnJheUZpZWxkID0gY29udGV4dFJlZi5jdXJyZW50LmdldEZpZWxkKGFycmF5RmllbGRQYXRoKVxuICAgICAgICAgIGNvbnN0IHJvd0ZpZWxkID0gcGFyZW50QXJyYXlGaWVsZC5yb3dzW3Jvd0luZGV4XVxuXG4gICAgICAgICAgaWYgKHJvd0ZpZWxkLmJsb2NrVHlwZSkge1xuICAgICAgICAgICAgY29uc3QgYmxvY2tDb25maWcgPSBjb25maWdNYXAuZ2V0KGAke3BhcmVudEZpZWxkUGF0aH0uJHtyb3dGaWVsZC5ibG9ja1R5cGV9YClcbiAgICAgICAgICAgIGlmIChibG9ja0NvbmZpZykge1xuICAgICAgICAgICAgICByZXR1cm4gdHJhdmVyc2VSb3dDb25maWdzKHtcbiAgICAgICAgICAgICAgICBmaWVsZENvbmZpZzogYmxvY2tDb25maWcsXG4gICAgICAgICAgICAgICAgcGF0aDogcmVtYWluaW5nUGF0aCxcbiAgICAgICAgICAgICAgICBwYXRoUHJlZml4OiBgJHthcnJheUZpZWxkUGF0aH0uJHtyb3dJbmRleH1gLFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEJsb2NrIGNvbmZpZyBub3QgZm91bmQgZm9yICR7cm93RmllbGQuYmxvY2tUeXBlfSBhdCBwYXRoICR7cGF0aH1gKVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdHJhdmVyc2VSb3dDb25maWdzKHtcbiAgICAgICAgICAgICAgZmllbGRDb25maWc6IGNvbmZpZ01hcC5nZXQocGFyZW50RmllbGRQYXRoKSxcbiAgICAgICAgICAgICAgcGF0aDogcmVtYWluaW5nUGF0aCxcbiAgICAgICAgICAgICAgcGF0aFByZWZpeDogYCR7YXJyYXlGaWVsZFBhdGh9LiR7cm93SW5kZXh9YCxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb25maWdcbiAgICB9LFxuICAgIFtdLFxuICApXG5cbiAgY29uc3QgZ2V0Um93U2NoZW1hQnlQYXRoID0gUmVhY3QudXNlQ2FsbGJhY2soXG4gICAgKHsgYmxvY2tUeXBlLCBwYXRoIH06IHsgYmxvY2tUeXBlPzogc3RyaW5nOyBwYXRoOiBzdHJpbmcgfSkgPT4ge1xuICAgICAgY29uc3Qgcm93Q29uZmlnID0gdHJhdmVyc2VSb3dDb25maWdzKHtcbiAgICAgICAgZmllbGRDb25maWc6IGZpZWxkc0Zyb21Qcm9wcyxcbiAgICAgICAgcGF0aCxcbiAgICAgIH0pXG4gICAgICBjb25zdCByb3dGaWVsZENvbmZpZ3MgPSBidWlsZEZpZWxkU2NoZW1hTWFwKHJvd0NvbmZpZylcbiAgICAgIGNvbnN0IHBhdGhTZWdtZW50cyA9IHNwbGl0UGF0aEJ5QXJyYXlGaWVsZHMocGF0aClcbiAgICAgIGNvbnN0IGZpZWxkS2V5ID0gcGF0aFNlZ21lbnRzLmF0KC0xKVxuICAgICAgcmV0dXJuIHJvd0ZpZWxkQ29uZmlncy5nZXQoYmxvY2tUeXBlID8gYCR7ZmllbGRLZXl9LiR7YmxvY2tUeXBlfWAgOiBmaWVsZEtleSlcbiAgICB9LFxuICAgIFt0cmF2ZXJzZVJvd0NvbmZpZ3MsIGZpZWxkc0Zyb21Qcm9wc10sXG4gIClcblxuICAvLyBBcnJheS9CbG9jayByb3cgbWFuaXB1bGF0aW9uLiBUaGlzIGlzIGNhbGxlZCB3aGVuLCBmb3IgZXhhbXBsZSwgeW91IGFkZCBhIG5ldyBibG9jayB0byBhIGJsb2NrcyBmaWVsZC5cbiAgLy8gVGhlIGJsb2NrIGRhdGEgaXMgc2F2ZWQgaW4gdGhlIHJvd3MgcHJvcGVydHkgb2YgdGhlIHN0YXRlLCB3aGljaCBpcyBtb2RpZmllZCB1cGRhdGVkIGhlcmUuXG4gIGNvbnN0IGFkZEZpZWxkUm93OiBDb250ZXh0WydhZGRGaWVsZFJvdyddID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKHsgZGF0YSwgcGF0aCwgcm93SW5kZXggfSkgPT4ge1xuICAgICAgY29uc3QgcHJlZmVyZW5jZXMgPSBhd2FpdCBnZXREb2NQcmVmZXJlbmNlcygpXG4gICAgICBjb25zdCByb3dTY2hlbWEgPSBnZXRSb3dTY2hlbWFCeVBhdGgoe1xuICAgICAgICBibG9ja1R5cGU6IGRhdGE/LmJsb2NrVHlwZSxcbiAgICAgICAgcGF0aCxcbiAgICAgIH0pXG5cbiAgICAgIGlmIChyb3dTY2hlbWEpIHtcbiAgICAgICAgY29uc3Qgc3ViRmllbGRTdGF0ZSA9IGF3YWl0IGJ1aWxkU3RhdGVGcm9tU2NoZW1hKHtcbiAgICAgICAgICBpZCxcbiAgICAgICAgICBjb25maWcsXG4gICAgICAgICAgZGF0YSxcbiAgICAgICAgICBmaWVsZFNjaGVtYTogcm93U2NoZW1hLFxuICAgICAgICAgIGxvY2FsZSxcbiAgICAgICAgICBvcGVyYXRpb24sXG4gICAgICAgICAgcHJlZmVyZW5jZXMsXG4gICAgICAgICAgdCxcbiAgICAgICAgICB1c2VyLFxuICAgICAgICB9KVxuXG4gICAgICAgIGRpc3BhdGNoRmllbGRzKHtcbiAgICAgICAgICBibG9ja1R5cGU6IGRhdGE/LmJsb2NrVHlwZSxcbiAgICAgICAgICBwYXRoLFxuICAgICAgICAgIHJvd0luZGV4LFxuICAgICAgICAgIHN1YkZpZWxkU3RhdGUsXG4gICAgICAgICAgdHlwZTogJ0FERF9ST1cnLFxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH0sXG4gICAgW2Rpc3BhdGNoRmllbGRzLCBnZXREb2NQcmVmZXJlbmNlcywgaWQsIHVzZXIsIG9wZXJhdGlvbiwgbG9jYWxlLCB0LCBnZXRSb3dTY2hlbWFCeVBhdGgsIGNvbmZpZ10sXG4gIClcblxuICBjb25zdCByZW1vdmVGaWVsZFJvdzogQ29udGV4dFsncmVtb3ZlRmllbGRSb3cnXSA9IHVzZUNhbGxiYWNrKFxuICAgICh7IHBhdGgsIHJvd0luZGV4IH0pID0+IHtcbiAgICAgIGRpc3BhdGNoRmllbGRzKHsgcGF0aCwgcm93SW5kZXgsIHR5cGU6ICdSRU1PVkVfUk9XJyB9KVxuICAgIH0sXG4gICAgW2Rpc3BhdGNoRmllbGRzXSxcbiAgKVxuXG4gIGNvbnN0IHJlcGxhY2VGaWVsZFJvdzogQ29udGV4dFsncmVwbGFjZUZpZWxkUm93J10gPSB1c2VDYWxsYmFjayhcbiAgICBhc3luYyAoeyBkYXRhLCBwYXRoLCByb3dJbmRleCB9KSA9PiB7XG4gICAgICBjb25zdCBwcmVmZXJlbmNlcyA9IGF3YWl0IGdldERvY1ByZWZlcmVuY2VzKClcbiAgICAgIGNvbnN0IHJvd1NjaGVtYSA9IGdldFJvd1NjaGVtYUJ5UGF0aCh7XG4gICAgICAgIGJsb2NrVHlwZTogZGF0YT8uYmxvY2tUeXBlLFxuICAgICAgICBwYXRoLFxuICAgICAgfSlcblxuICAgICAgaWYgKHJvd1NjaGVtYSkge1xuICAgICAgICBjb25zdCBzdWJGaWVsZFN0YXRlID0gYXdhaXQgYnVpbGRTdGF0ZUZyb21TY2hlbWEoe1xuICAgICAgICAgIGlkLFxuICAgICAgICAgIGNvbmZpZyxcbiAgICAgICAgICBkYXRhLFxuICAgICAgICAgIGZpZWxkU2NoZW1hOiByb3dTY2hlbWEsXG4gICAgICAgICAgbG9jYWxlLFxuICAgICAgICAgIG9wZXJhdGlvbixcbiAgICAgICAgICBwcmVmZXJlbmNlcyxcbiAgICAgICAgICB0LFxuICAgICAgICAgIHVzZXIsXG4gICAgICAgIH0pXG4gICAgICAgIGRpc3BhdGNoRmllbGRzKHtcbiAgICAgICAgICBibG9ja1R5cGU6IGRhdGE/LmJsb2NrVHlwZSxcbiAgICAgICAgICBwYXRoLFxuICAgICAgICAgIHJvd0luZGV4LFxuICAgICAgICAgIHN1YkZpZWxkU3RhdGUsXG4gICAgICAgICAgdHlwZTogJ1JFUExBQ0VfUk9XJyxcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9LFxuICAgIFtkaXNwYXRjaEZpZWxkcywgZ2V0RG9jUHJlZmVyZW5jZXMsIGlkLCB1c2VyLCBvcGVyYXRpb24sIGxvY2FsZSwgdCwgZ2V0Um93U2NoZW1hQnlQYXRoLCBjb25maWddLFxuICApXG5cbiAgY29uc3QgZ2V0RmllbGRzID0gdXNlQ2FsbGJhY2soKCkgPT4gY29udGV4dFJlZi5jdXJyZW50LmZpZWxkcywgW2NvbnRleHRSZWZdKVxuICBjb25zdCBnZXRGaWVsZCA9IHVzZUNhbGxiYWNrKChwYXRoOiBzdHJpbmcpID0+IGNvbnRleHRSZWYuY3VycmVudC5maWVsZHNbcGF0aF0sIFtjb250ZXh0UmVmXSlcbiAgY29uc3QgZ2V0RGF0YSA9IHVzZUNhbGxiYWNrKFxuICAgICgpID0+IHJlZHVjZUZpZWxkc1RvVmFsdWVzKGNvbnRleHRSZWYuY3VycmVudC5maWVsZHMsIHRydWUpLFxuICAgIFtjb250ZXh0UmVmXSxcbiAgKVxuICBjb25zdCBnZXRTaWJsaW5nRGF0YSA9IHVzZUNhbGxiYWNrKFxuICAgIChwYXRoOiBzdHJpbmcpID0+IGdldFNpYmxpbmdEYXRhRnVuYyhjb250ZXh0UmVmLmN1cnJlbnQuZmllbGRzLCBwYXRoKSxcbiAgICBbY29udGV4dFJlZl0sXG4gIClcbiAgY29uc3QgZ2V0RGF0YUJ5UGF0aCA9IHVzZUNhbGxiYWNrPEdldERhdGFCeVBhdGg+KFxuICAgIChwYXRoOiBzdHJpbmcpID0+IGdldERhdGFCeVBhdGhGdW5jKGNvbnRleHRSZWYuY3VycmVudC5maWVsZHMsIHBhdGgpLFxuICAgIFtjb250ZXh0UmVmXSxcbiAgKVxuXG4gIGNvbnN0IGNyZWF0ZUZvcm1EYXRhID0gdXNlQ2FsbGJhY2soXG4gICAgKG92ZXJyaWRlczogYW55ID0ge30pID0+IHtcbiAgICAgIGNvbnN0IGRhdGEgPSByZWR1Y2VGaWVsZHNUb1ZhbHVlcyhjb250ZXh0UmVmLmN1cnJlbnQuZmllbGRzLCB0cnVlKVxuXG4gICAgICBjb25zdCBmaWxlID0gZGF0YT8uZmlsZVxuXG4gICAgICBpZiAoZmlsZSkge1xuICAgICAgICBkZWxldGUgZGF0YS5maWxlXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGRhdGFXaXRoT3ZlcnJpZGVzID0ge1xuICAgICAgICAuLi5kYXRhLFxuICAgICAgICAuLi5vdmVycmlkZXMsXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGRhdGFUb1NlcmlhbGl6ZSA9IHtcbiAgICAgICAgX3BheWxvYWQ6IEpTT04uc3RyaW5naWZ5KGRhdGFXaXRoT3ZlcnJpZGVzKSxcbiAgICAgICAgZmlsZSxcbiAgICAgIH1cblxuICAgICAgLy8gbnVsbEFzVW5kZWZpbmVkcyBpcyBpbXBvcnRhbnQgdG8gYWxsb3cgdXBsb2FkcyBhbmQgcmVsYXRpb25zaGlwIGZpZWxkcyB0byBjbGVhciB0aGVtc2VsdmVzXG4gICAgICBjb25zdCBmb3JtRGF0YSA9IHNlcmlhbGl6ZShkYXRhVG9TZXJpYWxpemUsIHsgaW5kaWNlczogdHJ1ZSwgbnVsbHNBc1VuZGVmaW5lZHM6IGZhbHNlIH0pXG4gICAgICByZXR1cm4gZm9ybURhdGFcbiAgICB9LFxuICAgIFtjb250ZXh0UmVmXSxcbiAgKVxuXG4gIGNvbnN0IHJlc2V0ID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKGZpZWxkU2NoZW1hOiBGaWVsZFtdLCBkYXRhOiB1bmtub3duKSA9PiB7XG4gICAgICBjb25zdCBwcmVmZXJlbmNlcyA9IGF3YWl0IGdldERvY1ByZWZlcmVuY2VzKClcbiAgICAgIGNvbnN0IHN0YXRlID0gYXdhaXQgYnVpbGRTdGF0ZUZyb21TY2hlbWEoe1xuICAgICAgICBpZCxcbiAgICAgICAgY29uZmlnLFxuICAgICAgICBkYXRhLFxuICAgICAgICBmaWVsZFNjaGVtYSxcbiAgICAgICAgbG9jYWxlLFxuICAgICAgICBvcGVyYXRpb24sXG4gICAgICAgIHByZWZlcmVuY2VzLFxuICAgICAgICB0LFxuICAgICAgICB1c2VyLFxuICAgICAgfSlcbiAgICAgIGNvbnRleHRSZWYuY3VycmVudCA9IHsgLi4uaW5pdENvbnRleHRTdGF0ZSB9IGFzIEZvcm1Db250ZXh0VHlwZVxuICAgICAgc2V0TW9kaWZpZWQoZmFsc2UpXG4gICAgICBkaXNwYXRjaEZpZWxkcyh7IHN0YXRlLCB0eXBlOiAnUkVQTEFDRV9TVEFURScgfSlcbiAgICB9LFxuICAgIFtpZCwgdXNlciwgb3BlcmF0aW9uLCBsb2NhbGUsIHQsIGRpc3BhdGNoRmllbGRzLCBnZXREb2NQcmVmZXJlbmNlcywgY29uZmlnXSxcbiAgKVxuXG4gIGNvbnN0IHJlcGxhY2VTdGF0ZSA9IHVzZUNhbGxiYWNrKFxuICAgIChzdGF0ZTogRmllbGRzKSA9PiB7XG4gICAgICBjb250ZXh0UmVmLmN1cnJlbnQgPSB7IC4uLmluaXRDb250ZXh0U3RhdGUgfSBhcyBGb3JtQ29udGV4dFR5cGVcbiAgICAgIHNldE1vZGlmaWVkKGZhbHNlKVxuICAgICAgZGlzcGF0Y2hGaWVsZHMoeyBzdGF0ZSwgdHlwZTogJ1JFUExBQ0VfU1RBVEUnIH0pXG4gICAgfSxcbiAgICBbZGlzcGF0Y2hGaWVsZHNdLFxuICApXG5cbiAgY29udGV4dFJlZi5jdXJyZW50LnN1Ym1pdCA9IHN1Ym1pdFxuICBjb250ZXh0UmVmLmN1cnJlbnQuZ2V0RmllbGRzID0gZ2V0RmllbGRzXG4gIGNvbnRleHRSZWYuY3VycmVudC5nZXRGaWVsZCA9IGdldEZpZWxkXG4gIGNvbnRleHRSZWYuY3VycmVudC5nZXREYXRhID0gZ2V0RGF0YVxuICBjb250ZXh0UmVmLmN1cnJlbnQuZ2V0U2libGluZ0RhdGEgPSBnZXRTaWJsaW5nRGF0YVxuICBjb250ZXh0UmVmLmN1cnJlbnQuZ2V0RGF0YUJ5UGF0aCA9IGdldERhdGFCeVBhdGhcbiAgY29udGV4dFJlZi5jdXJyZW50LnZhbGlkYXRlRm9ybSA9IHZhbGlkYXRlRm9ybVxuICBjb250ZXh0UmVmLmN1cnJlbnQuY3JlYXRlRm9ybURhdGEgPSBjcmVhdGVGb3JtRGF0YVxuICBjb250ZXh0UmVmLmN1cnJlbnQuc2V0TW9kaWZpZWQgPSBzZXRNb2RpZmllZFxuICBjb250ZXh0UmVmLmN1cnJlbnQuc2V0UHJvY2Vzc2luZyA9IHNldFByb2Nlc3NpbmdcbiAgY29udGV4dFJlZi5jdXJyZW50LnNldFN1Ym1pdHRlZCA9IHNldFN1Ym1pdHRlZFxuICBjb250ZXh0UmVmLmN1cnJlbnQuZGlzYWJsZWQgPSBkaXNhYmxlZFxuICBjb250ZXh0UmVmLmN1cnJlbnQuZm9ybVJlZiA9IGZvcm1SZWZcbiAgY29udGV4dFJlZi5jdXJyZW50LnJlc2V0ID0gcmVzZXRcbiAgY29udGV4dFJlZi5jdXJyZW50LnJlcGxhY2VTdGF0ZSA9IHJlcGxhY2VTdGF0ZVxuICBjb250ZXh0UmVmLmN1cnJlbnQuYnVpbGRSb3dFcnJvcnMgPSBidWlsZFJvd0Vycm9yc1xuICBjb250ZXh0UmVmLmN1cnJlbnQuYWRkRmllbGRSb3cgPSBhZGRGaWVsZFJvd1xuICBjb250ZXh0UmVmLmN1cnJlbnQucmVtb3ZlRmllbGRSb3cgPSByZW1vdmVGaWVsZFJvd1xuICBjb250ZXh0UmVmLmN1cnJlbnQucmVwbGFjZUZpZWxkUm93ID0gcmVwbGFjZUZpZWxkUm93XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAodHlwZW9mIHN1Ym1pdHRlZEZyb21Qcm9wcyA9PT0gJ2Jvb2xlYW4nKSBzZXRTdWJtaXR0ZWQoc3VibWl0dGVkRnJvbVByb3BzKVxuICB9LCBbc3VibWl0dGVkRnJvbVByb3BzXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChpbml0aWFsU3RhdGUpIHtcbiAgICAgIGNvbnRleHRSZWYuY3VycmVudCA9IHsgLi4uaW5pdENvbnRleHRTdGF0ZSB9IGFzIEZvcm1Db250ZXh0VHlwZVxuICAgICAgZGlzcGF0Y2hGaWVsZHMoeyBzdGF0ZTogaW5pdGlhbFN0YXRlLCB0eXBlOiAnUkVQTEFDRV9TVEFURScgfSlcbiAgICB9XG4gIH0sIFtpbml0aWFsU3RhdGUsIGRpc3BhdGNoRmllbGRzXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChpbml0aWFsRGF0YSkge1xuICAgICAgY29udGV4dFJlZi5jdXJyZW50ID0geyAuLi5pbml0Q29udGV4dFN0YXRlIH0gYXMgRm9ybUNvbnRleHRUeXBlXG4gICAgICBjb25zdCBidWlsdFN0YXRlID0gYnVpbGRJbml0aWFsU3RhdGUoaW5pdGlhbERhdGEpXG4gICAgICBzZXRGb3JtYXR0ZWRJbml0aWFsRGF0YShidWlsdFN0YXRlKVxuICAgICAgZGlzcGF0Y2hGaWVsZHMoeyBzdGF0ZTogYnVpbHRTdGF0ZSwgdHlwZTogJ1JFUExBQ0VfU1RBVEUnIH0pXG4gICAgfVxuICB9LCBbaW5pdGlhbERhdGEsIGRpc3BhdGNoRmllbGRzXSlcblxuICB1c2VUaHJvdHRsZWRFZmZlY3QoXG4gICAgKCkgPT4ge1xuICAgICAgcmVmcmVzaENvb2tpZSgpXG4gICAgfSxcbiAgICAxNTAwMCxcbiAgICBbZmllbGRzXSxcbiAgKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29udGV4dFJlZi5jdXJyZW50ID0geyAuLi5jb250ZXh0UmVmLmN1cnJlbnQgfSAvLyB0cmlnZ2VycyByZXJlbmRlciBvZiBhbGwgY29tcG9uZW50cyB0aGF0IHN1YnNjcmliZSB0byBmb3JtXG4gICAgc2V0TW9kaWZpZWQoZmFsc2UpXG4gIH0sIFtsb2NhbGVdKVxuXG4gIGNvbnN0IGNsYXNzZXMgPSBbY2xhc3NOYW1lLCBiYXNlQ2xhc3NdLmZpbHRlcihCb29sZWFuKS5qb2luKCcgJylcblxuICByZXR1cm4gKFxuICAgIDxmb3JtXG4gICAgICBhY3Rpb249e2FjdGlvbn1cbiAgICAgIGNsYXNzTmFtZT17Y2xhc3Nlc31cbiAgICAgIG1ldGhvZD17bWV0aG9kfVxuICAgICAgbm9WYWxpZGF0ZVxuICAgICAgb25TdWJtaXQ9eyhlKSA9PiBjb250ZXh0UmVmLmN1cnJlbnQuc3VibWl0KHt9LCBlKX1cbiAgICAgIHJlZj17Zm9ybVJlZn1cbiAgICA+XG4gICAgICA8Rm9ybUNvbnRleHQuUHJvdmlkZXIgdmFsdWU9e2NvbnRleHRSZWYuY3VycmVudH0+XG4gICAgICAgIDxGb3JtV2F0Y2hDb250ZXh0LlByb3ZpZGVyXG4gICAgICAgICAgdmFsdWU9e3tcbiAgICAgICAgICAgIGZpZWxkcyxcbiAgICAgICAgICAgIC4uLmNvbnRleHRSZWYuY3VycmVudCxcbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAgPFN1Ym1pdHRlZENvbnRleHQuUHJvdmlkZXIgdmFsdWU9e3N1Ym1pdHRlZH0+XG4gICAgICAgICAgICA8UHJvY2Vzc2luZ0NvbnRleHQuUHJvdmlkZXIgdmFsdWU9e3Byb2Nlc3Npbmd9PlxuICAgICAgICAgICAgICA8TW9kaWZpZWRDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXttb2RpZmllZH0+XG4gICAgICAgICAgICAgICAgPEZvcm1GaWVsZHNDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXtmaWVsZHNSZWR1Y2VyfT5cbiAgICAgICAgICAgICAgICAgIDxXYXRjaEZvcm1FcnJvcnMgYnVpbGRSb3dFcnJvcnM9e2J1aWxkUm93RXJyb3JzfSAvPlxuICAgICAgICAgICAgICAgICAge2NoaWxkcmVufVxuICAgICAgICAgICAgICAgIDwvRm9ybUZpZWxkc0NvbnRleHQuUHJvdmlkZXI+XG4gICAgICAgICAgICAgIDwvTW9kaWZpZWRDb250ZXh0LlByb3ZpZGVyPlxuICAgICAgICAgICAgPC9Qcm9jZXNzaW5nQ29udGV4dC5Qcm92aWRlcj5cbiAgICAgICAgICA8L1N1Ym1pdHRlZENvbnRleHQuUHJvdmlkZXI+XG4gICAgICAgIDwvRm9ybVdhdGNoQ29udGV4dC5Qcm92aWRlcj5cbiAgICAgIDwvRm9ybUNvbnRleHQuUHJvdmlkZXI+XG4gICAgPC9mb3JtPlxuICApXG59XG5cbmV4cG9ydCBkZWZhdWx0IEZvcm1cbiJdLCJuYW1lcyI6WyJiYXNlQ2xhc3MiLCJGb3JtIiwicHJvcHMiLCJpZCIsImNvbGxlY3Rpb24iLCJnZXREb2NQcmVmZXJlbmNlcyIsImdsb2JhbCIsInVzZURvY3VtZW50SW5mbyIsImFjdGlvbiIsImNoaWxkcmVuIiwiY2xhc3NOYW1lIiwiZGlzYWJsZVN1Y2Nlc3NTdGF0dXMiLCJkaXNhYmxlZCIsImZpZWxkcyIsImZpZWxkc0Zyb21Qcm9wcyIsImhhbmRsZVJlc3BvbnNlIiwiaW5pdGlhbERhdGEiLCJpbml0aWFsU3RhdGUiLCJtZXRob2QiLCJvblN1Ym1pdCIsIm9uU3VjY2VzcyIsInJlZGlyZWN0Iiwic3VibWl0dGVkIiwic3VibWl0dGVkRnJvbVByb3BzIiwid2FpdEZvckF1dG9jb21wbGV0ZSIsImhpc3RvcnkiLCJ1c2VIaXN0b3J5IiwiY29kZSIsImxvY2FsZSIsInVzZUxvY2FsZSIsImkxOG4iLCJ0IiwidXNlVHJhbnNsYXRpb24iLCJyZWZyZXNoQ29va2llIiwidXNlciIsInVzZUF1dGgiLCJvcGVyYXRpb24iLCJ1c2VPcGVyYXRpb24iLCJjb25maWciLCJ1c2VDb25maWciLCJtb2RpZmllZCIsInNldE1vZGlmaWVkIiwidXNlU3RhdGUiLCJwcm9jZXNzaW5nIiwic2V0UHJvY2Vzc2luZyIsInNldFN1Ym1pdHRlZCIsImZvcm1hdHRlZEluaXRpYWxEYXRhIiwic2V0Rm9ybWF0dGVkSW5pdGlhbERhdGEiLCJidWlsZEluaXRpYWxTdGF0ZSIsImZvcm1SZWYiLCJ1c2VSZWYiLCJjb250ZXh0UmVmIiwiaW5pdGlhbEZpZWxkU3RhdGUiLCJmaWVsZHNSZWR1Y2VyIiwidXNlUmVkdWNlciIsImZpZWxkUmVkdWNlciIsImRpc3BhdGNoRmllbGRzIiwiY3VycmVudCIsImJ1aWxkUm93RXJyb3JzIiwidXNlQ2FsbGJhY2siLCJleGlzdGluZ0ZpZWxkUm93cyIsIm5ld0ZpZWxkUm93cyIsIk9iamVjdCIsImVudHJpZXMiLCJmb3JFYWNoIiwicGF0aCIsImZpZWxkIiwicGF0aFNlZ21lbnRzIiwic3BsaXRQYXRoQnlBcnJheUZpZWxkcyIsImkiLCJsZW5ndGgiLCJmaWVsZFBhdGgiLCJzbGljZSIsImpvaW4iLCJmb3JtRmllbGQiLCJBcnJheSIsImlzQXJyYXkiLCJyb3dzIiwibWFwIiwiZXhpc3RpbmdSb3ciLCJjaGlsZEVycm9yUGF0aHMiLCJTZXQiLCJyb3dJbmRleCIsImNoaWxkRmllbGRQYXRoIiwidmFsaWQiLCJhZGQiLCJuZXdSb3dzIiwic3RhdGVNYXRjaGVzIiwiZXZlcnkiLCJuZXdSb3ciLCJleGlzdGluZ1Jvd0Vycm9yUGF0aHMiLCJzZXRzQXJlRXF1YWwiLCJ0eXBlIiwidmFsaWRhdGVGb3JtIiwidmFsaWRhdGVkRmllbGRTdGF0ZSIsImlzVmFsaWQiLCJkYXRhIiwiZ2V0RGF0YSIsInZhbGlkYXRpb25Qcm9taXNlcyIsInZhbGlkYXRlZEZpZWxkIiwicGFzc2VzQ29uZGl0aW9uIiwidmFsaWRhdGlvblJlc3VsdCIsInZhbGlkYXRlIiwidmFsdWVUb1ZhbGlkYXRlIiwidmFsdWUiLCJnZXREYXRhQnlQYXRoIiwic2libGluZ0RhdGEiLCJnZXRTaWJsaW5nRGF0YSIsImVycm9yTWVzc2FnZSIsIlByb21pc2UiLCJhbGwiLCJpc0RlZXBFcXVhbCIsInN0YXRlIiwic3VibWl0Iiwib3B0aW9ucyIsImUiLCJhY3Rpb25Ub1VzZSIsIm1ldGhvZFRvVXNlIiwib3ZlcnJpZGVzIiwic2tpcFZhbGlkYXRpb24iLCJwcmV2ZW50RGVmYXVsdCIsInN0b3BQcm9wYWdhdGlvbiIsIndhaXQiLCJ0b2FzdCIsImVycm9yIiwicmVkdWNlRmllbGRzVG9WYWx1ZXMiLCJmb3JtRGF0YSIsImNyZWF0ZUZvcm1EYXRhIiwicmVzIiwicmVxdWVzdHMiLCJ0b0xvd2VyQ2FzZSIsImJvZHkiLCJoZWFkZXJzIiwibGFuZ3VhZ2UiLCJjb250ZW50VHlwZSIsImdldCIsImlzSlNPTiIsImluZGV4T2YiLCJqc29uIiwic3RhdHVzIiwiZGVzdGluYXRpb24iLCJwYXRobmFtZSIsIm1lc3NhZ2UiLCJwdXNoIiwic3VjY2VzcyIsImF1dG9DbG9zZSIsImVycm9ycyIsImZpZWxkRXJyb3JzIiwibm9uRmllbGRFcnJvcnMiLCJyZWR1Y2UiLCJmaWVsZEVycnMiLCJub25GaWVsZEVycnMiLCJlcnIiLCJuZXdGaWVsZEVycnMiLCJuZXdOb25GaWVsZEVycnMiLCJkYXRhRXJyb3IiLCJlcnJvck1lc3NhZ2VzIiwidHJhdmVyc2VSb3dDb25maWdzIiwiUmVhY3QiLCJmaWVsZENvbmZpZyIsInBhdGhQcmVmaXgiLCJjb25maWdNYXAiLCJidWlsZEZpZWxkU2NoZW1hTWFwIiwicGF0aFNlZ21lbnQiLCJpc051bWJlciIsInBhcnNlSW50IiwicGFyZW50RmllbGRQYXRoIiwicmVtYWluaW5nUGF0aCIsImFycmF5RmllbGRQYXRoIiwicGFyZW50QXJyYXlGaWVsZCIsImdldEZpZWxkIiwicm93RmllbGQiLCJibG9ja1R5cGUiLCJibG9ja0NvbmZpZyIsIkVycm9yIiwiZ2V0Um93U2NoZW1hQnlQYXRoIiwicm93Q29uZmlnIiwicm93RmllbGRDb25maWdzIiwiZmllbGRLZXkiLCJhdCIsImFkZEZpZWxkUm93IiwicHJlZmVyZW5jZXMiLCJyb3dTY2hlbWEiLCJzdWJGaWVsZFN0YXRlIiwiYnVpbGRTdGF0ZUZyb21TY2hlbWEiLCJmaWVsZFNjaGVtYSIsInJlbW92ZUZpZWxkUm93IiwicmVwbGFjZUZpZWxkUm93IiwiZ2V0RmllbGRzIiwiZ2V0U2libGluZ0RhdGFGdW5jIiwiZ2V0RGF0YUJ5UGF0aEZ1bmMiLCJmaWxlIiwiZGF0YVdpdGhPdmVycmlkZXMiLCJkYXRhVG9TZXJpYWxpemUiLCJfcGF5bG9hZCIsIkpTT04iLCJzdHJpbmdpZnkiLCJzZXJpYWxpemUiLCJpbmRpY2VzIiwibnVsbHNBc1VuZGVmaW5lZHMiLCJyZXNldCIsImluaXRDb250ZXh0U3RhdGUiLCJyZXBsYWNlU3RhdGUiLCJ1c2VFZmZlY3QiLCJidWlsdFN0YXRlIiwidXNlVGhyb3R0bGVkRWZmZWN0IiwiY2xhc3NlcyIsImZpbHRlciIsIkJvb2xlYW4iLCJmb3JtIiwibm9WYWxpZGF0ZSIsInJlZiIsIkZvcm1Db250ZXh0IiwiUHJvdmlkZXIiLCJGb3JtV2F0Y2hDb250ZXh0IiwiU3VibWl0dGVkQ29udGV4dCIsIlByb2Nlc3NpbmdDb250ZXh0IiwiTW9kaWZpZWRDb250ZXh0IiwiRm9ybUZpZWxkc0NvbnRleHQiLCJXYXRjaEZvcm1FcnJvcnMiXSwibWFwcGluZ3MiOiJBQUFBLGtFQUFrRTs7OzsrQkFvckJsRTs7O2VBQUE7OztrRUFuckJ3QjtrQ0FDRTsrREFDa0Q7OEJBQzdDO2dDQUNKOytCQUNMOzBCQWFHOzhCQUNJO3dDQUNVOzZEQUN0QjtxQkFDUTsyRUFDTTtzQkFDUDt3QkFDRTs4QkFDTTt3QkFDTjttQ0FDRztpQ0FDRztxQ0FDSTswRUFDTjs2RUFDRzt5QkFRMUI7c0VBQ21COzhCQUNHO3NFQUNDO3VFQUNDO3lFQUNGOzZFQUNJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFakMsTUFBTUEsWUFBWTtBQUVsQixNQUFNQyxPQUF3QixDQUFDQztJQUM3QixNQUFNLEVBQUVDLEVBQUUsRUFBRUMsVUFBVSxFQUFFQyxpQkFBaUIsRUFBRUMsTUFBTSxFQUFFLEdBQUdDLElBQUFBLDZCQUFlO0lBRXJFLE1BQU0sRUFDSkMsTUFBTSxFQUNOQyxRQUFRLEVBQ1JDLFNBQVMsRUFDVEMsb0JBQW9CLEVBQ3BCQyxRQUFRLEVBQ1JDLFFBQVFDLGtCQUFrQlYsWUFBWVMsVUFBVVAsUUFBUU8sTUFBTSxFQUM5REUsY0FBYyxFQUNkQyxXQUFXLEVBQ1hDLFlBQVksRUFDWkMsTUFBTSxFQUNOQyxRQUFRLEVBQ1JDLFNBQVMsRUFDVEMsUUFBUSxFQUNSQyxXQUFXQyxrQkFBa0IsRUFDN0JDLG1CQUFtQixFQUNw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
@@ -1,7 +1,7 @@
1
1
  import type React from 'react';
2
2
  import type { Dispatch } from 'react';
3
3
  import type { User } from '../../../../auth/types';
4
- import type { Condition, Field as FieldConfig, Validate } from '../../../../fields/config/types';
4
+ import type { Condition, Field, Field as FieldConfig, Validate } from '../../../../fields/config/types';
5
5
  export type Row = {
6
6
  blockType?: string;
7
7
  childErrorPaths?: Set<string>;
@@ -34,6 +34,12 @@ export type Props = {
34
34
  className?: string;
35
35
  disableSuccessStatus?: boolean;
36
36
  disabled?: boolean;
37
+ /**
38
+ * By default, the form will get the field schema (not data) from the current document. If you pass this in, you can override that behavior.
39
+ * This is very useful for sub-forms, where the form's field schema is not necessarily the field schema of the current document (e.g. for the Blocks
40
+ * feature of the Lexical Rich Text field)
41
+ */
42
+ fields?: Field[];
37
43
  handleResponse?: (res: Response) => void;
38
44
  initialData?: Data;
39
45
  initialState?: Fields;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/admin/components/forms/Form/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAErC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAA;AAClD,OAAO,KAAK,EAAE,SAAS,EAAE,KAAK,IAAI,WAAW,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAA;AAEhG,MAAM,MAAM,GAAG,GAAG;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,eAAe,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC7B,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,EAAE,EAAE,MAAM,CAAA;CACX,CAAA;AAED,MAAM,MAAM,SAAS,GAAG;IACtB,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,YAAY,EAAE,OAAO,CAAA;IACrB,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,IAAI,CAAC,EAAE,GAAG,EAAE,CAAA;IACZ,KAAK,EAAE,OAAO,CAAA;IACd,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,KAAK,EAAE,OAAO,CAAA;CACf,CAAA;AAED,MAAM,MAAM,MAAM,GAAG;IACnB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAA;CAC1B,CAAA;AAED,MAAM,MAAM,IAAI,GAAG;IACjB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB,CAAA;AAED,MAAM,MAAM,KAAK,GAAG;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,cAAc,CAAC,EAAE,CAAC,GAAG,EAAE,QAAQ,KAAK,IAAI,CAAA;IACxC,WAAW,CAAC,EAAE,IAAI,CAAA;IAClB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,MAAM,CAAC,EAAE,QAAQ,GAAG,KAAK,GAAG,OAAO,GAAG,MAAM,CAAA;IAC5C,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,KAAK,IAAI,CAAA;IAC/C,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,mBAAmB,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAA;IACzC,mBAAmB,CAAC,EAAE,OAAO,CAAA;CAC9B,CAAA;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACnC,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB,CAAA;AAED,MAAM,MAAM,cAAc,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;AAChD,MAAM,MAAM,MAAM,GAAG,CACnB,OAAO,CAAC,EAAE,aAAa,EACvB,CAAC,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,eAAe,CAAC,KACjC,OAAO,CAAC,IAAI,CAAC,CAAA;AAClB,MAAM,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,CAAA;AACjD,MAAM,MAAM,cAAc,GAAG,CAAC,SAAS,CAAC,EAAE,GAAG,KAAK,QAAQ,CAAA;AAC1D,MAAM,MAAM,SAAS,GAAG,MAAM,MAAM,CAAA;AACpC,MAAM,MAAM,QAAQ,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,SAAS,CAAA;AAClD,MAAM,MAAM,OAAO,GAAG,MAAM,IAAI,CAAA;AAChC,MAAM,MAAM,cAAc,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;AACnD,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC,CAAA;AAC5D,MAAM,MAAM,WAAW,GAAG,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAA;AACrD,MAAM,MAAM,YAAY,GAAG,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,CAAA;AACvD,MAAM,MAAM,aAAa,GAAG,CAAC,UAAU,EAAE,OAAO,KAAK,IAAI,CAAA;AAEzD,MAAM,MAAM,KAAK,GAAG,CAAC,WAAW,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;AAEhF,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,eAAe,CAAA;CACtB,CAAA;AAED,MAAM,MAAM,MAAM,GAAG;IACnB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,QAAQ,CAAA;CACf,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,OAAO,CAAA;IACf,IAAI,EAAE,kBAAkB,CAAA;IACxB,IAAI,EAAE,IAAI,CAAA;CACX,CAAA;AAED,MAAM,MAAM,MAAM,GAAG;IACnB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,QAAQ,CAAA;CACf,GAAG,OAAO,CAAC,SAAS,CAAC,CAAA;AAEtB,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,YAAY,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,OAAO,GAAG;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,IAAI,EAAE,SAAS,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,IAAI,EAAE,aAAa,CAAA;CACpB,CAAA;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,eAAe,CAAA;CACtB,CAAA;AAED,MAAM,MAAM,QAAQ,GAAG;IACrB,aAAa,EAAE,MAAM,CAAA;IACrB,WAAW,EAAE,MAAM,CAAA;IACnB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,UAAU,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,SAAS,EAAE,OAAO,CAAA;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,sBAAsB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,KAAK,IAAI,CAAA;IAC7F,IAAI,EAAE,mBAAmB,CAAA;CAC1B,CAAA;AAED,MAAM,MAAM,sBAAsB,GAAG;IACnC,SAAS,EAAE,OAAO,CAAA;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,sBAAsB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,KAAK,IAAI,CAAA;IAC7F,IAAI,EAAE,wBAAwB,CAAA;CAC/B,CAAA;AAED,MAAM,MAAM,WAAW,GACnB,OAAO,GACP,aAAa,GACb,gBAAgB,GAChB,QAAQ,GACR,MAAM,GACN,UAAU,GACV,WAAW,GACX,aAAa,GACb,sBAAsB,GACtB,iBAAiB,GACjB,MAAM,CAAA;AAEV,MAAM,MAAM,iBAAiB,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAA;AAE/D,MAAM,MAAM,OAAO,GAAG;IACpB,WAAW,EAAE,CAAC,EACZ,IAAI,EACJ,IAAI,EACJ,QAAQ,GACT,EAAE;QACD,IAAI,CAAC,EAAE,IAAI,CAAA;QACX,IAAI,EAAE,MAAM,CAAA;QAIZ,QAAQ,CAAC,EAAE,MAAM,CAAA;KAClB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACnB,cAAc,EAAE,MAAM,IAAI,CAAA;IAC1B,cAAc,EAAE,cAAc,CAAA;IAC9B,QAAQ,EAAE,OAAO,CAAA;IACjB,cAAc,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAA;IACrC;;OAEG;IACH,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,KAAK,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAA;IAChD,OAAO,EAAE,OAAO,CAAA;IAChB,aAAa,EAAE,aAAa,CAAA;IAC5B,QAAQ,EAAE,QAAQ,CAAA;IAClB,SAAS,EAAE,SAAS,CAAA;IACpB,cAAc,EAAE,cAAc,CAAA;IAC9B,cAAc,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAA;IAChF,eAAe,EAAE,CAAC,EAChB,IAAI,EACJ,IAAI,EACJ,QAAQ,GACT,EAAE;QACD,IAAI,CAAC,EAAE,IAAI,CAAA;QACX,IAAI,EAAE,MAAM,CAAA;QACZ,QAAQ,EAAE,MAAM,CAAA;KACjB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACnB,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACrC,KAAK,EAAE,KAAK,CAAA;IACZ,WAAW,EAAE,WAAW,CAAA;IACxB,aAAa,EAAE,aAAa,CAAA;IAC5B,YAAY,EAAE,YAAY,CAAA;IAC1B,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,EAAE,YAAY,CAAA;CAC3B,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/admin/components/forms/Form/types.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,21 @@
1
1
  import React from 'react';
2
2
  import type { Props } from './types';
3
3
  import './index.scss';
4
+ /**
5
+ * If you send `fields` through, it will render those fields explicitly
6
+ * Otherwise, it will reduce your fields using the other provided props
7
+ * This is so that we can conditionally render fields before reducing them, if desired
8
+ * See the sidebar in '../collections/Edit/Default/index.tsx' for an example
9
+ *
10
+ * The state/data for the fields it renders is not managed by this component. Instead, every component it renders has
11
+ * their own handling of their own value, usually through the useField hook. This hook will get the field's value
12
+ * from the Form the field is in, using the field's path.
13
+ *
14
+ * Thus, if you would like to set the value of a field you render here, you must do so in the Form that contains the field, or in the
15
+ * Field component itself.
16
+ *
17
+ * All this component does is render the field's Field Components, and pass them the props they need to function.
18
+ **/
4
19
  declare const RenderFields: React.FC<Props>;
5
20
  export default RenderFields;
6
21
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/admin/components/forms/RenderFields/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAA;AAGlD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAQpC,OAAO,cAAc,CAAA;AAYrB,QAAA,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAkGjC,CAAA;AAED,eAAe,YAAY,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/admin/components/forms/RenderFields/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAA;AAGlD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAQpC,OAAO,cAAc,CAAA;AAQrB;;;;;;;;;;;;;;IAcI;AACJ,QAAA,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAkGjC,CAAA;AAED,eAAe,YAAY,CAAA"}