payload 2.0.0-beta.13 → 2.0.0-beta.15

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 (65) hide show
  1. package/dist/admin/components/elements/ArrayAction/index.js +2 -2
  2. package/dist/admin/components/elements/DocumentControls/index.d.ts.map +1 -1
  3. package/dist/admin/components/elements/DocumentControls/index.js +1 -2
  4. package/dist/admin/components/elements/Hamburger/index.scss +2 -2
  5. package/dist/admin/components/elements/Header/index.d.ts.map +1 -1
  6. package/dist/admin/components/elements/Header/index.js +6 -6
  7. package/dist/admin/components/elements/Localizer/index.d.ts.map +1 -1
  8. package/dist/admin/components/elements/Localizer/index.js +1 -3
  9. package/dist/admin/components/elements/Nav/context.d.ts +1 -1
  10. package/dist/admin/components/elements/Nav/context.d.ts.map +1 -1
  11. package/dist/admin/components/elements/Nav/context.js +12 -7
  12. package/dist/admin/components/elements/Nav/index.d.ts.map +1 -1
  13. package/dist/admin/components/elements/Nav/index.js +19 -18
  14. package/dist/admin/components/elements/WhereBuilder/Condition/index.js +6 -6
  15. package/dist/admin/components/elements/WhereBuilder/field-types.js +2 -2
  16. package/dist/admin/components/forms/Form/buildStateFromSchema/addFieldStatePromise.js +5 -5
  17. package/dist/admin/components/forms/Form/fieldReducer.js +7 -7
  18. package/dist/admin/components/forms/Form/index.js +3 -3
  19. package/dist/admin/components/forms/field-types/Array/index.d.ts.map +1 -1
  20. package/dist/admin/components/forms/field-types/Array/index.js +10 -10
  21. package/dist/admin/components/forms/field-types/Blocks/index.js +8 -8
  22. package/dist/admin/components/forms/field-types/Select/Input.d.ts.map +1 -1
  23. package/dist/admin/components/forms/field-types/Select/Input.js +4 -4
  24. package/dist/admin/components/icons/MinimizeMaximize/index.d.ts +8 -0
  25. package/dist/admin/components/icons/MinimizeMaximize/index.d.ts.map +1 -0
  26. package/dist/admin/components/icons/MinimizeMaximize/index.js +85 -0
  27. package/dist/admin/components/templates/Default/index.d.ts.map +1 -1
  28. package/dist/admin/components/templates/Default/index.js +10 -10
  29. package/dist/admin/components/views/API/index.d.ts +6 -0
  30. package/dist/admin/components/views/API/index.d.ts.map +1 -0
  31. package/dist/admin/components/views/API/index.js +281 -0
  32. package/dist/admin/components/views/API/index.scss +202 -0
  33. package/dist/admin/components/views/Global/Routes/CustomComponent.d.ts.map +1 -1
  34. package/dist/admin/components/views/Global/Routes/CustomComponent.js +3 -2
  35. package/dist/admin/components/views/Global/Routes/index.d.ts.map +1 -1
  36. package/dist/admin/components/views/Global/Routes/index.js +8 -1
  37. package/dist/admin/components/views/collections/Edit/Routes/CustomComponent.js +3 -3
  38. package/dist/admin/components/views/collections/Edit/SetStepNav.js +3 -3
  39. package/dist/auth/operations/me.d.ts.map +1 -1
  40. package/dist/auth/operations/me.js +13 -5
  41. package/dist/auth/strategies/jwt.js +3 -3
  42. package/dist/bin/build.d.ts.map +1 -1
  43. package/dist/bin/build.js +2 -5
  44. package/dist/bin/index.js +2 -2
  45. package/dist/database/migrations/migrateReset.d.ts.map +1 -1
  46. package/dist/database/migrations/migrateReset.js +17 -1
  47. package/dist/database/migrations/migrationsCollection.d.ts.map +1 -1
  48. package/dist/database/migrations/migrationsCollection.js +1 -5
  49. package/dist/fields/hooks/beforeChange/promise.d.ts.map +1 -1
  50. package/dist/fields/hooks/beforeChange/promise.js +2 -9
  51. package/dist/fields/validations.d.ts.map +1 -1
  52. package/dist/fields/validations.js +9 -7
  53. package/package.json +1 -1
  54. package/dist/admin/components/views/LivePreview/useLivePreview/index.d.ts +0 -9
  55. package/dist/admin/components/views/LivePreview/useLivePreview/index.d.ts.map +0 -1
  56. package/dist/admin/components/views/LivePreview/useLivePreview/index.js +0 -53
  57. package/dist/admin/components/views/LivePreview/useLivePreview/mergeData.d.ts +0 -10
  58. package/dist/admin/components/views/LivePreview/useLivePreview/mergeData.d.ts.map +0 -1
  59. package/dist/admin/components/views/LivePreview/useLivePreview/mergeData.js +0 -30
  60. package/dist/admin/components/views/LivePreview/useLivePreview/promise.d.ts +0 -12
  61. package/dist/admin/components/views/LivePreview/useLivePreview/promise.d.ts.map +0 -1
  62. package/dist/admin/components/views/LivePreview/useLivePreview/promise.js +0 -17
  63. package/dist/admin/components/views/LivePreview/useLivePreview/traverseFields.d.ts +0 -12
  64. package/dist/admin/components/views/LivePreview/useLivePreview/traverseFields.d.ts.map +0 -1
  65. package/dist/admin/components/views/LivePreview/useLivePreview/traverseFields.js +0 -179
@@ -20,14 +20,10 @@ const migrationsCollection = {
20
20
  {
21
21
  name: 'batch',
22
22
  type: 'number'
23
- },
24
- {
25
- name: 'schema',
26
- type: 'json'
27
23
  }
28
24
  ],
29
25
  graphQL: false,
30
26
  slug: 'payload-migrations'
31
27
  };
