+
    kHàjäy  ã                  ój  a € 0 t $ R t^ RIHt ^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	H
t
 ^ RIHtHtHtHtHtHt ^ RIt^ RIHt ^ RIHtHtHtHt ^ RIHtHtHtHtHtH t H!t!H"t"H#t# ]PH                  ! ]%4      t&Rt'R	R
RRRRRRRRRRRRR/RR
RRRRRRRRRRR/RR
RRR RR!RR"RR#RR/R$R
R%RR&RR'RR(RR)RR//t(R*])R+&   ]*! ](4      t+Rt,R,R-R.R/R0R1/t-R2t.R3t/^
t0Rwt1Rxt20 Rymt3Rzt4R{t5R|t6^t7R4t8R5t9R6t:R7t;]*! 0 R}m4      t<0 R~mt=R8t>^t?R9t@R:R;R< 3R=R=R> 3R?R@RA 3RBR=RC 3/tARD])RE&   RtBRF RG ltCRH RI ltDRJ RK ltERL RM ltFR€RN RO lltGRP tHRQ RR ltIRS RT ltJRU RV ltKRW RX ltLRY RZ ltMR[];R\R/R] R^ lltNR_ R` ltORa Rb ltPRc Rd ltQRe Rf ltRRg Rh ltSRi Rj ltTRk Rl ltURm Rn ltVRo Rp ltWRq Rr ltX ! Rs Rt]4      tYRu Rv ltZR# )�u5  Krea image generation backend: ``Krea 3`` (generates and edits) and ``Krea 2`` Medium / Large / Medium Turbo.

Krea's API is asynchronous: submit returns a ``job_id`` polled at ``GET
/jobs/{job_id}``; ``generate()`` hides that (submit, poll every 2s with light
backoff, cache the result URL locally). Selection: ``model`` kwarg â†’
``KREA_IMAGE_MODEL`` â†’ ``image_gen.krea.model`` â†’ ``image_gen.model`` (when one
of our IDs) â†’ :data:`DEFAULT_MODEL`. Docs: https://www.krea.ai/docs/developers/krea-3/overview
and https://docs.krea.ai/developers/krea-2/overview
)ÚannotationsN)ÚPath)ÚAnyÚCallableÚDictÚListÚOptionalÚTuple)Ú
get_secret)ÚDEFAULT_ASPECT_RATIOÚresolve_aspect_ratioÚsave_url_imageÚsuccess_response)	ÚErrorFnÚHttpFailureÚStaticImageGenProviderÚcollect_source_imagesÚerror_factoryÚload_image_gen_configÚ	post_jsonÚprompt_required_errorÚresolve_static_modelzhttps://api.krea.aizkrea-3ÚdisplayzKrea 3Úspeedz#~5s (1K) / ~40s (2K, high thinking)Ú	strengthszmGenerates and edits existing images from instructions; keeps products, characters, logos and text consistent.Úpricez\$0.03 (1K) / $0.06 (2K), +$0.02 (1K) or $0.07 (2K) per reference image, +$0.02 high thinkingÚpathz/generate/image/krea/krea-3ÚeditTÚupscaleFzkrea-2-mediumzKrea 2 Mediumz~15-25szCIllustration, anime, painting, expressive styles. Faster + cheaper.z9$0.030 (text) / $0.035 (style refs) / $0.040 (moodboards)z"/generate/image/krea/krea-2/mediumzkrea-2-largezKrea 2 Largez~25-60szIPhotorealism, raw textured looks (motion blur, grain), expressive styles.z9$0.060 (text) / $0.065 (style refs) / $0.070 (moodboards)z!/generate/image/krea/krea-2/largezkrea-2-medium-turbozKrea 2 Medium Turboz~8-15su:   Fastest Krea 2 â€” medium quality at lower latency / cost.z$$0.015 (text) / $0.0175 (style refs)z(/generate/image/krea/krea-2/medium-turbozdict[str, dict[str, Any]]Ú_MODELSÚ	landscapez16:9Úsquareú1:1Úportraitz9:16Ú1Kg333333ã?g       @g      @gÍÌÌÌÌÌô?g     €f@z/generate/enhance/krea/enhancez!Hermes-Agent/1.0 (krea-image-gen)ÚhttpÚ	api_errorc                ó   € R V RV  2# )zKrea poll failed (z
) for job © ©Újob_idÚdetails   &&ÚD/home/ubuntu/.hermes/hermes-agent/plugins/image_gen/krea/__init__.pyÚ<lambda>r-   d   s   € Ð3EÀfÀXÈZÐX^ÐW_Ñ1`ó    Útimeoutc                ó   € R V  RV 2# )zKrea poll timed out for job z: r(   r)   s   &&r,   r-   r-   e   s   € Ð4PÐQWÐPXÐXZÐ[aÐZbÑ2cr.   Úinvalid_jsonÚinvalid_responsec                ó   € R V 2# )z!Krea poll returned invalid JSON: r(   r)   s   &&r,   r-   r-   f   s   € ÐBcÐdjÐckÑ@lr.   Údeadlinec                óH   € R T  R\        \        4       RT;'       g    R R2# )ú	Krea job z did not complete within zs (last status: ÚunknownÚ))ÚintÚ_POLL_TIMEOUT_SECONDSr)   s   &&r,   r-   r-   g   s0   € Ø
�F�8Ð4ÜÔ$Ó%Ð
&Ð&6°v×7JÐ7JÀÐ6KÈ1ñ	Nr.   z0dict[str, tuple[str, Callable[[str, Any], str]]]Ú_POLL_FAILURESc               ó   € V ^8„  d   QhRR/# ©é   Úreturnúdict[str, Any]r(   )Úformats   "r,   Ú__annotate__rB   o   s   € ÷ #ñ #˜>ñ #r.   c                 ó   € \        4       # )zERead ``image_gen`` (the krea section lives under ``image_gen.krea``).)r   r(   r.   r,   Ú_load_krea_configrD   o   s   € ä Ó"Ð"r.   c               ó   € V ^8„  d   QhRR/# r=   r(   )rA   s   "r,   rB   rB   t   s   € ÷ 8ñ 8�~ñ 8r.   c                 óh   € \        4       P                  R 4      p \        V \        4      '       d   V # / # )Úkrea)rD   ÚgetÚ
isinstanceÚdict)Úsections    r,   Ú_krea_sectionrL   t   s,   € ÜÓ!×%Ñ% fÓ-€GÜ  ¬$×/Ò/ˆ7Ð7°RÐ7r.   c               ó   € V ^8„  d   QhRR/# ©r>   r?   Úboolr(   )rA   s   "r,   rB   rB   y   s   € ÷ ?ñ ? ñ ?r.   c                 ó8   € \        4       P                  R4      RJ# )z;``image_gen.krea.fallback_to_fal``; on unless set to false.Úfallback_to_falF)rL   rH   r(   r.   r,   Úfallback_to_fal_enabledrR   y   s   € ä‹?×ÑÐ0Ó1¸Ð>Ð>r.   c               ó    € V ^8„  d   QhRRRR/# )r>   Úfailurer   r?   rO   r(   )rA   s   "r,   rB   rB   ~   s   € ÷ _ñ _ ð _°ñ _r.   c                ó|   € V P                   R8H  ;'       g'    V P                   R8H  ;'       d    V P                  R8H  # )zîOnly failures that prove Krea created no job: no server accepted the request, or the
gateway answered 429, which it documents as "no job was created". A dropped connection,
a timeout or a 5xx may have happened after Krea accepted the job.Úunreachabler%   é­  )ÚkindÚstatus)rT   s   &r,   Ú_fallback_eligiblerZ   ~   s6   € ð �<‰<˜=Ñ(×^Ð^¨W¯\©\¸VÑ-C×-]Ð-]ÈÏÉÐZ]ÑH]Ð^r.   c               ó    € V ^8„  d   QhRRRR/# )r>   ÚexplicitúOptional[str]r?   ztuple[str, dict[str, Any]]r(   )rA   s   "r,   rB   rB   …   s   € ÷ $ñ $˜]ð $Ð6Pñ $r.   c           	     óD   € \        \        \        R RV \        4       R7      # )ÚKREA_IMAGE_MODELrG   )Úenv_varÚ
config_keyr\   Úconfig)r   r   ÚDEFAULT_MODELrD   )r\   s   &r,   Ú_resolve_modelrd   …   s"   € ÜÜ”Ð(:ÀvÐX`Ü Ó"ô$ð $r.   c                 ól  €  ^ RI Hp  ^ RIHpHp  T! R4      pTe	   YA8w  d   R# Tf   \        R4      '       d   R#  T ! R4      #   \
         d"   p\        P                  RT4        Rp?R# Rp?ii ; i  \
         d    Rp Lji ; i  \
         d"   p\        P                  RT4        Rp?R# Rp?ii ; i)	a  Managed gateway config on the managed path, else ``None``. Managed when the stored
