unleash-server 5.1.8 → 5.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (485) hide show
  1. package/dist/lib/create-config.js +5 -2
  2. package/dist/lib/create-config.js.map +1 -1
  3. package/dist/lib/db/access-store.d.ts +2 -1
  4. package/dist/lib/db/access-store.js +17 -3
  5. package/dist/lib/db/access-store.js.map +1 -1
  6. package/dist/lib/db/client-metrics-store-v2.js +19 -30
  7. package/dist/lib/db/client-metrics-store-v2.js.map +1 -1
  8. package/dist/lib/db/context-field-store.d.ts +4 -1
  9. package/dist/lib/db/context-field-store.js +44 -14
  10. package/dist/lib/db/context-field-store.js.map +1 -1
  11. package/dist/lib/db/environment-store.d.ts +1 -0
  12. package/dist/lib/db/environment-store.js +6 -0
  13. package/dist/lib/db/environment-store.js.map +1 -1
  14. package/dist/lib/db/event-store.js +2 -1
  15. package/dist/lib/db/event-store.js.map +1 -1
  16. package/dist/lib/db/feature-strategy-store.d.ts +2 -0
  17. package/dist/lib/db/feature-strategy-store.js +25 -0
  18. package/dist/lib/db/feature-strategy-store.js.map +1 -1
  19. package/dist/lib/db/feature-strategy-store.test.js +75 -0
  20. package/dist/lib/db/feature-strategy-store.test.js.map +1 -0
  21. package/dist/lib/db/group-store.d.ts +1 -1
  22. package/dist/lib/db/group-store.js +2 -2
  23. package/dist/lib/db/group-store.js.map +1 -1
  24. package/dist/lib/db/index.js +2 -2
  25. package/dist/lib/db/index.js.map +1 -1
  26. package/dist/lib/db/project-store.js +2 -1
  27. package/dist/lib/db/project-store.js.map +1 -1
  28. package/dist/lib/db/role-store.js +2 -2
  29. package/dist/lib/db/role-store.js.map +1 -1
  30. package/dist/lib/db/segment-store.d.ts +6 -2
  31. package/dist/lib/db/segment-store.js +27 -6
  32. package/dist/lib/db/segment-store.js.map +1 -1
  33. package/dist/lib/error/no-access-error.d.ts +3 -2
  34. package/dist/lib/error/no-access-error.js +10 -4
  35. package/dist/lib/error/no-access-error.js.map +1 -1
  36. package/dist/lib/error/unleash-error.test.js +8 -2
  37. package/dist/lib/error/unleash-error.test.js.map +1 -1
  38. package/dist/lib/features/access/createAccessService.js +5 -5
  39. package/dist/lib/features/access/createAccessService.js.map +1 -1
  40. package/dist/lib/features/export-import-toggles/createExportImportService.js +4 -2
  41. package/dist/lib/features/export-import-toggles/createExportImportService.js.map +1 -1
  42. package/dist/lib/features/export-import-toggles/export-import-api-usage.test.d.ts +1 -0
  43. package/dist/lib/features/export-import-toggles/export-import-api-usage.test.js +69 -0
  44. package/dist/lib/features/export-import-toggles/export-import-api-usage.test.js.map +1 -0
  45. package/dist/lib/features/export-import-toggles/export-import-controller.js +5 -1
  46. package/dist/lib/features/export-import-toggles/export-import-controller.js.map +1 -1
  47. package/dist/lib/features/export-import-toggles/export-import-service.js +7 -2
  48. package/dist/lib/features/export-import-toggles/export-import-service.js.map +1 -1
  49. package/dist/lib/features/feature-toggle/createFeatureToggleService.js +4 -4
  50. package/dist/lib/features/feature-toggle/createFeatureToggleService.js.map +1 -1
  51. package/dist/lib/features/playground/advanced-playground.test.d.ts +1 -0
  52. package/dist/lib/features/playground/advanced-playground.test.js +238 -0
  53. package/dist/lib/features/playground/advanced-playground.test.js.map +1 -0
  54. package/dist/lib/{util → features/playground}/feature-evaluator/client.d.ts +3 -2
  55. package/dist/lib/{util → features/playground}/feature-evaluator/client.js +1 -1
  56. package/dist/lib/features/playground/feature-evaluator/client.js.map +1 -0
  57. package/dist/lib/features/playground/feature-evaluator/constraint.js.map +1 -0
  58. package/dist/lib/features/playground/feature-evaluator/context.js.map +1 -0
  59. package/dist/lib/features/playground/feature-evaluator/feature-evaluator.js.map +1 -0
  60. package/dist/lib/features/playground/feature-evaluator/feature.js.map +1 -0
  61. package/dist/lib/{util → features/playground}/feature-evaluator/helpers.d.ts +1 -1
  62. package/dist/lib/features/playground/feature-evaluator/helpers.js.map +1 -0
  63. package/dist/lib/{util → features/playground}/feature-evaluator/index.d.ts +1 -1
  64. package/dist/lib/{util → features/playground}/feature-evaluator/index.js +2 -2
  65. package/dist/lib/features/playground/feature-evaluator/index.js.map +1 -0
  66. package/dist/lib/features/playground/feature-evaluator/repository/bootstrap-provider.js.map +1 -0
  67. package/dist/lib/features/playground/feature-evaluator/repository/index.js.map +1 -0
  68. package/dist/lib/features/playground/feature-evaluator/repository/storage-provider-in-mem.js.map +1 -0
  69. package/dist/lib/features/playground/feature-evaluator/repository/storage-provider.js.map +1 -0
  70. package/dist/lib/features/playground/feature-evaluator/strategy/application-hostname-strategy.js.map +1 -0
  71. package/dist/lib/features/playground/feature-evaluator/strategy/default-strategy.js.map +1 -0
  72. package/dist/lib/features/playground/feature-evaluator/strategy/flexible-rollout-strategy.js.map +1 -0
  73. package/dist/lib/features/playground/feature-evaluator/strategy/gradual-rollout-random.js.map +1 -0
  74. package/dist/lib/features/playground/feature-evaluator/strategy/gradual-rollout-session-id.js.map +1 -0
  75. package/dist/lib/features/playground/feature-evaluator/strategy/gradual-rollout-user-id.js.map +1 -0
  76. package/dist/lib/features/playground/feature-evaluator/strategy/index.js.map +1 -0
  77. package/dist/lib/features/playground/feature-evaluator/strategy/remote-address-strategy.js.map +1 -0
  78. package/dist/lib/features/playground/feature-evaluator/strategy/strategy.js.map +1 -0
  79. package/dist/lib/{util → features/playground}/feature-evaluator/strategy/unknown-strategy.js +1 -1
  80. package/dist/lib/features/playground/feature-evaluator/strategy/unknown-strategy.js.map +1 -0
  81. package/dist/lib/features/playground/feature-evaluator/strategy/user-with-id-strategy.js.map +1 -0
  82. package/dist/lib/features/playground/feature-evaluator/strategy/util.js.map +1 -0
  83. package/dist/lib/features/playground/feature-evaluator/variant.js.map +1 -0
  84. package/dist/lib/features/playground/generateObjectCombinations.d.ts +7 -0
  85. package/dist/lib/features/playground/generateObjectCombinations.js +16 -0
  86. package/dist/lib/features/playground/generateObjectCombinations.js.map +1 -0
  87. package/dist/lib/features/playground/generateObjectCombinations.test.d.ts +1 -0
  88. package/dist/lib/features/playground/generateObjectCombinations.test.js +33 -0
  89. package/dist/lib/features/playground/generateObjectCombinations.test.js.map +1 -0
  90. package/dist/lib/{util → features/playground}/offline-unleash-client.js +2 -2
  91. package/dist/lib/features/playground/offline-unleash-client.js.map +1 -0
  92. package/dist/lib/{util → features/playground}/offline-unleash-client.test.js +1 -1
  93. package/dist/lib/features/playground/offline-unleash-client.test.js.map +1 -0
  94. package/dist/lib/features/playground/playground-service.d.ts +34 -0
  95. package/dist/lib/features/playground/playground-service.js +114 -0
  96. package/dist/lib/features/playground/playground-service.js.map +1 -0
  97. package/dist/lib/features/playground/playground-view-model.d.ts +4 -0
  98. package/dist/lib/features/playground/playground-view-model.js +49 -0
  99. package/dist/lib/features/playground/playground-view-model.js.map +1 -0
  100. package/dist/lib/features/playground/playground-view-model.test.d.ts +1 -0
  101. package/dist/lib/features/playground/playground-view-model.test.js +122 -0
  102. package/dist/lib/features/playground/playground-view-model.test.js.map +1 -0
  103. package/dist/lib/features/playground/playground.d.ts +16 -0
  104. package/dist/lib/features/playground/playground.js +78 -0
  105. package/dist/lib/features/playground/playground.js.map +1 -0
  106. package/dist/lib/features/playground/playground.test.d.ts +1 -0
  107. package/dist/lib/{routes/admin-api → features/playground}/playground.test.js +3 -2
  108. package/dist/lib/features/playground/playground.test.js.map +1 -0
  109. package/dist/lib/features/playground/validateQueryComplexity.d.ts +1 -0
  110. package/dist/lib/features/playground/validateQueryComplexity.js +15 -0
  111. package/dist/lib/features/playground/validateQueryComplexity.js.map +1 -0
  112. package/dist/lib/features/playground/validateQueryComplexity.test.d.ts +1 -0
  113. package/dist/lib/features/playground/validateQueryComplexity.test.js +19 -0
  114. package/dist/lib/features/playground/validateQueryComplexity.test.js.map +1 -0
  115. package/dist/lib/middleware/rbac-middleware.d.ts +1 -1
  116. package/dist/lib/middleware/rbac-middleware.js +7 -4
  117. package/dist/lib/middleware/rbac-middleware.js.map +1 -1
  118. package/dist/lib/middleware/rbac-middleware.test.js +8 -8
  119. package/dist/lib/middleware/rbac-middleware.test.js.map +1 -1
  120. package/dist/lib/openapi/endpoint-descriptions.d.ts +4 -0
  121. package/dist/lib/openapi/endpoint-descriptions.js +4 -0
  122. package/dist/lib/openapi/endpoint-descriptions.js.map +1 -1
  123. package/dist/lib/openapi/index.js +7 -0
  124. package/dist/lib/openapi/index.js.map +1 -1
  125. package/dist/lib/openapi/meta-schema-rules.test.js +16 -25
  126. package/dist/lib/openapi/meta-schema-rules.test.js.map +1 -1
  127. package/dist/lib/openapi/spec/advanced-playground-environment-feature-schema.d.ts +652 -0
  128. package/dist/lib/openapi/spec/advanced-playground-environment-feature-schema.js +146 -0
  129. package/dist/lib/openapi/spec/advanced-playground-environment-feature-schema.js.map +1 -0
  130. package/dist/lib/openapi/spec/advanced-playground-feature-schema.d.ts +1217 -0
  131. package/dist/lib/openapi/spec/advanced-playground-feature-schema.js +51 -0
  132. package/dist/lib/openapi/spec/advanced-playground-feature-schema.js.map +1 -0
  133. package/dist/lib/openapi/spec/advanced-playground-request-schema.d.ts +95 -0
  134. package/dist/lib/openapi/spec/advanced-playground-request-schema.js +49 -0
  135. package/dist/lib/openapi/spec/advanced-playground-request-schema.js.map +1 -0
  136. package/dist/lib/openapi/spec/advanced-playground-response-schema.d.ts +2560 -0
  137. package/dist/lib/openapi/spec/advanced-playground-response-schema.js +50 -0
  138. package/dist/lib/openapi/spec/advanced-playground-response-schema.js.map +1 -0
  139. package/dist/lib/openapi/spec/client-application-schema.d.ts +17 -0
  140. package/dist/lib/openapi/spec/client-application-schema.js +17 -0
  141. package/dist/lib/openapi/spec/client-application-schema.js.map +1 -1
  142. package/dist/lib/openapi/spec/client-feature-schema.d.ts +44 -13
  143. package/dist/lib/openapi/spec/client-feature-schema.js +17 -12
  144. package/dist/lib/openapi/spec/client-feature-schema.js.map +1 -1
  145. package/dist/lib/openapi/spec/client-features-query-schema.d.ts +12 -0
  146. package/dist/lib/openapi/spec/client-features-query-schema.js +12 -0
  147. package/dist/lib/openapi/spec/client-features-query-schema.js.map +1 -1
  148. package/dist/lib/openapi/spec/client-features-schema.d.ts +90 -14
  149. package/dist/lib/openapi/spec/client-features-schema.js +7 -0
  150. package/dist/lib/openapi/spec/client-features-schema.js.map +1 -1
  151. package/dist/lib/openapi/spec/client-features-schema.test.js +5 -12
  152. package/dist/lib/openapi/spec/client-features-schema.test.js.map +1 -1
  153. package/dist/lib/openapi/spec/client-metrics-schema.d.ts +1 -1
  154. package/dist/lib/openapi/spec/client-metrics-schema.js +1 -1
  155. package/dist/lib/openapi/spec/client-metrics-schema.js.map +1 -1
  156. package/dist/lib/openapi/spec/context-field-schema.d.ts +13 -0
  157. package/dist/lib/openapi/spec/context-field-schema.js +13 -0
  158. package/dist/lib/openapi/spec/context-field-schema.js.map +1 -1
  159. package/dist/lib/openapi/spec/context-field-strategies-schema.d.ts +43 -0
  160. package/dist/lib/openapi/spec/context-field-strategies-schema.js +51 -0
  161. package/dist/lib/openapi/spec/context-field-strategies-schema.js.map +1 -0
  162. package/dist/lib/openapi/spec/context-fields-schema.d.ts +13 -0
  163. package/dist/lib/openapi/spec/create-application-schema.d.ts +0 -1
  164. package/dist/lib/openapi/spec/create-application-schema.js +0 -1
  165. package/dist/lib/openapi/spec/create-application-schema.js.map +1 -1
  166. package/dist/lib/openapi/spec/export-result-schema.d.ts +137 -4
  167. package/dist/lib/openapi/spec/feature-environment-schema.d.ts +22 -1
  168. package/dist/lib/openapi/spec/feature-schema.d.ts +49 -2
  169. package/dist/lib/openapi/spec/feature-schema.test.js +1 -1
  170. package/dist/lib/openapi/spec/feature-schema.test.js.map +1 -1
  171. package/dist/lib/openapi/spec/feature-strategy-schema.d.ts +1 -1
  172. package/dist/lib/openapi/spec/feature-strategy-schema.js +1 -1
  173. package/dist/lib/openapi/spec/feature-strategy-schema.js.map +1 -1
  174. package/dist/lib/openapi/spec/feature-variants-schema.d.ts +26 -0
  175. package/dist/lib/openapi/spec/features-schema.d.ts +98 -4
  176. package/dist/lib/openapi/spec/health-check-schema.d.ts +3 -0
  177. package/dist/lib/openapi/spec/health-check-schema.js +3 -0
  178. package/dist/lib/openapi/spec/health-check-schema.js.map +1 -1
  179. package/dist/lib/openapi/spec/health-overview-schema.d.ts +105 -4
  180. package/dist/lib/openapi/spec/health-overview-schema.js +7 -0
  181. package/dist/lib/openapi/spec/health-overview-schema.js.map +1 -1
  182. package/dist/lib/openapi/spec/health-report-schema.d.ts +105 -4
  183. package/dist/lib/openapi/spec/import-toggles-schema.d.ts +274 -8
  184. package/dist/lib/openapi/spec/index.d.ts +3 -0
  185. package/dist/lib/openapi/spec/index.js +3 -0
  186. package/dist/lib/openapi/spec/index.js.map +1 -1
  187. package/dist/lib/openapi/spec/instance-admin-stats-schema.d.ts +65 -2
  188. package/dist/lib/openapi/spec/instance-admin-stats-schema.js +65 -2
  189. package/dist/lib/openapi/spec/instance-admin-stats-schema.js.map +1 -1
  190. package/dist/lib/openapi/spec/override-schema.d.ts +5 -0
  191. package/dist/lib/openapi/spec/override-schema.js +5 -0
  192. package/dist/lib/openapi/spec/override-schema.js.map +1 -1
  193. package/dist/lib/openapi/spec/password-schema.d.ts +3 -0
  194. package/dist/lib/openapi/spec/password-schema.js +3 -0
  195. package/dist/lib/openapi/spec/password-schema.js.map +1 -1
  196. package/dist/lib/openapi/spec/playground-feature-schema.d.ts +41 -1
  197. package/dist/lib/openapi/spec/playground-feature-schema.js +6 -1
  198. package/dist/lib/openapi/spec/playground-feature-schema.js.map +1 -1
  199. package/dist/lib/openapi/spec/playground-feature-schema.test.js +3 -0
  200. package/dist/lib/openapi/spec/playground-feature-schema.test.js.map +1 -1
  201. package/dist/lib/openapi/spec/playground-request-schema.d.ts +7 -1
  202. package/dist/lib/openapi/spec/playground-request-schema.js +1 -1
  203. package/dist/lib/openapi/spec/playground-request-schema.js.map +1 -1
  204. package/dist/lib/openapi/spec/playground-response-schema.d.ts +93 -3
  205. package/dist/lib/openapi/spec/playground-strategy-schema.d.ts +13 -1
  206. package/dist/lib/openapi/spec/playground-strategy-schema.js +13 -0
  207. package/dist/lib/openapi/spec/playground-strategy-schema.js.map +1 -1
  208. package/dist/lib/openapi/spec/profile-schema.d.ts +49 -2
  209. package/dist/lib/openapi/spec/project-overview-schema.d.ts +104 -4
  210. package/dist/lib/openapi/spec/project-overview-schema.js +6 -0
  211. package/dist/lib/openapi/spec/project-overview-schema.js.map +1 -1
  212. package/dist/lib/openapi/spec/push-variants-schema.d.ts +26 -0
  213. package/dist/lib/openapi/spec/sdk-context-schema.d.ts +6 -0
  214. package/dist/lib/openapi/spec/sdk-context-schema.js +14 -2
  215. package/dist/lib/openapi/spec/sdk-context-schema.js.map +1 -1
  216. package/dist/lib/openapi/spec/state-schema.d.ts +72 -4
  217. package/dist/lib/openapi/spec/variant-schema.d.ts +21 -0
  218. package/dist/lib/openapi/spec/variant-schema.js +13 -0
  219. package/dist/lib/openapi/spec/variant-schema.js.map +1 -1
  220. package/dist/lib/openapi/spec/variants-schema.d.ts +26 -0
  221. package/dist/lib/openapi/util/create-response-schema.d.ts +1 -0
  222. package/dist/lib/openapi/util/create-response-schema.js +7 -1
  223. package/dist/lib/openapi/util/create-response-schema.js.map +1 -1
  224. package/dist/lib/proxy/proxy-repository.js +1 -1
  225. package/dist/lib/proxy/proxy-repository.js.map +1 -1
  226. package/dist/lib/routes/admin-api/api-token.d.ts +2 -0
  227. package/dist/lib/routes/admin-api/api-token.js +120 -11
  228. package/dist/lib/routes/admin-api/api-token.js.map +1 -1
  229. package/dist/lib/routes/admin-api/context.d.ts +3 -0
  230. package/dist/lib/routes/admin-api/context.js +21 -0
  231. package/dist/lib/routes/admin-api/context.js.map +1 -1
  232. package/dist/lib/routes/admin-api/index.js +1 -1
  233. package/dist/lib/routes/admin-api/index.js.map +1 -1
  234. package/dist/lib/routes/admin-api/instance-admin.d.ts +3 -1
  235. package/dist/lib/routes/admin-api/instance-admin.js +41 -0
  236. package/dist/lib/routes/admin-api/instance-admin.js.map +1 -1
  237. package/dist/lib/routes/admin-api/metrics.test.js +12 -0
  238. package/dist/lib/routes/admin-api/metrics.test.js.map +1 -1
  239. package/dist/lib/routes/admin-api/project/api-token.js +7 -0
  240. package/dist/lib/routes/admin-api/project/api-token.js.map +1 -1
  241. package/dist/lib/routes/admin-api/user/user.js +5 -4
  242. package/dist/lib/routes/admin-api/user/user.js.map +1 -1
  243. package/dist/lib/routes/admin-api/user/user.test.js +30 -5
  244. package/dist/lib/routes/admin-api/user/user.test.js.map +1 -1
  245. package/dist/lib/routes/admin-api/user-admin.js +0 -1
  246. package/dist/lib/routes/admin-api/user-admin.js.map +1 -1
  247. package/dist/lib/routes/client-api/feature.js +4 -0
  248. package/dist/lib/routes/client-api/feature.js.map +1 -1
  249. package/dist/lib/routes/client-api/metrics.js +2 -0
  250. package/dist/lib/routes/client-api/metrics.js.map +1 -1
  251. package/dist/lib/routes/client-api/register.js +2 -0
  252. package/dist/lib/routes/client-api/register.js.map +1 -1
  253. package/dist/lib/routes/controller.d.ts +8 -7
  254. package/dist/lib/routes/controller.js +11 -10
  255. package/dist/lib/routes/controller.js.map +1 -1
  256. package/dist/lib/routes/health-check.js +2 -0
  257. package/dist/lib/routes/health-check.js.map +1 -1
  258. package/dist/lib/server-impl.js +1 -1
  259. package/dist/lib/server-impl.js.map +1 -1
  260. package/dist/lib/services/access-service.d.ts +6 -4
  261. package/dist/lib/services/access-service.js +47 -11
  262. package/dist/lib/services/access-service.js.map +1 -1
  263. package/dist/lib/services/access-service.test.js +39 -22
  264. package/dist/lib/services/access-service.test.js.map +1 -1
  265. package/dist/lib/services/api-token-service.d.ts +1 -0
  266. package/dist/lib/services/api-token-service.js +3 -0
  267. package/dist/lib/services/api-token-service.js.map +1 -1
  268. package/dist/lib/services/context-service.d.ts +4 -1
  269. package/dist/lib/services/context-service.js +14 -1
  270. package/dist/lib/services/context-service.js.map +1 -1
  271. package/dist/lib/services/feature-toggle-service.d.ts +1 -1
  272. package/dist/lib/services/feature-toggle-service.js +6 -7
  273. package/dist/lib/services/feature-toggle-service.js.map +1 -1
  274. package/dist/lib/services/group-service.js +1 -3
  275. package/dist/lib/services/group-service.js.map +1 -1
  276. package/dist/lib/services/index.d.ts +1 -1
  277. package/dist/lib/services/index.js +1 -1
  278. package/dist/lib/services/index.js.map +1 -1
  279. package/dist/lib/services/instance-stats-service.d.ts +2 -3
  280. package/dist/lib/services/project-service.js +1 -0
  281. package/dist/lib/services/project-service.js.map +1 -1
  282. package/dist/lib/services/user-service.d.ts +1 -0
  283. package/dist/lib/services/user-service.js +8 -0
  284. package/dist/lib/services/user-service.js.map +1 -1
  285. package/dist/lib/services/version-service.d.ts +37 -1
  286. package/dist/lib/services/version-service.js +76 -5
  287. package/dist/lib/services/version-service.js.map +1 -1
  288. package/dist/lib/services/version-service.test.js +196 -9
  289. package/dist/lib/services/version-service.test.js.map +1 -1
  290. package/dist/lib/types/experimental.d.ts +1 -1
  291. package/dist/lib/types/experimental.js +6 -2
  292. package/dist/lib/types/experimental.js.map +1 -1
  293. package/dist/lib/types/model.d.ts +9 -4
  294. package/dist/lib/types/model.js +1 -0
  295. package/dist/lib/types/model.js.map +1 -1
  296. package/dist/lib/types/option.d.ts +2 -0
  297. package/dist/lib/types/permissions.d.ts +34 -27
  298. package/dist/lib/types/permissions.js +85 -29
  299. package/dist/lib/types/permissions.js.map +1 -1
  300. package/dist/lib/types/services.d.ts +1 -1
  301. package/dist/lib/types/stores/access-store.d.ts +1 -1
  302. package/dist/lib/types/stores/context-field-store.d.ts +2 -0
  303. package/dist/lib/types/stores/environment-store.d.ts +1 -0
  304. package/dist/lib/types/stores/feature-strategies-store.d.ts +2 -0
  305. package/dist/lib/types/stores/feature-toggle-store.d.ts +1 -1
  306. package/dist/lib/types/stores/group-store.d.ts +1 -1
  307. package/dist/lib/util/constants.d.ts +7 -1
  308. package/dist/lib/util/constants.js +8 -2
  309. package/dist/lib/util/constants.js.map +1 -1
  310. package/dist/lib/util/ensureArray.d.ts +1 -0
  311. package/dist/lib/util/ensureArray.js +8 -0
  312. package/dist/lib/util/ensureArray.js.map +1 -0
  313. package/dist/lib/util/index.d.ts +1 -1
  314. package/dist/lib/util/index.js +1 -1
  315. package/dist/lib/util/index.js.map +1 -1
  316. package/dist/migrations/20230615122909-fix-env-sort-order.d.ts +2 -0
  317. package/dist/migrations/20230615122909-fix-env-sort-order.js +28 -0
  318. package/dist/migrations/20230615122909-fix-env-sort-order.js.map +1 -0
  319. package/dist/migrations/20230619105029-new-fine-grained-api-token-permissions.d.ts +2 -0
  320. package/dist/migrations/20230619105029-new-fine-grained-api-token-permissions.js +26 -0
  321. package/dist/migrations/20230619105029-new-fine-grained-api-token-permissions.js.map +1 -0
  322. package/dist/migrations/20230619110243-assign-apitoken-permissions-to-rootroles.d.ts +2 -0
  323. package/dist/migrations/20230619110243-assign-apitoken-permissions-to-rootroles.js +23 -0
  324. package/dist/migrations/20230619110243-assign-apitoken-permissions-to-rootroles.js.map +1 -0
  325. package/dist/migrations/20230621141239-refactor-api-token-permissions.d.ts +2 -0
  326. package/dist/migrations/20230621141239-refactor-api-token-permissions.js +19 -0
  327. package/dist/migrations/20230621141239-refactor-api-token-permissions.js.map +1 -0
  328. package/dist/server-dev.js +3 -3
  329. package/dist/server-dev.js.map +1 -1
  330. package/dist/test/arbitraries.test.js +3 -1
  331. package/dist/test/arbitraries.test.js.map +1 -1
  332. package/dist/test/config/test-config.js +0 -1
  333. package/dist/test/config/test-config.js.map +1 -1
  334. package/dist/test/e2e/api/admin/api-token.auth.e2e.test.js +542 -3
  335. package/dist/test/e2e/api/admin/api-token.auth.e2e.test.js.map +1 -1
  336. package/dist/test/e2e/api/admin/api-token.e2e.test.js +14 -1
  337. package/dist/test/e2e/api/admin/api-token.e2e.test.js.map +1 -1
  338. package/dist/test/e2e/api/admin/client-metrics.e2e.test.js +1 -8
  339. package/dist/test/e2e/api/admin/client-metrics.e2e.test.js.map +1 -1
  340. package/dist/test/e2e/api/admin/context.e2e.test.js +47 -1
  341. package/dist/test/e2e/api/admin/context.e2e.test.js.map +1 -1
  342. package/dist/test/e2e/api/admin/project/features.e2e.test.js +14 -14
  343. package/dist/test/e2e/api/admin/project/features.e2e.test.js.map +1 -1
  344. package/dist/test/e2e/api/admin/project/projects.e2e.test.js +14 -0
  345. package/dist/test/e2e/api/admin/project/projects.e2e.test.js.map +1 -1
  346. package/dist/test/e2e/helpers/test-helper.d.ts +1 -1
  347. package/dist/test/e2e/helpers/test-helper.js +4 -2
  348. package/dist/test/e2e/helpers/test-helper.js.map +1 -1
  349. package/dist/test/e2e/services/access-service.e2e.test.js +1 -1
  350. package/dist/test/e2e/services/access-service.e2e.test.js.map +1 -1
  351. package/dist/test/e2e/services/playground-service.test.js +2 -2
  352. package/dist/test/e2e/services/playground-service.test.js.map +1 -1
  353. package/dist/test/fixtures/access-service-mock.js +1 -1
  354. package/dist/test/fixtures/access-service-mock.js.map +1 -1
  355. package/dist/test/fixtures/fake-access-store.d.ts +5 -3
  356. package/dist/test/fixtures/fake-access-store.js +24 -9
  357. package/dist/test/fixtures/fake-access-store.js.map +1 -1
  358. package/dist/test/fixtures/fake-environment-store.d.ts +1 -0
  359. package/dist/test/fixtures/fake-environment-store.js +3 -0
  360. package/dist/test/fixtures/fake-environment-store.js.map +1 -1
  361. package/dist/test/fixtures/fake-feature-strategies-store.d.ts +2 -0
  362. package/dist/test/fixtures/fake-feature-strategies-store.js +7 -0
  363. package/dist/test/fixtures/fake-feature-strategies-store.js.map +1 -1
  364. package/dist/test/fixtures/fake-group-store.d.ts +1 -1
  365. package/dist/test/fixtures/fake-group-store.js +1 -1
  366. package/dist/test/fixtures/fake-group-store.js.map +1 -1
  367. package/dist/test/fixtures/fake-role-store.d.ts +1 -1
  368. package/dist/test/fixtures/fake-role-store.js +9 -4
  369. package/dist/test/fixtures/fake-role-store.js.map +1 -1
  370. package/frontend/build/index.html +1 -1
  371. package/frontend/build/static/AdvancedPlayground-520a25e1.js +1 -0
  372. package/frontend/build/static/CreateProject-c430691b.js +4 -0
  373. package/frontend/build/static/{Error-5606eccd.js → Error-492e8b38.js} +1 -1
  374. package/frontend/build/static/FeatureArchiveDialog-70daa567.js +10 -0
  375. package/frontend/build/static/{FeatureMetricsChart-1c6bb078.js → FeatureMetricsChart-bc99b364.js} +2 -2
  376. package/frontend/build/static/FeatureViewLazyExport-01d70575.js +7 -0
  377. package/frontend/build/static/LazyAdminExport-e2c90193.js +37 -0
  378. package/frontend/build/static/LazyProjectExport-fa62d2fe.js +13 -0
  379. package/frontend/build/static/NetworkOverview-3b72e4ea.js +1298 -0
  380. package/frontend/build/static/NetworkTraffic-365db744.js +1 -0
  381. package/frontend/build/static/Playground-b473b399.js +1 -0
  382. package/frontend/build/static/{Playground-6602cb1a.js → PlaygroundGuidancePopper-8e3e97db.js} +12 -12
  383. package/frontend/build/static/RoleCell-9bb513a8.js +1 -0
  384. package/frontend/build/static/StrategyItemContainer-1f7503c7.js +1 -0
  385. package/frontend/build/static/{chartjs-adapter-date-fns.esm-c75aa905.js → chartjs-adapter-date-fns.esm-db338d44.js} +1 -1
  386. package/frontend/build/static/flowchart-elk-definition-170a3958-a428dd25.js +134 -0
  387. package/frontend/build/static/index-0a56292a.js +450 -0
  388. package/frontend/build/static/{index-b3def5eb.js → index-d362ae7a.js} +1 -1
  389. package/frontend/build/static/{index-f8439975.js → index-dc5debe9.js} +1 -1
  390. package/frontend/build/static/is_dark-884249e0.js +1 -0
  391. package/frontend/build/static/mindmap-definition-44684416-3c9425ff.js +101 -0
  392. package/frontend/build/static/stringify-ec884b6d.js +1 -0
  393. package/frontend/build/static/timeline-definition-8e5a9bc6-d289cd6d.js +62 -0
  394. package/frontend/build/static/{unknownify-6683037a.js → unknownify-5b23bf29.js} +1 -1
  395. package/frontend/package.json +18 -17
  396. package/package.json +16 -13
  397. package/dist/lib/routes/admin-api/playground.d.ts +0 -12
  398. package/dist/lib/routes/admin-api/playground.js +0 -46
  399. package/dist/lib/routes/admin-api/playground.js.map +0 -1
  400. package/dist/lib/routes/admin-api/playground.test.js.map +0 -1
  401. package/dist/lib/services/playground-service.d.ts +0 -12
  402. package/dist/lib/services/playground-service.js +0 -65
  403. package/dist/lib/services/playground-service.js.map +0 -1
  404. package/dist/lib/util/feature-evaluator/client.js.map +0 -1
  405. package/dist/lib/util/feature-evaluator/constraint.js.map +0 -1
  406. package/dist/lib/util/feature-evaluator/context.js.map +0 -1
  407. package/dist/lib/util/feature-evaluator/feature-evaluator.js.map +0 -1
  408. package/dist/lib/util/feature-evaluator/feature.js.map +0 -1
  409. package/dist/lib/util/feature-evaluator/helpers.js.map +0 -1
  410. package/dist/lib/util/feature-evaluator/index.js.map +0 -1
  411. package/dist/lib/util/feature-evaluator/repository/bootstrap-provider.js.map +0 -1
  412. package/dist/lib/util/feature-evaluator/repository/index.js.map +0 -1
  413. package/dist/lib/util/feature-evaluator/repository/storage-provider-in-mem.js.map +0 -1
  414. package/dist/lib/util/feature-evaluator/repository/storage-provider.js.map +0 -1
  415. package/dist/lib/util/feature-evaluator/strategy/application-hostname-strategy.js.map +0 -1
  416. package/dist/lib/util/feature-evaluator/strategy/default-strategy.js.map +0 -1
  417. package/dist/lib/util/feature-evaluator/strategy/flexible-rollout-strategy.js.map +0 -1
  418. package/dist/lib/util/feature-evaluator/strategy/gradual-rollout-random.js.map +0 -1
  419. package/dist/lib/util/feature-evaluator/strategy/gradual-rollout-session-id.js.map +0 -1
  420. package/dist/lib/util/feature-evaluator/strategy/gradual-rollout-user-id.js.map +0 -1
  421. package/dist/lib/util/feature-evaluator/strategy/index.js.map +0 -1
  422. package/dist/lib/util/feature-evaluator/strategy/remote-address-strategy.js.map +0 -1
  423. package/dist/lib/util/feature-evaluator/strategy/strategy.js.map +0 -1
  424. package/dist/lib/util/feature-evaluator/strategy/unknown-strategy.js.map +0 -1
  425. package/dist/lib/util/feature-evaluator/strategy/user-with-id-strategy.js.map +0 -1
  426. package/dist/lib/util/feature-evaluator/strategy/util.js.map +0 -1
  427. package/dist/lib/util/feature-evaluator/variant.js.map +0 -1
  428. package/dist/lib/util/offline-unleash-client.js.map +0 -1
  429. package/dist/lib/util/offline-unleash-client.test.js.map +0 -1
  430. package/frontend/build/static/CreateProject-217f67b6.js +0 -4
  431. package/frontend/build/static/FeatureArchiveDialog-c311c641.js +0 -4
  432. package/frontend/build/static/FeatureViewLazyExport-06cf4baa.js +0 -7
  433. package/frontend/build/static/LazyAdminExport-04c8032d.js +0 -43
  434. package/frontend/build/static/LazyProjectExport-d9663a8c.js +0 -19
  435. package/frontend/build/static/NetworkOverview-2bce4916.js +0 -1296
  436. package/frontend/build/static/NetworkTraffic-7db94d86.js +0 -1
  437. package/frontend/build/static/StrategyItemContainer-0140b94f.js +0 -1
  438. package/frontend/build/static/index-1f392976.js +0 -450
  439. package/frontend/build/static/useProjectRole-122ac4bb.js +0 -1
  440. package/frontend/build/static/v4-a960c1f4.js +0 -1
  441. /package/dist/lib/{routes/admin-api/playground.test.d.ts → db/feature-strategy-store.test.d.ts} +0 -0
  442. /package/dist/lib/{util → features/playground}/feature-evaluator/constraint.d.ts +0 -0
  443. /package/dist/lib/{util → features/playground}/feature-evaluator/constraint.js +0 -0
  444. /package/dist/lib/{util → features/playground}/feature-evaluator/context.d.ts +0 -0
  445. /package/dist/lib/{util → features/playground}/feature-evaluator/context.js +0 -0
  446. /package/dist/lib/{util → features/playground}/feature-evaluator/feature-evaluator.d.ts +0 -0
  447. /package/dist/lib/{util → features/playground}/feature-evaluator/feature-evaluator.js +0 -0
  448. /package/dist/lib/{util → features/playground}/feature-evaluator/feature.d.ts +0 -0
  449. /package/dist/lib/{util → features/playground}/feature-evaluator/feature.js +0 -0
  450. /package/dist/lib/{util → features/playground}/feature-evaluator/helpers.js +0 -0
  451. /package/dist/lib/{util → features/playground}/feature-evaluator/repository/bootstrap-provider.d.ts +0 -0
  452. /package/dist/lib/{util → features/playground}/feature-evaluator/repository/bootstrap-provider.js +0 -0
  453. /package/dist/lib/{util → features/playground}/feature-evaluator/repository/index.d.ts +0 -0
  454. /package/dist/lib/{util → features/playground}/feature-evaluator/repository/index.js +0 -0
  455. /package/dist/lib/{util → features/playground}/feature-evaluator/repository/storage-provider-in-mem.d.ts +0 -0
  456. /package/dist/lib/{util → features/playground}/feature-evaluator/repository/storage-provider-in-mem.js +0 -0
  457. /package/dist/lib/{util → features/playground}/feature-evaluator/repository/storage-provider.d.ts +0 -0
  458. /package/dist/lib/{util → features/playground}/feature-evaluator/repository/storage-provider.js +0 -0
  459. /package/dist/lib/{util → features/playground}/feature-evaluator/strategy/application-hostname-strategy.d.ts +0 -0
  460. /package/dist/lib/{util → features/playground}/feature-evaluator/strategy/application-hostname-strategy.js +0 -0
  461. /package/dist/lib/{util → features/playground}/feature-evaluator/strategy/default-strategy.d.ts +0 -0
  462. /package/dist/lib/{util → features/playground}/feature-evaluator/strategy/default-strategy.js +0 -0
  463. /package/dist/lib/{util → features/playground}/feature-evaluator/strategy/flexible-rollout-strategy.d.ts +0 -0
  464. /package/dist/lib/{util → features/playground}/feature-evaluator/strategy/flexible-rollout-strategy.js +0 -0
  465. /package/dist/lib/{util → features/playground}/feature-evaluator/strategy/gradual-rollout-random.d.ts +0 -0
  466. /package/dist/lib/{util → features/playground}/feature-evaluator/strategy/gradual-rollout-random.js +0 -0
  467. /package/dist/lib/{util → features/playground}/feature-evaluator/strategy/gradual-rollout-session-id.d.ts +0 -0
  468. /package/dist/lib/{util → features/playground}/feature-evaluator/strategy/gradual-rollout-session-id.js +0 -0
  469. /package/dist/lib/{util → features/playground}/feature-evaluator/strategy/gradual-rollout-user-id.d.ts +0 -0
  470. /package/dist/lib/{util → features/playground}/feature-evaluator/strategy/gradual-rollout-user-id.js +0 -0
  471. /package/dist/lib/{util → features/playground}/feature-evaluator/strategy/index.d.ts +0 -0
  472. /package/dist/lib/{util → features/playground}/feature-evaluator/strategy/index.js +0 -0
  473. /package/dist/lib/{util → features/playground}/feature-evaluator/strategy/remote-address-strategy.d.ts +0 -0
  474. /package/dist/lib/{util → features/playground}/feature-evaluator/strategy/remote-address-strategy.js +0 -0
  475. /package/dist/lib/{util → features/playground}/feature-evaluator/strategy/strategy.d.ts +0 -0
  476. /package/dist/lib/{util → features/playground}/feature-evaluator/strategy/strategy.js +0 -0
  477. /package/dist/lib/{util → features/playground}/feature-evaluator/strategy/unknown-strategy.d.ts +0 -0
  478. /package/dist/lib/{util → features/playground}/feature-evaluator/strategy/user-with-id-strategy.d.ts +0 -0
  479. /package/dist/lib/{util → features/playground}/feature-evaluator/strategy/user-with-id-strategy.js +0 -0
  480. /package/dist/lib/{util → features/playground}/feature-evaluator/strategy/util.d.ts +0 -0
  481. /package/dist/lib/{util → features/playground}/feature-evaluator/strategy/util.js +0 -0
  482. /package/dist/lib/{util → features/playground}/feature-evaluator/variant.d.ts +0 -0
  483. /package/dist/lib/{util → features/playground}/feature-evaluator/variant.js +0 -0
  484. /package/dist/lib/{util → features/playground}/offline-unleash-client.d.ts +0 -0
  485. /package/dist/lib/{util → features/playground}/offline-unleash-client.test.d.ts +0 -0
