@strapi/admin 4.16.2 → 4.18.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 (804) hide show
  1. package/index.d.ts +1 -1
  2. package/index.js +1 -1
  3. package/package.json +55 -41
  4. package/strapi-server.js +3 -3
  5. package/dist/_chunks/AuthenticatedApp-342bf22f.js +0 -1476
  6. package/dist/_chunks/AuthenticatedApp-342bf22f.js.map +0 -1
  7. package/dist/_chunks/AuthenticatedApp-bb31f306.mjs +0 -1450
  8. package/dist/_chunks/AuthenticatedApp-bb31f306.mjs.map +0 -1
  9. package/dist/_chunks/DragLayer-bff96835.mjs +0 -44
  10. package/dist/_chunks/DragLayer-bff96835.mjs.map +0 -1
  11. package/dist/_chunks/DragLayer-f07eee6c.js +0 -43
  12. package/dist/_chunks/DragLayer-f07eee6c.js.map +0 -1
  13. package/dist/_chunks/HomePage-0c7717c0.mjs +0 -49
  14. package/dist/_chunks/HomePage-0c7717c0.mjs.map +0 -1
  15. package/dist/_chunks/HomePage-175f79c7.js +0 -49
  16. package/dist/_chunks/HomePage-175f79c7.js.map +0 -1
  17. package/dist/_chunks/HomePage-246cc590.mjs +0 -542
  18. package/dist/_chunks/HomePage-246cc590.mjs.map +0 -1
  19. package/dist/_chunks/HomePage-6ff9e578.js +0 -563
  20. package/dist/_chunks/HomePage-6ff9e578.js.map +0 -1
  21. package/dist/_chunks/InstalledPluginsPage-170aff77.mjs +0 -134
  22. package/dist/_chunks/InstalledPluginsPage-170aff77.mjs.map +0 -1
  23. package/dist/_chunks/InstalledPluginsPage-3ae5dbb6.js +0 -153
  24. package/dist/_chunks/InstalledPluginsPage-3ae5dbb6.js.map +0 -1
  25. package/dist/_chunks/InternalErrorPage-040dc993.mjs +0 -41
  26. package/dist/_chunks/InternalErrorPage-040dc993.mjs.map +0 -1
  27. package/dist/_chunks/InternalErrorPage-d0e51ac2.js +0 -41
  28. package/dist/_chunks/InternalErrorPage-d0e51ac2.js.map +0 -1
  29. package/dist/_chunks/Layout-4b3e434a.js +0 -92
  30. package/dist/_chunks/Layout-4b3e434a.js.map +0 -1
  31. package/dist/_chunks/Layout-72fa2ace.mjs +0 -90
  32. package/dist/_chunks/Layout-72fa2ace.mjs.map +0 -1
  33. package/dist/_chunks/LimitsModal-203482b8.js +0 -84
  34. package/dist/_chunks/LimitsModal-203482b8.js.map +0 -1
  35. package/dist/_chunks/LimitsModal-da04700e.mjs +0 -82
  36. package/dist/_chunks/LimitsModal-da04700e.mjs.map +0 -1
  37. package/dist/_chunks/Login-576bbc11.js +0 -64
  38. package/dist/_chunks/Login-576bbc11.js.map +0 -1
  39. package/dist/_chunks/Login-d627bb0a.mjs +0 -62
  40. package/dist/_chunks/Login-d627bb0a.mjs.map +0 -1
  41. package/dist/_chunks/MarketplacePage-1cbfa8fd.mjs +0 -1011
  42. package/dist/_chunks/MarketplacePage-1cbfa8fd.mjs.map +0 -1
  43. package/dist/_chunks/MarketplacePage-e7cd973b.js +0 -1035
  44. package/dist/_chunks/MarketplacePage-e7cd973b.js.map +0 -1
  45. package/dist/_chunks/ProfilePage-52844daa.js +0 -665
  46. package/dist/_chunks/ProfilePage-52844daa.js.map +0 -1
  47. package/dist/_chunks/ProfilePage-ef400907.mjs +0 -642
  48. package/dist/_chunks/ProfilePage-ef400907.mjs.map +0 -1
  49. package/dist/_chunks/SSOProviders-62bfad92.mjs +0 -58
  50. package/dist/_chunks/SSOProviders-62bfad92.mjs.map +0 -1
  51. package/dist/_chunks/SSOProviders-b395a4e6.js +0 -59
  52. package/dist/_chunks/SSOProviders-b395a4e6.js.map +0 -1
  53. package/dist/_chunks/SalesPage-4a0a68fb.js +0 -51
  54. package/dist/_chunks/SalesPage-4a0a68fb.js.map +0 -1
  55. package/dist/_chunks/SalesPage-56bf9463.mjs +0 -48
  56. package/dist/_chunks/SalesPage-56bf9463.mjs.map +0 -1
  57. package/dist/_chunks/SalesPage-66f9ea32.js +0 -51
  58. package/dist/_chunks/SalesPage-66f9ea32.js.map +0 -1
  59. package/dist/_chunks/SalesPage-d0cdc1a7.js +0 -48
  60. package/dist/_chunks/SalesPage-d0cdc1a7.js.map +0 -1
  61. package/dist/_chunks/SalesPage-f9597ae7.mjs +0 -51
  62. package/dist/_chunks/SalesPage-f9597ae7.mjs.map +0 -1
  63. package/dist/_chunks/SalesPage-fceedf48.mjs +0 -51
  64. package/dist/_chunks/SalesPage-fceedf48.mjs.map +0 -1
  65. package/dist/_chunks/ar-21279f4c.js +0 -936
  66. package/dist/_chunks/ar-21279f4c.js.map +0 -1
  67. package/dist/_chunks/ar-62e5e2b3.mjs +0 -936
  68. package/dist/_chunks/ar-62e5e2b3.mjs.map +0 -1
  69. package/dist/_chunks/build-1026ce7c.mjs +0 -68
  70. package/dist/_chunks/build-1026ce7c.mjs.map +0 -1
  71. package/dist/_chunks/build-d99bcc06.js +0 -68
  72. package/dist/_chunks/build-d99bcc06.js.map +0 -1
  73. package/dist/_chunks/ca-d05fb350.js +0 -724
  74. package/dist/_chunks/ca-d05fb350.js.map +0 -1
  75. package/dist/_chunks/ca-e99de225.mjs +0 -724
  76. package/dist/_chunks/ca-e99de225.mjs.map +0 -1
  77. package/dist/_chunks/colors-c24a54f0.js +0 -33
  78. package/dist/_chunks/colors-c24a54f0.js.map +0 -1
  79. package/dist/_chunks/colors-e7489dd4.mjs +0 -34
  80. package/dist/_chunks/colors-e7489dd4.mjs.map +0 -1
  81. package/dist/_chunks/constants-2a8f4e41.mjs +0 -11
  82. package/dist/_chunks/constants-2a8f4e41.mjs.map +0 -1
  83. package/dist/_chunks/constants-40ffa931.js +0 -11
  84. package/dist/_chunks/constants-40ffa931.js.map +0 -1
  85. package/dist/_chunks/constants-4aca55b6.js +0 -85
  86. package/dist/_chunks/constants-4aca55b6.js.map +0 -1
  87. package/dist/_chunks/constants-64899732.js +0 -30
  88. package/dist/_chunks/constants-64899732.js.map +0 -1
  89. package/dist/_chunks/constants-6c68e9a0.js +0 -229
  90. package/dist/_chunks/constants-6c68e9a0.js.map +0 -1
  91. package/dist/_chunks/constants-6ecddc43.mjs +0 -111
  92. package/dist/_chunks/constants-6ecddc43.mjs.map +0 -1
  93. package/dist/_chunks/constants-74b8a935.mjs +0 -52
  94. package/dist/_chunks/constants-74b8a935.mjs.map +0 -1
  95. package/dist/_chunks/constants-7596f6f3.js +0 -132
  96. package/dist/_chunks/constants-7596f6f3.js.map +0 -1
  97. package/dist/_chunks/constants-8092eeb5.mjs +0 -59
  98. package/dist/_chunks/constants-8092eeb5.mjs.map +0 -1
  99. package/dist/_chunks/constants-85da8cc4.js +0 -58
  100. package/dist/_chunks/constants-85da8cc4.js.map +0 -1
  101. package/dist/_chunks/constants-a6fd64fc.mjs +0 -80
  102. package/dist/_chunks/constants-a6fd64fc.mjs.map +0 -1
  103. package/dist/_chunks/constants-a92ce583.mjs +0 -7
  104. package/dist/_chunks/constants-a92ce583.mjs.map +0 -1
  105. package/dist/_chunks/constants-ae0b83df.mjs +0 -227
  106. package/dist/_chunks/constants-ae0b83df.mjs.map +0 -1
  107. package/dist/_chunks/constants-c1f1f698.mjs +0 -85
  108. package/dist/_chunks/constants-c1f1f698.mjs.map +0 -1
  109. package/dist/_chunks/constants-d3dd8ed6.mjs +0 -7
  110. package/dist/_chunks/constants-d3dd8ed6.mjs.map +0 -1
  111. package/dist/_chunks/constants-d5d67ca8.js +0 -6
  112. package/dist/_chunks/constants-d5d67ca8.js.map +0 -1
  113. package/dist/_chunks/constants-da2542a3.js +0 -6
  114. package/dist/_chunks/constants-da2542a3.js.map +0 -1
  115. package/dist/_chunks/constants-ddd2d586.js +0 -82
  116. package/dist/_chunks/constants-ddd2d586.js.map +0 -1
  117. package/dist/_chunks/constants-def33545.mjs +0 -30
  118. package/dist/_chunks/constants-def33545.mjs.map +0 -1
  119. package/dist/_chunks/constants-e05f06d4.js +0 -52
  120. package/dist/_chunks/constants-e05f06d4.js.map +0 -1
  121. package/dist/_chunks/cs-2fa881a2.mjs +0 -291
  122. package/dist/_chunks/cs-2fa881a2.mjs.map +0 -1
  123. package/dist/_chunks/cs-eee75b10.js +0 -291
  124. package/dist/_chunks/cs-eee75b10.js.map +0 -1
  125. package/dist/_chunks/de-28f8bc28.mjs +0 -716
  126. package/dist/_chunks/de-28f8bc28.mjs.map +0 -1
  127. package/dist/_chunks/de-976cc986.js +0 -716
  128. package/dist/_chunks/de-976cc986.js.map +0 -1
  129. package/dist/_chunks/develop-72394876.mjs +0 -61
  130. package/dist/_chunks/develop-72394876.mjs.map +0 -1
  131. package/dist/_chunks/develop-da585b1e.js +0 -61
  132. package/dist/_chunks/develop-da585b1e.js.map +0 -1
  133. package/dist/_chunks/dk-0b759a56.mjs +0 -634
  134. package/dist/_chunks/dk-0b759a56.mjs.map +0 -1
  135. package/dist/_chunks/dk-6189917e.js +0 -634
  136. package/dist/_chunks/dk-6189917e.js.map +0 -1
  137. package/dist/_chunks/edit-29bdf5d6.js +0 -50
  138. package/dist/_chunks/edit-29bdf5d6.js.map +0 -1
  139. package/dist/_chunks/edit-923cefa0.mjs +0 -32
  140. package/dist/_chunks/edit-923cefa0.mjs.map +0 -1
  141. package/dist/_chunks/en-0e9e9327.js +0 -1022
  142. package/dist/_chunks/en-0e9e9327.js.map +0 -1
  143. package/dist/_chunks/en-e728accb.mjs +0 -1022
  144. package/dist/_chunks/en-e728accb.mjs.map +0 -1
  145. package/dist/_chunks/es-18b29db2.mjs +0 -796
  146. package/dist/_chunks/es-18b29db2.mjs.map +0 -1
  147. package/dist/_chunks/es-3ee0992a.js +0 -796
  148. package/dist/_chunks/es-3ee0992a.js.map +0 -1
  149. package/dist/_chunks/eu-8fd773c2.mjs +0 -832
  150. package/dist/_chunks/eu-8fd773c2.mjs.map +0 -1
  151. package/dist/_chunks/eu-be749f31.js +0 -832
  152. package/dist/_chunks/eu-be749f31.js.map +0 -1
  153. package/dist/_chunks/formatAPIErrors-b599cf27.js +0 -20
  154. package/dist/_chunks/formatAPIErrors-b599cf27.js.map +0 -1
  155. package/dist/_chunks/formatAPIErrors-db6ed675.mjs +0 -21
  156. package/dist/_chunks/formatAPIErrors-db6ed675.mjs.map +0 -1
  157. package/dist/_chunks/fr-29c84e1f.js +0 -762
  158. package/dist/_chunks/fr-29c84e1f.js.map +0 -1
  159. package/dist/_chunks/fr-f37df086.mjs +0 -762
  160. package/dist/_chunks/fr-f37df086.mjs.map +0 -1
  161. package/dist/_chunks/gu-377a4b46.js +0 -623
  162. package/dist/_chunks/gu-377a4b46.js.map +0 -1
  163. package/dist/_chunks/gu-69f0e13a.mjs +0 -623
  164. package/dist/_chunks/gu-69f0e13a.mjs.map +0 -1
  165. package/dist/_chunks/he-aec27352.js +0 -326
  166. package/dist/_chunks/he-aec27352.js.map +0 -1
  167. package/dist/_chunks/he-bd769d7e.mjs +0 -326
  168. package/dist/_chunks/he-bd769d7e.mjs.map +0 -1
  169. package/dist/_chunks/hi-1bdc7a46.js +0 -722
  170. package/dist/_chunks/hi-1bdc7a46.js.map +0 -1
  171. package/dist/_chunks/hi-d397a24b.mjs +0 -722
  172. package/dist/_chunks/hi-d397a24b.mjs.map +0 -1
  173. package/dist/_chunks/hu-e2c05f40.js +0 -832
  174. package/dist/_chunks/hu-e2c05f40.js.map +0 -1
  175. package/dist/_chunks/hu-eb88bd0c.mjs +0 -832
  176. package/dist/_chunks/hu-eb88bd0c.mjs.map +0 -1
  177. package/dist/_chunks/id-586df3a2.js +0 -448
  178. package/dist/_chunks/id-586df3a2.js.map +0 -1
  179. package/dist/_chunks/id-f47699e6.mjs +0 -448
  180. package/dist/_chunks/id-f47699e6.mjs.map +0 -1
  181. package/dist/_chunks/index-10a05917.mjs +0 -51
  182. package/dist/_chunks/index-10a05917.mjs.map +0 -1
  183. package/dist/_chunks/index-115d317b.mjs +0 -244
  184. package/dist/_chunks/index-115d317b.mjs.map +0 -1
  185. package/dist/_chunks/index-171715e4.js +0 -697
  186. package/dist/_chunks/index-171715e4.js.map +0 -1
  187. package/dist/_chunks/index-176cc121.mjs +0 -469
  188. package/dist/_chunks/index-176cc121.mjs.map +0 -1
  189. package/dist/_chunks/index-1bac5263.js +0 -338
  190. package/dist/_chunks/index-1bac5263.js.map +0 -1
  191. package/dist/_chunks/index-200c5a6a.js +0 -51
  192. package/dist/_chunks/index-200c5a6a.js.map +0 -1
  193. package/dist/_chunks/index-215b5421.mjs +0 -51
  194. package/dist/_chunks/index-215b5421.mjs.map +0 -1
  195. package/dist/_chunks/index-23401c29.js +0 -418
  196. package/dist/_chunks/index-23401c29.js.map +0 -1
  197. package/dist/_chunks/index-242c859c.js +0 -335
  198. package/dist/_chunks/index-242c859c.js.map +0 -1
  199. package/dist/_chunks/index-26fcb3ca.mjs +0 -1432
  200. package/dist/_chunks/index-26fcb3ca.mjs.map +0 -1
  201. package/dist/_chunks/index-28dd9303.mjs +0 -51
  202. package/dist/_chunks/index-28dd9303.mjs.map +0 -1
  203. package/dist/_chunks/index-296c14bf.mjs +0 -362
  204. package/dist/_chunks/index-296c14bf.mjs.map +0 -1
  205. package/dist/_chunks/index-2de06c32.js +0 -51
  206. package/dist/_chunks/index-2de06c32.js.map +0 -1
  207. package/dist/_chunks/index-2eb69b5d.mjs +0 -399
  208. package/dist/_chunks/index-2eb69b5d.mjs.map +0 -1
  209. package/dist/_chunks/index-2f61e3ae.js +0 -585
  210. package/dist/_chunks/index-2f61e3ae.js.map +0 -1
  211. package/dist/_chunks/index-308b73ba.mjs +0 -60
  212. package/dist/_chunks/index-308b73ba.mjs.map +0 -1
  213. package/dist/_chunks/index-34e41e15.js +0 -134
  214. package/dist/_chunks/index-34e41e15.js.map +0 -1
  215. package/dist/_chunks/index-38115cde.js +0 -66
  216. package/dist/_chunks/index-38115cde.js.map +0 -1
  217. package/dist/_chunks/index-383efae4.mjs +0 -55
  218. package/dist/_chunks/index-383efae4.mjs.map +0 -1
  219. package/dist/_chunks/index-3b426575.js +0 -47
  220. package/dist/_chunks/index-3b426575.js.map +0 -1
  221. package/dist/_chunks/index-47af1603.js +0 -253
  222. package/dist/_chunks/index-47af1603.js.map +0 -1
  223. package/dist/_chunks/index-49b7e6ff.mjs +0 -1266
  224. package/dist/_chunks/index-49b7e6ff.mjs.map +0 -1
  225. package/dist/_chunks/index-4d9b2cb9.js +0 -47
  226. package/dist/_chunks/index-4d9b2cb9.js.map +0 -1
  227. package/dist/_chunks/index-4de70b5d.js +0 -3404
  228. package/dist/_chunks/index-4de70b5d.js.map +0 -1
  229. package/dist/_chunks/index-59b1f604.js +0 -380
  230. package/dist/_chunks/index-59b1f604.js.map +0 -1
  231. package/dist/_chunks/index-5a5217e0.mjs +0 -308
  232. package/dist/_chunks/index-5a5217e0.mjs.map +0 -1
  233. package/dist/_chunks/index-5da07c41.js +0 -418
  234. package/dist/_chunks/index-5da07c41.js.map +0 -1
  235. package/dist/_chunks/index-600cb5dd.js +0 -51
  236. package/dist/_chunks/index-600cb5dd.js.map +0 -1
  237. package/dist/_chunks/index-608d8d10.mjs +0 -393
  238. package/dist/_chunks/index-608d8d10.mjs.map +0 -1
  239. package/dist/_chunks/index-74812118.mjs +0 -53
  240. package/dist/_chunks/index-74812118.mjs.map +0 -1
  241. package/dist/_chunks/index-7d578921.js +0 -847
  242. package/dist/_chunks/index-7d578921.js.map +0 -1
  243. package/dist/_chunks/index-8109fa91.mjs +0 -676
  244. package/dist/_chunks/index-8109fa91.mjs.map +0 -1
  245. package/dist/_chunks/index-82c7a120.js +0 -15401
  246. package/dist/_chunks/index-82c7a120.js.map +0 -1
  247. package/dist/_chunks/index-83d53962.js +0 -62
  248. package/dist/_chunks/index-83d53962.js.map +0 -1
  249. package/dist/_chunks/index-88298941.js +0 -54
  250. package/dist/_chunks/index-88298941.js.map +0 -1
  251. package/dist/_chunks/index-8933483b.mjs +0 -3374
  252. package/dist/_chunks/index-8933483b.mjs.map +0 -1
  253. package/dist/_chunks/index-91df57b1.mjs +0 -826
  254. package/dist/_chunks/index-91df57b1.mjs.map +0 -1
  255. package/dist/_chunks/index-973c363e.mjs +0 -63
  256. package/dist/_chunks/index-973c363e.mjs.map +0 -1
  257. package/dist/_chunks/index-989bbeec.mjs +0 -232
  258. package/dist/_chunks/index-989bbeec.mjs.map +0 -1
  259. package/dist/_chunks/index-9910dda4.js +0 -55
  260. package/dist/_chunks/index-9910dda4.js.map +0 -1
  261. package/dist/_chunks/index-9afb163a.js +0 -418
  262. package/dist/_chunks/index-9afb163a.js.map +0 -1
  263. package/dist/_chunks/index-9f61bef8.js +0 -51
  264. package/dist/_chunks/index-9f61bef8.js.map +0 -1
  265. package/dist/_chunks/index-ab31623a.mjs +0 -273
  266. package/dist/_chunks/index-ab31623a.mjs.map +0 -1
  267. package/dist/_chunks/index-ac85118a.mjs +0 -47
  268. package/dist/_chunks/index-ac85118a.mjs.map +0 -1
  269. package/dist/_chunks/index-ad8e55c0.mjs +0 -866
  270. package/dist/_chunks/index-ad8e55c0.mjs.map +0 -1
  271. package/dist/_chunks/index-aedeaf5a.js +0 -311
  272. package/dist/_chunks/index-aedeaf5a.js.map +0 -1
  273. package/dist/_chunks/index-bbac142a.js +0 -125
  274. package/dist/_chunks/index-bbac142a.js.map +0 -1
  275. package/dist/_chunks/index-bd18f803.mjs +0 -15320
  276. package/dist/_chunks/index-bd18f803.mjs.map +0 -1
  277. package/dist/_chunks/index-c8b8a2ee.mjs +0 -359
  278. package/dist/_chunks/index-c8b8a2ee.mjs.map +0 -1
  279. package/dist/_chunks/index-c97f5820.js +0 -1456
  280. package/dist/_chunks/index-c97f5820.js.map +0 -1
  281. package/dist/_chunks/index-cb6a72d2.mjs +0 -127
  282. package/dist/_chunks/index-cb6a72d2.mjs.map +0 -1
  283. package/dist/_chunks/index-cbc7c054.js +0 -266
  284. package/dist/_chunks/index-cbc7c054.js.map +0 -1
  285. package/dist/_chunks/index-ce5995cd.mjs +0 -132
  286. package/dist/_chunks/index-ce5995cd.mjs.map +0 -1
  287. package/dist/_chunks/index-d1152896.js +0 -294
  288. package/dist/_chunks/index-d1152896.js.map +0 -1
  289. package/dist/_chunks/index-d1dd825b.js +0 -365
  290. package/dist/_chunks/index-d1dd825b.js.map +0 -1
  291. package/dist/_chunks/index-d2d9df41.mjs +0 -270
  292. package/dist/_chunks/index-d2d9df41.mjs.map +0 -1
  293. package/dist/_chunks/index-d3e1fd86.js +0 -490
  294. package/dist/_chunks/index-d3e1fd86.js.map +0 -1
  295. package/dist/_chunks/index-d4517ac4.mjs +0 -582
  296. package/dist/_chunks/index-d4517ac4.mjs.map +0 -1
  297. package/dist/_chunks/index-d49fa655.js +0 -873
  298. package/dist/_chunks/index-d49fa655.js.map +0 -1
  299. package/dist/_chunks/index-d6694cab.mjs +0 -125
  300. package/dist/_chunks/index-d6694cab.mjs.map +0 -1
  301. package/dist/_chunks/index-e117c643.mjs +0 -55
  302. package/dist/_chunks/index-e117c643.mjs.map +0 -1
  303. package/dist/_chunks/index-e1b90981.mjs +0 -314
  304. package/dist/_chunks/index-e1b90981.mjs.map +0 -1
  305. package/dist/_chunks/index-e24df0bf.js +0 -403
  306. package/dist/_chunks/index-e24df0bf.js.map +0 -1
  307. package/dist/_chunks/index-e2d2f58e.mjs +0 -47
  308. package/dist/_chunks/index-e2d2f58e.mjs.map +0 -1
  309. package/dist/_chunks/index-e369d741.mjs +0 -383
  310. package/dist/_chunks/index-e369d741.mjs.map +0 -1
  311. package/dist/_chunks/index-e79b2b9e.mjs +0 -338
  312. package/dist/_chunks/index-e79b2b9e.mjs.map +0 -1
  313. package/dist/_chunks/index-ea18ff22.mjs +0 -51
  314. package/dist/_chunks/index-ea18ff22.mjs.map +0 -1
  315. package/dist/_chunks/index-eb67694f.mjs +0 -261
  316. package/dist/_chunks/index-eb67694f.mjs.map +0 -1
  317. package/dist/_chunks/index-ed3696ec.js +0 -272
  318. package/dist/_chunks/index-ed3696ec.js.map +0 -1
  319. package/dist/_chunks/index-ee1ea38b.js +0 -129
  320. package/dist/_chunks/index-ee1ea38b.js.map +0 -1
  321. package/dist/_chunks/index-efc967f5.js +0 -55
  322. package/dist/_chunks/index-efc967f5.js.map +0 -1
  323. package/dist/_chunks/index-fc700e52.js +0 -263
  324. package/dist/_chunks/index-fc700e52.js.map +0 -1
  325. package/dist/_chunks/index-fd4e5616.mjs +0 -412
  326. package/dist/_chunks/index-fd4e5616.mjs.map +0 -1
  327. package/dist/_chunks/index-ffd2f664.js +0 -1337
  328. package/dist/_chunks/index-ffd2f664.js.map +0 -1
  329. package/dist/_chunks/it-4006227c.mjs +0 -459
  330. package/dist/_chunks/it-4006227c.mjs.map +0 -1
  331. package/dist/_chunks/it-9c4295f1.js +0 -459
  332. package/dist/_chunks/it-9c4295f1.js.map +0 -1
  333. package/dist/_chunks/ja-db43ca3d.mjs +0 -633
  334. package/dist/_chunks/ja-db43ca3d.mjs.map +0 -1
  335. package/dist/_chunks/ja-eb74520f.js +0 -633
  336. package/dist/_chunks/ja-eb74520f.js.map +0 -1
  337. package/dist/_chunks/ko-18e71df4.js +0 -631
  338. package/dist/_chunks/ko-18e71df4.js.map +0 -1
  339. package/dist/_chunks/ko-a7826e25.mjs +0 -631
  340. package/dist/_chunks/ko-a7826e25.mjs.map +0 -1
  341. package/dist/_chunks/ml-90131768.mjs +0 -722
  342. package/dist/_chunks/ml-90131768.mjs.map +0 -1
  343. package/dist/_chunks/ml-c5199364.js +0 -722
  344. package/dist/_chunks/ml-c5199364.js.map +0 -1
  345. package/dist/_chunks/ms-bc514df6.js +0 -342
  346. package/dist/_chunks/ms-bc514df6.js.map +0 -1
  347. package/dist/_chunks/ms-f4f16a83.mjs +0 -342
  348. package/dist/_chunks/ms-f4f16a83.mjs.map +0 -1
  349. package/dist/_chunks/nl-887ce2c3.mjs +0 -828
  350. package/dist/_chunks/nl-887ce2c3.mjs.map +0 -1
  351. package/dist/_chunks/nl-f1aedbe2.js +0 -828
  352. package/dist/_chunks/nl-f1aedbe2.js.map +0 -1
  353. package/dist/_chunks/no-ec6c2927.js +0 -310
  354. package/dist/_chunks/no-ec6c2927.js.map +0 -1
  355. package/dist/_chunks/no-f0b02541.mjs +0 -310
  356. package/dist/_chunks/no-f0b02541.mjs.map +0 -1
  357. package/dist/_chunks/pl-9be86414.js +0 -721
  358. package/dist/_chunks/pl-9be86414.js.map +0 -1
  359. package/dist/_chunks/pl-9ccd35d9.mjs +0 -721
  360. package/dist/_chunks/pl-9ccd35d9.mjs.map +0 -1
  361. package/dist/_chunks/pt-4fcc08f1.js +0 -296
  362. package/dist/_chunks/pt-4fcc08f1.js.map +0 -1
  363. package/dist/_chunks/pt-8acb6ac1.mjs +0 -296
  364. package/dist/_chunks/pt-8acb6ac1.mjs.map +0 -1
  365. package/dist/_chunks/pt-BR-d43239e3.js +0 -794
  366. package/dist/_chunks/pt-BR-d43239e3.js.map +0 -1
  367. package/dist/_chunks/pt-BR-fd73cb13.mjs +0 -794
  368. package/dist/_chunks/pt-BR-fd73cb13.mjs.map +0 -1
  369. package/dist/_chunks/ru-9aad40c5.mjs +0 -993
  370. package/dist/_chunks/ru-9aad40c5.mjs.map +0 -1
  371. package/dist/_chunks/ru-c0293425.js +0 -993
  372. package/dist/_chunks/ru-c0293425.js.map +0 -1
  373. package/dist/_chunks/sa-6bf4c20e.mjs +0 -722
  374. package/dist/_chunks/sa-6bf4c20e.mjs.map +0 -1
  375. package/dist/_chunks/sa-8ffb7ca7.js +0 -722
  376. package/dist/_chunks/sa-8ffb7ca7.js.map +0 -1
  377. package/dist/_chunks/schema-260fec28.js +0 -514
  378. package/dist/_chunks/schema-260fec28.js.map +0 -1
  379. package/dist/_chunks/schema-6bd8bd85.mjs +0 -490
  380. package/dist/_chunks/schema-6bd8bd85.mjs.map +0 -1
  381. package/dist/_chunks/sk-58d31b17.mjs +0 -690
  382. package/dist/_chunks/sk-58d31b17.mjs.map +0 -1
  383. package/dist/_chunks/sk-a9308737.js +0 -690
  384. package/dist/_chunks/sk-a9308737.js.map +0 -1
  385. package/dist/_chunks/sv-0f5ffd1e.js +0 -827
  386. package/dist/_chunks/sv-0f5ffd1e.js.map +0 -1
  387. package/dist/_chunks/sv-d80ad633.mjs +0 -827
  388. package/dist/_chunks/sv-d80ad633.mjs.map +0 -1
  389. package/dist/_chunks/th-a53bbf7a.js +0 -430
  390. package/dist/_chunks/th-a53bbf7a.js.map +0 -1
  391. package/dist/_chunks/th-e72c6a22.mjs +0 -430
  392. package/dist/_chunks/th-e72c6a22.mjs.map +0 -1
  393. package/dist/_chunks/tr-b84a68b0.js +0 -785
  394. package/dist/_chunks/tr-b84a68b0.js.map +0 -1
  395. package/dist/_chunks/tr-e35ecfe8.mjs +0 -785
  396. package/dist/_chunks/tr-e35ecfe8.mjs.map +0 -1
  397. package/dist/_chunks/uk-de367ec1.mjs +0 -343
  398. package/dist/_chunks/uk-de367ec1.mjs.map +0 -1
  399. package/dist/_chunks/uk-e5226227.js +0 -343
  400. package/dist/_chunks/uk-e5226227.js.map +0 -1
  401. package/dist/_chunks/useAdminRolePermissions-603a2709.mjs +0 -2322
  402. package/dist/_chunks/useAdminRolePermissions-603a2709.mjs.map +0 -1
  403. package/dist/_chunks/useAdminRolePermissions-cb1a3ee2.js +0 -2337
  404. package/dist/_chunks/useAdminRolePermissions-cb1a3ee2.js.map +0 -1
  405. package/dist/_chunks/useAdminRoles-68d5d608.js +0 -62
  406. package/dist/_chunks/useAdminRoles-68d5d608.js.map +0 -1
  407. package/dist/_chunks/useAdminRoles-7ab5d521.mjs +0 -44
  408. package/dist/_chunks/useAdminRoles-7ab5d521.mjs.map +0 -1
  409. package/dist/_chunks/useAdminUsers-05d6b26a.js +0 -61
  410. package/dist/_chunks/useAdminUsers-05d6b26a.js.map +0 -1
  411. package/dist/_chunks/useAdminUsers-09f86a58.mjs +0 -43
  412. package/dist/_chunks/useAdminUsers-09f86a58.mjs.map +0 -1
  413. package/dist/_chunks/useContentTypes-53b449bb.mjs +0 -67
  414. package/dist/_chunks/useContentTypes-53b449bb.mjs.map +0 -1
  415. package/dist/_chunks/useContentTypes-7da293cc.js +0 -85
  416. package/dist/_chunks/useContentTypes-7da293cc.js.map +0 -1
  417. package/dist/_chunks/useDebounce-4712871e.js +0 -35
  418. package/dist/_chunks/useDebounce-4712871e.js.map +0 -1
  419. package/dist/_chunks/useDebounce-9364f340.mjs +0 -17
  420. package/dist/_chunks/useDebounce-9364f340.mjs.map +0 -1
  421. package/dist/_chunks/useLicenseLimitNotification-1fd756fa.mjs +0 -80
  422. package/dist/_chunks/useLicenseLimitNotification-1fd756fa.mjs.map +0 -1
  423. package/dist/_chunks/useLicenseLimitNotification-8a4d7fc1.js +0 -100
  424. package/dist/_chunks/useLicenseLimitNotification-8a4d7fc1.js.map +0 -1
  425. package/dist/_chunks/useLicenseLimits-13a102d3.mjs +0 -31
  426. package/dist/_chunks/useLicenseLimits-13a102d3.mjs.map +0 -1
  427. package/dist/_chunks/useLicenseLimits-81ef3cce.js +0 -49
  428. package/dist/_chunks/useLicenseLimits-81ef3cce.js.map +0 -1
  429. package/dist/_chunks/useReviewWorkflows-799e0305.js +0 -59
  430. package/dist/_chunks/useReviewWorkflows-799e0305.js.map +0 -1
  431. package/dist/_chunks/useReviewWorkflows-9e6b8986.mjs +0 -41
  432. package/dist/_chunks/useReviewWorkflows-9e6b8986.mjs.map +0 -1
  433. package/dist/_chunks/validateWorkflow-5693ea2d.js +0 -1124
  434. package/dist/_chunks/validateWorkflow-5693ea2d.js.map +0 -1
  435. package/dist/_chunks/validateWorkflow-7a2b6ab8.mjs +0 -1101
  436. package/dist/_chunks/validateWorkflow-7a2b6ab8.mjs.map +0 -1
  437. package/dist/_chunks/vi-096bccbb.mjs +0 -298
  438. package/dist/_chunks/vi-096bccbb.mjs.map +0 -1
  439. package/dist/_chunks/vi-c5fabb75.js +0 -298
  440. package/dist/_chunks/vi-c5fabb75.js.map +0 -1
  441. package/dist/_chunks/zh-24f618cb.js +0 -836
  442. package/dist/_chunks/zh-24f618cb.js.map +0 -1
  443. package/dist/_chunks/zh-Hans-35d2c374.js +0 -957
  444. package/dist/_chunks/zh-Hans-35d2c374.js.map +0 -1
  445. package/dist/_chunks/zh-Hans-ccf4be4b.mjs +0 -957
  446. package/dist/_chunks/zh-Hans-ccf4be4b.mjs.map +0 -1
  447. package/dist/_chunks/zh-ba29b2e1.mjs +0 -836
  448. package/dist/_chunks/zh-ba29b2e1.mjs.map +0 -1
  449. package/dist/admin/index.js +0 -34
  450. package/dist/admin/index.js.map +0 -1
  451. package/dist/admin/index.mjs +0 -34
  452. package/dist/admin/index.mjs.map +0 -1
  453. package/dist/admin/src/App.d.ts +0 -6
  454. package/dist/admin/src/StrapiApp.d.ts +0 -140
  455. package/dist/admin/src/components/AuthenticatedApp.d.ts +0 -2
  456. package/dist/admin/src/components/ConfigurationProvider.d.ts +0 -11
  457. package/dist/admin/src/components/DefaultDocument.d.ts +0 -5
  458. package/dist/admin/src/components/DragLayer.d.ts +0 -10
  459. package/dist/admin/src/components/GuidedTour/Homepage.d.ts +0 -2
  460. package/dist/admin/src/components/GuidedTour/Modal.d.ts +0 -2
  461. package/dist/admin/src/components/GuidedTour/Ornaments.d.ts +0 -13
  462. package/dist/admin/src/components/GuidedTour/Provider.d.ts +0 -6
  463. package/dist/admin/src/components/GuidedTour/constants.d.ts +0 -165
  464. package/dist/admin/src/components/LanguageProvider.d.ts +0 -19
  465. package/dist/admin/src/components/LeftMenu.d.ts +0 -5
  466. package/dist/admin/src/components/NoJavascript.d.ts +0 -7
  467. package/dist/admin/src/components/NpsSurvey.d.ts +0 -17
  468. package/dist/admin/src/components/Onboarding.d.ts +0 -2
  469. package/dist/admin/src/components/PluginsInitializer.d.ts +0 -5
  470. package/dist/admin/src/components/PrivateRoute.d.ts +0 -8
  471. package/dist/admin/src/components/Providers.d.ts +0 -13
  472. package/dist/admin/src/components/RBACProvider.d.ts +0 -27
  473. package/dist/admin/src/components/Theme.d.ts +0 -6
  474. package/dist/admin/src/components/ThemeToggleProvider.d.ts +0 -12
  475. package/dist/admin/src/components/UnauthenticatedLogo.d.ts +0 -2
  476. package/dist/admin/src/constants.d.ts +0 -195
  477. package/dist/admin/src/content-manager/components/BlocksInput/BlocksContent.d.ts +0 -5
  478. package/dist/admin/src/content-manager/components/BlocksInput/BlocksEditor.d.ts +0 -34
  479. package/dist/admin/src/content-manager/components/BlocksInput/BlocksInput.d.ts +0 -18
  480. package/dist/admin/src/content-manager/components/BlocksInput/BlocksToolbar.d.ts +0 -2
  481. package/dist/admin/src/content-manager/components/BlocksInput/hooks/useBlocksStore.d.ts +0 -32
  482. package/dist/admin/src/content-manager/components/BlocksInput/hooks/useModifiersStore.d.ts +0 -20
  483. package/dist/admin/src/content-manager/components/BlocksInput/plugins/withLinks.d.ts +0 -8
  484. package/dist/admin/src/content-manager/components/BlocksInput/plugins/withStrapiSchema.d.ts +0 -8
  485. package/dist/admin/src/content-manager/components/BlocksInput/tests/mock-schema.d.ts +0 -2
  486. package/dist/admin/src/content-manager/components/BlocksInput/utils/links.d.ts +0 -10
  487. package/dist/admin/src/content-manager/components/BlocksInput/utils/types.d.ts +0 -6
  488. package/dist/admin/src/contexts/admin.d.ts +0 -14
  489. package/dist/admin/src/contexts/apiTokenPermissions.d.ts +0 -36
  490. package/dist/admin/src/contexts/configuration.d.ts +0 -27
  491. package/dist/admin/src/contexts/themeToggle.d.ts +0 -22
  492. package/dist/admin/src/core/apis/Components.d.ts +0 -10
  493. package/dist/admin/src/core/apis/CustomFields.d.ts +0 -8
  494. package/dist/admin/src/core/apis/Fields.d.ts +0 -10
  495. package/dist/admin/src/core/apis/Middlewares.d.ts +0 -9
  496. package/dist/admin/src/core/apis/Plugin.d.ts +0 -19
  497. package/dist/admin/src/core/apis/Reducers.d.ts +0 -10
  498. package/dist/admin/src/core/store/configure.d.ts +0 -29
  499. package/dist/admin/src/core/store/hooks.d.ts +0 -37
  500. package/dist/admin/src/core/utils/basename.d.ts +0 -1
  501. package/dist/admin/src/core/utils/createHook.d.ts +0 -10
  502. package/dist/admin/src/hooks/__mocks__/useAdminUsers.d.ts +0 -2
  503. package/dist/admin/src/hooks/__mocks__/useContentTypes.d.ts +0 -2
  504. package/dist/admin/src/hooks/__mocks__/useSettingsMenu.d.ts +0 -2
  505. package/dist/admin/src/hooks/useAdminRoles.d.ts +0 -13
  506. package/dist/admin/src/hooks/useAdminUsers.d.ts +0 -19
  507. package/dist/admin/src/hooks/useContentTypes.d.ts +0 -7
  508. package/dist/admin/src/hooks/useDebounce.d.ts +0 -1
  509. package/dist/admin/src/hooks/useEnterprise.d.ts +0 -8
  510. package/dist/admin/src/hooks/useInjectReducer.d.ts +0 -10
  511. package/dist/admin/src/hooks/useLicenseLimitNotification.d.ts +0 -1
  512. package/dist/admin/src/hooks/useMenu.d.ts +0 -9
  513. package/dist/admin/src/hooks/useSettingsMenu.d.ts +0 -24
  514. package/dist/admin/src/index.d.ts +0 -3
  515. package/dist/admin/src/layouts/AppLayout.d.ts +0 -7
  516. package/dist/admin/src/layouts/UnauthenticatedLayout.d.ts +0 -11
  517. package/dist/admin/src/pages/Admin.d.ts +0 -7
  518. package/dist/admin/src/pages/Auth/AuthPage.d.ts +0 -6
  519. package/dist/admin/src/pages/Auth/components/FieldActionWrapper.d.ts +0 -3
  520. package/dist/admin/src/pages/Auth/components/ForgotPassword.d.ts +0 -3
  521. package/dist/admin/src/pages/Auth/components/ForgotPasswordSuccess.d.ts +0 -2
  522. package/dist/admin/src/pages/Auth/components/Login.d.ts +0 -8
  523. package/dist/admin/src/pages/Auth/components/Oops.d.ts +0 -2
  524. package/dist/admin/src/pages/Auth/components/Register.d.ts +0 -7
  525. package/dist/admin/src/pages/Auth/components/ResetPassword.d.ts +0 -3
  526. package/dist/admin/src/pages/Auth/constants.d.ts +0 -14
  527. package/dist/admin/src/pages/HomePage.d.ts +0 -3
  528. package/dist/admin/src/pages/InstalledPluginsPage.d.ts +0 -3
  529. package/dist/admin/src/pages/InternalErrorPage.d.ts +0 -7
  530. package/dist/admin/src/pages/Marketplace/MarketplacePage.d.ts +0 -19
  531. package/dist/admin/src/pages/Marketplace/components/NpmPackageCard.d.ts +0 -13
  532. package/dist/admin/src/pages/Marketplace/components/NpmPackagesFilters.d.ts +0 -13
  533. package/dist/admin/src/pages/Marketplace/components/NpmPackagesGrid.d.ts +0 -13
  534. package/dist/admin/src/pages/Marketplace/components/OfflineLayout.d.ts +0 -2
  535. package/dist/admin/src/pages/Marketplace/components/PageHeader.d.ts +0 -8
  536. package/dist/admin/src/pages/Marketplace/components/SortSelect.d.ts +0 -51
  537. package/dist/admin/src/pages/Marketplace/hooks/__mocks__/useNavigatorOnline.d.ts +0 -1
  538. package/dist/admin/src/pages/Marketplace/hooks/useMarketplaceData.d.ts +0 -92
  539. package/dist/admin/src/pages/Marketplace/hooks/useNavigatorOnline.d.ts +0 -5
  540. package/dist/admin/src/pages/NotFoundPage.d.ts +0 -1
  541. package/dist/admin/src/pages/ProfilePage.d.ts +0 -2
  542. package/dist/admin/src/pages/SettingsPage/hooks/useRegenerate.d.ts +0 -4
  543. package/dist/admin/src/pages/SettingsPage/pages/Roles/EditPage/hooks/usePermissionsDataManager.d.ts +0 -24
  544. package/dist/admin/src/pages/SettingsPage/pages/Roles/hooks/__mocks__/useAdminRolePermissions.d.ts +0 -2
  545. package/dist/admin/src/pages/SettingsPage/pages/Roles/hooks/useAdminRolePermissions.d.ts +0 -11
  546. package/dist/admin/src/pages/SettingsPage/utils/makeUniqueRoutes.d.ts +0 -6
  547. package/dist/admin/src/pages/UseCasePage.d.ts +0 -8
  548. package/dist/admin/src/reducer.d.ts +0 -21
  549. package/dist/admin/src/render.d.ts +0 -10
  550. package/dist/admin/src/selectors.d.ts +0 -21
  551. package/dist/admin/src/shared/components/InjectionZone.d.ts +0 -53
  552. package/dist/admin/src/shared/hooks/__mocks__/useInjectionZone.d.ts +0 -1
  553. package/dist/admin/src/shared/hooks/useInjectionZone.d.ts +0 -2
  554. package/dist/admin/src/translations/languageNativeNames.d.ts +0 -36
  555. package/dist/admin/src/types/permissions.d.ts +0 -17
  556. package/dist/admin/src/utils/createRoute.d.ts +0 -6
  557. package/dist/admin/src/utils/formatAPIErrors.d.ts +0 -6
  558. package/dist/admin/src/utils/getFullName.d.ts +0 -1
  559. package/dist/admin/src/utils/hashAdminUserEmail.d.ts +0 -6
  560. package/dist/cli.js +0 -48
  561. package/dist/cli.js.map +0 -1
  562. package/dist/cli.mjs +0 -48
  563. package/dist/cli.mjs.map +0 -1
  564. package/dist/ee/admin/src/constants.d.ts +0 -55
  565. package/dist/ee/admin/src/hooks/useLicenseLimitNotification.d.ts +0 -1
  566. package/dist/ee/admin/src/pages/AuthPage/components/Login.d.ts +0 -3
  567. package/dist/ee/admin/src/pages/AuthPage/components/Providers.d.ts +0 -2
  568. package/dist/ee/admin/src/pages/AuthPage/components/SSOProviders.d.ts +0 -8
  569. package/dist/ee/admin/src/pages/AuthPage/constants.d.ts +0 -3
  570. package/dist/ee/admin/src/pages/AuthResponse.d.ts +0 -2
  571. package/dist/ee/admin/src/pages/HomePage.d.ts +0 -1
  572. package/dist/shared/contracts/admin.d.ts +0 -23
  573. package/dist/shared/contracts/authentication.d.ts +0 -126
  574. package/dist/shared/contracts/providers.d.ts +0 -34
  575. package/dist/shared/contracts/roles.d.ts +0 -52
  576. package/dist/shared/contracts/shared.d.ts +0 -39
  577. package/dist/shared/contracts/user.d.ts +0 -40
  578. package/dist/shared/contracts/users.d.ts +0 -52
  579. package/dist/shared/schema.d.ts +0 -7
  580. package/ee/server/bootstrap.js +0 -41
  581. package/ee/server/config/admin-actions.js +0 -72
  582. package/ee/server/constants/default-stages.json +0 -18
  583. package/ee/server/constants/default-workflow.json +0 -3
  584. package/ee/server/constants/webhookEvents.js +0 -5
  585. package/ee/server/constants/workflows.js +0 -33
  586. package/ee/server/content-types/index.js +0 -9
  587. package/ee/server/content-types/workflow/index.js +0 -41
  588. package/ee/server/content-types/workflow-stage/index.js +0 -51
  589. package/ee/server/controllers/__tests__/stages.test.js +0 -174
  590. package/ee/server/controllers/admin.js +0 -50
  591. package/ee/server/controllers/audit-logs.js +0 -24
  592. package/ee/server/controllers/authentication/constants.js +0 -11
  593. package/ee/server/controllers/authentication/index.js +0 -11
  594. package/ee/server/controllers/authentication/middlewares.js +0 -117
  595. package/ee/server/controllers/authentication/utils.js +0 -23
  596. package/ee/server/controllers/authentication.js +0 -64
  597. package/ee/server/controllers/index.js +0 -12
  598. package/ee/server/controllers/role.js +0 -64
  599. package/ee/server/controllers/user.js +0 -110
  600. package/ee/server/controllers/workflows/assignees/index.js +0 -44
  601. package/ee/server/controllers/workflows/index.js +0 -188
  602. package/ee/server/controllers/workflows/stages/index.js +0 -189
  603. package/ee/server/destroy.js +0 -12
  604. package/ee/server/index.js +0 -11
  605. package/ee/server/middlewares/__tests__/review-workflows.test.js +0 -40
  606. package/ee/server/middlewares/review-workflows.js +0 -40
  607. package/ee/server/migrations/audit-logs-table.js +0 -45
  608. package/ee/server/migrations/review-workflows-content-types.js +0 -29
  609. package/ee/server/migrations/review-workflows-deleted-ct-in-workflows.js +0 -39
  610. package/ee/server/migrations/review-workflows-stage-attribute.js +0 -49
  611. package/ee/server/migrations/review-workflows-stages-color.js +0 -20
  612. package/ee/server/migrations/review-workflows-stages-roles.js +0 -68
  613. package/ee/server/migrations/review-workflows-workflow-name.js +0 -28
  614. package/ee/server/register.js +0 -40
  615. package/ee/server/routes/audit-logs.js +0 -43
  616. package/ee/server/routes/index.js +0 -8
  617. package/ee/server/routes/license-limit.js +0 -29
  618. package/ee/server/routes/review-workflows.js +0 -164
  619. package/ee/server/routes/sso.js +0 -69
  620. package/ee/server/routes/utils.js +0 -15
  621. package/ee/server/services/__tests__/assignees.test.js +0 -76
  622. package/ee/server/services/__tests__/audit-logs.test.js +0 -300
  623. package/ee/server/services/__tests__/passport.test.js +0 -95
  624. package/ee/server/services/__tests__/review-workflows-validation.test.js +0 -100
  625. package/ee/server/services/__tests__/review-workflows.test.js +0 -163
  626. package/ee/server/services/__tests__/sso.test.js +0 -117
  627. package/ee/server/services/__tests__/stages.test.js +0 -275
  628. package/ee/server/services/__tests__/workflows.test.js +0 -203
  629. package/ee/server/services/audit-logs.js +0 -236
  630. package/ee/server/services/auth.js +0 -75
  631. package/ee/server/services/index.js +0 -18
  632. package/ee/server/services/passport/provider-registry.js +0 -27
  633. package/ee/server/services/passport/sso.js +0 -37
  634. package/ee/server/services/passport.js +0 -46
  635. package/ee/server/services/review-workflows/__tests__/entity-service-decorator.test.js +0 -211
  636. package/ee/server/services/review-workflows/assignees.js +0 -54
  637. package/ee/server/services/review-workflows/entity-service-decorator.js +0 -101
  638. package/ee/server/services/review-workflows/metrics/__tests__/weekly-metrics.test.js +0 -65
  639. package/ee/server/services/review-workflows/metrics/index.js +0 -56
  640. package/ee/server/services/review-workflows/metrics/weekly-metrics.js +0 -76
  641. package/ee/server/services/review-workflows/review-workflows.js +0 -133
  642. package/ee/server/services/review-workflows/stage-permissions.js +0 -60
  643. package/ee/server/services/review-workflows/stages.js +0 -384
  644. package/ee/server/services/review-workflows/validation.js +0 -68
  645. package/ee/server/services/review-workflows/workflows/__tests__/content-types.test.js +0 -146
  646. package/ee/server/services/review-workflows/workflows/content-types.js +0 -89
  647. package/ee/server/services/review-workflows/workflows/index.js +0 -237
  648. package/ee/server/services/role.js +0 -24
  649. package/ee/server/services/seat-enforcement.js +0 -114
  650. package/ee/server/services/user.js +0 -234
  651. package/ee/server/utils/__tests__/persisted-tables.test.js +0 -38
  652. package/ee/server/utils/__tests__/sso-lock.test.js +0 -84
  653. package/ee/server/utils/index.js +0 -8
  654. package/ee/server/utils/persisted-tables.js +0 -139
  655. package/ee/server/utils/review-workflows.js +0 -39
  656. package/ee/server/utils/sso-lock.js +0 -42
  657. package/ee/server/validation/audit-logs.js +0 -18
  658. package/ee/server/validation/authentication.js +0 -36
  659. package/ee/server/validation/review-workflows.js +0 -92
  660. package/ee/server/validation/role.js +0 -68
  661. package/ee/server/validation/user.js +0 -27
  662. package/ee/strapi-server.js +0 -3
  663. package/server/bootstrap.js +0 -101
  664. package/server/config/admin-actions.js +0 -216
  665. package/server/config/admin-conditions.js +0 -26
  666. package/server/config/email-templates/forgot-password.js +0 -25
  667. package/server/config/index.js +0 -9
  668. package/server/config/settings.js +0 -9
  669. package/server/content-types/Permission.js +0 -64
  670. package/server/content-types/Role.js +0 -59
  671. package/server/content-types/User.js +0 -112
  672. package/server/content-types/api-token-permission.js +0 -36
  673. package/server/content-types/api-token.js +0 -76
  674. package/server/content-types/index.js +0 -11
  675. package/server/content-types/transfer-token-permission.js +0 -36
  676. package/server/content-types/transfer-token.js +0 -66
  677. package/server/controllers/__tests__/admin.test.js +0 -106
  678. package/server/controllers/__tests__/api-token.test.js +0 -496
  679. package/server/controllers/__tests__/content-api.test.js +0 -173
  680. package/server/controllers/__tests__/permission.test.js +0 -200
  681. package/server/controllers/__tests__/role.test.js +0 -201
  682. package/server/controllers/__tests__/transfer/token.test.js +0 -520
  683. package/server/controllers/__tests__/user.test.js +0 -326
  684. package/server/controllers/admin.js +0 -151
  685. package/server/controllers/api-token.js +0 -135
  686. package/server/controllers/authenticated-user.js +0 -52
  687. package/server/controllers/authentication.js +0 -172
  688. package/server/controllers/content-api.js +0 -15
  689. package/server/controllers/formatters/conditions.js +0 -12
  690. package/server/controllers/formatters/format-actions-by-sections.js +0 -40
  691. package/server/controllers/formatters/index.js +0 -9
  692. package/server/controllers/index.js +0 -14
  693. package/server/controllers/permission.js +0 -45
  694. package/server/controllers/role.js +0 -198
  695. package/server/controllers/transfer/index.js +0 -13
  696. package/server/controllers/transfer/runner.js +0 -28
  697. package/server/controllers/transfer/token.js +0 -131
  698. package/server/controllers/user.js +0 -141
  699. package/server/controllers/webhooks.js +0 -132
  700. package/server/destroy.js +0 -10
  701. package/server/domain/action/__tests__/action-domain.test.js +0 -230
  702. package/server/domain/action/__tests__/action-provider.test.js +0 -376
  703. package/server/domain/action/index.js +0 -142
  704. package/server/domain/action/provider.js +0 -83
  705. package/server/domain/condition/__tests__/condition-domain.test.js +0 -122
  706. package/server/domain/condition/__tests__/condition-provider.test.js +0 -156
  707. package/server/domain/condition/index.js +0 -92
  708. package/server/domain/condition/provider.js +0 -42
  709. package/server/domain/permission/__tests__/permission-domain.test.js +0 -285
  710. package/server/domain/permission/index.js +0 -156
  711. package/server/domain/user.js +0 -28
  712. package/server/index.js +0 -26
  713. package/server/middlewares/data-transfer.js +0 -29
  714. package/server/middlewares/index.js +0 -8
  715. package/server/middlewares/rateLimit.js +0 -47
  716. package/server/policies/hasPermissions.js +0 -38
  717. package/server/policies/index.js +0 -7
  718. package/server/policies/isAuthenticatedAdmin.js +0 -5
  719. package/server/policies/isTelemetryEnabled.js +0 -16
  720. package/server/register.js +0 -19
  721. package/server/routes/admin.js +0 -71
  722. package/server/routes/api-tokens.js +0 -70
  723. package/server/routes/authentication.js +0 -57
  724. package/server/routes/content-api.js +0 -20
  725. package/server/routes/index.js +0 -28
  726. package/server/routes/permissions.js +0 -20
  727. package/server/routes/roles.js +0 -107
  728. package/server/routes/serve-admin-panel.js +0 -71
  729. package/server/routes/transfer.js +0 -102
  730. package/server/routes/users.js +0 -88
  731. package/server/routes/webhooks.js +0 -81
  732. package/server/services/__tests__/action.test.js +0 -98
  733. package/server/services/__tests__/api-token.test.js +0 -980
  734. package/server/services/__tests__/auth.test.js +0 -319
  735. package/server/services/__tests__/content-type.test.js +0 -405
  736. package/server/services/__tests__/metrics.test.js +0 -65
  737. package/server/services/__tests__/passport.test.js +0 -90
  738. package/server/services/__tests__/permission.test.js +0 -177
  739. package/server/services/__tests__/permissions-manager-sanitize.test.js +0 -117
  740. package/server/services/__tests__/permissions-manager-validate.test.js +0 -119
  741. package/server/services/__tests__/permissions-manager.test.js +0 -318
  742. package/server/services/__tests__/permissions.section-builder.section.test.js +0 -136
  743. package/server/services/__tests__/project-settings.test.js +0 -397
  744. package/server/services/__tests__/role.test.js +0 -970
  745. package/server/services/__tests__/token.test.js +0 -217
  746. package/server/services/__tests__/transfer/token.test.js +0 -878
  747. package/server/services/__tests__/user.test.js +0 -786
  748. package/server/services/action.js +0 -35
  749. package/server/services/api-token.js +0 -453
  750. package/server/services/auth.js +0 -117
  751. package/server/services/condition.js +0 -14
  752. package/server/services/constants.js +0 -37
  753. package/server/services/content-type.js +0 -208
  754. package/server/services/index.js +0 -18
  755. package/server/services/metrics.js +0 -44
  756. package/server/services/passport/local-strategy.js +0 -28
  757. package/server/services/passport.js +0 -45
  758. package/server/services/permission/engine.js +0 -85
  759. package/server/services/permission/permissions-manager/index.js +0 -53
  760. package/server/services/permission/permissions-manager/query-builders.js +0 -72
  761. package/server/services/permission/permissions-manager/sanitize.js +0 -286
  762. package/server/services/permission/permissions-manager/validate.js +0 -218
  763. package/server/services/permission/queries.js +0 -190
  764. package/server/services/permission/sections-builder/builder.js +0 -84
  765. package/server/services/permission/sections-builder/handlers.js +0 -156
  766. package/server/services/permission/sections-builder/index.js +0 -50
  767. package/server/services/permission/sections-builder/section.js +0 -71
  768. package/server/services/permission/sections-builder/utils.js +0 -26
  769. package/server/services/permission.js +0 -33
  770. package/server/services/project-settings.js +0 -174
  771. package/server/services/role.js +0 -471
  772. package/server/services/token.js +0 -70
  773. package/server/services/transfer/index.js +0 -7
  774. package/server/services/transfer/permission.js +0 -22
  775. package/server/services/transfer/token.js +0 -449
  776. package/server/services/transfer/utils.js +0 -38
  777. package/server/services/user.js +0 -363
  778. package/server/strategies/__tests__/admin.test.js +0 -118
  779. package/server/strategies/__tests__/api-token.test.js +0 -364
  780. package/server/strategies/admin.js +0 -52
  781. package/server/strategies/api-token.js +0 -140
  782. package/server/strategies/data-transfer.js +0 -113
  783. package/server/strategies/index.js +0 -26
  784. package/server/utils/index.d.ts +0 -25
  785. package/server/utils/index.js +0 -9
  786. package/server/validation/__tests__/common-functions.test.js +0 -54
  787. package/server/validation/action-provider.js +0 -67
  788. package/server/validation/api-tokens.js +0 -32
  789. package/server/validation/authentication/forgot-password.js +0 -14
  790. package/server/validation/authentication/index.js +0 -19
  791. package/server/validation/authentication/register.js +0 -45
  792. package/server/validation/authentication/renew-token.js +0 -7
  793. package/server/validation/authentication/reset-password.js +0 -15
  794. package/server/validation/common-functions/check-fields-are-correctly-nested.js +0 -28
  795. package/server/validation/common-functions/check-fields-dont-have-duplicates.js +0 -17
  796. package/server/validation/common-functions/index.js +0 -9
  797. package/server/validation/common-validators.js +0 -209
  798. package/server/validation/permission.js +0 -53
  799. package/server/validation/policies/hasPermissions.js +0 -27
  800. package/server/validation/project-settings.js +0 -48
  801. package/server/validation/role.js +0 -59
  802. package/server/validation/transfer/index.js +0 -5
  803. package/server/validation/transfer/token.js +0 -42
  804. package/server/validation/user.js +0 -65
