@1money/component-ui 0.0.75 → 0.0.76

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 (71) hide show
  1. package/es/components/ProForm/ProForm.js +46 -33
  2. package/es/components/ProForm/ProFormDependency.js +6 -16
  3. package/es/components/ProForm/ProFormItem.js +5 -7
  4. package/es/components/ProForm/ProFormList.js +112 -40
  5. package/es/components/ProForm/core/constants.d.ts +2 -0
  6. package/es/components/ProForm/core/constants.js +7 -1
  7. package/es/components/ProForm/core/devWarning.d.ts +3 -0
  8. package/es/components/ProForm/core/devWarning.js +22 -0
  9. package/es/components/ProForm/core/formStore.d.ts +10 -2
  10. package/es/components/ProForm/core/formStore.js +21 -2
  11. package/es/components/ProForm/core/hooks/useForm.js +246 -103
  12. package/es/components/ProForm/core/hooks/useFormCore.js +134 -28
  13. package/es/components/ProForm/core/interface.d.ts +124 -49
  14. package/es/components/ProForm/core/runRules.d.ts +44 -12
  15. package/es/components/ProForm/core/runRules.js +584 -133
  16. package/es/components/ProForm/core/useFormItem.d.ts +6 -7
  17. package/es/components/ProForm/core/useFormItem.js +44 -22
  18. package/es/components/ProForm/core/validationError.d.ts +13 -0
  19. package/es/components/ProForm/core/validationError.js +29 -0
  20. package/es/components/ProForm/fields/ProFormCheckboxGroup.js +19 -5
  21. package/es/components/ProForm/fields/ProFormFieldSet.js +51 -12
  22. package/es/components/ProForm/fields/ProFormRadioGroup.js +8 -3
  23. package/es/components/ProForm/fields/ProFormSelect.js +13 -7
  24. package/es/components/ProForm/fields/createProFormField.js +18 -25
  25. package/es/components/ProForm/hooks/useFieldRequest.js +10 -8
  26. package/es/components/ProForm/index.d.ts +2 -1
  27. package/es/components/ProForm/index.js +4 -1
  28. package/es/components/ProForm/interface.d.ts +31 -40
  29. package/es/components/ProForm/layouts/QueryFilter.js +24 -16
  30. package/es/components/ProForm/utils.d.ts +8 -0
  31. package/es/components/ProForm/utils.js +51 -3
  32. package/es/components/Table/core/useTableSetup.js +2 -2
  33. package/es/components/Table/interface.d.ts +1 -1
  34. package/es/index.css +1 -1
  35. package/lib/components/ProForm/ProForm.js +45 -32
  36. package/lib/components/ProForm/ProFormDependency.js +5 -15
  37. package/lib/components/ProForm/ProFormItem.js +5 -7
  38. package/lib/components/ProForm/ProFormList.js +110 -38
  39. package/lib/components/ProForm/core/constants.d.ts +2 -0
  40. package/lib/components/ProForm/core/constants.js +8 -2
  41. package/lib/components/ProForm/core/devWarning.d.ts +3 -0
  42. package/lib/components/ProForm/core/devWarning.js +29 -0
  43. package/lib/components/ProForm/core/formStore.d.ts +10 -2
  44. package/lib/components/ProForm/core/formStore.js +23 -2
  45. package/lib/components/ProForm/core/hooks/useForm.js +242 -99
  46. package/lib/components/ProForm/core/hooks/useFormCore.js +133 -27
  47. package/lib/components/ProForm/core/interface.d.ts +124 -49
  48. package/lib/components/ProForm/core/runRules.d.ts +44 -12
  49. package/lib/components/ProForm/core/runRules.js +587 -133
  50. package/lib/components/ProForm/core/useFormItem.d.ts +6 -7
  51. package/lib/components/ProForm/core/useFormItem.js +43 -21
  52. package/lib/components/ProForm/core/validationError.d.ts +13 -0
  53. package/lib/components/ProForm/core/validationError.js +36 -0
  54. package/lib/components/ProForm/fields/ProFormCheckboxGroup.js +18 -4
  55. package/lib/components/ProForm/fields/ProFormFieldSet.js +51 -12
  56. package/lib/components/ProForm/fields/ProFormRadioGroup.js +7 -2
  57. package/lib/components/ProForm/fields/ProFormSelect.js +13 -7
  58. package/lib/components/ProForm/fields/createProFormField.js +18 -25
  59. package/lib/components/ProForm/hooks/useFieldRequest.js +10 -8
  60. package/lib/components/ProForm/index.d.ts +2 -1
  61. package/lib/components/ProForm/index.js +10 -1
  62. package/lib/components/ProForm/interface.d.ts +31 -40
  63. package/lib/components/ProForm/layouts/QueryFilter.js +24 -16
  64. package/lib/components/ProForm/utils.d.ts +8 -0
  65. package/lib/components/ProForm/utils.js +52 -3
  66. package/lib/components/Table/core/useTableSetup.js +2 -2
  67. package/lib/components/Table/interface.d.ts +1 -1
  68. package/lib/index.css +1 -1
  69. package/package.json +1 -1
  70. package/scripts/mcp-server/examples.generated.json +42 -36
  71. package/scripts/mcp-server/index.generated.json +23 -67
