sonamu 0.7.24 → 0.7.26

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 (85) hide show
  1. package/dist/api/config.d.ts +3 -0
  2. package/dist/api/config.d.ts.map +1 -1
  3. package/dist/api/config.js +1 -1
  4. package/dist/api/decorators.d.ts +6 -0
  5. package/dist/api/decorators.d.ts.map +1 -1
  6. package/dist/api/decorators.js +1 -1
  7. package/dist/api/sonamu.d.ts +5 -0
  8. package/dist/api/sonamu.d.ts.map +1 -1
  9. package/dist/api/sonamu.js +124 -23
  10. package/dist/cache-control/cache-control.d.ts +94 -0
  11. package/dist/cache-control/cache-control.d.ts.map +1 -0
  12. package/dist/cache-control/cache-control.js +127 -0
  13. package/dist/cache-control/types.d.ts +85 -0
  14. package/dist/cache-control/types.d.ts.map +1 -0
  15. package/dist/cache-control/types.js +19 -0
  16. package/dist/compress/compress.d.ts +45 -0
  17. package/dist/compress/compress.d.ts.map +1 -0
  18. package/dist/compress/compress.js +61 -0
  19. package/dist/compress/index.d.ts +3 -0
  20. package/dist/compress/index.d.ts.map +1 -0
  21. package/dist/compress/index.js +3 -0
  22. package/dist/compress/types.d.ts +20 -0
  23. package/dist/compress/types.d.ts.map +1 -0
  24. package/dist/compress/types.js +11 -0
  25. package/dist/index.d.ts +4 -1
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +3 -2
  28. package/dist/logger/configure.js +4 -4
  29. package/dist/migration/code-generation.d.ts +7 -0
  30. package/dist/migration/code-generation.d.ts.map +1 -1
  31. package/dist/migration/code-generation.js +7 -13
  32. package/dist/naite/naite.js +2 -2
  33. package/dist/ssr/renderer.d.ts.map +1 -1
  34. package/dist/ssr/renderer.js +29 -1
  35. package/dist/ssr/types.d.ts +3 -0
  36. package/dist/ssr/types.d.ts.map +1 -1
  37. package/dist/ssr/types.js +1 -2
  38. package/dist/syncer/checksum.d.ts.map +1 -1
  39. package/dist/syncer/checksum.js +3 -3
  40. package/dist/syncer/module-loader.d.ts.map +1 -1
  41. package/dist/syncer/module-loader.js +1 -15
  42. package/dist/tasks/workflow-manager.d.ts.map +1 -1
  43. package/dist/tasks/workflow-manager.js +2 -5
  44. package/dist/template/implementations/view_form.template.d.ts +0 -1
  45. package/dist/template/implementations/view_form.template.d.ts.map +1 -1
  46. package/dist/template/implementations/view_form.template.js +13 -77
  47. package/dist/template/implementations/view_id_async_select.template.d.ts.map +1 -1
  48. package/dist/template/implementations/view_id_async_select.template.js +24 -36
  49. package/dist/testing/fixture-manager.d.ts +0 -1
  50. package/dist/testing/fixture-manager.d.ts.map +1 -1
  51. package/dist/testing/fixture-manager.js +1 -5
  52. package/dist/types/types.d.ts +7 -0
  53. package/dist/types/types.d.ts.map +1 -1
  54. package/dist/types/types.js +1 -1
  55. package/dist/utils/console-util.d.ts +5 -0
  56. package/dist/utils/console-util.d.ts.map +1 -1
  57. package/dist/utils/console-util.js +8 -3
  58. package/package.json +6 -5
  59. package/src/api/config.ts +3 -0
  60. package/src/api/decorators.ts +6 -0
  61. package/src/api/sonamu.ts +133 -19
  62. package/src/cache-control/cache-control.ts +160 -0
  63. package/src/cache-control/types.ts +102 -0
  64. package/src/compress/compress.ts +61 -0
  65. package/src/compress/index.ts +2 -0
  66. package/src/compress/types.ts +20 -0
  67. package/src/index.ts +4 -1
  68. package/src/logger/configure.ts +3 -3
  69. package/src/migration/code-generation.ts +9 -11
  70. package/src/naite/naite.ts +1 -1
  71. package/src/ssr/renderer.ts +39 -0
  72. package/src/ssr/types.ts +4 -0
  73. package/src/syncer/checksum.ts +2 -4
  74. package/src/syncer/module-loader.ts +0 -14
  75. package/src/tasks/workflow-manager.ts +1 -5
  76. package/src/template/implementations/view_form.template.ts +15 -85
  77. package/src/template/implementations/view_id_async_select.template.ts +23 -35
  78. package/src/testing/fixture-manager.ts +0 -5
  79. package/src/types/types.ts +7 -0
  80. package/src/utils/console-util.ts +7 -1
  81. package/dist/database/code-generator.d.ts +0 -15
  82. package/dist/database/code-generator.d.ts.map +0 -1
  83. package/dist/database/code-generator.js +0 -55
  84. package/src/database/code-generator.ts +0 -59
  85. package/src/entity/migrator-/354/235/264/354/202/254/352/260/224/354/226/264/354/232/224.md +0 -1
@@ -1,3 +1,4 @@
1
+ import type { FastifyCompressOptions } from "@fastify/compress";
1
2
  import type { FastifyCorsOptions } from "@fastify/cors";
2
3
  import type { FastifyFormbodyOptions } from "@fastify/formbody";
3
4
  import type { FastifyMultipartOptions } from "@fastify/multipart";
@@ -54,6 +55,8 @@ export type SonamuServerOptions = {
54
55
  host?: string;
55
56
  };
