§
    Û×j¸C  ã            
       óD  — d dl Z d dlmZ ddlmZmZ dZdZdZdZ	d	Z
d
Zg d¢ZdZdZdZg d¢Zd„ eD ¦   «         ZdddddddddœdddddddddœgZdZdZd dd!d"d#œd$ddd%d#œd&d'dd(d#œd)œZd*Zd+d d d d d d eed,œ	Zd'dd-œZd.„ Zd8d/„Zd0„ Zd9d2„Zd3„ Zd4„ Zd:d5„Z G d6„ d7¦  «        Z dS );é    N)Úbuild_hf_urlé   )ÚIDEOGRAM4_PROMPT_ENHANCERÚIDEOGRAM4_PROMPT_INFOSzDeepBeepMeep/Ideogram4Ú	ideogram4zQwen3-VL-8B-InstructzDeepBeepMeep/Flux2zflux2_vae.safetensorsÚideogram4_turbotime))z
Quality 48ÚV4_QUALITY_48)z
Default 20ÚV4_DEFAULT_20)zTurbo 12ÚV4_TURBO_12r
   Úeulerç      ð?))ÚEulerr   )zRES 2MÚres_2m)zRES 2SÚres_2sc                 ó   — h | ]\  }}|’ŒS © r   )Ú.0Ú_Úvalues      úJC:\Users\johnn\OneDrive\Documents\AI\models\ideogram4\ideogram4_handler.pyú	<setcomp>r      s   € Ð<Ð<Ð<¡  5�eÐ<Ð<Ð<ó    Úideogram_muzScheduler MuÚfloatg        g      $Àg      $@gš™™™™™©?)ÚidÚlabelÚnameÚtypeÚdefaultÚminÚmaxÚincÚideogram_stdzScheduler Stdg      ü?gš™™™™™¹?g      @a²  ## Ideogram 4

Ideogram 4 is an image model specialized for prompt-following, text rendering, layout, logos, posters, typography, and graphic design.

It was trained on structured JSON captions; use that format for good results. In WanGP, optional Magic Prompt can convert a normal text brief into Ideogram's JSON caption format. Without Magic Prompt, write the structured caption yourself; directly passing plain text is not the upstream-supported prompting workflow.


## Guidance phases

Ideogram 4 uses WanGP guidance phases for CFG switching.

Phase 1 uses Guidance during the high-noise part of denoising. Phase 2 uses Guidance2 after the first switch threshold. If Three Phases is enabled, phase 3 uses Guidance3 after the second switch threshold.

The official presets use two phases: most steps at CFG 7, then final low-noise polish at CFG 3.


## Scheduler custom settings

Scheduler Mu and Scheduler Std control the Ideogram logit-normal sampling schedule.

Mu shifts where denoising samples concentrate along the noise schedule. Std controls how wide that distribution is.

The official presets set these values for you. Change them mainly when matching a Comfy workflow or experimenting with a different schedule.


## LoRA multipliers

Ideogram 4 has two parallel transformers: the conditional transformer and the unconditional transformer.

A plain LoRA multiplier applies to both branches.

To set different values per branch, use ':' as conditional:unconditional. For example, 0.9:0.4 applies 0.9 to the conditional transformer and 0.4 to the unconditional transformer.

Guidance phases still use ';'. For example, 1:1.2;0.8:1.0 means phase 1 cond/uncond = 1/1.2 and phase 2 cond/uncond = 0.8/1.0.a  ## Ideogram 4 TurboTime

Ideogram 4 TurboTime uses the Ideogram 4 conditional transformer with the TurboTime LoRA applied. It is designed for a few denoising steps with no CFG and no unconditional transformer branch.

LoRA multipliers apply to the conditional transformer only.é0   g      ø?é¸   )Únum_inference_stepsÚmuÚstdÚswitch_thresholdé   éÓ   é   g      à?i.  )r	   r
   r   )Úideogram_cfg_override_enabledÚ#ideogram_cfg_override_start_percentÚ!ideogram_cfg_override_end_percenté   )	r&   Úguidance_phasesÚguidance_scaleÚguidance2_scaleÚguidance3_scaler)   Úswitch_threshold2Úsample_solverÚ