``image_gen`` selection is ``nous`` (or legacy ``use_gateway: true``), or never-configured with
no ``KREA_API_KEY``; an explicit vendor selection pins direct. Never raises (discovery scans).)Úresolve_managed_tool_gateway)ÚNOUS_MANAGED_PROVIDERÚread_selectionz/Managed Krea gateway resolution unavailable: %sNÚ	image_genÚKREA_API_KEYrG   z*Managed Krea gateway resolution failed: %s)	Útools.managed_tool_gatewayrf   Útools.tool_backend_helpersrg   rh   Ú	ExceptionÚloggerÚdebugr
   )rf   rg   rh   ÚexcÚselecteds        r,   Ú_resolve_managed_krea_gatewayrr   ‹   s«   € ðÝKßTðÙ! +Ó.ˆð Ò Ô AÙØÒœJ ~×6Ò6ÙðÙ+¨FÓ3Ð3øô ô Ü�‰ÐFÈÔLÝûðûô
 ô ØŠðûô ô Ü�‰ÐAÀ3ÔGÝûðús?   ‚A ‘A4 ½B ÁA1ÁA,Á,A1Á4BÂBÂB3ÂB.Â.B3c               ó   € V ^8„  d   QhRR/# rN   r(   )rA   s   "r,   rB   rB   ¤   s   € ÷ ñ  Tñ r.   c                 óV   €  ^ RI Hp  \        V ! R4      4      #   \         d     R# i ; i)z<Cheap, offline-friendly probe for managed Krea availability.©Úis_managed_tool_gateway_readyrG   F)rk   rv   rO   rm   ru   s    r,   Ú_managed_krea_gateway_readyrw   ¤   s-   € ðÝLäÑ1°&Ó9Ó:Ð:øÜô Úðús   ‚ ™(§(c               ó    € V ^8„  d   QhRRRR/# )r>   Úvaluer]   r?   Ústrr(   )rA   s   "r,   rB   rB   ®   s   € ÷ ñ ˜}ð °ñ r.   c                ó  € V \        4       P                  R4      3 Fb  p\        V\        4      '       g   K  VP	                  4       P                  4       \        9   g   KD  VP	                  4       P                  4       u # 	  R# )zTCoerce ``creativity`` kwarg (then config) to a valid Krea value; default ``medium``.Ú
creativityÚmedium)rL   rH   rI   rz   ÚstripÚlowerÚ_VALID_CREATIVITY)ry   Ú	candidates   & r,   Ú_resolve_creativityr‚   ®   s_   € àœ]›_×0Ñ0°Ó>Ó?ˆ	Ü�i¤×%Ô%¨)¯/©/Ó*;×*AÑ*AÓ*CÔGXÖ*XØ—?‘?Ó$×*Ñ*Ó,Ò,ñ @ñ r.   c               ó(   € V ^8„  d   QhRRRRRRRR/# )r>   Ú
auth_tokenrz   ÚmanagedrO   Ú	json_bodyr?   zdict[str, str]r(   )rA   s   "r,   rB   rB   ¶   s(   € ÷ ñ ˜ð ¨$ð ¸4ð ÀNñ r.   c               óŒ   € R RV  2R\         /pV'       d   RVR&   V'       d"   \        \        P                  ! 4       4      VR&   V# )ÚAuthorizationzBearer z
User-Agentzapplication/jsonzContent-Typezx-idempotency-key)Ú_USER_AGENTrz   ÚuuidÚuuid4)r„   r…   r†   Úheaderss   &$$ r,   Ú_headersr�   ¶   sB   € Ø '¨*¨Ð 6¸ÄkÐR€GßØ"4ˆ�Ñßä'*¬4¯:ª:«<Ó'8ˆÐ#Ñ$Ø€Nr.   c               ó$   € V ^8„  d   QhRRRRRR/# )r>   Úrespr   rp   rm   r?   rz   r(   )rA   s   "r,   rB   rB   À   s!   € ÷ ñ  ð ¨)ð ¸ñ r.   c                óx  € V e   V P                   R,          M
\        V4      p V e   V P                  4       M/ pVP                  R4      p\	        V\
        4      '       d   VP                  R4      pM*VP                  R4      ;'       g    VP                  R4      pT;'       g    T#   \         d    Tu # i ; i)N:Ni,  NÚerrorÚmessager+   )Útextrz   ÚjsonrH   rI   rJ   rm   )r�   rp   ÚfallbackÚbodyr‘   r’   s   &&    r,   Ú_submit_error_messager—   À   s›   € Ø"&Ò"2ˆt�y‰y˜Ž¼¸C»€Hð	Ø"Ò.ˆt�y‰yŒ{°BˆØ—‘˜Ó!ˆÜ�eœT×"Ò"Ø—i‘i 	Ó*‰Gà—h‘h˜yÓ)×?Ð?¨T¯X©X°hÓ-?ˆGØ×"Ð"˜(Ð"øÜô ØŠðús   ¤A&B) ÂB) Â&B) Â)B9Â8B9c               ó    € V ^8„  d   QhRRRR/# )r>   Újobr   r?   rO   r(   )rA   s   "r,   rB   rB   Î   s   € ÷ nñ n�cð n˜dñ nr.   c                ó¦   € \        V \        4      ;'       d;    V P                  R4      \        9   ;'       g    \	        V P                  R4      4      # )uš   ``completed_at`` is a backstop terminal marker for unfamiliar ``status`` enums (Krea adds
