payload 2.0.11 → 2.0.13

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 (220) hide show
  1. package/.eslintrc.js +58 -0
  2. package/dist/admin/components/elements/ArrayAction/index.scss +0 -2
  3. package/dist/admin/components/elements/DocumentDrawer/DrawerContent.d.ts.map +1 -1
  4. package/dist/admin/components/elements/DocumentDrawer/DrawerContent.js +3 -1
  5. package/dist/admin/components/elements/DocumentFields/index.d.ts +16 -0
  6. package/dist/admin/components/elements/DocumentFields/index.d.ts.map +1 -0
  7. package/dist/admin/components/elements/DocumentFields/index.js +69 -0
  8. package/dist/admin/components/{views/Global/Default → elements/DocumentFields}/index.scss +10 -13
  9. package/dist/admin/components/elements/DuplicateDocument/index.d.ts.map +1 -1
  10. package/dist/admin/components/elements/DuplicateDocument/index.js +3 -1
  11. package/dist/admin/components/elements/ListControls/index.d.ts +1 -2
  12. package/dist/admin/components/elements/ListControls/index.d.ts.map +1 -1
  13. package/dist/admin/components/elements/ListControls/index.js +14 -25
  14. package/dist/admin/components/elements/ListControls/types.d.ts +3 -0
  15. package/dist/admin/components/elements/ListControls/types.d.ts.map +1 -1
  16. package/dist/admin/components/elements/ListDrawer/DrawerContent.d.ts.map +1 -1
  17. package/dist/admin/components/elements/ListDrawer/DrawerContent.js +60 -15
  18. package/dist/admin/components/elements/Localizer/index.d.ts.map +1 -1
  19. package/dist/admin/components/elements/Localizer/index.js +21 -13
  20. package/dist/admin/components/elements/Popup/PopupButtonList/index.d.ts +1 -0
  21. package/dist/admin/components/elements/Popup/PopupButtonList/index.d.ts.map +1 -1
  22. package/dist/admin/components/elements/Popup/PopupButtonList/index.js +3 -2
  23. package/dist/admin/components/elements/Popup/PopupButtonList/index.scss +6 -1
  24. package/dist/admin/components/elements/ReactSelect/MultiValue/index.d.ts.map +1 -1
  25. package/dist/admin/components/elements/ReactSelect/MultiValue/index.js +4 -3
  26. package/dist/admin/components/elements/ReactSelect/index.js +3 -3
  27. package/dist/admin/components/elements/ReactSelect/types.d.ts +0 -4
  28. package/dist/admin/components/elements/ReactSelect/types.d.ts.map +1 -1
  29. package/dist/admin/components/elements/SaveDraft/index.d.ts.map +1 -1
  30. package/dist/admin/components/elements/SaveDraft/index.js +4 -3
  31. package/dist/admin/components/elements/SearchFilter/index.d.ts.map +1 -1
  32. package/dist/admin/components/elements/SearchFilter/index.js +4 -32
  33. package/dist/admin/components/elements/SearchFilter/types.d.ts +1 -2
  34. package/dist/admin/components/elements/SearchFilter/types.d.ts.map +1 -1
  35. package/dist/admin/components/elements/Status/index.d.ts.map +1 -1
  36. package/dist/admin/components/elements/Status/index.js +3 -1
  37. package/dist/admin/components/elements/TableColumns/index.d.ts.map +1 -1
  38. package/dist/admin/components/elements/TableColumns/index.js +8 -13
  39. package/dist/admin/components/elements/WhereBuilder/Condition/index.js +2 -2
  40. package/dist/admin/components/forms/RenderFields/index.d.ts.map +1 -1
  41. package/dist/admin/components/forms/RenderFields/index.js +1 -1
  42. package/dist/admin/components/forms/field-types/RichText/types.d.ts +6 -1
  43. package/dist/admin/components/forms/field-types/RichText/types.d.ts.map +1 -1
  44. package/dist/admin/components/forms/field-types/Row/index.d.ts.map +1 -1
  45. package/dist/admin/components/forms/field-types/Row/index.js +9 -5
  46. package/dist/admin/components/forms/field-types/Row/index.scss +22 -18
  47. package/dist/admin/components/utilities/DocumentInfo/index.d.ts.map +1 -1
  48. package/dist/admin/components/utilities/DocumentInfo/index.js +19 -11
  49. package/dist/admin/components/utilities/Preferences/index.d.ts +6 -1
  50. package/dist/admin/components/utilities/Preferences/index.d.ts.map +1 -1
  51. package/dist/admin/components/utilities/Preferences/index.js +55 -5
  52. package/dist/admin/components/views/Account/Default.d.ts +5 -1
  53. package/dist/admin/components/views/Account/Default.d.ts.map +1 -1
  54. package/dist/admin/components/views/Account/Default.js +29 -72
  55. package/dist/admin/components/views/Account/Settings/index.d.ts +6 -0
  56. package/dist/admin/components/views/Account/Settings/index.d.ts.map +1 -0
  57. package/dist/admin/components/views/Account/Settings/index.js +48 -0
  58. package/dist/admin/components/views/Account/Settings/index.scss +45 -0
  59. package/dist/admin/components/views/Account/index.d.ts.map +1 -1
  60. package/dist/admin/components/views/Account/index.js +18 -12
  61. package/dist/admin/components/views/Account/index.scss +7 -35
  62. package/dist/admin/components/views/Global/Default/index.d.ts +4 -2
  63. package/dist/admin/components/views/Global/Default/index.d.ts.map +1 -1
  64. package/dist/admin/components/views/Global/Default/index.js +16 -58
  65. package/dist/admin/components/views/Global/Default.d.ts +5 -2
  66. package/dist/admin/components/views/Global/Default.d.ts.map +1 -1
  67. package/dist/admin/components/views/Global/Default.js +6 -3
  68. package/dist/admin/components/views/Global/Routes/CustomComponent.d.ts.map +1 -1
  69. package/dist/admin/components/views/Global/Routes/CustomComponent.js +3 -2
  70. package/dist/admin/components/views/Global/Routes/index.d.ts +4 -1
  71. package/dist/admin/components/views/Global/Routes/index.d.ts.map +1 -1
  72. package/dist/admin/components/views/Global/Routes/index.js +1 -1
  73. package/dist/admin/components/views/Global/index.d.ts.map +1 -1
  74. package/dist/admin/components/views/Global/index.js +3 -1
  75. package/dist/admin/components/views/LivePreview/Context/index.d.ts.map +1 -1
  76. package/dist/admin/components/views/LivePreview/Context/index.js +6 -4
  77. package/dist/admin/components/views/LivePreview/index.d.ts +4 -1
  78. package/dist/admin/components/views/LivePreview/index.d.ts.map +1 -1
  79. package/dist/admin/components/views/LivePreview/index.js +20 -13
  80. package/dist/admin/components/views/Version/SelectLocales/index.js +3 -9
  81. package/dist/admin/components/views/Version/SelectLocales/types.d.ts +4 -4
  82. package/dist/admin/components/views/Version/SelectLocales/types.d.ts.map +1 -1
  83. package/dist/admin/components/views/Version/Version.d.ts.map +1 -1
  84. package/dist/admin/components/views/Version/Version.js +11 -3
  85. package/dist/admin/components/views/Version/types.d.ts +0 -4
  86. package/dist/admin/components/views/Version/types.d.ts.map +1 -1
  87. package/dist/admin/components/views/collections/Edit/Default/index.d.ts +4 -1
  88. package/dist/admin/components/views/collections/Edit/Default/index.d.ts.map +1 -1
  89. package/dist/admin/components/views/collections/Edit/Default/index.js +27 -61
  90. package/dist/admin/components/views/collections/Edit/Default/index.scss +5 -158
  91. package/dist/admin/components/views/collections/Edit/Default.d.ts +5 -2
  92. package/dist/admin/components/views/collections/Edit/Default.d.ts.map +1 -1
  93. package/dist/admin/components/views/collections/Edit/Default.js +6 -3
  94. package/dist/admin/components/views/collections/Edit/Routes/index.d.ts +4 -1
  95. package/dist/admin/components/views/collections/Edit/Routes/index.d.ts.map +1 -1
  96. package/dist/admin/components/views/collections/Edit/Routes/index.js +1 -1
  97. package/dist/admin/components/views/collections/Edit/index.d.ts.map +1 -1
  98. package/dist/admin/components/views/collections/Edit/index.js +3 -1
  99. package/dist/admin/components/views/collections/List/Default.d.ts.map +1 -1
  100. package/dist/admin/components/views/collections/List/Default.js +7 -5
  101. package/dist/admin/components/views/collections/List/index.d.ts.map +1 -1
  102. package/dist/admin/components/views/collections/List/index.js +68 -17
  103. package/dist/admin/components/views/collections/List/types.d.ts +4 -0
  104. package/dist/admin/components/views/collections/List/types.d.ts.map +1 -1
  105. package/dist/admin/hooks/useUseAsTitle.d.ts +3 -0
  106. package/dist/admin/hooks/useUseAsTitle.d.ts.map +1 -0
  107. package/dist/admin/hooks/useUseAsTitle.js +24 -0
  108. package/dist/auth/operations/forgotPassword.d.ts.map +1 -1
  109. package/dist/auth/operations/forgotPassword.js +4 -1
  110. package/dist/auth/operations/local/forgotPassword.js +2 -2
  111. package/dist/auth/operations/local/login.js +2 -2
  112. package/dist/auth/operations/local/resetPassword.d.ts.map +1 -1
  113. package/dist/auth/operations/local/resetPassword.js +2 -2
  114. package/dist/auth/operations/local/unlock.js +2 -2
  115. package/dist/auth/operations/local/verifyEmail.js +2 -2
  116. package/dist/auth/operations/login.d.ts.map +1 -1
  117. package/dist/auth/operations/login.js +9 -2
  118. package/dist/auth/operations/logout.d.ts.map +1 -1
  119. package/dist/auth/operations/logout.js +2 -1
  120. package/dist/auth/operations/me.d.ts.map +1 -1
  121. package/dist/auth/operations/me.js +2 -1
  122. package/dist/auth/operations/refresh.d.ts.map +1 -1
  123. package/dist/auth/operations/refresh.js +4 -1
  124. package/dist/collections/config/types.d.ts +33 -1
  125. package/dist/collections/config/types.d.ts.map +1 -1
  126. package/dist/collections/config/types.js +1 -1
  127. package/dist/collections/operations/create.d.ts.map +1 -1
  128. package/dist/collections/operations/create.js +21 -32
  129. package/dist/collections/operations/delete.d.ts.map +1 -1
  130. package/dist/collections/operations/delete.js +8 -2
  131. package/dist/collections/operations/deleteByID.d.ts.map +1 -1
  132. package/dist/collections/operations/deleteByID.js +8 -2
  133. package/dist/collections/operations/find.d.ts.map +1 -1
  134. package/dist/collections/operations/find.js +7 -2
  135. package/dist/collections/operations/findByID.d.ts.map +1 -1
  136. package/dist/collections/operations/findByID.js +7 -2
  137. package/dist/collections/operations/findVersionByID.d.ts.map +1 -1
  138. package/dist/collections/operations/findVersionByID.js +5 -2
  139. package/dist/collections/operations/findVersions.d.ts.map +1 -1
  140. package/dist/collections/operations/findVersions.js +5 -2
  141. package/dist/collections/operations/local/find.js +2 -2
  142. package/dist/collections/operations/local/findByID.js +2 -2
  143. package/dist/collections/operations/local/findVersionByID.js +2 -2
  144. package/dist/collections/operations/restoreVersion.d.ts.map +1 -1
  145. package/dist/collections/operations/restoreVersion.js +7 -3
  146. package/dist/collections/operations/update.d.ts.map +1 -1
  147. package/dist/collections/operations/update.js +17 -6
  148. package/dist/collections/operations/updateByID.d.ts.map +1 -1
  149. package/dist/collections/operations/updateByID.js +17 -6
  150. package/dist/collections/operations/utils.d.ts +21 -1
  151. package/dist/collections/operations/utils.d.ts.map +1 -1
  152. package/dist/collections/operations/utils.js +3 -2
  153. package/dist/config/schema.d.ts.map +1 -1
  154. package/dist/config/schema.js +4 -3
  155. package/dist/exports/types.d.ts +1 -0
  156. package/dist/exports/types.d.ts.map +1 -1
  157. package/dist/exports/types.js +19 -15
  158. package/dist/express/middleware/errorHandler.d.ts.map +1 -1
  159. package/dist/express/middleware/errorHandler.js +3 -3
  160. package/dist/fields/config/schema.d.ts.map +1 -1
  161. package/dist/fields/config/schema.js +5 -4
  162. package/dist/fields/config/types.d.ts +8 -1
  163. package/dist/fields/config/types.d.ts.map +1 -1
  164. package/dist/fields/config/types.js +1 -1
  165. package/dist/fields/hooks/afterChange/index.d.ts +3 -2
  166. package/dist/fields/hooks/afterChange/index.d.ts.map +1 -1
  167. package/dist/fields/hooks/afterChange/index.js +5 -3
  168. package/dist/fields/hooks/afterChange/promise.d.ts +5 -1
  169. package/dist/fields/hooks/afterChange/promise.d.ts.map +1 -1
  170. package/dist/fields/hooks/afterChange/promise.js +17 -2
  171. package/dist/fields/hooks/afterChange/traverseFields.d.ts +5 -1
  172. package/dist/fields/hooks/afterChange/traverseFields.d.ts.map +1 -1
  173. package/dist/fields/hooks/afterChange/traverseFields.js +4 -2
  174. package/dist/fields/hooks/afterRead/index.d.ts +2 -1
  175. package/dist/fields/hooks/afterRead/index.d.ts.map +1 -1
  176. package/dist/fields/hooks/afterRead/index.js +5 -3
  177. package/dist/fields/hooks/afterRead/promise.d.ts +5 -1
  178. package/dist/fields/hooks/afterRead/promise.d.ts.map +1 -1
  179. package/dist/fields/hooks/afterRead/promise.js +38 -4
  180. package/dist/fields/hooks/afterRead/traverseFields.d.ts +5 -1
  181. package/dist/fields/hooks/afterRead/traverseFields.d.ts.map +1 -1
  182. package/dist/fields/hooks/afterRead/traverseFields.js +4 -2
  183. package/dist/fields/hooks/beforeChange/index.d.ts +3 -2
  184. package/dist/fields/hooks/beforeChange/index.d.ts.map +1 -1
  185. package/dist/fields/hooks/beforeChange/index.js +5 -3
  186. package/dist/fields/hooks/beforeChange/promise.d.ts +5 -1
  187. package/dist/fields/hooks/beforeChange/promise.d.ts.map +1 -1
  188. package/dist/fields/hooks/beforeChange/promise.js +17 -2
  189. package/dist/fields/hooks/beforeChange/traverseFields.d.ts +5 -1
  190. package/dist/fields/hooks/beforeChange/traverseFields.d.ts.map +1 -1
  191. package/dist/fields/hooks/beforeChange/traverseFields.js +4 -2
  192. package/dist/fields/hooks/beforeValidate/index.d.ts +3 -2
  193. package/dist/fields/hooks/beforeValidate/index.d.ts.map +1 -1
  194. package/dist/fields/hooks/beforeValidate/index.js +5 -3
  195. package/dist/fields/hooks/beforeValidate/promise.d.ts +5 -1
  196. package/dist/fields/hooks/beforeValidate/promise.d.ts.map +1 -1
  197. package/dist/fields/hooks/beforeValidate/promise.js +19 -4
  198. package/dist/fields/hooks/beforeValidate/traverseFields.d.ts +5 -1
  199. package/dist/fields/hooks/beforeValidate/traverseFields.d.ts.map +1 -1
  200. package/dist/fields/hooks/beforeValidate/traverseFields.js +4 -2
  201. package/dist/globals/config/types.d.ts +16 -0
  202. package/dist/globals/config/types.d.ts.map +1 -1
  203. package/dist/globals/operations/findOne.d.ts.map +1 -1
  204. package/dist/globals/operations/findOne.js +7 -2
  205. package/dist/globals/operations/findVersionByID.d.ts.map +1 -1
  206. package/dist/globals/operations/findVersionByID.js +7 -2
  207. package/dist/globals/operations/findVersions.d.ts.map +1 -1
  208. package/dist/globals/operations/findVersions.js +5 -2
  209. package/dist/globals/operations/restoreVersion.d.ts.map +1 -1
  210. package/dist/globals/operations/restoreVersion.js +9 -3
  211. package/dist/globals/operations/update.d.ts.map +1 -1
  212. package/dist/globals/operations/update.js +19 -6
  213. package/dist/graphql/errorHandler.js +2 -2
  214. package/dist/graphql/schema/buildMutationInputType.js +2 -2
  215. package/dist/graphql/schema/buildObjectType.d.ts.map +1 -1
  216. package/dist/graphql/schema/buildObjectType.js +8 -3
  217. package/dist/preferences/operations/update.js +7 -7
  218. package/package.json +2 -2
  219. package/types.d.ts +1 -0
  220. package/types.js +19 -15