flow_shift©r   r#   c                 ó$   — | |z  d| dz
  |z  z   z  S )Nr   r   )ÚshiftÚsigmas     r   Ú_time_snr_shiftr<   c   s   € Ø�5‰=˜C 5¨3¡;°%Ñ"7Ñ7Ñ8Ð8r   c                 ó–   — t          t          t          t          |¦  «        dt          | ¦  «        z
  ¦  «        dz  ¦  «        ¦  «        S )Nr   g     @�@)ÚintÚroundr<   r   )Úpercentr:   s     r   Ú_percent_to_switch_thresholdrA   g   s8   € Ý�u•_¥U¨5¡\¤\°3½¸w¹¼Ñ3GÑHÔHÈ6ÑQÑRÔRÑSÔSÐSr   c                 óF   — t           D ]}|                      |d ¦  «         Œd S ©N)Ú_LEGACY_CFG_OVERRIDE_KEYSÚpop)Úcustom_settingsÚkeys     r   Ú"_drop_legacy_cfg_override_settingsrH   k   s4   € Ý(ð 'ð 'ˆØ×Ò˜C Ñ&Ô&Ð&Ð&ð'ð 'r   Fc                 óŽ  — |                       dd ¦  «        }t          |t          ¦  «        si }t          |¦  «         t                               ¦   «         D ]#\  }}|r|                     ||¦  «         Œ|||<   Œ$t                               ¦   «         D ]'\  }}|r|dvr|                      ||¦  «         Œ"|| |<   Œ(|| d<   d | d<   d S )NrF   >   r2   r3   r4   r1   r)   r5   Ú
