payload 2.0.0-beta.16 → 2.0.0-beta.17

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 (57) hide show
  1. package/dist/admin/components/elements/DocumentDrawer/DrawerContent.d.ts.map +1 -1
  2. package/dist/admin/components/elements/DocumentDrawer/DrawerContent.js +3 -1
  3. package/dist/admin/components/forms/Form/buildStateFromSchema/addFieldStatePromise.d.ts +3 -1
  4. package/dist/admin/components/forms/Form/buildStateFromSchema/addFieldStatePromise.d.ts.map +1 -1
  5. package/dist/admin/components/forms/Form/buildStateFromSchema/addFieldStatePromise.js +8 -2
  6. package/dist/admin/components/forms/Form/buildStateFromSchema/index.d.ts +2 -0
  7. package/dist/admin/components/forms/Form/buildStateFromSchema/index.d.ts.map +1 -1
  8. package/dist/admin/components/forms/Form/buildStateFromSchema/index.js +3 -2
  9. package/dist/admin/components/forms/Form/buildStateFromSchema/iterateFields.d.ts +3 -1
  10. package/dist/admin/components/forms/Form/buildStateFromSchema/iterateFields.d.ts.map +1 -1
  11. package/dist/admin/components/forms/Form/buildStateFromSchema/iterateFields.js +3 -2
  12. package/dist/admin/components/forms/Form/index.d.ts.map +1 -1
  13. package/dist/admin/components/forms/Form/index.js +21 -6
  14. package/dist/admin/components/forms/Form/types.d.ts +1 -0
  15. package/dist/admin/components/forms/Form/types.d.ts.map +1 -1
  16. package/dist/admin/components/forms/field-types/Checkbox/index.scss +4 -0
  17. package/dist/admin/components/forms/field-types/RichText/index.d.ts.map +1 -1
  18. package/dist/admin/components/forms/field-types/RichText/index.js +2 -4
  19. package/dist/admin/components/forms/field-types/RichText/types.d.ts +2 -1
  20. package/dist/admin/components/forms/field-types/RichText/types.d.ts.map +1 -1
  21. package/dist/admin/components/forms/useField/index.d.ts.map +1 -1
  22. package/dist/admin/components/forms/useField/index.js +4 -1
  23. package/dist/admin/components/views/API/index.d.ts.map +1 -1
  24. package/dist/admin/components/views/API/index.js +3 -1
  25. package/dist/admin/components/views/API/index.scss +2 -1
  26. package/dist/admin/components/views/Account/index.d.ts.map +1 -1
  27. package/dist/admin/components/views/Account/index.js +4 -1
  28. package/dist/admin/components/views/Global/index.d.ts.map +1 -1
  29. package/dist/admin/components/views/Global/index.js +4 -1
  30. package/dist/admin/components/views/collections/Edit/index.d.ts.map +1 -1
  31. package/dist/admin/components/views/collections/Edit/index.js +4 -2
  32. package/dist/admin/components/views/collections/List/Cell/field-types/Richtext/index.d.ts.map +1 -1
  33. package/dist/admin/components/views/collections/List/Cell/field-types/Richtext/index.js +2 -4
  34. package/dist/config/schema.d.ts.map +1 -1
  35. package/dist/config/schema.js +3 -2
  36. package/dist/database/migrations/migrateRefresh.d.ts +1 -1
  37. package/dist/database/migrations/migrateRefresh.d.ts.map +1 -1
  38. package/dist/database/migrations/migrateRefresh.js +1 -1
  39. package/dist/fields/config/sanitize.d.ts.map +1 -1
  40. package/dist/fields/config/sanitize.js +5 -1
  41. package/dist/fields/config/schema.d.ts.map +1 -1
  42. package/dist/fields/config/schema.js +3 -2
  43. package/dist/fields/config/types.d.ts +2 -0
  44. package/dist/fields/config/types.d.ts.map +1 -1
  45. package/dist/fields/config/types.js +1 -1
  46. package/dist/fields/hooks/afterRead/promise.js +2 -2
  47. package/dist/fields/hooks/beforeChange/promise.d.ts.map +1 -1
  48. package/dist/fields/hooks/beforeChange/promise.js +2 -1
  49. package/dist/fields/validations.d.ts +3 -1
  50. package/dist/fields/validations.d.ts.map +1 -1
  51. package/dist/fields/validations.js +9 -1
  52. package/dist/graphql/schema/buildObjectType.js +2 -2
  53. package/package.json +1 -1
  54. package/dist/admin/components/views/RestAPI/index.d.ts +0 -4
  55. package/dist/admin/components/views/RestAPI/index.d.ts.map +0 -1
  56. package/dist/admin/components/views/RestAPI/index.js +0 -113
  57. package/dist/admin/components/views/RestAPI/index.scss +0 -107
