payload 2.3.1 → 2.5.0

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 (196) hide show
  1. package/components/elements.d.ts +3 -0
  2. package/components/elements.js +19 -1
  3. package/components/forms.d.ts +4 -0
  4. package/components/forms.js +17 -1
  5. package/dist/admin/components/elements/DatePicker/index.scss +4 -0
  6. package/dist/admin/components/elements/Header/index.d.ts.map +1 -1
  7. package/dist/admin/components/elements/Header/index.js +72 -5
  8. package/dist/admin/components/elements/Header/index.scss +57 -2
  9. package/dist/admin/components/elements/ListDrawer/DrawerContent.d.ts.map +1 -1
  10. package/dist/admin/components/elements/ListDrawer/DrawerContent.js +12 -4
  11. package/dist/admin/components/elements/Nav/index.scss +3 -7
  12. package/dist/admin/components/elements/PreviewSizes/index.d.ts.map +1 -1
  13. package/dist/admin/components/elements/PreviewSizes/index.js +7 -6
  14. package/dist/admin/components/forms/FieldDescription/index.js +4 -2
  15. package/dist/admin/components/forms/FieldDescription/types.d.ts +9 -5
  16. package/dist/admin/components/forms/FieldDescription/types.d.ts.map +1 -1
  17. package/dist/admin/components/forms/FieldDescription/types.js +1 -1
  18. package/dist/admin/components/forms/Form/getDataByPath.d.ts.map +1 -1
  19. package/dist/admin/components/forms/Form/getDataByPath.js +4 -1
  20. package/dist/admin/components/forms/field-types/Array/index.d.ts.map +1 -1
  21. package/dist/admin/components/forms/field-types/Array/index.js +2 -1
  22. package/dist/admin/components/forms/field-types/Blocks/index.js +2 -1
  23. package/dist/admin/components/forms/field-types/Checkbox/index.js +2 -1
  24. package/dist/admin/components/forms/field-types/Code/index.js +2 -1
  25. package/dist/admin/components/forms/field-types/Collapsible/index.d.ts.map +1 -1
  26. package/dist/admin/components/forms/field-types/Collapsible/index.js +6 -5
  27. package/dist/admin/components/forms/field-types/DateTime/Input.js +2 -1
  28. package/dist/admin/components/forms/field-types/Email/index.js +2 -1
  29. package/dist/admin/components/forms/field-types/Group/index.d.ts.map +1 -1
  30. package/dist/admin/components/forms/field-types/Group/index.js +2 -1
  31. package/dist/admin/components/forms/field-types/JSON/index.d.ts.map +1 -1
  32. package/dist/admin/components/forms/field-types/JSON/index.js +7 -2
  33. package/dist/admin/components/forms/field-types/Point/index.js +2 -1
  34. package/dist/admin/components/forms/field-types/RadioGroup/Input.d.ts +2 -2
  35. package/dist/admin/components/forms/field-types/RadioGroup/Input.d.ts.map +1 -1
  36. package/dist/admin/components/forms/field-types/RadioGroup/Input.js +4 -3
  37. package/dist/admin/components/forms/field-types/RadioGroup/index.js +5 -5
  38. package/dist/admin/components/forms/field-types/Relationship/index.d.ts.map +1 -1
  39. package/dist/admin/components/forms/field-types/Relationship/index.js +9 -3
  40. package/dist/admin/components/forms/field-types/Relationship/types.d.ts +1 -1
  41. package/dist/admin/components/forms/field-types/Relationship/types.d.ts.map +1 -1
  42. package/dist/admin/components/forms/field-types/RichText/index.d.ts.map +1 -1
  43. package/dist/admin/components/forms/field-types/RichText/index.js +55 -8
  44. package/dist/admin/components/forms/field-types/RichText/types.d.ts +9 -3
  45. package/dist/admin/components/forms/field-types/RichText/types.d.ts.map +1 -1
  46. package/dist/admin/components/forms/field-types/Select/Input.d.ts +2 -2
  47. package/dist/admin/components/forms/field-types/Select/Input.d.ts.map +1 -1
  48. package/dist/admin/components/forms/field-types/Select/Input.js +3 -2
  49. package/dist/admin/components/forms/field-types/Tabs/index.d.ts.map +1 -1
  50. package/dist/admin/components/forms/field-types/Tabs/index.js +3 -2
  51. package/dist/admin/components/forms/field-types/Text/Input.d.ts.map +1 -1
  52. package/dist/admin/components/forms/field-types/Text/Input.js +2 -1
  53. package/dist/admin/components/forms/field-types/Textarea/Input.js +2 -1
  54. package/dist/admin/components/forms/field-types/Upload/Input.d.ts +2 -2
  55. package/dist/admin/components/forms/field-types/Upload/Input.d.ts.map +1 -1
  56. package/dist/admin/components/forms/field-types/Upload/Input.js +4 -3
  57. package/dist/admin/components/forms/field-types/getFilterOptionsQuery.d.ts.map +1 -1
  58. package/dist/admin/components/forms/field-types/getFilterOptionsQuery.js +12 -1
  59. package/dist/admin/components/templates/Default/index.d.ts +5 -1
  60. package/dist/admin/components/templates/Default/index.d.ts.map +1 -1
  61. package/dist/admin/components/templates/Default/index.js +1 -1
  62. package/dist/admin/components/templates/Default/index.scss +27 -9
  63. package/dist/admin/components/utilities/ActionsProvider/index.d.ts +11 -0
  64. package/dist/admin/components/utilities/ActionsProvider/index.d.ts.map +1 -0
  65. package/dist/admin/components/utilities/ActionsProvider/index.js +86 -0
  66. package/dist/admin/components/views/API/index.d.ts.map +1 -1
  67. package/dist/admin/components/views/API/index.js +12 -1
  68. package/dist/admin/components/views/Dashboard/index.d.ts.map +1 -1
  69. package/dist/admin/components/views/Dashboard/index.js +8 -1
  70. package/dist/admin/components/views/Global/Default.d.ts.map +1 -1
  71. package/dist/admin/components/views/Global/Default.js +57 -2
  72. package/dist/admin/components/views/LivePreview/Context/index.d.ts.map +1 -1
  73. package/dist/admin/components/views/LivePreview/Context/index.js +3 -4
  74. package/dist/admin/components/views/LivePreview/Preview/index.d.ts.map +1 -1
  75. package/dist/admin/components/views/LivePreview/Preview/index.js +7 -4
  76. package/dist/admin/components/views/LivePreview/index.d.ts.map +1 -1
  77. package/dist/admin/components/views/LivePreview/index.js +34 -5
  78. package/dist/admin/components/views/Routes/index.d.ts.map +1 -1
  79. package/dist/admin/components/views/Routes/index.js +4 -3
  80. package/dist/admin/components/views/Version/RenderFieldsToDiff/index.js +6 -3
  81. package/dist/admin/components/views/Version/SelectLocales/index.d.ts.map +1 -1
  82. package/dist/admin/components/views/Version/SelectLocales/index.js +16 -3
  83. package/dist/admin/components/views/Version/Version.d.ts.map +1 -1
  84. package/dist/admin/components/views/Version/Version.js +12 -1
  85. package/dist/admin/components/views/Versions/index.d.ts.map +1 -1
  86. package/dist/admin/components/views/Versions/index.js +28 -5
  87. package/dist/admin/components/views/collections/Edit/Default.d.ts.map +1 -1
  88. package/dist/admin/components/views/collections/Edit/Default.js +19 -1
  89. package/dist/admin/components/views/collections/List/Cell/field-types/Richtext/index.d.ts.map +1 -1
  90. package/dist/admin/components/views/collections/List/Cell/field-types/Richtext/index.js +55 -8
  91. package/dist/admin/components/views/collections/List/formatFields.d.ts.map +1 -1
  92. package/dist/admin/components/views/collections/List/formatFields.js +20 -17
  93. package/dist/admin/components/views/collections/List/index.d.ts.map +1 -1
  94. package/dist/admin/components/views/collections/List/index.js +19 -3
  95. package/dist/admin/hooks/useThumbnail.d.ts.map +1 -1
  96. package/dist/admin/hooks/useThumbnail.js +4 -1
  97. package/dist/auth/baseFields/verification.d.ts.map +1 -1
  98. package/dist/auth/baseFields/verification.js +6 -1
  99. package/dist/auth/operations/local/forgotPassword.d.ts +2 -1
  100. package/dist/auth/operations/local/forgotPassword.d.ts.map +1 -1
  101. package/dist/auth/operations/local/forgotPassword.js +3 -3
  102. package/dist/auth/operations/local/login.d.ts +2 -1
  103. package/dist/auth/operations/local/login.d.ts.map +1 -1
  104. package/dist/auth/operations/local/login.js +3 -3
  105. package/dist/auth/operations/local/resetPassword.d.ts +2 -1
  106. package/dist/auth/operations/local/resetPassword.d.ts.map +1 -1
  107. package/dist/auth/operations/local/resetPassword.js +3 -3
  108. package/dist/auth/operations/local/unlock.d.ts +2 -1
  109. package/dist/auth/operations/local/unlock.d.ts.map +1 -1
  110. package/dist/auth/operations/local/unlock.js +3 -3
  111. package/dist/auth/operations/local/verifyEmail.d.ts +2 -1
  112. package/dist/auth/operations/local/verifyEmail.d.ts.map +1 -1
  113. package/dist/auth/operations/local/verifyEmail.js +3 -3
  114. package/dist/collections/config/schema.d.ts.map +1 -1
  115. package/dist/collections/config/schema.js +5 -2
  116. package/dist/collections/config/types.d.ts +4 -1
  117. package/dist/collections/config/types.d.ts.map +1 -1
  118. package/dist/collections/config/types.js +1 -1
  119. package/dist/collections/graphql/init.d.ts.map +1 -1
  120. package/dist/collections/graphql/init.js +19 -9
  121. package/dist/collections/operations/create.js +7 -7
  122. package/dist/config/schema.d.ts.map +1 -1
  123. package/dist/config/schema.js +6 -3
  124. package/dist/config/shared/componentSchema.d.ts.map +1 -1
  125. package/dist/config/shared/componentSchema.js +2 -1
  126. package/dist/config/types.d.ts +7 -1
  127. package/dist/config/types.d.ts.map +1 -1
  128. package/dist/config/types.js +1 -1
  129. package/dist/database/queryValidation/validateSearchParams.d.ts.map +1 -1
  130. package/dist/database/queryValidation/validateSearchParams.js +14 -44
  131. package/dist/errors/DuplicateFieldName.d.ts +6 -0
  132. package/dist/errors/DuplicateFieldName.d.ts.map +1 -0
  133. package/dist/errors/DuplicateFieldName.js +24 -0
  134. package/dist/errors/index.d.ts +1 -0
  135. package/dist/errors/index.d.ts.map +1 -1
  136. package/dist/errors/index.js +5 -1
  137. package/dist/exports/components/elements.d.ts +3 -0
  138. package/dist/exports/components/elements.d.ts.map +1 -1
  139. package/dist/exports/components/elements.js +19 -1
  140. package/dist/exports/components/forms.d.ts +4 -0
  141. package/dist/exports/components/forms.d.ts.map +1 -1
  142. package/dist/exports/components/forms.js +17 -1
  143. package/dist/fields/config/sanitize.d.ts +2 -1
  144. package/dist/fields/config/sanitize.d.ts.map +1 -1
  145. package/dist/fields/config/sanitize.js +14 -3
  146. package/dist/fields/config/schema.d.ts.map +1 -1
  147. package/dist/fields/config/schema.js +5 -3
  148. package/dist/fields/config/types.d.ts +1 -1
  149. package/dist/fields/config/types.d.ts.map +1 -1
  150. package/dist/fields/config/types.js +1 -1
  151. package/dist/fields/hooks/afterRead/promise.d.ts.map +1 -1
  152. package/dist/fields/hooks/afterRead/promise.js +14 -1
  153. package/dist/fields/validations.d.ts +1 -1
  154. package/dist/fields/validations.d.ts.map +1 -1
  155. package/dist/fields/validations.js +12 -2
  156. package/dist/globals/graphql/init.d.ts.map +1 -1
  157. package/dist/globals/graphql/init.js +8 -5
  158. package/dist/globals/operations/local/findOne.d.ts +2 -1
  159. package/dist/globals/operations/local/findOne.d.ts.map +1 -1
  160. package/dist/globals/operations/local/findOne.js +3 -3
  161. package/dist/globals/operations/local/findVersionByID.d.ts +2 -1
  162. package/dist/globals/operations/local/findVersionByID.d.ts.map +1 -1
  163. package/dist/globals/operations/local/findVersionByID.js +3 -3
  164. package/dist/globals/operations/local/findVersions.d.ts +2 -1
  165. package/dist/globals/operations/local/findVersions.d.ts.map +1 -1
  166. package/dist/globals/operations/local/findVersions.js +3 -3
  167. package/dist/globals/operations/local/restoreVersion.d.ts +2 -1
  168. package/dist/globals/operations/local/restoreVersion.d.ts.map +1 -1
  169. package/dist/globals/operations/local/restoreVersion.js +3 -3
  170. package/dist/globals/operations/local/update.d.ts +2 -1
  171. package/dist/globals/operations/local/update.d.ts.map +1 -1
  172. package/dist/globals/operations/local/update.js +3 -3
  173. package/dist/graphql/schema/buildMutationInputType.d.ts +1 -1
  174. package/dist/graphql/schema/buildMutationInputType.d.ts.map +1 -1
  175. package/dist/graphql/schema/buildMutationInputType.js +22 -11
  176. package/dist/graphql/schema/buildObjectType.d.ts.map +1 -1
  177. package/dist/graphql/schema/buildObjectType.js +38 -17
  178. package/dist/graphql/schema/buildPoliciesType.d.ts.map +1 -1
  179. package/dist/graphql/schema/buildPoliciesType.js +3 -2
  180. package/dist/translations/index.d.ts +374 -0
  181. package/dist/translations/index.d.ts.map +1 -1
  182. package/dist/translations/index.js +4 -2
  183. package/dist/translations/zh-tw.json +374 -0
  184. package/dist/translations/zh.json +2 -2
  185. package/dist/uploads/generateFileData.d.ts.map +1 -1
  186. package/dist/uploads/generateFileData.js +25 -7
  187. package/dist/uploads/getBaseFields.js +2 -2
  188. package/dist/uploads/getExternalFile.d.ts +9 -0
  189. package/dist/uploads/getExternalFile.d.ts.map +1 -0
  190. package/dist/uploads/getExternalFile.js +76 -0
  191. package/dist/uploads/imageResizer.d.ts.map +1 -1
  192. package/dist/uploads/imageResizer.js +4 -2
  193. package/dist/uploads/types.d.ts +1 -0
  194. package/dist/uploads/types.d.ts.map +1 -1
  195. package/dist/uploads/types.js +1 -1
  196. package/package.json +2 -2
@@ -9,6 +9,7 @@ Object.defineProperty(exports, "promise", {
9
9
  }
10
10
  });
11
11
  const _types = require("../../config/types");
12
+ const _getDefaultValue = /*#__PURE__*/ _interop_require_default(require("../../getDefaultValue"));
12
13
  const _relationshipPopulationPromise = /*#__PURE__*/ _interop_require_default(require("./relationshipPopulationPromise"));
13
14
  const _traverseFields = require("./traverseFields");
14
15
  function _interop_require_default(obj) {
@@ -169,6 +170,7 @@ const promise = async ({ collection, context, currentDepth, depth, doc, field, f
169
170
  }, Promise.resolve());
170
171
  }
171
172
  // Execute access control
