MeUtils 2024.3.4.13.4.45__py3-none-any.whl → 2025.1.16.17.15.52__py3-none-any.whl

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 (582) hide show
  1. {MeUtils-2024.3.4.13.4.45.dist-info → MeUtils-2025.1.16.17.15.52.dist-info}/METADATA +38 -32
  2. MeUtils-2025.1.16.17.15.52.dist-info/RECORD +864 -0
  3. {MeUtils-2024.3.4.13.4.45.dist-info → MeUtils-2025.1.16.17.15.52.dist-info}/WHEEL +1 -1
  4. {MeUtils-2024.3.4.13.4.45.dist-info → MeUtils-2025.1.16.17.15.52.dist-info}/entry_points.txt +1 -0
  5. apps/spider.py +24 -8
  6. examples/_openaisdk/4v.py +110 -0
  7. examples/_openaisdk/__init__.py +11 -0
  8. examples/_openaisdk/baichuan.py +38 -0
  9. examples/_openaisdk/bpo.py +138 -0
  10. examples/_openaisdk/chat_latex.py +95 -0
  11. examples/_openaisdk/chattts.py +85 -0
  12. examples/_openaisdk/copilot.py +48 -0
  13. examples/_openaisdk/dalle3.py +48 -0
  14. examples/_openaisdk/deeplx.py +31 -0
  15. examples/_openaisdk/demo.py +77 -0
  16. examples/_openaisdk/embeddings.py +34 -0
  17. examples/_openaisdk/gpt4all.py +69 -0
  18. examples/_openaisdk/gpt_fc.py +23 -0
  19. examples/_openaisdk/gr_vl.py +46 -0
  20. examples/_openaisdk/json_mode.py +12 -0
  21. examples/_openaisdk/kimi.py +91 -0
  22. examples/_openaisdk/kimi_qa.py +57 -0
  23. examples/_openaisdk/minimax.py +75 -0
  24. examples/_openaisdk/open_router.py +48 -0
  25. examples/_openaisdk/openai_aiplus.py +54 -0
  26. examples/_openaisdk/openai_audio.py +20 -0
  27. examples/_openaisdk/openai_baichuan.py +59 -0
  28. examples/_openaisdk/openai_cache.py +37 -0
  29. examples/_openaisdk/openai_chatfire.py +228 -0
  30. examples/_openaisdk/openai_chatfire_all.py +166 -0
  31. examples/_openaisdk/openai_deepinfra.py +55 -0
  32. examples/_openaisdk/openai_deepseek.py +29 -0
  33. examples/_openaisdk/openai_doubao.py +43 -0
  34. examples/_openaisdk/openai_embeddings.py +36 -0
  35. examples/_openaisdk/openai_files.py +57 -0
  36. examples/_openaisdk/openai_gitee.py +33 -0
  37. examples/_openaisdk/openai_god.py +45 -0
  38. examples/_openaisdk/openai_groq.py +240 -0
  39. examples/_openaisdk/openai_images.py +203 -0
  40. examples/_openaisdk/openai_json.py +78 -0
  41. examples/_openaisdk/openai_lingyi.py +59 -0
  42. examples/_openaisdk/openai_modelscope.py +54 -0
  43. examples/_openaisdk/openai_moon.py +55 -0
  44. examples/_openaisdk/openai_oi.py +61 -0
  45. examples/_openaisdk/openai_ppu.py +47 -0
  46. examples/_openaisdk/openai_qwen.py +58 -0
  47. examples/_openaisdk/openai_search.py +42 -0
  48. examples/_openaisdk/openai_sensenova.py +81 -0
  49. examples/_openaisdk/openai_siliconflow.py +52 -0
  50. examples/_openaisdk/openai_step.py +45 -0
  51. examples/_openaisdk/openai_test.py +66 -0
  52. examples/_openaisdk/openai_together.py +57 -0
  53. examples/_openaisdk/openai_tune.py +38 -0
  54. examples/_openaisdk/openai_zhipu.py +59 -0
  55. examples/_openaisdk/ppu.py +28 -0
  56. examples/_openaisdk/rag.py +54 -0
  57. examples/_openaisdk/rag_.py +26 -0
  58. examples/_openaisdk/test.py +52 -0
  59. examples/_openaisdk/x.py +32 -0
  60. examples/_openaisdk/xx.py +29 -0
  61. examples/_openaisdk/zhipu_files.py +47 -0
  62. examples/_openaisdk/zhipu_/346/231/272/350/203/275/344/275/223.py +45 -0
  63. examples/_openaisdk//345/205/234/345/272/225/346/265/213/350/257/225.py +50 -0
  64. examples/_openaisdk//345/244/232/346/250/241/346/200/201/346/265/213/350/257/225.py +76 -0
  65. examples/_openaisdk//345/244/232/346/250/241/346/200/201/346/265/213/350/257/225_.py +56 -0
  66. examples/_openaisdk//346/226/207/344/273/266/351/227/256/347/255/224.py +36 -0
  67. examples/_openaisdk//346/226/207/346/241/243/350/247/243/346/236/220.py +34 -0
  68. examples/_openaisdk//346/250/241/345/236/213/346/265/213/350/257/225.py +53 -0
  69. examples/_openaisdk//351/230/277/351/207/214.py +80 -0
  70. {meutils/serving/jina/__demo → examples/ann}/__init__.py +1 -1
  71. examples/ann/main.py +31 -0
  72. examples/apis/kl.py +28 -0
  73. examples/apis/x.py +17 -0
  74. examples/apis/xx.py +17 -0
  75. examples/arq_demo/demo.py +3 -0
  76. examples/backgroundtasks.py +25 -0
  77. examples/bserver.py +513 -21
  78. examples/cache_demo/HermesCache_demo.py +81 -0
  79. examples/cache_demo/acacge.py +26 -0
  80. examples/cache_demo/x.py +31 -0
  81. {meutils/docarray_utils → examples/caches}/__init__.py +1 -1
  82. examples/caches/llmcache.py +18 -0
  83. examples/celery_demo/product_task.py +2 -0
  84. examples/demo.py +17 -1
  85. examples/fastapi_caching.py +59 -0
  86. {meutils/dependencies → examples/gr}/__init__.py +1 -1
  87. examples/gr/d.py +22 -0
  88. examples/gr/demo.py +30 -0
  89. examples/ip2/345/234/260/345/214/272.py +16 -0
  90. examples/jinja2_demo/j2_demo.py +20 -1
  91. examples/json/346/240/207/345/207/206/345/214/226.py +54 -0
  92. examples/md.py +29 -0
  93. {meutils/serving/jina → examples/nesc}/__init__.py +1 -1
  94. examples/nesc/main.py +76 -0
  95. examples/orm/mysql_orm.py +113 -0
  96. examples/orm/sql_creater.py +57 -0
  97. examples/orm/sqlm.py +134 -0
  98. examples/rq_demo/fns.py +18 -0
  99. examples/rq_demo/redis/351/230/237/345/210/227.py +14 -7
  100. examples/rq_demo/redis/351/230/237/345/210/227_add_chatfire.py +30 -0
  101. examples/size_map.py +43 -0
  102. examples/test.py +59 -0
  103. examples/webs/__init__.py +11 -0
  104. examples/webs/main.py +34 -0
  105. examples/x.py +13 -0
  106. examples//345/216/273/346/260/264/345/215/260.py +20 -0
  107. examples//346/226/207/346/241/243/346/231/272/350/203/275/__init__.py +11 -0
  108. meutils/_utils.py +15 -6
  109. meutils/ai_audio/asr/__init__.py +3 -2
  110. meutils/ai_audio/asr/cf_asr.py +53 -0
  111. meutils/ai_audio/asr/de.py +11 -0
  112. meutils/ai_audio/asr/fast_asr.py +15 -7
  113. meutils/ai_audio/asr/openai_asr.py +83 -6
  114. meutils/ai_audio/fast_asr.py +8 -4
  115. meutils/ai_audio/tts/EdgeTTS.py +33 -7
  116. meutils/ai_audio/tts/openai_tts.py +24 -20
  117. meutils/ai_audio/tts/tts_ui.py +1 -0
  118. meutils/ai_audio/utils.py +9 -0
  119. meutils/ai_cv/__init__.py +0 -1
  120. meutils/ai_cv/ocr.py +3 -2
  121. meutils/ai_cv/utils.py +154 -0
  122. meutils/ai_video/avmerge.py +6 -0
  123. meutils/ai_video/video.py +11 -2
  124. meutils/{api → apis}/__init__.py +1 -1
  125. meutils/apis/ali_apis.py +60 -0
  126. meutils/apis/audio/__init__.py +10 -0
  127. meutils/apis/audio/deepinfra.py +59 -0
  128. meutils/apis/audio/fish.py +248 -0
  129. meutils/apis/baidu/__init__.py +9 -0
  130. meutils/apis/baidu/bdaitpzs.py +229 -0
  131. meutils/apis/baidu/test.py +78 -0
  132. meutils/apis/chatglm/__init__.py +11 -0
  133. meutils/apis/chatglm/glm_video.py +273 -0
  134. meutils/apis/chatglm/glm_video_api.py +116 -0
  135. meutils/apis/chatglm/images.py +63 -0
  136. meutils/apis/chatglm/temp.py +259 -0
  137. meutils/apis/chatglm/x.py +31 -0
  138. meutils/{api → apis}/common.py +10 -6
  139. meutils/apis/fal/__init__.py +11 -0
  140. meutils/apis/fal/files.py +53 -0
  141. meutils/apis/fal/images.py +57 -0
  142. meutils/apis/fal/images_.py +72 -0
  143. meutils/apis/fal/videos.py +77 -0
  144. meutils/apis/firecrawl.py +45 -0
  145. meutils/apis/gitee/__init__.py +11 -0
  146. meutils/apis/gitee/images/__init__.py +9 -0
  147. meutils/apis/gitee/images/kolors.py +99 -0
  148. meutils/apis/hailuoai/__init__.py +11 -0
  149. meutils/apis/hailuoai/demo.py +34 -0
  150. meutils/apis/hailuoai/hasha_new.py +248 -0
  151. meutils/apis/hailuoai/music.py +11 -0
  152. meutils/apis/hailuoai/upload.py +116 -0
  153. meutils/apis/hailuoai/videos.py +460 -0
  154. meutils/apis/hailuoai/yy.py +242 -0
  155. meutils/apis/hf/__init__.py +11 -0
  156. meutils/apis/hf/got_ocr.py +64 -0
  157. meutils/apis/hf/gradio.py +34 -0
  158. meutils/apis/hf/hivisionidphotos.py +80 -0
  159. meutils/apis/hf/kolors.py +68 -0
  160. meutils/apis/hf/kolors_virtual_try_on.py +107 -0
  161. meutils/apis/hf/r.py +53 -0
  162. meutils/apis/hf/x.py +26 -0
  163. meutils/apis/hf//350/257/201/344/273/266/347/205/247.py +41 -0
  164. meutils/apis/hunyuan/__init__.py +11 -0
  165. meutils/apis/hunyuan/image_tools.py +84 -0
  166. meutils/apis/images/__init__.py +11 -0
  167. meutils/apis/images/deepinfra.py +92 -0
  168. meutils/apis/images/demo.py +150 -0
  169. meutils/apis/images/eidt.py +36 -0
  170. meutils/apis/images/flux/__init__.py +11 -0
  171. meutils/apis/images/flux/fluxpro.py +108 -0
  172. meutils/apis/images/flux/mystic.py +116 -0
  173. meutils/apis/images/ideogram/__init__.py +10 -0
  174. meutils/apis/images/ideogram/ideogram_images.py +193 -0
  175. meutils/apis/images/prodia/__init__.py +12 -0
  176. meutils/apis/images/prodia/faceswap.py +76 -0
  177. meutils/apis/images/recraft.py +152 -0
  178. meutils/apis/images/virtual_try_on/__init__.py +11 -0
  179. meutils/apis/images/virtual_try_on/images.py +65 -0
  180. meutils/apis/jiema/24mail.py +96 -0
  181. meutils/apis/jiema/__init__.py +11 -0
  182. meutils/apis/jiema/yezi.py +97 -0
  183. meutils/apis/jimeng/__init__.py +11 -0
  184. meutils/apis/jimeng/common.py +328 -0
  185. meutils/apis/jimeng/doubao.py +68 -0
  186. meutils/apis/jimeng/doubao_utils.py +175 -0
  187. meutils/apis/jimeng/files.py +263 -0
  188. meutils/apis/jimeng/images.py +140 -0
  189. meutils/apis/jimeng/lip_sync.py +11 -0
  190. meutils/apis/jina.py +55 -0
  191. meutils/apis/kling/__init__.py +11 -0
  192. meutils/apis/kling/api.py +60 -0
  193. meutils/apis/kling/images.py +174 -0
  194. meutils/apis/kling/kolors_virtual_try_on.py +111 -0
  195. meutils/apis/kling/kolors_virtual_try_on_web.py +126 -0
  196. meutils/apis/kling/videos.py +67 -0
  197. meutils/apis/kling//351/211/264/346/235/203.py +34 -0
  198. meutils/apis/kuaidi.py +32 -0
  199. meutils/apis/kuaishou/__init__.py +10 -0
  200. meutils/apis/kuaishou/klingai.py +523 -0
  201. meutils/apis/kuaishou/klingai_video.py +197 -0
  202. meutils/apis/kuaishou/kolors.py +189 -0
  203. meutils/apis/llm_qa.py +55 -0
  204. meutils/apis/luma/__init__.py +11 -0
  205. meutils/apis/luma/luma.py +123 -0
  206. meutils/apis/minicpm/__init__.py +9 -0
  207. meutils/apis/minicpm/luca.py +137 -0
  208. meutils/apis/monica/__init__.py +11 -0
  209. meutils/apis/monica/llm.py +11 -0
  210. meutils/apis/napkin/__init__.py +11 -0
  211. meutils/apis/napkin/icons.py +42 -0
  212. meutils/apis/niutrans.py +73 -0
  213. meutils/apis/oneapi/__init__.py +11 -0
  214. meutils/apis/oneapi/channel.py +68 -0
  215. meutils/apis/oneapi/common.py +135 -0
  216. meutils/apis/oneapi/log.py +47 -0
  217. meutils/apis/oneapi/token.py +48 -0
  218. meutils/apis/oneapi/token_.py +112 -0
  219. meutils/apis/oneapi/user.py +100 -0
  220. meutils/apis/oneapi/utils.py +47 -0
  221. meutils/apis/pixverse/__init__.py +11 -0
  222. meutils/apis/pixverse/pixverse.py +150 -0
  223. meutils/apis/proxy/__init__.py +11 -0
  224. meutils/apis/proxy/ips.py +178 -0
  225. meutils/apis/remini/__init__.py +11 -0
  226. meutils/apis/remini/remini.py +89 -0
  227. meutils/apis/replicateai/__init__.py +11 -0
  228. meutils/apis/replicateai/images.py +79 -0
  229. meutils/apis/replicateai/raw.py +53 -0
  230. meutils/apis/runwayml/__init__.py +10 -0
  231. meutils/apis/runwayml/gen.py +143 -0
  232. meutils/apis/search/__init__.py +11 -0
  233. meutils/apis/search/baichuan.py +11 -0
  234. meutils/apis/search/metaso.py +218 -0
  235. meutils/apis/search/metaso_.py +77 -0
  236. meutils/apis/search/n.py +99 -0
  237. meutils/apis/search/searxng.py +42 -0
  238. meutils/apis/search_music.py +39 -0
  239. meutils/apis/siliconflow/__init__.py +9 -0
  240. meutils/apis/siliconflow/audio.py +63 -0
  241. meutils/apis/siliconflow/image_to_image.py +116 -0
  242. meutils/apis/siliconflow/images.py +154 -0
  243. meutils/apis/siliconflow/rerankers.py +40 -0
  244. meutils/apis/siliconflow/text_to_image.py +132 -0
  245. meutils/apis/siliconflow/utils.py +66 -0
  246. meutils/apis/siliconflow/videos.py +102 -0
  247. meutils/apis/sunoai/__init__.py +10 -0
  248. meutils/apis/sunoai/haimian.py +135 -0
  249. meutils/apis/sunoai/suno.py +373 -0
  250. meutils/apis/textcard/__init__.py +11 -0
  251. meutils/apis/textcard/demo.py +25 -0
  252. meutils/apis/textcard/hanyuxinjie.py +81 -0
  253. meutils/apis/textin.py +159 -0
  254. meutils/apis/to_image/__init__.py +11 -0
  255. meutils/apis/to_image/html2image.py +29 -0
  256. meutils/apis/to_image/md.py +29 -0
  257. meutils/apis/to_image/url2image.py +41 -0
  258. meutils/apis/together/__init__.py +11 -0
  259. meutils/apis/together/images.py +80 -0
  260. meutils/apis/translator/__init__.py +9 -0
  261. meutils/apis/translator/deeplx.py +55 -0
  262. meutils/apis/tripo3d/__init__.py +11 -0
  263. meutils/apis/tripo3d/images.py +106 -0
  264. meutils/apis/ts.py +60 -0
  265. meutils/apis/uptime_kuma/__init__.py +11 -0
  266. meutils/apis/uptime_kuma/common.py +56 -0
  267. meutils/apis/uptime_kuma//345/233/275/344/272/247/345/210/206/347/273/204.py +68 -0
  268. meutils/apis/utils.py +47 -0
  269. meutils/apis/videos/__init__.py +11 -0
  270. meutils/apis/videos/sora.py +16 -0
  271. meutils/apis/vidu/__init__.py +9 -0
  272. meutils/apis/vidu/vidu_video.py +254 -0
  273. meutils/apis/vidu/x.py +14 -0
  274. meutils/apis/voice_clone/__init__.py +10 -0
  275. meutils/apis/voice_clone/fish.py +236 -0
  276. meutils/apis/voice_clone/fish_api.py +16 -0
  277. meutils/apis/web_search.py +31 -0
  278. meutils/apis/yezi.py +97 -0
  279. meutils/async_task/__init__.py +13 -0
  280. meutils/async_task/celery_config.py +106 -0
  281. meutils/async_task/common.py +37 -0
  282. meutils/async_task/demo_create_tasks.py +73 -0
  283. meutils/async_task/tasks/__init__.py +11 -0
  284. meutils/async_task/tasks/_all.py +20 -0
  285. meutils/async_task/tasks/hailuo.py +24 -0
  286. meutils/async_task/tasks/kling.py +30 -0
  287. meutils/async_task/tasks/replicateai.py +24 -0
  288. meutils/async_task/tasks/test.py +124 -0
  289. meutils/async_task/tasks/vidu.py +28 -0
  290. meutils/async_task/utils.py +191 -0
  291. meutils/async_task//351/200/232/347/224/250/350/256/276/350/256/241.py +119 -0
  292. meutils/async_utils/asyncer_.py +37 -0
  293. meutils/async_utils/background.py +68 -0
  294. meutils/async_utils/common.py +136 -16
  295. meutils/async_utils/test.py +47 -0
  296. meutils/cache_utils.py +29 -23
  297. meutils/caches/__init__.py +9 -0
  298. meutils/caches/acache.py +45 -0
  299. meutils/caches/redis_cache.py +63 -0
  300. meutils/clis/check_api.py +66 -0
  301. meutils/clis/cli.py +1 -1
  302. meutils/common.py +56 -17
  303. meutils/config_utils/__init__.py +11 -0
  304. meutils/config_utils/lark_utils/__init__.py +11 -0
  305. meutils/config_utils/lark_utils/common.py +385 -0
  306. meutils/config_utils/lark_utils/demo.py +13 -0
  307. meutils/config_utils/lark_utils/x.py +50 -0
  308. meutils/config_utils/manager.py +108 -0
  309. meutils/crawlers/__init__.py +11 -0
  310. meutils/data/VERSION +1 -1
  311. meutils/data/cowboy-hat-face.webp +0 -0
  312. meutils/data/oneapi/FOOTER.md +7 -0
  313. meutils/data/oneapi/NOTICE.md +138 -0
  314. meutils/data/oneapi/__init__.py +15 -0
  315. meutils/db/orm.py +179 -0
  316. meutils/db/redis_db.py +87 -0
  317. meutils/decorators/cache.py +1 -1
  318. meutils/decorators/common.py +84 -5
  319. meutils/decorators/contextmanagers.py +17 -6
  320. meutils/decorators/fastapi_decorator.py +77 -3
  321. meutils/decorators/polling.py +46 -0
  322. meutils/decorators/retry.py +150 -26
  323. meutils/fastapi_utils/__init__.py +11 -0
  324. meutils/fastapi_utils/exceptions/http_error.py +72 -0
  325. meutils/fastapi_utils/exceptions/validation_error.py +44 -0
  326. meutils/hash_utils.py +9 -4
  327. meutils/hooks/__init__.py +11 -0
  328. meutils/hooks/hook_test.py +174 -0
  329. meutils/hooks/wechat.py +162 -0
  330. meutils/hooks/wechat_channel.py +303 -0
  331. meutils/init/evn.py +1 -1
  332. meutils/io/files_utils.py +232 -0
  333. meutils/io/image.py +148 -10
  334. meutils/io/x.py +75 -0
  335. meutils/llm/__init__.py +10 -0
  336. meutils/llm/check_api.py +109 -0
  337. meutils/llm/check_utils.py +106 -0
  338. meutils/llm/clients.py +38 -0
  339. meutils/llm/completions/__init__.py +11 -0
  340. meutils/llm/completions/agents/__init__.py +11 -0
  341. meutils/llm/completions/agents/file.py +125 -0
  342. meutils/llm/completions/cp.py +112 -0
  343. meutils/llm/completions/delilegal.py +135 -0
  344. meutils/llm/completions/dify.py +81 -0
  345. meutils/llm/completions/kimi.py +47 -0
  346. meutils/llm/completions/modelscope.py +11 -0
  347. meutils/{fileparser/filetype.py → llm/completions/oi.py} +5 -3
  348. meutils/llm/completions/rag/__init__.py +11 -0
  349. meutils/llm/completions/rag/fire.py +157 -0
  350. meutils/llm/completions/rag/qwen.py +11 -0
  351. meutils/llm/completions/rag/rag.py +41 -0
  352. meutils/llm/completions/rag.py +38 -0
  353. meutils/llm/completions/tryblend.py +201 -0
  354. meutils/llm/completions/tune.py +284 -0
  355. meutils/llm/completions/x.py +26 -0
  356. meutils/llm/completions/xx.py +61 -0
  357. meutils/llm/completions/yuanbao.py +176 -0
  358. meutils/llm/demo.py +114 -0
  359. meutils/llm/functions/__init__.py +11 -0
  360. meutils/llm/mappers.py +15 -0
  361. meutils/llm/openai_utils/__init__.py +11 -0
  362. meutils/llm/openai_utils/common.py +284 -0
  363. meutils/llm/openai_utils/tool_outputs.py +45 -0
  364. meutils/llm/output_parsers/__init__.py +80 -0
  365. meutils/llm/prompts/__init__.py +244 -0
  366. meutils/llm/prompts/demo.py +155 -0
  367. meutils/llm/prompts/html2image_test.py +19 -0
  368. meutils/llm/utils.py +133 -0
  369. meutils/llm/x.py +75 -0
  370. meutils/notice/feishu.py +40 -9
  371. meutils/notice/wechat.py +23 -21
  372. meutils/np_utils.py +10 -1
  373. meutils/office_automation/pdf.py +6 -1
  374. meutils/oss/__init__.py +20 -0
  375. meutils/oss/minio_oss.py +184 -0
  376. meutils/oss/minio_utils.py +48 -0
  377. meutils/other/__demo.py +6 -4
  378. meutils/pandas_utils/__init__.py +1 -0
  379. meutils/pandas_utils/common.py +31 -0
  380. meutils/pandas_utils/pd_utils.py +10 -6
  381. meutils/parsers/__init__.py +10 -0
  382. meutils/parsers/file_parsers.py +110 -0
  383. meutils/parsers/fileparser/demo.py +41 -0
  384. meutils/parsers/fileparser/filetype.py +41 -0
  385. meutils/pay.py +37 -0
  386. meutils/pipe.py +37 -4
  387. meutils/playwright_utils/common.py +20 -12
  388. meutils/plots/common.py +35 -34
  389. meutils/queues/demo.py +56 -0
  390. meutils/queues/smooth_queue.py +120 -0
  391. meutils/queues/uniform_queue.py +3 -1
  392. meutils/request_utils/__init__.py +26 -2
  393. meutils/request_utils/ark.py +47 -0
  394. meutils/request_utils/crawler.py +34 -5
  395. meutils/request_utils/jwt_utils/__init__.py +11 -0
  396. meutils/request_utils/jwt_utils/common.py +42 -0
  397. meutils/request_utils/volc.py +160 -0
  398. meutils/schemas/__init__.py +0 -1
  399. meutils/schemas/baidu_types.py +70 -0
  400. meutils/schemas/batch_types.py +450 -0
  401. meutils/schemas/celery_types.py +64 -0
  402. meutils/schemas/chatfire_types.py +15 -0
  403. meutils/schemas/chatglm_types.py +197 -0
  404. meutils/schemas/db/__init__.py +11 -0
  405. meutils/schemas/db/oneapi_types.py +117 -0
  406. meutils/schemas/dify_types.py +40 -0
  407. meutils/schemas/embedding.py +31 -0
  408. meutils/schemas/fal_types.py +13 -0
  409. meutils/schemas/fish_types.py +11 -0
  410. meutils/schemas/hailuo_types.py +208 -0
  411. meutils/schemas/haimian_types.py +51 -0
  412. meutils/schemas/idphoto_types.py +43 -0
  413. meutils/schemas/image_types.py +476 -0
  414. meutils/schemas/jimeng_types.py +28 -0
  415. meutils/schemas/jina_types.py +67 -0
  416. meutils/schemas/kimi_types.py +86 -0
  417. meutils/schemas/kling_types.py +235 -0
  418. meutils/schemas/kuaishou_types.py +328 -0
  419. meutils/schemas/luma_types.py +59 -0
  420. meutils/schemas/message_types.py +165 -0
  421. meutils/schemas/message_types_.py +219 -0
  422. meutils/schemas/metaso_types.py +64 -0
  423. meutils/schemas/napkin_types.py +85 -0
  424. meutils/schemas/ocr_types.py +37 -0
  425. meutils/schemas/oneapi/__init__.py +11 -0
  426. meutils/schemas/oneapi/_types.py +49 -0
  427. meutils/schemas/oneapi/common.py +883 -0
  428. meutils/schemas/oneapi/icons.py +30 -0
  429. meutils/schemas/oneapi/model_group_info.py +48 -0
  430. meutils/schemas/oneapi/model_info.py +34 -0
  431. meutils/schemas/oneapi/models.py +26 -0
  432. meutils/schemas/oneapi/x.py +26 -0
  433. meutils/schemas/oneapi//351/207/215/345/256/232/345/220/221.py +132 -0
  434. meutils/schemas/openai_api_protocol.py +411 -0
  435. meutils/schemas/openai_types.py +366 -0
  436. meutils/schemas/pixverse_types.py +88 -0
  437. meutils/schemas/playwright_types.py +57 -0
  438. meutils/schemas/prodia_types.py +19 -0
  439. meutils/schemas/replicate_types.py +112 -0
  440. meutils/schemas/request_types.py +20 -0
  441. meutils/schemas/runwayml_types.py +190 -0
  442. meutils/schemas/siliconflow_types.py +80 -0
  443. meutils/schemas/step_types.py +19 -0
  444. meutils/schemas/suno_types.py +319 -0
  445. meutils/schemas/task_types.py +192 -0
  446. meutils/schemas/translator_types.py +29 -0
  447. meutils/schemas/tripo3d_types.py +57 -0
  448. meutils/schemas/tryblend_types.py +51 -0
  449. meutils/schemas/video_types.py +62 -0
  450. meutils/schemas/vidu_types.py +350 -0
  451. meutils/schemas/wechat_types.py +316 -0
  452. meutils/schemas/yuanbao_types.py +260 -0
  453. meutils/serving/celery/__init__.py +8 -0
  454. meutils/serving/celery/config.py +115 -0
  455. meutils/serving/celery/router.py +4 -6
  456. meutils/serving/celery/tasks.py +6 -4
  457. meutils/serving/celery//351/200/232/347/224/250/350/256/276/350/256/241.py +119 -0
  458. meutils/serving/fastapi/common.py +27 -31
  459. meutils/serving/fastapi/dependencies/__init__.py +0 -1
  460. meutils/serving/fastapi/dependencies/auth.py +55 -2
  461. meutils/serving/fastapi/exceptions/http_error.py +67 -2
  462. meutils/serving/fastapi/exceptions/validation_error.py +18 -2
  463. meutils/serving/fastapi/lifespans.py +73 -0
  464. meutils/serving/fastapi/routers/scheduler.py +12 -0
  465. meutils/serving/fastapi/routers/screenshot.py +47 -0
  466. meutils/serving/fastapi/routers/spider.py +8 -3
  467. meutils/serving/fastapi/routers/task.py +48 -0
  468. meutils/serving/fastapi/utils.py +48 -1
  469. meutils/serving/streamlit/common.py +1 -1
  470. meutils/smooth_utils.py +3 -0
  471. meutils/str_utils/__init__.py +22 -3
  472. meutils/str_utils/json_utils.py +7 -0
  473. meutils/str_utils/regular_expression.py +102 -10
  474. meutils/templates/xx.html +21 -0
  475. meutils/templates/xxx.html +117 -0
  476. meutils/todo.py +12 -0
  477. meutils/tools/token_monitor.py +33 -0
  478. MeUtils-2024.3.4.13.4.45.dist-info/RECORD +0 -540
  479. meutils/ai_audio/asr/subtitle.srt +0 -40
  480. meutils/ai_audio/demo.ipynb +0 -1215
  481. meutils/ai_audio/example.srt +0 -348
  482. meutils/ai_audio/new.srt +0 -179
  483. meutils/ai_audio/subtitles.srt +0 -696
  484. meutils/ai_audio/tts/new.srt +0 -179
  485. meutils/ai_audio//350/247/206/351/242/221/345/220/210/345/271/266.sh +0 -32
  486. meutils/ai_cv/1.jpg +0 -0
  487. meutils/ai_cv/197.jpg +0 -0
  488. meutils/ai_cv/2.jpg +0 -0
  489. meutils/ai_cv/img.png +0 -0
  490. meutils/ai_cv/invoice.jpg +0 -0
  491. meutils/ai_cv/tbl.png +0 -0
  492. meutils/ai_cv/test.png +0 -0
  493. meutils/ann/README.md +0 -33
  494. meutils/ann/README_gensim.md +0 -47
  495. meutils/ann/examples/client.py +0 -59
  496. meutils/ann/examples/demo.py +0 -24
  497. meutils/api/deeplx.py +0 -29
  498. meutils/api/qr.png +0 -0
  499. meutils/clis/README.md +0 -29
  500. meutils/clis/__test.sh +0 -17
  501. meutils/clis/deepseek.txt +0 -8
  502. meutils/clis/deepseek_13003330042.json +0 -1
  503. meutils/clis/deepseek_13003872192.json +0 -1
  504. meutils/clis/deepseek_13852263862.json +0 -1
  505. meutils/clis/deepseek_13913898681.json +0 -1
  506. meutils/clis/deepseek_13962978617.json +0 -1
  507. meutils/clis/deepseek_15251801790.json +0 -1
  508. meutils/clis/deepseek_15720826383.json +0 -1
  509. meutils/clis/deepseek_18395563611.json +0 -1
  510. meutils/clis/deepseek_313303303@qq.com.json +0 -1
  511. meutils/clis/kimi_state.json +0 -1
  512. meutils/cmds/README.md +0 -55
  513. meutils/coding/__init__.py +0 -11
  514. meutils/coding/find132.py +0 -40
  515. meutils/db/README.md +0 -51
  516. meutils/decorators/README.md +0 -17
  517. meutils/docarray_utils/demo_es.py +0 -34
  518. meutils/docarray_utils/demo_hnsw.py +0 -55
  519. meutils/docarray_utils/in_memory.py +0 -38
  520. meutils/docarray_utils//346/224/271/351/200/240/344/270/213hnsw.py +0 -43
  521. meutils/io/file.py +0 -20
  522. meutils/io/img.png +0 -0
  523. meutils/io/x.yml +0 -1
  524. meutils/notice/img.png +0 -0
  525. meutils/notice/todo.md +0 -10
  526. meutils/office_automation//346/212/225/350/265/204/347/256/241/347/220/206/347/263/273/347/273/237O3.2_/344/272/244/346/230/223/347/273/204.pdm +0 -22469
  527. meutils/playwright_utils/__test.sh +0 -2
  528. meutils/playwright_utils/kimi1_cookies.json +0 -1
  529. meutils/playwright_utils/kimi2_cookies.json +0 -1
  530. meutils/playwright_utils/kimi_cookies.json +0 -93
  531. meutils/serving/README.md +0 -1
  532. meutils/serving/celery/_run.sh +0 -10
  533. meutils/serving/gui/run.sh +0 -9
  534. meutils/serving/jina/__demo/client.py +0 -42
  535. meutils/serving/jina/__demo/flow.svg +0 -1
  536. meutils/serving/jina/__demo/s.py +0 -34
  537. meutils/serving/jina/__demo/s2.py +0 -37
  538. meutils/serving/jina/__demo/server.py +0 -83
  539. meutils/serving/jina/__demo/test.py +0 -40
  540. meutils/serving/jina/executors/SentenceEncoder.py +0 -62
  541. meutils/serving/jina/executors/SentenceEncoder_.py +0 -63
  542. meutils/serving/jina/executors/__init__.py +0 -46
  543. meutils/serving/jina/executors/base.py +0 -40
  544. meutils/serving/jina/nlp_serving/__init__.py +0 -11
  545. meutils/serving/jina/nlp_serving/word_segmentation.py +0 -40
  546. meutils/serving/streamlit/conf.yaml +0 -5
  547. meutils/serving/streamlit/ocr.png +0 -0
  548. meutils/serving/streamlit/run.sh +0 -17
  549. meutils/serving/webui/.streamlit/_config.toml +0 -186
  550. meutils/serving/webui/.streamlit/config.toml +0 -26
  551. meutils/serving/webui/pages/_1_/345/210/206/350/257/215.py +0 -56
  552. meutils/serving/webui/pages/_2_/350/257/215/346/200/247/346/240/207/346/263/250/344/270/216/345/256/236/344/275/223/350/257/206/345/210/253.py +0 -54
  553. meutils/serving/webui/pages/_3_/346/226/207/346/234/254/345/214/271/351/205/215.py +0 -64
  554. meutils/serving/webui/run.sh +0 -9
  555. meutils/spark/__init__.py +0 -26
  556. meutils/tools/monitor.yml +0 -29
  557. {MeUtils-2024.3.4.13.4.45.dist-info → MeUtils-2025.1.16.17.15.52.dist-info}/LICENSE +0 -0
  558. {MeUtils-2024.3.4.13.4.45.dist-info → MeUtils-2025.1.16.17.15.52.dist-info}/top_level.txt +0 -0
  559. {meutils → examples}/comp_utils/__init__.py +0 -0
  560. {meutils → examples}/comp_utils/reverse_metric.py +0 -0
  561. /meutils/{fileparser/README.md → fastapi_utils/exceptions/__init__.py} +0 -0
  562. /meutils/{fileparser → parsers/fileparser}/PDF/346/212/275/345/217/226.py" +0 -0
  563. /meutils/{fileparser → parsers/fileparser}/__init__.py +0 -0
  564. /meutils/{fileparser → parsers/fileparser}/common.py +0 -0
  565. /meutils/{fileparser → parsers/fileparser}/filetype/__init__.py +0 -0
  566. /meutils/{fileparser → parsers/fileparser}/filetype/__main__.py +0 -0
  567. /meutils/{fileparser → parsers/fileparser}/filetype/filetype.py +0 -0
  568. /meutils/{fileparser → parsers/fileparser}/filetype/helpers.py +0 -0
  569. /meutils/{fileparser → parsers/fileparser}/filetype/match.py +0 -0
  570. /meutils/{fileparser → parsers/fileparser}/filetype/types/__init__.py +0 -0
  571. /meutils/{fileparser → parsers/fileparser}/filetype/types/application.py +0 -0
  572. /meutils/{fileparser → parsers/fileparser}/filetype/types/archive.py +0 -0
  573. /meutils/{fileparser → parsers/fileparser}/filetype/types/audio.py +0 -0
  574. /meutils/{fileparser → parsers/fileparser}/filetype/types/base.py +0 -0
  575. /meutils/{fileparser → parsers/fileparser}/filetype/types/document.py +0 -0
  576. /meutils/{fileparser → parsers/fileparser}/filetype/types/font.py +0 -0
  577. /meutils/{fileparser → parsers/fileparser}/filetype/types/image.py +0 -0
  578. /meutils/{fileparser → parsers/fileparser}/filetype/types/isobmff.py +0 -0
  579. /meutils/{fileparser → parsers/fileparser}/filetype/types/video.py +0 -0
  580. /meutils/{fileparser → parsers/fileparser}/filetype/utils.py +0 -0
  581. /meutils/{fileparser → parsers/fileparser}/pdf.py +0 -0
  582. /meutils/{fileparser → parsers/fileparser}//350/241/250/346/240/274/346/212/275/345/217/226.py" +0 -0