model_mode)ÚgetÚ
isinstanceÚdictrH   Ú_TURBOTIME_CUSTOM_SETTINGSÚitemsÚ
setdefaultÚ_TURBOTIME_SETTINGS)Úui_defaultsÚpreserve_user_valuesrF   rG   r   s        r   Ú_apply_turbotime_settingsrT   p   s  € Ø!—o’oÐ&7¸Ñ>Ô>€OÝ�o¥tÑ,Ô,ð ØˆÝ& Ñ7Ô7Ð7Ý0×6Ò6Ñ8Ô8ð )ð )‰
ˆˆUØð 	)Ø×&Ò& s¨EÑ2Ô2Ð2Ð2à#(ˆO˜CÑ Ð Ý)×/Ò/Ñ1Ô1ð %ð %‰
ˆˆUØð 	% Cð  0dð  %dð  %dØ×"Ò" 3¨Ñ.Ô.Ð.Ð.à$ˆK˜ÑÐØ%4€KÐ!Ñ"Ø $€K�ÑÐÐr   c                 óH  — t           |         }|                      dd ¦  «        }t          |t          ¦  «        si }|                     |d         |d         dœ¦  «         t          |¦  «         |                      |d         ddd|d	         t          t          |d
œ¦  «         d S )NrF   r'   r(   r8   r&   é   ç      @ç      @r)   )r&   r1   r2   r3   r)   r6   r7   rF   )Ú_PRESET_SETTINGSrK   rL   rM   ÚupdaterH   Ú_DEFAULT_SAMPLE_SOLVERÚ_DEFAULT_FLOW_SHIFT)rR   Úpreset_nameÚpresetrF   s       r   Ú_apply_preset_settingsr_   ƒ   sÇ   € Ý˜kÔ*€FØ!—o’oÐ&7¸Ñ>Ô>€OÝ�o¥tÑ,Ô,ð ØˆØ×ÒØ˜d”|Ø˜uœðð ñ ô ð õ ' Ñ7Ô7Ð7Ø×ÒØ%Ð&;Ô<ØØØØ"Ð#5Ô6Ý/Ý)Ø*ð	ð 	ñ 	ô 	ð 	ð 	ð 	r   c                 ó  — g }t          | t          ¦  «        rV|                     |                      dg ¦  «        pg ¦  «         |                     |                      dg ¦  «        pg ¦  «         t	          d„ |D ¦   «         ¦  «        S )NÚURLsÚURLs2c              3   ó\   K  — | ]'}d t          |¦  «                             ¦   «         v V — Œ(dS )Ú_nf4N)ÚstrÚlower)r   Úurls     r   ú	<genexpr>z"_model_uses_nf4.<locals>.<genexpr>ž   s7   è è € Ð:Ð:¨cˆv�˜S™œŸšÑ)Ô)Ð)Ð:Ð:Ð:Ð:Ð:Ð:r   )rL   rM   ÚextendrK   Úany)Ú	model_defÚurlss     r   Ú_model_uses_nf4rm   ™   s€   € Ø€DÝ�)�TÑ"Ô"ð 6Ø�Š�I—M’M &¨"Ñ-Ô-Ð3°Ñ4Ô4Ð4Ø�Š�I—M’M '¨2Ñ.Ô.Ð4°"Ñ5Ô5Ð5ÝÐ:Ð:°TÐ:Ñ:Ô:Ñ:Ô:Ð:r   c                 ób   — | t           k    p$t          |pi                      dd¦  «        ¦  «        S )NÚconditional_transformer_onlyF)Ú_TURBOTIME_MODEL_TYPEÚboolrK   )Úbase_model_typerk   s     r   Ú_conditional_transformer_onlyrs   ¡   s1   € ØÕ3Ò3Ðyµt¸Y¸_È"×<QÒ<QÐRpÐrwÑ<xÔ<xÑ7yÔ7yÐyr   c                   óp  — e Zd Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Z	ed„ ¦   «         Z
ed„ ¦   «         Zed	„ ¦   «         Zed
„ ¦   «         Zedd„¦   «         Zedddddej        ej        ddddfd„¦   «         Zed„ ¦   «         Zed„ ¦   «         ZdS )Úfamily_handlerc           	      óV  — t          | |¦  «        }t          |¦  «        rdnd}i dd“dd“dd“dd“d	d
dgi“ddg“dd“dddg“dd“dd“d| g“ddg“dt          “dd“dd„ t          D ¦   «         “dt          “dd„ d D ¦   «         “i d!d“d"d“d#d“d$d%“d&d'“d(d)“d*t
          “d+d,“d-d.“d/d0d1g“d2d3gd3d4id5d6œ“d7t          “d8t          “d9d:“d;d:“d<t          “d=t          t          t          |¦  «        g“¥}|r7| 
                    dd>ddg t          d?œ¦  «         |                     dd ¦  «         |S )@Nz$Qwen3-VL-8B-Instruct_nf4.safetensorsz$Qwen3-VL-8B-Instruct_fp8.safetensorsÚimage_outputsTÚdevice_explicitÚflux2Útiny_vae_architectureÚflux2_klein_4bÚvae_upsamplersÚflux2_vae_pidr   Úexcluded_spatial_upsamplersÚ	flux2_pidÚguidance_max_phasesé   Úlora_multiplier_branchesÚcondÚuncondÚinference_stepsÚfit_into_canvas_image_refsr   Úprofiles_dirÚpreset_profiles_dirÚideogram4_presetsÚsample_solversr7   rF   c                 ó6   — g | ]}|                      ¦   «         ‘ŒS r   )Úcopy)r   Úones     r   ú