@@ -314,7 +314,7 @@ function buildObjectType({ name, baseFields = {}, fields, forceNullable, parentN
314
314
  async resolve (parent, args, context) {
315
315
  let depth = payload.config.defaultDepth;
316
316
  if (typeof args.depth !== 'undefined') depth = args.depth;
317
- const editor = field?.editor || payload?.config?.editor;
317
+ const editor = field?.editor;
318
318
  if (editor?.afterReadPromise) {
319
319
  await editor?.afterReadPromise({
320
320
  depth,
@@ -469,4 +469,4 @@ function buildObjectType({ name, baseFields = {}, fields, forceNullable, parentN
469
469
  }
470
470
  const _default = buildObjectType;
471
471
 
472
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ncmFwaHFsL3NjaGVtYS9idWlsZE9iamVjdFR5cGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVzZS1iZWZvcmUtZGVmaW5lICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1hd2FpdC1pbi1sb29wICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1yZXN0cmljdGVkLXN5bnRheCAqL1xuaW1wb3J0IHR5cGUgeyBHcmFwaFFMRmllbGRDb25maWcsIEdyYXBoUUxUeXBlIH0gZnJvbSAnZ3JhcGhxbCdcblxuaW1wb3J0IHtcbiAgR3JhcGhRTEJvb2xlYW4sXG4gIEdyYXBoUUxFbnVtVHlwZSxcbiAgR3JhcGhRTEZsb2F0LFxuICBHcmFwaFFMSW50LFxuICBHcmFwaFFMTGlzdCxcbiAgR3JhcGhRTE5vbk51bGwsXG4gIEdyYXBoUUxPYmplY3RUeXBlLFxuICBHcmFwaFFMU3RyaW5nLFxuICBHcmFwaFFMVW5pb25UeXBlLFxufSBmcm9tICdncmFwaHFsJ1xuaW1wb3J0IHsgRGF0ZVRpbWVSZXNvbHZlciwgRW1haWxBZGRyZXNzUmVzb2x2ZXIgfSBmcm9tICdncmFwaHFsLXNjYWxhcnMnXG4vKiBlc2xpbnQtZGlzYWJsZSBuby11c2UtYmVmb3JlLWRlZmluZSAqL1xuaW1wb3J0IHsgR3JhcGhRTEpTT04gfSBmcm9tICdncmFwaHFsLXR5cGUtanNvbidcblxuaW1wb3J0IHR5cGUgeyBSaWNoVGV4dEFkYXB0ZXIgfSBmcm9tICcuLi8uLi9hZG1pbi9jb21wb25lbnRzL2Zvcm1zL2ZpZWxkLXR5cGVzL1JpY2hUZXh0L3R5cGVzJ1xuaW1wb3J0IHR5cGUge1xuICBBcnJheUZpZWxkLFxuICBCbG9ja0ZpZWxkLFxuICBDaGVja2JveEZpZWxkLFxuICBDb2RlRmllbGQsXG4gIENvbGxhcHNpYmxlRmllbGQsXG4gIERhdGVGaWVsZCxcbiAgRW1haWxGaWVsZCxcbiAgRmllbGQsXG4gIEdyb3VwRmllbGQsXG4gIEpTT05GaWVsZCxcbiAgTnVtYmVyRmllbGQsXG4gIFBvaW50RmllbGQsXG4gIFJhZGlvRmllbGQsXG4gIFJlbGF0aW9uc2hpcEZpZWxkLFxuICBSaWNoVGV4dEZpZWxkLFxuICBSb3dGaWVsZCxcbiAgU2VsZWN0RmllbGQsXG4gIFRhYnNGaWVsZCxcbiAgVGV4dEZpZWxkLFxuICBUZXh0YXJlYUZpZWxkLFxuICBVcGxvYWRGaWVsZCxcbn0gZnJvbSAnLi4vLi4vZmllbGRzL2NvbmZpZy90eXBlcydcbmltcG9ydCB0eXBlIHsgUGF5bG9hZCB9IGZyb20gJy4uLy4uL3BheWxvYWQnXG5cbmltcG9ydCB7IHRhYkhhc05hbWUgfSBmcm9tICcuLi8uLi9maWVsZHMvY29uZmlnL3R5cGVzJ1xuaW1wb3J0IHsgdG9Xb3JkcyB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9mb3JtYXRMYWJlbHMnXG5pbXBvcnQgY29tYmluZVBhcmVudE5hbWUgZnJvbSAnLi4vdXRpbGl0aWVzL2NvbWJpbmVQYXJlbnROYW1lJ1xuaW1wb3J0IGZvcm1hdE5hbWUgZnJvbSAnLi4vdXRpbGl0aWVzL2Zvcm1hdE5hbWUnXG5pbXBvcnQgZm9ybWF0T3B0aW9ucyBmcm9tICcuLi91dGlsaXRpZXMvZm9ybWF0T3B0aW9ucydcbmltcG9ydCBidWlsZFdoZXJlSW5wdXRUeXBlIGZyb20gJy4vYnVpbGRXaGVyZUlucHV0VHlwZSdcbmltcG9ydCBpc0ZpZWxkTnVsbGFibGUgZnJvbSAnLi9pc0ZpZWxkTnVsbGFibGUnXG5pbXBvcnQgd2l0aE51bGxhYmxlVHlwZSBmcm9tICcuL3dpdGhOdWxsYWJsZVR5cGUnXG5cbnR5cGUgTG9jYWxlSW5wdXRUeXBlID0ge1xuICBmYWxsYmFja0xvY2FsZToge1xuICAgIHR5cGU6IEdyYXBoUUxUeXBlXG4gIH1cbiAgbG9jYWxlOiB7XG4gICAgdHlwZTogR3JhcGhRTFR5cGVcbiAgfVxuICB3aGVyZToge1xuICAgIHR5cGU6IEdyYXBoUUxUeXBlXG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgT2JqZWN0VHlwZUNvbmZpZyA9IHtcbiAgW3BhdGg6IHN0cmluZ106IEdyYXBoUUxGaWVsZENvbmZpZzxhbnksIGFueT5cbn1cblxudHlwZSBBcmdzID0ge1xuICBiYXNlRmllbGRzPzogT2JqZWN0VHlwZUNvbmZpZ1xuICBmaWVsZHM6IEZpZWxkW11cbiAgZm9yY2VOdWxsYWJsZT86IGJvb2xlYW5cbiAgbmFtZTogc3RyaW5nXG4gIHBhcmVudE5hbWU6IHN0cmluZ1xuICBwYXlsb2FkOiBQYXlsb2FkXG59XG5cbmZ1bmN0aW9uIGJ1aWxkT2JqZWN0VHlwZSh7XG4gIG5hbWUsXG4gIGJhc2VGaWVsZHMgPSB7fSxcbiAgZmllbGRzLFxuICBmb3JjZU51bGxhYmxlLFxuICBwYXJlbnROYW1lLFxuICBwYXlsb2FkLFxufTogQXJncyk6IEdyYXBoUUxPYmplY3RUeXBlIHtcbiAgY29uc3QgZmllbGRUb1NjaGVtYU1hcCA9IHtcbiAgICBhcnJheTogKG9iamVjdFR5cGVDb25maWc6IE9iamVjdFR5cGVDb25maWcsIGZpZWxkOiBBcnJheUZpZWxkKSA9PiB7XG4gICAgICBjb25zdCBpbnRlcmZhY2VOYW1lID1cbiAgICAgICAgZmllbGQ/LmludGVyZmFjZU5hbWUgfHwgY29tYmluZVBhcmVudE5hbWUocGFyZW50TmFtZSwgdG9Xb3JkcyhmaWVsZC5uYW1lLCB0cnVlKSlcblxuICAgICAgaWYgKCFwYXlsb2FkLnR5cGVzLmFycmF5VHlwZXNbaW50ZXJmYWNlTmFtZV0pIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gICAgICAgIHBheWxvYWQudHlwZXMuYXJyYXlUeXBlc1tpbnRlcmZhY2VOYW1lXSA9IGJ1aWxkT2JqZWN0VHlwZSh7XG4gICAgICAgICAgbmFtZTogaW50ZXJmYWNlTmFtZSxcbiAgICAgICAgICBmaWVsZHM6IGZpZWxkLmZpZWxkcyxcbiAgICAgICAgICBmb3JjZU51bGxhYmxlOiBpc0ZpZWxkTnVsbGFibGUoZmllbGQsIGZvcmNlTnVsbGFibGUpLFxuICAgICAgICAgIHBhcmVudE5hbWU6IGludGVyZmFjZU5hbWUsXG4gICAgICAgICAgcGF5bG9hZCxcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgY29uc3QgYXJyYXlUeXBlID0gbmV3IEdyYXBoUUxMaXN0KG5ldyBHcmFwaFFMTm9uTnVsbChwYXlsb2FkLnR5cGVzLmFycmF5VHlwZXNbaW50ZXJmYWNlTmFtZV0pKVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5vYmplY3RUeXBlQ29uZmlnLFxuICAgICAgICBbZmllbGQubmFtZV06IHsgdHlwZTogd2l0aE51bGxhYmxlVHlwZShmaWVsZCwgYXJyYXlUeXBlKSB9LFxuICAgICAgfVxuICAgIH0sXG4gICAgYmxvY2tzOiAob2JqZWN0VHlwZUNvbmZpZzogT2JqZWN0VHlwZUNvbmZpZywgZmllbGQ6IEJsb2NrRmllbGQpID0+IHtcbiAgICAgIGNvbnN0IGJsb2NrVHlwZXMgPSBmaWVsZC5ibG9ja3MubWFwKChibG9jaykgPT4ge1xuICAgICAgICBpZiAoIXBheWxvYWQudHlwZXMuYmxvY2tUeXBlc1tibG9jay5zbHVnXSkge1xuICAgICAgICAgIGNvbnN0IGludGVyZmFjZU5hbWUgPVxuICAgICAgICAgICAgYmxvY2s/LmludGVyZmFjZU5hbWUgfHwgYmxvY2s/LmdyYXBoUUw/LnNpbmd1bGFyTmFtZSB8fCB0b1dvcmRzKGJsb2NrLnNsdWcsIHRydWUpXG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gICAgICAgICAgcGF5bG9hZC50eXBlcy5ibG9ja1R5cGVzW2Jsb2NrLnNsdWddID0gYnVpbGRPYmplY3RUeXBlKHtcbiAgICAgICAgICAgIG5hbWU6IGludGVyZmFjZU5hbWUsXG4gICAgICAgICAgICBmaWVsZHM6IFtcbiAgICAgICAgICAgICAgLi4uYmxvY2suZmllbGRzLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ2Jsb2NrVHlwZScsXG4gICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGZvcmNlTnVsbGFibGUsXG4gICAgICAgICAgICBwYXJlbnROYW1lOiBpbnRlcmZhY2VOYW1lLFxuICAgICAgICAgICAgcGF5bG9hZCxcbiAgICAgICAgICB9KVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHBheWxvYWQudHlwZXMuYmxvY2tUeXBlc1tibG9jay5zbHVnXVxuICAgICAgfSlcblxuICAgICAgY29uc3QgZnVsbE5hbWUgPSBjb21iaW5lUGFyZW50TmFtZShwYXJlbnROYW1lLCB0b1dvcmRzKGZpZWxkLm5hbWUsIHRydWUpKVxuXG4gICAgICBjb25zdCB0eXBlID0gbmV3IEdyYXBoUUxMaXN0KFxuICAgICAgICBuZXcgR3JhcGhRTE5vbk51bGwoXG4gICAgICAgICAgbmV3IEdyYXBoUUxVbmlvblR5cGUoe1xuICAgICAgICAgICAgbmFtZTogZnVsbE5hbWUsXG4gICAgICAgICAgICByZXNvbHZlVHlwZTogKGRhdGEpID0+IHBheWxvYWQudHlwZXMuYmxvY2tUeXBlc1tkYXRhLmJsb2NrVHlwZV0ubmFtZSxcbiAgICAgICAgICAgIHR5cGVzOiBibG9ja1R5cGVzLFxuICAgICAgICAgIH0pLFxuICAgICAgICApLFxuICAgICAgKVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5vYmplY3RUeXBlQ29uZmlnLFxuICAgICAgICBbZmllbGQubmFtZV06IHsgdHlwZTogd2l0aE51bGxhYmxlVHlwZShmaWVsZCwgdHlwZSkgfSxcbiAgICAgIH1cbiAgICB9LFxuICAgIGNoZWNrYm94OiAob2JqZWN0VHlwZUNvbmZpZzogT2JqZWN0VHlwZUNvbmZpZywgZmllbGQ6IENoZWNrYm94RmllbGQpID0+ICh7XG4gICAgICAuLi5vYmplY3RUeXBlQ29uZmlnLFxuICAgICAgW2ZpZWxkLm5hbWVdOiB7IHR5cGU6IHdpdGhOdWxsYWJsZVR5cGUoZmllbGQsIEdyYXBoUUxCb29sZWFuLCBmb3JjZU51bGxhYmxlKSB9LFxuICAgIH0pLFxuICAgIGNvZGU6IChvYmplY3RUeXBlQ29uZmlnOiBPYmplY3RUeXBlQ29uZmlnLCBmaWVsZDogQ29kZUZpZWxkKSA9PiAoe1xuICAgICAgLi4ub2JqZWN0VHlwZUNvbmZpZyxcbiAgICAgIFtmaWVsZC5uYW1lXTogeyB0eXBlOiB3aXRoTnVsbGFibGVUeXBlKGZpZWxkLCBHcmFwaFFMU3RyaW5nLCBmb3JjZU51bGxhYmxlKSB9LFxuICAgIH0pLFxuICAgIGNvbGxhcHNpYmxlOiAob2JqZWN0VHlwZUNvbmZpZzogT2JqZWN0VHlwZUNvbmZpZywgZmllbGQ6IENvbGxhcHNpYmxlRmllbGQpID0+XG4gICAgICBmaWVsZC5maWVsZHMucmVkdWNlKChvYmplY3RUeXBlQ29uZmlnV2l0aENvbGxhcHNpYmxlRmllbGRzLCBzdWJGaWVsZCkgPT4ge1xuICAgICAgICBjb25zdCBhZGRTdWJGaWVsZCA9IGZpZWxkVG9TY2hlbWFNYXBbc3ViRmllbGQudHlwZV1cbiAgICAgICAgaWYgKGFkZFN1YkZpZWxkKSByZXR1cm4gYWRkU3ViRmllbGQob2JqZWN0VHlwZUNvbmZpZ1dpdGhDb2xsYXBzaWJsZUZpZWxkcywgc3ViRmllbGQpXG4gICAgICAgIHJldHVybiBvYmplY3RUeXBlQ29uZmlnV2l0aENvbGxhcHNpYmxlRmllbGRzXG4gICAgICB9LCBvYmplY3RUeXBlQ29uZmlnKSxcbiAgICBkYXRlOiAob2JqZWN0VHlwZUNvbmZpZzogT2JqZWN0VHlwZUNvbmZpZywgZmllbGQ6IERhdGVGaWVsZCkgPT4gKHtcbiAgICAgIC4uLm9iamVjdFR5cGVDb25maWcsXG4gICAgICBbZmllbGQubmFtZV06IHsgdHlwZTogd2l0aE51bGxhYmxlVHlwZShmaWVsZCwgRGF0ZVRpbWVSZXNvbHZlciwgZm9yY2VOdWxsYWJsZSkgfSxcbiAgICB9KSxcbiAgICBlbWFpbDogKG9iamVjdFR5cGVDb25maWc6IE9iamVjdFR5cGVDb25maWcsIGZpZWxkOiBFbWFpbEZpZWxkKSA9PiAoe1xuICAgICAgLi4ub2JqZWN0VHlwZUNvbmZpZyxcbiAgICAgIFtmaWVsZC5uYW1lXTogeyB0eXBlOiB3aXRoTnVsbGFibGVUeXBlKGZpZWxkLCBFbWFpbEFkZHJlc3NSZXNvbHZlciwgZm9yY2VOdWxsYWJsZSkgfSxcbiAgICB9KSxcbiAgICBncm91cDogKG9iamVjdFR5cGVDb25maWc6IE9iamVjdFR5cGVDb25maWcsIGZpZWxkOiBHcm91cEZpZWxkKSA9PiB7XG4gICAgICBjb25zdCBpbnRlcmZhY2VOYW1lID1cbiAgICAgICAgZmllbGQ/LmludGVyZmFjZU5hbWUgfHwgY29tYmluZVBhcmVudE5hbWUocGFyZW50TmFtZSwgdG9Xb3JkcyhmaWVsZC5uYW1lLCB0cnVlKSlcblxuICAgICAgaWYgKCFwYXlsb2FkLnR5cGVzLmdyb3VwVHlwZXNbaW50ZXJmYWNlTmFtZV0pIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gICAgICAgIHBheWxvYWQudHlwZXMuZ3JvdXBUeXBlc1tpbnRlcmZhY2VOYW1lXSA9IGJ1aWxkT2JqZWN0VHlwZSh7XG4gICAgICAgICAgbmFtZTogaW50ZXJmYWNlTmFtZSxcbiAgICAgICAgICBmaWVsZHM6IGZpZWxkLmZpZWxkcyxcbiAgICAgICAgICBmb3JjZU51bGxhYmxlOiBpc0ZpZWxkTnVsbGFibGUoZmllbGQsIGZvcmNlTnVsbGFibGUpLFxuICAgICAgICAgIHBhcmVudE5hbWU6IGludGVyZmFjZU5hbWUsXG4gICAgICAgICAgcGF5bG9hZCxcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ub2JqZWN0VHlwZUNvbmZpZyxcbiAgICAgICAgW2ZpZWxkLm5hbWVdOiB7IHR5cGU6IHBheWxvYWQudHlwZXMuZ3JvdXBUeXBlc1tpbnRlcmZhY2VOYW1lXSB9LFxuICAgICAgfVxuICAgIH0sXG4gICAganNvbjogKG9iamVjdFR5cGVDb25maWc6IE9iamVjdFR5cGVDb25maWcsIGZpZWxkOiBKU09ORmllbGQpID0+ICh7XG4gICAgICAuLi5vYmplY3RUeXBlQ29uZmlnLFxuICAgICAgW2ZpZWxkLm5hbWVdOiB7IHR5cGU6IHdpdGhOdWxsYWJsZVR5cGUoZmllbGQsIEdyYXBoUUxKU09OLCBmb3JjZU51bGxhYmxlKSB9LFxuICAgIH0pLFxuICAgIG51bWJlcjogKG9iamVjdFR5cGVDb25maWc6IE9iamVjdFR5cGVDb25maWcsIGZpZWxkOiBOdW1iZXJGaWVsZCkgPT4ge1xuICAgICAgY29uc3QgdHlwZSA9IGZpZWxkPy5uYW1lID09PSAnaWQnID8gR3JhcGhRTEludCA6IEdyYXBoUUxGbG9hdFxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ub2JqZWN0VHlwZUNvbmZpZyxcbiAgICAgICAgW2ZpZWxkLm5hbWVdOiB7XG4gICAgICAgICAgdHlwZTogd2l0aE51bGxhYmxlVHlwZShcbiAgICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgICAgZmllbGQ/Lmhhc01hbnkgPT09IHRydWUgPyBuZXcgR3JhcGhRTExpc3QodHlwZSkgOiB0eXBlLFxuICAgICAgICAgICAgZm9yY2VOdWxsYWJsZSxcbiAgICAgICAgICApLFxuICAgICAgICB9LFxuICAgICAgfVxuICAgIH0sXG4gICAgcG9pbnQ6IChvYmplY3RUeXBlQ29uZmlnOiBPYmplY3RUeXBlQ29uZmlnLCBmaWVsZDogUG9pbnRGaWVsZCkgPT4gKHtcbiAgICAgIC4uLm9iamVjdFR5cGVDb25maWcsXG4gICAgICBbZmllbGQubmFtZV06IHtcbiAgICAgICAgdHlwZTogd2l0aE51bGxhYmxlVHlwZShcbiAgICAgICAgICBmaWVsZCxcbiAgICAgICAgICBuZXcgR3JhcGhRTExpc3QobmV3IEdyYXBoUUxOb25OdWxsKEdyYXBoUUxGbG9hdCkpLFxuICAgICAgICAgIGZvcmNlTnVsbGFibGUsXG4gICAgICAgICksXG4gICAgICB9LFxuICAgIH0pLFxuICAgIHJhZGlvOiAob2JqZWN0VHlwZUNvbmZpZzogT2JqZWN0VHlwZUNvbmZpZywgZmllbGQ6IFJhZGlvRmllbGQpID0+ICh7XG4gICAgICAuLi5vYmplY3RUeXBlQ29uZmlnLFxuICAgICAgW2ZpZWxkLm5hbWVdOiB7XG4gICAgICAgIHR5cGU6IHdpdGhOdWxsYWJsZVR5cGUoXG4gICAgICAgICAgZmllbGQsXG4gICAgICAgICAgbmV3IEdyYXBoUUxFbnVtVHlwZSh7XG4gICAgICAgICAgICBuYW1lOiBjb21iaW5lUGFyZW50TmFtZShwYXJlbnROYW1lLCBmaWVsZC5uYW1lKSxcbiAgICAgICAgICAgIHZhbHVlczogZm9ybWF0T3B0aW9ucyhmaWVsZCksXG4gICAgICAgICAgfSksXG4gICAgICAgICAgZm9yY2VOdWxsYWJsZSxcbiAgICAgICAgKSxcbiAgICAgIH0sXG4gICAgfSksXG4gICAgcmVsYXRpb25zaGlwOiAob2JqZWN0VHlwZUNvbmZpZzogT2JqZWN0VHlwZUNvbmZpZywgZmllbGQ6IFJlbGF0aW9uc2hpcEZpZWxkKSA9PiB7XG4gICAgICBjb25zdCB7IHJlbGF0aW9uVG8gfSA9IGZpZWxkXG4gICAgICBjb25zdCBpc1JlbGF0ZWRUb01hbnlDb2xsZWN0aW9ucyA9IEFycmF5LmlzQXJyYXkocmVsYXRpb25UbylcbiAgICAgIGNvbnN0IGhhc01hbnlWYWx1ZXMgPSBmaWVsZC5oYXNNYW55XG4gICAgICBjb25zdCByZWxhdGlvbnNoaXBOYW1lID0gY29tYmluZVBhcmVudE5hbWUocGFyZW50TmFtZSwgdG9Xb3JkcyhmaWVsZC5uYW1lLCB0cnVlKSlcblxuICAgICAgbGV0IHR5cGVcbiAgICAgIGxldCByZWxhdGlvblRvVHlwZSA9IG51bGxcblxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkocmVsYXRpb25UbykpIHtcbiAgICAgICAgcmVsYXRpb25Ub1R5cGUgPSBuZXcgR3JhcGhRTEVudW1UeXBlKHtcbiAgICAgICAgICBuYW1lOiBgJHtyZWxhdGlvbnNoaXBOYW1lfV9SZWxhdGlvblRvYCxcbiAgICAgICAgICB2YWx1ZXM6IHJlbGF0aW9uVG8ucmVkdWNlKFxuICAgICAgICAgICAgKHJlbGF0aW9ucywgcmVsYXRpb24pID0+ICh7XG4gICAgICAgICAgICAgIC4uLnJlbGF0aW9ucyxcbiAgICAgICAgICAgICAgW2Zvcm1hdE5hbWUocmVsYXRpb24pXToge1xuICAgICAgICAgICAgICAgIHZhbHVlOiByZWxhdGlvbixcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAge30sXG4gICAgICAgICAgKSxcbiAgICAgICAgfSlcblxuICAgICAgICBjb25zdCB0eXBlcyA9IHJlbGF0aW9uVG8ubWFwKChyZWxhdGlvbikgPT4gcGF5bG9hZC5jb2xsZWN0aW9uc1tyZWxhdGlvbl0uZ3JhcGhRTC50eXBlKVxuXG4gICAgICAgIHR5cGUgPSBuZXcgR3JhcGhRTE9iamVjdFR5cGUoe1xuICAgICAgICAgIG5hbWU6IGAke3JlbGF0aW9uc2hpcE5hbWV9X1JlbGF0aW9uc2hpcGAsXG4gICAgICAgICAgZmllbGRzOiB7XG4gICAgICAgICAgICByZWxhdGlvblRvOiB7XG4gICAgICAgICAgICAgIHR5cGU6IHJlbGF0aW9uVG9UeXBlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgICAgIHR5cGU6IG5ldyBHcmFwaFFMVW5pb25UeXBlKHtcbiAgICAgICAgICAgICAgICBuYW1lOiByZWxhdGlvbnNoaXBOYW1lLFxuICAgICAgICAgICAgICAgIGFzeW5jIHJlc29sdmVUeXBlKGRhdGEsIHsgcmVxIH0pIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBwYXlsb2FkLmNvbGxlY3Rpb25zW2RhdGEuY29sbGVjdGlvbl0uZ3JhcGhRTC50eXBlLm5hbWVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHR5cGVzLFxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIDsoeyB0eXBlIH0gPSBwYXlsb2FkLmNvbGxlY3Rpb25zW3JlbGF0aW9uVG9dLmdyYXBoUUwpXG4gICAgICB9XG5cbiAgICAgIC8vIElmIHRoZSByZWxhdGlvbnNoaXBUeXBlIGlzIHVuZGVmaW5lZCBhdCB0aGlzIHBvaW50LFxuICAgICAgLy8gaXQgY2FuIGJlIGFzc3VtZWQgdGhhdCB0aGlzIGJsb2NrVHlwZSBjYW4gaGF2ZSBhIHJlbGF0aW9uc2hpcFxuICAgICAgLy8gdG8gaXRzZWxmLiBUaGVyZWZvcmUsIHdlIHNldCB0aGUgcmVsYXRpb25zaGlwVHlwZSBlcXVhbCB0byB0aGUgYmxvY2tUeXBlXG4gICAgICAvLyB0aGF0IGlzIGN1cnJlbnRseSBiZWluZyBjcmVhdGVkLlxuXG4gICAgICB0eXBlID0gdHlwZSB8fCBuZXdseUNyZWF0ZWRCbG9ja1R5cGVcblxuICAgICAgY29uc3QgcmVsYXRpb25zaGlwQXJnczoge1xuICAgICAgICBmYWxsYmFja0xvY2FsZT86IHVua25vd25cbiAgICAgICAgbGltaXQ/OiB1bmtub3duXG4gICAgICAgIGxvY2FsZT86IHVua25vd25cbiAgICAgICAgcGFnZT86IHVua25vd25cbiAgICAgICAgd2hlcmU/OiB1bmtub3duXG4gICAgICB9ID0ge31cblxuICAgICAgaWYgKHBheWxvYWQuY29uZmlnLmxvY2FsaXphdGlvbikge1xuICAgICAgICByZWxhdGlvbnNoaXBBcmdzLmxvY2FsZSA9IHtcbiAgICAgICAgICB0eXBlOiBwYXlsb2FkLnR5cGVzLmxvY2FsZUlucHV0VHlwZSxcbiAgICAgICAgfVxuXG4gICAgICAgIHJlbGF0aW9uc2hpcEFyZ3MuZmFsbGJhY2tMb2NhbGUgPSB7XG4gICAgICAgICAgdHlwZTogcGF5bG9hZC50eXBlcy5mYWxsYmFja0xvY2FsZUlucHV0VHlwZSxcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zdCByZWxhdGlvbnNoaXAgPSB7XG4gICAgICAgIGFyZ3M6IHJlbGF0aW9uc2hpcEFyZ3MsXG4gICAgICAgIGV4dGVuc2lvbnM6IHsgY29tcGxleGl0eTogMTAgfSxcbiAgICAgICAgYXN5bmMgcmVzb2x2ZShwYXJlbnQsIGFyZ3MsIGNvbnRleHQpIHtcbiAgICAgICAgICBjb25zdCB2YWx1ZSA9IHBhcmVudFtmaWVsZC5uYW1lXVxuICAgICAgICAgIGNvbnN0IGxvY2FsZSA9IGFyZ3MubG9jYWxlIHx8IGNvbnRleHQucmVxLmxvY2FsZVxuICAgICAgICAgIGNvbnN0IGZhbGxiYWNrTG9jYWxlID0gYXJncy5mYWxsYmFja0xvY2FsZSB8fCBjb250ZXh0LnJlcS5mYWxsYmFja0xvY2FsZVxuICAgICAgICAgIGxldCByZWxhdGVkQ29sbGVjdGlvblNsdWcgPSBmaWVsZC5yZWxhdGlvblRvXG5cbiAgICAgICAgICBpZiAoaGFzTWFueVZhbHVlcykge1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0cyA9IFtdXG4gICAgICAgICAgICBjb25zdCByZXN1bHRQcm9taXNlcyA9IFtdXG5cbiAgICAgICAgICAgIGNvbnN0IGNyZWF0ZVBvcHVsYXRpb25Qcm9taXNlID0gYXN5bmMgKHJlbGF0ZWREb2MsIGkpID0+IHtcbiAgICAgICAgICAgICAgbGV0IGlkID0gcmVsYXRlZERvY1xuICAgICAgICAgICAgICBsZXQgY29sbGVjdGlvblNsdWcgPSBmaWVsZC5yZWxhdGlvblRvXG5cbiAgICAgICAgICAgICAgaWYgKGlzUmVsYXRlZFRvTWFueUNvbGxlY3Rpb25zKSB7XG4gICAgICAgICAgICAgICAgY29sbGVjdGlvblNsdWcgPSByZWxhdGVkRG9jLnJlbGF0aW9uVG9cbiAgICAgICAgICAgICAgICBpZCA9IHJlbGF0ZWREb2MudmFsdWVcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGNvbnRleHQucmVxLnBheWxvYWREYXRhTG9hZGVyLmxvYWQoXG4gICAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoW1xuICAgICAgICAgICAgICAgICAgY29udGV4dC5yZXEudHJhbnNhY3Rpb25JRCxcbiAgICAgICAgICAgICAgICAgIGNvbGxlY3Rpb25TbHVnLFxuICAgICAgICAgICAgICAgICAgaWQsXG4gICAgICAgICAgICAgICAgICAwLFxuICAgICAgICAgICAgICAgICAgMCxcbiAgICAgICAgICAgICAgICAgIGxvY2FsZSxcbiAgICAgICAgICAgICAgICAgIGZhbGxiYWNrTG9jYWxlLFxuICAgICAgICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgICAgICAgICBmYWxzZSxcbiAgICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgKVxuXG4gICAgICAgICAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgICAgICAgICBpZiAoaXNSZWxhdGVkVG9NYW55Q29sbGVjdGlvbnMpIHtcbiAgICAgICAgICAgICAgICAgIHJlc3VsdHNbaV0gPSB7XG4gICAgICAgICAgICAgICAgICAgIHJlbGF0aW9uVG86IGNvbGxlY3Rpb25TbHVnLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgICAgICAgICAgIC4uLnJlc3VsdCxcbiAgICAgICAgICAgICAgICAgICAgICBjb2xsZWN0aW9uOiBjb2xsZWN0aW9uU2x1ZyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgcmVzdWx0c1tpXSA9IHJlc3VsdFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgdmFsdWUuZm9yRWFjaCgocmVsYXRlZERvYywgaSkgPT4ge1xuICAgICAgICAgICAgICAgIHJlc3VsdFByb21pc2VzLnB1c2goY3JlYXRlUG9wdWxhdGlvblByb21pc2UocmVsYXRlZERvYywgaSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKHJlc3VsdFByb21pc2VzKVxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdHNcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBsZXQgaWQgPSB2YWx1ZVxuICAgICAgICAgIGlmIChpc1JlbGF0ZWRUb01hbnlDb2xsZWN0aW9ucyAmJiB2YWx1ZSkge1xuICAgICAgICAgICAgaWQgPSB2YWx1ZS52YWx1ZVxuICAgICAgICAgICAgcmVsYXRlZENvbGxlY3Rpb25TbHVnID0gdmFsdWUucmVsYXRpb25Ub1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChpZCkge1xuICAgICAgICAgICAgY29uc3QgcmVsYXRlZERvY3VtZW50ID0gYXdhaXQgY29udGV4dC5yZXEucGF5bG9hZERhdGFMb2FkZXIubG9hZChcbiAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoW1xuICAgICAgICAgICAgICAgIGNvbnRleHQucmVxLnRyYW5zYWN0aW9uSUQsXG4gICAgICAgICAgICAgICAgcmVsYXRlZENvbGxlY3Rpb25TbHVnLFxuICAgICAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAgICAgMCxcbiAgICAgICAgICAgICAgICBsb2NhbGUsXG4gICAgICAgICAgICAgICAgZmFsbGJhY2tMb2NhbGUsXG4gICAgICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgKVxuXG4gICAgICAgICAgICBpZiAocmVsYXRlZERvY3VtZW50KSB7XG4gICAgICAgICAgICAgIGlmIChpc1JlbGF0ZWRUb01hbnlDb2xsZWN0aW9ucykge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICByZWxhdGlvblRvOiByZWxhdGVkQ29sbGVjdGlvblNsdWcsXG4gICAgICAgICAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgICAgICAgICAuLi5yZWxhdGVkRG9jdW1lbnQsXG4gICAgICAgICAgICAgICAgICAgIGNvbGxlY3Rpb246IHJlbGF0ZWRDb2xsZWN0aW9uU2x1ZyxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgcmV0dXJuIHJlbGF0ZWREb2N1bWVudFxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgIH0sXG4gICAgICAgIHR5cGU6IHdpdGhOdWxsYWJsZVR5cGUoXG4gICAgICAgICAgZmllbGQsXG4gICAgICAgICAgaGFzTWFueVZhbHVlcyA/IG5ldyBHcmFwaFFMTGlzdChuZXcgR3JhcGhRTE5vbk51bGwodHlwZSkpIDogdHlwZSxcbiAgICAgICAgICBmb3JjZU51bGxhYmxlLFxuICAgICAgICApLFxuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5vYmplY3RUeXBlQ29uZmlnLFxuICAgICAgICBbZmllbGQubmFtZV06IHJlbGF0aW9uc2hpcCxcbiAgICAgIH1cbiAgICB9LFxuICAgIHJpY2hUZXh0OiAob2JqZWN0VHlwZUNvbmZpZzogT2JqZWN0VHlwZUNvbmZpZywgZmllbGQ6IFJpY2hUZXh0RmllbGQpID0+ICh7XG4gICAgICAuLi5vYmplY3RUeXBlQ29uZmlnLFxuICAgICAgW2ZpZWxkLm5hbWVdOiB7XG4gICAgICAgIGFyZ3M6IHtcbiAgICAgICAgICBkZXB0aDoge1xuICAgICAgICAgICAgdHlwZTogR3JhcGhRTEludCxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBhc3luYyByZXNvbHZlKHBhcmVudCwgYXJncywgY29udGV4dCkge1xuICAgICAgICAgIGxldCBkZXB0aCA9IHBheWxvYWQuY29uZmlnLmRlZmF1bHREZXB0aFxuICAgICAgICAgIGlmICh0eXBlb2YgYXJncy5kZXB0aCAhPT0gJ3VuZGVmaW5lZCcpIGRlcHRoID0gYXJncy5kZXB0aFxuICAgICAgICAgIGNvbnN0IGVkaXRvcjogUmljaFRleHRBZGFwdGVyID0gZmllbGQ/LmVkaXRvciB8fCBwYXlsb2FkPy5jb25maWc/LmVkaXRvclxuXG4gICAgICAgICAgaWYgKGVkaXRvcj8uYWZ0ZXJSZWFkUHJvbWlzZSkge1xuICAgICAgICAgICAgYXdhaXQgZWRpdG9yPy5hZnRlclJlYWRQcm9taXNlKHtcbiAgICAgICAgICAgICAgZGVwdGgsXG4gICAgICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgICAgICByZXE6IGNvbnRleHQucmVxLFxuICAgICAgICAgICAgICBzaG93SGlkZGVuRmllbGRzOiBmYWxzZSxcbiAgICAgICAgICAgICAgc2libGluZ0RvYzogcGFyZW50LFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gcGFyZW50W2ZpZWxkLm5hbWVdXG4gICAgICAgIH0sXG4gICAgICAgIHR5cGU6IHdpdGhOdWxsYWJsZVR5cGUoZmllbGQsIEdyYXBoUUxKU09OLCBmb3JjZU51bGxhYmxlKSxcbiAgICAgIH0sXG4gICAgfSksXG4gICAgcm93OiAob2JqZWN0VHlwZUNvbmZpZzogT2JqZWN0VHlwZUNvbmZpZywgZmllbGQ6IFJvd0ZpZWxkKSA9PlxuICAgICAgZmllbGQuZmllbGRzLnJlZHVjZSgob2JqZWN0VHlwZUNvbmZpZ1dpdGhSb3dGaWVsZHMsIHN1YkZpZWxkKSA9PiB7XG4gICAgICAgIGNvbnN0IGFkZFN1YkZpZWxkID0gZmllbGRUb1NjaGVtYU1hcFtzdWJGaWVsZC50eXBlXVxuICAgICAgICBpZiAoYWRkU3ViRmllbGQpIHJldHVybiBhZGRTdWJGaWVsZChvYmplY3RUeXBlQ29uZmlnV2l0aFJvd0ZpZWxkcywgc3ViRmllbGQpXG4gICAgICAgIHJldHVybiBvYmplY3RUeXBlQ29uZmlnV2l0aFJvd0ZpZWxkc1xuICAgICAgfSwgb2JqZWN0VHlwZUNvbmZpZyksXG4gICAgc2VsZWN0OiAob2JqZWN0VHlwZUNvbmZpZzogT2JqZWN0VHlwZUNvbmZpZywgZmllbGQ6IFNlbGVjdEZpZWxkKSA9PiB7XG4gICAgICBjb25zdCBmdWxsTmFtZSA9IGNvbWJpbmVQYXJlbnROYW1lKHBhcmVudE5hbWUsIGZpZWxkLm5hbWUpXG5cbiAgICAgIGxldCB0eXBlOiBHcmFwaFFMVHlwZSA9IG5ldyBHcmFwaFFMRW51bVR5cGUoe1xuICAgICAgICBuYW1lOiBmdWxsTmFtZSxcbiAgICAgICAgdmFsdWVzOiBmb3JtYXRPcHRpb25zKGZpZWxkKSxcbiAgICAgIH0pXG5cbiAgICAgIHR5cGUgPSBmaWVsZC5oYXNNYW55ID8gbmV3IEdyYXBoUUxMaXN0KG5ldyBHcmFwaFFMTm9uTnVsbCh0eXBlKSkgOiB0eXBlXG4gICAgICB0eXBlID0gd2l0aE51bGxhYmxlVHlwZShmaWVsZCwgdHlwZSwgZm9yY2VOdWxsYWJsZSlcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ub2JqZWN0VHlwZUNvbmZpZyxcbiAgICAgICAgW2ZpZWxkLm5hbWVdOiB7IHR5cGUgfSxcbiAgICAgIH1cbiAgICB9LFxuICAgIHRhYnM6IChvYmplY3RUeXBlQ29uZmlnOiBPYmplY3RUeXBlQ29uZmlnLCBmaWVsZDogVGFic0ZpZWxkKSA9PlxuICAgICAgZmllbGQudGFicy5yZWR1Y2UoKHRhYlNjaGVtYSwgdGFiKSA9PiB7XG4gICAgICAgIGlmICh0YWJIYXNOYW1lKHRhYikpIHtcbiAgICAgICAgICBjb25zdCBpbnRlcmZhY2VOYW1lID1cbiAgICAgICAgICAgIHRhYj8uaW50ZXJmYWNlTmFtZSB8fCBjb21iaW5lUGFyZW50TmFtZShwYXJlbnROYW1lLCB0b1dvcmRzKHRhYi5uYW1lLCB0cnVlKSlcblxuICAgICAgICAgIGlmICghcGF5bG9hZC50eXBlcy50YWJUeXBlc1tpbnRlcmZhY2VOYW1lXSkge1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gICAgICAgICAgICBwYXlsb2FkLnR5cGVzLnRhYlR5cGVzW2ludGVyZmFjZU5hbWVdID0gYnVpbGRPYmplY3RUeXBlKHtcbiAgICAgICAgICAgICAgbmFtZTogaW50ZXJmYWNlTmFtZSxcbiAgICAgICAgICAgICAgZmllbGRzOiB0YWIuZmllbGRzLFxuICAgICAgICAgICAgICBmb3JjZU51bGxhYmxlLFxuICAgICAgICAgICAgICBwYXJlbnROYW1lOiBpbnRlcmZhY2VOYW1lLFxuICAgICAgICAgICAgICBwYXlsb2FkLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4udGFiU2NoZW1hLFxuICAgICAgICAgICAgW3RhYi5uYW1lXTogeyB0eXBlOiBwYXlsb2FkLnR5cGVzLnRhYlR5cGVzW2ludGVyZmFjZU5hbWVdIH0sXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi50YWJTY2hlbWEsXG4gICAgICAgICAgLi4udGFiLmZpZWxkcy5yZWR1Y2UoKHN1YkZpZWxkU2NoZW1hLCBzdWJGaWVsZCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgYWRkU3ViRmllbGQgPSBmaWVsZFRvU2NoZW1hTWFwW3N1YkZpZWxkLnR5cGVdXG4gICAgICAgICAgICBpZiAoYWRkU3ViRmllbGQpIHJldHVybiBhZGRTdWJGaWVsZChzdWJGaWVsZFNjaGVtYSwgc3ViRmllbGQpXG4gICAgICAgICAgICByZXR1cm4gc3ViRmllbGRTY2hlbWFcbiAgICAgICAgICB9LCB0YWJTY2hlbWEpLFxuICAgICAgICB9XG4gICAgICB9LCBvYmplY3RUeXBlQ29uZmlnKSxcbiAgICB0ZXh0OiAob2JqZWN0VHlwZUNvbmZpZzogT2JqZWN0VHlwZUNvbmZpZywgZmllbGQ6IFRleHRGaWVsZCkgPT4gKHtcbiAgICAgIC4uLm9iamVjdFR5cGVDb25maWcsXG4gICAgICBbZmllbGQubmFtZV06IHsgdHlwZTogd2l0aE51bGxhYmxlVHlwZShmaWVsZCwgR3JhcGhRTFN0cmluZywgZm9yY2VOdWxsYWJsZSkgfSxcbiAgICB9KSxcbiAgICB0ZXh0YXJlYTogKG9iamVjdFR5cGVDb25maWc6IE9iamVjdFR5cGVDb25maWcsIGZpZWxkOiBUZXh0YXJlYUZpZWxkKSA9PiAoe1xuICAgICAgLi4ub2JqZWN0VHlwZUNvbmZpZyxcbiAgICAgIFtmaWVsZC5uYW1lXTogeyB0eXBlOiB3aXRoTnVsbGFibGVUeXBlKGZpZWxkLCBHcmFwaFFMU3RyaW5nLCBmb3JjZU51bGxhYmxlKSB9LFxuICAgIH0pLFxuICAgIHVwbG9hZDogKG9iamVjdFR5cGVDb25maWc6IE9iamVjdFR5cGVDb25maWcsIGZpZWxkOiBVcGxvYWRGaWVsZCkgPT4ge1xuICAgICAgY29uc3QgeyByZWxhdGlvblRvIH0gPSBmaWVsZFxuXG4gICAgICBjb25zdCB1cGxvYWROYW1lID0gY29tYmluZVBhcmVudE5hbWUocGFyZW50TmFtZSwgdG9Xb3JkcyhmaWVsZC5uYW1lLCB0cnVlKSlcblxuICAgICAgLy8gSWYgdGhlIHJlbGF0aW9uc2hpcFR5cGUgaXMgdW5kZWZpbmVkIGF0IHRoaXMgcG9pbnQsXG4gICAgICAvLyBpdCBjYW4gYmUgYXNzdW1lZCB0aGF0IHRoaXMgYmxvY2tUeXBlIGNhbiBoYXZlIGEgcmVsYXRpb25zaGlwXG4gICAgICAvLyB0byBpdHNlbGYuIFRoZXJlZm9yZSwgd2Ugc2V0IHRoZSByZWxhdGlvbnNoaXBUeXBlIGVxdWFsIHRvIHRoZSBibG9ja1R5cGVcbiAgICAgIC8vIHRoYXQgaXMgY3VycmVudGx5IGJlaW5nIGNyZWF0ZWQuXG5cbiAgICAgIGNvbnN0IHR5cGUgPSB3aXRoTnVsbGFibGVUeXBlKFxuICAgICAgICBmaWVsZCxcbiAgICAgICAgcGF5bG9hZC5jb2xsZWN0aW9uc1tyZWxhdGlvblRvXS5ncmFwaFFMLnR5cGUgfHwgbmV3bHlDcmVhdGVkQmxvY2tUeXBlLFxuICAgICAgICBmb3JjZU51bGxhYmxlLFxuICAgICAgKVxuXG4gICAgICBjb25zdCB1cGxvYWRBcmdzID0ge30gYXMgTG9jYWxlSW5wdXRUeXBlXG5cbiAgICAgIGlmIChwYXlsb2FkLmNvbmZpZy5sb2NhbGl6YXRpb24pIHtcbiAgICAgICAgdXBsb2FkQXJncy5sb2NhbGUgPSB7XG4gICAgICAgICAgdHlwZTogcGF5bG9hZC50eXBlcy5sb2NhbGVJbnB1dFR5cGUsXG4gICAgICAgIH1cblxuICAgICAgICB1cGxvYWRBcmdzLmZhbGxiYWNrTG9jYWxlID0ge1xuICAgICAgICAgIHR5cGU6IHBheWxvYWQudHlwZXMuZmFsbGJhY2tMb2NhbGVJbnB1dFR5cGUsXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc3QgcmVsYXRlZENvbGxlY3Rpb25TbHVnID0gZmllbGQucmVsYXRpb25Ub1xuXG4gICAgICBjb25zdCB1cGxvYWQgPSB7XG4gICAgICAgIGFyZ3M6IHVwbG9hZEFyZ3MsXG4gICAgICAgIGV4dGVuc2lvbnM6IHsgY29tcGxleGl0eTogMjAgfSxcbiAgICAgICAgYXN5bmMgcmVzb2x2ZShwYXJlbnQsIGFyZ3MsIGNvbnRleHQpIHtcbiAgICAgICAgICBjb25zdCB2YWx1ZSA9IHBhcmVudFtmaWVsZC5uYW1lXVxuICAgICAgICAgIGNvbnN0IGxvY2FsZSA9IGFyZ3MubG9jYWxlIHx8IGNvbnRleHQucmVxLmxvY2FsZVxuICAgICAgICAgIGNvbnN0IGZhbGxiYWNrTG9jYWxlID0gYXJncy5mYWxsYmFja0xvY2FsZSB8fCBjb250ZXh0LnJlcS5mYWxsYmFja0xvY2FsZVxuICAgICAgICAgIGNvbnN0IGlkID0gdmFsdWVcblxuICAgICAgICAgIGlmIChpZCkge1xuICAgICAgICAgICAgY29uc3QgcmVsYXRlZERvY3VtZW50ID0gYXdhaXQgY29udGV4dC5yZXEucGF5bG9hZERhdGFMb2FkZXIubG9hZChcbiAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoW1xuICAgICAgICAgICAgICAgIGNvbnRleHQucmVxLnRyYW5zYWN0aW9uSUQsXG4gICAgICAgICAgICAgICAgcmVsYXRlZENvbGxlY3Rpb25TbHVnLFxuICAgICAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAgICAgMCxcbiAgICAgICAgICAgICAgICBsb2NhbGUsXG4gICAgICAgICAgICAgICAgZmFsbGJhY2tMb2NhbGUsXG4gICAgICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgKVxuXG4gICAgICAgICAgICByZXR1cm4gcmVsYXRlZERvY3VtZW50IHx8IG51bGxcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgICB9LFxuICAgICAgICB0eXBlLFxuICAgICAgfVxuXG4gICAgICBjb25zdCB3aGVyZUZpZWxkcyA9IHBheWxvYWQuY29sbGVjdGlvbnNbcmVsYXRpb25Ub10uY29uZmlnLmZpZWxkc1xuXG4gICAgICB1cGxvYWQuYXJncy53aGVyZSA9IHtcbiAgICAgICAgdHlwZTogYnVpbGRXaGVyZUlucHV0VHlwZSh7XG4gICAgICAgICAgbmFtZTogdXBsb2FkTmFtZSxcbiAgICAgICAgICBmaWVsZHM6IHdoZXJlRmllbGRzLFxuICAgICAgICAgIHBhcmVudE5hbWU6IHVwbG9hZE5hbWUsXG4gICAgICAgICAgcGF5bG9hZCxcbiAgICAgICAgfSksXG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLm9iamVjdFR5cGVDb25maWcsXG4gICAgICAgIFtmaWVsZC5uYW1lXTogdXBsb2FkLFxuICAgICAgfVxuICAgIH0sXG4gIH1cblxuICBjb25zdCBvYmplY3RTY2hlbWEgPSB7XG4gICAgbmFtZSxcbiAgICBmaWVsZHM6ICgpID0+XG4gICAgICBmaWVsZHMucmVkdWNlKChvYmplY3RUeXBlQ29uZmlnLCBmaWVsZCkgPT4ge1xuICAgICAgICBjb25zdCBmaWVsZFNjaGVtYSA9IGZpZWxkVG9TY2hlbWFNYXBbZmllbGQudHlwZV1cblxuICAgICAgICBpZiAodHlwZW9mIGZpZWxkU2NoZW1hICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgcmV0dXJuIG9iamVjdFR5cGVDb25maWdcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4ub2JqZWN0VHlwZUNvbmZpZyxcbiAgICAgICAgICAuLi5maWVsZFNjaGVtYShvYmplY3RUeXBlQ29uZmlnLCBmaWVsZCksXG4gICAgICAgIH1cbiAgICAgIH0sIGJhc2VGaWVsZHMpLFxuICB9XG5cbiAgY29uc3QgbmV3bHlDcmVhdGVkQmxvY2tUeXBlID0gbmV3IEdyYXBoUUxPYmplY3RUeXBlKG9iamVjdFNjaGVtYSlcblxuICByZXR1cm4gbmV3bHlDcmVhdGVkQmxvY2tUeXBlXG59XG5cbmV4cG9ydCBkZWZhdWx0IGJ1aWxkT2JqZWN0VHlwZVxuIl0sIm5hbWVzIjpbImJ1aWxkT2JqZWN0VHlwZSIsIm5hbWUiLCJiYXNlRmllbGRzIiwiZmllbGRzIiwiZm9yY2VOdWxsYWJsZSIsInBhcmVudE5hbWUiLCJwYXlsb2FkIiwiZmllbGRUb1NjaGVtYU1hcCIsImFycmF5Iiwib2JqZWN0VHlwZUNvbmZpZyIsImZpZWxkIiwiaW50ZXJmYWNlTmFtZSIsImNvbWJpbmVQYXJlbnROYW1lIiwidG9Xb3JkcyIsInR5cGVzIiwiYXJyYXlUeXBlcyIsImlzRmllbGROdWxsYWJsZSIsImFycmF5VHlwZSIsIkdyYXBoUUxMaXN0IiwiR3JhcGhRTE5vbk51bGwiLCJ0eXBlIiwid2l0aE51bGxhYmxlVHlwZSIsImJsb2NrcyIsImJsb2NrVHlwZXMiLCJtYXAiLCJibG9jayIsInNsdWciLCJncmFwaFFMIiwic2luZ3VsYXJOYW1lIiwiZnVsbE5hbWUiLCJHcmFwaFFMVW5pb25UeXBlIiwicmVzb2x2ZVR5cGUiLCJkYXRhIiwiYmxvY2tUeXBlIiwiY2hlY2tib3giLCJHcmFwaFFMQm9vbGVhbiIsImNvZGUiLCJHcmFwaFFMU3RyaW5nIiwiY29sbGFwc2libGUiLCJyZWR1Y2UiLCJvYmplY3RUeXBlQ29uZmlnV2l0aENvbGxhcHNpYmxlRmllbGRzIiwic3ViRmllbGQiLCJhZGRTdWJGaWVsZCIsImRhdGUiLCJEYXRlVGltZVJlc29sdmVyIiwiZW1haWwiLCJFbWFpbEFkZHJlc3NSZXNvbHZlciIsImdyb3VwIiwiZ3JvdXBUeXBlcyIsImpzb24iLCJHcmFwaFFMSlNPTiIsIm51bWJlciIsIkdyYXBoUUxJbnQiLCJHcmFwaFFMRmxvYXQiLCJoYXNNYW55IiwicG9pbnQiLCJyYWRpbyIsIkdyYXBoUUxFbnVtVHlwZSIsInZhbHVlcyIsImZvcm1hdE9wdGlvbnMiLCJyZWxhdGlvbnNoaXAiLCJyZWxhdGlvblRvIiwiaXNSZWxhdGVkVG9NYW55Q29sbGVjdGlvbnMiLCJBcnJheSIsImlzQXJyYXkiLCJoYXNNYW55VmFsdWVzIiwicmVsYXRpb25zaGlwTmFtZSIsInJlbGF0aW9uVG9UeXBlIiwicmVsYXRpb25zIiwicmVsYXRpb24iLCJmb3JtYXROYW1lIiwidmFsdWUiLCJjb2xsZWN0aW9ucyIsIkdyYXBoUUxPYmplY3RUeXBlIiwicmVxIiwiY29sbGVjdGlvbiIsIm5ld2x5Q3JlYXRlZEJsb2NrVHlwZSIsInJlbGF0aW9uc2hpcEFyZ3MiLCJjb25maWciLCJsb2NhbGl6YXRpb24iLCJsb2NhbGUiLCJsb2NhbGVJbnB1dFR5cGUiLCJmYWxsYmFja0xvY2FsZSIsImZhbGxiYWNrTG9jYWxlSW5wdXRUeXBlIiwiYXJncyIsImV4dGVuc2lvbnMiLCJjb21wbGV4aXR5IiwicmVzb2x2ZSIsInBhcmVudCIsImNvbnRleHQiLCJyZWxhdGVkQ29sbGVjdGlvblNsdWciLCJyZXN1bHRzIiwicmVzdWx0UHJvbWlzZXMiLCJjcmVhdGVQb3B1bGF0aW9uUHJvbWlzZSIsInJlbGF0ZWREb2MiLCJpIiwiaWQiLCJjb2xsZWN0aW9uU2x1ZyIsInJlc3VsdCIsInBheWxvYWREYXRhTG9hZGVyIiwibG9hZCIsIkpTT04iLCJzdHJpbmdpZnkiLCJ0cmFuc2FjdGlvbklEIiwiZm9yRWFjaCIsInB1c2giLCJQcm9taXNlIiwiYWxsIiwicmVsYXRlZERvY3VtZW50IiwicmljaFRleHQiLCJkZXB0aCIsImRlZmF1bHREZXB0aCIsImVkaXRvciIsImFmdGVyUmVhZFByb21pc2UiLCJzaG93SGlkZGVuRmllbGRzIiwic2libGluZ0RvYyIsInJvdyIsIm9iamVjdFR5cGVDb25maWdXaXRoUm93RmllbGRzIiwic2VsZWN0IiwidGFicyIsInRhYlNjaGVtYSIsInRhYiIsInRhYkhhc05hbWUiLCJ0YWJUeXBlcyIsInN1YkZpZWxkU2NoZW1hIiwidGV4dCIsInRleHRhcmVhIiwidXBsb2FkIiwidXBsb2FkTmFtZSIsInVwbG9hZEFyZ3MiLCJ3aGVyZUZpZWxkcyIsIndoZXJlIiwiYnVpbGRXaGVyZUlucHV0VHlwZSIsIm9iamVjdFNjaGVtYSIsImZpZWxkU2NoZW1hIl0sIm1hcHBpbmdzIjoiQUFBQSwwREFBMEQsR0FDMUQsbUNBQW1DLEdBQ25DLHVDQUF1Qzs7OzsrQkFnbUJ2Qzs7O2VBQUE7Ozt5QkFubEJPO2dDQUNnRDtpQ0FFM0I7dUJBNEJEOzhCQUNIOzBFQUNNO21FQUNQO3NFQUNHOzRFQUNNO3dFQUNKO3lFQUNDOzs7Ozs7QUEyQjdCLFNBQVNBLGdCQUFnQixFQUN2QkMsSUFBSSxFQUNKQyxhQUFhLENBQUMsQ0FBQyxFQUNmQyxNQUFNLEVBQ05DLGFBQWEsRUFDYkMsVUFBVSxFQUNWQyxPQUFPLEVBQ0Y7SUFDTCxNQUFNQyxtQkFBbUI7UUFDdkJDLE9BQU8sQ0FBQ0Msa0JBQW9DQztZQUMxQyxNQUFNQyxnQkFDSkQsT0FBT0MsaUJBQWlCQyxJQUFBQSwwQkFBaUIsRUFBQ1AsWUFBWVEsSUFBQUEscUJBQU8sRUFBQ0gsTUFBTVQsSUFBSSxFQUFFO1lBRTVFLElBQUksQ0FBQ0ssUUFBUVEsS0FBSyxDQUFDQyxVQUFVLENBQUNKLGNBQWMsRUFBRTtnQkFDNUMsNkNBQTZDO2dCQUM3Q0wsUUFBUVEsS0FBSyxDQUFDQyxVQUFVLENBQUNKLGNBQWMsR0FBR1gsZ0JBQWdCO29CQUN4REMsTUFBTVU7b0JBQ05SLFFBQVFPLE1BQU1QLE1BQU07b0JBQ3BCQyxlQUFlWSxJQUFBQSx3QkFBZSxFQUFD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
472
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ncmFwaHFsL3NjaGVtYS9idWlsZE9iamVjdFR5cGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVzZS1iZWZvcmUtZGVmaW5lICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1hd2FpdC1pbi1sb29wICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1yZXN0cmljdGVkLXN5bnRheCAqL1xuaW1wb3J0IHR5cGUgeyBHcmFwaFFMRmllbGRDb25maWcsIEdyYXBoUUxUeXBlIH0gZnJvbSAnZ3JhcGhxbCdcblxuaW1wb3J0IHtcbiAgR3JhcGhRTEJvb2xlYW4sXG4gIEdyYXBoUUxFbnVtVHlwZSxcbiAgR3JhcGhRTEZsb2F0LFxuICBHcmFwaFFMSW50LFxuICBHcmFwaFFMTGlzdCxcbiAgR3JhcGhRTE5vbk51bGwsXG4gIEdyYXBoUUxPYmplY3RUeXBlLFxuICBHcmFwaFFMU3RyaW5nLFxuICBHcmFwaFFMVW5pb25UeXBlLFxufSBmcm9tICdncmFwaHFsJ1xuaW1wb3J0IHsgRGF0ZVRpbWVSZXNvbHZlciwgRW1haWxBZGRyZXNzUmVzb2x2ZXIgfSBmcm9tICdncmFwaHFsLXNjYWxhcnMnXG4vKiBlc2xpbnQtZGlzYWJsZSBuby11c2UtYmVmb3JlLWRlZmluZSAqL1xuaW1wb3J0IHsgR3JhcGhRTEpTT04gfSBmcm9tICdncmFwaHFsLXR5cGUtanNvbidcblxuaW1wb3J0IHR5cGUgeyBSaWNoVGV4dEFkYXB0ZXIgfSBmcm9tICcuLi8uLi9hZG1pbi9jb21wb25lbnRzL2Zvcm1zL2ZpZWxkLXR5cGVzL1JpY2hUZXh0L3R5cGVzJ1xuaW1wb3J0IHR5cGUge1xuICBBcnJheUZpZWxkLFxuICBCbG9ja0ZpZWxkLFxuICBDaGVja2JveEZpZWxkLFxuICBDb2RlRmllbGQsXG4gIENvbGxhcHNpYmxlRmllbGQsXG4gIERhdGVGaWVsZCxcbiAgRW1haWxGaWVsZCxcbiAgRmllbGQsXG4gIEdyb3VwRmllbGQsXG4gIEpTT05GaWVsZCxcbiAgTnVtYmVyRmllbGQsXG4gIFBvaW50RmllbGQsXG4gIFJhZGlvRmllbGQsXG4gIFJlbGF0aW9uc2hpcEZpZWxkLFxuICBSaWNoVGV4dEZpZWxkLFxuICBSb3dGaWVsZCxcbiAgU2VsZWN0RmllbGQsXG4gIFRhYnNGaWVsZCxcbiAgVGV4dEZpZWxkLFxuICBUZXh0YXJlYUZpZWxkLFxuICBVcGxvYWRGaWVsZCxcbn0gZnJvbSAnLi4vLi4vZmllbGRzL2NvbmZpZy90eXBlcydcbmltcG9ydCB0eXBlIHsgUGF5bG9hZCB9IGZyb20gJy4uLy4uL3BheWxvYWQnXG5cbmltcG9ydCB7IHRhYkhhc05hbWUgfSBmcm9tICcuLi8uLi9maWVsZHMvY29uZmlnL3R5cGVzJ1xuaW1wb3J0IHsgdG9Xb3JkcyB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9mb3JtYXRMYWJlbHMnXG5pbXBvcnQgY29tYmluZVBhcmVudE5hbWUgZnJvbSAnLi4vdXRpbGl0aWVzL2NvbWJpbmVQYXJlbnROYW1lJ1xuaW1wb3J0IGZvcm1hdE5hbWUgZnJvbSAnLi4vdXRpbGl0aWVzL2Zvcm1hdE5hbWUnXG5pbXBvcnQgZm9ybWF0T3B0aW9ucyBmcm9tICcuLi91dGlsaXRpZXMvZm9ybWF0T3B0aW9ucydcbmltcG9ydCBidWlsZFdoZXJlSW5wdXRUeXBlIGZyb20gJy4vYnVpbGRXaGVyZUlucHV0VHlwZSdcbmltcG9ydCBpc0ZpZWxkTnVsbGFibGUgZnJvbSAnLi9pc0ZpZWxkTnVsbGFibGUnXG5pbXBvcnQgd2l0aE51bGxhYmxlVHlwZSBmcm9tICcuL3dpdGhOdWxsYWJsZVR5cGUnXG5cbnR5cGUgTG9jYWxlSW5wdXRUeXBlID0ge1xuICBmYWxsYmFja0xvY2FsZToge1xuICAgIHR5cGU6IEdyYXBoUUxUeXBlXG4gIH1cbiAgbG9jYWxlOiB7XG4gICAgdHlwZTogR3JhcGhRTFR5cGVcbiAgfVxuICB3aGVyZToge1xuICAgIHR5cGU6IEdyYXBoUUxUeXBlXG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgT2JqZWN0VHlwZUNvbmZpZyA9IHtcbiAgW3BhdGg6IHN0cmluZ106IEdyYXBoUUxGaWVsZENvbmZpZzxhbnksIGFueT5cbn1cblxudHlwZSBBcmdzID0ge1xuICBiYXNlRmllbGRzPzogT2JqZWN0VHlwZUNvbmZpZ1xuICBmaWVsZHM6IEZpZWxkW11cbiAgZm9yY2VOdWxsYWJsZT86IGJvb2xlYW5cbiAgbmFtZTogc3RyaW5nXG4gIHBhcmVudE5hbWU6IHN0cmluZ1xuICBwYXlsb2FkOiBQYXlsb2FkXG59XG5cbmZ1bmN0aW9uIGJ1aWxkT2JqZWN0VHlwZSh7XG4gIG5hbWUsXG4gIGJhc2VGaWVsZHMgPSB7fSxcbiAgZmllbGRzLFxuICBmb3JjZU51bGxhYmxlLFxuICBwYXJlbnROYW1lLFxuICBwYXlsb2FkLFxufTogQXJncyk6IEdyYXBoUUxPYmplY3RUeXBlIHtcbiAgY29uc3QgZmllbGRUb1NjaGVtYU1hcCA9IHtcbiAgICBhcnJheTogKG9iamVjdFR5cGVDb25maWc6IE9iamVjdFR5cGVDb25maWcsIGZpZWxkOiBBcnJheUZpZWxkKSA9PiB7XG4gICAgICBjb25zdCBpbnRlcmZhY2VOYW1lID1cbiAgICAgICAgZmllbGQ/LmludGVyZmFjZU5hbWUgfHwgY29tYmluZVBhcmVudE5hbWUocGFyZW50TmFtZSwgdG9Xb3JkcyhmaWVsZC5uYW1lLCB0cnVlKSlcblxuICAgICAgaWYgKCFwYXlsb2FkLnR5cGVzLmFycmF5VHlwZXNbaW50ZXJmYWNlTmFtZV0pIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gICAgICAgIHBheWxvYWQudHlwZXMuYXJyYXlUeXBlc1tpbnRlcmZhY2VOYW1lXSA9IGJ1aWxkT2JqZWN0VHlwZSh7XG4gICAgICAgICAgbmFtZTogaW50ZXJmYWNlTmFtZSxcbiAgICAgICAgICBmaWVsZHM6IGZpZWxkLmZpZWxkcyxcbiAgICAgICAgICBmb3JjZU51bGxhYmxlOiBpc0ZpZWxkTnVsbGFibGUoZmllbGQsIGZvcmNlTnVsbGFibGUpLFxuICAgICAgICAgIHBhcmVudE5hbWU6IGludGVyZmFjZU5hbWUsXG4gICAgICAgICAgcGF5bG9hZCxcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgY29uc3QgYXJyYXlUeXBlID0gbmV3IEdyYXBoUUxMaXN0KG5ldyBHcmFwaFFMTm9uTnVsbChwYXlsb2FkLnR5cGVzLmFycmF5VHlwZXNbaW50ZXJmYWNlTmFtZV0pKVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5vYmplY3RUeXBlQ29uZmlnLFxuICAgICAgICBbZmllbGQubmFtZV06IHsgdHlwZTogd2l0aE51bGxhYmxlVHlwZShmaWVsZCwgYXJyYXlUeXBlKSB9LFxuICAgICAgfVxuICAgIH0sXG4gICAgYmxvY2tzOiAob2JqZWN0VHlwZUNvbmZpZzogT2JqZWN0VHlwZUNvbmZpZywgZmllbGQ6IEJsb2NrRmllbGQpID0+IHtcbiAgICAgIGNvbnN0IGJsb2NrVHlwZXMgPSBmaWVsZC5ibG9ja3MubWFwKChibG9jaykgPT4ge1xuICAgICAgICBpZiAoIXBheWxvYWQudHlwZXMuYmxvY2tUeXBlc1tibG9jay5zbHVnXSkge1xuICAgICAgICAgIGNvbnN0IGludGVyZmFjZU5hbWUgPVxuICAgICAgICAgICAgYmxvY2s/LmludGVyZmFjZU5hbWUgfHwgYmxvY2s/LmdyYXBoUUw/LnNpbmd1bGFyTmFtZSB8fCB0b1dvcmRzKGJsb2NrLnNsdWcsIHRydWUpXG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gICAgICAgICAgcGF5bG9hZC50eXBlcy5ibG9ja1R5cGVzW2Jsb2NrLnNsdWddID0gYnVpbGRPYmplY3RUeXBlKHtcbiAgICAgICAgICAgIG5hbWU6IGludGVyZmFjZU5hbWUsXG4gICAgICAgICAgICBmaWVsZHM6IFtcbiAgICAgICAgICAgICAgLi4uYmxvY2suZmllbGRzLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ2Jsb2NrVHlwZScsXG4gICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGZvcmNlTnVsbGFibGUsXG4gICAgICAgICAgICBwYXJlbnROYW1lOiBpbnRlcmZhY2VOYW1lLFxuICAgICAgICAgICAgcGF5bG9hZCxcbiAgICAgICAgICB9KVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHBheWxvYWQudHlwZXMuYmxvY2tUeXBlc1tibG9jay5zbHVnXVxuICAgICAgfSlcblxuICAgICAgY29uc3QgZnVsbE5hbWUgPSBjb21iaW5lUGFyZW50TmFtZShwYXJlbnROYW1lLCB0b1dvcmRzKGZpZWxkLm5hbWUsIHRydWUpKVxuXG4gICAgICBjb25zdCB0eXBlID0gbmV3IEdyYXBoUUxMaXN0KFxuICAgICAgICBuZXcgR3JhcGhRTE5vbk51bGwoXG4gICAgICAgICAgbmV3IEdyYXBoUUxVbmlvblR5cGUoe1xuICAgICAgICAgICAgbmFtZTogZnVsbE5hbWUsXG4gICAgICAgICAgICByZXNvbHZlVHlwZTogKGRhdGEpID0+IHBheWxvYWQudHlwZXMuYmxvY2tUeXBlc1tkYXRhLmJsb2NrVHlwZV0ubmFtZSxcbiAgICAgICAgICAgIHR5cGVzOiBibG9ja1R5cGVzLFxuICAgICAgICAgIH0pLFxuICAgICAgICApLFxuICAgICAgKVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5vYmplY3RUeXBlQ29uZmlnLFxuICAgICAgICBbZmllbGQubmFtZV06IHsgdHlwZTogd2l0aE51bGxhYmxlVHlwZShmaWVsZCwgdHlwZSkgfSxcbiAgICAgIH1cbiAgICB9LFxuICAgIGNoZWNrYm94OiAob2JqZWN0VHlwZUNvbmZpZzogT2JqZWN0VHlwZUNvbmZpZywgZmllbGQ6IENoZWNrYm94RmllbGQpID0+ICh7XG4gICAgICAuLi5vYmplY3RUeXBlQ29uZmlnLFxuICAgICAgW2ZpZWxkLm5hbWVdOiB7IHR5cGU6IHdpdGhOdWxsYWJsZVR5cGUoZmllbGQsIEdyYXBoUUxCb29sZWFuLCBmb3JjZU51bGxhYmxlKSB9LFxuICAgIH0pLFxuICAgIGNvZGU6IChvYmplY3RUeXBlQ29uZmlnOiBPYmplY3RUeXBlQ29uZmlnLCBmaWVsZDogQ29kZUZpZWxkKSA9PiAoe1xuICAgICAgLi4ub2JqZWN0VHlwZUNvbmZpZyxcbiAgICAgIFtmaWVsZC5uYW1lXTogeyB0eXBlOiB3aXRoTnVsbGFibGVUeXBlKGZpZWxkLCBHcmFwaFFMU3RyaW5nLCBmb3JjZU51bGxhYmxlKSB9LFxuICAgIH0pLFxuICAgIGNvbGxhcHNpYmxlOiAob2JqZWN0VHlwZUNvbmZpZzogT2JqZWN0VHlwZUNvbmZpZywgZmllbGQ6IENvbGxhcHNpYmxlRmllbGQpID0+XG4gICAgICBmaWVsZC5maWVsZHMucmVkdWNlKChvYmplY3RUeXBlQ29uZmlnV2l0aENvbGxhcHNpYmxlRmllbGRzLCBzdWJGaWVsZCkgPT4ge1xuICAgICAgICBjb25zdCBhZGRTdWJGaWVsZCA9IGZpZWxkVG9TY2hlbWFNYXBbc3ViRmllbGQudHlwZV1cbiAgICAgICAgaWYgKGFkZFN1YkZpZWxkKSByZXR1cm4gYWRkU3ViRmllbGQob2JqZWN0VHlwZUNvbmZpZ1dpdGhDb2xsYXBzaWJsZUZpZWxkcywgc3ViRmllbGQpXG4gICAgICAgIHJldHVybiBvYmplY3RUeXBlQ29uZmlnV2l0aENvbGxhcHNpYmxlRmllbGRzXG4gICAgICB9LCBvYmplY3RUeXBlQ29uZmlnKSxcbiAgICBkYXRlOiAob2JqZWN0VHlwZUNvbmZpZzogT2JqZWN0VHlwZUNvbmZpZywgZmllbGQ6IERhdGVGaWVsZCkgPT4gKHtcbiAgICAgIC4uLm9iamVjdFR5cGVDb25maWcsXG4gICAgICBbZmllbGQubmFtZV06IHsgdHlwZTogd2l0aE51bGxhYmxlVHlwZShmaWVsZCwgRGF0ZVRpbWVSZXNvbHZlciwgZm9yY2VOdWxsYWJsZSkgfSxcbiAgICB9KSxcbiAgICBlbWFpbDogKG9iamVjdFR5cGVDb25maWc6IE9iamVjdFR5cGVDb25maWcsIGZpZWxkOiBFbWFpbEZpZWxkKSA9PiAoe1xuICAgICAgLi4ub2JqZWN0VHlwZUNvbmZpZyxcbiAgICAgIFtmaWVsZC5uYW1lXTogeyB0eXBlOiB3aXRoTnVsbGFibGVUeXBlKGZpZWxkLCBFbWFpbEFkZHJlc3NSZXNvbHZlciwgZm9yY2VOdWxsYWJsZSkgfSxcbiAgICB9KSxcbiAgICBncm91cDogKG9iamVjdFR5cGVDb25maWc6IE9iamVjdFR5cGVDb25maWcsIGZpZWxkOiBHcm91cEZpZWxkKSA9PiB7XG4gICAgICBjb25zdCBpbnRlcmZhY2VOYW1lID1cbiAgICAgICAgZmllbGQ/LmludGVyZmFjZU5hbWUgfHwgY29tYmluZVBhcmVudE5hbWUocGFyZW50TmFtZSwgdG9Xb3JkcyhmaWVsZC5uYW1lLCB0cnVlKSlcblxuICAgICAgaWYgKCFwYXlsb2FkLnR5cGVzLmdyb3VwVHlwZXNbaW50ZXJmYWNlTmFtZV0pIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gICAgICAgIHBheWxvYWQudHlwZXMuZ3JvdXBUeXBlc1tpbnRlcmZhY2VOYW1lXSA9IGJ1aWxkT2JqZWN0VHlwZSh7XG4gICAgICAgICAgbmFtZTogaW50ZXJmYWNlTmFtZSxcbiAgICAgICAgICBmaWVsZHM6IGZpZWxkLmZpZWxkcyxcbiAgICAgICAgICBmb3JjZU51bGxhYmxlOiBpc0ZpZWxkTnVsbGFibGUoZmllbGQsIGZvcmNlTnVsbGFibGUpLFxuICAgICAgICAgIHBhcmVudE5hbWU6IGludGVyZmFjZU5hbWUsXG4gICAgICAgICAgcGF5bG9hZCxcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ub2JqZWN0VHlwZUNvbmZpZyxcbiAgICAgICAgW2ZpZWxkLm5hbWVdOiB7IHR5cGU6IHBheWxvYWQudHlwZXMuZ3JvdXBUeXBlc1tpbnRlcmZhY2VOYW1lXSB9LFxuICAgICAgfVxuICAgIH0sXG4gICAganNvbjogKG9iamVjdFR5cGVDb25maWc6IE9iamVjdFR5cGVDb25maWcsIGZpZWxkOiBKU09ORmllbGQpID0+ICh7XG4gICAgICAuLi5vYmplY3RUeXBlQ29uZmlnLFxuICAgICAgW2ZpZWxkLm5hbWVdOiB7IHR5cGU6IHdpdGhOdWxsYWJsZVR5cGUoZmllbGQsIEdyYXBoUUxKU09OLCBmb3JjZU51bGxhYmxlKSB9LFxuICAgIH0pLFxuICAgIG51bWJlcjogKG9iamVjdFR5cGVDb25maWc6IE9iamVjdFR5cGVDb25maWcsIGZpZWxkOiBOdW1iZXJGaWVsZCkgPT4ge1xuICAgICAgY29uc3QgdHlwZSA9IGZpZWxkPy5uYW1lID09PSAnaWQnID8gR3JhcGhRTEludCA6IEdyYXBoUUxGbG9hdFxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ub2JqZWN0VHlwZUNvbmZpZyxcbiAgICAgICAgW2ZpZWxkLm5hbWVdOiB7XG4gICAgICAgICAgdHlwZTogd2l0aE51bGxhYmxlVHlwZShcbiAgICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgICAgZmllbGQ/Lmhhc01hbnkgPT09IHRydWUgPyBuZXcgR3JhcGhRTExpc3QodHlwZSkgOiB0eXBlLFxuICAgICAgICAgICAgZm9yY2VOdWxsYWJsZSxcbiAgICAgICAgICApLFxuICAgICAgICB9LFxuICAgICAgfVxuICAgIH0sXG4gICAgcG9pbnQ6IChvYmplY3RUeXBlQ29uZmlnOiBPYmplY3RUeXBlQ29uZmlnLCBmaWVsZDogUG9pbnRGaWVsZCkgPT4gKHtcbiAgICAgIC4uLm9iamVjdFR5cGVDb25maWcsXG4gICAgICBbZmllbGQubmFtZV06IHtcbiAgICAgICAgdHlwZTogd2l0aE51bGxhYmxlVHlwZShcbiAgICAgICAgICBmaWVsZCxcbiAgICAgICAgICBuZXcgR3JhcGhRTExpc3QobmV3IEdyYXBoUUxOb25OdWxsKEdyYXBoUUxGbG9hdCkpLFxuICAgICAgICAgIGZvcmNlTnVsbGFibGUsXG4gICAgICAgICksXG4gICAgICB9LFxuICAgIH0pLFxuICAgIHJhZGlvOiAob2JqZWN0VHlwZUNvbmZpZzogT2JqZWN0VHlwZUNvbmZpZywgZmllbGQ6IFJhZGlvRmllbGQpID0+ICh7XG4gICAgICAuLi5vYmplY3RUeXBlQ29uZmlnLFxuICAgICAgW2ZpZWxkLm5hbWVdOiB7XG4gICAgICAgIHR5cGU6IHdpdGhOdWxsYWJsZVR5cGUoXG4gICAgICAgICAgZmllbGQsXG4gICAgICAgICAgbmV3IEdyYXBoUUxFbnVtVHlwZSh7XG4gICAgICAgICAgICBuYW1lOiBjb21iaW5lUGFyZW50TmFtZShwYXJlbnROYW1lLCBmaWVsZC5uYW1lKSxcbiAgICAgICAgICAgIHZhbHVlczogZm9ybWF0T3B0aW9ucyhmaWVsZCksXG4gICAgICAgICAgfSksXG4gICAgICAgICAgZm9yY2VOdWxsYWJsZSxcbiAgICAgICAgKSxcbiAgICAgIH0sXG4gICAgfSksXG4gICAgcmVsYXRpb25zaGlwOiAob2JqZWN0VHlwZUNvbmZpZzogT2JqZWN0VHlwZUNvbmZpZywgZmllbGQ6IFJlbGF0aW9uc2hpcEZpZWxkKSA9PiB7XG4gICAgICBjb25zdCB7IHJlbGF0aW9uVG8gfSA9IGZpZWxkXG4gICAgICBjb25zdCBpc1JlbGF0ZWRUb01hbnlDb2xsZWN0aW9ucyA9IEFycmF5LmlzQXJyYXkocmVsYXRpb25UbylcbiAgICAgIGNvbnN0IGhhc01hbnlWYWx1ZXMgPSBmaWVsZC5oYXNNYW55XG4gICAgICBjb25zdCByZWxhdGlvbnNoaXBOYW1lID0gY29tYmluZVBhcmVudE5hbWUocGFyZW50TmFtZSwgdG9Xb3JkcyhmaWVsZC5uYW1lLCB0cnVlKSlcblxuICAgICAgbGV0IHR5cGVcbiAgICAgIGxldCByZWxhdGlvblRvVHlwZSA9IG51bGxcblxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkocmVsYXRpb25UbykpIHtcbiAgICAgICAgcmVsYXRpb25Ub1R5cGUgPSBuZXcgR3JhcGhRTEVudW1UeXBlKHtcbiAgICAgICAgICBuYW1lOiBgJHtyZWxhdGlvbnNoaXBOYW1lfV9SZWxhdGlvblRvYCxcbiAgICAgICAgICB2YWx1ZXM6IHJlbGF0aW9uVG8ucmVkdWNlKFxuICAgICAgICAgICAgKHJlbGF0aW9ucywgcmVsYXRpb24pID0+ICh7XG4gICAgICAgICAgICAgIC4uLnJlbGF0aW9ucyxcbiAgICAgICAgICAgICAgW2Zvcm1hdE5hbWUocmVsYXRpb24pXToge1xuICAgICAgICAgICAgICAgIHZhbHVlOiByZWxhdGlvbixcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAge30sXG4gICAgICAgICAgKSxcbiAgICAgICAgfSlcblxuICAgICAgICBjb25zdCB0eXBlcyA9IHJlbGF0aW9uVG8ubWFwKChyZWxhdGlvbikgPT4gcGF5bG9hZC5jb2xsZWN0aW9uc1tyZWxhdGlvbl0uZ3JhcGhRTC50eXBlKVxuXG4gICAgICAgIHR5cGUgPSBuZXcgR3JhcGhRTE9iamVjdFR5cGUoe1xuICAgICAgICAgIG5hbWU6IGAke3JlbGF0aW9uc2hpcE5hbWV9X1JlbGF0aW9uc2hpcGAsXG4gICAgICAgICAgZmllbGRzOiB7XG4gICAgICAgICAgICByZWxhdGlvblRvOiB7XG4gICAgICAgICAgICAgIHR5cGU6IHJlbGF0aW9uVG9UeXBlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgICAgIHR5cGU6IG5ldyBHcmFwaFFMVW5pb25UeXBlKHtcbiAgICAgICAgICAgICAgICBuYW1lOiByZWxhdGlvbnNoaXBOYW1lLFxuICAgICAgICAgICAgICAgIGFzeW5jIHJlc29sdmVUeXBlKGRhdGEsIHsgcmVxIH0pIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBwYXlsb2FkLmNvbGxlY3Rpb25zW2RhdGEuY29sbGVjdGlvbl0uZ3JhcGhRTC50eXBlLm5hbWVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHR5cGVzLFxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIDsoeyB0eXBlIH0gPSBwYXlsb2FkLmNvbGxlY3Rpb25zW3JlbGF0aW9uVG9dLmdyYXBoUUwpXG4gICAgICB9XG5cbiAgICAgIC8vIElmIHRoZSByZWxhdGlvbnNoaXBUeXBlIGlzIHVuZGVmaW5lZCBhdCB0aGlzIHBvaW50LFxuICAgICAgLy8gaXQgY2FuIGJlIGFzc3VtZWQgdGhhdCB0aGlzIGJsb2NrVHlwZSBjYW4gaGF2ZSBhIHJlbGF0aW9uc2hpcFxuICAgICAgLy8gdG8gaXRzZWxmLiBUaGVyZWZvcmUsIHdlIHNldCB0aGUgcmVsYXRpb25zaGlwVHlwZSBlcXVhbCB0byB0aGUgYmxvY2tUeXBlXG4gICAgICAvLyB0aGF0IGlzIGN1cnJlbnRseSBiZWluZyBjcmVhdGVkLlxuXG4gICAgICB0eXBlID0gdHlwZSB8fCBuZXdseUNyZWF0ZWRCbG9ja1R5cGVcblxuICAgICAgY29uc3QgcmVsYXRpb25zaGlwQXJnczoge1xuICAgICAgICBmYWxsYmFja0xvY2FsZT86IHVua25vd25cbiAgICAgICAgbGltaXQ/OiB1bmtub3duXG4gICAgICAgIGxvY2FsZT86IHVua25vd25cbiAgICAgICAgcGFnZT86IHVua25vd25cbiAgICAgICAgd2hlcmU/OiB1bmtub3duXG4gICAgICB9ID0ge31cblxuICAgICAgaWYgKHBheWxvYWQuY29uZmlnLmxvY2FsaXphdGlvbikge1xuICAgICAgICByZWxhdGlvbnNoaXBBcmdzLmxvY2FsZSA9IHtcbiAgICAgICAgICB0eXBlOiBwYXlsb2FkLnR5cGVzLmxvY2FsZUlucHV0VHlwZSxcbiAgICAgICAgfVxuXG4gICAgICAgIHJlbGF0aW9uc2hpcEFyZ3MuZmFsbGJhY2tMb2NhbGUgPSB7XG4gICAgICAgICAgdHlwZTogcGF5bG9hZC50eXBlcy5mYWxsYmFja0xvY2FsZUlucHV0VHlwZSxcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zdCByZWxhdGlvbnNoaXAgPSB7XG4gICAgICAgIGFyZ3M6IHJlbGF0aW9uc2hpcEFyZ3MsXG4gICAgICAgIGV4dGVuc2lvbnM6IHsgY29tcGxleGl0eTogMTAgfSxcbiAgICAgICAgYXN5bmMgcmVzb2x2ZShwYXJlbnQsIGFyZ3MsIGNvbnRleHQpIHtcbiAgICAgICAgICBjb25zdCB2YWx1ZSA9IHBhcmVudFtmaWVsZC5uYW1lXVxuICAgICAgICAgIGNvbnN0IGxvY2FsZSA9IGFyZ3MubG9jYWxlIHx8IGNvbnRleHQucmVxLmxvY2FsZVxuICAgICAgICAgIGNvbnN0IGZhbGxiYWNrTG9jYWxlID0gYXJncy5mYWxsYmFja0xvY2FsZSB8fCBjb250ZXh0LnJlcS5mYWxsYmFja0xvY2FsZVxuICAgICAgICAgIGxldCByZWxhdGVkQ29sbGVjdGlvblNsdWcgPSBmaWVsZC5yZWxhdGlvblRvXG5cbiAgICAgICAgICBpZiAoaGFzTWFueVZhbHVlcykge1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0cyA9IFtdXG4gICAgICAgICAgICBjb25zdCByZXN1bHRQcm9taXNlcyA9IFtdXG5cbiAgICAgICAgICAgIGNvbnN0IGNyZWF0ZVBvcHVsYXRpb25Qcm9taXNlID0gYXN5bmMgKHJlbGF0ZWREb2MsIGkpID0+IHtcbiAgICAgICAgICAgICAgbGV0IGlkID0gcmVsYXRlZERvY1xuICAgICAgICAgICAgICBsZXQgY29sbGVjdGlvblNsdWcgPSBmaWVsZC5yZWxhdGlvblRvXG5cbiAgICAgICAgICAgICAgaWYgKGlzUmVsYXRlZFRvTWFueUNvbGxlY3Rpb25zKSB7XG4gICAgICAgICAgICAgICAgY29sbGVjdGlvblNsdWcgPSByZWxhdGVkRG9jLnJlbGF0aW9uVG9cbiAgICAgICAgICAgICAgICBpZCA9IHJlbGF0ZWREb2MudmFsdWVcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGNvbnRleHQucmVxLnBheWxvYWREYXRhTG9hZGVyLmxvYWQoXG4gICAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoW1xuICAgICAgICAgICAgICAgICAgY29udGV4dC5yZXEudHJhbnNhY3Rpb25JRCxcbiAgICAgICAgICAgICAgICAgIGNvbGxlY3Rpb25TbHVnLFxuICAgICAgICAgICAgICAgICAgaWQsXG4gICAgICAgICAgICAgICAgICAwLFxuICAgICAgICAgICAgICAgICAgMCxcbiAgICAgICAgICAgICAgICAgIGxvY2FsZSxcbiAgICAgICAgICAgICAgICAgIGZhbGxiYWNrTG9jYWxlLFxuICAgICAgICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgICAgICAgICBmYWxzZSxcbiAgICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgKVxuXG4gICAgICAgICAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgICAgICAgICBpZiAoaXNSZWxhdGVkVG9NYW55Q29sbGVjdGlvbnMpIHtcbiAgICAgICAgICAgICAgICAgIHJlc3VsdHNbaV0gPSB7XG4gICAgICAgICAgICAgICAgICAgIHJlbGF0aW9uVG86IGNvbGxlY3Rpb25TbHVnLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgICAgICAgICAgIC4uLnJlc3VsdCxcbiAgICAgICAgICAgICAgICAgICAgICBjb2xsZWN0aW9uOiBjb2xsZWN0aW9uU2x1ZyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgcmVzdWx0c1tpXSA9IHJlc3VsdFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgdmFsdWUuZm9yRWFjaCgocmVsYXRlZERvYywgaSkgPT4ge1xuICAgICAgICAgICAgICAgIHJlc3VsdFByb21pc2VzLnB1c2goY3JlYXRlUG9wdWxhdGlvblByb21pc2UocmVsYXRlZERvYywgaSkpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKHJlc3VsdFByb21pc2VzKVxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdHNcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBsZXQgaWQgPSB2YWx1ZVxuICAgICAgICAgIGlmIChpc1JlbGF0ZWRUb01hbnlDb2xsZWN0aW9ucyAmJiB2YWx1ZSkge1xuICAgICAgICAgICAgaWQgPSB2YWx1ZS52YWx1ZVxuICAgICAgICAgICAgcmVsYXRlZENvbGxlY3Rpb25TbHVnID0gdmFsdWUucmVsYXRpb25Ub1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChpZCkge1xuICAgICAgICAgICAgY29uc3QgcmVsYXRlZERvY3VtZW50ID0gYXdhaXQgY29udGV4dC5yZXEucGF5bG9hZERhdGFMb2FkZXIubG9hZChcbiAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoW1xuICAgICAgICAgICAgICAgIGNvbnRleHQucmVxLnRyYW5zYWN0aW9uSUQsXG4gICAgICAgICAgICAgICAgcmVsYXRlZENvbGxlY3Rpb25TbHVnLFxuICAgICAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAgICAgMCxcbiAgICAgICAgICAgICAgICBsb2NhbGUsXG4gICAgICAgICAgICAgICAgZmFsbGJhY2tMb2NhbGUsXG4gICAgICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgKVxuXG4gICAgICAgICAgICBpZiAocmVsYXRlZERvY3VtZW50KSB7XG4gICAgICAgICAgICAgIGlmIChpc1JlbGF0ZWRUb01hbnlDb2xsZWN0aW9ucykge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICByZWxhdGlvblRvOiByZWxhdGVkQ29sbGVjdGlvblNsdWcsXG4gICAgICAgICAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgICAgICAgICAuLi5yZWxhdGVkRG9jdW1lbnQsXG4gICAgICAgICAgICAgICAgICAgIGNvbGxlY3Rpb246IHJlbGF0ZWRDb2xsZWN0aW9uU2x1ZyxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgcmV0dXJuIHJlbGF0ZWREb2N1bWVudFxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgIH0sXG4gICAgICAgIHR5cGU6IHdpdGhOdWxsYWJsZVR5cGUoXG4gICAgICAgICAgZmllbGQsXG4gICAgICAgICAgaGFzTWFueVZhbHVlcyA/IG5ldyBHcmFwaFFMTGlzdChuZXcgR3JhcGhRTE5vbk51bGwodHlwZSkpIDogdHlwZSxcbiAgICAgICAgICBmb3JjZU51bGxhYmxlLFxuICAgICAgICApLFxuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5vYmplY3RUeXBlQ29uZmlnLFxuICAgICAgICBbZmllbGQubmFtZV06IHJlbGF0aW9uc2hpcCxcbiAgICAgIH1cbiAgICB9LFxuICAgIHJpY2hUZXh0OiAob2JqZWN0VHlwZUNvbmZpZzogT2JqZWN0VHlwZUNvbmZpZywgZmllbGQ6IFJpY2hUZXh0RmllbGQpID0+ICh7XG4gICAgICAuLi5vYmplY3RUeXBlQ29uZmlnLFxuICAgICAgW2ZpZWxkLm5hbWVdOiB7XG4gICAgICAgIGFyZ3M6IHtcbiAgICAgICAgICBkZXB0aDoge1xuICAgICAgICAgICAgdHlwZTogR3JhcGhRTEludCxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBhc3luYyByZXNvbHZlKHBhcmVudCwgYXJncywgY29udGV4dCkge1xuICAgICAgICAgIGxldCBkZXB0aCA9IHBheWxvYWQuY29uZmlnLmRlZmF1bHREZXB0aFxuICAgICAgICAgIGlmICh0eXBlb2YgYXJncy5kZXB0aCAhPT0gJ3VuZGVmaW5lZCcpIGRlcHRoID0gYXJncy5kZXB0aFxuICAgICAgICAgIGNvbnN0IGVkaXRvcjogUmljaFRleHRBZGFwdGVyID0gZmllbGQ/LmVkaXRvclxuXG4gICAgICAgICAgaWYgKGVkaXRvcj8uYWZ0ZXJSZWFkUHJvbWlzZSkge1xuICAgICAgICAgICAgYXdhaXQgZWRpdG9yPy5hZnRlclJlYWRQcm9taXNlKHtcbiAgICAgICAgICAgICAgZGVwdGgsXG4gICAgICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgICAgICByZXE6IGNvbnRleHQucmVxLFxuICAgICAgICAgICAgICBzaG93SGlkZGVuRmllbGRzOiBmYWxzZSxcbiAgICAgICAgICAgICAgc2libGluZ0RvYzogcGFyZW50LFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gcGFyZW50W2ZpZWxkLm5hbWVdXG4gICAgICAgIH0sXG4gICAgICAgIHR5cGU6IHdpdGhOdWxsYWJsZVR5cGUoZmllbGQsIEdyYXBoUUxKU09OLCBmb3JjZU51bGxhYmxlKSxcbiAgICAgIH0sXG4gICAgfSksXG4gICAgcm93OiAob2JqZWN0VHlwZUNvbmZpZzogT2JqZWN0VHlwZUNvbmZpZywgZmllbGQ6IFJvd0ZpZWxkKSA9PlxuICAgICAgZmllbGQuZmllbGRzLnJlZHVjZSgob2JqZWN0VHlwZUNvbmZpZ1dpdGhSb3dGaWVsZHMsIHN1YkZpZWxkKSA9PiB7XG4gICAgICAgIGNvbnN0IGFkZFN1YkZpZWxkID0gZmllbGRUb1NjaGVtYU1hcFtzdWJGaWVsZC50eXBlXVxuICAgICAgICBpZiAoYWRkU3ViRmllbGQpIHJldHVybiBhZGRTdWJGaWVsZChvYmplY3RUeXBlQ29uZmlnV2l0aFJvd0ZpZWxkcywgc3ViRmllbGQpXG4gICAgICAgIHJldHVybiBvYmplY3RUeXBlQ29uZmlnV2l0aFJvd0ZpZWxkc1xuICAgICAgfSwgb2JqZWN0VHlwZUNvbmZpZyksXG4gICAgc2VsZWN0OiAob2JqZWN0VHlwZUNvbmZpZzogT2JqZWN0VHlwZUNvbmZpZywgZmllbGQ6IFNlbGVjdEZpZWxkKSA9PiB7XG4gICAgICBjb25zdCBmdWxsTmFtZSA9IGNvbWJpbmVQYXJlbnROYW1lKHBhcmVudE5hbWUsIGZpZWxkLm5hbWUpXG5cbiAgICAgIGxldCB0eXBlOiBHcmFwaFFMVHlwZSA9IG5ldyBHcmFwaFFMRW51bVR5cGUoe1xuICAgICAgICBuYW1lOiBmdWxsTmFtZSxcbiAgICAgICAgdmFsdWVzOiBmb3JtYXRPcHRpb25zKGZpZWxkKSxcbiAgICAgIH0pXG5cbiAgICAgIHR5cGUgPSBmaWVsZC5oYXNNYW55ID8gbmV3IEdyYXBoUUxMaXN0KG5ldyBHcmFwaFFMTm9uTnVsbCh0eXBlKSkgOiB0eXBlXG4gICAgICB0eXBlID0gd2l0aE51bGxhYmxlVHlwZShmaWVsZCwgdHlwZSwgZm9yY2VOdWxsYWJsZSlcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ub2JqZWN0VHlwZUNvbmZpZyxcbiAgICAgICAgW2ZpZWxkLm5hbWVdOiB7IHR5cGUgfSxcbiAgICAgIH1cbiAgICB9LFxuICAgIHRhYnM6IChvYmplY3RUeXBlQ29uZmlnOiBPYmplY3RUeXBlQ29uZmlnLCBmaWVsZDogVGFic0ZpZWxkKSA9PlxuICAgICAgZmllbGQudGFicy5yZWR1Y2UoKHRhYlNjaGVtYSwgdGFiKSA9PiB7XG4gICAgICAgIGlmICh0YWJIYXNOYW1lKHRhYikpIHtcbiAgICAgICAgICBjb25zdCBpbnRlcmZhY2VOYW1lID1cbiAgICAgICAgICAgIHRhYj8uaW50ZXJmYWNlTmFtZSB8fCBjb21iaW5lUGFyZW50TmFtZShwYXJlbnROYW1lLCB0b1dvcmRzKHRhYi5uYW1lLCB0cnVlKSlcblxuICAgICAgICAgIGlmICghcGF5bG9hZC50eXBlcy50YWJUeXBlc1tpbnRlcmZhY2VOYW1lXSkge1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gICAgICAgICAgICBwYXlsb2FkLnR5cGVzLnRhYlR5cGVzW2ludGVyZmFjZU5hbWVdID0gYnVpbGRPYmplY3RUeXBlKHtcbiAgICAgICAgICAgICAgbmFtZTogaW50ZXJmYWNlTmFtZSxcbiAgICAgICAgICAgICAgZmllbGRzOiB0YWIuZmllbGRzLFxuICAgICAgICAgICAgICBmb3JjZU51bGxhYmxlLFxuICAgICAgICAgICAgICBwYXJlbnROYW1lOiBpbnRlcmZhY2VOYW1lLFxuICAgICAgICAgICAgICBwYXlsb2FkLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4udGFiU2NoZW1hLFxuICAgICAgICAgICAgW3RhYi5uYW1lXTogeyB0eXBlOiBwYXlsb2FkLnR5cGVzLnRhYlR5cGVzW2ludGVyZmFjZU5hbWVdIH0sXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi50YWJTY2hlbWEsXG4gICAgICAgICAgLi4udGFiLmZpZWxkcy5yZWR1Y2UoKHN1YkZpZWxkU2NoZW1hLCBzdWJGaWVsZCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgYWRkU3ViRmllbGQgPSBmaWVsZFRvU2NoZW1hTWFwW3N1YkZpZWxkLnR5cGVdXG4gICAgICAgICAgICBpZiAoYWRkU3ViRmllbGQpIHJldHVybiBhZGRTdWJGaWVsZChzdWJGaWVsZFNjaGVtYSwgc3ViRmllbGQpXG4gICAgICAgICAgICByZXR1cm4gc3ViRmllbGRTY2hlbWFcbiAgICAgICAgICB9LCB0YWJTY2hlbWEpLFxuICAgICAgICB9XG4gICAgICB9LCBvYmplY3RUeXBlQ29uZmlnKSxcbiAgICB0ZXh0OiAob2JqZWN0VHlwZUNvbmZpZzogT2JqZWN0VHlwZUNvbmZpZywgZmllbGQ6IFRleHRGaWVsZCkgPT4gKHtcbiAgICAgIC4uLm9iamVjdFR5cGVDb25maWcsXG4gICAgICBbZmllbGQubmFtZV06IHsgdHlwZTogd2l0aE51bGxhYmxlVHlwZShmaWVsZCwgR3JhcGhRTFN0cmluZywgZm9yY2VOdWxsYWJsZSkgfSxcbiAgICB9KSxcbiAgICB0ZXh0YXJlYTogKG9iamVjdFR5cGVDb25maWc6IE9iamVjdFR5cGVDb25maWcsIGZpZWxkOiBUZXh0YXJlYUZpZWxkKSA9PiAoe1xuICAgICAgLi4ub2JqZWN0VHlwZUNvbmZpZyxcbiAgICAgIFtmaWVsZC5uYW1lXTogeyB0eXBlOiB3aXRoTnVsbGFibGVUeXBlKGZpZWxkLCBHcmFwaFFMU3RyaW5nLCBmb3JjZU51bGxhYmxlKSB9LFxuICAgIH0pLFxuICAgIHVwbG9hZDogKG9iamVjdFR5cGVDb25maWc6IE9iamVjdFR5cGVDb25maWcsIGZpZWxkOiBVcGxvYWRGaWVsZCkgPT4ge1xuICAgICAgY29uc3QgeyByZWxhdGlvblRvIH0gPSBmaWVsZFxuXG4gICAgICBjb25zdCB1cGxvYWROYW1lID0gY29tYmluZVBhcmVudE5hbWUocGFyZW50TmFtZSwgdG9Xb3JkcyhmaWVsZC5uYW1lLCB0cnVlKSlcblxuICAgICAgLy8gSWYgdGhlIHJlbGF0aW9uc2hpcFR5cGUgaXMgdW5kZWZpbmVkIGF0IHRoaXMgcG9pbnQsXG4gICAgICAvLyBpdCBjYW4gYmUgYXNzdW1lZCB0aGF0IHRoaXMgYmxvY2tUeXBlIGNhbiBoYXZlIGEgcmVsYXRpb25zaGlwXG4gICAgICAvLyB0byBpdHNlbGYuIFRoZXJlZm9yZSwgd2Ugc2V0IHRoZSByZWxhdGlvbnNoaXBUeXBlIGVxdWFsIHRvIHRoZSBibG9ja1R5cGVcbiAgICAgIC8vIHRoYXQgaXMgY3VycmVudGx5IGJlaW5nIGNyZWF0ZWQuXG5cbiAgICAgIGNvbnN0IHR5cGUgPSB3aXRoTnVsbGFibGVUeXBlKFxuICAgICAgICBmaWVsZCxcbiAgICAgICAgcGF5bG9hZC5jb2xsZWN0aW9uc1tyZWxhdGlvblRvXS5ncmFwaFFMLnR5cGUgfHwgbmV3bHlDcmVhdGVkQmxvY2tUeXBlLFxuICAgICAgICBmb3JjZU51bGxhYmxlLFxuICAgICAgKVxuXG4gICAgICBjb25zdCB1cGxvYWRBcmdzID0ge30gYXMgTG9jYWxlSW5wdXRUeXBlXG5cbiAgICAgIGlmIChwYXlsb2FkLmNvbmZpZy5sb2NhbGl6YXRpb24pIHtcbiAgICAgICAgdXBsb2FkQXJncy5sb2NhbGUgPSB7XG4gICAgICAgICAgdHlwZTogcGF5bG9hZC50eXBlcy5sb2NhbGVJbnB1dFR5cGUsXG4gICAgICAgIH1cblxuICAgICAgICB1cGxvYWRBcmdzLmZhbGxiYWNrTG9jYWxlID0ge1xuICAgICAgICAgIHR5cGU6IHBheWxvYWQudHlwZXMuZmFsbGJhY2tMb2NhbGVJbnB1dFR5cGUsXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc3QgcmVsYXRlZENvbGxlY3Rpb25TbHVnID0gZmllbGQucmVsYXRpb25Ub1xuXG4gICAgICBjb25zdCB1cGxvYWQgPSB7XG4gICAgICAgIGFyZ3M6IHVwbG9hZEFyZ3MsXG4gICAgICAgIGV4dGVuc2lvbnM6IHsgY29tcGxleGl0eTogMjAgfSxcbiAgICAgICAgYXN5bmMgcmVzb2x2ZShwYXJlbnQsIGFyZ3MsIGNvbnRleHQpIHtcbiAgICAgICAgICBjb25zdCB2YWx1ZSA9IHBhcmVudFtmaWVsZC5uYW1lXVxuICAgICAgICAgIGNvbnN0IGxvY2FsZSA9IGFyZ3MubG9jYWxlIHx8IGNvbnRleHQucmVxLmxvY2FsZVxuICAgICAgICAgIGNvbnN0IGZhbGxiYWNrTG9jYWxlID0gYXJncy5mYWxsYmFja0xvY2FsZSB8fCBjb250ZXh0LnJlcS5mYWxsYmFja0xvY2FsZVxuICAgICAgICAgIGNvbnN0IGlkID0gdmFsdWVcblxuICAgICAgICAgIGlmIChpZCkge1xuICAgICAgICAgICAgY29uc3QgcmVsYXRlZERvY3VtZW50ID0gYXdhaXQgY29udGV4dC5yZXEucGF5bG9hZERhdGFMb2FkZXIubG9hZChcbiAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoW1xuICAgICAgICAgICAgICAgIGNvbnRleHQucmVxLnRyYW5zYWN0aW9uSUQsXG4gICAgICAgICAgICAgICAgcmVsYXRlZENvbGxlY3Rpb25TbHVnLFxuICAgICAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAgICAgMCxcbiAgICAgICAgICAgICAgICBsb2NhbGUsXG4gICAgICAgICAgICAgICAgZmFsbGJhY2tMb2NhbGUsXG4gICAgICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgKVxuXG4gICAgICAgICAgICByZXR1cm4gcmVsYXRlZERvY3VtZW50IHx8IG51bGxcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgICB9LFxuICAgICAgICB0eXBlLFxuICAgICAgfVxuXG4gICAgICBjb25zdCB3aGVyZUZpZWxkcyA9IHBheWxvYWQuY29sbGVjdGlvbnNbcmVsYXRpb25Ub10uY29uZmlnLmZpZWxkc1xuXG4gICAgICB1cGxvYWQuYXJncy53aGVyZSA9IHtcbiAgICAgICAgdHlwZTogYnVpbGRXaGVyZUlucHV0VHlwZSh7XG4gICAgICAgICAgbmFtZTogdXBsb2FkTmFtZSxcbiAgICAgICAgICBmaWVsZHM6IHdoZXJlRmllbGRzLFxuICAgICAgICAgIHBhcmVudE5hbWU6IHVwbG9hZE5hbWUsXG4gICAgICAgICAgcGF5bG9hZCxcbiAgICAgICAgfSksXG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLm9iamVjdFR5cGVDb25maWcsXG4gICAgICAgIFtmaWVsZC5uYW1lXTogdXBsb2FkLFxuICAgICAgfVxuICAgIH0sXG4gIH1cblxuICBjb25zdCBvYmplY3RTY2hlbWEgPSB7XG4gICAgbmFtZSxcbiAgICBmaWVsZHM6ICgpID0+XG4gICAgICBmaWVsZHMucmVkdWNlKChvYmplY3RUeXBlQ29uZmlnLCBmaWVsZCkgPT4ge1xuICAgICAgICBjb25zdCBmaWVsZFNjaGVtYSA9IGZpZWxkVG9TY2hlbWFNYXBbZmllbGQudHlwZV1cblxuICAgICAgICBpZiAodHlwZW9mIGZpZWxkU2NoZW1hICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgcmV0dXJuIG9iamVjdFR5cGVDb25maWdcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4ub2JqZWN0VHlwZUNvbmZpZyxcbiAgICAgICAgICAuLi5maWVsZFNjaGVtYShvYmplY3RUeXBlQ29uZmlnLCBmaWVsZCksXG4gICAgICAgIH1cbiAgICAgIH0sIGJhc2VGaWVsZHMpLFxuICB9XG5cbiAgY29uc3QgbmV3bHlDcmVhdGVkQmxvY2tUeXBlID0gbmV3IEdyYXBoUUxPYmplY3RUeXBlKG9iamVjdFNjaGVtYSlcblxuICByZXR1cm4gbmV3bHlDcmVhdGVkQmxvY2tUeXBlXG59XG5cbmV4cG9ydCBkZWZhdWx0IGJ1aWxkT2JqZWN0VHlwZVxuIl0sIm5hbWVzIjpbImJ1aWxkT2JqZWN0VHlwZSIsIm5hbWUiLCJiYXNlRmllbGRzIiwiZmllbGRzIiwiZm9yY2VOdWxsYWJsZSIsInBhcmVudE5hbWUiLCJwYXlsb2FkIiwiZmllbGRUb1NjaGVtYU1hcCIsImFycmF5Iiwib2JqZWN0VHlwZUNvbmZpZyIsImZpZWxkIiwiaW50ZXJmYWNlTmFtZSIsImNvbWJpbmVQYXJlbnROYW1lIiwidG9Xb3JkcyIsInR5cGVzIiwiYXJyYXlUeXBlcyIsImlzRmllbGROdWxsYWJsZSIsImFycmF5VHlwZSIsIkdyYXBoUUxMaXN0IiwiR3JhcGhRTE5vbk51bGwiLCJ0eXBlIiwid2l0aE51bGxhYmxlVHlwZSIsImJsb2NrcyIsImJsb2NrVHlwZXMiLCJtYXAiLCJibG9jayIsInNsdWciLCJncmFwaFFMIiwic2luZ3VsYXJOYW1lIiwiZnVsbE5hbWUiLCJHcmFwaFFMVW5pb25UeXBlIiwicmVzb2x2ZVR5cGUiLCJkYXRhIiwiYmxvY2tUeXBlIiwiY2hlY2tib3giLCJHcmFwaFFMQm9vbGVhbiIsImNvZGUiLCJHcmFwaFFMU3RyaW5nIiwiY29sbGFwc2libGUiLCJyZWR1Y2UiLCJvYmplY3RUeXBlQ29uZmlnV2l0aENvbGxhcHNpYmxlRmllbGRzIiwic3ViRmllbGQiLCJhZGRTdWJGaWVsZCIsImRhdGUiLCJEYXRlVGltZVJlc29sdmVyIiwiZW1haWwiLCJFbWFpbEFkZHJlc3NSZXNvbHZlciIsImdyb3VwIiwiZ3JvdXBUeXBlcyIsImpzb24iLCJHcmFwaFFMSlNPTiIsIm51bWJlciIsIkdyYXBoUUxJbnQiLCJHcmFwaFFMRmxvYXQiLCJoYXNNYW55IiwicG9pbnQiLCJyYWRpbyIsIkdyYXBoUUxFbnVtVHlwZSIsInZhbHVlcyIsImZvcm1hdE9wdGlvbnMiLCJyZWxhdGlvbnNoaXAiLCJyZWxhdGlvblRvIiwiaXNSZWxhdGVkVG9NYW55Q29sbGVjdGlvbnMiLCJBcnJheSIsImlzQXJyYXkiLCJoYXNNYW55VmFsdWVzIiwicmVsYXRpb25zaGlwTmFtZSIsInJlbGF0aW9uVG9UeXBlIiwicmVsYXRpb25zIiwicmVsYXRpb24iLCJmb3JtYXROYW1lIiwidmFsdWUiLCJjb2xsZWN0aW9ucyIsIkdyYXBoUUxPYmplY3RUeXBlIiwicmVxIiwiY29sbGVjdGlvbiIsIm5ld2x5Q3JlYXRlZEJsb2NrVHlwZSIsInJlbGF0aW9uc2hpcEFyZ3MiLCJjb25maWciLCJsb2NhbGl6YXRpb24iLCJsb2NhbGUiLCJsb2NhbGVJbnB1dFR5cGUiLCJmYWxsYmFja0xvY2FsZSIsImZhbGxiYWNrTG9jYWxlSW5wdXRUeXBlIiwiYXJncyIsImV4dGVuc2lvbnMiLCJjb21wbGV4aXR5IiwicmVzb2x2ZSIsInBhcmVudCIsImNvbnRleHQiLCJyZWxhdGVkQ29sbGVjdGlvblNsdWciLCJyZXN1bHRzIiwicmVzdWx0UHJvbWlzZXMiLCJjcmVhdGVQb3B1bGF0aW9uUHJvbWlzZSIsInJlbGF0ZWREb2MiLCJpIiwiaWQiLCJjb2xsZWN0aW9uU2x1ZyIsInJlc3VsdCIsInBheWxvYWREYXRhTG9hZGVyIiwibG9hZCIsIkpTT04iLCJzdHJpbmdpZnkiLCJ0cmFuc2FjdGlvbklEIiwiZm9yRWFjaCIsInB1c2giLCJQcm9taXNlIiwiYWxsIiwicmVsYXRlZERvY3VtZW50IiwicmljaFRleHQiLCJkZXB0aCIsImRlZmF1bHREZXB0aCIsImVkaXRvciIsImFmdGVyUmVhZFByb21pc2UiLCJzaG93SGlkZGVuRmllbGRzIiwic2libGluZ0RvYyIsInJvdyIsIm9iamVjdFR5cGVDb25maWdXaXRoUm93RmllbGRzIiwic2VsZWN0IiwidGFicyIsInRhYlNjaGVtYSIsInRhYiIsInRhYkhhc05hbWUiLCJ0YWJUeXBlcyIsInN1YkZpZWxkU2NoZW1hIiwidGV4dCIsInRleHRhcmVhIiwidXBsb2FkIiwidXBsb2FkTmFtZSIsInVwbG9hZEFyZ3MiLCJ3aGVyZUZpZWxkcyIsIndoZXJlIiwiYnVpbGRXaGVyZUlucHV0VHlwZSIsIm9iamVjdFNjaGVtYSIsImZpZWxkU2NoZW1hIl0sIm1hcHBpbmdzIjoiQUFBQSwwREFBMEQsR0FDMUQsbUNBQW1DLEdBQ25DLHVDQUF1Qzs7OzsrQkFnbUJ2Qzs7O2VBQUE7Ozt5QkFubEJPO2dDQUNnRDtpQ0FFM0I7dUJBNEJEOzhCQUNIOzBFQUNNO21FQUNQO3NFQUNHOzRFQUNNO3dFQUNKO3lFQUNDOzs7Ozs7QUEyQjdCLFNBQVNBLGdCQUFnQixFQUN2QkMsSUFBSSxFQUNKQyxhQUFhLENBQUMsQ0FBQyxFQUNmQyxNQUFNLEVBQ05DLGFBQWEsRUFDYkMsVUFBVSxFQUNWQyxPQUFPLEVBQ0Y7SUFDTCxNQUFNQyxtQkFBbUI7UUFDdkJDLE9BQU8sQ0FBQ0Msa0JBQW9DQztZQUMxQyxNQUFNQyxnQkFDSkQsT0FBT0MsaUJBQWlCQyxJQUFBQSwwQkFBaUIsRUFBQ1AsWUFBWVEsSUFBQUEscUJBQU8sRUFBQ0gsTUFBTVQsSUFBSSxFQUFFO1lBRTVFLElBQUksQ0FBQ0ssUUFBUVEsS0FBSyxDQUFDQyxVQUFVLENBQUNKLGNBQWMsRUFBRTtnQkFDNUMsNkNBQTZDO2dCQUM3Q0wsUUFBUVEsS0FBSyxDQUFDQyxVQUFVLENBQUNKLGNBQWMsR0FBR1gsZ0JBQWdCO29CQUN4REMsTUFBTVU7b0JBQ05SLFFBQVFPLE1BQU1QLE1BQU07b0JBQ3BCQyxlQUFlWSxJQUFBQSx3QkFBZSxFQUFDTixPQUFPTjtvQkFDdENDLFlBQVlNO29CQUNa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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "payload",
3
- "version": "2.0.0-beta.16",
3
+ "version": "2.0.0-beta.17",
4
4
  "description": "Node, React and MongoDB Headless CMS and Application Framework",
5
5
  "license": "MIT",
6
6
  "main": "./dist/index.js",
@@ -1,4 +0,0 @@
1
- import * as React from 'react';
2
- import './index.scss';
3
- export declare const QueryInspector: () => React.JSX.Element;
4
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/admin/components/views/RestAPI/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAQ9B,OAAO,cAAc,CAAA;AAIrB,eAAO,MAAM,cAAc,yBAgD1B,CAAA"}
@@ -1,113 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "QueryInspector", {
6
- enumerable: true,
7
- get: function() {
8
- return QueryInspector;
9
- }
10
- });
11
- const _react = /*#__PURE__*/ _interop_require_wildcard(require("react"));
12
- const _reacti18next = require("react-i18next");
13
- const _api = require("../../../api");
14
- const _Gutter = require("../../elements/Gutter");
15
- const _Input = /*#__PURE__*/ _interop_require_default(require("../../forms/field-types/Text/Input"));
16
- const _Config = require("../../utilities/Config");
17
- const _DocumentInfo = require("../../utilities/DocumentInfo");
18
- require("./index.scss");
19
- function _interop_require_default(obj) {
20
- return obj && obj.__esModule ? obj : {
21
- default: obj
22
- };
23
- }
24
- function _getRequireWildcardCache(nodeInterop) {
25
- if (typeof WeakMap !== "function") return null;
26
- var cacheBabelInterop = new WeakMap();
27
- var cacheNodeInterop = new WeakMap();
28
- return (_getRequireWildcardCache = function(nodeInterop) {
29
- return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
30
- })(nodeInterop);
31
- }
32
- function _interop_require_wildcard(obj, nodeInterop) {
33
- if (!nodeInterop && obj && obj.__esModule) {
34
- return obj;
35
- }
36
- if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
37
- return {
38
- default: obj
39
- };
40
- }
41
- var cache = _getRequireWildcardCache(nodeInterop);
42
- if (cache && cache.has(obj)) {
43
- return cache.get(obj);
44
- }
45
- var newObj = {};
46
- var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
47
- for(var key in obj){
48
- if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
49
- var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
50
- if (desc && (desc.get || desc.set)) {
51
- Object.defineProperty(newObj, key, desc);
52
- } else {
53
- newObj[key] = obj[key];
54
- }
55
- }
56
- }
57
- newObj.default = obj;
58
- if (cache) {
59
- cache.set(obj, newObj);
60
- }
61
- return newObj;
62
- }
63
- const baseClass = 'query-inspector';
64
- const QueryInspector = ()=>{
65
- const { id, collection } = (0, _DocumentInfo.useDocumentInfo)();
66
- const { serverURL } = (0, _Config.useConfig)();
67
- const { i18n } = (0, _reacti18next.useTranslation)();
68
- const [query, setQuery] = _react.useState('');
69
- const containerRef = _react.useRef(null);
70
- _react.useEffect(()=>{
71
- const fetchData = async ()=>{
72
- if (id) {
73
- const request = await _api.requests.get(`${serverURL}/api/${collection.slug}/${id}${query ? `${query}` : ''}`, {
74
- headers: {
75
- 'Accept-Language': i18n.language
76
- }
77
- });
78
- const json = await request.json();
79
- // const formatter = new JsonFormatter(json, Infinity)
80
- // const formattedJSON = formatter.render()
81
- containerRef.current.innerHTML = '' // Clear previous content
82
- ;
83
- containerRef.current.appendChild(json);
84
- }
85
- };
86
- fetchData();
87
- }, [
88
- id,
89
- collection,
90
- serverURL,
91
- i18n.language,
92
- query
93
- ]);
94
- return /*#__PURE__*/ _react.createElement(_Gutter.Gutter, {
95
- className: baseClass,
96
- right: false
97
- }, /*#__PURE__*/ _react.createElement("div", {
98
- className: `${baseClass}__configuration`
99
- }, /*#__PURE__*/ _react.createElement("h3", {
100
- className: `${baseClass}__configuration-title`
101
- }, "Query Builder"), /*#__PURE__*/ _react.createElement(_Input.default, {
102
- name: "query",
103
- onChange: (e)=>setQuery(e.target.value),
104
- path: "query",
105
- placeholder: "?depth=1",
106
- value: query
107
- })), /*#__PURE__*/ _react.createElement("div", {
108
- className: `${baseClass}__results-container`,
109
- ref: containerRef
110
- }));
111
- };
112
-
113
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hZG1pbi9jb21wb25lbnRzL3ZpZXdzL1Jlc3RBUEkvaW5kZXgudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tICdyZWFjdC1pMThuZXh0J1xuXG5pbXBvcnQgeyByZXF1ZXN0cyB9IGZyb20gJy4uLy4uLy4uL2FwaSdcbmltcG9ydCB7IEd1dHRlciB9IGZyb20gJy4uLy4uL2VsZW1lbnRzL0d1dHRlcidcbmltcG9ydCBUZXh0SW5wdXQgZnJvbSAnLi4vLi4vZm9ybXMvZmllbGQtdHlwZXMvVGV4dC9JbnB1dCdcbmltcG9ydCB7IHVzZUNvbmZpZyB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9Db25maWcnXG5pbXBvcnQgeyB1c2VEb2N1bWVudEluZm8gfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvRG9jdW1lbnRJbmZvJ1xuaW1wb3J0ICcuL2luZGV4LnNjc3MnXG5cbmNvbnN0IGJhc2VDbGFzcyA9ICdxdWVyeS1pbnNwZWN0b3InXG5cbmV4cG9ydCBjb25zdCBRdWVyeUluc3BlY3RvciA9ICgpID0+IHtcbiAgY29uc3QgeyBpZCwgY29sbGVjdGlvbiB9ID0gdXNlRG9jdW1lbnRJbmZvKClcbiAgY29uc3QgeyBzZXJ2ZXJVUkwgfSA9IHVzZUNvbmZpZygpXG4gIGNvbnN0IHsgaTE4biB9ID0gdXNlVHJhbnNsYXRpb24oKVxuXG4gIGNvbnN0IFtxdWVyeSwgc2V0UXVlcnldID0gUmVhY3QudXNlU3RhdGU8c3RyaW5nPignJylcbiAgY29uc3QgY29udGFpbmVyUmVmID0gUmVhY3QudXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgZmV0Y2hEYXRhID0gYXN5bmMgKCkgPT4ge1xuICAgICAgaWYgKGlkKSB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSBhd2FpdCByZXF1ZXN0cy5nZXQoXG4gICAgICAgICAgYCR7c2VydmVyVVJMfS9hcGkvJHtjb2xsZWN0aW9uLnNsdWd9LyR7aWR9JHtxdWVyeSA/IGAke3F1ZXJ5fWAgOiAnJ31gLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgJ0FjY2VwdC1MYW5ndWFnZSc6IGkxOG4ubGFuZ3VhZ2UsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIClcblxuICAgICAgICBjb25zdCBqc29uID0gYXdhaXQgcmVxdWVzdC5qc29uKClcbiAgICAgICAgLy8gY29uc3QgZm9ybWF0dGVyID0gbmV3IEpzb25Gb3JtYXR0ZXIoanNvbiwgSW5maW5pdHkpXG4gICAgICAgIC8vIGNvbnN0IGZvcm1hdHRlZEpTT04gPSBmb3JtYXR0ZXIucmVuZGVyKClcblxuICAgICAgICBjb250YWluZXJSZWYuY3VycmVudC5pbm5lckhUTUwgPSAnJyAvLyBDbGVhciBwcmV2aW91cyBjb250ZW50XG4gICAgICAgIGNvbnRhaW5lclJlZi5jdXJyZW50LmFwcGVuZENoaWxkKGpzb24pXG4gICAgICB9XG4gICAgfVxuXG4gICAgZmV0Y2hEYXRhKClcbiAgfSwgW2lkLCBjb2xsZWN0aW9uLCBzZXJ2ZXJVUkwsIGkxOG4ubGFuZ3VhZ2UsIHF1ZXJ5XSlcblxuICByZXR1cm4gKFxuICAgIDxHdXR0ZXIgY2xhc3NOYW1lPXtiYXNlQ2xhc3N9IHJpZ2h0PXtmYWxzZX0+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9fY29uZmlndXJhdGlvbmB9PlxuICAgICAgICA8aDMgY2xhc3NOYW1lPXtgJHtiYXNlQ2xhc3N9X19jb25maWd1cmF0aW9uLXRpdGxlYH0+UXVlcnkgQnVpbGRlcjwvaDM+XG4gICAgICAgIDxUZXh0SW5wdXRcbiAgICAgICAgICBuYW1lPVwicXVlcnlcIlxuICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gc2V0UXVlcnkoZS50YXJnZXQudmFsdWUpfVxuICAgICAgICAgIHBhdGg9XCJxdWVyeVwiXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCI/ZGVwdGg9MVwiXG4gICAgICAgICAgdmFsdWU9e3F1ZXJ5fVxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtgJHtiYXNlQ2xhc3N9X19yZXN1bHRzLWNvbnRhaW5lcmB9IHJlZj17Y29udGFpbmVyUmVmfSAvPlxuICAgIDwvR3V0dGVyPlxuICApXG59XG4iXSwibmFtZXMiOlsiUXVlcnlJbnNwZWN0b3IiLCJiYXNlQ2xhc3MiLCJpZCIsImNvbGxlY3Rpb24iLCJ1c2VEb2N1bWVudEluZm8iLCJzZXJ2ZXJVUkwiLCJ1c2VDb25maWciLCJpMThuIiwidXNlVHJhbnNsYXRpb24iLCJxdWVyeSIsInNldFF1ZXJ5IiwiUmVhY3QiLCJ1c2VTdGF0ZSIsImNvbnRhaW5lclJlZiIsInVzZVJlZiIsInVzZUVmZmVjdCIsImZldGNoRGF0YSIsInJlcXVlc3QiLCJyZXF1ZXN0cyIsImdldCIsInNsdWciLCJoZWFkZXJzIiwibGFuZ3VhZ2UiLCJqc29uIiwiY3VycmVudCIsImlubmVySFRNTCIsImFwcGVuZENoaWxkIiwiR3V0dGVyIiwiY2xhc3NOYW1lIiwicmlnaHQiLCJkaXYiLCJoMyIsIlRleHRJbnB1dCIsIm5hbWUiLCJvbkNoYW5nZSIsImUiLCJ0YXJnZXQiLCJ2YWx1ZSIsInBhdGgiLCJwbGFjZWhvbGRlciIsInJlZiJdLCJtYXBwaW5ncyI6Ijs7OzsrQkFZYUE7OztlQUFBQTs7OytEQVpVOzhCQUNRO3FCQUVOO3dCQUNGOzhEQUNEO3dCQUNJOzhCQUNNO1FBQ3pCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFUCxNQUFNQyxZQUFZO0FBRVgsTUFBTUQsaUJBQWlCO0lBQzVCLE1BQU0sRUFBRUUsRUFBRSxFQUFFQyxVQUFVLEVBQUUsR0FBR0MsSUFBQUEsNkJBQWU7SUFDMUMsTUFBTSxFQUFFQyxTQUFTLEVBQUUsR0FBR0MsSUFBQUEsaUJBQVM7SUFDL0IsTUFBTSxFQUFFQyxJQUFJLEVBQUUsR0FBR0MsSUFBQUEsNEJBQWM7SUFFL0IsTUFBTSxDQUFDQyxPQUFPQyxTQUFTLEdBQUdDLE9BQU1DLFFBQVEsQ0FBUztJQUNqRCxNQUFNQyxlQUFlRixPQUFNRyxNQUFNLENBQWlCO0lBRWxESCxPQUFNSSxTQUFTLENBQUM7UUFDZCxNQUFNQyxZQUFZO1lBQ2hCLElBQUlkLElBQUk7Z0JBQ04sTUFBTWUsVUFBVSxNQUFNQyxhQUFRLENBQUNDLEdBQUcsQ0FDaEMsQ0FBQyxFQUFFZCxVQUFVLEtBQUssRUFBRUYsV0FBV2lCLElBQUksQ0FBQyxDQUFDLEVBQUVsQixHQUFHLEVBQUVPLFFBQVEsQ0FBQyxFQUFFQSxNQUFNLENBQUMsR0FBRyxHQUFHLENBQUMsRUFDckU7b0JBQ0VZLFNBQVM7d0JBQ1AsbUJBQW1CZCxLQUFLZSxRQUFRO29CQUNsQztnQkFDRjtnQkFHRixNQUFNQyxPQUFPLE1BQU1OLFFBQVFNLElBQUk7Z0JBQy9CLHNEQUFzRDtnQkFDdEQsMkNBQTJDO2dCQUUzQ1YsYUFBYVcsT0FBTyxDQUFDQyxTQUFTLEdBQUcsR0FBRyx5QkFBeUI7O2dCQUM3RFosYUFBYVcsT0FBTyxDQUFDRSxXQUFXLENBQUNIO1lBQ25DO1FBQ0Y7UUFFQVA7SUFDRixHQUFHO1FBQUNkO1FBQUlDO1FBQVlFO1FBQVdFLEtBQUtlLFFBQVE7UUFBRWI7S0FBTTtJQUVwRCxxQkFDRSxxQkFBQ2tCLGNBQU07UUFBQ0MsV0FBVzNCO1FBQVc0QixPQUFPO3FCQUNuQyxxQkFBQ0M7UUFBSUYsV0FBVyxDQUFDLEVBQUUzQixVQUFVLGVBQWUsQ0FBQztxQkFDM0MscUJBQUM4QjtRQUFHSCxXQUFXLENBQUMsRUFBRTNCLFVBQVUscUJBQXFCLENBQUM7T0FBRSxnQ0FDcEQscUJBQUMrQixjQUFTO1FBQ1JDLE1BQUs7UUFDTEMsVUFBVSxDQUFDQyxJQUFNekIsU0FBU3lCLEVBQUVDLE1BQU0sQ0FBQ0MsS0FBSztRQUN4Q0MsTUFBSztRQUNMQyxhQUFZO1FBQ1pGLE9BQU81Qjt1QkFJWCxxQkFBQ3FCO1FBQUlGLFdBQVcsQ0FBQyxFQUFFM0IsVUFBVSxtQkFBbUIsQ0FBQztRQUFFdUMsS0FBSzNCOztBQUc5RCJ9
@@ -1,107 +0,0 @@
1
- .query-inspector {
2
- display: flex;
3
- gap: var(--base);
4
- }
5
-
6
- .query-inspector__configuration {
7
- margin-top: calc(var(--base) * 2);
8
- }
9
-
10
- .query-inspector__results-container {
11
- --inspector-bg: var(--theme-elevation-50);
12
- overflow: auto;
13
- background-color: var(--inspector-bg);
14
- flex-grow: 1;
15
- padding-top: calc(var(--base) * 0.5);
16
- padding-left: calc(var(--base) * 0.5);
17
- padding-bottom: calc(var(--base) * 0.5);
18
-
19
- .json-formatter-constructor-name,
20
- .json-formatter-constructor-name + *,
21
- > .json-formatter-row > .json-formatter-toggler-link {
22
- display: none;
23
- }
24
-
25
- > .json-formatter-row {
26
- border: none !important;
27
- }
28
-
29
- .json-formatter-constructor-name,
30
- .json-formatter-key,
31
- .json-formatter-bracket {
32
- color: var(--theme-text);
33
- }
34
-
35
- .json-formatter-row {
36
- position: relative;
37
- }
38
-
39
- .json-formatter-children {
40
- position: relative;
41
- }
42
-
43
- .json-formatter-toggler-link {
44
- display: flex;
45
- align-items: center;
46
- gap: 5px;
47
- }
48
-
49
- .json-formatter-toggler-link {
50
- &:before {
51
- content: '';
52
- position: absolute;
53
- width: 0px;
54
- border-left: 1px dashed var(--theme-elevation-400);
55
- opacity: 0.5;
56
- height: calc(100% - 25px);
57
- top: 25px;
58
- bottom: 0;
59
- left: 0;
60
- }
61
- }
62
-
63
- .json-formatter-row .json-formatter-toggler {
64
- height: 5px;
65
- width: 5px;
66
- position: relative;
67
- opacity: 1;
68
-
69
- &:after {
70
- content: '';
71
- display: inline-block;
72
- position: absolute;
73
- border: 4px solid transparent;
74
- border-left-color: var(--theme-text);
75
- transform: translate3d(-50%, -50%, 0px) !important;
76
- left: 0;
77
- top: 5px;
78
- }
79
- }
80
-
81
- .json-formatter-row.json-formatter-open > .json-formatter-toggler-link > .json-formatter-toggler {
82
- &:after {
83
- border-top-color: var(--theme-text);
84
- border-left-color: transparent;
85
- }
86
- }
87
-
88
- .json-formatter-key {
89
- }
90
-
91
- .json-formatter-number {
92
- color: #62c3f3;
93
- }
94
- }
95
-
96
- html[data-theme='dark'] {
97
- .query-inspector__results-container {
98
- .json-formatter-toggler {
99
- }
100
-
101
- .json-formatter-key {
102
- }
103
-
104
- .json-formatter-number {
105
- }
106
- }
107
- }