+
    kHàj)  ã                  óF  a € 0 t $ R t^ RIHt ^ RIt^ RIHtHtHt ]P                  ! R4      t
R R ltR R ltR	 R
 ltR R ltR R ltR R ltR R ltR R ltR R ltR R ltR R ltR]R]R]R]R]R ]R!]R"]R#R$ /	tR%]R&&   R' R( ltR) R* ltR+ R, ltR- R. ltR# )/z·Google Chat outbound text formatting and Cards v2 rendering.

Extracted from ``adapter.py``; the card dict shapes and key order here are the
wire format and must stay byte-identical.
)ÚannotationsN)ÚAnyÚCallableÚDictu'   [â€‹â€Œâ€�â€Žâ€�â� ï»¿ï¸€-ï¸�ó „€-ó ‡¯]c               ó    € V ^8„  d   QhRRRR/# )é   ÚcontentÚstrÚreturn© )Úformats   "ÚH/home/ubuntu/.hermes/hermes-agent/plugins/platforms/google_chat/cards.pyÚ__annotate__r      s   € ÷ !ñ !˜Cð ! Cñ !ó    c                óX  aa€ V '       g   V # / oR V3R lloT p\         P                  ! RV3R lV4      p\         P                  ! RV3R lV4      p\         P                  ! RV3R lV\         P                  R	7      p\         P                  ! R
V3R lV4      p\         P                  ! RV3R lV4      p\         P                  ! RV3R lV4      p\        P                  RV4      p\         P                  ! RRV4      pSP	                  4        F  w  r#VP                  W#4      pK  	  V# )aW  Convert standard Markdown to Google Chat's dialect.

Chat renders only ``*bold*``, ``_italic_``, ``~strike~`` and code; ``**bold**``,
``# headers`` and ``[text](url)`` must be converted. Fenced and inline code
are protected via placeholders so literal asterisks/brackets inside them
survive; invisible tofu codepoints are stripped at the end.
c               ó    € V ^8„  d   QhRRRR/# )r   Úvaluer	   r
   r   )r   s   "r   r   Ú$format_message.<locals>.__annotate__*   s   € ÷ ñ �3ð ˜3ñ r   c                ó0   <€ R \        S4       R2pV SV&   V# )z GCÚ )Úlen)r   ÚkeyÚplaceholderss   & €r   Ú_phÚformat_message.<locals>._ph*   s&   ø€ Ø”s˜<Ó(Ð)¨Ð.ˆØ!ˆ�SÑØˆ