<listcomp>z2family_handler.query_model_def.<locals>.<listcomp>¹   s    € ÐGÐGÐG¨s §¢¡
¤
ÐGÐGÐGr   ÚinfosÚspecialitiesc                 ó   — g | ]}d |i‘ŒS )r   r   )r   r   s     r   rŽ   z2family_handler.query_model_def.<locals>.<listcomp>»   s   € ÐÐÐ°˜f d˜^ÐÐÐr   )ÚlogosÚpostersÚ
typographyzgraphic designztext renderingÚno_negative_promptÚno_background_removalÚskip_prompt_templateÚresolution_budgetÚ	2048x2048Úvae_block_sizeé   Úprompt_enhancer_button_labelzMagic PromptÚprompt_infosÚdeepy_infosaÚ  ### Ideogram 4

Text-to-image for logos, posters, typography and graphic design. Trained on structured JSON captions: supply JSON, or optionally enable Magic Prompt to convert a plain-text brief. Direct plain text is not the upstream-supported workflow. Use the selected Quality/Default/Turbo preset; proofread text and layout. TurboTime has its own few-step settings. Sizes: each side 256 to 2048 pixels in multiples of 16, aspect ratio up to 6:1; 2048x2048 is the largest.Údeepy_prompt_infosu?  ### Prompt Format

Supply JSON, not a bare prose prompt. Top-level order: high_level_description (recommended), style_description (optional), compositional_deconstruction (required: background, then elements). Style order: aesthetics, lighting, photo, medium for photos; aesthetics, lighting, medium, art_style otherwise; optional color_palette comes last. Use photo OR art_style. Element order: type, optional bbox, text for text elements only, desc, optional color_palette. Bboxes are [y_min,x_min,y_max,x_max], normalized 0â€“1000 from top left. Example: {"high_level_description":"A simple market poster.","style_description":{"aesthetics":"bold and cheerful","lighting":"flat","medium":"graphic_design","art_style":"screen print","color_palette":["#FFF4D6","#174A8B"]},"compositional_deconstruction":{"background":"Cream paper","elements":[{"type":"text","bbox":[100,100,300,900],"text":"MARKET","desc":"Large blue sans-serif lettering"}]}}. Quote every intended visible string exactly, escape embedded quotes, and close all JSON delimiters. No Markdown fences in the actual prompt.Úprompt_helper_popup_dimséN   éd   Úprompt_enhancer_defÚTz&Ideogram JSON caption from Text PromptÚ )Ú	selectionÚlabelsr   Ú!text_prompt_enhancer_instructionsÚ"image_prompt_enhancer_instructionsÚtext_prompt_enhancer_max_tokensi   Ú image_prompt_enhancer_max_tokensÚtext_encoder_folderÚtext_encoder_URLsÚnative)ro   Úacceleratedr€   Úlora_multiplier_phasesrˆ   r�   )rs   rm   Ú_SAMPLE_SOLVERSÚ_CUSTOM_SETTINGSÚIDEOGRAM4_INFOSr   r   Ú_TEXT_ENCODER_FOLDERr   Ú_PROJECT_REPOrZ   ÚIDEOGRAM4_TURBOTIME_INFOSrE   )rr   rk   Úconditional_onlyÚtext_encoder_filenameÚmodel_def_updates        r   Úquery_model_defzfamily_handler.query_model_def¦   s¸  € å8¸È)ÑTÔTÐÝJYÐZcÑJdÔJdð  !QÐ FÐ Fð  kQÐð)
Ø˜Tð)
à˜tð)
ð �Tð)
ð $Ð%5ð	)
ð
 ˜°°Ð4ð)