@@ -1 +0,0 @@
1
- {"version":3,"file":"useAdminRolePermissions-603a2709.mjs","sources":["../../admin/src/pages/SettingsPage/pages/Roles/EditPage/hooks/usePermissionsDataManager.ts","../../admin/src/pages/SettingsPage/pages/Roles/EditPage/components/ConditionsButton/index.js","../../admin/src/pages/SettingsPage/pages/Roles/EditPage/components/ConditionsModal/ActionRow/utils/options.js","../../admin/src/pages/SettingsPage/pages/Roles/EditPage/components/ConditionsModal/ActionRow/index.js","../../admin/src/pages/SettingsPage/pages/Roles/EditPage/components/ConditionsModal/utils/createDefaultConditionsForm.js","../../admin/src/pages/SettingsPage/pages/Roles/EditPage/components/ConditionsModal/index.js","../../admin/src/pages/SettingsPage/pages/Roles/EditPage/components/Permissions/utils/constants.js","../../admin/src/pages/SettingsPage/pages/Roles/EditPage/components/HiddenAction/index.js","../../admin/src/pages/SettingsPage/pages/Roles/EditPage/components/CollapseLabel/index.js","../../admin/src/pages/SettingsPage/pages/Roles/EditPage/components/RowLabelWithCheckbox/index.js","../../admin/src/pages/SettingsPage/pages/Roles/EditPage/components/utils/createArrayOfValues.js","../../admin/src/pages/SettingsPage/pages/Roles/EditPage/components/utils/removeConditionKeyFromData.js","../../admin/src/pages/SettingsPage/pages/Roles/EditPage/components/utils/getCheckboxState.js","../../admin/src/pages/SettingsPage/pages/Roles/EditPage/components/ContentTypeCollapse/CollapsePropertyMatrix/CarretIcon/index.js","../../admin/src/pages/SettingsPage/pages/Roles/EditPage/components/ContentTypeCollapse/utils/activeStyle.js","../../admin/src/pages/SettingsPage/pages/Roles/EditPage/components/ContentTypeCollapse/Collapse/utils/generateCheckboxesActions.js","../../admin/src/pages/SettingsPage/pages/Roles/EditPage/components/ContentTypeCollapse/Collapse/index.js","../../admin/src/pages/SettingsPage/pages/Roles/EditPage/components/RequiredSign/index.js","../../admin/src/pages/SettingsPage/pages/Roles/EditPage/components/ContentTypeCollapse/utils/getAvailableActions.js","../../admin/src/pages/SettingsPage/pages/Roles/EditPage/components/Curve/index.js","../../admin/src/pages/SettingsPage/pages/Roles/EditPage/components/ContentTypeCollapse/CollapsePropertyMatrix/SubActionRow/index.js","../../admin/src/pages/SettingsPage/pages/Roles/EditPage/components/ContentTypeCollapse/CollapsePropertyMatrix/ActionRow/utils/getRowLabelCheckboxeState.js","../../admin/src/pages/SettingsPage/pages/Roles/EditPage/components/ContentTypeCollapse/CollapsePropertyMatrix/ActionRow/index.js","../../admin/src/pages/SettingsPage/pages/Roles/EditPage/components/ContentTypeCollapse/CollapsePropertyMatrix/Header/index.js","../../admin/src/pages/SettingsPage/pages/Roles/EditPage/components/ContentTypeCollapse/CollapsePropertyMatrix/utils/generateHeadersFromActions.js","../../admin/src/pages/SettingsPage/pages/Roles/EditPage/components/ContentTypeCollapse/CollapsePropertyMatrix/index.js","../../admin/src/pages/SettingsPage/pages/Roles/EditPage/components/ContentTypeCollapse/index.js","../../admin/src/pages/SettingsPage/pages/Roles/EditPage/components/ContentTypeCollapses/index.js","../../admin/src/pages/SettingsPage/pages/Roles/EditPage/components/GlobalActions/utils/findDisplayedActions.js","../../admin/src/pages/SettingsPage/pages/Roles/EditPage/components/GlobalActions/utils/getRowLabelCheckboxesState.js","../../admin/src/pages/SettingsPage/pages/Roles/EditPage/components/GlobalActions/index.js","../../admin/src/pages/SettingsPage/pages/Roles/EditPage/components/ContentTypes/index.js","../../admin/src/pages/SettingsPage/pages/Roles/EditPage/components/PluginsAndSettings/SubCategory/utils/formatActions.js","../../admin/src/pages/SettingsPage/pages/Roles/EditPage/components/PluginsAndSettings/SubCategory/utils/getConditionsButtonState.js","../../admin/src/pages/SettingsPage/pages/Roles/EditPage/components/PluginsAndSettings/SubCategory/index.js","../../admin/src/pages/SettingsPage/pages/Roles/EditPage/components/PluginsAndSettings/Row/index.js","../../admin/src/pages/SettingsPage/pages/Roles/EditPage/components/PluginsAndSettings/index.js","../../admin/src/pages/SettingsPage/pages/Roles/EditPage/components/Permissions/utils/findMatchingPermissions.js","../../admin/src/pages/SettingsPage/pages/Roles/EditPage/components/Permissions/utils/createDefaultCTFormFromLayout.js","../../admin/src/pages/SettingsPage/pages/Roles/EditPage/components/Permissions/utils/createDefaultPluginsFormFromLayout.js","../../admin/src/pages/SettingsPage/pages/Roles/EditPage/components/Permissions/utils/formatLayoutForSettingsAndPlugins.js","../../admin/src/pages/SettingsPage/pages/Roles/EditPage/components/Permissions/init.js","../../admin/src/pages/SettingsPage/pages/Roles/EditPage/components/Permissions/utils/updateConditionsToFalse.js","../../admin/src/pages/SettingsPage/pages/Roles/EditPage/components/Permissions/utils/updateValues.js","../../admin/src/pages/SettingsPage/pages/Roles/EditPage/components/Permissions/reducer.js","../../admin/src/pages/SettingsPage/pages/Roles/EditPage/components/Permissions/utils/formatSettingsPermissionsToAPI.js","../../admin/src/pages/SettingsPage/pages/Roles/EditPage/components/Permissions/utils/formatContentTypesPermissionToAPI.js","../../admin/src/pages/SettingsPage/pages/Roles/EditPage/components/Permissions/utils/formatPermissionsToAPI.js","../../admin/src/pages/SettingsPage/pages/Roles/EditPage/components/Permissions/utils/tabLabels.js","../../admin/src/pages/SettingsPage/pages/Roles/EditPage/components/Permissions/index.js","../../admin/src/pages/SettingsPage/pages/Roles/hooks/useAdminRolePermissionLayout/index.js","../../admin/src/pages/SettingsPage/pages/Roles/hooks/useAdminRolePermissions.ts"],"sourcesContent":["import { createContext } from '@radix-ui/react-context';\n\n// Note: I had to guess most of these types based on the name and usage, but I actually don't\n// know if they are correct, because the usage is very generic. Feel free to correct them if\n// they create problems.\nexport interface PermissionsDataManagerContextValue {\n availableConditions: unknown[];\n modifiedData: object;\n onChangeCollectionTypeLeftActionRowCheckbox: (\n pathToData: string,\n propertyName: string,\n nam: string,\n value: unknown\n ) => void;\n onChangeConditions: (conditions: object) => void;\n onChangeSimpleCheckbox: (target: { name: string; value: unknown }) => void;\n onChangeParentCheckbox: (target: { name: string; value: unknown }) => void;\n onChangeCollectionTypeGlobalActionCheckbox: (\n kind: string,\n actionId: string,\n value: unknown\n ) => void;\n}\n\nconst [PermissionsDataManagerProvider, usePermissionsDataManagerContext] =\n createContext<PermissionsDataManagerContextValue>('PermissionsDataManager');\n\nexport const usePermissionsDataManager = () =>\n usePermissionsDataManagerContext('usePermissionsDataManager');\n\nexport { PermissionsDataManagerProvider };\n","import React from 'react';\n\nimport { Button } from '@strapi/design-system';\nimport { Cog } from '@strapi/icons';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\nimport styled from 'styled-components';\n\nconst Wrapper = styled.div`\n position: relative;\n\n ${({ hasConditions, disabled, theme }) =>\n hasConditions &&\n `\n &:before {\n content: '';\n position: absolute;\n top: -3px;\n left: -10px;\n width: 6px;\n height: 6px;\n border-radius: ${20 / 16}rem;;\n background: ${disabled ? theme.colors.neutral100 : theme.colors.primary600};\n }\n `}\n`;\n\nconst ConditionsButton = ({ onClick, className, hasConditions, variant }) => {\n const { formatMessage } = useIntl();\n\n return (\n <Wrapper hasConditions={hasConditions} className={className}>\n <Button variant={variant} startIcon={<Cog />} onClick={onClick}>\n {formatMessage({\n id: 'global.settings',\n defaultMessage: 'Settings',\n })}\n </Button>\n </Wrapper>\n );\n};\n\nConditionsButton.defaultProps = {\n className: null,\n hasConditions: false,\n variant: 'tertiary',\n};\nConditionsButton.propTypes = {\n onClick: PropTypes.func.isRequired,\n className: PropTypes.string,\n hasConditions: PropTypes.bool,\n variant: PropTypes.string,\n};\n\n// This is a styled component advanced usage :\n// Used to make a ref to a non styled component.\n// https://styled-components.com/docs/advanced#caveat\nexport default styled(ConditionsButton)``;\n","import upperFirst from 'lodash/upperFirst';\n\nconst getSelectedValues = (rawValue) =>\n Object.values(rawValue)\n .map((x) =>\n Object.entries(x)\n .filter(([, value]) => value)\n .map(([key]) => key)\n )\n .flat();\n\nconst getNestedOptions = (options) =>\n options.reduce((acc, [label, children]) => {\n acc.push({\n label: upperFirst(label),\n children: children.map((child) => ({\n label: child.displayName,\n value: child.id,\n })),\n });\n\n return acc;\n }, []);\n\nconst getNewStateFromChangedValues = (options, changedValues) =>\n options\n .map(([, values]) => values)\n .flat()\n .reduce((acc, curr) => ({ [curr.id]: changedValues.includes(curr.id), ...acc }), {});\n\nexport { getNestedOptions, getNewStateFromChangedValues, getSelectedValues };\n","import React from 'react';\n\nimport { Box, Flex, MultiSelectNested, Typography } from '@strapi/design-system';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\n\nimport { getNestedOptions, getNewStateFromChangedValues, getSelectedValues } from './utils/options';\n\nconst ActionRow = ({\n arrayOfOptionsGroupedByCategory,\n isFormDisabled,\n isGrey,\n label,\n name,\n onChange,\n value,\n}) => {\n const { formatMessage } = useIntl();\n\n const handleChange = (val) => {\n onChange(name, getNewStateFromChangedValues(arrayOfOptionsGroupedByCategory, val));\n };\n\n return (\n <Flex as=\"li\" background={isGrey ? 'neutral100' : 'neutral0'} paddingBottom={3} paddingTop={3}>\n <Flex paddingLeft={6} style={{ width: 180 }}>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'Settings.permissions.conditions.can',\n defaultMessage: 'Can',\n })}\n &nbsp;\n </Typography>\n <Typography variant=\"sigma\" title={label} textColor=\"primary600\" ellipsis>\n {formatMessage({\n id: `Settings.roles.form.permissions.${label.toLowerCase()}`,\n defaultMessage: label,\n })}\n </Typography>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n &nbsp;\n {formatMessage({\n id: 'Settings.permissions.conditions.when',\n defaultMessage: 'When',\n })}\n </Typography>\n </Flex>\n <Box style={{ maxWidth: 430, width: '100%' }}>\n <MultiSelectNested\n id={name}\n customizeContent={(values) => `${values.length} currently selected`}\n onChange={handleChange}\n value={getSelectedValues(value)}\n options={getNestedOptions(arrayOfOptionsGroupedByCategory)}\n disabled={isFormDisabled}\n />\n </Box>\n </Flex>\n );\n};\n\nActionRow.propTypes = {\n arrayOfOptionsGroupedByCategory: PropTypes.array.isRequired,\n isFormDisabled: PropTypes.bool.isRequired,\n isGrey: PropTypes.bool.isRequired,\n label: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n value: PropTypes.object.isRequired,\n onChange: PropTypes.func.isRequired,\n};\n\nexport default ActionRow;\n","import get from 'lodash/get';\n\nconst createConditionsForm = (conditions, valueObject) => {\n return conditions.reduce((acc, current) => {\n acc[current.id] = get(valueObject, current.id, false);\n\n return acc;\n }, {});\n};\n\nconst createCategoryForm = (arrayOfOptions, valueObject) => {\n return arrayOfOptions.reduce((acc, current) => {\n const [categoryName, relatedConditions] = current;\n\n const conditionsForm = createConditionsForm(relatedConditions, valueObject);\n\n acc[categoryName] = conditionsForm;\n\n return acc;\n }, {});\n};\n\nconst createDefaultConditionsForm = (\n actionsToDisplay,\n modifiedData,\n arrayOfOptionsGroupedByCategory\n) => {\n return actionsToDisplay.reduce((acc, current) => {\n const valueFromModifiedData = get(\n modifiedData,\n [...current.pathToConditionsObject, 'conditions'],\n {}\n );\n\n const categoryDefaultForm = createCategoryForm(\n arrayOfOptionsGroupedByCategory,\n valueFromModifiedData\n );\n\n acc[current.pathToConditionsObject.join('..')] = categoryDefaultForm;\n\n return acc;\n }, {});\n};\n\nexport default createDefaultConditionsForm;\nexport { createCategoryForm, createConditionsForm };\n","import React, { useMemo, useState } from 'react';\n\nimport {\n Button,\n ModalBody,\n ModalFooter,\n ModalHeader,\n ModalLayout,\n Typography,\n} from '@strapi/design-system';\nimport { Breadcrumbs, Crumb } from '@strapi/design-system/v2';\nimport produce from 'immer';\nimport get from 'lodash/get';\nimport groupBy from 'lodash/groupBy';\nimport upperFirst from 'lodash/upperFirst';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\n\nimport { usePermissionsDataManager } from '../../hooks/usePermissionsDataManager';\n\nimport ActionRow from './ActionRow';\nimport createDefaultConditionsForm from './utils/createDefaultConditionsForm';\n\nconst ConditionsModal = ({ actions, headerBreadCrumbs, isFormDisabled, onClosed, onToggle }) => {\n const { formatMessage } = useIntl();\n const { availableConditions, modifiedData, onChangeConditions } = usePermissionsDataManager();\n\n const arrayOfOptionsGroupedByCategory = useMemo(() => {\n return Object.entries(groupBy(availableConditions, 'category'));\n }, [availableConditions]);\n\n const actionsToDisplay = actions.filter(\n ({ isDisplayed, hasSomeActionsSelected, hasAllActionsSelected }) =>\n isDisplayed && (hasSomeActionsSelected || hasAllActionsSelected)\n );\n\n const initState = useMemo(() => {\n return createDefaultConditionsForm(\n actionsToDisplay,\n modifiedData,\n arrayOfOptionsGroupedByCategory\n );\n }, [actionsToDisplay, modifiedData, arrayOfOptionsGroupedByCategory]);\n\n const [state, setState] = useState(initState);\n\n const handleChange = (name, values) => {\n setState(\n produce((draft) => {\n if (!draft[name]) {\n draft[name] = {};\n }\n\n if (!draft[name].default) {\n draft[name].default = {};\n }\n\n draft[name].default = values;\n })\n );\n };\n\n const handleSubmit = () => {\n const conditionsWithoutCategory = Object.entries(state).reduce((acc, current) => {\n const [key, value] = current;\n\n const merged = Object.values(value).reduce((acc1, current1) => {\n return { ...acc1, ...current1 };\n }, {});\n\n acc[key] = merged;\n\n return acc;\n }, {});\n\n onChangeConditions(conditionsWithoutCategory);\n onToggle();\n };\n\n return (\n <ModalLayout labelledBy=\"condition-modal-breadcrumbs\" onClose={onClosed}>\n <ModalHeader>\n <Breadcrumbs id=\"condition-modal-breadcrumbs\" label={headerBreadCrumbs.join(', ')}>\n {headerBreadCrumbs.map((label, index, arr) => (\n <Crumb isCurrent={index === arr.length - 1} key={label}>\n {upperFirst(\n formatMessage({\n id: label,\n defaultMessage: label,\n })\n )}\n </Crumb>\n ))}\n </Breadcrumbs>\n </ModalHeader>\n <ModalBody>\n {actionsToDisplay.length === 0 && (\n <Typography>\n {formatMessage({\n id: 'Settings.permissions.conditions.no-actions',\n defaultMessage:\n 'You first need to select actions (create, read, update, ...) before defining conditions on them.',\n })}\n </Typography>\n )}\n <ul>\n {actionsToDisplay.map(({ actionId, label, pathToConditionsObject }, index) => {\n const name = pathToConditionsObject.join('..');\n\n return (\n <ActionRow\n key={actionId}\n arrayOfOptionsGroupedByCategory={arrayOfOptionsGroupedByCategory}\n label={label}\n isFormDisabled={isFormDisabled}\n isGrey={index % 2 === 0}\n name={name}\n onChange={handleChange}\n value={get(state, name, {})}\n />\n );\n })}\n </ul>\n </ModalBody>\n <ModalFooter\n startActions={\n <Button variant=\"tertiary\" onClick={onToggle}>\n {formatMessage({ id: 'app.components.Button.cancel', defaultMessage: 'Cancel' })}\n </Button>\n }\n endActions={\n <Button onClick={handleSubmit}>\n {formatMessage({\n id: 'Settings.permissions.conditions.apply',\n defaultMessage: 'Apply',\n })}\n </Button>\n }\n />\n </ModalLayout>\n );\n};\n\nConditionsModal.propTypes = {\n actions: PropTypes.arrayOf(\n PropTypes.shape({\n actionId: PropTypes.string.isRequired,\n checkboxName: PropTypes.string,\n hasSomeActionsSelected: PropTypes.bool.isRequired,\n hasAllActionsSelected: PropTypes.bool,\n isDisplayed: PropTypes.bool.isRequired,\n label: PropTypes.string,\n })\n ).isRequired,\n headerBreadCrumbs: PropTypes.arrayOf(PropTypes.string).isRequired,\n isFormDisabled: PropTypes.bool.isRequired,\n onClosed: PropTypes.func.isRequired,\n onToggle: PropTypes.func.isRequired,\n};\n\nexport default ConditionsModal;\n","export const cellWidth = `${120 / 16}rem`;\nexport const firstRowWidth = `${200 / 16}rem`;\nexport const rowHeight = `${53 / 16}rem`;\n","import styled from 'styled-components';\n\nimport { cellWidth } from '../Permissions/utils/constants';\n\nconst HiddenAction = styled.div`\n width: ${cellWidth};\n`;\n\nexport default HiddenAction;\n","import { Flex } from '@strapi/design-system';\nimport styled from 'styled-components';\n\nconst CollapseLabel = styled(Flex)`\n padding-right: ${({ theme }) => theme.spaces[2]};\n overflow: hidden;\n flex: 1;\n ${({ isCollapsable }) => isCollapsable && 'cursor: pointer;'}\n`;\n\nexport default CollapseLabel;\n","import React, { memo } from 'react';\n\nimport { BaseCheckbox, Box, Flex, Typography } from '@strapi/design-system';\nimport upperFirst from 'lodash/upperFirst';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\n\nimport CollapseLabel from '../CollapseLabel';\nimport { firstRowWidth } from '../Permissions/utils/constants';\n\nconst RowLabelWithCheckbox = ({\n children,\n isCollapsable,\n isActive,\n isFormDisabled,\n label,\n onChange,\n onClick,\n checkboxName,\n someChecked,\n value,\n}) => {\n const { formatMessage } = useIntl();\n\n return (\n <Flex alignItems=\"center\" paddingLeft={6} style={{ width: firstRowWidth, flexShrink: 0 }}>\n <Box paddingRight={2}>\n <BaseCheckbox\n name={checkboxName}\n aria-label={formatMessage(\n {\n id: `Settings.permissions.select-all-by-permission`,\n defaultMessage: 'Select all {label} permissions',\n },\n { label }\n )}\n disabled={isFormDisabled}\n // Keep same signature as packages/core/admin/admin/src/components/Roles/Permissions/index.js l.91\n onValueChange={(value) =>\n onChange({\n target: {\n name: checkboxName,\n value,\n },\n })\n }\n indeterminate={someChecked}\n value={value}\n />\n </Box>\n <CollapseLabel\n title={label}\n alignItems=\"center\"\n isCollapsable={isCollapsable}\n {...(isCollapsable && {\n onClick,\n 'aria-expanded': isActive,\n onKeyDown: ({ key }) => (key === 'Enter' || key === ' ') && onClick(),\n tabIndex: 0,\n role: 'button',\n })}\n >\n <Typography\n fontWeight={isActive ? 'bold' : ''}\n textColor={isActive ? 'primary600' : 'neutral800'}\n ellipsis\n >\n {upperFirst(label)}\n </Typography>\n {children}\n </CollapseLabel>\n </Flex>\n );\n};\n\nRowLabelWithCheckbox.defaultProps = {\n children: null,\n checkboxName: '',\n onChange() {},\n value: false,\n someChecked: false,\n isCollapsable: false,\n};\n\nRowLabelWithCheckbox.propTypes = {\n checkboxName: PropTypes.string,\n children: PropTypes.node,\n label: PropTypes.string.isRequired,\n isCollapsable: PropTypes.bool,\n isFormDisabled: PropTypes.bool.isRequired,\n onChange: PropTypes.func,\n onClick: PropTypes.func.isRequired,\n someChecked: PropTypes.bool,\n value: PropTypes.bool,\n isActive: PropTypes.bool.isRequired,\n};\n\nexport default memo(RowLabelWithCheckbox);\n","import flattenDeep from 'lodash/flattenDeep';\nimport isObject from 'lodash/isObject';\n\nconst createArrayOfValues = (obj) => {\n if (!isObject(obj)) {\n return [];\n }\n\n return flattenDeep(\n Object.values(obj).map((value) => {\n if (isObject(value)) {\n return createArrayOfValues(value);\n }\n\n return value;\n })\n );\n};\n\nexport default createArrayOfValues;\n","const removeConditionKeyFromData = (obj) => {\n if (!obj) {\n return null;\n }\n\n return Object.keys(obj).reduce((acc, current) => {\n if (current !== 'conditions') {\n acc[current] = obj[current];\n }\n\n return acc;\n }, {});\n};\n\nexport default removeConditionKeyFromData;\n","import createArrayOfValues from './createArrayOfValues';\nimport removeConditionKeyFromData from './removeConditionKeyFromData';\n\nconst getCheckboxState = (dataObj) => {\n const dataWithoutCondition = removeConditionKeyFromData(dataObj);\n\n const arrayOfValues = createArrayOfValues(dataWithoutCondition);\n\n if (!arrayOfValues.length) {\n return { hasAllActionsSelected: false, hasSomeActionsSelected: false };\n }\n\n const hasAllActionsSelected = arrayOfValues.every((val) => val);\n const hasSomeActionsSelected = arrayOfValues.some((val) => val) && !hasAllActionsSelected;\n\n return { hasAllActionsSelected, hasSomeActionsSelected };\n};\n\nexport default getCheckboxState;\n","import { CarretDown } from '@strapi/icons';\nimport styled from 'styled-components';\n\nconst CarretIcon = styled(CarretDown)`\n display: none;\n width: ${10 / 16}rem;\n transform: rotate(${({ $isActive }) => ($isActive ? '180' : '0')}deg);\n margin-left: ${({ theme }) => theme.spaces[2]};\n`;\n\nexport default CarretIcon;\n","import { Typography } from '@strapi/design-system';\n\nimport CarretIcon from '../CollapsePropertyMatrix/CarretIcon';\n\nconst activeStyle = (theme) => `\n ${Typography} {\n color: ${theme.colors.primary600};\n font-weight: ${theme.fontWeights.bold}\n }\n ${CarretIcon} {\n display: block;\n path {\n fill: ${theme.colors.primary600}\n };\n }\n`;\n\nexport default activeStyle;\n","import get from 'lodash/get';\nimport isEmpty from 'lodash/isEmpty';\n\nimport { createArrayOfValues, getCheckboxState } from '../../../utils';\n\nconst generateCheckboxesActions = (availableActions, modifiedData, pathToData) => {\n return availableActions.map(({ actionId, isDisplayed, applyToProperties, label }) => {\n if (!isDisplayed) {\n return { actionId, hasSomeActionsSelected: false, isDisplayed };\n }\n\n const baseCheckboxNameArray = [...pathToData.split('..'), actionId];\n const checkboxNameArray = isEmpty(applyToProperties)\n ? [...baseCheckboxNameArray, 'properties', 'enabled']\n : baseCheckboxNameArray;\n const checkboxName = checkboxNameArray.join('..');\n const conditionsValue = get(modifiedData, [...baseCheckboxNameArray, 'conditions'], null);\n\n const hasConditions = createArrayOfValues(conditionsValue).some((val) => val);\n\n if (isEmpty(applyToProperties)) {\n const value = get(modifiedData, checkboxNameArray, false);\n\n // Since applyToProperties is empty it is not a parent checkbox, therefore hasAllActionsSelected is\n // equal to hasSomeActionsSelected\n return {\n actionId,\n checkboxName,\n hasAllActionsSelected: value,\n hasConditions,\n hasSomeActionsSelected: value,\n isDisplayed,\n isParentCheckbox: false,\n label,\n pathToConditionsObject: baseCheckboxNameArray,\n };\n }\n\n const mainData = get(modifiedData, checkboxNameArray, null);\n\n const { hasAllActionsSelected, hasSomeActionsSelected } = getCheckboxState(mainData);\n\n return {\n actionId,\n checkboxName,\n hasAllActionsSelected,\n hasConditions,\n hasSomeActionsSelected,\n isDisplayed,\n isParentCheckbox: true,\n label,\n pathToConditionsObject: baseCheckboxNameArray,\n };\n });\n};\n\nexport default generateCheckboxesActions;\n","import React, { useMemo, useState } from 'react';\n\nimport { BaseCheckbox, Box, Flex } from '@strapi/design-system';\nimport { ChevronDown, ChevronUp } from '@strapi/icons';\nimport get from 'lodash/get';\nimport omit from 'lodash/omit';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\nimport styled from 'styled-components';\n\nimport { usePermissionsDataManager } from '../../../hooks/usePermissionsDataManager';\nimport ConditionsButton from '../../ConditionsButton';\nimport ConditionsModal from '../../ConditionsModal';\nimport HiddenAction from '../../HiddenAction';\nimport { cellWidth, rowHeight } from '../../Permissions/utils/constants';\nimport RowLabelWithCheckbox from '../../RowLabelWithCheckbox';\nimport { getCheckboxState } from '../../utils';\nimport activeStyle from '../utils/activeStyle';\n\nimport generateCheckboxesActions from './utils/generateCheckboxesActions';\n\nconst activeRowStyle = (theme, isActive) => `\n ${Wrapper} {\n background-color: ${theme.colors.primary100};\n color: ${theme.colors.primary600};\n border-radius: ${isActive ? '2px 2px 0 0' : '2px'};\n }\n ${Chevron} {\n display: flex;\n }\n ${ConditionsButton} {\n display: block;\n }\n &:hover {\n ${activeStyle(theme)}\n }\n\n &:focus-within {\n ${({ theme, isActive }) => activeRowStyle(theme, isActive)}\n }\n \n`;\n\nconst Wrapper = styled.div`\n flex: 1;\n display: flex;\n align-items: center;\n height: ${rowHeight};\n background-color: ${({ isGrey, theme }) =>\n isGrey ? theme.colors.neutral100 : theme.colors.neutral0};\n border: 1px solid transparent;\n`;\n\nconst BoxWrapper = styled.div`\n display: inline-flex;\n min-width: 100%;\n\n ${ConditionsButton} {\n display: none;\n }\n ${({ isActive, theme }) => isActive && activeRowStyle(theme, isActive)}\n &:hover {\n ${({ theme, isActive }) => activeRowStyle(theme, isActive)}\n }\n`;\n\nconst Cell = styled(Flex)`\n width: ${cellWidth};\n position: relative;\n`;\n\nconst Chevron = styled(Box)`\n display: none;\n svg {\n width: 11px;\n }\n * {\n fill: ${({ theme }) => theme.colors.primary600};\n }\n`;\n\nconst TinyDot = styled.span`\n position: absolute;\n top: -6px;\n left: 37px;\n width: 6px;\n height: 6px;\n border-radius: 20px;\n background: ${({ theme }) => theme.colors.primary600};\n`;\n\nconst AbsoluteBox = styled(Box)`\n position: absolute;\n right: 9px;\n transform: translateY(10px);\n`;\n\nconst Collapse = ({\n availableActions,\n isActive,\n isGrey,\n isFormDisabled,\n label,\n onClickToggle,\n pathToData,\n}) => {\n const [isModalOpen, setModalOpen] = useState(false);\n const { formatMessage } = useIntl();\n const { modifiedData, onChangeParentCheckbox, onChangeSimpleCheckbox } =\n usePermissionsDataManager();\n\n const handleToggleModalIsOpen = () => {\n setModalOpen((s) => !s);\n };\n\n const handleModalClose = () => {\n setModalOpen(false);\n };\n\n // This corresponds to the data related to the CT left checkbox\n // modifiedData: { collectionTypes: { [ctuid]: {create: {properties: { fields: {f1: true} }, update: {}, ... } } } }\n const mainData = get(modifiedData, pathToData.split('..'), {});\n // The utils we are using: getCheckboxState, retrieves all the boolean leafs of an object in order\n // to return the state of checkbox. Since the conditions are not related to the property we need to remove the key from the object.\n const dataWithoutCondition = useMemo(() => {\n return Object.keys(mainData).reduce((acc, current) => {\n acc[current] = omit(mainData[current], 'conditions');\n\n return acc;\n }, {});\n }, [mainData]);\n\n const { hasAllActionsSelected, hasSomeActionsSelected } = getCheckboxState(dataWithoutCondition);\n\n // Here we create an array of <checkbox>, since the state of each one of them is used in\n // order to know if whether or not we need to display the associated action in\n // the <ConditionsModal />\n const checkboxesActions = useMemo(() => {\n return generateCheckboxesActions(availableActions, modifiedData, pathToData);\n }, [availableActions, modifiedData, pathToData]);\n\n const doesConditionButtonHasConditions = checkboxesActions.some(\n ({ hasConditions }) => hasConditions\n );\n\n return (\n <BoxWrapper isActive={isActive}>\n <Wrapper isGrey={isGrey}>\n <RowLabelWithCheckbox\n isCollapsable\n isFormDisabled={isFormDisabled}\n label={label}\n checkboxName={pathToData}\n onChange={onChangeParentCheckbox}\n onClick={onClickToggle}\n someChecked={hasSomeActionsSelected}\n value={hasAllActionsSelected}\n isActive={isActive}\n >\n <Chevron paddingLeft={2}>{isActive ? <ChevronUp /> : <ChevronDown />}</Chevron>\n </RowLabelWithCheckbox>\n\n <Flex style={{ flex: 1 }}>\n {checkboxesActions.map(\n ({\n actionId,\n hasConditions,\n hasAllActionsSelected,\n hasSomeActionsSelected,\n isDisplayed,\n isParentCheckbox,\n checkboxName,\n label: permissionLabel,\n }) => {\n if (!isDisplayed) {\n return <HiddenAction key={actionId} />;\n }\n\n if (isParentCheckbox) {\n return (\n <Cell key={actionId} justifyContent=\"center\" alignItems=\"center\">\n {hasConditions && <TinyDot />}\n <BaseCheckbox\n disabled={isFormDisabled}\n name={checkboxName}\n aria-label={formatMessage(\n {\n id: `Settings.permissions.select-by-permission`,\n defaultMessage: 'Select {label} permission',\n },\n { label: `${permissionLabel} ${label}` }\n )}\n // Keep same signature as packages/core/admin/admin/src/components/Roles/Permissions/index.js l.91\n onValueChange={(value) => {\n onChangeParentCheckbox({\n target: {\n name: checkboxName,\n value,\n },\n });\n }}\n indeterminate={hasSomeActionsSelected}\n value={hasAllActionsSelected}\n />\n </Cell>\n );\n }\n\n return (\n <Cell key={actionId} justifyContent=\"center\" alignItems=\"center\">\n {hasConditions && <TinyDot />}\n <BaseCheckbox\n disabled={isFormDisabled}\n indeterminate={hasConditions}\n name={checkboxName}\n // Keep same signature as packages/core/admin/admin/src/components/Roles/Permissions/index.js l.91\n onValueChange={(value) => {\n onChangeSimpleCheckbox({\n target: {\n name: checkboxName,\n value,\n },\n });\n }}\n value={hasAllActionsSelected}\n />\n </Cell>\n );\n }\n )}\n </Flex>\n {isModalOpen && (\n <ConditionsModal\n headerBreadCrumbs={[label, 'Settings.permissions.conditions.conditions']}\n actions={checkboxesActions}\n isFormDisabled={isFormDisabled}\n onClosed={handleModalClose}\n onToggle={handleToggleModalIsOpen}\n />\n )}\n </Wrapper>\n <AbsoluteBox>\n <ConditionsButton\n onClick={handleToggleModalIsOpen}\n hasConditions={doesConditionButtonHasConditions}\n />\n </AbsoluteBox>\n </BoxWrapper>\n );\n};\n\nCollapse.propTypes = {\n availableActions: PropTypes.array.isRequired,\n isActive: PropTypes.bool.isRequired,\n isGrey: PropTypes.bool.isRequired,\n isFormDisabled: PropTypes.bool.isRequired,\n label: PropTypes.string.isRequired,\n onClickToggle: PropTypes.func.isRequired,\n pathToData: PropTypes.string.isRequired,\n};\n\nexport default Collapse;\n","import React from 'react';\n\nimport styled from 'styled-components';\n\nconst Required = styled.span`\n color: ${({ theme }) => theme.colors.danger700};\n padding-left: ${({ theme }) => theme.spaces[1]}px;\n`;\n\nconst RequiredSign = () => <Required>*</Required>;\n\nexport default RequiredSign;\n","const getAvailableActions = (actions, targetSubject) => {\n return actions.map((action) => {\n const isDisplayed =\n Array.isArray(action.subjects) && action.subjects.indexOf(targetSubject) !== -1;\n\n return { ...action, isDisplayed };\n });\n};\n\nexport default getAvailableActions;\n","import React, { memo } from 'react';\n\nimport { Box } from '@strapi/design-system';\nimport PropTypes from 'prop-types';\nimport styled from 'styled-components';\n\nconst StyledBox = styled(Box)`\n transform: translate(-4px, -12px);\n\n &:before {\n content: '';\n width: ${4 / 16}rem;\n height: ${12 / 16}rem;\n background: ${({ theme }) => theme.colors.primary200};\n display: block;\n }\n`;\n\nconst Svg = styled.svg`\n position: relative;\n flex-shrink: 0;\n transform: translate(-0.5px, -1px);\n\n * {\n fill: ${({ theme, color }) => theme.colors[color]};\n }\n`;\n\nconst Curve = (props) => (\n <StyledBox>\n <Svg\n width=\"20\"\n height=\"23\"\n viewBox=\"0 0 20 23\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M7.02477 14.7513C8.65865 17.0594 11.6046 18.6059 17.5596 18.8856C18.6836 18.9384 19.5976 19.8435 19.5976 20.9688V20.9688C19.5976 22.0941 18.6841 23.0125 17.5599 22.9643C10.9409 22.6805 6.454 20.9387 3.75496 17.1258C0.937988 13.1464 0.486328 7.39309 0.486328 0.593262H4.50974C4.50974 7.54693 5.06394 11.9813 7.02477 14.7513Z\"\n fill=\"#D9D8FF\"\n />\n </Svg>\n </StyledBox>\n);\n\nCurve.defaultProps = {\n fill: 'primary200',\n};\nCurve.propTypes = {\n fill: PropTypes.string,\n};\n\nexport default memo(Curve);\n","import React, { memo, useMemo, useState } from 'react';\n\nimport { BaseCheckbox, Box, Flex, Typography } from '@strapi/design-system';\nimport get from 'lodash/get';\nimport upperFirst from 'lodash/upperFirst';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\nimport styled from 'styled-components';\n\nimport { usePermissionsDataManager } from '../../../../hooks/usePermissionsDataManager';\nimport CollapseLabel from '../../../CollapseLabel';\nimport Curve from '../../../Curve';\nimport HiddenAction from '../../../HiddenAction';\nimport { cellWidth, rowHeight } from '../../../Permissions/utils/constants';\nimport RequiredSign from '../../../RequiredSign';\nimport { getCheckboxState } from '../../../utils';\nimport { activeStyle } from '../../utils';\nimport CarretIcon from '../CarretIcon';\n\nconst Cell = styled(Flex)`\n width: ${cellWidth};\n position: relative;\n`;\n\nconst RowWrapper = styled(Flex)`\n height: ${rowHeight};\n`;\n\nconst Wrapper = styled(Box)`\n padding-left: ${31 / 16}rem;\n`;\n\nconst LeftBorderTimeline = styled(Box)`\n border-left: ${({ isVisible, theme }) =>\n isVisible ? `4px solid ${theme.colors.primary200}` : '4px solid transparent'};\n`;\n\nconst RowStyle = styled(Flex)`\n padding-left: ${({ theme }) => theme.spaces[4]};\n width: ${({ level }) => 145 - level * 36}px;\n\n ${({ isCollapsable, theme }) =>\n isCollapsable &&\n `\n ${CarretIcon} {\n display: block;\n color: ${theme.colors.neutral100};\n }\n &:hover {\n ${activeStyle(theme)}\n }\n `}\n ${({ isActive, theme }) => isActive && activeStyle(theme)};\n`;\n\nconst TopTimeline = styled.div`\n padding-top: ${({ theme }) => theme.spaces[2]};\n margin-top: ${({ theme }) => theme.spaces[2]};\n width: ${4 / 16}rem;\n background-color: ${({ theme }) => theme.colors.primary200};\n border-top-left-radius: 2px;\n border-top-right-radius: 2px;\n`;\n\nconst SubActionRow = ({\n childrenForm,\n isFormDisabled,\n recursiveLevel,\n pathToDataFromActionRow,\n propertyActions,\n parentName,\n propertyName,\n}) => {\n const { formatMessage } = useIntl();\n const { modifiedData, onChangeParentCheckbox, onChangeSimpleCheckbox } =\n usePermissionsDataManager();\n const [rowToOpen, setRowToOpen] = useState(null);\n\n const handleClickToggleSubLevel = (name) => {\n setRowToOpen((prev) => {\n if (prev === name) {\n return null;\n }\n\n return name;\n });\n };\n\n const displayedRecursiveChildren = useMemo(() => {\n if (!rowToOpen) {\n return null;\n }\n\n return childrenForm.find(({ value }) => value === rowToOpen);\n }, [rowToOpen, childrenForm]);\n\n return (\n <Wrapper>\n <TopTimeline />\n {childrenForm.map(({ label, value, required, children: subChildrenForm }, index) => {\n const isVisible = index + 1 < childrenForm.length;\n const isArrayType = Array.isArray(subChildrenForm);\n const isActive = rowToOpen === value;\n\n return (\n <LeftBorderTimeline key={value} isVisible={isVisible}>\n <RowWrapper>\n <Curve color=\"primary200\" />\n <Flex style={{ flex: 1 }}>\n <RowStyle level={recursiveLevel} isActive={isActive} isCollapsable={isArrayType}>\n <CollapseLabel\n alignItems=\"center\"\n isCollapsable={isArrayType}\n {...(isArrayType && {\n onClick: () => handleClickToggleSubLevel(value),\n 'aria-expanded': isActive,\n onKeyDown: ({ key }) =>\n (key === 'Enter' || key === ' ') && handleClickToggleSubLevel(value),\n tabIndex: 0,\n role: 'button',\n })}\n title={label}\n >\n <Typography ellipsis>{upperFirst(label)}</Typography>\n {required && <RequiredSign />}\n <CarretIcon $isActive={isActive} />\n </CollapseLabel>\n </RowStyle>\n <Flex style={{ flex: 1 }}>\n {propertyActions.map(\n ({ actionId, label: propertyLabel, isActionRelatedToCurrentProperty }) => {\n if (!isActionRelatedToCurrentProperty) {\n return <HiddenAction key={actionId} />;\n }\n /*\n * Usually we use a 'dot' in order to know the key path of an object for which we want to change the value.\n * Since an action and a subject are both separated by '.' or '::' we chose to use the '..' separators\n */\n const checkboxName = [\n ...pathToDataFromActionRow.split('..'),\n actionId,\n 'properties',\n propertyName,\n ...parentName.split('..'),\n value,\n ];\n\n const checkboxValue = get(modifiedData, checkboxName, false);\n\n if (!subChildrenForm) {\n return (\n <Cell key={propertyLabel} justifyContent=\"center\" alignItems=\"center\">\n <BaseCheckbox\n disabled={isFormDisabled}\n name={checkboxName.join('..')}\n aria-label={formatMessage(\n {\n id: `Settings.permissions.select-by-permission`,\n defaultMessage: 'Select {label} permission',\n },\n { label: `${parentName} ${label} ${propertyLabel}` }\n )}\n // Keep same signature as packages/core/admin/admin/src/components/Roles/Permissions/index.js l.91\n onValueChange={(value) => {\n onChangeSimpleCheckbox({\n target: {\n name: checkboxName.join('..'),\n value,\n },\n });\n }}\n value={checkboxValue}\n />\n </Cell>\n );\n }\n\n const { hasAllActionsSelected, hasSomeActionsSelected } =\n getCheckboxState(checkboxValue);\n\n return (\n <Cell key={propertyLabel} justifyContent=\"center\" alignItems=\"center\">\n <BaseCheckbox\n key={propertyLabel}\n disabled={isFormDisabled}\n name={checkboxName.join('..')}\n aria-label={formatMessage(\n {\n id: `Settings.permissions.select-by-permission`,\n defaultMessage: 'Select {label} permission',\n },\n { label: `${parentName} ${label} ${propertyLabel}` }\n )}\n // Keep same signature as packages/core/admin/admin/src/components/Roles/Permissions/index.js l.91\n onValueChange={(value) => {\n onChangeParentCheckbox({\n target: {\n name: checkboxName.join('..'),\n value,\n },\n });\n }}\n value={hasAllActionsSelected}\n indeterminate={hasSomeActionsSelected}\n />\n </Cell>\n );\n }\n )}\n </Flex>\n </Flex>\n </RowWrapper>\n {displayedRecursiveChildren && isActive && (\n <Box paddingBottom={2}>\n <SubActionRow\n isFormDisabled={isFormDisabled}\n parentName={`${parentName}..${value}`}\n pathToDataFromActionRow={pathToDataFromActionRow}\n propertyActions={propertyActions}\n propertyName={propertyName}\n recursiveLevel={recursiveLevel + 1}\n childrenForm={displayedRecursiveChildren.children}\n />\n </Box>\n )}\n </LeftBorderTimeline>\n );\n })}\n </Wrapper>\n );\n};\n\nSubActionRow.propTypes = {\n childrenForm: PropTypes.array.isRequired,\n isFormDisabled: PropTypes.bool.isRequired,\n parentName: PropTypes.string.isRequired,\n pathToDataFromActionRow: PropTypes.string.isRequired,\n propertyActions: PropTypes.array.isRequired,\n propertyName: PropTypes.string.isRequired,\n recursiveLevel: PropTypes.number.isRequired,\n};\n\nexport default memo(SubActionRow);\n","import get from 'lodash/get';\n\nimport { getCheckboxState } from '../../../../utils';\n\n/**\n * Returns a filtered array of actionId\n * @param {array<object>} propertyActions\n * @returns {string} actionId\n */\nconst getActionIdsFromPropertyActions = (propertyActions) => {\n const actionIds = propertyActions.reduce((acc, current) => {\n if (current.isActionRelatedToCurrentProperty) {\n acc.push(current.actionId);\n }\n\n return acc;\n }, []);\n\n return actionIds;\n};\n\n/**\n *\n * Returns the state of the left checkbox of a ActionRow main checkbox\n * @param {array} propertyActions\n * @param {object} modifiedData\n * @param {string} pathToContentType\n * @param {string} propertyToCheck\n * @param {string} targetKey\n * @returns {object}\n */\nconst getRowLabelCheckboxeState = (\n propertyActions,\n modifiedData,\n pathToContentType,\n propertyToCheck,\n targetKey\n) => {\n const actionIds = getActionIdsFromPropertyActions(propertyActions);\n\n const data = actionIds.reduce((acc, current) => {\n const pathToData = [\n ...pathToContentType.split('..'),\n current,\n 'properties',\n propertyToCheck,\n targetKey,\n ];\n const mainData = get(modifiedData, pathToData, false);\n\n acc[current] = mainData;\n\n return acc;\n }, {});\n\n return getCheckboxState(data);\n};\n\nexport default getRowLabelCheckboxeState;\nexport { getActionIdsFromPropertyActions };\n","import React, { memo, useCallback, useMemo, useState } from 'react';\n\nimport { BaseCheckbox, Flex } from '@strapi/design-system';\nimport get from 'lodash/get';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\nimport styled from 'styled-components';\n\nimport { usePermissionsDataManager } from '../../../../hooks/usePermissionsDataManager';\nimport HiddenAction from '../../../HiddenAction';\nimport { cellWidth, rowHeight } from '../../../Permissions/utils/constants';\nimport RequiredSign from '../../../RequiredSign';\nimport RowLabelWithCheckbox from '../../../RowLabelWithCheckbox';\nimport { getCheckboxState } from '../../../utils';\nimport { activeStyle } from '../../utils';\nimport CarretIcon from '../CarretIcon';\nimport SubActionRow from '../SubActionRow';\n\nimport getRowLabelCheckboxeState from './utils/getRowLabelCheckboxeState';\n\nconst Cell = styled(Flex)`\n width: ${cellWidth};\n position: relative;\n`;\n\nconst Wrapper = styled(Flex)`\n height: ${rowHeight};\n flex: 1;\n\n ${({ isCollapsable, theme }) =>\n isCollapsable &&\n `\n ${CarretIcon} {\n display: block;\n color: ${theme.colors.neutral100};\n }\n &:hover {\n ${activeStyle(theme)}\n }\n `}\n ${({ isActive, theme }) => isActive && activeStyle(theme)};\n`;\n\nconst ActionRow = ({\n childrenForm,\n label,\n isFormDisabled,\n name,\n required,\n pathToData,\n propertyActions,\n propertyName,\n isOdd,\n}) => {\n const { formatMessage } = useIntl();\n const [rowToOpen, setRowToOpen] = useState(null);\n const {\n modifiedData,\n onChangeCollectionTypeLeftActionRowCheckbox,\n onChangeParentCheckbox,\n onChangeSimpleCheckbox,\n } = usePermissionsDataManager();\n\n const isActive = rowToOpen === name;\n\n const recursiveChildren = useMemo(() => {\n if (!Array.isArray(childrenForm)) {\n return [];\n }\n\n return childrenForm;\n }, [childrenForm]);\n\n const isCollapsable = recursiveChildren.length > 0;\n\n const handleClick = useCallback(() => {\n if (isCollapsable) {\n setRowToOpen((prev) => {\n if (prev === name) {\n return null;\n }\n\n return name;\n });\n }\n }, [isCollapsable, name]);\n\n const handleChangeLeftRowCheckbox = ({ target: { value } }) => {\n onChangeCollectionTypeLeftActionRowCheckbox(pathToData, propertyName, name, value);\n };\n\n const { hasAllActionsSelected, hasSomeActionsSelected } = useMemo(() => {\n return getRowLabelCheckboxeState(propertyActions, modifiedData, pathToData, propertyName, name);\n }, [propertyActions, modifiedData, pathToData, propertyName, name]);\n\n return (\n <>\n <Wrapper\n alignItems=\"center\"\n isCollapsable={isCollapsable}\n isActive={isActive}\n background={isOdd ? 'neutral100' : 'neutral0'}\n >\n <Flex>\n <RowLabelWithCheckbox\n onChange={handleChangeLeftRowCheckbox}\n onClick={handleClick}\n isCollapsable={isCollapsable}\n isFormDisabled={isFormDisabled}\n label={label}\n someChecked={hasSomeActionsSelected}\n value={hasAllActionsSelected}\n isActive={isActive}\n >\n {required && <RequiredSign />}\n <CarretIcon $isActive={isActive} />\n </RowLabelWithCheckbox>\n <Flex>\n {propertyActions.map(({ label, isActionRelatedToCurrentProperty, actionId }) => {\n if (!isActionRelatedToCurrentProperty) {\n return <HiddenAction key={label} />;\n }\n\n const checkboxName = [\n ...pathToData.split('..'),\n actionId,\n 'properties',\n propertyName,\n name,\n ];\n\n if (!isCollapsable) {\n const checkboxValue = get(modifiedData, checkboxName, false);\n\n return (\n <Cell key={actionId} justifyContent=\"center\" alignItems=\"center\">\n <BaseCheckbox\n disabled={isFormDisabled}\n name={checkboxName.join('..')}\n aria-label={formatMessage(\n {\n id: `Settings.permissions.select-by-permission`,\n defaultMessage: 'Select {label} permission',\n },\n { label: `${name} ${label}` }\n )}\n // Keep same signature as packages/core/admin/admin/src/components/Roles/Permissions/index.js l.91\n onValueChange={(value) => {\n onChangeSimpleCheckbox({\n target: {\n name: checkboxName.join('..'),\n value,\n },\n });\n }}\n value={checkboxValue}\n />\n </Cell>\n );\n }\n\n const data = get(modifiedData, checkboxName, {});\n\n const { hasAllActionsSelected, hasSomeActionsSelected } = getCheckboxState(data);\n\n return (\n <Cell key={label} justifyContent=\"center\" alignItems=\"center\">\n <BaseCheckbox\n disabled={isFormDisabled}\n name={checkboxName.join('..')}\n // Keep same signature as packages/core/admin/admin/src/components/Roles/Permissions/index.js l.91\n onValueChange={(value) => {\n onChangeParentCheckbox({\n target: {\n name: checkboxName.join('..'),\n value,\n },\n });\n }}\n aria-label={formatMessage(\n {\n id: `Settings.permissions.select-by-permission`,\n defaultMessage: 'Select {label} permission',\n },\n { label: `${name} ${label}` }\n )}\n value={hasAllActionsSelected}\n indeterminate={hasSomeActionsSelected}\n />\n </Cell>\n );\n })}\n </Flex>\n </Flex>\n </Wrapper>\n {isActive && (\n <SubActionRow\n childrenForm={recursiveChildren}\n isFormDisabled={isFormDisabled}\n parentName={name}\n pathToDataFromActionRow={pathToData}\n propertyName={propertyName}\n propertyActions={propertyActions}\n recursiveLevel={0}\n />\n )}\n </>\n );\n};\n\nActionRow.defaultProps = {\n childrenForm: [],\n required: false,\n};\n\nActionRow.propTypes = {\n childrenForm: PropTypes.array,\n label: PropTypes.string.isRequired,\n isFormDisabled: PropTypes.bool.isRequired,\n name: PropTypes.string.isRequired,\n pathToData: PropTypes.string.isRequired,\n propertyActions: PropTypes.array.isRequired,\n propertyName: PropTypes.string.isRequired,\n required: PropTypes.bool,\n isOdd: PropTypes.bool.isRequired,\n};\n\nexport default memo(ActionRow);\n","import React from 'react';\n\nimport { Flex, Typography } from '@strapi/design-system';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\nimport styled from 'styled-components';\n\nimport { cellWidth, firstRowWidth, rowHeight } from '../../../Permissions/utils/constants';\n\nconst HeaderLabel = styled(Flex)`\n width: ${cellWidth};\n flex-shrink: 0;\n`;\nconst PropertyLabelWrapper = styled(Flex)`\n width: ${firstRowWidth};\n height: ${rowHeight};\n flex-shrink: 0;\n`;\n\nconst Header = ({ headers, label }) => {\n const { formatMessage } = useIntl();\n const translatedLabel = formatMessage(\n {\n id: 'Settings.roles.form.permission.property-label',\n defaultMessage: '{label} permissions',\n },\n { label }\n );\n\n return (\n <Flex>\n <PropertyLabelWrapper alignItems=\"center\" paddingLeft={6}>\n <Typography variant=\"sigma\" textColor=\"neutral500\">\n {translatedLabel}\n </Typography>\n </PropertyLabelWrapper>\n {headers.map((header) => {\n if (!header.isActionRelatedToCurrentProperty) {\n return <HeaderLabel key={header.label} />;\n }\n\n return (\n <HeaderLabel justifyContent=\"center\" key={header.label}>\n <Typography variant=\"sigma\" textColor=\"neutral500\">\n {formatMessage({\n id: `Settings.roles.form.permissions.${header.label.toLowerCase()}`,\n defaultMessage: header.label,\n })}\n </Typography>\n </HeaderLabel>\n );\n })}\n </Flex>\n );\n};\n\nHeader.propTypes = {\n headers: PropTypes.arrayOf(\n PropTypes.shape({\n label: PropTypes.string.isRequired,\n isActionRelatedToCurrentProperty: PropTypes.bool.isRequired,\n })\n ).isRequired,\n label: PropTypes.string.isRequired,\n};\n\nexport default Header;\n","const generateHeadersFromActions = (actions, propertyName) => {\n return actions.map((action) => {\n const isActionRelatedToCurrentProperty =\n Array.isArray(action.applyToProperties) &&\n action.applyToProperties.indexOf(propertyName) !== -1 &&\n action.isDisplayed;\n\n return { label: action.label, actionId: action.actionId, isActionRelatedToCurrentProperty };\n });\n};\n\nexport default generateHeadersFromActions;\n","import React, { useMemo } from 'react';\n\nimport { Box } from '@strapi/design-system';\nimport PropTypes from 'prop-types';\nimport styled from 'styled-components';\n\nimport ActionRow from './ActionRow';\nimport Header from './Header';\nimport generateHeadersFromActions from './utils/generateHeadersFromActions';\n\nconst Wrapper = styled.div`\n display: inline-flex;\n flex-direction: column;\n min-width: 0;\n`;\n\nconst CollapsePropertyMatrix = ({\n availableActions,\n childrenForm,\n isFormDisabled,\n label,\n pathToData,\n propertyName,\n}) => {\n const propertyActions = useMemo(\n () => generateHeadersFromActions(availableActions, propertyName),\n [availableActions, propertyName]\n );\n\n return (\n <Wrapper>\n <Header label={label} headers={propertyActions} />\n <Box>\n {childrenForm.map(({ children: childrenForm, label, value, required }, i) => (\n <ActionRow\n childrenForm={childrenForm}\n key={value}\n label={label}\n isFormDisabled={isFormDisabled}\n name={value}\n required={required}\n propertyActions={propertyActions}\n pathToData={pathToData}\n propertyName={propertyName}\n isOdd={i % 2 === 0}\n />\n ))}\n </Box>\n </Wrapper>\n );\n};\n\nCollapsePropertyMatrix.propTypes = {\n childrenForm: PropTypes.array.isRequired,\n availableActions: PropTypes.array.isRequired,\n isFormDisabled: PropTypes.bool.isRequired,\n label: PropTypes.string.isRequired,\n pathToData: PropTypes.string.isRequired,\n propertyName: PropTypes.string.isRequired,\n};\n\nexport default CollapsePropertyMatrix;\n","import React, { useCallback, useMemo } from 'react';\n\nimport PropTypes from 'prop-types';\nimport styled from 'styled-components';\n\nimport Collapse from './Collapse';\nimport CollapsePropertyMatrix from './CollapsePropertyMatrix';\nimport { getAvailableActions } from './utils';\n\nconst Wrapper = styled.div`\n flex-direction: column;\n display: inline-flex;\n min-width: 100%;\n ${({ theme, isActive }) => isActive && `border: 1px solid ${theme.colors.primary600};`}\n`;\n\nconst ContentTypeCollapse = ({\n allActions,\n contentTypeName,\n label,\n index,\n isActive,\n isFormDisabled,\n onClickToggleCollapse,\n pathToData,\n properties,\n}) => {\n const handleClickToggleCollapse = useCallback(() => {\n onClickToggleCollapse(contentTypeName);\n }, [contentTypeName, onClickToggleCollapse]);\n\n const availableActions = useMemo(() => {\n return getAvailableActions(allActions, contentTypeName);\n }, [allActions, contentTypeName]);\n\n return (\n <Wrapper isActive={isActive}>\n <Collapse\n availableActions={availableActions}\n isActive={isActive}\n isGrey={index % 2 === 0}\n isFormDisabled={isFormDisabled}\n label={label}\n onClickToggle={handleClickToggleCollapse}\n pathToData={pathToData}\n />\n {isActive &&\n properties.map(({ label: propertyLabel, value, children: childrenForm }) => {\n return (\n <CollapsePropertyMatrix\n availableActions={availableActions}\n childrenForm={childrenForm}\n isFormDisabled={isFormDisabled}\n label={propertyLabel}\n pathToData={pathToData}\n propertyName={value}\n key={value}\n />\n );\n })}\n </Wrapper>\n );\n};\n\nContentTypeCollapse.propTypes = {\n allActions: PropTypes.array.isRequired,\n contentTypeName: PropTypes.string.isRequired,\n index: PropTypes.number.isRequired,\n isActive: PropTypes.bool.isRequired,\n isFormDisabled: PropTypes.bool.isRequired,\n label: PropTypes.string.isRequired,\n onClickToggleCollapse: PropTypes.func.isRequired,\n pathToData: PropTypes.string.isRequired,\n properties: PropTypes.array.isRequired,\n};\n\nexport default ContentTypeCollapse;\n","import React, { memo, useState } from 'react';\n\nimport PropTypes from 'prop-types';\n\nimport ContentTypeCollapse from '../ContentTypeCollapse';\n\nconst ContentTypeCollapses = ({ actions, isFormDisabled, pathToData, subjects }) => {\n const [collapseToOpen, setCollapseToOpen] = useState(null);\n\n const handleClickToggleCollapse = (collapseName) => {\n const nextCollapseToOpen = collapseToOpen === collapseName ? null : collapseName;\n\n setCollapseToOpen(nextCollapseToOpen);\n };\n\n return subjects.map(({ uid, label, properties }, index) => {\n return (\n <ContentTypeCollapse\n allActions={actions}\n key={uid}\n contentTypeName={uid}\n label={label}\n isActive={collapseToOpen === uid}\n isFormDisabled={isFormDisabled}\n index={index}\n onClickToggleCollapse={handleClickToggleCollapse}\n pathToData={`${pathToData}..${uid}`}\n properties={properties}\n />\n );\n });\n};\n\nContentTypeCollapses.defaultProps = {\n actions: [],\n subjects: [],\n};\n\nContentTypeCollapses.propTypes = {\n actions: PropTypes.array.isRequired,\n isFormDisabled: PropTypes.bool.isRequired,\n pathToData: PropTypes.string.isRequired,\n subjects: PropTypes.arrayOf(\n PropTypes.shape({\n uid: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n properties: PropTypes.array.isRequired,\n })\n ),\n};\n\nexport default memo(ContentTypeCollapses);\n","const findDisplayedActions = (actions) =>\n actions.filter(({ subjects }) => subjects && subjects.length);\n\nexport default findDisplayedActions;\n","import get from 'lodash/get';\n\nimport { getCheckboxState, removeConditionKeyFromData } from '../../utils';\n\nconst getActionsIds = (array) => array.map(({ actionId }) => actionId);\n\nconst getRelatedActionIdData = (actionIdArray, dataObj) => {\n return actionIdArray.reduce((acc, actionId) => {\n Object.keys(dataObj).forEach((ctUid) => {\n const actionIdData = get(dataObj, [ctUid, actionId], {});\n\n const actionIdState = { [ctUid]: removeConditionKeyFromData(actionIdData) };\n\n if (!acc[actionId]) {\n acc[actionId] = actionIdState;\n } else {\n acc[actionId] = { ...acc[actionId], ...actionIdState };\n }\n });\n\n return acc;\n }, {});\n};\n\nconst getCheckboxesState = (properties, modifiedData) => {\n const actionsIds = getActionsIds(properties);\n const relatedActionsData = getRelatedActionIdData(actionsIds, modifiedData);\n\n const checkboxesState = Object.keys(relatedActionsData).reduce((acc, current) => {\n acc[current] = getCheckboxState(relatedActionsData[current]);\n\n return acc;\n }, {});\n\n return checkboxesState;\n};\n\nexport default getCheckboxesState;\nexport { getActionsIds, getRelatedActionIdData };\n","import React, { memo, useMemo } from 'react';\n\nimport { BaseCheckbox, Box, Flex, Typography } from '@strapi/design-system';\nimport get from 'lodash/get';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\nimport styled from 'styled-components';\n\nimport { usePermissionsDataManager } from '../../hooks/usePermissionsDataManager';\nimport { cellWidth, firstRowWidth } from '../Permissions/utils/constants';\n\nimport { findDisplayedActions, getCheckboxesState } from './utils';\n\nconst CenteredStack = styled(Flex)`\n width: ${cellWidth};\n flex-shrink: 0;\n`;\n\nconst GlobalActions = ({ actions, isFormDisabled, kind }) => {\n const { formatMessage } = useIntl();\n const { modifiedData, onChangeCollectionTypeGlobalActionCheckbox } = usePermissionsDataManager();\n\n const displayedActions = useMemo(() => {\n return findDisplayedActions(actions);\n }, [actions]);\n\n const checkboxesState = useMemo(() => {\n return getCheckboxesState(displayedActions, modifiedData[kind]);\n }, [modifiedData, displayedActions, kind]);\n\n return (\n <Box paddingBottom={4} paddingTop={6} style={{ paddingLeft: firstRowWidth }}>\n <Flex gap={0}>\n {displayedActions.map(({ label, actionId }) => {\n return (\n <CenteredStack\n direction=\"column\"\n alignItems=\"center\"\n justifyContent=\"center\"\n key={actionId}\n gap={3}\n >\n <Typography variant=\"sigma\" textColor=\"neutral500\">\n {formatMessage({\n id: `Settings.roles.form.permissions.${label.toLowerCase()}`,\n defaultMessage: label,\n })}\n </Typography>\n <BaseCheckbox\n disabled={isFormDisabled}\n onValueChange={(value) => {\n onChangeCollectionTypeGlobalActionCheckbox(kind, actionId, value);\n }}\n name={actionId}\n aria-label={formatMessage(\n {\n id: `Settings.permissions.select-all-by-permission`,\n defaultMessage: 'Select all {label} permissions',\n },\n {\n label: formatMessage({\n id: `Settings.roles.form.permissions.${label.toLowerCase()}`,\n defaultMessage: label,\n }),\n }\n )}\n value={get(checkboxesState, [actionId, 'hasAllActionsSelected'], false)}\n indeterminate={get(checkboxesState, [actionId, 'hasSomeActionsSelected'], false)}\n />\n </CenteredStack>\n );\n })}\n </Flex>\n </Box>\n );\n};\n\nGlobalActions.defaultProps = {\n actions: [],\n};\n\nGlobalActions.propTypes = {\n actions: PropTypes.arrayOf(\n PropTypes.shape({\n label: PropTypes.string.isRequired,\n actionId: PropTypes.string.isRequired,\n subjects: PropTypes.array.isRequired,\n })\n ),\n isFormDisabled: PropTypes.bool.isRequired,\n kind: PropTypes.string.isRequired,\n};\n\nexport default memo(GlobalActions);\n","import React, { memo } from 'react';\n\nimport { Box } from '@strapi/design-system';\nimport sortBy from 'lodash/sortBy';\nimport PropTypes from 'prop-types';\nimport styled from 'styled-components';\n\nimport ContentTypeCollapses from '../ContentTypeCollapses';\nimport GlobalActions from '../GlobalActions';\n\nconst StyledBox = styled(Box)`\n overflow-x: auto;\n`;\n\nconst ContentTypes = ({ isFormDisabled, kind, layout: { actions, subjects } }) => {\n const sortedSubjects = sortBy([...subjects], 'label');\n\n return (\n <StyledBox background=\"neutral0\">\n <GlobalActions actions={actions} kind={kind} isFormDisabled={isFormDisabled} />\n <ContentTypeCollapses\n actions={actions}\n isFormDisabled={isFormDisabled}\n pathToData={kind}\n subjects={sortedSubjects}\n />\n </StyledBox>\n );\n};\n\nContentTypes.propTypes = {\n isFormDisabled: PropTypes.bool.isRequired,\n kind: PropTypes.string.isRequired,\n layout: PropTypes.shape({\n actions: PropTypes.array,\n subjects: PropTypes.arrayOf(\n PropTypes.shape({\n uid: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n properties: PropTypes.array.isRequired,\n })\n ),\n }).isRequired,\n};\n\nexport default memo(ContentTypes);\n","import get from 'lodash/get';\n\nimport { createArrayOfValues } from '../../../utils';\n\n/**\n * We need to format the actions to an array of object that matches the ConditionsModal action's props\n * @param {array<object>} actions\n * @config {string} displayName the displayName of the action\n * @config {string} action requied, the name of the action\n * @param {object} modifiedData\n * @param {array} pathToData\n */\nconst formatActions = (actions, modifiedData, pathToData) => {\n return actions.map((action) => {\n const checkboxName = [...pathToData, action.action, 'properties', 'enabled'];\n const checkboxValue = get(modifiedData, checkboxName, false);\n const conditionValue = get(modifiedData, [...pathToData, action.action, 'conditions'], {});\n const hasConditions = createArrayOfValues(conditionValue).some((val) => val);\n\n return {\n ...action,\n isDisplayed: checkboxValue,\n checkboxName: checkboxName.join('..'),\n hasSomeActionsSelected: checkboxValue,\n value: checkboxValue,\n hasConditions,\n label: action.displayName,\n actionId: action.action,\n pathToConditionsObject: [...pathToData, action.action],\n };\n });\n};\nexport default formatActions;\n","import { createArrayOfValues } from '../../../utils';\n\nconst getConditionsButtonState = (valueObj) => {\n const relatedData = Object.entries(valueObj).reduce((acc, current) => {\n const [catName, { conditions }] = current;\n\n acc[catName] = conditions;\n\n return acc;\n }, {});\n\n const arrayOfValues = createArrayOfValues(relatedData);\n\n return arrayOfValues.some((val) => val);\n};\n\nexport default getConditionsButtonState;\n","import React, { useMemo, useState } from 'react';\n\nimport { Box, Checkbox, Flex, Grid, GridItem, Typography } from '@strapi/design-system';\nimport get from 'lodash/get';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\nimport styled from 'styled-components';\n\nimport { usePermissionsDataManager } from '../../../hooks/usePermissionsDataManager';\nimport ConditionsButton from '../../ConditionsButton';\nimport ConditionsModal from '../../ConditionsModal';\nimport { getCheckboxState, removeConditionKeyFromData } from '../../utils';\n\nimport { formatActions, getConditionsButtonState } from './utils';\n\nconst Border = styled.div`\n flex: 1;\n align-self: center;\n border-top: 1px solid ${({ theme }) => theme.colors.neutral150};\n`;\n\nconst CheckboxWrapper = styled.div`\n position: relative;\n word-break: keep-all;\n ${({ hasConditions, disabled, theme }) =>\n hasConditions &&\n `\n &:before {\n content: '';\n position: absolute;\n top: ${-4 / 16}rem;\n left: ${-8 / 16}rem;\n width: ${6 / 16}rem;\n height: ${6 / 16}rem;\n border-radius: ${20 / 16}rem;\n background: ${disabled ? theme.colors.neutral100 : theme.colors.primary600};\n }\n `}\n`;\n\nconst SubCategory = ({ categoryName, isFormDisabled, subCategoryName, actions, pathToData }) => {\n const [isModalOpen, setModalOpen] = useState(false);\n const { modifiedData, onChangeParentCheckbox, onChangeSimpleCheckbox } =\n usePermissionsDataManager();\n const { formatMessage } = useIntl();\n\n const mainData = get(modifiedData, pathToData, {});\n const dataWithoutCondition = useMemo(() => {\n return Object.keys(mainData).reduce((acc, current) => {\n acc[current] = removeConditionKeyFromData(mainData[current]);\n\n return acc;\n }, {});\n }, [mainData]);\n\n const { hasAllActionsSelected, hasSomeActionsSelected } = getCheckboxState(dataWithoutCondition);\n\n const handleToggleModalIsOpen = () => {\n setModalOpen((s) => !s);\n };\n\n const handleModalClose = () => {\n setModalOpen(false);\n };\n // We need to format the actions so it matches the shape of the ConditionsModal actions props\n const formattedActions = formatActions(actions, modifiedData, pathToData);\n const doesButtonHasCondition = getConditionsButtonState(get(modifiedData, [...pathToData], {}));\n\n return (\n <>\n <Box>\n <Flex justifyContent=\"space-between\" alignItems=\"center\">\n <Box paddingRight={4}>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {subCategoryName}\n </Typography>\n </Box>\n <Border />\n <Box paddingLeft={4}>\n <Checkbox\n name={pathToData.join('..')}\n disabled={isFormDisabled}\n // Keep same signature as packages/core/admin/admin/src/components/Roles/Permissions/index.js l.91\n onValueChange={(value) => {\n onChangeParentCheckbox({\n target: {\n name: pathToData.join('..'),\n value,\n },\n });\n }}\n indeterminate={hasSomeActionsSelected}\n value={hasAllActionsSelected}\n >\n {formatMessage({ id: 'app.utils.select-all', defaultMessage: 'Select all' })}\n </Checkbox>\n </Box>\n </Flex>\n <Flex paddingTop={6} paddingBottom={6}>\n <Grid gap={2} style={{ flex: 1 }}>\n {formattedActions.map(({ checkboxName, value, action, displayName, hasConditions }) => {\n return (\n <GridItem col={3} key={action}>\n <CheckboxWrapper disabled={isFormDisabled} hasConditions={hasConditions}>\n <Checkbox\n name={checkboxName}\n disabled={isFormDisabled}\n // Keep same signature as packages/core/admin/admin/src/components/Roles/Permissions/index.js l.91\n onValueChange={(value) => {\n onChangeSimpleCheckbox({\n target: {\n name: checkboxName,\n value,\n },\n });\n }}\n value={value}\n >\n {displayName}\n </Checkbox>\n </CheckboxWrapper>\n </GridItem>\n );\n })}\n </Grid>\n <ConditionsButton\n hasConditions={doesButtonHasCondition}\n onClick={handleToggleModalIsOpen}\n />\n </Flex>\n </Box>\n {isModalOpen && (\n <ConditionsModal\n headerBreadCrumbs={[categoryName, subCategoryName]}\n actions={formattedActions}\n isFormDisabled={isFormDisabled}\n onClosed={handleModalClose}\n onToggle={handleToggleModalIsOpen}\n />\n )}\n </>\n );\n};\n\nSubCategory.propTypes = {\n actions: PropTypes.array.isRequired,\n categoryName: PropTypes.string.isRequired,\n isFormDisabled: PropTypes.bool.isRequired,\n subCategoryName: PropTypes.string.isRequired,\n pathToData: PropTypes.array.isRequired,\n};\n\nexport default SubCategory;\n","import React, { useMemo } from 'react';\n\nimport { Accordion, AccordionContent, AccordionToggle, Box } from '@strapi/design-system';\nimport upperFirst from 'lodash/upperFirst';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\n\nimport SubCategory from '../SubCategory';\n\nconst PermissionRow = ({\n childrenForm,\n kind,\n name,\n isOpen,\n isFormDisabled,\n isWhite,\n onOpenCategory,\n pathToData,\n}) => {\n const { formatMessage } = useIntl();\n const handleClick = () => {\n onOpenCategory(name);\n };\n\n const categoryName = useMemo(() => {\n const split = name.split('::');\n\n return split.pop();\n }, [name]);\n\n return (\n <Accordion\n expanded={isOpen}\n onToggle={handleClick}\n id={`accordion-${name}`}\n variant={isWhite ? 'primary' : 'secondary'}\n >\n <AccordionToggle\n title={upperFirst(categoryName)}\n description={`${formatMessage(\n { id: 'Settings.permissions.category' },\n { category: categoryName }\n )} ${kind === 'plugins' ? 'plugin' : kind}`}\n />\n\n <AccordionContent>\n <Box padding={6}>\n {childrenForm.map(({ actions, subCategoryName, subCategoryId }) => (\n <SubCategory\n key={subCategoryName}\n actions={actions}\n categoryName={categoryName}\n isFormDisabled={isFormDisabled}\n subCategoryName={subCategoryName}\n pathToData={[...pathToData, subCategoryId]}\n />\n ))}\n </Box>\n </AccordionContent>\n </Accordion>\n );\n};\n\nPermissionRow.defaultProps = {};\n\nPermissionRow.propTypes = {\n childrenForm: PropTypes.array.isRequired,\n isOpen: PropTypes.bool.isRequired,\n isFormDisabled: PropTypes.bool.isRequired,\n isWhite: PropTypes.bool.isRequired,\n kind: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n onOpenCategory: PropTypes.func.isRequired,\n pathToData: PropTypes.array.isRequired,\n};\n\nexport default PermissionRow;\n","import React, { useState } from 'react';\n\nimport { Box } from '@strapi/design-system';\nimport PropTypes from 'prop-types';\n\nimport PermissionRow from './Row';\n\nconst PluginsAndSettingsPermissions = ({ isFormDisabled, kind, layout }) => {\n const [openedCategory, setOpenedCategory] = useState(null);\n\n const handleOpenCategory = (categoryName) => {\n setOpenedCategory(categoryName === openedCategory ? null : categoryName);\n };\n\n return (\n <Box padding={6} background=\"neutral0\">\n {layout.map(({ category, categoryId, childrenForm }, index) => {\n return (\n <PermissionRow\n key={category}\n childrenForm={childrenForm}\n kind={kind}\n isFormDisabled={isFormDisabled}\n isOpen={openedCategory === category}\n isWhite={index % 2 === 1}\n name={category}\n onOpenCategory={handleOpenCategory}\n pathToData={[kind, categoryId]}\n />\n );\n })}\n </Box>\n );\n};\n\nPluginsAndSettingsPermissions.propTypes = {\n isFormDisabled: PropTypes.bool.isRequired,\n kind: PropTypes.string.isRequired,\n layout: PropTypes.arrayOf(\n PropTypes.shape({\n category: PropTypes.string.isRequired,\n categoryId: PropTypes.string.isRequired,\n childrenForm: PropTypes.arrayOf(\n PropTypes.shape({\n actions: PropTypes.array.isRequired,\n })\n ).isRequired,\n }).isRequired\n ).isRequired,\n};\n\nexport default PluginsAndSettingsPermissions;\n","const findMatchingPermission = (permissions, action, subject) =>\n permissions.find((perm) => perm.action === action && perm.subject === subject);\n\nexport default findMatchingPermission;\n","import get from 'lodash/get';\nimport isEmpty from 'lodash/isEmpty';\nimport merge from 'lodash/merge';\nimport set from 'lodash/set';\n\nimport findMatchingPermission from './findMatchingPermissions';\n/**\n * Creates the default condition form: { [conditionId]: false }\n * @param {object} conditions.id Id of the condition\n * @returns {object}\n */\nconst createDefaultConditionsForm = (conditions, initialConditions = []) =>\n conditions.reduce((acc, current) => {\n acc[current.id] = initialConditions.indexOf(current.id) !== -1;\n\n return acc;\n }, {});\n\n/**\n * Create the default form a property (fields, locales) with all the values\n * set to false\n * @param {object} property.children ex: {children: [{value: 'foo',}]}\n * @param {array<string>} The found property values retrieved from the role associated permissions\n * @returns {object} ex: { foo: false }\n *\n */\nconst createDefaultPropertyForms = ({ children }, propertyValues, prefix = '') => {\n return children.reduce((acc, current) => {\n if (current.children) {\n return {\n ...acc,\n [current.value]: createDefaultPropertyForms(\n current,\n propertyValues,\n `${prefix}${current.value}.`\n ),\n };\n }\n\n const hasProperty = propertyValues.indexOf(`${prefix}${current.value}`) !== -1;\n\n acc[current.value] = hasProperty;\n\n return acc;\n }, {});\n};\n\n/**\n * Creates the default form for all the properties found in a content type's layout\n * @param {array<string>} propertiesArray ex; ['fields', 'locales']\n * @param {object} ctLayout layout of the content type ex:\n * ctLayout = {\n * properties: [{\n * value: 'fields',\n * children: [{value: 'name'}]\n * }\n * }\n * @returns {object} In this case it will return { fields: { name: false } }\n */\nconst createDefaultPropertiesForm = (propertiesArray, ctLayout, matchingPermission) => {\n return propertiesArray.reduce(\n (acc, currentPropertyName) => {\n const foundProperty = ctLayout.properties.find(({ value }) => value === currentPropertyName);\n\n if (foundProperty) {\n const matchingPermissionPropertyValues = get(\n matchingPermission,\n ['properties', foundProperty.value],\n []\n );\n const propertyForm = createDefaultPropertyForms(\n foundProperty,\n matchingPermissionPropertyValues\n );\n\n acc.properties[currentPropertyName] = propertyForm;\n }\n\n return acc;\n },\n { properties: {} }\n );\n};\n\n/**\n * Return an object of content types layout of an action's subject ex: { adress: {uid, label, properties } }\n * @param {array<object>} allLayouts All the content types' layout\n * @param {object} subjects\n */\nconst findLayouts = (allLayouts, subjects) => {\n return subjects.reduce((acc, current) => {\n const foundLayout = allLayouts.find(({ uid }) => uid === current) || null;\n\n if (foundLayout) {\n acc[current] = foundLayout;\n }\n\n return acc;\n }, {});\n};\n\n/**\n * Creates the default for for a content type\n * @param {object} layout.subjects All the content types to display\n * @param {array<object>} actionArray An action has the following shape:\n * action = {label: 'string', actionId: 'string', subjects: [object], applyToProperties: ['string]}\n * @param {array<object>} conditionArray Ex: { id: 'string', category: 'string' }\n * @returns {object} Ex:\n * {\n * ctUId: {\n * [actionId]: {\n * [propertyName]: { enabled: false, conditions: { [id]: false } }\n * }\n * }\n * }\n */\nconst createDefaultCTFormFromLayout = (\n { subjects },\n actionArray,\n conditionArray,\n initialPermissions = []\n) => {\n return actionArray.reduce((defaultForm, current) => {\n const actionSubjects = current.subjects;\n\n const subjectLayouts = findLayouts(subjects, actionSubjects);\n\n // This can happen when an action is not related to a content type\n // for instance the D&P permission is applied only with the cts that\n // have the D&P features enabled\n if (isEmpty(subjectLayouts)) {\n return defaultForm;\n }\n\n // The object has the following shape: { [ctUID]: { [actionId]: { [property]: { enabled: false } } } }\n const contentTypesActions = Object.keys(subjectLayouts).reduce((acc, currentCTUID) => {\n const { actionId, applyToProperties } = current;\n const currentSubjectLayout = subjectLayouts[currentCTUID];\n const properties = currentSubjectLayout.properties.map(({ value }) => value);\n const doesNothaveProperty = properties.every(\n (property) => (applyToProperties || []).indexOf(property) === -1\n );\n\n const matchingPermission = findMatchingPermission(initialPermissions, actionId, currentCTUID);\n const conditionsForm = createDefaultConditionsForm(\n conditionArray,\n get(matchingPermission, 'conditions', [])\n );\n\n if (isEmpty(applyToProperties) || doesNothaveProperty) {\n set(acc, [currentCTUID, actionId], {\n properties: {\n enabled: matchingPermission !== undefined,\n },\n conditions: conditionsForm,\n });\n\n return acc;\n }\n\n const propertiesForm = createDefaultPropertiesForm(\n applyToProperties,\n subjectLayouts[currentCTUID],\n matchingPermission\n );\n\n set(acc, [currentCTUID, actionId], { ...propertiesForm, conditions: conditionsForm });\n\n return acc;\n }, {});\n\n return merge(defaultForm, contentTypesActions);\n }, {});\n};\n\nexport default createDefaultCTFormFromLayout;\nexport {\n createDefaultConditionsForm,\n createDefaultPropertiesForm,\n createDefaultPropertyForms,\n findLayouts,\n};\n","import { createDefaultConditionsForm } from './createDefaultCTFormFromLayout';\nimport findMatchingPermission from './findMatchingPermissions';\n\nconst createSubCategoryForm = (actions, conditions, permissions) => {\n return actions.reduce((acc, current) => {\n const foundMatchingPermission = findMatchingPermission(permissions, current.action, null);\n\n acc[current.action] = {\n properties: {\n enabled: foundMatchingPermission !== undefined,\n },\n conditions: createDefaultConditionsForm(\n conditions,\n foundMatchingPermission?.conditions ?? []\n ),\n };\n\n return acc;\n }, {});\n};\n\nconst createChildrenDefaultForm = (childrenForm, conditions, initialPermissions) => {\n return childrenForm.reduce((acc, current) => {\n acc[current.subCategoryId] = createSubCategoryForm(\n current.actions,\n conditions,\n initialPermissions\n );\n\n return acc;\n }, {});\n};\n\nconst createDefaultPluginsFormFromLayout = (pluginsLayout, conditions, initialPermissions = []) => {\n return pluginsLayout.reduce((acc, { categoryId, childrenForm }) => {\n const childrenDefaultForm = createChildrenDefaultForm(\n childrenForm,\n conditions,\n initialPermissions\n );\n acc[categoryId] = childrenDefaultForm;\n\n return acc;\n }, {});\n};\n\nexport default createDefaultPluginsFormFromLayout;\nexport { createChildrenDefaultForm, createSubCategoryForm };\n","import groupBy from 'lodash/groupBy';\n\nconst replaceName = (name) => name.split(' ').join('-');\n\nconst formatLayout = (layout, groupByKey) => {\n return Object.entries(groupBy(layout, groupByKey)).map(([itemName, item]) => ({\n category: itemName,\n categoryId: replaceName(itemName),\n childrenForm: Object.entries(groupBy(item, 'subCategory')).map(\n ([subCategoryName, actions]) => ({\n subCategoryName,\n subCategoryId: replaceName(subCategoryName),\n actions,\n })\n ),\n }));\n};\n\nexport default formatLayout;\n","import createDefaultCTFormFromLayout from './utils/createDefaultCTFormFromLayout';\nimport createDefaultPluginsFormFromLayout from './utils/createDefaultPluginsFormFromLayout';\nimport formatLayoutForSettingsAndPlugins from './utils/formatLayoutForSettingsAndPlugins';\n\nconst init = (layout, permissions) => {\n const {\n conditions,\n sections: { collectionTypes, singleTypes, plugins, settings },\n } = layout;\n\n const layouts = {\n collectionTypes,\n singleTypes,\n plugins: formatLayoutForSettingsAndPlugins(plugins, 'plugin'),\n settings: formatLayoutForSettingsAndPlugins(settings, 'category'),\n };\n const defaultForm = {\n collectionTypes: createDefaultCTFormFromLayout(\n collectionTypes,\n collectionTypes.actions || [],\n conditions,\n permissions\n ),\n singleTypes: createDefaultCTFormFromLayout(\n singleTypes,\n singleTypes.actions || [],\n conditions,\n permissions\n ),\n plugins: createDefaultPluginsFormFromLayout(layouts.plugins, conditions, permissions),\n settings: createDefaultPluginsFormFromLayout(layouts.settings, conditions, permissions),\n };\n\n return {\n initialData: defaultForm,\n modifiedData: defaultForm,\n layouts,\n };\n};\n\nexport default init;\n","import has from 'lodash/has';\nimport isObject from 'lodash/isObject';\nimport omit from 'lodash/omit';\n\nimport { createArrayOfValues } from '../../utils';\n\n/**\n * Changes all the conditions leaf when the properties are all falsy\n * @param {object} obj the modifiedData state\n * @returns {object} the mutated modifiedData\n */\nconst updateConditionsToFalse = (obj) => {\n return Object.keys(obj).reduce((acc, current) => {\n const currentValue = obj[current];\n\n if (isObject(currentValue) && !has(currentValue, 'conditions')) {\n return { ...acc, [current]: updateConditionsToFalse(currentValue) };\n }\n\n if (isObject(currentValue) && has(currentValue, 'conditions')) {\n const isActionEnabled = createArrayOfValues(omit(currentValue, 'conditions')).some(\n (val) => val\n );\n\n if (!isActionEnabled) {\n const updatedConditions = Object.keys(currentValue.conditions).reduce((acc1, current) => {\n acc1[current] = false;\n\n return acc1;\n }, {});\n\n return { ...acc, [current]: { ...currentValue, conditions: updatedConditions } };\n }\n }\n\n acc[current] = currentValue;\n\n return acc;\n }, {});\n};\n\nexport default updateConditionsToFalse;\n","import isObject from 'lodash/isObject';\n\n/**\n * Sets all the none object values of an object to the given one\n * @param {object} obj\n * @param {boolean} valueToSet The value we want to set\n * It preserves the shape of the object, it only modifies the leafs\n * of an object.\n * This utility is very helpful when dealing with parent<>children checkboxes\n */\nconst updateValues = (obj, valueToSet, isFieldUpdate = false) => {\n return Object.keys(obj).reduce((acc, current) => {\n const currentValue = obj[current];\n\n if (current === 'conditions' && !isFieldUpdate) {\n acc[current] = currentValue;\n\n return acc;\n }\n\n if (isObject(currentValue)) {\n return { ...acc, [current]: updateValues(currentValue, valueToSet, current === 'fields') };\n }\n\n acc[current] = valueToSet;\n\n return acc;\n }, {});\n};\n\nexport default updateValues;\n","import produce from 'immer';\nimport cloneDeep from 'lodash/cloneDeep';\nimport get from 'lodash/get';\nimport has from 'lodash/has';\nimport isObject from 'lodash/isObject';\nimport set from 'lodash/set';\n\nimport updateConditionsToFalse from './utils/updateConditionsToFalse';\nimport updateValues from './utils/updateValues';\n\nconst initialState = {\n initialData: {},\n modifiedData: {},\n layouts: {},\n};\n\n/* eslint-disable consistent-return */\nconst reducer = (state, action) =>\n produce(state, (draftState) => {\n switch (action.type) {\n // This action is called when a checkbox in the <GlobalActions />\n // changes\n case 'ON_CHANGE_COLLECTION_TYPE_GLOBAL_ACTION_CHECKBOX': {\n const { collectionTypeKind, actionId, value } = action;\n const pathToData = ['modifiedData', collectionTypeKind];\n\n Object.keys(get(state, pathToData)).forEach((collectionType) => {\n const collectionTypeActionData = get(\n state,\n [...pathToData, collectionType, actionId],\n undefined\n );\n\n if (collectionTypeActionData) {\n let updatedValues = updateValues(collectionTypeActionData, value);\n\n // We need to remove the applied conditions\n if (!value && updatedValues.conditions) {\n const updatedConditions = updateValues(updatedValues.conditions, false);\n\n updatedValues = { ...updatedValues, conditions: updatedConditions };\n }\n\n set(draftState, [...pathToData, collectionType, actionId], updatedValues);\n }\n });\n\n break;\n }\n case 'ON_CHANGE_COLLECTION_TYPE_ROW_LEFT_CHECKBOX': {\n const { pathToCollectionType, propertyName, rowName, value } = action;\n let nextModifiedDataState = cloneDeep(state.modifiedData);\n const pathToModifiedDataCollectionType = pathToCollectionType.split('..');\n\n const objToUpdate = get(nextModifiedDataState, pathToModifiedDataCollectionType, {});\n\n Object.keys(objToUpdate).forEach((actionId) => {\n // When a ct has multiple properties (ex: locales, field)\n // We need to make sure that we add any new property to the modifiedData\n // object.\n if (has(objToUpdate[actionId], `properties.${propertyName}`)) {\n const objValue = get(objToUpdate, [actionId, 'properties', propertyName, rowName]);\n const pathToDataToSet = [\n ...pathToModifiedDataCollectionType,\n actionId,\n 'properties',\n propertyName,\n rowName,\n ];\n\n if (!isObject(objValue)) {\n set(nextModifiedDataState, pathToDataToSet, value);\n } else {\n const updatedValue = updateValues(objValue, value);\n\n set(nextModifiedDataState, pathToDataToSet, updatedValue);\n }\n }\n });\n\n // When we uncheck a row, we need to check if we also need to disable the conditions\n if (!value) {\n nextModifiedDataState = updateConditionsToFalse(nextModifiedDataState);\n }\n\n set(draftState, 'modifiedData', nextModifiedDataState);\n\n break;\n }\n case 'ON_CHANGE_CONDITIONS': {\n Object.entries(action.conditions).forEach((array) => {\n const [stringPathToData, conditionsToUpdate] = array;\n\n set(\n draftState,\n ['modifiedData', ...stringPathToData.split('..'), 'conditions'],\n conditionsToUpdate\n );\n });\n\n break;\n }\n case 'ON_CHANGE_SIMPLE_CHECKBOX': {\n let nextModifiedDataState = cloneDeep(state.modifiedData);\n\n set(nextModifiedDataState, [...action.keys.split('..')], action.value);\n\n // When we uncheck a single checkbox we need to remove the conditions from the parent\n if (!action.value) {\n nextModifiedDataState = updateConditionsToFalse(nextModifiedDataState);\n }\n\n set(draftState, 'modifiedData', nextModifiedDataState);\n\n break;\n }\n /*\n * Here the idea is to retrieve a specific value of the modifiedObject\n * then update all the boolean values of the retrieved one\n * and update the drafState.\n *\n * For instance in order to enable create action for all the fields and locales\n * of the restaurant content type we need to :\n * 1. Retrieve the modifiedData.collectionTypes.restaurant.create object\n * 2. Toggle all the end boolean values to the desired one\n * 3. Update the draftState\n *\n * Since the case works well in order to update what we called \"parent\" checkbox. We can\n * reuse the action when we need to toggle change all the values that depends on this one.\n * A parent checkbox is a checkbox which value is not a boolean but depends on its children ones, therefore,\n * a parent checkbox does not have a represented value in the draftState, they are just helpers.\n *\n * Given the following data:\n *\n * const data = {\n * restaurant: {\n * create: {\n * fields: { name: true },\n * locales: { en: false }\n * }\n * }\n * }\n *\n * The value of the create checkbox for the restaurant will be ƒalse since not all its children have\n * truthy values and in order to set its value to true when need to have all the values of its children set to true.\n *\n * Similarly, we can reuse the logic for the components attributes\n *\n */\n case 'ON_CHANGE_TOGGLE_PARENT_CHECKBOX': {\n const { keys, value } = action;\n const pathToValue = [...keys.split('..')];\n let nextModifiedDataState = cloneDeep(state.modifiedData);\n const oldValues = get(nextModifiedDataState, pathToValue, {});\n\n const updatedValues = updateValues(oldValues, value);\n set(nextModifiedDataState, pathToValue, updatedValues);\n\n // When we uncheck a parent checkbox we need to remove the associated conditions\n if (!value) {\n nextModifiedDataState = updateConditionsToFalse(nextModifiedDataState);\n }\n\n set(draftState, ['modifiedData'], nextModifiedDataState);\n\n break;\n }\n case 'RESET_FORM': {\n draftState.modifiedData = state.initialData;\n break;\n }\n case 'SET_FORM_AFTER_SUBMIT': {\n draftState.initialData = state.modifiedData;\n break;\n }\n default:\n return draftState;\n }\n });\n\nexport default reducer;\nexport { initialState };\n","/**\n * Returns an array of condition names when a condition is enabled\n * @param {object} conditions\n * @config {boolean}\n */\nconst createConditionsArray = (conditions) => {\n return Object.entries(conditions)\n .filter(([, conditionValue]) => {\n return conditionValue;\n })\n .map(([conditionName]) => conditionName);\n};\n\nconst createPermission = (array) => {\n const [actionName, { conditions }] = array;\n\n return {\n action: actionName,\n subject: null,\n conditions: createConditionsArray(conditions),\n properties: {},\n };\n};\n\nconst createPermissionsArrayFromCategory = (categoryPermissions) => {\n return Object.values(categoryPermissions).reduce((acc, current) => {\n const permissions = Object.entries(current).reduce((acc1, current1) => {\n const [\n ,\n {\n properties: { enabled },\n },\n ] = current1;\n\n if (!enabled) {\n return acc1;\n }\n\n const permission = createPermission(current1);\n\n acc1.push(permission);\n\n return acc1;\n }, []);\n\n return [...acc, ...permissions];\n }, []);\n};\n\nconst formatSettingsPermissionsToAPI = (settingsPermissionsObject) => {\n return Object.values(settingsPermissionsObject).reduce((acc, current) => {\n const currentCategoryPermissions = createPermissionsArrayFromCategory(current);\n\n return [...acc, ...currentCategoryPermissions];\n }, []);\n};\n\nexport default formatSettingsPermissionsToAPI;\nexport { createConditionsArray, createPermission, createPermissionsArrayFromCategory };\n","import isObject from 'lodash/isObject';\n\nimport { createArrayOfValues } from '../../utils';\n\nimport { createConditionsArray } from './formatSettingsPermissionsToAPI';\n\n/**\n * Returns an array of property values\n * @param {object} propertyValue\n * @param {string} prefix\n * @returns {array<string>}\n */\nconst createPropertyArray = (propertyValue, prefix = '') => {\n return Object.entries(propertyValue).reduce((acc, current) => {\n const [name, value] = current;\n\n if (isObject(value)) {\n return [...acc, ...createPropertyArray(value, `${prefix}${name}.`)];\n }\n\n if (value && !isObject(value)) {\n acc.push(`${prefix}${name}`);\n }\n\n return acc;\n }, []);\n};\n\n/**\n *\n * @param {string} action\n * @param {string} subject\n * @param {object} param2\n * @config {object} conditions\n * @config {object} the name of the properties array we need to fill\n * @returns {object}\n */\nconst createPermissionWithProperties = (action, subject, { conditions, properties }) => {\n return Object.entries(properties).reduce(\n (acc, current) => {\n const [propertyName, propertyValue] = current;\n\n acc.properties[propertyName] = createPropertyArray(propertyValue);\n\n return acc;\n },\n { action, subject, conditions: createConditionsArray(conditions), properties: {} }\n );\n};\n\n/**\n *\n * @param {string} action The name of the action\n * @param {string} subject The name of the subject\n * @param {object} param2\n * @returns {object}\n */\nconst createPermissionWithoutProperties = (action, subject, { conditions }) => {\n return {\n action,\n subject,\n properties: {},\n conditions: createConditionsArray(conditions),\n };\n};\n\n/**\n *\n * @param {string} subject The name of the subject\n * @param {object} actions The subject's actions\n * @returns {array<object>}\n */\nconst createSubjectPermissions = (subject, actions) => {\n const permissions = Object.entries(actions).reduce((acc, current) => {\n const [actionName, permissions] = current;\n const shouldCreatePermission = createArrayOfValues(permissions).some((val) => val);\n\n if (!shouldCreatePermission) {\n return acc;\n }\n\n if (!permissions?.properties?.enabled) {\n const createdPermissionsArray = createPermissionWithProperties(\n actionName,\n subject,\n permissions\n );\n\n return [...acc, createdPermissionsArray];\n }\n\n if (!permissions.properties.enabled) {\n return acc;\n }\n\n const permission = createPermissionWithoutProperties(actionName, subject, permissions);\n\n acc.push(permission);\n\n return acc;\n }, []);\n\n return permissions;\n};\n\n/**\n *\n * @param {object} contentTypesPermissions\n * @returns {array<object>}\n */\nconst formatContentTypesPermissionToAPI = (contentTypesPermissions) => {\n const permissions = Object.entries(contentTypesPermissions).reduce((allPermissions, current) => {\n const [subject, currentSubjectActions] = current;\n\n const permissions = createSubjectPermissions(subject, currentSubjectActions);\n\n return [...allPermissions, ...permissions];\n }, []);\n\n return permissions;\n};\n\nexport default formatContentTypesPermissionToAPI;\nexport { createPermissionWithProperties, createPropertyArray };\n","import formatContentTypesPermissionToAPI from './formatContentTypesPermissionToAPI';\nimport formatSettingsPermissionsToAPI from './formatSettingsPermissionsToAPI';\n\nconst formatPermissionsToAPI = (modifiedData) => {\n const pluginsPermissions = formatSettingsPermissionsToAPI(modifiedData.plugins);\n const settingsPermissions = formatSettingsPermissionsToAPI(modifiedData.settings);\n const collectionTypesPermissions = formatContentTypesPermissionToAPI(\n modifiedData.collectionTypes\n );\n\n const singleTypesPermissions = formatContentTypesPermissionToAPI(modifiedData.singleTypes);\n\n return [\n ...pluginsPermissions,\n ...settingsPermissions,\n ...collectionTypesPermissions,\n ...singleTypesPermissions,\n ];\n};\n\nexport default formatPermissionsToAPI;\n","const TAB_LABELS = [\n {\n labelId: 'app.components.LeftMenuLinkContainer.collectionTypes',\n defaultMessage: 'Collection Types',\n id: 'collectionTypes',\n },\n {\n labelId: 'app.components.LeftMenuLinkContainer.singleTypes',\n id: 'singleTypes',\n defaultMessage: 'Single Types',\n },\n {\n labelId: 'app.components.LeftMenuLinkContainer.plugins',\n defaultMessage: 'Plugins',\n id: 'plugins',\n },\n {\n labelId: 'app.components.LeftMenuLinkContainer.settings',\n defaultMessage: 'Settings',\n id: 'settings',\n },\n];\n\nexport default TAB_LABELS;\n","import React, { forwardRef, memo, useCallback, useImperativeHandle, useReducer } from 'react';\n\nimport { Tab, TabGroup, TabPanel, TabPanels, Tabs } from '@strapi/design-system';\nimport { difference } from '@strapi/helper-plugin';\nimport has from 'lodash/has';\nimport isEmpty from 'lodash/isEmpty';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\n\nimport { PermissionsDataManagerProvider } from '../../hooks/usePermissionsDataManager';\nimport ContentTypes from '../ContentTypes';\nimport PluginsAndSettings from '../PluginsAndSettings';\n\nimport init from './init';\nimport reducer, { initialState } from './reducer';\nimport formatPermissionsToAPI from './utils/formatPermissionsToAPI';\nimport TAB_LABELS from './utils/tabLabels';\n\nconst Permissions = forwardRef(({ layout, isFormDisabled, permissions }, ref) => {\n const [{ initialData, layouts, modifiedData }, dispatch] = useReducer(reducer, initialState, () =>\n init(layout, permissions)\n );\n const { formatMessage } = useIntl();\n\n useImperativeHandle(ref, () => {\n return {\n getPermissions() {\n const collectionTypesDiff = difference(\n initialData.collectionTypes,\n modifiedData.collectionTypes\n );\n const singleTypesDiff = difference(initialData.singleTypes, modifiedData.singleTypes);\n\n const contentTypesDiff = { ...collectionTypesDiff, ...singleTypesDiff };\n\n let didUpdateConditions;\n\n if (isEmpty(contentTypesDiff)) {\n didUpdateConditions = false;\n } else {\n didUpdateConditions = Object.values(contentTypesDiff).some((permission) => {\n return Object.values(permission).some((permissionValue) =>\n has(permissionValue, 'conditions')\n );\n });\n }\n\n return { permissionsToSend: formatPermissionsToAPI(modifiedData), didUpdateConditions };\n },\n resetForm() {\n dispatch({ type: 'RESET_FORM' });\n },\n setFormAfterSubmit() {\n dispatch({ type: 'SET_FORM_AFTER_SUBMIT' });\n },\n };\n });\n\n const handleChangeCollectionTypeLeftActionRowCheckbox = (\n pathToCollectionType,\n propertyName,\n rowName,\n value\n ) => {\n dispatch({\n type: 'ON_CHANGE_COLLECTION_TYPE_ROW_LEFT_CHECKBOX',\n pathToCollectionType,\n propertyName,\n rowName,\n value,\n });\n };\n\n const handleChangeCollectionTypeGlobalActionCheckbox = (collectionTypeKind, actionId, value) => {\n dispatch({\n type: 'ON_CHANGE_COLLECTION_TYPE_GLOBAL_ACTION_CHECKBOX',\n collectionTypeKind,\n actionId,\n value,\n });\n };\n\n const handleChangeConditions = (conditions) => {\n dispatch({ type: 'ON_CHANGE_CONDITIONS', conditions });\n };\n\n const handleChangeSimpleCheckbox = useCallback(({ target: { name, value } }) => {\n dispatch({\n type: 'ON_CHANGE_SIMPLE_CHECKBOX',\n keys: name,\n value,\n });\n }, []);\n\n const handleChangeParentCheckbox = useCallback(({ target: { name, value } }) => {\n dispatch({\n type: 'ON_CHANGE_TOGGLE_PARENT_CHECKBOX',\n keys: name,\n value,\n });\n }, []);\n\n return (\n <PermissionsDataManagerProvider\n availableConditions={layout.conditions}\n modifiedData={modifiedData}\n onChangeConditions={handleChangeConditions}\n onChangeSimpleCheckbox={handleChangeSimpleCheckbox}\n onChangeParentCheckbox={handleChangeParentCheckbox}\n onChangeCollectionTypeLeftActionRowCheckbox={handleChangeCollectionTypeLeftActionRowCheckbox}\n onChangeCollectionTypeGlobalActionCheckbox={handleChangeCollectionTypeGlobalActionCheckbox}\n >\n <TabGroup\n id=\"tabs\"\n label={formatMessage({\n id: 'Settings.permissions.users.tabs.label',\n defaultMessage: 'Tabs Permissions',\n })}\n >\n <Tabs>\n {TAB_LABELS.map((tabLabel) => (\n <Tab key={tabLabel.id}>\n {formatMessage({ id: tabLabel.labelId, defaultMessage: tabLabel.defaultMessage })}\n </Tab>\n ))}\n </Tabs>\n <TabPanels style={{ position: 'relative' }}>\n <TabPanel>\n <ContentTypes\n layout={layouts.collectionTypes}\n kind=\"collectionTypes\"\n isFormDisabled={isFormDisabled}\n />\n </TabPanel>\n <TabPanel>\n <ContentTypes\n layout={layouts.singleTypes}\n kind=\"singleTypes\"\n isFormDisabled={isFormDisabled}\n />\n </TabPanel>\n <TabPanel>\n <PluginsAndSettings\n layout={layouts.plugins}\n kind=\"plugins\"\n isFormDisabled={isFormDisabled}\n />\n </TabPanel>\n <TabPanel>\n <PluginsAndSettings\n layout={layouts.settings}\n kind=\"settings\"\n isFormDisabled={isFormDisabled}\n />\n </TabPanel>\n </TabPanels>\n </TabGroup>\n </PermissionsDataManagerProvider>\n );\n});\n\nPermissions.defaultProps = {\n permissions: [],\n layout: {\n conditions: [],\n sections: {\n collectionTypes: {},\n singleTypes: {\n actions: [],\n },\n settings: [],\n plugins: [],\n },\n },\n};\nPermissions.propTypes = {\n layout: PropTypes.object,\n isFormDisabled: PropTypes.bool.isRequired,\n permissions: PropTypes.array,\n};\n\nexport default memo(Permissions);\n","import { useFetchClient } from '@strapi/helper-plugin';\nimport { useQuery } from 'react-query';\n\nexport const useAdminRolePermissionLayout = (id, queryOptions = {}) => {\n const { get } = useFetchClient();\n\n const { data, error, isError, isLoading } = useQuery(\n ['permissions', id],\n async () => {\n const {\n data: { data },\n } = await get('/admin/permissions', {\n // TODO: check with BE why we deviate from our usual admin API format here\n params: { role: id },\n });\n\n return data;\n },\n queryOptions\n );\n\n return { data, error, isError, isLoading };\n};\n","import { useFetchClient } from '@strapi/helper-plugin';\nimport { Entity } from '@strapi/types';\nimport { useQuery } from 'react-query';\n\nimport { GetOwnPermissions } from '../../../../../../../shared/contracts/users';\n\nexport interface APIRolePermissionsQueryParams {\n id: null | Entity.ID;\n}\n\nexport const useAdminRolePermissions = (\n params: APIRolePermissionsQueryParams = { id: null },\n queryOptions = {}\n) => {\n const { id, ...queryParams } = params;\n\n const { get } = useFetchClient();\n\n const {\n data: permissions,\n error,\n isError,\n isLoading,\n refetch,\n } = useQuery(\n ['roles', id, 'permissions', queryParams],\n async () => {\n const {\n data: { data },\n } = await get<GetOwnPermissions.Response>(`/admin/roles/${id}/permissions`, {\n params: queryParams,\n });\n\n return data;\n },\n queryOptions\n );\n\n return { permissions, error, isError, isLoading, refetch };\n};\n"],"names":["Wrapper","ActionRow","createDefaultConditionsForm","value","ConditionsButton","theme","isActive","Cell","RowLabelWithCheckbox","hasAllActionsSelected","hasSomeActionsSelected","StyledBox","Curve","label","SubActionRow","childrenForm","GlobalActions","ContentTypeCollapses","formatLayoutForSettingsAndPlugins","current","permissions","ContentTypes","PluginsAndSettings","get","data"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAwBA,MAAM,CAAC,gCAAgC,gCAAgC,IACrE,cAAkD,wBAAwB;AAE/D,MAAA,4BAA4B,MACvC,iCAAiC,2BAA2B;ACpB9D,MAAMA,YAAU,OAAO;AAAA;AAAA;AAAA,IAGnB,CAAC,EAAE,eAAe,UAAU,YAC5B,iBACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAQmB,KAAK,EAAE;AAAA,oBACV,WAAW,MAAM,OAAO,aAAa,MAAM,OAAO,UAAU;AAAA;AAAA,GAE7E;AAAA;AAGH,MAAM,mBAAmB,CAAC,EAAE,SAAS,WAAW,eAAe,cAAc;AACrE,QAAA,EAAE,kBAAkB;AAE1B,SACG,oBAAAA,WAAA,EAAQ,eAA8B,WACrC,UAAC,oBAAA,QAAA,EAAO,SAAkB,WAAY,oBAAA,KAAA,CAAI,CAAA,GAAI,SAC3C,UAAc,cAAA;AAAA,IACb,IAAI;AAAA,IACJ,gBAAgB;AAAA,EAAA,CACjB,GACH,EACF,CAAA;AAEJ;AAEA,iBAAiB,eAAe;AAAA,EAC9B,WAAW;AAAA,EACX,eAAe;AAAA,EACf,SAAS;AACX;AACA,iBAAiB,YAAY;AAAA,EAC3B,SAAS,UAAU,KAAK;AAAA,EACxB,WAAW,UAAU;AAAA,EACrB,eAAe,UAAU;AAAA,EACzB,SAAS,UAAU;AACrB;AAKA,MAAA,qBAAe,OAAO,gBAAgB;ACvDtC,MAAM,oBAAoB,CAAC,aACzB,OAAO,OAAO,QAAQ,EACnB;AAAA,EAAI,CAAC,MACJ,OAAO,QAAQ,CAAC,EACb,OAAO,CAAC,CAAA,EAAG,KAAK,MAAM,KAAK,EAC3B,IAAI,CAAC,CAAC,GAAG,MAAM,GAAG;AACvB,EACC,KAAK;AAEV,MAAM,mBAAmB,CAAC,YACxB,QAAQ,OAAO,CAAC,KAAK,CAAC,OAAO,QAAQ,MAAM;AACzC,MAAI,KAAK;AAAA,IACP,OAAO,WAAW,KAAK;AAAA,IACvB,UAAU,SAAS,IAAI,CAAC,WAAW;AAAA,MACjC,OAAO,MAAM;AAAA,MACb,OAAO,MAAM;AAAA,IAAA,EACb;AAAA,EAAA,CACH;AAEM,SAAA;AACT,GAAG,CAAE,CAAA;AAEP,MAAM,+BAA+B,CAAC,SAAS,kBAC7C,QACG,IAAI,CAAC,CAAG,EAAA,MAAM,MAAM,MAAM,EAC1B,OACA,OAAO,CAAC,KAAK,UAAU,EAAE,CAAC,KAAK,EAAE,GAAG,cAAc,SAAS,KAAK,EAAE,GAAG,GAAG,IAAI,IAAI,CAAA,CAAE;ACpBvF,MAAMC,cAAY,CAAC;AAAA,EACjB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACE,QAAA,EAAE,kBAAkB;AAEpB,QAAA,eAAe,CAAC,QAAQ;AAC5B,aAAS,MAAM,6BAA6B,iCAAiC,GAAG,CAAC;AAAA,EAAA;AAIjF,SAAA,qBAAC,MAAK,EAAA,IAAG,MAAK,YAAY,SAAS,eAAe,YAAY,eAAe,GAAG,YAAY,GAC1F,UAAA;AAAA,IAAA,qBAAC,QAAK,aAAa,GAAG,OAAO,EAAE,OAAO,IACpC,GAAA,UAAA;AAAA,MAAA,qBAAC,YAAW,EAAA,SAAQ,SAAQ,WAAU,cACnC,UAAA;AAAA,QAAc,cAAA;AAAA,UACb,IAAI;AAAA,UACJ,gBAAgB;AAAA,QAAA,CACjB;AAAA,QAAE;AAAA,MAAA,GAEL;AAAA,MACA,oBAAC,YAAW,EAAA,SAAQ,SAAQ,OAAO,OAAO,WAAU,cAAa,UAAQ,MACtE,UAAc,cAAA;AAAA,QACb,IAAI,mCAAmC,MAAM,YAAa,CAAA;AAAA,QAC1D,gBAAgB;AAAA,MACjB,CAAA,GACH;AAAA,MACC,qBAAA,YAAA,EAAW,SAAQ,SAAQ,WAAU,cAAa,UAAA;AAAA,QAAA;AAAA,QAEhD,cAAc;AAAA,UACb,IAAI;AAAA,UACJ,gBAAgB;AAAA,QAAA,CACjB;AAAA,MAAA,GACH;AAAA,IAAA,GACF;AAAA,IACA,oBAAC,OAAI,OAAO,EAAE,UAAU,KAAK,OAAO,UAClC,UAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,IAAI;AAAA,QACJ,kBAAkB,CAAC,WAAW,GAAG,OAAO,MAAM;AAAA,QAC9C,UAAU;AAAA,QACV,OAAO,kBAAkB,KAAK;AAAA,QAC9B,SAAS,iBAAiB,+BAA+B;AAAA,QACzD,UAAU;AAAA,MAAA;AAAA,IAAA,GAEd;AAAA,EACF,EAAA,CAAA;AAEJ;AAEAA,YAAU,YAAY;AAAA,EACpB,iCAAiC,UAAU,MAAM;AAAA,EACjD,gBAAgB,UAAU,KAAK;AAAA,EAC/B,QAAQ,UAAU,KAAK;AAAA,EACvB,OAAO,UAAU,OAAO;AAAA,EACxB,MAAM,UAAU,OAAO;AAAA,EACvB,OAAO,UAAU,OAAO;AAAA,EACxB,UAAU,UAAU,KAAK;AAC3B;ACnEA,MAAM,uBAAuB,CAAC,YAAY,gBAAgB;AACxD,SAAO,WAAW,OAAO,CAAC,KAAK,YAAY;AACzC,QAAI,QAAQ,EAAE,IAAI,IAAI,aAAa,QAAQ,IAAI,KAAK;AAE7C,WAAA;AAAA,EACT,GAAG,CAAE,CAAA;AACP;AAEA,MAAM,qBAAqB,CAAC,gBAAgB,gBAAgB;AAC1D,SAAO,eAAe,OAAO,CAAC,KAAK,YAAY;AACvC,UAAA,CAAC,cAAc,iBAAiB,IAAI;AAEpC,UAAA,iBAAiB,qBAAqB,mBAAmB,WAAW;AAE1E,QAAI,YAAY,IAAI;AAEb,WAAA;AAAA,EACT,GAAG,CAAE,CAAA;AACP;AAEA,MAAMC,gCAA8B,CAClC,kBACA,cACA,oCACG;AACH,SAAO,iBAAiB,OAAO,CAAC,KAAK,YAAY;AAC/C,UAAM,wBAAwB;AAAA,MAC5B;AAAA,MACA,CAAC,GAAG,QAAQ,wBAAwB,YAAY;AAAA,MAChD,CAAC;AAAA,IAAA;AAGH,UAAM,sBAAsB;AAAA,MAC1B;AAAA,MACA;AAAA,IAAA;AAGF,QAAI,QAAQ,uBAAuB,KAAK,IAAI,CAAC,IAAI;AAE1C,WAAA;AAAA,EACT,GAAG,CAAE,CAAA;AACP;ACpBA,MAAM,kBAAkB,CAAC,EAAE,SAAS,mBAAmB,gBAAgB,UAAU,eAAe;AACxF,QAAA,EAAE,kBAAkB;AAC1B,QAAM,EAAE,qBAAqB,cAAc,uBAAuB,0BAA0B;AAEtF,QAAA,kCAAkC,QAAQ,MAAM;AACpD,WAAO,OAAO,QAAQ,QAAQ,qBAAqB,UAAU,CAAC;AAAA,EAAA,GAC7D,CAAC,mBAAmB,CAAC;AAExB,QAAM,mBAAmB,QAAQ;AAAA,IAC/B,CAAC,EAAE,aAAa,wBAAwB,sBAAsB,MAC5D,gBAAgB,0BAA0B;AAAA,EAAA;AAGxC,QAAA,YAAY,QAAQ,MAAM;AACvB,WAAAA;AAAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAAA,EAED,GAAA,CAAC,kBAAkB,cAAc,+BAA+B,CAAC;AAEpE,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAS,SAAS;AAEtC,QAAA,eAAe,CAAC,MAAM,WAAW;AACrC;AAAA,MACE,QAAQ,CAAC,UAAU;AACb,YAAA,CAAC,MAAM,IAAI,GAAG;AACV,gBAAA,IAAI,IAAI;QAChB;AAEA,YAAI,CAAC,MAAM,IAAI,EAAE,SAAS;AAClB,gBAAA,IAAI,EAAE,UAAU;QACxB;AAEM,cAAA,IAAI,EAAE,UAAU;AAAA,MAAA,CACvB;AAAA,IAAA;AAAA,EACH;AAGF,QAAM,eAAe,MAAM;AACnB,UAAA,4BAA4B,OAAO,QAAQ,KAAK,EAAE,OAAO,CAAC,KAAK,YAAY;AACzE,YAAA,CAAC,KAAK,KAAK,IAAI;AAEf,YAAA,SAAS,OAAO,OAAO,KAAK,EAAE,OAAO,CAAC,MAAM,aAAa;AAC7D,eAAO,EAAE,GAAG,MAAM,GAAG;MACvB,GAAG,CAAE,CAAA;AAEL,UAAI,GAAG,IAAI;AAEJ,aAAA;AAAA,IACT,GAAG,CAAE,CAAA;AAEL,uBAAmB,yBAAyB;AACnC;EAAA;AAGX,SACG,qBAAA,aAAA,EAAY,YAAW,+BAA8B,SAAS,UAC7D,UAAA;AAAA,IAAC,oBAAA,aAAA,EACC,8BAAC,aAAY,EAAA,IAAG,+BAA8B,OAAO,kBAAkB,KAAK,IAAI,GAC7E,UAAA,kBAAkB,IAAI,CAAC,OAAO,OAAO,QACpC,oBAAC,SAAM,WAAW,UAAU,IAAI,SAAS,GACtC,UAAA;AAAA,MACC,cAAc;AAAA,QACZ,IAAI;AAAA,QACJ,gBAAgB;AAAA,MAAA,CACjB;AAAA,IAL4C,EAAA,GAAA,KAOjD,CACD,EACH,CAAA,GACF;AAAA,yBACC,WACE,EAAA,UAAA;AAAA,MAAA,iBAAiB,WAAW,KAC1B,oBAAA,YAAA,EACE,UAAc,cAAA;AAAA,QACb,IAAI;AAAA,QACJ,gBACE;AAAA,MACH,CAAA,GACH;AAAA,MAEF,oBAAC,MACE,EAAA,UAAA,iBAAiB,IAAI,CAAC,EAAE,UAAU,OAAO,uBAAuB,GAAG,UAAU;AACtE,cAAA,OAAO,uBAAuB,KAAK,IAAI;AAG3C,eAAA;AAAA,UAACD;AAAAA,UAAA;AAAA,YAEC;AAAA,YACA;AAAA,YACA;AAAA,YACA,QAAQ,QAAQ,MAAM;AAAA,YACtB;AAAA,YACA,UAAU;AAAA,YACV,OAAO,IAAI,OAAO,MAAM,CAAA,CAAE;AAAA,UAAA;AAAA,UAPrB;AAAA,QAAA;AAAA,MAUV,CAAA,GACH;AAAA,IAAA,GACF;AAAA,IACA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,cACE,oBAAC,QAAO,EAAA,SAAQ,YAAW,SAAS,UACjC,UAAc,cAAA,EAAE,IAAI,gCAAgC,gBAAgB,SAAU,CAAA,GACjF;AAAA,QAEF,YACE,oBAAC,QAAO,EAAA,SAAS,cACd,UAAc,cAAA;AAAA,UACb,IAAI;AAAA,UACJ,gBAAgB;AAAA,QACjB,CAAA,GACH;AAAA,MAAA;AAAA,IAEJ;AAAA,EACF,EAAA,CAAA;AAEJ;AAEA,gBAAgB,YAAY;AAAA,EAC1B,SAAS,UAAU;AAAA,IACjB,UAAU,MAAM;AAAA,MACd,UAAU,UAAU,OAAO;AAAA,MAC3B,cAAc,UAAU;AAAA,MACxB,wBAAwB,UAAU,KAAK;AAAA,MACvC,uBAAuB,UAAU;AAAA,MACjC,aAAa,UAAU,KAAK;AAAA,MAC5B,OAAO,UAAU;AAAA,IAAA,CAClB;AAAA,EAAA,EACD;AAAA,EACF,mBAAmB,UAAU,QAAQ,UAAU,MAAM,EAAE;AAAA,EACvD,gBAAgB,UAAU,KAAK;AAAA,EAC/B,UAAU,UAAU,KAAK;AAAA,EACzB,UAAU,UAAU,KAAK;AAC3B;AC9Ja,MAAA,YAAY,GAAG,MAAM,EAAE;AACvB,MAAA,gBAAgB,GAAG,MAAM,EAAE;AAC3B,MAAA,YAAY,GAAG,KAAK,EAAE;ACEnC,MAAM,eAAe,OAAO;AAAA,WACjB,SAAS;AAAA;ACFpB,MAAM,gBAAgB,OAAO,IAAI;AAAA,mBACd,CAAC,EAAE,YAAY,MAAM,OAAO,CAAC,CAAC;AAAA;AAAA;AAAA,IAG7C,CAAC,EAAE,oBAAoB,iBAAiB,kBAAkB;AAAA;ACG9D,MAAM,uBAAuB,CAAC;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACE,QAAA,EAAE,kBAAkB;AAE1B,SACG,qBAAA,MAAA,EAAK,YAAW,UAAS,aAAa,GAAG,OAAO,EAAE,OAAO,eAAe,YAAY,EAAA,GACnF,UAAA;AAAA,IAAC,oBAAA,KAAA,EAAI,cAAc,GACjB,UAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAM;AAAA,QACN,cAAY;AAAA,UACV;AAAA,YACE,IAAI;AAAA,YACJ,gBAAgB;AAAA,UAClB;AAAA,UACA,EAAE,MAAM;AAAA,QACV;AAAA,QACA,UAAU;AAAA,QAEV,eAAe,CAACE,WACd,SAAS;AAAA,UACP,QAAQ;AAAA,YACN,MAAM;AAAA,YACN,OAAAA;AAAAA,UACF;AAAA,QAAA,CACD;AAAA,QAEH,eAAe;AAAA,QACf;AAAA,MAAA;AAAA,IAAA,GAEJ;AAAA,IACA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,OAAO;AAAA,QACP,YAAW;AAAA,QACX;AAAA,QACC,GAAI,iBAAiB;AAAA,UACpB;AAAA,UACA,iBAAiB;AAAA,UACjB,WAAW,CAAC,EAAE,WAAW,QAAQ,WAAW,QAAQ,QAAQ,QAAQ;AAAA,UACpE,UAAU;AAAA,UACV,MAAM;AAAA,QACR;AAAA,QAEA,UAAA;AAAA,UAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,YAAY,WAAW,SAAS;AAAA,cAChC,WAAW,WAAW,eAAe;AAAA,cACrC,UAAQ;AAAA,cAEP,qBAAW,KAAK;AAAA,YAAA;AAAA,UACnB;AAAA,UACC;AAAA,QAAA;AAAA,MAAA;AAAA,IACH;AAAA,EACF,EAAA,CAAA;AAEJ;AAEA,qBAAqB,eAAe;AAAA,EAClC,UAAU;AAAA,EACV,cAAc;AAAA,EACd,WAAW;AAAA,EAAC;AAAA,EACZ,OAAO;AAAA,EACP,aAAa;AAAA,EACb,eAAe;AACjB;AAEA,qBAAqB,YAAY;AAAA,EAC/B,cAAc,UAAU;AAAA,EACxB,UAAU,UAAU;AAAA,EACpB,OAAO,UAAU,OAAO;AAAA,EACxB,eAAe,UAAU;AAAA,EACzB,gBAAgB,UAAU,KAAK;AAAA,EAC/B,UAAU,UAAU;AAAA,EACpB,SAAS,UAAU,KAAK;AAAA,EACxB,aAAa,UAAU;AAAA,EACvB,OAAO,UAAU;AAAA,EACjB,UAAU,UAAU,KAAK;AAC3B;AAEA,MAAe,yBAAA,KAAK,oBAAoB;AC9FxC,MAAM,sBAAsB,CAAC,QAAQ;AAC/B,MAAA,CAAC,SAAS,GAAG,GAAG;AAClB,WAAO;EACT;AAEO,SAAA;AAAA,IACL,OAAO,OAAO,GAAG,EAAE,IAAI,CAAC,UAAU;AAC5B,UAAA,SAAS,KAAK,GAAG;AACnB,eAAO,oBAAoB,KAAK;AAAA,MAClC;AAEO,aAAA;AAAA,IAAA,CACR;AAAA,EAAA;AAEL;ACjBA,MAAM,6BAA6B,CAAC,QAAQ;AAC1C,MAAI,CAAC,KAAK;AACD,WAAA;AAAA,EACT;AAEA,SAAO,OAAO,KAAK,GAAG,EAAE,OAAO,CAAC,KAAK,YAAY;AAC/C,QAAI,YAAY,cAAc;AACxB,UAAA,OAAO,IAAI,IAAI,OAAO;AAAA,IAC5B;AAEO,WAAA;AAAA,EACT,GAAG,CAAE,CAAA;AACP;ACTA,MAAM,mBAAmB,CAAC,YAAY;AAC9B,QAAA,uBAAuB,2BAA2B,OAAO;AAEzD,QAAA,gBAAgB,oBAAoB,oBAAoB;AAE1D,MAAA,CAAC,cAAc,QAAQ;AACzB,WAAO,EAAE,uBAAuB,OAAO,wBAAwB,MAAM;AAAA,EACvE;AAEA,QAAM,wBAAwB,cAAc,MAAM,CAAC,QAAQ,GAAG;AAC9D,QAAM,yBAAyB,cAAc,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC;AAE7D,SAAA,EAAE,uBAAuB;AAClC;ACbA,MAAM,aAAa,OAAO,UAAU;AAAA;AAAA,WAEzB,KAAK,EAAE;AAAA,sBACI,CAAC,EAAE,UAAA,MAAiB,YAAY,QAAQ,GAAI;AAAA,iBACjD,CAAC,EAAE,YAAY,MAAM,OAAO,CAAC,CAAC;AAAA;ACH/C,MAAM,cAAc,CAAC,UAAU;AAAA,IAC3B,UAAU;AAAA,aACD,MAAM,OAAO,UAAU;AAAA,mBACjB,MAAM,YAAY,IAAI;AAAA;AAAA,IAErC,UAAU;AAAA;AAAA;AAAA,cAGA,MAAM,OAAO,UAAU;AAAA;AAAA;AAAA;ACPrC,MAAM,4BAA4B,CAAC,kBAAkB,cAAc,eAAe;AACzE,SAAA,iBAAiB,IAAI,CAAC,EAAE,UAAU,aAAa,mBAAmB,YAAY;AACnF,QAAI,CAAC,aAAa;AAChB,aAAO,EAAE,UAAU,wBAAwB,OAAO,YAAY;AAAA,IAChE;AAEA,UAAM,wBAAwB,CAAC,GAAG,WAAW,MAAM,IAAI,GAAG,QAAQ;AAC5D,UAAA,oBAAoB,QAAQ,iBAAiB,IAC/C,CAAC,GAAG,uBAAuB,cAAc,SAAS,IAClD;AACE,UAAA,eAAe,kBAAkB,KAAK,IAAI;AAC1C,UAAA,kBAAkB,IAAI,cAAc,CAAC,GAAG,uBAAuB,YAAY,GAAG,IAAI;AAExF,UAAM,gBAAgB,oBAAoB,eAAe,EAAE,KAAK,CAAC,QAAQ,GAAG;AAExE,QAAA,QAAQ,iBAAiB,GAAG;AAC9B,YAAM,QAAQ,IAAI,cAAc,mBAAmB,KAAK;AAIjD,aAAA;AAAA,QACL;AAAA,QACA;AAAA,QACA,uBAAuB;AAAA,QACvB;AAAA,QACA,wBAAwB;AAAA,QACxB;AAAA,QACA,kBAAkB;AAAA,QAClB;AAAA,QACA,wBAAwB;AAAA,MAAA;AAAA,IAE5B;AAEA,UAAM,WAAW,IAAI,cAAc,mBAAmB,IAAI;AAE1D,UAAM,EAAE,uBAAuB,uBAAuB,IAAI,iBAAiB,QAAQ;AAE5E,WAAA;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,kBAAkB;AAAA,MAClB;AAAA,MACA,wBAAwB;AAAA,IAAA;AAAA,EAC1B,CACD;AACH;ACjCA,MAAM,iBAAiB,CAAC,OAAO,aAAa;AAAA,IACxCH,SAAO;AAAA,wBACa,MAAM,OAAO,UAAU;AAAA,aAClC,MAAM,OAAO,UAAU;AAAA,qBACf,WAAW,gBAAgB,KAAK;AAAA;AAAA,IAEjD,OAAO;AAAA;AAAA;AAAA,IAGPI,kBAAgB;AAAA;AAAA;AAAA;AAAA,KAIf,YAAY,KAAK,CAAC;AAAA;AAAA;AAAA;AAAA,MAIjB,CAAC,EAAE,OAAAC,QAAO,UAAAC,gBAAe,eAAeD,QAAOC,SAAQ,CAAC;AAAA;AAAA;AAAA;AAK9D,MAAMN,YAAU,OAAO;AAAA;AAAA;AAAA;AAAA,YAIX,SAAS;AAAA,sBACC,CAAC,EAAE,QAAQ,MAAM,MACnC,SAAS,MAAM,OAAO,aAAa,MAAM,OAAO,QAAQ;AAAA;AAAA;AAI5D,MAAM,aAAa,OAAO;AAAA;AAAA;AAAA;AAAA,IAItBI,kBAAgB;AAAA;AAAA;AAAA,IAGhB,CAAC,EAAE,UAAU,YAAY,YAAY,eAAe,OAAO,QAAQ,CAAC;AAAA;AAAA,MAElE,CAAC,EAAE,OAAO,SAAA,MAAe,eAAe,OAAO,QAAQ,CAAC;AAAA;AAAA;AAI9D,MAAMG,SAAO,OAAO,IAAI;AAAA,WACb,SAAS;AAAA;AAAA;AAIpB,MAAM,UAAU,OAAO,GAAG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAMd,CAAC,EAAE,MAAA,MAAY,MAAM,OAAO,UAAU;AAAA;AAAA;AAIlD,MAAM,UAAU,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBAOP,CAAC,EAAE,MAAA,MAAY,MAAM,OAAO,UAAU;AAAA;AAGtD,MAAM,cAAc,OAAO,GAAG;AAAA;AAAA;AAAA;AAAA;AAM9B,MAAM,WAAW,CAAC;AAAA,EAChB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACJ,QAAM,CAAC,aAAa,YAAY,IAAI,SAAS,KAAK;AAC5C,QAAA,EAAE,kBAAkB;AAC1B,QAAM,EAAE,cAAc,wBAAwB,2BAC5C,0BAA0B;AAE5B,QAAM,0BAA0B,MAAM;AACvB,iBAAA,CAAC,MAAM,CAAC,CAAC;AAAA,EAAA;AAGxB,QAAM,mBAAmB,MAAM;AAC7B,iBAAa,KAAK;AAAA,EAAA;AAKd,QAAA,WAAW,IAAI,cAAc,WAAW,MAAM,IAAI,GAAG,CAAA,CAAE;AAGvD,QAAA,uBAAuB,QAAQ,MAAM;AACzC,WAAO,OAAO,KAAK,QAAQ,EAAE,OAAO,CAAC,KAAK,YAAY;AACpD,UAAI,OAAO,IAAI,KAAK,SAAS,OAAO,GAAG,YAAY;AAE5C,aAAA;AAAA,IACT,GAAG,CAAE,CAAA;AAAA,EAAA,GACJ,CAAC,QAAQ,CAAC;AAEb,QAAM,EAAE,uBAAuB,uBAAuB,IAAI,iBAAiB,oBAAoB;AAKzF,QAAA,oBAAoB,QAAQ,MAAM;AAC/B,WAAA,0BAA0B,kBAAkB,cAAc,UAAU;AAAA,EAC1E,GAAA,CAAC,kBAAkB,cAAc,UAAU,CAAC;AAE/C,QAAM,mCAAmC,kBAAkB;AAAA,IACzD,CAAC,EAAE,cAAA,MAAoB;AAAA,EAAA;AAIvB,SAAA,qBAAC,cAAW,UACV,UAAA;AAAA,IAAA,qBAACP,aAAQ,QACP,UAAA;AAAA,MAAA;AAAA,QAACQ;AAAAA,QAAA;AAAA,UACC,eAAa;AAAA,UACb;AAAA,UACA;AAAA,UACA,cAAc;AAAA,UACd,UAAU;AAAA,UACV,SAAS;AAAA,UACT,aAAa;AAAA,UACb,OAAO;AAAA,UACP;AAAA,UAEA,UAAA,oBAAC,SAAQ,EAAA,aAAa,GAAI,UAAA,+BAAY,WAAU,CAAA,CAAA,IAAM,oBAAA,aAAA,CAAY,CAAA,GAAG;AAAA,QAAA;AAAA,MACvE;AAAA,0BAEC,MAAK,EAAA,OAAO,EAAE,MAAM,KAClB,UAAkB,kBAAA;AAAA,QACjB,CAAC;AAAA,UACC;AAAA,UACA;AAAA,UACA,uBAAAC;AAAAA,UACA,wBAAAC;AAAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA,OAAO;AAAA,QAAA,MACH;AACJ,cAAI,CAAC,aAAa;AACT,mBAAA,oBAAC,kBAAkB,QAAU;AAAA,UACtC;AAEA,cAAI,kBAAkB;AACpB,mBACG,qBAAAH,QAAA,EAAoB,gBAAe,UAAS,YAAW,UACrD,UAAA;AAAA,cAAA,qCAAkB,SAAQ,EAAA;AAAA,cAC3B;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,UAAU;AAAA,kBACV,MAAM;AAAA,kBACN,cAAY;AAAA,oBACV;AAAA,sBACE,IAAI;AAAA,sBACJ,gBAAgB;AAAA,oBAClB;AAAA,oBACA,EAAE,OAAO,GAAG,eAAe,IAAI,KAAK,GAAG;AAAA,kBACzC;AAAA,kBAEA,eAAe,CAAC,UAAU;AACD,2CAAA;AAAA,sBACrB,QAAQ;AAAA,wBACN,MAAM;AAAA,wBACN;AAAA,sBACF;AAAA,oBAAA,CACD;AAAA,kBACH;AAAA,kBACA,eAAeG;AAAAA,kBACf,OAAOD;AAAAA,gBAAA;AAAA,cACT;AAAA,YAAA,EAAA,GAvBS,QAwBX;AAAA,UAEJ;AAEA,iBACG,qBAAAF,QAAA,EAAoB,gBAAe,UAAS,YAAW,UACrD,UAAA;AAAA,YAAA,qCAAkB,SAAQ,EAAA;AAAA,YAC3B;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,UAAU;AAAA,gBACV,eAAe;AAAA,gBACf,MAAM;AAAA,gBAEN,eAAe,CAAC,UAAU;AACD,yCAAA;AAAA,oBACrB,QAAQ;AAAA,sBACN,MAAM;AAAA,sBACN;AAAA,oBACF;AAAA,kBAAA,CACD;AAAA,gBACH;AAAA,gBACA,OAAOE;AAAAA,cAAA;AAAA,YACT;AAAA,UAAA,EAAA,GAhBS,QAiBX;AAAA,QAEJ;AAAA,MAAA,GAEJ;AAAA,MACC,eACC;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,mBAAmB,CAAC,OAAO,4CAA4C;AAAA,UACvE,SAAS;AAAA,UACT;AAAA,UACA,UAAU;AAAA,UACV,UAAU;AAAA,QAAA;AAAA,MACZ;AAAA,IAAA,GAEJ;AAAA,wBACC,aACC,EAAA,UAAA;AAAA,MAACL;AAAAA,MAAA;AAAA,QACC,SAAS;AAAA,QACT,eAAe;AAAA,MAAA;AAAA,IAAA,GAEnB;AAAA,EACF,EAAA,CAAA;AAEJ;AAEA,SAAS,YAAY;AAAA,EACnB,kBAAkB,UAAU,MAAM;AAAA,EAClC,UAAU,UAAU,KAAK;AAAA,EACzB,QAAQ,UAAU,KAAK;AAAA,EACvB,gBAAgB,UAAU,KAAK;AAAA,EAC/B,OAAO,UAAU,OAAO;AAAA,EACxB,eAAe,UAAU,KAAK;AAAA,EAC9B,YAAY,UAAU,OAAO;AAC/B;AC/PA,MAAM,WAAW,OAAO;AAAA,WACb,CAAC,EAAE,MAAA,MAAY,MAAM,OAAO,SAAS;AAAA,kBAC9B,CAAC,EAAE,YAAY,MAAM,OAAO,CAAC,CAAC;AAAA;AAGhD,MAAM,eAAe,MAAO,oBAAA,UAAA,EAAS,UAAC,IAAA,CAAA;ACTtC,MAAM,sBAAsB,CAAC,SAAS,kBAAkB;AAC/C,SAAA,QAAQ,IAAI,CAAC,WAAW;AACvB,UAAA,cACJ,MAAM,QAAQ,OAAO,QAAQ,KAAK,OAAO,SAAS,QAAQ,aAAa,MAAM;AAExE,WAAA,EAAE,GAAG,QAAQ;EAAY,CACjC;AACH;ACDA,MAAMO,cAAY,OAAO,GAAG;AAAA;AAAA;AAAA;AAAA;AAAA,aAKf,IAAI,EAAE;AAAA,cACL,KAAK,EAAE;AAAA,kBACH,CAAC,EAAE,MAAA,MAAY,MAAM,OAAO,UAAU;AAAA;AAAA;AAAA;AAKxD,MAAM,MAAM,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAMP,CAAC,EAAE,OAAO,MAAA,MAAY,MAAM,OAAO,KAAK,CAAC;AAAA;AAAA;AAIrD,MAAM,QAAQ,CAAC,UACb,oBAACA,aACC,EAAA,UAAA;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,OAAM;AAAA,IACN,QAAO;AAAA,IACP,SAAQ;AAAA,IACR,MAAK;AAAA,IACL,OAAM;AAAA,IACL,GAAG;AAAA,IAEJ,UAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,UAAS;AAAA,QACT,UAAS;AAAA,QACT,GAAE;AAAA,QACF,MAAK;AAAA,MAAA;AAAA,IACP;AAAA,EAAA;AACF,EACF,CAAA;AAGF,MAAM,eAAe;AAAA,EACnB,MAAM;AACR;AACA,MAAM,YAAY;AAAA,EAChB,MAAM,UAAU;AAClB;AAEA,MAAe,UAAA,KAAK,KAAK;ACpCzB,MAAMJ,SAAO,OAAO,IAAI;AAAA,WACb,SAAS;AAAA;AAAA;AAIpB,MAAM,aAAa,OAAO,IAAI;AAAA,YAClB,SAAS;AAAA;AAGrB,MAAMP,YAAU,OAAO,GAAG;AAAA,kBACR,KAAK,EAAE;AAAA;AAGzB,MAAM,qBAAqB,OAAO,GAAG;AAAA,iBACpB,CAAC,EAAE,WAAW,MAAM,MACjC,YAAY,aAAa,MAAM,OAAO,UAAU,KAAK,uBAAuB;AAAA;AAGhF,MAAM,WAAW,OAAO,IAAI;AAAA,kBACV,CAAC,EAAE,YAAY,MAAM,OAAO,CAAC,CAAC;AAAA,WACrC,CAAC,EAAE,MAAA,MAAY,MAAM,QAAQ,EAAE;AAAA;AAAA,IAEtC,CAAC,EAAE,eAAe,YAClB,iBACA;AAAA,QACI,UAAU;AAAA;AAAA,iBAED,MAAM,OAAO,UAAU;AAAA;AAAA;AAAA,UAG9B,YAAY,KAAK,CAAC;AAAA;AAAA,GAEzB;AAAA,IACC,CAAC,EAAE,UAAU,MAAA,MAAY,YAAY,YAAY,KAAK,CAAC;AAAA;AAG3D,MAAM,cAAc,OAAO;AAAA,iBACV,CAAC,EAAE,YAAY,MAAM,OAAO,CAAC,CAAC;AAAA,gBAC/B,CAAC,EAAE,YAAY,MAAM,OAAO,CAAC,CAAC;AAAA,WACnC,IAAI,EAAE;AAAA,sBACK,CAAC,EAAE,MAAA,MAAY,MAAM,OAAO,UAAU;AAAA;AAAA;AAAA;AAK5D,MAAM,eAAe,CAAC;AAAA,EACpB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACE,QAAA,EAAE,kBAAkB;AAC1B,QAAM,EAAE,cAAc,wBAAwB,2BAC5C,0BAA0B;AAC5B,QAAM,CAAC,WAAW,YAAY,IAAI,SAAS,IAAI;AAEzC,QAAA,4BAA4B,CAAC,SAAS;AAC1C,iBAAa,CAAC,SAAS;AACrB,UAAI,SAAS,MAAM;AACV,eAAA;AAAA,MACT;AAEO,aAAA;AAAA,IAAA,CACR;AAAA,EAAA;AAGG,QAAA,6BAA6B,QAAQ,MAAM;AAC/C,QAAI,CAAC,WAAW;AACP,aAAA;AAAA,IACT;AAEA,WAAO,aAAa,KAAK,CAAC,EAAE,MAAM,MAAM,UAAU,SAAS;AAAA,EAAA,GAC1D,CAAC,WAAW,YAAY,CAAC;AAE5B,8BACGA,WACC,EAAA,UAAA;AAAA,IAAA,oBAAC,aAAY,EAAA;AAAA,IACZ,aAAa,IAAI,CAAC,EAAE,OAAO,OAAO,UAAU,UAAU,gBAAgB,GAAG,UAAU;AAC5E,YAAA,YAAY,QAAQ,IAAI,aAAa;AACrC,YAAA,cAAc,MAAM,QAAQ,eAAe;AACjD,YAAM,WAAW,cAAc;AAG7B,aAAA,qBAAC,sBAA+B,WAC9B,UAAA;AAAA,QAAA,qBAAC,YACC,EAAA,UAAA;AAAA,UAAC,oBAAAY,SAAA,EAAM,OAAM,aAAa,CAAA;AAAA,+BACzB,MAAK,EAAA,OAAO,EAAE,MAAM,EACnB,GAAA,UAAA;AAAA,YAAA,oBAAC,UAAS,EAAA,OAAO,gBAAgB,UAAoB,eAAe,aAClE,UAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,YAAW;AAAA,gBACX,eAAe;AAAA,gBACd,GAAI,eAAe;AAAA,kBAClB,SAAS,MAAM,0BAA0B,KAAK;AAAA,kBAC9C,iBAAiB;AAAA,kBACjB,WAAW,CAAC,EAAE,IAAI,OACf,QAAQ,WAAW,QAAQ,QAAQ,0BAA0B,KAAK;AAAA,kBACrE,UAAU;AAAA,kBACV,MAAM;AAAA,gBACR;AAAA,gBACA,OAAO;AAAA,gBAEP,UAAA;AAAA,kBAAA,oBAAC,YAAW,EAAA,UAAQ,MAAE,UAAA,WAAW,KAAK,GAAE;AAAA,kBACvC,gCAAa,cAAa,EAAA;AAAA,kBAC3B,oBAAC,YAAW,EAAA,WAAW,SAAU,CAAA;AAAA,gBAAA;AAAA,cAAA;AAAA,YAAA,GAErC;AAAA,gCACC,MAAK,EAAA,OAAO,EAAE,MAAM,KAClB,UAAgB,gBAAA;AAAA,cACf,CAAC,EAAE,UAAU,OAAO,eAAe,uCAAuC;AACxE,oBAAI,CAAC,kCAAkC;AAC9B,yBAAA,oBAAC,kBAAkB,QAAU;AAAA,gBACtC;AAKA,sBAAM,eAAe;AAAA,kBACnB,GAAG,wBAAwB,MAAM,IAAI;AAAA,kBACrC;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA,GAAG,WAAW,MAAM,IAAI;AAAA,kBACxB;AAAA,gBAAA;AAGF,sBAAM,gBAAgB,IAAI,cAAc,cAAc,KAAK;AAE3D,oBAAI,CAAC,iBAAiB;AACpB,yBACG,oBAAAL,QAAA,EAAyB,gBAAe,UAAS,YAAW,UAC3D,UAAA;AAAA,oBAAC;AAAA,oBAAA;AAAA,sBACC,UAAU;AAAA,sBACV,MAAM,aAAa,KAAK,IAAI;AAAA,sBAC5B,cAAY;AAAA,wBACV;AAAA,0BACE,IAAI;AAAA,0BACJ,gBAAgB;AAAA,wBAClB;AAAA,wBACA,EAAE,OAAO,GAAG,UAAU,IAAI,KAAK,IAAI,aAAa,GAAG;AAAA,sBACrD;AAAA,sBAEA,eAAe,CAACJ,WAAU;AACD,+CAAA;AAAA,0BACrB,QAAQ;AAAA,4BACN,MAAM,aAAa,KAAK,IAAI;AAAA,4BAC5B,OAAAA;AAAAA,0BACF;AAAA,wBAAA,CACD;AAAA,sBACH;AAAA,sBACA,OAAO;AAAA,oBAAA;AAAA,kBAAA,KApBA,aAsBX;AAAA,gBAEJ;AAEA,sBAAM,EAAE,uBAAuB,uBAAuB,IACpD,iBAAiB,aAAa;AAEhC,uBACG,oBAAAI,QAAA,EAAyB,gBAAe,UAAS,YAAW,UAC3D,UAAA;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBAEC,UAAU;AAAA,oBACV,MAAM,aAAa,KAAK,IAAI;AAAA,oBAC5B,cAAY;AAAA,sBACV;AAAA,wBACE,IAAI;AAAA,wBACJ,gBAAgB;AAAA,sBAClB;AAAA,sBACA,EAAE,OAAO,GAAG,UAAU,IAAI,KAAK,IAAI,aAAa,GAAG;AAAA,oBACrD;AAAA,oBAEA,eAAe,CAACJ,WAAU;AACD,6CAAA;AAAA,wBACrB,QAAQ;AAAA,0BACN,MAAM,aAAa,KAAK,IAAI;AAAA,0BAC5B,OAAAA;AAAAA,wBACF;AAAA,sBAAA,CACD;AAAA,oBACH;AAAA,oBACA,OAAO;AAAA,oBACP,eAAe;AAAA,kBAAA;AAAA,kBApBV;AAAA,gBAAA,KAFE,aAwBX;AAAA,cAEJ;AAAA,YAAA,GAEJ;AAAA,UAAA,GACF;AAAA,QAAA,GACF;AAAA,QACC,8BAA8B,YAC5B,oBAAA,KAAA,EAAI,eAAe,GAClB,UAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC;AAAA,YACA,YAAY,GAAG,UAAU,KAAK,KAAK;AAAA,YACnC;AAAA,YACA;AAAA,YACA;AAAA,YACA,gBAAgB,iBAAiB;AAAA,YACjC,cAAc,2BAA2B;AAAA,UAAA;AAAA,QAAA,GAE7C;AAAA,MAAA,EAAA,GAtHqB,KAwHzB;AAAA,IAAA,CAEH;AAAA,EACH,EAAA,CAAA;AAEJ;AAEA,aAAa,YAAY;AAAA,EACvB,cAAc,UAAU,MAAM;AAAA,EAC9B,gBAAgB,UAAU,KAAK;AAAA,EAC/B,YAAY,UAAU,OAAO;AAAA,EAC7B,yBAAyB,UAAU,OAAO;AAAA,EAC1C,iBAAiB,UAAU,MAAM;AAAA,EACjC,cAAc,UAAU,OAAO;AAAA,EAC/B,gBAAgB,UAAU,OAAO;AACnC;AAEA,MAAe,iBAAA,KAAK,YAAY;ACzOhC,MAAM,kCAAkC,CAAC,oBAAoB;AAC3D,QAAM,YAAY,gBAAgB,OAAO,CAAC,KAAK,YAAY;AACzD,QAAI,QAAQ,kCAAkC;AACxC,UAAA,KAAK,QAAQ,QAAQ;AAAA,IAC3B;AAEO,WAAA;AAAA,EACT,GAAG,CAAE,CAAA;AAEE,SAAA;AACT;AAYA,MAAM,4BAA4B,CAChC,iBACA,cACA,mBACA,iBACA,cACG;AACG,QAAA,YAAY,gCAAgC,eAAe;AAEjE,QAAM,OAAO,UAAU,OAAO,CAAC,KAAK,YAAY;AAC9C,UAAM,aAAa;AAAA,MACjB,GAAG,kBAAkB,MAAM,IAAI;AAAA,MAC/B;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAEF,UAAM,WAAW,IAAI,cAAc,YAAY,KAAK;AAEpD,QAAI,OAAO,IAAI;AAER,WAAA;AAAA,EACT,GAAG,CAAE,CAAA;AAEL,SAAO,iBAAiB,IAAI;AAC9B;ACpCA,MAAM,OAAO,OAAO,IAAI;AAAA,WACb,SAAS;AAAA;AAAA;AAIpB,MAAMH,YAAU,OAAO,IAAI;AAAA,YACf,SAAS;AAAA;AAAA;AAAA,IAGjB,CAAC,EAAE,eAAe,YAClB,iBACA;AAAA,QACI,UAAU;AAAA;AAAA,iBAED,MAAM,OAAO,UAAU;AAAA;AAAA;AAAA,UAG9B,YAAY,KAAK,CAAC;AAAA;AAAA,GAEzB;AAAA,IACC,CAAC,EAAE,UAAU,MAAA,MAAY,YAAY,YAAY,KAAK,CAAC;AAAA;AAG3D,MAAM,YAAY,CAAC;AAAA,EACjB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACE,QAAA,EAAE,kBAAkB;AAC1B,QAAM,CAAC,WAAW,YAAY,IAAI,SAAS,IAAI;AACzC,QAAA;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,MACE,0BAA0B;AAE9B,QAAM,WAAW,cAAc;AAEzB,QAAA,oBAAoB,QAAQ,MAAM;AACtC,QAAI,CAAC,MAAM,QAAQ,YAAY,GAAG;AAChC,aAAO;IACT;AAEO,WAAA;AAAA,EAAA,GACN,CAAC,YAAY,CAAC;AAEX,QAAA,gBAAgB,kBAAkB,SAAS;AAE3C,QAAA,cAAc,YAAY,MAAM;AACpC,QAAI,eAAe;AACjB,mBAAa,CAAC,SAAS;AACrB,YAAI,SAAS,MAAM;AACV,iBAAA;AAAA,QACT;AAEO,eAAA;AAAA,MAAA,CACR;AAAA,IACH;AAAA,EAAA,GACC,CAAC,eAAe,IAAI,CAAC;AAExB,QAAM,8BAA8B,CAAC,EAAE,QAAQ,EAAE,cAAc;AACjB,gDAAA,YAAY,cAAc,MAAM,KAAK;AAAA,EAAA;AAGnF,QAAM,EAAE,uBAAuB,uBAAuB,IAAI,QAAQ,MAAM;AACtE,WAAO,0BAA0B,iBAAiB,cAAc,YAAY,cAAc,IAAI;AAAA,EAAA,GAC7F,CAAC,iBAAiB,cAAc,YAAY,cAAc,IAAI,CAAC;AAElE,SAEI,qBAAA,UAAA,EAAA,UAAA;AAAA,IAAA;AAAA,MAACA;AAAAA,MAAA;AAAA,QACC,YAAW;AAAA,QACX;AAAA,QACA;AAAA,QACA,YAAY,QAAQ,eAAe;AAAA,QAEnC,+BAAC,MACC,EAAA,UAAA;AAAA,UAAA;AAAA,YAACQ;AAAAA,YAAA;AAAA,cACC,UAAU;AAAA,cACV,SAAS;AAAA,cACT;AAAA,cACA;AAAA,cACA;AAAA,cACA,aAAa;AAAA,cACb,OAAO;AAAA,cACP;AAAA,cAEC,UAAA;AAAA,gBAAA,gCAAa,cAAa,EAAA;AAAA,gBAC3B,oBAAC,YAAW,EAAA,WAAW,SAAU,CAAA;AAAA,cAAA;AAAA,YAAA;AAAA,UACnC;AAAA,UACA,oBAAC,MACE,EAAA,UAAA,gBAAgB,IAAI,CAAC,EAAE,OAAAK,QAAO,kCAAkC,SAAA,MAAe;AAC9E,gBAAI,CAAC,kCAAkC;AAC9B,qBAAA,oBAAC,kBAAkBA,MAAO;AAAA,YACnC;AAEA,kBAAM,eAAe;AAAA,cACnB,GAAG,WAAW,MAAM,IAAI;AAAA,cACxB;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YAAA;AAGF,gBAAI,CAAC,eAAe;AAClB,oBAAM,gBAAgB,IAAI,cAAc,cAAc,KAAK;AAE3D,qBACG,oBAAA,MAAA,EAAoB,gBAAe,UAAS,YAAW,UACtD,UAAA;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,UAAU;AAAA,kBACV,MAAM,aAAa,KAAK,IAAI;AAAA,kBAC5B,cAAY;AAAA,oBACV;AAAA,sBACE,IAAI;AAAA,sBACJ,gBAAgB;AAAA,oBAClB;AAAA,oBACA,EAAE,OAAO,GAAG,IAAI,IAAIA,MAAK,GAAG;AAAA,kBAC9B;AAAA,kBAEA,eAAe,CAAC,UAAU;AACD,2CAAA;AAAA,sBACrB,QAAQ;AAAA,wBACN,MAAM,aAAa,KAAK,IAAI;AAAA,wBAC5B;AAAA,sBACF;AAAA,oBAAA,CACD;AAAA,kBACH;AAAA,kBACA,OAAO;AAAA,gBAAA;AAAA,cAAA,KApBA,QAsBX;AAAA,YAEJ;AAEA,kBAAM,OAAO,IAAI,cAAc,cAAc,CAAE,CAAA;AAE/C,kBAAM,EAAE,uBAAAJ,wBAAuB,wBAAAC,4BAA2B,iBAAiB,IAAI;AAE/E,mBACG,oBAAA,MAAA,EAAiB,gBAAe,UAAS,YAAW,UACnD,UAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,UAAU;AAAA,gBACV,MAAM,aAAa,KAAK,IAAI;AAAA,gBAE5B,eAAe,CAAC,UAAU;AACD,yCAAA;AAAA,oBACrB,QAAQ;AAAA,sBACN,MAAM,aAAa,KAAK,IAAI;AAAA,sBAC5B;AAAA,oBACF;AAAA,kBAAA,CACD;AAAA,gBACH;AAAA,gBACA,cAAY;AAAA,kBACV;AAAA,oBACE,IAAI;AAAA,oBACJ,gBAAgB;AAAA,kBAClB;AAAA,kBACA,EAAE,OAAO,GAAG,IAAI,IAAIG,MAAK,GAAG;AAAA,gBAC9B;AAAA,gBACA,OAAOJ;AAAAA,gBACP,eAAeC;AAAAA,cAAA;AAAA,YAAA,KArBRG,MAuBX;AAAA,UAEH,CAAA,GACH;AAAA,QAAA,GACF;AAAA,MAAA;AAAA,IACF;AAAA,IACC,YACC;AAAA,MAACC;AAAAA,MAAA;AAAA,QACC,cAAc;AAAA,QACd;AAAA,QACA,YAAY;AAAA,QACZ,yBAAyB;AAAA,QACzB;AAAA,QACA;AAAA,QACA,gBAAgB;AAAA,MAAA;AAAA,IAClB;AAAA,EAEJ,EAAA,CAAA;AAEJ;AAEA,UAAU,eAAe;AAAA,EACvB,cAAc,CAAC;AAAA,EACf,UAAU;AACZ;AAEA,UAAU,YAAY;AAAA,EACpB,cAAc,UAAU;AAAA,EACxB,OAAO,UAAU,OAAO;AAAA,EACxB,gBAAgB,UAAU,KAAK;AAAA,EAC/B,MAAM,UAAU,OAAO;AAAA,EACvB,YAAY,UAAU,OAAO;AAAA,EAC7B,iBAAiB,UAAU,MAAM;AAAA,EACjC,cAAc,UAAU,OAAO;AAAA,EAC/B,UAAU,UAAU;AAAA,EACpB,OAAO,UAAU,KAAK;AACxB;AAEA,MAAe,cAAA,KAAK,SAAS;AC1N7B,MAAM,cAAc,OAAO,IAAI;AAAA,WACpB,SAAS;AAAA;AAAA;AAGpB,MAAM,uBAAuB,OAAO,IAAI;AAAA,WAC7B,aAAa;AAAA,YACZ,SAAS;AAAA;AAAA;AAIrB,MAAM,SAAS,CAAC,EAAE,SAAS,YAAY;AAC/B,QAAA,EAAE,kBAAkB;AAC1B,QAAM,kBAAkB;AAAA,IACtB;AAAA,MACE,IAAI;AAAA,MACJ,gBAAgB;AAAA,IAClB;AAAA,IACA,EAAE,MAAM;AAAA,EAAA;AAGV,8BACG,MACC,EAAA,UAAA;AAAA,IAAA,oBAAC,sBAAqB,EAAA,YAAW,UAAS,aAAa,GACrD,UAAA,oBAAC,YAAW,EAAA,SAAQ,SAAQ,WAAU,cACnC,UAAA,gBACH,CAAA,GACF;AAAA,IACC,QAAQ,IAAI,CAAC,WAAW;AACnB,UAAA,CAAC,OAAO,kCAAkC;AACrC,eAAA,oBAAC,aAAiB,CAAA,GAAA,OAAO,KAAO;AAAA,MACzC;AAGE,aAAA,oBAAC,aAAY,EAAA,gBAAe,UAC1B,UAAA,oBAAC,cAAW,SAAQ,SAAQ,WAAU,cACnC,UAAc,cAAA;AAAA,QACb,IAAI,mCAAmC,OAAO,MAAM,YAAa,CAAA;AAAA,QACjE,gBAAgB,OAAO;AAAA,MACxB,CAAA,GACH,EANwC,GAAA,OAAO,KAOjD;AAAA,IAAA,CAEH;AAAA,EACH,EAAA,CAAA;AAEJ;AAEA,OAAO,YAAY;AAAA,EACjB,SAAS,UAAU;AAAA,IACjB,UAAU,MAAM;AAAA,MACd,OAAO,UAAU,OAAO;AAAA,MACxB,kCAAkC,UAAU,KAAK;AAAA,IAAA,CAClD;AAAA,EAAA,EACD;AAAA,EACF,OAAO,UAAU,OAAO;AAC1B;AChEA,MAAM,6BAA6B,CAAC,SAAS,iBAAiB;AACrD,SAAA,QAAQ,IAAI,CAAC,WAAW;AAC7B,UAAM,mCACJ,MAAM,QAAQ,OAAO,iBAAiB,KACtC,OAAO,kBAAkB,QAAQ,YAAY,MAAM,MACnD,OAAO;AAET,WAAO,EAAE,OAAO,OAAO,OAAO,UAAU,OAAO,UAAU;EAAiC,CAC3F;AACH;ACCA,MAAMd,YAAU,OAAO;AAAA;AAAA;AAAA;AAAA;AAMvB,MAAM,yBAAyB,CAAC;AAAA,EAC9B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACJ,QAAM,kBAAkB;AAAA,IACtB,MAAM,2BAA2B,kBAAkB,YAAY;AAAA,IAC/D,CAAC,kBAAkB,YAAY;AAAA,EAAA;AAGjC,8BACGA,WACC,EAAA,UAAA;AAAA,IAAC,oBAAA,QAAA,EAAO,OAAc,SAAS,gBAAiB,CAAA;AAAA,IAC/C,oBAAA,KAAA,EACE,UAAa,aAAA,IAAI,CAAC,EAAE,UAAUe,eAAc,OAAAF,QAAO,OAAO,YAAY,MACrE;AAAA,MAACZ;AAAAA,MAAA;AAAA,QACC,cAAcc;AAAAA,QAEd,OAAOF;AAAAA,QACP;AAAA,QACA,MAAM;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,OAAO,IAAI,MAAM;AAAA,MAAA;AAAA,MARZ;AAAA,IAUR,CAAA,GACH;AAAA,EACF,EAAA,CAAA;AAEJ;AAEA,uBAAuB,YAAY;AAAA,EACjC,cAAc,UAAU,MAAM;AAAA,EAC9B,kBAAkB,UAAU,MAAM;AAAA,EAClC,gBAAgB,UAAU,KAAK;AAAA,EAC/B,OAAO,UAAU,OAAO;AAAA,EACxB,YAAY,UAAU,OAAO;AAAA,EAC7B,cAAc,UAAU,OAAO;AACjC;AClDA,MAAM,UAAU,OAAO;AAAA;AAAA;AAAA;AAAA,IAInB,CAAC,EAAE,OAAO,SAAS,MAAM,YAAY,qBAAqB,MAAM,OAAO,UAAU,GAAG;AAAA;AAGxF,MAAM,sBAAsB,CAAC;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACE,QAAA,4BAA4B,YAAY,MAAM;AAClD,0BAAsB,eAAe;AAAA,EAAA,GACpC,CAAC,iBAAiB,qBAAqB,CAAC;AAErC,QAAA,mBAAmB,QAAQ,MAAM;AAC9B,WAAA,oBAAoB,YAAY,eAAe;AAAA,EAAA,GACrD,CAAC,YAAY,eAAe,CAAC;AAG9B,SAAA,qBAAC,WAAQ,UACP,UAAA;AAAA,IAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACA;AAAA,QACA,QAAQ,QAAQ,MAAM;AAAA,QACtB;AAAA,QACA;AAAA,QACA,eAAe;AAAA,QACf;AAAA,MAAA;AAAA,IACF;AAAA,IACC,YACC,WAAW,IAAI,CAAC,EAAE,OAAO,eAAe,OAAO,UAAU,mBAAmB;AAExE,aAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC;AAAA,UACA;AAAA,UACA;AAAA,UACA,OAAO;AAAA,UACP;AAAA,UACA,cAAc;AAAA,QAAA;AAAA,QACT;AAAA,MAAA;AAAA,IACP,CAEH;AAAA,EACL,EAAA,CAAA;AAEJ;AAEA,oBAAoB,YAAY;AAAA,EAC9B,YAAY,UAAU,MAAM;AAAA,EAC5B,iBAAiB,UAAU,OAAO;AAAA,EAClC,OAAO,UAAU,OAAO;AAAA,EACxB,UAAU,UAAU,KAAK;AAAA,EACzB,gBAAgB,UAAU,KAAK;AAAA,EAC/B,OAAO,UAAU,OAAO;AAAA,EACxB,uBAAuB,UAAU,KAAK;AAAA,EACtC,YAAY,UAAU,OAAO;AAAA,EAC7B,YAAY,UAAU,MAAM;AAC9B;ACpEA,MAAM,uBAAuB,CAAC,EAAE,SAAS,gBAAgB,YAAY,eAAe;AAClF,QAAM,CAAC,gBAAgB,iBAAiB,IAAI,SAAS,IAAI;AAEnD,QAAA,4BAA4B,CAAC,iBAAiB;AAC5C,UAAA,qBAAqB,mBAAmB,eAAe,OAAO;AAEpE,sBAAkB,kBAAkB;AAAA,EAAA;AAG/B,SAAA,SAAS,IAAI,CAAC,EAAE,KAAK,OAAO,cAAc,UAAU;AAEvD,WAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,YAAY;AAAA,QAEZ,iBAAiB;AAAA,QACjB;AAAA,QACA,UAAU,mBAAmB;AAAA,QAC7B;AAAA,QACA;AAAA,QACA,uBAAuB;AAAA,QACvB,YAAY,GAAG,UAAU,KAAK,GAAG;AAAA,QACjC;AAAA,MAAA;AAAA,MARK;AAAA,IAAA;AAAA,EASP,CAEH;AACH;AAEA,qBAAqB,eAAe;AAAA,EAClC,SAAS,CAAC;AAAA,EACV,UAAU,CAAC;AACb;AAEA,qBAAqB,YAAY;AAAA,EAC/B,SAAS,UAAU,MAAM;AAAA,EACzB,gBAAgB,UAAU,KAAK;AAAA,EAC/B,YAAY,UAAU,OAAO;AAAA,EAC7B,UAAU,UAAU;AAAA,IAClB,UAAU,MAAM;AAAA,MACd,KAAK,UAAU,OAAO;AAAA,MACtB,OAAO,UAAU,OAAO;AAAA,MACxB,YAAY,UAAU,MAAM;AAAA,IAAA,CAC7B;AAAA,EACH;AACF;AAEA,MAAe,yBAAA,KAAK,oBAAoB;ACnDxC,MAAM,uBAAuB,CAAC,YAC5B,QAAQ,OAAO,CAAC,EAAE,eAAe,YAAY,SAAS,MAAM;ACG9D,MAAM,gBAAgB,CAAC,UAAU,MAAM,IAAI,CAAC,EAAE,SAAS,MAAM,QAAQ;AAErE,MAAM,yBAAyB,CAAC,eAAe,YAAY;AACzD,SAAO,cAAc,OAAO,CAAC,KAAK,aAAa;AAC7C,WAAO,KAAK,OAAO,EAAE,QAAQ,CAAC,UAAU;AAChC,YAAA,eAAe,IAAI,SAAS,CAAC,OAAO,QAAQ,GAAG,CAAA,CAAE;AAEvD,YAAM,gBAAgB,EAAE,CAAC,KAAK,GAAG,2BAA2B,YAAY,EAAE;AAEtE,UAAA,CAAC,IAAI,QAAQ,GAAG;AAClB,YAAI,QAAQ,IAAI;AAAA,MAAA,OACX;AACD,YAAA,QAAQ,IAAI,EAAE,GAAG,IAAI,QAAQ,GAAG,GAAG;MACzC;AAAA,IAAA,CACD;AAEM,WAAA;AAAA,EACT,GAAG,CAAE,CAAA;AACP;AAEA,MAAM,qBAAqB,CAAC,YAAY,iBAAiB;AACjD,QAAA,aAAa,cAAc,UAAU;AACrC,QAAA,qBAAqB,uBAAuB,YAAY,YAAY;AAEpE,QAAA,kBAAkB,OAAO,KAAK,kBAAkB,EAAE,OAAO,CAAC,KAAK,YAAY;AAC/E,QAAI,OAAO,IAAI,iBAAiB,mBAAmB,OAAO,CAAC;AAEpD,WAAA;AAAA,EACT,GAAG,CAAE,CAAA;AAEE,SAAA;AACT;ACtBA,MAAM,gBAAgB,OAAO,IAAI;AAAA,WACtB,SAAS;AAAA;AAAA;AAIpB,MAAM,gBAAgB,CAAC,EAAE,SAAS,gBAAgB,WAAW;AACrD,QAAA,EAAE,kBAAkB;AAC1B,QAAM,EAAE,cAAc,2CAA2C,IAAI,0BAA0B;AAEzF,QAAA,mBAAmB,QAAQ,MAAM;AACrC,WAAO,qBAAqB,OAAO;AAAA,EAAA,GAClC,CAAC,OAAO,CAAC;AAEN,QAAA,kBAAkB,QAAQ,MAAM;AACpC,WAAO,mBAAmB,kBAAkB,aAAa,IAAI,CAAC;AAAA,EAC7D,GAAA,CAAC,cAAc,kBAAkB,IAAI,CAAC;AAGvC,SAAA,oBAAC,OAAI,eAAe,GAAG,YAAY,GAAG,OAAO,EAAE,aAAa,iBAC1D,UAAC,oBAAA,MAAA,EAAK,KAAK,GACR,UAAA,iBAAiB,IAAI,CAAC,EAAE,OAAO,SAAA,MAAe;AAE3C,WAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAU;AAAA,QACV,YAAW;AAAA,QACX,gBAAe;AAAA,QAEf,KAAK;AAAA,QAEL,UAAA;AAAA,UAAA,oBAAC,YAAW,EAAA,SAAQ,SAAQ,WAAU,cACnC,UAAc,cAAA;AAAA,YACb,IAAI,mCAAmC,MAAM,YAAa,CAAA;AAAA,YAC1D,gBAAgB;AAAA,UACjB,CAAA,GACH;AAAA,UACA;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,UAAU;AAAA,cACV,eAAe,CAAC,UAAU;AACmB,2DAAA,MAAM,UAAU,KAAK;AAAA,cAClE;AAAA,cACA,MAAM;AAAA,cACN,cAAY;AAAA,gBACV;AAAA,kBACE,IAAI;AAAA,kBACJ,gBAAgB;AAAA,gBAClB;AAAA,gBACA;AAAA,kBACE,OAAO,cAAc;AAAA,oBACnB,IAAI,mCAAmC,MAAM,YAAa,CAAA;AAAA,oBAC1D,gBAAgB;AAAA,kBAAA,CACjB;AAAA,gBACH;AAAA,cACF;AAAA,cACA,OAAO,IAAI,iBAAiB,CAAC,UAAU,uBAAuB,GAAG,KAAK;AAAA,cACtE,eAAe,IAAI,iBAAiB,CAAC,UAAU,wBAAwB,GAAG,KAAK;AAAA,YAAA;AAAA,UACjF;AAAA,QAAA;AAAA,MAAA;AAAA,MA7BK;AAAA,IAAA;AAAA,EA8BP,CAEH,GACH,EACF,CAAA;AAEJ;AAEA,cAAc,eAAe;AAAA,EAC3B,SAAS,CAAC;AACZ;AAEA,cAAc,YAAY;AAAA,EACxB,SAAS,UAAU;AAAA,IACjB,UAAU,MAAM;AAAA,MACd,OAAO,UAAU,OAAO;AAAA,MACxB,UAAU,UAAU,OAAO;AAAA,MAC3B,UAAU,UAAU,MAAM;AAAA,IAAA,CAC3B;AAAA,EACH;AAAA,EACA,gBAAgB,UAAU,KAAK;AAAA,EAC/B,MAAM,UAAU,OAAO;AACzB;AAEA,MAAe,kBAAA,KAAK,aAAa;ACnFjC,MAAM,YAAY,OAAO,GAAG;AAAA;AAAA;AAI5B,MAAM,eAAe,CAAC,EAAE,gBAAgB,MAAM,QAAQ,EAAE,SAAS,SAAS,QAAQ;AAChF,QAAM,iBAAiB,OAAO,CAAC,GAAG,QAAQ,GAAG,OAAO;AAGlD,SAAA,qBAAC,WAAU,EAAA,YAAW,YACpB,UAAA;AAAA,IAAC,oBAAAG,iBAAA,EAAc,SAAkB,MAAY,eAAgC,CAAA;AAAA,IAC7E;AAAA,MAACC;AAAAA,MAAA;AAAA,QACC;AAAA,QACA;AAAA,QACA,YAAY;AAAA,QACZ,UAAU;AAAA,MAAA;AAAA,IACZ;AAAA,EACF,EAAA,CAAA;AAEJ;AAEA,aAAa,YAAY;AAAA,EACvB,gBAAgB,UAAU,KAAK;AAAA,EAC/B,MAAM,UAAU,OAAO;AAAA,EACvB,QAAQ,UAAU,MAAM;AAAA,IACtB,SAAS,UAAU;AAAA,IACnB,UAAU,UAAU;AAAA,MAClB,UAAU,MAAM;AAAA,QACd,KAAK,UAAU,OAAO;AAAA,QACtB,OAAO,UAAU,OAAO;AAAA,QACxB,YAAY,UAAU,MAAM;AAAA,MAAA,CAC7B;AAAA,IACH;AAAA,EACD,CAAA,EAAE;AACL;AAEA,MAAe,iBAAA,KAAK,YAAY;ACjChC,MAAM,gBAAgB,CAAC,SAAS,cAAc,eAAe;AACpD,SAAA,QAAQ,IAAI,CAAC,WAAW;AAC7B,UAAM,eAAe,CAAC,GAAG,YAAY,OAAO,QAAQ,cAAc,SAAS;AAC3E,UAAM,gBAAgB,IAAI,cAAc,cAAc,KAAK;AACrD,UAAA,iBAAiB,IAAI,cAAc,CAAC,GAAG,YAAY,OAAO,QAAQ,YAAY,GAAG,CAAA,CAAE;AACzF,UAAM,gBAAgB,oBAAoB,cAAc,EAAE,KAAK,CAAC,QAAQ,GAAG;AAEpE,WAAA;AAAA,MACL,GAAG;AAAA,MACH,aAAa;AAAA,MACb,cAAc,aAAa,KAAK,IAAI;AAAA,MACpC,wBAAwB;AAAA,MACxB,OAAO;AAAA,MACP;AAAA,MACA,OAAO,OAAO;AAAA,MACd,UAAU,OAAO;AAAA,MACjB,wBAAwB,CAAC,GAAG,YAAY,OAAO,MAAM;AAAA,IAAA;AAAA,EACvD,CACD;AACH;AC7BA,MAAM,2BAA2B,CAAC,aAAa;AACvC,QAAA,cAAc,OAAO,QAAQ,QAAQ,EAAE,OAAO,CAAC,KAAK,YAAY;AACpE,UAAM,CAAC,SAAS,EAAE,WAAY,CAAA,IAAI;AAElC,QAAI,OAAO,IAAI;AAER,WAAA;AAAA,EACT,GAAG,CAAE,CAAA;AAEC,QAAA,gBAAgB,oBAAoB,WAAW;AAErD,SAAO,cAAc,KAAK,CAAC,QAAQ,GAAG;AACxC;ACCA,MAAM,SAAS,OAAO;AAAA;AAAA;AAAA,0BAGI,CAAC,EAAE,MAAA,MAAY,MAAM,OAAO,UAAU;AAAA;AAGhE,MAAM,kBAAkB,OAAO;AAAA;AAAA;AAAA,IAG3B,CAAC,EAAE,eAAe,UAAU,YAC5B,iBACA;AAAA;AAAA;AAAA;AAAA,aAIS,KAAK,EAAE;AAAA,cACN,KAAK,EAAE;AAAA,eACN,IAAI,EAAE;AAAA,gBACL,IAAI,EAAE;AAAA,uBACC,KAAK,EAAE;AAAA,oBACV,WAAW,MAAM,OAAO,aAAa,MAAM,OAAO,UAAU;AAAA;AAAA,GAE7E;AAAA;AAGH,MAAM,cAAc,CAAC,EAAE,cAAc,gBAAgB,iBAAiB,SAAS,iBAAiB;AAC9F,QAAM,CAAC,aAAa,YAAY,IAAI,SAAS,KAAK;AAClD,QAAM,EAAE,cAAc,wBAAwB,2BAC5C,0BAA0B;AACtB,QAAA,EAAE,kBAAkB;AAE1B,QAAM,WAAW,IAAI,cAAc,YAAY,CAAE,CAAA;AAC3C,QAAA,uBAAuB,QAAQ,MAAM;AACzC,WAAO,OAAO,KAAK,QAAQ,EAAE,OAAO,CAAC,KAAK,YAAY;AACpD,UAAI,OAAO,IAAI,2BAA2B,SAAS,OAAO,CAAC;AAEpD,aAAA;AAAA,IACT,GAAG,CAAE,CAAA;AAAA,EAAA,GACJ,CAAC,QAAQ,CAAC;AAEb,QAAM,EAAE,uBAAuB,uBAAuB,IAAI,iBAAiB,oBAAoB;AAE/F,QAAM,0BAA0B,MAAM;AACvB,iBAAA,CAAC,MAAM,CAAC,CAAC;AAAA,EAAA;AAGxB,QAAM,mBAAmB,MAAM;AAC7B,iBAAa,KAAK;AAAA,EAAA;AAGpB,QAAM,mBAAmB,cAAc,SAAS,cAAc,UAAU;AAClE,QAAA,yBAAyB,yBAAyB,IAAI,cAAc,CAAC,GAAG,UAAU,GAAG,CAAE,CAAA,CAAC;AAE9F,SAEI,qBAAA,UAAA,EAAA,UAAA;AAAA,IAAA,qBAAC,KACC,EAAA,UAAA;AAAA,MAAA,qBAAC,MAAK,EAAA,gBAAe,iBAAgB,YAAW,UAC9C,UAAA;AAAA,QAAC,oBAAA,KAAA,EAAI,cAAc,GACjB,UAAC,oBAAA,YAAA,EAAW,SAAQ,SAAQ,WAAU,cACnC,UAAA,gBACH,CAAA,GACF;AAAA,4BACC,QAAO,EAAA;AAAA,QACR,oBAAC,KAAI,EAAA,aAAa,GAChB,UAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAM,WAAW,KAAK,IAAI;AAAA,YAC1B,UAAU;AAAA,YAEV,eAAe,CAAC,UAAU;AACD,qCAAA;AAAA,gBACrB,QAAQ;AAAA,kBACN,MAAM,WAAW,KAAK,IAAI;AAAA,kBAC1B;AAAA,gBACF;AAAA,cAAA,CACD;AAAA,YACH;AAAA,YACA,eAAe;AAAA,YACf,OAAO;AAAA,YAEN,wBAAc,EAAE,IAAI,wBAAwB,gBAAgB,cAAc;AAAA,UAAA;AAAA,QAAA,GAE/E;AAAA,MAAA,GACF;AAAA,MACC,qBAAA,MAAA,EAAK,YAAY,GAAG,eAAe,GAClC,UAAA;AAAA,QAAA,oBAAC,QAAK,KAAK,GAAG,OAAO,EAAE,MAAM,EAAE,GAC5B,UAAiB,iBAAA,IAAI,CAAC,EAAE,cAAc,OAAO,QAAQ,aAAa,oBAAoB;AAEnF,iBAAA,oBAAC,YAAS,KAAK,GACb,8BAAC,iBAAgB,EAAA,UAAU,gBAAgB,eACzC,UAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,MAAM;AAAA,cACN,UAAU;AAAA,cAEV,eAAe,CAACd,WAAU;AACD,uCAAA;AAAA,kBACrB,QAAQ;AAAA,oBACN,MAAM;AAAA,oBACN,OAAAA;AAAAA,kBACF;AAAA,gBAAA,CACD;AAAA,cACH;AAAA,cACA;AAAA,cAEC,UAAA;AAAA,YAAA;AAAA,UAAA,GAEL,KAlBqB,MAmBvB;AAAA,QAEH,CAAA,GACH;AAAA,QACA;AAAA,UAACC;AAAAA,UAAA;AAAA,YACC,eAAe;AAAA,YACf,SAAS;AAAA,UAAA;AAAA,QACX;AAAA,MAAA,GACF;AAAA,IAAA,GACF;AAAA,IACC,eACC;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,mBAAmB,CAAC,cAAc,eAAe;AAAA,QACjD,SAAS;AAAA,QACT;AAAA,QACA,UAAU;AAAA,QACV,UAAU;AAAA,MAAA;AAAA,IACZ;AAAA,EAEJ,EAAA,CAAA;AAEJ;AAEA,YAAY,YAAY;AAAA,EACtB,SAAS,UAAU,MAAM;AAAA,EACzB,cAAc,UAAU,OAAO;AAAA,EAC/B,gBAAgB,UAAU,KAAK;AAAA,EAC/B,iBAAiB,UAAU,OAAO;AAAA,EAClC,YAAY,UAAU,MAAM;AAC9B;AC7IA,MAAM,gBAAgB,CAAC;AAAA,EACrB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACE,QAAA,EAAE,kBAAkB;AAC1B,QAAM,cAAc,MAAM;AACxB,mBAAe,IAAI;AAAA,EAAA;AAGf,QAAA,eAAe,QAAQ,MAAM;AAC3B,UAAA,QAAQ,KAAK,MAAM,IAAI;AAE7B,WAAO,MAAM;EAAI,GAChB,CAAC,IAAI,CAAC;AAGP,SAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,UAAU;AAAA,MACV,UAAU;AAAA,MACV,IAAI,aAAa,IAAI;AAAA,MACrB,SAAS,UAAU,YAAY;AAAA,MAE/B,UAAA;AAAA,QAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,OAAO,WAAW,YAAY;AAAA,YAC9B,aAAa,GAAG;AAAA,cACd,EAAE,IAAI,gCAAgC;AAAA,cACtC,EAAE,UAAU,aAAa;AAAA,YAC1B,CAAA,IAAI,SAAS,YAAY,WAAW,IAAI;AAAA,UAAA;AAAA,QAC3C;AAAA,QAEC,oBAAA,kBAAA,EACC,UAAC,oBAAA,KAAA,EAAI,SAAS,GACX,UAAa,aAAA,IAAI,CAAC,EAAE,SAAS,iBAAiB,oBAC7C;AAAA,UAAC;AAAA,UAAA;AAAA,YAEC;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA,YAAY,CAAC,GAAG,YAAY,aAAa;AAAA,UAAA;AAAA,UALpC;AAAA,QAAA,CAOR,GACH,EACF,CAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGN;AAEA,cAAc,eAAe,CAAA;AAE7B,cAAc,YAAY;AAAA,EACxB,cAAc,UAAU,MAAM;AAAA,EAC9B,QAAQ,UAAU,KAAK;AAAA,EACvB,gBAAgB,UAAU,KAAK;AAAA,EAC/B,SAAS,UAAU,KAAK;AAAA,EACxB,MAAM,UAAU,OAAO;AAAA,EACvB,MAAM,UAAU,OAAO;AAAA,EACvB,gBAAgB,UAAU,KAAK;AAAA,EAC/B,YAAY,UAAU,MAAM;AAC9B;ACnEA,MAAM,gCAAgC,CAAC,EAAE,gBAAgB,MAAM,aAAa;AAC1E,QAAM,CAAC,gBAAgB,iBAAiB,IAAI,SAAS,IAAI;AAEnD,QAAA,qBAAqB,CAAC,iBAAiB;AACzB,sBAAA,iBAAiB,iBAAiB,OAAO,YAAY;AAAA,EAAA;AAGzE,SACG,oBAAA,KAAA,EAAI,SAAS,GAAG,YAAW,YACzB,UAAA,OAAO,IAAI,CAAC,EAAE,UAAU,YAAY,gBAAgB,UAAU;AAE3D,WAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QAEC;AAAA,QACA;AAAA,QACA;AAAA,QACA,QAAQ,mBAAmB;AAAA,QAC3B,SAAS,QAAQ,MAAM;AAAA,QACvB,MAAM;AAAA,QACN,gBAAgB;AAAA,QAChB,YAAY,CAAC,MAAM,UAAU;AAAA,MAAA;AAAA,MARxB;AAAA,IAAA;AAAA,EAWV,CAAA,EACH,CAAA;AAEJ;AAEA,8BAA8B,YAAY;AAAA,EACxC,gBAAgB,UAAU,KAAK;AAAA,EAC/B,MAAM,UAAU,OAAO;AAAA,EACvB,QAAQ,UAAU;AAAA,IAChB,UAAU,MAAM;AAAA,MACd,UAAU,UAAU,OAAO;AAAA,MAC3B,YAAY,UAAU,OAAO;AAAA,MAC7B,cAAc,UAAU;AAAA,QACtB,UAAU,MAAM;AAAA,UACd,SAAS,UAAU,MAAM;AAAA,QAAA,CAC1B;AAAA,MAAA,EACD;AAAA,IACH,CAAA,EAAE;AAAA,EAAA,EACH;AACJ;ACjDA,MAAM,yBAAyB,CAAC,aAAa,QAAQ,YACnD,YAAY,KAAK,CAAC,SAAS,KAAK,WAAW,UAAU,KAAK,YAAY,OAAO;ACU/E,MAAM,8BAA8B,CAAC,YAAY,oBAAoB,CAAA,MACnE,WAAW,OAAO,CAAC,KAAK,YAAY;AAClC,MAAI,QAAQ,EAAE,IAAI,kBAAkB,QAAQ,QAAQ,EAAE,MAAM;AAErD,SAAA;AACT,GAAG,CAAE,CAAA;AAUP,MAAM,6BAA6B,CAAC,EAAE,YAAY,gBAAgB,SAAS,OAAO;AAChF,SAAO,SAAS,OAAO,CAAC,KAAK,YAAY;AACvC,QAAI,QAAQ,UAAU;AACb,aAAA;AAAA,QACL,GAAG;AAAA,QACH,CAAC,QAAQ,KAAK,GAAG;AAAA,UACf;AAAA,UACA;AAAA,UACA,GAAG,MAAM,GAAG,QAAQ,KAAK;AAAA,QAC3B;AAAA,MAAA;AAAA,IAEJ;AAEM,UAAA,cAAc,eAAe,QAAQ,GAAG,MAAM,GAAG,QAAQ,KAAK,EAAE,MAAM;AAExE,QAAA,QAAQ,KAAK,IAAI;AAEd,WAAA;AAAA,EACT,GAAG,CAAE,CAAA;AACP;AAcA,MAAM,8BAA8B,CAAC,iBAAiB,UAAU,uBAAuB;AACrF,SAAO,gBAAgB;AAAA,IACrB,CAAC,KAAK,wBAAwB;AACtB,YAAA,gBAAgB,SAAS,WAAW,KAAK,CAAC,EAAE,MAAY,MAAA,UAAU,mBAAmB;AAE3F,UAAI,eAAe;AACjB,cAAM,mCAAmC;AAAA,UACvC;AAAA,UACA,CAAC,cAAc,cAAc,KAAK;AAAA,UAClC,CAAC;AAAA,QAAA;AAEH,cAAM,eAAe;AAAA,UACnB;AAAA,UACA;AAAA,QAAA;AAGE,YAAA,WAAW,mBAAmB,IAAI;AAAA,MACxC;AAEO,aAAA;AAAA,IACT;AAAA,IACA,EAAE,YAAY,CAAA,EAAG;AAAA,EAAA;AAErB;AAOA,MAAM,cAAc,CAAC,YAAY,aAAa;AAC5C,SAAO,SAAS,OAAO,CAAC,KAAK,YAAY;AACjC,UAAA,cAAc,WAAW,KAAK,CAAC,EAAE,IAAI,MAAM,QAAQ,OAAO,KAAK;AAErE,QAAI,aAAa;AACf,UAAI,OAAO,IAAI;AAAA,IACjB;AAEO,WAAA;AAAA,EACT,GAAG,CAAE,CAAA;AACP;AAiBA,MAAM,gCAAgC,CACpC,EAAE,YACF,aACA,gBACA,qBAAqB,OAClB;AACH,SAAO,YAAY,OAAO,CAAC,aAAa,YAAY;AAClD,UAAM,iBAAiB,QAAQ;AAEzB,UAAA,iBAAiB,YAAY,UAAU,cAAc;AAKvD,QAAA,QAAQ,cAAc,GAAG;AACpB,aAAA;AAAA,IACT;AAGM,UAAA,sBAAsB,OAAO,KAAK,cAAc,EAAE,OAAO,CAAC,KAAK,iBAAiB;AAC9E,YAAA,EAAE,UAAU,kBAAsB,IAAA;AAClC,YAAA,uBAAuB,eAAe,YAAY;AAClD,YAAA,aAAa,qBAAqB,WAAW,IAAI,CAAC,EAAE,MAAA,MAAY,KAAK;AAC3E,YAAM,sBAAsB,WAAW;AAAA,QACrC,CAAC,cAAc,qBAAqB,CAAA,GAAI,QAAQ,QAAQ,MAAM;AAAA,MAAA;AAGhE,YAAM,qBAAqB,uBAAuB,oBAAoB,UAAU,YAAY;AAC5F,YAAM,iBAAiB;AAAA,QACrB;AAAA,QACA,IAAI,oBAAoB,cAAc,EAAE;AAAA,MAAA;AAGtC,UAAA,QAAQ,iBAAiB,KAAK,qBAAqB;AACrD,YAAI,KAAK,CAAC,cAAc,QAAQ,GAAG;AAAA,UACjC,YAAY;AAAA,YACV,SAAS,uBAAuB;AAAA,UAClC;AAAA,UACA,YAAY;AAAA,QAAA,CACb;AAEM,eAAA;AAAA,MACT;AAEA,YAAM,iBAAiB;AAAA,QACrB;AAAA,QACA,eAAe,YAAY;AAAA,QAC3B;AAAA,MAAA;AAGE,UAAA,KAAK,CAAC,cAAc,QAAQ,GAAG,EAAE,GAAG,gBAAgB,YAAY,eAAA,CAAgB;AAE7E,aAAA;AAAA,IACT,GAAG,CAAE,CAAA;AAEE,WAAA,MAAM,aAAa,mBAAmB;AAAA,EAC/C,GAAG,CAAE,CAAA;AACP;AC1KA,MAAM,wBAAwB,CAAC,SAAS,YAAY,gBAAgB;AAClE,SAAO,QAAQ,OAAO,CAAC,KAAK,YAAY;AACtC,UAAM,0BAA0B,uBAAuB,aAAa,QAAQ,QAAQ,IAAI;AAEpF,QAAA,QAAQ,MAAM,IAAI;AAAA,MACpB,YAAY;AAAA,QACV,SAAS,4BAA4B;AAAA,MACvC;AAAA,MACA,YAAY;AAAA,QACV;AAAA,QACA,yBAAyB,cAAc,CAAC;AAAA,MAC1C;AAAA,IAAA;AAGK,WAAA;AAAA,EACT,GAAG,CAAE,CAAA;AACP;AAEA,MAAM,4BAA4B,CAAC,cAAc,YAAY,uBAAuB;AAClF,SAAO,aAAa,OAAO,CAAC,KAAK,YAAY;AACvC,QAAA,QAAQ,aAAa,IAAI;AAAA,MAC3B,QAAQ;AAAA,MACR;AAAA,MACA;AAAA,IAAA;AAGK,WAAA;AAAA,EACT,GAAG,CAAE,CAAA;AACP;AAEA,MAAM,qCAAqC,CAAC,eAAe,YAAY,qBAAqB,CAAA,MAAO;AACjG,SAAO,cAAc,OAAO,CAAC,KAAK,EAAE,YAAY,mBAAmB;AACjE,UAAM,sBAAsB;AAAA,MAC1B;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAEF,QAAI,UAAU,IAAI;AAEX,WAAA;AAAA,EACT,GAAG,CAAE,CAAA;AACP;AC1CA,MAAM,cAAc,CAAC,SAAS,KAAK,MAAM,GAAG,EAAE,KAAK,GAAG;AAEtD,MAAM,eAAe,CAAC,QAAQ,eAAe;AAC3C,SAAO,OAAO,QAAQ,QAAQ,QAAQ,UAAU,CAAC,EAAE,IAAI,CAAC,CAAC,UAAU,IAAI,OAAO;AAAA,IAC5E,UAAU;AAAA,IACV,YAAY,YAAY,QAAQ;AAAA,IAChC,cAAc,OAAO,QAAQ,QAAQ,MAAM,aAAa,CAAC,EAAE;AAAA,MACzD,CAAC,CAAC,iBAAiB,OAAO,OAAO;AAAA,QAC/B;AAAA,QACA,eAAe,YAAY,eAAe;AAAA,QAC1C;AAAA,MAAA;AAAA,IAEJ;AAAA,EACA,EAAA;AACJ;ACZA,MAAM,OAAO,CAAC,QAAQ,gBAAgB;AAC9B,QAAA;AAAA,IACJ;AAAA,IACA,UAAU,EAAE,iBAAiB,aAAa,SAAS,SAAS;AAAA,EAC1D,IAAA;AAEJ,QAAM,UAAU;AAAA,IACd;AAAA,IACA;AAAA,IACA,SAASc,aAAkC,SAAS,QAAQ;AAAA,IAC5D,UAAUA,aAAkC,UAAU,UAAU;AAAA,EAAA;AAElE,QAAM,cAAc;AAAA,IAClB,iBAAiB;AAAA,MACf;AAAA,MACA,gBAAgB,WAAW,CAAC;AAAA,MAC5B;AAAA,MACA;AAAA,IACF;AAAA,IACA,aAAa;AAAA,MACX;AAAA,MACA,YAAY,WAAW,CAAC;AAAA,MACxB;AAAA,MACA;AAAA,IACF;AAAA,IACA,SAAS,mCAAmC,QAAQ,SAAS,YAAY,WAAW;AAAA,IACpF,UAAU,mCAAmC,QAAQ,UAAU,YAAY,WAAW;AAAA,EAAA;AAGjF,SAAA;AAAA,IACL,aAAa;AAAA,IACb,cAAc;AAAA,IACd;AAAA,EAAA;AAEJ;AC3BA,MAAM,0BAA0B,CAAC,QAAQ;AACvC,SAAO,OAAO,KAAK,GAAG,EAAE,OAAO,CAAC,KAAK,YAAY;AACzC,UAAA,eAAe,IAAI,OAAO;AAEhC,QAAI,SAAS,YAAY,KAAK,CAAC,IAAI,cAAc,YAAY,GAAG;AACvD,aAAA,EAAE,GAAG,KAAK,CAAC,OAAO,GAAG,wBAAwB,YAAY;IAClE;AAEA,QAAI,SAAS,YAAY,KAAK,IAAI,cAAc,YAAY,GAAG;AAC7D,YAAM,kBAAkB,oBAAoB,KAAK,cAAc,YAAY,CAAC,EAAE;AAAA,QAC5E,CAAC,QAAQ;AAAA,MAAA;AAGX,UAAI,CAAC,iBAAiB;AACd,cAAA,oBAAoB,OAAO,KAAK,aAAa,UAAU,EAAE,OAAO,CAAC,MAAMC,aAAY;AACvF,eAAKA,QAAO,IAAI;AAET,iBAAA;AAAA,QACT,GAAG,CAAE,CAAA;AAEE,eAAA,EAAE,GAAG,KAAK,CAAC,OAAO,GAAG,EAAE,GAAG,cAAc,YAAY,kBAAA;MAC7D;AAAA,IACF;AAEA,QAAI,OAAO,IAAI;AAER,WAAA;AAAA,EACT,GAAG,CAAE,CAAA;AACP;AC7BA,MAAM,eAAe,CAAC,KAAK,YAAY,gBAAgB,UAAU;AAC/D,SAAO,OAAO,KAAK,GAAG,EAAE,OAAO,CAAC,KAAK,YAAY;AACzC,UAAA,eAAe,IAAI,OAAO;AAE5B,QAAA,YAAY,gBAAgB,CAAC,eAAe;AAC9C,UAAI,OAAO,IAAI;AAER,aAAA;AAAA,IACT;AAEI,QAAA,SAAS,YAAY,GAAG;AACnB,aAAA,EAAE,GAAG,KAAK,CAAC,OAAO,GAAG,aAAa,cAAc,YAAY,YAAY,QAAQ;IACzF;AAEA,QAAI,OAAO,IAAI;AAER,WAAA;AAAA,EACT,GAAG,CAAE,CAAA;AACP;AClBA,MAAM,eAAe;AAAA,EACnB,aAAa,CAAC;AAAA,EACd,cAAc,CAAC;AAAA,EACf,SAAS,CAAC;AACZ;AAGA,MAAM,UAAU,CAAC,OAAO,WACtB,QAAQ,OAAO,CAAC,eAAe;AAC7B,UAAQ,OAAO,MAAM;AAAA,IAGnB,KAAK,oDAAoD;AACvD,YAAM,EAAE,oBAAoB,UAAU,MAAA,IAAU;AAC1C,YAAA,aAAa,CAAC,gBAAgB,kBAAkB;AAE/C,aAAA,KAAK,IAAI,OAAO,UAAU,CAAC,EAAE,QAAQ,CAAC,mBAAmB;AAC9D,cAAM,2BAA2B;AAAA,UAC/B;AAAA,UACA,CAAC,GAAG,YAAY,gBAAgB,QAAQ;AAAA,UACxC;AAAA,QAAA;AAGF,YAAI,0BAA0B;AACxB,cAAA,gBAAgB,aAAa,0BAA0B,KAAK;AAG5D,cAAA,CAAC,SAAS,cAAc,YAAY;AACtC,kBAAM,oBAAoB,aAAa,cAAc,YAAY,KAAK;AAEtE,4BAAgB,EAAE,GAAG,eAAe,YAAY,kBAAkB;AAAA,UACpE;AAEA,cAAI,YAAY,CAAC,GAAG,YAAY,gBAAgB,QAAQ,GAAG,aAAa;AAAA,QAC1E;AAAA,MAAA,CACD;AAED;AAAA,IACF;AAAA,IACA,KAAK,+CAA+C;AAClD,YAAM,EAAE,sBAAsB,cAAc,SAAS,UAAU;AAC3D,UAAA,wBAAwB,UAAU,MAAM,YAAY;AAClD,YAAA,mCAAmC,qBAAqB,MAAM,IAAI;AAExE,YAAM,cAAc,IAAI,uBAAuB,kCAAkC,CAAE,CAAA;AAEnF,aAAO,KAAK,WAAW,EAAE,QAAQ,CAAC,aAAa;AAI7C,YAAI,IAAI,YAAY,QAAQ,GAAG,cAAc,YAAY,EAAE,GAAG;AACtD,gBAAA,WAAW,IAAI,aAAa,CAAC,UAAU,cAAc,cAAc,OAAO,CAAC;AACjF,gBAAM,kBAAkB;AAAA,YACtB,GAAG;AAAA,YACH;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UAAA;AAGE,cAAA,CAAC,SAAS,QAAQ,GAAG;AACnB,gBAAA,uBAAuB,iBAAiB,KAAK;AAAA,UAAA,OAC5C;AACC,kBAAA,eAAe,aAAa,UAAU,KAAK;AAE7C,gBAAA,uBAAuB,iBAAiB,YAAY;AAAA,UAC1D;AAAA,QACF;AAAA,MAAA,CACD;AAGD,UAAI,CAAC,OAAO;AACV,gCAAwB,wBAAwB,qBAAqB;AAAA,MACvE;AAEI,UAAA,YAAY,gBAAgB,qBAAqB;AAErD;AAAA,IACF;AAAA,IACA,KAAK,wBAAwB;AAC3B,aAAO,QAAQ,OAAO,UAAU,EAAE,QAAQ,CAAC,UAAU;AAC7C,cAAA,CAAC,kBAAkB,kBAAkB,IAAI;AAE/C;AAAA,UACE;AAAA,UACA,CAAC,gBAAgB,GAAG,iBAAiB,MAAM,IAAI,GAAG,YAAY;AAAA,UAC9D;AAAA,QAAA;AAAA,MACF,CACD;AAED;AAAA,IACF;AAAA,IACA,KAAK,6BAA6B;AAC5B,UAAA,wBAAwB,UAAU,MAAM,YAAY;AAEpD,UAAA,uBAAuB,CAAC,GAAG,OAAO,KAAK,MAAM,IAAI,CAAC,GAAG,OAAO,KAAK;AAGjE,UAAA,CAAC,OAAO,OAAO;AACjB,gCAAwB,wBAAwB,qBAAqB;AAAA,MACvE;AAEI,UAAA,YAAY,gBAAgB,qBAAqB;AAErD;AAAA,IACF;AAAA,IAkCA,KAAK,oCAAoC;AACjC,YAAA,EAAE,MAAM,MAAU,IAAA;AACxB,YAAM,cAAc,CAAC,GAAG,KAAK,MAAM,IAAI,CAAC;AACpC,UAAA,wBAAwB,UAAU,MAAM,YAAY;AACxD,YAAM,YAAY,IAAI,uBAAuB,aAAa,CAAE,CAAA;AAEtD,YAAA,gBAAgB,aAAa,WAAW,KAAK;AAC/C,UAAA,uBAAuB,aAAa,aAAa;AAGrD,UAAI,CAAC,OAAO;AACV,gCAAwB,wBAAwB,qBAAqB;AAAA,MACvE;AAEA,UAAI,YAAY,CAAC,cAAc,GAAG,qBAAqB;AAEvD;AAAA,IACF;AAAA,IACA,KAAK,cAAc;AACjB,iBAAW,eAAe,MAAM;AAChC;AAAA,IACF;AAAA,IACA,KAAK,yBAAyB;AAC5B,iBAAW,cAAc,MAAM;AAC/B;AAAA,IACF;AAAA,IACA;AACS,aAAA;AAAA,EACX;AACF,CAAC;AC7KH,MAAM,wBAAwB,CAAC,eAAe;AACrC,SAAA,OAAO,QAAQ,UAAU,EAC7B,OAAO,CAAC,CAAG,EAAA,cAAc,MAAM;AACvB,WAAA;AAAA,EACR,CAAA,EACA,IAAI,CAAC,CAAC,aAAa,MAAM,aAAa;AAC3C;AAEA,MAAM,mBAAmB,CAAC,UAAU;AAClC,QAAM,CAAC,YAAY,EAAE,WAAY,CAAA,IAAI;AAE9B,SAAA;AAAA,IACL,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,YAAY,sBAAsB,UAAU;AAAA,IAC5C,YAAY,CAAC;AAAA,EAAA;AAEjB;AAEA,MAAM,qCAAqC,CAAC,wBAAwB;AAClE,SAAO,OAAO,OAAO,mBAAmB,EAAE,OAAO,CAAC,KAAK,YAAY;AAC3D,UAAA,cAAc,OAAO,QAAQ,OAAO,EAAE,OAAO,CAAC,MAAM,aAAa;AAC/D,YAAA;AAAA,QAAA;AAAA,QAEJ;AAAA,UACE,YAAY,EAAE,QAAQ;AAAA,QACxB;AAAA,MACE,IAAA;AAEJ,UAAI,CAAC,SAAS;AACL,eAAA;AAAA,MACT;AAEM,YAAA,aAAa,iBAAiB,QAAQ;AAE5C,WAAK,KAAK,UAAU;AAEb,aAAA;AAAA,IACT,GAAG,CAAE,CAAA;AAEL,WAAO,CAAC,GAAG,KAAK,GAAG,WAAW;AAAA,EAChC,GAAG,CAAE,CAAA;AACP;AAEA,MAAM,iCAAiC,CAAC,8BAA8B;AACpE,SAAO,OAAO,OAAO,yBAAyB,EAAE,OAAO,CAAC,KAAK,YAAY;AACjE,UAAA,6BAA6B,mCAAmC,OAAO;AAE7E,WAAO,CAAC,GAAG,KAAK,GAAG,0BAA0B;AAAA,EAC/C,GAAG,CAAE,CAAA;AACP;AC3CA,MAAM,sBAAsB,CAAC,eAAe,SAAS,OAAO;AAC1D,SAAO,OAAO,QAAQ,aAAa,EAAE,OAAO,CAAC,KAAK,YAAY;AACtD,UAAA,CAAC,MAAM,KAAK,IAAI;AAElB,QAAA,SAAS,KAAK,GAAG;AACZ,aAAA,CAAC,GAAG,KAAK,GAAG,oBAAoB,OAAO,GAAG,MAAM,GAAG,IAAI,GAAG,CAAC;AAAA,IACpE;AAEA,QAAI,SAAS,CAAC,SAAS,KAAK,GAAG;AAC7B,UAAI,KAAK,GAAG,MAAM,GAAG,IAAI,EAAE;AAAA,IAC7B;AAEO,WAAA;AAAA,EACT,GAAG,CAAE,CAAA;AACP;AAWA,MAAM,iCAAiC,CAAC,QAAQ,SAAS,EAAE,YAAY,iBAAiB;AAC/E,SAAA,OAAO,QAAQ,UAAU,EAAE;AAAA,IAChC,CAAC,KAAK,YAAY;AACV,YAAA,CAAC,cAAc,aAAa,IAAI;AAEtC,UAAI,WAAW,YAAY,IAAI,oBAAoB,aAAa;AAEzD,aAAA;AAAA,IACT;AAAA,IACA,EAAE,QAAQ,SAAS,YAAY,sBAAsB,UAAU,GAAG,YAAY,GAAG;AAAA,EAAA;AAErF;AASA,MAAM,oCAAoC,CAAC,QAAQ,SAAS,EAAE,iBAAiB;AACtE,SAAA;AAAA,IACL;AAAA,IACA;AAAA,IACA,YAAY,CAAC;AAAA,IACb,YAAY,sBAAsB,UAAU;AAAA,EAAA;AAEhD;AAQA,MAAM,2BAA2B,CAAC,SAAS,YAAY;AAC/C,QAAA,cAAc,OAAO,QAAQ,OAAO,EAAE,OAAO,CAAC,KAAK,YAAY;AAC7D,UAAA,CAAC,YAAYC,YAAW,IAAI;AAClC,UAAM,yBAAyB,oBAAoBA,YAAW,EAAE,KAAK,CAAC,QAAQ,GAAG;AAEjF,QAAI,CAAC,wBAAwB;AACpB,aAAA;AAAA,IACT;AAEI,QAAA,CAACA,cAAa,YAAY,SAAS;AACrC,YAAM,0BAA0B;AAAA,QAC9B;AAAA,QACA;AAAA,QACAA;AAAAA,MAAA;AAGK,aAAA,CAAC,GAAG,KAAK,uBAAuB;AAAA,IACzC;AAEI,QAAA,CAACA,aAAY,WAAW,SAAS;AAC5B,aAAA;AAAA,IACT;AAEA,UAAM,aAAa,kCAAkC,YAAY,SAASA,YAAW;AAErF,QAAI,KAAK,UAAU;AAEZ,WAAA;AAAA,EACT,GAAG,CAAE,CAAA;AAEE,SAAA;AACT;AAOA,MAAM,oCAAoC,CAAC,4BAA4B;AAC/D,QAAA,cAAc,OAAO,QAAQ,uBAAuB,EAAE,OAAO,CAAC,gBAAgB,YAAY;AACxF,UAAA,CAAC,SAAS,qBAAqB,IAAI;AAEnCA,UAAAA,eAAc,yBAAyB,SAAS,qBAAqB;AAE3E,WAAO,CAAC,GAAG,gBAAgB,GAAGA,YAAW;AAAA,EAC3C,GAAG,CAAE,CAAA;AAEE,SAAA;AACT;ACrHA,MAAM,yBAAyB,CAAC,iBAAiB;AACzC,QAAA,qBAAqB,+BAA+B,aAAa,OAAO;AACxE,QAAA,sBAAsB,+BAA+B,aAAa,QAAQ;AAChF,QAAM,6BAA6B;AAAA,IACjC,aAAa;AAAA,EAAA;AAGT,QAAA,yBAAyB,kCAAkC,aAAa,WAAW;AAElF,SAAA;AAAA,IACL,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,EAAA;AAEP;AClBA,MAAM,aAAa;AAAA,EACjB;AAAA,IACE,SAAS;AAAA,IACT,gBAAgB;AAAA,IAChB,IAAI;AAAA,EACN;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,IAAI;AAAA,IACJ,gBAAgB;AAAA,EAClB;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,gBAAgB;AAAA,IAChB,IAAI;AAAA,EACN;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,gBAAgB;AAAA,IAChB,IAAI;AAAA,EACN;AACF;ACHA,MAAM,cAAc,WAAW,CAAC,EAAE,QAAQ,gBAAgB,eAAe,QAAQ;AAC/E,QAAM,CAAC,EAAE,aAAa,SAAS,aAAa,GAAG,QAAQ,IAAI;AAAA,IAAW;AAAA,IAAS;AAAA,IAAc,MAC3F,KAAK,QAAQ,WAAW;AAAA,EAAA;AAEpB,QAAA,EAAE,kBAAkB;AAE1B,sBAAoB,KAAK,MAAM;AACtB,WAAA;AAAA,MACL,iBAAiB;AACf,cAAM,sBAAsB;AAAA,UAC1B,YAAY;AAAA,UACZ,aAAa;AAAA,QAAA;AAEf,cAAM,kBAAkB,WAAW,YAAY,aAAa,aAAa,WAAW;AAEpF,cAAM,mBAAmB,EAAE,GAAG,qBAAqB,GAAG,gBAAgB;AAElE,YAAA;AAEA,YAAA,QAAQ,gBAAgB,GAAG;AACP,gCAAA;AAAA,QAAA,OACjB;AACL,gCAAsB,OAAO,OAAO,gBAAgB,EAAE,KAAK,CAAC,eAAe;AAClE,mBAAA,OAAO,OAAO,UAAU,EAAE;AAAA,cAAK,CAAC,oBACrC,IAAI,iBAAiB,YAAY;AAAA,YAAA;AAAA,UACnC,CACD;AAAA,QACH;AAEA,eAAO,EAAE,mBAAmB,uBAAuB,YAAY,GAAG,oBAAoB;AAAA,MACxF;AAAA,MACA,YAAY;AACD,iBAAA,EAAE,MAAM,aAAA,CAAc;AAAA,MACjC;AAAA,MACA,qBAAqB;AACV,iBAAA,EAAE,MAAM,wBAAA,CAAyB;AAAA,MAC5C;AAAA,IAAA;AAAA,EACF,CACD;AAED,QAAM,kDAAkD,CACtD,sBACA,cACA,SACA,UACG;AACM,aAAA;AAAA,MACP,MAAM;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA,CACD;AAAA,EAAA;AAGH,QAAM,iDAAiD,CAAC,oBAAoB,UAAU,UAAU;AACrF,aAAA;AAAA,MACP,MAAM;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,IAAA,CACD;AAAA,EAAA;AAGG,QAAA,yBAAyB,CAAC,eAAe;AAC7C,aAAS,EAAE,MAAM,wBAAwB,WAAY,CAAA;AAAA,EAAA;AAGjD,QAAA,6BAA6B,YAAY,CAAC,EAAE,QAAQ,EAAE,MAAM,MAAM,QAAQ;AACrE,aAAA;AAAA,MACP,MAAM;AAAA,MACN,MAAM;AAAA,MACN;AAAA,IAAA,CACD;AAAA,EACH,GAAG,CAAE,CAAA;AAEC,QAAA,6BAA6B,YAAY,CAAC,EAAE,QAAQ,EAAE,MAAM,MAAM,QAAQ;AACrE,aAAA;AAAA,MACP,MAAM;AAAA,MACN,MAAM;AAAA,MACN;AAAA,IAAA,CACD;AAAA,EACH,GAAG,CAAE,CAAA;AAGH,SAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,qBAAqB,OAAO;AAAA,MAC5B;AAAA,MACA,oBAAoB;AAAA,MACpB,wBAAwB;AAAA,MACxB,wBAAwB;AAAA,MACxB,6CAA6C;AAAA,MAC7C,4CAA4C;AAAA,MAE5C,UAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,IAAG;AAAA,UACH,OAAO,cAAc;AAAA,YACnB,IAAI;AAAA,YACJ,gBAAgB;AAAA,UAAA,CACjB;AAAA,UAED,UAAA;AAAA,YAAC,oBAAA,MAAA,EACE,qBAAW,IAAI,CAAC,aACd,oBAAA,KAAA,EACE,wBAAc,EAAE,IAAI,SAAS,SAAS,gBAAgB,SAAS,eAAgB,CAAA,KADxE,SAAS,EAEnB,CACD,EACH,CAAA;AAAA,iCACC,WAAU,EAAA,OAAO,EAAE,UAAU,WAC5B,GAAA,UAAA;AAAA,cAAA,oBAAC,UACC,EAAA,UAAA;AAAA,gBAACC;AAAAA,gBAAA;AAAA,kBACC,QAAQ,QAAQ;AAAA,kBAChB,MAAK;AAAA,kBACL;AAAA,gBAAA;AAAA,cAAA,GAEJ;AAAA,kCACC,UACC,EAAA,UAAA;AAAA,gBAACA;AAAAA,gBAAA;AAAA,kBACC,QAAQ,QAAQ;AAAA,kBAChB,MAAK;AAAA,kBACL;AAAA,gBAAA;AAAA,cAAA,GAEJ;AAAA,kCACC,UACC,EAAA,UAAA;AAAA,gBAACC;AAAAA,gBAAA;AAAA,kBACC,QAAQ,QAAQ;AAAA,kBAChB,MAAK;AAAA,kBACL;AAAA,gBAAA;AAAA,cAAA,GAEJ;AAAA,kCACC,UACC,EAAA,UAAA;AAAA,gBAACA;AAAAA,gBAAA;AAAA,kBACC,QAAQ,QAAQ;AAAA,kBAChB,MAAK;AAAA,kBACL;AAAA,gBAAA;AAAA,cAAA,GAEJ;AAAA,YAAA,GACF;AAAA,UAAA;AAAA,QAAA;AAAA,MACF;AAAA,IAAA;AAAA,EAAA;AAGN,CAAC;AAED,YAAY,eAAe;AAAA,EACzB,aAAa,CAAC;AAAA,EACd,QAAQ;AAAA,IACN,YAAY,CAAC;AAAA,IACb,UAAU;AAAA,MACR,iBAAiB,CAAC;AAAA,MAClB,aAAa;AAAA,QACX,SAAS,CAAC;AAAA,MACZ;AAAA,MACA,UAAU,CAAC;AAAA,MACX,SAAS,CAAC;AAAA,IACZ;AAAA,EACF;AACF;AACA,YAAY,YAAY;AAAA,EACtB,QAAQ,UAAU;AAAA,EAClB,gBAAgB,UAAU,KAAK;AAAA,EAC/B,aAAa,UAAU;AACzB;AAEA,MAAe,gBAAA,KAAK,WAAW;AClLxB,MAAM,+BAA+B,CAAC,IAAI,eAAe,OAAO;AAC/D,QAAA,EAAE,KAAAC,SAAQ;AAEhB,QAAM,EAAE,MAAM,OAAO,SAAS,UAAc,IAAA;AAAA,IAC1C,CAAC,eAAe,EAAE;AAAA,IAClB,YAAY;AACJ,YAAA;AAAA,QACJ,MAAM,EAAE,MAAAC,MAAK;AAAA,MAAA,IACX,MAAMD,KAAI,sBAAsB;AAAA;AAAA,QAElC,QAAQ,EAAE,MAAM,GAAG;AAAA,MAAA,CACpB;AAEMC,aAAAA;AAAAA,IACT;AAAA,IACA;AAAA,EAAA;AAGF,SAAO,EAAE,MAAM,OAAO,SAAS,UAAU;AAC3C;ACZa,MAAA,0BAA0B,CACrC,SAAwC,EAAE,IAAI,KAAK,GACnD,eAAe,OACZ;AACH,QAAM,EAAE,IAAI,GAAG,YAAA,IAAgB;AAEzB,QAAA,EAAE,KAAAD,SAAQ;AAEV,QAAA;AAAA,IACJ,MAAM;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,IACE;AAAA,IACF,CAAC,SAAS,IAAI,eAAe,WAAW;AAAA,IACxC,YAAY;AACJ,YAAA;AAAA,QACJ,MAAM,EAAE,KAAK;AAAA,MACX,IAAA,MAAMA,KAAgC,gBAAgB,EAAE,gBAAgB;AAAA,QAC1E,QAAQ;AAAA,MAAA,CACT;AAEM,aAAA;AAAA,IACT;AAAA,IACA;AAAA,EAAA;AAGF,SAAO,EAAE,aAAa,OAAO,SAAS,WAAW,QAAQ;AAC3D;"}