pending states â€” backlogged/scheduled/sampling â€” over time).rY   Úcompleted_at)rI   rJ   rH   Ú_TERMINAL_STATESrO   )r™   s   &r,   Ú_is_terminalr�   Î   sB   € ô �cœ4Ó ×mÐm c§g¡g¨hÓ&7Ô;KÑ&K×&lÐ&lÌtÐTW×T[ÑT[Ð\jÓTkÓOlÐmr.   Útimeout_secondsÚon_errorc               ó0   € V ^8„  d   QhRRRRRRRRRRR	R
/# )r>   Úbase_urlrz   r„   r*   rž   ÚfloatrŸ   zOptional[Any]r?   r   r(   )rA   s   "r,   rB   rB   Ô   sN   € ÷ C[ñ C[ØðC[Ø"ðC[Ø,/ðC[ØEJðC[àðC[ð 	ñC[r.   c          	     ó  a€ V  RV 2p\        VRRR7      p\        p\        P                  ! 4       V,           pRp	SRJ p
R V3R llp \        P                  ! V4       \        V\        ,          \        4      p \        P                  ! WV^R7      pVP                  4         TP+                  4       p\-        T\.        4      '       d/   \-        TP                  R4      \0        4      '       d
   TR,          p	\3        T4      '       d   T# \        P                  ! 4       T8¼  g   Kß  T! RT	RT\5        T4      4      #   \        P                   d†   pTP                  e   TP                  P                  M^ pT
'       g   \        P                  RYâ4       T\         9  g   \        P                  ! 4       T8¼  d   T! R	TR
Yâ4      u Rp?#  Rp?EK‰  Rp?i\        P"                  \        P$                  3 dU   pT
'       g   \        P'                  RY-4       \        P                  ! 4       T8¼  d   T! RTRY-4      u Rp?#  Rp?EK   Rp?i\(         dL   pT
'       g   h \        P                  ! 4       T8¼  d   \        P'                  RY-4        Rp?R#  Rp?EKT  Rp?ii ; i  \(         dU   pT
'       g   \        P'                  RY-4       \        P                  ! 4       T8¼  d   T! RTRY-4      u Rp?#  Rp?EK¶  Rp?ii ; i)ue  Poll ``/jobs/{job_id}`` until terminal; returns the job dict or ``None`` when it gave up.

With ``on_error(kind, detail)`` (main path) a fatal poll failure returns that callback's
result; without it (best-effort Enhance) failures only log. ``kind`` âˆˆ ``http`` (detail =
status) / ``timeout`` / ``invalid_json`` / ``deadline`` (detail = last status seen).
z/jobs/F©r…   r†   Nc          
     ó,   € V ^8„  d   QhRRRRRRRRRR/# )r>   rX   rz   r+   r   ÚwarningÚ	warn_argsr?   r(   )rA   s   "r,   rB   Ú$_poll_krea_job.<locals>.__annotate__å   s/   € ÷ &ñ &�cð & 3ð &°ð &À#ð &È#ñ &r.   c                óP   <€ Sf   \         P                  ! V.VO5!   R # S! W4      # ©N)rn   r¦   )rX   r+   r¦   r§   rŸ   s   &&&*€r,   Úgive_upÚ_poll_krea_job.<locals>.give_upå   s(   ø€ ØÒÜ�NŠN˜7Ð/ YÔ/ÙÙ˜Ó%Ð%r.   )rŒ   r/   z Krea poll failed (%d) for job %sr%   z(Krea enhance poll failed (%d) for job %sz(Krea poll transient error for job %s: %sr/   z(Krea enhance poll gave up for job %s: %sz.Krea poll returned invalid JSON for job %s: %sr1   rY   r4   z)Krea enhance job %s did not finish in %ds)r�   Ú_POLL_INITIAL_INTERVALÚtimeÚ	monotonicÚsleepÚminÚ_POLL_BACKOFFÚ_POLL_MAX_INTERVALÚrequestsrH   Úraise_for_statusÚ	HTTPErrorÚresponseÚstatus_codern   r‘   Ú_RETRYABLE_POLL_STATUSESÚTimeoutÚConnectionErrorr¦   rm   r”   rI   rJ   rz   r�   r9   )r¡   r„   r*   rž   rŸ   Újob_urlrŒ   Úintervalr4   Úlast_statusÚenhancer«   r�   rp   rY   r™   s   &&&$d           r,   Ú_poll_krea_jobrÀ   Ô   sQ  ø€ ð �
˜&  Ð)€GÜ�z¨5¸EÔB€GÜ%€HÜ�~Š~Ó /Õ1€HØ!%€KØ˜$Ð€G÷&ð &ð Ü�
Š
�8ÔÜ�x¤-Õ/Ô1CÓDˆð	Ü—<’< À"ÔEˆDØ×!Ñ!Ô#ð.	Ø—)‘)“+ˆCô �cœ4× Ò ¤Z°·±¸Ó0AÄ3×%GÒ%GØ˜h�-ˆKÜ˜×ÒØˆJÜ�>Š>Ó˜xÖ'ÙØ˜KØ;¸VÄSÈÓEYó[ð [øôI ×!Ñ!ô 	Ø14·±Ò1I�S—\‘\×-Ò-ÈqˆFßÜ—‘Ð?ÀÔPàÔ5Ô5¼¿ºÓ9IÈXÔ9UÙ˜v vÐ/YÐ[aÓjÕjÞûÜ× Ñ ¤(×":Ñ":Ð;ô 	ßÜ—‘ÐIÈ6ÔWÜ�~Š~Ó 8Ô+Ù˜y¨#Ð/YÐ[aÓgÕgÞûÜô 	ßØÜ�~Š~Ó 8Ô+Ü—‘ÐIÈ6ÔWÝÞûð	ûô ô 	ßÜ—‘ÐOÐQWÔ]Ü�~Š~Ó 8Ô+Ù˜~¨sÐ4^Ð`fÓlÕlÞûð	úso   Á;(D< Â$J$ Ä<J!Å-GÅ?AGÇJ!Ç&J!Ç8J!Ç9AIÈ;J!ÉJ!ÉJ!É9JÊJ!Ê$LÊ/AK>Ë1LË>Lc               ó    € V ^8„  d   QhRRRR/# )r>   r™   zOptional[dict[str, Any]]r?   r]   r(   )rA   s   "r,   rB   rB     s   € ÷ 	ñ 	Ð5ð 	¸-ñ 	r.   c                ó’  € \        V \        4      '       d   V P                  R4      MRp\        V\        4      '       g   R# VP                  R4      p. \        V\        4      '       d   TM. OVP                  R4      N FC  p\        V\        4      '       g   K  VP                  4       '       g   K3  VP                  4       u # 	  R# )zMFirst result URL: ``result.urls[]`` per Krea's job docs, else ``result.url``.ÚresultNÚurlsÚurl)rI   rJ   rH   Úlistrz   r~   )r™   rÃ   rÄ   r�   s   &   r,   Ú_extract_result_urlrÇ     s“   € ä",¨S´$×"7Ò"7ˆS�W‰W�XÔ¸T€FÜ�fœd×#Ò#ÙØ�:‰:�fÓ€DØS¤
¨4´× 6Ò 6™¸BÐSÀÇÁÈEÓARÓSˆ	Ü�i¤×%Ô%¨)¯/©/×*;Ô*;Ø—?‘?Ó$Ò$ñ Tñ r.   c               ó0   € V ^8„  d   QhRRRRRRRRRRRR	/# )
r>   r¡   rz   r„   Ú	image_urlÚpromptr…   rO   r?   r]   r(   )rA   s   "r,   rB   rB   &  s<   € ÷ $ñ $Øð$Ø"ð$Ø/2ð$Ø<?ð$ØMQð$àñ$r.   c          	     óf  € RVR\         RV/p \        P                  ! V  \         2\	        WRR7      V^R7      pVP                  4        VP                  4       ;'       g    / P                  R4      p\        T\        4      '       d	   T'       g   \        P                  R
4       R	# \        YT4      p	\        T	\        4      '       d   T	P                  R4      R9   d   \        P                  RT4       R	# \        T	4      #   \         d"   p\        P                  RT4        R	p?R	# R	p?ii ; i)u¡   Krea Enhance on ``image_url`` â†’ enhanced URL, or ``None`` on any failure (best-effort: an
upscale failure must never destroy an already-successful generation).rÉ   Úimage_scaling_factorrÊ   Tr¤   )rŒ   r”   r/   r*   zKrea Enhance submit failed: %sNz+Krea Enhance submit response missing job_idrY   z1Krea Enhance job %s did not complete successfully>   ÚfailedÚ	cancelled)Ú_ENHANCE_SCALE_FACTORr´   ÚpostÚ_ENHANCE_PATHr�   rµ   r”   rH   rm   rn   r¦   rI   rz   rÀ   rJ   rÇ   )
r¡   r„   rÉ   rÊ   r…   Úpayloadr�   r*   rp   r™   s
   &&&&$     r,   Ú_enhance_imagerÓ   &  s   € ð ˜IÐ'=Ô?TÐV^Ð`fÐg€GðÜ�}Š}Øˆjœ˜Ð(´(¸:ÐbfÔ2gØ "ô&ˆð 	×ÑÔØ—)‘)“+×#Ð# ×(Ñ(¨Ó2ˆô �fœc×"Ò"¯&Ü�‰ÐDÔEÙÜ