ð *¨K¨=ð)
ð " 1ð)
ð '¨°Ð(:ð)
ð ˜tð)
ð )¨!ð)
ð ˜_Ð-ð)
ð "Ð$7Ð#8ð)
ð �oð)
ð ˜$ð)
ð ÐGÐGÕ6FÐGÑGÔGð)
ð  •_ð!)
ð" ÐÐÐ8~ÐÑÔð#)
ð )
ð$ ! $ð%)
ð& $ Tð')
ð( # Dð))
ð*   ð+)
ð, ˜bð-)
ð. +¨Nð/)
ð0 Õ2ð1)
ð2 ð  zð3)
ð4 !ð  #fð5)
ð6 '¨¨S¨	ð7)
ð8 "Ø!˜UØÐ HÐIØð$ð $ð9)
ðB 0Õ1JðC)
ðD 1Õ2KðE)
ðF .¨tðG)
ðH /°ðI)
ðJ "Õ#7ðK)
ðL  Ý�]Õ,@ÐBWÑXÔXð"ðM)
ð )
ÐðT ð 		CØ×#Ò#Ø04Ø'Ø'(Ø*+Ø')Ý2ð%ð %ñ ô ð ð × Ò Ð!;¸TÑBÔBÐBØÐr   c                  ó   — dt           gS ©Nr   )rp   r   r   r   Úquery_supported_typesz$family_handler.query_supported_typesà   s   € àÕ2Ð3Ð3r   c                  ó
   — i i fS rC   r   r   r   r   Úquery_family_mapsz family_handler.query_family_mapsä   s   € à�2ˆvˆr   c                  ó   — dS r¼   r   r   r   r   Úquery_model_familyz!family_handler.query_model_familyè   ó   € àˆ{r   c                  ó
   — ddiS )Nr   )it  ÚIdeogramr   r   r   r   Úquery_family_infosz!family_handler.query_family_infosì   s   € àÐ/Ð0Ð0r   c                 ó.   — ddl m}  || |||||¦  «        S )Nr   )Úrender_prompt_helper)Úprompt_helperrÇ   )Ú
model_typerk   Ú	prompt_idÚpopup_idÚprompt_elem_idÚresolution_elem_idrÇ   s          r   rÇ   z#family_handler.render_prompt_helperð   s1   € à7Ð7Ð7Ð7Ð7Ð7à#Ð# J°	¸9ÀhÐP^Ð`rÑsÔsÐsr   c                  ó"   — ddl m}   | ¦   «         S )Nr   ©Úget_prompt_helper_css)rÈ   rÐ   rÏ   s    r   rÐ   z$family_handler.get_prompt_helper_cssö   s#   € à8Ð8Ð8Ð8Ð8Ð8à$Ð$Ñ&Ô&Ð&r   c                  ó"   — ddl m}   | ¦   «         S )Nr   ©Úget_prompt_helper_javascript)rÈ   rÓ   rÒ   s    r   rÓ   z+family_handler.get_prompt_helper_javascriptü   s#   € à?Ð?Ð?Ð?Ð?Ð?à+Ð+Ñ-Ô-Ð-r   c                 ó(   — ddl m}  |dd¬¦  «        S )Nr   )Úget_rgb_factorsÚfluxry   )Ú
sub_family)Úshared.RGB_factorsrÕ   )rr   rÕ   s     r   rÕ   zfamily_handler.get_rgb_factors  s)   € à6Ð6Ð6Ð6Ð6Ð6àˆ˜v°'Ð:Ñ:Ô:Ð:r   c                 ó   — dS r¼   r   )rr   s    r   Úget_lora_dirzfamily_handler.get_lora_dir  rÂ   r   Nc                 ó®   — dg}t          ||¦  «        s|                     d¦  «         t          dgt          ggdœt          t
          t          g|g d¢gdœgS )Nz!ideogram4_transformer_config.jsonz/ideogram4_unconditional_transformer_config.jsonr¥   )ÚrepoIdÚsourceFolderListÚfileList)zconfig.jsonztokenizer.jsonztokenizer_config.jsonzchat_template.jinja)rs   ÚappendÚ	_VAE_REPOÚ_VAE_FILENAMErµ   Ú_PROJECT_FOLDERr´   )ÚcomputeListrr   rk   Útransformer_configss       r   Úquery_model_filesz family_handler.query_model_files  s‚   € àBÐCÐÝ,¨_¸iÑHÔHð 	ZØ×&Ò&Ð'XÑYÔYÐYõ $Ø%' DÝ+˜_Ð-ðð õ (Ý%4Õ6JÐ$Kà'ØeÐeÐeððð ð
ð 	
r   Fc                 ó¦   — ddl m}  |d| |||||||	¬¦	  «	        }|j        |j        |j        dœ}i }|j        �|j        |d<   dgdgdœ}||d	œ}||fS )
Nr   )Úmodel_factoryÚckpts)	Úcheckpoint_dirÚmodel_filenamerÉ   rk   rr   r¸   ÚdtypeÚ	VAE_dtypeÚsave_quantized)ÚtransformerÚtext_encoderÚvaeÚtransformer2rî   )rî   rñ   )ÚpipeÚcoTenantsMap)Úideogram4_mainrç   Úconditional_transformerrï   ÚautoencoderÚunconditional_transformer)rê   rÉ   rr   rk   ÚquantizeTransformerÚtext_encoder_quantizationrë   rì   Úmixed_precision_transformerrí   Úsubmodel_no_listr¸   Úkwargsrç   Úpipe_processorrò   Úco_tenants_maps                    r   Ú
load_modelzfamily_handler.load_model!  s¼   € ð  	2Ð1Ð1Ð1Ð1Ð1à&˜Ø"Ø)Ø!ØØ+Ø"7ØØØ)ð