56
57
  plugins?: {
58
+ /** 응답 압축 플러그인 (@fastify/compress) */
59
+ compress?: boolean | FastifyCompressOptions;
57
60
  cors?: boolean | FastifyCorsOptions;
58
61
  formbody?: boolean | FastifyFormbodyOptions;
59
62
  multipart?: boolean | FastifyMultipartOptions;
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/api/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/api/config.ts"],"names":[],"mappings":"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"}
@@ -26,4 +26,4 @@ export function defineConfig(config) {
26
26
  return config;
27
27
  }
28
28
 
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcGkvY29uZmlnLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRmFzdGlmeUNvcnNPcHRpb25zIH0gZnJvbSBcIkBmYXN0aWZ5L2NvcnNcIjtcbmltcG9ydCB0eXBlIHsgRmFzdGlmeUZvcm1ib2R5T3B0aW9ucyB9IGZyb20gXCJAZmFzdGlmeS9mb3JtYm9keVwiO1xuaW1wb3J0IHR5cGUgeyBGYXN0aWZ5TXVsdGlwYXJ0T3B0aW9ucyB9IGZyb20gXCJAZmFzdGlmeS9tdWx0aXBhcnRcIjtcbmltcG9ydCB0eXBlIHsgRGVzZXJpYWxpemVGdW5jdGlvbiwgU2VyaWFsaXplRnVuY3Rpb24gfSBmcm9tIFwiQGZhc3RpZnkvcGFzc3BvcnQvZGlzdC9BdXRoZW50aWNhdG9yXCI7XG5pbXBvcnQgdHlwZSB7IFNlY3VyZVNlc3Npb25QbHVnaW5PcHRpb25zIH0gZnJvbSBcIkBmYXN0aWZ5L3NlY3VyZS1zZXNzaW9uXCI7XG5pbXBvcnQgdHlwZSB7IEZhc3RpZnlTdGF0aWNPcHRpb25zIH0gZnJvbSBcIkBmYXN0aWZ5L3N0YXRpY1wiO1xuaW1wb3J0IHR5cGUgeyBGYXN0aWZ5SW5zdGFuY2UsIEZhc3RpZnlSZXBseSwgRmFzdGlmeVJlcXVlc3QsIEZhc3RpZnlTZXJ2ZXJPcHRpb25zIH0gZnJvbSBcImZhc3RpZnlcIjtcbmltcG9ydCB0eXBlIHsgUXNQbHVnaW5PcHRpb25zIH0gZnJvbSBcImZhc3RpZnktcXNcIjtcbmltcG9ydCB0eXBlIHsgU3NlUGx1Z2luT3B0aW9ucyB9IGZyb20gXCJmYXN0aWZ5LXNzZS12Mi9saWIvdHlwZXNcIjtcbmltcG9ydCB0eXBlIHsgS25leCB9IGZyb20gXCJrbmV4XCI7XG5pbXBvcnQgdHlwZSB7IENhY2hlQ29uZmlnIH0gZnJvbSBcIi4uL2NhY2hlL3R5cGVzXCI7XG5pbXBvcnQgdHlwZSB7IFNvbmFtdUxvZ2dpbmdPcHRpb25zIH0gZnJvbSBcIi4uL2xvZ2dlci9jb25maWd1cmVcIjtcbmltcG9ydCB0eXBlIHsgU3RvcmFnZUNvbmZpZyB9IGZyb20gXCIuLi9zdG9yYWdlL3R5cGVzXCI7XG5pbXBvcnQgdHlwZSB7IFdvcmtmbG93T3B0aW9ucyB9IGZyb20gXCIuLi90YXNrcy93b3JrZmxvdy1tYW5hZ2VyXCI7XG5pbXBvcnQgdHlwZSB7IEV4ZWN1dGFibGUsIFNvbmFtdUZhc3RpZnlDb25maWcgfSBmcm9tIFwiLi4vdHlwZXMvdHlwZXNcIjtcbmltcG9ydCB0eXBlIHsgQXV0aENvbnRleHQsIENvbnRleHQgfSBmcm9tIFwiLi9jb250ZXh0XCI7XG5cbmV4cG9ydCB0eXBlIERhdGFiYXNlQ29uZmlnID0gT21pdDxLbmV4LkNvbmZpZywgXCJjb25uZWN0aW9uXCI+ICYge1xuICBjb25uZWN0aW9uPzogS25leC5QZ0Nvbm5lY3Rpb25Db25maWc7XG59O1xuXG5leHBvcnQgdHlwZSBTb25hbXVDb25maWc8VFNpbmtJZCBleHRlbmRzIHN0cmluZyA9IHN0cmluZywgVEZpbHRlcklkIGV4dGVuZHMgc3RyaW5nID0gc3RyaW5nPiA9IHtcbiAgcHJvamVjdE5hbWU/OiBzdHJpbmc7XG5cbiAgYXBpOiB7XG4gICAgZGlyOiBzdHJpbmc7XG4gICAgcm91dGU6IHtcbiAgICAgIHByZWZpeDogc3RyaW5nO1xuICAgIH07XG4gICAgdGltZXpvbmU/OiBzdHJpbmc7XG4gIH07XG4gIHN5bmM6IHtcbiAgICB0YXJnZXRzOiBzdHJpbmdbXTsgLy8gXCJ3ZWJcIiwgXCJhcHBcIiDrk7FcbiAgfTtcblxuICBkYXRhYmFzZToge1xuICAgIC8vIOuNsOydtO2EsOuyoOydtOyKpChwZ+uKlCBwZyDrqqjrk4gsIHBnbmF0aXZl64qUIHBnLW5hdGl2ZSDrqqjrk4jsnZgg7ISk7LmY6rCAIO2VhOyalO2VqeuLiOuLpC4pXG4gICAgZGF0YWJhc2U/OiBcInBnXCIgfCBcInBnbmF0aXZlXCI7XG4gICAgLy8g6riw67O4IOuNsOydtO2EsOuyoOydtOyKpCDsnbTrpoRcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgLy8g66qo65OgIO2ZmOqyveyXkCDsoIHsmqnrkKAg6riw67O4IEtuZXgg7Ji17IWYXG4gICAgZGVmYXVsdE9wdGlvbnM6IERhdGFiYXNlQ29uZmlnO1xuICAgIC8vIO2ZmOqyveuzhCDshKTsoJVcbiAgICBlbnZpcm9ubWVudHM/OiB7XG4gICAgICBkZXZlbG9wbWVudD86IERhdGFiYXNlQ29uZmlnO1xuICAgICAgZGV2ZWxvcG1lbnRfc2xhdmU/OiBEYXRhYmFzZUNvbmZpZztcbiAgICAgIHByb2R1Y3Rpb24/OiBEYXRhYmFzZUNvbmZpZztcbiAgICAgIHByb2R1Y3Rpb25fc2xhdmU/OiBEYXRhYmFzZUNvbmZpZztcbiAgICAgIGZpeHR1cmU/OiBEYXRhYmFzZUNvbmZpZztcbiAgICAgIHRlc3Q/OiBEYXRhYmFzZUNvbmZpZztcbiAgICB9O1xuICB9O1xuXG4gIGxvZ2dpbmc/OiBmYWxzZSB8IFNvbmFtdUxvZ2dpbmdPcHRpb25zPFRTaW5rSWQsIFRGaWx0ZXJJZD47XG4gIHNlcnZlcjogU29uYW11U2VydmVyT3B0aW9ucztcbiAgdGFza3M/OiBTb25hbXVUYXNrT3B0aW9ucztcbn07XG5cbmV4cG9ydCB0eXBlIFNvbmFtdVNlcnZlck9wdGlvbnMgPSB7XG4gIC8vIO2UhOuhnOygne2KuCDsmbjrtoDsl5DshJwg7KCR6re87ZWgIOyImCDsnojripQgVVJMLiDquLDrs7jqsJLsnYAge3NlcnZlci5saXN0ZW4uaG9zdH06e3NlcnZlci5saXN0ZW4ucG9ydH0g7J6F64uI64ukLlxuICBiYXNlVXJsPzogc3RyaW5nO1xuXG4gIGZhc3RpZnk/OiBPbWl0PEZhc3RpZnlTZXJ2ZXJPcHRpb25zLCBcImxvZ2dlclwiPjtcblxuICBsaXN0ZW4/OiB7XG4gICAgcG9ydDogbnVtYmVyO1xuICAgIGhvc3Q/OiBzdHJpbmc7XG4gIH07XG5cbiAgcGx1Z2lucz86IHtcbiAgICBjb3JzPzogYm9vbGVhbiB8IEZhc3RpZnlDb3JzT3B0aW9ucztcbiAgICBmb3JtYm9keT86IGJvb2xlYW4gfCBGYXN0aWZ5Rm9ybWJvZHlPcHRpb25zO1xuICAgIG11bHRpcGFydD86IGJvb2xlYW4gfCBGYXN0aWZ5TXVsdGlwYXJ0T3B0aW9ucztcbiAgICBxcz86IGJvb2xlYW4gfCBRc1BsdWdpbk9wdGlvbnM7XG4gICAgc3NlPzogYm9vbGVhbiB8IFNzZVBsdWdpbk9wdGlvbnM7XG4gICAgc3RhdGljPzogYm9vbGVhbiB8IEZhc3RpZnlTdGF0aWNPcHRpb25zO1xuICAgIHNlc3Npb24/OiBib29sZWFuIHwgU2VjdXJlU2Vzc2lvblBsdWdpbk9wdGlvbnM7XG5cbiAgICBjdXN0b20/OiAoc2VydmVyOiBGYXN0aWZ5SW5zdGFuY2UpID0+IHZvaWQ7XG4gIH07XG5cbiAgYXV0aD86XG4gICAgfCBib29sZWFuXG4gICAgfCB7XG4gICAgICAgIHVzZXJTZXJpYWxpemVyOiBTZXJpYWxpemVGdW5jdGlvbjx1bmtub3duLCB1bmtub3duPjtcbiAgICAgICAgdXNlckRlc2VyaWFsaXplcjogRGVzZXJpYWxpemVGdW5jdGlvbjx1bmtub3duLCB1bmtub3duPjtcbiAgICAgIH07XG5cbiAgYXBpQ29uZmlnOiBTb25hbXVGYXN0aWZ5Q29uZmlnO1xuXG4gIC8qKlxuICAgKiBTdG9yYWdlIOuTnOudvOydtOuyhCDshKTsoJUuXG4gICAqIERSSVZFX0RJU0sg7ZmY6rK967OA7IiY66GcIOyCrOyaqe2VoCDrk5zrnbzsnbTrsoTrpbwg7ISg7YOd7ZWp64uI64ukLiAo6riw67O46rCSOiBkZWZhdWx0IO2CpClcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBpbXBvcnQgeyBkcml2ZXJzIH0gZnJvbSBcInNvbmFtdS9zdG9yYWdlXCI7XG4gICAqXG4gICAqIHN0b3JhZ2U6IHtcbiAgICogICBkZWZhdWx0OiBwcm9jZXNzLmVudi5EUklWRV9ESVNLID8/IFwiZnNcIixcbiAgICogICBkcml2ZXJzOiB7XG4gICAqICAgICBmczogZHJpdmVycy5mcyh7IGxvY2F0aW9uOiBcIi4vdXBsb2Fkc1wiLCB1cmxCdWlsZGVyOiB7IC4uLiB9IH0pLFxuICAgKiAgICAgczM6IGRyaXZlcnMuczMoeyBidWNrZXQ6IFwibXktYnVja2V0XCIsIHJlZ2lvbjogXCJhcC1ub3J0aGVhc3QtMlwiLCAuLi4gfSksXG4gICAqICAgfVxuICAgKiB9XG4gICAqIGBgYFxuICAgKi9cbiAgc3RvcmFnZT86IFN0b3JhZ2VDb25maWc7XG5cbiAgLyoqXG4gICAqIENhY2hlIOyEpOyglSAoQmVudG9DYWNoZSDquLDrsJgpXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogaW1wb3J0IHsgZHJpdmVycywgc3RvcmUgfSBmcm9tIFwic29uYW11L2NhY2hlXCI7XG4gICAqXG4gICAqIGNhY2hlOiB7XG4gICAqICAgZGVmYXVsdDogJ21haW4nLFxuICAgKiAgIHN0b3Jlczoge1xuICAgKiAgICAgbWFpbjogc3RvcmUoKVxuICAgKiAgICAgICAudXNlTDFMYXllcihkcml2ZXJzLm1lbW9yeSh7IG1heFNpemU6ICcxMDBtYicgfSkpXG4gICAqICAgICAgIC51c2VMMkxheWVyKGRyaXZlcnMucmVkaXMoeyBjb25uZWN0aW9uOiByZWRpc0Nvbm5lY3Rpb24gfSkpXG4gICAqICAgICAgIC51c2VCdXMoZHJpdmVycy5yZWRpc0J1cyh7IGNvbm5lY3Rpb246IHJlZGlzQ29ubmVjdGlvbiB9KSlcbiAgICogICB9LFxuICAgKiAgIHR0bDogJzFoJyxcbiAgICogfVxuICAgKiBgYGBcbiAgICovXG4gIGNhY2hlPzogQ2FjaGVDb25maWc7XG5cbiAgbGlmZWN5Y2xlPzoge1xuICAgIG9uU3RhcnQ/OiAoc2VydmVyOiBGYXN0aWZ5SW5zdGFuY2UpID0+IFByb21pc2U8dm9pZD4gfCB2b2lkO1xuICAgIG9uU2h1dGRvd24/OiAoc2VydmVyOiBGYXN0aWZ5SW5zdGFuY2UpID0+IFByb21pc2U8dm9pZD4gfCB2b2lkO1xuICAgIG9uRXJyb3I/OiAoZXJyb3I6IEVycm9yLCByZXF1ZXN0OiBGYXN0aWZ5UmVxdWVzdCwgcmVwbHk6IEZhc3RpZnlSZXBseSkgPT4gUHJvbWlzZTx2b2lkPiB8IHZvaWQ7XG4gIH07XG59O1xuXG5leHBvcnQgdHlwZSBTb25hbXVUYXNrT3B0aW9ucyA9IHtcbiAgLy8gd29ya2Vy66W8IOyCrOyaqe2VoOyngCDsl6zrtoAsIOq4sOuzuOyggeycvOuhnCBkYWVtb24g66qo65Oc7JeQ7ISc66eMIOyCrOyaqeuQqC5cbiAgZW5hYmxlV29ya2VyPzogYm9vbGVhbjtcbiAgd29ya2VyT3B0aW9ucz86IFdvcmtmbG93T3B0aW9ucztcbiAgY29udGV4dFByb3ZpZGVyOiAoXG4gICAgZGVmYXVsdENvbnRleHQ6IFBpY2s8Q29udGV4dCwgXCJyZXBseVwiIHwgXCJyZXF1ZXN0XCIgfCBcImhlYWRlcnNcIiB8IFwiY3JlYXRlU1NFXCIgfCBcIm5haXRlU3RvcmVcIj4gJlxuICAgICAgQXV0aENvbnRleHQsXG4gICkgPT4gQ29udGV4dCB8IFByb21pc2U8Q29udGV4dD47XG59O1xuXG5leHBvcnQgdHlwZSBTb25hbXVTU1JPcHRpb25zID0ge1xuICAvKipcbiAgICogSHlkcmF0aW9uIOyghOuetVxuICAgKiAtICdub25lJzog7ZWt7IOBIOyDiOuhnCDroIzrjZTrp4EgKGh5ZHJhdGlvbiBtaXNtYXRjaCDqsbHsoJUg7JeG7J2MLCDqtozsnqUpXG4gICAqIC0gJ2Z1bGwnOiBSZWFjdCBoeWRyYXRpb24g7Iuc64+EICjshJzrsoQgSFRNTCDsnqzsgqzsmqksIG1pc21hdGNoIOyjvOydmClcbiAgICogQGRlZmF1bHQgJ25vbmUnXG4gICAqL1xuICBoeWRyYXRpb24/OiBcIm5vbmVcIiB8IFwiZnVsbFwiO1xufTtcblxuLy8gTk9URShIYXplLCAyNTEyMDkpOiBjb25maWfsl5DripQgVCwgUHJvbWlzZTxUPiwgKCkgPT4gVCwgKCkgPT4gUHJvbWlzZTxUPuqwgCDrqqjrkZAg7JisIOyImCDsnojslrTslbwg7ZWoLlxuZXhwb3J0IGZ1bmN0aW9uIGRlZmluZUNvbmZpZyhjb25maWc6IEV4ZWN1dGFibGU8U29uYW11Q29uZmlnPik6IFByb21pc2U8U29uYW11Q29uZmlnPiB7XG4gIGlmICh0eXBlb2YgY29uZmlnID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGNvbmZpZygpKTtcbiAgfVxuXG4gIHJldHVybiBQcm9taXNlLnJlc29sdmUoY29uZmlnKTtcbn1cblxuLyoqXG4gKiBzb25hbXUuY29uZmlnLnRzIO2MjOydvOydhCDroZzrk5ztlanri4jri6QuXG4gKiDsnbQg7ISk7KCVIO2MjOydvOydgCDtmZjqsr3sl5Ag65Sw6528IOuLpOuluCDqsr3roZzsl5Ag7J6I7J2EIOyImCDsnojsirXri4jri6QuXG4gKiBkaXN066W8IOu5jOuTnO2VmOuKlCDtmZjqsr3snbTrnbzrqbQgZGlzdCDrsJTroZwg7JWE656Y7JeQIOyeiOydhCDqsoPsnbTqs6AoY2xpLXdyYXBwZXIudHPsl5DshJwg67mM65OcKSxcbiAqIOq3uOugh+yngCDslYrsnYAg7ZmY6rK97J20652866m0IO2UhOuhnOygne2KuCDro6jtirjsl5Ag7J6I7J2EIOqyg+yeheuLiOuLpC5cbiAqXG4gKiDsnbQg7ZWo7IiY64qUIOydmOuPhOyggeycvOuhnCDri6Trpbgg7J2Y7KG07ISx7J2YIOyCrOyaqeydhCDstZzrjIDtlZwg67Cw7KCc7ZWY7JiA7Iq164uI64ukLlxuICog7J2064qUIOyLpO2WiSDstIjquLDsl5Ag7LWc64yA7ZWcIOu5oOultOqyjCDshKTsoJXsnYQg7J297Ja07JisIOyImCDsnojrj4TroZ0g7ZWY6riwIOychO2VqOyeheuLiOuLpC5cbiAqIOuUsOudvOyEnCDqsr3roZwgY29uY2F06rO8IFVSTCBzY2hlbWUg7LaU6rCA64+EIOuLqOyInO2VnCDrrLjsnpDsl7Qg7KGw7J6R7Jy866GcIOyymOumrO2VmOyYgOyKteuLiOuLpC5cbiAqXG4gKiBAcGFyYW0gcm9vdFBhdGhcbiAqIEByZXR1cm5zXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb2FkQ29uZmlnKHJvb3RQYXRoOiBzdHJpbmcpOiBQcm9taXNlPFNvbmFtdUNvbmZpZz4ge1xuICBjb25zdCBzdGFydCA9IHBlcmZvcm1hbmNlLm5vdygpO1xuICBjb25zdCBjb25maWdQYXRoID1cbiAgICBwcm9jZXNzLmVudi5IT1QgPT09IFwieWVzXCIgfHwgcHJvY2Vzcy5lbnYuVklURVNUID09PSBcInRydWVcIlxuICAgICAgPyBgJHtyb290UGF0aH0vc3JjL3NvbmFtdS5jb25maWcudHNgXG4gICAgICA6IGAke3Jvb3RQYXRofS9kaXN0L3NvbmFtdS5jb25maWcuanNgO1xuICBjb25zdCB7IGRlZmF1bHQ6IGNvbmZpZyB9ID0gYXdhaXQgaW1wb3J0KGBmaWxlOi8vJHtjb25maWdQYXRofWApO1xuICBjb25zdCBpbXBvcnRUaW1lID0gcGVyZm9ybWFuY2Uubm93KCkgLSBzdGFydDtcbiAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwidGVzdFwiICYmXG4gICAgY29uc29sZS5sb2coYFtUSU1JTkddIGxvYWRDb25maWcgdG9vayAke2ltcG9ydFRpbWUudG9GaXhlZCgyKX1tc2ApO1xuICByZXR1cm4gY29uZmlnO1xufVxuIl0sIm5hbWVzIjpbImRlZmluZUNvbmZpZyIsImNvbmZpZyIsIlByb21pc2UiLCJyZXNvbHZlIiwibG9hZENvbmZpZyIsInJvb3RQYXRoIiwic3RhcnQiLCJwZXJmb3JtYW5jZSIsIm5vdyIsImNvbmZpZ1BhdGgiLCJwcm9jZXNzIiwiZW52IiwiSE9UIiwiVklURVNUIiwiZGVmYXVsdCIsImltcG9ydFRpbWUiLCJOT0RFX0VOViIsImNvbnNvbGUiLCJsb2ciLCJ0b0ZpeGVkIl0sIm1hcHBpbmdzIjoiQUE2SkEsdUZBQXVGO0FBQ3ZGLE9BQU8sU0FBU0EsYUFBYUMsTUFBZ0M7SUFDM0QsSUFBSSxPQUFPQSxXQUFXLFlBQVk7UUFDaEMsT0FBT0MsUUFBUUMsT0FBTyxDQUFDRjtJQUN6QjtJQUVBLE9BQU9DLFFBQVFDLE9BQU8sQ0FBQ0Y7QUFDekI7QUFFQTs7Ozs7Ozs7Ozs7O0NBWUMsR0FDRCxPQUFPLGVBQWVHLFdBQVdDLFFBQWdCO0lBQy9DLE1BQU1DLFFBQVFDLFlBQVlDLEdBQUc7SUFDN0IsTUFBTUMsYUFDSkMsUUFBUUMsR0FBRyxDQUFDQyxHQUFHLEtBQUssU0FBU0YsUUFBUUMsR0FBRyxDQUFDRSxNQUFNLEtBQUssU0FDaEQsR0FBR1IsU0FBUyxxQkFBcUIsQ0FBQyxHQUNsQyxHQUFHQSxTQUFTLHNCQUFzQixDQUFDO0lBQ3pDLE1BQU0sRUFBRVMsU0FBU2IsTUFBTSxFQUFFLEdBQUcsTUFBTSxNQUFNLENBQUMsQ0FBQyxPQUFPLEVBQUVRLFlBQVk7SUFDL0QsTUFBTU0sYUFBYVIsWUFBWUMsR0FBRyxLQUFLRjtJQUN2Q0ksUUFBUUMsR0FBRyxDQUFDSyxRQUFRLEtBQUssVUFDdkJDLFFBQVFDLEdBQUcsQ0FBQyxDQUFDLHlCQUF5QixFQUFFSCxXQUFXSSxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDbkUsT0FBT2xCO0FBQ1QifQ==
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcGkvY29uZmlnLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRmFzdGlmeUNvbXByZXNzT3B0aW9ucyB9IGZyb20gXCJAZmFzdGlmeS9jb21wcmVzc1wiO1xuaW1wb3J0IHR5cGUgeyBGYXN0aWZ5Q29yc09wdGlvbnMgfSBmcm9tIFwiQGZhc3RpZnkvY29yc1wiO1xuaW1wb3J0IHR5cGUgeyBGYXN0aWZ5Rm9ybWJvZHlPcHRpb25zIH0gZnJvbSBcIkBmYXN0aWZ5L2Zvcm1ib2R5XCI7XG5pbXBvcnQgdHlwZSB7IEZhc3RpZnlNdWx0aXBhcnRPcHRpb25zIH0gZnJvbSBcIkBmYXN0aWZ5L211bHRpcGFydFwiO1xuaW1wb3J0IHR5cGUgeyBEZXNlcmlhbGl6ZUZ1bmN0aW9uLCBTZXJpYWxpemVGdW5jdGlvbiB9IGZyb20gXCJAZmFzdGlmeS9wYXNzcG9ydC9kaXN0L0F1dGhlbnRpY2F0b3JcIjtcbmltcG9ydCB0eXBlIHsgU2VjdXJlU2Vzc2lvblBsdWdpbk9wdGlvbnMgfSBmcm9tIFwiQGZhc3RpZnkvc2VjdXJlLXNlc3Npb25cIjtcbmltcG9ydCB0eXBlIHsgRmFzdGlmeVN0YXRpY09wdGlvbnMgfSBmcm9tIFwiQGZhc3RpZnkvc3RhdGljXCI7XG5pbXBvcnQgdHlwZSB7IEZhc3RpZnlJbnN0YW5jZSwgRmFzdGlmeVJlcGx5LCBGYXN0aWZ5UmVxdWVzdCwgRmFzdGlmeVNlcnZlck9wdGlvbnMgfSBmcm9tIFwiZmFzdGlmeVwiO1xuaW1wb3J0IHR5cGUgeyBRc1BsdWdpbk9wdGlvbnMgfSBmcm9tIFwiZmFzdGlmeS1xc1wiO1xuaW1wb3J0IHR5cGUgeyBTc2VQbHVnaW5PcHRpb25zIH0gZnJvbSBcImZhc3RpZnktc3NlLXYyL2xpYi90eXBlc1wiO1xuaW1wb3J0IHR5cGUgeyBLbmV4IH0gZnJvbSBcImtuZXhcIjtcbmltcG9ydCB0eXBlIHsgQ2FjaGVDb25maWcgfSBmcm9tIFwiLi4vY2FjaGUvdHlwZXNcIjtcbmltcG9ydCB0eXBlIHsgU29uYW11TG9nZ2luZ09wdGlvbnMgfSBmcm9tIFwiLi4vbG9nZ2VyL2NvbmZpZ3VyZVwiO1xuaW1wb3J0IHR5cGUgeyBTdG9yYWdlQ29uZmlnIH0gZnJvbSBcIi4uL3N0b3JhZ2UvdHlwZXNcIjtcbmltcG9ydCB0eXBlIHsgV29ya2Zsb3dPcHRpb25zIH0gZnJvbSBcIi4uL3Rhc2tzL3dvcmtmbG93LW1hbmFnZXJcIjtcbmltcG9ydCB0eXBlIHsgRXhlY3V0YWJsZSwgU29uYW11RmFzdGlmeUNvbmZpZyB9IGZyb20gXCIuLi90eXBlcy90eXBlc1wiO1xuaW1wb3J0IHR5cGUgeyBBdXRoQ29udGV4dCwgQ29udGV4dCB9IGZyb20gXCIuL2NvbnRleHRcIjtcblxuZXhwb3J0IHR5cGUgRGF0YWJhc2VDb25maWcgPSBPbWl0PEtuZXguQ29uZmlnLCBcImNvbm5lY3Rpb25cIj4gJiB7XG4gIGNvbm5lY3Rpb24/OiBLbmV4LlBnQ29ubmVjdGlvbkNvbmZpZztcbn07XG5cbmV4cG9ydCB0eXBlIFNvbmFtdUNvbmZpZzxUU2lua0lkIGV4dGVuZHMgc3RyaW5nID0gc3RyaW5nLCBURmlsdGVySWQgZXh0ZW5kcyBzdHJpbmcgPSBzdHJpbmc+ID0ge1xuICBwcm9qZWN0TmFtZT86IHN0cmluZztcblxuICBhcGk6IHtcbiAgICBkaXI6IHN0cmluZztcbiAgICByb3V0ZToge1xuICAgICAgcHJlZml4OiBzdHJpbmc7XG4gICAgfTtcbiAgICB0aW1lem9uZT86IHN0cmluZztcbiAgfTtcbiAgc3luYzoge1xuICAgIHRhcmdldHM6IHN0cmluZ1tdOyAvLyBcIndlYlwiLCBcImFwcFwiIOuTsVxuICB9O1xuXG4gIGRhdGFiYXNlOiB7XG4gICAgLy8g642w7J207YSw67Kg7J207IqkKHBn64qUIHBnIOuqqOuTiCwgcGduYXRpdmXripQgcGctbmF0aXZlIOuqqOuTiOydmCDshKTsuZjqsIAg7ZWE7JqU7ZWp64uI64ukLilcbiAgICBkYXRhYmFzZT86IFwicGdcIiB8IFwicGduYXRpdmVcIjtcbiAgICAvLyDquLDrs7gg642w7J207YSw67Kg7J207IqkIOydtOumhFxuICAgIG5hbWU6IHN0cmluZztcbiAgICAvLyDrqqjrk6Ag7ZmY6rK97JeQIOyggeyaqeuQoCDquLDrs7ggS25leCDsmLXshZhcbiAgICBkZWZhdWx0T3B0aW9uczogRGF0YWJhc2VDb25maWc7XG4gICAgLy8g7ZmY6rK967OEIOyEpOyglVxuICAgIGVudmlyb25tZW50cz86IHtcbiAgICAgIGRldmVsb3BtZW50PzogRGF0YWJhc2VDb25maWc7XG4gICAgICBkZXZlbG9wbWVudF9zbGF2ZT86IERhdGFiYXNlQ29uZmlnO1xuICAgICAgcHJvZHVjdGlvbj86IERhdGFiYXNlQ29uZmlnO1xuICAgICAgcHJvZHVjdGlvbl9zbGF2ZT86IERhdGFiYXNlQ29uZmlnO1xuICAgICAgZml4dHVyZT86IERhdGFiYXNlQ29uZmlnO1xuICAgICAgdGVzdD86IERhdGFiYXNlQ29uZmlnO1xuICAgIH07XG4gIH07XG5cbiAgbG9nZ2luZz86IGZhbHNlIHwgU29uYW11TG9nZ2luZ09wdGlvbnM8VFNpbmtJZCwgVEZpbHRlcklkPjtcbiAgc2VydmVyOiBTb25hbXVTZXJ2ZXJPcHRpb25zO1xuICB0YXNrcz86IFNvbmFtdVRhc2tPcHRpb25zO1xufTtcblxuZXhwb3J0IHR5cGUgU29uYW11U2VydmVyT3B0aW9ucyA9IHtcbiAgLy8g7ZSE66Gc7KCd7Yq4IOyZuOu2gOyXkOyEnCDsoJHqt7ztlaAg7IiYIOyeiOuKlCBVUkwuIOq4sOuzuOqwkuydgCB7c2VydmVyLmxpc3Rlbi5ob3N0fTp7c2VydmVyLmxpc3Rlbi5wb3J0fSDsnoXri4jri6QuXG4gIGJhc2VVcmw/OiBzdHJpbmc7XG5cbiAgZmFzdGlmeT86IE9taXQ8RmFzdGlmeVNlcnZlck9wdGlvbnMsIFwibG9nZ2VyXCI+O1xuXG4gIGxpc3Rlbj86IHtcbiAgICBwb3J0OiBudW1iZXI7XG4gICAgaG9zdD86IHN0cmluZztcbiAgfTtcblxuICBwbHVnaW5zPzoge1xuICAgIC8qKiDsnZHri7Ug7JWV7LaVIO2UjOufrOq3uOyduCAoQGZhc3RpZnkvY29tcHJlc3MpICovXG4gICAgY29tcHJlc3M/OiBib29sZWFuIHwgRmFzdGlmeUNvbXByZXNzT3B0aW9ucztcbiAgICBjb3JzPzogYm9vbGVhbiB8IEZhc3RpZnlDb3JzT3B0aW9ucztcbiAgICBmb3JtYm9keT86IGJvb2xlYW4gfCBGYXN0aWZ5Rm9ybWJvZHlPcHRpb25zO1xuICAgIG11bHRpcGFydD86IGJvb2xlYW4gfCBGYXN0aWZ5TXVsdGlwYXJ0T3B0aW9ucztcbiAgICBxcz86IGJvb2xlYW4gfCBRc1BsdWdpbk9wdGlvbnM7XG4gICAgc3NlPzogYm9vbGVhbiB8IFNzZVBsdWdpbk9wdGlvbnM7XG4gICAgc3RhdGljPzogYm9vbGVhbiB8IEZhc3RpZnlTdGF0aWNPcHRpb25zO1xuICAgIHNlc3Npb24/OiBib29sZWFuIHwgU2VjdXJlU2Vzc2lvblBsdWdpbk9wdGlvbnM7XG5cbiAgICBjdXN0b20/OiAoc2VydmVyOiBGYXN0aWZ5SW5zdGFuY2UpID0+IHZvaWQ7XG4gIH07XG5cbiAgYXV0aD86XG4gICAgfCBib29sZWFuXG4gICAgfCB7XG4gICAgICAgIHVzZXJTZXJpYWxpemVyOiBTZXJpYWxpemVGdW5jdGlvbjx1bmtub3duLCB1bmtub3duPjtcbiAgICAgICAgdXNlckRlc2VyaWFsaXplcjogRGVzZXJpYWxpemVGdW5jdGlvbjx1bmtub3duLCB1bmtub3duPjtcbiAgICAgIH07XG5cbiAgYXBpQ29uZmlnOiBTb25hbXVGYXN0aWZ5Q29uZmlnO1xuXG4gIC8qKlxuICAgKiBTdG9yYWdlIOuTnOudvOydtOuyhCDshKTsoJUuXG4gICAqIERSSVZFX0RJU0sg7ZmY6rK967OA7IiY66GcIOyCrOyaqe2VoCDrk5zrnbzsnbTrsoTrpbwg7ISg7YOd7ZWp64uI64ukLiAo6riw67O46rCSOiBkZWZhdWx0IO2CpClcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBpbXBvcnQgeyBkcml2ZXJzIH0gZnJvbSBcInNvbmFtdS9zdG9yYWdlXCI7XG4gICAqXG4gICAqIHN0b3JhZ2U6IHtcbiAgICogICBkZWZhdWx0OiBwcm9jZXNzLmVudi5EUklWRV9ESVNLID8/IFwiZnNcIixcbiAgICogICBkcml2ZXJzOiB7XG4gICAqICAgICBmczogZHJpdmVycy5mcyh7IGxvY2F0aW9uOiBcIi4vdXBsb2Fkc1wiLCB1cmxCdWlsZGVyOiB7IC4uLiB9IH0pLFxuICAgKiAgICAgczM6IGRyaXZlcnMuczMoeyBidWNrZXQ6IFwibXktYnVja2V0XCIsIHJlZ2lvbjogXCJhcC1ub3J0aGVhc3QtMlwiLCAuLi4gfSksXG4gICAqICAgfVxuICAgKiB9XG4gICAqIGBgYFxuICAgKi9cbiAgc3RvcmFnZT86IFN0b3JhZ2VDb25maWc7XG5cbiAgLyoqXG4gICAqIENhY2hlIOyEpOyglSAoQmVudG9DYWNoZSDquLDrsJgpXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogaW1wb3J0IHsgZHJpdmVycywgc3RvcmUgfSBmcm9tIFwic29uYW11L2NhY2hlXCI7XG4gICAqXG4gICAqIGNhY2hlOiB7XG4gICAqICAgZGVmYXVsdDogJ21haW4nLFxuICAgKiAgIHN0b3Jlczoge1xuICAgKiAgICAgbWFpbjogc3RvcmUoKVxuICAgKiAgICAgICAudXNlTDFMYXllcihkcml2ZXJzLm1lbW9yeSh7IG1heFNpemU6ICcxMDBtYicgfSkpXG4gICAqICAgICAgIC51c2VMMkxheWVyKGRyaXZlcnMucmVkaXMoeyBjb25uZWN0aW9uOiByZWRpc0Nvbm5lY3Rpb24gfSkpXG4gICAqICAgICAgIC51c2VCdXMoZHJpdmVycy5yZWRpc0J1cyh7IGNvbm5lY3Rpb246IHJlZGlzQ29ubmVjdGlvbiB9KSlcbiAgICogICB9LFxuICAgKiAgIHR0bDogJzFoJyxcbiAgICogfVxuICAgKiBgYGBcbiAgICovXG4gIGNhY2hlPzogQ2FjaGVDb25maWc7XG5cbiAgbGlmZWN5Y2xlPzoge1xuICAgIG9uU3RhcnQ/OiAoc2VydmVyOiBGYXN0aWZ5SW5zdGFuY2UpID0+IFByb21pc2U8dm9pZD4gfCB2b2lkO1xuICAgIG9uU2h1dGRvd24/OiAoc2VydmVyOiBGYXN0aWZ5SW5zdGFuY2UpID0+IFByb21pc2U8dm9pZD4gfCB2b2lkO1xuICAgIG9uRXJyb3I/OiAoZXJyb3I6IEVycm9yLCByZXF1ZXN0OiBGYXN0aWZ5UmVxdWVzdCwgcmVwbHk6IEZhc3RpZnlSZXBseSkgPT4gUHJvbWlzZTx2b2lkPiB8IHZvaWQ7XG4gIH07XG59O1xuXG5leHBvcnQgdHlwZSBTb25hbXVUYXNrT3B0aW9ucyA9IHtcbiAgLy8gd29ya2Vy66W8IOyCrOyaqe2VoOyngCDsl6zrtoAsIOq4sOuzuOyggeycvOuhnCBkYWVtb24g66qo65Oc7JeQ7ISc66eMIOyCrOyaqeuQqC5cbiAgZW5hYmxlV29ya2VyPzogYm9vbGVhbjtcbiAgd29ya2VyT3B0aW9ucz86IFdvcmtmbG93T3B0aW9ucztcbiAgY29udGV4dFByb3ZpZGVyOiAoXG4gICAgZGVmYXVsdENvbnRleHQ6IFBpY2s8Q29udGV4dCwgXCJyZXBseVwiIHwgXCJyZXF1ZXN0XCIgfCBcImhlYWRlcnNcIiB8IFwiY3JlYXRlU1NFXCIgfCBcIm5haXRlU3RvcmVcIj4gJlxuICAgICAgQXV0aENvbnRleHQsXG4gICkgPT4gQ29udGV4dCB8IFByb21pc2U8Q29udGV4dD47XG59O1xuXG5leHBvcnQgdHlwZSBTb25hbXVTU1JPcHRpb25zID0ge1xuICAvKipcbiAgICogSHlkcmF0aW9uIOyghOuetVxuICAgKiAtICdub25lJzog7ZWt7IOBIOyDiOuhnCDroIzrjZTrp4EgKGh5ZHJhdGlvbiBtaXNtYXRjaCDqsbHsoJUg7JeG7J2MLCDqtozsnqUpXG4gICAqIC0gJ2Z1bGwnOiBSZWFjdCBoeWRyYXRpb24g7Iuc64+EICjshJzrsoQgSFRNTCDsnqzsgqzsmqksIG1pc21hdGNoIOyjvOydmClcbiAgICogQGRlZmF1bHQgJ25vbmUnXG4gICAqL1xuICBoeWRyYXRpb24/OiBcIm5vbmVcIiB8IFwiZnVsbFwiO1xufTtcblxuLy8gTk9URShIYXplLCAyNTEyMDkpOiBjb25maWfsl5DripQgVCwgUHJvbWlzZTxUPiwgKCkgPT4gVCwgKCkgPT4gUHJvbWlzZTxUPuqwgCDrqqjrkZAg7JisIOyImCDsnojslrTslbwg7ZWoLlxuZXhwb3J0IGZ1bmN0aW9uIGRlZmluZUNvbmZpZyhjb25maWc6IEV4ZWN1dGFibGU8U29uYW11Q29uZmlnPik6IFByb21pc2U8U29uYW11Q29uZmlnPiB7XG4gIGlmICh0eXBlb2YgY29uZmlnID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGNvbmZpZygpKTtcbiAgfVxuXG4gIHJldHVybiBQcm9taXNlLnJlc29sdmUoY29uZmlnKTtcbn1cblxuLyoqXG4gKiBzb25hbXUuY29uZmlnLnRzIO2MjOydvOydhCDroZzrk5ztlanri4jri6QuXG4gKiDsnbQg7ISk7KCVIO2MjOydvOydgCDtmZjqsr3sl5Ag65Sw6528IOuLpOuluCDqsr3roZzsl5Ag7J6I7J2EIOyImCDsnojsirXri4jri6QuXG4gKiBkaXN066W8IOu5jOuTnO2VmOuKlCDtmZjqsr3snbTrnbzrqbQgZGlzdCDrsJTroZwg7JWE656Y7JeQIOyeiOydhCDqsoPsnbTqs6AoY2xpLXdyYXBwZXIudHPsl5DshJwg67mM65OcKSxcbiAqIOq3uOugh+yngCDslYrsnYAg7ZmY6rK97J20652866m0IO2UhOuhnOygne2KuCDro6jtirjsl5Ag7J6I7J2EIOqyg+yeheuLiOuLpC5cbiAqXG4gKiDsnbQg7ZWo7IiY64qUIOydmOuPhOyggeycvOuhnCDri6Trpbgg7J2Y7KG07ISx7J2YIOyCrOyaqeydhCDstZzrjIDtlZwg67Cw7KCc7ZWY7JiA7Iq164uI64ukLlxuICog7J2064qUIOyLpO2WiSDstIjquLDsl5Ag7LWc64yA7ZWcIOu5oOultOqyjCDshKTsoJXsnYQg7J297Ja07JisIOyImCDsnojrj4TroZ0g7ZWY6riwIOychO2VqOyeheuLiOuLpC5cbiAqIOuUsOudvOyEnCDqsr3roZwgY29uY2F06rO8IFVSTCBzY2hlbWUg7LaU6rCA64+EIOuLqOyInO2VnCDrrLjsnpDsl7Qg7KGw7J6R7Jy866GcIOyymOumrO2VmOyYgOyKteuLiOuLpC5cbiAqXG4gKiBAcGFyYW0gcm9vdFBhdGhcbiAqIEByZXR1cm5zXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb2FkQ29uZmlnKHJvb3RQYXRoOiBzdHJpbmcpOiBQcm9taXNlPFNvbmFtdUNvbmZpZz4ge1xuICBjb25zdCBzdGFydCA9IHBlcmZvcm1hbmNlLm5vdygpO1xuICBjb25zdCBjb25maWdQYXRoID1cbiAgICBwcm9jZXNzLmVudi5IT1QgPT09IFwieWVzXCIgfHwgcHJvY2Vzcy5lbnYuVklURVNUID09PSBcInRydWVcIlxuICAgICAgPyBgJHtyb290UGF0aH0vc3JjL3NvbmFtdS5jb25maWcudHNgXG4gICAgICA6IGAke3Jvb3RQYXRofS9kaXN0L3NvbmFtdS5jb25maWcuanNgO1xuICBjb25zdCB7IGRlZmF1bHQ6IGNvbmZpZyB9ID0gYXdhaXQgaW1wb3J0KGBmaWxlOi8vJHtjb25maWdQYXRofWApO1xuICBjb25zdCBpbXBvcnRUaW1lID0gcGVyZm9ybWFuY2Uubm93KCkgLSBzdGFydDtcbiAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwidGVzdFwiICYmXG4gICAgY29uc29sZS5sb2coYFtUSU1JTkddIGxvYWRDb25maWcgdG9vayAke2ltcG9ydFRpbWUudG9GaXhlZCgyKX1tc2ApO1xuICByZXR1cm4gY29uZmlnO1xufVxuIl0sIm5hbWVzIjpbImRlZmluZUNvbmZpZyIsImNvbmZpZyIsIlByb21pc2UiLCJyZXNvbHZlIiwibG9hZENvbmZpZyIsInJvb3RQYXRoIiwic3RhcnQiLCJwZXJmb3JtYW5jZSIsIm5vdyIsImNvbmZpZ1BhdGgiLCJwcm9jZXNzIiwiZW52IiwiSE9UIiwiVklURVNUIiwiZGVmYXVsdCIsImltcG9ydFRpbWUiLCJOT0RFX0VOViIsImNvbnNvbGUiLCJsb2ciLCJ0b0ZpeGVkIl0sIm1hcHBpbmdzIjoiQUFnS0EsdUZBQXVGO0FBQ3ZGLE9BQU8sU0FBU0EsYUFBYUMsTUFBZ0M7SUFDM0QsSUFBSSxPQUFPQSxXQUFXLFlBQVk7UUFDaEMsT0FBT0MsUUFBUUMsT0FBTyxDQUFDRjtJQUN6QjtJQUVBLE9BQU9DLFFBQVFDLE9BQU8sQ0FBQ0Y7QUFDekI7QUFFQTs7Ozs7Ozs7Ozs7O0NBWUMsR0FDRCxPQUFPLGVBQWVHLFdBQVdDLFFBQWdCO0lBQy9DLE1BQU1DLFFBQVFDLFlBQVlDLEdBQUc7SUFDN0IsTUFBTUMsYUFDSkMsUUFBUUMsR0FBRyxDQUFDQyxHQUFHLEtBQUssU0FBU0YsUUFBUUMsR0FBRyxDQUFDRSxNQUFNLEtBQUssU0FDaEQsR0FBR1IsU0FBUyxxQkFBcUIsQ0FBQyxHQUNsQyxHQUFHQSxTQUFTLHNCQUFzQixDQUFDO0lBQ3pDLE1BQU0sRUFBRVMsU0FBU2IsTUFBTSxFQUFFLEdBQUcsTUFBTSxNQUFNLENBQUMsQ0FBQyxPQUFPLEVBQUVRLFlBQVk7SUFDL0QsTUFBTU0sYUFBYVIsWUFBWUMsR0FBRyxLQUFLRjtJQUN2Q0ksUUFBUUMsR0FBRyxDQUFDSyxRQUFRLEtBQUssVUFDdkJDLFFBQVFDLEdBQUcsQ0FBQyxDQUFDLHlCQUF5QixFQUFFSCxXQUFXSSxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDbkUsT0FBT2xCO0FBQ1QifQ==
@@ -1,5 +1,7 @@
1
1
  import type { HTTPMethods } from "fastify";
2
2
  import type { z } from "zod";
3
+ import type { CacheControlConfig } from "../cache-control/types";
4
+ import type { CompressConfig } from "../compress/types";
3
5
  import { type TransactionalOptions } from "../database/puri-wrapper";
4
6
  import type { ApiParam, ApiParamType } from "../types/types";
5
7
  export interface GuardKeys {
@@ -18,6 +20,10 @@ export type ApiDecoratorOptions = {
18
20
  guards?: GuardKey[];
19
21
  description?: string;
20
22
  timeout?: number;
23
+ /** API 응답의 Cache-Control 헤더 설정. 설정하지 않으면 cacheControlHandler 또는 기본값이 적용됩니다. */
24
+ cacheControl?: CacheControlConfig;
25
+ /** API 응답의 압축 설정. false로 설정하면 압축을 비활성화합니다. */
26
+ compress?: CompressConfig;
21
27
  };
22
28
  export type StreamDecoratorOptions = {
23
29
  type: "sse";
@@ -1 +1 @@
1
- {"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../../src/api/decorators.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../../src/api/decorators.ts"],"names":[],"mappings":"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"}
@@ -291,4 +291,4 @@ newOptions) {
291
291
  });