@@ -8,6 +8,8 @@ const database_init_1 = __importDefault(require("../../helpers/database-init"));
8
8
  const no_logger_1 = __importDefault(require("../../../fixtures/no-logger"));
9
9
  const api_token_1 = require("../../../../lib/types/models/api-token");
10
10
  const model_1 = require("../../../../lib/types/model");
11
+ const types_1 = require("../../../../lib/types");
12
+ const date_fns_1 = require("date-fns");
11
13
  let stores;
12
14
  let db;
13
15
  beforeAll(async () => {
@@ -22,8 +24,8 @@ afterAll(async () => {
22
24
  afterEach(async () => {
23
25
  await stores.apiTokenStore.deleteAll();
24
26
  });
25
- test('editor users should only get client tokens', async () => {
26
- expect.assertions(2);
27
+ test('editor users should only get client or frontend tokens', async () => {
28
+ expect.assertions(3);
27
29
  const preHook = (app, config, { userService, accessService }) => {
28
30
  app.use('/api/admin/', async (req, res, next) => {
29
31
  const role = await accessService.getRootRole(model_1.RoleName.EDITOR);
@@ -41,6 +43,11 @@ test('editor users should only get client tokens', async () => {
41
43
  secret: '1234',
42
44
  type: api_token_1.ApiTokenType.CLIENT,
43
45
  });
46
+ await stores.apiTokenStore.insert({
47
+ username: 'frontend',
48
+ secret: '12345',
49
+ type: api_token_1.ApiTokenType.FRONTEND,
50
+ });
44
51
  await stores.apiTokenStore.insert({
45
52
  username: 'test',
46
53
  secret: 'sdfsdf2d',
@@ -51,8 +58,9 @@ test('editor users should only get client tokens', async () => {
51
58
  .expect('Content-Type', /json/)
52
59
  .expect(200)
53
60
  .expect((res) => {
54
- expect(res.body.tokens.length).toBe(1);
61
+ expect(res.body.tokens.length).toBe(2);
55
62
  expect(res.body.tokens[0].type).toBe(api_token_1.ApiTokenType.CLIENT);
63
+ expect(res.body.tokens[1].type).toBe(api_token_1.ApiTokenType.FRONTEND);
56
64
  });
57
65
  await destroy();
58
66
  });
@@ -132,4 +140,535 @@ test('Token-admin should be allowed to create token', async () => {
132
140
  .expect(201);
133
141
  await destroy();
134
142
  });
143
+ describe('Fine grained API token permissions', () => {
144
+ describe('A role with access to CREATE_CLIENT_API_TOKEN', () => {
145
+ test('should be allowed to create client tokens', async () => {
146
+ const preHook = (app, config, { userService, accessService }) => {
147
+ app.use('/api/admin/', async (req, res, next) => {
148
+ const role = await accessService.getRootRole(model_1.RoleName.VIEWER);
149
+ const user = await userService.createUser({
150
+ email: 'mylittlepony_viewer@example.com',
151
+ rootRole: role.id,
152
+ });
153
+ req.user = user;
154
+ const createClientApiTokenRole = await accessService.createRole({
155
+ name: 'client_token_creator',
156
+ description: 'Can create client tokens',
157
+ permissions: [],
158
+ type: 'root-custom',
159
+ });
160
+ await accessService.addPermissionToRole(role.id, types_1.CREATE_CLIENT_API_TOKEN);
161
+ await accessService.addUserToRole(user.id, createClientApiTokenRole.id, 'default');
162
+ next();
163
+ });
164
+ };
165
+ const { request, destroy } = await (0, test_helper_1.setupAppWithCustomAuth)(stores, preHook, {
166
+ experimental: {
167
+ flags: {
168
+ customRootRoles: true,
169
+ },
170
+ },
171
+ });
172
+ await request
173
+ .post('/api/admin/api-tokens')
174
+ .send({
175
+ username: 'default-client',
176
+ type: 'client',
177
+ })
178
+ .set('Content-Type', 'application/json')
179
+ .expect(201);
180
+ await destroy();
181
+ });
182
+ test('should NOT be allowed to create frontend tokens', async () => {
183
+ const preHook = (app, config, { userService, accessService }) => {
184
+ app.use('/api/admin/', async (req, res, next) => {
185
+ const role = await accessService.getRootRole(model_1.RoleName.VIEWER);
186
+ const user = await userService.createUser({
187
+ email: 'mylittlepony_viewer_frontend@example.com',
188
+ rootRole: role.id,
189
+ });
190
+ req.user = user;
191
+ const createClientApiTokenRole = await accessService.createRole({
192
+ name: 'client_token_creator_cannot_create_frontend',
193
+ description: 'Can create client tokens',
194
+ permissions: [],
195
+ type: 'root-custom',
196
+ });
197
+ await accessService.addPermissionToRole(role.id, types_1.CREATE_CLIENT_API_TOKEN);
198
+ await accessService.addUserToRole(user.id, createClientApiTokenRole.id, 'default');
199
+ next();
200
+ });
201
+ };
202
+ const { request, destroy } = await (0, test_helper_1.setupAppWithCustomAuth)(stores, preHook, {
203
+ experimental: {
204
+ flags: {
205
+ customRootRoles: true,
206
+ },
207
+ },
208
+ });
209
+ await request
210
+ .post('/api/admin/api-tokens')
211
+ .send({
212
+ username: 'default-frontend',
213
+ type: 'frontend',
214
+ })
215
+ .set('Content-Type', 'application/json')
216
+ .expect(403);
217
+ await destroy();
218
+ });
219
+ test('should NOT be allowed to create ADMIN tokens', async () => {
220
+ const preHook = (app, config, { userService, accessService }) => {
221
+ app.use('/api/admin/', async (req, res, next) => {
222
+ const role = await accessService.getRootRole(model_1.RoleName.VIEWER);
223
+ const user = await userService.createUser({
224
+ email: 'mylittlepony_admin@example.com',
225
+ rootRole: role.id,
226
+ });
227
+ req.user = user;
228
+ const createClientApiTokenRole = await accessService.createRole({
229
+ name: 'client_token_creator_cannot_create_admin',
230
+ description: 'Can create client tokens',
231
+ permissions: [],
232
+ type: 'root-custom',
233
+ });
234
+ await accessService.addPermissionToRole(role.id, types_1.CREATE_CLIENT_API_TOKEN);
235
+ await accessService.addUserToRole(user.id, createClientApiTokenRole.id, 'default');
236
+ next();
237
+ });
238
+ };
239
+ const { request, destroy } = await (0, test_helper_1.setupAppWithCustomAuth)(stores, preHook, {
240
+ experimental: {
241
+ flags: {
242
+ customRootRoles: true,
243
+ },
244
+ },
245
+ });
246
+ await request
247
+ .post('/api/admin/api-tokens')
248
+ .send({
249
+ username: 'default-admin',
250
+ type: 'admin',
251
+ })
252
+ .set('Content-Type', 'application/json')
253
+ .expect(403);
254
+ await destroy();
255
+ });
256
+ });
257
+ describe('Read operations', () => {
258
+ test('READ_FRONTEND_API_TOKEN should be able to see FRONTEND tokens', async () => {
259
+ const preHook = (app, config, { userService, accessService }) => {
260
+ app.use('/api/admin/', async (req, res, next) => {
261
+ const role = await accessService.getRootRole(model_1.RoleName.VIEWER);
262
+ const user = await userService.createUser({
263
+ email: 'read_frontend_token@example.com',
264
+ rootRole: role.id,
265
+ });
266
+ req.user = user;
267
+ const readFrontendApiToken = await accessService.createRole({
268
+ name: 'frontend_token_reader',
269
+ description: 'Can read frontend tokens',
270
+ permissions: [],
271
+ type: 'root-custom',
272
+ });
273
+ await accessService.addPermissionToRole(readFrontendApiToken.id, types_1.READ_FRONTEND_API_TOKEN);
274
+ await accessService.addUserToRole(user.id, readFrontendApiToken.id, 'default');
275
+ next();
276
+ });
277
+ };
278
+ const { request, destroy } = await (0, test_helper_1.setupAppWithCustomAuth)(stores, preHook, {
279
+ experimental: {
280
+ flags: {
281
+ customRootRoles: true,
282
+ },
283
+ },
284
+ });
285
+ await stores.apiTokenStore.insert({
286
+ username: 'client',
287
+ secret: 'client_secret',
288
+ type: api_token_1.ApiTokenType.CLIENT,
289
+ });
290
+ await stores.apiTokenStore.insert({
291
+ username: 'admin',
292
+ secret: 'sdfsdf2admin_secret',
293
+ type: api_token_1.ApiTokenType.ADMIN,
294
+ });
295
+ await stores.apiTokenStore.insert({
296
+ username: 'frontender',
297
+ secret: 'sdfsdf2dfrontend_Secret',
298
+ type: api_token_1.ApiTokenType.FRONTEND,
299
+ });
300
+ await request
301
+ .get('/api/admin/api-tokens')
302
+ .set('Content-Type', 'application/json')
303
+ .expect(200)
304
+ .expect((res) => {
305
+ expect(res.body.tokens.every((t) => t.type === api_token_1.ApiTokenType.FRONTEND)).toBe(true);
306
+ });
307
+ await destroy();
308
+ });
309
+ test('READ_CLIENT_API_TOKEN should be able to see CLIENT tokens', async () => {
310
+ const preHook = (app, config, { userService, accessService }) => {
311
+ app.use('/api/admin/', async (req, res, next) => {
312
+ const role = await accessService.getRootRole(model_1.RoleName.VIEWER);
313
+ const user = await userService.createUser({
314
+ email: 'read_client_token@example.com',
315
+ rootRole: role.id,
316
+ });
317
+ req.user = user;
318
+ const readClientTokenRole = await accessService.createRole({
319
+ name: 'client_token_reader',
320
+ description: 'Can read client tokens',
321
+ permissions: [],
322
+ type: 'root-custom',
323
+ });
324
+ await accessService.addPermissionToRole(readClientTokenRole.id, types_1.READ_CLIENT_API_TOKEN);
325
+ await accessService.addUserToRole(user.id, readClientTokenRole.id, 'default');
326
+ next();
327
+ });
328
+ };
329
+ const { request, destroy } = await (0, test_helper_1.setupAppWithCustomAuth)(stores, preHook, {
330
+ experimental: {
331
+ flags: {
332
+ customRootRoles: true,
333
+ },
334
+ },
335
+ });
336
+ await stores.apiTokenStore.insert({
337
+ username: 'client',
338
+ secret: 'client_secret_1234',
339
+ type: api_token_1.ApiTokenType.CLIENT,
340
+ });
341
+ await stores.apiTokenStore.insert({
342
+ username: 'admin',
343
+ secret: 'admin_secret_1234',
344
+ type: api_token_1.ApiTokenType.ADMIN,
345
+ });
346
+ await stores.apiTokenStore.insert({
347
+ username: 'frontender',
348
+ secret: 'frontend_secret_1234',
349
+ type: api_token_1.ApiTokenType.FRONTEND,
350
+ });
351
+ await request
352
+ .get('/api/admin/api-tokens')
353
+ .set('Content-Type', 'application/json')
354
+ .expect(200)
355
+ .expect((res) => {
356
+ expect(res.body.tokens).toHaveLength(1);
357
+ expect(res.body.tokens[0].type).toBe(api_token_1.ApiTokenType.CLIENT);
358
+ });
359
+ await destroy();
360
+ });
361
+ test('Admin users should be able to see all tokens', async () => {
362
+ const preHook = (app, config, { userService, accessService }) => {
363
+ app.use('/api/admin/', async (req, res, next) => {
364
+ const role = await accessService.getRootRole(model_1.RoleName.ADMIN);
365
+ const user = await userService.createUser({
366
+ email: 'read_admin_token@example.com',
367
+ rootRole: role.id,
368
+ });
369
+ req.user = user;
370
+ next();
371
+ });
372
+ };
373
+ const { request, destroy } = await (0, test_helper_1.setupAppWithCustomAuth)(stores, preHook);
374
+ await stores.apiTokenStore.insert({
375
+ username: 'client',
376
+ secret: 'client_secret_4321',
377
+ type: api_token_1.ApiTokenType.CLIENT,
378
+ });
379
+ await stores.apiTokenStore.insert({
380
+ username: 'admin',
381
+ secret: 'admin_secret_4321',
382
+ type: api_token_1.ApiTokenType.ADMIN,
383
+ });
384
+ await stores.apiTokenStore.insert({
385
+ username: 'frontender',
386
+ secret: 'frontend_secret_4321',
387
+ type: api_token_1.ApiTokenType.FRONTEND,
388
+ });
389
+ await request
390
+ .get('/api/admin/api-tokens')
391
+ .set('Content-Type', 'application/json')
392
+ .expect(200)
393
+ .expect((res) => {
394
+ expect(res.body.tokens).toHaveLength(3);
395
+ });
396
+ await destroy();
397
+ });
398
+ test('Editor users should be able to see all tokens except ADMIN tokens', async () => {
399
+ const preHook = (app, config, { userService, accessService }) => {
400
+ app.use('/api/admin/', async (req, res, next) => {
401
+ const role = await accessService.getRootRole(model_1.RoleName.EDITOR);
402
+ const user = await userService.createUser({
403
+ email: 'standard-editor-reads-tokens@example.com',
404
+ rootRole: role.id,
405
+ });
406
+ req.user = user;
407
+ next();
408
+ });
409
+ };
410
+ const { request, destroy } = await (0, test_helper_1.setupAppWithCustomAuth)(stores, preHook);
411
+ await stores.apiTokenStore.insert({
412
+ username: 'client',
413
+ secret: 'client_secret_4321',
414
+ type: api_token_1.ApiTokenType.CLIENT,
415
+ });
416
+ await stores.apiTokenStore.insert({
417
+ username: 'admin',
418
+ secret: 'admin_secret_4321',
419
+ type: api_token_1.ApiTokenType.ADMIN,
420
+ });
421
+ await stores.apiTokenStore.insert({
422
+ username: 'frontender',
423
+ secret: 'frontend_secret_4321',
424
+ type: api_token_1.ApiTokenType.FRONTEND,
425
+ });
426
+ await request
427
+ .get('/api/admin/api-tokens')
428
+ .set('Content-Type', 'application/json')
429
+ .expect(200)
430
+ .expect((res) => {
431
+ expect(res.body.tokens).toHaveLength(2);
432
+ expect(res.body.tokens.filter(({ type }) => type === api_token_1.ApiTokenType.ADMIN)).toHaveLength(0);
433
+ });
434
+ await destroy();
435
+ });
436
+ });
437
+ describe('Update operations', () => {
438
+ describe('UPDATE_CLIENT_API_TOKEN can', () => {
439
+ test('UPDATE client_api token expiry', async () => {
440
+ const preHook = (app, config, { userService, accessService }) => {
441
+ app.use('/api/admin/', async (req, res, next) => {
442
+ const role = await accessService.getRootRole(model_1.RoleName.VIEWER);
443
+ const user = await userService.createUser({
444
+ email: 'update_client_token@example.com',
445
+ rootRole: role.id,
446
+ });
447
+ req.user = user;
448
+ const updateClientApiExpiry = await accessService.createRole({
449
+ name: 'update_client_token',
450
+ description: 'Can update client tokens',
451
+ permissions: [],
452
+ type: 'root-custom',
453
+ });
454
+ await accessService.addPermissionToRole(updateClientApiExpiry.id, types_1.UPDATE_CLIENT_API_TOKEN);
455
+ await accessService.addUserToRole(user.id, updateClientApiExpiry.id, 'default');
456
+ next();
457
+ });
458
+ };
459
+ const { request, destroy } = await (0, test_helper_1.setupAppWithCustomAuth)(stores, preHook, {
460
+ experimental: {
461
+ flags: {
462
+ customRootRoles: true,
463
+ },
464
+ },
465
+ });
466
+ const token = await stores.apiTokenStore.insert({
467
+ username: 'cilent',
468
+ secret: 'update_client_token',
469
+ type: api_token_1.ApiTokenType.CLIENT,
470
+ });
471
+ await request
472
+ .put(`/api/admin/api-tokens/${token.secret}`)
473
+ .send({ expiresAt: (0, date_fns_1.addDays)(new Date(), 14) })
474
+ .expect(200);
475
+ await destroy();
476
+ });
477
+ test('NOT UPDATE frontend_api token expiry', async () => {
478
+ const preHook = (app, config, { userService, accessService }) => {
479
+ app.use('/api/admin/', async (req, res, next) => {
480
+ const role = await accessService.getRootRole(model_1.RoleName.VIEWER);
481
+ const user = await userService.createUser({
482
+ email: 'update_frontend_token@example.com',
483
+ rootRole: role.id,
484
+ });
485
+ req.user = user;
486
+ const updateClientApiExpiry = await accessService.createRole({
487
+ name: 'update_client_token_not_frontend',
488
+ description: 'Can not update frontend tokens',
489
+ permissions: [],
490
+ type: 'root-custom',
491
+ });
492
+ await accessService.addPermissionToRole(updateClientApiExpiry.id, types_1.UPDATE_CLIENT_API_TOKEN);
493
+ await accessService.addUserToRole(user.id, updateClientApiExpiry.id, 'default');
494
+ next();
495
+ });
496
+ };
497
+ const { request, destroy } = await (0, test_helper_1.setupAppWithCustomAuth)(stores, preHook, {
498
+ experimental: {
499
+ flags: {
500
+ customRootRoles: true,
501
+ },
502
+ },
503
+ });
504
+ const token = await stores.apiTokenStore.insert({
505
+ username: 'frontend',
506
+ secret: 'update_frontend_token',
507
+ type: api_token_1.ApiTokenType.FRONTEND,
508
+ });
509
+ await request
510
+ .put(`/api/admin/api-tokens/${token.secret}`)
511
+ .send({ expiresAt: (0, date_fns_1.addDays)(new Date(), 14) })
512
+ .expect(403);
513
+ await destroy();
514
+ });
515
+ test('NOT UPDATE admin_api token expiry', async () => {
516
+ const preHook = (app, config, { userService, accessService }) => {
517
+ app.use('/api/admin/', async (req, res, next) => {
518
+ const role = await accessService.getRootRole(model_1.RoleName.VIEWER);
519
+ const user = await userService.createUser({
520
+ email: 'update_admin_token@example.com',
521
+ rootRole: role.id,
522
+ });
523
+ req.user = user;
524
+ const updateClientApiExpiry = await accessService.createRole({
525
+ name: 'update_client_token_not_admin',
526
+ description: 'Can not update admin tokens',
527
+ permissions: [],
528
+ type: 'root-custom',
529
+ });
530
+ await accessService.addPermissionToRole(updateClientApiExpiry.id, types_1.UPDATE_CLIENT_API_TOKEN);
531
+ await accessService.addUserToRole(user.id, updateClientApiExpiry.id, 'default');
532
+ next();
533
+ });
534
+ };
535
+ const { request, destroy } = await (0, test_helper_1.setupAppWithCustomAuth)(stores, preHook, {
536
+ experimental: {
537
+ flags: {
538
+ customRootRoles: true,
539
+ },
540
+ },
541
+ });
542
+ const token = await stores.apiTokenStore.insert({
543
+ username: 'admin',
544
+ secret: 'update_admin_token',
545
+ type: api_token_1.ApiTokenType.ADMIN,
546
+ });
547
+ await request
548
+ .put(`/api/admin/api-tokens/${token.secret}`)
549
+ .send({ expiresAt: (0, date_fns_1.addDays)(new Date(), 14) })
550
+ .expect(403);
551
+ await destroy();
552
+ });
553
+ });
554
+ });
555
+ describe('Delete operations', () => {
556
+ describe('DELETE_CLIENT_API_TOKEN can', () => {
557
+ test('DELETE client_api token', async () => {
558
+ const preHook = (app, config, { userService, accessService }) => {
559
+ app.use('/api/admin/', async (req, res, next) => {
560
+ const role = await accessService.getRootRole(model_1.RoleName.VIEWER);
561
+ const user = await userService.createUser({
562
+ email: 'delete_client_token@example.com',
563
+ rootRole: role.id,
564
+ });
565
+ req.user = user;
566
+ const updateClientApiExpiry = await accessService.createRole({
567
+ name: 'delete_client_token',
568
+ description: 'Can delete client tokens',
569
+ permissions: [],
570
+ type: 'root-custom',
571
+ });
572
+ await accessService.addPermissionToRole(updateClientApiExpiry.id, types_1.DELETE_CLIENT_API_TOKEN);
573
+ await accessService.addUserToRole(user.id, updateClientApiExpiry.id, 'default');
574
+ next();
575
+ });
576
+ };
577
+ const { request, destroy } = await (0, test_helper_1.setupAppWithCustomAuth)(stores, preHook, {
578
+ experimental: {
579
+ flags: {
580
+ customRootRoles: true,
581
+ },
582
+ },
583
+ });
584
+ const token = await stores.apiTokenStore.insert({
585
+ username: 'cilent',
586
+ secret: 'delete_client_token',
587
+ type: api_token_1.ApiTokenType.CLIENT,
588
+ });
589
+ await request
590
+ .delete(`/api/admin/api-tokens/${token.secret}`)
591
+ .send({ expiresAt: (0, date_fns_1.addDays)(new Date(), 14) })
592
+ .expect(200);
593
+ await destroy();
594
+ });
595
+ test('NOT DELETE frontend_api token', async () => {
596
+ const preHook = (app, config, { userService, accessService }) => {
597
+ app.use('/api/admin/', async (req, res, next) => {
598
+ const role = await accessService.getRootRole(model_1.RoleName.VIEWER);
599
+ const user = await userService.createUser({
600
+ email: 'delete_frontend_token@example.com',
601
+ rootRole: role.id,
602
+ });
603
+ req.user = user;
604
+ const updateClientApiExpiry = await accessService.createRole({
605
+ name: 'delete_client_token_not_frontend',
606
+ description: 'Can not delete frontend tokens',
607
+ permissions: [],
608
+ type: 'root-custom',
609
+ });
610
+ await accessService.addPermissionToRole(updateClientApiExpiry.id, types_1.DELETE_CLIENT_API_TOKEN);
611
+ await accessService.addUserToRole(user.id, updateClientApiExpiry.id, 'default');
612
+ next();
613
+ });
614
+ };
615
+ const { request, destroy } = await (0, test_helper_1.setupAppWithCustomAuth)(stores, preHook, {
616
+ experimental: {
617
+ flags: {
618
+ customRootRoles: true,
619
+ },
620
+ },
621
+ });
622
+ const token = await stores.apiTokenStore.insert({
623
+ username: 'frontend',
624
+ secret: 'delete_frontend_token',
625
+ type: api_token_1.ApiTokenType.FRONTEND,
626
+ });
627
+ await request
628
+ .delete(`/api/admin/api-tokens/${token.secret}`)
629
+ .send({ expiresAt: (0, date_fns_1.addDays)(new Date(), 14) })
630
+ .expect(403);
631
+ await destroy();
632
+ });
633
+ test('NOT DELETE admin_api token', async () => {
634
+ const preHook = (app, config, { userService, accessService }) => {
635
+ app.use('/api/admin/', async (req, res, next) => {
636
+ const role = await accessService.getRootRole(model_1.RoleName.VIEWER);
637
+ const user = await userService.createUser({
638
+ email: 'delete_admin_token@example.com',
639
+ rootRole: role.id,
640
+ });
641
+ req.user = user;
642
+ const updateClientApiExpiry = await accessService.createRole({
643
+ name: 'delete_client_token_not_admin',
644
+ description: 'Can not delete admin tokens',
645
+ permissions: [],
646
+ type: 'root-custom',
647
+ });
648
+ await accessService.addPermissionToRole(updateClientApiExpiry.id, types_1.DELETE_CLIENT_API_TOKEN);
649
+ await accessService.addUserToRole(user.id, updateClientApiExpiry.id, 'default');
650
+ next();
651
+ });
652
+ };
653
+ const { request, destroy } = await (0, test_helper_1.setupAppWithCustomAuth)(stores, preHook, {
654
+ experimental: {
655
+ flags: {
656
+ customRootRoles: true,
657
+ },
658
+ },
659
+ });
660
+ const token = await stores.apiTokenStore.insert({
661
+ username: 'admin',
662
+ secret: 'delete_admin_token',
663
+ type: api_token_1.ApiTokenType.ADMIN,
664
+ });
665
+ await request
666
+ .delete(`/api/admin/api-tokens/${token.secret}`)
667
+ .send({ expiresAt: (0, date_fns_1.addDays)(new Date(), 14) })
668
+ .expect(403);
669
+ await destroy();
670
+ });
671
+ });
672
+ });
673
+ });
135
674
  //# sourceMappingURL=api-token.auth.e2e.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"api-token.auth.e2e.test.js","sourceRoot":"","sources":["../../../../../src/test/e2e/api/admin/api-token.auth.e2e.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api-token.auth.e2e.test.js","sourceRoot":"","sources":["../../../../../src/test/e2e/api/admin/api-token.auth.e2e.test.ts"],"names":[],"mappings":";;;;;AAAA,2DAAmE;AACnE,gFAAiD;AACjD,4EAAoD;AACpD,sEAAsE;AACtE,uDAAuD;AACvD,iDAM+B;AAC/B,uCAAmC;AAEnC,IAAI,MAAM,CAAC;AACX,IAAI,EAAE,CAAC;AAEP,SAAS,CAAC,KAAK,IAAI,EAAE;IACjB,EAAE,GAAG,MAAM,IAAA,uBAAM,EAAC,uBAAuB,EAAE,mBAAS,CAAC,CAAC;IACtD,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC;AACvB,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,KAAK,IAAI,EAAE;IAChB,IAAI,EAAE,EAAE;QACJ,MAAM,EAAE,CAAC,OAAO,EAAE,CAAC;KACtB;AACL,CAAC,CAAC,CAAC;AAEH,SAAS,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC;AAC3C,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;IACtE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAErB,MAAM,OAAO,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,aAAa,EAAE,EAAE,EAAE;QAC5D,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;YAC5C,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,WAAW,CAAC,gBAAQ,CAAC,MAAM,CAAC,CAAC;YAC9D,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,UAAU,CAAC;gBACtC,KAAK,EAAE,oBAAoB;gBAC3B,QAAQ,EAAE,IAAI,CAAC,EAAE;aACpB,CAAC,CAAC;YACH,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;YAChB,IAAI,EAAE,CAAC;QACX,CAAC,CAAC,CAAC;IACP,CAAC,CAAC;IAEF,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,MAAM,IAAA,oCAAsB,EAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAE3E,MAAM,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC;QAC9B,QAAQ,EAAE,MAAM;QAChB,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,wBAAY,CAAC,MAAM;KAC5B,CAAC,CAAC;IAEH,MAAM,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC;QAC9B,QAAQ,EAAE,UAAU;QACpB,MAAM,EAAE,OAAO;QACf,IAAI,EAAE,wBAAY,CAAC,QAAQ;KAC9B,CAAC,CAAC;IAEH,MAAM,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC;QAC9B,QAAQ,EAAE,MAAM;QAChB,MAAM,EAAE,UAAU;QAClB,IAAI,EAAE,wBAAY,CAAC,KAAK;KAC3B,CAAC,CAAC;IAEH,MAAM,OAAO;SACR,GAAG,CAAC,uBAAuB,CAAC;SAC5B,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC;SAC9B,MAAM,CAAC,GAAG,CAAC;SACX,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE;QACZ,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACvC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,wBAAY,CAAC,MAAM,CAAC,CAAC;QAC1D,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,wBAAY,CAAC,QAAQ,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;IAEP,MAAM,OAAO,EAAE,CAAC;AACpB,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;IAClE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAErB,MAAM,OAAO,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,aAAa,EAAE,EAAE,EAAE;QAC5D,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;YAC5C,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,WAAW,CAAC,gBAAQ,CAAC,MAAM,CAAC,CAAC;YAC9D,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,UAAU,CAAC;gBACtC,KAAK,EAAE,oBAAoB;gBAC3B,QAAQ,EAAE,IAAI,CAAC,EAAE;aACpB,CAAC,CAAC;YACH,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;YAChB,IAAI,EAAE,CAAC;QACX,CAAC,CAAC,CAAC;IACP,CAAC,CAAC;IAEF,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,MAAM,IAAA,oCAAsB,EAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAE3E,MAAM,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC;QAC9B,QAAQ,EAAE,MAAM;QAChB,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,wBAAY,CAAC,MAAM;KAC5B,CAAC,CAAC;IAEH,MAAM,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC;QAC9B,QAAQ,EAAE,MAAM;QAChB,MAAM,EAAE,UAAU;QAClB,IAAI,EAAE,wBAAY,CAAC,KAAK;KAC3B,CAAC,CAAC;IAEH,MAAM,OAAO;SACR,GAAG,CAAC,uBAAuB,CAAC;SAC5B,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC;SAC9B,MAAM,CAAC,GAAG,CAAC,CAAC;IAEjB,MAAM,OAAO,EAAE,CAAC;AACpB,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;IACnE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAErB,MAAM,OAAO,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,aAAa,EAAE,EAAE,EAAE;QAC5D,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;YAC5C,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,WAAW,CAAC,gBAAQ,CAAC,MAAM,CAAC,CAAC;YAC9D,GAAG,CAAC,IAAI,GAAG,MAAM,WAAW,CAAC,UAAU,CAAC;gBACpC,KAAK,EAAE,qBAAqB;gBAC5B,QAAQ,EAAE,IAAI,CAAC,EAAE;aACpB,CAAC,CAAC;YACH,IAAI,EAAE,CAAC;QACX,CAAC,CAAC,CAAC;IACP,CAAC,CAAC;IAEF,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,MAAM,IAAA,oCAAsB,EAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAE3E,MAAM,OAAO;SACR,IAAI,CAAC,uBAAuB,CAAC;SAC7B,IAAI,CAAC;QACF,QAAQ,EAAE,eAAe;QACzB,IAAI,EAAE,OAAO;KAChB,CAAC;SACD,GAAG,CAAC,cAAc,EAAE,kBAAkB,CAAC;SACvC,MAAM,CAAC,GAAG,CAAC,CAAC;IAEjB,MAAM,OAAO,EAAE,CAAC;AACpB,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;IAC7D,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAErB,MAAM,OAAO,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,aAAa,EAAE,EAAE,EAAE;QAC5D,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;YAC5C,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,WAAW,CAAC,gBAAQ,CAAC,KAAK,CAAC,CAAC;YAC7D,GAAG,CAAC,IAAI,GAAG,MAAM,WAAW,CAAC,UAAU,CAAC;gBACpC,KAAK,EAAE,mBAAmB;gBAC1B,QAAQ,EAAE,IAAI,CAAC,EAAE;aACpB,CAAC,CAAC;YACH,IAAI,EAAE,CAAC;QACX,CAAC,CAAC,CAAC;IACP,CAAC,CAAC;IAEF,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,MAAM,IAAA,oCAAsB,EAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAE3E,MAAM,OAAO;SACR,IAAI,CAAC,uBAAuB,CAAC;SAC7B,IAAI,CAAC;QACF,QAAQ,EAAE,eAAe;QACzB,IAAI,EAAE,OAAO;KAChB,CAAC;SACD,GAAG,CAAC,cAAc,EAAE,kBAAkB,CAAC;SACvC,MAAM,CAAC,GAAG,CAAC,CAAC;IAEjB,MAAM,OAAO,EAAE,CAAC;AACpB,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,oCAAoC,EAAE,GAAG,EAAE;IAChD,QAAQ,CAAC,+CAA+C,EAAE,GAAG,EAAE;QAC3D,IAAI,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;YACzD,MAAM,OAAO,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,aAAa,EAAE,EAAE,EAAE;gBAC5D,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;oBAC5C,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,WAAW,CACxC,gBAAQ,CAAC,MAAM,CAClB,CAAC;oBACF,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,UAAU,CAAC;wBACtC,KAAK,EAAE,iCAAiC;wBACxC,QAAQ,EAAE,IAAI,CAAC,EAAE;qBACpB,CAAC,CAAC;oBACH,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;oBAChB,MAAM,wBAAwB,GAC1B,MAAM,aAAa,CAAC,UAAU,CAAC;wBAC3B,IAAI,EAAE,sBAAsB;wBAC5B,WAAW,EAAE,0BAA0B;wBACvC,WAAW,EAAE,EAAE;wBACf,IAAI,EAAE,aAAa;qBACtB,CAAC,CAAC;oBACP,MAAM,aAAa,CAAC,mBAAmB,CACnC,IAAI,CAAC,EAAE,EACP,+BAAuB,CAC1B,CAAC;oBACF,MAAM,aAAa,CAAC,aAAa,CAC7B,IAAI,CAAC,EAAE,EACP,wBAAwB,CAAC,EAAE,EAC3B,SAAS,CACZ,CAAC;oBACF,IAAI,EAAE,CAAC;gBACX,CAAC,CAAC,CAAC;YACP,CAAC,CAAC;YACF,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,MAAM,IAAA,oCAAsB,EACrD,MAAM,EACN,OAAO,EACP;gBACI,YAAY,EAAE;oBACV,KAAK,EAAE;wBACH,eAAe,EAAE,IAAI;qBACxB;iBACJ;aACJ,CACJ,CAAC;YACF,MAAM,OAAO;iBACR,IAAI,CAAC,uBAAuB,CAAC;iBAC7B,IAAI,CAAC;gBACF,QAAQ,EAAE,gBAAgB;gBAC1B,IAAI,EAAE,QAAQ;aACjB,CAAC;iBACD,GAAG,CAAC,cAAc,EAAE,kBAAkB,CAAC;iBACvC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjB,MAAM,OAAO,EAAE,CAAC;QACpB,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;YAC/D,MAAM,OAAO,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,aAAa,EAAE,EAAE,EAAE;gBAC5D,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;oBAC5C,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,WAAW,CACxC,gBAAQ,CAAC,MAAM,CAClB,CAAC;oBACF,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,UAAU,CAAC;wBACtC,KAAK,EAAE,0CAA0C;wBACjD,QAAQ,EAAE,IAAI,CAAC,EAAE;qBACpB,CAAC,CAAC;oBACH,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;oBAChB,MAAM,wBAAwB,GAC1B,MAAM,aAAa,CAAC,UAAU,CAAC;wBAC3B,IAAI,EAAE,6CAA6C;wBACnD,WAAW,EAAE,0BAA0B;wBACvC,WAAW,EAAE,EAAE;wBACf,IAAI,EAAE,aAAa;qBACtB,CAAC,CAAC;oBACP,MAAM,aAAa,CAAC,mBAAmB,CACnC,IAAI,CAAC,EAAE,EACP,+BAAuB,CAC1B,CAAC;oBACF,MAAM,aAAa,CAAC,aAAa,CAC7B,IAAI,CAAC,EAAE,EACP,wBAAwB,CAAC,EAAE,EAC3B,SAAS,CACZ,CAAC;oBACF,IAAI,EAAE,CAAC;gBACX,CAAC,CAAC,CAAC;YACP,CAAC,CAAC;YACF,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,MAAM,IAAA,oCAAsB,EACrD,MAAM,EACN,OAAO,EACP;gBACI,YAAY,EAAE;oBACV,KAAK,EAAE;wBACH,eAAe,EAAE,IAAI;qBACxB;iBACJ;aACJ,CACJ,CAAC;YACF,MAAM,OAAO;iBACR,IAAI,CAAC,uBAAuB,CAAC;iBAC7B,IAAI,CAAC;gBACF,QAAQ,EAAE,kBAAkB;gBAC5B,IAAI,EAAE,UAAU;aACnB,CAAC;iBACD,GAAG,CAAC,cAAc,EAAE,kBAAkB,CAAC;iBACvC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjB,MAAM,OAAO,EAAE,CAAC;QACpB,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;YAC5D,MAAM,OAAO,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,aAAa,EAAE,EAAE,EAAE;gBAC5D,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;oBAC5C,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,WAAW,CACxC,gBAAQ,CAAC,MAAM,CAClB,CAAC;oBACF,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,UAAU,CAAC;wBACtC,KAAK,EAAE,gCAAgC;wBACvC,QAAQ,EAAE,IAAI,CAAC,EAAE;qBACpB,CAAC,CAAC;oBACH,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;oBAChB,MAAM,wBAAwB,GAC1B,MAAM,aAAa,CAAC,UAAU,CAAC;wBAC3B,IAAI,EAAE,0CAA0C;wBAChD,WAAW,EAAE,0BAA0B;wBACvC,WAAW,EAAE,EAAE;wBACf,IAAI,EAAE,aAAa;qBACtB,CAAC,CAAC;oBACP,MAAM,aAAa,CAAC,mBAAmB,CACnC,IAAI,CAAC,EAAE,EACP,+BAAuB,CAC1B,CAAC;oBACF,MAAM,aAAa,CAAC,aAAa,CAC7B,IAAI,CAAC,EAAE,EACP,wBAAwB,CAAC,EAAE,EAC3B,SAAS,CACZ,CAAC;oBACF,IAAI,EAAE,CAAC;gBACX,CAAC,CAAC,CAAC;YACP,CAAC,CAAC;YACF,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,MAAM,IAAA,oCAAsB,EACrD,MAAM,EACN,OAAO,EACP;gBACI,YAAY,EAAE;oBACV,KAAK,EAAE;wBACH,eAAe,EAAE,IAAI;qBACxB;iBACJ;aACJ,CACJ,CAAC;YACF,MAAM,OAAO;iBACR,IAAI,CAAC,uBAAuB,CAAC;iBAC7B,IAAI,CAAC;gBACF,QAAQ,EAAE,eAAe;gBACzB,IAAI,EAAE,OAAO;aAChB,CAAC;iBACD,GAAG,CAAC,cAAc,EAAE,kBAAkB,CAAC;iBACvC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjB,MAAM,OAAO,EAAE,CAAC;QACpB,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IACH,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;QAC7B,IAAI,CAAC,+DAA+D,EAAE,KAAK,IAAI,EAAE;YAC7E,MAAM,OAAO,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,aAAa,EAAE,EAAE,EAAE;gBAC5D,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;oBAC5C,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,WAAW,CACxC,gBAAQ,CAAC,MAAM,CAClB,CAAC;oBACF,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,UAAU,CAAC;wBACtC,KAAK,EAAE,iCAAiC;wBACxC,QAAQ,EAAE,IAAI,CAAC,EAAE;qBACpB,CAAC,CAAC;oBACH,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;oBAChB,MAAM,oBAAoB,GAAG,MAAM,aAAa,CAAC,UAAU,CACvD;wBACI,IAAI,EAAE,uBAAuB;wBAC7B,WAAW,EAAE,0BAA0B;wBACvC,WAAW,EAAE,EAAE;wBACf,IAAI,EAAE,aAAa;qBACtB,CACJ,CAAC;oBACF,MAAM,aAAa,CAAC,mBAAmB,CACnC,oBAAoB,CAAC,EAAE,EACvB,+BAAuB,CAC1B,CAAC;oBACF,MAAM,aAAa,CAAC,aAAa,CAC7B,IAAI,CAAC,EAAE,EACP,oBAAoB,CAAC,EAAE,EACvB,SAAS,CACZ,CAAC;oBACF,IAAI,EAAE,CAAC;gBACX,CAAC,CAAC,CAAC;YACP,CAAC,CAAC;YACF,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,MAAM,IAAA,oCAAsB,EACrD,MAAM,EACN,OAAO,EACP;gBACI,YAAY,EAAE;oBACV,KAAK,EAAE;wBACH,eAAe,EAAE,IAAI;qBACxB;iBACJ;aACJ,CACJ,CAAC;YACF,MAAM,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC;gBAC9B,QAAQ,EAAE,QAAQ;gBAClB,MAAM,EAAE,eAAe;gBACvB,IAAI,EAAE,wBAAY,CAAC,MAAM;aAC5B,CAAC,CAAC;YAEH,MAAM,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC;gBAC9B,QAAQ,EAAE,OAAO;gBACjB,MAAM,EAAE,qBAAqB;gBAC7B,IAAI,EAAE,wBAAY,CAAC,KAAK;aAC3B,CAAC,CAAC;YACH,MAAM,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC;gBAC9B,QAAQ,EAAE,YAAY;gBACtB,MAAM,EAAE,yBAAyB;gBACjC,IAAI,EAAE,wBAAY,CAAC,QAAQ;aAC9B,CAAC,CAAC;YACH,MAAM,OAAO;iBACR,GAAG,CAAC,uBAAuB,CAAC;iBAC5B,GAAG,CAAC,cAAc,EAAE,kBAAkB,CAAC;iBACvC,MAAM,CAAC,GAAG,CAAC;iBACX,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE;gBACZ,MAAM,CACF,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CACjB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,wBAAY,CAAC,QAAQ,CAC1C,CACJ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjB,CAAC,CAAC,CAAC;YACP,MAAM,OAAO,EAAE,CAAC;QACpB,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;YACzE,MAAM,OAAO,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,aAAa,EAAE,EAAE,EAAE;gBAC5D,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;oBAC5C,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,WAAW,CACxC,gBAAQ,CAAC,MAAM,CAClB,CAAC;oBACF,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,UAAU,CAAC;wBACtC,KAAK,EAAE,+BAA+B;wBACtC,QAAQ,EAAE,IAAI,CAAC,EAAE;qBACpB,CAAC,CAAC;oBACH,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;oBAChB,MAAM,mBAAmB,GAAG,MAAM,aAAa,CAAC,UAAU,CAAC;wBACvD,IAAI,EAAE,qBAAqB;wBAC3B,WAAW,EAAE,wBAAwB;wBACrC,WAAW,EAAE,EAAE;wBACf,IAAI,EAAE,aAAa;qBACtB,CAAC,CAAC;oBACH,MAAM,aAAa,CAAC,mBAAmB,CACnC,mBAAmB,CAAC,EAAE,EACtB,6BAAqB,CACxB,CAAC;oBACF,MAAM,aAAa,CAAC,aAAa,CAC7B,IAAI,CAAC,EAAE,EACP,mBAAmB,CAAC,EAAE,EACtB,SAAS,CACZ,CAAC;oBACF,IAAI,EAAE,CAAC;gBACX,CAAC,CAAC,CAAC;YACP,CAAC,CAAC;YACF,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,MAAM,IAAA,oCAAsB,EACrD,MAAM,EACN,OAAO,EACP;gBACI,YAAY,EAAE;oBACV,KAAK,EAAE;wBACH,eAAe,EAAE,IAAI;qBACxB;iBACJ;aACJ,CACJ,CAAC;YACF,MAAM,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC;gBAC9B,QAAQ,EAAE,QAAQ;gBAClB,MAAM,EAAE,oBAAoB;gBAC5B,IAAI,EAAE,wBAAY,CAAC,MAAM;aAC5B,CAAC,CAAC;YAEH,MAAM,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC;gBAC9B,QAAQ,EAAE,OAAO;gBACjB,MAAM,EAAE,mBAAmB;gBAC3B,IAAI,EAAE,wBAAY,CAAC,KAAK;aAC3B,CAAC,CAAC;YACH,MAAM,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC;gBAC9B,QAAQ,EAAE,YAAY;gBACtB,MAAM,EAAE,sBAAsB;gBAC9B,IAAI,EAAE,wBAAY,CAAC,QAAQ;aAC9B,CAAC,CAAC;YACH,MAAM,OAAO;iBACR,GAAG,CAAC,uBAAuB,CAAC;iBAC5B,GAAG,CAAC,cAAc,EAAE,kBAAkB,CAAC;iBACvC,MAAM,CAAC,GAAG,CAAC;iBACX,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE;gBACZ,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;gBACxC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,wBAAY,CAAC,MAAM,CAAC,CAAC;YAC9D,CAAC,CAAC,CAAC;YACP,MAAM,OAAO,EAAE,CAAC;QACpB,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;YAC5D,MAAM,OAAO,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,aAAa,EAAE,EAAE,EAAE;gBAC5D,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;oBAC5C,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,WAAW,CACxC,gBAAQ,CAAC,KAAK,CACjB,CAAC;oBACF,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,UAAU,CAAC;wBACtC,KAAK,EAAE,8BAA8B;wBACrC,QAAQ,EAAE,IAAI,CAAC,EAAE;qBACpB,CAAC,CAAC;oBACH,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;oBAChB,IAAI,EAAE,CAAC;gBACX,CAAC,CAAC,CAAC;YACP,CAAC,CAAC;YACF,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,MAAM,IAAA,oCAAsB,EACrD,MAAM,EACN,OAAO,CACV,CAAC;YACF,MAAM,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC;gBAC9B,QAAQ,EAAE,QAAQ;gBAClB,MAAM,EAAE,oBAAoB;gBAC5B,IAAI,EAAE,wBAAY,CAAC,MAAM;aAC5B,CAAC,CAAC;YAEH,MAAM,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC;gBAC9B,QAAQ,EAAE,OAAO;gBACjB,MAAM,EAAE,mBAAmB;gBAC3B,IAAI,EAAE,wBAAY,CAAC,KAAK;aAC3B,CAAC,CAAC;YACH,MAAM,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC;gBAC9B,QAAQ,EAAE,YAAY;gBACtB,MAAM,EAAE,sBAAsB;gBAC9B,IAAI,EAAE,wBAAY,CAAC,QAAQ;aAC9B,CAAC,CAAC;YACH,MAAM,OAAO;iBACR,GAAG,CAAC,uBAAuB,CAAC;iBAC5B,GAAG,CAAC,cAAc,EAAE,kBAAkB,CAAC;iBACvC,MAAM,CAAC,GAAG,CAAC;iBACX,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE;gBACZ,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC5C,CAAC,CAAC,CAAC;YACP,MAAM,OAAO,EAAE,CAAC;QACpB,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,mEAAmE,EAAE,KAAK,IAAI,EAAE;YACjF,MAAM,OAAO,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,aAAa,EAAE,EAAE,EAAE;gBAC5D,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;oBAC5C,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,WAAW,CACxC,gBAAQ,CAAC,MAAM,CAClB,CAAC;oBACF,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,UAAU,CAAC;wBACtC,KAAK,EAAE,0CAA0C;wBACjD,QAAQ,EAAE,IAAI,CAAC,EAAE;qBACpB,CAAC,CAAC;oBACH,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;oBAChB,IAAI,EAAE,CAAC;gBACX,CAAC,CAAC,CAAC;YACP,CAAC,CAAC;YACF,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,MAAM,IAAA,oCAAsB,EACrD,MAAM,EACN,OAAO,CACV,CAAC;YACF,MAAM,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC;gBAC9B,QAAQ,EAAE,QAAQ;gBAClB,MAAM,EAAE,oBAAoB;gBAC5B,IAAI,EAAE,wBAAY,CAAC,MAAM;aAC5B,CAAC,CAAC;YACH,MAAM,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC;gBAC9B,QAAQ,EAAE,OAAO;gBACjB,MAAM,EAAE,mBAAmB;gBAC3B,IAAI,EAAE,wBAAY,CAAC,KAAK;aAC3B,CAAC,CAAC;YACH,MAAM,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC;gBAC9B,QAAQ,EAAE,YAAY;gBACtB,MAAM,EAAE,sBAAsB;gBAC9B,IAAI,EAAE,wBAAY,CAAC,QAAQ;aAC9B,CAAC,CAAC;YACH,MAAM,OAAO;iBACR,GAAG,CAAC,uBAAuB,CAAC;iBAC5B,GAAG,CAAC,cAAc,EAAE,kBAAkB,CAAC;iBACvC,MAAM,CAAC,GAAG,CAAC;iBACX,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE;gBACZ,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;gBACxC,MAAM,CACF,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAClB,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,KAAK,wBAAY,CAAC,KAAK,CAC5C,CACJ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACtB,CAAC,CAAC,CAAC;YACP,MAAM,OAAO,EAAE,CAAC;QACpB,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IACH,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;QAC/B,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;YACzC,IAAI,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;gBAC9C,MAAM,OAAO,GAAG,CACZ,GAAG,EACH,MAAM,EACN,EAAE,WAAW,EAAE,aAAa,EAAE,EAChC,EAAE;oBACA,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;wBAC5C,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,WAAW,CACxC,gBAAQ,CAAC,MAAM,CAClB,CAAC;wBACF,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,UAAU,CAAC;4BACtC,KAAK,EAAE,iCAAiC;4BACxC,QAAQ,EAAE,IAAI,CAAC,EAAE;yBACpB,CAAC,CAAC;wBACH,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;wBAChB,MAAM,qBAAqB,GACvB,MAAM,aAAa,CAAC,UAAU,CAAC;4BAC3B,IAAI,EAAE,qBAAqB;4BAC3B,WAAW,EAAE,0BAA0B;4BACvC,WAAW,EAAE,EAAE;4BACf,IAAI,EAAE,aAAa;yBACtB,CAAC,CAAC;wBACP,MAAM,aAAa,CAAC,mBAAmB,CACnC,qBAAqB,CAAC,EAAE,EACxB,+BAAuB,CAC1B,CAAC;wBACF,MAAM,aAAa,CAAC,aAAa,CAC7B,IAAI,CAAC,EAAE,EACP,qBAAqB,CAAC,EAAE,EACxB,SAAS,CACZ,CAAC;wBACF,IAAI,EAAE,CAAC;oBACX,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC;gBACF,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,MAAM,IAAA,oCAAsB,EACrD,MAAM,EACN,OAAO,EACP;oBACI,YAAY,EAAE;wBACV,KAAK,EAAE;4BACH,eAAe,EAAE,IAAI;yBACxB;qBACJ;iBACJ,CACJ,CAAC;gBACF,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC;oBAC5C,QAAQ,EAAE,QAAQ;oBAClB,MAAM,EAAE,qBAAqB;oBAC7B,IAAI,EAAE,wBAAY,CAAC,MAAM;iBAC5B,CAAC,CAAC;gBACH,MAAM,OAAO;qBACR,GAAG,CAAC,yBAAyB,KAAK,CAAC,MAAM,EAAE,CAAC;qBAC5C,IAAI,CAAC,EAAE,SAAS,EAAE,IAAA,kBAAO,EAAC,IAAI,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;qBAC5C,MAAM,CAAC,GAAG,CAAC,CAAC;gBACjB,MAAM,OAAO,EAAE,CAAC;YACpB,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;gBACpD,MAAM,OAAO,GAAG,CACZ,GAAG,EACH,MAAM,EACN,EAAE,WAAW,EAAE,aAAa,EAAE,EAChC,EAAE;oBACA,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;wBAC5C,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,WAAW,CACxC,gBAAQ,CAAC,MAAM,CAClB,CAAC;wBACF,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,UAAU,CAAC;4BACtC,KAAK,EAAE,mCAAmC;4BAC1C,QAAQ,EAAE,IAAI,CAAC,EAAE;yBACpB,CAAC,CAAC;wBACH,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;wBAChB,MAAM,qBAAqB,GACvB,MAAM,aAAa,CAAC,UAAU,CAAC;4BAC3B,IAAI,EAAE,kCAAkC;4BACxC,WAAW,EAAE,gCAAgC;4BAC7C,WAAW,EAAE,EAAE;4BACf,IAAI,EAAE,aAAa;yBACtB,CAAC,CAAC;wBACP,MAAM,aAAa,CAAC,mBAAmB,CACnC,qBAAqB,CAAC,EAAE,EACxB,+BAAuB,CAC1B,CAAC;wBACF,MAAM,aAAa,CAAC,aAAa,CAC7B,IAAI,CAAC,EAAE,EACP,qBAAqB,CAAC,EAAE,EACxB,SAAS,CACZ,CAAC;wBACF,IAAI,EAAE,CAAC;oBACX,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC;gBACF,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,MAAM,IAAA,oCAAsB,EACrD,MAAM,EACN,OAAO,EACP;oBACI,YAAY,EAAE;wBACV,KAAK,EAAE;4BACH,eAAe,EAAE,IAAI;yBACxB;qBACJ;iBACJ,CACJ,CAAC;gBACF,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC;oBAC5C,QAAQ,EAAE,UAAU;oBACpB,MAAM,EAAE,uBAAuB;oBAC/B,IAAI,EAAE,wBAAY,CAAC,QAAQ;iBAC9B,CAAC,CAAC;gBACH,MAAM,OAAO;qBACR,GAAG,CAAC,yBAAyB,KAAK,CAAC,MAAM,EAAE,CAAC;qBAC5C,IAAI,CAAC,EAAE,SAAS,EAAE,IAAA,kBAAO,EAAC,IAAI,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;qBAC5C,MAAM,CAAC,GAAG,CAAC,CAAC;gBAEjB,MAAM,OAAO,EAAE,CAAC;YACpB,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;gBACjD,MAAM,OAAO,GAAG,CACZ,GAAG,EACH,MAAM,EACN,EAAE,WAAW,EAAE,aAAa,EAAE,EAChC,EAAE;oBACA,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;wBAC5C,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,WAAW,CACxC,gBAAQ,CAAC,MAAM,CAClB,CAAC;wBACF,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,UAAU,CAAC;4BACtC,KAAK,EAAE,gCAAgC;4BACvC,QAAQ,EAAE,IAAI,CAAC,EAAE;yBACpB,CAAC,CAAC;wBACH,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;wBAChB,MAAM,qBAAqB,GACvB,MAAM,aAAa,CAAC,UAAU,CAAC;4BAC3B,IAAI,EAAE,+BAA+B;4BACrC,WAAW,EAAE,6BAA6B;4BAC1C,WAAW,EAAE,EAAE;4BACf,IAAI,EAAE,aAAa;yBACtB,CAAC,CAAC;wBACP,MAAM,aAAa,CAAC,mBAAmB,CACnC,qBAAqB,CAAC,EAAE,EACxB,+BAAuB,CAC1B,CAAC;wBACF,MAAM,aAAa,CAAC,aAAa,CAC7B,IAAI,CAAC,EAAE,EACP,qBAAqB,CAAC,EAAE,EACxB,SAAS,CACZ,CAAC;wBACF,IAAI,EAAE,CAAC;oBACX,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC;gBACF,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,MAAM,IAAA,oCAAsB,EACrD,MAAM,EACN,OAAO,EACP;oBACI,YAAY,EAAE;wBACV,KAAK,EAAE;4BACH,eAAe,EAAE,IAAI;yBACxB;qBACJ;iBACJ,CACJ,CAAC;gBACF,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC;oBAC5C,QAAQ,EAAE,OAAO;oBACjB,MAAM,EAAE,oBAAoB;oBAC5B,IAAI,EAAE,wBAAY,CAAC,KAAK;iBAC3B,CAAC,CAAC;gBACH,MAAM,OAAO;qBACR,GAAG,CAAC,yBAAyB,KAAK,CAAC,MAAM,EAAE,CAAC;qBAC5C,IAAI,CAAC,EAAE,SAAS,EAAE,IAAA,kBAAO,EAAC,IAAI,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;qBAC5C,MAAM,CAAC,GAAG,CAAC,CAAC;gBACjB,MAAM,OAAO,EAAE,CAAC;YACpB,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IACH,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;QAC/B,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;YACzC,IAAI,CAAC,yBAAyB,EAAE,KAAK,IAAI,EAAE;gBACvC,MAAM,OAAO,GAAG,CACZ,GAAG,EACH,MAAM,EACN,EAAE,WAAW,EAAE,aAAa,EAAE,EAChC,EAAE;oBACA,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;wBAC5C,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,WAAW,CACxC,gBAAQ,CAAC,MAAM,CAClB,CAAC;wBACF,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,UAAU,CAAC;4BACtC,KAAK,EAAE,iCAAiC;4BACxC,QAAQ,EAAE,IAAI,CAAC,EAAE;yBACpB,CAAC,CAAC;wBACH,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;wBAChB,MAAM,qBAAqB,GACvB,MAAM,aAAa,CAAC,UAAU,CAAC;4BAC3B,IAAI,EAAE,qBAAqB;4BAC3B,WAAW,EAAE,0BAA0B;4BACvC,WAAW,EAAE,EAAE;4BACf,IAAI,EAAE,aAAa;yBACtB,CAAC,CAAC;wBACP,MAAM,aAAa,CAAC,mBAAmB,CACnC,qBAAqB,CAAC,EAAE,EACxB,+BAAuB,CAC1B,CAAC;wBACF,MAAM,aAAa,CAAC,aAAa,CAC7B,IAAI,CAAC,EAAE,EACP,qBAAqB,CAAC,EAAE,EACxB,SAAS,CACZ,CAAC;wBACF,IAAI,EAAE,CAAC;oBACX,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC;gBACF,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,MAAM,IAAA,oCAAsB,EACrD,MAAM,EACN,OAAO,EACP;oBACI,YAAY,EAAE;wBACV,KAAK,EAAE;4BACH,eAAe,EAAE,IAAI;yBACxB;qBACJ;iBACJ,CACJ,CAAC;gBACF,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC;oBAC5C,QAAQ,EAAE,QAAQ;oBAClB,MAAM,EAAE,qBAAqB;oBAC7B,IAAI,EAAE,wBAAY,CAAC,MAAM;iBAC5B,CAAC,CAAC;gBACH,MAAM,OAAO;qBACR,MAAM,CAAC,yBAAyB,KAAK,CAAC,MAAM,EAAE,CAAC;qBAC/C,IAAI,CAAC,EAAE,SAAS,EAAE,IAAA,kBAAO,EAAC,IAAI,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;qBAC5C,MAAM,CAAC,GAAG,CAAC,CAAC;gBACjB,MAAM,OAAO,EAAE,CAAC;YACpB,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;gBAC7C,MAAM,OAAO,GAAG,CACZ,GAAG,EACH,MAAM,EACN,EAAE,WAAW,EAAE,aAAa,EAAE,EAChC,EAAE;oBACA,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;wBAC5C,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,WAAW,CACxC,gBAAQ,CAAC,MAAM,CAClB,CAAC;wBACF,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,UAAU,CAAC;4BACtC,KAAK,EAAE,mCAAmC;4BAC1C,QAAQ,EAAE,IAAI,CAAC,EAAE;yBACpB,CAAC,CAAC;wBACH,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;wBAChB,MAAM,qBAAqB,GACvB,MAAM,aAAa,CAAC,UAAU,CAAC;4BAC3B,IAAI,EAAE,kCAAkC;4BACxC,WAAW,EAAE,gCAAgC;4BAC7C,WAAW,EAAE,EAAE;4BACf,IAAI,EAAE,aAAa;yBACtB,CAAC,CAAC;wBACP,MAAM,aAAa,CAAC,mBAAmB,CACnC,qBAAqB,CAAC,EAAE,EACxB,+BAAuB,CAC1B,CAAC;wBACF,MAAM,aAAa,CAAC,aAAa,CAC7B,IAAI,CAAC,EAAE,EACP,qBAAqB,CAAC,EAAE,EACxB,SAAS,CACZ,CAAC;wBACF,IAAI,EAAE,CAAC;oBACX,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC;gBACF,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,MAAM,IAAA,oCAAsB,EACrD,MAAM,EACN,OAAO,EACP;oBACI,YAAY,EAAE;wBACV,KAAK,EAAE;4BACH,eAAe,EAAE,IAAI;yBACxB;qBACJ;iBACJ,CACJ,CAAC;gBACF,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC;oBAC5C,QAAQ,EAAE,UAAU;oBACpB,MAAM,EAAE,uBAAuB;oBAC/B,IAAI,EAAE,wBAAY,CAAC,QAAQ;iBAC9B,CAAC,CAAC;gBACH,MAAM,OAAO;qBACR,MAAM,CAAC,yBAAyB,KAAK,CAAC,MAAM,EAAE,CAAC;qBAC/C,IAAI,CAAC,EAAE,SAAS,EAAE,IAAA,kBAAO,EAAC,IAAI,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;qBAC5C,MAAM,CAAC,GAAG,CAAC,CAAC;gBACjB,MAAM,OAAO,EAAE,CAAC;YACpB,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;gBAC1C,MAAM,OAAO,GAAG,CACZ,GAAG,EACH,MAAM,EACN,EAAE,WAAW,EAAE,aAAa,EAAE,EAChC,EAAE;oBACA,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;wBAC5C,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,WAAW,CACxC,gBAAQ,CAAC,MAAM,CAClB,CAAC;wBACF,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,UAAU,CAAC;4BACtC,KAAK,EAAE,gCAAgC;4BACvC,QAAQ,EAAE,IAAI,CAAC,EAAE;yBACpB,CAAC,CAAC;wBACH,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;wBAChB,MAAM,qBAAqB,GACvB,MAAM,aAAa,CAAC,UAAU,CAAC;4BAC3B,IAAI,EAAE,+BAA+B;4BACrC,WAAW,EAAE,6BAA6B;4BAC1C,WAAW,EAAE,EAAE;4BACf,IAAI,EAAE,aAAa;yBACtB,CAAC,CAAC;wBACP,MAAM,aAAa,CAAC,mBAAmB,CACnC,qBAAqB,CAAC,EAAE,EACxB,+BAAuB,CAC1B,CAAC;wBACF,MAAM,aAAa,CAAC,aAAa,CAC7B,IAAI,CAAC,EAAE,EACP,qBAAqB,CAAC,EAAE,EACxB,SAAS,CACZ,CAAC;wBACF,IAAI,EAAE,CAAC;oBACX,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC;gBACF,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,MAAM,IAAA,oCAAsB,EACrD,MAAM,EACN,OAAO,EACP;oBACI,YAAY,EAAE;wBACV,KAAK,EAAE;4BACH,eAAe,EAAE,IAAI;yBACxB;qBACJ;iBACJ,CACJ,CAAC;gBACF,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC;oBAC5C,QAAQ,EAAE,OAAO;oBACjB,MAAM,EAAE,oBAAoB;oBAC5B,IAAI,EAAE,wBAAY,CAAC,KAAK;iBAC3B,CAAC,CAAC;gBACH,MAAM,OAAO;qBACR,MAAM,CAAC,yBAAyB,KAAK,CAAC,MAAM,EAAE,CAAC;qBAC/C,IAAI,CAAC,EAAE,SAAS,EAAE,IAAA,kBAAO,EAAC,IAAI,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;qBAC5C,MAAM,CAAC,GAAG,CAAC,CAAC;gBACjB,MAAM,OAAO,EAAE,CAAC;YACpB,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}