@adaptic/utils 0.0.99

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 (238) hide show
  1. package/README.md +916 -0
  2. package/dist/index.cjs +71971 -0
  3. package/dist/index.cjs.map +1 -0
  4. package/dist/index.mjs +71677 -0
  5. package/dist/index.mjs.map +1 -0
  6. package/dist/test.js +7799 -0
  7. package/dist/test.js.map +1 -0
  8. package/dist/types/__tests__/alpaca-functions.test.d.ts +2 -0
  9. package/dist/types/__tests__/alpaca-functions.test.d.ts.map +1 -0
  10. package/dist/types/__tests__/api-endpoints.test.d.ts +2 -0
  11. package/dist/types/__tests__/api-endpoints.test.d.ts.map +1 -0
  12. package/dist/types/__tests__/asset-allocation.test.d.ts +2 -0
  13. package/dist/types/__tests__/asset-allocation.test.d.ts.map +1 -0
  14. package/dist/types/__tests__/auth-validator.test.d.ts +2 -0
  15. package/dist/types/__tests__/auth-validator.test.d.ts.map +1 -0
  16. package/dist/types/__tests__/cache.test.d.ts +2 -0
  17. package/dist/types/__tests__/cache.test.d.ts.map +1 -0
  18. package/dist/types/__tests__/errors.test.d.ts +2 -0
  19. package/dist/types/__tests__/errors.test.d.ts.map +1 -0
  20. package/dist/types/__tests__/financial-regression.test.d.ts +2 -0
  21. package/dist/types/__tests__/financial-regression.test.d.ts.map +1 -0
  22. package/dist/types/__tests__/format-tools.test.d.ts +2 -0
  23. package/dist/types/__tests__/format-tools.test.d.ts.map +1 -0
  24. package/dist/types/__tests__/http-keep-alive.test.d.ts +2 -0
  25. package/dist/types/__tests__/http-keep-alive.test.d.ts.map +1 -0
  26. package/dist/types/__tests__/http-timeout.test.d.ts +2 -0
  27. package/dist/types/__tests__/http-timeout.test.d.ts.map +1 -0
  28. package/dist/types/__tests__/logger.test.d.ts +2 -0
  29. package/dist/types/__tests__/logger.test.d.ts.map +1 -0
  30. package/dist/types/__tests__/market-time.test.d.ts +2 -0
  31. package/dist/types/__tests__/market-time.test.d.ts.map +1 -0
  32. package/dist/types/__tests__/misc-utils.test.d.ts +2 -0
  33. package/dist/types/__tests__/misc-utils.test.d.ts.map +1 -0
  34. package/dist/types/__tests__/paginator.test.d.ts +2 -0
  35. package/dist/types/__tests__/paginator.test.d.ts.map +1 -0
  36. package/dist/types/__tests__/performance-metrics.test.d.ts +2 -0
  37. package/dist/types/__tests__/performance-metrics.test.d.ts.map +1 -0
  38. package/dist/types/__tests__/polygon.test.d.ts +2 -0
  39. package/dist/types/__tests__/polygon.test.d.ts.map +1 -0
  40. package/dist/types/__tests__/price-utils.test.d.ts +2 -0
  41. package/dist/types/__tests__/price-utils.test.d.ts.map +1 -0
  42. package/dist/types/__tests__/property-based-financial.test.d.ts +2 -0
  43. package/dist/types/__tests__/property-based-financial.test.d.ts.map +1 -0
  44. package/dist/types/__tests__/rate-limiter.test.d.ts +2 -0
  45. package/dist/types/__tests__/rate-limiter.test.d.ts.map +1 -0
  46. package/dist/types/__tests__/schema-validation.test.d.ts +2 -0
  47. package/dist/types/__tests__/schema-validation.test.d.ts.map +1 -0
  48. package/dist/types/__tests__/technical-analysis.test.d.ts +2 -0
  49. package/dist/types/__tests__/technical-analysis.test.d.ts.map +1 -0
  50. package/dist/types/__tests__/time-utils.test.d.ts +2 -0
  51. package/dist/types/__tests__/time-utils.test.d.ts.map +1 -0
  52. package/dist/types/adaptic.d.ts +52 -0
  53. package/dist/types/adaptic.d.ts.map +1 -0
  54. package/dist/types/alpaca/client.d.ts +95 -0
  55. package/dist/types/alpaca/client.d.ts.map +1 -0
  56. package/dist/types/alpaca/crypto/data.d.ts +281 -0
  57. package/dist/types/alpaca/crypto/data.d.ts.map +1 -0
  58. package/dist/types/alpaca/crypto/index.d.ts +75 -0
  59. package/dist/types/alpaca/crypto/index.d.ts.map +1 -0
  60. package/dist/types/alpaca/crypto/orders.d.ts +221 -0
  61. package/dist/types/alpaca/crypto/orders.d.ts.map +1 -0
  62. package/dist/types/alpaca/index.d.ts +205 -0
  63. package/dist/types/alpaca/index.d.ts.map +1 -0
  64. package/dist/types/alpaca/legacy/account.d.ts +34 -0
  65. package/dist/types/alpaca/legacy/account.d.ts.map +1 -0
  66. package/dist/types/alpaca/legacy/assets.d.ts +13 -0
  67. package/dist/types/alpaca/legacy/assets.d.ts.map +1 -0
  68. package/dist/types/alpaca/legacy/auth.d.ts +18 -0
  69. package/dist/types/alpaca/legacy/auth.d.ts.map +1 -0
  70. package/dist/types/alpaca/legacy/index.d.ts +15 -0
  71. package/dist/types/alpaca/legacy/index.d.ts.map +1 -0
  72. package/dist/types/alpaca/legacy/market-data.d.ts +32 -0
  73. package/dist/types/alpaca/legacy/market-data.d.ts.map +1 -0
  74. package/dist/types/alpaca/legacy/orders.d.ts +84 -0
  75. package/dist/types/alpaca/legacy/orders.d.ts.map +1 -0
  76. package/dist/types/alpaca/legacy/positions.d.ts +66 -0
  77. package/dist/types/alpaca/legacy/positions.d.ts.map +1 -0
  78. package/dist/types/alpaca/legacy/utils.d.ts +18 -0
  79. package/dist/types/alpaca/legacy/utils.d.ts.map +1 -0
  80. package/dist/types/alpaca/market-data/bars.d.ts +142 -0
  81. package/dist/types/alpaca/market-data/bars.d.ts.map +1 -0
  82. package/dist/types/alpaca/market-data/index.d.ts +13 -0
  83. package/dist/types/alpaca/market-data/index.d.ts.map +1 -0
  84. package/dist/types/alpaca/market-data/news.d.ts +87 -0
  85. package/dist/types/alpaca/market-data/news.d.ts.map +1 -0
  86. package/dist/types/alpaca/market-data/quotes.d.ts +85 -0
  87. package/dist/types/alpaca/market-data/quotes.d.ts.map +1 -0
  88. package/dist/types/alpaca/market-data/trades.d.ts +98 -0
  89. package/dist/types/alpaca/market-data/trades.d.ts.map +1 -0
  90. package/dist/types/alpaca/options/contracts.d.ts +279 -0
  91. package/dist/types/alpaca/options/contracts.d.ts.map +1 -0
  92. package/dist/types/alpaca/options/data.d.ts +126 -0
  93. package/dist/types/alpaca/options/data.d.ts.map +1 -0
  94. package/dist/types/alpaca/options/index.d.ts +17 -0
  95. package/dist/types/alpaca/options/index.d.ts.map +1 -0
  96. package/dist/types/alpaca/options/orders.d.ts +366 -0
  97. package/dist/types/alpaca/options/orders.d.ts.map +1 -0
  98. package/dist/types/alpaca/options/strategies.d.ts +224 -0
  99. package/dist/types/alpaca/options/strategies.d.ts.map +1 -0
  100. package/dist/types/alpaca/streams/base-stream.d.ts +143 -0
  101. package/dist/types/alpaca/streams/base-stream.d.ts.map +1 -0
  102. package/dist/types/alpaca/streams/crypto-stream.d.ts +173 -0
  103. package/dist/types/alpaca/streams/crypto-stream.d.ts.map +1 -0
  104. package/dist/types/alpaca/streams/index.d.ts +54 -0
  105. package/dist/types/alpaca/streams/index.d.ts.map +1 -0
  106. package/dist/types/alpaca/streams/option-stream.d.ts +167 -0
  107. package/dist/types/alpaca/streams/option-stream.d.ts.map +1 -0
  108. package/dist/types/alpaca/streams/stock-stream.d.ts +176 -0
  109. package/dist/types/alpaca/streams/stock-stream.d.ts.map +1 -0
  110. package/dist/types/alpaca/streams/stream-manager.d.ts +277 -0
  111. package/dist/types/alpaca/streams/stream-manager.d.ts.map +1 -0
  112. package/dist/types/alpaca/streams/trading-stream.d.ts +186 -0
  113. package/dist/types/alpaca/streams/trading-stream.d.ts.map +1 -0
  114. package/dist/types/alpaca/streams.d.ts +88 -0
  115. package/dist/types/alpaca/streams.d.ts.map +1 -0
  116. package/dist/types/alpaca/test-imports.d.ts +7 -0
  117. package/dist/types/alpaca/test-imports.d.ts.map +1 -0
  118. package/dist/types/alpaca/trading/account.d.ts +198 -0
  119. package/dist/types/alpaca/trading/account.d.ts.map +1 -0
  120. package/dist/types/alpaca/trading/bracket-orders.d.ts +162 -0
  121. package/dist/types/alpaca/trading/bracket-orders.d.ts.map +1 -0
  122. package/dist/types/alpaca/trading/clock.d.ts +99 -0
  123. package/dist/types/alpaca/trading/clock.d.ts.map +1 -0
  124. package/dist/types/alpaca/trading/index.d.ts +15 -0
  125. package/dist/types/alpaca/trading/index.d.ts.map +1 -0
  126. package/dist/types/alpaca/trading/oco-orders.d.ts +203 -0
  127. package/dist/types/alpaca/trading/oco-orders.d.ts.map +1 -0
  128. package/dist/types/alpaca/trading/order-utils.d.ts +404 -0
  129. package/dist/types/alpaca/trading/order-utils.d.ts.map +1 -0
  130. package/dist/types/alpaca/trading/orders.d.ts +199 -0
  131. package/dist/types/alpaca/trading/orders.d.ts.map +1 -0
  132. package/dist/types/alpaca/trading/oto-orders.d.ts +282 -0
  133. package/dist/types/alpaca/trading/oto-orders.d.ts.map +1 -0
  134. package/dist/types/alpaca/trading/positions.d.ts +389 -0
  135. package/dist/types/alpaca/trading/positions.d.ts.map +1 -0
  136. package/dist/types/alpaca/trading/smart-orders.d.ts +301 -0
  137. package/dist/types/alpaca/trading/smart-orders.d.ts.map +1 -0
  138. package/dist/types/alpaca/trading/trailing-stops.d.ts +240 -0
  139. package/dist/types/alpaca/trading/trailing-stops.d.ts.map +1 -0
  140. package/dist/types/alpaca-market-data-api.d.ts +386 -0
  141. package/dist/types/alpaca-market-data-api.d.ts.map +1 -0
  142. package/dist/types/alpaca-trading-api.d.ts +315 -0
  143. package/dist/types/alpaca-trading-api.d.ts.map +1 -0
  144. package/dist/types/alphavantage.d.ts +44 -0
  145. package/dist/types/alphavantage.d.ts.map +1 -0
  146. package/dist/types/asset-allocation-algorithm.d.ts +143 -0
  147. package/dist/types/asset-allocation-algorithm.d.ts.map +1 -0
  148. package/dist/types/cache/stampede-protected-cache.d.ts +565 -0
  149. package/dist/types/cache/stampede-protected-cache.d.ts.map +1 -0
  150. package/dist/types/config/api-endpoints.d.ts +94 -0
  151. package/dist/types/config/api-endpoints.d.ts.map +1 -0
  152. package/dist/types/crypto.d.ts +76 -0
  153. package/dist/types/crypto.d.ts.map +1 -0
  154. package/dist/types/display-manager.d.ts +24 -0
  155. package/dist/types/display-manager.d.ts.map +1 -0
  156. package/dist/types/errors/index.d.ts +130 -0
  157. package/dist/types/errors/index.d.ts.map +1 -0
  158. package/dist/types/examples/asset-allocation-example.d.ts +36 -0
  159. package/dist/types/examples/asset-allocation-example.d.ts.map +1 -0
  160. package/dist/types/examples/rate-limiter-example.d.ts +7 -0
  161. package/dist/types/examples/rate-limiter-example.d.ts.map +1 -0
  162. package/dist/types/format-tools.d.ts +54 -0
  163. package/dist/types/format-tools.d.ts.map +1 -0
  164. package/dist/types/http-timeout.d.ts +37 -0
  165. package/dist/types/http-timeout.d.ts.map +1 -0
  166. package/dist/types/index.d.ts +766 -0
  167. package/dist/types/index.d.ts.map +1 -0
  168. package/dist/types/logger.d.ts +56 -0
  169. package/dist/types/logger.d.ts.map +1 -0
  170. package/dist/types/logging.d.ts +12 -0
  171. package/dist/types/logging.d.ts.map +1 -0
  172. package/dist/types/market-hours.d.ts +24 -0
  173. package/dist/types/market-hours.d.ts.map +1 -0
  174. package/dist/types/market-time.d.ts +246 -0
  175. package/dist/types/market-time.d.ts.map +1 -0
  176. package/dist/types/metrics-calcs.d.ts +6 -0
  177. package/dist/types/metrics-calcs.d.ts.map +1 -0
  178. package/dist/types/misc-utils.d.ts +52 -0
  179. package/dist/types/misc-utils.d.ts.map +1 -0
  180. package/dist/types/performance-metrics.d.ts +88 -0
  181. package/dist/types/performance-metrics.d.ts.map +1 -0
  182. package/dist/types/polygon-indices.d.ts +85 -0
  183. package/dist/types/polygon-indices.d.ts.map +1 -0
  184. package/dist/types/polygon.d.ts +126 -0
  185. package/dist/types/polygon.d.ts.map +1 -0
  186. package/dist/types/price-utils.d.ts +26 -0
  187. package/dist/types/price-utils.d.ts.map +1 -0
  188. package/dist/types/rate-limiter.d.ts +171 -0
  189. package/dist/types/rate-limiter.d.ts.map +1 -0
  190. package/dist/types/schemas/alpaca-schemas.d.ts +779 -0
  191. package/dist/types/schemas/alpaca-schemas.d.ts.map +1 -0
  192. package/dist/types/schemas/alphavantage-schemas.d.ts +255 -0
  193. package/dist/types/schemas/alphavantage-schemas.d.ts.map +1 -0
  194. package/dist/types/schemas/index.d.ts +21 -0
  195. package/dist/types/schemas/index.d.ts.map +1 -0
  196. package/dist/types/schemas/polygon-schemas.d.ts +551 -0
  197. package/dist/types/schemas/polygon-schemas.d.ts.map +1 -0
  198. package/dist/types/schemas/validate-response.d.ts +88 -0
  199. package/dist/types/schemas/validate-response.d.ts.map +1 -0
  200. package/dist/types/technical-analysis.d.ts +90 -0
  201. package/dist/types/technical-analysis.d.ts.map +1 -0
  202. package/dist/types/test.d.ts +2 -0
  203. package/dist/types/test.d.ts.map +1 -0
  204. package/dist/types/testing/options-ws.d.ts +2 -0
  205. package/dist/types/testing/options-ws.d.ts.map +1 -0
  206. package/dist/types/time-utils.d.ts +17 -0
  207. package/dist/types/time-utils.d.ts.map +1 -0
  208. package/dist/types/types/adaptic-types.d.ts +11 -0
  209. package/dist/types/types/adaptic-types.d.ts.map +1 -0
  210. package/dist/types/types/alpaca-types.d.ts +1165 -0
  211. package/dist/types/types/alpaca-types.d.ts.map +1 -0
  212. package/dist/types/types/alphavantage-types.d.ts +66 -0
  213. package/dist/types/types/alphavantage-types.d.ts.map +1 -0
  214. package/dist/types/types/asset-allocation-types.d.ts +328 -0
  215. package/dist/types/types/asset-allocation-types.d.ts.map +1 -0
  216. package/dist/types/types/index.d.ts +21 -0
  217. package/dist/types/types/index.d.ts.map +1 -0
  218. package/dist/types/types/logging-types.d.ts +10 -0
  219. package/dist/types/types/logging-types.d.ts.map +1 -0
  220. package/dist/types/types/market-time-types.d.ts +59 -0
  221. package/dist/types/types/market-time-types.d.ts.map +1 -0
  222. package/dist/types/types/metrics-types.d.ts +33 -0
  223. package/dist/types/types/metrics-types.d.ts.map +1 -0
  224. package/dist/types/types/polygon-indices-types.d.ts +190 -0
  225. package/dist/types/types/polygon-indices-types.d.ts.map +1 -0
  226. package/dist/types/types/polygon-types.d.ts +204 -0
  227. package/dist/types/types/polygon-types.d.ts.map +1 -0
  228. package/dist/types/types/ta-types.d.ts +89 -0
  229. package/dist/types/types/ta-types.d.ts.map +1 -0
  230. package/dist/types/utils/auth-validator.d.ts +32 -0
  231. package/dist/types/utils/auth-validator.d.ts.map +1 -0
  232. package/dist/types/utils/http-keep-alive.d.ts +110 -0
  233. package/dist/types/utils/http-keep-alive.d.ts.map +1 -0
  234. package/dist/types/utils/paginator.d.ts +154 -0
  235. package/dist/types/utils/paginator.d.ts.map +1 -0
  236. package/dist/types/utils/retry.d.ts +78 -0
  237. package/dist/types/utils/retry.d.ts.map +1 -0
  238. package/package.json +78 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test.js","sources":["../node_modules/chalk/source/vendor/ansi-styles/index.js","../node_modules/chalk/source/vendor/supports-color/browser.js","../node_modules/chalk/source/utilities.js","../node_modules/chalk/source/index.js","../src/display-manager.ts","../src/logging.ts","../src/config/api-endpoints.ts","../src/market-hours.ts","../src/market-time.ts","../node_modules/ws/lib/constants.js","../node_modules/ws/lib/buffer-util.js","../node_modules/ws/lib/limiter.js","../node_modules/ws/lib/permessage-deflate.js","../node_modules/ws/lib/validation.js","../node_modules/ws/lib/receiver.js","../node_modules/ws/lib/sender.js","../node_modules/ws/lib/event-target.js","../node_modules/ws/lib/extension.js","../node_modules/ws/lib/websocket.js","../node_modules/ws/lib/stream.js","../node_modules/ws/lib/subprotocol.js","../node_modules/ws/lib/websocket-server.js","../src/utils/auth-validator.ts","../src/http-timeout.ts","../src/alpaca-market-data-api.ts","../src/format-tools.ts","../src/test.ts"],"sourcesContent":["const ANSI_BACKGROUND_OFFSET = 10;\n\nconst wrapAnsi16 = (offset = 0) => code => `\\u001B[${code + offset}m`;\n\nconst wrapAnsi256 = (offset = 0) => code => `\\u001B[${38 + offset};5;${code}m`;\n\nconst wrapAnsi16m = (offset = 0) => (red, green, blue) => `\\u001B[${38 + offset};2;${red};${green};${blue}m`;\n\nconst styles = {\n\tmodifier: {\n\t\treset: [0, 0],\n\t\t// 21 isn't widely supported and 22 does the same thing\n\t\tbold: [1, 22],\n\t\tdim: [2, 22],\n\t\titalic: [3, 23],\n\t\tunderline: [4, 24],\n\t\toverline: [53, 55],\n\t\tinverse: [7, 27],\n\t\thidden: [8, 28],\n\t\tstrikethrough: [9, 29],\n\t},\n\tcolor: {\n\t\tblack: [30, 39],\n\t\tred: [31, 39],\n\t\tgreen: [32, 39],\n\t\tyellow: [33, 39],\n\t\tblue: [34, 39],\n\t\tmagenta: [35, 39],\n\t\tcyan: [36, 39],\n\t\twhite: [37, 39],\n\n\t\t// Bright color\n\t\tblackBright: [90, 39],\n\t\tgray: [90, 39], // Alias of `blackBright`\n\t\tgrey: [90, 39], // Alias of `blackBright`\n\t\tredBright: [91, 39],\n\t\tgreenBright: [92, 39],\n\t\tyellowBright: [93, 39],\n\t\tblueBright: [94, 39],\n\t\tmagentaBright: [95, 39],\n\t\tcyanBright: [96, 39],\n\t\twhiteBright: [97, 39],\n\t},\n\tbgColor: {\n\t\tbgBlack: [40, 49],\n\t\tbgRed: [41, 49],\n\t\tbgGreen: [42, 49],\n\t\tbgYellow: [43, 49],\n\t\tbgBlue: [44, 49],\n\t\tbgMagenta: [45, 49],\n\t\tbgCyan: [46, 49],\n\t\tbgWhite: [47, 49],\n\n\t\t// Bright color\n\t\tbgBlackBright: [100, 49],\n\t\tbgGray: [100, 49], // Alias of `bgBlackBright`\n\t\tbgGrey: [100, 49], // Alias of `bgBlackBright`\n\t\tbgRedBright: [101, 49],\n\t\tbgGreenBright: [102, 49],\n\t\tbgYellowBright: [103, 49],\n\t\tbgBlueBright: [104, 49],\n\t\tbgMagentaBright: [105, 49],\n\t\tbgCyanBright: [106, 49],\n\t\tbgWhiteBright: [107, 49],\n\t},\n};\n\nexport const modifierNames = Object.keys(styles.modifier);\nexport const foregroundColorNames = Object.keys(styles.color);\nexport const backgroundColorNames = Object.keys(styles.bgColor);\nexport const colorNames = [...foregroundColorNames, ...backgroundColorNames];\n\nfunction assembleStyles() {\n\tconst codes = new Map();\n\n\tfor (const [groupName, group] of Object.entries(styles)) {\n\t\tfor (const [styleName, style] of Object.entries(group)) {\n\t\t\tstyles[styleName] = {\n\t\t\t\topen: `\\u001B[${style[0]}m`,\n\t\t\t\tclose: `\\u001B[${style[1]}m`,\n\t\t\t};\n\n\t\t\tgroup[styleName] = styles[styleName];\n\n\t\t\tcodes.set(style[0], style[1]);\n\t\t}\n\n\t\tObject.defineProperty(styles, groupName, {\n\t\t\tvalue: group,\n\t\t\tenumerable: false,\n\t\t});\n\t}\n\n\tObject.defineProperty(styles, 'codes', {\n\t\tvalue: codes,\n\t\tenumerable: false,\n\t});\n\n\tstyles.color.close = '\\u001B[39m';\n\tstyles.bgColor.close = '\\u001B[49m';\n\n\tstyles.color.ansi = wrapAnsi16();\n\tstyles.color.ansi256 = wrapAnsi256();\n\tstyles.color.ansi16m = wrapAnsi16m();\n\tstyles.bgColor.ansi = wrapAnsi16(ANSI_BACKGROUND_OFFSET);\n\tstyles.bgColor.ansi256 = wrapAnsi256(ANSI_BACKGROUND_OFFSET);\n\tstyles.bgColor.ansi16m = wrapAnsi16m(ANSI_BACKGROUND_OFFSET);\n\n\t// From https://github.com/Qix-/color-convert/blob/3f0e0d4e92e235796ccb17f6e85c72094a651f49/conversions.js\n\tObject.defineProperties(styles, {\n\t\trgbToAnsi256: {\n\t\t\tvalue(red, green, blue) {\n\t\t\t\t// We use the extended greyscale palette here, with the exception of\n\t\t\t\t// black and white. normal palette only has 4 greyscale shades.\n\t\t\t\tif (red === green && green === blue) {\n\t\t\t\t\tif (red < 8) {\n\t\t\t\t\t\treturn 16;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (red > 248) {\n\t\t\t\t\t\treturn 231;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn Math.round(((red - 8) / 247) * 24) + 232;\n\t\t\t\t}\n\n\t\t\t\treturn 16\n\t\t\t\t\t+ (36 * Math.round(red / 255 * 5))\n\t\t\t\t\t+ (6 * Math.round(green / 255 * 5))\n\t\t\t\t\t+ Math.round(blue / 255 * 5);\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToRgb: {\n\t\t\tvalue(hex) {\n\t\t\t\tconst matches = /[a-f\\d]{6}|[a-f\\d]{3}/i.exec(hex.toString(16));\n\t\t\t\tif (!matches) {\n\t\t\t\t\treturn [0, 0, 0];\n\t\t\t\t}\n\n\t\t\t\tlet [colorString] = matches;\n\n\t\t\t\tif (colorString.length === 3) {\n\t\t\t\t\tcolorString = [...colorString].map(character => character + character).join('');\n\t\t\t\t}\n\n\t\t\t\tconst integer = Number.parseInt(colorString, 16);\n\n\t\t\t\treturn [\n\t\t\t\t\t/* eslint-disable no-bitwise */\n\t\t\t\t\t(integer >> 16) & 0xFF,\n\t\t\t\t\t(integer >> 8) & 0xFF,\n\t\t\t\t\tinteger & 0xFF,\n\t\t\t\t\t/* eslint-enable no-bitwise */\n\t\t\t\t];\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToAnsi256: {\n\t\t\tvalue: hex => styles.rgbToAnsi256(...styles.hexToRgb(hex)),\n\t\t\tenumerable: false,\n\t\t},\n\t\tansi256ToAnsi: {\n\t\t\tvalue(code) {\n\t\t\t\tif (code < 8) {\n\t\t\t\t\treturn 30 + code;\n\t\t\t\t}\n\n\t\t\t\tif (code < 16) {\n\t\t\t\t\treturn 90 + (code - 8);\n\t\t\t\t}\n\n\t\t\t\tlet red;\n\t\t\t\tlet green;\n\t\t\t\tlet blue;\n\n\t\t\t\tif (code >= 232) {\n\t\t\t\t\tred = (((code - 232) * 10) + 8) / 255;\n\t\t\t\t\tgreen = red;\n\t\t\t\t\tblue = red;\n\t\t\t\t} else {\n\t\t\t\t\tcode -= 16;\n\n\t\t\t\t\tconst remainder = code % 36;\n\n\t\t\t\t\tred = Math.floor(code / 36) / 5;\n\t\t\t\t\tgreen = Math.floor(remainder / 6) / 5;\n\t\t\t\t\tblue = (remainder % 6) / 5;\n\t\t\t\t}\n\n\t\t\t\tconst value = Math.max(red, green, blue) * 2;\n\n\t\t\t\tif (value === 0) {\n\t\t\t\t\treturn 30;\n\t\t\t\t}\n\n\t\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\t\tlet result = 30 + ((Math.round(blue) << 2) | (Math.round(green) << 1) | Math.round(red));\n\n\t\t\t\tif (value === 2) {\n\t\t\t\t\tresult += 60;\n\t\t\t\t}\n\n\t\t\t\treturn result;\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\trgbToAnsi: {\n\t\t\tvalue: (red, green, blue) => styles.ansi256ToAnsi(styles.rgbToAnsi256(red, green, blue)),\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToAnsi: {\n\t\t\tvalue: hex => styles.ansi256ToAnsi(styles.hexToAnsi256(hex)),\n\t\t\tenumerable: false,\n\t\t},\n\t});\n\n\treturn styles;\n}\n\nconst ansiStyles = assembleStyles();\n\nexport default ansiStyles;\n","/* eslint-env browser */\n\nconst level = (() => {\n\tif (!('navigator' in globalThis)) {\n\t\treturn 0;\n\t}\n\n\tif (globalThis.navigator.userAgentData) {\n\t\tconst brand = navigator.userAgentData.brands.find(({brand}) => brand === 'Chromium');\n\t\tif (brand && brand.version > 93) {\n\t\t\treturn 3;\n\t\t}\n\t}\n\n\tif (/\\b(Chrome|Chromium)\\//.test(globalThis.navigator.userAgent)) {\n\t\treturn 1;\n\t}\n\n\treturn 0;\n})();\n\nconst colorSupport = level !== 0 && {\n\tlevel,\n\thasBasic: true,\n\thas256: level >= 2,\n\thas16m: level >= 3,\n};\n\nconst supportsColor = {\n\tstdout: colorSupport,\n\tstderr: colorSupport,\n};\n\nexport default supportsColor;\n","// TODO: When targeting Node.js 16, use `String.prototype.replaceAll`.\nexport function stringReplaceAll(string, substring, replacer) {\n\tlet index = string.indexOf(substring);\n\tif (index === -1) {\n\t\treturn string;\n\t}\n\n\tconst substringLength = substring.length;\n\tlet endIndex = 0;\n\tlet returnValue = '';\n\tdo {\n\t\treturnValue += string.slice(endIndex, index) + substring + replacer;\n\t\tendIndex = index + substringLength;\n\t\tindex = string.indexOf(substring, endIndex);\n\t} while (index !== -1);\n\n\treturnValue += string.slice(endIndex);\n\treturn returnValue;\n}\n\nexport function stringEncaseCRLFWithFirstIndex(string, prefix, postfix, index) {\n\tlet endIndex = 0;\n\tlet returnValue = '';\n\tdo {\n\t\tconst gotCR = string[index - 1] === '\\r';\n\t\treturnValue += string.slice(endIndex, (gotCR ? index - 1 : index)) + prefix + (gotCR ? '\\r\\n' : '\\n') + postfix;\n\t\tendIndex = index + 1;\n\t\tindex = string.indexOf('\\n', endIndex);\n\t} while (index !== -1);\n\n\treturnValue += string.slice(endIndex);\n\treturn returnValue;\n}\n","import ansiStyles from '#ansi-styles';\nimport supportsColor from '#supports-color';\nimport { // eslint-disable-line import/order\n\tstringReplaceAll,\n\tstringEncaseCRLFWithFirstIndex,\n} from './utilities.js';\n\nconst {stdout: stdoutColor, stderr: stderrColor} = supportsColor;\n\nconst GENERATOR = Symbol('GENERATOR');\nconst STYLER = Symbol('STYLER');\nconst IS_EMPTY = Symbol('IS_EMPTY');\n\n// `supportsColor.level` → `ansiStyles.color[name]` mapping\nconst levelMapping = [\n\t'ansi',\n\t'ansi',\n\t'ansi256',\n\t'ansi16m',\n];\n\nconst styles = Object.create(null);\n\nconst applyOptions = (object, options = {}) => {\n\tif (options.level && !(Number.isInteger(options.level) && options.level >= 0 && options.level <= 3)) {\n\t\tthrow new Error('The `level` option should be an integer from 0 to 3');\n\t}\n\n\t// Detect level if not set manually\n\tconst colorLevel = stdoutColor ? stdoutColor.level : 0;\n\tobject.level = options.level === undefined ? colorLevel : options.level;\n};\n\nexport class Chalk {\n\tconstructor(options) {\n\t\t// eslint-disable-next-line no-constructor-return\n\t\treturn chalkFactory(options);\n\t}\n}\n\nconst chalkFactory = options => {\n\tconst chalk = (...strings) => strings.join(' ');\n\tapplyOptions(chalk, options);\n\n\tObject.setPrototypeOf(chalk, createChalk.prototype);\n\n\treturn chalk;\n};\n\nfunction createChalk(options) {\n\treturn chalkFactory(options);\n}\n\nObject.setPrototypeOf(createChalk.prototype, Function.prototype);\n\nfor (const [styleName, style] of Object.entries(ansiStyles)) {\n\tstyles[styleName] = {\n\t\tget() {\n\t\t\tconst builder = createBuilder(this, createStyler(style.open, style.close, this[STYLER]), this[IS_EMPTY]);\n\t\t\tObject.defineProperty(this, styleName, {value: builder});\n\t\t\treturn builder;\n\t\t},\n\t};\n}\n\nstyles.visible = {\n\tget() {\n\t\tconst builder = createBuilder(this, this[STYLER], true);\n\t\tObject.defineProperty(this, 'visible', {value: builder});\n\t\treturn builder;\n\t},\n};\n\nconst getModelAnsi = (model, level, type, ...arguments_) => {\n\tif (model === 'rgb') {\n\t\tif (level === 'ansi16m') {\n\t\t\treturn ansiStyles[type].ansi16m(...arguments_);\n\t\t}\n\n\t\tif (level === 'ansi256') {\n\t\t\treturn ansiStyles[type].ansi256(ansiStyles.rgbToAnsi256(...arguments_));\n\t\t}\n\n\t\treturn ansiStyles[type].ansi(ansiStyles.rgbToAnsi(...arguments_));\n\t}\n\n\tif (model === 'hex') {\n\t\treturn getModelAnsi('rgb', level, type, ...ansiStyles.hexToRgb(...arguments_));\n\t}\n\n\treturn ansiStyles[type][model](...arguments_);\n};\n\nconst usedModels = ['rgb', 'hex', 'ansi256'];\n\nfor (const model of usedModels) {\n\tstyles[model] = {\n\t\tget() {\n\t\t\tconst {level} = this;\n\t\t\treturn function (...arguments_) {\n\t\t\t\tconst styler = createStyler(getModelAnsi(model, levelMapping[level], 'color', ...arguments_), ansiStyles.color.close, this[STYLER]);\n\t\t\t\treturn createBuilder(this, styler, this[IS_EMPTY]);\n\t\t\t};\n\t\t},\n\t};\n\n\tconst bgModel = 'bg' + model[0].toUpperCase() + model.slice(1);\n\tstyles[bgModel] = {\n\t\tget() {\n\t\t\tconst {level} = this;\n\t\t\treturn function (...arguments_) {\n\t\t\t\tconst styler = createStyler(getModelAnsi(model, levelMapping[level], 'bgColor', ...arguments_), ansiStyles.bgColor.close, this[STYLER]);\n\t\t\t\treturn createBuilder(this, styler, this[IS_EMPTY]);\n\t\t\t};\n\t\t},\n\t};\n}\n\nconst proto = Object.defineProperties(() => {}, {\n\t...styles,\n\tlevel: {\n\t\tenumerable: true,\n\t\tget() {\n\t\t\treturn this[GENERATOR].level;\n\t\t},\n\t\tset(level) {\n\t\t\tthis[GENERATOR].level = level;\n\t\t},\n\t},\n});\n\nconst createStyler = (open, close, parent) => {\n\tlet openAll;\n\tlet closeAll;\n\tif (parent === undefined) {\n\t\topenAll = open;\n\t\tcloseAll = close;\n\t} else {\n\t\topenAll = parent.openAll + open;\n\t\tcloseAll = close + parent.closeAll;\n\t}\n\n\treturn {\n\t\topen,\n\t\tclose,\n\t\topenAll,\n\t\tcloseAll,\n\t\tparent,\n\t};\n};\n\nconst createBuilder = (self, _styler, _isEmpty) => {\n\t// Single argument is hot path, implicit coercion is faster than anything\n\t// eslint-disable-next-line no-implicit-coercion\n\tconst builder = (...arguments_) => applyStyle(builder, (arguments_.length === 1) ? ('' + arguments_[0]) : arguments_.join(' '));\n\n\t// We alter the prototype because we must return a function, but there is\n\t// no way to create a function with a different prototype\n\tObject.setPrototypeOf(builder, proto);\n\n\tbuilder[GENERATOR] = self;\n\tbuilder[STYLER] = _styler;\n\tbuilder[IS_EMPTY] = _isEmpty;\n\n\treturn builder;\n};\n\nconst applyStyle = (self, string) => {\n\tif (self.level <= 0 || !string) {\n\t\treturn self[IS_EMPTY] ? '' : string;\n\t}\n\n\tlet styler = self[STYLER];\n\n\tif (styler === undefined) {\n\t\treturn string;\n\t}\n\n\tconst {openAll, closeAll} = styler;\n\tif (string.includes('\\u001B')) {\n\t\twhile (styler !== undefined) {\n\t\t\t// Replace any instances already present with a re-opening code\n\t\t\t// otherwise only the part of the string until said closing code\n\t\t\t// will be colored, and the rest will simply be 'plain'.\n\t\t\tstring = stringReplaceAll(string, styler.close, styler.open);\n\n\t\t\tstyler = styler.parent;\n\t\t}\n\t}\n\n\t// We can move both next actions out of loop, because remaining actions in loop won't have\n\t// any/visible effect on parts we add here. Close the styling before a linebreak and reopen\n\t// after next line to fix a bleed issue on macOS: https://github.com/chalk/chalk/pull/92\n\tconst lfIndex = string.indexOf('\\n');\n\tif (lfIndex !== -1) {\n\t\tstring = stringEncaseCRLFWithFirstIndex(string, closeAll, openAll, lfIndex);\n\t}\n\n\treturn openAll + string + closeAll;\n};\n\nObject.defineProperties(createChalk.prototype, styles);\n\nconst chalk = createChalk();\nexport const chalkStderr = createChalk({level: stderrColor ? stderrColor.level : 0});\n\nexport {\n\tmodifierNames,\n\tforegroundColorNames,\n\tbackgroundColorNames,\n\tcolorNames,\n\n\t// TODO: Remove these aliases in the next major version\n\tmodifierNames as modifiers,\n\tforegroundColorNames as foregroundColors,\n\tbackgroundColorNames as backgroundColors,\n\tcolorNames as colors,\n} from './vendor/ansi-styles/index.js';\n\nexport {\n\tstdoutColor as supportsColor,\n\tstderrColor as supportsColorStderr,\n};\n\nexport default chalk;\n",null,null,null,null,null,"'use strict';\n\nconst BINARY_TYPES = ['nodebuffer', 'arraybuffer', 'fragments'];\nconst hasBlob = typeof Blob !== 'undefined';\n\nif (hasBlob) BINARY_TYPES.push('blob');\n\nmodule.exports = {\n BINARY_TYPES,\n EMPTY_BUFFER: Buffer.alloc(0),\n GUID: '258EAFA5-E914-47DA-95CA-C5AB0DC85B11',\n hasBlob,\n kForOnEventAttribute: Symbol('kIsForOnEventAttribute'),\n kListener: Symbol('kListener'),\n kStatusCode: Symbol('status-code'),\n kWebSocket: Symbol('websocket'),\n NOOP: () => {}\n};\n","'use strict';\n\nconst { EMPTY_BUFFER } = require('./constants');\n\nconst FastBuffer = Buffer[Symbol.species];\n\n/**\n * Merges an array of buffers into a new buffer.\n *\n * @param {Buffer[]} list The array of buffers to concat\n * @param {Number} totalLength The total length of buffers in the list\n * @return {Buffer} The resulting buffer\n * @public\n */\nfunction concat(list, totalLength) {\n if (list.length === 0) return EMPTY_BUFFER;\n if (list.length === 1) return list[0];\n\n const target = Buffer.allocUnsafe(totalLength);\n let offset = 0;\n\n for (let i = 0; i < list.length; i++) {\n const buf = list[i];\n target.set(buf, offset);\n offset += buf.length;\n }\n\n if (offset < totalLength) {\n return new FastBuffer(target.buffer, target.byteOffset, offset);\n }\n\n return target;\n}\n\n/**\n * Masks a buffer using the given mask.\n *\n * @param {Buffer} source The buffer to mask\n * @param {Buffer} mask The mask to use\n * @param {Buffer} output The buffer where to store the result\n * @param {Number} offset The offset at which to start writing\n * @param {Number} length The number of bytes to mask.\n * @public\n */\nfunction _mask(source, mask, output, offset, length) {\n for (let i = 0; i < length; i++) {\n output[offset + i] = source[i] ^ mask[i & 3];\n }\n}\n\n/**\n * Unmasks a buffer using the given mask.\n *\n * @param {Buffer} buffer The buffer to unmask\n * @param {Buffer} mask The mask to use\n * @public\n */\nfunction _unmask(buffer, mask) {\n for (let i = 0; i < buffer.length; i++) {\n buffer[i] ^= mask[i & 3];\n }\n}\n\n/**\n * Converts a buffer to an `ArrayBuffer`.\n *\n * @param {Buffer} buf The buffer to convert\n * @return {ArrayBuffer} Converted buffer\n * @public\n */\nfunction toArrayBuffer(buf) {\n if (buf.length === buf.buffer.byteLength) {\n return buf.buffer;\n }\n\n return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.length);\n}\n\n/**\n * Converts `data` to a `Buffer`.\n *\n * @param {*} data The data to convert\n * @return {Buffer} The buffer\n * @throws {TypeError}\n * @public\n */\nfunction toBuffer(data) {\n toBuffer.readOnly = true;\n\n if (Buffer.isBuffer(data)) return data;\n\n let buf;\n\n if (data instanceof ArrayBuffer) {\n buf = new FastBuffer(data);\n } else if (ArrayBuffer.isView(data)) {\n buf = new FastBuffer(data.buffer, data.byteOffset, data.byteLength);\n } else {\n buf = Buffer.from(data);\n toBuffer.readOnly = false;\n }\n\n return buf;\n}\n\nmodule.exports = {\n concat,\n mask: _mask,\n toArrayBuffer,\n toBuffer,\n unmask: _unmask\n};\n\n/* istanbul ignore else */\nif (!process.env.WS_NO_BUFFER_UTIL) {\n try {\n const bufferUtil = require('bufferutil');\n\n module.exports.mask = function (source, mask, output, offset, length) {\n if (length < 48) _mask(source, mask, output, offset, length);\n else bufferUtil.mask(source, mask, output, offset, length);\n };\n\n module.exports.unmask = function (buffer, mask) {\n if (buffer.length < 32) _unmask(buffer, mask);\n else bufferUtil.unmask(buffer, mask);\n };\n } catch (e) {\n // Continue regardless of the error.\n }\n}\n","'use strict';\n\nconst kDone = Symbol('kDone');\nconst kRun = Symbol('kRun');\n\n/**\n * A very simple job queue with adjustable concurrency. Adapted from\n * https://github.com/STRML/async-limiter\n */\nclass Limiter {\n /**\n * Creates a new `Limiter`.\n *\n * @param {Number} [concurrency=Infinity] The maximum number of jobs allowed\n * to run concurrently\n */\n constructor(concurrency) {\n this[kDone] = () => {\n this.pending--;\n this[kRun]();\n };\n this.concurrency = concurrency || Infinity;\n this.jobs = [];\n this.pending = 0;\n }\n\n /**\n * Adds a job to the queue.\n *\n * @param {Function} job The job to run\n * @public\n */\n add(job) {\n this.jobs.push(job);\n this[kRun]();\n }\n\n /**\n * Removes a job from the queue and runs it if possible.\n *\n * @private\n */\n [kRun]() {\n if (this.pending === this.concurrency) return;\n\n if (this.jobs.length) {\n const job = this.jobs.shift();\n\n this.pending++;\n job(this[kDone]);\n }\n }\n}\n\nmodule.exports = Limiter;\n","'use strict';\n\nconst zlib = require('zlib');\n\nconst bufferUtil = require('./buffer-util');\nconst Limiter = require('./limiter');\nconst { kStatusCode } = require('./constants');\n\nconst FastBuffer = Buffer[Symbol.species];\nconst TRAILER = Buffer.from([0x00, 0x00, 0xff, 0xff]);\nconst kPerMessageDeflate = Symbol('permessage-deflate');\nconst kTotalLength = Symbol('total-length');\nconst kCallback = Symbol('callback');\nconst kBuffers = Symbol('buffers');\nconst kError = Symbol('error');\n\n//\n// We limit zlib concurrency, which prevents severe memory fragmentation\n// as documented in https://github.com/nodejs/node/issues/8871#issuecomment-250915913\n// and https://github.com/websockets/ws/issues/1202\n//\n// Intentionally global; it's the global thread pool that's an issue.\n//\nlet zlibLimiter;\n\n/**\n * permessage-deflate implementation.\n */\nclass PerMessageDeflate {\n /**\n * Creates a PerMessageDeflate instance.\n *\n * @param {Object} [options] Configuration options\n * @param {(Boolean|Number)} [options.clientMaxWindowBits] Advertise support\n * for, or request, a custom client window size\n * @param {Boolean} [options.clientNoContextTakeover=false] Advertise/\n * acknowledge disabling of client context takeover\n * @param {Number} [options.concurrencyLimit=10] The number of concurrent\n * calls to zlib\n * @param {(Boolean|Number)} [options.serverMaxWindowBits] Request/confirm the\n * use of a custom server window size\n * @param {Boolean} [options.serverNoContextTakeover=false] Request/accept\n * disabling of server context takeover\n * @param {Number} [options.threshold=1024] Size (in bytes) below which\n * messages should not be compressed if context takeover is disabled\n * @param {Object} [options.zlibDeflateOptions] Options to pass to zlib on\n * deflate\n * @param {Object} [options.zlibInflateOptions] Options to pass to zlib on\n * inflate\n * @param {Boolean} [isServer=false] Create the instance in either server or\n * client mode\n * @param {Number} [maxPayload=0] The maximum allowed message length\n */\n constructor(options, isServer, maxPayload) {\n this._maxPayload = maxPayload | 0;\n this._options = options || {};\n this._threshold =\n this._options.threshold !== undefined ? this._options.threshold : 1024;\n this._isServer = !!isServer;\n this._deflate = null;\n this._inflate = null;\n\n this.params = null;\n\n if (!zlibLimiter) {\n const concurrency =\n this._options.concurrencyLimit !== undefined\n ? this._options.concurrencyLimit\n : 10;\n zlibLimiter = new Limiter(concurrency);\n }\n }\n\n /**\n * @type {String}\n */\n static get extensionName() {\n return 'permessage-deflate';\n }\n\n /**\n * Create an extension negotiation offer.\n *\n * @return {Object} Extension parameters\n * @public\n */\n offer() {\n const params = {};\n\n if (this._options.serverNoContextTakeover) {\n params.server_no_context_takeover = true;\n }\n if (this._options.clientNoContextTakeover) {\n params.client_no_context_takeover = true;\n }\n if (this._options.serverMaxWindowBits) {\n params.server_max_window_bits = this._options.serverMaxWindowBits;\n }\n if (this._options.clientMaxWindowBits) {\n params.client_max_window_bits = this._options.clientMaxWindowBits;\n } else if (this._options.clientMaxWindowBits == null) {\n params.client_max_window_bits = true;\n }\n\n return params;\n }\n\n /**\n * Accept an extension negotiation offer/response.\n *\n * @param {Array} configurations The extension negotiation offers/reponse\n * @return {Object} Accepted configuration\n * @public\n */\n accept(configurations) {\n configurations = this.normalizeParams(configurations);\n\n this.params = this._isServer\n ? this.acceptAsServer(configurations)\n : this.acceptAsClient(configurations);\n\n return this.params;\n }\n\n /**\n * Releases all resources used by the extension.\n *\n * @public\n */\n cleanup() {\n if (this._inflate) {\n this._inflate.close();\n this._inflate = null;\n }\n\n if (this._deflate) {\n const callback = this._deflate[kCallback];\n\n this._deflate.close();\n this._deflate = null;\n\n if (callback) {\n callback(\n new Error(\n 'The deflate stream was closed while data was being processed'\n )\n );\n }\n }\n }\n\n /**\n * Accept an extension negotiation offer.\n *\n * @param {Array} offers The extension negotiation offers\n * @return {Object} Accepted configuration\n * @private\n */\n acceptAsServer(offers) {\n const opts = this._options;\n const accepted = offers.find((params) => {\n if (\n (opts.serverNoContextTakeover === false &&\n params.server_no_context_takeover) ||\n (params.server_max_window_bits &&\n (opts.serverMaxWindowBits === false ||\n (typeof opts.serverMaxWindowBits === 'number' &&\n opts.serverMaxWindowBits > params.server_max_window_bits))) ||\n (typeof opts.clientMaxWindowBits === 'number' &&\n !params.client_max_window_bits)\n ) {\n return false;\n }\n\n return true;\n });\n\n if (!accepted) {\n throw new Error('None of the extension offers can be accepted');\n }\n\n if (opts.serverNoContextTakeover) {\n accepted.server_no_context_takeover = true;\n }\n if (opts.clientNoContextTakeover) {\n accepted.client_no_context_takeover = true;\n }\n if (typeof opts.serverMaxWindowBits === 'number') {\n accepted.server_max_window_bits = opts.serverMaxWindowBits;\n }\n if (typeof opts.clientMaxWindowBits === 'number') {\n accepted.client_max_window_bits = opts.clientMaxWindowBits;\n } else if (\n accepted.client_max_window_bits === true ||\n opts.clientMaxWindowBits === false\n ) {\n delete accepted.client_max_window_bits;\n }\n\n return accepted;\n }\n\n /**\n * Accept the extension negotiation response.\n *\n * @param {Array} response The extension negotiation response\n * @return {Object} Accepted configuration\n * @private\n */\n acceptAsClient(response) {\n const params = response[0];\n\n if (\n this._options.clientNoContextTakeover === false &&\n params.client_no_context_takeover\n ) {\n throw new Error('Unexpected parameter \"client_no_context_takeover\"');\n }\n\n if (!params.client_max_window_bits) {\n if (typeof this._options.clientMaxWindowBits === 'number') {\n params.client_max_window_bits = this._options.clientMaxWindowBits;\n }\n } else if (\n this._options.clientMaxWindowBits === false ||\n (typeof this._options.clientMaxWindowBits === 'number' &&\n params.client_max_window_bits > this._options.clientMaxWindowBits)\n ) {\n throw new Error(\n 'Unexpected or invalid parameter \"client_max_window_bits\"'\n );\n }\n\n return params;\n }\n\n /**\n * Normalize parameters.\n *\n * @param {Array} configurations The extension negotiation offers/reponse\n * @return {Array} The offers/response with normalized parameters\n * @private\n */\n normalizeParams(configurations) {\n configurations.forEach((params) => {\n Object.keys(params).forEach((key) => {\n let value = params[key];\n\n if (value.length > 1) {\n throw new Error(`Parameter \"${key}\" must have only a single value`);\n }\n\n value = value[0];\n\n if (key === 'client_max_window_bits') {\n if (value !== true) {\n const num = +value;\n if (!Number.isInteger(num) || num < 8 || num > 15) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n value = num;\n } else if (!this._isServer) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n } else if (key === 'server_max_window_bits') {\n const num = +value;\n if (!Number.isInteger(num) || num < 8 || num > 15) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n value = num;\n } else if (\n key === 'client_no_context_takeover' ||\n key === 'server_no_context_takeover'\n ) {\n if (value !== true) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n } else {\n throw new Error(`Unknown parameter \"${key}\"`);\n }\n\n params[key] = value;\n });\n });\n\n return configurations;\n }\n\n /**\n * Decompress data. Concurrency limited.\n *\n * @param {Buffer} data Compressed data\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @public\n */\n decompress(data, fin, callback) {\n zlibLimiter.add((done) => {\n this._decompress(data, fin, (err, result) => {\n done();\n callback(err, result);\n });\n });\n }\n\n /**\n * Compress data. Concurrency limited.\n *\n * @param {(Buffer|String)} data Data to compress\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @public\n */\n compress(data, fin, callback) {\n zlibLimiter.add((done) => {\n this._compress(data, fin, (err, result) => {\n done();\n callback(err, result);\n });\n });\n }\n\n /**\n * Decompress data.\n *\n * @param {Buffer} data Compressed data\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @private\n */\n _decompress(data, fin, callback) {\n const endpoint = this._isServer ? 'client' : 'server';\n\n if (!this._inflate) {\n const key = `${endpoint}_max_window_bits`;\n const windowBits =\n typeof this.params[key] !== 'number'\n ? zlib.Z_DEFAULT_WINDOWBITS\n : this.params[key];\n\n this._inflate = zlib.createInflateRaw({\n ...this._options.zlibInflateOptions,\n windowBits\n });\n this._inflate[kPerMessageDeflate] = this;\n this._inflate[kTotalLength] = 0;\n this._inflate[kBuffers] = [];\n this._inflate.on('error', inflateOnError);\n this._inflate.on('data', inflateOnData);\n }\n\n this._inflate[kCallback] = callback;\n\n this._inflate.write(data);\n if (fin) this._inflate.write(TRAILER);\n\n this._inflate.flush(() => {\n const err = this._inflate[kError];\n\n if (err) {\n this._inflate.close();\n this._inflate = null;\n callback(err);\n return;\n }\n\n const data = bufferUtil.concat(\n this._inflate[kBuffers],\n this._inflate[kTotalLength]\n );\n\n if (this._inflate._readableState.endEmitted) {\n this._inflate.close();\n this._inflate = null;\n } else {\n this._inflate[kTotalLength] = 0;\n this._inflate[kBuffers] = [];\n\n if (fin && this.params[`${endpoint}_no_context_takeover`]) {\n this._inflate.reset();\n }\n }\n\n callback(null, data);\n });\n }\n\n /**\n * Compress data.\n *\n * @param {(Buffer|String)} data Data to compress\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @private\n */\n _compress(data, fin, callback) {\n const endpoint = this._isServer ? 'server' : 'client';\n\n if (!this._deflate) {\n const key = `${endpoint}_max_window_bits`;\n const windowBits =\n typeof this.params[key] !== 'number'\n ? zlib.Z_DEFAULT_WINDOWBITS\n : this.params[key];\n\n this._deflate = zlib.createDeflateRaw({\n ...this._options.zlibDeflateOptions,\n windowBits\n });\n\n this._deflate[kTotalLength] = 0;\n this._deflate[kBuffers] = [];\n\n this._deflate.on('data', deflateOnData);\n }\n\n this._deflate[kCallback] = callback;\n\n this._deflate.write(data);\n this._deflate.flush(zlib.Z_SYNC_FLUSH, () => {\n if (!this._deflate) {\n //\n // The deflate stream was closed while data was being processed.\n //\n return;\n }\n\n let data = bufferUtil.concat(\n this._deflate[kBuffers],\n this._deflate[kTotalLength]\n );\n\n if (fin) {\n data = new FastBuffer(data.buffer, data.byteOffset, data.length - 4);\n }\n\n //\n // Ensure that the callback will not be called again in\n // `PerMessageDeflate#cleanup()`.\n //\n this._deflate[kCallback] = null;\n\n this._deflate[kTotalLength] = 0;\n this._deflate[kBuffers] = [];\n\n if (fin && this.params[`${endpoint}_no_context_takeover`]) {\n this._deflate.reset();\n }\n\n callback(null, data);\n });\n }\n}\n\nmodule.exports = PerMessageDeflate;\n\n/**\n * The listener of the `zlib.DeflateRaw` stream `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction deflateOnData(chunk) {\n this[kBuffers].push(chunk);\n this[kTotalLength] += chunk.length;\n}\n\n/**\n * The listener of the `zlib.InflateRaw` stream `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction inflateOnData(chunk) {\n this[kTotalLength] += chunk.length;\n\n if (\n this[kPerMessageDeflate]._maxPayload < 1 ||\n this[kTotalLength] <= this[kPerMessageDeflate]._maxPayload\n ) {\n this[kBuffers].push(chunk);\n return;\n }\n\n this[kError] = new RangeError('Max payload size exceeded');\n this[kError].code = 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH';\n this[kError][kStatusCode] = 1009;\n this.removeListener('data', inflateOnData);\n\n //\n // The choice to employ `zlib.reset()` over `zlib.close()` is dictated by the\n // fact that in Node.js versions prior to 13.10.0, the callback for\n // `zlib.flush()` is not called if `zlib.close()` is used. Utilizing\n // `zlib.reset()` ensures that either the callback is invoked or an error is\n // emitted.\n //\n this.reset();\n}\n\n/**\n * The listener of the `zlib.InflateRaw` stream `'error'` event.\n *\n * @param {Error} err The emitted error\n * @private\n */\nfunction inflateOnError(err) {\n //\n // There is no need to call `Zlib#close()` as the handle is automatically\n // closed when an error is emitted.\n //\n this[kPerMessageDeflate]._inflate = null;\n\n if (this[kError]) {\n this[kCallback](this[kError]);\n return;\n }\n\n err[kStatusCode] = 1007;\n this[kCallback](err);\n}\n","'use strict';\n\nconst { isUtf8 } = require('buffer');\n\nconst { hasBlob } = require('./constants');\n\n//\n// Allowed token characters:\n//\n// '!', '#', '$', '%', '&', ''', '*', '+', '-',\n// '.', 0-9, A-Z, '^', '_', '`', a-z, '|', '~'\n//\n// tokenChars[32] === 0 // ' '\n// tokenChars[33] === 1 // '!'\n// tokenChars[34] === 0 // '\"'\n// ...\n//\n// prettier-ignore\nconst tokenChars = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0 - 15\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 16 - 31\n 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, // 32 - 47\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, // 48 - 63\n 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 64 - 79\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, // 80 - 95\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 96 - 111\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0 // 112 - 127\n];\n\n/**\n * Checks if a status code is allowed in a close frame.\n *\n * @param {Number} code The status code\n * @return {Boolean} `true` if the status code is valid, else `false`\n * @public\n */\nfunction isValidStatusCode(code) {\n return (\n (code >= 1000 &&\n code <= 1014 &&\n code !== 1004 &&\n code !== 1005 &&\n code !== 1006) ||\n (code >= 3000 && code <= 4999)\n );\n}\n\n/**\n * Checks if a given buffer contains only correct UTF-8.\n * Ported from https://www.cl.cam.ac.uk/%7Emgk25/ucs/utf8_check.c by\n * Markus Kuhn.\n *\n * @param {Buffer} buf The buffer to check\n * @return {Boolean} `true` if `buf` contains only correct UTF-8, else `false`\n * @public\n */\nfunction _isValidUTF8(buf) {\n const len = buf.length;\n let i = 0;\n\n while (i < len) {\n if ((buf[i] & 0x80) === 0) {\n // 0xxxxxxx\n i++;\n } else if ((buf[i] & 0xe0) === 0xc0) {\n // 110xxxxx 10xxxxxx\n if (\n i + 1 === len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i] & 0xfe) === 0xc0 // Overlong\n ) {\n return false;\n }\n\n i += 2;\n } else if ((buf[i] & 0xf0) === 0xe0) {\n // 1110xxxx 10xxxxxx 10xxxxxx\n if (\n i + 2 >= len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i + 2] & 0xc0) !== 0x80 ||\n (buf[i] === 0xe0 && (buf[i + 1] & 0xe0) === 0x80) || // Overlong\n (buf[i] === 0xed && (buf[i + 1] & 0xe0) === 0xa0) // Surrogate (U+D800 - U+DFFF)\n ) {\n return false;\n }\n\n i += 3;\n } else if ((buf[i] & 0xf8) === 0xf0) {\n // 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx\n if (\n i + 3 >= len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i + 2] & 0xc0) !== 0x80 ||\n (buf[i + 3] & 0xc0) !== 0x80 ||\n (buf[i] === 0xf0 && (buf[i + 1] & 0xf0) === 0x80) || // Overlong\n (buf[i] === 0xf4 && buf[i + 1] > 0x8f) ||\n buf[i] > 0xf4 // > U+10FFFF\n ) {\n return false;\n }\n\n i += 4;\n } else {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Determines whether a value is a `Blob`.\n *\n * @param {*} value The value to be tested\n * @return {Boolean} `true` if `value` is a `Blob`, else `false`\n * @private\n */\nfunction isBlob(value) {\n return (\n hasBlob &&\n typeof value === 'object' &&\n typeof value.arrayBuffer === 'function' &&\n typeof value.type === 'string' &&\n typeof value.stream === 'function' &&\n (value[Symbol.toStringTag] === 'Blob' ||\n value[Symbol.toStringTag] === 'File')\n );\n}\n\nmodule.exports = {\n isBlob,\n isValidStatusCode,\n isValidUTF8: _isValidUTF8,\n tokenChars\n};\n\nif (isUtf8) {\n module.exports.isValidUTF8 = function (buf) {\n return buf.length < 24 ? _isValidUTF8(buf) : isUtf8(buf);\n };\n} /* istanbul ignore else */ else if (!process.env.WS_NO_UTF_8_VALIDATE) {\n try {\n const isValidUTF8 = require('utf-8-validate');\n\n module.exports.isValidUTF8 = function (buf) {\n return buf.length < 32 ? _isValidUTF8(buf) : isValidUTF8(buf);\n };\n } catch (e) {\n // Continue regardless of the error.\n }\n}\n","'use strict';\n\nconst { Writable } = require('stream');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst {\n BINARY_TYPES,\n EMPTY_BUFFER,\n kStatusCode,\n kWebSocket\n} = require('./constants');\nconst { concat, toArrayBuffer, unmask } = require('./buffer-util');\nconst { isValidStatusCode, isValidUTF8 } = require('./validation');\n\nconst FastBuffer = Buffer[Symbol.species];\n\nconst GET_INFO = 0;\nconst GET_PAYLOAD_LENGTH_16 = 1;\nconst GET_PAYLOAD_LENGTH_64 = 2;\nconst GET_MASK = 3;\nconst GET_DATA = 4;\nconst INFLATING = 5;\nconst DEFER_EVENT = 6;\n\n/**\n * HyBi Receiver implementation.\n *\n * @extends Writable\n */\nclass Receiver extends Writable {\n /**\n * Creates a Receiver instance.\n *\n * @param {Object} [options] Options object\n * @param {Boolean} [options.allowSynchronousEvents=true] Specifies whether\n * any of the `'message'`, `'ping'`, and `'pong'` events can be emitted\n * multiple times in the same tick\n * @param {String} [options.binaryType=nodebuffer] The type for binary data\n * @param {Object} [options.extensions] An object containing the negotiated\n * extensions\n * @param {Boolean} [options.isServer=false] Specifies whether to operate in\n * client or server mode\n * @param {Number} [options.maxPayload=0] The maximum allowed message length\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n * not to skip UTF-8 validation for text and close messages\n */\n constructor(options = {}) {\n super();\n\n this._allowSynchronousEvents =\n options.allowSynchronousEvents !== undefined\n ? options.allowSynchronousEvents\n : true;\n this._binaryType = options.binaryType || BINARY_TYPES[0];\n this._extensions = options.extensions || {};\n this._isServer = !!options.isServer;\n this._maxPayload = options.maxPayload | 0;\n this._skipUTF8Validation = !!options.skipUTF8Validation;\n this[kWebSocket] = undefined;\n\n this._bufferedBytes = 0;\n this._buffers = [];\n\n this._compressed = false;\n this._payloadLength = 0;\n this._mask = undefined;\n this._fragmented = 0;\n this._masked = false;\n this._fin = false;\n this._opcode = 0;\n\n this._totalPayloadLength = 0;\n this._messageLength = 0;\n this._fragments = [];\n\n this._errored = false;\n this._loop = false;\n this._state = GET_INFO;\n }\n\n /**\n * Implements `Writable.prototype._write()`.\n *\n * @param {Buffer} chunk The chunk of data to write\n * @param {String} encoding The character encoding of `chunk`\n * @param {Function} cb Callback\n * @private\n */\n _write(chunk, encoding, cb) {\n if (this._opcode === 0x08 && this._state == GET_INFO) return cb();\n\n this._bufferedBytes += chunk.length;\n this._buffers.push(chunk);\n this.startLoop(cb);\n }\n\n /**\n * Consumes `n` bytes from the buffered data.\n *\n * @param {Number} n The number of bytes to consume\n * @return {Buffer} The consumed bytes\n * @private\n */\n consume(n) {\n this._bufferedBytes -= n;\n\n if (n === this._buffers[0].length) return this._buffers.shift();\n\n if (n < this._buffers[0].length) {\n const buf = this._buffers[0];\n this._buffers[0] = new FastBuffer(\n buf.buffer,\n buf.byteOffset + n,\n buf.length - n\n );\n\n return new FastBuffer(buf.buffer, buf.byteOffset, n);\n }\n\n const dst = Buffer.allocUnsafe(n);\n\n do {\n const buf = this._buffers[0];\n const offset = dst.length - n;\n\n if (n >= buf.length) {\n dst.set(this._buffers.shift(), offset);\n } else {\n dst.set(new Uint8Array(buf.buffer, buf.byteOffset, n), offset);\n this._buffers[0] = new FastBuffer(\n buf.buffer,\n buf.byteOffset + n,\n buf.length - n\n );\n }\n\n n -= buf.length;\n } while (n > 0);\n\n return dst;\n }\n\n /**\n * Starts the parsing loop.\n *\n * @param {Function} cb Callback\n * @private\n */\n startLoop(cb) {\n this._loop = true;\n\n do {\n switch (this._state) {\n case GET_INFO:\n this.getInfo(cb);\n break;\n case GET_PAYLOAD_LENGTH_16:\n this.getPayloadLength16(cb);\n break;\n case GET_PAYLOAD_LENGTH_64:\n this.getPayloadLength64(cb);\n break;\n case GET_MASK:\n this.getMask();\n break;\n case GET_DATA:\n this.getData(cb);\n break;\n case INFLATING:\n case DEFER_EVENT:\n this._loop = false;\n return;\n }\n } while (this._loop);\n\n if (!this._errored) cb();\n }\n\n /**\n * Reads the first two bytes of a frame.\n *\n * @param {Function} cb Callback\n * @private\n */\n getInfo(cb) {\n if (this._bufferedBytes < 2) {\n this._loop = false;\n return;\n }\n\n const buf = this.consume(2);\n\n if ((buf[0] & 0x30) !== 0x00) {\n const error = this.createError(\n RangeError,\n 'RSV2 and RSV3 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_2_3'\n );\n\n cb(error);\n return;\n }\n\n const compressed = (buf[0] & 0x40) === 0x40;\n\n if (compressed && !this._extensions[PerMessageDeflate.extensionName]) {\n const error = this.createError(\n RangeError,\n 'RSV1 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_1'\n );\n\n cb(error);\n return;\n }\n\n this._fin = (buf[0] & 0x80) === 0x80;\n this._opcode = buf[0] & 0x0f;\n this._payloadLength = buf[1] & 0x7f;\n\n if (this._opcode === 0x00) {\n if (compressed) {\n const error = this.createError(\n RangeError,\n 'RSV1 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_1'\n );\n\n cb(error);\n return;\n }\n\n if (!this._fragmented) {\n const error = this.createError(\n RangeError,\n 'invalid opcode 0',\n true,\n 1002,\n 'WS_ERR_INVALID_OPCODE'\n );\n\n cb(error);\n return;\n }\n\n this._opcode = this._fragmented;\n } else if (this._opcode === 0x01 || this._opcode === 0x02) {\n if (this._fragmented) {\n const error = this.createError(\n RangeError,\n `invalid opcode ${this._opcode}`,\n true,\n 1002,\n 'WS_ERR_INVALID_OPCODE'\n );\n\n cb(error);\n return;\n }\n\n this._compressed = compressed;\n } else if (this._opcode > 0x07 && this._opcode < 0x0b) {\n if (!this._fin) {\n const error = this.createError(\n RangeError,\n 'FIN must be set',\n true,\n 1002,\n 'WS_ERR_EXPECTED_FIN'\n );\n\n cb(error);\n return;\n }\n\n if (compressed) {\n const error = this.createError(\n RangeError,\n 'RSV1 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_1'\n );\n\n cb(error);\n return;\n }\n\n if (\n this._payloadLength > 0x7d ||\n (this._opcode === 0x08 && this._payloadLength === 1)\n ) {\n const error = this.createError(\n RangeError,\n `invalid payload length ${this._payloadLength}`,\n true,\n 1002,\n 'WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH'\n );\n\n cb(error);\n return;\n }\n } else {\n const error = this.createError(\n RangeError,\n `invalid opcode ${this._opcode}`,\n true,\n 1002,\n 'WS_ERR_INVALID_OPCODE'\n );\n\n cb(error);\n return;\n }\n\n if (!this._fin && !this._fragmented) this._fragmented = this._opcode;\n this._masked = (buf[1] & 0x80) === 0x80;\n\n if (this._isServer) {\n if (!this._masked) {\n const error = this.createError(\n RangeError,\n 'MASK must be set',\n true,\n 1002,\n 'WS_ERR_EXPECTED_MASK'\n );\n\n cb(error);\n return;\n }\n } else if (this._masked) {\n const error = this.createError(\n RangeError,\n 'MASK must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_MASK'\n );\n\n cb(error);\n return;\n }\n\n if (this._payloadLength === 126) this._state = GET_PAYLOAD_LENGTH_16;\n else if (this._payloadLength === 127) this._state = GET_PAYLOAD_LENGTH_64;\n else this.haveLength(cb);\n }\n\n /**\n * Gets extended payload length (7+16).\n *\n * @param {Function} cb Callback\n * @private\n */\n getPayloadLength16(cb) {\n if (this._bufferedBytes < 2) {\n this._loop = false;\n return;\n }\n\n this._payloadLength = this.consume(2).readUInt16BE(0);\n this.haveLength(cb);\n }\n\n /**\n * Gets extended payload length (7+64).\n *\n * @param {Function} cb Callback\n * @private\n */\n getPayloadLength64(cb) {\n if (this._bufferedBytes < 8) {\n this._loop = false;\n return;\n }\n\n const buf = this.consume(8);\n const num = buf.readUInt32BE(0);\n\n //\n // The maximum safe integer in JavaScript is 2^53 - 1. An error is returned\n // if payload length is greater than this number.\n //\n if (num > Math.pow(2, 53 - 32) - 1) {\n const error = this.createError(\n RangeError,\n 'Unsupported WebSocket frame: payload length > 2^53 - 1',\n false,\n 1009,\n 'WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH'\n );\n\n cb(error);\n return;\n }\n\n this._payloadLength = num * Math.pow(2, 32) + buf.readUInt32BE(4);\n this.haveLength(cb);\n }\n\n /**\n * Payload length has been read.\n *\n * @param {Function} cb Callback\n * @private\n */\n haveLength(cb) {\n if (this._payloadLength && this._opcode < 0x08) {\n this._totalPayloadLength += this._payloadLength;\n if (this._totalPayloadLength > this._maxPayload && this._maxPayload > 0) {\n const error = this.createError(\n RangeError,\n 'Max payload size exceeded',\n false,\n 1009,\n 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH'\n );\n\n cb(error);\n return;\n }\n }\n\n if (this._masked) this._state = GET_MASK;\n else this._state = GET_DATA;\n }\n\n /**\n * Reads mask bytes.\n *\n * @private\n */\n getMask() {\n if (this._bufferedBytes < 4) {\n this._loop = false;\n return;\n }\n\n this._mask = this.consume(4);\n this._state = GET_DATA;\n }\n\n /**\n * Reads data bytes.\n *\n * @param {Function} cb Callback\n * @private\n */\n getData(cb) {\n let data = EMPTY_BUFFER;\n\n if (this._payloadLength) {\n if (this._bufferedBytes < this._payloadLength) {\n this._loop = false;\n return;\n }\n\n data = this.consume(this._payloadLength);\n\n if (\n this._masked &&\n (this._mask[0] | this._mask[1] | this._mask[2] | this._mask[3]) !== 0\n ) {\n unmask(data, this._mask);\n }\n }\n\n if (this._opcode > 0x07) {\n this.controlMessage(data, cb);\n return;\n }\n\n if (this._compressed) {\n this._state = INFLATING;\n this.decompress(data, cb);\n return;\n }\n\n if (data.length) {\n //\n // This message is not compressed so its length is the sum of the payload\n // length of all fragments.\n //\n this._messageLength = this._totalPayloadLength;\n this._fragments.push(data);\n }\n\n this.dataMessage(cb);\n }\n\n /**\n * Decompresses data.\n *\n * @param {Buffer} data Compressed data\n * @param {Function} cb Callback\n * @private\n */\n decompress(data, cb) {\n const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n\n perMessageDeflate.decompress(data, this._fin, (err, buf) => {\n if (err) return cb(err);\n\n if (buf.length) {\n this._messageLength += buf.length;\n if (this._messageLength > this._maxPayload && this._maxPayload > 0) {\n const error = this.createError(\n RangeError,\n 'Max payload size exceeded',\n false,\n 1009,\n 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH'\n );\n\n cb(error);\n return;\n }\n\n this._fragments.push(buf);\n }\n\n this.dataMessage(cb);\n if (this._state === GET_INFO) this.startLoop(cb);\n });\n }\n\n /**\n * Handles a data message.\n *\n * @param {Function} cb Callback\n * @private\n */\n dataMessage(cb) {\n if (!this._fin) {\n this._state = GET_INFO;\n return;\n }\n\n const messageLength = this._messageLength;\n const fragments = this._fragments;\n\n this._totalPayloadLength = 0;\n this._messageLength = 0;\n this._fragmented = 0;\n this._fragments = [];\n\n if (this._opcode === 2) {\n let data;\n\n if (this._binaryType === 'nodebuffer') {\n data = concat(fragments, messageLength);\n } else if (this._binaryType === 'arraybuffer') {\n data = toArrayBuffer(concat(fragments, messageLength));\n } else if (this._binaryType === 'blob') {\n data = new Blob(fragments);\n } else {\n data = fragments;\n }\n\n if (this._allowSynchronousEvents) {\n this.emit('message', data, true);\n this._state = GET_INFO;\n } else {\n this._state = DEFER_EVENT;\n setImmediate(() => {\n this.emit('message', data, true);\n this._state = GET_INFO;\n this.startLoop(cb);\n });\n }\n } else {\n const buf = concat(fragments, messageLength);\n\n if (!this._skipUTF8Validation && !isValidUTF8(buf)) {\n const error = this.createError(\n Error,\n 'invalid UTF-8 sequence',\n true,\n 1007,\n 'WS_ERR_INVALID_UTF8'\n );\n\n cb(error);\n return;\n }\n\n if (this._state === INFLATING || this._allowSynchronousEvents) {\n this.emit('message', buf, false);\n this._state = GET_INFO;\n } else {\n this._state = DEFER_EVENT;\n setImmediate(() => {\n this.emit('message', buf, false);\n this._state = GET_INFO;\n this.startLoop(cb);\n });\n }\n }\n }\n\n /**\n * Handles a control message.\n *\n * @param {Buffer} data Data to handle\n * @return {(Error|RangeError|undefined)} A possible error\n * @private\n */\n controlMessage(data, cb) {\n if (this._opcode === 0x08) {\n if (data.length === 0) {\n this._loop = false;\n this.emit('conclude', 1005, EMPTY_BUFFER);\n this.end();\n } else {\n const code = data.readUInt16BE(0);\n\n if (!isValidStatusCode(code)) {\n const error = this.createError(\n RangeError,\n `invalid status code ${code}`,\n true,\n 1002,\n 'WS_ERR_INVALID_CLOSE_CODE'\n );\n\n cb(error);\n return;\n }\n\n const buf = new FastBuffer(\n data.buffer,\n data.byteOffset + 2,\n data.length - 2\n );\n\n if (!this._skipUTF8Validation && !isValidUTF8(buf)) {\n const error = this.createError(\n Error,\n 'invalid UTF-8 sequence',\n true,\n 1007,\n 'WS_ERR_INVALID_UTF8'\n );\n\n cb(error);\n return;\n }\n\n this._loop = false;\n this.emit('conclude', code, buf);\n this.end();\n }\n\n this._state = GET_INFO;\n return;\n }\n\n if (this._allowSynchronousEvents) {\n this.emit(this._opcode === 0x09 ? 'ping' : 'pong', data);\n this._state = GET_INFO;\n } else {\n this._state = DEFER_EVENT;\n setImmediate(() => {\n this.emit(this._opcode === 0x09 ? 'ping' : 'pong', data);\n this._state = GET_INFO;\n this.startLoop(cb);\n });\n }\n }\n\n /**\n * Builds an error object.\n *\n * @param {function(new:Error|RangeError)} ErrorCtor The error constructor\n * @param {String} message The error message\n * @param {Boolean} prefix Specifies whether or not to add a default prefix to\n * `message`\n * @param {Number} statusCode The status code\n * @param {String} errorCode The exposed error code\n * @return {(Error|RangeError)} The error\n * @private\n */\n createError(ErrorCtor, message, prefix, statusCode, errorCode) {\n this._loop = false;\n this._errored = true;\n\n const err = new ErrorCtor(\n prefix ? `Invalid WebSocket frame: ${message}` : message\n );\n\n Error.captureStackTrace(err, this.createError);\n err.code = errorCode;\n err[kStatusCode] = statusCode;\n return err;\n }\n}\n\nmodule.exports = Receiver;\n","/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^Duplex\" }] */\n\n'use strict';\n\nconst { Duplex } = require('stream');\nconst { randomFillSync } = require('crypto');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst { EMPTY_BUFFER, kWebSocket, NOOP } = require('./constants');\nconst { isBlob, isValidStatusCode } = require('./validation');\nconst { mask: applyMask, toBuffer } = require('./buffer-util');\n\nconst kByteLength = Symbol('kByteLength');\nconst maskBuffer = Buffer.alloc(4);\nconst RANDOM_POOL_SIZE = 8 * 1024;\nlet randomPool;\nlet randomPoolPointer = RANDOM_POOL_SIZE;\n\nconst DEFAULT = 0;\nconst DEFLATING = 1;\nconst GET_BLOB_DATA = 2;\n\n/**\n * HyBi Sender implementation.\n */\nclass Sender {\n /**\n * Creates a Sender instance.\n *\n * @param {Duplex} socket The connection socket\n * @param {Object} [extensions] An object containing the negotiated extensions\n * @param {Function} [generateMask] The function used to generate the masking\n * key\n */\n constructor(socket, extensions, generateMask) {\n this._extensions = extensions || {};\n\n if (generateMask) {\n this._generateMask = generateMask;\n this._maskBuffer = Buffer.alloc(4);\n }\n\n this._socket = socket;\n\n this._firstFragment = true;\n this._compress = false;\n\n this._bufferedBytes = 0;\n this._queue = [];\n this._state = DEFAULT;\n this.onerror = NOOP;\n this[kWebSocket] = undefined;\n }\n\n /**\n * Frames a piece of data according to the HyBi WebSocket protocol.\n *\n * @param {(Buffer|String)} data The data to frame\n * @param {Object} options Options object\n * @param {Boolean} [options.fin=false] Specifies whether or not to set the\n * FIN bit\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Buffer} [options.maskBuffer] The buffer used to store the masking\n * key\n * @param {Number} options.opcode The opcode\n * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be\n * modified\n * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the\n * RSV1 bit\n * @return {(Buffer|String)[]} The framed data\n * @public\n */\n static frame(data, options) {\n let mask;\n let merge = false;\n let offset = 2;\n let skipMasking = false;\n\n if (options.mask) {\n mask = options.maskBuffer || maskBuffer;\n\n if (options.generateMask) {\n options.generateMask(mask);\n } else {\n if (randomPoolPointer === RANDOM_POOL_SIZE) {\n /* istanbul ignore else */\n if (randomPool === undefined) {\n //\n // This is lazily initialized because server-sent frames must not\n // be masked so it may never be used.\n //\n randomPool = Buffer.alloc(RANDOM_POOL_SIZE);\n }\n\n randomFillSync(randomPool, 0, RANDOM_POOL_SIZE);\n randomPoolPointer = 0;\n }\n\n mask[0] = randomPool[randomPoolPointer++];\n mask[1] = randomPool[randomPoolPointer++];\n mask[2] = randomPool[randomPoolPointer++];\n mask[3] = randomPool[randomPoolPointer++];\n }\n\n skipMasking = (mask[0] | mask[1] | mask[2] | mask[3]) === 0;\n offset = 6;\n }\n\n let dataLength;\n\n if (typeof data === 'string') {\n if (\n (!options.mask || skipMasking) &&\n options[kByteLength] !== undefined\n ) {\n dataLength = options[kByteLength];\n } else {\n data = Buffer.from(data);\n dataLength = data.length;\n }\n } else {\n dataLength = data.length;\n merge = options.mask && options.readOnly && !skipMasking;\n }\n\n let payloadLength = dataLength;\n\n if (dataLength >= 65536) {\n offset += 8;\n payloadLength = 127;\n } else if (dataLength > 125) {\n offset += 2;\n payloadLength = 126;\n }\n\n const target = Buffer.allocUnsafe(merge ? dataLength + offset : offset);\n\n target[0] = options.fin ? options.opcode | 0x80 : options.opcode;\n if (options.rsv1) target[0] |= 0x40;\n\n target[1] = payloadLength;\n\n if (payloadLength === 126) {\n target.writeUInt16BE(dataLength, 2);\n } else if (payloadLength === 127) {\n target[2] = target[3] = 0;\n target.writeUIntBE(dataLength, 4, 6);\n }\n\n if (!options.mask) return [target, data];\n\n target[1] |= 0x80;\n target[offset - 4] = mask[0];\n target[offset - 3] = mask[1];\n target[offset - 2] = mask[2];\n target[offset - 1] = mask[3];\n\n if (skipMasking) return [target, data];\n\n if (merge) {\n applyMask(data, mask, target, offset, dataLength);\n return [target];\n }\n\n applyMask(data, mask, data, 0, dataLength);\n return [target, data];\n }\n\n /**\n * Sends a close message to the other peer.\n *\n * @param {Number} [code] The status code component of the body\n * @param {(String|Buffer)} [data] The message component of the body\n * @param {Boolean} [mask=false] Specifies whether or not to mask the message\n * @param {Function} [cb] Callback\n * @public\n */\n close(code, data, mask, cb) {\n let buf;\n\n if (code === undefined) {\n buf = EMPTY_BUFFER;\n } else if (typeof code !== 'number' || !isValidStatusCode(code)) {\n throw new TypeError('First argument must be a valid error code number');\n } else if (data === undefined || !data.length) {\n buf = Buffer.allocUnsafe(2);\n buf.writeUInt16BE(code, 0);\n } else {\n const length = Buffer.byteLength(data);\n\n if (length > 123) {\n throw new RangeError('The message must not be greater than 123 bytes');\n }\n\n buf = Buffer.allocUnsafe(2 + length);\n buf.writeUInt16BE(code, 0);\n\n if (typeof data === 'string') {\n buf.write(data, 2);\n } else {\n buf.set(data, 2);\n }\n }\n\n const options = {\n [kByteLength]: buf.length,\n fin: true,\n generateMask: this._generateMask,\n mask,\n maskBuffer: this._maskBuffer,\n opcode: 0x08,\n readOnly: false,\n rsv1: false\n };\n\n if (this._state !== DEFAULT) {\n this.enqueue([this.dispatch, buf, false, options, cb]);\n } else {\n this.sendFrame(Sender.frame(buf, options), cb);\n }\n }\n\n /**\n * Sends a ping message to the other peer.\n *\n * @param {*} data The message to send\n * @param {Boolean} [mask=false] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback\n * @public\n */\n ping(data, mask, cb) {\n let byteLength;\n let readOnly;\n\n if (typeof data === 'string') {\n byteLength = Buffer.byteLength(data);\n readOnly = false;\n } else if (isBlob(data)) {\n byteLength = data.size;\n readOnly = false;\n } else {\n data = toBuffer(data);\n byteLength = data.length;\n readOnly = toBuffer.readOnly;\n }\n\n if (byteLength > 125) {\n throw new RangeError('The data size must not be greater than 125 bytes');\n }\n\n const options = {\n [kByteLength]: byteLength,\n fin: true,\n generateMask: this._generateMask,\n mask,\n maskBuffer: this._maskBuffer,\n opcode: 0x09,\n readOnly,\n rsv1: false\n };\n\n if (isBlob(data)) {\n if (this._state !== DEFAULT) {\n this.enqueue([this.getBlobData, data, false, options, cb]);\n } else {\n this.getBlobData(data, false, options, cb);\n }\n } else if (this._state !== DEFAULT) {\n this.enqueue([this.dispatch, data, false, options, cb]);\n } else {\n this.sendFrame(Sender.frame(data, options), cb);\n }\n }\n\n /**\n * Sends a pong message to the other peer.\n *\n * @param {*} data The message to send\n * @param {Boolean} [mask=false] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback\n * @public\n */\n pong(data, mask, cb) {\n let byteLength;\n let readOnly;\n\n if (typeof data === 'string') {\n byteLength = Buffer.byteLength(data);\n readOnly = false;\n } else if (isBlob(data)) {\n byteLength = data.size;\n readOnly = false;\n } else {\n data = toBuffer(data);\n byteLength = data.length;\n readOnly = toBuffer.readOnly;\n }\n\n if (byteLength > 125) {\n throw new RangeError('The data size must not be greater than 125 bytes');\n }\n\n const options = {\n [kByteLength]: byteLength,\n fin: true,\n generateMask: this._generateMask,\n mask,\n maskBuffer: this._maskBuffer,\n opcode: 0x0a,\n readOnly,\n rsv1: false\n };\n\n if (isBlob(data)) {\n if (this._state !== DEFAULT) {\n this.enqueue([this.getBlobData, data, false, options, cb]);\n } else {\n this.getBlobData(data, false, options, cb);\n }\n } else if (this._state !== DEFAULT) {\n this.enqueue([this.dispatch, data, false, options, cb]);\n } else {\n this.sendFrame(Sender.frame(data, options), cb);\n }\n }\n\n /**\n * Sends a data message to the other peer.\n *\n * @param {*} data The message to send\n * @param {Object} options Options object\n * @param {Boolean} [options.binary=false] Specifies whether `data` is binary\n * or text\n * @param {Boolean} [options.compress=false] Specifies whether or not to\n * compress `data`\n * @param {Boolean} [options.fin=false] Specifies whether the fragment is the\n * last one\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Function} [cb] Callback\n * @public\n */\n send(data, options, cb) {\n const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n let opcode = options.binary ? 2 : 1;\n let rsv1 = options.compress;\n\n let byteLength;\n let readOnly;\n\n if (typeof data === 'string') {\n byteLength = Buffer.byteLength(data);\n readOnly = false;\n } else if (isBlob(data)) {\n byteLength = data.size;\n readOnly = false;\n } else {\n data = toBuffer(data);\n byteLength = data.length;\n readOnly = toBuffer.readOnly;\n }\n\n if (this._firstFragment) {\n this._firstFragment = false;\n if (\n rsv1 &&\n perMessageDeflate &&\n perMessageDeflate.params[\n perMessageDeflate._isServer\n ? 'server_no_context_takeover'\n : 'client_no_context_takeover'\n ]\n ) {\n rsv1 = byteLength >= perMessageDeflate._threshold;\n }\n this._compress = rsv1;\n } else {\n rsv1 = false;\n opcode = 0;\n }\n\n if (options.fin) this._firstFragment = true;\n\n const opts = {\n [kByteLength]: byteLength,\n fin: options.fin,\n generateMask: this._generateMask,\n mask: options.mask,\n maskBuffer: this._maskBuffer,\n opcode,\n readOnly,\n rsv1\n };\n\n if (isBlob(data)) {\n if (this._state !== DEFAULT) {\n this.enqueue([this.getBlobData, data, this._compress, opts, cb]);\n } else {\n this.getBlobData(data, this._compress, opts, cb);\n }\n } else if (this._state !== DEFAULT) {\n this.enqueue([this.dispatch, data, this._compress, opts, cb]);\n } else {\n this.dispatch(data, this._compress, opts, cb);\n }\n }\n\n /**\n * Gets the contents of a blob as binary data.\n *\n * @param {Blob} blob The blob\n * @param {Boolean} [compress=false] Specifies whether or not to compress\n * the data\n * @param {Object} options Options object\n * @param {Boolean} [options.fin=false] Specifies whether or not to set the\n * FIN bit\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Buffer} [options.maskBuffer] The buffer used to store the masking\n * key\n * @param {Number} options.opcode The opcode\n * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be\n * modified\n * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the\n * RSV1 bit\n * @param {Function} [cb] Callback\n * @private\n */\n getBlobData(blob, compress, options, cb) {\n this._bufferedBytes += options[kByteLength];\n this._state = GET_BLOB_DATA;\n\n blob\n .arrayBuffer()\n .then((arrayBuffer) => {\n if (this._socket.destroyed) {\n const err = new Error(\n 'The socket was closed while the blob was being read'\n );\n\n //\n // `callCallbacks` is called in the next tick to ensure that errors\n // that might be thrown in the callbacks behave like errors thrown\n // outside the promise chain.\n //\n process.nextTick(callCallbacks, this, err, cb);\n return;\n }\n\n this._bufferedBytes -= options[kByteLength];\n const data = toBuffer(arrayBuffer);\n\n if (!compress) {\n this._state = DEFAULT;\n this.sendFrame(Sender.frame(data, options), cb);\n this.dequeue();\n } else {\n this.dispatch(data, compress, options, cb);\n }\n })\n .catch((err) => {\n //\n // `onError` is called in the next tick for the same reason that\n // `callCallbacks` above is.\n //\n process.nextTick(onError, this, err, cb);\n });\n }\n\n /**\n * Dispatches a message.\n *\n * @param {(Buffer|String)} data The message to send\n * @param {Boolean} [compress=false] Specifies whether or not to compress\n * `data`\n * @param {Object} options Options object\n * @param {Boolean} [options.fin=false] Specifies whether or not to set the\n * FIN bit\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Buffer} [options.maskBuffer] The buffer used to store the masking\n * key\n * @param {Number} options.opcode The opcode\n * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be\n * modified\n * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the\n * RSV1 bit\n * @param {Function} [cb] Callback\n * @private\n */\n dispatch(data, compress, options, cb) {\n if (!compress) {\n this.sendFrame(Sender.frame(data, options), cb);\n return;\n }\n\n const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n\n this._bufferedBytes += options[kByteLength];\n this._state = DEFLATING;\n perMessageDeflate.compress(data, options.fin, (_, buf) => {\n if (this._socket.destroyed) {\n const err = new Error(\n 'The socket was closed while data was being compressed'\n );\n\n callCallbacks(this, err, cb);\n return;\n }\n\n this._bufferedBytes -= options[kByteLength];\n this._state = DEFAULT;\n options.readOnly = false;\n this.sendFrame(Sender.frame(buf, options), cb);\n this.dequeue();\n });\n }\n\n /**\n * Executes queued send operations.\n *\n * @private\n */\n dequeue() {\n while (this._state === DEFAULT && this._queue.length) {\n const params = this._queue.shift();\n\n this._bufferedBytes -= params[3][kByteLength];\n Reflect.apply(params[0], this, params.slice(1));\n }\n }\n\n /**\n * Enqueues a send operation.\n *\n * @param {Array} params Send operation parameters.\n * @private\n */\n enqueue(params) {\n this._bufferedBytes += params[3][kByteLength];\n this._queue.push(params);\n }\n\n /**\n * Sends a frame.\n *\n * @param {(Buffer | String)[]} list The frame to send\n * @param {Function} [cb] Callback\n * @private\n */\n sendFrame(list, cb) {\n if (list.length === 2) {\n this._socket.cork();\n this._socket.write(list[0]);\n this._socket.write(list[1], cb);\n this._socket.uncork();\n } else {\n this._socket.write(list[0], cb);\n }\n }\n}\n\nmodule.exports = Sender;\n\n/**\n * Calls queued callbacks with an error.\n *\n * @param {Sender} sender The `Sender` instance\n * @param {Error} err The error to call the callbacks with\n * @param {Function} [cb] The first callback\n * @private\n */\nfunction callCallbacks(sender, err, cb) {\n if (typeof cb === 'function') cb(err);\n\n for (let i = 0; i < sender._queue.length; i++) {\n const params = sender._queue[i];\n const callback = params[params.length - 1];\n\n if (typeof callback === 'function') callback(err);\n }\n}\n\n/**\n * Handles a `Sender` error.\n *\n * @param {Sender} sender The `Sender` instance\n * @param {Error} err The error\n * @param {Function} [cb] The first pending callback\n * @private\n */\nfunction onError(sender, err, cb) {\n callCallbacks(sender, err, cb);\n sender.onerror(err);\n}\n","'use strict';\n\nconst { kForOnEventAttribute, kListener } = require('./constants');\n\nconst kCode = Symbol('kCode');\nconst kData = Symbol('kData');\nconst kError = Symbol('kError');\nconst kMessage = Symbol('kMessage');\nconst kReason = Symbol('kReason');\nconst kTarget = Symbol('kTarget');\nconst kType = Symbol('kType');\nconst kWasClean = Symbol('kWasClean');\n\n/**\n * Class representing an event.\n */\nclass Event {\n /**\n * Create a new `Event`.\n *\n * @param {String} type The name of the event\n * @throws {TypeError} If the `type` argument is not specified\n */\n constructor(type) {\n this[kTarget] = null;\n this[kType] = type;\n }\n\n /**\n * @type {*}\n */\n get target() {\n return this[kTarget];\n }\n\n /**\n * @type {String}\n */\n get type() {\n return this[kType];\n }\n}\n\nObject.defineProperty(Event.prototype, 'target', { enumerable: true });\nObject.defineProperty(Event.prototype, 'type', { enumerable: true });\n\n/**\n * Class representing a close event.\n *\n * @extends Event\n */\nclass CloseEvent extends Event {\n /**\n * Create a new `CloseEvent`.\n *\n * @param {String} type The name of the event\n * @param {Object} [options] A dictionary object that allows for setting\n * attributes via object members of the same name\n * @param {Number} [options.code=0] The status code explaining why the\n * connection was closed\n * @param {String} [options.reason=''] A human-readable string explaining why\n * the connection was closed\n * @param {Boolean} [options.wasClean=false] Indicates whether or not the\n * connection was cleanly closed\n */\n constructor(type, options = {}) {\n super(type);\n\n this[kCode] = options.code === undefined ? 0 : options.code;\n this[kReason] = options.reason === undefined ? '' : options.reason;\n this[kWasClean] = options.wasClean === undefined ? false : options.wasClean;\n }\n\n /**\n * @type {Number}\n */\n get code() {\n return this[kCode];\n }\n\n /**\n * @type {String}\n */\n get reason() {\n return this[kReason];\n }\n\n /**\n * @type {Boolean}\n */\n get wasClean() {\n return this[kWasClean];\n }\n}\n\nObject.defineProperty(CloseEvent.prototype, 'code', { enumerable: true });\nObject.defineProperty(CloseEvent.prototype, 'reason', { enumerable: true });\nObject.defineProperty(CloseEvent.prototype, 'wasClean', { enumerable: true });\n\n/**\n * Class representing an error event.\n *\n * @extends Event\n */\nclass ErrorEvent extends Event {\n /**\n * Create a new `ErrorEvent`.\n *\n * @param {String} type The name of the event\n * @param {Object} [options] A dictionary object that allows for setting\n * attributes via object members of the same name\n * @param {*} [options.error=null] The error that generated this event\n * @param {String} [options.message=''] The error message\n */\n constructor(type, options = {}) {\n super(type);\n\n this[kError] = options.error === undefined ? null : options.error;\n this[kMessage] = options.message === undefined ? '' : options.message;\n }\n\n /**\n * @type {*}\n */\n get error() {\n return this[kError];\n }\n\n /**\n * @type {String}\n */\n get message() {\n return this[kMessage];\n }\n}\n\nObject.defineProperty(ErrorEvent.prototype, 'error', { enumerable: true });\nObject.defineProperty(ErrorEvent.prototype, 'message', { enumerable: true });\n\n/**\n * Class representing a message event.\n *\n * @extends Event\n */\nclass MessageEvent extends Event {\n /**\n * Create a new `MessageEvent`.\n *\n * @param {String} type The name of the event\n * @param {Object} [options] A dictionary object that allows for setting\n * attributes via object members of the same name\n * @param {*} [options.data=null] The message content\n */\n constructor(type, options = {}) {\n super(type);\n\n this[kData] = options.data === undefined ? null : options.data;\n }\n\n /**\n * @type {*}\n */\n get data() {\n return this[kData];\n }\n}\n\nObject.defineProperty(MessageEvent.prototype, 'data', { enumerable: true });\n\n/**\n * This provides methods for emulating the `EventTarget` interface. It's not\n * meant to be used directly.\n *\n * @mixin\n */\nconst EventTarget = {\n /**\n * Register an event listener.\n *\n * @param {String} type A string representing the event type to listen for\n * @param {(Function|Object)} handler The listener to add\n * @param {Object} [options] An options object specifies characteristics about\n * the event listener\n * @param {Boolean} [options.once=false] A `Boolean` indicating that the\n * listener should be invoked at most once after being added. If `true`,\n * the listener would be automatically removed when invoked.\n * @public\n */\n addEventListener(type, handler, options = {}) {\n for (const listener of this.listeners(type)) {\n if (\n !options[kForOnEventAttribute] &&\n listener[kListener] === handler &&\n !listener[kForOnEventAttribute]\n ) {\n return;\n }\n }\n\n let wrapper;\n\n if (type === 'message') {\n wrapper = function onMessage(data, isBinary) {\n const event = new MessageEvent('message', {\n data: isBinary ? data : data.toString()\n });\n\n event[kTarget] = this;\n callListener(handler, this, event);\n };\n } else if (type === 'close') {\n wrapper = function onClose(code, message) {\n const event = new CloseEvent('close', {\n code,\n reason: message.toString(),\n wasClean: this._closeFrameReceived && this._closeFrameSent\n });\n\n event[kTarget] = this;\n callListener(handler, this, event);\n };\n } else if (type === 'error') {\n wrapper = function onError(error) {\n const event = new ErrorEvent('error', {\n error,\n message: error.message\n });\n\n event[kTarget] = this;\n callListener(handler, this, event);\n };\n } else if (type === 'open') {\n wrapper = function onOpen() {\n const event = new Event('open');\n\n event[kTarget] = this;\n callListener(handler, this, event);\n };\n } else {\n return;\n }\n\n wrapper[kForOnEventAttribute] = !!options[kForOnEventAttribute];\n wrapper[kListener] = handler;\n\n if (options.once) {\n this.once(type, wrapper);\n } else {\n this.on(type, wrapper);\n }\n },\n\n /**\n * Remove an event listener.\n *\n * @param {String} type A string representing the event type to remove\n * @param {(Function|Object)} handler The listener to remove\n * @public\n */\n removeEventListener(type, handler) {\n for (const listener of this.listeners(type)) {\n if (listener[kListener] === handler && !listener[kForOnEventAttribute]) {\n this.removeListener(type, listener);\n break;\n }\n }\n }\n};\n\nmodule.exports = {\n CloseEvent,\n ErrorEvent,\n Event,\n EventTarget,\n MessageEvent\n};\n\n/**\n * Call an event listener\n *\n * @param {(Function|Object)} listener The listener to call\n * @param {*} thisArg The value to use as `this`` when calling the listener\n * @param {Event} event The event to pass to the listener\n * @private\n */\nfunction callListener(listener, thisArg, event) {\n if (typeof listener === 'object' && listener.handleEvent) {\n listener.handleEvent.call(listener, event);\n } else {\n listener.call(thisArg, event);\n }\n}\n","'use strict';\n\nconst { tokenChars } = require('./validation');\n\n/**\n * Adds an offer to the map of extension offers or a parameter to the map of\n * parameters.\n *\n * @param {Object} dest The map of extension offers or parameters\n * @param {String} name The extension or parameter name\n * @param {(Object|Boolean|String)} elem The extension parameters or the\n * parameter value\n * @private\n */\nfunction push(dest, name, elem) {\n if (dest[name] === undefined) dest[name] = [elem];\n else dest[name].push(elem);\n}\n\n/**\n * Parses the `Sec-WebSocket-Extensions` header into an object.\n *\n * @param {String} header The field value of the header\n * @return {Object} The parsed object\n * @public\n */\nfunction parse(header) {\n const offers = Object.create(null);\n let params = Object.create(null);\n let mustUnescape = false;\n let isEscaping = false;\n let inQuotes = false;\n let extensionName;\n let paramName;\n let start = -1;\n let code = -1;\n let end = -1;\n let i = 0;\n\n for (; i < header.length; i++) {\n code = header.charCodeAt(i);\n\n if (extensionName === undefined) {\n if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (\n i !== 0 &&\n (code === 0x20 /* ' ' */ || code === 0x09) /* '\\t' */\n ) {\n if (end === -1 && start !== -1) end = i;\n } else if (code === 0x3b /* ';' */ || code === 0x2c /* ',' */) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n const name = header.slice(start, end);\n if (code === 0x2c) {\n push(offers, name, params);\n params = Object.create(null);\n } else {\n extensionName = name;\n }\n\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n } else if (paramName === undefined) {\n if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (code === 0x20 || code === 0x09) {\n if (end === -1 && start !== -1) end = i;\n } else if (code === 0x3b || code === 0x2c) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n push(params, header.slice(start, end), true);\n if (code === 0x2c) {\n push(offers, extensionName, params);\n params = Object.create(null);\n extensionName = undefined;\n }\n\n start = end = -1;\n } else if (code === 0x3d /* '=' */ && start !== -1 && end === -1) {\n paramName = header.slice(start, i);\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n } else {\n //\n // The value of a quoted-string after unescaping must conform to the\n // token ABNF, so only token characters are valid.\n // Ref: https://tools.ietf.org/html/rfc6455#section-9.1\n //\n if (isEscaping) {\n if (tokenChars[code] !== 1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n if (start === -1) start = i;\n else if (!mustUnescape) mustUnescape = true;\n isEscaping = false;\n } else if (inQuotes) {\n if (tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (code === 0x22 /* '\"' */ && start !== -1) {\n inQuotes = false;\n end = i;\n } else if (code === 0x5c /* '\\' */) {\n isEscaping = true;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n } else if (code === 0x22 && header.charCodeAt(i - 1) === 0x3d) {\n inQuotes = true;\n } else if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (start !== -1 && (code === 0x20 || code === 0x09)) {\n if (end === -1) end = i;\n } else if (code === 0x3b || code === 0x2c) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n let value = header.slice(start, end);\n if (mustUnescape) {\n value = value.replace(/\\\\/g, '');\n mustUnescape = false;\n }\n push(params, paramName, value);\n if (code === 0x2c) {\n push(offers, extensionName, params);\n params = Object.create(null);\n extensionName = undefined;\n }\n\n paramName = undefined;\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n }\n }\n\n if (start === -1 || inQuotes || code === 0x20 || code === 0x09) {\n throw new SyntaxError('Unexpected end of input');\n }\n\n if (end === -1) end = i;\n const token = header.slice(start, end);\n if (extensionName === undefined) {\n push(offers, token, params);\n } else {\n if (paramName === undefined) {\n push(params, token, true);\n } else if (mustUnescape) {\n push(params, paramName, token.replace(/\\\\/g, ''));\n } else {\n push(params, paramName, token);\n }\n push(offers, extensionName, params);\n }\n\n return offers;\n}\n\n/**\n * Builds the `Sec-WebSocket-Extensions` header field value.\n *\n * @param {Object} extensions The map of extensions and parameters to format\n * @return {String} A string representing the given object\n * @public\n */\nfunction format(extensions) {\n return Object.keys(extensions)\n .map((extension) => {\n let configurations = extensions[extension];\n if (!Array.isArray(configurations)) configurations = [configurations];\n return configurations\n .map((params) => {\n return [extension]\n .concat(\n Object.keys(params).map((k) => {\n let values = params[k];\n if (!Array.isArray(values)) values = [values];\n return values\n .map((v) => (v === true ? k : `${k}=${v}`))\n .join('; ');\n })\n )\n .join('; ');\n })\n .join(', ');\n })\n .join(', ');\n}\n\nmodule.exports = { format, parse };\n","/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^Duplex|Readable$\", \"caughtErrors\": \"none\" }] */\n\n'use strict';\n\nconst EventEmitter = require('events');\nconst https = require('https');\nconst http = require('http');\nconst net = require('net');\nconst tls = require('tls');\nconst { randomBytes, createHash } = require('crypto');\nconst { Duplex, Readable } = require('stream');\nconst { URL } = require('url');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst Receiver = require('./receiver');\nconst Sender = require('./sender');\nconst { isBlob } = require('./validation');\n\nconst {\n BINARY_TYPES,\n EMPTY_BUFFER,\n GUID,\n kForOnEventAttribute,\n kListener,\n kStatusCode,\n kWebSocket,\n NOOP\n} = require('./constants');\nconst {\n EventTarget: { addEventListener, removeEventListener }\n} = require('./event-target');\nconst { format, parse } = require('./extension');\nconst { toBuffer } = require('./buffer-util');\n\nconst closeTimeout = 30 * 1000;\nconst kAborted = Symbol('kAborted');\nconst protocolVersions = [8, 13];\nconst readyStates = ['CONNECTING', 'OPEN', 'CLOSING', 'CLOSED'];\nconst subprotocolRegex = /^[!#$%&'*+\\-.0-9A-Z^_`|a-z~]+$/;\n\n/**\n * Class representing a WebSocket.\n *\n * @extends EventEmitter\n */\nclass WebSocket extends EventEmitter {\n /**\n * Create a new `WebSocket`.\n *\n * @param {(String|URL)} address The URL to which to connect\n * @param {(String|String[])} [protocols] The subprotocols\n * @param {Object} [options] Connection options\n */\n constructor(address, protocols, options) {\n super();\n\n this._binaryType = BINARY_TYPES[0];\n this._closeCode = 1006;\n this._closeFrameReceived = false;\n this._closeFrameSent = false;\n this._closeMessage = EMPTY_BUFFER;\n this._closeTimer = null;\n this._errorEmitted = false;\n this._extensions = {};\n this._paused = false;\n this._protocol = '';\n this._readyState = WebSocket.CONNECTING;\n this._receiver = null;\n this._sender = null;\n this._socket = null;\n\n if (address !== null) {\n this._bufferedAmount = 0;\n this._isServer = false;\n this._redirects = 0;\n\n if (protocols === undefined) {\n protocols = [];\n } else if (!Array.isArray(protocols)) {\n if (typeof protocols === 'object' && protocols !== null) {\n options = protocols;\n protocols = [];\n } else {\n protocols = [protocols];\n }\n }\n\n initAsClient(this, address, protocols, options);\n } else {\n this._autoPong = options.autoPong;\n this._isServer = true;\n }\n }\n\n /**\n * For historical reasons, the custom \"nodebuffer\" type is used by the default\n * instead of \"blob\".\n *\n * @type {String}\n */\n get binaryType() {\n return this._binaryType;\n }\n\n set binaryType(type) {\n if (!BINARY_TYPES.includes(type)) return;\n\n this._binaryType = type;\n\n //\n // Allow to change `binaryType` on the fly.\n //\n if (this._receiver) this._receiver._binaryType = type;\n }\n\n /**\n * @type {Number}\n */\n get bufferedAmount() {\n if (!this._socket) return this._bufferedAmount;\n\n return this._socket._writableState.length + this._sender._bufferedBytes;\n }\n\n /**\n * @type {String}\n */\n get extensions() {\n return Object.keys(this._extensions).join();\n }\n\n /**\n * @type {Boolean}\n */\n get isPaused() {\n return this._paused;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onclose() {\n return null;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onerror() {\n return null;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onopen() {\n return null;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onmessage() {\n return null;\n }\n\n /**\n * @type {String}\n */\n get protocol() {\n return this._protocol;\n }\n\n /**\n * @type {Number}\n */\n get readyState() {\n return this._readyState;\n }\n\n /**\n * @type {String}\n */\n get url() {\n return this._url;\n }\n\n /**\n * Set up the socket and the internal resources.\n *\n * @param {Duplex} socket The network socket between the server and client\n * @param {Buffer} head The first packet of the upgraded stream\n * @param {Object} options Options object\n * @param {Boolean} [options.allowSynchronousEvents=false] Specifies whether\n * any of the `'message'`, `'ping'`, and `'pong'` events can be emitted\n * multiple times in the same tick\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Number} [options.maxPayload=0] The maximum allowed message size\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n * not to skip UTF-8 validation for text and close messages\n * @private\n */\n setSocket(socket, head, options) {\n const receiver = new Receiver({\n allowSynchronousEvents: options.allowSynchronousEvents,\n binaryType: this.binaryType,\n extensions: this._extensions,\n isServer: this._isServer,\n maxPayload: options.maxPayload,\n skipUTF8Validation: options.skipUTF8Validation\n });\n\n const sender = new Sender(socket, this._extensions, options.generateMask);\n\n this._receiver = receiver;\n this._sender = sender;\n this._socket = socket;\n\n receiver[kWebSocket] = this;\n sender[kWebSocket] = this;\n socket[kWebSocket] = this;\n\n receiver.on('conclude', receiverOnConclude);\n receiver.on('drain', receiverOnDrain);\n receiver.on('error', receiverOnError);\n receiver.on('message', receiverOnMessage);\n receiver.on('ping', receiverOnPing);\n receiver.on('pong', receiverOnPong);\n\n sender.onerror = senderOnError;\n\n //\n // These methods may not be available if `socket` is just a `Duplex`.\n //\n if (socket.setTimeout) socket.setTimeout(0);\n if (socket.setNoDelay) socket.setNoDelay();\n\n if (head.length > 0) socket.unshift(head);\n\n socket.on('close', socketOnClose);\n socket.on('data', socketOnData);\n socket.on('end', socketOnEnd);\n socket.on('error', socketOnError);\n\n this._readyState = WebSocket.OPEN;\n this.emit('open');\n }\n\n /**\n * Emit the `'close'` event.\n *\n * @private\n */\n emitClose() {\n if (!this._socket) {\n this._readyState = WebSocket.CLOSED;\n this.emit('close', this._closeCode, this._closeMessage);\n return;\n }\n\n if (this._extensions[PerMessageDeflate.extensionName]) {\n this._extensions[PerMessageDeflate.extensionName].cleanup();\n }\n\n this._receiver.removeAllListeners();\n this._readyState = WebSocket.CLOSED;\n this.emit('close', this._closeCode, this._closeMessage);\n }\n\n /**\n * Start a closing handshake.\n *\n * +----------+ +-----------+ +----------+\n * - - -|ws.close()|-->|close frame|-->|ws.close()|- - -\n * | +----------+ +-----------+ +----------+ |\n * +----------+ +-----------+ |\n * CLOSING |ws.close()|<--|close frame|<--+-----+ CLOSING\n * +----------+ +-----------+ |\n * | | | +---+ |\n * +------------------------+-->|fin| - - - -\n * | +---+ | +---+\n * - - - - -|fin|<---------------------+\n * +---+\n *\n * @param {Number} [code] Status code explaining why the connection is closing\n * @param {(String|Buffer)} [data] The reason why the connection is\n * closing\n * @public\n */\n close(code, data) {\n if (this.readyState === WebSocket.CLOSED) return;\n if (this.readyState === WebSocket.CONNECTING) {\n const msg = 'WebSocket was closed before the connection was established';\n abortHandshake(this, this._req, msg);\n return;\n }\n\n if (this.readyState === WebSocket.CLOSING) {\n if (\n this._closeFrameSent &&\n (this._closeFrameReceived || this._receiver._writableState.errorEmitted)\n ) {\n this._socket.end();\n }\n\n return;\n }\n\n this._readyState = WebSocket.CLOSING;\n this._sender.close(code, data, !this._isServer, (err) => {\n //\n // This error is handled by the `'error'` listener on the socket. We only\n // want to know if the close frame has been sent here.\n //\n if (err) return;\n\n this._closeFrameSent = true;\n\n if (\n this._closeFrameReceived ||\n this._receiver._writableState.errorEmitted\n ) {\n this._socket.end();\n }\n });\n\n setCloseTimer(this);\n }\n\n /**\n * Pause the socket.\n *\n * @public\n */\n pause() {\n if (\n this.readyState === WebSocket.CONNECTING ||\n this.readyState === WebSocket.CLOSED\n ) {\n return;\n }\n\n this._paused = true;\n this._socket.pause();\n }\n\n /**\n * Send a ping.\n *\n * @param {*} [data] The data to send\n * @param {Boolean} [mask] Indicates whether or not to mask `data`\n * @param {Function} [cb] Callback which is executed when the ping is sent\n * @public\n */\n ping(data, mask, cb) {\n if (this.readyState === WebSocket.CONNECTING) {\n throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n }\n\n if (typeof data === 'function') {\n cb = data;\n data = mask = undefined;\n } else if (typeof mask === 'function') {\n cb = mask;\n mask = undefined;\n }\n\n if (typeof data === 'number') data = data.toString();\n\n if (this.readyState !== WebSocket.OPEN) {\n sendAfterClose(this, data, cb);\n return;\n }\n\n if (mask === undefined) mask = !this._isServer;\n this._sender.ping(data || EMPTY_BUFFER, mask, cb);\n }\n\n /**\n * Send a pong.\n *\n * @param {*} [data] The data to send\n * @param {Boolean} [mask] Indicates whether or not to mask `data`\n * @param {Function} [cb] Callback which is executed when the pong is sent\n * @public\n */\n pong(data, mask, cb) {\n if (this.readyState === WebSocket.CONNECTING) {\n throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n }\n\n if (typeof data === 'function') {\n cb = data;\n data = mask = undefined;\n } else if (typeof mask === 'function') {\n cb = mask;\n mask = undefined;\n }\n\n if (typeof data === 'number') data = data.toString();\n\n if (this.readyState !== WebSocket.OPEN) {\n sendAfterClose(this, data, cb);\n return;\n }\n\n if (mask === undefined) mask = !this._isServer;\n this._sender.pong(data || EMPTY_BUFFER, mask, cb);\n }\n\n /**\n * Resume the socket.\n *\n * @public\n */\n resume() {\n if (\n this.readyState === WebSocket.CONNECTING ||\n this.readyState === WebSocket.CLOSED\n ) {\n return;\n }\n\n this._paused = false;\n if (!this._receiver._writableState.needDrain) this._socket.resume();\n }\n\n /**\n * Send a data message.\n *\n * @param {*} data The message to send\n * @param {Object} [options] Options object\n * @param {Boolean} [options.binary] Specifies whether `data` is binary or\n * text\n * @param {Boolean} [options.compress] Specifies whether or not to compress\n * `data`\n * @param {Boolean} [options.fin=true] Specifies whether the fragment is the\n * last one\n * @param {Boolean} [options.mask] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback which is executed when data is written out\n * @public\n */\n send(data, options, cb) {\n if (this.readyState === WebSocket.CONNECTING) {\n throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n }\n\n if (typeof options === 'function') {\n cb = options;\n options = {};\n }\n\n if (typeof data === 'number') data = data.toString();\n\n if (this.readyState !== WebSocket.OPEN) {\n sendAfterClose(this, data, cb);\n return;\n }\n\n const opts = {\n binary: typeof data !== 'string',\n mask: !this._isServer,\n compress: true,\n fin: true,\n ...options\n };\n\n if (!this._extensions[PerMessageDeflate.extensionName]) {\n opts.compress = false;\n }\n\n this._sender.send(data || EMPTY_BUFFER, opts, cb);\n }\n\n /**\n * Forcibly close the connection.\n *\n * @public\n */\n terminate() {\n if (this.readyState === WebSocket.CLOSED) return;\n if (this.readyState === WebSocket.CONNECTING) {\n const msg = 'WebSocket was closed before the connection was established';\n abortHandshake(this, this._req, msg);\n return;\n }\n\n if (this._socket) {\n this._readyState = WebSocket.CLOSING;\n this._socket.destroy();\n }\n }\n}\n\n/**\n * @constant {Number} CONNECTING\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'CONNECTING', {\n enumerable: true,\n value: readyStates.indexOf('CONNECTING')\n});\n\n/**\n * @constant {Number} CONNECTING\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'CONNECTING', {\n enumerable: true,\n value: readyStates.indexOf('CONNECTING')\n});\n\n/**\n * @constant {Number} OPEN\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'OPEN', {\n enumerable: true,\n value: readyStates.indexOf('OPEN')\n});\n\n/**\n * @constant {Number} OPEN\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'OPEN', {\n enumerable: true,\n value: readyStates.indexOf('OPEN')\n});\n\n/**\n * @constant {Number} CLOSING\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'CLOSING', {\n enumerable: true,\n value: readyStates.indexOf('CLOSING')\n});\n\n/**\n * @constant {Number} CLOSING\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'CLOSING', {\n enumerable: true,\n value: readyStates.indexOf('CLOSING')\n});\n\n/**\n * @constant {Number} CLOSED\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'CLOSED', {\n enumerable: true,\n value: readyStates.indexOf('CLOSED')\n});\n\n/**\n * @constant {Number} CLOSED\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'CLOSED', {\n enumerable: true,\n value: readyStates.indexOf('CLOSED')\n});\n\n[\n 'binaryType',\n 'bufferedAmount',\n 'extensions',\n 'isPaused',\n 'protocol',\n 'readyState',\n 'url'\n].forEach((property) => {\n Object.defineProperty(WebSocket.prototype, property, { enumerable: true });\n});\n\n//\n// Add the `onopen`, `onerror`, `onclose`, and `onmessage` attributes.\n// See https://html.spec.whatwg.org/multipage/comms.html#the-websocket-interface\n//\n['open', 'error', 'close', 'message'].forEach((method) => {\n Object.defineProperty(WebSocket.prototype, `on${method}`, {\n enumerable: true,\n get() {\n for (const listener of this.listeners(method)) {\n if (listener[kForOnEventAttribute]) return listener[kListener];\n }\n\n return null;\n },\n set(handler) {\n for (const listener of this.listeners(method)) {\n if (listener[kForOnEventAttribute]) {\n this.removeListener(method, listener);\n break;\n }\n }\n\n if (typeof handler !== 'function') return;\n\n this.addEventListener(method, handler, {\n [kForOnEventAttribute]: true\n });\n }\n });\n});\n\nWebSocket.prototype.addEventListener = addEventListener;\nWebSocket.prototype.removeEventListener = removeEventListener;\n\nmodule.exports = WebSocket;\n\n/**\n * Initialize a WebSocket client.\n *\n * @param {WebSocket} websocket The client to initialize\n * @param {(String|URL)} address The URL to which to connect\n * @param {Array} protocols The subprotocols\n * @param {Object} [options] Connection options\n * @param {Boolean} [options.allowSynchronousEvents=true] Specifies whether any\n * of the `'message'`, `'ping'`, and `'pong'` events can be emitted multiple\n * times in the same tick\n * @param {Boolean} [options.autoPong=true] Specifies whether or not to\n * automatically send a pong in response to a ping\n * @param {Function} [options.finishRequest] A function which can be used to\n * customize the headers of each http request before it is sent\n * @param {Boolean} [options.followRedirects=false] Whether or not to follow\n * redirects\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Number} [options.handshakeTimeout] Timeout in milliseconds for the\n * handshake request\n * @param {Number} [options.maxPayload=104857600] The maximum allowed message\n * size\n * @param {Number} [options.maxRedirects=10] The maximum number of redirects\n * allowed\n * @param {String} [options.origin] Value of the `Origin` or\n * `Sec-WebSocket-Origin` header\n * @param {(Boolean|Object)} [options.perMessageDeflate=true] Enable/disable\n * permessage-deflate\n * @param {Number} [options.protocolVersion=13] Value of the\n * `Sec-WebSocket-Version` header\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n * not to skip UTF-8 validation for text and close messages\n * @private\n */\nfunction initAsClient(websocket, address, protocols, options) {\n const opts = {\n allowSynchronousEvents: true,\n autoPong: true,\n protocolVersion: protocolVersions[1],\n maxPayload: 100 * 1024 * 1024,\n skipUTF8Validation: false,\n perMessageDeflate: true,\n followRedirects: false,\n maxRedirects: 10,\n ...options,\n socketPath: undefined,\n hostname: undefined,\n protocol: undefined,\n timeout: undefined,\n method: 'GET',\n host: undefined,\n path: undefined,\n port: undefined\n };\n\n websocket._autoPong = opts.autoPong;\n\n if (!protocolVersions.includes(opts.protocolVersion)) {\n throw new RangeError(\n `Unsupported protocol version: ${opts.protocolVersion} ` +\n `(supported versions: ${protocolVersions.join(', ')})`\n );\n }\n\n let parsedUrl;\n\n if (address instanceof URL) {\n parsedUrl = address;\n } else {\n try {\n parsedUrl = new URL(address);\n } catch (e) {\n throw new SyntaxError(`Invalid URL: ${address}`);\n }\n }\n\n if (parsedUrl.protocol === 'http:') {\n parsedUrl.protocol = 'ws:';\n } else if (parsedUrl.protocol === 'https:') {\n parsedUrl.protocol = 'wss:';\n }\n\n websocket._url = parsedUrl.href;\n\n const isSecure = parsedUrl.protocol === 'wss:';\n const isIpcUrl = parsedUrl.protocol === 'ws+unix:';\n let invalidUrlMessage;\n\n if (parsedUrl.protocol !== 'ws:' && !isSecure && !isIpcUrl) {\n invalidUrlMessage =\n 'The URL\\'s protocol must be one of \"ws:\", \"wss:\", ' +\n '\"http:\", \"https:\", or \"ws+unix:\"';\n } else if (isIpcUrl && !parsedUrl.pathname) {\n invalidUrlMessage = \"The URL's pathname is empty\";\n } else if (parsedUrl.hash) {\n invalidUrlMessage = 'The URL contains a fragment identifier';\n }\n\n if (invalidUrlMessage) {\n const err = new SyntaxError(invalidUrlMessage);\n\n if (websocket._redirects === 0) {\n throw err;\n } else {\n emitErrorAndClose(websocket, err);\n return;\n }\n }\n\n const defaultPort = isSecure ? 443 : 80;\n const key = randomBytes(16).toString('base64');\n const request = isSecure ? https.request : http.request;\n const protocolSet = new Set();\n let perMessageDeflate;\n\n opts.createConnection =\n opts.createConnection || (isSecure ? tlsConnect : netConnect);\n opts.defaultPort = opts.defaultPort || defaultPort;\n opts.port = parsedUrl.port || defaultPort;\n opts.host = parsedUrl.hostname.startsWith('[')\n ? parsedUrl.hostname.slice(1, -1)\n : parsedUrl.hostname;\n opts.headers = {\n ...opts.headers,\n 'Sec-WebSocket-Version': opts.protocolVersion,\n 'Sec-WebSocket-Key': key,\n Connection: 'Upgrade',\n Upgrade: 'websocket'\n };\n opts.path = parsedUrl.pathname + parsedUrl.search;\n opts.timeout = opts.handshakeTimeout;\n\n if (opts.perMessageDeflate) {\n perMessageDeflate = new PerMessageDeflate(\n opts.perMessageDeflate !== true ? opts.perMessageDeflate : {},\n false,\n opts.maxPayload\n );\n opts.headers['Sec-WebSocket-Extensions'] = format({\n [PerMessageDeflate.extensionName]: perMessageDeflate.offer()\n });\n }\n if (protocols.length) {\n for (const protocol of protocols) {\n if (\n typeof protocol !== 'string' ||\n !subprotocolRegex.test(protocol) ||\n protocolSet.has(protocol)\n ) {\n throw new SyntaxError(\n 'An invalid or duplicated subprotocol was specified'\n );\n }\n\n protocolSet.add(protocol);\n }\n\n opts.headers['Sec-WebSocket-Protocol'] = protocols.join(',');\n }\n if (opts.origin) {\n if (opts.protocolVersion < 13) {\n opts.headers['Sec-WebSocket-Origin'] = opts.origin;\n } else {\n opts.headers.Origin = opts.origin;\n }\n }\n if (parsedUrl.username || parsedUrl.password) {\n opts.auth = `${parsedUrl.username}:${parsedUrl.password}`;\n }\n\n if (isIpcUrl) {\n const parts = opts.path.split(':');\n\n opts.socketPath = parts[0];\n opts.path = parts[1];\n }\n\n let req;\n\n if (opts.followRedirects) {\n if (websocket._redirects === 0) {\n websocket._originalIpc = isIpcUrl;\n websocket._originalSecure = isSecure;\n websocket._originalHostOrSocketPath = isIpcUrl\n ? opts.socketPath\n : parsedUrl.host;\n\n const headers = options && options.headers;\n\n //\n // Shallow copy the user provided options so that headers can be changed\n // without mutating the original object.\n //\n options = { ...options, headers: {} };\n\n if (headers) {\n for (const [key, value] of Object.entries(headers)) {\n options.headers[key.toLowerCase()] = value;\n }\n }\n } else if (websocket.listenerCount('redirect') === 0) {\n const isSameHost = isIpcUrl\n ? websocket._originalIpc\n ? opts.socketPath === websocket._originalHostOrSocketPath\n : false\n : websocket._originalIpc\n ? false\n : parsedUrl.host === websocket._originalHostOrSocketPath;\n\n if (!isSameHost || (websocket._originalSecure && !isSecure)) {\n //\n // Match curl 7.77.0 behavior and drop the following headers. These\n // headers are also dropped when following a redirect to a subdomain.\n //\n delete opts.headers.authorization;\n delete opts.headers.cookie;\n\n if (!isSameHost) delete opts.headers.host;\n\n opts.auth = undefined;\n }\n }\n\n //\n // Match curl 7.77.0 behavior and make the first `Authorization` header win.\n // If the `Authorization` header is set, then there is nothing to do as it\n // will take precedence.\n //\n if (opts.auth && !options.headers.authorization) {\n options.headers.authorization =\n 'Basic ' + Buffer.from(opts.auth).toString('base64');\n }\n\n req = websocket._req = request(opts);\n\n if (websocket._redirects) {\n //\n // Unlike what is done for the `'upgrade'` event, no early exit is\n // triggered here if the user calls `websocket.close()` or\n // `websocket.terminate()` from a listener of the `'redirect'` event. This\n // is because the user can also call `request.destroy()` with an error\n // before calling `websocket.close()` or `websocket.terminate()` and this\n // would result in an error being emitted on the `request` object with no\n // `'error'` event listeners attached.\n //\n websocket.emit('redirect', websocket.url, req);\n }\n } else {\n req = websocket._req = request(opts);\n }\n\n if (opts.timeout) {\n req.on('timeout', () => {\n abortHandshake(websocket, req, 'Opening handshake has timed out');\n });\n }\n\n req.on('error', (err) => {\n if (req === null || req[kAborted]) return;\n\n req = websocket._req = null;\n emitErrorAndClose(websocket, err);\n });\n\n req.on('response', (res) => {\n const location = res.headers.location;\n const statusCode = res.statusCode;\n\n if (\n location &&\n opts.followRedirects &&\n statusCode >= 300 &&\n statusCode < 400\n ) {\n if (++websocket._redirects > opts.maxRedirects) {\n abortHandshake(websocket, req, 'Maximum redirects exceeded');\n return;\n }\n\n req.abort();\n\n let addr;\n\n try {\n addr = new URL(location, address);\n } catch (e) {\n const err = new SyntaxError(`Invalid URL: ${location}`);\n emitErrorAndClose(websocket, err);\n return;\n }\n\n initAsClient(websocket, addr, protocols, options);\n } else if (!websocket.emit('unexpected-response', req, res)) {\n abortHandshake(\n websocket,\n req,\n `Unexpected server response: ${res.statusCode}`\n );\n }\n });\n\n req.on('upgrade', (res, socket, head) => {\n websocket.emit('upgrade', res);\n\n //\n // The user may have closed the connection from a listener of the\n // `'upgrade'` event.\n //\n if (websocket.readyState !== WebSocket.CONNECTING) return;\n\n req = websocket._req = null;\n\n const upgrade = res.headers.upgrade;\n\n if (upgrade === undefined || upgrade.toLowerCase() !== 'websocket') {\n abortHandshake(websocket, socket, 'Invalid Upgrade header');\n return;\n }\n\n const digest = createHash('sha1')\n .update(key + GUID)\n .digest('base64');\n\n if (res.headers['sec-websocket-accept'] !== digest) {\n abortHandshake(websocket, socket, 'Invalid Sec-WebSocket-Accept header');\n return;\n }\n\n const serverProt = res.headers['sec-websocket-protocol'];\n let protError;\n\n if (serverProt !== undefined) {\n if (!protocolSet.size) {\n protError = 'Server sent a subprotocol but none was requested';\n } else if (!protocolSet.has(serverProt)) {\n protError = 'Server sent an invalid subprotocol';\n }\n } else if (protocolSet.size) {\n protError = 'Server sent no subprotocol';\n }\n\n if (protError) {\n abortHandshake(websocket, socket, protError);\n return;\n }\n\n if (serverProt) websocket._protocol = serverProt;\n\n const secWebSocketExtensions = res.headers['sec-websocket-extensions'];\n\n if (secWebSocketExtensions !== undefined) {\n if (!perMessageDeflate) {\n const message =\n 'Server sent a Sec-WebSocket-Extensions header but no extension ' +\n 'was requested';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n let extensions;\n\n try {\n extensions = parse(secWebSocketExtensions);\n } catch (err) {\n const message = 'Invalid Sec-WebSocket-Extensions header';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n const extensionNames = Object.keys(extensions);\n\n if (\n extensionNames.length !== 1 ||\n extensionNames[0] !== PerMessageDeflate.extensionName\n ) {\n const message = 'Server indicated an extension that was not requested';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n try {\n perMessageDeflate.accept(extensions[PerMessageDeflate.extensionName]);\n } catch (err) {\n const message = 'Invalid Sec-WebSocket-Extensions header';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n websocket._extensions[PerMessageDeflate.extensionName] =\n perMessageDeflate;\n }\n\n websocket.setSocket(socket, head, {\n allowSynchronousEvents: opts.allowSynchronousEvents,\n generateMask: opts.generateMask,\n maxPayload: opts.maxPayload,\n skipUTF8Validation: opts.skipUTF8Validation\n });\n });\n\n if (opts.finishRequest) {\n opts.finishRequest(req, websocket);\n } else {\n req.end();\n }\n}\n\n/**\n * Emit the `'error'` and `'close'` events.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {Error} The error to emit\n * @private\n */\nfunction emitErrorAndClose(websocket, err) {\n websocket._readyState = WebSocket.CLOSING;\n //\n // The following assignment is practically useless and is done only for\n // consistency.\n //\n websocket._errorEmitted = true;\n websocket.emit('error', err);\n websocket.emitClose();\n}\n\n/**\n * Create a `net.Socket` and initiate a connection.\n *\n * @param {Object} options Connection options\n * @return {net.Socket} The newly created socket used to start the connection\n * @private\n */\nfunction netConnect(options) {\n options.path = options.socketPath;\n return net.connect(options);\n}\n\n/**\n * Create a `tls.TLSSocket` and initiate a connection.\n *\n * @param {Object} options Connection options\n * @return {tls.TLSSocket} The newly created socket used to start the connection\n * @private\n */\nfunction tlsConnect(options) {\n options.path = undefined;\n\n if (!options.servername && options.servername !== '') {\n options.servername = net.isIP(options.host) ? '' : options.host;\n }\n\n return tls.connect(options);\n}\n\n/**\n * Abort the handshake and emit an error.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {(http.ClientRequest|net.Socket|tls.Socket)} stream The request to\n * abort or the socket to destroy\n * @param {String} message The error message\n * @private\n */\nfunction abortHandshake(websocket, stream, message) {\n websocket._readyState = WebSocket.CLOSING;\n\n const err = new Error(message);\n Error.captureStackTrace(err, abortHandshake);\n\n if (stream.setHeader) {\n stream[kAborted] = true;\n stream.abort();\n\n if (stream.socket && !stream.socket.destroyed) {\n //\n // On Node.js >= 14.3.0 `request.abort()` does not destroy the socket if\n // called after the request completed. See\n // https://github.com/websockets/ws/issues/1869.\n //\n stream.socket.destroy();\n }\n\n process.nextTick(emitErrorAndClose, websocket, err);\n } else {\n stream.destroy(err);\n stream.once('error', websocket.emit.bind(websocket, 'error'));\n stream.once('close', websocket.emitClose.bind(websocket));\n }\n}\n\n/**\n * Handle cases where the `ping()`, `pong()`, or `send()` methods are called\n * when the `readyState` attribute is `CLOSING` or `CLOSED`.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {*} [data] The data to send\n * @param {Function} [cb] Callback\n * @private\n */\nfunction sendAfterClose(websocket, data, cb) {\n if (data) {\n const length = isBlob(data) ? data.size : toBuffer(data).length;\n\n //\n // The `_bufferedAmount` property is used only when the peer is a client and\n // the opening handshake fails. Under these circumstances, in fact, the\n // `setSocket()` method is not called, so the `_socket` and `_sender`\n // properties are set to `null`.\n //\n if (websocket._socket) websocket._sender._bufferedBytes += length;\n else websocket._bufferedAmount += length;\n }\n\n if (cb) {\n const err = new Error(\n `WebSocket is not open: readyState ${websocket.readyState} ` +\n `(${readyStates[websocket.readyState]})`\n );\n process.nextTick(cb, err);\n }\n}\n\n/**\n * The listener of the `Receiver` `'conclude'` event.\n *\n * @param {Number} code The status code\n * @param {Buffer} reason The reason for closing\n * @private\n */\nfunction receiverOnConclude(code, reason) {\n const websocket = this[kWebSocket];\n\n websocket._closeFrameReceived = true;\n websocket._closeMessage = reason;\n websocket._closeCode = code;\n\n if (websocket._socket[kWebSocket] === undefined) return;\n\n websocket._socket.removeListener('data', socketOnData);\n process.nextTick(resume, websocket._socket);\n\n if (code === 1005) websocket.close();\n else websocket.close(code, reason);\n}\n\n/**\n * The listener of the `Receiver` `'drain'` event.\n *\n * @private\n */\nfunction receiverOnDrain() {\n const websocket = this[kWebSocket];\n\n if (!websocket.isPaused) websocket._socket.resume();\n}\n\n/**\n * The listener of the `Receiver` `'error'` event.\n *\n * @param {(RangeError|Error)} err The emitted error\n * @private\n */\nfunction receiverOnError(err) {\n const websocket = this[kWebSocket];\n\n if (websocket._socket[kWebSocket] !== undefined) {\n websocket._socket.removeListener('data', socketOnData);\n\n //\n // On Node.js < 14.0.0 the `'error'` event is emitted synchronously. See\n // https://github.com/websockets/ws/issues/1940.\n //\n process.nextTick(resume, websocket._socket);\n\n websocket.close(err[kStatusCode]);\n }\n\n if (!websocket._errorEmitted) {\n websocket._errorEmitted = true;\n websocket.emit('error', err);\n }\n}\n\n/**\n * The listener of the `Receiver` `'finish'` event.\n *\n * @private\n */\nfunction receiverOnFinish() {\n this[kWebSocket].emitClose();\n}\n\n/**\n * The listener of the `Receiver` `'message'` event.\n *\n * @param {Buffer|ArrayBuffer|Buffer[])} data The message\n * @param {Boolean} isBinary Specifies whether the message is binary or not\n * @private\n */\nfunction receiverOnMessage(data, isBinary) {\n this[kWebSocket].emit('message', data, isBinary);\n}\n\n/**\n * The listener of the `Receiver` `'ping'` event.\n *\n * @param {Buffer} data The data included in the ping frame\n * @private\n */\nfunction receiverOnPing(data) {\n const websocket = this[kWebSocket];\n\n if (websocket._autoPong) websocket.pong(data, !this._isServer, NOOP);\n websocket.emit('ping', data);\n}\n\n/**\n * The listener of the `Receiver` `'pong'` event.\n *\n * @param {Buffer} data The data included in the pong frame\n * @private\n */\nfunction receiverOnPong(data) {\n this[kWebSocket].emit('pong', data);\n}\n\n/**\n * Resume a readable stream\n *\n * @param {Readable} stream The readable stream\n * @private\n */\nfunction resume(stream) {\n stream.resume();\n}\n\n/**\n * The `Sender` error event handler.\n *\n * @param {Error} The error\n * @private\n */\nfunction senderOnError(err) {\n const websocket = this[kWebSocket];\n\n if (websocket.readyState === WebSocket.CLOSED) return;\n if (websocket.readyState === WebSocket.OPEN) {\n websocket._readyState = WebSocket.CLOSING;\n setCloseTimer(websocket);\n }\n\n //\n // `socket.end()` is used instead of `socket.destroy()` to allow the other\n // peer to finish sending queued data. There is no need to set a timer here\n // because `CLOSING` means that it is already set or not needed.\n //\n this._socket.end();\n\n if (!websocket._errorEmitted) {\n websocket._errorEmitted = true;\n websocket.emit('error', err);\n }\n}\n\n/**\n * Set a timer to destroy the underlying raw socket of a WebSocket.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @private\n */\nfunction setCloseTimer(websocket) {\n websocket._closeTimer = setTimeout(\n websocket._socket.destroy.bind(websocket._socket),\n closeTimeout\n );\n}\n\n/**\n * The listener of the socket `'close'` event.\n *\n * @private\n */\nfunction socketOnClose() {\n const websocket = this[kWebSocket];\n\n this.removeListener('close', socketOnClose);\n this.removeListener('data', socketOnData);\n this.removeListener('end', socketOnEnd);\n\n websocket._readyState = WebSocket.CLOSING;\n\n let chunk;\n\n //\n // The close frame might not have been received or the `'end'` event emitted,\n // for example, if the socket was destroyed due to an error. Ensure that the\n // `receiver` stream is closed after writing any remaining buffered data to\n // it. If the readable side of the socket is in flowing mode then there is no\n // buffered data as everything has been already written and `readable.read()`\n // will return `null`. If instead, the socket is paused, any possible buffered\n // data will be read as a single chunk.\n //\n if (\n !this._readableState.endEmitted &&\n !websocket._closeFrameReceived &&\n !websocket._receiver._writableState.errorEmitted &&\n (chunk = websocket._socket.read()) !== null\n ) {\n websocket._receiver.write(chunk);\n }\n\n websocket._receiver.end();\n\n this[kWebSocket] = undefined;\n\n clearTimeout(websocket._closeTimer);\n\n if (\n websocket._receiver._writableState.finished ||\n websocket._receiver._writableState.errorEmitted\n ) {\n websocket.emitClose();\n } else {\n websocket._receiver.on('error', receiverOnFinish);\n websocket._receiver.on('finish', receiverOnFinish);\n }\n}\n\n/**\n * The listener of the socket `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction socketOnData(chunk) {\n if (!this[kWebSocket]._receiver.write(chunk)) {\n this.pause();\n }\n}\n\n/**\n * The listener of the socket `'end'` event.\n *\n * @private\n */\nfunction socketOnEnd() {\n const websocket = this[kWebSocket];\n\n websocket._readyState = WebSocket.CLOSING;\n websocket._receiver.end();\n this.end();\n}\n\n/**\n * The listener of the socket `'error'` event.\n *\n * @private\n */\nfunction socketOnError() {\n const websocket = this[kWebSocket];\n\n this.removeListener('error', socketOnError);\n this.on('error', NOOP);\n\n if (websocket) {\n websocket._readyState = WebSocket.CLOSING;\n this.destroy();\n }\n}\n","/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^WebSocket$\" }] */\n'use strict';\n\nconst WebSocket = require('./websocket');\nconst { Duplex } = require('stream');\n\n/**\n * Emits the `'close'` event on a stream.\n *\n * @param {Duplex} stream The stream.\n * @private\n */\nfunction emitClose(stream) {\n stream.emit('close');\n}\n\n/**\n * The listener of the `'end'` event.\n *\n * @private\n */\nfunction duplexOnEnd() {\n if (!this.destroyed && this._writableState.finished) {\n this.destroy();\n }\n}\n\n/**\n * The listener of the `'error'` event.\n *\n * @param {Error} err The error\n * @private\n */\nfunction duplexOnError(err) {\n this.removeListener('error', duplexOnError);\n this.destroy();\n if (this.listenerCount('error') === 0) {\n // Do not suppress the throwing behavior.\n this.emit('error', err);\n }\n}\n\n/**\n * Wraps a `WebSocket` in a duplex stream.\n *\n * @param {WebSocket} ws The `WebSocket` to wrap\n * @param {Object} [options] The options for the `Duplex` constructor\n * @return {Duplex} The duplex stream\n * @public\n */\nfunction createWebSocketStream(ws, options) {\n let terminateOnDestroy = true;\n\n const duplex = new Duplex({\n ...options,\n autoDestroy: false,\n emitClose: false,\n objectMode: false,\n writableObjectMode: false\n });\n\n ws.on('message', function message(msg, isBinary) {\n const data =\n !isBinary && duplex._readableState.objectMode ? msg.toString() : msg;\n\n if (!duplex.push(data)) ws.pause();\n });\n\n ws.once('error', function error(err) {\n if (duplex.destroyed) return;\n\n // Prevent `ws.terminate()` from being called by `duplex._destroy()`.\n //\n // - If the `'error'` event is emitted before the `'open'` event, then\n // `ws.terminate()` is a noop as no socket is assigned.\n // - Otherwise, the error is re-emitted by the listener of the `'error'`\n // event of the `Receiver` object. The listener already closes the\n // connection by calling `ws.close()`. This allows a close frame to be\n // sent to the other peer. If `ws.terminate()` is called right after this,\n // then the close frame might not be sent.\n terminateOnDestroy = false;\n duplex.destroy(err);\n });\n\n ws.once('close', function close() {\n if (duplex.destroyed) return;\n\n duplex.push(null);\n });\n\n duplex._destroy = function (err, callback) {\n if (ws.readyState === ws.CLOSED) {\n callback(err);\n process.nextTick(emitClose, duplex);\n return;\n }\n\n let called = false;\n\n ws.once('error', function error(err) {\n called = true;\n callback(err);\n });\n\n ws.once('close', function close() {\n if (!called) callback(err);\n process.nextTick(emitClose, duplex);\n });\n\n if (terminateOnDestroy) ws.terminate();\n };\n\n duplex._final = function (callback) {\n if (ws.readyState === ws.CONNECTING) {\n ws.once('open', function open() {\n duplex._final(callback);\n });\n return;\n }\n\n // If the value of the `_socket` property is `null` it means that `ws` is a\n // client websocket and the handshake failed. In fact, when this happens, a\n // socket is never assigned to the websocket. Wait for the `'error'` event\n // that will be emitted by the websocket.\n if (ws._socket === null) return;\n\n if (ws._socket._writableState.finished) {\n callback();\n if (duplex._readableState.endEmitted) duplex.destroy();\n } else {\n ws._socket.once('finish', function finish() {\n // `duplex` is not destroyed here because the `'end'` event will be\n // emitted on `duplex` after this `'finish'` event. The EOF signaling\n // `null` chunk is, in fact, pushed when the websocket emits `'close'`.\n callback();\n });\n ws.close();\n }\n };\n\n duplex._read = function () {\n if (ws.isPaused) ws.resume();\n };\n\n duplex._write = function (chunk, encoding, callback) {\n if (ws.readyState === ws.CONNECTING) {\n ws.once('open', function open() {\n duplex._write(chunk, encoding, callback);\n });\n return;\n }\n\n ws.send(chunk, callback);\n };\n\n duplex.on('end', duplexOnEnd);\n duplex.on('error', duplexOnError);\n return duplex;\n}\n\nmodule.exports = createWebSocketStream;\n","'use strict';\n\nconst { tokenChars } = require('./validation');\n\n/**\n * Parses the `Sec-WebSocket-Protocol` header into a set of subprotocol names.\n *\n * @param {String} header The field value of the header\n * @return {Set} The subprotocol names\n * @public\n */\nfunction parse(header) {\n const protocols = new Set();\n let start = -1;\n let end = -1;\n let i = 0;\n\n for (i; i < header.length; i++) {\n const code = header.charCodeAt(i);\n\n if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (\n i !== 0 &&\n (code === 0x20 /* ' ' */ || code === 0x09) /* '\\t' */\n ) {\n if (end === -1 && start !== -1) end = i;\n } else if (code === 0x2c /* ',' */) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n\n const protocol = header.slice(start, end);\n\n if (protocols.has(protocol)) {\n throw new SyntaxError(`The \"${protocol}\" subprotocol is duplicated`);\n }\n\n protocols.add(protocol);\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n }\n\n if (start === -1 || end !== -1) {\n throw new SyntaxError('Unexpected end of input');\n }\n\n const protocol = header.slice(start, i);\n\n if (protocols.has(protocol)) {\n throw new SyntaxError(`The \"${protocol}\" subprotocol is duplicated`);\n }\n\n protocols.add(protocol);\n return protocols;\n}\n\nmodule.exports = { parse };\n","/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^Duplex$\", \"caughtErrors\": \"none\" }] */\n\n'use strict';\n\nconst EventEmitter = require('events');\nconst http = require('http');\nconst { Duplex } = require('stream');\nconst { createHash } = require('crypto');\n\nconst extension = require('./extension');\nconst PerMessageDeflate = require('./permessage-deflate');\nconst subprotocol = require('./subprotocol');\nconst WebSocket = require('./websocket');\nconst { GUID, kWebSocket } = require('./constants');\n\nconst keyRegex = /^[+/0-9A-Za-z]{22}==$/;\n\nconst RUNNING = 0;\nconst CLOSING = 1;\nconst CLOSED = 2;\n\n/**\n * Class representing a WebSocket server.\n *\n * @extends EventEmitter\n */\nclass WebSocketServer extends EventEmitter {\n /**\n * Create a `WebSocketServer` instance.\n *\n * @param {Object} options Configuration options\n * @param {Boolean} [options.allowSynchronousEvents=true] Specifies whether\n * any of the `'message'`, `'ping'`, and `'pong'` events can be emitted\n * multiple times in the same tick\n * @param {Boolean} [options.autoPong=true] Specifies whether or not to\n * automatically send a pong in response to a ping\n * @param {Number} [options.backlog=511] The maximum length of the queue of\n * pending connections\n * @param {Boolean} [options.clientTracking=true] Specifies whether or not to\n * track clients\n * @param {Function} [options.handleProtocols] A hook to handle protocols\n * @param {String} [options.host] The hostname where to bind the server\n * @param {Number} [options.maxPayload=104857600] The maximum allowed message\n * size\n * @param {Boolean} [options.noServer=false] Enable no server mode\n * @param {String} [options.path] Accept only connections matching this path\n * @param {(Boolean|Object)} [options.perMessageDeflate=false] Enable/disable\n * permessage-deflate\n * @param {Number} [options.port] The port where to bind the server\n * @param {(http.Server|https.Server)} [options.server] A pre-created HTTP/S\n * server to use\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n * not to skip UTF-8 validation for text and close messages\n * @param {Function} [options.verifyClient] A hook to reject connections\n * @param {Function} [options.WebSocket=WebSocket] Specifies the `WebSocket`\n * class to use. It must be the `WebSocket` class or class that extends it\n * @param {Function} [callback] A listener for the `listening` event\n */\n constructor(options, callback) {\n super();\n\n options = {\n allowSynchronousEvents: true,\n autoPong: true,\n maxPayload: 100 * 1024 * 1024,\n skipUTF8Validation: false,\n perMessageDeflate: false,\n handleProtocols: null,\n clientTracking: true,\n verifyClient: null,\n noServer: false,\n backlog: null, // use default (511 as implemented in net.js)\n server: null,\n host: null,\n path: null,\n port: null,\n WebSocket,\n ...options\n };\n\n if (\n (options.port == null && !options.server && !options.noServer) ||\n (options.port != null && (options.server || options.noServer)) ||\n (options.server && options.noServer)\n ) {\n throw new TypeError(\n 'One and only one of the \"port\", \"server\", or \"noServer\" options ' +\n 'must be specified'\n );\n }\n\n if (options.port != null) {\n this._server = http.createServer((req, res) => {\n const body = http.STATUS_CODES[426];\n\n res.writeHead(426, {\n 'Content-Length': body.length,\n 'Content-Type': 'text/plain'\n });\n res.end(body);\n });\n this._server.listen(\n options.port,\n options.host,\n options.backlog,\n callback\n );\n } else if (options.server) {\n this._server = options.server;\n }\n\n if (this._server) {\n const emitConnection = this.emit.bind(this, 'connection');\n\n this._removeListeners = addListeners(this._server, {\n listening: this.emit.bind(this, 'listening'),\n error: this.emit.bind(this, 'error'),\n upgrade: (req, socket, head) => {\n this.handleUpgrade(req, socket, head, emitConnection);\n }\n });\n }\n\n if (options.perMessageDeflate === true) options.perMessageDeflate = {};\n if (options.clientTracking) {\n this.clients = new Set();\n this._shouldEmitClose = false;\n }\n\n this.options = options;\n this._state = RUNNING;\n }\n\n /**\n * Returns the bound address, the address family name, and port of the server\n * as reported by the operating system if listening on an IP socket.\n * If the server is listening on a pipe or UNIX domain socket, the name is\n * returned as a string.\n *\n * @return {(Object|String|null)} The address of the server\n * @public\n */\n address() {\n if (this.options.noServer) {\n throw new Error('The server is operating in \"noServer\" mode');\n }\n\n if (!this._server) return null;\n return this._server.address();\n }\n\n /**\n * Stop the server from accepting new connections and emit the `'close'` event\n * when all existing connections are closed.\n *\n * @param {Function} [cb] A one-time listener for the `'close'` event\n * @public\n */\n close(cb) {\n if (this._state === CLOSED) {\n if (cb) {\n this.once('close', () => {\n cb(new Error('The server is not running'));\n });\n }\n\n process.nextTick(emitClose, this);\n return;\n }\n\n if (cb) this.once('close', cb);\n\n if (this._state === CLOSING) return;\n this._state = CLOSING;\n\n if (this.options.noServer || this.options.server) {\n if (this._server) {\n this._removeListeners();\n this._removeListeners = this._server = null;\n }\n\n if (this.clients) {\n if (!this.clients.size) {\n process.nextTick(emitClose, this);\n } else {\n this._shouldEmitClose = true;\n }\n } else {\n process.nextTick(emitClose, this);\n }\n } else {\n const server = this._server;\n\n this._removeListeners();\n this._removeListeners = this._server = null;\n\n //\n // The HTTP/S server was created internally. Close it, and rely on its\n // `'close'` event.\n //\n server.close(() => {\n emitClose(this);\n });\n }\n }\n\n /**\n * See if a given request should be handled by this server instance.\n *\n * @param {http.IncomingMessage} req Request object to inspect\n * @return {Boolean} `true` if the request is valid, else `false`\n * @public\n */\n shouldHandle(req) {\n if (this.options.path) {\n const index = req.url.indexOf('?');\n const pathname = index !== -1 ? req.url.slice(0, index) : req.url;\n\n if (pathname !== this.options.path) return false;\n }\n\n return true;\n }\n\n /**\n * Handle a HTTP Upgrade request.\n *\n * @param {http.IncomingMessage} req The request object\n * @param {Duplex} socket The network socket between the server and client\n * @param {Buffer} head The first packet of the upgraded stream\n * @param {Function} cb Callback\n * @public\n */\n handleUpgrade(req, socket, head, cb) {\n socket.on('error', socketOnError);\n\n const key = req.headers['sec-websocket-key'];\n const upgrade = req.headers.upgrade;\n const version = +req.headers['sec-websocket-version'];\n\n if (req.method !== 'GET') {\n const message = 'Invalid HTTP method';\n abortHandshakeOrEmitwsClientError(this, req, socket, 405, message);\n return;\n }\n\n if (upgrade === undefined || upgrade.toLowerCase() !== 'websocket') {\n const message = 'Invalid Upgrade header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n return;\n }\n\n if (key === undefined || !keyRegex.test(key)) {\n const message = 'Missing or invalid Sec-WebSocket-Key header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n return;\n }\n\n if (version !== 13 && version !== 8) {\n const message = 'Missing or invalid Sec-WebSocket-Version header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message, {\n 'Sec-WebSocket-Version': '13, 8'\n });\n return;\n }\n\n if (!this.shouldHandle(req)) {\n abortHandshake(socket, 400);\n return;\n }\n\n const secWebSocketProtocol = req.headers['sec-websocket-protocol'];\n let protocols = new Set();\n\n if (secWebSocketProtocol !== undefined) {\n try {\n protocols = subprotocol.parse(secWebSocketProtocol);\n } catch (err) {\n const message = 'Invalid Sec-WebSocket-Protocol header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n return;\n }\n }\n\n const secWebSocketExtensions = req.headers['sec-websocket-extensions'];\n const extensions = {};\n\n if (\n this.options.perMessageDeflate &&\n secWebSocketExtensions !== undefined\n ) {\n const perMessageDeflate = new PerMessageDeflate(\n this.options.perMessageDeflate,\n true,\n this.options.maxPayload\n );\n\n try {\n const offers = extension.parse(secWebSocketExtensions);\n\n if (offers[PerMessageDeflate.extensionName]) {\n perMessageDeflate.accept(offers[PerMessageDeflate.extensionName]);\n extensions[PerMessageDeflate.extensionName] = perMessageDeflate;\n }\n } catch (err) {\n const message =\n 'Invalid or unacceptable Sec-WebSocket-Extensions header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n return;\n }\n }\n\n //\n // Optionally call external client verification handler.\n //\n if (this.options.verifyClient) {\n const info = {\n origin:\n req.headers[`${version === 8 ? 'sec-websocket-origin' : 'origin'}`],\n secure: !!(req.socket.authorized || req.socket.encrypted),\n req\n };\n\n if (this.options.verifyClient.length === 2) {\n this.options.verifyClient(info, (verified, code, message, headers) => {\n if (!verified) {\n return abortHandshake(socket, code || 401, message, headers);\n }\n\n this.completeUpgrade(\n extensions,\n key,\n protocols,\n req,\n socket,\n head,\n cb\n );\n });\n return;\n }\n\n if (!this.options.verifyClient(info)) return abortHandshake(socket, 401);\n }\n\n this.completeUpgrade(extensions, key, protocols, req, socket, head, cb);\n }\n\n /**\n * Upgrade the connection to WebSocket.\n *\n * @param {Object} extensions The accepted extensions\n * @param {String} key The value of the `Sec-WebSocket-Key` header\n * @param {Set} protocols The subprotocols\n * @param {http.IncomingMessage} req The request object\n * @param {Duplex} socket The network socket between the server and client\n * @param {Buffer} head The first packet of the upgraded stream\n * @param {Function} cb Callback\n * @throws {Error} If called more than once with the same socket\n * @private\n */\n completeUpgrade(extensions, key, protocols, req, socket, head, cb) {\n //\n // Destroy the socket if the client has already sent a FIN packet.\n //\n if (!socket.readable || !socket.writable) return socket.destroy();\n\n if (socket[kWebSocket]) {\n throw new Error(\n 'server.handleUpgrade() was called more than once with the same ' +\n 'socket, possibly due to a misconfiguration'\n );\n }\n\n if (this._state > RUNNING) return abortHandshake(socket, 503);\n\n const digest = createHash('sha1')\n .update(key + GUID)\n .digest('base64');\n\n const headers = [\n 'HTTP/1.1 101 Switching Protocols',\n 'Upgrade: websocket',\n 'Connection: Upgrade',\n `Sec-WebSocket-Accept: ${digest}`\n ];\n\n const ws = new this.options.WebSocket(null, undefined, this.options);\n\n if (protocols.size) {\n //\n // Optionally call external protocol selection handler.\n //\n const protocol = this.options.handleProtocols\n ? this.options.handleProtocols(protocols, req)\n : protocols.values().next().value;\n\n if (protocol) {\n headers.push(`Sec-WebSocket-Protocol: ${protocol}`);\n ws._protocol = protocol;\n }\n }\n\n if (extensions[PerMessageDeflate.extensionName]) {\n const params = extensions[PerMessageDeflate.extensionName].params;\n const value = extension.format({\n [PerMessageDeflate.extensionName]: [params]\n });\n headers.push(`Sec-WebSocket-Extensions: ${value}`);\n ws._extensions = extensions;\n }\n\n //\n // Allow external modification/inspection of handshake headers.\n //\n this.emit('headers', headers, req);\n\n socket.write(headers.concat('\\r\\n').join('\\r\\n'));\n socket.removeListener('error', socketOnError);\n\n ws.setSocket(socket, head, {\n allowSynchronousEvents: this.options.allowSynchronousEvents,\n maxPayload: this.options.maxPayload,\n skipUTF8Validation: this.options.skipUTF8Validation\n });\n\n if (this.clients) {\n this.clients.add(ws);\n ws.on('close', () => {\n this.clients.delete(ws);\n\n if (this._shouldEmitClose && !this.clients.size) {\n process.nextTick(emitClose, this);\n }\n });\n }\n\n cb(ws, req);\n }\n}\n\nmodule.exports = WebSocketServer;\n\n/**\n * Add event listeners on an `EventEmitter` using a map of <event, listener>\n * pairs.\n *\n * @param {EventEmitter} server The event emitter\n * @param {Object.<String, Function>} map The listeners to add\n * @return {Function} A function that will remove the added listeners when\n * called\n * @private\n */\nfunction addListeners(server, map) {\n for (const event of Object.keys(map)) server.on(event, map[event]);\n\n return function removeListeners() {\n for (const event of Object.keys(map)) {\n server.removeListener(event, map[event]);\n }\n };\n}\n\n/**\n * Emit a `'close'` event on an `EventEmitter`.\n *\n * @param {EventEmitter} server The event emitter\n * @private\n */\nfunction emitClose(server) {\n server._state = CLOSED;\n server.emit('close');\n}\n\n/**\n * Handle socket errors.\n *\n * @private\n */\nfunction socketOnError() {\n this.destroy();\n}\n\n/**\n * Close the connection when preconditions are not fulfilled.\n *\n * @param {Duplex} socket The socket of the upgrade request\n * @param {Number} code The HTTP response status code\n * @param {String} [message] The HTTP response body\n * @param {Object} [headers] Additional HTTP response headers\n * @private\n */\nfunction abortHandshake(socket, code, message, headers) {\n //\n // The socket is writable unless the user destroyed or ended it before calling\n // `server.handleUpgrade()` or in the `verifyClient` function, which is a user\n // error. Handling this does not make much sense as the worst that can happen\n // is that some of the data written by the user might be discarded due to the\n // call to `socket.end()` below, which triggers an `'error'` event that in\n // turn causes the socket to be destroyed.\n //\n message = message || http.STATUS_CODES[code];\n headers = {\n Connection: 'close',\n 'Content-Type': 'text/html',\n 'Content-Length': Buffer.byteLength(message),\n ...headers\n };\n\n socket.once('finish', socket.destroy);\n\n socket.end(\n `HTTP/1.1 ${code} ${http.STATUS_CODES[code]}\\r\\n` +\n Object.keys(headers)\n .map((h) => `${h}: ${headers[h]}`)\n .join('\\r\\n') +\n '\\r\\n\\r\\n' +\n message\n );\n}\n\n/**\n * Emit a `'wsClientError'` event on a `WebSocketServer` if there is at least\n * one listener for it, otherwise call `abortHandshake()`.\n *\n * @param {WebSocketServer} server The WebSocket server\n * @param {http.IncomingMessage} req The request object\n * @param {Duplex} socket The socket of the upgrade request\n * @param {Number} code The HTTP response status code\n * @param {String} message The HTTP response body\n * @param {Object} [headers] The HTTP response headers\n * @private\n */\nfunction abortHandshakeOrEmitwsClientError(\n server,\n req,\n socket,\n code,\n message,\n headers\n) {\n if (server.listenerCount('wsClientError')) {\n const err = new Error(message);\n Error.captureStackTrace(err, abortHandshakeOrEmitwsClientError);\n\n server.emit('wsClientError', err, socket, req);\n } else {\n abortHandshake(socket, code, message, headers);\n }\n}\n",null,null,null,null,null],"names":["styles","log","require$$0","bufferUtilModule","bufferUtil","require$$1","require$$2","require$$3","validationModule","require$$4","require$$5","require$$6","require$$8","require$$9","require$$10","require$$11","require$$12","require$$13","require$$14","require$$15","require$$7","baseLog"],"mappings":";;;;;;;;;;;;;;;;AAAA,MAAM,sBAAsB,GAAG,EAAE;;AAEjC,MAAM,UAAU,GAAG,CAAC,MAAM,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC;;AAErE,MAAM,WAAW,GAAG,CAAC,MAAM,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,GAAG,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;;AAE9E,MAAM,WAAW,GAAG,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,GAAG,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;;AAE5G,MAAMA,QAAM,GAAG;AACf,CAAC,QAAQ,EAAE;AACX,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AACf;AACA,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;AACf,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;AACd,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;AACjB,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;AACpB,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;AACpB,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;AAClB,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;AACjB,EAAE,aAAa,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;AACxB,EAAE;AACF,CAAC,KAAK,EAAE;AACR,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;AACjB,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;AACf,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;AACjB,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;AAClB,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;AAChB,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;AACnB,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;AAChB,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;;AAEjB;AACA,EAAE,WAAW,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;AACvB,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;AAChB,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;AAChB,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;AACrB,EAAE,WAAW,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;AACvB,EAAE,YAAY,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;AACxB,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;AACtB,EAAE,aAAa,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;AACzB,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;AACtB,EAAE,WAAW,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;AACvB,EAAE;AACF,CAAC,OAAO,EAAE;AACV,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;AACnB,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;AACjB,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;AACnB,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;AACpB,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;AAClB,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;AACrB,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;AAClB,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;;AAEnB;AACA,EAAE,aAAa,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC;AAC1B,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC;AACnB,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC;AACnB,EAAE,WAAW,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC;AACxB,EAAE,aAAa,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC;AAC1B,EAAE,cAAc,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC;AAC3B,EAAE,YAAY,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC;AACzB,EAAE,eAAe,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC;AAC5B,EAAE,YAAY,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC;AACzB,EAAE,aAAa,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC;AAC1B,EAAE;AACF,CAAC;;AAE4B,MAAM,CAAC,IAAI,CAACA,QAAM,CAAC,QAAQ;AACjD,MAAM,oBAAoB,GAAG,MAAM,CAAC,IAAI,CAACA,QAAM,CAAC,KAAK,CAAC;AACtD,MAAM,oBAAoB,GAAG,MAAM,CAAC,IAAI,CAACA,QAAM,CAAC,OAAO,CAAC;AACrC,CAAC,GAAG,oBAAoB,EAAE,GAAG,oBAAoB;;AAE3E,SAAS,cAAc,GAAG;AAC1B,CAAC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAE;;AAExB,CAAC,KAAK,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAACA,QAAM,CAAC,EAAE;AAC1D,EAAE,KAAK,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAC1D,GAAGA,QAAM,CAAC,SAAS,CAAC,GAAG;AACvB,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,IAAI,KAAK,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChC,IAAI;;AAEJ,GAAG,KAAK,CAAC,SAAS,CAAC,GAAGA,QAAM,CAAC,SAAS,CAAC;;AAEvC,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AAChC,EAAE;;AAEF,EAAE,MAAM,CAAC,cAAc,CAACA,QAAM,EAAE,SAAS,EAAE;AAC3C,GAAG,KAAK,EAAE,KAAK;AACf,GAAG,UAAU,EAAE,KAAK;AACpB,GAAG,CAAC;AACJ,CAAC;;AAED,CAAC,MAAM,CAAC,cAAc,CAACA,QAAM,EAAE,OAAO,EAAE;AACxC,EAAE,KAAK,EAAE,KAAK;AACd,EAAE,UAAU,EAAE,KAAK;AACnB,EAAE,CAAC;;AAEH,CAACA,QAAM,CAAC,KAAK,CAAC,KAAK,GAAG,YAAY;AAClC,CAACA,QAAM,CAAC,OAAO,CAAC,KAAK,GAAG,YAAY;;AAEpC,CAACA,QAAM,CAAC,KAAK,CAAC,IAAI,GAAG,UAAU,EAAE;AACjC,CAACA,QAAM,CAAC,KAAK,CAAC,OAAO,GAAG,WAAW,EAAE;AACrC,CAACA,QAAM,CAAC,KAAK,CAAC,OAAO,GAAG,WAAW,EAAE;AACrC,CAACA,QAAM,CAAC,OAAO,CAAC,IAAI,GAAG,UAAU,CAAC,sBAAsB,CAAC;AACzD,CAACA,QAAM,CAAC,OAAO,CAAC,OAAO,GAAG,WAAW,CAAC,sBAAsB,CAAC;AAC7D,CAACA,QAAM,CAAC,OAAO,CAAC,OAAO,GAAG,WAAW,CAAC,sBAAsB,CAAC;;AAE7D;AACA,CAAC,MAAM,CAAC,gBAAgB,CAACA,QAAM,EAAE;AACjC,EAAE,YAAY,EAAE;AAChB,GAAG,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE;AAC3B;AACA;AACA,IAAI,IAAI,GAAG,KAAK,KAAK,IAAI,KAAK,KAAK,IAAI,EAAE;AACzC,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE;AAClB,MAAM,OAAO,EAAE;AACf,KAAK;;AAEL,KAAK,IAAI,GAAG,GAAG,GAAG,EAAE;AACpB,MAAM,OAAO,GAAG;AAChB,KAAK;;AAEL,KAAK,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,IAAI,EAAE,CAAC,GAAG,GAAG;AACpD,IAAI;;AAEJ,IAAI,OAAO;AACX,QAAQ,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;AACtC,QAAQ,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,GAAG,CAAC,CAAC;AACvC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,GAAG,CAAC;AACJ,GAAG,UAAU,EAAE,KAAK;AACpB,GAAG;AACH,EAAE,QAAQ,EAAE;AACZ,GAAG,KAAK,CAAC,GAAG,EAAE;AACd,IAAI,MAAM,OAAO,GAAG,wBAAwB,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACnE,IAAI,IAAI,CAAC,OAAO,EAAE;AAClB,KAAK,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACrB,IAAI;;AAEJ,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,OAAO;;AAE/B,IAAI,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;AAClC,KAAK,WAAW,GAAG,CAAC,GAAG,WAAW,CAAC,CAAC,GAAG,CAAC,SAAS,IAAI,SAAS,GAAG,SAAS,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;AACpF,IAAI;;AAEJ,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC;;AAEpD,IAAI,OAAO;AACX;AACA,KAAK,CAAC,OAAO,IAAI,EAAE,IAAI,IAAI;AAC3B,KAAK,CAAC,OAAO,IAAI,CAAC,IAAI,IAAI;AAC1B,KAAK,OAAO,GAAG,IAAI;AACnB;AACA,KAAK;AACL,GAAG,CAAC;AACJ,GAAG,UAAU,EAAE,KAAK;AACpB,GAAG;AACH,EAAE,YAAY,EAAE;AAChB,GAAG,KAAK,EAAE,GAAG,IAAIA,QAAM,CAAC,YAAY,CAAC,GAAGA,QAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAC7D,GAAG,UAAU,EAAE,KAAK;AACpB,GAAG;AACH,EAAE,aAAa,EAAE;AACjB,GAAG,KAAK,CAAC,IAAI,EAAE;AACf,IAAI,IAAI,IAAI,GAAG,CAAC,EAAE;AAClB,KAAK,OAAO,EAAE,GAAG,IAAI;AACrB,IAAI;;AAEJ,IAAI,IAAI,IAAI,GAAG,EAAE,EAAE;AACnB,KAAK,OAAO,EAAE,IAAI,IAAI,GAAG,CAAC,CAAC;AAC3B,IAAI;;AAEJ,IAAI,IAAI,GAAG;AACX,IAAI,IAAI,KAAK;AACb,IAAI,IAAI,IAAI;;AAEZ,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE;AACrB,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,GAAG,IAAI,EAAE,IAAI,CAAC,IAAI,GAAG;AAC1C,KAAK,KAAK,GAAG,GAAG;AAChB,KAAK,IAAI,GAAG,GAAG;AACf,IAAI,CAAC,MAAM;AACX,KAAK,IAAI,IAAI,EAAE;;AAEf,KAAK,MAAM,SAAS,GAAG,IAAI,GAAG,EAAE;;AAEhC,KAAK,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE,CAAC,GAAG,CAAC;AACpC,KAAK,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC;AAC1C,KAAK,IAAI,GAAG,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC;AAC/B,IAAI;;AAEJ,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC;;AAEhD,IAAI,IAAI,KAAK,KAAK,CAAC,EAAE;AACrB,KAAK,OAAO,EAAE;AACd,IAAI;;AAEJ;AACA,IAAI,IAAI,MAAM,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;;AAE5F,IAAI,IAAI,KAAK,KAAK,CAAC,EAAE;AACrB,KAAK,MAAM,IAAI,EAAE;AACjB,IAAI;;AAEJ,IAAI,OAAO,MAAM;AACjB,GAAG,CAAC;AACJ,GAAG,UAAU,EAAE,KAAK;AACpB,GAAG;AACH,EAAE,SAAS,EAAE;AACb,GAAG,KAAK,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,KAAKA,QAAM,CAAC,aAAa,CAACA,QAAM,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AAC3F,GAAG,UAAU,EAAE,KAAK;AACpB,GAAG;AACH,EAAE,SAAS,EAAE;AACb,GAAG,KAAK,EAAE,GAAG,IAAIA,QAAM,CAAC,aAAa,CAACA,QAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;AAC/D,GAAG,UAAU,EAAE,KAAK;AACpB,GAAG;AACH,EAAE,CAAC;;AAEH,CAAC,OAAOA,QAAM;AACd;;AAEA,MAAM,UAAU,GAAG,cAAc,EAAE;;AC5NnC;;AAEA,MAAM,KAAK,GAAG,CAAC,MAAM;AACrB,CAAC,IAAI,EAAE,WAAW,IAAI,UAAU,CAAC,EAAE;AACnC,EAAE,OAAO,CAAC;AACV,CAAC;;AAED,CAAC,IAAI,UAAU,CAAC,SAAS,CAAC,aAAa,EAAE;AACzC,EAAE,MAAM,KAAK,GAAG,SAAS,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,KAAK,KAAK,UAAU,CAAC;AACtF,EAAE,IAAI,KAAK,IAAI,KAAK,CAAC,OAAO,GAAG,EAAE,EAAE;AACnC,GAAG,OAAO,CAAC;AACX,EAAE;AACF,CAAC;;AAED,CAAC,IAAI,uBAAuB,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE;AACnE,EAAE,OAAO,CAAC;AACV,CAAC;;AAED,CAAC,OAAO,CAAC;AACT,CAAC,GAAG;;AAEJ,MAAM,YAAY,GAAG,KAAK,KAAK,CAAC,IAAI;AACpC,CAAC,KAID,CAAC;;AAED,MAAM,aAAa,GAAG;AACtB,CAAC,MAAM,EAAE,YAAY;AACrB,CAAC,MAAM,EAAE,YAAY;AACrB,CAAC;;AC/BD;AACO,SAAS,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE;AAC9D,CAAC,IAAI,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC;AACtC,CAAC,IAAI,KAAK,KAAK,EAAE,EAAE;AACnB,EAAE,OAAO,MAAM;AACf,CAAC;;AAED,CAAC,MAAM,eAAe,GAAG,SAAS,CAAC,MAAM;AACzC,CAAC,IAAI,QAAQ,GAAG,CAAC;AACjB,CAAC,IAAI,WAAW,GAAG,EAAE;AACrB,CAAC,GAAG;AACJ,EAAE,WAAW,IAAI,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,SAAS,GAAG,QAAQ;AACrE,EAAE,QAAQ,GAAG,KAAK,GAAG,eAAe;AACpC,EAAE,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,QAAQ,CAAC;AAC7C,CAAC,CAAC,QAAQ,KAAK,KAAK,EAAE;;AAEtB,CAAC,WAAW,IAAI,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC;AACtC,CAAC,OAAO,WAAW;AACnB;;AAEO,SAAS,8BAA8B,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE;AAC/E,CAAC,IAAI,QAAQ,GAAG,CAAC;AACjB,CAAC,IAAI,WAAW,GAAG,EAAE;AACrB,CAAC,GAAG;AACJ,EAAE,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,IAAI;AAC1C,EAAE,WAAW,IAAI,MAAM,CAAC,KAAK,CAAC,QAAQ,GAAG,KAAK,GAAG,KAAK,GAAG,CAAC,GAAG,KAAK,EAAE,GAAG,MAAM,IAAI,KAAK,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,OAAO;AACjH,EAAE,QAAQ,GAAG,KAAK,GAAG,CAAC;AACtB,EAAE,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;AACxC,CAAC,CAAC,QAAQ,KAAK,KAAK,EAAE;;AAEtB,CAAC,WAAW,IAAI,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC;AACtC,CAAC,OAAO,WAAW;AACnB;;ACzBA,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,CAAC,GAAG,aAAa;;AAEhE,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC;AACrC,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC/B,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC;;AAEnC;AACA,MAAM,YAAY,GAAG;AACrB,CAAC,MAAM;AACP,CAAC,MAAM;AACP,CAAC,SAAS;AACV,CAAC,SAAS;AACV,CAAC;;AAED,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;;AAElC,MAAM,YAAY,GAAG,CAAC,MAAM,EAAE,OAAO,GAAG,EAAE,KAAK;AAC/C,CAAC,IAAI,OAAO,CAAC,KAAK,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,KAAK,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,EAAE;AACtG,EAAE,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC;AACxE,CAAC;;AAED;AACA,CAAC,MAAM,UAAU,GAAG,WAAW,GAAG,WAAW,CAAC,KAAK,GAAG,CAAC;AACvD,CAAC,MAAM,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,KAAK,SAAS,GAAG,UAAU,GAAG,OAAO,CAAC,KAAK;AACxE,CAAC;;AASD,MAAM,YAAY,GAAG,OAAO,IAAI;AAChC,CAAC,MAAM,KAAK,GAAG,CAAC,GAAG,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;AAChD,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC;;AAE7B,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,WAAW,CAAC,SAAS,CAAC;;AAEpD,CAAC,OAAO,KAAK;AACb,CAAC;;AAED,SAAS,WAAW,CAAC,OAAO,EAAE;AAC9B,CAAC,OAAO,YAAY,CAAC,OAAO,CAAC;AAC7B;;AAEA,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC,SAAS,EAAE,QAAQ,CAAC,SAAS,CAAC;;AAEhE,KAAK,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;AAC7D,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG;AACrB,EAAE,GAAG,GAAG;AACR,GAAG,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,EAAE,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC3G,GAAG,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAC3D,GAAG,OAAO,OAAO;AACjB,EAAE,CAAC;AACH,EAAE;AACF;;AAEA,MAAM,CAAC,OAAO,GAAG;AACjB,CAAC,GAAG,GAAG;AACP,EAAE,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC;AACzD,EAAE,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAC1D,EAAE,OAAO,OAAO;AAChB,CAAC,CAAC;AACF,CAAC;;AAED,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,UAAU,KAAK;AAC5D,CAAC,IAAI,KAAK,KAAK,KAAK,EAAE;AACtB,EAAE,IAAI,KAAK,KAAK,SAAS,EAAE;AAC3B,GAAG,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,UAAU,CAAC;AACjD,EAAE;;AAEF,EAAE,IAAI,KAAK,KAAK,SAAS,EAAE;AAC3B,GAAG,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,GAAG,UAAU,CAAC,CAAC;AAC1E,EAAE;;AAEF,EAAE,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,UAAU,CAAC,CAAC;AACnE,CAAC;;AAED,CAAC,IAAI,KAAK,KAAK,KAAK,EAAE;AACtB,EAAE,OAAO,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,UAAU,CAAC,QAAQ,CAAC,GAAG,UAAU,CAAC,CAAC;AAChF,CAAC;;AAED,CAAC,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,UAAU,CAAC;AAC9C,CAAC;;AAED,MAAM,UAAU,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC;;AAE5C,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE;AAChC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG;AACjB,EAAE,GAAG,GAAG;AACR,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI;AACvB,GAAG,OAAO,UAAU,GAAG,UAAU,EAAE;AACnC,IAAI,MAAM,MAAM,GAAG,YAAY,CAAC,YAAY,CAAC,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,GAAG,UAAU,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AACvI,IAAI,OAAO,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;AACtD,GAAG,CAAC;AACJ,EAAE,CAAC;AACH,EAAE;;AAEF,CAAC,MAAM,OAAO,GAAG,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AAC/D,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG;AACnB,EAAE,GAAG,GAAG;AACR,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI;AACvB,GAAG,OAAO,UAAU,GAAG,UAAU,EAAE;AACnC,IAAI,MAAM,MAAM,GAAG,YAAY,CAAC,YAAY,CAAC,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,GAAG,UAAU,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AAC3I,IAAI,OAAO,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;AACtD,GAAG,CAAC;AACJ,EAAE,CAAC;AACH,EAAE;AACF;;AAEA,MAAM,KAAK,GAAG,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAAE;AAChD,CAAC,GAAG,MAAM;AACV,CAAC,KAAK,EAAE;AACR,EAAE,UAAU,EAAE,IAAI;AAClB,EAAE,GAAG,GAAG;AACR,GAAG,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK;AAC/B,EAAE,CAAC;AACH,EAAE,GAAG,CAAC,KAAK,EAAE;AACb,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,GAAG,KAAK;AAChC,EAAE,CAAC;AACH,EAAE;AACF,CAAC,CAAC;;AAEF,MAAM,YAAY,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,KAAK;AAC9C,CAAC,IAAI,OAAO;AACZ,CAAC,IAAI,QAAQ;AACb,CAAC,IAAI,MAAM,KAAK,SAAS,EAAE;AAC3B,EAAE,OAAO,GAAG,IAAI;AAChB,EAAE,QAAQ,GAAG,KAAK;AAClB,CAAC,CAAC,MAAM;AACR,EAAE,OAAO,GAAG,MAAM,CAAC,OAAO,GAAG,IAAI;AACjC,EAAE,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC,QAAQ;AACpC,CAAC;;AAED,CAAC,OAAO;AACR,EAAE,IAAI;AACN,EAAE,KAAK;AACP,EAAE,OAAO;AACT,EAAE,QAAQ;AACV,EAAE,MAAM;AACR,EAAE;AACF,CAAC;;AAED,MAAM,aAAa,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,KAAK;AACnD;AACA;AACA,CAAC,MAAM,OAAO,GAAG,CAAC,GAAG,UAAU,KAAK,UAAU,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,KAAK,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;;AAEhI;AACA;AACA,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC;;AAEtC,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,IAAI;AAC1B,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,OAAO;AAC1B,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,QAAQ;;AAE7B,CAAC,OAAO,OAAO;AACf,CAAC;;AAED,MAAM,UAAU,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK;AACrC,CAAC,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AACjC,EAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,MAAM;AACrC,CAAC;;AAED,CAAC,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;;AAE1B,CAAC,IAAI,MAAM,KAAK,SAAS,EAAE;AAC3B,EAAE,OAAO,MAAM;AACf,CAAC;;AAED,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,MAAM;AACnC,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;AAChC,EAAE,OAAO,MAAM,KAAK,SAAS,EAAE;AAC/B;AACA;AACA;AACA,GAAG,MAAM,GAAG,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC;;AAE/D,GAAG,MAAM,GAAG,MAAM,CAAC,MAAM;AACzB,EAAE;AACF,CAAC;;AAED;AACA;AACA;AACA,CAAC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;AACrC,CAAC,IAAI,OAAO,KAAK,EAAE,EAAE;AACrB,EAAE,MAAM,GAAG,8BAA8B,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC;AAC7E,CAAC;;AAED,CAAC,OAAO,OAAO,GAAG,MAAM,GAAG,QAAQ;AACnC,CAAC;;AAED,MAAM,CAAC,gBAAgB,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,CAAC;;AAEtD,MAAM,KAAK,GAAG,WAAW,EAAE;AACA,WAAW,CAAC,CAAC,KAAK,EAAE,WAAW,GAAG,WAAW,CAAC,KAAK,GAAG,CAAC,CAAC;;MCtMtE,cAAc,CAAA;IACjB,OAAO,QAAQ;IACf,UAAU,GAAW,EAAE;AAE/B,IAAA,WAAA,GAAA,EAAuB;AAEhB,IAAA,OAAO,WAAW,GAAA;AACvB,QAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE;AAC5B,YAAA,cAAc,CAAC,QAAQ,GAAG,IAAI,cAAc,EAAE;QAChD;QACA,OAAO,cAAc,CAAC,QAAQ;IAChC;AAEO,IAAA,SAAS,CAAC,MAAc,EAAA;AAC7B,QAAA,IAAI,CAAC,UAAU,GAAG,MAAM;IAC1B;AAEA;;AAEG;IACI,GAAG,CAAC,OAAe,EAAE,OAAoB,EAAA;;AAE9C,QAAA,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;AAC5B,QAAA,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;;AAG3B,QAAA,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE;AACvB,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE;AAC7C,YAAA,QAAQ,EAAE,kBAAkB;AAC7B,SAAA,CAAC;AACF,QAAA,MAAM,OAAO,GAAG,OAAO,EAAE,OAAO;AAChC,QAAA,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM;;QAG9B,IAAI,UAAU,GAAG,CAAA,CAAA,EAAI,SAAS,IAAI,OAAO,EAAE,MAAM,GAAG,CAAA,EAAA,EAAK,OAAO,CAAC,MAAM,CAAA,EAAA,CAAI,GAAG,EAAE,CAAA,EAAG,OAAO,GAAG,CAAA,EAAA,EAAK,OAAO,CAAA,EAAA,CAAI,GAAG,EAAE,CAAA,EAAG,MAAM,GAAG,CAAA,EAAA,EAAK,MAAM,IAAI,GAAG,EAAE,CAAA,EAAG,OAAO,CAAA,CAAE;;AAG9J,QAAA,IAAI,OAAO,EAAE,IAAI,KAAK,OAAO,EAAE;AAC7B,YAAA,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC;QACpC;AAAO,aAAA,IAAI,OAAO,EAAE,IAAI,KAAK,MAAM,EAAE;AACnC,YAAA,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC;QACvC;;QAGA,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC;;QAGvC,IAAI,MAAM,EAAE;;YAEV,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC;QACxD;AAAO,aAAA,IAAI,OAAO,EAAE,SAAS,EAAE;;YAE7B,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC;QACjD;;QAGA,IAAI,CAAC,WAAW,EAAE;IACpB;AAEA;;AAEG;AACK,IAAA,cAAc,CACpB,MAAc,EACd,IAAU,EACV,UAAkB,EAClB,OAAoB,EAAA;AAEpB,QAAA,IAAI;;YAEF,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;gBAC1B,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;YAC3C;;AAGA,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE;AAC/B,YAAA,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;AAC1D,YAAA,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;;YAGnD,MAAM,QAAQ,GAAG,CAAA,EAAG,MAAM,CAAA,CAAA,EAAI,IAAI,CAAA,CAAA,EAAI,KAAK,CAAA,CAAA,EAAI,GAAG,CAAA,IAAA,CAAM;YACxD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC;;YAG5C,MAAM,eAAe,GAAG,UAAU,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC;;YAG7D,EAAE,CAAC,cAAc,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI,CAAC;QACrD;QAAE,OAAO,KAAK,EAAE;;YAEd,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA,kCAAA,EAAqC,KAAK,CAAA,EAAA,CAAI,CAAC;QACtE;IACF;AAEA;;AAEG;AACK,IAAA,eAAe,CACrB,IAAU,EACV,UAAkB,EAClB,OAAoB,EAAA;AAEpB,QAAA,IAAI;;YAEF,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;gBAC1B,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;YAC3C;;AAGA,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE;AAC/B,YAAA,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;AAC1D,YAAA,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;;AAGnD,YAAA,MAAM,MAAM,GACV,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,QAAQ;YACjE,MAAM,QAAQ,GAAG,CAAA,EAAG,MAAM,CAAA,CAAA,EAAI,IAAI,CAAA,CAAA,EAAI,KAAK,CAAA,CAAA,EAAI,GAAG,CAAA,IAAA,CAAM;YACxD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC;;YAG5C,MAAM,eAAe,GAAG,UAAU,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC;;YAG7D,EAAE,CAAC,cAAc,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI,CAAC;QACrD;QAAE,OAAO,KAAK,EAAE;;YAEd,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA,mCAAA,EAAsC,KAAK,CAAA,EAAA,CAAI,CAAC;QACvE;IACF;IAEQ,WAAW,GAAA;QACjB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC;IACvC;IAEO,WAAW,GAAA;AAChB,QAAA,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;AAC5B,QAAA,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7B;IAEO,aAAa,GAAA;QAClB,IAAI,CAAC,WAAW,EAAE;IACpB;AACD;;ACjJD;;;;;;;;AAQG;AACG,SAAUC,KAAG,CACjB,OAAe,EACf,OAAA,GAAsB,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,EAAA;AAExD,IAAA,MAAM,cAAc,GAAG,cAAc,CAAC,WAAW,EAAE;AACnD,IAAA,cAAc,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC;AACtC;;AClBA;;;;;;;;;;;;AAYG;AAOH;;;AAGG;AACI,MAAM,WAAW,GAAG;AACzB,IAAA,KAAK,EAAE,qCAAqC;AAC5C,IAAA,IAAI,EAAE,+BAA+B;CAC7B;AAEV;;AAEG;AACG,SAAU,gBAAgB,CAAC,WAAwB,EAAA;AACvD,IAAA,OAAO,WAAW,CAAC,WAAW,CAAC;AACjC;AAEA;;AAEG;AACI,MAAM,eAAe,GAAG;;AAE7B,IAAA,MAAM,EAAE,gCAAgC;IAGxC;AACA,IAAA,OAAO,EAAE,sCAGD;AAEV;;AAEG;AACI,MAAM,iBAAiB,GAAG;IAM/B;AACA,IAAA,MAAM,EAAE;AACN,QAAA,UAAU,EAAE,yCAAyC;AACrD,QAAA,IAAI,EAAE,0CAA0C;AACjD,KAAA;;AAED,IAAA,OAAO,EAAE;AACP,QAAA,UAAU,EAAE,kDAAkD;AAC9D,QAAA,OAAO,EAAE,0DAA0D;AACpE,KAAA;;AAED,IAAA,MAAM,EAAE;AACN,QAAA,UAAU,EAAE,oDAAoD;AAChE,QAAA,OAAO,EAAE,4DAA4D;AACtE,KAAA;CACO;AASV;;AAEG;AACG,SAAU,iBAAiB,CAC/B,IAAA,GAA8B,YAAY,EAAA;AAE1C,IAAA,OAAO,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC;AACvC;AAEA;;AAEG;AACG,SAAU,mBAAmB,CACjC,IAAA,GAAiC,YAAY,EAAA;AAE7C,IAAA,OAAO,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC;AACxC;AAEA;;AAEG;AACG,SAAU,kBAAkB,CAChC,IAAA,GAAiC,YAAY,EAAA;AAE7C,IAAA,OAAO,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC;AACvC;;AC3GA;AA6BO,MAAM,cAAc,GAAmB;AAC5C,IAAA,IAAI,EAAE;AACJ,QAAA,gBAAgB,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;AACxC,QAAA,6BAA6B,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;AACrD,QAAA,uBAAuB,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;AAC/C,QAAA,aAAa,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;AACrC,QAAA,cAAc,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;AACtC,QAAA,sCAAsC,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;AAC9D,QAAA,kBAAkB,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;AAC1C,QAAA,WAAW,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;AACnC,QAAA,kBAAkB,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;AAC1C,QAAA,eAAe,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;AACxC,KAAA;AACD,IAAA,IAAI,EAAE;AACJ,QAAA,gBAAgB,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;AACxC,QAAA,2BAA2B,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;AACnD,QAAA,6BAA6B,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;AACrD,QAAA,uBAAuB,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;AAC/C,QAAA,aAAa,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;AACrC,QAAA,cAAc,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;AACtC,QAAA,sCAAsC,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;AAC9D,QAAA,kBAAkB,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;AAC1C,QAAA,WAAW,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;AACnC,QAAA,kBAAkB,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;AAC1C,QAAA,eAAe,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;AACxC,KAAA;AACD,IAAA,IAAI,EAAE;AACJ,QAAA,gBAAgB,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;AACxC,QAAA,6BAA6B,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;AACrD,QAAA,uBAAuB,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;AAC/C,QAAA,aAAa,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;AACrC,QAAA,cAAc,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;AACtC,QAAA,sCAAsC,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;AAC9D,QAAA,kBAAkB,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;AAC1C,QAAA,WAAW,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;AACnC,QAAA,kBAAkB,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;AAC1C,QAAA,eAAe,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;AACxC,KAAA;AACD,IAAA,IAAI,EAAE;AACJ,QAAA,gBAAgB,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;AACxC,QAAA,6BAA6B,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;AACrD,QAAA,uBAAuB,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;AAC/C,QAAA,aAAa,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;AACrC,QAAA,cAAc,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;AACtC,QAAA,sCAAsC,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;AAC9D,QAAA,kBAAkB,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;AAC1C,QAAA,WAAW,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;AACnC,QAAA,kBAAkB,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;AAC1C,QAAA,eAAe,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;AACxC,KAAA;CACF;AAEM,MAAM,iBAAiB,GAAsB;AAClD,IAAA,IAAI,EAAE;AACJ,QAAA,YAAY,EAAE;AACZ,YAAA,IAAI,EAAE,YAAY;AAClB,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,WAAW,EAAE,OAAO;AACpB,YAAA,KAAK,EACH,uOAAuO;AAC1O,SAAA;AACD,QAAA,YAAY,EAAE;AACZ,YAAA,IAAI,EAAE,YAAY;AAClB,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,WAAW,EAAE,OAAO;AACpB,YAAA,KAAK,EACH,yOAAyO;AAC5O,SAAA;AACD,QAAA,YAAY,EAAE;AACZ,YAAA,IAAI,EAAE,YAAY;AAClB,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,WAAW,EAAE,OAAO;AACpB,YAAA,KAAK,EACH,0OAA0O;AAC7O,SAAA;AACF,KAAA;AACD,IAAA,IAAI,EAAE;AACJ,QAAA,YAAY,EAAE;AACZ,YAAA,IAAI,EAAE,YAAY;AAClB,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,WAAW,EAAE,OAAO;AACpB,YAAA,KAAK,EACH,sOAAsO;AACzO,SAAA;AACD,QAAA,YAAY,EAAE;AACZ,YAAA,IAAI,EAAE,YAAY;AAClB,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,WAAW,EAAE,OAAO;AACpB,YAAA,KAAK,EACH,yOAAyO;AAC5O,SAAA;AACD,QAAA,YAAY,EAAE;AACZ,YAAA,IAAI,EAAE,YAAY;AAClB,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,WAAW,EAAE,OAAO;AACpB,YAAA,KAAK,EACH,4OAA4O;AAC/O,SAAA;AACF,KAAA;AACD,IAAA,IAAI,EAAE;AACJ,QAAA,YAAY,EAAE;AACZ,YAAA,IAAI,EAAE,YAAY;AAClB,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,WAAW,EAAE,OAAO;AACpB,YAAA,KAAK,EACH,uOAAuO;AAC1O,SAAA;AACD,QAAA,YAAY,EAAE;AACZ,YAAA,IAAI,EAAE,YAAY;AAClB,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,WAAW,EAAE,OAAO;AACpB,YAAA,KAAK,EACH,yOAAyO;AAC5O,SAAA;AACD,QAAA,YAAY,EAAE;AACZ,YAAA,IAAI,EAAE,YAAY;AAClB,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,WAAW,EAAE,OAAO;AACpB,YAAA,KAAK,EACH,2OAA2O;AAC9O,SAAA;AACF,KAAA;AACD,IAAA,IAAI,EAAE;AACJ,QAAA,YAAY,EAAE;AACZ,YAAA,IAAI,EAAE,YAAY;AAClB,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,WAAW,EAAE,OAAO;AACpB,YAAA,KAAK,EACH,uOAAuO;AAC1O,SAAA;AACF,KAAA;CACF;;AChKD;AA0BA;;;;;;;AAOG;AACI,MAAM,YAAY,GAAsB;AAC7C,IAAA,QAAQ,EAAE,kBAAkB;AAC5B,IAgBA,OAAO,EAAE;AACP,QAAA,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,EAAgB,CAAE;AAC5C,QAAA,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,CAAe,CAAE;AAC3C,KAAA;AACD,IAAA,QAAQ,EAAE;AACR,QAAA,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAe,CAAE;AAC3C,QAAA,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,CAAgB,CAAE;AAC5C,KAAA;CACF;AAED;;AAEG;MACU,cAAc,CAAA;AACjB,IAAA,QAAQ;AACR,IAAA,iBAAiB;AAEzB;;;;AAIG;AACH,IAAA,WAAA,CACE,WAAmB,YAAY,CAAC,QAAQ,EACxC,oBAAuC,cAAc,EAAA;AAErD,QAAA,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC;AAC/B,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;AACxB,QAAA,IAAI,CAAC,iBAAiB,GAAG,iBAAiB;IAC5C;AAEA;;;;;AAKG;AACK,IAAA,gBAAgB,CAAC,QAAgB,EAAA;AACvC,QAAA,IAAI;YACF,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;QACxD;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,MAAM,IAAI,KAAK,CAAC,qBAAqB,QAAQ,CAAA,CAAE,CAAC;QAClD;IACF;AAEQ,IAAA,UAAU,CAChB,IAAU,EACV,YAAA,GAA6B,KAAK,EAAA;QAElC,QAAQ,YAAY;AAClB,YAAA,KAAK,cAAc;gBACjB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC;AAC1C,YAAA,KAAK,SAAS;AACZ,gBAAA,OAAO,IAAI,CAAC,OAAO,EAAE;AACvB,YAAA,KAAK,KAAK;AACV,YAAA;;gBAEE,OAAO,gBAAgB,CACrB,IAAI,EACJ,IAAI,CAAC,QAAQ,EACb,0BAA0B,CAC3B;;IAEP;AAEA;;;;;AAKG;AACK,IAAA,cAAc,CAAC,MAAY,EAAA;AACjC,QAAA,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE;AAC3B,QAAA,OAAO,GAAG,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC;IAC/B;AAEA;;;;;AAKG;AACK,IAAA,cAAc,CAAC,MAAY,EAAA;QACjC,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC;QAClD,MAAM,YAAY,GAAG,cAAc,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;AAEzD,QAAA,KAAK,MAAM,OAAO,IAAI,YAAY,EAAE;YAClC,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,aAAa,EAAE;AAChD,gBAAA,OAAO,IAAI;YACb;QACF;AACA,QAAA,OAAO,KAAK;IACd;AAEA;;;;;AAKG;AACK,IAAA,oBAAoB,CAAC,MAAY,EAAA;QACvC,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC;QAClD,MAAM,eAAe,GAAG,iBAAiB,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;QAC/D,OAAO,eAAe,IAAI,eAAe,CAAC,aAAa,CAAC,KAAK,SAAS;IACxE;AAEA;;;;;AAKG;AACK,IAAA,sBAAsB,CAAC,MAAY,EAAA;QACzC,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC;QAClD,MAAM,eAAe,GAAG,iBAAiB,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;AAE/D,QAAA,IAAI,eAAe,IAAI,eAAe,CAAC,aAAa,CAAC,EAAE;YACrD,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,eAAe,CAAC,aAAa,CAAC,CAAC;iBACrD,KAAK,CAAC,GAAG;iBACT,GAAG,CAAC,MAAM,CAAC;AACd,YAAA,OAAO,KAAK,GAAG,EAAE,GAAG,OAAO;QAC7B;AACA,QAAA,OAAO,IAAI;IACb;AAEA;;;;;AAKG;AACK,IAAA,gBAAgB,CAAC,MAAY,EAAA;AACnC,QAAA,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;IACrE;AAEA;;;;;AAKG;AACI,IAAA,eAAe,CAAC,IAAU,EAAA;QAC/B,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC;AAC/C,QAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC;IAC1C;AAEA;;;;;AAKG;AACI,IAAA,iBAAiB,CAAC,IAAU,EAAA;QACjC,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC;AAC/C,QAAA,OAAO,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC;IAC5C;AAEA;;;;;AAKG;AACI,IAAA,WAAW,CAAC,IAAU,EAAA;QAC3B,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC;AAC/C,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;IACtC;AAEA;;;;;AAKG;AACI,IAAA,mBAAmB,CAAC,IAAU,EAAA;QACnC,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC;AAC/C,QAAA,OAAO,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC;IAC9C;AAEA;;;;;AAKG;AACK,IAAA,wBAAwB,CAAC,MAAY,EAAA;;AAE3C,QAAA,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE;AAC9D,YAAA,OAAO,KAAK;QACd;AAEA,QAAA,MAAM,aAAa,GAAG,MAAM,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC,UAAU,EAAE;;AAGlE,QAAA,IAAI,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,EAAE;YACrC,MAAM,iBAAiB,GAAG,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC;YAC7D,IAAI,iBAAiB,KAAK,IAAI,IAAI,aAAa,GAAG,iBAAiB,EAAE;AACnE,gBAAA,OAAO,KAAK;YACd;QACF;;AAGA,QAAA,IAAI,QAAiB;AACrB,QAAA,QAAQ,IAAI,CAAC,iBAAiB;YAC5B,KAAK,gBAAgB,EAAE;gBACrB,MAAM,oBAAoB,GACxB,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE;AACrC,oBAAA,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM;gBACpC,MAAM,kBAAkB,GACtB,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE;AACnC,oBAAA,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM;;AAGlC,gBAAA,MAAM,cAAc,GAClB,aAAa,GAAG;sBACZ,GAAG,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;sBACvB,MAAM;AAEZ,gBAAA,MAAM,qBAAqB,GACzB,cAAc,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,cAAc,CAAC,UAAU,EAAE;gBAE9D,QAAQ;AACN,oBAAA,qBAAqB,IAAI,oBAAoB;wBAC7C,qBAAqB,IAAI,kBAAkB;gBAC7C;YACF;AACA,YAAA,KAAK,YAAY;gBACf,QAAQ,GAAG,IAAI;gBACf;YACF,SAAS;;gBAEP,MAAM,mBAAmB,GACvB,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE;AACpC,oBAAA,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM;AACnC,gBAAA,MAAM,iBAAiB,GACrB,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM;gBACtE,QAAQ;AACN,oBAAA,aAAa,IAAI,mBAAmB;wBACpC,aAAa,IAAI,iBAAiB;gBACpC;YACF;;AAEF,QAAA,OAAO,QAAQ;IACjB;AAEA;;;;;AAKG;AACK,IAAA,wBAAwB,CAAC,MAAY,EAAA;AAC3C,QAAA,MAAM,aAAa,GAAG,MAAM,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC,UAAU,EAAE;AAClE,QAAA,MAAM,YAAY,GAChB,IAAI,CAAC,iBAAiB,KAAK;cACvB,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE;AACrC,gBAAA,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC;cAC5B,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE;AACpC,gBAAA,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM;QAEvC,OAAO,aAAa,GAAG,YAAY;IACrC;AAEA;;;;AAIG;AACI,IAAA,kBAAkB,CAAC,WAAA,GAAoB,IAAI,IAAI,EAAE,EAAA;QACtD,MAAM,KAAK,GAAG,WAAW,CAAC,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC;QAErD,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;AAErD,QAAA,MAAM,cAAc,GAAG,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC,UAAU,EAAE;AACjE,QAAA,MAAM,iBAAiB,GACrB,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE,GAAG,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM;AAE1E,QAAA,IAAI,gBAAgB,IAAI,cAAc,IAAI,iBAAiB,EAAE;;AAE3D,YAAA,OAAO,KAAK;QACd;aAAO;;AAEL,YAAA,IAAI,eAAe,GAAG,GAAG,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;YAC7C,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,EAAE;gBAC9C,eAAe,GAAG,GAAG,CAAC,eAAe,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;YACrD;AACA,YAAA,OAAO,eAAe;QACxB;IACF;AAEQ,IAAA,gBAAgB,CAAC,IAAU,EAAA;AACjC,QAAA,IAAI,WAAW,GAAG,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QACxC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,EAAE;YAC1C,WAAW,GAAG,GAAG,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QAC7C;AACA,QAAA,OAAO,WAAW;IACpB;AAEO,IAAA,sBAAsB,CAAC,WAAA,GAAoB,IAAI,IAAI,EAAE,EAAA;QAC1D,MAAM,KAAK,GAAG,WAAW,CAAC,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC;;;AAIrD,QAAA,IAAI,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE;AAChC,YAAA,MAAM,aAAa,GAAG,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC,UAAU,EAAE;AAChE,YAAA,MAAM,kBAAkB,GACtB,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM;;AAGxE,YAAA,IAAI,aAAa,IAAI,kBAAkB,EAAE;;AAEvC,gBAAA,OAAO,aAAa,CAClB,GAAG,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC,EACjE,IAAI,CAAC,QAAQ,CACd;YACH;QACF;;;QAIA,IAAI,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;;AAG/C,QAAA,OAAO,aAAa,CAClB,GAAG,CAAC,YAAY,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC,EACxE,IAAI,CAAC,QAAQ,CACd;IACH;AAEA;;;;;;;;AAQG;AACH;;;;AAIG;AACK,IAAA,qBAAqB,CAAC,MAAY,EAAA;AACxC,QAAA,IAAI,WAAW,GAAG,GAAG,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QAC1C,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,EAAE;YAC1C,WAAW,GAAG,GAAG,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QAC7C;AACA,QAAA,OAAO,WAAW;IACpB;AAEA;;;;;AAKG;AACI,IAAA,gBAAgB,CAAC,IAAU,EAAA;QAChC,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC;AAC/C,QAAA,OAAO,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC;IAC3C;AAEQ,IAAA,gBAAgB,CAAC,IAAU,EAAA;AACjC,QAAA,IAAI,KAAW;AACf,QAAA,IAAI,GAAS;AAEb,QAAA,QAAQ,IAAI,CAAC,iBAAiB;YAC5B,KAAK,gBAAgB,EAAE;AACrB,gBAAA,KAAK,GAAG,GAAG,CAAC,IAAI,EAAE;AAChB,oBAAA,KAAK,EAAE,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI;AACvC,oBAAA,OAAO,EAAE,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM;AAC3C,oBAAA,OAAO,EAAE,CAAC;AACV,oBAAA,YAAY,EAAE,CAAC;AAChB,iBAAA,CAAC;AACF,gBAAA,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE;AACd,oBAAA,KAAK,EAAE,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI;AACrC,oBAAA,OAAO,EAAE,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM;AACzC,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,YAAY,EAAE,GAAG;AAClB,iBAAA,CAAC;gBACF;YACF;YACA,KAAK,YAAY,EAAE;AACjB,gBAAA,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC;AACxB,gBAAA,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC;gBACpB;YACF;YACA,SAAS;;AAEP,gBAAA,KAAK,GAAG,GAAG,CAAC,IAAI,EAAE;AAChB,oBAAA,KAAK,EAAE,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI;AACtC,oBAAA,OAAO,EAAE,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM;AAC1C,oBAAA,OAAO,EAAE,CAAC;AACV,oBAAA,YAAY,EAAE,CAAC;AAChB,iBAAA,CAAC;;AAGF,gBAAA,IAAI,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE;oBACnC,MAAM,iBAAiB,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC;AAC3D,oBAAA,IAAI,iBAAiB,KAAK,IAAI,EAAE;wBAC9B,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,GAAG,EAAE,CAAC;AAC1D,wBAAA,MAAM,0BAA0B,GAAG,iBAAiB,GAAG,EAAE;AACzD,wBAAA,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE;AACd,4BAAA,KAAK,EAAE,eAAe;AACtB,4BAAA,OAAO,EAAE,0BAA0B;AACnC,4BAAA,OAAO,EAAE,EAAE;AACX,4BAAA,YAAY,EAAE,GAAG;AAClB,yBAAA,CAAC;wBACF;oBACF;gBACF;AAEA,gBAAA,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE;AACd,oBAAA,KAAK,EAAE,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI;AACpC,oBAAA,OAAO,EAAE,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM;AACxC,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,YAAY,EAAE,GAAG;AAClB,iBAAA,CAAC;gBACF;YACF;;AAGF,QAAA,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE;IACvB;IAEQ,wBAAwB,CAAC,OAAa,EAAE,MAAc,EAAA;AAC5D,QAAA,IAAI,SAAe;QACnB,QAAQ,MAAM;AACZ,YAAA,KAAK,KAAK;AACR,gBAAA,SAAS,GAAG,GAAG,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;gBAC/C;AACF,YAAA,KAAK,IAAI;AACP,gBAAA,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;gBAC1C;AACF,YAAA,KAAK,IAAI;gBACP,SAAS,GAAG,GAAG,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;gBACrC;AACF,YAAA,KAAK,IAAI;gBACP,SAAS,GAAG,GAAG,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;gBACtC;AACF,YAAA,KAAK,IAAI;gBACP,SAAS,GAAG,GAAG,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;gBACtC;AACF,YAAA,KAAK,IAAI;gBACP,SAAS,GAAG,GAAG,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;gBACvC;AACF,YAAA,KAAK,IAAI;gBACP,SAAS,GAAG,GAAG,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;gBACvC;AACF,YAAA,KAAK,IAAI;gBACP,SAAS,GAAG,GAAG,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;gBACvC;AACF,YAAA,KAAK,IAAI;gBACP,SAAS,GAAG,GAAG,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;gBACtC;AACF,YAAA;AACE,gBAAA,MAAM,IAAI,KAAK,CAAC,mBAAmB,MAAM,CAAA,CAAE,CAAC;;QAGhD,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,EAAE;AACxC,YAAA,SAAS,GAAG,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC;QACnD;AAEA,QAAA,OAAO,SAAS;IAClB;AAEO,IAAA,mBAAmB,CAAC,EACzB,MAAM,EACN,GAAG,GAAG,IAAI,IAAI,EAAE,EAChB,kBAAkB,EAClB,YAAY,GAAG,KAAK,GACH,EAAA;QACjB,IAAI,CAAC,MAAM,EAAE;AACX,YAAA,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC;QACvC;QACA,IAAI,kBAAkB,EAAE;AACtB,YAAA,IAAI,CAAC,iBAAiB,GAAG,kBAAkB;QAC7C;;QAGA,MAAM,YAAY,GAAG,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC;AAEpD,QAAA,IAAI,SAAe;AACnB,QAAA,IAAI,OAAa;QAEjB,MAAM,kBAAkB,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC;QAC9D,MAAM,aAAa,GAAG,IAAI,CAAC,wBAAwB,CAAC,YAAY,CAAC;QACjE,MAAM,aAAa,GAAG,IAAI,CAAC,wBAAwB,CAAC,YAAY,CAAC;;QAGjE,IAAI,kBAAkB,EAAE;YACtB,IAAI,aAAa,EAAE;;gBAEjB,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC;AACzD,gBAAA,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC;gBAC5D,OAAO,GAAG,MAAM;YAClB;iBAAO,IAAI,aAAa,EAAE;;gBAExB,OAAO,GAAG,YAAY;YACxB;iBAAO;;AAEL,gBAAA,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC;gBAC3D,OAAO,GAAG,MAAM;YAClB;QACF;aAAO;;YAEL,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC;AACzD,YAAA,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC;YAC5D,OAAO,GAAG,MAAM;QAClB;;QAGA,MAAM,eAAe,GAAG,IAAI,CAAC,wBAAwB,CAAC,OAAO,EAAE,MAAM,CAAC;AACtE,QAAA,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC;QAClE,SAAS,GAAG,QAAQ;;QAGpB,MAAM,QAAQ,GAAG,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC;QACxD,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC;;AAGpD,QAAA,IAAI,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE;AAC9B,YAAA,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC;QACxD;QAEA,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,YAAY,CAAC;YAC9C,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,YAAY,CAAC;SAC3C;IACH;IAEO,kBAAkB,CACvB,UAA2B,EAAE,EAAA;QAE7B,MAAM,EAAE,IAAI,GAAG,IAAI,IAAI,EAAE,EAAE,GAAG,OAAO;QACrC,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC;;AAGlD,QAAA,IAAI,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE;YACpE,OAAO;AACL,gBAAA,UAAU,EAAE,KAAK;AACjB,gBAAA,IAAI,EAAE,IAAI;AACV,gBAAA,KAAK,EAAE,IAAI;AACX,gBAAA,OAAO,EAAE,IAAI;AACb,gBAAA,QAAQ,EAAE,IAAI;aACf;QACH;AAEA,QAAA,MAAM,QAAQ,GAAG,UAAU,CAAC,SAAS,CAAC;AACtC,QAAA,MAAM,eAAe,GAAG,YAAY,CAAC,OAAO,CAAC,KAAK;AAClD,QAAA,IAAI,gBAAgB,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG;AAC/C,QAAA,MAAM,gBAAgB,GAAG,YAAY,CAAC,QAAQ,CAAC,KAAK;AACpD,QAAA,IAAI,iBAAiB,GAAG,YAAY,CAAC,QAAQ,CAAC,GAAG;;QAGjD,MAAM,YAAY,GAAG,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC;QACzD,IAAI,YAAY,EAAE;YAChB,MAAM,iBAAiB,GAAG,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC;AAChE,YAAA,IAAI,iBAAiB,KAAK,IAAI,EAAE;;AAE9B,gBAAA,gBAAgB,GAAG;oBACjB,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,iBAAiB,GAAG,EAAE,CAAC;oBACxC,MAAM,EAAE,iBAAiB,GAAG,EAAE;AAC9B,oBAAA,OAAO,EAAE,iBAAiB;iBAC3B;;AAED,gBAAA,iBAAiB,GAAG;AAClB,oBAAA,IAAI,EAAE,EAA2C;AACjD,oBAAA,MAAM,EAAE,CAA4C;AACpD,oBAAA,OAAO,EAAE,IAAI;iBACd;YACH;QACF;AAEA,QAAA,MAAM,IAAI,GAAG,aAAa,CACxB,GAAG,CAAC,QAAQ,EAAE;YACZ,KAAK,EAAE,eAAe,CAAC,IAAI;YAC3B,OAAO,EAAE,eAAe,CAAC,MAAM;AAChC,SAAA,CAAC,EACF,IAAI,CAAC,QAAQ,CACd;AACD,QAAA,MAAM,KAAK,GAAG,aAAa,CACzB,GAAG,CAAC,QAAQ,EAAE;YACZ,KAAK,EAAE,gBAAgB,CAAC,IAAI;YAC5B,OAAO,EAAE,gBAAgB,CAAC,MAAM;AACjC,SAAA,CAAC,EACF,IAAI,CAAC,QAAQ,CACd;AACD,QAAA,MAAM,OAAO,GAAG,aAAa,CAC3B,GAAG,CAAC,QAAQ,EAAE;YACZ,KAAK,EAAE,gBAAgB,CAAC,IAAI;YAC5B,OAAO,EAAE,gBAAgB,CAAC,MAAM;AACjC,SAAA,CAAC,EACF,IAAI,CAAC,QAAQ,CACd;AACD,QAAA,MAAM,QAAQ,GAAG,aAAa,CAC5B,GAAG,CAAC,QAAQ,EAAE;YACZ,KAAK,EAAE,iBAAiB,CAAC,IAAI;YAC7B,OAAO,EAAE,iBAAiB,CAAC,MAAM;AAClC,SAAA,CAAC,EACF,IAAI,CAAC,QAAQ,CACd;QAED,OAAO;AACL,YAAA,UAAU,EAAE,IAAI;YAChB,IAAI;YACJ,KAAK;YACL,OAAO;YACP,QAAQ;SACT;IACH;AACD;AA+ED;;;;;;AAMG;SACa,sBAAsB,CAAC,WAAA,GAAoB,IAAI,IAAI,EAAE,EAAA;AAInE,IAAA,MAAM,IAAI,GAAG,IAAI,cAAc,EAAE;IACjC,MAAM,IAAI,GAAG,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC;;IAErD,OAAO;QACL,IAAI;QACJ,QAAQ,EAAE,gBAAgB,CAAC,IAAI,EAAE,YAAY,CAAC,QAAQ,EAAE,YAAY,CAAC;KACtE;AACH;;;;;;;;;;;;;;;CCtvBA,MAAM,YAAY,GAAG,CAAC,YAAY,EAAE,aAAa,EAAE,WAAW,CAAC;AAC/D,CAAA,MAAM,OAAO,GAAG,OAAO,IAAI,KAAK,WAAW;;AAE3C,CAAA,IAAI,OAAO,EAAE,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC;;AAEtC,CAAA,SAAc,GAAG;AACjB,GAAE,YAAY;AACd,GAAE,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;GAC7B,IAAI,EAAE,sCAAsC;AAC9C,GAAE,OAAO;AACT,GAAE,oBAAoB,EAAE,MAAM,CAAC,wBAAwB,CAAC;AACxD,GAAE,SAAS,EAAE,MAAM,CAAC,WAAW,CAAC;AAChC,GAAE,WAAW,EAAE,MAAM,CAAC,aAAa,CAAC;AACpC,GAAE,UAAU,EAAE,MAAM,CAAC,WAAW,CAAC;GAC/B,IAAI,EAAE,MAAM,CAAA;EACb;;;;;;;;;;ACfD,CAAA,MAAM,EAAE,YAAY,EAAE,GAAGC,gBAAA,EAAsB;;AAE/C,CAAA,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;;AAEzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE;GACjC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,OAAO,YAAY;GAC1C,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,OAAO,IAAI,CAAC,CAAC,CAAC;;GAErC,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC;GAC9C,IAAI,MAAM,GAAG,CAAC;;AAEhB,GAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACxC,KAAI,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC;AACvB,KAAI,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC;AAC3B,KAAI,MAAM,IAAI,GAAG,CAAC,MAAM;AACxB,GAAA;;AAEA,GAAE,IAAI,MAAM,GAAG,WAAW,EAAE;AAC5B,KAAI,OAAO,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC;AACnE,GAAA;;AAEA,GAAE,OAAO,MAAM;AACf,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE;AACrD,GAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;AACnC,KAAI,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AAChD,GAAA;AACA,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE;AAC/B,GAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;KACtC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AAC5B,GAAA;AACA,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,aAAa,CAAC,GAAG,EAAE;GAC1B,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,CAAC,MAAM,CAAC,UAAU,EAAE;KACxC,OAAO,GAAG,CAAC,MAAM;AACrB,GAAA;;AAEA,GAAE,OAAO,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC;AACtE,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,QAAQ,CAAC,IAAI,EAAE;AACxB,GAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI;;GAExB,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,IAAI;;AAExC,GAAE,IAAI,GAAG;;AAET,GAAE,IAAI,IAAI,YAAY,WAAW,EAAE;AACnC,KAAI,GAAG,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC;GAC9B,CAAG,MAAM,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;AACvC,KAAI,GAAG,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC;AACvE,GAAA,CAAG,MAAM;AACT,KAAI,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;AAC3B,KAAI,QAAQ,CAAC,QAAQ,GAAG,KAAK;AAC7B,GAAA;;AAEA,GAAE,OAAO,GAAG;AACZ,CAAA;;AAEA,CAAAC,UAAA,CAAA,OAAc,GAAG;AACjB,GAAE,MAAM;GACN,IAAI,EAAE,KAAK;AACb,GAAE,aAAa;AACf,GAAE,QAAQ;AACV,GAAE,MAAM,EAAE;EACT;;AAED;AACA,CAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE;AACpC,GAAE,IAAI;AACN,KAAI,MAAMC,YAAU,GAAG,OAAA,CAAQ,YAAY,CAAC;;AAE5C,KAAID,UAAA,CAAA,OAAA,CAAA,IAAmB,GAAG,UAAU,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE;AAC1E,OAAM,IAAI,MAAM,GAAG,EAAE,EAAE,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;AAClE,YAAWC,YAAU,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;KAChE,CAAK;;AAEL,KAAID,yBAAqB,GAAG,UAAU,MAAM,EAAE,IAAI,EAAE;AACpD,OAAM,IAAI,MAAM,CAAC,MAAM,GAAG,EAAE,EAAE,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC;AACnD,YAAWC,YAAU,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC;KAC1C,CAAK;GACL,CAAG,CAAC,OAAO,CAAC,EAAE;AACd;AACA,GAAA;AACA,CAAA;;;;;;;;;;;AChIA,CAAA,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC;AAC7B,CAAA,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;;AAE3B;AACA;AACA;AACA;AACA,CAAA,MAAM,OAAO,CAAC;AACd;AACA;AACA;AACA;AACA;AACA;GACE,WAAW,CAAC,WAAW,EAAE;AAC3B,KAAI,IAAI,CAAC,KAAK,CAAC,GAAG,MAAM;OAClB,IAAI,CAAC,OAAO,EAAE;AACpB,OAAM,IAAI,CAAC,IAAI,CAAC,EAAE;KAClB,CAAK;AACL,KAAI,IAAI,CAAC,WAAW,GAAG,WAAW,IAAI,QAAQ;AAC9C,KAAI,IAAI,CAAC,IAAI,GAAG,EAAE;AAClB,KAAI,IAAI,CAAC,OAAO,GAAG,CAAC;AACpB,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;GACE,GAAG,CAAC,GAAG,EAAE;AACX,KAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;AACvB,KAAI,IAAI,CAAC,IAAI,CAAC,EAAE;AAChB,GAAA;;AAEA;AACA;AACA;AACA;AACA;GACE,CAAC,IAAI,CAAC,GAAG;KACP,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,WAAW,EAAE;;AAE3C,KAAI,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;OACpB,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;;OAE7B,IAAI,CAAC,OAAO,EAAE;AACpB,OAAM,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACtB,KAAA;AACA,GAAA;AACA;;AAEA,CAAA,OAAc,GAAG,OAAO;;;;;;;;;;;CCpDxB,MAAM,IAAI,GAAG,UAAe;;CAE5B,MAAM,UAAU,GAAGC,iBAAA,EAAwB;CAC3C,MAAM,OAAO,GAAGC,cAAA,EAAoB;AACpC,CAAA,MAAM,EAAE,WAAW,EAAE,GAAGC,gBAAA,EAAsB;;AAE9C,CAAA,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;AACzC,CAAA,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACrD,CAAA,MAAM,kBAAkB,GAAG,MAAM,CAAC,oBAAoB,CAAC;AACvD,CAAA,MAAM,YAAY,GAAG,MAAM,CAAC,cAAc,CAAC;AAC3C,CAAA,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC;AACpC,CAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;AAClC,CAAA,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC;;AAE9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,IAAI,WAAW;;AAEf;AACA;AACA;AACA,CAAA,MAAM,iBAAiB,CAAC;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE,WAAW,CAAC,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE;AAC7C,KAAI,IAAI,CAAC,WAAW,GAAG,UAAU,GAAG,CAAC;AACrC,KAAI,IAAI,CAAC,QAAQ,GAAG,OAAO,IAAI,EAAE;KAC7B,IAAI,CAAC,UAAU;AACnB,OAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,KAAK,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,IAAI;AAC5E,KAAI,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,QAAQ;AAC/B,KAAI,IAAI,CAAC,QAAQ,GAAG,IAAI;AACxB,KAAI,IAAI,CAAC,QAAQ,GAAG,IAAI;;AAExB,KAAI,IAAI,CAAC,MAAM,GAAG,IAAI;;KAElB,IAAI,CAAC,WAAW,EAAE;AACtB,OAAM,MAAM,WAAW;AACvB,SAAQ,IAAI,CAAC,QAAQ,CAAC,gBAAgB,KAAK;aAC/B,IAAI,CAAC,QAAQ,CAAC;AAC1B,aAAY,EAAE;AACd,OAAM,WAAW,GAAG,IAAI,OAAO,CAAC,WAAW,CAAC;AAC5C,KAAA;AACA,GAAA;;AAEA;AACA;AACA;GACE,WAAW,aAAa,GAAG;AAC7B,KAAI,OAAO,oBAAoB;AAC/B,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE,KAAK,GAAG;KACN,MAAM,MAAM,GAAG,EAAE;;AAErB,KAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,uBAAuB,EAAE;AAC/C,OAAM,MAAM,CAAC,0BAA0B,GAAG,IAAI;AAC9C,KAAA;AACA,KAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,uBAAuB,EAAE;AAC/C,OAAM,MAAM,CAAC,0BAA0B,GAAG,IAAI;AAC9C,KAAA;AACA,KAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,mBAAmB,EAAE;OACrC,MAAM,CAAC,sBAAsB,GAAG,IAAI,CAAC,QAAQ,CAAC,mBAAmB;AACvE,KAAA;AACA,KAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,mBAAmB,EAAE;OACrC,MAAM,CAAC,sBAAsB,GAAG,IAAI,CAAC,QAAQ,CAAC,mBAAmB;KACvE,CAAK,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,mBAAmB,IAAI,IAAI,EAAE;AAC1D,OAAM,MAAM,CAAC,sBAAsB,GAAG,IAAI;AAC1C,KAAA;;AAEA,KAAI,OAAO,MAAM;AACjB,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;GACE,MAAM,CAAC,cAAc,EAAE;AACzB,KAAI,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC;;AAEzD,KAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AACvB,SAAQ,IAAI,CAAC,cAAc,CAAC,cAAc;AAC1C,SAAQ,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC;;KAEvC,OAAO,IAAI,CAAC,MAAM;AACtB,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAE,OAAO,GAAG;AACZ,KAAI,IAAI,IAAI,CAAC,QAAQ,EAAE;AACvB,OAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;AAC3B,OAAM,IAAI,CAAC,QAAQ,GAAG,IAAI;AAC1B,KAAA;;AAEA,KAAI,IAAI,IAAI,CAAC,QAAQ,EAAE;OACjB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;;AAE/C,OAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;AAC3B,OAAM,IAAI,CAAC,QAAQ,GAAG,IAAI;;OAEpB,IAAI,QAAQ,EAAE;AACpB,SAAQ,QAAQ;AAChB,WAAU,IAAI,KAAK;aACP;AACZ;UACS;AACT,OAAA;AACA,KAAA;AACA,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;GACE,cAAc,CAAC,MAAM,EAAE;AACzB,KAAI,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ;KAC1B,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK;OACvC;AACN,SAAQ,CAAC,IAAI,CAAC,uBAAuB,KAAK,KAAK;WACrC,MAAM,CAAC,0BAA0B;UAClC,MAAM,CAAC,sBAAsB;AACtC,YAAW,IAAI,CAAC,mBAAmB,KAAK,KAAK;AAC7C,cAAa,OAAO,IAAI,CAAC,mBAAmB,KAAK,QAAQ;eAC3C,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAAC,sBAAsB,CAAC,CAAC,CAAC;AACzE,UAAS,OAAO,IAAI,CAAC,mBAAmB,KAAK,QAAQ;WAC3C,CAAC,MAAM,CAAC,sBAAsB;SAChC;AACR,SAAQ,OAAO,KAAK;AACpB,OAAA;;AAEA,OAAM,OAAO,IAAI;AACjB,KAAA,CAAK,CAAC;;KAEF,IAAI,CAAC,QAAQ,EAAE;AACnB,OAAM,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC;AACrE,KAAA;;AAEA,KAAI,IAAI,IAAI,CAAC,uBAAuB,EAAE;AACtC,OAAM,QAAQ,CAAC,0BAA0B,GAAG,IAAI;AAChD,KAAA;AACA,KAAI,IAAI,IAAI,CAAC,uBAAuB,EAAE;AACtC,OAAM,QAAQ,CAAC,0BAA0B,GAAG,IAAI;AAChD,KAAA;AACA,KAAI,IAAI,OAAO,IAAI,CAAC,mBAAmB,KAAK,QAAQ,EAAE;AACtD,OAAM,QAAQ,CAAC,sBAAsB,GAAG,IAAI,CAAC,mBAAmB;AAChE,KAAA;AACA,KAAI,IAAI,OAAO,IAAI,CAAC,mBAAmB,KAAK,QAAQ,EAAE;AACtD,OAAM,QAAQ,CAAC,sBAAsB,GAAG,IAAI,CAAC,mBAAmB;AAChE,KAAA,CAAK,MAAM;AACX,OAAM,QAAQ,CAAC,sBAAsB,KAAK,IAAI;OACxC,IAAI,CAAC,mBAAmB,KAAK;OAC7B;OACA,OAAO,QAAQ,CAAC,sBAAsB;AAC5C,KAAA;;AAEA,KAAI,OAAO,QAAQ;AACnB,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;GACE,cAAc,CAAC,QAAQ,EAAE;AAC3B,KAAI,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC;;KAE1B;AACJ,OAAM,IAAI,CAAC,QAAQ,CAAC,uBAAuB,KAAK,KAAK;AACrD,OAAM,MAAM,CAAC;OACP;AACN,OAAM,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC;AAC1E,KAAA;;AAEA,KAAI,IAAI,CAAC,MAAM,CAAC,sBAAsB,EAAE;OAClC,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,mBAAmB,KAAK,QAAQ,EAAE;SACzD,MAAM,CAAC,sBAAsB,GAAG,IAAI,CAAC,QAAQ,CAAC,mBAAmB;AACzE,OAAA;AACA,KAAA,CAAK,MAAM;AACX,OAAM,IAAI,CAAC,QAAQ,CAAC,mBAAmB,KAAK,KAAK;AACjD,QAAO,OAAO,IAAI,CAAC,QAAQ,CAAC,mBAAmB,KAAK,QAAQ;SACpD,MAAM,CAAC,sBAAsB,GAAG,IAAI,CAAC,QAAQ,CAAC,mBAAmB;OACnE;OACA,MAAM,IAAI,KAAK;SACb;QACD;AACP,KAAA;;AAEA,KAAI,OAAO,MAAM;AACjB,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;GACE,eAAe,CAAC,cAAc,EAAE;AAClC,KAAI,cAAc,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK;OACjC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AAC3C,SAAQ,IAAI,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC;;AAE/B,SAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;WACpB,MAAM,IAAI,KAAK,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,+BAA+B,CAAC,CAAC;AAC7E,SAAA;;AAEA,SAAQ,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC;;AAExB,SAAQ,IAAI,GAAG,KAAK,wBAAwB,EAAE;AAC9C,WAAU,IAAI,KAAK,KAAK,IAAI,EAAE;AAC9B,aAAY,MAAM,GAAG,GAAG,CAAC,KAAK;AAC9B,aAAY,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,EAAE,EAAE;eACjD,MAAM,IAAI,SAAS;iBACjB,CAAC,6BAA6B,EAAE,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;gBAChD;AACf,aAAA;aACY,KAAK,GAAG,GAAG;AACvB,WAAA,CAAW,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;aAC1B,MAAM,IAAI,SAAS;eACjB,CAAC,6BAA6B,EAAE,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;cAChD;AACb,WAAA;AACA,SAAA,CAAS,MAAM,IAAI,GAAG,KAAK,wBAAwB,EAAE;AACrD,WAAU,MAAM,GAAG,GAAG,CAAC,KAAK;AAC5B,WAAU,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,EAAE,EAAE;aACjD,MAAM,IAAI,SAAS;eACjB,CAAC,6BAA6B,EAAE,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;cAChD;AACb,WAAA;WACU,KAAK,GAAG,GAAG;AACrB,SAAA,CAAS,MAAM;WACL,GAAG,KAAK,4BAA4B;AAC9C,WAAU,GAAG,KAAK;WACR;AACV,WAAU,IAAI,KAAK,KAAK,IAAI,EAAE;aAClB,MAAM,IAAI,SAAS;eACjB,CAAC,6BAA6B,EAAE,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;cAChD;AACb,WAAA;AACA,SAAA,CAAS,MAAM;WACL,MAAM,IAAI,KAAK,CAAC,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AACvD,SAAA;;AAEA,SAAQ,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK;AAC3B,OAAA,CAAO,CAAC;AACR,KAAA,CAAK,CAAC;;AAEN,KAAI,OAAO,cAAc;AACzB,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE;AAClC,KAAI,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK;AAC9B,OAAM,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK;AACnD,SAAQ,IAAI,EAAE;AACd,SAAQ,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;AAC7B,OAAA,CAAO,CAAC;AACR,KAAA,CAAK,CAAC;AACN,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE;AAChC,KAAI,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK;AAC9B,OAAM,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK;AACjD,SAAQ,IAAI,EAAE;AACd,SAAQ,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;AAC7B,OAAA,CAAO,CAAC;AACR,KAAA,CAAK,CAAC;AACN,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE;KAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,GAAG,QAAQ,GAAG,QAAQ;;AAEzD,KAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;OAClB,MAAM,GAAG,GAAG,CAAC,EAAE,QAAQ,CAAC,gBAAgB,CAAC;AAC/C,OAAM,MAAM,UAAU;AACtB,SAAQ,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK;AACpC,aAAY,IAAI,CAAC;AACjB,aAAY,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;;AAE5B,OAAM,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC;AAC5C,SAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,kBAAkB;SACnC;AACR,QAAO,CAAC;AACR,OAAM,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,GAAG,IAAI;AAC9C,OAAM,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC;AACrC,OAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,EAAE;OAC5B,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,cAAc,CAAC;OACzC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC;AAC7C,KAAA;;AAEA,KAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,QAAQ;;AAEvC,KAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;KACzB,IAAI,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC;;AAEzC,KAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM;OACxB,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;;OAEjC,IAAI,GAAG,EAAE;AACf,SAAQ,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;AAC7B,SAAQ,IAAI,CAAC,QAAQ,GAAG,IAAI;SACpB,QAAQ,CAAC,GAAG,CAAC;SACb;AACR,OAAA;;AAEA,OAAM,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM;AACpC,SAAQ,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;AAC/B,SAAQ,IAAI,CAAC,QAAQ,CAAC,YAAY;QAC3B;;OAED,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,UAAU,EAAE;AACnD,SAAQ,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;AAC7B,SAAQ,IAAI,CAAC,QAAQ,GAAG,IAAI;AAC5B,OAAA,CAAO,MAAM;AACb,SAAQ,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC;AACvC,SAAQ,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,EAAE;;AAEpC,SAAQ,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,CAAC,oBAAoB,CAAC,CAAC,EAAE;AACnE,WAAU,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;AAC/B,SAAA;AACA,OAAA;;AAEA,OAAM,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;AAC1B,KAAA,CAAK,CAAC;AACN,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE;KAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,GAAG,QAAQ,GAAG,QAAQ;;AAEzD,KAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;OAClB,MAAM,GAAG,GAAG,CAAC,EAAE,QAAQ,CAAC,gBAAgB,CAAC;AAC/C,OAAM,MAAM,UAAU;AACtB,SAAQ,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK;AACpC,aAAY,IAAI,CAAC;AACjB,aAAY,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;;AAE5B,OAAM,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC;AAC5C,SAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,kBAAkB;SACnC;AACR,QAAO,CAAC;;AAER,OAAM,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC;AACrC,OAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,EAAE;;OAE5B,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC;AAC7C,KAAA;;AAEA,KAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,QAAQ;;AAEvC,KAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;KACzB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM;AACjD,OAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAC1B;AACA;AACA;SACQ;AACR,OAAA;;AAEA,OAAM,IAAI,IAAI,GAAG,UAAU,CAAC,MAAM;AAClC,SAAQ,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;AAC/B,SAAQ,IAAI,CAAC,QAAQ,CAAC,YAAY;QAC3B;;OAED,IAAI,GAAG,EAAE;AACf,SAAQ,IAAI,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AAC5E,OAAA;;AAEA;AACA;AACA;AACA;AACA,OAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,IAAI;;AAErC,OAAM,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC;AACrC,OAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,EAAE;;AAElC,OAAM,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,CAAC,oBAAoB,CAAC,CAAC,EAAE;AACjE,SAAQ,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;AAC7B,OAAA;;AAEA,OAAM,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;AAC1B,KAAA,CAAK,CAAC;AACN,GAAA;AACA;;AAEA,CAAA,iBAAc,GAAG,iBAAiB;;AAElC;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,aAAa,CAAC,KAAK,EAAE;GAC5B,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;AAC5B,GAAE,IAAI,CAAC,YAAY,CAAC,IAAI,KAAK,CAAC,MAAM;AACpC,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,aAAa,CAAC,KAAK,EAAE;AAC9B,GAAE,IAAI,CAAC,YAAY,CAAC,IAAI,KAAK,CAAC,MAAM;;GAElC;AACF,KAAI,IAAI,CAAC,kBAAkB,CAAC,CAAC,WAAW,GAAG,CAAC;KACxC,IAAI,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,kBAAkB,CAAC,CAAC;KAC/C;KACA,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;KAC1B;AACJ,GAAA;;GAEE,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,UAAU,CAAC,2BAA2B,CAAC;AAC5D,GAAE,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,GAAG,mCAAmC;GACvD,IAAI,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,GAAG,IAAI;AAClC,GAAE,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,aAAa,CAAC;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;GACE,IAAI,CAAC,KAAK,EAAE;AACd,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,cAAc,CAAC,GAAG,EAAE;AAC7B;AACA;AACA;AACA;AACA,GAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC,QAAQ,GAAG,IAAI;;AAE1C,GAAE,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE;KAChB,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KAC7B;AACJ,GAAA;;AAEA,GAAE,GAAG,CAAC,WAAW,CAAC,GAAG,IAAI;AACzB,GAAE,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC;AACtB,CAAA;;;;;;;;;;;;AC7gBA,CAAA,MAAM,EAAE,MAAM,EAAE,GAAGL,YAAiB;;AAEpC,CAAA,MAAM,EAAE,OAAO,EAAE,GAAGG,gBAAA,EAAsB;;AAE1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,MAAM,UAAU,GAAG;AACnB,GAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAChD,GAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAChD,GAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAChD,GAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAChD,GAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAChD,GAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAChD,GAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAChD,GAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;EAC/C;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,iBAAiB,CAAC,IAAI,EAAE;GAC/B;KACE,CAAC,IAAI,IAAI,IAAI;OACX,IAAI,IAAI,IAAI;OACZ,IAAI,KAAK,IAAI;OACb,IAAI,KAAK,IAAI;OACb,IAAI,KAAK,IAAI;AACnB,MAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI;AACjC;AACA,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,YAAY,CAAC,GAAG,EAAE;AAC3B,GAAE,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM;GACtB,IAAI,CAAC,GAAG,CAAC;;AAEX,GAAE,OAAO,CAAC,GAAG,GAAG,EAAE;KACd,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC,EAAE;AAC/B;AACA,OAAM,CAAC,EAAE;KACT,CAAK,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,MAAM,IAAI,EAAE;AACzC;OACM;AACN,SAAQ,CAAC,GAAG,CAAC,KAAK,GAAG;SACb,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,MAAM,IAAI;SAC5B,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,MAAM,IAAI;SACxB;AACR,SAAQ,OAAO,KAAK;AACpB,OAAA;;OAEM,CAAC,IAAI,CAAC;KACZ,CAAK,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,MAAM,IAAI,EAAE;AACzC;OACM;AACN,SAAQ,CAAC,GAAG,CAAC,IAAI,GAAG;SACZ,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,MAAM,IAAI;SAC5B,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,MAAM,IAAI;AACpC,UAAS,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,MAAM,IAAI,CAAC;AACzD,UAAS,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,MAAM,IAAI,CAAC;SACjD;AACR,SAAQ,OAAO,KAAK;AACpB,OAAA;;OAEM,CAAC,IAAI,CAAC;KACZ,CAAK,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,MAAM,IAAI,EAAE;AACzC;OACM;AACN,SAAQ,CAAC,GAAG,CAAC,IAAI,GAAG;SACZ,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,MAAM,IAAI;SAC5B,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,MAAM,IAAI;SAC5B,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,MAAM,IAAI;AACpC,UAAS,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,MAAM,IAAI,CAAC;AACzD,UAAS,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;AAC9C,SAAQ,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI;SACb;AACR,SAAQ,OAAO,KAAK;AACpB,OAAA;;OAEM,CAAC,IAAI,CAAC;AACZ,KAAA,CAAK,MAAM;AACX,OAAM,OAAO,KAAK;AAClB,KAAA;AACA,GAAA;;AAEA,GAAE,OAAO,IAAI;AACb,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,MAAM,CAAC,KAAK,EAAE;GACrB;AACF,KAAI,OAAO;KACP,OAAO,KAAK,KAAK,QAAQ;AAC7B,KAAI,OAAO,KAAK,CAAC,WAAW,KAAK,UAAU;AAC3C,KAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;AAClC,KAAI,OAAO,KAAK,CAAC,MAAM,KAAK,UAAU;AACtC,MAAK,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,MAAM;AACzC,OAAM,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,MAAM;AAC1C;AACA,CAAA;;AAEA,CAAAG,UAAA,CAAA,OAAc,GAAG;AACjB,GAAE,MAAM;AACR,GAAE,iBAAiB;GACjB,WAAW,EAAE,YAAY;GACzB;EACD;;AAED,CAAA,IAAI,MAAM,EAAE;AACZ,GAAEA,UAAA,CAAA,OAAA,CAAA,WAA0B,GAAG,UAAU,GAAG,EAAE;AAC9C,KAAI,OAAO,GAAG,CAAC,MAAM,GAAG,EAAE,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC;GAC5D,CAAG;CACH,CAAC,kCAAkC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE;AAC1E,GAAE,IAAI;AACN,KAAI,MAAM,WAAW,GAAG,OAAA,CAAQ,gBAAgB,CAAC;;AAEjD,KAAIA,UAAA,CAAA,OAAA,CAAA,WAA0B,GAAG,UAAU,GAAG,EAAE;AAChD,OAAM,OAAO,GAAG,CAAC,MAAM,GAAG,EAAE,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC;KACnE,CAAK;GACL,CAAG,CAAC,OAAO,CAAC,EAAE;AACd;AACA,GAAA;AACA,CAAA;;;;;;;;;;;ACrJA,CAAA,MAAM,EAAE,QAAQ,EAAE,GAAGN,YAAiB;;CAEtC,MAAM,iBAAiB,GAAGG,wBAAA,EAA+B;CACzD,MAAM;AACN,GAAE,YAAY;AACd,GAAE,YAAY;AACd,GAAE,WAAW;GACX;AACF,EAAC,GAAGC,gBAAA,EAAsB;CAC1B,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,GAAGC,iBAAA,EAAwB;AAClE,CAAA,MAAM,EAAE,iBAAiB,EAAE,WAAW,EAAE,GAAGE,iBAAA,EAAuB;;AAElE,CAAA,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;;CAEzC,MAAM,QAAQ,GAAG,CAAC;CAClB,MAAM,qBAAqB,GAAG,CAAC;CAC/B,MAAM,qBAAqB,GAAG,CAAC;CAC/B,MAAM,QAAQ,GAAG,CAAC;CAClB,MAAM,QAAQ,GAAG,CAAC;CAClB,MAAM,SAAS,GAAG,CAAC;CACnB,MAAM,WAAW,GAAG,CAAC;;AAErB;AACA;AACA;AACA;AACA;CACA,MAAM,QAAQ,SAAS,QAAQ,CAAC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE,WAAW,CAAC,OAAO,GAAG,EAAE,EAAE;AAC5B,KAAI,KAAK,EAAE;;KAEP,IAAI,CAAC,uBAAuB;OAC1B,OAAO,CAAC,sBAAsB,KAAK;AACzC,WAAU,OAAO,CAAC;AAClB,WAAU,IAAI;KACV,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,UAAU,IAAI,YAAY,CAAC,CAAC,CAAC;KACxD,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,UAAU,IAAI,EAAE;KAC3C,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,OAAO,CAAC,QAAQ;KACnC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,UAAU,GAAG,CAAC;KACzC,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC,OAAO,CAAC,kBAAkB;AAC3D,KAAI,IAAI,CAAC,UAAU,CAAC,GAAG,SAAS;;AAEhC,KAAI,IAAI,CAAC,cAAc,GAAG,CAAC;AAC3B,KAAI,IAAI,CAAC,QAAQ,GAAG,EAAE;;AAEtB,KAAI,IAAI,CAAC,WAAW,GAAG,KAAK;AAC5B,KAAI,IAAI,CAAC,cAAc,GAAG,CAAC;AAC3B,KAAI,IAAI,CAAC,KAAK,GAAG,SAAS;AAC1B,KAAI,IAAI,CAAC,WAAW,GAAG,CAAC;AACxB,KAAI,IAAI,CAAC,OAAO,GAAG,KAAK;AACxB,KAAI,IAAI,CAAC,IAAI,GAAG,KAAK;AACrB,KAAI,IAAI,CAAC,OAAO,GAAG,CAAC;;AAEpB,KAAI,IAAI,CAAC,mBAAmB,GAAG,CAAC;AAChC,KAAI,IAAI,CAAC,cAAc,GAAG,CAAC;AAC3B,KAAI,IAAI,CAAC,UAAU,GAAG,EAAE;;AAExB,KAAI,IAAI,CAAC,QAAQ,GAAG,KAAK;AACzB,KAAI,IAAI,CAAC,KAAK,GAAG,KAAK;AACtB,KAAI,IAAI,CAAC,MAAM,GAAG,QAAQ;AAC1B,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE;AAC9B,KAAI,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,IAAI,IAAI,CAAC,MAAM,IAAI,QAAQ,EAAE,OAAO,EAAE,EAAE;;AAErE,KAAI,IAAI,CAAC,cAAc,IAAI,KAAK,CAAC,MAAM;AACvC,KAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;AAC7B,KAAI,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;AACtB,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;GACE,OAAO,CAAC,CAAC,EAAE;AACb,KAAI,IAAI,CAAC,cAAc,IAAI,CAAC;;AAE5B,KAAI,IAAI,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;;KAE/D,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;OAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;OAC5B,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,UAAU;SAC/B,GAAG,CAAC,MAAM;AAClB,SAAQ,GAAG,CAAC,UAAU,GAAG,CAAC;SAClB,GAAG,CAAC,MAAM,GAAG;QACd;;AAEP,OAAM,OAAO,IAAI,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;AAC1D,KAAA;;KAEI,MAAM,GAAG,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;;AAErC,KAAI,GAAG;OACD,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;AAClC,OAAM,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC;;AAEnC,OAAM,IAAI,CAAC,IAAI,GAAG,CAAC,MAAM,EAAE;AAC3B,SAAQ,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,MAAM,CAAC;AAC9C,OAAA,CAAO,MAAM;AACb,SAAQ,GAAG,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC;SAC9D,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,UAAU;WAC/B,GAAG,CAAC,MAAM;AACpB,WAAU,GAAG,CAAC,UAAU,GAAG,CAAC;WAClB,GAAG,CAAC,MAAM,GAAG;UACd;AACT,OAAA;;AAEA,OAAM,CAAC,IAAI,GAAG,CAAC,MAAM;KACrB,CAAK,QAAQ,CAAC,GAAG,CAAC;;AAElB,KAAI,OAAO,GAAG;AACd,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;GACE,SAAS,CAAC,EAAE,EAAE;AAChB,KAAI,IAAI,CAAC,KAAK,GAAG,IAAI;;AAErB,KAAI,GAAG;OACD,QAAQ,IAAI,CAAC,MAAM;AACzB,SAAQ,KAAK,QAAQ;AACrB,WAAU,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;WAChB;AACV,SAAQ,KAAK,qBAAqB;AAClC,WAAU,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC;WAC3B;AACV,SAAQ,KAAK,qBAAqB;AAClC,WAAU,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC;WAC3B;AACV,SAAQ,KAAK,QAAQ;WACX,IAAI,CAAC,OAAO,EAAE;WACd;AACV,SAAQ,KAAK,QAAQ;AACrB,WAAU,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;WAChB;AACV,SAAQ,KAAK,SAAS;AACtB,SAAQ,KAAK,WAAW;AACxB,WAAU,IAAI,CAAC,KAAK,GAAG,KAAK;WAClB;AACV;KACA,CAAK,QAAQ,IAAI,CAAC,KAAK;;AAEvB,KAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE;AAC5B,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;GACE,OAAO,CAAC,EAAE,EAAE;AACd,KAAI,IAAI,IAAI,CAAC,cAAc,GAAG,CAAC,EAAE;AACjC,OAAM,IAAI,CAAC,KAAK,GAAG,KAAK;OAClB;AACN,KAAA;;KAEI,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;;KAE3B,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,MAAM,IAAI,EAAE;AAClC,OAAM,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW;AACpC,SAAQ,UAAU;AAClB,SAAQ,6BAA6B;AACrC,SAAQ,IAAI;AACZ,SAAQ,IAAI;SACJ;QACD;;OAED,EAAE,CAAC,KAAK,CAAC;OACT;AACN,KAAA;;KAEI,MAAM,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,MAAM,IAAI;;AAE/C,KAAI,IAAI,UAAU,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,aAAa,CAAC,EAAE;AAC1E,OAAM,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW;AACpC,SAAQ,UAAU;AAClB,SAAQ,oBAAoB;AAC5B,SAAQ,IAAI;AACZ,SAAQ,IAAI;SACJ;QACD;;OAED,EAAE,CAAC,KAAK,CAAC;OACT;AACN,KAAA;;AAEA,KAAI,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,MAAM,IAAI;KACpC,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI;KAC5B,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI;;AAEvC,KAAI,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,EAAE;OACzB,IAAI,UAAU,EAAE;AACtB,SAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW;AACtC,WAAU,UAAU;AACpB,WAAU,oBAAoB;AAC9B,WAAU,IAAI;AACd,WAAU,IAAI;WACJ;UACD;;SAED,EAAE,CAAC,KAAK,CAAC;SACT;AACR,OAAA;;AAEA,OAAM,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AAC7B,SAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW;AACtC,WAAU,UAAU;AACpB,WAAU,kBAAkB;AAC5B,WAAU,IAAI;AACd,WAAU,IAAI;WACJ;UACD;;SAED,EAAE,CAAC,KAAK,CAAC;SACT;AACR,OAAA;;AAEA,OAAM,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW;AACrC,KAAA,CAAK,MAAM,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,EAAE;AAC/D,OAAM,IAAI,IAAI,CAAC,WAAW,EAAE;AAC5B,SAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW;AACtC,WAAU,UAAU;AACpB,WAAU,CAAC,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AAC1C,WAAU,IAAI;AACd,WAAU,IAAI;WACJ;UACD;;SAED,EAAE,CAAC,KAAK,CAAC;SACT;AACR,OAAA;;AAEA,OAAM,IAAI,CAAC,WAAW,GAAG,UAAU;AACnC,KAAA,CAAK,MAAM,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE;AAC3D,OAAM,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;AACtB,SAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW;AACtC,WAAU,UAAU;AACpB,WAAU,iBAAiB;AAC3B,WAAU,IAAI;AACd,WAAU,IAAI;WACJ;UACD;;SAED,EAAE,CAAC,KAAK,CAAC;SACT;AACR,OAAA;;OAEM,IAAI,UAAU,EAAE;AACtB,SAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW;AACtC,WAAU,UAAU;AACpB,WAAU,oBAAoB;AAC9B,WAAU,IAAI;AACd,WAAU,IAAI;WACJ;UACD;;SAED,EAAE,CAAC,KAAK,CAAC;SACT;AACR,OAAA;;OAEM;AACN,SAAQ,IAAI,CAAC,cAAc,GAAG,IAAI;UACzB,IAAI,CAAC,OAAO,KAAK,IAAI,IAAI,IAAI,CAAC,cAAc,KAAK,CAAC;SACnD;AACR,SAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW;AACtC,WAAU,UAAU;AACpB,WAAU,CAAC,uBAAuB,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;AACzD,WAAU,IAAI;AACd,WAAU,IAAI;WACJ;UACD;;SAED,EAAE,CAAC,KAAK,CAAC;SACT;AACR,OAAA;AACA,KAAA,CAAK,MAAM;AACX,OAAM,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW;AACpC,SAAQ,UAAU;AAClB,SAAQ,CAAC,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AACxC,SAAQ,IAAI;AACZ,SAAQ,IAAI;SACJ;QACD;;OAED,EAAE,CAAC,KAAK,CAAC;OACT;AACN,KAAA;;AAEA,KAAI,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO;AACxE,KAAI,IAAI,CAAC,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,MAAM,IAAI;;AAE3C,KAAI,IAAI,IAAI,CAAC,SAAS,EAAE;AACxB,OAAM,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACzB,SAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW;AACtC,WAAU,UAAU;AACpB,WAAU,kBAAkB;AAC5B,WAAU,IAAI;AACd,WAAU,IAAI;WACJ;UACD;;SAED,EAAE,CAAC,KAAK,CAAC;SACT;AACR,OAAA;AACA,KAAA,CAAK,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE;AAC7B,OAAM,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW;AACpC,SAAQ,UAAU;AAClB,SAAQ,oBAAoB;AAC5B,SAAQ,IAAI;AACZ,SAAQ,IAAI;SACJ;QACD;;OAED,EAAE,CAAC,KAAK,CAAC;OACT;AACN,KAAA;;KAEI,IAAI,IAAI,CAAC,cAAc,KAAK,GAAG,EAAE,IAAI,CAAC,MAAM,GAAG,qBAAqB;UAC/D,IAAI,IAAI,CAAC,cAAc,KAAK,GAAG,EAAE,IAAI,CAAC,MAAM,GAAG,qBAAqB;AAC7E,UAAS,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;AAC5B,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;GACE,kBAAkB,CAAC,EAAE,EAAE;AACzB,KAAI,IAAI,IAAI,CAAC,cAAc,GAAG,CAAC,EAAE;AACjC,OAAM,IAAI,CAAC,KAAK,GAAG,KAAK;OAClB;AACN,KAAA;;AAEA,KAAI,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;AACzD,KAAI,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;AACvB,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;GACE,kBAAkB,CAAC,EAAE,EAAE;AACzB,KAAI,IAAI,IAAI,CAAC,cAAc,GAAG,CAAC,EAAE;AACjC,OAAM,IAAI,CAAC,KAAK,GAAG,KAAK;OAClB;AACN,KAAA;;KAEI,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;KAC3B,MAAM,GAAG,GAAG,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC;;AAEnC;AACA;AACA;AACA;AACA,KAAI,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE;AACxC,OAAM,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW;AACpC,SAAQ,UAAU;AAClB,SAAQ,wDAAwD;AAChE,SAAQ,KAAK;AACb,SAAQ,IAAI;SACJ;QACD;;OAED,EAAE,CAAC,KAAK,CAAC;OACT;AACN,KAAA;;KAEI,IAAI,CAAC,cAAc,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC;AACrE,KAAI,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;AACvB,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;GACE,UAAU,CAAC,EAAE,EAAE;KACb,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE;AACpD,OAAM,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC,cAAc;AACrD,OAAM,IAAI,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,GAAG,CAAC,EAAE;AAC/E,SAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW;AACtC,WAAU,UAAU;AACpB,WAAU,2BAA2B;AACrC,WAAU,KAAK;AACf,WAAU,IAAI;WACJ;UACD;;SAED,EAAE,CAAC,KAAK,CAAC;SACT;AACR,OAAA;AACA,KAAA;;KAEI,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,GAAG,QAAQ;AAC5C,UAAS,IAAI,CAAC,MAAM,GAAG,QAAQ;AAC/B,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAE,OAAO,GAAG;AACZ,KAAI,IAAI,IAAI,CAAC,cAAc,GAAG,CAAC,EAAE;AACjC,OAAM,IAAI,CAAC,KAAK,GAAG,KAAK;OAClB;AACN,KAAA;;KAEI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AAChC,KAAI,IAAI,CAAC,MAAM,GAAG,QAAQ;AAC1B,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;GACE,OAAO,CAAC,EAAE,EAAE;KACV,IAAI,IAAI,GAAG,YAAY;;AAE3B,KAAI,IAAI,IAAI,CAAC,cAAc,EAAE;OACvB,IAAI,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,EAAE;AACrD,SAAQ,IAAI,CAAC,KAAK,GAAG,KAAK;SAClB;AACR,OAAA;;OAEM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC;;OAExC;SACE,IAAI,CAAC,OAAO;AACpB,SAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM;SACpE;AACR,SAAQ,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC;AAChC,OAAA;AACA,KAAA;;AAEA,KAAI,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE;AAC7B,OAAM,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,EAAE,CAAC;OAC7B;AACN,KAAA;;AAEA,KAAI,IAAI,IAAI,CAAC,WAAW,EAAE;AAC1B,OAAM,IAAI,CAAC,MAAM,GAAG,SAAS;AAC7B,OAAM,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC;OACzB;AACN,KAAA;;AAEA,KAAI,IAAI,IAAI,CAAC,MAAM,EAAE;AACrB;AACA;AACA;AACA;AACA,OAAM,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,mBAAmB;AACpD,OAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;AAChC,KAAA;;AAEA,KAAI,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;AACxB,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE,UAAU,CAAC,IAAI,EAAE,EAAE,EAAE;KACnB,MAAM,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,aAAa,CAAC;;AAE/E,KAAI,iBAAiB,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK;AAChE,OAAM,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC;;AAE7B,OAAM,IAAI,GAAG,CAAC,MAAM,EAAE;AACtB,SAAQ,IAAI,CAAC,cAAc,IAAI,GAAG,CAAC,MAAM;AACzC,SAAQ,IAAI,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,GAAG,CAAC,EAAE;AAC5E,WAAU,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW;AACxC,aAAY,UAAU;AACtB,aAAY,2BAA2B;AACvC,aAAY,KAAK;AACjB,aAAY,IAAI;aACJ;YACD;;WAED,EAAE,CAAC,KAAK,CAAC;WACT;AACV,SAAA;;AAEA,SAAQ,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC;AACjC,OAAA;;AAEA,OAAM,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;AAC1B,OAAM,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;AACtD,KAAA,CAAK,CAAC;AACN,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;GACE,WAAW,CAAC,EAAE,EAAE;AAClB,KAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;AACpB,OAAM,IAAI,CAAC,MAAM,GAAG,QAAQ;OACtB;AACN,KAAA;;AAEA,KAAI,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc;AAC7C,KAAI,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU;;AAErC,KAAI,IAAI,CAAC,mBAAmB,GAAG,CAAC;AAChC,KAAI,IAAI,CAAC,cAAc,GAAG,CAAC;AAC3B,KAAI,IAAI,CAAC,WAAW,GAAG,CAAC;AACxB,KAAI,IAAI,CAAC,UAAU,GAAG,EAAE;;AAExB,KAAI,IAAI,IAAI,CAAC,OAAO,KAAK,CAAC,EAAE;AAC5B,OAAM,IAAI,IAAI;;AAEd,OAAM,IAAI,IAAI,CAAC,WAAW,KAAK,YAAY,EAAE;AAC7C,SAAQ,IAAI,GAAG,MAAM,CAAC,SAAS,EAAE,aAAa,CAAC;AAC/C,OAAA,CAAO,MAAM,IAAI,IAAI,CAAC,WAAW,KAAK,aAAa,EAAE;SAC7C,IAAI,GAAG,aAAa,CAAC,MAAM,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;AAC9D,OAAA,CAAO,MAAM,IAAI,IAAI,CAAC,WAAW,KAAK,MAAM,EAAE;AAC9C,SAAQ,IAAI,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC;AAClC,OAAA,CAAO,MAAM;SACL,IAAI,GAAG,SAAS;AACxB,OAAA;;AAEA,OAAM,IAAI,IAAI,CAAC,uBAAuB,EAAE;SAChC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC;AACxC,SAAQ,IAAI,CAAC,MAAM,GAAG,QAAQ;AAC9B,OAAA,CAAO,MAAM;AACb,SAAQ,IAAI,CAAC,MAAM,GAAG,WAAW;SACzB,YAAY,CAAC,MAAM;WACjB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC;AAC1C,WAAU,IAAI,CAAC,MAAM,GAAG,QAAQ;AAChC,WAAU,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;AAC5B,SAAA,CAAS,CAAC;AACV,OAAA;AACA,KAAA,CAAK,MAAM;OACL,MAAM,GAAG,GAAG,MAAM,CAAC,SAAS,EAAE,aAAa,CAAC;;OAE5C,IAAI,CAAC,IAAI,CAAC,mBAAmB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE;AAC1D,SAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW;AACtC,WAAU,KAAK;AACf,WAAU,wBAAwB;AAClC,WAAU,IAAI;AACd,WAAU,IAAI;WACJ;UACD;;SAED,EAAE,CAAC,KAAK,CAAC;SACT;AACR,OAAA;;OAEM,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,uBAAuB,EAAE;SAC7D,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,KAAK,CAAC;AACxC,SAAQ,IAAI,CAAC,MAAM,GAAG,QAAQ;AAC9B,OAAA,CAAO,MAAM;AACb,SAAQ,IAAI,CAAC,MAAM,GAAG,WAAW;SACzB,YAAY,CAAC,MAAM;WACjB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,KAAK,CAAC;AAC1C,WAAU,IAAI,CAAC,MAAM,GAAG,QAAQ;AAChC,WAAU,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;AAC5B,SAAA,CAAS,CAAC;AACV,OAAA;AACA,KAAA;AACA,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE,cAAc,CAAC,IAAI,EAAE,EAAE,EAAE;AAC3B,KAAI,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,EAAE;AAC/B,OAAM,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;AAC7B,SAAQ,IAAI,CAAC,KAAK,GAAG,KAAK;SAClB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,YAAY,CAAC;SACzC,IAAI,CAAC,GAAG,EAAE;AAClB,OAAA,CAAO,MAAM;SACL,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;;AAEzC,SAAQ,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE;AACtC,WAAU,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW;AACxC,aAAY,UAAU;AACtB,aAAY,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAC;AACzC,aAAY,IAAI;AAChB,aAAY,IAAI;aACJ;YACD;;WAED,EAAE,CAAC,KAAK,CAAC;WACT;AACV,SAAA;;AAEA,SAAQ,MAAM,GAAG,GAAG,IAAI,UAAU;WACxB,IAAI,CAAC,MAAM;AACrB,WAAU,IAAI,CAAC,UAAU,GAAG,CAAC;WACnB,IAAI,CAAC,MAAM,GAAG;UACf;;SAED,IAAI,CAAC,IAAI,CAAC,mBAAmB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE;AAC5D,WAAU,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW;AACxC,aAAY,KAAK;AACjB,aAAY,wBAAwB;AACpC,aAAY,IAAI;AAChB,aAAY,IAAI;aACJ;YACD;;WAED,EAAE,CAAC,KAAK,CAAC;WACT;AACV,SAAA;;AAEA,SAAQ,IAAI,CAAC,KAAK,GAAG,KAAK;SAClB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,GAAG,CAAC;SAChC,IAAI,CAAC,GAAG,EAAE;AAClB,OAAA;;AAEA,OAAM,IAAI,CAAC,MAAM,GAAG,QAAQ;OACtB;AACN,KAAA;;AAEA,KAAI,IAAI,IAAI,CAAC,uBAAuB,EAAE;AACtC,OAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,KAAK,IAAI,GAAG,MAAM,GAAG,MAAM,EAAE,IAAI,CAAC;AAC9D,OAAM,IAAI,CAAC,MAAM,GAAG,QAAQ;AAC5B,KAAA,CAAK,MAAM;AACX,OAAM,IAAI,CAAC,MAAM,GAAG,WAAW;OACzB,YAAY,CAAC,MAAM;AACzB,SAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,KAAK,IAAI,GAAG,MAAM,GAAG,MAAM,EAAE,IAAI,CAAC;AAChE,SAAQ,IAAI,CAAC,MAAM,GAAG,QAAQ;AAC9B,SAAQ,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;AAC1B,OAAA,CAAO,CAAC;AACR,KAAA;AACA,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;GACE,WAAW,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE;AACjE,KAAI,IAAI,CAAC,KAAK,GAAG,KAAK;AACtB,KAAI,IAAI,CAAC,QAAQ,GAAG,IAAI;;AAExB,KAAI,MAAM,GAAG,GAAG,IAAI,SAAS;OACvB,MAAM,GAAG,CAAC,yBAAyB,EAAE,OAAO,CAAC,CAAC,GAAG;MAClD;;KAED,KAAK,CAAC,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,WAAW,CAAC;AAClD,KAAI,GAAG,CAAC,IAAI,GAAG,SAAS;AACxB,KAAI,GAAG,CAAC,WAAW,CAAC,GAAG,UAAU;AACjC,KAAI,OAAO,GAAG;AACd,GAAA;AACA;;AAEA,CAAA,QAAc,GAAG,QAAQ;;;;;;;;;;;;;AC7rBzB,CAAA,MAAM,EAAE,MAAM,EAAE,GAAGP,YAAiB;AACpC,CAAA,MAAM,EAAE,cAAc,EAAE,GAAG,UAAiB;;CAE5C,MAAM,iBAAiB,GAAGI,wBAAA,EAA+B;CACzD,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,IAAI,EAAE,GAAGC,gBAAA,EAAsB;AACjE,CAAA,MAAM,EAAE,MAAM,EAAE,iBAAiB,EAAE,GAAGE,iBAAA,EAAuB;CAC7D,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAGC,iBAAA,EAAwB;;AAE9D,CAAA,MAAM,WAAW,GAAG,MAAM,CAAC,aAAa,CAAC;AACzC,CAAA,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AAClC,CAAA,MAAM,gBAAgB,GAAG,CAAC,GAAG,IAAI;AACjC,CAAA,IAAI,UAAU;CACd,IAAI,iBAAiB,GAAG,gBAAgB;;CAExC,MAAM,OAAO,GAAG,CAAC;CACjB,MAAM,SAAS,GAAG,CAAC;CACnB,MAAM,aAAa,GAAG,CAAC;;AAEvB;AACA;AACA;AACA,CAAA,MAAM,MAAM,CAAC;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE;AAChD,KAAI,IAAI,CAAC,WAAW,GAAG,UAAU,IAAI,EAAE;;KAEnC,IAAI,YAAY,EAAE;AACtB,OAAM,IAAI,CAAC,aAAa,GAAG,YAAY;OACjC,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,KAAA;;AAEA,KAAI,IAAI,CAAC,OAAO,GAAG,MAAM;;AAEzB,KAAI,IAAI,CAAC,cAAc,GAAG,IAAI;AAC9B,KAAI,IAAI,CAAC,SAAS,GAAG,KAAK;;AAE1B,KAAI,IAAI,CAAC,cAAc,GAAG,CAAC;AAC3B,KAAI,IAAI,CAAC,MAAM,GAAG,EAAE;AACpB,KAAI,IAAI,CAAC,MAAM,GAAG,OAAO;AACzB,KAAI,IAAI,CAAC,OAAO,GAAG,IAAI;AACvB,KAAI,IAAI,CAAC,UAAU,CAAC,GAAG,SAAS;AAChC,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE,OAAO,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE;AAC9B,KAAI,IAAI,IAAI;KACR,IAAI,KAAK,GAAG,KAAK;KACjB,IAAI,MAAM,GAAG,CAAC;KACd,IAAI,WAAW,GAAG,KAAK;;AAE3B,KAAI,IAAI,OAAO,CAAC,IAAI,EAAE;AACtB,OAAM,IAAI,GAAG,OAAO,CAAC,UAAU,IAAI,UAAU;;AAE7C,OAAM,IAAI,OAAO,CAAC,YAAY,EAAE;AAChC,SAAQ,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC;AAClC,OAAA,CAAO,MAAM;AACb,SAAQ,IAAI,iBAAiB,KAAK,gBAAgB,EAAE;AACpD;AACA,WAAU,IAAI,UAAU,KAAK,SAAS,EAAE;AACxC;AACA;AACA;AACA;AACA,aAAY,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC;AACvD,WAAA;;AAEA,WAAU,cAAc,CAAC,UAAU,EAAE,CAAC,EAAE,gBAAgB,CAAC;WAC/C,iBAAiB,GAAG,CAAC;AAC/B,SAAA;;SAEQ,IAAI,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,iBAAiB,EAAE,CAAC;SACzC,IAAI,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,iBAAiB,EAAE,CAAC;SACzC,IAAI,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,iBAAiB,EAAE,CAAC;SACzC,IAAI,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,iBAAiB,EAAE,CAAC;AACjD,OAAA;;OAEM,WAAW,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;OAC3D,MAAM,GAAG,CAAC;AAChB,KAAA;;AAEA,KAAI,IAAI,UAAU;;AAElB,KAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;OAC5B;AACN,SAAQ,CAAC,CAAC,OAAO,CAAC,IAAI,IAAI,WAAW;AACrC,SAAQ,OAAO,CAAC,WAAW,CAAC,KAAK;SACzB;AACR,SAAQ,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC;AACzC,OAAA,CAAO,MAAM;AACb,SAAQ,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;AAChC,SAAQ,UAAU,GAAG,IAAI,CAAC,MAAM;AAChC,OAAA;AACA,KAAA,CAAK,MAAM;AACX,OAAM,UAAU,GAAG,IAAI,CAAC,MAAM;OACxB,KAAK,GAAG,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,QAAQ,IAAI,CAAC,WAAW;AAC9D,KAAA;;KAEI,IAAI,aAAa,GAAG,UAAU;;AAElC,KAAI,IAAI,UAAU,IAAI,KAAK,EAAE;OACvB,MAAM,IAAI,CAAC;OACX,aAAa,GAAG,GAAG;AACzB,KAAA,CAAK,MAAM,IAAI,UAAU,GAAG,GAAG,EAAE;OAC3B,MAAM,IAAI,CAAC;OACX,aAAa,GAAG,GAAG;AACzB,KAAA;;AAEA,KAAI,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,KAAK,GAAG,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC;;AAE3E,KAAI,MAAM,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,GAAG,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM;KAChE,IAAI,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI;;AAEvC,KAAI,MAAM,CAAC,CAAC,CAAC,GAAG,aAAa;;AAE7B,KAAI,IAAI,aAAa,KAAK,GAAG,EAAE;AAC/B,OAAM,MAAM,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC,CAAC;AACzC,KAAA,CAAK,MAAM,IAAI,aAAa,KAAK,GAAG,EAAE;OAChC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC;OACzB,MAAM,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC;AAC1C,KAAA;;KAEI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC;;AAE5C,KAAI,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI;KACjB,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;KAC5B,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;KAC5B,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;KAC5B,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;;KAE5B,IAAI,WAAW,EAAE,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC;;KAEtC,IAAI,KAAK,EAAE;OACT,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC;OACjD,OAAO,CAAC,MAAM,CAAC;AACrB,KAAA;;KAEI,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,UAAU,CAAC;AAC9C,KAAI,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC;AACzB,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;GACE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE;AAC9B,KAAI,IAAI,GAAG;;AAEX,KAAI,IAAI,IAAI,KAAK,SAAS,EAAE;OACtB,GAAG,GAAG,YAAY;AACxB,KAAA,CAAK,MAAM,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE;AACrE,OAAM,MAAM,IAAI,SAAS,CAAC,kDAAkD,CAAC;KAC7E,CAAK,MAAM,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AACnD,OAAM,GAAG,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;AACjC,OAAM,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC;AAChC,KAAA,CAAK,MAAM;OACL,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC;;AAE5C,OAAM,IAAI,MAAM,GAAG,GAAG,EAAE;AACxB,SAAQ,MAAM,IAAI,UAAU,CAAC,gDAAgD,CAAC;AAC9E,OAAA;;OAEM,GAAG,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,MAAM,CAAC;AAC1C,OAAM,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC;;AAEhC,OAAM,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AACpC,SAAQ,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;AAC1B,OAAA,CAAO,MAAM;AACb,SAAQ,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;AACxB,OAAA;AACA,KAAA;;KAEI,MAAM,OAAO,GAAG;AACpB,OAAM,CAAC,WAAW,GAAG,GAAG,CAAC,MAAM;OACzB,GAAG,EAAE,IAAI;AACf,OAAM,YAAY,EAAE,IAAI,CAAC,aAAa;AACtC,OAAM,IAAI;AACV,OAAM,UAAU,EAAE,IAAI,CAAC,WAAW;OAC5B,MAAM,EAAE,IAAI;OACZ,QAAQ,EAAE,KAAK;AACrB,OAAM,IAAI,EAAE;MACP;;AAEL,KAAI,IAAI,IAAI,CAAC,MAAM,KAAK,OAAO,EAAE;AACjC,OAAM,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;AAC5D,KAAA,CAAK,MAAM;AACX,OAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC;AACpD,KAAA;AACA,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE;AACvB,KAAI,IAAI,UAAU;AAClB,KAAI,IAAI,QAAQ;;AAEhB,KAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AAClC,OAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC;OACpC,QAAQ,GAAG,KAAK;AACtB,KAAA,CAAK,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE;AAC7B,OAAM,UAAU,GAAG,IAAI,CAAC,IAAI;OACtB,QAAQ,GAAG,KAAK;AACtB,KAAA,CAAK,MAAM;AACX,OAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;AAC3B,OAAM,UAAU,GAAG,IAAI,CAAC,MAAM;AAC9B,OAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ;AAClC,KAAA;;AAEA,KAAI,IAAI,UAAU,GAAG,GAAG,EAAE;AAC1B,OAAM,MAAM,IAAI,UAAU,CAAC,kDAAkD,CAAC;AAC9E,KAAA;;KAEI,MAAM,OAAO,GAAG;OACd,CAAC,WAAW,GAAG,UAAU;OACzB,GAAG,EAAE,IAAI;AACf,OAAM,YAAY,EAAE,IAAI,CAAC,aAAa;AACtC,OAAM,IAAI;AACV,OAAM,UAAU,EAAE,IAAI,CAAC,WAAW;OAC5B,MAAM,EAAE,IAAI;AAClB,OAAM,QAAQ;AACd,OAAM,IAAI,EAAE;MACP;;AAEL,KAAI,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE;AACtB,OAAM,IAAI,IAAI,CAAC,MAAM,KAAK,OAAO,EAAE;AACnC,SAAQ,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;AAClE,OAAA,CAAO,MAAM;SACL,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC;AAClD,OAAA;AACA,KAAA,CAAK,MAAM,IAAI,IAAI,CAAC,MAAM,KAAK,OAAO,EAAE;AACxC,OAAM,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;AAC7D,KAAA,CAAK,MAAM;AACX,OAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC;AACrD,KAAA;AACA,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE;AACvB,KAAI,IAAI,UAAU;AAClB,KAAI,IAAI,QAAQ;;AAEhB,KAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AAClC,OAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC;OACpC,QAAQ,GAAG,KAAK;AACtB,KAAA,CAAK,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE;AAC7B,OAAM,UAAU,GAAG,IAAI,CAAC,IAAI;OACtB,QAAQ,GAAG,KAAK;AACtB,KAAA,CAAK,MAAM;AACX,OAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;AAC3B,OAAM,UAAU,GAAG,IAAI,CAAC,MAAM;AAC9B,OAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ;AAClC,KAAA;;AAEA,KAAI,IAAI,UAAU,GAAG,GAAG,EAAE;AAC1B,OAAM,MAAM,IAAI,UAAU,CAAC,kDAAkD,CAAC;AAC9E,KAAA;;KAEI,MAAM,OAAO,GAAG;OACd,CAAC,WAAW,GAAG,UAAU;OACzB,GAAG,EAAE,IAAI;AACf,OAAM,YAAY,EAAE,IAAI,CAAC,aAAa;AACtC,OAAM,IAAI;AACV,OAAM,UAAU,EAAE,IAAI,CAAC,WAAW;OAC5B,MAAM,EAAE,IAAI;AAClB,OAAM,QAAQ;AACd,OAAM,IAAI,EAAE;MACP;;AAEL,KAAI,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE;AACtB,OAAM,IAAI,IAAI,CAAC,MAAM,KAAK,OAAO,EAAE;AACnC,SAAQ,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;AAClE,OAAA,CAAO,MAAM;SACL,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC;AAClD,OAAA;AACA,KAAA,CAAK,MAAM,IAAI,IAAI,CAAC,MAAM,KAAK,OAAO,EAAE;AACxC,OAAM,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;AAC7D,KAAA,CAAK,MAAM;AACX,OAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC;AACrD,KAAA;AACA,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE;KACtB,MAAM,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,aAAa,CAAC;KAC3E,IAAI,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC;AACvC,KAAI,IAAI,IAAI,GAAG,OAAO,CAAC,QAAQ;;AAE/B,KAAI,IAAI,UAAU;AAClB,KAAI,IAAI,QAAQ;;AAEhB,KAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AAClC,OAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC;OACpC,QAAQ,GAAG,KAAK;AACtB,KAAA,CAAK,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE;AAC7B,OAAM,UAAU,GAAG,IAAI,CAAC,IAAI;OACtB,QAAQ,GAAG,KAAK;AACtB,KAAA,CAAK,MAAM;AACX,OAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;AAC3B,OAAM,UAAU,GAAG,IAAI,CAAC,MAAM;AAC9B,OAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ;AAClC,KAAA;;AAEA,KAAI,IAAI,IAAI,CAAC,cAAc,EAAE;AAC7B,OAAM,IAAI,CAAC,cAAc,GAAG,KAAK;OAC3B;AACN,SAAQ,IAAI;AACZ,SAAQ,iBAAiB;SACjB,iBAAiB,CAAC,MAAM;AAChC,WAAU,iBAAiB,CAAC;eACd;eACA;AACd;SACQ;AACR,SAAQ,IAAI,GAAG,UAAU,IAAI,iBAAiB,CAAC,UAAU;AACzD,OAAA;AACA,OAAM,IAAI,CAAC,SAAS,GAAG,IAAI;AAC3B,KAAA,CAAK,MAAM;OACL,IAAI,GAAG,KAAK;OACZ,MAAM,GAAG,CAAC;AAChB,KAAA;;KAEI,IAAI,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,cAAc,GAAG,IAAI;;KAE3C,MAAM,IAAI,GAAG;OACX,CAAC,WAAW,GAAG,UAAU;AAC/B,OAAM,GAAG,EAAE,OAAO,CAAC,GAAG;AACtB,OAAM,YAAY,EAAE,IAAI,CAAC,aAAa;AACtC,OAAM,IAAI,EAAE,OAAO,CAAC,IAAI;AACxB,OAAM,UAAU,EAAE,IAAI,CAAC,WAAW;AAClC,OAAM,MAAM;AACZ,OAAM,QAAQ;OACR;MACD;;AAEL,KAAI,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE;AACtB,OAAM,IAAI,IAAI,CAAC,MAAM,KAAK,OAAO,EAAE;AACnC,SAAQ,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;AACxE,OAAA,CAAO,MAAM;AACb,SAAQ,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC;AACxD,OAAA;AACA,KAAA,CAAK,MAAM,IAAI,IAAI,CAAC,MAAM,KAAK,OAAO,EAAE;AACxC,OAAM,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;AACnE,KAAA,CAAK,MAAM;AACX,OAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC;AACnD,KAAA;AACA,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;GACE,WAAW,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE;AAC3C,KAAI,IAAI,CAAC,cAAc,IAAI,OAAO,CAAC,WAAW,CAAC;AAC/C,KAAI,IAAI,CAAC,MAAM,GAAG,aAAa;;KAE3B;AACJ,QAAO,WAAW;AAClB,QAAO,IAAI,CAAC,CAAC,WAAW,KAAK;AAC7B,SAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;AACpC,WAAU,MAAM,GAAG,GAAG,IAAI,KAAK;aACnB;YACD;;AAEX;AACA;AACA;AACA;AACA;WACU,OAAO,CAAC,QAAQ,CAAC,aAAa,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC;WAC9C;AACV,SAAA;;AAEA,SAAQ,IAAI,CAAC,cAAc,IAAI,OAAO,CAAC,WAAW,CAAC;AACnD,SAAQ,MAAM,IAAI,GAAG,QAAQ,CAAC,WAAW,CAAC;;SAElC,IAAI,CAAC,QAAQ,EAAE;AACvB,WAAU,IAAI,CAAC,MAAM,GAAG,OAAO;AAC/B,WAAU,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC;WAC/C,IAAI,CAAC,OAAO,EAAE;AACxB,SAAA,CAAS,MAAM;WACL,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,CAAC;AACpD,SAAA;OACA,CAAO;AACP,QAAO,KAAK,CAAC,CAAC,GAAG,KAAK;AACtB;AACA;AACA;AACA;SACQ,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC;AAChD,OAAA,CAAO,CAAC;AACR,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;GACE,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE;KACpC,IAAI,CAAC,QAAQ,EAAE;AACnB,OAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC;OAC/C;AACN,KAAA;;KAEI,MAAM,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,aAAa,CAAC;;AAE/E,KAAI,IAAI,CAAC,cAAc,IAAI,OAAO,CAAC,WAAW,CAAC;AAC/C,KAAI,IAAI,CAAC,MAAM,GAAG,SAAS;AAC3B,KAAI,iBAAiB,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK;AAC9D,OAAM,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;AAClC,SAAQ,MAAM,GAAG,GAAG,IAAI,KAAK;WACnB;UACD;;AAET,SAAQ,aAAa,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC;SAC5B;AACR,OAAA;;AAEA,OAAM,IAAI,CAAC,cAAc,IAAI,OAAO,CAAC,WAAW,CAAC;AACjD,OAAM,IAAI,CAAC,MAAM,GAAG,OAAO;AAC3B,OAAM,OAAO,CAAC,QAAQ,GAAG,KAAK;AAC9B,OAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC;OAC9C,IAAI,CAAC,OAAO,EAAE;AACpB,KAAA,CAAK,CAAC;AACN,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAE,OAAO,GAAG;AACZ,KAAI,OAAO,IAAI,CAAC,MAAM,KAAK,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;OACpD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;;OAElC,IAAI,CAAC,cAAc,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;AACnD,OAAM,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACrD,KAAA;AACA,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;GACE,OAAO,CAAC,MAAM,EAAE;KACd,IAAI,CAAC,cAAc,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;AACjD,KAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;AAC5B,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE,SAAS,CAAC,IAAI,EAAE,EAAE,EAAE;AACtB,KAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;AAC3B,OAAM,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;OACnB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjC,OAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AACrC,OAAM,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;AAC3B,KAAA,CAAK,MAAM;AACX,OAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AACrC,KAAA;AACA,GAAA;AACA;;AAEA,CAAA,MAAc,GAAG,MAAM;;AAEvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,aAAa,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE;GACtC,IAAI,OAAO,EAAE,KAAK,UAAU,EAAE,EAAE,CAAC,GAAG,CAAC;;AAEvC,GAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;KAC7C,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;KAC/B,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;;KAE1C,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE,QAAQ,CAAC,GAAG,CAAC;AACrD,GAAA;AACA,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE;AAClC,GAAE,aAAa,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC;AAChC,GAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;AACrB,CAAA;;;;;;;;;;;ACvlBA,CAAA,MAAM,EAAE,oBAAoB,EAAE,SAAS,EAAE,GAAGR,gBAAA,EAAsB;;AAElE,CAAA,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC;AAC7B,CAAA,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC;AAC7B,CAAA,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC/B,CAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC;AACnC,CAAA,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC;AACjC,CAAA,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC;AACjC,CAAA,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC;AAC7B,CAAA,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC;;AAErC;AACA;AACA;AACA,CAAA,MAAM,KAAK,CAAC;AACZ;AACA;AACA;AACA;AACA;AACA;GACE,WAAW,CAAC,IAAI,EAAE;AACpB,KAAI,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI;AACxB,KAAI,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI;AACtB,GAAA;;AAEA;AACA;AACA;GACE,IAAI,MAAM,GAAG;AACf,KAAI,OAAO,IAAI,CAAC,OAAO,CAAC;AACxB,GAAA;;AAEA;AACA;AACA;GACE,IAAI,IAAI,GAAG;AACb,KAAI,OAAO,IAAI,CAAC,KAAK,CAAC;AACtB,GAAA;AACA;;AAEA,CAAA,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,SAAS,EAAE,QAAQ,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;AACtE,CAAA,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;;AAEpE;AACA;AACA;AACA;AACA;CACA,MAAM,UAAU,SAAS,KAAK,CAAC;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE,WAAW,CAAC,IAAI,EAAE,OAAO,GAAG,EAAE,EAAE;KAC9B,KAAK,CAAC,IAAI,CAAC;;AAEf,KAAI,IAAI,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,IAAI,KAAK,SAAS,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI;AAC/D,KAAI,IAAI,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,KAAK,SAAS,GAAG,EAAE,GAAG,OAAO,CAAC,MAAM;AACtE,KAAI,IAAI,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,QAAQ,KAAK,SAAS,GAAG,KAAK,GAAG,OAAO,CAAC,QAAQ;AAC/E,GAAA;;AAEA;AACA;AACA;GACE,IAAI,IAAI,GAAG;AACb,KAAI,OAAO,IAAI,CAAC,KAAK,CAAC;AACtB,GAAA;;AAEA;AACA;AACA;GACE,IAAI,MAAM,GAAG;AACf,KAAI,OAAO,IAAI,CAAC,OAAO,CAAC;AACxB,GAAA;;AAEA;AACA;AACA;GACE,IAAI,QAAQ,GAAG;AACjB,KAAI,OAAO,IAAI,CAAC,SAAS,CAAC;AAC1B,GAAA;AACA;;AAEA,CAAA,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;AACzE,CAAA,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,SAAS,EAAE,QAAQ,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;AAC3E,CAAA,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,SAAS,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;;AAE7E;AACA;AACA;AACA;AACA;CACA,MAAM,UAAU,SAAS,KAAK,CAAC;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE,WAAW,CAAC,IAAI,EAAE,OAAO,GAAG,EAAE,EAAE;KAC9B,KAAK,CAAC,IAAI,CAAC;;AAEf,KAAI,IAAI,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,KAAK,SAAS,GAAG,IAAI,GAAG,OAAO,CAAC,KAAK;AACrE,KAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,OAAO,KAAK,SAAS,GAAG,EAAE,GAAG,OAAO,CAAC,OAAO;AACzE,GAAA;;AAEA;AACA;AACA;GACE,IAAI,KAAK,GAAG;AACd,KAAI,OAAO,IAAI,CAAC,MAAM,CAAC;AACvB,GAAA;;AAEA;AACA;AACA;GACE,IAAI,OAAO,GAAG;AAChB,KAAI,OAAO,IAAI,CAAC,QAAQ,CAAC;AACzB,GAAA;AACA;;AAEA,CAAA,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,SAAS,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;AAC1E,CAAA,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,SAAS,EAAE,SAAS,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;;AAE5E;AACA;AACA;AACA;AACA;CACA,MAAM,YAAY,SAAS,KAAK,CAAC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE,WAAW,CAAC,IAAI,EAAE,OAAO,GAAG,EAAE,EAAE;KAC9B,KAAK,CAAC,IAAI,CAAC;;AAEf,KAAI,IAAI,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,IAAI,KAAK,SAAS,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI;AAClE,GAAA;;AAEA;AACA;AACA;GACE,IAAI,IAAI,GAAG;AACb,KAAI,OAAO,IAAI,CAAC,KAAK,CAAC;AACtB,GAAA;AACA;;AAEA,CAAA,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;;AAE3E;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,MAAM,WAAW,GAAG;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;GACE,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,GAAG,EAAE,EAAE;KAC5C,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;OAC3C;AACN,SAAQ,CAAC,OAAO,CAAC,oBAAoB,CAAC;AACtC,SAAQ,QAAQ,CAAC,SAAS,CAAC,KAAK,OAAO;SAC/B,CAAC,QAAQ,CAAC,oBAAoB;SAC9B;SACA;AACR,OAAA;AACA,KAAA;;AAEA,KAAI,IAAI,OAAO;;AAEf,KAAI,IAAI,IAAI,KAAK,SAAS,EAAE;OACtB,OAAO,GAAG,SAAS,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE;AACnD,SAAQ,MAAM,KAAK,GAAG,IAAI,YAAY,CAAC,SAAS,EAAE;WACxC,IAAI,EAAE,QAAQ,GAAG,IAAI,GAAG,IAAI,CAAC,QAAQ;AAC/C,UAAS,CAAC;;AAEV,SAAQ,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI;AAC7B,SAAQ,YAAY,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC;OAC1C,CAAO;AACP,KAAA,CAAK,MAAM,IAAI,IAAI,KAAK,OAAO,EAAE;OAC3B,OAAO,GAAG,SAAS,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE;AAChD,SAAQ,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,OAAO,EAAE;AAC9C,WAAU,IAAI;AACd,WAAU,MAAM,EAAE,OAAO,CAAC,QAAQ,EAAE;AACpC,WAAU,QAAQ,EAAE,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC;AACrD,UAAS,CAAC;;AAEV,SAAQ,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI;AAC7B,SAAQ,YAAY,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC;OAC1C,CAAO;AACP,KAAA,CAAK,MAAM,IAAI,IAAI,KAAK,OAAO,EAAE;AACjC,OAAM,OAAO,GAAG,SAAS,OAAO,CAAC,KAAK,EAAE;AACxC,SAAQ,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,OAAO,EAAE;AAC9C,WAAU,KAAK;WACL,OAAO,EAAE,KAAK,CAAC;AACzB,UAAS,CAAC;;AAEV,SAAQ,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI;AAC7B,SAAQ,YAAY,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC;OAC1C,CAAO;AACP,KAAA,CAAK,MAAM,IAAI,IAAI,KAAK,MAAM,EAAE;AAChC,OAAM,OAAO,GAAG,SAAS,MAAM,GAAG;AAClC,SAAQ,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC;;AAEvC,SAAQ,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI;AAC7B,SAAQ,YAAY,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC;OAC1C,CAAO;AACP,KAAA,CAAK,MAAM;OACL;AACN,KAAA;;KAEI,OAAO,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC;AACnE,KAAI,OAAO,CAAC,SAAS,CAAC,GAAG,OAAO;;AAEhC,KAAI,IAAI,OAAO,CAAC,IAAI,EAAE;AACtB,OAAM,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC;AAC9B,KAAA,CAAK,MAAM;AACX,OAAM,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC;AAC5B,KAAA;GACA,CAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE,mBAAmB,CAAC,IAAI,EAAE,OAAO,EAAE;KACjC,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;AACjD,OAAM,IAAI,QAAQ,CAAC,SAAS,CAAC,KAAK,OAAO,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE;AAC9E,SAAQ,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC;SACnC;AACR,OAAA;AACA,KAAA;AACA,GAAA;EACC;;AAED,CAAA,WAAc,GAAG;AACjB,GAAE,UAAU;AACZ,GAAE,UAAU;AACZ,GAAE,KAAK;AACP,GAAE,WAAW;GACX;EACD;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,YAAY,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE;GAC9C,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,CAAC,WAAW,EAAE;KACxD,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC;AAC9C,GAAA,CAAG,MAAM;AACT,KAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC;AACjC,GAAA;AACA,CAAA;;;;;;;;;;;ACjSA,CAAA,MAAM,EAAE,UAAU,EAAE,GAAGA,iBAAA,EAAuB;;AAE9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;AAChC,GAAE,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;QAC5C,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;AAC5B,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,KAAK,CAAC,MAAM,EAAE;GACrB,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;GAClC,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;GAChC,IAAI,YAAY,GAAG,KAAK;GACxB,IAAI,UAAU,GAAG,KAAK;GACtB,IAAI,QAAQ,GAAG,KAAK;AACtB,GAAE,IAAI,aAAa;AACnB,GAAE,IAAI,SAAS;AACf,GAAE,IAAI,KAAK,GAAG,EAAE;AAChB,GAAE,IAAI,IAAI,GAAG,EAAE;AACf,GAAE,IAAI,GAAG,GAAG,EAAE;GACZ,IAAI,CAAC,GAAG,CAAC;;GAET,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACjC,KAAI,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;;AAE/B,KAAI,IAAI,aAAa,KAAK,SAAS,EAAE;AACrC,OAAM,IAAI,GAAG,KAAK,EAAE,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;SACxC,IAAI,KAAK,KAAK,EAAE,EAAE,KAAK,GAAG,CAAC;AACnC,OAAA,CAAO,MAAM;SACL,CAAC,KAAK,CAAC;AACf,UAAS,IAAI,KAAK,IAAI,cAAc,IAAI,KAAK,IAAI,CAAC;SAC1C;AACR,SAAQ,IAAI,GAAG,KAAK,EAAE,IAAI,KAAK,KAAK,EAAE,EAAE,GAAG,GAAG,CAAC;OAC/C,CAAO,MAAM,IAAI,IAAI,KAAK,IAAI,cAAc,IAAI,KAAK,IAAI,YAAY;AACrE,SAAQ,IAAI,KAAK,KAAK,EAAE,EAAE;WAChB,MAAM,IAAI,WAAW,CAAC,CAAC,8BAA8B,EAAE,CAAC,CAAC,CAAC,CAAC;AACrE,SAAA;;SAEQ,IAAI,GAAG,KAAK,EAAE,EAAE,GAAG,GAAG,CAAC;SACvB,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC;AAC7C,SAAQ,IAAI,IAAI,KAAK,IAAI,EAAE;AAC3B,WAAU,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC;AACpC,WAAU,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;AACtC,SAAA,CAAS,MAAM;WACL,aAAa,GAAG,IAAI;AAC9B,SAAA;;AAEA,SAAQ,KAAK,GAAG,GAAG,GAAG,EAAE;AACxB,OAAA,CAAO,MAAM;SACL,MAAM,IAAI,WAAW,CAAC,CAAC,8BAA8B,EAAE,CAAC,CAAC,CAAC,CAAC;AACnE,OAAA;AACA,KAAA,CAAK,MAAM,IAAI,SAAS,KAAK,SAAS,EAAE;AACxC,OAAM,IAAI,GAAG,KAAK,EAAE,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;SACxC,IAAI,KAAK,KAAK,EAAE,EAAE,KAAK,GAAG,CAAC;OACnC,CAAO,MAAM,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,EAAE;AACjD,SAAQ,IAAI,GAAG,KAAK,EAAE,IAAI,KAAK,KAAK,EAAE,EAAE,GAAG,GAAG,CAAC;OAC/C,CAAO,MAAM,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,EAAE;AACjD,SAAQ,IAAI,KAAK,KAAK,EAAE,EAAE;WAChB,MAAM,IAAI,WAAW,CAAC,CAAC,8BAA8B,EAAE,CAAC,CAAC,CAAC,CAAC;AACrE,SAAA;;SAEQ,IAAI,GAAG,KAAK,EAAE,EAAE,GAAG,GAAG,CAAC;AAC/B,SAAQ,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC;AACpD,SAAQ,IAAI,IAAI,KAAK,IAAI,EAAE;AAC3B,WAAU,IAAI,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,CAAC;AAC7C,WAAU,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;WAC5B,aAAa,GAAG,SAAS;AACnC,SAAA;;AAEA,SAAQ,KAAK,GAAG,GAAG,GAAG,EAAE;AACxB,OAAA,CAAO,MAAM,IAAI,IAAI,KAAK,IAAI,cAAc,KAAK,KAAK,EAAE,IAAI,GAAG,KAAK,EAAE,EAAE;SAChE,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1C,SAAQ,KAAK,GAAG,GAAG,GAAG,EAAE;AACxB,OAAA,CAAO,MAAM;SACL,MAAM,IAAI,WAAW,CAAC,CAAC,8BAA8B,EAAE,CAAC,CAAC,CAAC,CAAC;AACnE,OAAA;AACA,KAAA,CAAK,MAAM;AACX;AACA;AACA;AACA;AACA;OACM,IAAI,UAAU,EAAE;AACtB,SAAQ,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;WAC1B,MAAM,IAAI,WAAW,CAAC,CAAC,8BAA8B,EAAE,CAAC,CAAC,CAAC,CAAC;AACrE,SAAA;SACQ,IAAI,KAAK,KAAK,EAAE,EAAE,KAAK,GAAG,CAAC;AACnC,cAAa,IAAI,CAAC,YAAY,EAAE,YAAY,GAAG,IAAI;SAC3C,UAAU,GAAG,KAAK;OAC1B,CAAO,MAAM,IAAI,QAAQ,EAAE;AAC3B,SAAQ,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;WAC1B,IAAI,KAAK,KAAK,EAAE,EAAE,KAAK,GAAG,CAAC;SACrC,CAAS,MAAM,IAAI,IAAI,KAAK,IAAI,cAAc,KAAK,KAAK,EAAE,EAAE;WAClD,QAAQ,GAAG,KAAK;WAChB,GAAG,GAAG,CAAC;AACjB,SAAA,CAAS,MAAM,IAAI,IAAI,KAAK,IAAI,YAAY;WAClC,UAAU,GAAG,IAAI;AAC3B,SAAA,CAAS,MAAM;WACL,MAAM,IAAI,WAAW,CAAC,CAAC,8BAA8B,EAAE,CAAC,CAAC,CAAC,CAAC;AACrE,SAAA;AACA,OAAA,CAAO,MAAM,IAAI,IAAI,KAAK,IAAI,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE;SAC7D,QAAQ,GAAG,IAAI;AACvB,OAAA,CAAO,MAAM,IAAI,GAAG,KAAK,EAAE,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;SAC/C,IAAI,KAAK,KAAK,EAAE,EAAE,KAAK,GAAG,CAAC;AACnC,OAAA,CAAO,MAAM,IAAI,KAAK,KAAK,EAAE,KAAK,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,CAAC,EAAE;SAC3D,IAAI,GAAG,KAAK,EAAE,EAAE,GAAG,GAAG,CAAC;OAC/B,CAAO,MAAM,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,EAAE;AACjD,SAAQ,IAAI,KAAK,KAAK,EAAE,EAAE;WAChB,MAAM,IAAI,WAAW,CAAC,CAAC,8BAA8B,EAAE,CAAC,CAAC,CAAC,CAAC;AACrE,SAAA;;SAEQ,IAAI,GAAG,KAAK,EAAE,EAAE,GAAG,GAAG,CAAC;SACvB,IAAI,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC;SACpC,IAAI,YAAY,EAAE;WAChB,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;WAChC,YAAY,GAAG,KAAK;AAC9B,SAAA;AACA,SAAQ,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC;AACtC,SAAQ,IAAI,IAAI,KAAK,IAAI,EAAE;AAC3B,WAAU,IAAI,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,CAAC;AAC7C,WAAU,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;WAC5B,aAAa,GAAG,SAAS;AACnC,SAAA;;SAEQ,SAAS,GAAG,SAAS;AAC7B,SAAQ,KAAK,GAAG,GAAG,GAAG,EAAE;AACxB,OAAA,CAAO,MAAM;SACL,MAAM,IAAI,WAAW,CAAC,CAAC,8BAA8B,EAAE,CAAC,CAAC,CAAC,CAAC;AACnE,OAAA;AACA,KAAA;AACA,GAAA;;AAEA,GAAE,IAAI,KAAK,KAAK,EAAE,IAAI,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,EAAE;AAClE,KAAI,MAAM,IAAI,WAAW,CAAC,yBAAyB,CAAC;AACpD,GAAA;;GAEE,IAAI,GAAG,KAAK,EAAE,EAAE,GAAG,GAAG,CAAC;GACvB,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC;AACxC,GAAE,IAAI,aAAa,KAAK,SAAS,EAAE;AACnC,KAAI,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC;AAC/B,GAAA,CAAG,MAAM;AACT,KAAI,IAAI,SAAS,KAAK,SAAS,EAAE;AACjC,OAAM,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC;KAC/B,CAAK,MAAM,IAAI,YAAY,EAAE;AAC7B,OAAM,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AACvD,KAAA,CAAK,MAAM;AACX,OAAM,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC;AACpC,KAAA;AACA,KAAI,IAAI,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,CAAC;AACvC,GAAA;;AAEA,GAAE,OAAO,MAAM;AACf,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,MAAM,CAAC,UAAU,EAAE;AAC5B,GAAE,OAAO,MAAM,CAAC,IAAI,CAAC,UAAU;AAC/B,MAAK,GAAG,CAAC,CAAC,SAAS,KAAK;AACxB,OAAM,IAAI,cAAc,GAAG,UAAU,CAAC,SAAS,CAAC;AAChD,OAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,cAAc,GAAG,CAAC,cAAc,CAAC;AAC3E,OAAM,OAAO;AACb,UAAS,GAAG,CAAC,CAAC,MAAM,KAAK;WACf,OAAO,CAAC,SAAS;AAC3B,cAAa,MAAM;eACL,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK;AAC7C,iBAAgB,IAAI,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC;AACtC,iBAAgB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,CAAC;AAC7D,iBAAgB,OAAO;oBACJ,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;oBACzC,IAAI,CAAC,IAAI,CAAC;eAC7B,CAAe;AACf;cACa,IAAI,CAAC,IAAI,CAAC;SACvB,CAAS;UACA,IAAI,CAAC,IAAI,CAAC;KACnB,CAAK;MACA,IAAI,CAAC,IAAI,CAAC;AACf,CAAA;;AAEA,CAAA,SAAc,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE;;;;;;;;;;;;;CCtMlC,MAAM,YAAY,GAAGA,YAAiB;CACtC,MAAM,KAAK,GAAGG,YAAgB;CAC9B,MAAM,IAAI,GAAG,UAAe;CAC5B,MAAM,GAAG,GAAG,UAAc;CAC1B,MAAM,GAAG,GAAG,UAAc;AAC1B,CAAA,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,GAAGK,UAAiB;AACrD,CAAA,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAGC,YAAiB;AAC9C,CAAA,MAAM,EAAE,GAAG,EAAE,GAAG,UAAc;;CAE9B,MAAM,iBAAiB,GAAGC,wBAAA,EAA+B;CACzD,MAAM,QAAQ,GAAGC,eAAA,EAAqB;CACtC,MAAM,MAAM,GAAGC,aAAA,EAAmB;AAClC,CAAA,MAAM,EAAE,MAAM,EAAE,GAAGC,iBAAA,EAAuB;;CAE1C,MAAM;AACN,GAAE,YAAY;AACd,GAAE,YAAY;AACd,GAAE,IAAI;AACN,GAAE,oBAAoB;AACtB,GAAE,SAAS;AACX,GAAE,WAAW;AACb,GAAE,UAAU;GACV;AACF,EAAC,GAAGC,gBAAA,EAAsB;CAC1B,MAAM;AACN,GAAE,WAAW,EAAE,EAAE,gBAAgB,EAAE,mBAAmB;AACtD,EAAC,GAAGC,kBAAA,EAAyB;AAC7B,CAAA,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAGC,gBAAA,EAAsB;AAChD,CAAA,MAAM,EAAE,QAAQ,EAAE,GAAGC,iBAAA,EAAwB;;AAE7C,CAAA,MAAM,YAAY,GAAG,EAAE,GAAG,IAAI;AAC9B,CAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC;AACnC,CAAA,MAAM,gBAAgB,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC;CAChC,MAAM,WAAW,GAAG,CAAC,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,CAAC;CAC/D,MAAM,gBAAgB,GAAG,gCAAgC;;AAEzD;AACA;AACA;AACA;AACA;CACA,MAAM,SAAS,SAAS,YAAY,CAAC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE,WAAW,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE;AAC3C,KAAI,KAAK,EAAE;;AAEX,KAAI,IAAI,CAAC,WAAW,GAAG,YAAY,CAAC,CAAC,CAAC;AACtC,KAAI,IAAI,CAAC,UAAU,GAAG,IAAI;AAC1B,KAAI,IAAI,CAAC,mBAAmB,GAAG,KAAK;AACpC,KAAI,IAAI,CAAC,eAAe,GAAG,KAAK;AAChC,KAAI,IAAI,CAAC,aAAa,GAAG,YAAY;AACrC,KAAI,IAAI,CAAC,WAAW,GAAG,IAAI;AAC3B,KAAI,IAAI,CAAC,aAAa,GAAG,KAAK;AAC9B,KAAI,IAAI,CAAC,WAAW,GAAG,EAAE;AACzB,KAAI,IAAI,CAAC,OAAO,GAAG,KAAK;AACxB,KAAI,IAAI,CAAC,SAAS,GAAG,EAAE;AACvB,KAAI,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC,UAAU;AAC3C,KAAI,IAAI,CAAC,SAAS,GAAG,IAAI;AACzB,KAAI,IAAI,CAAC,OAAO,GAAG,IAAI;AACvB,KAAI,IAAI,CAAC,OAAO,GAAG,IAAI;;AAEvB,KAAI,IAAI,OAAO,KAAK,IAAI,EAAE;AAC1B,OAAM,IAAI,CAAC,eAAe,GAAG,CAAC;AAC9B,OAAM,IAAI,CAAC,SAAS,GAAG,KAAK;AAC5B,OAAM,IAAI,CAAC,UAAU,GAAG,CAAC;;AAEzB,OAAM,IAAI,SAAS,KAAK,SAAS,EAAE;SAC3B,SAAS,GAAG,EAAE;OACtB,CAAO,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;SACpC,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,IAAI,EAAE;WACvD,OAAO,GAAG,SAAS;WACnB,SAAS,GAAG,EAAE;AACxB,SAAA,CAAS,MAAM;AACf,WAAU,SAAS,GAAG,CAAC,SAAS,CAAC;AACjC,SAAA;AACA,OAAA;;OAEM,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC;AACrD,KAAA,CAAK,MAAM;AACX,OAAM,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,QAAQ;AACvC,OAAM,IAAI,CAAC,SAAS,GAAG,IAAI;AAC3B,KAAA;AACA,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;GACE,IAAI,UAAU,GAAG;KACf,OAAO,IAAI,CAAC,WAAW;AAC3B,GAAA;;AAEA,GAAE,IAAI,UAAU,CAAC,IAAI,EAAE;KACnB,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;;AAEtC,KAAI,IAAI,CAAC,WAAW,GAAG,IAAI;;AAE3B;AACA;AACA;KACI,IAAI,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI;AACzD,GAAA;;AAEA;AACA;AACA;GACE,IAAI,cAAc,GAAG;KACnB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,IAAI,CAAC,eAAe;;AAElD,KAAI,OAAO,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc;AAC3E,GAAA;;AAEA;AACA;AACA;GACE,IAAI,UAAU,GAAG;KACf,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE;AAC/C,GAAA;;AAEA;AACA;AACA;GACE,IAAI,QAAQ,GAAG;KACb,OAAO,IAAI,CAAC,OAAO;AACvB,GAAA;;AAEA;AACA;AACA;AACA;GACE,IAAI,OAAO,GAAG;AAChB,KAAI,OAAO,IAAI;AACf,GAAA;;AAEA;AACA;AACA;AACA;GACE,IAAI,OAAO,GAAG;AAChB,KAAI,OAAO,IAAI;AACf,GAAA;;AAEA;AACA;AACA;AACA;GACE,IAAI,MAAM,GAAG;AACf,KAAI,OAAO,IAAI;AACf,GAAA;;AAEA;AACA;AACA;AACA;GACE,IAAI,SAAS,GAAG;AAClB,KAAI,OAAO,IAAI;AACf,GAAA;;AAEA;AACA;AACA;GACE,IAAI,QAAQ,GAAG;KACb,OAAO,IAAI,CAAC,SAAS;AACzB,GAAA;;AAEA;AACA;AACA;GACE,IAAI,UAAU,GAAG;KACf,OAAO,IAAI,CAAC,WAAW;AAC3B,GAAA;;AAEA;AACA;AACA;GACE,IAAI,GAAG,GAAG;KACR,OAAO,IAAI,CAAC,IAAI;AACpB,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE;AACnC,KAAI,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC;AAClC,OAAM,sBAAsB,EAAE,OAAO,CAAC,sBAAsB;AAC5D,OAAM,UAAU,EAAE,IAAI,CAAC,UAAU;AACjC,OAAM,UAAU,EAAE,IAAI,CAAC,WAAW;AAClC,OAAM,QAAQ,EAAE,IAAI,CAAC,SAAS;AAC9B,OAAM,UAAU,EAAE,OAAO,CAAC,UAAU;OAC9B,kBAAkB,EAAE,OAAO,CAAC;AAClC,MAAK,CAAC;;AAEN,KAAI,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,YAAY,CAAC;;AAE7E,KAAI,IAAI,CAAC,SAAS,GAAG,QAAQ;AAC7B,KAAI,IAAI,CAAC,OAAO,GAAG,MAAM;AACzB,KAAI,IAAI,CAAC,OAAO,GAAG,MAAM;;AAEzB,KAAI,QAAQ,CAAC,UAAU,CAAC,GAAG,IAAI;AAC/B,KAAI,MAAM,CAAC,UAAU,CAAC,GAAG,IAAI;AAC7B,KAAI,MAAM,CAAC,UAAU,CAAC,GAAG,IAAI;;AAE7B,KAAI,QAAQ,CAAC,EAAE,CAAC,UAAU,EAAE,kBAAkB,CAAC;AAC/C,KAAI,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,CAAC;AACzC,KAAI,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,CAAC;AACzC,KAAI,QAAQ,CAAC,EAAE,CAAC,SAAS,EAAE,iBAAiB,CAAC;AAC7C,KAAI,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,cAAc,CAAC;AACvC,KAAI,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,cAAc,CAAC;;AAEvC,KAAI,MAAM,CAAC,OAAO,GAAG,aAAa;;AAElC;AACA;AACA;KACI,IAAI,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;KAC3C,IAAI,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE;;AAE9C,KAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;;AAE7C,KAAI,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC;AACrC,KAAI,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,CAAC;AACnC,KAAI,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC;AACjC,KAAI,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC;;AAErC,KAAI,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC,IAAI;AACrC,KAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;AACrB,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAE,SAAS,GAAG;AACd,KAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACvB,OAAM,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC,MAAM;AACzC,OAAM,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC;OACvD;AACN,KAAA;;KAEI,IAAI,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,aAAa,CAAC,EAAE;OACrD,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC,OAAO,EAAE;AACjE,KAAA;;AAEA,KAAI,IAAI,CAAC,SAAS,CAAC,kBAAkB,EAAE;AACvC,KAAI,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC,MAAM;AACvC,KAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC;AAC3D,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE;KAChB,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC,MAAM,EAAE;KAC1C,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC,UAAU,EAAE;OAC5C,MAAM,GAAG,GAAG,4DAA4D;OACxE,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC;OACpC;AACN,KAAA;;KAEI,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC,OAAO,EAAE;OACzC;SACE,IAAI,CAAC,eAAe;UACnB,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,YAAY;SACvE;AACR,SAAQ,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;AAC1B,OAAA;;OAEM;AACN,KAAA;;AAEA,KAAI,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC,OAAO;AACxC,KAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,GAAG,KAAK;AAC7D;AACA;AACA;AACA;OACM,IAAI,GAAG,EAAE;;AAEf,OAAM,IAAI,CAAC,eAAe,GAAG,IAAI;;OAE3B;SACE,IAAI,CAAC,mBAAmB;AAChC,SAAQ,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC;SAC9B;AACR,SAAQ,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;AAC1B,OAAA;AACA,KAAA,CAAK,CAAC;;KAEF,aAAa,CAAC,IAAI,CAAC;AACvB,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAE,KAAK,GAAG;KACN;AACJ,OAAM,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC,UAAU;AAC9C,OAAM,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC;OAC9B;OACA;AACN,KAAA;;AAEA,KAAI,IAAI,CAAC,OAAO,GAAG,IAAI;AACvB,KAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;AACxB,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE;KACnB,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC,UAAU,EAAE;AAClD,OAAM,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC;AACzE,KAAA;;AAEA,KAAI,IAAI,OAAO,IAAI,KAAK,UAAU,EAAE;OAC9B,EAAE,GAAG,IAAI;AACf,OAAM,IAAI,GAAG,IAAI,GAAG,SAAS;AAC7B,KAAA,CAAK,MAAM,IAAI,OAAO,IAAI,KAAK,UAAU,EAAE;OACrC,EAAE,GAAG,IAAI;OACT,IAAI,GAAG,SAAS;AACtB,KAAA;;KAEI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE;;KAEpD,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI,EAAE;AAC5C,OAAM,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC;OAC9B;AACN,KAAA;;KAEI,IAAI,IAAI,KAAK,SAAS,EAAE,IAAI,GAAG,CAAC,IAAI,CAAC,SAAS;AAClD,KAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,YAAY,EAAE,IAAI,EAAE,EAAE,CAAC;AACrD,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE;KACnB,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC,UAAU,EAAE;AAClD,OAAM,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC;AACzE,KAAA;;AAEA,KAAI,IAAI,OAAO,IAAI,KAAK,UAAU,EAAE;OAC9B,EAAE,GAAG,IAAI;AACf,OAAM,IAAI,GAAG,IAAI,GAAG,SAAS;AAC7B,KAAA,CAAK,MAAM,IAAI,OAAO,IAAI,KAAK,UAAU,EAAE;OACrC,EAAE,GAAG,IAAI;OACT,IAAI,GAAG,SAAS;AACtB,KAAA;;KAEI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE;;KAEpD,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI,EAAE;AAC5C,OAAM,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC;OAC9B;AACN,KAAA;;KAEI,IAAI,IAAI,KAAK,SAAS,EAAE,IAAI,GAAG,CAAC,IAAI,CAAC,SAAS;AAClD,KAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,YAAY,EAAE,IAAI,EAAE,EAAE,CAAC;AACrD,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAE,MAAM,GAAG;KACP;AACJ,OAAM,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC,UAAU;AAC9C,OAAM,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC;OAC9B;OACA;AACN,KAAA;;AAEA,KAAI,IAAI,CAAC,OAAO,GAAG,KAAK;AACxB,KAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;AACvE,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE;KACtB,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC,UAAU,EAAE;AAClD,OAAM,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC;AACzE,KAAA;;AAEA,KAAI,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE;OACjC,EAAE,GAAG,OAAO;OACZ,OAAO,GAAG,EAAE;AAClB,KAAA;;KAEI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE;;KAEpD,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI,EAAE;AAC5C,OAAM,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC;OAC9B;AACN,KAAA;;KAEI,MAAM,IAAI,GAAG;AACjB,OAAM,MAAM,EAAE,OAAO,IAAI,KAAK,QAAQ;AACtC,OAAM,IAAI,EAAE,CAAC,IAAI,CAAC,SAAS;OACrB,QAAQ,EAAE,IAAI;OACd,GAAG,EAAE,IAAI;AACf,OAAM,GAAG;MACJ;;KAED,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,aAAa,CAAC,EAAE;AAC5D,OAAM,IAAI,CAAC,QAAQ,GAAG,KAAK;AAC3B,KAAA;;AAEA,KAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,YAAY,EAAE,IAAI,EAAE,EAAE,CAAC;AACrD,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAE,SAAS,GAAG;KACV,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC,MAAM,EAAE;KAC1C,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC,UAAU,EAAE;OAC5C,MAAM,GAAG,GAAG,4DAA4D;OACxE,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC;OACpC;AACN,KAAA;;AAEA,KAAI,IAAI,IAAI,CAAC,OAAO,EAAE;AACtB,OAAM,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC,OAAO;AAC1C,OAAM,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;AAC5B,KAAA;AACA,GAAA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAA,MAAM,CAAC,cAAc,CAAC,SAAS,EAAE,YAAY,EAAE;GAC7C,UAAU,EAAE,IAAI;AAClB,GAAE,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,YAAY;AACzC,EAAC,CAAC;;AAEF;AACA;AACA;AACA;CACA,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,SAAS,EAAE,YAAY,EAAE;GACvD,UAAU,EAAE,IAAI;AAClB,GAAE,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,YAAY;AACzC,EAAC,CAAC;;AAEF;AACA;AACA;AACA;AACA,CAAA,MAAM,CAAC,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE;GACvC,UAAU,EAAE,IAAI;AAClB,GAAE,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM;AACnC,EAAC,CAAC;;AAEF;AACA;AACA;AACA;CACA,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE;GACjD,UAAU,EAAE,IAAI;AAClB,GAAE,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM;AACnC,EAAC,CAAC;;AAEF;AACA;AACA;AACA;AACA,CAAA,MAAM,CAAC,cAAc,CAAC,SAAS,EAAE,SAAS,EAAE;GAC1C,UAAU,EAAE,IAAI;AAClB,GAAE,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,SAAS;AACtC,EAAC,CAAC;;AAEF;AACA;AACA;AACA;CACA,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,SAAS,EAAE,SAAS,EAAE;GACpD,UAAU,EAAE,IAAI;AAClB,GAAE,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,SAAS;AACtC,EAAC,CAAC;;AAEF;AACA;AACA;AACA;AACA,CAAA,MAAM,CAAC,cAAc,CAAC,SAAS,EAAE,QAAQ,EAAE;GACzC,UAAU,EAAE,IAAI;AAClB,GAAE,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,QAAQ;AACrC,EAAC,CAAC;;AAEF;AACA;AACA;AACA;CACA,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,SAAS,EAAE,QAAQ,EAAE;GACnD,UAAU,EAAE,IAAI;AAClB,GAAE,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,QAAQ;AACrC,EAAC,CAAC;;AAEF,CAAA;AACA,GAAE,YAAY;AACd,GAAE,gBAAgB;AAClB,GAAE,YAAY;AACd,GAAE,UAAU;AACZ,GAAE,UAAU;AACZ,GAAE,YAAY;GACZ;AACF,EAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAK;AACxB,GAAE,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,SAAS,EAAE,QAAQ,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;AAC5E,CAAA,CAAC,CAAC;;AAEF;AACA;AACA;AACA;AACA,CAAA,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK;AAC1D,GAAE,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,EAAE;KACxD,UAAU,EAAE,IAAI;AACpB,KAAI,GAAG,GAAG;OACJ,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;SAC7C,IAAI,QAAQ,CAAC,oBAAoB,CAAC,EAAE,OAAO,QAAQ,CAAC,SAAS,CAAC;AACtE,OAAA;;AAEA,OAAM,OAAO,IAAI;KACjB,CAAK;KACD,GAAG,CAAC,OAAO,EAAE;OACX,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;AACrD,SAAQ,IAAI,QAAQ,CAAC,oBAAoB,CAAC,EAAE;AAC5C,WAAU,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,QAAQ,CAAC;WACrC;AACV,SAAA;AACA,OAAA;;AAEA,OAAM,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE;;AAEzC,OAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,OAAO,EAAE;SACrC,CAAC,oBAAoB,GAAG;AAChC,QAAO,CAAC;AACR,KAAA;AACA,IAAG,CAAC;AACJ,CAAA,CAAC,CAAC;;AAEF,CAAA,SAAS,CAAC,SAAS,CAAC,gBAAgB,GAAG,gBAAgB;AACvD,CAAA,SAAS,CAAC,SAAS,CAAC,mBAAmB,GAAG,mBAAmB;;AAE7D,CAAA,SAAc,GAAG,SAAS;;AAE1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,YAAY,CAAC,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE;GAC5D,MAAM,IAAI,GAAG;KACX,sBAAsB,EAAE,IAAI;KAC5B,QAAQ,EAAE,IAAI;AAClB,KAAI,eAAe,EAAE,gBAAgB,CAAC,CAAC,CAAC;AACxC,KAAI,UAAU,EAAE,GAAG,GAAG,IAAI,GAAG,IAAI;KAC7B,kBAAkB,EAAE,KAAK;KACzB,iBAAiB,EAAE,IAAI;KACvB,eAAe,EAAE,KAAK;KACtB,YAAY,EAAE,EAAE;AACpB,KAAI,GAAG,OAAO;KACV,UAAU,EAAE,SAAS;KACrB,QAAQ,EAAE,SAAS;KACnB,QAAQ,EAAE,SAAS;KACnB,OAAO,EAAE,SAAS;KAClB,MAAM,EAAE,KAAK;KACb,IAAI,EAAE,SAAS;KACf,IAAI,EAAE,SAAS;AACnB,KAAI,IAAI,EAAE;IACP;;AAEH,GAAE,SAAS,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ;;GAEnC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE;KACpD,MAAM,IAAI,UAAU;OAClB,CAAC,8BAA8B,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;SACtD,CAAC,qBAAqB,EAAE,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;MACxD;AACL,GAAA;;AAEA,GAAE,IAAI,SAAS;;AAEf,GAAE,IAAI,OAAO,YAAY,GAAG,EAAE;KAC1B,SAAS,GAAG,OAAO;AACvB,GAAA,CAAG,MAAM;AACT,KAAI,IAAI;AACR,OAAM,SAAS,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC;KAClC,CAAK,CAAC,OAAO,CAAC,EAAE;OACV,MAAM,IAAI,WAAW,CAAC,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,CAAC;AACtD,KAAA;AACA,GAAA;;AAEA,GAAE,IAAI,SAAS,CAAC,QAAQ,KAAK,OAAO,EAAE;AACtC,KAAI,SAAS,CAAC,QAAQ,GAAG,KAAK;AAC9B,GAAA,CAAG,MAAM,IAAI,SAAS,CAAC,QAAQ,KAAK,QAAQ,EAAE;AAC9C,KAAI,SAAS,CAAC,QAAQ,GAAG,MAAM;AAC/B,GAAA;;AAEA,GAAE,SAAS,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI;;AAEjC,GAAE,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,KAAK,MAAM;AAChD,GAAE,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,KAAK,UAAU;AACpD,GAAE,IAAI,iBAAiB;;AAEvB,GAAE,IAAI,SAAS,CAAC,QAAQ,KAAK,KAAK,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,EAAE;AAC9D,KAAI,iBAAiB;AACrB,OAAM,oDAAoD;AAC1D,OAAM,kCAAkC;GACxC,CAAG,MAAM,IAAI,QAAQ,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;KAC1C,iBAAiB,GAAG,6BAA6B;AACrD,GAAA,CAAG,MAAM,IAAI,SAAS,CAAC,IAAI,EAAE;KACzB,iBAAiB,GAAG,wCAAwC;AAChE,GAAA;;GAEE,IAAI,iBAAiB,EAAE;AACzB,KAAI,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,iBAAiB,CAAC;;AAElD,KAAI,IAAI,SAAS,CAAC,UAAU,KAAK,CAAC,EAAE;AACpC,OAAM,MAAM,GAAG;AACf,KAAA,CAAK,MAAM;AACX,OAAM,iBAAiB,CAAC,SAAS,EAAE,GAAG,CAAC;OACjC;AACN,KAAA;AACA,GAAA;;AAEA,GAAE,MAAM,WAAW,GAAG,QAAQ,GAAG,GAAG,GAAG,EAAE;GACvC,MAAM,GAAG,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;GAC9C,MAAM,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO;AACzD,GAAE,MAAM,WAAW,GAAG,IAAI,GAAG,EAAE;AAC/B,GAAE,IAAI,iBAAiB;;GAErB,IAAI,CAAC,gBAAgB;KACnB,IAAI,CAAC,gBAAgB,KAAK,QAAQ,GAAG,UAAU,GAAG,UAAU,CAAC;GAC/D,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,WAAW;GAClD,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI,IAAI,WAAW;GACzC,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG;OACzC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE;OAC9B,SAAS,CAAC,QAAQ;GACtB,IAAI,CAAC,OAAO,GAAG;KACb,GAAG,IAAI,CAAC,OAAO;AACnB,KAAI,uBAAuB,EAAE,IAAI,CAAC,eAAe;KAC7C,mBAAmB,EAAE,GAAG;KACxB,UAAU,EAAE,SAAS;AACzB,KAAI,OAAO,EAAE;IACV;GACD,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,QAAQ,GAAG,SAAS,CAAC,MAAM;AACnD,GAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,gBAAgB;;AAEtC,GAAE,IAAI,IAAI,CAAC,iBAAiB,EAAE;KAC1B,iBAAiB,GAAG,IAAI,iBAAiB;OACvC,IAAI,CAAC,iBAAiB,KAAK,IAAI,GAAG,IAAI,CAAC,iBAAiB,GAAG,EAAE;AACnE,OAAM,KAAK;AACX,OAAM,IAAI,CAAC;MACN;KACD,IAAI,CAAC,OAAO,CAAC,0BAA0B,CAAC,GAAG,MAAM,CAAC;AACtD,OAAM,CAAC,iBAAiB,CAAC,aAAa,GAAG,iBAAiB,CAAC,KAAK;AAChE,MAAK,CAAC;AACN,GAAA;AACA,GAAE,IAAI,SAAS,CAAC,MAAM,EAAE;AACxB,KAAI,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;OAChC;SACE,OAAO,QAAQ,KAAK,QAAQ;AACpC,SAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC;AACxC,SAAQ,WAAW,CAAC,GAAG,CAAC,QAAQ;SACxB;SACA,MAAM,IAAI,WAAW;WACnB;UACD;AACT,OAAA;;AAEA,OAAM,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC/B,KAAA;;AAEA,KAAI,IAAI,CAAC,OAAO,CAAC,wBAAwB,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC;AAChE,GAAA;AACA,GAAE,IAAI,IAAI,CAAC,MAAM,EAAE;AACnB,KAAI,IAAI,IAAI,CAAC,eAAe,GAAG,EAAE,EAAE;OAC7B,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,GAAG,IAAI,CAAC,MAAM;AACxD,KAAA,CAAK,MAAM;OACL,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM;AACvC,KAAA;AACA,GAAA;GACE,IAAI,SAAS,CAAC,QAAQ,IAAI,SAAS,CAAC,QAAQ,EAAE;AAChD,KAAI,IAAI,CAAC,IAAI,GAAG,CAAC,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;AAC7D,GAAA;;GAEE,IAAI,QAAQ,EAAE;KACZ,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;;AAEtC,KAAI,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC;AAC9B,KAAI,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC;AACxB,GAAA;;AAEA,GAAE,IAAI,GAAG;;AAET,GAAE,IAAI,IAAI,CAAC,eAAe,EAAE;AAC5B,KAAI,IAAI,SAAS,CAAC,UAAU,KAAK,CAAC,EAAE;AACpC,OAAM,SAAS,CAAC,YAAY,GAAG,QAAQ;AACvC,OAAM,SAAS,CAAC,eAAe,GAAG,QAAQ;OACpC,SAAS,CAAC,yBAAyB,GAAG;AAC5C,WAAU,IAAI,CAAC;WACL,SAAS,CAAC,IAAI;;AAExB,OAAM,MAAM,OAAO,GAAG,OAAO,IAAI,OAAO,CAAC,OAAO;;AAEhD;AACA;AACA;AACA;OACM,OAAO,GAAG,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE;;OAErC,IAAI,OAAO,EAAE;AACnB,SAAQ,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;WAClD,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,GAAG,KAAK;AACpD,SAAA;AACA,OAAA;KACA,CAAK,MAAM,IAAI,SAAS,CAAC,aAAa,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;OACpD,MAAM,UAAU,GAAG;AACzB,WAAU,SAAS,CAAC;AACpB,aAAY,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC;aAC9B;AACZ,WAAU,SAAS,CAAC;aACR;AACZ,aAAY,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,yBAAyB;;OAE5D,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC,eAAe,IAAI,CAAC,QAAQ,CAAC,EAAE;AACnE;AACA;AACA;AACA;AACA,SAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa;AACzC,SAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM;;SAE1B,IAAI,CAAC,UAAU,EAAE,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI;;AAEjD,SAAQ,IAAI,CAAC,IAAI,GAAG,SAAS;AAC7B,OAAA;AACA,KAAA;;AAEA;AACA;AACA;AACA;AACA;KACI,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE;AACrD,OAAM,OAAO,CAAC,OAAO,CAAC,aAAa;AACnC,SAAQ,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;AAC5D,KAAA;;KAEI,GAAG,GAAG,SAAS,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;;AAExC,KAAI,IAAI,SAAS,CAAC,UAAU,EAAE;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;OACM,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC;AACpD,KAAA;AACA,GAAA,CAAG,MAAM;KACL,GAAG,GAAG,SAAS,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;AACxC,GAAA;;AAEA,GAAE,IAAI,IAAI,CAAC,OAAO,EAAE;AACpB,KAAI,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM;AAC5B,OAAM,cAAc,CAAC,SAAS,EAAE,GAAG,EAAE,iCAAiC,CAAC;AACvE,KAAA,CAAK,CAAC;AACN,GAAA;;GAEE,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,KAAK;KACvB,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,CAAC,QAAQ,CAAC,EAAE;;AAEvC,KAAI,GAAG,GAAG,SAAS,CAAC,IAAI,GAAG,IAAI;AAC/B,KAAI,iBAAiB,CAAC,SAAS,EAAE,GAAG,CAAC;AACrC,GAAA,CAAG,CAAC;;GAEF,GAAG,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,GAAG,KAAK;AAC9B,KAAI,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ;AACzC,KAAI,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU;;KAEjC;AACJ,OAAM,QAAQ;OACR,IAAI,CAAC,eAAe;OACpB,UAAU,IAAI,GAAG;AACvB,OAAM,UAAU,GAAG;OACb;OACA,IAAI,EAAE,SAAS,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,EAAE;AACtD,SAAQ,cAAc,CAAC,SAAS,EAAE,GAAG,EAAE,4BAA4B,CAAC;SAC5D;AACR,OAAA;;OAEM,GAAG,CAAC,KAAK,EAAE;;AAEjB,OAAM,IAAI,IAAI;;AAEd,OAAM,IAAI;SACF,IAAI,GAAG,IAAI,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC;OACzC,CAAO,CAAC,OAAO,CAAC,EAAE;AAClB,SAAQ,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC,CAAC;AAC/D,SAAQ,iBAAiB,CAAC,SAAS,EAAE,GAAG,CAAC;SACjC;AACR,OAAA;;OAEM,YAAY,CAAC,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC;AACvD,KAAA,CAAK,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,qBAAqB,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE;AACjE,OAAM,cAAc;AACpB,SAAQ,SAAS;AACjB,SAAQ,GAAG;AACX,SAAQ,CAAC,4BAA4B,EAAE,GAAG,CAAC,UAAU,CAAC;QAC/C;AACP,KAAA;AACA,GAAA,CAAG,CAAC;;AAEJ,GAAE,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,KAAK;AAC3C,KAAI,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC;;AAElC;AACA;AACA;AACA;KACI,IAAI,SAAS,CAAC,UAAU,KAAK,SAAS,CAAC,UAAU,EAAE;;AAEvD,KAAI,GAAG,GAAG,SAAS,CAAC,IAAI,GAAG,IAAI;;AAE/B,KAAI,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO;;KAEnC,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,WAAW,EAAE,KAAK,WAAW,EAAE;AACxE,OAAM,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,wBAAwB,CAAC;OAC3D;AACN,KAAA;;AAEA,KAAI,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM;AACpC,QAAO,MAAM,CAAC,GAAG,GAAG,IAAI;QACjB,MAAM,CAAC,QAAQ,CAAC;;KAEnB,IAAI,GAAG,CAAC,OAAO,CAAC,sBAAsB,CAAC,KAAK,MAAM,EAAE;AACxD,OAAM,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,qCAAqC,CAAC;OACxE;AACN,KAAA;;KAEI,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,wBAAwB,CAAC;AAC5D,KAAI,IAAI,SAAS;;AAEjB,KAAI,IAAI,UAAU,KAAK,SAAS,EAAE;AAClC,OAAM,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;SACrB,SAAS,GAAG,kDAAkD;OACtE,CAAO,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;SACvC,SAAS,GAAG,oCAAoC;AACxD,OAAA;AACA,KAAA,CAAK,MAAM,IAAI,WAAW,CAAC,IAAI,EAAE;OAC3B,SAAS,GAAG,4BAA4B;AAC9C,KAAA;;KAEI,IAAI,SAAS,EAAE;AACnB,OAAM,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC;OAC5C;AACN,KAAA;;AAEA,KAAI,IAAI,UAAU,EAAE,SAAS,CAAC,SAAS,GAAG,UAAU;;KAEhD,MAAM,sBAAsB,GAAG,GAAG,CAAC,OAAO,CAAC,0BAA0B,CAAC;;AAE1E,KAAI,IAAI,sBAAsB,KAAK,SAAS,EAAE;OACxC,IAAI,CAAC,iBAAiB,EAAE;AAC9B,SAAQ,MAAM,OAAO;AACrB,WAAU,iEAAiE;AAC3E,WAAU,eAAe;AACzB,SAAQ,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC;SAC1C;AACR,OAAA;;AAEA,OAAM,IAAI,UAAU;;AAEpB,OAAM,IAAI;AACV,SAAQ,UAAU,GAAG,KAAK,CAAC,sBAAsB,CAAC;OAClD,CAAO,CAAC,OAAO,GAAG,EAAE;SACZ,MAAM,OAAO,GAAG,yCAAyC;AACjE,SAAQ,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC;SAC1C;AACR,OAAA;;OAEM,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;;OAE9C;AACN,SAAQ,cAAc,CAAC,MAAM,KAAK,CAAC;AACnC,SAAQ,cAAc,CAAC,CAAC,CAAC,KAAK,iBAAiB,CAAC;SACxC;SACA,MAAM,OAAO,GAAG,sDAAsD;AAC9E,SAAQ,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC;SAC1C;AACR,OAAA;;AAEA,OAAM,IAAI;SACF,iBAAiB,CAAC,MAAM,CAAC,UAAU,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;OAC7E,CAAO,CAAC,OAAO,GAAG,EAAE;SACZ,MAAM,OAAO,GAAG,yCAAyC;AACjE,SAAQ,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC;SAC1C;AACR,OAAA;;AAEA,OAAM,SAAS,CAAC,WAAW,CAAC,iBAAiB,CAAC,aAAa,CAAC;AAC5D,SAAQ,iBAAiB;AACzB,KAAA;;AAEA,KAAI,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE;AACtC,OAAM,sBAAsB,EAAE,IAAI,CAAC,sBAAsB;AACzD,OAAM,YAAY,EAAE,IAAI,CAAC,YAAY;AACrC,OAAM,UAAU,EAAE,IAAI,CAAC,UAAU;OAC3B,kBAAkB,EAAE,IAAI,CAAC;AAC/B,MAAK,CAAC;AACN,GAAA,CAAG,CAAC;;AAEJ,GAAE,IAAI,IAAI,CAAC,aAAa,EAAE;AAC1B,KAAI,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,SAAS,CAAC;AACtC,GAAA,CAAG,MAAM;KACL,GAAG,CAAC,GAAG,EAAE;AACb,GAAA;AACA,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,iBAAiB,CAAC,SAAS,EAAE,GAAG,EAAE;AAC3C,GAAE,SAAS,CAAC,WAAW,GAAG,SAAS,CAAC,OAAO;AAC3C;AACA;AACA;AACA;AACA,GAAE,SAAS,CAAC,aAAa,GAAG,IAAI;AAChC,GAAE,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC;GAC5B,SAAS,CAAC,SAAS,EAAE;AACvB,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,UAAU,CAAC,OAAO,EAAE;AAC7B,GAAE,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,UAAU;AACnC,GAAE,OAAO,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC;AAC7B,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,UAAU,CAAC,OAAO,EAAE;AAC7B,GAAE,OAAO,CAAC,IAAI,GAAG,SAAS;;GAExB,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,UAAU,KAAK,EAAE,EAAE;AACxD,KAAI,OAAO,CAAC,UAAU,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI;AACnE,GAAA;;AAEA,GAAE,OAAO,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC;AAC7B,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE;AACpD,GAAE,SAAS,CAAC,WAAW,GAAG,SAAS,CAAC,OAAO;;AAE3C,GAAE,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC;AAChC,GAAE,KAAK,CAAC,iBAAiB,CAAC,GAAG,EAAE,cAAc,CAAC;;AAE9C,GAAE,IAAI,MAAM,CAAC,SAAS,EAAE;AACxB,KAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAI;KACvB,MAAM,CAAC,KAAK,EAAE;;KAEd,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE;AACnD;AACA;AACA;AACA;AACA;AACA,OAAM,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE;AAC7B,KAAA;;KAEI,OAAO,CAAC,QAAQ,CAAC,iBAAiB,EAAE,SAAS,EAAE,GAAG,CAAC;AACvD,GAAA,CAAG,MAAM;AACT,KAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;AACvB,KAAI,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AACjE,KAAI,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC7D,GAAA;AACA,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,cAAc,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE;GAC3C,IAAI,IAAI,EAAE;AACZ,KAAI,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM;;AAEnE;AACA;AACA;AACA;AACA;AACA;KACI,IAAI,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,cAAc,IAAI,MAAM;AACrE,UAAS,SAAS,CAAC,eAAe,IAAI,MAAM;AAC5C,GAAA;;GAEE,IAAI,EAAE,EAAE;AACV,KAAI,MAAM,GAAG,GAAG,IAAI,KAAK;OACnB,CAAC,kCAAkC,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;SAC1D,CAAC,CAAC,EAAE,WAAW,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;MAC1C;AACL,KAAI,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC;AAC7B,GAAA;AACA,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE;AAC1C,GAAE,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC;;AAEpC,GAAE,SAAS,CAAC,mBAAmB,GAAG,IAAI;AACtC,GAAE,SAAS,CAAC,aAAa,GAAG,MAAM;AAClC,GAAE,SAAS,CAAC,UAAU,GAAG,IAAI;;GAE3B,IAAI,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,SAAS,EAAE;;GAEjD,SAAS,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE,YAAY,CAAC;GACtD,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC;;GAE3C,IAAI,IAAI,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,EAAE;AACtC,QAAO,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC;AACpC,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,eAAe,GAAG;AAC3B,GAAE,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC;;GAElC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE;AACrD,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,eAAe,CAAC,GAAG,EAAE;AAC9B,GAAE,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC;;GAElC,IAAI,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,SAAS,EAAE;KAC/C,SAAS,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE,YAAY,CAAC;;AAE1D;AACA;AACA;AACA;KACI,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC;;KAE3C,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AACrC,GAAA;;AAEA,GAAE,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE;AAChC,KAAI,SAAS,CAAC,aAAa,GAAG,IAAI;AAClC,KAAI,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC;AAChC,GAAA;AACA,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,gBAAgB,GAAG;AAC5B,GAAE,IAAI,CAAC,UAAU,CAAC,CAAC,SAAS,EAAE;AAC9B,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,iBAAiB,CAAC,IAAI,EAAE,QAAQ,EAAE;AAC3C,GAAE,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,CAAC;AAClD,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,cAAc,CAAC,IAAI,EAAE;AAC9B,GAAE,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC;;AAEpC,GAAE,IAAI,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC;AACtE,GAAE,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC;AAC9B,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,cAAc,CAAC,IAAI,EAAE;GAC5B,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC;AACrC,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,MAAM,CAAC,MAAM,EAAE;GACtB,MAAM,CAAC,MAAM,EAAE;AACjB,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,aAAa,CAAC,GAAG,EAAE;AAC5B,GAAE,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC;;GAElC,IAAI,SAAS,CAAC,UAAU,KAAK,SAAS,CAAC,MAAM,EAAE;GAC/C,IAAI,SAAS,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI,EAAE;AAC/C,KAAI,SAAS,CAAC,WAAW,GAAG,SAAS,CAAC,OAAO;KACzC,aAAa,CAAC,SAAS,CAAC;AAC5B,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAE,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;;AAEpB,GAAE,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE;AAChC,KAAI,SAAS,CAAC,aAAa,GAAG,IAAI;AAClC,KAAI,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC;AAChC,GAAA;AACA,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,aAAa,CAAC,SAAS,EAAE;AAClC,GAAE,SAAS,CAAC,WAAW,GAAG,UAAU;KAChC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;KACjD;IACD;AACH,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,aAAa,GAAG;AACzB,GAAE,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC;;AAEpC,GAAE,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,aAAa,CAAC;AAC7C,GAAE,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,YAAY,CAAC;AAC3C,GAAE,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,WAAW,CAAC;;AAEzC,GAAE,SAAS,CAAC,WAAW,GAAG,SAAS,CAAC,OAAO;;AAE3C,GAAE,IAAI,KAAK;;AAEX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;GACE;AACF,KAAI,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU;KAC/B,CAAC,SAAS,CAAC,mBAAmB;AAClC,KAAI,CAAC,SAAS,CAAC,SAAS,CAAC,cAAc,CAAC,YAAY;KAChD,CAAC,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM;KACvC;AACJ,KAAI,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC;AACpC,GAAA;;AAEA,GAAE,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE;;AAE3B,GAAE,IAAI,CAAC,UAAU,CAAC,GAAG,SAAS;;AAE9B,GAAE,YAAY,CAAC,SAAS,CAAC,WAAW,CAAC;;GAEnC;AACF,KAAI,SAAS,CAAC,SAAS,CAAC,cAAc,CAAC,QAAQ;AAC/C,KAAI,SAAS,CAAC,SAAS,CAAC,cAAc,CAAC;KACnC;KACA,SAAS,CAAC,SAAS,EAAE;AACzB,GAAA,CAAG,MAAM;KACL,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,gBAAgB,CAAC;KACjD,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,gBAAgB,CAAC;AACtD,GAAA;AACA,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,YAAY,CAAC,KAAK,EAAE;AAC7B,GAAE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;KAC5C,IAAI,CAAC,KAAK,EAAE;AAChB,GAAA;AACA,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,WAAW,GAAG;AACvB,GAAE,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC;;AAEpC,GAAE,SAAS,CAAC,WAAW,GAAG,SAAS,CAAC,OAAO;AAC3C,GAAE,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE;GACzB,IAAI,CAAC,GAAG,EAAE;AACZ,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,aAAa,GAAG;AACzB,GAAE,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC;;AAEpC,GAAE,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,aAAa,CAAC;AAC7C,GAAE,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC;;GAEtB,IAAI,SAAS,EAAE;AACjB,KAAI,SAAS,CAAC,WAAW,GAAG,SAAS,CAAC,OAAO;KACzC,IAAI,CAAC,OAAO,EAAE;AAClB,GAAA;AACA,CAAA;;;;;;;;;;;;;CCx2CkBjB,gBAAA;AAClB,CAAA,MAAM,EAAE,MAAM,EAAE,GAAGG,YAAiB;;AAEpC;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,SAAS,CAAC,MAAM,EAAE;AAC3B,GAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;AACtB,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,WAAW,GAAG;GACrB,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE;KACnD,IAAI,CAAC,OAAO,EAAE;AAClB,GAAA;AACA,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,aAAa,CAAC,GAAG,EAAE;AAC5B,GAAE,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,aAAa,CAAC;GAC3C,IAAI,CAAC,OAAO,EAAE;GACd,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACzC;AACA,KAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC;AAC3B,GAAA;AACA,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,qBAAqB,CAAC,EAAE,EAAE,OAAO,EAAE;GAC1C,IAAI,kBAAkB,GAAG,IAAI;;AAE/B,GAAE,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC;AAC5B,KAAI,GAAG,OAAO;KACV,WAAW,EAAE,KAAK;KAClB,SAAS,EAAE,KAAK;KAChB,UAAU,EAAE,KAAK;AACrB,KAAI,kBAAkB,EAAE;AACxB,IAAG,CAAC;;AAEJ,GAAE,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,OAAO,CAAC,GAAG,EAAE,QAAQ,EAAE;AACnD,KAAI,MAAM,IAAI;AACd,OAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,cAAc,CAAC,UAAU,GAAG,GAAG,CAAC,QAAQ,EAAE,GAAG,GAAG;;AAE1E,KAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE;AACtC,GAAA,CAAG,CAAC;;GAEF,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,KAAK,CAAC,GAAG,EAAE;AACvC,KAAI,IAAI,MAAM,CAAC,SAAS,EAAE;;AAE1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;KACI,kBAAkB,GAAG,KAAK;AAC9B,KAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;AACvB,GAAA,CAAG,CAAC;;GAEF,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,KAAK,GAAG;AACpC,KAAI,IAAI,MAAM,CAAC,SAAS,EAAE;;AAE1B,KAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;AACrB,GAAA,CAAG,CAAC;;GAEF,MAAM,CAAC,QAAQ,GAAG,UAAU,GAAG,EAAE,QAAQ,EAAE;KACzC,IAAI,EAAE,CAAC,UAAU,KAAK,EAAE,CAAC,MAAM,EAAE;OAC/B,QAAQ,CAAC,GAAG,CAAC;AACnB,OAAM,OAAO,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;OACnC;AACN,KAAA;;KAEI,IAAI,MAAM,GAAG,KAAK;;KAElB,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,KAAK,CAAC,GAAG,EAAE;OACnC,MAAM,GAAG,IAAI;OACb,QAAQ,CAAC,GAAG,CAAC;AACnB,KAAA,CAAK,CAAC;;KAEF,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,KAAK,GAAG;AACtC,OAAM,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAC;AAChC,OAAM,OAAO,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;AACzC,KAAA,CAAK,CAAC;;AAEN,KAAI,IAAI,kBAAkB,EAAE,EAAE,CAAC,SAAS,EAAE;GAC1C,CAAG;;AAEH,GAAE,MAAM,CAAC,MAAM,GAAG,UAAU,QAAQ,EAAE;KAClC,IAAI,EAAE,CAAC,UAAU,KAAK,EAAE,CAAC,UAAU,EAAE;OACnC,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,IAAI,GAAG;AACtC,SAAQ,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;AAC/B,OAAA,CAAO,CAAC;OACF;AACN,KAAA;;AAEA;AACA;AACA;AACA;AACA,KAAI,IAAI,EAAE,CAAC,OAAO,KAAK,IAAI,EAAE;;KAEzB,IAAI,EAAE,CAAC,OAAO,CAAC,cAAc,CAAC,QAAQ,EAAE;AAC5C,OAAM,QAAQ,EAAE;OACV,IAAI,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,MAAM,CAAC,OAAO,EAAE;AAC5D,KAAA,CAAK,MAAM;OACL,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,MAAM,GAAG;AAClD;AACA;AACA;AACA,SAAQ,QAAQ,EAAE;AAClB,OAAA,CAAO,CAAC;OACF,EAAE,CAAC,KAAK,EAAE;AAChB,KAAA;GACA,CAAG;;AAEH,GAAE,MAAM,CAAC,KAAK,GAAG,YAAY;KACzB,IAAI,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,MAAM,EAAE;GAChC,CAAG;;GAED,MAAM,CAAC,MAAM,GAAG,UAAU,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE;KACnD,IAAI,EAAE,CAAC,UAAU,KAAK,EAAE,CAAC,UAAU,EAAE;OACnC,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,IAAI,GAAG;SAC9B,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC;AAChD,OAAA,CAAO,CAAC;OACF;AACN,KAAA;;AAEA,KAAI,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC;GAC5B,CAAG;;AAEH,GAAE,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC;AAC/B,GAAE,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC;AACnC,GAAE,OAAO,MAAM;AACf,CAAA;;AAEA,CAAA,MAAc,GAAG,qBAAqB;;;;;;;;;;;;;;;;;;;;AC9JtC,CAAA,MAAM,EAAE,UAAU,EAAE,GAAGH,iBAAA,EAAuB;;AAE9C;AACA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,KAAK,CAAC,MAAM,EAAE;AACvB,GAAE,MAAM,SAAS,GAAG,IAAI,GAAG,EAAE;AAC7B,GAAE,IAAI,KAAK,GAAG,EAAE;AAChB,GAAE,IAAI,GAAG,GAAG,EAAE;GACZ,IAAI,CAAC,GAAG,CAAC;;GAET,KAAK,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;KAC9B,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;;AAErC,KAAI,IAAI,GAAG,KAAK,EAAE,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;OACxC,IAAI,KAAK,KAAK,EAAE,EAAE,KAAK,GAAG,CAAC;AACjC,KAAA,CAAK,MAAM;OACL,CAAC,KAAK,CAAC;AACb,QAAO,IAAI,KAAK,IAAI,cAAc,IAAI,KAAK,IAAI,CAAC;OAC1C;AACN,OAAM,IAAI,GAAG,KAAK,EAAE,IAAI,KAAK,KAAK,EAAE,EAAE,GAAG,GAAG,CAAC;AAC7C,KAAA,CAAK,MAAM,IAAI,IAAI,KAAK,IAAI,YAAY;AACxC,OAAM,IAAI,KAAK,KAAK,EAAE,EAAE;SAChB,MAAM,IAAI,WAAW,CAAC,CAAC,8BAA8B,EAAE,CAAC,CAAC,CAAC,CAAC;AACnE,OAAA;;OAEM,IAAI,GAAG,KAAK,EAAE,EAAE,GAAG,GAAG,CAAC;;OAEvB,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC;;AAE/C,OAAM,IAAI,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;SAC3B,MAAM,IAAI,WAAW,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC,2BAA2B,CAAC,CAAC;AAC5E,OAAA;;AAEA,OAAM,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC7B,OAAM,KAAK,GAAG,GAAG,GAAG,EAAE;AACtB,KAAA,CAAK,MAAM;OACL,MAAM,IAAI,WAAW,CAAC,CAAC,8BAA8B,EAAE,CAAC,CAAC,CAAC,CAAC;AACjE,KAAA;AACA,GAAA;;GAEE,IAAI,KAAK,KAAK,EAAE,IAAI,GAAG,KAAK,EAAE,EAAE;AAClC,KAAI,MAAM,IAAI,WAAW,CAAC,yBAAyB,CAAC;AACpD,GAAA;;GAEE,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;;AAEzC,GAAE,IAAI,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;KAC3B,MAAM,IAAI,WAAW,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC,2BAA2B,CAAC,CAAC;AACxE,GAAA;;AAEA,GAAE,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;AACzB,GAAE,OAAO,SAAS;AAClB,CAAA;;AAEA,CAAA,WAAc,GAAG,EAAE,KAAK,EAAE;;;;;;;;;;;;;CCzD1B,MAAM,YAAY,GAAGA,YAAiB;CACtC,MAAM,IAAI,GAAGG,UAAe;AAC5B,CAAA,MAAM,EAAE,MAAM,EAAE,GAAGC,YAAiB;AACpC,CAAA,MAAM,EAAE,UAAU,EAAE,GAAGC,UAAiB;;CAExC,MAAM,SAAS,GAAGE,gBAAA,EAAsB;CACxC,MAAM,iBAAiB,GAAGC,wBAAA,EAA+B;CACzD,MAAM,WAAW,GAAGC,kBAAA,EAAwB;CAC5C,MAAM,SAAS,GAAGS,gBAAA,EAAsB;AACxC,CAAA,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,GAAGR,gBAAA,EAAsB;;CAEnD,MAAM,QAAQ,GAAG,uBAAuB;;CAExC,MAAM,OAAO,GAAG,CAAC;CACjB,MAAM,OAAO,GAAG,CAAC;CACjB,MAAM,MAAM,GAAG,CAAC;;AAEhB;AACA;AACA;AACA;AACA;CACA,MAAM,eAAe,SAAS,YAAY,CAAC;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE,WAAW,CAAC,OAAO,EAAE,QAAQ,EAAE;AACjC,KAAI,KAAK,EAAE;;AAEX,KAAI,OAAO,GAAG;OACR,sBAAsB,EAAE,IAAI;OAC5B,QAAQ,EAAE,IAAI;AACpB,OAAM,UAAU,EAAE,GAAG,GAAG,IAAI,GAAG,IAAI;OAC7B,kBAAkB,EAAE,KAAK;OACzB,iBAAiB,EAAE,KAAK;OACxB,eAAe,EAAE,IAAI;OACrB,cAAc,EAAE,IAAI;OACpB,YAAY,EAAE,IAAI;OAClB,QAAQ,EAAE,KAAK;OACf,OAAO,EAAE,IAAI;OACb,MAAM,EAAE,IAAI;OACZ,IAAI,EAAE,IAAI;OACV,IAAI,EAAE,IAAI;OACV,IAAI,EAAE,IAAI;AAChB,OAAM,SAAS;AACf,OAAM,GAAG;MACJ;;KAED;AACJ,OAAM,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ;AACnE,QAAO,OAAO,CAAC,IAAI,IAAI,IAAI,KAAK,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC;AACpE,QAAO,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,QAAQ;OACnC;OACA,MAAM,IAAI,SAAS;AACzB,SAAQ,kEAAkE;WAChE;QACH;AACP,KAAA;;AAEA,KAAI,IAAI,OAAO,CAAC,IAAI,IAAI,IAAI,EAAE;AAC9B,OAAM,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK;SAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC;;AAE3C,SAAQ,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE;AAC3B,WAAU,gBAAgB,EAAE,IAAI,CAAC,MAAM;AACvC,WAAU,cAAc,EAAE;AAC1B,UAAS,CAAC;AACV,SAAQ,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC;AACrB,OAAA,CAAO,CAAC;AACR,OAAM,IAAI,CAAC,OAAO,CAAC,MAAM;SACjB,OAAO,CAAC,IAAI;SACZ,OAAO,CAAC,IAAI;SACZ,OAAO,CAAC,OAAO;SACf;QACD;AACP,KAAA,CAAK,MAAM,IAAI,OAAO,CAAC,MAAM,EAAE;AAC/B,OAAM,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM;AACnC,KAAA;;AAEA,KAAI,IAAI,IAAI,CAAC,OAAO,EAAE;AACtB,OAAM,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC;;OAEzD,IAAI,CAAC,gBAAgB,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE;SACjD,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC;SAC5C,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC;SACpC,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,KAAK;WAC9B,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,CAAC;AAC/D,SAAA;AACA,QAAO,CAAC;AACR,KAAA;;KAEI,IAAI,OAAO,CAAC,iBAAiB,KAAK,IAAI,EAAE,OAAO,CAAC,iBAAiB,GAAG,EAAE;AAC1E,KAAI,IAAI,OAAO,CAAC,cAAc,EAAE;AAChC,OAAM,IAAI,CAAC,OAAO,GAAG,IAAI,GAAG,EAAE;AAC9B,OAAM,IAAI,CAAC,gBAAgB,GAAG,KAAK;AACnC,KAAA;;AAEA,KAAI,IAAI,CAAC,OAAO,GAAG,OAAO;AAC1B,KAAI,IAAI,CAAC,MAAM,GAAG,OAAO;AACzB,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE,OAAO,GAAG;AACZ,KAAI,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;AAC/B,OAAM,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC;AACnE,KAAA;;AAEA,KAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,IAAI;AAClC,KAAI,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;AACjC,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;GACE,KAAK,CAAC,EAAE,EAAE;AACZ,KAAI,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE;OAC1B,IAAI,EAAE,EAAE;AACd,SAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM;AACjC,WAAU,EAAE,CAAC,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;AACpD,SAAA,CAAS,CAAC;AACV,OAAA;;AAEA,OAAM,OAAO,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;OACjC;AACN,KAAA;;KAEI,IAAI,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;;AAElC,KAAI,IAAI,IAAI,CAAC,MAAM,KAAK,OAAO,EAAE;AACjC,KAAI,IAAI,CAAC,MAAM,GAAG,OAAO;;AAEzB,KAAI,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;AACtD,OAAM,IAAI,IAAI,CAAC,OAAO,EAAE;SAChB,IAAI,CAAC,gBAAgB,EAAE;SACvB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI;AACnD,OAAA;;AAEA,OAAM,IAAI,IAAI,CAAC,OAAO,EAAE;AACxB,SAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;AAChC,WAAU,OAAO,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;AAC3C,SAAA,CAAS,MAAM;AACf,WAAU,IAAI,CAAC,gBAAgB,GAAG,IAAI;AACtC,SAAA;AACA,OAAA,CAAO,MAAM;AACb,SAAQ,OAAO,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;AACzC,OAAA;AACA,KAAA,CAAK,MAAM;AACX,OAAM,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO;;OAE3B,IAAI,CAAC,gBAAgB,EAAE;OACvB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI;;AAEjD;AACA;AACA;AACA;AACA,OAAM,MAAM,CAAC,KAAK,CAAC,MAAM;SACjB,SAAS,CAAC,IAAI,CAAC;AACvB,OAAA,CAAO,CAAC;AACR,KAAA;AACA,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;GACE,YAAY,CAAC,GAAG,EAAE;AACpB,KAAI,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;OACrB,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC;OAClC,MAAM,QAAQ,GAAG,KAAK,KAAK,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,GAAG,CAAC,GAAG;;OAEjE,IAAI,QAAQ,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,KAAK;AACtD,KAAA;;AAEA,KAAI,OAAO,IAAI;AACf,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;GACE,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE;AACvC,KAAI,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC;;KAEjC,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,mBAAmB,CAAC;AAChD,KAAI,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO;KACnC,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,uBAAuB,CAAC;;AAEzD,KAAI,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,EAAE;OACxB,MAAM,OAAO,GAAG,qBAAqB;OACrC,iCAAiC,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC;OAClE;AACN,KAAA;;KAEI,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,WAAW,EAAE,KAAK,WAAW,EAAE;OAClE,MAAM,OAAO,GAAG,wBAAwB;OACxC,iCAAiC,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC;OAClE;AACN,KAAA;;AAEA,KAAI,IAAI,GAAG,KAAK,SAAS,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;OAC5C,MAAM,OAAO,GAAG,6CAA6C;OAC7D,iCAAiC,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC;OAClE;AACN,KAAA;;KAEI,IAAI,OAAO,KAAK,EAAE,IAAI,OAAO,KAAK,CAAC,EAAE;OACnC,MAAM,OAAO,GAAG,iDAAiD;OACjE,iCAAiC,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE;AACzE,SAAQ,uBAAuB,EAAE;AACjC,QAAO,CAAC;OACF;AACN,KAAA;;KAEI,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE;AACjC,OAAM,cAAc,CAAC,MAAM,EAAE,GAAG,CAAC;OAC3B;AACN,KAAA;;KAEI,MAAM,oBAAoB,GAAG,GAAG,CAAC,OAAO,CAAC,wBAAwB,CAAC;AACtE,KAAI,IAAI,SAAS,GAAG,IAAI,GAAG,EAAE;;AAE7B,KAAI,IAAI,oBAAoB,KAAK,SAAS,EAAE;AAC5C,OAAM,IAAI;AACV,SAAQ,SAAS,GAAG,WAAW,CAAC,KAAK,CAAC,oBAAoB,CAAC;OAC3D,CAAO,CAAC,OAAO,GAAG,EAAE;SACZ,MAAM,OAAO,GAAG,uCAAuC;SACvD,iCAAiC,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC;SAClE;AACR,OAAA;AACA,KAAA;;KAEI,MAAM,sBAAsB,GAAG,GAAG,CAAC,OAAO,CAAC,0BAA0B,CAAC;KACtE,MAAM,UAAU,GAAG,EAAE;;KAErB;AACJ,OAAM,IAAI,CAAC,OAAO,CAAC,iBAAiB;AACpC,OAAM,sBAAsB,KAAK;OAC3B;AACN,OAAM,MAAM,iBAAiB,GAAG,IAAI,iBAAiB;AACrD,SAAQ,IAAI,CAAC,OAAO,CAAC,iBAAiB;AACtC,SAAQ,IAAI;SACJ,IAAI,CAAC,OAAO,CAAC;QACd;;AAEP,OAAM,IAAI;SACF,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,sBAAsB,CAAC;;AAE9D,SAAQ,IAAI,MAAM,CAAC,iBAAiB,CAAC,aAAa,CAAC,EAAE;WAC3C,iBAAiB,CAAC,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;AAC3E,WAAU,UAAU,CAAC,iBAAiB,CAAC,aAAa,CAAC,GAAG,iBAAiB;AACzE,SAAA;OACA,CAAO,CAAC,OAAO,GAAG,EAAE;AACpB,SAAQ,MAAM,OAAO;AACrB,WAAU,yDAAyD;SAC3D,iCAAiC,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC;SAClE;AACR,OAAA;AACA,KAAA;;AAEA;AACA;AACA;AACA,KAAI,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;OAC7B,MAAM,IAAI,GAAG;AACnB,SAAQ,MAAM;AACd,WAAU,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,OAAO,KAAK,CAAC,GAAG,sBAAsB,GAAG,QAAQ,CAAC,CAAC,CAAC;AAC7E,SAAQ,MAAM,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,UAAU,IAAI,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC;SACzD;QACD;;OAED,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE;AAClD,SAAQ,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,KAAK;WACpE,IAAI,CAAC,QAAQ,EAAE;AACzB,aAAY,OAAO,cAAc,CAAC,MAAM,EAAE,IAAI,IAAI,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC;AACxE,WAAA;;WAEU,IAAI,CAAC,eAAe;AAC9B,aAAY,UAAU;AACtB,aAAY,GAAG;AACf,aAAY,SAAS;AACrB,aAAY,GAAG;AACf,aAAY,MAAM;AAClB,aAAY,IAAI;aACJ;YACD;AACX,SAAA,CAAS,CAAC;SACF;AACR,OAAA;;AAEA,OAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,OAAO,cAAc,CAAC,MAAM,EAAE,GAAG,CAAC;AAC9E,KAAA;;AAEA,KAAI,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC;AAC3E,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE,eAAe,CAAC,UAAU,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE;AACrE;AACA;AACA;AACA,KAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,MAAM,CAAC,OAAO,EAAE;;AAErE,KAAI,IAAI,MAAM,CAAC,UAAU,CAAC,EAAE;OACtB,MAAM,IAAI,KAAK;AACrB,SAAQ,iEAAiE;WAC/D;QACH;AACP,KAAA;;AAEA,KAAI,IAAI,IAAI,CAAC,MAAM,GAAG,OAAO,EAAE,OAAO,cAAc,CAAC,MAAM,EAAE,GAAG,CAAC;;AAEjE,KAAI,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM;AACpC,QAAO,MAAM,CAAC,GAAG,GAAG,IAAI;QACjB,MAAM,CAAC,QAAQ,CAAC;;KAEnB,MAAM,OAAO,GAAG;AACpB,OAAM,kCAAkC;AACxC,OAAM,oBAAoB;AAC1B,OAAM,qBAAqB;AAC3B,OAAM,CAAC,sBAAsB,EAAE,MAAM,CAAC;MACjC;;AAEL,KAAI,MAAM,EAAE,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC;;AAExE,KAAI,IAAI,SAAS,CAAC,IAAI,EAAE;AACxB;AACA;AACA;AACA,OAAM,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC;WAC1B,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,SAAS,EAAE,GAAG;WAC3C,SAAS,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK;;OAEnC,IAAI,QAAQ,EAAE;SACZ,OAAO,CAAC,IAAI,CAAC,CAAC,wBAAwB,EAAE,QAAQ,CAAC,CAAC,CAAC;AAC3D,SAAQ,EAAE,CAAC,SAAS,GAAG,QAAQ;AAC/B,OAAA;AACA,KAAA;;AAEA,KAAI,IAAI,UAAU,CAAC,iBAAiB,CAAC,aAAa,CAAC,EAAE;OAC/C,MAAM,MAAM,GAAG,UAAU,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC,MAAM;AACvE,OAAM,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC;AACrC,SAAQ,CAAC,iBAAiB,CAAC,aAAa,GAAG,CAAC,MAAM;AAClD,QAAO,CAAC;OACF,OAAO,CAAC,IAAI,CAAC,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAC,CAAC;AACxD,OAAM,EAAE,CAAC,WAAW,GAAG,UAAU;AACjC,KAAA;;AAEA;AACA;AACA;KACI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,GAAG,CAAC;;AAEtC,KAAI,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACrD,KAAI,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,aAAa,CAAC;;AAEjD,KAAI,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE;AAC/B,OAAM,sBAAsB,EAAE,IAAI,CAAC,OAAO,CAAC,sBAAsB;AACjE,OAAM,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU;AACzC,OAAM,kBAAkB,EAAE,IAAI,CAAC,OAAO,CAAC;AACvC,MAAK,CAAC;;AAEN,KAAI,IAAI,IAAI,CAAC,OAAO,EAAE;AACtB,OAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;AAC1B,OAAM,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM;AAC3B,SAAQ,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;;SAEvB,IAAI,IAAI,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;AACzD,WAAU,OAAO,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;AAC3C,SAAA;AACA,OAAA,CAAO,CAAC;AACR,KAAA;;AAEA,KAAI,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC;AACf,GAAA;AACA;;AAEA,CAAA,eAAc,GAAG,eAAe;;AAEhC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,YAAY,CAAC,MAAM,EAAE,GAAG,EAAE;GACjC,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;;GAElE,OAAO,SAAS,eAAe,GAAG;KAChC,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;OACpC,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;AAC9C,KAAA;GACA,CAAG;AACH,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,SAAS,CAAC,MAAM,EAAE;AAC3B,GAAE,MAAM,CAAC,MAAM,GAAG,MAAM;AACxB,GAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;AACtB,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,aAAa,GAAG;GACvB,IAAI,CAAC,OAAO,EAAE;AAChB,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;GACE,OAAO,GAAG,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AAC9C,GAAE,OAAO,GAAG;KACR,UAAU,EAAE,OAAO;KACnB,cAAc,EAAE,WAAW;AAC/B,KAAI,gBAAgB,EAAE,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC;AAChD,KAAI,GAAG;IACJ;;GAED,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC;;GAErC,MAAM,CAAC,GAAG;AACZ,KAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;AACrD,OAAM,MAAM,CAAC,IAAI,CAAC,OAAO;AACzB,UAAS,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;UAChC,IAAI,CAAC,MAAM,CAAC;AACrB,OAAM,UAAU;OACV;IACH;AACH,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,iCAAiC;AAC1C,GAAE,MAAM;AACR,GAAE,GAAG;AACL,GAAE,MAAM;AACR,GAAE,IAAI;AACN,GAAE,OAAO;GACP;GACA;AACF,GAAE,IAAI,MAAM,CAAC,aAAa,CAAC,eAAe,CAAC,EAAE;AAC7C,KAAI,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC;AAClC,KAAI,KAAK,CAAC,iBAAiB,CAAC,GAAG,EAAE,iCAAiC,CAAC;;KAE/D,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC;AAClD,GAAA,CAAG,MAAM;KACL,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC;AAClD,GAAA;AACA,CAAA;;;;;;ACriBA;;;AAGG;AAEH;;;;;;;AAOG;AACG,SAAU,yBAAyB,CACvC,IAIC,EACD,UAAwC,EAAE,cAAc,EAAE,IAAI,EAAE,EAAA;AAEhE,IAAA,MAAM,EAAE,cAAc,GAAG,IAAI,EAAE,GAAG,OAAO;;IAGzC,IACE,CAAC,IAAI,CAAC,MAAM;AACZ,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ;QAC/B,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAC/B;QACA,IAAI,cAAc,EAAE;AAClB,YAAA,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC;QACvE;AACA,QAAA,OAAO,CAAC,IAAI,CACV,+EAA+E,CAChF;AACD,QAAA,OAAO,KAAK;IACd;;IAGA,IACE,CAAC,IAAI,CAAC,SAAS;AACf,QAAA,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ;QAClC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAClC;QACA,IAAI,cAAc,EAAE;AAClB,YAAA,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC;QAC1E;AACA,QAAA,OAAO,CAAC,IAAI,CACV,kFAAkF,CACnF;AACD,QAAA,OAAO,KAAK;IACd;;IAGA,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,EAAE,EAAE;QAC3B,IAAI,cAAc,EAAE;AAClB,YAAA,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC;QAC3D;AACA,QAAA,OAAO,CAAC,IAAI,CAAC,8CAA8C,CAAC;AAC5D,QAAA,OAAO,KAAK;IACd;AAEA,IAAA,OAAO,IAAI;AACb;;AC/DA;;;AAGG;AAEH;;;AAGG;AACI,MAAM,gBAAgB,GAAG;AAC9B,IAAA,UAAU,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,OAAO,EAAE,EAAE,CAAC;AACnE,IAAA,WAAW,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,OAAO,EAAE,EAAE,CAAC;AACrE,IAAA,aAAa,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,yBAAyB,IAAI,OAAO,EAAE,EAAE,CAAC;AAC7E,IAAA,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,OAAO,EAAE,EAAE,CAAC;CAClD;AA0BV;;;;;AAKG;AACG,SAAU,mBAAmB,CAAC,EAAU,EAAA;AAC5C,IAAA,OAAO,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;AAChC;;ACOA,MAAMX,KAAG,GAAG,CAAC,OAAe,EAAE,OAAA,GAAsB,EAAE,IAAI,EAAE,MAAM,EAAE,KAAI;AACtE,IAAAoB,KAAO,CAAC,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,qBAAqB,EAAE,CAAC;AACjE,CAAC;AAED;AACA,MAAM,kBAAkB,GAAG,KAAc;AACzC,MAAM,YAAY,GAAG,KAAiB;AACtC,MAAM,gBAAgB,GAAG,KAAc;AA+GvC;;;AAGG;AACG,MAAO,mBAAoB,SAAQ,YAAY,CAAA;IAC3C,OAAO,QAAQ;AACf,IAAA,OAAO;AACP,IAAA,OAAO;AACP,IAAA,MAAM;AACN,IAAA,UAAU;;IAEV,gBAAgB,GAAY,KAAK;AACjC,IAAA,cAAc,GAAW,iBAAiB,CAAC,YAAY,CAAC,CAAC;AACzD,IAAA,eAAe,GAAW,mBAAmB,CAAC,YAAY,CAAC,CAAC;AAC5D,IAAA,eAAe,GAAW,kBAAkB,CAAC,YAAY,CAAC,CAAC;IAC3D,OAAO,GAAqB,IAAI;IAChC,QAAQ,GAAqB,IAAI;IACjC,QAAQ,GAAqB,IAAI;AACjC,IAAA,kBAAkB,GAA6B;AACrD,QAAA,MAAM,EAAE,EAAE;AACV,QAAA,MAAM,EAAE,EAAE;AACV,QAAA,IAAI,EAAE,EAAE;KACT;AACO,IAAA,mBAAmB,GAA6B;AACtD,QAAA,MAAM,EAAE,EAAE;AACV,QAAA,MAAM,EAAE,EAAE;AACV,QAAA,IAAI,EAAE,EAAE;KACT;AACO,IAAA,mBAAmB,GAA6B;AACtD,QAAA,MAAM,EAAE,EAAE;AACV,QAAA,MAAM,EAAE,EAAE;AACV,QAAA,IAAI,EAAE,EAAE;KACT;IAEM,OAAO,CAAC,OAA0C,YAAY,EAAA;AACnE,QAAA,IAAI,IAAI,KAAK,SAAS,EAAE;;YAEtB,IAAI,CAAC,cAAc,GAAG,iBAAiB,CAAC,MAAM,CAAC,UAAU,CAAC;AAC1D,YAAA,IAAI,CAAC,eAAe,GAAG,mBAAmB,CAAC,SAAS,CAAC;AACrD,YAAA,IAAI,CAAC,eAAe,GAAG,kBAAkB,CAAC,SAAS,CAAC;QACtD;AAAO,aAAA,IAAI,IAAI,KAAK,MAAM,EAAE;;AAE1B,YAAA,IAAI,CAAC,cAAc,GAAG,iBAAiB,CAAC,MAAM,CAAC;YAC/C,IAAI,CAAC,eAAe,GAAG,mBAAmB,CAAC,YAAY,CAAC,CAAC;YACzD,IAAI,CAAC,eAAe,GAAG,kBAAkB,CAAC,YAAY,CAAC,CAAC;QAC1D;aAAO;;AAEL,YAAA,IAAI,CAAC,cAAc,GAAG,iBAAiB,CAAC,YAAY,CAAC;AACrD,YAAA,IAAI,CAAC,eAAe,GAAG,mBAAmB,CAAC,YAAY,CAAC;AACxD,YAAA,IAAI,CAAC,eAAe,GAAG,kBAAkB,CAAC,YAAY,CAAC;QACzD;IACF;IAEO,OAAO,GAAA;QACZ,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;AAC3C,YAAA,OAAO,SAAS;QAClB;aAAO,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AAC/C,YAAA,OAAO,MAAM;QACf;aAAO;AACL,YAAA,OAAO,YAAY;QACrB;IACF;AAEA,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;;;;;QAMP,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,EAAE;QAC/C,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,EAAE;AACrD,QAAA,IAAI,CAAC,gBAAgB,GAAG,yBAAyB,CAC/C;YACE,MAAM;YACN,SAAS;AACT,YAAA,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB,KAAK,OAAO;AACrD,SAAA,EACD,EAAE,cAAc,EAAE,KAAK,EAAE,CAC1B;AAED,QAAA,IAAI,CAAC,OAAO,GAAG,eAAe,CAAC,MAAM;AACrC,QAAA,IAAI,CAAC,MAAM;AACT,YAAA,OAAO,CAAC,GAAG,CAAC,mBAAmB,KAAK;AAClC,kBAAE,gBAAgB,CAAC,OAAO;AAC1B,kBAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAC/B,IAAI,CAAC,UAAU,GAAG,eAAe,CAAC,OAAO,CAAC;AAC1C,QAAA,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAC3B,IAAI,CAAC,OAAO,GAAG;AACb,YAAA,iBAAiB,EAAE,MAAM;AACzB,YAAA,qBAAqB,EAAE,SAAS;AAChC,YAAA,cAAc,EAAE,kBAAkB;SACnC;IACH;AAEO,IAAA,OAAO,WAAW,GAAA;AACvB,QAAA,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE;AACjC,YAAA,mBAAmB,CAAC,QAAQ,GAAG,IAAI,mBAAmB,EAAE;QAC1D;QACA,OAAO,mBAAmB,CAAC,QAAQ;IACrC;IAeO,EAAE,CACP,KAAsB,EACtB,QAAsC,EAAA;QAEtC,OAAO,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC;IAClC;AAcO,IAAA,IAAI,CAAC,KAAsB,EAAE,GAAG,IAAe,EAAA;QACpD,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC;IACnC;AAEQ,IAAA,OAAO,CAAC,UAAyC,EAAA;AACvD,QAAA,IAAI,GAAW;AACf,QAAA,IAAI,UAAU,KAAK,OAAO,EAAE;AAC1B,YAAA,GAAG,GAAG,IAAI,CAAC,cAAc;QAC3B;AAAO,aAAA,IAAI,UAAU,KAAK,QAAQ,EAAE;AAClC,YAAA,GAAG,GAAG,IAAI,CAAC,eAAe;QAC5B;aAAO;AACL,YAAA,GAAG,GAAG,IAAI,CAAC,eAAe;QAC5B;AAEA,QAAA,MAAM,EAAE,GAAG,IAAI,SAAS,CAAC,GAAG,CAAC;AAC7B,QAAA,IAAI,UAAU,KAAK,OAAO,EAAE;AAC1B,YAAA,IAAI,CAAC,OAAO,GAAG,EAAE;QACnB;AAAO,aAAA,IAAI,UAAU,KAAK,QAAQ,EAAE;AAClC,YAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;QACpB;aAAO;AACL,YAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;QACpB;AAEA,QAAA,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,MAAK;YACjBpB,KAAG,CAAC,CAAA,EAAG,UAAU,CAAA,iBAAA,CAAmB,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AACvD,YAAA,MAAM,WAAW,GAAG;AAClB,gBAAA,MAAM,EAAE,MAAM;AACd,gBAAA,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,cAAe;AAChC,gBAAA,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAkB;aACvC;YACD,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;AACtC,QAAA,CAAC,CAAC;QAEF,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,IAAoB,KAAI;AACxC,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC/B,YAAA,IAAI,QAAQ;AACZ,YAAA,IAAI;AACF,gBAAA,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;YAChC;YAAE,OAAO,CAAC,EAAE;gBACVA,KAAG,CACD,GAAG,UAAU,CAAA,+BAAA,EAAkC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA,CAAE,EAC1E,EAAE,IAAI,EAAE,OAAO,EAAE,CAClB;gBACD;YACF;AACA,YAAA,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;AAC9B,gBAAA,IAAI,OAAO,CAAC,CAAC,KAAK,SAAS,IAAI,OAAO,CAAC,GAAG,KAAK,eAAe,EAAE;oBAC9DA,KAAG,CAAC,CAAA,EAAG,UAAU,CAAA,qBAAA,CAAuB,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAC3D,oBAAA,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC;gBACnC;AAAO,qBAAA,IAAI,OAAO,CAAC,CAAC,KAAK,SAAS,IAAI,OAAO,CAAC,GAAG,KAAK,WAAW,EAAE;AACjE,oBAAAA,KAAG,CAAC,CAAA,EAAG,UAAU,CAAA,kCAAA,CAAoC,EAAE;AACrD,wBAAA,IAAI,EAAE,OAAO;AACd,qBAAA,CAAC;gBACJ;AAAO,qBAAA,IAAI,OAAO,CAAC,CAAC,KAAK,cAAc,EAAE;AACvC,oBAAAA,KAAG,CACD,CAAA,EAAG,UAAU,CAAA,gCAAA,EAAmC,OAAO,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,CAAA,SAAA,EAAY,OAAO,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,UAAU,OAAO,CAAC,IAAI,EAAE,MAAM,IAAI,CAAC,CAAA,CAAE,EACvJ,EAAE,IAAI,EAAE,MAAM,EAAE,CACjB;gBACH;AAAO,qBAAA,IAAI,OAAO,CAAC,CAAC,KAAK,OAAO,EAAE;oBAChCA,KAAG,CACD,CAAA,EAAG,UAAU,CAAA,eAAA,EAAkB,OAAO,CAAC,GAAG,CAAA,QAAA,EAAW,OAAO,CAAC,IAAI,CAAA,OAAA,EAAU,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA,CAAA,CAAG,EACrG,EAAE,IAAI,EAAE,OAAO,EAAE,CAClB;gBACH;AAAO,qBAAA,IAAI,OAAO,CAAC,CAAC,EAAE;AACpB,oBAAA,KAAK,CAAC,IAAI,CAAC,CAAA,EAAG,UAAU,CAAA,CAAA,EAAI,OAAO,CAAC,CAAC,CAAA,CAAE,EAAE,OAAO,CAAC;oBACjD,KAAK,CAAC,IAAI,CACR,CAAA,EAAG,UAAU,CAAA,KAAA,CAAO,EACpB,OAG6B,CAC9B;gBACH;qBAAO;AACL,oBAAAA,KAAG,CACD,CAAA,EAAG,UAAU,mCAAmC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA,CAAE,EACzE,EAAE,IAAI,EAAE,OAAO,EAAE,CAClB;gBACH;YACF;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,MAAK;YAClBA,KAAG,CAAC,CAAA,EAAG,UAAU,CAAA,oBAAA,CAAsB,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAC1D,YAAA,IAAI,UAAU,KAAK,OAAO,EAAE;AAC1B,gBAAA,IAAI,CAAC,OAAO,GAAG,IAAI;YACrB;AAAO,iBAAA,IAAI,UAAU,KAAK,QAAQ,EAAE;AAClC,gBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;YACtB;iBAAO;AACL,gBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;YACtB;;AAEF,QAAA,CAAC,CAAC;QAEF,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAY,KAAI;AAC9B,YAAAA,KAAG,CAAC,CAAA,EAAG,UAAU,CAAA,eAAA,EAAkB,KAAK,CAAC,OAAO,CAAA,CAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AACxE,QAAA,CAAC,CAAC;IACJ;AAEQ,IAAA,gBAAgB,CAAC,UAAyC,EAAA;AAChE,QAAA,IAAI,EAAoB;AACxB,QAAA,IAAI,aAAuC;AAE3C,QAAA,IAAI,UAAU,KAAK,OAAO,EAAE;AAC1B,YAAA,EAAE,GAAG,IAAI,CAAC,OAAO;AACjB,YAAA,aAAa,GAAG,IAAI,CAAC,kBAAkB;QACzC;AAAO,aAAA,IAAI,UAAU,KAAK,QAAQ,EAAE;AAClC,YAAA,EAAE,GAAG,IAAI,CAAC,QAAQ;AAClB,YAAA,aAAa,GAAG,IAAI,CAAC,mBAAmB;QAC1C;aAAO;AACL,YAAA,EAAE,GAAG,IAAI,CAAC,QAAQ;AAClB,YAAA,aAAa,GAAG,IAAI,CAAC,mBAAmB;QAC1C;AAEA,QAAAA,KAAG,CACD,CAAA,4BAAA,EAA+B,UAAU,CAAA,UAAA,EAAa,EAAE,EAAE,UAAU,KAAK,SAAS,CAAC,IAAI,CAAA,SAAA,EAAY,aAAa,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,CAAA,SAAA,EAAY,aAAa,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,CAAA,OAAA,EAAU,aAAa,CAAC,IAAI,EAAE,MAAM,IAAI,CAAC,GAAG,EAC7N;AACE,YAAA,IAAI,EAAE,OAAO;AACd,SAAA,CACF;QAED,IAAI,EAAE,IAAI,EAAE,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI,EAAE;YAC1C,MAAM,iBAAiB,GAInB,EAAE;YAEN,IAAI,aAAa,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AACnC,gBAAA,iBAAiB,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM;YACjD;YACA,IAAI,aAAa,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AACnC,gBAAA,iBAAiB,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM;YACjD;YACA,IAAI,aAAa,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AACjC,gBAAA,iBAAiB,CAAC,IAAI,GAAG,aAAa,CAAC,IAAI;YAC7C;YAEA,IAAI,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;AAC7C,gBAAA,MAAM,UAAU,GAAG;AACjB,oBAAA,MAAM,EAAE,WAAW;AACnB,oBAAA,GAAG,iBAAiB;iBACrB;gBACD,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;AAC9C,gBAAAA,KAAG,CAAC,CAAA,QAAA,EAAW,UAAU,CAAA,eAAA,EAAkB,WAAW,EAAE,EAAE;AACxD,oBAAA,IAAI,EAAE,MAAM;AACb,iBAAA,CAAC;AACF,gBAAA,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC;YACtB;iBAAO;AACL,gBAAAA,KAAG,CAAC,CAAA,GAAA,EAAM,UAAU,CAAA,yCAAA,CAA2C,EAAE;AAC/D,oBAAA,IAAI,EAAE,OAAO;AACd,iBAAA,CAAC;YACJ;QACF;aAAO;AACL,YAAAA,KAAG,CAAC,CAAA,YAAA,EAAe,UAAU,CAAA,kCAAA,CAAoC,EAAE;AACjE,gBAAA,IAAI,EAAE,MAAM;AACb,aAAA,CAAC;QACJ;IACF;IAEO,kBAAkB,GAAA;AACvB,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACjB,YAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;QACvB;IACF;IAEO,mBAAmB,GAAA;AACxB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClB,YAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;QACxB;IACF;IAEO,mBAAmB,GAAA;AACxB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClB,YAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;QACxB;IACF;IAEO,qBAAqB,GAAA;AAC1B,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;QACtB;IACF;IAEO,sBAAsB,GAAA;AAC3B,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;QACvB;IACF;IAEO,sBAAsB,GAAA;AAC3B,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;QACvB;IACF;AAEA;;;;AAIG;AACI,IAAA,iBAAiB,CAAC,UAAyC,EAAA;AAChE,QAAA,IAAI,UAAU,KAAK,OAAO,EAAE;AAC1B,YAAA,QACE,IAAI,CAAC,OAAO,KAAK,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI;QAEvE;AAAO,aAAA,IAAI,UAAU,KAAK,QAAQ,EAAE;AAClC,YAAA,QACE,IAAI,CAAC,QAAQ,KAAK,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI;QAEzE;aAAO;AACL,YAAA,QACE,IAAI,CAAC,QAAQ,KAAK,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI;QAEzE;IACF;IAEO,SAAS,CACd,UAAyC,EACzC,aAAwE,EAAA;AAExE,QAAA,IAAI,oBAA8C;AAClD,QAAA,IAAI,UAAU,KAAK,OAAO,EAAE;AAC1B,YAAA,oBAAoB,GAAG,IAAI,CAAC,kBAAkB;QAChD;AAAO,aAAA,IAAI,UAAU,KAAK,QAAQ,EAAE;AAClC,YAAA,oBAAoB,GAAG,IAAI,CAAC,mBAAmB;QACjD;aAAO;AACL,YAAA,oBAAoB,GAAG,IAAI,CAAC,mBAAmB;QACjD;AAEA,QAAA,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAI;YACrD,IAAI,KAAK,EAAE;gBACT,oBAAoB,CAAC,GAAG,CAAC,GAAG;AAC1B,oBAAA,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,oBAAoB,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC;iBAC7D;YACH;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC;IACnC;IAEO,WAAW,CAChB,UAAyC,EACzC,aAAwE,EAAA;AAExE,QAAA,IAAI,oBAA8C;AAClD,QAAA,IAAI,UAAU,KAAK,OAAO,EAAE;AAC1B,YAAA,oBAAoB,GAAG,IAAI,CAAC,kBAAkB;QAChD;AAAO,aAAA,IAAI,UAAU,KAAK,QAAQ,EAAE;AAClC,YAAA,oBAAoB,GAAG,IAAI,CAAC,mBAAmB;QACjD;aAAO;AACL,YAAA,oBAAoB,GAAG,IAAI,CAAC,mBAAmB;QACjD;AAEA,QAAA,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAI;YACrD,IAAI,KAAK,EAAE;AACT,gBAAA,oBAAoB,CAAC,GAAG,CAAC,GAAG,CAAC,oBAAoB,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,MAAM,CAClE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAC1B;YACH;AACF,QAAA,CAAC,CAAC;AACF,QAAA,MAAM,YAAY,GAAG;AACnB,YAAA,MAAM,EAAE,aAAa;AACrB,YAAA,GAAG,aAAa;SACjB;AAED,QAAA,IAAI,EAAoB;AACxB,QAAA,IAAI,UAAU,KAAK,OAAO,EAAE;AAC1B,YAAA,EAAE,GAAG,IAAI,CAAC,OAAO;QACnB;AAAO,aAAA,IAAI,UAAU,KAAK,QAAQ,EAAE;AAClC,YAAA,EAAE,GAAG,IAAI,CAAC,QAAQ;QACpB;aAAO;AACL,YAAA,EAAE,GAAG,IAAI,CAAC,QAAQ;QACpB;QAEA,IAAI,EAAE,IAAI,EAAE,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI,EAAE;YAC1C,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QACvC;IACF;IAEQ,MAAM,WAAW,CACvB,QAAgB,EAChB,MAAA,GAAiB,KAAK,EACtB,MAAgC,EAChC,WAAA,GAA0C,MAAM,EAAA;AAEhD,QAAA,MAAM,OAAO,GACX,WAAW,KAAK;cACZ,IAAI,CAAC;cACL,WAAW,KAAK;kBACd,IAAI,CAAC;AACP,kBAAE,IAAI,CAAC,UAAU;QACvB,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,CAAA,EAAG,OAAO,CAAA,EAAG,QAAQ,CAAA,CAAE,CAAC;AAE5C,QAAA,IAAI;YACF,IAAI,MAAM,EAAE;AACV,gBAAA,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAI;AAC9C,oBAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACxB,wBAAA,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC/C;yBAAO,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE;AAChD,wBAAA,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC;oBAChD;AACF,gBAAA,CAAC,CAAC;YACJ;YAEA,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE;gBAC3C,MAAM;gBACN,OAAO,EAAE,IAAI,CAAC,OAAO;AACrB,gBAAA,MAAM,EAAE,mBAAmB,CAAC,gBAAgB,CAAC,UAAU,CAAC;AACzD,aAAA,CAAC;AAEF,YAAA,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;AAChB,gBAAA,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE;gBACvCA,KAAG,CAAC,0BAA0B,QAAQ,CAAC,MAAM,CAAA,GAAA,EAAM,SAAS,EAAE,EAAE;AAC9D,oBAAA,IAAI,EAAE,OAAO;AACd,iBAAA,CAAC;gBACF,MAAM,IAAI,KAAK,CACb,CAAA,uBAAA,EAA0B,QAAQ,CAAC,MAAM,CAAA,GAAA,EAAM,SAAS,CAAA,CAAE,CAC3D;YACH;AAEA,YAAA,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE;AAClC,YAAA,OAAO,IAAI;QACb;QAAE,OAAO,GAAG,EAAE;YACZ,MAAM,KAAK,GAAG,GAAY;YAC1BA,KAAG,CACD,yBAAyB,KAAK,CAAC,OAAO,CAAA,YAAA,EAAe,QAAQ,UAAU,GAAG,CAAC,QAAQ,EAAE,CAAA,CAAE,EACvF,EAAE,IAAI,EAAE,OAAO,EAAE,CAClB;AACD,YAAA,IAAI,KAAK,YAAY,SAAS,EAAE;AAC9B,gBAAAA,KAAG,CAAC,CAAA,uBAAA,EAA0B,KAAK,CAAC,KAAK,CAAA,CAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;YACjE;AACA,YAAA,MAAM,KAAK;QACb;IACF;AAEA;;;;;AAKG;IACH,MAAM,iBAAiB,CACrB,MAA4B,EAAA;AAE5B,QAAA,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO;QAC9B,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;QACpC,IAAI,OAAO,GAAgC,EAAE;QAC7C,IAAI,SAAS,GAAkB,IAAI;QACnC,IAAI,YAAY,GAAG,IAAI;QACvB,IAAI,cAAc,GAAG,CAAC;QACtB,IAAI,SAAS,GAAG,CAAC;QACjB,IAAI,QAAQ,GAAG,EAAE;;AAGjB,QAAA,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;AACzB,YAAA,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE;AACtB,QAAA,CAAC,CAAC;QAEFA,KAAG,CACD,sCAAsC,UAAU,CAAA,EAAA,EAAK,MAAM,CAAC,SAAS,KAAK,MAAM,CAAC,KAAK,IAAI,UAAU,OAAO,MAAM,CAAC,GAAG,IAAI,QAAQ,GAAG,EACpI;AACE,YAAA,IAAI,EAAE,MAAM;AACb,SAAA,CACF;QAED,OAAO,YAAY,EAAE;AACnB,YAAA,SAAS,EAAE;AACX,YAAA,MAAM,aAAa,GAAG;AACpB,gBAAA,GAAG,MAAM;AACT,gBAAA,UAAU,EAAE,kBAAkB;AAC9B,gBAAA,IAAI,EAAE,YAAY;gBAClB,IAAI,SAAS,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;aAC5C;AAED,YAAA,MAAM,QAAQ,GAA2B,MAAM,IAAI,CAAC,WAAW,CAC7D,cAAc,EACd,KAAK,EACL,aAAa,CACd;AAED,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AAClB,gBAAAA,KAAG,CAAC,CAAA,mCAAA,EAAsC,UAAU,CAAA,CAAE,EAAE;AACtD,oBAAA,IAAI,EAAE,MAAM;AACb,iBAAA,CAAC;gBACF;YACF;;YAGA,IAAI,CAAC,QAAQ,EAAE;AACb,gBAAA,QAAQ,GAAG,QAAQ,CAAC,QAAQ;YAC9B;;YAGA,IAAI,aAAa,GAAG,CAAC;YACrB,IAAI,iBAAiB,GAAgB,IAAI;YACzC,IAAI,eAAe,GAAgB,IAAI;AAEvC,YAAA,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,KAAI;gBACvD,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AAC3B,oBAAA,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC;AAC/C,oBAAA,aAAa,IAAI,IAAI,CAAC,MAAM;;AAG5B,oBAAA,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;wBACnB,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/B,wBAAA,IAAI,CAAC,iBAAiB,IAAI,OAAO,GAAG,iBAAiB,EAAE;4BACrD,iBAAiB,GAAG,OAAO;wBAC7B;AACA,wBAAA,IAAI,CAAC,eAAe,IAAI,OAAO,GAAG,eAAe,EAAE;4BACjD,eAAe,GAAG,OAAO;wBAC3B;AACF,oBAAA,CAAC,CAAC;gBACJ;AACF,YAAA,CAAC,CAAC;YAEF,cAAc,IAAI,aAAa;AAC/B,YAAA,SAAS,GAAG,QAAQ,CAAC,eAAe,IAAI,IAAI;AAC5C,YAAA,YAAY,GAAG,CAAC,CAAC,SAAS;;AAG1B,YAAA,MAAM,YAAY,GAChB,iBAAiB,IAAI;kBACjB,CAAA,EAAI,iBAA0B,CAAC,kBAAkB,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC,CAAA,IAAA,EAAQ,eAAwB,CAAC,kBAAkB,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC,CAAA;kBAC1L,eAAe;AAErB,YAAAA,KAAG,CACD,CAAA,KAAA,EAAQ,SAAS,CAAA,UAAA,EAAa,aAAa,CAAC,cAAc,EAAE,CAAA,cAAA,EAAiB,cAAc,CAAC,cAAc,EAAE,CAAA,MAAA,EAAS,UAAU,CAAA,cAAA,EAAiB,YAAY,CAAA,EAAG,YAAY,GAAG,wBAAwB,GAAG,YAAY,CAAA,CAAE,EACvN;AACE,gBAAA,IAAI,EAAE,MAAM;AACb,aAAA,CACF;;AAGD,YAAA,IAAI,SAAS,GAAG,IAAI,EAAE;gBACpBA,KAAG,CACD,CAAA,0BAAA,EAA6B,SAAS,CAAA,+BAAA,CAAiC,EACvE,EAAE,IAAI,EAAE,MAAM,EAAE,CACjB;gBACD;YACF;QACF;;AAGA,QAAA,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO;AACxC,aAAA,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAA,EAAA,EAAK,IAAI,CAAC,MAAM,EAAE;aACnD,IAAI,CAAC,IAAI,CAAC;QACbA,KAAG,CACD,CAAA,gCAAA,EAAmC,cAAc,CAAC,cAAc,EAAE,CAAA,mBAAA,EAAsB,SAAS,CAAA,QAAA,EAAW,YAAY,CAAA,CAAA,CAAG,EAC3H;AACE,YAAA,IAAI,EAAE,MAAM;AACb,SAAA,CACF;QAED,OAAO;AACL,YAAA,IAAI,EAAE,OAAO;YACb,eAAe,EAAE,IAAI;YACrB,QAAQ,EAAE,QAAQ,IAAI,gBAAgB;SACvC;IACH;AAEA;;;;;;AAMG;AACH,IAAA,MAAM,aAAa,CACjB,OAAiB,EACjB,QAAiB,EAAA;AAEjB,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,qBAAqB,EAAE,KAAK,EAAE;YACpD,OAAO;AACP,YAAA,IAAI,EAAE,YAAY;YAClB,QAAQ,EAAE,QAAQ,IAAI,gBAAgB;AACvC,SAAA,CAAC;IACJ;AAEA;;;;AAIG;IACH,MAAM,YAAY,CAAC,MAAc,EAAA;QAC/B,OAAO,IAAI,CAAC,WAAW,CAAC,CAAA,gBAAA,EAAmB,MAAM,CAAA,CAAE,EAAE,KAAK,CAAC;IAC7D;AAEA;;;;;;;AAOG;AACH,IAAA,MAAM,eAAe,CACnB,OAAiB,EACjB,IAAe,EACf,QAAiB,EAAA;AAEjB,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,uBAAuB,EAAE,KAAK,EAAE;YACtD,OAAO;YACP,IAAI,EAAE,IAAI,IAAI,YAAY;YAC1B,QAAQ,EAAE,QAAQ,IAAI,gBAAgB;AACvC,SAAA,CAAC;IACJ;AAEA;;;;;;AAMG;AACH,IAAA,MAAM,eAAe,CACnB,OAAiB,EACjB,IAAe,EACf,QAAiB,EAAA;;QAGjB,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;YACpCA,KAAG,CAAC,kEAAkE,EAAE;AACtE,gBAAA,IAAI,EAAE,MAAM;AACb,aAAA,CAAC;YACF,OAAO;AACL,gBAAA,MAAM,EAAE,EAAE;gBACV,QAAQ,EAAE,QAAQ,IAAI,gBAAgB;aACvC;QACH;AAEA,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,uBAAuB,EAAE,KAAK,EAAE;YACtD,OAAO;YACP,IAAI,EAAE,IAAI,IAAI,YAAY;YAC1B,QAAQ,EAAE,QAAQ,IAAI,gBAAgB;AACvC,SAAA,CAAC;IACJ;AAEA;;;;;;AAMG;AACH,IAAA,MAAM,cAAc,CAClB,MAAc,EACd,IAAe,EACf,QAAiB,EAAA;QAEjB,OAAO,IAAI,CAAC,WAAW,CAAC,WAAW,MAAM,CAAA,cAAA,CAAgB,EAAE,KAAK,EAAE;YAChE,IAAI,EAAE,IAAI,IAAI,YAAY;YAC1B,QAAQ;AACT,SAAA,CAAC;IACJ;AAEA;;;;;AAKG;AACH,IAAA,MAAM,gBAAgB,CACpB,MAAc,EACd,aAAoB,EAAA;AAEpB,QAAA,MAAM,IAAI,GAAG,aAAa,IAAI,IAAI,IAAI,EAAE;AACxC,QAAA,MAAM,cAAc,GAAG,sBAAsB,CAAC,IAAI,CAAC;AAEnD,QAAA,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC;YAC5C,OAAO,EAAE,CAAC,MAAM,CAAC;AACjB,YAAA,SAAS,EAAE,MAAM;AACjB,YAAA,KAAK,EAAE,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE;AACxC,YAAA,GAAG,EAAE,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE;AACtC,YAAA,KAAK,EAAE,CAAC;AACT,SAAA,CAAC;AAEF,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;AAChE,YAAAA,KAAG,CAAC,CAAA,qCAAA,EAAwC,MAAM,CAAA,CAAE,EAAE;AACpD,gBAAA,IAAI,EAAE,OAAO;gBACb,MAAM;AACP,aAAA,CAAC;AACF,YAAA,OAAO,IAAI;QACb;QAEA,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACjC;AAEA;;;;;;AAMG;AACH,IAAA,MAAM,eAAe,CACnB,MAAc,EACd,KAAa,EACb,GAAW,EAAA;AAEX,QAAA,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC;YAC5C,OAAO,EAAE,CAAC,MAAM,CAAC;AACjB,YAAA,SAAS,EAAE,OAAO;YAClB,KAAK,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE;YACpC,GAAG,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE;YAChC,KAAK,EAAE,EAAE;AACV,SAAA,CAAC;QAEF,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;IACpC;AAEA;;;;;;AAMG;AACH,IAAA,MAAM,mBAAmB,CACvB,MAAc,EACd,KAAa,EACb,GAAW,EAAA;AAEX,QAAA,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC;YAC5C,OAAO,EAAE,CAAC,MAAM,CAAC;AACjB,YAAA,SAAS,EAAE,OAAO;YAClB,KAAK,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE;YACpC,GAAG,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE;AAChC,YAAA,KAAK,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC;AAClB,SAAA,CAAC;QAEF,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;IACpC;AAEA;;;;;;AAMG;AACH,IAAA,MAAM,cAAc,CAClB,MAAc,EACd,KAAa,EACb,GAAW,EAAA;AAEX,QAAA,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC;YAC5C,OAAO,EAAE,CAAC,MAAM,CAAC;AACjB,YAAA,SAAS,EAAE,MAAM;YACjB,KAAK,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE;YACpC,GAAG,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE;YAChC,KAAK,EAAE,GAAG;AACX,SAAA,CAAC;QAEF,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;IACpC;AAEA;;;;;;;AAOG;IACH,MAAM,iBAAiB,CACrB,MAAc,EACd,YAAoB,EACpB,KAAa,EACb,GAAW,EAAA;AAEX,QAAA,MAAM,SAAS,GAAG,CAAA,EAAG,YAAY,KAAkB;AACnD,QAAA,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC;YAC5C,OAAO,EAAE,CAAC,MAAM,CAAC;YACjB,SAAS;YACT,KAAK,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE;YACpC,GAAG,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE;AACjC,SAAA,CAAC;QAEF,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;IACpC;AAEA;;;;AAIG;IACH,OAAO,WAAW,CAAC,IAAW,EAAA;QAC5B,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;AAC9B,YAAA,OAAO,yBAAyB;QAClC;AAEA,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC;QACxB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QACrC,MAAM,WAAW,GAAG,OAAO,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC;QAC1C,MAAM,aAAa,GAAG,CAAC,WAAW,GAAG,QAAQ,CAAC,CAAC,IAAI,GAAG;QAEtD,MAAM,YAAY,GAAG,OAAO,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC;QAC3C,MAAM,mBAAmB,GAAG,CAAC,YAAY,GAAG,QAAQ,CAAC,CAAC,IAAI,GAAG;QAE7D,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;QAClD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;QACjD,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AAC7D,QAAA,MAAM,SAAS,GAAG,WAAW,GAAG,IAAI,CAAC,MAAM;QAE3C,QACE,CAAA,QAAA,EAAW,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA,KAAA,EAAQ,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA,EAAA,EAAK,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA,IAAA,CAAM;YAC/F,CAAA,QAAA,EAAW,QAAQ,CAAC,CAAC,CAAC,cAAc,EAAE,CAAA,IAAA,EAAO,OAAO,CAAC,CAAC,CAAC,cAAc,EAAE,KAAK,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA,IAAA,CAAM;AAChH,YAAA,CAAA,OAAA,EAAU,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA,QAAA,EAAW,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA,EAAA,CAAI;AACtD,YAAA,CAAA,YAAA,EAAe,SAAS,CAAC,cAAc,EAAE,CAAA,CAAE;IAE/C;AAEA;;;;;AAKG;IACH,MAAM,SAAS,CAAC,MAGf,EAAA;;AAEC,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IAC3D;AAEA;;;;;AAKG;IACH,MAAM,QAAQ,CAAC,eAAuB,EAAA;;AAEpC,QAAA,OAAO,IAAI,CAAC,WAAW,CACrB,CAAA,QAAA,EAAW,kBAAkB,CAAC,eAAe,CAAC,CAAA,CAAE,EAChD,KAAK,EACL,SAAS,EACT,KAAK,CACN;IACH;;AAIA;;;;;;AAMG;IACH,MAAM,eAAe,CACnB,MAA0B,EAAA;QAE1B,MAAM,EAAE,iBAAiB,EAAE,GAAG,WAAW,EAAE,GAAG,MAAM;AACpD,QAAA,OAAO,IAAI,CAAC,WAAW,CACrB,CAAA,mBAAA,EAAsB,kBAAkB,CAAC,iBAAiB,CAAC,CAAA,CAAE,EAC7D,KAAK,EACL,WAAW,EACX,SAAS,CACV;IACH;AAEA;;;;;;AAMG;IACH,MAAM,sBAAsB,CAC1B,MAAiC,EAAA;;QAGjC,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,aAAa,EAAE,GAAG,MAAM;AACtD,QAAA,OAAO,IAAI,CAAC,WAAW,CACrB,wBAAwB,EACxB,KAAK,EACL,aAAa,EACb,SAAS,CACV;IACH;AAEA;;;;;;AAMG;IACH,MAAM,sBAAsB,CAC1B,MAAiC,EAAA;;QAGjC,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,aAAa,EAAE,GAAG,MAAM;AACtD,QAAA,OAAO,IAAI,CAAC,WAAW,CACrB,wBAAwB,EACxB,KAAK,EACL,aAAa,EACb,SAAS,CACV;IACH;AAEA;;;;;;;AAOG;IACH,MAAM,wBAAwB,CAC5B,MAAmC,EAAA;AAEnC,QAAA,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO;QAC9B,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;QACpC,IAAI,OAAO,GAAsC,EAAE;QACnD,IAAI,SAAS,GAAkB,IAAI;QACnC,IAAI,YAAY,GAAG,IAAI;QACvB,IAAI,cAAc,GAAG,CAAC;QACtB,IAAI,SAAS,GAAG,CAAC;;AAGjB,QAAA,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;AACzB,YAAA,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE;AACtB,QAAA,CAAC,CAAC;QAEFA,KAAG,CACD,8CAA8C,UAAU,CAAA,EAAA,EAAK,MAAM,CAAC,SAAS,KAAK,MAAM,CAAC,KAAK,IAAI,UAAU,OAAO,MAAM,CAAC,GAAG,IAAI,QAAQ,GAAG,EAC5I;AACE,YAAA,IAAI,EAAE,MAAM;AACb,SAAA,CACF;QAED,OAAO,YAAY,EAAE;AACnB,YAAA,SAAS,EAAE;AACX,YAAA,MAAM,aAAa,GAAG;AACpB,gBAAA,GAAG,MAAM;gBACT,IAAI,SAAS,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;aAC5C;AAED,YAAA,MAAM,QAAQ,GAAkC,MAAM,IAAI,CAAC,WAAW,CACpE,eAAe,EACf,KAAK,EACL,aAAa,EACb,SAAS,CACV;AAED,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AAClB,gBAAAA,KAAG,CAAC,CAAA,2CAAA,EAA8C,UAAU,CAAA,CAAE,EAAE;AAC9D,oBAAA,IAAI,EAAE,MAAM;AACb,iBAAA,CAAC;gBACF;YACF;;YAGA,IAAI,aAAa,GAAG,CAAC;YACrB,IAAI,iBAAiB,GAAgB,IAAI;YACzC,IAAI,eAAe,GAAgB,IAAI;AAEvC,YAAA,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,KAAI;gBACvD,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AAC3B,oBAAA,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC;AAC/C,oBAAA,aAAa,IAAI,IAAI,CAAC,MAAM;;AAG5B,oBAAA,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;wBACnB,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/B,wBAAA,IAAI,CAAC,iBAAiB,IAAI,OAAO,GAAG,iBAAiB,EAAE;4BACrD,iBAAiB,GAAG,OAAO;wBAC7B;AACA,wBAAA,IAAI,CAAC,eAAe,IAAI,OAAO,GAAG,eAAe,EAAE;4BACjD,eAAe,GAAG,OAAO;wBAC3B;AACF,oBAAA,CAAC,CAAC;gBACJ;AACF,YAAA,CAAC,CAAC;YAEF,cAAc,IAAI,aAAa;AAC/B,YAAA,SAAS,GAAG,QAAQ,CAAC,eAAe,IAAI,IAAI;AAC5C,YAAA,YAAY,GAAG,CAAC,CAAC,SAAS;;AAG1B,YAAA,MAAM,YAAY,GAChB,iBAAiB,IAAI;kBACjB,CAAA,EAAI,iBAA0B,CAAC,kBAAkB,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC,CAAA,IAAA,EAAQ,eAAwB,CAAC,kBAAkB,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC,CAAA;kBAC1L,eAAe;AAErB,YAAAA,KAAG,CACD,CAAA,KAAA,EAAQ,SAAS,CAAA,UAAA,EAAa,aAAa,CAAC,cAAc,EAAE,CAAA,qBAAA,EAAwB,cAAc,CAAC,cAAc,EAAE,CAAA,MAAA,EAAS,UAAU,CAAA,cAAA,EAAiB,YAAY,CAAA,EAAG,YAAY,GAAG,wBAAwB,GAAG,YAAY,CAAA,CAAE,EAC9N;AACE,gBAAA,IAAI,EAAE,MAAM;AACb,aAAA,CACF;;AAGD,YAAA,IAAI,SAAS,GAAG,IAAI,EAAE;gBACpBA,KAAG,CACD,CAAA,uCAAA,EAA0C,SAAS,CAAA,+BAAA,CAAiC,EACpF,EAAE,IAAI,EAAE,MAAM,EAAE,CACjB;gBACD;YACF;QACF;;AAGA,QAAA,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO;AACxC,aAAA,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAA,EAAA,EAAK,IAAI,CAAC,MAAM,EAAE;aACnD,IAAI,CAAC,IAAI,CAAC;QACbA,KAAG,CACD,CAAA,wCAAA,EAA2C,cAAc,CAAC,cAAc,EAAE,CAAA,mBAAA,EAAsB,SAAS,CAAA,QAAA,EAAW,YAAY,CAAA,CAAA,CAAG,EACnI;AACE,YAAA,IAAI,EAAE,MAAM;AACb,SAAA,CACF;QAED,OAAO;AACL,YAAA,IAAI,EAAE,OAAO;YACb,eAAe,EAAE,SAAS;SAC3B;IACH;AAEA;;;;;;;AAOG;IACH,MAAM,0BAA0B,CAC9B,MAAqC,EAAA;AAErC,QAAA,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO;QAC9B,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;QACpC,IAAI,SAAS,GAAwC,EAAE;QACvD,IAAI,SAAS,GAAkB,IAAI;QACnC,IAAI,YAAY,GAAG,IAAI;QACvB,IAAI,gBAAgB,GAAG,CAAC;QACxB,IAAI,SAAS,GAAG,CAAC;;AAGjB,QAAA,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;AACzB,YAAA,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE;AACxB,QAAA,CAAC,CAAC;AAEF,QAAAA,KAAG,CACD,CAAA,6CAAA,EAAgD,UAAU,CAAA,EAAA,EAAK,MAAM,CAAC,KAAK,IAAI,UAAU,CAAA,IAAA,EAAO,MAAM,CAAC,GAAG,IAAI,QAAQ,GAAG,EACzH;AACE,YAAA,IAAI,EAAE,MAAM;AACb,SAAA,CACF;QAED,OAAO,YAAY,EAAE;AACnB,YAAA,SAAS,EAAE;AACX,YAAA,MAAM,aAAa,GAAG;AACpB,gBAAA,GAAG,MAAM;gBACT,IAAI,SAAS,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;aAC5C;AAED,YAAA,MAAM,QAAQ,GAAoC,MAAM,IAAI,CAAC,WAAW,CACtE,iBAAiB,EACjB,KAAK,EACL,aAAa,EACb,SAAS,CACV;AAED,YAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;AACpB,gBAAAA,KAAG,CAAC,CAAA,6CAAA,EAAgD,UAAU,CAAA,CAAE,EAAE;AAChE,oBAAA,IAAI,EAAE,MAAM;AACb,iBAAA,CAAC;gBACF;YACF;;YAGA,IAAI,eAAe,GAAG,CAAC;YACvB,IAAI,iBAAiB,GAAgB,IAAI;YACzC,IAAI,eAAe,GAAgB,IAAI;AAEvC,YAAA,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,KAAI;gBAC3D,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AAC/B,oBAAA,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,EAAE,GAAG,MAAM,CAAC;AACrD,oBAAA,eAAe,IAAI,MAAM,CAAC,MAAM;;AAGhC,oBAAA,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;wBACvB,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AACnC,wBAAA,IAAI,CAAC,iBAAiB,IAAI,SAAS,GAAG,iBAAiB,EAAE;4BACvD,iBAAiB,GAAG,SAAS;wBAC/B;AACA,wBAAA,IAAI,CAAC,eAAe,IAAI,SAAS,GAAG,eAAe,EAAE;4BACnD,eAAe,GAAG,SAAS;wBAC7B;AACF,oBAAA,CAAC,CAAC;gBACJ;AACF,YAAA,CAAC,CAAC;YAEF,gBAAgB,IAAI,eAAe;AACnC,YAAA,SAAS,GAAG,QAAQ,CAAC,eAAe,IAAI,IAAI;AAC5C,YAAA,YAAY,GAAG,CAAC,CAAC,SAAS;;AAG1B,YAAA,MAAM,YAAY,GAChB,iBAAiB,IAAI;kBACjB,CAAA,EAAI,iBAA0B,CAAC,kBAAkB,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC,CAAA,IAAA,EAAQ,eAAwB,CAAC,kBAAkB,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC,CAAA;kBAC1L,eAAe;AAErB,YAAAA,KAAG,CACD,CAAA,KAAA,EAAQ,SAAS,CAAA,UAAA,EAAa,eAAe,CAAC,cAAc,EAAE,CAAA,uBAAA,EAA0B,gBAAgB,CAAC,cAAc,EAAE,CAAA,MAAA,EAAS,UAAU,CAAA,cAAA,EAAiB,YAAY,CAAA,EAAG,YAAY,GAAG,wBAAwB,GAAG,YAAY,CAAA,CAAE,EACpO;AACE,gBAAA,IAAI,EAAE,MAAM;AACb,aAAA,CACF;;AAGD,YAAA,IAAI,SAAS,GAAG,IAAI,EAAE;gBACpBA,KAAG,CACD,CAAA,yCAAA,EAA4C,SAAS,CAAA,+BAAA,CAAiC,EACtF,EAAE,IAAI,EAAE,MAAM,EAAE,CACjB;gBACD;YACF;QACF;;AAGA,QAAA,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS;AAC1C,aAAA,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,GAAG,MAAM,CAAA,EAAA,EAAK,MAAM,CAAC,MAAM,EAAE;aACvD,IAAI,CAAC,IAAI,CAAC;QACbA,KAAG,CACD,CAAA,0CAAA,EAA6C,gBAAgB,CAAC,cAAc,EAAE,CAAA,qBAAA,EAAwB,SAAS,CAAA,QAAA,EAAW,YAAY,CAAA,CAAA,CAAG,EACzI;AACE,YAAA,IAAI,EAAE,MAAM;AACb,SAAA,CACF;QAED,OAAO;AACL,YAAA,MAAM,EAAE,SAAS;YACjB,eAAe,EAAE,SAAS;SAC3B;IACH;AAEA;;;;;;;AAOG;IACH,MAAM,kBAAkB,CACtB,MAA8B,EAAA;;QAG9B,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,aAAa,EAAE,GAAG,MAAM;AACtD,QAAA,OAAO,IAAI,CAAC,WAAW,CACrB,oBAAoB,EACpB,KAAK,EACL,aAAa,EACb,SAAS,CACV;IACH;AAEA;;;;;;;AAOG;IACH,MAAM,wBAAwB,CAC5B,QAAwB,EAAA;AAExB,QAAA,OAAO,IAAI,CAAC,WAAW,CACrB,4BAA4B,QAAQ,CAAA,CAAE,EACtC,KAAK,EACL,SAAS,EACT,SAAS,CACV;IACH;AAEA;;;;;;AAMG;AACH,IAAA,MAAM,uBAAuB,GAAA;AAC3B,QAAA,OAAO,IAAI,CAAC,WAAW,CACrB,yBAAyB,EACzB,KAAK,EACL,SAAS,EACT,SAAS,CACV;IACH;AAEA;;;;AAIG;IACH,OAAO,iBAAiB,CAAC,IAAiB,EAAA;QACxC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;AAC9B,YAAA,OAAO,gCAAgC;QACzC;AAEA,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC;QACxB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QACrC,MAAM,WAAW,GAAG,OAAO,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC;QAC1C,MAAM,aAAa,GAAG,CAAC,WAAW,GAAG,QAAQ,CAAC,CAAC,IAAI,GAAG;QAEtD,MAAM,YAAY,GAAG,OAAO,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC;QAC3C,MAAM,mBAAmB,GACvB,QAAQ,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,YAAY,GAAG,QAAQ,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC;QAExD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;QAClD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;QACjD,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AAC7D,QAAA,MAAM,SAAS,GAAG,WAAW,GAAG,IAAI,CAAC,MAAM;QAE3C,QACE,CAAA,eAAA,EAAkB,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA,KAAA,EAAQ,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA,EAAA,EAAK,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA,IAAA,CAAM;YACtG,CAAA,QAAA,EAAW,QAAQ,CAAC,CAAC,CAAC,cAAc,EAAE,CAAA,IAAA,EAAO,OAAO,CAAC,CAAC,CAAC,cAAc,EAAE,KAAK,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA,IAAA,CAAM;AAChH,YAAA,CAAA,OAAA,EAAU,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA,QAAA,EAAW,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA,EAAA,CAAI;AACtD,YAAA,CAAA,YAAA,EAAe,SAAS,CAAC,cAAc,EAAE,CAAA,CAAE;IAE/C;AAEA;;;;AAIG;IACH,OAAO,kBAAkB,CAAC,MAAuC,EAAA;QAC/D,IAAI,CAAC,MAAM,EAAE;AACX,YAAA,OAAO,0BAA0B;QACnC;QAEA,MAAM,KAAK,GAAa,EAAE;AAC1B,QAAA,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS;AAC5B,YAAA,KAAK,CAAC,IAAI,CAAC,CAAA,OAAA,EAAU,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA,CAAE,CAAC;AACjD,QAAA,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS;AAC5B,YAAA,KAAK,CAAC,IAAI,CAAC,CAAA,OAAA,EAAU,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA,CAAE,CAAC;AACjD,QAAA,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS;AAC5B,YAAA,KAAK,CAAC,IAAI,CAAC,CAAA,OAAA,EAAU,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA,CAAE,CAAC;AACjD,QAAA,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS;AAC3B,YAAA,KAAK,CAAC,IAAI,CAAC,CAAA,MAAA,EAAS,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA,CAAE,CAAC;AAC/C,QAAA,IAAI,MAAM,CAAC,GAAG,KAAK,SAAS;AAAE,YAAA,KAAK,CAAC,IAAI,CAAC,CAAA,KAAA,EAAQ,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA,CAAE,CAAC;AAEzE,QAAA,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,0BAA0B;IACzE;AAEA;;;;;AAKG;AACH,IAAA,OAAO,uBAAuB,CAC5B,cAAwB,EACxB,iBAAgD,EAAA;QAEhD,IAAI,CAAC,cAAc,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE;AAClD,YAAA,OAAO,eAAe;QACxB;QAEA,MAAM,YAAY,GAAG;AAClB,aAAA,GAAG,CAAC,CAAC,IAAI,KAAK,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAA,SAAA,EAAY,IAAI,GAAG;aAC5D,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,KAAK,SAAS,CAAC;AAEvC,QAAA,OAAO,YAAY,CAAC,MAAM,GAAG;AAC3B,cAAE,YAAY,CAAC,IAAI,CAAC,IAAI;cACtB,qCAAqC;IAC3C;AAEA;;;;;AAKG;AACH,IAAA,OAAO,eAAe,CACpB,YAAoB,EACpB,gBAA8C,EAAA;QAE9C,QACE,gBAAgB,CAAC,YAAY,CAAC,IAAI,CAAA,kBAAA,EAAqB,YAAY,CAAA,CAAA,CAAG;IAE1E;AAEA;;;;;AAKG;AACH,IAAA,MAAM,SAAS,CACb,MAAc,EACd,MAMC,EAAA;AAED,QAAA,MAAM,aAAa,GAAG;AACpB,YAAA,KAAK,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;YACjD,GAAG,EAAE,IAAI,IAAI,EAAE;AACf,YAAA,KAAK,EAAE,EAAE;AACT,YAAA,IAAI,EAAE,MAAe;AACrB,YAAA,eAAe,EAAE,IAAI;SACtB;QACD,MAAM,YAAY,GAAG,EAAE,GAAG,aAAa,EAAE,GAAG,MAAM,EAAE;QACpD,IAAI,YAAY,GAAiB,EAAE;QACnC,IAAI,SAAS,GAAkB,IAAI;QACnC,IAAI,YAAY,GAAG,IAAI;QACvB,IAAI,YAAY,GAAG,CAAC;AACpB,QAAA,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK;;QAGnC,SAAS,YAAY,CAAC,OAA2B,EAAA;AAC/C,YAAA,IAAI,CAAC,OAAO;AAAE,gBAAA,OAAO,SAAS;;YAE9B,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE;QAC5C;QAEA,OAAO,YAAY,EAAE;AACnB,YAAA,MAAM,WAAW,GAAoB,IAAI,eAAe,CAAC;AACvD,gBAAA,IAAI,YAAY,CAAC,KAAK,IAAI;oBACxB,KAAK,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE;iBAClD,CAAC;AACF,gBAAA,IAAI,YAAY,CAAC,GAAG,IAAI;oBACtB,GAAG,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE;iBAC9C,CAAC;gBACF,IAAI,MAAM,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;AAClC,gBAAA,IAAI,YAAY,CAAC,KAAK,IAAI;AACxB,oBAAA,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,GAAG,YAAY,CAAC,CAAC,QAAQ,EAAE;iBACxD,CAAC;AACF,gBAAA,IAAI,YAAY,CAAC,IAAI,IAAI,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE,CAAC;AACrD,gBAAA,IAAI,YAAY,CAAC,eAAe,KAAK;sBACjC,EAAE,eAAe,EAAE,YAAY,CAAC,eAAe,CAAC,QAAQ,EAAE;sBAC1D,EAAE,CAAC;gBACP,IAAI,SAAS,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;AAC5C,aAAA,CAAC;YACF,MAAM,GAAG,GAAW,CAAA,EAAG,IAAI,CAAC,UAAU,CAAA,MAAA,EAAS,WAAW,CAAA,CAAE;AAC5D,YAAAA,KAAG,CAAC,CAAA,oBAAA,EAAuB,GAAG,CAAA,CAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;AAC5D,YAAA,MAAM,QAAQ,GAAa,MAAM,KAAK,CAAC,GAAG,EAAE;AAC1C,gBAAA,MAAM,EAAE,KAAK;gBACb,OAAO,EAAE,IAAI,CAAC,OAAO;AACtB,aAAA,CAAC;AACF,YAAA,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;AAChB,gBAAA,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE;gBACvCA,KAAG,CAAC,0BAA0B,QAAQ,CAAC,MAAM,CAAA,GAAA,EAAM,SAAS,EAAE,EAAE;AAC9D,oBAAA,IAAI,EAAE,OAAO;oBACb,MAAM;AACP,iBAAA,CAAC;gBACF,MAAM,IAAI,KAAK,CACb,CAAA,uBAAA,EAA0B,QAAQ,CAAC,MAAM,CAAA,GAAA,EAAM,SAAS,CAAA,CAAE,CAC3D;YACH;AACA,YAAA,MAAM,IAAI,GAGN,MAAM,QAAQ,CAAC,IAAI,EAAE;AACzB,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AAC3C,gBAAAA,KAAG,CAAC,CAAA,0CAAA,EAA6C,MAAM,CAAA,CAAE,EAAE;AACzD,oBAAA,IAAI,EAAE,MAAM;oBACZ,MAAM;AACP,iBAAA,CAAC;gBACF;YACF;AACA,YAAA,MAAM,eAAe,GAAiB,IAAI,CAAC,IAAI,CAAC,GAAG,CACjD,CAAC,OAA0B,MAAM;gBAC/B,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,KAAK,EAAE,OAAO,CAAC,QAAQ;gBACvB,OAAO,EAAE,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE;AAC5C,gBAAA,OAAO,EAAE,OAAO,CAAC,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,SAAS;gBACpE,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,MAAM,EAAE,OAAO,CAAC,MAAM;AACtB,gBAAA,IAAI,EAAE,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,UAAU;AAC9C,gBAAA,WAAW,EAAE,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,UAAU;AACrD,gBAAA,SAAS,EAAE,CAAC;AACb,aAAA,CAAC,CACH;AACD,YAAA,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC,eAAe,CAAC;AACnD,YAAA,YAAY,GAAG,YAAY,CAAC,MAAM;AAClC,YAAA,SAAS,GAAG,IAAI,CAAC,eAAe,IAAI,IAAI;AACxC,YAAA,YAAY,GAAG,CAAC,CAAC,SAAS,KAAK,CAAC,QAAQ,IAAI,YAAY,GAAG,QAAQ,CAAC;YACpEA,KAAG,CACD,WAAW,eAAe,CAAC,MAAM,CAAA,uBAAA,EAA0B,YAAY,SAAS,MAAM,CAAA,cAAA,EAAiB,YAAY,CAAA,CAAE,EACrH,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,CAC1B;AACD,YAAA,IAAI,QAAQ,IAAI,YAAY,IAAI,QAAQ,EAAE;gBACxC,YAAY,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC;gBAC9C;YACF;QACF;AACA,QAAA,OAAO,YAAY;IACrB;AACD;AAED;AACO,MAAM,aAAa,GAAG,mBAAmB,CAAC,WAAW,EAAE;;AC5kD9D;AAEA;;;;;;;AAOG;AAqBH;;;;;;;AAOG;AACG,SAAU,cAAc,CAAC,KAAa,EAAA;AAC1C,IAAA,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE;AAChB,QAAA,OAAO,OAAO;IAChB;AAEA,IAAA,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE;AACpC,QAAA,KAAK,EAAE,UAAU;AACjB,QAAA,QAAQ,EAAE,KAAK;AAChB,KAAA,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;AAClB;AAEA;;;;;;;AAOG;AACG,SAAU,YAAY,CAAC,KAAa,EAAA;AACxC,IAAA,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE;AAChB,QAAA,OAAO,GAAG;IACZ;AAEA,IAAA,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;AACrD;;AC1DA,MAAM,GAAG,GAAG,CAAC,OAAe,KAAI;IAC9B,OAAO,CAAC,GAAG,CACT,CAAA,CAAA,EAAI,IAAI,IAAI,EAAE,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC,CAAA,EAAA,EAAK,OAAO,CAAA,CAAE,CACvF;AACH,CAAC;AAED;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AAEA,eAAe,iBAAiB,GAAA;AAC9B,IAAA,IAAI;QACF,GAAG,CACD,wEAAwE,CACzE;;QAED,MAAM,MAAM,GAAG,KAAK;QACpB,MAAM,UAAU,GAAG,kBAAkB;;AAErC,QAAA,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,2BAA2B,CAAC;AACrD,QAAA,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,2BAA2B,CAAC;AACnD,QAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,EAAE;AACtC,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,WAAW,EAAE;AAElC,QAAA,MAAM,YAAY,GAAG,MAAM,aAAa,CAAC,iBAAiB,CAAC;YACzD,OAAO,EAAE,CAAC,MAAM,CAAC;AACjB,YAAA,SAAS,EAAE,MAAM;AACjB,YAAA,KAAK,EAAE,QAAQ;AACf,YAAA,GAAG,EAAE,MAAM;AACX,YAAA,KAAK,EAAE,IAAI;AACZ,SAAA,CAAC;QACF,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;AAC5C,QAAA,GAAG,CACD,CAAA,QAAA,EAAW,IAAI,CAAC,MAAM,CAAA,6DAAA,CAA+D,CACtF;AACD,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;YACrB,GAAG,CAAC,8BAA8B,CAAC;YACnC;QACF;;QAEA,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,KAAI;AACtB,YAAA,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,EAAE;AACtD,gBAAA,QAAQ,EAAE,UAAU;AACrB,aAAA,CAAC;YACF,GAAG,CACD,CAAA,IAAA,EAAO,CAAC,GAAG,CAAC,KAAK,OAAO,CAAA,MAAA,EAAS,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA,IAAA,EAAO,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA,IAAA,EAAO,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA,IAAA,EAAO,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA,IAAA,EAAO,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA,IAAA,EAAO,GAAG,CAAC,CAAC,CAAA,CAAE,CACnN;AACH,QAAA,CAAC,CAAC;;QAEF,MAAM,OAAO,GAAG,mBAAmB,CAAC,WAAW,CAAC,IAAI,CAAC;AACrD,QAAA,IAAI,OAAO;AAAE,YAAA,GAAG,CAAC,CAAA,SAAA,EAAY,OAAO,CAAA,CAAE,CAAC;QACvC,GAAG,CAAC,gCAAgC,CAAC;IACvC;IAAE,OAAO,KAAK,EAAE;AACd,QAAA,GAAG,CACD,CAAA,8BAAA,EAAiC,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,KAAK,CAAA,CAAE,CAClF;IACH;AACF;AAEA,iBAAiB,EAAE","x_google_ignoreList":[0,1,2,3,9,10,11,12,13,14,15,16,17,18,19,20,21]}