r   z(```(?:[^\n]*\n)?[\s\S]*?```)c                ó2   <€ S! V P                  ^ 4      4      # ©é    ©Úgroup©Úmr   s   &€r   Ú<lambda>Ú format_message.<locals>.<lambda>1   s   ø€ ¹cÀ!Ç'Á'È!Ã*¼or   z	(`[^`]+`)c                ó2   <€ S! V P                  ^ 4      4      # r   r   r    s   &€r   r"   r#   2   s   ø€ ©#¨a¯g©g°a«j¬/r   z^#{1,6}\s+(.+)$c                óV   <€ S! R V P                  ^4      P                  4        R 24      # ©Ú*)r   Ústripr    s   &€r   r"   r#   4   s%   ø€ ±°a¸¿¹À»
×8HÑ8HÓ8JÐ7KÈ1Ð4MÔ0Nr   )Úflagsz\*\*\*(.+?)\*\*\*c                ó:   <€ S! R V P                  ^4       R24      # )z*_z_*r   r    s   &€r   r"   r#   6   s   ø€ ±#¸¸1¿7¹7À1»:¸,ÀbÐ6IÔ2Jr   z\*\*(.+?)\*\*c                ó:   <€ S! R V P                  ^4       R 24      # r&   r   r    s   &€r   r"   r#   7   s   ø€ ©c°A°a·g±g¸a³j°\ÀÐ2CÔ.Dr   z\[([^\]]+)\]\(([^)]+)\)c                ó^   <€ S! R V P                  ^4       RV P                  ^4       R24      # )Ú<Ú|Ú>r   r    s   &€r   r"   r#   9   s+   ø€ ¹¸aÀÇÁÈÃ
¸|È1ÈQÏWÉWÐUVËZÈLÐXYÐ<ZÔ8[r   Ú z  +Ú )ÚreÚsubÚ	MULTILINEÚ_INVISIBLE_REÚitemsÚreplace)r   Útextr   r   r   r   s   &   @@r   Úformat_messager9      sñ   ù€ ÷ ØˆØ#%€L÷ð ð
 €Dä�6Š6Ð2Ô4MÈtÓT€DÜ�6Š6�,Ô 9¸4Ó@€Dä�6Š6Ð$Ô&NÐPTÔ\^×\hÑ\hÔi€Dä�6Š6Ð&Ô(JÈDÓQ€DÜ�6Š6Ð"Ô$DÀdÓK€Dä�6Š6Ð,Ô.[Ð]aÓb€DÜ×Ñ˜R Ó&€Dä�6Š6�&˜#˜tÓ$€DØ"×(Ñ(Ö*‰
ˆØ�|‰|˜CÓ'Šñ +à€Kr   c               ó(   € V ^8„  d   QhRRRRRRRR/# )r   Úmappingúdict[str, Any]r   r	   Úcontextr
   r   )r   s   "r   r   r   B   s(   € ÷ ñ ˜>ð °ð ¸cð Àcñ r   c                ó˜   € V P                  V4      pVe   \        V4      P                  4       MRpV'       g   \        V RV R24      hV# )Nr0   Ú.z is required)Úgetr	   r(   Ú
ValueError)r;   r   r=   r   s   &&& r   Ú_required_strrB   B   sI   € Ø�K‰K˜Ó€EØ"'Ò"3ŒC�‹J×ÑÔ¸€EßÜ˜G˜9 A c U¨,Ð7Ó8Ð8Ø€Lr   c               ó(   € V ^8„  d   QhRRRRRRRR/# )r   Údstr<   ÚsrcÚkeysztuple[str, str]r
   r   )r   s   "r   r   r   J   s)   € ÷ ñ �>ð ¨ð ¸ð ÐSañ r   c                ót   € V F1  w  r4VP                  V4      '       g   K  \        W,          4      W&   K3  	  V # )zNCopy truthy ``src[src_key]`` into ``dst[dst_key]`` as str, in the given order.)r@   r	   )rD   rE   rF   Úsrc_keyÚdst_keys   &&*  r   Ú	_copy_optrJ   J   s3   € ã ÑˆØ�7‰7�7×ÔÜ˜s�|Ó,ˆC‹Lñ !ð €Jr   c               ó(   € V ^8„  d   QhRRRRRRRR/# )r   r;   r<   r   r	   Úerrorr
   Úlistr   )r   s   "r   r   r   R   s(   € ÷ ñ ˜Nð °ð ¸Sð ÀTñ r   c                óŽ   € V P                  V4      ;'       g    . p\        V\        4      '       d	   V'       g   \        V4      hV# )N)r@   Ú
isinstancerM   rA   )r;   r   rL   r6   s   &&& r   Ú_required_listrP   R   s7   € Ø�K‰K˜Ó×"Ð" €EÜ�eœT×"Ò"¯%Ü˜ÓÐØ€Lr   c               ó    € V ^8„  d   QhRRRR/# )r   Úbuttonr<   r
   r   )r   s   "r   r   r   Y   s   € ÷ añ a˜Nð a¨~ñ ar   c           
     óV  € \        V R R4      p\        V RR4      pV P                  R4      ;'       g    / p\        V\        4      '       g   \	        R4      h\        VP                  4       4       UUu. uF  w  rER\        V4      R\        V4      /NK  	  pppR VRRRVRV///# u uppi )	r8   rR   ÚactionÚ