˜¨vÓ
6€CÜ�cœ4× Ò  C§G¡G¨HÓ$5Ð9PÔ$PÜ�‰ÐJÈFÔSÙÜ˜sÓ#Ð#øô ô Ü�‰Ð7¸Ô=Ýûðús   ŽAD Á"D ÄD0ÄD+Ä+D0c               ó(   € V ^8„  d   QhRRRRRRRR/# )	r>   rÉ   r]   Úreference_image_urlsúOptional[list[str]]Úlegacy_refsr   r?   ú	list[Any]r(   )rA   s   "r,   rB   rB   @  s,   € ÷ +ñ +Øð+Ø4Gð+ØVYð+àñ+r.   c                óê  € \        W4      p\        V\        4      '       d   TM.  Fm  p\        V\        4      '       d:   VP	                  4       '       d"   VP                  VP	                  4       4       KP  KR  V'       g   K\  VP                  V4       Ko  	  \        4       p. pV FC  p\        V\        4      '       d   Wu9   d   K!  VP                  V4       VP                  V4       KE  	  VR\         # )z±``image_url`` + ``reference_image_urls`` first, then legacy ``image_style_references``
(URL strings or Krea ref objects, passed through); strings deduped in order; capped at 10.N)	r   rI   rÆ   rz   r~   ÚappendÚsetÚaddÚ_MAX_STYLE_REFERENCES)rÉ   rÕ   r×   ÚrefsÚrefÚseenÚdedupedÚrs   &&&     r,   Ú_collect_style_refsrã   @  s¿   € ô
 ,¨IÓL€DÜ(¨´d×;Ò;‰{ÀÒCˆÜ�cœ3×ÒØ�y‰y�{Š{Ø—‘˜CŸI™I›KÖ(ñ ç‰SØ�K‰K˜Öñ Dô “€DØ€GÛˆÜ�aœ×ÒØŒyÙØ�H‰H�QŒKØ�‰�qÖñ ð Ð)Ô)Ð*Ð*r.   c               ó$   € V ^8„  d   QhRRRRRR/# )r>   rÞ   rØ   Úfailr   r?   z*tuple[list[Any], Optional[dict[str, Any]]]r(   )rA   s   "r,   rB   rB   W  s$   € ÷ $ñ $Ø
ð$Ø"ð$à/ñ$r.   c           
     ó¾  € ^ RI Hp . p^ pV  EFÛ  p\        V\        4      '       d   VP	                  R4      MTp\        V\
        4      '       d*   VP                  4       P                  \        4      '       d   VP                  V4       K  \        V4      P                  4       p V! \        V4      4       TP                  4       '       g   . T! RT 2R4      3u #  TP                  R4      ;_uu_ 4       p	T	P                  \         T,
          ^,           4      p
RRR4       T\%        X
4      ,          pT\         8”  d   . T! R
\         R,          R R2R4      3u # \&        P(                  ! TP*                  4      ^ ,          ;'       g    RpRT R\,        P.                  ! T
4      P1                  R4       2pTP                  \        T\        4      '       d	   / TCRT/CMT4       EKÞ  	  VR3#   \         d!   p. T! \        T4      R4      3u Rp?u # Rp?ii ; i  + '       g   i     EL; i  \"         d   p. T! RT RT R	2R4      3u Rp?u # Rp?ii ; i)zµEmbed local image files as data URIs; URLs and data URIs pass through unchanged. A ref is
a Krea 2 ``{url, strength}`` object or a Krea 3 source string; legacy objects pass through.)Úraise_if_read_blockedrÅ   Úinvalid_image_urlNzReference image not found: ÚrbzReference image unreadable: z (r8   z"Local reference images total over Úgz$ MB; resize them or pass public URLsÚsource_too_largez	image/pngúdata:z;base64,Úasciii   )Úagent.file_safetyrç   rI   rJ   rH   rz   r   Ú
startswithÚ_REMOTE_REFERENCE_PREFIXESrÚ   r   Ú
expanduserÚ
ValueErrorÚis_fileÚopenÚreadÚ_MAX_LOCAL_REFERENCE_BYTESÚOSErrorÚlenÚ	mimetypesÚ
guess_typeÚnameÚbase64Ú	b64encodeÚdecode)rÞ   rå   rç   ÚinlinedÚtotal_bytesrß   Úsourcer   rp   ÚfhÚdataÚmimeÚdata_uris   &&           r,   Ú_inline_local_imagesr  W  s  € õ
 8à€GØ€KÜˆÜ#-¨c´4×#8Ò#8�—‘˜”¸cˆÜ˜&¤#×&Ò&¨&¯,©,«.×*CÑ*CÔD^×*_Ò*_Ø�N‰N˜3ÔÙÜ�F‹|×&Ñ&Ó(ˆð	;Ù!¤# d£)Ô,ð �|‰|�~Š~Ø‘tÐ9¸&¸ÐBÐDWÓXÐXÒXð	bØ—‘˜4—” BØ—w‘wÔ9¸KÕGÈ!ÕKÓL�÷ !ð 	”s˜4“yÕ ˆØÔ3Ô3Ø‘tØ4Ô5OÐRWÕ5WÐXYÐ4Zð [2ð 2Ø3EóGð Gò Gô ×#Ò# D§I¡IÓ.¨qÕ1×@Ð@°[ˆØ˜4˜& ¬×)9Ò)9¸$Ó)?×)FÑ)FÀwÓ)OÐ(PÐQˆØ�‰´:¸cÄ4×3HÒ3HÐ/˜#Ð/˜u hÒ/Èh×Wñ5 ð6 �Dˆ=Ðøô% ô 	;Ø‘tœC ›HÐ&9Ó:Ð:×:ûð	;ú÷ !—�ûäô 	bØ‘tÐ:¸6¸(À"ÀSÀEÈÐKÐM`ÓaÐa×aûð	búsZ   Â&G1ÃH3Ã7$HÄH3Ç1HÇ<HÈHÈHÈH0È*H3È0H3È3IÈ>IÉIÉIc               ó0   € V ^8„  d   QhRRRRRRRRRRR	R/# )
r>   rÊ   rz   Úkrea_arr|   Ú
style_refsrØ   Úkwargsr@   r?   r(   )rA   s   "r,   rB   rB   ~  s<   € ÷ ñ ØðØðØ+.ðØ<EðØO]ðàñr.   c                ó°  € R V RVR\         RV/p\        VP                  R4      \        4      '       d   VR,          VR&   \         F]  pVP                  V4      p\        V\        4      '       g   K,  \        V\
        4      '       d   KD  RTu;8:  d
   ^d8:  g   KU  M KY  WuV&   K_  	  VP                  R4      VP                  R4      r˜\        V\        4      '       d   V'       d   W…R&   V'       d6   V U
u. uF%  p
\        V
\        4      '       d   RV
R\        /MT
NK'  	  up
VR	&   \        V	\        4      '       d   V	'       d   V	R
,          VR&   V# u up
i )rÊ   Úaspect_ratioÚ
resolutionr|   ÚseedÚstylesÚ
moodboardsrÅ   ÚstrengthÚimage_style_references:Né   Niœÿÿÿ)	ÚDEFAULT_RESOLUTIONrI   rH   r9   Ú_K2_SLIDERSrO   rÆ   rz   Ú!_DEFAULT_STYLE_REFERENCE_STRENGTH)rÊ   r  r|   r	  r
  rÒ   Úsliderry   r  r  rß   s   &&&&&      r,   Ú_build_payloadr  ~  s/  € ð 	�&˜.¨'°<ÔASÐUaÐcmð€Gô �&—*‘*˜VÓ$¤c×*Ò*Ø  �.ˆ�‰ßˆØ—