ñ 

ô 

ˆð *ÔAØ*Ô7Ø!Ô-ð
ð 
ˆð
 ˆØÔ3Ð?Ø#1Ô#KˆD�Ñ à .Ð/Ø!. ðð ˆNð
 Ø*ð
ð 
ˆð ˜tÐ#Ð#r   c                 ó¤   — |                      dd ddœ¦  «         t          | |¦  «        rt          |¦  «         d S t          |t          ¦  «         d S )Nr   )Ú
image_moderJ   Ú
batch_size)rZ   rs   rT   r_   Ú_DEFAULT_PRESET)rr   rk   rR   s      r   Úupdate_default_settingsz&family_handler.update_default_settingsP  s[   € à×Ò¨!¸4ÈqÐQÐQÑRÔRÐRÝ(¨¸)ÑDÔDð 	Ý% kÑ2Ô2Ð2ØˆFÝ˜{­OÑ<Ô<Ð<Ð<Ð<r   c                 óx  — t          | |¦  «        rt          |d¬¦  «         d S |                     dd ¦  «        }|t          v rt	          ||¦  «         �nÊ|                     dd ¦  «        t          v rt	          ||d         ¦  «         �n•|                     dd ¦  «        }t          |t          ¦  «        si }t          t                   }|                     dd ¦  «        dvr6d|v r2t          |d         |                     d	t          ¦  «        ¦  «        |d
<   t          |¦  «         |                     d|d         ¦  «         |                     d|d         ¦  «         ||d<   |                     d|d         ¦  «         |                     dd¦  «         |                     dd¦  «         |                     d
|d
         ¦  «         |                     dd¦  «        t          vr