292
292
  }
293
293
 
294
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcGkvZGVjb3JhdG9ycy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZXRMb2dnZXIgfSBmcm9tIFwiQGxvZ3RhcGUvbG9ndGFwZVwiO1xuaW1wb3J0IGFzc2VydCBmcm9tIFwiYXNzZXJ0XCI7XG5pbXBvcnQgdHlwZSB7IEhUVFBNZXRob2RzIH0gZnJvbSBcImZhc3RpZnlcIjtcbmltcG9ydCBpbmZsZWN0aW9uIGZyb20gXCJpbmZsZWN0aW9uXCI7XG5pbXBvcnQgeyBpc0VxdWFsIH0gZnJvbSBcInJhZGFzaGlcIjtcbmltcG9ydCB0eXBlIHsgeiB9IGZyb20gXCJ6b2RcIjtcbmltcG9ydCB7IEJhc2VNb2RlbENsYXNzIH0gZnJvbSBcIi4uL2RhdGFiYXNlL2Jhc2UtbW9kZWxcIjtcbmltcG9ydCB7IERCIH0gZnJvbSBcIi4uL2RhdGFiYXNlL2RiXCI7XG5pbXBvcnQge1xuICBQdXJpVHJhbnNhY3Rpb25XcmFwcGVyLFxuICB0eXBlIFB1cmlXcmFwcGVyLFxuICB0eXBlIFRyYW5zYWN0aW9uYWxPcHRpb25zLFxufSBmcm9tIFwiLi4vZGF0YWJhc2UvcHVyaS13cmFwcGVyXCI7XG5pbXBvcnQgeyBVcHNlcnRCdWlsZGVyIH0gZnJvbSBcIi4uL2RhdGFiYXNlL3Vwc2VydC1idWlsZGVyXCI7XG5pbXBvcnQgeyBjb252ZXJ0RG9tYWluVG9DYXRlZ29yeSB9IGZyb20gXCIuLi9sb2dnZXIvY2F0ZWdvcnlcIjtcbmltcG9ydCB0eXBlIHsgQXBpUGFyYW0sIEFwaVBhcmFtVHlwZSB9IGZyb20gXCIuLi90eXBlcy90eXBlc1wiO1xuaW1wb3J0IHsgQmFzZUZyYW1lQ2xhc3MgfSBmcm9tIFwiLi9iYXNlLWZyYW1lXCI7XG5pbXBvcnQgdHlwZSB7IFVwbG9hZENvbnRleHQgfSBmcm9tIFwiLi9jb250ZXh0XCI7XG5pbXBvcnQgeyBTb25hbXUgfSBmcm9tIFwiLi9zb25hbXVcIjtcblxuZXhwb3J0IGludGVyZmFjZSBHdWFyZEtleXMge1xuICBxdWVyeTogdHJ1ZTtcbiAgYWRtaW46IHRydWU7XG4gIHVzZXI6IHRydWU7XG59XG5leHBvcnQgdHlwZSBHdWFyZEtleSA9IGtleW9mIEd1YXJkS2V5cztcbmV4cG9ydCB0eXBlIFNlcnZpY2VDbGllbnQgPVxuICB8IFwiYXhpb3NcIlxuICB8IFwiYXhpb3MtbXVsdGlwYXJ0XCJcbiAgfCBcInRhbnN0YWNrLXF1ZXJ5XCJcbiAgfCBcInRhbnN0YWNrLW11dGF0aW9uXCJcbiAgfCBcIndpbmRvdy1mZXRjaFwiO1xuZXhwb3J0IHR5cGUgQXBpRGVjb3JhdG9yT3B0aW9ucyA9IHtcbiAgaHR0cE1ldGhvZD86IEhUVFBNZXRob2RzO1xuICBjb250ZW50VHlwZT86XG4gICAgfCBcInRleHQvcGxhaW5cIlxuICAgIHwgXCJ0ZXh0L2h0bWxcIlxuICAgIHwgXCJ0ZXh0L3htbFwiXG4gICAgfCBcImFwcGxpY2F0aW9uL2pzb25cIlxuICAgIHwgXCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW1cIjtcbiAgY2xpZW50cz86IFNlcnZpY2VDbGllbnRbXTtcbiAgcGF0aD86IHN0cmluZztcbiAgcmVzb3VyY2VOYW1lPzogc3RyaW5nO1xuICBndWFyZHM/OiBHdWFyZEtleVtdO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgdGltZW91dD86IG51bWJlcjtcbn07XG5leHBvcnQgdHlwZSBTdHJlYW1EZWNvcmF0b3JPcHRpb25zID0ge1xuICB0eXBlOiBcInNzZVwiOyAvLyB8ICd3c1xuICAvLyBiaW9tZS1pZ25vcmUgbGludC9zdXNwaWNpb3VzL25vRXhwbGljaXRBbnk6IOydtOuypO2KuCDtgqTrs4TroZwg64SY6rKo7KO864qUIOqwkuydtOuvgOuhnCDslrTrlqQg7YOA7J6F7J2065OgIOyDgeq0gOyXhuydjFxuICBldmVudHM6IHouWm9kT2JqZWN0PGFueT47XG4gIHBhdGg/OiBzdHJpbmc7XG4gIHJlc291cmNlTmFtZT86IHN0cmluZztcbiAgZ3VhcmRzPzogR3VhcmRLZXlbXTtcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG59O1xuZXhwb3J0IHR5cGUgVXBsb2FkRGVjb3JhdG9yT3B0aW9ucyA9IHtcbiAgbW9kZT86IFwic2luZ2xlXCIgfCBcIm11bHRpcGxlXCI7XG59O1xuZXhwb3J0IGNvbnN0IHJlZ2lzdGVyZWRBcGlzOiB7XG4gIC8qKlxuICAgKiBtb2RlbE5hbWXsnYAg66qo6424IO2BtOuemOyKpCDsnbTrpoTsnoXri4jri6QuIChleC4gXCJVc2VyTW9kZWxcIilcbiAgICovXG4gIG1vZGVsTmFtZTogc3RyaW5nO1xuICBtZXRob2ROYW1lOiBzdHJpbmc7XG4gIHBhdGg6IHN0cmluZztcbiAgb3B0aW9uczogQXBpRGVjb3JhdG9yT3B0aW9ucztcbiAgc3RyZWFtT3B0aW9ucz86IFN0cmVhbURlY29yYXRvck9wdGlvbnM7XG4gIHVwbG9hZE9wdGlvbnM/OiBVcGxvYWREZWNvcmF0b3JPcHRpb25zO1xufVtdID0gW107XG5leHBvcnQgdHlwZSBFeHRlbmRlZEFwaSA9IHtcbiAgbW9kZWxOYW1lOiBzdHJpbmc7XG4gIG1ldGhvZE5hbWU6IHN0cmluZztcbiAgcGF0aDogc3RyaW5nO1xuICBvcHRpb25zOiBBcGlEZWNvcmF0b3JPcHRpb25zO1xuICBzdHJlYW1PcHRpb25zPzogU3RyZWFtRGVjb3JhdG9yT3B0aW9ucztcbiAgdXBsb2FkT3B0aW9ucz86IFVwbG9hZERlY29yYXRvck9wdGlvbnM7XG4gIHR5cGVQYXJhbWV0ZXJzOiBBcGlQYXJhbVR5cGUuVHlwZVBhcmFtW107XG4gIHBhcmFtZXRlcnM6IEFwaVBhcmFtW107XG4gIHJldHVyblR5cGU6IEFwaVBhcmFtVHlwZTtcbn07XG50eXBlIERlY29yYXRvclRhcmdldCA9IHsgY29uc3RydWN0b3I6IHsgbmFtZTogc3RyaW5nIH0gfTtcblxuY29uc3QgREVDT1JBVE9SX1RZUEVTID0ge1xuICBBUEk6IFN5bWJvbChcImFwaVwiKSxcbiAgU1RSRUFNOiBTeW1ib2woXCJzdHJlYW1cIiksXG59IGFzIGNvbnN0O1xuXG5mdW5jdGlvbiBjaGVja1NpbmdsZURlY29yYXRvcih0YXJnZXQ6IERlY29yYXRvclRhcmdldCwgcHJvcGVydHlLZXk6IHN0cmluZywgZGVjb3JhdG9yVHlwZTogc3ltYm9sKSB7XG4gIGNvbnN0IG1ldGhvZCA9IHRhcmdldFtwcm9wZXJ0eUtleSBhcyBrZXlvZiB0eXBlb2YgdGFyZ2V0XSBhcyB7IF9fZGVjb3JhdG9yVHlwZT86IHN5bWJvbCB9O1xuICBpZiAobWV0aG9kPy5fX2RlY29yYXRvclR5cGUgJiYgbWV0aG9kPy5fX2RlY29yYXRvclR5cGUgIT09IGRlY29yYXRvclR5cGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgQCR7U3RyaW5nKGRlY29yYXRvclR5cGUpfSBkZWNvcmF0b3IgY2FuIG9ubHkgYmUgdXNlZCBvbmNlIG9uICR7dGFyZ2V0LmNvbnN0cnVjdG9yLm5hbWV9LiR7cHJvcGVydHlLZXl9LiBZb3UgY2FuIHVzZSBvbmx5IG9uZSBvZiBAYXBpIG9yIEBzdHJlYW0gZGVjb3JhdG9yIG9uIHRoZSBzYW1lIG1ldGhvZC5gLFxuICAgICk7XG4gIH0gZWxzZSB7XG4gICAgbWV0aG9kLl9fZGVjb3JhdG9yVHlwZSA9IGRlY29yYXRvclR5cGU7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFwaShvcHRpb25zOiBBcGlEZWNvcmF0b3JPcHRpb25zID0ge30pIHtcbiAgb3B0aW9ucyA9IHtcbiAgICBodHRwTWV0aG9kOiBcIkdFVFwiLFxuICAgIGNvbnRlbnRUeXBlOiBcImFwcGxpY2F0aW9uL2pzb25cIixcbiAgICBjbGllbnRzOiBbXCJheGlvc1wiXSxcbiAgICAuLi5vcHRpb25zLFxuICB9O1xuXG4gIHJldHVybiAodGFyZ2V0OiBEZWNvcmF0b3JUYXJnZXQsIHByb3BlcnR5S2V5OiBzdHJpbmcsIGRlc2NyaXB0b3I6IFByb3BlcnR5RGVzY3JpcHRvcikgPT4ge1xuICAgIGNvbnN0IG1vZGVsTmFtZSA9IHRhcmdldC5jb25zdHJ1Y3Rvci5uYW1lLm1hdGNoKC8oLispQ2xhc3MkLyk/LlsxXTtcbiAgICBhc3NlcnQoXG4gICAgICBtb2RlbE5hbWUsXG4gICAgICBgbW9kZWxOYW1lIGlzIHJlcXVpcmVkIG9uIEBhcGkgZGVjb3JhdG9yIG9uICR7dGFyZ2V0LmNvbnN0cnVjdG9yLm5hbWV9LiR7cHJvcGVydHlLZXl9YCxcbiAgICApO1xuICAgIGNvbnN0IG1ldGhvZE5hbWUgPSBwcm9wZXJ0eUtleTtcblxuICAgIC8vIOuplOyEnOuTnOyXkCDqsbjrprAg642w7L2U66CI7J207YSwIOykkeuztSDssrTtgaxcbiAgICBjaGVja1NpbmdsZURlY29yYXRvcih0YXJnZXQsIHByb3BlcnR5S2V5LCBERUNPUkFUT1JfVFlQRVMuQVBJKTtcblxuICAgIGNvbnN0IGRlZmF1bHRQYXRoID0gYC8ke2luZmxlY3Rpb24uY2FtZWxpemUoXG4gICAgICBtb2RlbE5hbWUucmVwbGFjZSgvTW9kZWwkLywgXCJcIikucmVwbGFjZSgvRnJhbWUkLywgXCJcIiksXG4gICAgICB0cnVlLFxuICAgICl9LyR7aW5mbGVjdGlvbi5jYW1lbGl6ZShwcm9wZXJ0eUtleSwgdHJ1ZSl9YDtcbiAgICBjb25zdCBwYXRoID0gb3B0aW9ucy5wYXRoID8/IGRlZmF1bHRQYXRoO1xuXG4gICAgLy8g6riw7KG0IOuPmeydvO2VnCDrqZTshJzrk5zqsIAg7J6I64qU7KeAIO2ZleyduCDtm4Qg7J6I64qUIOqyveyasCBvdmVycmlkZVxuICAgIGNvbnN0IGV4aXN0aW5nQXBpID0gcmVnaXN0ZXJlZEFwaXMuZmluZChcbiAgICAgIChhcGkpID0+IGFwaS5tb2RlbE5hbWUgPT09IG1vZGVsTmFtZSAmJiBhcGkubWV0aG9kTmFtZSA9PT0gbWV0aG9kTmFtZSxcbiAgICApO1xuICAgIGlmIChleGlzdGluZ0FwaSkge1xuICAgICAgLy8g6riw7KG07J2YIHBhdGjsmYAg7IOI66Gc7Jq0IHBhdGjqsIAg64uk66W064uk66m0KD3ruYgg7Iqk7Yq466eB7J20IOyVhOuLiOyXiOuKlOuNsCDri6Trpbgg7Iqk7Yq466eB7Jy866GcIOuwlOuAjOqyjCDrkJzri6TrqbQpIOyXkOufrOulvCDthLDrnKjroKTspI3ri4jri6QuXG4gICAgICBhc3NlcnROb0NvbmZsaWN0aW5nUGF0aChcImFwaVwiLCBtb2RlbE5hbWUsIG1ldGhvZE5hbWUsIGV4aXN0aW5nQXBpLnBhdGgsIHBhdGgpO1xuICAgICAgZXhpc3RpbmdBcGkucGF0aCA9IHBhdGg7XG5cbiAgICAgIC8vIOq4sOyhtOydmCDsmLXshZjqs7wg7IOI66Gc7Jq0IOyYteyFmOydtCDqsrnsuZjripQg67aA67aE7J20IOyeiOuLpOuptCDsl5Drn6zrpbwg7YSw65yo66Ck7KSN64uI64ukLlxuICAgICAgYXNzZXJ0Tm9Db25mbGljdGluZ09wdGlvbnMoXCJhcGlcIiwgbW9kZWxOYW1lLCBtZXRob2ROYW1lLCBleGlzdGluZ0FwaS5vcHRpb25zLCBvcHRpb25zKTtcbiAgICAgIGV4aXN0aW5nQXBpLm9wdGlvbnMgPSB7XG4gICAgICAgIC4uLmV4aXN0aW5nQXBpLm9wdGlvbnMsIC8vIOq4sOyhtOydmCDsmLXshZjsnYQg7KG07KSR7ZWY65CYXG4gICAgICAgIC4uLm9wdGlvbnMsIC8vIEBhcGkg642w7L2U66CI7J207YSw7J2YIOyYteyFmOydhCDstpTqsIDtlanri4jri6QuXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZWdpc3RlcmVkQXBpcy5wdXNoKHtcbiAgICAgICAgbW9kZWxOYW1lLFxuICAgICAgICBtZXRob2ROYW1lLFxuICAgICAgICBwYXRoLFxuICAgICAgICBvcHRpb25zLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgY29uc3Qgb3JpZ2luYWxNZXRob2QgPSBkZXNjcmlwdG9yLnZhbHVlO1xuICAgIGRlc2NyaXB0b3IudmFsdWUgPSBhc3luYyBmdW5jdGlvbiAodGhpczogQmFzZU1vZGVsQ2xhc3MgfCBCYXNlRnJhbWVDbGFzcywgLi4uYXJnczogdW5rbm93bltdKSB7XG4gICAgICBpZiAodGhpcyBpbnN0YW5jZW9mIEJhc2VNb2RlbENsYXNzKSB7XG4gICAgICAgIGdldExvZ2dlcihjb252ZXJ0RG9tYWluVG9DYXRlZ29yeSh0aGlzLm1vZGVsTmFtZSwgXCJtb2RlbFwiKSkuZGVidWcoXG4gICAgICAgICAgXCJhcGk6IHtodHRwTWV0aG9kfSB7bW9kZWx9LnttZXRob2R9XCIsXG4gICAgICAgICAge1xuICAgICAgICAgICAgaHR0cE1ldGhvZDogb3B0aW9ucy5odHRwTWV0aG9kLFxuICAgICAgICAgICAgbW9kZWw6IG1vZGVsTmFtZSxcbiAgICAgICAgICAgIG1ldGhvZDogbWV0aG9kTmFtZSxcbiAgICAgICAgICB9LFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcyBpbnN0YW5jZW9mIEJhc2VGcmFtZUNsYXNzKSB7XG4gICAgICAgIGdldExvZ2dlcihjb252ZXJ0RG9tYWluVG9DYXRlZ29yeSh0aGlzLmZyYW1lTmFtZSwgXCJmcmFtZVwiKSkuZGVidWcoXG4gICAgICAgICAgXCJhcGk6IHtodHRwTWV0aG9kfSB7bW9kZWx9LnttZXRob2R9XCIsXG4gICAgICAgICAge1xuICAgICAgICAgICAgaHR0cE1ldGhvZDogb3B0aW9ucy5odHRwTWV0aG9kLFxuICAgICAgICAgICAgbW9kZWw6IG1vZGVsTmFtZSxcbiAgICAgICAgICAgIG1ldGhvZDogbWV0aG9kTmFtZSxcbiAgICAgICAgICB9LFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gb3JpZ2luYWxNZXRob2QuYXBwbHkodGhpcywgYXJncyk7XG4gICAgfTtcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0cmVhbShvcHRpb25zOiBTdHJlYW1EZWNvcmF0b3JPcHRpb25zKSB7XG4gIHJldHVybiAodGFyZ2V0OiBEZWNvcmF0b3JUYXJnZXQsIHByb3BlcnR5S2V5OiBzdHJpbmcsIGRlc2NyaXB0b3I6IFByb3BlcnR5RGVzY3JpcHRvcikgPT4ge1xuICAgIGNvbnN0IG1vZGVsTmFtZSA9IHRhcmdldC5jb25zdHJ1Y3Rvci5uYW1lLm1hdGNoKC8oLispQ2xhc3MkLyk/LlsxXTtcbiAgICBhc3NlcnQoXG4gICAgICBtb2RlbE5hbWUsXG4gICAgICBgbW9kZWxOYW1lIGlzIHJlcXVpcmVkIG9uIEBzdHJlYW0gZGVjb3JhdG9yIG9uICR7dGFyZ2V0LmNvbnN0cnVjdG9yLm5hbWV9LiR7cHJvcGVydHlLZXl9YCxcbiAgICApO1xuICAgIGNvbnN0IG1ldGhvZE5hbWUgPSBwcm9wZXJ0eUtleTtcblxuICAgIC8vIOuplOyEnOuTnOyXkCDqsbjrprAg642w7L2U66CI7J207YSwIOykkeuztSDssrTtgaxcbiAgICBjaGVja1NpbmdsZURlY29yYXRvcih0YXJnZXQsIHByb3BlcnR5S2V5LCBERUNPUkFUT1JfVFlQRVMuU1RSRUFNKTtcblxuICAgIGNvbnN0IGRlZmF1bHRQYXRoID0gYC8ke2luZmxlY3Rpb24uY2FtZWxpemUoXG4gICAgICBtb2RlbE5hbWUucmVwbGFjZSgvTW9kZWwkLywgXCJcIikucmVwbGFjZSgvRnJhbWUkLywgXCJcIiksXG4gICAgICB0cnVlLFxuICAgICl9LyR7aW5mbGVjdGlvbi5jYW1lbGl6ZShwcm9wZXJ0eUtleSwgdHJ1ZSl9YDtcbiAgICBjb25zdCBwYXRoID0gb3B0aW9ucy5wYXRoID8/IGRlZmF1bHRQYXRoO1xuICAgIGNvbnN0IG9wdGlvbnNXaXRoRGVmYXVsdHMgPSB7XG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgaHR0cE1ldGhvZDogXCJHRVRcIiBhcyBIVFRQTWV0aG9kcyxcbiAgICB9O1xuXG4gICAgY29uc3QgZXhpc3RpbmdBcGkgPSByZWdpc3RlcmVkQXBpcy5maW5kKFxuICAgICAgKGFwaSkgPT4gYXBpLm1vZGVsTmFtZSA9PT0gbW9kZWxOYW1lICYmIGFwaS5tZXRob2ROYW1lID09PSBtZXRob2ROYW1lLFxuICAgICk7XG4gICAgaWYgKGV4aXN0aW5nQXBpKSB7XG4gICAgICAvLyDquLDsobTsnZggcGF0aOyZgCDsg4jroZzsmrQgcGF0aOqwgCDri6TrpbTri6TrqbQoPeu5iCDsiqTtirjrp4HsnbQg7JWE64uI7JeI64qU642wIOuLpOuluCDsiqTtirjrp4HsnLzroZwg67CU64CM6rKMIOuQnOuLpOuptCkg7JeQ65+s66W8IO2EsOucqOugpOykjeuLiOuLpC5cbiAgICAgIGFzc2VydE5vQ29uZmxpY3RpbmdQYXRoKFwic3RyZWFtXCIsIG1vZGVsTmFtZSwgbWV0aG9kTmFtZSwgZXhpc3RpbmdBcGkucGF0aCwgcGF0aCk7XG4gICAgICBleGlzdGluZ0FwaS5wYXRoID0gcGF0aDtcblxuICAgICAgLy8g6riw7KG07J2YIOyYteyFmOqzvCDsg4jroZzsmrQg7Ji17IWY7J20IOqyuey5mOuKlCDrtoDrtoTsnbQg7J6I64uk66m0IOyXkOufrOulvCDthLDrnKjroKTspI3ri4jri6QuXG4gICAgICBhc3NlcnROb0NvbmZsaWN0aW5nT3B0aW9ucyhcbiAgICAgICAgXCJzdHJlYW1cIixcbiAgICAgICAgbW9kZWxOYW1lLFxuICAgICAgICBtZXRob2ROYW1lLFxuICAgICAgICBleGlzdGluZ0FwaS5vcHRpb25zLFxuICAgICAgICBvcHRpb25zV2l0aERlZmF1bHRzLFxuICAgICAgKTtcbiAgICAgIGV4aXN0aW5nQXBpLm9wdGlvbnMgPSB7XG4gICAgICAgIC4uLmV4aXN0aW5nQXBpLm9wdGlvbnMsIC8vIOq4sOyhtOydmCDsmLXshZjsnYQg7KG07KSR7ZWY65CYXG4gICAgICAgIC4uLm9wdGlvbnNXaXRoRGVmYXVsdHMsIC8vIEBzdHJlYW0g642w7L2U66CI7J207YSw7J2YIOyYteyFmOydhCDstpTqsIDtlanri4jri6QuXG4gICAgICB9O1xuXG4gICAgICBleGlzdGluZ0FwaS5zdHJlYW1PcHRpb25zID0gb3B0aW9ucztcbiAgICB9IGVsc2Uge1xuICAgICAgcmVnaXN0ZXJlZEFwaXMucHVzaCh7XG4gICAgICAgIG1vZGVsTmFtZSxcbiAgICAgICAgbWV0aG9kTmFtZSxcbiAgICAgICAgcGF0aCxcbiAgICAgICAgb3B0aW9uczogb3B0aW9uc1dpdGhEZWZhdWx0cyxcbiAgICAgICAgc3RyZWFtT3B0aW9uczogb3B0aW9ucyxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0IG9yaWdpbmFsTWV0aG9kID0gZGVzY3JpcHRvci52YWx1ZTtcbiAgICBkZXNjcmlwdG9yLnZhbHVlID0gYXN5bmMgZnVuY3Rpb24gKHRoaXM6IEJhc2VNb2RlbENsYXNzIHwgQmFzZUZyYW1lQ2xhc3MsIC4uLmFyZ3M6IHVua25vd25bXSkge1xuICAgICAgaWYgKHRoaXMgaW5zdGFuY2VvZiBCYXNlTW9kZWxDbGFzcykge1xuICAgICAgICBnZXRMb2dnZXIoY29udmVydERvbWFpblRvQ2F0ZWdvcnkodGhpcy5tb2RlbE5hbWUsIFwibW9kZWxcIikpLmRlYnVnKFxuICAgICAgICAgIFwic3RyZWFtOiB7bW9kZWx9LnttZXRob2R9XCIsXG4gICAgICAgICAge1xuICAgICAgICAgICAgbW9kZWw6IG1vZGVsTmFtZSxcbiAgICAgICAgICAgIG1ldGhvZDogbWV0aG9kTmFtZSxcbiAgICAgICAgICB9LFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcyBpbnN0YW5jZW9mIEJhc2VGcmFtZUNsYXNzKSB7XG4gICAgICAgIGdldExvZ2dlcihjb252ZXJ0RG9tYWluVG9DYXRlZ29yeSh0aGlzLmZyYW1lTmFtZSwgXCJmcmFtZVwiKSkuZGVidWcoXG4gICAgICAgICAgXCJzdHJlYW06IHttb2RlbH0ue21ldGhvZH1cIixcbiAgICAgICAgICB7XG4gICAgICAgICAgICBtb2RlbDogbW9kZWxOYW1lLFxuICAgICAgICAgICAgbWV0aG9kOiBtZXRob2ROYW1lLFxuICAgICAgICAgIH0sXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBvcmlnaW5hbE1ldGhvZC5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9O1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNhY3Rpb25hbChvcHRpb25zOiBUcmFuc2FjdGlvbmFsT3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHsgaXNvbGF0aW9uLCByZWFkT25seSwgZGJQcmVzZXQgPSBcIndcIiB9ID0gb3B0aW9ucztcblxuICByZXR1cm4gKHRhcmdldDogRGVjb3JhdG9yVGFyZ2V0LCBwcm9wZXJ0eUtleTogc3RyaW5nLCBkZXNjcmlwdG9yOiBQcm9wZXJ0eURlc2NyaXB0b3IpID0+IHtcbiAgICBjb25zdCBvcmlnaW5hbE1ldGhvZCA9IGRlc2NyaXB0b3IudmFsdWU7XG4gICAgY29uc3QgbW9kZWxOYW1lID0gdGFyZ2V0LmNvbnN0cnVjdG9yLm5hbWUubWF0Y2goLyguKylDbGFzcyQvKT8uWzFdO1xuICAgIGFzc2VydChcbiAgICAgIG1vZGVsTmFtZSxcbiAgICAgIGBtb2RlbE5hbWUgaXMgcmVxdWlyZWQgb24gQHN0cmVhbSBkZWNvcmF0b3Igb24gJHt0YXJnZXQuY29uc3RydWN0b3IubmFtZX0uJHtwcm9wZXJ0eUtleX1gLFxuICAgICk7XG4gICAgY29uc3QgbWV0aG9kTmFtZSA9IHByb3BlcnR5S2V5O1xuXG4gICAgZGVzY3JpcHRvci52YWx1ZSA9IGFzeW5jIGZ1bmN0aW9uICh0aGlzOiBCYXNlTW9kZWxDbGFzcywgLi4uYXJnczogdW5rbm93bltdKSB7XG4gICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcInRyYW5zYWN0aW9uYWw6IHttb2RlbH0ue21ldGhvZH1cIiwge1xuICAgICAgICBtb2RlbDogbW9kZWxOYW1lLFxuICAgICAgICBtZXRob2Q6IG1ldGhvZE5hbWUsXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgZXhpc3RpbmdDb250ZXh0ID0gREIudHJhbnNhY3Rpb25TdG9yYWdlLmdldFN0b3JlKCk7XG5cbiAgICAgIC8vIEFzeW5jTG9jYWxTdG9yYWdlIOy7qO2FjeyKpO2KuCDsl4bqsbDrgpgg7ZW064u5IHByZXNldOydmCDtirjrnpzsnq3shZjsnbQg7JeG7Jy866m0IOyDiOuhnCDsi5zsnpFcbiAgICAgIGNvbnN0IHN0YXJ0VHJhbnNhY3Rpb24gPSBhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHB1cmkgPSB0aGlzLmdldFB1cmkoZGJQcmVzZXQpIGFzIFB1cmlXcmFwcGVyO1xuXG4gICAgICAgIHJldHVybiBwdXJpLmtuZXgudHJhbnNhY3Rpb24oXG4gICAgICAgICAgYXN5bmMgKHRyeCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXCJuZXcgdHJhbnNhY3Rpb24gY29udGV4dDoge2RiUHJlc2V0fVwiLCB7IGRiUHJlc2V0IH0pO1xuICAgICAgICAgICAgY29uc3QgdHJ4V3JhcHBlciA9IG5ldyBQdXJpVHJhbnNhY3Rpb25XcmFwcGVyKHRyeCwgbmV3IFVwc2VydEJ1aWxkZXIoKSk7XG4gICAgICAgICAgICAvLyBUcmFuc2FjdGlvbkNvbnRleHTsl5Ag7Yq4656c7J6t7IWYIOyggOyepVxuICAgICAgICAgICAgREIuZ2V0VHJhbnNhY3Rpb25Db250ZXh0KCkuc2V0VHJhbnNhY3Rpb24oZGJQcmVzZXQsIHRyeFdyYXBwZXIpO1xuXG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICByZXR1cm4gYXdhaXQgb3JpZ2luYWxNZXRob2QuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgICAvLyDtirjrnpzsnq3shZgg7KCc6rGwXG4gICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFwiZGVsZXRlIHRyYW5zYWN0aW9uIGNvbnRleHQ6IHtkYlByZXNldH1cIiwgeyBkYlByZXNldCB9KTtcbiAgICAgICAgICAgICAgREIuZ2V0VHJhbnNhY3Rpb25Db250ZXh0KCkuZGVsZXRlVHJhbnNhY3Rpb24oZGJQcmVzZXQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgeyBpc29sYXRpb25MZXZlbDogaXNvbGF0aW9uLCByZWFkT25seSB9LFxuICAgICAgICApO1xuICAgICAgfTtcblxuICAgICAgLy8gQXN5bmNMb2NhbFN0b3JhZ2Ug7Luo7YWN7Iqk7Yq46rCAIOyXhuycvOuptCDsg4jroZwg7IOd7ISxXG4gICAgICBpZiAoIWV4aXN0aW5nQ29udGV4dCkge1xuICAgICAgICByZXR1cm4gREIucnVuV2l0aFRyYW5zYWN0aW9uKHN0YXJ0VHJhbnNhY3Rpb24pO1xuICAgICAgfVxuXG4gICAgICAvLyDsnbTrr7ggQXN5bmNMb2NhbFN0b3JhZ2Ug7Luo7YWN7Iqk7Yq4IOyViOyXkCDsnojripTsp4Ag7ZmV7J24IO2bhCDtlbTri7kgcHJlc2V07J2YIO2KuOuenOyereyFmOydtCDsnbTrr7gg7J6I7Jy866m0IOyerOyCrOyaqVxuICAgICAgaWYgKGV4aXN0aW5nQ29udGV4dD8uZ2V0VHJhbnNhY3Rpb24oZGJQcmVzZXQpKSB7XG4gICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFwicmV1c2UgdHJhbnNhY3Rpb24gY29udGV4dDoge2RiUHJlc2V0fVwiLCB7IGRiUHJlc2V0IH0pO1xuICAgICAgICByZXR1cm4gb3JpZ2luYWxNZXRob2QuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICB9XG5cbiAgICAgIC8vIOy7qO2FjeyKpO2KuOuKlCDsnojsp4Drp4wg7J20IHByZXNldOydmCDtirjrnpzsnq3shZjsnYAg7JeG64qUIOqyveyasCAo6rCZ7J2AIOy7qO2FjeyKpO2KuCDrgrTsl5DshJwg7Iuk7ZaJKVxuICAgICAgcmV0dXJuIHN0YXJ0VHJhbnNhY3Rpb24oKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIGRlc2NyaXB0b3I7XG4gIH07XG59XG5cbi8qKlxuICogYXBpIOuNsOy9lOugiOydtO2EsOyZgCDtlajqu5gg7IKs7Jqp7ZWgIOyImCDsnojsirXri4jri6QuXG4gKiBAcGFyYW0gb3B0aW9uc1xuICogQHJldHVybnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVwbG9hZChvcHRpb25zOiBVcGxvYWREZWNvcmF0b3JPcHRpb25zID0ge30pIHtcbiAgcmV0dXJuICh0YXJnZXQ6IERlY29yYXRvclRhcmdldCwgcHJvcGVydHlLZXk6IHN0cmluZywgZGVzY3JpcHRvcjogUHJvcGVydHlEZXNjcmlwdG9yKSA9PiB7XG4gICAgY29uc3Qgb3JpZ2luYWxNZXRob2QgPSBkZXNjcmlwdG9yLnZhbHVlO1xuICAgIGNvbnN0IG1vZGVsTmFtZSA9IHRhcmdldC5jb25zdHJ1Y3Rvci5uYW1lLm1hdGNoKC8oLispQ2xhc3MkLyk/LlsxXTtcbiAgICBhc3NlcnQoXG4gICAgICBtb2RlbE5hbWUsXG4gICAgICBgbW9kZWxOYW1lIGlzIHJlcXVpcmVkIG9uIEB1cGxvYWQgZGVjb3JhdG9yIG9uICR7dGFyZ2V0LmNvbnN0cnVjdG9yLm5hbWV9LiR7cHJvcGVydHlLZXl9YCxcbiAgICApO1xuICAgIGNvbnN0IG1ldGhvZE5hbWUgPSBwcm9wZXJ0eUtleTtcblxuICAgIC8vIHJlZ2lzdGVyZWRBcGlz7JeQ7IScIO2VtOuLuSBBUEkg7LC+7JWE7IScIHVwbG9hZE9wdGlvbnMg7LaU6rCAXG4gICAgY29uc3QgZXhpc3RpbmdBcGkgPSByZWdpc3RlcmVkQXBpcy5maW5kKFxuICAgICAgKGFwaSkgPT4gYXBpLm1vZGVsTmFtZSA9PT0gbW9kZWxOYW1lICYmIGFwaS5tZXRob2ROYW1lID09PSBtZXRob2ROYW1lLFxuICAgICk7XG4gICAgaWYgKGV4aXN0aW5nQXBpKSB7XG4gICAgICBleGlzdGluZ0FwaS51cGxvYWRPcHRpb25zID0gb3B0aW9ucztcbiAgICB9IGVsc2Uge1xuICAgICAgLy8g7J20IOuplOyGjOuTnOyXkCDrtpnsnYAgQGFwaSDrjbDsvZTroIjsnbTthLDqsIAg7JWE7KeBIGV2YWzrkJjsp4Ag7JWK7J2AIOyDge2ZqeyeheuLiOuLpC4gKOunjOyVvSBAYXBp6rCAIOyViCDrtpnslrQg7J6I7JeI64uk66m0IOyLrOqwge2VnCDsg4HtmansnoXri4jri6QuLiEpXG4gICAgICAvLyDsl6zquLDsl5DshJwg7LWc7LSI66GcIG1vZGVsTmFtZeqzvCBtZXRob2ROYW1l7JeQIOuMgO2VtCByZWdpc3RlcmVkQXBpc+yXkCDtlZjrgpjrpbwg7LaU6rCA7ZW07KO87Ja07JW8IO2VqeuLiOuLpC5cbiAgICAgIC8vIHVwbG9hZE9wdGlvbnPripQg6re464yA66GcIOy2lOqwgO2VmOqzoCwgcGF0aOuKlCDruYgg7Iqk7Yq466eB7Jy866GcIOy2lOqwgO2VtOykjeuLiOuLpC5cbiAgICAgIC8vIOydtO2bhCBAYXBpIOuNsOy9lOugiOydtO2EsOqwgCBldmFs65CY66m0IOyLpOygnCBwYXRo66GcIOuNruyWtOyUjOybjOyngOqzoCwgb3B0aW9uc+qwgCDstpTqsIDrkKnri4jri6QuXG4gICAgICByZWdpc3RlcmVkQXBpcy5wdXNoKHtcbiAgICAgICAgbW9kZWxOYW1lLFxuICAgICAgICBtZXRob2ROYW1lLFxuICAgICAgICBwYXRoOiBcIlwiLFxuICAgICAgICBvcHRpb25zOiB7fSxcbiAgICAgICAgdXBsb2FkT3B0aW9uczogb3B0aW9ucyxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGRlc2NyaXB0b3IudmFsdWUgPSBhc3luYyBmdW5jdGlvbiAodGhpczogQmFzZU1vZGVsQ2xhc3MgfCBCYXNlRnJhbWVDbGFzcywgLi4uYXJnczogdW5rbm93bltdKSB7XG4gICAgICBpZiAodGhpcyBpbnN0YW5jZW9mIEJhc2VNb2RlbENsYXNzKSB7XG4gICAgICAgIGdldExvZ2dlcihjb252ZXJ0RG9tYWluVG9DYXRlZ29yeSh0aGlzLm1vZGVsTmFtZSwgXCJtb2RlbFwiKSkuZGVidWcoXG4gICAgICAgICAgXCJ1cGxvYWQ6IHttb2RlbH0ue21ldGhvZH1cIixcbiAgICAgICAgICB7XG4gICAgICAgICAgICBtb2RlbDogbW9kZWxOYW1lLFxuICAgICAgICAgICAgbWV0aG9kOiBtZXRob2ROYW1lLFxuICAgICAgICAgIH0sXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzIGluc3RhbmNlb2YgQmFzZUZyYW1lQ2xhc3MpIHtcbiAgICAgICAgZ2V0TG9nZ2VyKGNvbnZlcnREb21haW5Ub0NhdGVnb3J5KHRoaXMuZnJhbWVOYW1lLCBcImZyYW1lXCIpKS5kZWJ1ZyhcbiAgICAgICAgICBcInVwbG9hZDoge21vZGVsfS57bWV0aG9kfVwiLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG1vZGVsOiBtb2RlbE5hbWUsXG4gICAgICAgICAgICBtZXRob2Q6IG1ldGhvZE5hbWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgeyByZXF1ZXN0IH0gPSBTb25hbXUuZ2V0Q29udGV4dCgpO1xuICAgICAgY29uc3QgdXBsb2FkQ29udGV4dDogVXBsb2FkQ29udGV4dCA9IHtcbiAgICAgICAgZmlsZTogdW5kZWZpbmVkLFxuICAgICAgICBmaWxlczogW10sXG4gICAgICB9O1xuXG4gICAgICBjb25zdCB7IFVwbG9hZGVkRmlsZSB9ID0gYXdhaXQgaW1wb3J0KFwiLi4vc3RvcmFnZS91cGxvYWRlZC1maWxlXCIpO1xuICAgICAgaWYgKG9wdGlvbnMubW9kZSA9PT0gXCJtdWx0aXBsZVwiKSB7XG4gICAgICAgIGNvbnN0IHJhd0ZpbGVzSXRlcmF0b3IgPSByZXF1ZXN0LmZpbGVzKCk7XG4gICAgICAgIGZvciBhd2FpdCAoY29uc3QgcmF3RmlsZSBvZiByYXdGaWxlc0l0ZXJhdG9yKSB7XG4gICAgICAgICAgaWYgKHJhd0ZpbGUpIHtcbiAgICAgICAgICAgIGF3YWl0IHJhd0ZpbGUudG9CdWZmZXIoKTtcbiAgICAgICAgICAgIHVwbG9hZENvbnRleHQuZmlsZXMucHVzaChuZXcgVXBsb2FkZWRGaWxlKHJhd0ZpbGUpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHJhd0ZpbGUgPSBhd2FpdCByZXF1ZXN0LmZpbGUoKTtcbiAgICAgICAgaWYgKHJhd0ZpbGUpIHtcbiAgICAgICAgICB1cGxvYWRDb250ZXh0LmZpbGUgPSBuZXcgVXBsb2FkZWRGaWxlKHJhd0ZpbGUpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBTb25hbXUudXBsb2FkU3RvcmFnZS5ydW4oeyB1cGxvYWRDb250ZXh0IH0sICgpID0+IHtcbiAgICAgICAgcmV0dXJuIG9yaWdpbmFsTWV0aG9kLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgICAgfSk7XG4gICAgfTtcblxuICAgIHJldHVybiBkZXNjcmlwdG9yO1xuICB9O1xufVxuXG4vKipcbiAqIOq4sOyhtOydmCBwYXRo7JmAIOyDiOuhnOyatCBwYXRo6rCAIOuLpOultOuLpOuptCg96rCS7J20IOyeiOuNmCDsiqTtirjrp4HsnbQg64uk66W4IOqwkuydtCDsnojripQg7Iqk7Yq466eB7Jy866GcIOuwlOuAjOqyjCDrkJzri6TrqbQpIOyXkOufrOulvCDthLDrnKjroKTspI3ri4jri6QuXG4gKiBAcGFyYW0gZGVjb3JhdG9yTmFtZSDrjbDsvZTroIjsnbTthLAg7J2066aEXG4gKiBAcGFyYW0gbW9kZWxOYW1lIOuqqOuNuCDsnbTrpoRcbiAqIEBwYXJhbSBtZXRob2ROYW1lIOuplOyEnOuTnCDsnbTrpoRcbiAqIEBwYXJhbSBleGlzdGluZ1BhdGgg6riw7KG07J2YIHBhdGhcbiAqIEBwYXJhbSBuZXdQYXRoIOyDiOuhnOyatCBwYXRoXG4gKi9cbmZ1bmN0aW9uIGFzc2VydE5vQ29uZmxpY3RpbmdQYXRoKFxuICBkZWNvcmF0b3JOYW1lOiBzdHJpbmcsXG4gIG1vZGVsTmFtZTogc3RyaW5nLFxuICBtZXRob2ROYW1lOiBzdHJpbmcsXG4gIGV4aXN0aW5nUGF0aDogc3RyaW5nLFxuICBuZXdQYXRoOiBzdHJpbmcsXG4pIHtcbiAgaWYgKGV4aXN0aW5nUGF0aCAhPT0gXCJcIiAmJiBuZXdQYXRoICE9PSBcIlwiICYmIGV4aXN0aW5nUGF0aCAhPT0gbmV3UGF0aCkge1xuICAgIC8vIOydtOqyg+ydtCDrrLTsiqgg7IOB7Zmp7J2064OQ66m07JqULCBhcGkucGF0aOqwgCDrja7slrTslIzsm4zsp4DripQg7IOB7Zmp7J6F64uI64ukLlxuICAgIC8vIOqwgOuguSBAYXBpKHsgcGF0aDogXCIvYXBpL3YxL3VzZXJzXCIgfSkg642w7L2U66CI7J207YSw6rCAIOu2meyWtOyeiOuKlCDrqZTshJzrk5zsl5BcbiAgICAvLyBAc3RyZWFtKHsgcGF0aDogXCIvYXBpL3YxL3VzZXJzL3N0cmVhbVwiIH0pIOqwmeydgCDqsoPsnbQg67aZ7Ja0IOyeiOuKlCDsg4HtmansnoXri4jri6QuXG4gICAgLy8g7J2066CH6rKMIOuQmOuptCDrkZAg642w7L2U66CI7J207YSw6rCAIOqwmeydgCBhcGnsnZggcGF0aCDtlYTrk5zrpbwg6rG065Oc66as6rKMIOuQmOuvgOuhnCwg7JeQ65+s66W8IO2EsOucqOugpOykjeuLiOuLpC5cbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgQCR7ZGVjb3JhdG9yTmFtZX0gZGVjb3JhdG9yIG9uICR7bW9kZWxOYW1lfS4ke21ldGhvZE5hbWV9IGhhcyBjb25mbGljdGluZyBwYXRoOiAke25ld1BhdGh9LiBUaGUgZGVjb3JhdG9yIGlzIHRyeWluZyB0byBvdmVycmlkZSB0aGUgZXhpc3RpbmcgcGF0aCgke2V4aXN0aW5nUGF0aH0pIHdpdGggdGhlIG5ldyBwYXRoKCR7bmV3UGF0aH0pLmAsXG4gICAgKTtcbiAgfVxufVxuXG4vKipcbiAqIOq4sOyhtOydmCDsmLXshZjqs7wg7IOI66Gc7Jq0IOyYteyFmOydtCDqsrnsuZjripQg67aA67aE7J20IOyeiOuLpOuptCDsl5Drn6zrpbwg7YSw65yo66Ck7KSN64uI64ukLlxuICogQHBhcmFtIGRlY29yYXRvck5hbWUg642w7L2U66CI7J207YSwIOydtOumhFxuICogQHBhcmFtIG1vZGVsTmFtZSDrqqjrjbgg7J2066aEXG4gKiBAcGFyYW0gbWV0aG9kTmFtZSDrqZTshJzrk5wg7J2066aEXG4gKiBAcGFyYW0gZXhpc3RpbmdPcHRpb25zIOq4sOyhtOydmCDsmLXshZhcbiAqIEBwYXJhbSBuZXdPcHRpb25zIOyDiOuhnOyatCDsmLXshZhcbiAqL1xuZnVuY3Rpb24gYXNzZXJ0Tm9Db25mbGljdGluZ09wdGlvbnMoXG4gIGRlY29yYXRvck5hbWU6IHN0cmluZyxcbiAgbW9kZWxOYW1lOiBzdHJpbmcsXG4gIG1ldGhvZE5hbWU6IHN0cmluZyxcbiAgLy8gYmlvbWUtaWdub3JlIGxpbnQvc3VzcGljaW91cy9ub0V4cGxpY2l0QW55OiA87JWEIOyJveqyjOyJveqyjCDsooAg6rCR7Iuc64ukPlxuICBleGlzdGluZ09wdGlvbnM6IFJlY29yZDxzdHJpbmcsIGFueT4sXG4gIC8vIGJpb21lLWlnbm9yZSBsaW50L3N1c3BpY2lvdXMvbm9FeHBsaWNpdEFueTogPOydtOuftCDrlYwg7JWE64uI66m0IGFueSDslrjsoJwg7JSB64uI6rmMPlxuICBuZXdPcHRpb25zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuKSB7XG4gIE9iamVjdC5rZXlzKG5ld09wdGlvbnMpLmZvckVhY2goKGtleSkgPT4ge1xuICAgIGlmIChleGlzdGluZ09wdGlvbnNba2V5XSAmJiAhaXNFcXVhbChleGlzdGluZ09wdGlvbnNba2V5XSwgbmV3T3B0aW9uc1trZXldKSkge1xuICAgICAgLy8g7J206rKD7J20IOustOyKqCDsg4HtmansnbTrg5DrqbTsmpQsIGFwaS5vcHRpb25z6rCAIOuNruyWtOyUjOybjOyngOuKlCDsg4HtmansnoXri4jri6QuXG4gICAgICAvLyDqsIDroLkgQGFwaSh7IHJlc291cmNlTmFtZTogXCJVc2Vyc1wiIH0pIOuNsOy9lOugiOydtO2EsOqwgCDrtpnslrTsnojripQg66mU7ISc65Oc7JeQXG4gICAgICAvLyBAc3RyZWFtKHsgcmVzb3VyY2VOYW1lOiBcIlBvc3RzXCIgfSkg6rCZ7J2AIOqyg+ydtCDrtpnslrQg7J6I64qUIOyDge2ZqeyeheuLiOuLpC5cbiAgICAgIC8vIOydtOugh+qyjCDrkJjrqbQg65GQIOuNsOy9lOugiOydtO2EsOqwgCDqsJnsnYAgYXBp7J2YIG9wdGlvbnMg7IaNIOqwmeydgCDtlYTrk5zrpbwg6rG065Oc66as6rKMIOuQmOuvgOuhnCwg7JeQ65+s66W8IO2EsOucqOugpOykjeuLiOuLpC5cbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYEAke2RlY29yYXRvck5hbWV9IGRlY29yYXRvciBvbiAke21vZGVsTmFtZX0uJHttZXRob2ROYW1lfSBoYXMgY29uZmxpY3Rpbmcgb3B0aW9uczogJHtrZXl9LiBUaGUgZGVjb3JhdG9yIGlzIHRyeWluZyB0byBvdmVycmlkZSB0aGUgZXhpc3Rpbmcgb3B0aW9uKCR7SlNPTi5zdHJpbmdpZnkoZXhpc3RpbmdPcHRpb25zW2tleV0pfSkgd2l0aCB0aGUgbmV3IG9wdGlvbigke0pTT04uc3RyaW5naWZ5KG5ld09wdGlvbnNba2V5XSl9KS5gLFxuICAgICAgKTtcbiAgICB9XG4gIH0pO1xufVxuIl0sIm5hbWVzIjpbImdldExvZ2dlciIsImFzc2VydCIsImluZmxlY3Rpb24iLCJpc0VxdWFsIiwiQmFzZU1vZGVsQ2xhc3MiLCJEQiIsIlB1cmlUcmFuc2FjdGlvbldyYXBwZXIiLCJVcHNlcnRCdWlsZGVyIiwiY29udmVydERvbWFpblRvQ2F0ZWdvcnkiLCJCYXNlRnJhbWVDbGFzcyIsIlNvbmFtdSIsInJlZ2lzdGVyZWRBcGlzIiwiREVDT1JBVE9SX1RZUEVTIiwiQVBJIiwiU3ltYm9sIiwiU1RSRUFNIiwiY2hlY2tTaW5nbGVEZWNvcmF0b3IiLCJ0YXJnZXQiLCJwcm9wZXJ0eUtleSIsImRlY29yYXRvclR5cGUiLCJtZXRob2QiLCJfX2RlY29yYXRvclR5cGUiLCJFcnJvciIsIlN0cmluZyIsIm5hbWUiLCJhcGkiLCJvcHRpb25zIiwiaHR0cE1ldGhvZCIsImNvbnRlbnRUeXBlIiwiY2xpZW50cyIsImRlc2NyaXB0b3IiLCJtb2RlbE5hbWUiLCJtYXRjaCIsIm1ldGhvZE5hbWUiLCJkZWZhdWx0UGF0aCIsImNhbWVsaXplIiwicmVwbGFjZSIsInBhdGgiLCJleGlzdGluZ0FwaSIsImZpbmQiLCJhc3NlcnROb0NvbmZsaWN0aW5nUGF0aCIsImFzc2VydE5vQ29uZmxpY3RpbmdPcHRpb25zIiwicHVzaCIsIm9yaWdpbmFsTWV0aG9kIiwidmFsdWUiLCJhcmdzIiwiZGVidWciLCJtb2RlbCIsImZyYW1lTmFtZSIsImFwcGx5Iiwic3RyZWFtIiwib3B0aW9uc1dpdGhEZWZhdWx0cyIsInN0cmVhbU9wdGlvbnMiLCJ0cmFuc2FjdGlvbmFsIiwiaXNvbGF0aW9uIiwicmVhZE9ubHkiLCJkYlByZXNldCIsImxvZ2dlciIsImV4aXN0aW5nQ29udGV4dCIsInRyYW5zYWN0aW9uU3RvcmFnZSIsImdldFN0b3JlIiwic3RhcnRUcmFuc2FjdGlvbiIsInB1cmkiLCJnZXRQdXJpIiwia25leCIsInRyYW5zYWN0aW9uIiwidHJ4IiwidHJ4V3JhcHBlciIsImdldFRyYW5zYWN0aW9uQ29udGV4dCIsInNldFRyYW5zYWN0aW9uIiwiZGVsZXRlVHJhbnNhY3Rpb24iLCJpc29sYXRpb25MZXZlbCIsInJ1bldpdGhUcmFuc2FjdGlvbiIsImdldFRyYW5zYWN0aW9uIiwidXBsb2FkIiwidXBsb2FkT3B0aW9ucyIsInJlcXVlc3QiLCJnZXRDb250ZXh0IiwidXBsb2FkQ29udGV4dCIsImZpbGUiLCJ1bmRlZmluZWQiLCJmaWxlcyIsIlVwbG9hZGVkRmlsZSIsIm1vZGUiLCJyYXdGaWxlc0l0ZXJhdG9yIiwicmF3RmlsZSIsInRvQnVmZmVyIiwidXBsb2FkU3RvcmFnZSIsInJ1biIsImRlY29yYXRvck5hbWUiLCJleGlzdGluZ1BhdGgiLCJuZXdQYXRoIiwiZXhpc3RpbmdPcHRpb25zIiwibmV3T3B0aW9ucyIsIk9iamVjdCIsImtleXMiLCJmb3JFYWNoIiwia2V5IiwiSlNPTiIsInN0cmluZ2lmeSJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsU0FBUyxRQUFRLG1CQUFtQjtBQUM3QyxPQUFPQyxZQUFZLFNBQVM7QUFFNUIsT0FBT0MsZ0JBQWdCLGFBQWE7QUFDcEMsU0FBU0MsT0FBTyxRQUFRLFVBQVU7QUFFbEMsU0FBU0MsY0FBYyxRQUFRLDRCQUF5QjtBQUN4RCxTQUFTQyxFQUFFLFFBQVEsb0JBQWlCO0FBQ3BDLFNBQ0VDLHNCQUFzQixRQUdqQiw4QkFBMkI7QUFDbEMsU0FBU0MsYUFBYSxRQUFRLGdDQUE2QjtBQUMzRCxTQUFTQyx1QkFBdUIsUUFBUSx3QkFBcUI7QUFFN0QsU0FBU0MsY0FBYyxRQUFRLGtCQUFlO0FBRTlDLFNBQVNDLE1BQU0sUUFBUSxjQUFXO0FBeUNsQyxPQUFPLE1BQU1DLGlCQVVQLEVBQUUsQ0FBQztBQWNULE1B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
294
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcGkvZGVjb3JhdG9ycy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZXRMb2dnZXIgfSBmcm9tIFwiQGxvZ3RhcGUvbG9ndGFwZVwiO1xuaW1wb3J0IGFzc2VydCBmcm9tIFwiYXNzZXJ0XCI7XG5pbXBvcnQgdHlwZSB7IEhUVFBNZXRob2RzIH0gZnJvbSBcImZhc3RpZnlcIjtcbmltcG9ydCBpbmZsZWN0aW9uIGZyb20gXCJpbmZsZWN0aW9uXCI7XG5pbXBvcnQgeyBpc0VxdWFsIH0gZnJvbSBcInJhZGFzaGlcIjtcbmltcG9ydCB0eXBlIHsgeiB9IGZyb20gXCJ6b2RcIjtcbmltcG9ydCB0eXBlIHsgQ2FjaGVDb250cm9sQ29uZmlnIH0gZnJvbSBcIi4uL2NhY2hlLWNvbnRyb2wvdHlwZXNcIjtcbmltcG9ydCB0eXBlIHsgQ29tcHJlc3NDb25maWcgfSBmcm9tIFwiLi4vY29tcHJlc3MvdHlwZXNcIjtcbmltcG9ydCB7IEJhc2VNb2RlbENsYXNzIH0gZnJvbSBcIi4uL2RhdGFiYXNlL2Jhc2UtbW9kZWxcIjtcbmltcG9ydCB7IERCIH0gZnJvbSBcIi4uL2RhdGFiYXNlL2RiXCI7XG5pbXBvcnQge1xuICBQdXJpVHJhbnNhY3Rpb25XcmFwcGVyLFxuICB0eXBlIFB1cmlXcmFwcGVyLFxuICB0eXBlIFRyYW5zYWN0aW9uYWxPcHRpb25zLFxufSBmcm9tIFwiLi4vZGF0YWJhc2UvcHVyaS13cmFwcGVyXCI7XG5pbXBvcnQgeyBVcHNlcnRCdWlsZGVyIH0gZnJvbSBcIi4uL2RhdGFiYXNlL3Vwc2VydC1idWlsZGVyXCI7XG5pbXBvcnQgeyBjb252ZXJ0RG9tYWluVG9DYXRlZ29yeSB9IGZyb20gXCIuLi9sb2dnZXIvY2F0ZWdvcnlcIjtcbmltcG9ydCB0eXBlIHsgQXBpUGFyYW0sIEFwaVBhcmFtVHlwZSB9IGZyb20gXCIuLi90eXBlcy90eXBlc1wiO1xuaW1wb3J0IHsgQmFzZUZyYW1lQ2xhc3MgfSBmcm9tIFwiLi9iYXNlLWZyYW1lXCI7XG5pbXBvcnQgdHlwZSB7IFVwbG9hZENvbnRleHQgfSBmcm9tIFwiLi9jb250ZXh0XCI7XG5pbXBvcnQgeyBTb25hbXUgfSBmcm9tIFwiLi9zb25hbXVcIjtcblxuZXhwb3J0IGludGVyZmFjZSBHdWFyZEtleXMge1xuICBxdWVyeTogdHJ1ZTtcbiAgYWRtaW46IHRydWU7XG4gIHVzZXI6IHRydWU7XG59XG5leHBvcnQgdHlwZSBHdWFyZEtleSA9IGtleW9mIEd1YXJkS2V5cztcbmV4cG9ydCB0eXBlIFNlcnZpY2VDbGllbnQgPVxuICB8IFwiYXhpb3NcIlxuICB8IFwiYXhpb3MtbXVsdGlwYXJ0XCJcbiAgfCBcInRhbnN0YWNrLXF1ZXJ5XCJcbiAgfCBcInRhbnN0YWNrLW11dGF0aW9uXCJcbiAgfCBcIndpbmRvdy1mZXRjaFwiO1xuZXhwb3J0IHR5cGUgQXBpRGVjb3JhdG9yT3B0aW9ucyA9IHtcbiAgaHR0cE1ldGhvZD86IEhUVFBNZXRob2RzO1xuICBjb250ZW50VHlwZT86XG4gICAgfCBcInRleHQvcGxhaW5cIlxuICAgIHwgXCJ0ZXh0L2h0bWxcIlxuICAgIHwgXCJ0ZXh0L3htbFwiXG4gICAgfCBcImFwcGxpY2F0aW9uL2pzb25cIlxuICAgIHwgXCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW1cIjtcbiAgY2xpZW50cz86IFNlcnZpY2VDbGllbnRbXTtcbiAgcGF0aD86IHN0cmluZztcbiAgcmVzb3VyY2VOYW1lPzogc3RyaW5nO1xuICBndWFyZHM/OiBHdWFyZEtleVtdO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgdGltZW91dD86IG51bWJlcjtcbiAgLyoqIEFQSSDsnZHri7XsnZggQ2FjaGUtQ29udHJvbCDtl6TrjZQg7ISk7KCVLiDshKTsoJXtlZjsp4Ag7JWK7Jy866m0IGNhY2hlQ29udHJvbEhhbmRsZXIg65iQ64qUIOq4sOuzuOqwkuydtCDsoIHsmqnrkKnri4jri6QuICovXG4gIGNhY2hlQ29udHJvbD86IENhY2hlQ29udHJvbENvbmZpZztcbiAgLyoqIEFQSSDsnZHri7XsnZgg7JWV7LaVIOyEpOyglS4gZmFsc2XroZwg7ISk7KCV7ZWY66m0IOyVley2leydhCDruYTtmZzshLHtmZTtlanri4jri6QuICovXG4gIGNvbXByZXNzPzogQ29tcHJlc3NDb25maWc7XG59O1xuZXhwb3J0IHR5cGUgU3RyZWFtRGVjb3JhdG9yT3B0aW9ucyA9IHtcbiAgdHlwZTogXCJzc2VcIjsgLy8gfCAnd3NcbiAgLy8gYmlvbWUtaWdub3JlIGxpbnQvc3VzcGljaW91cy9ub0V4cGxpY2l0QW55OiDsnbTrsqTtirgg7YKk67OE66GcIOuEmOqyqOyjvOuKlCDqsJLsnbTrr4DroZwg7Ja065akIO2DgOyeheydtOuToCDsg4HqtIDsl4bsnYxcbiAgZXZlbnRzOiB6LlpvZE9iamVjdDxhbnk+O1xuICBwYXRoPzogc3RyaW5nO1xuICByZXNvdXJjZU5hbWU/OiBzdHJpbmc7XG4gIGd1YXJkcz86IEd1YXJkS2V5W107XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xufTtcbmV4cG9ydCB0eXBlIFVwbG9hZERlY29yYXRvck9wdGlvbnMgPSB7XG4gIG1vZGU/OiBcInNpbmdsZVwiIHwgXCJtdWx0aXBsZVwiO1xufTtcbmV4cG9ydCBjb25zdCByZWdpc3RlcmVkQXBpczoge1xuICAvKipcbiAgICogbW9kZWxOYW1l7J2AIOuqqOuNuCDtgbTrnpjsiqQg7J2066aE7J6F64uI64ukLiAoZXguIFwiVXNlck1vZGVsXCIpXG4gICAqL1xuICBtb2RlbE5hbWU6IHN0cmluZztcbiAgbWV0aG9kTmFtZTogc3RyaW5nO1xuICBwYXRoOiBzdHJpbmc7XG4gIG9wdGlvbnM6IEFwaURlY29yYXRvck9wdGlvbnM7XG4gIHN0cmVhbU9wdGlvbnM/OiBTdHJlYW1EZWNvcmF0b3JPcHRpb25zO1xuICB1cGxvYWRPcHRpb25zPzogVXBsb2FkRGVjb3JhdG9yT3B0aW9ucztcbn1bXSA9IFtdO1xuZXhwb3J0IHR5cGUgRXh0ZW5kZWRBcGkgPSB7XG4gIG1vZGVsTmFtZTogc3RyaW5nO1xuICBtZXRob2ROYW1lOiBzdHJpbmc7XG4gIHBhdGg6IHN0cmluZztcbiAgb3B0aW9uczogQXBpRGVjb3JhdG9yT3B0aW9ucztcbiAgc3RyZWFtT3B0aW9ucz86IFN0cmVhbURlY29yYXRvck9wdGlvbnM7XG4gIHVwbG9hZE9wdGlvbnM/OiBVcGxvYWREZWNvcmF0b3JPcHRpb25zO1xuICB0eXBlUGFyYW1ldGVyczogQXBpUGFyYW1UeXBlLlR5cGVQYXJhbVtdO1xuICBwYXJhbWV0ZXJzOiBBcGlQYXJhbVtdO1xuICByZXR1cm5UeXBlOiBBcGlQYXJhbVR5cGU7XG59O1xudHlwZSBEZWNvcmF0b3JUYXJnZXQgPSB7IGNvbnN0cnVjdG9yOiB7IG5hbWU6IHN0cmluZyB9IH07XG5cbmNvbnN0IERFQ09SQVRPUl9UWVBFUyA9IHtcbiAgQVBJOiBTeW1ib2woXCJhcGlcIiksXG4gIFNUUkVBTTogU3ltYm9sKFwic3RyZWFtXCIpLFxufSBhcyBjb25zdDtcblxuZnVuY3Rpb24gY2hlY2tTaW5nbGVEZWNvcmF0b3IodGFyZ2V0OiBEZWNvcmF0b3JUYXJnZXQsIHByb3BlcnR5S2V5OiBzdHJpbmcsIGRlY29yYXRvclR5cGU6IHN5bWJvbCkge1xuICBjb25zdCBtZXRob2QgPSB0YXJnZXRbcHJvcGVydHlLZXkgYXMga2V5b2YgdHlwZW9mIHRhcmdldF0gYXMgeyBfX2RlY29yYXRvclR5cGU/OiBzeW1ib2wgfTtcbiAgaWYgKG1ldGhvZD8uX19kZWNvcmF0b3JUeXBlICYmIG1ldGhvZD8uX19kZWNvcmF0b3JUeXBlICE9PSBkZWNvcmF0b3JUeXBlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYEAke1N0cmluZyhkZWNvcmF0b3JUeXBlKX0gZGVjb3JhdG9yIGNhbiBvbmx5IGJlIHVzZWQgb25jZSBvbiAke3RhcmdldC5jb25zdHJ1Y3Rvci5uYW1lfS4ke3Byb3BlcnR5S2V5fS4gWW91IGNhbiB1c2Ugb25seSBvbmUgb2YgQGFwaSBvciBAc3RyZWFtIGRlY29yYXRvciBvbiB0aGUgc2FtZSBtZXRob2QuYCxcbiAgICApO1xuICB9IGVsc2Uge1xuICAgIG1ldGhvZC5fX2RlY29yYXRvclR5cGUgPSBkZWNvcmF0b3JUeXBlO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcGkob3B0aW9uczogQXBpRGVjb3JhdG9yT3B0aW9ucyA9IHt9KSB7XG4gIG9wdGlvbnMgPSB7XG4gICAgaHR0cE1ldGhvZDogXCJHRVRcIixcbiAgICBjb250ZW50VHlwZTogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgY2xpZW50czogW1wiYXhpb3NcIl0sXG4gICAgLi4ub3B0aW9ucyxcbiAgfTtcblxuICByZXR1cm4gKHRhcmdldDogRGVjb3JhdG9yVGFyZ2V0LCBwcm9wZXJ0eUtleTogc3RyaW5nLCBkZXNjcmlwdG9yOiBQcm9wZXJ0eURlc2NyaXB0b3IpID0+IHtcbiAgICBjb25zdCBtb2RlbE5hbWUgPSB0YXJnZXQuY29uc3RydWN0b3IubmFtZS5tYXRjaCgvKC4rKUNsYXNzJC8pPy5bMV07XG4gICAgYXNzZXJ0KFxuICAgICAgbW9kZWxOYW1lLFxuICAgICAgYG1vZGVsTmFtZSBpcyByZXF1aXJlZCBvbiBAYXBpIGRlY29yYXRvciBvbiAke3RhcmdldC5jb25zdHJ1Y3Rvci5uYW1lfS4ke3Byb3BlcnR5S2V5fWAsXG4gICAgKTtcbiAgICBjb25zdCBtZXRob2ROYW1lID0gcHJvcGVydHlLZXk7XG5cbiAgICAvLyDrqZTshJzrk5zsl5Ag6rG466awIOuNsOy9lOugiOydtO2EsCDspJHrs7Ug7LK07YGsXG4gICAgY2hlY2tTaW5nbGVEZWNvcmF0b3IodGFyZ2V0LCBwcm9wZXJ0eUtleSwgREVDT1JBVE9SX1RZUEVTLkFQSSk7XG5cbiAgICBjb25zdCBkZWZhdWx0UGF0aCA9IGAvJHtpbmZsZWN0aW9uLmNhbWVsaXplKFxuICAgICAgbW9kZWxOYW1lLnJlcGxhY2UoL01vZGVsJC8sIFwiXCIpLnJlcGxhY2UoL0ZyYW1lJC8sIFwiXCIpLFxuICAgICAgdHJ1ZSxcbiAgICApfS8ke2luZmxlY3Rpb24uY2FtZWxpemUocHJvcGVydHlLZXksIHRydWUpfWA7XG4gICAgY29uc3QgcGF0aCA9IG9wdGlvbnMucGF0aCA/PyBkZWZhdWx0UGF0aDtcblxuICAgIC8vIOq4sOyhtCDrj5nsnbztlZwg66mU7ISc65Oc6rCAIOyeiOuKlOyngCDtmZXsnbgg7ZuEIOyeiOuKlCDqsr3smrAgb3ZlcnJpZGVcbiAgICBjb25zdCBleGlzdGluZ0FwaSA9IHJlZ2lzdGVyZWRBcGlzLmZpbmQoXG4gICAgICAoYXBpKSA9PiBhcGkubW9kZWxOYW1lID09PSBtb2RlbE5hbWUgJiYgYXBpLm1ldGhvZE5hbWUgPT09IG1ldGhvZE5hbWUsXG4gICAgKTtcbiAgICBpZiAoZXhpc3RpbmdBcGkpIHtcbiAgICAgIC8vIOq4sOyhtOydmCBwYXRo7JmAIOyDiOuhnOyatCBwYXRo6rCAIOuLpOultOuLpOuptCg967mIIOyKpO2KuOungeydtCDslYTri4jsl4jripTrjbAg64uk66W4IOyKpO2KuOungeycvOuhnCDrsJTrgIzqsowg65Cc64uk66m0KSDsl5Drn6zrpbwg7YSw65yo66Ck7KSN64uI64ukLlxuICAgICAgYXNzZXJ0Tm9Db25mbGljdGluZ1BhdGgoXCJhcGlcIiwgbW9kZWxOYW1lLCBtZXRob2ROYW1lLCBleGlzdGluZ0FwaS5wYXRoLCBwYXRoKTtcbiAgICAgIGV4aXN0aW5nQXBpLnBhdGggPSBwYXRoO1xuXG4gICAgICAvLyDquLDsobTsnZgg7Ji17IWY6rO8IOyDiOuhnOyatCDsmLXshZjsnbQg6rK57LmY64qUIOu2gOu2hOydtCDsnojri6TrqbQg7JeQ65+s66W8IO2EsOucqOugpOykjeuLiOuLpC5cbiAgICAgIGFzc2VydE5vQ29uZmxpY3RpbmdPcHRpb25zKFwiYXBpXCIsIG1vZGVsTmFtZSwgbWV0aG9kTmFtZSwgZXhpc3RpbmdBcGkub3B0aW9ucywgb3B0aW9ucyk7XG4gICAgICBleGlzdGluZ0FwaS5vcHRpb25zID0ge1xuICAgICAgICAuLi5leGlzdGluZ0FwaS5vcHRpb25zLCAvLyDquLDsobTsnZgg7Ji17IWY7J2EIOyhtOykke2VmOuQmFxuICAgICAgICAuLi5vcHRpb25zLCAvLyBAYXBpIOuNsOy9lOugiOydtO2EsOydmCDsmLXshZjsnYQg7LaU6rCA7ZWp64uI64ukLlxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVnaXN0ZXJlZEFwaXMucHVzaCh7XG4gICAgICAgIG1vZGVsTmFtZSxcbiAgICAgICAgbWV0aG9kTmFtZSxcbiAgICAgICAgcGF0aCxcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0IG9yaWdpbmFsTWV0aG9kID0gZGVzY3JpcHRvci52YWx1ZTtcbiAgICBkZXNjcmlwdG9yLnZhbHVlID0gYXN5bmMgZnVuY3Rpb24gKHRoaXM6IEJhc2VNb2RlbENsYXNzIHwgQmFzZUZyYW1lQ2xhc3MsIC4uLmFyZ3M6IHVua25vd25bXSkge1xuICAgICAgaWYgKHRoaXMgaW5zdGFuY2VvZiBCYXNlTW9kZWxDbGFzcykge1xuICAgICAgICBnZXRMb2dnZXIoY29udmVydERvbWFpblRvQ2F0ZWdvcnkodGhpcy5tb2RlbE5hbWUsIFwibW9kZWxcIikpLmRlYnVnKFxuICAgICAgICAgIFwiYXBpOiB7aHR0cE1ldGhvZH0ge21vZGVsfS57bWV0aG9kfVwiLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGh0dHBNZXRob2Q6IG9wdGlvbnMuaHR0cE1ldGhvZCxcbiAgICAgICAgICAgIG1vZGVsOiBtb2RlbE5hbWUsXG4gICAgICAgICAgICBtZXRob2Q6IG1ldGhvZE5hbWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMgaW5zdGFuY2VvZiBCYXNlRnJhbWVDbGFzcykge1xuICAgICAgICBnZXRMb2dnZXIoY29udmVydERvbWFpblRvQ2F0ZWdvcnkodGhpcy5mcmFtZU5hbWUsIFwiZnJhbWVcIikpLmRlYnVnKFxuICAgICAgICAgIFwiYXBpOiB7aHR0cE1ldGhvZH0ge21vZGVsfS57bWV0aG9kfVwiLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGh0dHBNZXRob2Q6IG9wdGlvbnMuaHR0cE1ldGhvZCxcbiAgICAgICAgICAgIG1vZGVsOiBtb2RlbE5hbWUsXG4gICAgICAgICAgICBtZXRob2Q6IG1ldGhvZE5hbWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG9yaWdpbmFsTWV0aG9kLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgIH07XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdHJlYW0ob3B0aW9uczogU3RyZWFtRGVjb3JhdG9yT3B0aW9ucykge1xuICByZXR1cm4gKHRhcmdldDogRGVjb3JhdG9yVGFyZ2V0LCBwcm9wZXJ0eUtleTogc3RyaW5nLCBkZXNjcmlwdG9yOiBQcm9wZXJ0eURlc2NyaXB0b3IpID0+IHtcbiAgICBjb25zdCBtb2RlbE5hbWUgPSB0YXJnZXQuY29uc3RydWN0b3IubmFtZS5tYXRjaCgvKC4rKUNsYXNzJC8pPy5bMV07XG4gICAgYXNzZXJ0KFxuICAgICAgbW9kZWxOYW1lLFxuICAgICAgYG1vZGVsTmFtZSBpcyByZXF1aXJlZCBvbiBAc3RyZWFtIGRlY29yYXRvciBvbiAke3RhcmdldC5jb25zdHJ1Y3Rvci5uYW1lfS4ke3Byb3BlcnR5S2V5fWAsXG4gICAgKTtcbiAgICBjb25zdCBtZXRob2ROYW1lID0gcHJvcGVydHlLZXk7XG5cbiAgICAvLyDrqZTshJzrk5zsl5Ag6rG466awIOuNsOy9lOugiOydtO2EsCDspJHrs7Ug7LK07YGsXG4gICAgY2hlY2tTaW5nbGVEZWNvcmF0b3IodGFyZ2V0LCBwcm9wZXJ0eUtleSwgREVDT1JBVE9SX1RZUEVTLlNUUkVBTSk7XG5cbiAgICBjb25zdCBkZWZhdWx0UGF0aCA9IGAvJHtpbmZsZWN0aW9uLmNhbWVsaXplKFxuICAgICAgbW9kZWxOYW1lLnJlcGxhY2UoL01vZGVsJC8sIFwiXCIpLnJlcGxhY2UoL0ZyYW1lJC8sIFwiXCIpLFxuICAgICAgdHJ1ZSxcbiAgICApfS8ke2luZmxlY3Rpb24uY2FtZWxpemUocHJvcGVydHlLZXksIHRydWUpfWA7XG4gICAgY29uc3QgcGF0aCA9IG9wdGlvbnMucGF0aCA/PyBkZWZhdWx0UGF0aDtcbiAgICBjb25zdCBvcHRpb25zV2l0aERlZmF1bHRzID0ge1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIGh0dHBNZXRob2Q6IFwiR0VUXCIgYXMgSFRUUE1ldGhvZHMsXG4gICAgfTtcblxuICAgIGNvbnN0IGV4aXN0aW5nQXBpID0gcmVnaXN0ZXJlZEFwaXMuZmluZChcbiAgICAgIChhcGkpID0+IGFwaS5tb2RlbE5hbWUgPT09IG1vZGVsTmFtZSAmJiBhcGkubWV0aG9kTmFtZSA9PT0gbWV0aG9kTmFtZSxcbiAgICApO1xuICAgIGlmIChleGlzdGluZ0FwaSkge1xuICAgICAgLy8g6riw7KG07J2YIHBhdGjsmYAg7IOI66Gc7Jq0IHBhdGjqsIAg64uk66W064uk66m0KD3ruYgg7Iqk7Yq466eB7J20IOyVhOuLiOyXiOuKlOuNsCDri6Trpbgg7Iqk7Yq466eB7Jy866GcIOuwlOuAjOqyjCDrkJzri6TrqbQpIOyXkOufrOulvCDthLDrnKjroKTspI3ri4jri6QuXG4gICAgICBhc3NlcnROb0NvbmZsaWN0aW5nUGF0aChcInN0cmVhbVwiLCBtb2RlbE5hbWUsIG1ldGhvZE5hbWUsIGV4aXN0aW5nQXBpLnBhdGgsIHBhdGgpO1xuICAgICAgZXhpc3RpbmdBcGkucGF0aCA9IHBhdGg7XG5cbiAgICAgIC8vIOq4sOyhtOydmCDsmLXshZjqs7wg7IOI66Gc7Jq0IOyYteyFmOydtCDqsrnsuZjripQg67aA67aE7J20IOyeiOuLpOuptCDsl5Drn6zrpbwg7YSw65yo66Ck7KSN64uI64ukLlxuICAgICAgYXNzZXJ0Tm9Db25mbGljdGluZ09wdGlvbnMoXG4gICAgICAgIFwic3RyZWFtXCIsXG4gICAgICAgIG1vZGVsTmFtZSxcbiAgICAgICAgbWV0aG9kTmFtZSxcbiAgICAgICAgZXhpc3RpbmdBcGkub3B0aW9ucyxcbiAgICAgICAgb3B0aW9uc1dpdGhEZWZhdWx0cyxcbiAgICAgICk7XG4gICAgICBleGlzdGluZ0FwaS5vcHRpb25zID0ge1xuICAgICAgICAuLi5leGlzdGluZ0FwaS5vcHRpb25zLCAvLyDquLDsobTsnZgg7Ji17IWY7J2EIOyhtOykke2VmOuQmFxuICAgICAgICAuLi5vcHRpb25zV2l0aERlZmF1bHRzLCAvLyBAc3RyZWFtIOuNsOy9lOugiOydtO2EsOydmCDsmLXshZjsnYQg7LaU6rCA7ZWp64uI64ukLlxuICAgICAgfTtcblxuICAgICAgZXhpc3RpbmdBcGkuc3RyZWFtT3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlZ2lzdGVyZWRBcGlzLnB1c2goe1xuICAgICAgICBtb2RlbE5hbWUsXG4gICAgICAgIG1ldGhvZE5hbWUsXG4gICAgICAgIHBhdGgsXG4gICAgICAgIG9wdGlvbnM6IG9wdGlvbnNXaXRoRGVmYXVsdHMsXG4gICAgICAgIHN0cmVhbU9wdGlvbnM6IG9wdGlvbnMsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdCBvcmlnaW5hbE1ldGhvZCA9IGRlc2NyaXB0b3IudmFsdWU7XG4gICAgZGVzY3JpcHRvci52YWx1ZSA9IGFzeW5jIGZ1bmN0aW9uICh0aGlzOiBCYXNlTW9kZWxDbGFzcyB8IEJhc2VGcmFtZUNsYXNzLCAuLi5hcmdzOiB1bmtub3duW10pIHtcbiAgICAgIGlmICh0aGlzIGluc3RhbmNlb2YgQmFzZU1vZGVsQ2xhc3MpIHtcbiAgICAgICAgZ2V0TG9nZ2VyKGNvbnZlcnREb21haW5Ub0NhdGVnb3J5KHRoaXMubW9kZWxOYW1lLCBcIm1vZGVsXCIpKS5kZWJ1ZyhcbiAgICAgICAgICBcInN0cmVhbToge21vZGVsfS57bWV0aG9kfVwiLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG1vZGVsOiBtb2RlbE5hbWUsXG4gICAgICAgICAgICBtZXRob2Q6IG1ldGhvZE5hbWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMgaW5zdGFuY2VvZiBCYXNlRnJhbWVDbGFzcykge1xuICAgICAgICBnZXRMb2dnZXIoY29udmVydERvbWFpblRvQ2F0ZWdvcnkodGhpcy5mcmFtZU5hbWUsIFwiZnJhbWVcIikpLmRlYnVnKFxuICAgICAgICAgIFwic3RyZWFtOiB7bW9kZWx9LnttZXRob2R9XCIsXG4gICAgICAgICAge1xuICAgICAgICAgICAgbW9kZWw6IG1vZGVsTmFtZSxcbiAgICAgICAgICAgIG1ldGhvZDogbWV0aG9kTmFtZSxcbiAgICAgICAgICB9LFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gb3JpZ2luYWxNZXRob2QuYXBwbHkodGhpcywgYXJncyk7XG4gICAgfTtcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zYWN0aW9uYWwob3B0aW9uczogVHJhbnNhY3Rpb25hbE9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7IGlzb2xhdGlvbiwgcmVhZE9ubHksIGRiUHJlc2V0ID0gXCJ3XCIgfSA9IG9wdGlvbnM7XG5cbiAgcmV0dXJuICh0YXJnZXQ6IERlY29yYXRvclRhcmdldCwgcHJvcGVydHlLZXk6IHN0cmluZywgZGVzY3JpcHRvcjogUHJvcGVydHlEZXNjcmlwdG9yKSA9PiB7XG4gICAgY29uc3Qgb3JpZ2luYWxNZXRob2QgPSBkZXNjcmlwdG9yLnZhbHVlO1xuICAgIGNvbnN0IG1vZGVsTmFtZSA9IHRhcmdldC5jb25zdHJ1Y3Rvci5uYW1lLm1hdGNoKC8oLispQ2xhc3MkLyk/LlsxXTtcbiAgICBhc3NlcnQoXG4gICAgICBtb2RlbE5hbWUsXG4gICAgICBgbW9kZWxOYW1lIGlzIHJlcXVpcmVkIG9uIEBzdHJlYW0gZGVjb3JhdG9yIG9uICR7dGFyZ2V0LmNvbnN0cnVjdG9yLm5hbWV9LiR7cHJvcGVydHlLZXl9YCxcbiAgICApO1xuICAgIGNvbnN0IG1ldGhvZE5hbWUgPSBwcm9wZXJ0eUtleTtcblxuICAgIGRlc2NyaXB0b3IudmFsdWUgPSBhc3luYyBmdW5jdGlvbiAodGhpczogQmFzZU1vZGVsQ2xhc3MsIC4uLmFyZ3M6IHVua25vd25bXSkge1xuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXCJ0cmFuc2FjdGlvbmFsOiB7bW9kZWx9LnttZXRob2R9XCIsIHtcbiAgICAgICAgbW9kZWw6IG1vZGVsTmFtZSxcbiAgICAgICAgbWV0aG9kOiBtZXRob2ROYW1lLFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IGV4aXN0aW5nQ29udGV4dCA9IERCLnRyYW5zYWN0aW9uU3RvcmFnZS5nZXRTdG9yZSgpO1xuXG4gICAgICAvLyBBc3luY0xvY2FsU3RvcmFnZSDsu6jthY3siqTtirgg7JeG6rGw64KYIO2VtOuLuSBwcmVzZXTsnZgg7Yq4656c7J6t7IWY7J20IOyXhuycvOuptCDsg4jroZwg7Iuc7J6RXG4gICAgICBjb25zdCBzdGFydFRyYW5zYWN0aW9uID0gYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCBwdXJpID0gdGhpcy5nZXRQdXJpKGRiUHJlc2V0KSBhcyBQdXJpV3JhcHBlcjtcblxuICAgICAgICByZXR1cm4gcHVyaS5rbmV4LnRyYW5zYWN0aW9uKFxuICAgICAgICAgIGFzeW5jICh0cngpID0+IHtcbiAgICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFwibmV3IHRyYW5zYWN0aW9uIGNvbnRleHQ6IHtkYlByZXNldH1cIiwgeyBkYlByZXNldCB9KTtcbiAgICAgICAgICAgIGNvbnN0IHRyeFdyYXBwZXIgPSBuZXcgUHVyaVRyYW5zYWN0aW9uV3JhcHBlcih0cngsIG5ldyBVcHNlcnRCdWlsZGVyKCkpO1xuICAgICAgICAgICAgLy8gVHJhbnNhY3Rpb25Db250ZXh07JeQIO2KuOuenOyereyFmCDsoIDsnqVcbiAgICAgICAgICAgIERCLmdldFRyYW5zYWN0aW9uQ29udGV4dCgpLnNldFRyYW5zYWN0aW9uKGRiUHJlc2V0LCB0cnhXcmFwcGVyKTtcblxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgcmV0dXJuIGF3YWl0IG9yaWdpbmFsTWV0aG9kLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgLy8g7Yq4656c7J6t7IWYIOygnOqxsFxuICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcImRlbGV0ZSB0cmFuc2FjdGlvbiBjb250ZXh0OiB7ZGJQcmVzZXR9XCIsIHsgZGJQcmVzZXQgfSk7XG4gICAgICAgICAgICAgIERCLmdldFRyYW5zYWN0aW9uQ29udGV4dCgpLmRlbGV0ZVRyYW5zYWN0aW9uKGRiUHJlc2V0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHsgaXNvbGF0aW9uTGV2ZWw6IGlzb2xhdGlvbiwgcmVhZE9ubHkgfSxcbiAgICAgICAgKTtcbiAgICAgIH07XG5cbiAgICAgIC8vIEFzeW5jTG9jYWxTdG9yYWdlIOy7qO2FjeyKpO2KuOqwgCDsl4bsnLzrqbQg7IOI66GcIOyDneyEsVxuICAgICAgaWYgKCFleGlzdGluZ0NvbnRleHQpIHtcbiAgICAgICAgcmV0dXJuIERCLnJ1bldpdGhUcmFuc2FjdGlvbihzdGFydFRyYW5zYWN0aW9uKTtcbiAgICAgIH1cblxuICAgICAgLy8g7J2066+4IEFzeW5jTG9jYWxTdG9yYWdlIOy7qO2FjeyKpO2KuCDslYjsl5Ag7J6I64qU7KeAIO2ZleyduCDtm4Qg7ZW064u5IHByZXNldOydmCDtirjrnpzsnq3shZjsnbQg7J2066+4IOyeiOycvOuptCDsnqzsgqzsmqlcbiAgICAgIGlmIChleGlzdGluZ0NvbnRleHQ/LmdldFRyYW5zYWN0aW9uKGRiUHJlc2V0KSkge1xuICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcInJldXNlIHRyYW5zYWN0aW9uIGNvbnRleHQ6IHtkYlByZXNldH1cIiwgeyBkYlByZXNldCB9KTtcbiAgICAgICAgcmV0dXJuIG9yaWdpbmFsTWV0aG9kLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgICAgfVxuXG4gICAgICAvLyDsu6jthY3siqTtirjripQg7J6I7KeA66eMIOydtCBwcmVzZXTsnZgg7Yq4656c7J6t7IWY7J2AIOyXhuuKlCDqsr3smrAgKOqwmeydgCDsu6jthY3siqTtirgg64K07JeQ7IScIOyLpO2WiSlcbiAgICAgIHJldHVybiBzdGFydFRyYW5zYWN0aW9uKCk7XG4gICAgfTtcblxuICAgIHJldHVybiBkZXNjcmlwdG9yO1xuICB9O1xufVxuXG4vKipcbiAqIGFwaSDrjbDsvZTroIjsnbTthLDsmYAg7ZWo6ruYIOyCrOyaqe2VoCDsiJgg7J6I7Iq164uI64ukLlxuICogQHBhcmFtIG9wdGlvbnNcbiAqIEByZXR1cm5zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1cGxvYWQob3B0aW9uczogVXBsb2FkRGVjb3JhdG9yT3B0aW9ucyA9IHt9KSB7XG4gIHJldHVybiAodGFyZ2V0OiBEZWNvcmF0b3JUYXJnZXQsIHByb3BlcnR5S2V5OiBzdHJpbmcsIGRlc2NyaXB0b3I6IFByb3BlcnR5RGVzY3JpcHRvcikgPT4ge1xuICAgIGNvbnN0IG9yaWdpbmFsTWV0aG9kID0gZGVzY3JpcHRvci52YWx1ZTtcbiAgICBjb25zdCBtb2RlbE5hbWUgPSB0YXJnZXQuY29uc3RydWN0b3IubmFtZS5tYXRjaCgvKC4rKUNsYXNzJC8pPy5bMV07XG4gICAgYXNzZXJ0KFxuICAgICAgbW9kZWxOYW1lLFxuICAgICAgYG1vZGVsTmFtZSBpcyByZXF1aXJlZCBvbiBAdXBsb2FkIGRlY29yYXRvciBvbiAke3RhcmdldC5jb25zdHJ1Y3Rvci5uYW1lfS4ke3Byb3BlcnR5S2V5fWAsXG4gICAgKTtcbiAgICBjb25zdCBtZXRob2ROYW1lID0gcHJvcGVydHlLZXk7XG5cbiAgICAvLyByZWdpc3RlcmVkQXBpc+yXkOyEnCDtlbTri7kgQVBJIOywvuyVhOyEnCB1cGxvYWRPcHRpb25zIOy2lOqwgFxuICAgIGNvbnN0IGV4aXN0aW5nQXBpID0gcmVnaXN0ZXJlZEFwaXMuZmluZChcbiAgICAgIChhcGkpID0+IGFwaS5tb2RlbE5hbWUgPT09IG1vZGVsTmFtZSAmJiBhcGkubWV0aG9kTmFtZSA9PT0gbWV0aG9kTmFtZSxcbiAgICApO1xuICAgIGlmIChleGlzdGluZ0FwaSkge1xuICAgICAgZXhpc3RpbmdBcGkudXBsb2FkT3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIOydtCDrqZTshozrk5zsl5Ag67aZ7J2AIEBhcGkg642w7L2U66CI7J207YSw6rCAIOyVhOyngSBldmFs65CY7KeAIOyViuydgCDsg4HtmansnoXri4jri6QuICjrp4zslb0gQGFwaeqwgCDslYgg67aZ7Ja0IOyeiOyXiOuLpOuptCDsi6zqsIHtlZwg7IOB7Zmp7J6F64uI64ukLi4hKVxuICAgICAgLy8g7Jes6riw7JeQ7IScIOy1nOy0iOuhnCBtb2RlbE5hbWXqs7wgbWV0aG9kTmFtZeyXkCDrjIDtlbQgcmVnaXN0ZXJlZEFwaXPsl5Ag7ZWY64KY66W8IOy2lOqwgO2VtOyjvOyWtOyVvCDtlanri4jri6QuXG4gICAgICAvLyB1cGxvYWRPcHRpb25z64qUIOq3uOuMgOuhnCDstpTqsIDtlZjqs6AsIHBhdGjripQg67mIIOyKpO2KuOungeycvOuhnCDstpTqsIDtlbTspI3ri4jri6QuXG4gICAgICAvLyDsnbTtm4QgQGFwaSDrjbDsvZTroIjsnbTthLDqsIAgZXZhbOuQmOuptCDsi6TsoJwgcGF0aOuhnCDrja7slrTslIzsm4zsp4Dqs6AsIG9wdGlvbnPqsIAg7LaU6rCA65Cp64uI64ukLlxuICAgICAgcmVnaXN0ZXJlZEFwaXMucHVzaCh7XG4gICAgICAgIG1vZGVsTmFtZSxcbiAgICAgICAgbWV0aG9kTmFtZSxcbiAgICAgICAgcGF0aDogXCJcIixcbiAgICAgICAgb3B0aW9uczoge30sXG4gICAgICAgIHVwbG9hZE9wdGlvbnM6IG9wdGlvbnMsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBkZXNjcmlwdG9yLnZhbHVlID0gYXN5bmMgZnVuY3Rpb24gKHRoaXM6IEJhc2VNb2RlbENsYXNzIHwgQmFzZUZyYW1lQ2xhc3MsIC4uLmFyZ3M6IHVua25vd25bXSkge1xuICAgICAgaWYgKHRoaXMgaW5zdGFuY2VvZiBCYXNlTW9kZWxDbGFzcykge1xuICAgICAgICBnZXRMb2dnZXIoY29udmVydERvbWFpblRvQ2F0ZWdvcnkodGhpcy5tb2RlbE5hbWUsIFwibW9kZWxcIikpLmRlYnVnKFxuICAgICAgICAgIFwidXBsb2FkOiB7bW9kZWx9LnttZXRob2R9XCIsXG4gICAgICAgICAge1xuICAgICAgICAgICAgbW9kZWw6IG1vZGVsTmFtZSxcbiAgICAgICAgICAgIG1ldGhvZDogbWV0aG9kTmFtZSxcbiAgICAgICAgICB9LFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcyBpbnN0YW5jZW9mIEJhc2VGcmFtZUNsYXNzKSB7XG4gICAgICAgIGdldExvZ2dlcihjb252ZXJ0RG9tYWluVG9DYXRlZ29yeSh0aGlzLmZyYW1lTmFtZSwgXCJmcmFtZVwiKSkuZGVidWcoXG4gICAgICAgICAgXCJ1cGxvYWQ6IHttb2RlbH0ue21ldGhvZH1cIixcbiAgICAgICAgICB7XG4gICAgICAgICAgICBtb2RlbDogbW9kZWxOYW1lLFxuICAgICAgICAgICAgbWV0aG9kOiBtZXRob2ROYW1lLFxuICAgICAgICAgIH0sXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHsgcmVxdWVzdCB9ID0gU29uYW11LmdldENvbnRleHQoKTtcbiAgICAgIGNvbnN0IHVwbG9hZENvbnRleHQ6IFVwbG9hZENvbnRleHQgPSB7XG4gICAgICAgIGZpbGU6IHVuZGVmaW5lZCxcbiAgICAgICAgZmlsZXM6IFtdLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgeyBVcGxvYWRlZEZpbGUgfSA9IGF3YWl0IGltcG9ydChcIi4uL3N0b3JhZ2UvdXBsb2FkZWQtZmlsZVwiKTtcbiAgICAgIGlmIChvcHRpb25zLm1vZGUgPT09IFwibXVsdGlwbGVcIikge1xuICAgICAgICBjb25zdCByYXdGaWxlc0l0ZXJhdG9yID0gcmVxdWVzdC5maWxlcygpO1xuICAgICAgICBmb3IgYXdhaXQgKGNvbnN0IHJhd0ZpbGUgb2YgcmF3RmlsZXNJdGVyYXRvcikge1xuICAgICAgICAgIGlmIChyYXdGaWxlKSB7XG4gICAgICAgICAgICBhd2FpdCByYXdGaWxlLnRvQnVmZmVyKCk7XG4gICAgICAgICAgICB1cGxvYWRDb250ZXh0LmZpbGVzLnB1c2gobmV3IFVwbG9hZGVkRmlsZShyYXdGaWxlKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCByYXdGaWxlID0gYXdhaXQgcmVxdWVzdC5maWxlKCk7XG4gICAgICAgIGlmIChyYXdGaWxlKSB7XG4gICAgICAgICAgdXBsb2FkQ29udGV4dC5maWxlID0gbmV3IFVwbG9hZGVkRmlsZShyYXdGaWxlKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gU29uYW11LnVwbG9hZFN0b3JhZ2UucnVuKHsgdXBsb2FkQ29udGV4dCB9LCAoKSA9PiB7XG4gICAgICAgIHJldHVybiBvcmlnaW5hbE1ldGhvZC5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICByZXR1cm4gZGVzY3JpcHRvcjtcbiAgfTtcbn1cblxuLyoqXG4gKiDquLDsobTsnZggcGF0aOyZgCDsg4jroZzsmrQgcGF0aOqwgCDri6TrpbTri6TrqbQoPeqwkuydtCDsnojrjZgg7Iqk7Yq466eB7J20IOuLpOuluCDqsJLsnbQg7J6I64qUIOyKpO2KuOungeycvOuhnCDrsJTrgIzqsowg65Cc64uk66m0KSDsl5Drn6zrpbwg7YSw65yo66Ck7KSN64uI64ukLlxuICogQHBhcmFtIGRlY29yYXRvck5hbWUg642w7L2U66CI7J207YSwIOydtOumhFxuICogQHBhcmFtIG1vZGVsTmFtZSDrqqjrjbgg7J2066aEXG4gKiBAcGFyYW0gbWV0aG9kTmFtZSDrqZTshJzrk5wg7J2066aEXG4gKiBAcGFyYW0gZXhpc3RpbmdQYXRoIOq4sOyhtOydmCBwYXRoXG4gKiBAcGFyYW0gbmV3UGF0aCDsg4jroZzsmrQgcGF0aFxuICovXG5mdW5jdGlvbiBhc3NlcnROb0NvbmZsaWN0aW5nUGF0aChcbiAgZGVjb3JhdG9yTmFtZTogc3RyaW5nLFxuICBtb2RlbE5hbWU6IHN0cmluZyxcbiAgbWV0aG9kTmFtZTogc3RyaW5nLFxuICBleGlzdGluZ1BhdGg6IHN0cmluZyxcbiAgbmV3UGF0aDogc3RyaW5nLFxuKSB7XG4gIGlmIChleGlzdGluZ1BhdGggIT09IFwiXCIgJiYgbmV3UGF0aCAhPT0gXCJcIiAmJiBleGlzdGluZ1BhdGggIT09IG5ld1BhdGgpIHtcbiAgICAvLyDsnbTqsoPsnbQg66y07IqoIOyDge2ZqeydtOuDkOuptOyalCwgYXBpLnBhdGjqsIAg642u7Ja07JSM7JuM7KeA64qUIOyDge2ZqeyeheuLiOuLpC5cbiAgICAvLyDqsIDroLkgQGFwaSh7IHBhdGg6IFwiL2FwaS92MS91c2Vyc1wiIH0pIOuNsOy9lOugiOydtO2EsOqwgCDrtpnslrTsnojripQg66mU7ISc65Oc7JeQXG4gICAgLy8gQHN0cmVhbSh7IHBhdGg6IFwiL2FwaS92MS91c2Vycy9zdHJlYW1cIiB9KSDqsJnsnYAg6rKD7J20IOu2meyWtCDsnojripQg7IOB7Zmp7J6F64uI64ukLlxuICAgIC8vIOydtOugh+qyjCDrkJjrqbQg65GQIOuNsOy9lOugiOydtO2EsOqwgCDqsJnsnYAgYXBp7J2YIHBhdGgg7ZWE65Oc66W8IOqxtOuTnOumrOqyjCDrkJjrr4DroZwsIOyXkOufrOulvCDthLDrnKjroKTspI3ri4jri6QuXG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYEAke2RlY29yYXRvck5hbWV9IGRlY29yYXRvciBvbiAke21vZGVsTmFtZX0uJHttZXRob2ROYW1lfSBoYXMgY29uZmxpY3RpbmcgcGF0aDogJHtuZXdQYXRofS4gVGhlIGRlY29yYXRvciBpcyB0cnlpbmcgdG8gb3ZlcnJpZGUgdGhlIGV4aXN0aW5nIHBhdGgoJHtleGlzdGluZ1BhdGh9KSB3aXRoIHRoZSBuZXcgcGF0aCgke25ld1BhdGh9KS5gLFxuICAgICk7XG4gIH1cbn1cblxuLyoqXG4gKiDquLDsobTsnZgg7Ji17IWY6rO8IOyDiOuhnOyatCDsmLXshZjsnbQg6rK57LmY64qUIOu2gOu2hOydtCDsnojri6TrqbQg7JeQ65+s66W8IO2EsOucqOugpOykjeuLiOuLpC5cbiAqIEBwYXJhbSBkZWNvcmF0b3JOYW1lIOuNsOy9lOugiOydtO2EsCDsnbTrpoRcbiAqIEBwYXJhbSBtb2RlbE5hbWUg66qo6424IOydtOumhFxuICogQHBhcmFtIG1ldGhvZE5hbWUg66mU7ISc65OcIOydtOumhFxuICogQHBhcmFtIGV4aXN0aW5nT3B0aW9ucyDquLDsobTsnZgg7Ji17IWYXG4gKiBAcGFyYW0gbmV3T3B0aW9ucyDsg4jroZzsmrQg7Ji17IWYXG4gKi9cbmZ1bmN0aW9uIGFzc2VydE5vQ29uZmxpY3RpbmdPcHRpb25zKFxuICBkZWNvcmF0b3JOYW1lOiBzdHJpbmcsXG4gIG1vZGVsTmFtZTogc3RyaW5nLFxuICBtZXRob2ROYW1lOiBzdHJpbmcsXG4gIC8vIGJpb21lLWlnbm9yZSBsaW50L3N1c3BpY2lvdXMvbm9FeHBsaWNpdEFueTogPOyVhCDsib3qsozsib3qsowg7KKAIOqwkeyLnOuLpD5cbiAgZXhpc3RpbmdPcHRpb25zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICAvLyBiaW9tZS1pZ25vcmUgbGludC9zdXNwaWNpb3VzL25vRXhwbGljaXRBbnk6IDzsnbTrn7Qg65WMIOyVhOuLiOuptCBhbnkg7Ja47KCcIOyUgeuLiOq5jD5cbiAgbmV3T3B0aW9uczogUmVjb3JkPHN0cmluZywgYW55Pixcbikge1xuICBPYmplY3Qua2V5cyhuZXdPcHRpb25zKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICBpZiAoZXhpc3RpbmdPcHRpb25zW2tleV0gJiYgIWlzRXF1YWwoZXhpc3RpbmdPcHRpb25zW2tleV0sIG5ld09wdGlvbnNba2V5XSkpIHtcbiAgICAgIC8vIOydtOqyg+ydtCDrrLTsiqgg7IOB7Zmp7J2064OQ66m07JqULCBhcGkub3B0aW9uc+qwgCDrja7slrTslIzsm4zsp4DripQg7IOB7Zmp7J6F64uI64ukLlxuICAgICAgLy8g6rCA66C5IEBhcGkoeyByZXNvdXJjZU5hbWU6IFwiVXNlcnNcIiB9KSDrjbDsvZTroIjsnbTthLDqsIAg67aZ7Ja07J6I64qUIOuplOyEnOuTnOyXkFxuICAgICAgLy8gQHN0cmVhbSh7IHJlc291cmNlTmFtZTogXCJQb3N0c1wiIH0pIOqwmeydgCDqsoPsnbQg67aZ7Ja0IOyeiOuKlCDsg4HtmansnoXri4jri6QuXG4gICAgICAvLyDsnbTroIfqsowg65CY66m0IOuRkCDrjbDsvZTroIjsnbTthLDqsIAg6rCZ7J2AIGFwaeydmCBvcHRpb25zIOyGjSDqsJnsnYAg7ZWE65Oc66W8IOqxtOuTnOumrOqyjCDrkJjrr4DroZwsIOyXkOufrOulvCDthLDrnKjroKTspI3ri4jri6QuXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBAJHtkZWNvcmF0b3JOYW1lfSBkZWNvcmF0b3Igb24gJHttb2RlbE5hbWV9LiR7bWV0aG9kTmFtZX0gaGFzIGNvbmZsaWN0aW5nIG9wdGlvbnM6ICR7a2V5fS4gVGhlIGRlY29yYXRvciBpcyB0cnlpbmcgdG8gb3ZlcnJpZGUgdGhlIGV4aXN0aW5nIG9wdGlvbigke0pTT04uc3RyaW5naWZ5KGV4aXN0aW5nT3B0aW9uc1trZXldKX0pIHdpdGggdGhlIG5ldyBvcHRpb24oJHtKU09OLnN0cmluZ2lmeShuZXdPcHRpb25zW2tleV0pfSkuYCxcbiAgICAgICk7XG4gICAgfVxuICB9KTtcbn1cbiJdLCJuYW1lcyI6WyJnZXRMb2dnZXIiLCJhc3NlcnQiLCJpbmZsZWN0aW9uIiwiaXNFcXVhbCIsIkJhc2VNb2RlbENsYXNzIiwiREIiLCJQdXJpVHJhbnNhY3Rpb25XcmFwcGVyIiwiVXBzZXJ0QnVpbGRlciIsImNvbnZlcnREb21haW5Ub0NhdGVnb3J5IiwiQmFzZUZyYW1lQ2xhc3MiLCJTb25hbXUiLCJyZWdpc3RlcmVkQXBpcyIsIkRFQ09SQVRPUl9UWVBFUyIsIkFQSSIsIlN5bWJvbCIsIlNUUkVBTSIsImNoZWNrU2luZ2xlRGVjb3JhdG9yIiwidGFyZ2V0IiwicHJvcGVydHlLZXkiLCJkZWNvcmF0b3JUeXBlIiwibWV0aG9kIiwiX19kZWNvcmF0b3JUeXBlIiwiRXJyb3IiLCJTdHJpbmciLCJuYW1lIiwiYXBpIiwib3B0aW9ucyIsImh0dHBNZXRob2QiLCJjb250ZW50VHlwZSIsImNsaWVudHMiLCJkZXNjcmlwdG9yIiwibW9kZWxOYW1lIiwibWF0Y2giLCJtZXRob2ROYW1lIiwiZGVmYXVsdFBhdGgiLCJjYW1lbGl6ZSIsInJlcGxhY2UiLCJwYXRoIiwiZXhpc3RpbmdBcGkiLCJmaW5kIiwiYXNzZXJ0Tm9Db25mbGljdGluZ1BhdGgiLCJhc3NlcnROb0NvbmZsaWN0aW5nT3B0aW9ucyIsInB1c2giLCJvcmlnaW5hbE1ldGhvZCIsInZhbHVlIiwiYXJncyIsImRlYnVnIiwibW9kZWwiLCJmcmFtZU5hbWUiLCJhcHBseSIsInN0cmVhbSIsIm9wdGlvbnNXaXRoRGVmYXVsdHMiLCJzdHJlYW1PcHRpb25zIiwidHJhbnNhY3Rpb25hbCIsImlzb2xhdGlvbiIsInJlYWRPbmx5IiwiZGJQcmVzZXQiLCJsb2dnZXIiLCJleGlzdGluZ0NvbnRleHQiLCJ0cmFuc2FjdGlvblN0b3JhZ2UiLCJnZXRTdG9yZSIsInN0YXJ0VHJhbnNhY3Rpb24iLCJwdXJpIiwiZ2V0UHVyaSIsImtuZXgiLCJ0cmFuc2FjdGlvbiIsInRyeCIsInRyeFdyYXBwZXIiLCJnZXRUcmFuc2FjdGlvbkNvbnRleHQiLCJzZXRUcmFuc2FjdGlvbiIsImRlbGV0ZVRyYW5zYWN0aW9uIiwiaXNvbGF0aW9uTGV2ZWwiLCJydW5XaXRoVHJhbnNhY3Rpb24iLCJnZXRUcmFuc2FjdGlvbiIsInVwbG9hZCIsInVwbG9hZE9wdGlvbnMiLCJyZXF1ZXN0IiwiZ2V0Q29udGV4dCIsInVwbG9hZENvbnRleHQiLCJmaWxlIiwidW5kZWZpbmVkIiwiZmlsZXMiLCJVcGxvYWRlZEZpbGUiLCJtb2RlIiwicmF3RmlsZXNJdGVyYXRvciIsInJhd0ZpbGUiLCJ0b0J1ZmZlciIsInVwbG9hZFN0b3JhZ2UiLCJydW4iLCJkZWNvcmF0b3JOYW1lIiwiZXhpc3RpbmdQYXRoIiwibmV3UGF0aCIsImV4aXN0aW5nT3B0aW9ucyIsIm5ld09wdGlvbnMiLCJPYmplY3QiLCJrZXlzIiwiZm9yRWFjaCIsImtleSIsIkpTT04iLCJzdHJpbmdpZnkiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLFNBQVMsUUFBUSxtQkFBbUI7QUFDN0MsT0FBT0MsWUFBWSxTQUFTO0FBRTVCLE9BQU9DLGdCQUFnQixhQUFhO0FBQ3BDLFNBQVNDLE9BQU8sUUFBUSxVQUFVO0FBSWxDLFNBQVNDLGNBQWMsUUFBUSw0QkFBeUI7QUFDeEQsU0FBU0MsRUFBRSxRQUFRLG9CQUFpQjtBQUNwQyxTQUNFQyxzQkFBc0IsUUFHakIsOEJBQTJCO0FBQ2xDLFNBQVNDLGFBQWEsUUFBUSxnQ0FBNkI7QUFDM0QsU0FBU0MsdUJBQXVCLFFBQVEsd0JBQXFCO0FBRTdELFNBQVNDLGNBQWMsUUFBUSxrQkFBZTtBQUU5QyxTQUFTQyxNQUFNLFFBQVEsY0FBVztBQTZDbEMsT0FBTyxNQUFNQyxpQkFVUCxFQUFFLENBQUM7QUFjVCxNQUFNQyxrQkFBa0I7SUFDdEJDLEtBQUtDLE9BQU87SUFDWkMsUUFBUUQsT0FBTztBQUNqQjtBQUVBLFNBQVNFLHFCQUFxQkMsTUFBdUIsRUFBRUMsV0FBbUIsRUFBRUMsYUFBcUI7SUFDL0YsTUFBTUMsU0FBU0gsTUFBTSxDQUFDQyxZQUFtQztJQUN6RCxJQUFJRSxRQUFRQyxtQkFBbUJELFFBQVFDLG9CQUFvQkYsZUFBZTtRQUN4RSxNQUFNLElBQUlHLE1BQ1IsQ0FBQyxDQUFDLEVBQUVDLE9BQU9KLGVBQWUsb0NBQW9DLEVBQUVGLE9BQU8sV0FBVyxDQUFDTyxJQUFJLENBQUMsQ0FBQyxFQUFFTixZQUFZLHVFQUF1RSxDQUFDO0lBRW5MLE9BQU87UUFDTEUsT0FBT0MsZUFBZSxHQUFHRjtJQUMzQjtBQUNGO0FBRUEsT0FBTyxTQUFTTSxJQUFJQyxVQUErQixDQUFDLENBQUM7SUFDbkRBLFVBQVU7UUFDUkMsWUFBWTtRQUNaQyxhQUFhO1FBQ2JDLFNBQVM7WUFBQztTQUFRO1FBQ2xCLEdBQUdILE9BQU87SUFDWjtJQUVBLE9BQU8sQ0FBQ1QsUUFB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
@@ -67,6 +67,11 @@ declare class SonamuClass {
67
67
  private setupViteDevServer;
68
68
  private setupStaticWebServer;
69
69
  createApiHandler(api: ExtendedApi, config: SonamuFastifyConfig): (request: FastifyRequest, reply: FastifyReply) => Promise<unknown>;
70
+ /**
71
+ * API 응답에 적용할 Cache-Control 설정을 결정합니다.
72
+ * 우선순위: 개별 지정 > cacheControlHandler
73
+ */
74
+ private getApiCacheControl;
70
75
  /**
71
76
  * SSR용 API 호출 (HTTP 오버헤드 없이 직접 호출)
72
77
  * createApiHandler의 로직을 재사용하되, request 파싱 대신 params 직접 사용
@@ -1 +1 @@
1
- {"version":3,"file":"sonamu.d.ts","sourceRoot":"","sources":["../../src/api/sonamu.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sonamu.d.ts","sourceRoot":"","sources":["../../src/api/sonamu.ts"],"names":[],"mappings":"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"}