‘
˜6Ó"ˆÜ�eœS×!Ô!¬*°U¼D×*AÔ*AÀdÈeÖFZÐWZ×FZÒFZØ#�F‹Oñ ð  Ÿ™ HÓ-¨v¯z©z¸,Ó/GˆJÜ�&œ$×Ò§FØ"�Ñßñ "ó-
á!�ô LVÐVYÔ[^×K_ÒK_ˆU�C˜Ô%FÑGÐehÒhÙ!ñ-
ˆÐ(Ñ)ô �*œd×#Ò#¯
Ø *¨2¥ˆ�ÑØ€Nùò-
s   Ã6+Ec               ó8   € V ^8„  d   QhRRRRRRRRRRR	RR
RRR/# )r>   r¡   rz   r„   Ú
model_pathrÒ   r@   r…   rO   Úmodel_idrå   r   r?   ú.tuple[Optional[str], Optional[dict[str, Any]]]r(   )rA   s   "r,   rB   rB   ˜  sN   € ÷ $ñ $Øð$Ø"ð$Ø03ð$Ø>Lð$ØW[ð$Øgjð$à
ð$ð 4ñ$r.   c                óÜ  aa€ \        V  V 2\        WRR7      V^R\        R7      w  poSEe   R VV3R llpSP                  R8X  dƒ   SP                  SP
                  r©\        P                  R	Wš4       V'       d9   R
T	u;8:  d   R8  d*   M M&V	R8X  d   RMRV R2pRV! RV RV	 RV
 RV 2R4      3# RV! SP                  R4      3# SP                  R8X  d   RV! RR4      3# SP                  R8X  d   RV! RSP
                   2R4      3# RV! SP                  SP                  4      3# VP                  R4      p\        V\        4      '       d	   V'       g   RS! RR4      3# VR3# )z`POST the generation request to the model's submit path; ``(job_id, None)`` or ``(None, error)``.Tr¤   ÚKrea)rŒ   rÒ   r/   ÚlabelÚerror_messageNc               ó$   € V ^8„  d   QhRRRRRR/# )r>   r‘   rz   Ú
error_typer?   r@   r(   )rA   s   "r,   rB   Ú!_submit_job.<locals>.__annotate__¢  s&   € ÷ 	añ 	a˜sð 	a°ð 	a¸ñ 	ar.   c                ó2   <€ / S! W4      CR \        S4      /C# )Úfallback_eligible)rZ   )r‘   r"  rå   rT   s   &&€€r,   Úsubmit_failÚ _submit_job.<locals>.submit_fail¢  s"   ø€ Ø`‘d˜5Ó-Ð`Ð/BÔDVÐW^ÓD_Ñ`Ð`r.   r%   zKrea submit failed (%d): %si�  éô  rW   u<   Krea's shared-key concurrency cap was hit â€” retry shortly.zModel 'u¨   ' may not be enabled/priced on the Nous Portal's Krea gateway. Set KREA_API_KEY to use Krea directly, or pick a different model via `hermes tools` â†’ Image Generation.z)Nous Subscription Krea gateway rejected 'z' (HTTP z): z. r&   r/   zKrea submit timed out (30s)r1   z&Krea returned invalid JSON on submit: r2   r*   z#Krea submit response missing job_id)r   r�   r—   rX   rY   r’   rn   r‘   r"  rH   rI   rz   )r¡   r„   r  rÒ   r…   r  rå   Úsubmit_bodyr&  rY   Úerr_msgÚhintr*   rT   s   &&&&&&f      @r,   Ú_submit_jobr,  ˜  sœ  ù€ ô
 %Øˆ*�Z�LÐ!Ü˜ÀÔEØ ¨6ÔAVôXÑ€K�ð Ó÷	añ 	að �<‰<˜6Ô!Ø%Ÿn™n¨g¯o©o�GÜ�L‰LÐ6¸ÔHç˜3 &Ö.¨3×.àV\Ð`cÔVcÑRØ˜h˜Zð (;ð ;ð ð
 ™[Ø?À¸zð JØ#˜H C¨ y°°4°&ð:àó!ð !ð !ð ™ W§]¡]°KÓ@Ð@Ð@Ø�<‰<˜9Ô$Ø™Ð%BÀIÓNÐNÐNØ�<‰<˜>Ô)Ø™Ð'MÈgÏoÉoÐM^Ð%_ÐasÓtÐtÐtØ‘[ §¡°×0BÑ0BÓCÐCÐCØ�_‰_˜XÓ&€FÜ�fœc×"Ò"¯&Ø‘TÐ?ÐASÓTÐTÐTØ�4ˆ<Ðr.   c               ó(   € V ^8„  d   QhRRRRRRRR/# )	r>   r™   r@   r*   rz   rå   r   r?   r  r(   )rA   s   "r,   rB   rB   ¿  s,   € ÷ "ñ "Ø	ð"Ø!$ð"Ø,3ð"à3ñ"r.   c                ó   € V P                  R4      pV P                  R4      R8X  dE   \        V\        4      '       d   VP                  R4      MRpRT! RT RT;'       g    R 2R	4      3# V P                  R4      R
8X  d   RV! RV R2R
4      3# \        V\        4      '       g   RV! RR4      3# \        V 4      pVf   RV! RR4      3# VR3# )zCResult URL of a terminal job; ``(url, None)`` or ``(None, error)``.rÃ   rY   rÍ   r‘   Nr6   z	 failed: zunknown errorr&   rÎ   z was cancelledz)Krea job completed but result was missingÚempty_responsez"Krea result contained no image URL)rH   rI   rJ   rÇ   )r™   r*   rå   rÃ   ÚerrÚresult_image_urls   &&&   r,   Ú_terminal_result_urlr2  ¿  så   € ð �W‰W�XÓ€FØ
‡w�wˆxÓ˜HÔ$Ü%/°¼×%=Ò%=ˆf�j‰j˜Ô!À4ˆØ‘T˜I f X¨Y°s×7MÐ7M¸oÐ6NÐOÐQ\Ó]Ð]Ð]Ø
‡w�wˆxÓ˜KÔ'Ø‘T˜I f X¨^Ð<¸kÓJÐJÐJÜ�fœd×#Ò#Ø‘TÐEÐGWÓXÐXÐXÜ*¨3Ó/ÐØÒØ‘TÐ>Ð@PÓQÐQÐQØ˜TÐ!Ð!r.   c               ó$   € V ^8„  d   QhRRRRRR/# )r>   r\   r   Úmetar@   r?   rO   r(   )rA   s   "r,   rB   rB   Ñ  s&   € ÷ ^ñ ^ ð ^¨Nð ^¸tñ ^r.   c                óÊ   € \        V \        4      '       d   V # \        4       P                  R4      p\        V\        4      '       d   V# \        VP                  RR4      4      # )z[Precedence: explicit kwarg > ``image_gen.krea.upscale`` config > per-model catalog default.r   F)rI   rO   rL   rH   )r\   r4  Úcfg_upscales   && r,   Ú_upscale_requestedr7  Ñ  sN   € ä�(œD×!Ò!ØˆÜ“/×%Ñ% iÓ0€KÜ$ [´$×7Ò7ˆ;Ð]¼TÀ$Ç(Á(È9ÐV[ÓB\Ó=]Ð]r.   c               ó8   € V ^8„  d   QhRRRRRRRRRR	R
RRRRR/# )r>   rÊ   rz   r  rÉ   r]   rÕ   rÖ   r
  r@   r…   rO   rå   r   r?   ú/tuple[dict[str, Any], Optional[dict[str, Any]]]r(   )rA   s   "r,   rB   rB   Ù  sN   € ÷ ñ ØðØðØ*7ðØObðàðà%)ðà18ðð 5ñr.   c           	     óX  € \        W#VP                  R4      4      p\        W\        VP                  R4      4      Wt4      pV'       d)   \         F  w  ršW¨9   g   K  W†! RV	 RV
 R2R4      3u # 	  VP                  R4      '       d!   \        VR,          V4      w  VR&   pVe   W‹3# VR3# )zRKrea 2 request body: the pictures given are style references whose look is copied.r  r|   z2Managed Krea (Nous Subscription) does not support z2. Set KREA_API_KEY to use Krea directly, or omit `z`.Úunsupported_argumentN)rã   rH   r  r‚   Ú_MANAGED_UNSUPPORTEDr  )rÊ   r  rÉ   rÕ   r
  r…   rå   r	  rÒ   ÚwhatÚargr0  s   &&&&&&&     r,   Ú_krea2_payloadr?  Ù  sÅ   € ô
 % YÀfÇjÁjÐQiÓFjÓk€JÜ˜VÔ.AÀ&Ç*Á*È\ÓBZÓ.[Ð]gÓp€Gçß-‰IˆDØŽ~Ø ØHÈÈð OGØGJÀeÈ2ðOà*ó!,ð ,ò ,ñ .ð ‡{�{Ð+×,Ò,Ü1EÀgÐNfÕFgÐimÓ1nÑ.ˆÐ(Ñ)¨3ØŠ?Ø�<ÐØ�Dˆ=Ðr.   c               ó4   € V ^8„  d   QhRRRRRRRRRR	R
RRR/# )r>   rÊ   rz   r  rÉ   r]   rÕ   rÖ   r
  r@   rå   r   r?   r9  r(   )rA   s   "r,   rB   rB   ð  sF   € ÷ ñ ØðØðØ*7ðØObðàðà")ðð 5ñr.   c                óÜ  € \        \        P                  \        W#4      4      4      p\	        VR\
         V4      w  rxVe   / V3# \        VP                  R4      ;'       g    R4      P                  4       p	RT RV	\        9   d   T	M\        RVP                  R4      R8X  d   RMR/p
V'       d   WzR	&   MWR
&   \        VP                  R4      \        4      '       d   VR,          V
R&   V
R3# )z¤Krea 3 request body: the pictures given are edited; resolution and thinking mode are priced.
An edit sends no aspect ratio, so Krea keeps the picture's own framing.Nr  Ú rÊ   Úthinking_modeÚthinkingÚhighÚfastÚ
image_urlsr  r  )rÆ   rJ   Úfromkeysr   r  Ú_MAX_KREA3_REFERENCE_IMAGESrz   rH   ÚupperÚ_KREA3_RESOLUTIONSr  rI   r9   )rÊ   r  rÉ   rÕ   r
  rå   ÚsourcesrG  r0  r  rÒ   s   &&&&&&     r,   Ú_krea3_payloadrM  ð  sÜ   € ô ”4—=‘=Ô!6°yÓ!WÓXÓY€GÜ*¨7Ð3OÔ4OÐ+PÐRVÓW�O€JØ
‚Ø�3ˆwˆÜ�V—Z‘Z Ó-×3Ð3°Ó4×:Ñ:Ó<€Jà�&Ø JÔ2DÔ$D‘jÔJ\Ø 6§:¡:¨jÓ#9¸VÔ#C™Èð€G÷
 Ø *�Òà")�ÑÜ�&—*‘*˜VÓ$¤c×*Ò*Ø  �.ˆ�‰Ø�Dˆ=Ðr.   c            	      ó|   € ] tR tRtRtRtRt]t]	t
]! RRRRRR	R
7      tR R ltR R lt]3RRRR/R R llltRtR# )ÚKreaImageGenProvideri	  zXKrea image backend: Krea 3 (generate and edit) and Krea 2 (Medium, Large, Medium Turbo).rG   r  ÚpaiduÙ   Krea 3 â€” generates and edits images ($0.03 at 1K, $0.06 at 2K) â€” and Krea 2 Medium ($0.03), Large ($0.06), Medium Turbo ($0.015) with style transfer and moodboards. Direct key or managed Nous Subscription gateway.rj   zKrea API keyz'https://www.krea.ai/settings/api-tokens)rû   ÚbadgeÚtagÚkeyrÊ   rÅ   c               ó   € V ^8„  d   QhRR/# rN   r(   )rA   s   "r,   rB   Ú!KreaImageGenProvider.__annotate__  s   € ÷ Qñ Q˜dñ Qr.   c                	óN   € \        \        R 4      4      ;'       g    \        4       # )rj   )rO   r
   rw   )Úselfs   &r,   Úis_availableÚ!KreaImageGenProvider.is_available  s   € ä”J˜~Ó.Ó/×PÐPÔ3NÓ3PÐPr.   c               ó   € V ^8„  d   QhRR/# r=   r(   )rA   s   "r,   rB   rU    s   € ÷ 
ñ 
˜nñ 
r.   c           
     	ó  € \        4       P                  R 4      p\        \        V\        4      '       d   TMR4      w  r#VP                  R4      '       d   RRR.R\
        RRR	\        \        4      /# RRR.R\        RRR	R
.\        ORR/# )ÚmodelNr   Ú
modalitiesr“   ÚimageÚmax_reference_imagesÚsupports_upscaleTÚcreative_controlsr|   Úsource_image_roleÚstyle)
rD   rH   rd   rI   rz   rI  rÆ   Ú_KREA3_CONTROLSrÝ   r  )rW  ÚstoredÚ_r4  s   &   r,   ÚcapabilitiesÚ!KreaImageGenProvider.capabilities  sœ   € ô #Ó$×(Ñ(¨Ó1ˆÜ ¬:°f¼c×+BÒ+B¡ÈÓM‰ˆØ�8‰8�F×Òà˜v wÐ/Ð1GÔIdØ" DÐ*=¼tÄOÓ?Tðð ð
 ˜6 7Ð+Ð-CÔEZØ Ð&9¸LÐ;WÌ;Ð;WØ ð
ð 	
r.   rÉ   NrÕ   c               ó0   € V ^8„  d   QhRRRRRRRRRR	R
R/# )r>   rÊ   rz   r  rÉ   r]   rÕ   rÖ   r
  r   r?   r@   r(   )rA   s   "r,   rB   rU  )  sP   € ÷ _Eñ _EØð_EØ),ð_Eà ð_Eà?Rð_Eð ð_Eð 
ñ	_Er.   c          
     	ó  aaa€ T;'       g    R P                  4       p\        V4      p\        P                  VR4      pV'       g   \	        RV4      # \        4       pVe)   VP                  P                  R4      p	VP                  p
M,\        p	\        R4      p
V
'       g   \        RV4      ! RR4      # \        VP                  R4      4      w  r¼\        RWkVR	7      oVP                  R
4      '       d   \        WW4VS4      w  rÞM\        WW4WXRJS4      w  rÞVe   V# \        WšVR,          WØRJVS4      w  opVe   V# . oR VVV3R llp\!        WšSVR7      pS'       d
   S^ ,          # \#        V\$        4      '       g
   S! RR4      # \'        VSS4      w  ppVe   V# Rp\)        VP                  R4      V4      '       d3   \+        WšVWRJR7      pV'       d   TpRpM\,        P/                  R4        \1        \3        VRV 2R7      4      pRVR,          RSRV/pR# F  w  ppVV9   g   K  VV,          VV&   K  	  V'       d
   \6        VR&   \#        VP                  R4      \0        4      '       d   VR,          VR&   \9        VP                  R4      ;'       g    VP                  R4      4      p\;        TY±TRV'       d	   R VR"7      # R!VR"7      #   \4         d$   p\,        P/                  RTT4       Tp Rp?LïRp?ii ; i)$rB  r"   rG   NÚ/rj   uß   KREA_API_KEY not set. Run `hermes tools` â†’ Image Generation â†’ Krea to configure, get a key at https://www.krea.ai/settings/api-tokens, or sign in to a Nous account with the managed Krea gateway enabled (`hermes setup`).Úauth_requiredr\  )r\  rÊ   r   r   c               ó$   € V ^8„  d   QhRRRRRR/# )r>   rX   rz   r+   r   r?   r@   r(   )rA   s   "r,   rB   Ú3KreaImageGenProvider.generate.<locals>.__annotate__Y  s!   € ÷ 	#ñ 	#˜Sð 	#¨#ð 	#°.ñ 	#r.   c                óš   <€ \         P                  V \         R ,          4      w  r#SP                  S! V! SV4      V4      4       SR,          # )r4   éÿÿÿÿ)r;   rH   rÚ   )rX   r+   r"  Úbuildrå   r*   Úpoll_errorss   &&  €€€r,   Ú
poll_errorÚ1KreaImageGenProvider.generate.<locals>.poll_errorY  sC   ø€ Ü .× 2Ñ 2°4¼È
Õ9SÓ TÑˆJØ×Ñ™t¡E¨&°&Ó$9¸:ÓFÔGØ˜r•?Ð"r.   )rŸ   zKrea returned non-dict job bodyr2   Fr   )r…   Tu>   Krea Enhance pass failed â€” returning native-resolution imageÚkrea_)ÚprefixzEKrea image URL %s could not be cached (%s); falling back to bare URL.r  r*   ÚupscaledÚupscale_factorr›   r  rG  r^  r“   )r^  r\  rÊ   r  ÚproviderÚmodalityÚextra))r  Úkrea_aspect_ratio)r|   r|   )rC  rC  )r~   r   Ú_ASPECT_MAPrH   r   rr   Úgateway_originÚrstripÚnous_user_tokenÚBASE_URLr
   r   rd   rM  r?  r,  rÀ   rI   rJ   r2  r7  rÓ   rn   r¦   rz   r   rm   rÏ   rO   r   )rW  rÊ   r  rÉ   rÕ   r
  Úaspectr  r…   r¡   r„   r  r4  rÒ   r0  rs  r™   r1  rw  Úenhanced_urlÚ	image_refrp   r{  rS  rû   Ú
has_imagesrå   r*   rr  s   &&&$$,                    @@@r,   ÚgenerateÚKreaImageGenProvider.generate)  s  ú€ ð
 —,�,˜B×%Ñ%Ó'ˆÜ% lÓ3ˆÜ—/‘/ &¨%Ó0ˆßÜ(¨°Ó8Ð8ô 0Ó1ˆØÒØ×-Ñ-×4Ñ4°SÓ9ˆHØ ×0Ñ0‰JäˆHÜ# NÓ3ˆJßÜ$ V¨VÔ4ð(ð
 $ó%ð %ô (¨¯
©
°7Ó(;Ó<‰ˆÜ˜V VÀFÔKˆØ�8‰8�F×ÒÜ)¨&¸9Ð\bÐdhÓi‰LˆG�Sä)Ø À&ÐY]ÐJ]Ð_cóe‰LˆGàŠ?ØˆJô "Ø $ v¥,°ÈÐ9LÈhÐX\ó^‰ˆ�àŠ?ØˆJð -/ˆ÷	#ò 	#ô
 ˜X°6ÀJÔOˆßØ˜q•>Ð!Ü˜#œt×$Ò$ÙÐ9Ð;MÓNÐNô !5°S¸&À$Ó GÑÐ˜#ØŠ?ØˆJð ˆÜ˜fŸj™j¨Ó3°T×:Ò:Ü)ØÐ&6¸ÐW[ÐH[ô]ˆLçØ#/Ð Ø‘ä—‘Ð_Ô`ð	)äœNÐ+;ÀeÈHÈ:ÐDVÔWÓXˆIð ".¨w°|Õ/DÀhÐPVÐXbÐdlÐ mˆó C‰IˆC�Ø�gŽ~Ø% c�l��d“ñ C÷ Ü&;ˆEÐ"Ñ#Ü�c—g‘g˜nÓ-¬s×3Ò3Ø$'¨Õ$7ˆE�.Ñ!Ü˜'Ÿ+™+Ð&>Ó?×\Ð\À7Ç;Á;È|ÓC\Ó]ˆ