parametersz#button.parameters must be an objectr   r   ÚonClickÚfunction)rB   r@   rO   ÚdictrA   Úsortedr6   r	   )rR   r8   rT   Ú
raw_paramsr   r   rU   s   &      r   Ú_button_to_chatr[   Y   s©   € Ü˜ ¨Ó2€DÜ˜6 8¨XÓ6€FØ—‘˜LÓ)×/Ð/¨R€JÜ�j¤$×'Ò'ÜÐ>Ó?Ð?ÜKQÐR\×RbÑRbÓRdÔKeÔfÑKe¹Z¸S�5œ#˜c›( G¬S°«ZÓ8ÑKe€JÑfØ�D˜) h°¸VÀ\ÐS]Ð0^Ð%_Ð`Ð`ùó gs   Á3#B%c               ó    € V ^8„  d   QhRRRR/# ©r   Úwidgetr<   r
   r   )r   s   "r   r   r   c   s   € ÷ `ñ `˜ð `¨Nñ `r   c           	     ó6   € R R\        \        V RR4      4      //# )ÚtextParagraphr8   r^   )r9   rB   ©r^   s   &r   Ú_text_widgetrb   c   s!   € Ø˜f¤n´]À6È6ÐS[Ó5\Ó&]Ð^Ð_Ð_r   c               ó    € V ^8„  d   QhRRRR/# r]   r   )r   s   "r   r   r   g   s   € ÷ wñ w >ð w°nñ wr   c           	     ó†   € R \        \        V R R4      4      R\        V P                  RR4      4      /pR\	        WRR4      /# )r8   r^   ÚwrapTextÚ	wrap_textTÚdecoratedText)Ú	top_labelÚtopLabel)Úbottom_labelÚbottomLabel)r9   rB   Úboolr@   rJ   )r^   Ú	decorateds   & r   Ú_decorated_text_widgetrn   g   sI   € à”œ}¨V°V¸XÓFÓGØ”D˜Ÿ™ K°Ó6Ó7ð!9€Ið œY yÐ:SÐUtÓuÐvÐvr   c               ó    € V ^8„  d   QhRRRR/# r]   r   )r   s   "r   r   r   n   s   € ÷ Hñ H˜.ð H¨^ñ Hr   c                ó<   € R \        V RR4      /pR\        WR4      /# )ÚimageUrlÚ	image_urlr^   Úimage)Úalt_textÚaltText)rB   rJ   )r^   rs   s   & r   Ú_image_widgetrv   n   s(   € Øœ v¨{¸HÓEÐF€EØ”Y˜uÐ.EÓFÐGÐGr   c               ó    € V ^8„  d   QhRRRR/# r]   r   )r   s   "r   r   r   s   s   € ÷ Vñ V˜Nð V¨~ñ Vr   c                ód   € \        V R R4      pRR V Uu. uF  p\        V4      NK  	  up//# u upi )Úbuttonsz*button widgets require at least one buttonÚ