@@ -112,10 +112,11 @@ async function restoreVersion(args) {
112
112
  // afterRead - Fields
113
113
  // /////////////////////////////////////
114
114
  result = await (0, _afterRead.afterRead)({
115
+ collection: collectionConfig,
115
116
  context: req.context,
116
117
  depth,
117
118
  doc: result,
118
- entityConfig: collectionConfig,
119
+ global: null,
119
120
  overrideAccess,
120
121
  req,
121
122
  showHiddenFields
@@ -126,6 +127,7 @@ async function restoreVersion(args) {
126
127
  await collectionConfig.hooks.afterRead.reduce(async (priorHook, hook)=>{
127
128
  await priorHook;
128
129
  result = await hook({
130
+ collection: collectionConfig,
129
131
  context: req.context,
130
132
  doc: result,
131
133
  req
@@ -135,10 +137,11 @@ async function restoreVersion(args) {
135
137
  // afterChange - Fields
136
138
  // /////////////////////////////////////
137
139
  result = await (0, _afterChange.afterChange)({
140
+ collection: collectionConfig,
138
141
  context: req.context,
139
142
  data: result,
140
143
  doc: result,
141
- entityConfig: collectionConfig,
144
+ global: null,
142
145
  operation: 'update',
143
146
  previousDoc: prevDocWithLocales,
144
147
  req
@@ -149,6 +152,7 @@ async function restoreVersion(args) {
149
152
  await collectionConfig.hooks.afterChange.reduce(async (priorHook, hook)=>{
150
153
  await priorHook;
151
154
  result = await hook({
155
+ collection: collectionConfig,
152
156
  context: req.context,
153
157
  doc: result,
154
158
  operation: 'update',
@@ -165,4 +169,4 @@ async function restoreVersion(args) {
165
169
  }
166
170
  const _default = restoreVersion;
167
171
 
168
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb2xsZWN0aW9ucy9vcGVyYXRpb25zL3Jlc3RvcmVWZXJzaW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLXVuZGVyc2NvcmUtZGFuZ2xlICovXG5pbXBvcnQgaHR0cFN0YXR1cyBmcm9tICdodHRwLXN0YXR1cydcblxuaW1wb3J0IHR5cGUgeyBGaW5kT25lQXJncyB9IGZyb20gJy4uLy4uL2RhdGFiYXNlL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBQYXlsb2FkUmVxdWVzdCB9IGZyb20gJy4uLy4uL2V4cHJlc3MvdHlwZXMnXG5pbXBvcnQgdHlwZSB7IENvbGxlY3Rpb24sIFR5cGVXaXRoSUQgfSBmcm9tICcuLi9jb25maWcvdHlwZXMnXG5cbmltcG9ydCBleGVjdXRlQWNjZXNzIGZyb20gJy4uLy4uL2F1dGgvZXhlY3V0ZUFjY2VzcydcbmltcG9ydCB7IGhhc1doZXJlQWNjZXNzUmVzdWx0IH0gZnJvbSAnLi4vLi4vYXV0aC90eXBlcydcbmltcG9ydCB7IGNvbWJpbmVRdWVyaWVzIH0gZnJvbSAnLi4vLi4vZGF0YWJhc2UvY29tYmluZVF1ZXJpZXMnXG5pbXBvcnQgeyBBUElFcnJvciwgRm9yYmlkZGVuLCBOb3RGb3VuZCB9IGZyb20gJy4uLy4uL2Vycm9ycydcbmltcG9ydCB7IGFmdGVyQ2hhbmdlIH0gZnJvbSAnLi4vLi4vZmllbGRzL2hvb2tzL2FmdGVyQ2hhbmdlJ1xuaW1wb3J0IHsgYWZ0ZXJSZWFkIH0gZnJvbSAnLi4vLi4vZmllbGRzL2hvb2tzL2FmdGVyUmVhZCdcbmltcG9ydCB7IGluaXRUcmFuc2FjdGlvbiB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9pbml0VHJhbnNhY3Rpb24nXG5pbXBvcnQgeyBraWxsVHJhbnNhY3Rpb24gfSBmcm9tICcuLi8uLi91dGlsaXRpZXMva2lsbFRyYW5zYWN0aW9uJ1xuaW1wb3J0IHsgZ2V0TGF0ZXN0Q29sbGVjdGlvblZlcnNpb24gfSBmcm9tICcuLi8uLi92ZXJzaW9ucy9nZXRMYXRlc3RDb2xsZWN0aW9uVmVyc2lvbidcblxuZXhwb3J0IHR5cGUgQXJndW1lbnRzID0ge1xuICBjb2xsZWN0aW9uOiBDb2xsZWN0aW9uXG4gIGN1cnJlbnREZXB0aD86IG51bWJlclxuICBkZXB0aD86IG51bWJlclxuICBkaXNhYmxlRXJyb3JzPzogYm9vbGVhblxuICBpZDogbnVtYmVyIHwgc3RyaW5nXG4gIG92ZXJyaWRlQWNjZXNzPzogYm9vbGVhblxuICByZXE6IFBheWxvYWRSZXF1ZXN0XG4gIHNob3dIaWRkZW5GaWVsZHM/OiBib29sZWFuXG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJlc3RvcmVWZXJzaW9uPFQgZXh0ZW5kcyBUeXBlV2l0aElEID0gYW55PihhcmdzOiBBcmd1bWVudHMpOiBQcm9taXNlPFQ+IHtcbiAgY29uc3Qge1xuICAgIGlkLFxuICAgIGNvbGxlY3Rpb246IHsgY29uZmlnOiBjb2xsZWN0aW9uQ29uZmlnIH0sXG4gICAgZGVwdGgsXG4gICAgb3ZlcnJpZGVBY2Nlc3MgPSBmYWxzZSxcbiAgICByZXEsXG4gICAgcmVxOiB7IGxvY2FsZSwgcGF5bG9hZCwgdCB9LFxuICAgIHNob3dIaWRkZW5GaWVsZHMsXG4gIH0gPSBhcmdzXG5cbiAgdHJ5IHtcbiAgICBjb25zdCBzaG91bGRDb21taXQgPSBhd2FpdCBpbml0VHJhbnNhY3Rpb24ocmVxKVxuXG4gICAgaWYgKCFpZCkge1xuICAgICAgdGhyb3cgbmV3IEFQSUVycm9yKCdNaXNzaW5nIElEIG9mIHZlcnNpb24gdG8gcmVzdG9yZS4nLCBodHRwU3RhdHVzLkJBRF9SRVFVRVNUKVxuICAgIH1cblxuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICAvLyBSZXRyaWV2ZSBvcmlnaW5hbCByYXcgdmVyc2lvblxuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuICAgIGNvbnN0IHsgZG9jczogdmVyc2lvbkRvY3MgfSA9IGF3YWl0IHJlcS5wYXlsb2FkLmRiLmZpbmRWZXJzaW9ucyh7XG4gICAgICBjb2xsZWN0aW9uOiBjb2xsZWN0aW9uQ29uZmlnLnNsdWcsXG4gICAgICBsaW1pdDogMSxcbiAgICAgIGxvY2FsZSxcbiAgICAgIHJlcSxcbiAgICAgIHdoZXJlOiB7IGlkOiB7IGVxdWFsczogaWQgfSB9LFxuICAgIH0pXG5cbiAgICBjb25zdCBbcmF3VmVyc2lvbl0gPSB2ZXJzaW9uRG9jc1xuXG4gICAgaWYgKCFyYXdWZXJzaW9uKSB7XG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmQodClcbiAgICB9XG5cbiAgICBjb25zdCBwYXJlbnREb2NJRCA9IHJhd1ZlcnNpb24ucGFyZW50XG5cbiAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgLy8gQWNjZXNzXG4gICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4gICAgY29uc3QgYWNjZXNzUmVzdWx0cyA9ICFvdmVycmlkZUFjY2Vzc1xuICAgICAgPyBhd2FpdCBleGVjdXRlQWNjZXNzKHsgaWQ6IHBhcmVudERvY0lELCByZXEgfSwgY29sbGVjdGlvbkNvbmZpZy5hY2Nlc3MudXBkYXRlKVxuICAgICAgOiB0cnVlXG4gICAgY29uc3QgaGFzV2hlcmVQb2xpY3kgPSBoYXNXaGVyZUFjY2Vzc1Jlc3VsdChhY2Nlc3NSZXN1bHRzKVxuXG4gICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIC8vIFJldHJpZXZlIGRvY3VtZW50XG4gICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4gICAgY29uc3QgZmluZE9uZUFyZ3M6IEZpbmRPbmVBcmdzID0ge1xuICAgICAgY29sbGVjdGlvbjogY29sbGVjdGlvbkNvbmZpZy5zbHVnLFxuICAgICAgbG9jYWxlLFxuICAgICAgcmVxLFxuICAgICAgd2hlcmU6IGNvbWJpbmVRdWVyaWVzKHsgaWQ6IHsgZXF1YWxzOiBwYXJlbnREb2NJRCB9IH0sIGFjY2Vzc1Jlc3VsdHMpLFxuICAgIH1cblxuICAgIGNvbnN0IGRvYyA9IGF3YWl0IHJlcS5wYXlsb2FkLmRiLmZpbmRPbmUoZmluZE9uZUFyZ3MpXG5cbiAgICBpZiAoIWRvYyAmJiAhaGFzV2hlcmVQb2xpY3kpIHRocm93IG5ldyBOb3RGb3VuZCh0KVxuICAgIGlmICghZG9jICYmIGhhc1doZXJlUG9saWN5KSB0aHJvdyBuZXcgRm9yYmlkZGVuKHQpXG5cbiAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgLy8gZmV0Y2ggcHJldmlvdXNEb2NcbiAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbiAgICBjb25zdCBwcmV2RG9jV2l0aExvY2FsZXMgPSBhd2FpdCBnZXRMYXRlc3RDb2xsZWN0aW9uVmVyc2lvbih7XG4gICAgICBpZDogcGFyZW50RG9jSUQsXG4gICAgICBjb25maWc6IGNvbGxlY3Rpb25Db25maWcsXG4gICAgICBwYXlsb2FkLFxuICAgICAgcXVlcnk6IGZpbmRPbmVBcmdzLFxuICAgICAgcmVxLFxuICAgIH0pXG5cbiAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgLy8gVXBkYXRlXG4gICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4gICAgbGV0IHJlc3VsdCA9IGF3YWl0IHJlcS5wYXlsb2FkLmRiLnVwZGF0ZU9uZSh7XG4gICAgICBpZDogcGFyZW50RG9jSUQsXG4gICAgICBjb2xsZWN0aW9uOiBjb2xsZWN0aW9uQ29uZmlnLnNsdWcsXG4gICAgICBkYXRhOiByYXdWZXJzaW9uLnZlcnNpb24sXG4gICAgICByZXEsXG4gICAgfSlcblxuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICAvLyBTYXZlIGBwcmV2aW91c0RvY2AgYXMgYSB2ZXJzaW9uIGFmdGVyIHJlc3RvcmluZ1xuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuICAgIGNvbnN0IHByZXZWZXJzaW9uID0geyAuLi5wcmV2RG9jV2l0aExvY2FsZXMgfVxuXG4gICAgZGVsZXRlIHByZXZWZXJzaW9uLmlkXG5cbiAgICBhd2FpdCBwYXlsb2FkLmRiLmNyZWF0ZVZlcnNpb24oe1xuICAgICAgYXV0b3NhdmU6IGZhbHNlLFxuICAgICAgY29sbGVjdGlvblNsdWc6IGNvbGxlY3Rpb25Db25maWcuc2x1ZyxcbiAgICAgIGNyZWF0ZWRBdDogcHJldlZlcnNpb24uY3JlYXRlZEF0LFxuICAgICAgcGFyZW50OiBwYXJlbnREb2NJRCxcbiAgICAgIHJlcSxcbiAgICAgIHVwZGF0ZWRBdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgdmVyc2lvbkRhdGE6IHJhd1ZlcnNpb24udmVyc2lvbixcbiAgICB9KVxuXG4gICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIC8vIGFmdGVyUmVhZCAtIEZpZWxkc1xuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuICAgIHJlc3VsdCA9IGF3YWl0IGFmdGVyUmVhZCh7XG4gICAgICBjb250ZXh0OiByZXEuY29udGV4dCxcbiAgICAgIGRlcHRoLFxuICAgICAgZG9jOiByZXN1bHQsXG4gICAgICBlbnRpdHlDb25maWc6IGNvbGxlY3Rpb25Db25maWcsXG4gICAgICBvdmVycmlkZUFjY2VzcyxcbiAgICAgIHJlcSxcbiAgICAgIHNob3dIaWRkZW5GaWVsZHMsXG4gICAgfSlcblxuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICAvLyBhZnRlclJlYWQgLSBDb2xsZWN0aW9uXG4gICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4gICAgYXdhaXQgY29sbGVjdGlvbkNvbmZpZy5ob29rcy5hZnRlclJlYWQucmVkdWNlKGFzeW5jIChwcmlvckhvb2ssIGhvb2spID0+IHtcbiAgICAgIGF3YWl0IHByaW9ySG9va1xuXG4gICAgICByZXN1bHQgPVxuICAgICAgICAoYXdhaXQgaG9vayh7XG4gICAgICAgICAgY29udGV4dDogcmVxLmNvbnRleHQsXG4gICAgICAgICAgZG9jOiByZXN1bHQsXG4gICAgICAgICAgcmVxLFxuICAgICAgICB9KSkgfHwgcmVzdWx0XG4gICAgfSwgUHJvbWlzZS5yZXNvbHZlKCkpXG5cbiAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgLy8gYWZ0ZXJDaGFuZ2UgLSBGaWVsZHNcbiAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbiAgICByZXN1bHQgPSBhd2FpdCBhZnRlckNoYW5nZSh7XG4gICAgICBjb250ZXh0OiByZXEuY29udGV4dCxcbiAgICAgIGRhdGE6IHJlc3VsdCxcbiAgICAgIGRvYzogcmVzdWx0LFxuICAgICAgZW50aXR5Q29uZmlnOiBjb2xsZWN0aW9uQ29uZmlnLFxuICAgICAgb3BlcmF0aW9uOiAndXBkYXRlJyxcbiAgICAgIHByZXZpb3VzRG9jOiBwcmV2RG9jV2l0aExvY2FsZXMsXG4gICAgICByZXEsXG4gICAgfSlcblxuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICAvLyBhZnRlckNoYW5nZSAtIENvbGxlY3Rpb25cbiAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbiAgICBhd2FpdCBjb2xsZWN0aW9uQ29uZmlnLmhvb2tzLmFmdGVyQ2hhbmdlLnJlZHVjZShhc3luYyAocHJpb3JIb29rLCBob29rKSA9PiB7XG4gICAgICBhd2FpdCBwcmlvckhvb2tcblxuICAgICAgcmVzdWx0ID1cbiAgICAgICAgKGF3YWl0IGhvb2soe1xuICAgICAgICAgIGNvbnRleHQ6IHJlcS5jb250ZXh0LFxuICAgICAgICAgIGRvYzogcmVzdWx0LFxuICAgICAgICAgIG9wZXJhdGlvbjogJ3VwZGF0ZScsXG4gICAgICAgICAgcHJldmlvdXNEb2M6IHByZXZEb2NXaXRoTG9jYWxlcyxcbiAgICAgICAgICByZXEsXG4gICAgICAgIH0pKSB8fCByZXN1bHRcbiAgICB9LCBQcm9taXNlLnJlc29sdmUoKSlcblxuICAgIGlmIChzaG91bGRDb21taXQpIGF3YWl0IHBheWxvYWQuZGIuY29tbWl0VHJhbnNhY3Rpb24ocmVxLnRyYW5zYWN0aW9uSUQpXG5cbiAgICByZXR1cm4gcmVzdWx0XG4gIH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG4gICAgYXdhaXQga2lsbFRyYW5zYWN0aW9uKHJlcSlcbiAgICB0aHJvdyBlcnJvclxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IHJlc3RvcmVWZXJzaW9uXG4iXSwibmFtZXMiOlsicmVzdG9yZVZlcnNpb24iLCJhcmdzIiwiaWQiLCJjb2xsZWN0aW9uIiwiY29uZmlnIiwiY29sbGVjdGlvbkNvbmZpZyIsImRlcHRoIiwib3ZlcnJpZGVBY2Nlc3MiLCJyZXEiLCJsb2NhbGUiLCJwYXlsb2FkIiwidCIsInNob3dIaWRkZW5GaWVsZHMiLCJzaG91bGRDb21taXQiLCJpbml0VHJhbnNhY3Rpb24iLCJBUElFcnJvciIsImh0dHBTdGF0dXMiLCJCQURfUkVRVUVTVCIsImRvY3MiLCJ2ZXJzaW9uRG9jcyIsImRiIiwiZmluZFZlcnNpb25zIiwic2x1ZyIsImxpbWl0Iiwid2hlcmUiLCJlcXVhbHMiLCJyYXdWZXJzaW9uIiwiTm90Rm91bmQiLCJwYXJlbnREb2NJRCIsInBhcmVudCIsImFjY2Vzc1Jlc3VsdHMiLCJleGVjdXRlQWNjZXNzIiwiYWNjZXNzIiwidXBkYXRlIiwiaGFzV2hlcmVQb2xpY3kiLCJoYXNXaGVyZUFjY2Vzc1Jlc3VsdCIsImZpbmRPbmVBcmdzIiwiY29tYmluZVF1ZXJpZXMiLCJkb2MiLCJmaW5kT25lIiwiRm9yYmlkZGVuIiwicHJldkRvY1dpdGhMb2NhbGVzIiwiZ2V0TGF0ZXN0Q29sbGVjdGlvblZlcnNpb24iLCJxdWVyeSIsInJlc3VsdCIsInVwZGF0ZU9uZSIsImRhdGEiLCJ2ZXJzaW9uIiwicHJldlZlcnNpb24iLCJjcmVhdGVWZXJzaW9uIiwiYXV0b3NhdmUiLCJjb2xsZWN0aW9uU2x1ZyIsImNyZWF0ZWRBdCIsInVwZGF0ZWRBdCIsIkRhdGUiLCJ0b0lTT1N0cmluZyIsInZlcnNpb25EYXRhIiwiYWZ0ZXJSZWFkIiwiY29udGV4dCIsImVudGl0eUNvbmZpZyIsImhvb2tzIiwicmVkdWNlIiwicHJpb3JIb29rIiwiaG9vayIsIlByb21pc2UiLCJyZXNvbHZlIiwiYWZ0ZXJDaGFuZ2UiLCJvcGVyYXRpb24iLCJwcmV2aW91c0RvYyIsImNvbW1pdFRyYW5zYWN0aW9uIiwidHJhbnNhY3Rpb25JRCIsImVycm9yIiwia2lsbFRyYW5zYWN0aW9uIl0sIm1hcHBpbmdzIjoiQUFBQSx1Q0FBdUM7Ozs7K0JBeU12Qzs7O2VBQUE7OzttRUF4TXVCO3NFQU1HO3VCQUNXO2dDQUNOO3dCQUNlOzZCQUNsQjsyQkFDRjtpQ0FDTTtpQ0FDQTs0Q0FDVzs7Ozs7O0FBYTNDLGVBQWVBLGVBQTJDQyxJQUFlO0lBQ3ZFLE1BQU0sRUFDSkMsRUFBRSxFQUNGQyxZQUFZLEVBQUVDLFFBQVFDLGdCQUFnQixFQUFFLEVBQ3hDQyxLQUFLLEVBQ0xDLGlCQUFpQixLQUFLLEVBQ3RCQyxHQUFHLEVBQ0hBLEtBQUssRUFBRUMsTUFBTSxFQUFFQyxPQUFPLEVBQUVDLENBQUMsRUFBRSxFQUMzQkMsZ0JBQWdCLEVBQ2pCLEdBQUdYO0lBRUosSUFBSTtRQUNGLE1BQU1ZLGVBQWUsTUFBTUMsSUFBQUEsZ0NBQWUsRUFBQ047UUFFM0MsSUFBSSxDQUFDTixJQUFJO1lBQ1AsTUFBTSxJQUFJYSxnQkFBUSxDQUFDLHFDQUFxQ0MsbUJBQVUsQ0FBQ0MsV0FBVztRQUNoRjtRQUVBLHdDQUF3QztRQUN4QyxnQ0FBZ0M7UUFDaEMsd0NBQXdDO1FBRXhDLE1BQU0sRUFBRUMsTUFB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
172
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb2xsZWN0aW9ucy9vcGVyYXRpb25zL3Jlc3RvcmVWZXJzaW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLXVuZGVyc2NvcmUtZGFuZ2xlICovXG5pbXBvcnQgaHR0cFN0YXR1cyBmcm9tICdodHRwLXN0YXR1cydcblxuaW1wb3J0IHR5cGUgeyBGaW5kT25lQXJncyB9IGZyb20gJy4uLy4uL2RhdGFiYXNlL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBQYXlsb2FkUmVxdWVzdCB9IGZyb20gJy4uLy4uL2V4cHJlc3MvdHlwZXMnXG5pbXBvcnQgdHlwZSB7IENvbGxlY3Rpb24sIFR5cGVXaXRoSUQgfSBmcm9tICcuLi9jb25maWcvdHlwZXMnXG5cbmltcG9ydCBleGVjdXRlQWNjZXNzIGZyb20gJy4uLy4uL2F1dGgvZXhlY3V0ZUFjY2VzcydcbmltcG9ydCB7IGhhc1doZXJlQWNjZXNzUmVzdWx0IH0gZnJvbSAnLi4vLi4vYXV0aC90eXBlcydcbmltcG9ydCB7IGNvbWJpbmVRdWVyaWVzIH0gZnJvbSAnLi4vLi4vZGF0YWJhc2UvY29tYmluZVF1ZXJpZXMnXG5pbXBvcnQgeyBBUElFcnJvciwgRm9yYmlkZGVuLCBOb3RGb3VuZCB9IGZyb20gJy4uLy4uL2Vycm9ycydcbmltcG9ydCB7IGFmdGVyQ2hhbmdlIH0gZnJvbSAnLi4vLi4vZmllbGRzL2hvb2tzL2FmdGVyQ2hhbmdlJ1xuaW1wb3J0IHsgYWZ0ZXJSZWFkIH0gZnJvbSAnLi4vLi4vZmllbGRzL2hvb2tzL2FmdGVyUmVhZCdcbmltcG9ydCB7IGluaXRUcmFuc2FjdGlvbiB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9pbml0VHJhbnNhY3Rpb24nXG5pbXBvcnQgeyBraWxsVHJhbnNhY3Rpb24gfSBmcm9tICcuLi8uLi91dGlsaXRpZXMva2lsbFRyYW5zYWN0aW9uJ1xuaW1wb3J0IHsgZ2V0TGF0ZXN0Q29sbGVjdGlvblZlcnNpb24gfSBmcm9tICcuLi8uLi92ZXJzaW9ucy9nZXRMYXRlc3RDb2xsZWN0aW9uVmVyc2lvbidcblxuZXhwb3J0IHR5cGUgQXJndW1lbnRzID0ge1xuICBjb2xsZWN0aW9uOiBDb2xsZWN0aW9uXG4gIGN1cnJlbnREZXB0aD86IG51bWJlclxuICBkZXB0aD86IG51bWJlclxuICBkaXNhYmxlRXJyb3JzPzogYm9vbGVhblxuICBpZDogbnVtYmVyIHwgc3RyaW5nXG4gIG92ZXJyaWRlQWNjZXNzPzogYm9vbGVhblxuICByZXE6IFBheWxvYWRSZXF1ZXN0XG4gIHNob3dIaWRkZW5GaWVsZHM/OiBib29sZWFuXG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJlc3RvcmVWZXJzaW9uPFQgZXh0ZW5kcyBUeXBlV2l0aElEID0gYW55PihhcmdzOiBBcmd1bWVudHMpOiBQcm9taXNlPFQ+IHtcbiAgY29uc3Qge1xuICAgIGlkLFxuICAgIGNvbGxlY3Rpb246IHsgY29uZmlnOiBjb2xsZWN0aW9uQ29uZmlnIH0sXG4gICAgZGVwdGgsXG4gICAgb3ZlcnJpZGVBY2Nlc3MgPSBmYWxzZSxcbiAgICByZXEsXG4gICAgcmVxOiB7IGxvY2FsZSwgcGF5bG9hZCwgdCB9LFxuICAgIHNob3dIaWRkZW5GaWVsZHMsXG4gIH0gPSBhcmdzXG5cbiAgdHJ5IHtcbiAgICBjb25zdCBzaG91bGRDb21taXQgPSBhd2FpdCBpbml0VHJhbnNhY3Rpb24ocmVxKVxuXG4gICAgaWYgKCFpZCkge1xuICAgICAgdGhyb3cgbmV3IEFQSUVycm9yKCdNaXNzaW5nIElEIG9mIHZlcnNpb24gdG8gcmVzdG9yZS4nLCBodHRwU3RhdHVzLkJBRF9SRVFVRVNUKVxuICAgIH1cblxuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICAvLyBSZXRyaWV2ZSBvcmlnaW5hbCByYXcgdmVyc2lvblxuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuICAgIGNvbnN0IHsgZG9jczogdmVyc2lvbkRvY3MgfSA9IGF3YWl0IHJlcS5wYXlsb2FkLmRiLmZpbmRWZXJzaW9ucyh7XG4gICAgICBjb2xsZWN0aW9uOiBjb2xsZWN0aW9uQ29uZmlnLnNsdWcsXG4gICAgICBsaW1pdDogMSxcbiAgICAgIGxvY2FsZSxcbiAgICAgIHJlcSxcbiAgICAgIHdoZXJlOiB7IGlkOiB7IGVxdWFsczogaWQgfSB9LFxuICAgIH0pXG5cbiAgICBjb25zdCBbcmF3VmVyc2lvbl0gPSB2ZXJzaW9uRG9jc1xuXG4gICAgaWYgKCFyYXdWZXJzaW9uKSB7XG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmQodClcbiAgICB9XG5cbiAgICBjb25zdCBwYXJlbnREb2NJRCA9IHJhd1ZlcnNpb24ucGFyZW50XG5cbiAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgLy8gQWNjZXNzXG4gICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4gICAgY29uc3QgYWNjZXNzUmVzdWx0cyA9ICFvdmVycmlkZUFjY2Vzc1xuICAgICAgPyBhd2FpdCBleGVjdXRlQWNjZXNzKHsgaWQ6IHBhcmVudERvY0lELCByZXEgfSwgY29sbGVjdGlvbkNvbmZpZy5hY2Nlc3MudXBkYXRlKVxuICAgICAgOiB0cnVlXG4gICAgY29uc3QgaGFzV2hlcmVQb2xpY3kgPSBoYXNXaGVyZUFjY2Vzc1Jlc3VsdChhY2Nlc3NSZXN1bHRzKVxuXG4gICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIC8vIFJldHJpZXZlIGRvY3VtZW50XG4gICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4gICAgY29uc3QgZmluZE9uZUFyZ3M6IEZpbmRPbmVBcmdzID0ge1xuICAgICAgY29sbGVjdGlvbjogY29sbGVjdGlvbkNvbmZpZy5zbHVnLFxuICAgICAgbG9jYWxlLFxuICAgICAgcmVxLFxuICAgICAgd2hlcmU6IGNvbWJpbmVRdWVyaWVzKHsgaWQ6IHsgZXF1YWxzOiBwYXJlbnREb2NJRCB9IH0sIGFjY2Vzc1Jlc3VsdHMpLFxuICAgIH1cblxuICAgIGNvbnN0IGRvYyA9IGF3YWl0IHJlcS5wYXlsb2FkLmRiLmZpbmRPbmUoZmluZE9uZUFyZ3MpXG5cbiAgICBpZiAoIWRvYyAmJiAhaGFzV2hlcmVQb2xpY3kpIHRocm93IG5ldyBOb3RGb3VuZCh0KVxuICAgIGlmICghZG9jICYmIGhhc1doZXJlUG9saWN5KSB0aHJvdyBuZXcgRm9yYmlkZGVuKHQpXG5cbiAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgLy8gZmV0Y2ggcHJldmlvdXNEb2NcbiAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbiAgICBjb25zdCBwcmV2RG9jV2l0aExvY2FsZXMgPSBhd2FpdCBnZXRMYXRlc3RDb2xsZWN0aW9uVmVyc2lvbih7XG4gICAgICBpZDogcGFyZW50RG9jSUQsXG4gICAgICBjb25maWc6IGNvbGxlY3Rpb25Db25maWcsXG4gICAgICBwYXlsb2FkLFxuICAgICAgcXVlcnk6IGZpbmRPbmVBcmdzLFxuICAgICAgcmVxLFxuICAgIH0pXG5cbiAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgLy8gVXBkYXRlXG4gICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4gICAgbGV0IHJlc3VsdCA9IGF3YWl0IHJlcS5wYXlsb2FkLmRiLnVwZGF0ZU9uZSh7XG4gICAgICBpZDogcGFyZW50RG9jSUQsXG4gICAgICBjb2xsZWN0aW9uOiBjb2xsZWN0aW9uQ29uZmlnLnNsdWcsXG4gICAgICBkYXRhOiByYXdWZXJzaW9uLnZlcnNpb24sXG4gICAgICByZXEsXG4gICAgfSlcblxuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICAvLyBTYXZlIGBwcmV2aW91c0RvY2AgYXMgYSB2ZXJzaW9uIGFmdGVyIHJlc3RvcmluZ1xuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuICAgIGNvbnN0IHByZXZWZXJzaW9uID0geyAuLi5wcmV2RG9jV2l0aExvY2FsZXMgfVxuXG4gICAgZGVsZXRlIHByZXZWZXJzaW9uLmlkXG5cbiAgICBhd2FpdCBwYXlsb2FkLmRiLmNyZWF0ZVZlcnNpb24oe1xuICAgICAgYXV0b3NhdmU6IGZhbHNlLFxuICAgICAgY29sbGVjdGlvblNsdWc6IGNvbGxlY3Rpb25Db25maWcuc2x1ZyxcbiAgICAgIGNyZWF0ZWRBdDogcHJldlZlcnNpb24uY3JlYXRlZEF0LFxuICAgICAgcGFyZW50OiBwYXJlbnREb2NJRCxcbiAgICAgIHJlcSxcbiAgICAgIHVwZGF0ZWRBdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgdmVyc2lvbkRhdGE6IHJhd1ZlcnNpb24udmVyc2lvbixcbiAgICB9KVxuXG4gICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIC8vIGFmdGVyUmVhZCAtIEZpZWxkc1xuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuICAgIHJlc3VsdCA9IGF3YWl0IGFmdGVyUmVhZCh7XG4gICAgICBjb2xsZWN0aW9uOiBjb2xsZWN0aW9uQ29uZmlnLFxuICAgICAgY29udGV4dDogcmVxLmNvbnRleHQsXG4gICAgICBkZXB0aCxcbiAgICAgIGRvYzogcmVzdWx0LFxuICAgICAgZ2xvYmFsOiBudWxsLFxuICAgICAgb3ZlcnJpZGVBY2Nlc3MsXG4gICAgICByZXEsXG4gICAgICBzaG93SGlkZGVuRmllbGRzLFxuICAgIH0pXG5cbiAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgLy8gYWZ0ZXJSZWFkIC0gQ29sbGVjdGlvblxuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuICAgIGF3YWl0IGNvbGxlY3Rpb25Db25maWcuaG9va3MuYWZ0ZXJSZWFkLnJlZHVjZShhc3luYyAocHJpb3JIb29rLCBob29rKSA9PiB7XG4gICAgICBhd2FpdCBwcmlvckhvb2tcblxuICAgICAgcmVzdWx0ID1cbiAgICAgICAgKGF3YWl0IGhvb2soe1xuICAgICAgICAgIGNvbGxlY3Rpb246IGNvbGxlY3Rpb25Db25maWcsXG4gICAgICAgICAgY29udGV4dDogcmVxLmNvbnRleHQsXG4gICAgICAgICAgZG9jOiByZXN1bHQsXG4gICAgICAgICAgcmVxLFxuICAgICAgICB9KSkgfHwgcmVzdWx0XG4gICAgfSwgUHJvbWlzZS5yZXNvbHZlKCkpXG5cbiAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgLy8gYWZ0ZXJDaGFuZ2UgLSBGaWVsZHNcbiAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbiAgICByZXN1bHQgPSBhd2FpdCBhZnRlckNoYW5nZSh7XG4gICAgICBjb2xsZWN0aW9uOiBjb2xsZWN0aW9uQ29uZmlnLFxuICAgICAgY29udGV4dDogcmVxLmNvbnRleHQsXG4gICAgICBkYXRhOiByZXN1bHQsXG4gICAgICBkb2M6IHJlc3VsdCxcbiAgICAgIGdsb2JhbDogbnVsbCxcbiAgICAgIG9wZXJhdGlvbjogJ3VwZGF0ZScsXG4gICAgICBwcmV2aW91c0RvYzogcHJldkRvY1dpdGhMb2NhbGVzLFxuICAgICAgcmVxLFxuICAgIH0pXG5cbiAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgLy8gYWZ0ZXJDaGFuZ2UgLSBDb2xsZWN0aW9uXG4gICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4gICAgYXdhaXQgY29sbGVjdGlvbkNvbmZpZy5ob29rcy5hZnRlckNoYW5nZS5yZWR1Y2UoYXN5bmMgKHByaW9ySG9vaywgaG9vaykgPT4ge1xuICAgICAgYXdhaXQgcHJpb3JIb29rXG5cbiAgICAgIHJlc3VsdCA9XG4gICAgICAgIChhd2FpdCBob29rKHtcbiAgICAgICAgICBjb2xsZWN0aW9uOiBjb2xsZWN0aW9uQ29uZmlnLFxuICAgICAgICAgIGNvbnRleHQ6IHJlcS5jb250ZXh0LFxuICAgICAgICAgIGRvYzogcmVzdWx0LFxuICAgICAgICAgIG9wZXJhdGlvbjogJ3VwZGF0ZScsXG4gICAgICAgICAgcHJldmlvdXNEb2M6IHByZXZEb2NXaXRoTG9jYWxlcyxcbiAgICAgICAgICByZXEsXG4gICAgICAgIH0pKSB8fCByZXN1bHRcbiAgICB9LCBQcm9taXNlLnJlc29sdmUoKSlcblxuICAgIGlmIChzaG91bGRDb21taXQpIGF3YWl0IHBheWxvYWQuZGIuY29tbWl0VHJhbnNhY3Rpb24ocmVxLnRyYW5zYWN0aW9uSUQpXG5cbiAgICByZXR1cm4gcmVzdWx0XG4gIH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG4gICAgYXdhaXQga2lsbFRyYW5zYWN0aW9uKHJlcSlcbiAgICB0aHJvdyBlcnJvclxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IHJlc3RvcmVWZXJzaW9uXG4iXSwibmFtZXMiOlsicmVzdG9yZVZlcnNpb24iLCJhcmdzIiwiaWQiLCJjb2xsZWN0aW9uIiwiY29uZmlnIiwiY29sbGVjdGlvbkNvbmZpZyIsImRlcHRoIiwib3ZlcnJpZGVBY2Nlc3MiLCJyZXEiLCJsb2NhbGUiLCJwYXlsb2FkIiwidCIsInNob3dIaWRkZW5GaWVsZHMiLCJzaG91bGRDb21taXQiLCJpbml0VHJhbnNhY3Rpb24iLCJBUElFcnJvciIsImh0dHBTdGF0dXMiLCJCQURfUkVRVUVTVCIsImRvY3MiLCJ2ZXJzaW9uRG9jcyIsImRiIiwiZmluZFZlcnNpb25zIiwic2x1ZyIsImxpbWl0Iiwid2hlcmUiLCJlcXVhbHMiLCJyYXdWZXJzaW9uIiwiTm90Rm91bmQiLCJwYXJlbnREb2NJRCIsInBhcmVudCIsImFjY2Vzc1Jlc3VsdHMiLCJleGVjdXRlQWNjZXNzIiwiYWNjZXNzIiwidXBkYXRlIiwiaGFzV2hlcmVQb2xpY3kiLCJoYXNXaGVyZUFjY2Vzc1Jlc3VsdCIsImZpbmRPbmVBcmdzIiwiY29tYmluZVF1ZXJpZXMiLCJkb2MiLCJmaW5kT25lIiwiRm9yYmlkZGVuIiwicHJldkRvY1dpdGhMb2NhbGVzIiwiZ2V0TGF0ZXN0Q29sbGVjdGlvblZlcnNpb24iLCJxdWVyeSIsInJlc3VsdCIsInVwZGF0ZU9uZSIsImRhdGEiLCJ2ZXJzaW9uIiwicHJldlZlcnNpb24iLCJjcmVhdGVWZXJzaW9uIiwiYXV0b3NhdmUiLCJjb2xsZWN0aW9uU2x1ZyIsImNyZWF0ZWRBdCIsInVwZGF0ZWRBdCIsIkRhdGUiLCJ0b0lTT1N0cmluZyIsInZlcnNpb25EYXRhIiwiYWZ0ZXJSZWFkIiwiY29udGV4dCIsImdsb2JhbCIsImhvb2tzIiwicmVkdWNlIiwicHJpb3JIb29rIiwiaG9vayIsIlByb21pc2UiLCJyZXNvbHZlIiwiYWZ0ZXJDaGFuZ2UiLCJvcGVyYXRpb24iLCJwcmV2aW91c0RvYyIsImNvbW1pdFRyYW5zYWN0aW9uIiwidHJhbnNhY3Rpb25JRCIsImVycm9yIiwia2lsbFRyYW5zYWN0aW9uIl0sIm1hcHBpbmdzIjoiQUFBQSx1Q0FBdUM7Ozs7K0JBNk12Qzs7O2VBQUE7OzttRUE1TXVCO3NFQU1HO3VCQUNXO2dDQUNOO3dCQUNlOzZCQUNsQjsyQkFDRjtpQ0FDTTtpQ0FDQTs0Q0FDVzs7Ozs7O0FBYTNDLGVBQWVBLGVBQTJDQyxJQUFlO0lBQ3ZFLE1BQU0sRUFDSkMsRUFBRSxFQUNGQyxZQUFZLEVBQUVDLFFBQVFDLGdCQUFnQixFQUFFLEVBQ3hDQyxLQUFLLEVBQ0xDLGlCQUFpQixLQUFLLEVBQ3RCQyxHQUFHLEVBQ0hBLEtBQUssRUFBRUMsTUFBTSxFQUFFQyxPQUFPLEVBQUVDLENBQUMsRUFBRSxFQUMzQkMsZ0JBQWdCLEVBQ2pCLEdBQUdYO0lBRUosSUFBSTtRQUNGLE1BQU1ZLGVBQWUsTUFBTUMsSUFBQUEsZ0NBQWUsRUFBQ047UUFFM0MsSUFBSSxDQUFDTixJQUFJO1lB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
@@ -1 +1 @@
1
- {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../src/collections/operations/update.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAIhD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAA;AAE5C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACzD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,KAAK,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACtE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAqBhD,MAAM,MAAM,SAAS,CAAC,CAAC,SAAS,gBAAgB,IAAI;IAClD,UAAU,EAAE,UAAU,CAAA;IACtB,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,CAAA;IACpB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,wBAAwB,CAAC,EAAE,OAAO,CAAA;IAClC,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,sBAAsB,CAAC,EAAE,OAAO,CAAA;IAChC,GAAG,EAAE,cAAc,CAAA;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,KAAK,EAAE,KAAK,CAAA;CACb,CAAA;AAED,iBAAe,MAAM,CAAC,KAAK,SAAS,MAAM,cAAc,CAAC,aAAa,CAAC,EACrE,YAAY,EAAE,SAAS,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,CAAC,GAC5D,OAAO,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAiWrC;AAED,eAAe,MAAM,CAAA"}
1
+ {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../src/collections/operations/update.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAIhD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAA;AAE5C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACzD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,KAAK,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACtE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAqBhD,MAAM,MAAM,SAAS,CAAC,CAAC,SAAS,gBAAgB,IAAI;IAClD,UAAU,EAAE,UAAU,CAAA;IACtB,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,CAAA;IACpB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,wBAAwB,CAAC,EAAE,OAAO,CAAA;IAClC,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,sBAAsB,CAAC,EAAE,OAAO,CAAA;IAChC,GAAG,EAAE,cAAc,CAAA;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,KAAK,EAAE,KAAK,CAAA;CACb,CAAA;AAED,iBAAe,MAAM,CAAC,KAAK,SAAS,MAAM,cAAc,CAAC,aAAa,CAAC,EACrE,YAAY,EAAE,SAAS,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,CAAC,GAC5D,OAAO,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CA4WrC;AAED,eAAe,MAAM,CAAA"}
@@ -41,6 +41,7 @@ async function update(incomingArgs) {
41
41
  await priorHook;
42
42
  args = await hook({
43
43
  args,
44
+ collection: args.collection.config,
44
45
  context: args.req.context,
45
46
  operation: 'update'
46
47
  }) || args;
@@ -120,10 +121,11 @@ async function update(incomingArgs) {
120
121
  };
121
122
  try {
122
123
  const originalDoc = await (0, _afterRead.afterRead)({
124
+ collection: collectionConfig,
123
125
  context: req.context,
124
126
  depth: 0,
125
127
  doc,
126
- entityConfig: collectionConfig,
128
+ global: null,
127
129
  overrideAccess: true,
128
130
  req,
129
131
  showHiddenFields: true
@@ -141,10 +143,11 @@ async function update(incomingArgs) {
141
143
  // /////////////////////////////////////
142
144
  data = await (0, _beforeValidate.beforeValidate)({
143
145
  id,
146
+ collection: collectionConfig,
144
147
  context: req.context,
145
148
  data,
146
149
  doc: originalDoc,
147
- entityConfig: collectionConfig,
150
+ global: null,
148
151
  operation: 'update',
149
152
  overrideAccess,
150
153
  req
@@ -155,6 +158,7 @@ async function update(incomingArgs) {
155
158
  await collectionConfig.hooks.beforeValidate.reduce(async (priorHook, hook)=>{
156
159
  await priorHook;
157
160
  data = await hook({
161
+ collection: collectionConfig,
158
162
  context: req.context,
159
163
  data,
160
164
  operation: 'update',
@@ -174,6 +178,7 @@ async function update(incomingArgs) {
174
178
  await collectionConfig.hooks.beforeChange.reduce(async (priorHook, hook)=>{
175
179
  await priorHook;
176
180
  data = await hook({
181
+ collection: collectionConfig,
177
182
  context: req.context,
178
183
  data,
179
184
  operation: 'update',
@@ -186,11 +191,12 @@ async function update(incomingArgs) {
186
191
  // /////////////////////////////////////
187
192
  let result = await (0, _beforeChange.beforeChange)({
188
193
  id,
194
+ collection: collectionConfig,
189
195
  context: req.context,
190
196
  data,
191
197
  doc: originalDoc,
192
198
  docWithLocales: doc,
193
- entityConfig: collectionConfig,
199
+ global: null,
194
200
  operation: 'update',
195
201
  req,
196
202
  skipValidation: shouldSaveDraft || data._status === 'draft'
@@ -227,10 +233,11 @@ async function update(incomingArgs) {
227
233
  // afterRead - Fields
228
234
  // /////////////////////////////////////
229
235
  result = await (0, _afterRead.afterRead)({
236
+ collection: collectionConfig,
230
237
  context: req.context,
231
238
  depth,
232
239
  doc: result,
233
- entityConfig: collectionConfig,
240
+ global: null,
234
241
  overrideAccess,
235
242
  req,
236
243
  showHiddenFields
@@ -241,6 +248,7 @@ async function update(incomingArgs) {
241
248
  await collectionConfig.hooks.afterRead.reduce(async (priorHook, hook)=>{
242
249
  await priorHook;
243
250
  result = await hook({
251
+ collection: collectionConfig,
244
252
  context: req.context,
245
253
  doc: result,
246
254
  req
@@ -250,10 +258,11 @@ async function update(incomingArgs) {
250
258
  // afterChange - Fields
251
259
  // /////////////////////////////////////
252
260
  result = await (0, _afterChange.afterChange)({
261
+ collection: collectionConfig,
253
262
  context: req.context,
254
263
  data,
255
264
  doc: result,
256
- entityConfig: collectionConfig,
265
+ global: null,
257
266
  operation: 'update',
258
267
  previousDoc: originalDoc,
259
268
  req
@@ -264,6 +273,7 @@ async function update(incomingArgs) {
264
273
  await collectionConfig.hooks.afterChange.reduce(async (priorHook, hook)=>{
265
274
  await priorHook;
266
275
  result = await hook({
276
+ collection: collectionConfig,
267
277
  context: req.context,
268
278
  doc: result,
269
279
  operation: 'update',
@@ -298,6 +308,7 @@ async function update(incomingArgs) {
298
308
  // /////////////////////////////////////
299
309
  result = await (0, _utils.buildAfterOperation)({
300
310
  args,
311
+ collection: collectionConfig,
301
312
  operation: 'update',
302
313
  result
303
314
  });
@@ -310,4 +321,4 @@ async function update(incomingArgs) {
310
321
  }
311
322
  const _default = update;
312
323
 
313
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb2xsZWN0aW9ucy9vcGVyYXRpb25zL3VwZGF0ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IERlZXBQYXJ0aWFsIH0gZnJvbSAndHMtZXNzZW50aWFscydcblxuaW1wb3J0IGh0dHBTdGF0dXMgZnJvbSAnaHR0cC1zdGF0dXMnXG5cbmltcG9ydCB0eXBlIHsgR2VuZXJhdGVkVHlwZXMgfSBmcm9tICcuLi8uLi8nXG5pbXBvcnQgdHlwZSB7IEFjY2Vzc1Jlc3VsdCB9IGZyb20gJy4uLy4uL2NvbmZpZy90eXBlcydcbmltcG9ydCB0eXBlIHsgUGF5bG9hZFJlcXVlc3QgfSBmcm9tICcuLi8uLi9leHByZXNzL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBXaGVyZSB9IGZyb20gJy4uLy4uL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBCdWxrT3BlcmF0aW9uUmVzdWx0LCBDb2xsZWN0aW9uIH0gZnJvbSAnLi4vY29uZmlnL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBDcmVhdGVVcGRhdGVUeXBlIH0gZnJvbSAnLi9jcmVhdGUnXG5cbmltcG9ydCBleGVjdXRlQWNjZXNzIGZyb20gJy4uLy4uL2F1dGgvZXhlY3V0ZUFjY2VzcydcbmltcG9ydCB7IGNvbWJpbmVRdWVyaWVzIH0gZnJvbSAnLi4vLi4vZGF0YWJhc2UvY29tYmluZVF1ZXJpZXMnXG5pbXBvcnQgeyB2YWxpZGF0ZVF1ZXJ5UGF0aHMgfSBmcm9tICcuLi8uLi9kYXRhYmFzZS9xdWVyeVZhbGlkYXRpb24vdmFsaWRhdGVRdWVyeVBhdGhzJ1xuaW1wb3J0IHsgQVBJRXJyb3IgfSBmcm9tICcuLi8uLi9lcnJvcnMnXG5pbXBvcnQgeyBhZnRlckNoYW5nZSB9IGZyb20gJy4uLy4uL2ZpZWxkcy9ob29rcy9hZnRlckNoYW5nZSdcbmltcG9ydCB7IGFmdGVyUmVhZCB9IGZyb20gJy4uLy4uL2ZpZWxkcy9ob29rcy9hZnRlclJlYWQnXG5pbXBvcnQgeyBiZWZvcmVDaGFuZ2UgfSBmcm9tICcuLi8uLi9maWVsZHMvaG9va3MvYmVmb3JlQ2hhbmdlJ1xuaW1wb3J0IHsgYmVmb3JlVmFsaWRhdGUgfSBmcm9tICcuLi8uLi9maWVsZHMvaG9va3MvYmVmb3JlVmFsaWRhdGUnXG5pbXBvcnQgeyBkZWxldGVBc3NvY2lhdGVkRmlsZXMgfSBmcm9tICcuLi8uLi91cGxvYWRzL2RlbGV0ZUFzc29jaWF0ZWRGaWxlcydcbmltcG9ydCB7IGdlbmVyYXRlRmlsZURhdGEgfSBmcm9tICcuLi8uLi91cGxvYWRzL2dlbmVyYXRlRmlsZURhdGEnXG5pbXBvcnQgeyB1bmxpbmtUZW1wRmlsZXMgfSBmcm9tICcuLi8uLi91cGxvYWRzL3VubGlua1RlbXBGaWxlcydcbmltcG9ydCB7IHVwbG9hZEZpbGVzIH0gZnJvbSAnLi4vLi4vdXBsb2Fkcy91cGxvYWRGaWxlcydcbmltcG9ydCB7IGluaXRUcmFuc2FjdGlvbiB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9pbml0VHJhbnNhY3Rpb24nXG5pbXBvcnQgeyBraWxsVHJhbnNhY3Rpb24gfSBmcm9tICcuLi8uLi91dGlsaXRpZXMva2lsbFRyYW5zYWN0aW9uJ1xuaW1wb3J0IHsgYnVpbGRWZXJzaW9uQ29sbGVjdGlvbkZpZWxkcyB9IGZyb20gJy4uLy4uL3ZlcnNpb25zL2J1aWxkQ29sbGVjdGlvbkZpZWxkcydcbmltcG9ydCB7IGFwcGVuZFZlcnNpb25Ub1F1ZXJ5S2V5IH0gZnJvbSAnLi4vLi4vdmVyc2lvbnMvZHJhZnRzL2FwcGVuZFZlcnNpb25Ub1F1ZXJ5S2V5J1xuaW1wb3J0IHsgc2F2ZVZlcnNpb24gfSBmcm9tICcuLi8uLi92ZXJzaW9ucy9zYXZlVmVyc2lvbidcbmltcG9ydCB7IGJ1aWxkQWZ0ZXJPcGVyYXRpb24gfSBmcm9tICcuL3V0aWxzJ1xuXG5leHBvcnQgdHlwZSBBcmd1bWVudHM8VCBleHRlbmRzIENyZWF0ZVVwZGF0ZVR5cGU+ID0ge1xuICBjb2xsZWN0aW9uOiBDb2xsZWN0aW9uXG4gIGRhdGE6IERlZXBQYXJ0aWFsPFQ+XG4gIGRlcHRoPzogbnVtYmVyXG4gIGRpc2FibGVWZXJpZmljYXRpb25FbWFpbD86IGJvb2xlYW5cbiAgZHJhZnQ/OiBib29sZWFuXG4gIG92ZXJyaWRlQWNjZXNzPzogYm9vbGVhblxuICBvdmVyd3JpdGVFeGlzdGluZ0ZpbGVzPzogYm9vbGVhblxuICByZXE6IFBheWxvYWRSZXF1ZXN0XG4gIHNob3dIaWRkZW5GaWVsZHM/OiBib29sZWFuXG4gIHdoZXJlOiBXaGVyZVxufVxuXG5hc3luYyBmdW5jdGlvbiB1cGRhdGU8VFNsdWcgZXh0ZW5kcyBrZXlvZiBHZW5lcmF0ZWRUeXBlc1snY29sbGVjdGlvbnMnXT4oXG4gIGluY29taW5nQXJnczogQXJndW1lbnRzPEdlbmVyYXRlZFR5cGVzWydjb2xsZWN0aW9ucyddW1RTbHVnXT4sXG4pOiBQcm9taXNlPEJ1bGtPcGVyYXRpb25SZXN1bHQ8VFNsdWc+PiB7XG4gIGxldCBhcmdzID0gaW5jb21pbmdBcmdzXG5cbiAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAvLyBiZWZvcmVPcGVyYXRpb24gLSBDb2xsZWN0aW9uXG4gIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuICBhd2FpdCBhcmdzLmNvbGxlY3Rpb24uY29uZmlnLmhvb2tzLmJlZm9yZU9wZXJhdGlvbi5yZWR1Y2UoYXN5bmMgKHByaW9ySG9vaywgaG9vaykgPT4ge1xuICAgIGF3YWl0IHByaW9ySG9va1xuXG4gICAgYXJncyA9XG4gICAgICAoYXdhaXQgaG9vayh7XG4gICAgICAgIGFyZ3MsXG4gICAgICAgIGNvbnRleHQ6IGFyZ3MucmVxLmNvbnRleHQsXG4gICAgICAgIG9wZXJhdGlvbjogJ3VwZGF0ZScsXG4gICAgICB9KSkgfHwgYXJnc1xuICB9LCBQcm9taXNlLnJlc29sdmUoKSlcblxuICBjb25zdCB7XG4gICAgY29sbGVjdGlvbjogeyBjb25maWc6IGNvbGxlY3Rpb25Db25maWcgfSxcbiAgICBjb2xsZWN0aW9uLFxuICAgIGRlcHRoLFxuICAgIGRyYWZ0OiBkcmFmdEFyZyA9IGZhbHNlLFxuICAgIG92ZXJyaWRlQWNjZXNzLFxuICAgIG92ZXJ3cml0ZUV4aXN0aW5nRmlsZXMgPSBmYWxzZSxcbiAgICByZXE6IHtcbiAgICAgIGxvY2FsZSxcbiAgICAgIHBheWxvYWQ6IHsgY29uZmlnIH0sXG4gICAgICBwYXlsb2FkLFxuICAgICAgdCxcbiAgICB9LFxuICAgIHJlcSxcbiAgICBzaG93SGlkZGVuRmllbGRzLFxuICAgIHdoZXJlLFxuICB9ID0gYXJnc1xuXG4gIHRyeSB7XG4gICAgY29uc3Qgc2hvdWxkQ29tbWl0ID0gYXdhaXQgaW5pdFRyYW5zYWN0aW9uKHJlcSlcblxuICAgIGlmICghd2hlcmUpIHtcbiAgICAgIHRocm93IG5ldyBBUElFcnJvcihcIk1pc3NpbmcgJ3doZXJlJyBxdWVyeSBvZiBkb2N1bWVudHMgdG8gdXBkYXRlLlwiLCBodHRwU3RhdHVzLkJBRF9SRVFVRVNUKVxuICAgIH1cblxuICAgIGNvbnN0IHsgZGF0YTogYnVsa1VwZGF0ZURhdGEgfSA9IGFyZ3NcbiAgICBjb25zdCBzaG91bGRTYXZlRHJhZnQgPSBCb29sZWFuKGRyYWZ0QXJnICYmIGNvbGxlY3Rpb25Db25maWcudmVyc2lvbnMuZHJhZnRzKVxuXG4gICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIC8vIEFjY2Vzc1xuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuICAgIGxldCBhY2Nlc3NSZXN1bHQ6IEFjY2Vzc1Jlc3VsdFxuICAgIGlmICghb3ZlcnJpZGVBY2Nlc3MpIHtcbiAgICAgIGFjY2Vzc1Jlc3VsdCA9IGF3YWl0IGV4ZWN1dGVBY2Nlc3MoeyByZXEgfSwgY29sbGVjdGlvbkNvbmZpZy5hY2Nlc3MudXBkYXRlKVxuICAgIH1cblxuICAgIGF3YWl0IHZhbGlkYXRlUXVlcnlQYXRocyh7XG4gICAgICBjb2xsZWN0aW9uQ29uZmlnLFxuICAgICAgb3ZlcnJpZGVBY2Nlc3MsXG4gICAgICByZXEsXG4gICAgICB3aGVyZSxcbiAgICB9KVxuXG4gICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIC8vIFJldHJpZXZlIGRvY3VtZW50c1xuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuICAgIGNvbnN0IGZ1bGxXaGVyZSA9IGNvbWJpbmVRdWVyaWVzKHdoZXJlLCBhY2Nlc3NSZXN1bHQpXG5cbiAgICBsZXQgZG9jc1xuXG4gICAgaWYgKGNvbGxlY3Rpb25Db25maWcudmVyc2lvbnM/LmRyYWZ0cyAmJiBzaG91bGRTYXZlRHJhZnQpIHtcbiAgICAgIGNvbnN0IHZlcnNpb25zV2hlcmUgPSBhcHBlbmRWZXJzaW9uVG9RdWVyeUtleShmdWxsV2hlcmUpXG5cbiAgICAgIGF3YWl0IHZhbGlkYXRlUXVlcnlQYXRocyh7XG4gICAgICAgIGNvbGxlY3Rpb25Db25maWc6IGNvbGxlY3Rpb24uY29uZmlnLFxuICAgICAgICBvdmVycmlkZUFjY2VzcyxcbiAgICAgICAgcmVxLFxuICAgICAgICB2ZXJzaW9uRmllbGRzOiBidWlsZFZlcnNpb25Db2xsZWN0aW9uRmllbGRzKGNvbGxlY3Rpb24uY29uZmlnKSxcbiAgICAgICAgd2hlcmU6IHZlcnNpb25zV2hlcmUsXG4gICAgICB9KVxuXG4gICAgICBjb25zdCBxdWVyeSA9IGF3YWl0IHBheWxvYWQuZGIucXVlcnlEcmFmdHM8R2VuZXJhdGVkVHlwZXNbJ2NvbGxlY3Rpb25zJ11bVFNsdWddPih7XG4gICAgICAgIGNvbGxlY3Rpb246IGNvbGxlY3Rpb25Db25maWcuc2x1ZyxcbiAgICAgICAgbG9jYWxlLFxuICAgICAgICByZXEsXG4gICAgICAgIHdoZXJlOiB2ZXJzaW9uc1doZXJlLFxuICAgICAgfSlcblxuICAgICAgZG9jcyA9IHF1ZXJ5LmRvY3NcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgcXVlcnkgPSBhd2FpdCBwYXlsb2FkLmRiLmZpbmQoe1xuICAgICAgICBjb2xsZWN0aW9uOiBjb2xsZWN0aW9uQ29uZmlnLnNsdWcsXG4gICAgICAgIGxpbWl0OiAwLFxuICAgICAgICBsb2NhbGUsXG4gICAgICAgIHBhZ2luYXRpb246IGZhbHNlLFxuICAgICAgICByZXEsXG4gICAgICAgIHdoZXJlOiBmdWxsV2hlcmUsXG4gICAgICB9KVxuXG4gICAgICBkb2NzID0gcXVlcnkuZG9jc1xuICAgIH1cblxuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICAvLyBHZW5lcmF0ZSBkYXRhIGZvciBhbGwgZmlsZXMgYW5kIHNpemVzXG4gICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4gICAgY29uc3QgeyBkYXRhOiBuZXdGaWxlRGF0YSwgZmlsZXM6IGZpbGVzVG9VcGxvYWQgfSA9IGF3YWl0IGdlbmVyYXRlRmlsZURhdGEoe1xuICAgICAgY29sbGVjdGlvbixcbiAgICAgIGNvbmZpZyxcbiAgICAgIGRhdGE6IGJ1bGtVcGRhdGVEYXRhLFxuICAgICAgb3ZlcndyaXRlRXhpc3RpbmdGaWxlcyxcbiAgICAgIHJlcSxcbiAgICAgIHRocm93T25NaXNzaW5nRmlsZTogZmFsc2UsXG4gICAgfSlcblxuICAgIGNvbnN0IGVycm9ycyA9IFtdXG5cbiAgICBjb25zdCBwcm9taXNlcyA9IGRvY3MubWFwKGFzeW5jIChkb2MpID0+IHtcbiAgICAgIGNvbnN0IHsgaWQgfSA9IGRvY1xuICAgICAgbGV0IGRhdGEgPSB7XG4gICAgICAgIC4uLm5ld0ZpbGVEYXRhLFxuICAgICAgICAuLi5idWxrVXBkYXRlRGF0YSxcbiAgICAgIH1cblxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxEb2MgPSBhd2FpdCBhZnRlclJlYWQoe1xuICAgICAgICAgIGNvbnRleHQ6IHJlcS5jb250ZXh0LFxuICAgICAgICAgIGRlcHRoOiAwLFxuICAgICAgICAgIGRvYyxcbiAgICAgICAgICBlbnRpdHlDb25maWc6IGNvbGxlY3Rpb25Db25maWcsXG4gICAgICAgICAgb3ZlcnJpZGVBY2Nlc3M6IHRydWUsXG4gICAgICAgICAgcmVxLFxuICAgICAgICAgIHNob3dIaWRkZW5GaWVsZHM6IHRydWUsXG4gICAgICAgIH0pXG5cbiAgICAgICAgYXdhaXQgZGVsZXRlQXNzb2NpYXRlZEZpbGVzKHtcbiAgICAgICAgICBjb2xsZWN0aW9uQ29uZmlnLFxuICAgICAgICAgIGNvbmZpZyxcbiAgICAgICAgICBkb2MsXG4gICAgICAgICAgZmlsZXM6IGZpbGVzVG9VcGxvYWQsXG4gICAgICAgICAgb3ZlcnJpZGVEZWxldGU6IGZhbHNlLFxuICAgICAgICAgIHQsXG4gICAgICAgIH0pXG5cbiAgICAgICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgICAgICAvLyBiZWZvcmVWYWxpZGF0ZSAtIEZpZWxkc1xuICAgICAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbiAgICAgICAgZGF0YSA9IGF3YWl0IGJlZm9yZVZhbGlkYXRlPERlZXBQYXJ0aWFsPEdlbmVyYXRlZFR5cGVzWydjb2xsZWN0aW9ucyddW1RTbHVnXT4+KHtcbiAgICAgICAgICBpZCxcbiAgICAgICAgICBjb250ZXh0OiByZXEuY29udGV4dCxcbiAgICAgICAgICBkYXRhLFxuICAgICAgICAgIGRvYzogb3JpZ2luYWxEb2MsXG4gICAgICAgICAgZW50aXR5Q29uZmlnOiBjb2xsZWN0aW9uQ29uZmlnLFxuICAgICAgICAgIG9wZXJhdGlvbjogJ3VwZGF0ZScsXG4gICAgICAgICAgb3ZlcnJpZGVBY2Nlc3MsXG4gICAgICAgICAgcmVxLFxuICAgICAgICB9KVxuXG4gICAgICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICAgICAgLy8gYmVmb3JlVmFsaWRhdGUgLSBDb2xsZWN0aW9uXG4gICAgICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuICAgICAgICBhd2FpdCBjb2xsZWN0aW9uQ29uZmlnLmhvb2tzLmJlZm9yZVZhbGlkYXRlLnJlZHVjZShhc3luYyAocHJpb3JIb29rLCBob29rKSA9PiB7XG4gICAgICAgICAgYXdhaXQgcHJpb3JIb29rXG5cbiAgICAgICAgICBkYXRhID1cbiAgICAgICAgICAgIChhd2FpdCBob29rKHtcbiAgICAgICAgICAgICAgY29udGV4dDogcmVxLmNvbnRleHQsXG4gICAgICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgICAgIG9wZXJhdGlvbjogJ3VwZGF0ZScsXG4gICAgICAgICAgICAgIG9yaWdpbmFsRG9jLFxuICAgICAgICAgICAgICByZXEsXG4gICAgICAgICAgICB9KSkgfHwgZGF0YVxuICAgICAgICB9LCBQcm9taXNlLnJlc29sdmUoKSlcblxuICAgICAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgICAgIC8vIFdyaXRlIGZpbGVzIHRvIGxvY2FsIHN0b3JhZ2VcbiAgICAgICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4gICAgICAgIGlmICghY29sbGVjdGlvbkNvbmZpZy51cGxvYWQuZGlzYWJsZUxvY2FsU3RvcmFnZSkge1xuICAgICAgICAgIGF3YWl0IHVwbG9hZEZpbGVzKHBheWxvYWQsIGZpbGVzVG9VcGxvYWQsIHQpXG4gICAgICAgIH1cblxuICAgICAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgICAgIC8vIGJlZm9yZUNoYW5nZSAtIENvbGxlY3Rpb25cbiAgICAgICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4gICAgICAgIGF3YWl0IGNvbGxlY3Rpb25Db25maWcuaG9va3MuYmVmb3JlQ2hhbmdlLnJlZHVjZShhc3luYyAocHJpb3JIb29rLCBob29rKSA9PiB7XG4gICAgICAgICAgYXdhaXQgcHJpb3JIb29rXG5cbiAgICAgICAgICBkYXRhID1cbiAgICAgICAgICAgIChhd2FpdCBob29rKHtcbiAgICAgICAgICAgICAgY29udGV4dDogcmVxLmNvbnRleHQsXG4gICAgICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgICAgIG9wZXJhdGlvbjogJ3VwZGF0ZScsXG4gICAgICAgICAgICAgIG9yaWdpbmFsRG9jLFxuICAgICAgICAgICAgICByZXEsXG4gICAgICAgICAgICB9KSkgfHwgZGF0YVxuICAgICAgICB9LCBQcm9taXNlLnJlc29sdmUoKSlcblxuICAgICAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgICAgIC8vIGJlZm9yZUNoYW5nZSAtIEZpZWxkc1xuICAgICAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbiAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IGJlZm9yZUNoYW5nZTxHZW5lcmF0ZWRUeXBlc1snY29sbGVjdGlvbnMnXVtUU2x1Z10+KHtcbiAgICAgICAgICBpZCxcbiAgICAgICAgICBjb250ZXh0OiByZXEuY29udGV4dCxcbiAgICAgICAgICBkYXRhLFxuICAgICAgICAgIGRvYzogb3JpZ2luYWxEb2MsXG4gICAgICAgICAgZG9jV2l0aExvY2FsZXM6IGRvYyxcbiAgICAgICAgICBlbnRpdHlDb25maWc6IGNvbGxlY3Rpb25Db25maWcsXG4gICAgICAgICAgb3BlcmF0aW9uOiAndXBkYXRlJyxcbiAgICAgICAgICByZXEsXG4gICAgICAgICAgc2tpcFZhbGlkYXRpb246IHNob3VsZFNhdmVEcmFmdCB8fCBkYXRhLl9zdGF0dXMgPT09ICdkcmFmdCcsXG4gICAgICAgIH0pXG5cbiAgICAgICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgICAgICAvLyBVcGRhdGVcbiAgICAgICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4gICAgICAgIGlmICghc2hvdWxkU2F2ZURyYWZ0KSB7XG4gICAgICAgICAgcmVzdWx0ID0gYXdhaXQgcmVxLnBheWxvYWQuZGIudXBkYXRlT25lKHtcbiAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgY29sbGVjdGlvbjogY29sbGVjdGlvbkNvbmZpZy5zbHVnLFxuICAgICAgICAgICAgZGF0YTogcmVzdWx0LFxuICAgICAgICAgICAgbG9jYWxlLFxuICAgICAgICAgICAgcmVxLFxuICAgICAgICAgIH0pXG4gICAgICAgIH1cblxuICAgICAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgICAgIC8vIENyZWF0ZSB2ZXJzaW9uXG4gICAgICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuICAgICAgICBpZiAoY29sbGVjdGlvbkNvbmZpZy52ZXJzaW9ucykge1xuICAgICAgICAgIHJlc3VsdCA9IGF3YWl0IHNhdmVWZXJzaW9uKHtcbiAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgY29sbGVjdGlvbjogY29sbGVjdGlvbkNvbmZpZyxcbiAgICAgICAgICAgIGRvY1dpdGhMb2NhbGVzOiB7XG4gICAgICAgICAgICAgIC4uLnJlc3VsdCxcbiAgICAgICAgICAgICAgY3JlYXRlZEF0OiBkb2MuY3JlYXRlZEF0LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGRyYWZ0OiBzaG91bGRTYXZlRHJhZnQsXG4gICAgICAgICAgICBwYXlsb2FkLFxuICAgICAgICAgICAgcmVxLFxuICAgICAgICAgIH0pXG4gICAgICAgIH1cblxuICAgICAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgICAgIC8vIGFmdGVyUmVhZCAtIEZpZWxkc1xuICAgICAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbiAgICAgICAgcmVzdWx0ID0gYXdhaXQgYWZ0ZXJSZWFkKHtcbiAgICAgICAgICBjb250ZXh0OiByZXEuY29udGV4dCxcbiAgICAgICAgICBkZXB0aCxcbiAgICAgICAgICBkb2M6IHJlc3VsdCxcbiAgICAgICAgICBlbnRpdHlDb25maWc6IGNvbGxlY3Rpb25Db25maWcsXG4gICAgICAgICAgb3ZlcnJpZGVBY2Nlc3MsXG4gICAgICAgICAgcmVxLFxuICAgICAgICAgIHNob3dIaWRkZW5GaWVsZHMsXG4gICAgICAgIH0pXG5cbiAgICAgICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgICAgICAvLyBhZnRlclJlYWQgLSBDb2xsZWN0aW9uXG4gICAgICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuICAgICAgICBhd2FpdCBjb2xsZWN0aW9uQ29uZmlnLmhvb2tzLmFmdGVyUmVhZC5yZWR1Y2UoYXN5bmMgKHByaW9ySG9vaywgaG9vaykgPT4ge1xuICAgICAgICAgIGF3YWl0IHByaW9ySG9va1xuXG4gICAgICAgICAgcmVzdWx0ID1cbiAgICAgICAgICAgIChhd2FpdCBob29rKHtcbiAgICAgICAgICAgICAgY29udGV4dDogcmVxLmNvbnRleHQsXG4gICAgICAgICAgICAgIGRvYzogcmVzdWx0LFxuICAgICAgICAgICAgICByZXEsXG4gICAgICAgICAgICB9KSkgfHwgcmVzdWx0XG4gICAgICAgIH0sIFByb21pc2UucmVzb2x2ZSgpKVxuXG4gICAgICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICAgICAgLy8gYWZ0ZXJDaGFuZ2UgLSBGaWVsZHNcbiAgICAgICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4gICAgICAgIHJlc3VsdCA9IGF3YWl0IGFmdGVyQ2hhbmdlPEdlbmVyYXRlZFR5cGVzWydjb2xsZWN0aW9ucyddW1RTbHVnXT4oe1xuICAgICAgICAgIGNvbnRleHQ6IHJlcS5jb250ZXh0LFxuICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgZG9jOiByZXN1bHQsXG4gICAgICAgICAgZW50aXR5Q29uZmlnOiBjb2xsZWN0aW9uQ29uZmlnLFxuICAgICAgICAgIG9wZXJhdGlvbjogJ3VwZGF0ZScsXG4gICAgICAgICAgcHJldmlvdXNEb2M6IG9yaWdpbmFsRG9jLFxuICAgICAgICAgIHJlcSxcbiAgICAgICAgfSlcblxuICAgICAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgICAgIC8vIGFmdGVyQ2hhbmdlIC0gQ29sbGVjdGlvblxuICAgICAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbiAgICAgICAgYXdhaXQgY29sbGVjdGlvbkNvbmZpZy5ob29rcy5hZnRlckNoYW5nZS5yZWR1Y2UoYXN5bmMgKHByaW9ySG9vaywgaG9vaykgPT4ge1xuICAgICAgICAgIGF3YWl0IHByaW9ySG9va1xuXG4gICAgICAgICAgcmVzdWx0ID1cbiAgICAgICAgICAgIChhd2FpdCBob29rKHtcbiAgICAgICAgICAgICAgY29udGV4dDogcmVxLmNvbnRleHQsXG4gICAgICAgICAgICAgIGRvYzogcmVzdWx0LFxuICAgICAgICAgICAgICBvcGVyYXRpb246ICd1cGRhdGUnLFxuICAgICAgICAgICAgICBwcmV2aW91c0RvYzogb3JpZ2luYWxEb2MsXG4gICAgICAgICAgICAgIHJlcSxcbiAgICAgICAgICAgIH0pKSB8fCByZXN1bHRcbiAgICAgICAgfSwgUHJvbWlzZS5yZXNvbHZlKCkpXG5cbiAgICAgICAgYXdhaXQgdW5saW5rVGVtcEZpbGVzKHtcbiAgICAgICAgICBjb2xsZWN0aW9uQ29uZmlnLFxuICAgICAgICAgIGNvbmZpZyxcbiAgICAgICAgICByZXEsXG4gICAgICAgIH0pXG5cbiAgICAgICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgICAgICAvLyBSZXR1cm4gcmVzdWx0c1xuICAgICAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdFxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgZXJyb3JzLnB1c2goe1xuICAgICAgICAgIGlkLFxuICAgICAgICAgIG1lc3NhZ2U6IGVycm9yLm1lc3NhZ2UsXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH0pXG5cbiAgICBjb25zdCBhd2FpdGVkRG9jcyA9IGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKVxuXG4gICAgbGV0IHJlc3VsdCA9IHtcbiAgICAgIGRvY3M6IGF3YWl0ZWREb2NzLmZpbHRlcihCb29sZWFuKSxcbiAgICAgIGVycm9ycyxcbiAgICB9XG5cbiAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgLy8gYWZ0ZXJPcGVyYXRpb24gLSBDb2xsZWN0aW9uXG4gICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4gICAgcmVzdWx0ID0gYXdhaXQgYnVpbGRBZnRlck9wZXJhdGlvbjxHZW5lcmF0ZWRUeXBlc1snY29sbGVjdGlvbnMnXVtUU2x1Z10+KHtcbiAgICAgIGFyZ3MsXG4gICAgICBvcGVyYXRpb246ICd1cGRhdGUnLFxuICAgICAgcmVzdWx0LFxuICAgIH0pXG5cbiAgICBpZiAoc2hvdWxkQ29tbWl0KSBhd2FpdCBwYXlsb2FkLmRiLmNvbW1pdFRyYW5zYWN0aW9uKHJlcS50cmFuc2FjdGlvbklEKVxuXG4gICAgcmV0dXJuIHJlc3VsdFxuICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgIGF3YWl0IGtpbGxUcmFuc2FjdGlvbihyZXEpXG4gICAgdGhyb3cgZXJyb3JcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCB1cGRhdGVcbiJdLCJuYW1lcyI6WyJ1cGRhdGUiLCJpbmNvbWluZ0FyZ3MiLCJhcmdzIiwiY29sbGVjdGlvbiIsImNvbmZpZyIsImhvb2tzIiwiYmVmb3JlT3BlcmF0aW9uIiwicmVkdWNlIiwicHJpb3JIb29rIiwiaG9vayIsImNvbnRleHQiLCJyZXEiLCJvcGVyYXRpb24iLCJQcm9taXNlIiwicmVzb2x2ZSIsImNvbGxlY3Rpb25Db25maWciLCJkZXB0aCIsImRyYWZ0IiwiZHJhZnRBcmciLCJvdmVycmlkZUFjY2VzcyIsIm92ZXJ3cml0ZUV4aXN0aW5nRmlsZXMiLCJsb2NhbGUiLCJwYXlsb2FkIiwidCIsInNob3dIaWRkZW5GaWVsZHMiLCJ3aGVyZSIsInNob3VsZENvbW1pdCIsImluaXRUcmFuc2FjdGlvbiIsIkFQSUVycm9yIiwiaHR0cFN0YXR1cyIsIkJBRF9SRVFVRVNUIiwiZGF0YSIsImJ1bGtVcGRhdGVEYXRhIiwic2hvdWxkU2F2ZURyYWZ0IiwiQm9vbGVhbiIsInZlcnNpb25zIiwiZHJhZnRzIiwiYWNjZXNzUmVzdWx0IiwiZXhlY3V0ZUFjY2VzcyIsImFjY2VzcyIsInZhbGlkYXRlUXVlcnlQYXRocyIsImZ1bGxXaGVyZSIsImNvbWJpbmVRdWVyaWVzIiwiZG9jcyIsInZlcnNpb25zV2hlcmUiLCJhcHBlbmRWZXJzaW9uVG9RdWVyeUtleSIsInZlcnNpb25GaWVsZHMiLCJidWlsZFZlcnNpb25Db2xsZWN0aW9uRmllbGRzIiwicXVlcnkiLCJkYiIsInF1ZXJ5RHJhZnRzIiwic2x1ZyIsImZpbmQiLCJsaW1pdCIsInBhZ2luYXRpb24iLCJuZXdGaWxlRGF0YSIsImZpbGVzIiwiZmlsZXNUb1VwbG9hZCIsImdlbmVyYXRlRmlsZURhdGEiLCJ0aHJvd09uTWlzc2luZ0ZpbGUiLCJlcnJvcnMiLCJwcm9taXNlcyIsIm1hcCIsImRvYyIsImlkIiwib3JpZ2luYWxEb2MiLCJhZnRlclJlYWQiLCJlbnRpdHlDb25maWciLCJkZWxldGVBc3NvY2lhdGVkRmlsZXMiLCJvdmVycmlkZURlbGV0ZSIsImJlZm9yZVZhbGlkYXRlIiwidXBsb2FkIiwiZGlzYWJsZUxvY2FsU3RvcmFnZSIsInVwbG9hZEZpbGVzIiwiYmVmb3JlQ2hhbmdlIiwicmVzdWx0IiwiZG9jV2l0aExvY2FsZXMiLCJza2lwVmFsaWRhdGlvbiIsIl9zdGF0dXMiLCJ1cGRhdGVPbmUiLCJzYXZlVmVyc2lvbiIsImNyZWF0ZWRBdCIsImFmdGVyQ2hhbmdlIiwicHJldmlvdXNEb2MiLCJ1bmxpbmtUZW1wRmlsZXMiLCJlcnJvciIsInB1c2giLCJtZXNzYWdlIiwiYXdhaXRlZERvY3MiLCJhbGwiLCJmaWx0ZXIiLCJidWlsZEFmdGVyT3BlcmF0aW9uIiwiY29tbWl0VHJhbnNhY3Rpb24iLCJ0cmFuc2FjdGlvbklEIiwia2lsbFRyYW5zYWN0aW9uIl0sIm1hcHBpbmdzIjoiOzs7OytCQWdaQTs7O2VBQUE7OzttRUE5WXVCO3NFQVNHO2dDQUNLO29DQUNJO3dCQUNWOzZCQUNHOzJCQUNGOzhCQUNHO2dDQUNFO3VDQUNPO2tDQUNMO2lDQUNEOzZCQUNKO2lDQUNJO2lDQUNBO3VDQUNhO3lDQUNMOzZCQUNaO3VCQUNROzs7Ozs7QUFlcEMsZUFBZUEsT0FDYkMsWUFBNkQ7SUFFN0QsSUFBSUMsT0FBT0Q7SUFFWCx3Q0FBd0M7SUFDeEMsK0JBQStCO0lBQy9CLHdDQUF3QztJQUV4QyxNQUFNQyxLQUFLQyxVQUFVLENBQUNDLE1BQU0sQ0FBQ0MsS0FBSyxDQUFDQyxlQUFlLENBQUNDLE1BQU0sQ0FBQyxPQUFPQyxXQUFXQztRQUMxRSxNQUFNRDtRQUVOTixPQUNFLEFBQUMsTUFBTU8sS0FBSztZQUNWUDtZQUNBUSxTQUFTUixLQUFLUyxHQUFHLENBQUNELE9BQU87WUFDekJFLFdBQVc7UUFDYixNQUFPVjtJQUNYLEdBQUdXLFFBQVFDLE9BQU87SUFFbEIsTUFBTSxFQUNKWCxZQUFZLEVBQUVDLFFBQVFXLGdCQUFnQixFQUFFLEVBQ3hDWixVQUFVLEVBQ1ZhLEtBQUssRUFDTEMsT0FBT0MsV0FBVyxLQUFLLEVBQ3ZCQyxjQUFjLEVBQ2RDLHlCQUF5QixLQUFLLEVBQzlCVCxLQUFLLEVBQ0hVLE1BQU0sRUFDTkMsU0FBUyxFQUFFbEIsTUFBTSxFQUFFLEVBQ25Ca0IsT0FBTyxFQUNQQyxDQUFDLEVBQ0YsRUFDRFosR0FBRyxFQUNIYSxnQkFBZ0IsRUFDaEJDLEtBQUssRUFDTixHQUFHdkI7SUFFSixJQUFJO1FBQ0YsTUFBTXdCLGVBQWUsTUFBTUMsSUFBQUEsZ0NBQWUsRUFBQ2hCO1FBRTNDLElBQUksQ0FBQ2MsT0FBTztZQUNWLE1BQU0sSUFBSUcsZ0JBQVEsQ0FBQyxpREFBaURDLG1CQUFVLENBQUNDLFdBQVc7UUFDNUY7UUFFQSxNQUFNLEVBQUVDLE1BQU1DLGNBQWMsRUFBRSxHQUFHOUI7UUFDakMsTUFBTStCLGtCQUFrQkMsUUFBUWhCLFlBQVlILGlCQUFpQm9CLFFBQVEsQ0FBQ0MsTUFBTTtRQUU1RSx3Q0FBd0M7UUFDeEMsU0FBUztRQUNULHdDQUF3QztRQUV4QyxJQUFJQztRQUNKLElBQUksQ0FBQ2xCLGdCQUFnQjtZQUNuQmtCLGVBQWUsTUFBTUMsSUFBQUEsc0JBQWEsRUFBQztnQkFBRTNCO1lBQUksR0FBR0ksaUJBQWlCd0IsTUFBTSxDQUFDdkMsTUFBTTtRQUM1RTtRQUVBLE1BQU13QyxJQUFBQSxzQ0FBa0IsRUFBQztZQUN2QnpCO1lBQ0FJO1lBQ0FSO1lBQ0FjO1FBQ0Y7UUFFQSx3Q0FBd0M7UUFDeEMscUJBQXFCO1FBQ3JCLHdDQUF3QztRQUV4QyxNQUFNZ0IsWUFBWUMsSUFBQUEsOEJBQWMsRUFBQ2pCLE9BQU9ZO1FBRXhDLElBQUlNO1FBRUosSUFBSTVCLGlCQUFpQm9CLFFBQVEsRUFBRUMsVUFBVUgsaUJBQWlCO1lBQ3hELE1BQU1XLGdCQUFnQkMsSUFBQUEsZ0RBQXVCLEVBQUNKO1lBRTlDLE1BQU1ELElBQUFBLHNDQUFrQixFQUFDO2dCQUN2QnpCLGtCQUFrQlosV0FBV0MsTUFBTTtnQkFDbkNlO2dCQUNBUjtnQkFDQW1DLGVBQWVDLElBQUFBLG1EQUE0QixFQUFDNUMsV0FBV0MsTUFBTTtnQkFDN0RxQixPQUFPbUI7WUFDVDtZQUVBLE1BQU1JLFFBQVEsTUFBTTFCLFFBQVEyQixFQUFFLENBQUNDLFdBQVcsQ0FBdUM7Z0JBQy9FL0MsWUFBWVksaUJBQWlCb0MsSUFBSTtnQkFDakM5QjtnQkFDQVY7Z0JBQ0FjLE9BQU9tQjtZQUNUO1lBRUFELE9BQU9LLE1BQU1MLElBQUk7UUFDbkIsT0FBTztZQUNMLE1BQU1LLFFBQVEsTUFBTTFCLFFBQVEyQixFQUFFLENBQUNHLElBQUksQ0FBQztnQkFDbENqRCxZQUFZWSxpQkFBaUJvQyxJQUFJO2dCQUNqQ0UsT0FBTztnQkFDUGhDO2dCQUNBaUMsWUFBWTtnQkFDWjNDO2dCQUNBYyxPQUFPZ0I7WUFDVDtZQUVBRSxPQUFPSyxNQUFNTCxJQUFJO1FBQ25CO1FBRUEsd0NBQXdDO1FBQ3hDLHdDQUF3QztRQUN4Qyx3Q0FBd0M7UUFFeEMsTUFBTSxFQUFFWixNQUFNd0IsV0FBVyxFQUFFQyxPQUFPQyxhQUFhLEVBQUUsR0FBRyxNQUFNQyxJQUFBQSxrQ0FBZ0IsRUFBQztZQUN6RXZEO1lBQ0FDO1lBQ0EyQixNQUFNQztZQUNOWjtZQUNBVDtZQUNBZ0Qsb0JBQW9CO1FBQ3RCO1FBRUEsTUFBTUMsU0FBUyxFQUFFO1FBRWpCLE1BQU1DLFdBQVdsQixLQUFLbUIsR0FBRyxDQUFDLE9BQU9DO1lBQy9CLE1BQU0sRUFBRUMsRUFBRSxFQUFFLEdBQUdEO1lBQ2YsSUFBSWhDLE9BQU87Z0JBQ1QsR0FBR3dCLFdBQVc7Z0JBQ2QsR0FBR3ZCLGNBQWM7WUFDbkI7WUFFQSxJQUFJO2dCQUNGLE1BQU1pQyxjQUFjLE1BQU1DLElBQUFBLG9CQUFTLEVBQUM7b0JBQ2xDeEQsU0FBU0MsSUFBSUQsT0FBTztvQkFDcEJNLE9BQU87b0JBQ1ArQztvQkFDQUksY0FBY3BEO29CQUNkSSxnQkFBZ0I7b0JBQ2hCUjtvQkFDQWEsa0JBQWtCO2dCQUNwQjtnQkFFQSxNQUFNNEMsSUFBQUEsNENBQXFCLEVBQUM7b0JBQzFCckQ7b0JBQ0FYO29CQUNBMkQ7b0JBQ0FQLE9BQU9DO29CQUNQWSxnQkFBZ0I7b0JBQ2hCOUM7Z0JBQ0Y7Z0JBRUEsd0NBQXdDO2dCQUN4QywwQkFBMEI7Z0JBQzFCLHdDQUF3QztnQkFFeENRLE9BQU8sTUFBTXVDLElBQUFBLDhCQUFjLEVBQW9EO29CQUM3RU47b0JBQ0F0RCxTQUFTQyxJQUFJRCxPQUFPO29CQUNwQnFCO29CQUNBZ0MsS0FBS0U7b0JBQ0xFLGNBQWNwRDtvQkFDZEgsV0FBVztvQkFDWE87b0JBQ0FSO2dCQUNGO2dCQUVBLHdDQUF3QztnQkFDeEMsOEJBQThCO2dCQUM5Qix3Q0FBd0M7Z0JBRXhDLE1BQU1JLGlCQUFpQlYsS0FBSyxDQUFDaUUsY0FBYyxDQUFDL0QsTUFBTSxDQUFDLE9BQU9DLFdBQVdDO29CQUNuRSxNQUFNRDtvQkFFTnVCLE9BQ0UsQUFBQyxNQUFNdEIsS0FBSzt3QkFDVkMsU0FBU0MsSUFBSUQsT0FBTzt3QkFDcEJxQjt3QkFDQW5CLFdBQVc7d0JBQ1hxRDt3QkFDQXREO29CQUNGLE1BQU9vQjtnQkFDWCxHQUFHbEIsUUFBUUMsT0FBTztnQkFFbEIsd0NBQXdDO2dCQUN4QywrQkFBK0I7Z0JBQy9CLHdDQUF3QztnQkFFeEMsSUFBSSxDQUFDQyxpQkFBaUJ3RCxNQUFNLENBQUNDLG1CQUFtQixFQUFFO29CQUNoRCxNQUFNQyxJQUFBQSx3QkFBVyxFQUFDbkQsU0FBU21DLGVBQWVsQztnQkFDNUM7Z0JBRUEsd0NBQXdDO2dCQUN4Qyw0QkFBNEI7Z0JBQzVCLHdDQUF3QztnQkFFeEMsTUFBTVIsaUJBQWlCVixLQUFLLENBQUNxRSxZQUFZLENBQUNuRSxNQUFNLENBQUMsT0FBT0MsV0FBV0M7b0JBQ2pFLE1BQU1EO29CQUVOdUIsT0FDRSxBQUFDLE1BQU10QixLQUFLO3dCQUNWQyxTQUFTQyxJQUFJRCxPQUFPO3dCQUNwQnFCO3dCQUNBbkIsV0FBVzt3QkFDWHFEO3dCQUNBdEQ7b0JBQ0YsTUFBT29CO2dCQUNYLEdBQUdsQixRQUFRQyxPQUFPO2dCQUVsQix3Q0FBd0M7Z0JBQ3hDLHdCQUF3QjtnQkFDeEIsd0NBQXdDO2dCQUV4QyxJQUFJNkQsU0FBUyxNQUFNRCxJQUFBQSwwQkFBWSxFQUF1QztvQkFDcEVWO29CQUNBdEQsU0FBU0MsSUFBSUQsT0FBTztvQkFDcEJxQjtvQkFDQWdDLEtBQUtFO29CQUNMVyxnQkFBZ0JiO29CQUNoQkksY0FBY3BEO29CQUNkSCxXQUFXO29CQUNYRDtvQkFDQWtFLGdCQUFnQjVDLG1CQUFtQkYsS0FBSytDLE9BQU8sS0FBSztnQkFDdEQ7Z0JBRUEsd0NBQXdDO2dCQUN4QyxTQUFTO2dCQUNULHdDQUF3QztnQkFFeEMsSUFBSSxDQUFDN0MsaUJBQWlCO29CQUNwQjBDLFNBQVMsTUFBTWhFLElBQUlXLE9BQU8sQ0FBQzJCLEVBQUUsQ0FBQzhCLFNBQVMsQ0FBQzt3QkFDdENmO3dCQUNBN0QsWUFBWVksaUJBQWlCb0MsSUFBSTt3QkFDakNwQixNQUFNNEM7d0JBQ050RDt3QkFDQVY7b0JBQ0Y7Z0JBQ0Y7Z0JBRUEsd0NBQXdDO2dCQUN4QyxpQkFBaUI7Z0JBQ2pCLHdDQUF3QztnQkFFeEMsSUFBSUksaUJBQWlCb0IsUUFBUSxFQUFFO29CQUM3QndDLFNBQVMsTUFBTUssSUFBQUEsd0JBQVcsRUFBQzt3QkFDekJoQjt3QkFDQTdELFlBQVlZO3dCQUNaNkQsZ0JBQWdCOzRCQUNkLEdBQUdELE1BQU07NEJBQ1RNLFdBQVdsQixJQUFJa0IsU0FBUzt3QkFDMUI7d0JBQ0FoRSxPQUFPZ0I7d0JBQ1BYO3dCQUNBWDtvQkFDRjtnQkFDRjtnQkFFQSx3Q0FBd0M7Z0JBQ3hDLHFCQUFxQjtnQkFDckIsd0NBQXdDO2dCQUV4Q2dFLFNBQVMsTUFBTVQsSUFBQUEsb0JBQVMsRUFBQztvQkFDdkJ4RCxTQUFTQyxJQUFJRCxPQUFPO29CQUNwQk07b0JBQ0ErQyxLQUFLWTtvQkFDTFIsY0FBY3BEO29CQUNkSTtvQkFDQVI7b0JBQ0FhO2dCQUNGO2dCQUVBLHdDQUF3QztnQkFDeEMseUJBQXlCO2dCQUN6Qix3Q0FBd0M7Z0JBRXhDLE1BQU1ULGlCQUFpQlYsS0FBSyxDQUFDNkQsU0FBUyxDQUFDM0QsTUFBTSxDQUFDLE9BQU9DLFdBQVdDO29CQUM5RCxNQUFNRDtvQkFFTm1FLFNBQ0UsQUFBQyxNQUFNbEUsS0FBSzt3QkFDVkMsU0FBU0MsSUFBSUQsT0FBTzt3QkFDcEJxRCxLQUFLWTt3QkFDTGhFO29CQUNGLE1BQU9nRTtnQkFDWCxHQUFHOUQsUUFBUUMsT0FBTztnQkFFbEIsd0NBQXdDO2dCQUN4Qyx1QkFBdUI7Z0JBQ3ZCLHdDQUF3QztnQkFFeEM2RCxTQUFTLE1BQU1PLElBQUFBLHdCQUFXLEVBQXVDO29CQUMvRHhFLFNBQVNDLElBQUlELE9BQU87b0JBQ3BCcUI7b0JBQ0FnQyxLQUFLWTtvQkFDTFIsY0FBY3BEO29CQUNkSCxXQUFXO29CQUNYdUUsYUFBYWxCO29CQUNidEQ7Z0JBQ0Y7Z0JBRUEsd0NBQXdDO2dCQUN4QywyQkFBMkI7Z0JBQzNCLHdDQUF3QztnQkFFeEMsTUFBTUksaUJBQWlCVixLQUFLLENBQUM2RSxXQUFXLENBQUMzRSxNQUFNLENBQUMsT0FBT0MsV0FBV0M7b0JBQ2hFLE1BQU1EO29CQUVObUUsU0FDRSxBQUFDLE1BQU1sRSxLQUFLO3dCQUNWQyxTQUFTQyxJQUFJRCxPQUFPO3dCQUNwQnFELEtBQUtZO3dCQUNML0QsV0FBVzt3QkFDWHVFLGFBQWFsQjt3QkFDYnREO29CQUNGLE1BQU9nRTtnQkFDWCxHQUFHOUQsUUFBUUMsT0FBTztnQkFFbEIsTUFBTXNFLElBQUFBLGdDQUFlLEVBQUM7b0JBQ3BCckU7b0JBQ0FYO29CQUNBTztnQkFDRjtnQkFFQSx3Q0FBd0M7Z0JBQ3hDLGlCQUFpQjtnQkFDakIsd0NBQXdDO2dCQUV4QyxPQUFPZ0U7WUFDVCxFQUFFLE9BQU9VLE9BQU87Z0JBQ2R6QixPQUFPMEIsSUFBSSxDQUFDO29CQUNWdEI7b0JBQ0F1QixTQUFTRixNQUFNRSxPQUFPO2dCQUN4QjtZQUNGO1lBQ0EsT0FBTztRQUNUO1FBRUEsTUFBTUMsY0FBYyxNQUFNM0UsUUFBUTRFLEdBQUcsQ0FBQzVCO1FBRXRDLElBQUljLFNBQVM7WUFDWGhDLE1BQU02QyxZQUFZRSxNQUFNLENBQUN4RDtZQUN6QjBCO1FBQ0Y7UUFFQSx3Q0FBd0M7UUFDeEMsOEJBQThCO1FBQzlCLHdDQUF3QztRQUV4Q2UsU0FBUyxNQUFNZ0IsSUFBQUEsMEJBQW1CLEVBQXVDO1lBQ3ZFekY7WUFDQVUsV0FBVztZQUNYK0Q7UUFDRjtRQUVBLElBQUlqRCxjQUFjLE1BQU1KLFFBQVEyQixFQUFFLENBQUMyQyxpQkFBaUIsQ0FBQ2pGLElBQUlrRixhQUFhO1FBRXRFLE9BQU9sQjtJQUNULEVBQUUsT0FBT1UsT0FBZ0I7UUFDdkIsTUFBTVMsSUFBQUEsZ0NBQWUsRUFBQ25GO1FBQ3RCLE1BQU0wRTtJQUNSO0FBQ0Y7TUFFQSxXQUFlckYifQ==
324
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb2xsZWN0aW9ucy9vcGVyYXRpb25zL3VwZGF0ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IERlZXBQYXJ0aWFsIH0gZnJvbSAndHMtZXNzZW50aWFscydcblxuaW1wb3J0IGh0dHBTdGF0dXMgZnJvbSAnaHR0cC1zdGF0dXMnXG5cbmltcG9ydCB0eXBlIHsgR2VuZXJhdGVkVHlwZXMgfSBmcm9tICcuLi8uLi8nXG5pbXBvcnQgdHlwZSB7IEFjY2Vzc1Jlc3VsdCB9IGZyb20gJy4uLy4uL2NvbmZpZy90eXBlcydcbmltcG9ydCB0eXBlIHsgUGF5bG9hZFJlcXVlc3QgfSBmcm9tICcuLi8uLi9leHByZXNzL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBXaGVyZSB9IGZyb20gJy4uLy4uL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBCdWxrT3BlcmF0aW9uUmVzdWx0LCBDb2xsZWN0aW9uIH0gZnJvbSAnLi4vY29uZmlnL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBDcmVhdGVVcGRhdGVUeXBlIH0gZnJvbSAnLi9jcmVhdGUnXG5cbmltcG9ydCBleGVjdXRlQWNjZXNzIGZyb20gJy4uLy4uL2F1dGgvZXhlY3V0ZUFjY2VzcydcbmltcG9ydCB7IGNvbWJpbmVRdWVyaWVzIH0gZnJvbSAnLi4vLi4vZGF0YWJhc2UvY29tYmluZVF1ZXJpZXMnXG5pbXBvcnQgeyB2YWxpZGF0ZVF1ZXJ5UGF0aHMgfSBmcm9tICcuLi8uLi9kYXRhYmFzZS9xdWVyeVZhbGlkYXRpb24vdmFsaWRhdGVRdWVyeVBhdGhzJ1xuaW1wb3J0IHsgQVBJRXJyb3IgfSBmcm9tICcuLi8uLi9lcnJvcnMnXG5pbXBvcnQgeyBhZnRlckNoYW5nZSB9IGZyb20gJy4uLy4uL2ZpZWxkcy9ob29rcy9hZnRlckNoYW5nZSdcbmltcG9ydCB7IGFmdGVyUmVhZCB9IGZyb20gJy4uLy4uL2ZpZWxkcy9ob29rcy9hZnRlclJlYWQnXG5pbXBvcnQgeyBiZWZvcmVDaGFuZ2UgfSBmcm9tICcuLi8uLi9maWVsZHMvaG9va3MvYmVmb3JlQ2hhbmdlJ1xuaW1wb3J0IHsgYmVmb3JlVmFsaWRhdGUgfSBmcm9tICcuLi8uLi9maWVsZHMvaG9va3MvYmVmb3JlVmFsaWRhdGUnXG5pbXBvcnQgeyBkZWxldGVBc3NvY2lhdGVkRmlsZXMgfSBmcm9tICcuLi8uLi91cGxvYWRzL2RlbGV0ZUFzc29jaWF0ZWRGaWxlcydcbmltcG9ydCB7IGdlbmVyYXRlRmlsZURhdGEgfSBmcm9tICcuLi8uLi91cGxvYWRzL2dlbmVyYXRlRmlsZURhdGEnXG5pbXBvcnQgeyB1bmxpbmtUZW1wRmlsZXMgfSBmcm9tICcuLi8uLi91cGxvYWRzL3VubGlua1RlbXBGaWxlcydcbmltcG9ydCB7IHVwbG9hZEZpbGVzIH0gZnJvbSAnLi4vLi4vdXBsb2Fkcy91cGxvYWRGaWxlcydcbmltcG9ydCB7IGluaXRUcmFuc2FjdGlvbiB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9pbml0VHJhbnNhY3Rpb24nXG5pbXBvcnQgeyBraWxsVHJhbnNhY3Rpb24gfSBmcm9tICcuLi8uLi91dGlsaXRpZXMva2lsbFRyYW5zYWN0aW9uJ1xuaW1wb3J0IHsgYnVpbGRWZXJzaW9uQ29sbGVjdGlvbkZpZWxkcyB9IGZyb20gJy4uLy4uL3ZlcnNpb25zL2J1aWxkQ29sbGVjdGlvbkZpZWxkcydcbmltcG9ydCB7IGFwcGVuZFZlcnNpb25Ub1F1ZXJ5S2V5IH0gZnJvbSAnLi4vLi4vdmVyc2lvbnMvZHJhZnRzL2FwcGVuZFZlcnNpb25Ub1F1ZXJ5S2V5J1xuaW1wb3J0IHsgc2F2ZVZlcnNpb24gfSBmcm9tICcuLi8uLi92ZXJzaW9ucy9zYXZlVmVyc2lvbidcbmltcG9ydCB7IGJ1aWxkQWZ0ZXJPcGVyYXRpb24gfSBmcm9tICcuL3V0aWxzJ1xuXG5leHBvcnQgdHlwZSBBcmd1bWVudHM8VCBleHRlbmRzIENyZWF0ZVVwZGF0ZVR5cGU+ID0ge1xuICBjb2xsZWN0aW9uOiBDb2xsZWN0aW9uXG4gIGRhdGE6IERlZXBQYXJ0aWFsPFQ+XG4gIGRlcHRoPzogbnVtYmVyXG4gIGRpc2FibGVWZXJpZmljYXRpb25FbWFpbD86IGJvb2xlYW5cbiAgZHJhZnQ/OiBib29sZWFuXG4gIG92ZXJyaWRlQWNjZXNzPzogYm9vbGVhblxuICBvdmVyd3JpdGVFeGlzdGluZ0ZpbGVzPzogYm9vbGVhblxuICByZXE6IFBheWxvYWRSZXF1ZXN0XG4gIHNob3dIaWRkZW5GaWVsZHM/OiBib29sZWFuXG4gIHdoZXJlOiBXaGVyZVxufVxuXG5hc3luYyBmdW5jdGlvbiB1cGRhdGU8VFNsdWcgZXh0ZW5kcyBrZXlvZiBHZW5lcmF0ZWRUeXBlc1snY29sbGVjdGlvbnMnXT4oXG4gIGluY29taW5nQXJnczogQXJndW1lbnRzPEdlbmVyYXRlZFR5cGVzWydjb2xsZWN0aW9ucyddW1RTbHVnXT4sXG4pOiBQcm9taXNlPEJ1bGtPcGVyYXRpb25SZXN1bHQ8VFNsdWc+PiB7XG4gIGxldCBhcmdzID0gaW5jb21pbmdBcmdzXG5cbiAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAvLyBiZWZvcmVPcGVyYXRpb24gLSBDb2xsZWN0aW9uXG4gIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuICBhd2FpdCBhcmdzLmNvbGxlY3Rpb24uY29uZmlnLmhvb2tzLmJlZm9yZU9wZXJhdGlvbi5yZWR1Y2UoYXN5bmMgKHByaW9ySG9vaywgaG9vaykgPT4ge1xuICAgIGF3YWl0IHByaW9ySG9va1xuXG4gICAgYXJncyA9XG4gICAgICAoYXdhaXQgaG9vayh7XG4gICAgICAgIGFyZ3MsXG4gICAgICAgIGNvbGxlY3Rpb246IGFyZ3MuY29sbGVjdGlvbi5jb25maWcsXG4gICAgICAgIGNvbnRleHQ6IGFyZ3MucmVxLmNvbnRleHQsXG4gICAgICAgIG9wZXJhdGlvbjogJ3VwZGF0ZScsXG4gICAgICB9KSkgfHwgYXJnc1xuICB9LCBQcm9taXNlLnJlc29sdmUoKSlcblxuICBjb25zdCB7XG4gICAgY29sbGVjdGlvbjogeyBjb25maWc6IGNvbGxlY3Rpb25Db25maWcgfSxcbiAgICBjb2xsZWN0aW9uLFxuICAgIGRlcHRoLFxuICAgIGRyYWZ0OiBkcmFmdEFyZyA9IGZhbHNlLFxuICAgIG92ZXJyaWRlQWNjZXNzLFxuICAgIG92ZXJ3cml0ZUV4aXN0aW5nRmlsZXMgPSBmYWxzZSxcbiAgICByZXE6IHtcbiAgICAgIGxvY2FsZSxcbiAgICAgIHBheWxvYWQ6IHsgY29uZmlnIH0sXG4gICAgICBwYXlsb2FkLFxuICAgICAgdCxcbiAgICB9LFxuICAgIHJlcSxcbiAgICBzaG93SGlkZGVuRmllbGRzLFxuICAgIHdoZXJlLFxuICB9ID0gYXJnc1xuXG4gIHRyeSB7XG4gICAgY29uc3Qgc2hvdWxkQ29tbWl0ID0gYXdhaXQgaW5pdFRyYW5zYWN0aW9uKHJlcSlcblxuICAgIGlmICghd2hlcmUpIHtcbiAgICAgIHRocm93IG5ldyBBUElFcnJvcihcIk1pc3NpbmcgJ3doZXJlJyBxdWVyeSBvZiBkb2N1bWVudHMgdG8gdXBkYXRlLlwiLCBodHRwU3RhdHVzLkJBRF9SRVFVRVNUKVxuICAgIH1cblxuICAgIGNvbnN0IHsgZGF0YTogYnVsa1VwZGF0ZURhdGEgfSA9IGFyZ3NcbiAgICBjb25zdCBzaG91bGRTYXZlRHJhZnQgPSBCb29sZWFuKGRyYWZ0QXJnICYmIGNvbGxlY3Rpb25Db25maWcudmVyc2lvbnMuZHJhZnRzKVxuXG4gICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIC8vIEFjY2Vzc1xuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuICAgIGxldCBhY2Nlc3NSZXN1bHQ6IEFjY2Vzc1Jlc3VsdFxuICAgIGlmICghb3ZlcnJpZGVBY2Nlc3MpIHtcbiAgICAgIGFjY2Vzc1Jlc3VsdCA9IGF3YWl0IGV4ZWN1dGVBY2Nlc3MoeyByZXEgfSwgY29sbGVjdGlvbkNvbmZpZy5hY2Nlc3MudXBkYXRlKVxuICAgIH1cblxuICAgIGF3YWl0IHZhbGlkYXRlUXVlcnlQYXRocyh7XG4gICAgICBjb2xsZWN0aW9uQ29uZmlnLFxuICAgICAgb3ZlcnJpZGVBY2Nlc3MsXG4gICAgICByZXEsXG4gICAgICB3aGVyZSxcbiAgICB9KVxuXG4gICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIC8vIFJldHJpZXZlIGRvY3VtZW50c1xuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuICAgIGNvbnN0IGZ1bGxXaGVyZSA9IGNvbWJpbmVRdWVyaWVzKHdoZXJlLCBhY2Nlc3NSZXN1bHQpXG5cbiAgICBsZXQgZG9jc1xuXG4gICAgaWYgKGNvbGxlY3Rpb25Db25maWcudmVyc2lvbnM/LmRyYWZ0cyAmJiBzaG91bGRTYXZlRHJhZnQpIHtcbiAgICAgIGNvbnN0IHZlcnNpb25zV2hlcmUgPSBhcHBlbmRWZXJzaW9uVG9RdWVyeUtleShmdWxsV2hlcmUpXG5cbiAgICAgIGF3YWl0IHZhbGlkYXRlUXVlcnlQYXRocyh7XG4gICAgICAgIGNvbGxlY3Rpb25Db25maWc6IGNvbGxlY3Rpb24uY29uZmlnLFxuICAgICAgICBvdmVycmlkZUFjY2VzcyxcbiAgICAgICAgcmVxLFxuICAgICAgICB2ZXJzaW9uRmllbGRzOiBidWlsZFZlcnNpb25Db2xsZWN0aW9uRmllbGRzKGNvbGxlY3Rpb24uY29uZmlnKSxcbiAgICAgICAgd2hlcmU6IHZlcnNpb25zV2hlcmUsXG4gICAgICB9KVxuXG4gICAgICBjb25zdCBxdWVyeSA9IGF3YWl0IHBheWxvYWQuZGIucXVlcnlEcmFmdHM8R2VuZXJhdGVkVHlwZXNbJ2NvbGxlY3Rpb25zJ11bVFNsdWddPih7XG4gICAgICAgIGNvbGxlY3Rpb246IGNvbGxlY3Rpb25Db25maWcuc2x1ZyxcbiAgICAgICAgbG9jYWxlLFxuICAgICAgICByZXEsXG4gICAgICAgIHdoZXJlOiB2ZXJzaW9uc1doZXJlLFxuICAgICAgfSlcblxuICAgICAgZG9jcyA9IHF1ZXJ5LmRvY3NcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgcXVlcnkgPSBhd2FpdCBwYXlsb2FkLmRiLmZpbmQoe1xuICAgICAgICBjb2xsZWN0aW9uOiBjb2xsZWN0aW9uQ29uZmlnLnNsdWcsXG4gICAgICAgIGxpbWl0OiAwLFxuICAgICAgICBsb2NhbGUsXG4gICAgICAgIHBhZ2luYXRpb246IGZhbHNlLFxuICAgICAgICByZXEsXG4gICAgICAgIHdoZXJlOiBmdWxsV2hlcmUsXG4gICAgICB9KVxuXG4gICAgICBkb2NzID0gcXVlcnkuZG9jc1xuICAgIH1cblxuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICAvLyBHZW5lcmF0ZSBkYXRhIGZvciBhbGwgZmlsZXMgYW5kIHNpemVzXG4gICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4gICAgY29uc3QgeyBkYXRhOiBuZXdGaWxlRGF0YSwgZmlsZXM6IGZpbGVzVG9VcGxvYWQgfSA9IGF3YWl0IGdlbmVyYXRlRmlsZURhdGEoe1xuICAgICAgY29sbGVjdGlvbixcbiAgICAgIGNvbmZpZyxcbiAgICAgIGRhdGE6IGJ1bGtVcGRhdGVEYXRhLFxuICAgICAgb3ZlcndyaXRlRXhpc3RpbmdGaWxlcyxcbiAgICAgIHJlcSxcbiAgICAgIHRocm93T25NaXNzaW5nRmlsZTogZmFsc2UsXG4gICAgfSlcblxuICAgIGNvbnN0IGVycm9ycyA9IFtdXG5cbiAgICBjb25zdCBwcm9taXNlcyA9IGRvY3MubWFwKGFzeW5jIChkb2MpID0+IHtcbiAgICAgIGNvbnN0IHsgaWQgfSA9IGRvY1xuICAgICAgbGV0IGRhdGEgPSB7XG4gICAgICAgIC4uLm5ld0ZpbGVEYXRhLFxuICAgICAgICAuLi5idWxrVXBkYXRlRGF0YSxcbiAgICAgIH1cblxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxEb2MgPSBhd2FpdCBhZnRlclJlYWQoe1xuICAgICAgICAgIGNvbGxlY3Rpb246IGNvbGxlY3Rpb25Db25maWcsXG4gICAgICAgICAgY29udGV4dDogcmVxLmNvbnRleHQsXG4gICAgICAgICAgZGVwdGg6IDAsXG4gICAgICAgICAgZG9jLFxuICAgICAgICAgIGdsb2JhbDogbnVsbCxcbiAgICAgICAgICBvdmVycmlkZUFjY2VzczogdHJ1ZSxcbiAgICAgICAgICByZXEsXG4gICAgICAgICAgc2hvd0hpZGRlbkZpZWxkczogdHJ1ZSxcbiAgICAgICAgfSlcblxuICAgICAgICBhd2FpdCBkZWxldGVBc3NvY2lhdGVkRmlsZXMoe1xuICAgICAgICAgIGNvbGxlY3Rpb25Db25maWcsXG4gICAgICAgICAgY29uZmlnLFxuICAgICAgICAgIGRvYyxcbiAgICAgICAgICBmaWxlczogZmlsZXNUb1VwbG9hZCxcbiAgICAgICAgICBvdmVycmlkZURlbGV0ZTogZmFsc2UsXG4gICAgICAgICAgdCxcbiAgICAgICAgfSlcblxuICAgICAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgICAgIC8vIGJlZm9yZVZhbGlkYXRlIC0gRmllbGRzXG4gICAgICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuICAgICAgICBkYXRhID0gYXdhaXQgYmVmb3JlVmFsaWRhdGU8RGVlcFBhcnRpYWw8R2VuZXJhdGVkVHlwZXNbJ2NvbGxlY3Rpb25zJ11bVFNsdWddPj4oe1xuICAgICAgICAgIGlkLFxuICAgICAgICAgIGNvbGxlY3Rpb246IGNvbGxlY3Rpb25Db25maWcsXG4gICAgICAgICAgY29udGV4dDogcmVxLmNvbnRleHQsXG4gICAgICAgICAgZGF0YSxcbiAgICAgICAgICBkb2M6IG9yaWdpbmFsRG9jLFxuICAgICAgICAgIGdsb2JhbDogbnVsbCxcbiAgICAgICAgICBvcGVyYXRpb246ICd1cGRhdGUnLFxuICAgICAgICAgIG92ZXJyaWRlQWNjZXNzLFxuICAgICAgICAgIHJlcSxcbiAgICAgICAgfSlcblxuICAgICAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgICAgIC8vIGJlZm9yZVZhbGlkYXRlIC0gQ29sbGVjdGlvblxuICAgICAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbiAgICAgICAgYXdhaXQgY29sbGVjdGlvbkNvbmZpZy5ob29rcy5iZWZvcmVWYWxpZGF0ZS5yZWR1Y2UoYXN5bmMgKHByaW9ySG9vaywgaG9vaykgPT4ge1xuICAgICAgICAgIGF3YWl0IHByaW9ySG9va1xuXG4gICAgICAgICAgZGF0YSA9XG4gICAgICAgICAgICAoYXdhaXQgaG9vayh7XG4gICAgICAgICAgICAgIGNvbGxlY3Rpb246IGNvbGxlY3Rpb25Db25maWcsXG4gICAgICAgICAgICAgIGNvbnRleHQ6IHJlcS5jb250ZXh0LFxuICAgICAgICAgICAgICBkYXRhLFxuICAgICAgICAgICAgICBvcGVyYXRpb246ICd1cGRhdGUnLFxuICAgICAgICAgICAgICBvcmlnaW5hbERvYyxcbiAgICAgICAgICAgICAgcmVxLFxuICAgICAgICAgICAgfSkpIHx8IGRhdGFcbiAgICAgICAgfSwgUHJvbWlzZS5yZXNvbHZlKCkpXG5cbiAgICAgICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgICAgICAvLyBXcml0ZSBmaWxlcyB0byBsb2NhbCBzdG9yYWdlXG4gICAgICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuICAgICAgICBpZiAoIWNvbGxlY3Rpb25Db25maWcudXBsb2FkLmRpc2FibGVMb2NhbFN0b3JhZ2UpIHtcbiAgICAgICAgICBhd2FpdCB1cGxvYWRGaWxlcyhwYXlsb2FkLCBmaWxlc1RvVXBsb2FkLCB0KVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgICAgICAvLyBiZWZvcmVDaGFuZ2UgLSBDb2xsZWN0aW9uXG4gICAgICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuICAgICAgICBhd2FpdCBjb2xsZWN0aW9uQ29uZmlnLmhvb2tzLmJlZm9yZUNoYW5nZS5yZWR1Y2UoYXN5bmMgKHByaW9ySG9vaywgaG9vaykgPT4ge1xuICAgICAgICAgIGF3YWl0IHByaW9ySG9va1xuXG4gICAgICAgICAgZGF0YSA9XG4gICAgICAgICAgICAoYXdhaXQgaG9vayh7XG4gICAgICAgICAgICAgIGNvbGxlY3Rpb246IGNvbGxlY3Rpb25Db25maWcsXG4gICAgICAgICAgICAgIGNvbnRleHQ6IHJlcS5jb250ZXh0LFxuICAgICAgICAgICAgICBkYXRhLFxuICAgICAgICAgICAgICBvcGVyYXRpb246ICd1cGRhdGUnLFxuICAgICAgICAgICAgICBvcmlnaW5hbERvYyxcbiAgICAgICAgICAgICAgcmVxLFxuICAgICAgICAgICAgfSkpIHx8IGRhdGFcbiAgICAgICAgfSwgUHJvbWlzZS5yZXNvbHZlKCkpXG5cbiAgICAgICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgICAgICAvLyBiZWZvcmVDaGFuZ2UgLSBGaWVsZHNcbiAgICAgICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4gICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCBiZWZvcmVDaGFuZ2U8R2VuZXJhdGVkVHlwZXNbJ2NvbGxlY3Rpb25zJ11bVFNsdWddPih7XG4gICAgICAgICAgaWQsXG4gICAgICAgICAgY29sbGVjdGlvbjogY29sbGVjdGlvbkNvbmZpZyxcbiAgICAgICAgICBjb250ZXh0OiByZXEuY29udGV4dCxcbiAgICAgICAgICBkYXRhLFxuICAgICAgICAgIGRvYzogb3JpZ2luYWxEb2MsXG4gICAgICAgICAgZG9jV2l0aExvY2FsZXM6IGRvYyxcbiAgICAgICAgICBnbG9iYWw6IG51bGwsXG4gICAgICAgICAgb3BlcmF0aW9uOiAndXBkYXRlJyxcbiAgICAgICAgICByZXEsXG4gICAgICAgICAgc2tpcFZhbGlkYXRpb246IHNob3VsZFNhdmVEcmFmdCB8fCBkYXRhLl9zdGF0dXMgPT09ICdkcmFmdCcsXG4gICAgICAgIH0pXG5cbiAgICAgICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgICAgICAvLyBVcGRhdGVcbiAgICAgICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4gICAgICAgIGlmICghc2hvdWxkU2F2ZURyYWZ0KSB7XG4gICAgICAgICAgcmVzdWx0ID0gYXdhaXQgcmVxLnBheWxvYWQuZGIudXBkYXRlT25lKHtcbiAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgY29sbGVjdGlvbjogY29sbGVjdGlvbkNvbmZpZy5zbHVnLFxuICAgICAgICAgICAgZGF0YTogcmVzdWx0LFxuICAgICAgICAgICAgbG9jYWxlLFxuICAgICAgICAgICAgcmVxLFxuICAgICAgICAgIH0pXG4gICAgICAgIH1cblxuICAgICAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgICAgIC8vIENyZWF0ZSB2ZXJzaW9uXG4gICAgICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuICAgICAgICBpZiAoY29sbGVjdGlvbkNvbmZpZy52ZXJzaW9ucykge1xuICAgICAgICAgIHJlc3VsdCA9IGF3YWl0IHNhdmVWZXJzaW9uKHtcbiAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgY29sbGVjdGlvbjogY29sbGVjdGlvbkNvbmZpZyxcbiAgICAgICAgICAgIGRvY1dpdGhMb2NhbGVzOiB7XG4gICAgICAgICAgICAgIC4uLnJlc3VsdCxcbiAgICAgICAgICAgICAgY3JlYXRlZEF0OiBkb2MuY3JlYXRlZEF0LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGRyYWZ0OiBzaG91bGRTYXZlRHJhZnQsXG4gICAgICAgICAgICBwYXlsb2FkLFxuICAgICAgICAgICAgcmVxLFxuICAgICAgICAgIH0pXG4gICAgICAgIH1cblxuICAgICAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgICAgIC8vIGFmdGVyUmVhZCAtIEZpZWxkc1xuICAgICAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbiAgICAgICAgcmVzdWx0ID0gYXdhaXQgYWZ0ZXJSZWFkKHtcbiAgICAgICAgICBjb2xsZWN0aW9uOiBjb2xsZWN0aW9uQ29uZmlnLFxuICAgICAgICAgIGNvbnRleHQ6IHJlcS5jb250ZXh0LFxuICAgICAgICAgIGRlcHRoLFxuICAgICAgICAgIGRvYzogcmVzdWx0LFxuICAgICAgICAgIGdsb2JhbDogbnVsbCxcbiAgICAgICAgICBvdmVycmlkZUFjY2VzcyxcbiAgICAgICAgICByZXEsXG4gICAgICAgICAgc2hvd0hpZGRlbkZpZWxkcyxcbiAgICAgICAgfSlcblxuICAgICAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgICAgIC8vIGFmdGVyUmVhZCAtIENvbGxlY3Rpb25cbiAgICAgICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4gICAgICAgIGF3YWl0IGNvbGxlY3Rpb25Db25maWcuaG9va3MuYWZ0ZXJSZWFkLnJlZHVjZShhc3luYyAocHJpb3JIb29rLCBob29rKSA9PiB7XG4gICAgICAgICAgYXdhaXQgcHJpb3JIb29rXG5cbiAgICAgICAgICByZXN1bHQgPVxuICAgICAgICAgICAgKGF3YWl0IGhvb2soe1xuICAgICAgICAgICAgICBjb2xsZWN0aW9uOiBjb2xsZWN0aW9uQ29uZmlnLFxuICAgICAgICAgICAgICBjb250ZXh0OiByZXEuY29udGV4dCxcbiAgICAgICAgICAgICAgZG9jOiByZXN1bHQsXG4gICAgICAgICAgICAgIHJlcSxcbiAgICAgICAgICAgIH0pKSB8fCByZXN1bHRcbiAgICAgICAgfSwgUHJvbWlzZS5yZXNvbHZlKCkpXG5cbiAgICAgICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgICAgICAvLyBhZnRlckNoYW5nZSAtIEZpZWxkc1xuICAgICAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbiAgICAgICAgcmVzdWx0ID0gYXdhaXQgYWZ0ZXJDaGFuZ2U8R2VuZXJhdGVkVHlwZXNbJ2NvbGxlY3Rpb25zJ11bVFNsdWddPih7XG4gICAgICAgICAgY29sbGVjdGlvbjogY29sbGVjdGlvbkNvbmZpZyxcbiAgICAgICAgICBjb250ZXh0OiByZXEuY29udGV4dCxcbiAgICAgICAgICBkYXRhLFxuICAgICAgICAgIGRvYzogcmVzdWx0LFxuICAgICAgICAgIGdsb2JhbDogbnVsbCxcbiAgICAgICAgICBvcGVyYXRpb246ICd1cGRhdGUnLFxuICAgICAgICAgIHByZXZpb3VzRG9jOiBvcmlnaW5hbERvYyxcbiAgICAgICAgICByZXEsXG4gICAgICAgIH0pXG5cbiAgICAgICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgICAgICAvLyBhZnRlckNoYW5nZSAtIENvbGxlY3Rpb25cbiAgICAgICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4gICAgICAgIGF3YWl0IGNvbGxlY3Rpb25Db25maWcuaG9va3MuYWZ0ZXJDaGFuZ2UucmVkdWNlKGFzeW5jIChwcmlvckhvb2ssIGhvb2spID0+IHtcbiAgICAgICAgICBhd2FpdCBwcmlvckhvb2tcblxuICAgICAgICAgIHJlc3VsdCA9XG4gICAgICAgICAgICAoYXdhaXQgaG9vayh7XG4gICAgICAgICAgICAgIGNvbGxlY3Rpb246IGNvbGxlY3Rpb25Db25maWcsXG4gICAgICAgICAgICAgIGNvbnRleHQ6IHJlcS5jb250ZXh0LFxuICAgICAgICAgICAgICBkb2M6IHJlc3VsdCxcbiAgICAgICAgICAgICAgb3BlcmF0aW9uOiAndXBkYXRlJyxcbiAgICAgICAgICAgICAgcHJldmlvdXNEb2M6IG9yaWdpbmFsRG9jLFxuICAgICAgICAgICAgICByZXEsXG4gICAgICAgICAgICB9KSkgfHwgcmVzdWx0XG4gICAgICAgIH0sIFByb21pc2UucmVzb2x2ZSgpKVxuXG4gICAgICAgIGF3YWl0IHVubGlua1RlbXBGaWxlcyh7XG4gICAgICAgICAgY29sbGVjdGlvbkNvbmZpZyxcbiAgICAgICAgICBjb25maWcsXG4gICAgICAgICAgcmVxLFxuICAgICAgICB9KVxuXG4gICAgICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICAgICAgLy8gUmV0dXJuIHJlc3VsdHNcbiAgICAgICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4gICAgICAgIHJldHVybiByZXN1bHRcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGVycm9ycy5wdXNoKHtcbiAgICAgICAgICBpZCxcbiAgICAgICAgICBtZXNzYWdlOiBlcnJvci5tZXNzYWdlLFxuICAgICAgICB9KVxuICAgICAgfVxuICAgICAgcmV0dXJuIG51bGxcbiAgICB9KVxuXG4gICAgY29uc3QgYXdhaXRlZERvY3MgPSBhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcylcblxuICAgIGxldCByZXN1bHQgPSB7XG4gICAgICBkb2NzOiBhd2FpdGVkRG9jcy5maWx0ZXIoQm9vbGVhbiksXG4gICAgICBlcnJvcnMsXG4gICAgfVxuXG4gICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIC8vIGFmdGVyT3BlcmF0aW9uIC0gQ29sbGVjdGlvblxuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuICAgIHJlc3VsdCA9IGF3YWl0IGJ1aWxkQWZ0ZXJPcGVyYXRpb248R2VuZXJhdGVkVHlwZXNbJ2NvbGxlY3Rpb25zJ11bVFNsdWddPih7XG4gICAgICBhcmdzLFxuICAgICAgY29sbGVjdGlvbjogY29sbGVjdGlvbkNvbmZpZyxcbiAgICAgIG9wZXJhdGlvbjogJ3VwZGF0ZScsXG4gICAgICByZXN1bHQsXG4gICAgfSlcblxuICAgIGlmIChzaG91bGRDb21taXQpIGF3YWl0IHBheWxvYWQuZGIuY29tbWl0VHJhbnNhY3Rpb24ocmVxLnRyYW5zYWN0aW9uSUQpXG5cbiAgICByZXR1cm4gcmVzdWx0XG4gIH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG4gICAgYXdhaXQga2lsbFRyYW5zYWN0aW9uKHJlcSlcbiAgICB0aHJvdyBlcnJvclxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IHVwZGF0ZVxuIl0sIm5hbWVzIjpbInVwZGF0ZSIsImluY29taW5nQXJncyIsImFyZ3MiLCJjb2xsZWN0aW9uIiwiY29uZmlnIiwiaG9va3MiLCJiZWZvcmVPcGVyYXRpb24iLCJyZWR1Y2UiLCJwcmlvckhvb2siLCJob29rIiwiY29udGV4dCIsInJlcSIsIm9wZXJhdGlvbiIsIlByb21pc2UiLCJyZXNvbHZlIiwiY29sbGVjdGlvbkNvbmZpZyIsImRlcHRoIiwiZHJhZnQiLCJkcmFmdEFyZyIsIm92ZXJyaWRlQWNjZXNzIiwib3ZlcndyaXRlRXhpc3RpbmdGaWxlcyIsImxvY2FsZSIsInBheWxvYWQiLCJ0Iiwic2hvd0hpZGRlbkZpZWxkcyIsIndoZXJlIiwic2hvdWxkQ29tbWl0IiwiaW5pdFRyYW5zYWN0aW9uIiwiQVBJRXJyb3IiLCJodHRwU3RhdHVzIiwiQkFEX1JFUVVFU1QiLCJkYXRhIiwiYnVsa1VwZGF0ZURhdGEiLCJzaG91bGRTYXZlRHJhZnQiLCJCb29sZWFuIiwidmVyc2lvbnMiLCJkcmFmdHMiLCJhY2Nlc3NSZXN1bHQiLCJleGVjdXRlQWNjZXNzIiwiYWNjZXNzIiwidmFsaWRhdGVRdWVyeVBhdGhzIiwiZnVsbFdoZXJlIiwiY29tYmluZVF1ZXJpZXMiLCJkb2NzIiwidmVyc2lvbnNXaGVyZSIsImFwcGVuZFZlcnNpb25Ub1F1ZXJ5S2V5IiwidmVyc2lvbkZpZWxkcyIsImJ1aWxkVmVyc2lvbkNvbGxlY3Rpb25GaWVsZHMiLCJxdWVyeSIsImRiIiwicXVlcnlEcmFmdHMiLCJzbHVnIiwiZmluZCIsImxpbWl0IiwicGFnaW5hdGlvbiIsIm5ld0ZpbGVEYXRhIiwiZmlsZXMiLCJmaWxlc1RvVXBsb2FkIiwiZ2VuZXJhdGVGaWxlRGF0YSIsInRocm93T25NaXNzaW5nRmlsZSIsImVycm9ycyIsInByb21pc2VzIiwibWFwIiwiZG9jIiwiaWQiLCJvcmlnaW5hbERvYyIsImFmdGVyUmVhZCIsImdsb2JhbCIsImRlbGV0ZUFzc29jaWF0ZWRGaWxlcyIsIm92ZXJyaWRlRGVsZXRlIiwiYmVmb3JlVmFsaWRhdGUiLCJ1cGxvYWQiLCJkaXNhYmxlTG9jYWxTdG9yYWdlIiwidXBsb2FkRmlsZXMiLCJiZWZvcmVDaGFuZ2UiLCJyZXN1bHQiLCJkb2NXaXRoTG9jYWxlcyIsInNraXBWYWxpZGF0aW9uIiwiX3N0YXR1cyIsInVwZGF0ZU9uZSIsInNhdmVWZXJzaW9uIiwiY3JlYXRlZEF0IiwiYWZ0ZXJDaGFuZ2UiLCJwcmV2aW91c0RvYyIsInVubGlua1RlbXBGaWxlcyIsImVycm9yIiwicHVzaCIsIm1lc3NhZ2UiLCJhd2FpdGVkRG9jcyIsImFsbCIsImZpbHRlciIsImJ1aWxkQWZ0ZXJPcGVyYXRpb24iLCJjb21taXRUcmFuc2FjdGlvbiIsInRyYW5zYWN0aW9uSUQiLCJraWxsVHJhbnNhY3Rpb24iXSwibWFwcGluZ3MiOiI7Ozs7K0JBMlpBOzs7ZUFBQTs7O21FQXpadUI7c0VBU0c7Z0NBQ0s7b0NBQ0k7d0JBQ1Y7NkJBQ0c7MkJBQ0Y7OEJBQ0c7Z0NBQ0U7dUNBQ087a0NBQ0w7aUNBQ0Q7NkJBQ0o7aUNBQ0k7aUNBQ0E7dUNBQ2E7eUNBQ0w7NkJBQ1o7dUJBQ1E7Ozs7OztBQWVwQyxlQUFlQSxPQUNiQyxZQUE2RDtJQUU3RCxJQUFJQyxPQUFPRDtJQUVYLHdDQUF3QztJQUN4QywrQkFBK0I7SUFDL0Isd0NBQXdDO0lBRXhDLE1BQU1DLEtBQUtDLFVBQVUsQ0FBQ0Ms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
@@ -1 +1 @@
1
- {"version":3,"file":"updateByID.d.ts","sourceRoot":"","sources":["../../../src/collections/operations/updateByID.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAKhD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAqBjD,MAAM,MAAM,SAAS,CAAC,CAAC,SAAS;IAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAA;CAAE,IAAI;IAChF,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,UAAU,EAAE,UAAU,CAAA;IACtB,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,CAAA;IACpB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,wBAAwB,CAAC,EAAE,OAAO,CAAA;IAClC,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;IACnB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,sBAAsB,CAAC,EAAE,OAAO,CAAA;IAChC,GAAG,EAAE,cAAc,CAAA;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAC3B,CAAA;AAED,iBAAe,UAAU,CAAC,KAAK,SAAS,MAAM,cAAc,CAAC,aAAa,CAAC,EACzE,YAAY,EAAE,SAAS,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,CAAC,GAC5D,OAAO,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,CAAC,CAqU/C;AAED,eAAe,UAAU,CAAA"}
1
+ {"version":3,"file":"updateByID.d.ts","sourceRoot":"","sources":["../../../src/collections/operations/updateByID.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAKhD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAqBjD,MAAM,MAAM,SAAS,CAAC,CAAC,SAAS;IAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAA;CAAE,IAAI;IAChF,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,UAAU,EAAE,UAAU,CAAA;IACtB,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,CAAA;IACpB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,wBAAwB,CAAC,EAAE,OAAO,CAAA;IAClC,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;IACnB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,sBAAsB,CAAC,EAAE,OAAO,CAAA;IAChC,GAAG,EAAE,cAAc,CAAA;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAC3B,CAAA;AAED,iBAAe,UAAU,CAAC,KAAK,SAAS,MAAM,cAAc,CAAC,aAAa,CAAC,EACzE,YAAY,EAAE,SAAS,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,CAAC,GAC5D,OAAO,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,CAAC,CAgV/C;AAED,eAAe,UAAU,CAAA"}
@@ -41,6 +41,7 @@ async function updateByID(incomingArgs) {
41
41
  await priorHook;
42
42
  args = await hook({
43
43
  args,
44
+ collection: args.collection.config,
44
45
  context: args.req.context,
45
46
  operation: 'update'
46
47
  }) || args;
@@ -87,10 +88,11 @@ async function updateByID(incomingArgs) {
87
88
  if (!docWithLocales && !hasWherePolicy) throw new _errors.NotFound(t);
88
89
  if (!docWithLocales && hasWherePolicy) throw new _errors.Forbidden(t);
89
90
  const originalDoc = await (0, _afterRead.afterRead)({
91
+ collection: collectionConfig,
90
92
  context: req.context,
91
93
  depth: 0,
92
94
  doc: docWithLocales,
93
- entityConfig: collectionConfig,
95
+ global: null,
94
96
  overrideAccess: true,
95
97
  req,
96
98
  showHiddenFields: true
@@ -123,10 +125,11 @@ async function updateByID(incomingArgs) {
123
125
  // /////////////////////////////////////
124
126
  data = await (0, _beforeValidate.beforeValidate)({
125
127
  id,
128
+ collection: collectionConfig,
126
129
  context: req.context,
127
130
  data,
128
131
  doc: originalDoc,
129
- entityConfig: collectionConfig,
132
+ global: null,
130
133
  operation: 'update',
131
134
  overrideAccess,
132
135
  req
@@ -137,6 +140,7 @@ async function updateByID(incomingArgs) {
137
140
  await collectionConfig.hooks.beforeValidate.reduce(async (priorHook, hook)=>{
138
141
  await priorHook;
139
142
  data = await hook({
143
+ collection: collectionConfig,
140
144
  context: req.context,
141
145
  data,
142
146
  operation: 'update',
@@ -156,6 +160,7 @@ async function updateByID(incomingArgs) {
156
160
  await collectionConfig.hooks.beforeChange.reduce(async (priorHook, hook)=>{
157
161
  await priorHook;
158
162
  data = await hook({
163
+ collection: collectionConfig,
159
164
  context: req.context,
160
165
  data,
161
166
  operation: 'update',
@@ -168,11 +173,12 @@ async function updateByID(incomingArgs) {
168
173
  // /////////////////////////////////////
169
174
  let result = await (0, _beforeChange.beforeChange)({
170
175
  id,
176
+ collection: collectionConfig,
171
177
  context: req.context,
172
178
  data,
173
179
  doc: originalDoc,
174
180
  docWithLocales,
175
- entityConfig: collectionConfig,
181
+ global: null,
176
182
  operation: 'update',
177
183
  req,
178
184
  skipValidation: shouldSaveDraft || data._status === 'draft'
@@ -225,10 +231,11 @@ async function updateByID(incomingArgs) {
225
231
  // afterRead - Fields
226
232
  // /////////////////////////////////////
227
233
  result = await (0, _afterRead.afterRead)({
234
+ collection: collectionConfig,
228
235
  context: req.context,
229
236
  depth,
230
237
  doc: result,
231
- entityConfig: collectionConfig,
238
+ global: null,
232
239
  overrideAccess,
233
240
  req,
234
241
  showHiddenFields
@@ -239,6 +246,7 @@ async function updateByID(incomingArgs) {
239
246
  await collectionConfig.hooks.afterRead.reduce(async (priorHook, hook)=>{
240
247
  await priorHook;
241
248
  result = await hook({
249
+ collection: collectionConfig,
242
250
  context: req.context,
243
251
  doc: result,
244
252
  req
@@ -248,10 +256,11 @@ async function updateByID(incomingArgs) {
248
256
  // afterChange - Fields
249
257
  // /////////////////////////////////////
250
258
  result = await (0, _afterChange.afterChange)({
259
+ collection: collectionConfig,
251
260
  context: req.context,
252
261
  data,
253
262
  doc: result,
254
- entityConfig: collectionConfig,
263
+ global: null,
255
264
  operation: 'update',
256
265
  previousDoc: originalDoc,
257
266
  req
@@ -262,6 +271,7 @@ async function updateByID(incomingArgs) {
262
271
  await collectionConfig.hooks.afterChange.reduce(async (priorHook, hook)=>{
263
272
  await priorHook;
264
273
  result = await hook({
274
+ collection: collectionConfig,
265
275
  context: req.context,
266
276
  doc: result,
267
277
  operation: 'update',
@@ -274,6 +284,7 @@ async function updateByID(incomingArgs) {
274
284
  // /////////////////////////////////////
275
285
  result = await (0, _utils.buildAfterOperation)({
276
286
  args,
287
+ collection: collectionConfig,
277
288
  operation: 'updateByID',
278
289
  result
279
290
  });
@@ -294,4 +305,4 @@ async function updateByID(incomingArgs) {
294
305
  }
295
306
  const _default = updateByID;
296
307
 
297
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb2xsZWN0aW9ucy9vcGVyYXRpb25zL3VwZGF0ZUJ5SUQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBEZWVwUGFydGlhbCB9IGZyb20gJ3RzLWVzc2VudGlhbHMnXG5cbmltcG9ydCBodHRwU3RhdHVzIGZyb20gJ2h0dHAtc3RhdHVzJ1xuXG5pbXBvcnQgdHlwZSB7IEZpbmRPbmVBcmdzIH0gZnJvbSAnLi4vLi4vZGF0YWJhc2UvdHlwZXMnXG5pbXBvcnQgdHlwZSB7IFBheWxvYWRSZXF1ZXN0IH0gZnJvbSAnLi4vLi4vZXhwcmVzcy90eXBlcydcbmltcG9ydCB0eXBlIHsgR2VuZXJhdGVkVHlwZXMgfSBmcm9tICcuLi8uLi9pbmRleCdcbmltcG9ydCB0eXBlIHsgQ29sbGVjdGlvbiB9IGZyb20gJy4uL2NvbmZpZy90eXBlcydcblxuaW1wb3J0IGV4ZWN1dGVBY2Nlc3MgZnJvbSAnLi4vLi4vYXV0aC9leGVjdXRlQWNjZXNzJ1xuaW1wb3J0IHsgZ2VuZXJhdGVQYXNzd29yZFNhbHRIYXNoIH0gZnJvbSAnLi4vLi4vYXV0aC9zdHJhdGVnaWVzL2xvY2FsL2dlbmVyYXRlUGFzc3dvcmRTYWx0SGFzaCdcbmltcG9ydCB7IGhhc1doZXJlQWNjZXNzUmVzdWx0IH0gZnJvbSAnLi4vLi4vYXV0aC90eXBlcydcbmltcG9ydCB7IGNvbWJpbmVRdWVyaWVzIH0gZnJvbSAnLi4vLi4vZGF0YWJhc2UvY29tYmluZVF1ZXJpZXMnXG5pbXBvcnQgeyBBUElFcnJvciwgRm9yYmlkZGVuLCBOb3RGb3VuZCB9IGZyb20gJy4uLy4uL2Vycm9ycydcbmltcG9ydCB7IGFmdGVyQ2hhbmdlIH0gZnJvbSAnLi4vLi4vZmllbGRzL2hvb2tzL2FmdGVyQ2hhbmdlJ1xuaW1wb3J0IHsgYWZ0ZXJSZWFkIH0gZnJvbSAnLi4vLi4vZmllbGRzL2hvb2tzL2FmdGVyUmVhZCdcbmltcG9ydCB7IGJlZm9yZUNoYW5nZSB9IGZyb20gJy4uLy4uL2ZpZWxkcy9ob29rcy9iZWZvcmVDaGFuZ2UnXG5pbXBvcnQgeyBiZWZvcmVWYWxpZGF0ZSB9IGZyb20gJy4uLy4uL2ZpZWxkcy9ob29rcy9iZWZvcmVWYWxpZGF0ZSdcbmltcG9ydCB7IGRlbGV0ZUFzc29jaWF0ZWRGaWxlcyB9IGZyb20gJy4uLy4uL3VwbG9hZHMvZGVsZXRlQXNzb2NpYXRlZEZpbGVzJ1xuaW1wb3J0IHsgZ2VuZXJhdGVGaWxlRGF0YSB9IGZyb20gJy4uLy4uL3VwbG9hZHMvZ2VuZXJhdGVGaWxlRGF0YSdcbmltcG9ydCB7IHVubGlua1RlbXBGaWxlcyB9IGZyb20gJy4uLy4uL3VwbG9hZHMvdW5saW5rVGVtcEZpbGVzJ1xuaW1wb3J0IHsgdXBsb2FkRmlsZXMgfSBmcm9tICcuLi8uLi91cGxvYWRzL3VwbG9hZEZpbGVzJ1xuaW1wb3J0IHsgaW5pdFRyYW5zYWN0aW9uIH0gZnJvbSAnLi4vLi4vdXRpbGl0aWVzL2luaXRUcmFuc2FjdGlvbidcbmltcG9ydCB7IGtpbGxUcmFuc2FjdGlvbiB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9raWxsVHJhbnNhY3Rpb24nXG5pbXBvcnQgeyBnZXRMYXRlc3RDb2xsZWN0aW9uVmVyc2lvbiB9IGZyb20gJy4uLy4uL3ZlcnNpb25zL2dldExhdGVzdENvbGxlY3Rpb25WZXJzaW9uJ1xuaW1wb3J0IHsgc2F2ZVZlcnNpb24gfSBmcm9tICcuLi8uLi92ZXJzaW9ucy9zYXZlVmVyc2lvbidcbmltcG9ydCB7IGJ1aWxkQWZ0ZXJPcGVyYXRpb24gfSBmcm9tICcuL3V0aWxzJ1xuXG5leHBvcnQgdHlwZSBBcmd1bWVudHM8VCBleHRlbmRzIHsgW2ZpZWxkOiBudW1iZXIgfCBzdHJpbmcgfCBzeW1ib2xdOiB1bmtub3duIH0+ID0ge1xuICBhdXRvc2F2ZT86IGJvb2xlYW5cbiAgY29sbGVjdGlvbjogQ29sbGVjdGlvblxuICBkYXRhOiBEZWVwUGFydGlhbDxUPlxuICBkZXB0aD86IG51bWJlclxuICBkaXNhYmxlVmVyaWZpY2F0aW9uRW1haWw/OiBib29sZWFuXG4gIGRyYWZ0PzogYm9vbGVhblxuICBpZDogbnVtYmVyIHwgc3RyaW5nXG4gIG92ZXJyaWRlQWNjZXNzPzogYm9vbGVhblxuICBvdmVyd3JpdGVFeGlzdGluZ0ZpbGVzPzogYm9vbGVhblxuICByZXE6IFBheWxvYWRSZXF1ZXN0XG4gIHNob3dIaWRkZW5GaWVsZHM/OiBib29sZWFuXG59XG5cbmFzeW5jIGZ1bmN0aW9uIHVwZGF0ZUJ5SUQ8VFNsdWcgZXh0ZW5kcyBrZXlvZiBHZW5lcmF0ZWRUeXBlc1snY29sbGVjdGlvbnMnXT4oXG4gIGluY29taW5nQXJnczogQXJndW1lbnRzPEdlbmVyYXRlZFR5cGVzWydjb2xsZWN0aW9ucyddW1RTbHVnXT4sXG4pOiBQcm9taXNlPEdlbmVyYXRlZFR5cGVzWydjb2xsZWN0aW9ucyddW1RTbHVnXT4ge1xuICBsZXQgYXJncyA9IGluY29taW5nQXJnc1xuXG4gIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgLy8gYmVmb3JlT3BlcmF0aW9uIC0gQ29sbGVjdGlvblxuICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbiAgYXdhaXQgYXJncy5jb2xsZWN0aW9uLmNvbmZpZy5ob29rcy5iZWZvcmVPcGVyYXRpb24ucmVkdWNlKGFzeW5jIChwcmlvckhvb2ssIGhvb2spID0+IHtcbiAgICBhd2FpdCBwcmlvckhvb2tcblxuICAgIGFyZ3MgPVxuICAgICAgKGF3YWl0IGhvb2soe1xuICAgICAgICBhcmdzLFxuICAgICAgICBjb250ZXh0OiBhcmdzLnJlcS5jb250ZXh0LFxuICAgICAgICBvcGVyYXRpb246ICd1cGRhdGUnLFxuICAgICAgfSkpIHx8IGFyZ3NcbiAgfSwgUHJvbWlzZS5yZXNvbHZlKCkpXG5cbiAgY29uc3Qge1xuICAgIGlkLFxuICAgIGF1dG9zYXZlID0gZmFsc2UsXG4gICAgY29sbGVjdGlvbjogeyBjb25maWc6IGNvbGxlY3Rpb25Db25maWcgfSxcbiAgICBjb2xsZWN0aW9uLFxuICAgIGRlcHRoLFxuICAgIGRyYWZ0OiBkcmFmdEFyZyA9IGZhbHNlLFxuICAgIG92ZXJyaWRlQWNjZXNzLFxuICAgIG92ZXJ3cml0ZUV4aXN0aW5nRmlsZXMgPSBmYWxzZSxcbiAgICByZXE6IHtcbiAgICAgIGxvY2FsZSxcbiAgICAgIHBheWxvYWQ6IHsgY29uZmlnIH0sXG4gICAgICBwYXlsb2FkLFxuICAgICAgdCxcbiAgICB9LFxuICAgIHJlcSxcbiAgICBzaG93SGlkZGVuRmllbGRzLFxuICB9ID0gYXJnc1xuXG4gIHRyeSB7XG4gICAgY29uc3Qgc2hvdWxkQ29tbWl0ID0gYXdhaXQgaW5pdFRyYW5zYWN0aW9uKHJlcSlcblxuICAgIGlmICghaWQpIHtcbiAgICAgIHRocm93IG5ldyBBUElFcnJvcignTWlzc2luZyBJRCBvZiBkb2N1bWVudCB0byB1cGRhdGUuJywgaHR0cFN0YXR1cy5CQURfUkVRVUVTVClcbiAgICB9XG5cbiAgICBsZXQgeyBkYXRhIH0gPSBhcmdzXG4gICAgY29uc3QgeyBwYXNzd29yZCB9ID0gZGF0YVxuICAgIGNvbnN0IHNob3VsZFNhdmVEcmFmdCA9IEJvb2xlYW4oZHJhZnRBcmcgJiYgY29sbGVjdGlvbkNvbmZpZy52ZXJzaW9ucy5kcmFmdHMpXG4gICAgY29uc3Qgc2hvdWxkU2F2ZVBhc3N3b3JkID0gQm9vbGVhbihwYXNzd29yZCAmJiBjb2xsZWN0aW9uQ29uZmlnLmF1dGggJiYgIXNob3VsZFNhdmVEcmFmdClcblxuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICAvLyBBY2Nlc3NcbiAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbiAgICBjb25zdCBhY2Nlc3NSZXN1bHRzID0gIW92ZXJyaWRlQWNjZXNzXG4gICAgICA/IGF3YWl0IGV4ZWN1dGVBY2Nlc3MoeyBpZCwgZGF0YSwgcmVxIH0sIGNvbGxlY3Rpb25Db25maWcuYWNjZXNzLnVwZGF0ZSlcbiAgICAgIDogdHJ1ZVxuICAgIGNvbnN0IGhhc1doZXJlUG9saWN5ID0gaGFzV2hlcmVBY2Nlc3NSZXN1bHQoYWNjZXNzUmVzdWx0cylcblxuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICAvLyBSZXRyaWV2ZSBkb2N1bWVudFxuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuICAgIGNvbnN0IGZpbmRPbmVBcmdzOiBGaW5kT25lQXJncyA9IHtcbiAgICAgIGNvbGxlY3Rpb246IGNvbGxlY3Rpb25Db25maWcuc2x1ZyxcbiAgICAgIGxvY2FsZSxcbiAgICAgIHJlcSxcbiAgICAgIHdoZXJlOiBjb21iaW5lUXVlcmllcyh7IGlkOiB7IGVxdWFsczogaWQgfSB9LCBhY2Nlc3NSZXN1bHRzKSxcbiAgICB9XG5cbiAgICBjb25zdCBkb2NXaXRoTG9jYWxlcyA9IGF3YWl0IGdldExhdGVzdENvbGxlY3Rpb25WZXJzaW9uKHtcbiAgICAgIGlkLFxuICAgICAgY29uZmlnOiBjb2xsZWN0aW9uQ29uZmlnLFxuICAgICAgcGF5bG9hZCxcbiAgICAgIHF1ZXJ5OiBmaW5kT25lQXJncyxcbiAgICAgIHJlcSxcbiAgICB9KVxuXG4gICAgaWYgKCFkb2NXaXRoTG9jYWxlcyAmJiAhaGFzV2hlcmVQb2xpY3kpIHRocm93IG5ldyBOb3RGb3VuZCh0KVxuICAgIGlmICghZG9jV2l0aExvY2FsZXMgJiYgaGFzV2hlcmVQb2xpY3kpIHRocm93IG5ldyBGb3JiaWRkZW4odClcblxuICAgIGNvbnN0IG9yaWdpbmFsRG9jID0gYXdhaXQgYWZ0ZXJSZWFkKHtcbiAgICAgIGNvbnRleHQ6IHJlcS5jb250ZXh0LFxuICAgICAgZGVwdGg6IDAsXG4gICAgICBkb2M6IGRvY1dpdGhMb2NhbGVzLFxuICAgICAgZW50aXR5Q29uZmlnOiBjb2xsZWN0aW9uQ29uZmlnLFxuICAgICAgb3ZlcnJpZGVBY2Nlc3M6IHRydWUsXG4gICAgICByZXEsXG4gICAgICBzaG93SGlkZGVuRmllbGRzOiB0cnVlLFxuICAgIH0pXG5cbiAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgLy8gR2VuZXJhdGUgZGF0YSBmb3IgYWxsIGZpbGVzIGFuZCBzaXplc1xuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuICAgIGNvbnN0IHsgZGF0YTogbmV3RmlsZURhdGEsIGZpbGVzOiBmaWxlc1RvVXBsb2FkIH0gPSBhd2FpdCBnZW5lcmF0ZUZpbGVEYXRhKHtcbiAgICAgIGNvbGxlY3Rpb24sXG4gICAgICBjb25maWcsXG4gICAgICBkYXRhLFxuICAgICAgb3ZlcndyaXRlRXhpc3RpbmdGaWxlcyxcbiAgICAgIHJlcSxcbiAgICAgIHRocm93T25NaXNzaW5nRmlsZTogZmFsc2UsXG4gICAgfSlcblxuICAgIGRhdGEgPSBuZXdGaWxlRGF0YVxuXG4gICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIC8vIERlbGV0ZSBhbnkgYXNzb2NpYXRlZCBmaWxlc1xuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuICAgIGF3YWl0IGRlbGV0ZUFzc29jaWF0ZWRGaWxlcyh7XG4gICAgICBjb2xsZWN0aW9uQ29uZmlnLFxuICAgICAgY29uZmlnLFxuICAgICAgZG9jOiBkb2NXaXRoTG9jYWxlcyxcbiAgICAgIGZpbGVzOiBmaWxlc1RvVXBsb2FkLFxuICAgICAgb3ZlcnJpZGVEZWxldGU6IGZhbHNlLFxuICAgICAgdCxcbiAgICB9KVxuXG4gICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIC8vIGJlZm9yZVZhbGlkYXRlIC0gRmllbGRzXG4gICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4gICAgZGF0YSA9IGF3YWl0IGJlZm9yZVZhbGlkYXRlPERlZXBQYXJ0aWFsPEdlbmVyYXRlZFR5cGVzWydjb2xsZWN0aW9ucyddW1RTbHVnXT4+KHtcbiAgICAgIGlkLFxuICAgICAgY29udGV4dDogcmVxLmNvbnRleHQsXG4gICAgICBkYXRhLFxuICAgICAgZG9jOiBvcmlnaW5hbERvYyxcbiAgICAgIGVudGl0eUNvbmZpZzogY29sbGVjdGlvbkNvbmZpZyxcbiAgICAgIG9wZXJhdGlvbjogJ3VwZGF0ZScsXG4gICAgICBvdmVycmlkZUFjY2VzcyxcbiAgICAgIHJlcSxcbiAgICB9KVxuXG4gICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIC8vIGJlZm9yZVZhbGlkYXRlIC0gQ29sbGVjdGlvblxuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuICAgIGF3YWl0IGNvbGxlY3Rpb25Db25maWcuaG9va3MuYmVmb3JlVmFsaWRhdGUucmVkdWNlKGFzeW5jIChwcmlvckhvb2ssIGhvb2spID0+IHtcbiAgICAgIGF3YWl0IHByaW9ySG9va1xuXG4gICAgICBkYXRhID1cbiAgICAgICAgKGF3YWl0IGhvb2soe1xuICAgICAgICAgIGNvbnRleHQ6IHJlcS5jb250ZXh0LFxuICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgb3BlcmF0aW9uOiAndXBkYXRlJyxcbiAgICAgICAgICBvcmlnaW5hbERvYyxcbiAgICAgICAgICByZXEsXG4gICAgICAgIH0pKSB8fCBkYXRhXG4gICAgfSwgUHJvbWlzZS5yZXNvbHZlKCkpXG5cbiAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgLy8gV3JpdGUgZmlsZXMgdG8gbG9jYWwgc3RvcmFnZVxuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuICAgIGlmICghY29sbGVjdGlvbkNvbmZpZy51cGxvYWQuZGlzYWJsZUxvY2FsU3RvcmFnZSkge1xuICAgICAgYXdhaXQgdXBsb2FkRmlsZXMocGF5bG9hZCwgZmlsZXNUb1VwbG9hZCwgdClcbiAgICB9XG5cbiAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgLy8gYmVmb3JlQ2hhbmdlIC0gQ29sbGVjdGlvblxuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuICAgIGF3YWl0IGNvbGxlY3Rpb25Db25maWcuaG9va3MuYmVmb3JlQ2hhbmdlLnJlZHVjZShhc3luYyAocHJpb3JIb29rLCBob29rKSA9PiB7XG4gICAgICBhd2FpdCBwcmlvckhvb2tcblxuICAgICAgZGF0YSA9XG4gICAgICAgIChhd2FpdCBob29rKHtcbiAgICAgICAgICBjb250ZXh0OiByZXEuY29udGV4dCxcbiAgICAgICAgICBkYXRhLFxuICAgICAgICAgIG9wZXJhdGlvbjogJ3VwZGF0ZScsXG4gICAgICAgICAgb3JpZ2luYWxEb2MsXG4gICAgICAgICAgcmVxLFxuICAgICAgICB9KSkgfHwgZGF0YVxuICAgIH0sIFByb21pc2UucmVzb2x2ZSgpKVxuXG4gICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIC8vIGJlZm9yZUNoYW5nZSAtIEZpZWxkc1xuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuICAgIGxldCByZXN1bHQgPSBhd2FpdCBiZWZvcmVDaGFuZ2U8R2VuZXJhdGVkVHlwZXNbJ2NvbGxlY3Rpb25zJ11bVFNsdWddPih7XG4gICAgICBpZCxcbiAgICAgIGNvbnRleHQ6IHJlcS5jb250ZXh0LFxuICAgICAgZGF0YSxcbiAgICAgIGRvYzogb3JpZ2luYWxEb2MsXG4gICAgICBkb2NXaXRoTG9jYWxlcyxcbiAgICAgIGVudGl0eUNvbmZpZzogY29sbGVjdGlvbkNvbmZpZyxcbiAgICAgIG9wZXJhdGlvbjogJ3VwZGF0ZScsXG4gICAgICByZXEsXG4gICAgICBza2lwVmFsaWRhdGlvbjogc2hvdWxkU2F2ZURyYWZ0IHx8IGRhdGEuX3N0YXR1cyA9PT0gJ2RyYWZ0JyxcbiAgICB9KVxuXG4gICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIC8vIEhhbmRsZSBwb3RlbnRpYWwgcGFzc3dvcmQgdXBkYXRlXG4gICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4gICAgY29uc3QgZGF0YVRvVXBkYXRlOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHsgLi4ucmVzdWx0IH1cblxuICAgIGlmIChzaG91bGRTYXZlUGFzc3dvcmQgJiYgdHlwZW9mIHBhc3N3b3JkID09PSAnc3RyaW5nJykge1xuICAgICAgY29uc3QgeyBoYXNoLCBzYWx0IH0gPSBhd2FpdCBnZW5lcmF0ZVBhc3N3b3JkU2FsdEhhc2goeyBwYXNzd29yZCB9KVxuICAgICAgZGF0YVRvVXBkYXRlLnNhbHQgPSBzYWx0XG4gICAgICBkYXRhVG9VcGRhdGUuaGFzaCA9IGhhc2hcbiAgICAgIGRlbGV0ZSBkYXRhVG9VcGRhdGUucGFzc3dvcmRcbiAgICAgIGRlbGV0ZSBkYXRhLnBhc3N3b3JkXG4gICAgfVxuXG4gICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIC8vIFVwZGF0ZVxuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuICAgIGlmICghc2hvdWxkU2F2ZURyYWZ0KSB7XG4gICAgICByZXN1bHQgPSBhd2FpdCByZXEucGF5bG9hZC5kYi51cGRhdGVPbmUoe1xuICAgICAgICBpZCxcbiAgICAgICAgY29sbGVjdGlvbjogY29sbGVjdGlvbkNvbmZpZy5zbHVnLFxuICAgICAgICBkYXRhOiBkYXRhVG9VcGRhdGUsXG4gICAgICAgIGxvY2FsZSxcbiAgICAgICAgcmVxLFxuICAgICAgfSlcbiAgICB9XG5cbiAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgLy8gQ3JlYXRlIHZlcnNpb25cbiAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbiAgICBpZiAoY29sbGVjdGlvbkNvbmZpZy52ZXJzaW9ucykge1xuICAgICAgcmVzdWx0ID0gYXdhaXQgc2F2ZVZlcnNpb24oe1xuICAgICAgICBpZCxcbiAgICAgICAgYXV0b3NhdmUsXG4gICAgICAgIGNvbGxlY3Rpb246IGNvbGxlY3Rpb25Db25maWcsXG4gICAgICAgIGRvY1dpdGhMb2NhbGVzOiB7XG4gICAgICAgICAgLi4ucmVzdWx0LFxuICAgICAgICAgIGNyZWF0ZWRBdDogZG9jV2l0aExvY2FsZXMuY3JlYXRlZEF0LFxuICAgICAgICB9LFxuICAgICAgICBkcmFmdDogc2hvdWxkU2F2ZURyYWZ0LFxuICAgICAgICBwYXlsb2FkLFxuICAgICAgICByZXEsXG4gICAgICB9KVxuICAgIH1cblxuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICAvLyBhZnRlclJlYWQgLSBGaWVsZHNcbiAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbiAgICByZXN1bHQgPSBhd2FpdCBhZnRlclJlYWQoe1xuICAgICAgY29udGV4dDogcmVxLmNvbnRleHQsXG4gICAgICBkZXB0aCxcbiAgICAgIGRvYzogcmVzdWx0LFxuICAgICAgZW50aXR5Q29uZmlnOiBjb2xsZWN0aW9uQ29uZmlnLFxuICAgICAgb3ZlcnJpZGVBY2Nlc3MsXG4gICAgICByZXEsXG4gICAgICBzaG93SGlkZGVuRmllbGRzLFxuICAgIH0pXG5cbiAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgLy8gYWZ0ZXJSZWFkIC0gQ29sbGVjdGlvblxuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuICAgIGF3YWl0IGNvbGxlY3Rpb25Db25maWcuaG9va3MuYWZ0ZXJSZWFkLnJlZHVjZShhc3luYyAocHJpb3JIb29rLCBob29rKSA9PiB7XG4gICAgICBhd2FpdCBwcmlvckhvb2tcblxuICAgICAgcmVzdWx0ID1cbiAgICAgICAgKGF3YWl0IGhvb2soe1xuICAgICAgICAgIGNvbnRleHQ6IHJlcS5jb250ZXh0LFxuICAgICAgICAgIGRvYzogcmVzdWx0LFxuICAgICAgICAgIHJlcSxcbiAgICAgICAgfSkpIHx8IHJlc3VsdFxuICAgIH0sIFByb21pc2UucmVzb2x2ZSgpKVxuXG4gICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIC8vIGFmdGVyQ2hhbmdlIC0gRmllbGRzXG4gICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4gICAgcmVzdWx0ID0gYXdhaXQgYWZ0ZXJDaGFuZ2U8R2VuZXJhdGVkVHlwZXNbJ2NvbGxlY3Rpb25zJ11bVFNsdWddPih7XG4gICAgICBjb250ZXh0OiByZXEuY29udGV4dCxcbiAgICAgIGRhdGEsXG4gICAgICBkb2M6IHJlc3VsdCxcbiAgICAgIGVudGl0eUNvbmZpZzogY29sbGVjdGlvbkNvbmZpZyxcbiAgICAgIG9wZXJhdGlvbjogJ3VwZGF0ZScsXG4gICAgICBwcmV2aW91c0RvYzogb3JpZ2luYWxEb2MsXG4gICAgICByZXEsXG4gICAgfSlcblxuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICAvLyBhZnRlckNoYW5nZSAtIENvbGxlY3Rpb25cbiAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbiAgICBhd2FpdCBjb2xsZWN0aW9uQ29uZmlnLmhvb2tzLmFmdGVyQ2hhbmdlLnJlZHVjZShhc3luYyAocHJpb3JIb29rLCBob29rKSA9PiB7XG4gICAgICBhd2FpdCBwcmlvckhvb2tcblxuICAgICAgcmVzdWx0ID1cbiAgICAgICAgKGF3YWl0IGhvb2soe1xuICAgICAgICAgIGNvbnRleHQ6IHJlcS5jb250ZXh0LFxuICAgICAgICAgIGRvYzogcmVzdWx0LFxuICAgICAgICAgIG9wZXJhdGlvbjogJ3VwZGF0ZScsXG4gICAgICAgICAgcHJldmlvdXNEb2M6IG9yaWdpbmFsRG9jLFxuICAgICAgICAgIHJlcSxcbiAgICAgICAgfSkpIHx8IHJlc3VsdFxuICAgIH0sIFByb21pc2UucmVzb2x2ZSgpKVxuXG4gICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIC8vIGFmdGVyT3BlcmF0aW9uIC0gQ29sbGVjdGlvblxuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuICAgIHJlc3VsdCA9IGF3YWl0IGJ1aWxkQWZ0ZXJPcGVyYXRpb248R2VuZXJhdGVkVHlwZXNbJ2NvbGxlY3Rpb25zJ11bVFNsdWddPih7XG4gICAgICBhcmdzLFxuICAgICAgb3BlcmF0aW9uOiAndXBkYXRlQnlJRCcsXG4gICAgICByZXN1bHQsXG4gICAgfSlcblxuICAgIGF3YWl0IHVubGlua1RlbXBGaWxlcyh7XG4gICAgICBjb2xsZWN0aW9uQ29uZmlnLFxuICAgICAgY29uZmlnLFxuICAgICAgcmVxLFxuICAgIH0pXG5cbiAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgLy8gUmV0dXJuIHJlc3VsdHNcbiAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbiAgICBpZiAoc2hvdWxkQ29tbWl0KSBhd2FpdCBwYXlsb2FkLmRiLmNvbW1pdFRyYW5zYWN0aW9uKHJlcS50cmFuc2FjdGlvbklEKVxuXG4gICAgcmV0dXJuIHJlc3VsdFxuICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgIGF3YWl0IGtpbGxUcmFuc2FjdGlvbihyZXEpXG4gICAgdGhyb3cgZXJyb3JcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCB1cGRhdGVCeUlEXG4iXSwibmFtZXMiOlsidXBkYXRlQnlJRCIsImluY29taW5nQXJncyIsImFyZ3MiLCJjb2xsZWN0aW9uIiwiY29uZmlnIiwiaG9va3MiLCJiZWZvcmVPcGVyYXRpb24iLCJyZWR1Y2UiLCJwcmlvckhvb2siLCJob29rIiwiY29udGV4dCIsInJlcSIsIm9wZXJhdGlvbiIsIlByb21pc2UiLCJyZXNvbHZlIiwiaWQiLCJhdXRvc2F2ZSIsImNvbGxlY3Rpb25Db25maWciLCJkZXB0aCIsImRyYWZ0IiwiZHJhZnRBcmciLCJvdmVycmlkZUFjY2VzcyIsIm92ZXJ3cml0ZUV4aXN0aW5nRmlsZXMiLCJsb2NhbGUiLCJwYXlsb2FkIiwidCIsInNob3dIaWRkZW5GaWVsZHMiLCJzaG91bGRDb21taXQiLCJpbml0VHJhbnNhY3Rpb24iLCJBUElFcnJvciIsImh0dHBTdGF0dXMiLCJCQURfUkVRVUVTVCIsImRhdGEiLCJwYXNzd29yZCIsInNob3VsZFNhdmVEcmFmdCIsIkJvb2xlYW4iLCJ2ZXJzaW9ucyIsImRyYWZ0cyIsInNob3VsZFNhdmVQYXNzd29yZCIsImF1dGgiLCJhY2Nlc3NSZXN1bHRzIiwiZXhlY3V0ZUFjY2VzcyIsImFjY2VzcyIsInVwZGF0ZSIsImhhc1doZXJlUG9saWN5IiwiaGFzV2hlcmVBY2Nlc3NSZXN1bHQiLCJmaW5kT25lQXJncyIsInNsdWciLCJ3aGVyZSIsImNvbWJpbmVRdWVyaWVzIiwiZXF1YWxzIiwiZG9jV2l0aExvY2FsZXMiLCJnZXRMYXRlc3RDb2xsZWN0aW9uVmVyc2lvbiIsInF1ZXJ5IiwiTm90Rm91bmQiLCJGb3JiaWRkZW4iLCJvcmlnaW5hbERvYyIsImFmdGVyUmVhZCIsImRvYyIsImVudGl0eUNvbmZpZyIsIm5ld0ZpbGVEYXRhIiwiZmlsZXMiLCJmaWxlc1RvVXBsb2FkIiwiZ2VuZXJhdGVGaWxlRGF0YSIsInRocm93T25NaXNzaW5nRmlsZSIsImRlbGV0ZUFzc29jaWF0ZWRGaWxlcyIsIm92ZXJyaWRlRGVsZXRlIiwiYmVmb3JlVmFsaWRhdGUiLCJ1cGxvYWQiLCJkaXNhYmxlTG9jYWxTdG9yYWdlIiwidXBsb2FkRmlsZXMiLCJiZWZvcmVDaGFuZ2UiLCJyZXN1bHQiLCJza2lwVmFsaWRhdGlvbiIsIl9zdGF0dXMiLCJkYXRhVG9VcGRhdGUiLCJoYXNoIiwic2FsdCIsImdlbmVyYXRlUGFzc3dvcmRTYWx0SGFzaCIsImRiIiwidXBkYXRlT25lIiwic2F2ZVZlcnNpb24iLCJjcmVhdGVkQXQiLCJhZnRlckNoYW5nZSIsInByZXZpb3VzRG9jIiwiYnVpbGRBZnRlck9wZXJhdGlvbiIsInVubGlua1RlbXBGaWxlcyIsImNvbW1pdFRyYW5zYWN0aW9uIiwidHJhbnNhY3Rpb25JRCIsImVycm9yIiwia2lsbFRyYW5zYWN0aW9uIl0sIm1hcHBpbmdzIjoiOzs7OytCQW1YQTs7O2VBQUE7OzttRUFqWHVCO3NFQU9HOzBDQUNlO3VCQUNKO2dDQUNOO3dCQUNlOzZCQUNsQjsyQkFDRjs4QkFDRztnQ0FDRTt1Q0FDTztrQ0FDTDtpQ0FDRDs2QkFDSjtpQ0FDSTtpQ0FDQTs0Q0FDVzs2QkFDZjt1QkFDUTs7Ozs7O0FBZ0JwQyxlQUFlQSxXQUNiQyxZQUE2RDtJQUU3RCxJQUFJQyxPQUFPRDtJQUVYLHdDQUF3QztJQUN4QywrQkFBK0I7SUFDL0Isd0NBQXdDO0lBRXhDLE1BQU1DLEtBQUtDLFVBQVUsQ0FBQ0MsTUFBTSxDQUFDQyxLQUFLLENBQUNDLGVBQWUsQ0FBQ0MsTUFBTSxDQUFDLE9BQU9DLFdBQVdDO1FBQzFFLE1BQU1EO1FBRU5OLE9BQ0UsQUFBQyxNQUFNTyxLQUFLO1lBQ1ZQO1lBQ0FRLFNBQVNSLEtBQUtTLEdBQUcsQ0FBQ0QsT0FBTztZQUN6QkUsV0FBVztRQUNiLE1BQU9WO0lBQ1gsR0FBR1csUUFBUUMsT0FBTztJQUVsQixNQUFNLEVBQ0pDLEVBQUUsRUFDRkMsV0FBVyxLQUFLLEVBQ2hCYixZQUFZLEVBQUVDLFFBQVFhLGdCQUFnQixFQUFFLEVBQ3hDZCxVQUFVLEVBQ1ZlLEtBQUssRUFDTEMsT0FBT0MsV0FBVyxLQUFLLEVBQ3ZCQyxjQUFjLEVBQ2RDLHlCQUF5QixLQUFLLEVBQzlCWCxLQUFLLEVBQ0hZLE1BQU0sRUFDTkMsU0FBUyxFQUFFcEIsTUFBTSxFQUFFLEVBQ25Cb0IsT0FBTyxF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
308
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb2xsZWN0aW9ucy9vcGVyYXRpb25zL3VwZGF0ZUJ5SUQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBEZWVwUGFydGlhbCB9IGZyb20gJ3RzLWVzc2VudGlhbHMnXG5cbmltcG9ydCBodHRwU3RhdHVzIGZyb20gJ2h0dHAtc3RhdHVzJ1xuXG5pbXBvcnQgdHlwZSB7IEZpbmRPbmVBcmdzIH0gZnJvbSAnLi4vLi4vZGF0YWJhc2UvdHlwZXMnXG5pbXBvcnQgdHlwZSB7IFBheWxvYWRSZXF1ZXN0IH0gZnJvbSAnLi4vLi4vZXhwcmVzcy90eXBlcydcbmltcG9ydCB0eXBlIHsgR2VuZXJhdGVkVHlwZXMgfSBmcm9tICcuLi8uLi9pbmRleCdcbmltcG9ydCB0eXBlIHsgQ29sbGVjdGlvbiB9IGZyb20gJy4uL2NvbmZpZy90eXBlcydcblxuaW1wb3J0IGV4ZWN1dGVBY2Nlc3MgZnJvbSAnLi4vLi4vYXV0aC9leGVjdXRlQWNjZXNzJ1xuaW1wb3J0IHsgZ2VuZXJhdGVQYXNzd29yZFNhbHRIYXNoIH0gZnJvbSAnLi4vLi4vYXV0aC9zdHJhdGVnaWVzL2xvY2FsL2dlbmVyYXRlUGFzc3dvcmRTYWx0SGFzaCdcbmltcG9ydCB7IGhhc1doZXJlQWNjZXNzUmVzdWx0IH0gZnJvbSAnLi4vLi4vYXV0aC90eXBlcydcbmltcG9ydCB7IGNvbWJpbmVRdWVyaWVzIH0gZnJvbSAnLi4vLi4vZGF0YWJhc2UvY29tYmluZVF1ZXJpZXMnXG5pbXBvcnQgeyBBUElFcnJvciwgRm9yYmlkZGVuLCBOb3RGb3VuZCB9IGZyb20gJy4uLy4uL2Vycm9ycydcbmltcG9ydCB7IGFmdGVyQ2hhbmdlIH0gZnJvbSAnLi4vLi4vZmllbGRzL2hvb2tzL2FmdGVyQ2hhbmdlJ1xuaW1wb3J0IHsgYWZ0ZXJSZWFkIH0gZnJvbSAnLi4vLi4vZmllbGRzL2hvb2tzL2FmdGVyUmVhZCdcbmltcG9ydCB7IGJlZm9yZUNoYW5nZSB9IGZyb20gJy4uLy4uL2ZpZWxkcy9ob29rcy9iZWZvcmVDaGFuZ2UnXG5pbXBvcnQgeyBiZWZvcmVWYWxpZGF0ZSB9IGZyb20gJy4uLy4uL2ZpZWxkcy9ob29rcy9iZWZvcmVWYWxpZGF0ZSdcbmltcG9ydCB7IGRlbGV0ZUFzc29jaWF0ZWRGaWxlcyB9IGZyb20gJy4uLy4uL3VwbG9hZHMvZGVsZXRlQXNzb2NpYXRlZEZpbGVzJ1xuaW1wb3J0IHsgZ2VuZXJhdGVGaWxlRGF0YSB9IGZyb20gJy4uLy4uL3VwbG9hZHMvZ2VuZXJhdGVGaWxlRGF0YSdcbmltcG9ydCB7IHVubGlua1RlbXBGaWxlcyB9IGZyb20gJy4uLy4uL3VwbG9hZHMvdW5saW5rVGVtcEZpbGVzJ1xuaW1wb3J0IHsgdXBsb2FkRmlsZXMgfSBmcm9tICcuLi8uLi91cGxvYWRzL3VwbG9hZEZpbGVzJ1xuaW1wb3J0IHsgaW5pdFRyYW5zYWN0aW9uIH0gZnJvbSAnLi4vLi4vdXRpbGl0aWVzL2luaXRUcmFuc2FjdGlvbidcbmltcG9ydCB7IGtpbGxUcmFuc2FjdGlvbiB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9raWxsVHJhbnNhY3Rpb24nXG5pbXBvcnQgeyBnZXRMYXRlc3RDb2xsZWN0aW9uVmVyc2lvbiB9IGZyb20gJy4uLy4uL3ZlcnNpb25zL2dldExhdGVzdENvbGxlY3Rpb25WZXJzaW9uJ1xuaW1wb3J0IHsgc2F2ZVZlcnNpb24gfSBmcm9tICcuLi8uLi92ZXJzaW9ucy9zYXZlVmVyc2lvbidcbmltcG9ydCB7IGJ1aWxkQWZ0ZXJPcGVyYXRpb24gfSBmcm9tICcuL3V0aWxzJ1xuXG5leHBvcnQgdHlwZSBBcmd1bWVudHM8VCBleHRlbmRzIHsgW2ZpZWxkOiBudW1iZXIgfCBzdHJpbmcgfCBzeW1ib2xdOiB1bmtub3duIH0+ID0ge1xuICBhdXRvc2F2ZT86IGJvb2xlYW5cbiAgY29sbGVjdGlvbjogQ29sbGVjdGlvblxuICBkYXRhOiBEZWVwUGFydGlhbDxUPlxuICBkZXB0aD86IG51bWJlclxuICBkaXNhYmxlVmVyaWZpY2F0aW9uRW1haWw/OiBib29sZWFuXG4gIGRyYWZ0PzogYm9vbGVhblxuICBpZDogbnVtYmVyIHwgc3RyaW5nXG4gIG92ZXJyaWRlQWNjZXNzPzogYm9vbGVhblxuICBvdmVyd3JpdGVFeGlzdGluZ0ZpbGVzPzogYm9vbGVhblxuICByZXE6IFBheWxvYWRSZXF1ZXN0XG4gIHNob3dIaWRkZW5GaWVsZHM/OiBib29sZWFuXG59XG5cbmFzeW5jIGZ1bmN0aW9uIHVwZGF0ZUJ5SUQ8VFNsdWcgZXh0ZW5kcyBrZXlvZiBHZW5lcmF0ZWRUeXBlc1snY29sbGVjdGlvbnMnXT4oXG4gIGluY29taW5nQXJnczogQXJndW1lbnRzPEdlbmVyYXRlZFR5cGVzWydjb2xsZWN0aW9ucyddW1RTbHVnXT4sXG4pOiBQcm9taXNlPEdlbmVyYXRlZFR5cGVzWydjb2xsZWN0aW9ucyddW1RTbHVnXT4ge1xuICBsZXQgYXJncyA9IGluY29taW5nQXJnc1xuXG4gIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgLy8gYmVmb3JlT3BlcmF0aW9uIC0gQ29sbGVjdGlvblxuICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbiAgYXdhaXQgYXJncy5jb2xsZWN0aW9uLmNvbmZpZy5ob29rcy5iZWZvcmVPcGVyYXRpb24ucmVkdWNlKGFzeW5jIChwcmlvckhvb2ssIGhvb2spID0+IHtcbiAgICBhd2FpdCBwcmlvckhvb2tcblxuICAgIGFyZ3MgPVxuICAgICAgKGF3YWl0IGhvb2soe1xuICAgICAgICBhcmdzLFxuICAgICAgICBjb2xsZWN0aW9uOiBhcmdzLmNvbGxlY3Rpb24uY29uZmlnLFxuICAgICAgICBjb250ZXh0OiBhcmdzLnJlcS5jb250ZXh0LFxuICAgICAgICBvcGVyYXRpb246ICd1cGRhdGUnLFxuICAgICAgfSkpIHx8IGFyZ3NcbiAgfSwgUHJvbWlzZS5yZXNvbHZlKCkpXG5cbiAgY29uc3Qge1xuICAgIGlkLFxuICAgIGF1dG9zYXZlID0gZmFsc2UsXG4gICAgY29sbGVjdGlvbjogeyBjb25maWc6IGNvbGxlY3Rpb25Db25maWcgfSxcbiAgICBjb2xsZWN0aW9uLFxuICAgIGRlcHRoLFxuICAgIGRyYWZ0OiBkcmFmdEFyZyA9IGZhbHNlLFxuICAgIG92ZXJyaWRlQWNjZXNzLFxuICAgIG92ZXJ3cml0ZUV4aXN0aW5nRmlsZXMgPSBmYWxzZSxcbiAgICByZXE6IHtcbiAgICAgIGxvY2FsZSxcbiAgICAgIHBheWxvYWQ6IHsgY29uZmlnIH0sXG4gICAgICBwYXlsb2FkLFxuICAgICAgdCxcbiAgICB9LFxuICAgIHJlcSxcbiAgICBzaG93SGlkZGVuRmllbGRzLFxuICB9ID0gYXJnc1xuXG4gIHRyeSB7XG4gICAgY29uc3Qgc2hvdWxkQ29tbWl0ID0gYXdhaXQgaW5pdFRyYW5zYWN0aW9uKHJlcSlcblxuICAgIGlmICghaWQpIHtcbiAgICAgIHRocm93IG5ldyBBUElFcnJvcignTWlzc2luZyBJRCBvZiBkb2N1bWVudCB0byB1cGRhdGUuJywgaHR0cFN0YXR1cy5CQURfUkVRVUVTVClcbiAgICB9XG5cbiAgICBsZXQgeyBkYXRhIH0gPSBhcmdzXG4gICAgY29uc3QgeyBwYXNzd29yZCB9ID0gZGF0YVxuICAgIGNvbnN0IHNob3VsZFNhdmVEcmFmdCA9IEJvb2xlYW4oZHJhZnRBcmcgJiYgY29sbGVjdGlvbkNvbmZpZy52ZXJzaW9ucy5kcmFmdHMpXG4gICAgY29uc3Qgc2hvdWxkU2F2ZVBhc3N3b3JkID0gQm9vbGVhbihwYXNzd29yZCAmJiBjb2xsZWN0aW9uQ29uZmlnLmF1dGggJiYgIXNob3VsZFNhdmVEcmFmdClcblxuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICAvLyBBY2Nlc3NcbiAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbiAgICBjb25zdCBhY2Nlc3NSZXN1bHRzID0gIW92ZXJyaWRlQWNjZXNzXG4gICAgICA/IGF3YWl0IGV4ZWN1dGVBY2Nlc3MoeyBpZCwgZGF0YSwgcmVxIH0sIGNvbGxlY3Rpb25Db25maWcuYWNjZXNzLnVwZGF0ZSlcbiAgICAgIDogdHJ1ZVxuICAgIGNvbnN0IGhhc1doZXJlUG9saWN5ID0gaGFzV2hlcmVBY2Nlc3NSZXN1bHQoYWNjZXNzUmVzdWx0cylcblxuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICAvLyBSZXRyaWV2ZSBkb2N1bWVudFxuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuICAgIGNvbnN0IGZpbmRPbmVBcmdzOiBGaW5kT25lQXJncyA9IHtcbiAgICAgIGNvbGxlY3Rpb246IGNvbGxlY3Rpb25Db25maWcuc2x1ZyxcbiAgICAgIGxvY2FsZSxcbiAgICAgIHJlcSxcbiAgICAgIHdoZXJlOiBjb21iaW5lUXVlcmllcyh7IGlkOiB7IGVxdWFsczogaWQgfSB9LCBhY2Nlc3NSZXN1bHRzKSxcbiAgICB9XG5cbiAgICBjb25zdCBkb2NXaXRoTG9jYWxlcyA9IGF3YWl0IGdldExhdGVzdENvbGxlY3Rpb25WZXJzaW9uKHtcbiAgICAgIGlkLFxuICAgICAgY29uZmlnOiBjb2xsZWN0aW9uQ29uZmlnLFxuICAgICAgcGF5bG9hZCxcbiAgICAgIHF1ZXJ5OiBmaW5kT25lQXJncyxcbiAgICAgIHJlcSxcbiAgICB9KVxuXG4gICAgaWYgKCFkb2NXaXRoTG9jYWxlcyAmJiAhaGFzV2hlcmVQb2xpY3kpIHRocm93IG5ldyBOb3RGb3VuZCh0KVxuICAgIGlmICghZG9jV2l0aExvY2FsZXMgJiYgaGFzV2hlcmVQb2xpY3kpIHRocm93IG5ldyBGb3JiaWRkZW4odClcblxuICAgIGNvbnN0IG9yaWdpbmFsRG9jID0gYXdhaXQgYWZ0ZXJSZWFkKHtcbiAgICAgIGNvbGxlY3Rpb246IGNvbGxlY3Rpb25Db25maWcsXG4gICAgICBjb250ZXh0OiByZXEuY29udGV4dCxcbiAgICAgIGRlcHRoOiAwLFxuICAgICAgZG9jOiBkb2NXaXRoTG9jYWxlcyxcbiAgICAgIGdsb2JhbDogbnVsbCxcbiAgICAgIG92ZXJyaWRlQWNjZXNzOiB0cnVlLFxuICAgICAgcmVxLFxuICAgICAgc2hvd0hpZGRlbkZpZWxkczogdHJ1ZSxcbiAgICB9KVxuXG4gICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIC8vIEdlbmVyYXRlIGRhdGEgZm9yIGFsbCBmaWxlcyBhbmQgc2l6ZXNcbiAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbiAgICBjb25zdCB7IGRhdGE6IG5ld0ZpbGVEYXRhLCBmaWxlczogZmlsZXNUb1VwbG9hZCB9ID0gYXdhaXQgZ2VuZXJhdGVGaWxlRGF0YSh7XG4gICAgICBjb2xsZWN0aW9uLFxuICAgICAgY29uZmlnLFxuICAgICAgZGF0YSxcbiAgICAgIG92ZXJ3cml0ZUV4aXN0aW5nRmlsZXMsXG4gICAgICByZXEsXG4gICAgICB0aHJvd09uTWlzc2luZ0ZpbGU6IGZhbHNlLFxuICAgIH0pXG5cbiAgICBkYXRhID0gbmV3RmlsZURhdGFcblxuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICAvLyBEZWxldGUgYW55IGFzc29jaWF0ZWQgZmlsZXNcbiAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbiAgICBhd2FpdCBkZWxldGVBc3NvY2lhdGVkRmlsZXMoe1xuICAgICAgY29sbGVjdGlvbkNvbmZpZyxcbiAgICAgIGNvbmZpZyxcbiAgICAgIGRvYzogZG9jV2l0aExvY2FsZXMsXG4gICAgICBmaWxlczogZmlsZXNUb1VwbG9hZCxcbiAgICAgIG92ZXJyaWRlRGVsZXRlOiBmYWxzZSxcbiAgICAgIHQsXG4gICAgfSlcblxuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICAvLyBiZWZvcmVWYWxpZGF0ZSAtIEZpZWxkc1xuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuICAgIGRhdGEgPSBhd2FpdCBiZWZvcmVWYWxpZGF0ZTxEZWVwUGFydGlhbDxHZW5lcmF0ZWRUeXBlc1snY29sbGVjdGlvbnMnXVtUU2x1Z10+Pih7XG4gICAgICBpZCxcbiAgICAgIGNvbGxlY3Rpb246IGNvbGxlY3Rpb25Db25maWcsXG4gICAgICBjb250ZXh0OiByZXEuY29udGV4dCxcbiAgICAgIGRhdGEsXG4gICAgICBkb2M6IG9yaWdpbmFsRG9jLFxuICAgICAgZ2xvYmFsOiBudWxsLFxuICAgICAgb3BlcmF0aW9uOiAndXBkYXRlJyxcbiAgICAgIG92ZXJyaWRlQWNjZXNzLFxuICAgICAgcmVxLFxuICAgIH0pXG5cbiAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgLy8gYmVmb3JlVmFsaWRhdGUgLSBDb2xsZWN0aW9uXG4gICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4gICAgYXdhaXQgY29sbGVjdGlvbkNvbmZpZy5ob29rcy5iZWZvcmVWYWxpZGF0ZS5yZWR1Y2UoYXN5bmMgKHByaW9ySG9vaywgaG9vaykgPT4ge1xuICAgICAgYXdhaXQgcHJpb3JIb29rXG5cbiAgICAgIGRhdGEgPVxuICAgICAgICAoYXdhaXQgaG9vayh7XG4gICAgICAgICAgY29sbGVjdGlvbjogY29sbGVjdGlvbkNvbmZpZyxcbiAgICAgICAgICBjb250ZXh0OiByZXEuY29udGV4dCxcbiAgICAgICAgICBkYXRhLFxuICAgICAgICAgIG9wZXJhdGlvbjogJ3VwZGF0ZScsXG4gICAgICAgICAgb3JpZ2luYWxEb2MsXG4gICAgICAgICAgcmVxLFxuICAgICAgICB9KSkgfHwgZGF0YVxuICAgIH0sIFByb21pc2UucmVzb2x2ZSgpKVxuXG4gICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIC8vIFdyaXRlIGZpbGVzIHRvIGxvY2FsIHN0b3JhZ2VcbiAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbiAgICBpZiAoIWNvbGxlY3Rpb25Db25maWcudXBsb2FkLmRpc2FibGVMb2NhbFN0b3JhZ2UpIHtcbiAgICAgIGF3YWl0IHVwbG9hZEZpbGVzKHBheWxvYWQsIGZpbGVzVG9VcGxvYWQsIHQpXG4gICAgfVxuXG4gICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIC8vIGJlZm9yZUNoYW5nZSAtIENvbGxlY3Rpb25cbiAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbiAgICBhd2FpdCBjb2xsZWN0aW9uQ29uZmlnLmhvb2tzLmJlZm9yZUNoYW5nZS5yZWR1Y2UoYXN5bmMgKHByaW9ySG9vaywgaG9vaykgPT4ge1xuICAgICAgYXdhaXQgcHJpb3JIb29rXG5cbiAgICAgIGRhdGEgPVxuICAgICAgICAoYXdhaXQgaG9vayh7XG4gICAgICAgICAgY29sbGVjdGlvbjogY29sbGVjdGlvbkNvbmZpZyxcbiAgICAgICAgICBjb250ZXh0OiByZXEuY29udGV4dCxcbiAgICAgICAgICBkYXRhLFxuICAgICAgICAgIG9wZXJhdGlvbjogJ3VwZGF0ZScsXG4gICAgICAgICAgb3JpZ2luYWxEb2MsXG4gICAgICAgICAgcmVxLFxuICAgICAgICB9KSkgfHwgZGF0YVxuICAgIH0sIFByb21pc2UucmVzb2x2ZSgpKVxuXG4gICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIC8vIGJlZm9yZUNoYW5nZSAtIEZpZWxkc1xuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuICAgIGxldCByZXN1bHQgPSBhd2FpdCBiZWZvcmVDaGFuZ2U8R2VuZXJhdGVkVHlwZXNbJ2NvbGxlY3Rpb25zJ11bVFNsdWddPih7XG4gICAgICBpZCxcbiAgICAgIGNvbGxlY3Rpb246IGNvbGxlY3Rpb25Db25maWcsXG4gICAgICBjb250ZXh0OiByZXEuY29udGV4dCxcbiAgICAgIGRhdGEsXG4gICAgICBkb2M6IG9yaWdpbmFsRG9jLFxuICAgICAgZG9jV2l0aExvY2FsZXMsXG4gICAgICBnbG9iYWw6IG51bGwsXG4gICAgICBvcGVyYXRpb246ICd1cGRhdGUnLFxuICAgICAgcmVxLFxuICAgICAgc2tpcFZhbGlkYXRpb246IHNob3VsZFNhdmVEcmFmdCB8fCBkYXRhLl9zdGF0dXMgPT09ICdkcmFmdCcsXG4gICAgfSlcblxuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICAvLyBIYW5kbGUgcG90ZW50aWFsIHBhc3N3b3JkIHVwZGF0ZVxuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuICAgIGNvbnN0IGRhdGFUb1VwZGF0ZTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7IC4uLnJlc3VsdCB9XG5cbiAgICBpZiAoc2hvdWxkU2F2ZVBhc3N3b3JkICYmIHR5cGVvZiBwYXNzd29yZCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGNvbnN0IHsgaGFzaCwgc2FsdCB9ID0gYXdhaXQgZ2VuZXJhdGVQYXNzd29yZFNhbHRIYXNoKHsgcGFzc3dvcmQgfSlcbiAgICAgIGRhdGFUb1VwZGF0ZS5zYWx0ID0gc2FsdFxuICAgICAgZGF0YVRvVXBkYXRlLmhhc2ggPSBoYXNoXG4gICAgICBkZWxldGUgZGF0YVRvVXBkYXRlLnBhc3N3b3JkXG4gICAgICBkZWxldGUgZGF0YS5wYXNzd29yZFxuICAgIH1cblxuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICAvLyBVcGRhdGVcbiAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbiAgICBpZiAoIXNob3VsZFNhdmVEcmFmdCkge1xuICAgICAgcmVzdWx0ID0gYXdhaXQgcmVxLnBheWxvYWQuZGIudXBkYXRlT25lKHtcbiAgICAgICAgaWQsXG4gICAgICAgIGNvbGxlY3Rpb246IGNvbGxlY3Rpb25Db25maWcuc2x1ZyxcbiAgICAgICAgZGF0YTogZGF0YVRvVXBkYXRlLFxuICAgICAgICBsb2NhbGUsXG4gICAgICAgIHJlcSxcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIC8vIENyZWF0ZSB2ZXJzaW9uXG4gICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4gICAgaWYgKGNvbGxlY3Rpb25Db25maWcudmVyc2lvbnMpIHtcbiAgICAgIHJlc3VsdCA9IGF3YWl0IHNhdmVWZXJzaW9uKHtcbiAgICAgICAgaWQsXG4gICAgICAgIGF1dG9zYXZlLFxuICAgICAgICBjb2xsZWN0aW9uOiBjb2xsZWN0aW9uQ29uZmlnLFxuICAgICAgICBkb2NXaXRoTG9jYWxlczoge1xuICAgICAgICAgIC4uLnJlc3VsdCxcbiAgICAgICAgICBjcmVhdGVkQXQ6IGRvY1dpdGhMb2NhbGVzLmNyZWF0ZWRBdCxcbiAgICAgICAgfSxcbiAgICAgICAgZHJhZnQ6IHNob3VsZFNhdmVEcmFmdCxcbiAgICAgICAgcGF5bG9hZCxcbiAgICAgICAgcmVxLFxuICAgICAgfSlcbiAgICB9XG5cbiAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgLy8gYWZ0ZXJSZWFkIC0gRmllbGRzXG4gICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4gICAgcmVzdWx0ID0gYXdhaXQgYWZ0ZXJSZWFkKHtcbiAgICAgIGNvbGxlY3Rpb246IGNvbGxlY3Rpb25Db25maWcsXG4gICAgICBjb250ZXh0OiByZXEuY29udGV4dCxcbiAgICAgIGRlcHRoLFxuICAgICAgZG9jOiByZXN1bHQsXG4gICAgICBnbG9iYWw6IG51bGwsXG4gICAgICBvdmVycmlkZUFjY2VzcyxcbiAgICAgIHJlcSxcbiAgICAgIHNob3dIaWRkZW5GaWVsZHMsXG4gICAgfSlcblxuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICAvLyBhZnRlclJlYWQgLSBDb2xsZWN0aW9uXG4gICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4gICAgYXdhaXQgY29sbGVjdGlvbkNvbmZpZy5ob29rcy5hZnRlclJlYWQucmVkdWNlKGFzeW5jIChwcmlvckhvb2ssIGhvb2spID0+IHtcbiAgICAgIGF3YWl0IHByaW9ySG9va1xuXG4gICAgICByZXN1bHQgPVxuICAgICAgICAoYXdhaXQgaG9vayh7XG4gICAgICAgICAgY29sbGVjdGlvbjogY29sbGVjdGlvbkNvbmZpZyxcbiAgICAgICAgICBjb250ZXh0OiByZXEuY29udGV4dCxcbiAgICAgICAgICBkb2M6IHJlc3VsdCxcbiAgICAgICAgICByZXEsXG4gICAgICAgIH0pKSB8fCByZXN1bHRcbiAgICB9LCBQcm9taXNlLnJlc29sdmUoKSlcblxuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICAvLyBhZnRlckNoYW5nZSAtIEZpZWxkc1xuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuICAgIHJlc3VsdCA9IGF3YWl0IGFmdGVyQ2hhbmdlPEdlbmVyYXRlZFR5cGVzWydjb2xsZWN0aW9ucyddW1RTbHVnXT4oe1xuICAgICAgY29sbGVjdGlvbjogY29sbGVjdGlvbkNvbmZpZyxcbiAgICAgIGNvbnRleHQ6IHJlcS5jb250ZXh0LFxuICAgICAgZGF0YSxcbiAgICAgIGRvYzogcmVzdWx0LFxuICAgICAgZ2xvYmFsOiBudWxsLFxuICAgICAgb3BlcmF0aW9uOiAndXBkYXRlJyxcbiAgICAgIHByZXZpb3VzRG9jOiBvcmlnaW5hbERvYyxcbiAgICAgIHJlcSxcbiAgICB9KVxuXG4gICAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIC8vIGFmdGVyQ2hhbmdlIC0gQ29sbGVjdGlvblxuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuICAgIGF3YWl0IGNvbGxlY3Rpb25Db25maWcuaG9va3MuYWZ0ZXJDaGFuZ2UucmVkdWNlKGFzeW5jIChwcmlvckhvb2ssIGhvb2spID0+IHtcbiAgICAgIGF3YWl0IHByaW9ySG9va1xuXG4gICAgICByZXN1bHQgPVxuICAgICAgICAoYXdhaXQgaG9vayh7XG4gICAgICAgICAgY29sbGVjdGlvbjogY29sbGVjdGlvbkNvbmZpZyxcbiAgICAgICAgICBjb250ZXh0OiByZXEuY29udGV4dCxcbiAgICAgICAgICBkb2M6IHJlc3VsdCxcbiAgICAgICAgICBvcGVyYXRpb246ICd1cGRhdGUnLFxuICAgICAgICAgIHByZXZpb3VzRG9jOiBvcmlnaW5hbERvYyxcbiAgICAgICAgICByZXEsXG4gICAgICAgIH0pKSB8fCByZXN1bHRcbiAgICB9LCBQcm9taXNlLnJlc29sdmUoKSlcblxuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICAvLyBhZnRlck9wZXJhdGlvbiAtIENvbGxlY3Rpb25cbiAgICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbiAgICByZXN1bHQgPSBhd2FpdCBidWlsZEFmdGVyT3BlcmF0aW9uPEdlbmVyYXRlZFR5cGVzWydjb2xsZWN0aW9ucyddW1RTbHVnXT4oe1xuICAgICAgYXJncyxcbiAgICAgIGNvbGxlY3Rpb246IGNvbGxlY3Rpb25Db25maWcsXG4gICAgICBvcGVyYXRpb246ICd1cGRhdGVCeUlEJyxcbiAgICAgIHJlc3VsdCxcbiAgICB9KVxuXG4gICAgYXdhaXQgdW5saW5rVGVtcEZpbGVzKHtcbiAgICAgIGNvbGxlY3Rpb25Db25maWcsXG4gICAgICBjb25maWcsXG4gICAgICByZXEsXG4gICAgfSlcblxuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICAvLyBSZXR1cm4gcmVzdWx0c1xuICAgIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuICAgIGlmIChzaG91bGRDb21taXQpIGF3YWl0IHBheWxvYWQuZGIuY29tbWl0VHJhbnNhY3Rpb24ocmVxLnRyYW5zYWN0aW9uSUQpXG5cbiAgICByZXR1cm4gcmVzdWx0XG4gIH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG4gICAgYXdhaXQga2lsbFRyYW5zYWN0aW9uKHJlcSlcbiAgICB0aHJvdyBlcnJvclxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IHVwZGF0ZUJ5SURcbiJdLCJuYW1lcyI6WyJ1cGRhdGVCeUlEIiwiaW5jb21pbmdBcmdzIiwiYXJncyIsImNvbGxlY3Rpb24iLCJjb25maWciLCJob29rcyIsImJlZm9yZU9wZXJhdGlvbiIsInJlZHVjZSIsInByaW9ySG9vayIsImhvb2siLCJjb250ZXh0IiwicmVxIiwib3BlcmF0aW9uIiwiUHJvbWlzZSIsInJlc29sdmUiLCJpZCIsImF1dG9zYXZlIiwiY29sbGVjdGlvbkNvbmZpZyIsImRlcHRoIiwiZHJhZnQiLCJkcmFmdEFyZyIsIm92ZXJyaWRlQWNjZXNzIiwib3ZlcndyaXRlRXhpc3RpbmdGaWxlcyIsImxvY2FsZSIsInBheWxvYWQiLCJ0Iiwic2hvd0hpZGRlbkZpZWxkcyIsInNob3VsZENvbW1pdCIsImluaXRUcmFuc2FjdGlvbiIsIkFQSUVycm9yIiwiaHR0cFN0YXR1cyIsIkJBRF9SRVFVRVNUIiwiZGF0YSIsInBhc3N3b3JkIiwic2hvdWxkU2F2ZURyYWZ0IiwiQm9vbGVhbiIsInZlcnNpb25zIiwiZHJhZnRzIiwic2hvdWxkU2F2ZVBhc3N3b3JkIiwiYXV0aCIsImFjY2Vzc1Jlc3VsdHMiLCJleGVjdXRlQWNjZXNzIiwiYWNjZXNzIiwidXBkYXRlIiwiaGFzV2hlcmVQb2xpY3kiLCJoYXNXaGVyZUFjY2Vzc1Jlc3VsdCIsImZpbmRPbmVBcmdzIiwic2x1ZyIsIndoZXJlIiwiY29tYmluZVF1ZXJpZXMiLCJlcXVhbHMiLCJkb2NXaXRoTG9jYWxlcyIsImdldExhdGVzdENvbGxlY3Rpb25WZXJzaW9uIiwicXVlcnkiLCJOb3RGb3VuZCIsIkZvcmJpZGRlbiIsIm9yaWdpbmFsRG9jIiwiYWZ0ZXJSZWFkIiwiZG9jIiwiZ2xvYmFsIiwibmV3RmlsZURhdGEiLCJmaWxlcyIsImZpbGVzVG9VcGxvYWQiLCJnZW5lcmF0ZUZpbGVEYXRhIiwidGhyb3dPbk1pc3NpbmdGaWxlIiwiZGVsZXRlQXNzb2NpYXRlZEZpbGVzIiwib3ZlcnJpZGVEZWxldGUiLCJiZWZvcmVWYWxpZGF0ZSIsInVwbG9hZCIsImRpc2FibGVMb2NhbFN0b3JhZ2UiLCJ1cGxvYWRGaWxlcyIsImJlZm9yZUNoYW5nZSIsInJlc3VsdCIsInNraXBWYWxpZGF0aW9uIiwiX3N0YXR1cyIsImRhdGFUb1VwZGF0ZSIsImhhc2giLCJzYWx0IiwiZ2VuZXJhdGVQYXNzd29yZFNhbHRIYXNoIiwiZGIiLCJ1cGRhdGVPbmUiLCJzYXZlVmVyc2lvbiIsImNyZWF0ZWRBdCIsImFmdGVyQ2hhbmdlIiwicHJldmlvdXNEb2MiLCJidWlsZEFmdGVyT3BlcmF0aW9uIiwidW5saW5rVGVtcEZpbGVzIiwiY29tbWl0VHJhbnNhY3Rpb24iLCJ0cmFuc2FjdGlvbklEIiwiZXJyb3IiLCJraWxsVHJhbnNhY3Rpb24iXSwibWFwcGluZ3MiOiI7Ozs7K0JBOFhBOzs7ZUFBQTs7O21FQTVYdUI7c0VBT0c7MENBQ2U7dUJBQ0o7Z0NBQ047d0JBQ2U7NkJBQ2xCOzJCQUNGOzhCQUNHO2dDQUNFO3VDQUNPO2tDQUNMO2lDQUNEOzZCQUNKO2lDQUNJO2lDQUNBOzRDQUNXOzZCQUNmO3VCQUNROzs7Ozs7QUFnQnBDLGVBQWVBLFdBQ2JDLFlBQTZEO0lBRTdELElBQUlDLE9BQU9EO0lBRVgsd0NBQXdDO0lBQ3hDLCtCQUErQjtJQUMvQix3Q0FBd0M7SUFFeEMsTUFBTUMsS0FBS0MsVUFBVSxDQUFDQyxNQUFNLENBQUNDLEtBQUssQ0FBQ0MsZUFBZSxDQUFDQyxNQUFNLENBQUMsT0FBT0MsV0FBV0M7UUFD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