@@ -138,7 +138,6 @@ var ProFormItemBase = function ProFormItemBase(props) {
138
138
  label = _mergedProps.label,
139
139
  description = _mergedProps.description,
140
140
  rules = _mergedProps.rules,
141
- required = _mergedProps.required,
142
141
  feedback = _mergedProps.feedback,
143
142
  validateStatus = _mergedProps.validateStatus,
144
143
  _mergedProps$classNam = _mergedProps.className,
@@ -156,23 +155,22 @@ var ProFormItemBase = function ProFormItemBase(props) {
156
155
  emptyText = _mergedProps$emptyTex === void 0 ? EMPTY_TEXT_DEFAULT : _mergedProps$emptyTex,
157
156
  valueEnum = _mergedProps.valueEnum,
158
157
  valuePropName = _mergedProps.valuePropName,
159
- validateDebounce = _mergedProps.validateDebounce;
158
+ validateDebounce = _mergedProps.validateDebounce,
159
+ validateTrigger = _mergedProps.validateTrigger;
160
160
  var mergedMode = modeProp !== null && modeProp !== void 0 ? modeProp : ctx.mode;
161
161
  var isReadonly = mergedMode === 'read';
162
162
  var _useFormItem = (0, _useFormItem2.useFormItem)({
163
163
  name: name,
164
164
  rules: rules,
165
- required: required,
166
165
  validateStatus: validateStatus,
167
166
  valuePropName: valuePropName,
168
- validateDebounce: validateDebounce
167
+ validateDebounce: validateDebounce,
168
+ validateTrigger: validateTrigger
169
169
  }),
170
170
  fieldError = _useFormItem.fieldError,
171
171
  fieldWarning = _useFormItem.fieldWarning,
172
- isRequired = _useFormItem.isRequired,
173
172
  size = _useFormItem.size,
174
173
  labelAlign = _useFormItem.labelAlign,
175
- requiredMark = _useFormItem.requiredMark,
176
174
  injectField = _useFormItem.injectField;
177
175
  // Register transform / valueType DURING render (idempotent ref writes, like
178
176
  // registerField): consumers rendered later in the same pass — e.g. a
@@ -321,4 +319,4 @@ var ProFormItemBase = function ProFormItemBase(props) {
321
319
  ProFormItemBase.displayName = 'ProFormItem';
322
320
  var ProFormItem = exports.ProFormItem = /*#__PURE__*/(0, _react.memo)(ProFormItemBase);
323
321
  var _default = exports["default"] = ProFormItem;
324
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9Qcm9Gb3JtSXRlbS5qcyIsImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvUHJvRm9ybS9Qcm9Gb3JtSXRlbS50c3giXSwibmFtZXMiOlsiX2pzeFJ1bnRpbWUiLCJyZXF1aXJlIiwiX3JlYWN0IiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfR3JpZCIsIl9UeXBvZ3JhcGh5IiwiX2NsYXNzbmFtZXMiLCJfdXNlRm9ybUl0ZW0yIiwiX2NvbnN0YW50cyIsIl9jb250ZXh0IiwiX2Zvcm1TdG9yZSIsIl9wYXRoVXRpbHMiLCJfY29uc3RhbnRzMiIsIl91dGlscyIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIkVNUFRZX1RFWFRfREVGQVVMVCIsInJlbmRlckJ5VmFsdWVUeXBlIiwidmFsdWVUeXBlIiwidmFsdWUiLCJwcm9wcyIsInVuZGVmaW5lZCIsInJlcGVhdCIsIlN0cmluZyIsImxlbmd0aCIsIm51bSIsIk51bWJlciIsImlzTmFOIiwidG9Mb2NhbGVTdHJpbmciLCJ2YWx1ZUVudW0iLCJvcHRpb25zIiwidmFsdWVFbnVtVG9PcHRpb25zIiwibWF0Y2giLCJmaW5kIiwibyIsImxhYmVsIiwiRGF0ZSIsImZvcm1hdERhdGVCeVBhdHRlcm4iLCJEQVRFX0ZPUk1BVCIsIkRBVEVfVElNRV9GT1JNQVQiLCJSZWFkb25seUNoaWxkQmFzZSIsIl9yZWYiLCJuYW1lIiwiY29udmVydFZhbHVlIiwicmVhZG9ubHlSZW5kZXIiLCJlbXB0eVRleHQiLCJzdG9yZSIsInVzZVByb0Zvcm1TdG9yZSIsIl91c2VTdG9yZVNlbGVjdG9yIiwidXNlU3RvcmVTZWxlY3RvciIsInN0YXRlIiwicmVzb2x2ZVZhbHVlIiwidmFsdWVzIiwic2hhbGxvd0VxdWFsQXJyYXlzIiwiX3VzZVN0b3JlU2VsZWN0b3IyIiwiX3NsaWNlZFRvQXJyYXkyIiwicmF3IiwiYWxsVmFsdWVzIiwibm9kZSIsImdldFN0YXRlIiwiX2pzeCIsImNoaWxkcmVuIiwicmVuZGVyZWQiLCJkaXNwbGF5TmFtZSIsIlJlYWRvbmx5Q2hpbGQiLCJtZW1vIiwiQ29udmVydFZhbHVlQ2hpbGRCYXNlIiwiX3JlZjIiLCJfcmVmMiR2YWx1ZVByb3BOYW1lIiwidmFsdWVQcm9wTmFtZSIsImNvbnZlcnRlZCIsIlJlYWN0IiwiY2xvbmVFbGVtZW50IiwiX2RlZmluZVByb3BlcnR5MiIsIkNvbnZlcnRWYWx1ZUNoaWxkIiwiUHJvRm9ybUl0ZW1CYXNlIiwiX2EiLCJjdHgiLCJ1c2VQcm9Gb3JtU3RhYmxlIiwibWVyZ2VkUHJvcHMiLCJmb3JtSXRlbVByb3BzIiwibWVyZ2VkIiwiYXNzaWduIiwiX2kiLCJfT2JqZWN0JGtleXMiLCJrZXlzIiwia2V5IiwiX21lcmdlZFByb3BzIiwiZGVzY3JpcHRpb24iLCJydWxlcyIsInJlcXVpcmVkIiwiZmVlZGJhY2siLCJ2YWxpZGF0ZVN0YXR1cyIsIl9tZXJnZWRQcm9wcyRjbGFzc05hbSIsImNsYXNzTmFtZSIsIl9tZXJnZWRQcm9wcyRwcmVmaXhDbCIsInByZWZpeENscyIsImhpZGRlbiIsInRyYW5zZm9ybSIsImNvbFByb3BzIiwibW9kZVByb3AiLCJtb2RlIiwiX21lcmdlZFByb3BzJGVtcHR5VGV4IiwidmFsaWRhdGVEZWJvdW5jZSIsIm1lcmdlZE1vZGUiLCJpc1JlYWRvbmx5IiwiX3VzZUZvcm1JdGVtIiwidXNlRm9ybUl0ZW0iLCJmaWVsZEVycm9yIiwiZmllbGRXYXJuaW5nIiwiaXNSZXF1aXJlZCIsInNpemUiLCJsYWJlbEFsaWduIiwicmVxdWlyZWRNYXJrIiwiaW5qZWN0RmllbGQiLCJvd25UcmFuc2Zvcm1SZWYiLCJ1c2VSZWYiLCJvd25WYWx1ZVR5cGVSZWYiLCJwcmV2VHJhbnNmb3JtIiwiY3VycmVudCIsInVucmVnaXN0ZXJUcmFuc2Zvcm0iLCJmbiIsInJlZ2lzdGVyVHJhbnNmb3JtIiwicHJldlZhbHVlVHlwZSIsInVucmVnaXN0ZXJWYWx1ZVR5cGUiLCJyZWdpc3RlclZhbHVlVHlwZSIsInVzZUVmZmVjdCIsInRyYW5zZm9ybVJlZyIsInZhbHVlVHlwZVJlZyIsInYiLCJjb250cm9sQ2hpbGQiLCJpbmplY3RlZCIsImlzVmFsaWRFbGVtZW50IiwiY2xhc3NlcyIsImNsYXNzbmFtZXMiLCJpdGVtR2FwIiwibGF5b3V0IiwiZ2FwU3R5bGUiLCJtYXJnaW5Cb3R0b20iLCJjb25jYXQiLCJzaGVsbCIsIl9qc3hzIiwiam9pbkNscyIsInN0eWxlIiwiVHlwb2dyYXBoeUxhYmVsIiwiYXMiLCJGT1JNX0xBQkVMX1NJWkVTIiwiY29sb3IiLCJGT1JNX0xBQkVMX0NPTE9SIiwiVHlwb2dyYXBoeUJvZHkiLCJGT1JNX0RFU0NSSVBUSU9OX1NJWkUiLCJGT1JNX0RFU0NSSVBUSU9OX0NPTE9SIiwiRk9STV9FUlJPUl9TSVpFIiwiRk9STV9FUlJPUl9DT0xPUiIsIkZPUk1fV0FSTklOR19TSVpFIiwiRk9STV9XQVJOSU5HX0NPTE9SIiwiRk9STV9GRUVEQkFDS19TSVpFIiwiRk9STV9GRUVEQkFDS19DT0xPUiIsImdyaWQiLCJfbWVyZ2VkJHNwYW4iLCJzcGFuIiwiREVGQVVMVF9DT0xfU1BBTiIsInNtIiwibWQiLCJsZyIsIkNvbCIsIlByb0Zvcm1JdGVtIiwiZXhwb3J0cyIsIl9kZWZhdWx0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUEsSUFBQUEsV0FBQSxHQUFBQyxPQUFBO0FDQUEsSUFBQUMsTUFBQSxHQUFBQyx1QkFBQSxDQUFBRixPQUFBO0FBRUEsSUFBQUcsS0FBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksV0FBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssV0FBQSxHQUFBSCx1QkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQU0sYUFBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8sVUFBQSxHQUFBUCxPQUFBO0FBWUEsSUFBQVEsUUFBQSxHQUFBUixPQUFBO0FBQ0EsSUFBQVMsVUFBQSxHQUFBVCxPQUFBO0FBQ0EsSUFBQVUsVUFBQSxHQUFBVixPQUFBO0FBQ0EsSUFBQVcsV0FBQSxHQUFBWCxPQUFBO0FBQ0EsSUFBQVksTUFBQSxHQUFBWixPQUFBO0FBQWlHLFNBQUFhLHlCQUFBQyxDQUFBLDZCQUFBQyxPQUFBLG1CQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFBLFlBQUFGLHdCQUFBLFlBQUFBLHlCQUFBQyxDQUFBLFdBQUFBLENBQUEsR0FBQUcsQ0FBQSxHQUFBRCxDQUFBLEtBQUFGLENBQUE7QUFBQSxTQUFBWix3QkFBQVksQ0FBQSxFQUFBRSxDQUFBLFNBQUFBLENBQUEsSUFBQUYsQ0FBQSxJQUFBQSxDQUFBLENBQUFJLFVBQUEsU0FBQUosQ0FBQSxlQUFBQSxDQUFBLGdCQUFBSyxPQUFBLENBQUFMLENBQUEsMEJBQUFBLENBQUEsc0JBQUFBLENBQUEsUUFBQUcsQ0FBQSxHQUFBSix3QkFBQSxDQUFBRyxDQUFBLE9BQUFDLENBQUEsSUFBQUEsQ0FBQSxDQUFBRyxHQUFBLENBQUFOLENBQUEsVUFBQUcsQ0FBQSxDQUFBSSxHQUFBLENBQUFQLENBQUEsT0FBQVEsQ0FBQSxLQUFBQyxTQUFBLFVBQUFDLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxjQUFBLElBQUFELE1BQUEsQ0FBQUUsd0JBQUEsV0FBQUMsQ0FBQSxJQUFBZCxDQUFBLG9CQUFBYyxDQUFBLE9BQUFDLGNBQUEsQ0FBQUMsSUFBQSxDQUFBaEIsQ0FBQSxFQUFBYyxDQUFBLFNBQUFHLENBQUEsR0FBQVAsQ0FBQSxHQUFBQyxNQUFBLENBQUFFLHdCQUFBLENBQUFiLENBQUEsRUFBQWMsQ0FBQSxVQUFBRyxDQUFBLEtBQUFBLENBQUEsQ0FBQVYsR0FBQSxJQUFBVSxDQUFBLENBQUFDLEdBQUEsSUFBQVAsTUFBQSxDQUFBQyxjQUFBLENBQUFKLENBQUEsRUFBQU0sQ0FBQSxFQUFBRyxDQUFBLElBQUFULENBQUEsQ0FBQU0sQ0FBQSxJQUFBZCxDQUFBLENBQUFjLENBQUEsWUFBQU4sQ0FBQSxjQUFBUixDQUFBLEVBQUFHLENBQUEsSUFBQUEsQ0FBQSxDQUFBZSxHQUFBLENBQUFsQixDQUFBLEVBQUFRLENBQUEsR0FBQUEsQ0FBQTtBQUdqRyxJQUFNVyxrQkFBa0IsR0FBRyxHQUFHO0FBRTlCO0FBQ0E7QUFDQTtBQUNBLFNBQVNDLGlCQUFpQkEsQ0FDeEJDLFNBQXVDLEVBQ3ZDQyxLQUFjLEVBQ2RDLEtBQTBDLEVBQUE7RUFFMUMsSUFBSUQsS0FBSyxLQUFLLElBQUksSUFBSUEsS0FBSyxLQUFLRSxTQUFTLElBQUlGLEtBQUssS0FBSyxFQUFFLEVBQUUsT0FBTyxJQUFJO0VBRXRFLFFBQVFELFNBQVM7SUFDZixLQUFLLFVBQVU7TUFDYixPQUFPLEdBQUcsQ0FBQ0ksTUFBTSxDQUFDQyxNQUFNLENBQUNKLEtBQUssQ0FBQyxDQUFDSyxNQUFNLENBQUM7SUFDekMsS0FBSyxRQUFRO01BQ1gsT0FBT0wsS0FBSyxHQUFHLElBQUksR0FBRyxLQUFLO0lBQzdCLEtBQUssT0FBTztNQUFFO1FBQ1osSUFBTU0sR0FBRyxHQUFHQyxNQUFNLENBQUNQLEtBQUssQ0FBQztRQUN6QixJQUFJTyxNQUFNLENBQUNDLEtBQUssQ0FBQ0YsR0FBRyxDQUFDLEVBQUUsT0FBT0YsTUFBTSxDQUFDSixLQUFLLENBQUM7UUFDM0MsT0FBT00sR0FBRyxDQUFDRyxjQUFjLENBQUEsQ0FBRTtNQUM3QjtJQUNBLEtBQUssUUFBUTtJQUNiLEtBQUssT0FBTztJQUNaLEtBQUssS0FBSztNQUFFO1FBQ1YsSUFBSSxDQUFDUixLQUFLLENBQUNTLFNBQVMsRUFBRSxPQUFPTixNQUFNLENBQUNKLEtBQUssQ0FBQztRQUMxQyxJQUFNVyxPQUFPLEdBQUcsSUFBQUMseUJBQWtCLEVBQUNYLEtBQUssQ0FBQ1MsU0FBUyxDQUFDO1FBQ25ELElBQU1HLEtBQUssR0FBR0YsT0FBTyxDQUFDRyxJQUFJLENBQUMsVUFBQ0MsQ0FBQztVQUFBLE9BQUtYLE1BQU0sQ0FBQ1csQ0FBQyxDQUFDZixLQUFLLENBQUMsS0FBS0ksTUFBTSxDQUFDSixLQUFLLENBQUM7UUFBQSxFQUFDO1FBQ3BFLE9BQU9hLEtBQUssR0FBR0EsS0FBSyxDQUFDRyxLQUFLLEdBQUdaLE1BQU0sQ0FBQ0osS0FBSyxDQUFDO01BQzVDO0lBQ0EsS0FBSyxNQUFNO01BQ1QsT0FBT0EsS0FBSyxZQUFZaUIsSUFBSSxHQUFHLElBQUFDLDBCQUFtQixFQUFDbEIsS0FBSyxFQUFFbUIsa0JBQVcsQ0FBQyxHQUFHZixNQUFNLENBQUNKLEtBQUssQ0FBQztJQUN4RixLQUFLLFVBQVU7TUFDYixPQUFPQSxLQUFLLFlBQVlpQixJQUFJLEdBQUcsSUFBQUMsMEJBQW1CLEVBQUNsQixLQUFLLEVBQUVvQix1QkFBZ0IsQ0FBQyxHQUFHaEIsTUFBTSxDQUFDSixLQUFLLENBQUM7SUFDN0YsS0FBSyxNQUFNO0lBQ1g7TUFDRSxPQUFPSSxNQUFNLENBQUNKLEtBQUssQ0FBQztFQUN4QjtBQUNGO0FBY0EsSUFBTXFCLGlCQUFpQixHQUEyQixTQUE1Q0EsaUJBQWlCQSxDQUFBQyxJQUFBLEVBT2xCO0VBQUEsSUFOSEMsSUFBSSxHQUFBRCxJQUFBLENBQUpDLElBQUk7SUFDSnhCLFNBQVMsR0FBQXVCLElBQUEsQ0FBVHZCLFNBQVM7SUFDVFcsU0FBUyxHQUFBWSxJQUFBLENBQVRaLFNBQVM7SUFDVGMsWUFBWSxHQUFBRixJQUFBLENBQVpFLFlBQVk7SUFDWkMsY0FBYyxHQUFBSCxJQUFBLENBQWRHLGNBQWM7SUFDZEMsU0FBUyxHQUFBSixJQUFBLENBQVRJLFNBQVM7RUFFVCxJQUFNQyxLQUFLLEdBQUcsSUFBQUMsd0JBQWUsRUFBQSxDQUFFO0VBQy9CO0VBQ0E7RUFDQSxJQUFBQyxpQkFBQSxHQUF5QixJQUFBQywyQkFBZ0IsRUFDdkNILEtBQUssRUFDTCxVQUFDSSxLQUFLO01BQUEsT0FBcUQsQ0FDekRSLElBQUksR0FBRyxJQUFBUyx1QkFBWSxFQUFDRCxLQUFLLENBQUNFLE1BQU0sRUFBRVYsSUFBSSxDQUFDLEdBQUdyQixTQUFTLEVBQ25EdUIsY0FBYyxHQUFHTSxLQUFLLENBQUNFLE1BQU0sR0FBRy9CLFNBQVMsQ0FDMUM7SUFBQSxHQUNEZ0MsNkJBQWtCLENBQ25CO0lBQUFDLGtCQUFBLE9BQUFDLGVBQUEsYUFBQVAsaUJBQUE7SUFQTVEsR0FBRyxHQUFBRixrQkFBQTtJQUFFRyxTQUFTLEdBQUFILGtCQUFBO0VBUXJCLElBQU1uQyxLQUFLLEdBQUd3QixZQUFZLElBQUlELElBQUksR0FBR0MsWUFBWSxDQUFDYSxHQUFHLEVBQUVkLElBQUksQ0FBQyxHQUFHYyxHQUFHO0VBRWxFLElBQUlaLGNBQWMsRUFBRTtJQUNsQixJQUFNYyxJQUFJLEdBQUdkLGNBQWMsQ0FBQ3pCLEtBQUssRUFBRXNDLFNBQVMsS0FBQSxJQUFBLElBQVRBLFNBQVMsS0FBQSxLQUFBLENBQUEsR0FBVEEsU0FBUyxHQUFJWCxLQUFLLENBQUNhLFFBQVEsQ0FBQSxDQUFFLENBQUNQLE1BQU0sQ0FBQztJQUN4RSxPQUFPLElBQUFRLGVBQUEsRUFBQSxNQUFBLEVBQUE7TUFBQUMsUUFBQSxFQUFPSCxJQUFJLEtBQUEsSUFBQSxJQUFKQSxJQUFJLEtBQUEsS0FBQSxDQUFBLEdBQUpBLElBQUksR0FBSWI7SUFBUyxDQUFBLENBQVE7RUFDekM7RUFFQSxJQUFJMUIsS0FBSyxLQUFLLElBQUksSUFBSUEsS0FBSyxLQUFLRSxTQUFTLElBQUlGLEtBQUssS0FBSyxFQUFFLEVBQUU7SUFDekQsT0FBTyxJQUFBeUMsZUFBQSxFQUFBLE1BQUEsRUFBQTtNQUFBQyxRQUFBLEVBQU9oQjtJQUFTLENBQUEsQ0FBUTtFQUNqQztFQUVBLElBQU1pQixRQUFRLEdBQUc3QyxpQkFBaUIsQ0FBQ0MsU0FBUyxFQUFFQyxLQUFLLEVBQUU7SUFBRVUsU0FBUyxFQUFUQTtFQUFTLENBQUUsQ0FBQztFQUNuRSxPQUFPLElBQUErQixlQUFBLEVBQUEsTUFBQSxFQUFBO0lBQUFDLFFBQUEsRUFBT0MsUUFBUSxLQUFBLElBQUEsSUFBUkEsUUFBUSxLQUFBLEtBQUEsQ0FBQSxHQUFSQSxRQUFRLEdBQUlqQjtFQUFTLENBQUEsQ0FBUTtBQUM3QyxDQUFDO0FBRURMLGlCQUFpQixDQUFDdUIsV0FBVyxHQUFHLHFCQUFxQjtBQUNyRCxJQUFNQyxhQUFhLGdCQUFHLElBQUFDLFdBQUksRUFBQ3pCLGlCQUFpQixDQUFDO0FBYTdDLElBQU0wQixxQkFBcUIsR0FBK0IsU0FBcERBLHFCQUFxQkEsQ0FBQUMsS0FBQSxFQUt0QjtFQUFBLElBSkh6QixJQUFJLEdBQUF5QixLQUFBLENBQUp6QixJQUFJO0lBQ0pDLFlBQVksR0FBQXdCLEtBQUEsQ0FBWnhCLFlBQVk7SUFBQXlCLG1CQUFBLEdBQUFELEtBQUEsQ0FDWkUsYUFBYTtJQUFiQSxhQUFhLEdBQUFELG1CQUFBLGNBQUcsT0FBTyxHQUFBQSxtQkFBQTtJQUN2QlAsUUFBUSxHQUFBTSxLQUFBLENBQVJOLFFBQVE7RUFFUixJQUFNZixLQUFLLEdBQUcsSUFBQUMsd0JBQWUsRUFBQSxDQUFFO0VBQy9CLElBQU1TLEdBQUcsR0FBRyxJQUFBUCwyQkFBZ0IsRUFBQ0gsS0FBSyxFQUFFLFVBQUNJLEtBQUs7SUFBQSxPQUFLLElBQUFDLHVCQUFZLEVBQUNELEtBQUssQ0FBQ0UsTUFBTSxFQUFFVixJQUFJLENBQUM7RUFBQSxFQUFDO0VBQ2hGLElBQU00QixTQUFTLEdBQUczQixZQUFZLEdBQUdBLFlBQVksQ0FBQ2EsR0FBRyxFQUFFZCxJQUFJLENBQUMsR0FBR2MsR0FBRztFQUM5RCxvQkFBT2UsaUJBQUssQ0FBQ0MsWUFBWSxDQUFDWCxRQUFRLE1BQUFZLGdCQUFBLGlCQUFLSixhQUFhLEVBQUdDLFNBQVMsQ0FBNkIsQ0FBQztBQUNoRyxDQUFDO0FBRURKLHFCQUFxQixDQUFDSCxXQUFXLEdBQUcseUJBQXlCO0FBQzdELElBQU1XLGlCQUFpQixnQkFBRyxJQUFBVCxXQUFJLEVBQUNDLHFCQUFxQixDQUFDO0FBRXJEO0FBQ0E7QUFDQTtBQUNBLElBQU1TLGVBQWUsR0FBeUIsU0FBeENBLGVBQWVBLENBQTBCdkQsS0FBSyxFQUFJO0VEOURwRCxJQUFJd0QsRUFBRTtFQytEUjtFQUNBO0VBQ0EsSUFBTUMsR0FBRyxHQUFHLElBQUFDLHlCQUFnQixFQUFBLENBQUU7RUFFOUI7RUFDQTtFQUNBO0VBQ0EsSUFBSUMsV0FBVyxHQUFHM0QsS0FBSztFQUN2QixJQUFJeUQsR0FBRyxDQUFDRyxhQUFhLEVBQUU7SUFDckIsSUFBTUMsTUFBTSxHQUFBekUsTUFBQSxDQUFBMEUsTUFBQSxDQUFBLENBQUEsQ0FBQSxFQUFpQ0wsR0FBRyxDQUFDRyxhQUFhLENBQUU7SUFDaEUsU0FBQUcsRUFBQSxNQUFBQyxZQUFBLEdBQWtCNUUsTUFBTSxDQUFDNkUsSUFBSSxDQUFDakUsS0FBSyxDQUFDLEVBQUErRCxFQUFBLEdBQUFDLFlBQUEsQ0FBQTVELE1BQUEsRUFBQTJELEVBQUEsSUFBRTtNQUFqQyxJQUFNRyxHQUFHLEdBQUFGLFlBQUEsQ0FBQUQsRUFBQTtNQUNaLElBQU1oRSxLQUFLLEdBQUlDLEtBQWlDLENBQUNrRSxHQUFHLENBQUM7TUFDckQsSUFBSW5FLEtBQUssS0FBS0UsU0FBUyxFQUFFNEQsTUFBTSxDQUFDSyxHQUFHLENBQUMsR0FBR25FLEtBQUs7SUFDOUM7SUFDQTRELFdBQVcsR0FBR0UsTUFBMEI7RUFDMUM7RUFFQSxJQUFBTSxZQUFBLEdBc0JJUixXQUFXO0lBckJibEIsUUFBUSxHQUFBMEIsWUFBQSxDQUFSMUIsUUFBUTtJQUNSbkIsSUFBSSxHQUFBNkMsWUFBQSxDQUFKN0MsSUFBSTtJQUNKUCxLQUFLLEdBQUFvRCxZQUFBLENBQUxwRCxLQUFLO0lBQ0xxRCxXQUFXLEdBQUFELFlBQUEsQ0FBWEMsV0FBVztJQUNYQyxLQUFLLEdBQUFGLFlBQUEsQ0FBTEUsS0FBSztJQUNMQyxRQUFRLEdBQUFILFlBQUEsQ0FBUkcsUUFBUTtJQUNSQyxRQUFRLEdBQUFKLFlBQUEsQ0FBUkksUUFBUTtJQUNSQyxjQUFjLEdBQUFMLFlBQUEsQ0FBZEssY0FBYztJQUFBQyxxQkFBQSxHQUFBTixZQUFBLENBQ2RPLFNBQVM7SUFBVEEsU0FBUyxHQUFBRCxxQkFBQSxjQUFHLEVBQUUsR0FBQUEscUJBQUE7SUFBQUUscUJBQUEsR0FBQVIsWUFBQSxDQUNkUyxTQUFTO0lBQVRBLFNBQVMsR0FBQUQscUJBQUEsY0FBRyxXQUFXLEdBQUFBLHFCQUFBO0lBQ3ZCRSxNQUFNLEdBQUFWLFlBQUEsQ0FBTlUsTUFBTTtJQUNOQyxTQUFTLEdBQUFYLFlBQUEsQ0FBVFcsU0FBUztJQUNUdkQsWUFBWSxHQUFBNEMsWUFBQSxDQUFaNUMsWUFBWTtJQUNaekIsU0FBUyxHQUFBcUUsWUFBQSxDQUFUckUsU0FBUztJQUNUMEIsY0FBYyxHQUFBMkMsWUFBQSxDQUFkM0MsY0FBYztJQUNkdUQsUUFBUSxHQUFBWixZQUFBLENBQVJZLFFBQVE7SUFDRkMsUUFBUSxHQUFBYixZQUFBLENBQWRjLElBQUk7SUFBQUMscUJBQUEsR0FBQWYsWUFBQSxDQUNKMUMsU0FBUztJQUFUQSxTQUFTLEdBQUF5RCxxQkFBQSxjQUFHdEYsa0JBQWtCLEdBQUFzRixxQkFBQTtJQUM5QnpFLFNBQVMsR0FBQTBELFlBQUEsQ0FBVDFELFNBQVM7SUFDVHdDLGFBQWEsR0FBQWtCLFlBQUEsQ0FBYmxCLGFBQWE7SUFDYmtDLGdCQUFnQixHQUFBaEIsWUFBQSxDQUFoQmdCLGdCQUFnQjtFQUdsQixJQUFNQyxVQUFVLEdBQUdKLFFBQVEsS0FBQSxJQUFBLElBQVJBLFFBQVEsS0FBQSxLQUFBLENBQUEsR0FBUkEsUUFBUSxHQUFJdkIsR0FBRyxDQUFDd0IsSUFBSTtFQUN2QyxJQUFNSSxVQUFVLEdBQUdELFVBQVUsS0FBSyxNQUFNO0VBRXhDLElBQUFFLFlBQUEsR0FRSSxJQUFBQyx5QkFBVyxFQUFDO01BQUVqRSxJQUFJLEVBQUpBLElBQUk7TUFBRStDLEtBQUssRUFBTEEsS0FBSztNQUFFQyxRQUFRLEVBQVJBLFFBQVE7TUFBRUUsY0FBYyxFQUFkQSxjQUFjO01BQUV2QixhQUFhLEVBQWJBLGFBQWE7TUFBRWtDLGdCQUFnQixFQUFoQkE7SUFBZ0IsQ0FBRSxDQUFDO0lBUHpGSyxVQUFVLEdBQUFGLFlBQUEsQ0FBVkUsVUFBVTtJQUNWQyxZQUFZLEdBQUFILFlBQUEsQ0FBWkcsWUFBWTtJQUNaQyxVQUFVLEdBQUFKLFlBQUEsQ0FBVkksVUFBVTtJQUNWQyxJQUFJLEdBQUFMLFlBQUEsQ0FBSkssSUFBSTtJQUNKQyxVQUFVLEdBQUFOLFlBQUEsQ0FBVk0sVUFBVTtJQUNWQyxZQUFZLEdBQUFQLFlBQUEsQ0FBWk8sWUFBWTtJQUNaQyxXQUFXLEdBQUFSLFlBQUEsQ0FBWFEsV0FBVztFQUdiO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSxJQUFNQyxlQUFlLEdBQUcsSUFBQUMsYUFBTSxFQUF1RCxJQUFJLENBQUM7RUFDMUYsSUFBTUMsZUFBZSxHQUFHLElBQUFELGFBQU0sRUFBdUQsSUFBSSxDQUFDO0VBRTFGLElBQU1FLGFBQWEsR0FBR0gsZUFBZSxDQUFDSSxPQUFPO0VBQzdDLElBQUlELGFBQWEsS0FBS0EsYUFBYSxDQUFDNUUsSUFBSSxLQUFLQSxJQUFJLElBQUksQ0FBQ3dELFNBQVMsQ0FBQyxFQUFFO0lBQ2hFckIsR0FBRyxDQUFDMkMsbUJBQW1CLENBQUNGLGFBQWEsQ0FBQzVFLElBQUksRUFBRTRFLGFBQWEsQ0FBQ0csRUFBRSxDQUFDO0lBQzdETixlQUFlLENBQUNJLE9BQU8sR0FBRyxJQUFJO0VBQ2hDO0VBQ0EsSUFBSTdFLElBQUksSUFBSXdELFNBQVMsRUFBRTtJQUNyQnJCLEdBQUcsQ0FBQzZDLGlCQUFpQixDQUFDaEYsSUFBSSxFQUFFd0QsU0FBUyxDQUFDO0lBQ3RDaUIsZUFBZSxDQUFDSSxPQUFPLEdBQUc7TUFBRTdFLElBQUksRUFBSkEsSUFBSTtNQUFFK0UsRUFBRSxFQUFFdkI7SUFBUyxDQUFFO0VBQ25EO0VBRUEsSUFBTXlCLGFBQWEsR0FBR04sZUFBZSxDQUFDRSxPQUFPO0VBQzdDLElBQUlJLGFBQWEsS0FBS0EsYUFBYSxDQUFDakYsSUFBSSxLQUFLQSxJQUFJLElBQUksQ0FBQ3hCLFNBQVMsQ0FBQyxFQUFFO0lBQ2hFMkQsR0FBRyxDQUFDK0MsbUJBQW1CLENBQUNELGFBQWEsQ0FBQ2pGLElBQUksRUFBRWlGLGFBQWEsQ0FBQ3pHLFNBQVMsQ0FBQztJQUNwRW1HLGVBQWUsQ0FBQ0UsT0FBTyxHQUFHLElBQUk7RUFDaEM7RUFDQSxJQUFJN0UsSUFBSSxJQUFJeEIsU0FBUyxFQUFFO0lBQ3JCMkQsR0FBRyxDQUFDZ0QsaUJBQWlCLENBQUNuRixJQUFJLEVBQUV4QixTQUFTLENBQUM7SUFDdENtRyxlQUFlLENBQUNFLE9BQU8sR0FBRztNQUFFN0UsSUFBSSxFQUFKQSxJQUFJO01BQUV4QixTQUFTLEVBQVRBO0lBQVMsQ0FBRTtFQUMvQztFQUVBLElBQUE0RyxnQkFBUyxFQUFDLFlBQUs7SUFDYjtJQUNBO0lBQ0E7SUFDQTtJQUNBLElBQU1DLFlBQVksR0FBR1osZUFBZSxDQUFDSSxPQUFPO0lBQzVDLElBQUlRLFlBQVksRUFBRWxELEdBQUcsQ0FBQzZDLGlCQUFpQixDQUFDSyxZQUFZLENBQUNyRixJQUFJLEVBQUVxRixZQUFZLENBQUNOLEVBQUUsQ0FBQztJQUMzRSxJQUFNTyxZQUFZLEdBQUdYLGVBQWUsQ0FBQ0UsT0FBTztJQUM1QyxJQUFJUyxZQUFZLEVBQUVuRCxHQUFHLENBQUNnRCxpQkFBaUIsQ0FBQ0csWUFBWSxDQUFDdEYsSUFBSSxFQUFFc0YsWUFBWSxDQUFDOUcsU0FBUyxDQUFDO0lBQ2xGLE9BQU8sWUFBSztNQUNWLElBQU1sQixDQUFDLEdBQUdtSCxlQUFlLENBQUNJLE9BQU87TUFDakMsSUFBSXZILENBQUMsRUFBRTZFLEdBQUcsQ0FBQzJDLG1CQUFtQixDQUFDeEgsQ0FBQyxDQUFDMEMsSUFBSSxFQUFFMUMsQ0FBQyxDQUFDeUgsRUFBRSxDQUFDO01BQzVDLElBQU1RLENBQUMsR0FBR1osZUFBZSxDQUFDRSxPQUFPO01BQ2pDLElBQUlVLENBQUMsRUFBRXBELEdBQUcsQ0FBQytDLG1CQUFtQixDQUFDSyxDQUFDLENBQUN2RixJQUFJLEVBQUV1RixDQUFDLENBQUMvRyxTQUFTLENBQUM7SUFDckQsQ0FBQztFQUNILENBQUMsRUFBRSxDQUFDd0IsSUFBSSxFQUFFbUMsR0FBRyxDQUFDNkMsaUJBQWlCLEVBQUU3QyxHQUFHLENBQUMyQyxtQkFBbUIsRUFBRTNDLEdBQUcsQ0FBQ2dELGlCQUFpQixFQUFFaEQsR0FBRyxDQUFDK0MsbUJBQW1CLENBQUMsQ0FBQztFQUUxRyxJQUFJM0IsTUFBTSxFQUFFLE9BQU8sSUFBSTtFQUV2QixJQUFJaUMsWUFBdUI7RUFDM0IsSUFBSXpCLFVBQVUsRUFBRTtJQUNkeUIsWUFBWSxHQUNWLElBQUF0RSxlQUFBLEVBQUNJLGFBQWEsRUFBQTtNQUNadEIsSUFBSSxFQUFFQSxJQUFJO01BQ1Z4QixTQUFTLEVBQUVBLFNBQVM7TUFDcEJXLFNBQVMsRUFBRUEsU0FBUztNQUNwQmMsWUFBWSxFQUFFQSxZQUFZO01BQzFCQyxjQUFjLEVBQUVBLGNBQWM7TUFDOUJDLFNBQVMsRUFBRUE7SUFBUyxDQUFBLENBRXZCO0VBQ0gsQ0FBQyxNQUFNO0lBQ0w7SUFDQTtJQUNBLElBQU1zRixRQUFRLEdBQUdqQixXQUFXLENBQUNyRCxRQUFRLENBQUM7SUFDdEMsSUFBSWxCLFlBQVksSUFBSUQsSUFBSSxpQkFBSTZCLGlCQUFLLENBQUM2RCxjQUFjLENBQUNELFFBQVEsQ0FBQyxFQUFFO01BQzFERCxZQUFZLEdBQ1YsSUFBQXRFLGVBQUEsRUFBQ2MsaUJBQWlCLEVBQUE7UUFBQ2hDLElBQUksRUFBRUEsSUFBSTtRQUFFQyxZQUFZLEVBQUVBLFlBQVk7UUFBRTBCLGFBQWEsRUFBRUEsYUFBYTtRQUFBUixRQUFBLEVBQ3BGc0U7TUFBOEIsQ0FBQSxDQUVsQztJQUNILENBQUMsTUFBTTtNQUNMRCxZQUFZLEdBQUdDLFFBQVE7SUFDekI7RUFDRjtFQUVBLElBQU1FLE9BQU8sR0FBRyxJQUFBQyxzQkFBVSxFQUFDdEMsU0FBUyxDQUFDO0VBRXJDO0VBQ0E7RUFDQSxJQUFNdUMsT0FBTyxHQUFHLENBQUEzRCxFQUFBLEdBQUFDLEdBQUcsQ0FBQzJELE1BQU0sTUFBQSxJQUFBLElBQUE1RCxFQUFBLEtBQUEsS0FBQSxDQUFBLEdBQUEsS0FBQSxDQUFBLEdBQUFBLEVBQUEsQ0FBRTJELE9BQU87RUFDbkMsSUFBTUUsUUFBUSxHQUNaRixPQUFPLEtBQUtsSCxTQUFTLEdBQ2pCO0lBQUVxSCxZQUFZLEVBQUUsT0FBT0gsT0FBTyxLQUFLLFFBQVEsTUFBQUksTUFBQSxDQUFNSixPQUFPLFVBQU9BO0VBQU8sQ0FBRSxHQUN4RWxILFNBQVM7RUFFZixJQUFNdUgsS0FBSyxHQUNULElBQUFDLGdCQUFBLEVBQUEsS0FBQSxFQUFBO0lBQ0UvQyxTQUFTLEVBQUV1QyxPQUFPLENBQ2hCaEgsU0FBUyxFQUNULElBQUF5SCxtQkFBTyxFQUFDVCxPQUFPLENBQUN0QixJQUFJLENBQUMsRUFBRWpCLFNBQVMsQ0FBQyxDQUNsQztJQUNEaUQsS0FBSyxFQUFFTixRQUFRO0lBQUE1RSxRQUFBLEVBQUEsQ0FFZDFCLEtBQUssSUFDSixJQUFBMEcsZ0JBQUEsRUFBQSxLQUFBLEVBQUE7TUFDRS9DLFNBQVMsRUFBRXVDLE9BQU8sQ0FDaEIsZUFBZSxFQUNmLElBQUFTLG1CQUFPLEVBQ0xULE9BQU8sQ0FBQyx3QkFBd0IsQ0FBQyxFQUNqQ3JCLFVBQVUsSUFBSXFCLE9BQU8sa0JBQUFNLE1BQUEsQ0FBa0IzQixVQUFVLENBQUUsQ0FBQyxDQUNyRCxDQUNGO01BQUFuRCxRQUFBLEVBQUEsQ0FFRCxJQUFBRCxlQUFBLEVBQUNvRiwyQkFBZSxFQUFBO1FBQ2RDLEVBQUUsRUFBQyxPQUFPO1FBQ1ZsQyxJQUFJLEVBQUVtQywyQkFBZ0IsQ0FBQ25DLElBQUksQ0FBQztRQUM1Qm9DLEtBQUssRUFBRUMsMkJBQWdCO1FBQ3ZCdEQsU0FBUyxFQUFFdUMsT0FBTyxDQUFDLE9BQU8sQ0FBQztRQUFBeEUsUUFBQSxFQUUxQjFCO01BQUssQ0FBQSxDQUNVLEVBQ2pCcUQsV0FBVyxJQUNWLElBQUE1QixlQUFBLEVBQUN5RiwwQkFBYyxFQUFBO1FBQ2JKLEVBQUUsRUFBQyxLQUFLO1FBQ1JuRCxTQUFTLEVBQUV1QyxPQUFPLENBQUMsYUFBYSxDQUFDO1FBQ2pDdEIsSUFBSSxFQUFFdUMsZ0NBQXFCO1FBQzNCSCxLQUFLLEVBQUVJLGlDQUFzQjtRQUFBMUYsUUFBQSxFQUU1QjJCO01BQVcsQ0FBQSxDQUVmO0lBQUEsQ0FBQSxDQUVKLEVBRUQsSUFBQXFELGdCQUFBLEVBQUEsS0FBQSxFQUFBO01BQUsvQyxTQUFTLEVBQUV1QyxPQUFPLENBQUMsU0FBUyxDQUFDO01BQUF4RSxRQUFBLEVBQUEsQ0FDL0JxRSxZQUFZLEVBRVp0QixVQUFVLElBQ1QsSUFBQWhELGVBQUEsRUFBQ3lGLDBCQUFjLEVBQUE7UUFDYkosRUFBRSxFQUFDLEtBQUs7UUFDUm5ELFNBQVMsRUFBRXVDLE9BQU8sQ0FBQyxPQUFPLENBQUM7UUFDM0J0QixJQUFJLEVBQUV5QywwQkFBZTtRQUNyQkwsS0FBSyxFQUFFTSwyQkFBZ0I7UUFBQTVGLFFBQUEsRUFFdEIrQztNQUFVLENBQUEsQ0FFZCxFQUVBLENBQUNBLFVBQVUsSUFBSUMsWUFBWSxJQUMxQixJQUFBakQsZUFBQSxFQUFDeUYsMEJBQWMsRUFBQTtRQUNiSixFQUFFLEVBQUMsS0FBSztRQUNSbkQsU0FBUyxFQUFFdUMsT0FBTyxDQUFDLFNBQVMsQ0FBQztRQUM3QnRCLElBQUksRUFBRTJDLDRCQUFpQjtRQUN2QlAsS0FBSyxFQUFFUSw2QkFBa0I7UUFBQTlGLFFBQUEsRUFFeEJnRDtNQUFZLENBQUEsQ0FFaEIsRUFFQSxDQUFDRCxVQUFVLElBQUksQ0FBQ0MsWUFBWSxJQUFJbEIsUUFBUSxJQUN2QyxJQUFBL0IsZUFBQSxFQUFDeUYsMEJBQWMsRUFBQTtRQUNiSixFQUFFLEVBQUMsS0FBSztRQUNSbkQsU0FBUyxFQUFFdUMsT0FBTyxDQUFDLFVBQVUsQ0FBQztRQUM5QnRCLElBQUksRUFBRTZDLDZCQUFrQjtRQUN4QlQsS0FBSyxFQUFFVSw4QkFBbUI7UUFBQWhHLFFBQUEsRUFFekI4QjtNQUFRLENBQUEsQ0FFWjtJQUFBLENBQUEsQ0FDRztFQUFBLENBQUEsQ0FFVDtFQUVELElBQUlkLEdBQUcsQ0FBQ2lGLElBQUksRUFBRTtJQUNaLElBQU03RSxPQUFNLEdBQUF6RSxNQUFBLENBQUEwRSxNQUFBLENBQUExRSxNQUFBLENBQUEwRSxNQUFBLENBQUEsQ0FBQSxDQUFBLEVBQVFMLEdBQUcsQ0FBQ3NCLFFBQVEsQ0FBQSxFQUFLQSxRQUFRLENBQUU7SUFDL0MsSUFBQTRELFlBQUEsR0FBZ0Q5RSxPQUFNLENBQTlDK0UsSUFBSTtNQUFKQSxJQUFJLEdBQUFELFlBQUEsY0FBR0UsNEJBQWdCLEdBQUFGLFlBQUE7TUFBRUcsRUFBRSxHQUFhakYsT0FBTSxDQUFyQmlGLEVBQUU7TUFBRUMsRUFBRSxHQUFTbEYsT0FBTSxDQUFqQmtGLEVBQUU7TUFBRUMsRUFBRSxHQUFLbkYsT0FBTSxDQUFibUYsRUFBRTtJQUMzQyxPQUFPLElBQUF4RyxlQUFBLEVBQUN5RyxTQUFHLEVBQUE7TUFBQ0wsSUFBSSxFQUFFQSxJQUFJO01BQUVFLEVBQUUsRUFBRUEsRUFBRTtNQUFFQyxFQUFFLEVBQUVBLEVBQUU7TUFBRUMsRUFBRSxFQUFFQSxFQUFFO01BQUF2RyxRQUFBLEVBQUcrRTtJQUFLLENBQUEsQ0FBTztFQUMvRDtFQUVBLE9BQU9BLEtBQUs7QUFDZCxDQUFDO0FBRURqRSxlQUFlLENBQUNaLFdBQVcsR0FBRyxhQUFhO0FBRXBDLElBQU11RyxXQUFXLEdBQUFDLE9BQUEsQ0FBQUQsV0FBQSxnQkFBRyxJQUFBckcsV0FBSSxFQUFDVSxlQUFlLENBQUM7QUFBQyxJQUFBNkYsUUFBQSxHQUFBRCxPQUFBLGNBRWxDRCxXQUFXIiwiZmlsZSI6ImNvbXBvbmVudHMvUHJvRm9ybS9Qcm9Gb3JtSXRlbS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGpzeCBhcyBfanN4LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgUmVhY3QsIHsgbWVtbywgdXNlRWZmZWN0LCB1c2VSZWYgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBDb2wgfSBmcm9tICcuLi9HcmlkJztcbmltcG9ydCB7IFR5cG9ncmFwaHlCb2R5LCBUeXBvZ3JhcGh5TGFiZWwgfSBmcm9tICcuLi9UeXBvZ3JhcGh5JztcbmltcG9ydCB7IGRlZmF1bHQgYXMgY2xhc3NuYW1lcywgam9pbkNscyB9IGZyb20gJy4uLy4uL3V0aWxzL2NsYXNzbmFtZXMnO1xuaW1wb3J0IHsgdXNlRm9ybUl0ZW0gfSBmcm9tICcuL2NvcmUvdXNlRm9ybUl0ZW0nO1xuaW1wb3J0IHsgRk9STV9FUlJPUl9DT0xPUiwgRk9STV9FUlJPUl9TSVpFLCBGT1JNX1dBUk5JTkdfQ09MT1IsIEZPUk1fV0FSTklOR19TSVpFLCBGT1JNX0RFU0NSSVBUSU9OX0NPTE9SLCBGT1JNX0RFU0NSSVBUSU9OX1NJWkUsIEZPUk1fRkVFREJBQ0tfQ09MT1IsIEZPUk1fRkVFREJBQ0tfU0laRSwgRk9STV9MQUJFTF9DT0xPUiwgRk9STV9MQUJFTF9TSVpFUywgfSBmcm9tICcuL2NvcmUvY29uc3RhbnRzJztcbmltcG9ydCB7IHVzZVByb0Zvcm1TdGFibGUsIHVzZVByb0Zvcm1TdG9yZSB9IGZyb20gJy4vY29udGV4dCc7XG5pbXBvcnQgeyB1c2VTdG9yZVNlbGVjdG9yLCBzaGFsbG93RXF1YWxBcnJheXMgfSBmcm9tICcuL2NvcmUvZm9ybVN0b3JlJztcbmltcG9ydCB7IHJlc29sdmVWYWx1ZSB9IGZyb20gJy4vY29yZS9wYXRoVXRpbHMnO1xuaW1wb3J0IHsgREVGQVVMVF9DT0xfU1BBTiB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IHZhbHVlRW51bVRvT3B0aW9ucywgZm9ybWF0RGF0ZUJ5UGF0dGVybiwgREFURV9GT1JNQVQsIERBVEVfVElNRV9GT1JNQVQgfSBmcm9tICcuL3V0aWxzJztcbmNvbnN0IEVNUFRZX1RFWFRfREVGQVVMVCA9ICctJztcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gUmVhZC1tb2RlIHJlbmRlcmluZyBmb3IgZWFjaCBzdXBwb3J0ZWQgdmFsdWVUeXBlXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIHJlbmRlckJ5VmFsdWVUeXBlKHZhbHVlVHlwZSwgdmFsdWUsIHByb3BzKSB7XG4gICAgaWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09ICcnKVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICBzd2l0Y2ggKHZhbHVlVHlwZSkge1xuICAgICAgICBjYXNlICdwYXNzd29yZCc6XG4gICAgICAgICAgICByZXR1cm4gJyonLnJlcGVhdChTdHJpbmcodmFsdWUpLmxlbmd0aCk7XG4gICAgICAgIGNhc2UgJ3N3aXRjaCc6XG4gICAgICAgICAgICByZXR1cm4gdmFsdWUgPyAnT24nIDogJ09mZic7XG4gICAgICAgIGNhc2UgJ2RpZ2l0Jzoge1xuICAgICAgICAgICAgY29uc3QgbnVtID0gTnVtYmVyKHZhbHVlKTtcbiAgICAgICAgICAgIGlmIChOdW1iZXIuaXNOYU4obnVtKSlcbiAgICAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgICAgICAgICAgIHJldHVybiBudW0udG9Mb2NhbGVTdHJpbmcoKTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlICdzZWxlY3QnOlxuICAgICAgICBjYXNlICdyYWRpbyc6XG4gICAgICAgIGNhc2UgJ3RhZyc6IHtcbiAgICAgICAgICAgIGlmICghcHJvcHMudmFsdWVFbnVtKVxuICAgICAgICAgICAgICAgIHJldHVybiBTdHJpbmcodmFsdWUpO1xuICAgICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHZhbHVlRW51bVRvT3B0aW9ucyhwcm9wcy52YWx1ZUVudW0pO1xuICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSBvcHRpb25zLmZpbmQoKG8pID0+IFN0cmluZyhvLnZhbHVlKSA9PT0gU3RyaW5nKHZhbHVlKSk7XG4gICAgICAgICAgICByZXR1cm4gbWF0Y2ggPyBtYXRjaC5sYWJlbCA6IFN0cmluZyh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAnZGF0ZSc6XG4gICAgICAgICAgICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBEYXRlID8gZm9ybWF0RGF0ZUJ5UGF0dGVybih2YWx1ZSwgREFURV9GT1JNQVQpIDogU3RyaW5nKHZhbHVlKTtcbiAgICAgICAgY2FzZSAnZGF0ZVRpbWUnOlxuICAgICAgICAgICAgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgRGF0ZSA/IGZvcm1hdERhdGVCeVBhdHRlcm4odmFsdWUsIERBVEVfVElNRV9GT1JNQVQpIDogU3RyaW5nKHZhbHVlKTtcbiAgICAgICAgY2FzZSAndGV4dCc6XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgICB9XG59XG5jb25zdCBSZWFkb25seUNoaWxkQmFzZSA9ICh7IG5hbWUsIHZhbHVlVHlwZSwgdmFsdWVFbnVtLCBjb252ZXJ0VmFsdWUsIHJlYWRvbmx5UmVuZGVyLCBlbXB0eVRleHQsIH0pID0+IHtcbiAgICBjb25zdCBzdG9yZSA9IHVzZVByb0Zvcm1TdG9yZSgpO1xuICAgIC8vIFN1YnNjcmliZSBwZXItZmllbGQ7IG9ubHkgYSBjdXN0b20gcmVhZG9ubHlSZW5kZXIgKHdoaWNoIHJlY2VpdmVzIEFMTFxuICAgIC8vIHZhbHVlcykgbmVlZHMgdG8gdHJhY2sgdGhlIHdob2xlIHZhbHVlcyBvYmplY3QuXG4gICAgY29uc3QgW3JhdywgYWxsVmFsdWVzXSA9IHVzZVN0b3JlU2VsZWN0b3Ioc3RvcmUsIChzdGF0ZSkgPT4gW1xuICAgICAgICBuYW1lID8gcmVzb2x2ZVZhbHVlKHN0YXRlLnZhbHVlcywgbmFtZSkgOiB1bmRlZmluZWQsXG4gICAgICAgIHJlYWRvbmx5UmVuZGVyID8gc3RhdGUudmFsdWVzIDogdW5kZWZpbmVkLFxuICAgIF0sIHNoYWxsb3dFcXVhbEFycmF5cyk7XG4gICAgY29uc3QgdmFsdWUgPSBjb252ZXJ0VmFsdWUgJiYgbmFtZSA/IGNvbnZlcnRWYWx1ZShyYXcsIG5hbWUpIDogcmF3O1xuICAgIGlmIChyZWFkb25seVJlbmRlcikge1xuICAgICAgICBjb25zdCBub2RlID0gcmVhZG9ubHlSZW5kZXIodmFsdWUsIGFsbFZhbHVlcyAhPT0gbnVsbCAmJiBhbGxWYWx1ZXMgIT09IHZvaWQgMCA/IGFsbFZhbHVlcyA6IHN0b3JlLmdldFN0YXRlKCkudmFsdWVzKTtcbiAgICAgICAgcmV0dXJuIF9qc3goXCJzcGFuXCIsIHsgY2hpbGRyZW46IG5vZGUgIT09IG51bGwgJiYgbm9kZSAhPT0gdm9pZCAwID8gbm9kZSA6IGVtcHR5VGV4dCB9KTtcbiAgICB9XG4gICAgaWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09ICcnKSB7XG4gICAgICAgIHJldHVybiBfanN4KFwic3BhblwiLCB7IGNoaWxkcmVuOiBlbXB0eVRleHQgfSk7XG4gICAgfVxuICAgIGNvbnN0IHJlbmRlcmVkID0gcmVuZGVyQnlWYWx1ZVR5cGUodmFsdWVUeXBlLCB2YWx1ZSwgeyB2YWx1ZUVudW0gfSk7XG4gICAgcmV0dXJuIF9qc3goXCJzcGFuXCIsIHsgY2hpbGRyZW46IHJlbmRlcmVkICE9PSBudWxsICYmIHJlbmRlcmVkICE9PSB2b2lkIDAgPyByZW5kZXJlZCA6IGVtcHR5VGV4dCB9KTtcbn07XG5SZWFkb25seUNoaWxkQmFzZS5kaXNwbGF5TmFtZSA9ICdQcm9Gb3JtSXRlbVJlYWRvbmx5JztcbmNvbnN0IFJlYWRvbmx5Q2hpbGQgPSBtZW1vKFJlYWRvbmx5Q2hpbGRCYXNlKTtcbmNvbnN0IENvbnZlcnRWYWx1ZUNoaWxkQmFzZSA9ICh7IG5hbWUsIGNvbnZlcnRWYWx1ZSwgdmFsdWVQcm9wTmFtZSA9ICd2YWx1ZScsIGNoaWxkcmVuLCB9KSA9PiB7XG4gICAgY29uc3Qgc3RvcmUgPSB1c2VQcm9Gb3JtU3RvcmUoKTtcbiAgICBjb25zdCByYXcgPSB1c2VTdG9yZVNlbGVjdG9yKHN0b3JlLCAoc3RhdGUpID0+IHJlc29sdmVWYWx1ZShzdGF0ZS52YWx1ZXMsIG5hbWUpKTtcbiAgICBjb25zdCBjb252ZXJ0ZWQgPSBjb252ZXJ0VmFsdWUgPyBjb252ZXJ0VmFsdWUocmF3LCBuYW1lKSA6IHJhdztcbiAgICByZXR1cm4gUmVhY3QuY2xvbmVFbGVtZW50KGNoaWxkcmVuLCB7IFt2YWx1ZVByb3BOYW1lXTogY29udmVydGVkIH0pO1xufTtcbkNvbnZlcnRWYWx1ZUNoaWxkQmFzZS5kaXNwbGF5TmFtZSA9ICdQcm9Gb3JtSXRlbUNvbnZlcnRWYWx1ZSc7XG5jb25zdCBDb252ZXJ0VmFsdWVDaGlsZCA9IG1lbW8oQ29udmVydFZhbHVlQ2hpbGRCYXNlKTtcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gUHJvRm9ybUl0ZW1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuY29uc3QgUHJvRm9ybUl0ZW1CYXNlID0gKHByb3BzKSA9PiB7XG4gICAgdmFyIF9hO1xuICAgIC8vIFN0YWJsZSBzbGljZSBvbmx5IOKAlCB2YWx1ZS9lcnJvciByZWFjdGl2aXR5IGxpdmVzIGluIHVzZUZvcm1JdGVtJ3NcbiAgICAvLyBwZXItZmllbGQgc3Vic2NyaXB0aW9uLCBzbyB0aGlzIHNoZWxsIG5ldmVyIHJlLXJlbmRlcnMgZm9yIHNpYmxpbmdzLlxuICAgIGNvbnN0IGN0eCA9IHVzZVByb0Zvcm1TdGFibGUoKTtcbiAgICAvLyBGb3JtLWxldmVsIGBmb3JtSXRlbVByb3BzYCBhY3QgYXMgREVGQVVMVFM7IHByb3BzIGV4cGxpY2l0bHkgc2V0IG9uIHRoZVxuICAgIC8vIGl0ZW0gd2luLiBKU1ggZnJlcXVlbnRseSBwYXNzZXMgYHVuZGVmaW5lZGAgZm9yIHVuc2V0IHByb3BzIChlLmcuIHRoZVxuICAgIC8vIGNyZWF0ZVByb0Zvcm1GaWVsZCBwYXNzLXRocm91Z2gpLCBzbyBvbmx5IGRlZmluZWQgdmFsdWVzIG1heSBvdmVycmlkZS5cbiAgICBsZXQgbWVyZ2VkUHJvcHMgPSBwcm9wcztcbiAgICBpZiAoY3R4LmZvcm1JdGVtUHJvcHMpIHtcbiAgICAgICAgY29uc3QgbWVyZ2VkID0gT2JqZWN0LmFzc2lnbih7fSwgY3R4LmZvcm1JdGVtUHJvcHMpO1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhwcm9wcykpIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gcHJvcHNba2V5XTtcbiAgICAgICAgICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgIG1lcmdlZFtrZXldID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgbWVyZ2VkUHJvcHMgPSBtZXJnZWQ7XG4gICAgfVxuICAgIGNvbnN0IHsgY2hpbGRyZW4sIG5hbWUsIGxhYmVsLCBkZXNjcmlwdGlvbiwgcnVsZXMsIHJlcXVpcmVkLCBmZWVkYmFjaywgdmFsaWRhdGVTdGF0dXMsIGNsYXNzTmFtZSA9ICcnLCBwcmVmaXhDbHMgPSAnZm9ybS1pdGVtJywgaGlkZGVuLCB0cmFuc2Zvcm0sIGNvbnZlcnRWYWx1ZSwgdmFsdWVUeXBlLCByZWFkb25seVJlbmRlciwgY29sUHJvcHMsIG1vZGU6IG1vZGVQcm9wLCBlbXB0eVRleHQgPSBFTVBUWV9URVhUX0RFRkFVTFQsIHZhbHVlRW51bSwgdmFsdWVQcm9wTmFtZSwgdmFsaWRhdGVEZWJvdW5jZSwgfSA9IG1lcmdlZFByb3BzO1xuICAgIGNvbnN0IG1lcmdlZE1vZGUgPSBtb2RlUHJvcCAhPT0gbnVsbCAmJiBtb2RlUHJvcCAhPT0gdm9pZCAwID8gbW9kZVByb3AgOiBjdHgubW9kZTtcbiAgICBjb25zdCBpc1JlYWRvbmx5ID0gbWVyZ2VkTW9kZSA9PT0gJ3JlYWQnO1xuICAgIGNvbnN0IHsgZmllbGRFcnJvciwgZmllbGRXYXJuaW5nLCBpc1JlcXVpcmVkLCBzaXplLCBsYWJlbEFsaWduLCByZXF1aXJlZE1hcmssIGluamVjdEZpZWxkLCB9ID0gdXNlRm9ybUl0ZW0oeyBuYW1lLCBydWxlcywgcmVxdWlyZWQsIHZhbGlkYXRlU3RhdHVzLCB2YWx1ZVByb3BOYW1lLCB2YWxpZGF0ZURlYm91bmNlIH0pO1xuICAgIC8vIFJlZ2lzdGVyIHRyYW5zZm9ybSAvIHZhbHVlVHlwZSBEVVJJTkcgcmVuZGVyIChpZGVtcG90ZW50IHJlZiB3cml0ZXMsIGxpa2VcbiAgICAvLyByZWdpc3RlckZpZWxkKTogY29uc3VtZXJzIHJlbmRlcmVkIGxhdGVyIGluIHRoZSBzYW1lIHBhc3Mg4oCUIGUuZy4gYVxuICAgIC8vIERlcGVuZGVuY3kgcmVhZGluZyBmb3JtYXR0ZWQgdmFsdWVzIOKAlCBtdXN0IGFscmVhZHkgc2VlIHRoZW0uIEVmZmVjdHNcbiAgICAvLyB3b3VsZCByZWdpc3RlciB0b28gbGF0ZSAoYWZ0ZXIgdGhlIHdob2xlIHRyZWUgcmVuZGVyZWQpLlxuICAgIC8vXG4gICAgLy8gRWFjaCBpbnN0YW5jZSB0cmFja3MgdGhlIHtuYW1lLCB2YWx1ZX0gUEFJUiBpdCByZWdpc3RlcmVkLiBSZW1vdmFsIGlzXG4gICAgLy8gYWx3YXlzIHBlcmZvcm1lZCB3aXRoIHRoZSBwYWlyJ3Mgb3duIG5hbWUgQU5EIHZhbHVlOiBhbiBpdGVtIHdpdGhvdXQgYVxuICAgIC8vIHRyYW5zZm9ybSBuZXZlciB0b3VjaGVzIGEgc2FtZS1uYW1lIHNpYmxpbmcncyByZWdpc3RyYXRpb24sIGFuIHVubW91bnRcbiAgICAvLyBjbGVhbnVwIGNhbid0IHdpcGUgYSBzdWNjZXNzb3IncyAodmFsdWUtZ3VhcmRlZCksIGFuZCBhIE5BTUUgY2hhbmdlXG4gICAgLy8gcmVtb3ZlcyB0aGUgb2xkIG5hbWUncyBlbnRyeSB3aXRoIHRoZSBPTEQgdmFsdWUgYmVmb3JlIHRoZSByZWYgaXNcbiAgICAvLyBvdmVyd3JpdHRlbiAoYSBsaXZlIHNpbmdsZS12YWx1ZSByZWYgd291bGQgbGVhayBpdCkuXG4gICAgY29uc3Qgb3duVHJhbnNmb3JtUmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IG93blZhbHVlVHlwZVJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBwcmV2VHJhbnNmb3JtID0gb3duVHJhbnNmb3JtUmVmLmN1cnJlbnQ7XG4gICAgaWYgKHByZXZUcmFuc2Zvcm0gJiYgKHByZXZUcmFuc2Zvcm0ubmFtZSAhPT0gbmFtZSB8fCAhdHJhbnNmb3JtKSkge1xuICAgICAgICBjdHgudW5yZWdpc3RlclRyYW5zZm9ybShwcmV2VHJhbnNmb3JtLm5hbWUsIHByZXZUcmFuc2Zvcm0uZm4pO1xuICAgICAgICBvd25UcmFuc2Zvcm1SZWYuY3VycmVudCA9IG51bGw7XG4gICAgfVxuICAgIGlmIChuYW1lICYmIHRyYW5zZm9ybSkge1xuICAgICAgICBjdHgucmVnaXN0ZXJUcmFuc2Zvcm0obmFtZSwgdHJhbnNmb3JtKTtcbiAgICAgICAgb3duVHJhbnNmb3JtUmVmLmN1cnJlbnQgPSB7IG5hbWUsIGZuOiB0cmFuc2Zvcm0gfTtcbiAgICB9XG4gICAgY29uc3QgcHJldlZhbHVlVHlwZSA9IG93blZhbHVlVHlwZVJlZi5jdXJyZW50O1xuICAgIGlmIChwcmV2VmFsdWVUeXBlICYmIChwcmV2VmFsdWVUeXBlLm5hbWUgIT09IG5hbWUgfHwgIXZhbHVlVHlwZSkpIHtcbiAgICAgICAgY3R4LnVucmVnaXN0ZXJWYWx1ZVR5cGUocHJldlZhbHVlVHlwZS5uYW1lLCBwcmV2VmFsdWVUeXBlLnZhbHVlVHlwZSk7XG4gICAgICAgIG93blZhbHVlVHlwZVJlZi5jdXJyZW50ID0gbnVsbDtcbiAgICB9XG4gICAgaWYgKG5hbWUgJiYgdmFsdWVUeXBlKSB7XG4gICAgICAgIGN0eC5yZWdpc3RlclZhbHVlVHlwZShuYW1lLCB2YWx1ZVR5cGUpO1xuICAgICAgICBvd25WYWx1ZVR5cGVSZWYuY3VycmVudCA9IHsgbmFtZSwgdmFsdWVUeXBlIH07XG4gICAgfVxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIC8vIFJFLVJFR0lTVEVSIGluIHRoZSBib2R5OiBTdHJpY3RNb2RlJ3MgbW91bnTihpJjbGVhbnVw4oaScmUtcnVuIGN5Y2xlIGFuZFxuICAgICAgICAvLyBrZXllZCByZW1vdW50cyAob2xkIGluc3RhbmNlJ3MgY2xlYW51cCBydW5zIEFGVEVSIHRoZSBuZXcgcmVuZGVyXG4gICAgICAgIC8vIHJlZ2lzdGVyZWQpIGJvdGggZW5kIHdpdGggYSBjbGVhbnVwIGhhdmluZyBkZWxldGVkIHRoZSBlbnRyeSDigJQgdGhlXG4gICAgICAgIC8vIGVmZmVjdCBib2R5IG11c3QgcmVzdG9yZSB0aGUgbGF0ZXN0IHJlZ2lzdHJhdGlvbi5cbiAgICAgICAgY29uc3QgdHJhbnNmb3JtUmVnID0gb3duVHJhbnNmb3JtUmVmLmN1cnJlbnQ7XG4gICAgICAgIGlmICh0cmFuc2Zvcm1SZWcpXG4gICAgICAgICAgICBjdHgucmVnaXN0ZXJUcmFuc2Zvcm0odHJhbnNmb3JtUmVnLm5hbWUsIHRyYW5zZm9ybVJlZy5mbik7XG4gICAgICAgIGNvbnN0IHZhbHVlVHlwZVJlZyA9IG93blZhbHVlVHlwZVJlZi5jdXJyZW50O1xuICAgICAgICBpZiAodmFsdWVUeXBlUmVnKVxuICAgICAgICAgICAgY3R4LnJlZ2lzdGVyVmFsdWVUeXBlKHZhbHVlVHlwZVJlZy5uYW1lLCB2YWx1ZVR5cGVSZWcudmFsdWVUeXBlKTtcbiAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHQgPSBvd25UcmFuc2Zvcm1SZWYuY3VycmVudDtcbiAgICAgICAgICAgIGlmICh0KVxuICAgICAgICAgICAgICAgIGN0eC51bnJlZ2lzdGVyVHJhbnNmb3JtKHQubmFtZSwgdC5mbik7XG4gICAgICAgICAgICBjb25zdCB2ID0gb3duVmFsdWVUeXBlUmVmLmN1cnJlbnQ7XG4gICAgICAgICAgICBpZiAodilcbiAgICAgICAgICAgICAgICBjdHgudW5yZWdpc3RlclZhbHVlVHlwZSh2Lm5hbWUsIHYudmFsdWVUeXBlKTtcbiAgICAgICAgfTtcbiAgICB9LCBbbmFtZSwgY3R4LnJlZ2lzdGVyVHJhbnNmb3JtLCBjdHgudW5yZWdpc3RlclRyYW5zZm9ybSwgY3R4LnJlZ2lzdGVyVmFsdWVUeXBlLCBjdHgudW5yZWdpc3RlclZhbHVlVHlwZV0pO1xuICAgIGlmIChoaWRkZW4pXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIGxldCBjb250cm9sQ2hpbGQ7XG4gICAgaWYgKGlzUmVhZG9ubHkpIHtcbiAgICAgICAgY29udHJvbENoaWxkID0gKF9qc3goUmVhZG9ubHlDaGlsZCwgeyBuYW1lOiBuYW1lLCB2YWx1ZVR5cGU6IHZhbHVlVHlwZSwgdmFsdWVFbnVtOiB2YWx1ZUVudW0sIGNvbnZlcnRWYWx1ZTogY29udmVydFZhbHVlLCByZWFkb25seVJlbmRlcjogcmVhZG9ubHlSZW5kZXIsIGVtcHR5VGV4dDogZW1wdHlUZXh0IH0pKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIC8vIEluamVjdCBmaXJzdCBzbyB0aGUgcmVhbCBmaWVsZCByZWNlaXZlcyB2YWx1ZS9vbkNoYW5nZS9vbkJsdXIsXG4gICAgICAgIC8vIHRoZW4gb3B0aW9uYWxseSB3cmFwIGluIENvbnZlcnRWYWx1ZUNoaWxkIHRvIG92ZXJyaWRlIHRoZSBkaXNwbGF5ZWQgdmFsdWUuXG4gICAgICAgIGNvbnN0IGluamVjdGVkID0gaW5qZWN0RmllbGQoY2hpbGRyZW4pO1xuICAgICAgICBpZiAoY29udmVydFZhbHVlICYmIG5hbWUgJiYgUmVhY3QuaXNWYWxpZEVsZW1lbnQoaW5qZWN0ZWQpKSB7XG4gICAgICAgICAgICBjb250cm9sQ2hpbGQgPSAoX2pzeChDb252ZXJ0VmFsdWVDaGlsZCwgeyBuYW1lOiBuYW1lLCBjb252ZXJ0VmFsdWU6IGNvbnZlcnRWYWx1ZSwgdmFsdWVQcm9wTmFtZTogdmFsdWVQcm9wTmFtZSwgY2hpbGRyZW46IGluamVjdGVkIH0pKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnRyb2xDaGlsZCA9IGluamVjdGVkO1xuICAgICAgICB9XG4gICAgfVxuICAgIGNvbnN0IGNsYXNzZXMgPSBjbGFzc25hbWVzKHByZWZpeENscyk7XG4gICAgLy8gRm9ybS1sZXZlbCBsYXlvdXQuaXRlbUdhcCBvdmVycmlkZXMgdGhlIHNpemUtY2xhc3MgbWFyZ2luIChpbmxpbmUgc3R5bGVcbiAgICAvLyB3aW5zKTsgaXRlbUdhcD0wIGlzIG1lYW5pbmdmdWwuXG4gICAgY29uc3QgaXRlbUdhcCA9IChfYSA9IGN0eC5sYXlvdXQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5pdGVtR2FwO1xuICAgIGNvbnN0IGdhcFN0eWxlID0gaXRlbUdhcCAhPT0gdW5kZWZpbmVkXG4gICAgICAgID8geyBtYXJnaW5Cb3R0b206IHR5cGVvZiBpdGVtR2FwID09PSAnbnVtYmVyJyA/IGAke2l0ZW1HYXB9cHhgIDogaXRlbUdhcCB9XG4gICAgICAgIDogdW5kZWZpbmVkO1xuICAgIGNvbnN0IHNoZWxsID0gKF9qc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKHVuZGVmaW5lZCwgam9pbkNscyhjbGFzc2VzKHNpemUpLCBjbGFzc05hbWUpKSwgc3R5bGU6IGdhcFN0eWxlLCBjaGlsZHJlbjogW2xhYmVsICYmIChfanN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygnbGFiZWwtd3JhcHBlcicsIGpvaW5DbHMoY2xhc3NlcygnbGFiZWwtd3JhcHBlci12ZXJ0aWNhbCcpLCBsYWJlbEFsaWduICYmIGNsYXNzZXMoYGxhYmVsLXdyYXBwZXItJHtsYWJlbEFsaWdufWApKSksIGNoaWxkcmVuOiBbX2pzeChUeXBvZ3JhcGh5TGFiZWwsIHsgYXM6IFwibGFiZWxcIiwgc2l6ZTogRk9STV9MQUJFTF9TSVpFU1tzaXplXSwgY29sb3I6IEZPUk1fTEFCRUxfQ09MT1IsIGNsYXNzTmFtZTogY2xhc3NlcygnbGFiZWwnKSwgY2hpbGRyZW46IGxhYmVsIH0pLCBkZXNjcmlwdGlvbiAmJiAoX2pzeChUeXBvZ3JhcGh5Qm9keSwgeyBhczogXCJkaXZcIiwgY2xhc3NOYW1lOiBjbGFzc2VzKCdkZXNjcmlwdGlvbicpLCBzaXplOiBGT1JNX0RFU0NSSVBUSU9OX1NJWkUsIGNvbG9yOiBGT1JNX0RFU0NSSVBUSU9OX0NPTE9SLCBjaGlsZHJlbjogZGVzY3JpcHRpb24gfSkpXSB9KSksIF9qc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdjb250cm9sJyksIGNoaWxkcmVuOiBbY29udHJvbENoaWxkLCBmaWVsZEVycm9yICYmIChfanN4KFR5cG9ncmFwaHlCb2R5LCB7IGFzOiBcImRpdlwiLCBjbGFzc05hbWU6IGNsYXNzZXMoJ2Vycm9yJyksIHNpemU6IEZPUk1fRVJST1JfU0laRSwgY29sb3I6IEZPUk1fRVJST1JfQ09MT1IsIGNoaWxkcmVuOiBmaWVsZEVycm9yIH0pKSwgIWZpZWxkRXJyb3IgJiYgZmllbGRXYXJuaW5nICYmIChfanN4KFR5cG9ncmFwaHlCb2R5LCB7IGFzOiBcImRpdlwiLCBjbGFzc05hbWU6IGNsYXNzZXMoJ3dhcm5pbmcnKSwgc2l6ZTogRk9STV9XQVJOSU5HX1NJWkUsIGNvbG9yOiBGT1JNX1dBUk5JTkdfQ09MT1IsIGNoaWxkcmVuOiBmaWVsZFdhcm5pbmcgfSkpLCAhZmllbGRFcnJvciAmJiAhZmllbGRXYXJuaW5nICYmIGZlZWRiYWNrICYmIChfanN4KFR5cG9ncmFwaHlCb2R5LCB7IGFzOiBcImRpdlwiLCBjbGFzc05hbWU6IGNsYXNzZXMoJ2ZlZWRiYWNrJyksIHNpemU6IEZPUk1fRkVFREJBQ0tfU0laRSwgY29sb3I6IEZPUk1fRkVFREJBQ0tfQ09MT1IsIGNoaWxkcmVuOiBmZWVkYmFjayB9KSldIH0pXSB9KSk7XG4gICAgaWYgKGN0eC5ncmlkKSB7XG4gICAgICAgIGNvbnN0IG1lcmdlZCA9IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgY3R4LmNvbFByb3BzKSwgY29sUHJvcHMpO1xuICAgICAgICBjb25zdCB7IHNwYW4gPSBERUZBVUxUX0NPTF9TUEFOLCBzbSwgbWQsIGxnIH0gPSBtZXJnZWQ7XG4gICAgICAgIHJldHVybiBfanN4KENvbCwgeyBzcGFuOiBzcGFuLCBzbTogc20sIG1kOiBtZCwgbGc6IGxnLCBjaGlsZHJlbjogc2hlbGwgfSk7XG4gICAgfVxuICAgIHJldHVybiBzaGVsbDtcbn07XG5Qcm9Gb3JtSXRlbUJhc2UuZGlzcGxheU5hbWUgPSAnUHJvRm9ybUl0ZW0nO1xuZXhwb3J0IGNvbnN0IFByb0Zvcm1JdGVtID0gbWVtbyhQcm9Gb3JtSXRlbUJhc2UpO1xuZXhwb3J0IGRlZmF1bHQgUHJvRm9ybUl0ZW07IixudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
322
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9Qcm9Gb3JtSXRlbS5qcyIsImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvUHJvRm9ybS9Qcm9Gb3JtSXRlbS50c3giXSwibmFtZXMiOlsiX2pzeFJ1bnRpbWUiLCJyZXF1aXJlIiwiX3JlYWN0IiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfR3JpZCIsIl9UeXBvZ3JhcGh5IiwiX2NsYXNzbmFtZXMiLCJfdXNlRm9ybUl0ZW0yIiwiX2NvbnN0YW50cyIsIl9jb250ZXh0IiwiX2Zvcm1TdG9yZSIsIl9wYXRoVXRpbHMiLCJfY29uc3RhbnRzMiIsIl91dGlscyIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIkVNUFRZX1RFWFRfREVGQVVMVCIsInJlbmRlckJ5VmFsdWVUeXBlIiwidmFsdWVUeXBlIiwidmFsdWUiLCJwcm9wcyIsInVuZGVmaW5lZCIsInJlcGVhdCIsIlN0cmluZyIsImxlbmd0aCIsIm51bSIsIk51bWJlciIsImlzTmFOIiwidG9Mb2NhbGVTdHJpbmciLCJ2YWx1ZUVudW0iLCJvcHRpb25zIiwidmFsdWVFbnVtVG9PcHRpb25zIiwibWF0Y2giLCJmaW5kIiwibyIsImxhYmVsIiwiRGF0ZSIsImZvcm1hdERhdGVCeVBhdHRlcm4iLCJEQVRFX0ZPUk1BVCIsIkRBVEVfVElNRV9GT1JNQVQiLCJSZWFkb25seUNoaWxkQmFzZSIsIl9yZWYiLCJuYW1lIiwiY29udmVydFZhbHVlIiwicmVhZG9ubHlSZW5kZXIiLCJlbXB0eVRleHQiLCJzdG9yZSIsInVzZVByb0Zvcm1TdG9yZSIsIl91c2VTdG9yZVNlbGVjdG9yIiwidXNlU3RvcmVTZWxlY3RvciIsInN0YXRlIiwicmVzb2x2ZVZhbHVlIiwidmFsdWVzIiwic2hhbGxvd0VxdWFsQXJyYXlzIiwiX3VzZVN0b3JlU2VsZWN0b3IyIiwiX3NsaWNlZFRvQXJyYXkyIiwicmF3IiwiYWxsVmFsdWVzIiwibm9kZSIsImdldFN0YXRlIiwiX2pzeCIsImNoaWxkcmVuIiwicmVuZGVyZWQiLCJkaXNwbGF5TmFtZSIsIlJlYWRvbmx5Q2hpbGQiLCJtZW1vIiwiQ29udmVydFZhbHVlQ2hpbGRCYXNlIiwiX3JlZjIiLCJfcmVmMiR2YWx1ZVByb3BOYW1lIiwidmFsdWVQcm9wTmFtZSIsImNvbnZlcnRlZCIsIlJlYWN0IiwiY2xvbmVFbGVtZW50IiwiX2RlZmluZVByb3BlcnR5MiIsIkNvbnZlcnRWYWx1ZUNoaWxkIiwiUHJvRm9ybUl0ZW1CYXNlIiwiX2EiLCJjdHgiLCJ1c2VQcm9Gb3JtU3RhYmxlIiwibWVyZ2VkUHJvcHMiLCJmb3JtSXRlbVByb3BzIiwibWVyZ2VkIiwiYXNzaWduIiwiX2kiLCJfT2JqZWN0JGtleXMiLCJrZXlzIiwia2V5IiwiX21lcmdlZFByb3BzIiwiZGVzY3JpcHRpb24iLCJydWxlcyIsImZlZWRiYWNrIiwidmFsaWRhdGVTdGF0dXMiLCJfbWVyZ2VkUHJvcHMkY2xhc3NOYW0iLCJjbGFzc05hbWUiLCJfbWVyZ2VkUHJvcHMkcHJlZml4Q2wiLCJwcmVmaXhDbHMiLCJoaWRkZW4iLCJ0cmFuc2Zvcm0iLCJjb2xQcm9wcyIsIm1vZGVQcm9wIiwibW9kZSIsIl9tZXJnZWRQcm9wcyRlbXB0eVRleCIsInZhbGlkYXRlRGVib3VuY2UiLCJ2YWxpZGF0ZVRyaWdnZXIiLCJtZXJnZWRNb2RlIiwiaXNSZWFkb25seSIsIl91c2VGb3JtSXRlbSIsInVzZUZvcm1JdGVtIiwiZmllbGRFcnJvciIsImZpZWxkV2FybmluZyIsInNpemUiLCJsYWJlbEFsaWduIiwiaW5qZWN0RmllbGQiLCJvd25UcmFuc2Zvcm1SZWYiLCJ1c2VSZWYiLCJvd25WYWx1ZVR5cGVSZWYiLCJwcmV2VHJhbnNmb3JtIiwiY3VycmVudCIsInVucmVnaXN0ZXJUcmFuc2Zvcm0iLCJmbiIsInJlZ2lzdGVyVHJhbnNmb3JtIiwicHJldlZhbHVlVHlwZSIsInVucmVnaXN0ZXJWYWx1ZVR5cGUiLCJyZWdpc3RlclZhbHVlVHlwZSIsInVzZUVmZmVjdCIsInRyYW5zZm9ybVJlZyIsInZhbHVlVHlwZVJlZyIsInYiLCJjb250cm9sQ2hpbGQiLCJpbmplY3RlZCIsImlzVmFsaWRFbGVtZW50IiwiY2xhc3NlcyIsImNsYXNzbmFtZXMiLCJpdGVtR2FwIiwibGF5b3V0IiwiZ2FwU3R5bGUiLCJtYXJnaW5Cb3R0b20iLCJjb25jYXQiLCJzaGVsbCIsIl9qc3hzIiwiam9pbkNscyIsInN0eWxlIiwiVHlwb2dyYXBoeUxhYmVsIiwiYXMiLCJGT1JNX0xBQkVMX1NJWkVTIiwiY29sb3IiLCJGT1JNX0xBQkVMX0NPTE9SIiwiVHlwb2dyYXBoeUJvZHkiLCJGT1JNX0RFU0NSSVBUSU9OX1NJWkUiLCJGT1JNX0RFU0NSSVBUSU9OX0NPTE9SIiwiRk9STV9FUlJPUl9TSVpFIiwiRk9STV9FUlJPUl9DT0xPUiIsIkZPUk1fV0FSTklOR19TSVpFIiwiRk9STV9XQVJOSU5HX0NPTE9SIiwiRk9STV9GRUVEQkFDS19TSVpFIiwiRk9STV9GRUVEQkFDS19DT0xPUiIsImdyaWQiLCJfbWVyZ2VkJHNwYW4iLCJzcGFuIiwiREVGQVVMVF9DT0xfU1BBTiIsInNtIiwibWQiLCJsZyIsIkNvbCIsIlByb0Zvcm1JdGVtIiwiZXhwb3J0cyIsIl9kZWZhdWx0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUEsSUFBQUEsV0FBQSxHQUFBQyxPQUFBO0FDQUEsSUFBQUMsTUFBQSxHQUFBQyx1QkFBQSxDQUFBRixPQUFBO0FBRUEsSUFBQUcsS0FBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksV0FBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssV0FBQSxHQUFBSCx1QkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQU0sYUFBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8sVUFBQSxHQUFBUCxPQUFBO0FBWUEsSUFBQVEsUUFBQSxHQUFBUixPQUFBO0FBQ0EsSUFBQVMsVUFBQSxHQUFBVCxPQUFBO0FBQ0EsSUFBQVUsVUFBQSxHQUFBVixPQUFBO0FBQ0EsSUFBQVcsV0FBQSxHQUFBWCxPQUFBO0FBQ0EsSUFBQVksTUFBQSxHQUFBWixPQUFBO0FBQWlHLFNBQUFhLHlCQUFBQyxDQUFBLDZCQUFBQyxPQUFBLG1CQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFBLFlBQUFGLHdCQUFBLFlBQUFBLHlCQUFBQyxDQUFBLFdBQUFBLENBQUEsR0FBQUcsQ0FBQSxHQUFBRCxDQUFBLEtBQUFGLENBQUE7QUFBQSxTQUFBWix3QkFBQVksQ0FBQSxFQUFBRSxDQUFBLFNBQUFBLENBQUEsSUFBQUYsQ0FBQSxJQUFBQSxDQUFBLENBQUFJLFVBQUEsU0FBQUosQ0FBQSxlQUFBQSxDQUFBLGdCQUFBSyxPQUFBLENBQUFMLENBQUEsMEJBQUFBLENBQUEsc0JBQUFBLENBQUEsUUFBQUcsQ0FBQSxHQUFBSix3QkFBQSxDQUFBRyxDQUFBLE9BQUFDLENBQUEsSUFBQUEsQ0FBQSxDQUFBRyxHQUFBLENBQUFOLENBQUEsVUFBQUcsQ0FBQSxDQUFBSSxHQUFBLENBQUFQLENBQUEsT0FBQVEsQ0FBQSxLQUFBQyxTQUFBLFVBQUFDLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxjQUFBLElBQUFELE1BQUEsQ0FBQUUsd0JBQUEsV0FBQUMsQ0FBQSxJQUFBZCxDQUFBLG9CQUFBYyxDQUFBLE9BQUFDLGNBQUEsQ0FBQUMsSUFBQSxDQUFBaEIsQ0FBQSxFQUFBYyxDQUFBLFNBQUFHLENBQUEsR0FBQVAsQ0FBQSxHQUFBQyxNQUFBLENBQUFFLHdCQUFBLENBQUFiLENBQUEsRUFBQWMsQ0FBQSxVQUFBRyxDQUFBLEtBQUFBLENBQUEsQ0FBQVYsR0FBQSxJQUFBVSxDQUFBLENBQUFDLEdBQUEsSUFBQVAsTUFBQSxDQUFBQyxjQUFBLENBQUFKLENBQUEsRUFBQU0sQ0FBQSxFQUFBRyxDQUFBLElBQUFULENBQUEsQ0FBQU0sQ0FBQSxJQUFBZCxDQUFBLENBQUFjLENBQUEsWUFBQU4sQ0FBQSxjQUFBUixDQUFBLEVBQUFHLENBQUEsSUFBQUEsQ0FBQSxDQUFBZSxHQUFBLENBQUFsQixDQUFBLEVBQUFRLENBQUEsR0FBQUEsQ0FBQTtBQUdqRyxJQUFNVyxrQkFBa0IsR0FBRyxHQUFHO0FBRTlCO0FBQ0E7QUFDQTtBQUNBLFNBQVNDLGlCQUFpQkEsQ0FDeEJDLFNBQXVDLEVBQ3ZDQyxLQUFjLEVBQ2RDLEtBQTBDLEVBQUE7RUFFMUMsSUFBSUQsS0FBSyxLQUFLLElBQUksSUFBSUEsS0FBSyxLQUFLRSxTQUFTLElBQUlGLEtBQUssS0FBSyxFQUFFLEVBQUUsT0FBTyxJQUFJO0VBRXRFLFFBQVFELFNBQVM7SUFDZixLQUFLLFVBQVU7TUFDYixPQUFPLEdBQUcsQ0FBQ0ksTUFBTSxDQUFDQyxNQUFNLENBQUNKLEtBQUssQ0FBQyxDQUFDSyxNQUFNLENBQUM7SUFDekMsS0FBSyxRQUFRO01BQ1gsT0FBT0wsS0FBSyxHQUFHLElBQUksR0FBRyxLQUFLO0lBQzdCLEtBQUssT0FBTztNQUFFO1FBQ1osSUFBTU0sR0FBRyxHQUFHQyxNQUFNLENBQUNQLEtBQUssQ0FBQztRQUN6QixJQUFJTyxNQUFNLENBQUNDLEtBQUssQ0FBQ0YsR0FBRyxDQUFDLEVBQUUsT0FBT0YsTUFBTSxDQUFDSixLQUFLLENBQUM7UUFDM0MsT0FBT00sR0FBRyxDQUFDRyxjQUFjLENBQUEsQ0FBRTtNQUM3QjtJQUNBLEtBQUssUUFBUTtJQUNiLEtBQUssT0FBTztJQUNaLEtBQUssS0FBSztNQUFFO1FBQ1YsSUFBSSxDQUFDUixLQUFLLENBQUNTLFNBQVMsRUFBRSxPQUFPTixNQUFNLENBQUNKLEtBQUssQ0FBQztRQUMxQyxJQUFNVyxPQUFPLEdBQUcsSUFBQUMseUJBQWtCLEVBQUNYLEtBQUssQ0FBQ1MsU0FBUyxDQUFDO1FBQ25ELElBQU1HLEtBQUssR0FBR0YsT0FBTyxDQUFDRyxJQUFJLENBQUMsVUFBQ0MsQ0FBQztVQUFBLE9BQUtYLE1BQU0sQ0FBQ1csQ0FBQyxDQUFDZixLQUFLLENBQUMsS0FBS0ksTUFBTSxDQUFDSixLQUFLLENBQUM7UUFBQSxFQUFDO1FBQ3BFLE9BQU9hLEtBQUssR0FBR0EsS0FBSyxDQUFDRyxLQUFLLEdBQUdaLE1BQU0sQ0FBQ0osS0FBSyxDQUFDO01BQzVDO0lBQ0EsS0FBSyxNQUFNO01BQ1QsT0FBT0EsS0FBSyxZQUFZaUIsSUFBSSxHQUFHLElBQUFDLDBCQUFtQixFQUFDbEIsS0FBSyxFQUFFbUIsa0JBQVcsQ0FBQyxHQUFHZixNQUFNLENBQUNKLEtBQUssQ0FBQztJQUN4RixLQUFLLFVBQVU7TUFDYixPQUFPQSxLQUFLLFlBQVlpQixJQUFJLEdBQUcsSUFBQUMsMEJBQW1CLEVBQUNsQixLQUFLLEVBQUVvQix1QkFBZ0IsQ0FBQyxHQUFHaEIsTUFBTSxDQUFDSixLQUFLLENBQUM7SUFDN0YsS0FBSyxNQUFNO0lBQ1g7TUFDRSxPQUFPSSxNQUFNLENBQUNKLEtBQUssQ0FBQztFQUN4QjtBQUNGO0FBY0EsSUFBTXFCLGlCQUFpQixHQUEyQixTQUE1Q0EsaUJBQWlCQSxDQUFBQyxJQUFBLEVBT2xCO0VBQUEsSUFOSEMsSUFBSSxHQUFBRCxJQUFBLENBQUpDLElBQUk7SUFDSnhCLFNBQVMsR0FBQXVCLElBQUEsQ0FBVHZCLFNBQVM7SUFDVFcsU0FBUyxHQUFBWSxJQUFBLENBQVRaLFNBQVM7SUFDVGMsWUFBWSxHQUFBRixJQUFBLENBQVpFLFlBQVk7SUFDWkMsY0FBYyxHQUFBSCxJQUFBLENBQWRHLGNBQWM7SUFDZEMsU0FBUyxHQUFBSixJQUFBLENBQVRJLFNBQVM7RUFFVCxJQUFNQyxLQUFLLEdBQUcsSUFBQUMsd0JBQWUsRUFBQSxDQUFFO0VBQy9CO0VBQ0E7RUFDQSxJQUFBQyxpQkFBQSxHQUF5QixJQUFBQywyQkFBZ0IsRUFDdkNILEtBQUssRUFDTCxVQUFDSSxLQUFLO01BQUEsT0FBcUQsQ0FDekRSLElBQUksR0FBRyxJQUFBUyx1QkFBWSxFQUFDRCxLQUFLLENBQUNFLE1BQU0sRUFBRVYsSUFBSSxDQUFDLEdBQUdyQixTQUFTLEVBQ25EdUIsY0FBYyxHQUFHTSxLQUFLLENBQUNFLE1BQU0sR0FBRy9CLFNBQVMsQ0FDMUM7SUFBQSxHQUNEZ0MsNkJBQWtCLENBQ25CO0lBQUFDLGtCQUFBLE9BQUFDLGVBQUEsYUFBQVAsaUJBQUE7SUFQTVEsR0FBRyxHQUFBRixrQkFBQTtJQUFFRyxTQUFTLEdBQUFILGtCQUFBO0VBUXJCLElBQU1uQyxLQUFLLEdBQUd3QixZQUFZLElBQUlELElBQUksR0FBR0MsWUFBWSxDQUFDYSxHQUFHLEVBQUVkLElBQUksQ0FBQyxHQUFHYyxHQUFHO0VBRWxFLElBQUlaLGNBQWMsRUFBRTtJQUNsQixJQUFNYyxJQUFJLEdBQUdkLGNBQWMsQ0FBQ3pCLEtBQUssRUFBRXNDLFNBQVMsS0FBQSxJQUFBLElBQVRBLFNBQVMsS0FBQSxLQUFBLENBQUEsR0FBVEEsU0FBUyxHQUFJWCxLQUFLLENBQUNhLFFBQVEsQ0FBQSxDQUFFLENBQUNQLE1BQU0sQ0FBQztJQUN4RSxPQUFPLElBQUFRLGVBQUEsRUFBQSxNQUFBLEVBQUE7TUFBQUMsUUFBQSxFQUFPSCxJQUFJLEtBQUEsSUFBQSxJQUFKQSxJQUFJLEtBQUEsS0FBQSxDQUFBLEdBQUpBLElBQUksR0FBSWI7SUFBUyxDQUFBLENBQVE7RUFDekM7RUFFQSxJQUFJMUIsS0FBSyxLQUFLLElBQUksSUFBSUEsS0FBSyxLQUFLRSxTQUFTLElBQUlGLEtBQUssS0FBSyxFQUFFLEVBQUU7SUFDekQsT0FBTyxJQUFBeUMsZUFBQSxFQUFBLE1BQUEsRUFBQTtNQUFBQyxRQUFBLEVBQU9oQjtJQUFTLENBQUEsQ0FBUTtFQUNqQztFQUVBLElBQU1pQixRQUFRLEdBQUc3QyxpQkFBaUIsQ0FBQ0MsU0FBUyxFQUFFQyxLQUFLLEVBQUU7SUFBRVUsU0FBUyxFQUFUQTtFQUFTLENBQUUsQ0FBQztFQUNuRSxPQUFPLElBQUErQixlQUFBLEVBQUEsTUFBQSxFQUFBO0lBQUFDLFFBQUEsRUFBT0MsUUFBUSxLQUFBLElBQUEsSUFBUkEsUUFBUSxLQUFBLEtBQUEsQ0FBQSxHQUFSQSxRQUFRLEdBQUlqQjtFQUFTLENBQUEsQ0FBUTtBQUM3QyxDQUFDO0FBRURMLGlCQUFpQixDQUFDdUIsV0FBVyxHQUFHLHFCQUFxQjtBQUNyRCxJQUFNQyxhQUFhLGdCQUFHLElBQUFDLFdBQUksRUFBQ3pCLGlCQUFpQixDQUFDO0FBYTdDLElBQU0wQixxQkFBcUIsR0FBK0IsU0FBcERBLHFCQUFxQkEsQ0FBQUMsS0FBQSxFQUt0QjtFQUFBLElBSkh6QixJQUFJLEdBQUF5QixLQUFBLENBQUp6QixJQUFJO0lBQ0pDLFlBQVksR0FBQXdCLEtBQUEsQ0FBWnhCLFlBQVk7SUFBQXlCLG1CQUFBLEdBQUFELEtBQUEsQ0FDWkUsYUFBYTtJQUFiQSxhQUFhLEdBQUFELG1CQUFBLGNBQUcsT0FBTyxHQUFBQSxtQkFBQTtJQUN2QlAsUUFBUSxHQUFBTSxLQUFBLENBQVJOLFFBQVE7RUFFUixJQUFNZixLQUFLLEdBQUcsSUFBQUMsd0JBQWUsRUFBQSxDQUFFO0VBQy9CLElBQU1TLEdBQUcsR0FBRyxJQUFBUCwyQkFBZ0IsRUFBQ0gsS0FBSyxFQUFFLFVBQUNJLEtBQUs7SUFBQSxPQUFLLElBQUFDLHVCQUFZLEVBQUNELEtBQUssQ0FBQ0UsTUFBTSxFQUFFVixJQUFJLENBQUM7RUFBQSxFQUFDO0VBQ2hGLElBQU00QixTQUFTLEdBQUczQixZQUFZLEdBQUdBLFlBQVksQ0FBQ2EsR0FBRyxFQUFFZCxJQUFJLENBQUMsR0FBR2MsR0FBRztFQUM5RCxvQkFBT2UsaUJBQUssQ0FBQ0MsWUFBWSxDQUFDWCxRQUFRLE1BQUFZLGdCQUFBLGlCQUFLSixhQUFhLEVBQUdDLFNBQVMsQ0FBNkIsQ0FBQztBQUNoRyxDQUFDO0FBRURKLHFCQUFxQixDQUFDSCxXQUFXLEdBQUcseUJBQXlCO0FBQzdELElBQU1XLGlCQUFpQixnQkFBRyxJQUFBVCxXQUFJLEVBQUNDLHFCQUFxQixDQUFDO0FBRXJEO0FBQ0E7QUFDQTtBQUNBLElBQU1TLGVBQWUsR0FBeUIsU0FBeENBLGVBQWVBLENBQTBCdkQsS0FBSyxFQUFJO0VEOURwRCxJQUFJd0QsRUFBRTtFQytEUjtFQUNBO0VBQ0EsSUFBTUMsR0FBRyxHQUFHLElBQUFDLHlCQUFnQixFQUFBLENBQUU7RUFFOUI7RUFDQTtFQUNBO0VBQ0EsSUFBSUMsV0FBVyxHQUFHM0QsS0FBSztFQUN2QixJQUFJeUQsR0FBRyxDQUFDRyxhQUFhLEVBQUU7SUFDckIsSUFBTUMsTUFBTSxHQUFBekUsTUFBQSxDQUFBMEUsTUFBQSxDQUFBLENBQUEsQ0FBQSxFQUFpQ0wsR0FBRyxDQUFDRyxhQUFhLENBQUU7SUFDaEUsU0FBQUcsRUFBQSxNQUFBQyxZQUFBLEdBQWtCNUUsTUFBTSxDQUFDNkUsSUFBSSxDQUFDakUsS0FBSyxDQUFDLEVBQUErRCxFQUFBLEdBQUFDLFlBQUEsQ0FBQTVELE1BQUEsRUFBQTJELEVBQUEsSUFBRTtNQUFqQyxJQUFNRyxHQUFHLEdBQUFGLFlBQUEsQ0FBQUQsRUFBQTtNQUNaLElBQU1oRSxLQUFLLEdBQUlDLEtBQWlDLENBQUNrRSxHQUFHLENBQUM7TUFDckQsSUFBSW5FLEtBQUssS0FBS0UsU0FBUyxFQUFFNEQsTUFBTSxDQUFDSyxHQUFHLENBQUMsR0FBR25FLEtBQUs7SUFDOUM7SUFDQTRELFdBQVcsR0FBR0UsTUFBMEI7RUFDMUM7RUFFQSxJQUFBTSxZQUFBLEdBc0JJUixXQUFXO0lBckJibEIsUUFBUSxHQUFBMEIsWUFBQSxDQUFSMUIsUUFBUTtJQUNSbkIsSUFBSSxHQUFBNkMsWUFBQSxDQUFKN0MsSUFBSTtJQUNKUCxLQUFLLEdBQUFvRCxZQUFBLENBQUxwRCxLQUFLO0lBQ0xxRCxXQUFXLEdBQUFELFlBQUEsQ0FBWEMsV0FBVztJQUNYQyxLQUFLLEdBQUFGLFlBQUEsQ0FBTEUsS0FBSztJQUNMQyxRQUFRLEdBQUFILFlBQUEsQ0FBUkcsUUFBUTtJQUNSQyxjQUFjLEdBQUFKLFlBQUEsQ0FBZEksY0FBYztJQUFBQyxxQkFBQSxHQUFBTCxZQUFBLENBQ2RNLFNBQVM7SUFBVEEsU0FBUyxHQUFBRCxxQkFBQSxjQUFHLEVBQUUsR0FBQUEscUJBQUE7SUFBQUUscUJBQUEsR0FBQVAsWUFBQSxDQUNkUSxTQUFTO0lBQVRBLFNBQVMsR0FBQUQscUJBQUEsY0FBRyxXQUFXLEdBQUFBLHFCQUFBO0lBQ3ZCRSxNQUFNLEdBQUFULFlBQUEsQ0FBTlMsTUFBTTtJQUNOQyxTQUFTLEdBQUFWLFlBQUEsQ0FBVFUsU0FBUztJQUNUdEQsWUFBWSxHQUFBNEMsWUFBQSxDQUFaNUMsWUFBWTtJQUNaekIsU0FBUyxHQUFBcUUsWUFBQSxDQUFUckUsU0FBUztJQUNUMEIsY0FBYyxHQUFBMkMsWUFBQSxDQUFkM0MsY0FBYztJQUNkc0QsUUFBUSxHQUFBWCxZQUFBLENBQVJXLFFBQVE7SUFDRkMsUUFBUSxHQUFBWixZQUFBLENBQWRhLElBQUk7SUFBQUMscUJBQUEsR0FBQWQsWUFBQSxDQUNKMUMsU0FBUztJQUFUQSxTQUFTLEdBQUF3RCxxQkFBQSxjQUFHckYsa0JBQWtCLEdBQUFxRixxQkFBQTtJQUM5QnhFLFNBQVMsR0FBQTBELFlBQUEsQ0FBVDFELFNBQVM7SUFDVHdDLGFBQWEsR0FBQWtCLFlBQUEsQ0FBYmxCLGFBQWE7SUFDYmlDLGdCQUFnQixHQUFBZixZQUFBLENBQWhCZSxnQkFBZ0I7SUFDaEJDLGVBQWUsR0FBQWhCLFlBQUEsQ0FBZmdCLGVBQWU7RUFHakIsSUFBTUMsVUFBVSxHQUFHTCxRQUFRLEtBQUEsSUFBQSxJQUFSQSxRQUFRLEtBQUEsS0FBQSxDQUFBLEdBQVJBLFFBQVEsR0FBSXRCLEdBQUcsQ0FBQ3VCLElBQUk7RUFDdkMsSUFBTUssVUFBVSxHQUFHRCxVQUFVLEtBQUssTUFBTTtFQUV4QyxJQUFBRSxZQUFBLEdBTUksSUFBQUMseUJBQVcsRUFBQztNQUNkakUsSUFBSSxFQUFKQSxJQUFJO01BQ0orQyxLQUFLLEVBQUxBLEtBQUs7TUFDTEUsY0FBYyxFQUFkQSxjQUFjO01BQ2R0QixhQUFhLEVBQWJBLGFBQWE7TUFDYmlDLGdCQUFnQixFQUFoQkEsZ0JBQWdCO01BQ2hCQyxlQUFlLEVBQWZBO0lENUZBLENDNkZELENBQUM7SUFaQUssVUFBVSxHQUFBRixZQUFBLENBQVZFLFVBQVU7SUFDVkMsWUFBWSxHQUFBSCxZQUFBLENBQVpHLFlBQVk7SUFDWkMsSUFBSSxHQUFBSixZQUFBLENBQUpJLElBQUk7SUFDSkMsVUFBVSxHQUFBTCxZQUFBLENBQVZLLFVBQVU7SUFDVkMsV0FBVyxHQUFBTixZQUFBLENBQVhNLFdBQVc7RUFVYjtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsSUFBTUMsZUFBZSxHQUFHLElBQUFDLGFBQU0sRUFBdUQsSUFBSSxDQUFDO0VBQzFGLElBQU1DLGVBQWUsR0FBRyxJQUFBRCxhQUFNLEVBQXVELElBQUksQ0FBQztFQUUxRixJQUFNRSxhQUFhLEdBQUdILGVBQWUsQ0FBQ0ksT0FBTztFQUM3QyxJQUFJRCxhQUFhLEtBQUtBLGFBQWEsQ0FBQzFFLElBQUksS0FBS0EsSUFBSSxJQUFJLENBQUN1RCxTQUFTLENBQUMsRUFBRTtJQUNoRXBCLEdBQUcsQ0FBQ3lDLG1CQUFtQixDQUFDRixhQUFhLENBQUMxRSxJQUFJLEVBQUUwRSxhQUFhLENBQUNHLEVBQUUsQ0FBQztJQUM3RE4sZUFBZSxDQUFDSSxPQUFPLEdBQUcsSUFBSTtFQUNoQztFQUNBLElBQUkzRSxJQUFJLElBQUl1RCxTQUFTLEVBQUU7SUFDckJwQixHQUFHLENBQUMyQyxpQkFBaUIsQ0FBQzlFLElBQUksRUFBRXVELFNBQVMsQ0FBQztJQUN0Q2dCLGVBQWUsQ0FBQ0ksT0FBTyxHQUFHO01BQUUzRSxJQUFJLEVBQUpBLElBQUk7TUFBRTZFLEVBQUUsRUFBRXRCO0lBQVMsQ0FBRTtFQUNuRDtFQUVBLElBQU13QixhQUFhLEdBQUdOLGVBQWUsQ0FBQ0UsT0FBTztFQUM3QyxJQUFJSSxhQUFhLEtBQUtBLGFBQWEsQ0FBQy9FLElBQUksS0FBS0EsSUFBSSxJQUFJLENBQUN4QixTQUFTLENBQUMsRUFBRTtJQUNoRTJELEdBQUcsQ0FBQzZDLG1CQUFtQixDQUFDRCxhQUFhLENBQUMvRSxJQUFJLEVBQUUrRSxhQUFhLENBQUN2RyxTQUFTLENBQUM7SUFDcEVpRyxlQUFlLENBQUNFLE9BQU8sR0FBRyxJQUFJO0VBQ2hDO0VBQ0EsSUFBSTNFLElBQUksSUFBSXhCLFNBQVMsRUFBRTtJQUNyQjJELEdBQUcsQ0FBQzhDLGlCQUFpQixDQUFDakYsSUFBSSxFQUFFeEIsU0FBUyxDQUFDO0lBQ3RDaUcsZUFBZSxDQUFDRSxPQUFPLEdBQUc7TUFBRTNFLElBQUksRUFBSkEsSUFBSTtNQUFFeEIsU0FBUyxFQUFUQTtJQUFTLENBQUU7RUFDL0M7RUFFQSxJQUFBMEcsZ0JBQVMsRUFBQyxZQUFLO0lBQ2I7SUFDQTtJQUNBO0lBQ0E7SUFDQSxJQUFNQyxZQUFZLEdBQUdaLGVBQWUsQ0FBQ0ksT0FBTztJQUM1QyxJQUFJUSxZQUFZLEVBQUVoRCxHQUFHLENBQUMyQyxpQkFBaUIsQ0FBQ0ssWUFBWSxDQUFDbkYsSUFBSSxFQUFFbUYsWUFBWSxDQUFDTixFQUFFLENBQUM7SUFDM0UsSUFBTU8sWUFBWSxHQUFHWCxlQUFlLENBQUNFLE9BQU87SUFDNUMsSUFBSVMsWUFBWSxFQUFFakQsR0FBRyxDQUFDOEMsaUJBQWlCLENBQUNHLFlBQVksQ0FBQ3BGLElBQUksRUFBRW9GLFlBQVksQ0FBQzVHLFNBQVMsQ0FBQztJQUNsRixPQUFPLFlBQUs7TUFDVixJQUFNbEIsQ0FBQyxHQUFHaUgsZUFBZSxDQUFDSSxPQUFPO01BQ2pDLElBQUlySCxDQUFDLEVBQUU2RSxHQUFHLENBQUN5QyxtQkFBbUIsQ0FBQ3RILENBQUMsQ0FBQzBDLElBQUksRUFBRTFDLENBQUMsQ0FBQ3VILEVBQUUsQ0FBQztNQUM1QyxJQUFNUSxDQUFDLEdBQUdaLGVBQWUsQ0FBQ0UsT0FBTztNQUNqQyxJQUFJVSxDQUFDLEVBQUVsRCxHQUFHLENBQUM2QyxtQkFBbUIsQ0FBQ0ssQ0FBQyxDQUFDckYsSUFBSSxFQUFFcUYsQ0FBQyxDQUFDN0csU0FBUyxDQUFDO0lBQ3JELENBQUM7RUFDSCxDQUFDLEVBQUUsQ0FBQ3dCLElBQUksRUFBRW1DLEdBQUcsQ0FBQzJDLGlCQUFpQixFQUFFM0MsR0FBRyxDQUFDeUMsbUJBQW1CLEVBQUV6QyxHQUFHLENBQUM4QyxpQkFBaUIsRUFBRTlDLEdBQUcsQ0FBQzZDLG1CQUFtQixDQUFDLENBQUM7RUFFMUcsSUFBSTFCLE1BQU0sRUFBRSxPQUFPLElBQUk7RUFFdkIsSUFBSWdDLFlBQXVCO0VBQzNCLElBQUl2QixVQUFVLEVBQUU7SUFDZHVCLFlBQVksR0FDVixJQUFBcEUsZUFBQSxFQUFDSSxhQUFhLEVBQUE7TUFDWnRCLElBQUksRUFBRUEsSUFBSTtNQUNWeEIsU0FBUyxFQUFFQSxTQUFTO01BQ3BCVyxTQUFTLEVBQUVBLFNBQVM7TUFDcEJjLFlBQVksRUFBRUEsWUFBWTtNQUMxQkMsY0FBYyxFQUFFQSxjQUFjO01BQzlCQyxTQUFTLEVBQUVBO0lBQVMsQ0FBQSxDQUV2QjtFQUNILENBQUMsTUFBTTtJQUNMO0lBQ0E7SUFDQSxJQUFNb0YsUUFBUSxHQUFHakIsV0FBVyxDQUFDbkQsUUFBUSxDQUFDO0lBQ3RDLElBQUlsQixZQUFZLElBQUlELElBQUksaUJBQUk2QixpQkFBSyxDQUFDMkQsY0FBYyxDQUFDRCxRQUFRLENBQUMsRUFBRTtNQUMxREQsWUFBWSxHQUNWLElBQUFwRSxlQUFBLEVBQUNjLGlCQUFpQixFQUFBO1FBQUNoQyxJQUFJLEVBQUVBLElBQUk7UUFBRUMsWUFBWSxFQUFFQSxZQUFZO1FBQUUwQixhQUFhLEVBQUVBLGFBQWE7UUFBQVIsUUFBQSxFQUNwRm9FO01BQThCLENBQUEsQ0FFbEM7SUFDSCxDQUFDLE1BQU07TUFDTEQsWUFBWSxHQUFHQyxRQUFRO0lBQ3pCO0VBQ0Y7RUFFQSxJQUFNRSxPQUFPLEdBQUcsSUFBQUMsc0JBQVUsRUFBQ3JDLFNBQVMsQ0FBQztFQUVyQztFQUNBO0VBQ0EsSUFBTXNDLE9BQU8sR0FBRyxDQUFBekQsRUFBQSxHQUFBQyxHQUFHLENBQUN5RCxNQUFNLE1BQUEsSUFBQSxJQUFBMUQsRUFBQSxLQUFBLEtBQUEsQ0FBQSxHQUFBLEtBQUEsQ0FBQSxHQUFBQSxFQUFBLENBQUV5RCxPQUFPO0VBQ25DLElBQU1FLFFBQVEsR0FDWkYsT0FBTyxLQUFLaEgsU0FBUyxHQUNqQjtJQUFFbUgsWUFBWSxFQUFFLE9BQU9ILE9BQU8sS0FBSyxRQUFRLE1BQUFJLE1BQUEsQ0FBTUosT0FBTyxVQUFPQTtFQUFPLENBQUUsR0FDeEVoSCxTQUFTO0VBRWYsSUFBTXFILEtBQUssR0FDVCxJQUFBQyxnQkFBQSxFQUFBLEtBQUEsRUFBQTtJQUNFOUMsU0FBUyxFQUFFc0MsT0FBTyxDQUNoQjlHLFNBQVMsRUFDVCxJQUFBdUgsbUJBQU8sRUFBQ1QsT0FBTyxDQUFDckIsSUFBSSxDQUFDLEVBQUVqQixTQUFTLENBQUMsQ0FDbEM7SUFDRGdELEtBQUssRUFBRU4sUUFBUTtJQUFBMUUsUUFBQSxFQUFBLENBRWQxQixLQUFLLElBQ0osSUFBQXdHLGdCQUFBLEVBQUEsS0FBQSxFQUFBO01BQ0U5QyxTQUFTLEVBQUVzQyxPQUFPLENBQ2hCLGVBQWUsRUFDZixJQUFBUyxtQkFBTyxFQUNMVCxPQUFPLENBQUMsd0JBQXdCLENBQUMsRUFDakNwQixVQUFVLElBQUlvQixPQUFPLGtCQUFBTSxNQUFBLENBQWtCMUIsVUFBVSxDQUFFLENBQUMsQ0FDckQsQ0FDRjtNQUFBbEQsUUFBQSxFQUFBLENBRUQsSUFBQUQsZUFBQSxFQUFDa0YsMkJBQWUsRUFBQTtRQUNkQyxFQUFFLEVBQUMsT0FBTztRQUNWakMsSUFBSSxFQUFFa0MsMkJBQWdCLENBQUNsQyxJQUFJLENBQUM7UUFDNUJtQyxLQUFLLEVBQUVDLDJCQUFnQjtRQUN2QnJELFNBQVMsRUFBRXNDLE9BQU8sQ0FBQyxPQUFPLENBQUM7UUFBQXRFLFFBQUEsRUFFMUIxQjtNQUFLLENBQUEsQ0FDVSxFQUNqQnFELFdBQVcsSUFDVixJQUFBNUIsZUFBQSxFQUFDdUYsMEJBQWMsRUFBQTtRQUNiSixFQUFFLEVBQUMsS0FBSztRQUNSbEQsU0FBUyxFQUFFc0MsT0FBTyxDQUFDLGFBQWEsQ0FBQztRQUNqQ3JCLElBQUksRUFBRXNDLGdDQUFxQjtRQUMzQkgsS0FBSyxFQUFFSSxpQ0FBc0I7UUFBQXhGLFFBQUEsRUFFNUIyQjtNQUFXLENBQUEsQ0FFZjtJQUFBLENBQUEsQ0FFSixFQUVELElBQUFtRCxnQkFBQSxFQUFBLEtBQUEsRUFBQTtNQUFLOUMsU0FBUyxFQUFFc0MsT0FBTyxDQUFDLFNBQVMsQ0FBQztNQUFBdEUsUUFBQSxFQUFBLENBQy9CbUUsWUFBWSxFQUVacEIsVUFBVSxJQUNULElBQUFoRCxlQUFBLEVBQUN1RiwwQkFBYyxFQUFBO1FBQ2JKLEVBQUUsRUFBQyxLQUFLO1FBQ1JsRCxTQUFTLEVBQUVzQyxPQUFPLENBQUMsT0FBTyxDQUFDO1FBQzNCckIsSUFBSSxFQUFFd0MsMEJBQWU7UUFDckJMLEtBQUssRUFBRU0sMkJBQWdCO1FBQUExRixRQUFBLEVBRXRCK0M7TUFBVSxDQUFBLENBRWQsRUFFQSxDQUFDQSxVQUFVLElBQUlDLFlBQVksSUFDMUIsSUFBQWpELGVBQUEsRUFBQ3VGLDBCQUFjLEVBQUE7UUFDYkosRUFBRSxFQUFDLEtBQUs7UUFDUmxELFNBQVMsRUFBRXNDLE9BQU8sQ0FBQyxTQUFTLENBQUM7UUFDN0JyQixJQUFJLEVBQUUwQyw0QkFBaUI7UUFDdkJQLEtBQUssRUFBRVEsNkJBQWtCO1FBQUE1RixRQUFBLEVBRXhCZ0Q7TUFBWSxDQUFBLENBRWhCLEVBRUEsQ0FBQ0QsVUFBVSxJQUFJLENBQUNDLFlBQVksSUFBSW5CLFFBQVEsSUFDdkMsSUFBQTlCLGVBQUEsRUFBQ3VGLDBCQUFjLEVBQUE7UUFDYkosRUFBRSxFQUFDLEtBQUs7UUFDUmxELFNBQVMsRUFBRXNDLE9BQU8sQ0FBQyxVQUFVLENBQUM7UUFDOUJyQixJQUFJLEVBQUU0Qyw2QkFBa0I7UUFDeEJULEtBQUssRUFBRVUsOEJBQW1CO1FBQUE5RixRQUFBLEVBRXpCNkI7TUFBUSxDQUFBLENBRVo7SUFBQSxDQUFBLENBQ0c7RUFBQSxDQUFBLENBRVQ7RUFFRCxJQUFJYixHQUFHLENBQUMrRSxJQUFJLEVBQUU7SUFDWixJQUFNM0UsT0FBTSxHQUFBekUsTUFBQSxDQUFBMEUsTUFBQSxDQUFBMUUsTUFBQSxDQUFBMEUsTUFBQSxDQUFBLENBQUEsQ0FBQSxFQUFRTCxHQUFHLENBQUNxQixRQUFRLENBQUEsRUFBS0EsUUFBUSxDQUFFO0lBQy9DLElBQUEyRCxZQUFBLEdBQWdENUUsT0FBTSxDQUE5QzZFLElBQUk7TUFBSkEsSUFBSSxHQUFBRCxZQUFBLGNBQUdFLDRCQUFnQixHQUFBRixZQUFBO01BQUVHLEVBQUUsR0FBYS9FLE9BQU0sQ0FBckIrRSxFQUFFO01BQUVDLEVBQUUsR0FBU2hGLE9BQU0sQ0FBakJnRixFQUFFO01BQUVDLEVBQUUsR0FBS2pGLE9BQU0sQ0FBYmlGLEVBQUU7SUFDM0MsT0FBTyxJQUFBdEcsZUFBQSxFQUFDdUcsU0FBRyxFQUFBO01BQUNMLElBQUksRUFBRUEsSUFBSTtNQUFFRSxFQUFFLEVBQUVBLEVBQUU7TUFBRUMsRUFBRSxFQUFFQSxFQUFFO01BQUVDLEVBQUUsRUFBRUEsRUFBRTtNQUFBckcsUUFBQSxFQUFHNkU7SUFBSyxDQUFBLENBQU87RUFDL0Q7RUFFQSxPQUFPQSxLQUFLO0FBQ2QsQ0FBQztBQUVEL0QsZUFBZSxDQUFDWixXQUFXLEdBQUcsYUFBYTtBQUVwQyxJQUFNcUcsV0FBVyxHQUFBQyxPQUFBLENBQUFELFdBQUEsZ0JBQUcsSUFBQW5HLFdBQUksRUFBQ1UsZUFBZSxDQUFDO0FBQUMsSUFBQTJGLFFBQUEsR0FBQUQsT0FBQSxjQUVsQ0QsV0FBVyIsImZpbGUiOiJjb21wb25lbnRzL1Byb0Zvcm0vUHJvRm9ybUl0ZW0uanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBqc3ggYXMgX2pzeCwganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IFJlYWN0LCB7IG1lbW8sIHVzZUVmZmVjdCwgdXNlUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgQ29sIH0gZnJvbSAnLi4vR3JpZCc7XG5pbXBvcnQgeyBUeXBvZ3JhcGh5Qm9keSwgVHlwb2dyYXBoeUxhYmVsIH0gZnJvbSAnLi4vVHlwb2dyYXBoeSc7XG5pbXBvcnQgeyBkZWZhdWx0IGFzIGNsYXNzbmFtZXMsIGpvaW5DbHMgfSBmcm9tICcuLi8uLi91dGlscy9jbGFzc25hbWVzJztcbmltcG9ydCB7IHVzZUZvcm1JdGVtIH0gZnJvbSAnLi9jb3JlL3VzZUZvcm1JdGVtJztcbmltcG9ydCB7IEZPUk1fRVJST1JfQ09MT1IsIEZPUk1fRVJST1JfU0laRSwgRk9STV9XQVJOSU5HX0NPTE9SLCBGT1JNX1dBUk5JTkdfU0laRSwgRk9STV9ERVNDUklQVElPTl9DT0xPUiwgRk9STV9ERVNDUklQVElPTl9TSVpFLCBGT1JNX0ZFRURCQUNLX0NPTE9SLCBGT1JNX0ZFRURCQUNLX1NJWkUsIEZPUk1fTEFCRUxfQ09MT1IsIEZPUk1fTEFCRUxfU0laRVMsIH0gZnJvbSAnLi9jb3JlL2NvbnN0YW50cyc7XG5pbXBvcnQgeyB1c2VQcm9Gb3JtU3RhYmxlLCB1c2VQcm9Gb3JtU3RvcmUgfSBmcm9tICcuL2NvbnRleHQnO1xuaW1wb3J0IHsgdXNlU3RvcmVTZWxlY3Rvciwgc2hhbGxvd0VxdWFsQXJyYXlzIH0gZnJvbSAnLi9jb3JlL2Zvcm1TdG9yZSc7XG5pbXBvcnQgeyByZXNvbHZlVmFsdWUgfSBmcm9tICcuL2NvcmUvcGF0aFV0aWxzJztcbmltcG9ydCB7IERFRkFVTFRfQ09MX1NQQU4gfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyB2YWx1ZUVudW1Ub09wdGlvbnMsIGZvcm1hdERhdGVCeVBhdHRlcm4sIERBVEVfRk9STUFULCBEQVRFX1RJTUVfRk9STUFUIH0gZnJvbSAnLi91dGlscyc7XG5jb25zdCBFTVBUWV9URVhUX0RFRkFVTFQgPSAnLSc7XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJlYWQtbW9kZSByZW5kZXJpbmcgZm9yIGVhY2ggc3VwcG9ydGVkIHZhbHVlVHlwZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5mdW5jdGlvbiByZW5kZXJCeVZhbHVlVHlwZSh2YWx1ZVR5cGUsIHZhbHVlLCBwcm9wcykge1xuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSAnJylcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgc3dpdGNoICh2YWx1ZVR5cGUpIHtcbiAgICAgICAgY2FzZSAncGFzc3dvcmQnOlxuICAgICAgICAgICAgcmV0dXJuICcqJy5yZXBlYXQoU3RyaW5nKHZhbHVlKS5sZW5ndGgpO1xuICAgICAgICBjYXNlICdzd2l0Y2gnOlxuICAgICAgICAgICAgcmV0dXJuIHZhbHVlID8gJ09uJyA6ICdPZmYnO1xuICAgICAgICBjYXNlICdkaWdpdCc6IHtcbiAgICAgICAgICAgIGNvbnN0IG51bSA9IE51bWJlcih2YWx1ZSk7XG4gICAgICAgICAgICBpZiAoTnVtYmVyLmlzTmFOKG51bSkpXG4gICAgICAgICAgICAgICAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG4gICAgICAgICAgICByZXR1cm4gbnVtLnRvTG9jYWxlU3RyaW5nKCk7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAnc2VsZWN0JzpcbiAgICAgICAgY2FzZSAncmFkaW8nOlxuICAgICAgICBjYXNlICd0YWcnOiB7XG4gICAgICAgICAgICBpZiAoIXByb3BzLnZhbHVlRW51bSlcbiAgICAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB2YWx1ZUVudW1Ub09wdGlvbnMocHJvcHMudmFsdWVFbnVtKTtcbiAgICAgICAgICAgIGNvbnN0IG1hdGNoID0gb3B0aW9ucy5maW5kKChvKSA9PiBTdHJpbmcoby52YWx1ZSkgPT09IFN0cmluZyh2YWx1ZSkpO1xuICAgICAgICAgICAgcmV0dXJuIG1hdGNoID8gbWF0Y2gubGFiZWwgOiBTdHJpbmcodmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJ2RhdGUnOlxuICAgICAgICAgICAgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgRGF0ZSA/IGZvcm1hdERhdGVCeVBhdHRlcm4odmFsdWUsIERBVEVfRk9STUFUKSA6IFN0cmluZyh2YWx1ZSk7XG4gICAgICAgIGNhc2UgJ2RhdGVUaW1lJzpcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIERhdGUgPyBmb3JtYXREYXRlQnlQYXR0ZXJuKHZhbHVlLCBEQVRFX1RJTUVfRk9STUFUKSA6IFN0cmluZyh2YWx1ZSk7XG4gICAgICAgIGNhc2UgJ3RleHQnOlxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG4gICAgfVxufVxuY29uc3QgUmVhZG9ubHlDaGlsZEJhc2UgPSAoeyBuYW1lLCB2YWx1ZVR5cGUsIHZhbHVlRW51bSwgY29udmVydFZhbHVlLCByZWFkb25seVJlbmRlciwgZW1wdHlUZXh0LCB9KSA9PiB7XG4gICAgY29uc3Qgc3RvcmUgPSB1c2VQcm9Gb3JtU3RvcmUoKTtcbiAgICAvLyBTdWJzY3JpYmUgcGVyLWZpZWxkOyBvbmx5IGEgY3VzdG9tIHJlYWRvbmx5UmVuZGVyICh3aGljaCByZWNlaXZlcyBBTExcbiAgICAvLyB2YWx1ZXMpIG5lZWRzIHRvIHRyYWNrIHRoZSB3aG9sZSB2YWx1ZXMgb2JqZWN0LlxuICAgIGNvbnN0IFtyYXcsIGFsbFZhbHVlc10gPSB1c2VTdG9yZVNlbGVjdG9yKHN0b3JlLCAoc3RhdGUpID0+IFtcbiAgICAgICAgbmFtZSA/IHJlc29sdmVWYWx1ZShzdGF0ZS52YWx1ZXMsIG5hbWUpIDogdW5kZWZpbmVkLFxuICAgICAgICByZWFkb25seVJlbmRlciA/IHN0YXRlLnZhbHVlcyA6IHVuZGVmaW5lZCxcbiAgICBdLCBzaGFsbG93RXF1YWxBcnJheXMpO1xuICAgIGNvbnN0IHZhbHVlID0gY29udmVydFZhbHVlICYmIG5hbWUgPyBjb252ZXJ0VmFsdWUocmF3LCBuYW1lKSA6IHJhdztcbiAgICBpZiAocmVhZG9ubHlSZW5kZXIpIHtcbiAgICAgICAgY29uc3Qgbm9kZSA9IHJlYWRvbmx5UmVuZGVyKHZhbHVlLCBhbGxWYWx1ZXMgIT09IG51bGwgJiYgYWxsVmFsdWVzICE9PSB2b2lkIDAgPyBhbGxWYWx1ZXMgOiBzdG9yZS5nZXRTdGF0ZSgpLnZhbHVlcyk7XG4gICAgICAgIHJldHVybiBfanN4KFwic3BhblwiLCB7IGNoaWxkcmVuOiBub2RlICE9PSBudWxsICYmIG5vZGUgIT09IHZvaWQgMCA/IG5vZGUgOiBlbXB0eVRleHQgfSk7XG4gICAgfVxuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSAnJykge1xuICAgICAgICByZXR1cm4gX2pzeChcInNwYW5cIiwgeyBjaGlsZHJlbjogZW1wdHlUZXh0IH0pO1xuICAgIH1cbiAgICBjb25zdCByZW5kZXJlZCA9IHJlbmRlckJ5VmFsdWVUeXBlKHZhbHVlVHlwZSwgdmFsdWUsIHsgdmFsdWVFbnVtIH0pO1xuICAgIHJldHVybiBfanN4KFwic3BhblwiLCB7IGNoaWxkcmVuOiByZW5kZXJlZCAhPT0gbnVsbCAmJiByZW5kZXJlZCAhPT0gdm9pZCAwID8gcmVuZGVyZWQgOiBlbXB0eVRleHQgfSk7XG59O1xuUmVhZG9ubHlDaGlsZEJhc2UuZGlzcGxheU5hbWUgPSAnUHJvRm9ybUl0ZW1SZWFkb25seSc7XG5jb25zdCBSZWFkb25seUNoaWxkID0gbWVtbyhSZWFkb25seUNoaWxkQmFzZSk7XG5jb25zdCBDb252ZXJ0VmFsdWVDaGlsZEJhc2UgPSAoeyBuYW1lLCBjb252ZXJ0VmFsdWUsIHZhbHVlUHJvcE5hbWUgPSAndmFsdWUnLCBjaGlsZHJlbiwgfSkgPT4ge1xuICAgIGNvbnN0IHN0b3JlID0gdXNlUHJvRm9ybVN0b3JlKCk7XG4gICAgY29uc3QgcmF3ID0gdXNlU3RvcmVTZWxlY3RvcihzdG9yZSwgKHN0YXRlKSA9PiByZXNvbHZlVmFsdWUoc3RhdGUudmFsdWVzLCBuYW1lKSk7XG4gICAgY29uc3QgY29udmVydGVkID0gY29udmVydFZhbHVlID8gY29udmVydFZhbHVlKHJhdywgbmFtZSkgOiByYXc7XG4gICAgcmV0dXJuIFJlYWN0LmNsb25lRWxlbWVudChjaGlsZHJlbiwgeyBbdmFsdWVQcm9wTmFtZV06IGNvbnZlcnRlZCB9KTtcbn07XG5Db252ZXJ0VmFsdWVDaGlsZEJhc2UuZGlzcGxheU5hbWUgPSAnUHJvRm9ybUl0ZW1Db252ZXJ0VmFsdWUnO1xuY29uc3QgQ29udmVydFZhbHVlQ2hpbGQgPSBtZW1vKENvbnZlcnRWYWx1ZUNoaWxkQmFzZSk7XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFByb0Zvcm1JdGVtXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmNvbnN0IFByb0Zvcm1JdGVtQmFzZSA9IChwcm9wcykgPT4ge1xuICAgIHZhciBfYTtcbiAgICAvLyBTdGFibGUgc2xpY2Ugb25seSDigJQgdmFsdWUvZXJyb3IgcmVhY3Rpdml0eSBsaXZlcyBpbiB1c2VGb3JtSXRlbSdzXG4gICAgLy8gcGVyLWZpZWxkIHN1YnNjcmlwdGlvbiwgc28gdGhpcyBzaGVsbCBuZXZlciByZS1yZW5kZXJzIGZvciBzaWJsaW5ncy5cbiAgICBjb25zdCBjdHggPSB1c2VQcm9Gb3JtU3RhYmxlKCk7XG4gICAgLy8gRm9ybS1sZXZlbCBgZm9ybUl0ZW1Qcm9wc2AgYWN0IGFzIERFRkFVTFRTOyBwcm9wcyBleHBsaWNpdGx5IHNldCBvbiB0aGVcbiAgICAvLyBpdGVtIHdpbi4gSlNYIGZyZXF1ZW50bHkgcGFzc2VzIGB1bmRlZmluZWRgIGZvciB1bnNldCBwcm9wcyAoZS5nLiB0aGVcbiAgICAvLyBjcmVhdGVQcm9Gb3JtRmllbGQgcGFzcy10aHJvdWdoKSwgc28gb25seSBkZWZpbmVkIHZhbHVlcyBtYXkgb3ZlcnJpZGUuXG4gICAgbGV0IG1lcmdlZFByb3BzID0gcHJvcHM7XG4gICAgaWYgKGN0eC5mb3JtSXRlbVByb3BzKSB7XG4gICAgICAgIGNvbnN0IG1lcmdlZCA9IE9iamVjdC5hc3NpZ24oe30sIGN0eC5mb3JtSXRlbVByb3BzKTtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMocHJvcHMpKSB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHByb3BzW2tleV07XG4gICAgICAgICAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICBtZXJnZWRba2V5XSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIG1lcmdlZFByb3BzID0gbWVyZ2VkO1xuICAgIH1cbiAgICBjb25zdCB7IGNoaWxkcmVuLCBuYW1lLCBsYWJlbCwgZGVzY3JpcHRpb24sIHJ1bGVzLCBmZWVkYmFjaywgdmFsaWRhdGVTdGF0dXMsIGNsYXNzTmFtZSA9ICcnLCBwcmVmaXhDbHMgPSAnZm9ybS1pdGVtJywgaGlkZGVuLCB0cmFuc2Zvcm0sIGNvbnZlcnRWYWx1ZSwgdmFsdWVUeXBlLCByZWFkb25seVJlbmRlciwgY29sUHJvcHMsIG1vZGU6IG1vZGVQcm9wLCBlbXB0eVRleHQgPSBFTVBUWV9URVhUX0RFRkFVTFQsIHZhbHVlRW51bSwgdmFsdWVQcm9wTmFtZSwgdmFsaWRhdGVEZWJvdW5jZSwgdmFsaWRhdGVUcmlnZ2VyLCB9ID0gbWVyZ2VkUHJvcHM7XG4gICAgY29uc3QgbWVyZ2VkTW9kZSA9IG1vZGVQcm9wICE9PSBudWxsICYmIG1vZGVQcm9wICE9PSB2b2lkIDAgPyBtb2RlUHJvcCA6IGN0eC5tb2RlO1xuICAgIGNvbnN0IGlzUmVhZG9ubHkgPSBtZXJnZWRNb2RlID09PSAncmVhZCc7XG4gICAgY29uc3QgeyBmaWVsZEVycm9yLCBmaWVsZFdhcm5pbmcsIHNpemUsIGxhYmVsQWxpZ24sIGluamVjdEZpZWxkLCB9ID0gdXNlRm9ybUl0ZW0oe1xuICAgICAgICBuYW1lLFxuICAgICAgICBydWxlcyxcbiAgICAgICAgdmFsaWRhdGVTdGF0dXMsXG4gICAgICAgIHZhbHVlUHJvcE5hbWUsXG4gICAgICAgIHZhbGlkYXRlRGVib3VuY2UsXG4gICAgICAgIHZhbGlkYXRlVHJpZ2dlcixcbiAgICB9KTtcbiAgICAvLyBSZWdpc3RlciB0cmFuc2Zvcm0gLyB2YWx1ZVR5cGUgRFVSSU5HIHJlbmRlciAoaWRlbXBvdGVudCByZWYgd3JpdGVzLCBsaWtlXG4gICAgLy8gcmVnaXN0ZXJGaWVsZCk6IGNvbnN1bWVycyByZW5kZXJlZCBsYXRlciBpbiB0aGUgc2FtZSBwYXNzIOKAlCBlLmcuIGFcbiAgICAvLyBEZXBlbmRlbmN5IHJlYWRpbmcgZm9ybWF0dGVkIHZhbHVlcyDigJQgbXVzdCBhbHJlYWR5IHNlZSB0aGVtLiBFZmZlY3RzXG4gICAgLy8gd291bGQgcmVnaXN0ZXIgdG9vIGxhdGUgKGFmdGVyIHRoZSB3aG9sZSB0cmVlIHJlbmRlcmVkKS5cbiAgICAvL1xuICAgIC8vIEVhY2ggaW5zdGFuY2UgdHJhY2tzIHRoZSB7bmFtZSwgdmFsdWV9IFBBSVIgaXQgcmVnaXN0ZXJlZC4gUmVtb3ZhbCBpc1xuICAgIC8vIGFsd2F5cyBwZXJmb3JtZWQgd2l0aCB0aGUgcGFpcidzIG93biBuYW1lIEFORCB2YWx1ZTogYW4gaXRlbSB3aXRob3V0IGFcbiAgICAvLyB0cmFuc2Zvcm0gbmV2ZXIgdG91Y2hlcyBhIHNhbWUtbmFtZSBzaWJsaW5nJ3MgcmVnaXN0cmF0aW9uLCBhbiB1bm1vdW50XG4gICAgLy8gY2xlYW51cCBjYW4ndCB3aXBlIGEgc3VjY2Vzc29yJ3MgKHZhbHVlLWd1YXJkZWQpLCBhbmQgYSBOQU1FIGNoYW5nZVxuICAgIC8vIHJlbW92ZXMgdGhlIG9sZCBuYW1lJ3MgZW50cnkgd2l0aCB0aGUgT0xEIHZhbHVlIGJlZm9yZSB0aGUgcmVmIGlzXG4gICAgLy8gb3ZlcndyaXR0ZW4gKGEgbGl2ZSBzaW5nbGUtdmFsdWUgcmVmIHdvdWxkIGxlYWsgaXQpLlxuICAgIGNvbnN0IG93blRyYW5zZm9ybVJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBvd25WYWx1ZVR5cGVSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgcHJldlRyYW5zZm9ybSA9IG93blRyYW5zZm9ybVJlZi5jdXJyZW50O1xuICAgIGlmIChwcmV2VHJhbnNmb3JtICYmIChwcmV2VHJhbnNmb3JtLm5hbWUgIT09IG5hbWUgfHwgIXRyYW5zZm9ybSkpIHtcbiAgICAgICAgY3R4LnVucmVnaXN0ZXJUcmFuc2Zvcm0ocHJldlRyYW5zZm9ybS5uYW1lLCBwcmV2VHJhbnNmb3JtLmZuKTtcbiAgICAgICAgb3duVHJhbnNmb3JtUmVmLmN1cnJlbnQgPSBudWxsO1xuICAgIH1cbiAgICBpZiAobmFtZSAmJiB0cmFuc2Zvcm0pIHtcbiAgICAgICAgY3R4LnJlZ2lzdGVyVHJhbnNmb3JtKG5hbWUsIHRyYW5zZm9ybSk7XG4gICAgICAgIG93blRyYW5zZm9ybVJlZi5jdXJyZW50ID0geyBuYW1lLCBmbjogdHJhbnNmb3JtIH07XG4gICAgfVxuICAgIGNvbnN0IHByZXZWYWx1ZVR5cGUgPSBvd25WYWx1ZVR5cGVSZWYuY3VycmVudDtcbiAgICBpZiAocHJldlZhbHVlVHlwZSAmJiAocHJldlZhbHVlVHlwZS5uYW1lICE9PSBuYW1lIHx8ICF2YWx1ZVR5cGUpKSB7XG4gICAgICAgIGN0eC51bnJlZ2lzdGVyVmFsdWVUeXBlKHByZXZWYWx1ZVR5cGUubmFtZSwgcHJldlZhbHVlVHlwZS52YWx1ZVR5cGUpO1xuICAgICAgICBvd25WYWx1ZVR5cGVSZWYuY3VycmVudCA9IG51bGw7XG4gICAgfVxuICAgIGlmIChuYW1lICYmIHZhbHVlVHlwZSkge1xuICAgICAgICBjdHgucmVnaXN0ZXJWYWx1ZVR5cGUobmFtZSwgdmFsdWVUeXBlKTtcbiAgICAgICAgb3duVmFsdWVUeXBlUmVmLmN1cnJlbnQgPSB7IG5hbWUsIHZhbHVlVHlwZSB9O1xuICAgIH1cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICAvLyBSRS1SRUdJU1RFUiBpbiB0aGUgYm9keTogU3RyaWN0TW9kZSdzIG1vdW504oaSY2xlYW51cOKGknJlLXJ1biBjeWNsZSBhbmRcbiAgICAgICAgLy8ga2V5ZWQgcmVtb3VudHMgKG9sZCBpbnN0YW5jZSdzIGNsZWFudXAgcnVucyBBRlRFUiB0aGUgbmV3IHJlbmRlclxuICAgICAgICAvLyByZWdpc3RlcmVkKSBib3RoIGVuZCB3aXRoIGEgY2xlYW51cCBoYXZpbmcgZGVsZXRlZCB0aGUgZW50cnkg4oCUIHRoZVxuICAgICAgICAvLyBlZmZlY3QgYm9keSBtdXN0IHJlc3RvcmUgdGhlIGxhdGVzdCByZWdpc3RyYXRpb24uXG4gICAgICAgIGNvbnN0IHRyYW5zZm9ybVJlZyA9IG93blRyYW5zZm9ybVJlZi5jdXJyZW50O1xuICAgICAgICBpZiAodHJhbnNmb3JtUmVnKVxuICAgICAgICAgICAgY3R4LnJlZ2lzdGVyVHJhbnNmb3JtKHRyYW5zZm9ybVJlZy5uYW1lLCB0cmFuc2Zvcm1SZWcuZm4pO1xuICAgICAgICBjb25zdCB2YWx1ZVR5cGVSZWcgPSBvd25WYWx1ZVR5cGVSZWYuY3VycmVudDtcbiAgICAgICAgaWYgKHZhbHVlVHlwZVJlZylcbiAgICAgICAgICAgIGN0eC5yZWdpc3RlclZhbHVlVHlwZSh2YWx1ZVR5cGVSZWcubmFtZSwgdmFsdWVUeXBlUmVnLnZhbHVlVHlwZSk7XG4gICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0ID0gb3duVHJhbnNmb3JtUmVmLmN1cnJlbnQ7XG4gICAgICAgICAgICBpZiAodClcbiAgICAgICAgICAgICAgICBjdHgudW5yZWdpc3RlclRyYW5zZm9ybSh0Lm5hbWUsIHQuZm4pO1xuICAgICAgICAgICAgY29uc3QgdiA9IG93blZhbHVlVHlwZVJlZi5jdXJyZW50O1xuICAgICAgICAgICAgaWYgKHYpXG4gICAgICAgICAgICAgICAgY3R4LnVucmVnaXN0ZXJWYWx1ZVR5cGUodi5uYW1lLCB2LnZhbHVlVHlwZSk7XG4gICAgICAgIH07XG4gICAgfSwgW25hbWUsIGN0eC5yZWdpc3RlclRyYW5zZm9ybSwgY3R4LnVucmVnaXN0ZXJUcmFuc2Zvcm0sIGN0eC5yZWdpc3RlclZhbHVlVHlwZSwgY3R4LnVucmVnaXN0ZXJWYWx1ZVR5cGVdKTtcbiAgICBpZiAoaGlkZGVuKVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICBsZXQgY29udHJvbENoaWxkO1xuICAgIGlmIChpc1JlYWRvbmx5KSB7XG4gICAgICAgIGNvbnRyb2xDaGlsZCA9IChfanN4KFJlYWRvbmx5Q2hpbGQsIHsgbmFtZTogbmFtZSwgdmFsdWVUeXBlOiB2YWx1ZVR5cGUsIHZhbHVlRW51bTogdmFsdWVFbnVtLCBjb252ZXJ0VmFsdWU6IGNvbnZlcnRWYWx1ZSwgcmVhZG9ubHlSZW5kZXI6IHJlYWRvbmx5UmVuZGVyLCBlbXB0eVRleHQ6IGVtcHR5VGV4dCB9KSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICAvLyBJbmplY3QgZmlyc3Qgc28gdGhlIHJlYWwgZmllbGQgcmVjZWl2ZXMgdmFsdWUvb25DaGFuZ2Uvb25CbHVyLFxuICAgICAgICAvLyB0aGVuIG9wdGlvbmFsbHkgd3JhcCBpbiBDb252ZXJ0VmFsdWVDaGlsZCB0byBvdmVycmlkZSB0aGUgZGlzcGxheWVkIHZhbHVlLlxuICAgICAgICBjb25zdCBpbmplY3RlZCA9IGluamVjdEZpZWxkKGNoaWxkcmVuKTtcbiAgICAgICAgaWYgKGNvbnZlcnRWYWx1ZSAmJiBuYW1lICYmIFJlYWN0LmlzVmFsaWRFbGVtZW50KGluamVjdGVkKSkge1xuICAgICAgICAgICAgY29udHJvbENoaWxkID0gKF9qc3goQ29udmVydFZhbHVlQ2hpbGQsIHsgbmFtZTogbmFtZSwgY29udmVydFZhbHVlOiBjb252ZXJ0VmFsdWUsIHZhbHVlUHJvcE5hbWU6IHZhbHVlUHJvcE5hbWUsIGNoaWxkcmVuOiBpbmplY3RlZCB9KSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb250cm9sQ2hpbGQgPSBpbmplY3RlZDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBjbGFzc2VzID0gY2xhc3NuYW1lcyhwcmVmaXhDbHMpO1xuICAgIC8vIEZvcm0tbGV2ZWwgbGF5b3V0Lml0ZW1HYXAgb3ZlcnJpZGVzIHRoZSBzaXplLWNsYXNzIG1hcmdpbiAoaW5saW5lIHN0eWxlXG4gICAgLy8gd2lucyk7IGl0ZW1HYXA9MCBpcyBtZWFuaW5nZnVsLlxuICAgIGNvbnN0IGl0ZW1HYXAgPSAoX2EgPSBjdHgubGF5b3V0KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuaXRlbUdhcDtcbiAgICBjb25zdCBnYXBTdHlsZSA9IGl0ZW1HYXAgIT09IHVuZGVmaW5lZFxuICAgICAgICA/IHsgbWFyZ2luQm90dG9tOiB0eXBlb2YgaXRlbUdhcCA9PT0gJ251bWJlcicgPyBgJHtpdGVtR2FwfXB4YCA6IGl0ZW1HYXAgfVxuICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCBzaGVsbCA9IChfanN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3Nlcyh1bmRlZmluZWQsIGpvaW5DbHMoY2xhc3NlcyhzaXplKSwgY2xhc3NOYW1lKSksIHN0eWxlOiBnYXBTdHlsZSwgY2hpbGRyZW46IFtsYWJlbCAmJiAoX2pzeHMoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ2xhYmVsLXdyYXBwZXInLCBqb2luQ2xzKGNsYXNzZXMoJ2xhYmVsLXdyYXBwZXItdmVydGljYWwnKSwgbGFiZWxBbGlnbiAmJiBjbGFzc2VzKGBsYWJlbC13cmFwcGVyLSR7bGFiZWxBbGlnbn1gKSkpLCBjaGlsZHJlbjogW19qc3goVHlwb2dyYXBoeUxhYmVsLCB7IGFzOiBcImxhYmVsXCIsIHNpemU6IEZPUk1fTEFCRUxfU0laRVNbc2l6ZV0sIGNvbG9yOiBGT1JNX0xBQkVMX0NPTE9SLCBjbGFzc05hbWU6IGNsYXNzZXMoJ2xhYmVsJyksIGNoaWxkcmVuOiBsYWJlbCB9KSwgZGVzY3JpcHRpb24gJiYgKF9qc3goVHlwb2dyYXBoeUJvZHksIHsgYXM6IFwiZGl2XCIsIGNsYXNzTmFtZTogY2xhc3NlcygnZGVzY3JpcHRpb24nKSwgc2l6ZTogRk9STV9ERVNDUklQVElPTl9TSVpFLCBjb2xvcjogRk9STV9ERVNDUklQVElPTl9DT0xPUiwgY2hpbGRyZW46IGRlc2NyaXB0aW9uIH0pKV0gfSkpLCBfanN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygnY29udHJvbCcpLCBjaGlsZHJlbjogW2NvbnRyb2xDaGlsZCwgZmllbGRFcnJvciAmJiAoX2pzeChUeXBvZ3JhcGh5Qm9keSwgeyBhczogXCJkaXZcIiwgY2xhc3NOYW1lOiBjbGFzc2VzKCdlcnJvcicpLCBzaXplOiBGT1JNX0VSUk9SX1NJWkUsIGNvbG9yOiBGT1JNX0VSUk9SX0NPTE9SLCBjaGlsZHJlbjogZmllbGRFcnJvciB9KSksICFmaWVsZEVycm9yICYmIGZpZWxkV2FybmluZyAmJiAoX2pzeChUeXBvZ3JhcGh5Qm9keSwgeyBhczogXCJkaXZcIiwgY2xhc3NOYW1lOiBjbGFzc2VzKCd3YXJuaW5nJyksIHNpemU6IEZPUk1fV0FSTklOR19TSVpFLCBjb2xvcjogRk9STV9XQVJOSU5HX0NPTE9SLCBjaGlsZHJlbjogZmllbGRXYXJuaW5nIH0pKSwgIWZpZWxkRXJyb3IgJiYgIWZpZWxkV2FybmluZyAmJiBmZWVkYmFjayAmJiAoX2pzeChUeXBvZ3JhcGh5Qm9keSwgeyBhczogXCJkaXZcIiwgY2xhc3NOYW1lOiBjbGFzc2VzKCdmZWVkYmFjaycpLCBzaXplOiBGT1JNX0ZFRURCQUNLX1NJWkUsIGNvbG9yOiBGT1JNX0ZFRURCQUNLX0NPTE9SLCBjaGlsZHJlbjogZmVlZGJhY2sgfSkpXSB9KV0gfSkpO1xuICAgIGlmIChjdHguZ3JpZCkge1xuICAgICAgICBjb25zdCBtZXJnZWQgPSBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGN0eC5jb2xQcm9wcyksIGNvbFByb3BzKTtcbiAgICAgICAgY29uc3QgeyBzcGFuID0gREVGQVVMVF9DT0xfU1BBTiwgc20sIG1kLCBsZyB9ID0gbWVyZ2VkO1xuICAgICAgICByZXR1cm4gX2pzeChDb2wsIHsgc3Bhbjogc3Bhbiwgc206IHNtLCBtZDogbWQsIGxnOiBsZywgY2hpbGRyZW46IHNoZWxsIH0pO1xuICAgIH1cbiAgICByZXR1cm4gc2hlbGw7XG59O1xuUHJvRm9ybUl0ZW1CYXNlLmRpc3BsYXlOYW1lID0gJ1Byb0Zvcm1JdGVtJztcbmV4cG9ydCBjb25zdCBQcm9Gb3JtSXRlbSA9IG1lbW8oUHJvRm9ybUl0ZW1CYXNlKTtcbmV4cG9ydCBkZWZhdWx0IFByb0Zvcm1JdGVtOyIsbnVsbF0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
@@ -11,7 +11,6 @@ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/sli
11
11
  var _jsxRuntime = require("react/jsx-runtime");
12
12
  var _react = require("react");
13
13
  var _useMemoizedFn = _interopRequireDefault(require("@1money/hooks/useMemoizedFn"));
14
- var _useSafeState3 = _interopRequireDefault(require("@1money/hooks/useSafeState"));
15
14
  var _classnames = _interopRequireDefault(require("../../utils/classnames"));
16
15
  var _Button = require("../Button");
17
16
  var _Typography = require("../Typography");
@@ -27,6 +26,51 @@ var generateKey = function generateKey() {
27
26
  // Stable empty result for the no-value case — a fresh [] per selector run
28
27
  // would never compare equal and loop the subscription.
29
28
  var EMPTY_LIST = [];
29
+ // Field meta (errors/warnings/touched/validating) is stored FLAT, keyed by
30
+ // the positional path (`items.1.title`). Row operations shift the VALUES but
31
+ // not those keys — remap them in the same handler so every row keeps its own
32
+ // meta. `mapIndex` returns the new index for an old one, or null to drop it.
33
+ var LIST_META_KEYS = ['errors', 'warnings', 'touched', 'validating'];
34
+ function remapListMeta(store, listName, mapIndex) {
35
+ var state = store.getState();
36
+ var prefix = "".concat(listName, ".");
37
+ var patch = {};
38
+ for (var _i = 0, _LIST_META_KEYS = LIST_META_KEYS; _i < _LIST_META_KEYS.length; _i++) {
39
+ var metaKey = _LIST_META_KEYS[_i];
40
+ var source = state[metaKey];
41
+ var changed = false;
42
+ var next = {};
43
+ for (var _i2 = 0, _Object$keys = Object.keys(source); _i2 < _Object$keys.length; _i2++) {
44
+ var key = _Object$keys[_i2];
45
+ if (!key.startsWith(prefix)) {
46
+ next[key] = source[key];
47
+ continue;
48
+ }
49
+ var rest = key.slice(prefix.length);
50
+ var dotAt = rest.indexOf('.');
51
+ var indexStr = dotAt === -1 ? rest : rest.slice(0, dotAt);
52
+ if (!/^\d+$/.test(indexStr)) {
53
+ next[key] = source[key];
54
+ continue;
55
+ }
56
+ var newIndex = mapIndex(Number(indexStr));
57
+ if (newIndex === null) {
58
+ changed = true; // row removed — drop its meta
59
+ continue;
60
+ }
61
+ if (newIndex === Number(indexStr)) {
62
+ next[key] = source[key];
63
+ continue;
64
+ }
65
+ next["".concat(prefix).concat(newIndex).concat(dotAt === -1 ? '' : rest.slice(dotAt))] = source[key];
66
+ changed = true;
67
+ }
68
+ if (changed) {
69
+ patch[metaKey] = next;
70
+ }
71
+ }
72
+ if (Object.keys(patch).length > 0) store.setState(patch);
73
+ }
30
74
  // Row-level memo boundary: setNestedValue clones ONLY the edited row, so
31
75
  // untouched rows keep their record identity and bail out here while a
32
76
  // sibling row is being edited.
@@ -90,7 +134,7 @@ ListRowActionsBase.displayName = 'ProFormListRowActions';
90
134
  var ListRowActions = /*#__PURE__*/(0, _react.memo)(ListRowActionsBase);
91
135
  var ProFormListBase = function ProFormListBase(props) {
92
136
  var _a, _b;
93
- var rawName = props.name,
137
+ var fullName = props.name,
94
138
  label = props.label,
95
139
  min = props.min,
96
140
  max = props.max,
@@ -106,24 +150,30 @@ var ProFormListBase = function ProFormListBase(props) {
106
150
  children = props.children,
107
151
  onAfterAdd = props.onAfterAdd,
108
152
  onAfterRemove = props.onAfterRemove;
109
- // ── Nested list: prepend parent list name ──
110
- var parentCtx = (0, _context.useFormListContext)();
111
- var fullName = parentCtx.listName ? "".concat(parentCtx.listName, ".").concat(rawName) : rawName;
153
+ // List names are ABSOLUTE paths, like every other field name. A nested
154
+ // list is written with the full row path (`name={`${field.name}.tags`}`),
155
+ // exactly like row fields the bare parent list name carries no row
156
+ // index, so auto-prefixing with it could never address a row's own
157
+ // sub-list (it would resolve `parent.tags` instead of `parent.0.tags`).
112
158
  var _useProFormStable = (0, _context.useProFormStable)(),
113
- setFieldValue = _useProFormStable.setFieldValue;
159
+ setFieldValue = _useProFormStable.setFieldValue,
160
+ registerField = _useProFormStable.registerField,
161
+ unregisterField = _useProFormStable.unregisterField,
162
+ retainField = _useProFormStable.retainField,
163
+ releaseField = _useProFormStable.releaseField,
164
+ validateField = _useProFormStable.validateField;
114
165
  var store = (0, _context.useProFormStore)();
115
166
  var initialApplied = (0, _react.useRef)(false);
116
167
  var keysRef = (0, _react.useRef)([]);
117
- var _useSafeState = (0, _useSafeState3["default"])(null),
118
- _useSafeState2 = (0, _slicedToArray2["default"])(_useSafeState, 2),
119
- listError = _useSafeState2[0],
120
- setListError = _useSafeState2[1];
121
- // Subscribe ONLY to this list's own value: typing elsewhere in the form
122
- // leaves the array identity untouched and this component does not render.
123
- var list = (0, _formStore.useStoreSelector)(store, function (state) {
124
- var raw = fullName.includes('.') ? (0, _utils.getNestedValue)(state.values, fullName) : state.values[fullName];
125
- return Array.isArray(raw) ? raw : EMPTY_LIST;
126
- });
168
+ // Subscribe ONLY to this list's own value and error: typing elsewhere in
169
+ // the form leaves both untouched and this component does not render.
170
+ var _useStoreSelector = (0, _formStore.useStoreSelector)(store, function (state) {
171
+ var raw = fullName.includes('.') ? (0, _utils.getNestedValue)(state.values, fullName) : state.values[fullName];
172
+ return [Array.isArray(raw) ? raw : EMPTY_LIST, state.errors[fullName]];
173
+ }, _formStore.shallowEqualArrays),
174
+ _useStoreSelector2 = (0, _slicedToArray2["default"])(_useStoreSelector, 2),
175
+ list = _useStoreSelector2[0],
176
+ listError = _useStoreSelector2[1];
127
177
  // Sync keys with list length
128
178
  while (keysRef.current.length < list.length) {
129
179
  keysRef.current.push(generateKey());
@@ -131,33 +181,45 @@ var ProFormListBase = function ProFormListBase(props) {
131
181
  if (keysRef.current.length > list.length) {
132
182
  keysRef.current = keysRef.current.slice(0, list.length);
133
183
  }
134
- // Apply initial value once
184
+ // initialValue is MOUNT-ONLY (like form initialValues): the decision is
185
+ // made exactly once. Without the unconditional flag, a list seeded by form
186
+ // initialValues would re-apply initialValue when the user empties it.
135
187
  (0, _react.useEffect)(function () {
136
188
  if (initialApplied.current) return;
189
+ initialApplied.current = true;
137
190
  if (list.length !== 0) return;
138
191
  if (!Array.isArray(initialValue) || initialValue.length === 0) return;
139
- initialApplied.current = true;
140
192
  setFieldValue(fullName, (0, _toConsumableArray2["default"])(initialValue));
141
193
  keysRef.current = initialValue.map(function () {
142
194
  return generateKey();
143
195
  });
144
- }, [list.length, initialValue, fullName, setFieldValue]);
145
- // Clear error when list becomes non-empty
146
- (0, _react.useEffect)(function () {
147
- if (required && list.length > 0 && listError) {
148
- setListError(null);
149
- }
150
- }, [list.length, required, listError, setListError]);
196
+ // Mount-only by design.
197
+ }, []);
151
198
  var canAdd = max == null || list.length < max;
152
199
  var canRemove = min == null || list.length > min;
153
- var validateList = (0, _useMemoizedFn["default"])(function () {
154
- if (!required) return true;
155
- if (list.length === 0) {
156
- setListError(requiredMessage);
157
- return false;
158
- }
159
- setListError(null);
160
- return true;
200
+ // `required` participates in REAL validation: the rule is registered with
201
+ // the form (so submit blocks on an empty list) and re-run after every
202
+ // structural mutation below.
203
+ var listRules = (0, _react.useMemo)(function () {
204
+ return required ? [{
205
+ required: true,
206
+ message: requiredMessage
207
+ }] : [];
208
+ }, [required, requiredMessage]);
209
+ // Mount-counted lifetime (see useFormItem): the rules are removed only when
210
+ // the LAST same-name holder unmounts. Declared BEFORE the register effect so
211
+ // the registration below is classified as instance-owned.
212
+ (0, _react.useEffect)(function () {
213
+ retainField(fullName);
214
+ return function () {
215
+ releaseField(fullName);
216
+ };
217
+ }, [fullName]);
218
+ (0, _react.useEffect)(function () {
219
+ if (listRules.length > 0) registerField(fullName, listRules);else unregisterField(fullName);
220
+ });
221
+ var validateListValue = (0, _useMemoizedFn["default"])(function (nextList) {
222
+ if (listRules.length > 0) validateField(fullName, listRules, nextList);
161
223
  });
162
224
  var add = (0, _useMemoizedFn["default"])(function (defaultValue, index) {
163
225
  if (!canAdd) return;
@@ -169,6 +231,10 @@ var ProFormListBase = function ProFormListBase(props) {
169
231
  newKeys.splice(insertIndex, 0, generateKey());
170
232
  keysRef.current = newKeys;
171
233
  setFieldValue(fullName, newList);
234
+ remapListMeta(store, fullName, function (i) {
235
+ return i >= insertIndex ? i + 1 : i;
236
+ });
237
+ validateListValue(newList);
172
238
  onAfterAdd === null || onAfterAdd === void 0 ? void 0 : onAfterAdd(value, insertIndex);
173
239
  });
174
240
  var removeAt = (0, _useMemoizedFn["default"])(function (index) {
@@ -179,11 +245,12 @@ var ProFormListBase = function ProFormListBase(props) {
179
245
  newKeys.splice(index, 1);
180
246
  keysRef.current = newKeys;
181
247
  setFieldValue(fullName, newList);
248
+ remapListMeta(store, fullName, function (i) {
249
+ if (i === index) return null;
250
+ return i > index ? i - 1 : i;
251
+ });
252
+ validateListValue(newList);
182
253
  onAfterRemove === null || onAfterRemove === void 0 ? void 0 : onAfterRemove(index);
183
- // Validate after remove
184
- if (required && newList.length === 0) {
185
- setListError(requiredMessage);
186
- }
187
254
  });
188
255
  var copy = (0, _useMemoizedFn["default"])(function (index) {
189
256
  if (!canAdd) return;
@@ -205,6 +272,11 @@ var ProFormListBase = function ProFormListBase(props) {
205
272
  newKeys.splice(to, 0, movedKey);
206
273
  keysRef.current = newKeys;
207
274
  setFieldValue(fullName, newList);
275
+ remapListMeta(store, fullName, function (i) {
276
+ if (i === from) return to;
277
+ if (from < to) return i > from && i <= to ? i - 1 : i;
278
+ return i >= to && i < from ? i + 1 : i;
279
+ });
208
280
  });
209
281
  var getList = (0, _useMemoizedFn["default"])(function () {
210
282
  return list;
@@ -309,4 +381,4 @@ var ProFormListBase = function ProFormListBase(props) {
309
381
  ProFormListBase.displayName = 'ProFormList';
310
382
  var ProFormList = exports.ProFormList = /*#__PURE__*/(0, _react.memo)(ProFormListBase);
311
383
  var _default = exports["default"] = ProFormList;
312
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9Qcm9Gb3JtTGlzdC5qcyIsImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvUHJvRm9ybS9Qcm9Gb3JtTGlzdC50c3giXSwibmFtZXMiOlsiX2pzeFJ1bnRpbWUiLCJyZXF1aXJlIiwiX3JlYWN0IiwiX3VzZU1lbW9pemVkRm4iLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX3VzZVNhZmVTdGF0ZTMiLCJfY2xhc3NuYW1lcyIsIl9CdXR0b24iLCJfVHlwb2dyYXBoeSIsIl9jb250ZXh0IiwiX2Zvcm1TdG9yZSIsIl9jb25zdGFudHMiLCJfdXRpbHMiLCJjbGFzc2VzIiwiY2xhc3NuYW1lcyIsImNvbmNhdCIsIkNTU19QUkVGSVgiLCJsaXN0S2V5Q291bnRlciIsImdlbmVyYXRlS2V5IiwiRU1QVFlfTElTVCIsIkxpc3RSb3dBY3Rpb25zQmFzZSIsIl9yZWYiLCJpbmRleCIsInJlY29yZCIsImNhbkFkZCIsImNhblJlbW92ZSIsImNvcHlJY29uUHJvcHMiLCJkZWxldGVJY29uUHJvcHMiLCJhY3Rpb24iLCJhY3Rpb25SZW5kZXIiLCJpdGVtUmVuZGVyIiwib25Db3B5Iiwib25SZW1vdmUiLCJjb3B5QnRuUHJvcHMiLCJleHRyYWN0QnV0dG9uUHJvcHMiLCJkZWxldGVCdG5Qcm9wcyIsImRlZmF1bHREb20iLCJjb3B5IiwiX2pzeCIsIkJ1dHRvbiIsIk9iamVjdCIsImFzc2lnbiIsInR5cGUiLCJjb2xvciIsInNpemUiLCJyZXN0Iiwib25DbGljayIsImRpc2FibGVkIiwiY2hpbGRyZW4iLCJERUZBVUxUX1RFWFQiLCJyZW5kZXJlZEFjdGlvbnMiLCJmaWx0ZXIiLCJCb29sZWFuIiwicm93Tm9kZSIsImNsYXNzTmFtZSIsIl9GcmFnbWVudCIsImxpc3REb20iLCJkaXNwbGF5TmFtZSIsIkxpc3RSb3dBY3Rpb25zIiwibWVtbyIsIlByb0Zvcm1MaXN0QmFzZSIsInByb3BzIiwiX2EiLCJfYiIsInJhd05hbWUiLCJuYW1lIiwibGFiZWwiLCJtaW4iLCJtYXgiLCJyZXF1aXJlZCIsIl9wcm9wcyRyZXF1aXJlZE1lc3NhZyIsInJlcXVpcmVkTWVzc2FnZSIsImluaXRpYWxWYWx1ZSIsImNyZWF0b3JCdXR0b25Qcm9wcyIsIm9uQWZ0ZXJBZGQiLCJvbkFmdGVyUmVtb3ZlIiwicGFyZW50Q3R4IiwidXNlRm9ybUxpc3RDb250ZXh0IiwiZnVsbE5hbWUiLCJsaXN0TmFtZSIsIl91c2VQcm9Gb3JtU3RhYmxlIiwidXNlUHJvRm9ybVN0YWJsZSIsInNldEZpZWxkVmFsdWUiLCJzdG9yZSIsInVzZVByb0Zvcm1TdG9yZSIsImluaXRpYWxBcHBsaWVkIiwidXNlUmVmIiwia2V5c1JlZiIsIl91c2VTYWZlU3RhdGUiLCJ1c2VTYWZlU3RhdGUiLCJfdXNlU2FmZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5MiIsImxpc3RFcnJvciIsInNldExpc3RFcnJvciIsImxpc3QiLCJ1c2VTdG9yZVNlbGVjdG9yIiwic3RhdGUiLCJyYXciLCJpbmNsdWRlcyIsImdldE5lc3RlZFZhbHVlIiwidmFsdWVzIiwiQXJyYXkiLCJpc0FycmF5IiwiY3VycmVudCIsImxlbmd0aCIsInB1c2giLCJzbGljZSIsInVzZUVmZmVjdCIsIl90b0NvbnN1bWFibGVBcnJheTIiLCJtYXAiLCJ2YWxpZGF0ZUxpc3QiLCJ1c2VNZW1vaXplZEZuIiwiYWRkIiwiZGVmYXVsdFZhbHVlIiwidmFsdWUiLCJuZXdMaXN0IiwibmV3S2V5cyIsImluc2VydEluZGV4Iiwic3BsaWNlIiwicmVtb3ZlQXQiLCJtb3ZlIiwiZnJvbSIsInRvIiwiX25ld0xpc3Qkc3BsaWNlIiwiX25ld0xpc3Qkc3BsaWNlMiIsIm1vdmVkSXRlbSIsIl9uZXdLZXlzJHNwbGljZSIsIl9uZXdLZXlzJHNwbGljZTIiLCJtb3ZlZEtleSIsImdldExpc3QiLCJ1c2VNZW1vIiwicmVtb3ZlIiwiZmllbGRPYmpDYWNoZSIsIk1hcCIsIm1hcHBlZEZpZWxkcyIsIm5leHRDYWNoZSIsImZpZWxkcyIsIl9pdGVtIiwia2V5IiwiZmllbGROYW1lIiwiY2FjaGVkIiwiZ2V0IiwiZmllbGQiLCJzZXQiLCJhY3Rpb25Sb3dzIiwiaGFzQ3JlYXRvciIsImNyZWF0b3JDb25maWciLCJfdHlwZW9mMiIsImNyZWF0b3JQb3NpdGlvbiIsInBvc2l0aW9uIiwiY3JlYXRvclRleHQiLCJ0ZXh0IiwiY3JlYXRvckJ1dHRvbiIsImZvcm1MaXN0Q29udGV4dFZhbHVlIiwiRm9ybUxpc3RDb250ZXh0IiwiUHJvdmlkZXIiLCJfanN4cyIsIlR5cG9ncmFwaHlMYWJlbCIsIlBST0ZPUk1fTElTVF9MQUJFTF9TSVpFIiwiUFJPRk9STV9MSVNUX0xBQkVMX0NPTE9SIiwiVHlwb2dyYXBoeUJvZHkiLCJhcyIsIlByb0Zvcm1MaXN0IiwiZXhwb3J0cyIsIl9kZWZhdWx0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUEsSUFBQUEsV0FBQSxHQUFBQyxPQUFBO0FDQUEsSUFBQUMsTUFBQSxHQUFBRCxPQUFBO0FBRUEsSUFBQUUsY0FBQSxHQUFBQyxzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQUksY0FBQSxHQUFBRCxzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQUssV0FBQSxHQUFBRixzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQU0sT0FBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8sV0FBQSxHQUFBUCxPQUFBO0FBQ0EsSUFBQVEsUUFBQSxHQUFBUixPQUFBO0FBQ0EsSUFBQVMsVUFBQSxHQUFBVCxPQUFBO0FBQ0EsSUFBQVUsVUFBQSxHQUFBVixPQUFBO0FBQ0EsSUFBQVcsTUFBQSxHQUFBWCxPQUFBO0FBR0EsSUFBTVksT0FBTyxHQUFHLElBQUFDLHNCQUFVLEtBQUFDLE1BQUEsQ0FBSUMscUJBQVUsVUFBTyxDQUFDO0FBRWhELElBQUlDLGNBQWMsR0FBRyxDQUFDO0FBQ3RCLElBQU1DLFdBQVcsR0FBRyxTQUFkQSxXQUFXQSxDQUFBO0VBQUEsZUFBQUgsTUFBQSxDQUF5QixFQUFFRSxjQUFjO0FBQUEsQ0FBRTtBQUU1RDtBQUNBO0FBQ0EsSUFB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QUFBd0csUUFBQSxHQUFBRCxPQUFBLGNBRWxDRCxXQUFXIiwiZmlsZSI6ImNvbXBvbmVudHMvUHJvRm9ybS9Qcm9Gb3JtTGlzdC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGpzeCBhcyBfanN4LCBGcmFnbWVudCBhcyBfRnJhZ21lbnQsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IG1lbW8sIHVzZUVmZmVjdCwgdXNlTWVtbywgdXNlUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHVzZU1lbW9pemVkRm4gZnJvbSAnQDFtb25leS9ob29rcy91c2VNZW1vaXplZEZuJztcbmltcG9ydCB1c2VTYWZlU3RhdGUgZnJvbSAnQDFtb25leS9ob29rcy91c2VTYWZlU3RhdGUnO1xuaW1wb3J0IHsgZGVmYXVsdCBhcyBjbGFzc25hbWVzIH0gZnJvbSAnLi4vLi4vdXRpbHMvY2xhc3NuYW1lcyc7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tICcuLi9CdXR0b24nO1xuaW1wb3J0IHsgVHlwb2dyYXBoeUxhYmVsLCBUeXBvZ3JhcGh5Qm9keSB9IGZyb20gJy4uL1R5cG9ncmFwaHknO1xuaW1wb3J0IHsgRm9ybUxpc3RDb250ZXh0LCB1c2VGb3JtTGlzdENvbnRleHQsIHVzZVByb0Zvcm1TdGFibGUsIHVzZVByb0Zvcm1TdG9yZSB9IGZyb20gJy4vY29udGV4dCc7XG5pbXBvcnQgeyB1c2VTdG9yZVNlbGVjdG9yIH0gZnJvbSAnLi9jb3JlL2Zvcm1TdG9yZSc7XG5pbXBvcnQgeyBDU1NfUFJFRklYLCBERUZBVUxUX1RFWFQsIFBST0ZPUk1fTElTVF9MQUJFTF9TSVpFLCBQUk9GT1JNX0xJU1RfTEFCRUxfQ09MT1IgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBleHRyYWN0QnV0dG9uUHJvcHMsIGdldE5lc3RlZFZhbHVlIH0gZnJvbSAnLi91dGlscyc7XG5jb25zdCBjbGFzc2VzID0gY2xhc3NuYW1lcyhgJHtDU1NfUFJFRklYfS1saXN0YCk7XG5sZXQgbGlzdEtleUNvdW50ZXIgPSAwO1xuY29uc3QgZ2VuZXJhdGVLZXkgPSAoKSA9PiBgbGlzdF8keysrbGlzdEtleUNvdW50ZXJ9YDtcbi8vIFN0YWJsZSBlbXB0eSByZXN1bHQgZm9yIHRoZSBuby12YWx1ZSBjYXNlIOKAlCBhIGZyZXNoIFtdIHBlciBzZWxlY3RvciBydW5cbi8vIHdvdWxkIG5ldmVyIGNvbXBhcmUgZXF1YWwgYW5kIGxvb3AgdGhlIHN1YnNjcmlwdGlvbi5cbmNvbnN0IEVNUFRZX0xJU1QgPSBbXTtcbi8vIFJvdy1sZXZlbCBtZW1vIGJvdW5kYXJ5OiBzZXROZXN0ZWRWYWx1ZSBjbG9uZXMgT05MWSB0aGUgZWRpdGVkIHJvdywgc29cbi8vIHVudG91Y2hlZCByb3dzIGtlZXAgdGhlaXIgcmVjb3JkIGlkZW50aXR5IGFuZCBiYWlsIG91dCBoZXJlIHdoaWxlIGFcbi8vIHNpYmxpbmcgcm93IGlzIGJlaW5nIGVkaXRlZC5cbmNvbnN0IExpc3RSb3dBY3Rpb25zQmFzZSA9ICh7IGluZGV4LCByZWNvcmQsIGNhbkFkZCwgY2FuUmVtb3ZlLCBjb3B5SWNvblByb3BzLCBkZWxldGVJY29uUHJvcHMsIGFjdGlvbiwgYWN0aW9uUmVuZGVyLCBpdGVtUmVuZGVyLCBvbkNvcHksIG9uUmVtb3ZlLCB9KSA9PiB7XG4gICAgY29uc3QgY29weUJ0blByb3BzID0gZXh0cmFjdEJ1dHRvblByb3BzKGNvcHlJY29uUHJvcHMpO1xuICAgIGNvbnN0IGRlbGV0ZUJ0blByb3BzID0gZXh0cmFjdEJ1dHRvblByb3BzKGRlbGV0ZUljb25Qcm9wcyk7XG4gICAgY29uc3QgZGVmYXVsdERvbSA9IHtcbiAgICAgICAgY29weTogY29weUljb25Qcm9wcyAhPT0gZmFsc2UgPyAoX2pzeChCdXR0b24sIE9iamVjdC5hc3NpZ24oeyB0eXBlOiBcImJ1dHRvblwiLCBjb2xvcjogXCJzZWNvbmRhcnlcIiwgc2l6ZTogXCJzbWFsbFwiIH0sIGNvcHlCdG5Qcm9wcy5yZXN0LCB7IG9uQ2xpY2s6ICgpID0+IG9uQ29weShpbmRleCksIGRpc2FibGVkOiAhY2FuQWRkIHx8IGNvcHlCdG5Qcm9wcy5kaXNhYmxlZCwgY2hpbGRyZW46IERFRkFVTFRfVEVYVC5jb3B5IH0pLCBgY29weS0ke2luZGV4fWApKSA6IG51bGwsXG4gICAgICAgIGRlbGV0ZTogZGVsZXRlSWNvblByb3BzICE9PSBmYWxzZSA/IChfanN4KEJ1dHRvbiwgT2JqZWN0LmFzc2lnbih7IHR5cGU6IFwiYnV0dG9uXCIsIGNvbG9yOiBcInNlY29uZGFyeVwiLCBzaXplOiBcInNtYWxsXCIgfSwgZGVsZXRlQnRuUHJvcHMucmVzdCwgeyBvbkNsaWNrOiAoKSA9PiBvblJlbW92ZShpbmRleCksIGRpc2FibGVkOiAhY2FuUmVtb3ZlIHx8IGRlbGV0ZUJ0blByb3BzLmRpc2FibGVkLCBjaGlsZHJlbjogREVGQVVMVF9URVhULmRlbGV0ZSB9KSwgYGRlbGV0ZS0ke2luZGV4fWApKSA6IG51bGwsXG4gICAgfTtcbiAgICBjb25zdCByZW5kZXJlZEFjdGlvbnMgPSBhY3Rpb25SZW5kZXJcbiAgICAgICAgPyBhY3Rpb25SZW5kZXIoeyBpbmRleCwgcmVjb3JkIH0sIGFjdGlvbiwgZGVmYXVsdERvbSlcbiAgICAgICAgOiBbZGVmYXVsdERvbS5jb3B5LCBkZWZhdWx0RG9tLmRlbGV0ZV0uZmlsdGVyKEJvb2xlYW4pO1xuICAgIGNvbnN0IHJvd05vZGUgPSAoX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3Nlcygncm93LWFjdGlvbnMnKSwgY2hpbGRyZW46IHJlbmRlcmVkQWN0aW9ucyB9KSk7XG4gICAgaWYgKGl0ZW1SZW5kZXIpIHtcbiAgICAgICAgcmV0dXJuIF9qc3goX0ZyYWdtZW50LCB7IGNoaWxkcmVuOiBpdGVtUmVuZGVyKHsgbGlzdERvbTogcm93Tm9kZSwgYWN0aW9uIH0pIH0pO1xuICAgIH1cbiAgICByZXR1cm4gcm93Tm9kZTtcbn07XG5MaXN0Um93QWN0aW9uc0Jhc2UuZGlzcGxheU5hbWUgPSAnUHJvRm9ybUxpc3RSb3dBY3Rpb25zJztcbmNvbnN0IExpc3RSb3dBY3Rpb25zID0gbWVtbyhMaXN0Um93QWN0aW9uc0Jhc2UpO1xuY29uc3QgUHJvRm9ybUxpc3RCYXNlID0gKHByb3BzKSA9PiB7XG4gICAgdmFyIF9hLCBfYjtcbiAgICBjb25zdCB7IG5hbWU6IHJhd05hbWUsIGxhYmVsLCBtaW4sIG1heCwgcmVxdWlyZWQsIHJlcXVpcmVkTWVzc2FnZSA9ICdUaGlzIGxpc3QgY2Fubm90IGJlIGVtcHR5JywgaW5pdGlhbFZhbHVlLCBjb3B5SWNvblByb3BzLCBkZWxldGVJY29uUHJvcHMsIGNyZWF0b3JCdXR0b25Qcm9wcywgaXRlbVJlbmRlciwgYWN0aW9uUmVuZGVyLCBjaGlsZHJlbiwgb25BZnRlckFkZCwgb25BZnRlclJlbW92ZSwgfSA9IHByb3BzO1xuICAgIC8vIOKUgOKUgCBOZXN0ZWQgbGlzdDogcHJlcGVuZCBwYXJlbnQgbGlzdCBuYW1lIOKUgOKUgFxuICAgIGNvbnN0IHBhcmVudEN0eCA9IHVzZUZvcm1MaXN0Q29udGV4dCgpO1xuICAgIGNvbnN0IGZ1bGxOYW1lID0gcGFyZW50Q3R4Lmxpc3ROYW1lID8gYCR7cGFyZW50Q3R4Lmxpc3ROYW1lfS4ke3Jhd05hbWV9YCA6IHJhd05hbWU7XG4gICAgY29uc3QgeyBzZXRGaWVsZFZhbHVlIH0gPSB1c2VQcm9Gb3JtU3RhYmxlKCk7XG4gICAgY29uc3Qgc3RvcmUgPSB1c2VQcm9Gb3JtU3RvcmUoKTtcbiAgICBjb25zdCBpbml0aWFsQXBwbGllZCA9IHVzZVJlZihmYWxzZSk7XG4gICAgY29uc3Qga2V5c1JlZiA9IHVzZVJlZihbXSk7XG4gICAgY29uc3QgW2xpc3RFcnJvciwgc2V0TGlzdEVycm9yXSA9IHVzZVNhZmVTdGF0ZShudWxsKTtcbiAgICAvLyBTdWJzY3JpYmUgT05MWSB0byB0aGlzIGxpc3QncyBvd24gdmFsdWU6IHR5cGluZyBlbHNld2hlcmUgaW4gdGhlIGZvcm1cbiAgICAvLyBsZWF2ZXMgdGhlIGFycmF5IGlkZW50aXR5IHVudG91Y2hlZCBhbmQgdGhpcyBjb21wb25lbnQgZG9lcyBub3QgcmVuZGVyLlxuICAgIGNvbnN0IGxpc3QgPSB1c2VTdG9yZVNlbGVjdG9yKHN0b3JlLCAoc3RhdGUpID0+IHtcbiAgICAgICAgY29uc3QgcmF3ID0gZnVsbE5hbWUuaW5jbHVkZXMoJy4nKVxuICAgICAgICAgICAgPyBnZXROZXN0ZWRWYWx1ZShzdGF0ZS52YWx1ZXMsIGZ1bGxOYW1lKVxuICAgICAgICAgICAgOiBzdGF0ZS52YWx1ZXNbZnVsbE5hbWVdO1xuICAgICAgICByZXR1cm4gQXJyYXkuaXNBcnJheShyYXcpID8gcmF3IDogRU1QVFlfTElTVDtcbiAgICB9KTtcbiAgICAvLyBTeW5jIGtleXMgd2l0aCBsaXN0IGxlbmd0aFxuICAgIHdoaWxlIChrZXlzUmVmLmN1cnJlbnQubGVuZ3RoIDwgbGlzdC5sZW5ndGgpIHtcbiAgICAgICAga2V5c1JlZi5jdXJyZW50LnB1c2goZ2VuZXJhdGVLZXkoKSk7XG4gICAgfVxuICAgIGlmIChrZXlzUmVmLmN1cnJlbnQubGVuZ3RoID4gbGlzdC5sZW5ndGgpIHtcbiAgICAgICAga2V5c1JlZi5jdXJyZW50ID0ga2V5c1JlZi5jdXJyZW50LnNsaWNlKDAsIGxpc3QubGVuZ3RoKTtcbiAgICB9XG4gICAgLy8gQXBwbHkgaW5pdGlhbCB2YWx1ZSBvbmNlXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKGluaXRpYWxBcHBsaWVkLmN1cnJlbnQpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmIChsaXN0Lmxlbmd0aCAhPT0gMClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGluaXRpYWxWYWx1ZSkgfHwgaW5pdGlhbFZhbHVlLmxlbmd0aCA9PT0gMClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgaW5pdGlhbEFwcGxpZWQuY3VycmVudCA9IHRydWU7XG4gICAgICAgIHNldEZpZWxkVmFsdWUoZnVsbE5hbWUsIFsuLi5pbml0aWFsVmFsdWVdKTtcbiAgICAgICAga2V5c1JlZi5jdXJyZW50ID0gaW5pdGlhbFZhbHVlLm1hcCgoKSA9PiBnZW5lcmF0ZUtleSgpKTtcbiAgICB9LCBbbGlzdC5sZW5ndGgsIGluaXRpYWxWYWx1ZSwgZnVsbE5hbWUsIHNldEZpZWxkVmFsdWVdKTtcbiAgICAvLyBDbGVhciBlcnJvciB3aGVuIGxpc3QgYmVjb21lcyBub24tZW1wdHlcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAocmVxdWlyZWQgJiYgbGlzdC5sZW5ndGggPiAwICYmIGxpc3RFcnJvcikge1xuICAgICAgICAgICAgc2V0TGlzdEVycm9yKG51bGwpO1xuICAgICAgICB9XG4gICAgfSwgW2xpc3QubGVuZ3RoLCByZXF1aXJlZCwgbGlzdEVycm9yLCBzZXRMaXN0RXJyb3JdKTtcbiAgICBjb25zdCBjYW5BZGQgPSBtYXggPT0gbnVsbCB8fCBsaXN0Lmxlbmd0aCA8IG1heDtcbiAgICBjb25zdCBjYW5SZW1vdmUgPSBtaW4gPT0gbnVsbCB8fCBsaXN0Lmxlbmd0aCA+IG1pbjtcbiAgICBjb25zdCB2YWxpZGF0ZUxpc3QgPSB1c2VNZW1vaXplZEZuKCgpID0+IHtcbiAgICAgICAgaWYgKCFyZXF1aXJlZClcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICBpZiAobGlzdC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHNldExpc3RFcnJvcihyZXF1aXJlZE1lc3NhZ2UpO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHNldExpc3RFcnJvcihudWxsKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSk7XG4gICAgY29uc3QgYWRkID0gdXNlTWVtb2l6ZWRGbigoZGVmYXVsdFZhbHVlLCBpbmRleCkgPT4ge1xuICAgICAgICBpZiAoIWNhbkFkZClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBkZWZhdWx0VmFsdWUgIT09IG51bGwgJiYgZGVmYXVsdFZhbHVlICE9PSB2b2lkIDAgPyBkZWZhdWx0VmFsdWUgOiB7fTtcbiAgICAgICAgY29uc3QgbmV3TGlzdCA9IFsuLi5saXN0XTtcbiAgICAgICAgY29uc3QgbmV3S2V5cyA9IFsuLi5rZXlzUmVmLmN1cnJlbnRdO1xuICAgICAgICBjb25zdCBpbnNlcnRJbmRleCA9IHR5cGVvZiBpbmRleCA9PT0gJ251bWJlcicgPyBpbmRleCA6IG5ld0xpc3QubGVuZ3RoO1xuICAgICAgICBuZXdMaXN0LnNwbGljZShpbnNlcnRJbmRleCwgMCwgdmFsdWUpO1xuICAgICAgICBuZXdLZXlzLnNwbGljZShpbnNlcnRJbmRleCwgMCwgZ2VuZXJhdGVLZXkoKSk7XG4gICAgICAgIGtleXNSZWYuY3VycmVudCA9IG5ld0tleXM7XG4gICAgICAgIHNldEZpZWxkVmFsdWUoZnVsbE5hbWUsIG5ld0xpc3QpO1xuICAgICAgICBvbkFmdGVyQWRkID09PSBudWxsIHx8IG9uQWZ0ZXJBZGQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQWZ0ZXJBZGQodmFsdWUsIGluc2VydEluZGV4KTtcbiAgICB9KTtcbiAgICBjb25zdCByZW1vdmVBdCA9IHVzZU1lbW9pemVkRm4oKGluZGV4KSA9PiB7XG4gICAgICAgIGlmICghY2FuUmVtb3ZlKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCBuZXdMaXN0ID0gWy4uLmxpc3RdO1xuICAgICAgICBjb25zdCBuZXdLZXlzID0gWy4uLmtleXNSZWYuY3VycmVudF07XG4gICAgICAgIG5ld0xpc3Quc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgbmV3S2V5cy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICBrZXlzUmVmLmN1cnJlbnQgPSBuZXdLZXlzO1xuICAgICAgICBzZXRGaWVsZFZhbHVlKGZ1bGxOYW1lLCBuZXdMaXN0KTtcbiAgICAgICAgb25BZnRlclJlbW92ZSA9PT0gbnVsbCB8fCBvbkFmdGVyUmVtb3ZlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkFmdGVyUmVtb3ZlKGluZGV4KTtcbiAgICAgICAgLy8gVmFsaWRhdGUgYWZ0ZXIgcmVtb3ZlXG4gICAgICAgIGlmIChyZXF1aXJlZCAmJiBuZXdMaXN0Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgc2V0TGlzdEVycm9yKHJlcXVpcmVkTWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCBjb3B5ID0gdXNlTWVtb2l6ZWRGbigoaW5kZXgpID0+IHtcbiAgICAgICAgaWYgKCFjYW5BZGQpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IHZhbHVlID0gbGlzdFtpbmRleF0gPyBPYmplY3QuYXNzaWduKHt9LCBsaXN0W2luZGV4XSkgOiB7fTtcbiAgICAgICAgYWRkKHZhbHVlLCBpbmRleCArIDEpO1xuICAgIH0pO1xuICAgIGNvbnN0IG1vdmUgPSB1c2VNZW1vaXplZEZuKChmcm9tLCB0bykgPT4ge1xuICAgICAgICBpZiAoZnJvbSA9PT0gdG8pXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmIChmcm9tIDwgMCB8fCBmcm9tID49IGxpc3QubGVuZ3RoIHx8IHRvIDwgMCB8fCB0byA+PSBsaXN0Lmxlbmd0aClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29uc3QgbmV3TGlzdCA9IFsuLi5saXN0XTtcbiAgICAgICAgY29uc3QgbmV3S2V5cyA9IFsuLi5rZXlzUmVmLmN1cnJlbnRdO1xuICAgICAgICBjb25zdCBbbW92ZWRJdGVtXSA9IG5ld0xpc3Quc3BsaWNlKGZyb20sIDEpO1xuICAgICAgICBjb25zdCBbbW92ZWRLZXldID0gbmV3S2V5cy5zcGxpY2UoZnJvbSwgMSk7XG4gICAgICAgIG5ld0xpc3Quc3BsaWNlKHRvLCAwLCBtb3ZlZEl0ZW0pO1xuICAgICAgICBuZXdLZXlzLnNwbGljZSh0bywgMCwgbW92ZWRLZXkpO1xuICAgICAgICBrZXlzUmVmLmN1cnJlbnQgPSBuZXdLZXlzO1xuICAgICAgICBzZXRGaWVsZFZhbHVlKGZ1bGxOYW1lLCBuZXdMaXN0KTtcbiAgICB9KTtcbiAgICBjb25zdCBnZXRMaXN0ID0gdXNlTWVtb2l6ZWRGbigoKSA9PiBsaXN0KTtcbiAgICBjb25zdCBhY3Rpb24gPSB1c2VNZW1vKCgpID0+ICh7IGFkZCwgcmVtb3ZlOiByZW1vdmVBdCwgbW92ZSwgY29weSwgZ2V0TGlzdCB9KSwgW2FkZCwgcmVtb3ZlQXQsIG1vdmUsIGNvcHksIGdldExpc3RdKTtcbiAgICAvLyBQZXIta2V5IGNhY2hlIGtlZXBzIGVhY2ggcm93J3MgZmllbGQgb2JqZWN0IGlkZW50aXR5IHN0YWJsZSBhY3Jvc3MgbGlzdFxuICAgIC8vIGNvbW1pdHMgKGUuZy4gdHlwaW5nIGluIGEgc2libGluZyByb3cpLCBzbyBtZW1vaXplZCByb3cgY29udGVudCBzZWVzXG4gICAgLy8gc2hhbGxvdy1lcXVhbCBwcm9wcyBhbmQgYmFpbHMgb3V0LlxuICAgIGNvbnN0IGZpZWxkT2JqQ2FjaGUgPSB1c2VSZWYobmV3IE1hcCgpKTtcbiAgICBjb25zdCBtYXBwZWRGaWVsZHMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgICAgY29uc3QgbmV4dENhY2hlID0gbmV3IE1hcCgpO1xuICAgICAgICBjb25zdCBmaWVsZHMgPSBsaXN0Lm1hcCgoX2l0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBrZXkgPSBrZXlzUmVmLmN1cnJlbnRbaW5kZXhdIHx8IGBmYWxsYmFja18ke2luZGV4fWA7XG4gICAgICAgICAgICBjb25zdCBmaWVsZE5hbWUgPSBgJHtmdWxsTmFtZX0uJHtpbmRleH1gO1xuICAgICAgICAgICAgY29uc3QgY2FjaGVkID0gZmllbGRPYmpDYWNoZS5jdXJyZW50LmdldChrZXkpO1xuICAgICAgICAgICAgY29uc3QgZmllbGQgPSBjYWNoZWQgJiYgY2FjaGVkLm5hbWUgPT09IGZpZWxkTmFtZSA/IGNhY2hlZCA6IHsgbmFtZTogZmllbGROYW1lLCBrZXkgfTtcbiAgICAgICAgICAgIG5leHRDYWNoZS5zZXQoa2V5LCBmaWVsZCk7XG4gICAgICAgICAgICByZXR1cm4gZmllbGQ7XG4gICAgICAgIH0pO1xuICAgICAgICBmaWVsZE9iakNhY2hlLmN1cnJlbnQgPSBuZXh0Q2FjaGU7XG4gICAgICAgIHJldHVybiBmaWVsZHM7XG4gICAgfSwgW2xpc3QsIGZ1bGxOYW1lXSk7XG4gICAgLy8gTWVtb2l6ZWQgc28gdGhlIHJvdyBmYWN0b3J5IGlzIHJlLWludm9rZWQgb25seSB3aGVuIHRoZSBsaXN0IGl0c2VsZiAob3JcbiAgICAvLyB0aGUgY29uc3VtZXItcHJvdmlkZWQgY2hpbGRyZW4pIGNoYW5nZXMg4oCUIG5ldmVyIGZvciB1bnJlbGF0ZWQgY29tbWl0cy5cbiAgICBjb25zdCBsaXN0RG9tID0gdXNlTWVtbygoKSA9PiAodHlwZW9mIGNoaWxkcmVuID09PSAnZnVuY3Rpb24nID8gY2hpbGRyZW4obWFwcGVkRmllbGRzLCBhY3Rpb24pIDogY2hpbGRyZW4pLCBbY2hpbGRyZW4sIG1hcHBlZEZpZWxkcywgYWN0aW9uXSk7XG4gICAgLy8gQWN0aW9uIGJ1dHRvbnMgcGVyIHJvdyDigJQgTGlzdFJvd0FjdGlvbnMgaXMgdGhlIG1lbW8gYm91bmRhcnlcbiAgICBjb25zdCBhY3Rpb25Sb3dzID0gbGlzdC5tYXAoKHJlY29yZCwgaW5kZXgpID0+IChfanN4KExpc3RSb3dBY3Rpb25zLCB7IGluZGV4OiBpbmRleCwgcmVjb3JkOiByZWNvcmQsIGNhbkFkZDogY2FuQWRkLCBjYW5SZW1vdmU6IGNhblJlbW92ZSwgY29weUljb25Qcm9wczogY29weUljb25Qcm9wcywgZGVsZXRlSWNvblByb3BzOiBkZWxldGVJY29uUHJvcHMsIGFjdGlvbjogYWN0aW9uLCBhY3Rpb25SZW5kZXI6IGFjdGlvblJlbmRlciwgaXRlbVJlbmRlcjogaXRlbVJlbmRlciwgb25Db3B5OiBjb3B5LCBvblJlbW92ZTogcmVtb3ZlQXQgfSwga2V5c1JlZi5jdXJyZW50W2luZGV4XSB8fCBpbmRleCkpKTtcbiAgICAvLyBDcmVhdG9yIGJ1dHRvblxuICAgIGNvbnN0IGhhc0NyZWF0b3IgPSBjcmVhdG9yQnV0dG9uUHJvcHMgIT09IGZhbHNlO1xuICAgIGNvbnN0IGNyZWF0b3JDb25maWcgPSBoYXNDcmVhdG9yICYmIHR5cGVvZiBjcmVhdG9yQnV0dG9uUHJvcHMgPT09ICdvYmplY3QnID8gY3JlYXRvckJ1dHRvblByb3BzIDoge307XG4gICAgY29uc3QgY3JlYXRvclBvc2l0aW9uID0gKF9hID0gY3JlYXRvckNvbmZpZyA9PT0gbnVsbCB8fCBjcmVhdG9yQ29uZmlnID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjcmVhdG9yQ29uZmlnLnBvc2l0aW9uKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAnYm90dG9tJztcbiAgICBjb25zdCBjcmVhdG9yVGV4dCA9IChfYiA9IGNyZWF0b3JDb25maWcgPT09IG51bGwgfHwgY3JlYXRvckNvbmZpZyA9PT0gdm9pZCAwID8gdm9pZCAwIDogY3JlYXRvckNvbmZpZy50ZXh0KSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiBERUZBVUxUX1RFWFQuYWRkO1xuICAgIGNvbnN0IGNyZWF0b3JCdXR0b24gPSBoYXNDcmVhdG9yID8gKF9qc3goQnV0dG9uLCB7IHR5cGU6IFwiYnV0dG9uXCIsIGNvbG9yOiBcInNlY29uZGFyeVwiLCBvbkNsaWNrOiAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoY3JlYXRvclBvc2l0aW9uID09PSAndG9wJykge1xuICAgICAgICAgICAgICAgIGFkZCh7fSwgMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBhZGQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgZGlzYWJsZWQ6ICFjYW5BZGQsIGNoaWxkcmVuOiBjcmVhdG9yVGV4dCB9KSkgOiBudWxsO1xuICAgIGNvbnN0IGZvcm1MaXN0Q29udGV4dFZhbHVlID0gdXNlTWVtbygoKSA9PiAoeyBsaXN0TmFtZTogZnVsbE5hbWUgfSksIFtmdWxsTmFtZV0pO1xuICAgIHJldHVybiAoX2pzeChGb3JtTGlzdENvbnRleHQuUHJvdmlkZXIsIHsgdmFsdWU6IGZvcm1MaXN0Q29udGV4dFZhbHVlLCBjaGlsZHJlbjogX2pzeHMoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoKSwgY2hpbGRyZW46IFtsYWJlbCAmJiBfanN4KFR5cG9ncmFwaHlMYWJlbCwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ2xhYmVsJyksIHNpemU6IFBST0ZPUk1fTElTVF9MQUJFTF9TSVpFLCBjb2xvcjogUFJPRk9STV9MSVNUX0xBQkVMX0NPTE9SLCBjaGlsZHJlbjogbGFiZWwgfSksIGNyZWF0b3JQb3NpdGlvbiA9PT0gJ3RvcCcgJiYgY3JlYXRvckJ1dHRvbiwgX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygnY29udGVudCcpLCBjaGlsZHJlbjogbGlzdERvbSB9KSwgX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygnYWN0aW9ucycpLCBjaGlsZHJlbjogYWN0aW9uUm93cyB9KSwgY3JlYXRvclBvc2l0aW9uID09PSAnYm90dG9tJyAmJiBjcmVhdG9yQnV0dG9uLCBsaXN0RXJyb3IgJiYgX2pzeChUeXBvZ3JhcGh5Qm9keSwgeyBhczogXCJkaXZcIiwgc2l6ZTogXCJzbVwiLCBjb2xvcjogXCJkYW5nZXJcIiwgY2hpbGRyZW46IGxpc3RFcnJvciB9KV0gfSkgfSkpO1xufTtcblByb0Zvcm1MaXN0QmFzZS5kaXNwbGF5TmFtZSA9ICdQcm9Gb3JtTGlzdCc7XG5leHBvcnQgY29uc3QgUHJvRm9ybUxpc3QgPSBtZW1vKFByb0Zvcm1MaXN0QmFzZSk7XG5leHBvcnQgZGVmYXVsdCBQcm9Gb3JtTGlzdDsiLG51bGxdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
384
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9Qcm9Gb3JtTGlzdC5qcyIsImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvUHJvRm9ybS9Qcm9Gb3JtTGlzdC50c3giXSwibmFtZXMiOlsiX2pzeFJ1bnRpbWUiLCJyZXF1aXJlIiwiX3JlYWN0IiwiX3VzZU1lbW9pemVkRm4iLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX2NsYXNzbmFtZXMiLCJfQnV0dG9uIiwiX1R5cG9ncmFwaHkiLCJfY29udGV4dCIsIl9mb3JtU3RvcmUiLCJfY29uc3RhbnRzIiwiX3V0aWxzIiwiY2xhc3NlcyIsImNsYXNzbmFtZXMiLCJjb25jYXQiLCJDU1NfUFJFRklYIiwibGlzdEtleUNvdW50ZXIiLCJnZW5lcmF0ZUtleSIsIkVNUFRZX0xJU1QiLCJMSVNUX01FVEFfS0VZUyIsInJlbWFwTGlzdE1ldGEiLCJzdG9yZSIsImxpc3ROYW1lIiwibWFwSW5kZXgiLCJzdGF0ZSIsImdldFN0YXRlIiwicHJlZml4IiwicGF0Y2giLCJfaSIsIl9MSVNUX01FVEFfS0VZUyIsImxlbmd0aCIsIm1ldGFLZXkiLCJzb3VyY2UiLCJjaGFuZ2VkIiwibmV4dCIsIl9pMiIsIl9PYmplY3Qka2V5cyIsIk9iamVjdCIsImtleXMiLCJrZXkiLCJzdGFydHNXaXRoIiwicmVzdCIsInNsaWNlIiwiZG90QXQiLCJpbmRleE9mIiwiaW5kZXhTdHIiLCJ0ZXN0IiwibmV3SW5kZXgiLCJOdW1iZXIiLCJzZXRTdGF0ZSIsIkxpc3RSb3dBY3Rpb25zQmFzZSIsIl9yZWYiLCJpbmRleCIsInJlY29yZCIsImNhbkFkZCIsImNhblJlbW92ZSIsImNvcHlJY29uUHJvcHMiLCJkZWxldGVJY29uUHJvcHMiLCJhY3Rpb24iLCJhY3Rpb25SZW5kZXIiLCJpdGVtUmVuZGVyIiwib25Db3B5Iiwib25SZW1vdmUiLCJjb3B5QnRuUHJvcHMiLCJleHRyYWN0QnV0dG9uUHJvcHMiLCJkZWxldGVCdG5Qcm9wcyIsImRlZmF1bHREb20iLCJjb3B5IiwiX2pzeCIsIkJ1dHRvbiIsImFzc2lnbiIsInR5cGUiLCJjb2xvciIsInNpemUiLCJvbkNsaWNrIiwiZGlzYWJsZWQiLCJjaGlsZHJlbiIsIkRFRkFVTFRfVEVYVCIsInJlbmRlcmVkQWN0aW9ucyIsImZpbHRlciIsIkJvb2xlYW4iLCJyb3dOb2RlIiwiY2xhc3NOYW1lIiwiX0ZyYWdtZW50IiwibGlzdERvbSIsImRpc3BsYXlOYW1lIiwiTGlzdFJvd0FjdGlvbnMiLCJtZW1vIiwiUHJvRm9ybUxpc3RCYXNlIiwicHJvcHMiLCJfYSIsIl9iIiwiZnVsbE5hbWUiLCJuYW1lIiwibGFiZWwiLCJtaW4iLCJtYXgiLCJyZXF1aXJlZCIsIl9wcm9wcyRyZXF1aXJlZE1lc3NhZyIsInJlcXVpcmVkTWVzc2FnZSIsImluaXRpYWxWYWx1ZSIsImNyZWF0b3JCdXR0b25Qcm9wcyIsIm9uQWZ0ZXJBZGQiLCJvbkFmdGVyUmVtb3ZlIiwiX3VzZVByb0Zvcm1TdGFibGUiLCJ1c2VQcm9Gb3JtU3RhYmxlIiwic2V0RmllbGRWYWx1ZSIsInJlZ2lzdGVyRmllbGQiLCJ1bnJlZ2lzdGVyRmllbGQiLCJyZXRhaW5GaWVsZCIsInJlbGVhc2VGaWVsZCIsInZhbGlkYXRlRmllbGQiLCJ1c2VQcm9Gb3JtU3RvcmUiLCJpbml0aWFsQXBwbGllZCIsInVzZVJlZiIsImtleXNSZWYiLCJfdXNlU3RvcmVTZWxlY3RvciIsInVzZVN0b3JlU2VsZWN0b3IiLCJyYXciLCJpbmNsdWRlcyIsImdldE5lc3RlZFZhbHVlIiwidmFsdWVzIiwiQXJyYXkiLCJpc0FycmF5IiwiZXJyb3JzIiwic2hhbGxvd0VxdWFsQXJyYXlzIiwiX3VzZVN0b3JlU2VsZWN0b3IyIiwiX3NsaWNlZFRvQXJyYXkyIiwibGlzdCIsImxpc3RFcnJvciIsImN1cnJlbnQiLCJwdXNoIiwidXNlRWZmZWN0IiwiX3RvQ29uc3VtYWJsZUFycmF5MiIsIm1hcCIsImxpc3RSdWxlcyIsInVzZU1lbW8iLCJtZXNzYWdlIiwidmFsaWRhdGVMaXN0VmFsdWUiLCJ1c2VNZW1vaXplZEZuIiwibmV4dExpc3QiLCJhZGQiLCJkZWZhdWx0VmFsdWUiLCJ2YWx1ZSIsIm5ld0xpc3QiLCJuZXdLZXlzIiwiaW5zZXJ0SW5kZXgiLCJzcGxpY2UiLCJpIiwicmVtb3ZlQXQiLCJtb3ZlIiwiZnJvbSIsInRvIiwiX25ld0xpc3Qkc3BsaWNlIiwiX25ld0xpc3Qkc3BsaWNlMiIsIm1vdmVkSXRlbSIsIl9uZXdLZXlzJHNwbGljZSIsIl9uZXdLZXlzJHNwbGljZTIiLCJtb3ZlZEtleSIsImdldExpc3QiLCJyZW1vdmUiLCJmaWVsZE9iakNhY2hlIiwiTWFwIiwibWFwcGVkRmllbGRzIiwibmV4dENhY2hlIiwiZmllbGRzIiwiX2l0ZW0iLCJmaWVsZE5hbWUiLCJjYWNoZWQiLCJnZXQiLCJmaWVsZCIsInNldCIsImFjdGlvblJvd3MiLCJoYXNDcmVhdG9yIiwiY3JlYXRvckNvbmZpZyIsIl90eXBlb2YyIiwiY3JlYXRvclBvc2l0aW9uIiwicG9zaXRpb24iLCJjcmVhdG9yVGV4dCIsInRleHQiLCJjcmVhdG9yQnV0dG9uIiwiZm9ybUxpc3RDb250ZXh0VmFsdWUiLCJGb3JtTGlzdENvbnRleHQiLCJQcm92aWRlciIsIl9qc3hzIiwiVHlwb2dyYXBoeUxhYmVsIiwiUFJPRk9STV9MSVNUX0xBQkVMX1NJWkUiLCJQUk9GT1JNX0xJU1RfTEFCRUxfQ09MT1IiLCJUeXBvZ3JhcGh5Qm9keSIsImFzIiwiUHJvRm9ybUxpc3QiLCJleHBvcnRzIiwiX2RlZmF1bHQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQSxJQUFBQSxXQUFBLEdBQUFDLE9BQUE7QUNBQSxJQUFBQyxNQUFBLEdBQUFELE9BQUE7QUFFQSxJQUFBRSxjQUFBLEdBQUFDLHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBSSxXQUFBLEdBQUFELHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBSyxPQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSxXQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyxRQUFBLEdBQUFQLE9BQUE7QUFDQSxJ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QSxFQUFFcUQ7TUFBUyxDQUFBLENBQWtCO0lBQUEsQ0FBQTtFQUN4RixDQUFBLENBQ21CO0FBRS9CLENBQUM7QUFFRHpDLGVBQWUsQ0FBQ0gsV0FBVyxHQUFHLGFBQWE7QUFFcEMsSUFBTXlHLFdBQVcsR0FBQUMsT0FBQSxDQUFBRCxXQUFBLGdCQUFHLElBQUF2RyxXQUFJLEVBQUNDLGVBQWUsQ0FBQztBQUFDLElBQUF3RyxRQUFBLEdBQUFELE9BQUEsY0FFbENELFdBQVciLCJmaWxlIjoiY29tcG9uZW50cy9Qcm9Gb3JtL1Byb0Zvcm1MaXN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsganN4IGFzIF9qc3gsIEZyYWdtZW50IGFzIF9GcmFnbWVudCwganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgbWVtbywgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VSZWYgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdXNlTWVtb2l6ZWRGbiBmcm9tICdAMW1vbmV5L2hvb2tzL3VzZU1lbW9pemVkRm4nO1xuaW1wb3J0IHsgZGVmYXVsdCBhcyBjbGFzc25hbWVzIH0gZnJvbSAnLi4vLi4vdXRpbHMvY2xhc3NuYW1lcyc7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tICcuLi9CdXR0b24nO1xuaW1wb3J0IHsgVHlwb2dyYXBoeUxhYmVsLCBUeXBvZ3JhcGh5Qm9keSB9IGZyb20gJy4uL1R5cG9ncmFwaHknO1xuaW1wb3J0IHsgRm9ybUxpc3RDb250ZXh0LCB1c2VQcm9Gb3JtU3RhYmxlLCB1c2VQcm9Gb3JtU3RvcmUgfSBmcm9tICcuL2NvbnRleHQnO1xuaW1wb3J0IHsgdXNlU3RvcmVTZWxlY3Rvciwgc2hhbGxvd0VxdWFsQXJyYXlzIH0gZnJvbSAnLi9jb3JlL2Zvcm1TdG9yZSc7XG5pbXBvcnQgeyBDU1NfUFJFRklYLCBERUZBVUxUX1RFWFQsIFBST0ZPUk1fTElTVF9MQUJFTF9TSVpFLCBQUk9GT1JNX0xJU1RfTEFCRUxfQ09MT1IgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBleHRyYWN0QnV0dG9uUHJvcHMsIGdldE5lc3RlZFZhbHVlIH0gZnJvbSAnLi91dGlscyc7XG5jb25zdCBjbGFzc2VzID0gY2xhc3NuYW1lcyhgJHtDU1NfUFJFRklYfS1saXN0YCk7XG5sZXQgbGlzdEtleUNvdW50ZXIgPSAwO1xuY29uc3QgZ2VuZXJhdGVLZXkgPSAoKSA9PiBgbGlzdF8keysrbGlzdEtleUNvdW50ZXJ9YDtcbi8vIFN0YWJsZSBlbXB0eSByZXN1bHQgZm9yIHRoZSBuby12YWx1ZSBjYXNlIOKAlCBhIGZyZXNoIFtdIHBlciBzZWxlY3RvciBydW5cbi8vIHdvdWxkIG5ldmVyIGNvbXBhcmUgZXF1YWwgYW5kIGxvb3AgdGhlIHN1YnNjcmlwdGlvbi5cbmNvbnN0IEVNUFRZX0xJU1QgPSBbXTtcbi8vIEZpZWxkIG1ldGEgKGVycm9ycy93YXJuaW5ncy90b3VjaGVkL3ZhbGlkYXRpbmcpIGlzIHN0b3JlZCBGTEFULCBrZXllZCBieVxuLy8gdGhlIHBvc2l0aW9uYWwgcGF0aCAoYGl0ZW1zLjEudGl0bGVgKS4gUm93IG9wZXJhdGlvbnMgc2hpZnQgdGhlIFZBTFVFUyBidXRcbi8vIG5vdCB0aG9zZSBrZXlzIOKAlCByZW1hcCB0aGVtIGluIHRoZSBzYW1lIGhhbmRsZXIgc28gZXZlcnkgcm93IGtlZXBzIGl0cyBvd25cbi8vIG1ldGEuIGBtYXBJbmRleGAgcmV0dXJucyB0aGUgbmV3IGluZGV4IGZvciBhbiBvbGQgb25lLCBvciBudWxsIHRvIGRyb3AgaXQuXG5jb25zdCBMSVNUX01FVEFfS0VZUyA9IFsnZXJyb3JzJywgJ3dhcm5pbmdzJywgJ3RvdWNoZWQnLCAndmFsaWRhdGluZyddO1xuZnVuY3Rpb24gcmVtYXBMaXN0TWV0YShzdG9yZSwgbGlzdE5hbWUsIG1hcEluZGV4KSB7XG4gICAgY29uc3Qgc3RhdGUgPSBzdG9yZS5nZXRTdGF0ZSgpO1xuICAgIGNvbnN0IHByZWZpeCA9IGAke2xpc3ROYW1lfS5gO1xuICAgIGNvbnN0IHBhdGNoID0ge307XG4gICAgZm9yIChjb25zdCBtZXRhS2V5IG9mIExJU1RfTUVUQV9LRVlTKSB7XG4gICAgICAgIGNvbnN0IHNvdXJjZSA9IHN0YXRlW21ldGFLZXldO1xuICAgICAgICBsZXQgY2hhbmdlZCA9IGZhbHNlO1xuICAgICAgICBjb25zdCBuZXh0ID0ge307XG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHNvdXJjZSkpIHtcbiAgICAgICAgICAgIGlmICgha2V5LnN0YXJ0c1dpdGgocHJlZml4KSkge1xuICAgICAgICAgICAgICAgIG5leHRba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgcmVzdCA9IGtleS5zbGljZShwcmVmaXgubGVuZ3RoKTtcbiAgICAgICAgICAgIGNvbnN0IGRvdEF0ID0gcmVzdC5pbmRleE9mKCcuJyk7XG4gICAgICAgICAgICBjb25zdCBpbmRleFN0ciA9IGRvdEF0ID09PSAtMSA/IHJlc3QgOiByZXN0LnNsaWNlKDAsIGRvdEF0KTtcbiAgICAgICAgICAgIGlmICghL15cXGQrJC8udGVzdChpbmRleFN0cikpIHtcbiAgICAgICAgICAgICAgICBuZXh0W2tleV0gPSBzb3VyY2Vba2V5XTtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IG5ld0luZGV4ID0gbWFwSW5kZXgoTnVtYmVyKGluZGV4U3RyKSk7XG4gICAgICAgICAgICBpZiAobmV3SW5kZXggPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsgLy8gcm93IHJlbW92ZWQg4oCUIGRyb3AgaXRzIG1ldGFcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChuZXdJbmRleCA9PT0gTnVtYmVyKGluZGV4U3RyKSkge1xuICAgICAgICAgICAgICAgIG5leHRba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbmV4dFtgJHtwcmVmaXh9JHtuZXdJbmRleH0ke2RvdEF0ID09PSAtMSA/ICcnIDogcmVzdC5zbGljZShkb3RBdCl9YF0gPSBzb3VyY2Vba2V5XTtcbiAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjaGFuZ2VkKSB7XG4gICAgICAgICAgICBwYXRjaFttZXRhS2V5XSA9IG5leHQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKE9iamVjdC5rZXlzKHBhdGNoKS5sZW5ndGggPiAwKVxuICAgICAgICBzdG9yZS5zZXRTdGF0ZShwYXRjaCk7XG59XG4vLyBSb3ctbGV2ZWwgbWVtbyBib3VuZGFyeTogc2V0TmVzdGVkVmFsdWUgY2xvbmVzIE9OTFkgdGhlIGVkaXRlZCByb3csIHNvXG4vLyB1bnRvdWNoZWQgcm93cyBrZWVwIHRoZWlyIHJlY29yZCBpZGVudGl0eSBhbmQgYmFpbCBvdXQgaGVyZSB3aGlsZSBhXG4vLyBzaWJsaW5nIHJvdyBpcyBiZWluZyBlZGl0ZWQuXG5jb25zdCBMaXN0Um93QWN0aW9uc0Jhc2UgPSAoeyBpbmRleCwgcmVjb3JkLCBjYW5BZGQsIGNhblJlbW92ZSwgY29weUljb25Qcm9wcywgZGVsZXRlSWNvblByb3BzLCBhY3Rpb24sIGFjdGlvblJlbmRlciwgaXRlbVJlbmRlciwgb25Db3B5LCBvblJlbW92ZSwgfSkgPT4ge1xuICAgIGNvbnN0IGNvcHlCdG5Qcm9wcyA9IGV4dHJhY3RCdXR0b25Qcm9wcyhjb3B5SWNvblByb3BzKTtcbiAgICBjb25zdCBkZWxldGVCdG5Qcm9wcyA9IGV4dHJhY3RCdXR0b25Qcm9wcyhkZWxldGVJY29uUHJvcHMpO1xuICAgIGNvbnN0IGRlZmF1bHREb20gPSB7XG4gICAgICAgIGNvcHk6IGNvcHlJY29uUHJvcHMgIT09IGZhbHNlID8gKF9qc3goQnV0dG9uLCBPYmplY3QuYXNzaWduKHsgdHlwZTogXCJidXR0b25cIiwgY29sb3I6IFwic2Vjb25kYXJ5XCIsIHNpemU6IFwic21hbGxcIiB9LCBjb3B5QnRuUHJvcHMucmVzdCwgeyBvbkNsaWNrOiAoKSA9PiBvbkNvcHkoaW5kZXgpLCBkaXNhYmxlZDogIWNhbkFkZCB8fCBjb3B5QnRuUHJvcHMuZGlzYWJsZWQsIGNoaWxkcmVuOiBERUZBVUxUX1RFWFQuY29weSB9KSwgYGNvcHktJHtpbmRleH1gKSkgOiBudWxsLFxuICAgICAgICBkZWxldGU6IGRlbGV0ZUljb25Qcm9wcyAhPT0gZmFsc2UgPyAoX2pzeChCdXR0b24sIE9iamVjdC5hc3NpZ24oeyB0eXBlOiBcImJ1dHRvblwiLCBjb2xvcjogXCJzZWNvbmRhcnlcIiwgc2l6ZTogXCJzbWFsbFwiIH0sIGRlbGV0ZUJ0blByb3BzLnJlc3QsIHsgb25DbGljazogKCkgPT4gb25SZW1vdmUoaW5kZXgpLCBkaXNhYmxlZDogIWNhblJlbW92ZSB8fCBkZWxldGVCdG5Qcm9wcy5kaXNhYmxlZCwgY2hpbGRyZW46IERFRkFVTFRfVEVYVC5kZWxldGUgfSksIGBkZWxldGUtJHtpbmRleH1gKSkgOiBudWxsLFxuICAgIH07XG4gICAgY29uc3QgcmVuZGVyZWRBY3Rpb25zID0gYWN0aW9uUmVuZGVyXG4gICAgICAgID8gYWN0aW9uUmVuZGVyKHsgaW5kZXgsIHJlY29yZCB9LCBhY3Rpb24sIGRlZmF1bHREb20pXG4gICAgICAgIDogW2RlZmF1bHREb20uY29weSwgZGVmYXVsdERvbS5kZWxldGVdLmZpbHRlcihCb29sZWFuKTtcbiAgICBjb25zdCByb3dOb2RlID0gKF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ3Jvdy1hY3Rpb25zJyksIGNoaWxkcmVuOiByZW5kZXJlZEFjdGlvbnMgfSkpO1xuICAgIGlmIChpdGVtUmVuZGVyKSB7XG4gICAgICAgIHJldHVybiBfanN4KF9GcmFnbWVudCwgeyBjaGlsZHJlbjogaXRlbVJlbmRlcih7IGxpc3REb206IHJvd05vZGUsIGFjdGlvbiB9KSB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHJvd05vZGU7XG59O1xuTGlzdFJvd0FjdGlvbnNCYXNlLmRpc3BsYXlOYW1lID0gJ1Byb0Zvcm1MaXN0Um93QWN0aW9ucyc7XG5jb25zdCBMaXN0Um93QWN0aW9ucyA9IG1lbW8oTGlzdFJvd0FjdGlvbnNCYXNlKTtcbmNvbnN0IFByb0Zvcm1MaXN0QmFzZSA9IChwcm9wcykgPT4ge1xuICAgIHZhciBfYSwgX2I7XG4gICAgY29uc3QgeyBuYW1lOiBmdWxsTmFtZSwgbGFiZWwsIG1pbiwgbWF4LCByZXF1aXJlZCwgcmVxdWlyZWRNZXNzYWdlID0gJ1RoaXMgbGlzdCBjYW5ub3QgYmUgZW1wdHknLCBpbml0aWFsVmFsdWUsIGNvcHlJY29uUHJvcHMsIGRlbGV0ZUljb25Qcm9wcywgY3JlYXRvckJ1dHRvblByb3BzLCBpdGVtUmVuZGVyLCBhY3Rpb25SZW5kZXIsIGNoaWxkcmVuLCBvbkFmdGVyQWRkLCBvbkFmdGVyUmVtb3ZlLCB9ID0gcHJvcHM7XG4gICAgLy8gTGlzdCBuYW1lcyBhcmUgQUJTT0xVVEUgcGF0aHMsIGxpa2UgZXZlcnkgb3RoZXIgZmllbGQgbmFtZS4gQSBuZXN0ZWRcbiAgICAvLyBsaXN0IGlzIHdyaXR0ZW4gd2l0aCB0aGUgZnVsbCByb3cgcGF0aCAoYG5hbWU9e2Ake2ZpZWxkLm5hbWV9LnRhZ3NgfWApLFxuICAgIC8vIGV4YWN0bHkgbGlrZSByb3cgZmllbGRzIOKAlCB0aGUgYmFyZSBwYXJlbnQgbGlzdCBuYW1lIGNhcnJpZXMgbm8gcm93XG4gICAgLy8gaW5kZXgsIHNvIGF1dG8tcHJlZml4aW5nIHdpdGggaXQgY291bGQgbmV2ZXIgYWRkcmVzcyBhIHJvdydzIG93blxuICAgIC8vIHN1Yi1saXN0IChpdCB3b3VsZCByZXNvbHZlIGBwYXJlbnQudGFnc2AgaW5zdGVhZCBvZiBgcGFyZW50LjAudGFnc2ApLlxuICAgIGNvbnN0IHsgc2V0RmllbGRWYWx1ZSwgcmVnaXN0ZXJGaWVsZCwgdW5yZWdpc3RlckZpZWxkLCByZXRhaW5GaWVsZCwgcmVsZWFzZUZpZWxkLCB2YWxpZGF0ZUZpZWxkIH0gPSB1c2VQcm9Gb3JtU3RhYmxlKCk7XG4gICAgY29uc3Qgc3RvcmUgPSB1c2VQcm9Gb3JtU3RvcmUoKTtcbiAgICBjb25zdCBpbml0aWFsQXBwbGllZCA9IHVzZVJlZihmYWxzZSk7XG4gICAgY29uc3Qga2V5c1JlZiA9IHVzZVJlZihbXSk7XG4gICAgLy8gU3Vic2NyaWJlIE9OTFkgdG8gdGhpcyBsaXN0J3Mgb3duIHZhbHVlIGFuZCBlcnJvcjogdHlwaW5nIGVsc2V3aGVyZSBpblxuICAgIC8vIHRoZSBmb3JtIGxlYXZlcyBib3RoIHVudG91Y2hlZCBhbmQgdGhpcyBjb21wb25lbnQgZG9lcyBub3QgcmVuZGVyLlxuICAgIGNvbnN0IFtsaXN0LCBsaXN0RXJyb3JdID0gdXNlU3RvcmVTZWxlY3RvcihzdG9yZSwgKHN0YXRlKSA9PiB7XG4gICAgICAgIGNvbnN0IHJhdyA9IGZ1bGxOYW1lLmluY2x1ZGVzKCcuJylcbiAgICAgICAgICAgID8gZ2V0TmVzdGVkVmFsdWUoc3RhdGUudmFsdWVzLCBmdWxsTmFtZSlcbiAgICAgICAgICAgIDogc3RhdGUudmFsdWVzW2Z1bGxOYW1lXTtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIEFycmF5LmlzQXJyYXkocmF3KSA/IHJhdyA6IEVNUFRZX0xJU1QsXG4gICAgICAgICAgICBzdGF0ZS5lcnJvcnNbZnVsbE5hbWVdLFxuICAgICAgICBdO1xuICAgIH0sIHNoYWxsb3dFcXVhbEFycmF5cyk7XG4gICAgLy8gU3luYyBrZXlzIHdpdGggbGlzdCBsZW5ndGhcbiAgICB3aGlsZSAoa2V5c1JlZi5jdXJyZW50Lmxlbmd0aCA8IGxpc3QubGVuZ3RoKSB7XG4gICAgICAgIGtleXNSZWYuY3VycmVudC5wdXNoKGdlbmVyYXRlS2V5KCkpO1xuICAgIH1cbiAgICBpZiAoa2V5c1JlZi5jdXJyZW50Lmxlbmd0aCA+IGxpc3QubGVuZ3RoKSB7XG4gICAgICAgIGtleXNSZWYuY3VycmVudCA9IGtleXNSZWYuY3VycmVudC5zbGljZSgwLCBsaXN0Lmxlbmd0aCk7XG4gICAgfVxuICAgIC8vIGluaXRpYWxWYWx1ZSBpcyBNT1VOVC1PTkxZIChsaWtlIGZvcm0gaW5pdGlhbFZhbHVlcyk6IHRoZSBkZWNpc2lvbiBpc1xuICAgIC8vIG1hZGUgZXhhY3RseSBvbmNlLiBXaXRob3V0IHRoZSB1bmNvbmRpdGlvbmFsIGZsYWcsIGEgbGlzdCBzZWVkZWQgYnkgZm9ybVxuICAgIC8vIGluaXRpYWxWYWx1ZXMgd291bGQgcmUtYXBwbHkgaW5pdGlhbFZhbHVlIHdoZW4gdGhlIHVzZXIgZW1wdGllcyBpdC5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAoaW5pdGlhbEFwcGxpZWQuY3VycmVudClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgaW5pdGlhbEFwcGxpZWQuY3VycmVudCA9IHRydWU7XG4gICAgICAgIGlmIChsaXN0Lmxlbmd0aCAhPT0gMClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGluaXRpYWxWYWx1ZSkgfHwgaW5pdGlhbFZhbHVlLmxlbmd0aCA9PT0gMClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgc2V0RmllbGRWYWx1ZShmdWxsTmFtZSwgWy4uLmluaXRpYWxWYWx1ZV0pO1xuICAgICAgICBrZXlzUmVmLmN1cnJlbnQgPSBpbml0aWFsVmFsdWUubWFwKCgpID0+IGdlbmVyYXRlS2V5KCkpO1xuICAgICAgICAvLyBNb3VudC1vbmx5IGJ5IGRlc2lnbi5cbiAgICB9LCBbXSk7XG4gICAgY29uc3QgY2FuQWRkID0gbWF4ID09IG51bGwgfHwgbGlzdC5sZW5ndGggPCBtYXg7XG4gICAgY29uc3QgY2FuUmVtb3ZlID0gbWluID09IG51bGwgfHwgbGlzdC5sZW5ndGggPiBtaW47XG4gICAgLy8gYHJlcXVpcmVkYCBwYXJ0aWNpcGF0ZXMgaW4gUkVBTCB2YWxpZGF0aW9uOiB0aGUgcnVsZSBpcyByZWdpc3RlcmVkIHdpdGhcbiAgICAvLyB0aGUgZm9ybSAoc28gc3VibWl0IGJsb2NrcyBvbiBhbiBlbXB0eSBsaXN0KSBhbmQgcmUtcnVuIGFmdGVyIGV2ZXJ5XG4gICAgLy8gc3RydWN0dXJhbCBtdXRhdGlvbiBiZWxvdy5cbiAgICBjb25zdCBsaXN0UnVsZXMgPSB1c2VNZW1vKCgpID0+IChyZXF1aXJlZCA/IFt7IHJlcXVpcmVkOiB0cnVlLCBtZXNzYWdlOiByZXF1aXJlZE1lc3NhZ2UgfV0gOiBbXSksIFtyZXF1aXJlZCwgcmVxdWlyZWRNZXNzYWdlXSk7XG4gICAgLy8gTW91bnQtY291bnRlZCBsaWZldGltZSAoc2VlIHVzZUZvcm1JdGVtKTogdGhlIHJ1bGVzIGFyZSByZW1vdmVkIG9ubHkgd2hlblxuICAgIC8vIHRoZSBMQVNUIHNhbWUtbmFtZSBob2xkZXIgdW5tb3VudHMuIERlY2xhcmVkIEJFRk9SRSB0aGUgcmVnaXN0ZXIgZWZmZWN0IHNvXG4gICAgLy8gdGhlIHJlZ2lzdHJhdGlvbiBiZWxvdyBpcyBjbGFzc2lmaWVkIGFzIGluc3RhbmNlLW93bmVkLlxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHJldGFpbkZpZWxkKGZ1bGxOYW1lKTtcbiAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgIHJlbGVhc2VGaWVsZChmdWxsTmFtZSk7XG4gICAgICAgIH07XG4gICAgfSwgW2Z1bGxOYW1lXSk7XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKGxpc3RSdWxlcy5sZW5ndGggPiAwKVxuICAgICAgICAgICAgcmVnaXN0ZXJGaWVsZChmdWxsTmFtZSwgbGlzdFJ1bGVzKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgdW5yZWdpc3RlckZpZWxkKGZ1bGxOYW1lKTtcbiAgICB9KTtcbiAgICBjb25zdCB2YWxpZGF0ZUxpc3RWYWx1ZSA9IHVzZU1lbW9pemVkRm4oKG5leHRMaXN0KSA9PiB7XG4gICAgICAgIGlmIChsaXN0UnVsZXMubGVuZ3RoID4gMClcbiAgICAgICAgICAgIHZhbGlkYXRlRmllbGQoZnVsbE5hbWUsIGxpc3RSdWxlcywgbmV4dExpc3QpO1xuICAgIH0pO1xuICAgIGNvbnN0IGFkZCA9IHVzZU1lbW9pemVkRm4oKGRlZmF1bHRWYWx1ZSwgaW5kZXgpID0+IHtcbiAgICAgICAgaWYgKCFjYW5BZGQpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IHZhbHVlID0gZGVmYXVsdFZhbHVlICE9PSBudWxsICYmIGRlZmF1bHRWYWx1ZSAhPT0gdm9pZCAwID8gZGVmYXVsdFZhbHVlIDoge307XG4gICAgICAgIGNvbnN0IG5ld0xpc3QgPSBbLi4ubGlzdF07XG4gICAgICAgIGNvbnN0IG5ld0tleXMgPSBbLi4ua2V5c1JlZi5jdXJyZW50XTtcbiAgICAgICAgY29uc3QgaW5zZXJ0SW5kZXggPSB0eXBlb2YgaW5kZXggPT09ICdudW1iZXInID8gaW5kZXggOiBuZXdMaXN0Lmxlbmd0aDtcbiAgICAgICAgbmV3TGlzdC5zcGxpY2UoaW5zZXJ0SW5kZXgsIDAsIHZhbHVlKTtcbiAgICAgICAgbmV3S2V5cy5zcGxpY2UoaW5zZXJ0SW5kZXgsIDAsIGdlbmVyYXRlS2V5KCkpO1xuICAgICAgICBrZXlzUmVmLmN1cnJlbnQgPSBuZXdLZXlzO1xuICAgICAgICBzZXRGaWVsZFZhbHVlKGZ1bGxOYW1lLCBuZXdMaXN0KTtcbiAgICAgICAgcmVtYXBMaXN0TWV0YShzdG9yZSwgZnVsbE5hbWUsIChpKSA9PiAoaSA+PSBpbnNlcnRJbmRleCA/IGkgKyAxIDogaSkpO1xuICAgICAgICB2YWxpZGF0ZUxpc3RWYWx1ZShuZXdMaXN0KTtcbiAgICAgICAgb25BZnRlckFkZCA9PT0gbnVsbCB8fCBvbkFmdGVyQWRkID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkFmdGVyQWRkKHZhbHVlLCBpbnNlcnRJbmRleCk7XG4gICAgfSk7XG4gICAgY29uc3QgcmVtb3ZlQXQgPSB1c2VNZW1vaXplZEZuKChpbmRleCkgPT4ge1xuICAgICAgICBpZiAoIWNhblJlbW92ZSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29uc3QgbmV3TGlzdCA9IFsuLi5saXN0XTtcbiAgICAgICAgY29uc3QgbmV3S2V5cyA9IFsuLi5rZXlzUmVmLmN1cnJlbnRdO1xuICAgICAgICBuZXdMaXN0LnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgIG5ld0tleXMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAga2V5c1JlZi5jdXJyZW50ID0gbmV3S2V5cztcbiAgICAgICAgc2V0RmllbGRWYWx1ZShmdWxsTmFtZSwgbmV3TGlzdCk7XG4gICAgICAgIHJlbWFwTGlzdE1ldGEoc3RvcmUsIGZ1bGxOYW1lLCAoaSkgPT4ge1xuICAgICAgICAgICAgaWYgKGkgPT09IGluZGV4KVxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgcmV0dXJuIGkgPiBpbmRleCA/IGkgLSAxIDogaTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhbGlkYXRlTGlzdFZhbHVlKG5ld0xpc3QpO1xuICAgICAgICBvbkFmdGVyUmVtb3ZlID09PSBudWxsIHx8IG9uQWZ0ZXJSZW1vdmUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQWZ0ZXJSZW1vdmUoaW5kZXgpO1xuICAgIH0pO1xuICAgIGNvbnN0IGNvcHkgPSB1c2VNZW1vaXplZEZuKChpbmRleCkgPT4ge1xuICAgICAgICBpZiAoIWNhbkFkZClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBsaXN0W2luZGV4XSA/IE9iamVjdC5hc3NpZ24oe30sIGxpc3RbaW5kZXhdKSA6IHt9O1xuICAgICAgICBhZGQodmFsdWUsIGluZGV4ICsgMSk7XG4gICAgfSk7XG4gICAgY29uc3QgbW92ZSA9IHVzZU1lbW9pemVkRm4oKGZyb20sIHRvKSA9PiB7XG4gICAgICAgIGlmIChmcm9tID09PSB0bylcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgaWYgKGZyb20gPCAwIHx8IGZyb20gPj0gbGlzdC5sZW5ndGggfHwgdG8gPCAwIHx8IHRvID49IGxpc3QubGVuZ3RoKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCBuZXdMaXN0ID0gWy4uLmxpc3RdO1xuICAgICAgICBjb25zdCBuZXdLZXlzID0gWy4uLmtleXNSZWYuY3VycmVudF07XG4gICAgICAgIGNvbnN0IFttb3ZlZEl0ZW1dID0gbmV3TGlzdC5zcGxpY2UoZnJvbSwgMSk7XG4gICAgICAgIGNvbnN0IFttb3ZlZEtleV0gPSBuZXdLZXlzLnNwbGljZShmcm9tLCAxKTtcbiAgICAgICAgbmV3TGlzdC5zcGxpY2UodG8sIDAsIG1vdmVkSXRlbSk7XG4gICAgICAgIG5ld0tleXMuc3BsaWNlKHRvLCAwLCBtb3ZlZEtleSk7XG4gICAgICAgIGtleXNSZWYuY3VycmVudCA9IG5ld0tleXM7XG4gICAgICAgIHNldEZpZWxkVmFsdWUoZnVsbE5hbWUsIG5ld0xpc3QpO1xuICAgICAgICByZW1hcExpc3RNZXRhKHN0b3JlLCBmdWxsTmFtZSwgKGkpID0+IHtcbiAgICAgICAgICAgIGlmIChpID09PSBmcm9tKVxuICAgICAgICAgICAgICAgIHJldHVybiB0bztcbiAgICAgICAgICAgIGlmIChmcm9tIDwgdG8pXG4gICAgICAgICAgICAgICAgcmV0dXJuIGkgPiBmcm9tICYmIGkgPD0gdG8gPyBpIC0gMSA6IGk7XG4gICAgICAgICAgICByZXR1cm4gaSA+PSB0byAmJiBpIDwgZnJvbSA/IGkgKyAxIDogaTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gICAgY29uc3QgZ2V0TGlzdCA9IHVzZU1lbW9pemVkRm4oKCkgPT4gbGlzdCk7XG4gICAgY29uc3QgYWN0aW9uID0gdXNlTWVtbygoKSA9PiAoeyBhZGQsIHJlbW92ZTogcmVtb3ZlQXQsIG1vdmUsIGNvcHksIGdldExpc3QgfSksIFthZGQsIHJlbW92ZUF0LCBtb3ZlLCBjb3B5LCBnZXRMaXN0XSk7XG4gICAgLy8gUGVyLWtleSBjYWNoZSBrZWVwcyBlYWNoIHJvdydzIGZpZWxkIG9iamVjdCBpZGVudGl0eSBzdGFibGUgYWNyb3NzIGxpc3RcbiAgICAvLyBjb21taXRzIChlLmcuIHR5cGluZyBpbiBhIHNpYmxpbmcgcm93KSwgc28gbWVtb2l6ZWQgcm93IGNvbnRlbnQgc2Vlc1xuICAgIC8vIHNoYWxsb3ctZXF1YWwgcHJvcHMgYW5kIGJhaWxzIG91dC5cbiAgICBjb25zdCBmaWVsZE9iakNhY2hlID0gdXNlUmVmKG5ldyBNYXAoKSk7XG4gICAgY29uc3QgbWFwcGVkRmllbGRzID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICAgIGNvbnN0IG5leHRDYWNoZSA9IG5ldyBNYXAoKTtcbiAgICAgICAgY29uc3QgZmllbGRzID0gbGlzdC5tYXAoKF9pdGVtLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qga2V5ID0ga2V5c1JlZi5jdXJyZW50W2luZGV4XSB8fCBgZmFsbGJhY2tfJHtpbmRleH1gO1xuICAgICAgICAgICAgY29uc3QgZmllbGROYW1lID0gYCR7ZnVsbE5hbWV9LiR7aW5kZXh9YDtcbiAgICAgICAgICAgIGNvbnN0IGNhY2hlZCA9IGZpZWxkT2JqQ2FjaGUuY3VycmVudC5nZXQoa2V5KTtcbiAgICAgICAgICAgIGNvbnN0IGZpZWxkID0gY2FjaGVkICYmIGNhY2hlZC5uYW1lID09PSBmaWVsZE5hbWUgPyBjYWNoZWQgOiB7IG5hbWU6IGZpZWxkTmFtZSwga2V5IH07XG4gICAgICAgICAgICBuZXh0Q2FjaGUuc2V0KGtleSwgZmllbGQpO1xuICAgICAgICAgICAgcmV0dXJuIGZpZWxkO1xuICAgICAgICB9KTtcbiAgICAgICAgZmllbGRPYmpDYWNoZS5jdXJyZW50ID0gbmV4dENhY2hlO1xuICAgICAgICByZXR1cm4gZmllbGRzO1xuICAgIH0sIFtsaXN0LCBmdWxsTmFtZV0pO1xuICAgIC8vIE1lbW9pemVkIHNvIHRoZSByb3cgZmFjdG9yeSBpcyByZS1pbnZva2VkIG9ubHkgd2hlbiB0aGUgbGlzdCBpdHNlbGYgKG9yXG4gICAgLy8gdGhlIGNvbnN1bWVyLXByb3ZpZGVkIGNoaWxkcmVuKSBjaGFuZ2VzIOKAlCBuZXZlciBmb3IgdW5yZWxhdGVkIGNvbW1pdHMuXG4gICAgY29uc3QgbGlzdERvbSA9IHVzZU1lbW8oKCkgPT4gKHR5cGVvZiBjaGlsZHJlbiA9PT0gJ2Z1bmN0aW9uJyA/IGNoaWxkcmVuKG1hcHBlZEZpZWxkcywgYWN0aW9uKSA6IGNoaWxkcmVuKSwgW2NoaWxkcmVuLCBtYXBwZWRGaWVsZHMsIGFjdGlvbl0pO1xuICAgIC8vIEFjdGlvbiBidXR0b25zIHBlciByb3cg4oCUIExpc3RSb3dBY3Rpb25zIGlzIHRoZSBtZW1vIGJvdW5kYXJ5XG4gICAgY29uc3QgYWN0aW9uUm93cyA9IGxpc3QubWFwKChyZWNvcmQsIGluZGV4KSA9PiAoX2pzeChMaXN0Um93QWN0aW9ucywgeyBpbmRleDogaW5kZXgsIHJlY29yZDogcmVjb3JkLCBjYW5BZGQ6IGNhbkFkZCwgY2FuUmVtb3ZlOiBjYW5SZW1vdmUsIGNvcHlJY29uUHJvcHM6IGNvcHlJY29uUHJvcHMsIGRlbGV0ZUljb25Qcm9wczogZGVsZXRlSWNvblByb3BzLCBhY3Rpb246IGFjdGlvbiwgYWN0aW9uUmVuZGVyOiBhY3Rpb25SZW5kZXIsIGl0ZW1SZW5kZXI6IGl0ZW1SZW5kZXIsIG9uQ29weTogY29weSwgb25SZW1vdmU6IHJlbW92ZUF0IH0sIGtleXNSZWYuY3VycmVudFtpbmRleF0gfHwgaW5kZXgpKSk7XG4gICAgLy8gQ3JlYXRvciBidXR0b25cbiAgICBjb25zdCBoYXNDcmVhdG9yID0gY3JlYXRvckJ1dHRvblByb3BzICE9PSBmYWxzZTtcbiAgICBjb25zdCBjcmVhdG9yQ29uZmlnID0gaGFzQ3JlYXRvciAmJiB0eXBlb2YgY3JlYXRvckJ1dHRvblByb3BzID09PSAnb2JqZWN0JyA/IGNyZWF0b3JCdXR0b25Qcm9wcyA6IHt9O1xuICAgIGNvbnN0IGNyZWF0b3JQb3NpdGlvbiA9IChfYSA9IGNyZWF0b3JDb25maWcgPT09IG51bGwgfHwgY3JlYXRvckNvbmZpZyA9PT0gdm9pZCAwID8gdm9pZCAwIDogY3JlYXRvckNvbmZpZy5wb3NpdGlvbikgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogJ2JvdHRvbSc7XG4gICAgY29uc3QgY3JlYXRvclRleHQgPSAoX2IgPSBjcmVhdG9yQ29uZmlnID09PSBudWxsIHx8IGNyZWF0b3JDb25maWcgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNyZWF0b3JDb25maWcudGV4dCkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogREVGQVVMVF9URVhULmFkZDtcbiAgICBjb25zdCBjcmVhdG9yQnV0dG9uID0gaGFzQ3JlYXRvciA/IChfanN4KEJ1dHRvbiwgeyB0eXBlOiBcImJ1dHRvblwiLCBjb2xvcjogXCJzZWNvbmRhcnlcIiwgb25DbGljazogKCkgPT4ge1xuICAgICAgICAgICAgaWYgKGNyZWF0b3JQb3NpdGlvbiA9PT0gJ3RvcCcpIHtcbiAgICAgICAgICAgICAgICBhZGQoe30sIDApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgYWRkKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIGRpc2FibGVkOiAhY2FuQWRkLCBjaGlsZHJlbjogY3JlYXRvclRleHQgfSkpIDogbnVsbDtcbiAgICBjb25zdCBmb3JtTGlzdENvbnRleHRWYWx1ZSA9IHVzZU1lbW8oKCkgPT4gKHsgbGlzdE5hbWU6IGZ1bGxOYW1lIH0pLCBbZnVsbE5hbWVdKTtcbiAgICByZXR1cm4gKF9qc3goRm9ybUxpc3RDb250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiBmb3JtTGlzdENvbnRleHRWYWx1ZSwgY2hpbGRyZW46IF9qc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCksIGNoaWxkcmVuOiBbbGFiZWwgJiYgX2pzeChUeXBvZ3JhcGh5TGFiZWwsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdsYWJlbCcpLCBzaXplOiBQUk9GT1JNX0xJU1RfTEFCRUxfU0laRSwgY29sb3I6IFBST0ZPUk1fTElTVF9MQUJFTF9DT0xPUiwgY2hpbGRyZW46IGxhYmVsIH0pLCBjcmVhdG9yUG9zaXRpb24gPT09ICd0b3AnICYmIGNyZWF0b3JCdXR0b24sIF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ2NvbnRlbnQnKSwgY2hpbGRyZW46IGxpc3REb20gfSksIF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ2FjdGlvbnMnKSwgY2hpbGRyZW46IGFjdGlvblJvd3MgfSksIGNyZWF0b3JQb3NpdGlvbiA9PT0gJ2JvdHRvbScgJiYgY3JlYXRvckJ1dHRvbiwgbGlzdEVycm9yICYmIF9qc3goVHlwb2dyYXBoeUJvZHksIHsgYXM6IFwiZGl2XCIsIHNpemU6IFwic21cIiwgY29sb3I6IFwiZGFuZ2VyXCIsIGNoaWxkcmVuOiBsaXN0RXJyb3IgfSldIH0pIH0pKTtcbn07XG5Qcm9Gb3JtTGlzdEJhc2UuZGlzcGxheU5hbWUgPSAnUHJvRm9ybUxpc3QnO1xuZXhwb3J0IGNvbnN0IFByb0Zvcm1MaXN0ID0gbWVtbyhQcm9Gb3JtTGlzdEJhc2UpO1xuZXhwb3J0IGRlZmF1bHQgUHJvRm9ybUxpc3Q7IixudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
@@ -4,6 +4,8 @@ export declare const FORM_LAYOUTS: readonly ["vertical"];
4
4
  export declare const LABEL_ALIGNS: readonly ["left", "right"];
5
5
  export declare const VALIDATE_STATUSES: readonly ["success", "warning", "error", "validating"];
6
6
  export declare const VALIDATE_TRIGGERS: readonly ["onChange", "onBlur"];
7
+ export declare const RULE_CONTEXT_READ_MEMBERS: readonly ["getFieldError", "getFieldWarning", "isFieldTouched", "isFieldValidating"];
8
+ export declare const RULE_CONTEXT_MUTATOR_MEMBERS: readonly ["setFieldValue", "setFieldsValue", "resetFields"];
7
9
  export type FormSize = (typeof FORM_SIZES)[number];
8
10
  export type FormLayout = (typeof FORM_LAYOUTS)[number];
9
11
  export type LabelAlign = (typeof LABEL_ALIGNS)[number];