buttonList)rP   r[   )r^   Úraw_buttonsÚbtns   &  r   Ú_buttons_widgetr}   s   s8   € Ü  ¨Ð4`Óa€KØ˜9Á{Ó&SÁ{À¤°sÖ';Á{Ñ&SÐTÐUÐUùÒ&Ss   ”-c               ó    € V ^8„  d   QhRRRR/# )r   Úitemr   r
   r<   r   )r   s   "r   r   r   x   s   € ÷ 7ñ 7˜#ð 7 .ñ 7r   c                ó²   € \        V \        4      '       g   \        R 4      hR\        V RR4      R\        V RR4      R\	        V P                  RR4      4      /# )zselection items must be objectsr8   zselection itemr   ÚselectedF)rO   rX   rA   rB   rl   r@   )r   s   &r   Ú_selection_itemr‚   x   sX   € Ü�dœD×!Ò!ÜÐ:Ó;Ð;à”˜d FÐ,<Ó=Ø”˜t WÐ.>Ó?Ø”D˜Ÿ™ *¨eÓ4Ó5ð7ð 7r   c               ó    € V ^8„  d   QhRRRR/# r]   r   )r   s   "r   r   r   �   s   € ÷ Eñ E˜nð E°ñ Er   c                ó  € \        V R R4      p\        V RR4      pRR TR\        V P                  R4      ;'       g    T4      R\        V P                  R4      ;'       g    R4      RV Uu. uF  p\	        V4      NK  	  up//# u upi )	Únamer^   r6   z+selection widgets require at least one itemÚselectionInputÚlabelÚtypeÚselection_typeÚ	CHECK_BOX)rB   rP   r	   r@   r‚   )r^   r…   Ú	raw_itemsr   s   &   r   Ú_selection_widgetrŒ   �   s�   € Ü˜ ¨Ó2€DÜ˜v wÐ0]Ó^€IàØ�DØ”S˜Ÿ™ GÓ,×4Ð4°Ó5Ø”C˜Ÿ
™
Ð#3Ó4×CÐC¸ÓDØ¹	ÓB¹	°”o dÖ+¹	ÑBð	DðEð Eùò
 Cs   Á+Br8   Útext_paragraphÚdecorated_textry   Úbutton_listÚ	selectionÚselection_inputrs   Údividerc                ó
   € R / /# )r’   r   ra   s   &r   r"   r"   •   s   € ˜y¨"™or   z5dict[str, Callable[[dict[str, Any]], dict[str, Any]]]Ú_WIDGET_RENDERERSc               ó    € V ^8„  d   QhRRRR/# r]   r   )r   s   "r   r   r   ™   s   € ÷ ñ ˜Nð ¨~ñ r   c                ó  € \        V \        4      '       g   \        R 4      h\        V P	                  R4      ;'       g    R4      P                  4       p\        P	                  V4      pVf   \        RT;'       g    R 24      hV! V 4      # )zcard widgets must be objectsrˆ   r0   zunsupported widget type: z	<missing>)rO   rX   rA   r	   r@   r(   r”   )r^   Úwidget_typeÚrenderers   &  r   Ú_widget_to_chatr™   ™   s|   € Ü�fœd×#Ò#ÜÐ7Ó8Ð8Ü�f—j‘j Ó(×.Ð.¨BÓ/×5Ñ5Ó7€KÜ ×$Ñ$ [Ó1€HØÒÜÐ4°[×5OÐ5OÀKÐ4PÐQÓRÐRÙ�FÓÐr   c               ó    € V ^8„  d   QhRRRR/# )r   Úsectionr   r
   r<   r   )r   s   "r   r   r   £   s   € ÷ >ñ >˜cð > nñ >r   c                óº   € \        V \        4      '       g   \        R 4      h\        V RR4      pRV Uu. uF  p\	        V4      NK  	  up/p\        W0R4      # u upi )zcard sections must be objectsÚwidgetsz5card section widgets must contain at least one widget)Úheaderrž   )rO   rX   rA   rP   r™   rJ   )r›   r�   ÚwÚrendereds   &   r   Ú_section_to_chatr¡   £   s\   € Ü�gœt×$Ò$ÜÐ8Ó9Ð9Ü˜W iÐ1hÓi€GØ )ÉÓ+PÉÀ1¬O¸AÖ,>ÉÑ+PÐQ€HÜ�XÐ(<Ó=Ð=ùò ,Qs   ´Ac               ó    € V ^8„  d   QhRRRR/# )r   rž   r   r
   r<   r   )r   s   "r   r   r   «   s   € ÷ Kñ K˜Cð K Nñ Kr   c                ó8  € \        V \        4      '       g   \        R 4      hR\        V RR4      /p\	        WR4       V P                  R4      '       d=   \        V R,          4      VR&   \        V P                  R4      ;'       g    R4      VR&   \	        WR	4      # )
zcard.header must be an objectÚtitlezcard.headerrr   rq   Ú
image_typeÚSQUAREÚ	imageType)Úsubtitler¨   )Úimage_alt_textÚimageAltText)rO   rX   rA   rB   rJ   r@   r	   )rž   r    s   & r   Ú_header_to_chatr«   «   sŠ   € Ü�fœd×#Ò#ÜÐ8Ó9Ð9Ø '¬°v¸wÈÓ)VÐW€HÜˆhÐ 8Ô9Ø‡z�z�+×ÒÜ" 6¨+Õ#6Ó7ˆ�ÑÜ # F§J¡J¨|Ó$<×$HÐ$HÀÓ Iˆ�ÑÜ�XÐ'IÓJÐJr   c               ó    € V ^8„  d   QhRRRR/# )r   Ú	card_specr<   r
   r   )r   s   "r   r   r   ¶   s   € ÷ Tñ T ^ð T¸ñ Tr   c                ó@  € \        V \        4      '       g   \        R 4      h\        V RR4      pRV Uu. uF  p\	        V4      NK  	  up/pV P                  R4      pV'       d   \        V4      VR&   R\        V P                  R4      ;'       g    R4      RV/# u upi )zcard must be an objectÚsectionsz/card.sections must contain at least one sectionrž   ÚcardIdÚcard_idzhermes-cardÚcard)rO   rX   rA   rP   r¡   r@   r«   r	   )r­   Úraw_sectionsÚsr²   rž   s   &    r   Úcard_spec_to_cards_v2rµ   ¶   s“   € Ü�i¤×&Ò&ÜÐ1Ó2Ð2Ü! )¨ZÐ9jÓk€LØ&ÁlÓ(SÁlÀÔ)9¸!Ö)<ÁlÑ(SÐT€DØ�]‰]˜8Ó$€FßÜ(¨Ó0ˆˆX‰Ø”c˜)Ÿ-™-¨	Ó2×CÐC°mÓDÀfÈdÐSÐSùò	 )Ts   ´B)Ú__conditional_annotations__Ú__doc__Ú
__future__r   r2   Útypingr   r   r   Úcompiler5   r9   rB   rJ   rP   r[   rb   rn   rv   r}   r‚   rŒ   r”   Ú__annotations__r™   r¡   r«   rµ   )r¶   s   @r   Ú<module>r¼      sÆ   øðôõ #ã 	ß &Ñ &ð —
’
ð	ó€õ!õHõõõaõ`õwõHõ
Võ
7õEð ˆLØ�lØÐ,ØˆØ�?ØÐ"ØÐ(Øˆ]ØÑ-ð
LÐ ÐHó 
õõ>õK÷Tr   