t          |d<   |                     d	t          ¦  «         |                     dd¦  «         d |d<   |                     dd¦  «         d S )NT)rS   rJ   r6   rF   r-   )Nr   Ú0Fr.   r7   r)   r   r'   r#   r(   r&   r2   rW   r3   rX   r¥   r1   rV   r  r   )rs   rT   rK   rY   r_   rL   rM   r  rA   r\   rH   rP   Ú_SAMPLE_SOLVER_IDSr[   )rr   Úsettings_versionrk   rR   Úold_moderF   Údefaultss          r   Úfix_settingszfamily_handler.fix_settingsX  sƒ  € å(¨¸)ÑDÔDð 	Ý% kÈÐMÑMÔMÐMØˆFØ—?’? <°Ñ6Ô6ˆØÕ'Ð'Ð'Ý" ;°Ñ9Ô9Ð9Ñ9Ø�_Š_˜_¨dÑ3Ô3Õ7GÐGÐGÝ" ;°¸OÔ0LÑMÔMÐMÑMà)ŸošoÐ.?ÀÑFÔFˆOÝ˜o­tÑ4Ô4ð %Ø"$�Ý'­Ô8ˆHØ×"Ò"Ð#BÀDÑIÔIÐQfÐfÐfð  lQð  Udð  ldð  ldÝ2NÈð  `Eô  PFð  HS÷  HWò  HWð  Xdõ  fyñ  Hzô  Hzñ  3{ô  3{�Ð.Ñ/Ý.¨Ñ?Ô?Ð?Ø×&Ò& }°h¸t´nÑEÔEÐEØ×&Ò& ~°xÀ´ÑGÔGÐGØ-<ˆKÐ)Ñ*Ø×"Ò"Ð#8¸(ÐCXÔ:YÑZÔZÐZØ×"Ò"Ð#3°SÑ9Ô9Ð9Ø×"Ò"Ð#4°cÑ:Ô:Ð:Ø×"Ò"Ð#5°xÐ@RÔ7SÑTÔTÐTØ�Š˜°Ñ3Ô3Õ;MÐMÐMÝ/E�˜OÑ,Ø×"Ò" <Õ1DÑEÔEÐEØ×"Ò"Ð#4°aÑ8Ô8Ð8Ø$(ˆ�LÑ!Ø×Ò˜|¨QÑ/Ô/Ð/Ð/Ð/r   rC   )Ú__name__Ú
__module__Ú__qualname__Ústaticmethodrº   r½   r¿   rÁ   rÅ   rÇ   rÐ   rÓ   rÕ   rÚ   rå   ÚtorchÚbfloat16Úfloat32rÿ   r  r  r   r   r   ru   ru   ¥   sÂ  € € € € € Øð7 ð 7 ñ „\ð7 ðr ð4ð 4ñ „\ð4ð ðð ñ „\ðð ðð ñ „\ðð ð1ð 1ñ „\ð1ð ðtð tñ „\ðtð
 ð'ð 'ñ „\ð'ð
 ð.ð .ñ „\ð.ð
 ð;ð ;ñ „\ð;ð
 ðð ñ „\ðð ð
ð 
ð 
ñ „\ð
ð( ð ØØØ!Ø"&ØŒnØ”-Ø$)ØØØ"ð,$ð ,$ð ,$ñ „\ð,$ð\ ð=ð =ñ „\ð=ð ð0ð 0ñ „\ð0ð 0ð 0r   ru   )r   )FrC   )!r  Úshared.utils.hfr   Úprompt_enhancerr   r   rµ   râ   r´   rà   rá   rp   Ú_PRESET_CHOICESr  r[   r\   r±   r  r²   r³   r¶   rY   rD   rQ   rN   r<   rA   rH   rT   r_   rm   rs   ru   r   r   r   ú<module>r     sV  ðð €€€à (Ð (Ð (Ð (Ð (Ð (Ø NÐ NÐ NÐ NÐ NÐ NÐ NÐ Nð )€Ø€Ø-Ð Ø €	Ø'€Ø-Ð ðð ð €ð
 "€Ø Ð ØÐ ðð ð €ð
 =Ð<¨OÐ<Ñ<Ô<Ð à >¸>ÐSZÐgjÐsxð  BFð  OSð  Tð  TØ O¸_ÐV]ÐjnÐwzð  DGð  PTð  Uð  UðÐ ð!B€ðD?Ð ð .0°sÀ3Ð\_Ð`Ð`Ø-/°sÀ4Ð]`ÐaÐaØ+-°SÀÐ[^Ð_Ð_ðð Ð ð
Ð ð ØØØØØØØ+Ø%ð
ð 
Ð ð Øðð Ð ð9ð 9ð 9ðTð Tð Tð Tð'ð 'ð 'ð
%ð %ð %ð %ð&ð ð ð,;ð ;ð ;ðzð zð zð zðQ0ð Q0ð Q0ð Q0ð Q0ñ Q0ô Q0ð Q0ð Q0ð Q0r   