sonamu 0.10.0 → 0.10.2

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 (38) hide show
  1. package/dist/api/sonamu.d.ts.map +1 -1
  2. package/dist/api/sonamu.js +13 -22
  3. package/dist/api/websocket-helpers.js +1 -1
  4. package/dist/auth/audit-log/builders.d.ts.map +1 -1
  5. package/dist/auth/audit-log/builders.js +3 -1
  6. package/dist/auth/audit-log/client-ip.d.ts +3 -0
  7. package/dist/auth/audit-log/client-ip.d.ts.map +1 -0
  8. package/dist/auth/audit-log/client-ip.js +27 -0
  9. package/dist/auth/audit-log/events.d.ts +1 -0
  10. package/dist/auth/audit-log/events.d.ts.map +1 -1
  11. package/dist/auth/audit-log/events.js +1 -1
  12. package/dist/auth/audit-log-ingestor.d.ts.map +1 -1
  13. package/dist/auth/audit-log-ingestor.js +8 -3
  14. package/dist/auth/better-auth-request.d.ts +3 -0
  15. package/dist/auth/better-auth-request.d.ts.map +1 -0
  16. package/dist/auth/better-auth-request.js +23 -0
  17. package/dist/bin/build-config.d.ts.map +1 -1
  18. package/dist/bin/build-config.js +3 -3
  19. package/dist/bin/cli.js +1 -1
  20. package/dist/entity/entity.js +1 -1
  21. package/dist/index.js +1 -1
  22. package/dist/migration/code-generation.js +1 -1
  23. package/dist/syncer/checksum.js +6 -13
  24. package/dist/testing/index.d.ts +1 -0
  25. package/dist/testing/index.d.ts.map +1 -1
  26. package/dist/testing/index.js +4 -2
  27. package/dist/ui/api.js +1 -1
  28. package/package.json +3 -3
  29. package/src/api/sonamu.ts +14 -29
  30. package/src/auth/audit-log/builders.ts +3 -0
  31. package/src/auth/audit-log/client-ip.ts +38 -0
  32. package/src/auth/audit-log/events.ts +1 -0
  33. package/src/auth/audit-log-ingestor.ts +22 -15
  34. package/src/auth/better-auth-request.ts +20 -0
  35. package/src/bin/build-config.ts +3 -2
  36. package/src/skills/sonamu/puri.md +33 -0
  37. package/src/syncer/checksum.ts +7 -12
  38. package/src/testing/index.ts +1 -0
@@ -1,6 +1,6 @@
1
1
  import { __esmMin } from "../_virtual/_rolldown/runtime.js";
2
- import { init_so_exceptions, isSoException } from "../exceptions/so-exceptions.js";
3
2
  import { init_utils, isPlainObject } from "../utils/utils.js";
3
+ import { init_so_exceptions, isSoException } from "../exceptions/so-exceptions.js";
4
4
  //#region src/api/websocket-helpers.ts