173
+ let allowDefaultValue = true;
172
174
  if (triggerAccessControl && field.access && field.access.read) {
173
175
  const result = overrideAccess ? true : await field.access.read({
174
176
  id: doc.id,
@@ -178,9 +180,20 @@ const promise = async ({ collection, context, currentDepth, depth, doc, field, f
178
180
  siblingData: siblingDoc
179
181
  });
180
182
  if (!result) {
183
+ allowDefaultValue = false;
181
184
  delete siblingDoc[field.name];
182
185
  }
183
186
  }
187
+ // Set defaultValue on the field for globals being returned without being first created
188
+ // or collection documents created prior to having a default
189
+ if (allowDefaultValue && typeof siblingDoc[field.name] === 'undefined' && typeof field.defaultValue !== 'undefined') {
190
+ siblingDoc[field.name] = await (0, _getDefaultValue.default)({
191
+ defaultValue: field.defaultValue,
192
+ locale: req.locale,
193
+ user: req.user,
194
+ value: siblingDoc[field.name]
195
+ });
196
+ }
184
197
  if (field.type === 'relationship' || field.type === 'upload') {
185
198
  populationPromises.push((0, _relationshipPopulationPromise.default)({
186
199
  currentDepth,
@@ -422,4 +435,4 @@ const promise = async ({ collection, context, currentDepth, depth, doc, field, f
422
435
  }
423
436
  };
424
437
 
425
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9maWVsZHMvaG9va3MvYWZ0ZXJSZWFkL3Byb21pc2UudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcGFyYW0tcmVhc3NpZ24gKi9cbmltcG9ydCB0eXBlIHsgUmljaFRleHRBZGFwdGVyIH0gZnJvbSAnLi4vLi4vLi4vYWRtaW4vY29tcG9uZW50cy9mb3Jtcy9maWVsZC10eXBlcy9SaWNoVGV4dC90eXBlcydcbmltcG9ydCB0eXBlIHsgU2FuaXRpemVkQ29sbGVjdGlvbkNvbmZpZyB9IGZyb20gJy4uLy4uLy4uL2NvbGxlY3Rpb25zL2NvbmZpZy90eXBlcydcbmltcG9ydCB0eXBlIHsgUGF5bG9hZFJlcXVlc3QsIFJlcXVlc3RDb250ZXh0IH0gZnJvbSAnLi4vLi4vLi4vZXhwcmVzcy90eXBlcydcbmltcG9ydCB0eXBlIHsgU2FuaXRpemVkR2xvYmFsQ29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vZ2xvYmFscy9jb25maWcvdHlwZXMnXG5pbXBvcnQgdHlwZSB7IEZpZWxkLCBUYWJBc0ZpZWxkIH0gZnJvbSAnLi4vLi4vY29uZmlnL3R5cGVzJ1xuXG5pbXBvcnQgeyBmaWVsZEFmZmVjdHNEYXRhLCB0YWJIYXNOYW1lIH0gZnJvbSAnLi4vLi4vY29uZmlnL3R5cGVzJ1xuaW1wb3J0IHJlbGF0aW9uc2hpcFBvcHVsYXRpb25Qcm9taXNlIGZyb20gJy4vcmVsYXRpb25zaGlwUG9wdWxhdGlvblByb21pc2UnXG5pbXBvcnQgeyB0cmF2ZXJzZUZpZWxkcyB9IGZyb20gJy4vdHJhdmVyc2VGaWVsZHMnXG5cbnR5cGUgQXJncyA9IHtcbiAgY29sbGVjdGlvbjogU2FuaXRpemVkQ29sbGVjdGlvbkNvbmZpZyB8IG51bGxcbiAgY29udGV4dDogUmVxdWVzdENvbnRleHRcbiAgY3VycmVudERlcHRoOiBudW1iZXJcbiAgZGVwdGg6IG51bWJlclxuICBkb2M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gIGZpZWxkOiBGaWVsZCB8IFRhYkFzRmllbGRcbiAgZmllbGRQcm9taXNlczogUHJvbWlzZTx2b2lkPltdXG4gIGZpbmRNYW55OiBib29sZWFuXG4gIGZsYXR0ZW5Mb2NhbGVzOiBib29sZWFuXG4gIGdsb2JhbDogU2FuaXRpemVkR2xvYmFsQ29uZmlnIHwgbnVsbFxuICBvdmVycmlkZUFjY2VzczogYm9vbGVhblxuICBwb3B1bGF0aW9uUHJvbWlzZXM6IFByb21pc2U8dm9pZD5bXVxuICByZXE6IFBheWxvYWRSZXF1ZXN0XG4gIHNob3dIaWRkZW5GaWVsZHM6IGJvb2xlYW5cbiAgc2libGluZ0RvYzogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgdHJpZ2dlckFjY2Vzc0NvbnRyb2w/OiBib29sZWFuXG4gIHRyaWdnZXJIb29rcz86IGJvb2xlYW5cbn1cblxuLy8gVGhpcyBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3IgdGhlIGZvbGxvd2luZyBhY3Rpb25zLCBpbiBvcmRlcjpcbi8vIC0gUmVtb3ZlIGhpZGRlbiBmaWVsZHMgZnJvbSByZXNwb25zZVxuLy8gLSBGbGF0dGVuIGxvY2FsZXMgaW50byByZXF1ZXN0ZWQgbG9jYWxlXG4vLyAtIFNhbml0aXplIG91dGdvaW5nIGRhdGEgKHBvaW50IGZpZWxkLCBldGMuKVxuLy8gLSBFeGVjdXRlIGZpZWxkIGhvb2tzXG4vLyAtIEV4ZWN1dGUgcmVhZCBhY2Nlc3MgY29udHJvbFxuLy8gLSBQb3B1bGF0ZSByZWxhdGlvbnNoaXBzXG5cbmV4cG9ydCBjb25zdCBwcm9taXNlID0gYXN5bmMgKHtcbiAgY29sbGVjdGlvbixcbiAgY29udGV4dCxcbiAgY3VycmVudERlcHRoLFxuICBkZXB0aCxcbiAgZG9jLFxuICBmaWVsZCxcbiAgZmllbGRQcm9taXNlcyxcbiAgZmluZE1hbnksXG4gIGZsYXR0ZW5Mb2NhbGVzLFxuICBnbG9iYWwsXG4gIG92ZXJyaWRlQWNjZXNzLFxuICBwb3B1bGF0aW9uUHJvbWlzZXMsXG4gIHJlcSxcbiAgc2hvd0hpZGRlbkZpZWxkcyxcbiAgc2libGluZ0RvYyxcbiAgdHJpZ2dlckFjY2Vzc0NvbnRyb2wgPSB0cnVlLFxuICB0cmlnZ2VySG9va3MgPSB0cnVlLFxufTogQXJncyk6IFByb21pc2U8dm9pZD4gPT4ge1xuICBpZiAoXG4gICAgZmllbGRBZmZlY3RzRGF0YShmaWVsZCkgJiZcbiAgICBmaWVsZC5oaWRkZW4gJiZcbiAgICB0eXBlb2Ygc2libGluZ0RvY1tmaWVsZC5uYW1lXSAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAhc2hvd0hpZGRlbkZpZWxkc1xuICApIHtcbiAgICBkZWxldGUgc2libGluZ0RvY1tmaWVsZC5uYW1lXVxuICB9XG5cbiAgY29uc3Qgc2hvdWxkSG9pc3RMb2NhbGl6ZWRWYWx1ZSA9XG4gICAgZmxhdHRlbkxvY2FsZXMgJiZcbiAgICBmaWVsZEFmZmVjdHNEYXRhKGZpZWxkKSAmJlxuICAgIHR5cGVvZiBzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdID09PSAnb2JqZWN0JyAmJlxuICAgIHNpYmxpbmdEb2NbZmllbGQubmFtZV0gIT09IG51bGwgJiZcbiAgICBmaWVsZC5sb2NhbGl6ZWQgJiZcbiAgICByZXEubG9jYWxlICE9PSAnYWxsJyAmJlxuICAgIHJlcS5wYXlsb2FkLmNvbmZpZy5sb2NhbGl6YXRpb25cblxuICBpZiAoc2hvdWxkSG9pc3RMb2NhbGl6ZWRWYWx1ZSkge1xuICAgIC8vIHJlcGxhY2UgYWN0dWFsIHZhbHVlIHdpdGggbG9jYWxpemVkIHZhbHVlIGJlZm9yZSBzYW5pdGl6aW5nXG4gICAgLy8geyBbbG9jYWxlXTogZmllbGRzIH0gLT4gZmllbGRzXG4gICAgY29uc3QgeyBsb2NhbGUgfSA9IHJlcVxuICAgIGNvbnN0IHZhbHVlID0gc2libGluZ0RvY1tmaWVsZC5uYW1lXVtsb2NhbGVdXG4gICAgY29uc3QgZmFsbGJhY2tMb2NhbGUgPVxuICAgICAgcmVxLnBheWxvYWQuY29uZmlnLmxvY2FsaXphdGlvbiAmJlxuICAgICAgcmVxLnBheWxvYWQuY29uZmlnLmxvY2FsaXphdGlvbj8uZmFsbGJhY2sgJiZcbiAgICAgIHJlcS5mYWxsYmFja0xvY2FsZVxuXG4gICAgbGV0IGhvaXN0ZWRWYWx1ZSA9IHZhbHVlXG5cbiAgICBpZiAoZmFsbGJhY2tMb2NhbGUgJiYgZmFsbGJhY2tMb2NhbGUgIT09IGxvY2FsZSkge1xuICAgICAgY29uc3QgZmFsbGJhY2tWYWx1ZSA9IHNpYmxpbmdEb2NbZmllbGQubmFtZV1bZmFsbGJhY2tMb2NhbGVdXG4gICAgICBjb25zdCBpc051bGxPclVuZGVmaW5lZCA9IHR5cGVvZiB2YWx1ZSA9PT0gJ3VuZGVmaW5lZCcgfHwgdmFsdWUgPT09IG51bGxcblxuICAgICAgaWYgKGZhbGxiYWNrVmFsdWUpIHtcbiAgICAgICAgc3dpdGNoIChmaWVsZC50eXBlKSB7XG4gICAgICAgICAgY2FzZSAndGV4dCc6XG4gICAgICAgICAgY2FzZSAndGV4dGFyZWEnOiB7XG4gICAgICAgICAgICBpZiAodmFsdWUgPT09ICcnIHx8IGlzTnVsbE9yVW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgIGhvaXN0ZWRWYWx1ZSA9IGZhbGxiYWNrVmFsdWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgIGhvaXN0ZWRWYWx1ZSA9IGZhbGxiYWNrVmFsdWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgc2libGluZ0RvY1tmaWVsZC5uYW1lXSA9IGhvaXN0ZWRWYWx1ZVxuICB9XG5cbiAgLy8gU2FuaXRpemUgb3V0Z29pbmcgZmllbGQgdmFsdWVcbiAgc3dpdGNoIChmaWVsZC50eXBlKSB7XG4gICAgY2FzZSAnZ3JvdXAnOiB7XG4gICAgICAvLyBGaWxsIGdyb3VwcyB3aXRoIGVtcHR5IG9iamVjdHMgc28gZmllbGRzIHdpdGggaG9va3Mgd2l0aGluIGdyb3VwcyBjYW4gcG9wdWxhdGVcbiAgICAgIC8vIHRoZW1zZWx2ZXMgdmlydHVhbGx5IGFzIG5lY2Vzc2FyeVxuICAgICAgaWYgKHR5cGVvZiBzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICBzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdID0ge31cbiAgICAgIH1cblxuICAgICAgYnJlYWtcbiAgICB9XG4gICAgY2FzZSAndGFicyc6IHtcbiAgICAgIGZpZWxkLnRhYnMuZm9yRWFjaCgodGFiKSA9PiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICB0YWJIYXNOYW1lKHRhYikgJiZcbiAgICAgICAgICAodHlwZW9mIHNpYmxpbmdEb2NbdGFiLm5hbWVdID09PSAndW5kZWZpbmVkJyB8fCBzaWJsaW5nRG9jW3RhYi5uYW1lXSA9PT0gbnVsbClcbiAgICAgICAgKSB7XG4gICAgICAgICAgc2libGluZ0RvY1t0YWIubmFtZV0gPSB7fVxuICAgICAgICB9XG4gICAgICB9KVxuXG4gICAgICBicmVha1xuICAgIH1cblxuICAgIGNhc2UgJ3JpY2hUZXh0Jzoge1xuICAgICAgY29uc3QgZWRpdG9yOiBSaWNoVGV4dEFkYXB0ZXIgPSBmaWVsZD8uZWRpdG9yXG4gICAgICAvLyBUaGlzIGlzIHJ1biBoZXJlIEFORCBpbiB0aGUgR3JhcGhRTCBSZXNvbHZlclxuICAgICAgaWYgKGVkaXRvcj8ucG9wdWxhdGlvblByb21pc2UpIHtcbiAgICAgICAgY29uc3QgcG9wdWxhdGlvblByb21pc2UgPSBlZGl0b3IucG9wdWxhdGlvblByb21pc2Uoe1xuICAgICAgICAgIGNvbnRleHQsXG4gICAgICAgICAgY3VycmVudERlcHRoLFxuICAgICAgICAgIGRlcHRoLFxuICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgIGZpbmRNYW55LFxuICAgICAgICAgIGZsYXR0ZW5Mb2NhbGVzLFxuICAgICAgICAgIG92ZXJyaWRlQWNjZXNzLFxuICAgICAgICAgIHBvcHVsYXRpb25Qcm9taXNlcyxcbiAgICAgICAgICByZXEsXG4gICAgICAgICAgc2hvd0hpZGRlbkZpZWxkcyxcbiAgICAgICAgICBzaWJsaW5nRG9jLFxuICAgICAgICB9KVxuXG4gICAgICAgIGlmIChwb3B1bGF0aW9uUHJvbWlzZSkge1xuICAgICAgICAgIHBvcHVsYXRpb25Qcm9taXNlcy5wdXNoKHBvcHVsYXRpb25Qcm9taXNlKVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIFRoaXMgaXMgb25seSBydW4gaGVyZSwgaW5kZXBlbmRlbnQgb2YgZGVwdGhcbiAgICAgIGlmIChlZGl0b3I/LmFmdGVyUmVhZFByb21pc2UpIHtcbiAgICAgICAgY29uc3QgYWZ0ZXJSZWFkUHJvbWlzZSA9IGVkaXRvcj8uYWZ0ZXJSZWFkUHJvbWlzZSh7XG4gICAgICAgICAgZmllbGQsXG4gICAgICAgICAgaW5jb21pbmdFZGl0b3JTdGF0ZTogc2libGluZ0RvY1tmaWVsZC5uYW1lXSBhcyBvYmplY3QsXG4gICAgICAgICAgc2libGluZ0RvYyxcbiAgICAgICAgfSlcblxuICAgICAgICBpZiAoYWZ0ZXJSZWFkUHJvbWlzZSkge1xuICAgICAgICAgIHBvcHVsYXRpb25Qcm9taXNlcy5wdXNoKGFmdGVyUmVhZFByb21pc2UpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBjYXNlICdwb2ludCc6IHtcbiAgICAgIGNvbnN0IHBvaW50RG9jID0gc2libGluZ0RvY1tmaWVsZC5uYW1lXSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkocG9pbnREb2M/LmNvb3JkaW5hdGVzKSAmJiBwb2ludERvYy5jb29yZGluYXRlcy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgc2libGluZ0RvY1tmaWVsZC5uYW1lXSA9IHBvaW50RG9jLmNvb3JkaW5hdGVzXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdID0gdW5kZWZpbmVkXG4gICAgICB9XG5cbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgZGVmYXVsdDoge1xuICAgICAgYnJlYWtcbiAgICB9XG4gIH1cblxuICBpZiAoZmllbGRBZmZlY3RzRGF0YShmaWVsZCkpIHtcbiAgICAvLyBFeGVjdXRlIGhvb2tzXG4gICAgaWYgKHRyaWdnZXJIb29rcyAmJiBmaWVsZC5ob29rcz8uYWZ0ZXJSZWFkKSB7XG4gICAgICBhd2FpdCBmaWVsZC5ob29rcy5hZnRlclJlYWQucmVkdWNlKGFzeW5jIChwcmlvckhvb2ssIGN1cnJlbnRIb29rKSA9PiB7XG4gICAgICAgIGF3YWl0IHByaW9ySG9va1xuXG4gICAgICAgIGNvbnN0IHNob3VsZFJ1bkhvb2tPbkFsbExvY2FsZXMgPVxuICAgICAgICAgIGZpZWxkLmxvY2FsaXplZCAmJlxuICAgICAgICAgIChyZXEubG9jYWxlID09PSAnYWxsJyB8fCAhZmxhdHRlbkxvY2FsZXMpICYmXG4gICAgICAgICAgdHlwZW9mIHNpYmxpbmdEb2NbZmllbGQubmFtZV0gPT09ICdvYmplY3QnXG5cbiAgICAgICAgaWYgKHNob3VsZFJ1bkhvb2tPbkFsbExvY2FsZXMpIHtcbiAgICAgICAgICBjb25zdCBob29rUHJvbWlzZXMgPSBPYmplY3QuZW50cmllcyhzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdKS5tYXAoKFtsb2NhbGUsIHZhbHVlXSkgPT5cbiAgICAgICAgICAgIChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGhvb2tlZFZhbHVlID0gYXdhaXQgY3VycmVudEhvb2soe1xuICAgICAgICAgICAgICAgIGNvbGxlY3Rpb24sXG4gICAgICAgICAgICAgICAgY29udGV4dCxcbiAgICAgICAgICAgICAgICBkYXRhOiBkb2MsXG4gICAgICAgICAgICAgICAgZmllbGQsXG4gICAgICAgICAgICAgICAgZ2xvYmFsLFxuICAgICAgICAgICAgICAgIG9wZXJhdGlvbjogJ3JlYWQnLFxuICAgICAgICAgICAgICAgIG9yaWdpbmFsRG9jOiBkb2MsXG4gICAgICAgICAgICAgICAgcmVxLFxuICAgICAgICAgICAgICAgIHNpYmxpbmdEYXRhOiBzaWJsaW5nRG9jLFxuICAgICAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICAgIGlmIChob29rZWRWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgc2libGluZ0RvY1tmaWVsZC5uYW1lXVtsb2NhbGVdID0gaG9va2VkVmFsdWVcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSkoKSxcbiAgICAgICAgICApXG5cbiAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChob29rUHJvbWlzZXMpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgaG9va2VkVmFsdWUgPSBhd2FpdCBjdXJyZW50SG9vayh7XG4gICAgICAgICAgICBjb2xsZWN0aW9uLFxuICAgICAgICAgICAgY29udGV4dCxcbiAgICAgICAgICAgIGRhdGE6IGRvYyxcbiAgICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgICAgZmluZE1hbnksXG4gICAgICAgICAgICBnbG9iYWwsXG4gICAgICAgICAgICBvcGVyYXRpb246ICdyZWFkJyxcbiAgICAgICAgICAgIG9yaWdpbmFsRG9jOiBkb2MsXG4gICAgICAgICAgICByZXEsXG4gICAgICAgICAgICBzaWJsaW5nRGF0YTogc2libGluZ0RvYyxcbiAgICAgICAgICAgIHZhbHVlOiBzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdLFxuICAgICAgICAgIH0pXG5cbiAgICAgICAgICBpZiAoaG9va2VkVmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgc2libGluZ0RvY1tmaWVsZC5uYW1lXSA9IGhvb2tlZFZhbHVlXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LCBQcm9taXNlLnJlc29sdmUoKSlcbiAgICB9XG5cbiAgICAvLyBFeGVjdXRlIGFjY2VzcyBjb250cm9sXG4gICAgaWYgKHRyaWdnZXJBY2Nlc3NDb250cm9sICYmIGZpZWxkLmFjY2VzcyAmJiBmaWVsZC5hY2Nlc3MucmVhZCkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gb3ZlcnJpZGVBY2Nlc3NcbiAgICAgICAgPyB0cnVlXG4gICAgICAgIDogYXdhaXQgZmllbGQuYWNjZXNzLnJlYWQoe1xuICAgICAgICAgICAgaWQ6IGRvYy5pZCBhcyBudW1iZXIgfCBzdHJpbmcsXG4gICAgICAgICAgICBkYXRhOiBkb2MsXG4gICAgICAgICAgICBkb2MsXG4gICAgICAgICAgICByZXEsXG4gICAgICAgICAgICBzaWJsaW5nRGF0YTogc2libGluZ0RvYyxcbiAgICAgICAgICB9KVxuXG4gICAgICBpZiAoIXJlc3VsdCkge1xuICAgICAgICBkZWxldGUgc2libGluZ0RvY1tmaWVsZC5uYW1lXVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChmaWVsZC50eXBlID09PSAncmVsYXRpb25zaGlwJyB8fCBmaWVsZC50eXBlID09PSAndXBsb2FkJykge1xuICAgICAgcG9wdWxhdGlvblByb21pc2VzLnB1c2goXG4gICAgICAgIHJlbGF0aW9uc2hpcFBvcHVsYXRpb25Qcm9taXNlKHtcbiAgICAgICAgICBjdXJyZW50RGVwdGgsXG4gICAgICAgICAgZGVwdGgsXG4gICAgICAgICAgZmllbGQsXG4gICAgICAgICAgb3ZlcnJpZGVBY2Nlc3MsXG4gICAgICAgICAgcmVxLFxuICAgICAgICAgIHNob3dIaWRkZW5GaWVsZHMsXG4gICAgICAgICAgc2libGluZ0RvYyxcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgfVxuICB9XG5cbiAgc3dpdGNoIChmaWVsZC50eXBlKSB7XG4gICAgY2FzZSAnZ3JvdXAnOiB7XG4gICAgICBsZXQgZ3JvdXBEb2MgPSBzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICAgICBpZiAodHlwZW9mIHNpYmxpbmdEb2NbZmllbGQubmFtZV0gIT09ICdvYmplY3QnKSBncm91cERvYyA9IHt9XG5cbiAgICAgIHRyYXZlcnNlRmllbGRzKHtcbiAgICAgICAgY29sbGVjdGlvbixcbiAgICAgICAgY29udGV4dCxcbiAgICAgICAgY3VycmVudERlcHRoLFxuICAgICAgICBkZXB0aCxcbiAgICAgICAgZG9jLFxuICAgICAgICBmaWVsZFByb21pc2VzLFxuICAgICAgICBmaWVsZHM6IGZpZWxkLmZpZWxkcyxcbiAgICAgICAgZmluZE1hbnksXG4gICAgICAgIGZsYXR0ZW5Mb2NhbGVzLFxuICAgICAgICBnbG9iYWwsXG4gICAgICAgIG92ZXJyaWRlQWNjZXNzLFxuICAgICAgICBwb3B1bGF0aW9uUHJvbWlzZXMsXG4gICAgICAgIHJlcSxcbiAgICAgICAgc2hvd0hpZGRlbkZpZWxkcyxcbiAgICAgICAgc2libGluZ0RvYzogZ3JvdXBEb2MsXG4gICAgICAgIHRyaWdnZXJBY2Nlc3NDb250cm9sLFxuICAgICAgICB0cmlnZ2VySG9va3MsXG4gICAgICB9KVxuXG4gICAgICBicmVha1xuICAgIH1cblxuICAgIGNhc2UgJ2FycmF5Jzoge1xuICAgICAgY29uc3Qgcm93cyA9IHNpYmxpbmdEb2NbZmllbGQubmFtZV1cblxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkocm93cykpIHtcbiAgICAgICAgcm93cy5mb3JFYWNoKChyb3cpID0+IHtcbiAgICAgICAgICB0cmF2ZXJzZUZpZWxkcyh7XG4gICAgICAgICAgICBjb2xsZWN0aW9uLFxuICAgICAgICAgICAgY29udGV4dCxcbiAgICAgICAgICAgIGN1cnJlbnREZXB0aCxcbiAgICAgICAgICAgIGRlcHRoLFxuICAgICAgICAgICAgZG9jLFxuICAgICAgICAgICAgZmllbGRQcm9taXNlcyxcbiAgICAgICAgICAgIGZpZWxkczogZmllbGQuZmllbGRzLFxuICAgICAgICAgICAgZmluZE1hbnksXG4gICAgICAgICAgICBmbGF0dGVuTG9jYWxlcyxcbiAgICAgICAgICAgIGdsb2JhbCxcbiAgICAgICAgICAgIG92ZXJyaWRlQWNjZXNzLFxuICAgICAgICAgICAgcG9wdWxhdGlvblByb21pc2VzLFxuICAgICAgICAgICAgcmVxLFxuICAgICAgICAgICAgc2hvd0hpZGRlbkZpZWxkcyxcbiAgICAgICAgICAgIHNpYmxpbmdEb2M6IHJvdyB8fCB7fSxcbiAgICAgICAgICAgIHRyaWdnZXJBY2Nlc3NDb250cm9sLFxuICAgICAgICAgICAgdHJpZ2dlckhvb2tzLFxuICAgICAgICAgIH0pXG4gICAgICAgIH0pXG4gICAgICB9IGVsc2UgaWYgKCFzaG91bGRIb2lzdExvY2FsaXplZFZhbHVlICYmIHR5cGVvZiByb3dzID09PSAnb2JqZWN0JyAmJiByb3dzICE9PSBudWxsKSB7XG4gICAgICAgIE9iamVjdC52YWx1ZXMocm93cykuZm9yRWFjaCgobG9jYWxlUm93cykgPT4ge1xuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGxvY2FsZVJvd3MpKSB7XG4gICAgICAgICAgICBsb2NhbGVSb3dzLmZvckVhY2goKHJvdykgPT4ge1xuICAgICAgICAgICAgICB0cmF2ZXJzZUZpZWxkcyh7XG4gICAgICAgICAgICAgICAgY29sbGVjdGlvbixcbiAgICAgICAgICAgICAgICBjb250ZXh0LFxuICAgICAgICAgICAgICAgIGN1cnJlbnREZXB0aCxcbiAgICAgICAgICAgICAgICBkZXB0aCxcbiAgICAgICAgICAgICAgICBkb2MsXG4gICAgICAgICAgICAgICAgZmllbGRQcm9taXNlcyxcbiAgICAgICAgICAgICAgICBmaWVsZHM6IGZpZWxkLmZpZWxkcyxcbiAgICAgICAgICAgICAgICBmaW5kTWFueSxcbiAgICAgICAgICAgICAgICBmbGF0dGVuTG9jYWxlcyxcbiAgICAgICAgICAgICAgICBnbG9iYWwsXG4gICAgICAgICAgICAgICAgb3ZlcnJpZGVBY2Nlc3MsXG4gICAgICAgICAgICAgICAgcG9wdWxhdGlvblByb21pc2VzLFxuICAgICAgICAgICAgICAgIHJlcSxcbiAgICAgICAgICAgICAgICBzaG93SGlkZGVuRmllbGRzLFxuICAgICAgICAgICAgICAgIHNpYmxpbmdEb2M6IHJvdyB8fCB7fSxcbiAgICAgICAgICAgICAgICB0cmlnZ2VyQWNjZXNzQ29udHJvbCxcbiAgICAgICAgICAgICAgICB0cmlnZ2VySG9va3MsXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNpYmxpbmdEb2NbZmllbGQubmFtZV0gPSBbXVxuICAgICAgfVxuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBjYXNlICdibG9ja3MnOiB7XG4gICAgICBjb25zdCByb3dzID0gc2libGluZ0RvY1tmaWVsZC5uYW1lXVxuXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShyb3dzKSkge1xuICAgICAgICByb3dzLmZvckVhY2goKHJvdykgPT4ge1xuICAgICAgICAgIGNvbnN0IGJsb2NrID0gZmllbGQuYmxvY2tzLmZpbmQoKGJsb2NrVHlwZSkgPT4gYmxvY2tUeXBlLnNsdWcgPT09IHJvdy5ibG9ja1R5cGUpXG5cbiAgICAgICAgICBpZiAoYmxvY2spIHtcbiAgICAgICAgICAgIHRyYXZlcnNlRmllbGRzKHtcbiAgICAgICAgICAgICAgY29sbGVjdGlvbixcbiAgICAgICAgICAgICAgY29udGV4dCxcbiAgICAgICAgICAgICAgY3VycmVudERlcHRoLFxuICAgICAgICAgICAgICBkZXB0aCxcbiAgICAgICAgICAgICAgZG9jLFxuICAgICAgICAgICAgICBmaWVsZFByb21pc2VzLFxuICAgICAgICAgICAgICBmaWVsZHM6IGJsb2NrLmZpZWxkcyxcbiAgICAgICAgICAgICAgZmluZE1hbnksXG4gICAgICAgICAgICAgIGZsYXR0ZW5Mb2NhbGVzLFxuICAgICAgICAgICAgICBnbG9iYWwsXG4gICAgICAgICAgICAgIG92ZXJyaWRlQWNjZXNzLFxuICAgICAgICAgICAgICBwb3B1bGF0aW9uUHJvbWlzZXMsXG4gICAgICAgICAgICAgIHJlcSxcbiAgICAgICAgICAgICAgc2hvd0hpZGRlbkZpZWxkcyxcbiAgICAgICAgICAgICAgc2libGluZ0RvYzogcm93IHx8IHt9LFxuICAgICAgICAgICAgICB0cmlnZ2VyQWNjZXNzQ29udHJvbCxcbiAgICAgICAgICAgICAgdHJpZ2dlckhvb2tzLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICB9IGVsc2UgaWYgKCFzaG91bGRIb2lzdExvY2FsaXplZFZhbHVlICYmIHR5cGVvZiByb3dzID09PSAnb2JqZWN0JyAmJiByb3dzICE9PSBudWxsKSB7XG4gICAgICAgIE9iamVjdC52YWx1ZXMocm93cykuZm9yRWFjaCgobG9jYWxlUm93cykgPT4ge1xuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGxvY2FsZVJvd3MpKSB7XG4gICAgICAgICAgICBsb2NhbGVSb3dzLmZvckVhY2goKHJvdykgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBibG9jayA9IGZpZWxkLmJsb2Nrcy5maW5kKChibG9ja1R5cGUpID0+IGJsb2NrVHlwZS5zbHVnID09PSByb3cuYmxvY2tUeXBlKVxuXG4gICAgICAgICAgICAgIGlmIChibG9jaykge1xuICAgICAgICAgICAgICAgIHRyYXZlcnNlRmllbGRzKHtcbiAgICAgICAgICAgICAgICAgIGNvbGxlY3Rpb24sXG4gICAgICAgICAgICAgICAgICBjb250ZXh0LFxuICAgICAgICAgICAgICAgICAgY3VycmVudERlcHRoLFxuICAgICAgICAgICAgICAgICAgZGVwdGgsXG4gICAgICAgICAgICAgICAgICBkb2MsXG4gICAgICAgICAgICAgICAgICBmaWVsZFByb21pc2VzLFxuICAgICAgICAgICAgICAgICAgZmllbGRzOiBibG9jay5maWVsZHMsXG4gICAgICAgICAgICAgICAgICBmaW5kTWFueSxcbiAgICAgICAgICAgICAgICAgIGZsYXR0ZW5Mb2NhbGVzLFxuICAgICAgICAgICAgICAgICAgZ2xvYmFsLFxuICAgICAgICAgICAgICAgICAgb3ZlcnJpZGVBY2Nlc3MsXG4gICAgICAgICAgICAgICAgICBwb3B1bGF0aW9uUHJvbWlzZXMsXG4gICAgICAgICAgICAgICAgICByZXEsXG4gICAgICAgICAgICAgICAgICBzaG93SGlkZGVuRmllbGRzLFxuICAgICAgICAgICAgICAgICAgc2libGluZ0RvYzogcm93IHx8IHt9LFxuICAgICAgICAgICAgICAgICAgdHJpZ2dlckFjY2Vzc0NvbnRyb2wsXG4gICAgICAgICAgICAgICAgICB0cmlnZ2VySG9va3MsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdID0gW11cbiAgICAgIH1cblxuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBjYXNlICdyb3cnOlxuICAgIGNhc2UgJ2NvbGxhcHNpYmxlJzoge1xuICAgICAgdHJhdmVyc2VGaWVsZHMoe1xuICAgICAgICBjb2xsZWN0aW9uLFxuICAgICAgICBjb250ZXh0LFxuICAgICAgICBjdXJyZW50RGVwdGgsXG4gICAgICAgIGRlcHRoLFxuICAgICAgICBkb2MsXG4gICAgICAgIGZpZWxkUHJvbWlzZXMsXG4gICAgICAgIGZpZWxkczogZmllbGQuZmllbGRzLFxuICAgICAgICBmaW5kTWFueSxcbiAgICAgICAgZmxhdHRlbkxvY2FsZXMsXG4gICAgICAgIGdsb2JhbCxcbiAgICAgICAgb3ZlcnJpZGVBY2Nlc3MsXG4gICAgICAgIHBvcHVsYXRpb25Qcm9taXNlcyxcbiAgICAgICAgcmVxLFxuICAgICAgICBzaG93SGlkZGVuRmllbGRzLFxuICAgICAgICBzaWJsaW5nRG9jLFxuICAgICAgICB0cmlnZ2VyQWNjZXNzQ29udHJvbCxcbiAgICAgICAgdHJpZ2dlckhvb2tzLFxuICAgICAgfSlcblxuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBjYXNlICd0YWInOiB7XG4gICAgICBsZXQgdGFiRG9jID0gc2libGluZ0RvY1xuICAgICAgaWYgKHRhYkhhc05hbWUoZmllbGQpKSB7XG4gICAgICAgIHRhYkRvYyA9IHNpYmxpbmdEb2NbZmllbGQubmFtZV0gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgICAgICAgaWYgKHR5cGVvZiBzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdICE9PSAnb2JqZWN0JykgdGFiRG9jID0ge31cbiAgICAgIH1cblxuICAgICAgdHJhdmVyc2VGaWVsZHMoe1xuICAgICAgICBjb2xsZWN0aW9uLFxuICAgICAgICBjb250ZXh0LFxuICAgICAgICBjdXJyZW50RGVwdGgsXG4gICAgICAgIGRlcHRoLFxuICAgICAgICBkb2MsXG4gICAgICAgIGZpZWxkUHJvbWlzZXMsXG4gICAgICAgIGZpZWxkczogZmllbGQuZmllbGRzLFxuICAgICAgICBmaW5kTWFueSxcbiAgICAgICAgZmxhdHRlbkxvY2FsZXMsXG4gICAgICAgIGdsb2JhbCxcbiAgICAgICAgb3ZlcnJpZGVBY2Nlc3MsXG4gICAgICAgIHBvcHVsYXRpb25Qcm9taXNlcyxcbiAgICAgICAgcmVxLFxuICAgICAgICBzaG93SGlkZGVuRmllbGRzLFxuICAgICAgICBzaWJsaW5nRG9jOiB0YWJEb2MsXG4gICAgICAgIHRyaWdnZXJBY2Nlc3NDb250cm9sLFxuICAgICAgICB0cmlnZ2VySG9va3MsXG4gICAgICB9KVxuXG4gICAgICBicmVha1xuICAgIH1cblxuICAgIGNhc2UgJ3RhYnMnOiB7XG4gICAgICB0cmF2ZXJzZUZpZWxkcyh7XG4gICAgICAgIGNvbGxlY3Rpb24sXG4gICAgICAgIGNvbnRleHQsXG4gICAgICAgIGN1cnJlbnREZXB0aCxcbiAgICAgICAgZGVwdGgsXG4gICAgICAgIGRvYyxcbiAgICAgICAgZmllbGRQcm9taXNlcyxcbiAgICAgICAgZmllbGRzOiBmaWVsZC50YWJzLm1hcCgodGFiKSA9PiAoeyAuLi50YWIsIHR5cGU6ICd0YWInIH0pKSxcbiAgICAgICAgZmluZE1hbnksXG4gICAgICAgIGZsYXR0ZW5Mb2NhbGVzLFxuICAgICAgICBnbG9iYWwsXG4gICAgICAgIG92ZXJyaWRlQWNjZXNzLFxuICAgICAgICBwb3B1bGF0aW9uUHJvbWlzZXMsXG4gICAgICAgIHJlcSxcbiAgICAgICAgc2hvd0hpZGRlbkZpZWxkcyxcbiAgICAgICAgc2libGluZ0RvYyxcbiAgICAgICAgdHJpZ2dlckFjY2Vzc0NvbnRyb2wsXG4gICAgICAgIHRyaWdnZXJIb29rcyxcbiAgICAgIH0pXG4gICAgICBicmVha1xuICAgIH1cblxuICAgIGRlZmF1bHQ6IHtcbiAgICAgIGJyZWFrXG4gICAgfVxuICB9XG59XG4iXSwibmFtZXMiOlsicHJvbWlzZSIsImNvbGxlY3Rpb24iLCJjb250ZXh0IiwiY3VycmVudERlcHRoIiwiZGVwdGgiLCJkb2MiLCJmaWVsZCIsImZpZWxkUHJvbWlzZXMiLCJmaW5kTWFueSIsImZsYXR0ZW5Mb2NhbGVzIiwiZ2xvYmFsIiwib3ZlcnJpZGVBY2Nlc3MiLCJwb3B1bGF0aW9uUHJvbWlzZXMiLCJyZXEiLCJzaG93SGlkZGVuRmllbGRzIiwic2libGluZ0RvYyIsInRyaWdnZXJBY2Nlc3NDb250cm9sIiwidHJpZ2dlckhvb2tzIiwiZmllbGRBZmZlY3RzRGF0YSIsImhpZGRlbiIsIm5hbWUiLCJzaG91bGRIb2lzdExvY2FsaXplZFZhbHVlIiwibG9jYWxpemVkIiwibG9jYWxlIiwicGF5bG9hZCIsImNvbmZpZyIsImxvY2FsaXphdGlvbiIsInZhbHVlIiwiZmFsbGJhY2tMb2NhbGUiLCJmYWxsYmFjayIsImhvaXN0ZWRWYWx1ZSIsImZhbGxiYWNrVmFsdWUiLCJpc051bGxPclVuZGVmaW5lZCIsInR5cGUiLCJ0YWJzIiwiZm9yRWFjaCIsInRhYiIsInRhYkhhc05hbWUiLCJlZGl0b3IiLCJwb3B1bGF0aW9uUHJvbWlzZSIsInB1c2giLCJhZnRlclJlYWRQcm9taXNlIiwiaW5jb21pbmdFZGl0b3JTdGF0ZSIsInBvaW50RG9jIiwiQXJyYXkiLCJpc0FycmF5IiwiY29vcmRpbmF0ZXMiLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJob29rcyIsImFmdGVyUmVhZCIsInJlZHVjZSIsInByaW9ySG9vayIsImN1cnJlbnRIb29rIiwic2hvdWxkUnVuSG9va09uQWxsTG9jYWxlcyIsImhvb2tQcm9taXNlcyIsIk9iamVjdCIsImVudHJpZXMiLCJtYXAiLCJob29rZWRWYWx1ZSIsImRhdGEiLCJvcGVyYXRpb24iLCJvcmlnaW5hbERvYyIsInNpYmxpbmdEYXRhIiwiUHJvbWlzZSIsImFsbCIsInJlc29sdmUiLCJhY2Nlc3MiLCJyZWFkIiwicmVzdWx0IiwiaWQiLCJyZWxhdGlvbnNoaXBQb3B1bGF0aW9uUHJvbWlzZSIsImdyb3VwRG9jIiwidHJhdmVyc2VGaWVsZHMiLCJmaWVsZHMiLCJyb3dzIiwicm93IiwidmFsdWVzIiwibG9jYWxlUm93cyIsImJsb2NrIiwiYmxvY2tzIiwiZmluZCIsImJsb2NrVHlwZSIsInNsdWciLCJ0YWJEb2MiXSwibWFwcGluZ3MiOiJBQUFBLG9DQUFvQzs7OzsrQkF1Q3ZCQTs7O2VBQUFBOzs7dUJBaENnQztzRkFDSDtnQ0FDWDs7Ozs7O0FBOEJ4QixNQUFNQSxVQUFVLE9BQU8sRUFDNUJDLFVBQVUsRUFDVkMsT0FBTyxFQUNQQyxZQUFZLEVBQ1pDLEtBQUssRUFDTEMsR0FBRyxFQUNIQyxLQUFLLEVBQ0xDLGFBQWEsRUFDYkMsUUFBUSxFQUNSQyxjQUFjLEVBQ2RDLE1BQU0sRUFDTkMsY0FBYyxFQUNkQyxrQkFBa0IsRUFDbEJDLEdBQUcsRUFDSEMsZ0JBQWdCLEVBQ2hCQyxVQUFVLEVBQ1ZDLHVCQUF1QixJQUFJLEVBQzNCQyxlQUFlLElBQUksRUFDZDtJQUNMLElBQ0VDLElBQUFBLHVCQUFnQixFQUFDWixVQUNqQkEsTUFBTWEsTUFBTSxJQUNaLE9BQU9KLFVBQVUsQ0FBQ1QsTUFBTWMsSUFBSSxDQUFDLEtBQUssZUFDbEMsQ0FBQ04sa0JBQ0Q7UUFDQSxPQUFPQyxVQUFVLENBQUNULE1BQU1jLElBQUksQ0FBQztJQUMvQjtJQUVBLE1BQU1DLDRCQUNKWixrQkFDQVMsSUFBQUEsdUJBQWdCLEVBQUNaLFVBQ2pCLE9B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
438
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9maWVsZHMvaG9va3MvYWZ0ZXJSZWFkL3Byb21pc2UudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcGFyYW0tcmVhc3NpZ24gKi9cbmltcG9ydCB0eXBlIHsgUmljaFRleHRBZGFwdGVyIH0gZnJvbSAnLi4vLi4vLi4vYWRtaW4vY29tcG9uZW50cy9mb3Jtcy9maWVsZC10eXBlcy9SaWNoVGV4dC90eXBlcydcbmltcG9ydCB0eXBlIHsgU2FuaXRpemVkQ29sbGVjdGlvbkNvbmZpZyB9IGZyb20gJy4uLy4uLy4uL2NvbGxlY3Rpb25zL2NvbmZpZy90eXBlcydcbmltcG9ydCB0eXBlIHsgUGF5bG9hZFJlcXVlc3QsIFJlcXVlc3RDb250ZXh0IH0gZnJvbSAnLi4vLi4vLi4vZXhwcmVzcy90eXBlcydcbmltcG9ydCB0eXBlIHsgU2FuaXRpemVkR2xvYmFsQ29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vZ2xvYmFscy9jb25maWcvdHlwZXMnXG5pbXBvcnQgdHlwZSB7IEZpZWxkLCBUYWJBc0ZpZWxkIH0gZnJvbSAnLi4vLi4vY29uZmlnL3R5cGVzJ1xuXG5pbXBvcnQgeyBmaWVsZEFmZmVjdHNEYXRhLCB0YWJIYXNOYW1lIH0gZnJvbSAnLi4vLi4vY29uZmlnL3R5cGVzJ1xuaW1wb3J0IGdldFZhbHVlV2l0aERlZmF1bHQgZnJvbSAnLi4vLi4vZ2V0RGVmYXVsdFZhbHVlJ1xuaW1wb3J0IHJlbGF0aW9uc2hpcFBvcHVsYXRpb25Qcm9taXNlIGZyb20gJy4vcmVsYXRpb25zaGlwUG9wdWxhdGlvblByb21pc2UnXG5pbXBvcnQgeyB0cmF2ZXJzZUZpZWxkcyB9IGZyb20gJy4vdHJhdmVyc2VGaWVsZHMnXG5cbnR5cGUgQXJncyA9IHtcbiAgY29sbGVjdGlvbjogU2FuaXRpemVkQ29sbGVjdGlvbkNvbmZpZyB8IG51bGxcbiAgY29udGV4dDogUmVxdWVzdENvbnRleHRcbiAgY3VycmVudERlcHRoOiBudW1iZXJcbiAgZGVwdGg6IG51bWJlclxuICBkb2M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gIGZpZWxkOiBGaWVsZCB8IFRhYkFzRmllbGRcbiAgZmllbGRQcm9taXNlczogUHJvbWlzZTx2b2lkPltdXG4gIGZpbmRNYW55OiBib29sZWFuXG4gIGZsYXR0ZW5Mb2NhbGVzOiBib29sZWFuXG4gIGdsb2JhbDogU2FuaXRpemVkR2xvYmFsQ29uZmlnIHwgbnVsbFxuICBvdmVycmlkZUFjY2VzczogYm9vbGVhblxuICBwb3B1bGF0aW9uUHJvbWlzZXM6IFByb21pc2U8dm9pZD5bXVxuICByZXE6IFBheWxvYWRSZXF1ZXN0XG4gIHNob3dIaWRkZW5GaWVsZHM6IGJvb2xlYW5cbiAgc2libGluZ0RvYzogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgdHJpZ2dlckFjY2Vzc0NvbnRyb2w/OiBib29sZWFuXG4gIHRyaWdnZXJIb29rcz86IGJvb2xlYW5cbn1cblxuLy8gVGhpcyBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3IgdGhlIGZvbGxvd2luZyBhY3Rpb25zLCBpbiBvcmRlcjpcbi8vIC0gUmVtb3ZlIGhpZGRlbiBmaWVsZHMgZnJvbSByZXNwb25zZVxuLy8gLSBGbGF0dGVuIGxvY2FsZXMgaW50byByZXF1ZXN0ZWQgbG9jYWxlXG4vLyAtIFNhbml0aXplIG91dGdvaW5nIGRhdGEgKHBvaW50IGZpZWxkLCBldGMuKVxuLy8gLSBFeGVjdXRlIGZpZWxkIGhvb2tzXG4vLyAtIEV4ZWN1dGUgcmVhZCBhY2Nlc3MgY29udHJvbFxuLy8gLSBQb3B1bGF0ZSByZWxhdGlvbnNoaXBzXG5cbmV4cG9ydCBjb25zdCBwcm9taXNlID0gYXN5bmMgKHtcbiAgY29sbGVjdGlvbixcbiAgY29udGV4dCxcbiAgY3VycmVudERlcHRoLFxuICBkZXB0aCxcbiAgZG9jLFxuICBmaWVsZCxcbiAgZmllbGRQcm9taXNlcyxcbiAgZmluZE1hbnksXG4gIGZsYXR0ZW5Mb2NhbGVzLFxuICBnbG9iYWwsXG4gIG92ZXJyaWRlQWNjZXNzLFxuICBwb3B1bGF0aW9uUHJvbWlzZXMsXG4gIHJlcSxcbiAgc2hvd0hpZGRlbkZpZWxkcyxcbiAgc2libGluZ0RvYyxcbiAgdHJpZ2dlckFjY2Vzc0NvbnRyb2wgPSB0cnVlLFxuICB0cmlnZ2VySG9va3MgPSB0cnVlLFxufTogQXJncyk6IFByb21pc2U8dm9pZD4gPT4ge1xuICBpZiAoXG4gICAgZmllbGRBZmZlY3RzRGF0YShmaWVsZCkgJiZcbiAgICBmaWVsZC5oaWRkZW4gJiZcbiAgICB0eXBlb2Ygc2libGluZ0RvY1tmaWVsZC5uYW1lXSAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAhc2hvd0hpZGRlbkZpZWxkc1xuICApIHtcbiAgICBkZWxldGUgc2libGluZ0RvY1tmaWVsZC5uYW1lXVxuICB9XG5cbiAgY29uc3Qgc2hvdWxkSG9pc3RMb2NhbGl6ZWRWYWx1ZSA9XG4gICAgZmxhdHRlbkxvY2FsZXMgJiZcbiAgICBmaWVsZEFmZmVjdHNEYXRhKGZpZWxkKSAmJlxuICAgIHR5cGVvZiBzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdID09PSAnb2JqZWN0JyAmJlxuICAgIHNpYmxpbmdEb2NbZmllbGQubmFtZV0gIT09IG51bGwgJiZcbiAgICBmaWVsZC5sb2NhbGl6ZWQgJiZcbiAgICByZXEubG9jYWxlICE9PSAnYWxsJyAmJlxuICAgIHJlcS5wYXlsb2FkLmNvbmZpZy5sb2NhbGl6YXRpb25cblxuICBpZiAoc2hvdWxkSG9pc3RMb2NhbGl6ZWRWYWx1ZSkge1xuICAgIC8vIHJlcGxhY2UgYWN0dWFsIHZhbHVlIHdpdGggbG9jYWxpemVkIHZhbHVlIGJlZm9yZSBzYW5pdGl6aW5nXG4gICAgLy8geyBbbG9jYWxlXTogZmllbGRzIH0gLT4gZmllbGRzXG4gICAgY29uc3QgeyBsb2NhbGUgfSA9IHJlcVxuICAgIGNvbnN0IHZhbHVlID0gc2libGluZ0RvY1tmaWVsZC5uYW1lXVtsb2NhbGVdXG4gICAgY29uc3QgZmFsbGJhY2tMb2NhbGUgPVxuICAgICAgcmVxLnBheWxvYWQuY29uZmlnLmxvY2FsaXphdGlvbiAmJlxuICAgICAgcmVxLnBheWxvYWQuY29uZmlnLmxvY2FsaXphdGlvbj8uZmFsbGJhY2sgJiZcbiAgICAgIHJlcS5mYWxsYmFja0xvY2FsZVxuXG4gICAgbGV0IGhvaXN0ZWRWYWx1ZSA9IHZhbHVlXG5cbiAgICBpZiAoZmFsbGJhY2tMb2NhbGUgJiYgZmFsbGJhY2tMb2NhbGUgIT09IGxvY2FsZSkge1xuICAgICAgY29uc3QgZmFsbGJhY2tWYWx1ZSA9IHNpYmxpbmdEb2NbZmllbGQubmFtZV1bZmFsbGJhY2tMb2NhbGVdXG4gICAgICBjb25zdCBpc051bGxPclVuZGVmaW5lZCA9IHR5cGVvZiB2YWx1ZSA9PT0gJ3VuZGVmaW5lZCcgfHwgdmFsdWUgPT09IG51bGxcblxuICAgICAgaWYgKGZhbGxiYWNrVmFsdWUpIHtcbiAgICAgICAgc3dpdGNoIChmaWVsZC50eXBlKSB7XG4gICAgICAgICAgY2FzZSAndGV4dCc6XG4gICAgICAgICAgY2FzZSAndGV4dGFyZWEnOiB7XG4gICAgICAgICAgICBpZiAodmFsdWUgPT09ICcnIHx8IGlzTnVsbE9yVW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgIGhvaXN0ZWRWYWx1ZSA9IGZhbGxiYWNrVmFsdWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgIGhvaXN0ZWRWYWx1ZSA9IGZhbGxiYWNrVmFsdWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgc2libGluZ0RvY1tmaWVsZC5uYW1lXSA9IGhvaXN0ZWRWYWx1ZVxuICB9XG5cbiAgLy8gU2FuaXRpemUgb3V0Z29pbmcgZmllbGQgdmFsdWVcbiAgc3dpdGNoIChmaWVsZC50eXBlKSB7XG4gICAgY2FzZSAnZ3JvdXAnOiB7XG4gICAgICAvLyBGaWxsIGdyb3VwcyB3aXRoIGVtcHR5IG9iamVjdHMgc28gZmllbGRzIHdpdGggaG9va3Mgd2l0aGluIGdyb3VwcyBjYW4gcG9wdWxhdGVcbiAgICAgIC8vIHRoZW1zZWx2ZXMgdmlydHVhbGx5IGFzIG5lY2Vzc2FyeVxuICAgICAgaWYgKHR5cGVvZiBzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICBzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdID0ge31cbiAgICAgIH1cblxuICAgICAgYnJlYWtcbiAgICB9XG4gICAgY2FzZSAndGFicyc6IHtcbiAgICAgIGZpZWxkLnRhYnMuZm9yRWFjaCgodGFiKSA9PiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICB0YWJIYXNOYW1lKHRhYikgJiZcbiAgICAgICAgICAodHlwZW9mIHNpYmxpbmdEb2NbdGFiLm5hbWVdID09PSAndW5kZWZpbmVkJyB8fCBzaWJsaW5nRG9jW3RhYi5uYW1lXSA9PT0gbnVsbClcbiAgICAgICAgKSB7XG4gICAgICAgICAgc2libGluZ0RvY1t0YWIubmFtZV0gPSB7fVxuICAgICAgICB9XG4gICAgICB9KVxuXG4gICAgICBicmVha1xuICAgIH1cblxuICAgIGNhc2UgJ3JpY2hUZXh0Jzoge1xuICAgICAgY29uc3QgZWRpdG9yOiBSaWNoVGV4dEFkYXB0ZXIgPSBmaWVsZD8uZWRpdG9yXG4gICAgICAvLyBUaGlzIGlzIHJ1biBoZXJlIEFORCBpbiB0aGUgR3JhcGhRTCBSZXNvbHZlclxuICAgICAgaWYgKGVkaXRvcj8ucG9wdWxhdGlvblByb21pc2UpIHtcbiAgICAgICAgY29uc3QgcG9wdWxhdGlvblByb21pc2UgPSBlZGl0b3IucG9wdWxhdGlvblByb21pc2Uoe1xuICAgICAgICAgIGNvbnRleHQsXG4gICAgICAgICAgY3VycmVudERlcHRoLFxuICAgICAgICAgIGRlcHRoLFxuICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgIGZpbmRNYW55LFxuICAgICAgICAgIGZsYXR0ZW5Mb2NhbGVzLFxuICAgICAgICAgIG92ZXJyaWRlQWNjZXNzLFxuICAgICAgICAgIHBvcHVsYXRpb25Qcm9taXNlcyxcbiAgICAgICAgICByZXEsXG4gICAgICAgICAgc2hvd0hpZGRlbkZpZWxkcyxcbiAgICAgICAgICBzaWJsaW5nRG9jLFxuICAgICAgICB9KVxuXG4gICAgICAgIGlmIChwb3B1bGF0aW9uUHJvbWlzZSkge1xuICAgICAgICAgIHBvcHVsYXRpb25Qcm9taXNlcy5wdXNoKHBvcHVsYXRpb25Qcm9taXNlKVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIFRoaXMgaXMgb25seSBydW4gaGVyZSwgaW5kZXBlbmRlbnQgb2YgZGVwdGhcbiAgICAgIGlmIChlZGl0b3I/LmFmdGVyUmVhZFByb21pc2UpIHtcbiAgICAgICAgY29uc3QgYWZ0ZXJSZWFkUHJvbWlzZSA9IGVkaXRvcj8uYWZ0ZXJSZWFkUHJvbWlzZSh7XG4gICAgICAgICAgZmllbGQsXG4gICAgICAgICAgaW5jb21pbmdFZGl0b3JTdGF0ZTogc2libGluZ0RvY1tmaWVsZC5uYW1lXSBhcyBvYmplY3QsXG4gICAgICAgICAgc2libGluZ0RvYyxcbiAgICAgICAgfSlcblxuICAgICAgICBpZiAoYWZ0ZXJSZWFkUHJvbWlzZSkge1xuICAgICAgICAgIHBvcHVsYXRpb25Qcm9taXNlcy5wdXNoKGFmdGVyUmVhZFByb21pc2UpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBjYXNlICdwb2ludCc6IHtcbiAgICAgIGNvbnN0IHBvaW50RG9jID0gc2libGluZ0RvY1tmaWVsZC5uYW1lXSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkocG9pbnREb2M/LmNvb3JkaW5hdGVzKSAmJiBwb2ludERvYy5jb29yZGluYXRlcy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgc2libGluZ0RvY1tmaWVsZC5uYW1lXSA9IHBvaW50RG9jLmNvb3JkaW5hdGVzXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdID0gdW5kZWZpbmVkXG4gICAgICB9XG5cbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgZGVmYXVsdDoge1xuICAgICAgYnJlYWtcbiAgICB9XG4gIH1cblxuICBpZiAoZmllbGRBZmZlY3RzRGF0YShmaWVsZCkpIHtcbiAgICAvLyBFeGVjdXRlIGhvb2tzXG4gICAgaWYgKHRyaWdnZXJIb29rcyAmJiBmaWVsZC5ob29rcz8uYWZ0ZXJSZWFkKSB7XG4gICAgICBhd2FpdCBmaWVsZC5ob29rcy5hZnRlclJlYWQucmVkdWNlKGFzeW5jIChwcmlvckhvb2ssIGN1cnJlbnRIb29rKSA9PiB7XG4gICAgICAgIGF3YWl0IHByaW9ySG9va1xuXG4gICAgICAgIGNvbnN0IHNob3VsZFJ1bkhvb2tPbkFsbExvY2FsZXMgPVxuICAgICAgICAgIGZpZWxkLmxvY2FsaXplZCAmJlxuICAgICAgICAgIChyZXEubG9jYWxlID09PSAnYWxsJyB8fCAhZmxhdHRlbkxvY2FsZXMpICYmXG4gICAgICAgICAgdHlwZW9mIHNpYmxpbmdEb2NbZmllbGQubmFtZV0gPT09ICdvYmplY3QnXG5cbiAgICAgICAgaWYgKHNob3VsZFJ1bkhvb2tPbkFsbExvY2FsZXMpIHtcbiAgICAgICAgICBjb25zdCBob29rUHJvbWlzZXMgPSBPYmplY3QuZW50cmllcyhzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdKS5tYXAoKFtsb2NhbGUsIHZhbHVlXSkgPT5cbiAgICAgICAgICAgIChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGhvb2tlZFZhbHVlID0gYXdhaXQgY3VycmVudEhvb2soe1xuICAgICAgICAgICAgICAgIGNvbGxlY3Rpb24sXG4gICAgICAgICAgICAgICAgY29udGV4dCxcbiAgICAgICAgICAgICAgICBkYXRhOiBkb2MsXG4gICAgICAgICAgICAgICAgZmllbGQsXG4gICAgICAgICAgICAgICAgZ2xvYmFsLFxuICAgICAgICAgICAgICAgIG9wZXJhdGlvbjogJ3JlYWQnLFxuICAgICAgICAgICAgICAgIG9yaWdpbmFsRG9jOiBkb2MsXG4gICAgICAgICAgICAgICAgcmVxLFxuICAgICAgICAgICAgICAgIHNpYmxpbmdEYXRhOiBzaWJsaW5nRG9jLFxuICAgICAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICAgIGlmIChob29rZWRWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgc2libGluZ0RvY1tmaWVsZC5uYW1lXVtsb2NhbGVdID0gaG9va2VkVmFsdWVcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSkoKSxcbiAgICAgICAgICApXG5cbiAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChob29rUHJvbWlzZXMpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgaG9va2VkVmFsdWUgPSBhd2FpdCBjdXJyZW50SG9vayh7XG4gICAgICAgICAgICBjb2xsZWN0aW9uLFxuICAgICAgICAgICAgY29udGV4dCxcbiAgICAgICAgICAgIGRhdGE6IGRvYyxcbiAgICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgICAgZmluZE1hbnksXG4gICAgICAgICAgICBnbG9iYWwsXG4gICAgICAgICAgICBvcGVyYXRpb246ICdyZWFkJyxcbiAgICAgICAgICAgIG9yaWdpbmFsRG9jOiBkb2MsXG4gICAgICAgICAgICByZXEsXG4gICAgICAgICAgICBzaWJsaW5nRGF0YTogc2libGluZ0RvYyxcbiAgICAgICAgICAgIHZhbHVlOiBzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdLFxuICAgICAgICAgIH0pXG5cbiAgICAgICAgICBpZiAoaG9va2VkVmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgc2libGluZ0RvY1tmaWVsZC5uYW1lXSA9IGhvb2tlZFZhbHVlXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LCBQcm9taXNlLnJlc29sdmUoKSlcbiAgICB9XG5cbiAgICAvLyBFeGVjdXRlIGFjY2VzcyBjb250cm9sXG4gICAgbGV0IGFsbG93RGVmYXVsdFZhbHVlID0gdHJ1ZVxuICAgIGlmICh0cmlnZ2VyQWNjZXNzQ29udHJvbCAmJiBmaWVsZC5hY2Nlc3MgJiYgZmllbGQuYWNjZXNzLnJlYWQpIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IG92ZXJyaWRlQWNjZXNzXG4gICAgICAgID8gdHJ1ZVxuICAgICAgICA6IGF3YWl0IGZpZWxkLmFjY2Vzcy5yZWFkKHtcbiAgICAgICAgICAgIGlkOiBkb2MuaWQgYXMgbnVtYmVyIHwgc3RyaW5nLFxuICAgICAgICAgICAgZGF0YTogZG9jLFxuICAgICAgICAgICAgZG9jLFxuICAgICAgICAgICAgcmVxLFxuICAgICAgICAgICAgc2libGluZ0RhdGE6IHNpYmxpbmdEb2MsXG4gICAgICAgICAgfSlcblxuICAgICAgaWYgKCFyZXN1bHQpIHtcbiAgICAgICAgYWxsb3dEZWZhdWx0VmFsdWUgPSBmYWxzZVxuICAgICAgICBkZWxldGUgc2libGluZ0RvY1tmaWVsZC5uYW1lXVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNldCBkZWZhdWx0VmFsdWUgb24gdGhlIGZpZWxkIGZvciBnbG9iYWxzIGJlaW5nIHJldHVybmVkIHdpdGhvdXQgYmVpbmcgZmlyc3QgY3JlYXRlZFxuICAgIC8vIG9yIGNvbGxlY3Rpb24gZG9jdW1lbnRzIGNyZWF0ZWQgcHJpb3IgdG8gaGF2aW5nIGEgZGVmYXVsdFxuICAgIGlmIChcbiAgICAgIGFsbG93RGVmYXVsdFZhbHVlICYmXG4gICAgICB0eXBlb2Ygc2libGluZ0RvY1tmaWVsZC5uYW1lXSA9PT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAgIHR5cGVvZiBmaWVsZC5kZWZhdWx0VmFsdWUgIT09ICd1bmRlZmluZWQnXG4gICAgKSB7XG4gICAgICBzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdID0gYXdhaXQgZ2V0VmFsdWVXaXRoRGVmYXVsdCh7XG4gICAgICAgIGRlZmF1bHRWYWx1ZTogZmllbGQuZGVmYXVsdFZhbHVlLFxuICAgICAgICBsb2NhbGU6IHJlcS5sb2NhbGUsXG4gICAgICAgIHVzZXI6IHJlcS51c2VyLFxuICAgICAgICB2YWx1ZTogc2libGluZ0RvY1tmaWVsZC5uYW1lXSxcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgaWYgKGZpZWxkLnR5cGUgPT09ICdyZWxhdGlvbnNoaXAnIHx8IGZpZWxkLnR5cGUgPT09ICd1cGxvYWQnKSB7XG4gICAgICBwb3B1bGF0aW9uUHJvbWlzZXMucHVzaChcbiAgICAgICAgcmVsYXRpb25zaGlwUG9wdWxhdGlvblByb21pc2Uoe1xuICAgICAgICAgIGN1cnJlbnREZXB0aCxcbiAgICAgICAgICBkZXB0aCxcbiAgICAgICAgICBmaWVsZCxcbiAgICAgICAgICBvdmVycmlkZUFjY2VzcyxcbiAgICAgICAgICByZXEsXG4gICAgICAgICAgc2hvd0hpZGRlbkZpZWxkcyxcbiAgICAgICAgICBzaWJsaW5nRG9jLFxuICAgICAgICB9KSxcbiAgICAgIClcbiAgICB9XG4gIH1cblxuICBzd2l0Y2ggKGZpZWxkLnR5cGUpIHtcbiAgICBjYXNlICdncm91cCc6IHtcbiAgICAgIGxldCBncm91cERvYyA9IHNpYmxpbmdEb2NbZmllbGQubmFtZV0gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgICAgIGlmICh0eXBlb2Ygc2libGluZ0RvY1tmaWVsZC5uYW1lXSAhPT0gJ29iamVjdCcpIGdyb3VwRG9jID0ge31cblxuICAgICAgdHJhdmVyc2VGaWVsZHMoe1xuICAgICAgICBjb2xsZWN0aW9uLFxuICAgICAgICBjb250ZXh0LFxuICAgICAgICBjdXJyZW50RGVwdGgsXG4gICAgICAgIGRlcHRoLFxuICAgICAgICBkb2MsXG4gICAgICAgIGZpZWxkUHJvbWlzZXMsXG4gICAgICAgIGZpZWxkczogZmllbGQuZmllbGRzLFxuICAgICAgICBmaW5kTWFueSxcbiAgICAgICAgZmxhdHRlbkxvY2FsZXMsXG4gICAgICAgIGdsb2JhbCxcbiAgICAgICAgb3ZlcnJpZGVBY2Nlc3MsXG4gICAgICAgIHBvcHVsYXRpb25Qcm9taXNlcyxcbiAgICAgICAgcmVxLFxuICAgICAgICBzaG93SGlkZGVuRmllbGRzLFxuICAgICAgICBzaWJsaW5nRG9jOiBncm91cERvYyxcbiAgICAgICAgdHJpZ2dlckFjY2Vzc0NvbnRyb2wsXG4gICAgICAgIHRyaWdnZXJIb29rcyxcbiAgICAgIH0pXG5cbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgY2FzZSAnYXJyYXknOiB7XG4gICAgICBjb25zdCByb3dzID0gc2libGluZ0RvY1tmaWVsZC5uYW1lXVxuXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShyb3dzKSkge1xuICAgICAgICByb3dzLmZvckVhY2goKHJvdykgPT4ge1xuICAgICAgICAgIHRyYXZlcnNlRmllbGRzKHtcbiAgICAgICAgICAgIGNvbGxlY3Rpb24sXG4gICAgICAgICAgICBjb250ZXh0LFxuICAgICAgICAgICAgY3VycmVudERlcHRoLFxuICAgICAgICAgICAgZGVwdGgsXG4gICAgICAgICAgICBkb2MsXG4gICAgICAgICAgICBmaWVsZFByb21pc2VzLFxuICAgICAgICAgICAgZmllbGRzOiBmaWVsZC5maWVsZHMsXG4gICAgICAgICAgICBmaW5kTWFueSxcbiAgICAgICAgICAgIGZsYXR0ZW5Mb2NhbGVzLFxuICAgICAgICAgICAgZ2xvYmFsLFxuICAgICAgICAgICAgb3ZlcnJpZGVBY2Nlc3MsXG4gICAgICAgICAgICBwb3B1bGF0aW9uUHJvbWlzZXMsXG4gICAgICAgICAgICByZXEsXG4gICAgICAgICAgICBzaG93SGlkZGVuRmllbGRzLFxuICAgICAgICAgICAgc2libGluZ0RvYzogcm93IHx8IHt9LFxuICAgICAgICAgICAgdHJpZ2dlckFjY2Vzc0NvbnRyb2wsXG4gICAgICAgICAgICB0cmlnZ2VySG9va3MsXG4gICAgICAgICAgfSlcbiAgICAgICAgfSlcbiAgICAgIH0gZWxzZSBpZiAoIXNob3VsZEhvaXN0TG9jYWxpemVkVmFsdWUgJiYgdHlwZW9mIHJvd3MgPT09ICdvYmplY3QnICYmIHJvd3MgIT09IG51bGwpIHtcbiAgICAgICAgT2JqZWN0LnZhbHVlcyhyb3dzKS5mb3JFYWNoKChsb2NhbGVSb3dzKSA9PiB7XG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkobG9jYWxlUm93cykpIHtcbiAgICAgICAgICAgIGxvY2FsZVJvd3MuZm9yRWFjaCgocm93KSA9PiB7XG4gICAgICAgICAgICAgIHRyYXZlcnNlRmllbGRzKHtcbiAgICAgICAgICAgICAgICBjb2xsZWN0aW9uLFxuICAgICAgICAgICAgICAgIGNvbnRleHQsXG4gICAgICAgICAgICAgICAgY3VycmVudERlcHRoLFxuICAgICAgICAgICAgICAgIGRlcHRoLFxuICAgICAgICAgICAgICAgIGRvYyxcbiAgICAgICAgICAgICAgICBmaWVsZFByb21pc2VzLFxuICAgICAgICAgICAgICAgIGZpZWxkczogZmllbGQuZmllbGRzLFxuICAgICAgICAgICAgICAgIGZpbmRNYW55LFxuICAgICAgICAgICAgICAgIGZsYXR0ZW5Mb2NhbGVzLFxuICAgICAgICAgICAgICAgIGdsb2JhbCxcbiAgICAgICAgICAgICAgICBvdmVycmlkZUFjY2VzcyxcbiAgICAgICAgICAgICAgICBwb3B1bGF0aW9uUHJvbWlzZXMsXG4gICAgICAgICAgICAgICAgcmVxLFxuICAgICAgICAgICAgICAgIHNob3dIaWRkZW5GaWVsZHMsXG4gICAgICAgICAgICAgICAgc2libGluZ0RvYzogcm93IHx8IHt9LFxuICAgICAgICAgICAgICAgIHRyaWdnZXJBY2Nlc3NDb250cm9sLFxuICAgICAgICAgICAgICAgIHRyaWdnZXJIb29rcyxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2libGluZ0RvY1tmaWVsZC5uYW1lXSA9IFtdXG4gICAgICB9XG4gICAgICBicmVha1xuICAgIH1cblxuICAgIGNhc2UgJ2Jsb2Nrcyc6IHtcbiAgICAgIGNvbnN0IHJvd3MgPSBzaWJsaW5nRG9jW2ZpZWxkLm5hbWVdXG5cbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHJvd3MpKSB7XG4gICAgICAgIHJvd3MuZm9yRWFjaCgocm93KSA9PiB7XG4gICAgICAgICAgY29uc3QgYmxvY2sgPSBmaWVsZC5ibG9ja3MuZmluZCgoYmxvY2tUeXBlKSA9PiBibG9ja1R5cGUuc2x1ZyA9PT0gcm93LmJsb2NrVHlwZSlcblxuICAgICAgICAgIGlmIChibG9jaykge1xuICAgICAgICAgICAgdHJhdmVyc2VGaWVsZHMoe1xuICAgICAgICAgICAgICBjb2xsZWN0aW9uLFxuICAgICAgICAgICAgICBjb250ZXh0LFxuICAgICAgICAgICAgICBjdXJyZW50RGVwdGgsXG4gICAgICAgICAgICAgIGRlcHRoLFxuICAgICAgICAgICAgICBkb2MsXG4gICAgICAgICAgICAgIGZpZWxkUHJvbWlzZXMsXG4gICAgICAgICAgICAgIGZpZWxkczogYmxvY2suZmllbGRzLFxuICAgICAgICAgICAgICBmaW5kTWFueSxcbiAgICAgICAgICAgICAgZmxhdHRlbkxvY2FsZXMsXG4gICAgICAgICAgICAgIGdsb2JhbCxcbiAgICAgICAgICAgICAgb3ZlcnJpZGVBY2Nlc3MsXG4gICAgICAgICAgICAgIHBvcHVsYXRpb25Qcm9taXNlcyxcbiAgICAgICAgICAgICAgcmVxLFxuICAgICAgICAgICAgICBzaG93SGlkZGVuRmllbGRzLFxuICAgICAgICAgICAgICBzaWJsaW5nRG9jOiByb3cgfHwge30sXG4gICAgICAgICAgICAgIHRyaWdnZXJBY2Nlc3NDb250cm9sLFxuICAgICAgICAgICAgICB0cmlnZ2VySG9va3MsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIH0gZWxzZSBpZiAoIXNob3VsZEhvaXN0TG9jYWxpemVkVmFsdWUgJiYgdHlwZW9mIHJvd3MgPT09ICdvYmplY3QnICYmIHJvd3MgIT09IG51bGwpIHtcbiAgICAgICAgT2JqZWN0LnZhbHVlcyhyb3dzKS5mb3JFYWNoKChsb2NhbGVSb3dzKSA9PiB7XG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkobG9jYWxlUm93cykpIHtcbiAgICAgICAgICAgIGxvY2FsZVJvd3MuZm9yRWFjaCgocm93KSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGJsb2NrID0gZmllbGQuYmxvY2tzLmZpbmQoKGJsb2NrVHlwZSkgPT4gYmxvY2tUeXBlLnNsdWcgPT09IHJvdy5ibG9ja1R5cGUpXG5cbiAgICAgICAgICAgICAgaWYgKGJsb2NrKSB7XG4gICAgICAgICAgICAgICAgdHJhdmVyc2VGaWVsZHMoe1xuICAgICAgICAgICAgICAgICAgY29sbGVjdGlvbixcbiAgICAgICAgICAgICAgICAgIGNvbnRleHQsXG4gICAgICAgICAgICAgICAgICBjdXJyZW50RGVwdGgsXG4gICAgICAgICAgICAgICAgICBkZXB0aCxcbiAgICAgICAgICAgICAgICAgIGRvYyxcbiAgICAgICAgICAgICAgICAgIGZpZWxkUHJvbWlzZXMsXG4gICAgICAgICAgICAgICAgICBmaWVsZHM6IGJsb2NrLmZpZWxkcyxcbiAgICAgICAgICAgICAgICAgIGZpbmRNYW55LFxuICAgICAgICAgICAgICAgICAgZmxhdHRlbkxvY2FsZXMsXG4gICAgICAgICAgICAgICAgICBnbG9iYWwsXG4gICAgICAgICAgICAgICAgICBvdmVycmlkZUFjY2VzcyxcbiAgICAgICAgICAgICAgICAgIHBvcHVsYXRpb25Qcm9taXNlcyxcbiAgICAgICAgICAgICAgICAgIHJlcSxcbiAgICAgICAgICAgICAgICAgIHNob3dIaWRkZW5GaWVsZHMsXG4gICAgICAgICAgICAgICAgICBzaWJsaW5nRG9jOiByb3cgfHwge30sXG4gICAgICAgICAgICAgICAgICB0cmlnZ2VyQWNjZXNzQ29udHJvbCxcbiAgICAgICAgICAgICAgICAgIHRyaWdnZXJIb29rcyxcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNpYmxpbmdEb2NbZmllbGQubmFtZV0gPSBbXVxuICAgICAgfVxuXG4gICAgICBicmVha1xuICAgIH1cblxuICAgIGNhc2UgJ3Jvdyc6XG4gICAgY2FzZSAnY29sbGFwc2libGUnOiB7XG4gICAgICB0cmF2ZXJzZUZpZWxkcyh7XG4gICAgICAgIGNvbGxlY3Rpb24sXG4gICAgICAgIGNvbnRleHQsXG4gICAgICAgIGN1cnJlbnREZXB0aCxcbiAgICAgICAgZGVwdGgsXG4gICAgICAgIGRvYyxcbiAgICAgICAgZmllbGRQcm9taXNlcyxcbiAgICAgICAgZmllbGRzOiBmaWVsZC5maWVsZHMsXG4gICAgICAgIGZpbmRNYW55LFxuICAgICAgICBmbGF0dGVuTG9jYWxlcyxcbiAgICAgICAgZ2xvYmFsLFxuICAgICAgICBvdmVycmlkZUFjY2VzcyxcbiAgICAgICAgcG9wdWxhdGlvblByb21pc2VzLFxuICAgICAgICByZXEsXG4gICAgICAgIHNob3dIaWRkZW5GaWVsZHMsXG4gICAgICAgIHNpYmxpbmdEb2MsXG4gICAgICAgIHRyaWdnZXJBY2Nlc3NDb250cm9sLFxuICAgICAgICB0cmlnZ2VySG9va3MsXG4gICAgICB9KVxuXG4gICAgICBicmVha1xuICAgIH1cblxuICAgIGNhc2UgJ3RhYic6IHtcbiAgICAgIGxldCB0YWJEb2MgPSBzaWJsaW5nRG9jXG4gICAgICBpZiAodGFiSGFzTmFtZShmaWVsZCkpIHtcbiAgICAgICAgdGFiRG9jID0gc2libGluZ0RvY1tmaWVsZC5uYW1lXSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICAgICAgICBpZiAodHlwZW9mIHNpYmxpbmdEb2NbZmllbGQubmFtZV0gIT09ICdvYmplY3QnKSB0YWJEb2MgPSB7fVxuICAgICAgfVxuXG4gICAgICB0cmF2ZXJzZUZpZWxkcyh7XG4gICAgICAgIGNvbGxlY3Rpb24sXG4gICAgICAgIGNvbnRleHQsXG4gICAgICAgIGN1cnJlbnREZXB0aCxcbiAgICAgICAgZGVwdGgsXG4gICAgICAgIGRvYyxcbiAgICAgICAgZmllbGRQcm9taXNlcyxcbiAgICAgICAgZmllbGRzOiBmaWVsZC5maWVsZHMsXG4gICAgICAgIGZpbmRNYW55LFxuICAgICAgICBmbGF0dGVuTG9jYWxlcyxcbiAgICAgICAgZ2xvYmFsLFxuICAgICAgICBvdmVycmlkZUFjY2VzcyxcbiAgICAgICAgcG9wdWxhdGlvblByb21pc2VzLFxuICAgICAgICByZXEsXG4gICAgICAgIHNob3dIaWRkZW5GaWVsZHMsXG4gICAgICAgIHNpYmxpbmdEb2M6IHRhYkRvYyxcbiAgICAgICAgdHJpZ2dlckFjY2Vzc0NvbnRyb2wsXG4gICAgICAgIHRyaWdnZXJIb29rcyxcbiAgICAgIH0pXG5cbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgY2FzZSAndGFicyc6IHtcbiAgICAgIHRyYXZlcnNlRmllbGRzKHtcbiAgICAgICAgY29sbGVjdGlvbixcbiAgICAgICAgY29udGV4dCxcbiAgICAgICAgY3VycmVudERlcHRoLFxuICAgICAgICBkZXB0aCxcbiAgICAgICAgZG9jLFxuICAgICAgICBmaWVsZFByb21pc2VzLFxuICAgICAgICBmaWVsZHM6IGZpZWxkLnRhYnMubWFwKCh0YWIpID0+ICh7IC4uLnRhYiwgdHlwZTogJ3RhYicgfSkpLFxuICAgICAgICBmaW5kTWFueSxcbiAgICAgICAgZmxhdHRlbkxvY2FsZXMsXG4gICAgICAgIGdsb2JhbCxcbiAgICAgICAgb3ZlcnJpZGVBY2Nlc3MsXG4gICAgICAgIHBvcHVsYXRpb25Qcm9taXNlcyxcbiAgICAgICAgcmVxLFxuICAgICAgICBzaG93SGlkZGVuRmllbGRzLFxuICAgICAgICBzaWJsaW5nRG9jLFxuICAgICAgICB0cmlnZ2VyQWNjZXNzQ29udHJvbCxcbiAgICAgICAgdHJpZ2dlckhvb2tzLFxuICAgICAgfSlcbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgZGVmYXVsdDoge1xuICAgICAgYnJlYWtcbiAgICB9XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJwcm9taXNlIiwiY29sbGVjdGlvbiIsImNvbnRleHQiLCJjdXJyZW50RGVwdGgiLCJkZXB0aCIsImRvYyIsImZpZWxkIiwiZmllbGRQcm9taXNlcyIsImZpbmRNYW55IiwiZmxhdHRlbkxvY2FsZXMiLCJnbG9iYWwiLCJvdmVycmlkZUFjY2VzcyIsInBvcHVsYXRpb25Qcm9taXNlcyIsInJlcSIsInNob3dIaWRkZW5GaWVsZHMiLCJzaWJsaW5nRG9jIiwidHJpZ2dlckFjY2Vzc0NvbnRyb2wiLCJ0cmlnZ2VySG9va3MiLCJmaWVsZEFmZmVjdHNEYXRhIiwiaGlkZGVuIiwibmFtZSIsInNob3VsZEhvaXN0TG9jYWxpemVkVmFsdWUiLCJsb2NhbGl6ZWQiLCJsb2NhbGUiLCJwYXlsb2FkIiwiY29uZmlnIiwibG9jYWxpemF0aW9uIiwidmFsdWUiLCJmYWxsYmFja0xvY2FsZSIsImZhbGxiYWNrIiwiaG9pc3RlZFZhbHVlIiwiZmFsbGJhY2tWYWx1ZSIsImlzTnVsbE9yVW5kZWZpbmVkIiwidHlwZSIsInRhYnMiLCJmb3JFYWNoIiwidGFiIiwidGFiSGFzTmFtZSIsImVkaXRvciIsInBvcHVsYXRpb25Qcm9taXNlIiwicHVzaCIsImFmdGVyUmVhZFByb21pc2UiLCJpbmNvbWluZ0VkaXRvclN0YXRlIiwicG9pbnREb2MiLCJBcnJheSIsImlzQXJyYXkiLCJjb29yZGluYXRlcyIsImxlbmd0aCIsInVuZGVmaW5lZCIsImhvb2tzIiwiYWZ0ZXJSZWFkIiwicmVkdWNlIiwicHJpb3JIb29rIiwiY3VycmVudEhvb2siLCJzaG91bGRSdW5Ib29rT25BbGxMb2NhbGVzIiwiaG9va1Byb21pc2VzIiwiT2JqZWN0IiwiZW50cmllcyIsIm1hcCIsImhvb2tlZFZhbHVlIiwiZGF0YSIsIm9wZXJhdGlvbiIsIm9yaWdpbmFsRG9jIiwic2libGluZ0RhdGEiLCJQcm9taXNlIiwiYWxsIiwicmVzb2x2ZSIsImFsbG93RGVmYXVsdFZhbHVlIiwiYWNjZXNzIiwicmVhZCIsInJlc3VsdCIsImlkIiwiZGVmYXVsdFZhbHVlIiwiZ2V0VmFsdWVXaXRoRGVmYXVsdCIsInVzZXIiLCJyZWxhdGlvbnNoaXBQb3B1bGF0aW9uUHJvbWlzZSIsImdyb3VwRG9jIiwidHJhdmVyc2VGaWVsZHMiLCJmaWVsZHMiLCJyb3dzIiwicm93IiwidmFsdWVzIiwibG9jYWxlUm93cyIsImJsb2NrIiwiYmxvY2tzIiwiZmluZCIsImJsb2NrVHlwZSIsInNsdWciLCJ0YWJEb2MiXSwibWFwcGluZ3MiOiJBQUFBLG9DQUFvQzs7OzsrQkF3Q3ZCQTs7O2VBQUFBOzs7dUJBakNnQzt3RUFDYjtzRkFDVTtnQ0FDWDs7Ozs7O0FBOEJ4QixNQUFNQSxVQUFVLE9BQU8sRUFDNUJDLFVBQVUsRUFDVkMsT0FBTyxFQUNQQyxZQUFZLEVBQ1pDLEtBQUssRUFDTEMsR0FBRyxFQUNIQyxLQUFLLEVBQ0xDLGFBQWEsRUFDYkMsUUFBUSxFQUNSQyxjQUFjLEVBQ2RDLE1BQU0sRUFDTkMsY0FBYyxFQUNkQyxrQkFBa0IsRUFDbEJDLEdBQUcsRUFDSEMsZ0JBQWdCLEVBQ2hCQyxVQUFVLEVBQ1ZDLHVCQUF1QixJQUFJLEVBQzNCQyxlQUFlLElBQUksRUFDZDtJQUNMLElBQ0VDLElBQUFBLHVCQUFnQixFQUFDWixVQUNqQkEsTUFBTWEsTUFBTSxJQUNaLE9BQU9KLFVBQVUsQ0FBQ1QsTUFBTWMsSUFBSSxDQUFDLEtBQUssZUFDbEMsQ0FBQ04sa0JBQ0Q7UUFDQSxPQUFPQyxVQUFVLENBQUNULE1BQU1jLElBQUksQ0FBQztJQUMvQjtJQUVBLE1BQU1DLDRCQUNKWixrQkFDQVMsSUFBQUEsdUJBQWdCLEVBQUNaLFVBQ2pCLE9BQU9TLFVBQVUsQ0FBQ1QsTUFBTWMsSUFBSSxDQUFDLEtBQUssWUFDbENMLFVBQVUsQ0FBQ1QsTUFBTWMsSUFBSSxDQUFDLEtBQUssUUFDM0JkLE1BQU1nQixTQUFTLElBQ2ZULElBQUlVLE1BQU0sS0FBSyxTQUNmVixJQUFJVyxPQUFPLENBQUNDLE1BQU0sQ0FBQ0MsWUFBWTtJQUVqQyxJQUFJTCwyQkFBMkI7UUFD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
@@ -35,7 +35,7 @@ declare const _default: {
35
35
  Filter?: import("react").ComponentType<any>;
36
36
  };
37
37
  condition?: import("./config/types").Condition<any, any>;
38
- description?: import("../admin/components/forms/FieldDescription/types").Description;
38
+ description?: import("../exports/components/elements").Description;
39
39
  disableBulkEdit?: boolean;
40
40
  disabled?: boolean;
41
41
  hidden?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"validations.d.ts","sourceRoot":"","sources":["../../src/fields/validations.ts"],"names":[],"mappings":";AACA,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,aAAa,EACb,WAAW,EACX,SAAS,EACT,aAAa,EACb,WAAW,EACX,QAAQ,EACT,MAAM,gBAAgB,CAAA;AAQvB,eAAO,MAAM,IAAI,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAuBtD,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAsB1D,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,CAqB9D,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;AAED,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,aAAa,CAO5E,CAAA;AAgCD,eAAO,MAAM,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,CAgC1D,CAAA;AAED,eAAO,MAAM,KAAK,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CAKxD,CAAA;AAED,eAAO,MAAM,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CAKzD,CAAA;AAgGD,eAAO,MAAM,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,CAkB1D,CAAA;AAED,eAAO,MAAM,YAAY,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,iBAAiB,CA8DtE,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,KAAK,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CAqBxD,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAED,wBAkBC"}
1
+ {"version":3,"file":"validations.d.ts","sourceRoot":"","sources":["../../src/fields/validations.ts"],"names":[],"mappings":";AACA,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,aAAa,EACb,WAAW,EACX,SAAS,EACT,aAAa,EACb,WAAW,EACX,QAAQ,EACT,MAAM,gBAAgB,CAAA;AAQvB,eAAO,MAAM,IAAI,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAuBtD,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAsB1D,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,CAqB9D,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;AAED,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,aAAa,CAO5E,CAAA;AAgCD,eAAO,MAAM,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,CAgC1D,CAAA;AAED,eAAO,MAAM,KAAK,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CAKxD,CAAA;AAED,eAAO,MAAM,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CAKzD,CAAA;AA6GD,eAAO,MAAM,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,CAkB1D,CAAA;AAED,eAAO,MAAM,YAAY,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,iBAAiB,CA8DtE,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,KAAK,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CAqBxD,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAED,wBAkBC"}
@@ -259,6 +259,7 @@ const blocks = (value, { maxRows, minRows, required, t })=>{
259
259
  const validateFilterOptions = async (value, { id, data, filterOptions, payload, relationTo, req, siblingData, t, user })=>{
260
260
  if (!_canUseDOM.default && typeof filterOptions !== 'undefined' && value) {
261
261
  const options = {};
262
+ const falseCollections = [];
262
263
  const collections = typeof relationTo === 'string' ? [
263
264
  relationTo
264
265
  ] : relationTo;
@@ -266,13 +267,16 @@ const validateFilterOptions = async (value, { id, data, filterOptions, payload,
266
267
  value
267
268
  ];
268
269
  await Promise.all(collections.map(async (collection)=>{
269
- const optionFilter = typeof filterOptions === 'function' ? await filterOptions({
270
+ let optionFilter = typeof filterOptions === 'function' ? await filterOptions({
270
271
  id,
271
272
  data,
272
273
  relationTo: collection,
273
274
  siblingData,
274
275
  user
275
276
  }) : filterOptions;
277
+ if (optionFilter === true) {
278
+ optionFilter = null;
279
+ }
276
280
  const valueIDs = [];
277
281
  values.forEach((val)=>{
278
282
  if (typeof val === 'object' && val?.value) {
@@ -293,6 +297,9 @@ const validateFilterOptions = async (value, { id, data, filterOptions, payload,
293
297
  ]
294
298
  };
295
299
  if (optionFilter) findWhere.and.push(optionFilter);
300
+ if (optionFilter === false) {
301
+ falseCollections.push(optionFilter);
302
+ }
296
303
  const result = await payload.find({
297
304
  collection,
298
305
  depth: 0,
@@ -319,6 +326,9 @@ const validateFilterOptions = async (value, { id, data, filterOptions, payload,
319
326
  collection = val.relationTo;
320
327
  requestedID = val.value;
321
328
  }
329
+ if (falseCollections.find((slug)=>relationTo === slug)) {
330
+ return true;
331
+ }
322
332
  return options[collection].indexOf(requestedID) === -1;
323
333
  });
324
334
  if (invalidRelationships.length > 0) {
@@ -448,4 +458,4 @@ const _default = {
448
458
  upload
449
459
  };
450
460
 
451
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9maWVsZHMvdmFsaWRhdGlvbnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBSaWNoVGV4dEFkYXB0ZXIgfSBmcm9tICcuLi9leHBvcnRzL3R5cGVzJ1xuaW1wb3J0IHR5cGUge1xuICBBcnJheUZpZWxkLFxuICBCbG9ja0ZpZWxkLFxuICBDaGVja2JveEZpZWxkLFxuICBDb2RlRmllbGQsXG4gIERhdGVGaWVsZCxcbiAgRW1haWxGaWVsZCxcbiAgSlNPTkZpZWxkLFxuICBOdW1iZXJGaWVsZCxcbiAgUG9pbnRGaWVsZCxcbiAgUmFkaW9GaWVsZCxcbiAgUmVsYXRpb25zaGlwRmllbGQsXG4gIFJlbGF0aW9uc2hpcFZhbHVlLFxuICBSaWNoVGV4dEZpZWxkLFxuICBTZWxlY3RGaWVsZCxcbiAgVGV4dEZpZWxkLFxuICBUZXh0YXJlYUZpZWxkLFxuICBVcGxvYWRGaWVsZCxcbiAgVmFsaWRhdGUsXG59IGZyb20gJy4vY29uZmlnL3R5cGVzJ1xuXG5pbXBvcnQgY2FuVXNlRE9NIGZyb20gJy4uL3V0aWxpdGllcy9jYW5Vc2VET00nXG5pbXBvcnQgeyBnZXRJRFR5cGUgfSBmcm9tICcuLi91dGlsaXRpZXMvZ2V0SURUeXBlJ1xuaW1wb3J0IHsgaXNOdW1iZXIgfSBmcm9tICcuLi91dGlsaXRpZXMvaXNOdW1iZXInXG5pbXBvcnQgeyBpc1ZhbGlkSUQgfSBmcm9tICcuLi91dGlsaXRpZXMvaXNWYWxpZElEJ1xuaW1wb3J0IHsgZmllbGRBZmZlY3RzRGF0YSB9IGZyb20gJy4vY29uZmlnL3R5cGVzJ1xuXG5leHBvcnQgY29uc3QgdGV4dDogVmFsaWRhdGU8dW5rbm93biwgdW5rbm93biwgVGV4dEZpZWxkPiA9IChcbiAgdmFsdWU6IHN0cmluZyxcbiAgeyBjb25maWcsIG1heExlbmd0aDogZmllbGRNYXhMZW5ndGgsIG1pbkxlbmd0aCwgcmVxdWlyZWQsIHQgfSxcbikgPT4ge1xuICBsZXQgbWF4TGVuZ3RoOiBudW1iZXJcblxuICBpZiAodHlwZW9mIGNvbmZpZz8uZGVmYXVsdE1heFRleHRMZW5ndGggPT09ICdudW1iZXInKSBtYXhMZW5ndGggPSBjb25maWcuZGVmYXVsdE1heFRleHRMZW5ndGhcbiAgaWYgKHR5cGVvZiBmaWVsZE1heExlbmd0aCA9PT0gJ251bWJlcicpIG1heExlbmd0aCA9IGZpZWxkTWF4TGVuZ3RoXG4gIGlmICh2YWx1ZSAmJiBtYXhMZW5ndGggJiYgdmFsdWUubGVuZ3RoID4gbWF4TGVuZ3RoKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246c2hvcnRlclRoYW5NYXgnLCB7IG1heExlbmd0aCB9KVxuICB9XG5cbiAgaWYgKHZhbHVlICYmIG1pbkxlbmd0aCAmJiB2YWx1ZT8ubGVuZ3RoIDwgbWluTGVuZ3RoKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246bG9uZ2VyVGhhbk1pbicsIHsgbWluTGVuZ3RoIH0pXG4gIH1cblxuICBpZiAocmVxdWlyZWQpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJyB8fCB2YWx1ZT8ubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpyZXF1aXJlZCcpXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZXhwb3J0IGNvbnN0IHBhc3N3b3JkOiBWYWxpZGF0ZTx1bmtub3duLCB1bmtub3duLCBUZXh0RmllbGQ+ID0gKFxuICB2YWx1ZTogc3RyaW5nLFxuICB7IGNvbmZpZywgbWF4TGVuZ3RoOiBmaWVsZE1heExlbmd0aCwgbWluTGVuZ3RoLCBwYXlsb2FkLCByZXF1aXJlZCwgdCB9LFxuKSA9PiB7XG4gIGxldCBtYXhMZW5ndGg6IG51bWJlclxuXG4gIGlmICh0eXBlb2YgY29uZmlnPy5kZWZhdWx0TWF4VGV4dExlbmd0aCA9PT0gJ251bWJlcicpIG1heExlbmd0aCA9IGNvbmZpZy5kZWZhdWx0TWF4VGV4dExlbmd0aFxuICBpZiAodHlwZW9mIGZpZWxkTWF4TGVuZ3RoID09PSAnbnVtYmVyJykgbWF4TGVuZ3RoID0gZmllbGRNYXhMZW5ndGhcblxuICBpZiAodmFsdWUgJiYgbWF4TGVuZ3RoICYmIHZhbHVlLmxlbmd0aCA+IG1heExlbmd0aCkge1xuICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOnNob3J0ZXJUaGFuTWF4JywgeyBtYXhMZW5ndGggfSlcbiAgfVxuXG4gIGlmICh2YWx1ZSAmJiBtaW5MZW5ndGggJiYgdmFsdWUubGVuZ3RoIDwgbWluTGVuZ3RoKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246bG9uZ2VyVGhhbk1pbicsIHsgbWluTGVuZ3RoIH0pXG4gIH1cblxuICBpZiAocmVxdWlyZWQgJiYgIXZhbHVlKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246cmVxdWlyZWQnKVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZXhwb3J0IGNvbnN0IGVtYWlsOiBWYWxpZGF0ZTx1bmtub3duLCB1bmtub3duLCBFbWFpbEZpZWxkPiA9ICh2YWx1ZTogc3RyaW5nLCB7IHJlcXVpcmVkLCB0IH0pID0+IHtcbiAgaWYgKCh2YWx1ZSAmJiAhL1xcU1teXFxzQF0qQFxcUytcXC5cXFMrLy50ZXN0KHZhbHVlKSkgfHwgKCF2YWx1ZSAmJiByZXF1aXJlZCkpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjplbWFpbEFkZHJlc3MnKVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZXhwb3J0IGNvbnN0IHRleHRhcmVhOiBWYWxpZGF0ZTx1bmtub3duLCB1bmtub3duLCBUZXh0YXJlYUZpZWxkPiA9IChcbiAgdmFsdWU6IHN0cmluZyxcbiAgeyBjb25maWcsIG1heExlbmd0aDogZmllbGRNYXhMZW5ndGgsIG1pbkxlbmd0aCwgcGF5bG9hZCwgcmVxdWlyZWQsIHQgfSxcbikgPT4ge1xuICBsZXQgbWF4TGVuZ3RoOiBudW1iZXJcblxuICBpZiAodHlwZW9mIGNvbmZpZz8uZGVmYXVsdE1heFRleHRMZW5ndGggPT09ICdudW1iZXInKSBtYXhMZW5ndGggPSBjb25maWcuZGVmYXVsdE1heFRleHRMZW5ndGhcbiAgaWYgKHR5cGVvZiBmaWVsZE1heExlbmd0aCA9PT0gJ251bWJlcicpIG1heExlbmd0aCA9IGZpZWxkTWF4TGVuZ3RoXG4gIGlmICh2YWx1ZSAmJiBtYXhMZW5ndGggJiYgdmFsdWUubGVuZ3RoID4gbWF4TGVuZ3RoKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246c2hvcnRlclRoYW5NYXgnLCB7IG1heExlbmd0aCB9KVxuICB9XG5cbiAgaWYgKHZhbHVlICYmIG1pbkxlbmd0aCAmJiB2YWx1ZS5sZW5ndGggPCBtaW5MZW5ndGgpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpsb25nZXJUaGFuTWluJywgeyBtaW5MZW5ndGggfSlcbiAgfVxuXG4gIGlmIChyZXF1aXJlZCAmJiAhdmFsdWUpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpyZXF1aXJlZCcpXG4gIH1cblxuICByZXR1cm4gdHJ1ZVxufVxuXG5leHBvcnQgY29uc3QgY29kZTogVmFsaWRhdGU8dW5rbm93biwgdW5rbm93biwgQ29kZUZpZWxkPiA9ICh2YWx1ZTogc3RyaW5nLCB7IHJlcXVpcmVkLCB0IH0pID0+IHtcbiAgaWYgKHJlcXVpcmVkICYmIHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpyZXF1aXJlZCcpXG4gIH1cblxuICByZXR1cm4gdHJ1ZVxufVxuXG5leHBvcnQgY29uc3QganNvbjogVmFsaWRhdGU8dW5rbm93biwgdW5rbm93biwgSlNPTkZpZWxkICYgeyBqc29uRXJyb3I/OiBzdHJpbmcgfT4gPSAoXG4gIHZhbHVlOiBzdHJpbmcsXG4gIHsganNvbkVycm9yLCByZXF1aXJlZCwgdCB9LFxuKSA9PiB7XG4gIGlmIChyZXF1aXJlZCAmJiAhdmFsdWUpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpyZXF1aXJlZCcpXG4gIH1cblxuICBpZiAoanNvbkVycm9yICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjppbnZhbGlkSW5wdXQnKVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZXhwb3J0IGNvbnN0IGNoZWNrYm94OiBWYWxpZGF0ZTx1bmtub3duLCB1bmtub3duLCBDaGVja2JveEZpZWxkPiA9IChcbiAgdmFsdWU6IGJvb2xlYW4sXG4gIHsgcmVxdWlyZWQsIHQgfSxcbikgPT4ge1xuICBpZiAoKHZhbHVlICYmIHR5cGVvZiB2YWx1ZSAhPT0gJ2Jvb2xlYW4nKSB8fCAocmVxdWlyZWQgJiYgdHlwZW9mIHZhbHVlICE9PSAnYm9vbGVhbicpKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246dHJ1ZU9yRmFsc2UnKVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZXhwb3J0IGNvbnN0IGRhdGU6IFZhbGlkYXRlPHVua25vd24sIHVua25vd24sIERhdGVGaWVsZD4gPSAodmFsdWUsIHsgcmVxdWlyZWQsIHQgfSkgPT4ge1xuICBpZiAodmFsdWUgJiYgIWlzTmFOKERhdGUucGFyc2UodmFsdWUudG9TdHJpbmcoKSkpKSB7XG4gICAgLyogZXNsaW50LWRpc2FibGUtbGluZSAqL1xuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICBpZiAodmFsdWUpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpub3RWYWxpZERhdGUnLCB7IHZhbHVlIH0pXG4gIH1cblxuICBpZiAocmVxdWlyZWQpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpyZXF1aXJlZCcpXG4gIH1cblxuICByZXR1cm4gdHJ1ZVxufVxuXG5leHBvcnQgY29uc3QgcmljaFRleHQ6IFZhbGlkYXRlPG9iamVjdCwgdW5rbm93biwgUmljaFRleHRGaWVsZCwgUmljaFRleHRGaWVsZD4gPSBhc3luYyAoXG4gIHZhbHVlLFxuICBvcHRpb25zLFxuKSA9PiB7XG4gIGNvbnN0IGVkaXRvcjogUmljaFRleHRBZGFwdGVyID0gb3B0aW9ucz8uZWRpdG9yXG5cbiAgcmV0dXJuIGF3YWl0IGVkaXRvci52YWxpZGF0ZSh2YWx1ZSwgb3B0aW9ucylcbn1cblxuY29uc3QgdmFsaWRhdGVBcnJheUxlbmd0aDogYW55ID0gKFxuICB2YWx1ZSxcbiAgb3B0aW9uczoge1xuICAgIG1heFJvd3M/OiBudW1iZXJcbiAgICBtaW5Sb3dzPzogbnVtYmVyXG4gICAgcmVxdWlyZWQ/OiBib29sZWFuXG4gICAgdDogKGtleTogc3RyaW5nLCBvcHRpb25zPzogeyBba2V5OiBzdHJpbmddOiBudW1iZXIgfCBzdHJpbmcgfSkgPT4gc3RyaW5nXG4gIH0sXG4pID0+IHtcbiAgY29uc3QgeyBtYXhSb3dzLCBtaW5Sb3dzLCByZXF1aXJlZCwgdCB9ID0gb3B0aW9uc1xuXG4gIGNvbnN0IGFycmF5TGVuZ3RoID0gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZS5sZW5ndGggOiAwXG5cbiAgaWYgKCFyZXF1aXJlZCAmJiBhcnJheUxlbmd0aCA9PT0gMCkgcmV0dXJuIHRydWVcblxuICBpZiAobWluUm93cyAmJiBhcnJheUxlbmd0aCA8IG1pblJvd3MpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpyZXF1aXJlc0F0TGVhc3QnLCB7IGNvdW50OiBtaW5Sb3dzLCBsYWJlbDogdCgncm93cycpIH0pXG4gIH1cblxuICBpZiAobWF4Um93cyAmJiBhcnJheUxlbmd0aCA+IG1heFJvd3MpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpyZXF1aXJlc05vTW9yZVRoYW4nLCB7IGNvdW50OiBtYXhSb3dzLCBsYWJlbDogdCgncm93cycpIH0pXG4gIH1cblxuICBpZiAocmVxdWlyZWQgJiYgIWFycmF5TGVuZ3RoKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246cmVxdWlyZXNBdExlYXN0JywgeyBjb3VudDogMSwgbGFiZWw6IHQoJ3JvdycpIH0pXG4gIH1cblxuICByZXR1cm4gdHJ1ZVxufVxuXG5leHBvcnQgY29uc3QgbnVtYmVyOiBWYWxpZGF0ZTx1bmtub3duLCB1bmtub3duLCBOdW1iZXJGaWVsZD4gPSAoXG4gIHZhbHVlOiBudW1iZXIgfCBudW1iZXJbXSxcbiAgeyBoYXNNYW55LCBtYXgsIG1heFJvd3MsIG1pbiwgbWluUm93cywgcmVxdWlyZWQsIHQgfSxcbikgPT4ge1xuICBpZiAoaGFzTWFueSA9PT0gdHJ1ZSkge1xuICAgIGNvbnN0IGxlbmd0aFZhbGlkYXRpb25SZXN1bHQgPSB2YWxpZGF0ZUFycmF5TGVuZ3RoKHZhbHVlLCB7IG1heFJvd3MsIG1pblJvd3MsIHJlcXVpcmVkLCB0IH0pXG4gICAgaWYgKHR5cGVvZiBsZW5ndGhWYWxpZGF0aW9uUmVzdWx0ID09PSAnc3RyaW5nJykgcmV0dXJuIGxlbmd0aFZhbGlkYXRpb25SZXN1bHRcbiAgfVxuXG4gIGlmICghdmFsdWUgJiYgIWlzTnVtYmVyKHZhbHVlKSkge1xuICAgIC8vIGlmIG5vIHZhbHVlIGlzIHByZXNlbnQsIHZhbGlkYXRlIGJhc2VkIG9uIHJlcXVpcmVkXG4gICAgaWYgKHJlcXVpcmVkKSByZXR1cm4gdCgndmFsaWRhdGlvbjpyZXF1aXJlZCcpXG4gICAgaWYgKCFyZXF1aXJlZCkgcmV0dXJuIHRydWVcbiAgfVxuXG4gIGNvbnN0IG51bWJlcnNUb1ZhbGlkYXRlOiBudW1iZXJbXSA9IEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiBbdmFsdWVdXG5cbiAgZm9yIChjb25zdCBudW1iZXIgb2YgbnVtYmVyc1RvVmFsaWRhdGUpIHtcbiAgICBpZiAoIWlzTnVtYmVyKG51bWJlcikpIHJldHVybiB0KCd2YWxpZGF0aW9uOmVudGVyTnVtYmVyJylcblxuICAgIGNvbnN0IG51bWJlclZhbHVlID0gcGFyc2VGbG9hdChudW1iZXIgYXMgdW5rbm93biBhcyBzdHJpbmcpXG5cbiAgICBpZiAodHlwZW9mIG1heCA9PT0gJ251bWJlcicgJiYgbnVtYmVyVmFsdWUgPiBtYXgpIHtcbiAgICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOmdyZWF0ZXJUaGFuTWF4JywgeyBsYWJlbDogdCgndmFsdWUnKSwgbWF4LCB2YWx1ZSB9KVxuICAgIH1cblxuICAgIGlmICh0eXBlb2YgbWluID09PSAnbnVtYmVyJyAmJiBudW1iZXJWYWx1ZSA8IG1pbikge1xuICAgICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246bGVzc1RoYW5NaW4nLCB7IGxhYmVsOiB0KCd2YWx1ZScpLCBtaW4sIHZhbHVlIH0pXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZXhwb3J0IGNvbnN0IGFycmF5OiBWYWxpZGF0ZTx1bmtub3duLCB1bmtub3duLCBBcnJheUZpZWxkPiA9IChcbiAgdmFsdWUsXG4gIHsgbWF4Um93cywgbWluUm93cywgcmVxdWlyZWQsIHQgfSxcbikgPT4ge1xuICByZXR1cm4gdmFsaWRhdGVBcnJheUxlbmd0aCh2YWx1ZSwgeyBtYXhSb3dzLCBtaW5Sb3dzLCByZXF1aXJlZCwgdCB9KVxufVxuXG5leHBvcnQgY29uc3QgYmxvY2tzOiBWYWxpZGF0ZTx1bmtub3duLCB1bmtub3duLCBCbG9ja0ZpZWxkPiA9IChcbiAgdmFsdWUsXG4gIHsgbWF4Um93cywgbWluUm93cywgcmVxdWlyZWQsIHQgfSxcbikgPT4ge1xuICByZXR1cm4gdmFsaWRhdGVBcnJheUxlbmd0aCh2YWx1ZSwgeyBtYXhSb3dzLCBtaW5Sb3dzLCByZXF1aXJlZCwgdCB9KVxufVxuXG5jb25zdCB2YWxpZGF0ZUZpbHRlck9wdGlvbnM6IFZhbGlkYXRlID0gYXN5bmMgKFxuICB2YWx1ZSxcbiAgeyBpZCwgZGF0YSwgZmlsdGVyT3B0aW9ucywgcGF5bG9hZCwgcmVsYXRpb25UbywgcmVxLCBzaWJsaW5nRGF0YSwgdCwgdXNlciB9LFxuKSA9PiB7XG4gIGlmICghY2FuVXNlRE9NICYmIHR5cGVvZiBmaWx0ZXJPcHRpb25zICE9PSAndW5kZWZpbmVkJyAmJiB2YWx1ZSkge1xuICAgIGNvbnN0IG9wdGlvbnM6IHtcbiAgICAgIFtjb2xsZWN0aW9uOiBzdHJpbmddOiAobnVtYmVyIHwgc3RyaW5nKVtdXG4gICAgfSA9IHt9XG5cbiAgICBjb25zdCBjb2xsZWN0aW9ucyA9IHR5cGVvZiByZWxhdGlvblRvID09PSAnc3RyaW5nJyA/IFtyZWxhdGlvblRvXSA6IHJlbGF0aW9uVG9cbiAgICBjb25zdCB2YWx1ZXMgPSBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW3ZhbHVlXVxuXG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICBjb2xsZWN0aW9ucy5tYXAoYXN5bmMgKGNvbGxlY3Rpb24pID0+IHtcbiAgICAgICAgY29uc3Qgb3B0aW9uRmlsdGVyID1cbiAgICAgICAgICB0eXBlb2YgZmlsdGVyT3B0aW9ucyA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICAgICAgPyBhd2FpdCBmaWx0ZXJPcHRpb25zKHtcbiAgICAgICAgICAgICAgICBpZCxcbiAgICAgICAgICAgICAgICBkYXRhLFxuICAgICAgICAgICAgICAgIHJlbGF0aW9uVG86IGNvbGxlY3Rpb24sXG4gICAgICAgICAgICAgICAgc2libGluZ0RhdGEsXG4gICAgICAgICAgICAgICAgdXNlcixcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIDogZmlsdGVyT3B0aW9uc1xuXG4gICAgICAgIGNvbnN0IHZhbHVlSURzOiAobnVtYmVyIHwgc3RyaW5nKVtdID0gW11cblxuICAgICAgICB2YWx1ZXMuZm9yRWFjaCgodmFsKSA9PiB7XG4gICAgICAgICAgaWYgKHR5cGVvZiB2YWwgPT09ICdvYmplY3QnICYmIHZhbD8udmFsdWUpIHtcbiAgICAgICAgICAgIHZhbHVlSURzLnB1c2godmFsLnZhbHVlKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh0eXBlb2YgdmFsID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgdmFsID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgdmFsdWVJRHMucHVzaCh2YWwpXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuXG4gICAgICAgIGlmICh2YWx1ZUlEcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgY29uc3QgZmluZFdoZXJlID0ge1xuICAgICAgICAgICAgYW5kOiBbeyBpZDogeyBpbjogdmFsdWVJRHMgfSB9XSxcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAob3B0aW9uRmlsdGVyKSBmaW5kV2hlcmUuYW5kLnB1c2gob3B0aW9uRmlsdGVyKVxuXG4gICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcGF5bG9hZC5maW5kKHtcbiAgICAgICAgICAgIGNvbGxlY3Rpb24sXG4gICAgICAgICAgICBkZXB0aDogMCxcbiAgICAgICAgICAgIGxpbWl0OiAwLFxuICAgICAgICAgICAgcGFnaW5hdGlvbjogZmFsc2UsXG4gICAgICAgICAgICByZXEsXG4gICAgICAgICAgICB3aGVyZTogZmluZFdoZXJlLFxuICAgICAgICAgIH0pXG5cbiAgICAgICAgICBvcHRpb25zW2NvbGxlY3Rpb25dID0gcmVzdWx0LmRvY3MubWFwKChkb2MpID0+IGRvYy5pZClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvcHRpb25zW2NvbGxlY3Rpb25dID0gW11cbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgKVxuXG4gICAgY29uc3QgaW52YWxpZFJlbGF0aW9uc2hpcHMgPSB2YWx1ZXMuZmlsdGVyKCh2YWwpID0+IHtcbiAgICAgIGxldCBjb2xsZWN0aW9uOiBzdHJpbmdcbiAgICAgIGxldCByZXF1ZXN0ZWRJRDogbnVtYmVyIHwgc3RyaW5nXG5cbiAgICAgIGlmICh0eXBlb2YgcmVsYXRpb25UbyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgY29sbGVjdGlvbiA9IHJlbGF0aW9uVG9cblxuICAgICAgICBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIHZhbCA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICByZXF1ZXN0ZWRJRCA9IHZhbFxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHJlbGF0aW9uVG8pICYmIHR5cGVvZiB2YWwgPT09ICdvYmplY3QnICYmIHZhbD8ucmVsYXRpb25Ubykge1xuICAgICAgICBjb2xsZWN0aW9uID0gdmFsLnJlbGF0aW9uVG9cbiAgICAgICAgcmVxdWVzdGVkSUQgPSB2YWwudmFsdWVcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG9wdGlvbnNbY29sbGVjdGlvbl0uaW5kZXhPZihyZXF1ZXN0ZWRJRCkgPT09IC0xXG4gICAgfSlcblxuICAgIGlmIChpbnZhbGlkUmVsYXRpb25zaGlwcy5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gaW52YWxpZFJlbGF0aW9uc2hpcHMucmVkdWNlKChlcnIsIGludmFsaWQsIGkpID0+IHtcbiAgICAgICAgcmV0dXJuIGAke2Vycn0gJHtKU09OLnN0cmluZ2lmeShpbnZhbGlkKX0ke1xuICAgICAgICAgIGludmFsaWRSZWxhdGlvbnNoaXBzLmxlbmd0aCA9PT0gaSArIDEgPyAnLCcgOiAnJ1xuICAgICAgICB9IGBcbiAgICAgIH0sIHQoJ3ZhbGlkYXRpb246aW52YWxpZFNlbGVjdGlvbnMnKSkgYXMgc3RyaW5nXG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIHJldHVybiB0cnVlXG59XG5cbmV4cG9ydCBjb25zdCB1cGxvYWQ6IFZhbGlkYXRlPHVua25vd24sIHVua25vd24sIFVwbG9hZEZpZWxkPiA9ICh2YWx1ZTogc3RyaW5nLCBvcHRpb25zKSA9PiB7XG4gIGlmICghdmFsdWUgJiYgb3B0aW9ucy5yZXF1aXJlZCkge1xuICAgIHJldHVybiBvcHRpb25zLnQoJ3ZhbGlkYXRpb246cmVxdWlyZWQnKVxuICB9XG5cbiAgaWYgKCFjYW5Vc2VET00gJiYgdHlwZW9mIHZhbHVlICE9PSAndW5kZWZpbmVkJyAmJiB2YWx1ZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IGlkRmllbGQgPSBvcHRpb25zPy5jb25maWc/LmNvbGxlY3Rpb25zXG4gICAgICA/LmZpbmQoKGNvbGxlY3Rpb24pID0+IGNvbGxlY3Rpb24uc2x1ZyA9PT0gb3B0aW9ucy5yZWxhdGlvblRvKVxuICAgICAgPy5maWVsZHM/LmZpbmQoKGZpZWxkKSA9PiBmaWVsZEFmZmVjdHNEYXRhKGZpZWxkKSAmJiBmaWVsZC5uYW1lID09PSAnaWQnKVxuXG4gICAgY29uc3QgdHlwZSA9IGdldElEVHlwZShpZEZpZWxkLCBvcHRpb25zPy5wYXlsb2FkPy5kYj8uZGVmYXVsdElEVHlwZSlcblxuICAgIGlmICghaXNWYWxpZElEKHZhbHVlLCB0eXBlKSkge1xuICAgICAgcmV0dXJuIG9wdGlvbnMudCgndmFsaWRhdGlvbjp2YWxpZFVwbG9hZElEJylcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdmFsaWRhdGVGaWx0ZXJPcHRpb25zKHZhbHVlLCBvcHRpb25zKVxufVxuXG5leHBvcnQgY29uc3QgcmVsYXRpb25zaGlwOiBWYWxpZGF0ZTx1bmtub3duLCB1bmtub3duLCBSZWxhdGlvbnNoaXBGaWVsZD4gPSBhc3luYyAoXG4gIHZhbHVlOiBSZWxhdGlvbnNoaXBWYWx1ZSxcbiAgb3B0aW9ucyxcbikgPT4ge1xuICBjb25zdCB7IGNvbmZpZywgbWF4Um93cywgbWluUm93cywgcGF5bG9hZCwgcmVsYXRpb25UbywgcmVxdWlyZWQsIHQgfSA9IG9wdGlvbnNcblxuICBpZiAoKCF2YWx1ZSB8fCAoQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUubGVuZ3RoID09PSAwKSkgJiYgcmVxdWlyZWQpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpyZXF1aXJlZCcpXG4gIH1cblxuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUubGVuZ3RoID4gMCkge1xuICAgIGlmIChtaW5Sb3dzICYmIHZhbHVlLmxlbmd0aCA8IG1pblJvd3MpIHtcbiAgICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOmxlc3NUaGFuTWluJywgeyBsYWJlbDogdCgncm93cycpLCBtaW46IG1pblJvd3MsIHZhbHVlOiB2YWx1ZS5sZW5ndGggfSlcbiAgICB9XG5cbiAgICBpZiAobWF4Um93cyAmJiB2YWx1ZS5sZW5ndGggPiBtYXhSb3dzKSB7XG4gICAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpncmVhdGVyVGhhbk1heCcsIHsgbGFiZWw6IHQoJ3Jvd3MnKSwgbWF4OiBtYXhSb3dzLCB2YWx1ZTogdmFsdWUubGVuZ3RoIH0pXG4gICAgfVxuICB9XG5cbiAgaWYgKCFjYW5Vc2VET00gJiYgdHlwZW9mIHZhbHVlICE9PSAndW5kZWZpbmVkJyAmJiB2YWx1ZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHZhbHVlcyA9IEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiBbdmFsdWVdXG5cbiAgICBjb25zdCBpbnZhbGlkUmVsYXRpb25zaGlwcyA9IHZhbHVlcy5maWx0ZXIoKHZhbCkgPT4ge1xuICAgICAgbGV0IGNvbGxlY3Rpb25TbHVnOiBzdHJpbmdcbiAgICAgIGxldCByZXF1ZXN0ZWRJRFxuXG4gICAgICBpZiAodHlwZW9mIHJlbGF0aW9uVG8gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGNvbGxlY3Rpb25TbHVnID0gcmVsYXRpb25Ub1xuXG4gICAgICAgIC8vIGN1c3RvbSBpZFxuICAgICAgICBpZiAodmFsKSB7XG4gICAgICAgICAgcmVxdWVzdGVkSUQgPSB2YWxcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShyZWxhdGlvblRvKSAmJiB0eXBlb2YgdmFsID09PSAnb2JqZWN0JyAmJiB2YWw/LnJlbGF0aW9uVG8pIHtcbiAgICAgICAgY29sbGVjdGlvblNsdWcgPSB2YWwucmVsYXRpb25Ub1xuICAgICAgICByZXF1ZXN0ZWRJRCA9IHZhbC52YWx1ZVxuICAgICAgfVxuXG4gICAgICBpZiAocmVxdWVzdGVkSUQgPT09IG51bGwpIHJldHVybiBmYWxzZVxuXG4gICAgICBjb25zdCBpZEZpZWxkID0gY29uZmlnPy5jb2xsZWN0aW9uc1xuICAgICAgICA/LmZpbmQoKGNvbGxlY3Rpb24pID0+IGNvbGxlY3Rpb24uc2x1ZyA9PT0gY29sbGVjdGlvblNsdWcpXG4gICAgICAgID8uZmllbGRzPy5maW5kKChmaWVsZCkgPT4gZmllbGRBZmZlY3RzRGF0YShmaWVsZCkgJiYgZmllbGQubmFtZSA9PT0gJ2lkJylcblxuICAgICAgY29uc3QgdHlwZSA9IGdldElEVHlwZShpZEZpZWxkLCBwYXlsb2FkPy5kYj8uZGVmYXVsdElEVHlwZSlcblxuICAgICAgcmV0dXJuICFpc1ZhbGlkSUQocmVxdWVzdGVkSUQsIHR5cGUpXG4gICAgfSlcblxuICAgIGlmIChpbnZhbGlkUmVsYXRpb25zaGlwcy5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gYFRoaXMgcmVsYXRpb25zaGlwIGZpZWxkIGhhcyB0aGUgZm9sbG93aW5nIGludmFsaWQgcmVsYXRpb25zaGlwczogJHtpbnZhbGlkUmVsYXRpb25zaGlwc1xuICAgICAgICAubWFwKChlcnIsIGludmFsaWQpID0+IHtcbiAgICAgICAgICByZXR1cm4gYCR7ZXJyfSAke0pTT04uc3RyaW5naWZ5KGludmFsaWQpfWBcbiAgICAgICAgfSlcbiAgICAgICAgLmpvaW4oJywgJyl9YFxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB2YWxpZGF0ZUZpbHRlck9wdGlvbnModmFsdWUsIG9wdGlvbnMpXG59XG5cbmV4cG9ydCBjb25zdCBzZWxlY3Q6IFZhbGlkYXRlPHVua25vd24sIHVua25vd24sIFNlbGVjdEZpZWxkPiA9IChcbiAgdmFsdWUsXG4gIHsgaGFzTWFueSwgb3B0aW9ucywgcmVxdWlyZWQsIHQgfSxcbikgPT4ge1xuICBpZiAoXG4gICAgQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiZcbiAgICB2YWx1ZS5zb21lKFxuICAgICAgKGlucHV0KSA9PlxuICAgICAgICAhb3B0aW9ucy5zb21lKFxuICAgICAgICAgIChvcHRpb24pID0+IG9wdGlvbiA9PT0gaW5wdXQgfHwgKHR5cGVvZiBvcHRpb24gIT09ICdzdHJpbmcnICYmIG9wdGlvbj8udmFsdWUgPT09IGlucHV0KSxcbiAgICAgICAgKSxcbiAgICApXG4gICkge1xuICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOmludmFsaWRTZWxlY3Rpb24nKVxuICB9XG5cbiAgaWYgKFxuICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiZcbiAgICAhb3B0aW9ucy5zb21lKFxuICAgICAgKG9wdGlvbikgPT4gb3B0aW9uID09PSB2YWx1ZSB8fCAodHlwZW9mIG9wdGlvbiAhPT0gJ3N0cmluZycgJiYgb3B0aW9uLnZhbHVlID09PSB2YWx1ZSksXG4gICAgKVxuICApIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjppbnZhbGlkU2VsZWN0aW9uJylcbiAgfVxuXG4gIGlmIChcbiAgICByZXF1aXJlZCAmJlxuICAgICh0eXBlb2YgdmFsdWUgPT09ICd1bmRlZmluZWQnIHx8XG4gICAgICB2YWx1ZSA9PT0gbnVsbCB8fFxuICAgICAgKGhhc01hbnkgJiYgQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgKHZhbHVlIGFzIFtdKT8ubGVuZ3RoID09PSAwKSlcbiAgKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246cmVxdWlyZWQnKVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZXhwb3J0IGNvbnN0IHJhZGlvOiBWYWxpZGF0ZTx1bmtub3duLCB1bmtub3duLCBSYWRpb0ZpZWxkPiA9ICh2YWx1ZSwgeyBvcHRpb25zLCByZXF1aXJlZCwgdCB9KSA9PiB7XG4gIGlmICh2YWx1ZSkge1xuICAgIGNvbnN0IHZhbHVlTWF0Y2hlc09wdGlvbiA9IG9wdGlvbnMuc29tZShcbiAgICAgIChvcHRpb24pID0+IG9wdGlvbiA9PT0gdmFsdWUgfHwgKHR5cGVvZiBvcHRpb24gIT09ICdzdHJpbmcnICYmIG9wdGlvbi52YWx1ZSA9PT0gdmFsdWUpLFxuICAgIClcbiAgICByZXR1cm4gdmFsdWVNYXRjaGVzT3B0aW9uIHx8IHQoJ3ZhbGlkYXRpb246aW52YWxpZFNlbGVjdGlvbicpXG4gIH1cblxuICByZXR1cm4gcmVxdWlyZWQgPyB0KCd2YWxpZGF0aW9uOnJlcXVpcmVkJykgOiB0cnVlXG59XG5cbmV4cG9ydCBjb25zdCBwb2ludDogVmFsaWRhdGU8dW5rbm93biwgdW5rbm93biwgUG9pbnRGaWVsZD4gPSAoXG4gIHZhbHVlOiBbbnVtYmVyIHwgc3RyaW5nLCBudW1iZXIgfCBzdHJpbmddID0gWycnLCAnJ10sXG4gIHsgcmVxdWlyZWQsIHQgfSxcbikgPT4ge1xuICBjb25zdCBsbmcgPSBwYXJzZUZsb2F0KFN0cmluZyh2YWx1ZVswXSkpXG4gIGNvbnN0IGxhdCA9IHBhcnNlRmxvYXQoU3RyaW5nKHZhbHVlWzFdKSlcbiAgaWYgKFxuICAgIHJlcXVpcmVkICYmXG4gICAgKCh2YWx1ZVswXSAmJiB2YWx1ZVsxXSAmJiB0eXBlb2YgbG5nICE9PSAnbnVtYmVyJyAmJiB0eXBlb2YgbGF0ICE9PSAnbnVtYmVyJykgfHxcbiAgICAgIE51bWJlci5pc05hTihsbmcpIHx8XG4gICAgICBOdW1iZXIuaXNOYU4obGF0KSB8fFxuICAgICAgKEFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCAhPT0gMikpXG4gICkge1xuICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOnJlcXVpcmVzVHdvTnVtYmVycycpXG4gIH1cblxuICBpZiAoKHZhbHVlWzFdICYmIE51bWJlci5pc05hTihsbmcpKSB8fCAodmFsdWVbMF0gJiYgTnVtYmVyLmlzTmFOKGxhdCkpKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246aW52YWxpZElucHV0JylcbiAgfVxuXG4gIHJldHVybiB0cnVlXG59XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgYXJyYXksXG4gIGJsb2NrcyxcbiAgY2hlY2tib3gsXG4gIGNvZGUsXG4gIGRhdGUsXG4gIGVtYWlsLFxuICBqc29uLFxuICBudW1iZXIsXG4gIHBhc3N3b3JkLFxuICBwb2ludCxcbiAgcmFkaW8sXG4gIHJlbGF0aW9uc2hpcCxcbiAgcmljaFRleHQsXG4gIHNlbGVjdCxcbiAgdGV4dCxcbiAgdGV4dGFyZWEsXG4gIHVwbG9hZCxcbn1cbiJdLCJuYW1lcyI6WyJ0ZXh0IiwicGFzc3dvcmQiLCJlbWFpbCIsInRleHRhcmVhIiwiY29kZSIsImpzb24iLCJjaGVja2JveCIsImRhdGUiLCJyaWNoVGV4dCIsIm51bWJlciIsImFycmF5IiwiYmxvY2tzIiwidXBsb2FkIiwicmVsYXRpb25zaGlwIiwic2VsZWN0IiwicmFkaW8iLCJwb2ludCIsInZhbHVlIiwiY29uZmlnIiwibWF4TGVuZ3RoIiwiZmllbGRNYXhMZW5ndGgiLCJtaW5MZW5ndGgiLCJyZXF1aXJlZCIsInQiLCJkZWZhdWx0TWF4VGV4dExlbmd0aCIsImxlbmd0aCIsInBheWxvYWQiLCJ0ZXN0IiwidW5kZWZpbmVkIiwianNvbkVycm9yIiwiaXNOYU4iLCJEYXRlIiwicGFyc2UiLCJ0b1N0cmluZyIsIm9wdGlvbnMiLCJlZGl0b3IiLCJ2YWxpZGF0ZSIsInZhbGlkYXRlQXJyYXlMZW5ndGgiLCJtYXhSb3dzIiwibWluUm93cyIsImFycmF5TGVuZ3RoIiwiQXJyYXkiLCJpc0FycmF5IiwiY291bnQiLCJsYWJlbCIsImhhc01hbnkiLCJtYXgiLCJtaW4iLCJsZW5ndGhWYWxpZGF0aW9uUmVzdWx0IiwiaXNOdW1iZXIiLCJudW1iZXJzVG9WYWxpZGF0ZSIsIm51bWJlclZhbHVlIiwicGFyc2VGbG9hdCIsInZhbGlkYXRlRmlsdGVyT3B0aW9ucyIsImlkIiwiZGF0YSIsImZpbHRlck9wdGlvbnMiLCJyZWxhdGlvblRvIiwicmVxIiwic2libGluZ0RhdGEiLCJ1c2VyIiwiY2FuVXNlRE9NIiwiY29sbGVjdGlvbnMiLCJ2YWx1ZXMiLCJQcm9taXNlIiwiYWxsIiwibWFwIiwiY29sbGVjdGlvbiIsIm9wdGlvbkZpbHRlciIsInZhbHVlSURzIiwiZm9yRWFjaCIsInZhbCIsInB1c2giLCJmaW5kV2hlcmUiLCJhbmQiLCJpbiIsInJlc3VsdCIsImZpbmQiLCJkZXB0aCIsImxpbWl0IiwicGFnaW5hdGlvbiIsIndoZXJlIiwiZG9jcyIsImRvYyIsImludmFsaWRSZWxhdGlvbnNoaXBzIiwiZmlsdGVyIiwicmVxdWVzdGVkSUQiLCJpbmRleE9mIiwicmVkdWNlIiwiZXJyIiwiaW52YWxpZCIsImkiLCJKU09OIiwic3RyaW5naWZ5IiwiaWRGaWVsZCIsInNsdWciLCJmaWVsZHMiLCJmaWVsZCIsImZpZWxkQWZmZWN0c0RhdGEiLCJuYW1lIiwidHlwZSIsImdldElEVHlwZSIsImRiIiwiZGVmYXVsdElEVHlwZSIsImlzVmFsaWRJRCIsImNvbGxlY3Rpb25TbHVnIiwiam9pbiIsInNvbWUiLCJpbnB1dCIsIm9wdGlvbiIsInZhbHVlTWF0Y2hlc09wdGlvbiIsImxuZyIsIlN0cmluZyIsImxhdCIsIk51bWJlciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7SUE0QmFBLElBQUk7ZUFBSkE7O0lBeUJBQyxRQUFRO2VBQVJBOztJQXdCQUMsS0FBSztlQUFMQTs7SUFRQUMsUUFBUTtlQUFSQTs7SUF1QkFDLElBQUk7ZUFBSkE7O0lBUUFDLElBQUk7ZUFBSkE7O0lBZUFDLFFBQVE7ZUFBUkE7O0lBV0FDLElBQUk7ZUFBSkE7O0lBaUJBQyxRQUFRO2VBQVJBOztJQXVDQUMsTUFBTTtlQUFOQTs7SUFrQ0FDLEtBQUs7ZUFBTEE7O0lBT0FDLE1BQU07ZUFBTkE7O0lBcUdBQyxNQUFNO2VBQU5BOztJQW9CQUMsWUFBWTtlQUFaQTs7SUFnRUFDLE1BQU07ZUFBTkE7O0lBcUNBQyxLQUFLO2VBQUxBOztJQVdBQyxLQUFLO2VBQUxBOztJQXVCYixPQWtCQztlQWxCRDs7O2tFQXpkc0I7MkJBQ0k7MEJBQ0Q7MkJBQ0M7dUJBQ087Ozs7OztBQUUxQixNQUFNaEIsT0FBOEMsQ0FDekRpQixPQUNBLEVBQUVDLE1BQU0sRUFBRUMsV0FBV0MsY0FBYyxFQUFFQyxTQUFTLEVBQUVDLFFBQVEsRUFBRUMsQ0FBQyxFQUFFO0lBRTdELElBQUlKO0lBRUosSUFBSSxPQUFPRCxRQUFRTSx5QkFBeUIsVUFBVUwsWUFBWUQsT0FBT00sb0JBQW9CO0lBQzdGLElBQUksT0FBT0osbUJBQW1CLFVBQVVELFlBQVlDO0lBQ3BELElBQUlILFNBQVNFLGFBQWFGLE1BQU1RLE1BQU0sR0FBR04sV0FBVztRQUNsRCxPQUFPSSxFQUFFLDZCQUE2QjtZQUFFSjtRQUFVO0lBQ3BEO0lBRUEsSUFBSUYsU0FBU0ksYUFBYUosT0FBT1EsU0FBU0osV0FBVztRQUNuRCxPQUFPRSxFQUFFLDRCQUE0QjtZQUFFRjtR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
461
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9maWVsZHMvdmFsaWRhdGlvbnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBSaWNoVGV4dEFkYXB0ZXIgfSBmcm9tICcuLi9leHBvcnRzL3R5cGVzJ1xuaW1wb3J0IHR5cGUge1xuICBBcnJheUZpZWxkLFxuICBCbG9ja0ZpZWxkLFxuICBDaGVja2JveEZpZWxkLFxuICBDb2RlRmllbGQsXG4gIERhdGVGaWVsZCxcbiAgRW1haWxGaWVsZCxcbiAgSlNPTkZpZWxkLFxuICBOdW1iZXJGaWVsZCxcbiAgUG9pbnRGaWVsZCxcbiAgUmFkaW9GaWVsZCxcbiAgUmVsYXRpb25zaGlwRmllbGQsXG4gIFJlbGF0aW9uc2hpcFZhbHVlLFxuICBSaWNoVGV4dEZpZWxkLFxuICBTZWxlY3RGaWVsZCxcbiAgVGV4dEZpZWxkLFxuICBUZXh0YXJlYUZpZWxkLFxuICBVcGxvYWRGaWVsZCxcbiAgVmFsaWRhdGUsXG59IGZyb20gJy4vY29uZmlnL3R5cGVzJ1xuXG5pbXBvcnQgY2FuVXNlRE9NIGZyb20gJy4uL3V0aWxpdGllcy9jYW5Vc2VET00nXG5pbXBvcnQgeyBnZXRJRFR5cGUgfSBmcm9tICcuLi91dGlsaXRpZXMvZ2V0SURUeXBlJ1xuaW1wb3J0IHsgaXNOdW1iZXIgfSBmcm9tICcuLi91dGlsaXRpZXMvaXNOdW1iZXInXG5pbXBvcnQgeyBpc1ZhbGlkSUQgfSBmcm9tICcuLi91dGlsaXRpZXMvaXNWYWxpZElEJ1xuaW1wb3J0IHsgZmllbGRBZmZlY3RzRGF0YSB9IGZyb20gJy4vY29uZmlnL3R5cGVzJ1xuXG5leHBvcnQgY29uc3QgdGV4dDogVmFsaWRhdGU8dW5rbm93biwgdW5rbm93biwgVGV4dEZpZWxkPiA9IChcbiAgdmFsdWU6IHN0cmluZyxcbiAgeyBjb25maWcsIG1heExlbmd0aDogZmllbGRNYXhMZW5ndGgsIG1pbkxlbmd0aCwgcmVxdWlyZWQsIHQgfSxcbikgPT4ge1xuICBsZXQgbWF4TGVuZ3RoOiBudW1iZXJcblxuICBpZiAodHlwZW9mIGNvbmZpZz8uZGVmYXVsdE1heFRleHRMZW5ndGggPT09ICdudW1iZXInKSBtYXhMZW5ndGggPSBjb25maWcuZGVmYXVsdE1heFRleHRMZW5ndGhcbiAgaWYgKHR5cGVvZiBmaWVsZE1heExlbmd0aCA9PT0gJ251bWJlcicpIG1heExlbmd0aCA9IGZpZWxkTWF4TGVuZ3RoXG4gIGlmICh2YWx1ZSAmJiBtYXhMZW5ndGggJiYgdmFsdWUubGVuZ3RoID4gbWF4TGVuZ3RoKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246c2hvcnRlclRoYW5NYXgnLCB7IG1heExlbmd0aCB9KVxuICB9XG5cbiAgaWYgKHZhbHVlICYmIG1pbkxlbmd0aCAmJiB2YWx1ZT8ubGVuZ3RoIDwgbWluTGVuZ3RoKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246bG9uZ2VyVGhhbk1pbicsIHsgbWluTGVuZ3RoIH0pXG4gIH1cblxuICBpZiAocmVxdWlyZWQpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJyB8fCB2YWx1ZT8ubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpyZXF1aXJlZCcpXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZXhwb3J0IGNvbnN0IHBhc3N3b3JkOiBWYWxpZGF0ZTx1bmtub3duLCB1bmtub3duLCBUZXh0RmllbGQ+ID0gKFxuICB2YWx1ZTogc3RyaW5nLFxuICB7IGNvbmZpZywgbWF4TGVuZ3RoOiBmaWVsZE1heExlbmd0aCwgbWluTGVuZ3RoLCBwYXlsb2FkLCByZXF1aXJlZCwgdCB9LFxuKSA9PiB7XG4gIGxldCBtYXhMZW5ndGg6IG51bWJlclxuXG4gIGlmICh0eXBlb2YgY29uZmlnPy5kZWZhdWx0TWF4VGV4dExlbmd0aCA9PT0gJ251bWJlcicpIG1heExlbmd0aCA9IGNvbmZpZy5kZWZhdWx0TWF4VGV4dExlbmd0aFxuICBpZiAodHlwZW9mIGZpZWxkTWF4TGVuZ3RoID09PSAnbnVtYmVyJykgbWF4TGVuZ3RoID0gZmllbGRNYXhMZW5ndGhcblxuICBpZiAodmFsdWUgJiYgbWF4TGVuZ3RoICYmIHZhbHVlLmxlbmd0aCA+IG1heExlbmd0aCkge1xuICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOnNob3J0ZXJUaGFuTWF4JywgeyBtYXhMZW5ndGggfSlcbiAgfVxuXG4gIGlmICh2YWx1ZSAmJiBtaW5MZW5ndGggJiYgdmFsdWUubGVuZ3RoIDwgbWluTGVuZ3RoKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246bG9uZ2VyVGhhbk1pbicsIHsgbWluTGVuZ3RoIH0pXG4gIH1cblxuICBpZiAocmVxdWlyZWQgJiYgIXZhbHVlKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246cmVxdWlyZWQnKVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZXhwb3J0IGNvbnN0IGVtYWlsOiBWYWxpZGF0ZTx1bmtub3duLCB1bmtub3duLCBFbWFpbEZpZWxkPiA9ICh2YWx1ZTogc3RyaW5nLCB7IHJlcXVpcmVkLCB0IH0pID0+IHtcbiAgaWYgKCh2YWx1ZSAmJiAhL1xcU1teXFxzQF0qQFxcUytcXC5cXFMrLy50ZXN0KHZhbHVlKSkgfHwgKCF2YWx1ZSAmJiByZXF1aXJlZCkpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjplbWFpbEFkZHJlc3MnKVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZXhwb3J0IGNvbnN0IHRleHRhcmVhOiBWYWxpZGF0ZTx1bmtub3duLCB1bmtub3duLCBUZXh0YXJlYUZpZWxkPiA9IChcbiAgdmFsdWU6IHN0cmluZyxcbiAgeyBjb25maWcsIG1heExlbmd0aDogZmllbGRNYXhMZW5ndGgsIG1pbkxlbmd0aCwgcGF5bG9hZCwgcmVxdWlyZWQsIHQgfSxcbikgPT4ge1xuICBsZXQgbWF4TGVuZ3RoOiBudW1iZXJcblxuICBpZiAodHlwZW9mIGNvbmZpZz8uZGVmYXVsdE1heFRleHRMZW5ndGggPT09ICdudW1iZXInKSBtYXhMZW5ndGggPSBjb25maWcuZGVmYXVsdE1heFRleHRMZW5ndGhcbiAgaWYgKHR5cGVvZiBmaWVsZE1heExlbmd0aCA9PT0gJ251bWJlcicpIG1heExlbmd0aCA9IGZpZWxkTWF4TGVuZ3RoXG4gIGlmICh2YWx1ZSAmJiBtYXhMZW5ndGggJiYgdmFsdWUubGVuZ3RoID4gbWF4TGVuZ3RoKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246c2hvcnRlclRoYW5NYXgnLCB7IG1heExlbmd0aCB9KVxuICB9XG5cbiAgaWYgKHZhbHVlICYmIG1pbkxlbmd0aCAmJiB2YWx1ZS5sZW5ndGggPCBtaW5MZW5ndGgpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpsb25nZXJUaGFuTWluJywgeyBtaW5MZW5ndGggfSlcbiAgfVxuXG4gIGlmIChyZXF1aXJlZCAmJiAhdmFsdWUpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpyZXF1aXJlZCcpXG4gIH1cblxuICByZXR1cm4gdHJ1ZVxufVxuXG5leHBvcnQgY29uc3QgY29kZTogVmFsaWRhdGU8dW5rbm93biwgdW5rbm93biwgQ29kZUZpZWxkPiA9ICh2YWx1ZTogc3RyaW5nLCB7IHJlcXVpcmVkLCB0IH0pID0+IHtcbiAgaWYgKHJlcXVpcmVkICYmIHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpyZXF1aXJlZCcpXG4gIH1cblxuICByZXR1cm4gdHJ1ZVxufVxuXG5leHBvcnQgY29uc3QganNvbjogVmFsaWRhdGU8dW5rbm93biwgdW5rbm93biwgSlNPTkZpZWxkICYgeyBqc29uRXJyb3I/OiBzdHJpbmcgfT4gPSAoXG4gIHZhbHVlOiBzdHJpbmcsXG4gIHsganNvbkVycm9yLCByZXF1aXJlZCwgdCB9LFxuKSA9PiB7XG4gIGlmIChyZXF1aXJlZCAmJiAhdmFsdWUpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpyZXF1aXJlZCcpXG4gIH1cblxuICBpZiAoanNvbkVycm9yICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjppbnZhbGlkSW5wdXQnKVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZXhwb3J0IGNvbnN0IGNoZWNrYm94OiBWYWxpZGF0ZTx1bmtub3duLCB1bmtub3duLCBDaGVja2JveEZpZWxkPiA9IChcbiAgdmFsdWU6IGJvb2xlYW4sXG4gIHsgcmVxdWlyZWQsIHQgfSxcbikgPT4ge1xuICBpZiAoKHZhbHVlICYmIHR5cGVvZiB2YWx1ZSAhPT0gJ2Jvb2xlYW4nKSB8fCAocmVxdWlyZWQgJiYgdHlwZW9mIHZhbHVlICE9PSAnYm9vbGVhbicpKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246dHJ1ZU9yRmFsc2UnKVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZXhwb3J0IGNvbnN0IGRhdGU6IFZhbGlkYXRlPHVua25vd24sIHVua25vd24sIERhdGVGaWVsZD4gPSAodmFsdWUsIHsgcmVxdWlyZWQsIHQgfSkgPT4ge1xuICBpZiAodmFsdWUgJiYgIWlzTmFOKERhdGUucGFyc2UodmFsdWUudG9TdHJpbmcoKSkpKSB7XG4gICAgLyogZXNsaW50LWRpc2FibGUtbGluZSAqL1xuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICBpZiAodmFsdWUpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpub3RWYWxpZERhdGUnLCB7IHZhbHVlIH0pXG4gIH1cblxuICBpZiAocmVxdWlyZWQpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpyZXF1aXJlZCcpXG4gIH1cblxuICByZXR1cm4gdHJ1ZVxufVxuXG5leHBvcnQgY29uc3QgcmljaFRleHQ6IFZhbGlkYXRlPG9iamVjdCwgdW5rbm93biwgUmljaFRleHRGaWVsZCwgUmljaFRleHRGaWVsZD4gPSBhc3luYyAoXG4gIHZhbHVlLFxuICBvcHRpb25zLFxuKSA9PiB7XG4gIGNvbnN0IGVkaXRvcjogUmljaFRleHRBZGFwdGVyID0gb3B0aW9ucz8uZWRpdG9yXG5cbiAgcmV0dXJuIGF3YWl0IGVkaXRvci52YWxpZGF0ZSh2YWx1ZSwgb3B0aW9ucylcbn1cblxuY29uc3QgdmFsaWRhdGVBcnJheUxlbmd0aDogYW55ID0gKFxuICB2YWx1ZSxcbiAgb3B0aW9uczoge1xuICAgIG1heFJvd3M/OiBudW1iZXJcbiAgICBtaW5Sb3dzPzogbnVtYmVyXG4gICAgcmVxdWlyZWQ/OiBib29sZWFuXG4gICAgdDogKGtleTogc3RyaW5nLCBvcHRpb25zPzogeyBba2V5OiBzdHJpbmddOiBudW1iZXIgfCBzdHJpbmcgfSkgPT4gc3RyaW5nXG4gIH0sXG4pID0+IHtcbiAgY29uc3QgeyBtYXhSb3dzLCBtaW5Sb3dzLCByZXF1aXJlZCwgdCB9ID0gb3B0aW9uc1xuXG4gIGNvbnN0IGFycmF5TGVuZ3RoID0gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZS5sZW5ndGggOiAwXG5cbiAgaWYgKCFyZXF1aXJlZCAmJiBhcnJheUxlbmd0aCA9PT0gMCkgcmV0dXJuIHRydWVcblxuICBpZiAobWluUm93cyAmJiBhcnJheUxlbmd0aCA8IG1pblJvd3MpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpyZXF1aXJlc0F0TGVhc3QnLCB7IGNvdW50OiBtaW5Sb3dzLCBsYWJlbDogdCgncm93cycpIH0pXG4gIH1cblxuICBpZiAobWF4Um93cyAmJiBhcnJheUxlbmd0aCA+IG1heFJvd3MpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpyZXF1aXJlc05vTW9yZVRoYW4nLCB7IGNvdW50OiBtYXhSb3dzLCBsYWJlbDogdCgncm93cycpIH0pXG4gIH1cblxuICBpZiAocmVxdWlyZWQgJiYgIWFycmF5TGVuZ3RoKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246cmVxdWlyZXNBdExlYXN0JywgeyBjb3VudDogMSwgbGFiZWw6IHQoJ3JvdycpIH0pXG4gIH1cblxuICByZXR1cm4gdHJ1ZVxufVxuXG5leHBvcnQgY29uc3QgbnVtYmVyOiBWYWxpZGF0ZTx1bmtub3duLCB1bmtub3duLCBOdW1iZXJGaWVsZD4gPSAoXG4gIHZhbHVlOiBudW1iZXIgfCBudW1iZXJbXSxcbiAgeyBoYXNNYW55LCBtYXgsIG1heFJvd3MsIG1pbiwgbWluUm93cywgcmVxdWlyZWQsIHQgfSxcbikgPT4ge1xuICBpZiAoaGFzTWFueSA9PT0gdHJ1ZSkge1xuICAgIGNvbnN0IGxlbmd0aFZhbGlkYXRpb25SZXN1bHQgPSB2YWxpZGF0ZUFycmF5TGVuZ3RoKHZhbHVlLCB7IG1heFJvd3MsIG1pblJvd3MsIHJlcXVpcmVkLCB0IH0pXG4gICAgaWYgKHR5cGVvZiBsZW5ndGhWYWxpZGF0aW9uUmVzdWx0ID09PSAnc3RyaW5nJykgcmV0dXJuIGxlbmd0aFZhbGlkYXRpb25SZXN1bHRcbiAgfVxuXG4gIGlmICghdmFsdWUgJiYgIWlzTnVtYmVyKHZhbHVlKSkge1xuICAgIC8vIGlmIG5vIHZhbHVlIGlzIHByZXNlbnQsIHZhbGlkYXRlIGJhc2VkIG9uIHJlcXVpcmVkXG4gICAgaWYgKHJlcXVpcmVkKSByZXR1cm4gdCgndmFsaWRhdGlvbjpyZXF1aXJlZCcpXG4gICAgaWYgKCFyZXF1aXJlZCkgcmV0dXJuIHRydWVcbiAgfVxuXG4gIGNvbnN0IG51bWJlcnNUb1ZhbGlkYXRlOiBudW1iZXJbXSA9IEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiBbdmFsdWVdXG5cbiAgZm9yIChjb25zdCBudW1iZXIgb2YgbnVtYmVyc1RvVmFsaWRhdGUpIHtcbiAgICBpZiAoIWlzTnVtYmVyKG51bWJlcikpIHJldHVybiB0KCd2YWxpZGF0aW9uOmVudGVyTnVtYmVyJylcblxuICAgIGNvbnN0IG51bWJlclZhbHVlID0gcGFyc2VGbG9hdChudW1iZXIgYXMgdW5rbm93biBhcyBzdHJpbmcpXG5cbiAgICBpZiAodHlwZW9mIG1heCA9PT0gJ251bWJlcicgJiYgbnVtYmVyVmFsdWUgPiBtYXgpIHtcbiAgICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOmdyZWF0ZXJUaGFuTWF4JywgeyBsYWJlbDogdCgndmFsdWUnKSwgbWF4LCB2YWx1ZSB9KVxuICAgIH1cblxuICAgIGlmICh0eXBlb2YgbWluID09PSAnbnVtYmVyJyAmJiBudW1iZXJWYWx1ZSA8IG1pbikge1xuICAgICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246bGVzc1RoYW5NaW4nLCB7IGxhYmVsOiB0KCd2YWx1ZScpLCBtaW4sIHZhbHVlIH0pXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZXhwb3J0IGNvbnN0IGFycmF5OiBWYWxpZGF0ZTx1bmtub3duLCB1bmtub3duLCBBcnJheUZpZWxkPiA9IChcbiAgdmFsdWUsXG4gIHsgbWF4Um93cywgbWluUm93cywgcmVxdWlyZWQsIHQgfSxcbikgPT4ge1xuICByZXR1cm4gdmFsaWRhdGVBcnJheUxlbmd0aCh2YWx1ZSwgeyBtYXhSb3dzLCBtaW5Sb3dzLCByZXF1aXJlZCwgdCB9KVxufVxuXG5leHBvcnQgY29uc3QgYmxvY2tzOiBWYWxpZGF0ZTx1bmtub3duLCB1bmtub3duLCBCbG9ja0ZpZWxkPiA9IChcbiAgdmFsdWUsXG4gIHsgbWF4Um93cywgbWluUm93cywgcmVxdWlyZWQsIHQgfSxcbikgPT4ge1xuICByZXR1cm4gdmFsaWRhdGVBcnJheUxlbmd0aCh2YWx1ZSwgeyBtYXhSb3dzLCBtaW5Sb3dzLCByZXF1aXJlZCwgdCB9KVxufVxuXG5jb25zdCB2YWxpZGF0ZUZpbHRlck9wdGlvbnM6IFZhbGlkYXRlID0gYXN5bmMgKFxuICB2YWx1ZSxcbiAgeyBpZCwgZGF0YSwgZmlsdGVyT3B0aW9ucywgcGF5bG9hZCwgcmVsYXRpb25UbywgcmVxLCBzaWJsaW5nRGF0YSwgdCwgdXNlciB9LFxuKSA9PiB7XG4gIGlmICghY2FuVXNlRE9NICYmIHR5cGVvZiBmaWx0ZXJPcHRpb25zICE9PSAndW5kZWZpbmVkJyAmJiB2YWx1ZSkge1xuICAgIGNvbnN0IG9wdGlvbnM6IHtcbiAgICAgIFtjb2xsZWN0aW9uOiBzdHJpbmddOiAobnVtYmVyIHwgc3RyaW5nKVtdXG4gICAgfSA9IHt9XG5cbiAgICBjb25zdCBmYWxzZUNvbGxlY3Rpb25zOiBzdHJpbmdbXSA9IFtdXG4gICAgY29uc3QgY29sbGVjdGlvbnMgPSB0eXBlb2YgcmVsYXRpb25UbyA9PT0gJ3N0cmluZycgPyBbcmVsYXRpb25Ub10gOiByZWxhdGlvblRvXG4gICAgY29uc3QgdmFsdWVzID0gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFt2YWx1ZV1cblxuICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgY29sbGVjdGlvbnMubWFwKGFzeW5jIChjb2xsZWN0aW9uKSA9PiB7XG4gICAgICAgIGxldCBvcHRpb25GaWx0ZXIgPVxuICAgICAgICAgIHR5cGVvZiBmaWx0ZXJPcHRpb25zID09PSAnZnVuY3Rpb24nXG4gICAgICAgICAgICA/IGF3YWl0IGZpbHRlck9wdGlvbnMoe1xuICAgICAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgICAgICAgcmVsYXRpb25UbzogY29sbGVjdGlvbixcbiAgICAgICAgICAgICAgICBzaWJsaW5nRGF0YSxcbiAgICAgICAgICAgICAgICB1c2VyLFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgOiBmaWx0ZXJPcHRpb25zXG5cbiAgICAgICAgaWYgKG9wdGlvbkZpbHRlciA9PT0gdHJ1ZSkge1xuICAgICAgICAgIG9wdGlvbkZpbHRlciA9IG51bGxcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHZhbHVlSURzOiAobnVtYmVyIHwgc3RyaW5nKVtdID0gW11cblxuICAgICAgICB2YWx1ZXMuZm9yRWFjaCgodmFsKSA9PiB7XG4gICAgICAgICAgaWYgKHR5cGVvZiB2YWwgPT09ICdvYmplY3QnICYmIHZhbD8udmFsdWUpIHtcbiAgICAgICAgICAgIHZhbHVlSURzLnB1c2godmFsLnZhbHVlKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh0eXBlb2YgdmFsID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgdmFsID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgdmFsdWVJRHMucHVzaCh2YWwpXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuXG4gICAgICAgIGlmICh2YWx1ZUlEcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgY29uc3QgZmluZFdoZXJlID0ge1xuICAgICAgICAgICAgYW5kOiBbeyBpZDogeyBpbjogdmFsdWVJRHMgfSB9XSxcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAob3B0aW9uRmlsdGVyKSBmaW5kV2hlcmUuYW5kLnB1c2gob3B0aW9uRmlsdGVyKVxuXG4gICAgICAgICAgaWYgKG9wdGlvbkZpbHRlciA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIGZhbHNlQ29sbGVjdGlvbnMucHVzaChvcHRpb25GaWx0ZXIpXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcGF5bG9hZC5maW5kKHtcbiAgICAgICAgICAgIGNvbGxlY3Rpb24sXG4gICAgICAgICAgICBkZXB0aDogMCxcbiAgICAgICAgICAgIGxpbWl0OiAwLFxuICAgICAgICAgICAgcGFnaW5hdGlvbjogZmFsc2UsXG4gICAgICAgICAgICByZXEsXG4gICAgICAgICAgICB3aGVyZTogZmluZFdoZXJlLFxuICAgICAgICAgIH0pXG5cbiAgICAgICAgICBvcHRpb25zW2NvbGxlY3Rpb25dID0gcmVzdWx0LmRvY3MubWFwKChkb2MpID0+IGRvYy5pZClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvcHRpb25zW2NvbGxlY3Rpb25dID0gW11cbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgKVxuXG4gICAgY29uc3QgaW52YWxpZFJlbGF0aW9uc2hpcHMgPSB2YWx1ZXMuZmlsdGVyKCh2YWwpID0+IHtcbiAgICAgIGxldCBjb2xsZWN0aW9uOiBzdHJpbmdcbiAgICAgIGxldCByZXF1ZXN0ZWRJRDogbnVtYmVyIHwgc3RyaW5nXG5cbiAgICAgIGlmICh0eXBlb2YgcmVsYXRpb25UbyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgY29sbGVjdGlvbiA9IHJlbGF0aW9uVG9cblxuICAgICAgICBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIHZhbCA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICByZXF1ZXN0ZWRJRCA9IHZhbFxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHJlbGF0aW9uVG8pICYmIHR5cGVvZiB2YWwgPT09ICdvYmplY3QnICYmIHZhbD8ucmVsYXRpb25Ubykge1xuICAgICAgICBjb2xsZWN0aW9uID0gdmFsLnJlbGF0aW9uVG9cbiAgICAgICAgcmVxdWVzdGVkSUQgPSB2YWwudmFsdWVcbiAgICAgIH1cblxuICAgICAgaWYgKGZhbHNlQ29sbGVjdGlvbnMuZmluZCgoc2x1ZykgPT4gcmVsYXRpb25UbyA9PT0gc2x1ZykpIHtcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG9wdGlvbnNbY29sbGVjdGlvbl0uaW5kZXhPZihyZXF1ZXN0ZWRJRCkgPT09IC0xXG4gICAgfSlcblxuICAgIGlmIChpbnZhbGlkUmVsYXRpb25zaGlwcy5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gaW52YWxpZFJlbGF0aW9uc2hpcHMucmVkdWNlKChlcnIsIGludmFsaWQsIGkpID0+IHtcbiAgICAgICAgcmV0dXJuIGAke2Vycn0gJHtKU09OLnN0cmluZ2lmeShpbnZhbGlkKX0ke1xuICAgICAgICAgIGludmFsaWRSZWxhdGlvbnNoaXBzLmxlbmd0aCA9PT0gaSArIDEgPyAnLCcgOiAnJ1xuICAgICAgICB9IGBcbiAgICAgIH0sIHQoJ3ZhbGlkYXRpb246aW52YWxpZFNlbGVjdGlvbnMnKSkgYXMgc3RyaW5nXG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIHJldHVybiB0cnVlXG59XG5cbmV4cG9ydCBjb25zdCB1cGxvYWQ6IFZhbGlkYXRlPHVua25vd24sIHVua25vd24sIFVwbG9hZEZpZWxkPiA9ICh2YWx1ZTogc3RyaW5nLCBvcHRpb25zKSA9PiB7XG4gIGlmICghdmFsdWUgJiYgb3B0aW9ucy5yZXF1aXJlZCkge1xuICAgIHJldHVybiBvcHRpb25zLnQoJ3ZhbGlkYXRpb246cmVxdWlyZWQnKVxuICB9XG5cbiAgaWYgKCFjYW5Vc2VET00gJiYgdHlwZW9mIHZhbHVlICE9PSAndW5kZWZpbmVkJyAmJiB2YWx1ZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IGlkRmllbGQgPSBvcHRpb25zPy5jb25maWc/LmNvbGxlY3Rpb25zXG4gICAgICA/LmZpbmQoKGNvbGxlY3Rpb24pID0+IGNvbGxlY3Rpb24uc2x1ZyA9PT0gb3B0aW9ucy5yZWxhdGlvblRvKVxuICAgICAgPy5maWVsZHM/LmZpbmQoKGZpZWxkKSA9PiBmaWVsZEFmZmVjdHNEYXRhKGZpZWxkKSAmJiBmaWVsZC5uYW1lID09PSAnaWQnKVxuXG4gICAgY29uc3QgdHlwZSA9IGdldElEVHlwZShpZEZpZWxkLCBvcHRpb25zPy5wYXlsb2FkPy5kYj8uZGVmYXVsdElEVHlwZSlcblxuICAgIGlmICghaXNWYWxpZElEKHZhbHVlLCB0eXBlKSkge1xuICAgICAgcmV0dXJuIG9wdGlvbnMudCgndmFsaWRhdGlvbjp2YWxpZFVwbG9hZElEJylcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdmFsaWRhdGVGaWx0ZXJPcHRpb25zKHZhbHVlLCBvcHRpb25zKVxufVxuXG5leHBvcnQgY29uc3QgcmVsYXRpb25zaGlwOiBWYWxpZGF0ZTx1bmtub3duLCB1bmtub3duLCBSZWxhdGlvbnNoaXBGaWVsZD4gPSBhc3luYyAoXG4gIHZhbHVlOiBSZWxhdGlvbnNoaXBWYWx1ZSxcbiAgb3B0aW9ucyxcbikgPT4ge1xuICBjb25zdCB7IGNvbmZpZywgbWF4Um93cywgbWluUm93cywgcGF5bG9hZCwgcmVsYXRpb25UbywgcmVxdWlyZWQsIHQgfSA9IG9wdGlvbnNcblxuICBpZiAoKCF2YWx1ZSB8fCAoQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUubGVuZ3RoID09PSAwKSkgJiYgcmVxdWlyZWQpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpyZXF1aXJlZCcpXG4gIH1cblxuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUubGVuZ3RoID4gMCkge1xuICAgIGlmIChtaW5Sb3dzICYmIHZhbHVlLmxlbmd0aCA8IG1pblJvd3MpIHtcbiAgICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOmxlc3NUaGFuTWluJywgeyBsYWJlbDogdCgncm93cycpLCBtaW46IG1pblJvd3MsIHZhbHVlOiB2YWx1ZS5sZW5ndGggfSlcbiAgICB9XG5cbiAgICBpZiAobWF4Um93cyAmJiB2YWx1ZS5sZW5ndGggPiBtYXhSb3dzKSB7XG4gICAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpncmVhdGVyVGhhbk1heCcsIHsgbGFiZWw6IHQoJ3Jvd3MnKSwgbWF4OiBtYXhSb3dzLCB2YWx1ZTogdmFsdWUubGVuZ3RoIH0pXG4gICAgfVxuICB9XG5cbiAgaWYgKCFjYW5Vc2VET00gJiYgdHlwZW9mIHZhbHVlICE9PSAndW5kZWZpbmVkJyAmJiB2YWx1ZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHZhbHVlcyA9IEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiBbdmFsdWVdXG5cbiAgICBjb25zdCBpbnZhbGlkUmVsYXRpb25zaGlwcyA9IHZhbHVlcy5maWx0ZXIoKHZhbCkgPT4ge1xuICAgICAgbGV0IGNvbGxlY3Rpb25TbHVnOiBzdHJpbmdcbiAgICAgIGxldCByZXF1ZXN0ZWRJRFxuXG4gICAgICBpZiAodHlwZW9mIHJlbGF0aW9uVG8gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGNvbGxlY3Rpb25TbHVnID0gcmVsYXRpb25Ub1xuXG4gICAgICAgIC8vIGN1c3RvbSBpZFxuICAgICAgICBpZiAodmFsKSB7XG4gICAgICAgICAgcmVxdWVzdGVkSUQgPSB2YWxcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShyZWxhdGlvblRvKSAmJiB0eXBlb2YgdmFsID09PSAnb2JqZWN0JyAmJiB2YWw/LnJlbGF0aW9uVG8pIHtcbiAgICAgICAgY29sbGVjdGlvblNsdWcgPSB2YWwucmVsYXRpb25Ub1xuICAgICAgICByZXF1ZXN0ZWRJRCA9IHZhbC52YWx1ZVxuICAgICAgfVxuXG4gICAgICBpZiAocmVxdWVzdGVkSUQgPT09IG51bGwpIHJldHVybiBmYWxzZVxuXG4gICAgICBjb25zdCBpZEZpZWxkID0gY29uZmlnPy5jb2xsZWN0aW9uc1xuICAgICAgICA/LmZpbmQoKGNvbGxlY3Rpb24pID0+IGNvbGxlY3Rpb24uc2x1ZyA9PT0gY29sbGVjdGlvblNsdWcpXG4gICAgICAgID8uZmllbGRzPy5maW5kKChmaWVsZCkgPT4gZmllbGRBZmZlY3RzRGF0YShmaWVsZCkgJiYgZmllbGQubmFtZSA9PT0gJ2lkJylcblxuICAgICAgY29uc3QgdHlwZSA9IGdldElEVHlwZShpZEZpZWxkLCBwYXlsb2FkPy5kYj8uZGVmYXVsdElEVHlwZSlcblxuICAgICAgcmV0dXJuICFpc1ZhbGlkSUQocmVxdWVzdGVkSUQsIHR5cGUpXG4gICAgfSlcblxuICAgIGlmIChpbnZhbGlkUmVsYXRpb25zaGlwcy5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gYFRoaXMgcmVsYXRpb25zaGlwIGZpZWxkIGhhcyB0aGUgZm9sbG93aW5nIGludmFsaWQgcmVsYXRpb25zaGlwczogJHtpbnZhbGlkUmVsYXRpb25zaGlwc1xuICAgICAgICAubWFwKChlcnIsIGludmFsaWQpID0+IHtcbiAgICAgICAgICByZXR1cm4gYCR7ZXJyfSAke0pTT04uc3RyaW5naWZ5KGludmFsaWQpfWBcbiAgICAgICAgfSlcbiAgICAgICAgLmpvaW4oJywgJyl9YFxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB2YWxpZGF0ZUZpbHRlck9wdGlvbnModmFsdWUsIG9wdGlvbnMpXG59XG5cbmV4cG9ydCBjb25zdCBzZWxlY3Q6IFZhbGlkYXRlPHVua25vd24sIHVua25vd24sIFNlbGVjdEZpZWxkPiA9IChcbiAgdmFsdWUsXG4gIHsgaGFzTWFueSwgb3B0aW9ucywgcmVxdWlyZWQsIHQgfSxcbikgPT4ge1xuICBpZiAoXG4gICAgQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiZcbiAgICB2YWx1ZS5zb21lKFxuICAgICAgKGlucHV0KSA9PlxuICAgICAgICAhb3B0aW9ucy5zb21lKFxuICAgICAgICAgIChvcHRpb24pID0+IG9wdGlvbiA9PT0gaW5wdXQgfHwgKHR5cGVvZiBvcHRpb24gIT09ICdzdHJpbmcnICYmIG9wdGlvbj8udmFsdWUgPT09IGlucHV0KSxcbiAgICAgICAgKSxcbiAgICApXG4gICkge1xuICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOmludmFsaWRTZWxlY3Rpb24nKVxuICB9XG5cbiAgaWYgKFxuICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiZcbiAgICAhb3B0aW9ucy5zb21lKFxuICAgICAgKG9wdGlvbikgPT4gb3B0aW9uID09PSB2YWx1ZSB8fCAodHlwZW9mIG9wdGlvbiAhPT0gJ3N0cmluZycgJiYgb3B0aW9uLnZhbHVlID09PSB2YWx1ZSksXG4gICAgKVxuICApIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjppbnZhbGlkU2VsZWN0aW9uJylcbiAgfVxuXG4gIGlmIChcbiAgICByZXF1aXJlZCAmJlxuICAgICh0eXBlb2YgdmFsdWUgPT09ICd1bmRlZmluZWQnIHx8XG4gICAgICB2YWx1ZSA9PT0gbnVsbCB8fFxuICAgICAgKGhhc01hbnkgJiYgQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgKHZhbHVlIGFzIFtdKT8ubGVuZ3RoID09PSAwKSlcbiAgKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246cmVxdWlyZWQnKVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZXhwb3J0IGNvbnN0IHJhZGlvOiBWYWxpZGF0ZTx1bmtub3duLCB1bmtub3duLCBSYWRpb0ZpZWxkPiA9ICh2YWx1ZSwgeyBvcHRpb25zLCByZXF1aXJlZCwgdCB9KSA9PiB7XG4gIGlmICh2YWx1ZSkge1xuICAgIGNvbnN0IHZhbHVlTWF0Y2hlc09wdGlvbiA9IG9wdGlvbnMuc29tZShcbiAgICAgIChvcHRpb24pID0+IG9wdGlvbiA9PT0gdmFsdWUgfHwgKHR5cGVvZiBvcHRpb24gIT09ICdzdHJpbmcnICYmIG9wdGlvbi52YWx1ZSA9PT0gdmFsdWUpLFxuICAgIClcbiAgICByZXR1cm4gdmFsdWVNYXRjaGVzT3B0aW9uIHx8IHQoJ3ZhbGlkYXRpb246aW52YWxpZFNlbGVjdGlvbicpXG4gIH1cblxuICByZXR1cm4gcmVxdWlyZWQgPyB0KCd2YWxpZGF0aW9uOnJlcXVpcmVkJykgOiB0cnVlXG59XG5cbmV4cG9ydCBjb25zdCBwb2ludDogVmFsaWRhdGU8dW5rbm93biwgdW5rbm93biwgUG9pbnRGaWVsZD4gPSAoXG4gIHZhbHVlOiBbbnVtYmVyIHwgc3RyaW5nLCBudW1iZXIgfCBzdHJpbmddID0gWycnLCAnJ10sXG4gIHsgcmVxdWlyZWQsIHQgfSxcbikgPT4ge1xuICBjb25zdCBsbmcgPSBwYXJzZUZsb2F0KFN0cmluZyh2YWx1ZVswXSkpXG4gIGNvbnN0IGxhdCA9IHBhcnNlRmxvYXQoU3RyaW5nKHZhbHVlWzFdKSlcbiAgaWYgKFxuICAgIHJlcXVpcmVkICYmXG4gICAgKCh2YWx1ZVswXSAmJiB2YWx1ZVsxXSAmJiB0eXBlb2YgbG5nICE9PSAnbnVtYmVyJyAmJiB0eXBlb2YgbGF0ICE9PSAnbnVtYmVyJykgfHxcbiAgICAgIE51bWJlci5pc05hTihsbmcpIHx8XG4gICAgICBOdW1iZXIuaXNOYU4obGF0KSB8fFxuICAgICAgKEFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCAhPT0gMikpXG4gICkge1xuICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOnJlcXVpcmVzVHdvTnVtYmVycycpXG4gIH1cblxuICBpZiAoKHZhbHVlWzFdICYmIE51bWJlci5pc05hTihsbmcpKSB8fCAodmFsdWVbMF0gJiYgTnVtYmVyLmlzTmFOKGxhdCkpKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246aW52YWxpZElucHV0JylcbiAgfVxuXG4gIHJldHVybiB0cnVlXG59XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgYXJyYXksXG4gIGJsb2NrcyxcbiAgY2hlY2tib3gsXG4gIGNvZGUsXG4gIGRhdGUsXG4gIGVtYWlsLFxuICBqc29uLFxuICBudW1iZXIsXG4gIHBhc3N3b3JkLFxuICBwb2ludCxcbiAgcmFkaW8sXG4gIHJlbGF0aW9uc2hpcCxcbiAgcmljaFRleHQsXG4gIHNlbGVjdCxcbiAgdGV4dCxcbiAgdGV4dGFyZWEsXG4gIHVwbG9hZCxcbn1cbiJdLCJuYW1lcyI6WyJ0ZXh0IiwicGFzc3dvcmQiLCJlbWFpbCIsInRleHRhcmVhIiwiY29kZSIsImpzb24iLCJjaGVja2JveCIsImRhdGUiLCJyaWNoVGV4dCIsIm51bWJlciIsImFycmF5IiwiYmxvY2tzIiwidXBsb2FkIiwicmVsYXRpb25zaGlwIiwic2VsZWN0IiwicmFkaW8iLCJwb2ludCIsInZhbHVlIiwiY29uZmlnIiwibWF4TGVuZ3RoIiwiZmllbGRNYXhMZW5ndGgiLCJtaW5MZW5ndGgiLCJyZXF1aXJlZCIsInQiLCJkZWZhdWx0TWF4VGV4dExlbmd0aCIsImxlbmd0aCIsInBheWxvYWQiLCJ0ZXN0IiwidW5kZWZpbmVkIiwianNvbkVycm9yIiwiaXNOYU4iLCJEYXRlIiwicGFyc2UiLCJ0b1N0cmluZyIsIm9wdGlvbnMiLCJlZGl0b3IiLCJ2YWxpZGF0ZSIsInZhbGlkYXRlQXJyYXlMZW5ndGgiLCJtYXhSb3dzIiwibWluUm93cyIsImFycmF5TGVuZ3RoIiwiQXJyYXkiLCJpc0FycmF5IiwiY291bnQiLCJsYWJlbCIsImhhc01hbnkiLCJtYXgiLCJtaW4iLCJsZW5ndGhWYWxpZGF0aW9uUmVzdWx0IiwiaXNOdW1iZXIiLCJudW1iZXJzVG9WYWxpZGF0ZSIsIm51bWJlclZhbHVlIiwicGFyc2VGbG9hdCIsInZhbGlkYXRlRmlsdGVyT3B0aW9ucyIsImlkIiwiZGF0YSIsImZpbHRlck9wdGlvbnMiLCJyZWxhdGlvblRvIiwicmVxIiwic2libGluZ0RhdGEiLCJ1c2VyIiwiY2FuVXNlRE9NIiwiZmFsc2VDb2xsZWN0aW9ucyIsImNvbGxlY3Rpb25zIiwidmFsdWVzIiwiUHJvbWlzZSIsImFsbCIsIm1hcCIsImNvbGxlY3Rpb24iLCJvcHRpb25GaWx0ZXIiLCJ2YWx1ZUlEcyIsImZvckVhY2giLCJ2YWwiLCJwdXNoIiwiZmluZFdoZXJlIiwiYW5kIiwiaW4iLCJyZXN1bHQiLCJmaW5kIiwiZGVwdGgiLCJsaW1pdCIsInBhZ2luYXRpb24iLCJ3aGVyZSIsImRvY3MiLCJkb2MiLCJpbnZhbGlkUmVsYXRpb25zaGlwcyIsImZpbHRlciIsInJlcXVlc3RlZElEIiwic2x1ZyIsImluZGV4T2YiLCJyZWR1Y2UiLCJlcnIiLCJpbnZhbGlkIiwiaSIsIkpTT04iLCJzdHJpbmdpZnkiLCJpZEZpZWxkIiwiZmllbGRzIiwiZmllbGQiLCJmaWVsZEFmZmVjdHNEYXRhIiwibmFtZSIsInR5cGUiLCJnZXRJRFR5cGUiLCJkYiIsImRlZmF1bHRJRFR5cGUiLCJpc1ZhbGlkSUQiLCJjb2xsZWN0aW9uU2x1ZyIsImpvaW4iLCJzb21lIiwiaW5wdXQiLCJvcHRpb24iLCJ2YWx1ZU1hdGNoZXNPcHRpb24iLCJsbmciLCJTdHJpbmciLCJsYXQiLCJOdW1iZXIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0lBNEJhQSxJQUFJO2VBQUpBOztJQXlCQUMsUUFBUTtlQUFSQTs7SUF3QkFDLEtBQUs7ZUFBTEE7O0lBUUFDLFFBQVE7ZUFBUkE7O0lBdUJBQyxJQUFJO2VBQUpBOztJQVFBQyxJQUFJO2VBQUpBOztJQWVBQyxRQUFRO2VBQVJBOztJQVdBQyxJQUFJO2VBQUpBOztJQWlCQUMsUUFBUTtlQUFSQTs7SUF1Q0FDLE1BQU07ZUFBTkE7O0lBa0NBQyxLQUFLO2VBQUxBOztJQU9BQyxNQUFNO2VBQU5BOztJQWtIQUMsTUFBTTtlQUFOQTs7SUFvQkFDLFlBQVk7ZUFBWkE7O0lBZ0VBQyxNQUFNO2VBQU5BOztJQXFDQUMsS0FBSztlQUFMQTs7SUFXQUMsS0FBSztlQUFMQTs7SUF1QmIsT0FrQkM7ZUFsQkQ7OztrRUF0ZXNCOzJCQUNJOzBCQUNEOzJCQUNDO3VCQUNPOzs7Ozs7QUFFMUIsTUFBTWhC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
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/globals/graphql/init.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAkB5C,iBAAS,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA+IlD;AAED,eAAe,kBAAkB,CAAA"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/globals/graphql/init.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAkB5C,iBAAS,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAuJlD;AAED,eAAe,kBAAkB,CAAA"}
@@ -39,8 +39,9 @@ function initGlobalsGraphQL(payload) {
39
39
  const formattedName = graphQL?.name ? graphQL.name : (0, _pluralize.singular)((0, _formatLabels.toWords)(global.slug, true));
40
40
  const forceNullableObjectType = Boolean(versions?.drafts);
41
41
  if (!payload.globals.graphQL) payload.globals.graphQL = {};
42
+ const updateMutationInputType = (0, _buildMutationInputType.default)(payload, formattedName, fields, formattedName);
42
43
  payload.globals.graphQL[slug] = {
43
- mutationInputType: new _graphql.GraphQLNonNull((0, _buildMutationInputType.default)(payload, formattedName, fields, formattedName)),
44
+ mutationInputType: updateMutationInputType ? new _graphql.GraphQLNonNull(updateMutationInputType) : null,
44
45
  type: (0, _buildObjectType.default)({
45
46
  name: formattedName,
46
47
  fields,
@@ -68,9 +69,11 @@ function initGlobalsGraphQL(payload) {
68
69
  };
69
70
  payload.Mutation.fields[`update${formattedName}`] = {
70
71
  args: {
71
- data: {
72
- type: payload.globals.graphQL[slug].mutationInputType
73
- },
72
+ ...updateMutationInputType ? {
73
+ data: {
74
+ type: payload.globals.graphQL[slug].mutationInputType
75
+ }
76
+ } : {},
74
77
  draft: {
75
78
  type: _graphql.GraphQLBoolean
76
79
  },
@@ -180,4 +183,4 @@ function initGlobalsGraphQL(payload) {
180
183
  }
181
184
  const _default = initGlobalsGraphQL;
182
185
 
183
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9nbG9iYWxzL2dyYXBocWwvaW5pdC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1wYXJhbS1yZWFzc2lnbiAqL1xuaW1wb3J0IHsgR3JhcGhRTEJvb2xlYW4sIEdyYXBoUUxJbnQsIEdyYXBoUUxOb25OdWxsLCBHcmFwaFFMU3RyaW5nIH0gZnJvbSAnZ3JhcGhxbCdcbmltcG9ydCB7IHNpbmd1bGFyIH0gZnJvbSAncGx1cmFsaXplJ1xuXG5pbXBvcnQgdHlwZSB7IEZpZWxkIH0gZnJvbSAnLi4vLi4vZmllbGRzL2NvbmZpZy90eXBlcydcbmltcG9ydCB0eXBlIHsgUGF5bG9hZCB9IGZyb20gJy4uLy4uL3BheWxvYWQnXG5pbXBvcnQgdHlwZSB7IFNhbml0aXplZEdsb2JhbENvbmZpZyB9IGZyb20gJy4uL2NvbmZpZy90eXBlcydcblxuaW1wb3J0IGJ1aWxkTXV0YXRpb25JbnB1dFR5cGUgZnJvbSAnLi4vLi4vZ3JhcGhxbC9zY2hlbWEvYnVpbGRNdXRhdGlvbklucHV0VHlwZSdcbmltcG9ydCBidWlsZE9iamVjdFR5cGUgZnJvbSAnLi4vLi4vZ3JhcGhxbC9zY2hlbWEvYnVpbGRPYmplY3RUeXBlJ1xuaW1wb3J0IGJ1aWxkUGFnaW5hdGVkTGlzdFR5cGUgZnJvbSAnLi4vLi4vZ3JhcGhxbC9zY2hlbWEvYnVpbGRQYWdpbmF0ZWRMaXN0VHlwZSdcbmltcG9ydCB7IGJ1aWxkUG9saWN5VHlwZSB9IGZyb20gJy4uLy4uL2dyYXBocWwvc2NoZW1hL2J1aWxkUG9saWNpZXNUeXBlJ1xuaW1wb3J0IGJ1aWxkV2hlcmVJbnB1dFR5cGUgZnJvbSAnLi4vLi4vZ3JhcGhxbC9zY2hlbWEvYnVpbGRXaGVyZUlucHV0VHlwZSdcbmltcG9ydCBmb3JtYXROYW1lIGZyb20gJy4uLy4uL2dyYXBocWwvdXRpbGl0aWVzL2Zvcm1hdE5hbWUnXG5pbXBvcnQgeyB0b1dvcmRzIH0gZnJvbSAnLi4vLi4vdXRpbGl0aWVzL2Zvcm1hdExhYmVscydcbmltcG9ydCB7IGJ1aWxkVmVyc2lvbkdsb2JhbEZpZWxkcyB9IGZyb20gJy4uLy4uL3ZlcnNpb25zL2J1aWxkR2xvYmFsRmllbGRzJ1xuaW1wb3J0IHsgZG9jQWNjZXNzUmVzb2x2ZXIgfSBmcm9tICcuL3Jlc29sdmVycy9kb2NBY2Nlc3MnXG5pbXBvcnQgZmluZE9uZVJlc29sdmVyIGZyb20gJy4vcmVzb2x2ZXJzL2ZpbmRPbmUnXG5pbXBvcnQgZmluZFZlcnNpb25CeUlEUmVzb2x2ZXIgZnJvbSAnLi9yZXNvbHZlcnMvZmluZFZlcnNpb25CeUlEJ1xuaW1wb3J0IGZpbmRWZXJzaW9uc1Jlc29sdmVyIGZyb20gJy4vcmVzb2x2ZXJzL2ZpbmRWZXJzaW9ucydcbmltcG9ydCByZXN0b3JlVmVyc2lvblJlc29sdmVyIGZyb20gJy4vcmVzb2x2ZXJzL3Jlc3RvcmVWZXJzaW9uJ1xuaW1wb3J0IHVwZGF0ZVJlc29sdmVyIGZyb20gJy4vcmVzb2x2ZXJzL3VwZGF0ZSdcblxuZnVuY3Rpb24gaW5pdEdsb2JhbHNHcmFwaFFMKHBheWxvYWQ6IFBheWxvYWQpOiB2b2lkIHtcbiAgT2JqZWN0LmtleXMocGF5bG9hZC5nbG9iYWxzLmNvbmZpZykuZm9yRWFjaCgoc2x1ZykgPT4ge1xuICAgIGNvbnN0IGdsb2JhbDogU2FuaXRpemVkR2xvYmFsQ29uZmlnID0gcGF5bG9hZC5nbG9iYWxzLmNvbmZpZ1tzbHVnXVxuICAgIGNvbnN0IHsgZmllbGRzLCBncmFwaFFMLCB2ZXJzaW9ucyB9ID0gZ2xvYmFsXG5cbiAgICBpZiAoZ3JhcGhRTCA9PT0gZmFsc2UpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IGZvcm1hdHRlZE5hbWUgPSBncmFwaFFMPy5uYW1lID8gZ3JhcGhRTC5uYW1lIDogc2luZ3VsYXIodG9Xb3JkcyhnbG9iYWwuc2x1ZywgdHJ1ZSkpXG5cbiAgICBjb25zdCBmb3JjZU51bGxhYmxlT2JqZWN0VHlwZSA9IEJvb2xlYW4odmVyc2lvbnM/LmRyYWZ0cylcblxuICAgIGlmICghcGF5bG9hZC5nbG9iYWxzLmdyYXBoUUwpIHBheWxvYWQuZ2xvYmFscy5ncmFwaFFMID0ge31cblxuICAgIHBheWxvYWQuZ2xvYmFscy5ncmFwaFFMW3NsdWddID0ge1xuICAgICAgbXV0YXRpb25JbnB1dFR5cGU6IG5ldyBHcmFwaFFMTm9uTnVsbChcbiAgICAgICAgYnVpbGRNdXRhdGlvbklucHV0VHlwZShwYXlsb2FkLCBmb3JtYXR0ZWROYW1lLCBmaWVsZHMsIGZvcm1hdHRlZE5hbWUpLFxuICAgICAgKSxcbiAgICAgIHR5cGU6IGJ1aWxkT2JqZWN0VHlwZSh7XG4gICAgICAgIG5hbWU6IGZvcm1hdHRlZE5hbWUsXG4gICAgICAgIGZpZWxkcyxcbiAgICAgICAgZm9yY2VOdWxsYWJsZTogZm9yY2VOdWxsYWJsZU9iamVjdFR5cGUsXG4gICAgICAgIHBhcmVudE5hbWU6IGZvcm1hdHRlZE5hbWUsXG4gICAgICAgIHBheWxvYWQsXG4gICAgICB9KSxcbiAgICB9XG5cbiAgICBwYXlsb2FkLlF1ZXJ5LmZpZWxkc1tmb3JtYXR0ZWROYW1lXSA9IHtcbiAgICAgIGFyZ3M6IHtcbiAgICAgICAgZHJhZnQ6IHsgdHlwZTogR3JhcGhRTEJvb2xlYW4gfSxcbiAgICAgICAgLi4uKHBheWxvYWQuY29uZmlnLmxvY2FsaXphdGlvblxuICAgICAgICAgID8ge1xuICAgICAgICAgICAgICBmYWxsYmFja0xvY2FsZTogeyB0eXBlOiBwYXlsb2FkLnR5cGVzLmZhbGxiYWNrTG9jYWxlSW5wdXRUeXBlIH0sXG4gICAgICAgICAgICAgIGxvY2FsZTogeyB0eXBlOiBwYXlsb2FkLnR5cGVzLmxvY2FsZUlucHV0VHlwZSB9LFxuICAgICAgICAgICAgfVxuICAgICAgICAgIDoge30pLFxuICAgICAgfSxcbiAgICAgIHJlc29sdmU6IGZpbmRPbmVSZXNvbHZlcihnbG9iYWwpLFxuICAgICAgdHlwZTogcGF5bG9hZC5nbG9iYWxzLmdyYXBoUUxbc2x1Z10udHlwZSxcbiAgICB9XG5cbiAgICBwYXlsb2FkLk11dGF0aW9uLmZpZWxkc1tgdXBkYXRlJHtmb3JtYXR0ZWROYW1lfWBdID0ge1xuICAgICAgYXJnczoge1xuICAgICAgICBkYXRhOiB7IHR5cGU6IHBheWxvYWQuZ2xvYmFscy5ncmFwaFFMW3NsdWddLm11dGF0aW9uSW5wdXRUeXBlIH0sXG4gICAgICAgIGRyYWZ0OiB7IHR5cGU6IEdyYXBoUUxCb29sZWFuIH0sXG4gICAgICAgIC4uLihwYXlsb2FkLmNvbmZpZy5sb2NhbGl6YXRpb25cbiAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgbG9jYWxlOiB7IHR5cGU6IHBheWxvYWQudHlwZXMubG9jYWxlSW5wdXRUeXBlIH0sXG4gICAgICAgICAgICB9XG4gICAgICAgICAgOiB7fSksXG4gICAgICB9LFxuICAgICAgcmVzb2x2ZTogdXBkYXRlUmVzb2x2ZXIoZ2xvYmFsKSxcbiAgICAgIHR5cGU6IHBheWxvYWQuZ2xvYmFscy5ncmFwaFFMW3NsdWddLnR5cGUsXG4gICAgfVxuXG4gICAgcGF5bG9hZC5RdWVyeS5maWVsZHNbYGRvY0FjY2VzcyR7Zm9ybWF0dGVkTmFtZX1gXSA9IHtcbiAgICAgIHJlc29sdmU6IGRvY0FjY2Vzc1Jlc29sdmVyKGdsb2JhbCksXG4gICAgICB0eXBlOiBidWlsZFBvbGljeVR5cGUoe1xuICAgICAgICBlbnRpdHk6IGdsb2JhbCxcbiAgICAgICAgc2NvcGU6ICdkb2NBY2Nlc3MnLFxuICAgICAgICB0eXBlOiAnZ2xvYmFsJyxcbiAgICAgICAgdHlwZVN1ZmZpeDogJ0RvY0FjY2VzcycsXG4gICAgICB9KSxcbiAgICB9XG5cbiAgICBpZiAoZ2xvYmFsLnZlcnNpb25zKSB7XG4gICAgICBjb25zdCBpZFR5cGUgPSBwYXlsb2FkLmRiLmRlZmF1bHRJRFR5cGUgPT09ICdudW1iZXInID8gR3JhcGhRTEludCA6IEdyYXBoUUxTdHJpbmdcblxuICAgICAgY29uc3QgdmVyc2lvbkdsb2JhbEZpZWxkczogRmllbGRbXSA9IFtcbiAgICAgICAgLi4uYnVpbGRWZXJzaW9uR2xvYmFsRmllbGRzKGdsb2JhbCksXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiAnaWQnLFxuICAgICAgICAgIHR5cGU6IHBheWxvYWQuZGIuZGVmYXVsdElEVHlwZSBhcyAndGV4dCcsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiAnY3JlYXRlZEF0JyxcbiAgICAgICAgICBsYWJlbDogJ0NyZWF0ZWQgQXQnLFxuICAgICAgICAgIHR5cGU6ICdkYXRlJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6ICd1cGRhdGVkQXQnLFxuICAgICAgICAgIGxhYmVsOiAnVXBkYXRlZCBBdCcsXG4gICAgICAgICAgdHlwZTogJ2RhdGUnLFxuICAgICAgICB9LFxuICAgICAgXVxuXG4gICAgICBwYXlsb2FkLmdsb2JhbHMuZ3JhcGhRTFtzbHVnXS52ZXJzaW9uVHlwZSA9IGJ1aWxkT2JqZWN0VHlwZSh7XG4gICAgICAgIG5hbWU6IGAke2Zvcm1hdHRlZE5hbWV9VmVyc2lvbmAsXG4gICAgICAgIGZpZWxkczogdmVyc2lvbkdsb2JhbEZpZWxkcyxcbiAgICAgICAgZm9yY2VOdWxsYWJsZTogZm9yY2VOdWxsYWJsZU9iamVjdFR5cGUsXG4gICAgICAgIHBhcmVudE5hbWU6IGAke2Zvcm1hdHRlZE5hbWV9VmVyc2lvbmAsXG4gICAgICAgIHBheWxvYWQsXG4gICAgICB9KVxuXG4gICAgICBwYXlsb2FkLlF1ZXJ5LmZpZWxkc1tgdmVyc2lvbiR7Zm9ybWF0TmFtZShmb3JtYXR0ZWROYW1lKX1gXSA9IHtcbiAgICAgICAgYXJnczoge1xuICAgICAgICAgIGlkOiB7IHR5cGU6IGlkVHlwZSB9LFxuICAgICAgICAgIC4uLihwYXlsb2FkLmNvbmZpZy5sb2NhbGl6YXRpb25cbiAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgIGZhbGxiYWNrTG9jYWxlOiB7IHR5cGU6IHBheWxvYWQudHlwZXMuZmFsbGJhY2tMb2NhbGVJbnB1dFR5cGUgfSxcbiAgICAgICAgICAgICAgICBsb2NhbGU6IHsgdHlwZTogcGF5bG9hZC50eXBlcy5sb2NhbGVJbnB1dFR5cGUgfSxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgOiB7fSksXG4gICAgICAgIH0sXG4gICAgICAgIHJlc29sdmU6IGZpbmRWZXJzaW9uQnlJRFJlc29sdmVyKGdsb2JhbCksXG4gICAgICAgIHR5cGU6IHBheWxvYWQuZ2xvYmFscy5ncmFwaFFMW3NsdWddLnZlcnNpb25UeXBlLFxuICAgICAgfVxuICAgICAgcGF5bG9hZC5RdWVyeS5maWVsZHNbYHZlcnNpb25zJHtmb3JtYXR0ZWROYW1lfWBdID0ge1xuICAgICAgICBhcmdzOiB7XG4gICAgICAgICAgd2hlcmU6IHtcbiAgICAgICAgICAgIHR5cGU6IGJ1aWxkV2hlcmVJbnB1dFR5cGUoe1xuICAgICAgICAgICAgICBuYW1lOiBgdmVyc2lvbnMke2Zvcm1hdHRlZE5hbWV9YCxcbiAgICAgICAgICAgICAgZmllbGRzOiB2ZXJzaW9uR2xvYmFsRmllbGRzLFxuICAgICAgICAgICAgICBwYXJlbnROYW1lOiBgdmVyc2lvbnMke2Zvcm1hdHRlZE5hbWV9YCxcbiAgICAgICAgICAgICAgcGF5bG9hZCxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgLi4uKHBheWxvYWQuY29uZmlnLmxvY2FsaXphdGlvblxuICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgZmFsbGJhY2tMb2NhbGU6IHsgdHlwZTogcGF5bG9hZC50eXBlcy5mYWxsYmFja0xvY2FsZUlucHV0VHlwZSB9LFxuICAgICAgICAgICAgICAgIGxvY2FsZTogeyB0eXBlOiBwYXlsb2FkLnR5cGVzLmxvY2FsZUlucHV0VHlwZSB9LFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA6IHt9KSxcbiAgICAgICAgICBsaW1pdDogeyB0eXBlOiBHcmFwaFFMSW50IH0sXG4gICAgICAgICAgcGFnZTogeyB0eXBlOiBHcmFwaFFMSW50IH0sXG4gICAgICAgICAgc29ydDogeyB0eXBlOiBHcmFwaFFMU3RyaW5nIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHJlc29sdmU6IGZpbmRWZXJzaW9uc1Jlc29sdmVyKGdsb2JhbCksXG4gICAgICAgIHR5cGU6IGJ1aWxkUGFnaW5hdGVkTGlzdFR5cGUoXG4gICAgICAgICAgYHZlcnNpb25zJHtmb3JtYXROYW1lKGZvcm1hdHRlZE5hbWUpfWAsXG4gICAgICAgICAgcGF5bG9hZC5nbG9iYWxzLmdyYXBoUUxbc2x1Z10udmVyc2lvblR5cGUsXG4gICAgICAgICksXG4gICAgICB9XG4gICAgICBwYXlsb2FkLk11dGF0aW9uLmZpZWxkc1tgcmVzdG9yZVZlcnNpb24ke2Zvcm1hdE5hbWUoZm9ybWF0dGVkTmFtZSl9YF0gPSB7XG4gICAgICAgIGFyZ3M6IHtcbiAgICAgICAgICBpZDogeyB0eXBlOiBpZFR5cGUgfSxcbiAgICAgICAgfSxcbiAgICAgICAgcmVzb2x2ZTogcmVzdG9yZVZlcnNpb25SZXNvbHZlcihnbG9iYWwpLFxuICAgICAgICB0eXBlOiBwYXlsb2FkLmdsb2JhbHMuZ3JhcGhRTFtzbHVnXS50eXBlLFxuICAgICAgfVxuICAgIH1cbiAgfSlcbn1cblxuZXhwb3J0IGRlZmF1bHQgaW5pdEdsb2JhbHNHcmFwaFFMXG4iXSwibmFtZXMiOlsiaW5pdEdsb2JhbHNHcmFwaFFMIiwicGF5bG9hZCIsIk9iamVjdCIsImtleXMiLCJnbG9iYWxzIiwiY29uZmlnIiwiZm9yRWFjaCIsInNsdWciLCJnbG9iYWwiLCJmaWVsZHMiLCJncmFwaFFMIiwidmVyc2lvbnMiLCJmb3JtYXR0ZWROYW1lIiwibmFtZSIsInNpbmd1bGFyIiwidG9Xb3JkcyIsImZvcmNlTnVsbGFibGVPYmplY3RUeXBlIiwiQm9vbGVhbiIsImRyYWZ0cyIsIm11dGF0aW9uSW5wdXRUeXBlIiwiR3JhcGhRTE5vbk51bGwiLCJidWlsZE11dGF0aW9uSW5wdXRUeXBlIiwidHlwZSIsImJ1aWxkT2JqZWN0VHlwZSIsImZvcmNlTnVsbGFibGUiLCJwYXJlbnROYW1lIiwiUXVlcnkiLCJhcmdzIiwiZHJhZnQiLCJHcmFwaFFMQm9vbGVhbiIsImxvY2FsaXphdGlvbiIsImZhbGxiYWNrTG9jYWxlIiwidHlwZXMiLCJmYWxsYmFja0xvY2FsZUlucHV0VHlwZSIsImxvY2FsZSIsImxvY2FsZUlucHV0VHlwZSIsInJlc29sdmUiLCJmaW5kT25lUmVzb2x2ZXIiLCJNdXRhdGlvbiIsImRhdGEiLCJ1cGRhdGVSZXNvbHZlciIsImRvY0FjY2Vzc1Jlc29sdmVyIiwiYnVpbGRQb2xpY3lUeXBlIiwiZW50aXR5Iiwic2NvcGUiLCJ0eXBlU3VmZml4IiwiaWRUeXBlIiwiZGIiLCJkZWZhdWx0SURUeXBlIiwiR3JhcGhRTEludCIsIkdyYXBoUUxTdHJpbmciLCJ2ZXJzaW9uR2xvYmFsRmllbGRzIiwiYnVpbGRWZXJzaW9uR2xvYmFsRmllbGRzIiwibGFiZWwiLCJ2ZXJzaW9uVHlwZSIsImZvcm1hdE5hbWUiLCJpZCIsImZpbmRWZXJzaW9uQnlJRFJlc29sdmVyIiwid2hlcmUiLCJidWlsZFdoZXJlSW5wdXRUeXBlIiwibGltaXQiLCJwYWdlIiwic29ydCIsImZpbmRWZXJzaW9uc1Jlc29sdmVyIiwiYnVpbGRQYWdpbmF0ZWRMaXN0VHlwZSIsInJlc3RvcmVWZXJzaW9uUmVzb2x2ZXIiXSwibWFwcGluZ3MiOiJBQUFBLG9DQUFvQzs7OzsrQkF3S3BDOzs7ZUFBQTs7O3lCQXZLMEU7MkJBQ2pEOytFQU1VO3dFQUNQOytFQUNPO21DQUNIOzRFQUNBO21FQUNUOzhCQUNDO21DQUNpQjsyQkFDUDtnRUFDTjt3RUFDUTtxRUFDSDt1RUFDRTsrREFDUjs7Ozs7O0FBRTNCLFNBQVNBLG1CQUFtQkMsT0FBZ0I7SUFDMUNDLE9BQU9DLElBQUksQ0FBQ0YsUUFBUUcsT0FBTyxDQUFDQyxNQUFNLEVBQUVDLE9BQU8sQ0FBQyxDQUFDQztRQUMzQyxNQUFNQyxTQUFnQ1AsUUFBUUcsT0FBTyxDQUFDQyxNQUFNLENBQUNFLEtBQUs7UUFDbEUsTUFBTSxFQUFFRSxNQUFNLEVBQUVDLE9BQU8sRUFBRUMsUUFBUSxFQUFFLEdBQUdIO1FBRXRDLElBQUlFLFlBQVksT0FBTztZQUNyQjtRQUNGO1FBRUEsTUFBTUUsZ0JBQWdCRixTQUFTRyxPQUFPSCxRQUFRRyxJQUFJLEdBQUdDLElBQUFBLG1CQUFRLEVBQUNDLElBQUFBLHFCQUFPLEVBQUNQLE9BQU9ELElBQUksRUFBRTtRQUVuRixNQUFNUywwQkFBMEJDLFFBQVFOLFVBQVVPO1FBRWxELElBQUksQ0FBQ2pCLFFBQVFHLE9BQU8sQ0FBQ00sT0FBTyxFQUFFVCxRQUFRRyxPQUFPLENBQUNNLE9BQU8sR0FBRyxDQUFDO1FBRXpEVCxRQUFRRyxPQUFPLENBQUNNLE9BQU8sQ0FBQ0gsS0FBSyxHQUFHO1lBQzlCWSxtQkFBbUIsSUFBSUMsdUJBQWMsQ0FDbkNDLElBQUFBLCtCQUFzQixFQUFDcEIsU0FBU1csZUFBZUgsUUFBUUc7WUFFekRVLE1BQU1DLElBQUFBLHdCQUFlLEVBQUM7Z0JBQ3BCVixNQUFNRDtnQkFDTkg7Z0JBQ0FlLGVBQWVSO2dCQUNmUyxZQUFZYjtnQkFDWlg7WUFDRjtRQUNGO1FBRUFBLFFBQVF5QixLQUFLLENBQUNqQixNQUFNLENBQUNHLGNBQWMsR0FBRztZQUNwQ2UsTUFBTTtnQkFDSkMsT0FBTztvQkFBRU4sTUFBTU8sdUJBQWM7Z0JBQUM7Z0JBQzlCLEdBQUk1QixRQUFRSSxNQUFNLENBQUN5QixZQUFZLEdBQzNCO29CQUNFQyxnQkFBZ0I7d0JBQUVULE1BQU1yQixRQUFRK0IsS0FBSyxDQUFDQyx1QkFBdUI7b0JBQUM7b0JBQzlEQyxRQUFRO3dCQUFFWixNQUFNckIsUUFBUStCLEtBQUssQ0FBQ0csZUFBZTtvQkFBQztnQkFDaEQsSUFDQSxDQUFDLENBQUM7WUFDUjtZQUNBQyxTQUFTQyxJQUFBQSxnQkFBZSxFQUFDN0I7WUFDekJjLE1BQU1yQixRQUFRRyxPQUFPLENBQUNNLE9BQU8sQ0FBQ0gsS0FBSyxDQUFDZSxJQUFJO1FBQzFDO1FBRUFyQixRQUFRcUMsUUFBUSxDQUFDN0IsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFRyxjQUFjLENBQUMsQ0FBQyxHQUFHO1lBQ2xEZSxNQUFNO2dCQUNKWSxNQUFNO29CQUFFakIsTUFBTXJCLFFBQVFHLE9BQU8sQ0FBQ00sT0FBTyxDQUFDSCxLQUFLLENBQUNZLGlCQUFpQjtnQkFBQztnQkFDOURTLE9BQU87b0JBQUVOLE1BQU1PLHVCQUFjO2dCQUFDO2dCQUM5QixHQUFJNUIsUUFBUUksTUFBTSxDQUFDeUIsWUFBWSxHQUMzQjtvQkFDRUksUUFBUTt3QkFBRVosTUFBTXJCLFFBQVErQixLQUFLLENBQUNHLGVBQWU7b0JBQUM7Z0JBQ2hELElBQ0EsQ0FBQyxDQUFDO1lBQ1I7WUFDQUMsU0FBU0ksSUFBQUEsZUFBYyxFQUFDaEM7WUFDeEJjLE1BQU1yQixRQUFRRyxPQUFPLENBQUNNLE9BQU8sQ0FBQ0gsS0FBSyxDQUFDZSxJQUFJO1FBQzFDO1FBRUFyQixRQUFReUIsS0FBSyxDQUFDakIsTUFBTSxDQUFDLENBQUMsU0FBUyxFQUFFRyxjQUFjLENBQUMsQ0FBQyxHQUFHO1lBQ2xEd0IsU0FBU0ssSUFBQUEsNEJBQWlCLEVBQUNqQztZQUMzQmMsTUFBTW9CLElBQUFBLGtDQUFlLEVBQUM7Z0JBQ3BCQyxRQUFRbkM7Z0JBQ1JvQyxPQUFPO2dCQUNQdEIsTUFBTTtnQkFDTnVCLFlBQVk7WUFDZDtRQUNGO1FBRUEsSUFBSXJDLE9BQU9HLFFBQVEsRUFBRTtZQUNuQixNQUFNbUMsU0FBUzdDLFFBQVE4QyxFQUFFLENBQUNDLGFBQWEsS0FBSyxXQUFXQyxtQkFBVSxHQUFHQyxzQkFBYTtZQUVqRixNQUFNQyxzQkFBK0I7bUJBQ2hDQyxJQUFBQSwyQ0FBd0IsRUFBQzVDO2dCQUM1QjtvQkFDRUssTUFBTTtvQkFDTlMsTUFBTXJCLFFBQVE4QyxFQUFFLENBQUNDLGFBQWE7Z0JBQ2hDO2dCQUNBO29CQUNFbkMsTUFBTTtvQkFDTndDLE9BQU87b0JBQ1AvQixNQUFNO2dCQUNSO2dCQUNBO29CQUNFVCxNQUFNO29CQUNOd0MsT0FBTztvQkFDUC9CLE1BQU07Z0JBQ1I7YUFDRDtZQUVEckIsUUFBUUcsT0FBTyxDQUFDTSxPQUFPLENBQUNILEtBQUssQ0FBQytDLFdBQVcsR0FBRy9CLElBQUFBLHdCQUFlLEVBQUM7Z0JBQzFEVixNQUFNLENBQUMsRUFBRUQsY0FBYyxPQUFPLENBQUM7Z0JBQy9CSCxRQUFRMEM7Z0JBQ1IzQixlQUFlUjtnQkFDZlMsWUFBWSxDQUFDLEVBQUViLGNBQWMsT0FBTyxDQUFDO2dCQUNyQ1g7WUFDRjtZQUVBQSxRQUFReUIsS0FBSyxDQUFDakIsTUFBTSxDQUFDLENBQUMsT0FBTyxFQUFFOEMsSUFBQUEsbUJBQVUsRUFBQzNDLGVBQWUsQ0FBQyxDQUFDLEdBQUc7Z0JBQzVEZSxNQUFNO29CQUNKNkIsSUFBSTt3QkFBRWxDLE1BQU13QjtvQkFBTztvQkFDbkIsR0FBSTdDLFFBQVFJLE1BQU0sQ0FBQ3lCLFlBQVksR0FDM0I7d0JBQ0VDLGdCQUFnQjs0QkFBRVQsTUFBTXJCLFFBQVErQixLQUFLLENBQUNDLHVCQUF1Qjt3QkFBQzt3QkFDOURDLFFBQVE7NEJBQUVaLE1BQU1yQixRQUFRK0IsS0FBSyxDQUFDRyxlQUFlO3dCQUFDO29CQUNoRCxJQUNBLENBQUMsQ0FBQztnQkFDUjtnQkFDQUMsU0FBU3FCLElBQUFBLHdCQUF1QixFQUFDakQ7Z0JBQ2pDYyxNQUFNckIsUUFBUUcsT0FBTyxDQUFDTSxPQUFPLENBQUNILEtBQUssQ0FBQytDLFdBQVc7WUFDakQ7WUFDQXJELFFBQVF5QixLQUFLLENBQUNqQixNQUFNLENBQUMsQ0FBQyxRQUFRLEVBQUVHLGNBQWMsQ0FBQyxDQUFDLEdBQUc7Z0JBQ2pEZSxNQUFNO29CQUNKK0IsT0FBTzt3QkFDTHBDLE1BQU1xQyxJQUFBQSw0QkFBbUIsRUFBQzs0QkFDeEI5QyxNQUFNLENBQUMsUUFBUSxFQUFFRCxjQUFjLENBQUM7NEJBQ2hDSCxRQUFRMEM7NEJBQ1IxQixZQUFZLENBQUMsUUFBUSxFQUFFYixjQUFjLENBQUM7NEJBQ3RDWDt3QkFDRjtvQkFDRjtvQkFDQSxHQUFJQSxRQUFRSSxNQUFNLENBQUN5QixZQUFZLEdBQzNCO3dCQUNFQyxnQkFBZ0I7NEJBQUVULE1BQU1yQixRQUFRK0IsS0FBSyxDQUFDQyx1QkFBdUI7d0JBQUM7d0JBQzlEQyxRQUFROzRCQUFFWixNQUFNckIsUUFBUStCLEtBQUssQ0FBQ0csZUFBZTt3QkFBQztvQkFDaEQsSUFDQSxDQUFDLENBQUM7b0JBQ055QixPQUFPO3dCQUFFdEMsTUFBTTJCLG1CQUFVO29CQUFDO29CQUMxQlksTUFBTTt3QkFBRXZDLE1BQU0yQixtQkFBVTtvQkFBQztvQkFDekJhLE1BQU07d0JBQUV4QyxNQUFNNEIsc0JBQWE7b0JBQUM7Z0JBQzlCO2dCQUNBZCxTQUFTMkIsSUFBQUEscUJBQW9CLEVBQUN2RDtnQkFDOUJjLE1BQU0wQyxJQUFBQSwrQkFBc0IsRUFDMUIsQ0FBQyxRQUFRLEVBQUVULElBQUFBLG1CQUFVLEVBQUMzQyxlQUFlLENBQUMsRUFDdENYLFFBQVFHLE9BQU8sQ0FBQ00sT0FBTyxDQUFDSCxLQUFLLENBQUMrQyxXQUFXO1lBRTdDO1lBQ0FyRCxRQUFRcUMsUUFBUSxDQUFDN0IsTUFBTSxDQUFDLENBQUMsY0FBYyxFQUFFOEMsSUFBQUEsbUJBQVUsRUFBQzNDLGVBQWUsQ0FBQyxDQUFDLEdBQUc7Z0JBQ3RFZSxNQUFNO29CQUNKNkIsSUFBSTt3QkFBRWxDLE1BQU13QjtvQkFBTztnQkFDckI7Z0JBQ0FWLFNBQVM2QixJQUFBQSx1QkFBc0IsRUFBQ3pEO2dCQUNoQ2MsTUFBTXJCLFFBQVFHLE9BQU8sQ0FBQ00sT0FBTyxDQUFDSCxLQUFLLENBQUNlLElBQUk7WUFDMUM7UUFDRjtJQUNGO0FBQ0Y7TUFFQSxXQUFldEIifQ==
186
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9nbG9iYWxzL2dyYXBocWwvaW5pdC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1wYXJhbS1yZWFzc2lnbiAqL1xuaW1wb3J0IHsgR3JhcGhRTEJvb2xlYW4sIEdyYXBoUUxJbnQsIEdyYXBoUUxOb25OdWxsLCBHcmFwaFFMU3RyaW5nIH0gZnJvbSAnZ3JhcGhxbCdcbmltcG9ydCB7IHNpbmd1bGFyIH0gZnJvbSAncGx1cmFsaXplJ1xuXG5pbXBvcnQgdHlwZSB7IEZpZWxkIH0gZnJvbSAnLi4vLi4vZmllbGRzL2NvbmZpZy90eXBlcydcbmltcG9ydCB0eXBlIHsgUGF5bG9hZCB9IGZyb20gJy4uLy4uL3BheWxvYWQnXG5pbXBvcnQgdHlwZSB7IFNhbml0aXplZEdsb2JhbENvbmZpZyB9IGZyb20gJy4uL2NvbmZpZy90eXBlcydcblxuaW1wb3J0IGJ1aWxkTXV0YXRpb25JbnB1dFR5cGUgZnJvbSAnLi4vLi4vZ3JhcGhxbC9zY2hlbWEvYnVpbGRNdXRhdGlvbklucHV0VHlwZSdcbmltcG9ydCBidWlsZE9iamVjdFR5cGUgZnJvbSAnLi4vLi4vZ3JhcGhxbC9zY2hlbWEvYnVpbGRPYmplY3RUeXBlJ1xuaW1wb3J0IGJ1aWxkUGFnaW5hdGVkTGlzdFR5cGUgZnJvbSAnLi4vLi4vZ3JhcGhxbC9zY2hlbWEvYnVpbGRQYWdpbmF0ZWRMaXN0VHlwZSdcbmltcG9ydCB7IGJ1aWxkUG9saWN5VHlwZSB9IGZyb20gJy4uLy4uL2dyYXBocWwvc2NoZW1hL2J1aWxkUG9saWNpZXNUeXBlJ1xuaW1wb3J0IGJ1aWxkV2hlcmVJbnB1dFR5cGUgZnJvbSAnLi4vLi4vZ3JhcGhxbC9zY2hlbWEvYnVpbGRXaGVyZUlucHV0VHlwZSdcbmltcG9ydCBmb3JtYXROYW1lIGZyb20gJy4uLy4uL2dyYXBocWwvdXRpbGl0aWVzL2Zvcm1hdE5hbWUnXG5pbXBvcnQgeyB0b1dvcmRzIH0gZnJvbSAnLi4vLi4vdXRpbGl0aWVzL2Zvcm1hdExhYmVscydcbmltcG9ydCB7IGJ1aWxkVmVyc2lvbkdsb2JhbEZpZWxkcyB9IGZyb20gJy4uLy4uL3ZlcnNpb25zL2J1aWxkR2xvYmFsRmllbGRzJ1xuaW1wb3J0IHsgZG9jQWNjZXNzUmVzb2x2ZXIgfSBmcm9tICcuL3Jlc29sdmVycy9kb2NBY2Nlc3MnXG5pbXBvcnQgZmluZE9uZVJlc29sdmVyIGZyb20gJy4vcmVzb2x2ZXJzL2ZpbmRPbmUnXG5pbXBvcnQgZmluZFZlcnNpb25CeUlEUmVzb2x2ZXIgZnJvbSAnLi9yZXNvbHZlcnMvZmluZFZlcnNpb25CeUlEJ1xuaW1wb3J0IGZpbmRWZXJzaW9uc1Jlc29sdmVyIGZyb20gJy4vcmVzb2x2ZXJzL2ZpbmRWZXJzaW9ucydcbmltcG9ydCByZXN0b3JlVmVyc2lvblJlc29sdmVyIGZyb20gJy4vcmVzb2x2ZXJzL3Jlc3RvcmVWZXJzaW9uJ1xuaW1wb3J0IHVwZGF0ZVJlc29sdmVyIGZyb20gJy4vcmVzb2x2ZXJzL3VwZGF0ZSdcblxuZnVuY3Rpb24gaW5pdEdsb2JhbHNHcmFwaFFMKHBheWxvYWQ6IFBheWxvYWQpOiB2b2lkIHtcbiAgT2JqZWN0LmtleXMocGF5bG9hZC5nbG9iYWxzLmNvbmZpZykuZm9yRWFjaCgoc2x1ZykgPT4ge1xuICAgIGNvbnN0IGdsb2JhbDogU2FuaXRpemVkR2xvYmFsQ29uZmlnID0gcGF5bG9hZC5nbG9iYWxzLmNvbmZpZ1tzbHVnXVxuICAgIGNvbnN0IHsgZmllbGRzLCBncmFwaFFMLCB2ZXJzaW9ucyB9ID0gZ2xvYmFsXG5cbiAgICBpZiAoZ3JhcGhRTCA9PT0gZmFsc2UpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IGZvcm1hdHRlZE5hbWUgPSBncmFwaFFMPy5uYW1lID8gZ3JhcGhRTC5uYW1lIDogc2luZ3VsYXIodG9Xb3JkcyhnbG9iYWwuc2x1ZywgdHJ1ZSkpXG5cbiAgICBjb25zdCBmb3JjZU51bGxhYmxlT2JqZWN0VHlwZSA9IEJvb2xlYW4odmVyc2lvbnM/LmRyYWZ0cylcblxuICAgIGlmICghcGF5bG9hZC5nbG9iYWxzLmdyYXBoUUwpIHBheWxvYWQuZ2xvYmFscy5ncmFwaFFMID0ge31cblxuICAgIGNvbnN0IHVwZGF0ZU11dGF0aW9uSW5wdXRUeXBlID0gYnVpbGRNdXRhdGlvbklucHV0VHlwZShcbiAgICAgIHBheWxvYWQsXG4gICAgICBmb3JtYXR0ZWROYW1lLFxuICAgICAgZmllbGRzLFxuICAgICAgZm9ybWF0dGVkTmFtZSxcbiAgICApXG4gICAgcGF5bG9hZC5nbG9iYWxzLmdyYXBoUUxbc2x1Z10gPSB7XG4gICAgICBtdXRhdGlvbklucHV0VHlwZTogdXBkYXRlTXV0YXRpb25JbnB1dFR5cGVcbiAgICAgICAgPyBuZXcgR3JhcGhRTE5vbk51bGwodXBkYXRlTXV0YXRpb25JbnB1dFR5cGUpXG4gICAgICAgIDogbnVsbCxcbiAgICAgIHR5cGU6IGJ1aWxkT2JqZWN0VHlwZSh7XG4gICAgICAgIG5hbWU6IGZvcm1hdHRlZE5hbWUsXG4gICAgICAgIGZpZWxkcyxcbiAgICAgICAgZm9yY2VOdWxsYWJsZTogZm9yY2VOdWxsYWJsZU9iamVjdFR5cGUsXG4gICAgICAgIHBhcmVudE5hbWU6IGZvcm1hdHRlZE5hbWUsXG4gICAgICAgIHBheWxvYWQsXG4gICAgICB9KSxcbiAgICB9XG5cbiAgICBwYXlsb2FkLlF1ZXJ5LmZpZWxkc1tmb3JtYXR0ZWROYW1lXSA9IHtcbiAgICAgIGFyZ3M6IHtcbiAgICAgICAgZHJhZnQ6IHsgdHlwZTogR3JhcGhRTEJvb2xlYW4gfSxcbiAgICAgICAgLi4uKHBheWxvYWQuY29uZmlnLmxvY2FsaXphdGlvblxuICAgICAgICAgID8ge1xuICAgICAgICAgICAgICBmYWxsYmFja0xvY2FsZTogeyB0eXBlOiBwYXlsb2FkLnR5cGVzLmZhbGxiYWNrTG9jYWxlSW5wdXRUeXBlIH0sXG4gICAgICAgICAgICAgIGxvY2FsZTogeyB0eXBlOiBwYXlsb2FkLnR5cGVzLmxvY2FsZUlucHV0VHlwZSB9LFxuICAgICAgICAgICAgfVxuICAgICAgICAgIDoge30pLFxuICAgICAgfSxcbiAgICAgIHJlc29sdmU6IGZpbmRPbmVSZXNvbHZlcihnbG9iYWwpLFxuICAgICAgdHlwZTogcGF5bG9hZC5nbG9iYWxzLmdyYXBoUUxbc2x1Z10udHlwZSxcbiAgICB9XG5cbiAgICBwYXlsb2FkLk11dGF0aW9uLmZpZWxkc1tgdXBkYXRlJHtmb3JtYXR0ZWROYW1lfWBdID0ge1xuICAgICAgYXJnczoge1xuICAgICAgICAuLi4odXBkYXRlTXV0YXRpb25JbnB1dFR5cGVcbiAgICAgICAgICA/IHsgZGF0YTogeyB0eXBlOiBwYXlsb2FkLmdsb2JhbHMuZ3JhcGhRTFtzbHVnXS5tdXRhdGlvbklucHV0VHlwZSB9IH1cbiAgICAgICAgICA6IHt9KSxcbiAgICAgICAgZHJhZnQ6IHsgdHlwZTogR3JhcGhRTEJvb2xlYW4gfSxcbiAgICAgICAgLi4uKHBheWxvYWQuY29uZmlnLmxvY2FsaXphdGlvblxuICAgICAgICAgID8ge1xuICAgICAgICAgICAgICBsb2NhbGU6IHsgdHlwZTogcGF5bG9hZC50eXBlcy5sb2NhbGVJbnB1dFR5cGUgfSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICA6IHt9KSxcbiAgICAgIH0sXG4gICAgICByZXNvbHZlOiB1cGRhdGVSZXNvbHZlcihnbG9iYWwpLFxuICAgICAgdHlwZTogcGF5bG9hZC5nbG9iYWxzLmdyYXBoUUxbc2x1Z10udHlwZSxcbiAgICB9XG5cbiAgICBwYXlsb2FkLlF1ZXJ5LmZpZWxkc1tgZG9jQWNjZXNzJHtmb3JtYXR0ZWROYW1lfWBdID0ge1xuICAgICAgcmVzb2x2ZTogZG9jQWNjZXNzUmVzb2x2ZXIoZ2xvYmFsKSxcbiAgICAgIHR5cGU6IGJ1aWxkUG9saWN5VHlwZSh7XG4gICAgICAgIGVudGl0eTogZ2xvYmFsLFxuICAgICAgICBzY29wZTogJ2RvY0FjY2VzcycsXG4gICAgICAgIHR5cGU6ICdnbG9iYWwnLFxuICAgICAgICB0eXBlU3VmZml4OiAnRG9jQWNjZXNzJyxcbiAgICAgIH0pLFxuICAgIH1cblxuICAgIGlmIChnbG9iYWwudmVyc2lvbnMpIHtcbiAgICAgIGNvbnN0IGlkVHlwZSA9IHBheWxvYWQuZGIuZGVmYXVsdElEVHlwZSA9PT0gJ251bWJlcicgPyBHcmFwaFFMSW50IDogR3JhcGhRTFN0cmluZ1xuXG4gICAgICBjb25zdCB2ZXJzaW9uR2xvYmFsRmllbGRzOiBGaWVsZFtdID0gW1xuICAgICAgICAuLi5idWlsZFZlcnNpb25HbG9iYWxGaWVsZHMoZ2xvYmFsKSxcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6ICdpZCcsXG4gICAgICAgICAgdHlwZTogcGF5bG9hZC5kYi5kZWZhdWx0SURUeXBlIGFzICd0ZXh0JyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6ICdjcmVhdGVkQXQnLFxuICAgICAgICAgIGxhYmVsOiAnQ3JlYXRlZCBBdCcsXG4gICAgICAgICAgdHlwZTogJ2RhdGUnLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ3VwZGF0ZWRBdCcsXG4gICAgICAgICAgbGFiZWw6ICdVcGRhdGVkIEF0JyxcbiAgICAgICAgICB0eXBlOiAnZGF0ZScsXG4gICAgICAgIH0sXG4gICAgICBdXG5cbiAgICAgIHBheWxvYWQuZ2xvYmFscy5ncmFwaFFMW3NsdWddLnZlcnNpb25UeXBlID0gYnVpbGRPYmplY3RUeXBlKHtcbiAgICAgICAgbmFtZTogYCR7Zm9ybWF0dGVkTmFtZX1WZXJzaW9uYCxcbiAgICAgICAgZmllbGRzOiB2ZXJzaW9uR2xvYmFsRmllbGRzLFxuICAgICAgICBmb3JjZU51bGxhYmxlOiBmb3JjZU51bGxhYmxlT2JqZWN0VHlwZSxcbiAgICAgICAgcGFyZW50TmFtZTogYCR7Zm9ybWF0dGVkTmFtZX1WZXJzaW9uYCxcbiAgICAgICAgcGF5bG9hZCxcbiAgICAgIH0pXG5cbiAgICAgIHBheWxvYWQuUXVlcnkuZmllbGRzW2B2ZXJzaW9uJHtmb3JtYXROYW1lKGZvcm1hdHRlZE5hbWUpfWBdID0ge1xuICAgICAgICBhcmdzOiB7XG4gICAgICAgICAgaWQ6IHsgdHlwZTogaWRUeXBlIH0sXG4gICAgICAgICAgLi4uKHBheWxvYWQuY29uZmlnLmxvY2FsaXphdGlvblxuICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgZmFsbGJhY2tMb2NhbGU6IHsgdHlwZTogcGF5bG9hZC50eXBlcy5mYWxsYmFja0xvY2FsZUlucHV0VHlwZSB9LFxuICAgICAgICAgICAgICAgIGxvY2FsZTogeyB0eXBlOiBwYXlsb2FkLnR5cGVzLmxvY2FsZUlucHV0VHlwZSB9LFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA6IHt9KSxcbiAgICAgICAgfSxcbiAgICAgICAgcmVzb2x2ZTogZmluZFZlcnNpb25CeUlEUmVzb2x2ZXIoZ2xvYmFsKSxcbiAgICAgICAgdHlwZTogcGF5bG9hZC5nbG9iYWxzLmdyYXBoUUxbc2x1Z10udmVyc2lvblR5cGUsXG4gICAgICB9XG4gICAgICBwYXlsb2FkLlF1ZXJ5LmZpZWxkc1tgdmVyc2lvbnMke2Zvcm1hdHRlZE5hbWV9YF0gPSB7XG4gICAgICAgIGFyZ3M6IHtcbiAgICAgICAgICB3aGVyZToge1xuICAgICAgICAgICAgdHlwZTogYnVpbGRXaGVyZUlucHV0VHlwZSh7XG4gICAgICAgICAgICAgIG5hbWU6IGB2ZXJzaW9ucyR7Zm9ybWF0dGVkTmFtZX1gLFxuICAgICAgICAgICAgICBmaWVsZHM6IHZlcnNpb25HbG9iYWxGaWVsZHMsXG4gICAgICAgICAgICAgIHBhcmVudE5hbWU6IGB2ZXJzaW9ucyR7Zm9ybWF0dGVkTmFtZX1gLFxuICAgICAgICAgICAgICBwYXlsb2FkLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgfSxcbiAgICAgICAgICAuLi4ocGF5bG9hZC5jb25maWcubG9jYWxpemF0aW9uXG4gICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICBmYWxsYmFja0xvY2FsZTogeyB0eXBlOiBwYXlsb2FkLnR5cGVzLmZhbGxiYWNrTG9jYWxlSW5wdXRUeXBlIH0sXG4gICAgICAgICAgICAgICAgbG9jYWxlOiB7IHR5cGU6IHBheWxvYWQudHlwZXMubG9jYWxlSW5wdXRUeXBlIH0sXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDoge30pLFxuICAgICAgICAgIGxpbWl0OiB7IHR5cGU6IEdyYXBoUUxJbnQgfSxcbiAgICAgICAgICBwYWdlOiB7IHR5cGU6IEdyYXBoUUxJbnQgfSxcbiAgICAgICAgICBzb3J0OiB7IHR5cGU6IEdyYXBoUUxTdHJpbmcgfSxcbiAgICAgICAgfSxcbiAgICAgICAgcmVzb2x2ZTogZmluZFZlcnNpb25zUmVzb2x2ZXIoZ2xvYmFsKSxcbiAgICAgICAgdHlwZTogYnVpbGRQYWdpbmF0ZWRMaXN0VHlwZShcbiAgICAgICAgICBgdmVyc2lvbnMke2Zvcm1hdE5hbWUoZm9ybWF0dGVkTmFtZSl9YCxcbiAgICAgICAgICBwYXlsb2FkLmdsb2JhbHMuZ3JhcGhRTFtzbHVnXS52ZXJzaW9uVHlwZSxcbiAgICAgICAgKSxcbiAgICAgIH1cbiAgICAgIHBheWxvYWQuTXV0YXRpb24uZmllbGRzW2ByZXN0b3JlVmVyc2lvbiR7Zm9ybWF0TmFtZShmb3JtYXR0ZWROYW1lKX1gXSA9IHtcbiAgICAgICAgYXJnczoge1xuICAgICAgICAgIGlkOiB7IHR5cGU6IGlkVHlwZSB9LFxuICAgICAgICB9LFxuICAgICAgICByZXNvbHZlOiByZXN0b3JlVmVyc2lvblJlc29sdmVyKGdsb2JhbCksXG4gICAgICAgIHR5cGU6IHBheWxvYWQuZ2xvYmFscy5ncmFwaFFMW3NsdWddLnR5cGUsXG4gICAgICB9XG4gICAgfVxuICB9KVxufVxuXG5leHBvcnQgZGVmYXVsdCBpbml0R2xvYmFsc0dyYXBoUUxcbiJdLCJuYW1lcyI6WyJpbml0R2xvYmFsc0dyYXBoUUwiLCJwYXlsb2FkIiwiT2JqZWN0Iiwia2V5cyIsImdsb2JhbHMiLCJjb25maWciLCJmb3JFYWNoIiwic2x1ZyIsImdsb2JhbCIsImZpZWxkcyIsImdyYXBoUUwiLCJ2ZXJzaW9ucyIsImZvcm1hdHRlZE5hbWUiLCJuYW1lIiwic2luZ3VsYXIiLCJ0b1dvcmRzIiwiZm9yY2VOdWxsYWJsZU9iamVjdFR5cGUiLCJCb29sZWFuIiwiZHJhZnRzIiwidXBkYXRlTXV0YXRpb25JbnB1dFR5cGUiLCJidWlsZE11dGF0aW9uSW5wdXRUeXBlIiwibXV0YXRpb25JbnB1dFR5cGUiLCJHcmFwaFFMTm9uTnVsbCIsInR5cGUiLCJidWlsZE9iamVjdFR5cGUiLCJmb3JjZU51bGxhYmxlIiwicGFyZW50TmFtZSIsIlF1ZXJ5IiwiYXJncyIsImRyYWZ0IiwiR3JhcGhRTEJvb2xlYW4iLCJsb2NhbGl6YXRpb24iLCJmYWxsYmFja0xvY2FsZSIsInR5cGVzIiwiZmFsbGJhY2tMb2NhbGVJbnB1dFR5cGUiLCJsb2NhbGUiLCJsb2NhbGVJbnB1dFR5cGUiLCJyZXNvbHZlIiwiZmluZE9uZVJlc29sdmVyIiwiTXV0YXRpb24iLCJkYXRhIiwidXBkYXRlUmVzb2x2ZXIiLCJkb2NBY2Nlc3NSZXNvbHZlciIsImJ1aWxkUG9saWN5VHlwZSIsImVudGl0eSIsInNjb3BlIiwidHlwZVN1ZmZpeCIsImlkVHlwZSIsImRiIiwiZGVmYXVsdElEVHlwZSIsIkdyYXBoUUxJbnQiLCJHcmFwaFFMU3RyaW5nIiwidmVyc2lvbkdsb2JhbEZpZWxkcyIsImJ1aWxkVmVyc2lvbkdsb2JhbEZpZWxkcyIsImxhYmVsIiwidmVyc2lvblR5cGUiLCJmb3JtYXROYW1lIiwiaWQiLCJmaW5kVmVyc2lvbkJ5SURSZXNvbHZlciIsIndoZXJlIiwiYnVpbGRXaGVyZUlucHV0VHlwZSIsImxpbWl0IiwicGFnZSIsInNvcnQiLCJmaW5kVmVyc2lvbnNSZXNvbHZlciIsImJ1aWxkUGFnaW5hdGVkTGlzdFR5cGUiLCJyZXN0b3JlVmVyc2lvblJlc29sdmVyIl0sIm1hcHBpbmdzIjoiQUFBQSxvQ0FBb0M7Ozs7K0JBZ0xwQzs7O2VBQUE7Ozt5QkEvSzBFOzJCQUNqRDsrRUFNVTt3RUFDUDsrRUFDTzttQ0FDSDs0RUFDQTttRUFDVDs4QkFDQzttQ0FDaUI7MkJBQ1A7Z0VBQ047d0VBQ1E7cUVB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
@@ -1,8 +1,9 @@
1
- import type { GeneratedTypes } from '../../..';
1
+ import type { GeneratedTypes, RequestContext } from '../../..';
2
2
  import type { PayloadRequest } from '../../../express/types';
3
3
  import type { Payload } from '../../../payload';
4
4
  import type { Document } from '../../../types';
5
5
  export type Options<T extends keyof GeneratedTypes['globals']> = {
6
+ context?: RequestContext;
6
7
  depth?: number;
7
8
  draft?: boolean;
8
9
  fallbackLocale?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"findOne.d.ts","sourceRoot":"","sources":["../../../../src/globals/operations/local/findOne.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAC9C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAC5D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAC/C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAQ9C,MAAM,MAAM,OAAO,CAAC,CAAC,SAAS,MAAM,cAAc,CAAC,SAAS,CAAC,IAAI;IAC/D,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,GAAG,CAAC,EAAE,cAAc,CAAA;IACpB,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,IAAI,EAAE,CAAC,CAAA;IACP,IAAI,CAAC,EAAE,QAAQ,CAAA;CAChB,CAAA;AAED,wBAA8B,YAAY,CAAC,CAAC,SAAS,MAAM,cAAc,CAAC,SAAS,CAAC,EAClF,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAClB,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CA6CvC"}
1
+ {"version":3,"file":"findOne.d.ts","sourceRoot":"","sources":["../../../../src/globals/operations/local/findOne.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAC5D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAC/C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAQ9C,MAAM,MAAM,OAAO,CAAC,CAAC,SAAS,MAAM,cAAc,CAAC,SAAS,CAAC,IAAI;IAC/D,OAAO,CAAC,EAAE,cAAc,CAAA;IACxB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,GAAG,CAAC,EAAE,cAAc,CAAA;IACpB,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,IAAI,EAAE,CAAC,CAAA;IACP,IAAI,CAAC,EAAE,QAAQ,CAAA;CAChB,CAAA;AAED,wBAA8B,YAAY,CAAC,CAAC,SAAS,MAAM,cAAc,CAAC,SAAS,CAAC,EAClF,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAClB,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CA8CvC"}
@@ -19,7 +19,7 @@ function _interop_require_default(obj) {
19
19
  };
20
20
  }
21
21
  async function findOneLocal(payload, options) {
22
- const { depth, draft = false, fallbackLocale = null, locale = payload.config.localization ? payload.config.localization?.defaultLocale : null, overrideAccess = true, showHiddenFields, slug: globalSlug, user } = options;
22
+ const { context, depth, draft = false, fallbackLocale = null, locale = payload.config.localization ? payload.config.localization?.defaultLocale : null, overrideAccess = true, showHiddenFields, slug: globalSlug, user } = options;
23
23
  const globalConfig = payload.globals.config.find((config)=>config.slug === globalSlug);
24
24
  const defaultLocale = payload?.config?.localization ? payload?.config?.localization?.defaultLocale : null;
25
25
  if (!globalConfig) {
@@ -35,7 +35,7 @@ async function findOneLocal(payload, options) {
35
35
  t: i18n.t,
36
36
  user
37
37
  };
38
- (0, _setRequestContext.setRequestContext)(req);
38
+ (0, _setRequestContext.setRequestContext)(req, context);
39
39
  if (!req.payloadDataLoader) req.payloadDataLoader = (0, _dataloader.getDataLoader)(req);
40
40
  return (0, _findOne.default)({
41
41
  depth,
@@ -48,4 +48,4 @@ async function findOneLocal(payload, options) {
48
48
  });
49
49
  }
50
50
 
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9nbG9iYWxzL29wZXJhdGlvbnMvbG9jYWwvZmluZE9uZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEdlbmVyYXRlZFR5cGVzIH0gZnJvbSAnLi4vLi4vLi4nXG5pbXBvcnQgdHlwZSB7IFBheWxvYWRSZXF1ZXN0IH0gZnJvbSAnLi4vLi4vLi4vZXhwcmVzcy90eXBlcydcbmltcG9ydCB0eXBlIHsgUGF5bG9hZCB9IGZyb20gJy4uLy4uLy4uL3BheWxvYWQnXG5pbXBvcnQgdHlwZSB7IERvY3VtZW50IH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMnXG5cbmltcG9ydCB7IGdldERhdGFMb2FkZXIgfSBmcm9tICcuLi8uLi8uLi9jb2xsZWN0aW9ucy9kYXRhbG9hZGVyJ1xuaW1wb3J0IHsgQVBJRXJyb3IgfSBmcm9tICcuLi8uLi8uLi9lcnJvcnMnXG5pbXBvcnQgeyBzZXRSZXF1ZXN0Q29udGV4dCB9IGZyb20gJy4uLy4uLy4uL2V4cHJlc3Mvc2V0UmVxdWVzdENvbnRleHQnXG5pbXBvcnQgeyBpMThuSW5pdCB9IGZyb20gJy4uLy4uLy4uL3RyYW5zbGF0aW9ucy9pbml0J1xuaW1wb3J0IGZpbmRPbmUgZnJvbSAnLi4vZmluZE9uZSdcblxuZXhwb3J0IHR5cGUgT3B0aW9uczxUIGV4dGVuZHMga2V5b2YgR2VuZXJhdGVkVHlwZXNbJ2dsb2JhbHMnXT4gPSB7XG4gIGRlcHRoPzogbnVtYmVyXG4gIGRyYWZ0PzogYm9vbGVhblxuICBmYWxsYmFja0xvY2FsZT86IHN0cmluZ1xuICBsb2NhbGU/OiBzdHJpbmdcbiAgb3ZlcnJpZGVBY2Nlc3M/OiBib29sZWFuXG4gIHJlcT86IFBheWxvYWRSZXF1ZXN0XG4gIHNob3dIaWRkZW5GaWVsZHM/OiBib29sZWFuXG4gIHNsdWc6IFRcbiAgdXNlcj86IERvY3VtZW50XG59XG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIGZpbmRPbmVMb2NhbDxUIGV4dGVuZHMga2V5b2YgR2VuZXJhdGVkVHlwZXNbJ2dsb2JhbHMnXT4oXG4gIHBheWxvYWQ6IFBheWxvYWQsXG4gIG9wdGlvbnM6IE9wdGlvbnM8VD4sXG4pOiBQcm9taXNlPEdlbmVyYXRlZFR5cGVzWydnbG9iYWxzJ11bVF0+IHtcbiAgY29uc3Qge1xuICAgIGRlcHRoLFxuICAgIGRyYWZ0ID0gZmFsc2UsXG4gICAgZmFsbGJhY2tMb2NhbGUgPSBudWxsLFxuICAgIGxvY2FsZSA9IHBheWxvYWQuY29uZmlnLmxvY2FsaXphdGlvbiA/IHBheWxvYWQuY29uZmlnLmxvY2FsaXphdGlvbj8uZGVmYXVsdExvY2FsZSA6IG51bGwsXG4gICAgb3ZlcnJpZGVBY2Nlc3MgPSB0cnVlLFxuICAgIHNob3dIaWRkZW5GaWVsZHMsXG4gICAgc2x1ZzogZ2xvYmFsU2x1ZyxcbiAgICB1c2VyLFxuICB9ID0gb3B0aW9uc1xuXG4gIGNvbnN0IGdsb2JhbENvbmZpZyA9IHBheWxvYWQuZ2xvYmFscy5jb25maWcuZmluZCgoY29uZmlnKSA9PiBjb25maWcuc2x1ZyA9PT0gZ2xvYmFsU2x1ZylcbiAgY29uc3QgZGVmYXVsdExvY2FsZSA9IHBheWxvYWQ/LmNvbmZpZz8ubG9jYWxpemF0aW9uXG4gICAgPyBwYXlsb2FkPy5jb25maWc/LmxvY2FsaXphdGlvbj8uZGVmYXVsdExvY2FsZVxuICAgIDogbnVsbFxuXG4gIGlmICghZ2xvYmFsQ29uZmlnKSB7XG4gICAgdGhyb3cgbmV3IEFQSUVycm9yKGBUaGUgZ2xvYmFsIHdpdGggc2x1ZyAke1N0cmluZyhnbG9iYWxTbHVnKX0gY2FuJ3QgYmUgZm91bmQuYClcbiAgfVxuXG4gIGNvbnN0IGkxOG4gPSBpMThuSW5pdChwYXlsb2FkLmNvbmZpZy5pMThuKVxuXG4gIGNvbnN0IHJlcSA9IHtcbiAgICBmYWxsYmFja0xvY2FsZTogZmFsbGJhY2tMb2NhbGUgPz8gb3B0aW9ucy5yZXE/LmZhbGxiYWNrTG9jYWxlID8/IGRlZmF1bHRMb2NhbGUsXG4gICAgaTE4bixcbiAgICBsb2NhbGU6IGxvY2FsZSA/PyBvcHRpb25zLnJlcT8ubG9jYWxlID8/IGRlZmF1bHRMb2NhbGUsXG4gICAgcGF5bG9hZCxcbiAgICBwYXlsb2FkQVBJOiAnbG9jYWwnLFxuICAgIHQ6IGkxOG4udCxcbiAgICB1c2VyLFxuICB9IGFzIFBheWxvYWRSZXF1ZXN0XG4gIHNldFJlcXVlc3RDb250ZXh0KHJlcSlcblxuICBpZiAoIXJlcS5wYXlsb2FkRGF0YUxvYWRlcikgcmVxLnBheWxvYWREYXRhTG9hZGVyID0gZ2V0RGF0YUxvYWRlcihyZXEpXG5cbiAgcmV0dXJuIGZpbmRPbmUoe1xuICAgIGRlcHRoLFxuICAgIGRyYWZ0LFxuICAgIGdsb2JhbENvbmZpZyxcbiAgICBvdmVycmlkZUFjY2VzcyxcbiAgICByZXEsXG4gICAgc2hvd0hpZGRlbkZpZWxkcyxcbiAgICBzbHVnOiBnbG9iYWxTbHVnIGFzIHN0cmluZyxcbiAgfSlcbn1cbiJdLCJuYW1lcyI6WyJmaW5kT25lTG9jYWwiLCJwYXlsb2FkIiwib3B0aW9ucyIsImRlcHRoIiwiZHJhZnQiLCJmYWxsYmFja0xvY2FsZSIsImxvY2FsZSIsImNvbmZpZyIsImxvY2FsaXphdGlvbiIsImRlZmF1bHRMb2NhbGUiLCJvdmVycmlkZUFjY2VzcyIsInNob3dIaWRkZW5GaWVsZHMiLCJzbHVnIiwiZ2xvYmFsU2x1ZyIsInVzZXIiLCJnbG9iYWxDb25maWciLCJnbG9iYWxzIiwiZmluZCIsIkFQSUVycm9yIiwiU3RyaW5nIiwiaTE4biIsImkxOG5Jbml0IiwicmVxIiwicGF5bG9hZEFQSSIsInQiLCJzZXRSZXF1ZXN0Q29udGV4dCIsInBheWxvYWREYXRhTG9hZGVyIiwiZ2V0RGF0YUxvYWRlciIsImZpbmRPbmUiXSwibWFwcGluZ3MiOiI7Ozs7K0JBdUJBOzs7ZUFBOEJBOzs7NEJBbEJBO3dCQUNMO21DQUNTO3NCQUNUO2dFQUNMOzs7Ozs7QUFjTCxlQUFlQSxhQUM1QkMsT0FBZ0IsRUFDaEJDLE9BQW1CO0lBRW5CLE1BQU0sRUFDSkMsS0FBSyxFQUNMQyxRQUFRLEtBQUssRUFDYkMsaUJBQWlCLElBQUksRUFDckJDLFNBQVNMLFFBQVFNLE1BQU0sQ0FBQ0MsWUFBWSxHQUFHUCxRQUFRTSxNQUFNLENBQUNDLFlBQVksRUFBRUMsZ0JBQWdCLElBQUksRUFDeEZDLGlCQUFpQixJQUFJLEVBQ3JCQyxnQkFBZ0IsRUFDaEJDLE1BQU1DLFVBQVUsRUFDaEJDLElBQUksRUFDTCxHQUFHWjtJQUVKLE1BQU1hLGVBQWVkLFFBQVFlLE9BQU8sQ0FBQ1QsTUFBTSxDQUFDVSxJQUFJLENBQUMsQ0FBQ1YsU0FBV0EsT0FBT0ssSUFBSSxLQUFLQztJQUM3RSxNQUFNSixnQkFBZ0JSLFNBQVNNLFFBQVFDLGVBQ25DUCxTQUFTTSxRQUFRQyxjQUFjQyxnQkFDL0I7SUFFSixJQUFJLENBQUNNLGNBQWM7UUFDakIsTUFBTSxJQUFJRyxnQkFBUSxDQUFDLENBQUMscUJBQXFCLEVBQUVDLE9BQU9OLFlBQVksZ0JBQWdCLENBQUM7SUFDakY7SUFFQSxNQUFNTyxPQUFPQyxJQUFBQSxjQUFRLEVBQUNwQixRQUFRTSxNQUFNLENBQUNhLElBQUk7SUFFekMsTUFBTUUsTUFBTTtRQUNWakIsZ0JBQWdCQSxrQkFBa0JILFFBQVFvQixHQUFHLEVBQUVqQixrQkFBa0JJO1FBQ2pFVztRQUNBZCxRQUFRQSxVQUFVSixRQUFRb0IsR0FBRyxFQUFFaEIsVUFBVUc7UUFDekNSO1FBQ0FzQixZQUFZO1FBQ1pDLEdBQUdKLEtBQUtJLENBQUM7UUFDVFY7SUFDRjtJQUNBVyxJQUFBQSxvQ0FBaUIsRUFBQ0g7SUFFbEIsSUFBSSxDQUFDQSxJQUFJSSxpQkFBaUIsRUFBRUosSUFBSUksaUJBQWlCLEdBQUdDLElBQUFBLHlCQUFhLEVBQUNMO0lBRWxFLE9BQU9NLElBQUFBLGdCQUFPLEVBQUM7UUFDYnpCO1FBQ0FDO1FBQ0FXO1FBQ0FMO1FBQ0FZO1FBQ0FYO1FBQ0FDLE1BQU1DO0lBQ1I7QUFDRiJ9
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9nbG9iYWxzL29wZXJhdGlvbnMvbG9jYWwvZmluZE9uZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEdlbmVyYXRlZFR5cGVzLCBSZXF1ZXN0Q29udGV4dCB9IGZyb20gJy4uLy4uLy4uJ1xuaW1wb3J0IHR5cGUgeyBQYXlsb2FkUmVxdWVzdCB9IGZyb20gJy4uLy4uLy4uL2V4cHJlc3MvdHlwZXMnXG5pbXBvcnQgdHlwZSB7IFBheWxvYWQgfSBmcm9tICcuLi8uLi8uLi9wYXlsb2FkJ1xuaW1wb3J0IHR5cGUgeyBEb2N1bWVudCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzJ1xuXG5pbXBvcnQgeyBnZXREYXRhTG9hZGVyIH0gZnJvbSAnLi4vLi4vLi4vY29sbGVjdGlvbnMvZGF0YWxvYWRlcidcbmltcG9ydCB7IEFQSUVycm9yIH0gZnJvbSAnLi4vLi4vLi4vZXJyb3JzJ1xuaW1wb3J0IHsgc2V0UmVxdWVzdENvbnRleHQgfSBmcm9tICcuLi8uLi8uLi9leHByZXNzL3NldFJlcXVlc3RDb250ZXh0J1xuaW1wb3J0IHsgaTE4bkluaXQgfSBmcm9tICcuLi8uLi8uLi90cmFuc2xhdGlvbnMvaW5pdCdcbmltcG9ydCBmaW5kT25lIGZyb20gJy4uL2ZpbmRPbmUnXG5cbmV4cG9ydCB0eXBlIE9wdGlvbnM8VCBleHRlbmRzIGtleW9mIEdlbmVyYXRlZFR5cGVzWydnbG9iYWxzJ10+ID0ge1xuICBjb250ZXh0PzogUmVxdWVzdENvbnRleHRcbiAgZGVwdGg/OiBudW1iZXJcbiAgZHJhZnQ/OiBib29sZWFuXG4gIGZhbGxiYWNrTG9jYWxlPzogc3RyaW5nXG4gIGxvY2FsZT86IHN0cmluZ1xuICBvdmVycmlkZUFjY2Vzcz86IGJvb2xlYW5cbiAgcmVxPzogUGF5bG9hZFJlcXVlc3RcbiAgc2hvd0hpZGRlbkZpZWxkcz86IGJvb2xlYW5cbiAgc2x1ZzogVFxuICB1c2VyPzogRG9jdW1lbnRcbn1cblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gZmluZE9uZUxvY2FsPFQgZXh0ZW5kcyBrZXlvZiBHZW5lcmF0ZWRUeXBlc1snZ2xvYmFscyddPihcbiAgcGF5bG9hZDogUGF5bG9hZCxcbiAgb3B0aW9uczogT3B0aW9uczxUPixcbik6IFByb21pc2U8R2VuZXJhdGVkVHlwZXNbJ2dsb2JhbHMnXVtUXT4ge1xuICBjb25zdCB7XG4gICAgY29udGV4dCxcbiAgICBkZXB0aCxcbiAgICBkcmFmdCA9IGZhbHNlLFxuICAgIGZhbGxiYWNrTG9jYWxlID0gbnVsbCxcbiAgICBsb2NhbGUgPSBwYXlsb2FkLmNvbmZpZy5sb2NhbGl6YXRpb24gPyBwYXlsb2FkLmNvbmZpZy5sb2NhbGl6YXRpb24/LmRlZmF1bHRMb2NhbGUgOiBudWxsLFxuICAgIG92ZXJyaWRlQWNjZXNzID0gdHJ1ZSxcbiAgICBzaG93SGlkZGVuRmllbGRzLFxuICAgIHNsdWc6IGdsb2JhbFNsdWcsXG4gICAgdXNlcixcbiAgfSA9IG9wdGlvbnNcblxuICBjb25zdCBnbG9iYWxDb25maWcgPSBwYXlsb2FkLmdsb2JhbHMuY29uZmlnLmZpbmQoKGNvbmZpZykgPT4gY29uZmlnLnNsdWcgPT09IGdsb2JhbFNsdWcpXG4gIGNvbnN0IGRlZmF1bHRMb2NhbGUgPSBwYXlsb2FkPy5jb25maWc/LmxvY2FsaXphdGlvblxuICAgID8gcGF5bG9hZD8uY29uZmlnPy5sb2NhbGl6YXRpb24/LmRlZmF1bHRMb2NhbGVcbiAgICA6IG51bGxcblxuICBpZiAoIWdsb2JhbENvbmZpZykge1xuICAgIHRocm93IG5ldyBBUElFcnJvcihgVGhlIGdsb2JhbCB3aXRoIHNsdWcgJHtTdHJpbmcoZ2xvYmFsU2x1Zyl9IGNhbid0IGJlIGZvdW5kLmApXG4gIH1cblxuICBjb25zdCBpMThuID0gaTE4bkluaXQocGF5bG9hZC5jb25maWcuaTE4bilcblxuICBjb25zdCByZXEgPSB7XG4gICAgZmFsbGJhY2tMb2NhbGU6IGZhbGxiYWNrTG9jYWxlID8/IG9wdGlvbnMucmVxPy5mYWxsYmFja0xvY2FsZSA/PyBkZWZhdWx0TG9jYWxlLFxuICAgIGkxOG4sXG4gICAgbG9jYWxlOiBsb2NhbGUgPz8gb3B0aW9ucy5yZXE/LmxvY2FsZSA/PyBkZWZhdWx0TG9jYWxlLFxuICAgIHBheWxvYWQsXG4gICAgcGF5bG9hZEFQSTogJ2xvY2FsJyxcbiAgICB0OiBpMThuLnQsXG4gICAgdXNlcixcbiAgfSBhcyBQYXlsb2FkUmVxdWVzdFxuICBzZXRSZXF1ZXN0Q29udGV4dChyZXEsIGNvbnRleHQpXG5cbiAgaWYgKCFyZXEucGF5bG9hZERhdGFMb2FkZXIpIHJlcS5wYXlsb2FkRGF0YUxvYWRlciA9IGdldERhdGFMb2FkZXIocmVxKVxuXG4gIHJldHVybiBmaW5kT25lKHtcbiAgICBkZXB0aCxcbiAgICBkcmFmdCxcbiAgICBnbG9iYWxDb25maWcsXG4gICAgb3ZlcnJpZGVBY2Nlc3MsXG4gICAgcmVxLFxuICAgIHNob3dIaWRkZW5GaWVsZHMsXG4gICAgc2x1ZzogZ2xvYmFsU2x1ZyBhcyBzdHJpbmcsXG4gIH0pXG59XG4iXSwibmFtZXMiOlsiZmluZE9uZUxvY2FsIiwicGF5bG9hZCIsIm9wdGlvbnMiLCJjb250ZXh0IiwiZGVwdGgiLCJkcmFmdCIsImZhbGxiYWNrTG9jYWxlIiwibG9jYWxlIiwiY29uZmlnIiwibG9jYWxpemF0aW9uIiwiZGVmYXVsdExvY2FsZSIsIm92ZXJyaWRlQWNjZXNzIiwic2hvd0hpZGRlbkZpZWxkcyIsInNsdWciLCJnbG9iYWxTbHVnIiwidXNlciIsImdsb2JhbENvbmZpZyIsImdsb2JhbHMiLCJmaW5kIiwiQVBJRXJyb3IiLCJTdHJpbmciLCJpMThuIiwiaTE4bkluaXQiLCJyZXEiLCJwYXlsb2FkQVBJIiwidCIsInNldFJlcXVlc3RDb250ZXh0IiwicGF5bG9hZERhdGFMb2FkZXIiLCJnZXREYXRhTG9hZGVyIiwiZmluZE9uZSJdLCJtYXBwaW5ncyI6Ijs7OzsrQkF3QkE7OztlQUE4QkE7Ozs0QkFuQkE7d0JBQ0w7bUNBQ1M7c0JBQ1Q7Z0VBQ0w7Ozs7OztBQWVMLGVBQWVBLGFBQzVCQyxPQUFnQixFQUNoQkMsT0FBbUI7SUFFbkIsTUFBTSxFQUNKQyxPQUFPLEVBQ1BDLEtBQUssRUFDTEMsUUFBUSxLQUFLLEVBQ2JDLGlCQUFpQixJQUFJLEVBQ3JCQyxTQUFTTixRQUFRTyxNQUFNLENBQUNDLFlBQVksR0FBR1IsUUFBUU8sTUFBTSxDQUFDQyxZQUFZLEVBQUVDLGdCQUFnQixJQUFJLEVBQ3hGQyxpQkFBaUIsSUFBSSxFQUNyQkMsZ0JBQWdCLEVBQ2hCQyxNQUFNQyxVQUFVLEVBQ2hCQyxJQUFJLEVBQ0wsR0FBR2I7SUFFSixNQUFNYyxlQUFlZixRQUFRZ0IsT0FBTyxDQUFDVCxNQUFNLENBQUNVLElBQUksQ0FBQyxDQUFDVixTQUFXQSxPQUFPSyxJQUFJLEtBQUtDO0lBQzdFLE1BQU1KLGdCQUFnQlQsU0FBU08sUUFBUUMsZUFDbkNSLFNBQVNPLFFBQVFDLGNBQWNDLGdCQUMvQjtJQUVKLElBQUksQ0FBQ00sY0FBYztRQUNqQixNQUFNLElBQUlHLGdCQUFRLENBQUMsQ0FBQyxxQkFBcUIsRUFBRUMsT0FBT04sWUFBWSxnQkFBZ0IsQ0FBQztJQUNqRjtJQUVBLE1BQU1PLE9BQU9DLElBQUFBLGNBQVEsRUFBQ3JCLFFBQVFPLE1BQU0sQ0FBQ2EsSUFBSTtJQUV6QyxNQUFNRSxNQUFNO1FBQ1ZqQixnQkFBZ0JBLGtCQUFrQkosUUFBUXFCLEdBQUcsRUFBRWpCLGtCQUFrQkk7UUFDakVXO1FBQ0FkLFFBQVFBLFVBQVVMLFFBQVFxQixHQUFHLEVBQUVoQixVQUFVRztRQUN6Q1Q7UUFDQXVCLFlBQVk7UUFDWkMsR0FBR0osS0FBS0ksQ0FBQztRQUNUVjtJQUNGO0lBQ0FXLElBQUFBLG9DQUFpQixFQUFDSCxLQUFLcEI7SUFFdkIsSUFBSSxDQUFDb0IsSUFBSUksaUJBQWlCLEVBQUVKLElBQUlJLGlCQUFpQixHQUFHQyxJQUFBQSx5QkFBYSxFQUFDTDtJQUVsRSxPQUFPTSxJQUFBQSxnQkFBTyxFQUFDO1FBQ2J6QjtRQUNBQztRQUNBVztRQUNBTDtRQUNBWTtRQUNBWDtRQUNBQyxNQUFNQztJQUNSO0FBQ0YifQ==
@@ -1,9 +1,10 @@
1
- import type { GeneratedTypes } from '../../../';
1
+ import type { GeneratedTypes, RequestContext } from '../../../';
2
2
  import type { PayloadRequest } from '../../../express/types';
3
3
  import type { Payload } from '../../../payload';
4
4
  import type { Document } from '../../../types';
5
5
  import type { TypeWithVersion } from '../../../versions/types';
6
6
  export type Options<T extends keyof GeneratedTypes['globals']> = {
7
+ context?: RequestContext;
7
8
  depth?: number;
8
9
  disableErrors?: boolean;
9
10
  fallbackLocale?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"findVersionByID.d.ts","sourceRoot":"","sources":["../../../../src/globals/operations/local/findVersionByID.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAC/C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAC5D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAC/C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAC9C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAQ9D,MAAM,MAAM,OAAO,CAAC,CAAC,SAAS,MAAM,cAAc,CAAC,SAAS,CAAC,IAAI;IAC/D,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,GAAG,CAAC,EAAE,cAAc,CAAA;IACpB,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,IAAI,EAAE,CAAC,CAAA;IACP,IAAI,CAAC,EAAE,QAAQ,CAAA;CAChB,CAAA;AAED,wBAA8B,oBAAoB,CAAC,CAAC,SAAS,MAAM,cAAc,CAAC,SAAS,CAAC,EAC1F,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAClB,OAAO,CAAC,eAAe,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CA4CxD"}
1
+ {"version":3,"file":"findVersionByID.d.ts","sourceRoot":"","sources":["../../../../src/globals/operations/local/findVersionByID.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAC5D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAC/C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAC9C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAQ9D,MAAM,MAAM,OAAO,CAAC,CAAC,SAAS,MAAM,cAAc,CAAC,SAAS,CAAC,IAAI;IAC/D,OAAO,CAAC,EAAE,cAAc,CAAA;IACxB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,GAAG,CAAC,EAAE,cAAc,CAAA;IACpB,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,IAAI,EAAE,CAAC,CAAA;IACP,IAAI,CAAC,EAAE,QAAQ,CAAA;CAChB,CAAA;AAED,wBAA8B,oBAAoB,CAAC,CAAC,SAAS,MAAM,cAAc,CAAC,SAAS,CAAC,EAC1F,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAClB,OAAO,CAAC,eAAe,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CA6CxD"}