32
28
 
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kYXRhYmFzZS9taWdyYXRpb25zL21pZ3JhdGlvbnNDb2xsZWN0aW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ29sbGVjdGlvbkNvbmZpZyB9IGZyb20gJy4uLy4uL2NvbGxlY3Rpb25zL2NvbmZpZy90eXBlcydcblxuZXhwb3J0IGNvbnN0IG1pZ3JhdGlvbnNDb2xsZWN0aW9uOiBDb2xsZWN0aW9uQ29uZmlnID0ge1xuICBhZG1pbjoge1xuICAgIGhpZGRlbjogdHJ1ZSxcbiAgfSxcbiAgZmllbGRzOiBbXG4gICAge1xuICAgICAgbmFtZTogJ25hbWUnLFxuICAgICAgdHlwZTogJ3RleHQnLFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ2JhdGNoJyxcbiAgICAgIHR5cGU6ICdudW1iZXInLFxuICAgICAgLy8gTk9URTogVGhpcyB2YWx1ZSBpcyAtMSBpZiBpdCBpcyBhIFwiZGV2IHB1c2hcIlxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ3NjaGVtYScsXG4gICAgICB0eXBlOiAnanNvbicsXG4gICAgfSxcbiAgICAvLyBUT0RPOiBkbyB3ZSBuZWVkIHRvIHBlcnNpc3QgdGhlIGluZGV4ZXMgc2VwYXJhdGUgZnJvbSB0aGUgc2NoZW1hP1xuICAgIC8vIHtcbiAgICAvLyAgIG5hbWU6ICdpbmRleGVzJyxcbiAgICAvLyAgIHR5cGU6ICdhcnJheScsXG4gICAgLy8gICBmaWVsZHM6IFtcbiAgICAvLyAgICAge1xuICAgIC8vICAgICAgIG5hbWU6ICdpbmRleCcsXG4gICAgLy8gICAgICAgdHlwZTogJ3RleHQnLFxuICAgIC8vICAgICB9LFxuICAgIC8vICAgICB7XG4gICAgLy8gICAgICAgbmFtZTogJ3ZhbHVlJyxcbiAgICAvLyAgICAgICB0eXBlOiAnanNvbicsXG4gICAgLy8gICAgIH0sXG4gICAgLy8gICBdLFxuICAgIC8vIH0sXG4gIF0sXG4gIGdyYXBoUUw6IGZhbHNlLFxuICBzbHVnOiAncGF5bG9hZC1taWdyYXRpb25zJyxcbn1cbiJdLCJuYW1lcyI6WyJtaWdyYXRpb25zQ29sbGVjdGlvbiIsImFkbWluIiwiaGlkZGVuIiwiZmllbGRzIiwibmFtZSIsInR5cGUiLCJncmFwaFFMIiwic2x1ZyJdLCJtYXBwaW5ncyI6Ijs7OzsrQkFFYUE7OztlQUFBQTs7O0FBQU4sTUFBTUEsdUJBQXlDO0lBQ3BEQyxPQUFPO1FBQ0xDLFFBQVE7SUFDVjtJQUNBQyxRQUFRO1FBQ047WUFDRUMsTUFBTTtZQUNOQyxNQUFNO1FBQ1I7UUFDQTtZQUNFRCxNQUFNO1lBQ05DLE1BQU07UUFFUjtRQUNBO1lBQ0VELE1BQU07WUFDTkMsTUFBTTtRQUNSO0tBZ0JEO0lBQ0RDLFNBQVM7SUFDVEMsTUFBTTtBQUNSIn0=
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kYXRhYmFzZS9taWdyYXRpb25zL21pZ3JhdGlvbnNDb2xsZWN0aW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ29sbGVjdGlvbkNvbmZpZyB9IGZyb20gJy4uLy4uL2NvbGxlY3Rpb25zL2NvbmZpZy90eXBlcydcblxuZXhwb3J0IGNvbnN0IG1pZ3JhdGlvbnNDb2xsZWN0aW9uOiBDb2xsZWN0aW9uQ29uZmlnID0ge1xuICBhZG1pbjoge1xuICAgIGhpZGRlbjogdHJ1ZSxcbiAgfSxcbiAgZmllbGRzOiBbXG4gICAge1xuICAgICAgbmFtZTogJ25hbWUnLFxuICAgICAgdHlwZTogJ3RleHQnLFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ2JhdGNoJyxcbiAgICAgIHR5cGU6ICdudW1iZXInLFxuICAgICAgLy8gTk9URTogVGhpcyB2YWx1ZSBpcyAtMSBpZiBpdCBpcyBhIFwiZGV2IHB1c2hcIlxuICAgIH0sXG4gICAgLy8gVE9ETzogZG8gd2UgbmVlZCB0byBwZXJzaXN0IHRoZSBpbmRleGVzIHNlcGFyYXRlIGZyb20gdGhlIHNjaGVtYT9cbiAgICAvLyB7XG4gICAgLy8gICBuYW1lOiAnaW5kZXhlcycsXG4gICAgLy8gICB0eXBlOiAnYXJyYXknLFxuICAgIC8vICAgZmllbGRzOiBbXG4gICAgLy8gICAgIHtcbiAgICAvLyAgICAgICBuYW1lOiAnaW5kZXgnLFxuICAgIC8vICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAvLyAgICAgfSxcbiAgICAvLyAgICAge1xuICAgIC8vICAgICAgIG5hbWU6ICd2YWx1ZScsXG4gICAgLy8gICAgICAgdHlwZTogJ2pzb24nLFxuICAgIC8vICAgICB9LFxuICAgIC8vICAgXSxcbiAgICAvLyB9LFxuICBdLFxuICBncmFwaFFMOiBmYWxzZSxcbiAgc2x1ZzogJ3BheWxvYWQtbWlncmF0aW9ucycsXG59XG4iXSwibmFtZXMiOlsibWlncmF0aW9uc0NvbGxlY3Rpb24iLCJhZG1pbiIsImhpZGRlbiIsImZpZWxkcyIsIm5hbWUiLCJ0eXBlIiwiZ3JhcGhRTCIsInNsdWciXSwibWFwcGluZ3MiOiI7Ozs7K0JBRWFBOzs7ZUFBQUE7OztBQUFOLE1BQU1BLHVCQUF5QztJQUNwREMsT0FBTztRQUNMQyxRQUFRO0lBQ1Y7SUFDQUMsUUFBUTtRQUNOO1lBQ0VDLE1BQU07WUFDTkMsTUFBTTtRQUNSO1FBQ0E7WUFDRUQsTUFBTTtZQUNOQyxNQUFNO1FBRVI7S0FnQkQ7SUFDREMsU0FBUztJQUNUQyxNQUFNO0FBQ1IifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"promise.d.ts","sourceRoot":"","sources":["../../../../src/fields/hooks/beforeChange/promise.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAC5E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAM3D,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,cAAc,CAAA;IACvB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC7B,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC5B,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACvC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IAC5C,KAAK,EAAE,KAAK,GAAG,UAAU,CAAA;IACzB,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB,kBAAkB,EAAE,CAAC,MAAM,IAAI,CAAC,EAAE,CAAA;IAClC,SAAS,EAAE,SAAS,CAAA;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,cAAc,CAAA;IACnB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACpC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACnC,qBAAqB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC/C,cAAc,EAAE,OAAO,CAAA;CACxB,CAAA;AASD,eAAO,MAAM,OAAO,yKAgBjB,IAAI,KAAG,QAAQ,IAAI,CA8TrB,CAAA"}
1
+ {"version":3,"file":"promise.d.ts","sourceRoot":"","sources":["../../../../src/fields/hooks/beforeChange/promise.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAC5E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAM3D,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,cAAc,CAAA;IACvB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC7B,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC5B,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACvC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IAC5C,KAAK,EAAE,KAAK,GAAG,UAAU,CAAA;IACzB,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB,kBAAkB,EAAE,CAAC,MAAM,IAAI,CAAC,EAAE,CAAA;IAClC,SAAS,EAAE,SAAS,CAAA;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,cAAc,CAAA;IACnB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACpC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACnC,qBAAqB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC/C,cAAc,EAAE,OAAO,CAAA;CACxB,CAAA;AASD,eAAO,MAAM,OAAO,yKAgBjB,IAAI,KAAG,QAAQ,IAAI,CAyTrB,CAAA"}
@@ -54,15 +54,8 @@ const promise = async ({ id, context, data, doc, docWithLocales, errors, field,
54
54
  }
55
55
  // Validate
56
56
  if (!skipValidationFromHere && field.validate) {
57
- let valueToValidate = siblingData[field.name];
57
+ const valueToValidate = siblingData[field.name];
58
58
  let jsonError;
59
- if ([
60
- 'array',
61
- 'blocks'
62
- ].includes(field.type)) {
63
- const rows = siblingData[field.name];
64
- valueToValidate = Array.isArray(rows) ? rows.length : 0;
65
- }
66
59
  if (field.type === 'json' && typeof siblingData[field.name] === 'string') {
67
60
  try {
68
61
  JSON.parse(siblingData[field.name]);
@@ -304,4 +297,4 @@ const promise = async ({ id, context, data, doc, docWithLocales, errors, field,
304
297
  }
305
298
  };
306
299
 
307
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9maWVsZHMvaG9va3MvYmVmb3JlQ2hhbmdlL3Byb21pc2UudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcGFyYW0tcmVhc3NpZ24gKi9cbmltcG9ydCBtZXJnZSBmcm9tICdkZWVwbWVyZ2UnXG5cbmltcG9ydCB0eXBlIHsgUGF5bG9hZFJlcXVlc3QsIFJlcXVlc3RDb250ZXh0IH0gZnJvbSAnLi4vLi4vLi4vZXhwcmVzcy90eXBlcydcbmltcG9ydCB0eXBlIHsgT3BlcmF0aW9uIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMnXG5pbXBvcnQgdHlwZSB7IEZpZWxkLCBUYWJBc0ZpZWxkIH0gZnJvbSAnLi4vLi4vY29uZmlnL3R5cGVzJ1xuXG5pbXBvcnQgeyBmaWVsZEFmZmVjdHNEYXRhLCB0YWJIYXNOYW1lIH0gZnJvbSAnLi4vLi4vY29uZmlnL3R5cGVzJ1xuaW1wb3J0IHsgZ2V0RXhpc3RpbmdSb3dEb2MgfSBmcm9tICcuL2dldEV4aXN0aW5nUm93RG9jJ1xuaW1wb3J0IHsgdHJhdmVyc2VGaWVsZHMgfSBmcm9tICcuL3RyYXZlcnNlRmllbGRzJ1xuXG50eXBlIEFyZ3MgPSB7XG4gIGNvbnRleHQ6IFJlcXVlc3RDb250ZXh0XG4gIGRhdGE6IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gIGRvYzogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgZG9jV2l0aExvY2FsZXM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gIGVycm9yczogeyBmaWVsZDogc3RyaW5nOyBtZXNzYWdlOiBzdHJpbmcgfVtdXG4gIGZpZWxkOiBGaWVsZCB8IFRhYkFzRmllbGRcbiAgaWQ/OiBudW1iZXIgfCBzdHJpbmdcbiAgbWVyZ2VMb2NhbGVBY3Rpb25zOiAoKCkgPT4gdm9pZClbXVxuICBvcGVyYXRpb246IE9wZXJhdGlvblxuICBwYXRoOiBzdHJpbmdcbiAgcmVxOiBQYXlsb2FkUmVxdWVzdFxuICBzaWJsaW5nRGF0YTogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgc2libGluZ0RvYzogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgc2libGluZ0RvY1dpdGhMb2NhbGVzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgc2tpcFZhbGlkYXRpb246IGJvb2xlYW5cbn1cblxuLy8gVGhpcyBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3IgdGhlIGZvbGxvd2luZyBhY3Rpb25zLCBpbiBvcmRlcjpcbi8vIC0gUnVuIGNvbmRpdGlvblxuLy8gLSBFeGVjdXRlIGZpZWxkIGhvb2tzXG4vLyAtIFZhbGlkYXRlIGRhdGFcbi8vIC0gVHJhbnNmb3JtIGRhdGEgZm9yIHN0b3JhZ2Vcbi8vIC0gVW5mbGF0dGVuIGxvY2FsZXNcblxuZXhwb3J0IGNvbnN0IHByb21pc2UgPSBhc3luYyAoe1xuICBpZCxcbiAgY29udGV4dCxcbiAgZGF0YSxcbiAgZG9jLFxuICBkb2NXaXRoTG9jYWxlcyxcbiAgZXJyb3JzLFxuICBmaWVsZCxcbiAgbWVyZ2VMb2NhbGVBY3Rpb25zLFxuICBvcGVyYXRpb24sXG4gIHBhdGgsXG4gIHJlcSxcbiAgc2libGluZ0RhdGEsXG4gIHNpYmxpbmdEb2MsXG4gIHNpYmxpbmdEb2NXaXRoTG9jYWxlcyxcbiAgc2tpcFZhbGlkYXRpb24sXG59OiBBcmdzKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gIGNvbnN0IHBhc3Nlc0NvbmRpdGlvbiA9IGZpZWxkLmFkbWluPy5jb25kaXRpb25cbiAgICA/IGZpZWxkLmFkbWluLmNvbmRpdGlvbihkYXRhLCBzaWJsaW5nRGF0YSwgeyB1c2VyOiByZXEudXNlciB9KVxuICAgIDogdHJ1ZVxuICBsZXQgc2tpcFZhbGlkYXRpb25Gcm9tSGVyZSA9IHNraXBWYWxpZGF0aW9uIHx8ICFwYXNzZXNDb25kaXRpb25cblxuICBjb25zdCBkZWZhdWx0TG9jYWxlID0gcmVxLnBheWxvYWQuY29uZmlnPy5sb2NhbGl6YXRpb25cbiAgICA/IHJlcS5wYXlsb2FkLmNvbmZpZy5sb2NhbGl6YXRpb24/LmRlZmF1bHRMb2NhbGVcbiAgICA6ICdlbidcbiAgY29uc3Qgb3BlcmF0aW9uTG9jYWxlID0gcmVxLmxvY2FsZSB8fCBkZWZhdWx0TG9jYWxlXG5cbiAgaWYgKGZpZWxkQWZmZWN0c0RhdGEoZmllbGQpKSB7XG4gICAgLy8gc2tpcCB2YWxpZGF0aW9uIGlmIHRoZSBmaWVsZCBpcyBsb2NhbGl6ZWQgYW5kIHRoZSBpbmNvbWluZyBkYXRhIGlzIG51bGxcbiAgICBpZiAoZmllbGQubG9jYWxpemVkICYmIG9wZXJhdGlvbkxvY2FsZSAhPT0gZGVmYXVsdExvY2FsZSkge1xuICAgICAgaWYgKFsnYXJyYXknLCAnYmxvY2tzJ10uaW5jbHVkZXMoZmllbGQudHlwZSkgJiYgc2libGluZ0RhdGFbZmllbGQubmFtZV0gPT09IG51bGwpIHtcbiAgICAgICAgc2tpcFZhbGlkYXRpb25Gcm9tSGVyZSA9IHRydWVcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBFeGVjdXRlIGhvb2tzXG4gICAgaWYgKGZpZWxkLmhvb2tzPy5iZWZvcmVDaGFuZ2UpIHtcbiAgICAgIGF3YWl0IGZpZWxkLmhvb2tzLmJlZm9yZUNoYW5nZS5yZWR1Y2UoYXN5bmMgKHByaW9ySG9vaywgY3VycmVudEhvb2spID0+IHtcbiAgICAgICAgYXdhaXQgcHJpb3JIb29rXG5cbiAgICAgICAgY29uc3QgaG9va2VkVmFsdWUgPSBhd2FpdCBjdXJyZW50SG9vayh7XG4gICAgICAgICAgY29udGV4dCxcbiAgICAgICAgICBkYXRhLFxuICAgICAgICAgIG9wZXJhdGlvbixcbiAgICAgICAgICBvcmlnaW5hbERvYzogZG9jLFxuICAgICAgICAgIHJlcSxcbiAgICAgICAgICBzaWJsaW5nRGF0YSxcbiAgICAgICAgICB2YWx1ZTogc2libGluZ0RhdGFbZmllbGQubmFtZV0sXG4gICAgICAgIH0pXG5cbiAgICAgICAgaWYgKGhvb2tlZFZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9IGhvb2tlZFZhbHVlXG4gICAgICAgIH1cbiAgICAgIH0sIFByb21pc2UucmVzb2x2ZSgpKVxuICAgIH1cblxuICAgIC8vIFZhbGlkYXRlXG4gICAgaWYgKCFza2lwVmFsaWRhdGlvbkZyb21IZXJlICYmIGZpZWxkLnZhbGlkYXRlKSB7XG4gICAgICBsZXQgdmFsdWVUb1ZhbGlkYXRlID0gc2libGluZ0RhdGFbZmllbGQubmFtZV1cbiAgICAgIGxldCBqc29uRXJyb3JcblxuICAgICAgaWYgKFsnYXJyYXknLCAnYmxvY2tzJ10uaW5jbHVkZXMoZmllbGQudHlwZSkpIHtcbiAgICAgICAgY29uc3Qgcm93cyA9IHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdXG4gICAgICAgIHZhbHVlVG9WYWxpZGF0ZSA9IEFycmF5LmlzQXJyYXkocm93cykgPyByb3dzLmxlbmd0aCA6IDBcbiAgICAgIH1cblxuICAgICAgaWYgKGZpZWxkLnR5cGUgPT09ICdqc29uJyAmJiB0eXBlb2Ygc2libGluZ0RhdGFbZmllbGQubmFtZV0gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgSlNPTi5wYXJzZShzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSBhcyBzdHJpbmcpXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBqc29uRXJyb3IgPSBlXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc3QgdmFsaWRhdGlvblJlc3VsdCA9IGF3YWl0IGZpZWxkLnZhbGlkYXRlKHZhbHVlVG9WYWxpZGF0ZSwge1xuICAgICAgICAuLi5maWVsZCxcbiAgICAgICAgaWQsXG4gICAgICAgIGRhdGE6IG1lcmdlKGRvYywgZGF0YSwgeyBhcnJheU1lcmdlOiAoXywgc291cmNlKSA9PiBzb3VyY2UgfSksXG4gICAgICAgIGpzb25FcnJvcixcbiAgICAgICAgb3BlcmF0aW9uLFxuICAgICAgICBwYXlsb2FkOiByZXEucGF5bG9hZCxcbiAgICAgICAgc2libGluZ0RhdGE6IG1lcmdlKHNpYmxpbmdEb2MsIHNpYmxpbmdEYXRhLCB7IGFycmF5TWVyZ2U6IChfLCBzb3VyY2UpID0+IHNvdXJjZSB9KSxcbiAgICAgICAgdDogcmVxLnQsXG4gICAgICAgIHVzZXI6IHJlcS51c2VyLFxuICAgICAgfSlcblxuICAgICAgaWYgKHR5cGVvZiB2YWxpZGF0aW9uUmVzdWx0ID09PSAnc3RyaW5nJykge1xuICAgICAgICBlcnJvcnMucHVzaCh7XG4gICAgICAgICAgZmllbGQ6IGAke3BhdGh9JHtmaWVsZC5uYW1lfWAsXG4gICAgICAgICAgbWVzc2FnZTogdmFsaWRhdGlvblJlc3VsdCxcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBQdXNoIG1lcmdlIGxvY2FsZSBhY3Rpb24gaWYgYXBwbGljYWJsZVxuICAgIGlmIChmaWVsZC5sb2NhbGl6ZWQpIHtcbiAgICAgIG1lcmdlTG9jYWxlQWN0aW9ucy5wdXNoKCgpID0+IHtcbiAgICAgICAgaWYgKHJlcS5wYXlsb2FkLmNvbmZpZy5sb2NhbGl6YXRpb24pIHtcbiAgICAgICAgICBjb25zdCB7IGxvY2FsaXphdGlvbiB9ID0gcmVxLnBheWxvYWQuY29uZmlnXG4gICAgICAgICAgY29uc3QgbG9jYWxlRGF0YSA9IGxvY2FsaXphdGlvbi5sb2NhbGVDb2Rlcy5yZWR1Y2UoKGxvY2FsaXplZFZhbHVlcywgbG9jYWxlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmaWVsZFZhbHVlID1cbiAgICAgICAgICAgICAgbG9jYWxlID09PSByZXEubG9jYWxlXG4gICAgICAgICAgICAgICAgPyBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXVxuICAgICAgICAgICAgICAgIDogc2libGluZ0RvY1dpdGhMb2NhbGVzPy5bZmllbGQubmFtZV0/Lltsb2NhbGVdXG5cbiAgICAgICAgICAgIC8vIHVwZGF0ZSBsb2NhbGUgdmFsdWUgaWYgaXQncyBub3QgdW5kZWZpbmVkXG4gICAgICAgICAgICBpZiAodHlwZW9mIGZpZWxkVmFsdWUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgLi4ubG9jYWxpemVkVmFsdWVzLFxuICAgICAgICAgICAgICAgIFtsb2NhbGVdOiBmaWVsZFZhbHVlLFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBsb2NhbGl6ZWRWYWx1ZXNcbiAgICAgICAgICB9LCB7fSlcblxuICAgICAgICAgIC8vIElmIHRoZXJlIGFyZSBsb2NhbGVzIHdpdGggZGF0YSwgc2V0IHRoZSBkYXRhXG4gICAgICAgICAgaWYgKE9iamVjdC5rZXlzKGxvY2FsZURhdGEpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdID0gbG9jYWxlRGF0YVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICBzd2l0Y2ggKGZpZWxkLnR5cGUpIHtcbiAgICBjYXNlICdwb2ludCc6IHtcbiAgICAgIC8vIFRyYW5zZm9ybSBwb2ludCBkYXRhIGZvciBzdG9yYWdlXG4gICAgICBpZiAoXG4gICAgICAgIEFycmF5LmlzQXJyYXkoc2libGluZ0RhdGFbZmllbGQubmFtZV0pICYmXG4gICAgICAgIHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdWzBdICE9PSBudWxsICYmXG4gICAgICAgIHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdWzFdICE9PSBudWxsXG4gICAgICApIHtcbiAgICAgICAgc2libGluZ0RhdGFbZmllbGQubmFtZV0gPSB7XG4gICAgICAgICAgY29vcmRpbmF0ZXM6IFtcbiAgICAgICAgICAgIHBhcnNlRmxvYXQoc2libGluZ0RhdGFbZmllbGQubmFtZV1bMF0pLFxuICAgICAgICAgICAgcGFyc2VGbG9hdChzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXVsxXSksXG4gICAgICAgICAgXSxcbiAgICAgICAgICB0eXBlOiAnUG9pbnQnLFxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgY2FzZSAnZ3JvdXAnOiB7XG4gICAgICBpZiAodHlwZW9mIHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdICE9PSAnb2JqZWN0Jykgc2libGluZ0RhdGFbZmllbGQubmFtZV0gPSB7fVxuICAgICAgaWYgKHR5cGVvZiBzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdICE9PSAnb2JqZWN0Jykgc2libGluZ0RvY1tmaWVsZC5uYW1lXSA9IHt9XG4gICAgICBpZiAodHlwZW9mIHNpYmxpbmdEb2NXaXRoTG9jYWxlc1tmaWVsZC5uYW1lXSAhPT0gJ29iamVjdCcpXG4gICAgICAgIHNpYmxpbmdEb2NXaXRoTG9jYWxlc1tmaWVsZC5uYW1lXSA9IHt9XG5cbiAgICAgIGF3YWl0IHRyYXZlcnNlRmllbGRzKHtcbiAgICAgICAgaWQsXG4gICAgICAgIGNvbnRleHQsXG4gICAgICAgIGRhdGEsXG4gICAgICAgIGRvYyxcbiAgICAgICAgZG9jV2l0aExvY2FsZXMsXG4gICAgICAgIGVycm9ycyxcbiAgICAgICAgZmllbGRzOiBmaWVsZC5maWVsZHMsXG4gICAgICAgIG1lcmdlTG9jYWxlQWN0aW9ucyxcbiAgICAgICAgb3BlcmF0aW9uLFxuICAgICAgICBwYXRoOiBgJHtwYXRofSR7ZmllbGQubmFtZX0uYCxcbiAgICAgICAgcmVxLFxuICAgICAgICBzaWJsaW5nRGF0YTogc2libGluZ0RhdGFbZmllbGQubmFtZV0gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICAgICAgIHNpYmxpbmdEb2M6IHNpYmxpbmdEb2NbZmllbGQubmFtZV0gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICAgICAgIHNpYmxpbmdEb2NXaXRoTG9jYWxlczogc2libGluZ0RvY1dpdGhMb2NhbGVzW2ZpZWxkLm5hbWVdIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgICAgICBza2lwVmFsaWRhdGlvbjogc2tpcFZhbGlkYXRpb25Gcm9tSGVyZSxcbiAgICAgIH0pXG5cbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgY2FzZSAnYXJyYXknOiB7XG4gICAgICBjb25zdCByb3dzID0gc2libGluZ0RhdGFbZmllbGQubmFtZV1cblxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkocm93cykpIHtcbiAgICAgICAgY29uc3QgcHJvbWlzZXMgPSBbXVxuICAgICAgICByb3dzLmZvckVhY2goKHJvdywgaSkgPT4ge1xuICAgICAgICAgIHByb21pc2VzLnB1c2goXG4gICAgICAgICAgICB0cmF2ZXJzZUZpZWxkcyh7XG4gICAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgICBjb250ZXh0LFxuICAgICAgICAgICAgICBkYXRhLFxuICAgICAgICAgICAgICBkb2MsXG4gICAgICAgICAgICAgIGRvY1dpdGhMb2NhbGVzLFxuICAgICAgICAgICAgICBlcnJvcnMsXG4gICAgICAgICAgICAgIGZpZWxkczogZmllbGQuZmllbGRzLFxuICAgICAgICAgICAgICBtZXJnZUxvY2FsZUFjdGlvbnMsXG4gICAgICAgICAgICAgIG9wZXJhdGlvbixcbiAgICAgICAgICAgICAgcGF0aDogYCR7cGF0aH0ke2ZpZWxkLm5hbWV9LiR7aX0uYCxcbiAgICAgICAgICAgICAgcmVxLFxuICAgICAgICAgICAgICBzaWJsaW5nRGF0YTogcm93LFxuICAgICAgICAgICAgICBzaWJsaW5nRG9jOiBnZXRFeGlzdGluZ1Jvd0RvYyhyb3csIHNpYmxpbmdEb2NbZmllbGQubmFtZV0pLFxuICAgICAgICAgICAgICBzaWJsaW5nRG9jV2l0aExvY2FsZXM6IGdldEV4aXN0aW5nUm93RG9jKHJvdywgc2libGluZ0RvY1dpdGhMb2NhbGVzW2ZpZWxkLm5hbWVdKSxcbiAgICAgICAgICAgICAgc2tpcFZhbGlkYXRpb246IHNraXBWYWxpZGF0aW9uRnJvbUhlcmUsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICApXG4gICAgICAgIH0pXG5cbiAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpXG4gICAgICB9XG5cbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgY2FzZSAnYmxvY2tzJzoge1xuICAgICAgY29uc3Qgcm93cyA9IHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdXG5cbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHJvd3MpKSB7XG4gICAgICAgIGNvbnN0IHByb21pc2VzID0gW11cbiAgICAgICAgcm93cy5mb3JFYWNoKChyb3csIGkpID0+IHtcbiAgICAgICAgICBjb25zdCByb3dTaWJsaW5nRG9jID0gZ2V0RXhpc3RpbmdSb3dEb2Mocm93LCBzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdKVxuICAgICAgICAgIGNvbnN0IHJvd1NpYmxpbmdEb2NXaXRoTG9jYWxlcyA9IGdldEV4aXN0aW5nUm93RG9jKHJvdywgc2libGluZ0RvY1dpdGhMb2NhbGVzW2ZpZWxkLm5hbWVdKVxuXG4gICAgICAgICAgY29uc3QgYmxvY2tUeXBlVG9NYXRjaCA9IHJvdy5ibG9ja1R5cGUgfHwgcm93U2libGluZ0RvYy5ibG9ja1R5cGVcbiAgICAgICAgICBjb25zdCBibG9jayA9IGZpZWxkLmJsb2Nrcy5maW5kKChibG9ja1R5cGUpID0+IGJsb2NrVHlwZS5zbHVnID09PSBibG9ja1R5cGVUb01hdGNoKVxuXG4gICAgICAgICAgaWYgKGJsb2NrKSB7XG4gICAgICAgICAgICBwcm9taXNlcy5wdXNoKFxuICAgICAgICAgICAgICB0cmF2ZXJzZUZpZWxkcyh7XG4gICAgICAgICAgICAgICAgaWQsXG4gICAgICAgICAgICAgICAgY29udGV4dCxcbiAgICAgICAgICAgICAgICBkYXRhLFxuICAgICAgICAgICAgICAgIGRvYyxcbiAgICAgICAgICAgICAgICBkb2NXaXRoTG9jYWxlcyxcbiAgICAgICAgICAgICAgICBlcnJvcnMsXG4gICAgICAgICAgICAgICAgZmllbGRzOiBibG9jay5maWVsZHMsXG4gICAgICAgICAgICAgICAgbWVyZ2VMb2NhbGVBY3Rpb25zLFxuICAgICAgICAgICAgICAgIG9wZXJhdGlvbixcbiAgICAgICAgICAgICAgICBwYXRoOiBgJHtwYXRofSR7ZmllbGQubmFtZX0uJHtpfS5gLFxuICAgICAgICAgICAgICAgIHJlcSxcbiAgICAgICAgICAgICAgICBzaWJsaW5nRGF0YTogcm93LFxuICAgICAgICAgICAgICAgIHNpYmxpbmdEb2M6IHJvd1NpYmxpbmdEb2MsXG4gICAgICAgICAgICAgICAgc2libGluZ0RvY1dpdGhMb2NhbGVzOiByb3dTaWJsaW5nRG9jV2l0aExvY2FsZXMsXG4gICAgICAgICAgICAgICAgc2tpcFZhbGlkYXRpb246IHNraXBWYWxpZGF0aW9uRnJvbUhlcmUsXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgKVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcblxuICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcylcbiAgICAgIH1cblxuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBjYXNlICdyb3cnOlxuICAgIGNhc2UgJ2NvbGxhcHNpYmxlJzoge1xuICAgICAgYXdhaXQgdHJhdmVyc2VGaWVsZHMoe1xuICAgICAgICBpZCxcbiAgICAgICAgY29udGV4dCxcbiAgICAgICAgZGF0YSxcbiAgICAgICAgZG9jLFxuICAgICAgICBkb2NXaXRoTG9jYWxlcyxcbiAgICAgICAgZXJyb3JzLFxuICAgICAgICBmaWVsZHM6IGZpZWxkLmZpZWxkcyxcbiAgICAgICAgbWVyZ2VMb2NhbGVBY3Rpb25zLFxuICAgICAgICBvcGVyYXRpb24sXG4gICAgICAgIHBhdGgsXG4gICAgICAgIHJlcSxcbiAgICAgICAgc2libGluZ0RhdGEsXG4gICAgICAgIHNpYmxpbmdEb2MsXG4gICAgICAgIHNpYmxpbmdEb2NXaXRoTG9jYWxlcyxcbiAgICAgICAgc2tpcFZhbGlkYXRpb246IHNraXBWYWxpZGF0aW9uRnJvbUhlcmUsXG4gICAgICB9KVxuXG4gICAgICBicmVha1xuICAgIH1cblxuICAgIGNhc2UgJ3RhYic6IHtcbiAgICAgIGxldCB0YWJQYXRoID0gcGF0aFxuICAgICAgbGV0IHRhYlNpYmxpbmdEYXRhID0gc2libGluZ0RhdGFcbiAgICAgIGxldCB0YWJTaWJsaW5nRG9jID0gc2libGluZ0RvY1xuICAgICAgbGV0IHRhYlNpYmxpbmdEb2NXaXRoTG9jYWxlcyA9IHNpYmxpbmdEb2NXaXRoTG9jYWxlc1xuXG4gICAgICBpZiAodGFiSGFzTmFtZShmaWVsZCkpIHtcbiAgICAgICAgdGFiUGF0aCA9IGAke3BhdGh9JHtmaWVsZC5uYW1lfS5gXG4gICAgICAgIGlmICh0eXBlb2Ygc2libGluZ0RhdGFbZmllbGQubmFtZV0gIT09ICdvYmplY3QnKSBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9IHt9XG4gICAgICAgIGlmICh0eXBlb2Ygc2libGluZ0RvY1tmaWVsZC5uYW1lXSAhPT0gJ29iamVjdCcpIHNpYmxpbmdEb2NbZmllbGQubmFtZV0gPSB7fVxuICAgICAgICBpZiAodHlwZW9mIHNpYmxpbmdEb2NXaXRoTG9jYWxlc1tmaWVsZC5uYW1lXSAhPT0gJ29iamVjdCcpXG4gICAgICAgICAgc2libGluZ0RvY1dpdGhMb2NhbGVzW2ZpZWxkLm5hbWVdID0ge31cblxuICAgICAgICB0YWJTaWJsaW5nRGF0YSA9IHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICAgICAgIHRhYlNpYmxpbmdEb2MgPSBzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICAgICAgIHRhYlNpYmxpbmdEb2NXaXRoTG9jYWxlcyA9IHNpYmxpbmdEb2NXaXRoTG9jYWxlc1tmaWVsZC5uYW1lXSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICAgICAgfVxuXG4gICAgICBhd2FpdCB0cmF2ZXJzZUZpZWxkcyh7XG4gICAgICAgIGlkLFxuICAgICAgICBjb250ZXh0LFxuICAgICAgICBkYXRhLFxuICAgICAgICBkb2MsXG4gICAgICAgIGRvY1dpdGhMb2NhbGVzLFxuICAgICAgICBlcnJvcnMsXG4gICAgICAgIGZpZWxkczogZmllbGQuZmllbGRzLFxuICAgICAgICBtZXJnZUxvY2FsZUFjdGlvbnMsXG4gICAgICAgIG9wZXJhdGlvbixcbiAgICAgICAgcGF0aDogdGFiUGF0aCxcbiAgICAgICAgcmVxLFxuICAgICAgICBzaWJsaW5nRGF0YTogdGFiU2libGluZ0RhdGEsXG4gICAgICAgIHNpYmxpbmdEb2M6IHRhYlNpYmxpbmdEb2MsXG4gICAgICAgIHNpYmxpbmdEb2NXaXRoTG9jYWxlczogdGFiU2libGluZ0RvY1dpdGhMb2NhbGVzLFxuICAgICAgICBza2lwVmFsaWRhdGlvbjogc2tpcFZhbGlkYXRpb25Gcm9tSGVyZSxcbiAgICAgIH0pXG5cbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgY2FzZSAndGFicyc6IHtcbiAgICAgIGF3YWl0IHRyYXZlcnNlRmllbGRzKHtcbiAgICAgICAgaWQsXG4gICAgICAgIGNvbnRleHQsXG4gICAgICAgIGRhdGEsXG4gICAgICAgIGRvYyxcbiAgICAgICAgZG9jV2l0aExvY2FsZXMsXG4gICAgICAgIGVycm9ycyxcbiAgICAgICAgZmllbGRzOiBmaWVsZC50YWJzLm1hcCgodGFiKSA9PiAoeyAuLi50YWIsIHR5cGU6ICd0YWInIH0pKSxcbiAgICAgICAgbWVyZ2VMb2NhbGVBY3Rpb25zLFxuICAgICAgICBvcGVyYXRpb24sXG4gICAgICAgIHBhdGgsXG4gICAgICAgIHJlcSxcbiAgICAgICAgc2libGluZ0RhdGEsXG4gICAgICAgIHNpYmxpbmdEb2MsXG4gICAgICAgIHNpYmxpbmdEb2NXaXRoTG9jYWxlcyxcbiAgICAgICAgc2tpcFZhbGlkYXRpb246IHNraXBWYWxpZGF0aW9uRnJvbUhlcmUsXG4gICAgICB9KVxuXG4gICAgICBicmVha1xuICAgIH1cblxuICAgIGRlZmF1bHQ6IHtcbiAgICAgIGJyZWFrXG4gICAgfVxuICB9XG59XG4iXSwibmFtZXMiOlsicHJvbWlzZSIsImlkIiwiY29udGV4dCIsImRhdGEiLCJkb2MiLCJkb2NXaXRoTG9jYWxlcyIsImVycm9ycyIsImZpZWxkIiwibWVyZ2VMb2NhbGVBY3Rpb25zIiwib3BlcmF0aW9uIiwicGF0aCIsInJlcSIsInNpYmxpbmdEYXRhIiwic2libGluZ0RvYyIsInNpYmxpbmdEb2NXaXRoTG9jYWxlcyIsInNraXBWYWxpZGF0aW9uIiwicGFzc2VzQ29uZGl0aW9uIiwiYWRtaW4iLCJjb25kaXRpb24iLCJ1c2VyIiwic2tpcFZhbGlkYXRpb25Gcm9tSGVyZSIsImRlZmF1bHRMb2NhbGUiLCJwYXlsb2FkIiwiY29uZmlnIiwibG9jYWxpemF0aW9uIiwib3BlcmF0aW9uTG9jYWxlIiwibG9jYWxlIiwiZmllbGRBZmZlY3RzRGF0YSIsImxvY2FsaXplZCIsImluY2x1ZGVzIiwidHlwZSIsIm5hbWUiLCJob29rcyIsImJlZm9yZUNoYW5nZSIsInJlZHVjZSIsInByaW9ySG9vayIsImN1cnJlbnRIb29rIiwiaG9va2VkVmFsdWUiLCJvcmlnaW5hbERvYyIsInZhbHVlIiwidW5kZWZpbmVkIiwiUHJvbWlzZSIsInJlc29sdmUiLCJ2YWxpZGF0ZSIsInZhbHVlVG9WYWxpZGF0ZSIsImpzb25FcnJvciIsInJvd3MiLCJBcnJheSIsImlzQXJyYXkiLCJsZW5ndGgiLCJKU09OIiwicGFyc2UiLCJlIiwidmFsaWRhdGlvblJlc3VsdCIsIm1lcmdlIiwiYXJyYXlNZXJnZSIsIl8iLCJzb3VyY2UiLCJ0IiwicHVzaCIsIm1lc3NhZ2UiLCJsb2NhbGVEYXRhIiwibG9jYWxlQ29kZXMiLCJsb2NhbGl6ZWRWYWx1ZXMiLCJmaWVsZFZhbHVlIiwiT2JqZWN0Iiwia2V5cyIsImNvb3JkaW5hdGVzIiwicGFyc2VGbG9hdCIsInRyYXZlcnNlRmllbGRzIiwiZmllbGRzIiwicHJvbWlzZXMiLCJmb3JFYWNoIiwicm93IiwiaSIsImdldEV4aXN0aW5nUm93RG9jIiwiYWxsIiwicm93U2libGluZ0RvYyIsInJvd1NpYmxpbmdEb2NXaXRoTG9jYWxlcyIsImJsb2NrVHlwZVRvTWF0Y2giLCJibG9ja1R5cGUiLCJibG9jayIsImJsb2NrcyIsImZpbmQiLCJzbHVnIiwidGFiUGF0aCIsInRhYlNpYmxpbmdEYXRhIiwidGFiU2libGluZ0RvYyIsInRhYlNpYmxpbmdEb2NXaXRoTG9jYWxlcyIsInRhYkhhc05hbWUiLCJ0YWJzIiwibWFwIiwidGFiIl0sIm1hcHBpbmdzIjoiQUFBQSxvQ0FBb0M7Ozs7K0JBb0N2QkE7OztlQUFBQTs7O2tFQW5DSzt1QkFNMkI7bUNBQ1g7Z0NBQ0g7Ozs7OztBQTJCeEIsTUFBTUEsVUFBVSxPQUFPLEVBQzVCQyxFQUFFLEVBQ0ZDLE9BQU8sRUFDUEMsSUFBSSxFQUNKQyxHQUFHLEVBQ0hDLGNBQWMsRUFDZEMsTUFBTSxFQUNOQyxLQUFLLEVBQ0xDLGtCQUFrQixFQUNsQkMsU0FBUyxFQUNUQyxJQUFJLEVBQ0pDLEdBQUcsRUFDSEMsV0FBVyxFQUNYQyxVQUFVLEVBQ1ZDLHFCQUFxQixFQUNyQkMsY0FBYyxFQUNUO0lBQ0wsTUFBTUMsa0JBQWtCVCxNQUFNVSxLQUFLLEVBQUVDLFlBQ2pDWCxNQUFNVSxLQUFLLENBQUNDLFNBQVMsQ0FBQ2YsTUFBTVMsYUFBYTtRQUFFTyxNQUFNUixJQUFJUSxJQUFJO0lBQUMsS0FDMUQ7SUFDSixJQUFJQyx5QkFBeUJMLGtCQUFrQixDQUFDQztJQUVoRCxNQUFNSyxnQkFBZ0JWLElBQUlXLE9BQU8sQ0FBQ0MsTUFBTSxFQUFFQyxlQUN0Q2IsSUFBSVcsT0FBTyxDQUFDQyxNQUFNLENBQUNDLFlBQVksRUFBRUgsZ0JBQ2pDO0lBQ0osTUFBTUksa0JBQWtCZCxJQUFJZSxNQUFNLElBQUlMO0lBRXRDLElBQUlNLElBQUFBLHVCQUFnQixFQUFDcEIsUUFBUTtRQUMzQiwwRUFBMEU7UUFDMUUsSUFBSUEsTUFBTXFCLFNBQVMsSUFBSUgsb0JBQW9CSixlQUFlO1lBQ3hELElBQUk7Z0JBQUM7Z0JBQVM7YUFBUyxDQUFDUSxRQUFRLENBQUN0QixNQUFNdUIsSUFBSSxLQUFLbEIsV0FBVyxDQUFDTCxNQUFNd0IsSUFBSSxDQUFDLEtBQUssTUFBTTtnQkFDaEZYLHlCQUF5QjtZQUMzQjtRQUNGO1FBRUEsZ0JBQWdCO1FBQ2hCLElBQUliLE1BQU15QixLQUFL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
300
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9maWVsZHMvaG9va3MvYmVmb3JlQ2hhbmdlL3Byb21pc2UudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcGFyYW0tcmVhc3NpZ24gKi9cbmltcG9ydCBtZXJnZSBmcm9tICdkZWVwbWVyZ2UnXG5cbmltcG9ydCB0eXBlIHsgUGF5bG9hZFJlcXVlc3QsIFJlcXVlc3RDb250ZXh0IH0gZnJvbSAnLi4vLi4vLi4vZXhwcmVzcy90eXBlcydcbmltcG9ydCB0eXBlIHsgT3BlcmF0aW9uIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMnXG5pbXBvcnQgdHlwZSB7IEZpZWxkLCBUYWJBc0ZpZWxkIH0gZnJvbSAnLi4vLi4vY29uZmlnL3R5cGVzJ1xuXG5pbXBvcnQgeyBmaWVsZEFmZmVjdHNEYXRhLCB0YWJIYXNOYW1lIH0gZnJvbSAnLi4vLi4vY29uZmlnL3R5cGVzJ1xuaW1wb3J0IHsgZ2V0RXhpc3RpbmdSb3dEb2MgfSBmcm9tICcuL2dldEV4aXN0aW5nUm93RG9jJ1xuaW1wb3J0IHsgdHJhdmVyc2VGaWVsZHMgfSBmcm9tICcuL3RyYXZlcnNlRmllbGRzJ1xuXG50eXBlIEFyZ3MgPSB7XG4gIGNvbnRleHQ6IFJlcXVlc3RDb250ZXh0XG4gIGRhdGE6IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gIGRvYzogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgZG9jV2l0aExvY2FsZXM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gIGVycm9yczogeyBmaWVsZDogc3RyaW5nOyBtZXNzYWdlOiBzdHJpbmcgfVtdXG4gIGZpZWxkOiBGaWVsZCB8IFRhYkFzRmllbGRcbiAgaWQ/OiBudW1iZXIgfCBzdHJpbmdcbiAgbWVyZ2VMb2NhbGVBY3Rpb25zOiAoKCkgPT4gdm9pZClbXVxuICBvcGVyYXRpb246IE9wZXJhdGlvblxuICBwYXRoOiBzdHJpbmdcbiAgcmVxOiBQYXlsb2FkUmVxdWVzdFxuICBzaWJsaW5nRGF0YTogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgc2libGluZ0RvYzogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgc2libGluZ0RvY1dpdGhMb2NhbGVzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgc2tpcFZhbGlkYXRpb246IGJvb2xlYW5cbn1cblxuLy8gVGhpcyBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3IgdGhlIGZvbGxvd2luZyBhY3Rpb25zLCBpbiBvcmRlcjpcbi8vIC0gUnVuIGNvbmRpdGlvblxuLy8gLSBFeGVjdXRlIGZpZWxkIGhvb2tzXG4vLyAtIFZhbGlkYXRlIGRhdGFcbi8vIC0gVHJhbnNmb3JtIGRhdGEgZm9yIHN0b3JhZ2Vcbi8vIC0gVW5mbGF0dGVuIGxvY2FsZXNcblxuZXhwb3J0IGNvbnN0IHByb21pc2UgPSBhc3luYyAoe1xuICBpZCxcbiAgY29udGV4dCxcbiAgZGF0YSxcbiAgZG9jLFxuICBkb2NXaXRoTG9jYWxlcyxcbiAgZXJyb3JzLFxuICBmaWVsZCxcbiAgbWVyZ2VMb2NhbGVBY3Rpb25zLFxuICBvcGVyYXRpb24sXG4gIHBhdGgsXG4gIHJlcSxcbiAgc2libGluZ0RhdGEsXG4gIHNpYmxpbmdEb2MsXG4gIHNpYmxpbmdEb2NXaXRoTG9jYWxlcyxcbiAgc2tpcFZhbGlkYXRpb24sXG59OiBBcmdzKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gIGNvbnN0IHBhc3Nlc0NvbmRpdGlvbiA9IGZpZWxkLmFkbWluPy5jb25kaXRpb25cbiAgICA/IGZpZWxkLmFkbWluLmNvbmRpdGlvbihkYXRhLCBzaWJsaW5nRGF0YSwgeyB1c2VyOiByZXEudXNlciB9KVxuICAgIDogdHJ1ZVxuICBsZXQgc2tpcFZhbGlkYXRpb25Gcm9tSGVyZSA9IHNraXBWYWxpZGF0aW9uIHx8ICFwYXNzZXNDb25kaXRpb25cblxuICBjb25zdCBkZWZhdWx0TG9jYWxlID0gcmVxLnBheWxvYWQuY29uZmlnPy5sb2NhbGl6YXRpb25cbiAgICA/IHJlcS5wYXlsb2FkLmNvbmZpZy5sb2NhbGl6YXRpb24/LmRlZmF1bHRMb2NhbGVcbiAgICA6ICdlbidcbiAgY29uc3Qgb3BlcmF0aW9uTG9jYWxlID0gcmVxLmxvY2FsZSB8fCBkZWZhdWx0TG9jYWxlXG5cbiAgaWYgKGZpZWxkQWZmZWN0c0RhdGEoZmllbGQpKSB7XG4gICAgLy8gc2tpcCB2YWxpZGF0aW9uIGlmIHRoZSBmaWVsZCBpcyBsb2NhbGl6ZWQgYW5kIHRoZSBpbmNvbWluZyBkYXRhIGlzIG51bGxcbiAgICBpZiAoZmllbGQubG9jYWxpemVkICYmIG9wZXJhdGlvbkxvY2FsZSAhPT0gZGVmYXVsdExvY2FsZSkge1xuICAgICAgaWYgKFsnYXJyYXknLCAnYmxvY2tzJ10uaW5jbHVkZXMoZmllbGQudHlwZSkgJiYgc2libGluZ0RhdGFbZmllbGQubmFtZV0gPT09IG51bGwpIHtcbiAgICAgICAgc2tpcFZhbGlkYXRpb25Gcm9tSGVyZSA9IHRydWVcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBFeGVjdXRlIGhvb2tzXG4gICAgaWYgKGZpZWxkLmhvb2tzPy5iZWZvcmVDaGFuZ2UpIHtcbiAgICAgIGF3YWl0IGZpZWxkLmhvb2tzLmJlZm9yZUNoYW5nZS5yZWR1Y2UoYXN5bmMgKHByaW9ySG9vaywgY3VycmVudEhvb2spID0+IHtcbiAgICAgICAgYXdhaXQgcHJpb3JIb29rXG5cbiAgICAgICAgY29uc3QgaG9va2VkVmFsdWUgPSBhd2FpdCBjdXJyZW50SG9vayh7XG4gICAgICAgICAgY29udGV4dCxcbiAgICAgICAgICBkYXRhLFxuICAgICAgICAgIG9wZXJhdGlvbixcbiAgICAgICAgICBvcmlnaW5hbERvYzogZG9jLFxuICAgICAgICAgIHJlcSxcbiAgICAgICAgICBzaWJsaW5nRGF0YSxcbiAgICAgICAgICB2YWx1ZTogc2libGluZ0RhdGFbZmllbGQubmFtZV0sXG4gICAgICAgIH0pXG5cbiAgICAgICAgaWYgKGhvb2tlZFZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9IGhvb2tlZFZhbHVlXG4gICAgICAgIH1cbiAgICAgIH0sIFByb21pc2UucmVzb2x2ZSgpKVxuICAgIH1cblxuICAgIC8vIFZhbGlkYXRlXG4gICAgaWYgKCFza2lwVmFsaWRhdGlvbkZyb21IZXJlICYmIGZpZWxkLnZhbGlkYXRlKSB7XG4gICAgICBjb25zdCB2YWx1ZVRvVmFsaWRhdGUgPSBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXVxuICAgICAgbGV0IGpzb25FcnJvclxuXG4gICAgICBpZiAoZmllbGQudHlwZSA9PT0gJ2pzb24nICYmIHR5cGVvZiBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBKU09OLnBhcnNlKHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdIGFzIHN0cmluZylcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGpzb25FcnJvciA9IGVcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zdCB2YWxpZGF0aW9uUmVzdWx0ID0gYXdhaXQgZmllbGQudmFsaWRhdGUodmFsdWVUb1ZhbGlkYXRlLCB7XG4gICAgICAgIC4uLmZpZWxkLFxuICAgICAgICBpZCxcbiAgICAgICAgZGF0YTogbWVyZ2UoZG9jLCBkYXRhLCB7IGFycmF5TWVyZ2U6IChfLCBzb3VyY2UpID0+IHNvdXJjZSB9KSxcbiAgICAgICAganNvbkVycm9yLFxuICAgICAgICBvcGVyYXRpb24sXG4gICAgICAgIHBheWxvYWQ6IHJlcS5wYXlsb2FkLFxuICAgICAgICBzaWJsaW5nRGF0YTogbWVyZ2Uoc2libGluZ0RvYywgc2libGluZ0RhdGEsIHsgYXJyYXlNZXJnZTogKF8sIHNvdXJjZSkgPT4gc291cmNlIH0pLFxuICAgICAgICB0OiByZXEudCxcbiAgICAgICAgdXNlcjogcmVxLnVzZXIsXG4gICAgICB9KVxuXG4gICAgICBpZiAodHlwZW9mIHZhbGlkYXRpb25SZXN1bHQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGVycm9ycy5wdXNoKHtcbiAgICAgICAgICBmaWVsZDogYCR7cGF0aH0ke2ZpZWxkLm5hbWV9YCxcbiAgICAgICAgICBtZXNzYWdlOiB2YWxpZGF0aW9uUmVzdWx0LFxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFB1c2ggbWVyZ2UgbG9jYWxlIGFjdGlvbiBpZiBhcHBsaWNhYmxlXG4gICAgaWYgKGZpZWxkLmxvY2FsaXplZCkge1xuICAgICAgbWVyZ2VMb2NhbGVBY3Rpb25zLnB1c2goKCkgPT4ge1xuICAgICAgICBpZiAocmVxLnBheWxvYWQuY29uZmlnLmxvY2FsaXphdGlvbikge1xuICAgICAgICAgIGNvbnN0IHsgbG9jYWxpemF0aW9uIH0gPSByZXEucGF5bG9hZC5jb25maWdcbiAgICAgICAgICBjb25zdCBsb2NhbGVEYXRhID0gbG9jYWxpemF0aW9uLmxvY2FsZUNvZGVzLnJlZHVjZSgobG9jYWxpemVkVmFsdWVzLCBsb2NhbGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZpZWxkVmFsdWUgPVxuICAgICAgICAgICAgICBsb2NhbGUgPT09IHJlcS5sb2NhbGVcbiAgICAgICAgICAgICAgICA/IHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdXG4gICAgICAgICAgICAgICAgOiBzaWJsaW5nRG9jV2l0aExvY2FsZXM/LltmaWVsZC5uYW1lXT8uW2xvY2FsZV1cblxuICAgICAgICAgICAgLy8gdXBkYXRlIGxvY2FsZSB2YWx1ZSBpZiBpdCdzIG5vdCB1bmRlZmluZWRcbiAgICAgICAgICAgIGlmICh0eXBlb2YgZmllbGRWYWx1ZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAuLi5sb2NhbGl6ZWRWYWx1ZXMsXG4gICAgICAgICAgICAgICAgW2xvY2FsZV06IGZpZWxkVmFsdWUsXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGxvY2FsaXplZFZhbHVlc1xuICAgICAgICAgIH0sIHt9KVxuXG4gICAgICAgICAgLy8gSWYgdGhlcmUgYXJlIGxvY2FsZXMgd2l0aCBkYXRhLCBzZXQgdGhlIGRhdGFcbiAgICAgICAgICBpZiAoT2JqZWN0LmtleXMobG9jYWxlRGF0YSkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgc2libGluZ0RhdGFbZmllbGQubmFtZV0gPSBsb2NhbGVEYXRhXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIHN3aXRjaCAoZmllbGQudHlwZSkge1xuICAgIGNhc2UgJ3BvaW50Jzoge1xuICAgICAgLy8gVHJhbnNmb3JtIHBvaW50IGRhdGEgZm9yIHN0b3JhZ2VcbiAgICAgIGlmIChcbiAgICAgICAgQXJyYXkuaXNBcnJheShzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSkgJiZcbiAgICAgICAgc2libGluZ0RhdGFbZmllbGQubmFtZV1bMF0gIT09IG51bGwgJiZcbiAgICAgICAgc2libGluZ0RhdGFbZmllbGQubmFtZV1bMV0gIT09IG51bGxcbiAgICAgICkge1xuICAgICAgICBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9IHtcbiAgICAgICAgICBjb29yZGluYXRlczogW1xuICAgICAgICAgICAgcGFyc2VGbG9hdChzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXVswXSksXG4gICAgICAgICAgICBwYXJzZUZsb2F0KHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdWzFdKSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIHR5cGU6ICdQb2ludCcsXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBjYXNlICdncm91cCc6IHtcbiAgICAgIGlmICh0eXBlb2Ygc2libGluZ0RhdGFbZmllbGQubmFtZV0gIT09ICdvYmplY3QnKSBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSA9IHt9XG4gICAgICBpZiAodHlwZW9mIHNpYmxpbmdEb2NbZmllbGQubmFtZV0gIT09ICdvYmplY3QnKSBzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdID0ge31cbiAgICAgIGlmICh0eXBlb2Ygc2libGluZ0RvY1dpdGhMb2NhbGVzW2ZpZWxkLm5hbWVdICE9PSAnb2JqZWN0JylcbiAgICAgICAgc2libGluZ0RvY1dpdGhMb2NhbGVzW2ZpZWxkLm5hbWVdID0ge31cblxuICAgICAgYXdhaXQgdHJhdmVyc2VGaWVsZHMoe1xuICAgICAgICBpZCxcbiAgICAgICAgY29udGV4dCxcbiAgICAgICAgZGF0YSxcbiAgICAgICAgZG9jLFxuICAgICAgICBkb2NXaXRoTG9jYWxlcyxcbiAgICAgICAgZXJyb3JzLFxuICAgICAgICBmaWVsZHM6IGZpZWxkLmZpZWxkcyxcbiAgICAgICAgbWVyZ2VMb2NhbGVBY3Rpb25zLFxuICAgICAgICBvcGVyYXRpb24sXG4gICAgICAgIHBhdGg6IGAke3BhdGh9JHtmaWVsZC5uYW1lfS5gLFxuICAgICAgICByZXEsXG4gICAgICAgIHNpYmxpbmdEYXRhOiBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgICAgICAgc2libGluZ0RvYzogc2libGluZ0RvY1tmaWVsZC5uYW1lXSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgICAgICAgc2libGluZ0RvY1dpdGhMb2NhbGVzOiBzaWJsaW5nRG9jV2l0aExvY2FsZXNbZmllbGQubmFtZV0gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICAgICAgIHNraXBWYWxpZGF0aW9uOiBza2lwVmFsaWRhdGlvbkZyb21IZXJlLFxuICAgICAgfSlcblxuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBjYXNlICdhcnJheSc6IHtcbiAgICAgIGNvbnN0IHJvd3MgPSBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXVxuXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShyb3dzKSkge1xuICAgICAgICBjb25zdCBwcm9taXNlcyA9IFtdXG4gICAgICAgIHJvd3MuZm9yRWFjaCgocm93LCBpKSA9PiB7XG4gICAgICAgICAgcHJvbWlzZXMucHVzaChcbiAgICAgICAgICAgIHRyYXZlcnNlRmllbGRzKHtcbiAgICAgICAgICAgICAgaWQsXG4gICAgICAgICAgICAgIGNvbnRleHQsXG4gICAgICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgICAgIGRvYyxcbiAgICAgICAgICAgICAgZG9jV2l0aExvY2FsZXMsXG4gICAgICAgICAgICAgIGVycm9ycyxcbiAgICAgICAgICAgICAgZmllbGRzOiBmaWVsZC5maWVsZHMsXG4gICAgICAgICAgICAgIG1lcmdlTG9jYWxlQWN0aW9ucyxcbiAgICAgICAgICAgICAgb3BlcmF0aW9uLFxuICAgICAgICAgICAgICBwYXRoOiBgJHtwYXRofSR7ZmllbGQubmFtZX0uJHtpfS5gLFxuICAgICAgICAgICAgICByZXEsXG4gICAgICAgICAgICAgIHNpYmxpbmdEYXRhOiByb3csXG4gICAgICAgICAgICAgIHNpYmxpbmdEb2M6IGdldEV4aXN0aW5nUm93RG9jKHJvdywgc2libGluZ0RvY1tmaWVsZC5uYW1lXSksXG4gICAgICAgICAgICAgIHNpYmxpbmdEb2NXaXRoTG9jYWxlczogZ2V0RXhpc3RpbmdSb3dEb2Mocm93LCBzaWJsaW5nRG9jV2l0aExvY2FsZXNbZmllbGQubmFtZV0pLFxuICAgICAgICAgICAgICBza2lwVmFsaWRhdGlvbjogc2tpcFZhbGlkYXRpb25Gcm9tSGVyZSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIClcbiAgICAgICAgfSlcblxuICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcylcbiAgICAgIH1cblxuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBjYXNlICdibG9ja3MnOiB7XG4gICAgICBjb25zdCByb3dzID0gc2libGluZ0RhdGFbZmllbGQubmFtZV1cblxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkocm93cykpIHtcbiAgICAgICAgY29uc3QgcHJvbWlzZXMgPSBbXVxuICAgICAgICByb3dzLmZvckVhY2goKHJvdywgaSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHJvd1NpYmxpbmdEb2MgPSBnZXRFeGlzdGluZ1Jvd0RvYyhyb3csIHNpYmxpbmdEb2NbZmllbGQubmFtZV0pXG4gICAgICAgICAgY29uc3Qgcm93U2libGluZ0RvY1dpdGhMb2NhbGVzID0gZ2V0RXhpc3RpbmdSb3dEb2Mocm93LCBzaWJsaW5nRG9jV2l0aExvY2FsZXNbZmllbGQubmFtZV0pXG5cbiAgICAgICAgICBjb25zdCBibG9ja1R5cGVUb01hdGNoID0gcm93LmJsb2NrVHlwZSB8fCByb3dTaWJsaW5nRG9jLmJsb2NrVHlwZVxuICAgICAgICAgIGNvbnN0IGJsb2NrID0gZmllbGQuYmxvY2tzLmZpbmQoKGJsb2NrVHlwZSkgPT4gYmxvY2tUeXBlLnNsdWcgPT09IGJsb2NrVHlwZVRvTWF0Y2gpXG5cbiAgICAgICAgICBpZiAoYmxvY2spIHtcbiAgICAgICAgICAgIHByb21pc2VzLnB1c2goXG4gICAgICAgICAgICAgIHRyYXZlcnNlRmllbGRzKHtcbiAgICAgICAgICAgICAgICBpZCxcbiAgICAgICAgICAgICAgICBjb250ZXh0LFxuICAgICAgICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgICAgICAgZG9jLFxuICAgICAgICAgICAgICAgIGRvY1dpdGhMb2NhbGVzLFxuICAgICAgICAgICAgICAgIGVycm9ycyxcbiAgICAgICAgICAgICAgICBmaWVsZHM6IGJsb2NrLmZpZWxkcyxcbiAgICAgICAgICAgICAgICBtZXJnZUxvY2FsZUFjdGlvbnMsXG4gICAgICAgICAgICAgICAgb3BlcmF0aW9uLFxuICAgICAgICAgICAgICAgIHBhdGg6IGAke3BhdGh9JHtmaWVsZC5uYW1lfS4ke2l9LmAsXG4gICAgICAgICAgICAgICAgcmVxLFxuICAgICAgICAgICAgICAgIHNpYmxpbmdEYXRhOiByb3csXG4gICAgICAgICAgICAgICAgc2libGluZ0RvYzogcm93U2libGluZ0RvYyxcbiAgICAgICAgICAgICAgICBzaWJsaW5nRG9jV2l0aExvY2FsZXM6IHJvd1NpYmxpbmdEb2NXaXRoTG9jYWxlcyxcbiAgICAgICAgICAgICAgICBza2lwVmFsaWRhdGlvbjogc2tpcFZhbGlkYXRpb25Gcm9tSGVyZSxcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICApXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuXG4gICAgICAgIGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKVxuICAgICAgfVxuXG4gICAgICBicmVha1xuICAgIH1cblxuICAgIGNhc2UgJ3Jvdyc6XG4gICAgY2FzZSAnY29sbGFwc2libGUnOiB7XG4gICAgICBhd2FpdCB0cmF2ZXJzZUZpZWxkcyh7XG4gICAgICAgIGlkLFxuICAgICAgICBjb250ZXh0LFxuICAgICAgICBkYXRhLFxuICAgICAgICBkb2MsXG4gICAgICAgIGRvY1dpdGhMb2NhbGVzLFxuICAgICAgICBlcnJvcnMsXG4gICAgICAgIGZpZWxkczogZmllbGQuZmllbGRzLFxuICAgICAgICBtZXJnZUxvY2FsZUFjdGlvbnMsXG4gICAgICAgIG9wZXJhdGlvbixcbiAgICAgICAgcGF0aCxcbiAgICAgICAgcmVxLFxuICAgICAgICBzaWJsaW5nRGF0YSxcbiAgICAgICAgc2libGluZ0RvYyxcbiAgICAgICAgc2libGluZ0RvY1dpdGhMb2NhbGVzLFxuICAgICAgICBza2lwVmFsaWRhdGlvbjogc2tpcFZhbGlkYXRpb25Gcm9tSGVyZSxcbiAgICAgIH0pXG5cbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgY2FzZSAndGFiJzoge1xuICAgICAgbGV0IHRhYlBhdGggPSBwYXRoXG4gICAgICBsZXQgdGFiU2libGluZ0RhdGEgPSBzaWJsaW5nRGF0YVxuICAgICAgbGV0IHRhYlNpYmxpbmdEb2MgPSBzaWJsaW5nRG9jXG4gICAgICBsZXQgdGFiU2libGluZ0RvY1dpdGhMb2NhbGVzID0gc2libGluZ0RvY1dpdGhMb2NhbGVzXG5cbiAgICAgIGlmICh0YWJIYXNOYW1lKGZpZWxkKSkge1xuICAgICAgICB0YWJQYXRoID0gYCR7cGF0aH0ke2ZpZWxkLm5hbWV9LmBcbiAgICAgICAgaWYgKHR5cGVvZiBzaWJsaW5nRGF0YVtmaWVsZC5uYW1lXSAhPT0gJ29iamVjdCcpIHNpYmxpbmdEYXRhW2ZpZWxkLm5hbWVdID0ge31cbiAgICAgICAgaWYgKHR5cGVvZiBzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdICE9PSAnb2JqZWN0Jykgc2libGluZ0RvY1tmaWVsZC5uYW1lXSA9IHt9XG4gICAgICAgIGlmICh0eXBlb2Ygc2libGluZ0RvY1dpdGhMb2NhbGVzW2ZpZWxkLm5hbWVdICE9PSAnb2JqZWN0JylcbiAgICAgICAgICBzaWJsaW5nRG9jV2l0aExvY2FsZXNbZmllbGQubmFtZV0gPSB7fVxuXG4gICAgICAgIHRhYlNpYmxpbmdEYXRhID0gc2libGluZ0RhdGFbZmllbGQubmFtZV0gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgICAgICAgdGFiU2libGluZ0RvYyA9IHNpYmxpbmdEb2NbZmllbGQubmFtZV0gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgICAgICAgdGFiU2libGluZ0RvY1dpdGhMb2NhbGVzID0gc2libGluZ0RvY1dpdGhMb2NhbGVzW2ZpZWxkLm5hbWVdIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICAgICB9XG5cbiAgICAgIGF3YWl0IHRyYXZlcnNlRmllbGRzKHtcbiAgICAgICAgaWQsXG4gICAgICAgIGNvbnRleHQsXG4gICAgICAgIGRhdGEsXG4gICAgICAgIGRvYyxcbiAgICAgICAgZG9jV2l0aExvY2FsZXMsXG4gICAgICAgIGVycm9ycyxcbiAgICAgICAgZmllbGRzOiBmaWVsZC5maWVsZHMsXG4gICAgICAgIG1lcmdlTG9jYWxlQWN0aW9ucyxcbiAgICAgICAgb3BlcmF0aW9uLFxuICAgICAgICBwYXRoOiB0YWJQYXRoLFxuICAgICAgICByZXEsXG4gICAgICAgIHNpYmxpbmdEYXRhOiB0YWJTaWJsaW5nRGF0YSxcbiAgICAgICAgc2libGluZ0RvYzogdGFiU2libGluZ0RvYyxcbiAgICAgICAgc2libGluZ0RvY1dpdGhMb2NhbGVzOiB0YWJTaWJsaW5nRG9jV2l0aExvY2FsZXMsXG4gICAgICAgIHNraXBWYWxpZGF0aW9uOiBza2lwVmFsaWRhdGlvbkZyb21IZXJlLFxuICAgICAgfSlcblxuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBjYXNlICd0YWJzJzoge1xuICAgICAgYXdhaXQgdHJhdmVyc2VGaWVsZHMoe1xuICAgICAgICBpZCxcbiAgICAgICAgY29udGV4dCxcbiAgICAgICAgZGF0YSxcbiAgICAgICAgZG9jLFxuICAgICAgICBkb2NXaXRoTG9jYWxlcyxcbiAgICAgICAgZXJyb3JzLFxuICAgICAgICBmaWVsZHM6IGZpZWxkLnRhYnMubWFwKCh0YWIpID0+ICh7IC4uLnRhYiwgdHlwZTogJ3RhYicgfSkpLFxuICAgICAgICBtZXJnZUxvY2FsZUFjdGlvbnMsXG4gICAgICAgIG9wZXJhdGlvbixcbiAgICAgICAgcGF0aCxcbiAgICAgICAgcmVxLFxuICAgICAgICBzaWJsaW5nRGF0YSxcbiAgICAgICAgc2libGluZ0RvYyxcbiAgICAgICAgc2libGluZ0RvY1dpdGhMb2NhbGVzLFxuICAgICAgICBza2lwVmFsaWRhdGlvbjogc2tpcFZhbGlkYXRpb25Gcm9tSGVyZSxcbiAgICAgIH0pXG5cbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgZGVmYXVsdDoge1xuICAgICAgYnJlYWtcbiAgICB9XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJwcm9taXNlIiwiaWQiLCJjb250ZXh0IiwiZGF0YSIsImRvYyIsImRvY1dpdGhMb2NhbGVzIiwiZXJyb3JzIiwiZmllbGQiLCJtZXJnZUxvY2FsZUFjdGlvbnMiLCJvcGVyYXRpb24iLCJwYXRoIiwicmVxIiwic2libGluZ0RhdGEiLCJzaWJsaW5nRG9jIiwic2libGluZ0RvY1dpdGhMb2NhbGVzIiwic2tpcFZhbGlkYXRpb24iLCJwYXNzZXNDb25kaXRpb24iLCJhZG1pbiIsImNvbmRpdGlvbiIsInVzZXIiLCJza2lwVmFsaWRhdGlvbkZyb21IZXJlIiwiZGVmYXVsdExvY2FsZSIsInBheWxvYWQiLCJjb25maWciLCJsb2NhbGl6YXRpb24iLCJvcGVyYXRpb25Mb2NhbGUiLCJsb2NhbGUiLCJmaWVsZEFmZmVjdHNEYXRhIiwibG9jYWxpemVkIiwiaW5jbHVkZXMiLCJ0eXBlIiwibmFtZSIsImhvb2tzIiwiYmVmb3JlQ2hhbmdlIiwicmVkdWNlIiwicHJpb3JIb29rIiwiY3VycmVudEhvb2siLCJob29rZWRWYWx1ZSIsIm9yaWdpbmFsRG9jIiwidmFsdWUiLCJ1bmRlZmluZWQiLCJQcm9taXNlIiwicmVzb2x2ZSIsInZhbGlkYXRlIiwidmFsdWVUb1ZhbGlkYXRlIiwianNvbkVycm9yIiwiSlNPTiIsInBhcnNlIiwiZSIsInZhbGlkYXRpb25SZXN1bHQiLCJtZXJnZSIsImFycmF5TWVyZ2UiLCJfIiwic291cmNlIiwidCIsInB1c2giLCJtZXNzYWdlIiwibG9jYWxlRGF0YSIsImxvY2FsZUNvZGVzIiwibG9jYWxpemVkVmFsdWVzIiwiZmllbGRWYWx1ZSIsIk9iamVjdCIsImtleXMiLCJsZW5ndGgiLCJBcnJheSIsImlzQXJyYXkiLCJjb29yZGluYXRlcyIsInBhcnNlRmxvYXQiLCJ0cmF2ZXJzZUZpZWxkcyIsImZpZWxkcyIsInJvd3MiLCJwcm9taXNlcyIsImZvckVhY2giLCJyb3ciLCJpIiwiZ2V0RXhpc3RpbmdSb3dEb2MiLCJhbGwiLCJyb3dTaWJsaW5nRG9jIiwicm93U2libGluZ0RvY1dpdGhMb2NhbGVzIiwiYmxvY2tUeXBlVG9NYXRjaCIsImJsb2NrVHlwZSIsImJsb2NrIiwiYmxvY2tzIiwiZmluZCIsInNsdWciLCJ0YWJQYXRoIiwidGFiU2libGluZ0RhdGEiLCJ0YWJTaWJsaW5nRG9jIiwidGFiU2libGluZ0RvY1dpdGhMb2NhbGVzIiwidGFiSGFzTmFtZSIsInRhYnMiLCJtYXAiLCJ0YWIiXSwibWFwcGluZ3MiOiJBQUFBLG9DQUFvQzs7OzsrQkFvQ3ZCQTs7O2VBQUFBOzs7a0VBbkNLO3VCQU0yQjttQ0FDWDtnQ0FDSDs7Ozs7O0FBMkJ4QixNQUFNQSxVQUFV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
@@ -1 +1 @@
1
- {"version":3,"file":"validations.d.ts","sourceRoot":"","sources":["../../src/fields/validations.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EACV,UAAU,EACV,UAAU,EACV,aAAa,EACb,SAAS,EACT,SAAS,EACT,UAAU,EACV,SAAS,EACT,WAAW,EACX,UAAU,EACV,UAAU,EACV,iBAAiB,EAEjB,WAAW,EACX,SAAS,EACT,aAAa,EACb,WAAW,EACX,QAAQ,EACT,MAAM,gBAAgB,CAAA;AAOvB,eAAO,MAAM,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,CAqD1D,CAAA;AAED,eAAO,MAAM,IAAI,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAwBtD,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAuB1D,CAAA;AAED,eAAO,MAAM,KAAK,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CAMxD,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,CAsB9D,CAAA;AAED,eAAO,MAAM,IAAI,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAMtD,CAAA;AAED,eAAO,MAAM,IAAI,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,GAAG;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,CAa/E,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,CAS9D,CAAA;AAED,eAAO,MAAM,IAAI,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAetD,CAAA;AAuFD,eAAO,MAAM,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,CAiB1D,CAAA;AAED,eAAO,MAAM,YAAY,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,iBAAiB,CAmEtE,CAAA;AAED,eAAO,MAAM,KAAK,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CAiBxD,CAAA;AAED,eAAO,MAAM,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,CAmC1D,CAAA;AAED,eAAO,MAAM,KAAK,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CASxD,CAAA;AAED,eAAO,MAAM,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CAiBzD,CAAA;AAED,eAAO,MAAM,KAAK,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CAqBxD,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAED,wBAiBC"}
1
+ {"version":3,"file":"validations.d.ts","sourceRoot":"","sources":["../../src/fields/validations.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EACV,UAAU,EACV,UAAU,EACV,aAAa,EACb,SAAS,EACT,SAAS,EACT,UAAU,EACV,SAAS,EACT,WAAW,EACX,UAAU,EACV,UAAU,EACV,iBAAiB,EAEjB,WAAW,EACX,SAAS,EACT,aAAa,EACb,WAAW,EACX,QAAQ,EACT,MAAM,gBAAgB,CAAA;AAOvB,eAAO,MAAM,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,CAqD1D,CAAA;AAED,eAAO,MAAM,IAAI,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAwBtD,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAuB1D,CAAA;AAED,eAAO,MAAM,KAAK,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CAMxD,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,CAsB9D,CAAA;AAED,eAAO,MAAM,IAAI,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAMtD,CAAA;AAED,eAAO,MAAM,IAAI,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,GAAG;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,CAa/E,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,CAS9D,CAAA;AAED,eAAO,MAAM,IAAI,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAetD,CAAA;AAuFD,eAAO,MAAM,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,CAiB1D,CAAA;AAED,eAAO,MAAM,YAAY,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,iBAAiB,CAmEtE,CAAA;AAED,eAAO,MAAM,KAAK,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CAmBxD,CAAA;AAED,eAAO,MAAM,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,CAmC1D,CAAA;AAED,eAAO,MAAM,KAAK,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CASxD,CAAA;AAED,eAAO,MAAM,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CAmBzD,CAAA;AAED,eAAO,MAAM,KAAK,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CAqBxD,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAED,wBAiBC"}
@@ -358,19 +358,20 @@ const relationship = async (value, options)=>{
358
358
  return validateFilterOptions(value, options);
359
359
  };
360
360
  const array = (value, { maxRows, minRows, required, t })=>{
361
- if (minRows && value < minRows) {
361
+ const arrayLength = Array.isArray(value) ? value.length : 0;
362
+ if (minRows && arrayLength < minRows) {
362
363
  return t('validation:requiresAtLeast', {
363
364
  count: minRows,
364
365
  label: t('rows')
365
366
  });
366
367
  }
367
- if (maxRows && value > maxRows) {
368
+ if (maxRows && arrayLength > maxRows) {
368
369
  return t('validation:requiresNoMoreThan', {
369
370
  count: maxRows,
370
371
  label: t('rows')
371
372
  });
372
373
  }
373
- if (!value && required) {
374
+ if (!arrayLength && required) {
374
375
  return t('validation:requiresAtLeast', {
375
376
  count: 1,
376
377
  label: t('row')
@@ -398,19 +399,20 @@ const radio = (value, { options, required, t })=>{
398
399
  return required ? t('validation:required') : true;
399
400
  };
400
401
  const blocks = (value, { maxRows, minRows, required, t })=>{
401
- if (minRows && value < minRows) {
402
+ const arrayLength = Array.isArray(value) ? value.length : 0;
403
+ if (minRows && arrayLength < minRows) {
402
404
  return t('validation:requiresAtLeast', {
403
405
  count: minRows,
404
406
  label: t('rows')
405
407
  });
406
408
  }
407
- if (maxRows && value > maxRows) {
409
+ if (maxRows && arrayLength > maxRows) {
408
410
  return t('validation:requiresNoMoreThan', {
409
411
  count: maxRows,
410
412
  label: t('rows')
411
413
  });
412
414
  }
413
- if (!value && required) {
415
+ if (!arrayLength && required) {
414
416
  return t('validation:requiresAtLeast', {
415
417
  count: 1,
416
418
  label: t('row')
@@ -451,4 +453,4 @@ const _default = {
451
453
  upload
452
454
  };
453
455
 
454
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9maWVsZHMvdmFsaWRhdGlvbnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1xuICBBcnJheUZpZWxkLFxuICBCbG9ja0ZpZWxkLFxuICBDaGVja2JveEZpZWxkLFxuICBDb2RlRmllbGQsXG4gIERhdGVGaWVsZCxcbiAgRW1haWxGaWVsZCxcbiAgSlNPTkZpZWxkLFxuICBOdW1iZXJGaWVsZCxcbiAgUG9pbnRGaWVsZCxcbiAgUmFkaW9GaWVsZCxcbiAgUmVsYXRpb25zaGlwRmllbGQsXG4gIFJlbGF0aW9uc2hpcFZhbHVlLFxuICBTZWxlY3RGaWVsZCxcbiAgVGV4dEZpZWxkLFxuICBUZXh0YXJlYUZpZWxkLFxuICBVcGxvYWRGaWVsZCxcbiAgVmFsaWRhdGUsXG59IGZyb20gJy4vY29uZmlnL3R5cGVzJ1xuXG5pbXBvcnQgY2FuVXNlRE9NIGZyb20gJy4uL3V0aWxpdGllcy9jYW5Vc2VET00nXG5pbXBvcnQgeyBnZXRJRFR5cGUgfSBmcm9tICcuLi91dGlsaXRpZXMvZ2V0SURUeXBlJ1xuaW1wb3J0IHsgaXNWYWxpZElEIH0gZnJvbSAnLi4vdXRpbGl0aWVzL2lzVmFsaWRJRCdcbmltcG9ydCB7IGZpZWxkQWZmZWN0c0RhdGEgfSBmcm9tICcuL2NvbmZpZy90eXBlcydcblxuZXhwb3J0IGNvbnN0IG51bWJlcjogVmFsaWRhdGU8dW5rbm93biwgdW5rbm93biwgTnVtYmVyRmllbGQ+ID0gKFxuICB2YWx1ZTogbnVtYmVyIHwgbnVtYmVyW10sXG4gIHsgaGFzTWFueSwgbWF4LCBtYXhSb3dzLCBtaW4sIG1pblJvd3MsIHJlcXVpcmVkLCB0IH0sXG4pID0+IHtcbiAgY29uc3QgdG9WYWxpZGF0ZTogbnVtYmVyW10gPSBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW3ZhbHVlXVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZXN0cmljdGVkLXN5bnRheFxuICBmb3IgKGNvbnN0IHZhbHVlVG9WYWxpZGF0ZSBvZiB0b1ZhbGlkYXRlKSB7XG4gICAgY29uc3QgZmxvYXRWYWx1ZSA9IHBhcnNlRmxvYXQodmFsdWVUb1ZhbGlkYXRlIGFzIHVua25vd24gYXMgc3RyaW5nKVxuICAgIGlmIChcbiAgICAgICh2YWx1ZSAmJiB0eXBlb2YgZmxvYXRWYWx1ZSAhPT0gJ251bWJlcicpIHx8XG4gICAgICAocmVxdWlyZWQgJiYgTnVtYmVyLmlzTmFOKGZsb2F0VmFsdWUpKSB8fFxuICAgICAgKHZhbHVlICYmIE51bWJlci5pc05hTihmbG9hdFZhbHVlKSlcbiAgICApIHtcbiAgICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOmVudGVyTnVtYmVyJylcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIG1heCA9PT0gJ251bWJlcicgJiYgZmxvYXRWYWx1ZSA+IG1heCkge1xuICAgICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246Z3JlYXRlclRoYW5NYXgnLCB7IGxhYmVsOiB0KCd2YWx1ZScpLCBtYXgsIHZhbHVlIH0pXG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBtaW4gPT09ICdudW1iZXInICYmIGZsb2F0VmFsdWUgPCBtaW4pIHtcbiAgICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOmxlc3NUaGFuTWluJywgeyBsYWJlbDogdCgndmFsdWUnKSwgbWluLCB2YWx1ZSB9KVxuICAgIH1cblxuICAgIGlmIChyZXF1aXJlZCAmJiB0eXBlb2YgZmxvYXRWYWx1ZSAhPT0gJ251bWJlcicpIHtcbiAgICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOnJlcXVpcmVkJylcbiAgICB9XG4gIH1cblxuICBpZiAocmVxdWlyZWQgJiYgdG9WYWxpZGF0ZS5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpyZXF1aXJlZCcpXG4gIH1cblxuICBpZiAoaGFzTWFueSA9PT0gdHJ1ZSkge1xuICAgIGlmIChtaW5Sb3dzICYmIHRvVmFsaWRhdGUubGVuZ3RoIDwgbWluUm93cykge1xuICAgICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246bGVzc1RoYW5NaW4nLCB7XG4gICAgICAgIGxhYmVsOiB0KCdyb3dzJyksXG4gICAgICAgIG1pbjogbWluUm93cyxcbiAgICAgICAgdmFsdWU6IHRvVmFsaWRhdGUubGVuZ3RoLFxuICAgICAgfSlcbiAgICB9XG5cbiAgICBpZiAobWF4Um93cyAmJiB0b1ZhbGlkYXRlLmxlbmd0aCA+IG1heFJvd3MpIHtcbiAgICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOmdyZWF0ZXJUaGFuTWF4Jywge1xuICAgICAgICBsYWJlbDogdCgncm93cycpLFxuICAgICAgICBtYXg6IG1heFJvd3MsXG4gICAgICAgIHZhbHVlOiB0b1ZhbGlkYXRlLmxlbmd0aCxcbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZXhwb3J0IGNvbnN0IHRleHQ6IFZhbGlkYXRlPHVua25vd24sIHVua25vd24sIFRleHRGaWVsZD4gPSAoXG4gIHZhbHVlOiBzdHJpbmcsXG4gIHsgbWF4TGVuZ3RoOiBmaWVsZE1heExlbmd0aCwgbWluTGVuZ3RoLCBwYXlsb2FkLCByZXF1aXJlZCwgdCB9LFxuKSA9PiB7XG4gIGxldCBtYXhMZW5ndGg6IG51bWJlclxuXG4gIGlmICh0eXBlb2YgcGF5bG9hZD8uY29uZmlnPy5kZWZhdWx0TWF4VGV4dExlbmd0aCA9PT0gJ251bWJlcicpXG4gICAgbWF4TGVuZ3RoID0gcGF5bG9hZC5jb25maWcuZGVmYXVsdE1heFRleHRMZW5ndGhcbiAgaWYgKHR5cGVvZiBmaWVsZE1heExlbmd0aCA9PT0gJ251bWJlcicpIG1heExlbmd0aCA9IGZpZWxkTWF4TGVuZ3RoXG4gIGlmICh2YWx1ZSAmJiBtYXhMZW5ndGggJiYgdmFsdWUubGVuZ3RoID4gbWF4TGVuZ3RoKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246c2hvcnRlclRoYW5NYXgnLCB7IG1heExlbmd0aCB9KVxuICB9XG5cbiAgaWYgKHZhbHVlICYmIG1pbkxlbmd0aCAmJiB2YWx1ZT8ubGVuZ3RoIDwgbWluTGVuZ3RoKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246bG9uZ2VyVGhhbk1pbicsIHsgbWluTGVuZ3RoIH0pXG4gIH1cblxuICBpZiAocmVxdWlyZWQpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJyB8fCB2YWx1ZT8ubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpyZXF1aXJlZCcpXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZXhwb3J0IGNvbnN0IHBhc3N3b3JkOiBWYWxpZGF0ZTx1bmtub3duLCB1bmtub3duLCBUZXh0RmllbGQ+ID0gKFxuICB2YWx1ZTogc3RyaW5nLFxuICB7IG1heExlbmd0aDogZmllbGRNYXhMZW5ndGgsIG1pbkxlbmd0aCwgcGF5bG9hZCwgcmVxdWlyZWQsIHQgfSxcbikgPT4ge1xuICBsZXQgbWF4TGVuZ3RoOiBudW1iZXJcblxuICBpZiAodHlwZW9mIHBheWxvYWQ/LmNvbmZpZz8uZGVmYXVsdE1heFRleHRMZW5ndGggPT09ICdudW1iZXInKVxuICAgIG1heExlbmd0aCA9IHBheWxvYWQuY29uZmlnLmRlZmF1bHRNYXhUZXh0TGVuZ3RoXG4gIGlmICh0eXBlb2YgZmllbGRNYXhMZW5ndGggPT09ICdudW1iZXInKSBtYXhMZW5ndGggPSBmaWVsZE1heExlbmd0aFxuXG4gIGlmICh2YWx1ZSAmJiBtYXhMZW5ndGggJiYgdmFsdWUubGVuZ3RoID4gbWF4TGVuZ3RoKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246c2hvcnRlclRoYW5NYXgnLCB7IG1heExlbmd0aCB9KVxuICB9XG5cbiAgaWYgKHZhbHVlICYmIG1pbkxlbmd0aCAmJiB2YWx1ZS5sZW5ndGggPCBtaW5MZW5ndGgpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpsb25nZXJUaGFuTWluJywgeyBtaW5MZW5ndGggfSlcbiAgfVxuXG4gIGlmIChyZXF1aXJlZCAmJiAhdmFsdWUpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpyZXF1aXJlZCcpXG4gIH1cblxuICByZXR1cm4gdHJ1ZVxufVxuXG5leHBvcnQgY29uc3QgZW1haWw6IFZhbGlkYXRlPHVua25vd24sIHVua25vd24sIEVtYWlsRmllbGQ+ID0gKHZhbHVlOiBzdHJpbmcsIHsgcmVxdWlyZWQsIHQgfSkgPT4ge1xuICBpZiAoKHZhbHVlICYmICEvXFxTW15cXHNAXSpAXFxTK1xcLlxcUysvLnRlc3QodmFsdWUpKSB8fCAoIXZhbHVlICYmIHJlcXVpcmVkKSkge1xuICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOmVtYWlsQWRkcmVzcycpXG4gIH1cblxuICByZXR1cm4gdHJ1ZVxufVxuXG5leHBvcnQgY29uc3QgdGV4dGFyZWE6IFZhbGlkYXRlPHVua25vd24sIHVua25vd24sIFRleHRhcmVhRmllbGQ+ID0gKFxuICB2YWx1ZTogc3RyaW5nLFxuICB7IG1heExlbmd0aDogZmllbGRNYXhMZW5ndGgsIG1pbkxlbmd0aCwgcGF5bG9hZCwgcmVxdWlyZWQsIHQgfSxcbikgPT4ge1xuICBsZXQgbWF4TGVuZ3RoOiBudW1iZXJcblxuICBpZiAodHlwZW9mIHBheWxvYWQ/LmNvbmZpZz8uZGVmYXVsdE1heFRleHRMZW5ndGggPT09ICdudW1iZXInKVxuICAgIG1heExlbmd0aCA9IHBheWxvYWQuY29uZmlnLmRlZmF1bHRNYXhUZXh0TGVuZ3RoXG4gIGlmICh0eXBlb2YgZmllbGRNYXhMZW5ndGggPT09ICdudW1iZXInKSBtYXhMZW5ndGggPSBmaWVsZE1heExlbmd0aFxuICBpZiAodmFsdWUgJiYgbWF4TGVuZ3RoICYmIHZhbHVlLmxlbmd0aCA+IG1heExlbmd0aCkge1xuICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOnNob3J0ZXJUaGFuTWF4JywgeyBtYXhMZW5ndGggfSlcbiAgfVxuXG4gIGlmICh2YWx1ZSAmJiBtaW5MZW5ndGggJiYgdmFsdWUubGVuZ3RoIDwgbWluTGVuZ3RoKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246bG9uZ2VyVGhhbk1pbicsIHsgbWluTGVuZ3RoIH0pXG4gIH1cblxuICBpZiAocmVxdWlyZWQgJiYgIXZhbHVlKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246cmVxdWlyZWQnKVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZXhwb3J0IGNvbnN0IGNvZGU6IFZhbGlkYXRlPHVua25vd24sIHVua25vd24sIENvZGVGaWVsZD4gPSAodmFsdWU6IHN0cmluZywgeyByZXF1aXJlZCwgdCB9KSA9PiB7XG4gIGlmIChyZXF1aXJlZCAmJiB2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246cmVxdWlyZWQnKVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZXhwb3J0IGNvbnN0IGpzb246IFZhbGlkYXRlPHVua25vd24sIHVua25vd24sIEpTT05GaWVsZCAmIHsganNvbkVycm9yPzogc3RyaW5nIH0+ID0gKFxuICB2YWx1ZTogc3RyaW5nLFxuICB7IGpzb25FcnJvciwgcmVxdWlyZWQsIHQgfSxcbikgPT4ge1xuICBpZiAocmVxdWlyZWQgJiYgIXZhbHVlKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246cmVxdWlyZWQnKVxuICB9XG5cbiAgaWYgKGpzb25FcnJvciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246aW52YWxpZElucHV0JylcbiAgfVxuXG4gIHJldHVybiB0cnVlXG59XG5cbmV4cG9ydCBjb25zdCBjaGVja2JveDogVmFsaWRhdGU8dW5rbm93biwgdW5rbm93biwgQ2hlY2tib3hGaWVsZD4gPSAoXG4gIHZhbHVlOiBib29sZWFuLFxuICB7IHJlcXVpcmVkLCB0IH0sXG4pID0+IHtcbiAgaWYgKCh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgIT09ICdib29sZWFuJykgfHwgKHJlcXVpcmVkICYmIHR5cGVvZiB2YWx1ZSAhPT0gJ2Jvb2xlYW4nKSkge1xuICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOnRydWVPckZhbHNlJylcbiAgfVxuXG4gIHJldHVybiB0cnVlXG59XG5cbmV4cG9ydCBjb25zdCBkYXRlOiBWYWxpZGF0ZTx1bmtub3duLCB1bmtub3duLCBEYXRlRmllbGQ+ID0gKHZhbHVlLCB7IHJlcXVpcmVkLCB0IH0pID0+IHtcbiAgaWYgKHZhbHVlICYmICFpc05hTihEYXRlLnBhcnNlKHZhbHVlLnRvU3RyaW5nKCkpKSkge1xuICAgIC8qIGVzbGludC1kaXNhYmxlLWxpbmUgKi9cbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgaWYgKHZhbHVlKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246bm90VmFsaWREYXRlJywgeyB2YWx1ZSB9KVxuICB9XG5cbiAgaWYgKHJlcXVpcmVkKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246cmVxdWlyZWQnKVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuY29uc3QgdmFsaWRhdGVGaWx0ZXJPcHRpb25zOiBWYWxpZGF0ZSA9IGFzeW5jIChcbiAgdmFsdWUsXG4gIHsgaWQsIGRhdGEsIGZpbHRlck9wdGlvbnMsIHBheWxvYWQsIHJlbGF0aW9uVG8sIHNpYmxpbmdEYXRhLCB0LCB1c2VyIH0sXG4pID0+IHtcbiAgaWYgKCFjYW5Vc2VET00gJiYgdHlwZW9mIGZpbHRlck9wdGlvbnMgIT09ICd1bmRlZmluZWQnICYmIHZhbHVlKSB7XG4gICAgY29uc3Qgb3B0aW9uczoge1xuICAgICAgW2NvbGxlY3Rpb246IHN0cmluZ106IChudW1iZXIgfCBzdHJpbmcpW11cbiAgICB9ID0ge31cblxuICAgIGNvbnN0IGNvbGxlY3Rpb25zID0gdHlwZW9mIHJlbGF0aW9uVG8gPT09ICdzdHJpbmcnID8gW3JlbGF0aW9uVG9dIDogcmVsYXRpb25Ub1xuICAgIGNvbnN0IHZhbHVlcyA9IEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiBbdmFsdWVdXG5cbiAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIGNvbGxlY3Rpb25zLm1hcChhc3luYyAoY29sbGVjdGlvbikgPT4ge1xuICAgICAgICBjb25zdCBvcHRpb25GaWx0ZXIgPVxuICAgICAgICAgIHR5cGVvZiBmaWx0ZXJPcHRpb25zID09PSAnZnVuY3Rpb24nXG4gICAgICAgICAgICA/IGF3YWl0IGZpbHRlck9wdGlvbnMoe1xuICAgICAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgICAgICAgcmVsYXRpb25UbzogY29sbGVjdGlvbixcbiAgICAgICAgICAgICAgICBzaWJsaW5nRGF0YSxcbiAgICAgICAgICAgICAgICB1c2VyLFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgOiBmaWx0ZXJPcHRpb25zXG5cbiAgICAgICAgY29uc3QgdmFsdWVJRHM6IChudW1iZXIgfCBzdHJpbmcpW10gPSBbXVxuXG4gICAgICAgIHZhbHVlcy5mb3JFYWNoKCh2YWwpID0+IHtcbiAgICAgICAgICBpZiAodHlwZW9mIHZhbCA9PT0gJ29iamVjdCcgJiYgdmFsPy52YWx1ZSkge1xuICAgICAgICAgICAgdmFsdWVJRHMucHVzaCh2YWwudmFsdWUpXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiB2YWwgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICB2YWx1ZUlEcy5wdXNoKHZhbClcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcGF5bG9hZC5maW5kKHtcbiAgICAgICAgICBjb2xsZWN0aW9uLFxuICAgICAgICAgIGRlcHRoOiAwLFxuICAgICAgICAgIGxpbWl0OiAwLFxuICAgICAgICAgIHBhZ2luYXRpb246IGZhbHNlLFxuICAgICAgICAgIHdoZXJlOiB7XG4gICAgICAgICAgICBhbmQ6IFt7IGlkOiB7IGluOiB2YWx1ZUlEcyB9IH0sIG9wdGlvbkZpbHRlcl0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcblxuICAgICAgICBvcHRpb25zW2NvbGxlY3Rpb25dID0gcmVzdWx0LmRvY3MubWFwKChkb2MpID0+IGRvYy5pZClcbiAgICAgIH0pLFxuICAgIClcblxuICAgIGNvbnN0IGludmFsaWRSZWxhdGlvbnNoaXBzID0gdmFsdWVzLmZpbHRlcigodmFsKSA9PiB7XG4gICAgICBsZXQgY29sbGVjdGlvbjogc3RyaW5nXG4gICAgICBsZXQgcmVxdWVzdGVkSUQ6IG51bWJlciB8IHN0cmluZ1xuXG4gICAgICBpZiAodHlwZW9mIHJlbGF0aW9uVG8gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGNvbGxlY3Rpb24gPSByZWxhdGlvblRvXG5cbiAgICAgICAgaWYgKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiB2YWwgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgcmVxdWVzdGVkSUQgPSB2YWxcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShyZWxhdGlvblRvKSAmJiB0eXBlb2YgdmFsID09PSAnb2JqZWN0JyAmJiB2YWw/LnJlbGF0aW9uVG8pIHtcbiAgICAgICAgY29sbGVjdGlvbiA9IHZhbC5yZWxhdGlvblRvXG4gICAgICAgIHJlcXVlc3RlZElEID0gdmFsLnZhbHVlXG4gICAgICB9XG5cbiAgICAgIHJldHVybiBvcHRpb25zW2NvbGxlY3Rpb25dLmluZGV4T2YocmVxdWVzdGVkSUQpID09PSAtMVxuICAgIH0pXG5cbiAgICBpZiAoaW52YWxpZFJlbGF0aW9uc2hpcHMubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIGludmFsaWRSZWxhdGlvbnNoaXBzLnJlZHVjZSgoZXJyLCBpbnZhbGlkLCBpKSA9PiB7XG4gICAgICAgIHJldHVybiBgJHtlcnJ9ICR7SlNPTi5zdHJpbmdpZnkoaW52YWxpZCl9JHtcbiAgICAgICAgICBpbnZhbGlkUmVsYXRpb25zaGlwcy5sZW5ndGggPT09IGkgKyAxID8gJywnIDogJydcbiAgICAgICAgfSBgXG4gICAgICB9LCB0KCd2YWxpZGF0aW9uOmludmFsaWRTZWxlY3Rpb25zJykpIGFzIHN0cmluZ1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICByZXR1cm4gdHJ1ZVxufVxuXG5leHBvcnQgY29uc3QgdXBsb2FkOiBWYWxpZGF0ZTx1bmtub3duLCB1bmtub3duLCBVcGxvYWRGaWVsZD4gPSAodmFsdWU6IHN0cmluZywgb3B0aW9ucykgPT4ge1xuICBpZiAoIXZhbHVlICYmIG9wdGlvbnMucmVxdWlyZWQpIHtcbiAgICByZXR1cm4gb3B0aW9ucy50KCd2YWxpZGF0aW9uOnJlcXVpcmVkJylcbiAgfVxuXG4gIGlmICghY2FuVXNlRE9NICYmIHR5cGVvZiB2YWx1ZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdmFsdWUgIT09IG51bGwpIHtcbiAgICBjb25zdCBpZEZpZWxkID0gb3B0aW9ucy5wYXlsb2FkLmNvbGxlY3Rpb25zW29wdGlvbnMucmVsYXRpb25Ub10uY29uZmlnLmZpZWxkcy5maW5kKFxuICAgICAgKGZpZWxkKSA9PiBmaWVsZEFmZmVjdHNEYXRhKGZpZWxkKSAmJiBmaWVsZC5uYW1lID09PSAnaWQnLFxuICAgIClcbiAgICBjb25zdCB0eXBlID0gZ2V0SURUeXBlKGlkRmllbGQpXG5cbiAgICBpZiAoIWlzVmFsaWRJRCh2YWx1ZSwgdHlwZSkpIHtcbiAgICAgIHJldHVybiBvcHRpb25zLnQoJ3ZhbGlkYXRpb246dmFsaWRVcGxvYWRJRCcpXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHZhbGlkYXRlRmlsdGVyT3B0aW9ucyh2YWx1ZSwgb3B0aW9ucylcbn1cblxuZXhwb3J0IGNvbnN0IHJlbGF0aW9uc2hpcDogVmFsaWRhdGU8dW5rbm93biwgdW5rbm93biwgUmVsYXRpb25zaGlwRmllbGQ+ID0gYXN5bmMgKFxuICB2YWx1ZTogUmVsYXRpb25zaGlwVmFsdWUsXG4gIG9wdGlvbnMsXG4pID0+IHtcbiAgY29uc3QgeyBtYXhSb3dzLCBtaW5Sb3dzLCBwYXlsb2FkLCByZWxhdGlvblRvLCByZXF1aXJlZCwgdCB9ID0gb3B0aW9uc1xuXG4gIGlmICgoIXZhbHVlIHx8IChBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPT09IDApKSAmJiByZXF1aXJlZCkge1xuICAgIHJldHVybiBvcHRpb25zLnQoJ3ZhbGlkYXRpb246cmVxdWlyZWQnKVxuICB9XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgaWYgKG1pblJvd3MgJiYgdmFsdWUubGVuZ3RoIDwgbWluUm93cykge1xuICAgICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246bGVzc1RoYW5NaW4nLCB7IGxhYmVsOiB0KCdyb3dzJyksIG1pbjogbWluUm93cywgdmFsdWU6IHZhbHVlLmxlbmd0aCB9KVxuICAgIH1cblxuICAgIGlmIChtYXhSb3dzICYmIHZhbHVlLmxlbmd0aCA+IG1heFJvd3MpIHtcbiAgICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOmdyZWF0ZXJUaGFuTWF4JywgeyBsYWJlbDogdCgncm93cycpLCBtYXg6IG1heFJvd3MsIHZhbHVlOiB2YWx1ZS5sZW5ndGggfSlcbiAgICB9XG4gIH1cblxuICBpZiAoIWNhblVzZURPTSAmJiB0eXBlb2YgdmFsdWUgIT09ICd1bmRlZmluZWQnICYmIHZhbHVlICE9PSBudWxsKSB7XG4gICAgY29uc3QgdmFsdWVzID0gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFt2YWx1ZV1cblxuICAgIGNvbnN0IGludmFsaWRSZWxhdGlvbnNoaXBzID0gdmFsdWVzLmZpbHRlcigodmFsKSA9PiB7XG4gICAgICBsZXQgY29sbGVjdGlvbjogc3RyaW5nXG4gICAgICBsZXQgcmVxdWVzdGVkSURcblxuICAgICAgaWYgKHR5cGVvZiByZWxhdGlvblRvID09PSAnc3RyaW5nJykge1xuICAgICAgICBjb2xsZWN0aW9uID0gcmVsYXRpb25Ub1xuXG4gICAgICAgIC8vIGN1c3RvbSBpZFxuICAgICAgICBpZiAodmFsKSB7XG4gICAgICAgICAgcmVxdWVzdGVkSUQgPSB2YWxcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShyZWxhdGlvblRvKSAmJiB0eXBlb2YgdmFsID09PSAnb2JqZWN0JyAmJiB2YWw/LnJlbGF0aW9uVG8pIHtcbiAgICAgICAgY29sbGVjdGlvbiA9IHZhbC5yZWxhdGlvblRvXG4gICAgICAgIHJlcXVlc3RlZElEID0gdmFsLnZhbHVlXG4gICAgICB9XG5cbiAgICAgIGlmIChyZXF1ZXN0ZWRJRCA9PT0gbnVsbCkgcmV0dXJuIGZhbHNlXG5cbiAgICAgIGNvbnN0IGlkRmllbGQgPSBwYXlsb2FkLmNvbGxlY3Rpb25zW2NvbGxlY3Rpb25dPy5jb25maWc/LmZpZWxkcz8uZmluZChcbiAgICAgICAgKGZpZWxkKSA9PiBmaWVsZEFmZmVjdHNEYXRhKGZpZWxkKSAmJiBmaWVsZC5uYW1lID09PSAnaWQnLFxuICAgICAgKVxuICAgICAgbGV0IHR5cGVcblxuICAgICAgaWYgKGlkRmllbGQpIHtcbiAgICAgICAgdHlwZSA9IGlkRmllbGQudHlwZSA9PT0gJ251bWJlcicgPyAnbnVtYmVyJyA6ICd0ZXh0J1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdHlwZSA9ICdPYmplY3RJRCdcbiAgICAgIH1cblxuICAgICAgcmV0dXJuICFpc1ZhbGlkSUQocmVxdWVzdGVkSUQsIHR5cGUpXG4gICAgfSlcblxuICAgIGlmIChpbnZhbGlkUmVsYXRpb25zaGlwcy5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gYFRoaXMgZmllbGQgaGFzIHRoZSBmb2xsb3dpbmcgaW52YWxpZCBzZWxlY3Rpb25zOiAke2ludmFsaWRSZWxhdGlvbnNoaXBzXG4gICAgICAgIC5tYXAoKGVyciwgaW52YWxpZCkgPT4ge1xuICAgICAgICAgIHJldHVybiBgJHtlcnJ9ICR7SlNPTi5zdHJpbmdpZnkoaW52YWxpZCl9YFxuICAgICAgICB9KVxuICAgICAgICAuam9pbignLCAnKX1gXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHZhbGlkYXRlRmlsdGVyT3B0aW9ucyh2YWx1ZSwgb3B0aW9ucylcbn1cblxuZXhwb3J0IGNvbnN0IGFycmF5OiBWYWxpZGF0ZTx1bmtub3duLCB1bmtub3duLCBBcnJheUZpZWxkPiA9IChcbiAgdmFsdWUsXG4gIHsgbWF4Um93cywgbWluUm93cywgcmVxdWlyZWQsIHQgfSxcbikgPT4ge1xuICBpZiAobWluUm93cyAmJiB2YWx1ZSA8IG1pblJvd3MpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpyZXF1aXJlc0F0TGVhc3QnLCB7IGNvdW50OiBtaW5Sb3dzLCBsYWJlbDogdCgncm93cycpIH0pXG4gIH1cblxuICBpZiAobWF4Um93cyAmJiB2YWx1ZSA+IG1heFJvd3MpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpyZXF1aXJlc05vTW9yZVRoYW4nLCB7IGNvdW50OiBtYXhSb3dzLCBsYWJlbDogdCgncm93cycpIH0pXG4gIH1cblxuICBpZiAoIXZhbHVlICYmIHJlcXVpcmVkKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246cmVxdWlyZXNBdExlYXN0JywgeyBjb3VudDogMSwgbGFiZWw6IHQoJ3JvdycpIH0pXG4gIH1cblxuICByZXR1cm4gdHJ1ZVxufVxuXG5leHBvcnQgY29uc3Qgc2VsZWN0OiBWYWxpZGF0ZTx1bmtub3duLCB1bmtub3duLCBTZWxlY3RGaWVsZD4gPSAoXG4gIHZhbHVlLFxuICB7IGhhc01hbnksIG9wdGlvbnMsIHJlcXVpcmVkLCB0IH0sXG4pID0+IHtcbiAgaWYgKFxuICAgIEFycmF5LmlzQXJyYXkodmFsdWUpICYmXG4gICAgdmFsdWUuc29tZShcbiAgICAgIChpbnB1dCkgPT5cbiAgICAgICAgIW9wdGlvbnMuc29tZShcbiAgICAgICAgICAob3B0aW9uKSA9PiBvcHRpb24gPT09IGlucHV0IHx8ICh0eXBlb2Ygb3B0aW9uICE9PSAnc3RyaW5nJyAmJiBvcHRpb24/LnZhbHVlID09PSBpbnB1dCksXG4gICAgICAgICksXG4gICAgKVxuICApIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjppbnZhbGlkU2VsZWN0aW9uJylcbiAgfVxuXG4gIGlmIChcbiAgICB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmXG4gICAgIW9wdGlvbnMuc29tZShcbiAgICAgIChvcHRpb24pID0+IG9wdGlvbiA9PT0gdmFsdWUgfHwgKHR5cGVvZiBvcHRpb24gIT09ICdzdHJpbmcnICYmIG9wdGlvbi52YWx1ZSA9PT0gdmFsdWUpLFxuICAgIClcbiAgKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246aW52YWxpZFNlbGVjdGlvbicpXG4gIH1cblxuICBpZiAoXG4gICAgcmVxdWlyZWQgJiZcbiAgICAodHlwZW9mIHZhbHVlID09PSAndW5kZWZpbmVkJyB8fFxuICAgICAgdmFsdWUgPT09IG51bGwgfHxcbiAgICAgIChoYXNNYW55ICYmIEFycmF5LmlzQXJyYXkodmFsdWUpICYmICh2YWx1ZSBhcyBbXSk/Lmxlbmd0aCA9PT0gMCkpXG4gICkge1xuICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOnJlcXVpcmVkJylcbiAgfVxuXG4gIHJldHVybiB0cnVlXG59XG5cbmV4cG9ydCBjb25zdCByYWRpbzogVmFsaWRhdGU8dW5rbm93biwgdW5rbm93biwgUmFkaW9GaWVsZD4gPSAodmFsdWUsIHsgb3B0aW9ucywgcmVxdWlyZWQsIHQgfSkgPT4ge1xuICBpZiAodmFsdWUpIHtcbiAgICBjb25zdCB2YWx1ZU1hdGNoZXNPcHRpb24gPSBvcHRpb25zLnNvbWUoXG4gICAgICAob3B0aW9uKSA9PiBvcHRpb24gPT09IHZhbHVlIHx8ICh0eXBlb2Ygb3B0aW9uICE9PSAnc3RyaW5nJyAmJiBvcHRpb24udmFsdWUgPT09IHZhbHVlKSxcbiAgICApXG4gICAgcmV0dXJuIHZhbHVlTWF0Y2hlc09wdGlvbiB8fCB0KCd2YWxpZGF0aW9uOmludmFsaWRTZWxlY3Rpb24nKVxuICB9XG5cbiAgcmV0dXJuIHJlcXVpcmVkID8gdCgndmFsaWRhdGlvbjpyZXF1aXJlZCcpIDogdHJ1ZVxufVxuXG5leHBvcnQgY29uc3QgYmxvY2tzOiBWYWxpZGF0ZTx1bmtub3duLCB1bmtub3duLCBCbG9ja0ZpZWxkPiA9IChcbiAgdmFsdWUsXG4gIHsgbWF4Um93cywgbWluUm93cywgcmVxdWlyZWQsIHQgfSxcbikgPT4ge1xuICBpZiAobWluUm93cyAmJiB2YWx1ZSA8IG1pblJvd3MpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpyZXF1aXJlc0F0TGVhc3QnLCB7IGNvdW50OiBtaW5Sb3dzLCBsYWJlbDogdCgncm93cycpIH0pXG4gIH1cblxuICBpZiAobWF4Um93cyAmJiB2YWx1ZSA+IG1heFJvd3MpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpyZXF1aXJlc05vTW9yZVRoYW4nLCB7IGNvdW50OiBtYXhSb3dzLCBsYWJlbDogdCgncm93cycpIH0pXG4gIH1cblxuICBpZiAoIXZhbHVlICYmIHJlcXVpcmVkKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246cmVxdWlyZXNBdExlYXN0JywgeyBjb3VudDogMSwgbGFiZWw6IHQoJ3JvdycpIH0pXG4gIH1cblxuICByZXR1cm4gdHJ1ZVxufVxuXG5leHBvcnQgY29uc3QgcG9pbnQ6IFZhbGlkYXRlPHVua25vd24sIHVua25vd24sIFBvaW50RmllbGQ+ID0gKFxuICB2YWx1ZTogW251bWJlciB8IHN0cmluZywgbnVtYmVyIHwgc3RyaW5nXSA9IFsnJywgJyddLFxuICB7IHJlcXVpcmVkLCB0IH0sXG4pID0+IHtcbiAgY29uc3QgbG5nID0gcGFyc2VGbG9hdChTdHJpbmcodmFsdWVbMF0pKVxuICBjb25zdCBsYXQgPSBwYXJzZUZsb2F0KFN0cmluZyh2YWx1ZVsxXSkpXG4gIGlmIChcbiAgICByZXF1aXJlZCAmJlxuICAgICgodmFsdWVbMF0gJiYgdmFsdWVbMV0gJiYgdHlwZW9mIGxuZyAhPT0gJ251bWJlcicgJiYgdHlwZW9mIGxhdCAhPT0gJ251bWJlcicpIHx8XG4gICAgICBOdW1iZXIuaXNOYU4obG5nKSB8fFxuICAgICAgTnVtYmVyLmlzTmFOKGxhdCkgfHxcbiAgICAgIChBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggIT09IDIpKVxuICApIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpyZXF1aXJlc1R3b051bWJlcnMnKVxuICB9XG5cbiAgaWYgKCh2YWx1ZVsxXSAmJiBOdW1iZXIuaXNOYU4obG5nKSkgfHwgKHZhbHVlWzBdICYmIE51bWJlci5pc05hTihsYXQpKSkge1xuICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOmludmFsaWRJbnB1dCcpXG4gIH1cblxuICByZXR1cm4gdHJ1ZVxufVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIGFycmF5LFxuICBibG9ja3MsXG4gIGNoZWNrYm94LFxuICBjb2RlLFxuICBkYXRlLFxuICBlbWFpbCxcbiAganNvbixcbiAgbnVtYmVyLFxuICBwYXNzd29yZCxcbiAgcG9pbnQsXG4gIHJhZGlvLFxuICByZWxhdGlvbnNoaXAsXG4gIHNlbGVjdCxcbiAgdGV4dCxcbiAgdGV4dGFyZWEsXG4gIHVwbG9hZCxcbn1cbiJdLCJuYW1lcyI6WyJudW1iZXIiLCJ0ZXh0IiwicGFzc3dvcmQiLCJlbWFpbCIsInRleHRhcmVhIiwiY29kZSIsImpzb24iLCJjaGVja2JveCIsImRhdGUiLCJ1cGxvYWQiLCJyZWxhdGlvbnNoaXAiLCJhcnJheSIsInNlbGVjdCIsInJhZGlvIiwiYmxvY2tzIiwicG9pbnQiLCJ2YWx1ZSIsImhhc01hbnkiLCJtYXgiLCJtYXhSb3dzIiwibWluIiwibWluUm93cyIsInJlcXVpcmVkIiwidCIsInRvVmFsaWRhdGUiLCJBcnJheSIsImlzQXJyYXkiLCJ2YWx1ZVRvVmFsaWRhdGUiLCJmbG9hdFZhbHVlIiwicGFyc2VGbG9hdCIsIk51bWJlciIsImlzTmFOIiwibGFiZWwiLCJsZW5ndGgiLCJtYXhMZW5ndGgiLCJmaWVsZE1heExlbmd0aCIsIm1pbkxlbmd0aCIsInBheWxvYWQiLCJjb25maWciLCJkZWZhdWx0TWF4VGV4dExlbmd0aCIsInRlc3QiLCJ1bmRlZmluZWQiLCJqc29uRXJyb3IiLCJEYXRlIiwicGFyc2UiLCJ0b1N0cmluZyIsInZhbGlkYXRlRmlsdGVyT3B0aW9ucyIsImlkIiwiZGF0YSIsImZpbHRlck9wdGlvbnMiLCJyZWxhdGlvblRvIiwic2libGluZ0RhdGEiLCJ1c2VyIiwiY2FuVXNlRE9NIiwib3B0aW9ucyIsImNvbGxlY3Rpb25zIiwidmFsdWVzIiwiUHJvbWlzZSIsImFsbCIsIm1hcCIsImNvbGxlY3Rpb24iLCJvcHRpb25GaWx0ZXIiLCJ2YWx1ZUlEcyIsImZvckVhY2giLCJ2YWwiLCJwdXNoIiwicmVzdWx0IiwiZmluZCIsImRlcHRoIiwibGltaXQiLCJwYWdpbmF0aW9uIiwid2hlcmUiLCJhbmQiLCJpbiIsImRvY3MiLCJkb2MiLCJpbnZhbGlkUmVsYXRpb25zaGlwcyIsImZpbHRlciIsInJlcXVlc3RlZElEIiwiaW5kZXhPZiIsInJlZHVjZSIsImVyciIsImludmFsaWQiLCJpIiwiSlNPTiIsInN0cmluZ2lmeSIsImlkRmllbGQiLCJmaWVsZHMiLCJmaWVsZCIsImZpZWxkQWZmZWN0c0RhdGEiLCJuYW1lIiwidHlwZSIsImdldElEVHlwZSIsImlzVmFsaWRJRCIsImpvaW4iLCJjb3VudCIsInNvbWUiLCJpbnB1dCIsIm9wdGlvbiIsInZhbHVlTWF0Y2hlc09wdGlvbiIsImxuZyIsIlN0cmluZyIsImxhdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7SUF5QmFBLE1BQU07ZUFBTkE7O0lBdURBQyxJQUFJO2VBQUpBOztJQTBCQUMsUUFBUTtlQUFSQTs7SUF5QkFDLEtBQUs7ZUFBTEE7O0lBUUFDLFFBQVE7ZUFBUkE7O0lBd0JBQyxJQUFJO2VBQUpBOztJQVFBQyxJQUFJO2VBQUpBOztJQWVBQyxRQUFRO2VBQVJBOztJQVdBQyxJQUFJO2VBQUpBOztJQXNHQUMsTUFBTTtlQUFOQTs7SUFtQkFDLFlBQVk7ZUFBWkE7O0lBcUVBQyxLQUFLO2VBQUxBOztJQW1CQUMsTUFBTTtlQUFOQTs7SUFxQ0FDLEtBQUs7ZUFBTEE7O0lBV0FDLE1BQU07ZUFBTkE7O0lBbUJBQyxLQUFLO2VBQUxBOztJQXVCYixPQWlCQztlQWpCRDs7O2tFQTVkc0I7MkJBQ0k7MkJBQ0E7dUJBQ087Ozs7OztBQUUxQixNQUFNZixTQUFr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
456
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9maWVsZHMvdmFsaWRhdGlvbnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1xuICBBcnJheUZpZWxkLFxuICBCbG9ja0ZpZWxkLFxuICBDaGVja2JveEZpZWxkLFxuICBDb2RlRmllbGQsXG4gIERhdGVGaWVsZCxcbiAgRW1haWxGaWVsZCxcbiAgSlNPTkZpZWxkLFxuICBOdW1iZXJGaWVsZCxcbiAgUG9pbnRGaWVsZCxcbiAgUmFkaW9GaWVsZCxcbiAgUmVsYXRpb25zaGlwRmllbGQsXG4gIFJlbGF0aW9uc2hpcFZhbHVlLFxuICBTZWxlY3RGaWVsZCxcbiAgVGV4dEZpZWxkLFxuICBUZXh0YXJlYUZpZWxkLFxuICBVcGxvYWRGaWVsZCxcbiAgVmFsaWRhdGUsXG59IGZyb20gJy4vY29uZmlnL3R5cGVzJ1xuXG5pbXBvcnQgY2FuVXNlRE9NIGZyb20gJy4uL3V0aWxpdGllcy9jYW5Vc2VET00nXG5pbXBvcnQgeyBnZXRJRFR5cGUgfSBmcm9tICcuLi91dGlsaXRpZXMvZ2V0SURUeXBlJ1xuaW1wb3J0IHsgaXNWYWxpZElEIH0gZnJvbSAnLi4vdXRpbGl0aWVzL2lzVmFsaWRJRCdcbmltcG9ydCB7IGZpZWxkQWZmZWN0c0RhdGEgfSBmcm9tICcuL2NvbmZpZy90eXBlcydcblxuZXhwb3J0IGNvbnN0IG51bWJlcjogVmFsaWRhdGU8dW5rbm93biwgdW5rbm93biwgTnVtYmVyRmllbGQ+ID0gKFxuICB2YWx1ZTogbnVtYmVyIHwgbnVtYmVyW10sXG4gIHsgaGFzTWFueSwgbWF4LCBtYXhSb3dzLCBtaW4sIG1pblJvd3MsIHJlcXVpcmVkLCB0IH0sXG4pID0+IHtcbiAgY29uc3QgdG9WYWxpZGF0ZTogbnVtYmVyW10gPSBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW3ZhbHVlXVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZXN0cmljdGVkLXN5bnRheFxuICBmb3IgKGNvbnN0IHZhbHVlVG9WYWxpZGF0ZSBvZiB0b1ZhbGlkYXRlKSB7XG4gICAgY29uc3QgZmxvYXRWYWx1ZSA9IHBhcnNlRmxvYXQodmFsdWVUb1ZhbGlkYXRlIGFzIHVua25vd24gYXMgc3RyaW5nKVxuICAgIGlmIChcbiAgICAgICh2YWx1ZSAmJiB0eXBlb2YgZmxvYXRWYWx1ZSAhPT0gJ251bWJlcicpIHx8XG4gICAgICAocmVxdWlyZWQgJiYgTnVtYmVyLmlzTmFOKGZsb2F0VmFsdWUpKSB8fFxuICAgICAgKHZhbHVlICYmIE51bWJlci5pc05hTihmbG9hdFZhbHVlKSlcbiAgICApIHtcbiAgICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOmVudGVyTnVtYmVyJylcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIG1heCA9PT0gJ251bWJlcicgJiYgZmxvYXRWYWx1ZSA+IG1heCkge1xuICAgICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246Z3JlYXRlclRoYW5NYXgnLCB7IGxhYmVsOiB0KCd2YWx1ZScpLCBtYXgsIHZhbHVlIH0pXG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBtaW4gPT09ICdudW1iZXInICYmIGZsb2F0VmFsdWUgPCBtaW4pIHtcbiAgICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOmxlc3NUaGFuTWluJywgeyBsYWJlbDogdCgndmFsdWUnKSwgbWluLCB2YWx1ZSB9KVxuICAgIH1cblxuICAgIGlmIChyZXF1aXJlZCAmJiB0eXBlb2YgZmxvYXRWYWx1ZSAhPT0gJ251bWJlcicpIHtcbiAgICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOnJlcXVpcmVkJylcbiAgICB9XG4gIH1cblxuICBpZiAocmVxdWlyZWQgJiYgdG9WYWxpZGF0ZS5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpyZXF1aXJlZCcpXG4gIH1cblxuICBpZiAoaGFzTWFueSA9PT0gdHJ1ZSkge1xuICAgIGlmIChtaW5Sb3dzICYmIHRvVmFsaWRhdGUubGVuZ3RoIDwgbWluUm93cykge1xuICAgICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246bGVzc1RoYW5NaW4nLCB7XG4gICAgICAgIGxhYmVsOiB0KCdyb3dzJyksXG4gICAgICAgIG1pbjogbWluUm93cyxcbiAgICAgICAgdmFsdWU6IHRvVmFsaWRhdGUubGVuZ3RoLFxuICAgICAgfSlcbiAgICB9XG5cbiAgICBpZiAobWF4Um93cyAmJiB0b1ZhbGlkYXRlLmxlbmd0aCA+IG1heFJvd3MpIHtcbiAgICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOmdyZWF0ZXJUaGFuTWF4Jywge1xuICAgICAgICBsYWJlbDogdCgncm93cycpLFxuICAgICAgICBtYXg6IG1heFJvd3MsXG4gICAgICAgIHZhbHVlOiB0b1ZhbGlkYXRlLmxlbmd0aCxcbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZXhwb3J0IGNvbnN0IHRleHQ6IFZhbGlkYXRlPHVua25vd24sIHVua25vd24sIFRleHRGaWVsZD4gPSAoXG4gIHZhbHVlOiBzdHJpbmcsXG4gIHsgbWF4TGVuZ3RoOiBmaWVsZE1heExlbmd0aCwgbWluTGVuZ3RoLCBwYXlsb2FkLCByZXF1aXJlZCwgdCB9LFxuKSA9PiB7XG4gIGxldCBtYXhMZW5ndGg6IG51bWJlclxuXG4gIGlmICh0eXBlb2YgcGF5bG9hZD8uY29uZmlnPy5kZWZhdWx0TWF4VGV4dExlbmd0aCA9PT0gJ251bWJlcicpXG4gICAgbWF4TGVuZ3RoID0gcGF5bG9hZC5jb25maWcuZGVmYXVsdE1heFRleHRMZW5ndGhcbiAgaWYgKHR5cGVvZiBmaWVsZE1heExlbmd0aCA9PT0gJ251bWJlcicpIG1heExlbmd0aCA9IGZpZWxkTWF4TGVuZ3RoXG4gIGlmICh2YWx1ZSAmJiBtYXhMZW5ndGggJiYgdmFsdWUubGVuZ3RoID4gbWF4TGVuZ3RoKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246c2hvcnRlclRoYW5NYXgnLCB7IG1heExlbmd0aCB9KVxuICB9XG5cbiAgaWYgKHZhbHVlICYmIG1pbkxlbmd0aCAmJiB2YWx1ZT8ubGVuZ3RoIDwgbWluTGVuZ3RoKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246bG9uZ2VyVGhhbk1pbicsIHsgbWluTGVuZ3RoIH0pXG4gIH1cblxuICBpZiAocmVxdWlyZWQpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJyB8fCB2YWx1ZT8ubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpyZXF1aXJlZCcpXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZXhwb3J0IGNvbnN0IHBhc3N3b3JkOiBWYWxpZGF0ZTx1bmtub3duLCB1bmtub3duLCBUZXh0RmllbGQ+ID0gKFxuICB2YWx1ZTogc3RyaW5nLFxuICB7IG1heExlbmd0aDogZmllbGRNYXhMZW5ndGgsIG1pbkxlbmd0aCwgcGF5bG9hZCwgcmVxdWlyZWQsIHQgfSxcbikgPT4ge1xuICBsZXQgbWF4TGVuZ3RoOiBudW1iZXJcblxuICBpZiAodHlwZW9mIHBheWxvYWQ/LmNvbmZpZz8uZGVmYXVsdE1heFRleHRMZW5ndGggPT09ICdudW1iZXInKVxuICAgIG1heExlbmd0aCA9IHBheWxvYWQuY29uZmlnLmRlZmF1bHRNYXhUZXh0TGVuZ3RoXG4gIGlmICh0eXBlb2YgZmllbGRNYXhMZW5ndGggPT09ICdudW1iZXInKSBtYXhMZW5ndGggPSBmaWVsZE1heExlbmd0aFxuXG4gIGlmICh2YWx1ZSAmJiBtYXhMZW5ndGggJiYgdmFsdWUubGVuZ3RoID4gbWF4TGVuZ3RoKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246c2hvcnRlclRoYW5NYXgnLCB7IG1heExlbmd0aCB9KVxuICB9XG5cbiAgaWYgKHZhbHVlICYmIG1pbkxlbmd0aCAmJiB2YWx1ZS5sZW5ndGggPCBtaW5MZW5ndGgpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpsb25nZXJUaGFuTWluJywgeyBtaW5MZW5ndGggfSlcbiAgfVxuXG4gIGlmIChyZXF1aXJlZCAmJiAhdmFsdWUpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpyZXF1aXJlZCcpXG4gIH1cblxuICByZXR1cm4gdHJ1ZVxufVxuXG5leHBvcnQgY29uc3QgZW1haWw6IFZhbGlkYXRlPHVua25vd24sIHVua25vd24sIEVtYWlsRmllbGQ+ID0gKHZhbHVlOiBzdHJpbmcsIHsgcmVxdWlyZWQsIHQgfSkgPT4ge1xuICBpZiAoKHZhbHVlICYmICEvXFxTW15cXHNAXSpAXFxTK1xcLlxcUysvLnRlc3QodmFsdWUpKSB8fCAoIXZhbHVlICYmIHJlcXVpcmVkKSkge1xuICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOmVtYWlsQWRkcmVzcycpXG4gIH1cblxuICByZXR1cm4gdHJ1ZVxufVxuXG5leHBvcnQgY29uc3QgdGV4dGFyZWE6IFZhbGlkYXRlPHVua25vd24sIHVua25vd24sIFRleHRhcmVhRmllbGQ+ID0gKFxuICB2YWx1ZTogc3RyaW5nLFxuICB7IG1heExlbmd0aDogZmllbGRNYXhMZW5ndGgsIG1pbkxlbmd0aCwgcGF5bG9hZCwgcmVxdWlyZWQsIHQgfSxcbikgPT4ge1xuICBsZXQgbWF4TGVuZ3RoOiBudW1iZXJcblxuICBpZiAodHlwZW9mIHBheWxvYWQ/LmNvbmZpZz8uZGVmYXVsdE1heFRleHRMZW5ndGggPT09ICdudW1iZXInKVxuICAgIG1heExlbmd0aCA9IHBheWxvYWQuY29uZmlnLmRlZmF1bHRNYXhUZXh0TGVuZ3RoXG4gIGlmICh0eXBlb2YgZmllbGRNYXhMZW5ndGggPT09ICdudW1iZXInKSBtYXhMZW5ndGggPSBmaWVsZE1heExlbmd0aFxuICBpZiAodmFsdWUgJiYgbWF4TGVuZ3RoICYmIHZhbHVlLmxlbmd0aCA+IG1heExlbmd0aCkge1xuICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOnNob3J0ZXJUaGFuTWF4JywgeyBtYXhMZW5ndGggfSlcbiAgfVxuXG4gIGlmICh2YWx1ZSAmJiBtaW5MZW5ndGggJiYgdmFsdWUubGVuZ3RoIDwgbWluTGVuZ3RoKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246bG9uZ2VyVGhhbk1pbicsIHsgbWluTGVuZ3RoIH0pXG4gIH1cblxuICBpZiAocmVxdWlyZWQgJiYgIXZhbHVlKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246cmVxdWlyZWQnKVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZXhwb3J0IGNvbnN0IGNvZGU6IFZhbGlkYXRlPHVua25vd24sIHVua25vd24sIENvZGVGaWVsZD4gPSAodmFsdWU6IHN0cmluZywgeyByZXF1aXJlZCwgdCB9KSA9PiB7XG4gIGlmIChyZXF1aXJlZCAmJiB2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246cmVxdWlyZWQnKVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZXhwb3J0IGNvbnN0IGpzb246IFZhbGlkYXRlPHVua25vd24sIHVua25vd24sIEpTT05GaWVsZCAmIHsganNvbkVycm9yPzogc3RyaW5nIH0+ID0gKFxuICB2YWx1ZTogc3RyaW5nLFxuICB7IGpzb25FcnJvciwgcmVxdWlyZWQsIHQgfSxcbikgPT4ge1xuICBpZiAocmVxdWlyZWQgJiYgIXZhbHVlKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246cmVxdWlyZWQnKVxuICB9XG5cbiAgaWYgKGpzb25FcnJvciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246aW52YWxpZElucHV0JylcbiAgfVxuXG4gIHJldHVybiB0cnVlXG59XG5cbmV4cG9ydCBjb25zdCBjaGVja2JveDogVmFsaWRhdGU8dW5rbm93biwgdW5rbm93biwgQ2hlY2tib3hGaWVsZD4gPSAoXG4gIHZhbHVlOiBib29sZWFuLFxuICB7IHJlcXVpcmVkLCB0IH0sXG4pID0+IHtcbiAgaWYgKCh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgIT09ICdib29sZWFuJykgfHwgKHJlcXVpcmVkICYmIHR5cGVvZiB2YWx1ZSAhPT0gJ2Jvb2xlYW4nKSkge1xuICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOnRydWVPckZhbHNlJylcbiAgfVxuXG4gIHJldHVybiB0cnVlXG59XG5cbmV4cG9ydCBjb25zdCBkYXRlOiBWYWxpZGF0ZTx1bmtub3duLCB1bmtub3duLCBEYXRlRmllbGQ+ID0gKHZhbHVlLCB7IHJlcXVpcmVkLCB0IH0pID0+IHtcbiAgaWYgKHZhbHVlICYmICFpc05hTihEYXRlLnBhcnNlKHZhbHVlLnRvU3RyaW5nKCkpKSkge1xuICAgIC8qIGVzbGludC1kaXNhYmxlLWxpbmUgKi9cbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgaWYgKHZhbHVlKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246bm90VmFsaWREYXRlJywgeyB2YWx1ZSB9KVxuICB9XG5cbiAgaWYgKHJlcXVpcmVkKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246cmVxdWlyZWQnKVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuY29uc3QgdmFsaWRhdGVGaWx0ZXJPcHRpb25zOiBWYWxpZGF0ZSA9IGFzeW5jIChcbiAgdmFsdWUsXG4gIHsgaWQsIGRhdGEsIGZpbHRlck9wdGlvbnMsIHBheWxvYWQsIHJlbGF0aW9uVG8sIHNpYmxpbmdEYXRhLCB0LCB1c2VyIH0sXG4pID0+IHtcbiAgaWYgKCFjYW5Vc2VET00gJiYgdHlwZW9mIGZpbHRlck9wdGlvbnMgIT09ICd1bmRlZmluZWQnICYmIHZhbHVlKSB7XG4gICAgY29uc3Qgb3B0aW9uczoge1xuICAgICAgW2NvbGxlY3Rpb246IHN0cmluZ106IChudW1iZXIgfCBzdHJpbmcpW11cbiAgICB9ID0ge31cblxuICAgIGNvbnN0IGNvbGxlY3Rpb25zID0gdHlwZW9mIHJlbGF0aW9uVG8gPT09ICdzdHJpbmcnID8gW3JlbGF0aW9uVG9dIDogcmVsYXRpb25Ub1xuICAgIGNvbnN0IHZhbHVlcyA9IEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiBbdmFsdWVdXG5cbiAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIGNvbGxlY3Rpb25zLm1hcChhc3luYyAoY29sbGVjdGlvbikgPT4ge1xuICAgICAgICBjb25zdCBvcHRpb25GaWx0ZXIgPVxuICAgICAgICAgIHR5cGVvZiBmaWx0ZXJPcHRpb25zID09PSAnZnVuY3Rpb24nXG4gICAgICAgICAgICA/IGF3YWl0IGZpbHRlck9wdGlvbnMoe1xuICAgICAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgICAgICAgcmVsYXRpb25UbzogY29sbGVjdGlvbixcbiAgICAgICAgICAgICAgICBzaWJsaW5nRGF0YSxcbiAgICAgICAgICAgICAgICB1c2VyLFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgOiBmaWx0ZXJPcHRpb25zXG5cbiAgICAgICAgY29uc3QgdmFsdWVJRHM6IChudW1iZXIgfCBzdHJpbmcpW10gPSBbXVxuXG4gICAgICAgIHZhbHVlcy5mb3JFYWNoKCh2YWwpID0+IHtcbiAgICAgICAgICBpZiAodHlwZW9mIHZhbCA9PT0gJ29iamVjdCcgJiYgdmFsPy52YWx1ZSkge1xuICAgICAgICAgICAgdmFsdWVJRHMucHVzaCh2YWwudmFsdWUpXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiB2YWwgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICB2YWx1ZUlEcy5wdXNoKHZhbClcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcGF5bG9hZC5maW5kKHtcbiAgICAgICAgICBjb2xsZWN0aW9uLFxuICAgICAgICAgIGRlcHRoOiAwLFxuICAgICAgICAgIGxpbWl0OiAwLFxuICAgICAgICAgIHBhZ2luYXRpb246IGZhbHNlLFxuICAgICAgICAgIHdoZXJlOiB7XG4gICAgICAgICAgICBhbmQ6IFt7IGlkOiB7IGluOiB2YWx1ZUlEcyB9IH0sIG9wdGlvbkZpbHRlcl0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcblxuICAgICAgICBvcHRpb25zW2NvbGxlY3Rpb25dID0gcmVzdWx0LmRvY3MubWFwKChkb2MpID0+IGRvYy5pZClcbiAgICAgIH0pLFxuICAgIClcblxuICAgIGNvbnN0IGludmFsaWRSZWxhdGlvbnNoaXBzID0gdmFsdWVzLmZpbHRlcigodmFsKSA9PiB7XG4gICAgICBsZXQgY29sbGVjdGlvbjogc3RyaW5nXG4gICAgICBsZXQgcmVxdWVzdGVkSUQ6IG51bWJlciB8IHN0cmluZ1xuXG4gICAgICBpZiAodHlwZW9mIHJlbGF0aW9uVG8gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGNvbGxlY3Rpb24gPSByZWxhdGlvblRvXG5cbiAgICAgICAgaWYgKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiB2YWwgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgcmVxdWVzdGVkSUQgPSB2YWxcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShyZWxhdGlvblRvKSAmJiB0eXBlb2YgdmFsID09PSAnb2JqZWN0JyAmJiB2YWw/LnJlbGF0aW9uVG8pIHtcbiAgICAgICAgY29sbGVjdGlvbiA9IHZhbC5yZWxhdGlvblRvXG4gICAgICAgIHJlcXVlc3RlZElEID0gdmFsLnZhbHVlXG4gICAgICB9XG5cbiAgICAgIHJldHVybiBvcHRpb25zW2NvbGxlY3Rpb25dLmluZGV4T2YocmVxdWVzdGVkSUQpID09PSAtMVxuICAgIH0pXG5cbiAgICBpZiAoaW52YWxpZFJlbGF0aW9uc2hpcHMubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIGludmFsaWRSZWxhdGlvbnNoaXBzLnJlZHVjZSgoZXJyLCBpbnZhbGlkLCBpKSA9PiB7XG4gICAgICAgIHJldHVybiBgJHtlcnJ9ICR7SlNPTi5zdHJpbmdpZnkoaW52YWxpZCl9JHtcbiAgICAgICAgICBpbnZhbGlkUmVsYXRpb25zaGlwcy5sZW5ndGggPT09IGkgKyAxID8gJywnIDogJydcbiAgICAgICAgfSBgXG4gICAgICB9LCB0KCd2YWxpZGF0aW9uOmludmFsaWRTZWxlY3Rpb25zJykpIGFzIHN0cmluZ1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICByZXR1cm4gdHJ1ZVxufVxuXG5leHBvcnQgY29uc3QgdXBsb2FkOiBWYWxpZGF0ZTx1bmtub3duLCB1bmtub3duLCBVcGxvYWRGaWVsZD4gPSAodmFsdWU6IHN0cmluZywgb3B0aW9ucykgPT4ge1xuICBpZiAoIXZhbHVlICYmIG9wdGlvbnMucmVxdWlyZWQpIHtcbiAgICByZXR1cm4gb3B0aW9ucy50KCd2YWxpZGF0aW9uOnJlcXVpcmVkJylcbiAgfVxuXG4gIGlmICghY2FuVXNlRE9NICYmIHR5cGVvZiB2YWx1ZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdmFsdWUgIT09IG51bGwpIHtcbiAgICBjb25zdCBpZEZpZWxkID0gb3B0aW9ucy5wYXlsb2FkLmNvbGxlY3Rpb25zW29wdGlvbnMucmVsYXRpb25Ub10uY29uZmlnLmZpZWxkcy5maW5kKFxuICAgICAgKGZpZWxkKSA9PiBmaWVsZEFmZmVjdHNEYXRhKGZpZWxkKSAmJiBmaWVsZC5uYW1lID09PSAnaWQnLFxuICAgIClcbiAgICBjb25zdCB0eXBlID0gZ2V0SURUeXBlKGlkRmllbGQpXG5cbiAgICBpZiAoIWlzVmFsaWRJRCh2YWx1ZSwgdHlwZSkpIHtcbiAgICAgIHJldHVybiBvcHRpb25zLnQoJ3ZhbGlkYXRpb246dmFsaWRVcGxvYWRJRCcpXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHZhbGlkYXRlRmlsdGVyT3B0aW9ucyh2YWx1ZSwgb3B0aW9ucylcbn1cblxuZXhwb3J0IGNvbnN0IHJlbGF0aW9uc2hpcDogVmFsaWRhdGU8dW5rbm93biwgdW5rbm93biwgUmVsYXRpb25zaGlwRmllbGQ+ID0gYXN5bmMgKFxuICB2YWx1ZTogUmVsYXRpb25zaGlwVmFsdWUsXG4gIG9wdGlvbnMsXG4pID0+IHtcbiAgY29uc3QgeyBtYXhSb3dzLCBtaW5Sb3dzLCBwYXlsb2FkLCByZWxhdGlvblRvLCByZXF1aXJlZCwgdCB9ID0gb3B0aW9uc1xuXG4gIGlmICgoIXZhbHVlIHx8IChBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPT09IDApKSAmJiByZXF1aXJlZCkge1xuICAgIHJldHVybiBvcHRpb25zLnQoJ3ZhbGlkYXRpb246cmVxdWlyZWQnKVxuICB9XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgaWYgKG1pblJvd3MgJiYgdmFsdWUubGVuZ3RoIDwgbWluUm93cykge1xuICAgICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246bGVzc1RoYW5NaW4nLCB7IGxhYmVsOiB0KCdyb3dzJyksIG1pbjogbWluUm93cywgdmFsdWU6IHZhbHVlLmxlbmd0aCB9KVxuICAgIH1cblxuICAgIGlmIChtYXhSb3dzICYmIHZhbHVlLmxlbmd0aCA+IG1heFJvd3MpIHtcbiAgICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOmdyZWF0ZXJUaGFuTWF4JywgeyBsYWJlbDogdCgncm93cycpLCBtYXg6IG1heFJvd3MsIHZhbHVlOiB2YWx1ZS5sZW5ndGggfSlcbiAgICB9XG4gIH1cblxuICBpZiAoIWNhblVzZURPTSAmJiB0eXBlb2YgdmFsdWUgIT09ICd1bmRlZmluZWQnICYmIHZhbHVlICE9PSBudWxsKSB7XG4gICAgY29uc3QgdmFsdWVzID0gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFt2YWx1ZV1cblxuICAgIGNvbnN0IGludmFsaWRSZWxhdGlvbnNoaXBzID0gdmFsdWVzLmZpbHRlcigodmFsKSA9PiB7XG4gICAgICBsZXQgY29sbGVjdGlvbjogc3RyaW5nXG4gICAgICBsZXQgcmVxdWVzdGVkSURcblxuICAgICAgaWYgKHR5cGVvZiByZWxhdGlvblRvID09PSAnc3RyaW5nJykge1xuICAgICAgICBjb2xsZWN0aW9uID0gcmVsYXRpb25Ub1xuXG4gICAgICAgIC8vIGN1c3RvbSBpZFxuICAgICAgICBpZiAodmFsKSB7XG4gICAgICAgICAgcmVxdWVzdGVkSUQgPSB2YWxcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShyZWxhdGlvblRvKSAmJiB0eXBlb2YgdmFsID09PSAnb2JqZWN0JyAmJiB2YWw/LnJlbGF0aW9uVG8pIHtcbiAgICAgICAgY29sbGVjdGlvbiA9IHZhbC5yZWxhdGlvblRvXG4gICAgICAgIHJlcXVlc3RlZElEID0gdmFsLnZhbHVlXG4gICAgICB9XG5cbiAgICAgIGlmIChyZXF1ZXN0ZWRJRCA9PT0gbnVsbCkgcmV0dXJuIGZhbHNlXG5cbiAgICAgIGNvbnN0IGlkRmllbGQgPSBwYXlsb2FkLmNvbGxlY3Rpb25zW2NvbGxlY3Rpb25dPy5jb25maWc/LmZpZWxkcz8uZmluZChcbiAgICAgICAgKGZpZWxkKSA9PiBmaWVsZEFmZmVjdHNEYXRhKGZpZWxkKSAmJiBmaWVsZC5uYW1lID09PSAnaWQnLFxuICAgICAgKVxuICAgICAgbGV0IHR5cGVcblxuICAgICAgaWYgKGlkRmllbGQpIHtcbiAgICAgICAgdHlwZSA9IGlkRmllbGQudHlwZSA9PT0gJ251bWJlcicgPyAnbnVtYmVyJyA6ICd0ZXh0J1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdHlwZSA9ICdPYmplY3RJRCdcbiAgICAgIH1cblxuICAgICAgcmV0dXJuICFpc1ZhbGlkSUQocmVxdWVzdGVkSUQsIHR5cGUpXG4gICAgfSlcblxuICAgIGlmIChpbnZhbGlkUmVsYXRpb25zaGlwcy5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gYFRoaXMgZmllbGQgaGFzIHRoZSBmb2xsb3dpbmcgaW52YWxpZCBzZWxlY3Rpb25zOiAke2ludmFsaWRSZWxhdGlvbnNoaXBzXG4gICAgICAgIC5tYXAoKGVyciwgaW52YWxpZCkgPT4ge1xuICAgICAgICAgIHJldHVybiBgJHtlcnJ9ICR7SlNPTi5zdHJpbmdpZnkoaW52YWxpZCl9YFxuICAgICAgICB9KVxuICAgICAgICAuam9pbignLCAnKX1gXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHZhbGlkYXRlRmlsdGVyT3B0aW9ucyh2YWx1ZSwgb3B0aW9ucylcbn1cblxuZXhwb3J0IGNvbnN0IGFycmF5OiBWYWxpZGF0ZTx1bmtub3duLCB1bmtub3duLCBBcnJheUZpZWxkPiA9IChcbiAgdmFsdWUsXG4gIHsgbWF4Um93cywgbWluUm93cywgcmVxdWlyZWQsIHQgfSxcbikgPT4ge1xuICBjb25zdCBhcnJheUxlbmd0aCA9IEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUubGVuZ3RoIDogMFxuXG4gIGlmIChtaW5Sb3dzICYmIGFycmF5TGVuZ3RoIDwgbWluUm93cykge1xuICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOnJlcXVpcmVzQXRMZWFzdCcsIHsgY291bnQ6IG1pblJvd3MsIGxhYmVsOiB0KCdyb3dzJykgfSlcbiAgfVxuXG4gIGlmIChtYXhSb3dzICYmIGFycmF5TGVuZ3RoID4gbWF4Um93cykge1xuICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOnJlcXVpcmVzTm9Nb3JlVGhhbicsIHsgY291bnQ6IG1heFJvd3MsIGxhYmVsOiB0KCdyb3dzJykgfSlcbiAgfVxuXG4gIGlmICghYXJyYXlMZW5ndGggJiYgcmVxdWlyZWQpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpyZXF1aXJlc0F0TGVhc3QnLCB7IGNvdW50OiAxLCBsYWJlbDogdCgncm93JykgfSlcbiAgfVxuXG4gIHJldHVybiB0cnVlXG59XG5cbmV4cG9ydCBjb25zdCBzZWxlY3Q6IFZhbGlkYXRlPHVua25vd24sIHVua25vd24sIFNlbGVjdEZpZWxkPiA9IChcbiAgdmFsdWUsXG4gIHsgaGFzTWFueSwgb3B0aW9ucywgcmVxdWlyZWQsIHQgfSxcbikgPT4ge1xuICBpZiAoXG4gICAgQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiZcbiAgICB2YWx1ZS5zb21lKFxuICAgICAgKGlucHV0KSA9PlxuICAgICAgICAhb3B0aW9ucy5zb21lKFxuICAgICAgICAgIChvcHRpb24pID0+IG9wdGlvbiA9PT0gaW5wdXQgfHwgKHR5cGVvZiBvcHRpb24gIT09ICdzdHJpbmcnICYmIG9wdGlvbj8udmFsdWUgPT09IGlucHV0KSxcbiAgICAgICAgKSxcbiAgICApXG4gICkge1xuICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOmludmFsaWRTZWxlY3Rpb24nKVxuICB9XG5cbiAgaWYgKFxuICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiZcbiAgICAhb3B0aW9ucy5zb21lKFxuICAgICAgKG9wdGlvbikgPT4gb3B0aW9uID09PSB2YWx1ZSB8fCAodHlwZW9mIG9wdGlvbiAhPT0gJ3N0cmluZycgJiYgb3B0aW9uLnZhbHVlID09PSB2YWx1ZSksXG4gICAgKVxuICApIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjppbnZhbGlkU2VsZWN0aW9uJylcbiAgfVxuXG4gIGlmIChcbiAgICByZXF1aXJlZCAmJlxuICAgICh0eXBlb2YgdmFsdWUgPT09ICd1bmRlZmluZWQnIHx8XG4gICAgICB2YWx1ZSA9PT0gbnVsbCB8fFxuICAgICAgKGhhc01hbnkgJiYgQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgKHZhbHVlIGFzIFtdKT8ubGVuZ3RoID09PSAwKSlcbiAgKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246cmVxdWlyZWQnKVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZXhwb3J0IGNvbnN0IHJhZGlvOiBWYWxpZGF0ZTx1bmtub3duLCB1bmtub3duLCBSYWRpb0ZpZWxkPiA9ICh2YWx1ZSwgeyBvcHRpb25zLCByZXF1aXJlZCwgdCB9KSA9PiB7XG4gIGlmICh2YWx1ZSkge1xuICAgIGNvbnN0IHZhbHVlTWF0Y2hlc09wdGlvbiA9IG9wdGlvbnMuc29tZShcbiAgICAgIChvcHRpb24pID0+IG9wdGlvbiA9PT0gdmFsdWUgfHwgKHR5cGVvZiBvcHRpb24gIT09ICdzdHJpbmcnICYmIG9wdGlvbi52YWx1ZSA9PT0gdmFsdWUpLFxuICAgIClcbiAgICByZXR1cm4gdmFsdWVNYXRjaGVzT3B0aW9uIHx8IHQoJ3ZhbGlkYXRpb246aW52YWxpZFNlbGVjdGlvbicpXG4gIH1cblxuICByZXR1cm4gcmVxdWlyZWQgPyB0KCd2YWxpZGF0aW9uOnJlcXVpcmVkJykgOiB0cnVlXG59XG5cbmV4cG9ydCBjb25zdCBibG9ja3M6IFZhbGlkYXRlPHVua25vd24sIHVua25vd24sIEJsb2NrRmllbGQ+ID0gKFxuICB2YWx1ZSxcbiAgeyBtYXhSb3dzLCBtaW5Sb3dzLCByZXF1aXJlZCwgdCB9LFxuKSA9PiB7XG4gIGNvbnN0IGFycmF5TGVuZ3RoID0gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZS5sZW5ndGggOiAwXG5cbiAgaWYgKG1pblJvd3MgJiYgYXJyYXlMZW5ndGggPCBtaW5Sb3dzKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246cmVxdWlyZXNBdExlYXN0JywgeyBjb3VudDogbWluUm93cywgbGFiZWw6IHQoJ3Jvd3MnKSB9KVxuICB9XG5cbiAgaWYgKG1heFJvd3MgJiYgYXJyYXlMZW5ndGggPiBtYXhSb3dzKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246cmVxdWlyZXNOb01vcmVUaGFuJywgeyBjb3VudDogbWF4Um93cywgbGFiZWw6IHQoJ3Jvd3MnKSB9KVxuICB9XG5cbiAgaWYgKCFhcnJheUxlbmd0aCAmJiByZXF1aXJlZCkge1xuICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOnJlcXVpcmVzQXRMZWFzdCcsIHsgY291bnQ6IDEsIGxhYmVsOiB0KCdyb3cnKSB9KVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZXhwb3J0IGNvbnN0IHBvaW50OiBWYWxpZGF0ZTx1bmtub3duLCB1bmtub3duLCBQb2ludEZpZWxkPiA9IChcbiAgdmFsdWU6IFtudW1iZXIgfCBzdHJpbmcsIG51bWJlciB8IHN0cmluZ10gPSBbJycsICcnXSxcbiAgeyByZXF1aXJlZCwgdCB9LFxuKSA9PiB7XG4gIGNvbnN0IGxuZyA9IHBhcnNlRmxvYXQoU3RyaW5nKHZhbHVlWzBdKSlcbiAgY29uc3QgbGF0ID0gcGFyc2VGbG9hdChTdHJpbmcodmFsdWVbMV0pKVxuICBpZiAoXG4gICAgcmVxdWlyZWQgJiZcbiAgICAoKHZhbHVlWzBdICYmIHZhbHVlWzFdICYmIHR5cGVvZiBsbmcgIT09ICdudW1iZXInICYmIHR5cGVvZiBsYXQgIT09ICdudW1iZXInKSB8fFxuICAgICAgTnVtYmVyLmlzTmFOKGxuZykgfHxcbiAgICAgIE51bWJlci5pc05hTihsYXQpIHx8XG4gICAgICAoQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUubGVuZ3RoICE9PSAyKSlcbiAgKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246cmVxdWlyZXNUd29OdW1iZXJzJylcbiAgfVxuXG4gIGlmICgodmFsdWVbMV0gJiYgTnVtYmVyLmlzTmFOKGxuZykpIHx8ICh2YWx1ZVswXSAmJiBOdW1iZXIuaXNOYU4obGF0KSkpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjppbnZhbGlkSW5wdXQnKVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZXhwb3J0IGRlZmF1bHQge1xuICBhcnJheSxcbiAgYmxvY2tzLFxuICBjaGVja2JveCxcbiAgY29kZSxcbiAgZGF0ZSxcbiAgZW1haWwsXG4gIGpzb24sXG4gIG51bWJlcixcbiAgcGFzc3dvcmQsXG4gIHBvaW50LFxuICByYWRpbyxcbiAgcmVsYXRpb25zaGlwLFxuICBzZWxlY3QsXG4gIHRleHQsXG4gIHRleHRhcmVhLFxuICB1cGxvYWQsXG59XG4iXSwibmFtZXMiOlsibnVtYmVyIiwidGV4dCIsInBhc3N3b3JkIiwiZW1haWwiLCJ0ZXh0YXJlYSIsImNvZGUiLCJqc29uIiwiY2hlY2tib3giLCJkYXRlIiwidXBsb2FkIiwicmVsYXRpb25zaGlwIiwiYXJyYXkiLCJzZWxlY3QiLCJyYWRpbyIsImJsb2NrcyIsInBvaW50IiwidmFsdWUiLCJoYXNNYW55IiwibWF4IiwibWF4Um93cyIsIm1pbiIsIm1pblJvd3MiLCJyZXF1aXJlZCIsInQiLCJ0b1ZhbGlkYXRlIiwiQXJyYXkiLCJpc0FycmF5IiwidmFsdWVUb1ZhbGlkYXRlIiwiZmxvYXRWYWx1ZSIsInBhcnNlRmxvYXQiLCJOdW1iZXIiLCJpc05hTiIsImxhYmVsIiwibGVuZ3RoIiwibWF4TGVuZ3RoIiwiZmllbGRNYXhMZW5ndGgiLCJtaW5MZW5ndGgiLCJwYXlsb2FkIiwiY29uZmlnIiwiZGVmYXVsdE1heFRleHRMZW5ndGgiLCJ0ZXN0IiwidW5kZWZpbmVkIiwianNvbkVycm9yIiwiRGF0ZSIsInBhcnNlIiwidG9TdHJpbmciLCJ2YWxpZGF0ZUZpbHRlck9wdGlvbnMiLCJpZCIsImRhdGEiLCJmaWx0ZXJPcHRpb25zIiwicmVsYXRpb25UbyIsInNpYmxpbmdEYXRhIiwidXNlciIsImNhblVzZURPTSIsIm9wdGlvbnMiLCJjb2xsZWN0aW9ucyIsInZhbHVlcyIsIlByb21pc2UiLCJhbGwiLCJtYXAiLCJjb2xsZWN0aW9uIiwib3B0aW9uRmlsdGVyIiwidmFsdWVJRHMiLCJmb3JFYWNoIiwidmFsIiwicHVzaCIsInJlc3VsdCIsImZpbmQiLCJkZXB0aCIsImxpbWl0IiwicGFnaW5hdGlvbiIsIndoZXJlIiwiYW5kIiwiaW4iLCJkb2NzIiwiZG9jIiwiaW52YWxpZFJlbGF0aW9uc2hpcHMiLCJmaWx0ZXIiLCJyZXF1ZXN0ZWRJRCIsImluZGV4T2YiLCJyZWR1Y2UiLCJlcnIiLCJpbnZhbGlkIiwiaSIsIkpTT04iLCJzdHJpbmdpZnkiLCJpZEZpZWxkIiwiZmllbGRzIiwiZmllbGQiLCJmaWVsZEFmZmVjdHNEYXRhIiwibmFtZSIsInR5cGUiLCJnZXRJRFR5cGUiLCJpc1ZhbGlkSUQiLCJqb2luIiwiYXJyYXlMZW5ndGgiLCJjb3VudCIsInNvbWUiLCJpbnB1dCIsIm9wdGlvbiIsInZhbHVlTWF0Y2hlc09wdGlvbiIsImxuZyIsIlN0cmluZyIsImxhdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7SUF5QmFBLE1BQU07ZUFBTkE7O0lBdURBQyxJQUFJO2VBQUpBOztJQTBCQUMsUUFBUTtlQUFSQTs7SUF5QkFDLEtBQUs7ZUFBTEE7O0lBUUFDLFFBQVE7ZUFBUkE7O0lBd0JBQyxJQUFJO2VBQUpBOztJQVFBQyxJQUFJO2VBQUpBOztJQWVBQyxRQUFRO2VBQVJBOztJQVdBQyxJQUFJO2VBQUpBOztJQXNHQUMsTUFBTTtlQUFOQTs7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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "payload",
3
- "version": "2.0.0-beta.13",
3
+ "version": "2.0.0-beta.15",
4
4
  "description": "Node, React and MongoDB Headless CMS and Application Framework",
5
5
  "license": "MIT",
6
6
  "main": "./dist/index.js",
@@ -1,9 +0,0 @@
1
- export declare const useLivePreview: <T extends unknown>(props: {
2
- depth?: number;
3
- initialPage: T;
4
- serverURL: string;
5
- }) => {
6
- data: T;
7
- isLoading: boolean;
8
- };
9
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/admin/components/views/LivePreview/useLivePreview/index.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,cAAc;YACjB,MAAM;;eAEH,MAAM;;;eAGN,OAAO;CA0CnB,CAAA"}
@@ -1,53 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "useLivePreview", {
6
- enumerable: true,
7
- get: function() {
8
- return useLivePreview;
9
- }
10
- });
11
- const _react = require("react");
12
- const _mergeData = require("./mergeData");
13
- const useLivePreview = (props)=>{
14
- const { depth = 0, initialPage, serverURL } = props;
15
- const [data, setData] = (0, _react.useState)(initialPage);
16
- const [isLoading, setIsLoading] = (0, _react.useState)(true);
17
- const handleMessage = (0, _react.useCallback)(async (event)=>{
18
- if (event.origin === serverURL && event.data) {
19
- const eventData = JSON.parse(event?.data);
20
- if (eventData.type === 'livePreview') {
21
- const mergedData = await (0, _mergeData.mergeLivePreviewData)({
22
- depth,
23
- existingData: data,
24
- fieldSchema: eventData.fieldSchemaJSON,
25
- incomingData: eventData.data,
26
- serverURL
27
- });
28
- setData(mergedData);
29
- setIsLoading(false);
30
- }
31
- }
32
- }, [
33
- serverURL,
34
- data,
35
- depth
36
- ]);
37
- (0, _react.useEffect)(()=>{
38
- window.addEventListener('message', handleMessage);
39
- window.parent.postMessage('ready', serverURL);
40
- return ()=>{
41
- window.removeEventListener('message', handleMessage);
42
- };
43
- }, [
44
- serverURL,
45
- handleMessage
46
- ]);
47
- return {
48
- data,
49
- isLoading
50
- };
51
- };
52
-
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hZG1pbi9jb21wb25lbnRzL3ZpZXdzL0xpdmVQcmV2aWV3L3VzZUxpdmVQcmV2aWV3L2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5cbmltcG9ydCB7IG1lcmdlTGl2ZVByZXZpZXdEYXRhIH0gZnJvbSAnLi9tZXJnZURhdGEnXG5cbi8vIFRvIHByZXZlbnQgdGhlIGZsaWNrZXIgb2YgbWlzc2luZyBkYXRhIG9uIGluaXRpYWwgbG9hZCxcbi8vIHlvdSBjYW4gcGFzcyBpbiB0aGUgaW5pdGlhbCBwYWdlIGRhdGEgZnJvbSB0aGUgc2VydmVyXG4vLyBUbyBwcmV2ZW50IHRoZSBmbGlja2VyIG9mIHN0YWxlIGRhdGEgd2hpbGUgdGhlIHBvc3QgbWVzc2FnZSBpcyBiZWluZyBzZW50LFxuLy8geW91IGNhbiBjb25kaXRpb25hbGx5IHJlbmRlciBsb2FkaW5nIFVJIGJhc2VkIG9uIHRoZSBgaXNMb2FkaW5nYCBzdGF0ZVxuXG5leHBvcnQgY29uc3QgdXNlTGl2ZVByZXZpZXcgPSA8VCBleHRlbmRzIGFueT4ocHJvcHM6IHtcbiAgZGVwdGg/OiBudW1iZXJcbiAgaW5pdGlhbFBhZ2U6IFRcbiAgc2VydmVyVVJMOiBzdHJpbmdcbn0pOiB7XG4gIGRhdGE6IFRcbiAgaXNMb2FkaW5nOiBib29sZWFuXG59ID0+IHtcbiAgY29uc3QgeyBkZXB0aCA9IDAsIGluaXRpYWxQYWdlLCBzZXJ2ZXJVUkwgfSA9IHByb3BzXG4gIGNvbnN0IFtkYXRhLCBzZXREYXRhXSA9IHVzZVN0YXRlPFQ+KGluaXRpYWxQYWdlKVxuICBjb25zdCBbaXNMb2FkaW5nLCBzZXRJc0xvYWRpbmddID0gdXNlU3RhdGU8Ym9vbGVhbj4odHJ1ZSlcblxuICBjb25zdCBoYW5kbGVNZXNzYWdlID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKGV2ZW50OiBNZXNzYWdlRXZlbnQpID0+IHtcbiAgICAgIGlmIChldmVudC5vcmlnaW4gPT09IHNlcnZlclVSTCAmJiBldmVudC5kYXRhKSB7XG4gICAgICAgIGNvbnN0IGV2ZW50RGF0YSA9IEpTT04ucGFyc2UoZXZlbnQ/LmRhdGEpXG5cbiAgICAgICAgaWYgKGV2ZW50RGF0YS50eXBlID09PSAnbGl2ZVByZXZpZXcnKSB7XG4gICAgICAgICAgY29uc3QgbWVyZ2VkRGF0YSA9IGF3YWl0IG1lcmdlTGl2ZVByZXZpZXdEYXRhPFQ+KHtcbiAgICAgICAgICAgIGRlcHRoLFxuICAgICAgICAgICAgZXhpc3RpbmdEYXRhOiBkYXRhLFxuICAgICAgICAgICAgZmllbGRTY2hlbWE6IGV2ZW50RGF0YS5maWVsZFNjaGVtYUpTT04sXG4gICAgICAgICAgICBpbmNvbWluZ0RhdGE6IGV2ZW50RGF0YS5kYXRhLFxuICAgICAgICAgICAgc2VydmVyVVJMLFxuICAgICAgICAgIH0pXG5cbiAgICAgICAgICBzZXREYXRhKG1lcmdlZERhdGEpXG5cbiAgICAgICAgICBzZXRJc0xvYWRpbmcoZmFsc2UpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIFtzZXJ2ZXJVUkwsIGRhdGEsIGRlcHRoXSxcbiAgKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBoYW5kbGVNZXNzYWdlKVxuICAgIHdpbmRvdy5wYXJlbnQucG9zdE1lc3NhZ2UoJ3JlYWR5Jywgc2VydmVyVVJMKVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgaGFuZGxlTWVzc2FnZSlcbiAgICB9XG4gIH0sIFtzZXJ2ZXJVUkwsIGhhbmRsZU1lc3NhZ2VdKVxuXG4gIHJldHVybiB7XG4gICAgZGF0YSxcbiAgICBpc0xvYWRpbmcsXG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJ1c2VMaXZlUHJldmlldyIsInByb3BzIiwiZGVwdGgiLCJpbml0aWFsUGFnZSIsInNlcnZlclVSTCIsImRhdGEiLCJzZXREYXRhIiwidXNlU3RhdGUiLCJpc0xvYWRpbmciLCJzZXRJc0xvYWRpbmciLCJoYW5kbGVNZXNzYWdlIiwidXNlQ2FsbGJhY2siLCJldmVudCIsIm9yaWdpbiIsImV2ZW50RGF0YSIsIkpTT04iLCJwYXJzZSIsInR5cGUiLCJtZXJnZWREYXRhIiwibWVyZ2VMaXZlUHJldmlld0RhdGEiLCJleGlzdGluZ0RhdGEiLCJmaWVsZFNjaGVtYSIsImZpZWxkU2NoZW1hSlNPTiIsImluY29taW5nRGF0YSIsInVzZUVmZmVjdCIsIndpbmRvdyIsImFkZEV2ZW50TGlzdGVuZXIiLCJwYXJlbnQiLCJwb3N0TWVzc2FnZSIsInJlbW92ZUV2ZW50TGlzdGVuZXIiXSwibWFwcGluZ3MiOiI7Ozs7K0JBU2FBOzs7ZUFBQUE7Ozt1QkFUb0M7MkJBRVo7QUFPOUIsTUFBTUEsaUJBQWlCLENBQWdCQztJQVE1QyxNQUFNLEVBQUVDLFFBQVEsQ0FBQyxFQUFFQyxXQUFXLEVBQUVDLFNBQVMsRUFBRSxHQUFHSDtJQUM5QyxNQUFNLENBQUNJLE1BQU1DLFFBQVEsR0FBR0MsSUFBQUEsZUFBUSxFQUFJSjtJQUNwQyxNQUFNLENBQUNLLFdBQVdDLGFBQWEsR0FBR0YsSUFBQUEsZUFBUSxFQUFVO0lBRXBELE1BQU1HLGdCQUFnQkMsSUFBQUEsa0JBQVcsRUFDL0IsT0FBT0M7UUFDTCxJQUFJQSxNQUFNQyxNQUFNLEtBQUtULGFBQWFRLE1BQU1QLElBQUksRUFBRTtZQUM1QyxNQUFNUyxZQUFZQyxLQUFLQyxLQUFLLENBQUNKLE9BQU9QO1lBRXBDLElBQUlTLFVBQVVHLElBQUksS0FBSyxlQUFlO2dCQUNwQyxNQUFNQyxhQUFhLE1BQU1DLElBQUFBLCtCQUFvQixFQUFJO29CQUMvQ2pCO29CQUNBa0IsY0FBY2Y7b0JBQ2RnQixhQUFhUCxVQUFVUSxlQUFlO29CQUN0Q0MsY0FBY1QsVUFBVVQsSUFBSTtvQkFDNUJEO2dCQUNGO2dCQUVBRSxRQUFRWTtnQkFFUlQsYUFBYTtZQUNmO1FBQ0Y7SUFDRixHQUNBO1FBQUNMO1FBQVdDO1FBQU1IO0tBQU07SUFHMUJzQixJQUFBQSxnQkFBUyxFQUFDO1FBQ1JDLE9BQU9DLGdCQUFnQixDQUFDLFdBQVdoQjtRQUNuQ2UsT0FBT0UsTUFBTSxDQUFDQyxXQUFXLENBQUMsU0FBU3hCO1FBRW5DLE9BQU87WUFDTHFCLE9BQU9JLG1CQUFtQixDQUFDLFdBQVduQjtRQUN4QztJQUNGLEdBQUc7UUFBQ047UUFBV007S0FBYztJQUU3QixPQUFPO1FBQ0xMO1FBQ0FHO0lBQ0Y7QUFDRiJ9
@@ -1,10 +0,0 @@
1
- export type MergeLiveDataArgs<T> = {
2
- apiRoute?: string;
3
- depth: number;
4
- existingData: T;
5
- fieldSchema: Record<string, unknown>[];
6
- incomingData: T;
7
- serverURL: string;
8
- };
9
- export declare const mergeLivePreviewData: <T>({ apiRoute, depth, existingData, fieldSchema, incomingData, serverURL, }: MergeLiveDataArgs<T>) => Promise<T>;
10
- //# sourceMappingURL=mergeData.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mergeData.d.ts","sourceRoot":"","sources":["../../../../../../src/admin/components/views/LivePreview/useLivePreview/mergeData.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,iBAAiB,CAAC,CAAC,IAAI;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,YAAY,EAAE,CAAC,CAAA;IACf,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IACtC,YAAY,EAAE,CAAC,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,eAAO,MAAM,oBAAoB,mHAyBhC,CAAA"}
@@ -1,30 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "mergeLivePreviewData", {
6
- enumerable: true,
7
- get: function() {
8
- return mergeLivePreviewData;
9
- }
10
- });
11
- const _traverseFields = require("./traverseFields");
12
- const mergeLivePreviewData = async ({ apiRoute, depth, existingData, fieldSchema, incomingData, serverURL })=>{
13
- const result = {
14
- ...existingData
15
- };
16
- const populationPromises = [];
17
- (0, _traverseFields.traverseFields)({
18
- apiRoute,
19
- depth,
20
- fieldSchema,
21
- incomingData,
22
- populationPromises,
23
- result,
24
- serverURL
25
- });
26
- await Promise.all(populationPromises);
27
- return result;
28
- };
29
-
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hZG1pbi9jb21wb25lbnRzL3ZpZXdzL0xpdmVQcmV2aWV3L3VzZUxpdmVQcmV2aWV3L21lcmdlRGF0YS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0cmF2ZXJzZUZpZWxkcyB9IGZyb20gJy4vdHJhdmVyc2VGaWVsZHMnXG5cbmV4cG9ydCB0eXBlIE1lcmdlTGl2ZURhdGFBcmdzPFQ+ID0ge1xuICBhcGlSb3V0ZT86IHN0cmluZ1xuICBkZXB0aDogbnVtYmVyXG4gIGV4aXN0aW5nRGF0YTogVFxuICBmaWVsZFNjaGVtYTogUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXVxuICBpbmNvbWluZ0RhdGE6IFRcbiAgc2VydmVyVVJMOiBzdHJpbmdcbn1cblxuZXhwb3J0IGNvbnN0IG1lcmdlTGl2ZVByZXZpZXdEYXRhID0gYXN5bmMgPFQ+KHtcbiAgYXBpUm91dGUsXG4gIGRlcHRoLFxuICBleGlzdGluZ0RhdGEsXG4gIGZpZWxkU2NoZW1hLFxuICBpbmNvbWluZ0RhdGEsXG4gIHNlcnZlclVSTCxcbn06IE1lcmdlTGl2ZURhdGFBcmdzPFQ+KTogUHJvbWlzZTxUPiA9PiB7XG4gIGNvbnN0IHJlc3VsdCA9IHsgLi4uZXhpc3RpbmdEYXRhIH1cblxuICBjb25zdCBwb3B1bGF0aW9uUHJvbWlzZXM6IFByb21pc2U8dm9pZD5bXSA9IFtdXG5cbiAgdHJhdmVyc2VGaWVsZHMoe1xuICAgIGFwaVJvdXRlLFxuICAgIGRlcHRoLFxuICAgIGZpZWxkU2NoZW1hLFxuICAgIGluY29taW5nRGF0YSxcbiAgICBwb3B1bGF0aW9uUHJvbWlzZXMsXG4gICAgcmVzdWx0LFxuICAgIHNlcnZlclVSTCxcbiAgfSlcblxuICBhd2FpdCBQcm9taXNlLmFsbChwb3B1bGF0aW9uUHJvbWlzZXMpXG5cbiAgcmV0dXJuIHJlc3VsdFxufVxuIl0sIm5hbWVzIjpbIm1lcmdlTGl2ZVByZXZpZXdEYXRhIiwiYXBpUm91dGUiLCJkZXB0aCIsImV4aXN0aW5nRGF0YSIsImZpZWxkU2NoZW1hIiwiaW5jb21pbmdEYXRhIiwic2VydmVyVVJMIiwicmVzdWx0IiwicG9wdWxhdGlvblByb21pc2VzIiwidHJhdmVyc2VGaWVsZHMiLCJQcm9taXNlIiwiYWxsIl0sIm1hcHBpbmdzIjoiOzs7OytCQVdhQTs7O2VBQUFBOzs7Z0NBWGtCO0FBV3hCLE1BQU1BLHVCQUF1QixPQUFVLEVBQzVDQyxRQUFRLEVBQ1JDLEtBQUssRUFDTEMsWUFBWSxFQUNaQyxXQUFXLEVBQ1hDLFlBQVksRUFDWkMsU0FBUyxFQUNZO0lBQ3JCLE1BQU1DLFNBQVM7UUFBRSxHQUFHSixZQUFZO0lBQUM7SUFFakMsTUFBTUsscUJBQXNDLEVBQUU7SUFFOUNDLElBQUFBLDhCQUFjLEVBQUM7UUFDYlI7UUFDQUM7UUFDQUU7UUFDQUM7UUFDQUc7UUFDQUQ7UUFDQUQ7SUFDRjtJQUVBLE1BQU1JLFFBQVFDLEdBQUcsQ0FBQ0g7SUFFbEIsT0FBT0Q7QUFDVCJ9
@@ -1,12 +0,0 @@
1
- type Args = {
2
- accessor: number | string;
3
- apiRoute?: string;
4
- collection: string;
5
- depth: number;
6
- id: number | string;
7
- ref: Record<string, unknown>;
8
- serverURL: string;
9
- };
10
- export declare const promise: ({ id, accessor, apiRoute, collection, depth, ref, serverURL, }: Args) => Promise<void>;
11
- export {};
12
- //# sourceMappingURL=promise.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"promise.d.ts","sourceRoot":"","sources":["../../../../../../src/admin/components/views/LivePreview/useLivePreview/promise.ts"],"names":[],"mappings":"AAAA,KAAK,IAAI,GAAG;IACV,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAA;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;IACb,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;IACnB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC5B,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,eAAO,MAAM,OAAO,mEAQjB,IAAI,KAAG,QAAQ,IAAI,CAOrB,CAAA"}
@@ -1,17 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "promise", {
6
- enumerable: true,
7
- get: function() {
8
- return promise;
9
- }
10
- });
11
- const promise = async ({ id, accessor, apiRoute, collection, depth, ref, serverURL })=>{
12
- // TODO: get dynamic `api` route from config
13
- const res = await fetch(`${serverURL}${apiRoute || '/api'}/${collection}/${id}?depth=${depth}`).then((res)=>res.json());
14
- ref[accessor] = res;
15
- };
16
-
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hZG1pbi9jb21wb25lbnRzL3ZpZXdzL0xpdmVQcmV2aWV3L3VzZUxpdmVQcmV2aWV3L3Byb21pc2UudHMiXSwic291cmNlc0NvbnRlbnQiOlsidHlwZSBBcmdzID0ge1xuICBhY2Nlc3NvcjogbnVtYmVyIHwgc3RyaW5nXG4gIGFwaVJvdXRlPzogc3RyaW5nXG4gIGNvbGxlY3Rpb246IHN0cmluZ1xuICBkZXB0aDogbnVtYmVyXG4gIGlkOiBudW1iZXIgfCBzdHJpbmdcbiAgcmVmOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICBzZXJ2ZXJVUkw6IHN0cmluZ1xufVxuXG5leHBvcnQgY29uc3QgcHJvbWlzZSA9IGFzeW5jICh7XG4gIGlkLFxuICBhY2Nlc3NvcixcbiAgYXBpUm91dGUsXG4gIGNvbGxlY3Rpb24sXG4gIGRlcHRoLFxuICByZWYsXG4gIHNlcnZlclVSTCxcbn06IEFyZ3MpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgLy8gVE9ETzogZ2V0IGR5bmFtaWMgYGFwaWAgcm91dGUgZnJvbSBjb25maWdcbiAgY29uc3QgcmVzOiBhbnkgPSBhd2FpdCBmZXRjaChcbiAgICBgJHtzZXJ2ZXJVUkx9JHthcGlSb3V0ZSB8fCAnL2FwaSd9LyR7Y29sbGVjdGlvbn0vJHtpZH0/ZGVwdGg9JHtkZXB0aH1gLFxuICApLnRoZW4oKHJlcykgPT4gcmVzLmpzb24oKSlcblxuICByZWZbYWNjZXNzb3JdID0gcmVzXG59XG4iXSwibmFtZXMiOlsicHJvbWlzZSIsImlkIiwiYWNjZXNzb3IiLCJhcGlSb3V0ZSIsImNvbGxlY3Rpb24iLCJkZXB0aCIsInJlZiIsInNlcnZlclVSTCIsInJlcyIsImZldGNoIiwidGhlbiIsImpzb24iXSwibWFwcGluZ3MiOiI7Ozs7K0JBVWFBOzs7ZUFBQUE7OztBQUFOLE1BQU1BLFVBQVUsT0FBTyxFQUM1QkMsRUFBRSxFQUNGQyxRQUFRLEVBQ1JDLFFBQVEsRUFDUkMsVUFBVSxFQUNWQyxLQUFLLEVBQ0xDLEdBQUcsRUFDSEMsU0FBUyxFQUNKO0lBQ0wsNENBQTRDO0lBQzVDLE1BQU1DLE1BQVcsTUFBTUMsTUFDckIsQ0FBQyxFQUFFRixVQUFVLEVBQUVKLFlBQVksT0FBTyxDQUFDLEVBQUVDLFdBQVcsQ0FBQyxFQUFFSCxHQUFHLE9BQU8sRUFBRUksTUFBTSxDQUFDLEVBQ3RFSyxJQUFJLENBQUMsQ0FBQ0YsTUFBUUEsSUFBSUcsSUFBSTtJQUV4QkwsR0FBRyxDQUFDSixTQUFTLEdBQUdNO0FBQ2xCIn0=
@@ -1,12 +0,0 @@
1
- type Args<T> = {
2
- apiRoute?: string;
3
- depth: number;
4
- fieldSchema: Record<string, unknown>[];
5
- incomingData: T;
6
- populationPromises: Promise<void>[];
7
- result: T;
8
- serverURL: string;
9
- };
10
- export declare const traverseFields: <T>({ apiRoute, depth, fieldSchema, incomingData, populationPromises, result, serverURL, }: Args<T>) => void;
11
- export {};
12
- //# sourceMappingURL=traverseFields.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"traverseFields.d.ts","sourceRoot":"","sources":["../../../../../../src/admin/components/views/LivePreview/useLivePreview/traverseFields.ts"],"names":[],"mappings":"AAEA,KAAK,IAAI,CAAC,CAAC,IAAI;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IACtC,YAAY,EAAE,CAAC,CAAA;IACf,kBAAkB,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAA;IACnC,MAAM,EAAE,CAAC,CAAA;IACT,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,eAAO,MAAM,cAAc,0GAQd,IAkNZ,CAAA"}