ÜØ 8ÈÐZ`ß *�W¸eôEð 	Eà06¸eôEð 	Eøô ô 	)Ü�N‰NØWÐYiÐknôð )�Iûð		)ús   Ç7K ËLË!K?Ë?Lr(   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Úprovider_idr  r   Úmodelsrc   Údefault_model_idrJ   ÚsetuprX  rg  r   r†  Ú__static_attributes__r(   r.   r,   rO  rO  	  sk   † Ùbà€KØ€EØ€FØ$ÐÙØ˜6ð hØ >Ð7`ôb€Eõ
Qõ
ð" 0Dñ_Eà#'ð_EàUY÷_Eô _Er.   rO  c               ó   € V ^8„  d   QhRR/# )r>   r?   ÚNoner(   )rA   s   "r,   rB   rB   ‹  s   € ÷ <ñ <�Tñ <r.   c                ó8   € V P                  \        4       4       R# )uG   Plugin entry point â€” wire ``KreaImageGenProvider`` into the registry.N)Úregister_image_gen_providerrO  )Úctxs   &r,   Úregisterr—  ‹  s   € à×#Ñ#Ô$8Ó$:Ö;r.   )zhttp://zhttps://rì   i  0 >   ÚlowÚrawrE  r}   )Ú	intensityÚ
complexityÚmovement)rD  r  )r$   Ú2K>   é˜  é™  é©  rW   r(  éö  é÷  éø  >   rÍ   rÎ   Ú	completed))ztrained styles (LoRAs)r  )r  r  rª   )[Ú__conditional_annotations__rŒ  Ú
__future__r   rü   Úloggingrù   r®   rŠ   Úpathlibr   Útypingr   r   r   r   r   r	   r´   Úagent.secret_scoper
   Úagent.image_gen_providerr   r   r   r   Úplugins.image_gen._commonr   r   r   r   r   r   r   r   r   Ú	getLoggerrˆ  rn   r�  r   Ú__annotations__Ú	frozensetÚKREA_MODEL_IDSrc   r}  r  r  rÝ   rð   rö   r€   r  rd  rK  rI  r­   r³   r²   r:   r¹   rœ   rÑ   rÏ   r‰   r;   r<  rD   rL   rR   rZ   rd   rr   rw   r‚   r�   r—   r�   rÀ   rÇ   rÓ   rã   r  r  r,  r2  r7  r?  rM  rO  r—  )r¥  s   @r,   Ú<module>r±     s¦  øðôõ #ã Û Û Û Û Ý ß =× =ã å )ß qÓ q÷<÷ <õ <ð 
×	Ò	˜8Ó	$€à €ð Ø�8˜WÐ&KØð  EØÐoØÐ-¨v°t¸YÈð	ð Ø�? G¨YØÐZØÐLØÐ4°iÀð	ð Ø�> 7¨IØÐ`ØÐLØÐ3°YÀð	ð ØÐ(¨'°8ØÐQØÐ7¸ÐAkÐmvÐx}ðð'&€Ð	"ó ñ2 ˜7Ó#€à€ð ˜F H¨e°ZÀÐH€ØÐ à$'Ð !ØÐ Ø=Ð ð -Ð Ú4Ð à5€ð -€Ø!Ð ØÐ ð Ð ØÐ Ø€ØÐ á$Ò%MÓNÐ Ú7Ð ð 1€ØÐ Ø1€ð ˆ[Ñ`ÐaØ�	ÑcÐdØÐ'Ñ)lÐmØ�ñ Oð Pð	D€Ð@ó ð \Ð õ#õ
8õ
?õ
_÷$òõ2õõõõnðC[ØMbðC[à"÷C[õL	õ$õ4+õ.$õNõ4$õN"õ$^õõ.ô2EÐ1ô E÷D<r.   