@@ -0,0 +1,193 @@
1
+ #!/usr/bin/env python
2
+ # -*- coding: utf-8 -*-
3
+ # @Project : AI. @by PyCharm
4
+ # @File : images
5
+ # @Time : 2024/8/23 10:26
6
+ # @Author : betterme
7
+ # @WeChat : meutils
8
+ # @Software : PyCharm
9
+ # @Description :
10
+ from meutils.config_utils.lark_utils import get_next_token_for_polling
11
+ from meutils.decorators.retry import retrying
12
+ from meutils.oss.minio_oss import Minio
13
+ from meutils.pipe import *
14
+
15
+ from meutils.schemas.openai_types import ImageRequest, ImagesResponse
16
+ from meutils.schemas.image_types import ASPECT_RATIOS
17
+
18
+ FEISHU_URL = "https://xchatllm.feishu.cn/sheets/GYCHsvI4qhnDPNtI4VPcdw2knEd?sheet=IN01qU"
19
+
20
+ from urllib.parse import urlencode
21
+
22
+ STYLES = {'AUTO', 'DEFAULT', 'PHOTO', 'ANIME', 'ILLUSTRATION', 'RENDER_3D'}
23
+
24
+
25
+ # @alru_cache(ttl=600)
26
+ # @retrying()
27
+ async def get_access_token(refresh_token: Optional[str] = None):
28
+ refresh_token = refresh_token or await get_next_token_for_polling(FEISHU_URL)
29
+
30
+ refresh_token, cookie = refresh_token.strip().split('\n', maxsplit=1)
31
+
32
+ payload = {
33
+ "grant_type": "refresh_token",
34
+ "refresh_token": refresh_token,
35
+ }
36
+
37
+ data = urlencode(payload)
38
+
39
+ headers = {
40
+ 'accept': '*/*',
41
+ 'accept-language': 'zh-CN,zh;q=0.9',
42
+ 'content-type': 'application/x-www-form-urlencoded',
43
+ 'origin': 'https://ideogram.ai',
44
+ 'priority': 'u=1, i',
45
+ 'referer': 'https://ideogram.ai/',
46
+ 'sec-ch-ua': '"Not)A;Brand";v="99", "Google Chrome";v="127", "Chromium";v="127"',
47
+ 'sec-ch-ua-mobile': '?0',
48
+ 'sec-ch-ua-platform': '"macOS"',
49
+ 'sec-fetch-dest': 'empty',
50
+ 'sec-fetch-mode': 'cors',
51
+ 'sec-fetch-site': 'cross-site',
52
+ 'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36',
53
+ # 'x-client-data': 'CI22yQEIo7bJAQipncoBCNqFywEIlKHLAQiGoM0BCJ2szgEYj87NAQ==',
54
+ 'x-client-version': 'Chrome/JsCore/10.12.3/FirebaseCore-web'
55
+ }
56
+
57
+ base_url = "https://ideogram.chatfire.cc"
58
+ base_url = "https://securetoken.googleapis.com"
59
+ params = {"key": "AIzaSyBwq4bRiOapXYaKE-0Y46vLAw1-fzALq7Y"}
60
+ async with httpx.AsyncClient(base_url=base_url, headers=headers, timeout=30) as client:
61
+ response = await client.post('/v1/token', content=data, params=params)
62
+ # logger.debug(response.status_code)
63
+ # logger.debug(response.text)
64
+ data = response.json()
65
+
66
+ user_id = data['user_id']
67
+ access_token = data['access_token']
68
+
69
+ return user_id, access_token, cookie
70
+
71
+
72
+ @retrying(max_retries=8, max=5, predicate=lambda x: x is True)
73
+ async def create(request: ImageRequest, refresh_token: Optional[str] = None):
74
+ user_id, access_token, cookie = await get_access_token(refresh_token)
75
+
76
+ width, height = ASPECT_RATIOS.get(request.size, request.size).split('x') | xmap(int)
77
+
78
+ payload = {
79
+ "sampling_speed": 2, # 2 是快速 0 是中速 -2 高质量
80
+
81
+ "prompt": request.prompt,
82
+ "user_id": "",
83
+ # "model_version": "V_1_5",
84
+ # "model_version": "V_0_3",
85
+ "model_version": request.model,
86
+
87
+ "use_autoprompt_option": "AUTO",
88
+ "style_expert": request.style if request.style in STYLES else "AUTO",
89
+
90
+ "resolution": {
91
+ "width": width,
92
+ "height": height
93
+ },
94
+ # "resolution": {
95
+ # "width": 1152,
96
+ # "height": 864
97
+ # },
98
+ # "resolution": {
99
+ # "width": 1280,
100
+ # "height": 960
101
+ # },
102
+
103
+ # "resolution": {
104
+ # "width": 1024,
105
+ # "height": 512
106
+ # }
107
+ }
108
+
109
+ headers = {
110
+ "Authorization": f"Bearer {access_token}",
111
+ "user_id": user_id,
112
+
113
+ "Cookie": cookie,
114
+
115
+ "Host": "ideogram.ai",
116
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:125.0) Gecko/20100101 Firefox/125.0",
117
+ "Accept": "*/*",
118
+ "Accept-Language": "en-US,en;q=0.5",
119
+ "Accept-Encoding": "gzip, deflate, br",
120
+ "Referer": "https://ideogram.ai/u/test1014/generated",
121
+ "Content-Type": "application/json",
122
+ "Alt-Used": "ideogram.ai",
123
+ "Connection": "keep-alive",
124
+ "Sec-Fetch-Dest": "empty",
125
+ "Sec-Fetch-Mode": "cors",
126
+ "Sec-Fetch-Site": "same-origin",
127
+ "TE": "trailers"
128
+ }
129
+
130
+ base_url = "https://ideogram.ai"
131
+ async with httpx.AsyncClient(base_url=base_url, headers=headers, timeout=30) as client:
132
+ response = await client.post('/api/images/sample', json=payload)
133
+ logger.debug(response.status_code)
134
+ # logger.debug(response.text)
135
+ if response.status_code in {401, 403}:
136
+ return True
137
+
138
+ if response.is_success:
139
+ data = response.json()
140
+ payload = {
141
+ "request_ids": [data['request_id']]
142
+ }
143
+
144
+ for i in range(10):
145
+ await asyncio.sleep(5)
146
+ logger.debug(f'获取结果 「{i}」')
147
+ response = await client.post("/api/gallery/retrieve-requests", json=payload)
148
+
149
+ logger.debug(response.status_code)
150
+ # logger.debug(response.text)
151
+
152
+ if response.is_success:
153
+ data = response.json()
154
+ if data['sampling_requests'][0]['is_completed']:
155
+ image_responses = data['sampling_requests'][0]['responses']
156
+ tasks = []
157
+ for image_resp in image_responses:
158
+ url = f"https://ideogram.ai/api/images/direct/{image_resp['response_id']}"
159
+
160
+ image_resp['raw_url'] = url
161
+
162
+ task = await Minio().put_object_for_openai(
163
+ file=url,
164
+ filename=f"{shortuuid.random()}.jpeg",
165
+
166
+ headers=headers, follow_redirects=True
167
+ )
168
+
169
+ tasks.append(task)
170
+ await asyncio.sleep(1)
171
+
172
+ # file_objects = await asyncio.gather(*tasks)
173
+
174
+ file_objects = tasks
175
+ for file_object, image_resp in zip(file_objects, image_responses):
176
+ image_resp['url'] = file_object.filename
177
+
178
+ return ImagesResponse.construct(data=image_responses)
179
+
180
+
181
+ if __name__ == '__main__':
182
+ # arun(get_access_token(refresh_token)) # 88uwVq1nbyctFsgAOWytFefTAW02
183
+ with timer():
184
+ arun(
185
+ create(
186
+ ImageRequest(
187
+ model='V_0_3',
188
+
189
+ prompt='一位性感的中国美女',
190
+
191
+ style=''
192
+ ))
193
+ )
@@ -0,0 +1,12 @@
1
+ #!/usr/bin/env python
2
+ # -*- coding: utf-8 -*-
3
+ # @Project : AI. @by PyCharm
4
+ # @File : __init__.py
5
+ # @Time : 2024/8/14 14:17
6
+ # @Author : betterme
7
+ # @WeChat : meutils
8
+ # @Software : PyCharm
9
+ # @Description :
10
+
11
+
12
+
@@ -0,0 +1,76 @@
1
+ #!/usr/bin/env python
2
+ # -*- coding: utf-8 -*-
3
+ # @Project : AI. @by PyCharm
4
+ # @File : faceswap
5
+ # @Time : 2024/8/14 14:22
6
+ # @Author : betterme
7
+ # @WeChat : meutils
8
+ # @Software : PyCharm
9
+ # @Description :
10
+
11
+ from meutils.pipe import *
12
+ from meutils.decorators.retry import retrying
13
+
14
+ from meutils.schemas.task_types import TaskType, Task
15
+ from meutils.schemas.prodia_types import BASE_URL, FEISHU_URL, FaceswapRequest
16
+
17
+ from meutils.config_utils.lark_utils import get_next_token_for_polling
18
+ from meutils.notice.feishu import send_message as _send_message
19
+
20
+ send_message = partial(
21
+ _send_message,
22
+ title=__name__,
23
+ url="https://open.feishu.cn/open-apis/bot/v2/hook/dc1eda96-348e-4cb5-9c7c-2d87d584ca18"
24
+ )
25
+
26
+
27
+ @retrying(max_retries=8, max=8, predicate=lambda r: r is True) # 触发重试
28
+ async def create_task(request: FaceswapRequest, token: Optional[str] = None):
29
+ token = token or await get_next_token_for_polling(FEISHU_URL)
30
+
31
+ payload = request.model_dump()
32
+
33
+ headers = {
34
+ "X-Prodia-Key": token
35
+ }
36
+ async with httpx.AsyncClient(base_url=BASE_URL, headers=headers, timeout=60) as client:
37
+ response = await client.post("/faceswap", json=payload)
38
+ logger.debug(response.text)
39
+
40
+ if response.status_code in {429}: # 触发重试
41
+ return True
42
+
43
+ if response.is_success:
44
+ data = response.json()
45
+ task_id = f"{TaskType.faceswap}-{data['job']}"
46
+ return Task(id=task_id, data=data, system_fingerprint=token)
47
+ else:
48
+ logger.debug(token)
49
+ return Task(data=response.text, status=0, status_code=response.status_code)
50
+
51
+
52
+ async def get_task(task_id: str, token: str):
53
+ task_id = task_id.split(f"{TaskType.faceswap}-", 1)[-1]
54
+
55
+ headers = {
56
+ "X-Prodia-Key": token
57
+ }
58
+ async with httpx.AsyncClient(base_url=BASE_URL, headers=headers, timeout=100) as client:
59
+ response = await client.get(f"/job/{task_id}")
60
+
61
+ logger.debug(response.text)
62
+ logger.debug(response.status_code)
63
+
64
+ if response.is_success:
65
+ data = response.json()
66
+ return data
67
+
68
+
69
+ if __name__ == '__main__':
70
+ request = FaceswapRequest(
71
+ sourceUrl='https://oss.ffire.cc/files/source.jpg',
72
+ targetUrl='https://oss.ffire.cc/files/target.jpg'
73
+ )
74
+ arun(create_task(request))
75
+
76
+ arun(get_task('e40e290f-71b6-4755-a4e8-d5201462d9d4', 'fbb99c65-3ac9-4077-8a3c-67387442f48b'))
@@ -0,0 +1,152 @@
1
+ #!/usr/bin/env python
2
+ # -*- coding: utf-8 -*-
3
+ # @Project : AI. @by PyCharm
4
+ # @File : ecraft
5
+ # @Time : 2024/10/31 16:30
6
+ # @Author : betterme
7
+ # @WeChat : meutils
8
+ # @Software : PyCharm
9
+ # @Description :
10
+
11
+ from meutils.pipe import *
12
+ from meutils.caches.redis_cache import cache
13
+ from meutils.io.files_utils import to_url, to_url_fal
14
+ from meutils.schemas.image_types import ImageRequest, ImagesResponse, RecraftImageRequest
15
+ from meutils.notice.feishu import IMAGES, send_message as _send_message
16
+ from meutils.config_utils.lark_utils import get_next_token_for_polling, aget_spreadsheet_values
17
+ from meutils.decorators.retry import retrying
18
+
19
+ BASE_URL = "https://api.recraft.ai"
20
+
21
+ FEISHU_URL = "https://xchatllm.feishu.cn/sheets/GYCHsvI4qhnDPNtI4VPcdw2knEd?sheet=Lrhtf2"
22
+
23
+ DEFAULT_MODEL = "recraftv3"
24
+ MODELS = {}
25
+
26
+ send_message = partial(
27
+ _send_message,
28
+ title=__name__,
29
+ url=IMAGES
30
+ )
31
+
32
+
33
+ @cache(ttl=10 * 60)
34
+ @retrying()
35
+ async def get_access_token(token: Optional[str] = None):
36
+ token = token or await get_next_token_for_polling(feishu_url=FEISHU_URL, check_token=check_token)
37
+ headers = {"cookie": token}
38
+
39
+ async with httpx.AsyncClient(base_url="https://www.recraft.ai", headers=headers, timeout=60) as client:
40
+ response = await client.get("/api/auth/session")
41
+ response.raise_for_status()
42
+ logger.debug(response.json())
43
+ return response.json()["accessToken"]
44
+
45
+
46
+ # @retrying()
47
+ async def generate(request: RecraftImageRequest, token: Optional[str] = None):
48
+ token = await get_access_token(token)
49
+ headers = {"Authorization": f"Bearer {token}"}
50
+ # params = {"project_id": "26016b99-3ad0-413b-821b-5f884bd9454e"} # project_id 是否是必要的
51
+ params = {} # project_id 是否是必要的
52
+ # params = {"project_id": "47ba6825-0fde-4cea-a17e-ed7398c0a298"}
53
+ payload = request.model_dump(exclude_none=True)
54
+ logger.debug(payload)
55
+
56
+ async with httpx.AsyncClient(base_url=BASE_URL, headers=headers, timeout=60) as client:
57
+ response = await client.post(f"/queue_recraft/prompt_to_image", params=params, json=payload)
58
+ response.raise_for_status()
59
+ params = {
60
+ "operation_id": response.json()["operationId"]
61
+ }
62
+ logger.debug(params)
63
+
64
+ response = await client.get("/poll_recraft", params=params)
65
+ response.raise_for_status()
66
+ metadata = response.json()
67
+ logger.debug(metadata)
68
+
69
+ # {'credits': 1,
70
+ # 'height': 1024,
71
+ # 'images': [{'image_id': 'f9d8e7dd-c31f-4208-abe4-f44cdff050c2',
72
+ # 'image_invariants': {'preset': 'any'},
73
+ # 'transparent': False,
74
+ # 'vector_image': False}],
75
+ # 'random_seed': 1423697946,
76
+ # 'request_id': '77bd917d-0960-4921-916f-038c773a41fd',
77
+ # 'transform_model': 'recraftv3',
78
+ # 'width': 1024}
79
+
80
+ params = {"raster_image_content_type": "image/webp"} #####
81
+ params = {"raster_image_content_type": "image/png"}
82
+
83
+ images = []
84
+ for image in response.json()["images"]:
85
+ response = await client.get(f"""/image/{image["image_id"]}""", params=params)
86
+ # url = await to_url(response.content)
87
+ url = await to_url_fal(response.content, content_type="image/png")
88
+ images.append(url)
89
+
90
+ return ImagesResponse(image=images, metadata=metadata)
91
+
92
+
93
+ async def check_token(token, threshold: float = 1):
94
+ if not isinstance(token, str):
95
+ tokens = token
96
+ r = []
97
+ for batch in tqdm(tokens | xgroup(32)):
98
+ bools = await asyncio.gather(*map(check_token, batch))
99
+ r += list(itertools.compress(batch, bools))
100
+ return r
101
+ try:
102
+ access_token = await get_access_token(token)
103
+ headers = {"Authorization": f"Bearer {access_token}"}
104
+
105
+ async with httpx.AsyncClient(base_url=BASE_URL, headers=headers, timeout=60) as client:
106
+ response = await client.get("/users/me")
107
+ response.raise_for_status()
108
+ data = response.json()
109
+ logger.debug(data["credits"])
110
+ return data["credits"] >= threshold
111
+ except Exception as e:
112
+ logger.error(e)
113
+ logger.debug(token)
114
+ return False
115
+
116
+
117
+ if __name__ == '__main__':
118
+ token = None
119
+ # token = "__Host-next-auth.csrf-token=6694c35f61afab7aadfeae158e6074458605550b9cd2e4ef2e63ab4ccaf951ac%7Cac9bf15973e5b6a168150a16a386b821f09559fdaa29a0bf1134b0fa4e327664; _gcl_au=1.1.1248447681.1736148414; AMP_MKTG_7268c9db0f=JTdCJTdE; _fbp=fb.1.1736148414688.910490316103599764; _ga=GA1.1.1798926416.1736148415; _pin_unauth=dWlkPVptRTNOekEzWWpFdE56SmpZUzAwWVdFMkxUZzJORGN0TkdFNU0yTTBaR0U0TlRCaA; x-recraft-referral-code=3h7wfOgFGn; _clck=11vqeuv%7C2%7Cfsc%7C0%7C1832; __Secure-next-auth.callback-url=https%3A%2F%2Fwww.recraft.ai%2Fprojects; _tt_enable_cookie=1; _ttp=TcbY_nwRLBZ2qsM-uRmC3WgcqHh.tt.1; _clsk=yoduqn%7C1736148450927%7C2%7C1%7Cu.clarity.ms%2Fcollect; __Secure-next-auth.session-token.0=eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIn0..PdFk7mpcQ-BCcDE0.S4M-rsTMqzIPxiQYjH8HNgYixGpB4Ff_AgLnEEw9ro9h-L_gWycqYrVRvsFP2h_OtZI3afoq_MVXX2M28sY4sgBWVlVatS_q0CApRi0pj738g0hoGBEKMcTJ-kXGKwvHYfM8CC6ugtM5XCfCxFPC3ZwebCf_mjBWmGm_kHBOvc20Zyv2Dy82dg4yCriVdklf8pUSC2-W-XV4KSRVuYplHglrD0c5QpweQSyOUpVeQHJYwaZnUabTSk8NJ6szdq46JxveDgqkeCVpHKW-8KFtXnOJsdG4FHKWdaVs833emAGzFzh7ua9eoD58gJ2dAwVd9RtcTOHoeCIUF6WT0QsGOUZQ4lAakjkRuTqxOSY8jILMyp4L6EVvis-KXp8LL6oxR8kIiEEsjj28KKju8B6YgGQF6fKtHL7yHrf33I4JTGRDSWia_6ltlHBp5s9UggqI5YE6FA5-3SEk74tT-GyJqsQnoFcs0PK2iixTy18-sDmijvdfVZHrcP-J-r0hrV9yk9wPA8hd9k6A9XTPnH_pi9h0YntAGWzd_SVxEpZUNaKXdGrL9oO-9E05XG-GHehYnhO3_zn0oSSRduatnk4RRfDCBBZotz5gKasdsncvCEUX33ZP_cY6B4ju1ej0a6LzOTdmXhCZGbnSLAPu0dAgYj3qXAO_vjiL-kYpzV-J9sQTOecQJE-Rd6IU3mtRSKtV5SqRY-v91cyXhx8O4pQNy1wtNIYST3DFEu8iTxt_8-CKWMiCSVnOOWV0KSoipeK3IDrJt9n1qB8OWCfCQ6A3ZLftI469x7XUDa_wPfmiLj-0ZErhtAz0U50xpfrfjCaunwQ9LKDRjjf-8FdGlqC0HH8EBkAqb7e1a6zvpqWx95oJeic7H8M3HgbbeyF0JqO_W9Zf2AdyNZsYUE7T3N-JDApEESgEMPnBF_ayf2CKknoWiCFOzflpwzcxd_rGlhe3q_CrNW1-ZqKh1sG_t4lKf956fFrHz28c2mfBJjqx5tYcsYw-HQf6wyPFPnzK3FS16wMpVMNRDiAinf-i779tdC_pgPbJJlU73I1aNDpdLnRtowlkMviuVL6y-KcBeK7d3euRYGJdKqM4gjX5WxK1N71s07yDhiXKU35D-gGE1ruF8u6N2epD3jyfjdKsRmxKce4xl96OwZzF0je4lV_LUBl5oXON2TBbznp32o1okq3jUH-7Suzuiis6NERW2dO3wARdlfhNLJ3Ur6zOxhH86v12npd0ZkUbHgqTKn40_4XvmGIdzyMyddIh78k8OFMlLEFIhONFR2PFFhnjvnzfjQrtm4fCDjWZyiAZYB2HOsyHDI2uS66fXLSOglYA9Tco_UrSCQgM4Yom0m3Hq0JH6eC_hAckBNfJ89IFVECVt23njWc0Rj6wG8-OBKyw4nqgCke446n-7ZS_S9d2UA-fcVBoFG7kr9WTEQQYOOC_stkd7jlH2huUUxGCpi_Nye2KL0LGA-VlbCt7KUzKQ_G1Zrl4CiqGNImoGU9PsY9UtwWxUaPVag62iVicD-4_2Z0-lv6mQyS_TICV_CfxegxkBqGmTad14l71M_WjU9eIzSSs-dMguR2Gs3-0JX3SOfn7DQZGXfZps3_FvmvNTji-9YZpEycSWSUssb0XCd3ISqcqYo1TslVOk47Nz4xAOsrM5MKnrpCYAmiXVC7LZA_ezcnM_3zjIIzjRRi-5R4u5jQ-RAqnrjD6LUn0oCnqyKJPl75iMU2YrI4OlD3HrjPXKWKQFYx70gJH8LpugfNCwQuuIrE5teAO9PTVqO_tGt1WWbbfzD8_j3C9tMb2vqP_YL0Ho4YHBPudZ01L2vlyKOplRKeTw7yl4h61bbe2qdYREhYITxrTRmm8biayCWgmj-NQtoMP20N00LtuINpaRraQrRarB67wkCnO-gtP_OGbp7gXQPlm-eyskSX4OuqNJ6v0EKgD2-o6v0j9G2rFvE0rzzEUL5AQxj3KA6lc8RpFR2WCYHQ23CSTsLdrXdptm85Ij4QsD_nNmrMpu5z9BFhoeuGtuwgFqBIJNPJ6rGlRBMVnhWKzSw5-IYNlpFNMDR9kAZo3f_NbM0LzFSIcdeOq3VWVNiBhXOaDztnx7tIUWGiAEqtAKnEfo8W6T_D7-hO3h2sdQIccmj2-iWN7NKSDVzc3eHH4zi4PcAG-X_86MmOy06_xSiOpMWbs0sHxSe4TZGxPYuB2piAvj1TipZGGXnVuy3r31qMxZhG1LOuSPwyrGIKQL3jHr1vh_JRKdObkfEeg7jlrCObCOaLX6wTcEXdQ5g0pMYRPm0a393BqNQafK9MxyMBgmL59YTFW71awz3vyDj9pNswBzfSSK0mew6eS-u2fI4nMnV-1eYnrmKKY_vnqjnwoWDUc1VUoNHMLD3aDtn08hjziLdBuGfUICsygOcjtypYDp8ys-S3KedzBZyNRVyejQq_uEw1SlIFG4up83NjP3aiG2aPZz3JZNGK-RhmTMcuGNa7EpO28k57yZwNnBtXT0ajCPBcjTP2svs-Km0-vuJ0D33JwGpedykr6JAUksQXZ7zQabkKPcmkxnFRjsRF0n9JqH_Abf6eInl_jmTgDnSeMIvA4Tp6aGamu95TEWM_9DjV-fffo9Qd3VJ8Qde4CJSfIrGX5BtxMUAi8zUozrTwL4zTfO2W3NTVK708hLJ-i8N8dE65gAFxEDiqTPX06Y-kYwVp2DfHEsxYR8xojGeHk1rH56duzrmSF1qSgBH_x-LM_XDvKXOq6zsq5TH5q1XfPDepxDeFk2hodOiuHOY9vMe9CPc-arnvz3Dnx2KdiHaM3R3wWB_I7og_9IiRJGtHxwBRFZ6--WEhFi7EqN9n9CU9FfOhg0A5O5F8fxndSamw6pqTD_v_67ZOUue4eJRRnx_n9U-tFz_b1Yp6MAS72a5rmy0DUpz_B1ZWira9T21Nb7G3Q0Eb-rE5FOfaFAqz5ivdekRttlREfgNGfhJQyIM05J5cHessFs2aJTNSU9fXgPvxmrMzziDzvE-QYG3jlmbdrpzIUr3PUjiGbZu7KA0yv_8dZBVXNFUP-w54n3KQ3K7tcL9fBawyX2uTgFWXO955O10Qhp4HnNR9D55DhSe4rjtiLU5nhXC99Q1TeVHpn1skJH_KAgksMM--I_T5TqueiS_c7yjYZIETds1TO_347euTp0Gq2I4uDfMm6ZLOKE8XSN6tMt0cn04TsGn--mMWwCJCslrXomI0rg9vrteQWFsoW3vYgvpgEF9h8A-Uinz_qnzfrocnnQGVtFChOlJ7q4cC88b-JjZ7g9arATlEhlrLj67wbzYIfK_r_7sdvMLocicdunInOsYL_nJ7eM9pj3WZrAdQrFH2fhYIJa5H0MNBj-uybFJKq6nOSpYyfo4QpVtjiBpH4mFQlsYhg17s_xH8m8wPc8t_Q0V7pwCqKgMlj_ZvK45dNLqwU8MWF4P3xIcSoI2IuGl7kKLmTXsUcQz_EZuoz16aRFXTMPQJOYizH2IsuWixdb2q6q1_7f0205id_ILnzbCYjrcSCDqMK84ka5uiAuISSuW7crZZoyqSzEXU0c6Wc5I1ALaJYeszLzZMneRC3Cb0vfXa4bxmNsqNWogcIBVyver1rpfuJKjWRmYFw3lB6-aG55PJLjF-8ltupPkYKml1G51mQt2HBMpslLTHvwefa4bHoO9czfufl_cZ_uTRaza1jQ6HhFtBSiCiOkl-tekYF0yB1_Gc7ZlDL3QwntfqGWnbtwyWGt_OsOjEggLpVanZOMFwdsra_1YuOreAFSyrO_22Wec6YUTSlky_9B2uQi3TaDWK8b7jdXTq7pMVICNOEoTqwylETNCaSPiwwfGz_AMHr4mvlqpkDbR_ufoxHgDv; __Secure-next-auth.session-token.1=AUyEn2IB_h-Y2_scfWb-83b85MgRA7tKrvfAfo0wWgRY-nYvg8vqCrtT44nflyQlpqvhfwiTAwool46MbcQrcGYJOxX2D9b1Pjk-uSjYQAi-fkuIDDvsBmPsxfQngVJVBMcOIpTIlSLh9pus9s13c2b6a4Ek2QD1KK6WT_YRODbItv0ogbrTWH-TtNNmxWZqXd1kMuK59_Opg0GX20TCZ57AL5wDBF3V4pgpwOJBOEDcFKWsEPzZDqteYkhNkrP6RPNKmKuFjVyiRtLL-D-KPhLUzNsB89LdL48IKv56FmobIHeSBgm8NFXd_vprPZDuIuxzUDuZhuKj2y6CJM9TojqSK84UUPP7QYhazyy1F3XWztplGMFE90fgJqrqlcr3WB88Q_8mM9vv9SOO0Vms6fGEyh0JiCTzxqvF8XvEiMH4z.TXnDKodKFQMO_cj5xn_pSw; AMP_7268c9db0f=JTdCJTIyZGV2aWNlSWQlMjIlM0ElMjJlMzZmOTJkNi1kYTBhLTQ5MWYtYWM5NS0zZmJkYTczNGJhMzAlMjIlMkMlMjJ1c2VySWQlMjIlM0ElMjIwNzAwNzUyMi1hOWZkLTQ5NGEtYjkwNS0zYTcyOTMwNTgwNDIlMjIlMkMlMjJzZXNzaW9uSWQlMjIlM0ExNzM2MTQ4NDE0NDQ2JTJDJTIyb3B0T3V0JTIyJTNBZmFsc2UlMkMlMjJsYXN0RXZlbnRUaW1lJTIyJTNBMTczNjE0ODQ1NzUwNyUyQyUyMmxhc3RFdmVudElkJTIyJTNBOCUyQyUyMnBhZ2VDb3VudGVyJTIyJTNBNCU3RA==; _ga_ME15C3DGRL=GS1.1.1736148414.1.1.1736148457.0.0.0; _uetsid=9aca73b0cbff11efa68307613c52d182; _uetvid=9aca7820cbff11ef8ce01f1852339efe"
120
+
121
+ # token = "__Host-next-auth.csrf-token=b6a0091ee0d152fe37d2eaa7322219d59021b4ac3c403763e11780c5013ae0fd%7C6de0d7e75853cd14212aa486e57e284e880e7233c1756519d5062f7e78d7adef; _gcl_au=1.1.1036319845.1736148196; AMP_MKTG_7268c9db0f=JTdCJTdE; _fbp=fb.1.1736148196408.381886146149209078; _ga=GA1.1.1233695181.1736148196; _tt_enable_cookie=1; _ttp=ScLXjpXS1bWskaW_gYVrdjGfKFi.tt.1; _pin_unauth=dWlkPU5EYzBPVGRtTVdVdE9XWmhZUzAwTkRabExXRmlaREF0TXpjNU5tTTNaVFV5TjJGag; x-recraft-referral-code=3h7wfOgFGn; _clck=exo3qo%7C2%7Cfsc%7C0%7C1832; __Secure-next-auth.callback-url=https%3A%2F%2Fwww.recraft.ai%2Fprojects; __Secure-next-auth.session-token.0=eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIn0..rRuUZ-Yb_3WDAlhl.cwafj0Ba4NdYuP96D8vplfHL55zRggpHcZz4bVF2KQBdI9au-4p6lSybuRqVUjWumNEUGoi3wfLSey8OIGtpvbCP0MEsXz6HlXVlJnIOFQ1WiuRJot4VAFmJ8ybdTiR-ygS6coZDYojIr4qGS9ILITFNMhw6r0N5VINswoV38D4sL_MjNsppvhhHNGUSYUYgVjn7D21XvfzM5bhDpvstjuCVbE90i-i0xCqO77ti5y_U2SUSmA2WjnO39cK-AYchWbyRZd-ok2XgA12bG8bM3stHXm5CHOD5rSIf0Bnz7QtLz91PHxsFm3I7hIDZz-mLQQy5y2LmXgV34Ze3_HSc2L4IojH1S1wjemV4SPivbqdzaSqYK7JVd_ltMLSvYs7Bip5ZJzhN388C2TbFn8pqXsS-H8f3aTcKQ5LyJmgesIiH8kJt2sgXu-HGgeRJxOerD7MxQ5xDm__Q7Tt576bLxbT2mUwuV-EKRR--cB94CRhckia4BMNEtBTmKZD5UupwXZ-KKPHLGLMo3hhEitbTnL4sWeUBD_kIctMde3C3njzuB6pb6GCCX_MIrgVovLh4kRo1Q172XZlNjbVMJZOa2pIhALV9valGtWUuzgj7yWOj_u6ALEJjS_8El1f38OVVvNjDaBzktGM-2g0ad1EHXflAYePAAb9PzbSuVaINlnwxg6KmMifmDlHXIJW9cExcS6o7tI8xos9yxjjzQprpa4-KGcPG1VjphxVOa8UBNl9lkXXLPtK6_RYdI8UV6s7vyYIW6uNL7G5j-yffIY-je6HHuCRHYMBNy2rr--D_tRoTHUVzDbmZzTzHHOBcYkNSt-UH_3rwZJDvPdKPfAo_EgjOIerGTCh8xD7IZVF3gal3yAB-dflfeedihGNwPmMY2MkrogEMSnV91NJpYf5NEuTnNczv_XbUbrZQnPc4nStk3de_FU_HOriDUPaRuXIMtiCAnExF2rv0mGnxuYxHeji6ItMfD4Tn5iC-JNXyG5j_0MCnUC59YpqTeOZf3Ae7caKkeS7YSreRDnqSaTRPOHDJD3sxP6K7xSzOvN5i5BUvL3jA9oqR8jkBQvcxDuLzQHFMgZOBUL7nQKgi6OKJSArXIvX1MUHdq918PiOl2IhX-dpnK3gfSsNtSuhBVbMMfIYdG129uebVL1Np0-xPTmYYOunsEwGIbLvEaZFrbISza_aTmtT575MywCLtLef68wK2ll9FOMHmAcH4Zip4K6TIyZyikbevsE9UIB7m5QYm5Hbne22hZ0_rvAX0WAFfS3ZBckC2dqD4qeKyQYJawo3Q3fAQ6lZnhRBYca1e8j9Aj9Z7p_DiaFdXCG1KigtqPKbjOvxYhWNxNDPM1edvPDUnONyTZrmaYvODhg3VGCLtbJGhy4dujRXBbvhTI0ul2fUtqPe9E3avjlvxOZqVRjYeBxbbJ5OcnhIhi4APc_MB7lB1kN7qVpkNoS8UKCtMAHF9BxcBhxPt7R_wNJsD9DhBzWhviE5KTSziKrJVUOFR5aEa4rjOxfi_zk0oAK1dLiuRMGlpLFIj2ybC7ceFP4L9Bz4_rmIgxOOkqnguNbgN9d2siZfY4USmwLkI-sSEChVEgdIuW2OO3eYyqUiQbQKcoQg8YMgRld6MXAtXACRWAyaViar-LfNPasG9m1qvzz7LtEfVwrTafN_Wx-crG3xeHkc-2KSYmWzDOBAeBUfZoHXnFq-ES9GL8il2AKipGdqSZBy5XrKS4SPzSb9AKEiV-TnkcZHeWKLwfxghNxD05WUa63cPDhH8p3Ygabx-uPzrr5TXfDZqYbdsghihW9BAAzUD8vz4dessqm_5nGe7x865AIUjkmqLol81bj5rNU0wl-AFYMmscIx-GA5KhSp5CxZ9sKcezxf21njovLVGNVjMLFlma40x2nenKnadvq7kAvn6luvDOK1g27B_gcuxxpjjy4Y8OQick2PzbcssD0lJdjKZY4LBsEZd_O5h3dB4ioohnLEYpukw2r9S0FAkWko31Eho3NxBJhEnMqI9Xt7fg9fxiUsRvI9w8DjMUKeyM6odLohu7pRLYJA_ow72jKyOiOonaG5Ry_YE45xoDaTNdsmejaP4My5re0CyYroHlLSKmGZ5pq-wiEbNQ8Uque9PwAxcQoqE8O0uV_Uvl5-HBK8KfP2zU8QhSRz-dEEw_0azH7QbsioeDSy3vl6ff1WzYIZ83NBqhoOlVlB5iUEja_MC0m6khzAJuPnHrUmLGlHF3d35xjA08e0f2GGHdWImnLg9CWSb2ywyV8Nbne0uuokNCtUHoamGfrW8eivBIoYnNTVuM8xb-Tp7Vqgk1TkA0bUPY1ufdo4pf0AQ4VenV4jfm9zAGm2xt1Ev8cf_LDnI7WPo-Kptr9Smm34y3rKYKAVZBtacMJk8RX-PWJcmXJXu_JSodvZdnXRal0j55EdlkaPjHt8R7V8xwTgtd6SonkeZNftXRjYOFwfx8k7mG6cjvznmY2Mg5ft0I4j8q5z_UQ4K5hL4N1nfAlAb4qOO5BZJ2eRuFrGa3oTQe-DFJPBROjHbZc88Qj8bcyV8xvtbDryzj58eEYJdjv5HMkRqKmbSTTRuPpC-BT54zRVINB7SidSyIETv2rBBNqSZJ87CXg68Ps5FadF_1bFStfReZnLujbq562dEBJxPEb2f3NDsP_aafbQRB_LnIrL9Nv8sWAxk_L5kj3PqkR_RhjueSyT7ti63XCuOMYkXcii0psASTEXS9Z2HtbMyn9oSf8Ab7SCnpdAgqXo00qTuOVuRlwmBoNZunjyj4yUWaflfUzMDtPLEsV119pGfwxjQYrn_l8RTd4rn8vQTlv5iDro-MRH-9HL0ikGY_sINBjp0YNph1kFIMHblNb0T0tjfwCWfgjT00J_Z-OMR2HagidN4SxIhOdOXinNdDA0xPMB4iTdgiZ7fvAlmEcDqAefW70Z7vjnNeg7Y6pihBrckCkrewrFQtCbS093zR8W2cOx4tlwhDTkyrMlpLuatTiSpa9GfvkWGT69g7-bQ_0dHhHgFdhxeOLQNIZnYIdPpMMsWS-cQxywJBCklLyxxxHlObIyjY6rpFgXs7klmvb5YYUsV42uykKsg_pzQY4EZa9Z0TpMHugoa2CbRTnHF8dLj_RmI15MMigAEvZCs-2zBzuBUx3wxgwFGMJ2vXMdjM_wblwHuyIOSxpGmDno4HXUQz40d5-65qfxw1CjuvotJPWloZLVFe3kb1LxjiiK6n7U5ZwAEd585-3MREQS0Z3DxTPxJpmPGEcSgGywzDw0_ydfbibmEFpKw0yKbR1P56Y9AL1xqaOUC1r9lwv8prCCPsTS-Sm33o7JmDHireizL8GomAohpmRdNwXKkD7ty_g9q01R-V3H8xTEJ8vH8U6Q80PJPEpBpedrzddjaBmEoIA82kq8VGQw_JHRROsn8ZFroKMosyZhDPolt7bQjLfkB0yYHjR3IhoocfW_cOhIB5qVMUHjTuhxMqIwMHNf4cyzMpo5WeiIhhHexvAVxmvUiu3RQT7rcAJ_Sa7_1zbDAMMwZx55cqQEpQxACcmRChSQ3Uae0X6PnnMOSuybfBG7Tt-93vM_H0DxkLIlA3vZbtB9NRrxxjM9nND-eO_vuXVm8dPCI0oi_VaBVcvjE5_KHSG5lwkU21NsNerGT0F083Lc7A4kdxbggcWdEDZY7ADbJO6VDwzBrPCC5NWrmf6ZOS7XVQeeAmfHTx8bCP5kRB-RXUaXKq_Jd0rLfaBjrjjcQ8cvn1Oabf9SgRQYtCvBdhNkDRalfYKeZO2_4UQjN6-bMgZ_PiqBNq_i-SKWbxcWLxoPo4iytattI15ey7rN1UD4ZVxymzyo87vAbZyDSjO_MwJoYAPO; __Secure-next-auth.session-token.1=2t3R30JeLV4aIut5Zg61NXEwXSktmgQfWRkc728kk-djfvfqbVFzLmNwbXybOAFVL7vfVm54BY9dGXaXM3LLod05Gy8aTIHG8HdXdLcxzoVqpTJiZKbczh9W8z39J-wv8jfSpVYkh14fKhAD1x8cPwqt4CE8yPw2n31ObKivmvSRxISs2iMvPqzUziQAXRW7GjgCkfrXGpwsoxCx34yQReRyCcKoXxUeTY5KlhCOMk0e2z-rGBU3bM1fWVnsg-tS-NbFprJWfoJ1VsCZ3GOuf9PelcoptxSiozL-iY3nH7Qe4pLX1dUromUDFP64tGfMnrNDQk556zeqchqcN10bWe2LHnt6qh-PJXh1W-fQc6tcxorVocOimaSFlNbMAnQ-iZ3nxqsc9K6oJbwrU4psowM4rpIhSxwjBAkM4YYD0PJwU.NG2c6fTxCExNJjAot3PIzw; _ga_ME15C3DGRL=GS1.1.1736148196.1.1.1736148271.0.0.0; _uetsid=18aa7b50cbff11ef8cdc198444574434; _uetvid=18aa7a10cbff11ef96081d44284f3a9c; _clsk=16oagzu%7C1736148273747%7C3%7C1%7Cu.clarity.ms%2Fcollect; AMP_7268c9db0f=JTdCJTIyZGV2aWNlSWQlMjIlM0ElMjI4OTYwMjU3ZC1hNDBiLTQ3YmYtOWQzYi00OTE3NmI0ZmZjZWIlMjIlMkMlMjJ1c2VySWQlMjIlM0ElMjJkNTgwYWU5Yi1iOGMwLTRkOTYtYjkzMC04MWI1OGMzMTA0NDglMjIlMkMlMjJzZXNzaW9uSWQlMjIlM0ExNzM2MTQ4MTk2MDczJTJDJTIyb3B0T3V0JTIyJTNBZmFsc2UlMkMlMjJsYXN0RXZlbnRUaW1lJTIyJTNBMTczNjE0ODI3NTQwMSUyQyUyMmxhc3RFdmVudElkJTIyJTNBMjMlMkMlMjJwYWdlQ291bnRlciUyMiUzQTQlN0Q="
122
+
123
+ # token = "_gcl_au=1.1.906962865.1730362257; _ga=GA1.1.435165527.1730362257; _fbp=fb.1.1730362257600.714008794112161913; AMP_MKTG_7268c9db0f=JTdCJTdE; _tt_enable_cookie=1; _pin_unauth=dWlkPU0yWmxPR1JsWkRJdE5qZGlZeTAwTWpNeUxXRmpNVEV0TlRrd1l6RTNZelEwTldZMw; __zlcmid=1OVn8OoYVNvKEWM; __stripe_mid=d21b2291-edb8-4cb1-8fac-05c6a9493ca8d85a3c; _ga_ME15C3DGRL=deleted; _ttp=412qSInHGw3jjdyNR6K4tBIYmNZ.tt.1; __Host-next-auth.csrf-token=5a254fcd5cf01dbe6f4d38ff6653073673eb96145321a4aa4e032c1361db4067%7Cfcc1ced5fcc03aca73a9b3374bfaf0f518079e6802a706311c2428b8b12a5639; _clck=uflztg%7C2%7Cfs5%7C0%7C1765; __Secure-next-auth.callback-url=https%3A%2F%2Fwww.recraft.ai%2F; _uetsid=c8d13160c64611efb4398769b61c9995; _uetvid=a8a766f0975f11ef9b7921e48a0cd258; _clsk=5j7win%7C1735524194170%7C4%7C1%7Cb.clarity.ms%2Fcollect; _ga_ME15C3DGRL=GS1.1.1735524172.75.1.1735524194.0.0.0; AMP_7268c9db0f=JTdCJTIyZGV2aWNlSWQlMjIlM0ElMjI2OTE1YzI1My1jMTJjLTQ5ODYtYjM3Ni0xMTI3Y2ZmMTFlMjglMjIlMkMlMjJ1c2VySWQlMjIlM0ElMjI0MDQ5YWRmMi0yNWQ0LTRkNmUtYTFkMy01YmY3NmI3NDMwZDElMjIlMkMlMjJzZXNzaW9uSWQlMjIlM0ExNzM1NTI0MTcyNzY2JTJDJTIyb3B0T3V0JTIyJTNBZmFsc2UlMkMlMjJsYXN0RXZlbnRUaW1lJTIyJTNBMTczNTUyNDIwNjMyMCUyQyUyMmxhc3RFdmVudElkJTIyJTNBMTM4NCUyQyUyMnBhZ2VDb3VudGVyJTIyJTNBNCU3RA==; __Secure-next-auth.session-token.0=eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIn0..U1YidkTjsjiDSGx0.6m18tVwC2Obkzr8qZE7sYPvf2uYS4wk0tiljhQCEnKzJbgO6ZND-G_XSth2dSK023l-82oO7Ilac1uNxhpqOIt97xYbVY0jsvBtEx8GCQADQDjVkPia-pXz9zEhG-o_COvhjBwLTHUePLLvPXjl1pTHaCE_EmSmVRCga_efmG_v7ohs_0P9lGC1bVd6iVb1Z5bG6ep5K5koCUtBdZz4DEenzPAk0ZTYd3SC8XrEgveyN6CH1WH9ZPWO3Ixz1at1xTJeaHMZkQkIInWhdgCRANzXClZscu1NYF-cAT58r1PP9zbfMByJvxtKClFxJlDOc_5CXEMUC-87qSvJK6LWjUADNIPTqXFynp5hh-mY8tVMItv6S4IKhhXvQ6-UARrIGkjjUx2G-K-kXuHDibYiJEYyJZJzzqR0Ld36LjsOY08TFj1NNBZ4PqNcW1RnRvGXtrEvCH9xJrjz6YJeXloptmhHBPlHmNmS3r6qaA9xERD_17by4O2PZwTAKvAeu-gXxLkVDc5DQp_Xy_ID3P9mytkcllz40So5LVJ5SuVggFpjq2lzuuTJsMX7e3t9x0fB_3n5oGU6uFE5dKtf-1eg_o-mVmDBc38hS3xYMv9ZK4QFbxpR5-KQnSK9liTqV3K_V9tfLnsujgrG3zS-bRs9vvROV0XBN9hku407N7DQhfLFwrpOvaH9YmKfGQpuSP2siJutMEudd7VYa67GCeQQSm71irOBPQ1e78wAz06NtBM26890tQbcpuggeo816HtxIlIsS_4TMc5vrs3Palqhzg5_e54ogsP_dlIzAS686M1vFWVDdqNAzNYja96wvJXxTlFAdVaX9THQUNtRGABJxU_uugHpByFtxY3kEfMc0IdhbozenCIhG9F6YFBkM05c5BoaOx_JOhm6l6Cke3gzyrt4rADW68KlF2dcisS61y3pbHSbEKiZptNkq8AZB0QMaeTmb3nfheukVm4gZHq1bFn41vOYwN3GDehzAfivKtME9YgJvAWhXI-ZJI0oC5CKragg3g994KZBtquk_-8CxQpAzchfaExca6YMrOLBrmhtveDj73QIv4Ov-k4GePIqB2avEnRsCI6WVNFemLMNXzBgBqk4I8G1rR94wVDm2xLsEKr5WCrM1VXES2NljT6pIJbMkbW0XwguMxUkSadF0iNc9GIL1S4SCB4kkiX9XXN2n-qupoJ5hkW09z1f4-CvYeVmM7UJX5kqb5Qg0lPhIoLO_9zx7dtSvtgfMxmYptygyqTUKg5Fu4kczqpMtjbqQHZTU2DEziTFQIDSaqxKW98rudTPGiOY81LKWwZpxgrr0ymrzGzmMxHnHTlRPj6_TKdUuA7SOhjIDNdHP4DfBdrd23QhOZRky_p0eYq4QpP_PJ6A4AbMKhAv3cKa4LRG4_zM2mj0OhJmWbRPgLTqmuJ5GJJJtO9Mh7wUrDvxjO0zfJadm9g3Po6rkJj62EtJpc0iqLtUadyeRxsQ0fieFpxJT65oRFkfU92hzHkhrQ2dYt0aqEZ3DPQZp-tDLJWZNUUcXRPC3UDL6HswsX49sH5GeMesWfGo1OBSPrC8uNOFgldfRZfswX5k9GEf5JGEtRQq2bbHWussswRnJkaZZR7AmnFjgEe8K9Amjnv8vMLfP8wyzhdV0w8pKG5iJVmbzW2q0_HemL84XAd9CUUQaMm0B9p7MBzIzvSAj24DoMbXXVnlcLMrtAPxLlRab_cR55FDxRpPdYe36GDd1I80NJdVMMPUQ25xAf_g8H25O5g8uCrWlI7i30UQq20iPqRqJ1cRYe5tKKsfqf4zBDIt6qUGrGOcJdeiWMg8J-vfVaaqmpLKHr3uOPT-kKNt6TelaAVfitIxKPd5woiw_x0ZdF78xSQ0IsL18t3scZP3iYQW3hTSrxG_45e0dT-9aEit_5ClTN1_0NbFbWqarxFI6YZkE3aDbBVbQI9BHys4Q1Sk4xa7j9ApUZKi7XboqULrD8Kgne9UY12uMn_PEa35HTZ-9a19ACihy3VxATY-PVCIylzgLUHCXPISvyiAmPnTlDHhWZ9yHQKduNLhvobIQgq9RW7vaiwEGReav70KXbBeEe5AO0mS5UNFyxaG9_d4WcadQ5eIK5LxzrlPqePSTIHwhhWq5LunPl0cvQ62pJVPKxAqN2Hc1BuVWP3QimkBH6rCSurCZPxUhJukbsQRQAhG-HcMLEq5cNDO79OZ-Pg4goNZ5AsmkgoKGnIP_sPxGiRmTR2WhczJPk4OiuNPh03nvEG6D8WU7BLwfuyT_BBIz8lPjwrrQ5O0YtdMY_Q6lGj-JUPObkSz_UsFvVlus9DFgfKPDQDAXJ5Qza6LD1GB9eMymzsf0s-muYMZ_wcu7S0kTkjzeypFuzQF9IS03hzOBFOx8sX0Vu5_JP_8FWMOvnj7r7B9PApYBjr5vGLkXsO1HQO0egd6YARVXJrRCfuh1zebhWqPsvVy1B3GtGE681qymdBC5Ig0fuzkhmGkwAByD5KmXPwsiH0Z8fxLMF3RxLum6r3VkGD_yzExhxzwBDWEwRECQXVhvYYwv2uIltLFEtVAnQJoBHmFUGUFIaX__xYkDz4G2B8ePormDLydLGAXpCD1yexwacKpw-nZij4TUujJdXIzOdWw0oiAFDdpOowLui-3LurHP21i0nj5zkIncg4EegW6BWkpUBujmJh-RT1b8A9epBfQTVL7FMHZfzaYNOMFcghTZz7rk6SsJwYiMYXReoCNVkt8-NGxXsifIKjfQ9XliVhJhIpqa0zZGqjpXgEI7l7UwX0HZGQuPUCoyhg54P5zKOoUa5Qvo7hgByNTS5Iz59lECZwDyEvsDid1LEopuUfcVlAYidOEk1rrQHDq1ffw6QNCk089ntU7P3myL08cSE_GZL2CUWNQfHwM_6M3A-DFbfoVSYrnuorJGEn2MGIV8Rw8A8LpOoeKqtI3SIuTGrXvVTZo9BtV93BTWZ9sIDxoaxh4aixadJidTLxMpsDhok5Sd14g4-hRcjj-pXHzsqrZB33RBPIeOYJpbVmCGw0wYbL4P3j41agnRIAEjJqRP0XhN1wyw1oTvrZTksN2IeXuoz_-7UeBOu2qt1GBNtHB85GrZrErrWJRC9CF0JjQSHFV99p7LYuoIAp3LAUJtDRgrFSTkgYl7o-r1tyb_k9FaUdK0cwy3P3NvI15YzItRWIaDRvQvNNLyUOeeZVi_M8mF1DDedkY9QKLdpcf5ONFOBLDe5VXSTPQlPttW7BfnX6wQLxQcBrxSFCiFZwIkUJIvBA1B2i6hu-OGqoOfPDeLl4CFEPZVtqJbuh-nqEslw37LW43R4dQf8EVDOR4jMr2rkSp4tQxj0ooX_i3YMN6cBHtiKgBLY5YxuMsQ3wuhkj-H1AugaqwhG4DdpIPCflNNim6xJCNL_cnJnen9TKoH_z56SNVmD8B4XOGef1q_ZId32jJ5lNr_5dnA3OpLe2-HfnLF0CHMYFH3CP_C7ACMNZmcdUP91_3ZXlSNCXGoazkoI_vzkbfiqIIXWbCkX1xmU3COBOhRr9Itc-SPELgW-cSdw_WgicCHwEKNpOOx1s6uPVugDnb5zr8faIvLYpH9B9i6poTEv8pvlW8kNi0bwmTarfW3a913B5GhWHE-PEDhGQWwVbZA_Tw9MRqllnOOFysriiKp-VGUPnBXL1ZhVx9L7-9kE8lmZg7x976IXvIA1Fej9JsgV8fdoiUVN22qmBKo1Pf1uYNT9vcl6hCok_a70uwF6VWxW-Af1p0z_eVPDP6c6jiDi6P8sEArjkakYFYduiXJBJ554aewD981PrP6elc1JcYwbOf0wSacArvx7hDYij_F4jIbuJB9rPY11HNPDuEJ-sMM_RryFXX; __Secure-next-auth.session-token.1=z9OLL_N0mgHuxZVvHW1Lk3aZeTfY49SpHmak0fuOP9KRo2AD6Fr2vL6d2yzweQwZvstiYbquxtOmgMGmBcmZ9LjgHBiProhlENuw0gwGbzGOd45_Y-3adgkKiYvPaKLj8MNN2U29vy_Zkv-XGgImas2kYj2JNxq_uoioI6f5a8Urztq7zC8s4VXoNaAWSar30fS6HXATFWbm69SQ0f1pqYdSWM6Ph6dBxTWjjSdLqrjslRHKr-_oykG7C2oZATVnNXMwxp9rNm02T_Pc8DDVlVGrvSfxbayFC0Qah151V1MyxTj1zMbsJqplzZ6dJFsw-KgHO8S2DzPaQkgHPkR_yERr53BQ9Y2DBCRIJP8g0suObVKRS7QoH4YWSAlWmwBJ9A7IyAsP0Rj1_x-YjjSPecF_Ek7ZFB2PLwtbpBuIVWrXVmjBXp0hUsxdz0lMSW9O0yl84Y2j9ExBfph1dUL8IZ4OFuK6iMu8BBJP6nvrnVx0Mbgd7IXeeuo-k8hQjW-5q9D9awxTOf1AT6CJa6NzrK_N3IYEOFzvU9mrxqHjLy5V4tMV52WTXhvymiSQJVQqX1Z0iU8PTPrg4vZfrOTVTA6b5yxo.Oz5LynFSv1m3FPvz_CdnuQ"
124
+ # token = "__Host-next-auth.csrf-token=6694c35f61afab7aadfeae158e6074458605550b9cd2e4ef2e63ab4ccaf951ac%7Cac9bf15973e5b6a168150a16a386b821f09559fdaa29a0bf1134b0fa4e327664; _gcl_au=1.1.1248447681.1736148414; AMP_MKTG_7268c9db0f=JTdCJTdE; _fbp=fb.1.1736148414688.910490316103599764; _ga=GA1.1.1798926416.1736148415; _pin_unauth=dWlkPVptRTNOekEzWWpFdE56SmpZUzAwWVdFMkxUZzJORGN0TkdFNU0yTTBaR0U0TlRCaA; x-recraft-referral-code=3h7wfOgFGn; _clck=11vqeuv%7C2%7Cfsc%7C0%7C1832; __Secure-next-auth.callback-url=https%3A%2F%2Fwww.recraft.ai%2Fprojects; _tt_enable_cookie=1; _ttp=TcbY_nwRLBZ2qsM-uRmC3WgcqHh.tt.1; _clsk=yoduqn%7C1736148450927%7C2%7C1%7Cu.clarity.ms%2Fcollect; __Secure-next-auth.session-token.0=eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIn0..PdFk7mpcQ-BCcDE0.S4M-rsTMqzIPxiQYjH8HNgYixGpB4Ff_AgLnEEw9ro9h-L_gWycqYrVRvsFP2h_OtZI3afoq_MVXX2M28sY4sgBWVlVatS_q0CApRi0pj738g0hoGBEKMcTJ-kXGKwvHYfM8CC6ugtM5XCfCxFPC3ZwebCf_mjBWmGm_kHBOvc20Zyv2Dy82dg4yCriVdklf8pUSC2-W-XV4KSRVuYplHglrD0c5QpweQSyOUpVeQHJYwaZnUabTSk8NJ6szdq46JxveDgqkeCVpHKW-8KFtXnOJsdG4FHKWdaVs833emAGzFzh7ua9eoD58gJ2dAwVd9RtcTOHoeCIUF6WT0QsGOUZQ4lAakjkRuTqxOSY8jILMyp4L6EVvis-KXp8LL6oxR8kIiEEsjj28KKju8B6YgGQF6fKtHL7yHrf33I4JTGRDSWia_6ltlHBp5s9UggqI5YE6FA5-3SEk74tT-GyJqsQnoFcs0PK2iixTy18-sDmijvdfVZHrcP-J-r0hrV9yk9wPA8hd9k6A9XTPnH_pi9h0YntAGWzd_SVxEpZUNaKXdGrL9oO-9E05XG-GHehYnhO3_zn0oSSRduatnk4RRfDCBBZotz5gKasdsncvCEUX33ZP_cY6B4ju1ej0a6LzOTdmXhCZGbnSLAPu0dAgYj3qXAO_vjiL-kYpzV-J9sQTOecQJE-Rd6IU3mtRSKtV5SqRY-v91cyXhx8O4pQNy1wtNIYST3DFEu8iTxt_8-CKWMiCSVnOOWV0KSoipeK3IDrJt9n1qB8OWCfCQ6A3ZLftI469x7XUDa_wPfmiLj-0ZErhtAz0U50xpfrfjCaunwQ9LKDRjjf-8FdGlqC0HH8EBkAqb7e1a6zvpqWx95oJeic7H8M3HgbbeyF0JqO_W9Zf2AdyNZsYUE7T3N-JDApEESgEMPnBF_ayf2CKknoWiCFOzflpwzcxd_rGlhe3q_CrNW1-ZqKh1sG_t4lKf956fFrHz28c2mfBJjqx5tYcsYw-HQf6wyPFPnzK3FS16wMpVMNRDiAinf-i779tdC_pgPbJJlU73I1aNDpdLnRtowlkMviuVL6y-KcBeK7d3euRYGJdKqM4gjX5WxK1N71s07yDhiXKU35D-gGE1ruF8u6N2epD3jyfjdKsRmxKce4xl96OwZzF0je4lV_LUBl5oXON2TBbznp32o1okq3jUH-7Suzuiis6NERW2dO3wARdlfhNLJ3Ur6zOxhH86v12npd0ZkUbHgqTKn40_4XvmGIdzyMyddIh78k8OFMlLEFIhONFR2PFFhnjvnzfjQrtm4fCDjWZyiAZYB2HOsyHDI2uS66fXLSOglYA9Tco_UrSCQgM4Yom0m3Hq0JH6eC_hAckBNfJ89IFVECVt23njWc0Rj6wG8-OBKyw4nqgCke446n-7ZS_S9d2UA-fcVBoFG7kr9WTEQQYOOC_stkd7jlH2huUUxGCpi_Nye2KL0LGA-VlbCt7KUzKQ_G1Zrl4CiqGNImoGU9PsY9UtwWxUaPVag62iVicD-4_2Z0-lv6mQyS_TICV_CfxegxkBqGmTad14l71M_WjU9eIzSSs-dMguR2Gs3-0JX3SOfn7DQZGXfZps3_FvmvNTji-9YZpEycSWSUssb0XCd3ISqcqYo1TslVOk47Nz4xAOsrM5MKnrpCYAmiXVC7LZA_ezcnM_3zjIIzjRRi-5R4u5jQ-RAqnrjD6LUn0oCnqyKJPl75iMU2YrI4OlD3HrjPXKWKQFYx70gJH8LpugfNCwQuuIrE5teAO9PTVqO_tGt1WWbbfzD8_j3C9tMb2vqP_YL0Ho4YHBPudZ01L2vlyKOplRKeTw7yl4h61bbe2qdYREhYITxrTRmm8biayCWgmj-NQtoMP20N00LtuINpaRraQrRarB67wkCnO-gtP_OGbp7gXQPlm-eyskSX4OuqNJ6v0EKgD2-o6v0j9G2rFvE0rzzEUL5AQxj3KA6lc8RpFR2WCYHQ23CSTsLdrXdptm85Ij4QsD_nNmrMpu5z9BFhoeuGtuwgFqBIJNPJ6rGlRBMVnhWKzSw5-IYNlpFNMDR9kAZo3f_NbM0LzFSIcdeOq3VWVNiBhXOaDztnx7tIUWGiAEqtAKnEfo8W6T_D7-hO3h2sdQIccmj2-iWN7NKSDVzc3eHH4zi4PcAG-X_86MmOy06_xSiOpMWbs0sHxSe4TZGxPYuB2piAvj1TipZGGXnVuy3r31qMxZhG1LOuSPwyrGIKQL3jHr1vh_JRKdObkfEeg7jlrCObCOaLX6wTcEXdQ5g0pMYRPm0a393BqNQafK9MxyMBgmL59YTFW71awz3vyDj9pNswBzfSSK0mew6eS-u2fI4nMnV-1eYnrmKKY_vnqjnwoWDUc1VUoNHMLD3aDtn08hjziLdBuGfUICsygOcjtypYDp8ys-S3KedzBZyNRVyejQq_uEw1SlIFG4up83NjP3aiG2aPZz3JZNGK-RhmTMcuGNa7EpO28k57yZwNnBtXT0ajCPBcjTP2svs-Km0-vuJ0D33JwGpedykr6JAUksQXZ7zQabkKPcmkxnFRjsRF0n9JqH_Abf6eInl_jmTgDnSeMIvA4Tp6aGamu95TEWM_9DjV-fffo9Qd3VJ8Qde4CJSfIrGX5BtxMUAi8zUozrTwL4zTfO2W3NTVK708hLJ-i8N8dE65gAFxEDiqTPX06Y-kYwVp2DfHEsxYR8xojGeHk1rH56duzrmSF1qSgBH_x-LM_XDvKXOq6zsq5TH5q1XfPDepxDeFk2hodOiuHOY9vMe9CPc-arnvz3Dnx2KdiHaM3R3wWB_I7og_9IiRJGtHxwBRFZ6--WEhFi7EqN9n9CU9FfOhg0A5O5F8fxndSamw6pqTD_v_67ZOUue4eJRRnx_n9U-tFz_b1Yp6MAS72a5rmy0DUpz_B1ZWira9T21Nb7G3Q0Eb-rE5FOfaFAqz5ivdekRttlREfgNGfhJQyIM05J5cHessFs2aJTNSU9fXgPvxmrMzziDzvE-QYG3jlmbdrpzIUr3PUjiGbZu7KA0yv_8dZBVXNFUP-w54n3KQ3K7tcL9fBawyX2uTgFWXO955O10Qhp4HnNR9D55DhSe4rjtiLU5nhXC99Q1TeVHpn1skJH_KAgksMM--I_T5TqueiS_c7yjYZIETds1TO_347euTp0Gq2I4uDfMm6ZLOKE8XSN6tMt0cn04TsGn--mMWwCJCslrXomI0rg9vrteQWFsoW3vYgvpgEF9h8A-Uinz_qnzfrocnnQGVtFChOlJ7q4cC88b-JjZ7g9arATlEhlrLj67wbzYIfK_r_7sdvMLocicdunInOsYL_nJ7eM9pj3WZrAdQrFH2fhYIJa5H0MNBj-uybFJKq6nOSpYyfo4QpVtjiBpH4mFQlsYhg17s_xH8m8wPc8t_Q0V7pwCqKgMlj_ZvK45dNLqwU8MWF4P3xIcSoI2IuGl7kKLmTXsUcQz_EZuoz16aRFXTMPQJOYizH2IsuWixdb2q6q1_7f0205id_ILnzbCYjrcSCDqMK84ka5uiAuISSuW7crZZoyqSzEXU0c6Wc5I1ALaJYeszLzZMneRC3Cb0vfXa4bxmNsqNWogcIBVyver1rpfuJKjWRmYFw3lB6-aG55PJLjF-8ltupPkYKml1G51mQt2HBMpslLTHvwefa4bHoO9czfufl_cZ_uTRaza1jQ6HhFtBSiCiOkl-tekYF0yB1_Gc7ZlDL3QwntfqGWnbtwyWGt_OsOjEggLpVanZOMFwdsra_1YuOreAFSyrO_22Wec6YUTSlky_9B2uQi3TaDWK8b7jdXTq7pMVICNOEoTqwylETNCaSPiwwfGz_AMHr4mvlqpkDbR_ufoxHgDv; __Secure-next-auth.session-token.1=AUyEn2IB_h-Y2_scfWb-83b85MgRA7tKrvfAfo0wWgRY-nYvg8vqCrtT44nflyQlpqvhfwiTAwool46MbcQrcGYJOxX2D9b1Pjk-uSjYQAi-fkuIDDvsBmPsxfQngVJVBMcOIpTIlSLh9pus9s13c2b6a4Ek2QD1KK6WT_YRODbItv0ogbrTWH-TtNNmxWZqXd1kMuK59_Opg0GX20TCZ57AL5wDBF3V4pgpwOJBOEDcFKWsEPzZDqteYkhNkrP6RPNKmKuFjVyiRtLL-D-KPhLUzNsB89LdL48IKv56FmobIHeSBgm8NFXd_vprPZDuIuxzUDuZhuKj2y6CJM9TojqSK84UUPP7QYhazyy1F3XWztplGMFE90fgJqrqlcr3WB88Q_8mM9vv9SOO0Vms6fGEyh0JiCTzxqvF8XvEiMH4z.TXnDKodKFQMO_cj5xn_pSw; AMP_7268c9db0f=JTdCJTIyZGV2aWNlSWQlMjIlM0ElMjJlMzZmOTJkNi1kYTBhLTQ5MWYtYWM5NS0zZmJkYTczNGJhMzAlMjIlMkMlMjJ1c2VySWQlMjIlM0ElMjIwNzAwNzUyMi1hOWZkLTQ5NGEtYjkwNS0zYTcyOTMwNTgwNDIlMjIlMkMlMjJzZXNzaW9uSWQlMjIlM0ExNzM2MTQ4NDE0NDQ2JTJDJTIyb3B0T3V0JTIyJTNBZmFsc2UlMkMlMjJsYXN0RXZlbnRUaW1lJTIyJTNBMTczNjE0ODQ1NzUwNyUyQyUyMmxhc3RFdmVudElkJTIyJTNBOCUyQyUyMnBhZ2VDb3VudGVyJTIyJTNBNCU3RA==; _ga_ME15C3DGRL=GS1.1.1736148414.1.1.1736148457.0.0.0; _uetsid=9aca73b0cbff11efa68307613c52d182; _uetvid=9aca7820cbff11ef8ce01f1852339efe"
125
+ token = "__Host-next-auth.csrf-token=3da153bbbceac89ee879a58271a68e04ef33ac04f50b88591340afc6ec19812e%7C5b3ad5eb06a8b5f02fb9f3fba48133a5dcd268f10668d4035b966461dea83822; AMP_MKTG_7268c9db0f=JTdCJTdE; _gcl_au=1.1.1896709423.1736302346; _ga=GA1.1.10593690.1736302348; _fbp=fb.1.1736302349336.414258450110248556; _pin_unauth=dWlkPVlqazJNVEZoTTJRdFpUVXlOaTAwWlRRNUxXRmxNelF0TnpOa1ltUXlOVEZsWXpsaw; _tt_enable_cookie=1; _ttp=kLi5NQ_CWb0_K4XUfVtA10jGvFn.tt.1; _clck=13e8jkl%7C2%7Cfse%7C0%7C1834; x-recraft-referral-code=3h7wfOgFGn; __Secure-next-auth.callback-url=https%3A%2F%2Fwww.recraft.ai%2Fprojects; _clsk=1wqxtem%7C1736302380447%7C2%7C1%7Cb.clarity.ms%2Fcollect; _uetsid=033a7bf0cd6611ef819c1f2b018047c4; _uetvid=033aacd0cd6611efa43ba93c5e6daeb0; __Secure-next-auth.session-token.0=eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIn0..ZrGSeVcHFLbRXRt9.sLv2uELzOs2q92YoQ1NOcXCT8AN8mw1fuzDVj0ge7LDp5O7N37ZVTQqaoirb3kIFoIkgl1GXcK6_JG2zkaQHpr2ZkLD7EM2g0UuVGxngoh5YbU0dgsfDndvwqgwrh0MZodd4AzsOL-5DdAvm-68gxPxndJ9kYw5BJ9OM0Xs3aTI6PkFv-HHNWtTSXYNur7e27RnmVt-UFpzWaBEOAAMJ65w7jGZuPQ7ViAeajw_jsaf0sqZ8sVv4sCe7qa9V1H1Odz_IGVIWHD0jJcBXAoLGcHVquWa1OswdQ89fUfzMBKmWOH9m2qiuMa9HV7wuDjrLVIeVAaIteDFjdkS8xxNRnARDZ3J77VO2zwVgiYvl38Or4gbhlcLcDmravtWl_wX3F-xKkHFjkLIGIFmIkvt8EnzLVhbDaoRwdG4cyTrcHQ7UFzXtjIf_Ipgs-__YYOSUUE5U5QSNhgbRblOzZR2GKmlRryIp-K0JKtuxmsHWoNglKnzO_ts3D_5IU6gaRPBB0hhOfgaAYH8GhMpXB759SrBpxaVgLdSLeD1MFn3sg1GFFK7d1p7ks1KNGQGTSTIkR9ju7diyl48f7deD0QhsaVUftg637L8nCvQUOTtAM2L6vXaSG3Xaw6kb5eF97UjjYIBhCByrePeuzVRidcJO9f1h8d8RLoFn82oHCHVDf4S9jO8OqsLsCWvgWiOt4JdMyHccoiwotVh9zum-YX1_-ygaoU0SHzN2l7mJtAYDuheEN4Amg7guNE3uSBFloGFILRKIBcu9PyqlDWg31yKbIGiQyjTn0SiA0JT2itkIUgg5sx3Np_6_3pwR7JyjRJwcTdO4mf8mvawzM61ALCpv4hcB7VmvkE9Sd7XWG_XPH7Y686v3tZGSsJmOOfoBefT-PXLSLnFdj_enJ63UNeqgK4HpSidt5ncCudIu91H1kRgBgW3QVCQcFvjTnCamPSyAiyu7VHqlSwdg4vPUvI5Ngbg9AiLn-L84NkDZfJ0ejiKwB3PeIgwI2PMc_1c1gSU5fMXIezCWbEo0atAHdeABQjFzOSAv6Sng8XPdB-hB5BKtww7_6QwLqPdkRTLDGC5HMecvVMtuHTdfjr61FEdayDBhbIXmeKTCN1dn7DZovoHc28wPLOVfJ1VWwDvOHez3gsVYt8ZMTm0kamzpYcdyGeXrq8d6G4ZwkXSl34-SQ6jBeHw_hfE4oOfsWK8RRfFf6Lk3NIPZQzVtH6-tRSNW5OOQ6QiQS76s6-OEtM2feCGXnP4wUBZZmcbWmgjOoWw0VtMwf4KiTYQfLY741gAAsebc1wZPWT2iKmJQdI8oxdxQjr1mpvkW72xJqh2IXf5SiLsmTvzhbWDDzcKcVdv152-snKkTnF4483tSRzaTcetvj78pl29YVILRs08REsJeulP-oh7j8S8AHck947MBXvg9YLC37RyGPVzVsMFxAXSFymRX3HepqqAWNTPTJVhwNP7pT0da7SD2wP2I2YE1UHZwRTdVFcFTM6H-vLP1dSIdClPD9utvgNJ511v56ywOAnX9IeCBVeEyF_kKYW0vmfKrnwF5H4FszAa3kHMn8G2hJBFMwfXMu9DjT3B_7JoZHGGCilTe5vvCg9aBFrhgo0ydOFk15nQSD__tlMVTCxyl6qkj4gqV9l6aRjZGTtAVZ9hVk3UB3ZU_6sy4I-28_5vvfn5yD_KV0vTB-LO4CUqPqOZWsYoq7CT07NAFFlMtlXOytQwDkBsP9_2mu2ZtawpCTVGcql1gETBKaSWYr3_CmOp8aSbv_HqWOpqyVEKV775jCmjX-l44ZuChVZfZUJxC_EsZbFVnSXUEnR2dw5Qb3_WOWKhhLNgjFtwARsf5vU-d2XX6kPgJZMfOVGfl6CRy1KEJYray_n2fR9e8ZMF1ZHR0MWLYZZoeSoDYZHpAo0iaXy43g-KI16bVaer_wez0zg2UvMj26jkqOMS6J1bW-VpzucoKkRXYOjnO5L11_gNmMM8dA_mnlwWl18n-G3evNLJsKUNEFwMWZbpja1_YfsevxzYecIYXtyJCDpFESX430-K6ZYX3ryC0R_9EFxmwZczft6OXtR1DxvMd0HutiYg0lu4IeVJlWUTswbcAs3daXxir-6p9sCJGwk1rumvfiMVWu2EUTUqsm47NEmOAiZegOnftMwjcuJVV0y6gPDf5d3oCJi1r9DI9F7W5zX8SfCfm8psTfuamN-vk1Pl3w5y0_pRlGYxOCrcq822cmN-mOWpzTRCKBAtvPmfbHukv2SeQyzQssT0uadQb14IjL1aYeAy9bo7GSf9gAyaZ3wq1VRrC0yOoJ2_zZggC6MDpp0qUp-reF3G7PqQL3m3ij4V9ykyI-w4isvBhD3KRxtywE_n282dXjdZCQhKpvtYHleig5oc8DuHAiFEwmIS-1NAKKtdhshJe_oXkRh_wWbuKSX_YRBmNg7QbQXx7qcTXCrsdOWE_5pEDoh9CI3PfZeDlsAx6KvXDaBbCUdMdgMPjwir2NkOU3AkBUuvpoNn3MExiRznl9J7eG2GydCoBwMAEglRRb-U9wVmI0O9DIQYQUhCJvY0D1coNhRcPz2ewYY6uT8vuRmlfAMMt1oZqD3737ghXcji2ypFoaGOMZJe4vE114kajWCNHsiaGsMPIqroztxo7fctwDiTW8AMdwwowGMtqqniGLlcE2pc6iRMc-1ZjuUqjsettPnzCHnd3mA5vtxjkZk7IiAT_-ut5m4_22rVnyXMluLh48Qx6hDjiRTBmf3voZWVPd2mvhJFh7k6P9_a3a54bebXhyTuF6m11iV4yUmQ96S_t518hN13TiVaP3Y-hWZQssbi0ikAprlcQ_gofLJA-lONU3YRTvVlV3HzkRgqt9ZGS2NgXRppMrQ46D3KBqYA5gzJKTO4PE9WX7JxIx9q5bhfq8vnLgfh3Rex57IYPXasLDKGsI_kADJ4YlkoBSYkMh09TeneJVKGAFqN_8EHtDc_deXvysaLaDr6gGQJEz7yKPU5fYeD5ONQJhAf1BwEzYVW--s_iagpFLaH0LSqRbWzfk3FpbzSuqoIX-wWm_zyzFYIDpEq7xKq5uzluXMUpIMZKx-R20QHn3_IOo6OPCSiqu400dB6BaeCv_Yl08jIzqpaFMOlt1e3LTpE03fSRwI6d2P9AgxYF79tjiFcIz7VJMXi5in6VVA1QPsGhy9BRSaCUusuS0IB6fpDCFU0cgvyWEMYBiFFMQ5PUhxgiq3teedocY2dh1wOsBmhA5nIIV3fwmABBPhWLWv_ltBMj1pd_mn2Drd5g-0fTihSVo2lmGElTktCiS_3LliKPX6ZDIiKfBj1Johv9q1lomAsVr-rLRgFSi7oVA5zc2HlxFraTUdVmynZhVdxKTnR2L8BXuW0f6C9VTPXgtJbAP7GNiwKRGdwDpEealgDNlPQcS3v_k_2hDb5kgTrFfNFYyzW6pgupjPqaGCRhZAssPMCMzmlnoM52XzYOB008_XvGtyMyUL8Sk3tPYHzrHUvT-JfNSiBSfPB526frwom4HX-it-TPx7aTP5VMPx2bePyU8_JqfHvDYuVdBoK_Y_kkicPfe7zO9G98MHs12ovy8L_sYmQxVKnoPl8T_dbZG2cyxGFHWKgElHCCRYqntXUVpMwET75wJYRb_xvflHkuCdGSDeleKqxlsXJ1Oh3IF9TDj6QVi0Y4z1SDYsOBNMswzY29V7uMGz4UPRdq7TTeWrieKhqGmn6_G1iwgZMO8ow9szzQzT_FT38ibm8YY72_de493xom-F1cLjYk4ojrzAF1KSqnil5IoV_3iwJp0Du3duMuJZWk5g1uv2AuH2qiKetTBEjRl49jK7eYV6t9oPfFY3joKBcsPvI_ExwzCw8; __Secure-next-auth.session-token.1=IewRmnPuUisNykivhYJM8wUa4DZiA3B5W46rlWa6hv7U8ILy52x9Gmvxeq81q8YPWXo0ySlx1Fc0pwDWpOR-o_roVqnnj99uoDHysIKYYd8JZ-G9GhkEcaOWmD3nXvGa18S2L5Z_xO6JdGD1cRcim1VgoYs4m47OTPF2s4D8sVbF2Rlg9el0doGDb0UL_O864ZLG2cZfsXu9er12patwXI6AtZmczAU6ZuN1vPA1Pcha7kjEXkoz_VCAmp362777Il4KHt1aoxiW5moPGwu435SI6rc3-OQYLab-yxWvfOxR7ySuBr83zdQ-m7eUR-A2ecMeHfY2qOpGRaIlnfUGmJxC1TOe8tjCoZP-6Wqa_UdCIrfKRzwC0C94I_pShhJPakXM1TK-mAIrl6R-drd4cgXI3HmQovgnTOJWrRQ9YPYZY.Ao1Ei7uEfJSZkvUhmBKwSA; AMP_7268c9db0f=JTdCJTIyZGV2aWNlSWQlMjIlM0ElMjJmMjM3YWUzZi02YTQ4LTQzMzQtODk1Ny01MzVmOWNmZmJhYmQlMjIlMkMlMjJ1c2VySWQlMjIlM0ElMjJlNmY0N2Y1YS05ZjQ0LTQwNTYtODU5NC1kNTM0MjIxMWI5OTQlMjIlMkMlMjJzZXNzaW9uSWQlMjIlM0ExNzM2MzAyMzQ2MjEwJTJDJTIyb3B0T3V0JTIyJTNBZmFsc2UlMkMlMjJsYXN0RXZlbnRUaW1lJTIyJTNBMTczNjMwMjYzNDg0NyUyQyUyMmxhc3RFdmVudElkJTIyJTNBMjIlMkMlMjJwYWdlQ291bnRlciUyMiUzQTQlN0Q=; _ga_ME15C3DGRL=GS1.1.1736302347.1.1.1736302634.0.0.0"
126
+ token = "__Secure-next-auth.session-token.0=eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIn0..MthtOvg7eoQD9xqX.IuhVv53z9pmKkS538A4lPIE-mOcvNkWjS76H6Tctwt9MbkMO1vKZSnh7oexvweSn_a_CzQH6iDsAqD79fO6R7J6g6hmRjcPUBLHle6fmu7aNrEyuDsLgqJ5p53KKtGpQGqleY-cJr24mXl4caM1U_qJXcE8ZE4GTVdvWWfiMaJ6wyuOatB8X-sa4L578yvW3_QXh8PTauB1ih4IqKXkFTQOQgfPN4mFKJyCxsu4Tf2UdaJbRkimlpt-sFnneMDqTAbOnaz6H4ym0oZSXJuKnIdGaiPSZnAMLZQ82vpKQjzlZW3OJ1UbyCK1oJfH4PwML7Yab2_QOU-xOK8bN6PuHT1kIRGwLKkLwDXOuUGjY61ECQc9xxm6L5ULoFXFaLlcUPKDi4RIwNmYH_LVcmAgYL6zkQr4UWvu6ZN5zW8kXEKwW3MgunjUZp6Vt2OWuJqyKiDwx9IY-kgIfjmhluTSI0Z5SXvuiUmcLBW2YwpppcAv3tEshSh4WolsIn_QUh_LlTHNm9mJM0OA07r5Vteg2gBAYAtxvtHhD7V-8LEjNkv7fgTXqYdM5daYUQjIHpZVygOklgrdQaHahRZnVBR3HxvncIuLbSd9AucV8QfcM6bhdI7ZWmU1bmX0O-KJVdsCHtsK-2zKBgGQ7cj9hD7MlsSjRswDVxUZG9UIDe4XW6m5497jwgafliVAaYPgP78S0ICnNnk4cgyGjvVvml35G2TQYCxzsCwGBvMouDces8NwVmrt52GPoK71XDpHyRj1qilhKi1WC8pstfCuSQuOOmZDQElU4WUT_hFfFS-fe6b0nBZNE9XlhEYspdH000pImYHaUXSDxZStuaPqYaqZpOsE5abEhrVAa8T3u6EQzVavGHRyL_ZK8_7Bhi-AAv8mBm6SSjkDPlZypBu9J06F7NXHUG04B-Gjipq34hEy0ABaeptIM1VeowMr8WFQHV6kTPv9lZDR8pUNo7ZiDbU0e5rcVKUjCvEeod_5M900K4hwYXMt-wcI84acC6lg6k2LhSlCSNWl053gC04iXL_VaUUf3lqNE1HunENdKE60K9FIygU9VP9RzqFI_qeJAs07K6v0k3swNv3bI8GJaJqAyGd-36xDR-3ome2ysDZMWzL6KZ58MOoq4rV5TklOgOscUR8NSn-eFzhS9LaMCCV0ffSLINH6XwF5-v74HvsfGeXYFcIcTO4gh9gIWOMGBSChZrrH_aLrJB4roBNxTN6y_tTU8X6vylaRGIvNgoZRt43FIuNfTJvATQTMAQr5fnLitK3pdhM77WFEflVmCuFXVJTzi1IG0sxMt0n2-a94HzkPGbsWEEbFjeQxNTT_-m5mRWRzNoN64dfWWT9X6VT1_YB--iciHCV8XsL9QHx_NRTce34_tmc-ni3fDQ6AmV1hBleuR6qU7YiOK0x0xAn-YUaNK2bcRWtuXpivVukgcIVS61NdPKzRoeRKrkN60ZcQ87Wh-ssn6GLNzbx3t6NHey2quJZa5nRdrHbbAgSVFyIgN78I0voxK8yLS3edJ9A8FX3SRwmdFF6c9G9-_6CRjDC56OjCuiC5ZdTITfLDCNbXnTWVJIykGSzOQLrK395zuBUgRgzE1KOKJNJRZ58f2I-_mTLs_VHP_bJpqqR4LupAGqSVEhzc1TSKS4o5rsTbW0SrMNrUQ-r4oJ_gf3VoAYumuMhW-ymU4zgxvT9aquXSjUM1vrN8HWxg9YhtMIpxi3ZNmb1tkTP6xRT_jsFBY_wI5pfxMezwNGqYl18SWPbGMdkTtjbGpLk04YmnAK5XX2o93lxS7oHQBVHwS4r4-3vviW8l0FvZVCjHkhgQYoe2szKfWCCqD8QHlXn_jcln1m9kuVp65AAfY6xN-mxTiKUIkFOdM66gW6IWgZU7eBvZmxm8ROMwZNz7BRwHLH7mo5fUwyrABVkY6nzsYwg4mLFZznrWJlC3HVJmupT-OT2rytFOd7o_Q9kbqW4FVx5gmeEa35KhTSHwUNa-HC4mnZWjoEs4C6wwjAAdJt9O0HlAyNJF_qnPuQGrIHz13fJbQ4SURz5vCWyl7Q7x4qIwZGSm5P2ZXTn-kABIiXsRNWpzbOew0VFOcMQ4l4D9u8lgwwfNesyWZEmMkNUD-64fxNIrB52pejsjwCYyoNEQjYxdNc7fNGQsdBK4R20lZlglX3RwPJ5P4hMuu5ERNeKRCxpFTTiEG15SQ7QjmrTs5KNfasCCXfses9UXZXFpLBXHPgO3c9AgKYN-7lF2AGkAv07an7AH97YmVnG9TUPsVPj_kBxoLowtk9vGQSvhMYZtEztmQKS4fDMIbw0WnENYcijxX54ZzriMSAMzAeuNO3Jzl6WOp-n53tGnDziZR_sHZFyN6FG4Phfiz5Chwq550_PBah_nUdRxE_qoDBHg5Zm39hRLq5vgucmvTMo7Kz4-Vr-IM9caKj8OMzbgLXjXdArenNJo9sq3iNOvdDkv915mGYr8g3BszL1fBQ4u9CCvagE-nCmLxaxmoLpTpyBJhoDydMyoi5n__7evIci9CP7QSusqeIgFJ8tHrSpZ3KmTZ_xpOlLgU4PpQDFc_4yXm9ZzukZcBeWnfIn4PdvwtqM2ZsjSellC4o1BdiJ0iUcoSXl-ZA-P1uq_b8RPNVe13YqruGpSkKluUe4G5_mxOwvwHDfstNgYet1pcq9W0K1EDrU4bNkyZoTitYSOHEwsH1LDZ7K7UmjwmBgGpGFHIWcN7uVBKHyX8940IhBo5YvIZAGGNcFXNLdNUqVY57wkRBQon62yTfEPZwqYa_6jIEX7j43OlCreCK2Q2eu916aTYg3YinCz_hlBCOMklczupYqbqO84xsixjQ2NDrd7NuvxameWB-QsIsMdX5XYOihkf5R4u8bDFyhVXgxIsuRkTyF0JdIMhNTEFc0R5aCfWVhzoED13ldJR2fJqM2GhzjACMwY7uHZ8nIQjFXR84j-myXMgmOOxbuv-x1YnOmxZHtdzgPjDqfWM3s3kmrdffwH9YXizo81YAuF1X440KPCt_o9s3ArAl8hVYIw96jQDEWaQ2YuZId8mQbI3_tANygdt6WnDPMW5jvjWz9wK8WYRD8kg0zbF04gaMLZ_jZTEC5WAlNNBRq3W4zKwbBbYUrdm9Bxe71G8moIgo9-3S0158kwGeebHJL4Hrx76P0-iODFE9CXSxxhuD6XYTC4izf7jVmEbWppBQ7skRcXfv2PTr1_7I6BY6JZ3Zzmo-2uDpPwAJp1im4UnRJRovKOajXcLI29KcxvRYy5reDryUFK7teaim0DJMrO2eyYZOPu3SRlTLRWFavZF0yFVLw3g5EgcCEycte_9g8ye3lqGtbqpuIP6j92fgt3ITFRfSh26kerjEdgH5jo8A6jbQulMG0KhlZ6ijgc7NYflCOi1eE2U3jmxnuMW6rtWSzzgW1Hwt9cve6w_VY6iXMQ7GsPQlErquKQpJdxeYSig_t-aYdd1MAGlJ9SlT9rZyjPGdc2Z3k__od8o7ZSw-ctRP4wOl9YkZ2pdMFYLT-RqGZEIshipCl8hhEw6qX_h61RzBTyOHICGNEZQQ-TkbbIrnXKSQDYBs_uUHW3G3-JahyBuCyPkA3W-TC0glRB-ZWsgdzKrbB8GP1LeEIV_aE4dmD7A4l0-eZArS8gbMF9I9h7o1BwtwdUuPcjOqkv9uI4I1tGJsgG5WLllMf3UiKc953NF4hpBqoXbet9SiRZg3dH-3DQyuuerexgPsi0jXH3Kd_teIaJCDk_kvvwl41Q0XQThcn2dy7yolgGaDhMixapZseerVpb1cVw0yUe4SGlhkklgbRbf5eudNTr8sLamCf1lfWEWG2YEaZuROoJeyO0n2vAPbq1920hcru7Gy7d; Path=/; Expires=Sat, 08 Feb 2025 01:04:35 GMT; HttpOnly; Secure; SameSite=Lax"
127
+ token = "__Host-next-auth.csrf-token=b6b37b10948a6156a1a39d09bd43ab6d0867fcd6001987531fe6f86f802bb0aa%7C3afdfd56119e801c5cb80dc96670031c85a2d9a02e8205f38fc5d6128e1a4075; _gcl_au=1.1.386131236.1736384852; _ga=GA1.1.282109674.1736384854; AMP_MKTG_7268c9db0f=JTdCJTdE; _fbp=fb.1.1736384856672.571916090953259055; _clck=2fa0yj%7C2%7Cfsf%7C0%7C1835; x-recraft-referral-code=1f1xoKVYB9; __Secure-next-auth.callback-url=https%3A%2F%2Fwww.recraft.ai%2Fprojects; _uetsid=1d264620ce2611efaf8a0f99cb3bbb99; _uetvid=1d2649e0ce2611efb597376fda548d79; AMP_7268c9db0f=JTdCJTIyZGV2aWNlSWQlMjIlM0ElMjJlMTcxNjRlMy0xMjU4LTQ3ZTYtYTJmYi1jN2JhM2FmNWRiZWUlMjIlMkMlMjJ1c2VySWQlMjIlM0ElMjJlYTNmNmY4NC0zNzNhLTQ0ODgtYTRjMi1mYjgxMzk1YzNiMzElMjIlMkMlMjJzZXNzaW9uSWQlMjIlM0ExNzM2Mzg0ODU2MzQxJTJDJTIyb3B0T3V0JTIyJTNBZmFsc2UlMkMlMjJsYXN0RXZlbnRUaW1lJTIyJTNBMTczNjM4NTAzMTczNyUyQyUyMmxhc3RFdmVudElkJTIyJTNBNjQlMkMlMjJwYWdlQ291bnRlciUyMiUzQTEzJTdE; _clsk=szrjt7%7C1736385032306%7C11%7C1%7Cq.clarity.ms%2Fcollect; _ga_ME15C3DGRL=GS1.1.1736384853.1.1.1736385032.0.0.0; __Secure-next-auth.session-token.0=eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIn0..SyUWD5O3-8Fu7f9K.jbfQGmUTAstB_wL4cyqA7QcbWKp4AFMnouf-WtJnwaPC4gIfu7iuNkXmrvbfp2YsqFJzSIl-5MvZrXt-bhk-DJtwqAdPzTw6sSa33I3IHWSS3TVlVFc9Ze-HT_6dIeMpIiN-rCSNGdpmtkEJLp_3WrCSGPB0NbJLLL_MGg6cQdS5WYz4trehD8sPSQUgYlTw_VaMImqVZOxKujLLgmGfgYdV8nl9p-JmFHMbpfcgn-yXqLca8E50sQOWldPw0p4RqsYyByUANX1POJAW33rm9fsRDHEKtVxOtlW5Hy1jev__V9UqSrhcvH_OQREngiQGYbtD0qLogeUg-vbL0VUAL-9USzXIn2Una3lP04lp3m_NKldiSShXsHJT8RW8IAl7K28ILGilA1fgx0V09JFIHhM4fX-hrPzqoh-BuxaaiF5czEHTtTPLXmnV1UiQgZVmfgliI2e_r9J3WtF-SgSc1Il2cvwxAsp66p5cjixFbpj7AULPXndQniHhTiU9zgDDdv-fEf0arKzW2w0--zwSmYizXMMpNblgxZ9k51CdOBCAM9YGtzDaB-NSA8I9RuHzmgXMvT5GMZSiezuoLdRRcVpuJBz-XF0v9QoQz7SQt6aMaCCTa-fxee--nfYZELu1Uhh90StcuT84VOAlx-wg6FxPEDI6cjlVtKuzcN_RMVYbWKO2z5xLw4zlqyGBleRjt7hNNt-IeCbGuaDxgbUViwhNr_qdh-_ZjQlz_FL4rzlJwPrl6puOsydFF8NIy0MU9oBdelGTtG8LwzNnOW_hGdqEfhXfDP9mzv4Fs4kqGNQxvT0PU2NQ5hIOTb540yHqTGb3kihXPaZL4YregR2-UPRxOM1qmWwgRZ93d9m0BUplhO9s9U2hYoLhp01ID8kiNi2AWp0hRcalh6PwgqSdzgbif3IH8AcHRJpnV2pRSbD7k883O6ukkItWPE-ysv-ak_Hl8FR046xjDaX1ITtyrJmTzFqQ627PGuOt01RmsVMOb1IFCcx4Fr4AYwOMDY0RDk1YxIUUqU4kyMZMVlMrI_ITcrYshdJwdr4k3hNk51gS3QUrhIDnUq93mvUSidSUy_jX47H-ORf9Al5poN3vNJPye9ogASdqRr2psn1UpceMzrejXz_xDSBllWGlSyAmHDlXniKfzGSbRtqET9xRZfy7X0iOGd0WW2Sb9BkI2OE6h2abFkeSmTXJTMaZXhQ244XkhvDVnps1QX4mdSIa1Js0Pb73DcWLV5TR1sTVxm5h9c1l5r-YxWQ9hjF3A43_V0Jp9ATDlcPIjewTqAcPuuNhcQRR6i7pt2CadiFpfT-h7DA1PvPRo7ReySBzDK9VhnlvodflQugnxj5gsRljH6r43s4OrgpJwCtENl-_yw4jDJCCXkJwHfLpSKhLR6CFSM52vrMa9fWg7iW1C4HIVVqyqIwC98-CTe5jYDMKrX_g40oDZL3XEhFCTfzl5o_UfqXJEWlDKZ0D_Aig7iNLDOEq3cwK9QDiP4-bX6jtM1zkltpCY-HPpwTXbtV4iIP6usg9lSJgCDgJjaS39rpBVYSrj-Y_PtPlPW5rJMVkSnp_f_J7uAwQWnluuEpxrb0Ap-vF4Vk4q9gBESbnk3PBg8wfFPC1GesPI4HyG8Jy3oIss8pDXba6D70soJiozgBcPTSxdeDIP1CXsRN2wiItYHeyslQE-_egn8oezT9__8LyVrY8guv14Nu-WGPx3R9xzpHn4TPY3nJQ6bU9H0PlB0qmJLsSh6tWtJ0Yl8-NMlEKr9WkcjOJB-QpFiDEyw3V7r65U5b_BOaNpzRA5OUJ_ZmCfufmyfnHm8R6mE5wqrwUfmxYBRfP_w8_ix58zwTzFsLe7Fii5_J411vqxFHefcljnpgFgf1UIOoAPBUfygBTVdpdJcWzA2QXNI9lKxUIC6pLme9rpNlXE2bCE1cn74qA974x1gBjZ5B_FVsmkYhFRwSboi8ypRFA1F6EWwSNO-LUQH8uVbrDisjjjAX19xq_Sibwq5P-dZMY6aLCuInQjfWic5NGsjjwh4xtBv3FTyt1nvt9SonxdsJi_wvcjEoCVyP7PfYy5Eo-MkOpznzGYc9slQscUhKPihaB7wlAJZxe99tBUHLJI6XoI1o2Z3G4KGRK6PTO_THOTVFBylKTMbg_jvHw63TL4-LNlhJ2efmSjnEZqpGkgIUb8wYSoG3OR-v3H7WPvvAtJAs-NfvQXSGaFZ3O-LnStvyT869zXwP9U6_NZjml7gB9iA0cZVw4o5tAFI5DPVstJAqSrjIW59cpTxxDo2zeBdl8aq5FoKIZ63w8QebUeibLT8_lejsWQtg8RX4WrSTbuZN-gtCsMY4Q-TY4gJtVygtjz44QMzYDXq0G5mlqnPanLvR9tOfZODm8z87e355KdmD7pI305NimlYjMAFECfAaQN4G3oDZiDb85KkO92JXlVwWbo1xfbx4FTikedjY-BI1ErQB5gxTgPo252aw5r9fItydPBE_nuZU211tc41k8IF2F_cbSZ9tUjZz14yb4Ux4RWUdtHs3y7Jh9_5Pj0dnS3dEgJ-7jlhz-v2tmrcgzcEKqDPQGdhKfLl__AMM_11LqMuvj0boYiiaDx8DHN95J_d48um0YvB5IU3sQucEXiRK2j8FpAXc9ptQqPTGdSzz4VhIE0EIzZIV3QqqaRqH6ZEXcNuV_DXwl6HOjui78yu-rpqz50E9fxePaV5LHPbzXp_ZEOLrWonqo9ZAIHzWhCbVM_vMxK7CnrfmhW4ow8l71maoD0ToyTW7J0KbegCnEVyVhAF-IqYc98gq0vEbfgH42JKk07-8v1gVNQ6TZpAbtgajdrRe9XCuR58f_dt7_y8xWLXw_tINMB-x5MLNbdomfSMsit9Vfl29Yr8yD4KIkYhsfhl-nH-7ntrx4KkkLdLoNhKbhdI7o7NO1zdJ22ur7op4YlAWSNq5q-q2uhF3bKTkYhAIJ2FnPZpYmv7NoldLkAML79C7xtbZTJ0ZgXCjxzbEI50-9qvhEMSNm5AjZLrE3tTp6GVJWfIvjb3HmTvEAxR3rRefzzTaKW-MO9t3OurUPood1vkMR7oQzQY_n6DaZKUcxA6L8sK8s2MfEb78h_ZKeKDRAFsnspHdVTYf4xEu_SbXyDYbx2vBU2beXYdhzcdLWff32f3jioAf_q8hk2wKAcj2Spik7Ng-HPbme3XPD0w1b6d266bJ8GIWCUoGmJ9Wm0UalL-ZnoX16yN9El_wfOEoXBFWRe56Ur1ih6ZwZkcuCMZcnUAlXaL3JGgrxtwQjUtuSPSAo7kBZGIS7xXzFL7aJOi9ctqBAJVH0C3g8TJcW7ilF-qzEwrOoo1zWfLQpxMXhg8XKLDzOPAFBwyEOlDaRdoj20aE6NTeWST-X3QEufdM0PE0uB3FAhYWTPyILrAulrIsMJphGU-9sABotQs9apb8Vvekzou3oQ02Nr8n_CHVdDfE7m9I1lOxnB8Yz78oJhBs0WAbcZL9Vy-c-RVBauUMgceqSyQJ3uHR3iWsze4yeVOb4LE4nUxsfBMHQhW-Via3wFpInCCJxS3je2wtiyDTztuMNN8Mxn_GuTJ1i-KkDdvWiAL9c4zg_6HQfsMpLXQXpJ4Ovk-wUAV_NaW9NnVXHR-ygTcsf-BUHEV6dm0EPEk3tNVdlOTMDzXeYmpXn7xSSPuHglNcLnCzbmiANoqs1N5knV9_gVx49MLkYzE2rK_xdAFZUgiR4uujQ16mWNHtzrUUZOWmPu0HrAt2cJsz0snCfakahNceO3di-MQCDppMUnoSlq2ZnRcsMYu_n7mjOP6suimdawk9Ik1y_RpJ1O92UjKl63SqTtknADbwywiDiLr62V59YEUxKhGIaNrg; __Secure-next-auth.session-token.1=q9Nx6cKkfa0ZpdMRs7aQg5BCEByRK-upafTx1BRw9yA7R30AXoMtQfz6ExKBqsbpyVHqJFnLBQuZqJEi_Bmk34FeYJrUjD1ddsPmEex0ftUACPSugpdrgsTxc8CN0f4a8t_m8wTHxhQWbE5_GT-A4Hb4T68U9pDkzA1kWMVHkQ6h1x7HyW_Ykh1KXejgZFJBhdvv4dAKpv0ckYCNXwJVgVwCKGCNikx-ubtZ-5XDX5ZquUNzVEGpx1cr-F4e0-aw8CDQmdZ0Zh7VHV5DKL7SkQW20FHjpiK-J6gdkkjGFX7EybuEM1KCZ-KI_9hna9JzZc52f_yyoN05hqTzWmfh4aFeQL3j1nErMn23uiava2BfKIoQ59dKWOO5zos66El2TtIFerhUFJDyt8sUOcybCWsmmf05oSeLzHeaJYBA8j7SP.FYyhM198a9ZP-Ep6hZRQNQ"
128
+ token = "__Host-next-auth.csrf-token=b6b37b10948a6156a1a39d09bd43ab6d0867fcd6001987531fe6f86f802bb0aa%7C3afdfd56119e801c5cb80dc96670031c85a2d9a02e8205f38fc5d6128e1a4075; _gcl_au=1.1.386131236.1736384852; _ga=GA1.1.282109674.1736384854; AMP_MKTG_7268c9db0f=JTdCJTdE; _fbp=fb.1.1736384856672.571916090953259055; _clck=2fa0yj%7C2%7Cfsf%7C0%7C1835; x-recraft-referral-code=1f1xoKVYB9; __Secure-next-auth.callback-url=https%3A%2F%2Fwww.recraft.ai%2Fprojects; _uetsid=1d264620ce2611efaf8a0f99cb3bbb99; _uetvid=1d2649e0ce2611efb597376fda548d79; __Secure-next-auth.session-token.0=eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIn0..WqFwC8QbnjwUkMxi.RYqiKFIQTVwJF5azhoAlOscRiivJrpL5fRaArVfPstl4mOB0YTUtp3l7TMKbGEsM8nV2DW68eRarLqQeVjq0eKzD4MNuvuKy0y0phQTMs7vKlKCM5UgWMxz3Uz30f7GmH6s4D0aFDGbJ6upcsUqZ0BMwY2KkXId5uilh0jrDhinv5ZCIQA0o89Nf_lOcapGVsEi4OdYhe8fDDuhaI8x8TnkTQcDjwijc44WWUQg5vXJusYAVRbXR0-hO_fLl7verrBVKWPKXsP_tbRSk2TIqTavXoP-RcHI55R-vQD0G3lbl0hkjiDhWZ8SG2g3_KkbnF9XovoilxZpguNUSqLLHevldctBrMDG9vnoG6FRVwmPF8T5IxVYnkCb5IiyIJLMAOWlVlcNmKM2n2N-_iW21-skyqq0O0sUpukL0gFLp5UlpKtXUbTOMaD60Ja0D7n2THWO3yWrlTmXJ641igNxsAfb8iMuN9XpVSLTGmSVoojIQkbb41Br5ZmAdlH3D9X2u7cZD756HkOG4LhWp6rjaoUwDY1XBMjSxs9lOOGQGnr7xfmVC7fSWDuRhHxwF0C9PUbndo3zv12A437VASNXzuJ7W-nvBP0i7PUw09bKgYTsUyytFwBiRFW_Lj3l5Fcu0qrXQBosvdZvgS3QNEMqOWPWiyQBI5NatP8ZSQuquzvNDRt4typ5T6YP6NEqqMwSLRL6mwA1_ZquU78kygEUFYq5fUtUoWoW8CdbHsZe8DvN0fIhW2iAguey5hj7Dwg3xstOM-aDyRMbY-ML__zTi0w-TB0XzJ9NSXe8a1b3vvjzNqNWmeUwF4eT2KAloIvKRrlWZRC3OedxI8aRvoVGcnWqpRsvZNgUY3blfxG9lR1KrNgAcDhcRB3Si3APLlUT5Uv0MzfZKwWtZ16lLNmY6bRnlQO_IGRVvGWp0tXiwMAR6vXEhq3FqEOMy9W1JW2MVS9s_mpOrloRr4CIxtDbrE90Pjhm1wPzC43OMGsm2gxU8JTaRtWftnZ6EUlO2rski0Ep2Kl_iTwotDVPZY3RV9B8GWTfmJ8mU2EPTjlKcpeyPGiLdZkI4r5HGT6Bt9sv3JXQeU64ecmhbDEr9zrDVRDJlt3nGsQlDq21xkOsQw6nyFjg0cw_i5sGqkyLEQgkfVHGaNuUy_aP7us-DHeLCgusM0qFjsGh6TqY536AxlecGZr5Xh7FOEgVcNHfmT8gTRGPJuqMU_c8kyWqhihx_vm1dTTkHF0O4LJ3W9c-8sAQhsHvzsGGoEBkCi3TaTlBAcJ1_4ix1ITj21Ix1Udmc4cvNE5NRW_aBiwGQvrKlT7qvpxzzHZd-zpF2jAN78bGm6-jK2WSy59-y4FN9ZUrG1QwG5n-3rFiSl-pqRY3Bybx4ANnEU1cbf-0rnL-R3rcbCOEcMOf3CWc78PraUa7sqoV4tnmJdSwjmpVPmptOs2b9bbg6B7XqAsYX9PlkSAztLJQlVIUD4et0O1MOf5nSCmOG-x4cb1wtw8O2ZKea963732M9MUpiw9jBn2sAQbH5cufD0xlXGuVzn8gkDzOb007V018t--yJmbYcvDgMbp7VPESkQdtVMScn-jcpzNrdqDRIUjehEseVuULZhlv4HKopQjNrnyEenZb7kbeogISNKAa5zVKLKots1L9kTHkyziYdcv8bETD53c1CiIekupheQO32zXFc5KDeoTyQNi0O4KKpSCKSlp8GtmNt1q5--y8z1mmFru0xQeTcFG7rgm-q3u6lIQuxRM5n-hHdosYhRsJmX_AOlzw7UpagoV90hzxfGQwa5Oa9OHfoisF5-ueVsibMe-mqWct6OVV9Rke_7lPfjhVbQUS1-Y73MJJF1H5uW8b88GZqPIFxNTb8P-1ACFCWFpvCJRHjJ2rNP5AF1VtSKIgitmaNVwmqcwCwXOpGO7KqSqfKiIBGgik2t7T_joJjwZetvjpnZ-apNCJpmqtJc1rEfDGDBQvaXEuIJ3aB2nB1f4JNqxUatW9D_QMuLHvKmKPlRBQRtHMA7p-XFaJHQm4U-yhz75eGMCfcT7ik-3i8QNFJwwrZcWVbDNqdExmpV0hiE9fjgbmhU5OkoysPgrZfn0WSfo1Cdccb8WQuR8Kn_xj9cCqUjLm79mrsfUzLDsQOgIRBeiUoAH3oQKfI5Iqp2tquOHWb8SyZwENkpKPnipX_60G7BxcqpB5WI6-3MIilfH9itqdYYKImNncuVEzNZX-b2STHKxX1ESCgeb-Hq6SUuEwQtHK0lFnw_Jom8he6ShB-n4a2s6dBO4zT_awB4LZF42-ri7ewlONh2WzLTGW-lK7JNLPEfeXWR-jye7ALwGA2UEtXisMUhEMpuCt2La5EiCKBaw6deGygVbJ2t6dEbkSSEAoZONHctgqmZ9dNMaXC9Hyyo5sPKZPo8uXtJSslyHJlMvgY4W8Uj41IP3Umw1-j_FjYjWiOc5BFAvSbLczgWoXWqbcDa2plXnUmty9OTHw02dZb4opkhLi43ONSodwHqHGWyTgH3kdRhFYV-2uwkSVF8nZG0RHxEDGB3knN6HoHji2LJcn9TwZzOQDaG5sJzrVI12ZLPUx3KSxrygZ6d7KFJpXmi7jXe2kyExrO_HtpNebKq__h776GvuWsx887t2T-DoA1XFoNxbSWIDBaaRrrrMQnTubI7Dl6gs3ea7z2hmDFYcwrqb0r9bDBgx7yhSPjn3AgoRs43NYRe1gVoURcHduyFS6DM7wncDDMIyz3bgEtvJ4YPI2oPIH74MHDJOR1yUt6OmGMqIs_XbuekM9bi91iNAxwcIgdnYWTGUiR2Vk6O2VqqheOwAXn-_G16oGocsaLoOzu22ywuK6xNcleypBc_vyaPuoDmIlxxNvApurczDFHbTOvlq19G-CcP34gKlW_VLe_1KSA8W5cnH28yllZhzTUs14UpxLC6uV6VarxVqrUCLeWgvJ3Nc0pXiBE4ZwZuwWMzYWGSi2VtPeShJwhYpRlyt-AZLgXmNMpN4cGqxaFLhiD3m3M5r8ZzsBE_krksF4x-dfptxE18DRSZ5mQ9iF8BEl73VX5s88L4hDBZn9up6hAG-rTVVr3JOT85KYhvXfll92al7kgmYxNF3UVsHBTX8XxtiQx14wKm5gRwLtbBxeuD7HdU3cyqZgvrBrQlISH8p5ghqULI_BFIuXEN8uD52RE3vXrb9gUEMSAWeo7CS_xx-XwSVsfbnMBwzqFe7AcYDGfe38zpCi-oh9sCJjAAXN-KD40UZB7ld-kx3DrDjmRLnp1-gO0Sl4CKti9MFZboe_gxODqG070Cok0niSsoxJdLnfhcYw_JN5fWfhJOzTxRP7l4CXq74ji7ltw7N_EgYUzIONC3nAxZrU746soEvWcUNLmXyYEow3XWyTddMcenK7tLkveetyVXrQRnR7-n0y-WHKpA0dN8ZdnCM4j_z7wkoO4FN3GxGAL9Y0hi--9th4XbP8p_r6VLJ4SQNIuIKuyxRB6Y2NPFNnrOLlXuZiM9OUuFGO8Kz2qU0mPswV805wFCNh2bGNnSPOamizz4LernNK84t6_GM4NgoN7yTaBEX-Ng1EvnJhEfcZtwI3oSXBuLn7ufbWupHMJZfggEZ2FV5y3-w6SQymrpUSBnDZh1LpmibK1cGnJjAB7-1sWmTGUnV75j-qWMh97bPqJi8Uty5tYbgpulO-P4n1KTuCqGXbLDwINu_FNcmOEreQYJcEX1i0QOEoVblu5eJqC5kBPkBPEC1bVhNl3D2Ufdd3i2XCbxvfCoyc5eysl35Od1Hxst-KLZ4tmYI_pTNlI-JqwuKC2RUzJXVqiXpmaAk8jT592uFJs28jlLiB4TmWQ3L48kCnLaya0c_AFhGecdHEbbEy; __Secure-next-auth.session-token.1=twI76zjwWsf6cDBVpwTSlQGNTowWAosArlcPKymXnMkcNljStgeFkom9k95zpiXIDpFsiJB-PTLuGBj_3HmZUpEm5MuHUgbQKSFPio2l7wRW6a98uWicEzF4fcCjGz9OrDwBUnUxjcNnXue0alwa6AhF5T1B79ibZHjBtGq4IYsmt_l9mHR4wsRNXV0w_zCOhQfH1R8sczNff7eKcVnDo14FeadzZEqSNoKGU1C_6TZMOa7zzETGQPekh279ylKUaOZ9EshI_P3aRw71XNEdE2C-uOMZPuJIA3zPBvgYxdfppBXENTh8quyQAzHFmIMubPMg2zCNTD6ANvC5eTEH1B675sA9emI9DnC2UJVmNBJQPIpkncxQd98eaeYS0tHaUyzD7HQFJBFQOCmEh-ORdrJVoab1A36idPdzLusO0Tm1e.ZrEoUqMjNICG-4yAF6sAPw; AMP_7268c9db0f=JTdCJTIyZGV2aWNlSWQlMjIlM0ElMjJlMTcxNjRlMy0xMjU4LTQ3ZTYtYTJmYi1jN2JhM2FmNWRiZWUlMjIlMkMlMjJ1c2VySWQlMjIlM0ElMjJlYTNmNmY4NC0zNzNhLTQ0ODgtYTRjMi1mYjgxMzk1YzNiMzElMjIlMkMlMjJzZXNzaW9uSWQlMjIlM0ExNzM2Mzg0ODU2MzQxJTJDJTIyb3B0T3V0JTIyJTNBZmFsc2UlMkMlMjJsYXN0RXZlbnRUaW1lJTIyJTNBMTczNjM4NTAzMDcxOSUyQyUyMmxhc3RFdmVudElkJTIyJTNBNjElMkMlMjJwYWdlQ291bnRlciUyMiUzQTEyJTdE; _clsk=szrjt7%7C1736385030758%7C10%7C1%7Cq.clarity.ms%2Fcollect; _ga_ME15C3DGRL=GS1.1.1736384853.1.1.1736385031.0.0.0"
129
+ token = "__Host-next-auth.csrf-token=b6b37b10948a6156a1a39d09bd43ab6d0867fcd6001987531fe6f86f802bb0aa%7C3afdfd56119e801c5cb80dc96670031c85a2d9a02e8205f38fc5d6128e1a4075; _gcl_au=1.1.386131236.1736384852; _ga=GA1.1.282109674.1736384854; AMP_MKTG_7268c9db0f=JTdCJTdE; _fbp=fb.1.1736384856672.571916090953259055; _clck=2fa0yj%7C2%7Cfsf%7C0%7C1835; x-recraft-referral-code=1f1xoKVYB9; __Secure-next-auth.callback-url=https%3A%2F%2Fwww.recraft.ai%2Fprojects; _uetsid=1d264620ce2611efaf8a0f99cb3bbb99; _uetvid=1d2649e0ce2611efb597376fda548d79; AMP_7268c9db0f=JTdCJTIyZGV2aWNlSWQlMjIlM0ElMjJlMTcxNjRlMy0xMjU4LTQ3ZTYtYTJmYi1jN2JhM2FmNWRiZWUlMjIlMkMlMjJ1c2VySWQlMjIlM0ElMjJlYTNmNmY4NC0zNzNhLTQ0ODgtYTRjMi1mYjgxMzk1YzNiMzElMjIlMkMlMjJzZXNzaW9uSWQlMjIlM0ExNzM2Mzg0ODU2MzQxJTJDJTIyb3B0T3V0JTIyJTNBZmFsc2UlMkMlMjJsYXN0RXZlbnRUaW1lJTIyJTNBMTczNjM4NTAzMTczNyUyQyUyMmxhc3RFdmVudElkJTIyJTNBNjQlMkMlMjJwYWdlQ291bnRlciUyMiUzQTEzJTdE; _clsk=szrjt7%7C1736385032306%7C11%7C1%7Cq.clarity.ms%2Fcollect; _ga_ME15C3DGRL=GS1.1.1736384853.1.1.1736385032.0.0.0; __Secure-next-auth.session-token.0=eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIn0..SyUWD5O3-8Fu7f9K.jbfQGmUTAstB_wL4cyqA7QcbWKp4AFMnouf-WtJnwaPC4gIfu7iuNkXmrvbfp2YsqFJzSIl-5MvZrXt-bhk-DJtwqAdPzTw6sSa33I3IHWSS3TVlVFc9Ze-HT_6dIeMpIiN-rCSNGdpmtkEJLp_3WrCSGPB0NbJLLL_MGg6cQdS5WYz4trehD8sPSQUgYlTw_VaMImqVZOxKujLLgmGfgYdV8nl9p-JmFHMbpfcgn-yXqLca8E50sQOWldPw0p4RqsYyByUANX1POJAW33rm9fsRDHEKtVxOtlW5Hy1jev__V9UqSrhcvH_OQREngiQGYbtD0qLogeUg-vbL0VUAL-9USzXIn2Una3lP04lp3m_NKldiSShXsHJT8RW8IAl7K28ILGilA1fgx0V09JFIHhM4fX-hrPzqoh-BuxaaiF5czEHTtTPLXmnV1UiQgZVmfgliI2e_r9J3WtF-SgSc1Il2cvwxAsp66p5cjixFbpj7AULPXndQniHhTiU9zgDDdv-fEf0arKzW2w0--zwSmYizXMMpNblgxZ9k51CdOBCAM9YGtzDaB-NSA8I9RuHzmgXMvT5GMZSiezuoLdRRcVpuJBz-XF0v9QoQz7SQt6aMaCCTa-fxee--nfYZELu1Uhh90StcuT84VOAlx-wg6FxPEDI6cjlVtKuzcN_RMVYbWKO2z5xLw4zlqyGBleRjt7hNNt-IeCbGuaDxgbUViwhNr_qdh-_ZjQlz_FL4rzlJwPrl6puOsydFF8NIy0MU9oBdelGTtG8LwzNnOW_hGdqEfhXfDP9mzv4Fs4kqGNQxvT0PU2NQ5hIOTb540yHqTGb3kihXPaZL4YregR2-UPRxOM1qmWwgRZ93d9m0BUplhO9s9U2hYoLhp01ID8kiNi2AWp0hRcalh6PwgqSdzgbif3IH8AcHRJpnV2pRSbD7k883O6ukkItWPE-ysv-ak_Hl8FR046xjDaX1ITtyrJmTzFqQ627PGuOt01RmsVMOb1IFCcx4Fr4AYwOMDY0RDk1YxIUUqU4kyMZMVlMrI_ITcrYshdJwdr4k3hNk51gS3QUrhIDnUq93mvUSidSUy_jX47H-ORf9Al5poN3vNJPye9ogASdqRr2psn1UpceMzrejXz_xDSBllWGlSyAmHDlXniKfzGSbRtqET9xRZfy7X0iOGd0WW2Sb9BkI2OE6h2abFkeSmTXJTMaZXhQ244XkhvDVnps1QX4mdSIa1Js0Pb73DcWLV5TR1sTVxm5h9c1l5r-YxWQ9hjF3A43_V0Jp9ATDlcPIjewTqAcPuuNhcQRR6i7pt2CadiFpfT-h7DA1PvPRo7ReySBzDK9VhnlvodflQugnxj5gsRljH6r43s4OrgpJwCtENl-_yw4jDJCCXkJwHfLpSKhLR6CFSM52vrMa9fWg7iW1C4HIVVqyqIwC98-CTe5jYDMKrX_g40oDZL3XEhFCTfzl5o_UfqXJEWlDKZ0D_Aig7iNLDOEq3cwK9QDiP4-bX6jtM1zkltpCY-HPpwTXbtV4iIP6usg9lSJgCDgJjaS39rpBVYSrj-Y_PtPlPW5rJMVkSnp_f_J7uAwQWnluuEpxrb0Ap-vF4Vk4q9gBESbnk3PBg8wfFPC1GesPI4HyG8Jy3oIss8pDXba6D70soJiozgBcPTSxdeDIP1CXsRN2wiItYHeyslQE-_egn8oezT9__8LyVrY8guv14Nu-WGPx3R9xzpHn4TPY3nJQ6bU9H0PlB0qmJLsSh6tWtJ0Yl8-NMlEKr9WkcjOJB-QpFiDEyw3V7r65U5b_BOaNpzRA5OUJ_ZmCfufmyfnHm8R6mE5wqrwUfmxYBRfP_w8_ix58zwTzFsLe7Fii5_J411vqxFHefcljnpgFgf1UIOoAPBUfygBTVdpdJcWzA2QXNI9lKxUIC6pLme9rpNlXE2bCE1cn74qA974x1gBjZ5B_FVsmkYhFRwSboi8ypRFA1F6EWwSNO-LUQH8uVbrDisjjjAX19xq_Sibwq5P-dZMY6aLCuInQjfWic5NGsjjwh4xtBv3FTyt1nvt9SonxdsJi_wvcjEoCVyP7PfYy5Eo-MkOpznzGYc9slQscUhKPihaB7wlAJZxe99tBUHLJI6XoI1o2Z3G4KGRK6PTO_THOTVFBylKTMbg_jvHw63TL4-LNlhJ2efmSjnEZqpGkgIUb8wYSoG3OR-v3H7WPvvAtJAs-NfvQXSGaFZ3O-LnStvyT869zXwP9U6_NZjml7gB9iA0cZVw4o5tAFI5DPVstJAqSrjIW59cpTxxDo2zeBdl8aq5FoKIZ63w8QebUeibLT8_lejsWQtg8RX4WrSTbuZN-gtCsMY4Q-TY4gJtVygtjz44QMzYDXq0G5mlqnPanLvR9tOfZODm8z87e355KdmD7pI305NimlYjMAFECfAaQN4G3oDZiDb85KkO92JXlVwWbo1xfbx4FTikedjY-BI1ErQB5gxTgPo252aw5r9fItydPBE_nuZU211tc41k8IF2F_cbSZ9tUjZz14yb4Ux4RWUdtHs3y7Jh9_5Pj0dnS3dEgJ-7jlhz-v2tmrcgzcEKqDPQGdhKfLl__AMM_11LqMuvj0boYiiaDx8DHN95J_d48um0YvB5IU3sQucEXiRK2j8FpAXc9ptQqPTGdSzz4VhIE0EIzZIV3QqqaRqH6ZEXcNuV_DXwl6HOjui78yu-rpqz50E9fxePaV5LHPbzXp_ZEOLrWonqo9ZAIHzWhCbVM_vMxK7CnrfmhW4ow8l71maoD0ToyTW7J0KbegCnEVyVhAF-IqYc98gq0vEbfgH42JKk07-8v1gVNQ6TZpAbtgajdrRe9XCuR58f_dt7_y8xWLXw_tINMB-x5MLNbdomfSMsit9Vfl29Yr8yD4KIkYhsfhl-nH-7ntrx4KkkLdLoNhKbhdI7o7NO1zdJ22ur7op4YlAWSNq5q-q2uhF3bKTkYhAIJ2FnPZpYmv7NoldLkAML79C7xtbZTJ0ZgXCjxzbEI50-9qvhEMSNm5AjZLrE3tTp6GVJWfIvjb3HmTvEAxR3rRefzzTaKW-MO9t3OurUPood1vkMR7oQzQY_n6DaZKUcxA6L8sK8s2MfEb78h_ZKeKDRAFsnspHdVTYf4xEu_SbXyDYbx2vBU2beXYdhzcdLWff32f3jioAf_q8hk2wKAcj2Spik7Ng-HPbme3XPD0w1b6d266bJ8GIWCUoGmJ9Wm0UalL-ZnoX16yN9El_wfOEoXBFWRe56Ur1ih6ZwZkcuCMZcnUAlXaL3JGgrxtwQjUtuSPSAo7kBZGIS7xXzFL7aJOi9ctqBAJVH0C3g8TJcW7ilF-qzEwrOoo1zWfLQpxMXhg8XKLDzOPAFBwyEOlDaRdoj20aE6NTeWST-X3QEufdM0PE0uB3FAhYWTPyILrAulrIsMJphGU-9sABotQs9apb8Vvekzou3oQ02Nr8n_CHVdDfE7m9I1lOxnB8Yz78oJhBs0WAbcZL9Vy-c-RVBauUMgceqSyQJ3uHR3iWsze4yeVOb4LE4nUxsfBMHQhW-Via3wFpInCCJxS3je2wtiyDTztuMNN8Mxn_GuTJ1i-KkDdvWiAL9c4zg_6HQfsMpLXQXpJ4Ovk-wUAV_NaW9NnVXHR-ygTcsf-BUHEV6dm0EPEk3tNVdlOTMDzXeYmpXn7xSSPuHglNcLnCzbmiANoqs1N5knV9_gVx49MLkYzE2rK_xdAFZUgiR4uujQ16mWNHtzrUUZOWmPu0HrAt2cJsz0snCfakahNceO3di-MQCDppMUnoSlq2ZnRcsMYu_n7mjOP6suimdawk9Ik1y_RpJ1O92UjKl63SqTtknADbwywiDiLr62V59YEUxKhGIaNrg; __Secure-next-auth.session-token.1=q9Nx6cKkfa0ZpdMRs7aQg5BCEByRK-upafTx1BRw9yA7R30AXoMtQfz6ExKBqsbpyVHqJFnLBQuZqJEi_Bmk34FeYJrUjD1ddsPmEex0ftUACPSugpdrgsTxc8CN0f4a8t_m8wTHxhQWbE5_GT-A4Hb4T68U9pDkzA1kWMVHkQ6h1x7HyW_Ykh1KXejgZFJBhdvv4dAKpv0ckYCNXwJVgVwCKGCNikx-ubtZ-5XDX5ZquUNzVEGpx1cr-F4e0-aw8CDQmdZ0Zh7VHV5DKL7SkQW20FHjpiK-J6gdkkjGFX7EybuEM1KCZ-KI_9hna9JzZc52f_yyoN05hqTzWmfh4aFeQL3j1nErMn23uiava2BfKIoQ59dKWOO5zos66El2TtIFerhUFJDyt8sUOcybCWsmmf05oSeLzHeaJYBA8j7SP.FYyhM198a9ZP-Ep6hZRQNQ"
130
+ token = "_gcl_au=1.1.906962865.1730362257; _ga=GA1.1.435165527.1730362257; _fbp=fb.1.1730362257600.714008794112161913; AMP_MKTG_7268c9db0f=JTdCJTdE; _tt_enable_cookie=1; _pin_unauth=dWlkPU0yWmxPR1JsWkRJdE5qZGlZeTAwTWpNeUxXRmpNVEV0TlRrd1l6RTNZelEwTldZMw; __zlcmid=1OVn8OoYVNvKEWM; __stripe_mid=d21b2291-edb8-4cb1-8fac-05c6a9493ca8d85a3c; _ga_ME15C3DGRL=deleted; _ttp=412qSInHGw3jjdyNR6K4tBIYmNZ.tt.1; __Host-next-auth.csrf-token=5a254fcd5cf01dbe6f4d38ff6653073673eb96145321a4aa4e032c1361db4067%7Cfcc1ced5fcc03aca73a9b3374bfaf0f518079e6802a706311c2428b8b12a5639; _clck=uflztg%7C2%7Cfsf%7C0%7C1765; __Secure-next-auth.callback-url=https%3A%2F%2Fwww.recraft.ai%2F; _ga_ME15C3DGRL=GS1.1.1736384021.94.1.1736384813.0.0.0; _uetsid=3bef14a0cd5c11ef8908d9361f23bf21; _uetvid=a8a766f0975f11ef9b7921e48a0cd258; AMP_7268c9db0f=JTdCJTIyZGV2aWNlSWQlMjIlM0ElMjI2OTE1YzI1My1jMTJjLTQ5ODYtYjM3Ni0xMTI3Y2ZmMTFlMjglMjIlMkMlMjJ1c2VySWQlMjIlM0ElMjJjNDdkY2ZiYi0yOWE5LTQ1Y2EtYWRiZS1hM2ZhYWZiODhkNzQlMjIlMkMlMjJzZXNzaW9uSWQlMjIlM0ExNzM2Mzg0MDIxMjg4JTJDJTIyb3B0T3V0JTIyJTNBZmFsc2UlMkMlMjJsYXN0RXZlbnRUaW1lJTIyJTNBMTczNjM4NDgxNTMzMSUyQyUyMmxhc3RFdmVudElkJTIyJTNBMTQ3JTJDJTIycGFnZUNvdW50ZXIlMjIlM0E0MiU3RA==; _clsk=lpjwif%7C1736384816977%7C21%7C1%7Cq.clarity.ms%2Fcollect; __Secure-next-auth.session-token.0=eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIn0..i9IpV1p6GdtCwBJf.GhX0MZyY886Dpslr3HPr3QQrF4cLCeL14lby_VsLhOfc1VBDE5ZmRX6fYfPtHPJNfYIPlj8U83UVMZyNmiSeRCTLDKKht5oWGdbMS8Q6KCLYzpFtO3wgfROiWTy4Jaq2XdXvTJiFHpHtg4FNsDcKfD-zyCt6-ffuq7gTtKhWl3ie33vu2Y1dBksAadej9hGGsozwQZRju2GaNw2QpWdgbP-cYbojKSFxFkara0-_yZgXYtjlSNXpj-AXI6wmkDi701dyZPHS0i_eNRg4d36SMOLTWqPxtgk-0PjYKGAndHeLlrypt_4HS94WAy5_Ond46YIvFtY6MS5P0wQePXka_kj95uV7_Vj-aBNhcJhOjv7FP2TRvOqjx0aKIS6ilq6ljCIrAp4iC-P-uEpRWxQ7l4VwejsrM1_k8IzatOUFjNxhmTsGQG8t-CaN6zq0GI6SkSXlOj_X6jUIfu7aaT4nvzNM_yDz53P-H90mgl6-6KmHhldPRZPPwA6mOci1sZ2hQp4l4nZCSSXmrJ9KSEIhcqUM599xDL90bBmIyb0LMwa9smXavJFq0dlmjcqGGmfCWmriNf7eSw96ewhOT-bA-yNt7Igmsj0YAV59_FVBicRwPkMSZshfikl0Pxz_pmTQrSllF1WXeyCEflhqncXRXNnl1n23l3rC6XK72fyMX7Q4kB1G3stQpZ8BZ2jaoV4P9RmKWje_ruY30myXj4Kf8Hzh5YjzfxAdVv8aVCOceuAcQCaZzySFSAWV2R7XLONGCOiQqcRyHeP4KzEac-w_w_8AgOpn5Bt0vkzw_roK4WK13mNyrx-sLbAy-Pufuln_6V_hyJiYdPnC3kykTFveaeYNrSTrhOSMSTRWMwbO32apU-6a5l42FWZVQaVRTYw4IN7aOrhbqINzSN-yRlkze_4YfRUqIE6ip6r8OSjsu65WdmA2haUaTlPwSfsJh2zm-SlDRPUlZkUXO1rKlfWccdUarlAyX085fSxs3amQlg5SBe9ziyCH0-1FIY0fJN96dYrNcHXWxUYu01UKbR1IX27OhOj6gmgtUHeZZorJZ_Ce4fnuTfnK65Athovqjy0_U6JXwJoQ9T_we5IlYQ3Rv95ezdbA7HSY49F3PuCxpf_-QujriKIWTGRQ_KbJy3bOxv1dV7mmHvMBumNVOq3VIqyKS3NnjtD2fjGcGWh8sCViU6wOCTERI6lbxMsHL6oMKTvzQuIp80DgKyQOWO5LoIPKtpz4b0mf6A1Xncz0ProBBvL7ZIiFEpiiFztqQJigVTsRirTMOqViOqU4Eht6AIvIczsW6GyuOK7gCgty6RezCHQsSwXD0FfwpvxjCFZQZ4A4ZFatHCirBDv6djBdBJIOJoSVVkoN6_Q2E8U4C7J1J5UQYZZq1fm5xBjEwQBzdP18doD4q7KNsgQIjGU5ZMJsaZgUNAhjU-UyA3BwLXhtmpMGnx9G2Pxf11OgHOUUYKd-DsX4yFrelf0QFe6VI0TMz7V8xpJrW-BTYYmaCupxkyLmwRfTO_HDkbyKoZES2yiCFh-Vfkyxz2gLuBhhryczt4HogMh_CmuHcOWPv6TAuH4QDZpyBWzyThBx3ZKvLfxo87LwbQgRfoediXV2c9DEWTx-pBcMosr1L-GZQ1eTVDVhcmsVshVL9Nb-DYh7C7-d97aq1Wl06Ljsf74xzijQPTgQAMgqwdPOWBg_WvRZP_cxiiz2XsUbbjYW2uQeqFL8dhYmzr8t2ABPpP9_damETeR5bkYA2jOwF6sNwhe0uIXP4xjN2xqzJ4OnSE_zeh1L5bqRajroLnYbRsZ0QwBoqf7am51RFzcyZRvRPKxLbA3rRDqKun41AcC3usyrFw6wX1dBH9IBLfqwP4qVPlwMdpVkQuH6A0rawFDM7ulJ6uYWy5XuiSUGejnBt6LICYki0C3bgOV--932msjQlzwVcWPHGWP634teJ8do0UMDIlII9ogA307POi8j4Ab92QxWLt1DAe3bh-vBkuEvIzmiKvq3RjgP52ysvTlDZtqEi19RkVBJ55aBNAK84oddVNrYIv0-SZ736WxqtpqNQggOkwubG96a9IL2K0nM3lD-IweswFzhd5d2t2GIwDnkRWCn_3sMFblMFGsvof-dbcp2fKgB5BFFtel6DO8cKZiGrFTKNNaTUEIpQYFZueXZMDMhpGFmsbWcABXJAyQk4gl5DR0hY_-zRrEnaBQ5f_wquwpENKFl0tBzVKLi45F3jgrnMYAyyIR4GVrS4x2a3PIBFl2HPwDvPNfuP2lnICf6Bbeh84BhI_V2aCoaxur4OTuc4E1HUM_p0gLq0d3xVpVbmYlDSff7YyrnwP0FdaiTt0dcMKyoGL44W_WdvPete8U6hlNhGSySHp-srMFyl4eMliYAITeiRwwZuYjfnW95-kK1rTm6tiBlpBJcSLEaxe6iZTTJcEAm5MLO07jEny_C6thxrYPug_5Ih8SdM9DOEkqF0slCWne82S8x49dp0pMllCZJAvtdYQbEmtE2KjytyKU5ns6OiraQpFm16fQGpmu7HYQbBU0fwASerwXdMRa6e7lTVGLd2mdDoF9gBdQClA75LyaKdrPg7rkV4x2NOulsFsPSPxhyQl-r0jqc-7qMs0hCbKr8I7O04T5F8Jg0ZWvYvUCvbnfiW767XltnjN_hNy3zQDVjR-4XxlYWmq_wzj7a0U5r9MzISR_DsFEP-mI5qKXfNFUzatM0UmKs-m1YLxm3InlWaA0VH1W5pABHK-npbuHmUlQ5_HBvO0JK84P0iif9M2-KXIEOxzMPLOw9cjs0j98hETINMm2-_6AGcNVrqLAmxrgE9sREJ2YVSweVVxLzi0UvZnjPwOs4qAaM3O2IWy5UZ1cB6bFxAj2HvDBQZ3j04kPxT0Sl33MGQS0Td7J_9ap8r2IBQUof9bOGjjMZHV1YsIcHVC5vCT2EZCovmz1avFFW04o0B2DC-A1kTujPp4SWtxT33470WPSk1CMGK_tKv0w2ou6lTkdGdTWCTDA2uNMVZRGxYwGnGo1q0OkC_a60JlvzPTXbOVcfZu_lcATm-aLt60H9jHuCBmKEvg46B5Qc2TZW3Dwz2T7Tl125jkfPWYEBoVnqB7mNPzhZxaDY3sMd8I0O_FNeNRZ3BEqpJkNWIMOnf8aZ6nCoMw8DdpL1POGvAZ-XhedkAIICUkJ_SYbvho2lZ3oEIAFxl5arPmQPnIpW4Abry_PWYvZx7kVXA0frDjYZv89NlctrGKMBfyYZVKTRnoQkXf-K6JGCZcySJuuWOuADGQfNTarwuy6M9e7k83d-mFZTYHhllPQakN8xXZ2ExTBDIHH7D9y1qKoOwb22Lg8hjv7cD9uq21iZTmD2K45D4W76Yrz1rX3n8t1tv1l1HTSB3UeuoCGaT5LkCSDKsHhM5iTChuIfxVefYBZh9We-TiU8QyHOxud1zOpE8Op6Ky9dUaCnUl5YUxeDntgeceaqP20ZmjlwvADd6P8UOjvvq-uZAhSlJ9Q4rYmO4pP2lfaRuo-thyrowHwOETPC8kmsMcm43MqFCzNNqnyXDHuyggjexTrk8T0swpo-eeBpvElZcP9-U5bFbS5vyb5H4tOLspSo8JcxsRVT4b32plWTRT-EQpAosu5IQNO-MQAGKnwqgzwhiePc8_K-6QbfDaZ7UwvCxJBvp8Ql5NRgMAUiViLuxD4BkUaKXuouXp9UcvyW6qrJFHVzyDVjTKW7oG0lYLhRREePp3OLqLUH-upSEWFMnkOljpn_kE3W_F62fnyC-6YG25kGKhw8bMpIVaKLAfe0SXto8pKrQPb4cLKTTTPHXCz9PKtO1xE2qHIE2Ys1k7-JlkTK6AvoY6sI6t3EPL-1rXPmB8P; __Secure-next-auth.session-token.1=yFjlKz8Sy8-L5993eI09Y6KcuLf5lx4fC99u6YFtWp_BQLG0Mk0GI7RllqeDlxU-5QO9VYeBlTNh-sp8SJ7hkNv5hpMnWaCE-7sPMHLcJAFNA5Sx43a4aJglZFEkCI8RFe4HGAusm9qQG18PBByIKj_ZhLnsS9zXaGQ5YL7eX9QVWrpkowuA35WfksZp3mvwkGR_6LrmpR7kmmK2_C_X5e5SsXTXhUfrBT8r79I39P18D9E1S-hT31ETyajNNgw-u3BHbET4buRhT043W_c3x2RwIc6Fzs5DAeTUFR39e3_jT-ge_RIG5-1YRhvtEXHVUInRVeoYorqzN62JO-8RDeBNry6wUGR9O7QCLOH_a0w.976ySjYDq2pGONqc_zx8Ng"
131
+
132
+ # arun(get_access_token())
133
+ data = {
134
+ "model": "recraftv3",
135
+ "prompt": "Draw an astronaut | Style: any (recraft-v3)",
136
+ "style": "any",
137
+ "response_format": "url",
138
+ "size": "1152x2048",
139
+ "n": 2,
140
+ }
141
+ request = RecraftImageRequest(
142
+ # prompt='一条猫',
143
+ **data
144
+ )
145
+
146
+ with timer():
147
+ arun(generate(request, token=token))
148
+ # tokens = [token]
149
+
150
+ # tokens = list(arun(aget_spreadsheet_values(feishu_url=FEISHU_URL, to_dataframe=True))[0]) | xfilter_
151
+ #
152
+ # r = arun(check_token(tokens))
@@ -0,0 +1,11 @@
1
+ #!/usr/bin/env python
2
+ # -*- coding: utf-8 -*-
3
+ # @Project : AI. @by PyCharm
4
+ # @File : __init__.py
5
+ # @Time : 2024/11/22 15:17
6
+ # @Author : betterme
7
+ # @WeChat : meutils
8
+ # @Software : PyCharm
9
+ # @Description :
10
+
11
+ from meutils.pipe import *
@@ -0,0 +1,65 @@
1
+ #!/usr/bin/env python
2
+ # -*- coding: utf-8 -*-
3
+ # @Project : AI. @by PyCharm
4
+ # @File : images
5
+ # @Time : 2024/11/22 15:22
6
+ # @Author : betterme
7
+ # @WeChat : meutils
8
+ # @Software : PyCharm
9
+ # @Description :
10
+
11
+ from meutils.pipe import *
12
+ from meutils.schemas.replicate_types import FEISHU_URL, ReplicateRequest, ReplicateResponse
13
+ from meutils.config_utils.lark_utils import get_next_token_for_polling
14
+
15
+ from replicate import Client
16
+
17
+
18
+ @alru_cache(ttl=3600)
19
+ async def get_version(model="black-forest-labs/flux-schnell", token: Optional[str] = None):
20
+ replicate = Client(api_token=token)
21
+
22
+ model = await replicate.models.async_get(model)
23
+ version = model.latest_version.id
24
+ return version
25
+
26
+
27
+ async def create_task(request: ReplicateRequest):
28
+ token = await get_next_token_for_polling(FEISHU_URL)
29
+ replicate = Client(api_token=token)
30
+
31
+ version = await get_version(request.ref, token)
32
+ prediction = await replicate.predictions.async_create(
33
+ version=version,
34
+ input=request.input # {"prompt": "Watercolor painting of an underwater submarine"})
35
+ )
36
+ return ReplicateResponse(**prediction.dict(), system_fingerprint=token)
37
+
38
+
39
+ async def get_task(task_id, token: Optional[str] = None):
40
+ replicate = Client(api_token=token)
41
+
42
+ prediction = await replicate.predictions.async_get(task_id)
43
+
44
+ return ReplicateResponse(**prediction.dict())
45
+
46
+
47
+ if __name__ == '__main__':
48
+ request = ReplicateRequest(
49
+ # ref="wolverinn/ecommerce-virtual-try-on",
50
+ ref="k-amir/ootdifussiondc", # warm
51
+ input={
52
+ "seed": 0,
53
+ "n_steps": 20,
54
+ "category": "lowerbody",
55
+ "garm_img": "https://replicate.delivery/pbxt/Ka5cuvEAmCHuL1zHrxatGHeFOs6GJZ5wjMQQg4qCmaRsNm2B/pants.jpeg",
56
+ "vton_img": "https://replicate.delivery/pbxt/Ka5cuBJhEHKSvUB7dHIwffZUI9oeifAwzAhJhLvy4kIeooII/woman.png",
57
+ "n_samples": 1,
58
+ "image_scale": 2
59
+ }
60
+ )
61
+ task = arun(create_task(request))
62
+
63
+ # arun(get_task(task.id))
64
+
65
+ # arun(get_task("77e6rwn5v5rmc0ck964acn75dc"))