5
5
  function resolveIntegratedViteHmrOptions({ httpServer, requiresDedicatedWebSocketServer, rawPort = process.env.SONAMU_VITE_HMR_PORT }) {
6
6
  if (!requiresDedicatedWebSocketServer) return { server: httpServer };
@@ -1 +1 @@
1
- {"version":3,"file":"builders.d.ts","sourceRoot":"","sources":["../../../src/auth/audit-log/builders.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"builders.d.ts","sourceRoot":"","sources":["../../../src/auth/audit-log/builders.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,9 @@
1
1
  import { EVENT_TYPES, ORGANIZATION_EVENT_TYPES } from "./events.js";
2
+ import { randomUUID } from "node:crypto";
2
3
  //#region src/auth/audit-log/builders.ts
3
4
  const createEvent = (base, data, trigger, location) => ({
4
5
  ...base,
6
+ eventId: randomUUID(),
5
7
  eventData: {
6
8
  ...data,
7
9
  triggeredBy: trigger.triggeredBy,
@@ -303,4 +305,4 @@ const buildAuditEventCatalog = () => ({
303
305
  //#endregion
304
306
  export { buildAuditEventCatalog };
305
307
 
306
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRlcnMuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F1dGgvYXVkaXQtbG9nL2J1aWxkZXJzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIHR5cGUgQWNjb3VudFNuYXBzaG90LFxuICB0eXBlIEF1ZGl0TG9nRXZlbnQsXG4gIHR5cGUgQnVpbGRlcixcbiAgdHlwZSBCdWlsZGVyTG9jYXRpb24sXG4gIHR5cGUgQnVpbGRlclRyaWdnZXIsXG4gIEVWRU5UX1RZUEVTLFxuICB0eXBlIEludml0YXRpb25TbmFwc2hvdCxcbiAgdHlwZSBNZW1iZXJTbmFwc2hvdCxcbiAgT1JHQU5JWkFUSU9OX0VWRU5UX1RZUEVTLFxuICB0eXBlIE9yZ2FuaXphdGlvblNuYXBzaG90LFxuICB0eXBlIFNlc3Npb25TbmFwc2hvdCxcbiAgdHlwZSBUZWFtU25hcHNob3QsXG4gIHR5cGUgVXNlclByb2ZpbGVMaXRlLFxuICB0eXBlIFVzZXJTbmFwc2hvdCxcbiAgdHlwZSBWZXJpZmljYXRpb25TbmFwc2hvdCxcbn0gZnJvbSBcIi4vZXZlbnRzXCI7XG5cbi8vIOuqqOuToCDruYzrjZQg6rO17Ya1IO2VhOuTnCh0cmlnZ2VyZWRCeS90cmlnZ2VyQ29udGV4dCwgaXBBZGRyZXNzL2NpdHkvY291bnRyeS9jb3VudHJ5Q29kZSnrpbwg7ZWp7ISx7ZWc64ukLlxuY29uc3QgY3JlYXRlRXZlbnQgPSAoXG4gIGJhc2U6IHsgZXZlbnRLZXk6IHN0cmluZzsgZXZlbnRUeXBlOiBzdHJpbmc7IGV2ZW50RGlzcGxheU5hbWU/OiBzdHJpbmcgfSxcbiAgZGF0YTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gIHRyaWdnZXI6IEJ1aWxkZXJUcmlnZ2VyLFxuICBsb2NhdGlvbj86IEJ1aWxkZXJMb2NhdGlvbixcbik6IEF1ZGl0TG9nRXZlbnQgPT4gKHtcbiAgLi4uYmFzZSxcbiAgZXZlbnREYXRhOiB7XG4gICAgLi4uZGF0YSxcbiAgICB0cmlnZ2VyZWRCeTogdHJpZ2dlci50cmlnZ2VyZWRCeSxcbiAgICB0cmlnZ2VyQ29udGV4dDogdHJpZ2dlci50cmlnZ2VyQ29udGV4dCxcbiAgfSxcbiAgaXBBZGRyZXNzOiBsb2NhdGlvbj8uaXBBZGRyZXNzLFxuICBjaXR5OiBsb2NhdGlvbj8uY2l0eSxcbiAgY291bnRyeTogbG9jYXRpb24/LmNvdW50cnksXG4gIGNvdW50cnlDb2RlOiBsb2NhdGlvbj8uY291bnRyeUNvZGUsXG59KTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQWNjb3VudCDruYzrjZRcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbmV4cG9ydCB0eXBlIEFjY291bnRFdmVudEJ1aWxkZXJzID0ge1xuICB0cmFja0FjY291bnRMaW5raW5nOiBCdWlsZGVyPFxuICAgIFtBY2NvdW50U25hcHNob3QsIFVzZXJQcm9maWxlTGl0ZSwgQnVpbGRlclRyaWdnZXIsIEJ1aWxkZXJMb2NhdGlvbiB8IHVuZGVmaW5lZF1cbiAgPjtcbiAgdHJhY2tBY2NvdW50VW5saW5rOiBCdWlsZGVyPFxuICAgIFtBY2NvdW50U25hcHNob3QsIFVzZXJQcm9maWxlTGl0ZSwgQnVpbGRlclRyaWdnZXIsIEJ1aWxkZXJMb2NhdGlvbiB8IHVuZGVmaW5lZF1cbiAgPjtcbiAgdHJhY2tBY2NvdW50UGFzc3dvcmRDaGFuZ2U6IEJ1aWxkZXI8XG4gICAgW0FjY291bnRTbmFwc2hvdCwgVXNlclByb2ZpbGVMaXRlLCBCdWlsZGVyVHJpZ2dlciwgQnVpbGRlckxvY2F0aW9uIHwgdW5kZWZpbmVkXVxuICA+O1xufTtcblxuY29uc3QgYnVpbGRBY2NvdW50RXZlbnQgPSAoXG4gIGV2ZW50VHlwZTogc3RyaW5nLFxuICBldmVudERpc3BsYXlOYW1lOiBzdHJpbmcsXG4gIGFjY291bnQ6IEFjY291bnRTbmFwc2hvdCxcbiAgdXNlcjogVXNlclByb2ZpbGVMaXRlLFxuICB0cmlnZ2VyOiBCdWlsZGVyVHJpZ2dlcixcbiAgbG9jYXRpb246IEJ1aWxkZXJMb2NhdGlvbiB8IHVuZGVmaW5lZCxcbik6IEF1ZGl0TG9nRXZlbnQgPT5cbiAgY3JlYXRlRXZlbnQoXG4gICAgeyBldmVudEtleTogYWNjb3VudC51c2VySWQsIGV2ZW50VHlwZSwgZXZlbnREaXNwbGF5TmFtZSB9LFxuICAgIHtcbiAgICAgIHVzZXJJZDogYWNjb3VudC51c2VySWQsXG4gICAgICB1c2VyRW1haWw6IHVzZXI/LmVtYWlsID8/IFwidW5rbm93blwiLFxuICAgICAgdXNlck5hbWU6IHVzZXI/Lm5hbWUgPz8gXCJ1bmtub3duXCIsXG4gICAgICBhY2NvdW50SWQ6IGFjY291bnQuaWQsXG4gICAgICBwcm92aWRlcklkOiBhY2NvdW50LnByb3ZpZGVySWQsXG4gICAgfSxcbiAgICB0cmlnZ2VyLFxuICAgIGxvY2F0aW9uLFxuICApO1xuXG5jb25zdCBidWlsZEFjY291bnRFdmVudHMgPSAoKTogQWNjb3VudEV2ZW50QnVpbGRlcnMgPT4gKHtcbiAgdHJhY2tBY2NvdW50TGlua2luZzogKGFjY291bnQsIHVzZXIsIHRyaWdnZXIsIGxvY2F0aW9uKSA9PlxuICAgIGJ1aWxkQWNjb3VudEV2ZW50KFxuICAgICAgRVZFTlRfVFlQRVMuQUNDT1VOVF9MSU5LRUQsXG4gICAgICBgTGlua2VkICR7YWNjb3VudC5wcm92aWRlcklkfSBhY2NvdW50YCxcbiAgICAgIGFjY291bnQsXG4gICAgICB1c2VyLFxuICAgICAgdHJpZ2dlcixcbiAgICAgIGxvY2F0aW9uLFxuICAgICksXG4gIHRyYWNrQWNjb3VudFVubGluazogKGFjY291bnQsIHVzZXIsIHRyaWdnZXIsIGxvY2F0aW9uKSA9PlxuICAgIGJ1aWxkQWNjb3VudEV2ZW50KFxuICAgICAgRVZFTlRfVFlQRVMuQUNDT1VOVF9VTkxJTktFRCxcbiAgICAgIGBVbmxpbmtlZCAke2FjY291bnQucHJvdmlkZXJJZH0gYWNjb3VudGAsXG4gICAgICBhY2NvdW50LFxuICAgICAgdXNlcixcbiAgICAgIHRyaWdnZXIsXG4gICAgICBsb2NhdGlvbixcbiAgICApLFxuICB0cmFja0FjY291bnRQYXNzd29yZENoYW5nZTogKGFjY291bnQsIHVzZXIsIHRyaWdnZXIsIGxvY2F0aW9uKSA9PlxuICAgIGJ1aWxkQWNjb3VudEV2ZW50KFxuICAgICAgRVZFTlRfVFlQRVMuUEFTU1dPUkRfQ0hBTkdFRCxcbiAgICAgIFwiUGFzc3dvcmQgY2hhbmdlZFwiLFxuICAgICAgYWNjb3VudCxcbiAgICAgIHVzZXIsXG4gICAgICB0cmlnZ2VyLFxuICAgICAgbG9jYXRpb24sXG4gICAgKSxcbn0pO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTZXNzaW9uIOu5jOuNlFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuZXhwb3J0IHR5cGUgU2Vzc2lvbkV2ZW50QnVpbGRlcnMgPSB7XG4gIHRyYWNrVXNlclNpZ25lZEluOiBCdWlsZGVyPFxuICAgIFtTZXNzaW9uU25hcHNob3QsIFVzZXJQcm9maWxlTGl0ZSwgQnVpbGRlclRyaWdnZXIsIEJ1aWxkZXJMb2NhdGlvbiB8IHVuZGVmaW5lZF1cbiAgPjtcbiAgdHJhY2tVc2VyU2lnbmVkT3V0OiBCdWlsZGVyPFxuICAgIFtTZXNzaW9uU25hcHNob3QsIFVzZXJQcm9maWxlTGl0ZSwgQnVpbGRlclRyaWdnZXIsIEJ1aWxkZXJMb2NhdGlvbiB8IHVuZGVmaW5lZF1cbiAgPjtcbiAgdHJhY2tTZXNzaW9uQ3JlYXRlZDogQnVpbGRlcjxcbiAgICBbU2Vzc2lvblNuYXBzaG90LCBVc2VyUHJvZmlsZUxpdGUsIEJ1aWxkZXJUcmlnZ2VyLCBCdWlsZGVyTG9jYXRpb24gfCB1bmRlZmluZWRdXG4gID47XG4gIHRyYWNrU2Vzc2lvblJldm9rZWQ6IEJ1aWxkZXI8XG4gICAgW1Nlc3Npb25TbmFwc2hvdCwgVXNlclByb2ZpbGVMaXRlLCBCdWlsZGVyVHJpZ2dlciwgQnVpbGRlckxvY2F0aW9uIHwgdW5kZWZpbmVkXVxuICA+O1xuICB0cmFja1Nlc3Npb25SZXZva2VkQWxsOiBCdWlsZGVyPFtTZXNzaW9uU25hcHNob3QsIFVzZXJQcm9maWxlTGl0ZSwgQnVpbGRlclRyaWdnZXJdPjtcbiAgdHJhY2tVc2VySW1wZXJzb25hdGVkOiBCdWlsZGVyPFxuICAgIFtTZXNzaW9uU25hcHNob3QsIFVzZXJQcm9maWxlTGl0ZSwgVXNlclByb2ZpbGVMaXRlLCBCdWlsZGVyVHJpZ2dlciwgQnVpbGRlckxvY2F0aW9uIHwgdW5kZWZpbmVkXVxuICA+O1xuICB0cmFja1VzZXJJbXBlcnNvbmF0aW9uU3RvcDogQnVpbGRlcjxcbiAgICBbU2Vzc2lvblNuYXBzaG90LCBVc2VyUHJvZmlsZUxpdGUsIFVzZXJQcm9maWxlTGl0ZSwgQnVpbGRlclRyaWdnZXIsIEJ1aWxkZXJMb2NhdGlvbiB8IHVuZGVmaW5lZF1cbiAgPjtcbiAgdHJhY2tFbWFpbFZlcmlmaWNhdGlvblNlbnQ6IEJ1aWxkZXI8XG4gICAgW1Nlc3Npb25TbmFwc2hvdCwgeyBuYW1lPzogc3RyaW5nOyBlbWFpbD86IHN0cmluZyB9LCBCdWlsZGVyVHJpZ2dlcl1cbiAgPjtcbiAgdHJhY2tFbWFpbFNpZ25JbkF0dGVtcHQ6IEJ1aWxkZXI8XG4gICAgW1xuICAgICAgeyBlbWFpbDogc3RyaW5nOyBsb2dpbk1ldGhvZDogc3RyaW5nIHwgbnVsbCB9LFxuICAgICAgVXNlclByb2ZpbGVMaXRlLFxuICAgICAgQnVpbGRlclRyaWdnZXIsXG4gICAgICBCdWlsZGVyTG9jYXRpb24gfCB1bmRlZmluZWQsXG4gICAgXVxuICA+O1xuICB0cmFja1NvY2lhbFNpZ25JbkF0dGVtcHQ6IEJ1aWxkZXI8XG4gICAgW3sgbG9naW5NZXRob2Q6IHN0cmluZyB8IG51bGwgfSwgVXNlclByb2ZpbGVMaXRlLCBCdWlsZGVyVHJpZ2dlciwgQnVpbGRlckxvY2F0aW9uIHwgdW5kZWZpbmVkXVxuICA+O1xuICB0cmFja1NvY2lhbFNpZ25JblJlZGlyZWN0aW9uQXR0ZW1wdDogQnVpbGRlcjxcbiAgICBbeyBsb2dpbk1ldGhvZDogc3RyaW5nIHwgbnVsbCB9LCBVc2VyUHJvZmlsZUxpdGUsIEJ1aWxkZXJUcmlnZ2VyLCBCdWlsZGVyTG9jYXRpb24gfCB1bmRlZmluZWRdXG4gID47XG59O1xuXG5jb25zdCBzZXNzaW9uTGlmZWN5Y2xlRGF0YSA9IChzZXNzaW9uOiBTZXNzaW9uU25hcHNob3QsIHVzZXI6IFVzZXJQcm9maWxlTGl0ZSkgPT4gKHtcbiAgdXNlcklkOiBzZXNzaW9uLnVzZXJJZCxcbiAgdXNlck5hbWU6IHVzZXI/Lm5hbWUgPz8gXCJ1bmtub3duXCIsXG4gIHVzZXJFbWFpbDogdXNlcj8uZW1haWwgPz8gXCJ1bmtub3duXCIsXG4gIHNlc3Npb25JZDogc2Vzc2lvbi5pZCxcbiAgbG9naW5NZXRob2Q6IHNlc3Npb24ubG9naW5NZXRob2QgPz8gXCJ1bmtub3duXCIsXG4gIHVzZXJBZ2VudDogc2Vzc2lvbi51c2VyQWdlbnQsXG59KTtcblxuY29uc3QgYnVpbGRTZXNzaW9uTGlmZWN5Y2xlRXZlbnQgPSAoXG4gIGV2ZW50VHlwZTogc3RyaW5nLFxuICBldmVudERpc3BsYXlOYW1lOiBzdHJpbmcsXG4gIHNlc3Npb246IFNlc3Npb25TbmFwc2hvdCxcbiAgdXNlcjogVXNlclByb2ZpbGVMaXRlLFxuICB0cmlnZ2VyOiBCdWlsZGVyVHJpZ2dlcixcbiAgbG9jYXRpb246IEJ1aWxkZXJMb2NhdGlvbiB8IHVuZGVmaW5lZCxcbik6IEF1ZGl0TG9nRXZlbnQgPT5cbiAgY3JlYXRlRXZlbnQoXG4gICAgeyBldmVudEtleTogc2Vzc2lvbi51c2VySWQsIGV2ZW50VHlwZSwgZXZlbnREaXNwbGF5TmFtZSB9LFxuICAgIHNlc3Npb25MaWZlY3ljbGVEYXRhKHNlc3Npb24sIHVzZXIpLFxuICAgIHRyaWdnZXIsXG4gICAgbG9jYXRpb24sXG4gICk7XG5cbmNvbnN0IGJ1aWxkSW1wZXJzb25hdGlvbkV2ZW50ID0gKFxuICBldmVudFR5cGU6IHN0cmluZyxcbiAgZXZlbnREaXNwbGF5TmFtZTogc3RyaW5nLFxuICBzZXNzaW9uOiBTZXNzaW9uU25hcHNob3QsXG4gIHVzZXI6IFVzZXJQcm9maWxlTGl0ZSxcbiAgaW1wZXJzb25hdG9yOiBVc2VyUHJvZmlsZUxpdGUsXG4gIHRyaWdnZXI6IEJ1aWxkZXJUcmlnZ2VyLFxuICBsb2NhdGlvbjogQnVpbGRlckxvY2F0aW9uIHwgdW5kZWZpbmVkLFxuKTogQXVkaXRMb2dFdmVudCA9PlxuICBjcmVhdGVFdmVudChcbiAgICB7IGV2ZW50S2V5OiBzZXNzaW9uLnVzZXJJZCwgZXZlbnRUeXBlLCBldmVudERpc3BsYXlOYW1lIH0sXG4gICAge1xuICAgICAgLi4uc2Vzc2lvbkxpZmVjeWNsZURhdGEoc2Vzc2lvbiwgdXNlciksXG4gICAgICBpbXBlcnNvbmF0ZWRCeTogaW1wZXJzb25hdG9yPy5uYW1lID8/IGltcGVyc29uYXRvcj8uZW1haWwgPz8gc2Vzc2lvbi5pbXBlcnNvbmF0ZWRCeSxcbiAgICAgIGltcGVyc29uYXRlZEJ5SWQ6IHNlc3Npb24uaW1wZXJzb25hdGVkQnksXG4gICAgfSxcbiAgICB0cmlnZ2VyLFxuICAgIGxvY2F0aW9uLFxuICApO1xuXG5jb25zdCBTSUdOX0lOX0ZBSUxFRF9ESVNQTEFZID0gXCJVc2VyIHNpZ24taW4gYXR0ZW1wdCBmYWlsZWRcIjtcblxuY29uc3QgYnVpbGRTZXNzaW9uRXZlbnRzID0gKCk6IFNlc3Npb25FdmVudEJ1aWxkZXJzID0+ICh7XG4gIHRyYWNrVXNlclNpZ25lZEluOiAoc2Vzc2lvbiwgdXNlciwgdHJpZ2dlciwgbG9jYXRpb24pID0+XG4gICAgYnVpbGRTZXNzaW9uTGlmZWN5Y2xlRXZlbnQoXG4gICAgICBFVkVOVF9UWVBFUy5VU0VSX1NJR05FRF9JTixcbiAgICAgIGBTaWduZWQgaW4gdmlhICR7c2Vzc2lvbi5sb2dpbk1ldGhvZCA/PyBcInVua25vd25cIn1gLFxuICAgICAgc2Vzc2lvbixcbiAgICAgIHVzZXIsXG4gICAgICB0cmlnZ2VyLFxuICAgICAgbG9jYXRpb24sXG4gICAgKSxcbiAgdHJhY2tVc2VyU2lnbmVkT3V0OiAoc2Vzc2lvbiwgdXNlciwgdHJpZ2dlciwgbG9jYXRpb24pID0+XG4gICAgYnVpbGRTZXNzaW9uTGlmZWN5Y2xlRXZlbnQoXG4gICAgICBFVkVOVF9UWVBFUy5VU0VSX1NJR05FRF9PVVQsXG4gICAgICBcIlVzZXIgc2lnbmVkIG91dFwiLFxuICAgICAgc2Vzc2lvbixcbiAgICAgIHVzZXIsXG4gICAgICB0cmlnZ2VyLFxuICAgICAgbG9jYXRpb24sXG4gICAgKSxcbiAgdHJhY2tTZXNzaW9uQ3JlYXRlZDogKHNlc3Npb24sIHVzZXIsIHRyaWdnZXIsIGxvY2F0aW9uKSA9PlxuICAgIGJ1aWxkU2Vzc2lvbkxpZmVjeWNsZUV2ZW50KFxuICAgICAgRVZFTlRfVFlQRVMuU0VTU0lPTl9DUkVBVEVELFxuICAgICAgXCJTZXNzaW9uIGNyZWF0ZWRcIixcbiAgICAgIHNlc3Npb24sXG4gICAgICB1c2VyLFxuICAgICAgdHJpZ2dlcixcbiAgICAgIGxvY2F0aW9uLFxuICAgICksXG4gIHRyYWNrU2Vzc2lvblJldm9rZWQ6IChzZXNzaW9uLCB1c2VyLCB0cmlnZ2VyLCBsb2NhdGlvbikgPT5cbiAgICBidWlsZFNlc3Npb25MaWZlY3ljbGVFdmVudChcbiAgICAgIEVWRU5UX1RZUEVTLlNFU1NJT05fUkVWT0tFRCxcbiAgICAgIFwiU2Vzc2lvbiByZXZva2VkXCIsXG4gICAgICBzZXNzaW9uLFxuICAgICAgdXNlcixcbiAgICAgIHRyaWdnZXIsXG4gICAgICBsb2NhdGlvbixcbiAgICApLFxuICB0cmFja1Nlc3Npb25SZXZva2VkQWxsOiAoc2Vzc2lvbiwgdXNlciwgdHJpZ2dlcikgPT5cbiAgICBjcmVhdGVFdmVudChcbiAgICAgIHtcbiAgICAgICAgZXZlbnRLZXk6IHNlc3Npb24udXNlcklkLFxuICAgICAgICBldmVudFR5cGU6IEVWRU5UX1RZUEVTLkFMTF9TRVNTSU9OU19SRVZPS0VELFxuICAgICAgICBldmVudERpc3BsYXlOYW1lOiBcIkFsbCBzZXNzaW9ucyByZXZva2VkXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB1c2VySWQ6IHNlc3Npb24udXNlcklkLFxuICAgICAgICB1c2VyTmFtZTogdXNlcj8ubmFtZSA/PyBcInVua25vd25cIixcbiAgICAgICAgdXNlckVtYWlsOiB1c2VyPy5lbWFpbCA/PyBcInVua25vd25cIixcbiAgICAgIH0sXG4gICAgICB0cmlnZ2VyLFxuICAgICksXG4gIHRyYWNrVXNlckltcGVyc29uYXRlZDogKHNlc3Npb24sIHVzZXIsIGltcGVyc29uYXRvciwgdHJpZ2dlciwgbG9jYXRpb24pID0+XG4gICAgYnVpbGRJbXBlcnNvbmF0aW9uRXZlbnQoXG4gICAgICBFVkVOVF9UWVBFUy5VU0VSX0lNUEVSU09OQVRFRCxcbiAgICAgIFwiVXNlciBpbXBlcnNvbmF0ZWRcIixcbiAgICAgIHNlc3Npb24sXG4gICAgICB1c2VyLFxuICAgICAgaW1wZXJzb25hdG9yLFxuICAgICAgdHJpZ2dlcixcbiAgICAgIGxvY2F0aW9uLFxuICAgICksXG4gIHRyYWNrVXNlckltcGVyc29uYXRpb25TdG9wOiAoc2Vzc2lvbiwgdXNlciwgaW1wZXJzb25hdG9yLCB0cmlnZ2VyLCBsb2NhdGlvbikgPT5cbiAgICBidWlsZEltcGVyc29uYXRpb25FdmVudChcbiAgICAgIEVWRU5UX1RZUEVTLlVTRVJfSU1QRVJTT05BVEVEX1NUT1BQRUQsXG4gICAgICBcIlVzZXIgaW1wZXJzb25hdGlvbiBzdG9wcGVkXCIsXG4gICAgICBzZXNzaW9uLFxuICAgICAgdXNlcixcbiAgICAgIGltcGVyc29uYXRvcixcbiAgICAgIHRyaWdnZXIsXG4gICAgICBsb2NhdGlvbixcbiAgICApLFxuICB0cmFja0VtYWlsVmVyaWZpY2F0aW9uU2VudDogKHNlc3Npb24sIHVzZXIsIHRyaWdnZXIpID0+XG4gICAgY3JlYXRlRXZlbnQoXG4gICAgICB7XG4gICAgICAgIGV2ZW50S2V5OiBzZXNzaW9uLnVzZXJJZCxcbiAgICAgICAgZXZlbnRUeXBlOiBFVkVOVF9UWVBFUy5FTUFJTF9WRVJJRklDQVRJT05fU0VOVCxcbiAgICAgICAgZXZlbnREaXNwbGF5TmFtZTogXCJWZXJpZmljYXRpb24gZW1haWwgc2VudFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdXNlcklkOiBzZXNzaW9uLnVzZXJJZCxcbiAgICAgICAgdXNlck5hbWU6IHVzZXIubmFtZSxcbiAgICAgICAgdXNlckVtYWlsOiB1c2VyLmVtYWlsLFxuICAgICAgICBzZXNzaW9uSWQ6IHNlc3Npb24uaWQsXG4gICAgICB9LFxuICAgICAgdHJpZ2dlcixcbiAgICApLFxuICAvLyDso7zsnZg6IOq4sOyhtCDrj5nsnpEg7Jyg7KeAIOKAlCBgbmFtZU5hbWVgIOyYpO2DgCDtlYTrk5zrqoXrj4Qg6re464yA66GcIOuztOyhtO2VnOuLpC5cbiAgdHJhY2tFbWFpbFNpZ25JbkF0dGVtcHQ6IChhdHRlbXB0LCB1c2VyLCB0cmlnZ2VyLCBsb2NhdGlvbikgPT5cbiAgICBjcmVhdGVFdmVudChcbiAgICAgIHtcbiAgICAgICAgZXZlbnRLZXk6IHVzZXI/LmlkID8/IFwidW5rbm93blwiLFxuICAgICAgICBldmVudFR5cGU6IEVWRU5UX1RZUEVTLlVTRVJfU0lHTl9JTl9GQUlMRUQsXG4gICAgICAgIGV2ZW50RGlzcGxheU5hbWU6IFNJR05fSU5fRkFJTEVEX0RJU1BMQVksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB1c2VySWQ6IHVzZXI/LmlkID8/IFwidW5rbm93blwiLFxuICAgICAgICBuYW1lTmFtZTogdXNlcj8ubmFtZSA/PyBcInVua25vd25cIixcbiAgICAgICAgdXNlckVtYWlsOiBhdHRlbXB0LmVtYWlsLFxuICAgICAgICBsb2dpbk1ldGhvZDogYXR0ZW1wdC5sb2dpbk1ldGhvZCxcbiAgICAgIH0sXG4gICAgICB7IHRyaWdnZXJlZEJ5OiB1c2VyPy5pZCA/PyB0cmlnZ2VyLnRyaWdnZXJlZEJ5LCB0cmlnZ2VyQ29udGV4dDogdHJpZ2dlci50cmlnZ2VyQ29udGV4dCB9LFxuICAgICAgbG9jYXRpb24sXG4gICAgKSxcbiAgdHJhY2tTb2NpYWxTaWduSW5BdHRlbXB0OiAoYXR0ZW1wdCwgdXNlciwgdHJpZ2dlciwgbG9jYXRpb24pID0+XG4gICAgY3JlYXRlRXZlbnQoXG4gICAgICB7XG4gICAgICAgIGV2ZW50S2V5OiB1c2VyPy5pZCA/PyBcInVua25vd25cIixcbiAgICAgICAgZXZlbnRUeXBlOiBFVkVOVF9UWVBFUy5VU0VSX1NJR05fSU5fRkFJTEVELFxuICAgICAgICBldmVudERpc3BsYXlOYW1lOiBTSUdOX0lOX0ZBSUxFRF9ESVNQTEFZLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdXNlcklkOiB1c2VyPy5pZCA/PyBcInVua25vd25cIixcbiAgICAgICAgdXNlck5hbWU6IHVzZXI/Lm5hbWUgPz8gXCJ1bmtub3duXCIsXG4gICAgICAgIHVzZXJFbWFpbDogdXNlcj8uZW1haWwgPz8gXCJ1bmtub3duXCIsXG4gICAgICAgIGxvZ2luTWV0aG9kOiBhdHRlbXB0LmxvZ2luTWV0aG9kLFxuICAgICAgfSxcbiAgICAgIHsgdHJpZ2dlcmVkQnk6IHVzZXI/LmlkID8/IHRyaWdnZXIudHJpZ2dlcmVkQnksIHRyaWdnZXJDb250ZXh0OiB0cmlnZ2VyLnRyaWdnZXJDb250ZXh0IH0sXG4gICAgICBsb2NhdGlvbixcbiAgICApLFxuICAvLyDso7zsnZg6IOq4sOyhtCDrj5nsnpEg7Jyg7KeAIOKAlCB1c2VyRW1haWwg6rCS7J20IHVzZXI/Lmlk66GcIOyEpOygleuQmOuKlCDquLDsobQg64+Z7J6R64+EIOq3uOuMgOuhnCDrs7TsobTtlZzri6QuXG4gIHRyYWNrU29jaWFsU2lnbkluUmVkaXJlY3Rpb25BdHRlbXB0OiAoYXR0ZW1wdCwgdXNlciwgdHJpZ2dlciwgbG9jYXRpb24pID0+XG4gICAgY3JlYXRlRXZlbnQoXG4gICAgICB7XG4gICAgICAgIGV2ZW50S2V5OiB1c2VyPy5pZCA/PyBcInVua25vd25cIixcbiAgICAgICAgZXZlbnRUeXBlOiBFVkVOVF9UWVBFUy5VU0VSX1NJR05fSU5fRkFJTEVELFxuICAgICAgICBldmVudERpc3BsYXlOYW1lOiBTSUdOX0lOX0ZBSUxFRF9ESVNQTEFZLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdXNlcklkOiB1c2VyPy5pZCA/PyBcInVua25vd25cIixcbiAgICAgICAgdXNlck5hbWU6IHVzZXI/Lm5hbWUgPz8gXCJ1bmtub3duXCIsXG4gICAgICAgIHVzZXJFbWFpbDogdXNlcj8uaWQgPz8gXCJ1bmtub3duXCIsXG4gICAgICAgIGxvZ2luTWV0aG9kOiBhdHRlbXB0LmxvZ2luTWV0aG9kLFxuICAgICAgfSxcbiAgICAgIHRyaWdnZXIsXG4gICAgICBsb2NhdGlvbixcbiAgICApLFxufSk7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFVzZXIg67mM642UXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5leHBvcnQgdHlwZSBVc2VyRXZlbnRCdWlsZGVycyA9IHtcbiAgdHJhY2tVc2VyU2lnbmVkVXA6IEJ1aWxkZXI8W1VzZXJTbmFwc2hvdCwgQnVpbGRlclRyaWdnZXIsIEJ1aWxkZXJMb2NhdGlvbiB8IHVuZGVmaW5lZF0+O1xuICB0cmFja1VzZXJEZWxldGVkOiBCdWlsZGVyPFtVc2VyU25hcHNob3QsIEJ1aWxkZXJUcmlnZ2VyLCBCdWlsZGVyTG9jYXRpb24gfCB1bmRlZmluZWRdPjtcbiAgdHJhY2tVc2VyUHJvZmlsZVVwZGF0ZWQ6IEJ1aWxkZXI8XG4gICAgW1VzZXJTbmFwc2hvdCwgc3RyaW5nW10sIEJ1aWxkZXJUcmlnZ2VyLCBCdWlsZGVyTG9jYXRpb24gfCB1bmRlZmluZWRdXG4gID47XG4gIHRyYWNrVXNlclByb2ZpbGVJbWFnZVVwZGF0ZWQ6IEJ1aWxkZXI8XG4gICAgW1VzZXJTbmFwc2hvdCwgQnVpbGRlclRyaWdnZXIsIEJ1aWxkZXJMb2NhdGlvbiB8IHVuZGVmaW5lZF1cbiAgPjtcbiAgdHJhY2tVc2VyQmFubmVkOiBCdWlsZGVyPFtVc2VyU25hcHNob3QsIEJ1aWxkZXJUcmlnZ2VyLCBCdWlsZGVyTG9jYXRpb24gfCB1bmRlZmluZWRdPjtcbiAgdHJhY2tVc2VyVW5CYW5uZWQ6IEJ1aWxkZXI8W1VzZXJTbmFwc2hvdCwgQnVpbGRlclRyaWdnZXIsIEJ1aWxkZXJMb2NhdGlvbiB8IHVuZGVmaW5lZF0+O1xuICB0cmFja1VzZXJFbWFpbFZlcmlmaWVkOiBCdWlsZGVyPFtVc2VyU25hcHNob3QsIEJ1aWxkZXJUcmlnZ2VyLCBCdWlsZGVyTG9jYXRpb24gfCB1bmRlZmluZWRdPjtcbn07XG5cbmNvbnN0IHVzZXJJZGVudGl0eURhdGEgPSAodXNlcjogVXNlclNuYXBzaG90KSA9PiAoe1xuICB1c2VySWQ6IHVzZXIuaWQsXG4gIHVzZXJFbWFpbDogdXNlci5lbWFpbCxcbiAgdXNlck5hbWU6IHVzZXIubmFtZSxcbn0pO1xuXG5jb25zdCBidWlsZFVzZXJFdmVudCA9IChcbiAgZXZlbnRUeXBlOiBzdHJpbmcsXG4gIGV2ZW50RGlzcGxheU5hbWU6IHN0cmluZyxcbiAgdXNlcjogVXNlclNuYXBzaG90LFxuICB0cmlnZ2VyOiBCdWlsZGVyVHJpZ2dlcixcbiAgbG9jYXRpb246IEJ1aWxkZXJMb2NhdGlvbiB8IHVuZGVmaW5lZCxcbiAgZXh0cmE/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbik6IEF1ZGl0TG9nRXZlbnQgPT5cbiAgY3JlYXRlRXZlbnQoXG4gICAgeyBldmVudEtleTogdXNlci5pZCwgZXZlbnRUeXBlLCBldmVudERpc3BsYXlOYW1lIH0sXG4gICAgeyAuLi51c2VySWRlbnRpdHlEYXRhKHVzZXIpLCAuLi5leHRyYSB9LFxuICAgIHRyaWdnZXIsXG4gICAgbG9jYXRpb24sXG4gICk7XG5cbmNvbnN0IGJ1aWxkVXNlckV2ZW50cyA9ICgpOiBVc2VyRXZlbnRCdWlsZGVycyA9PiAoe1xuICB0cmFja1VzZXJTaWduZWRVcDogKHVzZXIsIHRyaWdnZXIsIGxvY2F0aW9uKSA9PlxuICAgIGJ1aWxkVXNlckV2ZW50KFxuICAgICAgRVZFTlRfVFlQRVMuVVNFUl9DUkVBVEVELFxuICAgICAgYCR7dXNlci5uYW1lIHx8IHVzZXIuZW1haWx9IHNpZ25lZCB1cGAsXG4gICAgICB1c2VyLFxuICAgICAgdHJpZ2dlcixcbiAgICAgIGxvY2F0aW9uLFxuICAgICksXG4gIHRyYWNrVXNlckRlbGV0ZWQ6ICh1c2VyLCB0cmlnZ2VyLCBsb2NhdGlvbikgPT5cbiAgICBidWlsZFVzZXJFdmVudChFVkVOVF9UWVBFUy5VU0VSX0RFTEVURUQsIFwiVXNlciBkZWxldGVkXCIsIHVzZXIsIHRyaWdnZXIsIGxvY2F0aW9uKSxcbiAgdHJhY2tVc2VyUHJvZmlsZVVwZGF0ZWQ6ICh1c2VyLCB1cGRhdGVkRmllbGRzLCB0cmlnZ2VyLCBsb2NhdGlvbikgPT5cbiAgICBidWlsZFVzZXJFdmVudChFVkVOVF9UWVBFUy5QUk9GSUxFX1VQREFURUQsIFwiUHJvZmlsZSB1cGRhdGVkXCIsIHVzZXIsIHRyaWdnZXIsIGxvY2F0aW9uLCB7XG4gICAgICB1cGRhdGVkRmllbGRzLFxuICAgIH0pLFxuICB0cmFja1VzZXJQcm9maWxlSW1hZ2VVcGRhdGVkOiAodXNlciwgdHJpZ2dlciwgbG9jYXRpb24pID0+XG4gICAgYnVpbGRVc2VyRXZlbnQoXG4gICAgICBFVkVOVF9UWVBFUy5QUk9GSUxFX0lNQUdFX1VQREFURUQsXG4gICAgICBcIlByb2ZpbGUgaW1hZ2UgdXBkYXRlZFwiLFxuICAgICAgdXNlcixcbiAgICAgIHRyaWdnZXIsXG4gICAgICBsb2NhdGlvbixcbiAgICApLFxuICB0cmFja1VzZXJCYW5uZWQ6ICh1c2VyLCB0cmlnZ2VyLCBsb2NhdGlvbikgPT4ge1xuICAgIGNvbnN0IHJlYXNvblN1ZmZpeCA9IHVzZXIuYmFuUmVhc29uID8gYDogJHt1c2VyLmJhblJlYXNvbn1gIDogXCJcIjtcbiAgICBjb25zdCBleHBpcmVzU3VmZml4ID0gdXNlci5iYW5FeHBpcmVzID8gYCAodW50aWwgJHt1c2VyLmJhbkV4cGlyZXMudG9JU09TdHJpbmcoKX0pYCA6IFwiXCI7XG4gICAgcmV0dXJuIGJ1aWxkVXNlckV2ZW50KFxuICAgICAgRVZFTlRfVFlQRVMuVVNFUl9CQU5ORUQsXG4gICAgICBgVXNlciBiYW5uZWQke3JlYXNvblN1ZmZpeH0ke2V4cGlyZXNTdWZmaXh9YCxcbiAgICAgIHVzZXIsXG4gICAgICB0cmlnZ2VyLFxuICAgICAgbG9jYXRpb24sXG4gICAgICB7XG4gICAgICAgIGJhbm5lZDogdXNlci5iYW5uZWQsXG4gICAgICAgIGJhblJlYXNvbjogdXNlci5iYW5SZWFzb24sXG4gICAgICAgIGJhbkV4cGlyZXM6IHVzZXIuYmFuRXhwaXJlcyxcbiAgICAgIH0sXG4gICAgKTtcbiAgfSxcbiAgdHJhY2tVc2VyVW5CYW5uZWQ6ICh1c2VyLCB0cmlnZ2VyLCBsb2NhdGlvbikgPT5cbiAgICBidWlsZFVzZXJFdmVudChFVkVOVF9UWVBFUy5VU0VSX1VOQkFOTkVELCBcIlVzZXIgdW5iYW5uZWRcIiwgdXNlciwgdHJpZ2dlciwgbG9jYXRpb24sIHtcbiAgICAgIGJhbm5lZDogdXNlci5iYW5uZWQsXG4gICAgfSksXG4gIHRyYWNrVXNlckVtYWlsVmVyaWZpZWQ6ICh1c2VyLCB0cmlnZ2VyLCBsb2NhdGlvbikgPT5cbiAgICBidWlsZFVzZXJFdmVudChFVkVOVF9UWVBFUy5FTUFJTF9WRVJJRklFRCwgXCJFbWFpbCB2ZXJpZmllZFwiLCB1c2VyLCB0cmlnZ2VyLCBsb2NhdGlvbiksXG59KTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gVmVyaWZpY2F0aW9uIOu5jOuNlFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuZXhwb3J0IHR5cGUgVmVyaWZpY2F0aW9uRXZlbnRCdWlsZGVycyA9IHtcbiAgdHJhY2tQYXNzd29yZFJlc2V0UmVxdWVzdDogQnVpbGRlcjxcbiAgICBbVmVyaWZpY2F0aW9uU25hcHNob3QsIFVzZXJQcm9maWxlTGl0ZSwgQnVpbGRlclRyaWdnZXIsIEJ1aWxkZXJMb2NhdGlvbiB8IHVuZGVmaW5lZF1cbiAgPjtcbiAgdHJhY2tQYXNzd29yZFJlc2V0UmVxdWVzdENvbXBsZXRpb246IEJ1aWxkZXI8XG4gICAgW1ZlcmlmaWNhdGlvblNuYXBzaG90LCBVc2VyUHJvZmlsZUxpdGUsIEJ1aWxkZXJUcmlnZ2VyLCBCdWlsZGVyTG9jYXRpb24gfCB1bmRlZmluZWRdXG4gID47XG59O1xuXG5jb25zdCBidWlsZFZlcmlmaWNhdGlvbkV2ZW50ID0gKFxuICBldmVudFR5cGU6IHN0cmluZyxcbiAgZXZlbnREaXNwbGF5TmFtZTogc3RyaW5nLFxuICB2ZXJpZmljYXRpb246IFZlcmlmaWNhdGlvblNuYXBzaG90LFxuICB1c2VyOiBVc2VyUHJvZmlsZUxpdGUsXG4gIHRyaWdnZXI6IEJ1aWxkZXJUcmlnZ2VyLFxuICBsb2NhdGlvbjogQnVpbGRlckxvY2F0aW9uIHwgdW5kZWZpbmVkLFxuKTogQXVkaXRMb2dFdmVudCA9PlxuICBjcmVhdGVFdmVudChcbiAgICB7IGV2ZW50S2V5OiB2ZXJpZmljYXRpb24udmFsdWUsIGV2ZW50VHlwZSwgZXZlbnREaXNwbGF5TmFtZSB9LFxuICAgIHtcbiAgICAgIHVzZXJJZDogdmVyaWZpY2F0aW9uLnZhbHVlLFxuICAgICAgdXNlck5hbWU6IHVzZXI/Lm5hbWUgPz8gXCJ1bmtub3duXCIsXG4gICAgICB1c2VyRW1haWw6IHVzZXI/LmVtYWlsID8/IFwidW5rbm93blwiLFxuICAgIH0sXG4gICAgdHJpZ2dlcixcbiAgICBsb2NhdGlvbixcbiAgKTtcblxuY29uc3QgYnVpbGRWZXJpZmljYXRpb25FdmVudHMgPSAoKTogVmVyaWZpY2F0aW9uRXZlbnRCdWlsZGVycyA9PiAoe1xuICB0cmFja1Bhc3N3b3JkUmVzZXRSZXF1ZXN0OiAodmVyaWZpY2F0aW9uLCB1c2VyLCB0cmlnZ2VyLCBsb2NhdGlvbikgPT5cbiAgICBidWlsZFZlcmlmaWNhdGlvbkV2ZW50KFxuICAgICAgRVZFTlRfVFlQRVMuUEFTU1dPUkRfUkVTRVRfUkVRVUVTVEVELFxuICAgICAgXCJQYXNzd29yZCByZXNldCByZXF1ZXN0ZWRcIixcbiAgICAgIHZlcmlmaWNhdGlvbixcbiAgICAgIHVzZXIsXG4gICAgICB0cmlnZ2VyLFxuICAgICAgbG9jYXRpb24sXG4gICAgKSxcbiAgdHJhY2tQYXNzd29yZFJlc2V0UmVxdWVzdENvbXBsZXRpb246ICh2ZXJpZmljYXRpb24sIHVzZXIsIHRyaWdnZXIsIGxvY2F0aW9uKSA9PlxuICAgIGJ1aWxkVmVyaWZpY2F0aW9uRXZlbnQoXG4gICAgICBFVkVOVF9UWVBFUy5QQVNTV09SRF9SRVNFVF9DT01QTEVURUQsXG4gICAgICBcIlBhc3N3b3JkIHJlc2V0IGNvbXBsZXRlZFwiLFxuICAgICAgdmVyaWZpY2F0aW9uLFxuICAgICAgdXNlcixcbiAgICAgIHRyaWdnZXIsXG4gICAgICBsb2NhdGlvbixcbiAgICApLFxufSk7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE9yZ2FuaXphdGlvbiAvIFRlYW0gLyBNZW1iZXIgLyBJbnZpdGF0aW9uIOu5jOuNlFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuY29uc3Qgb3JnYW5pemF0aW9uSWRlbnRpdHlEYXRhID0gKG9yZ2FuaXphdGlvbjogT3JnYW5pemF0aW9uU25hcHNob3QpID0+ICh7XG4gIG9yZ2FuaXphdGlvbklkOiBvcmdhbml6YXRpb24uaWQsXG4gIG9yZ2FuaXphdGlvblNsdWc6IG9yZ2FuaXphdGlvbi5zbHVnLFxuICBvcmdhbml6YXRpb25OYW1lOiBvcmdhbml6YXRpb24ubmFtZSxcbn0pO1xuXG5leHBvcnQgdHlwZSBPcmdhbml6YXRpb25FdmVudEJ1aWxkZXJzID0ge1xuICB0cmFja09yZ2FuaXphdGlvbkNyZWF0ZWQ6IEJ1aWxkZXI8W09yZ2FuaXphdGlvblNuYXBzaG90LCBCdWlsZGVyVHJpZ2dlcl0+O1xuICB0cmFja09yZ2FuaXphdGlvblVwZGF0ZWQ6IEJ1aWxkZXI8W09yZ2FuaXphdGlvblNuYXBzaG90LCBCdWlsZGVyVHJpZ2dlcl0+O1xufTtcblxuY29uc3QgYnVpbGRPcmdhbml6YXRpb25FdmVudCA9IChcbiAgZXZlbnRUeXBlOiBzdHJpbmcsXG4gIGV2ZW50RGlzcGxheU5hbWU6IHN0cmluZyxcbiAgb3JnYW5pemF0aW9uOiBPcmdhbml6YXRpb25TbmFwc2hvdCxcbiAgdHJpZ2dlcjogQnVpbGRlclRyaWdnZXIsXG4pOiBBdWRpdExvZ0V2ZW50ID0+XG4gIGNyZWF0ZUV2ZW50KFxuICAgIHsgZXZlbnRLZXk6IG9yZ2FuaXphdGlvbi5pZCwgZXZlbnRUeXBlLCBldmVudERpc3BsYXlOYW1lIH0sXG4gICAgb3JnYW5pemF0aW9uSWRlbnRpdHlEYXRhKG9yZ2FuaXphdGlvbiksXG4gICAgdHJpZ2dlcixcbiAgKTtcblxuY29uc3QgYnVpbGRPcmdhbml6YXRpb25FdmVudHMgPSAoKTogT3JnYW5pemF0aW9uRXZlbnRCdWlsZGVycyA9PiAoe1xuICB0cmFja09yZ2FuaXphdGlvbkNyZWF0ZWQ6IChvcmdhbml6YXRpb24sIHRyaWdnZXIpID0+XG4gICAgYnVpbGRPcmdhbml6YXRpb25FdmVudChcbiAgICAgIE9SR0FOSVpBVElPTl9FVkVOVF9UWVBFUy5PUkdBTklaQVRJT05fQ1JFQVRFRCxcbiAgICAgIFwiT3JnYW5pemF0aW9uIENyZWF0ZWRcIixcbiAgICAgIG9yZ2FuaXphdGlvbixcbiAgICAgIHRyaWdnZXIsXG4gICAgKSxcbiAgdHJhY2tPcmdhbml6YXRpb25VcGRhdGVkOiAob3JnYW5pemF0aW9uLCB0cmlnZ2VyKSA9PlxuICAgIGJ1aWxkT3JnYW5pemF0aW9uRXZlbnQoXG4gICAgICBPUkdBTklaQVRJT05fRVZFTlRfVFlQRVMuT1JHQU5JWkFUSU9OX1VQREFURUQsXG4gICAgICBcIk9yZ2FuaXphdGlvbiBVcGRhdGVkXCIsXG4gICAgICBvcmdhbml6YXRpb24sXG4gICAgICB0cmlnZ2VyLFxuICAgICksXG59KTtcblxuZXhwb3J0IHR5cGUgVGVhbUV2ZW50QnVpbGRlcnMgPSB7XG4gIHRyYWNrT3JnYW5pemF0aW9uVGVhbUNyZWF0ZWQ6IEJ1aWxkZXI8W09yZ2FuaXphdGlvblNuYXBzaG90LCBUZWFtU25hcHNob3QsIEJ1aWxkZXJUcmlnZ2VyXT47XG4gIHRyYWNrT3JnYW5pemF0aW9uVGVhbVVwZGF0ZWQ6IEJ1aWxkZXI8W09yZ2FuaXphdGlvblNuYXBzaG90LCBUZWFtU25hcHNob3QsIEJ1aWxkZXJUcmlnZ2VyXT47XG4gIHRyYWNrT3JnYW5pemF0aW9uVGVhbURlbGV0ZWQ6IEJ1aWxkZXI8W09yZ2FuaXphdGlvblNuYXBzaG90LCBUZWFtU25hcHNob3QsIEJ1aWxkZXJUcmlnZ2VyXT47XG4gIHRyYWNrT3JnYW5pemF0aW9uVGVhbU1lbWJlckFkZGVkOiBCdWlsZGVyPFxuICAgIFtcbiAgICAgIE9yZ2FuaXphdGlvblNuYXBzaG90LFxuICAgICAgVGVhbVNuYXBzaG90LFxuICAgICAgVXNlclNuYXBzaG90LFxuICAgICAgeyB0ZWFtSWQ6IHN0cmluZzsgdXNlcklkOiBzdHJpbmcgfSxcbiAgICAgIEJ1aWxkZXJUcmlnZ2VyLFxuICAgIF1cbiAgPjtcbiAgdHJhY2tPcmdhbml6YXRpb25UZWFtTWVtYmVyUmVtb3ZlZDogQnVpbGRlcjxcbiAgICBbXG4gICAgICBPcmdhbml6YXRpb25TbmFwc2hvdCxcbiAgICAgIFRlYW1TbmFwc2hvdCxcbiAgICAgIFVzZXJTbmFwc2hvdCxcbiAgICAgIHsgdGVhbUlkOiBzdHJpbmc7IHVzZXJJZDogc3RyaW5nIH0sXG4gICAgICBCdWlsZGVyVHJpZ2dlcixcbiAgICBdXG4gID47XG59O1xuXG5jb25zdCBidWlsZFRlYW1MaWZlY3ljbGVFdmVudCA9IChcbiAgZXZlbnRUeXBlOiBzdHJpbmcsXG4gIGV2ZW50RGlzcGxheU5hbWU6IHN0cmluZyxcbiAgb3JnYW5pemF0aW9uOiBPcmdhbml6YXRpb25TbmFwc2hvdCxcbiAgdGVhbTogVGVhbVNuYXBzaG90LFxuICB0cmlnZ2VyOiBCdWlsZGVyVHJpZ2dlcixcbik6IEF1ZGl0TG9nRXZlbnQgPT5cbiAgY3JlYXRlRXZlbnQoXG4gICAgeyBldmVudEtleTogb3JnYW5pemF0aW9uLmlkLCBldmVudFR5cGUsIGV2ZW50RGlzcGxheU5hbWUgfSxcbiAgICB7IC4uLm9yZ2FuaXphdGlvbklkZW50aXR5RGF0YShvcmdhbml6YXRpb24pLCB0ZWFtSWQ6IHRlYW0uaWQsIHRlYW1OYW1lOiB0ZWFtLm5hbWUgfSxcbiAgICB0cmlnZ2VyLFxuICApO1xuXG5jb25zdCBidWlsZFRlYW1NZW1iZXJFdmVudCA9IChcbiAgZXZlbnRUeXBlOiBzdHJpbmcsXG4gIGV2ZW50RGlzcGxheU5hbWU6IHN0cmluZyxcbiAgb3JnYW5pemF0aW9uOiBPcmdhbml6YXRpb25TbmFwc2hvdCxcbiAgdGVhbTogVGVhbVNuYXBzaG90LFxuICB1c2VyOiBVc2VyU25hcHNob3QsXG4gIHRlYW1NZW1iZXI6IHsgdGVhbUlkOiBzdHJpbmc7IHVzZXJJZDogc3RyaW5nIH0sXG4gIHRyaWdnZXI6IEJ1aWxkZXJUcmlnZ2VyLFxuKTogQXVkaXRMb2dFdmVudCA9PlxuICBjcmVhdGVFdmVudChcbiAgICB7IGV2ZW50S2V5OiBvcmdhbml6YXRpb24uaWQsIGV2ZW50VHlwZSwgZXZlbnREaXNwbGF5TmFtZSB9LFxuICAgIHtcbiAgICAgIC4uLm9yZ2FuaXphdGlvbklkZW50aXR5RGF0YShvcmdhbml6YXRpb24pLFxuICAgICAgdGVhbUlkOiB0ZWFtTWVtYmVyLnRlYW1JZCxcbiAgICAgIHRlYW1OYW1lOiB0ZWFtLm5hbWUsXG4gICAgICB1c2VyaWQ6IHRlYW1NZW1iZXIudXNlcklkLFxuICAgICAgbWVtYmVyTmFtZTogdXNlci5uYW1lLFxuICAgIH0sXG4gICAgdHJpZ2dlcixcbiAgKTtcblxuY29uc3QgYnVpbGRUZWFtRXZlbnRzID0gKCk6IFRlYW1FdmVudEJ1aWxkZXJzID0+ICh7XG4gIHRyYWNrT3JnYW5pemF0aW9uVGVhbUNyZWF0ZWQ6IChvcmdhbml6YXRpb24sIHRlYW0sIHRyaWdnZXIpID0+XG4gICAgYnVpbGRUZWFtTGlmZWN5Y2xlRXZlbnQoXG4gICAgICBPUkdBTklaQVRJT05fRVZFTlRfVFlQRVMuT1JHQU5JWkFUSU9OX1RFQU1fQ1JFQVRFRCxcbiAgICAgIFwiT3JnYW5pemF0aW9uIHRlYW0gY3JlYXRlZFwiLFxuICAgICAgb3JnYW5pemF0aW9uLFxuICAgICAgdGVhbSxcbiAgICAgIHRyaWdnZXIsXG4gICAgKSxcbiAgdHJhY2tPcmdhbml6YXRpb25UZWFtVXBkYXRlZDogKG9yZ2FuaXphdGlvbiwgdGVhbSwgdHJpZ2dlcikgPT5cbiAgICBidWlsZFRlYW1MaWZlY3ljbGVFdmVudChcbiAgICAgIE9SR0FOSVpBVElPTl9FVkVOVF9UWVBFUy5PUkdBTklaQVRJT05fVEVBTV9VUERBVEVELFxuICAgICAgXCJPcmdhbml6YXRpb24gdGVhbSB1cGRhdGVkXCIsXG4gICAgICBvcmdhbml6YXRpb24sXG4gICAgICB0ZWFtLFxuICAgICAgdHJpZ2dlcixcbiAgICApLFxuICB0cmFja09yZ2FuaXphdGlvblRlYW1EZWxldGVkOiAob3JnYW5pemF0aW9uLCB0ZWFtLCB0cmlnZ2VyKSA9PlxuICAgIGJ1aWxkVGVhbUxpZmVjeWNsZUV2ZW50KFxuICAgICAgT1JHQU5JWkFUSU9OX0VWRU5UX1RZUEVTLk9SR0FOSVpBVElPTl9URUFNX0RFTEVURUQsXG4gICAgICBcIk9yZ2FuaXphdGlvbiB0ZWFtIGRlbGV0ZWRcIixcbiAgICAgIG9yZ2FuaXphdGlvbixcbiAgICAgIHRlYW0sXG4gICAgICB0cmlnZ2VyLFxuICAgICksXG4gIHRyYWNrT3JnYW5pemF0aW9uVGVhbU1lbWJlckFkZGVkOiAob3JnYW5pemF0aW9uLCB0ZWFtLCB1c2VyLCB0ZWFtTWVtYmVyLCB0cmlnZ2VyKSA9PlxuICAgIGJ1aWxkVGVhbU1lbWJlckV2ZW50KFxuICAgICAgT1JHQU5JWkFUSU9OX0VWRU5UX1RZUEVTLk9SR0FOSVpBVElPTl9URUFNX01FTUJFUl9BRERFRCxcbiAgICAgIFwiVXNlciBhZGRlZCB0byBvcmdhbml6YXRpb24gdGVhbVwiLFxuICAgICAgb3JnYW5pemF0aW9uLFxuICAgICAgdGVhbSxcbiAgICAgIHVzZXIsXG4gICAgICB0ZWFtTWVtYmVyLFxuICAgICAgdHJpZ2dlcixcbiAgICApLFxuICB0cmFja09yZ2FuaXphdGlvblRlYW1NZW1iZXJSZW1vdmVkOiAob3JnYW5pemF0aW9uLCB0ZWFtLCB1c2VyLCB0ZWFtTWVtYmVyLCB0cmlnZ2VyKSA9PlxuICAgIGJ1aWxkVGVhbU1lbWJlckV2ZW50KFxuICAgICAgT1JHQU5JWkFUSU9OX0VWRU5UX1RZUEVTLk9SR0FOSVpBVElPTl9URUFNX01FTUJFUl9SRU1PVkVELFxuICAgICAgXCJVc2VyIHJlbW92ZWQgZnJvbSBvcmdhbml6YXRpb24gdGVhbVwiLFxuICAgICAgb3JnYW5pemF0aW9uLFxuICAgICAgdGVhbSxcbiAgICAgIHVzZXIsXG4gICAgICB0ZWFtTWVtYmVyLFxuICAgICAgdHJpZ2dlcixcbiAgICApLFxufSk7XG5cbmV4cG9ydCB0eXBlIE1lbWJlckV2ZW50QnVpbGRlcnMgPSB7XG4gIHRyYWNrT3JnYW5pemF0aW9uTWVtYmVyQWRkZWQ6IEJ1aWxkZXI8XG4gICAgW09yZ2FuaXphdGlvblNuYXBzaG90LCBNZW1iZXJTbmFwc2hvdCwgVXNlclNuYXBzaG90LCBCdWlsZGVyVHJpZ2dlcl1cbiAgPjtcbiAgdHJhY2tPcmdhbml6YXRpb25NZW1iZXJSZW1vdmVkOiBCdWlsZGVyPFxuICAgIFtPcmdhbml6YXRpb25TbmFwc2hvdCwgTWVtYmVyU25hcHNob3QsIFVzZXJTbmFwc2hvdCwgQnVpbGRlclRyaWdnZXJdXG4gID47XG4gIHRyYWNrT3JnYW5pemF0aW9uTWVtYmVyUm9sZVVwZGF0ZWQ6IEJ1aWxkZXI8XG4gICAgW09yZ2FuaXphdGlvblNuYXBzaG90LCBNZW1iZXJTbmFwc2hvdCwgVXNlclNuYXBzaG90LCBzdHJpbmcsIEJ1aWxkZXJUcmlnZ2VyXVxuICA+O1xufTtcblxuY29uc3QgbWVtYmVyQ29yZURhdGEgPSAobWVtYmVyOiBNZW1iZXJTbmFwc2hvdCwgdXNlcjogVXNlclNuYXBzaG90KSA9PiAoe1xuICB1c2VySWQ6IG1lbWJlci51c2VySWQsXG4gIG1lbWJlck5hbWU6IHVzZXIubmFtZSxcbiAgcm9sZTogbWVtYmVyLnJvbGUsXG4gIG1lbWJlcklkOiBtZW1iZXIuaWQsXG4gIG1lbWJlckVtYWlsOiB1c2VyLmVtYWlsLFxufSk7XG5cbmNvbnN0IGJ1aWxkTWVtYmVyRXZlbnRzID0gKCk6IE1lbWJlckV2ZW50QnVpbGRlcnMgPT4gKHtcbiAgdHJhY2tPcmdhbml6YXRpb25NZW1iZXJBZGRlZDogKG9yZ2FuaXphdGlvbiwgbWVtYmVyLCB1c2VyLCB0cmlnZ2VyKSA9PlxuICAgIGNyZWF0ZUV2ZW50KFxuICAgICAge1xuICAgICAgICBldmVudEtleTogb3JnYW5pemF0aW9uLmlkLFxuICAgICAgICBldmVudFR5cGU6IE9SR0FOSVpBVElPTl9FVkVOVF9UWVBFUy5PUkdBTklaQVRJT05fTUVNQkVSX0FEREVELFxuICAgICAgICBldmVudERpc3BsYXlOYW1lOiBcIk1lbWJlciBhZGRlZCB0byBvcmdhbml6YXRpb25cIixcbiAgICAgIH0sXG4gICAgICB7IC4uLm9yZ2FuaXphdGlvbklkZW50aXR5RGF0YShvcmdhbml6YXRpb24pLCAuLi5tZW1iZXJDb3JlRGF0YShtZW1iZXIsIHVzZXIpIH0sXG4gICAgICB0cmlnZ2VyLFxuICAgICksXG4gIHRyYWNrT3JnYW5pemF0aW9uTWVtYmVyUmVtb3ZlZDogKG9yZ2FuaXphdGlvbiwgbWVtYmVyLCB1c2VyLCB0cmlnZ2VyKSA9PlxuICAgIGNyZWF0ZUV2ZW50KFxuICAgICAge1xuICAgICAgICBldmVudEtleTogb3JnYW5pemF0aW9uLmlkLFxuICAgICAgICBldmVudFR5cGU6IE9SR0FOSVpBVElPTl9FVkVOVF9UWVBFUy5PUkdBTklaQVRJT05fTUVNQkVSX1JFTU9WRUQsXG4gICAgICAgIGV2ZW50RGlzcGxheU5hbWU6IFwiTWVtYmVyIHJlbW92ZWQgZnJvbSBvcmdhbml6YXRpb25cIixcbiAgICAgIH0sXG4gICAgICB7IC4uLm9yZ2FuaXphdGlvbklkZW50aXR5RGF0YShvcmdhbml6YXRpb24pLCAuLi5tZW1iZXJDb3JlRGF0YShtZW1iZXIsIHVzZXIpIH0sXG4gICAgICB0cmlnZ2VyLFxuICAgICksXG4gIHRyYWNrT3JnYW5pemF0aW9uTWVtYmVyUm9sZVVwZGF0ZWQ6IChvcmdhbml6YXRpb24sIG1lbWJlciwgdXNlciwgcHJldmlvdXNSb2xlLCB0cmlnZ2VyKSA9PlxuICAgIGNyZWF0ZUV2ZW50KFxuICAgICAge1xuICAgICAgICBldmVudEtleTogb3JnYW5pemF0aW9uLmlkLFxuICAgICAgICBldmVudFR5cGU6IE9SR0FOSVpBVElPTl9FVkVOVF9UWVBFUy5PUkdBTklaQVRJT05fTUVNQkVSX1JPTEVfVVBEQVRFRCxcbiAgICAgICAgZXZlbnREaXNwbGF5TmFtZTogXCJPcmdhbml6YXRpb24gbWVtYmVyIHJvbGUgdXBkYXRlZFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgLi4ub3JnYW5pemF0aW9uSWRlbnRpdHlEYXRhKG9yZ2FuaXphdGlvbiksXG4gICAgICAgIHVzZXJJZDogbWVtYmVyLnVzZXJJZCxcbiAgICAgICAgbWVtYmVyTmFtZTogdXNlci5uYW1lLFxuICAgICAgICBuZXdSb2xlOiBtZW1iZXIucm9sZSxcbiAgICAgICAgb2xkUm9sZTogcHJldmlvdXNSb2xlLFxuICAgICAgICBtZW1iZXJJZDogbWVtYmVyLmlkLFxuICAgICAgICBtZW1iZXJFbWFpbDogdXNlci5lbWFpbCxcbiAgICAgIH0sXG4gICAgICB0cmlnZ2VyLFxuICAgICksXG59KTtcblxuZXhwb3J0IHR5cGUgSW52aXRhdGlvbkV2ZW50QnVpbGRlcnMgPSB7XG4gIHRyYWNrT3JnYW5pemF0aW9uTWVtYmVySW52aXRlZDogQnVpbGRlcjxcbiAgICBbT3JnYW5pemF0aW9uU25hcHNob3QsIEludml0YXRpb25TbmFwc2hvdCwgVXNlclNuYXBzaG90LCBCdWlsZGVyVHJpZ2dlcl1cbiAgPjtcbiAgdHJhY2tPcmdhbml6YXRpb25NZW1iZXJJbnZpdGVBY2NlcHRlZDogQnVpbGRlcjxcbiAgICBbT3JnYW5pemF0aW9uU25hcHNob3QsIEludml0YXRpb25TbmFwc2hvdCwgTWVtYmVyU25hcHNob3QsIFVzZXJTbmFwc2hvdCwgQnVpbGRlclRyaWdnZXJdXG4gID47XG4gIHRyYWNrT3JnYW5pemF0aW9uTWVtYmVySW52aXRlUmVqZWN0ZWQ6IEJ1aWxkZXI8XG4gICAgW09yZ2FuaXphdGlvblNuYXBzaG90LCBJbnZpdGF0aW9uU25hcHNob3QsIFVzZXJTbmFwc2hvdCwgQnVpbGRlclRyaWdnZXJdXG4gID47XG4gIHRyYWNrT3JnYW5pemF0aW9uTWVtYmVySW52aXRlQ2FuY2VsZWQ6IEJ1aWxkZXI8XG4gICAgW09yZ2FuaXphdGlvblNuYXBzaG90LCBJbnZpdGF0aW9uU25hcHNob3QsIFVzZXJTbmFwc2hvdCwgQnVpbGRlclRyaWdnZXJdXG4gID47XG59O1xuXG5jb25zdCBpbnZpdGVlRGF0YSA9IChpbnZpdGF0aW9uOiBJbnZpdGF0aW9uU25hcHNob3QpID0+ICh7XG4gIGludml0ZWVJZDogaW52aXRhdGlvbi5pZCxcbiAgaW52aXRlZUVtYWlsOiBpbnZpdGF0aW9uLmVtYWlsLFxuICBpbnZpdGVlUm9sZTogaW52aXRhdGlvbi5yb2xlLFxuICBpbnZpdGVlVGVhbUlkOiBpbnZpdGF0aW9uLnRlYW1JZCxcbn0pO1xuXG5jb25zdCBidWlsZEludml0YXRpb25FdmVudHMgPSAoKTogSW52aXRhdGlvbkV2ZW50QnVpbGRlcnMgPT4gKHtcbiAgdHJhY2tPcmdhbml6YXRpb25NZW1iZXJJbnZpdGVkOiAob3JnYW5pemF0aW9uLCBpbnZpdGF0aW9uLCBpbnZpdGVyLCB0cmlnZ2VyKSA9PlxuICAgIGNyZWF0ZUV2ZW50KFxuICAgICAge1xuICAgICAgICBldmVudEtleTogb3JnYW5pemF0aW9uLmlkLFxuICAgICAgICBldmVudFR5cGU6IE9SR0FOSVpBVElPTl9FVkVOVF9UWVBFUy5PUkdBTklaQVRJT05fTUVNQkVSX0lOVklURUQsXG4gICAgICAgIGV2ZW50RGlzcGxheU5hbWU6IFwiVXNlciBpbnZpdGVkIHRvIG9yZ2FuaXphdGlvblwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgLi4ub3JnYW5pemF0aW9uSWRlbnRpdHlEYXRhKG9yZ2FuaXphdGlvbiksXG4gICAgICAgIC4uLmludml0ZWVEYXRhKGludml0YXRpb24pLFxuICAgICAgICBpbnZpdGVySWQ6IGludml0ZXIuaWQsXG4gICAgICAgIGludml0ZXJOYW1lOiBpbnZpdGVyLm5hbWUsXG4gICAgICAgIGludml0ZXJFbWFpbDogaW52aXRlci5lbWFpbCxcbiAgICAgIH0sXG4gICAgICB0cmlnZ2VyLFxuICAgICksXG4gIHRyYWNrT3JnYW5pemF0aW9uTWVtYmVySW52aXRlQWNjZXB0ZWQ6IChvcmdhbml6YXRpb24sIGludml0YXRpb24sIG1lbWJlciwgYWNjZXB0ZWRCeSwgdHJpZ2dlcikgPT5cbiAgICBjcmVhdGVFdmVudChcbiAgICAgIHtcbiAgICAgICAgZXZlbnRLZXk6IG9yZ2FuaXphdGlvbi5pZCxcbiAgICAgICAgZXZlbnRUeXBlOiBPUkdBTklaQVRJT05fRVZFTlRfVFlQRVMuT1JHQU5JWkFUSU9OX01FTUJFUl9JTlZJVEVfQUNDRVBURUQsXG4gICAgICAgIGV2ZW50RGlzcGxheU5hbWU6IFwiVXNlciBhY2NlcHRlZCBpbnZpdGUgb3JnYW5pemF0aW9uIGludml0ZVwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgLi4ub3JnYW5pemF0aW9uSWRlbnRpdHlEYXRhKG9yZ2FuaXphdGlvbiksXG4gICAgICAgIC4uLmludml0ZWVEYXRhKGludml0YXRpb24pLFxuICAgICAgICBhY2NlcHRlZEJ5SWQ6IGFjY2VwdGVkQnkuaWQsXG4gICAgICAgIGFjY2VwdGVkQnlFbWFpbDogYWNjZXB0ZWRCeS5lbWFpbCxcbiAgICAgICAgYWNjZXB0ZWRCeU5hbWU6IGFjY2VwdGVkQnkubmFtZSxcbiAgICAgICAgbWVtYmVySWQ6IG1lbWJlci5pZCxcbiAgICAgICAgbWVtYmVyUm9sZTogbWVtYmVyLnJvbGUsXG4gICAgICB9LFxuICAgICAgdHJpZ2dlcixcbiAgICApLFxuICB0cmFja09yZ2FuaXphdGlvbk1lbWJlckludml0ZVJlamVjdGVkOiAob3JnYW5pemF0aW9uLCBpbnZpdGF0aW9uLCByZWplY3RlZEJ5LCB0cmlnZ2VyKSA9PlxuICAgIGNyZWF0ZUV2ZW50KFxuICAgICAge1xuICAgICAgICBldmVudEtleTogb3JnYW5pemF0aW9uLmlkLFxuICAgICAgICBldmVudFR5cGU6IE9SR0FOSVpBVElPTl9FVkVOVF9UWVBFUy5PUkdBTklaQVRJT05fTUVNQkVSX0lOVklURV9SRUpFQ1RFRCxcbiAgICAgICAgZXZlbnREaXNwbGF5TmFtZTogXCJVc2VyIHJlamVjdGVkIG9yZ2FuaXphdGlvbiBpbnZpdGVcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC4uLm9yZ2FuaXphdGlvbklkZW50aXR5RGF0YShvcmdhbml6YXRpb24pLFxuICAgICAgICAuLi5pbnZpdGVlRGF0YShpbnZpdGF0aW9uKSxcbiAgICAgICAgcmVqZWN0ZWRCeUlkOiByZWplY3RlZEJ5LmlkLFxuICAgICAgICByZWplY3RlZEJ5RW1haWw6IHJlamVjdGVkQnkuZW1haWwsXG4gICAgICAgIHJlamVjdGVkQnlOYW1lOiByZWplY3RlZEJ5Lm5hbWUsXG4gICAgICB9LFxuICAgICAgdHJpZ2dlcixcbiAgICApLFxuICB0cmFja09yZ2FuaXphdGlvbk1lbWJlckludml0ZUNhbmNlbGVkOiAob3JnYW5pemF0aW9uLCBpbnZpdGF0aW9uLCBjYW5jZWxsZWRCeSwgdHJpZ2dlcikgPT5cbiAgICBjcmVhdGVFdmVudChcbiAgICAgIHtcbiAgICAgICAgZXZlbnRLZXk6IG9yZ2FuaXphdGlvbi5pZCxcbiAgICAgICAgZXZlbnRUeXBlOiBPUkdBTklaQVRJT05fRVZFTlRfVFlQRVMuT1JHQU5JWkFUSU9OX01FTUJFUl9JTlZJVEVfQ0FOQ0VMRUQsXG4gICAgICAgIGV2ZW50RGlzcGxheU5hbWU6IFwiT3JnYW5pemF0aW9uIGludml0ZSBjYW5jZWxsZWRcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC4uLm9yZ2FuaXphdGlvbklkZW50aXR5RGF0YShvcmdhbml6YXRpb24pLFxuICAgICAgICAuLi5pbnZpdGVlRGF0YShpbnZpdGF0aW9uKSxcbiAgICAgICAgY2FuY2VsbGVkQnlJZDogY2FuY2VsbGVkQnkuaWQsXG4gICAgICAgIGNhbmNlbGxlZEJ5TmFtZTogY2FuY2VsbGVkQnkubmFtZSxcbiAgICAgICAgY2FuY2VsbGVkQnlFbWFpbDogY2FuY2VsbGVkQnkuZW1haWwsXG4gICAgICB9LFxuICAgICAgdHJpZ2dlcixcbiAgICApLFxufSk7XG5cbi8vIFRPRE8oc2VjdXJpdHkpOiBzb25hbXUuY29uZmln7J2YIHNlY3VyaXR5IOyYteyFmOydtCDrj4TsnoXrkJjrqbRcbi8vIFNlY3VyaXR5RXZlbnRCdWlsZGVycyAodHJhY2tTZWN1cml0eUJsb2NrZWQvQWxsb3dlZC9DaGFsbGVuZ2VkL1N0YWxlQWNjb3VudCkg7IS57IWY7J2EIOy2lOqwgO2VnOuLpC5cbi8vIGRhc2jsnZggY3JlYXRlU2VjdXJpdHlDbGllbnQvb25TZWN1cml0eUV2ZW50IOq1rO2YhOydgCDtmITsnqwgc2NvcGUgb3V0IChSMSkuXG5cbmV4cG9ydCB0eXBlIEF1ZGl0RXZlbnRCdWlsZGVyQ2F0YWxvZyA9IHtcbiAgYWNjb3VudDogQWNjb3VudEV2ZW50QnVpbGRlcnM7XG4gIHNlc3Npb246IFNlc3Npb25FdmVudEJ1aWxkZXJzO1xuICB1c2VyOiBVc2VyRXZlbnRCdWlsZGVycztcbiAgdmVyaWZpY2F0aW9uOiBWZXJpZmljYXRpb25FdmVudEJ1aWxkZXJzO1xuICBvcmdhbml6YXRpb246IE9yZ2FuaXphdGlvbkV2ZW50QnVpbGRlcnM7XG4gIHRlYW06IFRlYW1FdmVudEJ1aWxkZXJzO1xuICBtZW1iZXI6IE1lbWJlckV2ZW50QnVpbGRlcnM7XG4gIGludml0YXRpb246IEludml0YXRpb25FdmVudEJ1aWxkZXJzO1xufTtcblxuZXhwb3J0IGNvbnN0IGJ1aWxkQXVkaXRFdmVudENhdGFsb2cgPSAoKTogQXVkaXRFdmVudEJ1aWxkZXJDYXRhbG9nID0+ICh7XG4gIGFjY291bnQ6IGJ1aWxkQWNjb3VudEV2ZW50cygpLFxuICBzZXNzaW9uOiBidWlsZFNlc3Npb25FdmVudHMoKSxcbiAgdXNlcjogYnVpbGRVc2VyRXZlbnRzKCksXG4gIHZlcmlmaWNhdGlvbjogYnVpbGRWZXJpZmljYXRpb25FdmVudHMoKSxcbiAgb3JnYW5pemF0aW9uOiBidWlsZE9yZ2FuaXphdGlvbkV2ZW50cygpLFxuICB0ZWFtOiBidWlsZFRlYW1FdmVudHMoKSxcbiAgbWVtYmVyOiBidWlsZE1lbWJlckV2ZW50cygpLFxuICBpbnZpdGF0aW9uOiBidWlsZEludml0YXRpb25FdmVudHMoKSxcbn0pO1xuIl0sIm1hcHBpbmdzIjoiOztBQW1CQSxNQUFNLGVBQ0osTUFDQSxNQUNBLFNBQ0EsY0FDbUI7Q0FDbkIsR0FBRztDQUNILFdBQVc7RUFDVCxHQUFHO0VBQ0gsYUFBYSxRQUFRO0VBQ3JCLGdCQUFnQixRQUFRO0NBQzFCO0NBQ0EsV0FBVyxVQUFVO0NBQ3JCLE1BQU0sVUFBVTtDQUNoQixTQUFTLFVBQVU7Q0FDbkIsYUFBYSxVQUFVO0FBQ3pCO0FBaUJBLE1BQU0scUJBQ0osV0FDQSxrQkFDQSxTQUNBLE1BQ0Es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
308
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRlcnMuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F1dGgvYXVkaXQtbG9nL2J1aWxkZXJzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJhbmRvbVVVSUQgfSBmcm9tIFwibm9kZTpjcnlwdG9cIjtcblxuaW1wb3J0IHtcbiAgdHlwZSBBY2NvdW50U25hcHNob3QsXG4gIHR5cGUgQXVkaXRMb2dFdmVudCxcbiAgdHlwZSBCdWlsZGVyLFxuICB0eXBlIEJ1aWxkZXJMb2NhdGlvbixcbiAgdHlwZSBCdWlsZGVyVHJpZ2dlcixcbiAgRVZFTlRfVFlQRVMsXG4gIHR5cGUgSW52aXRhdGlvblNuYXBzaG90LFxuICB0eXBlIE1lbWJlclNuYXBzaG90LFxuICBPUkdBTklaQVRJT05fRVZFTlRfVFlQRVMsXG4gIHR5cGUgT3JnYW5pemF0aW9uU25hcHNob3QsXG4gIHR5cGUgU2Vzc2lvblNuYXBzaG90LFxuICB0eXBlIFRlYW1TbmFwc2hvdCxcbiAgdHlwZSBVc2VyUHJvZmlsZUxpdGUsXG4gIHR5cGUgVXNlclNuYXBzaG90LFxuICB0eXBlIFZlcmlmaWNhdGlvblNuYXBzaG90LFxufSBmcm9tIFwiLi9ldmVudHNcIjtcblxuLy8g66qo65OgIOu5jOuNlCDqs7XthrUg7ZWE65OcKHRyaWdnZXJlZEJ5L3RyaWdnZXJDb250ZXh0LCBpcEFkZHJlc3MvY2l0eS9jb3VudHJ5L2NvdW50cnlDb2RlKeulvCDtlanshLHtlZzri6QuXG5jb25zdCBjcmVhdGVFdmVudCA9IChcbiAgYmFzZTogeyBldmVudEtleTogc3RyaW5nOyBldmVudFR5cGU6IHN0cmluZzsgZXZlbnREaXNwbGF5TmFtZT86IHN0cmluZyB9LFxuICBkYXRhOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgdHJpZ2dlcjogQnVpbGRlclRyaWdnZXIsXG4gIGxvY2F0aW9uPzogQnVpbGRlckxvY2F0aW9uLFxuKTogQXVkaXRMb2dFdmVudCA9PiAoe1xuICAuLi5iYXNlLFxuICBldmVudElkOiByYW5kb21VVUlEKCksXG4gIGV2ZW50RGF0YToge1xuICAgIC4uLmRhdGEsXG4gICAgdHJpZ2dlcmVkQnk6IHRyaWdnZXIudHJpZ2dlcmVkQnksXG4gICAgdHJpZ2dlckNvbnRleHQ6IHRyaWdnZXIudHJpZ2dlckNvbnRleHQsXG4gIH0sXG4gIGlwQWRkcmVzczogbG9jYXRpb24/LmlwQWRkcmVzcyxcbiAgY2l0eTogbG9jYXRpb24/LmNpdHksXG4gIGNvdW50cnk6IGxvY2F0aW9uPy5jb3VudHJ5LFxuICBjb3VudHJ5Q29kZTogbG9jYXRpb24/LmNvdW50cnlDb2RlLFxufSk7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEFjY291bnQg67mM642UXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5leHBvcnQgdHlwZSBBY2NvdW50RXZlbnRCdWlsZGVycyA9IHtcbiAgdHJhY2tBY2NvdW50TGlua2luZzogQnVpbGRlcjxcbiAgICBbQWNjb3VudFNuYXBzaG90LCBVc2VyUHJvZmlsZUxpdGUsIEJ1aWxkZXJUcmlnZ2VyLCBCdWlsZGVyTG9jYXRpb24gfCB1bmRlZmluZWRdXG4gID47XG4gIHRyYWNrQWNjb3VudFVubGluazogQnVpbGRlcjxcbiAgICBbQWNjb3VudFNuYXBzaG90LCBVc2VyUHJvZmlsZUxpdGUsIEJ1aWxkZXJUcmlnZ2VyLCBCdWlsZGVyTG9jYXRpb24gfCB1bmRlZmluZWRdXG4gID47XG4gIHRyYWNrQWNjb3VudFBhc3N3b3JkQ2hhbmdlOiBCdWlsZGVyPFxuICAgIFtBY2NvdW50U25hcHNob3QsIFVzZXJQcm9maWxlTGl0ZSwgQnVpbGRlclRyaWdnZXIsIEJ1aWxkZXJMb2NhdGlvbiB8IHVuZGVmaW5lZF1cbiAgPjtcbn07XG5cbmNvbnN0IGJ1aWxkQWNjb3VudEV2ZW50ID0gKFxuICBldmVudFR5cGU6IHN0cmluZyxcbiAgZXZlbnREaXNwbGF5TmFtZTogc3RyaW5nLFxuICBhY2NvdW50OiBBY2NvdW50U25hcHNob3QsXG4gIHVzZXI6IFVzZXJQcm9maWxlTGl0ZSxcbiAgdHJpZ2dlcjogQnVpbGRlclRyaWdnZXIsXG4gIGxvY2F0aW9uOiBCdWlsZGVyTG9jYXRpb24gfCB1bmRlZmluZWQsXG4pOiBBdWRpdExvZ0V2ZW50ID0+XG4gIGNyZWF0ZUV2ZW50KFxuICAgIHsgZXZlbnRLZXk6IGFjY291bnQudXNlcklkLCBldmVudFR5cGUsIGV2ZW50RGlzcGxheU5hbWUgfSxcbiAgICB7XG4gICAgICB1c2VySWQ6IGFjY291bnQudXNlcklkLFxuICAgICAgdXNlckVtYWlsOiB1c2VyPy5lbWFpbCA/PyBcInVua25vd25cIixcbiAgICAgIHVzZXJOYW1lOiB1c2VyPy5uYW1lID8/IFwidW5rbm93blwiLFxuICAgICAgYWNjb3VudElkOiBhY2NvdW50LmlkLFxuICAgICAgcHJvdmlkZXJJZDogYWNjb3VudC5wcm92aWRlcklkLFxuICAgIH0sXG4gICAgdHJpZ2dlcixcbiAgICBsb2NhdGlvbixcbiAgKTtcblxuY29uc3QgYnVpbGRBY2NvdW50RXZlbnRzID0gKCk6IEFjY291bnRFdmVudEJ1aWxkZXJzID0+ICh7XG4gIHRyYWNrQWNjb3VudExpbmtpbmc6IChhY2NvdW50LCB1c2VyLCB0cmlnZ2VyLCBsb2NhdGlvbikgPT5cbiAgICBidWlsZEFjY291bnRFdmVudChcbiAgICAgIEVWRU5UX1RZUEVTLkFDQ09VTlRfTElOS0VELFxuICAgICAgYExpbmtlZCAke2FjY291bnQucHJvdmlkZXJJZH0gYWNjb3VudGAsXG4gICAgICBhY2NvdW50LFxuICAgICAgdXNlcixcbiAgICAgIHRyaWdnZXIsXG4gICAgICBsb2NhdGlvbixcbiAgICApLFxuICB0cmFja0FjY291bnRVbmxpbms6IChhY2NvdW50LCB1c2VyLCB0cmlnZ2VyLCBsb2NhdGlvbikgPT5cbiAgICBidWlsZEFjY291bnRFdmVudChcbiAgICAgIEVWRU5UX1RZUEVTLkFDQ09VTlRfVU5MSU5LRUQsXG4gICAgICBgVW5saW5rZWQgJHthY2NvdW50LnByb3ZpZGVySWR9IGFjY291bnRgLFxuICAgICAgYWNjb3VudCxcbiAgICAgIHVzZXIsXG4gICAgICB0cmlnZ2VyLFxuICAgICAgbG9jYXRpb24sXG4gICAgKSxcbiAgdHJhY2tBY2NvdW50UGFzc3dvcmRDaGFuZ2U6IChhY2NvdW50LCB1c2VyLCB0cmlnZ2VyLCBsb2NhdGlvbikgPT5cbiAgICBidWlsZEFjY291bnRFdmVudChcbiAgICAgIEVWRU5UX1RZUEVTLlBBU1NXT1JEX0NIQU5HRUQsXG4gICAgICBcIlBhc3N3b3JkIGNoYW5nZWRcIixcbiAgICAgIGFjY291bnQsXG4gICAgICB1c2VyLFxuICAgICAgdHJpZ2dlcixcbiAgICAgIGxvY2F0aW9uLFxuICAgICksXG59KTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU2Vzc2lvbiDruYzrjZRcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbmV4cG9ydCB0eXBlIFNlc3Npb25FdmVudEJ1aWxkZXJzID0ge1xuICB0cmFja1VzZXJTaWduZWRJbjogQnVpbGRlcjxcbiAgICBbU2Vzc2lvblNuYXBzaG90LCBVc2VyUHJvZmlsZUxpdGUsIEJ1aWxkZXJUcmlnZ2VyLCBCdWlsZGVyTG9jYXRpb24gfCB1bmRlZmluZWRdXG4gID47XG4gIHRyYWNrVXNlclNpZ25lZE91dDogQnVpbGRlcjxcbiAgICBbU2Vzc2lvblNuYXBzaG90LCBVc2VyUHJvZmlsZUxpdGUsIEJ1aWxkZXJUcmlnZ2VyLCBCdWlsZGVyTG9jYXRpb24gfCB1bmRlZmluZWRdXG4gID47XG4gIHRyYWNrU2Vzc2lvbkNyZWF0ZWQ6IEJ1aWxkZXI8XG4gICAgW1Nlc3Npb25TbmFwc2hvdCwgVXNlclByb2ZpbGVMaXRlLCBCdWlsZGVyVHJpZ2dlciwgQnVpbGRlckxvY2F0aW9uIHwgdW5kZWZpbmVkXVxuICA+O1xuICB0cmFja1Nlc3Npb25SZXZva2VkOiBCdWlsZGVyPFxuICAgIFtTZXNzaW9uU25hcHNob3QsIFVzZXJQcm9maWxlTGl0ZSwgQnVpbGRlclRyaWdnZXIsIEJ1aWxkZXJMb2NhdGlvbiB8IHVuZGVmaW5lZF1cbiAgPjtcbiAgdHJhY2tTZXNzaW9uUmV2b2tlZEFsbDogQnVpbGRlcjxbU2Vzc2lvblNuYXBzaG90LCBVc2VyUHJvZmlsZUxpdGUsIEJ1aWxkZXJUcmlnZ2VyXT47XG4gIHRyYWNrVXNlckltcGVyc29uYXRlZDogQnVpbGRlcjxcbiAgICBbU2Vzc2lvblNuYXBzaG90LCBVc2VyUHJvZmlsZUxpdGUsIFVzZXJQcm9maWxlTGl0ZSwgQnVpbGRlclRyaWdnZXIsIEJ1aWxkZXJMb2NhdGlvbiB8IHVuZGVmaW5lZF1cbiAgPjtcbiAgdHJhY2tVc2VySW1wZXJzb25hdGlvblN0b3A6IEJ1aWxkZXI8XG4gICAgW1Nlc3Npb25TbmFwc2hvdCwgVXNlclByb2ZpbGVMaXRlLCBVc2VyUHJvZmlsZUxpdGUsIEJ1aWxkZXJUcmlnZ2VyLCBCdWlsZGVyTG9jYXRpb24gfCB1bmRlZmluZWRdXG4gID47XG4gIHRyYWNrRW1haWxWZXJpZmljYXRpb25TZW50OiBCdWlsZGVyPFxuICAgIFtTZXNzaW9uU25hcHNob3QsIHsgbmFtZT86IHN0cmluZzsgZW1haWw/OiBzdHJpbmcgfSwgQnVpbGRlclRyaWdnZXJdXG4gID47XG4gIHRyYWNrRW1haWxTaWduSW5BdHRlbXB0OiBCdWlsZGVyPFxuICAgIFtcbiAgICAgIHsgZW1haWw6IHN0cmluZzsgbG9naW5NZXRob2Q6IHN0cmluZyB8IG51bGwgfSxcbiAgICAgIFVzZXJQcm9maWxlTGl0ZSxcbiAgICAgIEJ1aWxkZXJUcmlnZ2VyLFxuICAgICAgQnVpbGRlckxvY2F0aW9uIHwgdW5kZWZpbmVkLFxuICAgIF1cbiAgPjtcbiAgdHJhY2tTb2NpYWxTaWduSW5BdHRlbXB0OiBCdWlsZGVyPFxuICAgIFt7IGxvZ2luTWV0aG9kOiBzdHJpbmcgfCBudWxsIH0sIFVzZXJQcm9maWxlTGl0ZSwgQnVpbGRlclRyaWdnZXIsIEJ1aWxkZXJMb2NhdGlvbiB8IHVuZGVmaW5lZF1cbiAgPjtcbiAgdHJhY2tTb2NpYWxTaWduSW5SZWRpcmVjdGlvbkF0dGVtcHQ6IEJ1aWxkZXI8XG4gICAgW3sgbG9naW5NZXRob2Q6IHN0cmluZyB8IG51bGwgfSwgVXNlclByb2ZpbGVMaXRlLCBCdWlsZGVyVHJpZ2dlciwgQnVpbGRlckxvY2F0aW9uIHwgdW5kZWZpbmVkXVxuICA+O1xufTtcblxuY29uc3Qgc2Vzc2lvbkxpZmVjeWNsZURhdGEgPSAoc2Vzc2lvbjogU2Vzc2lvblNuYXBzaG90LCB1c2VyOiBVc2VyUHJvZmlsZUxpdGUpID0+ICh7XG4gIHVzZXJJZDogc2Vzc2lvbi51c2VySWQsXG4gIHVzZXJOYW1lOiB1c2VyPy5uYW1lID8/IFwidW5rbm93blwiLFxuICB1c2VyRW1haWw6IHVzZXI/LmVtYWlsID8/IFwidW5rbm93blwiLFxuICBzZXNzaW9uSWQ6IHNlc3Npb24uaWQsXG4gIGxvZ2luTWV0aG9kOiBzZXNzaW9uLmxvZ2luTWV0aG9kID8/IFwidW5rbm93blwiLFxuICB1c2VyQWdlbnQ6IHNlc3Npb24udXNlckFnZW50LFxufSk7XG5cbmNvbnN0IGJ1aWxkU2Vzc2lvbkxpZmVjeWNsZUV2ZW50ID0gKFxuICBldmVudFR5cGU6IHN0cmluZyxcbiAgZXZlbnREaXNwbGF5TmFtZTogc3RyaW5nLFxuICBzZXNzaW9uOiBTZXNzaW9uU25hcHNob3QsXG4gIHVzZXI6IFVzZXJQcm9maWxlTGl0ZSxcbiAgdHJpZ2dlcjogQnVpbGRlclRyaWdnZXIsXG4gIGxvY2F0aW9uOiBCdWlsZGVyTG9jYXRpb24gfCB1bmRlZmluZWQsXG4pOiBBdWRpdExvZ0V2ZW50ID0+XG4gIGNyZWF0ZUV2ZW50KFxuICAgIHsgZXZlbnRLZXk6IHNlc3Npb24udXNlcklkLCBldmVudFR5cGUsIGV2ZW50RGlzcGxheU5hbWUgfSxcbiAgICBzZXNzaW9uTGlmZWN5Y2xlRGF0YShzZXNzaW9uLCB1c2VyKSxcbiAgICB0cmlnZ2VyLFxuICAgIGxvY2F0aW9uLFxuICApO1xuXG5jb25zdCBidWlsZEltcGVyc29uYXRpb25FdmVudCA9IChcbiAgZXZlbnRUeXBlOiBzdHJpbmcsXG4gIGV2ZW50RGlzcGxheU5hbWU6IHN0cmluZyxcbiAgc2Vzc2lvbjogU2Vzc2lvblNuYXBzaG90LFxuICB1c2VyOiBVc2VyUHJvZmlsZUxpdGUsXG4gIGltcGVyc29uYXRvcjogVXNlclByb2ZpbGVMaXRlLFxuICB0cmlnZ2VyOiBCdWlsZGVyVHJpZ2dlcixcbiAgbG9jYXRpb246IEJ1aWxkZXJMb2NhdGlvbiB8IHVuZGVmaW5lZCxcbik6IEF1ZGl0TG9nRXZlbnQgPT5cbiAgY3JlYXRlRXZlbnQoXG4gICAgeyBldmVudEtleTogc2Vzc2lvbi51c2VySWQsIGV2ZW50VHlwZSwgZXZlbnREaXNwbGF5TmFtZSB9LFxuICAgIHtcbiAgICAgIC4uLnNlc3Npb25MaWZlY3ljbGVEYXRhKHNlc3Npb24sIHVzZXIpLFxuICAgICAgaW1wZXJzb25hdGVkQnk6IGltcGVyc29uYXRvcj8ubmFtZSA/PyBpbXBlcnNvbmF0b3I/LmVtYWlsID8/IHNlc3Npb24uaW1wZXJzb25hdGVkQnksXG4gICAgICBpbXBlcnNvbmF0ZWRCeUlkOiBzZXNzaW9uLmltcGVyc29uYXRlZEJ5LFxuICAgIH0sXG4gICAgdHJpZ2dlcixcbiAgICBsb2NhdGlvbixcbiAgKTtcblxuY29uc3QgU0lHTl9JTl9GQUlMRURfRElTUExBWSA9IFwiVXNlciBzaWduLWluIGF0dGVtcHQgZmFpbGVkXCI7XG5cbmNvbnN0IGJ1aWxkU2Vzc2lvbkV2ZW50cyA9ICgpOiBTZXNzaW9uRXZlbnRCdWlsZGVycyA9PiAoe1xuICB0cmFja1VzZXJTaWduZWRJbjogKHNlc3Npb24sIHVzZXIsIHRyaWdnZXIsIGxvY2F0aW9uKSA9PlxuICAgIGJ1aWxkU2Vzc2lvbkxpZmVjeWNsZUV2ZW50KFxuICAgICAgRVZFTlRfVFlQRVMuVVNFUl9TSUdORURfSU4sXG4gICAgICBgU2lnbmVkIGluIHZpYSAke3Nlc3Npb24ubG9naW5NZXRob2QgPz8gXCJ1bmtub3duXCJ9YCxcbiAgICAgIHNlc3Npb24sXG4gICAgICB1c2VyLFxuICAgICAgdHJpZ2dlcixcbiAgICAgIGxvY2F0aW9uLFxuICAgICksXG4gIHRyYWNrVXNlclNpZ25lZE91dDogKHNlc3Npb24sIHVzZXIsIHRyaWdnZXIsIGxvY2F0aW9uKSA9PlxuICAgIGJ1aWxkU2Vzc2lvbkxpZmVjeWNsZUV2ZW50KFxuICAgICAgRVZFTlRfVFlQRVMuVVNFUl9TSUdORURfT1VULFxuICAgICAgXCJVc2VyIHNpZ25lZCBvdXRcIixcbiAgICAgIHNlc3Npb24sXG4gICAgICB1c2VyLFxuICAgICAgdHJpZ2dlcixcbiAgICAgIGxvY2F0aW9uLFxuICAgICksXG4gIHRyYWNrU2Vzc2lvbkNyZWF0ZWQ6IChzZXNzaW9uLCB1c2VyLCB0cmlnZ2VyLCBsb2NhdGlvbikgPT5cbiAgICBidWlsZFNlc3Npb25MaWZlY3ljbGVFdmVudChcbiAgICAgIEVWRU5UX1RZUEVTLlNFU1NJT05fQ1JFQVRFRCxcbiAgICAgIFwiU2Vzc2lvbiBjcmVhdGVkXCIsXG4gICAgICBzZXNzaW9uLFxuICAgICAgdXNlcixcbiAgICAgIHRyaWdnZXIsXG4gICAgICBsb2NhdGlvbixcbiAgICApLFxuICB0cmFja1Nlc3Npb25SZXZva2VkOiAoc2Vzc2lvbiwgdXNlciwgdHJpZ2dlciwgbG9jYXRpb24pID0+XG4gICAgYnVpbGRTZXNzaW9uTGlmZWN5Y2xlRXZlbnQoXG4gICAgICBFVkVOVF9UWVBFUy5TRVNTSU9OX1JFVk9LRUQsXG4gICAgICBcIlNlc3Npb24gcmV2b2tlZFwiLFxuICAgICAgc2Vzc2lvbixcbiAgICAgIHVzZXIsXG4gICAgICB0cmlnZ2VyLFxuICAgICAgbG9jYXRpb24sXG4gICAgKSxcbiAgdHJhY2tTZXNzaW9uUmV2b2tlZEFsbDogKHNlc3Npb24sIHVzZXIsIHRyaWdnZXIpID0+XG4gICAgY3JlYXRlRXZlbnQoXG4gICAgICB7XG4gICAgICAgIGV2ZW50S2V5OiBzZXNzaW9uLnVzZXJJZCxcbiAgICAgICAgZXZlbnRUeXBlOiBFVkVOVF9UWVBFUy5BTExfU0VTU0lPTlNfUkVWT0tFRCxcbiAgICAgICAgZXZlbnREaXNwbGF5TmFtZTogXCJBbGwgc2Vzc2lvbnMgcmV2b2tlZFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdXNlcklkOiBzZXNzaW9uLnVzZXJJZCxcbiAgICAgICAgdXNlck5hbWU6IHVzZXI/Lm5hbWUgPz8gXCJ1bmtub3duXCIsXG4gICAgICAgIHVzZXJFbWFpbDogdXNlcj8uZW1haWwgPz8gXCJ1bmtub3duXCIsXG4gICAgICB9LFxuICAgICAgdHJpZ2dlcixcbiAgICApLFxuICB0cmFja1VzZXJJbXBlcnNvbmF0ZWQ6IChzZXNzaW9uLCB1c2VyLCBpbXBlcnNvbmF0b3IsIHRyaWdnZXIsIGxvY2F0aW9uKSA9PlxuICAgIGJ1aWxkSW1wZXJzb25hdGlvbkV2ZW50KFxuICAgICAgRVZFTlRfVFlQRVMuVVNFUl9JTVBFUlNPTkFURUQsXG4gICAgICBcIlVzZXIgaW1wZXJzb25hdGVkXCIsXG4gICAgICBzZXNzaW9uLFxuICAgICAgdXNlcixcbiAgICAgIGltcGVyc29uYXRvcixcbiAgICAgIHRyaWdnZXIsXG4gICAgICBsb2NhdGlvbixcbiAgICApLFxuICB0cmFja1VzZXJJbXBlcnNvbmF0aW9uU3RvcDogKHNlc3Npb24sIHVzZXIsIGltcGVyc29uYXRvciwgdHJpZ2dlciwgbG9jYXRpb24pID0+XG4gICAgYnVpbGRJbXBlcnNvbmF0aW9uRXZlbnQoXG4gICAgICBFVkVOVF9UWVBFUy5VU0VSX0lNUEVSU09OQVRFRF9TVE9QUEVELFxuICAgICAgXCJVc2VyIGltcGVyc29uYXRpb24gc3RvcHBlZFwiLFxuICAgICAgc2Vzc2lvbixcbiAgICAgIHVzZXIsXG4gICAgICBpbXBlcnNvbmF0b3IsXG4gICAgICB0cmlnZ2VyLFxuICAgICAgbG9jYXRpb24sXG4gICAgKSxcbiAgdHJhY2tFbWFpbFZlcmlmaWNhdGlvblNlbnQ6IChzZXNzaW9uLCB1c2VyLCB0cmlnZ2VyKSA9PlxuICAgIGNyZWF0ZUV2ZW50KFxuICAgICAge1xuICAgICAgICBldmVudEtleTogc2Vzc2lvbi51c2VySWQsXG4gICAgICAgIGV2ZW50VHlwZTogRVZFTlRfVFlQRVMuRU1BSUxfVkVSSUZJQ0FUSU9OX1NFTlQsXG4gICAgICAgIGV2ZW50RGlzcGxheU5hbWU6IFwiVmVyaWZpY2F0aW9uIGVtYWlsIHNlbnRcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHVzZXJJZDogc2Vzc2lvbi51c2VySWQsXG4gICAgICAgIHVzZXJOYW1lOiB1c2VyLm5hbWUsXG4gICAgICAgIHVzZXJFbWFpbDogdXNlci5lbWFpbCxcbiAgICAgICAgc2Vzc2lvbklkOiBzZXNzaW9uLmlkLFxuICAgICAgfSxcbiAgICAgIHRyaWdnZXIsXG4gICAgKSxcbiAgLy8g7KO87J2YOiDquLDsobQg64+Z7J6RIOycoOyngCDigJQgYG5hbWVOYW1lYCDsmKTtg4Ag7ZWE65Oc66qF64+EIOq3uOuMgOuhnCDrs7TsobTtlZzri6QuXG4gIHRyYWNrRW1haWxTaWduSW5BdHRlbXB0OiAoYXR0ZW1wdCwgdXNlciwgdHJpZ2dlciwgbG9jYXRpb24pID0+XG4gICAgY3JlYXRlRXZlbnQoXG4gICAgICB7XG4gICAgICAgIGV2ZW50S2V5OiB1c2VyPy5pZCA/PyBcInVua25vd25cIixcbiAgICAgICAgZXZlbnRUeXBlOiBFVkVOVF9UWVBFUy5VU0VSX1NJR05fSU5fRkFJTEVELFxuICAgICAgICBldmVudERpc3BsYXlOYW1lOiBTSUdOX0lOX0ZBSUxFRF9ESVNQTEFZLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdXNlcklkOiB1c2VyPy5pZCA/PyBcInVua25vd25cIixcbiAgICAgICAgbmFtZU5hbWU6IHVzZXI/Lm5hbWUgPz8gXCJ1bmtub3duXCIsXG4gICAgICAgIHVzZXJFbWFpbDogYXR0ZW1wdC5lbWFpbCxcbiAgICAgICAgbG9naW5NZXRob2Q6IGF0dGVtcHQubG9naW5NZXRob2QsXG4gICAgICB9LFxuICAgICAgeyB0cmlnZ2VyZWRCeTogdXNlcj8uaWQgPz8gdHJpZ2dlci50cmlnZ2VyZWRCeSwgdHJpZ2dlckNvbnRleHQ6IHRyaWdnZXIudHJpZ2dlckNvbnRleHQgfSxcbiAgICAgIGxvY2F0aW9uLFxuICAgICksXG4gIHRyYWNrU29jaWFsU2lnbkluQXR0ZW1wdDogKGF0dGVtcHQsIHVzZXIsIHRyaWdnZXIsIGxvY2F0aW9uKSA9PlxuICAgIGNyZWF0ZUV2ZW50KFxuICAgICAge1xuICAgICAgICBldmVudEtleTogdXNlcj8uaWQgPz8gXCJ1bmtub3duXCIsXG4gICAgICAgIGV2ZW50VHlwZTogRVZFTlRfVFlQRVMuVVNFUl9TSUdOX0lOX0ZBSUxFRCxcbiAgICAgICAgZXZlbnREaXNwbGF5TmFtZTogU0lHTl9JTl9GQUlMRURfRElTUExBWSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHVzZXJJZDogdXNlcj8uaWQgPz8gXCJ1bmtub3duXCIsXG4gICAgICAgIHVzZXJOYW1lOiB1c2VyPy5uYW1lID8/IFwidW5rbm93blwiLFxuICAgICAgICB1c2VyRW1haWw6IHVzZXI/LmVtYWlsID8/IFwidW5rbm93blwiLFxuICAgICAgICBsb2dpbk1ldGhvZDogYXR0ZW1wdC5sb2dpbk1ldGhvZCxcbiAgICAgIH0sXG4gICAgICB7IHRyaWdnZXJlZEJ5OiB1c2VyPy5pZCA/PyB0cmlnZ2VyLnRyaWdnZXJlZEJ5LCB0cmlnZ2VyQ29udGV4dDogdHJpZ2dlci50cmlnZ2VyQ29udGV4dCB9LFxuICAgICAgbG9jYXRpb24sXG4gICAgKSxcbiAgLy8g7KO87J2YOiDquLDsobQg64+Z7J6RIOycoOyngCDigJQgdXNlckVtYWlsIOqwkuydtCB1c2VyPy5pZOuhnCDshKTsoJXrkJjripQg6riw7KG0IOuPmeyekeuPhCDqt7jrjIDroZwg67O07KG07ZWc64ukLlxuICB0cmFja1NvY2lhbFNpZ25JblJlZGlyZWN0aW9uQXR0ZW1wdDogKGF0dGVtcHQsIHVzZXIsIHRyaWdnZXIsIGxvY2F0aW9uKSA9PlxuICAgIGNyZWF0ZUV2ZW50KFxuICAgICAge1xuICAgICAgICBldmVudEtleTogdXNlcj8uaWQgPz8gXCJ1bmtub3duXCIsXG4gICAgICAgIGV2ZW50VHlwZTogRVZFTlRfVFlQRVMuVVNFUl9TSUdOX0lOX0ZBSUxFRCxcbiAgICAgICAgZXZlbnREaXNwbGF5TmFtZTogU0lHTl9JTl9GQUlMRURfRElTUExBWSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHVzZXJJZDogdXNlcj8uaWQgPz8gXCJ1bmtub3duXCIsXG4gICAgICAgIHVzZXJOYW1lOiB1c2VyPy5uYW1lID8/IFwidW5rbm93blwiLFxuICAgICAgICB1c2VyRW1haWw6IHVzZXI/LmlkID8/IFwidW5rbm93blwiLFxuICAgICAgICBsb2dpbk1ldGhvZDogYXR0ZW1wdC5sb2dpbk1ldGhvZCxcbiAgICAgIH0sXG4gICAgICB0cmlnZ2VyLFxuICAgICAgbG9jYXRpb24sXG4gICAgKSxcbn0pO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBVc2VyIOu5jOuNlFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuZXhwb3J0IHR5cGUgVXNlckV2ZW50QnVpbGRlcnMgPSB7XG4gIHRyYWNrVXNlclNpZ25lZFVwOiBCdWlsZGVyPFtVc2VyU25hcHNob3QsIEJ1aWxkZXJUcmlnZ2VyLCBCdWlsZGVyTG9jYXRpb24gfCB1bmRlZmluZWRdPjtcbiAgdHJhY2tVc2VyRGVsZXRlZDogQnVpbGRlcjxbVXNlclNuYXBzaG90LCBCdWlsZGVyVHJpZ2dlciwgQnVpbGRlckxvY2F0aW9uIHwgdW5kZWZpbmVkXT47XG4gIHRyYWNrVXNlclByb2ZpbGVVcGRhdGVkOiBCdWlsZGVyPFxuICAgIFtVc2VyU25hcHNob3QsIHN0cmluZ1tdLCBCdWlsZGVyVHJpZ2dlciwgQnVpbGRlckxvY2F0aW9uIHwgdW5kZWZpbmVkXVxuICA+O1xuICB0cmFja1VzZXJQcm9maWxlSW1hZ2VVcGRhdGVkOiBCdWlsZGVyPFxuICAgIFtVc2VyU25hcHNob3QsIEJ1aWxkZXJUcmlnZ2VyLCBCdWlsZGVyTG9jYXRpb24gfCB1bmRlZmluZWRdXG4gID47XG4gIHRyYWNrVXNlckJhbm5lZDogQnVpbGRlcjxbVXNlclNuYXBzaG90LCBCdWlsZGVyVHJpZ2dlciwgQnVpbGRlckxvY2F0aW9uIHwgdW5kZWZpbmVkXT47XG4gIHRyYWNrVXNlclVuQmFubmVkOiBCdWlsZGVyPFtVc2VyU25hcHNob3QsIEJ1aWxkZXJUcmlnZ2VyLCBCdWlsZGVyTG9jYXRpb24gfCB1bmRlZmluZWRdPjtcbiAgdHJhY2tVc2VyRW1haWxWZXJpZmllZDogQnVpbGRlcjxbVXNlclNuYXBzaG90LCBCdWlsZGVyVHJpZ2dlciwgQnVpbGRlckxvY2F0aW9uIHwgdW5kZWZpbmVkXT47XG59O1xuXG5jb25zdCB1c2VySWRlbnRpdHlEYXRhID0gKHVzZXI6IFVzZXJTbmFwc2hvdCkgPT4gKHtcbiAgdXNlcklkOiB1c2VyLmlkLFxuICB1c2VyRW1haWw6IHVzZXIuZW1haWwsXG4gIHVzZXJOYW1lOiB1c2VyLm5hbWUsXG59KTtcblxuY29uc3QgYnVpbGRVc2VyRXZlbnQgPSAoXG4gIGV2ZW50VHlwZTogc3RyaW5nLFxuICBldmVudERpc3BsYXlOYW1lOiBzdHJpbmcsXG4gIHVzZXI6IFVzZXJTbmFwc2hvdCxcbiAgdHJpZ2dlcjogQnVpbGRlclRyaWdnZXIsXG4gIGxvY2F0aW9uOiBCdWlsZGVyTG9jYXRpb24gfCB1bmRlZmluZWQsXG4gIGV4dHJhPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4pOiBBdWRpdExvZ0V2ZW50ID0+XG4gIGNyZWF0ZUV2ZW50KFxuICAgIHsgZXZlbnRLZXk6IHVzZXIuaWQsIGV2ZW50VHlwZSwgZXZlbnREaXNwbGF5TmFtZSB9LFxuICAgIHsgLi4udXNlcklkZW50aXR5RGF0YSh1c2VyKSwgLi4uZXh0cmEgfSxcbiAgICB0cmlnZ2VyLFxuICAgIGxvY2F0aW9uLFxuICApO1xuXG5jb25zdCBidWlsZFVzZXJFdmVudHMgPSAoKTogVXNlckV2ZW50QnVpbGRlcnMgPT4gKHtcbiAgdHJhY2tVc2VyU2lnbmVkVXA6ICh1c2VyLCB0cmlnZ2VyLCBsb2NhdGlvbikgPT5cbiAgICBidWlsZFVzZXJFdmVudChcbiAgICAgIEVWRU5UX1RZUEVTLlVTRVJfQ1JFQVRFRCxcbiAgICAgIGAke3VzZXIubmFtZSB8fCB1c2VyLmVtYWlsfSBzaWduZWQgdXBgLFxuICAgICAgdXNlcixcbiAgICAgIHRyaWdnZXIsXG4gICAgICBsb2NhdGlvbixcbiAgICApLFxuICB0cmFja1VzZXJEZWxldGVkOiAodXNlciwgdHJpZ2dlciwgbG9jYXRpb24pID0+XG4gICAgYnVpbGRVc2VyRXZlbnQoRVZFTlRfVFlQRVMuVVNFUl9ERUxFVEVELCBcIlVzZXIgZGVsZXRlZFwiLCB1c2VyLCB0cmlnZ2VyLCBsb2NhdGlvbiksXG4gIHRyYWNrVXNlclByb2ZpbGVVcGRhdGVkOiAodXNlciwgdXBkYXRlZEZpZWxkcywgdHJpZ2dlciwgbG9jYXRpb24pID0+XG4gICAgYnVpbGRVc2VyRXZlbnQoRVZFTlRfVFlQRVMuUFJPRklMRV9VUERBVEVELCBcIlByb2ZpbGUgdXBkYXRlZFwiLCB1c2VyLCB0cmlnZ2VyLCBsb2NhdGlvbiwge1xuICAgICAgdXBkYXRlZEZpZWxkcyxcbiAgICB9KSxcbiAgdHJhY2tVc2VyUHJvZmlsZUltYWdlVXBkYXRlZDogKHVzZXIsIHRyaWdnZXIsIGxvY2F0aW9uKSA9PlxuICAgIGJ1aWxkVXNlckV2ZW50KFxuICAgICAgRVZFTlRfVFlQRVMuUFJPRklMRV9JTUFHRV9VUERBVEVELFxuICAgICAgXCJQcm9maWxlIGltYWdlIHVwZGF0ZWRcIixcbiAgICAgIHVzZXIsXG4gICAgICB0cmlnZ2VyLFxuICAgICAgbG9jYXRpb24sXG4gICAgKSxcbiAgdHJhY2tVc2VyQmFubmVkOiAodXNlciwgdHJpZ2dlciwgbG9jYXRpb24pID0+IHtcbiAgICBjb25zdCByZWFzb25TdWZmaXggPSB1c2VyLmJhblJlYXNvbiA/IGA6ICR7dXNlci5iYW5SZWFzb259YCA6IFwiXCI7XG4gICAgY29uc3QgZXhwaXJlc1N1ZmZpeCA9IHVzZXIuYmFuRXhwaXJlcyA/IGAgKHVudGlsICR7dXNlci5iYW5FeHBpcmVzLnRvSVNPU3RyaW5nKCl9KWAgOiBcIlwiO1xuICAgIHJldHVybiBidWlsZFVzZXJFdmVudChcbiAgICAgIEVWRU5UX1RZUEVTLlVTRVJfQkFOTkVELFxuICAgICAgYFVzZXIgYmFubmVkJHtyZWFzb25TdWZmaXh9JHtleHBpcmVzU3VmZml4fWAsXG4gICAgICB1c2VyLFxuICAgICAgdHJpZ2dlcixcbiAgICAgIGxvY2F0aW9uLFxuICAgICAge1xuICAgICAgICBiYW5uZWQ6IHVzZXIuYmFubmVkLFxuICAgICAgICBiYW5SZWFzb246IHVzZXIuYmFuUmVhc29uLFxuICAgICAgICBiYW5FeHBpcmVzOiB1c2VyLmJhbkV4cGlyZXMsXG4gICAgICB9LFxuICAgICk7XG4gIH0sXG4gIHRyYWNrVXNlclVuQmFubmVkOiAodXNlciwgdHJpZ2dlciwgbG9jYXRpb24pID0+XG4gICAgYnVpbGRVc2VyRXZlbnQoRVZFTlRfVFlQRVMuVVNFUl9VTkJBTk5FRCwgXCJVc2VyIHVuYmFubmVkXCIsIHVzZXIsIHRyaWdnZXIsIGxvY2F0aW9uLCB7XG4gICAgICBiYW5uZWQ6IHVzZXIuYmFubmVkLFxuICAgIH0pLFxuICB0cmFja1VzZXJFbWFpbFZlcmlmaWVkOiAodXNlciwgdHJpZ2dlciwgbG9jYXRpb24pID0+XG4gICAgYnVpbGRVc2VyRXZlbnQoRVZFTlRfVFlQRVMuRU1BSUxfVkVSSUZJRUQsIFwiRW1haWwgdmVyaWZpZWRcIiwgdXNlciwgdHJpZ2dlciwgbG9jYXRpb24pLFxufSk7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFZlcmlmaWNhdGlvbiDruYzrjZRcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbmV4cG9ydCB0eXBlIFZlcmlmaWNhdGlvbkV2ZW50QnVpbGRlcnMgPSB7XG4gIHRyYWNrUGFzc3dvcmRSZXNldFJlcXVlc3Q6IEJ1aWxkZXI8XG4gICAgW1ZlcmlmaWNhdGlvblNuYXBzaG90LCBVc2VyUHJvZmlsZUxpdGUsIEJ1aWxkZXJUcmlnZ2VyLCBCdWlsZGVyTG9jYXRpb24gfCB1bmRlZmluZWRdXG4gID47XG4gIHRyYWNrUGFzc3dvcmRSZXNldFJlcXVlc3RDb21wbGV0aW9uOiBCdWlsZGVyPFxuICAgIFtWZXJpZmljYXRpb25TbmFwc2hvdCwgVXNlclByb2ZpbGVMaXRlLCBCdWlsZGVyVHJpZ2dlciwgQnVpbGRlckxvY2F0aW9uIHwgdW5kZWZpbmVkXVxuICA+O1xufTtcblxuY29uc3QgYnVpbGRWZXJpZmljYXRpb25FdmVudCA9IChcbiAgZXZlbnRUeXBlOiBzdHJpbmcsXG4gIGV2ZW50RGlzcGxheU5hbWU6IHN0cmluZyxcbiAgdmVyaWZpY2F0aW9uOiBWZXJpZmljYXRpb25TbmFwc2hvdCxcbiAgdXNlcjogVXNlclByb2ZpbGVMaXRlLFxuICB0cmlnZ2VyOiBCdWlsZGVyVHJpZ2dlcixcbiAgbG9jYXRpb246IEJ1aWxkZXJMb2NhdGlvbiB8IHVuZGVmaW5lZCxcbik6IEF1ZGl0TG9nRXZlbnQgPT5cbiAgY3JlYXRlRXZlbnQoXG4gICAgeyBldmVudEtleTogdmVyaWZpY2F0aW9uLnZhbHVlLCBldmVudFR5cGUsIGV2ZW50RGlzcGxheU5hbWUgfSxcbiAgICB7XG4gICAgICB1c2VySWQ6IHZlcmlmaWNhdGlvbi52YWx1ZSxcbiAgICAgIHVzZXJOYW1lOiB1c2VyPy5uYW1lID8/IFwidW5rbm93blwiLFxuICAgICAgdXNlckVtYWlsOiB1c2VyPy5lbWFpbCA/PyBcInVua25vd25cIixcbiAgICB9LFxuICAgIHRyaWdnZXIsXG4gICAgbG9jYXRpb24sXG4gICk7XG5cbmNvbnN0IGJ1aWxkVmVyaWZpY2F0aW9uRXZlbnRzID0gKCk6IFZlcmlmaWNhdGlvbkV2ZW50QnVpbGRlcnMgPT4gKHtcbiAgdHJhY2tQYXNzd29yZFJlc2V0UmVxdWVzdDogKHZlcmlmaWNhdGlvbiwgdXNlciwgdHJpZ2dlciwgbG9jYXRpb24pID0+XG4gICAgYnVpbGRWZXJpZmljYXRpb25FdmVudChcbiAgICAgIEVWRU5UX1RZUEVTLlBBU1NXT1JEX1JFU0VUX1JFUVVFU1RFRCxcbiAgICAgIFwiUGFzc3dvcmQgcmVzZXQgcmVxdWVzdGVkXCIsXG4gICAgICB2ZXJpZmljYXRpb24sXG4gICAgICB1c2VyLFxuICAgICAgdHJpZ2dlcixcbiAgICAgIGxvY2F0aW9uLFxuICAgICksXG4gIHRyYWNrUGFzc3dvcmRSZXNldFJlcXVlc3RDb21wbGV0aW9uOiAodmVyaWZpY2F0aW9uLCB1c2VyLCB0cmlnZ2VyLCBsb2NhdGlvbikgPT5cbiAgICBidWlsZFZlcmlmaWNhdGlvbkV2ZW50KFxuICAgICAgRVZFTlRfVFlQRVMuUEFTU1dPUkRfUkVTRVRfQ09NUExFVEVELFxuICAgICAgXCJQYXNzd29yZCByZXNldCBjb21wbGV0ZWRcIixcbiAgICAgIHZlcmlmaWNhdGlvbixcbiAgICAgIHVzZXIsXG4gICAgICB0cmlnZ2VyLFxuICAgICAgbG9jYXRpb24sXG4gICAgKSxcbn0pO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBPcmdhbml6YXRpb24gLyBUZWFtIC8gTWVtYmVyIC8gSW52aXRhdGlvbiDruYzrjZRcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbmNvbnN0IG9yZ2FuaXphdGlvbklkZW50aXR5RGF0YSA9IChvcmdhbml6YXRpb246IE9yZ2FuaXphdGlvblNuYXBzaG90KSA9PiAoe1xuICBvcmdhbml6YXRpb25JZDogb3JnYW5pemF0aW9uLmlkLFxuICBvcmdhbml6YXRpb25TbHVnOiBvcmdhbml6YXRpb24uc2x1ZyxcbiAgb3JnYW5pemF0aW9uTmFtZTogb3JnYW5pemF0aW9uLm5hbWUsXG59KTtcblxuZXhwb3J0IHR5cGUgT3JnYW5pemF0aW9uRXZlbnRCdWlsZGVycyA9IHtcbiAgdHJhY2tPcmdhbml6YXRpb25DcmVhdGVkOiBCdWlsZGVyPFtPcmdhbml6YXRpb25TbmFwc2hvdCwgQnVpbGRlclRyaWdnZXJdPjtcbiAgdHJhY2tPcmdhbml6YXRpb25VcGRhdGVkOiBCdWlsZGVyPFtPcmdhbml6YXRpb25TbmFwc2hvdCwgQnVpbGRlclRyaWdnZXJdPjtcbn07XG5cbmNvbnN0IGJ1aWxkT3JnYW5pemF0aW9uRXZlbnQgPSAoXG4gIGV2ZW50VHlwZTogc3RyaW5nLFxuICBldmVudERpc3BsYXlOYW1lOiBzdHJpbmcsXG4gIG9yZ2FuaXphdGlvbjogT3JnYW5pemF0aW9uU25hcHNob3QsXG4gIHRyaWdnZXI6IEJ1aWxkZXJUcmlnZ2VyLFxuKTogQXVkaXRMb2dFdmVudCA9PlxuICBjcmVhdGVFdmVudChcbiAgICB7IGV2ZW50S2V5OiBvcmdhbml6YXRpb24uaWQsIGV2ZW50VHlwZSwgZXZlbnREaXNwbGF5TmFtZSB9LFxuICAgIG9yZ2FuaXphdGlvbklkZW50aXR5RGF0YShvcmdhbml6YXRpb24pLFxuICAgIHRyaWdnZXIsXG4gICk7XG5cbmNvbnN0IGJ1aWxkT3JnYW5pemF0aW9uRXZlbnRzID0gKCk6IE9yZ2FuaXphdGlvbkV2ZW50QnVpbGRlcnMgPT4gKHtcbiAgdHJhY2tPcmdhbml6YXRpb25DcmVhdGVkOiAob3JnYW5pemF0aW9uLCB0cmlnZ2VyKSA9PlxuICAgIGJ1aWxkT3JnYW5pemF0aW9uRXZlbnQoXG4gICAgICBPUkdBTklaQVRJT05fRVZFTlRfVFlQRVMuT1JHQU5JWkFUSU9OX0NSRUFURUQsXG4gICAgICBcIk9yZ2FuaXphdGlvbiBDcmVhdGVkXCIsXG4gICAgICBvcmdhbml6YXRpb24sXG4gICAgICB0cmlnZ2VyLFxuICAgICksXG4gIHRyYWNrT3JnYW5pemF0aW9uVXBkYXRlZDogKG9yZ2FuaXphdGlvbiwgdHJpZ2dlcikgPT5cbiAgICBidWlsZE9yZ2FuaXphdGlvbkV2ZW50KFxuICAgICAgT1JHQU5JWkFUSU9OX0VWRU5UX1RZUEVTLk9SR0FOSVpBVElPTl9VUERBVEVELFxuICAgICAgXCJPcmdhbml6YXRpb24gVXBkYXRlZFwiLFxuICAgICAgb3JnYW5pemF0aW9uLFxuICAgICAgdHJpZ2dlcixcbiAgICApLFxufSk7XG5cbmV4cG9ydCB0eXBlIFRlYW1FdmVudEJ1aWxkZXJzID0ge1xuICB0cmFja09yZ2FuaXphdGlvblRlYW1DcmVhdGVkOiBCdWlsZGVyPFtPcmdhbml6YXRpb25TbmFwc2hvdCwgVGVhbVNuYXBzaG90LCBCdWlsZGVyVHJpZ2dlcl0+O1xuICB0cmFja09yZ2FuaXphdGlvblRlYW1VcGRhdGVkOiBCdWlsZGVyPFtPcmdhbml6YXRpb25TbmFwc2hvdCwgVGVhbVNuYXBzaG90LCBCdWlsZGVyVHJpZ2dlcl0+O1xuICB0cmFja09yZ2FuaXphdGlvblRlYW1EZWxldGVkOiBCdWlsZGVyPFtPcmdhbml6YXRpb25TbmFwc2hvdCwgVGVhbVNuYXBzaG90LCBCdWlsZGVyVHJpZ2dlcl0+O1xuICB0cmFja09yZ2FuaXphdGlvblRlYW1NZW1iZXJBZGRlZDogQnVpbGRlcjxcbiAgICBbXG4gICAgICBPcmdhbml6YXRpb25TbmFwc2hvdCxcbiAgICAgIFRlYW1TbmFwc2hvdCxcbiAgICAgIFVzZXJTbmFwc2hvdCxcbiAgICAgIHsgdGVhbUlkOiBzdHJpbmc7IHVzZXJJZDogc3RyaW5nIH0sXG4gICAgICBCdWlsZGVyVHJpZ2dlcixcbiAgICBdXG4gID47XG4gIHRyYWNrT3JnYW5pemF0aW9uVGVhbU1lbWJlclJlbW92ZWQ6IEJ1aWxkZXI8XG4gICAgW1xuICAgICAgT3JnYW5pemF0aW9uU25hcHNob3QsXG4gICAgICBUZWFtU25hcHNob3QsXG4gICAgICBVc2VyU25hcHNob3QsXG4gICAgICB7IHRlYW1JZDogc3RyaW5nOyB1c2VySWQ6IHN0cmluZyB9LFxuICAgICAgQnVpbGRlclRyaWdnZXIsXG4gICAgXVxuICA+O1xufTtcblxuY29uc3QgYnVpbGRUZWFtTGlmZWN5Y2xlRXZlbnQgPSAoXG4gIGV2ZW50VHlwZTogc3RyaW5nLFxuICBldmVudERpc3BsYXlOYW1lOiBzdHJpbmcsXG4gIG9yZ2FuaXphdGlvbjogT3JnYW5pemF0aW9uU25hcHNob3QsXG4gIHRlYW06IFRlYW1TbmFwc2hvdCxcbiAgdHJpZ2dlcjogQnVpbGRlclRyaWdnZXIsXG4pOiBBdWRpdExvZ0V2ZW50ID0+XG4gIGNyZWF0ZUV2ZW50KFxuICAgIHsgZXZlbnRLZXk6IG9yZ2FuaXphdGlvbi5pZCwgZXZlbnRUeXBlLCBldmVudERpc3BsYXlOYW1lIH0sXG4gICAgeyAuLi5vcmdhbml6YXRpb25JZGVudGl0eURhdGEob3JnYW5pemF0aW9uKSwgdGVhbUlkOiB0ZWFtLmlkLCB0ZWFtTmFtZTogdGVhbS5uYW1lIH0sXG4gICAgdHJpZ2dlcixcbiAgKTtcblxuY29uc3QgYnVpbGRUZWFtTWVtYmVyRXZlbnQgPSAoXG4gIGV2ZW50VHlwZTogc3RyaW5nLFxuICBldmVudERpc3BsYXlOYW1lOiBzdHJpbmcsXG4gIG9yZ2FuaXphdGlvbjogT3JnYW5pemF0aW9uU25hcHNob3QsXG4gIHRlYW06IFRlYW1TbmFwc2hvdCxcbiAgdXNlcjogVXNlclNuYXBzaG90LFxuICB0ZWFtTWVtYmVyOiB7IHRlYW1JZDogc3RyaW5nOyB1c2VySWQ6IHN0cmluZyB9LFxuICB0cmlnZ2VyOiBCdWlsZGVyVHJpZ2dlcixcbik6IEF1ZGl0TG9nRXZlbnQgPT5cbiAgY3JlYXRlRXZlbnQoXG4gICAgeyBldmVudEtleTogb3JnYW5pemF0aW9uLmlkLCBldmVudFR5cGUsIGV2ZW50RGlzcGxheU5hbWUgfSxcbiAgICB7XG4gICAgICAuLi5vcmdhbml6YXRpb25JZGVudGl0eURhdGEob3JnYW5pemF0aW9uKSxcbiAgICAgIHRlYW1JZDogdGVhbU1lbWJlci50ZWFtSWQsXG4gICAgICB0ZWFtTmFtZTogdGVhbS5uYW1lLFxuICAgICAgdXNlcmlkOiB0ZWFtTWVtYmVyLnVzZXJJZCxcbiAgICAgIG1lbWJlck5hbWU6IHVzZXIubmFtZSxcbiAgICB9LFxuICAgIHRyaWdnZXIsXG4gICk7XG5cbmNvbnN0IGJ1aWxkVGVhbUV2ZW50cyA9ICgpOiBUZWFtRXZlbnRCdWlsZGVycyA9PiAoe1xuICB0cmFja09yZ2FuaXphdGlvblRlYW1DcmVhdGVkOiAob3JnYW5pemF0aW9uLCB0ZWFtLCB0cmlnZ2VyKSA9PlxuICAgIGJ1aWxkVGVhbUxpZmVjeWNsZUV2ZW50KFxuICAgICAgT1JHQU5JWkFUSU9OX0VWRU5UX1RZUEVTLk9SR0FOSVpBVElPTl9URUFNX0NSRUFURUQsXG4gICAgICBcIk9yZ2FuaXphdGlvbiB0ZWFtIGNyZWF0ZWRcIixcbiAgICAgIG9yZ2FuaXphdGlvbixcbiAgICAgIHRlYW0sXG4gICAgICB0cmlnZ2VyLFxuICAgICksXG4gIHRyYWNrT3JnYW5pemF0aW9uVGVhbVVwZGF0ZWQ6IChvcmdhbml6YXRpb24sIHRlYW0sIHRyaWdnZXIpID0+XG4gICAgYnVpbGRUZWFtTGlmZWN5Y2xlRXZlbnQoXG4gICAgICBPUkdBTklaQVRJT05fRVZFTlRfVFlQRVMuT1JHQU5JWkFUSU9OX1RFQU1fVVBEQVRFRCxcbiAgICAgIFwiT3JnYW5pemF0aW9uIHRlYW0gdXBkYXRlZFwiLFxuICAgICAgb3JnYW5pemF0aW9uLFxuICAgICAgdGVhbSxcbiAgICAgIHRyaWdnZXIsXG4gICAgKSxcbiAgdHJhY2tPcmdhbml6YXRpb25UZWFtRGVsZXRlZDogKG9yZ2FuaXphdGlvbiwgdGVhbSwgdHJpZ2dlcikgPT5cbiAgICBidWlsZFRlYW1MaWZlY3ljbGVFdmVudChcbiAgICAgIE9SR0FOSVpBVElPTl9FVkVOVF9UWVBFUy5PUkdBTklaQVRJT05fVEVBTV9ERUxFVEVELFxuICAgICAgXCJPcmdhbml6YXRpb24gdGVhbSBkZWxldGVkXCIsXG4gICAgICBvcmdhbml6YXRpb24sXG4gICAgICB0ZWFtLFxuICAgICAgdHJpZ2dlcixcbiAgICApLFxuICB0cmFja09yZ2FuaXphdGlvblRlYW1NZW1iZXJBZGRlZDogKG9yZ2FuaXphdGlvbiwgdGVhbSwgdXNlciwgdGVhbU1lbWJlciwgdHJpZ2dlcikgPT5cbiAgICBidWlsZFRlYW1NZW1iZXJFdmVudChcbiAgICAgIE9SR0FOSVpBVElPTl9FVkVOVF9UWVBFUy5PUkdBTklaQVRJT05fVEVBTV9NRU1CRVJfQURERUQsXG4gICAgICBcIlVzZXIgYWRkZWQgdG8gb3JnYW5pemF0aW9uIHRlYW1cIixcbiAgICAgIG9yZ2FuaXphdGlvbixcbiAgICAgIHRlYW0sXG4gICAgICB1c2VyLFxuICAgICAgdGVhbU1lbWJlcixcbiAgICAgIHRyaWdnZXIsXG4gICAgKSxcbiAgdHJhY2tPcmdhbml6YXRpb25UZWFtTWVtYmVyUmVtb3ZlZDogKG9yZ2FuaXphdGlvbiwgdGVhbSwgdXNlciwgdGVhbU1lbWJlciwgdHJpZ2dlcikgPT5cbiAgICBidWlsZFRlYW1NZW1iZXJFdmVudChcbiAgICAgIE9SR0FOSVpBVElPTl9FVkVOVF9UWVBFUy5PUkdBTklaQVRJT05fVEVBTV9NRU1CRVJfUkVNT1ZFRCxcbiAgICAgIFwiVXNlciByZW1vdmVkIGZyb20gb3JnYW5pemF0aW9uIHRlYW1cIixcbiAgICAgIG9yZ2FuaXphdGlvbixcbiAgICAgIHRlYW0sXG4gICAgICB1c2VyLFxuICAgICAgdGVhbU1lbWJlcixcbiAgICAgIHRyaWdnZXIsXG4gICAgKSxcbn0pO1xuXG5leHBvcnQgdHlwZSBNZW1iZXJFdmVudEJ1aWxkZXJzID0ge1xuICB0cmFja09yZ2FuaXphdGlvbk1lbWJlckFkZGVkOiBCdWlsZGVyPFxuICAgIFtPcmdhbml6YXRpb25TbmFwc2hvdCwgTWVtYmVyU25hcHNob3QsIFVzZXJTbmFwc2hvdCwgQnVpbGRlclRyaWdnZXJdXG4gID47XG4gIHRyYWNrT3JnYW5pemF0aW9uTWVtYmVyUmVtb3ZlZDogQnVpbGRlcjxcbiAgICBbT3JnYW5pemF0aW9uU25hcHNob3QsIE1lbWJlclNuYXBzaG90LCBVc2VyU25hcHNob3QsIEJ1aWxkZXJUcmlnZ2VyXVxuICA+O1xuICB0cmFja09yZ2FuaXphdGlvbk1lbWJlclJvbGVVcGRhdGVkOiBCdWlsZGVyPFxuICAgIFtPcmdhbml6YXRpb25TbmFwc2hvdCwgTWVtYmVyU25hcHNob3QsIFVzZXJTbmFwc2hvdCwgc3RyaW5nLCBCdWlsZGVyVHJpZ2dlcl1cbiAgPjtcbn07XG5cbmNvbnN0IG1lbWJlckNvcmVEYXRhID0gKG1lbWJlcjogTWVtYmVyU25hcHNob3QsIHVzZXI6IFVzZXJTbmFwc2hvdCkgPT4gKHtcbiAgdXNlcklkOiBtZW1iZXIudXNlcklkLFxuICBtZW1iZXJOYW1lOiB1c2VyLm5hbWUsXG4gIHJvbGU6IG1lbWJlci5yb2xlLFxuICBtZW1iZXJJZDogbWVtYmVyLmlkLFxuICBtZW1iZXJFbWFpbDogdXNlci5lbWFpbCxcbn0pO1xuXG5jb25zdCBidWlsZE1lbWJlckV2ZW50cyA9ICgpOiBNZW1iZXJFdmVudEJ1aWxkZXJzID0+ICh7XG4gIHRyYWNrT3JnYW5pemF0aW9uTWVtYmVyQWRkZWQ6IChvcmdhbml6YXRpb24sIG1lbWJlciwgdXNlciwgdHJpZ2dlcikgPT5cbiAgICBjcmVhdGVFdmVudChcbiAgICAgIHtcbiAgICAgICAgZXZlbnRLZXk6IG9yZ2FuaXphdGlvbi5pZCxcbiAgICAgICAgZXZlbnRUeXBlOiBPUkdBTklaQVRJT05fRVZFTlRfVFlQRVMuT1JHQU5JWkFUSU9OX01FTUJFUl9BRERFRCxcbiAgICAgICAgZXZlbnREaXNwbGF5TmFtZTogXCJNZW1iZXIgYWRkZWQgdG8gb3JnYW5pemF0aW9uXCIsXG4gICAgICB9LFxuICAgICAgeyAuLi5vcmdhbml6YXRpb25JZGVudGl0eURhdGEob3JnYW5pemF0aW9uKSwgLi4ubWVtYmVyQ29yZURhdGEobWVtYmVyLCB1c2VyKSB9LFxuICAgICAgdHJpZ2dlcixcbiAgICApLFxuICB0cmFja09yZ2FuaXphdGlvbk1lbWJlclJlbW92ZWQ6IChvcmdhbml6YXRpb24sIG1lbWJlciwgdXNlciwgdHJpZ2dlcikgPT5cbiAgICBjcmVhdGVFdmVudChcbiAgICAgIHtcbiAgICAgICAgZXZlbnRLZXk6IG9yZ2FuaXphdGlvbi5pZCxcbiAgICAgICAgZXZlbnRUeXBlOiBPUkdBTklaQVRJT05fRVZFTlRfVFlQRVMuT1JHQU5JWkFUSU9OX01FTUJFUl9SRU1PVkVELFxuICAgICAgICBldmVudERpc3BsYXlOYW1lOiBcIk1lbWJlciByZW1vdmVkIGZyb20gb3JnYW5pemF0aW9uXCIsXG4gICAgICB9LFxuICAgICAgeyAuLi5vcmdhbml6YXRpb25JZGVudGl0eURhdGEob3JnYW5pemF0aW9uKSwgLi4ubWVtYmVyQ29yZURhdGEobWVtYmVyLCB1c2VyKSB9LFxuICAgICAgdHJpZ2dlcixcbiAgICApLFxuICB0cmFja09yZ2FuaXphdGlvbk1lbWJlclJvbGVVcGRhdGVkOiAob3JnYW5pemF0aW9uLCBtZW1iZXIsIHVzZXIsIHByZXZpb3VzUm9sZSwgdHJpZ2dlcikgPT5cbiAgICBjcmVhdGVFdmVudChcbiAgICAgIHtcbiAgICAgICAgZXZlbnRLZXk6IG9yZ2FuaXphdGlvbi5pZCxcbiAgICAgICAgZXZlbnRUeXBlOiBPUkdBTklaQVRJT05fRVZFTlRfVFlQRVMuT1JHQU5JWkFUSU9OX01FTUJFUl9ST0xFX1VQREFURUQsXG4gICAgICAgIGV2ZW50RGlzcGxheU5hbWU6IFwiT3JnYW5pemF0aW9uIG1lbWJlciByb2xlIHVwZGF0ZWRcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC4uLm9yZ2FuaXphdGlvbklkZW50aXR5RGF0YShvcmdhbml6YXRpb24pLFxuICAgICAgICB1c2VySWQ6IG1lbWJlci51c2VySWQsXG4gICAgICAgIG1lbWJlck5hbWU6IHVzZXIubmFtZSxcbiAgICAgICAgbmV3Um9sZTogbWVtYmVyLnJvbGUsXG4gICAgICAgIG9sZFJvbGU6IHByZXZpb3VzUm9sZSxcbiAgICAgICAgbWVtYmVySWQ6IG1lbWJlci5pZCxcbiAgICAgICAgbWVtYmVyRW1haWw6IHVzZXIuZW1haWwsXG4gICAgICB9LFxuICAgICAgdHJpZ2dlcixcbiAgICApLFxufSk7XG5cbmV4cG9ydCB0eXBlIEludml0YXRpb25FdmVudEJ1aWxkZXJzID0ge1xuICB0cmFja09yZ2FuaXphdGlvbk1lbWJlckludml0ZWQ6IEJ1aWxkZXI8XG4gICAgW09yZ2FuaXphdGlvblNuYXBzaG90LCBJbnZpdGF0aW9uU25hcHNob3QsIFVzZXJTbmFwc2hvdCwgQnVpbGRlclRyaWdnZXJdXG4gID47XG4gIHRyYWNrT3JnYW5pemF0aW9uTWVtYmVySW52aXRlQWNjZXB0ZWQ6IEJ1aWxkZXI8XG4gICAgW09yZ2FuaXphdGlvblNuYXBzaG90LCBJbnZpdGF0aW9uU25hcHNob3QsIE1lbWJlclNuYXBzaG90LCBVc2VyU25hcHNob3QsIEJ1aWxkZXJUcmlnZ2VyXVxuICA+O1xuICB0cmFja09yZ2FuaXphdGlvbk1lbWJlckludml0ZVJlamVjdGVkOiBCdWlsZGVyPFxuICAgIFtPcmdhbml6YXRpb25TbmFwc2hvdCwgSW52aXRhdGlvblNuYXBzaG90LCBVc2VyU25hcHNob3QsIEJ1aWxkZXJUcmlnZ2VyXVxuICA+O1xuICB0cmFja09yZ2FuaXphdGlvbk1lbWJlckludml0ZUNhbmNlbGVkOiBCdWlsZGVyPFxuICAgIFtPcmdhbml6YXRpb25TbmFwc2hvdCwgSW52aXRhdGlvblNuYXBzaG90LCBVc2VyU25hcHNob3QsIEJ1aWxkZXJUcmlnZ2VyXVxuICA+O1xufTtcblxuY29uc3QgaW52aXRlZURhdGEgPSAoaW52aXRhdGlvbjogSW52aXRhdGlvblNuYXBzaG90KSA9PiAoe1xuICBpbnZpdGVlSWQ6IGludml0YXRpb24uaWQsXG4gIGludml0ZWVFbWFpbDogaW52aXRhdGlvbi5lbWFpbCxcbiAgaW52aXRlZVJvbGU6IGludml0YXRpb24ucm9sZSxcbiAgaW52aXRlZVRlYW1JZDogaW52aXRhdGlvbi50ZWFtSWQsXG59KTtcblxuY29uc3QgYnVpbGRJbnZpdGF0aW9uRXZlbnRzID0gKCk6IEludml0YXRpb25FdmVudEJ1aWxkZXJzID0+ICh7XG4gIHRyYWNrT3JnYW5pemF0aW9uTWVtYmVySW52aXRlZDogKG9yZ2FuaXphdGlvbiwgaW52aXRhdGlvbiwgaW52aXRlciwgdHJpZ2dlcikgPT5cbiAgICBjcmVhdGVFdmVudChcbiAgICAgIHtcbiAgICAgICAgZXZlbnRLZXk6IG9yZ2FuaXphdGlvbi5pZCxcbiAgICAgICAgZXZlbnRUeXBlOiBPUkdBTklaQVRJT05fRVZFTlRfVFlQRVMuT1JHQU5JWkFUSU9OX01FTUJFUl9JTlZJVEVELFxuICAgICAgICBldmVudERpc3BsYXlOYW1lOiBcIlVzZXIgaW52aXRlZCB0byBvcmdhbml6YXRpb25cIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC4uLm9yZ2FuaXphdGlvbklkZW50aXR5RGF0YShvcmdhbml6YXRpb24pLFxuICAgICAgICAuLi5pbnZpdGVlRGF0YShpbnZpdGF0aW9uKSxcbiAgICAgICAgaW52aXRlcklkOiBpbnZpdGVyLmlkLFxuICAgICAgICBpbnZpdGVyTmFtZTogaW52aXRlci5uYW1lLFxuICAgICAgICBpbnZpdGVyRW1haWw6IGludml0ZXIuZW1haWwsXG4gICAgICB9LFxuICAgICAgdHJpZ2dlcixcbiAgICApLFxuICB0cmFja09yZ2FuaXphdGlvbk1lbWJlckludml0ZUFjY2VwdGVkOiAob3JnYW5pemF0aW9uLCBpbnZpdGF0aW9uLCBtZW1iZXIsIGFjY2VwdGVkQnksIHRyaWdnZXIpID0+XG4gICAgY3JlYXRlRXZlbnQoXG4gICAgICB7XG4gICAgICAgIGV2ZW50S2V5OiBvcmdhbml6YXRpb24uaWQsXG4gICAgICAgIGV2ZW50VHlwZTogT1JHQU5JWkFUSU9OX0VWRU5UX1RZUEVTLk9SR0FOSVpBVElPTl9NRU1CRVJfSU5WSVRFX0FDQ0VQVEVELFxuICAgICAgICBldmVudERpc3BsYXlOYW1lOiBcIlVzZXIgYWNjZXB0ZWQgaW52aXRlIG9yZ2FuaXphdGlvbiBpbnZpdGVcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC4uLm9yZ2FuaXphdGlvbklkZW50aXR5RGF0YShvcmdhbml6YXRpb24pLFxuICAgICAgICAuLi5pbnZpdGVlRGF0YShpbnZpdGF0aW9uKSxcbiAgICAgICAgYWNjZXB0ZWRCeUlkOiBhY2NlcHRlZEJ5LmlkLFxuICAgICAgICBhY2NlcHRlZEJ5RW1haWw6IGFjY2VwdGVkQnkuZW1haWwsXG4gICAgICAgIGFjY2VwdGVkQnlOYW1lOiBhY2NlcHRlZEJ5Lm5hbWUsXG4gICAgICAgIG1lbWJlcklkOiBtZW1iZXIuaWQsXG4gICAgICAgIG1lbWJlclJvbGU6IG1lbWJlci5yb2xlLFxuICAgICAgfSxcbiAgICAgIHRyaWdnZXIsXG4gICAgKSxcbiAgdHJhY2tPcmdhbml6YXRpb25NZW1iZXJJbnZpdGVSZWplY3RlZDogKG9yZ2FuaXphdGlvbiwgaW52aXRhdGlvbiwgcmVqZWN0ZWRCeSwgdHJpZ2dlcikgPT5cbiAgICBjcmVhdGVFdmVudChcbiAgICAgIHtcbiAgICAgICAgZXZlbnRLZXk6IG9yZ2FuaXphdGlvbi5pZCxcbiAgICAgICAgZXZlbnRUeXBlOiBPUkdBTklaQVRJT05fRVZFTlRfVFlQRVMuT1JHQU5JWkFUSU9OX01FTUJFUl9JTlZJVEVfUkVKRUNURUQsXG4gICAgICAgIGV2ZW50RGlzcGxheU5hbWU6IFwiVXNlciByZWplY3RlZCBvcmdhbml6YXRpb24gaW52aXRlXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICAuLi5vcmdhbml6YXRpb25JZGVudGl0eURhdGEob3JnYW5pemF0aW9uKSxcbiAgICAgICAgLi4uaW52aXRlZURhdGEoaW52aXRhdGlvbiksXG4gICAgICAgIHJlamVjdGVkQnlJZDogcmVqZWN0ZWRCeS5pZCxcbiAgICAgICAgcmVqZWN0ZWRCeUVtYWlsOiByZWplY3RlZEJ5LmVtYWlsLFxuICAgICAgICByZWplY3RlZEJ5TmFtZTogcmVqZWN0ZWRCeS5uYW1lLFxuICAgICAgfSxcbiAgICAgIHRyaWdnZXIsXG4gICAgKSxcbiAgdHJhY2tPcmdhbml6YXRpb25NZW1iZXJJbnZpdGVDYW5jZWxlZDogKG9yZ2FuaXphdGlvbiwgaW52aXRhdGlvbiwgY2FuY2VsbGVkQnksIHRyaWdnZXIpID0+XG4gICAgY3JlYXRlRXZlbnQoXG4gICAgICB7XG4gICAgICAgIGV2ZW50S2V5OiBvcmdhbml6YXRpb24uaWQsXG4gICAgICAgIGV2ZW50VHlwZTogT1JHQU5JWkFUSU9OX0VWRU5UX1RZUEVTLk9SR0FOSVpBVElPTl9NRU1CRVJfSU5WSVRFX0NBTkNFTEVELFxuICAgICAgICBldmVudERpc3BsYXlOYW1lOiBcIk9yZ2FuaXphdGlvbiBpbnZpdGUgY2FuY2VsbGVkXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICAuLi5vcmdhbml6YXRpb25JZGVudGl0eURhdGEob3JnYW5pemF0aW9uKSxcbiAgICAgICAgLi4uaW52aXRlZURhdGEoaW52aXRhdGlvbiksXG4gICAgICAgIGNhbmNlbGxlZEJ5SWQ6IGNhbmNlbGxlZEJ5LmlkLFxuICAgICAgICBjYW5jZWxsZWRCeU5hbWU6IGNhbmNlbGxlZEJ5Lm5hbWUsXG4gICAgICAgIGNhbmNlbGxlZEJ5RW1haWw6IGNhbmNlbGxlZEJ5LmVtYWlsLFxuICAgICAgfSxcbiAgICAgIHRyaWdnZXIsXG4gICAgKSxcbn0pO1xuXG4vLyBUT0RPKHNlY3VyaXR5KTogc29uYW11LmNvbmZpZ+ydmCBzZWN1cml0eSDsmLXshZjsnbQg64+E7J6F65CY66m0XG4vLyBTZWN1cml0eUV2ZW50QnVpbGRlcnMgKHRyYWNrU2VjdXJpdHlCbG9ja2VkL0FsbG93ZWQvQ2hhbGxlbmdlZC9TdGFsZUFjY291bnQpIOyEueyFmOydhCDstpTqsIDtlZzri6QuXG4vLyBkYXNo7J2YIGNyZWF0ZVNlY3VyaXR5Q2xpZW50L29uU2VjdXJpdHlFdmVudCDqtaztmITsnYAg7ZiE7J6sIHNjb3BlIG91dCAoUjEpLlxuXG5leHBvcnQgdHlwZSBBdWRpdEV2ZW50QnVpbGRlckNhdGFsb2cgPSB7XG4gIGFjY291bnQ6IEFjY291bnRFdmVudEJ1aWxkZXJzO1xuICBzZXNzaW9uOiBTZXNzaW9uRXZlbnRCdWlsZGVycztcbiAgdXNlcjogVXNlckV2ZW50QnVpbGRlcnM7XG4gIHZlcmlmaWNhdGlvbjogVmVyaWZpY2F0aW9uRXZlbnRCdWlsZGVycztcbiAgb3JnYW5pemF0aW9uOiBPcmdhbml6YXRpb25FdmVudEJ1aWxkZXJzO1xuICB0ZWFtOiBUZWFtRXZlbnRCdWlsZGVycztcbiAgbWVtYmVyOiBNZW1iZXJFdmVudEJ1aWxkZXJzO1xuICBpbnZpdGF0aW9uOiBJbnZpdGF0aW9uRXZlbnRCdWlsZGVycztcbn07XG5cbmV4cG9ydCBjb25zdCBidWlsZEF1ZGl0RXZlbnRDYXRhbG9nID0gKCk6IEF1ZGl0RXZlbnRCdWlsZGVyQ2F0YWxvZyA9PiAoe1xuICBhY2NvdW50OiBidWlsZEFjY291bnRFdmVudHMoKSxcbiAgc2Vzc2lvbjogYnVpbGRTZXNzaW9uRXZlbnRzKCksXG4gIHVzZXI6IGJ1aWxkVXNlckV2ZW50cygpLFxuICB2ZXJpZmljYXRpb246IGJ1aWxkVmVyaWZpY2F0aW9uRXZlbnRzKCksXG4gIG9yZ2FuaXphdGlvbjogYnVpbGRPcmdhbml6YXRpb25FdmVudHMoKSxcbiAgdGVhbTogYnVpbGRUZWFtRXZlbnRzKCksXG4gIG1lbWJlcjogYnVpbGRNZW1iZXJFdmVudHMoKSxcbiAgaW52aXRhdGlvbjogYnVpbGRJbnZpdGF0aW9uRXZlbnRzKCksXG59KTtcbiJdLCJtYXBwaW5ncyI6Ijs7O0FBcUJBLE1BQU0sZUFDSixNQUNBLE1BQ0EsU0FDQSxjQUNtQjtDQUNuQixHQUFHO0NBQ0gsU0FBUyxXQUFXO0NBQ3BCLFdBQVc7RUFDVCxHQUFHO0VBQ0gsYUFBYSxRQUFRO0VBQ3JCLGdCQUFnQixRQUFRO0NBQzFCO0NBQ0EsV0FBVyxVQUFVO0NB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
@@ -0,0 +1,3 @@
1
+ export declare function replaceClientIpHeaders(headers: Headers, clientIp: string, configuredHeaders?: readonly string[]): void;
2
+ export declare function getValidClientIp(value: unknown): string | null;
3
+ //# sourceMappingURL=client-ip.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client-ip.d.ts","sourceRoot":"","sources":["../../../src/auth/audit-log/client-ip.ts"],"names":[],"mappings":"AAWA,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,MAAM,EAChB,iBAAiB,GAAE,SAAS,MAAM,EAAO,GACxC,IAAI,CAcN;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAM9D"}
@@ -0,0 +1,27 @@
1
+ import { __esmMin } from "../../_virtual/_rolldown/runtime.js";
2
+ import { isIP } from "node:net";
3
+ //#region src/auth/audit-log/client-ip.ts
4
+ function replaceClientIpHeaders(headers, clientIp, configuredHeaders = []) {
5
+ const candidates = new Set([...CLIENT_IP_HEADERS, ...configuredHeaders].map((header) => header.trim().toLowerCase()).filter((header) => HEADER_NAME_PATTERN.test(header)));
6
+ for (const header of candidates) headers.delete(header);
7
+ for (const header of candidates) headers.set(header, clientIp);
8
+ }
9
+ function getValidClientIp(value) {
10
+ if (typeof value !== "string" || value.length > 45 || isIP(value) === 0) return null;
11
+ return value;
12
+ }
13
+ var CLIENT_IP_HEADERS, HEADER_NAME_PATTERN;
14
+ var init_client_ip = __esmMin((() => {
15
+ CLIENT_IP_HEADERS = [
16
+ "cf-connecting-ip",
17
+ "x-forwarded-for",
18
+ "x-real-ip",
19
+ "x-vercel-forwarded-for"
20
+ ];
21
+ HEADER_NAME_PATTERN = /^[!#$%&'*+\-.^_`|~0-9A-Za-z]+$/;
22
+ }));
23
+ //#endregion
24
+ init_client_ip();
25
+ export { getValidClientIp, init_client_ip, replaceClientIpHeaders };
26
+
27
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LWlwLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hdXRoL2F1ZGl0LWxvZy9jbGllbnQtaXAudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNJUCB9IGZyb20gXCJub2RlOm5ldFwiO1xuXG5jb25zdCBDTElFTlRfSVBfSEVBREVSUyA9IFtcbiAgXCJjZi1jb25uZWN0aW5nLWlwXCIsXG4gIFwieC1mb3J3YXJkZWQtZm9yXCIsXG4gIFwieC1yZWFsLWlwXCIsXG4gIFwieC12ZXJjZWwtZm9yd2FyZGVkLWZvclwiLFxuXSBhcyBjb25zdDtcblxuY29uc3QgSEVBREVSX05BTUVfUEFUVEVSTiA9IC9eWyEjJCUmJyorXFwtLl5fYHx+MC05QS1aYS16XSskLztcblxuZXhwb3J0IGZ1bmN0aW9uIHJlcGxhY2VDbGllbnRJcEhlYWRlcnMoXG4gIGhlYWRlcnM6IEhlYWRlcnMsXG4gIGNsaWVudElwOiBzdHJpbmcsXG4gIGNvbmZpZ3VyZWRIZWFkZXJzOiByZWFkb25seSBzdHJpbmdbXSA9IFtdLFxuKTogdm9pZCB7XG4gIGNvbnN0IGNhbmRpZGF0ZXMgPSBuZXcgU2V0KFxuICAgIFsuLi5DTElFTlRfSVBfSEVBREVSUywgLi4uY29uZmlndXJlZEhlYWRlcnNdXG4gICAgICAubWFwKChoZWFkZXIpID0+IGhlYWRlci50cmltKCkudG9Mb3dlckNhc2UoKSlcbiAgICAgIC5maWx0ZXIoKGhlYWRlcikgPT4gSEVBREVSX05BTUVfUEFUVEVSTi50ZXN0KGhlYWRlcikpLFxuICApO1xuXG4gIGZvciAoY29uc3QgaGVhZGVyIG9mIGNhbmRpZGF0ZXMpIHtcbiAgICBoZWFkZXJzLmRlbGV0ZShoZWFkZXIpO1xuICB9XG5cbiAgZm9yIChjb25zdCBoZWFkZXIgb2YgY2FuZGlkYXRlcykge1xuICAgIGhlYWRlcnMuc2V0KGhlYWRlciwgY2xpZW50SXApO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRWYWxpZENsaWVudElwKHZhbHVlOiB1bmtub3duKTogc3RyaW5nIHwgbnVsbCB7XG4gIGlmICh0eXBlb2YgdmFsdWUgIT09IFwic3RyaW5nXCIgfHwgdmFsdWUubGVuZ3RoID4gNDUgfHwgaXNJUCh2YWx1ZSkgPT09IDApIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJldHVybiB2YWx1ZTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7O0FBV0EsU0FBZ0IsdUJBQ2QsU0FDQSxVQUNBLG9CQUF1QyxDQUFDLEdBQ2xDO0NBQ04sTUFBTSxhQUFhLElBQUksSUFDckIsQ0FBQyxHQUFHLG1CQUFtQixHQUFHLGlCQUFpQixDQUFDLENBQ3pDLEtBQUssV0FBVyxPQUFPLEtBQUssQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQzVDLFFBQVEsV0FBVyxvQkFBb0IsS0FBSyxNQUFNLENBQUMsQ0FDeEQ7Q0FFQSxLQUFLLE1BQU0sVUFBVSxZQUNuQixRQUFRLE9BQU8sTUFBTTtDQUd2QixLQUFLLE1BQU0sVUFBVSxZQUNuQixRQUFRLElBQUksUUFBUSxRQUFRO0FBRWhDO0FBRUEsU0FBZ0IsaUJBQWlCLE9BQStCO0NBQzlELElBQUksT0FBTyxVQUFVLFlBQVksTUFBTSxTQUFTLE1BQU0sS0FBSyxLQUFLLE1BQU0sR0FDcEUsT0FBTztDQUdULE9BQU87QUFDVDs7O0NBbkNNLG9CQUFvQjtFQUN4QjtFQUNBO0VBQ0E7RUFDQTtDQUNGO0NBRU0sc0JBQXNCIn0=
@@ -5,6 +5,7 @@ export type AuditLogEvent = {
5
5
  eventType: string;
6
6
  eventData: Record<string, unknown>;
7
7
  eventKey: string;
8
+ eventId?: string;
8
9
  eventDisplayName?: string;
9
10
  ipAddress?: string;
10
11
  city?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../src/auth/audit-log/events.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../src/auth/audit-log/events.ts"],"names":[],"mappings":"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"}
@@ -71,4 +71,4 @@ const ROUTES = {
71
71
  //#endregion
72
72
  export { EVENT_TYPES, ORGANIZATION_EVENT_TYPES, ROUTES };
73
73
 
74
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRzLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hdXRoL2F1ZGl0LWxvZy9ldmVudHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBzb25hbXVBdWRpdExvZyDtlIzrn6zqt7jsnbjsnbQgYXVkaXQtbG9nLWluZ2VzdG9y66GcIOyghOuLrO2VmOuKlCDsnbTrsqTtirggYm9keSDtg4DsnoUuXG4gKi9cbmV4cG9ydCB0eXBlIEF1ZGl0TG9nRXZlbnQgPSB7XG4gIGV2ZW50VHlwZTogc3RyaW5nO1xuICBldmVudERhdGE6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBldmVudEtleTogc3RyaW5nO1xuICBldmVudERpc3BsYXlOYW1lPzogc3RyaW5nO1xuICBpcEFkZHJlc3M/OiBzdHJpbmc7XG4gIGNpdHk/OiBzdHJpbmc7XG4gIGNvdW50cnk/OiBzdHJpbmc7XG4gIGNvdW50cnlDb2RlPzogc3RyaW5nO1xufTtcblxuLy8gZGFzaChAYmV0dGVyLWF1dGgvaW5mcmEp7J2YIGF1ZGl0LWV2ZW50IOyDgeyImCDsp5HtlansnYQgU29uYW11IOuhnOy7rCDsoIHsnqwg6rK966Gc7JeQIOunnuqyjCDtj6ztjIUuXG5leHBvcnQgY29uc3QgRVZFTlRfVFlQRVMgPSB7XG4gIFVTRVJfQ1JFQVRFRDogXCJ1c2VyX2NyZWF0ZWRcIixcbiAgVVNFUl9TSUdORURfSU46IFwidXNlcl9zaWduZWRfaW5cIixcbiAgVVNFUl9TSUdORURfT1VUOiBcInVzZXJfc2lnbmVkX291dFwiLFxuICBVU0VSX1NJR05fSU5fRkFJTEVEOiBcInVzZXJfc2lnbl9pbl9mYWlsZWRcIixcbiAgUEFTU1dPUkRfUkVTRVRfUkVRVUVTVEVEOiBcInBhc3N3b3JkX3Jlc2V0X3JlcXVlc3RlZFwiLFxuICBQQVNTV09SRF9SRVNFVF9DT01QTEVURUQ6IFwicGFzc3dvcmRfcmVzZXRfY29tcGxldGVkXCIsXG4gIFBBU1NXT1JEX0NIQU5HRUQ6IFwicGFzc3dvcmRfY2hhbmdlZFwiLFxuICBFTUFJTF9WRVJJRklDQVRJT05fU0VOVDogXCJlbWFpbF92ZXJpZmljYXRpb25fc2VudFwiLFxuICBFTUFJTF9WRVJJRklFRDogXCJlbWFpbF92ZXJpZmllZFwiLFxuICBQUk9GSUxFX1VQREFURUQ6IFwicHJvZmlsZV91cGRhdGVkXCIsXG4gIFBST0ZJTEVfSU1BR0VfVVBEQVRFRDogXCJwcm9maWxlX2ltYWdlX3VwZGF0ZWRcIixcbiAgU0VTU0lPTl9DUkVBVEVEOiBcInNlc3Npb25fY3JlYXRlZFwiLFxuICBTRVNTSU9OX1JFVk9LRUQ6IFwic2Vzc2lvbl9yZXZva2VkXCIsXG4gIEFMTF9TRVNTSU9OU19SRVZPS0VEOiBcImFsbF9zZXNzaW9uc19yZXZva2VkXCIsXG4gIEFDQ09VTlRfTElOS0VEOiBcImFjY291bnRfbGlua2VkXCIsXG4gIEFDQ09VTlRfVU5MSU5LRUQ6IFwiYWNjb3VudF91bmxpbmtlZFwiLFxuICBVU0VSX0JBTk5FRDogXCJ1c2VyX2Jhbm5lZFwiLFxuICBVU0VSX1VOQkFOTkVEOiBcInVzZXJfdW5iYW5uZWRcIixcbiAgVVNFUl9ERUxFVEVEOiBcInVzZXJfZGVsZXRlZFwiLFxuICBVU0VSX0lNUEVSU09OQVRFRDogXCJ1c2VyX2ltcGVyc29uYXRlZFwiLFxuICBVU0VSX0lNUEVSU09OQVRFRF9TVE9QUEVEOiBcInVzZXJfaW1wZXJzb25hdGVkX3N0b3BwZWRcIixcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBPUkdBTklaQVRJT05fRVZFTlRfVFlQRVMgPSB7XG4gIE9SR0FOSVpBVElPTl9DUkVBVEVEOiBcIm9yZ2FuaXphdGlvbl9jcmVhdGVkXCIsXG4gIE9SR0FOSVpBVElPTl9VUERBVEVEOiBcIm9yZ2FuaXphdGlvbl91cGRhdGVkXCIsXG4gIE9SR0FOSVpBVElPTl9NRU1CRVJfQURERUQ6IFwib3JnYW5pemF0aW9uX21lbWJlcl9hZGRlZFwiLFxuICBPUkdBTklaQVRJT05fTUVNQkVSX1JFTU9WRUQ6IFwib3JnYW5pemF0aW9uX21lbWJlcl9yZW1vdmVkXCIsXG4gIE9SR0FOSVpBVElPTl9NRU1CRVJfUk9MRV9VUERBVEVEOiBcIm9yZ2FuaXphdGlvbl9tZW1iZXJfcm9sZV91cGRhdGVkXCIsXG4gIE9SR0FOSVpBVElPTl9NRU1CRVJfSU5WSVRFRDogXCJvcmdhbml6YXRpb25fbWVtYmVyX2ludml0ZWRcIixcbiAgT1JHQU5JWkFUSU9OX01FTUJFUl9JTlZJVEVfQ0FOQ0VMRUQ6IFwib3JnYW5pemF0aW9uX21lbWJlcl9pbnZpdGVfY2FuY2VsZWRcIixcbiAgT1JHQU5JWkFUSU9OX01FTUJFUl9JTlZJVEVfQUNDRVBURUQ6IFwib3JnYW5pemF0aW9uX21lbWJlcl9pbnZpdGVfYWNjZXB0ZWRcIixcbiAgT1JHQU5JWkFUSU9OX01FTUJFUl9JTlZJVEVfUkVKRUNURUQ6IFwib3JnYW5pemF0aW9uX21lbWJlcl9pbnZpdGVfcmVqZWN0ZWRcIixcbiAgT1JHQU5JWkFUSU9OX1RFQU1fQ1JFQVRFRDogXCJvcmdhbml6YXRpb25fdGVhbV9jcmVhdGVkXCIsXG4gIE9SR0FOSVpBVElPTl9URUFNX1VQREFURUQ6IFwib3JnYW5pemF0aW9uX3RlYW1fdXBkYXRlZFwiLFxuICBPUkdBTklaQVRJT05fVEVBTV9ERUxFVEVEOiBcIm9yZ2FuaXphdGlvbl90ZWFtX2RlbGV0ZWRcIixcbiAgT1JHQU5JWkFUSU9OX1RFQU1fTUVNQkVSX0FEREVEOiBcIm9yZ2FuaXphdGlvbl90ZWFtX21lbWJlcl9hZGRlZFwiLFxuICBPUkdBTklaQVRJT05fVEVBTV9NRU1CRVJfUkVNT1ZFRDogXCJvcmdhbml6YXRpb25fdGVhbV9tZW1iZXJfcmVtb3ZlZFwiLFxufSBhcyBjb25zdDtcblxuLy8gZGFzaOydmCByb3V0ZXMg7IOB7IiYIOykkSDsmrDrpqzqsIAg7Iuk7KCcIG1hdGNoZXLroZwg7JOw64qUIO2VreuqqeunjCDtj6ztjIUuXG5leHBvcnQgY29uc3QgUk9VVEVTID0ge1xuICBTSUdOX0lOOiBcIi9zaWduLWluXCIsXG4gIFNJR05fSU5fRU1BSUw6IFwiL3NpZ24taW4vZW1haWxcIixcbiAgU0lHTl9JTl9FTUFJTF9PVFA6IFwiL3NpZ24taW4vZW1haWwtb3RwXCIsXG4gIFNJR05fSU5fU09DSUFMOiBcIi9zaWduLWluL3NvY2lhbFwiLFxuICBTSUdOX0lOX1NPQ0lBTF9DQUxMQkFDSzogXCIvY2FsbGJhY2svOmlkXCIsXG4gIFNJR05fSU5fT0FVVEhfQ0FMTEJBQ0s6IFwiL29hdXRoMi9jYWxsYmFjay86aWRcIixcbiAgU0lHTl9VUDogXCIvc2lnbi11cFwiLFxuICBTSUdOX1VQX0VNQUlMOiBcIi9zaWduLXVwL2VtYWlsXCIsXG4gIFNJR05fT1VUOiBcIi9zaWduLW91dFwiLFxuICBTRU5EX1ZFUklGSUNBVElPTl9FTUFJTDogXCIvc2VuZC12ZXJpZmljYXRpb24tZW1haWxcIixcbiAgVVBEQVRFX1VTRVI6IFwiL3VwZGF0ZS11c2VyXCIsXG4gIENIQU5HRV9FTUFJTDogXCIvY2hhbmdlLWVtYWlsXCIsXG4gIFZFUklGWV9FTUFJTDogXCIvdmVyaWZ5LWVtYWlsXCIsXG4gIENIQU5HRV9QQVNTV09SRDogXCIvY2hhbmdlLXBhc3N3b3JkXCIsXG4gIFNFVF9QQVNTV09SRDogXCIvc2V0LXBhc3N3b3JkXCIsXG4gIFJFU0VUX1BBU1NXT1JEOiBcIi9yZXNldC1wYXNzd29yZFwiLFxuICBSRVFVRVNUX1BBU1NXT1JEX1JFU0VUOiBcIi9yZXF1ZXN0LXBhc3N3b3JkLXJlc2V0XCIsXG4gIFJFVk9LRV9BTExfU0VTU0lPTlM6IFwiL3Jldm9rZS1zZXNzaW9uc1wiLFxuICBEQVNIX1JPVVRFOiBcIi9kYXNoXCIsXG4gIERBU0hfVVBEQVRFX1VTRVI6IFwiL2Rhc2gvdXBkYXRlLXVzZXJcIixcbiAgREFTSF9SRVZPS0VfU0VTU0lPTlNfQUxMOiBcIi9kYXNoL3Nlc3Npb25zL3Jldm9rZS1hbGxcIixcbiAgREFTSF9CQU5fVVNFUjogXCIvZGFzaC9iYW4tdXNlclwiLFxuICBEQVNIX1VOQkFOX1VTRVI6IFwiL2Rhc2gvdW5iYW4tdXNlclwiLFxuICBBRE1JTl9ST1VURTogXCIvYWRtaW5cIixcbiAgQURNSU5fUkVWT0tFX1VTRVJfU0VTU0lPTlM6IFwiL2FkbWluL3Jldm9rZS11c2VyLXNlc3Npb25zXCIsXG4gIEFETUlOX1NFVF9QQVNTV09SRDogXCIvYWRtaW4vc2V0LXVzZXItcGFzc3dvcmRcIixcbiAgQURNSU5fQkFOX1VTRVI6IFwiL2FkbWluL2Jhbi11c2VyXCIsXG4gIEFETUlOX1VOQkFOX1VTRVI6IFwiL2FkbWluL3VuYmFuLXVzZXJcIixcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIEJ1aWxkZXJUcmlnZ2VyID0geyB0cmlnZ2VyZWRCeTogc3RyaW5nOyB0cmlnZ2VyQ29udGV4dDogc3RyaW5nIH07XG5leHBvcnQgdHlwZSBCdWlsZGVyTG9jYXRpb24gPSB7XG4gIGlwQWRkcmVzcz86IHN0cmluZztcbiAgY2l0eT86IHN0cmluZztcbiAgY291bnRyeT86IHN0cmluZztcbiAgY291bnRyeUNvZGU/OiBzdHJpbmc7XG59O1xuXG4vLyDruYzrjZTsl5Ag64SY6riw64qUIOy1nOyGjCDsl5Tti7Dti7Agc2hhcGUuIGJldHRlci1hdXRoIOuCtOu2gCDtg4DsnoXsnYQg6re464yA66GcIOyTsOyngCDslYrqs6Bcbi8vIO2VhOyalO2VnCDtlYTrk5zrp4wg7ISg7Ja47ZWY7JesIO2VuOuTpOufrCDroIjsnbTslrTsl5DshJwg7KKB7ZiA7IScIOyghOuLrO2VnOuLpC5cbmV4cG9ydCB0eXBlIFVzZXJTbmFwc2hvdCA9IHtcbiAgaWQ6IHN0cmluZztcbiAgbmFtZT86IHN0cmluZztcbiAgZW1haWw/OiBzdHJpbmc7XG4gIGJhbm5lZD86IGJvb2xlYW47XG4gIGJhblJlYXNvbj86IHN0cmluZyB8IG51bGw7XG4gIGJhbkV4cGlyZXM/OiBEYXRlIHwgbnVsbDtcbn07XG5leHBvcnQgdHlwZSBTZXNzaW9uU25hcHNob3QgPSB7XG4gIGlkOiBzdHJpbmc7XG4gIHVzZXJJZDogc3RyaW5nO1xuICBsb2dpbk1ldGhvZD86IHN0cmluZyB8IG51bGw7XG4gIHVzZXJBZ2VudD86IHN0cmluZyB8IG51bGw7XG4gIGltcGVyc29uYXRlZEJ5Pzogc3RyaW5nIHwgbnVsbDtcbn07XG5leHBvcnQgdHlwZSBBY2NvdW50U25hcHNob3QgPSB7XG4gIGlkOiBzdHJpbmc7XG4gIHVzZXJJZDogc3RyaW5nO1xuICBwcm92aWRlcklkOiBzdHJpbmc7XG59O1xuZXhwb3J0IHR5cGUgVmVyaWZpY2F0aW9uU25hcHNob3QgPSB7XG4gIGlkOiBzdHJpbmc7XG4gIHZhbHVlOiBzdHJpbmc7XG59O1xuZXhwb3J0IHR5cGUgT3JnYW5pemF0aW9uU25hcHNob3QgPSB7XG4gIGlkOiBzdHJpbmc7XG4gIHNsdWc/OiBzdHJpbmc7XG4gIG5hbWU/OiBzdHJpbmc7XG59O1xuZXhwb3J0IHR5cGUgVGVhbVNuYXBzaG90ID0ge1xuICBpZDogc3RyaW5nO1xuICBuYW1lPzogc3RyaW5nO1xufTtcbmV4cG9ydCB0eXBlIE1lbWJlclNuYXBzaG90ID0ge1xuICBpZDogc3RyaW5nO1xuICB1c2VySWQ6IHN0cmluZztcbiAgcm9sZT86IHN0cmluZztcbn07XG5leHBvcnQgdHlwZSBJbnZpdGF0aW9uU25hcHNob3QgPSB7XG4gIGlkOiBzdHJpbmc7XG4gIGVtYWlsPzogc3RyaW5nO1xuICByb2xlPzogc3RyaW5nO1xuICB0ZWFtSWQ/OiBzdHJpbmcgfCBudWxsO1xufTtcblxuLy8g7IKs7Jqp7J6QIO2UhOuhnO2VhCDrs7TsobAgKOyhsO2ajCDsi6TtjKgg7IucIG51bGwpXG5leHBvcnQgdHlwZSBVc2VyUHJvZmlsZUxpdGUgPSB7IGlkOiBzdHJpbmc7IG5hbWU/OiBzdHJpbmc7IGVtYWlsPzogc3RyaW5nIH0gfCBudWxsO1xuXG4vLyDrqqjrk6Ag67mM642U64qUIHB1cmU6IGlucHV0IC0+IEF1ZGl0TG9nRXZlbnQuXG4vLyDruYTrj5nquLAgYWRhcHRlciDsobDtmozripQgaG9vayDroIjsnbTslrTsl5DshJwg7IiY7ZaJ7ZWY6rOgLCDsobDtmowg6rKw6rO866W8IOyduOyekOuhnCDsoITri6ztlZzri6QuXG5leHBvcnQgdHlwZSBCdWlsZGVyPEEgZXh0ZW5kcyByZWFkb25seSB1bmtub3duW10+ID0gKC4uLmFyZ3M6IEEpID0+IEF1ZGl0TG9nRXZlbnQ7XG4iXSwibWFwcGluZ3MiOiI7QUFlQSxNQUFhLGNBQWM7Q0FDekIsY0FBYztDQUNkLGdCQUFnQjtDQUNoQixpQkFBaUI7Q0FDakIscUJBQXFCO0NBQ3JCLDBCQUEwQjtDQUMxQiwwQkFBMEI7Q0FDMUIsa0JBQWtCO0NBQ2xCLHlCQUF5QjtDQUN6QixnQkFBZ0I7Q0FDaEIsaUJBQWlCO0NBQ2pCLHVCQUF1QjtDQUN2QixpQkFBaUI7Q0FDakIsaUJBQWlCO0NBQ2pCLHNCQUFzQjtDQUN0QixnQkFBZ0I7Q0FDaEIsa0JBQWtCO0NBQ2xCLGFBQWE7Q0FDYixlQUFlO0NBQ2YsY0FBYztDQUNkLG1CQUFtQjtDQUNuQiwyQkFBMkI7QUFDN0I7QUFFQSxNQUFhLDJCQUEyQjtDQUN0QyxzQkFBc0I7Q0FDdEIsc0JBQXNCO0NBQ3RCLDJCQUEyQjtDQUMzQiw2QkFBNkI7Q0FDN0Isa0NBQWtDO0NBQ2xDLDZCQUE2QjtDQUM3QixxQ0FBcUM7Q0FDckMscUNBQXFDO0NBQ3JDLHFDQUFxQztDQUNyQywyQkFBMkI7Q0FDM0IsMkJBQTJCO0NBQzNCLDJCQUEyQjtDQUMzQixnQ0FBZ0M7Q0FDaEMsa0NBQWtDO0FBQ3BDO0FBR0EsTUFBYSxTQUFTO0NBQ3BCLFNBQVM7Q0FDVCxlQUFlO0NBQ2YsbUJBQW1CO0NBQ25CLGdCQUFnQjtDQUNoQix5QkFBeUI7Q0FDekIsd0JBQXdCO0NBQ3hCLFNBQVM7Q0FDVCxlQUFlO0NBQ2YsVUFBVTtDQUNWLHlCQUF5QjtDQUN6QixhQUFhO0NBQ2IsY0FBYztDQUNkLGNBQWM7Q0FDZCxpQkFBaUI7Q0FDakIsY0FBYztDQUNkLGdCQUFnQjtDQUNoQix3QkFBd0I7Q0FDeEIscUJBQXFCO0NBQ3JCLFlBQVk7Q0FDWixrQkFBa0I7Q0FDbEIsMEJBQTBCO0NBQzFCLGVBQWU7Q0FDZixpQkFBaUI7Q0FDakIsYUFBYTtDQUNiLDRCQUE0QjtDQUM1QixvQkFBb0I7Q0FDcEIsZ0JBQWdCO0NBQ2hCLGtCQUFrQjtBQUNwQiJ9
74
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRzLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hdXRoL2F1ZGl0LWxvZy9ldmVudHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBzb25hbXVBdWRpdExvZyDtlIzrn6zqt7jsnbjsnbQgYXVkaXQtbG9nLWluZ2VzdG9y66GcIOyghOuLrO2VmOuKlCDsnbTrsqTtirggYm9keSDtg4DsnoUuXG4gKi9cbmV4cG9ydCB0eXBlIEF1ZGl0TG9nRXZlbnQgPSB7XG4gIGV2ZW50VHlwZTogc3RyaW5nO1xuICBldmVudERhdGE6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBldmVudEtleTogc3RyaW5nO1xuICBldmVudElkPzogc3RyaW5nO1xuICBldmVudERpc3BsYXlOYW1lPzogc3RyaW5nO1xuICBpcEFkZHJlc3M/OiBzdHJpbmc7XG4gIGNpdHk/OiBzdHJpbmc7XG4gIGNvdW50cnk/OiBzdHJpbmc7XG4gIGNvdW50cnlDb2RlPzogc3RyaW5nO1xufTtcblxuLy8gZGFzaChAYmV0dGVyLWF1dGgvaW5mcmEp7J2YIGF1ZGl0LWV2ZW50IOyDgeyImCDsp5HtlansnYQgU29uYW11IOuhnOy7rCDsoIHsnqwg6rK966Gc7JeQIOunnuqyjCDtj6ztjIUuXG5leHBvcnQgY29uc3QgRVZFTlRfVFlQRVMgPSB7XG4gIFVTRVJfQ1JFQVRFRDogXCJ1c2VyX2NyZWF0ZWRcIixcbiAgVVNFUl9TSUdORURfSU46IFwidXNlcl9zaWduZWRfaW5cIixcbiAgVVNFUl9TSUdORURfT1VUOiBcInVzZXJfc2lnbmVkX291dFwiLFxuICBVU0VSX1NJR05fSU5fRkFJTEVEOiBcInVzZXJfc2lnbl9pbl9mYWlsZWRcIixcbiAgUEFTU1dPUkRfUkVTRVRfUkVRVUVTVEVEOiBcInBhc3N3b3JkX3Jlc2V0X3JlcXVlc3RlZFwiLFxuICBQQVNTV09SRF9SRVNFVF9DT01QTEVURUQ6IFwicGFzc3dvcmRfcmVzZXRfY29tcGxldGVkXCIsXG4gIFBBU1NXT1JEX0NIQU5HRUQ6IFwicGFzc3dvcmRfY2hhbmdlZFwiLFxuICBFTUFJTF9WRVJJRklDQVRJT05fU0VOVDogXCJlbWFpbF92ZXJpZmljYXRpb25fc2VudFwiLFxuICBFTUFJTF9WRVJJRklFRDogXCJlbWFpbF92ZXJpZmllZFwiLFxuICBQUk9GSUxFX1VQREFURUQ6IFwicHJvZmlsZV91cGRhdGVkXCIsXG4gIFBST0ZJTEVfSU1BR0VfVVBEQVRFRDogXCJwcm9maWxlX2ltYWdlX3VwZGF0ZWRcIixcbiAgU0VTU0lPTl9DUkVBVEVEOiBcInNlc3Npb25fY3JlYXRlZFwiLFxuICBTRVNTSU9OX1JFVk9LRUQ6IFwic2Vzc2lvbl9yZXZva2VkXCIsXG4gIEFMTF9TRVNTSU9OU19SRVZPS0VEOiBcImFsbF9zZXNzaW9uc19yZXZva2VkXCIsXG4gIEFDQ09VTlRfTElOS0VEOiBcImFjY291bnRfbGlua2VkXCIsXG4gIEFDQ09VTlRfVU5MSU5LRUQ6IFwiYWNjb3VudF91bmxpbmtlZFwiLFxuICBVU0VSX0JBTk5FRDogXCJ1c2VyX2Jhbm5lZFwiLFxuICBVU0VSX1VOQkFOTkVEOiBcInVzZXJfdW5iYW5uZWRcIixcbiAgVVNFUl9ERUxFVEVEOiBcInVzZXJfZGVsZXRlZFwiLFxuICBVU0VSX0lNUEVSU09OQVRFRDogXCJ1c2VyX2ltcGVyc29uYXRlZFwiLFxuICBVU0VSX0lNUEVSU09OQVRFRF9TVE9QUEVEOiBcInVzZXJfaW1wZXJzb25hdGVkX3N0b3BwZWRcIixcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBPUkdBTklaQVRJT05fRVZFTlRfVFlQRVMgPSB7XG4gIE9SR0FOSVpBVElPTl9DUkVBVEVEOiBcIm9yZ2FuaXphdGlvbl9jcmVhdGVkXCIsXG4gIE9SR0FOSVpBVElPTl9VUERBVEVEOiBcIm9yZ2FuaXphdGlvbl91cGRhdGVkXCIsXG4gIE9SR0FOSVpBVElPTl9NRU1CRVJfQURERUQ6IFwib3JnYW5pemF0aW9uX21lbWJlcl9hZGRlZFwiLFxuICBPUkdBTklaQVRJT05fTUVNQkVSX1JFTU9WRUQ6IFwib3JnYW5pemF0aW9uX21lbWJlcl9yZW1vdmVkXCIsXG4gIE9SR0FOSVpBVElPTl9NRU1CRVJfUk9MRV9VUERBVEVEOiBcIm9yZ2FuaXphdGlvbl9tZW1iZXJfcm9sZV91cGRhdGVkXCIsXG4gIE9SR0FOSVpBVElPTl9NRU1CRVJfSU5WSVRFRDogXCJvcmdhbml6YXRpb25fbWVtYmVyX2ludml0ZWRcIixcbiAgT1JHQU5JWkFUSU9OX01FTUJFUl9JTlZJVEVfQ0FOQ0VMRUQ6IFwib3JnYW5pemF0aW9uX21lbWJlcl9pbnZpdGVfY2FuY2VsZWRcIixcbiAgT1JHQU5JWkFUSU9OX01FTUJFUl9JTlZJVEVfQUNDRVBURUQ6IFwib3JnYW5pemF0aW9uX21lbWJlcl9pbnZpdGVfYWNjZXB0ZWRcIixcbiAgT1JHQU5JWkFUSU9OX01FTUJFUl9JTlZJVEVfUkVKRUNURUQ6IFwib3JnYW5pemF0aW9uX21lbWJlcl9pbnZpdGVfcmVqZWN0ZWRcIixcbiAgT1JHQU5JWkFUSU9OX1RFQU1fQ1JFQVRFRDogXCJvcmdhbml6YXRpb25fdGVhbV9jcmVhdGVkXCIsXG4gIE9SR0FOSVpBVElPTl9URUFNX1VQREFURUQ6IFwib3JnYW5pemF0aW9uX3RlYW1fdXBkYXRlZFwiLFxuICBPUkdBTklaQVRJT05fVEVBTV9ERUxFVEVEOiBcIm9yZ2FuaXphdGlvbl90ZWFtX2RlbGV0ZWRcIixcbiAgT1JHQU5JWkFUSU9OX1RFQU1fTUVNQkVSX0FEREVEOiBcIm9yZ2FuaXphdGlvbl90ZWFtX21lbWJlcl9hZGRlZFwiLFxuICBPUkdBTklaQVRJT05fVEVBTV9NRU1CRVJfUkVNT1ZFRDogXCJvcmdhbml6YXRpb25fdGVhbV9tZW1iZXJfcmVtb3ZlZFwiLFxufSBhcyBjb25zdDtcblxuLy8gZGFzaOydmCByb3V0ZXMg7IOB7IiYIOykkSDsmrDrpqzqsIAg7Iuk7KCcIG1hdGNoZXLroZwg7JOw64qUIO2VreuqqeunjCDtj6ztjIUuXG5leHBvcnQgY29uc3QgUk9VVEVTID0ge1xuICBTSUdOX0lOOiBcIi9zaWduLWluXCIsXG4gIFNJR05fSU5fRU1BSUw6IFwiL3NpZ24taW4vZW1haWxcIixcbiAgU0lHTl9JTl9FTUFJTF9PVFA6IFwiL3NpZ24taW4vZW1haWwtb3RwXCIsXG4gIFNJR05fSU5fU09DSUFMOiBcIi9zaWduLWluL3NvY2lhbFwiLFxuICBTSUdOX0lOX1NPQ0lBTF9DQUxMQkFDSzogXCIvY2FsbGJhY2svOmlkXCIsXG4gIFNJR05fSU5fT0FVVEhfQ0FMTEJBQ0s6IFwiL29hdXRoMi9jYWxsYmFjay86aWRcIixcbiAgU0lHTl9VUDogXCIvc2lnbi11cFwiLFxuICBTSUdOX1VQX0VNQUlMOiBcIi9zaWduLXVwL2VtYWlsXCIsXG4gIFNJR05fT1VUOiBcIi9zaWduLW91dFwiLFxuICBTRU5EX1ZFUklGSUNBVElPTl9FTUFJTDogXCIvc2VuZC12ZXJpZmljYXRpb24tZW1haWxcIixcbiAgVVBEQVRFX1VTRVI6IFwiL3VwZGF0ZS11c2VyXCIsXG4gIENIQU5HRV9FTUFJTDogXCIvY2hhbmdlLWVtYWlsXCIsXG4gIFZFUklGWV9FTUFJTDogXCIvdmVyaWZ5LWVtYWlsXCIsXG4gIENIQU5HRV9QQVNTV09SRDogXCIvY2hhbmdlLXBhc3N3b3JkXCIsXG4gIFNFVF9QQVNTV09SRDogXCIvc2V0LXBhc3N3b3JkXCIsXG4gIFJFU0VUX1BBU1NXT1JEOiBcIi9yZXNldC1wYXNzd29yZFwiLFxuICBSRVFVRVNUX1BBU1NXT1JEX1JFU0VUOiBcIi9yZXF1ZXN0LXBhc3N3b3JkLXJlc2V0XCIsXG4gIFJFVk9LRV9BTExfU0VTU0lPTlM6IFwiL3Jldm9rZS1zZXNzaW9uc1wiLFxuICBEQVNIX1JPVVRFOiBcIi9kYXNoXCIsXG4gIERBU0hfVVBEQVRFX1VTRVI6IFwiL2Rhc2gvdXBkYXRlLXVzZXJcIixcbiAgREFTSF9SRVZPS0VfU0VTU0lPTlNfQUxMOiBcIi9kYXNoL3Nlc3Npb25zL3Jldm9rZS1hbGxcIixcbiAgREFTSF9CQU5fVVNFUjogXCIvZGFzaC9iYW4tdXNlclwiLFxuICBEQVNIX1VOQkFOX1VTRVI6IFwiL2Rhc2gvdW5iYW4tdXNlclwiLFxuICBBRE1JTl9ST1VURTogXCIvYWRtaW5cIixcbiAgQURNSU5fUkVWT0tFX1VTRVJfU0VTU0lPTlM6IFwiL2FkbWluL3Jldm9rZS11c2VyLXNlc3Npb25zXCIsXG4gIEFETUlOX1NFVF9QQVNTV09SRDogXCIvYWRtaW4vc2V0LXVzZXItcGFzc3dvcmRcIixcbiAgQURNSU5fQkFOX1VTRVI6IFwiL2FkbWluL2Jhbi11c2VyXCIsXG4gIEFETUlOX1VOQkFOX1VTRVI6IFwiL2FkbWluL3VuYmFuLXVzZXJcIixcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIEJ1aWxkZXJUcmlnZ2VyID0geyB0cmlnZ2VyZWRCeTogc3RyaW5nOyB0cmlnZ2VyQ29udGV4dDogc3RyaW5nIH07XG5leHBvcnQgdHlwZSBCdWlsZGVyTG9jYXRpb24gPSB7XG4gIGlwQWRkcmVzcz86IHN0cmluZztcbiAgY2l0eT86IHN0cmluZztcbiAgY291bnRyeT86IHN0cmluZztcbiAgY291bnRyeUNvZGU/OiBzdHJpbmc7XG59O1xuXG4vLyDruYzrjZTsl5Ag64SY6riw64qUIOy1nOyGjCDsl5Tti7Dti7Agc2hhcGUuIGJldHRlci1hdXRoIOuCtOu2gCDtg4DsnoXsnYQg6re464yA66GcIOyTsOyngCDslYrqs6Bcbi8vIO2VhOyalO2VnCDtlYTrk5zrp4wg7ISg7Ja47ZWY7JesIO2VuOuTpOufrCDroIjsnbTslrTsl5DshJwg7KKB7ZiA7IScIOyghOuLrO2VnOuLpC5cbmV4cG9ydCB0eXBlIFVzZXJTbmFwc2hvdCA9IHtcbiAgaWQ6IHN0cmluZztcbiAgbmFtZT86IHN0cmluZztcbiAgZW1haWw/OiBzdHJpbmc7XG4gIGJhbm5lZD86IGJvb2xlYW47XG4gIGJhblJlYXNvbj86IHN0cmluZyB8IG51bGw7XG4gIGJhbkV4cGlyZXM/OiBEYXRlIHwgbnVsbDtcbn07XG5leHBvcnQgdHlwZSBTZXNzaW9uU25hcHNob3QgPSB7XG4gIGlkOiBzdHJpbmc7XG4gIHVzZXJJZDogc3RyaW5nO1xuICBsb2dpbk1ldGhvZD86IHN0cmluZyB8IG51bGw7XG4gIHVzZXJBZ2VudD86IHN0cmluZyB8IG51bGw7XG4gIGltcGVyc29uYXRlZEJ5Pzogc3RyaW5nIHwgbnVsbDtcbn07XG5leHBvcnQgdHlwZSBBY2NvdW50U25hcHNob3QgPSB7XG4gIGlkOiBzdHJpbmc7XG4gIHVzZXJJZDogc3RyaW5nO1xuICBwcm92aWRlcklkOiBzdHJpbmc7XG59O1xuZXhwb3J0IHR5cGUgVmVyaWZpY2F0aW9uU25hcHNob3QgPSB7XG4gIGlkOiBzdHJpbmc7XG4gIHZhbHVlOiBzdHJpbmc7XG59O1xuZXhwb3J0IHR5cGUgT3JnYW5pemF0aW9uU25hcHNob3QgPSB7XG4gIGlkOiBzdHJpbmc7XG4gIHNsdWc/OiBzdHJpbmc7XG4gIG5hbWU/OiBzdHJpbmc7XG59O1xuZXhwb3J0IHR5cGUgVGVhbVNuYXBzaG90ID0ge1xuICBpZDogc3RyaW5nO1xuICBuYW1lPzogc3RyaW5nO1xufTtcbmV4cG9ydCB0eXBlIE1lbWJlclNuYXBzaG90ID0ge1xuICBpZDogc3RyaW5nO1xuICB1c2VySWQ6IHN0cmluZztcbiAgcm9sZT86IHN0cmluZztcbn07XG5leHBvcnQgdHlwZSBJbnZpdGF0aW9uU25hcHNob3QgPSB7XG4gIGlkOiBzdHJpbmc7XG4gIGVtYWlsPzogc3RyaW5nO1xuICByb2xlPzogc3RyaW5nO1xuICB0ZWFtSWQ/OiBzdHJpbmcgfCBudWxsO1xufTtcblxuLy8g7IKs7Jqp7J6QIO2UhOuhnO2VhCDrs7TsobAgKOyhsO2ajCDsi6TtjKgg7IucIG51bGwpXG5leHBvcnQgdHlwZSBVc2VyUHJvZmlsZUxpdGUgPSB7IGlkOiBzdHJpbmc7IG5hbWU/OiBzdHJpbmc7IGVtYWlsPzogc3RyaW5nIH0gfCBudWxsO1xuXG4vLyDrqqjrk6Ag67mM642U64qUIHB1cmU6IGlucHV0IC0+IEF1ZGl0TG9nRXZlbnQuXG4vLyDruYTrj5nquLAgYWRhcHRlciDsobDtmozripQgaG9vayDroIjsnbTslrTsl5DshJwg7IiY7ZaJ7ZWY6rOgLCDsobDtmowg6rKw6rO866W8IOyduOyekOuhnCDsoITri6ztlZzri6QuXG5leHBvcnQgdHlwZSBCdWlsZGVyPEEgZXh0ZW5kcyByZWFkb25seSB1bmtub3duW10+ID0gKC4uLmFyZ3M6IEEpID0+IEF1ZGl0TG9nRXZlbnQ7XG4iXSwibWFwcGluZ3MiOiI7QUFnQkEsTUFBYSxjQUFjO0NBQ3pCLGNBQWM7Q0FDZCxnQkFBZ0I7Q0FDaEIsaUJBQWlCO0NBQ2pCLHFCQUFxQjtDQUNyQiwwQkFBMEI7Q0FDMUIsMEJBQTBCO0NBQzFCLGtCQUFrQjtDQUNsQix5QkFBeUI7Q0FDekIsZ0JBQWdCO0NBQ2hCLGlCQUFpQjtDQUNqQix1QkFBdUI7Q0FDdkIsaUJBQWlCO0NBQ2pCLGlCQUFpQjtDQUNqQixzQkFBc0I7Q0FDdEIsZ0JBQWdCO0NBQ2hCLGtCQUFrQjtDQUNsQixhQUFhO0NBQ2IsZUFBZTtDQUNmLGNBQWM7Q0FDZCxtQkFBbUI7Q0FDbkIsMkJBQTJCO0FBQzdCO0FBRUEsTUFBYSwyQkFBMkI7Q0FDdEMsc0JBQXNCO0NBQ3RCLHNCQUFzQjtDQUN0QiwyQkFBMkI7Q0FDM0IsNkJBQTZCO0NBQzdCLGtDQUFrQztDQUNsQyw2QkFBNkI7Q0FDN0IscUNBQXFDO0NBQ3JDLHFDQUFxQztDQUNyQyxxQ0FBcUM7Q0FDckMsMkJBQTJCO0NBQzNCLDJCQUEyQjtDQUMzQiwyQkFBMkI7Q0FDM0IsZ0NBQWdDO0NBQ2hDLGtDQUFrQztBQUNwQztBQUdBLE1BQWEsU0FBUztDQUNwQixTQUFTO0NBQ1QsZUFBZTtDQUNmLG1CQUFtQjtDQUNuQixnQkFBZ0I7Q0FDaEIseUJBQXlCO0NBQ3pCLHdCQUF3QjtDQUN4QixTQUFTO0NBQ1QsZUFBZTtDQUNmLFVBQVU7Q0FDVix5QkFBeUI7Q0FDekIsYUFBYTtDQUNiLGNBQWM7Q0FDZCxjQUFjO0NBQ2QsaUJBQWlCO0NBQ2pCLGNBQWM7Q0FDZCxnQkFBZ0I7Q0FDaEIsd0JBQXdCO0NBQ3hCLHFCQUFxQjtDQUNyQixZQUFZO0NBQ1osa0JBQWtCO0NBQ2xCLDBCQUEwQjtDQUMxQixlQUFlO0NBQ2YsaUJBQWlCO0NBQ2pCLGFBQWE7Q0FDYiw0QkFBNEI7Q0FDNUIsb0JBQW9CO0NBQ3BCLGdCQUFnQjtDQUNoQixrQkFBa0I7QUFDcEIifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"audit-log-ingestor.d.ts","sourceRoot":"","sources":["../../src/auth/audit-log-ingestor.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,MAAM,CAAC;AAEjC,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAuIxD;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAwFpF"}
1
+ {"version":3,"file":"audit-log-ingestor.d.ts","sourceRoot":"","sources":["../../src/auth/audit-log-ingestor.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,MAAM,CAAC;AAGjC,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC;AA2IxD;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CA0FpF"}
@@ -1,5 +1,7 @@
1
+ import { getValidClientIp, init_client_ip } from "./audit-log/client-ip.js";
1
2
  import { createHash } from "node:crypto";
2
3
  //#region src/auth/audit-log-ingestor.ts
4
+ init_client_ip();
3
5
  const AUDIT_EVENT_SOURCE = "better_auth";
4
6
  const AUDIT_EVENT_SOURCE_VERSION = "better-auth|@better-auth/infra";
5
7
  const SESSION_EVENT_TYPES = /* @__PURE__ */ new Set([
@@ -86,6 +88,9 @@ function computeDedupeKey(parts) {
86
88
  ].join("|");
87
89
  return createHash("sha256").update(raw).digest("hex");
88
90
  }
91
+ function computeEventIdDedupeKey(source, eventId) {
92
+ return createHash("sha256").update(`${source}|${eventId}`).digest("hex");
93
+ }
89
94
  /**
90
95
  * sonamuAuditLog 플러그인이 구성한 AuditLogEvent를 audit_events 테이블에 적재합니다.
91
96
  * ON CONFLICT (dedupe_key) DO NOTHING으로 중복을 silent 무시합니다.
@@ -119,12 +124,12 @@ async function ingestAuditEvent(db, event) {
119
124
  const action = pickString(eventData, "action");
120
125
  const trigger_context = pickString(eventData, "triggerContext");
121
126
  const user_agent = pickString(eventData, "userAgent");
122
- const ip_address = event.ipAddress ?? null;
127
+ const ip_address = getValidClientIp(event.ipAddress);
123
128
  const city = event.city ?? null;
124
129
  const country = event.country ?? null;
125
130
  const country_code = event.countryCode ?? null;
126
131
  const category = classifyCategory(event.eventType);
127
- const dedupe_key = computeDedupeKey({
132
+ const dedupe_key = event.eventId ? computeEventIdDedupeKey(AUDIT_EVENT_SOURCE, event.eventId) : computeDedupeKey({
128
133
  source: AUDIT_EVENT_SOURCE,
129
134
  event_type: event.eventType,
130
135
  event_key: event.eventKey,
@@ -169,4 +174,4 @@ async function ingestAuditEvent(db, event) {
169
174
  //#endregion
170
175
  export { ingestAuditEvent };
171
176
 
172
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaXQtbG9nLWluZ2VzdG9yLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hdXRoL2F1ZGl0LWxvZy1pbmdlc3Rvci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVIYXNoIH0gZnJvbSBcIm5vZGU6Y3J5cHRvXCI7XG5cbmltcG9ydCB7IHR5cGUgS25leCB9IGZyb20gXCJrbmV4XCI7XG5cbmltcG9ydCB7IHR5cGUgQXVkaXRMb2dFdmVudCB9IGZyb20gXCIuL2F1ZGl0LWxvZy9ldmVudHNcIjtcblxuY29uc3QgQVVESVRfRVZFTlRfU09VUkNFID0gXCJiZXR0ZXJfYXV0aFwiO1xuY29uc3QgQVVESVRfRVZFTlRfU09VUkNFX1ZFUlNJT04gPSBcImJldHRlci1hdXRofEBiZXR0ZXItYXV0aC9pbmZyYVwiO1xuXG5jb25zdCBTRVNTSU9OX0VWRU5UX1RZUEVTID0gbmV3IFNldDxzdHJpbmc+KFtcbiAgXCJ1c2VyX3NpZ25lZF9pblwiLFxuICBcInVzZXJfc2lnbmVkX291dFwiLFxuICBcInVzZXJfc2lnbl9pbl9mYWlsZWRcIixcbiAgXCJzZXNzaW9uX2NyZWF0ZWRcIixcbiAgXCJzZXNzaW9uX3Jldm9rZWRcIixcbiAgXCJhbGxfc2Vzc2lvbnNfcmV2b2tlZFwiLFxuICBcInVzZXJfaW1wZXJzb25hdGVkXCIsXG4gIFwidXNlcl9pbXBlcnNvbmF0ZWRfc3RvcHBlZFwiLFxuXSk7XG5cbmNvbnN0IEFDQ09VTlRfRVZFTlRfVFlQRVMgPSBuZXcgU2V0PHN0cmluZz4oW1xuICBcImFjY291bnRfbGlua2VkXCIsXG4gIFwiYWNjb3VudF91bmxpbmtlZFwiLFxuICBcInBhc3N3b3JkX2NoYW5nZWRcIixcblxuICAvLyBAYmV0dGVyLWF1dGgvaW5mcmFAMC4xLjE0IOq4sOykgCBFVkVOVF9UWVBFUyDsg4HsiJjsl5DripQg7KCV7J2Y65CY7Ja0IOyeiOycvOuCmCDsi6TsoJwgdHJhY2tFdmVudCgpIO2YuOy2nOydtCDsl4bripQg66+46rWs7ZiEIOydtOuypO2KuOyehFxuICAvLyDtlqXtm4Qg67KE7KCE7JeQ7IScIGVtaXTrkKAg6rK97Jqw66W8IOuMgOu5hO2VtCBhY2NvdW5066GcIOyehOyLnCDrk7HroZ1cbiAgXCJ0d29fZmFjdG9yX2VuYWJsZWRcIixcbiAgXCJ0d29fZmFjdG9yX2Rpc2FibGVkXCIsXG4gIFwidHdvX2ZhY3Rvcl92ZXJpZmllZFwiLFxuXSk7XG5cbmNvbnN0IFZFUklGSUNBVElPTl9FVkVOVF9UWVBFUyA9IG5ldyBTZXQ8c3RyaW5nPihbXG4gIFwiZW1haWxfdmVyaWZpY2F0aW9uX3NlbnRcIixcbiAgXCJwYXNzd29yZF9yZXNldF9yZXF1ZXN0ZWRcIixcbiAgXCJwYXNzd29yZF9yZXNldF9jb21wbGV0ZWRcIixcbl0pO1xuXG5jb25zdCBTRUNVUklUWV9FVkVOVF9UWVBFUyA9IG5ldyBTZXQ8c3RyaW5nPihbXG4gIFwic2VjdXJpdHlfYmxvY2tlZFwiLFxuICBcInNlY3VyaXR5X2FsbG93ZWRcIixcbiAgXCJzZWN1cml0eV9jaGFsbGVuZ2VkXCIsXG4gIFwic2VjdXJpdHlfc3RhbGVfYWNjb3VudFwiLFxuXSk7XG5cbmNvbnN0IFVTRVJfRVZFTlRfVFlQRVMgPSBuZXcgU2V0PHN0cmluZz4oW1xuICBcInVzZXJfY3JlYXRlZFwiLFxuICBcInByb2ZpbGVfdXBkYXRlZFwiLFxuICBcInByb2ZpbGVfaW1hZ2VfdXBkYXRlZFwiLFxuICBcImVtYWlsX3ZlcmlmaWVkXCIsXG4gIFwidXNlcl9iYW5uZWRcIixcbiAgXCJ1c2VyX3VuYmFubmVkXCIsXG4gIFwidXNlcl9kZWxldGVkXCIsXG5dKTtcblxuZnVuY3Rpb24gcGlja1N0cmluZyhzb3VyY2U6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBrZXk6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuICBjb25zdCB2YWx1ZSA9IHNvdXJjZVtrZXldO1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiID8gdmFsdWUgOiBudWxsO1xufVxuXG5mdW5jdGlvbiBwaWNrRmlyc3RTdHJpbmcoc291cmNlOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwga2V5czogcmVhZG9ubHkgc3RyaW5nW10pOiBzdHJpbmcgfCBudWxsIHtcbiAgZm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xuICAgIGNvbnN0IHZhbHVlID0gcGlja1N0cmluZyhzb3VyY2UsIGtleSk7XG4gICAgaWYgKHZhbHVlICE9PSBudWxsKSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICB9XG4gIHJldHVybiBudWxsO1xufVxuXG5mdW5jdGlvbiBwYXJzZU9jY3VycmVkQXQocmF3OiB1bmtub3duKTogRGF0ZSB7XG4gIGlmIChyYXcgaW5zdGFuY2VvZiBEYXRlICYmICFOdW1iZXIuaXNOYU4ocmF3LmdldFRpbWUoKSkpIHtcbiAgICByZXR1cm4gcmF3O1xuICB9XG4gIGlmICh0eXBlb2YgcmF3ID09PSBcInN0cmluZ1wiKSB7XG4gICAgY29uc3QgcGFyc2VkID0gbmV3IERhdGUocmF3KTtcbiAgICBpZiAoIU51bWJlci5pc05hTihwYXJzZWQuZ2V0VGltZSgpKSkge1xuICAgICAgcmV0dXJuIHBhcnNlZDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG5ldyBEYXRlKCk7XG59XG5cbmZ1bmN0aW9uIGNsYXNzaWZ5Q2F0ZWdvcnkoXG4gIGV2ZW50VHlwZTogc3RyaW5nLFxuKTogXCJ1c2VyXCIgfCBcInNlc3Npb25cIiB8IFwiYWNjb3VudFwiIHwgXCJ2ZXJpZmljYXRpb25cIiB8IFwib3JnYW5pemF0aW9uXCIgfCBcInNlY3VyaXR5XCIge1xuICBpZiAoZXZlbnRUeXBlLnN0YXJ0c1dpdGgoXCJvcmdhbml6YXRpb25fXCIpKSB7XG4gICAgcmV0dXJuIFwib3JnYW5pemF0aW9uXCI7XG4gIH1cbiAgaWYgKFNFU1NJT05fRVZFTlRfVFlQRVMuaGFzKGV2ZW50VHlwZSkpIHtcbiAgICByZXR1cm4gXCJzZXNzaW9uXCI7XG4gIH1cbiAgaWYgKEFDQ09VTlRfRVZFTlRfVFlQRVMuaGFzKGV2ZW50VHlwZSkpIHtcbiAgICByZXR1cm4gXCJhY2NvdW50XCI7XG4gIH1cbiAgaWYgKFZFUklGSUNBVElPTl9FVkVOVF9UWVBFUy5oYXMoZXZlbnRUeXBlKSkge1xuICAgIHJldHVybiBcInZlcmlmaWNhdGlvblwiO1xuICB9XG4gIGlmIChTRUNVUklUWV9FVkVOVF9UWVBFUy5oYXMoZXZlbnRUeXBlKSkge1xuICAgIHJldHVybiBcInNlY3VyaXR5XCI7XG4gIH1cbiAgaWYgKFVTRVJfRVZFTlRfVFlQRVMuaGFzKGV2ZW50VHlwZSkpIHtcbiAgICByZXR1cm4gXCJ1c2VyXCI7XG4gIH1cbiAgcmV0dXJuIFwidXNlclwiO1xufVxuXG5mdW5jdGlvbiBjb21wdXRlRGVkdXBlS2V5KHBhcnRzOiB7XG4gIHNvdXJjZTogc3RyaW5nO1xuICBldmVudF90eXBlOiBzdHJpbmc7XG4gIGV2ZW50X2tleTogc3RyaW5nO1xuICBhY3Rvcl91c2VyX2lkOiBzdHJpbmcgfCBudWxsO1xuICBzdWJqZWN0X3VzZXJfaWQ6IHN0cmluZyB8IG51bGw7XG4gIG9yZ2FuaXphdGlvbl9pZDogc3RyaW5nIHwgbnVsbDtcbiAgdGVhbV9pZDogc3RyaW5nIHwgbnVsbDtcbiAgc2Vzc2lvbl9pZDogc3RyaW5nIHwgbnVsbDtcbiAgaWRlbnRpZmllcjogc3RyaW5nIHwgbnVsbDtcbiAgcmVhc29uOiBzdHJpbmcgfCBudWxsO1xuICBhY3Rpb246IHN0cmluZyB8IG51bGw7XG4gIG9jY3VycmVkX2F0OiBEYXRlO1xufSk6IHN0cmluZyB7XG4gIGNvbnN0IG5vcm0gPSAodjogc3RyaW5nIHwgbnVsbCk6IHN0cmluZyA9PiB2ID8/IFwiXCI7XG4gIGNvbnN0IHJhdyA9IFtcbiAgICBwYXJ0cy5zb3VyY2UsXG4gICAgcGFydHMuZXZlbnRfdHlwZSxcbiAgICBwYXJ0cy5ldmVudF9rZXksXG4gICAgbm9ybShwYXJ0cy5hY3Rvcl91c2VyX2lkKSxcbiAgICBub3JtKHBhcnRzLnN1YmplY3RfdXNlcl9pZCksXG4gICAgbm9ybShwYXJ0cy5vcmdhbml6YXRpb25faWQpLFxuICAgIG5vcm0ocGFydHMudGVhbV9pZCksXG4gICAgbm9ybShwYXJ0cy5zZXNzaW9uX2lkKSxcbiAgICBub3JtKHBhcnRzLmlkZW50aWZpZXIpLFxuICAgIG5vcm0ocGFydHMucmVhc29uKSxcbiAgICBub3JtKHBhcnRzLmFjdGlvbiksXG4gICAgcGFydHMub2NjdXJyZWRfYXQudG9JU09TdHJpbmcoKSxcbiAgXS5qb2luKFwifFwiKTtcbiAgcmV0dXJuIGNyZWF0ZUhhc2goXCJzaGEyNTZcIikudXBkYXRlKHJhdykuZGlnZXN0KFwiaGV4XCIpO1xufVxuXG4vKipcbiAqIHNvbmFtdUF1ZGl0TG9nIO2UjOufrOq3uOyduOydtCDqtazshLHtlZwgQXVkaXRMb2dFdmVudOulvCBhdWRpdF9ldmVudHMg7YWM7J2067iU7JeQIOyggeyerO2VqeuLiOuLpC5cbiAqIE9OIENPTkZMSUNUIChkZWR1cGVfa2V5KSBETyBOT1RISU5H7Jy866GcIOykkeuzteydhCBzaWxlbnQg66y07Iuc7ZWp64uI64ukLlxuICogYXV0aC5wbHVnaW5z7JeQIHNvbmFtdUF1ZGl0TG9nKCkg7LaU6rCAIOyLnCBzb25hbXUg64K067aA7JeQ7IScIOyekOuPmeycvOuhnCDtmLjstpzrkKnri4jri6QuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpbmdlc3RBdWRpdEV2ZW50KGRiOiBLbmV4LCBldmVudDogQXVkaXRMb2dFdmVudCk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBldmVudERhdGEgPSBldmVudC5ldmVudERhdGE7XG4gIGNvbnN0IG9jY3VycmVkX2F0ID0gcGFyc2VPY2N1cnJlZEF0KGV2ZW50RGF0YVtcIm9jY3VycmVkQXRcIl0pO1xuXG4gIGNvbnN0IGFjdG9yX3VzZXJfaWQgPSBwaWNrU3RyaW5nKGV2ZW50RGF0YSwgXCJ0cmlnZ2VyZWRCeVwiKTtcbiAgY29uc3Qgc3ViamVjdF91c2VyX2lkID0gcGlja0ZpcnN0U3RyaW5nKGV2ZW50RGF0YSwgW1xuICAgIFwidXNlcklkXCIsXG4gICAgXCJ1c2VyaWRcIixcbiAgICBcImFjY2VwdGVkQnlJZFwiLFxuICAgIFwicmVqZWN0ZWRCeUlkXCIsXG4gIF0pO1xuICBjb25zdCBvcmdhbml6YXRpb25faWQgPSBwaWNrU3RyaW5nKGV2ZW50RGF0YSwgXCJvcmdhbml6YXRpb25JZFwiKTtcbiAgY29uc3QgdGVhbV9pZCA9IHBpY2tGaXJzdFN0cmluZyhldmVudERhdGEsIFtcInRlYW1JZFwiLCBcImludml0ZWVUZWFtSWRcIl0pO1xuICBjb25zdCBzZXNzaW9uX2lkID0gcGlja1N0cmluZyhldmVudERhdGEsIFwic2Vzc2lvbklkXCIpO1xuICBjb25zdCBwcm92aWRlcl9pZCA9IHBpY2tTdHJpbmcoZXZlbnREYXRhLCBcInByb3ZpZGVySWRcIik7XG4gIGNvbnN0IGxvZ2luX21ldGhvZCA9IHBpY2tTdHJpbmcoZXZlbnREYXRhLCBcImxvZ2luTWV0aG9kXCIpO1xuICBjb25zdCBpZGVudGlmaWVyID0gcGlja0ZpcnN0U3RyaW5nKGV2ZW50RGF0YSwgW1xuICAgIFwiaWRlbnRpZmllclwiLFxuICAgIFwidXNlckVtYWlsXCIsXG4gICAgXCJtZW1iZXJFbWFpbFwiLFxuICAgIFwiaW52aXRlZUVtYWlsXCIsXG4gICAgXCJhY2NlcHRlZEJ5RW1haWxcIixcbiAgICBcInJlamVjdGVkQnlFbWFpbFwiLFxuICBdKTtcbiAgY29uc3QgdmlzaXRvcl9pZCA9IHBpY2tTdHJpbmcoZXZlbnREYXRhLCBcInZpc2l0b3JJZFwiKTtcbiAgY29uc3QgcmVhc29uID0gcGlja0ZpcnN0U3RyaW5nKGV2ZW50RGF0YSwgW1wicmVhc29uXCIsIFwiYmFuUmVhc29uXCJdKTtcbiAgY29uc3QgYWN0aW9uID0gcGlja1N0cmluZyhldmVudERhdGEsIFwiYWN0aW9uXCIpO1xuICBjb25zdCB0cmlnZ2VyX2NvbnRleHQgPSBwaWNrU3RyaW5nKGV2ZW50RGF0YSwgXCJ0cmlnZ2VyQ29udGV4dFwiKTtcbiAgY29uc3QgdXNlcl9hZ2VudCA9IHBpY2tTdHJpbmcoZXZlbnREYXRhLCBcInVzZXJBZ2VudFwiKTtcblxuICBjb25zdCBpcF9hZGRyZXNzID0gZXZlbnQuaXBBZGRyZXNzID8/IG51bGw7XG4gIGNvbnN0IGNpdHkgPSBldmVudC5jaXR5ID8/IG51bGw7XG4gIGNvbnN0IGNvdW50cnkgPSBldmVudC5jb3VudHJ5ID8/IG51bGw7XG4gIGNvbnN0IGNvdW50cnlfY29kZSA9IGV2ZW50LmNvdW50cnlDb2RlID8/IG51bGw7XG5cbiAgY29uc3QgY2F0ZWdvcnkgPSBjbGFzc2lmeUNhdGVnb3J5KGV2ZW50LmV2ZW50VHlwZSk7XG4gIGNvbnN0IGRlZHVwZV9rZXkgPSBjb21wdXRlRGVkdXBlS2V5KHtcbiAgICBzb3VyY2U6IEFVRElUX0VWRU5UX1NPVVJDRSxcbiAgICBldmVudF90eXBlOiBldmVudC5ldmVudFR5cGUsXG4gICAgZXZlbnRfa2V5OiBldmVudC5ldmVudEtleSxcbiAgICBhY3Rvcl91c2VyX2lkLFxuICAgIHN1YmplY3RfdXNlcl9pZCxcbiAgICBvcmdhbml6YXRpb25faWQsXG4gICAgdGVhbV9pZCxcbiAgICBzZXNzaW9uX2lkLFxuICAgIGlkZW50aWZpZXIsXG4gICAgcmVhc29uLFxuICAgIGFjdGlvbixcbiAgICBvY2N1cnJlZF9hdCxcbiAgfSk7XG5cbiAgLy8gT04gQ09ORkxJQ1QgRE8gTk9USElORzogZGVkdXBlX2tleSBVTklRVUUg7JyE67CY7J2EIHNpbGVudCDrrLTsi5wuXG4gIC8vIHRyeS9jYXRjaCDrsKnsi53snYAgUEcg7Luk64Sl7IWY7J2EIGFib3J0ZWQg7IOB7YOc66GcIOunjOuTnOuvgOuhnCDsgqzsmqntlZjsp4Ag7JWK64qU64ukLlxuICBjb25zdCBpbnNlcnRlZCA9IGF3YWl0IGRiKFwiYXVkaXRfZXZlbnRzXCIpXG4gICAgLmluc2VydCh7XG4gICAgICBzb3VyY2U6IEFVRElUX0VWRU5UX1NPVVJDRSxcbiAgICAgIHNvdXJjZV92ZXJzaW9uOiBBVURJVF9FVkVOVF9TT1VSQ0VfVkVSU0lPTixcbiAgICAgIGNhdGVnb3J5LFxuICAgICAgZXZlbnRfdHlwZTogZXZlbnQuZXZlbnRUeXBlLFxuICAgICAgZXZlbnRfa2V5OiBldmVudC5ldmVudEtleSxcbiAgICAgIGRlZHVwZV9rZXksXG4gICAgICBhY3Rvcl91c2VyX2lkLFxuICAgICAgc3ViamVjdF91c2VyX2lkLFxuICAgICAgb3JnYW5pemF0aW9uX2lkLFxuICAgICAgdGVhbV9pZCxcbiAgICAgIHNlc3Npb25faWQsXG4gICAgICBwcm92aWRlcl9pZCxcbiAgICAgIGxvZ2luX21ldGhvZCxcbiAgICAgIGlkZW50aWZpZXIsXG4gICAgICB2aXNpdG9yX2lkLFxuICAgICAgcmVhc29uLFxuICAgICAgYWN0aW9uLFxuICAgICAgdHJpZ2dlcl9jb250ZXh0LFxuICAgICAgaXBfYWRkcmVzcyxcbiAgICAgIGNvdW50cnlfY29kZSxcbiAgICAgIGNvdW50cnksXG4gICAgICBjaXR5LFxuICAgICAgdXNlcl9hZ2VudCxcbiAgICAgIHBheWxvYWRfanNvbjogZXZlbnREYXRhLFxuICAgICAgb2NjdXJyZWRfYXQsXG4gICAgfSlcbiAgICAub25Db25mbGljdChcImRlZHVwZV9rZXlcIilcbiAgICAuaWdub3JlKClcbiAgICAucmV0dXJuaW5nKFwiZGVkdXBlX2tleVwiKTtcblxuICBpZiAoaW5zZXJ0ZWQubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuOyAvLyBzaWxlbnQgZGVkdXBlXG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7QUFNQSxNQUFNLHFCQUFxQjtBQUMzQixNQUFNLDZCQUE2QjtBQUVuQyxNQUFNLHNDQUFzQixJQUFJLElBQVk7Q0FDMUM7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtBQUNGLENBQUM7QUFFRCxNQUFNLHNDQUFzQixJQUFJLElBQVk7Q0FDMUM7Q0FDQTtDQUNBO0NBSUE7Q0FDQTtDQUNBO0FBQ0YsQ0FBQztBQUVELE1BQU0sMkNBQTJCLElBQUksSUFBWTtDQUMvQztDQUNBO0NBQ0E7QUFDRixDQUFDO0FBRUQsTUFBTSx1Q0FBdUIsSUFBSSxJ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
177
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaXQtbG9nLWluZ2VzdG9yLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hdXRoL2F1ZGl0LWxvZy1pbmdlc3Rvci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVIYXNoIH0gZnJvbSBcIm5vZGU6Y3J5cHRvXCI7XG5cbmltcG9ydCB7IHR5cGUgS25leCB9IGZyb20gXCJrbmV4XCI7XG5cbmltcG9ydCB7IGdldFZhbGlkQ2xpZW50SXAgfSBmcm9tIFwiLi9hdWRpdC1sb2cvY2xpZW50LWlwXCI7XG5pbXBvcnQgeyB0eXBlIEF1ZGl0TG9nRXZlbnQgfSBmcm9tIFwiLi9hdWRpdC1sb2cvZXZlbnRzXCI7XG5cbmNvbnN0IEFVRElUX0VWRU5UX1NPVVJDRSA9IFwiYmV0dGVyX2F1dGhcIjtcbmNvbnN0IEFVRElUX0VWRU5UX1NPVVJDRV9WRVJTSU9OID0gXCJiZXR0ZXItYXV0aHxAYmV0dGVyLWF1dGgvaW5mcmFcIjtcblxuY29uc3QgU0VTU0lPTl9FVkVOVF9UWVBFUyA9IG5ldyBTZXQ8c3RyaW5nPihbXG4gIFwidXNlcl9zaWduZWRfaW5cIixcbiAgXCJ1c2VyX3NpZ25lZF9vdXRcIixcbiAgXCJ1c2VyX3NpZ25faW5fZmFpbGVkXCIsXG4gIFwic2Vzc2lvbl9jcmVhdGVkXCIsXG4gIFwic2Vzc2lvbl9yZXZva2VkXCIsXG4gIFwiYWxsX3Nlc3Npb25zX3Jldm9rZWRcIixcbiAgXCJ1c2VyX2ltcGVyc29uYXRlZFwiLFxuICBcInVzZXJfaW1wZXJzb25hdGVkX3N0b3BwZWRcIixcbl0pO1xuXG5jb25zdCBBQ0NPVU5UX0VWRU5UX1RZUEVTID0gbmV3IFNldDxzdHJpbmc+KFtcbiAgXCJhY2NvdW50X2xpbmtlZFwiLFxuICBcImFjY291bnRfdW5saW5rZWRcIixcbiAgXCJwYXNzd29yZF9jaGFuZ2VkXCIsXG5cbiAgLy8gQGJldHRlci1hdXRoL2luZnJhQDAuMS4xNCDquLDspIAgRVZFTlRfVFlQRVMg7IOB7IiY7JeQ64qUIOygleydmOuQmOyWtCDsnojsnLzrgpgg7Iuk7KCcIHRyYWNrRXZlbnQoKSDtmLjstpzsnbQg7JeG64qUIOuvuOq1rO2YhCDsnbTrsqTtirjsnoRcbiAgLy8g7Zal7ZuEIOuyhOyghOyXkOyEnCBlbWl065CgIOqyveyasOulvCDrjIDruYTtlbQgYWNjb3VudOuhnCDsnoTsi5wg65Ox66GdXG4gIFwidHdvX2ZhY3Rvcl9lbmFibGVkXCIsXG4gIFwidHdvX2ZhY3Rvcl9kaXNhYmxlZFwiLFxuICBcInR3b19mYWN0b3JfdmVyaWZpZWRcIixcbl0pO1xuXG5jb25zdCBWRVJJRklDQVRJT05fRVZFTlRfVFlQRVMgPSBuZXcgU2V0PHN0cmluZz4oW1xuICBcImVtYWlsX3ZlcmlmaWNhdGlvbl9zZW50XCIsXG4gIFwicGFzc3dvcmRfcmVzZXRfcmVxdWVzdGVkXCIsXG4gIFwicGFzc3dvcmRfcmVzZXRfY29tcGxldGVkXCIsXG5dKTtcblxuY29uc3QgU0VDVVJJVFlfRVZFTlRfVFlQRVMgPSBuZXcgU2V0PHN0cmluZz4oW1xuICBcInNlY3VyaXR5X2Jsb2NrZWRcIixcbiAgXCJzZWN1cml0eV9hbGxvd2VkXCIsXG4gIFwic2VjdXJpdHlfY2hhbGxlbmdlZFwiLFxuICBcInNlY3VyaXR5X3N0YWxlX2FjY291bnRcIixcbl0pO1xuXG5jb25zdCBVU0VSX0VWRU5UX1RZUEVTID0gbmV3IFNldDxzdHJpbmc+KFtcbiAgXCJ1c2VyX2NyZWF0ZWRcIixcbiAgXCJwcm9maWxlX3VwZGF0ZWRcIixcbiAgXCJwcm9maWxlX2ltYWdlX3VwZGF0ZWRcIixcbiAgXCJlbWFpbF92ZXJpZmllZFwiLFxuICBcInVzZXJfYmFubmVkXCIsXG4gIFwidXNlcl91bmJhbm5lZFwiLFxuICBcInVzZXJfZGVsZXRlZFwiLFxuXSk7XG5cbmZ1bmN0aW9uIHBpY2tTdHJpbmcoc291cmNlOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwga2V5OiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgY29uc3QgdmFsdWUgPSBzb3VyY2Vba2V5XTtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiA/IHZhbHVlIDogbnVsbDtcbn1cblxuZnVuY3Rpb24gcGlja0ZpcnN0U3RyaW5nKHNvdXJjZTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIGtleXM6IHJlYWRvbmx5IHN0cmluZ1tdKTogc3RyaW5nIHwgbnVsbCB7XG4gIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHBpY2tTdHJpbmcoc291cmNlLCBrZXkpO1xuICAgIGlmICh2YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuZnVuY3Rpb24gcGFyc2VPY2N1cnJlZEF0KHJhdzogdW5rbm93bik6IERhdGUge1xuICBpZiAocmF3IGluc3RhbmNlb2YgRGF0ZSAmJiAhTnVtYmVyLmlzTmFOKHJhdy5nZXRUaW1lKCkpKSB7XG4gICAgcmV0dXJuIHJhdztcbiAgfVxuICBpZiAodHlwZW9mIHJhdyA9PT0gXCJzdHJpbmdcIikge1xuICAgIGNvbnN0IHBhcnNlZCA9IG5ldyBEYXRlKHJhdyk7XG4gICAgaWYgKCFOdW1iZXIuaXNOYU4ocGFyc2VkLmdldFRpbWUoKSkpIHtcbiAgICAgIHJldHVybiBwYXJzZWQ7XG4gICAgfVxuICB9XG4gIHJldHVybiBuZXcgRGF0ZSgpO1xufVxuXG5mdW5jdGlvbiBjbGFzc2lmeUNhdGVnb3J5KFxuICBldmVudFR5cGU6IHN0cmluZyxcbik6IFwidXNlclwiIHwgXCJzZXNzaW9uXCIgfCBcImFjY291bnRcIiB8IFwidmVyaWZpY2F0aW9uXCIgfCBcIm9yZ2FuaXphdGlvblwiIHwgXCJzZWN1cml0eVwiIHtcbiAgaWYgKGV2ZW50VHlwZS5zdGFydHNXaXRoKFwib3JnYW5pemF0aW9uX1wiKSkge1xuICAgIHJldHVybiBcIm9yZ2FuaXphdGlvblwiO1xuICB9XG4gIGlmIChTRVNTSU9OX0VWRU5UX1RZUEVTLmhhcyhldmVudFR5cGUpKSB7XG4gICAgcmV0dXJuIFwic2Vzc2lvblwiO1xuICB9XG4gIGlmIChBQ0NPVU5UX0VWRU5UX1RZUEVTLmhhcyhldmVudFR5cGUpKSB7XG4gICAgcmV0dXJuIFwiYWNjb3VudFwiO1xuICB9XG4gIGlmIChWRVJJRklDQVRJT05fRVZFTlRfVFlQRVMuaGFzKGV2ZW50VHlwZSkpIHtcbiAgICByZXR1cm4gXCJ2ZXJpZmljYXRpb25cIjtcbiAgfVxuICBpZiAoU0VDVVJJVFlfRVZFTlRfVFlQRVMuaGFzKGV2ZW50VHlwZSkpIHtcbiAgICByZXR1cm4gXCJzZWN1cml0eVwiO1xuICB9XG4gIGlmIChVU0VSX0VWRU5UX1RZUEVTLmhhcyhldmVudFR5cGUpKSB7XG4gICAgcmV0dXJuIFwidXNlclwiO1xuICB9XG4gIHJldHVybiBcInVzZXJcIjtcbn1cblxuZnVuY3Rpb24gY29tcHV0ZURlZHVwZUtleShwYXJ0czoge1xuICBzb3VyY2U6IHN0cmluZztcbiAgZXZlbnRfdHlwZTogc3RyaW5nO1xuICBldmVudF9rZXk6IHN0cmluZztcbiAgYWN0b3JfdXNlcl9pZDogc3RyaW5nIHwgbnVsbDtcbiAgc3ViamVjdF91c2VyX2lkOiBzdHJpbmcgfCBudWxsO1xuICBvcmdhbml6YXRpb25faWQ6IHN0cmluZyB8IG51bGw7XG4gIHRlYW1faWQ6IHN0cmluZyB8IG51bGw7XG4gIHNlc3Npb25faWQ6IHN0cmluZyB8IG51bGw7XG4gIGlkZW50aWZpZXI6IHN0cmluZyB8IG51bGw7XG4gIHJlYXNvbjogc3RyaW5nIHwgbnVsbDtcbiAgYWN0aW9uOiBzdHJpbmcgfCBudWxsO1xuICBvY2N1cnJlZF9hdDogRGF0ZTtcbn0pOiBzdHJpbmcge1xuICBjb25zdCBub3JtID0gKHY6IHN0cmluZyB8IG51bGwpOiBzdHJpbmcgPT4gdiA/PyBcIlwiO1xuICBjb25zdCByYXcgPSBbXG4gICAgcGFydHMuc291cmNlLFxuICAgIHBhcnRzLmV2ZW50X3R5cGUsXG4gICAgcGFydHMuZXZlbnRfa2V5LFxuICAgIG5vcm0ocGFydHMuYWN0b3JfdXNlcl9pZCksXG4gICAgbm9ybShwYXJ0cy5zdWJqZWN0X3VzZXJfaWQpLFxuICAgIG5vcm0ocGFydHMub3JnYW5pemF0aW9uX2lkKSxcbiAgICBub3JtKHBhcnRzLnRlYW1faWQpLFxuICAgIG5vcm0ocGFydHMuc2Vzc2lvbl9pZCksXG4gICAgbm9ybShwYXJ0cy5pZGVudGlmaWVyKSxcbiAgICBub3JtKHBhcnRzLnJlYXNvbiksXG4gICAgbm9ybShwYXJ0cy5hY3Rpb24pLFxuICAgIHBhcnRzLm9jY3VycmVkX2F0LnRvSVNPU3RyaW5nKCksXG4gIF0uam9pbihcInxcIik7XG4gIHJldHVybiBjcmVhdGVIYXNoKFwic2hhMjU2XCIpLnVwZGF0ZShyYXcpLmRpZ2VzdChcImhleFwiKTtcbn1cblxuZnVuY3Rpb24gY29tcHV0ZUV2ZW50SWREZWR1cGVLZXkoc291cmNlOiBzdHJpbmcsIGV2ZW50SWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBjcmVhdGVIYXNoKFwic2hhMjU2XCIpLnVwZGF0ZShgJHtzb3VyY2V9fCR7ZXZlbnRJZH1gKS5kaWdlc3QoXCJoZXhcIik7XG59XG5cbi8qKlxuICogc29uYW11QXVkaXRMb2cg7ZSM65+s6re47J247J20IOq1rOyEse2VnCBBdWRpdExvZ0V2ZW5066W8IGF1ZGl0X2V2ZW50cyDthYzsnbTruJTsl5Ag7KCB7J6s7ZWp64uI64ukLlxuICogT04gQ09ORkxJQ1QgKGRlZHVwZV9rZXkpIERPIE5PVEhJTkfsnLzroZwg7KSR67O17J2EIHNpbGVudCDrrLTsi5ztlanri4jri6QuXG4gKiBhdXRoLnBsdWdpbnPsl5Agc29uYW11QXVkaXRMb2coKSDstpTqsIAg7IucIHNvbmFtdSDrgrTrtoDsl5DshJwg7J6Q64+Z7Jy866GcIO2YuOy2nOuQqeuLiOuLpC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGluZ2VzdEF1ZGl0RXZlbnQoZGI6IEtuZXgsIGV2ZW50OiBBdWRpdExvZ0V2ZW50KTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IGV2ZW50RGF0YSA9IGV2ZW50LmV2ZW50RGF0YTtcbiAgY29uc3Qgb2NjdXJyZWRfYXQgPSBwYXJzZU9jY3VycmVkQXQoZXZlbnREYXRhW1wib2NjdXJyZWRBdFwiXSk7XG5cbiAgY29uc3QgYWN0b3JfdXNlcl9pZCA9IHBpY2tTdHJpbmcoZXZlbnREYXRhLCBcInRyaWdnZXJlZEJ5XCIpO1xuICBjb25zdCBzdWJqZWN0X3VzZXJfaWQgPSBwaWNrRmlyc3RTdHJpbmcoZXZlbnREYXRhLCBbXG4gICAgXCJ1c2VySWRcIixcbiAgICBcInVzZXJpZFwiLFxuICAgIFwiYWNjZXB0ZWRCeUlkXCIsXG4gICAgXCJyZWplY3RlZEJ5SWRcIixcbiAgXSk7XG4gIGNvbnN0IG9yZ2FuaXphdGlvbl9pZCA9IHBpY2tTdHJpbmcoZXZlbnREYXRhLCBcIm9yZ2FuaXphdGlvbklkXCIpO1xuICBjb25zdCB0ZWFtX2lkID0gcGlja0ZpcnN0U3RyaW5nKGV2ZW50RGF0YSwgW1widGVhbUlkXCIsIFwiaW52aXRlZVRlYW1JZFwiXSk7XG4gIGNvbnN0IHNlc3Npb25faWQgPSBwaWNrU3RyaW5nKGV2ZW50RGF0YSwgXCJzZXNzaW9uSWRcIik7XG4gIGNvbnN0IHByb3ZpZGVyX2lkID0gcGlja1N0cmluZyhldmVudERhdGEsIFwicHJvdmlkZXJJZFwiKTtcbiAgY29uc3QgbG9naW5fbWV0aG9kID0gcGlja1N0cmluZyhldmVudERhdGEsIFwibG9naW5NZXRob2RcIik7XG4gIGNvbnN0IGlkZW50aWZpZXIgPSBwaWNrRmlyc3RTdHJpbmcoZXZlbnREYXRhLCBbXG4gICAgXCJpZGVudGlmaWVyXCIsXG4gICAgXCJ1c2VyRW1haWxcIixcbiAgICBcIm1lbWJlckVtYWlsXCIsXG4gICAgXCJpbnZpdGVlRW1haWxcIixcbiAgICBcImFjY2VwdGVkQnlFbWFpbFwiLFxuICAgIFwicmVqZWN0ZWRCeUVtYWlsXCIsXG4gIF0pO1xuICBjb25zdCB2aXNpdG9yX2lkID0gcGlja1N0cmluZyhldmVudERhdGEsIFwidmlzaXRvcklkXCIpO1xuICBjb25zdCByZWFzb24gPSBwaWNrRmlyc3RTdHJpbmcoZXZlbnREYXRhLCBbXCJyZWFzb25cIiwgXCJiYW5SZWFzb25cIl0pO1xuICBjb25zdCBhY3Rpb24gPSBwaWNrU3RyaW5nKGV2ZW50RGF0YSwgXCJhY3Rpb25cIik7XG4gIGNvbnN0IHRyaWdnZXJfY29udGV4dCA9IHBpY2tTdHJpbmcoZXZlbnREYXRhLCBcInRyaWdnZXJDb250ZXh0XCIpO1xuICBjb25zdCB1c2VyX2FnZW50ID0gcGlja1N0cmluZyhldmVudERhdGEsIFwidXNlckFnZW50XCIpO1xuXG4gIGNvbnN0IGlwX2FkZHJlc3MgPSBnZXRWYWxpZENsaWVudElwKGV2ZW50LmlwQWRkcmVzcyk7XG4gIGNvbnN0IGNpdHkgPSBldmVudC5jaXR5ID8/IG51bGw7XG4gIGNvbnN0IGNvdW50cnkgPSBldmVudC5jb3VudHJ5ID8/IG51bGw7XG4gIGNvbnN0IGNvdW50cnlfY29kZSA9IGV2ZW50LmNvdW50cnlDb2RlID8/IG51bGw7XG5cbiAgY29uc3QgY2F0ZWdvcnkgPSBjbGFzc2lmeUNhdGVnb3J5KGV2ZW50LmV2ZW50VHlwZSk7XG4gIGNvbnN0IGRlZHVwZV9rZXkgPSBldmVudC5ldmVudElkXG4gICAgPyBjb21wdXRlRXZlbnRJZERlZHVwZUtleShBVURJVF9FVkVOVF9TT1VSQ0UsIGV2ZW50LmV2ZW50SWQpXG4gICAgOiBjb21wdXRlRGVkdXBlS2V5KHtcbiAgICAgICAgc291cmNlOiBBVURJVF9FVkVOVF9TT1VSQ0UsXG4gICAgICAgIGV2ZW50X3R5cGU6IGV2ZW50LmV2ZW50VHlwZSxcbiAgICAgICAgZXZlbnRfa2V5OiBldmVudC5ldmVudEtleSxcbiAgICAgICAgYWN0b3JfdXNlcl9pZCxcbiAgICAgICAgc3ViamVjdF91c2VyX2lkLFxuICAgICAgICBvcmdhbml6YXRpb25faWQsXG4gICAgICAgIHRlYW1faWQsXG4gICAgICAgIHNlc3Npb25faWQsXG4gICAgICAgIGlkZW50aWZpZXIsXG4gICAgICAgIHJlYXNvbixcbiAgICAgICAgYWN0aW9uLFxuICAgICAgICBvY2N1cnJlZF9hdCxcbiAgICAgIH0pO1xuXG4gIC8vIE9OIENPTkZMSUNUIERPIE5PVEhJTkc6IGRlZHVwZV9rZXkgVU5JUVVFIOychOuwmOydhCBzaWxlbnQg66y07IucLlxuICAvLyB0cnkvY2F0Y2gg67Cp7Iud7J2AIFBHIOy7pOuEpeyFmOydhCBhYm9ydGVkIOyDge2DnOuhnCDrp4zrk5zrr4DroZwg7IKs7Jqp7ZWY7KeAIOyViuuKlOuLpC5cbiAgY29uc3QgaW5zZXJ0ZWQgPSBhd2FpdCBkYihcImF1ZGl0X2V2ZW50c1wiKVxuICAgIC5pbnNlcnQoe1xuICAgICAgc291cmNlOiBBVURJVF9FVkVOVF9TT1VSQ0UsXG4gICAgICBzb3VyY2VfdmVyc2lvbjogQVVESVRfRVZFTlRfU09VUkNFX1ZFUlNJT04sXG4gICAgICBjYXRlZ29yeSxcbiAgICAgIGV2ZW50X3R5cGU6IGV2ZW50LmV2ZW50VHlwZSxcbiAgICAgIGV2ZW50X2tleTogZXZlbnQuZXZlbnRLZXksXG4gICAgICBkZWR1cGVfa2V5LFxuICAgICAgYWN0b3JfdXNlcl9pZCxcbiAgICAgIHN1YmplY3RfdXNlcl9pZCxcbiAgICAgIG9yZ2FuaXphdGlvbl9pZCxcbiAgICAgIHRlYW1faWQsXG4gICAgICBzZXNzaW9uX2lkLFxuICAgICAgcHJvdmlkZXJfaWQsXG4gICAgICBsb2dpbl9tZXRob2QsXG4gICAgICBpZGVudGlmaWVyLFxuICAgICAgdmlzaXRvcl9pZCxcbiAgICAgIHJlYXNvbixcbiAgICAgIGFjdGlvbixcbiAgICAgIHRyaWdnZXJfY29udGV4dCxcbiAgICAgIGlwX2FkZHJlc3MsXG4gICAgICBjb3VudHJ5X2NvZGUsXG4gICAgICBjb3VudHJ5LFxuICAgICAgY2l0eSxcbiAgICAgIHVzZXJfYWdlbnQsXG4gICAgICBwYXlsb2FkX2pzb246IGV2ZW50RGF0YSxcbiAgICAgIG9jY3VycmVkX2F0LFxuICAgIH0pXG4gICAgLm9uQ29uZmxpY3QoXCJkZWR1cGVfa2V5XCIpXG4gICAgLmlnbm9yZSgpXG4gICAgLnJldHVybmluZyhcImRlZHVwZV9rZXlcIik7XG5cbiAgaWYgKGluc2VydGVkLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybjsgLy8gc2lsZW50IGRlZHVwZVxuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7OztlQUl3RDtBQUd4RCxNQUFNLHFCQUFxQjtBQUMzQixNQUFNLDZCQUE2QjtBQUVuQyxNQUFNLHNDQUFzQixJQUFJLElBQVk7Q0FDMUM7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtBQUNGLENBQUM7QUFFRCxNQUFNLHNDQUFzQixJQUFJLElBQVk7Q0FDMUM7Q0FDQTtDQUNBO0NBSUE7Q0FDQTtDQUNBO0FBQ0YsQ0FBQztBQUVELE1BQU0sMkNBQTJCLElBQUksSUFBWTtDQUMvQztDQUNBO0NBQ0E7QUFDRixDQUFDO0FBRUQsTUFBTSx1Q0FBdUIsSUFBSSxJQUFZO0NBQzNDO0NBQ0E7Q0FDQTtDQUNBO0FBQ0YsQ0FBQztBQUVELE1BQU0sbUNBQW1CLElBQUksSUFBWTtDQUN2QztDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtBQUNGLENBQUM7QUFFRCxTQUFTLFdBQVcsUUFBaUMsS0FBNEI7Q0FDL0UsTUFBTSxRQUFRLE9BQU87Q0FDckIsT0FBTyxPQUFPLFVBQVUsV0FBVyxRQUFRO0FBQzdDO0FBRUEsU0FBUyxnQkFBZ0IsUUFBaUMsTUFBd0M7Q0FDaEcsS0FBSyxNQUFNLE9BQU8sTUFBTTtFQUN0QixNQUFNLFFBQVEsV0FBVyxRQUFRLEdBQUc7RUFDcEMsSUFBSSxVQUFVLE1BQ1osT0FBTztDQUVYO0NBQ0EsT0FBTztBQUNUO0FBRUEsU0FBUyxnQkFBZ0IsS0FBb0I7Q0FDM0MsSUFBSSxlQUFlLFFBQVEsQ0FBQyxPQUFPLE1BQU0sSUFBSSxRQUFRLENBQUMsR0FDcEQsT0FBTztDQUVULElBQUksT0FBTyxRQUFRLFVBQVU7RUFDM0IsTUFBTSxTQUFTLElBQUksS0FBSyxHQUFHO0VBQzNCLElBQUksQ0FBQyxPQUFPLE1BQU0sT0FBTyxRQUFRLENBQUMsR0FDaEMsT0FBTztD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
@@ -0,0 +1,3 @@
1
+ import { type FastifyRequest } from "fastify";
2
+ export declare function createBetterAuthRequest(request: FastifyRequest, ipAddressHeaders?: readonly string[]): Request;
3
+ //# sourceMappingURL=better-auth-request.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"better-auth-request.d.ts","sourceRoot":"","sources":["../../src/auth/better-auth-request.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,SAAS,CAAC;AAK9C,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,cAAc,EACvB,gBAAgB,CAAC,EAAE,SAAS,MAAM,EAAE,GACnC,OAAO,CAWT"}
@@ -0,0 +1,23 @@
1
+ import { __esmMin } from "../_virtual/_rolldown/runtime.js";
2
+ import { convertFastifyHeadersToStandard, init_utils } from "../utils/utils.js";
3
+ import { init_client_ip, replaceClientIpHeaders } from "./audit-log/client-ip.js";
4
+ //#region src/auth/better-auth-request.ts
5
+ function createBetterAuthRequest(request, ipAddressHeaders) {
6
+ const url = new URL(request.url, `http://${request.headers.host}`);
7
+ const headers = convertFastifyHeadersToStandard(request.headers);
8
+ replaceClientIpHeaders(headers, request.ip, ipAddressHeaders);
9
+ return new Request(url.toString(), {
10
+ method: request.method,
11
+ headers,
12
+ ...request.body ? { body: JSON.stringify(request.body) } : {}
13
+ });
14
+ }
15
+ var init_better_auth_request = __esmMin((() => {
16
+ init_utils();
17
+ init_client_ip();
18
+ }));
19
+ //#endregion
20
+ init_better_auth_request();
21
+ export { createBetterAuthRequest, init_better_auth_request };
22
+
23
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmV0dGVyLWF1dGgtcmVxdWVzdC5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi9zcmMvYXV0aC9iZXR0ZXItYXV0aC1yZXF1ZXN0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgRmFzdGlmeVJlcXVlc3QgfSBmcm9tIFwiZmFzdGlmeVwiO1xuXG5pbXBvcnQgeyBjb252ZXJ0RmFzdGlmeUhlYWRlcnNUb1N0YW5kYXJkIH0gZnJvbSBcIi4uL3V0aWxzL3V0aWxzXCI7XG5pbXBvcnQgeyByZXBsYWNlQ2xpZW50SXBIZWFkZXJzIH0gZnJvbSBcIi4vYXVkaXQtbG9nL2NsaWVudC1pcFwiO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQmV0dGVyQXV0aFJlcXVlc3QoXG4gIHJlcXVlc3Q6IEZhc3RpZnlSZXF1ZXN0LFxuICBpcEFkZHJlc3NIZWFkZXJzPzogcmVhZG9ubHkgc3RyaW5nW10sXG4pOiBSZXF1ZXN0IHtcbiAgY29uc3QgdXJsID0gbmV3IFVSTChyZXF1ZXN0LnVybCwgYGh0dHA6Ly8ke3JlcXVlc3QuaGVhZGVycy5ob3N0fWApO1xuICBjb25zdCBoZWFkZXJzID0gY29udmVydEZhc3RpZnlIZWFkZXJzVG9TdGFuZGFyZChyZXF1ZXN0LmhlYWRlcnMpO1xuXG4gIHJlcGxhY2VDbGllbnRJcEhlYWRlcnMoaGVhZGVycywgcmVxdWVzdC5pcCwgaXBBZGRyZXNzSGVhZGVycyk7XG5cbiAgcmV0dXJuIG5ldyBSZXF1ZXN0KHVybC50b1N0cmluZygpLCB7XG4gICAgbWV0aG9kOiByZXF1ZXN0Lm1ldGhvZCxcbiAgICBoZWFkZXJzLFxuICAgIC4uLihyZXF1ZXN0LmJvZHkgPyB7IGJvZHk6IEpTT04uc3RyaW5naWZ5KHJlcXVlc3QuYm9keSkgfSA6IHt9KSxcbiAgfSk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7QUFLQSxTQUFnQix3QkFDZCxTQUNBLGtCQUNTO0NBQ1QsTUFBTSxNQUFNLElBQUksSUFBSSxRQUFRLEtBQUssVUFBVSxRQUFRLFFBQVEsTUFBTTtDQUNqRSxNQUFNLFVBQVUsZ0NBQWdDLFFBQVEsT0FBTztDQUUvRCx1QkFBdUIsU0FBUyxRQUFRLElBQUksZ0JBQWdCO0NBRTVELE9BQU8sSUFBSSxRQUFRLElBQUksU0FBUyxHQUFHO0VBQ2pDLFFBQVEsUUFBUTtFQUNoQjtFQUNBLEdBQUksUUFBUSxPQUFPLEVBQUUsTUFBTSxLQUFLLFVBQVUsUUFBUSxJQUFJLEVBQUUsSUFBSSxDQUFDO0NBQy9ELENBQUM7QUFDSDs7WUFqQmdFO2dCQUNGIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"build-config.d.ts","sourceRoot":"","sources":["../../src/bin/build-config.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,CAAC,gBAAgB,GAAG,EAAE,IAAI;IACjD,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,MAAM,CAAC;IAC/B,YAAY,EAAE,CAAC,IAAI,EAAE,gBAAgB,KAAK,MAAM,CAAC;IACjD,gBAAgB,CAAC,EAAE,MAAM,MAAM,CAAC;CACjC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,aAAa,CAAC;IAAE,cAAc,EAAE,MAAM,CAAA;CAAE,CAAC,EASpE,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,aAAa,EAkBxC,CAAC"}
1
+ {"version":3,"file":"build-config.d.ts","sourceRoot":"","sources":["../../src/bin/build-config.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,CAAC,gBAAgB,GAAG,EAAE,IAAI;IACjD,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,MAAM,CAAC;IAC/B,YAAY,EAAE,CAAC,IAAI,EAAE,gBAAgB,KAAK,MAAM,CAAC;IACjD,gBAAgB,CAAC,EAAE,MAAM,MAAM,CAAC;CACjC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,aAAa,CAAC;IAAE,cAAc,EAAE,MAAM,CAAA;CAAE,CAAC,EASpE,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,aAAa,EAmBxC,CAAC"}
@@ -19,16 +19,16 @@ const WEB_ARTIFACTS = [{
19
19
  description: "Web 프로젝트 클라이언트 빌드 산출물",
20
20
  projectPath: "web",
21
21
  preBuildCommand: () => "rm -rf dist/client",
22
- buildCommand: () => "tsc --noEmit && vite build --config vite.config.ts --outDir dist/client"
22
+ buildCommand: () => "tsc -b --noEmit && vite build --config vite.config.ts --outDir dist/client"
23
23
  }, {
24
24
  name: "Web Server",
25
25
  description: "Web 프로젝트 서버 빌드 산출물",
26
26
  projectPath: "web",
27
27
  preBuildCommand: () => "rm -rf dist/server",
28
- buildCommand: () => "tsc --noEmit && vite build --config vite.config.ts --ssr src/entry-server.generated.tsx --outDir dist/server",
28
+ buildCommand: () => "tsc -b --noEmit && vite build --config vite.config.ts --ssr src/entry-server.generated.tsx --outDir dist/server",
29
29
  postBuildCommand: () => "rm -rf ../api/web-dist && mkdir -p ../api/web-dist && cp -r dist/* ../api/web-dist"
30
30
  }];
31
31
  //#endregion
32
32
  export { API_ARTIFACTS, WEB_ARTIFACTS };
33
33
 
34
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQtY29uZmlnLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9iaW4vYnVpbGQtY29uZmlnLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIEJ1aWxkQXJ0aWZhY3Q8QnVpbGRDb21tYW5kQXJncyA9IHt9PiA9IHtcbiAgbmFtZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICBwcm9qZWN0UGF0aDogc3RyaW5nO1xuICBwcmVCdWlsZENvbW1hbmQ/OiAoKSA9PiBzdHJpbmc7XG4gIGJ1aWxkQ29tbWFuZDogKGFyZ3M6IEJ1aWxkQ29tbWFuZEFyZ3MpID0+IHN0cmluZztcbiAgcG9zdEJ1aWxkQ29tbWFuZD86ICgpID0+IHN0cmluZztcbn07XG5cbi8qKlxuICogQVBJIO2UhOuhnOygne2KuCDruYzrk5wg7IKw7Lac66y87JeQIOuMgO2VnCDqt5zsuZnrk6QuXG4gKiBjbGkudHPsnZggYnVpbGRfYXBpIO2VqOyImOqwgCDsnbTqsoPsnYQg67O06rOgIOq3uOuMgOuhnCDsi6Ttlontlanri4jri6QuXG4gKi9cbmV4cG9ydCBjb25zdCBBUElfQVJUSUZBQ1RTOiBCdWlsZEFydGlmYWN0PHsgY29uZmlnRmlsZVBhdGg6IHN0cmluZyB9PltdID0gW1xuICB7XG4gICAgbmFtZTogXCJBUElcIixcbiAgICBkZXNjcmlwdGlvbjogXCJBUEkg7ZSE66Gc7KCd7Yq4IOu5jOuTnCDsgrDstpzrrLxcIixcbiAgICBwcm9qZWN0UGF0aDogXCJhcGlcIixcbiAgICBwcmVCdWlsZENvbW1hbmQ6ICgpID0+IFwicm0gLXJmIGRpc3RcIixcbiAgICBidWlsZENvbW1hbmQ6ICh7IGNvbmZpZ0ZpbGVQYXRoIH0pID0+XG4gICAgICBgdHNjIC0tbm9FbWl0ICYmIHBucG0gZXhlYyB0c2Rvd24gLS1jb25maWcgJHtKU09OLnN0cmluZ2lmeShjb25maWdGaWxlUGF0aCl9YCxcbiAgfSxcbl07XG5cbi8qKlxuICog7Ju5IO2UhOuhnOygne2KuCDruYzrk5wg7IKw7Lac66y87JeQIOuMgO2VnCDqt5zsuZnrk6QuXG4gKiBjbGkudHPsnZggYnVpbGRfd2ViIO2VqOyImOqwgCDsnbTqsoPsnYQg67O06rOgIOq3uOuMgOuhnCDsi6Ttlontlanri4jri6QuXG4gKi9cbmV4cG9ydCBjb25zdCBXRUJfQVJUSUZBQ1RTOiBCdWlsZEFydGlmYWN0W10gPSBbXG4gIHtcbiAgICBuYW1lOiBcIldlYiBDbGllbnRcIixcbiAgICBkZXNjcmlwdGlvbjogXCJXZWIg7ZSE66Gc7KCd7Yq4IO2BtOudvOydtOyWuO2KuCDruYzrk5wg7IKw7Lac66y8XCIsXG4gICAgcHJvamVjdFBhdGg6IFwid2ViXCIsXG4gICAgcHJlQnVpbGRDb21tYW5kOiAoKSA9PiBcInJtIC1yZiBkaXN0L2NsaWVudFwiLFxuICAgIGJ1aWxkQ29tbWFuZDogKCkgPT4gXCJ0c2MgLS1ub0VtaXQgJiYgdml0ZSBidWlsZCAtLWNvbmZpZyB2aXRlLmNvbmZpZy50cyAtLW91dERpciBkaXN0L2NsaWVudFwiLFxuICB9LFxuICB7XG4gICAgbmFtZTogXCJXZWIgU2VydmVyXCIsXG4gICAgZGVzY3JpcHRpb246IFwiV2ViIO2UhOuhnOygne2KuCDshJzrsoQg67mM65OcIOyCsOy2nOusvFwiLFxuICAgIHByb2plY3RQYXRoOiBcIndlYlwiLFxuICAgIHByZUJ1aWxkQ29tbWFuZDogKCkgPT4gXCJybSAtcmYgZGlzdC9zZXJ2ZXJcIixcbiAgICBidWlsZENvbW1hbmQ6ICgpID0+XG4gICAgICBcInRzYyAtLW5vRW1pdCAmJiB2aXRlIGJ1aWxkIC0tY29uZmlnIHZpdGUuY29uZmlnLnRzIC0tc3NyIHNyYy9lbnRyeS1zZXJ2ZXIuZ2VuZXJhdGVkLnRzeCAtLW91dERpciBkaXN0L3NlcnZlclwiLFxuICAgIHBvc3RCdWlsZENvbW1hbmQ6ICgpID0+XG4gICAgICBcInJtIC1yZiAuLi9hcGkvd2ViLWRpc3QgJiYgbWtkaXIgLXAgLi4vYXBpL3dlYi1kaXN0ICYmIGNwIC1yIGRpc3QvKiAuLi9hcGkvd2ViLWRpc3RcIixcbiAgfSxcbl07XG4iXSwibWFwcGluZ3MiOiI7Ozs7O0FBYUEsTUFBYSxnQkFBNkQsQ0FDeEU7Q0FDRSxNQUFNO0NBQ04sYUFBYTtDQUNiLGFBQWE7Q0FDYix1QkFBdUI7Q0FDdkIsZUFBZSxFQUFFLHFCQUNmLDZDQUE2QyxLQUFLLFVBQVUsY0FBYztBQUM5RSxDQUNGOzs7OztBQU1BLE1BQWEsZ0JBQWlDLENBQzVDO0NBQ0UsTUFBTTtDQUNOLGFBQWE7Q0FDYixhQUFhO0NBQ2IsdUJBQXVCO0NBQ3ZCLG9CQUFvQjtBQUN0QixHQUNBO0NBQ0UsTUFBTTtDQUNOLGFBQWE7Q0FDYixhQUFhO0NBQ2IsdUJBQXVCO0NBQ3ZCLG9CQUNFO0NBQ0Ysd0JBQ0U7QUFDSixDQUNGIn0=
34
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQtY29uZmlnLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9iaW4vYnVpbGQtY29uZmlnLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIEJ1aWxkQXJ0aWZhY3Q8QnVpbGRDb21tYW5kQXJncyA9IHt9PiA9IHtcbiAgbmFtZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICBwcm9qZWN0UGF0aDogc3RyaW5nO1xuICBwcmVCdWlsZENvbW1hbmQ/OiAoKSA9PiBzdHJpbmc7XG4gIGJ1aWxkQ29tbWFuZDogKGFyZ3M6IEJ1aWxkQ29tbWFuZEFyZ3MpID0+IHN0cmluZztcbiAgcG9zdEJ1aWxkQ29tbWFuZD86ICgpID0+IHN0cmluZztcbn07XG5cbi8qKlxuICogQVBJIO2UhOuhnOygne2KuCDruYzrk5wg7IKw7Lac66y87JeQIOuMgO2VnCDqt5zsuZnrk6QuXG4gKiBjbGkudHPsnZggYnVpbGRfYXBpIO2VqOyImOqwgCDsnbTqsoPsnYQg67O06rOgIOq3uOuMgOuhnCDsi6Ttlontlanri4jri6QuXG4gKi9cbmV4cG9ydCBjb25zdCBBUElfQVJUSUZBQ1RTOiBCdWlsZEFydGlmYWN0PHsgY29uZmlnRmlsZVBhdGg6IHN0cmluZyB9PltdID0gW1xuICB7XG4gICAgbmFtZTogXCJBUElcIixcbiAgICBkZXNjcmlwdGlvbjogXCJBUEkg7ZSE66Gc7KCd7Yq4IOu5jOuTnCDsgrDstpzrrLxcIixcbiAgICBwcm9qZWN0UGF0aDogXCJhcGlcIixcbiAgICBwcmVCdWlsZENvbW1hbmQ6ICgpID0+IFwicm0gLXJmIGRpc3RcIixcbiAgICBidWlsZENvbW1hbmQ6ICh7IGNvbmZpZ0ZpbGVQYXRoIH0pID0+XG4gICAgICBgdHNjIC0tbm9FbWl0ICYmIHBucG0gZXhlYyB0c2Rvd24gLS1jb25maWcgJHtKU09OLnN0cmluZ2lmeShjb25maWdGaWxlUGF0aCl9YCxcbiAgfSxcbl07XG5cbi8qKlxuICog7Ju5IO2UhOuhnOygne2KuCDruYzrk5wg7IKw7Lac66y87JeQIOuMgO2VnCDqt5zsuZnrk6QuXG4gKiBjbGkudHPsnZggYnVpbGRfd2ViIO2VqOyImOqwgCDsnbTqsoPsnYQg67O06rOgIOq3uOuMgOuhnCDsi6Ttlontlanri4jri6QuXG4gKi9cbmV4cG9ydCBjb25zdCBXRUJfQVJUSUZBQ1RTOiBCdWlsZEFydGlmYWN0W10gPSBbXG4gIHtcbiAgICBuYW1lOiBcIldlYiBDbGllbnRcIixcbiAgICBkZXNjcmlwdGlvbjogXCJXZWIg7ZSE66Gc7KCd7Yq4IO2BtOudvOydtOyWuO2KuCDruYzrk5wg7IKw7Lac66y8XCIsXG4gICAgcHJvamVjdFBhdGg6IFwid2ViXCIsXG4gICAgcHJlQnVpbGRDb21tYW5kOiAoKSA9PiBcInJtIC1yZiBkaXN0L2NsaWVudFwiLFxuICAgIGJ1aWxkQ29tbWFuZDogKCkgPT5cbiAgICAgIFwidHNjIC1iIC0tbm9FbWl0ICYmIHZpdGUgYnVpbGQgLS1jb25maWcgdml0ZS5jb25maWcudHMgLS1vdXREaXIgZGlzdC9jbGllbnRcIixcbiAgfSxcbiAge1xuICAgIG5hbWU6IFwiV2ViIFNlcnZlclwiLFxuICAgIGRlc2NyaXB0aW9uOiBcIldlYiDtlITroZzsoJ3tirgg7ISc67KEIOu5jOuTnCDsgrDstpzrrLxcIixcbiAgICBwcm9qZWN0UGF0aDogXCJ3ZWJcIixcbiAgICBwcmVCdWlsZENvbW1hbmQ6ICgpID0+IFwicm0gLXJmIGRpc3Qvc2VydmVyXCIsXG4gICAgYnVpbGRDb21tYW5kOiAoKSA9PlxuICAgICAgXCJ0c2MgLWIgLS1ub0VtaXQgJiYgdml0ZSBidWlsZCAtLWNvbmZpZyB2aXRlLmNvbmZpZy50cyAtLXNzciBzcmMvZW50cnktc2VydmVyLmdlbmVyYXRlZC50c3ggLS1vdXREaXIgZGlzdC9zZXJ2ZXJcIixcbiAgICBwb3N0QnVpbGRDb21tYW5kOiAoKSA9PlxuICAgICAgXCJybSAtcmYgLi4vYXBpL3dlYi1kaXN0ICYmIG1rZGlyIC1wIC4uL2FwaS93ZWItZGlzdCAmJiBjcCAtciBkaXN0LyogLi4vYXBpL3dlYi1kaXN0XCIsXG4gIH0sXG5dO1xuIl0sIm1hcHBpbmdzIjoiOzs7OztBQWFBLE1BQWEsZ0JBQTZELENBQ3hFO0NBQ0UsTUFBTTtDQUNOLGFBQWE7Q0FDYixhQUFhO0NBQ2IsdUJBQXVCO0NBQ3ZCLGVBQWUsRUFBRSxxQkFDZiw2Q0FBNkMsS0FBSyxVQUFVLGNBQWM7QUFDOUUsQ0FDRjs7Ozs7QUFNQSxNQUFhLGdCQUFpQyxDQUM1QztDQUNFLE1BQU07Q0FDTixhQUFhO0NBQ2IsYUFBYTtDQUNiLHVCQUF1QjtDQUN2QixvQkFDRTtBQUNKLEdBQ0E7Q0FDRSxNQUFNO0NBQ04sYUFBYTtDQUNiLGFBQWE7Q0FDYix1QkFBdUI7Q0FDdkIsb0JBQ0U7Q0FDRix3QkFDRTtBQUNKLENBQ0YifQ==
package/dist/bin/cli.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { getSonamuEnvironment, init_env } from "../env.js";
2
+ import { findApiRootPath, findAppRootPath, init_utils } from "../utils/utils.js";
2
3
  import { execWithLinePrefix, init_console_util, printBuildSummary, printTaskFailed, printTaskHeader, printTaskStart, printTaskSuccess } from "../utils/console-util.js";
3
4
  import { exists, init_fs_utils } from "../utils/fs-utils.js";
4
- import { findApiRootPath, findAppRootPath, init_utils } from "../utils/utils.js";
5
5
  import { Sonamu, init_sonamu } from "../api/sonamu.js";
6
6
  import { EntityManager, init_entity_manager } from "../entity/entity-manager.js";
7
7
  import { SUPPORTED_PLUGIN_IDS, isValidPluginId } from "../auth/plugins/entity-definitions/index.js";
@@ -1,7 +1,7 @@
1
1
  import { __esmMin } from "../_virtual/_rolldown/runtime.js";
2
+ import { assertDefined, init_utils, nonNullable } from "../utils/utils.js";
2
3
  import { formatCode, init_formatter } from "../utils/formatter.js";
3
4
  import { exists, init_fs_utils } from "../utils/fs-utils.js";
4
- import { assertDefined, init_utils, nonNullable } from "../utils/utils.js";
5
5
  import { Sonamu, init_sonamu } from "../api/sonamu.js";
6
6
  import { getEnumDefValues, getSubsetFields, init_types, isBelongsToOneRelationProp, isEnumProp, isHasManyRelationProp, isInternalSubsetField, isManyToManyRelationProp, isOneToOneRelationProp, isRelationProp, isVirtualCodeProp, isVirtualProp, normalizeSubsetField } from "../types/types.js";
7
7
  import { importMembers, init_esm_utils } from "../utils/esm-utils.js";
package/dist/index.js CHANGED
@@ -1,6 +1,7 @@
1
1
  import { asArray, init_model, objToMap } from "./utils/model.js";
2
2
  import { DB, DBClass, init_db } from "./database/db.js";
3
3
  import { BASE_FIELD_MAPPINGS, betterAuthV1, init_better_auth_entities } from "./auth/better-auth-entities.js";
4
+ import { assertDefined, assertExists, assertNotNull, convertFastifyHeadersToStandard, differenceWith, exhaustive, findApiRootPath, findAppRootPath, init_utils, intersectionBy, isPlainObject, merge, nonNullable } from "./utils/utils.js";
4
5
  import { CachePresets, applyCacheHeaders, buildCacheControl, init_cache_control } from "./cache-control/cache-control.js";
5
6
  import { CompressPresets, init_compress, isCompressDisabled, toFastifyCompressOption } from "./compress/compress.js";
6
7
  import { AlreadyProcessedException, BadRequestException, DuplicateRowException, InternalServerErrorException, NotFoundException, ServiceUnavailableException, SoException, TargetNotFoundException, UnauthorizedException, init_so_exceptions, isSoException } from "./exceptions/so-exceptions.js";
@@ -11,7 +12,6 @@ import { InMemoryWebSocketPresenceStore, init_ws_presence_store } from "./stream
11
12
  import { WebSocketRegistry, init_ws_registry } from "./stream/ws-registry.js";
12
13
  import { WebSocketRuntime, createWebSocketRuntime, init_ws } from "./stream/ws.js";
13
14
  import { init_controller, isDaemonServer, isDevelopment, isHotReloadServer, isInDocker, isLocal, isProduction, isRemote, isStaging, isTest } from "./utils/controller.js";
14
- import { assertDefined, assertExists, assertNotNull, convertFastifyHeadersToStandard, differenceWith, exhaustive, findApiRootPath, findAppRootPath, init_utils, intersectionBy, isPlainObject, merge, nonNullable } from "./utils/utils.js";
15
15
  import { createWebSocketReplyStub, resolveWebSocketCloseDescriptor, resolveWebSocketPluginOptions } from "./api/websocket-helpers.js";
16
16
  import { Sonamu, init_sonamu } from "./api/sonamu.js";
17
17
  import { ApiParamType, BUILT_IN_TYPE_IDS, EntityJsonSchema, GenerateOptions, KnownOpclassValues, NormalPropSchema, PathAndCode, RelationPropSchema, RenderingNode, SonamuFileArraySchema, SonamuFileSchema, SonamuQueryMode, SonamuSemanticParams, TemplateKey, TemplateOptions, ZodStringFormat, getDescription, getEnumDefValues, getSubsetFields, init_types, isBelongsToOneRelationProp, isBigIntegerArrayProp, isBigIntegerProp, isBigIntegerSingleProp, isBooleanArrayProp, isBooleanProp, isBooleanSingleProp, isCustomJoinClause, isDateArrayProp, isDateProp, isDateSingleProp, isEnumArrayProp, isEnumDefWithCone, isEnumProp, isEnumSingleProp, isHasManyRelationProp, isIntegerArrayProp, isIntegerProp, isIntegerSingleProp, isInternalSubsetField, isJsonProp, isKnexError, isManyToManyRelationProp, isNumberArrayProp, isNumberProp, isNumberSingleProp, isNumericArrayProp, isNumericProp, isNumericSingleProp, isOneToOneRelationProp, isRelationProp, isSearchTextJsonSourceZodType, isSearchTextProp, isStringArrayProp, isStringProp, isStringSingleProp, isSubsetDefWithCone, isTsVectorProp, isUuidArrayProp, isUuidProp, isUuidSingleProp, isVectorArrayProp, isVectorProp, isVectorSingleProp, isVirtualCodeProp, isVirtualProp, isVirtualQueryProp, normalizeSubsetField, zArrayable } from "./types/types.js";
@@ -1,6 +1,6 @@
1
1
  import { __esmMin } from "../_virtual/_rolldown/runtime.js";
2
- import { formatCode, init_formatter } from "../utils/formatter.js";
3
2
  import { differenceWith, init_utils, intersectionBy } from "../utils/utils.js";
3
+ import { formatCode, init_formatter } from "../utils/formatter.js";
4
4
  import { init_types, isSearchTextProp } from "../types/types.js";
5
5
  import { EntityManager, init_entity_manager } from "../entity/entity-manager.js";
6
6
  import { Naite, init_naite } from "../naite/naite.js";