@react-email/ui 6.9.2 → 6.9.3

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 (105) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +5 -6
  3. package/.next/diagnostics/route-bundle-stats.json +15 -18
  4. package/.next/fallback-build-manifest.json +3 -3
  5. package/.next/prerender-manifest.json +4 -4
  6. package/.next/server/app/_global-error/page/build-manifest.json +2 -3
  7. package/.next/server/app/_global-error/page.js.nft.json +1 -1
  8. package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  9. package/.next/server/app/_global-error.html +1 -1
  10. package/.next/server/app/_global-error.rsc +1 -1
  11. package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  12. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  13. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  14. package/.next/server/app/_not-found/page/build-manifest.json +2 -3
  15. package/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  16. package/.next/server/app/_not-found/page.js +1 -1
  17. package/.next/server/app/_not-found/page.js.nft.json +1 -1
  18. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  19. package/.next/server/app/page/build-manifest.json +2 -3
  20. package/.next/server/app/page/server-reference-manifest.json +1 -1
  21. package/.next/server/app/page.js +2 -2
  22. package/.next/server/app/page.js.nft.json +1 -1
  23. package/.next/server/app/page_client-reference-manifest.js +1 -1
  24. package/.next/server/app/preview/[...slug]/page/build-manifest.json +2 -3
  25. package/.next/server/app/preview/[...slug]/page/server-reference-manifest.json +8 -8
  26. package/.next/server/app/preview/[...slug]/page.js +3 -3
  27. package/.next/server/app/preview/[...slug]/page.js.nft.json +1 -1
  28. package/.next/server/app/preview/[...slug]/page_client-reference-manifest.js +1 -1
  29. package/.next/server/chunks/ssr/0vvp_@swc_helpers_cjs__interop_require_default_cjs_0l5yet_._.js +3 -0
  30. package/.next/server/chunks/ssr/0vvp_@swc_helpers_cjs__interop_require_default_cjs_0l5yet_._.js.map +1 -0
  31. package/.next/server/chunks/ssr/[root-of-the-server]__01fa6gd._.js +3 -0
  32. package/.next/server/chunks/ssr/[root-of-the-server]__01fa6gd._.js.map +1 -0
  33. package/.next/server/chunks/ssr/[root-of-the-server]__0jhwudd._.js +2 -2
  34. package/.next/server/chunks/ssr/{[root-of-the-server]__13ikv9r._.js → [root-of-the-server]__0v3hvp0._.js} +2 -2
  35. package/.next/server/chunks/ssr/[root-of-the-server]__0v3hvp0._.js.map +1 -0
  36. package/.next/server/chunks/ssr/{[root-of-the-server]__0cys_sj._.js → [root-of-the-server]__0w52y66._.js} +2 -2
  37. package/.next/server/chunks/ssr/[root-of-the-server]__0w52y66._.js.map +1 -0
  38. package/.next/server/chunks/ssr/{[root-of-the-server]__0_rkij2._.js → [root-of-the-server]__13647l6._.js} +2 -2
  39. package/.next/server/chunks/ssr/[root-of-the-server]__1gu4kfq._.js +3 -0
  40. package/.next/server/chunks/ssr/[root-of-the-server]__1gu4kfq._.js.map +1 -0
  41. package/.next/server/chunks/ssr/[root-of-the-server]__1lf0rrz._.js +160 -0
  42. package/.next/server/chunks/ssr/[root-of-the-server]__1lf0rrz._.js.map +1 -0
  43. package/.next/server/chunks/ssr/{[root-of-the-server]__0cr2yja._.js → [root-of-the-server]__1pl6cgf._.js} +1 -1
  44. package/.next/server/chunks/ssr/_06rdle6._.js +1 -1
  45. package/.next/server/chunks/ssr/_06rdle6._.js.map +1 -1
  46. package/.next/server/chunks/ssr/_070q1tt._.js +1 -1
  47. package/.next/server/chunks/ssr/_070q1tt._.js.map +1 -1
  48. package/.next/server/chunks/ssr/_0iztjpv._.js +1 -1
  49. package/.next/server/chunks/ssr/_0iztjpv._.js.map +1 -1
  50. package/.next/server/chunks/ssr/_0odge9f._.js +2 -2
  51. package/.next/server/chunks/ssr/_0odge9f._.js.map +1 -1
  52. package/.next/server/chunks/ssr/_14fryvc._.js +2 -2
  53. package/.next/server/chunks/ssr/_14fryvc._.js.map +1 -1
  54. package/.next/server/chunks/ssr/_1kmmici._.js +1 -1
  55. package/.next/server/chunks/ssr/_1kmmici._.js.map +1 -1
  56. package/.next/server/chunks/ssr/{node_modules__pnpm_0llhc4v._.js → node_modules__pnpm_0c8h56k._.js} +2 -2
  57. package/.next/server/chunks/ssr/node_modules__pnpm_0c8h56k._.js.map +1 -0
  58. package/.next/server/chunks/ssr/packages_ui_src_0h7q5rq._.js +7 -0
  59. package/.next/server/chunks/ssr/packages_ui_src_0h7q5rq._.js.map +1 -0
  60. package/.next/server/chunks/ssr/packages_ui_src_0k1vxrv._.js +7 -0
  61. package/.next/server/chunks/ssr/packages_ui_src_0k1vxrv._.js.map +1 -0
  62. package/.next/server/middleware-build-manifest.js +5 -6
  63. package/.next/server/pages/500.html +1 -1
  64. package/.next/server/server-reference-manifest.js +1 -1
  65. package/.next/server/server-reference-manifest.json +9 -9
  66. package/.next/static/chunks/{43pfi9jc61bl-.js → 1074n-guv52r0.js} +2 -2
  67. package/.next/static/chunks/11ig5v0klmdqv.js +22 -0
  68. package/.next/static/chunks/17bqo4uc7c7vt.js +9 -0
  69. package/.next/static/chunks/{1jzl5dvwbwp_k.js → 29564ab2ilk61.js} +2 -10
  70. package/.next/static/chunks/turbopack-2yf73s_vo1v6g.js +1 -0
  71. package/.next/trace +1 -1
  72. package/.next/trace-build +1 -1
  73. package/package.json +2 -2
  74. package/src/app/layout.tsx +2 -1
  75. package/src/app/page.tsx +26 -29
  76. package/src/app/preview/[...slug]/page.tsx +15 -18
  77. package/src/components/shell.tsx +10 -3
  78. package/src/components/sidebar/file-tree-directory.tsx +7 -0
  79. package/src/components/sidebar/sidebar.tsx +6 -2
  80. package/.next/server/chunks/ssr/17n9_next_dist_client_components_server-async-storage_0mk9pov.js +0 -3
  81. package/.next/server/chunks/ssr/17n9_next_dist_client_components_server-async-storage_0mk9pov.js.map +0 -1
  82. package/.next/server/chunks/ssr/[root-of-the-server]__0cys_sj._.js.map +0 -1
  83. package/.next/server/chunks/ssr/[root-of-the-server]__0ir6ce9._.js +0 -3
  84. package/.next/server/chunks/ssr/[root-of-the-server]__0ir6ce9._.js.map +0 -1
  85. package/.next/server/chunks/ssr/[root-of-the-server]__0m_3861._.js +0 -4
  86. package/.next/server/chunks/ssr/[root-of-the-server]__0m_3861._.js.map +0 -1
  87. package/.next/server/chunks/ssr/[root-of-the-server]__0udgrs1._.js +0 -3
  88. package/.next/server/chunks/ssr/[root-of-the-server]__0udgrs1._.js.map +0 -1
  89. package/.next/server/chunks/ssr/[root-of-the-server]__13ikv9r._.js.map +0 -1
  90. package/.next/server/chunks/ssr/_0m0kc0_._.js +0 -163
  91. package/.next/server/chunks/ssr/_0m0kc0_._.js.map +0 -1
  92. package/.next/server/chunks/ssr/_0q9ycte._.js +0 -163
  93. package/.next/server/chunks/ssr/_0q9ycte._.js.map +0 -1
  94. package/.next/server/chunks/ssr/node_modules__pnpm_08tmv5a._.js +0 -3
  95. package/.next/server/chunks/ssr/node_modules__pnpm_08tmv5a._.js.map +0 -1
  96. package/.next/server/chunks/ssr/node_modules__pnpm_0llhc4v._.js.map +0 -1
  97. package/.next/static/chunks/027pt-9-hlg6x.js +0 -22
  98. package/.next/static/chunks/2gkd1-tli0axa.js +0 -1
  99. package/.next/static/chunks/3ynf1lct058br.js +0 -1
  100. package/.next/static/chunks/turbopack-2j6s_670_ey7d.js +0 -1
  101. /package/.next/server/chunks/ssr/{[root-of-the-server]__0_rkij2._.js.map → [root-of-the-server]__13647l6._.js.map} +0 -0
  102. /package/.next/server/chunks/ssr/{[root-of-the-server]__0cr2yja._.js.map → [root-of-the-server]__1pl6cgf._.js.map} +0 -0
  103. /package/.next/static/{8Ho3WC7vZUZ-2eKXvbUWf → CA1Qu7TN6sX-l50jycBJF}/_buildManifest.js +0 -0
  104. /package/.next/static/{8Ho3WC7vZUZ-2eKXvbUWf → CA1Qu7TN6sX-l50jycBJF}/_clientMiddlewareManifest.js +0 -0
  105. /package/.next/static/{8Ho3WC7vZUZ-2eKXvbUWf → CA1Qu7TN6sX-l50jycBJF}/_ssgManifest.js +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../packages/ui/src/animated-icons-data/load.json.%5Bjson%5D.cjs/turbopack%3A///packages/ui/src/animated-icons-data/load.json","../../../../../../packages/ui/src/components/button.tsx","../../../../../../node_modules/.pnpm/%40lottiefiles%2Bdotlottie-react%400.19.0_react%4019.2.4/node_modules/%40lottiefiles/dotlottie-react/src/base-dotlottie-react.tsx","../../../../../../node_modules/.pnpm/%40lottiefiles%2Bdotlottie-web%400.71.0/node_modules/%40lottiefiles/dotlottie-web/src/animation-frame-manager.ts","../../../../../../node_modules/.pnpm/%40lottiefiles%2Bdotlottie-web%400.71.0/node_modules/%40lottiefiles/dotlottie-web/src/constants.ts","../../../../../../node_modules/.pnpm/%40lottiefiles%2Bdotlottie-web%400.71.0/node_modules/%40lottiefiles/dotlottie-web/src/core/dotlottie-player.js","../../../../../../node_modules/.pnpm/%40lottiefiles%2Bdotlottie-react%400.19.0_react%4019.2.4/node_modules/%40lottiefiles/dotlottie-react/src/dotlottie.tsx","../../../../../../node_modules/.pnpm/%40lottiefiles%2Bdotlottie-react%400.19.0_react%4019.2.4/node_modules/%40lottiefiles/dotlottie-react/src/dotlottie-worker.tsx","../../../../../../node_modules/.pnpm/%40lottiefiles%2Bdotlottie-react%400.19.0_react%4019.2.4/node_modules/%40lottiefiles/dotlottie-react/src/index.ts","../../../../../../node_modules/.pnpm/%40lottiefiles%2Bdotlottie-web%400.71.0/node_modules/%40lottiefiles/dotlottie-web/src/event-manager.ts","../../../../../../node_modules/.pnpm/%40lottiefiles%2Bdotlottie-web%400.71.0/node_modules/%40lottiefiles/dotlottie-web/src/offscreen-observer.ts","../../../../../../node_modules/.pnpm/%40lottiefiles%2Bdotlottie-web%400.71.0/node_modules/%40lottiefiles/dotlottie-web/src/resize-observer.ts","../../../../../../node_modules/.pnpm/%40lottiefiles%2Bdotlottie-web%400.71.0/node_modules/%40lottiefiles/dotlottie-web/src/utils.ts","../../../../../../node_modules/.pnpm/%40lottiefiles%2Bdotlottie-web%400.71.0/node_modules/%40lottiefiles/dotlottie-web/src/wasm-loader.ts","../../../../../../node_modules/.pnpm/%40lottiefiles%2Bdotlottie-web%400.71.0/node_modules/%40lottiefiles/dotlottie-web/src/dotlottie.ts","../../../../../../node_modules/.pnpm/%40lottiefiles%2Bdotlottie-web%400.71.0/node_modules/%40lottiefiles/dotlottie-web/src/worker/worker-manager.ts","../../../../../../node_modules/.pnpm/%40lottiefiles%2Bdotlottie-web%400.71.0/node_modules/%40lottiefiles/dotlottie-web/src/worker/dotlottie.ts","../../../../../../packages/ui/src/components/code.tsx","../../../../../../node_modules/.pnpm/prism-react-renderer%402.4.1_react%4019.2.4/node_modules/prism-react-renderer/dist/index.mjs","../../../../../../packages/ui/src/hooks/use-fragment-identifier.ts","../../../../../../node_modules/.pnpm/%40radix-ui%2Breact-dismissable-layer%401.1.11_%40types%2Breact-dom%4019.2.3_%40types%2Breact%4019.2.14___3d3960154a4c07d09bb90cb341135fc5/node_modules/%40radix-ui/react-dismissable-layer/dist/index.mjs","../../../../../../node_modules/.pnpm/%40floating-ui%2Butils%400.2.8/node_modules/%40floating-ui/utils/dist/floating-ui.utils.mjs","../../../../../../node_modules/.pnpm/%40floating-ui%2Butils%400.2.8/node_modules/%40floating-ui/utils/dist/floating-ui.utils.dom.mjs","../../../../../../node_modules/.pnpm/%40radix-ui%2Breact-popper%401.2.8_%40types%2Breact-dom%4019.2.3_%40types%2Breact%4019.2.14__%40types%2Breact_13e0521d8aea7ebfbfb8bee1fb615c05/node_modules/%40radix-ui/react-popper/dist/index.mjs","../../../../../../node_modules/.pnpm/%40radix-ui%2Breact-portal%401.1.9_%40types%2Breact-dom%4019.2.3_%40types%2Breact%4019.2.14__%40types%2Breact_7668895bec2444446faa4e0f4eb5244b/node_modules/%40radix-ui/react-portal/dist/index.mjs","../../../../../../node_modules/.pnpm/%40radix-ui%2Breact-tooltip%401.2.8_%40types%2Breact-dom%4019.2.3_%40types%2Breact%4019.2.14__%40types%2Breac_9074d9fb06315b089b2bee17c4c65951/node_modules/%40radix-ui/react-tooltip/dist/index.mjs","../../../../../../node_modules/.pnpm/%40radix-ui%2Breact-use-callback-ref%401.1.1_%40types%2Breact%4019.2.14_react%4019.2.4/node_modules/%40radix-ui/react-use-callback-ref/dist/index.mjs","../../../../../../packages/ui/src/components/tooltip-content.tsx","../../../../../../node_modules/.pnpm/%40radix-ui%2Breact-use-escape-keydown%401.1.1_%40types%2Breact%4019.2.14_react%4019.2.4/node_modules/%40radix-ui/react-use-escape-keydown/dist/index.mjs","../../../../../../node_modules/.pnpm/%40floating-ui%2Bcore%401.6.8/node_modules/%40floating-ui/core/dist/floating-ui.core.mjs","../../../../../../node_modules/.pnpm/%40radix-ui%2Breact-use-size%401.1.1_%40types%2Breact%4019.2.14_react%4019.2.4/node_modules/%40radix-ui/react-use-size/dist/index.mjs","../../../../../../node_modules/.pnpm/%40floating-ui%2Breact-dom%402.1.2_react-dom%4019.2.4_react%4019.2.4__react%4019.2.4/node_modules/%40floating-ui/react-dom/dist/floating-ui.react-dom.mjs","../../../../../../node_modules/.pnpm/%40radix-ui%2Breact-arrow%401.1.7_%40types%2Breact-dom%4019.2.3_%40types%2Breact%4019.2.14__%40types%2Breact%40_e05f2c19a58a99fddf374207b5e3778c/node_modules/%40radix-ui/react-arrow/dist/index.mjs","../../../../../../node_modules/.pnpm/%40radix-ui%2Breact-visually-hidden%401.2.3_%40types%2Breact-dom%4019.2.3_%40types%2Breact%4019.2.14__%40ty_fa89646d7248b32d1762bf88948f6339/node_modules/%40radix-ui/react-visually-hidden/dist/index.mjs","../../../../../../node_modules/.pnpm/%40floating-ui%2Bdom%401.6.12/node_modules/%40floating-ui/dom/dist/floating-ui.dom.mjs","../../../../../../packages/ui/src/components/tooltip.tsx","../../../../../../packages/ui/src/components/topbar.tsx","../../../../../../packages/ui/src/components/icons/icon-hide-sidebar.tsx"],"sourcesContent":["{\"v\":\"5.12.1\",\"fr\":60,\"ip\":0,\"op\":150,\"w\":144,\"h\":144,\"nm\":\"system-regular-716-spinner-three-dots\",\"ddd\":0,\"assets\":[{\"id\":\"comp_1\",\"nm\":\"hover-trapdoor\",\"fr\":60,\"layers\":[{\"ddd\":0,\"ind\":1,\"ty\":4,\"nm\":\"Ellipse 31\",\"sr\":1,\"ks\":{\"o\":{\"a\":0,\"k\":100,\"ix\":11},\"r\":{\"a\":0,\"k\":0,\"ix\":10},\"p\":{\"a\":1,\"k\":[{\"i\":{\"x\":0.085,\"y\":1},\"o\":{\"x\":0.333,\"y\":0},\"t\":46,\"s\":[120,72,0],\"to\":[0,0,0],\"ti\":[0,0,0]},{\"i\":{\"x\":0.085,\"y\":0.085},\"o\":{\"x\":0.373,\"y\":0.373},\"t\":76,\"s\":[120,23,0],\"to\":[0,0,0],\"ti\":[0,0,0]},{\"i\":{\"x\":0.631,\"y\":1},\"o\":{\"x\":0.658,\"y\":0},\"t\":83.572,\"s\":[120,23,0],\"to\":[0,0,0],\"ti\":[0,0,0]},{\"i\":{\"x\":0.352,\"y\":1},\"o\":{\"x\":0.333,\"y\":0},\"t\":104.715,\"s\":[120,87,0],\"to\":[0,0,0],\"ti\":[0,0,0]},{\"i\":{\"x\":0.58,\"y\":1},\"o\":{\"x\":0.333,\"y\":0},\"t\":128.572,\"s\":[120,67,0],\"to\":[0,0,0],\"ti\":[0,0,0]},{\"t\":150,\"s\":[120,72,0]}],\"ix\":2,\"l\":2},\"a\":{\"a\":0,\"k\":[0,0,0],\"ix\":1,\"l\":2},\"s\":{\"a\":0,\"k\":[100,100,100],\"ix\":6,\"l\":2}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"d\":1,\"ty\":\"el\",\"s\":{\"a\":0,\"k\":[27,27],\"ix\":2},\"p\":{\"a\":0,\"k\":[0,0],\"ix\":3},\"nm\":\"Ellipse Path 1\",\"mn\":\"ADBE Vector Shape - Ellipse\",\"hd\":false},{\"ty\":\"st\",\"c\":{\"a\":0,\"k\":[0,0,0,1],\"ix\":3,\"x\":\"var $bm_rt;\\n$bm_rt = comp('system-regular-716-spinner-three-dots').layer('control').effect('primary')('Color');\"},\"o\":{\"a\":0,\"k\":100,\"ix\":4},\"w\":{\"a\":0,\"k\":9,\"ix\":5},\"lc\":2,\"lj\":1,\"ml\":4,\"bm\":0,\"nm\":\".primary\",\"mn\":\"ADBE Vector Graphic - Stroke\",\"hd\":false,\"cl\":\"primary\"},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[0,0],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Ellipse 28\",\"np\":2,\"cix\":2,\"bm\":0,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false}],\"ip\":0,\"op\":1800,\"st\":0,\"ct\":1,\"bm\":0},{\"ddd\":0,\"ind\":2,\"ty\":4,\"nm\":\"Ellipse 30\",\"sr\":1,\"ks\":{\"o\":{\"a\":0,\"k\":100,\"ix\":11},\"r\":{\"a\":0,\"k\":0,\"ix\":10},\"p\":{\"a\":1,\"k\":[{\"i\":{\"x\":0.085,\"y\":1},\"o\":{\"x\":0.333,\"y\":0},\"t\":23,\"s\":[72,72,0],\"to\":[0,0,0],\"ti\":[0,0,0]},{\"i\":{\"x\":0.085,\"y\":0.085},\"o\":{\"x\":0.373,\"y\":0.373},\"t\":53,\"s\":[72,23,0],\"to\":[0,0,0],\"ti\":[0,0,0]},{\"i\":{\"x\":0.631,\"y\":1},\"o\":{\"x\":0.658,\"y\":0},\"t\":76,\"s\":[72,23,0],\"to\":[0,0,0],\"ti\":[0,0,0]},{\"i\":{\"x\":0.352,\"y\":1},\"o\":{\"x\":0.333,\"y\":0},\"t\":97.143,\"s\":[72,87,0],\"to\":[0,0,0],\"ti\":[0,0,0]},{\"i\":{\"x\":0.58,\"y\":1},\"o\":{\"x\":0.333,\"y\":0},\"t\":121,\"s\":[72,67,0],\"to\":[0,0,0],\"ti\":[0,0,0]},{\"t\":142.427734375,\"s\":[72,72,0]}],\"ix\":2,\"l\":2},\"a\":{\"a\":0,\"k\":[0,0,0],\"ix\":1,\"l\":2},\"s\":{\"a\":0,\"k\":[100,100,100],\"ix\":6,\"l\":2}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"d\":1,\"ty\":\"el\",\"s\":{\"a\":0,\"k\":[27,27],\"ix\":2},\"p\":{\"a\":0,\"k\":[0,0],\"ix\":3},\"nm\":\"Ellipse Path 1\",\"mn\":\"ADBE Vector Shape - Ellipse\",\"hd\":false},{\"ty\":\"st\",\"c\":{\"a\":0,\"k\":[0,0,0,1],\"ix\":3,\"x\":\"var $bm_rt;\\n$bm_rt = comp('system-regular-716-spinner-three-dots').layer('control').effect('primary')('Color');\"},\"o\":{\"a\":0,\"k\":100,\"ix\":4},\"w\":{\"a\":0,\"k\":9,\"ix\":5},\"lc\":2,\"lj\":1,\"ml\":4,\"bm\":0,\"nm\":\".primary\",\"mn\":\"ADBE Vector Graphic - Stroke\",\"hd\":false,\"cl\":\"primary\"},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[0,0],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Ellipse 28\",\"np\":2,\"cix\":2,\"bm\":0,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false}],\"ip\":0,\"op\":1800,\"st\":0,\"ct\":1,\"bm\":0},{\"ddd\":0,\"ind\":3,\"ty\":4,\"nm\":\"Ellipse 29\",\"sr\":1,\"ks\":{\"o\":{\"a\":0,\"k\":100,\"ix\":11},\"r\":{\"a\":0,\"k\":0,\"ix\":10},\"p\":{\"a\":1,\"k\":[{\"i\":{\"x\":0.085,\"y\":1},\"o\":{\"x\":0.333,\"y\":0},\"t\":0,\"s\":[24,72,0],\"to\":[0,0,0],\"ti\":[0,0,0]},{\"i\":{\"x\":0.085,\"y\":0.085},\"o\":{\"x\":0.373,\"y\":0.373},\"t\":30,\"s\":[24,23,0],\"to\":[0,0,0],\"ti\":[0,0,0]},{\"i\":{\"x\":0.631,\"y\":1},\"o\":{\"x\":0.658,\"y\":0},\"t\":70.572,\"s\":[24,23,0],\"to\":[0,0,0],\"ti\":[0,0,0]},{\"i\":{\"x\":0.352,\"y\":1},\"o\":{\"x\":0.333,\"y\":0},\"t\":91.715,\"s\":[24,87,0],\"to\":[0,0,0],\"ti\":[0,0,0]},{\"i\":{\"x\":0.58,\"y\":1},\"o\":{\"x\":0.333,\"y\":0},\"t\":115.572,\"s\":[24,67,0],\"to\":[0,0,0],\"ti\":[0,0,0]},{\"t\":137,\"s\":[24,72,0]}],\"ix\":2,\"l\":2},\"a\":{\"a\":0,\"k\":[0,0,0],\"ix\":1,\"l\":2},\"s\":{\"a\":0,\"k\":[100,100,100],\"ix\":6,\"l\":2}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"d\":1,\"ty\":\"el\",\"s\":{\"a\":0,\"k\":[27,27],\"ix\":2},\"p\":{\"a\":0,\"k\":[0,0],\"ix\":3},\"nm\":\"Ellipse Path 1\",\"mn\":\"ADBE Vector Shape - Ellipse\",\"hd\":false},{\"ty\":\"st\",\"c\":{\"a\":0,\"k\":[0,0,0,1],\"ix\":3,\"x\":\"var $bm_rt;\\n$bm_rt = comp('system-regular-716-spinner-three-dots').layer('control').effect('primary')('Color');\"},\"o\":{\"a\":0,\"k\":100,\"ix\":4},\"w\":{\"a\":0,\"k\":9,\"ix\":5},\"lc\":2,\"lj\":1,\"ml\":4,\"bm\":0,\"nm\":\".primary\",\"mn\":\"ADBE Vector Graphic - Stroke\",\"hd\":false,\"cl\":\"primary\"},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[0,0],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Ellipse 28\",\"np\":2,\"cix\":2,\"bm\":0,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false}],\"ip\":0,\"op\":1799,\"st\":-1,\"ct\":1,\"bm\":0}]}],\"layers\":[{\"ddd\":0,\"ind\":1,\"ty\":3,\"nm\":\"control\",\"sr\":1,\"ks\":{\"o\":{\"a\":0,\"k\":0,\"ix\":11},\"r\":{\"a\":0,\"k\":0,\"ix\":10},\"p\":{\"a\":0,\"k\":[0,0],\"ix\":2,\"l\":2},\"a\":{\"a\":0,\"k\":[0,0,0],\"ix\":1,\"l\":2},\"s\":{\"a\":0,\"k\":[100,100,100],\"ix\":6,\"l\":2}},\"ao\":0,\"ef\":[{\"ty\":5,\"nm\":\"primary\",\"np\":3,\"mn\":\"ADBE Color Control\",\"ix\":1,\"en\":1,\"ef\":[{\"ty\":2,\"nm\":\"Color\",\"mn\":\"ADBE Color Control-0001\",\"ix\":1,\"v\":{\"a\":0,\"k\":[0,0,0],\"ix\":1}}]}],\"ip\":0,\"op\":2112,\"st\":0,\"bm\":0},{\"ddd\":0,\"ind\":3,\"ty\":0,\"nm\":\"hover-trapdoor\",\"refId\":\"comp_1\",\"sr\":1,\"ks\":{\"o\":{\"a\":0,\"k\":100,\"ix\":11},\"r\":{\"a\":0,\"k\":0,\"ix\":10},\"p\":{\"a\":0,\"k\":[72,72,0],\"ix\":2,\"l\":2},\"a\":{\"a\":0,\"k\":[72,72,0],\"ix\":1,\"l\":2},\"s\":{\"a\":0,\"k\":[100,100,100],\"ix\":6,\"l\":2}},\"ao\":0,\"w\":144,\"h\":144,\"ip\":0,\"op\":160,\"st\":0,\"bm\":0}],\"markers\":[{\"tm\":0,\"cm\":\"default:hover-trapdoor\",\"dr\":150}],\"props\":{}}","'use client';\nimport { DotLottieReact } from '@lottiefiles/dotlottie-react';\nimport * as SlotPrimitive from '@radix-ui/react-slot';\nimport type * as React from 'react';\nimport animatedLoadIcon from '../animated-icons-data/load.json';\nimport { cn } from '../utils/cn';\nimport { unreachable } from '../utils/unreachable';\n\ntype RootProps = React.ComponentProps<'button'>;\n\ntype Appearance = 'white' | 'gradient';\ntype Size = '1' | '2' | '3' | '4';\n\ninterface ButtonProps extends RootProps {\n asChild?: boolean;\n appearance?: Appearance;\n size?: Size;\n loading?: boolean;\n}\n\nexport const Button = ({\n asChild,\n appearance = 'white',\n className,\n children,\n size = '2',\n loading,\n ref,\n ...props\n}: ButtonProps) => {\n const Root = asChild ? SlotPrimitive.Slot : 'button';\n\n return (\n <Root\n ref={ref}\n type=\"button\"\n {...props}\n className={cn(\n getSize(size),\n getAppearance(appearance),\n 'inline-flex items-center justify-center gap-2 border font-medium',\n className,\n )}\n aria-disabled={loading}\n >\n <span\n className={cn(\n '-ml-7 opacity-0 transition-opacity duration-200',\n loading && 'opacity-100',\n )}\n >\n <DotLottieReact\n data={animatedLoadIcon}\n autoplay={false}\n className=\"h-5 w-5\"\n loop={true}\n />\n </span>\n <SlotPrimitive.Slottable>{children}</SlotPrimitive.Slottable>\n </Root>\n );\n};\n\nButton.displayName = 'Button';\n\nconst getAppearance = (appearance: Appearance | undefined) => {\n switch (appearance) {\n case undefined:\n case 'white':\n return [\n 'border-white bg-white text-black transition-colors duration-200 ease-in-out',\n 'hover:bg-white/90',\n 'focus:bg-white/90 focus:outline-hidden focus:ring-2 focus:ring-white/20',\n 'mt-2 mb-2 aria-disabled:border-transparent aria-disabled:bg-slate-11',\n ];\n case 'gradient':\n return [\n 'bg-gradient border-[#34343A] backdrop-blur-[1.25rem]',\n 'hover:bg-gradient-hover',\n 'focus:bg-gradient-hover focus:outline-hidden focus:ring-2 focus:ring-white/20',\n ];\n default:\n unreachable(appearance);\n }\n};\n\nconst getSize = (size: Size | undefined) => {\n switch (size) {\n case '1':\n return '';\n case undefined:\n case '2':\n return 'text-[.875rem] h-8 px-3 rounded-md gap-2';\n case '3':\n return 'text-[.875rem] h-10 px-4 rounded-md gap-2';\n case '4':\n return 'text-base h-11 px-4 rounded-md gap-2';\n default:\n unreachable(size);\n }\n};\n","/* eslint-disable no-warning-comments */\n'use client';\n\nimport type { Config, DotLottie, DotLottieWorker } from '@lottiefiles/dotlottie-web';\nimport { type ComponentProps, type ReactNode, type RefCallback, useCallback, useEffect, useRef } from 'react';\n\nexport type BaseDotLottieProps<T extends DotLottie | DotLottieWorker> = Omit<Config, 'canvas'> &\n ComponentProps<'canvas'> & {\n animationId?: string;\n /**\n * A function that creates a `DotLottie` or `DotLottieWorker` instance.\n */\n createDotLottie: (config: T extends DotLottieWorker ? Config & { workerId?: string } : Config) => T;\n /**\n * A callback function that receives the `DotLottie` or `DotLottieWorker` instance.\n *\n * @example\n * ```tsx\n * const [dotLottie, setDotLottie] = useState<DotLottie | null>(null);\n *\n * <DotLottieReact\n * dotLottieRefCallback={setDotLottie}\n * />\n * ```\n */\n dotLottieRefCallback?: RefCallback<T | null>;\n /**\n * @deprecated The `playOnHover` property is deprecated.\n * Instead, use the `onMouseEnter` and `onMouseLeave` events to control animation playback.\n * Utilize the `dotLottieRefCallback` to access the `DotLottie` instance and invoke the `play` and `pause` methods.\n *\n * Example usage:\n * ```tsx\n * const [dotLottie, setDotLottie] = useState<DotLottie | null>(null);\n *\n * <DotLottieReact\n * dotLottieRefCallback={setDotLottie}\n * onMouseEnter={() => dotLottie?.play()}\n * onMouseLeave={() => dotLottie?.pause()}\n * />\n * ```\n */\n playOnHover?: boolean;\n themeData?: string;\n workerId?: T extends DotLottieWorker ? string : undefined;\n };\n\nexport const BaseDotLottieReact = <T extends DotLottie | DotLottieWorker>({\n animationId,\n autoplay,\n backgroundColor,\n className,\n createDotLottie,\n data,\n dotLottieRefCallback,\n layout,\n loop,\n mode,\n playOnHover,\n renderConfig,\n segment,\n speed,\n src,\n stateMachineConfig,\n stateMachineId,\n style,\n themeData,\n themeId,\n useFrameInterpolation,\n workerId,\n ...props\n}: BaseDotLottieProps<T> & {\n createDotLottie: (config: T extends DotLottieWorker ? Config & { workerId?: string } : Config) => T;\n}): ReactNode => {\n const dotLottieRef = useRef<T | null>(null);\n const canvasRef = useRef<HTMLCanvasElement | null>(null);\n const dotLottieRefCallbackRef = useRef<RefCallback<T | null> | undefined>(dotLottieRefCallback);\n\n const config: Omit<Config, 'canvas'> & {\n workerId?: T extends DotLottieWorker ? string : undefined;\n } = {\n speed,\n mode,\n loop,\n useFrameInterpolation,\n segment,\n backgroundColor,\n autoplay,\n themeId,\n workerId,\n src,\n data,\n layout,\n renderConfig,\n animationId,\n stateMachineConfig,\n stateMachineId,\n };\n\n const configRef = useRef<Omit<BaseDotLottieProps<T>, 'createDotLottie' | 'dotLottieRefCallback'> | undefined>(config);\n\n dotLottieRefCallbackRef.current = dotLottieRefCallback;\n configRef.current = config;\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: DotLottie instance must only be created once per canvas mount\n const setCanvasRef = useCallback((canvas: HTMLCanvasElement | null) => {\n canvasRef.current = canvas;\n\n if (canvas) {\n dotLottieRef.current = createDotLottie({\n ...configRef.current,\n canvas,\n });\n } else {\n dotLottieRef.current?.destroy();\n dotLottieRef.current = null;\n }\n\n dotLottieRefCallbackRef.current?.(dotLottieRef.current);\n }, []);\n\n useEffect(() => {\n const handlePlayOnHover = (event: MouseEvent): void => {\n if (!playOnHover) return;\n\n if (event.type === 'mouseenter') {\n dotLottieRef.current?.play();\n }\n\n if (event.type === 'mouseleave') {\n dotLottieRef.current?.pause();\n }\n };\n\n canvasRef.current?.addEventListener('mouseenter', handlePlayOnHover);\n canvasRef.current?.addEventListener('mouseleave', handlePlayOnHover);\n\n return () => {\n canvasRef.current?.removeEventListener('mouseenter', handlePlayOnHover);\n canvasRef.current?.removeEventListener('mouseleave', handlePlayOnHover);\n };\n }, [playOnHover]);\n\n useEffect(() => {\n dotLottieRef.current?.setSpeed(speed ?? 1);\n }, [speed]);\n\n useEffect(() => {\n dotLottieRef.current?.setMode(mode ?? 'forward');\n }, [mode]);\n\n useEffect(() => {\n dotLottieRef.current?.setLoop(loop ?? false);\n }, [loop]);\n\n useEffect(() => {\n dotLottieRef.current?.setUseFrameInterpolation(useFrameInterpolation ?? true);\n }, [useFrameInterpolation]);\n\n useEffect(() => {\n if (typeof segment?.[0] === 'number' && typeof segment[1] === 'number') {\n dotLottieRef.current?.setSegment(segment[0], segment[1]);\n } else {\n // TODO: implement it for worker\n // dotLottieRef.current?.resetSegment();\n }\n }, [segment]);\n\n useEffect(() => {\n dotLottieRef.current?.setBackgroundColor(backgroundColor ?? '');\n }, [backgroundColor]);\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: intentional deep comparison via JSON.stringify\n useEffect(() => {\n dotLottieRef.current?.setRenderConfig(renderConfig ?? {});\n }, [JSON.stringify(renderConfig)]);\n\n useEffect(() => {\n if (typeof data !== 'string' && typeof data !== 'object') return;\n\n dotLottieRef.current?.load({\n data,\n ...configRef.current,\n });\n }, [data]);\n\n useEffect(() => {\n if (typeof src !== 'string') return;\n\n dotLottieRef.current?.load({\n src,\n ...configRef.current,\n });\n }, [src]);\n\n useEffect(() => {\n dotLottieRef.current?.setMarker(props.marker ?? '');\n }, [props.marker]);\n\n useEffect(() => {\n if (dotLottieRef.current?.isLoaded && dotLottieRef.current.activeAnimationId !== animationId) {\n dotLottieRef.current.loadAnimation(animationId ?? '');\n }\n }, [animationId]);\n\n useEffect(() => {\n if (typeof themeId === 'string') {\n dotLottieRef.current?.setTheme(themeId);\n } else {\n // TODO: implement it for worker\n // dotLottieRef.current?.resetTheme();\n }\n }, [themeId]);\n\n useEffect(() => {\n dotLottieRef.current?.setThemeData(themeData ?? '');\n }, [themeData]);\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: granular property deps avoid unnecessary setLayout calls when layout object reference changes\n useEffect(() => {\n dotLottieRef.current?.setLayout(layout ?? {});\n }, [layout?.fit, layout?.align?.[0], layout?.align?.[1]]);\n\n useEffect(() => {\n if (dotLottieRef.current?.isLoaded) {\n if (typeof stateMachineId === 'string' && stateMachineId) {\n const smLoaded = dotLottieRef.current.stateMachineLoad(stateMachineId);\n\n if (smLoaded) {\n dotLottieRef.current.stateMachineStart();\n }\n } else {\n dotLottieRef.current.stateMachineStop();\n }\n }\n }, [stateMachineId]);\n\n useEffect(() => {\n dotLottieRef.current?.stateMachineSetConfig(stateMachineConfig ?? null);\n }, [stateMachineConfig]);\n\n return (\n <div\n className={className}\n {...(!className && {\n style: {\n width: '100%',\n height: '100%',\n lineHeight: 0,\n ...style,\n },\n })}\n >\n <canvas\n ref={setCanvasRef}\n style={{\n width: '100%',\n height: '100%',\n }}\n {...props}\n />\n </div>\n );\n};\n","/* eslint-disable max-classes-per-file */\n\ninterface AnimationFrameStrategy {\n cancelAnimationFrame(id: number): void;\n requestAnimationFrame(callback: (time: number) => void): number;\n}\n\nclass WebAnimationFrameStrategy implements AnimationFrameStrategy {\n public requestAnimationFrame(callback: (time: number) => void): number {\n return requestAnimationFrame(callback);\n }\n\n public cancelAnimationFrame(id: number): void {\n cancelAnimationFrame(id);\n }\n}\n\nclass NodeAnimationFrameStrategy implements AnimationFrameStrategy {\n private _lastHandleId: number = 0;\n\n private _lastImmediate: NodeJS.Immediate | null = null;\n\n public requestAnimationFrame(callback: (time: number) => void): number {\n if (this._lastHandleId >= Number.MAX_SAFE_INTEGER) {\n this._lastHandleId = 0;\n }\n\n this._lastHandleId += 1;\n\n this._lastImmediate = setImmediate(() => {\n callback(Date.now());\n });\n\n return this._lastHandleId;\n }\n\n public cancelAnimationFrame(_id: number): void {\n if (this._lastImmediate) {\n clearImmediate(this._lastImmediate);\n }\n }\n}\n\nexport class AnimationFrameManager {\n private readonly _strategy: AnimationFrameStrategy;\n\n public constructor() {\n this._strategy =\n typeof requestAnimationFrame === 'function' ? new WebAnimationFrameStrategy() : new NodeAnimationFrameStrategy();\n }\n\n public requestAnimationFrame(callback: (time: number) => void): number {\n return this._strategy.requestAnimationFrame(callback);\n }\n\n public cancelAnimationFrame(id: number): void {\n this._strategy.cancelAnimationFrame(id);\n }\n}\n","export const IS_BROWSER = typeof window !== 'undefined' && typeof window.document !== 'undefined';\nexport const MS_TO_SEC_FACTOR = 1000;\nexport const DEFAULT_BG_COLOR = '#00000000';\nexport const ZIP_SIGNATURE = new Uint8Array([0x50, 0x4b, 0x03, 0x04]);\nexport const LOTTIE_JSON_MANDATORY_FIELDS = ['v', 'ip', 'op', 'layers', 'fr', 'w', 'h'];\n\n// These values are replace during the build process with the package version and name\nexport const PACKAGE_VERSION = __PACKAGE_VERSION__;\nexport const PACKAGE_NAME = __PACKAGE_NAME__;\n\nexport const DEFAULT_DPR_FACTOR = 0.75;\n\nexport const BYTES_PER_PIXEL = 4;\n","let wasm;\n\nconst cachedTextDecoder = (typeof TextDecoder !== 'undefined' ? new TextDecoder('utf-8', { ignoreBOM: true, fatal: true }) : { decode: () => { throw Error('TextDecoder not available') } } );\n\nif (typeof TextDecoder !== 'undefined') { cachedTextDecoder.decode(); };\n\nlet cachedUint8ArrayMemory0 = null;\n\nfunction getUint8ArrayMemory0() {\n if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) {\n cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachedUint8ArrayMemory0;\n}\n\nfunction getStringFromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len));\n}\n\nfunction addToExternrefTable0(obj) {\n const idx = wasm.__externref_table_alloc_command_export();\n wasm.__wbindgen_export_3.set(idx, obj);\n return idx;\n}\n\nfunction handleError(f, args) {\n try {\n return f.apply(this, args);\n } catch (e) {\n const idx = addToExternrefTable0(e);\n wasm.__wbindgen_exn_store_command_export(idx);\n }\n}\n\nlet WASM_VECTOR_LEN = 0;\n\nconst cachedTextEncoder = (typeof TextEncoder !== 'undefined' ? new TextEncoder('utf-8') : { encode: () => { throw Error('TextEncoder not available') } } );\n\nconst encodeString = (typeof cachedTextEncoder.encodeInto === 'function'\n ? function (arg, view) {\n return cachedTextEncoder.encodeInto(arg, view);\n}\n : function (arg, view) {\n const buf = cachedTextEncoder.encode(arg);\n view.set(buf);\n return {\n read: arg.length,\n written: buf.length\n };\n});\n\nfunction passStringToWasm0(arg, malloc, realloc) {\n\n if (realloc === undefined) {\n const buf = cachedTextEncoder.encode(arg);\n const ptr = malloc(buf.length, 1) >>> 0;\n getUint8ArrayMemory0().subarray(ptr, ptr + buf.length).set(buf);\n WASM_VECTOR_LEN = buf.length;\n return ptr;\n }\n\n let len = arg.length;\n let ptr = malloc(len, 1) >>> 0;\n\n const mem = getUint8ArrayMemory0();\n\n let offset = 0;\n\n for (; offset < len; offset++) {\n const code = arg.charCodeAt(offset);\n if (code > 0x7F) break;\n mem[ptr + offset] = code;\n }\n\n if (offset !== len) {\n if (offset !== 0) {\n arg = arg.slice(offset);\n }\n ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0;\n const view = getUint8ArrayMemory0().subarray(ptr + offset, ptr + len);\n const ret = encodeString(arg, view);\n\n offset += ret.written;\n ptr = realloc(ptr, len, offset, 1) >>> 0;\n }\n\n WASM_VECTOR_LEN = offset;\n return ptr;\n}\n\nlet cachedDataViewMemory0 = null;\n\nfunction getDataViewMemory0() {\n if (cachedDataViewMemory0 === null || cachedDataViewMemory0.buffer.detached === true || (cachedDataViewMemory0.buffer.detached === undefined && cachedDataViewMemory0.buffer !== wasm.memory.buffer)) {\n cachedDataViewMemory0 = new DataView(wasm.memory.buffer);\n }\n return cachedDataViewMemory0;\n}\n\nfunction isLikeNone(x) {\n return x === undefined || x === null;\n}\n\nlet cachedFloat32ArrayMemory0 = null;\n\nfunction getFloat32ArrayMemory0() {\n if (cachedFloat32ArrayMemory0 === null || cachedFloat32ArrayMemory0.byteLength === 0) {\n cachedFloat32ArrayMemory0 = new Float32Array(wasm.memory.buffer);\n }\n return cachedFloat32ArrayMemory0;\n}\n\nfunction passArrayF32ToWasm0(arg, malloc) {\n const ptr = malloc(arg.length * 4, 4) >>> 0;\n getFloat32ArrayMemory0().set(arg, ptr / 4);\n WASM_VECTOR_LEN = arg.length;\n return ptr;\n}\n\nfunction passArray8ToWasm0(arg, malloc) {\n const ptr = malloc(arg.length * 1, 1) >>> 0;\n getUint8ArrayMemory0().set(arg, ptr / 1);\n WASM_VECTOR_LEN = arg.length;\n return ptr;\n}\n\nfunction passArrayJsValueToWasm0(array, malloc) {\n const ptr = malloc(array.length * 4, 4) >>> 0;\n for (let i = 0; i < array.length; i++) {\n const add = addToExternrefTable0(array[i]);\n getDataViewMemory0().setUint32(ptr + 4 * i, add, true);\n }\n WASM_VECTOR_LEN = array.length;\n return ptr;\n}\n/**\n * Register a font globally (static, not tied to a player instance).\n * @param {string} name\n * @param {Uint8Array} data\n * @returns {boolean}\n */\nexport function register_font(name, data) {\n const ptr0 = passStringToWasm0(name, wasm.__wbindgen_malloc_command_export, wasm.__wbindgen_realloc_command_export);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passArray8ToWasm0(data, wasm.__wbindgen_malloc_command_export);\n const len1 = WASM_VECTOR_LEN;\n const ret = wasm.register_font(ptr0, len0, ptr1, len1);\n return ret !== 0;\n}\n\n/**\n * Playback direction / bounce mode.\n * @enum {0 | 1 | 2 | 3}\n */\nexport const Mode = Object.freeze({\n Forward: 0, \"0\": \"Forward\",\n Reverse: 1, \"1\": \"Reverse\",\n Bounce: 2, \"2\": \"Bounce\",\n ReverseBounce: 3, \"3\": \"ReverseBounce\",\n});\n\nconst DotLottiePlayerWasmFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_dotlottieplayerwasm_free(ptr >>> 0, 1));\n\nexport class DotLottiePlayerWasm {\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n DotLottiePlayerWasmFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_dotlottieplayerwasm_free(ptr, 0);\n }\n /**\n * @param {string} id\n * @returns {boolean}\n */\n clear_slot(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc_command_export, wasm.__wbindgen_realloc_command_export);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.dotlottieplayerwasm_clear_slot(this.__wbg_ptr, ptr0, len0);\n return ret !== 0;\n }\n /**\n * @returns {boolean}\n */\n is_playing() {\n const ret = wasm.dotlottieplayerwasm_is_playing(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * @returns {boolean}\n */\n is_stopped() {\n const ret = wasm.dotlottieplayerwasm_is_stopped(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * @returns {string}\n */\n layout_fit() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.dotlottieplayerwasm_layout_fit(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free_command_export(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {number}\n */\n loop_count() {\n const ret = wasm.dotlottieplayerwasm_loop_count(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * Poll the next player event. Returns `null` if the queue is empty,\n * otherwise a plain JS object with a `type` string field and optional\n * payload fields (`frameNo`, `loopCount`).\n * @returns {any}\n */\n poll_event() {\n const ret = wasm.dotlottieplayerwasm_poll_event(this.__wbg_ptr);\n return ret;\n }\n /**\n * Reset a slot to its default value from the animation.\n * @param {string} id\n * @returns {boolean}\n */\n reset_slot(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc_command_export, wasm.__wbindgen_realloc_command_export);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.dotlottieplayerwasm_reset_slot(this.__wbg_ptr, ptr0, len0);\n return ret !== 0;\n }\n /**\n * Set the layout.\n *\n * `fit` is one of `\"contain\"`, `\"fill\"`, `\"cover\"`, `\"fit-width\"`,\n * `\"fit-height\"`, `\"none\"`. `align_x` / `align_y` are in [0, 1].\n * @param {string} fit\n * @param {number} align_x\n * @param {number} align_y\n * @returns {boolean}\n */\n set_layout(fit, align_x, align_y) {\n const ptr0 = passStringToWasm0(fit, wasm.__wbindgen_malloc_command_export, wasm.__wbindgen_realloc_command_export);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.dotlottieplayerwasm_set_layout(this.__wbg_ptr, ptr0, len0, align_x, align_y);\n return ret !== 0;\n }\n /**\n * @param {string} name\n */\n set_marker(name) {\n const ptr0 = passStringToWasm0(name, wasm.__wbindgen_malloc_command_export, wasm.__wbindgen_realloc_command_export);\n const len0 = WASM_VECTOR_LEN;\n wasm.dotlottieplayerwasm_set_marker(this.__wbg_ptr, ptr0, len0);\n }\n /**\n * @returns {boolean}\n */\n clear_slots() {\n const ret = wasm.dotlottieplayerwasm_clear_slots(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * @returns {boolean}\n */\n has_segment() {\n const ret = wasm.dotlottieplayerwasm_has_segment(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * @returns {boolean}\n */\n is_complete() {\n const ret = wasm.dotlottieplayerwasm_is_complete(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * @returns {boolean}\n */\n is_tweening() {\n const ret = wasm.dotlottieplayerwasm_is_tweening(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * Reset all slots to their default values from the animation.\n * @returns {boolean}\n */\n reset_slots() {\n const ret = wasm.dotlottieplayerwasm_reset_slots(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * @returns {boolean}\n */\n reset_theme() {\n const ret = wasm.dotlottieplayerwasm_reset_theme(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * @returns {number}\n */\n segment_end() {\n const ret = wasm.dotlottieplayerwasm_segment_end(this.__wbg_ptr);\n return ret;\n }\n /**\n * @param {number} quality\n * @returns {boolean}\n */\n set_quality(quality) {\n const ret = wasm.dotlottieplayerwasm_set_quality(this.__wbg_ptr, quality);\n return ret !== 0;\n }\n /**\n * @param {number} start\n * @param {number} end\n * @returns {boolean}\n */\n set_segment(start, end) {\n const ret = wasm.dotlottieplayerwasm_set_segment(this.__wbg_ptr, start, end);\n return ret !== 0;\n }\n /**\n * @param {string} name\n * @returns {boolean}\n */\n static unload_font(name) {\n const ptr0 = passStringToWasm0(name, wasm.__wbindgen_malloc_command_export, wasm.__wbindgen_realloc_command_export);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.dotlottieplayerwasm_unload_font(ptr0, len0);\n return ret !== 0;\n }\n /**\n * @returns {string | undefined}\n */\n animation_id() {\n const ret = wasm.dotlottieplayerwasm_animation_id(this.__wbg_ptr);\n let v1;\n if (ret[0] !== 0) {\n v1 = getStringFromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free_command_export(ret[0], ret[1] * 1, 1);\n }\n return v1;\n }\n /**\n * Returns the current global audio volume multiplier.\n * @returns {number}\n */\n audio_volume() {\n const ret = wasm.dotlottieplayerwasm_audio_volume(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {number}\n */\n background_a() {\n const ret = wasm.dotlottieplayerwasm_background_a(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {number}\n */\n background_b() {\n const ret = wasm.dotlottieplayerwasm_background_b(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {number}\n */\n background_g() {\n const ret = wasm.dotlottieplayerwasm_background_g(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {number}\n */\n background_r() {\n const ret = wasm.dotlottieplayerwasm_background_r(this.__wbg_ptr);\n return ret;\n }\n clear_marker() {\n wasm.dotlottieplayerwasm_clear_marker(this.__wbg_ptr);\n }\n emit_on_loop() {\n wasm.dotlottieplayerwasm_emit_on_loop(this.__wbg_ptr);\n }\n /**\n * Get all slot IDs as a JS array.\n * @returns {any}\n */\n get_slot_ids() {\n const ret = wasm.dotlottieplayerwasm_get_slot_ids(this.__wbg_ptr);\n return ret;\n }\n /**\n * Get the JSON value of a single slot by ID, or `undefined` if not found.\n * @param {string} id\n * @returns {string | undefined}\n */\n get_slot_str(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc_command_export, wasm.__wbindgen_realloc_command_export);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.dotlottieplayerwasm_get_slot_str(this.__wbg_ptr, ptr0, len0);\n let v2;\n if (ret[0] !== 0) {\n v2 = getStringFromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free_command_export(ret[0], ret[1] * 1, 1);\n }\n return v2;\n }\n /**\n * Returns an array of marker name strings.\n * @returns {any}\n */\n marker_names() {\n const ret = wasm.dotlottieplayerwasm_marker_names(this.__wbg_ptr);\n return ret;\n }\n /**\n * @param {boolean} v\n */\n set_autoplay(v) {\n wasm.dotlottieplayerwasm_set_autoplay(this.__wbg_ptr, v);\n }\n /**\n * Set a single slot by ID from a JSON value string.\n * @param {string} id\n * @param {string} json\n * @returns {boolean}\n */\n set_slot_str(id, json) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc_command_export, wasm.__wbindgen_realloc_command_export);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(json, wasm.__wbindgen_malloc_command_export, wasm.__wbindgen_realloc_command_export);\n const len1 = WASM_VECTOR_LEN;\n const ret = wasm.dotlottieplayerwasm_set_slot_str(this.__wbg_ptr, ptr0, len0, ptr1, len1);\n return ret !== 0;\n }\n /**\n * @param {number} x\n * @param {number} y\n * @param {number} w\n * @param {number} h\n * @returns {boolean}\n */\n set_viewport(x, y, w, h) {\n const ret = wasm.dotlottieplayerwasm_set_viewport(this.__wbg_ptr, x, y, w, h);\n return ret !== 0;\n }\n /**\n * @returns {number}\n */\n total_frames() {\n const ret = wasm.dotlottieplayerwasm_total_frames(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {boolean}\n */\n clear_segment() {\n const ret = wasm.dotlottieplayerwasm_clear_segment(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * @returns {number}\n */\n current_frame() {\n const ret = wasm.dotlottieplayerwasm_current_frame(this.__wbg_ptr);\n return ret;\n }\n /**\n * Get the type string of a slot, or `undefined` if not found.\n * @param {string} id\n * @returns {string | undefined}\n */\n get_slot_type(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc_command_export, wasm.__wbindgen_realloc_command_export);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.dotlottieplayerwasm_get_slot_type(this.__wbg_ptr, ptr0, len0);\n let v2;\n if (ret[0] !== 0) {\n v2 = getStringFromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free_command_export(ret[0], ret[1] * 1, 1);\n }\n return v2;\n }\n /**\n * Get all slots as a JSON object string.\n * @returns {string}\n */\n get_slots_str() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.dotlottieplayerwasm_get_slots_str(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free_command_export(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * Returns the current affine transform as a flat `Float32Array`.\n * @returns {Float32Array}\n */\n get_transform() {\n const ret = wasm.dotlottieplayerwasm_get_transform(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {number}\n */\n request_frame() {\n const ret = wasm.dotlottieplayerwasm_request_frame(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {number}\n */\n segment_start() {\n const ret = wasm.dotlottieplayerwasm_segment_start(this.__wbg_ptr);\n return ret;\n }\n /**\n * Set multiple slots at once from a JSON string.\n * @param {string} json\n * @returns {boolean}\n */\n set_slots_str(json) {\n const ptr0 = passStringToWasm0(json, wasm.__wbindgen_malloc_command_export, wasm.__wbindgen_realloc_command_export);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.dotlottieplayerwasm_set_slots_str(this.__wbg_ptr, ptr0, len0);\n return ret !== 0;\n }\n /**\n * @param {string} id\n * @param {string} text\n * @returns {boolean}\n */\n set_text_slot(id, text) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc_command_export, wasm.__wbindgen_realloc_command_export);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(text, wasm.__wbindgen_malloc_command_export, wasm.__wbindgen_realloc_command_export);\n const len1 = WASM_VECTOR_LEN;\n const ret = wasm.dotlottieplayerwasm_set_text_slot(this.__wbg_ptr, ptr0, len0, ptr1, len1);\n return ret !== 0;\n }\n /**\n * @param {Float32Array} data\n * @returns {boolean}\n */\n set_transform(data) {\n const ptr0 = passArrayF32ToWasm0(data, wasm.__wbindgen_malloc_command_export);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.dotlottieplayerwasm_set_transform(this.__wbg_ptr, ptr0, len0);\n return ret !== 0;\n }\n /**\n * Returns all state machine inputs as a JS array of strings.\n * @returns {any}\n */\n sm_get_inputs() {\n const ret = wasm.dotlottieplayerwasm_sm_get_inputs(this.__wbg_ptr);\n return ret;\n }\n /**\n * Poll the next state machine event. Returns `null` if the queue is empty,\n * otherwise a JS object with a `type` field and optional payload.\n * @returns {any}\n */\n sm_poll_event() {\n const ret = wasm.dotlottieplayerwasm_sm_poll_event(this.__wbg_ptr);\n return ret;\n }\n /**\n * @param {number} x\n * @param {number} y\n */\n sm_post_click(x, y) {\n wasm.dotlottieplayerwasm_sm_post_click(this.__wbg_ptr, x, y);\n }\n /**\n * `[width, height]` of the animation in its native coordinate space.\n * @returns {Float32Array}\n */\n animation_size() {\n const ret = wasm.dotlottieplayerwasm_animation_size(this.__wbg_ptr);\n return ret;\n }\n /**\n * Name of the currently active marker, or `undefined` if none.\n * @returns {string | undefined}\n */\n current_marker() {\n const ret = wasm.dotlottieplayerwasm_current_marker(this.__wbg_ptr);\n let v1;\n if (ret[0] !== 0) {\n v1 = getStringFromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free_command_export(ret[0], ret[1] * 1, 1);\n }\n return v1;\n }\n /**\n * @returns {number}\n */\n layout_align_x() {\n const ret = wasm.dotlottieplayerwasm_layout_align_x(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {number}\n */\n layout_align_y() {\n const ret = wasm.dotlottieplayerwasm_layout_align_y(this.__wbg_ptr);\n return ret;\n }\n /**\n * Load a Lottie JSON animation.\n *\n * `setup_target` must have been called first.\n * @param {string} data\n * @returns {boolean}\n */\n load_animation(data) {\n const ptr0 = passStringToWasm0(data, wasm.__wbindgen_malloc_command_export, wasm.__wbindgen_realloc_command_export);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.dotlottieplayerwasm_load_animation(this.__wbg_ptr, ptr0, len0);\n return ret !== 0;\n }\n /**\n * @returns {boolean}\n */\n loop_animation() {\n const ret = wasm.dotlottieplayerwasm_loop_animation(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * Set background colour. Pass `(0, 0, 0, 0)` to clear.\n * @param {number} r\n * @param {number} g\n * @param {number} b\n * @param {number} a\n * @returns {boolean}\n */\n set_background(r, g, b, a) {\n const ret = wasm.dotlottieplayerwasm_set_background(this.__wbg_ptr, r, g, b, a);\n return ret !== 0;\n }\n /**\n * Set a color slot (`r`, `g`, `b` in [0, 1]).\n * @param {string} id\n * @param {number} r\n * @param {number} g\n * @param {number} b\n * @returns {boolean}\n */\n set_color_slot(id, r, g, b) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc_command_export, wasm.__wbindgen_realloc_command_export);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.dotlottieplayerwasm_set_color_slot(this.__wbg_ptr, ptr0, len0, r, g, b);\n return ret !== 0;\n }\n /**\n * @param {number} n\n */\n set_loop_count(n) {\n wasm.dotlottieplayerwasm_set_loop_count(this.__wbg_ptr, n);\n }\n /**\n * @param {string} data\n * @returns {boolean}\n */\n set_theme_data(data) {\n const ptr0 = passStringToWasm0(data, wasm.__wbindgen_malloc_command_export, wasm.__wbindgen_realloc_command_export);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.dotlottieplayerwasm_set_theme_data(this.__wbg_ptr, ptr0, len0);\n return ret !== 0;\n }\n /**\n * @param {string} key\n */\n sm_reset_input(key) {\n const ptr0 = passStringToWasm0(key, wasm.__wbindgen_malloc_command_export, wasm.__wbindgen_realloc_command_export);\n const len0 = WASM_VECTOR_LEN;\n wasm.dotlottieplayerwasm_sm_reset_input(this.__wbg_ptr, ptr0, len0);\n }\n /**\n * Returns the animation manifest as a JSON string, or empty string if unavailable.\n * @returns {string}\n */\n manifest_string() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.dotlottieplayerwasm_manifest_string(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free_command_export(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @param {string} id\n * @param {number} value\n * @returns {boolean}\n */\n set_scalar_slot(id, value) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc_command_export, wasm.__wbindgen_realloc_command_export);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.dotlottieplayerwasm_set_scalar_slot(this.__wbg_ptr, ptr0, len0, value);\n return ret !== 0;\n }\n /**\n * @param {string} id\n * @param {number} x\n * @param {number} y\n * @returns {boolean}\n */\n set_vector_slot(id, x, y) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc_command_export, wasm.__wbindgen_realloc_command_export);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.dotlottieplayerwasm_set_vector_slot(this.__wbg_ptr, ptr0, len0, x, y);\n return ret !== 0;\n }\n /**\n * Set up (or resize) the software rendering target.\n * @param {number} width\n * @param {number} height\n * @returns {boolean}\n */\n setup_sw_target(width, height) {\n const ret = wasm.dotlottieplayerwasm_setup_sw_target(this.__wbg_ptr, width, height);\n return ret !== 0;\n }\n /**\n * Returns `[x, y, width, height]` of the layer's bounding box.\n * @param {string} layer_name\n * @returns {Float32Array}\n */\n get_layer_bounds(layer_name) {\n const ptr0 = passStringToWasm0(layer_name, wasm.__wbindgen_malloc_command_export, wasm.__wbindgen_realloc_command_export);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.dotlottieplayerwasm_get_layer_bounds(this.__wbg_ptr, ptr0, len0);\n return ret;\n }\n /**\n * Zero-copy `Uint8Array` view into WASM linear memory.\n *\n * **Use the returned array immediately.** Do not store the reference across\n * any call that may reallocate the buffer (e.g. `resize` / `load_animation`\n * with different dimensions).\n * @returns {Uint8Array}\n */\n get_pixel_buffer() {\n const ret = wasm.dotlottieplayerwasm_get_pixel_buffer(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {number}\n */\n segment_duration() {\n const ret = wasm.dotlottieplayerwasm_segment_duration(this.__wbg_ptr);\n return ret;\n }\n /**\n * Set the global audio volume multiplier (clamped to [0.0, 1.0]).\n * @param {number} volume\n */\n set_audio_volume(volume) {\n wasm.dotlottieplayerwasm_set_audio_volume(this.__wbg_ptr, volume);\n }\n /**\n * Get the name of the current state.\n * @returns {string}\n */\n sm_current_state() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.dotlottieplayerwasm_sm_current_state(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free_command_export(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * Returns the ID of the currently active state machine, or `undefined`.\n * @returns {string | undefined}\n */\n state_machine_id() {\n const ret = wasm.dotlottieplayerwasm_state_machine_id(this.__wbg_ptr);\n let v1;\n if (ret[0] !== 0) {\n v1 = getStringFromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free_command_export(ret[0], ret[1] * 1, 1);\n }\n return v1;\n }\n /**\n * Returns the raw JSON definition of a state machine by ID, or `undefined`.\n * @param {string} id\n * @returns {string | undefined}\n */\n get_state_machine(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc_command_export, wasm.__wbindgen_realloc_command_export);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.dotlottieplayerwasm_get_state_machine(this.__wbg_ptr, ptr0, len0);\n let v2;\n if (ret[0] !== 0) {\n v2 = getStringFromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free_command_export(ret[0], ret[1] * 1, 1);\n }\n return v2;\n }\n /**\n * @param {string} id\n * @param {number} x\n * @param {number} y\n * @returns {boolean}\n */\n set_position_slot(id, x, y) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc_command_export, wasm.__wbindgen_realloc_command_export);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.dotlottieplayerwasm_set_position_slot(this.__wbg_ptr, ptr0, len0, x, y);\n return ret !== 0;\n }\n /**\n * @returns {number}\n */\n current_loop_count() {\n const ret = wasm.dotlottieplayerwasm_current_loop_count(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * Returns the framework setup listeners as a JS array of strings.\n * @returns {any}\n */\n sm_framework_setup() {\n const ret = wasm.dotlottieplayerwasm_sm_framework_setup(this.__wbg_ptr);\n return ret;\n }\n /**\n * @param {number} x\n * @param {number} y\n */\n sm_post_pointer_up(x, y) {\n wasm.dotlottieplayerwasm_sm_post_pointer_up(this.__wbg_ptr, x, y);\n }\n /**\n * Load a state machine from a JSON definition string. Returns `true` on\n * success. The engine is kept alive inside the player and interacted\n * with via the `sm_*` methods.\n * @param {string} definition\n * @returns {boolean}\n */\n state_machine_load(definition) {\n const ptr0 = passStringToWasm0(definition, wasm.__wbindgen_malloc_command_export, wasm.__wbindgen_realloc_command_export);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.dotlottieplayerwasm_state_machine_load(this.__wbg_ptr, ptr0, len0);\n return ret !== 0;\n }\n /**\n * Load a .lottie archive from raw bytes.\n *\n * `setup_target` must have been called first.\n * @param {Uint8Array} data\n * @returns {boolean}\n */\n load_dotlottie_data(data) {\n const ptr0 = passArray8ToWasm0(data, wasm.__wbindgen_malloc_command_export);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.dotlottieplayerwasm_load_dotlottie_data(this.__wbg_ptr, ptr0, len0);\n return ret !== 0;\n }\n /**\n * @param {string} key\n * @returns {string | undefined}\n */\n sm_get_string_input(key) {\n const ptr0 = passStringToWasm0(key, wasm.__wbindgen_malloc_command_export, wasm.__wbindgen_realloc_command_export);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.dotlottieplayerwasm_sm_get_string_input(this.__wbg_ptr, ptr0, len0);\n let v2;\n if (ret[0] !== 0) {\n v2 = getStringFromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free_command_export(ret[0], ret[1] * 1, 1);\n }\n return v2;\n }\n /**\n * @param {string} key\n * @param {string} value\n * @returns {boolean}\n */\n sm_set_string_input(key, value) {\n const ptr0 = passStringToWasm0(key, wasm.__wbindgen_malloc_command_export, wasm.__wbindgen_realloc_command_export);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(value, wasm.__wbindgen_malloc_command_export, wasm.__wbindgen_realloc_command_export);\n const len1 = WASM_VECTOR_LEN;\n const ret = wasm.dotlottieplayerwasm_sm_set_string_input(this.__wbg_ptr, ptr0, len0, ptr1, len1);\n return ret !== 0;\n }\n /**\n * @param {string} key\n * @returns {boolean | undefined}\n */\n sm_get_boolean_input(key) {\n const ptr0 = passStringToWasm0(key, wasm.__wbindgen_malloc_command_export, wasm.__wbindgen_realloc_command_export);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.dotlottieplayerwasm_sm_get_boolean_input(this.__wbg_ptr, ptr0, len0);\n return ret === 0xFFFFFF ? undefined : ret !== 0;\n }\n /**\n * @param {string} key\n * @returns {number | undefined}\n */\n sm_get_numeric_input(key) {\n const ptr0 = passStringToWasm0(key, wasm.__wbindgen_malloc_command_export, wasm.__wbindgen_realloc_command_export);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.dotlottieplayerwasm_sm_get_numeric_input(this.__wbg_ptr, ptr0, len0);\n return ret === 0x100000001 ? undefined : ret;\n }\n /**\n * @param {number} x\n * @param {number} y\n */\n sm_post_pointer_down(x, y) {\n wasm.dotlottieplayerwasm_sm_post_pointer_down(this.__wbg_ptr, x, y);\n }\n /**\n * @param {number} x\n * @param {number} y\n */\n sm_post_pointer_exit(x, y) {\n wasm.dotlottieplayerwasm_sm_post_pointer_exit(this.__wbg_ptr, x, y);\n }\n /**\n * @param {number} x\n * @param {number} y\n */\n sm_post_pointer_move(x, y) {\n wasm.dotlottieplayerwasm_sm_post_pointer_move(this.__wbg_ptr, x, y);\n }\n /**\n * @param {string} key\n * @param {boolean} value\n * @returns {boolean}\n */\n sm_set_boolean_input(key, value) {\n const ptr0 = passStringToWasm0(key, wasm.__wbindgen_malloc_command_export, wasm.__wbindgen_realloc_command_export);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.dotlottieplayerwasm_sm_set_boolean_input(this.__wbg_ptr, ptr0, len0, value);\n return ret !== 0;\n }\n /**\n * @param {string} key\n * @param {number} value\n * @returns {boolean}\n */\n sm_set_numeric_input(key, value) {\n const ptr0 = passStringToWasm0(key, wasm.__wbindgen_malloc_command_export, wasm.__wbindgen_realloc_command_export);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.dotlottieplayerwasm_sm_set_numeric_input(this.__wbg_ptr, ptr0, len0, value);\n return ret !== 0;\n }\n /**\n * Unload the active state machine.\n */\n state_machine_unload() {\n wasm.dotlottieplayerwasm_state_machine_unload(this.__wbg_ptr);\n }\n /**\n * @param {number} x\n * @param {number} y\n */\n sm_post_pointer_enter(x, y) {\n wasm.dotlottieplayerwasm_sm_post_pointer_enter(this.__wbg_ptr, x, y);\n }\n /**\n * Load an animation from an already-loaded .lottie archive by its ID.\n *\n * `setup_target` must have been called first.\n * @param {string} id\n * @returns {boolean}\n */\n load_animation_from_id(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc_command_export, wasm.__wbindgen_realloc_command_export);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.dotlottieplayerwasm_load_animation_from_id(this.__wbg_ptr, ptr0, len0);\n return ret !== 0;\n }\n /**\n * Poll the next state machine internal event. Returns `null` if the\n * queue is empty, otherwise a JS object `{ type: \"Message\", message }`.\n * @returns {any}\n */\n sm_poll_internal_event() {\n const ret = wasm.dotlottieplayerwasm_sm_poll_internal_event(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {boolean}\n */\n use_frame_interpolation() {\n const ret = wasm.dotlottieplayerwasm_use_frame_interpolation(this.__wbg_ptr);\n return ret !== 0;\n }\n reset_current_loop_count() {\n wasm.dotlottieplayerwasm_reset_current_loop_count(this.__wbg_ptr);\n }\n /**\n * Override the current state.\n * @param {string} state\n * @param {boolean} immediate\n * @returns {boolean}\n */\n sm_override_current_state(state, immediate) {\n const ptr0 = passStringToWasm0(state, wasm.__wbindgen_malloc_command_export, wasm.__wbindgen_realloc_command_export);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.dotlottieplayerwasm_sm_override_current_state(this.__wbg_ptr, ptr0, len0, immediate);\n return ret !== 0;\n }\n /**\n * Load a state machine from a .lottie archive by state-machine ID.\n * @param {string} id\n * @returns {boolean}\n */\n state_machine_load_from_id(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc_command_export, wasm.__wbindgen_realloc_command_export);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.dotlottieplayerwasm_state_machine_load_from_id(this.__wbg_ptr, ptr0, len0);\n return ret !== 0;\n }\n /**\n * @param {boolean} v\n */\n set_use_frame_interpolation(v) {\n wasm.dotlottieplayerwasm_set_use_frame_interpolation(this.__wbg_ptr, v);\n }\n constructor() {\n const ret = wasm.dotlottieplayerwasm_new();\n this.__wbg_ptr = ret >>> 0;\n DotLottiePlayerWasmFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @returns {Mode}\n */\n mode() {\n const ret = wasm.dotlottieplayerwasm_mode(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {boolean}\n */\n play() {\n const ret = wasm.dotlottieplayerwasm_play(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * @param {number} no\n * @returns {boolean}\n */\n seek(no) {\n const ret = wasm.dotlottieplayerwasm_seek(this.__wbg_ptr, no);\n return ret !== 0;\n }\n /**\n * @returns {boolean}\n */\n stop() {\n const ret = wasm.dotlottieplayerwasm_stop(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * Advance time and render. Call once per `requestAnimationFrame`.\n * @returns {boolean}\n */\n tick() {\n const ret = wasm.dotlottieplayerwasm_tick(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * Clear the canvas to the background colour.\n */\n clear() {\n wasm.dotlottieplayerwasm_clear(this.__wbg_ptr);\n }\n /**\n * @returns {boolean}\n */\n pause() {\n const ret = wasm.dotlottieplayerwasm_pause(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * @returns {number}\n */\n speed() {\n const ret = wasm.dotlottieplayerwasm_speed(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {number}\n */\n width() {\n const ret = wasm.dotlottieplayerwasm_width(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @returns {number}\n */\n height() {\n const ret = wasm.dotlottieplayerwasm_height(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * Render the current frame without advancing time.\n * @returns {boolean}\n */\n render() {\n const ret = wasm.dotlottieplayerwasm_render(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * Returns an array of `{ name, time, duration }` objects.\n * @returns {any}\n */\n markers() {\n const ret = wasm.dotlottieplayerwasm_markers(this.__wbg_ptr);\n return ret;\n }\n /**\n * Fire a named event into the state machine.\n * @param {string} event\n * @returns {boolean}\n */\n sm_fire(event) {\n const ptr0 = passStringToWasm0(event, wasm.__wbindgen_malloc_command_export, wasm.__wbindgen_realloc_command_export);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.dotlottieplayerwasm_sm_fire(this.__wbg_ptr, ptr0, len0);\n return ret !== 0;\n }\n /**\n * Stop the state machine.\n * @returns {boolean}\n */\n sm_stop() {\n const ret = wasm.dotlottieplayerwasm_sm_stop(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * Advance the state machine by one tick. Returns `false` if no state machine\n * is loaded, otherwise `true` (even if the machine is stopped or errored).\n * @returns {boolean}\n */\n sm_tick() {\n const ret = wasm.dotlottieplayerwasm_sm_tick(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * @returns {boolean}\n */\n autoplay() {\n const ret = wasm.dotlottieplayerwasm_autoplay(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * @returns {number}\n */\n duration() {\n const ret = wasm.dotlottieplayerwasm_duration(this.__wbg_ptr);\n return ret;\n }\n /**\n * @param {boolean} v\n */\n set_loop(v) {\n wasm.dotlottieplayerwasm_set_loop(this.__wbg_ptr, v);\n }\n /**\n * @param {Mode} mode\n */\n set_mode(mode) {\n wasm.dotlottieplayerwasm_set_mode(this.__wbg_ptr, mode);\n }\n /**\n * Start the state machine with an open-URL policy.\n * @param {boolean} require_user_interaction\n * @param {any[]} whitelist\n * @returns {boolean}\n */\n sm_start(require_user_interaction, whitelist) {\n const ptr0 = passArrayJsValueToWasm0(whitelist, wasm.__wbindgen_malloc_command_export);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.dotlottieplayerwasm_sm_start(this.__wbg_ptr, require_user_interaction, ptr0, len0);\n return ret !== 0;\n }\n /**\n * @returns {string | undefined}\n */\n theme_id() {\n const ret = wasm.dotlottieplayerwasm_theme_id(this.__wbg_ptr);\n let v1;\n if (ret[0] !== 0) {\n v1 = getStringFromWasm0(ret[0], ret[1]).slice();\n wasm.__wbindgen_free_command_export(ret[0], ret[1] * 1, 1);\n }\n return v1;\n }\n /**\n * @param {number} x\n * @param {number} y\n * @param {string} layer_name\n * @returns {boolean}\n */\n intersect(x, y, layer_name) {\n const ptr0 = passStringToWasm0(layer_name, wasm.__wbindgen_malloc_command_export, wasm.__wbindgen_realloc_command_export);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.dotlottieplayerwasm_intersect(this.__wbg_ptr, x, y, ptr0, len0);\n return ret !== 0;\n }\n /**\n * @returns {boolean}\n */\n is_loaded() {\n const ret = wasm.dotlottieplayerwasm_is_loaded(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * @returns {boolean}\n */\n is_paused() {\n const ret = wasm.dotlottieplayerwasm_is_paused(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * @param {string} name\n * @param {Uint8Array} data\n * @returns {boolean}\n */\n load_font(name, data) {\n const ptr0 = passStringToWasm0(name, wasm.__wbindgen_malloc_command_export, wasm.__wbindgen_realloc_command_export);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passArray8ToWasm0(data, wasm.__wbindgen_malloc_command_export);\n const len1 = WASM_VECTOR_LEN;\n const ret = wasm.dotlottieplayerwasm_load_font(this.__wbg_ptr, ptr0, len0, ptr1, len1);\n return ret !== 0;\n }\n /**\n * @param {number} no\n * @returns {boolean}\n */\n set_frame(no) {\n const ret = wasm.dotlottieplayerwasm_set_frame(this.__wbg_ptr, no);\n return ret !== 0;\n }\n /**\n * @param {number} speed\n */\n set_speed(speed) {\n wasm.dotlottieplayerwasm_set_speed(this.__wbg_ptr, speed);\n }\n /**\n * @param {string} id\n * @returns {boolean}\n */\n set_theme(id) {\n const ptr0 = passStringToWasm0(id, wasm.__wbindgen_malloc_command_export, wasm.__wbindgen_realloc_command_export);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.dotlottieplayerwasm_set_theme(this.__wbg_ptr, ptr0, len0);\n return ret !== 0;\n }\n /**\n * Get the current status of the state machine as a string.\n * @returns {string}\n */\n sm_status() {\n let deferred1_0;\n let deferred1_1;\n try {\n const ret = wasm.dotlottieplayerwasm_sm_status(this.__wbg_ptr);\n deferred1_0 = ret[0];\n deferred1_1 = ret[1];\n return getStringFromWasm0(ret[0], ret[1]);\n } finally {\n wasm.__wbindgen_free_command_export(deferred1_0, deferred1_1, 1);\n }\n }\n}\n\nasync function __wbg_load(module, imports) {\n if (typeof Response === 'function' && module instanceof Response) {\n if (typeof WebAssembly.instantiateStreaming === 'function') {\n try {\n return await WebAssembly.instantiateStreaming(module, imports);\n\n } catch (e) {\n if (module.headers.get('Content-Type') != 'application/wasm') {\n console.warn(\"`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n\", e);\n\n } else {\n throw e;\n }\n }\n }\n\n const bytes = await module.arrayBuffer();\n return await WebAssembly.instantiate(bytes, imports);\n\n } else {\n const instance = await WebAssembly.instantiate(module, imports);\n\n if (instance instanceof WebAssembly.Instance) {\n return { instance, module };\n\n } else {\n return instance;\n }\n }\n}\n\nfunction __wbg_get_imports() {\n const imports = {};\n imports.wbg = {};\n imports.wbg.__wbg_buffer_609cc3eee51ed158 = function(arg0) {\n const ret = arg0.buffer;\n return ret;\n };\n imports.wbg.__wbg_error_7534b8e9a36f1ab4 = function(arg0, arg1) {\n let deferred0_0;\n let deferred0_1;\n try {\n deferred0_0 = arg0;\n deferred0_1 = arg1;\n console.error(getStringFromWasm0(arg0, arg1));\n } finally {\n wasm.__wbindgen_free_command_export(deferred0_0, deferred0_1, 1);\n }\n };\n imports.wbg.__wbg_new_405e22f390576ce2 = function() {\n const ret = new Object();\n return ret;\n };\n imports.wbg.__wbg_new_78feb108b6472713 = function() {\n const ret = new Array();\n return ret;\n };\n imports.wbg.__wbg_new_8a6f238a6ece86ea = function() {\n const ret = new Error();\n return ret;\n };\n imports.wbg.__wbg_newwithbyteoffsetandlength_d97e637ebe145a9a = function(arg0, arg1, arg2) {\n const ret = new Uint8Array(arg0, arg1 >>> 0, arg2 >>> 0);\n return ret;\n };\n imports.wbg.__wbg_newwithlength_5a5efe313cfd59f1 = function(arg0) {\n const ret = new Float32Array(arg0 >>> 0);\n return ret;\n };\n imports.wbg.__wbg_now_807e54c39636c349 = function() {\n const ret = Date.now();\n return ret;\n };\n imports.wbg.__wbg_push_737cfc8c1432c2c6 = function(arg0, arg1) {\n const ret = arg0.push(arg1);\n return ret;\n };\n imports.wbg.__wbg_set_bb8cecf6a62b9f46 = function() { return handleError(function (arg0, arg1, arg2) {\n const ret = Reflect.set(arg0, arg1, arg2);\n return ret;\n }, arguments) };\n imports.wbg.__wbg_setindex_4e73afdcd9bb95cd = function(arg0, arg1, arg2) {\n arg0[arg1 >>> 0] = arg2;\n };\n imports.wbg.__wbg_stack_0ed75d68575b0f3c = function(arg0, arg1) {\n const ret = arg1.stack;\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc_command_export, wasm.__wbindgen_realloc_command_export);\n const len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n };\n imports.wbg.__wbindgen_init_externref_table = function() {\n const table = wasm.__wbindgen_export_3;\n const offset = table.grow(4);\n table.set(0, undefined);\n table.set(offset + 0, undefined);\n table.set(offset + 1, null);\n table.set(offset + 2, true);\n table.set(offset + 3, false);\n ;\n };\n imports.wbg.__wbindgen_memory = function() {\n const ret = wasm.memory;\n return ret;\n };\n imports.wbg.__wbindgen_number_new = function(arg0) {\n const ret = arg0;\n return ret;\n };\n imports.wbg.__wbindgen_string_get = function(arg0, arg1) {\n const obj = arg1;\n const ret = typeof(obj) === 'string' ? obj : undefined;\n var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc_command_export, wasm.__wbindgen_realloc_command_export);\n var len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n };\n imports.wbg.__wbindgen_string_new = function(arg0, arg1) {\n const ret = getStringFromWasm0(arg0, arg1);\n return ret;\n };\n imports.wbg.__wbindgen_throw = function(arg0, arg1) {\n throw new Error(getStringFromWasm0(arg0, arg1));\n };\n\n return imports;\n}\n\nfunction __wbg_init_memory(imports, memory) {\n\n}\n\nfunction __wbg_finalize_init(instance, module) {\n wasm = instance.exports;\n __wbg_init.__wbindgen_wasm_module = module;\n cachedDataViewMemory0 = null;\n cachedFloat32ArrayMemory0 = null;\n cachedUint8ArrayMemory0 = null;\n\n\n wasm.__wbindgen_start();\n return wasm;\n}\n\nfunction initSync(module) {\n if (wasm !== undefined) return wasm;\n\n\n if (typeof module !== 'undefined') {\n if (Object.getPrototypeOf(module) === Object.prototype) {\n ({module} = module)\n } else {\n console.warn('using deprecated parameters for `initSync()`; pass a single object instead')\n }\n }\n\n const imports = __wbg_get_imports();\n\n __wbg_init_memory(imports);\n\n if (!(module instanceof WebAssembly.Module)) {\n module = new WebAssembly.Module(module);\n }\n\n const instance = new WebAssembly.Instance(module, imports);\n\n return __wbg_finalize_init(instance, module);\n}\n\nasync function __wbg_init(module_or_path) {\n if (wasm !== undefined) return wasm;\n\n\n if (typeof module_or_path !== 'undefined') {\n if (Object.getPrototypeOf(module_or_path) === Object.prototype) {\n ({module_or_path} = module_or_path)\n } else {\n console.warn('using deprecated parameters for the initialization function; pass a single object instead')\n }\n }\n\n if (typeof module_or_path === 'undefined') {\n throw new Error('WASM module URL must be provided via DotLottieWasmLoader or setWasmUrl().');\n }\n const imports = __wbg_get_imports();\n\n if (typeof module_or_path === 'string' || (typeof Request === 'function' && module_or_path instanceof Request) || (typeof URL === 'function' && module_or_path instanceof URL)) {\n module_or_path = fetch(module_or_path);\n }\n\n __wbg_init_memory(imports);\n\n const { instance, module } = await __wbg_load(await module_or_path, imports);\n\n return __wbg_finalize_init(instance, module);\n}\n\nexport { initSync };\nexport default __wbg_init;\n","'use client';\n\nimport type { Config } from '@lottiefiles/dotlottie-web';\nimport { DotLottie } from '@lottiefiles/dotlottie-web';\nimport type { ReactNode } from 'react';\n\nimport type { BaseDotLottieProps } from './base-dotlottie-react';\nimport { BaseDotLottieReact } from './base-dotlottie-react';\n\nexport type DotLottieReactProps = Omit<BaseDotLottieProps<DotLottie>, 'createDotLottie'>;\n\nconst createDotLottie = (config: Config): DotLottie => new DotLottie(config);\n\nexport const DotLottieReact = (props: DotLottieReactProps): ReactNode => {\n return <BaseDotLottieReact {...props} createDotLottie={createDotLottie} />;\n};\n","'use client';\n\nimport type { Config } from '@lottiefiles/dotlottie-web';\nimport { DotLottieWorker } from '@lottiefiles/dotlottie-web';\nimport type { ReactNode } from 'react';\nimport type { BaseDotLottieProps } from './base-dotlottie-react';\nimport { BaseDotLottieReact } from './base-dotlottie-react';\n\nexport type DotLottieWorkerReactProps = Omit<BaseDotLottieProps<DotLottieWorker>, 'createDotLottie'>;\n\nconst createDotLottieWorker = (config: Config & { workerId?: string }): DotLottieWorker => new DotLottieWorker(config);\n\nexport const DotLottieWorkerReact = (props: DotLottieWorkerReactProps): ReactNode => {\n return <BaseDotLottieReact {...props} createDotLottie={createDotLottieWorker} />;\n};\n","'use client';\n\nimport { DotLottie, DotLottieWorker } from '@lottiefiles/dotlottie-web';\n\nexport type * from '@lottiefiles/dotlottie-web';\nexport * from './dotlottie';\nexport * from './dotlottie-worker';\n\nexport const setWasmUrl = (url: string): void => {\n DotLottieWorker.setWasmUrl(url);\n DotLottie.setWasmUrl(url);\n};\n","/**\n * Represents the different types of events that can be dispatched.\n */\nexport type EventType =\n | 'complete'\n | 'frame'\n | 'load'\n | 'loadError'\n | 'renderError'\n | 'loop'\n | 'pause'\n | 'play'\n | 'stop'\n | 'destroy'\n | 'freeze'\n | 'unfreeze'\n | 'render'\n | 'ready'\n | 'stateMachineStart'\n | 'stateMachineStop'\n | 'stateMachineTransition'\n | 'stateMachineStateEntered'\n | 'stateMachineStateExit'\n | 'stateMachineCustomEvent'\n | 'stateMachineError'\n | 'stateMachineBooleanInputValueChange'\n | 'stateMachineNumericInputValueChange'\n | 'stateMachineStringInputValueChange'\n | 'stateMachineInputFired'\n | 'stateMachineInternalMessage';\n\n/**\n * Maps an event type string to its respective event interface.\n */\ntype EventByType<T extends EventType> = Extract<Event, { type: T }>;\n\n/**\n * Base interface for all events.\n */\nexport interface BaseEvent {\n type: EventType;\n}\n\nexport interface RenderEvent extends BaseEvent {\n currentFrame: number;\n type: 'render';\n}\n\nexport interface FreezeEvent extends BaseEvent {\n type: 'freeze';\n}\n\nexport interface UnfreezeEvent extends BaseEvent {\n type: 'unfreeze';\n}\n\n/*\n * Event fired when a destroy action occurs.\n */\nexport interface DestroyEvent extends BaseEvent {\n type: 'destroy';\n}\n\n/**\n * Event fired when a loop action occurs.\n */\nexport interface LoopEvent extends BaseEvent {\n loopCount: number;\n type: 'loop';\n}\n\n/**\n * Event fired during frame changes.\n */\nexport interface FrameEvent extends BaseEvent {\n currentFrame: number;\n type: 'frame';\n}\n\n/**\n * Event fired when a load action occurs.\n */\nexport interface LoadEvent extends BaseEvent {\n type: 'load';\n}\n\n/**\n * Event fired when a loading error occurs.\n */\nexport interface LoadErrorEvent extends BaseEvent {\n error: Error;\n type: 'loadError';\n}\n\n/**\n * Event fired when a loading error occurs.\n */\nexport interface RenderErrorEvent extends BaseEvent {\n error: Error;\n type: 'renderError';\n}\n\n/**\n * Event fired when a completion action occurs.\n */\nexport interface CompleteEvent extends BaseEvent {\n type: 'complete';\n}\n\n/**\n * Event fired when a pause action occurs.\n */\nexport interface PauseEvent extends BaseEvent {\n type: 'pause';\n}\n\n/**\n * Event fired when a play action occurs.\n */\nexport interface PlayEvent extends BaseEvent {\n type: 'play';\n}\n\n/**\n * Event fired when a stop action occurs.\n */\nexport interface StopEvent extends BaseEvent {\n type: 'stop';\n}\n\n/**\n * Event fired when a WASM module is initialized and ready.\n */\nexport interface ReadyEvent extends BaseEvent {\n type: 'ready';\n}\n\nexport interface StateMachineStartEvent extends BaseEvent {\n type: 'stateMachineStart';\n}\n\nexport interface StateMachineStopEvent extends BaseEvent {\n type: 'stateMachineStop';\n}\n\nexport interface StateMachineTransitionEvent extends BaseEvent {\n fromState: string;\n toState: string;\n type: 'stateMachineTransition';\n}\n\nexport interface StateMachineStateEnteredEvent extends BaseEvent {\n state: string;\n type: 'stateMachineStateEntered';\n}\n\nexport interface StateMachineStateExitEvent extends BaseEvent {\n state: string;\n type: 'stateMachineStateExit';\n}\n\nexport interface StateMachineCustomEvent extends BaseEvent {\n eventName: string;\n type: 'stateMachineCustomEvent';\n}\n\nexport interface StateMachineErrorEvent extends BaseEvent {\n error: string;\n type: 'stateMachineError';\n}\n\nexport interface StateMachineBooleanInputValueChangeEvent extends BaseEvent {\n inputName: string;\n newValue: boolean;\n oldValue: boolean;\n type: 'stateMachineBooleanInputValueChange';\n}\n\nexport interface StateMachineNumericInputValueChangeEvent extends BaseEvent {\n inputName: string;\n newValue: number;\n oldValue: number;\n type: 'stateMachineNumericInputValueChange';\n}\n\nexport interface StateMachineStringInputValueChangeEvent extends BaseEvent {\n inputName: string;\n newValue: string;\n oldValue: string;\n type: 'stateMachineStringInputValueChange';\n}\n\nexport interface StateMachineInputFiredEvent extends BaseEvent {\n inputName: string;\n type: 'stateMachineInputFired';\n}\n\nexport interface StateMachineInternalMessage extends BaseEvent {\n message: string;\n type: 'stateMachineInternalMessage';\n}\n\n/**\n * Type representing all possible event types.\n */\nexport type Event =\n | LoopEvent\n | FrameEvent\n | LoadEvent\n | LoadErrorEvent\n | RenderErrorEvent\n | CompleteEvent\n | PauseEvent\n | PlayEvent\n | StopEvent\n | DestroyEvent\n | FreezeEvent\n | UnfreezeEvent\n | RenderEvent\n | ReadyEvent\n | StateMachineStartEvent\n | StateMachineStopEvent\n | StateMachineTransitionEvent\n | StateMachineStateEnteredEvent\n | StateMachineStateExitEvent\n | StateMachineCustomEvent\n | StateMachineErrorEvent\n | StateMachineBooleanInputValueChangeEvent\n | StateMachineNumericInputValueChangeEvent\n | StateMachineStringInputValueChangeEvent\n | StateMachineInputFiredEvent\n | StateMachineInternalMessage;\n\nexport type EventListener<T extends EventType> = (event: EventByType<T>) => void;\n\n/**\n * Manages registration and dispatching of event listeners.\n */\nexport class EventManager {\n private readonly _eventListeners: Map<EventType, Set<EventListener<EventType>>> = new Map();\n\n public addEventListener<T extends EventType>(type: T, listener: EventListener<T>): void {\n let listeners = this._eventListeners.get(type);\n\n if (!listeners) {\n listeners = new Set<EventListener<EventType>>();\n this._eventListeners.set(type, listeners);\n }\n\n listeners.add(listener as unknown as EventListener<EventType>);\n }\n\n public removeEventListener<T extends EventType>(type: T, listener?: EventListener<T>): void {\n const listeners = this._eventListeners.get(type);\n\n if (!listeners) return;\n\n if (listener) {\n listeners.delete(listener as unknown as EventListener<EventType>);\n\n if (listeners.size === 0) {\n this._eventListeners.delete(type);\n }\n } else {\n this._eventListeners.delete(type);\n }\n }\n\n public dispatch<T extends EventType>(event: EventByType<T>): void {\n const listeners = this._eventListeners.get(event.type);\n\n listeners?.forEach((listener) => listener(event));\n }\n\n public removeAllEventListeners(): void {\n this._eventListeners.clear();\n }\n}\n","import type { DotLottie } from './dotlottie';\nimport type { DotLottieWorker } from './worker/dotlottie';\n\n// eslint-disable-next-line @typescript-eslint/no-extraneous-class\nexport class OffscreenObserver {\n private static _observer: IntersectionObserver | null = null;\n\n private static readonly _observedCanvases = new Map<HTMLCanvasElement, DotLottie | DotLottieWorker>();\n\n private static _initializeObserver(): void {\n if (OffscreenObserver._observer) return;\n\n const intersectionObserverCallback = (entries: IntersectionObserverEntry[]): void => {\n entries.forEach((entry) => {\n const instance = OffscreenObserver._observedCanvases.get(entry.target as HTMLCanvasElement);\n\n if (instance) {\n if (entry.isIntersecting) {\n instance.unfreeze();\n } else {\n instance.freeze();\n }\n }\n });\n };\n\n OffscreenObserver._observer = new IntersectionObserver(intersectionObserverCallback, {\n threshold: 0,\n });\n }\n\n public static observe(canvas: HTMLCanvasElement, dotLottieInstance: DotLottie | DotLottieWorker): void {\n OffscreenObserver._initializeObserver();\n\n if (OffscreenObserver._observedCanvases.has(canvas)) return;\n\n OffscreenObserver._observedCanvases.set(canvas, dotLottieInstance);\n OffscreenObserver._observer?.observe(canvas);\n }\n\n public static unobserve(canvas: HTMLCanvasElement): void {\n OffscreenObserver._observer?.unobserve(canvas);\n OffscreenObserver._observedCanvases.delete(canvas);\n\n if (OffscreenObserver._observedCanvases.size === 0) {\n OffscreenObserver._observer?.disconnect();\n OffscreenObserver._observer = null;\n }\n }\n}\n","import type { DotLottie } from './dotlottie';\nimport type { DotLottieWorker } from './worker/dotlottie';\n\nexport const RESIZE_DEBOUNCE_TIME = 100;\n\n// eslint-disable-next-line @typescript-eslint/no-extraneous-class\nexport class CanvasResizeObserver {\n private static _observer: ResizeObserver | null = null;\n\n private static readonly _observedCanvases = new Map<HTMLCanvasElement, [DotLottie | DotLottieWorker, number]>();\n\n private static _initializeObserver(): void {\n if (CanvasResizeObserver._observer) return;\n\n const resizeHandler = (entries: ResizeObserverEntry[]): void => {\n entries.forEach((entry) => {\n const element = CanvasResizeObserver._observedCanvases.get(entry.target as HTMLCanvasElement);\n\n if (!element) return;\n\n const [dotLottieInstance, timeout] = element;\n\n clearTimeout(timeout);\n\n const newTimeout = setTimeout(() => {\n dotLottieInstance.resize();\n }, RESIZE_DEBOUNCE_TIME) as unknown as number;\n\n CanvasResizeObserver._observedCanvases.set(entry.target as HTMLCanvasElement, [dotLottieInstance, newTimeout]);\n });\n };\n\n CanvasResizeObserver._observer = new ResizeObserver(resizeHandler);\n }\n\n public static observe(canvas: HTMLCanvasElement, dotLottieInstance: DotLottie | DotLottieWorker): void {\n CanvasResizeObserver._initializeObserver();\n\n if (CanvasResizeObserver._observedCanvases.has(canvas)) return;\n\n CanvasResizeObserver._observedCanvases.set(canvas, [dotLottieInstance, 0]);\n CanvasResizeObserver._observer?.observe(canvas);\n }\n\n public static unobserve(canvas: HTMLCanvasElement): void {\n const element = CanvasResizeObserver._observedCanvases.get(canvas);\n\n if (element) {\n const timeoutId = element[1];\n\n if (timeoutId) clearTimeout(timeoutId);\n }\n\n CanvasResizeObserver._observer?.unobserve(canvas);\n CanvasResizeObserver._observedCanvases.delete(canvas);\n\n if (!CanvasResizeObserver._observedCanvases.size && CanvasResizeObserver._observer) {\n CanvasResizeObserver._observer.disconnect();\n CanvasResizeObserver._observer = null;\n }\n }\n}\n","import { DEFAULT_DPR_FACTOR, IS_BROWSER, LOTTIE_JSON_MANDATORY_FIELDS, ZIP_SIGNATURE } from './constants';\n\n/**\n * Validates if a string is a valid hex color in #RRGGBB or #RRGGBBAA format.\n * @param color - Color string to validate\n * @returns True if valid hex color format, false otherwise\n */\nexport function isHexColor(color: string): boolean {\n return /^#([\\da-f]{6}|[\\da-f]{8})$/iu.test(color);\n}\n\n/**\n * Converts a hex color string to an RGBA integer for WASM consumption.\n * Adds full opacity (alpha = 255, 0xFF in hex) if alpha channel is not specified.\n * @param colorHex - Hex color string (e.g., '#FFFFFF' or '#FFFFFFFF')\n * @returns RGBA value as a 32-bit integer, or 0 if invalid hex color\n */\nexport function hexStringToRGBAInt(colorHex: string): number {\n if (!isHexColor(colorHex)) {\n return 0;\n }\n\n let hex = colorHex.replace('#', '');\n\n // Add alpha if it's not included\n hex = hex.length === 6 ? `${hex}ff` : hex;\n\n return parseInt(hex, 16);\n}\n\n/**\n * Converts a hex color string to RGBA float components in [0, 1].\n * @param colorHex - Hex color string (e.g., '#FFFFFF' or '#RRGGBBAA')\n * @returns Tuple of [r, g, b, a] as floats in [0, 1], or [0, 0, 0, 0] if invalid\n */\nexport function hexStringToRGBAFloats(colorHex: string): [number, number, number, number] {\n if (!isHexColor(colorHex)) {\n return [0, 0, 0, 0];\n }\n\n let hex = colorHex.replace('#', '');\n\n hex = hex.length === 6 ? `${hex}ff` : hex;\n\n const r = parseInt(hex.slice(0, 2), 16) / 255;\n const g = parseInt(hex.slice(2, 4), 16) / 255;\n const b = parseInt(hex.slice(4, 6), 16) / 255;\n const a = parseInt(hex.slice(6, 8), 16) / 255;\n\n return [r, g, b, a];\n}\n\n/**\n * Detects if file data is a .lottie file by checking for ZIP signature.\n * dotLottie files are ZIP archives containing Lottie JSON and metadata.\n * @param fileData - Raw file data as ArrayBuffer\n * @returns True if data starts with ZIP signature, false otherwise\n */\nexport function isDotLottie(fileData: ArrayBuffer): boolean {\n if (fileData.byteLength < 4) {\n return false;\n }\n\n const fileSignature = new Uint8Array(fileData.slice(0, ZIP_SIGNATURE.byteLength));\n\n for (let i = 0; i < ZIP_SIGNATURE.length; i += 1) {\n if (ZIP_SIGNATURE[i] !== fileSignature[i]) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Returns whether the given object looks like a valid Lottie JSON structure.\n */\nexport function isLottieJSON(json: Record<string, unknown>): boolean {\n return LOTTIE_JSON_MANDATORY_FIELDS.every((field) => Object.hasOwn(json, field));\n}\n\n/**\n * Detects if data is a valid Lottie animation by checking for required JSON fields.\n * Accepts either a JSON string or a parsed object.\n * @param fileData - Lottie data as JSON string or parsed object\n * @returns True if data contains required Lottie fields, false otherwise\n */\nexport function isLottie(fileData: string | Record<string, unknown>): boolean {\n if (typeof fileData === 'string') {\n try {\n return isLottieJSON(JSON.parse(fileData));\n } catch (_e) {\n return false;\n }\n } else {\n return isLottieJSON(fileData);\n }\n}\n\n/**\n * Calculates the default device pixel ratio with a scaling factor.\n * Applies a factor to balance quality and performance on high-DPI displays.\n * @returns Adjusted device pixel ratio value\n */\nexport function getDefaultDPR(): number {\n const dpr = IS_BROWSER ? window.devicePixelRatio : 1;\n\n return 1 + (dpr - 1) * DEFAULT_DPR_FACTOR;\n}\n\n/**\n * Checks if an HTML element is currently visible within the browser viewport.\n * Used to determine when to freeze/unfreeze rendering for performance optimization.\n * @param element - HTMLElement to check visibility for\n * @returns True if element is at least partially visible in viewport, false otherwise\n */\nexport function isElementInViewport(element: HTMLElement): boolean {\n const rect = element.getBoundingClientRect();\n const viewportHeight = window.innerHeight || document.documentElement.clientHeight;\n const viewportWidth = window.innerWidth || document.documentElement.clientWidth;\n\n return !(rect.bottom < 0 || rect.top > viewportHeight || rect.right < 0 || rect.left > viewportWidth);\n}\n\n/**\n * Calculate pointer position relative to the canvas coordinate system\n * @param event - The mouse or pointer event (target should be the canvas element)\n * @returns The calculated position or null if calculation fails or target is not a valid canvas\n */\nexport function getPointerPosition(event: MouseEvent | PointerEvent): { x: number; y: number } | null {\n const canvas = event.target;\n\n if (canvas instanceof HTMLCanvasElement) {\n const rect = canvas.getBoundingClientRect();\n\n if (rect.width === 0 || rect.height === 0 || canvas.width === 0 || canvas.height === 0) {\n return null;\n }\n\n const scaleX = canvas.width / rect.width;\n const scaleY = canvas.height / rect.height;\n\n const x = (event.clientX - rect.left) * scaleX;\n const y = (event.clientY - rect.top) * scaleY;\n\n if (!Number.isFinite(x) || !Number.isFinite(y) || Number.isNaN(x) || Number.isNaN(y)) {\n return null;\n }\n\n return { x, y };\n }\n\n // Return null if target is not an HTMLCanvasElement or calculation fails\n return null;\n}\n\nexport function handleOpenUrl(message: string): void {\n const content = message.replace('OpenUrl: ', '');\n\n const targetSeparatorIndex = content.indexOf(' | Target: ');\n let urlToOpen: string;\n let target: string;\n\n if (targetSeparatorIndex === -1) {\n // Format: \"OpenUrl: {url}\"\n urlToOpen = content;\n target = '_blank';\n } else {\n // Format: \"OpenUrl: {url} | Target: {target}\"\n urlToOpen = content.substring(0, targetSeparatorIndex);\n target = content.substring(targetSeparatorIndex + ' | Target: '.length);\n }\n\n window.open(urlToOpen, target);\n}\n","type WasmInitFn = (options: { module_or_path: string }) => Promise<unknown>;\n\nexport function createWasmLoader(initFn: WasmInitFn, primaryUrl: string, backupUrl: string) {\n let initPromise: Promise<void> | null = null;\n let wasmUrl = primaryUrl;\n\n return {\n load(): Promise<void> {\n if (!initPromise) {\n initPromise = initFn({ module_or_path: wasmUrl })\n .then(() => undefined)\n .catch(async (initialError: unknown): Promise<void> => {\n console.warn(`Primary WASM load failed from ${wasmUrl}: ${(initialError as Error).message}`);\n console.warn(`Attempting to load WASM from backup URL: ${backupUrl}`);\n\n try {\n await initFn({ module_or_path: backupUrl });\n } catch (backupError) {\n console.error(`Primary WASM URL failed: ${(initialError as Error).message}`);\n console.error(`Backup WASM URL failed: ${(backupError as Error).message}`);\n initPromise = null;\n throw new Error('WASM loading failed from all sources.');\n }\n });\n }\n\n return initPromise;\n },\n\n setWasmUrl(url: string): void {\n if (url === wasmUrl) return;\n\n wasmUrl = url;\n initPromise = null;\n },\n };\n}\n","/* eslint-disable no-warning-comments */\nimport { AnimationFrameManager } from './animation-frame-manager';\nimport { BYTES_PER_PIXEL, IS_BROWSER, PACKAGE_NAME, PACKAGE_VERSION } from './constants';\nimport init, { Mode as CoreMode, DotLottiePlayerWasm, register_font } from './core/dotlottie-player';\nimport type { EventListener, EventType } from './event-manager';\nimport { EventManager } from './event-manager';\nimport { OffscreenObserver } from './offscreen-observer';\nimport { CanvasResizeObserver } from './resize-observer';\nimport type {\n ColorSlotValue,\n Config,\n Data,\n Fit,\n GradientSlotValue,\n Layout,\n Manifest,\n Marker,\n Mode,\n RenderConfig,\n RenderSurface,\n ScalarSlotValue,\n SlotType,\n StateMachineConfig,\n TextSlotValue,\n Theme,\n Transform,\n VectorSlotValue,\n} from './types';\nimport {\n getDefaultDPR,\n getPointerPosition,\n handleOpenUrl,\n hexStringToRGBAFloats,\n isDotLottie,\n isElementInViewport,\n isLottie,\n} from './utils';\nimport { createWasmLoader } from './wasm-loader';\n\nconst dotLottieWasmLoader = createWasmLoader(\n init,\n `https://cdn.jsdelivr.net/npm/${PACKAGE_NAME}@${PACKAGE_VERSION}/dist/dotlottie-player.wasm`,\n `https://unpkg.com/${PACKAGE_NAME}@${PACKAGE_VERSION}/dist/dotlottie-player.wasm`,\n);\n\n// ── Mode conversion helpers ──────────────────────────────────────────────────\n\nconst modeToCore = (mode: Mode): CoreMode => {\n switch (mode) {\n case 'reverse':\n return CoreMode.Reverse;\n\n case 'bounce':\n return CoreMode.Bounce;\n\n case 'reverse-bounce':\n return CoreMode.ReverseBounce;\n\n default:\n return CoreMode.Forward;\n }\n};\n\nconst coreToMode = (mode: CoreMode): Mode => {\n switch (mode) {\n case CoreMode.Reverse:\n return 'reverse';\n\n case CoreMode.Bounce:\n return 'bounce';\n\n case CoreMode.ReverseBounce:\n return 'reverse-bounce';\n\n default:\n return 'forward';\n }\n};\n\n// ── Fit string helpers ───────────────────────────────────────────────────────\n\nconst fitToString = (fit: string): Fit => {\n switch (fit) {\n case 'contain':\n return 'contain';\n\n case 'cover':\n return 'cover';\n\n case 'fill':\n return 'fill';\n\n case 'fit-height':\n return 'fit-height';\n\n case 'fit-width':\n return 'fit-width';\n\n case 'none':\n return 'none';\n\n default:\n return 'contain';\n }\n};\n\nexport class DotLottie {\n protected _canvas: HTMLCanvasElement | OffscreenCanvas | RenderSurface | null = null;\n\n private _pendingLoad: { data?: Data; src?: string } | null = null;\n\n protected _context: CanvasRenderingContext2D | OffscreenCanvasRenderingContext2D | null = null;\n\n private readonly _eventManager: EventManager;\n\n private _animationFrameId: number | null = null;\n\n private readonly _frameManager: AnimationFrameManager;\n\n protected _dotLottieCore: DotLottiePlayerWasm | null = null;\n\n private _stateMachineId: string = '';\n\n private _stateMachineConfig: StateMachineConfig | null = null;\n\n private _isStateMachineRunning: boolean = false;\n\n protected _renderConfig: RenderConfig = {};\n\n private _isFrozen: boolean = false;\n\n private _backgroundColor: string | null = null;\n\n // Bound event listeners for state machine\n private _boundOnClick: ((event: MouseEvent) => void) | null = null;\n\n private _boundOnPointerUp: ((event: PointerEvent) => void) | null = null;\n\n private _boundOnPointerDown: ((event: PointerEvent) => void) | null = null;\n\n private _boundOnPointerMove: ((event: PointerEvent) => void) | null = null;\n\n private _boundOnPointerEnter: ((event: PointerEvent) => void) | null = null;\n\n private _boundOnPointerLeave: ((event: PointerEvent) => void) | null = null;\n\n private _bufferMismatchCount = 0;\n\n private _lastExpectedBufferSize = 0;\n\n private _marker: string = '';\n\n /**\n * Creates a new DotLottie player instance for rendering Lottie animations.\n * Initializes the WASM module, event system, and loads animation if src or data is provided in config.\n * @param config - Configuration object specifying animation source, playback settings, and rendering options\n */\n public constructor(config: Config) {\n this._canvas = config.canvas ?? null;\n\n this._eventManager = new EventManager();\n this._frameManager = new AnimationFrameManager();\n this._renderConfig = {\n ...config.renderConfig,\n devicePixelRatio: config.renderConfig?.devicePixelRatio || getDefaultDPR(),\n // freezeOnOffscreen is true by default to prevent unnecessary rendering when the canvas is offscreen\n freezeOnOffscreen: config.renderConfig?.freezeOnOffscreen ?? true,\n };\n\n this._initWasm()\n .then(() => {\n this._dotLottieCore = this._createCore();\n\n // Apply config via individual setters\n this._dotLottieCore.set_autoplay(config.autoplay ?? false);\n this._dotLottieCore.set_loop(config.loop ?? false);\n this._dotLottieCore.set_loop_count(config.loopCount ?? 0);\n this._dotLottieCore.set_mode(modeToCore(config.mode ?? 'forward'));\n this._dotLottieCore.set_speed(config.speed ?? 1);\n this._dotLottieCore.set_use_frame_interpolation(config.useFrameInterpolation ?? true);\n if (config.segment && config.segment.length === 2) {\n this._dotLottieCore.set_segment(config.segment[0] as number, config.segment[1] as number);\n }\n this._marker = config.marker ?? '';\n if (this._marker) {\n this._dotLottieCore.set_marker(this._marker);\n }\n this._dotLottieCore.set_layout(\n config.layout?.fit ?? 'contain',\n config.layout?.align?.[0] ?? 0.5,\n config.layout?.align?.[1] ?? 0.5,\n );\n\n this._stateMachineId = config.stateMachineId ?? '';\n this._stateMachineConfig = config.stateMachineConfig ?? null;\n\n this._onCoreCreated();\n\n this._eventManager.dispatch({ type: 'ready' });\n\n if (config.data) {\n if (this._canvas) {\n this._loadFromData(config.data);\n } else {\n this._pendingLoad = { data: config.data };\n }\n } else if (config.src) {\n if (this._canvas) {\n this._loadFromSrc(config.src);\n } else {\n this._pendingLoad = { src: config.src };\n }\n }\n\n if (config.backgroundColor) {\n this.setBackgroundColor(config.backgroundColor);\n }\n })\n .catch((error) => {\n console.error('[dotlottie-web] Initialization failed:', error);\n this._eventManager.dispatch({\n type: 'loadError',\n error: new Error(`Failed to load wasm module: ${error}`),\n });\n });\n }\n\n // ── Override hooks for subclasses ─────────────────────────────────────\n\n protected async _initWasm(): Promise<void> {\n return dotLottieWasmLoader.load();\n }\n\n protected _createCore(): DotLottiePlayerWasm {\n return new DotLottiePlayerWasm();\n }\n\n protected _onCoreCreated(): void {\n // No-op for software renderer. GPU renderers override to set GL/GPU context.\n }\n\n protected _setupTarget(width: number, height: number): boolean {\n if (!this._dotLottieCore) return false;\n\n return this._dotLottieCore.setup_sw_target(width, height);\n }\n\n // ── Event draining ─────────────────────────────────────────────────────\n\n private _drainPlayerEvents(): void {\n if (!this._dotLottieCore) return;\n\n let evt: unknown;\n\n while ((evt = this._dotLottieCore.poll_event()) !== null && evt !== undefined) {\n const event = evt as { type: string; frameNo?: number; loopCount?: number };\n\n switch (event.type) {\n case 'Load':\n setTimeout(() => this._eventManager.dispatch({ type: 'load' }), 0);\n break;\n\n case 'LoadError':\n setTimeout(() => this._eventManager.dispatch({ type: 'loadError', error: new Error('failed to load') }), 0);\n break;\n\n case 'Play':\n setTimeout(() => this._eventManager.dispatch({ type: 'play' }), 0);\n break;\n\n case 'Pause':\n setTimeout(() => this._eventManager.dispatch({ type: 'pause' }), 0);\n break;\n\n case 'Stop':\n setTimeout(() => this._eventManager.dispatch({ type: 'stop' }), 0);\n break;\n\n case 'Frame':\n setTimeout(() => this._eventManager.dispatch({ type: 'frame', currentFrame: event.frameNo ?? 0 }), 0);\n break;\n\n case 'Render':\n setTimeout(() => this._eventManager.dispatch({ type: 'render', currentFrame: event.frameNo ?? 0 }), 0);\n break;\n\n case 'Loop':\n setTimeout(() => this._eventManager.dispatch({ type: 'loop', loopCount: event.loopCount ?? 0 }), 0);\n break;\n\n case 'Complete':\n setTimeout(() => this._eventManager.dispatch({ type: 'complete' }), 0);\n break;\n\n default:\n break;\n }\n }\n }\n\n private _drainSmEvents(): void {\n if (!this._dotLottieCore) return;\n\n // Drain state machine events\n let evt: unknown;\n\n while ((evt = this._dotLottieCore.sm_poll_event()) !== null && evt !== undefined) {\n const event = evt as {\n type: string;\n previousState?: string;\n newState?: string;\n state?: string;\n message?: string;\n name?: string;\n oldValue?: unknown;\n newValue?: unknown;\n };\n\n switch (event.type) {\n case 'Start':\n setTimeout(() => {\n this._isStateMachineRunning = true;\n this._eventManager.dispatch({ type: 'stateMachineStart' });\n this._startAnimationLoop();\n }, 0);\n break;\n\n case 'Stop':\n setTimeout(() => {\n this._isStateMachineRunning = false;\n this._eventManager.dispatch({ type: 'stateMachineStop' });\n if (!this._dotLottieCore?.is_playing()) {\n this._stopAnimationLoop();\n }\n }, 0);\n break;\n\n case 'CustomEvent':\n this._eventManager.dispatch({ type: 'stateMachineCustomEvent', eventName: event.message ?? '' });\n break;\n\n case 'BooleanInputChange':\n this._eventManager.dispatch({\n type: 'stateMachineBooleanInputValueChange',\n inputName: event.name ?? '',\n newValue: event.newValue as boolean,\n oldValue: event.oldValue as boolean,\n });\n break;\n\n case 'NumericInputChange':\n this._eventManager.dispatch({\n type: 'stateMachineNumericInputValueChange',\n inputName: event.name ?? '',\n newValue: event.newValue as number,\n oldValue: event.oldValue as number,\n });\n break;\n\n case 'StringInputChange':\n this._eventManager.dispatch({\n type: 'stateMachineStringInputValueChange',\n inputName: event.name ?? '',\n newValue: event.newValue as string,\n oldValue: event.oldValue as string,\n });\n break;\n\n case 'InputFired':\n this._eventManager.dispatch({ type: 'stateMachineInputFired', inputName: event.name ?? '' });\n break;\n\n case 'Transition':\n this._eventManager.dispatch({\n type: 'stateMachineTransition',\n fromState: event.previousState ?? '',\n toState: event.newState ?? '',\n });\n break;\n\n case 'StateEntered':\n this._eventManager.dispatch({ type: 'stateMachineStateEntered', state: event.state ?? '' });\n break;\n\n case 'StateExit':\n this._eventManager.dispatch({ type: 'stateMachineStateExit', state: event.state ?? '' });\n break;\n\n case 'Error':\n this._eventManager.dispatch({ type: 'stateMachineError', error: event.message ?? '' });\n break;\n\n default:\n break;\n }\n }\n\n // Drain internal events\n let internal: unknown;\n\n while ((internal = this._dotLottieCore.sm_poll_internal_event()) !== null && internal !== undefined) {\n const internalEvt = internal as { type: string; message?: string };\n\n if (internalEvt.type === 'Message') {\n const message = internalEvt.message ?? '';\n\n if (IS_BROWSER && message.startsWith('OpenUrl: ')) {\n handleOpenUrl(message);\n } else {\n this._eventManager.dispatch({ type: 'stateMachineInternalMessage', message });\n }\n }\n }\n }\n\n // ── Private methods ────────────────────────────────────────────────────\n\n private _dispatchError(message: string): void {\n console.error(message);\n this._eventManager.dispatch({ type: 'loadError', error: new Error(message) });\n }\n\n private async _fetchData(src: string): Promise<string | ArrayBuffer> {\n const response = await fetch(src);\n\n if (!response.ok) {\n throw new Error(`Failed to fetch animation data from URL: ${src}. ${response.status}: ${response.statusText}`);\n }\n\n const data = await response.arrayBuffer();\n\n if (isDotLottie(data)) {\n return data;\n }\n\n // eslint-disable-next-line node/no-unsupported-features/node-builtins\n return new TextDecoder().decode(data);\n }\n\n private _loadFromData(data: Data): void {\n if (this._dotLottieCore === null) return;\n\n if (!this._canvas) {\n console.warn('[dotlottie-web] Cannot load animation without canvas. Call setCanvas() first.');\n\n return;\n }\n\n const width = this._canvas.width;\n const height = this._canvas.height;\n\n this._setupTarget(width, height);\n\n let loaded = false;\n\n if (typeof data === 'string') {\n if (!isLottie(data)) {\n this._dispatchError(\n 'Invalid Lottie JSON string: The provided string does not conform to the Lottie JSON format.',\n );\n\n return;\n }\n loaded = this._dotLottieCore.load_animation(data);\n } else if (data instanceof ArrayBuffer) {\n if (!isDotLottie(data)) {\n this._dispatchError(\n 'Invalid dotLottie ArrayBuffer: The provided ArrayBuffer does not conform to the dotLottie format.',\n );\n\n return;\n }\n loaded = this._dotLottieCore.load_dotlottie_data(new Uint8Array(data));\n } else if (typeof data === 'object') {\n if (!isLottie(data as Record<string, unknown>)) {\n this._dispatchError(\n 'Invalid Lottie JSON object: The provided object does not conform to the Lottie JSON format.',\n );\n\n return;\n }\n loaded = this._dotLottieCore.load_animation(JSON.stringify(data));\n } else {\n this._dispatchError(\n `Unsupported data type for animation data. Expected:\n - string (Lottie JSON),\n - ArrayBuffer (dotLottie),\n - object (Lottie JSON).\n Received: ${typeof data}`,\n );\n\n return;\n }\n\n if (loaded) {\n if (this._renderConfig.quality !== undefined) {\n this._dotLottieCore.set_quality(this._renderConfig.quality);\n }\n\n if (IS_BROWSER) {\n this.resize();\n }\n\n // Drain any events produced by loading (Load/LoadError)\n this._drainPlayerEvents();\n\n // Re-apply marker after load since markers are only available after animation data is parsed\n if (this._marker) {\n this._dotLottieCore.set_marker(this._marker);\n }\n\n setTimeout(() => {\n // FIXME: frame is not triggered from the dotlottie-rs core\n this._eventManager.dispatch({\n type: 'frame',\n currentFrame: this.currentFrame,\n });\n }, 0);\n\n this._dotLottieCore.render();\n this._drainPlayerEvents();\n\n this._draw();\n\n if (this._stateMachineId) {\n const smLoaded = this.stateMachineLoad(this._stateMachineId);\n\n if (smLoaded) {\n const smStarted = this.stateMachineStart();\n\n if (smStarted) {\n this._startAnimationLoop();\n }\n }\n } else if (this._dotLottieCore.is_playing()) {\n this._startAnimationLoop();\n }\n\n if (IS_BROWSER && this._canvas instanceof HTMLCanvasElement) {\n if (this._renderConfig.freezeOnOffscreen) {\n OffscreenObserver.observe(this._canvas, this);\n\n // Check if canvas is initially offscreen and freeze if necessary\n if (!isElementInViewport(this._canvas)) {\n this.freeze();\n }\n }\n\n if (this._renderConfig.autoResize) {\n CanvasResizeObserver.observe(this._canvas, this);\n }\n }\n } else {\n // Drain any LoadError events the core may have queued\n this._drainPlayerEvents();\n }\n }\n\n private _loadFromSrc(src: string): void {\n this._fetchData(src)\n .then((data) => this._loadFromData(data))\n .catch((error) => this._dispatchError(`Failed to load animation data from URL: ${src}. ${error}`));\n }\n\n /**\n * Gets the raw pixel buffer containing the rendered animation frame.\n * Returns RGBA pixel data as a Uint8Array for advanced image processing or custom rendering.\n */\n public get buffer(): Uint8Array | null {\n if (!this._dotLottieCore) return null;\n\n return this._dotLottieCore.get_pixel_buffer();\n }\n\n /**\n * Gets the ID of the currently active animation from a multi-animation dotLottie file.\n * Returns undefined if no specific animation is active or for single-animation files.\n */\n public get activeAnimationId(): string | undefined {\n return this._dotLottieCore?.animation_id() ?? undefined;\n }\n\n /**\n * Gets the ID of the currently active theme applied to the animation.\n * Returns undefined if no theme is active. Themes modify colors and visual properties.\n */\n public get activeThemeId(): string | undefined {\n return this._dotLottieCore?.theme_id() ?? undefined;\n }\n\n /**\n * Gets the current layout configuration for positioning and scaling the animation.\n * Includes fit mode (contain, cover, fill, etc.) and alignment [x, y] values (0-1 range).\n */\n public get layout(): Layout | undefined {\n if (!this._dotLottieCore) return undefined;\n\n return {\n align: [this._dotLottieCore.layout_align_x(), this._dotLottieCore.layout_align_y()],\n fit: fitToString(this._dotLottieCore.layout_fit()),\n };\n }\n\n /**\n * Gets the currently active marker name if a marker-based segment is set.\n * Returns undefined if no marker is active. Use setMarker() to activate a named segment.\n */\n public get marker(): string | undefined {\n return this._dotLottieCore?.current_marker() ?? '';\n }\n\n /**\n * Gets the animation manifest containing metadata about animations, themes, and states.\n * Returns null if no manifest is available or if the loaded animation doesn't include one.\n */\n public get manifest(): Manifest | null {\n try {\n const manifest = this._dotLottieCore?.manifest_string();\n\n if (this._dotLottieCore === null || !manifest) return null;\n\n const manifestJson = JSON.parse(manifest);\n\n if (Object.keys(manifestJson).length === 0) return null;\n\n return manifestJson as Manifest;\n } catch (_err) {\n return null;\n }\n }\n\n /**\n * Gets the current rendering configuration.\n * Includes settings like devicePixelRatio, autoResize, and freezeOnOffscreen.\n */\n public get renderConfig(): RenderConfig {\n return this._renderConfig;\n }\n\n /**\n * Gets the currently active playback segment as [startFrame, endFrame].\n * If no segment is set, returns undefined and the full animation plays.\n */\n public get segment(): [number, number] | undefined {\n if (!this._dotLottieCore || !this._dotLottieCore.has_segment()) return undefined;\n\n return [this._dotLottieCore.segment_start(), this._dotLottieCore.segment_end()];\n }\n\n /**\n * Gets the current loop configuration.\n * Returns true if the animation is set to loop continuously.\n */\n public get loop(): boolean {\n return this._dotLottieCore?.loop_animation() ?? false;\n }\n\n /**\n * Gets the current playback mode.\n * Determines playback direction: 'forward', 'reverse', 'bounce' (forward then reverse), or 'reverse-bounce'.\n */\n public get mode(): Mode {\n if (!this._dotLottieCore) return 'forward';\n\n return coreToMode(this._dotLottieCore.mode());\n }\n\n /**\n * Indicates whether rendering is currently frozen.\n * True when freeze() has been called and the rendering loop is paused to save resources.\n */\n public get isFrozen(): boolean {\n return this._isFrozen;\n }\n\n /**\n * Indicates whether a state machine is currently active and running.\n * True after stateMachineStart() is called and until stateMachineStop() is called.\n */\n public get isStateMachineRunning(): boolean {\n return this._isStateMachineRunning;\n }\n\n /**\n * Gets the current background color.\n * Returns the background color as a string (e.g., '#FFFFFF' or 'transparent').\n */\n public get backgroundColor(): string {\n return this._backgroundColor ?? '';\n }\n\n /**\n * Gets the autoplay configuration.\n * Returns true if the animation is configured to start playing automatically when loaded.\n */\n public get autoplay(): boolean {\n return this._dotLottieCore?.autoplay() ?? false;\n }\n\n /**\n * Gets the frame interpolation setting.\n * Returns true if frame interpolation is enabled for smoother animation playback.\n */\n public get useFrameInterpolation(): boolean {\n return this._dotLottieCore?.use_frame_interpolation() ?? false;\n }\n\n /**\n * Gets the current playback speed.\n * Returns the speed multiplier (1 = normal speed, 2 = double speed, 0.5 = half speed).\n */\n public get speed(): number {\n return this._dotLottieCore?.speed() ?? 0;\n }\n\n /**\n * Indicates whether the WASM module and core player have been initialized.\n * Check this before performing operations that require the player to be ready.\n */\n public get isReady(): boolean {\n return this._dotLottieCore !== null;\n }\n\n /**\n * Indicates whether an animation has been successfully loaded and is ready for playback.\n * Check this before calling play() or other playback methods to ensure the animation is ready.\n */\n public get isLoaded(): boolean {\n return this._dotLottieCore?.is_loaded() ?? false;\n }\n\n /**\n * Indicates whether the animation is currently playing.\n * True when animation is actively playing, false when paused, stopped, or not started.\n */\n public get isPlaying(): boolean {\n return this._dotLottieCore?.is_playing() ?? false;\n }\n\n /**\n * Indicates whether the animation is currently paused.\n * True when pause() has been called and animation is not playing or stopped.\n */\n public get isPaused(): boolean {\n return this._dotLottieCore?.is_paused() ?? false;\n }\n\n /**\n * Indicates whether the animation is currently stopped.\n * True when stop() has been called or animation hasn't started yet.\n */\n public get isStopped(): boolean {\n return this._dotLottieCore?.is_stopped() ?? false;\n }\n\n /**\n * Gets the current frame number of the animation.\n * Useful for tracking playback position or implementing custom frame displays. Rounded to 2 decimal places.\n */\n public get currentFrame(): number {\n if (!this._dotLottieCore) return 0;\n\n return Math.round(this._dotLottieCore.current_frame() * 100) / 100;\n }\n\n /**\n * Gets the number of times the animation has completed a loop during the current playback.\n * Increments each time the animation completes one full cycle.\n */\n public get loopCount(): number {\n return this._dotLottieCore?.current_loop_count() ?? 0;\n }\n\n /**\n * Gets the total number of frames in the animation.\n * Use with currentFrame to calculate playback progress as a percentage.\n */\n public get totalFrames(): number {\n return this._dotLottieCore?.total_frames() ?? 0;\n }\n\n /**\n * Gets the total duration of the animation in seconds.\n * Represents the time to play from the first frame to the last at normal speed (speed = 1).\n */\n public get duration(): number {\n return this._dotLottieCore?.duration() ?? 0;\n }\n\n /**\n * Gets the duration of the currently active segment in seconds.\n * If no segment is set, returns the full animation duration.\n */\n public get segmentDuration(): number {\n return this._dotLottieCore?.segment_duration() ?? 0;\n }\n\n /**\n * Gets the canvas element used for rendering the animation.\n * Returns the HTMLCanvasElement, OffscreenCanvas, or RenderSurface set during initialization.\n */\n public get canvas(): HTMLCanvasElement | OffscreenCanvas | RenderSurface | null {\n return this._canvas;\n }\n\n /**\n * Dynamically loads a new animation, replacing the current one if any.\n * Stops current playback, cleans up resources, and loads from the provided src or data.\n * @param config - Configuration for the new animation (all Config properties except canvas)\n */\n public load(config: Omit<Config, 'canvas'>): void {\n if (this._dotLottieCore === null) return;\n\n this._stopAnimationLoop();\n\n this._cleanupCanvas();\n\n this._isFrozen = false;\n\n // Apply config via individual setters\n this._dotLottieCore.set_autoplay(config.autoplay ?? false);\n this._dotLottieCore.set_loop(config.loop ?? false);\n this._dotLottieCore.set_loop_count(config.loopCount ?? 0);\n this._dotLottieCore.set_mode(modeToCore(config.mode ?? 'forward'));\n this._dotLottieCore.set_speed(config.speed ?? 1);\n this._dotLottieCore.set_use_frame_interpolation(config.useFrameInterpolation ?? true);\n if (config.segment && config.segment.length === 2) {\n this._dotLottieCore.set_segment(config.segment[0] as number, config.segment[1] as number);\n } else {\n this._dotLottieCore.clear_segment();\n }\n this._marker = config.marker ?? '';\n if (this._marker) {\n this._dotLottieCore.set_marker(this._marker);\n } else {\n this._dotLottieCore.clear_marker();\n }\n this._dotLottieCore.set_layout(\n config.layout?.fit ?? 'contain',\n config.layout?.align?.[0] ?? 0.5,\n config.layout?.align?.[1] ?? 0.5,\n );\n\n if (config.data) {\n if (this._canvas) {\n this._loadFromData(config.data);\n } else {\n this._pendingLoad = { data: config.data };\n }\n } else if (config.src) {\n if (this._canvas) {\n this._loadFromSrc(config.src);\n } else {\n this._pendingLoad = { src: config.src };\n }\n }\n\n if (config.backgroundColor) {\n this.setBackgroundColor(config.backgroundColor);\n }\n }\n\n protected _draw(): void {\n if (this._dotLottieCore === null || this._canvas === null) return;\n\n // Only try to get context if canvas has getContext method and no context exists yet\n if (\n !this._context &&\n 'getContext' in this._canvas &&\n typeof this._canvas.getContext === 'function' &&\n ((typeof HTMLCanvasElement !== 'undefined' && this._canvas instanceof HTMLCanvasElement) ||\n (typeof OffscreenCanvas !== 'undefined' && this._canvas instanceof OffscreenCanvas))\n ) {\n this._context = this._canvas.getContext('2d') as\n | CanvasRenderingContext2D\n | OffscreenCanvasRenderingContext2D\n | null;\n }\n\n // Only process visual output if we have a canvas with a valid context\n if (this._context) {\n const buffer = this._dotLottieCore.get_pixel_buffer();\n\n const expectedLength = this._canvas.width * this._canvas.height * BYTES_PER_PIXEL;\n\n /*\n frame buffer size mismatch can occur temporarily during resize operations when the WASM buffer allocation hasn't completed yet\n */\n if (buffer.byteLength !== expectedLength) {\n if (this._lastExpectedBufferSize === expectedLength) {\n this._bufferMismatchCount += 1;\n } else {\n this._bufferMismatchCount = 1;\n this._lastExpectedBufferSize = expectedLength;\n }\n\n if (this._bufferMismatchCount === 10) {\n console.warn(\n `[dotlottie-web] Persistent buffer size mismatch detected. ` +\n `Expected ${expectedLength} bytes for canvas ${this._canvas.width}x${this._canvas.height}, ` +\n `but got ${buffer.byteLength} bytes. ` +\n `This may indicate a WASM memory allocation issue or invalid canvas dimensions.`,\n );\n }\n\n return;\n }\n\n this._bufferMismatchCount = 0;\n this._lastExpectedBufferSize = expectedLength;\n\n let imageData = null;\n\n // get_pixel_buffer() returns a Uint8Array view into WASM memory\n const clampedBuffer = new Uint8ClampedArray(buffer.buffer as ArrayBuffer, buffer.byteOffset, buffer.byteLength);\n\n /*\n In Node.js, the ImageData constructor is not available.\n You can use createImageData function in the canvas context to create ImageData object.\n */\n if (typeof ImageData === 'undefined') {\n imageData = this._context.createImageData(this._canvas.width, this._canvas.height);\n imageData.data.set(clampedBuffer);\n } else {\n imageData = new ImageData(clampedBuffer, this._canvas.width, this._canvas.height);\n }\n\n this._context.putImageData(imageData, 0, 0);\n }\n }\n\n private _cleanupCanvas(): void {\n if (this._canvas && IS_BROWSER && this._canvas instanceof HTMLCanvasElement) {\n OffscreenObserver.unobserve(this._canvas);\n CanvasResizeObserver.unobserve(this._canvas);\n this._cleanupStateMachineListeners();\n }\n }\n\n private _initializeCanvas(): void {\n this._setupRendererOnCanvas();\n\n if (this._canvas && IS_BROWSER && this._canvas instanceof HTMLCanvasElement && this.isLoaded) {\n if (this._renderConfig.freezeOnOffscreen) {\n OffscreenObserver.observe(this._canvas, this);\n\n if (!isElementInViewport(this._canvas)) {\n this.freeze();\n }\n }\n\n if (this._renderConfig.autoResize) {\n CanvasResizeObserver.observe(this._canvas, this);\n }\n\n if (this._isStateMachineRunning) {\n this._setupStateMachineListeners();\n }\n }\n\n if (this._canvas && this._dotLottieCore && this.isLoaded) {\n const resized = this._setupTarget(this._canvas.width, this._canvas.height);\n\n if (resized) {\n this._dotLottieCore.render();\n this._draw();\n }\n }\n }\n\n protected _setupRendererOnCanvas(): void {\n this._context = null;\n }\n\n private _stopAnimationLoop(): void {\n if (this._animationFrameId !== null) {\n this._frameManager.cancelAnimationFrame(this._animationFrameId);\n this._animationFrameId = null;\n }\n }\n\n private _startAnimationLoop(): void {\n // Start if we don't already have an active loop and either:\n // 1. The animation should be playing, OR\n // 2. The state machine is running\n if (\n this._animationFrameId === null &&\n this._dotLottieCore &&\n !this._isFrozen &&\n (this._dotLottieCore.is_playing() || this._isStateMachineRunning)\n ) {\n this._animationFrameId = this._frameManager.requestAnimationFrame(this._animationLoop.bind(this));\n }\n }\n\n private _animationLoop(): void {\n if (this._dotLottieCore === null) {\n this._stopAnimationLoop();\n\n return;\n }\n\n // Continue the loop if either the animation is playing OR the state machine is running\n if (!this._dotLottieCore.is_playing() && !this._isStateMachineRunning) {\n this._stopAnimationLoop();\n\n return;\n }\n\n try {\n const advanced = this._isStateMachineRunning ? this._dotLottieCore.sm_tick() : this._dotLottieCore.tick();\n\n if (this._isStateMachineRunning) {\n this._drainSmEvents();\n } else {\n this._drainPlayerEvents();\n }\n\n if (advanced) {\n this._draw();\n }\n\n this._animationFrameId = this._frameManager.requestAnimationFrame(this._animationLoop.bind(this));\n } catch (error) {\n console.error('Error in animation frame:', error);\n\n this._eventManager.dispatch({ type: 'renderError', error: error as unknown as Error });\n\n // destroy the instance if it's a runtime error\n if (error instanceof WebAssembly.RuntimeError) {\n this.destroy();\n }\n }\n }\n\n /**\n * Starts or resumes animation playback from the current frame.\n * Unfreezes rendering if frozen and starts the animation loop. Updates isPlaying state to true.\n */\n public play(): void {\n if (this._dotLottieCore === null || !this.isLoaded) return;\n\n this._stopAnimationLoop();\n\n const playing = this._dotLottieCore.play();\n\n this._drainPlayerEvents();\n\n // Always unfreeze and start animation loop if core is playing, regardless of play() return value\n if (playing || this._dotLottieCore.is_playing()) {\n this._isFrozen = false;\n this._startAnimationLoop();\n }\n\n /*\n Check if the canvas is offscreen and freezing is enabled\n If freezeOnOffscreen is true and the canvas is currently outside the viewport,\n we immediately freeze the animation to avoid unnecessary rendering and performance overhead.\n */\n if (\n this._canvas &&\n IS_BROWSER &&\n this._canvas instanceof HTMLCanvasElement &&\n this._renderConfig.freezeOnOffscreen &&\n !isElementInViewport(this._canvas)\n ) {\n this.freeze();\n }\n }\n\n /**\n * Pauses animation playback at the current frame.\n * Stops the animation loop while preserving the current frame position. Updates isPaused state to true.\n */\n public pause(): void {\n if (this._dotLottieCore === null) return;\n\n this._dotLottieCore.pause();\n\n this._drainPlayerEvents();\n\n this._stopAnimationLoop();\n }\n\n /**\n * Stops animation playback and resets to the start frame.\n * Halts the animation loop and returns to the beginning. Updates isStopped state to true.\n */\n public stop(): void {\n if (this._dotLottieCore === null) return;\n\n const ok = this._dotLottieCore.stop();\n\n this._drainPlayerEvents();\n\n this._stopAnimationLoop();\n\n if (ok) {\n // FIXME: frame is not triggered from the dotlottie-rs core on stop()\n this._eventManager.dispatch({ type: 'frame', currentFrame: this.currentFrame });\n // FIXME: stop() doesn't trigger render() internally\n this._dotLottieCore.render();\n this._draw();\n }\n }\n\n /**\n * Seeks to a specific frame in the animation and renders it.\n * Useful for implementing custom scrubbing controls or precise frame positioning.\n * @param frame - The target frame number to seek to\n */\n public setFrame(frame: number): void {\n if (this._dotLottieCore === null) return;\n\n const frameUpdated = this._dotLottieCore.seek(frame);\n\n if (frameUpdated) {\n const rendered = this._dotLottieCore.render();\n\n this._drainPlayerEvents();\n\n if (rendered) {\n this._draw();\n }\n }\n }\n\n /**\n * Changes the animation playback speed.\n * Values above 1 speed up playback, below 1 slow it down.\n * @param speed - Playback speed multiplier (e.g., 2 for 2x speed, 0.5 for half speed)\n */\n public setSpeed(speed: number): void {\n if (this._dotLottieCore === null) return;\n\n this._dotLottieCore.set_speed(speed);\n }\n\n /**\n * Changes the background color of the canvas or animation.\n * For HTMLCanvasElement, sets the CSS background. For other surfaces, renders behind the animation.\n * @param color - CSS color string (e.g., '#FFFFFF', 'rgba(0,0,0,0.5)', 'transparent')\n */\n public setBackgroundColor(color: string): void {\n if (this._dotLottieCore === null) return;\n\n if (IS_BROWSER && this._canvas instanceof HTMLCanvasElement) {\n this._canvas.style.backgroundColor = color;\n } else {\n const [r, g, b, a] = hexStringToRGBAFloats(color);\n\n this._dotLottieCore.set_background(r, g, b, a);\n }\n\n this._backgroundColor = color;\n }\n\n /**\n * Enables or disables continuous looping of the animation.\n * When enabled with loopCount set to 0, animation repeats indefinitely.\n * @param loop - True to enable looping, false to play once\n */\n public setLoop(loop: boolean): void {\n if (this._dotLottieCore === null) return;\n\n this._dotLottieCore.set_loop(loop);\n }\n\n /**\n * Sets the number of additional times to replay the animation after the first play.\n * Requires loop to be true. A value of 0 means infinite replays; a positive value n means\n * the animation plays a total of n + 1 times (initial play + n replays).\n * @param loopCount - Number of additional replays (0 = infinite, 1 = plays twice, 2 = plays three times, etc.)\n */\n public setLoopCount(loopCount: number): void {\n if (this._dotLottieCore === null) return;\n\n this._dotLottieCore.set_loop_count(loopCount);\n }\n\n /**\n * Enables or disables frame interpolation for smoother playback.\n * When enabled, interpolates between frames. When disabled, shows exact frame-by-frame animation.\n * @param useFrameInterpolation - True for smooth interpolation, false for exact frames\n */\n public setUseFrameInterpolation(useFrameInterpolation: boolean): void {\n if (this._dotLottieCore === null) return;\n\n this._dotLottieCore.set_use_frame_interpolation(useFrameInterpolation);\n }\n\n /**\n * Subscribes to animation events like play, pause, frame, complete, etc.\n * Use this to react to animation state changes and playback progress.\n * @param type - Event type to listen for (e.g., 'play', 'frame', 'complete')\n * @param listener - Callback function invoked when the event occurs\n */\n public addEventListener<T extends EventType>(type: T, listener: EventListener<T>): void {\n this._eventManager.addEventListener(type, listener);\n }\n\n /**\n * Unsubscribes from animation events.\n * If no listener is provided, removes all listeners for the given event type.\n * @param type - Event type to stop listening for\n * @param listener - Specific callback to remove, or undefined to remove all\n */\n public removeEventListener<T extends EventType>(type: T, listener?: EventListener<T>): void {\n this._eventManager.removeEventListener(type, listener);\n }\n\n /**\n * Cleans up and destroys the player instance, releasing all resources.\n * Stops playback, removes event listeners, and frees WASM memory. Call when the player is no longer needed.\n */\n public destroy(): void {\n this._stopAnimationLoop();\n\n // Reset state machine status\n this._isStateMachineRunning = false;\n\n this._cleanupCanvas();\n\n this._dotLottieCore?.free();\n this._dotLottieCore = null;\n this._context = null;\n\n this._eventManager.dispatch({\n type: 'destroy',\n });\n\n this._eventManager.removeAllEventListeners();\n this._cleanupStateMachineListeners();\n }\n\n /**\n * Pauses the rendering loop without changing playback state.\n * Useful for reducing CPU/GPU usage when the animation is offscreen or hidden. Dispatches 'freeze' event.\n */\n public freeze(): void {\n if (this._animationFrameId === null) return;\n\n this._stopAnimationLoop();\n\n this._isFrozen = true;\n\n this._eventManager.dispatch({ type: 'freeze' });\n }\n\n /**\n * Resumes the rendering loop after being frozen.\n * Restarts frame rendering while maintaining the current playback state. Dispatches 'unfreeze' event.\n */\n public unfreeze(): void {\n if (this._animationFrameId !== null) return;\n\n this._isFrozen = false;\n\n this._eventManager.dispatch({ type: 'unfreeze' });\n\n this._startAnimationLoop();\n }\n\n /**\n * Recalculates and updates canvas dimensions based on current size.\n * Call this when the canvas container size changes to maintain proper rendering. Usually handled by autoResize.\n */\n public resize(): void {\n if (!this._dotLottieCore || !this.isLoaded || !this._canvas) return;\n\n if (IS_BROWSER && this._canvas instanceof HTMLCanvasElement) {\n const dpr = this._renderConfig.devicePixelRatio || window.devicePixelRatio || 1;\n\n const { height: clientHeight, width: clientWidth } = this._canvas.getBoundingClientRect();\n\n if (clientHeight !== 0 && clientWidth !== 0) {\n this._canvas.width = clientWidth * dpr;\n this._canvas.height = clientHeight * dpr;\n }\n }\n\n const resized = this._setupTarget(this._canvas.width, this._canvas.height);\n\n if (resized) {\n this._dotLottieCore.render();\n this._draw();\n }\n }\n\n /**\n * Changes the canvas element used for rendering.\n * Useful for moving the animation to a different canvas without recreating the player instance.\n * @param canvas - New HTMLCanvasElement, OffscreenCanvas, or RenderSurface to render to\n */\n public setCanvas(canvas: HTMLCanvasElement | OffscreenCanvas | RenderSurface): void {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (!canvas || this._canvas === canvas) return;\n\n if (this._canvas) {\n this._cleanupCanvas();\n }\n\n this._canvas = canvas;\n\n this._initializeCanvas();\n\n if (this._pendingLoad) {\n const pending = this._pendingLoad;\n\n this._pendingLoad = null;\n\n if (pending.data) {\n this._loadFromData(pending.data);\n } else if (pending.src) {\n this._loadFromSrc(pending.src);\n }\n }\n }\n\n /**\n * Applies a 3x3 transformation matrix to the entire animation on the canvas.\n * Use this to translate, rotate, scale, or skew the animation rendering.\n * @param transform - 9-element array representing the transformation matrix in row-major order\n * @returns True if transformation was applied successfully, false otherwise\n */\n public setTransform(transform: Transform): boolean {\n if (!this._dotLottieCore) return false;\n\n const ok = this._dotLottieCore.set_transform(new Float32Array(transform));\n\n if (ok && this._dotLottieCore.render()) {\n this._draw();\n }\n\n return ok;\n }\n\n /**\n * Gets the 3x3 transformation matrix applied to the animation.\n * Returns a 9-element array representing affine transformations (translation, rotation, scale, skew).\n * @returns Transform array of 9 numbers, or undefined if not available\n */\n public getTransform(): Transform | undefined {\n if (!this._dotLottieCore) return undefined;\n\n const arr = this._dotLottieCore.get_transform();\n\n return Array.from(arr) as Transform;\n }\n\n /**\n * Sets a frame range to play instead of the full animation.\n * Useful for playing specific sections or creating animation sequences from subsections.\n * @param startFrame - Starting frame number (inclusive)\n * @param endFrame - Ending frame number (inclusive)\n */\n public setSegment(startFrame: number, endFrame: number): void {\n if (this._dotLottieCore === null) return;\n\n this._dotLottieCore.set_segment(startFrame, endFrame);\n }\n\n /**\n * Changes the playback direction mode.\n * Controls whether animation plays forward, in reverse, or alternates (bounce).\n * @param mode - Playback mode: 'forward', 'reverse', 'bounce', or 'reverse-bounce'\n */\n public setMode(mode: Mode): void {\n if (this._dotLottieCore === null) return;\n\n this._dotLottieCore.set_mode(modeToCore(mode));\n }\n\n /**\n * Updates rendering configuration like autoResize, devicePixelRatio, and freezeOnOffscreen.\n * Dynamically changes how the canvas behaves without reloading the animation.\n * @param config - Partial RenderConfig with properties to update\n */\n public setRenderConfig(config: RenderConfig): void {\n const { devicePixelRatio, freezeOnOffscreen, quality, ...restConfig } = config;\n\n this._renderConfig = {\n ...this._renderConfig,\n ...restConfig,\n // devicePixelRatio is a special case, it should be set to the default value if it's not provided\n devicePixelRatio: devicePixelRatio || getDefaultDPR(),\n freezeOnOffscreen: freezeOnOffscreen ?? true,\n ...(quality !== undefined && { quality }),\n };\n\n if (quality !== undefined && this._dotLottieCore) {\n this._dotLottieCore.set_quality(quality);\n }\n\n if (IS_BROWSER && this._canvas instanceof HTMLCanvasElement) {\n if (this._renderConfig.autoResize) {\n CanvasResizeObserver.observe(this._canvas, this);\n } else {\n CanvasResizeObserver.unobserve(this._canvas);\n }\n\n if (this._renderConfig.freezeOnOffscreen) {\n OffscreenObserver.observe(this._canvas, this);\n\n // Check if canvas is currently offscreen and freeze if necessary\n if (!isElementInViewport(this._canvas)) {\n this.freeze();\n }\n } else {\n OffscreenObserver.unobserve(this._canvas);\n // If the animation was previously frozen, we need to unfreeze it now\n // to ensure it resumes rendering when the canvas is back onscreen.\n if (this._isFrozen) {\n this.unfreeze();\n }\n }\n }\n }\n\n /**\n * Switches to a different animation within a multi-animation dotLottie file.\n * Use this to load a different animation by its ID without creating a new player instance.\n * @param animationId - ID of the animation to load (must exist in the manifest)\n */\n public loadAnimation(animationId: string): void {\n if (this._dotLottieCore === null || this._dotLottieCore.animation_id() === animationId || !this._canvas) return;\n\n this._setupTarget(this._canvas.width, this._canvas.height);\n const loaded = this._dotLottieCore.load_animation_from_id(animationId);\n\n if (loaded) {\n if (this._renderConfig.quality !== undefined) {\n this._dotLottieCore.set_quality(this._renderConfig.quality);\n }\n this.resize();\n this._drainPlayerEvents();\n\n this._dotLottieCore.render();\n this._draw();\n } else {\n this._dispatchError(`Failed to load animation with id: ${animationId}`);\n }\n }\n\n /**\n * Activates a named marker to play only that marked segment.\n * Markers define named sections within an animation. Use markers() to list available markers.\n * @param marker - Name of the marker to activate\n */\n public setMarker(marker: string): void {\n if (this._dotLottieCore === null) return;\n\n this._marker = marker;\n this._dotLottieCore.set_marker(marker);\n }\n\n /**\n * Gets all markers defined in the animation with their time and duration.\n * Markers represent named sections that can be played using setMarker().\n * @returns Array of marker objects with name, time, and duration properties\n */\n public markers(): Marker[] {\n const markers = this._dotLottieCore?.markers();\n\n if (markers && Array.isArray(markers)) {\n return markers as Marker[];\n }\n\n return [];\n }\n\n /**\n * Applies a theme to the animation, modifying colors and visual properties.\n * Themes are predefined in the dotLottie manifest. Returns true if theme was successfully loaded.\n * @param themeId - ID of the theme to apply (must exist in manifest)\n * @returns True if theme loaded successfully, false otherwise\n */\n public setTheme(themeId: string): boolean {\n if (this._dotLottieCore === null) return false;\n\n const themeLoaded = this._dotLottieCore.set_theme(themeId);\n\n if (themeLoaded) {\n this._dotLottieCore.render();\n this._draw();\n }\n\n return themeLoaded;\n }\n\n /**\n * Removes the currently applied theme and restores original animation colors.\n * Use this to revert to the default appearance after applying a theme.\n * @returns True if theme was reset successfully, false otherwise\n */\n public resetTheme(): boolean {\n if (this._dotLottieCore === null) return false;\n\n const themeReset = this._dotLottieCore.reset_theme();\n\n if (themeReset) {\n this._dotLottieCore.render();\n this._draw();\n }\n\n return themeReset;\n }\n\n /**\n * Applies a custom theme from theme data instead of manifest theme ID.\n * Useful for dynamically generated or user-created themes not in the manifest.\n *\n * @param themeData - Theme data as a JSON string or a structured Theme object\n * @returns True if theme loaded successfully, false otherwise\n */\n public setThemeData(themeData: Theme | string): boolean {\n if (this._dotLottieCore === null) return false;\n\n const themeDataString = typeof themeData === 'string' ? themeData : JSON.stringify(themeData);\n\n const themeLoaded = this._dotLottieCore.set_theme_data(themeDataString);\n\n if (themeLoaded) {\n this._dotLottieCore.render();\n this._draw();\n }\n\n return themeLoaded;\n }\n\n /**\n * Sets multiple slot values at once for parameterized animations.\n * Slots allow runtime customization of colors, text, images, or other properties.\n * @param slots - Object mapping slot IDs to their values\n */\n public setSlots(slots: Record<string, unknown>): void {\n if (this._dotLottieCore === null) return;\n\n if (this._dotLottieCore.set_slots_str(JSON.stringify(slots))) {\n this._dotLottieCore.render();\n this._draw();\n }\n }\n\n // #region Typed Slot APIs\n\n /**\n * Check if value is an array of keyframes (has objects with 't' and 's' properties)\n */\n private _isKeyframeArray(value: unknown): boolean {\n return (\n Array.isArray(value) &&\n value.length > 0 &&\n typeof value[0] === 'object' &&\n value[0] !== null &&\n 't' in value[0] &&\n 's' in value[0]\n );\n }\n\n /**\n * Get all slot IDs in the animation\n * @returns Array of slot ID strings\n */\n public getSlotIds(): string[] {\n if (!this._dotLottieCore) return [];\n\n const ids = this._dotLottieCore.get_slot_ids();\n\n if (Array.isArray(ids)) {\n return ids as string[];\n }\n\n return [];\n }\n\n /**\n * Get the type of a slot\n * @param slotId - The slot ID to query\n * @returns The slot type ('color', 'gradient', 'text', 'scalar', 'vector', 'position', 'image') or undefined\n */\n public getSlotType(slotId: string): SlotType | undefined {\n if (!this._dotLottieCore) return undefined;\n\n const type = this._dotLottieCore.get_slot_type(slotId);\n\n if (!type) return undefined;\n\n return type as SlotType;\n }\n\n /**\n * Get the current value of a slot\n * @param slotId - The slot ID to query\n * @returns The parsed slot value or undefined if not found\n */\n public getSlot(slotId: string): unknown {\n if (!this._dotLottieCore) return undefined;\n\n const slotStr = this._dotLottieCore.get_slot_str(slotId);\n\n if (!slotStr) return undefined;\n\n try {\n return JSON.parse(slotStr);\n } catch {\n return undefined;\n }\n }\n\n /**\n * Get all slots as an object with slot IDs as keys\n * @returns Object containing all slots, or empty object if not loaded\n */\n public getSlots(): Record<string, unknown> {\n if (!this._dotLottieCore) return {};\n\n try {\n return JSON.parse(this._dotLottieCore.get_slots_str());\n } catch {\n return {};\n }\n }\n\n /**\n * Set a color slot value\n * @param slotId - The slot ID to set\n * @param value - Static color [r, g, b, a] or array of keyframes\n * @returns true if successful\n */\n public setColorSlot(slotId: string, value: ColorSlotValue): boolean {\n if (this._dotLottieCore === null) return false;\n\n const isAnimated = this._isKeyframeArray(value);\n const slotJson = JSON.stringify({ a: isAnimated ? 1 : 0, k: value });\n\n const result = this._dotLottieCore.set_slot_str(slotId, slotJson);\n\n this._dotLottieCore.render();\n this._draw();\n\n return result;\n }\n\n /**\n * Set a scalar slot value (single number like rotation, opacity)\n * @param slotId - The slot ID to set\n * @param value - Static number or array of keyframes\n * @returns true if successful\n */\n public setScalarSlot(slotId: string, value: ScalarSlotValue): boolean {\n if (this._dotLottieCore === null) return false;\n\n const isAnimated = typeof value !== 'number';\n const slotJson = JSON.stringify({ a: isAnimated ? 1 : 0, k: value });\n\n const result = this._dotLottieCore.set_slot_str(slotId, slotJson);\n\n this._dotLottieCore.render();\n this._draw();\n\n return result;\n }\n\n /**\n * Set a vector slot value (2D or 3D point for position, scale, etc.)\n * Handles both \"vector\" and \"position\" slot types\n * @param slotId - The slot ID to set\n * @param value - Static vector [x, y] or array of keyframes\n * @returns true if successful\n */\n public setVectorSlot(slotId: string, value: VectorSlotValue): boolean {\n if (this._dotLottieCore === null) return false;\n\n const isAnimated = this._isKeyframeArray(value);\n const slotJson = JSON.stringify({ a: isAnimated ? 1 : 0, k: value });\n\n const result = this._dotLottieCore.set_slot_str(slotId, slotJson);\n\n this._dotLottieCore.render();\n this._draw();\n\n return result;\n }\n\n /**\n * Set a gradient slot value\n * @param slotId - The slot ID to set\n * @param value - Static gradient or array of keyframes\n * @param colorStopCount - Number of color stops\n * @returns true if successful\n */\n public setGradientSlot(slotId: string, value: GradientSlotValue, colorStopCount: number): boolean {\n if (this._dotLottieCore === null) return false;\n\n const isAnimated = this._isKeyframeArray(value);\n const slotJson = JSON.stringify({ k: { a: isAnimated ? 1 : 0, k: value }, p: colorStopCount });\n\n const result = this._dotLottieCore.set_slot_str(slotId, slotJson);\n\n this._dotLottieCore.render();\n this._draw();\n\n return result;\n }\n\n /**\n * Set a text slot value (always static - text documents don't support animation)\n * Supports partial updates - only provided properties will be changed, others inherit from existing value\n * @param slotId - The slot ID to set\n * @param value - Text document properties (partial allowed)\n * @returns true if successful\n */\n public setTextSlot(slotId: string, value: TextSlotValue): boolean {\n if (this._dotLottieCore === null) return false;\n\n const existingStr = this._dotLottieCore.get_slot_str(slotId);\n let mergedTextDoc = value;\n\n if (existingStr) {\n const existingValue = JSON.parse(existingStr);\n\n if (existingValue && 'k' in existingValue && Array.isArray(existingValue.k)) {\n const keyframe0 = existingValue.k[0] as Record<string, unknown>;\n\n if ('s' in keyframe0 && typeof keyframe0['s'] === 'object') {\n mergedTextDoc = {\n ...(keyframe0['s'] as Record<string, unknown>),\n ...value,\n };\n }\n }\n }\n\n const slotJson = JSON.stringify({\n a: 0,\n k: [{ t: 0, s: mergedTextDoc }],\n });\n\n const result = this._dotLottieCore.set_slot_str(slotId, slotJson);\n\n this._dotLottieCore.render();\n this._draw();\n\n return result;\n }\n\n /**\n * Reset a slot to its original value\n * @param slotId - The slot ID to reset\n * @returns true if successful\n */\n public resetSlot(slotId: string): boolean {\n if (this._dotLottieCore === null) return false;\n\n const result = this._dotLottieCore.reset_slot(slotId);\n\n this._dotLottieCore.render();\n this._draw();\n\n return result;\n }\n\n /**\n * Clear a slot's custom value\n * @param slotId - The slot ID to clear\n * @returns true if successful\n */\n public clearSlot(slotId: string): boolean {\n if (this._dotLottieCore === null) return false;\n\n const result = this._dotLottieCore.clear_slot(slotId);\n\n this._dotLottieCore.render();\n this._draw();\n\n return result;\n }\n\n /**\n * Reset all slots to their original values\n * @returns true if successful\n */\n public resetSlots(): boolean {\n if (this._dotLottieCore === null) return false;\n\n const result = this._dotLottieCore.reset_slots();\n\n this._dotLottieCore.render();\n this._draw();\n\n return result;\n }\n\n /**\n * Clear all slot custom values\n * @returns true if successful\n */\n public clearSlots(): boolean {\n if (this._dotLottieCore === null) return false;\n\n const result = this._dotLottieCore.clear_slots();\n\n this._dotLottieCore.render();\n this._draw();\n\n return result;\n }\n\n // #endregion\n\n /**\n * Updates the layout configuration for positioning and scaling the animation.\n * Changes how the animation fits and aligns within the canvas without requiring a reload.\n * @param layout - New layout configuration with fit mode and alignment values\n */\n public setLayout(layout: Layout): void {\n if (this._dotLottieCore === null) return;\n\n this._dotLottieCore.set_layout(layout.fit ?? 'contain', layout.align?.[0] ?? 0.5, layout.align?.[1] ?? 0.5);\n }\n\n /**\n * Sets a custom viewport region for rendering a portion of the animation.\n * Defines a rectangular area to render, useful for implementing animation clipping or panning effects.\n * @param x - X coordinate of the viewport's top-left corner\n * @param y - Y coordinate of the viewport's top-left corner\n * @param width - Width of the viewport in pixels\n * @param height - Height of the viewport in pixels\n * @returns True if viewport was set successfully, false otherwise\n */\n public setViewport(x: number, y: number, width: number, height: number): boolean {\n if (this._dotLottieCore === null) return false;\n\n return this._dotLottieCore.set_viewport(x, y, width, height);\n }\n\n /**\n * Configures the URL for loading the WASM module.\n * Call this before creating any player instances to load the WASM from a custom CDN or local path.\n * @param url - URL pointing to the dotlottie WASM file\n */\n public static setWasmUrl(url: string): void {\n dotLottieWasmLoader.setWasmUrl(url);\n }\n\n /**\n * @experimental\n * Register a custom font for use in animations\n * @param fontName - The name of the font to register\n * @param fontSource - Either a URL string to fetch the font, or ArrayBuffer/Uint8Array of font data\n * @returns Promise<boolean> - true if registration succeeded, false otherwise\n */\n public static async registerFont(fontName: string, fontSource: string | ArrayBuffer | Uint8Array): Promise<boolean> {\n try {\n await dotLottieWasmLoader.load();\n\n let fontData: Uint8Array;\n\n if (typeof fontSource === 'string') {\n const response = await fetch(fontSource);\n\n if (!response.ok) {\n console.error(`Failed to fetch font from URL: ${fontSource}. Status: ${response.status}`);\n\n return false;\n }\n fontData = new Uint8Array(await response.arrayBuffer());\n } else if (fontSource instanceof Uint8Array) {\n fontData = fontSource;\n } else {\n fontData = new Uint8Array(fontSource);\n }\n\n const success = register_font(fontName, fontData);\n\n if (!success) {\n console.error(`Failed to register font \"${fontName}\". Font data may be invalid.`);\n }\n\n return success;\n } catch (error) {\n console.error(`Error registering font \"${fontName}\":`, error);\n\n return false;\n }\n }\n\n /**\n * Gets the original dimensions of the animation as defined in the source file.\n * Returns width and height in pixels representing the animation's intrinsic size.\n * @returns Object with width and height properties in pixels\n */\n public animationSize(): { height: number; width: number } {\n const size = this._dotLottieCore?.animation_size();\n\n return {\n width: size?.[0] ?? 0,\n height: size?.[1] ?? 0,\n };\n }\n\n /**\n * Gets the Oriented Bounding Box (OBB) points of a layer by its name.\n * Returns 8 numbers representing 4 corner points (x,y) in clockwise order from top-left.\n * @param layerName - Name of the layer to get bounds for\n * @returns Array of 8 numbers representing the bounding box corners, or undefined if layer not found\n */\n public getLayerBoundingBox(layerName: string): number[] | undefined {\n const bounds = this._dotLottieCore?.get_layer_bounds(layerName);\n\n if (!bounds) return undefined;\n\n if (bounds.length !== 8) return undefined;\n\n return Array.from(bounds);\n }\n\n /**\n * Converts theme data into Lottie slot format for dynamic content replacement.\n * @param _theme - Theme data as a JSON string\n * @param _slots - Slot definitions as a JSON string\n * @returns Transformed slots data as a JSON string\n */\n public static transformThemeToLottieSlots(_theme: string, _slots: string): string {\n return '';\n }\n\n // #region State Machine\n\n /**\n * @experimental\n * Loads a state machine by its ID from the dotLottie manifest.\n * State machines enable interactive, event-driven animation behaviors.\n * @param stateMachineId - The ID of the state machine to load (must exist in manifest)\n * @returns True if the state machine was loaded successfully, false otherwise\n */\n public stateMachineLoad(stateMachineId: string): boolean {\n if (!this._dotLottieCore) return false;\n\n return this._dotLottieCore.state_machine_load_from_id(stateMachineId);\n }\n\n /**\n * @experimental\n * Load a state machine from data string\n * @param stateMachineData - The state machine data as a string\n * @returns true if the state machine was loaded successfully\n */\n public stateMachineLoadData(stateMachineData: string): boolean {\n if (!this._dotLottieCore) return false;\n\n return this._dotLottieCore.state_machine_load(stateMachineData);\n }\n\n /**\n * @experimental\n * Set the state machine config\n * @param config - The state machine config\n */\n public stateMachineSetConfig(config: StateMachineConfig | null): void {\n this._stateMachineConfig = config;\n }\n\n /**\n * @experimental\n * Start the state machine\n * @returns true if the state machine was started successfully\n */\n public stateMachineStart(): boolean {\n if (this._dotLottieCore === null) return false;\n\n const started = this._dotLottieCore.sm_start(\n this._stateMachineConfig?.openUrlPolicy?.requireUserInteraction ?? true,\n (this._stateMachineConfig?.openUrlPolicy?.whitelist ?? []) as unknown[],\n );\n\n this._drainSmEvents();\n\n if (started) {\n this._isStateMachineRunning = true;\n this._setupStateMachineListeners();\n this._startAnimationLoop();\n }\n\n return started;\n }\n\n /**\n * @experimental\n * Stop the state machine\n * @returns true if the state machine was stopped successfully\n */\n public stateMachineStop(): boolean {\n if (!this._dotLottieCore) return false;\n\n const stopped = this._dotLottieCore.sm_stop();\n\n this._drainSmEvents();\n\n if (stopped) {\n this._isStateMachineRunning = false;\n this._cleanupStateMachineListeners();\n\n // Stop animation loop if animation is not playing\n if (!this._dotLottieCore.is_playing()) {\n this._stopAnimationLoop();\n }\n }\n\n return stopped;\n }\n\n /**\n * @experimental\n * Get the current status of the state machine\n * @returns The current status of the state machine as a string\n */\n public stateMachineGetStatus(): string {\n return this._dotLottieCore?.sm_status() ?? '';\n }\n\n /**\n * @experimental\n * Get the current state of the state machine\n * @returns The current state of the state machine as a string\n */\n public stateMachineGetCurrentState(): string {\n return this._dotLottieCore?.sm_current_state() ?? '';\n }\n\n /**\n * @experimental\n * Get the active state machine ID\n * @returns The active state machine ID as a string\n */\n public stateMachineGetActiveId(): string {\n return this._dotLottieCore?.state_machine_id() ?? '';\n }\n\n /**\n * @experimental\n * Override the current state of the state machine\n * @param state - The state to override to\n * @param immediate - Whether to immediately transition to the state\n * @returns true if the state override was successful\n */\n public stateMachineOverrideState(state: string, immediate: boolean = false): boolean {\n return this._dotLottieCore?.sm_override_current_state(state, immediate) ?? false;\n }\n\n /**\n * @experimental\n * Get a specific state machine by ID\n * @param stateMachineId - The ID of the state machine to get\n * @returns The state machine data as a string\n */\n public stateMachineGet(stateMachineId: string): string {\n return this._dotLottieCore?.get_state_machine(stateMachineId) ?? '';\n }\n\n /**\n * @experimental\n * Get the list of state machine listeners\n * @returns Array of listener names\n */\n public stateMachineGetListeners(): string[] {\n if (!this._dotLottieCore) return [];\n\n const listeners = this._dotLottieCore.sm_framework_setup();\n\n if (Array.isArray(listeners)) {\n return listeners as string[];\n }\n\n return [];\n }\n\n /**\n * @experimental\n * Set a boolean input value for the state machine\n * @param name - The name of the boolean input\n * @param value - The boolean value to set\n */\n public stateMachineSetBooleanInput(name: string, value: boolean): boolean {\n return this._dotLottieCore?.sm_set_boolean_input(name, value) ?? false;\n }\n\n /**\n * @experimental\n * Set a numeric input value for the state machine\n * @param name - The name of the numeric input\n * @param value - The numeric value to set\n */\n public stateMachineSetNumericInput(name: string, value: number): boolean {\n return this._dotLottieCore?.sm_set_numeric_input(name, value) ?? false;\n }\n\n /**\n * @experimental\n * Set a string input value for the state machine\n * @param name - The name of the string input\n * @param value - The string value to set\n */\n public stateMachineSetStringInput(name: string, value: string): boolean {\n return this._dotLottieCore?.sm_set_string_input(name, value) ?? false;\n }\n\n /**\n * @experimental\n * Get a boolean input value from the state machine\n * @param name - The name of the boolean input\n * @returns The boolean value or undefined if not found\n */\n public stateMachineGetBooleanInput(name: string): boolean | undefined {\n return this._dotLottieCore?.sm_get_boolean_input(name) ?? undefined;\n }\n\n /**\n * @experimental\n * Get a numeric input value from the state machine\n * @param name - The name of the numeric input\n * @returns The numeric value or undefined if not found\n */\n public stateMachineGetNumericInput(name: string): number | undefined {\n return this._dotLottieCore?.sm_get_numeric_input(name) ?? undefined;\n }\n\n /**\n * @experimental\n * Get a string input value from the state machine\n * @param name - The name of the string input\n * @returns The string value or undefined if not found\n */\n public stateMachineGetStringInput(name: string): string | undefined {\n return this._dotLottieCore?.sm_get_string_input(name) ?? undefined;\n }\n\n /**\n * @experimental\n * Get all the inputs of the current state machine.\n * @returns An array of input keys followed by its type at n+1.\n */\n public stateMachineGetInputs(): string[] {\n if (!this._dotLottieCore) return [];\n\n const inputs = this._dotLottieCore.sm_get_inputs();\n\n if (Array.isArray(inputs)) {\n return inputs as string[];\n }\n\n return [];\n }\n\n /**\n * @experimental\n * Fire an event in the state machine\n * @param name - The name of the event to fire\n */\n public stateMachineFireEvent(name: string): void {\n this._dotLottieCore?.sm_fire(name);\n }\n\n /**\n * @experimental\n * Post a click event to the state machine\n * @param x - The x coordinate of the click\n * @param y - The y coordinate of the click\n */\n public stateMachinePostClickEvent(x: number, y: number): void {\n this._dotLottieCore?.sm_post_click(x, y);\n }\n\n /**\n * @experimental\n * Post a pointer up event to the state machine\n * @param x - The x coordinate of the pointer\n * @param y - The y coordinate of the pointer\n */\n public stateMachinePostPointerUpEvent(x: number, y: number): void {\n this._dotLottieCore?.sm_post_pointer_up(x, y);\n }\n\n /**\n * @experimental\n * Post a pointer down event to the state machine\n * @param x - The x coordinate of the pointer\n * @param y - The y coordinate of the pointer\n */\n public stateMachinePostPointerDownEvent(x: number, y: number): void {\n this._dotLottieCore?.sm_post_pointer_down(x, y);\n }\n\n /**\n * @experimental\n * Post a pointer move event to the state machine\n * @param x - The x coordinate of the pointer\n * @param y - The y coordinate of the pointer\n */\n public stateMachinePostPointerMoveEvent(x: number, y: number): void {\n this._dotLottieCore?.sm_post_pointer_move(x, y);\n }\n\n /**\n * @experimental\n * Post a pointer enter event to the state machine\n * @param x - The x coordinate of the pointer\n * @param y - The y coordinate of the pointer\n */\n public stateMachinePostPointerEnterEvent(x: number, y: number): void {\n this._dotLottieCore?.sm_post_pointer_enter(x, y);\n }\n\n /**\n * @experimental\n * Post a pointer exit event to the state machine\n * @param x - The x coordinate of the pointer\n * @param y - The y coordinate of the pointer\n */\n public stateMachinePostPointerExitEvent(x: number, y: number): void {\n this._dotLottieCore?.sm_post_pointer_exit(x, y);\n }\n\n private _onClick(event: MouseEvent): void {\n const position = getPointerPosition(event);\n\n if (position) {\n this.stateMachinePostClickEvent(position.x, position.y);\n }\n }\n\n private _onPointerUp(event: PointerEvent): void {\n const position = getPointerPosition(event);\n\n if (position) {\n this.stateMachinePostPointerUpEvent(position.x, position.y);\n }\n }\n\n private _onPointerDown(event: PointerEvent): void {\n const position = getPointerPosition(event);\n\n if (position) {\n this.stateMachinePostPointerDownEvent(position.x, position.y);\n }\n }\n\n private _onPointerMove(event: PointerEvent): void {\n const position = getPointerPosition(event);\n\n if (position) {\n this.stateMachinePostPointerMoveEvent(position.x, position.y);\n }\n }\n\n private _onPointerEnter(event: PointerEvent): void {\n const position = getPointerPosition(event);\n\n if (position) {\n this.stateMachinePostPointerEnterEvent(position.x, position.y);\n }\n }\n\n private _onPointerLeave(event: PointerEvent): void {\n const position = getPointerPosition(event);\n\n if (position) {\n this.stateMachinePostPointerExitEvent(position.x, position.y);\n }\n }\n\n private _setupStateMachineListeners(): void {\n if (IS_BROWSER && this._canvas instanceof HTMLCanvasElement && this._dotLottieCore !== null && this.isLoaded) {\n const listeners = this.stateMachineGetListeners();\n\n // Clean up any existing listeners first\n this._cleanupStateMachineListeners();\n\n if (listeners.includes('Click')) {\n this._boundOnClick = this._onClick.bind(this);\n this._canvas.addEventListener('click', this._boundOnClick);\n }\n if (listeners.includes('PointerUp')) {\n this._boundOnPointerUp = this._onPointerUp.bind(this);\n this._canvas.addEventListener('pointerup', this._boundOnPointerUp);\n }\n if (listeners.includes('PointerDown')) {\n this._boundOnPointerDown = this._onPointerDown.bind(this);\n this._canvas.addEventListener('pointerdown', this._boundOnPointerDown);\n }\n if (listeners.includes('PointerMove')) {\n this._boundOnPointerMove = this._onPointerMove.bind(this);\n this._canvas.addEventListener('pointermove', this._boundOnPointerMove);\n }\n if (listeners.includes('PointerEnter')) {\n this._boundOnPointerEnter = this._onPointerEnter.bind(this);\n this._canvas.addEventListener('pointerenter', this._boundOnPointerEnter);\n }\n if (listeners.includes('PointerExit')) {\n this._boundOnPointerLeave = this._onPointerLeave.bind(this);\n this._canvas.addEventListener('pointerleave', this._boundOnPointerLeave);\n }\n }\n }\n\n private _cleanupStateMachineListeners(): void {\n if (IS_BROWSER && this._canvas instanceof HTMLCanvasElement) {\n if (this._boundOnClick) {\n this._canvas.removeEventListener('click', this._boundOnClick);\n this._boundOnClick = null;\n }\n if (this._boundOnPointerUp) {\n this._canvas.removeEventListener('pointerup', this._boundOnPointerUp);\n this._boundOnPointerUp = null;\n }\n if (this._boundOnPointerDown) {\n this._canvas.removeEventListener('pointerdown', this._boundOnPointerDown);\n this._boundOnPointerDown = null;\n }\n if (this._boundOnPointerMove) {\n this._canvas.removeEventListener('pointermove', this._boundOnPointerMove);\n this._boundOnPointerMove = null;\n }\n if (this._boundOnPointerEnter) {\n this._canvas.removeEventListener('pointerenter', this._boundOnPointerEnter);\n this._boundOnPointerEnter = null;\n }\n if (this._boundOnPointerLeave) {\n this._canvas.removeEventListener('pointerleave', this._boundOnPointerLeave);\n this._boundOnPointerLeave = null;\n }\n }\n }\n // #endregion\n}\n","// resolved to a Worker constructor by plugin-inline-worker\nimport DotLottieWebWorker from './dotlottie.worker?worker&inline';\nimport type { MethodParamsMap, RpcRequest } from './types';\n\nexport class WorkerManager {\n private readonly _workers = new Map<string, Worker>();\n\n private readonly _animationWorkerMap = new Map<string, string>();\n\n public getWorker(workerId: string): Worker {\n if (!this._workers.has(workerId)) {\n this._workers.set(workerId, new DotLottieWebWorker());\n }\n\n return this._workers.get(workerId) as Worker;\n }\n\n public assignAnimationToWorker(animationId: string, workerId: string): void {\n this._animationWorkerMap.set(animationId, workerId);\n }\n\n public unassignAnimationFromWorker(animationId: string): void {\n this._animationWorkerMap.delete(animationId);\n }\n\n public sendMessage(workerId: string, message: RpcRequest<keyof MethodParamsMap>, transfer?: Transferable[]): void {\n this.getWorker(workerId).postMessage(message, transfer || []);\n }\n\n public broadcastMessage(message: RpcRequest<keyof MethodParamsMap>, transfer?: Transferable[]): void {\n this._workers.forEach((worker) => {\n worker.postMessage(message, transfer || []);\n });\n }\n\n public terminateWorker(workerId: string): void {\n const worker = this._workers.get(workerId);\n\n if (worker) {\n worker.terminate();\n this._workers.delete(workerId);\n }\n }\n}\n","import { IS_BROWSER } from '../constants';\nimport type { EventListener, EventType, FrameEvent, StateMachineInternalMessage } from '../event-manager';\nimport { EventManager } from '../event-manager';\nimport { OffscreenObserver } from '../offscreen-observer';\nimport { CanvasResizeObserver } from '../resize-observer';\nimport type {\n ColorSlotValue,\n Config,\n GradientSlotValue,\n Layout,\n Manifest,\n Marker,\n Mode,\n RenderConfig,\n ScalarSlotValue,\n SlotType,\n StateMachineConfig,\n TextSlotValue,\n Transform,\n VectorSlotValue,\n} from '../types';\nimport { getDefaultDPR, getPointerPosition, handleOpenUrl, isElementInViewport } from '../utils';\n\nimport type { MethodParamsMap, MethodResultMap, RpcRequest, RpcResponse } from './types';\nimport { WorkerManager } from './worker-manager';\n\nfunction getCanvasSize(\n canvas: HTMLCanvasElement | OffscreenCanvas,\n devicePixelRatio: number,\n): { height: number; width: number } {\n if (typeof HTMLCanvasElement !== 'undefined' && canvas instanceof HTMLCanvasElement) {\n const { height: clientHeight, width: clientWidth } = canvas.getBoundingClientRect();\n\n if (clientHeight !== 0 && clientWidth !== 0) {\n return { width: clientWidth * devicePixelRatio, height: clientHeight * devicePixelRatio };\n }\n }\n\n return { width: canvas.width, height: canvas.height };\n}\n\nfunction generateUniqueId(): string {\n return Date.now().toString(36) + Math.random().toString(36).substr(2, 9);\n}\n\nexport interface DotLottieInstanceState {\n activeAnimationId: string | undefined;\n activeThemeId: string | undefined;\n autoplay: boolean;\n backgroundColor: string;\n currentFrame: number;\n duration: number;\n isFrozen: boolean;\n isLoaded: boolean;\n isPaused: boolean;\n isPlaying: boolean;\n isReady: boolean;\n isStopped: boolean;\n layout: Layout | undefined;\n loop: boolean;\n loopCount: number;\n manifest: Manifest | null;\n marker: string | undefined;\n markers: Marker[];\n mode: Mode;\n renderConfig: RenderConfig;\n segment: [number, number] | undefined;\n segmentDuration: number;\n speed: number;\n totalFrames: number;\n useFrameInterpolation: boolean;\n}\n\n/**\n * Worker-based DotLottie player that offloads animation processing to a Web Worker thread.\n * Use this for better performance when rendering multiple animations or to keep the main thread responsive.\n * All methods are async (return Promises) due to worker communication. Requires HTMLCanvasElement or OffscreenCanvas.\n */\nexport class DotLottieWorker {\n private static readonly _workerManager = new WorkerManager();\n\n private readonly _eventManager = new EventManager();\n\n private readonly _id: string;\n\n private readonly _worker: Worker;\n\n private _canvas: HTMLCanvasElement | OffscreenCanvas | null;\n\n private _dotLottieInstanceState: DotLottieInstanceState = {\n loopCount: 0,\n markers: [],\n autoplay: false,\n backgroundColor: '',\n currentFrame: 0,\n duration: 0,\n loop: false,\n mode: 'forward',\n segment: [0, 0],\n segmentDuration: 0,\n speed: 1,\n totalFrames: 0,\n isLoaded: false,\n isPlaying: false,\n isPaused: false,\n isStopped: true,\n isFrozen: false,\n useFrameInterpolation: false,\n renderConfig: {\n devicePixelRatio: getDefaultDPR(),\n },\n activeAnimationId: '',\n activeThemeId: '',\n layout: undefined,\n marker: '',\n isReady: false,\n manifest: null,\n };\n\n private static _wasmUrl: string = '';\n\n private _created: boolean = false;\n\n // Bound event listeners for state machine\n private _boundOnClick: ((event: MouseEvent) => void) | null = null;\n\n private _boundOnPointerUp: ((event: PointerEvent) => void) | null = null;\n\n private _boundOnPointerDown: ((event: PointerEvent) => void) | null = null;\n\n private _boundOnPointerMove: ((event: PointerEvent) => void) | null = null;\n\n private _boundOnPointerEnter: ((event: PointerEvent) => void) | null = null;\n\n private _boundOnPointerLeave: ((event: PointerEvent) => void) | null = null;\n\n private _pendingConfig: Config | null = null;\n\n /**\n * Creates a worker-based DotLottie player instance that runs in a separate thread.\n * Use workerId to share a worker across multiple animations for better resource management.\n * @param config - Configuration with optional workerId to share worker threads\n * @throws Error if canvas is not HTMLCanvasElement or OffscreenCanvas\n */\n public constructor(config: Config & { workerId?: string }) {\n if (config.canvas) {\n const isHTMLCanvas = typeof HTMLCanvasElement !== 'undefined' && config.canvas instanceof HTMLCanvasElement;\n const isOffscreenCanvas = typeof OffscreenCanvas !== 'undefined' && config.canvas instanceof OffscreenCanvas;\n\n if (!isHTMLCanvas && !isOffscreenCanvas) {\n throw new Error('Worker-based DotLottie requires HTMLCanvasElement or OffscreenCanvas');\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n this._canvas = (config.canvas as HTMLCanvasElement | OffscreenCanvas) ?? null;\n\n this._id = `dotlottie-${generateUniqueId()}`;\n const workerId = config.workerId || 'defaultWorker';\n\n // creates or gets the worker\n this._worker = DotLottieWorker._workerManager.getWorker(workerId);\n\n DotLottieWorker._workerManager.assignAnimationToWorker(this._id, workerId);\n\n if (DotLottieWorker._wasmUrl) {\n this._sendMessage('setWasmUrl', { url: DotLottieWorker._wasmUrl });\n }\n\n const fullConfig = {\n ...config,\n renderConfig: {\n ...config.renderConfig,\n devicePixelRatio: config.renderConfig?.devicePixelRatio || getDefaultDPR(),\n // freezeOnOffscreen is true by default to prevent unnecessary rendering when the canvas is offscreen\n freezeOnOffscreen: config.renderConfig?.freezeOnOffscreen ?? true,\n },\n };\n\n this._pendingConfig = fullConfig;\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (this._canvas) {\n this._create(fullConfig);\n this._pendingConfig = null;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n this._worker.addEventListener('message', this._handleWorkerEvent.bind(this));\n }\n\n private async _handleWorkerEvent(event: MessageEvent): Promise<void> {\n const rpcResponse: RpcResponse<\n | 'onComplete'\n | 'onLoad'\n | 'onDestroy'\n | 'onUnfreeze'\n | 'onFrame'\n | 'onRender'\n | 'onFreeze'\n | 'onPause'\n | 'onPlay'\n | 'onStop'\n | 'onLoadError'\n | 'onRenderError'\n | 'onReady'\n | 'onLoop'\n | 'onStateMachineStart'\n | 'onStateMachineStop'\n | 'onStateMachineTransition'\n | 'onStateMachineStateEntered'\n | 'onStateMachineStateExit'\n | 'onStateMachineCustomEvent'\n | 'onStateMachineError'\n | 'onStateMachineBooleanInputValueChange'\n // eslint-disable-next-line no-secrets/no-secrets\n | 'onStateMachineNumericInputValueChange'\n | 'onStateMachineStringInputValueChange'\n | 'onStateMachineInputFired'\n | 'onStateMachineInternalMessage'\n > = event.data;\n\n if (!rpcResponse.id) {\n if (rpcResponse.method === 'onLoad' && rpcResponse.result.instanceId === this._id) {\n await this._updateDotLottieInstanceState();\n this._eventManager.dispatch(rpcResponse.result.event);\n\n if (IS_BROWSER && this._canvas instanceof HTMLCanvasElement) {\n if (this._dotLottieInstanceState.renderConfig.freezeOnOffscreen) {\n OffscreenObserver.observe(this._canvas, this);\n\n // Check if canvas is initially offscreen and freeze if necessary\n if (!isElementInViewport(this._canvas)) {\n await this.freeze();\n }\n }\n\n if (this._dotLottieInstanceState.renderConfig.autoResize) {\n CanvasResizeObserver.observe(this._canvas, this);\n }\n }\n }\n\n if (rpcResponse.method === 'onComplete' && rpcResponse.result.instanceId === this._id) {\n await this._updateDotLottieInstanceState();\n this._eventManager.dispatch(rpcResponse.result.event);\n }\n\n if (rpcResponse.method === 'onDestroy' && rpcResponse.result.instanceId === this._id) {\n this._eventManager.dispatch(rpcResponse.result.event);\n }\n\n if (rpcResponse.method === 'onUnfreeze' && rpcResponse.result.instanceId === this._id) {\n await this._updateDotLottieInstanceState();\n this._dotLottieInstanceState.isFrozen = false;\n this._eventManager.dispatch(rpcResponse.result.event);\n }\n\n if (rpcResponse.method === 'onFrame' && rpcResponse.result.instanceId === this._id) {\n this._dotLottieInstanceState.currentFrame = (rpcResponse.result.event as FrameEvent).currentFrame;\n this._eventManager.dispatch(rpcResponse.result.event);\n }\n\n if (rpcResponse.method === 'onRender' && rpcResponse.result.instanceId === this._id) {\n this._eventManager.dispatch(rpcResponse.result.event);\n }\n\n if (rpcResponse.method === 'onFreeze' && rpcResponse.result.instanceId === this._id) {\n await this._updateDotLottieInstanceState();\n this._eventManager.dispatch(rpcResponse.result.event);\n }\n\n if (rpcResponse.method === 'onPause' && rpcResponse.result.instanceId === this._id) {\n await this._updateDotLottieInstanceState();\n this._eventManager.dispatch(rpcResponse.result.event);\n }\n\n if (rpcResponse.method === 'onPlay' && rpcResponse.result.instanceId === this._id) {\n await this._updateDotLottieInstanceState();\n this._eventManager.dispatch(rpcResponse.result.event);\n }\n\n if (rpcResponse.method === 'onStop' && rpcResponse.result.instanceId === this._id) {\n await this._updateDotLottieInstanceState();\n this._eventManager.dispatch(rpcResponse.result.event);\n }\n\n if (rpcResponse.method === 'onLoadError' && rpcResponse.result.instanceId === this._id) {\n await this._updateDotLottieInstanceState();\n this._eventManager.dispatch(rpcResponse.result.event);\n }\n\n if (rpcResponse.method === 'onRenderError' && rpcResponse.result.instanceId === this._id) {\n // Dont update the instance, since the Core crashed its no long accessible. Calling _updateDotLottieInstanceState will cause it to hang indefinitely.\n this._eventManager.dispatch(rpcResponse.result.event);\n }\n\n if (rpcResponse.method === 'onReady' && rpcResponse.result.instanceId === this._id) {\n await this._updateDotLottieInstanceState();\n this._eventManager.dispatch(rpcResponse.result.event);\n }\n\n if (rpcResponse.method === 'onLoop' && rpcResponse.result.instanceId === this._id) {\n await this._updateDotLottieInstanceState();\n this._eventManager.dispatch(rpcResponse.result.event);\n }\n\n if (rpcResponse.method === 'onStateMachineStart' && rpcResponse.result.instanceId === this._id) {\n await this._updateDotLottieInstanceState();\n this._setupStateMachineListeners();\n this._eventManager.dispatch(rpcResponse.result.event);\n }\n\n if (rpcResponse.method === 'onStateMachineStop' && rpcResponse.result.instanceId === this._id) {\n await this._updateDotLottieInstanceState();\n this._cleanupStateMachineListeners();\n this._eventManager.dispatch(rpcResponse.result.event);\n }\n\n if (rpcResponse.method === 'onStateMachineTransition' && rpcResponse.result.instanceId === this._id) {\n await this._updateDotLottieInstanceState();\n this._eventManager.dispatch(rpcResponse.result.event);\n }\n\n if (rpcResponse.method === 'onStateMachineStateEntered' && rpcResponse.result.instanceId === this._id) {\n await this._updateDotLottieInstanceState();\n this._eventManager.dispatch(rpcResponse.result.event);\n }\n\n if (rpcResponse.method === 'onStateMachineStateExit' && rpcResponse.result.instanceId === this._id) {\n await this._updateDotLottieInstanceState();\n this._eventManager.dispatch(rpcResponse.result.event);\n }\n\n if (rpcResponse.method === 'onStateMachineCustomEvent' && rpcResponse.result.instanceId === this._id) {\n await this._updateDotLottieInstanceState();\n this._eventManager.dispatch(rpcResponse.result.event);\n }\n\n if (rpcResponse.method === 'onStateMachineError' && rpcResponse.result.instanceId === this._id) {\n await this._updateDotLottieInstanceState();\n this._eventManager.dispatch(rpcResponse.result.event);\n }\n\n if (\n rpcResponse.method === 'onStateMachineBooleanInputValueChange' &&\n rpcResponse.result.instanceId === this._id\n ) {\n await this._updateDotLottieInstanceState();\n this._eventManager.dispatch(rpcResponse.result.event);\n }\n\n if (\n // eslint-disable-next-line no-secrets/no-secrets\n rpcResponse.method === 'onStateMachineNumericInputValueChange' &&\n rpcResponse.result.instanceId === this._id\n ) {\n await this._updateDotLottieInstanceState();\n this._eventManager.dispatch(rpcResponse.result.event);\n }\n\n if (rpcResponse.method === 'onStateMachineStringInputValueChange' && rpcResponse.result.instanceId === this._id) {\n await this._updateDotLottieInstanceState();\n this._eventManager.dispatch(rpcResponse.result.event);\n }\n\n if (rpcResponse.method === 'onStateMachineInputFired' && rpcResponse.result.instanceId === this._id) {\n await this._updateDotLottieInstanceState();\n this._eventManager.dispatch(rpcResponse.result.event);\n }\n\n if (rpcResponse.method === 'onStateMachineInternalMessage' && rpcResponse.result.instanceId === this._id) {\n await this._updateDotLottieInstanceState();\n\n const internalEvent = rpcResponse.result.event as StateMachineInternalMessage;\n\n if (internalEvent.message.startsWith('OpenUrl: ')) {\n handleOpenUrl(internalEvent.message);\n }\n }\n }\n }\n\n private async _create(config: Config): Promise<void> {\n if (!this._canvas) {\n return;\n }\n\n let offscreen: OffscreenCanvas;\n\n if (this._canvas instanceof HTMLCanvasElement) {\n offscreen = this._canvas.transferControlToOffscreen();\n } else {\n offscreen = this._canvas;\n }\n\n const { instanceId } = await this._sendMessage(\n 'create',\n {\n instanceId: this._id,\n config: {\n ...config,\n canvas: offscreen as unknown as HTMLCanvasElement,\n },\n ...getCanvasSize(this._canvas, config.renderConfig?.devicePixelRatio || getDefaultDPR()),\n },\n [offscreen],\n );\n\n if (instanceId !== this._id) {\n throw new Error('Instance ID mismatch');\n }\n\n this._created = true;\n\n await this._updateDotLottieInstanceState();\n }\n\n public get loopCount(): number {\n return this._dotLottieInstanceState.loopCount;\n }\n\n public get isLoaded(): boolean {\n return this._dotLottieInstanceState.isLoaded;\n }\n\n public get isPlaying(): boolean {\n return this._dotLottieInstanceState.isPlaying;\n }\n\n public get isPaused(): boolean {\n return this._dotLottieInstanceState.isPaused;\n }\n\n public get isStopped(): boolean {\n return this._dotLottieInstanceState.isStopped;\n }\n\n public get currentFrame(): number {\n return this._dotLottieInstanceState.currentFrame;\n }\n\n public get isFrozen(): boolean {\n return this._dotLottieInstanceState.isFrozen;\n }\n\n public get segmentDuration(): number {\n return this._dotLottieInstanceState.segmentDuration;\n }\n\n public get totalFrames(): number {\n return this._dotLottieInstanceState.totalFrames;\n }\n\n public get segment(): [number, number] | undefined {\n return this._dotLottieInstanceState.segment;\n }\n\n public get speed(): number {\n return this._dotLottieInstanceState.speed;\n }\n\n public get duration(): number {\n return this._dotLottieInstanceState.duration;\n }\n\n public get isReady(): boolean {\n return this._dotLottieInstanceState.isReady;\n }\n\n public get mode(): Mode {\n return this._dotLottieInstanceState.mode;\n }\n\n public get canvas(): HTMLCanvasElement | OffscreenCanvas | null {\n return this._canvas;\n }\n\n /**\n * Sets the canvas element for rendering in the worker thread.\n * Cannot change canvas after worker instance is created with a different canvas.\n * @param canvas - HTMLCanvasElement or OffscreenCanvas to render to\n * @returns Promise that resolves when canvas has been set\n * @throws Error if canvas is not HTMLCanvasElement or OffscreenCanvas\n * @throws Error if trying to change canvas after instance is already created\n */\n public async setCanvas(canvas: HTMLCanvasElement | OffscreenCanvas): Promise<void> {\n const isHTMLCanvas = typeof HTMLCanvasElement !== 'undefined' && canvas instanceof HTMLCanvasElement;\n const isOffscreenCanvas = typeof OffscreenCanvas !== 'undefined' && canvas instanceof OffscreenCanvas;\n\n if (!isHTMLCanvas && !isOffscreenCanvas) {\n throw new Error('Worker-based DotLottie requires HTMLCanvasElement or OffscreenCanvas');\n }\n\n if (this._canvas === canvas) return;\n\n if (this._created && this._canvas !== null) {\n throw new Error('Cannot change canvas after worker instance is already created with a different canvas.');\n }\n\n this._canvas = canvas;\n\n if (!this._created && this._pendingConfig) {\n await this._create(this._pendingConfig);\n this._pendingConfig = null;\n }\n }\n\n public get autoplay(): boolean {\n return this._dotLottieInstanceState.autoplay;\n }\n\n public get backgroundColor(): string {\n return this._dotLottieInstanceState.backgroundColor;\n }\n\n public get loop(): boolean {\n return this._dotLottieInstanceState.loop;\n }\n\n public get useFrameInterpolation(): boolean {\n return this._dotLottieInstanceState.useFrameInterpolation;\n }\n\n public get renderConfig(): RenderConfig {\n return this._dotLottieInstanceState.renderConfig;\n }\n\n public get manifest(): Manifest | null {\n return this._dotLottieInstanceState.manifest;\n }\n\n public get activeAnimationId(): string | undefined {\n return this._dotLottieInstanceState.activeAnimationId;\n }\n\n public get marker(): string | undefined {\n return this._dotLottieInstanceState.marker;\n }\n\n public get activeThemeId(): string | undefined {\n return this._dotLottieInstanceState.activeThemeId;\n }\n\n public get layout(): Layout | undefined {\n return this._dotLottieInstanceState.layout;\n }\n\n /**\n * Starts or resumes animation playback in the worker thread.\n * Updates the internal playback state (e.g., isPlaying) to reflect that playback has started.\n * @returns Promise that resolves when playback has started and state has been updated\n */\n public async play(): Promise<void> {\n if (!this._created) return;\n\n await this._sendMessage('play', { instanceId: this._id });\n await this._updateDotLottieInstanceState();\n\n /*\n Check if the canvas is offscreen and freezing is enabled\n If freezeOnOffscreen is true and the canvas is currently outside the viewport,\n we immediately freeze the animation to avoid unnecessary rendering and performance overhead.\n */\n if (\n IS_BROWSER &&\n this._canvas instanceof HTMLCanvasElement &&\n this._dotLottieInstanceState.renderConfig.freezeOnOffscreen &&\n !isElementInViewport(this._canvas)\n ) {\n await this.freeze();\n }\n }\n\n /**\n * Pauses animation playback in the worker thread.\n * Awaits worker response before resolving. Updates isPaused state to true.\n * @returns Promise that resolves when playback has paused\n */\n public async pause(): Promise<void> {\n if (!this._created) return;\n\n await this._sendMessage('pause', { instanceId: this._id });\n await this._updateDotLottieInstanceState();\n }\n\n /**\n * Stops animation playback and resets to start frame in the worker thread.\n * Awaits worker response before resolving. Updates isStopped state to true.\n * @returns Promise that resolves when playback has stopped\n */\n public async stop(): Promise<void> {\n if (!this._created) return;\n\n await this._sendMessage('stop', { instanceId: this._id });\n await this._updateDotLottieInstanceState();\n }\n\n /**\n * Changes the animation playback speed in the worker thread.\n * Awaits worker response before resolving.\n * @param speed - Playback speed multiplier (e.g., 2 for 2x speed, 0.5 for half speed)\n * @returns Promise that resolves when speed has been updated\n */\n public async setSpeed(speed: number): Promise<void> {\n if (!this._created) return;\n\n await this._sendMessage('setSpeed', { instanceId: this._id, speed });\n await this._updateDotLottieInstanceState();\n }\n\n public async setMode(mode: Mode): Promise<void> {\n if (!this._created) return;\n\n await this._sendMessage('setMode', { instanceId: this._id, mode });\n await this._updateDotLottieInstanceState();\n }\n\n public async setFrame(frame: number): Promise<void> {\n if (!this._created) return;\n\n await this._sendMessage('setFrame', { frame, instanceId: this._id });\n await this._updateDotLottieInstanceState();\n }\n\n public async setSegment(start: number, end: number): Promise<void> {\n if (!this._created) return;\n\n await this._sendMessage('setSegment', { instanceId: this._id, segment: [start, end] });\n await this._updateDotLottieInstanceState();\n }\n\n public async setRenderConfig(renderConfig: RenderConfig): Promise<void> {\n if (!this._created) return;\n\n const { devicePixelRatio, freezeOnOffscreen, quality, ...restConfig } = renderConfig;\n\n await this._sendMessage('setRenderConfig', {\n instanceId: this._id,\n renderConfig: {\n ...this._dotLottieInstanceState.renderConfig,\n ...restConfig,\n // devicePixelRatio is a special case, it should be set to the default value if it's not provided\n devicePixelRatio: devicePixelRatio || getDefaultDPR(),\n freezeOnOffscreen: freezeOnOffscreen ?? true,\n ...(quality !== undefined && { quality }),\n },\n });\n\n await this._updateDotLottieInstanceState();\n\n if (IS_BROWSER && this._canvas instanceof HTMLCanvasElement) {\n if (this._dotLottieInstanceState.renderConfig.autoResize) {\n CanvasResizeObserver.observe(this._canvas, this);\n } else {\n CanvasResizeObserver.unobserve(this._canvas);\n }\n\n if (this._dotLottieInstanceState.renderConfig.freezeOnOffscreen) {\n OffscreenObserver.observe(this._canvas, this);\n\n // Check if canvas is currently offscreen and freeze if necessary\n if (!isElementInViewport(this._canvas)) {\n await this.freeze();\n }\n } else {\n OffscreenObserver.unobserve(this._canvas);\n // If the animation was previously frozen, we need to unfreeze it now\n // to ensure it resumes rendering when the canvas is back onscreen.\n if (this._dotLottieInstanceState.isFrozen) {\n await this.unfreeze();\n }\n }\n }\n }\n\n public async setUseFrameInterpolation(useFrameInterpolation: boolean): Promise<void> {\n if (!this._created) return;\n\n await this._sendMessage('setUseFrameInterpolation', { instanceId: this._id, useFrameInterpolation });\n await this._updateDotLottieInstanceState();\n }\n\n public async setTheme(themeId: string): Promise<boolean> {\n if (!this._created) return false;\n\n const result = this._sendMessage('setTheme', { instanceId: this._id, themeId });\n\n await this._updateDotLottieInstanceState();\n\n return result;\n }\n\n /**\n * Dynamically loads a new animation in the worker thread, replacing the current one.\n * Awaits worker response before resolving. Stops current playback and cleans up resources.\n * @param config - Configuration for the new animation (all Config properties except canvas)\n * @returns Promise that resolves when animation has been loaded\n */\n public async load(config: Omit<Config, 'canvas'>): Promise<void> {\n if (!this._created) {\n if (this._pendingConfig) {\n this._pendingConfig = {\n ...this._pendingConfig,\n ...config,\n };\n }\n\n return;\n }\n\n await this._sendMessage('load', { config, instanceId: this._id });\n await this._updateDotLottieInstanceState();\n }\n\n public async setLoop(loop: boolean): Promise<void> {\n if (!this._created) return;\n\n await this._sendMessage('setLoop', { instanceId: this._id, loop });\n await this._updateDotLottieInstanceState();\n }\n\n /**\n * Sets the number of additional times to replay the animation after the first play in the worker thread.\n * Requires loop to be true. A value of 0 means infinite replays; a positive value n means\n * the animation plays a total of n + 1 times (initial play + n replays).\n * @param loopCount - Number of additional replays (0 = infinite, 1 = plays twice, 2 = plays three times, etc.)\n * @returns Promise that resolves when loopCount has been updated\n */\n public async setLoopCount(loopCount: number): Promise<void> {\n if (!this._created) return;\n\n await this._sendMessage('setLoopCount', { instanceId: this._id, loopCount });\n await this._updateDotLottieInstanceState();\n }\n\n /**\n * Recalculates and updates canvas dimensions in the worker thread.\n * Awaits worker response before resolving. Call when canvas container size changes.\n * @returns Promise that resolves when resize has completed\n */\n public async resize(): Promise<void> {\n if (!this._created || !this._canvas) return;\n\n const { height, width } = getCanvasSize(\n this._canvas,\n this._dotLottieInstanceState.renderConfig.devicePixelRatio || getDefaultDPR(),\n );\n\n await this._sendMessage('resize', { height, instanceId: this._id, width });\n await this._updateDotLottieInstanceState();\n }\n\n /**\n * Cleans up and destroys the player instance in the worker thread, releasing resources.\n * Awaits worker response before resolving. Stops playback and removes event listeners.\n * @returns Promise that resolves when cleanup has completed\n */\n public async destroy(): Promise<void> {\n if (!this._created) return;\n\n this._created = false;\n\n await this._sendMessage('destroy', { instanceId: this._id });\n\n this._cleanupStateMachineListeners();\n\n DotLottieWorker._workerManager.unassignAnimationFromWorker(this._id);\n this._eventManager.removeAllEventListeners();\n\n if (IS_BROWSER && this._canvas instanceof HTMLCanvasElement) {\n OffscreenObserver.unobserve(this._canvas);\n CanvasResizeObserver.unobserve(this._canvas);\n }\n }\n\n public async freeze(): Promise<void> {\n if (!this._created) return;\n\n await this._sendMessage('freeze', { instanceId: this._id });\n await this._updateDotLottieInstanceState();\n }\n\n public async unfreeze(): Promise<void> {\n if (!this._created) return;\n\n await this._sendMessage('unfreeze', { instanceId: this._id });\n await this._updateDotLottieInstanceState();\n }\n\n public async setBackgroundColor(backgroundColor: string): Promise<void> {\n if (!this._created) return;\n\n await this._sendMessage('setBackgroundColor', { instanceId: this._id, backgroundColor });\n await this._updateDotLottieInstanceState();\n }\n\n public async loadAnimation(animationId: string): Promise<void> {\n if (!this._created) return;\n\n await this._sendMessage('loadAnimation', { animationId, instanceId: this._id });\n await this._updateDotLottieInstanceState();\n }\n\n public async setLayout(layout: Layout): Promise<void> {\n if (!this._created) return;\n\n await this._sendMessage('setLayout', { instanceId: this._id, layout });\n await this._updateDotLottieInstanceState();\n }\n\n // #region Slots API\n\n public async setSlots(slots: Record<string, unknown>): Promise<void> {\n if (!this._created) return;\n\n await this._sendMessage('setSlots', { instanceId: this._id, slots });\n }\n\n public async getSlotIds(): Promise<string[]> {\n if (!this._created) return [];\n\n return this._sendMessage('getSlotIds', { instanceId: this._id });\n }\n\n public async getSlotType(slotId: string): Promise<SlotType | undefined> {\n if (!this._created) return undefined;\n\n return this._sendMessage('getSlotType', { instanceId: this._id, slotId });\n }\n\n public async getSlot(slotId: string): Promise<unknown> {\n if (!this._created) return undefined;\n\n return this._sendMessage('getSlot', { instanceId: this._id, slotId });\n }\n\n public async getSlots(): Promise<Record<string, unknown>> {\n if (!this._created) return {};\n\n return this._sendMessage('getSlots', { instanceId: this._id });\n }\n\n public async setColorSlot(slotId: string, value: ColorSlotValue): Promise<boolean> {\n if (!this._created) return false;\n\n return this._sendMessage('setColorSlot', { instanceId: this._id, slotId, value });\n }\n\n public async setScalarSlot(slotId: string, value: ScalarSlotValue): Promise<boolean> {\n if (!this._created) return false;\n\n return this._sendMessage('setScalarSlot', { instanceId: this._id, slotId, value });\n }\n\n public async setVectorSlot(slotId: string, value: VectorSlotValue): Promise<boolean> {\n if (!this._created) return false;\n\n return this._sendMessage('setVectorSlot', { instanceId: this._id, slotId, value });\n }\n\n public async setGradientSlot(slotId: string, value: GradientSlotValue, colorStopCount: number): Promise<boolean> {\n if (!this._created) return false;\n\n return this._sendMessage('setGradientSlot', { instanceId: this._id, slotId, value, colorStopCount });\n }\n\n public async setTextSlot(slotId: string, value: TextSlotValue): Promise<boolean> {\n if (!this._created) return false;\n\n return this._sendMessage('setTextSlot', { instanceId: this._id, slotId, value });\n }\n\n public async resetSlot(slotId: string): Promise<boolean> {\n if (!this._created) return false;\n\n return this._sendMessage('resetSlot', { instanceId: this._id, slotId });\n }\n\n public async clearSlot(slotId: string): Promise<boolean> {\n if (!this._created) return false;\n\n return this._sendMessage('clearSlot', { instanceId: this._id, slotId });\n }\n\n public async resetSlots(): Promise<boolean> {\n if (!this._created) return false;\n\n return this._sendMessage('resetSlots', { instanceId: this._id });\n }\n\n public async clearSlots(): Promise<boolean> {\n if (!this._created) return false;\n\n return this._sendMessage('clearSlots', { instanceId: this._id });\n }\n\n // #endregion\n\n private async _updateDotLottieInstanceState(): Promise<void> {\n if (!this._created) return;\n\n const result = await this._sendMessage('getDotLottieInstanceState', { instanceId: this._id });\n\n this._dotLottieInstanceState = result.state;\n }\n\n public markers(): Marker[] {\n return this._dotLottieInstanceState.markers;\n }\n\n public async setMarker(marker: string): Promise<void> {\n if (!this._created) return;\n\n await this._sendMessage('setMarker', { instanceId: this._id, marker });\n await this._updateDotLottieInstanceState();\n }\n\n public async setThemeData(themeData: string): Promise<boolean> {\n if (!this._created) return false;\n\n const loaded = await this._sendMessage('setThemeData', { instanceId: this._id, themeData });\n\n await this._updateDotLottieInstanceState();\n\n return loaded;\n }\n\n public async setViewport(x: number, y: number, width: number, height: number): Promise<boolean> {\n if (!this._created) return false;\n\n return this._sendMessage('setViewport', { x, y, width, height, instanceId: this._id });\n }\n\n public async animationSize(): Promise<{ height: number; width: number }> {\n if (!this._created) return { height: 0, width: 0 };\n\n return this._sendMessage('animationSize', { instanceId: this._id });\n }\n\n public async setTransform(transform: Transform): Promise<boolean> {\n if (!this._created) return false;\n\n return this._sendMessage('setTransform', { instanceId: this._id, transform });\n }\n\n public async getTransform(): Promise<Transform | undefined> {\n if (!this._created) return undefined;\n\n return this._sendMessage('getTransform', { instanceId: this._id });\n }\n\n private async _sendMessage<T extends keyof MethodParamsMap>(\n method: T,\n params: MethodParamsMap[T],\n transfer?: Transferable[],\n ): Promise<MethodResultMap[T]> {\n const rpcRequest: RpcRequest<T> = {\n id: `dotlottie-request-${generateUniqueId()}`,\n method,\n params,\n };\n\n this._worker.postMessage(rpcRequest, transfer || []);\n\n return new Promise((resolve, reject) => {\n const onMessage = (event: MessageEvent): void => {\n const rpcResponse: RpcResponse<T> = event.data;\n\n // Check if the response corresponds to the request\n if (rpcResponse.id === rpcRequest.id) {\n this._worker.removeEventListener('message', onMessage);\n\n if (rpcResponse.error) {\n reject(new Error(`Failed to execute method ${method}: ${rpcResponse.error}`));\n } else {\n resolve(rpcResponse.result);\n }\n }\n };\n\n this._worker.addEventListener('message', onMessage);\n });\n }\n\n public addEventListener<T extends EventType>(type: T, listener: EventListener<T>): void {\n this._eventManager.addEventListener(type, listener);\n }\n\n public removeEventListener<T extends EventType>(type: T, listener?: EventListener<T>): void {\n this._eventManager.removeEventListener(type, listener);\n }\n\n public static setWasmUrl(url: string): void {\n DotLottieWorker._wasmUrl = url;\n }\n\n /**\n * @experimental\n *\n * Register a custom font for use in animations in worker contexts\n * @param fontName - The name of the font to register\n * @param fontSource - Either a URL string to fetch the font, or ArrayBuffer/Uint8Array of font data\n * @returns Promise<boolean> - true if registration message was sent successfully\n */\n public static async registerFont(fontName: string, fontSource: string | ArrayBuffer | Uint8Array): Promise<boolean> {\n try {\n const id = generateUniqueId();\n\n DotLottieWorker._workerManager.broadcastMessage({\n id,\n method: 'registerFont',\n params: {\n fontName,\n fontSource,\n },\n });\n\n // Note: we can't easily wait for responses from all workers in a broadcast,\n // so we return true if the broadcast was sent successfully\n return true;\n } catch (error) {\n console.error(`Error broadcasting registerFont for \"${fontName}\":`, error);\n\n return false;\n }\n }\n\n /**\n * @experimental\n * Load a state machine by ID\n * @param stateMachineId - The ID of the state machine to load\n * @returns true if the state machine was loaded successfully\n */\n public async stateMachineLoad(stateMachineId: string): Promise<boolean> {\n if (!this._created) return false;\n\n const result = await this._sendMessage('stateMachineLoad', { instanceId: this._id, stateMachineId });\n\n await this._updateDotLottieInstanceState();\n\n return result;\n }\n\n /**\n * @experimental\n * Load a state machine from data string\n * @param stateMachineData - The state machine data as a string\n * @returns true if the state machine was loaded successfully\n */\n public async stateMachineLoadData(stateMachineData: string): Promise<boolean> {\n if (!this._created) return false;\n\n const result = await this._sendMessage('stateMachineLoadData', { instanceId: this._id, stateMachineData });\n\n await this._updateDotLottieInstanceState();\n\n return result;\n }\n\n /**\n * @experimental\n * Start the state machine\n * @returns true if the state machine was started successfully\n */\n public async stateMachineStart(): Promise<boolean> {\n if (!this._created) return false;\n\n const started = await this._sendMessage('stateMachineStart', { instanceId: this._id });\n\n if (started) {\n this._setupStateMachineListeners();\n await this._updateDotLottieInstanceState();\n }\n\n return started;\n }\n\n /**\n * @experimental\n * Stop the state machine\n * @returns true if the state machine was stopped successfully\n */\n public async stateMachineStop(): Promise<boolean> {\n if (!this._created) return false;\n\n this._cleanupStateMachineListeners();\n\n return this._sendMessage('stateMachineStop', { instanceId: this._id });\n }\n\n /**\n * @experimental\n * Set a numeric input value for the state machine\n * @param name - The name of the numeric input\n * @param value - The numeric value to set\n * @returns true if the input was set successfully\n */\n public async stateMachineSetNumericInput(name: string, value: number): Promise<boolean> {\n if (!this._created) return false;\n\n return this._sendMessage('stateMachineSetNumericInput', { instanceId: this._id, name, value });\n }\n\n /**\n * @experimental\n * Set a boolean input value for the state machine\n * @param name - The name of the boolean input\n * @param value - The boolean value to set\n * @returns true if the input was set successfully\n */\n public async stateMachineSetBooleanInput(name: string, value: boolean): Promise<boolean> {\n if (!this._created) return false;\n\n return this._sendMessage('stateMachineSetBooleanInput', { instanceId: this._id, name, value });\n }\n\n /**\n * @experimental\n * Set the state machine config\n * @param config - The state machine config\n */\n public async stateMachineSetConfig(config: StateMachineConfig | null): Promise<void> {\n if (!this._created) return;\n\n this._sendMessage('stateMachineSetConfig', { instanceId: this._id, config });\n }\n\n /**\n * @experimental\n * Set a string input value for the state machine\n * @param name - The name of the string input\n * @param value - The string value to set\n * @returns true if the input was set successfully\n */\n public async stateMachineSetStringInput(name: string, value: string): Promise<boolean> {\n if (!this._created) return false;\n\n return this._sendMessage('stateMachineSetStringInput', { instanceId: this._id, name, value });\n }\n\n /**\n * @experimental\n * Get a numeric input value from the state machine\n * @param name - The name of the numeric input\n * @returns The numeric value or undefined if not found\n */\n public async stateMachineGetNumericInput(name: string): Promise<number | undefined> {\n if (!this._created) return undefined;\n\n return this._sendMessage('stateMachineGetNumericInput', { instanceId: this._id, name });\n }\n\n /**\n * @experimental\n * Get a boolean input value from the state machine\n * @param name - The name of the boolean input\n * @returns The boolean value or undefined if not found\n */\n public async stateMachineGetBooleanInput(name: string): Promise<boolean | undefined> {\n if (!this._created) return undefined;\n\n return this._sendMessage('stateMachineGetBooleanInput', { instanceId: this._id, name });\n }\n\n /**\n * @experimental\n * Get a string input value from the state machine\n * @param name - The name of the string input\n * @returns The string value or undefined if not found\n */\n public async stateMachineGetStringInput(name: string): Promise<string | undefined> {\n if (!this._created) return undefined;\n\n return this._sendMessage('stateMachineGetStringInput', { instanceId: this._id, name });\n }\n\n /**\n * @experimental\n * Get all inputs\n * @returns All input keys, followed by their type\n */\n public async stateMachineGetInputs(): Promise<string[] | undefined> {\n if (!this._created) return undefined;\n\n return this._sendMessage('stateMachineGetInputs', { instanceId: this._id });\n }\n\n /**\n * @experimental\n * Fire an event in the state machine\n * @param name - The name of the event to fire\n */\n public async stateMachineFireEvent(name: string): Promise<void> {\n if (!this._created) return;\n\n this._sendMessage('stateMachineFireEvent', { instanceId: this._id, name });\n }\n\n /**\n * @experimental\n * Get the current status of the state machine\n * @returns The current status of the state machine as a string\n */\n public async stateMachineGetStatus(): Promise<string> {\n if (!this._created) return '';\n\n return this._sendMessage('stateMachineGetStatus', { instanceId: this._id });\n }\n\n /**\n * @experimental\n * Get the current state of the state machine\n * @returns The current state of the state machine as a string\n */\n public async stateMachineGetCurrentState(): Promise<string> {\n if (!this._created) return '';\n\n return this._sendMessage('stateMachineGetCurrentState', { instanceId: this._id });\n }\n\n /**\n * @experimental\n * Get the active state machine ID\n * @returns The active state machine ID as a string\n */\n public async stateMachineGetActiveId(): Promise<string> {\n if (!this._created) return '';\n\n return this._sendMessage('stateMachineGetActiveId', { instanceId: this._id });\n }\n\n /**\n * @experimental\n * Override the current state of the state machine\n * @param state - The state to override to\n * @param immediate - Whether to immediately transition to the state\n * @returns true if the state override was successful\n */\n public async stateMachineOverrideState(state: string, immediate: boolean = false): Promise<boolean> {\n if (!this._created) return false;\n\n return this._sendMessage('stateMachineOverrideState', { instanceId: this._id, state, immediate });\n }\n\n /**\n * @experimental\n * Get a specific state machine by ID\n * @param stateMachineId - The ID of the state machine to get\n * @returns The state machine data as a string\n */\n public async stateMachineGet(stateMachineId: string): Promise<string> {\n if (!this._created) return '';\n\n return this._sendMessage('stateMachineGet', { instanceId: this._id, stateMachineId });\n }\n\n /**\n * @experimental\n * Get the list of state machine listeners\n * @returns Array of listener names\n */\n public async stateMachineGetListeners(): Promise<string[]> {\n if (!this._created) return [];\n\n return this._sendMessage('stateMachineGetListeners', { instanceId: this._id });\n }\n\n /**\n * @experimental\n * Post a click event to the state machine\n * @param x - The x coordinate of the click\n * @param y - The y coordinate of the click\n * @returns The event result or undefined\n */\n public async stateMachinePostClickEvent(x: number, y: number): Promise<void> {\n if (!this._created) return undefined;\n\n return this._sendMessage('stateMachinePostClickEvent', { instanceId: this._id, x, y });\n }\n\n /**\n * @experimental\n * Post a pointer up event to the state machine\n * @param x - The x coordinate of the pointer\n * @param y - The y coordinate of the pointer\n * @returns The event result or undefined\n */\n public async stateMachinePostPointerUpEvent(x: number, y: number): Promise<void> {\n if (!this._created) return undefined;\n\n return this._sendMessage('stateMachinePostPointerUpEvent', { instanceId: this._id, x, y });\n }\n\n /**\n * @experimental\n * Post a pointer down event to the state machine\n * @param x - The x coordinate of the pointer\n * @param y - The y coordinate of the pointer\n * @returns The event result or undefined\n */\n public async stateMachinePostPointerDownEvent(x: number, y: number): Promise<void> {\n if (!this._created) return undefined;\n\n return this._sendMessage('stateMachinePostPointerDownEvent', { instanceId: this._id, x, y });\n }\n\n /**\n * @experimental\n * Post a pointer move event to the state machine\n * @param x - The x coordinate of the pointer\n * @param y - The y coordinate of the pointer\n * @returns The event result or undefined\n */\n public async stateMachinePostPointerMoveEvent(x: number, y: number): Promise<void> {\n if (!this._created) return undefined;\n\n return this._sendMessage('stateMachinePostPointerMoveEvent', { instanceId: this._id, x, y });\n }\n\n /**\n * @experimental\n * Post a pointer enter event to the state machine\n * @param x - The x coordinate of the pointer\n * @param y - The y coordinate of the pointer\n * @returns The event result or undefined\n */\n public async stateMachinePostPointerEnterEvent(x: number, y: number): Promise<void> {\n if (!this._created) return undefined;\n\n return this._sendMessage('stateMachinePostPointerEnterEvent', { instanceId: this._id, x, y });\n }\n\n /**\n * @experimental\n * Post a pointer exit event to the state machine\n * @param x - The x coordinate of the pointer\n * @param y - The y coordinate of the pointer\n * @returns The event result or undefined\n */\n public async stateMachinePostPointerExitEvent(x: number, y: number): Promise<void> {\n if (!this._created) return undefined;\n\n return this._sendMessage('stateMachinePostPointerExitEvent', { instanceId: this._id, x, y });\n }\n\n private _onClick(event: MouseEvent): void {\n const position = getPointerPosition(event);\n\n if (position) {\n this._sendMessage('stateMachinePostClickEvent', { instanceId: this._id, x: position.x, y: position.y });\n }\n }\n\n private _onPointerUp(event: PointerEvent): void {\n const position = getPointerPosition(event);\n\n if (position) {\n this._sendMessage('stateMachinePostPointerUpEvent', { instanceId: this._id, x: position.x, y: position.y });\n }\n }\n\n private _onPointerDown(event: PointerEvent): void {\n const position = getPointerPosition(event);\n\n if (position) {\n this._sendMessage('stateMachinePostPointerDownEvent', { instanceId: this._id, x: position.x, y: position.y });\n }\n }\n\n private _onPointerMove(event: PointerEvent): void {\n const position = getPointerPosition(event);\n\n if (position) {\n this._sendMessage('stateMachinePostPointerMoveEvent', { instanceId: this._id, x: position.x, y: position.y });\n }\n }\n\n private _onPointerEnter(event: PointerEvent): void {\n const position = getPointerPosition(event);\n\n if (position) {\n this._sendMessage('stateMachinePostPointerEnterEvent', { instanceId: this._id, x: position.x, y: position.y });\n }\n }\n\n private _onPointerLeave(event: PointerEvent): void {\n const position = getPointerPosition(event);\n\n if (position) {\n this._sendMessage('stateMachinePostPointerExitEvent', { instanceId: this._id, x: position.x, y: position.y });\n }\n }\n\n private async _setupStateMachineListeners(): Promise<void> {\n if (IS_BROWSER && this._canvas instanceof HTMLCanvasElement && this.isLoaded) {\n const listeners = await this._sendMessage('stateMachineGetListeners', { instanceId: this._id });\n\n if (listeners.length === 0) {\n return;\n }\n\n // Clean up any existing listeners first\n this._cleanupStateMachineListeners();\n\n if (listeners.includes('Click')) {\n this._boundOnClick = this._onClick.bind(this);\n this._canvas.addEventListener('click', this._boundOnClick);\n }\n\n if (listeners.includes('PointerUp')) {\n this._boundOnPointerUp = this._onPointerUp.bind(this);\n this._canvas.addEventListener('pointerup', this._boundOnPointerUp);\n }\n\n if (listeners.includes('PointerDown')) {\n this._boundOnPointerDown = this._onPointerDown.bind(this);\n this._canvas.addEventListener('pointerdown', this._boundOnPointerDown);\n }\n\n if (listeners.includes('PointerMove')) {\n this._boundOnPointerMove = this._onPointerMove.bind(this);\n this._canvas.addEventListener('pointermove', this._boundOnPointerMove);\n }\n\n if (listeners.includes('PointerEnter')) {\n this._boundOnPointerEnter = this._onPointerEnter.bind(this);\n this._canvas.addEventListener('pointerenter', this._boundOnPointerEnter);\n }\n\n if (listeners.includes('PointerExit')) {\n this._boundOnPointerLeave = this._onPointerLeave.bind(this);\n this._canvas.addEventListener('pointerleave', this._boundOnPointerLeave);\n }\n }\n }\n\n private _cleanupStateMachineListeners(): void {\n if (IS_BROWSER && this._canvas instanceof HTMLCanvasElement) {\n if (this._boundOnClick) {\n this._canvas.removeEventListener('click', this._boundOnClick);\n this._boundOnClick = null;\n }\n if (this._boundOnPointerUp) {\n this._canvas.removeEventListener('pointerup', this._boundOnPointerUp);\n this._boundOnPointerUp = null;\n }\n if (this._boundOnPointerDown) {\n this._canvas.removeEventListener('pointerdown', this._boundOnPointerDown);\n this._boundOnPointerDown = null;\n }\n if (this._boundOnPointerMove) {\n this._canvas.removeEventListener('pointermove', this._boundOnPointerMove);\n this._boundOnPointerMove = null;\n }\n if (this._boundOnPointerEnter) {\n this._canvas.removeEventListener('pointerenter', this._boundOnPointerEnter);\n this._boundOnPointerEnter = null;\n }\n if (this._boundOnPointerLeave) {\n this._canvas.removeEventListener('pointerleave', this._boundOnPointerLeave);\n this._boundOnPointerLeave = null;\n }\n }\n }\n}\n","'use client';\nimport Link from 'next/link';\nimport { useSearchParams } from 'next/navigation';\nimport type { Language } from 'prism-react-renderer';\nimport { Highlight } from 'prism-react-renderer';\nimport { Fragment, useEffect, useRef } from 'react';\nimport { useFragmentIdentifier } from '../hooks/use-fragment-identifier';\nimport { cn } from '../utils';\n\ninterface CodeProps {\n children: string;\n className?: string;\n language?: Language;\n}\n\nexport const codeTheme = {\n plain: {\n color: '#EDEDEF',\n fontSize: 13,\n fontFamily: 'MonoLisa, Menlo, monospace',\n },\n styles: [\n {\n types: ['comment'],\n style: {\n color: '#706F78',\n },\n },\n {\n types: ['atrule', 'keyword', 'attr-name', 'selector'],\n style: {\n color: '#7E7D86',\n },\n },\n {\n types: ['punctuation', 'operator'],\n style: {\n color: '#706F78',\n },\n },\n {\n types: ['class-name', 'function', 'tag', 'key-white'],\n style: {\n color: '#EDEDEF',\n },\n },\n ],\n};\n\nconst lineHashRegex = /#L(?<start>\\d+)(?:,(?<end>\\d+))?/;\n\nexport const Code: React.FC<Readonly<CodeProps>> = ({\n children,\n language = 'html',\n}) => {\n const locationHash = useFragmentIdentifier();\n const highlight = (() => {\n if (locationHash) {\n const match = locationHash.match(lineHashRegex);\n if (match?.groups?.start) {\n const start = Number.parseInt(match.groups.start, 10);\n const end = match.groups.end\n ? Number.parseInt(match.groups.end, 10)\n : start;\n return [start, end] as const;\n }\n }\n })();\n\n const isHighlighting = (line: number) => {\n if (!highlight) return false;\n\n return highlight[0] <= line && highlight[1] >= line;\n };\n\n const scrollerRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const scroller = scrollerRef.current;\n if (highlight && scroller) {\n const lineElement = scroller.querySelector(`#L${highlight[0]}`);\n if (lineElement instanceof HTMLAnchorElement) {\n scroller.scrollTo({\n top: Math.max(lineElement.offsetTop - 325, 0),\n behavior: 'smooth',\n });\n }\n }\n }, [highlight]);\n\n const searchParams = useSearchParams();\n\n const value = children.trim();\n\n return (\n <Highlight code={value} language={language} theme={codeTheme}>\n {({ tokens, getLineProps, getTokenProps }) => (\n <>\n <div\n className=\"absolute right-0 top-0 h-px w-[200px]\"\n style={{\n background:\n 'linear-gradient(90deg, rgba(56, 189, 248, 0) 0%, rgba(56, 189, 248, 0) 0%, rgba(232, 232, 232, 0.2) 33.02%, rgba(143, 143, 143, 0.6719) 64.41%, rgba(236, 72, 153, 0) 98.93%)',\n }}\n />\n <div\n ref={scrollerRef}\n className=\"max-h-[650px] h-full p-4 after:w-full after:static after:block after:h-4 after:content-[''] overflow-auto\"\n >\n <div className=\"grid grid-cols-[auto_1fr] w-full\">\n {tokens.map((line, i) => {\n const lineProps = getLineProps({\n line,\n key: i,\n });\n const isHighlighted = isHighlighting(i + 1);\n const isHighlightStart = highlight && highlight[0] === i + 1;\n const isHighlightEnd = highlight && highlight[1] === i + 1;\n\n return (\n <Fragment key={i}>\n {/* Line number cell */}\n <Link\n id={`L${i + 1}`}\n href={{\n hash: `#L${i + 1}`,\n search: searchParams.toString(),\n }}\n scroll={false}\n aria-selected={isHighlighted}\n className={cn(\n 'text-[#49494f] relative text-[13px] font-light font-[MonoLisa,Menlo,monospace] align-middle scroll-mt-[325px] select-none pr-3 cursor-pointer hover:text-slate-12 transition-colors',\n 'aria-selected:text-cyan-11 aria-selected:hover:text-cyan-11 aria-selected:bg-cyan-5 aria-selected:[&+*]:bg-cyan-5',\n isHighlightStart && 'rounded-tl-sm',\n isHighlightEnd && 'rounded-bl-sm',\n )}\n type=\"button\"\n >\n {i + 1}\n </Link>\n\n {/* Code content cell */}\n <div\n {...lineProps}\n className={cn('whitespace-pre transition-colors', {\n \"before:mr-2 before:text-slate-11 before:content-['$']\":\n language === 'bash' && tokens.length === 1,\n })}\n >\n {line.map((token, key) => {\n const tokenProps = getTokenProps({\n token,\n });\n const isException =\n token.content === 'from' &&\n line[key + 1]?.content === ':';\n const newTypes = isException\n ? [...token.types, 'key-white']\n : token.types;\n token.types = newTypes;\n\n return (\n <Fragment key={key}>\n <span {...tokenProps} />\n </Fragment>\n );\n })}\n </div>\n </Fragment>\n );\n })}\n </div>\n </div>\n <div\n className=\"absolute bottom-0 left-0 h-px w-[200px]\"\n style={{\n background:\n 'linear-gradient(90deg, rgba(56, 189, 248, 0) 0%, rgba(56, 189, 248, 0) 0%, rgba(232, 232, 232, 0.2) 33.02%, rgba(143, 143, 143, 0.6719) 64.41%, rgba(236, 72, 153, 0) 98.93%)',\n }}\n />\n </>\n )}\n </Highlight>\n );\n};\n","var __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nvar __objRest = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\nvar __commonJS = (cb, mod) => function __require() {\n return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;\n};\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\n\n// ../../node_modules/.pnpm/prismjs@1.29.0_patch_hash=vrxx3pzkik6jpmgpayxfjunetu/node_modules/prismjs/prism.js\nvar require_prism = __commonJS({\n \"../../node_modules/.pnpm/prismjs@1.29.0_patch_hash=vrxx3pzkik6jpmgpayxfjunetu/node_modules/prismjs/prism.js\"(exports, module) {\n var Prism2 = function() {\n var lang = /(?:^|\\s)lang(?:uage)?-([\\w-]+)(?=\\s|$)/i;\n var uniqueId = 0;\n var plainTextGrammar = {};\n var _ = {\n /**\n * A namespace for utility methods.\n *\n * All function in this namespace that are not explicitly marked as _public_ are for __internal use only__ and may\n * change or disappear at any time.\n *\n * @namespace\n * @memberof Prism\n */\n util: {\n encode: function encode(tokens) {\n if (tokens instanceof Token) {\n return new Token(tokens.type, encode(tokens.content), tokens.alias);\n } else if (Array.isArray(tokens)) {\n return tokens.map(encode);\n } else {\n return tokens.replace(/&/g, \"&amp;\").replace(/</g, \"&lt;\").replace(/\\u00a0/g, \" \");\n }\n },\n /**\n * Returns the name of the type of the given value.\n *\n * @param {any} o\n * @returns {string}\n * @example\n * type(null) === 'Null'\n * type(undefined) === 'Undefined'\n * type(123) === 'Number'\n * type('foo') === 'String'\n * type(true) === 'Boolean'\n * type([1, 2]) === 'Array'\n * type({}) === 'Object'\n * type(String) === 'Function'\n * type(/abc+/) === 'RegExp'\n */\n type: function(o) {\n return Object.prototype.toString.call(o).slice(8, -1);\n },\n /**\n * Returns a unique number for the given object. Later calls will still return the same number.\n *\n * @param {Object} obj\n * @returns {number}\n */\n objId: function(obj) {\n if (!obj[\"__id\"]) {\n Object.defineProperty(obj, \"__id\", { value: ++uniqueId });\n }\n return obj[\"__id\"];\n },\n /**\n * Creates a deep clone of the given object.\n *\n * The main intended use of this function is to clone language definitions.\n *\n * @param {T} o\n * @param {Record<number, any>} [visited]\n * @returns {T}\n * @template T\n */\n clone: function deepClone(o, visited) {\n visited = visited || {};\n var clone;\n var id;\n switch (_.util.type(o)) {\n case \"Object\":\n id = _.util.objId(o);\n if (visited[id]) {\n return visited[id];\n }\n clone = /** @type {Record<string, any>} */\n {};\n visited[id] = clone;\n for (var key in o) {\n if (o.hasOwnProperty(key)) {\n clone[key] = deepClone(o[key], visited);\n }\n }\n return (\n /** @type {any} */\n clone\n );\n case \"Array\":\n id = _.util.objId(o);\n if (visited[id]) {\n return visited[id];\n }\n clone = [];\n visited[id] = clone;\n /** @type {Array} */\n /** @type {any} */\n o.forEach(function(v, i) {\n clone[i] = deepClone(v, visited);\n });\n return (\n /** @type {any} */\n clone\n );\n default:\n return o;\n }\n },\n /**\n * Returns the Prism language of the given element set by a `language-xxxx` or `lang-xxxx` class.\n *\n * If no language is set for the element or the element is `null` or `undefined`, `none` will be returned.\n *\n * @param {Element} element\n * @returns {string}\n */\n getLanguage: function(element) {\n while (element) {\n var m = lang.exec(element.className);\n if (m) {\n return m[1].toLowerCase();\n }\n element = element.parentElement;\n }\n return \"none\";\n },\n /**\n * Sets the Prism `language-xxxx` class of the given element.\n *\n * @param {Element} element\n * @param {string} language\n * @returns {void}\n */\n setLanguage: function(element, language) {\n element.className = element.className.replace(RegExp(lang, \"gi\"), \"\");\n element.classList.add(\"language-\" + language);\n },\n /**\n * Returns whether a given class is active for `element`.\n *\n * The class can be activated if `element` or one of its ancestors has the given class and it can be deactivated\n * if `element` or one of its ancestors has the negated version of the given class. The _negated version_ of the\n * given class is just the given class with a `no-` prefix.\n *\n * Whether the class is active is determined by the closest ancestor of `element` (where `element` itself is\n * closest ancestor) that has the given class or the negated version of it. If neither `element` nor any of its\n * ancestors have the given class or the negated version of it, then the default activation will be returned.\n *\n * In the paradoxical situation where the closest ancestor contains __both__ the given class and the negated\n * version of it, the class is considered active.\n *\n * @param {Element} element\n * @param {string} className\n * @param {boolean} [defaultActivation=false]\n * @returns {boolean}\n */\n isActive: function(element, className, defaultActivation) {\n var no = \"no-\" + className;\n while (element) {\n var classList = element.classList;\n if (classList.contains(className)) {\n return true;\n }\n if (classList.contains(no)) {\n return false;\n }\n element = element.parentElement;\n }\n return !!defaultActivation;\n }\n },\n /**\n * This namespace contains all currently loaded languages and the some helper functions to create and modify languages.\n *\n * @namespace\n * @memberof Prism\n * @public\n */\n languages: {\n /**\n * The grammar for plain, unformatted text.\n */\n plain: plainTextGrammar,\n plaintext: plainTextGrammar,\n text: plainTextGrammar,\n txt: plainTextGrammar,\n /**\n * Creates a deep copy of the language with the given id and appends the given tokens.\n *\n * If a token in `redef` also appears in the copied language, then the existing token in the copied language\n * will be overwritten at its original position.\n *\n * ## Best practices\n *\n * Since the position of overwriting tokens (token in `redef` that overwrite tokens in the copied language)\n * doesn't matter, they can technically be in any order. However, this can be confusing to others that trying to\n * understand the language definition because, normally, the order of tokens matters in Prism grammars.\n *\n * Therefore, it is encouraged to order overwriting tokens according to the positions of the overwritten tokens.\n * Furthermore, all non-overwriting tokens should be placed after the overwriting ones.\n *\n * @param {string} id The id of the language to extend. This has to be a key in `Prism.languages`.\n * @param {Grammar} redef The new tokens to append.\n * @returns {Grammar} The new language created.\n * @public\n * @example\n * Prism.languages['css-with-colors'] = Prism.languages.extend('css', {\n * // Prism.languages.css already has a 'comment' token, so this token will overwrite CSS' 'comment' token\n * // at its original position\n * 'comment': { ... },\n * // CSS doesn't have a 'color' token, so this token will be appended\n * 'color': /\\b(?:red|green|blue)\\b/\n * });\n */\n extend: function(id, redef) {\n var lang2 = _.util.clone(_.languages[id]);\n for (var key in redef) {\n lang2[key] = redef[key];\n }\n return lang2;\n },\n /**\n * Inserts tokens _before_ another token in a language definition or any other grammar.\n *\n * ## Usage\n *\n * This helper method makes it easy to modify existing languages. For example, the CSS language definition\n * not only defines CSS highlighting for CSS documents, but also needs to define highlighting for CSS embedded\n * in HTML through `<style>` elements. To do this, it needs to modify `Prism.languages.markup` and add the\n * appropriate tokens. However, `Prism.languages.markup` is a regular JavaScript object literal, so if you do\n * this:\n *\n * ```js\n * Prism.languages.markup.style = {\n * // token\n * };\n * ```\n *\n * then the `style` token will be added (and processed) at the end. `insertBefore` allows you to insert tokens\n * before existing tokens. For the CSS example above, you would use it like this:\n *\n * ```js\n * Prism.languages.insertBefore('markup', 'cdata', {\n * 'style': {\n * // token\n * }\n * });\n * ```\n *\n * ## Special cases\n *\n * If the grammars of `inside` and `insert` have tokens with the same name, the tokens in `inside`'s grammar\n * will be ignored.\n *\n * This behavior can be used to insert tokens after `before`:\n *\n * ```js\n * Prism.languages.insertBefore('markup', 'comment', {\n * 'comment': Prism.languages.markup.comment,\n * // tokens after 'comment'\n * });\n * ```\n *\n * ## Limitations\n *\n * The main problem `insertBefore` has to solve is iteration order. Since ES2015, the iteration order for object\n * properties is guaranteed to be the insertion order (except for integer keys) but some browsers behave\n * differently when keys are deleted and re-inserted. So `insertBefore` can't be implemented by temporarily\n * deleting properties which is necessary to insert at arbitrary positions.\n *\n * To solve this problem, `insertBefore` doesn't actually insert the given tokens into the target object.\n * Instead, it will create a new object and replace all references to the target object with the new one. This\n * can be done without temporarily deleting properties, so the iteration order is well-defined.\n *\n * However, only references that can be reached from `Prism.languages` or `insert` will be replaced. I.e. if\n * you hold the target object in a variable, then the value of the variable will not change.\n *\n * ```js\n * var oldMarkup = Prism.languages.markup;\n * var newMarkup = Prism.languages.insertBefore('markup', 'comment', { ... });\n *\n * assert(oldMarkup !== Prism.languages.markup);\n * assert(newMarkup === Prism.languages.markup);\n * ```\n *\n * @param {string} inside The property of `root` (e.g. a language id in `Prism.languages`) that contains the\n * object to be modified.\n * @param {string} before The key to insert before.\n * @param {Grammar} insert An object containing the key-value pairs to be inserted.\n * @param {Object<string, any>} [root] The object containing `inside`, i.e. the object that contains the\n * object to be modified.\n *\n * Defaults to `Prism.languages`.\n * @returns {Grammar} The new grammar object.\n * @public\n */\n insertBefore: function(inside, before, insert, root) {\n root = root || /** @type {any} */\n _.languages;\n var grammar = root[inside];\n var ret = {};\n for (var token in grammar) {\n if (grammar.hasOwnProperty(token)) {\n if (token == before) {\n for (var newToken in insert) {\n if (insert.hasOwnProperty(newToken)) {\n ret[newToken] = insert[newToken];\n }\n }\n }\n if (!insert.hasOwnProperty(token)) {\n ret[token] = grammar[token];\n }\n }\n }\n var old = root[inside];\n root[inside] = ret;\n _.languages.DFS(_.languages, function(key, value) {\n if (value === old && key != inside) {\n this[key] = ret;\n }\n });\n return ret;\n },\n // Traverse a language definition with Depth First Search\n DFS: function DFS(o, callback, type, visited) {\n visited = visited || {};\n var objId = _.util.objId;\n for (var i in o) {\n if (o.hasOwnProperty(i)) {\n callback.call(o, i, o[i], type || i);\n var property = o[i];\n var propertyType = _.util.type(property);\n if (propertyType === \"Object\" && !visited[objId(property)]) {\n visited[objId(property)] = true;\n DFS(property, callback, null, visited);\n } else if (propertyType === \"Array\" && !visited[objId(property)]) {\n visited[objId(property)] = true;\n DFS(property, callback, i, visited);\n }\n }\n }\n }\n },\n plugins: {},\n /**\n * Low-level function, only use if you know what you’re doing. It accepts a string of text as input\n * and the language definitions to use, and returns a string with the HTML produced.\n *\n * The following hooks will be run:\n * 1. `before-tokenize`\n * 2. `after-tokenize`\n * 3. `wrap`: On each {@link Token}.\n *\n * @param {string} text A string with the code to be highlighted.\n * @param {Grammar} grammar An object containing the tokens to use.\n *\n * Usually a language definition like `Prism.languages.markup`.\n * @param {string} language The name of the language definition passed to `grammar`.\n * @returns {string} The highlighted HTML.\n * @memberof Prism\n * @public\n * @example\n * Prism.highlight('var foo = true;', Prism.languages.javascript, 'javascript');\n */\n highlight: function(text, grammar, language) {\n var env = {\n code: text,\n grammar,\n language\n };\n _.hooks.run(\"before-tokenize\", env);\n if (!env.grammar) {\n throw new Error('The language \"' + env.language + '\" has no grammar.');\n }\n env.tokens = _.tokenize(env.code, env.grammar);\n _.hooks.run(\"after-tokenize\", env);\n return Token.stringify(_.util.encode(env.tokens), env.language);\n },\n /**\n * This is the heart of Prism, and the most low-level function you can use. It accepts a string of text as input\n * and the language definitions to use, and returns an array with the tokenized code.\n *\n * When the language definition includes nested tokens, the function is called recursively on each of these tokens.\n *\n * This method could be useful in other contexts as well, as a very crude parser.\n *\n * @param {string} text A string with the code to be highlighted.\n * @param {Grammar} grammar An object containing the tokens to use.\n *\n * Usually a language definition like `Prism.languages.markup`.\n * @returns {TokenStream} An array of strings and tokens, a token stream.\n * @memberof Prism\n * @public\n * @example\n * let code = `var foo = 0;`;\n * let tokens = Prism.tokenize(code, Prism.languages.javascript);\n * tokens.forEach(token => {\n * if (token instanceof Prism.Token && token.type === 'number') {\n * console.log(`Found numeric literal: ${token.content}`);\n * }\n * });\n */\n tokenize: function(text, grammar) {\n var rest = grammar.rest;\n if (rest) {\n for (var token in rest) {\n grammar[token] = rest[token];\n }\n delete grammar.rest;\n }\n var tokenList = new LinkedList();\n addAfter(tokenList, tokenList.head, text);\n matchGrammar(text, tokenList, grammar, tokenList.head, 0);\n return toArray(tokenList);\n },\n /**\n * @namespace\n * @memberof Prism\n * @public\n */\n hooks: {\n all: {},\n /**\n * Adds the given callback to the list of callbacks for the given hook.\n *\n * The callback will be invoked when the hook it is registered for is run.\n * Hooks are usually directly run by a highlight function but you can also run hooks yourself.\n *\n * One callback function can be registered to multiple hooks and the same hook multiple times.\n *\n * @param {string} name The name of the hook.\n * @param {HookCallback} callback The callback function which is given environment variables.\n * @public\n */\n add: function(name, callback) {\n var hooks2 = _.hooks.all;\n hooks2[name] = hooks2[name] || [];\n hooks2[name].push(callback);\n },\n /**\n * Runs a hook invoking all registered callbacks with the given environment variables.\n *\n * Callbacks will be invoked synchronously and in the order in which they were registered.\n *\n * @param {string} name The name of the hook.\n * @param {Object<string, any>} env The environment variables of the hook passed to all callbacks registered.\n * @public\n */\n run: function(name, env) {\n var callbacks = _.hooks.all[name];\n if (!callbacks || !callbacks.length) {\n return;\n }\n for (var i = 0, callback; callback = callbacks[i++]; ) {\n callback(env);\n }\n }\n },\n Token\n };\n function Token(type, content, alias, matchedStr) {\n this.type = type;\n this.content = content;\n this.alias = alias;\n this.length = (matchedStr || \"\").length | 0;\n }\n Token.stringify = function stringify(o, language) {\n if (typeof o == \"string\") {\n return o;\n }\n if (Array.isArray(o)) {\n var s = \"\";\n o.forEach(function(e) {\n s += stringify(e, language);\n });\n return s;\n }\n var env = {\n type: o.type,\n content: stringify(o.content, language),\n tag: \"span\",\n classes: [\"token\", o.type],\n attributes: {},\n language\n };\n var aliases = o.alias;\n if (aliases) {\n if (Array.isArray(aliases)) {\n Array.prototype.push.apply(env.classes, aliases);\n } else {\n env.classes.push(aliases);\n }\n }\n _.hooks.run(\"wrap\", env);\n var attributes = \"\";\n for (var name in env.attributes) {\n attributes += \" \" + name + '=\"' + (env.attributes[name] || \"\").replace(/\"/g, \"&quot;\") + '\"';\n }\n return \"<\" + env.tag + ' class=\"' + env.classes.join(\" \") + '\"' + attributes + \">\" + env.content + \"</\" + env.tag + \">\";\n };\n function matchPattern(pattern, pos, text, lookbehind) {\n pattern.lastIndex = pos;\n var match = pattern.exec(text);\n if (match && lookbehind && match[1]) {\n var lookbehindLength = match[1].length;\n match.index += lookbehindLength;\n match[0] = match[0].slice(lookbehindLength);\n }\n return match;\n }\n function matchGrammar(text, tokenList, grammar, startNode, startPos, rematch) {\n for (var token in grammar) {\n if (!grammar.hasOwnProperty(token) || !grammar[token]) {\n continue;\n }\n var patterns = grammar[token];\n patterns = Array.isArray(patterns) ? patterns : [patterns];\n for (var j = 0; j < patterns.length; ++j) {\n if (rematch && rematch.cause == token + \",\" + j) {\n return;\n }\n var patternObj = patterns[j];\n var inside = patternObj.inside;\n var lookbehind = !!patternObj.lookbehind;\n var greedy = !!patternObj.greedy;\n var alias = patternObj.alias;\n if (greedy && !patternObj.pattern.global) {\n var flags = patternObj.pattern.toString().match(/[imsuy]*$/)[0];\n patternObj.pattern = RegExp(patternObj.pattern.source, flags + \"g\");\n }\n var pattern = patternObj.pattern || patternObj;\n for (var currentNode = startNode.next, pos = startPos; currentNode !== tokenList.tail; pos += currentNode.value.length, currentNode = currentNode.next) {\n if (rematch && pos >= rematch.reach) {\n break;\n }\n var str = currentNode.value;\n if (tokenList.length > text.length) {\n return;\n }\n if (str instanceof Token) {\n continue;\n }\n var removeCount = 1;\n var match;\n if (greedy) {\n match = matchPattern(pattern, pos, text, lookbehind);\n if (!match || match.index >= text.length) {\n break;\n }\n var from = match.index;\n var to = match.index + match[0].length;\n var p = pos;\n p += currentNode.value.length;\n while (from >= p) {\n currentNode = currentNode.next;\n p += currentNode.value.length;\n }\n p -= currentNode.value.length;\n pos = p;\n if (currentNode.value instanceof Token) {\n continue;\n }\n for (var k = currentNode; k !== tokenList.tail && (p < to || typeof k.value === \"string\"); k = k.next) {\n removeCount++;\n p += k.value.length;\n }\n removeCount--;\n str = text.slice(pos, p);\n match.index -= pos;\n } else {\n match = matchPattern(pattern, 0, str, lookbehind);\n if (!match) {\n continue;\n }\n }\n var from = match.index;\n var matchStr = match[0];\n var before = str.slice(0, from);\n var after = str.slice(from + matchStr.length);\n var reach = pos + str.length;\n if (rematch && reach > rematch.reach) {\n rematch.reach = reach;\n }\n var removeFrom = currentNode.prev;\n if (before) {\n removeFrom = addAfter(tokenList, removeFrom, before);\n pos += before.length;\n }\n removeRange(tokenList, removeFrom, removeCount);\n var wrapped = new Token(token, inside ? _.tokenize(matchStr, inside) : matchStr, alias, matchStr);\n currentNode = addAfter(tokenList, removeFrom, wrapped);\n if (after) {\n addAfter(tokenList, currentNode, after);\n }\n if (removeCount > 1) {\n var nestedRematch = {\n cause: token + \",\" + j,\n reach\n };\n matchGrammar(text, tokenList, grammar, currentNode.prev, pos, nestedRematch);\n if (rematch && nestedRematch.reach > rematch.reach) {\n rematch.reach = nestedRematch.reach;\n }\n }\n }\n }\n }\n }\n function LinkedList() {\n var head = { value: null, prev: null, next: null };\n var tail = { value: null, prev: head, next: null };\n head.next = tail;\n this.head = head;\n this.tail = tail;\n this.length = 0;\n }\n function addAfter(list, node, value) {\n var next = node.next;\n var newNode = { value, prev: node, next };\n node.next = newNode;\n next.prev = newNode;\n list.length++;\n return newNode;\n }\n function removeRange(list, node, count) {\n var next = node.next;\n for (var i = 0; i < count && next !== list.tail; i++) {\n next = next.next;\n }\n node.next = next;\n next.prev = node;\n list.length -= i;\n }\n function toArray(list) {\n var array = [];\n var node = list.head.next;\n while (node !== list.tail) {\n array.push(node.value);\n node = node.next;\n }\n return array;\n }\n return _;\n }();\n module.exports = Prism2;\n Prism2.default = Prism2;\n }\n});\n\n// src/prism-langs.ts\nvar Prism = __toESM(require_prism());\nPrism.languages.markup = { comment: { pattern: /<!--(?:(?!<!--)[\\s\\S])*?-->/, greedy: true }, prolog: { pattern: /<\\?[\\s\\S]+?\\?>/, greedy: true }, doctype: { pattern: /<!DOCTYPE(?:[^>\"'[\\]]|\"[^\"]*\"|'[^']*')+(?:\\[(?:[^<\"'\\]]|\"[^\"]*\"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\\]\\s*)?>/i, greedy: true, inside: { \"internal-subset\": { pattern: /(^[^\\[]*\\[)[\\s\\S]+(?=\\]>$)/, lookbehind: true, greedy: true, inside: null }, string: { pattern: /\"[^\"]*\"|'[^']*'/, greedy: true }, punctuation: /^<!|>$|[[\\]]/, \"doctype-tag\": /^DOCTYPE/i, name: /[^\\s<>'\"]+/ } }, cdata: { pattern: /<!\\[CDATA\\[[\\s\\S]*?\\]\\]>/i, greedy: true }, tag: { pattern: /<\\/?(?!\\d)[^\\s>\\/=$<%]+(?:\\s(?:\\s*[^\\s>\\/=]+(?:\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))|(?=[\\s/>])))+)?\\s*\\/?>/, greedy: true, inside: { tag: { pattern: /^<\\/?[^\\s>\\/]+/, inside: { punctuation: /^<\\/?/, namespace: /^[^\\s>\\/:]+:/ } }, \"special-attr\": [], \"attr-value\": { pattern: /=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+)/, inside: { punctuation: [{ pattern: /^=/, alias: \"attr-equals\" }, { pattern: /^(\\s*)[\"']|[\"']$/, lookbehind: true }] } }, punctuation: /\\/?>/, \"attr-name\": { pattern: /[^\\s>\\/]+/, inside: { namespace: /^[^\\s>\\/:]+:/ } } } }, entity: [{ pattern: /&[\\da-z]{1,8};/i, alias: \"named-entity\" }, /&#x?[\\da-f]{1,8};/i] }, Prism.languages.markup.tag.inside[\"attr-value\"].inside.entity = Prism.languages.markup.entity, Prism.languages.markup.doctype.inside[\"internal-subset\"].inside = Prism.languages.markup, Prism.hooks.add(\"wrap\", function(e) {\n \"entity\" === e.type && (e.attributes.title = e.content.replace(/&amp;/, \"&\"));\n}), Object.defineProperty(Prism.languages.markup.tag, \"addInlined\", { value: function(e, n) {\n var t = {}, t = (t[\"language-\" + n] = { pattern: /(^<!\\[CDATA\\[)[\\s\\S]+?(?=\\]\\]>$)/i, lookbehind: true, inside: Prism.languages[n] }, t.cdata = /^<!\\[CDATA\\[|\\]\\]>$/i, { \"included-cdata\": { pattern: /<!\\[CDATA\\[[\\s\\S]*?\\]\\]>/i, inside: t } }), n = (t[\"language-\" + n] = { pattern: /[\\s\\S]+/, inside: Prism.languages[n] }, {});\n n[e] = { pattern: RegExp(/(<__[^>]*>)(?:<!\\[CDATA\\[(?:[^\\]]|\\](?!\\]>))*\\]\\]>|(?!<!\\[CDATA\\[)[\\s\\S])*?(?=<\\/__>)/.source.replace(/__/g, function() {\n return e;\n }), \"i\"), lookbehind: true, greedy: true, inside: t }, Prism.languages.insertBefore(\"markup\", \"cdata\", n);\n} }), Object.defineProperty(Prism.languages.markup.tag, \"addAttribute\", { value: function(e, n) {\n Prism.languages.markup.tag.inside[\"special-attr\"].push({ pattern: RegExp(/(^|[\"'\\s])/.source + \"(?:\" + e + \")\" + /\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))/.source, \"i\"), lookbehind: true, inside: { \"attr-name\": /^[^\\s=]+/, \"attr-value\": { pattern: /=[\\s\\S]+/, inside: { value: { pattern: /(^=\\s*([\"']|(?![\"'])))\\S[\\s\\S]*(?=\\2$)/, lookbehind: true, alias: [n, \"language-\" + n], inside: Prism.languages[n] }, punctuation: [{ pattern: /^=/, alias: \"attr-equals\" }, /\"|'/] } } } });\n} }), Prism.languages.html = Prism.languages.markup, Prism.languages.mathml = Prism.languages.markup, Prism.languages.svg = Prism.languages.markup, Prism.languages.xml = Prism.languages.extend(\"markup\", {}), Prism.languages.ssml = Prism.languages.xml, Prism.languages.atom = Prism.languages.xml, Prism.languages.rss = Prism.languages.xml, function(e) {\n var n = { pattern: /\\\\[\\\\(){}[\\]^$+*?|.]/, alias: \"escape\" }, t = /\\\\(?:x[\\da-fA-F]{2}|u[\\da-fA-F]{4}|u\\{[\\da-fA-F]+\\}|0[0-7]{0,2}|[123][0-7]{2}|c[a-zA-Z]|.)/, a = \"(?:[^\\\\\\\\-]|\" + t.source + \")\", a = RegExp(a + \"-\" + a), r = { pattern: /(<|')[^<>']+(?=[>']$)/, lookbehind: true, alias: \"variable\" };\n e.languages.regex = { \"char-class\": { pattern: /((?:^|[^\\\\])(?:\\\\\\\\)*)\\[(?:[^\\\\\\]]|\\\\[\\s\\S])*\\]/, lookbehind: true, inside: { \"char-class-negation\": { pattern: /(^\\[)\\^/, lookbehind: true, alias: \"operator\" }, \"char-class-punctuation\": { pattern: /^\\[|\\]$/, alias: \"punctuation\" }, range: { pattern: a, inside: { escape: t, \"range-punctuation\": { pattern: /-/, alias: \"operator\" } } }, \"special-escape\": n, \"char-set\": { pattern: /\\\\[wsd]|\\\\p\\{[^{}]+\\}/i, alias: \"class-name\" }, escape: t } }, \"special-escape\": n, \"char-set\": { pattern: /\\.|\\\\[wsd]|\\\\p\\{[^{}]+\\}/i, alias: \"class-name\" }, backreference: [{ pattern: /\\\\(?![123][0-7]{2})[1-9]/, alias: \"keyword\" }, { pattern: /\\\\k<[^<>']+>/, alias: \"keyword\", inside: { \"group-name\": r } }], anchor: { pattern: /[$^]|\\\\[ABbGZz]/, alias: \"function\" }, escape: t, group: [{ pattern: /\\((?:\\?(?:<[^<>']+>|'[^<>']+'|[>:]|<?[=!]|[idmnsuxU]+(?:-[idmnsuxU]+)?:?))?/, alias: \"punctuation\", inside: { \"group-name\": r } }, { pattern: /\\)/, alias: \"punctuation\" }], quantifier: { pattern: /(?:[+*?]|\\{\\d+(?:,\\d*)?\\})[?+]?/, alias: \"number\" }, alternation: { pattern: /\\|/, alias: \"keyword\" } };\n}(Prism), Prism.languages.clike = { comment: [{ pattern: /(^|[^\\\\])\\/\\*[\\s\\S]*?(?:\\*\\/|$)/, lookbehind: true, greedy: true }, { pattern: /(^|[^\\\\:])\\/\\/.*/, lookbehind: true, greedy: true }], string: { pattern: /([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/, greedy: true }, \"class-name\": { pattern: /(\\b(?:class|extends|implements|instanceof|interface|new|trait)\\s+|\\bcatch\\s+\\()[\\w.\\\\]+/i, lookbehind: true, inside: { punctuation: /[.\\\\]/ } }, keyword: /\\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\\b/, boolean: /\\b(?:false|true)\\b/, function: /\\b\\w+(?=\\()/, number: /\\b0x[\\da-f]+\\b|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e[+-]?\\d+)?/i, operator: /[<>]=?|[!=]=?=?|--?|\\+\\+?|&&?|\\|\\|?|[?*/~^%]/, punctuation: /[{}[\\];(),.:]/ }, Prism.languages.javascript = Prism.languages.extend(\"clike\", { \"class-name\": [Prism.languages.clike[\"class-name\"], { pattern: /(^|[^$\\w\\xA0-\\uFFFF])(?!\\s)[_$A-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\.(?:constructor|prototype))/, lookbehind: true }], keyword: [{ pattern: /((?:^|\\})\\s*)catch\\b/, lookbehind: true }, { pattern: /(^|[^.]|\\.\\.\\.\\s*)\\b(?:as|assert(?=\\s*\\{)|async(?=\\s*(?:function\\b|\\(|[$\\w\\xA0-\\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\\s*(?:\\{|$))|for|from(?=\\s*(?:['\"]|$))|function|(?:get|set)(?=\\s*(?:[#\\[$\\w\\xA0-\\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\\b/, lookbehind: true }], function: /#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*(?:\\.\\s*(?:apply|bind|call)\\s*)?\\()/, number: { pattern: RegExp(/(^|[^\\w$])/.source + \"(?:\" + /NaN|Infinity/.source + \"|\" + /0[bB][01]+(?:_[01]+)*n?/.source + \"|\" + /0[oO][0-7]+(?:_[0-7]+)*n?/.source + \"|\" + /0[xX][\\dA-Fa-f]+(?:_[\\dA-Fa-f]+)*n?/.source + \"|\" + /\\d+(?:_\\d+)*n/.source + \"|\" + /(?:\\d+(?:_\\d+)*(?:\\.(?:\\d+(?:_\\d+)*)?)?|\\.\\d+(?:_\\d+)*)(?:[Ee][+-]?\\d+(?:_\\d+)*)?/.source + \")\" + /(?![\\w$])/.source), lookbehind: true }, operator: /--|\\+\\+|\\*\\*=?|=>|&&=?|\\|\\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\\.{3}|\\?\\?=?|\\?\\.?|[~:]/ }), Prism.languages.javascript[\"class-name\"][0].pattern = /(\\b(?:class|extends|implements|instanceof|interface|new)\\s+)[\\w.\\\\]+/, Prism.languages.insertBefore(\"javascript\", \"keyword\", { regex: { pattern: RegExp(/((?:^|[^$\\w\\xA0-\\uFFFF.\"'\\])\\s]|\\b(?:return|yield))\\s*)/.source + /\\//.source + \"(?:\" + /(?:\\[(?:[^\\]\\\\\\r\\n]|\\\\.)*\\]|\\\\.|[^/\\\\\\[\\r\\n])+\\/[dgimyus]{0,7}/.source + \"|\" + /(?:\\[(?:[^[\\]\\\\\\r\\n]|\\\\.|\\[(?:[^[\\]\\\\\\r\\n]|\\\\.|\\[(?:[^[\\]\\\\\\r\\n]|\\\\.)*\\])*\\])*\\]|\\\\.|[^/\\\\\\[\\r\\n])+\\/[dgimyus]{0,7}v[dgimyus]{0,7}/.source + \")\" + /(?=(?:\\s|\\/\\*(?:[^*]|\\*(?!\\/))*\\*\\/)*(?:$|[\\r\\n,.;:})\\]]|\\/\\/))/.source), lookbehind: true, greedy: true, inside: { \"regex-source\": { pattern: /^(\\/)[\\s\\S]+(?=\\/[a-z]*$)/, lookbehind: true, alias: \"language-regex\", inside: Prism.languages.regex }, \"regex-delimiter\": /^\\/|\\/$/, \"regex-flags\": /^[a-z]+$/ } }, \"function-variable\": { pattern: /#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*[=:]\\s*(?:async\\s*)?(?:\\bfunction\\b|(?:\\((?:[^()]|\\([^()]*\\))*\\)|(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*)\\s*=>))/, alias: \"function\" }, parameter: [{ pattern: /(function(?:\\s+(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*)?\\s*\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\))/, lookbehind: true, inside: Prism.languages.javascript }, { pattern: /(^|[^$\\w\\xA0-\\uFFFF])(?!\\s)[_$a-z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*=>)/i, lookbehind: true, inside: Prism.languages.javascript }, { pattern: /(\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\)\\s*=>)/, lookbehind: true, inside: Prism.languages.javascript }, { pattern: /((?:\\b|\\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\\w\\xA0-\\uFFFF]))(?:(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*\\s*)\\(\\s*|\\]\\s*\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\)\\s*\\{)/, lookbehind: true, inside: Prism.languages.javascript }], constant: /\\b[A-Z](?:[A-Z_]|\\dx?)*\\b/ }), Prism.languages.insertBefore(\"javascript\", \"string\", { hashbang: { pattern: /^#!.*/, greedy: true, alias: \"comment\" }, \"template-string\": { pattern: /`(?:\\\\[\\s\\S]|\\$\\{(?:[^{}]|\\{(?:[^{}]|\\{[^}]*\\})*\\})+\\}|(?!\\$\\{)[^\\\\`])*`/, greedy: true, inside: { \"template-punctuation\": { pattern: /^`|`$/, alias: \"string\" }, interpolation: { pattern: /((?:^|[^\\\\])(?:\\\\{2})*)\\$\\{(?:[^{}]|\\{(?:[^{}]|\\{[^}]*\\})*\\})+\\}/, lookbehind: true, inside: { \"interpolation-punctuation\": { pattern: /^\\$\\{|\\}$/, alias: \"punctuation\" }, rest: Prism.languages.javascript } }, string: /[\\s\\S]+/ } }, \"string-property\": { pattern: /((?:^|[,{])[ \\t]*)([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\2)[^\\\\\\r\\n])*\\2(?=\\s*:)/m, lookbehind: true, greedy: true, alias: \"property\" } }), Prism.languages.insertBefore(\"javascript\", \"operator\", { \"literal-property\": { pattern: /((?:^|[,{])[ \\t]*)(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*:)/m, lookbehind: true, alias: \"property\" } }), Prism.languages.markup && (Prism.languages.markup.tag.addInlined(\"script\", \"javascript\"), Prism.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source, \"javascript\")), Prism.languages.js = Prism.languages.javascript, Prism.languages.actionscript = Prism.languages.extend(\"javascript\", { keyword: /\\b(?:as|break|case|catch|class|const|default|delete|do|dynamic|each|else|extends|final|finally|for|function|get|if|implements|import|in|include|instanceof|interface|internal|is|namespace|native|new|null|override|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|use|var|void|while|with)\\b/, operator: /\\+\\+|--|(?:[+\\-*\\/%^]|&&?|\\|\\|?|<<?|>>?>?|[!=]=?)=?|[~?@]/ }), Prism.languages.actionscript[\"class-name\"].alias = \"function\", delete Prism.languages.actionscript.parameter, delete Prism.languages.actionscript[\"literal-property\"], Prism.languages.markup && Prism.languages.insertBefore(\"actionscript\", \"string\", { xml: { pattern: /(^|[^.])<\\/?\\w+(?:\\s+[^\\s>\\/=]+=(\"|')(?:\\\\[\\s\\S]|(?!\\2)[^\\\\])*\\2)*\\s*\\/?>/, lookbehind: true, inside: Prism.languages.markup } }), function(e) {\n var n = /#(?!\\{).+/, t = { pattern: /#\\{[^}]+\\}/, alias: \"variable\" };\n e.languages.coffeescript = e.languages.extend(\"javascript\", { comment: n, string: [{ pattern: /'(?:\\\\[\\s\\S]|[^\\\\'])*'/, greedy: true }, { pattern: /\"(?:\\\\[\\s\\S]|[^\\\\\"])*\"/, greedy: true, inside: { interpolation: t } }], keyword: /\\b(?:and|break|by|catch|class|continue|debugger|delete|do|each|else|extend|extends|false|finally|for|if|in|instanceof|is|isnt|let|loop|namespace|new|no|not|null|of|off|on|or|own|return|super|switch|then|this|throw|true|try|typeof|undefined|unless|until|when|while|window|with|yes|yield)\\b/, \"class-member\": { pattern: /@(?!\\d)\\w+/, alias: \"variable\" } }), e.languages.insertBefore(\"coffeescript\", \"comment\", { \"multiline-comment\": { pattern: /###[\\s\\S]+?###/, alias: \"comment\" }, \"block-regex\": { pattern: /\\/{3}[\\s\\S]*?\\/{3}/, alias: \"regex\", inside: { comment: n, interpolation: t } } }), e.languages.insertBefore(\"coffeescript\", \"string\", { \"inline-javascript\": { pattern: /`(?:\\\\[\\s\\S]|[^\\\\`])*`/, inside: { delimiter: { pattern: /^`|`$/, alias: \"punctuation\" }, script: { pattern: /[\\s\\S]+/, alias: \"language-javascript\", inside: e.languages.javascript } } }, \"multiline-string\": [{ pattern: /'''[\\s\\S]*?'''/, greedy: true, alias: \"string\" }, { pattern: /\"\"\"[\\s\\S]*?\"\"\"/, greedy: true, alias: \"string\", inside: { interpolation: t } }] }), e.languages.insertBefore(\"coffeescript\", \"keyword\", { property: /(?!\\d)\\w+(?=\\s*:(?!:))/ }), delete e.languages.coffeescript[\"template-string\"], e.languages.coffee = e.languages.coffeescript;\n}(Prism), function(l) {\n var e = l.languages.javadoclike = { parameter: { pattern: /(^[\\t ]*(?:\\/{3}|\\*|\\/\\*\\*)\\s*@(?:arg|arguments|param)\\s+)\\w+/m, lookbehind: true }, keyword: { pattern: /(^[\\t ]*(?:\\/{3}|\\*|\\/\\*\\*)\\s*|\\{)@[a-z][a-zA-Z-]+\\b/m, lookbehind: true }, punctuation: /[{}]/ };\n Object.defineProperty(e, \"addSupport\", { value: function(e2, o) {\n (e2 = \"string\" == typeof e2 ? [e2] : e2).forEach(function(e3) {\n var n = function(e4) {\n e4.inside || (e4.inside = {}), e4.inside.rest = o;\n }, t = \"doc-comment\";\n if (a = l.languages[e3]) {\n var a, r = a[t];\n if ((r = r ? r : (a = l.languages.insertBefore(e3, \"comment\", { \"doc-comment\": { pattern: /(^|[^\\\\])\\/\\*\\*[^/][\\s\\S]*?(?:\\*\\/|$)/, lookbehind: true, alias: \"comment\" } }))[t]) instanceof RegExp && (r = a[t] = { pattern: r }), Array.isArray(r))\n for (var s = 0, i = r.length; s < i; s++)\n r[s] instanceof RegExp && (r[s] = { pattern: r[s] }), n(r[s]);\n else\n n(r);\n }\n });\n } }), e.addSupport([\"java\", \"javascript\", \"php\"], e);\n}(Prism), function(e) {\n var n = /(?:\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\"\\\\\\r\\n])*\"|'(?:\\\\(?:\\r\\n|[\\s\\S])|[^'\\\\\\r\\n])*')/, n = (e.languages.css = { comment: /\\/\\*[\\s\\S]*?\\*\\//, atrule: { pattern: RegExp(\"@[\\\\w-](?:\" + /[^;{\\s\"']|\\s+(?!\\s)/.source + \"|\" + n.source + \")*?\" + /(?:;|(?=\\s*\\{))/.source), inside: { rule: /^@[\\w-]+/, \"selector-function-argument\": { pattern: /(\\bselector\\s*\\(\\s*(?![\\s)]))(?:[^()\\s]|\\s+(?![\\s)])|\\((?:[^()]|\\([^()]*\\))*\\))+(?=\\s*\\))/, lookbehind: true, alias: \"selector\" }, keyword: { pattern: /(^|[^\\w-])(?:and|not|only|or)(?![\\w-])/, lookbehind: true } } }, url: { pattern: RegExp(\"\\\\burl\\\\((?:\" + n.source + \"|\" + /(?:[^\\\\\\r\\n()\"']|\\\\[\\s\\S])*/.source + \")\\\\)\", \"i\"), greedy: true, inside: { function: /^url/i, punctuation: /^\\(|\\)$/, string: { pattern: RegExp(\"^\" + n.source + \"$\"), alias: \"url\" } } }, selector: { pattern: RegExp(`(^|[{}\\\\s])[^{}\\\\s](?:[^{};\"'\\\\s]|\\\\s+(?![\\\\s{])|` + n.source + \")*(?=\\\\s*\\\\{)\"), lookbehind: true }, string: { pattern: n, greedy: true }, property: { pattern: /(^|[^-\\w\\xA0-\\uFFFF])(?!\\s)[-_a-z\\xA0-\\uFFFF](?:(?!\\s)[-\\w\\xA0-\\uFFFF])*(?=\\s*:)/i, lookbehind: true }, important: /!important\\b/i, function: { pattern: /(^|[^-a-z0-9])[-a-z0-9]+(?=\\()/i, lookbehind: true }, punctuation: /[(){};:,]/ }, e.languages.css.atrule.inside.rest = e.languages.css, e.languages.markup);\n n && (n.tag.addInlined(\"style\", \"css\"), n.tag.addAttribute(\"style\", \"css\"));\n}(Prism), function(e) {\n var n = /(\"|')(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/, n = (e.languages.css.selector = { pattern: e.languages.css.selector.pattern, lookbehind: true, inside: n = { \"pseudo-element\": /:(?:after|before|first-letter|first-line|selection)|::[-\\w]+/, \"pseudo-class\": /:[-\\w]+/, class: /\\.[-\\w]+/, id: /#[-\\w]+/, attribute: { pattern: RegExp(`\\\\[(?:[^[\\\\]\"']|` + n.source + \")*\\\\]\"), greedy: true, inside: { punctuation: /^\\[|\\]$/, \"case-sensitivity\": { pattern: /(\\s)[si]$/i, lookbehind: true, alias: \"keyword\" }, namespace: { pattern: /^(\\s*)(?:(?!\\s)[-*\\w\\xA0-\\uFFFF])*\\|(?!=)/, lookbehind: true, inside: { punctuation: /\\|$/ } }, \"attr-name\": { pattern: /^(\\s*)(?:(?!\\s)[-\\w\\xA0-\\uFFFF])+/, lookbehind: true }, \"attr-value\": [n, { pattern: /(=\\s*)(?:(?!\\s)[-\\w\\xA0-\\uFFFF])+(?=\\s*$)/, lookbehind: true }], operator: /[|~*^$]?=/ } }, \"n-th\": [{ pattern: /(\\(\\s*)[+-]?\\d*[\\dn](?:\\s*[+-]\\s*\\d+)?(?=\\s*\\))/, lookbehind: true, inside: { number: /[\\dn]+/, operator: /[+-]/ } }, { pattern: /(\\(\\s*)(?:even|odd)(?=\\s*\\))/i, lookbehind: true }], combinator: />|\\+|~|\\|\\|/, punctuation: /[(),]/ } }, e.languages.css.atrule.inside[\"selector-function-argument\"].inside = n, e.languages.insertBefore(\"css\", \"property\", { variable: { pattern: /(^|[^-\\w\\xA0-\\uFFFF])--(?!\\s)[-_a-z\\xA0-\\uFFFF](?:(?!\\s)[-\\w\\xA0-\\uFFFF])*/i, lookbehind: true } }), { pattern: /(\\b\\d+)(?:%|[a-z]+(?![\\w-]))/, lookbehind: true }), t = { pattern: /(^|[^\\w.-])-?(?:\\d+(?:\\.\\d+)?|\\.\\d+)/, lookbehind: true };\n e.languages.insertBefore(\"css\", \"function\", { operator: { pattern: /(\\s)[+\\-*\\/](?=\\s)/, lookbehind: true }, hexcode: { pattern: /\\B#[\\da-f]{3,8}\\b/i, alias: \"color\" }, color: [{ pattern: /(^|[^\\w-])(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|RebeccaPurple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)(?![\\w-])/i, lookbehind: true }, { pattern: /\\b(?:hsl|rgb)\\(\\s*\\d{1,3}\\s*,\\s*\\d{1,3}%?\\s*,\\s*\\d{1,3}%?\\s*\\)\\B|\\b(?:hsl|rgb)a\\(\\s*\\d{1,3}\\s*,\\s*\\d{1,3}%?\\s*,\\s*\\d{1,3}%?\\s*,\\s*(?:0|0?\\.\\d+|1)\\s*\\)\\B/i, inside: { unit: n, number: t, function: /[\\w-]+(?=\\()/, punctuation: /[(),]/ } }], entity: /\\\\[\\da-f]{1,8}/i, unit: n, number: t });\n}(Prism), function(e) {\n var n = /[*&][^\\s[\\]{},]+/, t = /!(?:<[\\w\\-%#;/?:@&=+$,.!~*'()[\\]]+>|(?:[a-zA-Z\\d-]*!)?[\\w\\-%#;/?:@&=+$.~*'()]+)?/, a = \"(?:\" + t.source + \"(?:[ \t]+\" + n.source + \")?|\" + n.source + \"(?:[ \t]+\" + t.source + \")?)\", r = /(?:[^\\s\\x00-\\x08\\x0e-\\x1f!\"#%&'*,\\-:>?@[\\]`{|}\\x7f-\\x84\\x86-\\x9f\\ud800-\\udfff\\ufffe\\uffff]|[?:-]<PLAIN>)(?:[ \\t]*(?:(?![#:])<PLAIN>|:<PLAIN>))*/.source.replace(/<PLAIN>/g, function() {\n return /[^\\s\\x00-\\x08\\x0e-\\x1f,[\\]{}\\x7f-\\x84\\x86-\\x9f\\ud800-\\udfff\\ufffe\\uffff]/.source;\n }), s = /\"(?:[^\"\\\\\\r\\n]|\\\\.)*\"|'(?:[^'\\\\\\r\\n]|\\\\.)*'/.source;\n function i(e2, n2) {\n n2 = (n2 || \"\").replace(/m/g, \"\") + \"m\";\n var t2 = /([:\\-,[{]\\s*(?:\\s<<prop>>[ \\t]+)?)(?:<<value>>)(?=[ \\t]*(?:$|,|\\]|\\}|(?:[\\r\\n]\\s*)?#))/.source.replace(/<<prop>>/g, function() {\n return a;\n }).replace(/<<value>>/g, function() {\n return e2;\n });\n return RegExp(t2, n2);\n }\n e.languages.yaml = { scalar: { pattern: RegExp(/([\\-:]\\s*(?:\\s<<prop>>[ \\t]+)?[|>])[ \\t]*(?:((?:\\r?\\n|\\r)[ \\t]+)\\S[^\\r\\n]*(?:\\2[^\\r\\n]+)*)/.source.replace(/<<prop>>/g, function() {\n return a;\n })), lookbehind: true, alias: \"string\" }, comment: /#.*/, key: { pattern: RegExp(/((?:^|[:\\-,[{\\r\\n?])[ \\t]*(?:<<prop>>[ \\t]+)?)<<key>>(?=\\s*:\\s)/.source.replace(/<<prop>>/g, function() {\n return a;\n }).replace(/<<key>>/g, function() {\n return \"(?:\" + r + \"|\" + s + \")\";\n })), lookbehind: true, greedy: true, alias: \"atrule\" }, directive: { pattern: /(^[ \\t]*)%.+/m, lookbehind: true, alias: \"important\" }, datetime: { pattern: i(/\\d{4}-\\d\\d?-\\d\\d?(?:[tT]|[ \\t]+)\\d\\d?:\\d{2}:\\d{2}(?:\\.\\d*)?(?:[ \\t]*(?:Z|[-+]\\d\\d?(?::\\d{2})?))?|\\d{4}-\\d{2}-\\d{2}|\\d\\d?:\\d{2}(?::\\d{2}(?:\\.\\d*)?)?/.source), lookbehind: true, alias: \"number\" }, boolean: { pattern: i(/false|true/.source, \"i\"), lookbehind: true, alias: \"important\" }, null: { pattern: i(/null|~/.source, \"i\"), lookbehind: true, alias: \"important\" }, string: { pattern: i(s), lookbehind: true, greedy: true }, number: { pattern: i(/[+-]?(?:0x[\\da-f]+|0o[0-7]+|(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?|\\.inf|\\.nan)/.source, \"i\"), lookbehind: true }, tag: t, important: n, punctuation: /---|[:[\\]{}\\-,|>?]|\\.\\.\\./ }, e.languages.yml = e.languages.yaml;\n}(Prism), function(o) {\n var n = /(?:\\\\.|[^\\\\\\n\\r]|(?:\\n|\\r\\n?)(?![\\r\\n]))/.source;\n function e(e2) {\n return e2 = e2.replace(/<inner>/g, function() {\n return n;\n }), RegExp(/((?:^|[^\\\\])(?:\\\\{2})*)/.source + \"(?:\" + e2 + \")\");\n }\n var t = /(?:\\\\.|``(?:[^`\\r\\n]|`(?!`))+``|`[^`\\r\\n]+`|[^\\\\|\\r\\n`])+/.source, a = /\\|?__(?:\\|__)+\\|?(?:(?:\\n|\\r\\n?)|(?![\\s\\S]))/.source.replace(/__/g, function() {\n return t;\n }), r = /\\|?[ \\t]*:?-{3,}:?[ \\t]*(?:\\|[ \\t]*:?-{3,}:?[ \\t]*)+\\|?(?:\\n|\\r\\n?)/.source, l = (o.languages.markdown = o.languages.extend(\"markup\", {}), o.languages.insertBefore(\"markdown\", \"prolog\", { \"front-matter-block\": { pattern: /(^(?:\\s*[\\r\\n])?)---(?!.)[\\s\\S]*?[\\r\\n]---(?!.)/, lookbehind: true, greedy: true, inside: { punctuation: /^---|---$/, \"front-matter\": { pattern: /\\S+(?:\\s+\\S+)*/, alias: [\"yaml\", \"language-yaml\"], inside: o.languages.yaml } } }, blockquote: { pattern: /^>(?:[\\t ]*>)*/m, alias: \"punctuation\" }, table: { pattern: RegExp(\"^\" + a + r + \"(?:\" + a + \")*\", \"m\"), inside: { \"table-data-rows\": { pattern: RegExp(\"^(\" + a + r + \")(?:\" + a + \")*$\"), lookbehind: true, inside: { \"table-data\": { pattern: RegExp(t), inside: o.languages.markdown }, punctuation: /\\|/ } }, \"table-line\": { pattern: RegExp(\"^(\" + a + \")\" + r + \"$\"), lookbehind: true, inside: { punctuation: /\\||:?-{3,}:?/ } }, \"table-header-row\": { pattern: RegExp(\"^\" + a + \"$\"), inside: { \"table-header\": { pattern: RegExp(t), alias: \"important\", inside: o.languages.markdown }, punctuation: /\\|/ } } } }, code: [{ pattern: /((?:^|\\n)[ \\t]*\\n|(?:^|\\r\\n?)[ \\t]*\\r\\n?)(?: {4}|\\t).+(?:(?:\\n|\\r\\n?)(?: {4}|\\t).+)*/, lookbehind: true, alias: \"keyword\" }, { pattern: /^```[\\s\\S]*?^```$/m, greedy: true, inside: { \"code-block\": { pattern: /^(```.*(?:\\n|\\r\\n?))[\\s\\S]+?(?=(?:\\n|\\r\\n?)^```$)/m, lookbehind: true }, \"code-language\": { pattern: /^(```).+/, lookbehind: true }, punctuation: /```/ } }], title: [{ pattern: /\\S.*(?:\\n|\\r\\n?)(?:==+|--+)(?=[ \\t]*$)/m, alias: \"important\", inside: { punctuation: /==+$|--+$/ } }, { pattern: /(^\\s*)#.+/m, lookbehind: true, alias: \"important\", inside: { punctuation: /^#+|#+$/ } }], hr: { pattern: /(^\\s*)([*-])(?:[\\t ]*\\2){2,}(?=\\s*$)/m, lookbehind: true, alias: \"punctuation\" }, list: { pattern: /(^\\s*)(?:[*+-]|\\d+\\.)(?=[\\t ].)/m, lookbehind: true, alias: \"punctuation\" }, \"url-reference\": { pattern: /!?\\[[^\\]]+\\]:[\\t ]+(?:\\S+|<(?:\\\\.|[^>\\\\])+>)(?:[\\t ]+(?:\"(?:\\\\.|[^\"\\\\])*\"|'(?:\\\\.|[^'\\\\])*'|\\((?:\\\\.|[^)\\\\])*\\)))?/, inside: { variable: { pattern: /^(!?\\[)[^\\]]+/, lookbehind: true }, string: /(?:\"(?:\\\\.|[^\"\\\\])*\"|'(?:\\\\.|[^'\\\\])*'|\\((?:\\\\.|[^)\\\\])*\\))$/, punctuation: /^[\\[\\]!:]|[<>]/ }, alias: \"url\" }, bold: { pattern: e(/\\b__(?:(?!_)<inner>|_(?:(?!_)<inner>)+_)+__\\b|\\*\\*(?:(?!\\*)<inner>|\\*(?:(?!\\*)<inner>)+\\*)+\\*\\*/.source), lookbehind: true, greedy: true, inside: { content: { pattern: /(^..)[\\s\\S]+(?=..$)/, lookbehind: true, inside: {} }, punctuation: /\\*\\*|__/ } }, italic: { pattern: e(/\\b_(?:(?!_)<inner>|__(?:(?!_)<inner>)+__)+_\\b|\\*(?:(?!\\*)<inner>|\\*\\*(?:(?!\\*)<inner>)+\\*\\*)+\\*/.source), lookbehind: true, greedy: true, inside: { content: { pattern: /(^.)[\\s\\S]+(?=.$)/, lookbehind: true, inside: {} }, punctuation: /[*_]/ } }, strike: { pattern: e(/(~~?)(?:(?!~)<inner>)+\\2/.source), lookbehind: true, greedy: true, inside: { content: { pattern: /(^~~?)[\\s\\S]+(?=\\1$)/, lookbehind: true, inside: {} }, punctuation: /~~?/ } }, \"code-snippet\": { pattern: /(^|[^\\\\`])(?:``[^`\\r\\n]+(?:`[^`\\r\\n]+)*``(?!`)|`[^`\\r\\n]+`(?!`))/, lookbehind: true, greedy: true, alias: [\"code\", \"keyword\"] }, url: { pattern: e(/!?\\[(?:(?!\\])<inner>)+\\](?:\\([^\\s)]+(?:[\\t ]+\"(?:\\\\.|[^\"\\\\])*\")?\\)|[ \\t]?\\[(?:(?!\\])<inner>)+\\])/.source), lookbehind: true, greedy: true, inside: { operator: /^!/, content: { pattern: /(^\\[)[^\\]]+(?=\\])/, lookbehind: true, inside: {} }, variable: { pattern: /(^\\][ \\t]?\\[)[^\\]]+(?=\\]$)/, lookbehind: true }, url: { pattern: /(^\\]\\()[^\\s)]+/, lookbehind: true }, string: { pattern: /(^[ \\t]+)\"(?:\\\\.|[^\"\\\\])*\"(?=\\)$)/, lookbehind: true } } } }), [\"url\", \"bold\", \"italic\", \"strike\"].forEach(function(n2) {\n [\"url\", \"bold\", \"italic\", \"strike\", \"code-snippet\"].forEach(function(e2) {\n n2 !== e2 && (o.languages.markdown[n2].inside.content.inside[e2] = o.languages.markdown[e2]);\n });\n }), o.hooks.add(\"after-tokenize\", function(e2) {\n \"markdown\" !== e2.language && \"md\" !== e2.language || !function e3(n2) {\n if (n2 && \"string\" != typeof n2)\n for (var t2 = 0, a2 = n2.length; t2 < a2; t2++) {\n var r2, s = n2[t2];\n \"code\" !== s.type ? e3(s.content) : (r2 = s.content[1], s = s.content[3], r2 && s && \"code-language\" === r2.type && \"code-block\" === s.type && \"string\" == typeof r2.content && (r2 = r2.content.replace(/\\b#/g, \"sharp\").replace(/\\b\\+\\+/g, \"pp\"), r2 = \"language-\" + (r2 = (/[a-z][\\w-]*/i.exec(r2) || [\"\"])[0].toLowerCase()), s.alias ? \"string\" == typeof s.alias ? s.alias = [s.alias, r2] : s.alias.push(r2) : s.alias = [r2]));\n }\n }(e2.tokens);\n }), o.hooks.add(\"wrap\", function(e2) {\n if (\"code-block\" === e2.type) {\n for (var n2 = \"\", t2 = 0, a2 = e2.classes.length; t2 < a2; t2++) {\n var r2 = e2.classes[t2], r2 = /language-(.+)/.exec(r2);\n if (r2) {\n n2 = r2[1];\n break;\n }\n }\n var s, i = o.languages[n2];\n i ? e2.content = o.highlight(function(e3) {\n e3 = e3.replace(l, \"\");\n return e3 = e3.replace(/&(\\w{1,8}|#x?[\\da-f]{1,8});/gi, function(e4, n3) {\n var t3;\n return \"#\" === (n3 = n3.toLowerCase())[0] ? (t3 = \"x\" === n3[1] ? parseInt(n3.slice(2), 16) : Number(n3.slice(1)), c(t3)) : u[n3] || e4;\n });\n }(e2.content), i, n2) : n2 && \"none\" !== n2 && o.plugins.autoloader && (s = \"md-\" + (/* @__PURE__ */ new Date()).valueOf() + \"-\" + Math.floor(1e16 * Math.random()), e2.attributes.id = s, o.plugins.autoloader.loadLanguages(n2, function() {\n var e3 = document.getElementById(s);\n e3 && (e3.innerHTML = o.highlight(e3.textContent, o.languages[n2], n2));\n }));\n }\n }), RegExp(o.languages.markup.tag.pattern.source, \"gi\")), u = { amp: \"&\", lt: \"<\", gt: \">\", quot: '\"' }, c = String.fromCodePoint || String.fromCharCode;\n o.languages.md = o.languages.markdown;\n}(Prism), Prism.languages.graphql = { comment: /#.*/, description: { pattern: /(?:\"\"\"(?:[^\"]|(?!\"\"\")\")*\"\"\"|\"(?:\\\\.|[^\\\\\"\\r\\n])*\")(?=\\s*[a-z_])/i, greedy: true, alias: \"string\", inside: { \"language-markdown\": { pattern: /(^\"(?:\"\")?)(?!\\1)[\\s\\S]+(?=\\1$)/, lookbehind: true, inside: Prism.languages.markdown } } }, string: { pattern: /\"\"\"(?:[^\"]|(?!\"\"\")\")*\"\"\"|\"(?:\\\\.|[^\\\\\"\\r\\n])*\"/, greedy: true }, number: /(?:\\B-|\\b)\\d+(?:\\.\\d+)?(?:e[+-]?\\d+)?\\b/i, boolean: /\\b(?:false|true)\\b/, variable: /\\$[a-z_]\\w*/i, directive: { pattern: /@[a-z_]\\w*/i, alias: \"function\" }, \"attr-name\": { pattern: /\\b[a-z_]\\w*(?=\\s*(?:\\((?:[^()\"]|\"(?:\\\\.|[^\\\\\"\\r\\n])*\")*\\))?:)/i, greedy: true }, \"atom-input\": { pattern: /\\b[A-Z]\\w*Input\\b/, alias: \"class-name\" }, scalar: /\\b(?:Boolean|Float|ID|Int|String)\\b/, constant: /\\b[A-Z][A-Z_\\d]*\\b/, \"class-name\": { pattern: /(\\b(?:enum|implements|interface|on|scalar|type|union)\\s+|&\\s*|:\\s*|\\[)[A-Z_]\\w*/, lookbehind: true }, fragment: { pattern: /(\\bfragment\\s+|\\.{3}\\s*(?!on\\b))[a-zA-Z_]\\w*/, lookbehind: true, alias: \"function\" }, \"definition-mutation\": { pattern: /(\\bmutation\\s+)[a-zA-Z_]\\w*/, lookbehind: true, alias: \"function\" }, \"definition-query\": { pattern: /(\\bquery\\s+)[a-zA-Z_]\\w*/, lookbehind: true, alias: \"function\" }, keyword: /\\b(?:directive|enum|extend|fragment|implements|input|interface|mutation|on|query|repeatable|scalar|schema|subscription|type|union)\\b/, operator: /[!=|&]|\\.{3}/, \"property-query\": /\\w+(?=\\s*\\()/, object: /\\w+(?=\\s*\\{)/, punctuation: /[!(){}\\[\\]:=,]/, property: /\\w+/ }, Prism.hooks.add(\"after-tokenize\", function(e) {\n if (\"graphql\" === e.language)\n for (var i = e.tokens.filter(function(e2) {\n return \"string\" != typeof e2 && \"comment\" !== e2.type && \"scalar\" !== e2.type;\n }), o = 0; o < i.length; ) {\n var n = i[o++];\n if (\"keyword\" === n.type && \"mutation\" === n.content) {\n var t = [];\n if (p([\"definition-mutation\", \"punctuation\"]) && \"(\" === c(1).content) {\n o += 2;\n var a = d(/^\\($/, /^\\)$/);\n if (-1 === a)\n continue;\n for (; o < a; o++) {\n var r = c(0);\n \"variable\" === r.type && (g(r, \"variable-input\"), t.push(r.content));\n }\n o = a + 1;\n }\n if (p([\"punctuation\", \"property-query\"]) && \"{\" === c(0).content && (o++, g(c(0), \"property-mutation\"), 0 < t.length)) {\n var s = d(/^\\{$/, /^\\}$/);\n if (-1 !== s)\n for (var l = o; l < s; l++) {\n var u = i[l];\n \"variable\" === u.type && 0 <= t.indexOf(u.content) && g(u, \"variable-input\");\n }\n }\n }\n }\n function c(e2) {\n return i[o + e2];\n }\n function p(e2, n2) {\n n2 = n2 || 0;\n for (var t2 = 0; t2 < e2.length; t2++) {\n var a2 = c(t2 + n2);\n if (!a2 || a2.type !== e2[t2])\n return;\n }\n return 1;\n }\n function d(e2, n2) {\n for (var t2 = 1, a2 = o; a2 < i.length; a2++) {\n var r2 = i[a2], s2 = r2.content;\n if (\"punctuation\" === r2.type && \"string\" == typeof s2) {\n if (e2.test(s2))\n t2++;\n else if (n2.test(s2) && 0 === --t2)\n return a2;\n }\n }\n return -1;\n }\n function g(e2, n2) {\n var t2 = e2.alias;\n t2 ? Array.isArray(t2) || (e2.alias = t2 = [t2]) : e2.alias = t2 = [], t2.push(n2);\n }\n}), Prism.languages.sql = { comment: { pattern: /(^|[^\\\\])(?:\\/\\*[\\s\\S]*?\\*\\/|(?:--|\\/\\/|#).*)/, lookbehind: true }, variable: [{ pattern: /@([\"'`])(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])+\\1/, greedy: true }, /@[\\w.$]+/], string: { pattern: /(^|[^@\\\\])(\"|')(?:\\\\[\\s\\S]|(?!\\2)[^\\\\]|\\2\\2)*\\2/, greedy: true, lookbehind: true }, identifier: { pattern: /(^|[^@\\\\])`(?:\\\\[\\s\\S]|[^`\\\\]|``)*`/, greedy: true, lookbehind: true, inside: { punctuation: /^`|`$/ } }, function: /\\b(?:AVG|COUNT|FIRST|FORMAT|LAST|LCASE|LEN|MAX|MID|MIN|MOD|NOW|ROUND|SUM|UCASE)(?=\\s*\\()/i, keyword: /\\b(?:ACTION|ADD|AFTER|ALGORITHM|ALL|ALTER|ANALYZE|ANY|APPLY|AS|ASC|AUTHORIZATION|AUTO_INCREMENT|BACKUP|BDB|BEGIN|BERKELEYDB|BIGINT|BINARY|BIT|BLOB|BOOL|BOOLEAN|BREAK|BROWSE|BTREE|BULK|BY|CALL|CASCADED?|CASE|CHAIN|CHAR(?:ACTER|SET)?|CHECK(?:POINT)?|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMNS?|COMMENT|COMMIT(?:TED)?|COMPUTE|CONNECT|CONSISTENT|CONSTRAINT|CONTAINS(?:TABLE)?|CONTINUE|CONVERT|CREATE|CROSS|CURRENT(?:_DATE|_TIME|_TIMESTAMP|_USER)?|CURSOR|CYCLE|DATA(?:BASES?)?|DATE(?:TIME)?|DAY|DBCC|DEALLOCATE|DEC|DECIMAL|DECLARE|DEFAULT|DEFINER|DELAYED|DELETE|DELIMITERS?|DENY|DESC|DESCRIBE|DETERMINISTIC|DISABLE|DISCARD|DISK|DISTINCT|DISTINCTROW|DISTRIBUTED|DO|DOUBLE|DROP|DUMMY|DUMP(?:FILE)?|DUPLICATE|ELSE(?:IF)?|ENABLE|ENCLOSED|END|ENGINE|ENUM|ERRLVL|ERRORS|ESCAPED?|EXCEPT|EXEC(?:UTE)?|EXISTS|EXIT|EXPLAIN|EXTENDED|FETCH|FIELDS|FILE|FILLFACTOR|FIRST|FIXED|FLOAT|FOLLOWING|FOR(?: EACH ROW)?|FORCE|FOREIGN|FREETEXT(?:TABLE)?|FROM|FULL|FUNCTION|GEOMETRY(?:COLLECTION)?|GLOBAL|GOTO|GRANT|GROUP|HANDLER|HASH|HAVING|HOLDLOCK|HOUR|IDENTITY(?:COL|_INSERT)?|IF|IGNORE|IMPORT|INDEX|INFILE|INNER|INNODB|INOUT|INSERT|INT|INTEGER|INTERSECT|INTERVAL|INTO|INVOKER|ISOLATION|ITERATE|JOIN|KEYS?|KILL|LANGUAGE|LAST|LEAVE|LEFT|LEVEL|LIMIT|LINENO|LINES|LINESTRING|LOAD|LOCAL|LOCK|LONG(?:BLOB|TEXT)|LOOP|MATCH(?:ED)?|MEDIUM(?:BLOB|INT|TEXT)|MERGE|MIDDLEINT|MINUTE|MODE|MODIFIES|MODIFY|MONTH|MULTI(?:LINESTRING|POINT|POLYGON)|NATIONAL|NATURAL|NCHAR|NEXT|NO|NONCLUSTERED|NULLIF|NUMERIC|OFF?|OFFSETS?|ON|OPEN(?:DATASOURCE|QUERY|ROWSET)?|OPTIMIZE|OPTION(?:ALLY)?|ORDER|OUT(?:ER|FILE)?|OVER|PARTIAL|PARTITION|PERCENT|PIVOT|PLAN|POINT|POLYGON|PRECEDING|PRECISION|PREPARE|PREV|PRIMARY|PRINT|PRIVILEGES|PROC(?:EDURE)?|PUBLIC|PURGE|QUICK|RAISERROR|READS?|REAL|RECONFIGURE|REFERENCES|RELEASE|RENAME|REPEAT(?:ABLE)?|REPLACE|REPLICATION|REQUIRE|RESIGNAL|RESTORE|RESTRICT|RETURN(?:ING|S)?|REVOKE|RIGHT|ROLLBACK|ROUTINE|ROW(?:COUNT|GUIDCOL|S)?|RTREE|RULE|SAVE(?:POINT)?|SCHEMA|SECOND|SELECT|SERIAL(?:IZABLE)?|SESSION(?:_USER)?|SET(?:USER)?|SHARE|SHOW|SHUTDOWN|SIMPLE|SMALLINT|SNAPSHOT|SOME|SONAME|SQL|START(?:ING)?|STATISTICS|STATUS|STRIPED|SYSTEM_USER|TABLES?|TABLESPACE|TEMP(?:ORARY|TABLE)?|TERMINATED|TEXT(?:SIZE)?|THEN|TIME(?:STAMP)?|TINY(?:BLOB|INT|TEXT)|TOP?|TRAN(?:SACTIONS?)?|TRIGGER|TRUNCATE|TSEQUAL|TYPES?|UNBOUNDED|UNCOMMITTED|UNDEFINED|UNION|UNIQUE|UNLOCK|UNPIVOT|UNSIGNED|UPDATE(?:TEXT)?|USAGE|USE|USER|USING|VALUES?|VAR(?:BINARY|CHAR|CHARACTER|YING)|VIEW|WAITFOR|WARNINGS|WHEN|WHERE|WHILE|WITH(?: ROLLUP|IN)?|WORK|WRITE(?:TEXT)?|YEAR)\\b/i, boolean: /\\b(?:FALSE|NULL|TRUE)\\b/i, number: /\\b0x[\\da-f]+\\b|\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+\\b/i, operator: /[-+*\\/=%^~]|&&?|\\|\\|?|!=?|<(?:=>?|<|>)?|>[>=]?|\\b(?:AND|BETWEEN|DIV|ILIKE|IN|IS|LIKE|NOT|OR|REGEXP|RLIKE|SOUNDS LIKE|XOR)\\b/i, punctuation: /[;[\\]()`,.]/ }, function(b) {\n var e = b.languages.javascript[\"template-string\"], t = e.pattern.source, m = e.inside.interpolation, f = m.inside[\"interpolation-punctuation\"], s = m.pattern.source;\n function n(e2, n2) {\n if (b.languages[e2])\n return { pattern: RegExp(\"((?:\" + n2 + \")\\\\s*)\" + t), lookbehind: true, greedy: true, inside: { \"template-punctuation\": { pattern: /^`|`$/, alias: \"string\" }, \"embedded-code\": { pattern: /[\\s\\S]+/, alias: e2 } } };\n }\n function h(e2, n2, t2) {\n e2 = { code: e2, grammar: n2, language: t2 };\n return b.hooks.run(\"before-tokenize\", e2), e2.tokens = b.tokenize(e2.code, e2.grammar), b.hooks.run(\"after-tokenize\", e2), e2.tokens;\n }\n function l(a2, e2, r) {\n var n2 = b.tokenize(a2, { interpolation: { pattern: RegExp(s), lookbehind: true } }), p = 0, d = {}, n2 = h(n2.map(function(e3) {\n if (\"string\" == typeof e3)\n return e3;\n for (var n3, t2, e3 = e3.content; -1 !== a2.indexOf((t2 = p++, n3 = \"___\" + r.toUpperCase() + \"_\" + t2 + \"___\")); )\n ;\n return d[n3] = e3, n3;\n }).join(\"\"), e2, r), g = Object.keys(d);\n return p = 0, function e3(n3) {\n for (var t2 = 0; t2 < n3.length; t2++) {\n if (p >= g.length)\n return;\n var a3, r2, s2, i, o, l2, u2, c = n3[t2];\n \"string\" == typeof c || \"string\" == typeof c.content ? (a3 = g[p], -1 !== (u2 = (l2 = \"string\" == typeof c ? c : c.content).indexOf(a3)) && (++p, r2 = l2.substring(0, u2), o = d[a3], s2 = void 0, (i = {})[\"interpolation-punctuation\"] = f, 3 === (i = b.tokenize(o, i)).length && ((s2 = [1, 1]).push.apply(s2, h(i[1], b.languages.javascript, \"javascript\")), i.splice.apply(i, s2)), s2 = new b.Token(\"interpolation\", i, m.alias, o), i = l2.substring(u2 + a3.length), o = [], r2 && o.push(r2), o.push(s2), i && (e3(l2 = [i]), o.push.apply(o, l2)), \"string\" == typeof c ? (n3.splice.apply(n3, [t2, 1].concat(o)), t2 += o.length - 1) : c.content = o)) : (u2 = c.content, Array.isArray(u2) ? e3(u2) : e3([u2]));\n }\n }(n2), new b.Token(r, n2, \"language-\" + r, a2);\n }\n b.languages.javascript[\"template-string\"] = [n(\"css\", /\\b(?:styled(?:\\([^)]*\\))?(?:\\s*\\.\\s*\\w+(?:\\([^)]*\\))*)*|css(?:\\s*\\.\\s*(?:global|resolve))?|createGlobalStyle|keyframes)/.source), n(\"html\", /\\bhtml|\\.\\s*(?:inner|outer)HTML\\s*\\+?=/.source), n(\"svg\", /\\bsvg/.source), n(\"markdown\", /\\b(?:markdown|md)/.source), n(\"graphql\", /\\b(?:gql|graphql(?:\\s*\\.\\s*experimental)?)/.source), n(\"sql\", /\\bsql/.source), e].filter(Boolean);\n var a = { javascript: true, js: true, typescript: true, ts: true, jsx: true, tsx: true };\n function u(e2) {\n return \"string\" == typeof e2 ? e2 : Array.isArray(e2) ? e2.map(u).join(\"\") : u(e2.content);\n }\n b.hooks.add(\"after-tokenize\", function(e2) {\n e2.language in a && !function e3(n2) {\n for (var t2 = 0, a2 = n2.length; t2 < a2; t2++) {\n var r, s2, i, o = n2[t2];\n \"string\" != typeof o && (r = o.content, Array.isArray(r) ? \"template-string\" === o.type ? (o = r[1], 3 === r.length && \"string\" != typeof o && \"embedded-code\" === o.type && (s2 = u(o), o = o.alias, o = Array.isArray(o) ? o[0] : o, i = b.languages[o]) && (r[1] = l(s2, i, o))) : e3(r) : \"string\" != typeof r && e3([r]));\n }\n }(e2.tokens);\n });\n}(Prism), function(e) {\n e.languages.typescript = e.languages.extend(\"javascript\", { \"class-name\": { pattern: /(\\b(?:class|extends|implements|instanceof|interface|new|type)\\s+)(?!keyof\\b)(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?:\\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>)?/, lookbehind: true, greedy: true, inside: null }, builtin: /\\b(?:Array|Function|Promise|any|boolean|console|never|number|string|symbol|unknown)\\b/ }), e.languages.typescript.keyword.push(/\\b(?:abstract|declare|is|keyof|readonly|require)\\b/, /\\b(?:asserts|infer|interface|module|namespace|type)\\b(?=\\s*(?:[{_$a-zA-Z\\xA0-\\uFFFF]|$))/, /\\btype\\b(?=\\s*(?:[\\{*]|$))/), delete e.languages.typescript.parameter, delete e.languages.typescript[\"literal-property\"];\n var n = e.languages.extend(\"typescript\", {});\n delete n[\"class-name\"], e.languages.typescript[\"class-name\"].inside = n, e.languages.insertBefore(\"typescript\", \"function\", { decorator: { pattern: /@[$\\w\\xA0-\\uFFFF]+/, inside: { at: { pattern: /^@/, alias: \"operator\" }, function: /^[\\s\\S]+/ } }, \"generic-function\": { pattern: /#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*\\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\\s*\\()/, greedy: true, inside: { function: /^#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*/, generic: { pattern: /<[\\s\\S]+/, alias: \"class-name\", inside: n } } } }), e.languages.ts = e.languages.typescript;\n}(Prism), function(e) {\n var n = e.languages.javascript, t = /\\{(?:[^{}]|\\{(?:[^{}]|\\{[^{}]*\\})*\\})+\\}/.source, a = \"(@(?:arg|argument|param|property)\\\\s+(?:\" + t + \"\\\\s+)?)\";\n e.languages.jsdoc = e.languages.extend(\"javadoclike\", { parameter: { pattern: RegExp(a + /(?:(?!\\s)[$\\w\\xA0-\\uFFFF.])+(?=\\s|$)/.source), lookbehind: true, inside: { punctuation: /\\./ } } }), e.languages.insertBefore(\"jsdoc\", \"keyword\", { \"optional-parameter\": { pattern: RegExp(a + /\\[(?:(?!\\s)[$\\w\\xA0-\\uFFFF.])+(?:=[^[\\]]+)?\\](?=\\s|$)/.source), lookbehind: true, inside: { parameter: { pattern: /(^\\[)[$\\w\\xA0-\\uFFFF\\.]+/, lookbehind: true, inside: { punctuation: /\\./ } }, code: { pattern: /(=)[\\s\\S]*(?=\\]$)/, lookbehind: true, inside: n, alias: \"language-javascript\" }, punctuation: /[=[\\]]/ } }, \"class-name\": [{ pattern: RegExp(/(@(?:augments|class|extends|interface|memberof!?|template|this|typedef)\\s+(?:<TYPE>\\s+)?)[A-Z]\\w*(?:\\.[A-Z]\\w*)*/.source.replace(/<TYPE>/g, function() {\n return t;\n })), lookbehind: true, inside: { punctuation: /\\./ } }, { pattern: RegExp(\"(@[a-z]+\\\\s+)\" + t), lookbehind: true, inside: { string: n.string, number: n.number, boolean: n.boolean, keyword: e.languages.typescript.keyword, operator: /=>|\\.\\.\\.|[&|?:*]/, punctuation: /[.,;=<>{}()[\\]]/ } }], example: { pattern: /(@example\\s+(?!\\s))(?:[^@\\s]|\\s+(?!\\s))+?(?=\\s*(?:\\*\\s*)?(?:@\\w|\\*\\/))/, lookbehind: true, inside: { code: { pattern: /^([\\t ]*(?:\\*\\s*)?)\\S.*$/m, lookbehind: true, inside: n, alias: \"language-javascript\" } } } }), e.languages.javadoclike.addSupport(\"javascript\", e.languages.jsdoc);\n}(Prism), function(e) {\n e.languages.flow = e.languages.extend(\"javascript\", {}), e.languages.insertBefore(\"flow\", \"keyword\", { type: [{ pattern: /\\b(?:[Bb]oolean|Function|[Nn]umber|[Ss]tring|[Ss]ymbol|any|mixed|null|void)\\b/, alias: \"class-name\" }] }), e.languages.flow[\"function-variable\"].pattern = /(?!\\s)[_$a-z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*=\\s*(?:function\\b|(?:\\([^()]*\\)(?:\\s*:\\s*\\w+)?|(?!\\s)[_$a-z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*)\\s*=>))/i, delete e.languages.flow.parameter, e.languages.insertBefore(\"flow\", \"operator\", { \"flow-punctuation\": { pattern: /\\{\\||\\|\\}/, alias: \"punctuation\" } }), Array.isArray(e.languages.flow.keyword) || (e.languages.flow.keyword = [e.languages.flow.keyword]), e.languages.flow.keyword.unshift({ pattern: /(^|[^$]\\b)(?:Class|declare|opaque|type)\\b(?!\\$)/, lookbehind: true }, { pattern: /(^|[^$]\\B)\\$(?:Diff|Enum|Exact|Keys|ObjMap|PropertyType|Record|Shape|Subtype|Supertype|await)\\b(?!\\$)/, lookbehind: true });\n}(Prism), Prism.languages.n4js = Prism.languages.extend(\"javascript\", { keyword: /\\b(?:Array|any|boolean|break|case|catch|class|const|constructor|continue|debugger|declare|default|delete|do|else|enum|export|extends|false|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|module|new|null|number|package|private|protected|public|return|set|static|string|super|switch|this|throw|true|try|typeof|var|void|while|with|yield)\\b/ }), Prism.languages.insertBefore(\"n4js\", \"constant\", { annotation: { pattern: /@+\\w+/, alias: \"operator\" } }), Prism.languages.n4jsd = Prism.languages.n4js, function(e) {\n function n(e2, n2) {\n return RegExp(e2.replace(/<ID>/g, function() {\n return /(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*/.source;\n }), n2);\n }\n e.languages.insertBefore(\"javascript\", \"function-variable\", { \"method-variable\": { pattern: RegExp(\"(\\\\.\\\\s*)\" + e.languages.javascript[\"function-variable\"].pattern.source), lookbehind: true, alias: [\"function-variable\", \"method\", \"function\", \"property-access\"] } }), e.languages.insertBefore(\"javascript\", \"function\", { method: { pattern: RegExp(\"(\\\\.\\\\s*)\" + e.languages.javascript.function.source), lookbehind: true, alias: [\"function\", \"property-access\"] } }), e.languages.insertBefore(\"javascript\", \"constant\", { \"known-class-name\": [{ pattern: /\\b(?:(?:Float(?:32|64)|(?:Int|Uint)(?:8|16|32)|Uint8Clamped)?Array|ArrayBuffer|BigInt|Boolean|DataView|Date|Error|Function|Intl|JSON|(?:Weak)?(?:Map|Set)|Math|Number|Object|Promise|Proxy|Reflect|RegExp|String|Symbol|WebAssembly)\\b/, alias: \"class-name\" }, { pattern: /\\b(?:[A-Z]\\w*)Error\\b/, alias: \"class-name\" }] }), e.languages.insertBefore(\"javascript\", \"keyword\", { imports: { pattern: n(/(\\bimport\\b\\s*)(?:<ID>(?:\\s*,\\s*(?:\\*\\s*as\\s+<ID>|\\{[^{}]*\\}))?|\\*\\s*as\\s+<ID>|\\{[^{}]*\\})(?=\\s*\\bfrom\\b)/.source), lookbehind: true, inside: e.languages.javascript }, exports: { pattern: n(/(\\bexport\\b\\s*)(?:\\*(?:\\s*as\\s+<ID>)?(?=\\s*\\bfrom\\b)|\\{[^{}]*\\})/.source), lookbehind: true, inside: e.languages.javascript } }), e.languages.javascript.keyword.unshift({ pattern: /\\b(?:as|default|export|from|import)\\b/, alias: \"module\" }, { pattern: /\\b(?:await|break|catch|continue|do|else|finally|for|if|return|switch|throw|try|while|yield)\\b/, alias: \"control-flow\" }, { pattern: /\\bnull\\b/, alias: [\"null\", \"nil\"] }, { pattern: /\\bundefined\\b/, alias: \"nil\" }), e.languages.insertBefore(\"javascript\", \"operator\", { spread: { pattern: /\\.{3}/, alias: \"operator\" }, arrow: { pattern: /=>/, alias: \"operator\" } }), e.languages.insertBefore(\"javascript\", \"punctuation\", { \"property-access\": { pattern: n(/(\\.\\s*)#?<ID>/.source), lookbehind: true }, \"maybe-class-name\": { pattern: /(^|[^$\\w\\xA0-\\uFFFF])[A-Z][$\\w\\xA0-\\uFFFF]+/, lookbehind: true }, dom: { pattern: /\\b(?:document|(?:local|session)Storage|location|navigator|performance|window)\\b/, alias: \"variable\" }, console: { pattern: /\\bconsole(?=\\s*\\.)/, alias: \"class-name\" } });\n for (var t = [\"function\", \"function-variable\", \"method\", \"method-variable\", \"property-access\"], a = 0; a < t.length; a++) {\n var r = t[a], s = e.languages.javascript[r], r = (s = \"RegExp\" === e.util.type(s) ? e.languages.javascript[r] = { pattern: s } : s).inside || {};\n (s.inside = r)[\"maybe-class-name\"] = /^[A-Z][\\s\\S]*/;\n }\n}(Prism), function(s) {\n var e = s.util.clone(s.languages.javascript), t = /(?:\\s|\\/\\/.*(?!.)|\\/\\*(?:[^*]|\\*(?!\\/))\\*\\/)/.source, a = /(?:\\{(?:\\{(?:\\{[^{}]*\\}|[^{}])*\\}|[^{}])*\\})/.source, r = /(?:\\{<S>*\\.{3}(?:[^{}]|<BRACES>)*\\})/.source;\n function n(e2, n2) {\n return e2 = e2.replace(/<S>/g, function() {\n return t;\n }).replace(/<BRACES>/g, function() {\n return a;\n }).replace(/<SPREAD>/g, function() {\n return r;\n }), RegExp(e2, n2);\n }\n r = n(r).source, s.languages.jsx = s.languages.extend(\"markup\", e), s.languages.jsx.tag.pattern = n(/<\\/?(?:[\\w.:-]+(?:<S>+(?:[\\w.:$-]+(?:=(?:\"(?:\\\\[\\s\\S]|[^\\\\\"])*\"|'(?:\\\\[\\s\\S]|[^\\\\'])*'|[^\\s{'\"/>=]+|<BRACES>))?|<SPREAD>))*<S>*\\/?)?>/.source), s.languages.jsx.tag.inside.tag.pattern = /^<\\/?[^\\s>\\/]*/, s.languages.jsx.tag.inside[\"attr-value\"].pattern = /=(?!\\{)(?:\"(?:\\\\[\\s\\S]|[^\\\\\"])*\"|'(?:\\\\[\\s\\S]|[^\\\\'])*'|[^\\s'\">]+)/, s.languages.jsx.tag.inside.tag.inside[\"class-name\"] = /^[A-Z]\\w*(?:\\.[A-Z]\\w*)*$/, s.languages.jsx.tag.inside.comment = e.comment, s.languages.insertBefore(\"inside\", \"attr-name\", { spread: { pattern: n(/<SPREAD>/.source), inside: s.languages.jsx } }, s.languages.jsx.tag), s.languages.insertBefore(\"inside\", \"special-attr\", { script: { pattern: n(/=<BRACES>/.source), alias: \"language-javascript\", inside: { \"script-punctuation\": { pattern: /^=(?=\\{)/, alias: \"punctuation\" }, rest: s.languages.jsx } } }, s.languages.jsx.tag);\n function i(e2) {\n for (var n2 = [], t2 = 0; t2 < e2.length; t2++) {\n var a2 = e2[t2], r2 = false;\n \"string\" != typeof a2 && (\"tag\" === a2.type && a2.content[0] && \"tag\" === a2.content[0].type ? \"</\" === a2.content[0].content[0].content ? 0 < n2.length && n2[n2.length - 1].tagName === o(a2.content[0].content[1]) && n2.pop() : \"/>\" !== a2.content[a2.content.length - 1].content && n2.push({ tagName: o(a2.content[0].content[1]), openedBraces: 0 }) : 0 < n2.length && \"punctuation\" === a2.type && \"{\" === a2.content ? n2[n2.length - 1].openedBraces++ : 0 < n2.length && 0 < n2[n2.length - 1].openedBraces && \"punctuation\" === a2.type && \"}\" === a2.content ? n2[n2.length - 1].openedBraces-- : r2 = true), (r2 || \"string\" == typeof a2) && 0 < n2.length && 0 === n2[n2.length - 1].openedBraces && (r2 = o(a2), t2 < e2.length - 1 && (\"string\" == typeof e2[t2 + 1] || \"plain-text\" === e2[t2 + 1].type) && (r2 += o(e2[t2 + 1]), e2.splice(t2 + 1, 1)), 0 < t2 && (\"string\" == typeof e2[t2 - 1] || \"plain-text\" === e2[t2 - 1].type) && (r2 = o(e2[t2 - 1]) + r2, e2.splice(t2 - 1, 1), t2--), e2[t2] = new s.Token(\"plain-text\", r2, null, r2)), a2.content && \"string\" != typeof a2.content && i(a2.content);\n }\n }\n var o = function(e2) {\n return e2 ? \"string\" == typeof e2 ? e2 : \"string\" == typeof e2.content ? e2.content : e2.content.map(o).join(\"\") : \"\";\n };\n s.hooks.add(\"after-tokenize\", function(e2) {\n \"jsx\" !== e2.language && \"tsx\" !== e2.language || i(e2.tokens);\n });\n}(Prism), function(e) {\n var n = e.util.clone(e.languages.typescript), n = (e.languages.tsx = e.languages.extend(\"jsx\", n), delete e.languages.tsx.parameter, delete e.languages.tsx[\"literal-property\"], e.languages.tsx.tag);\n n.pattern = RegExp(/(^|[^\\w$]|(?=<\\/))/.source + \"(?:\" + n.pattern.source + \")\", n.pattern.flags), n.lookbehind = true;\n}(Prism), Prism.languages.swift = { comment: { pattern: /(^|[^\\\\:])(?:\\/\\/.*|\\/\\*(?:[^/*]|\\/(?!\\*)|\\*(?!\\/)|\\/\\*(?:[^*]|\\*(?!\\/))*\\*\\/)*\\*\\/)/, lookbehind: true, greedy: true }, \"string-literal\": [{ pattern: RegExp(/(^|[^\"#])/.source + \"(?:\" + /\"(?:\\\\(?:\\((?:[^()]|\\([^()]*\\))*\\)|\\r\\n|[^(])|[^\\\\\\r\\n\"])*\"/.source + \"|\" + /\"\"\"(?:\\\\(?:\\((?:[^()]|\\([^()]*\\))*\\)|[^(])|[^\\\\\"]|\"(?!\"\"))*\"\"\"/.source + \")\" + /(?![\"#])/.source), lookbehind: true, greedy: true, inside: { interpolation: { pattern: /(\\\\\\()(?:[^()]|\\([^()]*\\))*(?=\\))/, lookbehind: true, inside: null }, \"interpolation-punctuation\": { pattern: /^\\)|\\\\\\($/, alias: \"punctuation\" }, punctuation: /\\\\(?=[\\r\\n])/, string: /[\\s\\S]+/ } }, { pattern: RegExp(/(^|[^\"#])(#+)/.source + \"(?:\" + /\"(?:\\\\(?:#+\\((?:[^()]|\\([^()]*\\))*\\)|\\r\\n|[^#])|[^\\\\\\r\\n])*?\"/.source + \"|\" + /\"\"\"(?:\\\\(?:#+\\((?:[^()]|\\([^()]*\\))*\\)|[^#])|[^\\\\])*?\"\"\"/.source + \")\\\\2\"), lookbehind: true, greedy: true, inside: { interpolation: { pattern: /(\\\\#+\\()(?:[^()]|\\([^()]*\\))*(?=\\))/, lookbehind: true, inside: null }, \"interpolation-punctuation\": { pattern: /^\\)|\\\\#+\\($/, alias: \"punctuation\" }, string: /[\\s\\S]+/ } }], directive: { pattern: RegExp(/#/.source + \"(?:\" + /(?:elseif|if)\\b/.source + \"(?:[ \t]*\" + /(?:![ \\t]*)?(?:\\b\\w+\\b(?:[ \\t]*\\((?:[^()]|\\([^()]*\\))*\\))?|\\((?:[^()]|\\([^()]*\\))*\\))(?:[ \\t]*(?:&&|\\|\\|))?/.source + \")+|\" + /(?:else|endif)\\b/.source + \")\"), alias: \"property\", inside: { \"directive-name\": /^#\\w+/, boolean: /\\b(?:false|true)\\b/, number: /\\b\\d+(?:\\.\\d+)*\\b/, operator: /!|&&|\\|\\||[<>]=?/, punctuation: /[(),]/ } }, literal: { pattern: /#(?:colorLiteral|column|dsohandle|file(?:ID|Literal|Path)?|function|imageLiteral|line)\\b/, alias: \"constant\" }, \"other-directive\": { pattern: /#\\w+\\b/, alias: \"property\" }, attribute: { pattern: /@\\w+/, alias: \"atrule\" }, \"function-definition\": { pattern: /(\\bfunc\\s+)\\w+/, lookbehind: true, alias: \"function\" }, label: { pattern: /\\b(break|continue)\\s+\\w+|\\b[a-zA-Z_]\\w*(?=\\s*:\\s*(?:for|repeat|while)\\b)/, lookbehind: true, alias: \"important\" }, keyword: /\\b(?:Any|Protocol|Self|Type|actor|as|assignment|associatedtype|associativity|async|await|break|case|catch|class|continue|convenience|default|defer|deinit|didSet|do|dynamic|else|enum|extension|fallthrough|fileprivate|final|for|func|get|guard|higherThan|if|import|in|indirect|infix|init|inout|internal|is|isolated|lazy|left|let|lowerThan|mutating|none|nonisolated|nonmutating|open|operator|optional|override|postfix|precedencegroup|prefix|private|protocol|public|repeat|required|rethrows|return|right|safe|self|set|some|static|struct|subscript|super|switch|throw|throws|try|typealias|unowned|unsafe|var|weak|where|while|willSet)\\b/, boolean: /\\b(?:false|true)\\b/, nil: { pattern: /\\bnil\\b/, alias: \"constant\" }, \"short-argument\": /\\$\\d+\\b/, omit: { pattern: /\\b_\\b/, alias: \"keyword\" }, number: /\\b(?:[\\d_]+(?:\\.[\\de_]+)?|0x[a-f0-9_]+(?:\\.[a-f0-9p_]+)?|0b[01_]+|0o[0-7_]+)\\b/i, \"class-name\": /\\b[A-Z](?:[A-Z_\\d]*[a-z]\\w*)?\\b/, function: /\\b[a-z_]\\w*(?=\\s*\\()/i, constant: /\\b(?:[A-Z_]{2,}|k[A-Z][A-Za-z_]+)\\b/, operator: /[-+*/%=!<>&|^~?]+|\\.[.\\-+*/%=!<>&|^~?]+/, punctuation: /[{}[\\]();,.:\\\\]/ }, Prism.languages.swift[\"string-literal\"].forEach(function(e) {\n e.inside.interpolation.inside = Prism.languages.swift;\n}), function(e) {\n e.languages.kotlin = e.languages.extend(\"clike\", { keyword: { pattern: /(^|[^.])\\b(?:abstract|actual|annotation|as|break|by|catch|class|companion|const|constructor|continue|crossinline|data|do|dynamic|else|enum|expect|external|final|finally|for|fun|get|if|import|in|infix|init|inline|inner|interface|internal|is|lateinit|noinline|null|object|open|operator|out|override|package|private|protected|public|reified|return|sealed|set|super|suspend|tailrec|this|throw|to|try|typealias|val|var|vararg|when|where|while)\\b/, lookbehind: true }, function: [{ pattern: /(?:`[^\\r\\n`]+`|\\b\\w+)(?=\\s*\\()/, greedy: true }, { pattern: /(\\.)(?:`[^\\r\\n`]+`|\\w+)(?=\\s*\\{)/, lookbehind: true, greedy: true }], number: /\\b(?:0[xX][\\da-fA-F]+(?:_[\\da-fA-F]+)*|0[bB][01]+(?:_[01]+)*|\\d+(?:_\\d+)*(?:\\.\\d+(?:_\\d+)*)?(?:[eE][+-]?\\d+(?:_\\d+)*)?[fFL]?)\\b/, operator: /\\+[+=]?|-[-=>]?|==?=?|!(?:!|==?)?|[\\/*%<>]=?|[?:]:?|\\.\\.|&&|\\|\\||\\b(?:and|inv|or|shl|shr|ushr|xor)\\b/ }), delete e.languages.kotlin[\"class-name\"];\n var n = { \"interpolation-punctuation\": { pattern: /^\\$\\{?|\\}$/, alias: \"punctuation\" }, expression: { pattern: /[\\s\\S]+/, inside: e.languages.kotlin } };\n e.languages.insertBefore(\"kotlin\", \"string\", { \"string-literal\": [{ pattern: /\"\"\"(?:[^$]|\\$(?:(?!\\{)|\\{[^{}]*\\}))*?\"\"\"/, alias: \"multiline\", inside: { interpolation: { pattern: /\\$(?:[a-z_]\\w*|\\{[^{}]*\\})/i, inside: n }, string: /[\\s\\S]+/ } }, { pattern: /\"(?:[^\"\\\\\\r\\n$]|\\\\.|\\$(?:(?!\\{)|\\{[^{}]*\\}))*\"/, alias: \"singleline\", inside: { interpolation: { pattern: /((?:^|[^\\\\])(?:\\\\{2})*)\\$(?:[a-z_]\\w*|\\{[^{}]*\\})/i, lookbehind: true, inside: n }, string: /[\\s\\S]+/ } }], char: { pattern: /'(?:[^'\\\\\\r\\n]|\\\\(?:.|u[a-fA-F0-9]{0,4}))'/, greedy: true } }), delete e.languages.kotlin.string, e.languages.insertBefore(\"kotlin\", \"keyword\", { annotation: { pattern: /\\B@(?:\\w+:)?(?:[A-Z]\\w*|\\[[^\\]]+\\])/, alias: \"builtin\" } }), e.languages.insertBefore(\"kotlin\", \"function\", { label: { pattern: /\\b\\w+@|@\\w+\\b/, alias: \"symbol\" } }), e.languages.kt = e.languages.kotlin, e.languages.kts = e.languages.kotlin;\n}(Prism), Prism.languages.c = Prism.languages.extend(\"clike\", { comment: { pattern: /\\/\\/(?:[^\\r\\n\\\\]|\\\\(?:\\r\\n?|\\n|(?![\\r\\n])))*|\\/\\*[\\s\\S]*?(?:\\*\\/|$)/, greedy: true }, string: { pattern: /\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\"\\\\\\r\\n])*\"/, greedy: true }, \"class-name\": { pattern: /(\\b(?:enum|struct)\\s+(?:__attribute__\\s*\\(\\([\\s\\S]*?\\)\\)\\s*)?)\\w+|\\b[a-z]\\w*_t\\b/, lookbehind: true }, keyword: /\\b(?:_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|__attribute__|asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|inline|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|typeof|union|unsigned|void|volatile|while)\\b/, function: /\\b[a-z_]\\w*(?=\\s*\\()/i, number: /(?:\\b0x(?:[\\da-f]+(?:\\.[\\da-f]*)?|\\.[\\da-f]+)(?:p[+-]?\\d+)?|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e[+-]?\\d+)?)[ful]{0,4}/i, operator: />>=?|<<=?|->|([-+&|:])\\1|[?:~]|[-+*/%&|^!=<>]=?/ }), Prism.languages.insertBefore(\"c\", \"string\", { char: { pattern: /'(?:\\\\(?:\\r\\n|[\\s\\S])|[^'\\\\\\r\\n]){0,32}'/, greedy: true } }), Prism.languages.insertBefore(\"c\", \"string\", { macro: { pattern: /(^[\\t ]*)#\\s*[a-z](?:[^\\r\\n\\\\/]|\\/(?!\\*)|\\/\\*(?:[^*]|\\*(?!\\/))*\\*\\/|\\\\(?:\\r\\n|[\\s\\S]))*/im, lookbehind: true, greedy: true, alias: \"property\", inside: { string: [{ pattern: /^(#\\s*include\\s*)<[^>]+>/, lookbehind: true }, Prism.languages.c.string], char: Prism.languages.c.char, comment: Prism.languages.c.comment, \"macro-name\": [{ pattern: /(^#\\s*define\\s+)\\w+\\b(?!\\()/i, lookbehind: true }, { pattern: /(^#\\s*define\\s+)\\w+\\b(?=\\()/i, lookbehind: true, alias: \"function\" }], directive: { pattern: /^(#\\s*)[a-z]+/, lookbehind: true, alias: \"keyword\" }, \"directive-hash\": /^#/, punctuation: /##|\\\\(?=[\\r\\n])/, expression: { pattern: /\\S[\\s\\S]*/, inside: Prism.languages.c } } } }), Prism.languages.insertBefore(\"c\", \"function\", { constant: /\\b(?:EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|__DATE__|__FILE__|__LINE__|__TIMESTAMP__|__TIME__|__func__|stderr|stdin|stdout)\\b/ }), delete Prism.languages.c.boolean, Prism.languages.objectivec = Prism.languages.extend(\"c\", { string: { pattern: /@?\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\"\\\\\\r\\n])*\"/, greedy: true }, keyword: /\\b(?:asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|in|inline|int|long|register|return|self|short|signed|sizeof|static|struct|super|switch|typedef|typeof|union|unsigned|void|volatile|while)\\b|(?:@interface|@end|@implementation|@protocol|@class|@public|@protected|@private|@property|@try|@catch|@finally|@throw|@synthesize|@dynamic|@selector)\\b/, operator: /-[->]?|\\+\\+?|!=?|<<?=?|>>?=?|==?|&&?|\\|\\|?|[~^%?*\\/@]/ }), delete Prism.languages.objectivec[\"class-name\"], Prism.languages.objc = Prism.languages.objectivec, Prism.languages.reason = Prism.languages.extend(\"clike\", { string: { pattern: /\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\\\\\\r\\n\"])*\"/, greedy: true }, \"class-name\": /\\b[A-Z]\\w*/, keyword: /\\b(?:and|as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|method|module|mutable|new|nonrec|object|of|open|or|private|rec|sig|struct|switch|then|to|try|type|val|virtual|when|while|with)\\b/, operator: /\\.{3}|:[:=]|\\|>|->|=(?:==?|>)?|<=?|>=?|[|^?'#!~`]|[+\\-*\\/]\\.?|\\b(?:asr|land|lor|lsl|lsr|lxor|mod)\\b/ }), Prism.languages.insertBefore(\"reason\", \"class-name\", { char: { pattern: /'(?:\\\\x[\\da-f]{2}|\\\\o[0-3][0-7][0-7]|\\\\\\d{3}|\\\\.|[^'\\\\\\r\\n])'/, greedy: true }, constructor: /\\b[A-Z]\\w*\\b(?!\\s*\\.)/, label: { pattern: /\\b[a-z]\\w*(?=::)/, alias: \"symbol\" } }), delete Prism.languages.reason.function, function(e) {\n for (var n = /\\/\\*(?:[^*/]|\\*(?!\\/)|\\/(?!\\*)|<self>)*\\*\\//.source, t = 0; t < 2; t++)\n n = n.replace(/<self>/g, function() {\n return n;\n });\n n = n.replace(/<self>/g, function() {\n return /[^\\s\\S]/.source;\n }), e.languages.rust = { comment: [{ pattern: RegExp(/(^|[^\\\\])/.source + n), lookbehind: true, greedy: true }, { pattern: /(^|[^\\\\:])\\/\\/.*/, lookbehind: true, greedy: true }], string: { pattern: /b?\"(?:\\\\[\\s\\S]|[^\\\\\"])*\"|b?r(#*)\"(?:[^\"]|\"(?!\\1))*\"\\1/, greedy: true }, char: { pattern: /b?'(?:\\\\(?:x[0-7][\\da-fA-F]|u\\{(?:[\\da-fA-F]_*){1,6}\\}|.)|[^\\\\\\r\\n\\t'])'/, greedy: true }, attribute: { pattern: /#!?\\[(?:[^\\[\\]\"]|\"(?:\\\\[\\s\\S]|[^\\\\\"])*\")*\\]/, greedy: true, alias: \"attr-name\", inside: { string: null } }, \"closure-params\": { pattern: /([=(,:]\\s*|\\bmove\\s*)\\|[^|]*\\||\\|[^|]*\\|(?=\\s*(?:\\{|->))/, lookbehind: true, greedy: true, inside: { \"closure-punctuation\": { pattern: /^\\||\\|$/, alias: \"punctuation\" }, rest: null } }, \"lifetime-annotation\": { pattern: /'\\w+/, alias: \"symbol\" }, \"fragment-specifier\": { pattern: /(\\$\\w+:)[a-z]+/, lookbehind: true, alias: \"punctuation\" }, variable: /\\$\\w+/, \"function-definition\": { pattern: /(\\bfn\\s+)\\w+/, lookbehind: true, alias: \"function\" }, \"type-definition\": { pattern: /(\\b(?:enum|struct|trait|type|union)\\s+)\\w+/, lookbehind: true, alias: \"class-name\" }, \"module-declaration\": [{ pattern: /(\\b(?:crate|mod)\\s+)[a-z][a-z_\\d]*/, lookbehind: true, alias: \"namespace\" }, { pattern: /(\\b(?:crate|self|super)\\s*)::\\s*[a-z][a-z_\\d]*\\b(?:\\s*::(?:\\s*[a-z][a-z_\\d]*\\s*::)*)?/, lookbehind: true, alias: \"namespace\", inside: { punctuation: /::/ } }], keyword: [/\\b(?:Self|abstract|as|async|await|become|box|break|const|continue|crate|do|dyn|else|enum|extern|final|fn|for|if|impl|in|let|loop|macro|match|mod|move|mut|override|priv|pub|ref|return|self|static|struct|super|trait|try|type|typeof|union|unsafe|unsized|use|virtual|where|while|yield)\\b/, /\\b(?:bool|char|f(?:32|64)|[ui](?:8|16|32|64|128|size)|str)\\b/], function: /\\b[a-z_]\\w*(?=\\s*(?:::\\s*<|\\())/, macro: { pattern: /\\b\\w+!/, alias: \"property\" }, constant: /\\b[A-Z_][A-Z_\\d]+\\b/, \"class-name\": /\\b[A-Z]\\w*\\b/, namespace: { pattern: /(?:\\b[a-z][a-z_\\d]*\\s*::\\s*)*\\b[a-z][a-z_\\d]*\\s*::(?!\\s*<)/, inside: { punctuation: /::/ } }, number: /\\b(?:0x[\\dA-Fa-f](?:_?[\\dA-Fa-f])*|0o[0-7](?:_?[0-7])*|0b[01](?:_?[01])*|(?:(?:\\d(?:_?\\d)*)?\\.)?\\d(?:_?\\d)*(?:[Ee][+-]?\\d+)?)(?:_?(?:f32|f64|[iu](?:8|16|32|64|size)?))?\\b/, boolean: /\\b(?:false|true)\\b/, punctuation: /->|\\.\\.=|\\.{1,3}|::|[{}[\\];(),:]/, operator: /[-+*\\/%!^]=?|=[=>]?|&[&=]?|\\|[|=]?|<<?=?|>>?=?|[@?]/ }, e.languages.rust[\"closure-params\"].inside.rest = e.languages.rust, e.languages.rust.attribute.inside.string = e.languages.rust.string;\n}(Prism), Prism.languages.go = Prism.languages.extend(\"clike\", { string: { pattern: /(^|[^\\\\])\"(?:\\\\.|[^\"\\\\\\r\\n])*\"|`[^`]*`/, lookbehind: true, greedy: true }, keyword: /\\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\\b/, boolean: /\\b(?:_|false|iota|nil|true)\\b/, number: [/\\b0(?:b[01_]+|o[0-7_]+)i?\\b/i, /\\b0x(?:[a-f\\d_]+(?:\\.[a-f\\d_]*)?|\\.[a-f\\d_]+)(?:p[+-]?\\d+(?:_\\d+)*)?i?(?!\\w)/i, /(?:\\b\\d[\\d_]*(?:\\.[\\d_]*)?|\\B\\.\\d[\\d_]*)(?:e[+-]?[\\d_]+)?i?(?!\\w)/i], operator: /[*\\/%^!=]=?|\\+[=+]?|-[=-]?|\\|[=|]?|&(?:=|&|\\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\\.\\.\\./, builtin: /\\b(?:append|bool|byte|cap|close|complex|complex(?:64|128)|copy|delete|error|float(?:32|64)|u?int(?:8|16|32|64)?|imag|len|make|new|panic|print(?:ln)?|real|recover|rune|string|uintptr)\\b/ }), Prism.languages.insertBefore(\"go\", \"string\", { char: { pattern: /'(?:\\\\.|[^'\\\\\\r\\n]){0,10}'/, greedy: true } }), delete Prism.languages.go[\"class-name\"], function(e) {\n var n = /\\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|char8_t|class|co_await|co_return|co_yield|compl|concept|const|const_cast|consteval|constexpr|constinit|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|final|float|for|friend|goto|if|import|inline|int|int16_t|int32_t|int64_t|int8_t|long|module|mutable|namespace|new|noexcept|nullptr|operator|override|private|protected|public|register|reinterpret_cast|requires|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|uint16_t|uint32_t|uint64_t|uint8_t|union|unsigned|using|virtual|void|volatile|wchar_t|while)\\b/, t = /\\b(?!<keyword>)\\w+(?:\\s*\\.\\s*\\w+)*\\b/.source.replace(/<keyword>/g, function() {\n return n.source;\n });\n e.languages.cpp = e.languages.extend(\"c\", { \"class-name\": [{ pattern: RegExp(/(\\b(?:class|concept|enum|struct|typename)\\s+)(?!<keyword>)\\w+/.source.replace(/<keyword>/g, function() {\n return n.source;\n })), lookbehind: true }, /\\b[A-Z]\\w*(?=\\s*::\\s*\\w+\\s*\\()/, /\\b[A-Z_]\\w*(?=\\s*::\\s*~\\w+\\s*\\()/i, /\\b\\w+(?=\\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>\\s*::\\s*\\w+\\s*\\()/], keyword: n, number: { pattern: /(?:\\b0b[01']+|\\b0x(?:[\\da-f']+(?:\\.[\\da-f']*)?|\\.[\\da-f']+)(?:p[+-]?[\\d']+)?|(?:\\b[\\d']+(?:\\.[\\d']*)?|\\B\\.[\\d']+)(?:e[+-]?[\\d']+)?)[ful]{0,4}/i, greedy: true }, operator: />>=?|<<=?|->|--|\\+\\+|&&|\\|\\||[?:~]|<=>|[-+*/%&|^!=<>]=?|\\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\\b/, boolean: /\\b(?:false|true)\\b/ }), e.languages.insertBefore(\"cpp\", \"string\", { module: { pattern: RegExp(/(\\b(?:import|module)\\s+)/.source + \"(?:\" + /\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\"\\\\\\r\\n])*\"|<[^<>\\r\\n]*>/.source + \"|\" + /<mod-name>(?:\\s*:\\s*<mod-name>)?|:\\s*<mod-name>/.source.replace(/<mod-name>/g, function() {\n return t;\n }) + \")\"), lookbehind: true, greedy: true, inside: { string: /^[<\"][\\s\\S]+/, operator: /:/, punctuation: /\\./ } }, \"raw-string\": { pattern: /R\"([^()\\\\ ]{0,16})\\([\\s\\S]*?\\)\\1\"/, alias: \"string\", greedy: true } }), e.languages.insertBefore(\"cpp\", \"keyword\", { \"generic-function\": { pattern: /\\b(?!operator\\b)[a-z_]\\w*\\s*<(?:[^<>]|<[^<>]*>)*>(?=\\s*\\()/i, inside: { function: /^\\w+/, generic: { pattern: /<[\\s\\S]+/, alias: \"class-name\", inside: e.languages.cpp } } } }), e.languages.insertBefore(\"cpp\", \"operator\", { \"double-colon\": { pattern: /::/, alias: \"punctuation\" } }), e.languages.insertBefore(\"cpp\", \"class-name\", { \"base-clause\": { pattern: /(\\b(?:class|struct)\\s+\\w+\\s*:\\s*)[^;{}\"'\\s]+(?:\\s+[^;{}\"'\\s]+)*(?=\\s*[;{])/, lookbehind: true, greedy: true, inside: e.languages.extend(\"cpp\", {}) } }), e.languages.insertBefore(\"inside\", \"double-colon\", { \"class-name\": /\\b[a-z_]\\w*\\b(?!\\s*::)/i }, e.languages.cpp[\"base-clause\"]);\n}(Prism), Prism.languages.python = { comment: { pattern: /(^|[^\\\\])#.*/, lookbehind: true, greedy: true }, \"string-interpolation\": { pattern: /(?:f|fr|rf)(?:(\"\"\"|''')[\\s\\S]*?\\1|(\"|')(?:\\\\.|(?!\\2)[^\\\\\\r\\n])*\\2)/i, greedy: true, inside: { interpolation: { pattern: /((?:^|[^{])(?:\\{\\{)*)\\{(?!\\{)(?:[^{}]|\\{(?!\\{)(?:[^{}]|\\{(?!\\{)(?:[^{}])+\\})+\\})+\\}/, lookbehind: true, inside: { \"format-spec\": { pattern: /(:)[^:(){}]+(?=\\}$)/, lookbehind: true }, \"conversion-option\": { pattern: /![sra](?=[:}]$)/, alias: \"punctuation\" }, rest: null } }, string: /[\\s\\S]+/ } }, \"triple-quoted-string\": { pattern: /(?:[rub]|br|rb)?(\"\"\"|''')[\\s\\S]*?\\1/i, greedy: true, alias: \"string\" }, string: { pattern: /(?:[rub]|br|rb)?(\"|')(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/i, greedy: true }, function: { pattern: /((?:^|\\s)def[ \\t]+)[a-zA-Z_]\\w*(?=\\s*\\()/g, lookbehind: true }, \"class-name\": { pattern: /(\\bclass\\s+)\\w+/i, lookbehind: true }, decorator: { pattern: /(^[\\t ]*)@\\w+(?:\\.\\w+)*/m, lookbehind: true, alias: [\"annotation\", \"punctuation\"], inside: { punctuation: /\\./ } }, keyword: /\\b(?:_(?=\\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\\b/, builtin: /\\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\\b/, boolean: /\\b(?:False|None|True)\\b/, number: /\\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\\b|(?:\\b\\d+(?:_\\d+)*(?:\\.(?:\\d+(?:_\\d+)*)?)?|\\B\\.\\d+(?:_\\d+)*)(?:e[+-]?\\d+(?:_\\d+)*)?j?(?!\\w)/i, operator: /[-+%=]=?|!=|:=|\\*\\*?=?|\\/\\/?=?|<[<=>]?|>[=>]?|[&|^~]/, punctuation: /[{}[\\];(),.:]/ }, Prism.languages.python[\"string-interpolation\"].inside.interpolation.inside.rest = Prism.languages.python, Prism.languages.py = Prism.languages.python, Prism.languages.json = { property: { pattern: /(^|[^\\\\])\"(?:\\\\.|[^\\\\\"\\r\\n])*\"(?=\\s*:)/, lookbehind: true, greedy: true }, string: { pattern: /(^|[^\\\\])\"(?:\\\\.|[^\\\\\"\\r\\n])*\"(?!\\s*:)/, lookbehind: true, greedy: true }, comment: { pattern: /\\/\\/.*|\\/\\*[\\s\\S]*?(?:\\*\\/|$)/, greedy: true }, number: /-?\\b\\d+(?:\\.\\d+)?(?:e[+-]?\\d+)?\\b/i, punctuation: /[{}[\\],]/, operator: /:/, boolean: /\\b(?:false|true)\\b/, null: { pattern: /\\bnull\\b/, alias: \"keyword\" } }, Prism.languages.webmanifest = Prism.languages.json;\n\n// src/themes/index.ts\nvar themes_exports = {};\n__export(themes_exports, {\n dracula: () => dracula_default,\n duotoneDark: () => duotoneDark_default,\n duotoneLight: () => duotoneLight_default,\n github: () => github_default,\n gruvboxMaterialDark: () => gruvboxMaterialDark_default,\n gruvboxMaterialLight: () => gruvboxMaterialLight_default,\n jettwaveDark: () => jettwaveDark_default,\n jettwaveLight: () => jettwaveLight_default,\n nightOwl: () => nightOwl_default,\n nightOwlLight: () => nightOwlLight_default,\n oceanicNext: () => oceanicNext_default,\n okaidia: () => okaidia_default,\n oneDark: () => oneDark_default,\n oneLight: () => oneLight_default,\n palenight: () => palenight_default,\n shadesOfPurple: () => shadesOfPurple_default,\n synthwave84: () => synthwave84_default,\n ultramin: () => ultramin_default,\n vsDark: () => vsDark_default,\n vsLight: () => vsLight_default\n});\n\n// src/themes/dracula.ts\nvar theme = {\n plain: {\n color: \"#F8F8F2\",\n backgroundColor: \"#282A36\"\n },\n styles: [\n {\n types: [\"prolog\", \"constant\", \"builtin\"],\n style: {\n color: \"rgb(189, 147, 249)\"\n }\n },\n {\n types: [\"inserted\", \"function\"],\n style: {\n color: \"rgb(80, 250, 123)\"\n }\n },\n {\n types: [\"deleted\"],\n style: {\n color: \"rgb(255, 85, 85)\"\n }\n },\n {\n types: [\"changed\"],\n style: {\n color: \"rgb(255, 184, 108)\"\n }\n },\n {\n types: [\"punctuation\", \"symbol\"],\n style: {\n color: \"rgb(248, 248, 242)\"\n }\n },\n {\n types: [\"string\", \"char\", \"tag\", \"selector\"],\n style: {\n color: \"rgb(255, 121, 198)\"\n }\n },\n {\n types: [\"keyword\", \"variable\"],\n style: {\n color: \"rgb(189, 147, 249)\",\n fontStyle: \"italic\"\n }\n },\n {\n types: [\"comment\"],\n style: {\n color: \"rgb(98, 114, 164)\"\n }\n },\n {\n types: [\"attr-name\"],\n style: {\n color: \"rgb(241, 250, 140)\"\n }\n }\n ]\n};\nvar dracula_default = theme;\n\n// src/themes/duotoneDark.ts\nvar theme2 = {\n plain: {\n backgroundColor: \"#2a2734\",\n color: \"#9a86fd\"\n },\n styles: [\n {\n types: [\"comment\", \"prolog\", \"doctype\", \"cdata\", \"punctuation\"],\n style: {\n color: \"#6c6783\"\n }\n },\n {\n types: [\"namespace\"],\n style: {\n opacity: 0.7\n }\n },\n {\n types: [\"tag\", \"operator\", \"number\"],\n style: {\n color: \"#e09142\"\n }\n },\n {\n types: [\"property\", \"function\"],\n style: {\n color: \"#9a86fd\"\n }\n },\n {\n types: [\"tag-id\", \"selector\", \"atrule-id\"],\n style: {\n color: \"#eeebff\"\n }\n },\n {\n types: [\"attr-name\"],\n style: {\n color: \"#c4b9fe\"\n }\n },\n {\n types: [\n \"boolean\",\n \"string\",\n \"entity\",\n \"url\",\n \"attr-value\",\n \"keyword\",\n \"control\",\n \"directive\",\n \"unit\",\n \"statement\",\n \"regex\",\n \"atrule\",\n \"placeholder\",\n \"variable\"\n ],\n style: {\n color: \"#ffcc99\"\n }\n },\n {\n types: [\"deleted\"],\n style: {\n textDecorationLine: \"line-through\"\n }\n },\n {\n types: [\"inserted\"],\n style: {\n textDecorationLine: \"underline\"\n }\n },\n {\n types: [\"italic\"],\n style: {\n fontStyle: \"italic\"\n }\n },\n {\n types: [\"important\", \"bold\"],\n style: {\n fontWeight: \"bold\"\n }\n },\n {\n types: [\"important\"],\n style: {\n color: \"#c4b9fe\"\n }\n }\n ]\n};\nvar duotoneDark_default = theme2;\n\n// src/themes/duotoneLight.ts\nvar theme3 = {\n plain: {\n backgroundColor: \"#faf8f5\",\n color: \"#728fcb\"\n },\n styles: [\n {\n types: [\"comment\", \"prolog\", \"doctype\", \"cdata\", \"punctuation\"],\n style: {\n color: \"#b6ad9a\"\n }\n },\n {\n types: [\"namespace\"],\n style: {\n opacity: 0.7\n }\n },\n {\n types: [\"tag\", \"operator\", \"number\"],\n style: {\n color: \"#063289\"\n }\n },\n {\n types: [\"property\", \"function\"],\n style: {\n color: \"#b29762\"\n }\n },\n {\n types: [\"tag-id\", \"selector\", \"atrule-id\"],\n style: {\n color: \"#2d2006\"\n }\n },\n {\n types: [\"attr-name\"],\n style: {\n color: \"#896724\"\n }\n },\n {\n types: [\n \"boolean\",\n \"string\",\n \"entity\",\n \"url\",\n \"attr-value\",\n \"keyword\",\n \"control\",\n \"directive\",\n \"unit\",\n \"statement\",\n \"regex\",\n \"atrule\"\n ],\n style: {\n color: \"#728fcb\"\n }\n },\n {\n types: [\"placeholder\", \"variable\"],\n style: {\n color: \"#93abdc\"\n }\n },\n {\n types: [\"deleted\"],\n style: {\n textDecorationLine: \"line-through\"\n }\n },\n {\n types: [\"inserted\"],\n style: {\n textDecorationLine: \"underline\"\n }\n },\n {\n types: [\"italic\"],\n style: {\n fontStyle: \"italic\"\n }\n },\n {\n types: [\"important\", \"bold\"],\n style: {\n fontWeight: \"bold\"\n }\n },\n {\n types: [\"important\"],\n style: {\n color: \"#896724\"\n }\n }\n ]\n};\nvar duotoneLight_default = theme3;\n\n// src/themes/github.ts\nvar theme4 = {\n plain: {\n color: \"#393A34\",\n backgroundColor: \"#f6f8fa\"\n },\n styles: [\n {\n types: [\"comment\", \"prolog\", \"doctype\", \"cdata\"],\n style: {\n color: \"#999988\",\n fontStyle: \"italic\"\n }\n },\n {\n types: [\"namespace\"],\n style: {\n opacity: 0.7\n }\n },\n {\n types: [\"string\", \"attr-value\"],\n style: {\n color: \"#e3116c\"\n }\n },\n {\n types: [\"punctuation\", \"operator\"],\n style: {\n color: \"#393A34\"\n }\n },\n {\n types: [\n \"entity\",\n \"url\",\n \"symbol\",\n \"number\",\n \"boolean\",\n \"variable\",\n \"constant\",\n \"property\",\n \"regex\",\n \"inserted\"\n ],\n style: {\n color: \"#36acaa\"\n }\n },\n {\n types: [\"atrule\", \"keyword\", \"attr-name\", \"selector\"],\n style: {\n color: \"#00a4db\"\n }\n },\n {\n types: [\"function\", \"deleted\", \"tag\"],\n style: {\n color: \"#d73a49\"\n }\n },\n {\n types: [\"function-variable\"],\n style: {\n color: \"#6f42c1\"\n }\n },\n {\n types: [\"tag\", \"selector\", \"keyword\"],\n style: {\n color: \"#00009f\"\n }\n }\n ]\n};\nvar github_default = theme4;\n\n// src/themes/nightOwl.ts\nvar theme5 = {\n plain: {\n color: \"#d6deeb\",\n backgroundColor: \"#011627\"\n },\n styles: [\n {\n types: [\"changed\"],\n style: {\n color: \"rgb(162, 191, 252)\",\n fontStyle: \"italic\"\n }\n },\n {\n types: [\"deleted\"],\n style: {\n color: \"rgba(239, 83, 80, 0.56)\",\n fontStyle: \"italic\"\n }\n },\n {\n types: [\"inserted\", \"attr-name\"],\n style: {\n color: \"rgb(173, 219, 103)\",\n fontStyle: \"italic\"\n }\n },\n {\n types: [\"comment\"],\n style: {\n color: \"rgb(99, 119, 119)\",\n fontStyle: \"italic\"\n }\n },\n {\n types: [\"string\", \"url\"],\n style: {\n color: \"rgb(173, 219, 103)\"\n }\n },\n {\n types: [\"variable\"],\n style: {\n color: \"rgb(214, 222, 235)\"\n }\n },\n {\n types: [\"number\"],\n style: {\n color: \"rgb(247, 140, 108)\"\n }\n },\n {\n types: [\"builtin\", \"char\", \"constant\", \"function\"],\n style: {\n color: \"rgb(130, 170, 255)\"\n }\n },\n {\n // This was manually added after the auto-generation\n // so that punctuations are not italicised\n types: [\"punctuation\"],\n style: {\n color: \"rgb(199, 146, 234)\"\n }\n },\n {\n types: [\"selector\", \"doctype\"],\n style: {\n color: \"rgb(199, 146, 234)\",\n fontStyle: \"italic\"\n }\n },\n {\n types: [\"class-name\"],\n style: {\n color: \"rgb(255, 203, 139)\"\n }\n },\n {\n types: [\"tag\", \"operator\", \"keyword\"],\n style: {\n color: \"rgb(127, 219, 202)\"\n }\n },\n {\n types: [\"boolean\"],\n style: {\n color: \"rgb(255, 88, 116)\"\n }\n },\n {\n types: [\"property\"],\n style: {\n color: \"rgb(128, 203, 196)\"\n }\n },\n {\n types: [\"namespace\"],\n style: {\n color: \"rgb(178, 204, 214)\"\n }\n }\n ]\n};\nvar nightOwl_default = theme5;\n\n// src/themes/nightOwlLight.ts\nvar theme6 = {\n plain: {\n color: \"#403f53\",\n backgroundColor: \"#FBFBFB\"\n },\n styles: [\n {\n types: [\"changed\"],\n style: {\n color: \"rgb(162, 191, 252)\",\n fontStyle: \"italic\"\n }\n },\n {\n types: [\"deleted\"],\n style: {\n color: \"rgba(239, 83, 80, 0.56)\",\n fontStyle: \"italic\"\n }\n },\n {\n types: [\"inserted\", \"attr-name\"],\n style: {\n color: \"rgb(72, 118, 214)\",\n fontStyle: \"italic\"\n }\n },\n {\n types: [\"comment\"],\n style: {\n color: \"rgb(152, 159, 177)\",\n fontStyle: \"italic\"\n }\n },\n {\n types: [\"string\", \"builtin\", \"char\", \"constant\", \"url\"],\n style: {\n color: \"rgb(72, 118, 214)\"\n }\n },\n {\n types: [\"variable\"],\n style: {\n color: \"rgb(201, 103, 101)\"\n }\n },\n {\n types: [\"number\"],\n style: {\n color: \"rgb(170, 9, 130)\"\n }\n },\n {\n // This was manually added after the auto-generation\n // so that punctuations are not italicised\n types: [\"punctuation\"],\n style: {\n color: \"rgb(153, 76, 195)\"\n }\n },\n {\n types: [\"function\", \"selector\", \"doctype\"],\n style: {\n color: \"rgb(153, 76, 195)\",\n fontStyle: \"italic\"\n }\n },\n {\n types: [\"class-name\"],\n style: {\n color: \"rgb(17, 17, 17)\"\n }\n },\n {\n types: [\"tag\"],\n style: {\n color: \"rgb(153, 76, 195)\"\n }\n },\n {\n types: [\"operator\", \"property\", \"keyword\", \"namespace\"],\n style: {\n color: \"rgb(12, 150, 155)\"\n }\n },\n {\n types: [\"boolean\"],\n style: {\n color: \"rgb(188, 84, 84)\"\n }\n }\n ]\n};\nvar nightOwlLight_default = theme6;\n\n// src/themes/oceanicNext.ts\nvar colors = {\n char: \"#D8DEE9\",\n comment: \"#999999\",\n keyword: \"#c5a5c5\",\n primitive: \"#5a9bcf\",\n string: \"#8dc891\",\n variable: \"#d7deea\",\n boolean: \"#ff8b50\",\n punctuation: \"#5FB3B3\",\n tag: \"#fc929e\",\n function: \"#79b6f2\",\n className: \"#FAC863\",\n method: \"#6699CC\",\n operator: \"#fc929e\"\n};\nvar theme7 = {\n plain: {\n backgroundColor: \"#282c34\",\n color: \"#ffffff\"\n },\n styles: [\n {\n types: [\"attr-name\"],\n style: {\n color: colors.keyword\n }\n },\n {\n types: [\"attr-value\"],\n style: {\n color: colors.string\n }\n },\n {\n types: [\n \"comment\",\n \"block-comment\",\n \"prolog\",\n \"doctype\",\n \"cdata\",\n \"shebang\"\n ],\n style: {\n color: colors.comment\n }\n },\n {\n types: [\n \"property\",\n \"number\",\n \"function-name\",\n \"constant\",\n \"symbol\",\n \"deleted\"\n ],\n style: {\n color: colors.primitive\n }\n },\n {\n types: [\"boolean\"],\n style: {\n color: colors.boolean\n }\n },\n {\n types: [\"tag\"],\n style: {\n color: colors.tag\n }\n },\n {\n types: [\"string\"],\n style: {\n color: colors.string\n }\n },\n {\n types: [\"punctuation\"],\n style: {\n color: colors.string\n }\n },\n {\n types: [\"selector\", \"char\", \"builtin\", \"inserted\"],\n style: {\n color: colors.char\n }\n },\n {\n types: [\"function\"],\n style: {\n color: colors.function\n }\n },\n {\n types: [\"operator\", \"entity\", \"url\", \"variable\"],\n style: {\n color: colors.variable\n }\n },\n {\n types: [\"keyword\"],\n style: {\n color: colors.keyword\n }\n },\n {\n types: [\"atrule\", \"class-name\"],\n style: {\n color: colors.className\n }\n },\n {\n types: [\"important\"],\n style: {\n fontWeight: \"400\"\n }\n },\n {\n types: [\"bold\"],\n style: {\n fontWeight: \"bold\"\n }\n },\n {\n types: [\"italic\"],\n style: {\n fontStyle: \"italic\"\n }\n },\n {\n types: [\"namespace\"],\n style: {\n opacity: 0.7\n }\n }\n ]\n};\nvar oceanicNext_default = theme7;\n\n// src/themes/okaidia.ts\nvar theme8 = {\n plain: {\n color: \"#f8f8f2\",\n backgroundColor: \"#272822\"\n },\n styles: [\n {\n types: [\"changed\"],\n style: {\n color: \"rgb(162, 191, 252)\",\n fontStyle: \"italic\"\n }\n },\n {\n types: [\"deleted\"],\n style: {\n color: \"#f92672\",\n fontStyle: \"italic\"\n }\n },\n {\n types: [\"inserted\"],\n style: {\n color: \"rgb(173, 219, 103)\",\n fontStyle: \"italic\"\n }\n },\n {\n types: [\"comment\"],\n style: {\n color: \"#8292a2\",\n fontStyle: \"italic\"\n }\n },\n {\n types: [\"string\", \"url\"],\n style: {\n color: \"#a6e22e\"\n }\n },\n {\n types: [\"variable\"],\n style: {\n color: \"#f8f8f2\"\n }\n },\n {\n types: [\"number\"],\n style: {\n color: \"#ae81ff\"\n }\n },\n {\n types: [\"builtin\", \"char\", \"constant\", \"function\", \"class-name\"],\n style: {\n color: \"#e6db74\"\n }\n },\n {\n types: [\"punctuation\"],\n style: {\n color: \"#f8f8f2\"\n }\n },\n {\n types: [\"selector\", \"doctype\"],\n style: {\n color: \"#a6e22e\",\n fontStyle: \"italic\"\n }\n },\n {\n types: [\"tag\", \"operator\", \"keyword\"],\n style: {\n color: \"#66d9ef\"\n }\n },\n {\n types: [\"boolean\"],\n style: {\n color: \"#ae81ff\"\n }\n },\n {\n types: [\"namespace\"],\n style: {\n color: \"rgb(178, 204, 214)\",\n opacity: 0.7\n }\n },\n {\n types: [\"tag\", \"property\"],\n style: {\n color: \"#f92672\"\n }\n },\n {\n types: [\"attr-name\"],\n style: {\n color: \"#a6e22e !important\"\n }\n },\n {\n types: [\"doctype\"],\n style: {\n color: \"#8292a2\"\n }\n },\n {\n types: [\"rule\"],\n style: {\n color: \"#e6db74\"\n }\n }\n ]\n};\nvar okaidia_default = theme8;\n\n// src/themes/palenight.ts\nvar theme9 = {\n plain: {\n color: \"#bfc7d5\",\n backgroundColor: \"#292d3e\"\n },\n styles: [\n {\n types: [\"comment\"],\n style: {\n color: \"rgb(105, 112, 152)\",\n fontStyle: \"italic\"\n }\n },\n {\n types: [\"string\", \"inserted\"],\n style: {\n color: \"rgb(195, 232, 141)\"\n }\n },\n {\n types: [\"number\"],\n style: {\n color: \"rgb(247, 140, 108)\"\n }\n },\n {\n types: [\"builtin\", \"char\", \"constant\", \"function\"],\n style: {\n color: \"rgb(130, 170, 255)\"\n }\n },\n {\n types: [\"punctuation\", \"selector\"],\n style: {\n color: \"rgb(199, 146, 234)\"\n }\n },\n {\n types: [\"variable\"],\n style: {\n color: \"rgb(191, 199, 213)\"\n }\n },\n {\n types: [\"class-name\", \"attr-name\"],\n style: {\n color: \"rgb(255, 203, 107)\"\n }\n },\n {\n types: [\"tag\", \"deleted\"],\n style: {\n color: \"rgb(255, 85, 114)\"\n }\n },\n {\n types: [\"operator\"],\n style: {\n color: \"rgb(137, 221, 255)\"\n }\n },\n {\n types: [\"boolean\"],\n style: {\n color: \"rgb(255, 88, 116)\"\n }\n },\n {\n types: [\"keyword\"],\n style: {\n fontStyle: \"italic\"\n }\n },\n {\n types: [\"doctype\"],\n style: {\n color: \"rgb(199, 146, 234)\",\n fontStyle: \"italic\"\n }\n },\n {\n types: [\"namespace\"],\n style: {\n color: \"rgb(178, 204, 214)\"\n }\n },\n {\n types: [\"url\"],\n style: {\n color: \"rgb(221, 221, 221)\"\n }\n }\n ]\n};\nvar palenight_default = theme9;\n\n// src/themes/shadesOfPurple.ts\nvar theme10 = {\n plain: {\n color: \"#9EFEFF\",\n backgroundColor: \"#2D2A55\"\n },\n styles: [\n {\n types: [\"changed\"],\n style: {\n color: \"rgb(255, 238, 128)\"\n }\n },\n {\n types: [\"deleted\"],\n style: {\n color: \"rgba(239, 83, 80, 0.56)\"\n }\n },\n {\n types: [\"inserted\"],\n style: {\n color: \"rgb(173, 219, 103)\"\n }\n },\n {\n types: [\"comment\"],\n style: {\n color: \"rgb(179, 98, 255)\",\n fontStyle: \"italic\"\n }\n },\n {\n types: [\"punctuation\"],\n style: {\n color: \"rgb(255, 255, 255)\"\n }\n },\n {\n types: [\"constant\"],\n style: {\n color: \"rgb(255, 98, 140)\"\n }\n },\n {\n types: [\"string\", \"url\"],\n style: {\n color: \"rgb(165, 255, 144)\"\n }\n },\n {\n types: [\"variable\"],\n style: {\n color: \"rgb(255, 238, 128)\"\n }\n },\n {\n types: [\"number\", \"boolean\"],\n style: {\n color: \"rgb(255, 98, 140)\"\n }\n },\n {\n types: [\"attr-name\"],\n style: {\n color: \"rgb(255, 180, 84)\"\n }\n },\n {\n types: [\n \"keyword\",\n \"operator\",\n \"property\",\n \"namespace\",\n \"tag\",\n \"selector\",\n \"doctype\"\n ],\n style: {\n color: \"rgb(255, 157, 0)\"\n }\n },\n {\n types: [\"builtin\", \"char\", \"constant\", \"function\", \"class-name\"],\n style: {\n color: \"rgb(250, 208, 0)\"\n }\n }\n ]\n};\nvar shadesOfPurple_default = theme10;\n\n// src/themes/synthwave84.ts\nvar theme11 = {\n plain: {\n backgroundColor: \"linear-gradient(to bottom, #2a2139 75%, #34294f)\",\n backgroundImage: \"#34294f\",\n color: \"#f92aad\",\n textShadow: \"0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3\"\n },\n styles: [\n {\n types: [\"comment\", \"block-comment\", \"prolog\", \"doctype\", \"cdata\"],\n style: {\n color: \"#495495\",\n fontStyle: \"italic\"\n }\n },\n {\n types: [\"punctuation\"],\n style: {\n color: \"#ccc\"\n }\n },\n {\n types: [\n \"tag\",\n \"attr-name\",\n \"namespace\",\n \"number\",\n \"unit\",\n \"hexcode\",\n \"deleted\"\n ],\n style: {\n color: \"#e2777a\"\n }\n },\n {\n types: [\"property\", \"selector\"],\n style: {\n color: \"#72f1b8\",\n textShadow: \"0 0 2px #100c0f, 0 0 10px #257c5575, 0 0 35px #21272475\"\n }\n },\n {\n types: [\"function-name\"],\n style: {\n color: \"#6196cc\"\n }\n },\n {\n types: [\"boolean\", \"selector-id\", \"function\"],\n style: {\n color: \"#fdfdfd\",\n textShadow: \"0 0 2px #001716, 0 0 3px #03edf975, 0 0 5px #03edf975, 0 0 8px #03edf975\"\n }\n },\n {\n types: [\"class-name\", \"maybe-class-name\", \"builtin\"],\n style: {\n color: \"#fff5f6\",\n textShadow: \"0 0 2px #000, 0 0 10px #fc1f2c75, 0 0 5px #fc1f2c75, 0 0 25px #fc1f2c75\"\n }\n },\n {\n types: [\"constant\", \"symbol\"],\n style: {\n color: \"#f92aad\",\n textShadow: \"0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3\"\n }\n },\n {\n types: [\"important\", \"atrule\", \"keyword\", \"selector-class\"],\n style: {\n color: \"#f4eee4\",\n textShadow: \"0 0 2px #393a33, 0 0 8px #f39f0575, 0 0 2px #f39f0575\"\n }\n },\n {\n types: [\"string\", \"char\", \"attr-value\", \"regex\", \"variable\"],\n style: {\n color: \"#f87c32\"\n }\n },\n {\n types: [\"parameter\"],\n style: {\n fontStyle: \"italic\"\n }\n },\n {\n types: [\"entity\", \"url\"],\n style: {\n color: \"#67cdcc\"\n }\n },\n {\n types: [\"operator\"],\n style: {\n color: \"ffffffee\"\n }\n },\n {\n types: [\"important\", \"bold\"],\n style: {\n fontWeight: \"bold\"\n }\n },\n {\n types: [\"italic\"],\n style: {\n fontStyle: \"italic\"\n }\n },\n {\n types: [\"entity\"],\n style: {\n cursor: \"help\"\n }\n },\n {\n types: [\"inserted\"],\n style: {\n color: \"green\"\n }\n }\n ]\n};\nvar synthwave84_default = theme11;\n\n// src/themes/ultramin.ts\nvar theme12 = {\n plain: {\n color: \"#282a2e\",\n backgroundColor: \"#ffffff\"\n },\n styles: [\n {\n types: [\"comment\"],\n style: {\n color: \"rgb(197, 200, 198)\"\n }\n },\n {\n types: [\"string\", \"number\", \"builtin\", \"variable\"],\n style: {\n color: \"rgb(150, 152, 150)\"\n }\n },\n {\n types: [\"class-name\", \"function\", \"tag\", \"attr-name\"],\n style: {\n color: \"rgb(40, 42, 46)\"\n }\n }\n ]\n};\nvar ultramin_default = theme12;\n\n// src/themes/vsDark.ts\nvar theme13 = {\n plain: {\n color: \"#9CDCFE\",\n backgroundColor: \"#1E1E1E\"\n },\n styles: [\n {\n types: [\"prolog\"],\n style: {\n color: \"rgb(0, 0, 128)\"\n }\n },\n {\n types: [\"comment\"],\n style: {\n color: \"rgb(106, 153, 85)\"\n }\n },\n {\n types: [\"builtin\", \"changed\", \"keyword\", \"interpolation-punctuation\"],\n style: {\n color: \"rgb(86, 156, 214)\"\n }\n },\n {\n types: [\"number\", \"inserted\"],\n style: {\n color: \"rgb(181, 206, 168)\"\n }\n },\n {\n types: [\"constant\"],\n style: {\n color: \"rgb(100, 102, 149)\"\n }\n },\n {\n types: [\"attr-name\", \"variable\"],\n style: {\n color: \"rgb(156, 220, 254)\"\n }\n },\n {\n types: [\"deleted\", \"string\", \"attr-value\", \"template-punctuation\"],\n style: {\n color: \"rgb(206, 145, 120)\"\n }\n },\n {\n types: [\"selector\"],\n style: {\n color: \"rgb(215, 186, 125)\"\n }\n },\n {\n // Fix tag color\n types: [\"tag\"],\n style: {\n color: \"rgb(78, 201, 176)\"\n }\n },\n {\n // Fix tag color for HTML\n types: [\"tag\"],\n languages: [\"markup\"],\n style: {\n color: \"rgb(86, 156, 214)\"\n }\n },\n {\n types: [\"punctuation\", \"operator\"],\n style: {\n color: \"rgb(212, 212, 212)\"\n }\n },\n {\n // Fix punctuation color for HTML\n types: [\"punctuation\"],\n languages: [\"markup\"],\n style: {\n color: \"#808080\"\n }\n },\n {\n types: [\"function\"],\n style: {\n color: \"rgb(220, 220, 170)\"\n }\n },\n {\n types: [\"class-name\"],\n style: {\n color: \"rgb(78, 201, 176)\"\n }\n },\n {\n types: [\"char\"],\n style: {\n color: \"rgb(209, 105, 105)\"\n }\n }\n ]\n};\nvar vsDark_default = theme13;\n\n// src/themes/vsLight.ts\nvar theme14 = {\n plain: {\n color: \"#000000\",\n backgroundColor: \"#ffffff\"\n },\n styles: [\n {\n types: [\"comment\"],\n style: {\n color: \"rgb(0, 128, 0)\"\n }\n },\n {\n types: [\"builtin\"],\n style: {\n color: \"rgb(0, 112, 193)\"\n }\n },\n {\n types: [\"number\", \"variable\", \"inserted\"],\n style: {\n color: \"rgb(9, 134, 88)\"\n }\n },\n {\n types: [\"operator\"],\n style: {\n color: \"rgb(0, 0, 0)\"\n }\n },\n {\n types: [\"constant\", \"char\"],\n style: {\n color: \"rgb(129, 31, 63)\"\n }\n },\n {\n types: [\"tag\"],\n style: {\n color: \"rgb(128, 0, 0)\"\n }\n },\n {\n types: [\"attr-name\"],\n style: {\n color: \"rgb(255, 0, 0)\"\n }\n },\n {\n types: [\"deleted\", \"string\"],\n style: {\n color: \"rgb(163, 21, 21)\"\n }\n },\n {\n types: [\"changed\", \"punctuation\"],\n style: {\n color: \"rgb(4, 81, 165)\"\n }\n },\n {\n types: [\"function\", \"keyword\"],\n style: {\n color: \"rgb(0, 0, 255)\"\n }\n },\n {\n types: [\"class-name\"],\n style: {\n color: \"rgb(38, 127, 153)\"\n }\n }\n ]\n};\nvar vsLight_default = theme14;\n\n// src/themes/jettwaveDark.ts\nvar theme15 = {\n plain: {\n color: \"#f8fafc\",\n backgroundColor: \"#011627\"\n },\n styles: [\n {\n types: [\"prolog\"],\n style: {\n color: \"#000080\"\n }\n },\n {\n types: [\"comment\"],\n style: {\n color: \"#6A9955\"\n }\n },\n {\n types: [\"builtin\", \"changed\", \"keyword\", \"interpolation-punctuation\"],\n style: {\n color: \"#569CD6\"\n }\n },\n {\n types: [\"number\", \"inserted\"],\n style: {\n color: \"#B5CEA8\"\n }\n },\n {\n types: [\"constant\"],\n style: {\n color: \"#f8fafc\"\n }\n },\n {\n types: [\"attr-name\", \"variable\"],\n style: {\n color: \"#9CDCFE\"\n }\n },\n {\n types: [\"deleted\", \"string\", \"attr-value\", \"template-punctuation\"],\n style: {\n color: \"#cbd5e1\"\n }\n },\n {\n types: [\"selector\"],\n style: {\n color: \"#D7BA7D\"\n }\n },\n {\n types: [\"tag\"],\n style: {\n color: \"#0ea5e9\"\n }\n },\n {\n types: [\"tag\"],\n languages: [\"markup\"],\n style: {\n color: \"#0ea5e9\"\n }\n },\n {\n types: [\"punctuation\", \"operator\"],\n style: {\n color: \"#D4D4D4\"\n }\n },\n {\n types: [\"punctuation\"],\n languages: [\"markup\"],\n style: {\n color: \"#808080\"\n }\n },\n {\n types: [\"function\"],\n style: {\n color: \"#7dd3fc\"\n }\n },\n {\n types: [\"class-name\"],\n style: {\n color: \"#0ea5e9\"\n }\n },\n {\n types: [\"char\"],\n style: {\n color: \"#D16969\"\n }\n }\n ]\n};\nvar jettwaveDark_default = theme15;\n\n// src/themes/jettwaveLight.ts\nvar theme16 = {\n plain: {\n color: \"#0f172a\",\n backgroundColor: \"#f1f5f9\"\n },\n styles: [\n {\n types: [\"prolog\"],\n style: {\n color: \"#000080\"\n }\n },\n {\n types: [\"comment\"],\n style: {\n color: \"#6A9955\"\n }\n },\n {\n types: [\"builtin\", \"changed\", \"keyword\", \"interpolation-punctuation\"],\n style: {\n color: \"#0c4a6e\"\n }\n },\n {\n types: [\"number\", \"inserted\"],\n style: {\n color: \"#B5CEA8\"\n }\n },\n {\n types: [\"constant\"],\n style: {\n color: \"#0f172a\"\n }\n },\n {\n types: [\"attr-name\", \"variable\"],\n style: {\n color: \"#0c4a6e\"\n }\n },\n {\n types: [\"deleted\", \"string\", \"attr-value\", \"template-punctuation\"],\n style: {\n color: \"#64748b\"\n }\n },\n {\n types: [\"selector\"],\n style: {\n color: \"#D7BA7D\"\n }\n },\n {\n types: [\"tag\"],\n style: {\n color: \"#0ea5e9\"\n }\n },\n {\n types: [\"tag\"],\n languages: [\"markup\"],\n style: {\n color: \"#0ea5e9\"\n }\n },\n {\n types: [\"punctuation\", \"operator\"],\n style: {\n color: \"#475569\"\n }\n },\n {\n types: [\"punctuation\"],\n languages: [\"markup\"],\n style: {\n color: \"#808080\"\n }\n },\n {\n types: [\"function\"],\n style: {\n color: \"#0e7490\"\n }\n },\n {\n types: [\"class-name\"],\n style: {\n color: \"#0ea5e9\"\n }\n },\n {\n types: [\"char\"],\n style: {\n color: \"#D16969\"\n }\n }\n ]\n};\nvar jettwaveLight_default = theme16;\n\n// src/themes/oneDark.ts\nvar theme17 = {\n plain: {\n backgroundColor: \"hsl(220, 13%, 18%)\",\n color: \"hsl(220, 14%, 71%)\",\n textShadow: \"0 1px rgba(0, 0, 0, 0.3)\"\n },\n styles: [\n {\n types: [\"comment\", \"prolog\", \"cdata\"],\n style: {\n color: \"hsl(220, 10%, 40%)\"\n }\n },\n {\n types: [\"doctype\", \"punctuation\", \"entity\"],\n style: {\n color: \"hsl(220, 14%, 71%)\"\n }\n },\n {\n types: [\n \"attr-name\",\n \"class-name\",\n \"maybe-class-name\",\n \"boolean\",\n \"constant\",\n \"number\",\n \"atrule\"\n ],\n style: { color: \"hsl(29, 54%, 61%)\" }\n },\n {\n types: [\"keyword\"],\n style: { color: \"hsl(286, 60%, 67%)\" }\n },\n {\n types: [\"property\", \"tag\", \"symbol\", \"deleted\", \"important\"],\n style: {\n color: \"hsl(355, 65%, 65%)\"\n }\n },\n {\n types: [\n \"selector\",\n \"string\",\n \"char\",\n \"builtin\",\n \"inserted\",\n \"regex\",\n \"attr-value\"\n ],\n style: {\n color: \"hsl(95, 38%, 62%)\"\n }\n },\n {\n types: [\"variable\", \"operator\", \"function\"],\n style: {\n color: \"hsl(207, 82%, 66%)\"\n }\n },\n {\n types: [\"url\"],\n style: {\n color: \"hsl(187, 47%, 55%)\"\n }\n },\n {\n types: [\"deleted\"],\n style: {\n textDecorationLine: \"line-through\"\n }\n },\n {\n types: [\"inserted\"],\n style: {\n textDecorationLine: \"underline\"\n }\n },\n {\n types: [\"italic\"],\n style: {\n fontStyle: \"italic\"\n }\n },\n {\n types: [\"important\", \"bold\"],\n style: {\n fontWeight: \"bold\"\n }\n },\n {\n types: [\"important\"],\n style: {\n color: \"hsl(220, 14%, 71%)\"\n }\n }\n ]\n};\nvar oneDark_default = theme17;\n\n// src/themes/oneLight.ts\nvar theme18 = {\n plain: {\n backgroundColor: \"hsl(230, 1%, 98%)\",\n color: \"hsl(230, 8%, 24%)\"\n },\n styles: [\n {\n types: [\"comment\", \"prolog\", \"cdata\"],\n style: {\n color: \"hsl(230, 4%, 64%)\"\n }\n },\n {\n types: [\"doctype\", \"punctuation\", \"entity\"],\n style: {\n color: \"hsl(230, 8%, 24%)\"\n }\n },\n {\n types: [\n \"attr-name\",\n \"class-name\",\n \"boolean\",\n \"constant\",\n \"number\",\n \"atrule\"\n ],\n style: {\n color: \"hsl(35, 99%, 36%)\"\n }\n },\n {\n types: [\"keyword\"],\n style: {\n color: \"hsl(301, 63%, 40%)\"\n }\n },\n {\n types: [\"property\", \"tag\", \"symbol\", \"deleted\", \"important\"],\n style: {\n color: \"hsl(5, 74%, 59%)\"\n }\n },\n {\n types: [\n \"selector\",\n \"string\",\n \"char\",\n \"builtin\",\n \"inserted\",\n \"regex\",\n \"attr-value\",\n \"punctuation\"\n ],\n style: {\n color: \"hsl(119, 34%, 47%)\"\n }\n },\n {\n types: [\"variable\", \"operator\", \"function\"],\n style: {\n color: \"hsl(221, 87%, 60%)\"\n }\n },\n {\n types: [\"url\"],\n style: {\n color: \"hsl(198, 99%, 37%)\"\n }\n },\n {\n types: [\"deleted\"],\n style: {\n textDecorationLine: \"line-through\"\n }\n },\n {\n types: [\"inserted\"],\n style: {\n textDecorationLine: \"underline\"\n }\n },\n {\n types: [\"italic\"],\n style: {\n fontStyle: \"italic\"\n }\n },\n {\n types: [\"important\", \"bold\"],\n style: {\n fontWeight: \"bold\"\n }\n },\n {\n types: [\"important\"],\n style: {\n color: \"hsl(230, 8%, 24%)\"\n }\n }\n ]\n};\nvar oneLight_default = theme18;\n\n// src/themes/gruvboxMaterialDark.ts\nvar theme19 = {\n plain: {\n color: \"#ebdbb2\",\n backgroundColor: \"#292828\"\n },\n styles: [\n {\n types: [\n \"imports\",\n \"class-name\",\n \"maybe-class-name\",\n \"constant\",\n \"doctype\",\n \"builtin\",\n \"function\"\n ],\n style: {\n color: \"#d8a657\"\n }\n },\n {\n types: [\"property-access\"],\n style: {\n color: \"#7daea3\"\n }\n },\n {\n types: [\"tag\"],\n style: {\n color: \"#e78a4e\"\n }\n },\n {\n types: [\"attr-name\", \"char\", \"url\", \"regex\"],\n style: {\n color: \"#a9b665\"\n }\n },\n {\n types: [\"attr-value\", \"string\"],\n style: {\n color: \"#89b482\"\n }\n },\n {\n types: [\"comment\", \"prolog\", \"cdata\", \"operator\", \"inserted\"],\n style: {\n color: \"#a89984\"\n }\n },\n {\n types: [\n \"delimiter\",\n \"boolean\",\n \"keyword\",\n \"selector\",\n \"important\",\n \"atrule\",\n \"property\",\n \"variable\",\n \"deleted\"\n ],\n style: {\n color: \"#ea6962\"\n }\n },\n {\n types: [\"entity\", \"number\", \"symbol\"],\n style: {\n color: \"#d3869b\"\n }\n }\n ]\n};\nvar gruvboxMaterialDark_default = theme19;\n\n// src/themes/gruvboxMaterialLight.ts\nvar theme20 = {\n plain: {\n color: \"#654735\",\n backgroundColor: \"#f9f5d7\"\n },\n styles: [\n {\n types: [\n \"delimiter\",\n \"boolean\",\n \"keyword\",\n \"selector\",\n \"important\",\n \"atrule\",\n \"property\",\n \"variable\",\n \"deleted\"\n ],\n style: {\n color: \"#af2528\"\n }\n },\n {\n types: [\n \"imports\",\n \"class-name\",\n \"maybe-class-name\",\n \"constant\",\n \"doctype\",\n \"builtin\"\n ],\n style: {\n color: \"#b4730e\"\n }\n },\n {\n types: [\"string\", \"attr-value\"],\n style: {\n color: \"#477a5b\"\n }\n },\n {\n types: [\"property-access\"],\n style: {\n color: \"#266b79\"\n }\n },\n {\n types: [\"function\", \"attr-name\", \"char\", \"url\"],\n style: {\n color: \"#72761e\"\n }\n },\n {\n types: [\"tag\"],\n style: {\n color: \"#b94c07\"\n }\n },\n {\n types: [\"comment\", \"prolog\", \"cdata\", \"operator\", \"inserted\"],\n style: {\n color: \"#a89984\"\n }\n },\n {\n types: [\"entity\", \"number\", \"symbol\"],\n style: {\n color: \"#924f79\"\n }\n }\n ]\n};\nvar gruvboxMaterialLight_default = theme20;\n\n// src/index.ts\nimport { createElement } from \"react\";\n\n// src/components/useGetLineProps.ts\nimport { useCallback } from \"react\";\nimport clsx from \"clsx\";\nvar useGetLineProps = (themeDictionary) => useCallback(\n (_a) => {\n var _b = _a, { className, style, line } = _b, rest = __objRest(_b, [\"className\", \"style\", \"line\"]);\n const output = __spreadProps(__spreadValues({}, rest), {\n className: clsx(\"token-line\", className)\n });\n if (typeof themeDictionary === \"object\" && \"plain\" in themeDictionary)\n output.style = themeDictionary.plain;\n if (typeof style === \"object\")\n output.style = __spreadValues(__spreadValues({}, output.style || {}), style);\n return output;\n },\n [themeDictionary]\n);\n\n// src/components/useGetTokenProps.ts\nimport { useCallback as useCallback2 } from \"react\";\nimport clsx2 from \"clsx\";\nvar useGetTokenProps = (themeDictionary) => {\n const styleForToken = useCallback2(\n ({ types, empty }) => {\n if (themeDictionary == null)\n return void 0;\n else if (types.length === 1 && types[0] === \"plain\") {\n return empty != null ? { display: \"inline-block\" } : void 0;\n } else if (types.length === 1 && empty != null) {\n return themeDictionary[types[0]];\n }\n return Object.assign(\n empty != null ? { display: \"inline-block\" } : {},\n ...types.map((type) => themeDictionary[type])\n );\n },\n [themeDictionary]\n );\n return useCallback2(\n (_a) => {\n var _b = _a, { token, className, style } = _b, rest = __objRest(_b, [\"token\", \"className\", \"style\"]);\n const output = __spreadProps(__spreadValues({}, rest), {\n className: clsx2(\"token\", ...token.types, className),\n children: token.content,\n style: styleForToken(token)\n });\n if (style != null) {\n output.style = __spreadValues(__spreadValues({}, output.style || {}), style);\n }\n return output;\n },\n [styleForToken]\n );\n};\n\n// src/utils/normalizeTokens.ts\nvar newlineRe = /\\r\\n|\\r|\\n/;\nvar normalizeEmptyLines = (line) => {\n if (line.length === 0) {\n line.push({\n types: [\"plain\"],\n content: \"\\n\",\n empty: true\n });\n } else if (line.length === 1 && line[0].content === \"\") {\n line[0].content = \"\\n\";\n line[0].empty = true;\n }\n};\nvar appendTypes = (types, add) => {\n const typesSize = types.length;\n if (typesSize > 0 && types[typesSize - 1] === add) {\n return types;\n }\n return types.concat(add);\n};\nvar normalizeTokens = (tokens) => {\n const typeArrStack = [[]];\n const tokenArrStack = [tokens];\n const tokenArrIndexStack = [0];\n const tokenArrSizeStack = [tokens.length];\n let i = 0;\n let stackIndex = 0;\n let currentLine = [];\n const acc = [currentLine];\n while (stackIndex > -1) {\n while ((i = tokenArrIndexStack[stackIndex]++) < tokenArrSizeStack[stackIndex]) {\n let content;\n let types = typeArrStack[stackIndex];\n const tokenArr = tokenArrStack[stackIndex];\n const token = tokenArr[i];\n if (typeof token === \"string\") {\n types = stackIndex > 0 ? types : [\"plain\"];\n content = token;\n } else {\n types = appendTypes(types, token.type);\n if (token.alias) {\n types = appendTypes(types, token.alias);\n }\n content = token.content;\n }\n if (typeof content !== \"string\") {\n stackIndex++;\n typeArrStack.push(types);\n tokenArrStack.push(content);\n tokenArrIndexStack.push(0);\n tokenArrSizeStack.push(content.length);\n continue;\n }\n const splitByNewlines = content.split(newlineRe);\n const newlineCount = splitByNewlines.length;\n currentLine.push({\n types,\n content: splitByNewlines[0]\n });\n for (let i2 = 1; i2 < newlineCount; i2++) {\n normalizeEmptyLines(currentLine);\n acc.push(currentLine = []);\n currentLine.push({\n types,\n content: splitByNewlines[i2]\n });\n }\n }\n stackIndex--;\n typeArrStack.pop();\n tokenArrStack.pop();\n tokenArrIndexStack.pop();\n tokenArrSizeStack.pop();\n }\n normalizeEmptyLines(currentLine);\n return acc;\n};\nvar normalizeTokens_default = normalizeTokens;\n\n// src/components/useTokenize.ts\nimport { useMemo } from \"react\";\nvar useTokenize = ({ prism, code, grammar, language }) => {\n return useMemo(() => {\n if (grammar == null)\n return normalizeTokens_default([code]);\n const prismConfig = {\n code,\n grammar,\n language,\n tokens: []\n };\n prism.hooks.run(\"before-tokenize\", prismConfig);\n prismConfig.tokens = prism.tokenize(code, grammar);\n prism.hooks.run(\"after-tokenize\", prismConfig);\n return normalizeTokens_default(prismConfig.tokens);\n }, [\n code,\n grammar,\n language,\n // prism is a stable import\n prism\n ]);\n};\n\n// src/utils/themeToDict.ts\nvar themeToDict = (theme21, language) => {\n const { plain } = theme21;\n const themeDict = theme21.styles.reduce((acc, themeEntry) => {\n const { languages: languages2, style } = themeEntry;\n if (languages2 && !languages2.includes(language)) {\n return acc;\n }\n themeEntry.types.forEach((type) => {\n const accStyle = __spreadValues(__spreadValues({}, acc[type]), style);\n acc[type] = accStyle;\n });\n return acc;\n }, {});\n themeDict.root = plain;\n themeDict.plain = __spreadProps(__spreadValues({}, plain), { backgroundColor: void 0 });\n return themeDict;\n};\nvar themeToDict_default = themeToDict;\n\n// src/components/highlight.ts\nvar Highlight = ({\n children,\n language: _language,\n code,\n theme: theme21,\n prism\n}) => {\n const language = _language.toLowerCase();\n const themeDictionary = themeToDict_default(theme21, language);\n const getLineProps = useGetLineProps(themeDictionary);\n const getTokenProps = useGetTokenProps(themeDictionary);\n const grammar = prism.languages[language];\n const tokens = useTokenize({ prism, language, code, grammar });\n return children({\n tokens,\n className: `prism-code language-${language}`,\n style: themeDictionary != null ? themeDictionary.root : {},\n getLineProps,\n getTokenProps\n });\n};\n\n// src/index.ts\nvar Highlight2 = (props) => createElement(Highlight, __spreadProps(__spreadValues({}, props), {\n prism: props.prism || Prism,\n theme: props.theme || vsDark_default,\n code: props.code,\n language: props.language\n}));\nexport {\n Highlight2 as Highlight,\n Prism,\n normalizeTokens_default as normalizeTokens,\n themes_exports as themes,\n useTokenize\n};\n/*! Bundled license information:\n\nprismjs/prism.js:\n (**\n * Prism: Lightweight, robust, elegant syntax highlighting\n *\n * @license MIT <https://opensource.org/licenses/MIT>\n * @author Lea Verou <https://lea.verou.me>\n * @namespace\n * @public\n *)\n*/\n//# sourceMappingURL=index.mjs.map","import { usePathname, useSearchParams } from 'next/navigation';\nimport { useEffect, useState } from 'react';\n\nexport const useFragmentIdentifier = () => {\n const pathname = usePathname();\n const searchParams = useSearchParams();\n const [fragmentIdentifier, setFragmentIdentifier] = useState<string>();\n\n useEffect(() => {\n setFragmentIdentifier(global.location?.hash);\n }, [pathname, searchParams]);\n\n return fragmentIdentifier;\n};\n","\"use client\";\n\n// src/dismissable-layer.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { Primitive, dispatchDiscreteCustomEvent } from \"@radix-ui/react-primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useEscapeKeydown } from \"@radix-ui/react-use-escape-keydown\";\nimport { jsx } from \"react/jsx-runtime\";\nvar DISMISSABLE_LAYER_NAME = \"DismissableLayer\";\nvar CONTEXT_UPDATE = \"dismissableLayer.update\";\nvar POINTER_DOWN_OUTSIDE = \"dismissableLayer.pointerDownOutside\";\nvar FOCUS_OUTSIDE = \"dismissableLayer.focusOutside\";\nvar originalBodyPointerEvents;\nvar DismissableLayerContext = React.createContext({\n layers: /* @__PURE__ */ new Set(),\n layersWithOutsidePointerEventsDisabled: /* @__PURE__ */ new Set(),\n branches: /* @__PURE__ */ new Set()\n});\nvar DismissableLayer = React.forwardRef(\n (props, forwardedRef) => {\n const {\n disableOutsidePointerEvents = false,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onInteractOutside,\n onDismiss,\n ...layerProps\n } = props;\n const context = React.useContext(DismissableLayerContext);\n const [node, setNode] = React.useState(null);\n const ownerDocument = node?.ownerDocument ?? globalThis?.document;\n const [, force] = React.useState({});\n const composedRefs = useComposedRefs(forwardedRef, (node2) => setNode(node2));\n const layers = Array.from(context.layers);\n const [highestLayerWithOutsidePointerEventsDisabled] = [...context.layersWithOutsidePointerEventsDisabled].slice(-1);\n const highestLayerWithOutsidePointerEventsDisabledIndex = layers.indexOf(highestLayerWithOutsidePointerEventsDisabled);\n const index = node ? layers.indexOf(node) : -1;\n const isBodyPointerEventsDisabled = context.layersWithOutsidePointerEventsDisabled.size > 0;\n const isPointerEventsEnabled = index >= highestLayerWithOutsidePointerEventsDisabledIndex;\n const pointerDownOutside = usePointerDownOutside((event) => {\n const target = event.target;\n const isPointerDownOnBranch = [...context.branches].some((branch) => branch.contains(target));\n if (!isPointerEventsEnabled || isPointerDownOnBranch) return;\n onPointerDownOutside?.(event);\n onInteractOutside?.(event);\n if (!event.defaultPrevented) onDismiss?.();\n }, ownerDocument);\n const focusOutside = useFocusOutside((event) => {\n const target = event.target;\n const isFocusInBranch = [...context.branches].some((branch) => branch.contains(target));\n if (isFocusInBranch) return;\n onFocusOutside?.(event);\n onInteractOutside?.(event);\n if (!event.defaultPrevented) onDismiss?.();\n }, ownerDocument);\n useEscapeKeydown((event) => {\n const isHighestLayer = index === context.layers.size - 1;\n if (!isHighestLayer) return;\n onEscapeKeyDown?.(event);\n if (!event.defaultPrevented && onDismiss) {\n event.preventDefault();\n onDismiss();\n }\n }, ownerDocument);\n React.useEffect(() => {\n if (!node) return;\n if (disableOutsidePointerEvents) {\n if (context.layersWithOutsidePointerEventsDisabled.size === 0) {\n originalBodyPointerEvents = ownerDocument.body.style.pointerEvents;\n ownerDocument.body.style.pointerEvents = \"none\";\n }\n context.layersWithOutsidePointerEventsDisabled.add(node);\n }\n context.layers.add(node);\n dispatchUpdate();\n return () => {\n if (disableOutsidePointerEvents && context.layersWithOutsidePointerEventsDisabled.size === 1) {\n ownerDocument.body.style.pointerEvents = originalBodyPointerEvents;\n }\n };\n }, [node, ownerDocument, disableOutsidePointerEvents, context]);\n React.useEffect(() => {\n return () => {\n if (!node) return;\n context.layers.delete(node);\n context.layersWithOutsidePointerEventsDisabled.delete(node);\n dispatchUpdate();\n };\n }, [node, context]);\n React.useEffect(() => {\n const handleUpdate = () => force({});\n document.addEventListener(CONTEXT_UPDATE, handleUpdate);\n return () => document.removeEventListener(CONTEXT_UPDATE, handleUpdate);\n }, []);\n return /* @__PURE__ */ jsx(\n Primitive.div,\n {\n ...layerProps,\n ref: composedRefs,\n style: {\n pointerEvents: isBodyPointerEventsDisabled ? isPointerEventsEnabled ? \"auto\" : \"none\" : void 0,\n ...props.style\n },\n onFocusCapture: composeEventHandlers(props.onFocusCapture, focusOutside.onFocusCapture),\n onBlurCapture: composeEventHandlers(props.onBlurCapture, focusOutside.onBlurCapture),\n onPointerDownCapture: composeEventHandlers(\n props.onPointerDownCapture,\n pointerDownOutside.onPointerDownCapture\n )\n }\n );\n }\n);\nDismissableLayer.displayName = DISMISSABLE_LAYER_NAME;\nvar BRANCH_NAME = \"DismissableLayerBranch\";\nvar DismissableLayerBranch = React.forwardRef((props, forwardedRef) => {\n const context = React.useContext(DismissableLayerContext);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n React.useEffect(() => {\n const node = ref.current;\n if (node) {\n context.branches.add(node);\n return () => {\n context.branches.delete(node);\n };\n }\n }, [context.branches]);\n return /* @__PURE__ */ jsx(Primitive.div, { ...props, ref: composedRefs });\n});\nDismissableLayerBranch.displayName = BRANCH_NAME;\nfunction usePointerDownOutside(onPointerDownOutside, ownerDocument = globalThis?.document) {\n const handlePointerDownOutside = useCallbackRef(onPointerDownOutside);\n const isPointerInsideReactTreeRef = React.useRef(false);\n const handleClickRef = React.useRef(() => {\n });\n React.useEffect(() => {\n const handlePointerDown = (event) => {\n if (event.target && !isPointerInsideReactTreeRef.current) {\n let handleAndDispatchPointerDownOutsideEvent2 = function() {\n handleAndDispatchCustomEvent(\n POINTER_DOWN_OUTSIDE,\n handlePointerDownOutside,\n eventDetail,\n { discrete: true }\n );\n };\n var handleAndDispatchPointerDownOutsideEvent = handleAndDispatchPointerDownOutsideEvent2;\n const eventDetail = { originalEvent: event };\n if (event.pointerType === \"touch\") {\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n handleClickRef.current = handleAndDispatchPointerDownOutsideEvent2;\n ownerDocument.addEventListener(\"click\", handleClickRef.current, { once: true });\n } else {\n handleAndDispatchPointerDownOutsideEvent2();\n }\n } else {\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n }\n isPointerInsideReactTreeRef.current = false;\n };\n const timerId = window.setTimeout(() => {\n ownerDocument.addEventListener(\"pointerdown\", handlePointerDown);\n }, 0);\n return () => {\n window.clearTimeout(timerId);\n ownerDocument.removeEventListener(\"pointerdown\", handlePointerDown);\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n };\n }, [ownerDocument, handlePointerDownOutside]);\n return {\n // ensures we check React component tree (not just DOM tree)\n onPointerDownCapture: () => isPointerInsideReactTreeRef.current = true\n };\n}\nfunction useFocusOutside(onFocusOutside, ownerDocument = globalThis?.document) {\n const handleFocusOutside = useCallbackRef(onFocusOutside);\n const isFocusInsideReactTreeRef = React.useRef(false);\n React.useEffect(() => {\n const handleFocus = (event) => {\n if (event.target && !isFocusInsideReactTreeRef.current) {\n const eventDetail = { originalEvent: event };\n handleAndDispatchCustomEvent(FOCUS_OUTSIDE, handleFocusOutside, eventDetail, {\n discrete: false\n });\n }\n };\n ownerDocument.addEventListener(\"focusin\", handleFocus);\n return () => ownerDocument.removeEventListener(\"focusin\", handleFocus);\n }, [ownerDocument, handleFocusOutside]);\n return {\n onFocusCapture: () => isFocusInsideReactTreeRef.current = true,\n onBlurCapture: () => isFocusInsideReactTreeRef.current = false\n };\n}\nfunction dispatchUpdate() {\n const event = new CustomEvent(CONTEXT_UPDATE);\n document.dispatchEvent(event);\n}\nfunction handleAndDispatchCustomEvent(name, handler, detail, { discrete }) {\n const target = detail.originalEvent.target;\n const event = new CustomEvent(name, { bubbles: false, cancelable: true, detail });\n if (handler) target.addEventListener(name, handler, { once: true });\n if (discrete) {\n dispatchDiscreteCustomEvent(target, event);\n } else {\n target.dispatchEvent(event);\n }\n}\nvar Root = DismissableLayer;\nvar Branch = DismissableLayerBranch;\nexport {\n Branch,\n DismissableLayer,\n DismissableLayerBranch,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","/**\n * Custom positioning reference element.\n * @see https://floating-ui.com/docs/virtual-elements\n */\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst alignments = ['start', 'end'];\nconst placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n x: v,\n y: v\n});\nconst oppositeSideMap = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nconst oppositeAlignmentMap = {\n start: 'end',\n end: 'start'\n};\nfunction clamp(start, value, end) {\n return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(placement) {\n return placement.split('-')[0];\n}\nfunction getAlignment(placement) {\n return placement.split('-')[1];\n}\nfunction getOppositeAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}\nfunction getAxisLength(axis) {\n return axis === 'y' ? 'height' : 'width';\n}\nfunction getSideAxis(placement) {\n return ['top', 'bottom'].includes(getSide(placement)) ? 'y' : 'x';\n}\nfunction getAlignmentAxis(placement) {\n return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n if (rtl === void 0) {\n rtl = false;\n }\n const alignment = getAlignment(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const length = getAxisLength(alignmentAxis);\n let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n if (rects.reference[length] > rects.floating[length]) {\n mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n }\n return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n const oppositePlacement = getOppositePlacement(placement);\n return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);\n}\nfunction getSideList(side, isStart, rtl) {\n const lr = ['left', 'right'];\n const rl = ['right', 'left'];\n const tb = ['top', 'bottom'];\n const bt = ['bottom', 'top'];\n switch (side) {\n case 'top':\n case 'bottom':\n if (rtl) return isStart ? rl : lr;\n return isStart ? lr : rl;\n case 'left':\n case 'right':\n return isStart ? tb : bt;\n default:\n return [];\n }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n const alignment = getAlignment(placement);\n let list = getSideList(getSide(placement), direction === 'start', rtl);\n if (alignment) {\n list = list.map(side => side + \"-\" + alignment);\n if (flipAlignment) {\n list = list.concat(list.map(getOppositeAlignmentPlacement));\n }\n }\n return list;\n}\nfunction getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, side => oppositeSideMap[side]);\n}\nfunction expandPaddingObject(padding) {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n ...padding\n };\n}\nfunction getPaddingObject(padding) {\n return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n top: padding,\n right: padding,\n bottom: padding,\n left: padding\n };\n}\nfunction rectToClientRect(rect) {\n const {\n x,\n y,\n width,\n height\n } = rect;\n return {\n width,\n height,\n top: y,\n left: x,\n right: x + width,\n bottom: y + height,\n x,\n y\n };\n}\n\nexport { alignments, clamp, createCoords, evaluate, expandPaddingObject, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getOppositeAlignmentPlacement, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, max, min, placements, rectToClientRect, round, sides };\n","function hasWindow() {\n return typeof window !== 'undefined';\n}\nfunction getNodeName(node) {\n if (isNode(node)) {\n return (node.nodeName || '').toLowerCase();\n }\n // Mocked nodes in testing environments may not be instances of Node. By\n // returning `#document` an infinite loop won't occur.\n // https://github.com/floating-ui/floating-ui/issues/2317\n return '#document';\n}\nfunction getWindow(node) {\n var _node$ownerDocument;\n return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\nfunction getDocumentElement(node) {\n var _ref;\n return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;\n}\nfunction isNode(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof Node || value instanceof getWindow(value).Node;\n}\nfunction isElement(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof Element || value instanceof getWindow(value).Element;\n}\nfunction isHTMLElement(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;\n}\nfunction isShadowRoot(value) {\n if (!hasWindow() || typeof ShadowRoot === 'undefined') {\n return false;\n }\n return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;\n}\nfunction isOverflowElement(element) {\n const {\n overflow,\n overflowX,\n overflowY,\n display\n } = getComputedStyle(element);\n return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !['inline', 'contents'].includes(display);\n}\nfunction isTableElement(element) {\n return ['table', 'td', 'th'].includes(getNodeName(element));\n}\nfunction isTopLayer(element) {\n return [':popover-open', ':modal'].some(selector => {\n try {\n return element.matches(selector);\n } catch (e) {\n return false;\n }\n });\n}\nfunction isContainingBlock(elementOrCss) {\n const webkit = isWebKit();\n const css = isElement(elementOrCss) ? getComputedStyle(elementOrCss) : elementOrCss;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n return css.transform !== 'none' || css.perspective !== 'none' || (css.containerType ? css.containerType !== 'normal' : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== 'none' : false) || !webkit && (css.filter ? css.filter !== 'none' : false) || ['transform', 'perspective', 'filter'].some(value => (css.willChange || '').includes(value)) || ['paint', 'layout', 'strict', 'content'].some(value => (css.contain || '').includes(value));\n}\nfunction getContainingBlock(element) {\n let currentNode = getParentNode(element);\n while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n if (isContainingBlock(currentNode)) {\n return currentNode;\n } else if (isTopLayer(currentNode)) {\n return null;\n }\n currentNode = getParentNode(currentNode);\n }\n return null;\n}\nfunction isWebKit() {\n if (typeof CSS === 'undefined' || !CSS.supports) return false;\n return CSS.supports('-webkit-backdrop-filter', 'none');\n}\nfunction isLastTraversableNode(node) {\n return ['html', 'body', '#document'].includes(getNodeName(node));\n}\nfunction getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}\nfunction getNodeScroll(element) {\n if (isElement(element)) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n }\n return {\n scrollLeft: element.scrollX,\n scrollTop: element.scrollY\n };\n}\nfunction getParentNode(node) {\n if (getNodeName(node) === 'html') {\n return node;\n }\n const result =\n // Step into the shadow DOM of the parent of a slotted node.\n node.assignedSlot ||\n // DOM Element detected.\n node.parentNode ||\n // ShadowRoot detected.\n isShadowRoot(node) && node.host ||\n // Fallback.\n getDocumentElement(node);\n return isShadowRoot(result) ? result.host : result;\n}\nfunction getNearestOverflowAncestor(node) {\n const parentNode = getParentNode(node);\n if (isLastTraversableNode(parentNode)) {\n return node.ownerDocument ? node.ownerDocument.body : node.body;\n }\n if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n return parentNode;\n }\n return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(node, list, traverseIframes) {\n var _node$ownerDocument2;\n if (list === void 0) {\n list = [];\n }\n if (traverseIframes === void 0) {\n traverseIframes = true;\n }\n const scrollableAncestor = getNearestOverflowAncestor(node);\n const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);\n const win = getWindow(scrollableAncestor);\n if (isBody) {\n const frameElement = getFrameElement(win);\n return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []);\n }\n return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n}\nfunction getFrameElement(win) {\n return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null;\n}\n\nexport { getComputedStyle, getContainingBlock, getDocumentElement, getFrameElement, getNearestOverflowAncestor, getNodeName, getNodeScroll, getOverflowAncestors, getParentNode, getWindow, isContainingBlock, isElement, isHTMLElement, isLastTraversableNode, isNode, isOverflowElement, isShadowRoot, isTableElement, isTopLayer, isWebKit };\n","\"use client\";\n\n// src/popper.tsx\nimport * as React from \"react\";\nimport {\n useFloating,\n autoUpdate,\n offset,\n shift,\n limitShift,\n hide,\n arrow as floatingUIarrow,\n flip,\n size\n} from \"@floating-ui/react-dom\";\nimport * as ArrowPrimitive from \"@radix-ui/react-arrow\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport { useSize } from \"@radix-ui/react-use-size\";\nimport { jsx } from \"react/jsx-runtime\";\nvar SIDE_OPTIONS = [\"top\", \"right\", \"bottom\", \"left\"];\nvar ALIGN_OPTIONS = [\"start\", \"center\", \"end\"];\nvar POPPER_NAME = \"Popper\";\nvar [createPopperContext, createPopperScope] = createContextScope(POPPER_NAME);\nvar [PopperProvider, usePopperContext] = createPopperContext(POPPER_NAME);\nvar Popper = (props) => {\n const { __scopePopper, children } = props;\n const [anchor, setAnchor] = React.useState(null);\n return /* @__PURE__ */ jsx(PopperProvider, { scope: __scopePopper, anchor, onAnchorChange: setAnchor, children });\n};\nPopper.displayName = POPPER_NAME;\nvar ANCHOR_NAME = \"PopperAnchor\";\nvar PopperAnchor = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopePopper, virtualRef, ...anchorProps } = props;\n const context = usePopperContext(ANCHOR_NAME, __scopePopper);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const anchorRef = React.useRef(null);\n React.useEffect(() => {\n const previousAnchor = anchorRef.current;\n anchorRef.current = virtualRef?.current || ref.current;\n if (previousAnchor !== anchorRef.current) {\n context.onAnchorChange(anchorRef.current);\n }\n });\n return virtualRef ? null : /* @__PURE__ */ jsx(Primitive.div, { ...anchorProps, ref: composedRefs });\n }\n);\nPopperAnchor.displayName = ANCHOR_NAME;\nvar CONTENT_NAME = \"PopperContent\";\nvar [PopperContentProvider, useContentContext] = createPopperContext(CONTENT_NAME);\nvar PopperContent = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopePopper,\n side = \"bottom\",\n sideOffset = 0,\n align = \"center\",\n alignOffset = 0,\n arrowPadding = 0,\n avoidCollisions = true,\n collisionBoundary = [],\n collisionPadding: collisionPaddingProp = 0,\n sticky = \"partial\",\n hideWhenDetached = false,\n updatePositionStrategy = \"optimized\",\n onPlaced,\n ...contentProps\n } = props;\n const context = usePopperContext(CONTENT_NAME, __scopePopper);\n const [content, setContent] = React.useState(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setContent(node));\n const [arrow, setArrow] = React.useState(null);\n const arrowSize = useSize(arrow);\n const arrowWidth = arrowSize?.width ?? 0;\n const arrowHeight = arrowSize?.height ?? 0;\n const desiredPlacement = side + (align !== \"center\" ? \"-\" + align : \"\");\n const collisionPadding = typeof collisionPaddingProp === \"number\" ? collisionPaddingProp : { top: 0, right: 0, bottom: 0, left: 0, ...collisionPaddingProp };\n const boundary = Array.isArray(collisionBoundary) ? collisionBoundary : [collisionBoundary];\n const hasExplicitBoundaries = boundary.length > 0;\n const detectOverflowOptions = {\n padding: collisionPadding,\n boundary: boundary.filter(isNotNull),\n // with `strategy: 'fixed'`, this is the only way to get it to respect boundaries\n altBoundary: hasExplicitBoundaries\n };\n const { refs, floatingStyles, placement, isPositioned, middlewareData } = useFloating({\n // default to `fixed` strategy so users don't have to pick and we also avoid focus scroll issues\n strategy: \"fixed\",\n placement: desiredPlacement,\n whileElementsMounted: (...args) => {\n const cleanup = autoUpdate(...args, {\n animationFrame: updatePositionStrategy === \"always\"\n });\n return cleanup;\n },\n elements: {\n reference: context.anchor\n },\n middleware: [\n offset({ mainAxis: sideOffset + arrowHeight, alignmentAxis: alignOffset }),\n avoidCollisions && shift({\n mainAxis: true,\n crossAxis: false,\n limiter: sticky === \"partial\" ? limitShift() : void 0,\n ...detectOverflowOptions\n }),\n avoidCollisions && flip({ ...detectOverflowOptions }),\n size({\n ...detectOverflowOptions,\n apply: ({ elements, rects, availableWidth, availableHeight }) => {\n const { width: anchorWidth, height: anchorHeight } = rects.reference;\n const contentStyle = elements.floating.style;\n contentStyle.setProperty(\"--radix-popper-available-width\", `${availableWidth}px`);\n contentStyle.setProperty(\"--radix-popper-available-height\", `${availableHeight}px`);\n contentStyle.setProperty(\"--radix-popper-anchor-width\", `${anchorWidth}px`);\n contentStyle.setProperty(\"--radix-popper-anchor-height\", `${anchorHeight}px`);\n }\n }),\n arrow && floatingUIarrow({ element: arrow, padding: arrowPadding }),\n transformOrigin({ arrowWidth, arrowHeight }),\n hideWhenDetached && hide({ strategy: \"referenceHidden\", ...detectOverflowOptions })\n ]\n });\n const [placedSide, placedAlign] = getSideAndAlignFromPlacement(placement);\n const handlePlaced = useCallbackRef(onPlaced);\n useLayoutEffect(() => {\n if (isPositioned) {\n handlePlaced?.();\n }\n }, [isPositioned, handlePlaced]);\n const arrowX = middlewareData.arrow?.x;\n const arrowY = middlewareData.arrow?.y;\n const cannotCenterArrow = middlewareData.arrow?.centerOffset !== 0;\n const [contentZIndex, setContentZIndex] = React.useState();\n useLayoutEffect(() => {\n if (content) setContentZIndex(window.getComputedStyle(content).zIndex);\n }, [content]);\n return /* @__PURE__ */ jsx(\n \"div\",\n {\n ref: refs.setFloating,\n \"data-radix-popper-content-wrapper\": \"\",\n style: {\n ...floatingStyles,\n transform: isPositioned ? floatingStyles.transform : \"translate(0, -200%)\",\n // keep off the page when measuring\n minWidth: \"max-content\",\n zIndex: contentZIndex,\n [\"--radix-popper-transform-origin\"]: [\n middlewareData.transformOrigin?.x,\n middlewareData.transformOrigin?.y\n ].join(\" \"),\n // hide the content if using the hide middleware and should be hidden\n // set visibility to hidden and disable pointer events so the UI behaves\n // as if the PopperContent isn't there at all\n ...middlewareData.hide?.referenceHidden && {\n visibility: \"hidden\",\n pointerEvents: \"none\"\n }\n },\n dir: props.dir,\n children: /* @__PURE__ */ jsx(\n PopperContentProvider,\n {\n scope: __scopePopper,\n placedSide,\n onArrowChange: setArrow,\n arrowX,\n arrowY,\n shouldHideArrow: cannotCenterArrow,\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-side\": placedSide,\n \"data-align\": placedAlign,\n ...contentProps,\n ref: composedRefs,\n style: {\n ...contentProps.style,\n // if the PopperContent hasn't been placed yet (not all measurements done)\n // we prevent animations so that users's animation don't kick in too early referring wrong sides\n animation: !isPositioned ? \"none\" : void 0\n }\n }\n )\n }\n )\n }\n );\n }\n);\nPopperContent.displayName = CONTENT_NAME;\nvar ARROW_NAME = \"PopperArrow\";\nvar OPPOSITE_SIDE = {\n top: \"bottom\",\n right: \"left\",\n bottom: \"top\",\n left: \"right\"\n};\nvar PopperArrow = React.forwardRef(function PopperArrow2(props, forwardedRef) {\n const { __scopePopper, ...arrowProps } = props;\n const contentContext = useContentContext(ARROW_NAME, __scopePopper);\n const baseSide = OPPOSITE_SIDE[contentContext.placedSide];\n return (\n // we have to use an extra wrapper because `ResizeObserver` (used by `useSize`)\n // doesn't report size as we'd expect on SVG elements.\n // it reports their bounding box which is effectively the largest path inside the SVG.\n /* @__PURE__ */ jsx(\n \"span\",\n {\n ref: contentContext.onArrowChange,\n style: {\n position: \"absolute\",\n left: contentContext.arrowX,\n top: contentContext.arrowY,\n [baseSide]: 0,\n transformOrigin: {\n top: \"\",\n right: \"0 0\",\n bottom: \"center 0\",\n left: \"100% 0\"\n }[contentContext.placedSide],\n transform: {\n top: \"translateY(100%)\",\n right: \"translateY(50%) rotate(90deg) translateX(-50%)\",\n bottom: `rotate(180deg)`,\n left: \"translateY(50%) rotate(-90deg) translateX(50%)\"\n }[contentContext.placedSide],\n visibility: contentContext.shouldHideArrow ? \"hidden\" : void 0\n },\n children: /* @__PURE__ */ jsx(\n ArrowPrimitive.Root,\n {\n ...arrowProps,\n ref: forwardedRef,\n style: {\n ...arrowProps.style,\n // ensures the element can be measured correctly (mostly for if SVG)\n display: \"block\"\n }\n }\n )\n }\n )\n );\n});\nPopperArrow.displayName = ARROW_NAME;\nfunction isNotNull(value) {\n return value !== null;\n}\nvar transformOrigin = (options) => ({\n name: \"transformOrigin\",\n options,\n fn(data) {\n const { placement, rects, middlewareData } = data;\n const cannotCenterArrow = middlewareData.arrow?.centerOffset !== 0;\n const isArrowHidden = cannotCenterArrow;\n const arrowWidth = isArrowHidden ? 0 : options.arrowWidth;\n const arrowHeight = isArrowHidden ? 0 : options.arrowHeight;\n const [placedSide, placedAlign] = getSideAndAlignFromPlacement(placement);\n const noArrowAlign = { start: \"0%\", center: \"50%\", end: \"100%\" }[placedAlign];\n const arrowXCenter = (middlewareData.arrow?.x ?? 0) + arrowWidth / 2;\n const arrowYCenter = (middlewareData.arrow?.y ?? 0) + arrowHeight / 2;\n let x = \"\";\n let y = \"\";\n if (placedSide === \"bottom\") {\n x = isArrowHidden ? noArrowAlign : `${arrowXCenter}px`;\n y = `${-arrowHeight}px`;\n } else if (placedSide === \"top\") {\n x = isArrowHidden ? noArrowAlign : `${arrowXCenter}px`;\n y = `${rects.floating.height + arrowHeight}px`;\n } else if (placedSide === \"right\") {\n x = `${-arrowHeight}px`;\n y = isArrowHidden ? noArrowAlign : `${arrowYCenter}px`;\n } else if (placedSide === \"left\") {\n x = `${rects.floating.width + arrowHeight}px`;\n y = isArrowHidden ? noArrowAlign : `${arrowYCenter}px`;\n }\n return { data: { x, y } };\n }\n});\nfunction getSideAndAlignFromPlacement(placement) {\n const [side, align = \"center\"] = placement.split(\"-\");\n return [side, align];\n}\nvar Root2 = Popper;\nvar Anchor = PopperAnchor;\nvar Content = PopperContent;\nvar Arrow = PopperArrow;\nexport {\n ALIGN_OPTIONS,\n Anchor,\n Arrow,\n Content,\n Popper,\n PopperAnchor,\n PopperArrow,\n PopperContent,\n Root2 as Root,\n SIDE_OPTIONS,\n createPopperScope\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/portal.tsx\nimport * as React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport { jsx } from \"react/jsx-runtime\";\nvar PORTAL_NAME = \"Portal\";\nvar Portal = React.forwardRef((props, forwardedRef) => {\n const { container: containerProp, ...portalProps } = props;\n const [mounted, setMounted] = React.useState(false);\n useLayoutEffect(() => setMounted(true), []);\n const container = containerProp || mounted && globalThis?.document?.body;\n return container ? ReactDOM.createPortal(/* @__PURE__ */ jsx(Primitive.div, { ...portalProps, ref: forwardedRef }), container) : null;\n});\nPortal.displayName = PORTAL_NAME;\nvar Root = Portal;\nexport {\n Portal,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/tooltip.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { DismissableLayer } from \"@radix-ui/react-dismissable-layer\";\nimport { useId } from \"@radix-ui/react-id\";\nimport * as PopperPrimitive from \"@radix-ui/react-popper\";\nimport { createPopperScope } from \"@radix-ui/react-popper\";\nimport { Portal as PortalPrimitive } from \"@radix-ui/react-portal\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { createSlottable } from \"@radix-ui/react-slot\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport * as VisuallyHiddenPrimitive from \"@radix-ui/react-visually-hidden\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nvar [createTooltipContext, createTooltipScope] = createContextScope(\"Tooltip\", [\n createPopperScope\n]);\nvar usePopperScope = createPopperScope();\nvar PROVIDER_NAME = \"TooltipProvider\";\nvar DEFAULT_DELAY_DURATION = 700;\nvar TOOLTIP_OPEN = \"tooltip.open\";\nvar [TooltipProviderContextProvider, useTooltipProviderContext] = createTooltipContext(PROVIDER_NAME);\nvar TooltipProvider = (props) => {\n const {\n __scopeTooltip,\n delayDuration = DEFAULT_DELAY_DURATION,\n skipDelayDuration = 300,\n disableHoverableContent = false,\n children\n } = props;\n const isOpenDelayedRef = React.useRef(true);\n const isPointerInTransitRef = React.useRef(false);\n const skipDelayTimerRef = React.useRef(0);\n React.useEffect(() => {\n const skipDelayTimer = skipDelayTimerRef.current;\n return () => window.clearTimeout(skipDelayTimer);\n }, []);\n return /* @__PURE__ */ jsx(\n TooltipProviderContextProvider,\n {\n scope: __scopeTooltip,\n isOpenDelayedRef,\n delayDuration,\n onOpen: React.useCallback(() => {\n window.clearTimeout(skipDelayTimerRef.current);\n isOpenDelayedRef.current = false;\n }, []),\n onClose: React.useCallback(() => {\n window.clearTimeout(skipDelayTimerRef.current);\n skipDelayTimerRef.current = window.setTimeout(\n () => isOpenDelayedRef.current = true,\n skipDelayDuration\n );\n }, [skipDelayDuration]),\n isPointerInTransitRef,\n onPointerInTransitChange: React.useCallback((inTransit) => {\n isPointerInTransitRef.current = inTransit;\n }, []),\n disableHoverableContent,\n children\n }\n );\n};\nTooltipProvider.displayName = PROVIDER_NAME;\nvar TOOLTIP_NAME = \"Tooltip\";\nvar [TooltipContextProvider, useTooltipContext] = createTooltipContext(TOOLTIP_NAME);\nvar Tooltip = (props) => {\n const {\n __scopeTooltip,\n children,\n open: openProp,\n defaultOpen,\n onOpenChange,\n disableHoverableContent: disableHoverableContentProp,\n delayDuration: delayDurationProp\n } = props;\n const providerContext = useTooltipProviderContext(TOOLTIP_NAME, props.__scopeTooltip);\n const popperScope = usePopperScope(__scopeTooltip);\n const [trigger, setTrigger] = React.useState(null);\n const contentId = useId();\n const openTimerRef = React.useRef(0);\n const disableHoverableContent = disableHoverableContentProp ?? providerContext.disableHoverableContent;\n const delayDuration = delayDurationProp ?? providerContext.delayDuration;\n const wasOpenDelayedRef = React.useRef(false);\n const [open, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen ?? false,\n onChange: (open2) => {\n if (open2) {\n providerContext.onOpen();\n document.dispatchEvent(new CustomEvent(TOOLTIP_OPEN));\n } else {\n providerContext.onClose();\n }\n onOpenChange?.(open2);\n },\n caller: TOOLTIP_NAME\n });\n const stateAttribute = React.useMemo(() => {\n return open ? wasOpenDelayedRef.current ? \"delayed-open\" : \"instant-open\" : \"closed\";\n }, [open]);\n const handleOpen = React.useCallback(() => {\n window.clearTimeout(openTimerRef.current);\n openTimerRef.current = 0;\n wasOpenDelayedRef.current = false;\n setOpen(true);\n }, [setOpen]);\n const handleClose = React.useCallback(() => {\n window.clearTimeout(openTimerRef.current);\n openTimerRef.current = 0;\n setOpen(false);\n }, [setOpen]);\n const handleDelayedOpen = React.useCallback(() => {\n window.clearTimeout(openTimerRef.current);\n openTimerRef.current = window.setTimeout(() => {\n wasOpenDelayedRef.current = true;\n setOpen(true);\n openTimerRef.current = 0;\n }, delayDuration);\n }, [delayDuration, setOpen]);\n React.useEffect(() => {\n return () => {\n if (openTimerRef.current) {\n window.clearTimeout(openTimerRef.current);\n openTimerRef.current = 0;\n }\n };\n }, []);\n return /* @__PURE__ */ jsx(PopperPrimitive.Root, { ...popperScope, children: /* @__PURE__ */ jsx(\n TooltipContextProvider,\n {\n scope: __scopeTooltip,\n contentId,\n open,\n stateAttribute,\n trigger,\n onTriggerChange: setTrigger,\n onTriggerEnter: React.useCallback(() => {\n if (providerContext.isOpenDelayedRef.current) handleDelayedOpen();\n else handleOpen();\n }, [providerContext.isOpenDelayedRef, handleDelayedOpen, handleOpen]),\n onTriggerLeave: React.useCallback(() => {\n if (disableHoverableContent) {\n handleClose();\n } else {\n window.clearTimeout(openTimerRef.current);\n openTimerRef.current = 0;\n }\n }, [handleClose, disableHoverableContent]),\n onOpen: handleOpen,\n onClose: handleClose,\n disableHoverableContent,\n children\n }\n ) });\n};\nTooltip.displayName = TOOLTIP_NAME;\nvar TRIGGER_NAME = \"TooltipTrigger\";\nvar TooltipTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeTooltip, ...triggerProps } = props;\n const context = useTooltipContext(TRIGGER_NAME, __scopeTooltip);\n const providerContext = useTooltipProviderContext(TRIGGER_NAME, __scopeTooltip);\n const popperScope = usePopperScope(__scopeTooltip);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref, context.onTriggerChange);\n const isPointerDownRef = React.useRef(false);\n const hasPointerMoveOpenedRef = React.useRef(false);\n const handlePointerUp = React.useCallback(() => isPointerDownRef.current = false, []);\n React.useEffect(() => {\n return () => document.removeEventListener(\"pointerup\", handlePointerUp);\n }, [handlePointerUp]);\n return /* @__PURE__ */ jsx(PopperPrimitive.Anchor, { asChild: true, ...popperScope, children: /* @__PURE__ */ jsx(\n Primitive.button,\n {\n \"aria-describedby\": context.open ? context.contentId : void 0,\n \"data-state\": context.stateAttribute,\n ...triggerProps,\n ref: composedRefs,\n onPointerMove: composeEventHandlers(props.onPointerMove, (event) => {\n if (event.pointerType === \"touch\") return;\n if (!hasPointerMoveOpenedRef.current && !providerContext.isPointerInTransitRef.current) {\n context.onTriggerEnter();\n hasPointerMoveOpenedRef.current = true;\n }\n }),\n onPointerLeave: composeEventHandlers(props.onPointerLeave, () => {\n context.onTriggerLeave();\n hasPointerMoveOpenedRef.current = false;\n }),\n onPointerDown: composeEventHandlers(props.onPointerDown, () => {\n if (context.open) {\n context.onClose();\n }\n isPointerDownRef.current = true;\n document.addEventListener(\"pointerup\", handlePointerUp, { once: true });\n }),\n onFocus: composeEventHandlers(props.onFocus, () => {\n if (!isPointerDownRef.current) context.onOpen();\n }),\n onBlur: composeEventHandlers(props.onBlur, context.onClose),\n onClick: composeEventHandlers(props.onClick, context.onClose)\n }\n ) });\n }\n);\nTooltipTrigger.displayName = TRIGGER_NAME;\nvar PORTAL_NAME = \"TooltipPortal\";\nvar [PortalProvider, usePortalContext] = createTooltipContext(PORTAL_NAME, {\n forceMount: void 0\n});\nvar TooltipPortal = (props) => {\n const { __scopeTooltip, forceMount, children, container } = props;\n const context = useTooltipContext(PORTAL_NAME, __scopeTooltip);\n return /* @__PURE__ */ jsx(PortalProvider, { scope: __scopeTooltip, forceMount, children: /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(PortalPrimitive, { asChild: true, container, children }) }) });\n};\nTooltipPortal.displayName = PORTAL_NAME;\nvar CONTENT_NAME = \"TooltipContent\";\nvar TooltipContent = React.forwardRef(\n (props, forwardedRef) => {\n const portalContext = usePortalContext(CONTENT_NAME, props.__scopeTooltip);\n const { forceMount = portalContext.forceMount, side = \"top\", ...contentProps } = props;\n const context = useTooltipContext(CONTENT_NAME, props.__scopeTooltip);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: context.disableHoverableContent ? /* @__PURE__ */ jsx(TooltipContentImpl, { side, ...contentProps, ref: forwardedRef }) : /* @__PURE__ */ jsx(TooltipContentHoverable, { side, ...contentProps, ref: forwardedRef }) });\n }\n);\nvar TooltipContentHoverable = React.forwardRef((props, forwardedRef) => {\n const context = useTooltipContext(CONTENT_NAME, props.__scopeTooltip);\n const providerContext = useTooltipProviderContext(CONTENT_NAME, props.__scopeTooltip);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const [pointerGraceArea, setPointerGraceArea] = React.useState(null);\n const { trigger, onClose } = context;\n const content = ref.current;\n const { onPointerInTransitChange } = providerContext;\n const handleRemoveGraceArea = React.useCallback(() => {\n setPointerGraceArea(null);\n onPointerInTransitChange(false);\n }, [onPointerInTransitChange]);\n const handleCreateGraceArea = React.useCallback(\n (event, hoverTarget) => {\n const currentTarget = event.currentTarget;\n const exitPoint = { x: event.clientX, y: event.clientY };\n const exitSide = getExitSideFromRect(exitPoint, currentTarget.getBoundingClientRect());\n const paddedExitPoints = getPaddedExitPoints(exitPoint, exitSide);\n const hoverTargetPoints = getPointsFromRect(hoverTarget.getBoundingClientRect());\n const graceArea = getHull([...paddedExitPoints, ...hoverTargetPoints]);\n setPointerGraceArea(graceArea);\n onPointerInTransitChange(true);\n },\n [onPointerInTransitChange]\n );\n React.useEffect(() => {\n return () => handleRemoveGraceArea();\n }, [handleRemoveGraceArea]);\n React.useEffect(() => {\n if (trigger && content) {\n const handleTriggerLeave = (event) => handleCreateGraceArea(event, content);\n const handleContentLeave = (event) => handleCreateGraceArea(event, trigger);\n trigger.addEventListener(\"pointerleave\", handleTriggerLeave);\n content.addEventListener(\"pointerleave\", handleContentLeave);\n return () => {\n trigger.removeEventListener(\"pointerleave\", handleTriggerLeave);\n content.removeEventListener(\"pointerleave\", handleContentLeave);\n };\n }\n }, [trigger, content, handleCreateGraceArea, handleRemoveGraceArea]);\n React.useEffect(() => {\n if (pointerGraceArea) {\n const handleTrackPointerGrace = (event) => {\n const target = event.target;\n const pointerPosition = { x: event.clientX, y: event.clientY };\n const hasEnteredTarget = trigger?.contains(target) || content?.contains(target);\n const isPointerOutsideGraceArea = !isPointInPolygon(pointerPosition, pointerGraceArea);\n if (hasEnteredTarget) {\n handleRemoveGraceArea();\n } else if (isPointerOutsideGraceArea) {\n handleRemoveGraceArea();\n onClose();\n }\n };\n document.addEventListener(\"pointermove\", handleTrackPointerGrace);\n return () => document.removeEventListener(\"pointermove\", handleTrackPointerGrace);\n }\n }, [trigger, content, pointerGraceArea, onClose, handleRemoveGraceArea]);\n return /* @__PURE__ */ jsx(TooltipContentImpl, { ...props, ref: composedRefs });\n});\nvar [VisuallyHiddenContentContextProvider, useVisuallyHiddenContentContext] = createTooltipContext(TOOLTIP_NAME, { isInside: false });\nvar Slottable = createSlottable(\"TooltipContent\");\nvar TooltipContentImpl = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeTooltip,\n children,\n \"aria-label\": ariaLabel,\n onEscapeKeyDown,\n onPointerDownOutside,\n ...contentProps\n } = props;\n const context = useTooltipContext(CONTENT_NAME, __scopeTooltip);\n const popperScope = usePopperScope(__scopeTooltip);\n const { onClose } = context;\n React.useEffect(() => {\n document.addEventListener(TOOLTIP_OPEN, onClose);\n return () => document.removeEventListener(TOOLTIP_OPEN, onClose);\n }, [onClose]);\n React.useEffect(() => {\n if (context.trigger) {\n const handleScroll = (event) => {\n const target = event.target;\n if (target?.contains(context.trigger)) onClose();\n };\n window.addEventListener(\"scroll\", handleScroll, { capture: true });\n return () => window.removeEventListener(\"scroll\", handleScroll, { capture: true });\n }\n }, [context.trigger, onClose]);\n return /* @__PURE__ */ jsx(\n DismissableLayer,\n {\n asChild: true,\n disableOutsidePointerEvents: false,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside: (event) => event.preventDefault(),\n onDismiss: onClose,\n children: /* @__PURE__ */ jsxs(\n PopperPrimitive.Content,\n {\n \"data-state\": context.stateAttribute,\n ...popperScope,\n ...contentProps,\n ref: forwardedRef,\n style: {\n ...contentProps.style,\n // re-namespace exposed content custom properties\n ...{\n \"--radix-tooltip-content-transform-origin\": \"var(--radix-popper-transform-origin)\",\n \"--radix-tooltip-content-available-width\": \"var(--radix-popper-available-width)\",\n \"--radix-tooltip-content-available-height\": \"var(--radix-popper-available-height)\",\n \"--radix-tooltip-trigger-width\": \"var(--radix-popper-anchor-width)\",\n \"--radix-tooltip-trigger-height\": \"var(--radix-popper-anchor-height)\"\n }\n },\n children: [\n /* @__PURE__ */ jsx(Slottable, { children }),\n /* @__PURE__ */ jsx(VisuallyHiddenContentContextProvider, { scope: __scopeTooltip, isInside: true, children: /* @__PURE__ */ jsx(VisuallyHiddenPrimitive.Root, { id: context.contentId, role: \"tooltip\", children: ariaLabel || children }) })\n ]\n }\n )\n }\n );\n }\n);\nTooltipContent.displayName = CONTENT_NAME;\nvar ARROW_NAME = \"TooltipArrow\";\nvar TooltipArrow = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeTooltip, ...arrowProps } = props;\n const popperScope = usePopperScope(__scopeTooltip);\n const visuallyHiddenContentContext = useVisuallyHiddenContentContext(\n ARROW_NAME,\n __scopeTooltip\n );\n return visuallyHiddenContentContext.isInside ? null : /* @__PURE__ */ jsx(PopperPrimitive.Arrow, { ...popperScope, ...arrowProps, ref: forwardedRef });\n }\n);\nTooltipArrow.displayName = ARROW_NAME;\nfunction getExitSideFromRect(point, rect) {\n const top = Math.abs(rect.top - point.y);\n const bottom = Math.abs(rect.bottom - point.y);\n const right = Math.abs(rect.right - point.x);\n const left = Math.abs(rect.left - point.x);\n switch (Math.min(top, bottom, right, left)) {\n case left:\n return \"left\";\n case right:\n return \"right\";\n case top:\n return \"top\";\n case bottom:\n return \"bottom\";\n default:\n throw new Error(\"unreachable\");\n }\n}\nfunction getPaddedExitPoints(exitPoint, exitSide, padding = 5) {\n const paddedExitPoints = [];\n switch (exitSide) {\n case \"top\":\n paddedExitPoints.push(\n { x: exitPoint.x - padding, y: exitPoint.y + padding },\n { x: exitPoint.x + padding, y: exitPoint.y + padding }\n );\n break;\n case \"bottom\":\n paddedExitPoints.push(\n { x: exitPoint.x - padding, y: exitPoint.y - padding },\n { x: exitPoint.x + padding, y: exitPoint.y - padding }\n );\n break;\n case \"left\":\n paddedExitPoints.push(\n { x: exitPoint.x + padding, y: exitPoint.y - padding },\n { x: exitPoint.x + padding, y: exitPoint.y + padding }\n );\n break;\n case \"right\":\n paddedExitPoints.push(\n { x: exitPoint.x - padding, y: exitPoint.y - padding },\n { x: exitPoint.x - padding, y: exitPoint.y + padding }\n );\n break;\n }\n return paddedExitPoints;\n}\nfunction getPointsFromRect(rect) {\n const { top, right, bottom, left } = rect;\n return [\n { x: left, y: top },\n { x: right, y: top },\n { x: right, y: bottom },\n { x: left, y: bottom }\n ];\n}\nfunction isPointInPolygon(point, polygon) {\n const { x, y } = point;\n let inside = false;\n for (let i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {\n const ii = polygon[i];\n const jj = polygon[j];\n const xi = ii.x;\n const yi = ii.y;\n const xj = jj.x;\n const yj = jj.y;\n const intersect = yi > y !== yj > y && x < (xj - xi) * (y - yi) / (yj - yi) + xi;\n if (intersect) inside = !inside;\n }\n return inside;\n}\nfunction getHull(points) {\n const newPoints = points.slice();\n newPoints.sort((a, b) => {\n if (a.x < b.x) return -1;\n else if (a.x > b.x) return 1;\n else if (a.y < b.y) return -1;\n else if (a.y > b.y) return 1;\n else return 0;\n });\n return getHullPresorted(newPoints);\n}\nfunction getHullPresorted(points) {\n if (points.length <= 1) return points.slice();\n const upperHull = [];\n for (let i = 0; i < points.length; i++) {\n const p = points[i];\n while (upperHull.length >= 2) {\n const q = upperHull[upperHull.length - 1];\n const r = upperHull[upperHull.length - 2];\n if ((q.x - r.x) * (p.y - r.y) >= (q.y - r.y) * (p.x - r.x)) upperHull.pop();\n else break;\n }\n upperHull.push(p);\n }\n upperHull.pop();\n const lowerHull = [];\n for (let i = points.length - 1; i >= 0; i--) {\n const p = points[i];\n while (lowerHull.length >= 2) {\n const q = lowerHull[lowerHull.length - 1];\n const r = lowerHull[lowerHull.length - 2];\n if ((q.x - r.x) * (p.y - r.y) >= (q.y - r.y) * (p.x - r.x)) lowerHull.pop();\n else break;\n }\n lowerHull.push(p);\n }\n lowerHull.pop();\n if (upperHull.length === 1 && lowerHull.length === 1 && upperHull[0].x === lowerHull[0].x && upperHull[0].y === lowerHull[0].y) {\n return upperHull;\n } else {\n return upperHull.concat(lowerHull);\n }\n}\nvar Provider = TooltipProvider;\nvar Root3 = Tooltip;\nvar Trigger = TooltipTrigger;\nvar Portal = TooltipPortal;\nvar Content2 = TooltipContent;\nvar Arrow2 = TooltipArrow;\nexport {\n Arrow2 as Arrow,\n Content2 as Content,\n Portal,\n Provider,\n Root3 as Root,\n Tooltip,\n TooltipArrow,\n TooltipContent,\n TooltipPortal,\n TooltipProvider,\n TooltipTrigger,\n Trigger,\n createTooltipScope\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-callback-ref/src/use-callback-ref.tsx\nimport * as React from \"react\";\nfunction useCallbackRef(callback) {\n const callbackRef = React.useRef(callback);\n React.useEffect(() => {\n callbackRef.current = callback;\n });\n return React.useMemo(() => (...args) => callbackRef.current?.(...args), []);\n}\nexport {\n useCallbackRef\n};\n//# sourceMappingURL=index.mjs.map\n","import * as TooltipPrimitive from '@radix-ui/react-tooltip';\nimport * as React from 'react';\nimport { cn } from '../utils';\n\ntype ContentElement = React.ComponentRef<typeof TooltipPrimitive.Content>;\ntype ContentProps = React.ComponentPropsWithoutRef<\n typeof TooltipPrimitive.Content\n>;\n\nexport type TooltipProps = ContentProps;\n\nexport const TooltipContent = React.forwardRef<\n ContentElement,\n Readonly<TooltipProps>\n>(({ sideOffset = 6, children, ...props }, forwardedRef) => (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n {...props}\n className={cn(\n 'z-20 rounded-md border border-slate-6 bg-black px-3 py-2 text-white text-xs',\n 'font-sans max-w-60',\n )}\n ref={forwardedRef}\n sideOffset={sideOffset}\n >\n {children}\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n));\n\nTooltipContent.displayName = 'TooltipContent';\n","// packages/react/use-escape-keydown/src/use-escape-keydown.tsx\nimport * as React from \"react\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nfunction useEscapeKeydown(onEscapeKeyDownProp, ownerDocument = globalThis?.document) {\n const onEscapeKeyDown = useCallbackRef(onEscapeKeyDownProp);\n React.useEffect(() => {\n const handleKeyDown = (event) => {\n if (event.key === \"Escape\") {\n onEscapeKeyDown(event);\n }\n };\n ownerDocument.addEventListener(\"keydown\", handleKeyDown, { capture: true });\n return () => ownerDocument.removeEventListener(\"keydown\", handleKeyDown, { capture: true });\n }, [onEscapeKeyDown, ownerDocument]);\n}\nexport {\n useEscapeKeydown\n};\n//# sourceMappingURL=index.mjs.map\n","import { getSideAxis, getAlignmentAxis, getAxisLength, getSide, getAlignment, evaluate, getPaddingObject, rectToClientRect, min, clamp, placements, getAlignmentSides, getOppositeAlignmentPlacement, getOppositePlacement, getExpandedPlacements, getOppositeAxisPlacements, sides, max, getOppositeAxis } from '@floating-ui/utils';\nexport { rectToClientRect } from '@floating-ui/utils';\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n let {\n reference,\n floating\n } = _ref;\n const sideAxis = getSideAxis(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const alignLength = getAxisLength(alignmentAxis);\n const side = getSide(placement);\n const isVertical = sideAxis === 'y';\n const commonX = reference.x + reference.width / 2 - floating.width / 2;\n const commonY = reference.y + reference.height / 2 - floating.height / 2;\n const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n let coords;\n switch (side) {\n case 'top':\n coords = {\n x: commonX,\n y: reference.y - floating.height\n };\n break;\n case 'bottom':\n coords = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n case 'right':\n coords = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n case 'left':\n coords = {\n x: reference.x - floating.width,\n y: commonY\n };\n break;\n default:\n coords = {\n x: reference.x,\n y: reference.y\n };\n }\n switch (getAlignment(placement)) {\n case 'start':\n coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n case 'end':\n coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n }\n return coords;\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform\n } = config;\n const validMiddleware = middleware.filter(Boolean);\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n let rects = await platform.getElementRects({\n reference,\n floating,\n strategy\n });\n let {\n x,\n y\n } = computeCoordsFromPlacement(rects, placement, rtl);\n let statefulPlacement = placement;\n let middlewareData = {};\n let resetCount = 0;\n for (let i = 0; i < validMiddleware.length; i++) {\n const {\n name,\n fn\n } = validMiddleware[i];\n const {\n x: nextX,\n y: nextY,\n data,\n reset\n } = await fn({\n x,\n y,\n initialPlacement: placement,\n placement: statefulPlacement,\n strategy,\n middlewareData,\n rects,\n platform,\n elements: {\n reference,\n floating\n }\n });\n x = nextX != null ? nextX : x;\n y = nextY != null ? nextY : y;\n middlewareData = {\n ...middlewareData,\n [name]: {\n ...middlewareData[name],\n ...data\n }\n };\n if (reset && resetCount <= 50) {\n resetCount++;\n if (typeof reset === 'object') {\n if (reset.placement) {\n statefulPlacement = reset.placement;\n }\n if (reset.rects) {\n rects = reset.rects === true ? await platform.getElementRects({\n reference,\n floating,\n strategy\n }) : reset.rects;\n }\n ({\n x,\n y\n } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n }\n i = -1;\n }\n }\n return {\n x,\n y,\n placement: statefulPlacement,\n strategy,\n middlewareData\n };\n};\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n var _await$platform$isEle;\n if (options === void 0) {\n options = {};\n }\n const {\n x,\n y,\n platform,\n rects,\n elements,\n strategy\n } = state;\n const {\n boundary = 'clippingAncestors',\n rootBoundary = 'viewport',\n elementContext = 'floating',\n altBoundary = false,\n padding = 0\n } = evaluate(options, state);\n const paddingObject = getPaddingObject(padding);\n const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n const element = elements[altBoundary ? altContext : elementContext];\n const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n boundary,\n rootBoundary,\n strategy\n }));\n const rect = elementContext === 'floating' ? {\n x,\n y,\n width: rects.floating.width,\n height: rects.floating.height\n } : rects.reference;\n const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n x: 1,\n y: 1\n } : {\n x: 1,\n y: 1\n };\n const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n elements,\n rect,\n offsetParent,\n strategy\n }) : rect);\n return {\n top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n };\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n name: 'arrow',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n platform,\n elements,\n middlewareData\n } = state;\n // Since `element` is required, we don't Partial<> the type.\n const {\n element,\n padding = 0\n } = evaluate(options, state) || {};\n if (element == null) {\n return {};\n }\n const paddingObject = getPaddingObject(padding);\n const coords = {\n x,\n y\n };\n const axis = getAlignmentAxis(placement);\n const length = getAxisLength(axis);\n const arrowDimensions = await platform.getDimensions(element);\n const isYAxis = axis === 'y';\n const minProp = isYAxis ? 'top' : 'left';\n const maxProp = isYAxis ? 'bottom' : 'right';\n const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n const startDiff = coords[axis] - rects.reference[axis];\n const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n // DOM platform can return `window` as the `offsetParent`.\n if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n clientSize = elements.floating[clientProp] || rects.floating[length];\n }\n const centerToReference = endDiff / 2 - startDiff / 2;\n\n // If the padding is large enough that it causes the arrow to no longer be\n // centered, modify the padding so that it is centered.\n const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n\n // Make sure the arrow doesn't overflow the floating element if the center\n // point is outside the floating element's bounds.\n const min$1 = minPadding;\n const max = clientSize - arrowDimensions[length] - maxPadding;\n const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n const offset = clamp(min$1, center, max);\n\n // If the reference is small enough that the arrow's padding causes it to\n // to point to nothing for an aligned placement, adjust the offset of the\n // floating element itself. To ensure `shift()` continues to take action,\n // a single reset is performed when this is true.\n const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;\n return {\n [axis]: coords[axis] + alignmentOffset,\n data: {\n [axis]: offset,\n centerOffset: center - offset - alignmentOffset,\n ...(shouldAddOffset && {\n alignmentOffset\n })\n },\n reset: shouldAddOffset\n };\n }\n});\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n return allowedPlacementsSortedByAlignment.filter(placement => {\n if (alignment) {\n return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n }\n return true;\n });\n}\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'autoPlacement',\n options,\n async fn(state) {\n var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n const {\n rects,\n middlewareData,\n placement,\n platform,\n elements\n } = state;\n const {\n crossAxis = false,\n alignment,\n allowedPlacements = placements,\n autoAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n const currentPlacement = placements$1[currentIndex];\n if (currentPlacement == null) {\n return {};\n }\n const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n\n // Make `computeCoords` start from the right place.\n if (placement !== currentPlacement) {\n return {\n reset: {\n placement: placements$1[0]\n }\n };\n }\n const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];\n const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n placement: currentPlacement,\n overflows: currentOverflows\n }];\n const nextPlacement = placements$1[currentIndex + 1];\n\n // There are more placements to check.\n if (nextPlacement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n const placementsSortedByMostSpace = allOverflows.map(d => {\n const alignment = getAlignment(d.placement);\n return [d.placement, alignment && crossAxis ?\n // Check along the mainAxis and main crossAxis side.\n d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :\n // Check only the mainAxis.\n d.overflows[0], d.overflows];\n }).sort((a, b) => a[1] - b[1]);\n const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,\n // Aligned placements should not check their opposite crossAxis\n // side.\n getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));\n const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n if (resetPlacement !== placement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: resetPlacement\n }\n };\n }\n return {};\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'flip',\n options,\n async fn(state) {\n var _middlewareData$arrow, _middlewareData$flip;\n const {\n placement,\n middlewareData,\n rects,\n initialPlacement,\n platform,\n elements\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true,\n fallbackPlacements: specifiedFallbackPlacements,\n fallbackStrategy = 'bestFit',\n fallbackAxisSideDirection = 'none',\n flipAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n\n // If a reset by the arrow was caused due to an alignment offset being\n // added, we should skip any logic now since `flip()` has already done its\n // work.\n // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643\n if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n const side = getSide(placement);\n const initialSideAxis = getSideAxis(initialPlacement);\n const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n const hasFallbackAxisSideDirection = fallbackAxisSideDirection !== 'none';\n if (!specifiedFallbackPlacements && hasFallbackAxisSideDirection) {\n fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n }\n const placements = [initialPlacement, ...fallbackPlacements];\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const overflows = [];\n let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n if (checkMainAxis) {\n overflows.push(overflow[side]);\n }\n if (checkCrossAxis) {\n const sides = getAlignmentSides(placement, rects, rtl);\n overflows.push(overflow[sides[0]], overflow[sides[1]]);\n }\n overflowsData = [...overflowsData, {\n placement,\n overflows\n }];\n\n // One or more sides is overflowing.\n if (!overflows.every(side => side <= 0)) {\n var _middlewareData$flip2, _overflowsData$filter;\n const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n const nextPlacement = placements[nextIndex];\n if (nextPlacement) {\n // Try next placement and re-run the lifecycle.\n return {\n data: {\n index: nextIndex,\n overflows: overflowsData\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n\n // First, find the candidates that fit on the mainAxis side of overflow,\n // then find the placement that fits the best on the main crossAxis side.\n let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n\n // Otherwise fallback.\n if (!resetPlacement) {\n switch (fallbackStrategy) {\n case 'bestFit':\n {\n var _overflowsData$filter2;\n const placement = (_overflowsData$filter2 = overflowsData.filter(d => {\n if (hasFallbackAxisSideDirection) {\n const currentSideAxis = getSideAxis(d.placement);\n return currentSideAxis === initialSideAxis ||\n // Create a bias to the `y` side axis due to horizontal\n // reading directions favoring greater width.\n currentSideAxis === 'y';\n }\n return true;\n }).map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$filter2[0];\n if (placement) {\n resetPlacement = placement;\n }\n break;\n }\n case 'initialPlacement':\n resetPlacement = initialPlacement;\n break;\n }\n }\n if (placement !== resetPlacement) {\n return {\n reset: {\n placement: resetPlacement\n }\n };\n }\n }\n return {};\n }\n };\n};\n\nfunction getSideOffsets(overflow, rect) {\n return {\n top: overflow.top - rect.height,\n right: overflow.right - rect.width,\n bottom: overflow.bottom - rect.height,\n left: overflow.left - rect.width\n };\n}\nfunction isAnySideFullyClipped(overflow) {\n return sides.some(side => overflow[side] >= 0);\n}\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'hide',\n options,\n async fn(state) {\n const {\n rects\n } = state;\n const {\n strategy = 'referenceHidden',\n ...detectOverflowOptions\n } = evaluate(options, state);\n switch (strategy) {\n case 'referenceHidden':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n elementContext: 'reference'\n });\n const offsets = getSideOffsets(overflow, rects.reference);\n return {\n data: {\n referenceHiddenOffsets: offsets,\n referenceHidden: isAnySideFullyClipped(offsets)\n }\n };\n }\n case 'escaped':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n altBoundary: true\n });\n const offsets = getSideOffsets(overflow, rects.floating);\n return {\n data: {\n escapedOffsets: offsets,\n escaped: isAnySideFullyClipped(offsets)\n }\n };\n }\n default:\n {\n return {};\n }\n }\n }\n };\n};\n\nfunction getBoundingRect(rects) {\n const minX = min(...rects.map(rect => rect.left));\n const minY = min(...rects.map(rect => rect.top));\n const maxX = max(...rects.map(rect => rect.right));\n const maxY = max(...rects.map(rect => rect.bottom));\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY\n };\n}\nfunction getRectsByLine(rects) {\n const sortedRects = rects.slice().sort((a, b) => a.y - b.y);\n const groups = [];\n let prevRect = null;\n for (let i = 0; i < sortedRects.length; i++) {\n const rect = sortedRects[i];\n if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {\n groups.push([rect]);\n } else {\n groups[groups.length - 1].push(rect);\n }\n prevRect = rect;\n }\n return groups.map(rect => rectToClientRect(getBoundingRect(rect)));\n}\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'inline',\n options,\n async fn(state) {\n const {\n placement,\n elements,\n rects,\n platform,\n strategy\n } = state;\n // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n // ClientRect's bounds, despite the event listener being triggered. A\n // padding of 2 seems to handle this issue.\n const {\n padding = 2,\n x,\n y\n } = evaluate(options, state);\n const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);\n const clientRects = getRectsByLine(nativeClientRects);\n const fallback = rectToClientRect(getBoundingRect(nativeClientRects));\n const paddingObject = getPaddingObject(padding);\n function getBoundingClientRect() {\n // There are two rects and they are disjoined.\n if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n // Find the first rect in which the point is fully inside.\n return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;\n }\n\n // There are 2 or more connected rects.\n if (clientRects.length >= 2) {\n if (getSideAxis(placement) === 'y') {\n const firstRect = clientRects[0];\n const lastRect = clientRects[clientRects.length - 1];\n const isTop = getSide(placement) === 'top';\n const top = firstRect.top;\n const bottom = lastRect.bottom;\n const left = isTop ? firstRect.left : lastRect.left;\n const right = isTop ? firstRect.right : lastRect.right;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n const isLeftSide = getSide(placement) === 'left';\n const maxRight = max(...clientRects.map(rect => rect.right));\n const minLeft = min(...clientRects.map(rect => rect.left));\n const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n const top = measureRects[0].top;\n const bottom = measureRects[measureRects.length - 1].bottom;\n const left = minLeft;\n const right = maxRight;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n return fallback;\n }\n const resetRects = await platform.getElementRects({\n reference: {\n getBoundingClientRect\n },\n floating: elements.floating,\n strategy\n });\n if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n return {\n reset: {\n rects: resetRects\n }\n };\n }\n return {};\n }\n };\n};\n\n// For type backwards-compatibility, the `OffsetOptions` type was also\n// Derivable.\n\nasync function convertValueToCoords(state, options) {\n const {\n placement,\n platform,\n elements\n } = state;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isVertical = getSideAxis(placement) === 'y';\n const mainAxisMulti = ['left', 'top'].includes(side) ? -1 : 1;\n const crossAxisMulti = rtl && isVertical ? -1 : 1;\n const rawValue = evaluate(options, state);\n\n // eslint-disable-next-line prefer-const\n let {\n mainAxis,\n crossAxis,\n alignmentAxis\n } = typeof rawValue === 'number' ? {\n mainAxis: rawValue,\n crossAxis: 0,\n alignmentAxis: null\n } : {\n mainAxis: rawValue.mainAxis || 0,\n crossAxis: rawValue.crossAxis || 0,\n alignmentAxis: rawValue.alignmentAxis\n };\n if (alignment && typeof alignmentAxis === 'number') {\n crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n }\n return isVertical ? {\n x: crossAxis * crossAxisMulti,\n y: mainAxis * mainAxisMulti\n } : {\n x: mainAxis * mainAxisMulti,\n y: crossAxis * crossAxisMulti\n };\n}\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = function (options) {\n if (options === void 0) {\n options = 0;\n }\n return {\n name: 'offset',\n options,\n async fn(state) {\n var _middlewareData$offse, _middlewareData$arrow;\n const {\n x,\n y,\n placement,\n middlewareData\n } = state;\n const diffCoords = await convertValueToCoords(state, options);\n\n // If the placement is the same and the arrow caused an alignment offset\n // then we don't need to change the positioning coordinates.\n if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n return {\n x: x + diffCoords.x,\n y: y + diffCoords.y,\n data: {\n ...diffCoords,\n placement\n }\n };\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'shift',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = false,\n limiter = {\n fn: _ref => {\n let {\n x,\n y\n } = _ref;\n return {\n x,\n y\n };\n }\n },\n ...detectOverflowOptions\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const crossAxis = getSideAxis(getSide(placement));\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n if (checkMainAxis) {\n const minSide = mainAxis === 'y' ? 'top' : 'left';\n const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n const min = mainAxisCoord + overflow[minSide];\n const max = mainAxisCoord - overflow[maxSide];\n mainAxisCoord = clamp(min, mainAxisCoord, max);\n }\n if (checkCrossAxis) {\n const minSide = crossAxis === 'y' ? 'top' : 'left';\n const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n const min = crossAxisCoord + overflow[minSide];\n const max = crossAxisCoord - overflow[maxSide];\n crossAxisCoord = clamp(min, crossAxisCoord, max);\n }\n const limitedCoords = limiter.fn({\n ...state,\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n });\n return {\n ...limitedCoords,\n data: {\n x: limitedCoords.x - x,\n y: limitedCoords.y - y,\n enabled: {\n [mainAxis]: checkMainAxis,\n [crossAxis]: checkCrossAxis\n }\n }\n };\n }\n };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n options,\n fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n middlewareData\n } = state;\n const {\n offset = 0,\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const crossAxis = getSideAxis(placement);\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n const rawOffset = evaluate(offset, state);\n const computedOffset = typeof rawOffset === 'number' ? {\n mainAxis: rawOffset,\n crossAxis: 0\n } : {\n mainAxis: 0,\n crossAxis: 0,\n ...rawOffset\n };\n if (checkMainAxis) {\n const len = mainAxis === 'y' ? 'height' : 'width';\n const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n if (mainAxisCoord < limitMin) {\n mainAxisCoord = limitMin;\n } else if (mainAxisCoord > limitMax) {\n mainAxisCoord = limitMax;\n }\n }\n if (checkCrossAxis) {\n var _middlewareData$offse, _middlewareData$offse2;\n const len = mainAxis === 'y' ? 'width' : 'height';\n const isOriginSide = ['top', 'left'].includes(getSide(placement));\n const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n if (crossAxisCoord < limitMin) {\n crossAxisCoord = limitMin;\n } else if (crossAxisCoord > limitMax) {\n crossAxisCoord = limitMax;\n }\n }\n return {\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n };\n }\n };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'size',\n options,\n async fn(state) {\n var _state$middlewareData, _state$middlewareData2;\n const {\n placement,\n rects,\n platform,\n elements\n } = state;\n const {\n apply = () => {},\n ...detectOverflowOptions\n } = evaluate(options, state);\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isYAxis = getSideAxis(placement) === 'y';\n const {\n width,\n height\n } = rects.floating;\n let heightSide;\n let widthSide;\n if (side === 'top' || side === 'bottom') {\n heightSide = side;\n widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n } else {\n widthSide = side;\n heightSide = alignment === 'end' ? 'top' : 'bottom';\n }\n const maximumClippingHeight = height - overflow.top - overflow.bottom;\n const maximumClippingWidth = width - overflow.left - overflow.right;\n const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight);\n const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth);\n const noShift = !state.middlewareData.shift;\n let availableHeight = overflowAvailableHeight;\n let availableWidth = overflowAvailableWidth;\n if ((_state$middlewareData = state.middlewareData.shift) != null && _state$middlewareData.enabled.x) {\n availableWidth = maximumClippingWidth;\n }\n if ((_state$middlewareData2 = state.middlewareData.shift) != null && _state$middlewareData2.enabled.y) {\n availableHeight = maximumClippingHeight;\n }\n if (noShift && !alignment) {\n const xMin = max(overflow.left, 0);\n const xMax = max(overflow.right, 0);\n const yMin = max(overflow.top, 0);\n const yMax = max(overflow.bottom, 0);\n if (isYAxis) {\n availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));\n } else {\n availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));\n }\n }\n await apply({\n ...state,\n availableWidth,\n availableHeight\n });\n const nextDimensions = await platform.getDimensions(elements.floating);\n if (width !== nextDimensions.width || height !== nextDimensions.height) {\n return {\n reset: {\n rects: true\n }\n };\n }\n return {};\n }\n };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, shift, size };\n","// packages/react/use-size/src/use-size.tsx\nimport * as React from \"react\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nfunction useSize(element) {\n const [size, setSize] = React.useState(void 0);\n useLayoutEffect(() => {\n if (element) {\n setSize({ width: element.offsetWidth, height: element.offsetHeight });\n const resizeObserver = new ResizeObserver((entries) => {\n if (!Array.isArray(entries)) {\n return;\n }\n if (!entries.length) {\n return;\n }\n const entry = entries[0];\n let width;\n let height;\n if (\"borderBoxSize\" in entry) {\n const borderSizeEntry = entry[\"borderBoxSize\"];\n const borderSize = Array.isArray(borderSizeEntry) ? borderSizeEntry[0] : borderSizeEntry;\n width = borderSize[\"inlineSize\"];\n height = borderSize[\"blockSize\"];\n } else {\n width = element.offsetWidth;\n height = element.offsetHeight;\n }\n setSize({ width, height });\n });\n resizeObserver.observe(element, { box: \"border-box\" });\n return () => resizeObserver.unobserve(element);\n } else {\n setSize(void 0);\n }\n }, [element]);\n return size;\n}\nexport {\n useSize\n};\n//# sourceMappingURL=index.mjs.map\n","import { computePosition, arrow as arrow$2, offset as offset$1, shift as shift$1, limitShift as limitShift$1, flip as flip$1, size as size$1, autoPlacement as autoPlacement$1, hide as hide$1, inline as inline$1 } from '@floating-ui/dom';\nexport { autoUpdate, computePosition, detectOverflow, getOverflowAncestors, platform } from '@floating-ui/dom';\nimport * as React from 'react';\nimport { useLayoutEffect, useEffect } from 'react';\nimport * as ReactDOM from 'react-dom';\n\nvar index = typeof document !== 'undefined' ? useLayoutEffect : useEffect;\n\n// Fork of `fast-deep-equal` that only does the comparisons we need and compares\n// functions\nfunction deepEqual(a, b) {\n if (a === b) {\n return true;\n }\n if (typeof a !== typeof b) {\n return false;\n }\n if (typeof a === 'function' && a.toString() === b.toString()) {\n return true;\n }\n let length;\n let i;\n let keys;\n if (a && b && typeof a === 'object') {\n if (Array.isArray(a)) {\n length = a.length;\n if (length !== b.length) return false;\n for (i = length; i-- !== 0;) {\n if (!deepEqual(a[i], b[i])) {\n return false;\n }\n }\n return true;\n }\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) {\n return false;\n }\n for (i = length; i-- !== 0;) {\n if (!{}.hasOwnProperty.call(b, keys[i])) {\n return false;\n }\n }\n for (i = length; i-- !== 0;) {\n const key = keys[i];\n if (key === '_owner' && a.$$typeof) {\n continue;\n }\n if (!deepEqual(a[key], b[key])) {\n return false;\n }\n }\n return true;\n }\n return a !== a && b !== b;\n}\n\nfunction getDPR(element) {\n if (typeof window === 'undefined') {\n return 1;\n }\n const win = element.ownerDocument.defaultView || window;\n return win.devicePixelRatio || 1;\n}\n\nfunction roundByDPR(element, value) {\n const dpr = getDPR(element);\n return Math.round(value * dpr) / dpr;\n}\n\nfunction useLatestRef(value) {\n const ref = React.useRef(value);\n index(() => {\n ref.current = value;\n });\n return ref;\n}\n\n/**\n * Provides data to position a floating element.\n * @see https://floating-ui.com/docs/useFloating\n */\nfunction useFloating(options) {\n if (options === void 0) {\n options = {};\n }\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform,\n elements: {\n reference: externalReference,\n floating: externalFloating\n } = {},\n transform = true,\n whileElementsMounted,\n open\n } = options;\n const [data, setData] = React.useState({\n x: 0,\n y: 0,\n strategy,\n placement,\n middlewareData: {},\n isPositioned: false\n });\n const [latestMiddleware, setLatestMiddleware] = React.useState(middleware);\n if (!deepEqual(latestMiddleware, middleware)) {\n setLatestMiddleware(middleware);\n }\n const [_reference, _setReference] = React.useState(null);\n const [_floating, _setFloating] = React.useState(null);\n const setReference = React.useCallback(node => {\n if (node !== referenceRef.current) {\n referenceRef.current = node;\n _setReference(node);\n }\n }, []);\n const setFloating = React.useCallback(node => {\n if (node !== floatingRef.current) {\n floatingRef.current = node;\n _setFloating(node);\n }\n }, []);\n const referenceEl = externalReference || _reference;\n const floatingEl = externalFloating || _floating;\n const referenceRef = React.useRef(null);\n const floatingRef = React.useRef(null);\n const dataRef = React.useRef(data);\n const hasWhileElementsMounted = whileElementsMounted != null;\n const whileElementsMountedRef = useLatestRef(whileElementsMounted);\n const platformRef = useLatestRef(platform);\n const openRef = useLatestRef(open);\n const update = React.useCallback(() => {\n if (!referenceRef.current || !floatingRef.current) {\n return;\n }\n const config = {\n placement,\n strategy,\n middleware: latestMiddleware\n };\n if (platformRef.current) {\n config.platform = platformRef.current;\n }\n computePosition(referenceRef.current, floatingRef.current, config).then(data => {\n const fullData = {\n ...data,\n // The floating element's position may be recomputed while it's closed\n // but still mounted (such as when transitioning out). To ensure\n // `isPositioned` will be `false` initially on the next open, avoid\n // setting it to `true` when `open === false` (must be specified).\n isPositioned: openRef.current !== false\n };\n if (isMountedRef.current && !deepEqual(dataRef.current, fullData)) {\n dataRef.current = fullData;\n ReactDOM.flushSync(() => {\n setData(fullData);\n });\n }\n });\n }, [latestMiddleware, placement, strategy, platformRef, openRef]);\n index(() => {\n if (open === false && dataRef.current.isPositioned) {\n dataRef.current.isPositioned = false;\n setData(data => ({\n ...data,\n isPositioned: false\n }));\n }\n }, [open]);\n const isMountedRef = React.useRef(false);\n index(() => {\n isMountedRef.current = true;\n return () => {\n isMountedRef.current = false;\n };\n }, []);\n index(() => {\n if (referenceEl) referenceRef.current = referenceEl;\n if (floatingEl) floatingRef.current = floatingEl;\n if (referenceEl && floatingEl) {\n if (whileElementsMountedRef.current) {\n return whileElementsMountedRef.current(referenceEl, floatingEl, update);\n }\n update();\n }\n }, [referenceEl, floatingEl, update, whileElementsMountedRef, hasWhileElementsMounted]);\n const refs = React.useMemo(() => ({\n reference: referenceRef,\n floating: floatingRef,\n setReference,\n setFloating\n }), [setReference, setFloating]);\n const elements = React.useMemo(() => ({\n reference: referenceEl,\n floating: floatingEl\n }), [referenceEl, floatingEl]);\n const floatingStyles = React.useMemo(() => {\n const initialStyles = {\n position: strategy,\n left: 0,\n top: 0\n };\n if (!elements.floating) {\n return initialStyles;\n }\n const x = roundByDPR(elements.floating, data.x);\n const y = roundByDPR(elements.floating, data.y);\n if (transform) {\n return {\n ...initialStyles,\n transform: \"translate(\" + x + \"px, \" + y + \"px)\",\n ...(getDPR(elements.floating) >= 1.5 && {\n willChange: 'transform'\n })\n };\n }\n return {\n position: strategy,\n left: x,\n top: y\n };\n }, [strategy, transform, elements.floating, data.x, data.y]);\n return React.useMemo(() => ({\n ...data,\n update,\n refs,\n elements,\n floatingStyles\n }), [data, update, refs, elements, floatingStyles]);\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * This wraps the core `arrow` middleware to allow React refs as the element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow$1 = options => {\n function isRef(value) {\n return {}.hasOwnProperty.call(value, 'current');\n }\n return {\n name: 'arrow',\n options,\n fn(state) {\n const {\n element,\n padding\n } = typeof options === 'function' ? options(state) : options;\n if (element && isRef(element)) {\n if (element.current != null) {\n return arrow$2({\n element: element.current,\n padding\n }).fn(state);\n }\n return {};\n }\n if (element) {\n return arrow$2({\n element,\n padding\n }).fn(state);\n }\n return {};\n }\n };\n};\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = (options, deps) => ({\n ...offset$1(options),\n options: [options, deps]\n});\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = (options, deps) => ({\n ...shift$1(options),\n options: [options, deps]\n});\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = (options, deps) => ({\n ...limitShift$1(options),\n options: [options, deps]\n});\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = (options, deps) => ({\n ...flip$1(options),\n options: [options, deps]\n});\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = (options, deps) => ({\n ...size$1(options),\n options: [options, deps]\n});\n\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = (options, deps) => ({\n ...autoPlacement$1(options),\n options: [options, deps]\n});\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = (options, deps) => ({\n ...hide$1(options),\n options: [options, deps]\n});\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = (options, deps) => ({\n ...inline$1(options),\n options: [options, deps]\n});\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * This wraps the core `arrow` middleware to allow React refs as the element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = (options, deps) => ({\n ...arrow$1(options),\n options: [options, deps]\n});\n\nexport { arrow, autoPlacement, flip, hide, inline, limitShift, offset, shift, size, useFloating };\n","// src/arrow.tsx\nimport * as React from \"react\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NAME = \"Arrow\";\nvar Arrow = React.forwardRef((props, forwardedRef) => {\n const { children, width = 10, height = 5, ...arrowProps } = props;\n return /* @__PURE__ */ jsx(\n Primitive.svg,\n {\n ...arrowProps,\n ref: forwardedRef,\n width,\n height,\n viewBox: \"0 0 30 10\",\n preserveAspectRatio: \"none\",\n children: props.asChild ? children : /* @__PURE__ */ jsx(\"polygon\", { points: \"0,0 30,0 15,10\" })\n }\n );\n});\nArrow.displayName = NAME;\nvar Root = Arrow;\nexport {\n Arrow,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","// src/visually-hidden.tsx\nimport * as React from \"react\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx } from \"react/jsx-runtime\";\nvar VISUALLY_HIDDEN_STYLES = Object.freeze({\n // See: https://github.com/twbs/bootstrap/blob/main/scss/mixins/_visually-hidden.scss\n position: \"absolute\",\n border: 0,\n width: 1,\n height: 1,\n padding: 0,\n margin: -1,\n overflow: \"hidden\",\n clip: \"rect(0, 0, 0, 0)\",\n whiteSpace: \"nowrap\",\n wordWrap: \"normal\"\n});\nvar NAME = \"VisuallyHidden\";\nvar VisuallyHidden = React.forwardRef(\n (props, forwardedRef) => {\n return /* @__PURE__ */ jsx(\n Primitive.span,\n {\n ...props,\n ref: forwardedRef,\n style: { ...VISUALLY_HIDDEN_STYLES, ...props.style }\n }\n );\n }\n);\nVisuallyHidden.displayName = NAME;\nvar Root = VisuallyHidden;\nexport {\n Root,\n VISUALLY_HIDDEN_STYLES,\n VisuallyHidden\n};\n//# sourceMappingURL=index.mjs.map\n","import { rectToClientRect, detectOverflow as detectOverflow$1, offset as offset$1, autoPlacement as autoPlacement$1, shift as shift$1, flip as flip$1, size as size$1, hide as hide$1, arrow as arrow$1, inline as inline$1, limitShift as limitShift$1, computePosition as computePosition$1 } from '@floating-ui/core';\nimport { round, createCoords, max, min, floor } from '@floating-ui/utils';\nimport { getComputedStyle, isHTMLElement, isElement, getWindow, isWebKit, getFrameElement, getNodeScroll, getDocumentElement, isTopLayer, getNodeName, isOverflowElement, getOverflowAncestors, getParentNode, isLastTraversableNode, isContainingBlock, isTableElement, getContainingBlock } from '@floating-ui/utils/dom';\nexport { getOverflowAncestors } from '@floating-ui/utils/dom';\n\nfunction getCssDimensions(element) {\n const css = getComputedStyle(element);\n // In testing environments, the `width` and `height` properties are empty\n // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n let width = parseFloat(css.width) || 0;\n let height = parseFloat(css.height) || 0;\n const hasOffset = isHTMLElement(element);\n const offsetWidth = hasOffset ? element.offsetWidth : width;\n const offsetHeight = hasOffset ? element.offsetHeight : height;\n const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n if (shouldFallback) {\n width = offsetWidth;\n height = offsetHeight;\n }\n return {\n width,\n height,\n $: shouldFallback\n };\n}\n\nfunction unwrapElement(element) {\n return !isElement(element) ? element.contextElement : element;\n}\n\nfunction getScale(element) {\n const domElement = unwrapElement(element);\n if (!isHTMLElement(domElement)) {\n return createCoords(1);\n }\n const rect = domElement.getBoundingClientRect();\n const {\n width,\n height,\n $\n } = getCssDimensions(domElement);\n let x = ($ ? round(rect.width) : rect.width) / width;\n let y = ($ ? round(rect.height) : rect.height) / height;\n\n // 0, NaN, or Infinity should always fallback to 1.\n\n if (!x || !Number.isFinite(x)) {\n x = 1;\n }\n if (!y || !Number.isFinite(y)) {\n y = 1;\n }\n return {\n x,\n y\n };\n}\n\nconst noOffsets = /*#__PURE__*/createCoords(0);\nfunction getVisualOffsets(element) {\n const win = getWindow(element);\n if (!isWebKit() || !win.visualViewport) {\n return noOffsets;\n }\n return {\n x: win.visualViewport.offsetLeft,\n y: win.visualViewport.offsetTop\n };\n}\nfunction shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {\n return false;\n }\n return isFixed;\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n const clientRect = element.getBoundingClientRect();\n const domElement = unwrapElement(element);\n let scale = createCoords(1);\n if (includeScale) {\n if (offsetParent) {\n if (isElement(offsetParent)) {\n scale = getScale(offsetParent);\n }\n } else {\n scale = getScale(element);\n }\n }\n const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);\n let x = (clientRect.left + visualOffsets.x) / scale.x;\n let y = (clientRect.top + visualOffsets.y) / scale.y;\n let width = clientRect.width / scale.x;\n let height = clientRect.height / scale.y;\n if (domElement) {\n const win = getWindow(domElement);\n const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n let currentWin = win;\n let currentIFrame = getFrameElement(currentWin);\n while (currentIFrame && offsetParent && offsetWin !== currentWin) {\n const iframeScale = getScale(currentIFrame);\n const iframeRect = currentIFrame.getBoundingClientRect();\n const css = getComputedStyle(currentIFrame);\n const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n x *= iframeScale.x;\n y *= iframeScale.y;\n width *= iframeScale.x;\n height *= iframeScale.y;\n x += left;\n y += top;\n currentWin = getWindow(currentIFrame);\n currentIFrame = getFrameElement(currentWin);\n }\n }\n return rectToClientRect({\n width,\n height,\n x,\n y\n });\n}\n\n// If <html> has a CSS width greater than the viewport, then this will be\n// incorrect for RTL.\nfunction getWindowScrollBarX(element, rect) {\n const leftScroll = getNodeScroll(element).scrollLeft;\n if (!rect) {\n return getBoundingClientRect(getDocumentElement(element)).left + leftScroll;\n }\n return rect.left + leftScroll;\n}\n\nfunction getHTMLOffset(documentElement, scroll, ignoreScrollbarX) {\n if (ignoreScrollbarX === void 0) {\n ignoreScrollbarX = false;\n }\n const htmlRect = documentElement.getBoundingClientRect();\n const x = htmlRect.left + scroll.scrollLeft - (ignoreScrollbarX ? 0 :\n // RTL <body> scrollbar.\n getWindowScrollBarX(documentElement, htmlRect));\n const y = htmlRect.top + scroll.scrollTop;\n return {\n x,\n y\n };\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n let {\n elements,\n rect,\n offsetParent,\n strategy\n } = _ref;\n const isFixed = strategy === 'fixed';\n const documentElement = getDocumentElement(offsetParent);\n const topLayer = elements ? isTopLayer(elements.floating) : false;\n if (offsetParent === documentElement || topLayer && isFixed) {\n return rect;\n }\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n let scale = createCoords(1);\n const offsets = createCoords(0);\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isHTMLElement(offsetParent)) {\n const offsetRect = getBoundingClientRect(offsetParent);\n scale = getScale(offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n }\n }\n const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll, true) : createCoords(0);\n return {\n width: rect.width * scale.x,\n height: rect.height * scale.y,\n x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x + htmlOffset.x,\n y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y + htmlOffset.y\n };\n}\n\nfunction getClientRects(element) {\n return Array.from(element.getClientRects());\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable.\nfunction getDocumentRect(element) {\n const html = getDocumentElement(element);\n const scroll = getNodeScroll(element);\n const body = element.ownerDocument.body;\n const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n const y = -scroll.scrollTop;\n if (getComputedStyle(body).direction === 'rtl') {\n x += max(html.clientWidth, body.clientWidth) - width;\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\nfunction getViewportRect(element, strategy) {\n const win = getWindow(element);\n const html = getDocumentElement(element);\n const visualViewport = win.visualViewport;\n let width = html.clientWidth;\n let height = html.clientHeight;\n let x = 0;\n let y = 0;\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n const visualViewportBased = isWebKit();\n if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\n// Returns the inner client rect, subtracting scrollbars if present.\nfunction getInnerBoundingClientRect(element, strategy) {\n const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n const top = clientRect.top + element.clientTop;\n const left = clientRect.left + element.clientLeft;\n const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);\n const width = element.clientWidth * scale.x;\n const height = element.clientHeight * scale.y;\n const x = left * scale.x;\n const y = top * scale.y;\n return {\n width,\n height,\n x,\n y\n };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n let rect;\n if (clippingAncestor === 'viewport') {\n rect = getViewportRect(element, strategy);\n } else if (clippingAncestor === 'document') {\n rect = getDocumentRect(getDocumentElement(element));\n } else if (isElement(clippingAncestor)) {\n rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n } else {\n const visualOffsets = getVisualOffsets(element);\n rect = {\n x: clippingAncestor.x - visualOffsets.x,\n y: clippingAncestor.y - visualOffsets.y,\n width: clippingAncestor.width,\n height: clippingAncestor.height\n };\n }\n return rectToClientRect(rect);\n}\nfunction hasFixedPositionAncestor(element, stopNode) {\n const parentNode = getParentNode(element);\n if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n return false;\n }\n return getComputedStyle(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n const cachedResult = cache.get(element);\n if (cachedResult) {\n return cachedResult;\n }\n let result = getOverflowAncestors(element, [], false).filter(el => isElement(el) && getNodeName(el) !== 'body');\n let currentContainingBlockComputedStyle = null;\n const elementIsFixed = getComputedStyle(element).position === 'fixed';\n let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n const computedStyle = getComputedStyle(currentNode);\n const currentNodeIsContaining = isContainingBlock(currentNode);\n if (!currentNodeIsContaining && computedStyle.position === 'fixed') {\n currentContainingBlockComputedStyle = null;\n }\n const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && ['absolute', 'fixed'].includes(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n if (shouldDropCurrentNode) {\n // Drop non-containing blocks.\n result = result.filter(ancestor => ancestor !== currentNode);\n } else {\n // Record last containing block for next iteration.\n currentContainingBlockComputedStyle = computedStyle;\n }\n currentNode = getParentNode(currentNode);\n }\n cache.set(element, result);\n return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\nfunction getClippingRect(_ref) {\n let {\n element,\n boundary,\n rootBoundary,\n strategy\n } = _ref;\n const elementClippingAncestors = boundary === 'clippingAncestors' ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary);\n const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n const firstClippingAncestor = clippingAncestors[0];\n const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {\n const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));\n return {\n width: clippingRect.right - clippingRect.left,\n height: clippingRect.bottom - clippingRect.top,\n x: clippingRect.left,\n y: clippingRect.top\n };\n}\n\nfunction getDimensions(element) {\n const {\n width,\n height\n } = getCssDimensions(element);\n return {\n width,\n height\n };\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n const documentElement = getDocumentElement(offsetParent);\n const isFixed = strategy === 'fixed';\n const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n const offsets = createCoords(0);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isOffsetParentAnElement) {\n const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n } else if (documentElement) {\n // If the <body> scrollbar appears on the left (e.g. RTL systems). Use\n // Firefox with layout.scrollbar.side = 3 in about:config to test this.\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n const x = rect.left + scroll.scrollLeft - offsets.x - htmlOffset.x;\n const y = rect.top + scroll.scrollTop - offsets.y - htmlOffset.y;\n return {\n x,\n y,\n width: rect.width,\n height: rect.height\n };\n}\n\nfunction isStaticPositioned(element) {\n return getComputedStyle(element).position === 'static';\n}\n\nfunction getTrueOffsetParent(element, polyfill) {\n if (!isHTMLElement(element) || getComputedStyle(element).position === 'fixed') {\n return null;\n }\n if (polyfill) {\n return polyfill(element);\n }\n let rawOffsetParent = element.offsetParent;\n\n // Firefox returns the <html> element as the offsetParent if it's non-static,\n // while Chrome and Safari return the <body> element. The <body> element must\n // be used to perform the correct calculations even if the <html> element is\n // non-static.\n if (getDocumentElement(element) === rawOffsetParent) {\n rawOffsetParent = rawOffsetParent.ownerDocument.body;\n }\n return rawOffsetParent;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nfunction getOffsetParent(element, polyfill) {\n const win = getWindow(element);\n if (isTopLayer(element)) {\n return win;\n }\n if (!isHTMLElement(element)) {\n let svgOffsetParent = getParentNode(element);\n while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) {\n if (isElement(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) {\n return svgOffsetParent;\n }\n svgOffsetParent = getParentNode(svgOffsetParent);\n }\n return win;\n }\n let offsetParent = getTrueOffsetParent(element, polyfill);\n while (offsetParent && isTableElement(offsetParent) && isStaticPositioned(offsetParent)) {\n offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n }\n if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) {\n return win;\n }\n return offsetParent || getContainingBlock(element) || win;\n}\n\nconst getElementRects = async function (data) {\n const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n const getDimensionsFn = this.getDimensions;\n const floatingDimensions = await getDimensionsFn(data.floating);\n return {\n reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),\n floating: {\n x: 0,\n y: 0,\n width: floatingDimensions.width,\n height: floatingDimensions.height\n }\n };\n};\n\nfunction isRTL(element) {\n return getComputedStyle(element).direction === 'rtl';\n}\n\nconst platform = {\n convertOffsetParentRelativeRectToViewportRelativeRect,\n getDocumentElement,\n getClippingRect,\n getOffsetParent,\n getElementRects,\n getClientRects,\n getDimensions,\n getScale,\n isElement,\n isRTL\n};\n\n// https://samthor.au/2021/observing-dom/\nfunction observeMove(element, onMove) {\n let io = null;\n let timeoutId;\n const root = getDocumentElement(element);\n function cleanup() {\n var _io;\n clearTimeout(timeoutId);\n (_io = io) == null || _io.disconnect();\n io = null;\n }\n function refresh(skip, threshold) {\n if (skip === void 0) {\n skip = false;\n }\n if (threshold === void 0) {\n threshold = 1;\n }\n cleanup();\n const {\n left,\n top,\n width,\n height\n } = element.getBoundingClientRect();\n if (!skip) {\n onMove();\n }\n if (!width || !height) {\n return;\n }\n const insetTop = floor(top);\n const insetRight = floor(root.clientWidth - (left + width));\n const insetBottom = floor(root.clientHeight - (top + height));\n const insetLeft = floor(left);\n const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n const options = {\n rootMargin,\n threshold: max(0, min(1, threshold)) || 1\n };\n let isFirstUpdate = true;\n function handleObserve(entries) {\n const ratio = entries[0].intersectionRatio;\n if (ratio !== threshold) {\n if (!isFirstUpdate) {\n return refresh();\n }\n if (!ratio) {\n // If the reference is clipped, the ratio is 0. Throttle the refresh\n // to prevent an infinite loop of updates.\n timeoutId = setTimeout(() => {\n refresh(false, 1e-7);\n }, 1000);\n } else {\n refresh(false, ratio);\n }\n }\n isFirstUpdate = false;\n }\n\n // Older browsers don't support a `document` as the root and will throw an\n // error.\n try {\n io = new IntersectionObserver(handleObserve, {\n ...options,\n // Handle <iframe>s\n root: root.ownerDocument\n });\n } catch (e) {\n io = new IntersectionObserver(handleObserve, options);\n }\n io.observe(element);\n }\n refresh(true);\n return cleanup;\n}\n\n/**\n * Automatically updates the position of the floating element when necessary.\n * Should only be called when the floating element is mounted on the DOM or\n * visible on the screen.\n * @returns cleanup function that should be invoked when the floating element is\n * removed from the DOM or hidden from the screen.\n * @see https://floating-ui.com/docs/autoUpdate\n */\nfunction autoUpdate(reference, floating, update, options) {\n if (options === void 0) {\n options = {};\n }\n const {\n ancestorScroll = true,\n ancestorResize = true,\n elementResize = typeof ResizeObserver === 'function',\n layoutShift = typeof IntersectionObserver === 'function',\n animationFrame = false\n } = options;\n const referenceEl = unwrapElement(reference);\n const ancestors = ancestorScroll || ancestorResize ? [...(referenceEl ? getOverflowAncestors(referenceEl) : []), ...getOverflowAncestors(floating)] : [];\n ancestors.forEach(ancestor => {\n ancestorScroll && ancestor.addEventListener('scroll', update, {\n passive: true\n });\n ancestorResize && ancestor.addEventListener('resize', update);\n });\n const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update) : null;\n let reobserveFrame = -1;\n let resizeObserver = null;\n if (elementResize) {\n resizeObserver = new ResizeObserver(_ref => {\n let [firstEntry] = _ref;\n if (firstEntry && firstEntry.target === referenceEl && resizeObserver) {\n // Prevent update loops when using the `size` middleware.\n // https://github.com/floating-ui/floating-ui/issues/1740\n resizeObserver.unobserve(floating);\n cancelAnimationFrame(reobserveFrame);\n reobserveFrame = requestAnimationFrame(() => {\n var _resizeObserver;\n (_resizeObserver = resizeObserver) == null || _resizeObserver.observe(floating);\n });\n }\n update();\n });\n if (referenceEl && !animationFrame) {\n resizeObserver.observe(referenceEl);\n }\n resizeObserver.observe(floating);\n }\n let frameId;\n let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;\n if (animationFrame) {\n frameLoop();\n }\n function frameLoop() {\n const nextRefRect = getBoundingClientRect(reference);\n if (prevRefRect && (nextRefRect.x !== prevRefRect.x || nextRefRect.y !== prevRefRect.y || nextRefRect.width !== prevRefRect.width || nextRefRect.height !== prevRefRect.height)) {\n update();\n }\n prevRefRect = nextRefRect;\n frameId = requestAnimationFrame(frameLoop);\n }\n update();\n return () => {\n var _resizeObserver2;\n ancestors.forEach(ancestor => {\n ancestorScroll && ancestor.removeEventListener('scroll', update);\n ancestorResize && ancestor.removeEventListener('resize', update);\n });\n cleanupIo == null || cleanupIo();\n (_resizeObserver2 = resizeObserver) == null || _resizeObserver2.disconnect();\n resizeObserver = null;\n if (animationFrame) {\n cancelAnimationFrame(frameId);\n }\n };\n}\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nconst detectOverflow = detectOverflow$1;\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = offset$1;\n\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = autoPlacement$1;\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = shift$1;\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = flip$1;\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = size$1;\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = hide$1;\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = arrow$1;\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = inline$1;\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = limitShift$1;\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n */\nconst computePosition = (reference, floating, options) => {\n // This caches the expensive `getClippingElementAncestors` function so that\n // multiple lifecycle resets re-use the same result. It only lives for a\n // single call. If other functions become expensive, we can add them as well.\n const cache = new Map();\n const mergedOptions = {\n platform,\n ...options\n };\n const platformWithCache = {\n ...mergedOptions.platform,\n _c: cache\n };\n return computePosition$1(reference, floating, {\n ...mergedOptions,\n platform: platformWithCache\n });\n};\n\nexport { arrow, autoPlacement, autoUpdate, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, platform, shift, size };\n","import * as TooltipPrimitive from '@radix-ui/react-tooltip';\nimport type * as React from 'react';\nimport { TooltipContent } from './tooltip-content';\n\ntype RootProps = React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Root>;\n\nexport type TooltipProps = RootProps;\n\nexport const TooltipRoot: React.FC<Readonly<TooltipProps>> = ({\n children,\n ...props\n}) => <TooltipPrimitive.Root {...props}>{children}</TooltipPrimitive.Root>;\n\nexport const Tooltip = Object.assign(TooltipRoot, {\n Arrow: TooltipPrimitive.TooltipArrow,\n Provider: TooltipPrimitive.TooltipProvider,\n Content: TooltipContent,\n Trigger: TooltipPrimitive.TooltipTrigger,\n});\n","'use client';\n\nimport { use } from 'react';\nimport { cn } from '../utils';\nimport { Heading } from './heading';\nimport { IconHideSidebar } from './icons/icon-hide-sidebar';\nimport { ShellContext } from './shell';\nimport { Tooltip } from './tooltip';\n\ninterface TopbarProps extends React.ComponentProps<'header'> {\n emailTitle: string;\n children: React.ReactNode;\n}\n\nexport const Topbar = ({\n emailTitle,\n children,\n className,\n ...props\n}: TopbarProps) => {\n const { toggleSidebar } = use(ShellContext)!;\n\n return (\n <Tooltip.Provider>\n <header\n {...props}\n className={cn(\n 'flex h-14 items-center justify-between gap-3 border-slate-6 border-b px-3 py-2',\n className,\n )}\n >\n <div className=\"flex w-fit items-center gap-3\">\n <Tooltip>\n <Tooltip.Trigger asChild>\n <button\n className=\"hidden rounded-lg px-2 py-2 text-slate-11 transition duration-200 ease-in-out hover:bg-slate-5 hover:text-slate-12 lg:flex\"\n onClick={() => {\n toggleSidebar();\n }}\n type=\"button\"\n >\n <IconHideSidebar height={20} width={20} />\n </button>\n </Tooltip.Trigger>\n <Tooltip.Content>Show/hide sidebar</Tooltip.Content>\n </Tooltip>\n <div className=\"hidden items-center overflow-hidden text-center lg:flex\">\n <Heading as=\"h2\" className=\"truncate\" size=\"2\" weight=\"medium\">\n {emailTitle}\n </Heading>\n </div>\n </div>\n <div className=\"flex w-full items-center justify-between gap-3 lg:w-fit lg:justify-start\">\n {children}\n </div>\n </header>\n </Tooltip.Provider>\n );\n};\n","import * as React from 'react';\nimport type { IconElement, IconProps } from './icon-base';\nimport { IconBase } from './icon-base';\n\nexport const IconHideSidebar = React.forwardRef<\n IconElement,\n Readonly<IconProps>\n>(({ ...props }, forwardedRef) => (\n <IconBase ref={forwardedRef} {...props}>\n <path\n d=\"M15.4697 15.5303C15.7626 15.8232 16.2374 15.8232 16.5303 15.5303C16.8232 15.2374 16.8232 14.7626 16.5303 14.4697L14.0607 12L16.5303 9.53033C16.8232 9.23744 16.8232 8.76256 16.5303 8.46967C16.2374 8.17678 15.7626 8.17678 15.4697 8.46967L12.4697 11.4697C12.1768 11.7626 12.1768 12.2374 12.4697 12.5303L15.4697 15.5303Z\"\n fill=\"currentColor\"\n />\n <path\n clipRule=\"evenodd\"\n d=\"M19 2.25H5C3.48122 2.25 2.25 3.48122 2.25 5V19C2.25 20.5188 3.48122 21.75 5 21.75L19 21.75C20.5188 21.75 21.75 20.5188 21.75 19L21.75 5C21.75 3.48122 20.5188 2.25 19 2.25ZM19 20.25C19.6904 20.25 20.25 19.6904 20.25 19L20.25 5C20.25 4.30964 19.6904 3.75 19 3.75L9.75 3.75L9.75 20.25L19 20.25ZM8.25 20.25L8.25 3.75L5 3.75C4.30965 3.75 3.75 4.30965 3.75 5L3.75 19C3.75 19.6904 4.30965 20.25 5 20.25H8.25Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n />\n </IconBase>\n));\n\nIconHideSidebar.displayName = 'IconHideSidebar';\n"],"names":["init","CoreMode","DotLottieWebWorker","r","i","a","t","y","v","__create","Object","create","__defProp","defineProperty","__defProps","defineProperties","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropDescs","getOwnPropertyDescriptors","__getOwnPropNames","getOwnPropertyNames","__getOwnPropSymbols","getOwnPropertySymbols","__getProtoOf","getPrototypeOf","__hasOwnProp","prototype","hasOwnProperty","__propIsEnum","propertyIsEnumerable","__defNormalProp","obj","key","value","enumerable","configurable","writable","__spreadValues","b","prop","call","__spreadProps","__objRest","source","exclude","target","indexOf","__commonJS","cb","mod","__require","exports","__export","all","name","get","__copyProps","to","from","except","desc","__toESM","isNodeMode","__esModule","require_prism","module","Prism2","lang","uniqueId","plainTextGrammar","_","util","encode","tokens","Token","type","content","alias","Array","isArray","map","replace","o","toString","slice","objId","clone","deepClone","visited","id","forEach","getLanguage","element","m","exec","className","toLowerCase","parentElement","setLanguage","language","RegExp","classList","add","isActive","defaultActivation","no","contains","languages","plain","plaintext","text","txt","extend","redef","lang2","insertBefore","inside","before","insert","root","grammar","ret","token","newToken","old","DFS","callback","property","propertyType","plugins","highlight","env","code","hooks","run","Error","tokenize","stringify","rest","tokenList","LinkedList","addAfter","head","matchGrammar","toArray","hooks2","push","callbacks","length","matchedStr","s","e","tag","classes","attributes","aliases","apply","join","matchPattern","pattern","pos","lookbehind","lastIndex","match","lookbehindLength","index","startNode","startPos","rematch","patterns","j","cause","patternObj","greedy","global","flags","currentNode","next","tail","reach","str","removeCount","p","k","matchStr","after","removeFrom","prev","removeRange","wrapped","nestedRematch","list","node","newNode","count","array","default","Prism","markup","comment","prolog","doctype","string","punctuation","cdata","namespace","entity","title","n","html","mathml","svg","xml","ssml","atom","rss","regex","range","escape","backreference","anchor","group","quantifier","alternation","clike","keyword","boolean","function","number","operator","javascript","parameter","constant","hashbang","interpolation","addInlined","addAttribute","js","actionscript","coffeescript","delimiter","script","coffee","l","javadoclike","e2","e3","e4","addSupport","css","atrule","rule","url","selector","important","class","attribute","combinator","variable","hexcode","color","unit","n2","t2","yaml","scalar","directive","datetime","null","yml","markdown","blockquote","table","hr","bold","italic","strike","a2","r2","n3","t3","parseInt","Number","c","u","autoloader","Date","valueOf","Math","floor","random","loadLanguages","document","getElementById","innerHTML","textContent","amp","lt","gt","quot","String","fromCodePoint","fromCharCode","md","graphql","description","fragment","object","filter","d","g","s2","test","sql","identifier","f","h","toUpperCase","keys","a3","l2","u2","substring","splice","concat","Boolean","typescript","ts","jsx","tsx","builtin","decorator","at","generic","jsdoc","example","flow","unshift","n4js","annotation","n4jsd","method","imports","spread","arrow","dom","console","tagName","pop","openedBraces","swift","literal","label","nil","omit","kotlin","expression","char","kt","kts","macro","objectivec","objc","reason","rust","go","cpp","python","py","json","webmanifest","themes_exports","dracula","dracula_default","duotoneDark","duotoneDark_default","duotoneLight","duotoneLight_default","github","github_default","gruvboxMaterialDark","gruvboxMaterialDark_default","gruvboxMaterialLight","gruvboxMaterialLight_default","jettwaveDark","jettwaveDark_default","jettwaveLight","jettwaveLight_default","nightOwl","nightOwl_default","nightOwlLight","nightOwlLight_default","oceanicNext","oceanicNext_default","okaidia","okaidia_default","oneDark","oneDark_default","oneLight","oneLight_default","palenight","palenight_default","shadesOfPurple","shadesOfPurple_default","synthwave84","synthwave84_default","ultramin","ultramin_default","vsDark","vsDark_default","vsLight","vsLight_default","theme","backgroundColor","styles","types","style","fontStyle","theme2","opacity","textDecorationLine","fontWeight","theme3","theme4","theme5","theme6","colors","primitive","theme7","theme8","theme9","theme10","theme11","backgroundImage","textShadow","cursor","theme12","theme13","theme14","theme15","theme16","theme17","theme18","theme19","theme20","useGetLineProps","themeDictionary","_a","_b","line","output","useGetTokenProps","styleForToken","empty","display","assign","children","newlineRe","normalizeEmptyLines","appendTypes","typesSize","normalizeTokens","typeArrStack","tokenArrStack","tokenArrIndexStack","tokenArrSizeStack","stackIndex","currentLine","acc","tokenArr","splitByNewlines","split","newlineCount","i2","normalizeTokens_default","useTokenize","prism","prismConfig","themeToDict","theme21","themeDict","reduce","themeEntry","languages2","includes","accStyle","themeToDict_default","Highlight","_language","getLineProps","getTokenProps","Highlight2","props","useCallbackRef","callbackRef","current","args","IconHideSidebar","forwardedRef","ref","fill","clipRule","fillRule","displayName"],"mappings":"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IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,EAAA,CAAA,CAAA,KAAA,CAAA,sBAAA,CAAA,GAAA,EAAA,IAAA,eAAA,CAAA,GAAA,EAAA,IAAA,OAAA,GAAA,OAAA,IAAA,eAAA,CAAA,GAAA,CAAA,CAAA,ECtxEvB,EAAb,KAA2B,CAAA,aAAA,CAAA,EAAA,IAAA,CACR,CAAA,QAAA,CAAA,CAAW,IAAI,IAAqB,CAAA,EAAA,IAAA,CAEpC,CAAA,mBAAA,CAAA,CAAsB,IAAI,IAAqB,CAEhE,UAAiB,CAAA,CAA0B,CAKzC,OAJK,IAAA,CAAK,QAAA,CAAS,GAAA,CAAI,EAAS,EAC9B,IAAA,CAAK,QAAA,CAAS,GAAA,CAAI,EAAU,IAAIC,GAAqB,AAGhD,IAAA,CAAK,QAAA,CAAS,GAAA,CAAI,EAAS,CAGpC,wBAA+B,CAAA,CAAqB,CAAA,CAAwB,CAC1E,IAAA,CAAK,mBAAA,CAAoB,GAAA,CAAI,EAAa,EAAS,CAGrD,4BAAmC,CAAA,CAA2B,CAC5D,IAAA,CAAK,mBAAA,CAAoB,MAAA,CAAO,EAAY,CAG9C,YAAmB,CAAA,CAAkB,CAAA,CAA4C,CAAA,CAAiC,CAChH,IAAA,CAAK,SAAA,CAAU,EAAS,CAAC,WAAA,CAAY,EAAS,GAAY,EAAE,CAAC,CAG/D,iBAAwB,CAAA,CAA4C,CAAA,CAAiC,CACnG,IAAA,CAAK,QAAA,CAAS,OAAA,CAAA,AAAS,GAAW,CAChC,EAAO,WAAA,CAAY,EAAS,GAAY,EAAE,CAAC,EAC3C,CAGJ,gBAAuB,CAAA,CAAwB,CAC7C,IAAM,EAAS,IAAA,CAAK,QAAA,CAAS,GAAA,CAAI,EAAS,CAEtC,IACF,CADE,CACK,SAAA,EAAW,CAClB,IAAA,CAAK,QAAA,CAAS,MAAA,CAAO,EAAA,CAAS,CAAA,ECdpC,SAAS,EACP,CAAA,CACA,CAAA,CACmC,CACnC,GAAiC,CAAA,CAAA,CAAA,CAA7B,OAAO,mBAAqC,aAAkB,kBAAmB,CACnF,GAAM,CAAE,OAAQ,CAAA,CAAc,MAAO,CAAA,CAAA,CAAgB,EAAO,qBAAA,EAAuB,CAEnF,GAAqB,IAAjB,GAAsC,IAAhB,EACxB,MAAO,CAAE,MAAO,EAAc,EAAkB,OAAQ,EAAe,CAAA,CAAkB,CAI7F,MAAO,CAAE,MAAO,EAAO,KAAA,CAAO,OAAQ,EAAO,MAAA,CAAQ,CAGvD,SAAS,GAA2B,CAClC,OAAO,KAAK,GAAA,EAAK,CAAC,QAAA,CAAS,GAAG,CAAG,KAAK,MAAA,EAAQ,CAAC,QAAA,CAAS,GAAG,CAAC,MAAA,CAAO,EAAG,EAAE,CAoC1E,IAAa,EAAb,MAAa,CAAgB,CAkE3B,YAAmB,CAAA,CAAwC,CACzD,GAAA,EAAA,IAAA,CAhEe,CAAA,aAAA,CAAA,CAAgB,IAAI,EAAc,CAAA,EAAA,IAAA,CAElC,CAAA,GAAA,CAAA,CAAA,IAAA,CAAA,EAAA,CAAA,EAAA,IAAA,CAEA,CAAA,OAAA,CAAA,CAAA,IAAA,CAAA,EAAA,CAAA,EAAA,IAAA,CAET,CAAA,OAAA,CAAA,CAAA,IAAA,CAAA,EAAA,CAAA,EAAA,IAAA,CAEA,CAAA,uBAAA,CAAA,CAAkD,CACxD,UAAW,EACX,QAAS,EAAE,CACX,SAAU,CAAA,EACV,gBAAiB,EAAA,CACjB,aAAc,EACd,SAAU,EACV,KAAM,CAAA,EACN,KAAM,CAAA,OAAA,CAAA,CACN,QAAS,CAAC,EAAG,EAAE,CACf,gBAAiB,EACjB,MAAO,EACP,YAAa,EACb,SAAU,CAAA,EACV,UAAW,CAAA,EACX,SAAU,CAAA,EACV,UAAW,CAAA,EACX,SAAU,CAAA,EACV,sBAAuB,CAAA,EACvB,aAAc,CACZ,kBAAkB,AAAe,CAClC,CACD,kBAAmB,EAAA,CACnB,cAAe,EAAA,CACf,OAAQ,IAAA,CAAA,EACR,OAAQ,EAAA,CACR,QAAS,CAAA,EACT,SAAU,IAAA,CACX,CAAA,CAAA,EAAA,IAAA,CAIO,CAAA,QAAA,CAAA,CAAoB,CAAA,EAAA,CAAA,EAAA,IAAA,CAGpB,CAAA,aAAA,CAAA,CAAsD,KAAA,CAAA,EAAA,IAAA,CAEtD,CAAA,iBAAA,CAAA,CAA4D,KAAA,CAAA,EAAA,IAAA,CAE5D,CAAA,mBAAA,CAAA,CAA8D,KAAA,CAAA,EAAA,IAAA,CAE9D,CAAA,mBAAA,CAAA,CAA8D,KAAA,CAAA,EAAA,IAAA,CAE9D,CAAA,oBAAA,CAAA,CAA+D,KAAA,CAAA,EAAA,IAAA,CAE/D,CAAA,oBAAA,CAAA,CAA+D,KAAA,CAAA,EAAA,IAAA,CAE/D,CAAA,cAAA,CAAA,CAAgC,KAAA,CASlC,EAAO,MAAA,CAAQ,CACjB,IAAM,EAAe,AAA6B,CAAA,CAAA,CAAA,QAAtB,mBAAqC,EAAO,MAAA,YAAkB,kBACpF,EAAoB,AAA2B,CAAA,CAAA,CAAA,QAApB,iBAAmC,EAAO,MAAA,YAAkB,gBAE7F,GAAI,CAAC,GAAgB,CAAC,EACpB,MAAU,MAAM,CAAA,oEAAA,CAAA,CAAuE,CAI3F,IAAA,CAAK,OAAA,CAAW,EAAO,MAAA,EAAkD,KAEzE,IAAA,CAAK,GAAA,CAAM,CAAA,UAAA,EAAa,GAAkB,CAAA,CAAA,CAC1C,IAAM,EAAW,EAAO,QAAA,EAAY,CAAA,aAAA,CAAA,CAGpC,IAAA,CAAK,OAAA,CAAU,EAAgB,cAAA,CAAe,SAAA,CAAU,EAAS,CAEjE,EAAgB,cAAA,CAAe,uBAAA,CAAwB,IAAA,CAAK,GAAA,CAAK,EAAS,CAEtE,EAAgB,QAAA,EAClB,IAAA,CAAK,YAAA,CAAa,CAAA,UAAA,CAAA,CAAc,CAAE,IAAK,EAAgB,QAAA,CAAU,CAAC,CAGpE,IAAM,EAAa,CACjB,GAAG,CAAA,CACH,aAAc,CACZ,GAAG,EAAO,YAAA,CACV,iBAAkB,EAAO,YAAA,EAAc,oBAAoB,AAE3D,GAF0E,eAEvD,EAAO,YAAA,EAAc,mBAAqB,CAAA,CAAA,CAC9D,CACF,AAED,KAAA,CAAK,cAAA,CAAiB,EAGlB,IAAA,CAAK,OAAA,GACP,CADO,GACP,CAAK,OAAA,CAAQ,EAAW,CACxB,IAAA,CAAK,cAAA,CAAiB,IAAA,CAAA,CAIxB,IAAA,CAAK,OAAA,CAAQ,gBAAA,CAAiB,CAAA,OAAA,CAAA,CAAW,IAAA,CAAK,kBAAA,CAAmB,IAAA,CAAK,IAAA,CAAK,CAAC,CAG9E,MAAc,mBAAmB,CAAA,CAAoC,CACnE,IAAM,EA4BF,EAAM,IAAA,CAEV,GAAI,CAAC,EAAY,EAAA,GACY,CADZ,AACY,MAAA,CAAA,GAAvB,EAAY,MAAA,EAAuB,EAAY,MAAA,CAAO,UAAA,GAAe,IAAA,CAAK,GAAA,GAC5E,CAD4E,KACtE,IAAA,CAAK,6BAAA,EAA+B,CAC1C,IAAA,CAAK,aAAA,CAAc,QAAA,CAAS,EAAY,MAAA,CAAO,KAAA,CAAM,AAaD,CAAA,CAXhD,AAgBqB,CAAA,IAhBP,IAAA,CAAK,CAgBE,CAAA,GAAvB,EAAY,AAhBS,MAgBT,EAA2B,EAAY,EAhBX,IAgBW,CAAO,UAAA,GAAe,GAhBjC,CACpC,AAeqE,CAAK,GAf1E,AAe0E,CAfrE,EAgBX,CADgF,KAC1E,IAAA,CAAK,UAhBA,CAAwB,YAAA,CAAa,KAgBrC,EAA+B,CAC1C,IAAA,CAAK,IAjB2C,IAAA,CAC5C,EAAkB,EAgBjB,CAAc,IAhBG,CAAQ,GAgBX,CAAS,AAhBE,CAAK,CAgBK,MAhBL,AAgBK,CAAO,CAhBH,IAAA,CAAK,AAgBF,CAAM,CAb5C,AAgBgB,CAAA,CAhBI,IAAA,CAAK,GAgBT,CAAA,GAhBS,AAgBhC,CAhBwC,CAgB5B,GAfR,GAeQ,EAA0B,CAf5B,CAewC,GAfxC,CAAK,EAemC,CAAO,GAf1C,EAAQ,GAInB,EAWqD,EAXrD,CAAK,AAW+D,IAAA,CAAK,GAAA,EAC/E,IAAA,CAAK,QAZM,CAAwB,IAY9B,CAAc,OAZgB,CAYhB,AAZ6B,CAYpB,EAAY,MAAA,CAZQ,AAYD,IAX3C,CAW2C,CAAM,AAX5B,CAcA,CAAA,KAdA,CAAQ,IAAA,AAcR,CAda,AAcb,GAAvB,EAAY,EAdwB,EAAS,EAcjC,EAA2B,AAdM,EAcM,MAAA,CAAO,UAAA,GAAe,IAAA,CAAK,GAAA,GAChF,CADgF,KAC1E,IAAA,CAAK,6BAAA,EAA+B,CAC1C,IAAA,CAAK,uBAAA,CAAwB,QAAA,CAAW,CAAA,EACxC,IAAA,CAAK,aAAA,CAAc,QAAA,CAAS,EAAY,MAAA,CAAO,MAAA,CAAM,CAG5B,CAAA,OAAA,CAAA,GAAvB,EAAY,MAAA,EAAwB,EAAY,MAAA,CAAO,UAAA,GAAe,IAAA,CAAK,GAAA,GAC7E,CAD6E,GAC7E,CAAK,uBAAA,CAAwB,YAAA,CAAgB,EAAY,MAAA,CAAO,KAAA,CAAqB,YAAA,CACrF,IAAA,CAAK,aAAA,CAAc,QAAA,CAAS,EAAY,MAAA,CAAO,KAAA,CAAM,EAG5B,CAAA,QAAA,CAAA,GAAvB,EAAY,MAAA,EAAyB,EAAY,MAAA,CAAO,UAAA,GAAe,IAAA,CAAK,GAAA,EAC9E,IAAA,CAAK,aAAA,CAAc,QAAA,CAAS,EAAY,MAAA,CAAO,KAAA,CAAM,CAG5B,CAAA,QAAA,CAAA,GAAvB,EAAY,MAAA,EAAyB,EAAY,MAAA,CAAO,UAAA,GAAe,IAAA,CAAK,GAAA,GAC9E,CAD8E,KACxE,IAAA,CAAK,6BAAA,EAA+B,CAC1C,IAAA,CAAK,aAAA,CAAc,QAAA,CAAS,EAAY,MAAA,CAAO,KAAA,CAAM,EAG5B,CAAA,OAAA,CAAA,GAAvB,EAAY,MAAA,EAAwB,EAAY,MAAA,CAAO,UAAA,GAAe,IAAA,CAAK,GAAA,GAC7E,CAD6E,KACvE,IAAA,CAAK,6BAAA,EAA+B,CAC1C,IAAA,CAAK,aAAA,CAAc,QAAA,CAAS,EAAY,MAAA,CAAO,MAAA,CAAM,CAG5B,CAAA,MAAA,CAAA,GAAvB,EAAY,MAAA,EAAuB,EAAY,MAAA,CAAO,UAAA,GAAe,IAAA,CAAK,GAAA,GAC5E,CAD4E,KACtE,IAAA,CAAK,6BAAA,EAA+B,CAC1C,IAAA,CAAK,aAAA,CAAc,QAAA,CAAS,EAAY,MAAA,CAAO,MAAA,CAAM,CAG5B,CAAA,MAAA,CAAA,GAAvB,EAAY,MAAA,EAAuB,EAAY,MAAA,CAAO,UAAA,GAAe,IAAA,CAAK,GAAA,GAC5E,CAD4E,KACtE,IAAA,CAAK,6BAAA,EAA+B,CAC1C,IAAA,CAAK,aAAA,CAAc,QAAA,CAAS,EAAY,MAAA,CAAO,MAAA,CAAM,CAG5B,CAAA,WAAA,CAAA,GAAvB,EAAY,MAAA,EAA4B,EAAY,MAAA,CAAO,UAAA,GAAe,IAAA,CAAK,GAAA,GACjF,CADiF,KAC3E,IAAA,CAAK,6BAAA,EAA+B,CAC1C,IAAA,CAAK,aAAA,CAAc,QAAA,CAAS,EAAY,MAAA,CAAO,MAAA,CAAM,CAGnD,AAAuB,CAAA,aAAA,CAAA,KAAX,MAAA,EAA8B,EAAY,MAAA,CAAO,UAAA,GAAe,IAAA,CAAK,GAAA,EAEnF,IAAA,CAAK,aAAA,CAAc,QAAA,CAAS,EAAY,MAAA,CAAO,KAAA,CAAM,CAG5B,CAAA,OAAA,CAAA,GAAvB,EAAY,MAAA,EAAwB,EAAY,MAAA,CAAO,UAAA,GAAe,IAAA,CAAK,GAAA,GAC7E,CAD6E,KACvE,IAAA,CAAK,6BAAA,EAA+B,CAC1C,IAAA,CAAK,aAAA,CAAc,QAAA,CAAS,EAAY,MAAA,CAAO,MAAA,CAAM,CAG5B,CAAA,MAAA,CAAA,GAAvB,EAAY,MAAA,EAAuB,EAAY,MAAA,CAAO,UAAA,GAAe,IAAA,CAAK,GAAA,GAC5E,CAD4E,KACtE,IAAA,CAAK,6BAAA,EAA+B,CAC1C,IAAA,CAAK,aAAA,CAAc,QAAA,CAAS,EAAY,MAAA,CAAO,MAAA,CAAM,CAG5B,CAAA,mBAAA,CAAA,GAAvB,EAAY,MAAA,EAAoC,EAAY,MAAA,CAAO,UAAA,GAAe,IAAA,CAAK,GAAA,GACzF,CADyF,KACnF,IAAA,CAAK,6BAAA,EAA+B,CAC1C,IAAA,CAAK,2BAAA,EAA6B,CAClC,IAAA,CAAK,aAAA,CAAc,QAAA,CAAS,EAAY,MAAA,CAAO,MAAA,CAAM,CAG5B,CAAA,kBAAA,CAAA,GAAvB,EAAY,MAAA,EAAmC,EAAY,MAAA,CAAO,UAAA,GAAe,IAAA,CAAK,GAAA,EACxF,EADwF,KAClF,IAAA,CAAK,6BAAA,EAA+B,CAC1C,IAAA,CAAK,6BAAA,EAA+B,CACpC,IAAA,CAAK,aAAA,CAAc,QAAA,CAAS,EAAY,MAAA,CAAO,MAAA,CAAM,CAG5B,CAAA,wBAAA,CAAA,GAAvB,EAAY,MAAA,EAAyC,EAAY,MAAA,CAAO,UAAA,GAAe,IAAA,CAAK,GAAA,GAC9F,CAD8F,KACxF,IAAA,CAAK,6BAAA,EAA+B,CAC1C,IAAA,CAAK,aAAA,CAAc,QAAA,CAAS,EAAY,MAAA,CAAO,MAAA,CAAM,CAG5B,CAAA,0BAAA,CAAA,GAAvB,EAAY,MAAA,EAA2C,EAAY,MAAA,CAAO,UAAA,GAAe,IAAA,CAAK,GAAA,GAChG,CADgG,KAC1F,IAAA,CAAK,6BAAA,EAA+B,CAC1C,IAAA,CAAK,aAAA,CAAc,QAAA,CAAS,EAAY,MAAA,CAAO,MAAA,CAAM,CAG5B,CAAA,uBAAA,CAAA,GAAvB,EAAY,MAAA,EAAwC,EAAY,MAAA,CAAO,UAAA,GAAe,IAAA,CAAK,GAAA,GAC7F,CAD6F,KACvF,IAAA,CAAK,6BAAA,EAA+B,CAC1C,IAAA,CAAK,aAAA,CAAc,QAAA,CAAS,EAAY,MAAA,CAAO,MAAA,CAAM,CAG5B,CAAA,yBAAA,CAAA,GAAvB,EAAY,MAAA,EAA0C,EAAY,MAAA,CAAO,UAAA,GAAe,IAAA,CAAK,GAAA,GAC/F,CAD+F,KACzF,IAAA,CAAK,6BAAA,EAA+B,CAC1C,IAAA,CAAK,aAAA,CAAc,QAAA,CAAS,EAAY,MAAA,CAAO,MAAA,CAAM,CAG5B,CAAA,mBAAA,CAAA,GAAvB,EAAY,MAAA,EAAoC,EAAY,MAAA,CAAO,UAAA,GAAe,IAAA,CAAK,GAAA,GACzF,CADyF,KACnF,IAAA,CAAK,6BAAA,EAA+B,CAC1C,IAAA,CAAK,aAAA,CAAc,QAAA,CAAS,EAAY,MAAA,CAAO,KAAA,CAAM,EAI9B,CAAA,qCAAA,CAAA,GAAvB,EAAY,MAAA,EACZ,EAAY,MAAA,CAAO,UAAA,GAAe,IAAA,CAAK,GAAA,GAEvC,CAFuC,KAEjC,IAAA,CAAK,6BAAA,EAA+B,CAC1C,IAAA,CAAK,aAAA,CAAc,QAAA,CAAS,EAAY,MAAA,CAAO,MAAA,CAAM,CAK9B,CAAA,qCAAA,CAAA,GAAvB,EAAY,MAAA,EACZ,EAAY,MAAA,CAAO,UAAA,GAAe,IAAA,CAAK,GAAA,GAEvC,CAFuC,KAEjC,IAAA,CAAK,6BAAA,EAA+B,CAC1C,IAAA,CAAK,aAAA,CAAc,QAAA,CAAS,EAAY,MAAA,CAAO,MAAA,CAAM,CAG5B,CAAA,oCAAA,CAAA,GAAvB,EAAY,MAAA,EAAqD,EAAY,MAAA,CAAO,UAAA,GAAe,IAAA,CAAK,GAAA,EAC1G,EAD0G,KACpG,IAAA,CAAK,6BAAA,EAA+B,CAC1C,IAAA,CAAK,aAAA,CAAc,QAAA,CAAS,EAAY,MAAA,CAAO,MAAA,CAAM,CAGnD,AAAuB,CAAA,wBAAA,CAAA,KAAX,MAAA,EAAyC,EAAY,MAAA,CAAO,UAAA,GAAe,IAAA,CAAK,GAAA,GAC9F,CAD8F,KACxF,IAAA,CAAK,6BAAA,EAA+B,CAC1C,IAAA,CAAK,aAAA,CAAc,QAAA,CAAS,EAAY,MAAA,CAAO,KAAA,CAAM,EAG5B,CAAA,6BAAA,CAAA,GAAvB,EAAY,MAAA,EAA8C,EAAY,MAAA,CAAO,UAAA,GAAe,IAAA,CAAK,GAAA,EAAK,OJnNxG,EACF,EACA,CIkNE,OAAM,IAAA,CAAK,6BAAA,EAA+B,CAE1C,IAAM,EAAgB,EAAY,MAAA,CAAO,KAAA,CAErC,EAAc,OAAA,CAAQ,UAAA,CAAW,CAAA,SAAA,CAAA,CAAY,GJpNnD,AAAyB,CIqNrB,AJrNqB,IAAA,GAJA,CAFvB,EAAU,AI2NM,EAAc,OAAA,CJ3NZ,OAAA,CAAQ,CAAA,SAAA,CAAA,CAAa,EAAA,CAAG,EAEX,OAAA,CAAQ,CAAA,WAAA,CAAA,CAAc,GAMzD,EAAY,EACZ,EAAS,CAAA,OAAA,CAAA,EAGT,EAAY,AAHH,EAGW,SAAA,CAAU,EAAG,EAAqB,CACtD,EAAS,EAAQ,SAAA,CAAU,EAAuB,GAAA,CAAqB,CAGzE,OAAO,IAAA,CAAK,EAAW,EAAA,CI2MqB,CAAA,CAM5C,MAAc,QAAQ,CAAA,CAA+B,KAK/C,EAJJ,GAAI,CAAC,IAAA,CAAK,OAAA,CACR,OAKF,EAAI,IAAA,CAAK,OAAA,YAAmB,kBACd,IAAA,CAAK,OAAA,CAAQ,0BAAA,EAA4B,CAEzC,IAAA,CAAK,OAAA,CAGnB,GAAM,CAAE,WAAA,CAAA,CAAA,CAAe,MAAM,IAAA,CAAK,YAAA,CAChC,CAAA,MAAA,CAAA,CACA,CACE,WAAY,IAAA,CAAK,GAAA,CACjB,OAAQ,CACN,GAAG,CAAA,CACH,OAAQ,CAAA,CACT,CACD,GAAG,EAAc,IAAA,CAAK,OAAA,CAAS,EAAO,YAAA,EAAc,oBAAmC,AAAf,AAAgB,CACzF,CACD,CAFyF,AAExF,EAAU,CACZ,CAED,GAAI,IAAe,IAAA,CAAK,GAAA,CACtB,MAAU,MAAM,CAAA,oBAAA,CAAA,CAAuB,CAGzC,IAAA,CAAK,QAAA,CAAW,CAAA,EAEhB,MAAM,IAAA,CAAK,6BAAA,EAA+B,CAG5C,IAAW,WAAoB,CAC7B,OAAO,IAAA,CAAK,uBAAA,CAAwB,SAAA,CAGtC,IAAW,UAAoB,CAC7B,OAAO,IAAA,CAAK,uBAAA,CAAwB,QAAA,CAGtC,IAAW,WAAqB,CAC9B,OAAO,IAAA,CAAK,uBAAA,CAAwB,SAAA,CAGtC,IAAW,UAAoB,CAC7B,OAAO,IAAA,CAAK,uBAAA,CAAwB,QAAA,CAGtC,IAAW,WAAqB,CAC9B,OAAO,IAAA,CAAK,uBAAA,CAAwB,SAAA,CAGtC,IAAW,cAAuB,CAChC,OAAO,IAAA,CAAK,uBAAA,CAAwB,YAAA,CAGtC,IAAW,UAAoB,CAC7B,OAAO,IAAA,CAAK,uBAAA,CAAwB,QAAA,CAGtC,IAAW,iBAA0B,CACnC,OAAO,IAAA,CAAK,uBAAA,CAAwB,eAAA,CAGtC,IAAW,aAAsB,CAC/B,OAAO,IAAA,CAAK,uBAAA,CAAwB,WAAA,CAGtC,IAAW,SAAwC,CACjD,OAAO,IAAA,CAAK,uBAAA,CAAwB,OAAA,CAGtC,IAAW,OAAgB,CACzB,OAAO,IAAA,CAAK,uBAAA,CAAwB,KAAA,CAGtC,IAAW,UAAmB,CAC5B,OAAO,IAAA,CAAK,uBAAA,CAAwB,QAAA,CAGtC,IAAW,SAAmB,CAC5B,OAAO,IAAA,CAAK,uBAAA,CAAwB,OAAA,CAGtC,IAAW,MAAa,CACtB,OAAO,IAAA,CAAK,uBAAA,CAAwB,IAAA,CAGtC,IAAW,QAAqD,CAC9D,OAAO,IAAA,CAAK,OAAA,CAWd,MAAa,UAAU,CAAA,CAA4D,CACjF,IAAM,EAA4C,CAAA,CAAA,CAAA,CAA7B,OAAO,mBAAqC,aAAkB,kBAC7E,EAA+C,CAAA,CAAA,CAAA,CAA3B,OAAO,iBAAmC,aAAkB,gBAEtF,GAAI,CAAC,GAAgB,CAAC,EACpB,MAAU,MAAM,CAAA,oEAAA,CAAA,CAAuE,CAGrF,GAAA,IAAA,CAAK,OAAA,GAAY,EAErB,CAAA,GAAI,IAAA,CAAK,QAAA,EAAY,AAAiB,WAAjB,CAAK,OAAA,CACxB,MAAU,MAAM,CAAA,sFAAA,CAAA,CAAyF,AAG3G,KAAA,CAAK,OAAA,CAAU,EAEX,CAAC,IAAA,CAAK,QAAA,EAAY,IAAA,CAAK,cAAA,GACzB,CADyB,KACnB,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK,cAAA,CAAe,CACvC,IAAA,CAAK,cAAA,CAAiB,IAAA,CAAA,CAAA,CAI1B,IAAW,UAAoB,CAC7B,OAAO,IAAA,CAAK,uBAAA,CAAwB,QAAA,CAGtC,IAAW,iBAA0B,CACnC,OAAO,IAAA,CAAK,uBAAA,CAAwB,eAAA,CAGtC,IAAW,MAAgB,CACzB,OAAO,IAAA,CAAK,uBAAA,CAAwB,IAAA,CAGtC,IAAW,uBAAiC,CAC1C,OAAO,IAAA,CAAK,uBAAA,CAAwB,qBAAA,CAGtC,IAAW,cAA6B,CACtC,OAAO,IAAA,CAAK,uBAAA,CAAwB,YAAA,CAGtC,IAAW,UAA4B,CACrC,OAAO,IAAA,CAAK,uBAAA,CAAwB,QAAA,CAGtC,IAAW,mBAAwC,CACjD,OAAO,IAAA,CAAK,uBAAA,CAAwB,iBAAA,CAGtC,IAAW,QAA6B,CACtC,OAAO,IAAA,CAAK,uBAAA,CAAwB,MAAA,CAGtC,IAAW,eAAoC,CAC7C,OAAO,IAAA,CAAK,uBAAA,CAAwB,aAAA,CAGtC,IAAW,QAA6B,CACtC,OAAO,IAAA,CAAK,uBAAA,CAAwB,MAAA,CAQtC,MAAa,MAAsB,CAC5B,IAAA,CAAK,QAAA,GAEV,CAFU,KAEJ,IAAA,CAAK,YAAA,CAAa,CAAA,IAAA,CAAA,CAAQ,CAAE,WAAY,IAAA,CAAK,GAAA,CAAK,CAAC,CACzD,MAAM,IAAA,CAAK,6BAAA,EAA+B,AAa7B,CAAQ,CALnB,AAcJ,KAbI,CAaS,GAbT,CAAK,GAa2B,CAC7B,GAdE,CAcF,CAAK,QAAA,EAdgB,CAgB1B,CAFU,KAEJ,IAAA,CAAK,SAfT,GAeS,CAfT,AAesB,CAfjB,AAeiB,KAAA,CAAA,CAAS,CAAE,WAAY,IAfxC,AAewC,CAfhB,AAeqB,GAAA,CAAK,CAAC,CAC1D,MAhB+B,AAgBzB,CAhBsC,GAgBtC,CAAK,aAhBiC,IAC1C,CAAC,EAAoB,IAAA,CAAK,IAejB,EAAA,CAfiB,AAec,CAfN,AAuBtC,IArBI,EAqBS,IArBH,EAqByB,CAC5B,CAtBG,CAAK,EAsBR,CAAK,GAtBG,KAsBH,GAEV,CAFU,KAEJ,IAAA,CAAK,YAAA,CAAa,CAAA,IAAA,CAAA,CAAQ,CAAE,WAAY,IAAA,CAAK,GAAA,CAAK,CAAC,CACzD,MAAM,IAAA,CAAK,6BAAA,EAAA,CAA+B,CAS5C,MAAa,SAAS,CAAA,CAA8B,CAC7C,IAAA,CAAK,QAAA,GAEV,CAFU,KAEJ,IAAA,CAAK,YAAA,CAAa,CAAA,QAAA,CAAA,CAAY,CAAE,WAAY,IAAA,CAAK,GAAA,CAAK,MAAA,CAAA,CAAO,CAAC,CACpE,MAAM,IAAA,CAAK,6BAAA,EAAA,CAA+B,CAG5C,MAAa,QAAQ,CAAA,CAA2B,CACzC,IAAA,CAAK,QAAA,GAEV,CAFU,KAEJ,IAAA,CAAK,YAAA,CAAa,CAAA,OAAA,CAAA,CAAW,CAAE,WAAY,IAAA,CAAK,GAAA,CAAK,KAAA,CAAA,CAAM,CAAC,CAClE,MAAM,IAAA,CAAK,6BAAA,EAAA,CAA+B,CAG5C,MAAa,SAAS,CAAA,CAA8B,CAC7C,IAAA,CAAK,QAAA,GAEV,CAFU,KAEJ,IAAA,CAAK,YAAA,CAAa,CAAA,QAAA,CAAA,CAAY,CAAE,MAAA,EAAO,WAAY,IAAA,CAAK,GAAA,CAAK,CAAC,CACpE,MAAM,IAAA,CAAK,6BAAA,EAAA,CAA+B,CAG5C,MAAa,WAAW,CAAA,CAAe,CAAA,CAA4B,CAC5D,IAAA,CAAK,QAAA,GAEV,CAFU,KAEJ,IAAA,CAAK,YAAA,CAAa,CAAA,UAAA,CAAA,CAAc,CAAE,WAAY,IAAA,CAAK,GAAA,CAAK,QAAS,CAAC,EAAO,EAAI,CAAE,CAAC,CACtF,MAAM,IAAA,CAAK,6BAAA,EAAA,CAA+B,CAG5C,MAAa,gBAAgB,CAAA,CAA2C,CACtE,GAAI,CAAC,IAAA,CAAK,QAAA,CAAU,OAEpB,GAAM,CAAE,iBAAA,CAAA,CAAkB,kBAAA,CAAA,CAAmB,QAAA,CAAA,CAAS,GAAG,EAAA,CAAe,CAExE,OAAM,IAAA,CAAK,YAAA,CAAa,CAAA,eAAA,CAAA,CAAmB,CACzC,WAAY,IAAA,CAAK,GAAA,CACjB,aAAc,CACZ,GAAG,IAAA,CAAK,uBAAA,CAAwB,YAAA,CAChC,GAAG,CAAA,CAEH,iBAAkB,GJvhBjB,EIuhBqC,AACtC,EJxhBC,CIuhBoD,AJvhBpD,CAFK,IAAa,OAAO,GI0hBP,GAAqB,CAAA,EACxC,GAAgB,IJ3hBU,AI2hBV,CAAA,EJ3hB6B,CAAA,CI2hBzC,GAAyB,AJzhBjB,CIyhBmB,AJzhBnB,IAAK,IIyhBc,CAAA,CAAA,AAAS,CACzC,CACF,CAAC,CAEF,MAAM,IAAA,CAAK,6BAAA,EAA+B,AAqBf,CAM7B,CAzBM,KAAc,AAyBP,IAzBO,CAAK,OAAA,YAAmB,CAyBN,CAAA,CAA+C,CAC9E,IAAA,CAAK,QAAA,GAEV,CAFU,AA1BgC,CACpC,IAAA,AA2BA,CA3BK,GA2BL,CAAK,YAAA,CAAa,CAAA,KA3Bb,CAAwB,YAAA,CAAa,KA2BxB,CAAA,CAA4B,CAAE,EA3BN,GAC5C,EAAqB,IA0ByC,GA1BzC,CAAQ,AA0BiC,CAAK,GA1BtC,AA0BsC,CA1BjC,AA0BsC,OA1BtC,EAAS,IAAA,CAAK,GAEhD,EAAqB,GAwBmD,CAAA,CAAuB,CAAC,CACpG,EAzByB,CAAU,GAyB7B,CAzB6B,CAAK,EAyBlC,CAAK,IAzB6B,CAAQ,EAG1C,IAAA,CAAK,iBAsBA,EAAA,CAA+B,CAG5C,EAzBa,CAAwB,GAyBxB,SAzBwB,AAyBf,CAzB4B,AAyB5B,CAAmC,CACvD,GAAI,CAAC,IAAA,CAAK,MA1BsC,EA0BtC,CA1BsC,AA0B5B,CAzBhB,EAAkB,GAyBK,CAAA,EAE3B,CA3BsB,CAAQ,EA2BxB,EA3BwB,AA2Bf,CA3BoB,GA2BpB,CAAK,GA3Be,EAAS,IAAA,CAAK,EAGxC,AAwBW,CAAa,CAxBJ,AAwBI,IAxBJ,CAAK,GAwBD,CAAA,CAAY,CAAE,CAxBb,CAAQ,IACpC,KAuBqD,CAvB/C,GAuB+C,CAvB/C,AAuBoD,CAvB/C,EAuB+C,CAAK,GAvBpD,EAAQ,GAuB4C,CAvB5C,AAuB4C,CApBjE,AAoB0E,CAAC,CApBzD,AAwBtB,OAFA,EAtBsB,CAAU,GAsB1B,CAtB0B,CAAK,EAsB/B,CAAK,IAtB0B,CAAQ,EAGrC,IAAA,CAAK,iBAmBF,EAA+B,CAEnC,CAAA,CAST,CA9Be,CAAwB,IA8B1B,IA9B0B,CA8BrB,CAAA,CAA+C,CA7BzD,AA8BN,GAAI,CAAC,EA9BO,EA8BP,CAAK,CA9BE,CAAK,MA8BP,CAAU,CA9BH,AA+BX,EA/BqB,CAAA,CA+BrB,CAAK,cAAA,GACP,CADO,GACP,CAAK,cAAA,CAAiB,CACpB,GAAG,IAAA,CAAK,cAAA,CACR,GAAG,CAAA,CAAA,CACJ,CAGH,MAAA,CAGF,MAAM,IAAA,CAAK,YAAA,CAAa,CAAA,IAAA,CAAA,CAAQ,CAAE,OAAA,EAAQ,WAAY,IAAA,CAAK,GAAA,CAAK,CAAC,CACjE,MAAM,IAAA,CAAK,6BAAA,EAA+B,CAG5C,MAAa,QAAQ,CAAA,CAA8B,CAC5C,IAAA,CAAK,QAAA,GAEV,CAFU,KAEJ,IAAA,CAAK,YAAA,CAAa,CAAA,OAAA,CAAA,CAAW,CAAE,WAAY,IAAA,CAAK,GAAA,CAAK,KAAA,CAAA,CAAM,CAAC,CAClE,MAAM,IAAA,CAAK,6BAAA,EAAA,CAA+B,CAU5C,MAAa,aAAa,CAAA,CAAkC,CACrD,IAAA,CAAK,QAAA,GAEV,CAFU,KAEJ,IAAA,CAAK,YAAA,CAAa,CAAA,YAAA,CAAA,CAAgB,CAAE,WAAY,IAAA,CAAK,GAAA,CAAK,UAAA,CAAA,CAAW,CAAC,CAC5E,MAAM,IAAA,CAAK,6BAAA,EAAA,CAA+B,CAQ5C,MAAa,QAAwB,CACnC,GAAI,CAAC,IAAA,CAAK,QAAA,EAAY,CAAC,IAAA,CAAK,OAAA,CAAS,OAErC,GAAM,CAAE,OAAA,CAAA,CAAQ,MAAA,CAAA,CAAA,CAAU,EACxB,IAAA,CAAK,OAAA,CACL,IAAA,CAAK,uBAAA,CAAwB,YAAA,CAAa,gBAAA,IAG5C,AAHgE,GAAe,CAC9E,GAEK,IAAA,CAAK,YAAA,CAAa,CAAA,MAAA,CAAA,CAAU,CAAE,OAAA,EAAQ,WAAY,IAAA,CAAK,GAAA,CAAK,MAAA,CAAA,CAAO,CAAC,CAC1E,MAAM,IAAA,CAAK,6BAAA,EAA+B,CAQ5C,MAAa,SAAyB,CAC/B,IAAA,CAAK,QAAA,GAEV,CAFU,GAEV,CAAK,QAAA,CAAW,CAAA,EAEhB,MAAM,IAAA,CAAK,YAAA,CAAa,CAAA,OAAA,CAAA,CAAW,CAAE,WAAY,IAAA,CAAK,GAAA,CAAK,CAAC,CAE5D,IAAA,CAAK,6BAAA,EAA+B,CAEpC,EAAgB,cAAA,CAAe,2BAAA,CAA4B,IAAA,CAAK,GAAA,CAAI,CACpE,IAAA,CAAK,aAAA,CAAc,uBAAA,EAAyB,AAIE,CAAA,CAF1C,AAMN,KANoB,CAMP,GANO,CAAK,IAMY,CAC9B,EAPkB,EAOlB,CAAK,QAAA,CAPgC,EAS1C,CAFU,KAEJ,IAAA,CAAK,QAT+B,CACxC,EAAkB,CAQT,CAAa,CAAA,MARJ,AAQI,CARM,AAQN,CAAU,CAAE,EARN,CAAK,OAAA,CAQa,AARL,EACzC,EAO8C,AAPzB,CAO8B,GAAA,CAAK,CAAC,CAC3D,EARuB,CAAU,GAQ3B,CAR2B,CAAK,EAQhC,CAAK,IAR2B,yBAQ3B,EAAA,CAA+B,CAG5C,MAAa,UAA0B,CAChC,IAAA,CAAK,QAAA,GAEV,CAFU,KAEJ,IAAA,CAAK,YAAA,CAAa,CAAA,QAAA,CAAA,CAAY,CAAE,WAAY,IAAA,CAAK,GAAA,CAAK,CAAC,CAC7D,MAAM,IAAA,CAAK,6BAAA,EAAA,CAA+B,CAG5C,MAAa,mBAAmB,CAAA,CAAwC,CACjE,IAAA,CAAK,QAAA,EAEV,EAFU,KAEJ,IAAA,CAAK,YAAA,CAAa,CAAA,kBAAA,CAAA,CAAsB,CAAE,WAAY,IAAA,CAAK,GAAA,CAAK,gBAAA,CAAA,CAAiB,CAAC,CACxF,MAAM,IAAA,CAAK,6BAAA,EAAA,CAA+B,CAG5C,MAAa,cAAc,CAAA,CAAoC,CACxD,IAAA,CAAK,QAAA,GAEV,CAFU,KAEJ,IAAA,CAAK,YAAA,CAAa,CAAA,aAAA,CAAA,CAAiB,CAAE,YAAA,EAAa,WAAY,IAAA,CAAK,GAAA,CAAK,CAAC,CAC/E,MAAM,IAAA,CAAK,6BAAA,EAAA,CAA+B,CAG5C,MAAa,UAAU,CAAA,CAA+B,CAC/C,IAAA,CAAK,QAAA,GAEV,CAFU,KAEJ,IAAA,CAAK,YAAA,CAAa,CAAA,SAAA,CAAA,CAAa,CAAE,WAAY,IAAA,CAAK,GAAA,CAAK,OAAA,CAAA,CAAQ,CAAC,CACtE,MAAM,IAAA,CAAK,6BAAA,EAAA,CAA+B,CAK5C,MAAa,SAAS,CAAA,CAA+C,CAC9D,IAAA,CAAK,QAAA,EAEV,MAAM,IAAA,CAAK,YAAA,CAAa,CAAA,QAAA,CAAA,CAAY,CAAE,WAAY,IAAA,CAAK,GAAA,CAAK,MAAA,CAAA,CAAO,CAAC,CAGtE,MAAa,YAAgC,CAG3C,OAFK,IAAA,CAAK,QAAA,CAEH,IAAA,CAAK,YAAA,CAAa,CAAA,UAAA,CAAA,CAAc,CAAE,WAAY,IAAA,CAAK,GAAA,CAAK,CAAC,CAFrC,EAAA,AAAE,CAK/B,MAAa,YAAY,CAAA,CAA+C,CACjE,GAAA,IAAA,CAAK,QAAA,CAEV,OAAO,IAAA,CAAK,YAAA,CAAa,CAAA,WAAA,CAAA,CAAe,CAAE,WAAY,IAAA,CAAK,GAAA,CAAK,OAAA,CAAA,CAAQ,CAAC,CAG3E,MAAa,QAAQ,CAAA,CAAkC,CAChD,GAAA,IAAA,CAAK,QAAA,CAEV,OAAO,IAAA,CAAK,YAAA,CAAa,CAAA,OAAA,CAAA,CAAW,CAAE,WAAY,IAAA,CAAK,GAAA,CAAK,OAAA,CAAA,CAAQ,CAAC,CAGvE,MAAa,UAA6C,CAGxD,OAFK,IAAA,CAAK,QAAA,CAEH,IAAA,CAAK,YAAA,CAAa,CAAA,QAAA,CAAA,CAAY,CAAE,WAAY,IAAA,CAAK,GAAA,CAAK,CAAC,CAFnC,CAAA,CAAE,CAK/B,MAAa,aAAa,CAAA,CAAgB,CAAA,CAAyC,CAGjF,QAFK,IAAA,CAAK,QAAA,EAEH,IAAA,CAAK,YAAA,CAAa,CAAA,YAAA,CAAA,CAAgB,CAAE,WAAY,IAAA,CAAK,GAAA,CAAK,OAAA,EAAQ,MAAA,CAAA,CAAO,CAAC,AAFtD,CAK7B,EAL6B,CAAA,GAKhB,cAAc,CAAA,CAAgB,CAAA,CAA0C,CAGnF,QAFK,IAAA,CAAK,QAAA,EAEH,IAAA,CAAK,YAAA,CAAa,CAAA,aAAA,CAAA,CAAiB,CAAE,WAAY,IAAA,CAAK,GAAA,CAAK,OAAA,EAAQ,MAAA,CAAA,CAAO,CAAC,AAFvD,CAK7B,EAL6B,CAAA,GAKhB,cAAc,CAAA,CAAgB,CAAA,CAA0C,CAGnF,QAFK,IAAA,CAAK,QAAA,EAEH,IAAA,CAAK,YAAA,CAAa,CAAA,aAAA,CAAA,CAAiB,CAAE,WAAY,IAAA,CAAK,GAAA,CAAK,OAAA,EAAQ,MAAA,CAAA,CAAO,CAAC,AAFvD,CAK7B,EAL6B,CAAA,GAKhB,gBAAgB,CAAA,CAAgB,CAAA,CAA0B,CAAA,CAA0C,CAG/G,QAFK,IAAA,CAAK,QAAA,EAEH,IAAA,CAAK,YAAA,CAAa,CAAA,eAAA,CAAA,CAAmB,CAAE,WAAY,IAAA,CAAK,GAAA,CAAK,OAAA,EAAQ,MAAA,EAAO,eAAA,CAAA,CAAgB,CAAC,AAFzE,CAK7B,EAL6B,CAAA,GAKhB,YAAY,CAAA,CAAgB,CAAA,CAAwC,CAG/E,QAFK,IAAA,CAAK,QAAA,EAEH,IAAA,CAAK,YAAA,CAAa,CAAA,WAAA,CAAA,CAAe,CAAE,WAAY,IAAA,CAAK,GAAA,CAAK,OAAA,EAAQ,MAAA,CAAA,CAAO,CAAC,AAFrD,CAK7B,EAL6B,CAAA,GAKhB,UAAU,CAAA,CAAkC,CAGvD,QAFK,IAAA,CAAK,QAAA,EAEH,IAAA,CAAK,YAAA,CAAa,CAAA,SAAA,CAAA,CAAa,CAAE,WAAY,IAAA,CAAK,GAAA,CAAK,OAAA,CAAA,CAAQ,CAF3C,AAE4C,CAGzE,EAL6B,CAAA,GAKhB,UAAU,CAAA,CAAkC,CAGvD,QAFK,IAAA,CAAK,QAAA,EAEH,IAAA,CAAK,YAAA,CAAa,CAAA,SAAA,CAAA,CAAa,CAAE,WAAY,IAAA,CAAK,GAAA,CAAK,OAAA,CAAA,CAAQ,CAAC,AAF5C,CAK7B,EAL6B,CAAA,GAKhB,YAA+B,CAG1C,QAFK,IAAA,CAAK,QAAA,EAEH,IAAA,CAAK,YAAA,CAAa,CAAA,UAAA,CAAA,CAAc,CAAE,WAAY,IAAA,CAAK,GAAA,CAAK,CAAC,AAFrC,CAK7B,EAL6B,CAAA,GAKhB,YAA+B,CAG1C,QAFK,IAAA,CAAK,QAAA,EAEH,IAAA,CAAK,YAAA,CAAa,CAAA,UAAA,CAAA,CAAc,CAAE,WAAY,IAAA,CAAK,GAAA,CAAK,CAAC,AAFrC,CAO7B,EAP6B,CAAA,GAOf,+BAA+C,CACtD,IAAA,CAAK,QAAA,EAIV,EAJU,GAIV,CAAK,uBAAA,CAAA,CAFU,MAAM,IAAA,CAAK,YAAA,CAAa,CAAA,yBAAA,CAAA,CAA6B,CAAE,WAAY,IAAA,CAAK,GAAA,EAAK,CAAC,CAEvD,KAAA,CAAA,CAGxC,SAA2B,CACzB,OAAO,IAAA,CAAK,uBAAA,CAAwB,OAAA,CAGtC,MAAa,UAAU,CAAA,CAA+B,CAC/C,IAAA,CAAK,QAAA,GAEV,CAFU,KAEJ,IAAA,CAAK,YAAA,CAAa,CAAA,SAAA,CAAA,CAAa,CAAE,WAAY,IAAA,CAAK,GAAA,CAAK,OAAA,CAAA,CAAQ,CAAC,CACtE,MAAM,IAAA,CAAK,6BAAA,EAAA,CAA+B,CAG5C,MAAa,aAAa,CAAA,CAAqC,CAC7D,GAAI,CAAC,IAAA,CAAK,QAAA,CAAU,MAAO,CAAA,EAE3B,IAAM,EAAS,MAAM,IAAA,CAAK,YAAA,CAAa,CAAA,YAAA,CAAA,CAAgB,CAAE,WAAY,IAAA,CAAK,GAAA,CAAK,UAAA,CAAA,CAAW,CAAC,CAI3F,OAFA,MAAM,IAAA,CAAK,6BAAA,EAA+B,CAEnC,CAAA,CAGT,MAAa,YAAY,CAAA,CAAW,CAAA,CAAW,CAAA,CAAe,CAAA,CAAkC,CAG9F,QAFK,IAAA,CAAK,QAAA,EAEH,IAAA,CAAK,YAAA,CAAa,CAAA,WAAA,CAAA,CAAe,CAAE,EAAA,EAAG,EAAA,EAAG,MAAA,EAAO,OAAA,EAAQ,WAAY,IAAA,CAAK,GAAA,CAAK,CAAC,AAF3D,CAK7B,EAL6B,CAAA,GAKhB,eAA4D,CAGvE,OAFK,IAAA,CAAK,QAAA,CAEH,IAAA,CAAK,YAAA,CAAa,CAAA,aAAA,CAAA,CAAiB,CAAE,WAAY,IAAA,CAAK,GAAA,CAAK,CAAC,CAFxC,CAAE,OAAQ,EAAG,MAAO,CAAA,CAAG,CAKpD,MAAa,aAAa,CAAA,CAAwC,CAGhE,QAFK,IAAA,CAAK,QAAA,EAEH,IAAA,CAAK,YAAA,CAAa,CAAA,YAAA,CAAA,CAAgB,CAAE,WAAY,IAAA,CAAK,GAAA,CAAK,UAAA,CAAA,CAAW,CAAC,AAFlD,CAK7B,EAL6B,CAAA,GAKhB,cAA+C,CACrD,GAAA,IAAA,CAAK,QAAA,CAEV,OAAO,IAAA,CAAK,YAAA,CAAa,CAAA,YAAA,CAAA,CAAgB,CAAE,WAAY,IAAA,CAAK,GAAA,CAAK,CAAC,CAGpE,MAAc,aACZ,CAAA,CACA,CAAA,CACA,CAAA,CAC6B,CAC7B,IAAM,EAA4B,CAChC,GAAI,CAAA,kBAAA,EAAqB,GAAkB,CAAA,CAAA,CAC3C,OAAA,EACA,OAAA,CAAA,CACD,CAID,OAFA,IAAA,CAAK,OAAA,CAAQ,WAAA,CAAY,EAAY,GAAY,EAAE,CAAC,CAE7C,IAAI,QAAA,CAAS,EAAS,IAAW,CACtC,IAAM,EAAA,AAAa,GAA8B,CAC/C,IAAM,EAA8B,EAAM,IAAA,CAGtC,EAAY,EAAA,GAAO,EAAW,EAAA,GAChC,CADgC,GAChC,CAAK,OAAA,CAAQ,mBAAA,CAAoB,CAAA,OAAA,CAAA,CAAW,EAAU,CAElD,EAAY,KAAA,CACd,EAAW,MAAM,CAAA,yBAAA,EAA4B,EAAO,EAAA,EAAI,EAAY,KAAA,CAAA,CAAA,CAAQ,CAAC,CAE7E,EAAQ,EAAY,OAAA,CAAO,EAKjC,IAAA,CAAK,OAAA,CAAQ,gBAAA,CAAiB,CAAA,OAAA,CAAA,CAAW,EAAU,EACnD,CAGJ,iBAA6C,CAAA,CAAS,CAAA,CAAkC,CACtF,IAAA,CAAK,aAAA,CAAc,gBAAA,CAAiB,EAAM,EAAS,CAGrD,oBAAgD,CAAA,CAAS,CAAA,CAAmC,CAC1F,IAAA,CAAK,aAAA,CAAc,mBAAA,CAAoB,EAAM,EAAS,CAGxD,OAAc,WAAW,CAAA,CAAmB,CAC1C,EAAgB,QAAA,CAAW,CAAA,CAW7B,aAAoB,aAAa,CAAA,CAAkB,CAAA,CAAiE,CAClH,GAAI,CACF,IAAM,EAAK,GAAkB,CAa7B,OAXA,EAAgB,cAAA,CAAe,gBAAA,CAAiB,CAC9C,GAAA,EACA,OAAQ,CAAA,YAAA,CAAA,CACR,OAAQ,CACN,SAAA,EACA,WAAA,CAAA,CACD,CACF,CAAC,CAIK,CAAA,CAAA,CAAA,MACA,EAAO,CAGd,OAFA,QAAQ,KAAA,CAAM,CAAA,qCAAA,EAAwC,EAAS,EAAA,CAAA,CAAK,EAAM,CAEnE,CAAA,CAAA,CAAA,CAUX,MAAa,iBAAiB,CAAA,CAA0C,CACtE,GAAI,CAAC,IAAA,CAAK,QAAA,CAAU,MAAO,CAAA,EAE3B,IAAM,EAAS,MAAM,IAAA,CAAK,YAAA,CAAa,CAAA,gBAAA,CAAA,CAAoB,CAAE,WAAY,IAAA,CAAK,GAAA,CAAK,eAAA,CAAA,CAAgB,CAAC,CAIpG,OAFA,MAAM,IAAA,CAAK,6BAAA,EAA+B,CAEnC,CAAA,CAST,MAAa,qBAAqB,CAAA,CAA4C,CAC5E,GAAI,CAAC,IAAA,CAAK,QAAA,CAAU,MAAO,CAAA,EAE3B,IAAM,EAAS,MAAM,IAAA,CAAK,YAAA,CAAa,CAAA,oBAAA,CAAA,CAAwB,CAAE,WAAY,IAAA,CAAK,GAAA,CAAK,iBAAA,CAAA,CAAkB,CAAC,CAI1G,OAFA,MAAM,IAAA,CAAK,6BAAA,EAA+B,CAEnC,CAAA,CAQT,MAAa,mBAAsC,CACjD,GAAI,CAAC,IAAA,CAAK,QAAA,CAAU,MAAO,CAAA,EAE3B,IAAM,EAAU,MAAM,IAAA,CAAK,YAAA,CAAa,CAAA,iBAAA,CAAA,CAAqB,CAAE,WAAY,IAAA,CAAK,GAAA,CAAK,CAAC,CAOtF,OALI,GACF,EADE,GACF,CAAK,2BAAA,EAA6B,CAClC,MAAM,IAAA,CAAK,6BAAA,EAAA,CAA+B,CAGrC,CAAA,CAQT,MAAa,kBAAqC,CAKhD,QAJK,IAAA,CAAK,QAAA,GAAA,AAEV,IAAA,CAAK,6BAAA,EAA+B,CAE7B,IAAA,CAAK,YAAA,CAAa,CAAA,gBAAA,CAAA,CAAoB,CAAE,WAAY,IAAA,CAAK,GAAA,EAAK,CAAC,AAJ3C,CAc7B,GAd6B,CAAA,EAchB,4BAA4B,CAAA,CAAc,CAAA,CAAiC,CAGtF,QAFK,IAAA,CAAK,QAAA,EAEH,IAAA,CAAK,YAAA,CAAa,CAAA,2BAAA,CAAA,CAA+B,CAAE,WAAY,IAAA,CAAK,GAAA,CAAK,KAAA,EAAM,MAAA,CAAA,CAAO,CAAC,AAFnE,CAY7B,EAZ6B,CAAA,GAYhB,4BAA4B,CAAA,CAAc,CAAA,CAAkC,CAGvF,QAFK,IAAA,CAAK,QAAA,EAEH,IAAA,CAAK,YAAA,CAAa,CAAA,2BAAA,CAAA,CAA+B,CAAE,WAAY,IAAA,CAAK,GAAA,CAAK,KAAA,EAAM,MAAA,CAAA,CAAO,CAAC,AAFnE,CAU7B,EAV6B,CAAA,GAUhB,sBAAsB,CAAA,CAAkD,CAC9E,IAAA,CAAK,QAAA,EAEV,IAAA,CAAK,YAAA,CAAa,CAAA,qBAAA,CAAA,CAAyB,CAAE,WAAY,IAAA,CAAK,GAAA,CAAK,OAAA,CAAA,CAAQ,CAAC,CAU9E,MAAa,2BAA2B,CAAA,CAAc,CAAA,CAAiC,CAGrF,QAFK,IAAA,CAAK,QAAA,EAEH,IAAA,CAAK,YAAA,CAAa,CAAA,0BAAA,CAAA,CAA8B,CAAE,WAAY,IAAA,CAAK,GAAA,CAAK,KAAA,EAAM,MAAA,CAAA,CAAO,CAAC,AAFlE,CAW7B,EAX6B,CAAA,GAWhB,4BAA4B,CAAA,CAA2C,CAC7E,GAAA,IAAA,CAAK,QAAA,CAEV,OAAO,IAAA,CAAK,YAAA,CAAa,CAAA,2BAAA,CAAA,CAA+B,CAAE,WAAY,IAAA,CAAK,GAAA,CAAK,KAAA,CAAA,CAAM,CAAC,CASzF,MAAa,4BAA4B,CAAA,CAA4C,CAC9E,GAAA,IAAA,CAAK,QAAA,CAEV,OAAO,IAAA,CAAK,YAAA,CAAa,CAAA,2BAAA,CAAA,CAA+B,CAAE,WAAY,IAAA,CAAK,GAAA,CAAK,KAAA,CAAA,CAAM,CAAC,CASzF,MAAa,2BAA2B,CAAA,CAA2C,CAC5E,GAAA,IAAA,CAAK,QAAA,CAEV,OAAO,IAAA,CAAK,YAAA,CAAa,CAAA,0BAAA,CAAA,CAA8B,CAAE,WAAY,IAAA,CAAK,GAAA,CAAK,KAAA,CAAA,CAAM,CAAC,CAQxF,MAAa,uBAAuD,CAC7D,GAAA,IAAA,CAAK,QAAA,CAEV,OAAO,IAAA,CAAK,YAAA,CAAa,CAAA,qBAAA,CAAA,CAAyB,CAAE,WAAY,IAAA,CAAK,GAAA,CAAK,CAAC,CAQ7E,MAAa,sBAAsB,CAAA,CAA6B,CACzD,IAAA,CAAK,QAAA,EAEV,IAAA,CAAK,YAAA,CAAa,CAAA,qBAAA,CAAA,CAAyB,CAAE,WAAY,IAAA,CAAK,GAAA,CAAK,KAAA,CAAA,CAAM,CAAC,CAQ5E,MAAa,uBAAyC,CAGpD,OAFK,IAAA,CAAK,QAAA,CAEH,IAAA,CAAK,YAAA,CAAa,CAAA,qBAAA,CAAA,CAAyB,CAAE,WAAY,IAAA,CAAK,GAAA,CAAK,CAAC,CAFhD,EAAA,CAU7B,MAAa,6BAA+C,CAG1D,OAFK,IAAA,CAAK,QAAA,CAEH,IAAA,CAAK,YAAA,CAAa,CAAA,2BAAA,CAAA,CAA+B,CAAE,WAAY,IAAA,CAAK,GAAA,CAAK,CAAC,CAFtD,EAAA,CAU7B,MAAa,yBAA2C,CAGtD,OAFK,IAAA,CAAK,QAAA,CAEH,IAAA,CAAK,YAAA,CAAa,CAAA,uBAAA,CAAA,CAA2B,CAAE,WAAY,IAAA,CAAK,GAAA,CAAK,CAAC,CAFlD,EAAA,CAY7B,MAAa,0BAA0B,CAAA,CAAe,EAAqB,CAAA,CAAA,CAAyB,CAGlG,QAFK,IAAA,CAAK,QAAA,EAEH,IAAA,CAAK,YAAA,CAAa,CAAA,yBAAA,CAAA,CAA6B,CAAE,WAAY,IAAA,CAAK,GAAA,CAAK,MAAA,EAAO,UAAA,CAAA,CAAW,CAAC,AAFtE,CAW7B,EAX6B,CAAA,GAWhB,gBAAgB,CAAA,CAAyC,CAGpE,OAFK,IAAA,CAAK,QAAA,CAEH,IAAA,CAAK,YAAA,CAAa,CAAA,eAAA,CAAA,CAAmB,CAAE,WAAY,IAAA,CAAK,GAAA,CAAK,eAAA,CAAA,CAAgB,CAAC,CAF1D,EAAA,CAU7B,MAAa,0BAA8C,CAGzD,OAFK,IAAA,CAAK,QAAA,CAEH,IAAA,CAAK,YAAA,CAAa,CAAA,wBAAA,CAAA,CAA4B,CAAE,WAAY,IAAA,CAAK,GAAA,CAAK,CAAC,CAFnD,EAAA,AAAE,CAY/B,MAAa,2BAA2B,CAAA,CAAW,CAAA,CAA0B,CACtE,GAAA,IAAA,CAAK,QAAA,CAEV,OAAO,IAAA,CAAK,YAAA,CAAa,CAAA,0BAAA,CAAA,CAA8B,CAAE,WAAY,IAAA,CAAK,GAAA,CAAK,EAAA,EAAG,EAAA,CAAA,CAAG,CAAC,CAUxF,MAAa,+BAA+B,CAAA,CAAW,CAAA,CAA0B,CAC1E,GAAA,IAAA,CAAK,QAAA,CAEV,OAAO,IAAA,CAAK,YAAA,CAAa,CAAA,8BAAA,CAAA,CAAkC,CAAE,WAAY,IAAA,CAAK,GAAA,CAAK,EAAA,EAAG,EAAA,CAAA,CAAG,CAAC,CAU5F,MAAa,iCAAiC,CAAA,CAAW,CAAA,CAA0B,CAC5E,GAAA,IAAA,CAAK,QAAA,CAEV,OAAO,IAAA,CAAK,YAAA,CAAa,CAAA,gCAAA,CAAA,CAAoC,CAAE,WAAY,IAAA,CAAK,GAAA,CAAK,EAAA,EAAG,EAAA,CAAA,CAAG,CAAC,CAU9F,MAAa,iCAAiC,CAAA,CAAW,CAAA,CAA0B,CAC5E,GAAA,IAAA,CAAK,QAAA,CAEV,OAAO,IAAA,CAAK,YAAA,CAAa,CAAA,gCAAA,CAAA,CAAoC,CAAE,WAAY,IAAA,CAAK,GAAA,CAAK,EAAA,EAAG,EAAA,CAAA,CAAG,CAAC,CAU9F,MAAa,kCAAkC,CAAA,CAAW,CAAA,CAA0B,CAC7E,GAAA,IAAA,CAAK,QAAA,CAEV,OAAO,IAAA,CAAK,YAAA,CAAa,CAAA,iCAAA,CAAA,CAAqC,CAAE,WAAY,IAAA,CAAK,GAAA,CAAK,EAAA,EAAG,EAAA,CAAA,CAAG,CAAC,CAU/F,MAAa,iCAAiC,CAAA,CAAW,CAAA,CAA0B,CAC5E,GAAA,IAAA,CAAK,QAAA,CAEV,OAAO,IAAA,CAAK,YAAA,CAAa,CAAA,gCAAA,CAAA,CAAoC,CAAE,WAAY,IAAA,CAAK,GAAA,CAAK,EAAA,EAAG,EAAA,CAAA,CAAG,CAAC,CAG9F,SAAiB,CAAA,CAAyB,CACxC,IAAM,EAAW,EAAmB,EAAM,AAEtC,IACF,IAAA,CAAK,YAAA,CAAa,CAAA,0BAAA,CAAA,CAA8B,CAAE,WAAY,IAAA,CAAK,GAAA,CAAK,EAAG,EAAS,CAAA,CAAG,EAAG,EAAS,CAAA,CAAG,CAAC,CAI3G,aAAqB,CAAA,CAA2B,CAC9C,IAAM,EAAW,EAAmB,EAAM,CAEtC,GACF,IAAA,CAAK,YAAA,CAAa,CAAA,8BAAA,CAAA,CAAkC,CAAE,WAAY,IAAA,CAAK,GAAA,CAAK,EAAG,EAAS,CAAA,CAAG,EAAG,EAAS,CAAA,CAAG,CAAC,CAI/G,eAAuB,CAAA,CAA2B,CAChD,IAAM,EAAW,EAAmB,EAAM,CAEtC,GACF,IAAA,CAAK,YAAA,CAAa,CAAA,gCAAA,CAAA,CAAoC,CAAE,WAAY,IAAA,CAAK,GAAA,CAAK,EAAG,EAAS,CAAA,CAAG,EAAG,EAAS,CAAA,CAAG,CAAC,CAIjH,eAAuB,CAAA,CAA2B,CAChD,IAAM,EAAW,EAAmB,EAAM,CAEtC,GACF,IAAA,CAAK,YAAA,CAAa,CAAA,gCAAA,CAAA,CAAoC,CAAE,WAAY,IAAA,CAAK,GAAA,CAAK,EAAG,EAAS,CAAA,CAAG,EAAG,EAAS,CAAA,CAAG,CAAC,CAIjH,gBAAwB,CAAA,CAA2B,CACjD,IAAM,EAAW,EAAmB,EAAM,CAEtC,GACF,IAAA,CAAK,YAAA,CAAa,CAAA,iCAAA,CAAA,CAAqC,CAAE,WAAY,IAAA,CAAK,GAAA,CAAK,EAAG,EAAS,CAAA,CAAG,EAAG,EAAS,CAAA,CAAG,CAAC,CAIlH,gBAAwB,CAAA,CAA2B,CACjD,IAAM,EAAW,EAAmB,EAAM,CAEtC,GACF,IAAA,CAAK,YAAA,CAAa,CAAA,gCAAA,CAAA,CAAoC,CAAE,WAAY,IAAA,CAAK,GAAA,CAAK,EAAG,EAAS,CAAA,CAAG,EAAG,EAAS,CAAA,CAAG,CAAC,CAIjH,MAAc,6BAA6C,CAsCmB,CAK9E,+BAA8C,CAwBZ,CAAA,EAAA,EAAA,EAr2CV,CAAA,cAAA,CAAA,CAAiB,IAAI,GAAe,EAAA,EAwC7C,CAAA,QAAA,CAAA,CAAmB,EAAA,CAAA,kBdxEpC,IAAa,EAAA,CAA6D,CACxE,YAAA,CAAA,CACA,SAAA,CAAA,CACA,gBAAA,CAAA,CACA,UAAA,CAAA,CACA,gBAAA,CAAA,CACA,KAAA,CAAA,CACA,qBAAA,CAAA,CACA,OAAA,CAAA,CACA,KAAA,CAAA,CACA,KAAA,CAAA,CACA,YAAA,CAAA,CACA,aAAA,CAAA,CACA,QAAA,CAAA,CACA,MAAA,CAAA,CACA,IAAA,CAAA,CACA,mBAAA,CAAA,CACA,eAAA,CAAA,CACA,MAAA,CAAA,CACA,UAAA,CAAA,CACA,QAAA,CAAA,CACA,sBAAA,CAAA,CACA,SAAA,CAAA,CACA,GAAG,EAAA,GAGY,CACf,IAAM,EAAA,CAAA,EAAA,EAAA,MAAe,AAAf,EAAgC,MAChC,EAAA,CAAA,EAAY,EAAA,MAAA,EAAiC,MAC7C,EAAA,CAAA,EAA0B,EAAA,MAAA,EAA0C,GAEpE,EAEF,CACF,MAAA,EACA,KAAA,EACA,KAAA,EACA,sBAAA,EACA,QAAA,EACA,gBAAA,EACA,SAAA,EACA,QAAA,EACA,SAAA,EACA,IAAA,EACA,KAAA,EACA,OAAA,EACA,aAAA,EACA,YAAA,EACA,mBAAA,EACA,eAAA,CAAA,CACD,CAEK,EAAA,CAAA,EAAY,EAAA,MAAA,EAA4F,GAE9G,EAAwB,OAAA,CAAU,EAClC,EAAU,OAAA,CAAU,EAGpB,IAAM,EAAA,CAAA,EAAe,EAAA,WAAA,EAAA,AAAa,GAAqC,CACrE,EAAU,OAAA,CAAU,EAEhB,EACF,EAAa,OAAA,CAAU,EAAgB,CACrC,GAAG,EAAU,OAAA,aAIf,CAFE,CAEW,OAAA,EAAS,UACtB,EAAa,OAAA,CAAU,IAAA,CAAA,CAGzB,EAAwB,CCpGM,MAAA,GDoGI,EAAa,OAAA,CAAQ,EACtD,EAAE,QAEL,CAAA,EAAA,EAAA,SAAA,EAAA,IAAgB,CACd,IAAM,EAAA,AAAqB,GAA4B,CAChD,IAED,AAAe,CAFd,gBAEK,IAAA,EACR,EAAa,OAAA,EAAS,OAGpB,AAAe,CAAA,gBAAT,IAAA,EACR,EAAa,OAAA,EAAS,OAAA,CAAO,EAOjC,OAHA,EAAU,OAAA,EAAS,iBAAiB,aAAc,CCxG7B,EDyGrB,CCxGE,CDwGQ,OAAA,EAAS,iBAAiB,CAAA,UAAA,CAAA,CAAc,GAAA,KAGhD,EAAU,OAAA,EAAS,oBAAoB,aAAc,EAAkB,CACvE,EAAU,OAAA,EAAS,IChGU,gBDgGU,CAAA,YAAc,EAAkB,CAAA,EAExE,CAAC,EAAY,CCjGC,ADiGA,CAAA,CAAA,EAEjB,EAAA,SAAA,EAAA,KACE,EAAa,OAAA,EAAS,SAAS,GAAS,EAAE,EACzC,CAAC,EAAM,CAAC,CAAA,CAAA,EAEX,EAAA,SAAA,EAAA,IAAgB,CACd,EAAa,OAAA,EAAS,QAAQ,GAAQ,UAAU,EAC/C,CAAC,EAAK,CAAC,CAEV,CAAA,EAAA,EAAA,SAAA,EAAA,IAAgB,CACd,EAAa,OAAA,EAAS,QAAQ,GAAQ,CAAA,EAAM,EAC3C,CAAC,EAAK,CAAC,CAAA,CAAA,EAEV,EAAA,SAAA,EAAA,IAAgB,CACd,EAAa,OAAA,EAAA,yBAAkC,GAAyB,CAAA,EAAK,EAC5E,CAAC,EAAsB,CAAC,CAAA,CAAA,EAE3B,EAAA,SAAA,EAAA,KAC8B,UAAxB,OAAO,GAAA,CAAU,EAAA,EAAmB,AAAsB,CAAA,gBAAf,CAAA,CAAQ,EAAA,EACrD,EAAa,OAAA,EAAS,WAAW,CAAA,CAAQ,EAAA,CAAI,CAAA,CAAQ,EAAA,CAAG,EAKzD,CAAC,EAAQ,CAAC,CAEb,CAAA,EAAA,EAAA,SAAA,EAAA,KACE,EAAa,OAAA,EAAS,mBAAmB,GAAmB,GAAG,EAAA,CAC7D,EAAgB,EAAA,CAAA,EAGpB,EAAA,SAAA,EAAA,KACE,EAAa,OAAA,EAAS,gBAAgB,GAAgB,CAAA,CAAE,CAAC,EACxD,CAAC,KAAK,SAAA,CAAU,GAAc,EAAA,CAAA,EAEjC,EAAA,SAAA,EAAA,KACsB,UAAhB,OAAO,GAAqC,UAAhB,OAAO,GAEvC,EAAa,OAAA,EAAS,KAAK,CACzB,KAAA,KACG,EAAU,OAAA,EACb,EACD,CAAC,OAEJ,EAAA,SAAA,EAAA,KACqB,CAAA,MAAA,CAAA,EAAf,OAAO,GAEX,EAAa,OAAA,EAAS,KAAK,CACzB,IAAA,EACA,GAAG,EAAU,OAAA,EACb,EACD,CAAC,EAAI,EAAA,CAAA,EAER,EAAA,SAAA,EAAA,KACE,EAAa,OAAA,EAAS,UAAU,EAAA,MAAA,EAAgB,GAAG,EAClD,CAAC,EAAM,MAAA,CAAO,CAAC,CAAA,CAAA,EAElB,EAAA,SAAA,EAAA,KACM,EAAa,OAAA,EAAS,UAAY,EAAa,OAAA,CAAQ,iBAAA,GAAsB,GAC/E,EAAa,CGzLf,MAAA,CHyLuB,aAAA,CAAc,GAAe,EAAA,CAAG,EAEtD,CAAC,EAAY,CAAC,CAAA,CAAA,EAEjB,EAAA,SAAA,EAAA,KACa,AAAP,iBAAO,GACT,EAAa,OAAA,EAAS,SAAS,EAAQ,EAKxC,CAAC,EAAQ,CAAC,CAAA,CAAA,EAEb,EAAA,SAAA,EAAA,IAAgB,CACd,EAAa,CGlM4C,MAAA,EHkMnC,aAAa,GAAa,EAAA,CAAG,EAClD,CAAC,EAAU,EAAA,CAAA,EAGd,EAAA,SAAA,EAAA,KACE,EAAa,OAAA,EAAS,UAAU,GAAU,CAAA,CAAE,CAAC,EAC5C,CAAC,GAAQ,IAAK,GAAQ,OAAA,CAAQ,EAAA,CAAI,GAAQ,OAAA,CAAQ,CG/LZ,CAAA,CH+Le,EAAA,CAAA,EAExD,EAAA,SAAA,EAAA,IAAgB,CACV,EAAa,OAAA,EAAS,UACpB,CAA0B,CADN,AACM,gBAAnB,GAA+B,EACvB,EAAA,OAAA,CAAqB,gBAAA,CAAiB,EAAe,EAGpE,EAAa,OAAA,CAAQ,iBAAA,GAGvB,EAAa,CGnMsF,MAAA,CHmM9E,gBAAA,EAAA,CAAkB,EAG1C,CAAC,EAAe,CAAC,CAAA,CAAA,EAEpB,EAAA,SAAA,EAAA,KACE,EAAa,CGzMwI,MAAA,EHyM/H,sBAAsB,GAAsB,KAAK,EACtE,CAAC,EAAmB,EAAA,CAAA,EAGrB,EAAA,GAAA,EAAC,MAAA,CACY,UAAA,EACX,GAAA,CAAM,GAAA,CACJ,MAAO,CACL,MAAO,OACP,OAAQ,CAAA,MACR,WAAY,EACZ,CG5MO,EAAA,CAAA,CH6MR,CACF,CAAA,SAAA,CAAA,EAAA,EAAA,GAAA,EAEA,CAAA,QAAA,CACC,IAAK,EACL,MAAO,CACL,MAAO,CAAA,MACP,OAAQ,CAAA,GG3ME,IH6MZ,GAAI,CAAA,EACJ,EACE,EI1PJ,EAAA,AAAmB,GAA8B,ED4CN,EC5CU,EAAU,GAExD,EAAA,AAAkB,GAAA,CAAA,EACtB,EAAA,GAAA,EAAC,EAAA,CAAmB,GAAI,CAAA,CAAwB,gBAAA,ILZzD,CMQM,GNRN,EAAA,CMQ+B,CNR/B,CAAA,CAAA,CMQ2F,IAAI,EAAgB,ANN/G,CIqD8D,EJrD9D,CMQa,CNRb,CAAA,CAAA,GMQqC,INPrC,GAAA,CMQS,CNRT,CAAA,CAAA,OACA,GAAA,EAAA,CAAA,CAAA,OAcO,IAAM,GAAS,CAAC,SACrB,CAAO,MMRC,IAAA,ENSR,EAAa,OAAO,WACpB,CAAS,UACT,CAAQ,MACR,EAAO,GAAG,SACV,CAAO,KACPC,CAAG,CACH,GAAG,EACS,IACZ,IAAM,EAAO,EAAU,EAAA,IAAkB,CAAG,SAE5C,MACE,CAAA,EAAA,EAAA,IAAA,EAAC,EAAA,CACC,IAAK,EACL,KAAK,SACJ,GAAG,CAAK,CACT,UAAW,CAAA,EAAA,GAAA,EAAE,AAAF,EACT,GAAQ,GACR,GAAc,GACd,mEACA,GAEF,gBAAe,YAEf,CAAA,EAAA,EAAA,GAAA,EAAC,OAAA,CACC,UAAW,CAAA,EAAA,GAAA,EAAA,AAAE,EACX,kDACA,GAAW,wBAGb,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CACCC,KAAMC,GAAAA,OAAgB,CACtB,UAAU,EACV,UAAU,UACV,MAAM,MAGV,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,SAAuB,CAAA,UAAE,MAGhC,EAEA,GAAO,WAAW,CAAG,SAErB,IAAM,GAAiB,AAAD,IACpB,OAAQ,GACN,UAAK,EACL,IAAK,QACH,MAAO,CACL,8EACA,oBACA,0EACAC,uEACD,AACH,KAAK,WACH,MAAO,CACL,uDACA,0BACA,gFAEJ,AADG,SAED,CAAA,EAAA,GAAA,WAAW,AAAX,EAAY,EAChB,CACF,EAEM,GAAU,AAAC,IACf,OAAQ,GACN,IAAK,IACH,MAAO,EACT,WAAKC,EACL,IAAK,IACH,MAAO,0CACT,KAAK,IACH,MAAO,2CACT,KAAK,IACHC,MAAO,sCACT,SACE,CAAA,EAAA,GAAA,WAAA,AAAW,EAAC,EAChB,CACF,+DiBjEkByC,EAAIC,EAePA,EAAiBJ,GAAZiB,MAAuB,CAiqB4J1D,UAuB9G4M,IAAI,AAGwxC3M,EAqK/2C2M,IAG4B3M,EAAuDD,EA0CzC4M,IAAI,AAiB9CA,iBD/8BN,EAAA,EAAA,CAAA,CAAA,MACA,EAAA,EAAA,CAAA,CAAA,OCk2FA,EAAA,EAAA,CAAA,CAAA,OAIA,EAAA,EAAA,CAAA,CAAA,OAx2FIxM,EAAWC,OAAOC,MAAM,CACxBC,EAAYF,OAAOG,cAAc,CACjCC,EAAaJ,OAAOK,gBAAgB,CACpCC,EAAmBN,OAAOO,wBAAwB,CAClDC,EAAoBR,OAAOS,yBAAyB,CACpDC,EAAoBV,OAAOW,mBAAmB,CAC9CC,EAAsBZ,OAAOa,qBAAqB,CAClDC,EAAed,OAAOe,cAAc,CACpCC,EAAehB,OAAOiB,SAAS,CAACC,cAAc,CAC9CC,EAAenB,OAAOiB,SAAS,CAACG,oBAAoB,CACpDC,EAAkB,CAACC,EAAKC,EAAKC,IAAUD,KAAOD,EAAMpB,EAAUoB,EAAKC,EAAK,CAAEE,YAAY,EAAMC,cAAc,EAAMC,UAAU,QAAMH,CAAM,GAAKF,CAAG,CAACC,EAAI,CAAGC,EACtJI,EAAiB,CAACjC,EAAGkC,KACvB,IAAK,IAAIC,KAAQD,IAAMA,CAAD,CAAK,CAAC,CAAC,EAC3B,AAAIb,EAAae,IAAI,CAACF,EAAGC,IACvBT,EAAgB1B,EAAGmC,EAAMD,CAAC,CAACC,EAAK,EACpC,GAAIlB,EACF,IAAK,IAAIkB,KAAQlB,EAAoBiB,GAAI,AACnCV,EAAaY,IAAI,CAACF,EAAGC,IACvBT,EAAgB1B,EAAGmC,EAAMD,CAAC,CAACC,EAAK,EAEtC,OAAOnC,CACT,EAEIsC,EAAY,CAACC,EAAQC,KACvB,IAAIC,EAAS,CAAC,EACd,IAAK,IAAIN,KAAQI,EACXlB,EAAae,GAAjB,CAAqB,CAACG,EAAQJ,IAAiC,EAAxBK,EAAQE,OAAO,CAACP,KACrDM,CAAM,CAACN,EAAK,CAAGI,CAAM,CAACJ,EAAAA,AAAK,EAC/B,GAAc,MAAVI,GAAkBtB,EACpB,IAAK,IAAIkB,KAAQlB,EAAoBsB,GACP,EAAxBC,EAAQE,CADgC,MACzB,CAACP,IAAaX,EAAaY,IAAI,CAACG,EAAQJ,KACzDM,CAAM,CAACN,EAAK,CAAGI,CAAM,CAACJ,EAAAA,AAAK,EAEjC,OAAOM,CACT,EAsqBIwJ,GAtpBwCxJ,EAASI,AAAO,GAspBhDY,MAAQG,GA5oBW,CAC7B,8GAA8Gb,CAAO,CAAEc,CAAM,EAC3H,IAAIC,EAAS,WACX,IAAIC,EAAO,0CACPC,EAAW,EACXC,EAAmB,CAAC,EACpBC,EAAI,CAUNC,KAAM,CACJC,OAAQ,SAASA,EAAOC,CAAM,SAC5B,AAAIA,aAAkBC,EACb,IAAIA,CADgB,CACVD,EAAOE,IAAI,CAAEH,EAAOC,EAAOG,OAAO,EAAGH,EAAOI,KAAK,EACzDC,MAAMC,OAAO,CAACN,GAChBA,EAAOO,GAAG,CADe,AACdR,GAEXC,EAAOQ,OAAO,CAAC,KAAM,SAASA,OAAO,CAAC,KAAM,QAAQA,OAAO,CAAC,UAAW,IAElF,EAiBAN,KAAM,SAASO,CAAC,EACd,OAAOzE,OAAOiB,SAAS,CAACyD,QAAQ,CAAC3C,IAAI,CAAC0C,GAAGE,KAAK,CAAC,EAAG,CAAC,EACrD,EAOAC,MAAO,SAAStD,CAAG,EAIjB,OAHI,AAACA,EAAI,CAAD,GAAQ,EAAE,AAChBtB,OAAOG,cAAc,CAACmB,EAAK,OAAQ,CAAEE,MAAO,EAAEmC,CAAS,GAElDrC,EAAI,CAAD,GAAQ,AACpB,EAWAuD,MAAO,SAASC,EAAUL,CAAC,CAAEM,CAAO,MAE9BF,EACAG,EACJ,OAHAD,EAAUA,GAAW,CAAC,EAGdlB,EAAEC,IAAI,CAACI,IAAI,CAACO,IAClB,IAAK,SAEH,GAAIM,CAAO,CADXC,AACYA,EADPnB,EAAEC,IAAI,CAACc,KAAK,CAACH,GACH,CACb,CADe,MACRM,CAAO,CAACC,EAAG,CAKpB,IAAK,IAAIzD,KAHTsD,EACA,CAAC,EACDE,CAAO,CAACC,CAFA,CAEG,CAAGH,EACEJ,EAAG,AACbA,EAAEvD,cAAc,CAACK,KACnBsD,CADyB,AACpB,CAACtD,EAL8B,AAK1B,CAAGuD,EAAUL,CAAC,CAAClD,EAAI,CAAEwD,EAAAA,EAGnC,OACE,AACAF,CAEJ,KAAK,QAEH,EALkB,CAKdE,CAAO,CAACC,AADZA,EAAKnB,EAAEC,IAAI,CAACc,KAAK,CAACH,GACH,CACb,CADe,MACRM,CAAO,CAACC,EAAG,CASpB,OACE,AARFH,EAAQ,EAAE,CACVE,CAAO,CAACC,EAAG,CAAGH,EAGdJ,EAAEQ,EAIgB,KAJT,CAAC,SAASnF,CAAC,CAAEJ,CAAC,EACrBmF,CAAK,CAACnF,EAAE,CAAGoF,EAAUhF,EAAGiF,EAC1B,GAGEF,CAEJ,SACE,OAAOJ,CACX,CACF,EASAS,YAAa,SAASC,CAAO,EAC3B,KAAOA,GAAS,CACd,IAAIC,EAAI1B,EAAK2B,IAAI,CAACF,EAAQG,SAAS,EACnC,GAAIF,EACF,CADK,MACEA,CAAC,CAAC,EAAE,CAACG,WAAW,GAEzBJ,EAAUA,EAAQK,aACpB,AADiC,CAEjC,MAAO,MACT,EAQAC,YAAa,SAASN,CAAO,CAAEO,CAAQ,EACrCP,EAAQG,SAAS,CAAGH,EAAQG,SAAS,CAACd,OAAO,CAACmB,OAAOjC,EAAM,MAAO,IAClEyB,EAAQS,SAAS,CAACC,GAAG,CAAC,YAAcH,EACtC,EAoBAI,SAAU,SAASX,CAAO,CAAEG,CAAS,CAAES,CAAiB,EAEtD,IADA,IAAIC,EAAK,MAAQV,EACVH,GAAS,CACd,IAAIS,EAAYT,EAAQS,SAAS,CACjC,GAAIA,EAAUK,QAAQ,CAACX,GACrB,OAAO,EAD0B,AAGnC,GAAIM,EAAUK,QAAQ,CAACD,GACrB,EAD0B,KACnB,EAETb,EAAUA,EAAQK,aAAa,AACjC,CACA,MAAO,CAAC,CAACO,CACX,CACF,EAQAG,UAAW,CAITC,MAAOvC,EACPwC,UAAWxC,EACXyC,KAAMzC,EACN0C,IAAK1C,EA6BL2C,OAAQ,SAASvB,CAAE,CAAEwB,CAAK,EACxB,IAAIC,EAAQ5C,EAAEC,IAAI,CAACe,KAAK,CAAChB,EAAEqC,SAAS,CAAClB,EAAG,EACxC,IAAK,IAAIzD,KAAOiF,EACdC,CAAK,CAAClF,EADe,AACX,CAAGiF,CAAK,CAACjF,EAAI,CAEzB,OAAOkF,CACT,EA4EAC,aAAc,SAASC,CAAM,CAAEC,CAAM,CAAEC,CAAM,CAAEC,CAAI,EAGjD,IAAIC,EAFJD,AAEcA,GAFPA,GACPjD,EAAEqC,GADa,MACbA,AAAS,CACO,CAACS,EAAO,CACtBK,EAAM,CAAC,EACX,AAJ+B,IAI1B,IAAIC,KAASF,EAChB,GAAIA,EAAQ7F,CADa,aACC,CAAC+F,GAAQ,CACjC,GAAIA,GAASL,EACX,IAAK,EADc,EACVM,KAAYL,EACfA,EAAO3F,GADgB,WACF,CAACgG,KACxBF,CAAG,CAACE,EAAS,CAAGL,CADmB,AACb,CAACK,EAAAA,AAAS,CAIlC,CAACL,EAAO3F,cAAc,CAAC+F,KACzBD,CAAG,CAACC,CAD6B,CACvB,CAAGF,CAAO,CAACE,EAAAA,AAAM,CAE/B,CAEF,IAAIE,EAAML,CAAI,CAACH,EAAO,CAOtB,OANAG,CAAI,CAACH,EAAO,CAAGK,EACfnD,EAAEqC,SAAS,CAACkB,GAAG,CAACvD,EAAEqC,SAAS,CAAE,SAAS3E,CAAG,CAAEC,CAAK,EAC1CA,IAAU2F,GAAO5F,GAAOoF,IAC1B,IADkC,AAC9B,CAACpF,EAAI,CAAGyF,CAAAA,CAEhB,GACOA,CACT,EAEAI,IAAK,SAASA,EAAI3C,CAAC,CAAE4C,CAAQ,CAAEnD,CAAI,CAAEa,CAAO,EAC1CA,EAAUA,GAAW,CAAC,EACtB,IAAIH,EAAQf,EAAEC,IAAI,CAACc,KAAK,CACxB,IAAK,IAAIlF,KAAK+E,EACZ,AADe,GACXA,EAAEvD,cAAc,CAACxB,GAAI,CACvB2H,EAAStF,IAAI,CAAC0C,EAAG/E,EAAG+E,CAAC,CAAC/E,EAAE,CAAEwE,GAAQxE,GAClC,IAAI4H,EAAW7C,CAAC,CAAC/E,EAAE,CACf6H,EAAe1D,EAAEC,IAAI,CAACI,IAAI,CAACoD,EAC3BC,CAAiB,YAAY,EAACxC,CAAO,CAACH,EAAM0C,GAAU,CAG9B,CAHgC,SAGjDC,CAA4B,EAACxC,CAAO,CAACH,EAAM0C,GAAU,EAAE,CAChEvC,CAAO,CAACH,EAAM0C,GAAU,EAAG,EAC3BF,EAAIE,EAAUD,EAAU3H,EAAGqF,KAJ3BA,CAAO,CAACH,EAAM0C,GAAU,EAAG,EAC3BF,EAAIE,EAAUD,EAAU,KAAMtC,GAKlC,CAEJ,CACF,EACAyC,QAAS,CAAC,EAqBVC,UAAW,SAASpB,CAAI,CAAEU,CAAO,CAAErB,CAAQ,EACzC,IAAIgC,EAAM,CACRC,KAAMtB,UACNU,WACArB,CACF,EAEA,GADA7B,EAAE+D,KAAK,CAACC,GAAG,CAAC,kBAAmBH,GAC3B,CAACA,EAAIX,OAAO,CACd,CADgB,KACV,AAAIe,MAAM,iBAAmBJ,EAAIhC,QAAQ,CAAG,qBAIpD,OAFAgC,EAAI1D,MAAM,CAAGH,EAAEkE,QAAQ,CAACL,EAAIC,IAAI,CAAED,EAAIX,OAAO,EAC7ClD,EAAE+D,KAAK,CAACC,GAAG,CAAC,iBAAkBH,GACvBzD,EAAM+D,SAAS,CAACnE,EAAEC,IAAI,CAACC,MAAM,CAAC2D,EAAI1D,MAAM,EAAG0D,EAAIhC,QAAQ,CAChE,EAyBAqC,SAAU,SAAS1B,CAAI,CAAEU,CAAO,EAC9B,IAAIkB,EAAOlB,EAAQkB,IAAI,CACvB,GAAIA,EAAM,CACR,IAAK,IAAIhB,KAASgB,EAChBlB,CAAO,CAACE,CADc,CACR,CAAGgB,CAAI,CAAChB,EAAM,AAE9B,QAAOF,EAAQkB,IAAI,AACrB,CACA,IAAIC,EAAY,IAAIC,EAGpB,OAFAC,EAASF,EAAWA,EAAUG,IAAI,CAAEhC,GAmGxC,AAlGIiC,SAkGKA,EAAajC,CAAI,CAAE6B,CAAS,CAAEnB,CAAO,CAAE8C,CAAS,CAAEC,CAAQ,CAAEC,CAAO,EAC1E,IAAK,IAAI9C,KAASF,EAChB,GAAI,AAACA,EAAQ7F,CADY,aACE,CAAC+F,IAAWF,CAAO,CAACE,EAAM,EAAE,AAGvD,AAHsC,IAGlC+C,EAAWjD,CAAO,CAACE,EAAM,CAC7B+C,EAAW3F,MAAMC,OAAO,CAAC0F,GAAYA,EAAW,CAACA,EAAS,CAC1D,IAAK,IAAIC,EAAI,EAAGA,EAAID,EAASrB,MAAM,CAAE,EAAEsB,EAAG,CACxC,GAAIF,GAAWA,EAAQG,KAAK,EAAIjD,EAAQ,IAAMgD,EAC5C,CAD+C,MAGjD,IAAIE,EAAaH,CAAQ,CAACC,EAAE,CACxBtD,EAASwD,EAAWxD,MAAM,CAC1B6C,EAAa,CAAC,CAACW,EAAWX,UAAU,CACpCY,EAAS,CAAC,CAACD,EAAWC,MAAM,CAC5BhG,EAAQ+F,EAAW/F,KAAK,CAC5B,GAAIgG,GAAU,CAACD,EAAWb,OAAO,CAACe,MAAM,CAAE,CACxC,IAAIC,EAAQH,EAAWb,OAAO,CAAC5E,QAAQ,GAAGgF,KAAK,CAAC,YAAY,CAAC,EAAE,AAC/DS,GAAWb,OAAO,CAAG3D,OAAOwE,EAAWb,OAAO,CAACpH,MAAM,CAAEoI,EAAQ,IACjE,CAEA,IAAK,IADDhB,EAAUa,EAAWb,OAAO,EAAIa,EAC3BI,EAAcV,EAAUW,IAAI,CAAEjB,EAAMO,EAC3C,AADqDS,IAAgBrC,EAAUuC,IAAI,IAC/EV,KAAWR,GAAOQ,EAAQW,KAAAA,AAAK,CAALA,CAAO,CADgDnB,GAAOgB,EAAY/I,KAAK,CAACmH,MAAM,CAAE4B,EAAcA,EAAYC,IAAI,CAAE,CAItJ,IAQId,EARAiB,EAAMJ,EAAY/I,KAAK,CAC3B,GAAI0G,EAAUS,MAAM,CAAGtC,EAAKsC,MAAM,CAChC,CADkC,MAGpC,KAAIgC,aAAe1G,CAAAA,GAGnB,AAH0B,IAGtB2G,EAAc,EAElB,GAAIR,EAAQ,CAEV,GAAI,CAACV,CADLA,EAAQL,EAAaC,EAASC,EAAKlD,EAAMmD,EAAAA,GAC3BE,EAAME,KAAK,EAAIvD,EAAKsC,MAAM,CACtC,CADwC,KAG1C,IAAI1F,EAAOyG,EAAME,KAAK,CAClB5G,EAAK0G,EAAME,KAAK,CAAGF,CAAK,CAAC,EAAE,CAACf,MAAM,CAClCkC,EAAItB,EAER,IADAsB,GAAKN,EAAY/I,KAAK,CAACmH,MAAM,CACtB1F,GAAQ4H,EAAG,CAEhBA,GAAKN,CADLA,EAAcA,EAAYC,IAAAA,AAAI,EACbhJ,KAAK,CAACmH,MAAM,CAI/B,GAFAkC,GAAKN,EAAY/I,KAAK,CAACmH,MAAM,CAC7BY,EAAMsB,EACFN,EAAY/I,KAAK,YAAYyC,EAC/B,KADsC,IAGxC,IAAK,IAAI6G,EAAIP,EAAaO,IAAM5C,EAAUuC,IAAI,GAAKI,CAAD,CAAK7H,GAAyB,UAAnB,OAAO8H,EAAEtJ,KAAK,AAAK,CAAQ,CAAGsJ,EAAIA,EAAEN,IAAI,CAAE,AACrGI,IACAC,GAAKC,EAAEtJ,KAAK,CAACmH,MAAM,CAErBiC,IACAD,EAAMtE,EAAK1B,KAAK,CAAC4E,EAAKsB,GACtBnB,EAAME,KAAK,EAAIL,CACjB,MAEE,CAFK,EAED,CAACG,CADLA,EAAQL,EAAaC,EAAS,AAClB,EADqBqB,EAAKnB,EAAAA,EAEpC,SAGJ,IAAIvG,EAAOyG,EAAME,KAAK,CAClBmB,EAAWrB,CAAK,CAAC,EAAE,CACnB9C,EAAS+D,EAAIhG,KAAK,CAAC,EAAG1B,GACtB+H,EAAQL,EAAIhG,KAAK,CAAC1B,EAAO8H,EAASpC,MAAM,EACxC+B,EAAQnB,EAAMoB,EAAIhC,MAAM,CACxBoB,GAAWW,EAAQX,EAAQW,KAAK,EAAE,AACpCX,GAAQW,KAAK,CAAGA,CAAAA,EAElB,IAAIO,EAAaV,EAAYW,IAAI,CAWjC,GAVItE,IACFqE,EAAa7C,EADH,AACYF,EAAW+C,EAAYrE,GAC7C2C,GAAO3C,EAAO+B,MAAM,EAEtBwC,AAoCR,SAASA,AAAYG,CAAI,CAAEC,CAAI,CAAEE,CAAK,EAEpC,IAAK,IADDjB,EAAOe,EAAKf,IAAI,CACX9K,EAAI,EAAGA,EAAI+L,GAASjB,IAASc,EAAKb,IAAI,CAAE/K,IAAK,AACpD8K,EAAOA,EAAKA,IAAI,CAElBe,EAAKf,IAAI,CAAGA,EACZA,EAAKU,IAAI,CAAGK,EACZD,EAAK3C,MAAM,EAAIjJ,CACjB,EA5CoBwI,EAAW+C,EAAYL,GAEnCL,EAAcnC,EAASF,EAAW+C,EADpB,IAAIhH,EAAMgD,EAAON,EACeyE,AADNvH,EAAEkE,QAAQ,CAACgD,EAAUpE,GAAUoE,EAAU3G,EAAO2G,IAEpFC,GACF5C,EAASF,EADA,AACWqC,EAAaS,GAE/BJ,EAAc,EAAG,CACnB,IAAIS,EAAgB,CAClBnB,MAAOjD,EAAQ,IAAMgD,QACrBS,CACF,EACApC,EAAajC,EAAM6B,EAAWnB,EAASwD,EAAYW,IAAI,CAAE3B,EAAK8B,GAC1DtB,GAAWsB,EAAcX,KAAK,CAAGX,EAAQW,KAAK,EAAE,AAClDX,GAAQW,KAAK,CAAGW,EAAcX,KAAAA,AAAK,CAEvC,EACF,CACF,EAEJ,EAnMiBrE,EAAM6B,EAAWnB,EAASmB,EAAUG,IAAI,CAAE,GAChDE,AA4NX,SAASA,AAAQ+C,CAAI,EAGnB,IAFA,IAAII,EAAQ,EAAE,CACVH,EAAOD,EAAKjD,IAAI,CAACmC,IAAI,CAClBe,IAASD,EAAKb,IAAI,CAAE,CACzBiB,EAAMjD,IAAI,CAAC8C,EAAK/J,KAAK,EACrB+J,EAAOA,EAAKf,IAAI,CAElB,OAAOkB,CACT,EApOmBxD,EACjB,EAMAN,MAAO,CACLhF,IAAK,CAAC,EAaNiD,IAAK,SAAShD,CAAI,CAAEwE,CAAQ,EAC1B,IAAImB,EAAS3E,EAAE+D,KAAK,CAAChF,GAAG,CACxB4F,CAAM,CAAC3F,EAAK,CAAG2F,CAAM,CAAC3F,EAAK,EAAI,EAAE,CACjC2F,CAAM,CAAC3F,EAAK,CAAC4F,IAAI,CAACpB,EACpB,EAUAQ,IAAK,SAAShF,CAAI,CAAE6E,CAAG,EACrB,IAAIgB,EAAY7E,EAAE+D,KAAK,CAAChF,GAAG,CAACC,EAAK,CACjC,GAAI,AAAC6F,GAAcA,EAAUC,MAAM,CAGnC,CAHqC,AAAnB,GAGb,IAAWtB,EAAP3H,EAAI,EAAa2H,EAAWqB,CAAS,CAAChJ,IAAI,EAAI,AACrD2H,EAASK,EAEb,CACF,QACAzD,CACF,EACA,SAASA,EAAMC,CAAI,CAAEC,CAAO,CAAEC,CAAK,CAAEwE,CAAU,EAC7C,IAAI,CAAC1E,IAAI,CAAGA,EACZ,IAAI,CAACC,OAAO,CAAGA,EACf,IAAI,CAACC,KAAK,CAAGA,EACb,IAAI,CAACuE,MAAM,CAA+B,EAA5B,CAACC,GAAc,EAAA,CAAE,CAAED,MAAM,AACzC,CAmCA,SAASU,EAAaC,CAAO,CAAEC,CAAG,CAAElD,CAAI,CAAEmD,CAAU,EAClDF,EAAQG,SAAS,CAAGF,EACpB,IAAIG,EAAQJ,EAAQjE,IAAI,CAACgB,GACzB,GAAIqD,GAASF,GAAcE,CAAK,CAAC,EAAE,CAAE,CACnC,IAAIC,EAAmBD,CAAK,CAAC,EAAE,CAACf,MAAM,CACtCe,EAAME,KAAK,EAAID,EACfD,CAAK,CAAC,EAAE,CAAGA,CAAK,CAAC,EAAE,CAAC/E,KAAK,CAACgF,EAC5B,CACA,OAAOD,CACT,CAmGA,SAASvB,IACP,IAAIE,EAAO,CAAE7G,MAAO,KAAM0J,KAAM,KAAMV,KAAM,IAAK,EAC7CC,EAAO,CAAEjJ,MAAO,KAAM0J,KAAM7C,EAAMmC,KAAM,IAAK,CACjDnC,GAAKmC,IAAI,CAAGC,EACZ,IAAI,CAACpC,IAAI,CAAGA,EACZ,IAAI,CAACoC,IAAI,CAAGA,EACZ,IAAI,CAAC9B,MAAM,CAAG,CAChB,CACA,SAASP,EAASkD,CAAI,CAAEC,CAAI,CAAE/J,CAAK,EACjC,IAAIgJ,EAAOe,EAAKf,IAAI,CAChBgB,EAAU,OAAEhK,EAAO0J,KAAMK,OAAMf,CAAK,EAIxC,OAHAe,EAAKf,IAAI,CAAGgB,EACZhB,EAAKU,IAAI,CAAGM,EACZF,EAAK3C,MAAM,GACJ6C,CACT,CAmBA,OAhLAvH,EAAM+D,SAAS,CAAG,SAASA,EAAUvD,CAAC,CAAEiB,CAAQ,EAC9C,GAAgB,UAAU,AAAtB,OAAOjB,EACT,OAAOA,EAET,GAAIJ,MAAMC,OAAO,CAACG,GAAI,CACpB,IAAIoE,EAAI,GAIR,OAHApE,EAAEQ,OAAO,CAAC,SAAS6D,CAAC,EAClBD,GAAKb,EAAUc,EAAGpD,EACpB,GACOmD,CACT,CACA,IAAInB,EAAM,CACRxD,KAAMO,EAAEP,IAAI,CACZC,QAAS6D,EAAUvD,EAAEN,OAAO,CAAEuB,GAC9BqD,IAAK,OACLC,QAAS,CAAC,QAASvE,EAAEP,IAAI,CAAC,CAC1B+E,WAAY,CAAC,WACbvD,CACF,EACIwD,EAAUzE,EAAEL,KAAK,CACjB8E,IACE7E,KADO,CACDC,OAAO,CAAC4E,GAChB7E,MAAMpD,CADoB,QACX,CAACwH,IAAI,CAACU,KAAK,CAACzB,EAAIsB,OAAO,CAAEE,GAExCxB,EAAIsB,OAAO,CAACP,IAAI,CAACS,IAGrBrF,EAAE+D,KAAK,CAACC,GAAG,CAAC,OAAQH,GACpB,IAAIuB,EAAa,GACjB,IAAK,IAAIpG,KAAQ6E,EAAIuB,UAAU,CAAE,AAC/BA,GAAc,IAAMpG,EAAO,KAAO,AAAC6E,GAAIuB,UAAU,CAACpG,EAAK,EAAI,EAAA,CAAE,CAAE2B,OAAO,CAAC,KAAM,UAAY,IAE3F,MAAO,IAAMkD,EAAIqB,GAAG,CAAG,WAAarB,EAAIsB,OAAO,CAACI,IAAI,CAAC,KAAO,IAAMH,EAAa,IAAMvB,EAAIvD,OAAO,CAAG,KAAOuD,EAAIqB,GAAG,CAAG,GACtH,EA+IOlF,CACT,IACAL,EAAOd,OAAO,CAAGe,EACjBA,EAAOkI,OAAO,CAAGlI,CACnB,CACF,EAlqB8B,SAAShB,EACrC,OAAOD,GAAO,CAAC,EAAGD,CAAE,CAAC7B,EAAkB6B,EAAG,CAAC,GAAE,AAAC,EAAE,AAACC,GAAM,CAAEE,QAAS,CAAC,EAAE,CAAC,CAAEA,OAAO,CAAEF,GAAMA,EAAIE,OAAO,AACpG,MAamE3C,EAASe,EAAa0B,IAAQ,CAAC,EAAGO,CARnF,CAACC,EAAIC,EAAcE,KACnC,CAQA,EARIF,GAAwB,UAAhB,OAAOA,GAAqC,AAAhB,YAA4B,OAArBA,EAC7C,IAAK,IAAI1B,KAAOb,EAAkBuC,GAC5B,AAACjC,EAAae,CAAlB,GAAsB,AAM4C,CAN3CiB,EAAIzB,SAHJ2B,IAGY3B,GACjCrB,EAAU8C,EAAIzB,CAD2B2B,CACtB,CAAEJ,IAAK,IAAMG,CAAI,CAAC1B,EAAI,CAAEE,WAAY,CAAC,CAAC0B,EAAO7C,EAAiB2C,EAAM1B,EAAAA,CAAI,EAAK4B,EAAK1B,UAAU,AAAC,GAEtH,OAAOuB,CACT,GAMEK,AAAeb,GAAQA,EAAIc,EAAL,OAAR,CAAuB,CAAoElB,EAAjElC,EAAUkC,EAAQ,UAAW,CAAEZ,MAAOgB,EAAKf,YAAY,CAAK,GACpGe,IAipBFoJ,AAhpBC,EAgpBK1F,SAAS,CAAC2F,MAAM,CAAG,CAAEC,QAAS,CAAExC,QAAS,8BAA+Bc,QAAQ,CAAK,EAAG2B,OAAQ,CAAEzC,QAAS,iBAAkBc,QAAQ,CAAK,EAAG4B,QAAS,CAAE1C,QAAS,uHAAwHc,QAAQ,EAAMzD,OAAQ,CAAE,kBAAmB,CAAE2C,QAAS,6BAA8BE,YAAY,EAAMY,QAAQ,EAAMzD,OAAQ,IAAK,EAAGsF,OAAQ,CAAE3C,QAAS,kBAAmBc,QAAQ,CAAK,EAAG8B,YAAa,eAAgB,cAAe,YAAarJ,KAAM,YAAa,CAAE,EAAGsJ,MAAO,CAAE7C,QAAS,4BAA6Bc,QAAQ,CAAK,EAAGrB,IAAK,CAAEO,QAAS,uHAAwHc,QAAQ,EAAMzD,OAAQ,CAAEoC,IAAK,CAAEO,QAAS,iBAAkB3C,OAAQ,CAAEuF,YAAa,QAASE,UAAW,cAAe,CAAE,EAAG,eAAgB,EAAE,CAAE,aAAc,CAAE9C,QAAS,qCAAsC3C,OAAQ,CAAEuF,YAAa,CAAC,CAAE5C,QAAS,KAAMlF,MAAO,aAAc,EAAG,CAAEkF,QAAS,mBAAoBE,YAAY,CAAK,EAAE,AAAC,CAAE,EAAG0C,YAAa,OAAQ,YAAa,CAAE5C,QAAS,YAAa3C,OAAQ,CAAEyF,UAAW,cAAe,CAAE,CAAE,CAAE,EAAGC,OAAQ,CAAC,CAAE/C,QAAS,kBAAmBlF,MAAO,cAAe,EAAG,qBAAqB,AAAC,EAAGwH,EAAM1F,SAAS,CAAC2F,MAAM,CAAC9C,GAAG,CAACpC,MAAM,CAAC,aAAa,CAACA,MAAM,CAAC0F,MAAM,CAAGT,EAAM1F,SAAS,CAAC2F,MAAM,CAACQ,MAAM,CAAET,EAAM1F,SAAS,CAAC2F,MAAM,CAACG,OAAO,CAACrF,MAAM,CAAC,kBAAkB,CAACA,MAAM,CAAGiF,EAAM1F,SAAS,CAAC2F,MAAM,CAAED,EAAMhE,KAAK,CAAC/B,GAAG,CAAC,OAAQ,SAASiD,CAAC,EAC/8C,WAAaA,EAAE5E,IAAI,EAAK4E,EAAD,CAAGG,UAAU,CAACqD,KAAK,CAAGxD,EAAE3E,OAAO,CAACK,OAAO,CAAC,QAAS,IAAA,CAAI,AAC9E,GAAIxE,OAAOG,cAAc,CAACyL,EAAM1F,SAAS,CAAC2F,MAAM,CAAC9C,GAAG,CAAE,aAAc,CAAEvH,MAAO,SAASsH,CAAC,CAAEyD,CAAC,EACxF,IAAI3M,EAAI,CAAC,EAAGA,EAAKA,EAAC,AAAF,CAAG,YAAc2M,EAAE,CAAG,CAAEjD,QAAS,oCAAqCE,YAAY,EAAM7C,OAAQiF,EAAM1F,SAAS,CAACqG,EAAE,AAAC,EAAG3M,EAAEuM,KAAK,CAAG,uBAAwB,CAAE,iBAAkB,CAAE7C,QAAS,4BAA6B3C,OAAQ/G,CAAE,CAAE,CAAC,EAAG2M,EAAK3M,EAAD,AAAE,CAAC,YAAc2M,EAAE,CAAG,CAAEjD,QAAS,UAAW3C,OAAQiF,EAAM1F,SAAS,CAACqG,EAAE,AAAC,EAAG,EAAC,CAAC,CACpUA,CAAC,CAACzD,EAAE,CAAG,CAAEQ,QAAS3D,OAAO,wFAAwFzD,MAAM,CAACsC,OAAO,CAAC,MAAO,WACrI,OAAOsE,CACT,GAAI,KAAMU,YAAY,EAAMY,QAAQ,EAAMzD,OAAQ/G,CAAE,EAAGgM,EAAM1F,SAAS,CAACQ,YAAY,CAAC,SAAU,QAAS6F,EACzG,CAAE,GAAIvM,OAAOG,cAAc,CAACyL,EAAM1F,SAAS,CAAC2F,MAAM,CAAC9C,GAAG,CAAE,eAAgB,CAAEvH,MAAO,SAASsH,CAAC,CAAEyD,CAAC,EAC5FX,EAAM1F,SAAS,CAAC2F,MAAM,CAAC9C,GAAG,CAACpC,MAAM,CAAC,eAAe,CAAC8B,IAAI,CAAC,CAAEa,QAAS3D,OAAO,aAAazD,MAAM,CAAG,MAAQ4G,EAAI,IAAM,iDAAiD5G,MAAM,CAAE,KAAMsH,YAAY,EAAM7C,OAAQ,CAAE,YAAa,WAAY,aAAc,CAAE2C,QAAS,WAAY3C,OAAQ,CAAEnF,MAAO,CAAE8H,QAAS,yCAA0CE,YAAY,EAAMpF,MAAO,CAACmI,EAAG,YAAcA,EAAE,CAAE5F,OAAQiF,EAAM1F,SAAS,CAACqG,EAAE,AAAC,EAAGL,YAAa,CAAC,CAAE5C,QAAS,KAAMlF,MAAO,aAAc,EAAG,MAAM,AAAC,CAAE,CAAE,CAAE,EACne,CAAE,GAAIwH,EAAM1F,SAAS,CAACsG,IAAI,CAAGZ,EAAM1F,SAAS,CAAC2F,MAAM,CAAED,EAAM1F,SAAS,CAACuG,MAAM,CAAGb,EAAM1F,SAAS,CAAC2F,MAAM,CAAED,EAAM1F,SAAS,CAACwG,GAAG,CAAGd,EAAM1F,SAAS,CAAC2F,MAAM,CAAED,EAAM1F,SAAS,CAACyG,GAAG,CAAGf,EAAM1F,SAAS,CAACK,MAAM,CAAC,SAAU,CAAC,GAAIqF,EAAM1F,SAAS,CAAC0G,IAAI,CAAGhB,EAAM1F,SAAS,CAACyG,GAAG,CAAEf,EAAM1F,SAAS,CAAC2G,IAAI,CAAGjB,EAAM1F,SAAS,CAACyG,GAAG,CAAEf,EAAM1F,SAAS,CAAC4G,GAAG,CAAGlB,EAAM1F,SAAS,CAACyG,GAAG,CAC3UJ,CAD6U,CACzU,CAAEjD,OADgVR,CAAC,AACxU,uBAAwB1E,MAAO,QAAS,IAA8IuB,OAAOhG,CAAhDA,EAAI,eAAiBC,CAAvHA,EAAI,8FAAqHsC,MAAM,CAAG,KAAoB,IAAMvC,GAAIF,EAAI,CAAE6J,QAAS,wBAAyBE,YAAY,EAAMpF,MAAO,UAAW,EAE1SwH,AADA9C,EAAE5C,SAAS,CAAC6G,KAAK,CAAG,CAAE,aAAc,CAAEzD,QAAS,kDAAmDE,YAAY,EAAM7C,OAAQ,CAAE,sBAAuB,CAAE2C,QAAS,UAAWE,YAAY,EAAMpF,MAAO,UAAW,EAAG,yBAA0B,CAAEkF,QAAS,UAAWlF,MAAO,aAAc,EAAG4I,MAAO,CAAE1D,QAAS3J,EAAGgH,OAAQ,CAAEsG,OAAQrN,EAAG,oBAAqB,CAAE0J,QAAS,IAAKlF,MAAO,UAAW,CAAE,CAAE,EAAG,iBAAkBmI,EAAG,WAAY,CAAEjD,QAAS,yBAA0BlF,MAAO,YAAa,EAAG6I,OAAQrN,CAAE,CAAE,EAAG,iBAAkB2M,EAAG,WAAY,CAAEjD,QAAS,4BAA6BlF,MAAO,YAAa,EAAG8I,cAAe,CAAC,CAAE5D,QAAS,2BAA4BlF,MAAO,SAAU,EAAG,CAAEkF,QAAS,eAAgBlF,MAAO,UAAWuC,OAAQ,CAAE,aAAclH,CAAE,CAAE,EAAE,CAAE0N,OAAQ,CAAE7D,QAAS,kBAAmBlF,MAAO,UAAW,EAAG6I,OAAQrN,EAAGwN,MAAO,CAAC,CAAE9D,QAAS,8EAA+ElF,MAAO,cAAeuC,OAAQ,CAAE,aAAclH,CAAE,CAAE,EAAG,CAAE6J,QAAS,KAAMlF,MAAO,aAAc,EAAE,CAAEiJ,WAAY,CAAE/D,QAAS,kCAAmClF,MAAO,QAAS,EAAGkJ,YAAa,CAAEhE,QAAS,KAAMlF,MAAO,SAAU,CAAE,EACnmCwH,EAAM1F,SAAS,CAACqH,KAAK,CAAG,CAAEzB,QAAS,CAAC,CAAExC,QAAS,kCAAmCE,YAAY,EAAMY,QAAQ,CAAK,EAAG,CAAEd,QAAS,mBAAoBE,YAAY,EAAMY,QAAQ,CAAK,EAAE,CAAE6B,OAAQ,CAAE3C,QAAS,iDAAkDc,QAAQ,CAAK,EAAG,aAAc,CAAEd,QAAS,2FAA4FE,YAAY,EAAM7C,OAAQ,CAAEuF,YAAa,OAAQ,CAAE,EAAGsB,QAAS,6GAA8GC,QAAS,qBAAsBC,SAAU,cAAeC,OAAQ,4DAA6DC,SAAU,+CAAgD1B,YAAa,eAAgB,EAAGN,EAAM1F,SAAS,CAAC2H,UAAU,CAAGjC,EAAM1F,SAAS,CAACK,MAAM,CAAC,QAAS,CAAE,aAAc,CAACqF,EAAM1F,SAAS,CAACqH,KAAK,CAAC,aAAa,CAAE,CAAEjE,QAAS,0GAA2GE,YAAY,CAAK,EAAE,CAAEgE,QAAS,CAAC,CAAElE,QAAS,uBAAwBE,WAAY,EAAK,EAAG,CAAEF,QAAS,mdAAodE,YAAY,CAAK,EAAE,CAAEkE,SAAU,oGAAqGC,OAAQ,CAAErE,QAAS3D,OAAO,aAAazD,MAAM,CAAG,MAAQ,eAAeA,MAAM,CAAG,IAAM,0BAA0BA,MAAM,CAAG,IAAM,4BAA4BA,MAAM,CAAG,IAAM,sCAAsCA,MAAM,CAAG,IAAM,gBAAgBA,MAAM,CAAG,IAAM,oFAAoFA,MAAM,CAAG,IAAM,YAAYA,MAAM,EAAGsH,YAAY,CAAK,EAAGoE,SAAU,2FAA4F,GAAIhC,EAAM1F,SAAS,CAAC2H,UAAU,CAAC,aAAa,CAAC,EAAE,CAACvE,OAAO,CAAG,uEAAwEsC,EAAM1F,SAAS,CAACQ,YAAY,CAAC,aAAc,UAAW,CAAEqG,MAAO,CAAEzD,QAAS3D,OAAO,0DAA0DzD,MAAM,CAAG,KAAKA,MAAM,CAAG,MAAQ,iEAAiEA,MAAM,CAAG,IAAM,qIAAqIA,MAAM,CAAG,IAAM,kEAAkEA,MAAM,EAAGsH,WAAY,GAAMY,QAAQ,EAAMzD,OAAQ,CAAE,eAAgB,CAAE2C,QAAS,4BAA6BE,YAAY,EAAMpF,MAAO,iBAAkBuC,OAAQiF,EAAM1F,SAAS,CAAC6G,KAAK,AAAC,EAAG,kBAAmB,UAAW,cAAe,UAAW,CAAE,EAAG,oBAAqB,CAAEzD,QAAS,gMAAiMlF,MAAO,UAAW,EAAG0J,UAAW,CAAC,CAAExE,QAAS,sIAAuIE,YAAY,EAAM7C,OAAQiF,EAAM1F,SAAS,CAAC2H,UAAU,AAAC,EAAG,CAAEvE,QAAS,qFAAsFE,YAAY,EAAM7C,OAAQiF,EAAM1F,SAAS,CAAC2H,UAAU,AAAC,EAAG,CAAEvE,QAAS,kEAAmEE,YAAY,EAAM7C,OAAQiF,EAAM1F,SAAS,CAAC2H,UAAU,AAAC,EAAG,CAAEvE,QAAS,8eAA+eE,YAAY,EAAM7C,OAAQiF,EAAM1F,SAAS,CAAC2H,UAAU,AAAC,EAAE,CAAEE,SAAU,2BAA4B,GAAInC,EAAM1F,SAAS,CAACQ,YAAY,CAAC,aAAc,SAAU,CAAEsH,SAAU,CAAE1E,QAAS,QAASc,QAAQ,EAAMhG,MAAO,SAAU,EAAG,kBAAmB,CAAEkF,QAAS,2EAA4Ec,OAAQ,GAAMzD,OAAQ,CAAE,uBAAwB,CAAE2C,QAAS,QAASlF,MAAO,QAAS,EAAG6J,cAAe,CAAE3E,QAAS,mEAAoEE,YAAY,EAAM7C,OAAQ,CAAE,4BAA6B,CAAE2C,QAAS,YAAalF,MAAO,aAAc,EAAG6D,KAAM2D,EAAM1F,SAAS,CAAC2H,UAAU,AAAC,CAAE,EAAG5B,OAAQ,SAAU,CAAE,EAAG,kBAAmB,CAAE3C,QAAS,4EAA6EE,YAAY,EAAMY,QAAQ,EAAMhG,MAAO,UAAW,CAAE,GAAIwH,EAAM1F,SAAS,CAACQ,YAAY,CAAC,aAAc,WAAY,CAAE,mBAAoB,CAAE4C,QAAS,oFAAqFE,YAAY,EAAMpF,MAAO,UAAW,CAAE,GAAIwH,EAAM1F,SAAS,CAAC2F,MAAM,GAAKD,CAAD,CAAO1F,SAAS,CAAC2F,MAAM,CAAC9C,GAAG,CAACmF,UAAU,CAAC,SAAU,cAAetC,EAAM1F,SAAS,CAAC2F,MAAM,CAAC9C,GAAG,CAACoF,YAAY,CAAC,yNAAyNjM,MAAM,CAAE,aAAA,CAAa,CAAG0J,EAAM1F,SAAS,CAACkI,EAAE,CAAGxC,EAAM1F,SAAS,CAAC2H,UAAU,CAAEjC,EAAM1F,SAAS,CAACmI,YAAY,CAAGzC,EAAM1F,SAAS,CAACK,MAAM,CAAC,aAAc,CAAEiH,QAAS,uUAAwUI,SAAU,2DAA4D,GAAIhC,EAAM1F,SAAS,CAACmI,YAAY,CAAC,aAAa,CAACjK,KAAK,CAAG,WAAY,OAAOwH,EAAM1F,SAAS,CAACmI,YAAY,CAACP,SAAS,CAAE,OAAOlC,EAAM1F,SAAS,CAACmI,YAAY,CAAC,mBAAmB,CAAEzC,EAAM1F,SAAS,CAAC2F,MAAM,EAAID,EAAM1F,SAAS,CAACQ,YAAY,CAAC,eAAgB,SAAU,CAAEiG,IAAK,CAAErD,QAAS,4EAA6EE,YAAY,EAAM7C,OAAQiF,EAAM1F,SAAS,CAAC2F,MAAO,AAAD,CAAG,GAC7+MU,CADi/M,CAC7+M,QADs/MzD,CAAC,GAC1+MlJ,EAAI,CAAE0J,QAAS,aAAclF,MAAO,UAAW,EACpE0E,EAAE5C,SAAS,CAACoI,YAAY,CAAGxF,AAC3B8C,EAD6B1F,MACrB,GAD8B,CAACK,KACtBmI,CAD4B,AAC3B,CAD4B,aAAc,CAAE5C,QAASS,EAAGN,OAAQ,CAAC,CAAE3C,QAAS,yBAA0Bc,QAAQ,CAAK,EAAG,CAAEd,QAAS,yBAA0Bc,QAAQ,EAAMzD,OAAQ,CAAEsH,cAAerO,CAAE,CAAE,EAAE,CAAE4N,QAAS,mSAAoS,eAAgB,CAAElE,QAAS,aAAclF,MAAO,UAAW,CAAE,GAAI0E,EAAE5C,SAAS,CAACQ,YAAY,CAAC,eAAgB,UAAW,CAAE,oBAAqB,CAAE4C,QAAS,iBAAkBlF,MAAO,SAAU,EAAG,cAAe,CAAEkF,QAAS,qBAAsBlF,MAAO,QAASuC,OAAQ,CAAEmF,QAASS,EAAG0B,cAAerO,CAAE,CAAE,CAAE,GAAIkJ,EAAE5C,SAAS,CAACQ,YAAY,CAAC,eAAgB,SAAU,CAAE,oBAAqB,CAAE4C,QAAS,yBAA0B3C,OAAQ,CAAE4H,UAAW,CAAEjF,QAAS,QAASlF,MAAO,aAAc,EAAGoK,OAAQ,CAAElF,QAAS,UAAWlF,MAAO,sBAAuBuC,OAAQmC,EAAE5C,SAAS,CAAC2H,UAAU,AAAC,CAAE,CAAE,EAAG,mBAAoB,CAAC,CAAEvE,QAAS,iBAAkBc,QAAQ,EAAMhG,MAAO,QAAS,EAAG,CAAEkF,QAAS,iBAAkBc,QAAQ,EAAMhG,MAAO,SAAUuC,OAAQ,CAAEsH,cAAerO,CAAE,CAAE,EAAE,AAAC,GAAIkJ,EAAE5C,SAAS,CAACQ,YAAY,CAAC,eAAgB,UAAW,CAAEY,SAAU,wBAAyB,GAAI,OAAOwB,EAAE5C,SAAS,CAACoI,YAAY,CAAC,kBAAkB,CAAExF,EAAE5C,SAAS,CAACuI,MAAM,CAAG3F,EAAE5C,SAAS,CAACoI,YAAY,CAGx7CtO,OAAOG,cAAc,CADjB2I,AACkBA,EADd4F,EAAExI,SAAS,CAACyI,WAAW,CAAG,CAAEb,UAAW,CAAExE,QAAS,iEAAkEE,YAAY,CAAK,EAAGgE,QAAS,CAAElE,QAAS,wDAAyDE,YAAY,CAAK,EAAG0C,YAAa,MAAO,EAC5O,aAAc,CAAE1K,MAAO,SAASoN,CAAE,CAAEnK,CAAC,EAC5D,CAACmK,EAAK,UAAY,OAAOA,EAAK,CAACA,EAAG,CAAGA,CAAAA,CAAE,CAAE3J,OAAO,CAAC,SAAS4J,CAAE,EAC1D,IAAItC,EAAI,SAASuC,CAAE,EACjBA,EAAGnI,MAAM,GAAKmI,CAAD,CAAInI,MAAM,CAAG,EAAC,CAAC,CAAGmI,EAAGnI,MAAM,CAACsB,IAAI,CAAGxD,CAClD,EAAG7E,EAAI,cACP,GAAID,EAAI+O,EAAExI,SAAS,CAAC2I,EAAG,CAAE,CACvB,IAAIlP,EAAGF,EAAIE,CAAC,CAACC,EAAE,CACf,GAAI,CAACH,EAAIA,GAAQ,CAACE,AAALF,EAASiP,AAQ5B9C,EAR8B1F,MAQtB,GAR+B,CAACQ,KAQvBoC,CAAC,MARkC,CAAC+F,EAAI,UAAW,CAAE,cAAe,CAAEvF,QAAS,wCAAyCE,WAAY,GAAMpF,MAAO,SAAU,CAAE,EAAA,CAAG,AAAD,CAAExE,EAAAA,AAAE,YAAa+F,QAAWlG,EAAD,CAAKE,CAAC,CAACC,EAAE,CAAG,CAAE0J,QAAS7J,EAAE,CAAC,CAAG4E,MAAMC,OAAO,CAAC7E,GAC9O,IAAK,IAAIoJ,EAAI,EAAGnJ,EAAID,EAAEkJ,MAAM,CAAEE,EAAInJ,EAAGmJ,IACnCpJ,CAAC,CAACoJ,EAAE,WAAYlD,SAAWlG,CAAD,AAAE,CAACoJ,EAAE,CAAG,CAAES,QAAS7J,CAAC,CAACoJ,EAAE,CAAC,CAAC,CAAG0D,EAAE9M,CAAC,CAACoJ,EAAE,OAE9D0D,EAAE9M,EACN,CACF,EACF,CAAE,GAAIqJ,EAAEiG,UAAU,CAAC,CAAC,OAAQ,aAAc,MAAM,CAAEjG,GAE9CyD,EAAI,8EAERX,AAF4F9C,EAAE5C,MAEtF,GAF+F,CAAC8I,GAAG,CAAG,CAAElD,AAE/FhD,CAAC,OAFuG,mBAAoBmG,OAAQ,CAAE3F,QAAS3D,OAAO,aAAe,sBAAsBzD,MAAM,CAAG,IAAMqK,EAAErK,MAAM,CAAG,MAAQ,kBAAkBA,MAAM,EAAGyE,OAAQ,CAAEuI,KAAM,WAAY,6BAA8B,CAAE5F,QAAS,4FAA6FE,YAAY,EAAMpF,MAAO,UAAW,EAAGoJ,QAAS,CAAElE,QAAS,yCAA0CE,YAAY,CAAK,CAAE,CAAE,EAAG2F,IAAK,CAAE7F,QAAS3D,OAAO,eAAiB4G,EAAErK,MAAM,CAAG,IAAM,8BAA8BA,MAAM,CAAG,OAAQ,KAAMkI,QAAQ,EAAMzD,OAAQ,CAAE+G,SAAU,QAASxB,YAAa,UAAWD,OAAQ,CAAE3C,QAAS3D,OAAO,IAAM4G,EAAErK,MAAM,CAAG,KAAMkC,MAAO,KAAM,CAAE,CAAE,EAAGgL,SAAU,CAAE9F,QAAS3D,OAAO,CAAC,iDAAiD,CAAC,EAAG4G,EAAErK,MAAM,CAAG,iBAAkBsH,YAAY,CAAK,EAAGyC,OAAQ,CAAE3C,QAASiD,EAAGnC,QAAQ,CAAK,EAAG9C,SAAU,CAAEgC,QAAS,oFAAqFE,YAAY,CAAK,EAAG6F,UAAW,gBAAiB3B,SAAU,CAAEpE,QAAS,kCAAmCE,YAAY,CAAK,EAAG0C,YAAa,WAAY,EAAGpD,EAAE5C,SAAS,CAAC8I,GAAG,CAACC,MAAM,CAACtI,MAAM,CAACsB,IAAI,CAAGa,EAAE5C,SAAS,CAAC8I,GAAG,IAAElG,EAAE5C,SAAS,CAAC2F,MAAM,IAC3wCU,EAAExD,GAAG,CAACmF,UAAU,CAAC,QAAS,OAAQ3B,EAAExD,GAAG,CAACoF,YAAY,CAAC,QAAS,MAAA,CAAM,CAEtE5B,EAAI,gDAAsDzD,EAAE5C,SAAS,CAAC8I,GAAG,CAACI,QAAQ,CAAG,CAAE9F,QAASR,EAAE5C,SAAS,CAAC8I,GAAG,CAACI,QAAQ,CAAC9F,OAAO,CAAEE,YAAY,EAAM7C,OAAQ4F,EAAI,CAAE,iBAAkB,+DAAgE,eAAgB,UAAW+C,MAAO,WAAYtK,GAAI,UAAWuK,UAAW,CAAEjG,QAAS3D,OAAO,CAAC,gBAAgB,CAAC,EAAG4G,EAAErK,MAAM,CAAG,SAAUkI,QAAQ,EAAMzD,OAAQ,CAAEuF,YAAa,UAAW,mBAAoB,CAAE5C,QAAS,aAAcE,YAAY,EAAMpF,MAAO,SAAU,EAAGgI,UAAW,CAAE9C,QAAS,4CAA6CE,YAAY,EAAM7C,OAAQ,CAAEuF,YAAa,KAAM,CAAE,EAAG,YAAa,CAAE5C,QAAS,oCAAqCE,YAAY,CAAK,EAAG,aAAc,CAAC+C,EAAG,CAAEjD,QAAS,4CAA6CE,WAAY,EAAK,EAAE,CAAEoE,SAAU,WAAY,CAAE,EAAG,OAAQ,CAAC,CAAEtE,QAAS,kDAAmDE,YAAY,EAAM7C,OAAQ,CAAEgH,OAAQ,SAAUC,SAAU,MAAO,CAAE,EAAG,CAAEtE,QAAS,gCAAiCE,YAAY,CAAK,EAAE,CAAEgG,WAAY,cAAetD,YAAa,OAAQ,CAAE,EAAGpD,AAElkC8C,EAFokC1F,SAAS,CAAC8I,GAAG,CAACC,MAAM,CAACtI,MAAM,CAAC,6BAA6B,CAACA,MAAM,CAAG4F,EAAGzD,EAAE5C,SAAS,CAACQ,YAAY,CAAC,MAAO,WAAY,CAAE+I,SAAU,CAAEnG,QAAS,8EAA+EE,YAAY,CAAK,CAAE,GAAtvC+C,EAA0vC,CAAEjD,CAAxvC,OAAiwC,+BAAgCE,YAAY,CAAK,CAAC,GAAO,CAAEF,QAAS,uCAAwCE,YAAY,CAAK,EAC37CV,EAAE5C,SAAS,CAACQ,YAAY,CAAC,MAAO,WAAY,CAAEkH,SAAU,CAAEtE,QAAS,qBAAsBE,YAAY,CAAK,EAAGkG,QAAS,CAAEpG,QAAS,qBAAsBlF,MAAO,OAAQ,EAAGuL,MAAO,CAAC,CAAErG,QAAS,k7CAAm7CE,YAAY,CAAK,EAAG,CAAEF,QAAS,4JAA6J3C,OAAQ,CAAEiJ,KAAMrD,EAAGoB,OAAQ/N,EAAG8N,SAAU,eAAgBxB,YAAa,OAAQ,CAAE,EAAE,CAAEG,OAAQ,kBAAmBuD,KAAMrD,EAAGoB,OAAQ/N,CAAE,GACp6D,SAASkJ,CAAC,EAClB,IAAIyD,EAAI,mBAAoB3M,EAAI,mFAAoFD,EAAI,MAAQC,EAAEsC,MAAM,CAAG,WAAaqK,EAAErK,MAAM,CAAG,MAAQqK,EAAErK,MAAM,CAAG,WAAatC,EAAEsC,MAAM,CAAG,MAAOzC,EAAI,kJAAkJyC,MAAM,CAACsC,OAAO,CAAC,WAAY,WACpY,MAAO,2EAA2EtC,MAAM,AAC1F,GAAI2G,EAAI,8CAA8C3G,MAAM,CAC5D,SAASxC,EAAEkP,CAAE,CAAEiB,CAAE,EAOf,OANAA,EAAK,CAACA,GAAM,EAAA,CAAE,CAAErL,OAAO,CAAC,KAAM,IAAM,IAM7BmB,OAAOmK,AALL,yFAAyF5N,MAAM,CAACsC,OAAO,CAAC,YAAa,WAC5H,OAAO7E,CACT,GAAG6E,OAAO,CAAC,aAAc,WACvB,OAAOoK,CACT,GACkBiB,EACpB,CACA/G,EAAE5C,SAAS,CAAC6J,IAAI,CAAG,CAAEC,OAAQ,CAAE1G,QAAS3D,OAAO,6FAA6FzD,MAAM,CAACsC,OAAO,CAAC,YAAa,WACtK,OAAO7E,CACT,IAAK6J,YAAY,EAAMpF,MAAO,QAAS,EAAG0H,QAAS,MAAOvK,IAAK,CAAE+H,QAAS3D,OAAO,kEAAkEzD,MAAM,CAACsC,OAAO,CAAC,YAAa,WAC7K,OAAO7E,CACT,GAAG6E,OAAO,CAAC,WAAY,WACrB,MAAO,MAAQ/E,EAAI,IAAMoJ,EAAI,GAC/B,IAAKW,YAAY,EAAMY,QAAQ,EAAMhG,MAAO,QAAS,EAAG6L,UAAW,CAAE3G,QAAS,gBAAiBE,WAAY,GAAMpF,MAAO,WAAY,EAAG8L,SAAU,CAAE5G,QAAS5J,EAAE,sJAAsJwC,MAAM,EAAGsH,YAAY,EAAMpF,MAAO,QAAS,EAAGqJ,QAAS,CAAEnE,QAAS5J,EAAE,aAAawC,MAAM,CAAE,KAAMsH,YAAY,EAAMpF,MAAO,WAAY,EAAG+L,KAAM,CAAE7G,QAAS5J,EAAE,SAASwC,MAAM,CAAE,KAAMsH,YAAY,EAAMpF,MAAO,WAAY,EAAG6H,OAAQ,CAAE3C,QAAS5J,EAAEmJ,GAAIW,YAAY,EAAMY,QAAQ,CAAK,EAAGuD,OAAQ,CAAErE,QAAS5J,EAAE,iFAAiFwC,MAAM,CAAE,KAAMsH,YAAY,CAAK,EAAGT,IAAKnJ,EAAGyP,UAAW9C,EAAGL,YAAa,2BAA4B,EAAGpD,EAAE5C,SAAS,CAACkK,GAAG,CAAGtH,EAAE5C,SAAS,CAAC6J,IAAI,AACtzB,EAAEnE,GAAQ,SAASnH,CAAC,EAClB,IAAI8H,EAAI,2CAA2CrK,MAAM,CACzD,SAAS4G,EAAE8F,CAAE,EACX,OAAOA,EAAKA,EAAGpK,OAAO,CAAC,WAAY,WACjC,OAAO+H,CACT,GAAI5G,OAAO,0BAA0BzD,MAAM,CAAG,MAAQ0M,EAAK,IAC7D,CACA,IAAIhP,EAAI,4DAA4DsC,MAAM,CAAEvC,EAAI,+CAA+CuC,MAAM,CAACsC,OAAO,CAAC,MAAO,WACnJ,OAAO5E,CACT,GAAIH,EAAI,sEAAsEyC,MAAM,CAAEwM,GAAKjK,CAAD,CAAGyB,SAAS,CAACmK,QAAQ,CAAG5L,EAAEyB,SAAS,CAACK,MAAM,CAAC,SAAU,CAAC,GAAI9B,EAAEyB,SAAS,CAACQ,YAAY,CAAC,WAAY,SAAU,CAAE,qBAAsB,CAAE4C,QAAS,kDAAmDE,YAAY,EAAMY,QAAQ,EAAMzD,OAAQ,CAAEuF,YAAa,YAAa,eAAgB,CAAE5C,QAAS,iBAAkBlF,MAAO,CAAC,OAAQ,gBAAgB,CAAEuC,OAAQlC,EAAEyB,SAAS,CAAC6J,IAAI,AAAC,CAAE,CAAE,EAAGO,WAAY,CAAEhH,QAAS,kBAAmBlF,MAAO,aAAc,EAAGmM,MAAO,CAAEjH,QAAS3D,OAAO,IAAMhG,EAAIF,EAAI,MAAQE,EAAI,KAAM,KAAMgH,OAAQ,CAAE,kBAAmB,CAAE2C,QAAS3D,OAAO,KAAOhG,EAAIF,EAAI,OAASE,EAAI,OAAQ6J,YAAY,EAAM7C,OAAQ,CAAE,aAAc,CAAE2C,QAAS3D,OAAO/F,GAAI+G,OAAQlC,EAAEyB,SAAS,CAACmK,QAAS,AAAD,EAAInE,YAAa,IAAK,CAAE,EAAG,aAAc,CAAE5C,QAAS3D,OAAO,KAAOhG,EAAI,IAAMF,EAAI,KAAM+J,WAAY,GAAM7C,OAAQ,CAAEuF,YAAa,cAAe,CAAE,EAAG,mBAAoB,CAAE5C,QAAS3D,OAAO,IAAMhG,EAAI,KAAMgH,OAAQ,CAAE,eAAgB,CAAE2C,QAAS3D,OAAO/F,GAAIwE,MAAO,YAAauC,OAAQlC,EAAEyB,SAAS,CAACmK,QAAQ,AAAC,EAAGnE,YAAa,IAAK,CAAE,CAAE,CAAE,EAAGvE,KAAM,CAAC,CAAE2B,QAAS,uFAAwFE,YAAY,EAAMpF,MAAO,SAAU,EAAG,CAAEkF,QAAS,qBAAsBc,QAAQ,EAAMzD,OAAQ,CAAE,aAAc,CAAE2C,QAAS,qDAAsDE,YAAY,CAAK,EAAG,gBAAiB,CAAEF,QAAS,WAAYE,YAAY,CAAK,EAAG0C,YAAa,KAAM,CAAE,EAAE,CAAEI,MAAO,CAAC,CAAEhD,QAAS,0CAA2ClF,MAAO,YAAauC,OAAQ,CAAEuF,YAAa,WAAY,CAAE,EAAG,CAAE5C,QAAS,aAAcE,YAAY,EAAMpF,MAAO,YAAauC,OAAQ,CAAEuF,YAAa,SAAU,CAAE,EAAE,CAAEsE,GAAI,CAAElH,QAAS,wCAAyCE,YAAY,EAAMpF,MAAO,aAAc,EAAGkH,KAAM,CAAEhC,QAAS,mCAAoCE,YAAY,EAAMpF,MAAO,aAAc,EAAG,gBAAiB,CAAEkF,QAAS,qHAAsH3C,OAAQ,CAAE8I,SAAU,CAAEnG,QAAS,gBAAiBE,YAAY,CAAK,EAAGyC,OAAQ,+DAAgEC,YAAa,gBAAiB,EAAG9H,MAAO,KAAM,EAAGqM,KAAM,CAAEnH,QAASR,EAAE,kGAAkG5G,MAAM,EAAGsH,YAAY,EAAMY,QAAQ,EAAMzD,OAAQ,CAAExC,QAAS,CAAEmF,QAAS,sBAAuBE,YAAY,EAAM7C,OAAQ,CAAC,CAAE,EAAGuF,YAAa,SAAU,CAAE,EAAGwE,OAAQ,CAAEpH,QAASR,EAAE,kGAAkG5G,MAAM,EAAGsH,YAAY,EAAMY,QAAQ,EAAMzD,OAAQ,CAAExC,QAAS,CAAEmF,QAAS,oBAAqBE,YAAY,EAAM7C,OAAQ,CAAC,CAAE,EAAGuF,YAAa,MAAO,CAAE,EAAGyE,OAAQ,CAAErH,QAASR,EAAE,2BAA2B5G,MAAM,EAAGsH,YAAY,EAAMY,QAAQ,EAAMzD,OAAQ,CAAExC,QAAS,CAAEmF,QAAS,uBAAwBE,YAAY,EAAM7C,OAAQ,CAAC,CAAE,EAAGuF,YAAa,KAAM,CAAE,EAAG,eAAgB,CAAE5C,QAAS,mEAAoEE,YAAY,EAAMY,QAAQ,EAAMhG,MAAO,CAAC,OAAQ,UAAU,AAAC,EAAG+K,IAAK,CAAE7F,QAASR,EAAE,mGAAmG5G,MAAM,EAAGsH,YAAY,EAAMY,QAAQ,EAAMzD,OAAQ,CAAEiH,SAAU,KAAMzJ,QAAS,CAAEmF,QAAS,oBAAqBE,YAAY,EAAM7C,OAAQ,CAAC,CAAE,EAAG8I,SAAU,CAAEnG,QAAS,6BAA8BE,WAAY,EAAK,EAAG2F,IAAK,CAAE7F,QAAS,iBAAkBE,YAAY,CAAK,EAAGyC,OAAQ,CAAE3C,QAAS,oCAAqCE,YAAY,CAAK,CAAE,CAAE,CAAE,GAAI,CAAC,MAAO,OAAQ,SAAU,SAAS,CAACvE,OAAO,CAAC,SAAS4K,CAAE,EAC1jH,CAAC,MAAO,OAAQ,SAAU,SAAU,eAAe,CAAC5K,OAAO,CAAC,SAAS2J,CAAE,EACrEiB,IAAOjB,IAAOnK,EAAEyB,AAAH,SAAY,CAACmK,QAAQ,CAACR,EAAG,CAAClJ,MAAM,CAACxC,OAAO,CAACwC,MAAM,CAACiI,EAAG,CAAGnK,EAAEyB,SAAS,CAACmK,QAAQ,CAACzB,EAAAA,AAAG,CAC7F,EACF,GAAInK,EAAEmD,KAAK,CAAC/B,GAAG,CAAC,iBAAkB,SAAS+I,CAAE,EAC3C,aAAeA,EAAGlJ,QAAQ,EAAI,OAASkJ,EAAGlJ,QAAQ,EAAK,EAAD,OAAUmJ,EAAGgB,CAAE,EACnE,GAAIA,GAAM,UAAY,OAAOA,EAC3B,IAAK,IAAIC,EAAK,EAAGc,EAAKf,EAAGlH,MAAM,CAAEmH,EAAKc,EAAId,IAAM,CAC9C,IAAIe,EAAIhI,EAAIgH,CAAE,CAACC,EAAG,CAClB,SAAWjH,EAAE3E,IAAI,CAAG2K,EAAGhG,EAAE1E,OAAO,GAAK0M,CAAD,CAAMhI,EAAE1E,OAAO,CAAC,EAAE,CAAE0E,EAAIA,EAAE1E,OAAO,CAAC,EAAE,CAAE0M,GAAMhI,GAAK,kBAAoBgI,EAAG3M,IAAI,EAAI,eAAiB2E,EAAE3E,IAAI,EAAI,UAAY,OAAO2M,EAAG1M,OAAO,GAAK0M,CAAD,CAAMA,EAAG1M,OAAO,CAACK,OAAO,CAAC,OAAQ,SAASA,OAAO,CAAC,UAAW,MAAOqM,EAAK,aAAeA,CAAD,CAAM,CAAC,eAAexL,IAAI,CAACwL,IAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAACtL,WAAW,EAAA,CAAE,CAAGsD,EAAEzE,KAAK,CAAG,UAAY,OAAOyE,EAAEzE,KAAK,CAAGyE,EAAEzE,KAAK,CAAG,CAACyE,EAAEzE,KAAK,CAAEyM,EAAG,CAAGhI,EAAEzE,KAAK,CAACqE,IAAI,CAACoI,GAAMhI,EAAEzE,KAAK,CAAG,CAACyM,GAAG,CAAC,AACva,CACJ,EAAEjC,EAAG5K,MAAM,CACb,GAAIS,EAAEmD,KAAK,CAAC/B,GAAG,CAAC,OAAQ,SAAS+I,CAAE,EACjC,GAAI,eAAiBA,EAAG1K,IAAI,CAAE,CAC5B,IAAK,IAQiC2K,EAR7BgB,AAQ+B,EAR1B,GAAIC,EAAK,EAAGc,EAAKhC,EAAG5F,OAAO,CAACL,MAAM,CAAEmH,EAAKc,EAAId,IAAM,CAC/D,IAAIe,EAAKjC,EAAG5F,OAAO,CAAC8G,EAAG,CAAEe,EAAK,gBAAgBxL,IAAI,CAACwL,GACnD,GAAIA,EAAI,CACNhB,EAAKgB,CAAE,CAAC,EAAE,CACV,KACF,CACF,CACA,IAAIhI,EAAGnJ,EAAI+E,EAAEyB,SAAS,CAAC2J,EAAG,CAC1BnQ,EAAIkP,EAAGzK,OAAO,CAAGM,EAAEgD,SAAS,CACrBoH,AACOA,AAIZD,AAN2B,EAMxBzK,OAAO,CALFK,OAAO,CAACkK,EAAG,IACJlK,OAAO,CAAC,gCAAiC,SAASsK,CAAE,CAAEgC,CAAE,EAErE,MAAO,MAAQ,CAACA,EAAKA,EAAGvL,WAAW,EAAA,CAAE,AAAC,CAAC,EAAE,CAAIwL,AAAsEG,EAAvE,AAAM,AAAmEH,GAAG,GAA9DD,CAAE,CAAC,EAAE,CAAGE,SAASF,EAAGnM,KAAK,CAAC,GAAI,IAAMsM,OAAOH,EAAGnM,KAAK,CAAC,KAAcwM,CAAC,CAACL,EAAG,EAAIhC,CACvI,GACapP,EAAGmQ,GAAMA,GAAM,SAAWA,GAAMpL,EAAE+C,OAAO,CAAC4J,UAAU,EAAKvI,EAAD,CAAK,MAAyB,EAAjB,AAAC,EAAoBwI,OAAQC,IAAf,GAAsB,GAAK,IAAMC,KAAKC,KAAK,CAAC,KAAOD,KAAKE,MAAM,IAAK7C,EAAG3F,UAAU,CAACjE,EAAE,CAAG6D,EAAGpE,EAAE+C,OAAO,CAAC4J,UAAU,CAACM,aAAa,CAAC7B,EAAI,WAChO,IAAIhB,EAAK8C,SAASC,cAAc,CAAC/I,GACjCgG,IAAOA,EAAD,AAAIgD,SAAS,CAAGpN,EAAEgD,SAAS,CAACoH,EAAGiD,WAAW,CAAErN,EAAEyB,SAAS,CAAC2J,EAAG,CAAEA,EAAAA,CAAG,AACxE,EAAA,CAAE,AACJ,CACF,GAAIlK,OAAOlB,EAAEyB,SAAS,CAAC2F,MAAM,CAAC9C,GAAG,CAACO,OAAO,CAACpH,MAAM,CAAE,KAAA,CAAK,CAAGiP,EAAI,CAAEY,IAAK,IAAKC,GAAI,IAAKC,GAAI,IAAKC,KAAM,GAAI,EAAGhB,EAAIiB,OAAOC,aAAa,EAAID,OAAOE,YAAY,AACxJ5N,GAAEyB,SAAS,CAACoM,EAAE,CAAG7N,EAAEyB,SAAS,CAACmK,QAAQ,AACvC,EAAEzE,GAAQA,EAAM1F,SAAS,CAACqM,OAAO,CAAG,CAAEzG,QAAS,MAAO0G,YAAa,CAAElJ,QAAS,mEAAoEc,QAAQ,EAAMhG,MAAO,SAAUuC,OAAQ,CAAE,oBAAqB,CAAE2C,QAAS,kCAAmCE,YAAY,EAAM7C,OAAQiF,EAAM1F,SAAS,CAACmK,QAAQ,AAAC,CAAE,CAAE,EAAGpE,OAAQ,CAAE3C,QAAS,iDAAkDc,QAAQ,CAAK,EAAGuD,OAAQ,2CAA4CF,QAAS,qBAAsBgC,SAAU,eAAgBQ,UAAW,CAAE3G,QAAS,cAAelF,MAAO,UAAW,EAAG,YAAa,CAAEkF,QAAS,iEAAkEc,QAAQ,CAAK,EAAG,aAAc,CAAEd,QAAS,oBAAqBlF,MAAO,YAAa,EAAG4L,OAAQ,sCAAuCjC,SAAU,qBAAsB,aAAc,CAAEzE,QAAS,kFAAmFE,YAAY,CAAK,EAAGiJ,SAAU,CAAEnJ,QAAS,+CAAgDE,YAAY,EAAMpF,MAAO,UAAW,EAAG,sBAAuB,CAAEkF,QAAS,8BAA+BE,YAAY,EAAMpF,MAAO,UAAW,EAAG,mBAAoB,CAAEkF,QAAS,2BAA4BE,YAAY,EAAMpF,MAAO,UAAW,EAAGoJ,QAAS,uIAAwII,SAAU,eAAgB,iBAAkB,eAAgB8E,OAAQ,eAAgBxG,YAAa,iBAAkB5E,SAAU,KAAM,EAAGsE,EAAMhE,KAAK,CAAC/B,GAAG,CAAC,iBAAkB,SAASiD,CAAC,EACziD,GAAI,YAAcA,EAAEpD,QAAQ,CAC1B,IAAK,IAAIhG,EAAIoJ,EAAE9E,MAAM,CAAC2O,MAAM,CAAC,SAAS/D,CAAE,EACtC,MAAO,UAAY,OAAOA,GAAM,YAAcA,EAAG1K,IAAI,EAAI,WAAa0K,EAAG1K,IAAI,AAC/E,GAAIO,EAAI,EAAGA,EAAI/E,EAAEiJ,MAAM,EAAI,CACzB,IAAI4D,EAAI7M,CAAC,CAAC+E,IAAI,CACd,GAAI,YAAc8H,EAAErI,IAAI,EAAI,aAAeqI,EAAEpI,OAAO,CAAE,CACpD,IAAIvE,EAAI,EAAE,CACV,GAAIiL,EAAE,CAAC,sBAAuB,cAAc,GAAK,MAAQqG,IAAE,GAAG/M,OAAO,CAAE,CACrEM,GAAK,EACL,IAAI9E,EAAIiT,EAAE,OAAQ,QAClB,GAAI,CAAC,IAAMjT,EACT,SACF,KAAO8E,EAAI9E,EAAG8E,IAAK,CACjB,IAAIhF,IAAIyR,EAAE,EACV,cAAezR,EAAEyE,IAAI,EAAK2O,EAAD,CAAGpT,EAAG,kBAAmBG,EAAE6I,IAAI,CAAChJ,EAAE0E,QAAO,CAAC,AACrE,CACAM,EAAI9E,EAAI,CACV,CACA,GAAIkL,EAAE,CAAC,cAAe,iBAAiB,GAAK,MAAQqG,IAAE,GAAG/M,OAAO,GAAKM,AAAKoO,CAAN,CAAQ3B,AAWzExR,CAAC,GAAC+E,EAXyE,EAWrEmK,AAAG,CAXsE,qBAAsB,EAAIhP,EAAE+I,MAAAA,AAAM,EAAG,CACrH,IAAIE,EAAI+J,EAAE,OAAQ,QAClB,GAAI,CAAC,IAAM/J,EACT,IAAK,IAAI6F,EAAIjK,EAAGiK,EAAI7F,EAAG6F,IAAK,CAC1B,IAAIyC,EAAIzR,CAAC,CAACgP,EAAE,CACZ,aAAeyC,EAAEjN,IAAI,EAAI,GAAKtE,EAAEyC,OAAO,CAAC8O,EAAEhN,OAAO,GAAK0O,EAAE1B,EAAG,iBAC7D,CACJ,CACF,CACF,CAIF,SAAStG,EAAE+D,CAAE,CAAEiB,CAAE,EACfA,EAAKA,GAAM,EACX,IAAK,IAAIC,EAAK,EAAGA,EAAKlB,EAAGjG,MAAM,CAAEmH,IAAM,CACrC,IAAIc,KAAKM,EAAEpB,EAAKD,CAAAA,GAChB,GAAI,CAACe,GAAMA,EAAG1M,IAAI,GAAK0K,CAAE,CAACkB,EAAG,CAC3B,MACJ,CACA,OAAO,CACT,CACA,SAAS8C,EAAEhE,CAAE,CAAEiB,CAAE,EACf,IAAK,IAAIC,EAAK,EAAGc,EAAKnM,EAAGmM,EAAKlR,EAAEiJ,MAAM,CAAEiI,IAAM,CAC5C,IAAIC,EAAKnR,CAAC,CAACkR,EAAG,CAAEkC,EAAKjC,EAAG1M,OAAO,CAC/B,GAAI,gBAAkB0M,EAAG3M,IAAI,EAAI,UAAY,OAAO4O,GAClD,CADsD,EAClDlE,EAAGmE,IAAI,CAACD,GACVhD,SACG,GAAID,EAAGkD,IAAI,CAACD,IAAO,GAAM,EAAEhD,EAC9B,OAAOc,CAAAA,CAEb,CACA,OAAO,CAAC,CACV,CACA,SAASiC,EAAEjE,CAAE,CAAEiB,CAAE,EACf,IAAIC,EAAKlB,EAAGxK,KAAK,CACjB0L,EAAKzL,MAAMC,OAAO,CAACwL,KAAQlB,EAAD,AAAIxK,KAAK,CAAG0L,EAAK,CAACA,EAAG,EAAIlB,EAAGxK,KAAK,CAAG0L,EAAK,EAAE,CAAEA,EAAGrH,IAAI,CAACoH,EACjF,CACF,GAAIjE,EAAM1F,SAAS,CAAC8M,GAAG,CAAG,CAAElH,QAAS,CAAExC,QAAS,gDAAiDE,YAAY,CAAK,EAAGiG,SAAU,CAAC,CAAEnG,QAAS,sCAAuCc,QAAQ,CAAK,EAAG,WAAW,CAAE6B,OAAQ,CAAE3C,QAAS,kDAAmDc,QAAQ,EAAMZ,YAAY,CAAK,EAAGyJ,WAAY,CAAE3J,QAAS,sCAAuCc,QAAQ,EAAMZ,YAAY,EAAM7C,OAAQ,CAAEuF,YAAa,OAAQ,CAAE,EAAGwB,SAAU,4FAA6FF,QAAS,u9EAAw9EC,QAAS,2BAA4BE,OAAQ,4CAA6CC,SAAU,+HAAgI1B,YAAa,aAAc,EAAG,SAASrK,CAAC,EAC3wG,IAAIiH,EAAIjH,EAAEqE,SAAS,CAAC2H,UAAU,CAAC,kBAAkB,CAAEjO,EAAIkJ,EAAEQ,OAAO,CAACpH,MAAM,CAAEkD,EAAI0D,EAAEnC,MAAM,CAACsH,aAAa,CAAEiF,EAAI9N,EAAEuB,MAAM,CAAC,4BAA4B,CAAEkC,EAAIzD,EAAEkE,OAAO,CAACpH,MAAM,CACpK,SAASqK,EAAEqC,CAAE,CAAEiB,CAAE,EACf,GAAIhO,EAAEqE,SAAS,CAAC0I,EAAG,CACjB,MAAO,CAAEtF,QAAS3D,OAAO,OAASkK,EAAK,SAAWjQ,GAAI4J,YAAY,EAAMY,QAAQ,EAAMzD,OAAQ,CAAE,uBAAwB,CAAE2C,QAAS,QAASlF,MAAO,QAAS,EAAG,gBAAiB,CAAEkF,QAAS,UAAWlF,MAAOwK,CAAG,CAAE,CAAE,CACxN,CACA,SAASuE,EAAEvE,CAAE,CAAEiB,CAAE,CAAEC,CAAE,EAEnB,OADAlB,EAAK,CAAEjH,KAAMiH,EAAI7H,QAAS8I,EAAInK,SAAUoK,CAAG,EACpCjO,EAAE+F,KAAK,CAACC,GAAG,CAAC,kBAAmB+G,GAAKA,EAAG5K,MAAM,CAAGnC,EAAEkG,QAAQ,CAAC6G,EAAGjH,IAAI,CAAEiH,EAAG7H,OAAO,EAAGlF,EAAE+F,KAAK,CAACC,GAAG,CAAC,iBAAkB+G,GAAKA,EAAG5K,MAAM,AACtI,CAkBAnC,EAAEqE,SAAS,CAAC2H,UAAU,CAAC,kBAAkB,CAAG,CAACtB,EAAE,MAAO,0HAA0HrK,MAAM,EAAGqK,EAAE,OAAQ,yCAAyCrK,MAAM,EAAGqK,EAAE,MAAO,QAAQrK,MAAM,EAAGqK,EAAE,WAAY,oBAAoBrK,MAAM,EAAGqK,EAAE,UAAW,6CAA6CrK,MAAM,EAAGqK,EAAE,MAAO,QAAQrK,MAAM,EAAG4G,EAAE,CAAC6J,MAAM,CAACiB,SACja,IAAIjU,EAAI,CAAEkO,WAAY,GAAMO,IAAI,EAAMyF,YAAY,EAAMC,IAAI,EAAMC,KAAK,EAAMC,KAAK,CAAK,EAIvFnS,EAAE+F,KAAK,CAAC/B,GAAG,CAAC,iBAAkB,SAAS+I,CAAE,EACvCA,EAAGlJ,QAAQ,IAAI/F,GAAM,EAAD,OAAUkP,EAAGgB,CAAE,EACjC,IAAK,IAAIC,EAAK,EAAGc,EAAKf,EAAGlH,MAAM,CAAEmH,EAAKc,EAAId,IAAM,CAC9C,IAAIrQ,EAAGqT,EAAIpT,EAAG+E,EAAIoL,CAAE,CAACC,EAAG,CACxB,UAAY,OAAOrL,IAAqBJ,CAAhB,KAAsBC,OAAO,CAAC7E,AAA7BA,EAAIgF,EAAEN,OAAO,EAAqB,oBAAsBM,EAAEP,IAAI,EAAIO,CAAD,CAAKhF,CAAC,CAAC,EAAE,CAAE,IAAMA,EAAEkJ,MAAM,EAAI,UAAY,OAAOlE,GAAK,kBAAoBA,EAAEP,IAAI,GAAK4O,CAAD,CAPnL,AAOyL3B,SAPhLA,EAAEvC,CAAE,EACX,MAAO,UAAY,OAAOA,EAAKA,EAAKvK,MAAMC,OAAO,CAACsK,GAAMA,EAAGrK,GAAG,CAAC4M,GAAG/H,IAAI,CAAC,IAAM+H,EAAEvC,EAAGzK,OAAO,CAC3F,EAK2LM,GAAiBA,EAAIJ,MAAMC,OAAO,CAA9BG,AAA+BA,EAA3BA,EAAEL,KAAK,EAAyBK,CAAC,CAAC,EAAE,CAAGA,EAAG/E,EAAImC,EAAEqE,SAAS,CAACzB,EAAAA,AAAE,IAAMhF,CAAD,AAAE,CAAC,EAAE,CA1BzQ,AA0B4QiP,SA1BnQA,AAAEkC,CAAE,CAAEhC,CAAE,CAAEnP,CAAC,EAClB,IAAIoQ,EAAKhO,EAAEkG,QAAQ,CAAC6I,EAAI,CAAE3C,cAAe,CAAE3E,QAAS3D,OAAOkD,GAAIW,WAAY,EAAK,CAAE,GAAIqB,EAAI,EAAG+H,EAAI,CAAC,EAAG/C,EAAKsD,EAAEtD,EAAGtL,GAAG,CAAC,SAASsK,CAAE,EAC5H,GAAI,UAAY,OAAOA,EACrB,OAAOA,EACT,IAAK,IAAIiC,EAAIhB,EAAIjB,EAAKA,EAAG1K,OAAO,CAAE,CAAC,IAAMyM,EAAGvO,OAAO,CAAC,CAACyN,EAAKjF,IAAKiG,EAAK,MAAQrR,EAAE2T,WAAW,GAAK,IAAMtD,EAAK,KAAA,CAAK,IAE9G,OAAO8C,CAAC,CAAC9B,EAAG,CAAGjC,EAAIiC,CACrB,GAAG1H,IAAI,CAAC,IAAKwF,EAAInP,GAAIoT,EAAI7S,OAAOqT,IAAI,CAACT,GACrC,OAAO/H,EAAI,EAAG,SAASgE,EAAGiC,CAAE,EAC1B,IAAK,IAAIhB,EAAK,EAAGA,EAAKgB,EAAGnI,MAAM,CAAEmH,IAAM,CACrC,GAAIjF,GAAKgI,EAAElK,MAAM,CACf,OACF,IAAI2K,EAAIzC,EAAIiC,EAAIpT,EAAG+E,EAAG8O,EAAIC,EAAItC,EAAIJ,CAAE,CAAChB,EAAG,AACxC,WAAY,OAAOoB,GAAK,UAAY,OAAOA,EAAE/M,OAAO,EAAImP,CAAD,CAAMT,CAAC,CAAChI,EAAE,CAAE,CAAC,KAAO2I,CAAD,CAAM,CAACD,EAAK,UAAY,OAAOrC,EAAIA,EAAIA,EAAE/M,OAAAA,AAAO,EAAE9B,OAAO,CAACiR,EAAAA,CAAG,GAAM,EAAD,AAAGzI,EAAGgG,EAAK0C,EAAGE,SAAS,CAAC,EAAGD,GAAK/O,EAAImO,CAAC,CAACU,EAAG,CAAER,EAAK,KAAK,EAAG,CAACpT,EAAI,EAAC,CAAC,AAAC,CAAC,4BAA4B,CAAGwT,EAAG,IAAM,CAACxT,EAAImC,EAAEkG,QAAQ,CAACtD,EAAG/E,EAAAA,CAAE,CAAEiJ,MAAM,GAAK,CAAD,AAAEmK,EAAK,CAAC,EAAG,EAAE,EAAErK,IAAI,CAACU,KAAK,CAAC2J,EAAIK,EAAEzT,CAAC,CAAC,EAAE,CAAEmC,EAAEqE,SAAS,CAAC2H,UAAU,CAAE,eAAgBnO,EAAEgU,MAAM,CAACvK,KAAK,CAACzJ,EAAGoT,EAAAA,CAAG,CAAGA,EAAK,IAAIjR,EAAEoC,KAAK,CAAC,gBAAiBvE,EAAG0F,EAAEhB,KAAK,CAAEK,GAAI/E,EAAI6T,EAAGE,SAAS,CAACD,EAAKF,EAAG3K,MAAM,EAAGlE,EAAI,EAAE,CAAEoM,GAAMpM,EAAEgE,IAAI,CAACoI,GAAKpM,EAAEgE,IAAI,CAACqK,GAAKpT,IAAMmP,CAAD,CAAI0E,EAAK,CAAC7T,EAAE,EAAG+E,EAAEgE,IAAI,CAACU,KAAK,CAAC1E,EAAG8O,EAAAA,CAAG,CAAG,UAAY,OAAOrC,GAAKJ,CAAD,CAAI4C,MAAM,CAACvK,KAAK,CAAC2H,EAAI,CAAChB,EAAI,EAAE,CAAC6D,MAAM,CAAClP,IAAKqL,GAAMrL,EAAEkE,MAAM,EAAG,CAAC,CAAIuI,EAAE/M,OAAO,EAAGM,CAAC,CAAC,CAAqBJ,GAAjB,GAAuBC,OAAO,CAACkP,AAA9BA,EAAKtC,EAAE/M,OAAO,EAAsB0K,EAAG2E,GAAM3E,EAAG,CAAC2E,EAAG,CAAC,AAChsB,CACF,EAAE3D,GAAK,IAAIhO,EAAEoC,KAAK,CAACxE,EAAGoQ,EAAI,YAAcpQ,EAAGmR,EAC7C,EAU8QkC,EAAIpT,EAAG+E,EAAAA,CAAE,CAAC,CAAIoK,EAAGpP,GAAK,UAAY,OAAOA,GAAKoP,EAAG,CAACpP,GAAE,CAAC,AAC/T,CACF,EAAEmP,EAAG5K,MAAM,CACb,EACF,EAAE4H,GACA9C,EAAE5C,GADM,MACG,CAAC2N,EADK/K,CAAC,OACI,CAAGA,EAAE5C,SAAS,CAACK,MAAM,CAAC,aAAc,CAAE,aAAc,CAAE+C,QAAS,+KAAgLE,YAAY,EAAMY,QAAQ,EAAMzD,OAAQ,IAAK,EAAGsN,QAAS,uFAAwF,GAAInL,EAAE5C,SAAS,CAAC2N,UAAU,CAACrG,OAAO,CAAC/E,IAAI,CAAC,qDAAsD,2FAA4F,8BAA+B,OAAOK,EAAE5C,SAAS,CAAC2N,UAAU,CAAC/F,SAAS,CAAE,OAAOhF,EAAE5C,SAAS,CAAC2N,UAAU,CAAC,mBAAmB,GACjsB/K,EAAE5C,SAAS,CAACK,MAAM,CAAC,aAAc,CAAC,GAC1C,OAAOgG,CAAC,CAAC,aAAa,CAAEzD,EAAE5C,SAAS,CAAC2N,UAAU,CAAC,aAAa,CAAClN,MAAM,CAAG4F,EAAGzD,EAAE5C,SAAS,CAACQ,YAAY,CAAC,aAAc,WAAY,CAAEwN,UAAW,CAAE5K,QAAS,qBAAsB3C,OAAQ,CAAEwN,GAAI,CAAE7K,QAAS,KAAMlF,MAAO,UAAW,EAAGsJ,SAAU,UAAW,CAAE,EAAG,mBAAoB,CAAEpE,QAAS,yGAA0Gc,OAAQ,GAAMzD,OAAQ,CAAE+G,SAAU,4DAA6D0G,QAAS,CAAE9K,QAAS,WAAYlF,MAAO,aAAcuC,OAAQ4F,CAAE,CAAE,CAAE,CAAE,GAAIzD,EAAE5C,SAAS,CAAC4N,EAAE,CACvjBlI,AAD0jB9C,EAAE5C,MACpjB,GAD6jB,CAAC2N,KACrjB/K,CAAC,IAD8jB,CAE5kByD,EAAIzD,EAAE5C,SAAS,CAAC2H,UAAU,GAA6D,6CAA6CjO,CAApG,2CAA2CsC,MAAM,EAAuD,UAC5I4G,EAAE5C,SAAS,CAACmO,KAAK,CAAGvL,EAAE5C,SAAS,CAACK,MAAM,CAAC,cAAe,CAAEuH,UAAW,CAAExE,QAAS3D,OAAOhG,EAAI,uCAAuCuC,MAAM,EAAGsH,YAAY,EAAM7C,OAAQ,CAAEuF,YAAa,IAAK,CAAE,CAAE,GAAIpD,EAAE5C,SAAS,CAACQ,YAAY,CAAC,QAAS,UAAW,CAAE,qBAAsB,CAAE4C,QAAS3D,OAAOhG,EAAI,wDAAwDuC,MAAM,EAAGsH,YAAY,EAAM7C,OAAQ,CAAEmH,UAAW,CAAExE,QAAS,2BAA4BE,YAAY,EAAM7C,OAAQ,CAAEuF,YAAa,IAAK,CAAE,EAAGvE,KAAM,CAAE2B,QAAS,oBAAqBE,YAAY,EAAM7C,OAAQ4F,EAAGnI,MAAO,qBAAsB,EAAG8H,YAAa,QAAS,CAAE,EAAG,aAAc,CAAC,CAAE5C,QAAS3D,OAAO,mHAAmHzD,MAAM,CAACsC,OAAO,CAAC,UAAW,WACtwB,OAAO5E,CACT,IAAK4J,YAAY,EAAM7C,OAAQ,CAAEuF,YAAa,IAAK,CAAE,EAAG,CAAE5C,QAAS3D,OAAO,gBAAkB/F,GAAI4J,YAAY,EAAM7C,OAAQ,CAAEsF,OAAQM,EAAEN,MAAM,CAAE0B,OAAQpB,EAAEoB,MAAM,CAAEF,QAASlB,EAAEkB,OAAO,CAAED,QAAS1E,EAAE5C,SAAS,CAAC2N,UAAU,CAACrG,OAAO,CAAEI,SAAU,oBAAqB1B,YAAa,iBAAkB,CAAE,EAAE,CAAEoI,QAAS,CAAEhL,QAAS,yEAA0EE,YAAY,EAAM7C,OAAQ,CAAEgB,KAAM,CAAE2B,QAAS,4BAA6BE,YAAY,EAAM7C,OAAQ4F,EAAGnI,MAAO,qBAAsB,CAAE,CAAE,CAAE,GAAI0E,EAAE5C,SAAS,CAACyI,WAAW,CAACI,UAAU,CAAC,aAAcjG,AAC9jB8C,EADgkB1F,MACxjB,GADikB,CAACmO,KAAK,AAC9jBvL,CAAC,CAClBA,EAAE5C,SAAS,CAACqO,IAAI,CAAGzL,EAAE5C,SAAS,CAACK,MAAM,CAAC,aAAc,CAAC,GAAIuC,EAAE5C,SAAS,CAACQ,YAAY,CAAC,OAAQ,UAAW,CAAExC,KAAM,CAAC,CAAEoF,QAAS,gFAAiFlF,MAAO,YAAa,EAAE,AAAC,GAAI0E,AACrO8C,EADuO1F,SAAS,CAACqO,IAAI,CAAC,oBAAoB,CAACjL,OAAO,CAAG,uKAAwK,OAAOR,EAAE5C,SAAS,CAACqO,IAAI,CAACzG,SAAS,CAAEhF,EAAE5C,SAAS,CAACQ,YAAY,CAAC,OAAQ,WAAY,CAAE,mBAAoB,CAAE4C,QAAS,YAAalF,MAAO,aAAc,CAAE,GAAIC,MAAMC,OAAO,CAACwE,EAAE5C,SAAS,CAACqO,IAAI,CAAC/G,OAAO,IAAM1E,CAAD,CAAG5C,SAAS,CAACqO,IAAI,CAAC/G,OAAO,CAAG,CAAC1E,EAAE5C,SAAS,CAACqO,IAAI,CAAC/G,OAAO,CAAC,EAAG1E,EAAE5C,SAAS,CAACqO,IAAI,CAAC/G,OAAO,CAACgH,OAAO,CAAC,CAAElL,QAAS,kDAAmDE,YAAY,CAAK,EAAG,CAAEF,QAAS,wGAAyGE,YAAY,CAAK,GAC16BoC,EAAM1F,SAAS,CAACuO,IAAI,CAAG7I,EAAM1F,SAAS,CAACK,MAAM,CAAC,aAAc,CAAEiH,QAAS,iXAAkX,GAAI5B,EAAM1F,SAAS,CAACQ,YAAY,CAAC,OAAQ,WAAY,CAAEgO,WAAY,CAAEpL,QAAS,QAASlF,MAAO,UAAW,CAAE,GAAIwH,EAAM1F,SAAS,CAACyO,KAAK,CAAG/I,EAAM1F,SAAS,CAACuO,IAAI,CAAE,SAAS3L,CAAC,EACxmB,SAASyD,EAAEqC,CAAE,CAAEiB,CAAE,EACf,OAAOlK,OAAOiJ,EAAGpK,OAAO,CAAC,QAAS,WAChC,MAAO,yDAAyDtC,MAAM,AACxE,GAAI2N,EACN,CACA/G,EAAE5C,SAAS,CAACQ,YAAY,CAAC,aAAc,oBAAqB,CAAE,kBAAmB,CAAE4C,QAAS3D,OAAO,YAAcmD,EAAE5C,SAAS,CAAC2H,UAAU,CAAC,oBAAoB,CAACvE,OAAO,CAACpH,MAAM,EAAGsH,WAAY,GAAMpF,MAAO,CAAC,oBAAqB,SAAU,WAAY,kBAAkB,AAAC,CAAE,GAAI0E,EAAE5C,SAAS,CAACQ,YAAY,CAAC,aAAc,WAAY,CAAEkO,OAAQ,CAAEtL,QAAS3D,OAAO,YAAcmD,EAAE5C,SAAS,CAAC2H,UAAU,CAACH,QAAQ,CAACxL,MAAM,EAAGsH,YAAY,EAAMpF,MAAO,CAAC,WAAY,kBAAkB,AAAC,CAAE,GAAI0E,EAAE5C,SAAS,CAACQ,YAAY,CAAC,aAAc,WAAY,CAAE,mBAAoB,CAAC,CAAE4C,QAAS,yOAA0OlF,MAAO,YAAa,EAAG,CAAEkF,QAAS,wBAAyBlF,MAAO,YAAa,EAAE,AAAC,GAAI0E,EAAE5C,SAAS,CAACQ,YAAY,CAAC,aAAc,UAAW,CAAEmO,QAAS,CAAEvL,QAASiD,EAAE,4GAA4GrK,MAAM,EAAGsH,YAAY,EAAM7C,OAAQmC,EAAE5C,SAAS,CAAC2H,UAAU,AAAC,EAAGnL,QAAS,CAAE4G,QAASiD,EAAE,mEAAmErK,MAAM,EAAGsH,YAAY,EAAM7C,OAAQmC,EAAE5C,SAAS,CAAC2H,UAAU,AAAC,CAAE,GAAI/E,EAAE5C,SAAS,CAAC2H,UAAU,CAACL,OAAO,CAACgH,OAAO,CAAC,CAAElL,QAAS,wCAAyClF,MAAO,QAAS,EAAG,CAAEkF,QAAS,gGAAiGlF,MAAO,cAAe,EAAG,CAAEkF,QAAS,WAAYlF,MAAO,CAAC,OAAQ,MAAM,AAAC,EAAG,CAAEkF,QAAS,gBAAiBlF,MAAO,KAAM,GAAI0E,EAAE5C,SAAS,CAACQ,YAAY,CAAC,aAAc,WAAY,CAAEoO,OAAQ,CAAExL,QAAS,QAASlF,MAAO,UAAW,EAAG2Q,MAAO,CAAEzL,QAAS,KAAMlF,MAAO,UAAW,CAAE,GAAI0E,EAAE5C,SAAS,CAACQ,YAAY,CAAC,aAAc,cAAe,CAAE,kBAAmB,CAAE4C,QAASiD,EAAE,gBAAgBrK,MAAM,EAAGsH,YAAY,CAAK,EAAG,mBAAoB,CAAEF,QAAS,8CAA+CE,YAAY,CAAK,EAAGwL,IAAK,CAAE1L,QAAS,kFAAmFlF,MAAO,UAAW,EAAG6Q,QAAS,CAAE3L,QAAS,qBAAsBlF,MAAO,YAAa,CAAE,GACxnE,IAAK,IAAIxE,EAAI,CAAC,WAAY,oBAAqB,SAAU,kBAAmB,kBAAkB,CAAED,EAAI,EAAGA,EAAIC,EAAE+I,MAAM,CAAEhJ,IAAK,CACxH,IAAIF,EAAIG,CAAC,CAACD,EAAE,CAAEkJ,EAAIC,EAAE5C,SAAS,CAAC2H,UAAU,CAACpO,EAAE,CAAEA,EAAI,CAACoJ,EAAI,WAAaC,EAAEhF,IAAI,CAACI,IAAI,CAAC2E,GAAKC,EAAE5C,SAAS,CAAC2H,UAAU,CAACpO,EAAE,CAAG,CAAE6J,QAAST,CAAE,EAAIA,CAAC,EAAElC,MAAM,EAAI,CAAC,CAC/I,CAACkC,GAAElC,MAAM,EAAGlH,CAAC,AAAC,CAAC,mBAAmB,CAAG,eACvC,CACF,EAAEmM,GAAQ,SAAS/C,CAAC,EAClB,IAAIC,EAAID,EAAE/E,IAAI,CAACe,KAAK,CAACgE,EAAE3C,SAAS,CAAC2H,UAAU,EAAGjO,EAAI,+CAA+CsC,MAAM,CAAEvC,EAAI,+CAA+CuC,MAAM,CAAEzC,EAAI,uCAAuCyC,MAAM,CACrN,SAASqK,EAAEqC,CAAE,CAAEiB,CAAE,EACf,OAMIlK,OANGiJ,AAMIA,EANCA,EAAGpK,OAAO,CAAC,OAAQ,WAC7B,OAAO5E,CACT,GAAG4E,OAAO,CAAC,YAAa,WACtB,OAAO7E,CACT,GAAG6E,OAAO,CAAC,YAAa,WACtB,OAAO/E,CACT,GAAeoQ,EACjB,CACApQ,EAAI8M,EAAE9M,GAAGyC,MAAM,CAAE2G,EAAE3C,SAAS,CAAC6N,GAAG,CAAGlL,EAAE3C,SAAS,CAACK,MAAM,CAAC,SAAUuC,GAAID,EAAE3C,SAAS,CAAC6N,GAAG,CAAChL,GAAG,CAACO,OAAO,CAAGiD,EAAE,wIAAwIrK,MAAM,EAAG2G,EAAE3C,SAAS,CAAC6N,GAAG,CAAChL,GAAG,CAACpC,MAAM,CAACoC,GAAG,CAACO,OAAO,CAAG,iBAAkBT,EAAE3C,SAAS,CAAC6N,GAAG,CAAChL,GAAG,CAACpC,MAAM,CAAC,aAAa,CAAC2C,OAAO,CAAG,qEAAsET,EAAE3C,SAAS,CAAC6N,GAAG,CAAChL,GAAG,CAACpC,MAAM,CAACoC,GAAG,CAACpC,MAAM,CAAC,aAAa,CAAG,4BAA6BkC,EAAE3C,SAAS,CAAC6N,GAAG,CAAChL,GAAG,CAACpC,MAAM,CAACmF,OAAO,CAAGhD,EAAEgD,OAAO,CAAEjD,EAAE3C,SAAS,CAACQ,YAAY,CAAC,SAAU,YAAa,CAAEoO,OAAQ,CAAExL,QAASiD,EAAE,WAAWrK,MAAM,EAAGyE,OAAQkC,EAAE3C,SAAS,CAAC6N,GAAG,AAAC,CAAE,EAAGlL,EAAE3C,SAAS,CAAC6N,GAAG,CAAChL,GAAG,EAAGF,EAAE3C,SAAS,CAACQ,YAAY,CAAC,SAAU,eAAgB,CAAE8H,OAAQ,CAAElF,QAASiD,EAAE,YAAYrK,MAAM,EAAGkC,MAAO,sBAAuBuC,OAAQ,CAAE,qBAAsB,CAAE2C,QAAS,WAAYlF,MAAO,aAAc,EAAG6D,KAAMY,EAAE3C,SAAS,CAAC6N,GAAG,AAAC,CAAE,CAAE,EAAGlL,EAAE3C,SAAS,CAAC6N,GAAG,CAAChL,GAAG,EAOt7B,IAAItE,EAAI,SAASmK,CAAE,EACjB,OAAOA,EAAK,UAAY,OAAOA,EAAKA,EAAK,UAAY,OAAOA,EAAGzK,OAAO,CAAGyK,EAAGzK,OAAO,CAAGyK,EAAGzK,OAAO,CAACI,GAAG,CAACE,GAAG2E,IAAI,CAAC,IAAM,EACrH,EACAP,EAAEjB,KAAK,CAAC/B,GAAG,CAAC,iBAAkB,SAAS+I,CAAE,EACvC,QAAUA,EAAGlJ,QAAQ,EAAI,QAAUkJ,EAAGlJ,QAAQ,EAVhD,AAUoDhG,SAV3CA,EAAEkP,CAAE,EACX,IAAK,IAAIiB,EAAK,EAAE,CAAEC,EAAK,EAAGA,EAAKlB,EAAGjG,MAAM,CAAEmH,IAAM,CAC9C,IAAIc,EAAKhC,CAAE,CAACkB,EAAG,CAAEe,GAAK,EACtB,UAAY,OAAOD,IAAO,EAAD,MAAWA,EAAG1M,IAAI,EAAI0M,EAAGzM,OAAO,CAAC,EAAE,EAAI,QAAUyM,EAAGzM,OAAO,CAAC,EAAE,CAACD,IAAI,CAAG,OAAS0M,EAAGzM,OAAO,CAAC,EAAE,CAACA,OAAO,CAAC,EAAE,CAACA,OAAO,CAAG,EAAI0L,EAAGlH,MAAM,EAAIkH,CAAE,CAACA,EAAGlH,MAAM,CAAG,EAAE,CAACuM,OAAO,GAAKzQ,EAAEmM,EAAGzM,OAAO,CAAC,EAAE,CAACA,OAAO,CAAC,EAAE,GAAK0L,EAAGsF,GAAG,GAAK,OAASvE,EAAGzM,OAAO,CAACyM,EAAGzM,OAAO,CAACwE,MAAM,CAAG,EAAE,CAACxE,OAAO,EAAI0L,EAAGpH,IAAI,CAAC,CAAEyM,QAASzQ,EAAEmM,EAAGzM,OAAO,CAAC,EAAE,CAACA,OAAO,CAAC,EAAE,EAAGiR,aAAc,CAAE,GAAK,EAAIvF,EAAGlH,MAAM,EAAI,gBAAkBiI,EAAG1M,IAAI,EAAI,MAAQ0M,EAAGzM,OAAO,CAAG0L,CAAE,CAACA,EAAGlH,MAAM,CAAG,EAAE,CAACyM,YAAY,GAAK,EAAIvF,EAAGlH,MAAM,EAAI,EAAIkH,CAAE,CAACA,EAAGlH,MAAM,CAAG,EAAE,CAACyM,YAAY,EAAI,gBAAkBxE,EAAG1M,IAAI,EAAI,MAAQ0M,EAAGzM,OAAO,CAAG0L,CAAE,CAACA,EAAGlH,MAAM,CAAG,EAAE,CAACyM,YAAY,GAAKvE,GAAK,CAAA,CAAI,CAAG,CAACA,GAAM,UAAY,OAAOD,CAAAA,CAAE,EAAK,EAAIf,EAAGlH,MAAM,EAAI,IAAMkH,CAAE,CAACA,EAAGlH,MAAM,CAAG,EAAE,CAACyM,YAAY,GAAKvE,CAAD,CAAMpM,EAAEmM,GAAKd,EAAKlB,EAAGjG,MAAM,CAAG,GAAM,EAAD,SAAa,OAAOiG,CAAE,CAACkB,EAAK,EAAE,EAAI,eAAiBlB,CAAE,CAACkB,EAAK,EAAE,CAAC5L,IAAAA,AAAI,IAAM2M,CAAD,EAAOpM,EAAEmK,CAAE,CAACkB,EAAK,EAAE,EAAGlB,EAAG8E,MAAM,CAAC5D,EAAK,EAAG,EAAA,CAAE,CAAG,EAAIA,IAAO,EAAD,QAAa,OAAOlB,CAAE,CAACkB,EAAK,EAAE,EAAI,eAAiBlB,CAAE,CAACkB,EAAK,EAAE,CAAC5L,IAAAA,AAAI,IAAM2M,CAAD,CAAMpM,EAAEmK,CAAE,CAACkB,EAAK,EAAE,EAAIe,EAAIjC,EAAG8E,MAAM,CAAC5D,EAAK,EAAG,GAAIA,GAAAA,CAAI,CAAGlB,CAAE,CAACkB,EAAG,CAAG,IAAIjH,EAAE5E,KAAK,CAAC,aAAc4M,EAAI,KAAMA,EAAAA,CAAG,CAAGD,EAAGzM,OAAO,EAAI,UAAY,OAAOyM,EAAGzM,OAAO,EAAIzE,EAAEkR,EAAGzM,OAAO,CACtkC,CACF,EAKsDyK,EAAG5K,MAAM,CAC/D,EACF,EAAE4H,GACIW,EAAIzD,EAAEhF,CADF,GACM,CAACe,KAAK,AADHiE,CACIA,AADH,AAGlB8C,EAFuB1F,SAAS,CAAC2N,UAAU,EAC3CtH,CADmDzD,EAAE5C,SAAS,CAAC8N,GAAG,CAAGlL,EAAE5C,SAAS,CAACK,MAAM,CAAC,MAAOgG,GAAI,OAAOzD,EAAE5C,SAAS,CAAC8N,GAAG,CAAClG,SAAS,CAAE,OAAOhF,EAAE5C,SAAS,CAAC8N,GAAG,CAAC,mBAAmB,GAAElL,EAAE5C,SAAS,CAAC8N,GAAG,CAACjL,GAAAA,AAAG,EAClMO,OAAO,CAAG3D,OAAO,qBAAqBzD,MAAM,CAAG,MAAQqK,EAAEjD,OAAO,CAACpH,MAAM,CAAG,IAAKqK,EAAEjD,OAAO,CAACgB,KAAK,EAAGiC,EAAE/C,UAAU,EAAG,EAC1GoC,EAAM1F,SAAS,CAACmP,KAAK,CAAG,CAAEvJ,QAAS,CAAExC,QAAS,uFAAwFE,YAAY,EAAMY,QAAQ,CAAK,EAAG,iBAAkB,CAAC,CAAEd,QAAS3D,OAAO,YAAYzD,MAAM,CAAG,MAAQ,8DAA8DA,MAAM,CAAG,IAAM,iEAAiEA,MAAM,CAAG,IAAM,WAAWA,MAAM,EAAGsH,YAAY,EAAMY,QAAQ,EAAMzD,OAAQ,CAAEsH,cAAe,CAAE3E,QAAS,oCAAqCE,YAAY,EAAM7C,OAAQ,IAAK,EAAG,4BAA6B,CAAE2C,QAAS,YAAalF,MAAO,aAAc,EAAG8H,YAAa,eAAgBD,OAAQ,SAAU,CAAE,EAAG,CAAE3C,QAAS3D,OAAO,gBAAgBzD,MAAM,CAAG,MAAQ,gEAAgEA,MAAM,CAAG,IAAM,2DAA2DA,MAAM,CAAG,QAASsH,YAAY,EAAMY,QAAQ,EAAMzD,OAAQ,CAAEsH,cAAe,CAAE3E,QAAS,sCAAuCE,YAAY,EAAM7C,OAAQ,IAAK,EAAG,4BAA6B,CAAE2C,QAAS,cAAelF,MAAO,aAAc,EAAG6H,OAAQ,SAAU,CAAE,EAAE,CAAEgE,UAAW,CAAE3G,QAAS3D,OAAO,IAAIzD,MAAM,CAAG,MAAQ,kBAAkBA,MAAM,CAAG,WAAa,8GAA8GA,MAAM,CAAG,MAAQ,mBAAmBA,MAAM,CAAG,KAAMkC,MAAO,WAAYuC,OAAQ,CAAE,iBAAkB,QAAS8G,QAAS,qBAAsBE,OAAQ,oBAAqBC,SAAU,mBAAoB1B,YAAa,OAAQ,CAAE,EAAGoJ,QAAS,CAAEhM,QAAS,2FAA4FlF,MAAO,UAAW,EAAG,kBAAmB,CAAEkF,QAAS,SAAUlF,MAAO,UAAW,EAAGmL,UAAW,CAAEjG,QAAS,OAAQlF,MAAO,QAAS,EAAG,sBAAuB,CAAEkF,QAAS,iBAAkBE,YAAY,EAAMpF,MAAO,UAAW,EAAGmR,MAAO,CAAEjM,QAAS,2EAA4EE,YAAY,EAAMpF,MAAO,WAAY,EAAGoJ,QAAS,unBAAwnBC,QAAS,qBAAsB+H,IAAK,CAAElM,QAAS,UAAWlF,MAAO,UAAW,EAAG,iBAAkB,UAAWqR,KAAM,CAAEnM,QAAS,QAASlF,MAAO,SAAU,EAAGuJ,OAAQ,kFAAmF,aAAc,kCAAmCD,SAAU,wBAAyBK,SAAU,sCAAuCH,SAAU,0CAA2C1B,YAAa,iBAAkB,EAAGN,EAAM1F,SAAS,CAACmP,KAAK,CAAC,iBAAiB,CAACpQ,OAAO,CAAC,SAAS6D,CAAC,EACznGA,EAAEnC,MAAM,CAACsH,aAAa,CAACtH,MAAM,CAAGiF,EAAM1F,SAAS,CAACmP,KAAK,AACvD,GACEvM,CADE,CACA5C,QADS4C,CAAC,AACD,CAAC4M,MAAM,CAAG5M,AAGrB8C,EAHuB1F,SAAS,CAACK,MAAM,CAAC,QAAS,CAAEiH,QAAS,CAAElE,QAAS,2bAA4bE,YAAY,CAAK,EAAGkE,SAAU,CAAC,CAAEpE,QAAS,iCAAkCc,QAAQ,CAAK,EAAG,CAAEd,QAAS,mCAAoCE,YAAY,EAAMY,QAAQ,CAAK,EAAE,CAAEuD,OAAQ,kIAAmIC,SAAU,sGAAuG,GAAI,OAAO9E,EAAE5C,SAAS,CAACwP,MAAM,CAAC,aAAa,CACp9BnJ,EAAI,CAAE,4BAA6B,CAAEjD,QAAS,aAAclF,MAAO,aAAc,EAAGuR,WAAY,CAAErM,QAAS,UAAW3C,OAAQmC,EAAE5C,SAAS,CAACwP,MAAM,AAAC,CAAE,EACvJ5M,EAAE5C,SAAS,CAACQ,YAAY,CAAC,SAAU,SAAU,CAAE,iBAAkB,CAAC,CAAE4C,QAAS,2CAA4ClF,MAAO,YAAauC,OAAQ,CAAEsH,cAAe,CAAE3E,QAAS,8BAA+B3C,OAAQ4F,CAAE,EAAGN,OAAQ,SAAU,CAAE,EAAG,CAAE3C,QAAS,iDAAkDlF,MAAO,aAAcuC,OAAQ,CAAEsH,cAAe,CAAE3E,QAAS,qDAAsDE,YAAY,EAAM7C,OAAQ4F,CAAE,EAAGN,OAAQ,SAAU,CAAE,EAAE,CAAE2J,KAAM,CAAEtM,QAAS,6CAA8Cc,QAAQ,CAAK,CAAE,GAAI,OAAOtB,EAAE5C,SAAS,CAACwP,MAAM,CAACzJ,MAAM,CAAEnD,EAAE5C,SAAS,CAACQ,YAAY,CAAC,SAAU,UAAW,CAAEgO,WAAY,CAAEpL,QAAS,sCAAuClF,MAAO,SAAU,CAAE,GAAI0E,EAAE5C,SAAS,CAACQ,YAAY,CAAC,SAAU,WAAY,CAAE6O,MAAO,CAAEjM,QAAS,gBAAiBlF,MAAO,QAAS,CAAE,GAAI0E,EAAE5C,SAAS,CAAC2P,EAAE,CAAG/M,EAAE5C,SAAS,CAACwP,MAAM,CAAE5M,EAAE5C,SAAS,CAAC4P,GAAG,CAAGhN,EAAE5C,SAAS,CAACwP,MAAM,CAC33B9J,EAAM1F,SAAS,CAACgL,CAAC,CAAGtF,EAAM1F,SAAS,CAACK,MAAM,CAAC,QAAS,CAAEuF,QAAS,CAAExC,QAAS,sEAAuEc,QAAQ,CAAK,EAAG6B,OAAQ,CAAE3C,QAAS,sCAAuCc,QAAQ,CAAK,EAAG,aAAc,CAAEd,QAAS,mFAAoFE,YAAY,CAAK,EAAGgE,QAAS,oVAAqVE,SAAU,wBAAyBC,OAAQ,oHAAqHC,SAAU,iDAAkD,GAAIhC,EAAM1F,SAAS,CAACQ,YAAY,CAAC,IAAK,SAAU,CAAEkP,KAAM,CAAEtM,QAAS,2CAA4Cc,QAAQ,CAAK,CAAE,GAAIwB,EAAM1F,SAAS,CAACQ,YAAY,CAAC,IAAK,SAAU,CAAEqP,MAAO,CAAEzM,QAAS,4FAA6FE,YAAY,EAAMY,QAAQ,EAAMhG,MAAO,WAAYuC,OAAQ,CAAEsF,OAAQ,CAAC,CAAE3C,QAAS,2BAA4BE,YAAY,CAAK,EAAGoC,EAAM1F,SAAS,CAACgL,CAAC,CAACjF,MAAM,CAAC,CAAE2J,KAAMhK,EAAM1F,SAAS,CAACgL,CAAC,CAAC0E,IAAI,CAAE9J,QAASF,EAAM1F,SAAS,CAACgL,CAAC,CAACpF,OAAO,CAAE,aAAc,CAAC,CAAExC,QAAS,+BAAgCE,YAAY,CAAK,EAAG,CAAEF,QAAS,+BAAgCE,YAAY,EAAMpF,MAAO,UAAW,EAAE,CAAE6L,UAAW,CAAE3G,QAAS,gBAAiBE,YAAY,EAAMpF,MAAO,SAAU,EAAG,iBAAkB,KAAM8H,YAAa,kBAAmByJ,WAAY,CAAErM,QAAS,YAAa3C,OAAQiF,EAAM1F,SAAS,CAACgL,CAAC,AAAC,CAAE,CAAE,CAAE,GAAItF,EAAM1F,SAAS,CAACQ,YAAY,CAAC,IAAK,WAAY,CAAEqH,SAAU,4HAA6H,GAAI,OAAOnC,EAAM1F,SAAS,CAACgL,CAAC,CAACzD,OAAO,CAAE7B,EAAM1F,SAAS,CAAC8P,UAAU,CAAGpK,EAAM1F,SAAS,CAACK,MAAM,CAAC,IAAK,CAAE0F,OAAQ,CAAE3C,QAAS,wCAAyCc,OAAQ,EAAK,EAAGoD,QAAS,wYAAyYI,SAAU,uDAAwD,GAAI,OAAOhC,EAAM1F,SAAS,CAAC8P,UAAU,CAAC,aAAa,CAAEpK,EAAM1F,SAAS,CAAC+P,IAAI,CAAGrK,EAAM1F,SAAS,CAAC8P,UAAU,CAAEpK,EAAM1F,SAAS,CAACgQ,MAAM,CAAGtK,EAAM1F,SAAS,CAACK,MAAM,CAAC,QAAS,CAAE0F,OAAQ,CAAE3C,QAAS,sCAAuCc,QAAQ,CAAK,EAAG,aAAc,aAAcoD,QAAS,4RAA6RI,SAAU,qGAAsG,GAAIhC,EAAM1F,SAAS,CAACQ,YAAY,CAAC,SAAU,aAAc,CAAEkP,KAAM,CAAEtM,QAAS,gEAAiEc,OAAQ,EAAK,EAAG,YAAa,wBAAyBmL,MAAO,CAAEjM,QAAS,mBAAoBlF,MAAO,QAAS,CAAE,GAAI,OAAOwH,EAAM1F,SAAS,CAACgQ,MAAM,CAACxI,QAAQ,CAAE,SAAS5E,CAAC,EACjiH,IAAK,IAAIyD,EAAI,8CAA8CrK,MAAM,CAAEtC,EAAI,EAAGA,EAAI,EAAGA,IAC/E2M,EAAIA,EAAE/H,OAAO,CAAC,UAAW,WACvB,OAAO+H,CACT,GACFA,EAAIA,EAAE/H,OAAO,CAAC,UAAW,WACvB,MAAO,UAAUtC,MACnB,AADyB,GACrB4G,EAAE5C,SAAS,CAACiQ,IAAI,CAAG,CAAErK,QAAS,CAAC,CAAExC,QAAS3D,OAAO,YAAYzD,MAAM,CAAGqK,GAAI/C,YAAY,EAAMY,QAAQ,CAAK,EAAG,CAAEd,QAAS,mBAAoBE,YAAY,EAAMY,OAAQ,EAAK,EAAE,CAAE6B,OAAQ,CAAE3C,QAAS,wDAAyDc,QAAQ,CAAK,EAAGwL,KAAM,CAAEtM,QAAS,2EAA4Ec,QAAQ,CAAK,EAAGmF,UAAW,CAAEjG,QAAS,8CAA+Cc,QAAQ,EAAMhG,MAAO,YAAauC,OAAQ,CAAEsF,OAAQ,IAAK,CAAE,EAAG,iBAAkB,CAAE3C,QAAS,2DAA4DE,YAAY,EAAMY,QAAQ,EAAMzD,OAAQ,CAAE,sBAAuB,CAAE2C,QAAS,UAAWlF,MAAO,aAAc,EAAG6D,KAAM,IAAK,CAAE,EAAG,sBAAuB,CAAEqB,QAAS,OAAQlF,MAAO,QAAS,EAAG,qBAAsB,CAAEkF,QAAS,iBAAkBE,YAAY,EAAMpF,MAAO,aAAc,EAAGqL,SAAU,QAAS,sBAAuB,CAAEnG,QAAS,eAAgBE,YAAY,EAAMpF,MAAO,UAAW,EAAG,kBAAmB,CAAEkF,QAAS,6CAA8CE,YAAY,EAAMpF,MAAO,YAAa,EAAG,qBAAsB,CAAC,CAAEkF,QAAS,qCAAsCE,WAAY,GAAMpF,MAAO,WAAY,EAAG,CAAEkF,QAAS,wFAAyFE,YAAY,EAAMpF,MAAO,YAAauC,OAAQ,CAAEuF,YAAa,IAAK,CAAE,EAAE,CAAEsB,QAAS,CAAC,8RAA+R,+DAA+D,CAAEE,SAAU,kCAAmCqI,MAAO,CAAEzM,QAAS,SAAUlF,MAAO,UAAW,EAAG2J,SAAU,sBAAuB,aAAc,eAAgB3B,UAAW,CAAE9C,QAAS,6DAA8D3C,OAAQ,CAAEuF,YAAa,IAAK,CAAE,EAAGyB,OAAQ,6KAA8KF,QAAS,qBAAsBvB,YAAa,mCAAoC0B,SAAU,qDAAsD,EAAG9E,EAAE5C,SAAS,CAACiQ,IAAI,CAAC,iBAAiB,CAACxP,MAAM,CAACsB,IAAI,CAAGa,EAAE5C,SAAS,CAACiQ,IAAI,CAAErN,EAAE5C,SAAS,CAACiQ,IAAI,CAAC5G,SAAS,CAAC5I,MAAM,CAACsF,MAAM,CAAGnD,EAAE5C,SAAS,CAACiQ,IAAI,CAAClK,MAAM,AACz7E,EAAEL,GAAQA,EAAM1F,SAAS,CAACkQ,EAAE,CAAGxK,EAAM1F,SAAS,CAACK,MAAM,CAAC,QAAS,CAAE0F,OAAQ,CAAE3C,QAAS,yCAA0CE,WAAY,GAAMY,QAAQ,CAAK,EAAGoD,QAAS,sKAAuKC,QAAS,gCAAiCE,OAAQ,CAAC,+BAAgC,gFAAiF,qEAAqE,CAAEC,SAAU,wFAAyFqG,QAAS,0LAA2L,GAAIrI,EAAM1F,SAAS,CAACQ,YAAY,CAAC,KAAM,SAAU,CAAEkP,KAAM,CAAEtM,QAAS,6BAA8Bc,QAAQ,CAAK,CAAE,GAAI,OAAOwB,EAAM1F,SAAS,CAACkQ,EAAE,CAAC,aAAa,EAAE,CACt/B,QAD+/BtN,CAAC,2rBAC3TlJ,EAAI,uCAAuCsC,MAAM,CAACsC,OAAO,CAAC,aAAc,WACnxB,OAAO+H,EAAErK,MAAM,AACjB,GACA4G,EAAE5C,SAAS,CAACmQ,GAAG,CAAGvN,EAAE5C,SAAS,CAACK,MAAM,CAAC,IAAK,CAAE,aAAc,CAAC,CAAE+C,QAAS3D,OAAO,gEAAgEzD,MAAM,CAACsC,OAAO,CAAC,aAAc,WACxK,OAAO+H,EAAErK,MAAM,AACjB,IAAKsH,WAAY,EAAK,EAAG,iCAAkC,oCAAqC,iEAAiE,CAAEgE,QAASjB,EAAGoB,OAAQ,CAAErE,QAAS,iJAAkJc,QAAQ,CAAK,EAAGwD,SAAU,yHAA0HH,QAAS,oBAAqB,GAAI3E,EAAE5C,SAAS,CAACQ,YAAY,CAAC,MAAO,SAAU,CAAElD,OAAQ,CAAE8F,QAAS3D,OAAO,2BAA2BzD,MAAM,CAAG,MAAQ,mDAAmDA,MAAM,CAAG,IAAM,kDAAkDA,MAAM,CAACsC,OAAO,CAAC,cAAe,WAC5wB,OAAO5E,CACT,GAAK,KAAM4J,YAAY,EAAMY,QAAQ,EAAMzD,OAAQ,CAAEsF,OAAQ,eAAgB2B,SAAU,IAAK1B,YAAa,IAAK,CAAE,EAAG,aAAc,CAAE5C,QAAS,oCAAqClF,MAAO,SAAUgG,QAAQ,CAAK,CAAE,GAAItB,EAAE5C,SAAS,CAACQ,YAAY,CAAC,MAAO,UAAW,CAAE,mBAAoB,CAAE4C,QAAS,8DAA+D3C,OAAQ,CAAE+G,SAAU,OAAQ0G,QAAS,CAAE9K,QAAS,WAAYlF,MAAO,aAAcuC,OAAQmC,EAAE5C,SAAS,CAACmQ,GAAG,AAAC,CAAE,CAAE,CAAE,GAAIvN,EAAE5C,SAAS,CAACQ,YAAY,CAAC,MAAO,WAAY,CAAE,eAAgB,CAAE4C,QAAS,KAAMlF,MAAO,aAAc,CAAE,GAAI0E,EAAE5C,SAAS,CAACQ,YAAY,CAAC,MAAO,aAAc,CAAE,cAAe,CAAE4C,QAAS,6EAA8EE,YAAY,EAAMY,QAAQ,EAAMzD,OAAQmC,EAAE5C,SAAS,CAACK,MAAM,CAAC,MAAO,CAAC,EAAG,CAAE,GAAIuC,EAAE5C,SAAS,CAACQ,YAAY,CAAC,SAAU,eAAgB,CAAE,aAAc,yBAA0B,EAAGoC,AACj4B8C,EADm4B1F,SAAS,CAACmQ,GAAG,CAAC,cAAc,EACv5BzK,EAAM1F,SAAS,CAACoQ,MAAM,CAAG,CAAExK,QAAS,CAAExC,QAAS,eAAgBE,YAAY,EAAMY,QAAQ,CAAK,EAAG,uBAAwB,CAAEd,QAAS,sEAAuEc,QAAQ,EAAMzD,OAAQ,CAAEsH,cAAe,CAAE3E,QAAS,sFAAuFE,YAAY,EAAM7C,OAAQ,CAAE,cAAe,CAAE2C,QAAS,sBAAuBE,YAAY,CAAK,EAAG,oBAAqB,CAAEF,QAAS,kBAAmBlF,MAAO,aAAc,EAAG6D,KAAM,IAAK,CAAE,EAAGgE,OAAQ,SAAU,CAAE,EAAG,uBAAwB,CAAE3C,QAAS,uCAAwCc,QAAQ,EAAMhG,MAAO,QAAS,EAAG6H,OAAQ,CAAE3C,QAAS,mDAAoDc,QAAQ,CAAK,EAAGsD,SAAU,CAAEpE,QAAS,4CAA6CE,YAAY,CAAK,EAAG,aAAc,CAAEF,QAAS,mBAAoBE,YAAY,CAAK,EAAG0K,UAAW,CAAE5K,QAAS,2BAA4BE,YAAY,EAAMpF,MAAO,CAAC,aAAc,cAAc,CAAEuC,OAAQ,CAAEuF,YAAa,IAAK,CAAE,EAAGsB,QAAS,wNAAyNyG,QAAS,shBAAuhBxG,QAAS,0BAA2BE,OAAQ,mJAAoJC,SAAU,uDAAwD1B,YAAa,eAAgB,EAAGN,EAAM1F,SAAS,CAACoQ,MAAM,CAAC,uBAAuB,CAAC3P,MAAM,CAACsH,aAAa,CAACtH,MAAM,CAACsB,IAAI,CAAG2D,EAAM1F,SAAS,CAACoQ,MAAM,CAAE1K,EAAM1F,SAAS,CAACqQ,EAAE,CAAG3K,EAAM1F,SAAS,CAACoQ,MAAM,CAAE1K,EAAM1F,SAAS,CAACsQ,IAAI,CAAG,CAAElP,SAAU,CAAEgC,QAAS,yCAA0CE,YAAY,EAAMY,QAAQ,CAAK,EAAG6B,OAAQ,CAAE3C,QAAS,yCAA0CE,YAAY,EAAMY,QAAQ,CAAK,EAAG0B,QAAS,CAAExC,QAAS,gCAAiCc,QAAQ,CAAK,EAAGuD,OAAQ,qCAAsCzB,YAAa,WAAY0B,SAAU,IAAKH,QAAS,qBAAsB0C,KAAM,CAAE7G,QAAS,WAAYlF,MAAO,SAAU,CAAE,EAAGwH,EAAM1F,SAAS,CAACuQ,WAAW,CAAG7K,EAAM1F,SAAS,CAACsQ,IAAI,KAl7BzrFpU,EAq7BK,CAAC,EAr7BEQ,EAs7BC,CACvB+T,QAAS,IAAMC,EACfC,YAAa,IAAMC,EACnBC,aAAc,IAAMC,EACpBC,OAAQ,IAAMC,EACdC,oBAAqB,IAAMC,GAC3BC,qBAAsB,IAAMC,GAC5BC,aAAc,IAAMC,GACpBC,cAAe,IAAMC,GACrBC,SAAU,IAAMC,EAChBC,cAAe,IAAMC,EACrBC,YAAa,IAAMC,EACnBC,QAAS,IAAMC,GACfC,QAAS,IAAMC,GACfC,SAAU,IAAMC,GAChBC,UAAW,IAAMC,GACjBC,eAAgB,IAAMC,GACtBC,YAAa,IAAMC,GACnBC,SAAU,IAAMC,GAChBC,OAAQ,IAAMC,GACdC,QAAS,IAAMC,EACjB,EA18BE,IAAK,IAAIrW,KAAQD,EACf1C,EAAUkC,EAAQS,EAAM,CAAEC,IAAKF,CAAG,CAACC,EAAK,CAAEpB,YAAY,CAAK,GA2gC/D,IAAImV,EA/DQ,CACVzQ,MAAO,CACLwJ,MAAO,EA6DWwJ,QA5DlBC,gBAAiB,SACnB,EACAC,OAAQ,CACN,CACEC,MAAO,CAAC,SAAU,WAAY,UAAU,CACxCC,MAAO,CACL5J,MAAO,oBACT,CACF,EACA,CACE2J,MAAO,CAAC,WAAY,WAAW,CAC/BC,MAAO,CACL5J,MAAO,mBACT,CACF,EACA,CACE2J,MAAO,CAAC,UAAU,CAClBC,MAAO,CACL5J,MAAO,kBACT,CACF,EACA,CACE2J,MAAO,CAAC,UAAU,CAClBC,MAAO,CACL5J,MAAO,oBACT,CACF,EACA,CACE2J,MAAO,CAAC,cAAe,SAAS,CAChCC,MAAO,CACL5J,MAAO,oBACT,CACF,EACA,CACE2J,MAAO,CAAC,SAAU,OAAQ,MAAO,WAAW,CAC5CC,MAAO,CACL5J,MAAO,oBACT,CACF,EACA,CACE2J,MAAO,CAAC,UAAW,WAAW,CAC9BC,MAAO,CACL5J,MAAO,qBACP6J,UAAW,QACb,CACF,EACA,CACEF,MAAO,CAAC,UAAU,CAClBC,MAAO,CACL5J,MAAO,mBACT,CACF,EACA,CACE2J,MAAO,CAAC,YAAY,CACpBC,MAAO,CACL5J,MAAO,oBACT,CACF,EACD,AACH,EAmGImH,EA/FS,CACX3Q,MAAO,CACLiT,YA6FsBK,IA7FL,UACjB9J,MAAO,SACT,EACA0J,OAAQ,CACN,CACEC,MAAO,CAAC,UAAW,SAAU,UAAW,QAAS,cAAc,CAC/DC,MAAO,CACL5J,MAAO,SACT,CACF,EACA,CACE2J,MAAO,CAAC,YAAY,CACpBC,MAAO,CACLG,QAAS,EACX,CACF,EACA,CACEJ,MAAO,CAAC,MAAO,WAAY,SAAS,CACpCC,MAAO,CACL5J,MAAO,SACT,CACF,EACA,CACE2J,MAAO,CAAC,WAAY,WAAW,CAC/BC,MAAO,CACL5J,MAAO,SACT,CACF,EACA,CACE2J,MAAO,CAAC,SAAU,WAAY,YAAY,CAC1CC,MAAO,CACL5J,MAAO,SACT,CACF,EACA,CACE2J,MAAO,CAAC,YAAY,CACpBC,MAAO,CACL5J,MAAO,SACT,CACF,EACA,CACE2J,MAAO,CACL,UACA,SACA,SACA,MACA,aACA,UACA,UACA,YACA,OACA,YACA,QACA,SACA,cACA,WACD,CACDC,MAAO,CACL5J,MAAO,SACT,CACF,EACA,CACE2J,MAAO,CAAC,UAAU,CAClBC,MAAO,CACLI,mBAAoB,cACtB,CACF,EACA,CACEL,MAAO,CAAC,WAAW,CACnBC,MAAO,CACLI,mBAAoB,WACtB,CACF,EACA,CACEL,MAAO,CAAC,SAAS,CACjBC,MAAO,CACLC,UAAW,QACb,CACF,EACA,CACEF,MAAO,CAAC,YAAa,OAAO,CAC5BC,MAAO,CACLK,WAAY,MACd,CACF,EACA,CACEN,MAAO,CAAC,YAAY,CACpBC,MAAO,CACL5J,MAAO,SACT,CACF,EAEJ,AADG,EAwGCqH,EAnGS,CACX7Q,MAAO,CACLiT,aAiGuBS,GAjGN,UACjBlK,MAAO,SACT,EACA0J,OAAQ,CACN,CACEC,MAAO,CAAC,UAAW,SAAU,UAAW,QAAS,cAAc,CAC/DC,MAAO,CACL5J,MAAO,SACT,CACF,EACA,CACE2J,MAAO,CAAC,YAAY,CACpBC,MAAO,CACLG,QAAS,EACX,CACF,EACA,CACEJ,MAAO,CAAC,MAAO,WAAY,SAAS,CACpCC,MAAO,CACL5J,MAAO,SACT,CACF,EACA,CACE2J,MAAO,CAAC,WAAY,WAAW,CAC/BC,MAAO,CACL5J,MAAO,SACT,CACF,EACA,CACE2J,MAAO,CAAC,SAAU,WAAY,YAAY,CAC1CC,MAAO,CACL5J,MAAO,SACT,CACF,EACA,CACE2J,MAAO,CAAC,YAAY,CACpBC,MAAO,CACL5J,MAAO,SACT,CACF,EACA,CACE2J,MAAO,CACL,UACA,SACA,SACA,MACA,aACA,UACA,UACA,YACA,OACA,YACA,QACA,SACD,CACDC,MAAO,CACL5J,MAAO,SACT,CACF,EACA,CACE2J,MAAO,CAAC,cAAe,WAAW,CAClCC,MAAO,CACL5J,MAAO,SACT,CACF,EACA,CACE2J,MAAO,CAAC,UAAU,CAClBC,MAAO,CACLI,mBAAoB,cACtB,CACF,EACA,CACEL,MAAO,CAAC,WAAW,CACnBC,MAAO,CACLI,mBAAoB,WACtB,CACF,EACA,CACEL,MAAO,CAAC,SAAS,CACjBC,MAAO,CACLC,UAAW,QACb,CACF,EACA,CACEF,MAAO,CAAC,YAAa,OAAO,CAC5BC,MAAO,CACLK,WAAY,MACd,CACF,EACA,CACEN,MAAO,CAAC,YAAY,CACpBC,MAAO,CACL5J,MAAO,SACT,CACF,EACD,AACH,EA8EIuH,EA1ES,CACX/Q,MAAO,CACLwJ,MAAO,CAwEUmK,SAvEjBV,gBAAiB,SACnB,EACAC,OAAQ,CACN,CACEC,MAAO,CAAC,UAAW,SAAU,UAAW,QAAQ,CAChDC,MAAO,CACL5J,MAAO,UACP6J,UAAW,QACb,CACF,EACA,CACEF,MAAO,CAAC,YAAY,CACpBC,MAAO,CACLG,QAAS,EACX,CACF,EACA,CACEJ,MAAO,CAAC,SAAU,aAAa,CAC/BC,MAAO,CACL5J,MAAO,SACT,CACF,EACA,CACE2J,MAAO,CAAC,cAAe,WAAW,CAClCC,MAAO,CACL5J,MAAO,SACT,CACF,EACA,CACE2J,MAAO,CACL,SACA,MACA,SACA,SACA,UACA,WACA,WACA,WACA,QACA,WACD,CACDC,MAAO,CACL5J,MAAO,SACT,CACF,EACA,CACE2J,MAAO,CAAC,SAAU,UAAW,YAAa,WAAW,CACrDC,MAAO,CACL5J,MAAO,SACT,CACF,EACA,CACE2J,MAAO,CAAC,WAAY,UAAW,MAAM,CACrCC,MAAO,CACL5J,MAAO,SACT,CACF,EACA,CACE2J,MAAO,CAAC,oBAAoB,CAC5BC,MAAO,CACL5J,MAAO,SACT,CACF,EACA,CACE2J,MAAO,CAAC,MAAO,WAAY,UAAU,CACrCC,MAAO,CACL5J,MAAO,SACT,CACF,EACD,AACH,EA6GIiI,EAzGS,CACXzR,MAAO,CACLwJ,MAAO,GAuGYoK,OAtGnBX,gBAAiB,SACnB,EACAC,OAAQ,CACN,CACEC,MAAO,CAAC,UAAU,CAClBC,MAAO,CACL5J,MAAO,qBACP6J,UAAW,QACb,CACF,EACA,CACEF,MAAO,CAAC,UAAU,CAClBC,MAAO,CACL5J,MAAO,0BACP6J,UAAW,QACb,CACF,EACA,CACEF,MAAO,CAAC,WAAY,YAAY,CAChCC,MAAO,CACL5J,MAAO,qBACP6J,UAAW,QACb,CACF,EACA,CACEF,MAAO,CAAC,UAAU,CAClBC,MAAO,CACL5J,MAAO,oBACP6J,UAAW,QACb,CACF,EACA,CACEF,MAAO,CAAC,SAAU,MAAM,CACxBC,MAAO,CACL5J,MAAO,oBACT,CACF,EACA,CACE2J,MAAO,CAAC,WAAW,CACnBC,MAAO,CACL5J,MAAO,oBACT,CACF,EACA,CACE2J,MAAO,CAAC,SAAS,CACjBC,MAAO,CACL5J,MAAO,oBACT,CACF,EACA,CACE2J,MAAO,CAAC,UAAW,OAAQ,WAAY,WAAW,CAClDC,MAAO,CACL5J,MAAO,oBACT,CACF,EACA,CAGE2J,MAAO,CAAC,cAAc,CACtBC,MAAO,CACL5J,MAAO,oBACT,CACF,EACA,CACE2J,MAAO,CAAC,WAAY,UAAU,CAC9BC,MAAO,CACL5J,MAAO,qBACP6J,UAAW,QACb,CACF,EACA,CACEF,MAAO,CAAC,aAAa,CACrBC,MAAO,CACL5J,MAAO,oBACT,CACF,EACA,CACE2J,MAAO,CAAC,MAAO,WAAY,UAAU,CACrCC,MAAO,CACL5J,MAAO,oBACT,CACF,EACA,CACE2J,MAAO,CAAC,UAAU,CAClBC,MAAO,CACL5J,MAAO,mBACT,CACF,EACA,CACE2J,MAAO,CAAC,WAAW,CACnBC,MAAO,CACL5J,MAAO,oBACT,CACF,EACA,CACE2J,MAAO,CAAC,YAAY,CACpBC,MAAO,CACL5J,MAAO,oBACT,CACF,EACD,AACH,EAiGImI,EA7FS,CACX3R,MAAO,CACLwJ,MAAO,QA2FiBqK,EA1FxBZ,gBAAiB,SACnB,EACAC,OAAQ,CACN,CACEC,MAAO,CAAC,UAAU,CAClBC,MAAO,CACL5J,MAAO,qBACP6J,UAAW,QACb,CACF,EACA,CACEF,MAAO,CAAC,UAAU,CAClBC,MAAO,CACL5J,MAAO,0BACP6J,UAAW,QACb,CACF,EACA,CACEF,MAAO,CAAC,WAAY,YAAY,CAChCC,MAAO,CACL5J,MAAO,oBACP6J,UAAW,QACb,CACF,EACA,CACEF,MAAO,CAAC,UAAU,CAClBC,MAAO,CACL5J,MAAO,qBACP6J,UAAW,QACb,CACF,EACA,CACEF,MAAO,CAAC,SAAU,UAAW,OAAQ,WAAY,MAAM,CACvDC,MAAO,CACL5J,MAAO,mBACT,CACF,EACA,CACE2J,MAAO,CAAC,WAAW,CACnBC,MAAO,CACL5J,MAAO,oBACT,CACF,EACA,CACE2J,MAAO,CAAC,SAAS,CACjBC,MAAO,CACL5J,MAAO,kBACT,CACF,EACA,CAGE2J,MAAO,CAAC,cAAc,CACtBC,MAAO,CACL5J,MAAO,mBACT,CACF,EACA,CACE2J,MAAO,CAAC,WAAY,WAAY,UAAU,CAC1CC,MAAO,CACL5J,MAAO,oBACP6J,UAAW,QACb,CACF,EACA,CACEF,MAAO,CAAC,aAAa,CACrBC,MAAO,CACL5J,MAAO,iBACT,CACF,EACA,CACE2J,MAAO,CAAC,MAAM,CACdC,MAAO,CACL5J,MAAO,mBACT,CACF,EACA,CACE2J,MAAO,CAAC,WAAY,WAAY,UAAW,YAAY,CACvDC,MAAO,CACL5J,MAAO,mBACT,CACF,EACA,CACE2J,MAAO,CAAC,UAAU,CAClBC,MAAO,CACL5J,MAAO,kBACT,CACF,EACD,AACH,IAOW,YAED,UAsINqI,EA5HS,CACX7R,MAAO,CACLiT,YA0HsBe,IA1HL,UACjBxK,MAAO,SACT,EACA0J,OAAQ,CACN,CACEC,MAAO,CAAC,YAAY,CACpBC,MAAO,CACL5J,KAAAA,EACF,AADSsK,CAEX,EACA,CACEX,GAJgB9L,GAIT,CAAC,GAJe,UAIF,CACrB+L,MAAO,CACL5J,KAAAA,EAAOsK,AACT,CACF,EACA,CACEX,GAJgBrN,GAIT,CACL,EALoB,QAMpB,gBACA,SACA,UACA,QACA,UACD,CACDsN,MAAO,CACL5J,MAzCG,CAyCIsK,OAAOnO,CAChB,CACF,EACA,CACEwN,EAJuB,IAIhB,CACL,WACA,SACA,gBACA,WACA,SACA,UACD,CACDC,MAAO,CACL5J,MApDK,CAoDEsK,OAAOC,CAChB,CACF,EACA,CACEZ,IAJyB,EAIlB,CAAC,UAAU,CAClBC,MAAO,CACL5J,MAvDG,CAuDIsK,OAAOxM,CAChB,CACF,EACA,CACE6L,EAJuB,IAIhB,CAAC,MAAM,CACdC,MAAO,CACL5J,MA3DD,CA2DQsK,OAAOlR,CAChB,CACF,CAFqB,CAGrB,CACEuQ,MAAO,CAAC,SAAS,CACjBC,MAAO,CACL5J,KAAAA,EAAOsK,AACT,CACF,EACA,CACEX,GAJgBrN,GAIT,CAAC,EAJc,YAIA,CACtBsN,MAAO,CACL5J,KAAAA,EAAOsK,AACT,CACF,EACA,CACEX,GAJgBrN,GAIT,CAAC,EAJc,SAIF,OAAQ,UAAW,WAAW,CAClDsN,MAAO,CACL5J,MArFA,CAqFOsK,OAAOrE,CAChB,CACF,EAFsB,AAGtB,CACE0D,MAAO,CAAC,WAAW,CACnBC,MAAO,CACL5J,MAlFI,CAkFGsK,OAAOvM,CAChB,CACF,EACA,CACE4L,GAJwB,GAIjB,CAAC,WAAY,SAAU,MAAO,WAAW,CAChDC,MAAO,CACL5J,MA5FI,CA4FGsK,OAAOxK,CAChB,CACF,EACA,CACE6J,GAJwB,GAIjB,CAAC,UAAU,CAClBC,MAAO,CACL5J,KAAAA,EAAOsK,AACT,CACF,EACA,CACEX,GAJgB9L,GAIT,CAAC,GAJe,MAIL,aAAa,CAC/B+L,MAAO,CACL5J,MAnGK,CAmGEsK,OAAO3U,CAChB,CACF,EACA,CACEgU,IAJyB,EAIlB,CAAC,YAAY,CACpBC,MAAO,CACLK,WAAY,KACd,CACF,EACA,CACEN,MAAO,CAAC,OAAO,CACfC,MAAO,CACLK,WAAY,MACd,CACF,EACA,CACEN,MAAO,CAAC,SAAS,CACjBC,MAAO,CACLC,UAAW,QACb,CACF,EACA,CACEF,MAAO,CAAC,YAAY,CACpBC,MAAO,CACLG,QAAS,EACX,CACF,EACD,AACH,EAwHIxB,GApHS,CACX/R,MAAO,CACLwJ,MAAO,CAkHWyK,SAjHlBhB,gBAAiB,SACnB,EACAC,OAAQ,CACN,CACEC,MAAO,CAAC,UAAU,CAClBC,MAAO,CACL5J,MAAO,qBACP6J,UAAW,QACb,CACF,EACA,CACEF,MAAO,CAAC,UAAU,CAClBC,MAAO,CACL5J,MAAO,UACP6J,UAAW,QACb,CACF,EACA,CACEF,MAAO,CAAC,WAAW,CACnBC,MAAO,CACL5J,MAAO,qBACP6J,UAAW,QACb,CACF,EACA,CACEF,MAAO,CAAC,UAAU,CAClBC,MAAO,CACL5J,MAAO,UACP6J,UAAW,QACb,CACF,EACA,CACEF,MAAO,CAAC,SAAU,MAAM,CACxBC,MAAO,CACL5J,MAAO,SACT,CACF,EACA,CACE2J,MAAO,CAAC,WAAW,CACnBC,MAAO,CACL5J,MAAO,SACT,CACF,EACA,CACE2J,MAAO,CAAC,SAAS,CACjBC,MAAO,CACL5J,MAAO,SACT,CACF,EACA,CACE2J,MAAO,CAAC,UAAW,OAAQ,WAAY,WAAY,aAAa,CAChEC,MAAO,CACL5J,MAAO,SACT,CACF,EACA,CACE2J,MAAO,CAAC,cAAc,CACtBC,MAAO,CACL5J,MAAO,SACT,CACF,EACA,CACE2J,MAAO,CAAC,WAAY,UAAU,CAC9BC,MAAO,CACL5J,MAAO,UACP6J,UAAW,QACb,CACF,EACA,CACEF,MAAO,CAAC,MAAO,WAAY,UAAU,CACrCC,MAAO,CACL5J,MAAO,SACT,CACF,EACA,CACE2J,MAAO,CAAC,UAAU,CAClBC,MAAO,CACL5J,MAAO,SACT,CACF,EACA,CACE2J,MAAO,CAAC,YAAY,CACpBC,MAAO,CACL5J,MAAO,qBACP+J,QAAS,EACX,CACF,EACA,CACEJ,MAAO,CAAC,MAAO,WAAW,CAC1BC,MAAO,CACL5J,MAAO,SACT,CACF,EACA,CACE2J,MAAO,CAAC,YAAY,CACpBC,MAAO,CACL5J,MAAO,oBACT,CACF,EACA,CACE2J,MAAO,CAAC,UAAU,CAClBC,MAAO,CACL5J,MAAO,SACT,CACF,EACA,CACE2J,MAAO,CAAC,OAAO,CACfC,MAAO,CACL5J,MAAO,SACT,CACF,EAEJ,AADG,EAmGC6I,GA9FS,CACXrS,MAAO,CACLwJ,MAAO,GA4Fa0K,OA3FpBjB,gBAAiB,SACnB,EACAC,OAAQ,CACN,CACEC,MAAO,CAAC,UAAU,CAClBC,MAAO,CACL5J,MAAO,qBACP6J,UAAW,QACb,CACF,EACA,CACEF,MAAO,CAAC,SAAU,WAAW,CAC7BC,MAAO,CACL5J,MAAO,oBACT,CACF,EACA,CACE2J,MAAO,CAAC,SAAS,CACjBC,MAAO,CACL5J,MAAO,oBACT,CACF,EACA,CACE2J,MAAO,CAAC,UAAW,OAAQ,WAAY,WAAW,CAClDC,MAAO,CACL5J,MAAO,oBACT,CACF,EACA,CACE2J,MAAO,CAAC,cAAe,WAAW,CAClCC,MAAO,CACL5J,MAAO,oBACT,CACF,EACA,CACE2J,MAAO,CAAC,WAAW,CACnBC,MAAO,CACL5J,MAAO,oBACT,CACF,EACA,CACE2J,MAAO,CAAC,aAAc,YAAY,CAClCC,MAAO,CACL5J,MAAO,oBACT,CACF,EACA,CACE2J,MAAO,CAAC,MAAO,UAAU,CACzBC,MAAO,CACL5J,MAAO,mBACT,CACF,EACA,CACE2J,MAAO,CAAC,WAAW,CACnBC,MAAO,CACL5J,MAAO,oBACT,CACF,EACA,CACE2J,MAAO,CAAC,UAAU,CAClBC,MAAO,CACL5J,MAAO,mBACT,CACF,EACA,CACE2J,MAAO,CAAC,UAAU,CAClBC,MAAO,CACLC,UAAW,QACb,CACF,EACA,CACEF,MAAO,CAAC,UAAU,CAClBC,MAAO,CACL5J,MAAO,qBACP6J,UAAW,QACb,CACF,EACA,CACEF,MAAO,CAAC,YAAY,CACpBC,MAAO,CACL5J,MAAO,oBACT,CACF,EACA,CACE2J,MAAO,CAAC,MAAM,CACdC,MAAO,CACL5J,MAAO,oBACT,CACF,EAEJ,AADG,EA8FC+I,GAzFU,CACZvS,MAAO,CACLwJ,MAAO,QAuFkB2K,EAtFzBlB,gBAAiB,SACnB,EACAC,OAAQ,CACN,CACEC,MAAO,CAAC,UAAU,CAClBC,MAAO,CACL5J,MAAO,oBACT,CACF,EACA,CACE2J,MAAO,CAAC,UAAU,CAClBC,MAAO,CACL5J,MAAO,yBACT,CACF,EACA,CACE2J,MAAO,CAAC,WAAW,CACnBC,MAAO,CACL5J,MAAO,oBACT,CACF,EACA,CACE2J,MAAO,CAAC,UAAU,CAClBC,MAAO,CACL5J,MAAO,oBACP6J,UAAW,QACb,CACF,EACA,CACEF,MAAO,CAAC,cAAc,CACtBC,MAAO,CACL5J,MAAO,oBACT,CACF,EACA,CACE2J,MAAO,CAAC,WAAW,CACnBC,MAAO,CACL5J,MAAO,mBACT,CACF,EACA,CACE2J,MAAO,CAAC,SAAU,MAAM,CACxBC,MAAO,CACL5J,MAAO,oBACT,CACF,EACA,CACE2J,MAAO,CAAC,WAAW,CACnBC,MAAO,CACL5J,MAAO,oBACT,CACF,EACA,CACE2J,MAAO,CAAC,SAAU,UAAU,CAC5BC,MAAO,CACL5J,MAAO,mBACT,CACF,EACA,CACE2J,MAAO,CAAC,YAAY,CACpBC,MAAO,CACL5J,MAAO,mBACT,CACF,EACA,CACE2J,MAAO,CACL,UACA,WACA,WACA,YACA,MACA,WACA,UACD,CACDC,MAAO,CACL5J,MAAO,kBACT,CACF,EACA,C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O,oBACT,CACF,EACA,CACE2J,MAAO,CAAC,UAAW,cAAe,SAAS,CAC3CC,MAAO,CACL5J,MAAO,oBACT,CACF,EACA,CACE2J,MAAO,CACL,YACA,aACA,mBACA,UACA,WACA,SACA,SACD,CACDC,MAAO,CAAE5J,MAAO,mBAAoB,CACtC,EACA,CACE2J,MAAO,CAAC,UAAU,CAClBC,MAAO,CAAE5J,MAAO,oBAAqB,CACvC,EACA,CACE2J,MAAO,CAAC,WAAY,MAAO,SAAU,UAAW,YAAY,CAC5DC,MAAO,CACL5J,MAAO,oBACT,CACF,EACA,CACE2J,MAAO,CACL,WACA,SACA,OACA,UACA,WACA,QACA,aACD,CACDC,MAAO,CACL5J,MAAO,mBACT,CACF,EACA,CACE2J,MAAO,CAAC,WAAY,WAAY,WAAW,CAC3CC,MAAO,CACL5J,MAAO,oBACT,CACF,EACA,CACE2J,MAAO,CAAC,MAAM,CACdC,MAAO,CACL5J,MAAO,oBACT,CACF,EACA,CACE2J,MAAO,CAAC,UAAU,CAClBC,MAAO,CACLI,mBAAoB,cACtB,CACF,EACA,CACEL,MAAO,CAAC,WAAW,CACnBC,MAAO,CACLI,mBAAoB,WACtB,CACF,EACA,CACEL,MAAO,CAAC,SAAS,CACjBC,MAAO,CACLC,UAAW,QACb,CACF,EACA,CACEF,MAAO,CAAC,YAAa,OAAO,CAC5BC,MAAO,CACLK,WAAY,MACd,CACF,EACA,CACEN,MAAO,CAAC,YAAY,CACpBC,MAAO,CACL5J,MAAO,oBACT,CACF,EACD,AACH,EA0GI2I,GAtGU,CACZnS,MAAO,CACLiT,QAoGmB6B,QApGF,oBACjBtL,MAAO,mBACT,EACA0J,OAAQ,CACN,CACEC,MAAO,CAAC,UAAW,SAAU,QAAQ,CACrCC,MAAO,CACL5J,MAAO,mBACT,CACF,EACA,CACE2J,MAAO,CAAC,UAAW,cAAe,SAAS,CAC3CC,MAAO,CACL5J,MAAO,mBACT,CACF,EACA,CACE2J,MAAO,CACL,YACA,aACA,UACA,WACA,SACA,SACD,CACDC,MAAO,CACL5J,MAAO,mBACT,CACF,EACA,CACE2J,MAAO,CAAC,U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","ignoreList":[2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,18,20,21,22,23,24,25,26,28,29,30,31,32,33,34]}