§
    $|Äj­¢  ã                  óB  — U d dl mZ d dlZd dlZd dlZd dlmZmZ d dlm	Z	m
Z
 d dlmZmZ d dlmZmZ d dlmZ d dlmZmZmZmZmZ d d	lmZmZmZ d d
lmZmZ d dlm Z  d dl!m"Z" d dl#m$Z$ d dl%m&Z& d dl'm(Z(m)Z) d dl*m+Z+m,Z,m-Z- d dl.m/Z/m0Z0 d dl1m2Z2m3Z3m4Z4m5Z5m6Z6 d dl7m8Z8 d dl9m:Z:m;Z;m<Z<m=Z= d dl>m?Z? d dl@mAZA d dlBmCZC d dlDmEZE d dlFmGZG d dlHmIZI d dlJmKZK d dlLmMZMmNZN  ejO        d¦  «        ZP e"ejQ         R                    d¦  «        ¬¦  «        ZS eTejQ         R                    d d!¦  «        ¦  «        ZUi ZVd"eWd#<    e ejQ         R                    d$d%¦  «        ¦  «        ZX e+ejQ         R                    d&d'¦  «        ¦  «        ZYejZ         [                    ejZ         \                    e]¦  «        d(d)¦  «        Z^ e)¦   «         Z_ e?ejQ         R                    d*d+¦  «        ¦  «        Z` eE¦   «         Za eI¦   «         Zb eKejQ         R                    d,d-¦  «        ¦  «        Zcd. eAe`e_eaeb¬/¦  «        iZdejQ         R                    d0d1¦  «        d2k    r eCe`eaeb¬/¦  «        edd3<   dÌd6„ZedÍd8„Zfe	 G d9„ d:¦  «        ¦   «         Zg G d;„ d<e¦  «        Zh G d=„ d>e¦  «        Zi G d?„ d@e¦  «        Zj G dA„ dBe¦  «        Zki ZldCeWdD<   dÎdI„ZmdJ„ Zn e/ e0¦   «         dK„ dL„ emendM„ dN„ dO„ dP„ dQ„ ¬R¦
  «
        ZodS„ Zp e3ejQ         R                    dTdU¦  «        ¦  «        Zq e2 e4¦   «          e5¦   «         eqdV„ emenep¦  «        ZrdWdWdXœdY„ZsdZ„ Ztd[„ Zud\„ ZvdÏd]„ZwdÐd^„ZxdÑdÒda„Zydb„ Zzdc„ Z{dd„ Z| G de„ df¦  «        Z} e}¦   «         Z~edÓdi„¦   «         Z edjdke¬l¦  «        Z€e€ �                    e:¦  «        dÔdo„¦   «         Z‚dÕdr„Zƒe€ R                    ds¦  «        dt„ ¦   «         Z„e€ …                    du¦  «        dÖdx„¦   «         Z†e€ R                    dy¦  «        dz„ ¦   «         Z‡e€ …                    dyd{¬|¦  «        d×d„¦   «         Zˆe€ ‰                    d€d�¬|¦  «        dØdƒ„¦   «         ZŠe€ R                    d„¦  «        d…„ ¦   «         Z‹e€ R                    d†¦  «        dØd‡„¦   «         ZŒe€ R                    dˆ¦  «        dÙdŠ„¦   «         Z�e€ …                    d‹¦  «        dÙdŒ„¦   «         ZŽe€ …                    d�dŽ¬|¦  «        dÚd�„¦   «         Z�e€ R                    d‘¦  «        dÙd’„¦   «         Z�e€ …                    d‘¦  «        dÛd”„¦   «         Z‘e€ R                    d•¦  «        dÜd–„¦   «         Z’e€ R                    d—d˜¬™¦  «        dÝd›„¦   «         Z“e€ R                    dœd˜¬™¦  «        dÞdž„¦   «         Z”e€ R                    dŸd˜¬™¦  «        dÞd „¦   «         Z•e€ R                    d¡¦  «        dÜd¢„¦   «         Z–e€ R                    d£¦  «        dßd¥„¦   «         Z—e€ R                    d¦¦  «        dÜd§„¦   «         Z˜	 dÑdàdª„Z™	 dÑdád«„Zšdâd®„Z›d¯„ Zœdãd°„Z�i Zžd±„ ZŸe€ …                    d²d˜¬™¦  «         edW¬³¦  «        fdädµ„¦   «         Z e€ …                    d¶¦  «        dåd¹„¦   «         Z¡e€ …                    dº¦  «        dæd¼„¦   «         Z¢e€ …                    d½¦  «        dçd¿„¦   «         Z£ G dÀ„ dÁe¦  «        Z¤ G dÂ„ dÃe¦  «        Z¥e€ …                    dÄ¦  «        dèdÅ„¦   «         Z¦e€ …                    dÆ¦  «        dédÇ„¦   «         Z§e€ ¨                    dÈ¦  «        dêdË„¦   «         Z©dS )ëé    )ÚannotationsN)ÚasynccontextmanagerÚsuppress)Ú	dataclassÚfield)ÚdatetimeÚtimezone)ÚAnyÚLiteral)Úuuid4)ÚFastAPIÚHeaderÚHTTPExceptionÚ	WebSocketÚWebSocketDisconnect)ÚFileResponseÚRedirectResponseÚJSONResponse)Ú	BaseModelÚField)ÚDeviceCredentialStore)ÚSystemCollector)Ú
host_state)ÚServerSnapshot)ÚPiSessionEventÚPiSessionRegistry)ÚTargetStoreÚnormalize_targetÚsplit_target)ÚVoiceManagerÚconfigured_stt)ÚSpeechManagerÚSpeechPreferencesÚconfigured_ttsÚHaihubSummaryÚMODES)Úquick_catalog)ÚControlErrorÚInputÚProjectÚSettings)ÚProjectRegistry)Ú	PiAdapter)ÚCodexAdapter)ÚApprovalRegistry)ÚPiApprovalServer)Ú
UserInputs)Ú
Operations)Ú	NavigatorÚCAPABILITIESzuvicorn.error.device_gatewayÚGATEWAY_SERVER_NAME)ÚhostnameÚGATEWAY_SNAPSHOT_INTERVALÚ2zdict[str, str]Úhost_statesÚDEVICE_CREDENTIALS_FILEz*~/.config/esp32-device-gateway/device.jsonÚGATEWAY_STATE_FILEz+~/.config/esp32-device-gateway/targets.jsonÚstaticz
admin.htmlÚGATEWAY_PROJECTS_FILEz,~/.config/esp32-device-gateway/projects.jsonÚGATEWAY_OPERATIONS_FILEz0~/.config/esp32-device-gateway/operations.sqliteÚpi)Ú	approvalsÚuser_inputsÚGATEWAY_CODEX_ENABLEDÚ0Ú1ÚcodexÚreturnr   c                 ó>   — t          j        t          j        ¦  «        S ©N)r   Únowr	   Úutc© ó    ú[/home/lighthouse/esp32-dev/.cache/double-click-shortcuts-0.6.3/server/device_gateway/app.pyÚutc_nowrN   @   s   € ÝŒ<�œÑ%Ô%Ð%rL   Úintc                 óº  — t           j                             d¦  «        } | �\	 t          | ¦  «        }n-# t          $ r  d}t
                               d| ¦  «         Y nw xY wt          dt          d|¦  «        ¦  «        S t          j
        ¦   «                              ¦   «                              ¦   «         }|�$t          |                     ¦   «         dz  ¦  «        ndS )NÚGATEWAY_TIMEZONE_OFFSET_MINUTESr   z5invalid GATEWAY_TIMEZONE_OFFSET_MINUTES=%r; using UTCi0ýÿÿiH  é<   )ÚosÚenvironÚgetrO   Ú
ValueErrorÚloggerÚwarningÚmaxÚminr   rI   Ú
astimezoneÚ	utcoffsetÚtotal_seconds)Ú
configuredÚvalueÚoffsets      rM   Úgateway_timezone_offset_minutesra   D   sÕ   € Ý”—’Ð AÑBÔB€JØÐð	`Ý˜
‘O”OˆEˆEøÝð 	`ð 	`ð 	`ØˆEÝ�NŠNÐRÐT^Ñ_Ô_Ð_Ð_Ð_ð	`øøøõ �4�˜S %™œÑ)Ô)Ð)ÝŒ\‰^Œ^×&Ò&Ñ(Ô(×2Ò2Ñ4Ô4€FØ06Ð0B�3ˆv×#Ò#Ñ%Ô%¨Ñ+Ñ,Ô,Ð,ÈÐIs   £3 ³'AÁAc                  ón  — e Zd ZU ded<   ded<   ded<   ded<    ed„ ¬¦  «        Zded	<   d
Zded<    ee¬¦  «        Zded<   dZ	ded<    ee
j        d¬¦  «        Zded<    edd¬¦  «        Zded<   dZded<   dZded<   dZded<    ee¬¦  «        Zd ed!<    ee
j        d¬¦  «        Zded"<   d&d%„ZdS )'ÚDeviceÚstrÚ	device_idÚboardÚfirmwarezWebSocket | NoneÚ	websocketc                 ó(   — t          ¦   «         j        S rH   )r   ÚhexrK   rL   rM   ú<lambda>zDevice.<lambda>W   s   € µu±w´w´{€ rL   )Údefault_factoryÚconnection_idTÚboolÚonliner   Ú	last_seenNzdict[str, Any] | NoneÚ
last_eventF)rl   Úreprzasyncio.LockÚsettings_lock)Údefaultrr   zasyncio.Task | NoneÚsettings_taskz
str | NoneÚsettings_idr   rO   Úsettings_generationÚ Úlast_agent_statezset[str]ÚcapabilitiesÚ	send_lockrF   údict[str, Any]c                óš   — | j         | j        | j        | j        t	          | j        ¦  «        | j                             ¦   «         | j        dœS )N)re   rf   rg   ro   rz   rp   rq   )	re   rf   rg   ro   Úsortedrz   rp   Ú	isoformatrq   ©Úselfs    rM   ÚpubliczDevice.publicc   sI   € àœØ”ZØœØ”kÝ" 4Ô#4Ñ5Ô5Øœ×1Ò1Ñ3Ô3Øœ/ð
ð 
ð 	
rL   ©rF   r|   )Ú__name__Ú
__module__Ú__qualname__Ú__annotations__r   rm   ro   rN   rp   rq   ÚasyncioÚLockrs   ru   rv   rw   ry   Úsetrz   r{   r‚   rK   rL   rM   rc   rc   Q   sj  € € € € € € à€N€N�NØ€J€J�JØ€M€M�MØÐÐÑØ˜Ð/BÐ/BÐCÑCÔC€MÐCÐCÐCÑCØ€FÐÐÐÑØ˜%°Ð8Ñ8Ô8€IÐ8Ð8Ð8Ñ8Ø(,€JÐ,Ð,Ð,Ñ,Ø"' %¸¼È5Ð"QÑ"QÔ"Q€MÐQÐQÐQÑQØ).¨°tÀ%Ð)HÑ)HÔ)H€MÐHÐHÐHÑHØ"€KÐ"Ð"Ð"Ñ"Ø ÐÐ Ð Ð Ñ ØÐÐÐÐÑØ"˜U°3Ð7Ñ7Ô7€LÐ7Ð7Ð7Ñ7Ø#˜e°G´LÀuÐMÑMÔM€IÐMÐMÐMÑMð	
ð 	
ð 	
ð 	
ð 	
ð 	
rL   rc   c                  ó4   — e Zd ZU  edd¬¦  «        Zded<   dS )ÚApprovalDecisioné   é(   ©Ú
min_lengthÚ
max_lengthrd   ÚdecisionN)r„   r…   r†   r   r’   r‡   rK   rL   rM   rŒ   rŒ   o   s2   € € € € € € Ø�E Q°"Ð5Ñ5Ô5€HÐ5Ð5Ð5Ñ5Ð5Ð5rL   rŒ   c                  óX   — e Zd ZU  edd¬¦  «        Zded<    edd¬¦  «        Zded<   dS )	ÚDisplayMessager�   éP   r�   rd   Útitleiô  ÚbodyN)r„   r…   r†   r   r–   r‡   r—   rK   rL   rM   r”   r”   s   sR   € € € € € € Ø� !°Ð3Ñ3Ô3€EÐ3Ð3Ð3Ñ3Ø� ¨sÐ3Ñ3Ô3€DÐ3Ð3Ð3Ñ3Ð3Ð3rL   r”   c                  ó2   — e Zd ZU  ed¬¦  «        Zded<   dS )ÚTargetSelectionz;^(server|(?:agent:(?:pi|codex)|pi):[A-Za-z0-9._:-]{1,160})$)Úpatternrd   ÚtargetN©r„   r…   r†   r   r›   r‡   rK   rL   rM   r™   r™   x   s1   € € € € € € Ø�%Ð ^Ð_Ñ_Ô_€FÐ_Ð_Ð_Ñ_Ð_Ð_rL   r™   c                  ó   — e Zd ZU ded<   dS )ÚNotificationTestzLiteral['done', 'failed']ÚkindN)r„   r…   r†   r‡   rK   rL   rM   rž   rž   |   s   € € € € € € Ø#Ð#Ð#Ñ#Ð#Ð#rL   rž   zdict[str, Device]ÚdevicesÚdeviceÚpayloadr|   ÚNonec              ƒ  ó  K  — | j         r| j        €t          d¦  «        ‚| j        4 ƒd {V —† t	          j        | j                             |¦  «        d¦  «        ƒ d {V —† d d d ¦  «        ƒd {V —† d S # 1 ƒd {V —†swxY w Y   d S )Núdevice is offlineé   )ro   rh   ÚRuntimeErrorr{   rˆ   Úwait_forÚ	send_json)r¡   r¢   s     rM   Úsend_to_devicerª   ƒ   sJ  è è € ØŒ=ð 0˜FÔ,Ð4ÝÐ.Ñ/Ô/Ð/ØÔð Gð Gð Gð Gð Gð Gð Gð GÝÔ˜vÔ/×9Ò9¸'ÑBÔBÀAÑFÔFÐFÐFÐFÐFÐFÐFÐFðGð Gð Gñ Gô Gð Gð Gð Gð Gð Gð Gð Gð Gð Gð Gð Gð Gð Gð Gð Gð Gð Gð Gð Gøøøð Gð Gð Gð Gð Gð Gs   ­4A4Á4
A>ÂA>c                ód   — t                                | j        ¦  «        | u o| j        o| j        d uS rH   )r    rU   re   ro   rh   ©r¡   s    rM   Úcurrent_devicer­   ‹   s1   € Ý�;Š;�vÔ'Ñ(Ô(¨FÐ2Ðe°v´}ÐeÈÔIYÐaeÐIeÐerL   c                ó6   — t                                | ¦  «        S rH   ©Útarget_storerU   ©Údids    rM   rk   rk   �   s   € µL×4DÒ4DÀSÑ4IÔ4I€ rL   c                ó    — t          | ¦  «        S rH   )Úadapter_for©Úagents    rM   rk   rk   �   s   € ÕYdÐejÑYkÔYk€ rL   c                 óN   — t          t                               ¦   «         ¦  «        S rH   )rn   r@   Úlist_pendingrK   rL   rM   rk   rk   �   s   € ­­i×.DÒ.DÑ.FÔ.FÑ)GÔ)G€ rL   c                ó6   — t                                | ¦  «        S rH   )r°   Ú
generationr±   s    rM   rk   rk   �   s   € Õbn×byÒbyÐz}Ñb~Ôb~€ rL   c                ó8   — t                                | |¦  «        S rH   )Ú	navigatorÚvoice_prepare)ÚdÚes     rM   rk   rk   ‘   s   € �y×6Ò6°q¸Ñ;Ô;€ rL   c                ó8   — t                                | |¦  «        S rH   )r¼   Úvoice_valid)r¾   Úcs     rM   rk   rk   ‘   s   € ÕU^×UjÒUjÐklÐmnÑUoÔUo€ rL   c                ó:   — t                                | ||¦  «        S rH   )r¼   Úvoice_submit)r¾   rÂ   Úts      rM   rk   rk   ‘   s<   € õ  MV÷  Mcò  Mcð  deð  fgð  hiñ  Mjô  Mj€ rL   )Úgeneration_forÚcontext_prepareÚcontext_validÚcontext_submitc                óÆ   — t           j                             | j        ¦  «        }t	          t
                               ¦   «         ¦  «        pt	          |o|j        dv ¦  «        S )N)Ú	RECORDINGÚTRANSCRIBINGÚAWAITING_CONFIRMATIONÚSENDING)ÚvoicesÚrequestsrU   rm   rn   r@   r¸   Ústate)r¡   Úvoices     rM   Úspeech_blockedrÓ   ”   sd   € ÝŒO×Ò Ô 4Ñ5Ô5€EÝ•	×&Ò&Ñ(Ô(Ñ)Ô)ð  N­T°%ð  3M¸E¼Kð  LMð  =Mñ  .Nô  .Nð  NrL   ÚGATEWAY_SPEECH_FILEz*~/.config/esp32-device-gateway/speech.jsonc                ó6   — t                                | ¦  «        S rH   r¯   r±   s    rM   rk   rk   ›   s   € •× Ò  Ñ%Ô%€ rL   rx   ©ÚnameÚlatest_activityc          
     ó˜   — t          t                               ¦   «         ¦  «        D ]"}t                               || |||||¦  «         Œ#d S rH   )Úlistr    ÚvaluesÚspeechesÚterminal)r¶   Ú
session_idrÑ   Ú
final_textr×   rØ   r¡   s          rM   Úon_agent_terminalrà   ž   sT   € Ý•w—~’~Ñ'Ô'Ñ(Ô(ð _ð _ˆÝ×Ò˜& %¨°U¸JÈÈoÑ^Ô^Ð^Ð^ð_ð _rL   c                ó(  — t                                ¦   «         rdt          t                               ¦   «         ¦  «        D ]=}t
                               |¦  «         t                               |¦  «         d |_        Œ>|  	                    ¦   «          d S rH   )
r@   r¸   rÚ   r    rÛ   rÜ   ÚcancelrÏ   rv   rŠ   )Úchangedr¡   s     rM   Úapprovals_changedrä   £   sw   € Ý×ÒÑÔð &Ý�7Ÿ>š>Ñ+Ô+Ñ,Ô,ð 	&ð 	&ˆFÝ�OŠO˜FÑ#Ô#Ð#Ý�MŠM˜&Ñ!Ô!Ð!Ø!%ˆFÔÐØ‡K‚K�M„M€M€M€MrL   c              ƒ  ó   K  — |d         dk    r'| j         |                     d¦  «        k    rd | _         d S | j        4 ƒd {V —† t          | |¦  «        ƒ d {V —† d d d ¦  «        ƒd {V —† d S # 1 ƒd {V —†swxY w Y   d S )NÚtypeÚsettings_cancelÚ
request_id)rv   rU   rs   Ú_device_settings)r¡   Úevents     rM   Údevice_settingsrë   ¬   s%  è è € ØˆV„}Ð)Ò)Ð)ØÔ §¢¨<Ñ!8Ô!8Ò8Ð8Èt¸&Ô:LØˆØÔ#ð .ð .ð .ð .ð .ð .ð .ð .Ý˜v uÑ-Ô-Ð-Ð-Ð-Ð-Ð-Ð-Ð-ð.ð .ð .ñ .ô .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .øøøð .ð .ð .ð .ð .ð .s   ÁA-Á-
A7Á:A7c              ƒ  óö  ‡ ‡‡‡K  — |                      d¦  «        Št          ‰t          ¦  «        rdt          ‰¦  «        cxk    rdk    sn d S |d         dk    r‰ j        ‰k    rd ‰ _        d S t
                                ‰ j        ¦  «        Št
                               ‰ j        ¦  «        Št          ‰¦  «        }|st          ‰ d‰ddœ¦  «        ƒ d {V —† d S t                               ¦   «         s(t                               ¦   «         st          ‰ ¦  «        sd S |d         d	k    r‰‰ _        ‰‰ _        n1‰ j        ‰k    s$‰ j        ‰k    s|                      d
¦  «        ‰k    rd S ˆ ˆˆˆfd„}	 |\  }}t!          |¦  «        }|                     |¦  «        ƒ d {V —†} |¦   «         sd S |d         dk    rE|                     |t'          j        |                      di ¦  «        ¦  «        |¬¦  «        ƒ d {V —†}nT|                     |¦  «        ƒ d {V —†}|                      d¦  «        r$|dk    r|                     |¦  «        ƒ d {V —†|d<    |¦   «         sd S |                     t0                                |j        ¦  «        ¦  «        ƒ d {V —†}	t5          |d„ t7          |	d„ d¬¦  «        D ¦   «         ¦  «        } |¦   «         rNt          ‰ t9          d|d         dk    rdnd‰‰‰|j        dœ|¤Ž¦  «        ƒ d {V —† |d         dk    rd ‰ _        d S d S d S # t<          $ rQ}
 |¦   «         r<t          ‰ d‰t          |
t>          ¦  «        r|
j         nddœ¦  «        ƒ d {V —† Y d }
~
d S Y d }
~
d S d }
~
ww xY w)Nrè   r�   é@   ræ   rç   Úsettings_errorzNO AGENT SELECTED©ræ   rè   ÚmessageÚsettings_getr›   c                 óø   •— t          ‰ ¦  «        oj‰ j        ‰k    o_t                               ‰ j        ¦  «        ‰k    o<t                               ‰ j        ¦  «        ‰k    ot                               ¦   «          S rH   )r­   rv   r°   rU   re   rº   r@   r¸   )r¡   rº   Úridr›   s   €€€€rM   Úvalidz_device_settings.<locals>.validÈ   s¹   ø€ Ý˜fÑ%Ô%ð  P¨&Ô*<ÀÒ*Cð  PÍ×HXÒHXÐY_ÔYiÑHjÔHjÐntÒHtð  Põ  zF÷  zQò  zQð  RXô  Rbñ  zcô  zcð  eoò  zoð  Põ  xA÷  xNò  xNñ  xPô  xPð  tPð  	PrL   Úsettings_applyÚsettings)Ústill_validÚinclude_permissionsrE   Úpermissionsc                ó*   — g | ]}|j         ¯	|j         ‘ŒS rK   )Úmodel)Ú.0Úss     rM   ú
<listcomp>z$_device_settings.<locals>.<listcomp>×   s8   € ð  ,Að  ,Að  ,A¸ÐxyÔxð  ,A¨A¬Gð  ,Að  ,Að  ,ArL   c                ó   — | j         S rH   )Ú
updated_at)rý   s    rM   rk   z"_device_settings.<locals>.<lambda>×   s
   € ÐYZÔYe€ rL   T)ÚkeyÚreverseÚsettings_updatedÚsettings_state)ræ   rè   r›   Útarget_generationr×   zUPDATE FAILEDrK   )!rU   Ú
isinstancerd   Úlenrv   r°   re   rº   r   rª   r@   r¸   rA   Úpendingr­   rw   r´   Úget_sessionÚupdate_settingsr+   Úmodel_validateÚget_settingsrù   Úlist_sessionsÚproject_registryÚ
project_idr'   r~   Údictr×   Ú	Exceptionr(   Údetail)r¡   rê   Úparsedrô   r¶   ÚsidÚadapterÚsessionrö   ÚrecentÚexcrº   ró   r›   s   `          @@@rM   ré   ré   ´   s  øøøøè è € Ø
�)Š)�LÑ
!Ô
!€CÝ�c�3ÑÔð  q­C°©H¬HÐ':Ð':Ò':Ð':¸Ò':Ð':Ð':Ð':ØˆØˆV„}Ð)Ò)Ð)ØÔ Ò$Ð$Ø!%ˆFÔØˆÝ×Ò˜fÔ.Ñ/Ô/€FÝ×&Ò& vÔ'7Ñ8Ô8€JÝ˜&Ñ!Ô!€FØð Ý˜VÐ-=È3ÐYlÐ%mÐ%mÑnÔnÐnÐnÐnÐnÐnÐnÐnØˆÝ×ÒÑÔð ¥;×#6Ò#6Ñ#8Ô#8ð ÅÈvÑ@VÔ@Vð ØˆØˆV„}˜Ò&Ð&Ø ˆÔ¸J Ô!;Ð!;Ø	Ô	˜sÒ	"Ð	" fÔ&@À*Ò&LÐ&LÐPU×PYÒPYÐZbÑPcÔPcÐgmÒPmÐPmØˆðPð Pð Pð Pð Pð Pð Pð Pð]Ø‰
ˆˆsÝ˜eÑ$Ô$ˆØ×+Ò+¨CÑ0Ô0Ð0Ð0Ð0Ð0Ð0Ð0ˆØˆu‰wŒwÐ˜˜Ø�Œ=Ð,Ò,Ð,à$×4Ò4°S½(Ô:QÐRW×R[ÒR[Ð\fÐhjÑRkÔRkÑ:lÔ:lÐzÐ4ñ  Aô  Að  Að  Að  Að  Að  Að  AˆHˆHà$×1Ò1°#Ñ6Ô6Ð6Ð6Ð6Ð6Ð6Ð6ˆHØ�yŠyÐ.Ñ/Ô/Ðy°E¸7²N°NÐah×atÒatÐuxÑayÔayÐ[yÐ[yÐ[yÐ[yÐ[yÐ[yÀ8ÈMÑCZØˆu‰wŒwÐ˜˜Ø×,Ò,Õ-=×-AÒ-AÀ'ÔBTÑ-UÔ-UÑVÔVÐVÐVÐVÐVÐVÐVˆÝ  ð  ,Að  ,A½VÀFÐPeÐPeÐosÐ=tÑ=tÔ=tð  ,Añ  ,Aô  ,Añ  Bô  BˆØˆ5‰7Œ7ð 	JÝ  ­ð *hÈÈvÌÐXhÒIhÐIhÐ3EÐ3EÐn~Ø f¸zÈwÌ|ð*hð *hØ^fð*hð *hñ iô ið ið ið ið ið ið ið ià�VŒ}Ð.Ò.Ð.ÀT°Ô0BÐ0BÐ0Bð	Jð 	Jð /Ð.øÝð ]ð ]ð ]Øˆ5‰7Œ7ð 	]Ý  Ð1AÈsÝ(2°3½Ñ(EÔ(EÐZ˜#œ*˜*È?ð*\ð *\ñ ]ô ]ð ]ð ]ð ]ð ]ð ]ð ]ð ]ð ]ð ]ð ]ð ]ð ]ð ]ð	]ð 	]ð 	]ð 	]ð 	]ð 	]øøøøð]øøøs'   Å29L Æ-B/L ÉB9L Ì
M8Ì'A M3Í3M8c              ƒ  óx  K  — t          t                               ¦   «         ¦  «        D �]}|j        r|j        €Œ	 t          || ¦  «        ƒ d {V —† Œ*# t          $ rÚ t                               |dd¬¦  «         t                               |dd¬¦  «         d |_
        |j        rMt          t          ¦  «        5  |j                             d¬¦  «        ƒ d {V —† d d d ¦  «         n# 1 swxY w Y   d|_        d |_        t          ¦   «         |_        t                               d|j        ¦  «         Y �Œw xY wd S )NFT©ÚnotifyÚforgetéó  ©Úcodez4device %s disconnected while pushing server_snapshot)rÚ   r    rÛ   ro   rh   rª   r  rÜ   râ   rÏ   rv   r   ÚcloserN   rp   rW   rX   re   )r¢   r¡   s     rM   Úbroadcast_server_snapshotr!  â   s~  è è € Ý•w—~’~Ñ'Ô'Ñ(Ô(ð eñ eˆØŒ}ð 	 Ô 0Ð 8Øð	eÝ  ¨Ñ1Ô1Ð1Ð1Ð1Ð1Ð1Ð1Ð1Ð1øÝð 		eð 		eð 		eÝ�OŠO˜F¨5¸ˆOÑ>Ô>Ð>Ý�MŠM˜&¨°tˆMÑ<Ô<Ð<Ø!%ˆFÔØÔð RÝ�iÑ(Ô(ÐQÐQ°Ô0@×0FÒ0FÈDÐ0FÑ0QÔ0QÐ*QÐ*QÐ*QÐ*QÐ*QÐ*QÐ*QÐQÐQÐQÑQÔQÐQÐQÐQÐQÐQÐQøøøÐQÐQÐQÐQØ!ˆFŒMØ#ˆFÔÝ&™yœyˆFÔÝ�NŠNÐQÐSYÔScÑdÔdÐdÐdÑdð		eøøøðeð es7   ¼AÁA&D7Â9"C'ÃD7Ã'C+Ã+D7Ã.C+Ã/AD7Ä6D7c               ƒ  óæ   K  — 	 t                                ¦   «         } t          t          | ¦  «        ¦  «        ƒ d {V —† t	          ¦   «         ƒ d {V —† t          j        t          ¦  «        ƒ d {V —† ŒorH   )Úsystem_collectorÚcollectr!  Údevice_snapshot_payloadÚpush_agent_targetsrˆ   ÚsleepÚsnapshot_interval_seconds©Úsnapshots    rM   Úmonitor_systemr+  ô   s‹   è è € ð7Ý#×+Ò+Ñ-Ô-ˆÝ'Õ(?ÀÑ(IÔ(IÑJÔJÐJÐJÐJÐJÐJÐJÐJÝ Ñ"Ô"Ð"Ð"Ð"Ð"Ð"Ð"Ð"ÝŒmÕ5Ñ6Ô6Ð6Ð6Ð6Ð6Ð6Ð6Ð6ð	7rL   r*  úServerSnapshot | Nonec           	     óÄ  — | p$t           j        pt                                ¦   «         } |                      ¦   «         }t                               d¦  «        }t          | j        | j        ddt                               d¦  «        ¬¦  «        |d<   |d         t          d<   t          |dd¦  «        }|                     |�|                     ¦   «         ndd	ddd
œ¦  «         |S )zúExisting server snapshot plus derived glance fields.

    No new message type, no extra frame and no device-driven refresh: the same
    2 s frame simply carries a few more small fields. Account identity, plan
    and credits are never included.
    rE   TÚlast)rô   Úgateway_onlineÚpreviousr   ÚquotaNFr   )Úcodex_quota_validÚcodex_remaining_percentÚcodex_resets_atÚcodex_window_minutes)r#  Úlatestr$  Ú
model_dumpÚadaptersrU   r   Úcpu_percentÚmemory_percentr9   ÚgetattrÚupdateÚwire)r*  r¢   r  r1  s       rM   r%  r%  ü   sç   € ð ÐPÕ+Ô2ÐPÕ6F×6NÒ6NÑ6PÔ6P€HØ×!Ò!Ñ#Ô#€GÝ�lŠl˜7Ñ#Ô#€GÝ& xÔ';¸XÔ=TØ 4µ+·/²/À&Ñ2IÔ2IðKñ Kô K€GˆLÑà! ,Ô/…K�ÑÝ�G˜W dÑ+Ô+€EØ‡N‚N 5Ð#4�5—:’:‘<”<�<Ø.3ÐPQØ,0È$ðPð PñQô Qð Qð €NrL   c            
   ƒ  ó(	  K  — t          t                               ¦   «         ¦  «        D �]Z} | j        }| j        r| j        s!t          j                             |d ¦  «         Œ9	 t          j         	                    |¦  «        }t           	                    |¦  «        }|rP|�|j
        dk    rCt          | d||r|j
        nddœ¦  «        ƒ d {V —† t          j                             |d ¦  «         |t          j        vr³t                               ¦   «         }|r˜|d         }t                               | ¦  «         t                               | ¦  «         d | _        |j        t          j        |<   t%          j        t          | t                               |¦  «        ¦  «        d¦  «        ƒ d {V —† �Œˆ# t*          $ rÇ t          j                             |d ¦  «         t                               | dd¬	¦  «         t                               | dd¬	¦  «         d | _        d| _        | j        rMt-          t*          ¦  «        5  | j                             d
¬¦  «        ƒ d {V —† d d d ¦  «         n# 1 swxY w Y   d | _        Y �ŒXw xY wt          t                               ¦   «         ¦  «        D �]�} | j        }t1          | ¦  «        s!t2          j                             |d ¦  «         Œ:d| j        vrŒDt2          j         	                    |¦  «        }t                               ¦   «         st2                               ¦   «         ng }|r|d         nd }|r"|d         |d         |d                  d         fnd }||k    rÎ|rlt                               | ¦  «         t          | t9          d|d         |d         ¬¦  «        ¦  «        ƒ d {V —† t2          j                             |d ¦  «         |r^t                               | ¦  «         d | _        |t2          j        |<   t          | t2                               |¦  «        ¦  «        ƒ d {V —† �ŒŸt          t:          j                             ¦   «         ¦  «        D ]}	t?          |	j         ¦  «        ƒ d {V —† Œd S )NÚPENDINGÚapproval_cancelledÚ	CANCELLED)ræ   Úapproval_idrÑ   r   r¦   FTr  r  r  únative-interactionrè   Ú	questionsÚindexÚidÚuser_input_cancelledr�   )ræ   rè   Úquestion_id)!rÚ   r    rÛ   rm   ro   rh   r@   ÚpresentationsÚpoprU   rÑ   rª   r¸   rÜ   râ   rÏ   rv   rB  rˆ   r¨   r=  r  r   r   r­   rA   rz   r  r  Úpi_sessionsÚsessionsÚpush_selected_pi_sessionrÞ   )
r¡   Ú
connectionÚ
current_idÚcurrentr  Úapprovalr0  ÚentryÚpresentationr  s
             rM   Úsynchronize_approvalsrT    s÷  è è € õ •w—~’~Ñ'Ô'Ñ(Ô(ð $ñ $ˆØÔ)ˆ
ØŒ}ð 	 FÔ$4ð 	ÝÔ#×'Ò'¨
°DÑ9Ô9Ð9Øð	$Ý"Ô0×4Ò4°ZÑ@Ô@ˆJÝ—m’m JÑ/Ô/ˆGØð >˜w˜°'´-À9Ò2LÐ2LÝ$ VÐ6JÐ[eØ.5ÐF˜Wœ]˜]¸;ð.Hð .Hñ Iô Ið Ið Ið Ið Ið Ið Ið IåÔ'×+Ò+¨J¸Ñ=Ô=Ð=Ø¥Ô!8Ð8Ð8Ý#×0Ò0Ñ2Ô2�Øð `Ø& qœz�HÝ—O’O FÑ+Ô+Ð+Ý—M’M &Ñ)Ô)Ð)Ø)-�FÔ&Ø:BÔ:N•IÔ+¨JÑ7Ý!Ô*­>¸&Å)Ç.Â.ÐQYÑBZÔBZÑ+[Ô+[Ð]^Ñ_Ô_Ð_Ð_Ð_Ð_Ð_Ð_Ð_ùøÝð 		$ð 		$ð 		$ÝÔ#×'Ò'¨
°DÑ9Ô9Ð9Ý�OŠO˜F¨5¸ˆOÑ>Ô>Ð>Ý�MŠM˜&¨°tˆMÑ<Ô<Ð<Ø!%ˆFÔØ!ˆFŒMØÔð <Ý�iÑ(Ô(ð <ð <Ø Ô*×0Ò0°dÐ0Ñ;Ô;Ð;Ð;Ð;Ð;Ð;Ð;Ð;ð<ð <ð <ñ <ô <ð <ð <ð <ð <ð <ð <øøøð <ð <ð <ð <à#ˆFÔÐÑð		$øøøõ •w—~’~Ñ'Ô'Ñ(Ô(ð Eñ EˆØÔ'ˆ
Ý˜fÑ%Ô%Ð]¥kÔ&?×&CÒ&CÀJÈtÑ&TÔ&TÐ&TÐU]Ø vÔ':Ð:Ð:¸8ÝÔ*×.Ò.¨zÑ:Ô:ˆÝ-6×-CÒ-CÑ-EÔ-EÐM•×#Ò#Ñ%Ô%Ð%È2ˆØ#Ð-ˆg�aŒjˆj¨ˆØW\Ðf�e˜LÔ)¨%°Ô*<¸UÀ7¼^Ô*LÈTÔ*RÐSÐSÐbfˆØ�\Ò!Ð!Øð ?Ý—’˜fÑ%Ô%Ð%Ý$ V­DÐ6LÐX`ÐabÔXcÐpxÐyzÔp{Ð,|Ñ,|Ô,|Ñ}Ô}Ð}Ð}Ð}Ð}Ð}Ð}Ð}ÝÔ)×-Ò-¨j¸Ñ>Ô>Ð>Øð EÝ—’˜fÑ%Ô%Ð%¸ fÔ&8Ø6B•Ô)¨*Ñ5Ý$ V­K×,<Ò,<¸UÑ,CÔ,CÑDÔDÐDÐDÐDÐDÐDÐDÐDùõ �Ô,×3Ò3Ñ5Ô5Ñ6Ô6ð ;ð ;ˆÝ& wÔ'9Ñ:Ô:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ð:ð;ð ;s8   Á#EF1Æ1BJÈ>"I,É JÉ,I0É0JÉ3I0É4
JÊJc              ƒ  óŽ   K  — 	 |                       ¦   «         ƒ d {V —† |                      ¦   «          t          ¦   «         ƒ d {V —† ŒCrH   )ÚwaitÚclearrT  ©rã   s    rM   Úapproval_deliveryrY  I  s[   è è € ð&Ø�lŠl‰nŒnÐÐÐÐÐÐÐØ�Š‰ŒˆÝ#Ñ%Ô%Ð%Ð%Ð%Ð%Ð%Ð%Ð%ð&rL   c                óŠ   — t                                | ¦  «         t                               | ¦  «         d | _        d| _        d S )Nrx   )rÜ   râ   rÏ   rv   ry   r¬   s    rM   Úinvalidate_targetr[  P  s:   € Ý‡O‚O�FÑÔÐ�FŸMšM¨&Ñ1Ô1Ð1ÀT°&Ô2DÐbdÈ&ÔJaÐJaÐJarL   c                  ó   — e Zd Zd„ Zd„ ZdS )ÚDynamicNavigatorc                ó"   — d | _         d | _        d S rH   )ÚinstanceÚidentityr€   s    rM   Ú__init__zDynamicNavigator.__init__U  s   €  T�t”}¸¨$¬-¨-¨-rL   c                ó¤  — t          t          ¦  «        t          t          ¦  «        t          t          ¦  «        t          t          ¦  «        t          t
          ¦  «        f}| j        |k    rPt          t          t          t          t          t
          t          t          t          t          ¦	  «	        | _        || _        t          | j        |¦  «        S rH   )rF  r  r8  r°   Ú
operationsrA   r`  r3   rª   r­   Úagent_target_payloadr[  r_  r;  )r�   r×   r`  s      rM   Ú__getattr__zDynamicNavigator.__getattr__V  s    € ÝÕ%Ñ&Ô&¥r­(¡|¤|µBµ|Ñ4DÔ4DÅRÍ
Á^Ä^ÕTVÕWbÑTcÔTcÐdˆØŒ=˜(Ò"Ð"Ý#Õ$4µX½lÍ:ÕVaÕbpÕqõ  AUõ  Vgñ  hô  hˆDŒMð  wð  imô  ivÝ�t”} TÑ*Ô*Ð*rL   N)r„   r…   r†   ra  re  rK   rL   rM   r]  r]  T  s,   € € € € € Ø<Ð<Ð<ð+ð +ð +ð +ð +rL   r]  Ú_r   c           	    ó   ‡K  — t          j        ¦   «         Šˆfd„t          _        ˆfd„t          _        dt
          v r.t          t
          d         _        t          t
          d         _	        t          t          t          ¦  «        }t          j        t          ‰¦  «        d¬¦  «        }t          j        t          ¦   «         d¬¦  «        }	 d W V — t                               ¦   «          t                               ¦   «         D ]}t                               |¦  «         Œt$                               ¦   «         ƒ d {V —† t&                               ¦   «         ƒ d {V —† |                     ¦   «         ƒ d {V —† t          j        d„ t
                               ¦   «         D ¦   «         Ž ƒ d {V —† t-          ¦   «         ƒ d {V —† d t          _        d t          _        ||fD ]O}|                     ¦   «          t/          t           j        ¦  «        5  |ƒ d {V —† d d d ¦  «         n# 1 swxY w Y   ŒPd S # t                               ¦   «          t                               ¦   «         D ]}t                               |¦  «         Œt$                               ¦   «         ƒ d {V —† t&                               ¦   «         ƒ d {V —† |                     ¦   «         ƒ d {V —† t          j        d„ t
                               ¦   «         D ¦   «         Ž ƒ d {V —† t-          ¦   «         ƒ d {V —† d t          _        d t          _        ||fD ]O}|                     ¦   «          t/          t           j        ¦  «        5  |ƒ d {V —† d d d ¦  «         n# 1 swxY w Y   ŒPw xY w)Nc                 ó"   •— t          ‰ ¦  «        S rH   )rä   rX  s   €rM   rk   zlifespan.<locals>.<lambda>`  s   ø€ Õ"3°GÑ"<Ô"<€ rL   c                 ó,   •— ‰                       ¦   «         S rH   )rŠ   rX  s   €rM   rk   zlifespan.<locals>.<lambda>a  s   ø€  §¢¡¤€ rL   rE   zapproval-delivery)r×   zsystem-monitorc              3  ó>   K  — | ]}|                      ¦   «         V — Œd S rH   )r   )rü   r  s     rM   ú	<genexpr>zlifespan.<locals>.<genexpr>q  s*   è è € ÐPÐP°7˜wŸ}š}™œÐPÐPÐPÐPÐPÐPrL   )rˆ   ÚEventr@   Ú	on_changerA   r8  Úqueue_codex_activityÚon_activityrà   Úon_terminalr0   r  Úcreate_taskrY  r+  r   r  râ   rÜ   rÏ   ÚgatherrÛ   rT  r   ÚCancelledError)rf  Úapproval_serverÚdelivery_taskÚmonitor_taskrR  Útaskrã   s         @rM   Úlifespanrx  ]  s  øè è € åŒm‰oŒo€GØ<Ð<Ð<Ð<…IÔØ.Ð.Ð.Ð.…KÔØ•(ÐÐÝ(<��ÔÔ%Ý(9��ÔÔ%Ý&¥yÕ2BÑCÔC€OåÔ'Õ(9¸'Ñ(BÔ(BÐI\Ð]Ñ]Ô]€MÝÔ&¥~Ñ'7Ô'7Ð>NÐOÑOÔO€LðØˆˆˆˆå�ŠÑÔÐÝ ×(Ò(Ñ*Ô*ÐDÐDˆE­;×+=Ò+=¸eÑ+DÔ+DÐ+DÐ+DÝ�nŠnÑÔÐÐÐÐÐÐÐÝ�lŠl‰nŒnÐÐÐÐÐÐÐØ×#Ò#Ñ%Ô%Ð%Ð%Ð%Ð%Ð%Ð%Ð%ÝŒnÐPÐP½h¿oºoÑ>OÔ>OÐPÑPÔPÐQÐQÐQÐQÐQÐQÐQÐQÝ#Ñ%Ô%Ð%Ð%Ð%Ð%Ð%Ð%Ð%Ø"�	ÔØ"�ÔØ! =Ð1ð 	ð 	ˆDØ�KŠK‰MŒMˆMÝ�'Ô0Ñ1Ô1ð ð Ø�
�
�
�
�
�
�
ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð øð	ð 	øõ 	�ŠÑÔÐÝ ×(Ò(Ñ*Ô*ÐDÐDˆE­;×+=Ò+=¸eÑ+DÔ+DÐ+DÐ+DÝ�nŠnÑÔÐÐÐÐÐÐÐÝ�lŠl‰nŒnÐÐÐÐÐÐÐØ×#Ò#Ñ%Ô%Ð%Ð%Ð%Ð%Ð%Ð%Ð%ÝŒnÐPÐP½h¿oºoÑ>OÔ>OÐPÑPÔPÐQÐQÐQÐQÐQÐQÐQÐQÝ#Ñ%Ô%Ð%Ð%Ð%Ð%Ð%Ð%Ð%Ø"�	ÔØ"�ÔØ! =Ð1ð 	ð 	ˆDØ�KŠK‰MŒMˆMÝ�'Ô0Ñ1Ô1ð ð Ø�
�
�
�
�
�
�
ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð øð	øøøsC   ÃH/ È	H!È!H%	È(H%	È/D<NÍ+	N 	Í4NÎ NÎNÎNÎNzDevice Lab Gatewayú0.5.0)r–   Úversionrx  r  r(   c              ƒ  ó@   K  — t          |j        d|j        i¬¦  «        S )Nr  )Ústatus_codeÚcontent)r   Ústatusr  )Úrequestr  s     rM   Úcontrol_error_handlerr€  ~  s"   è è € å C¤J¸À3Ä:Ð8NÐOÑOÔOÐOrL   r¶   rd   c                óN   — | t           vrt          dd¦  «        ‚t           |          S )Nzagent adapter not enabledé”  )r8  r(   rµ   s    rM   r´   r´   ƒ  s(   € Ø•HÐÐÝÐ6¸Ñ<Ô<Ð<Ý�EŒ?ÐrL   z/api/approvalsc               ƒ  óL   K  — d„ t                                ¦   «         D ¦   «         S )Nc                ó:   — g | ]}|                      d ¬¦  «        ‘ŒS )Újson)Úmode)r7  )rü   rQ  s     rM   rþ   z"list_approvals.<locals>.<listcomp>‹  s)   € ÐVÐVÐV°ˆH×Ò VÐÑ,Ô,ÐVÐVÐVrL   )r@   r¸   rK   rL   rM   Úlist_approvalsr‡  ‰  s&   è è € àVÐV½Y×=SÒ=SÑ=UÔ=UÐVÑVÔVÐVrL   z%/api/approvals/{approval_id}/decisionrB  r_   c              ƒ  ó®   K  — t                                | |j        ¦  «        st          dd¬¦  «        ‚d| t                                | ¦  «        j        dœS )Né™  z'approval is missing or already resolved©r|  r  T)ÚacceptedrB  rÑ   )r@   Úresolver’   r   rU   rÑ   )rB  r_   s     rM   Údecide_approvalr�  Ž  sU   è è € å×Ò˜[¨%¬.Ñ9Ô9ð _Ý¨Ð4]Ð^Ñ^Ô^Ð^Ø¨[Å9Ç=Â=ÐQ\ÑC]ÔC]ÔCcÐdÐdÐdrL   z/api/projectsc               ƒ  ó8   K  — t                                ¦   «         S rH   )r  rÚ   rK   rL   rM   Úlist_projectsr�  •  s   è è € å× Ò Ñ"Ô"Ð"rL   éÉ   ©r|  Úprojectr*   c              ƒ  ó:   K  — t                                | ¦  «        S rH   )r  Úadd)r’  s    rM   Úadd_projectr•  š  s   è è € å×Ò Ñ(Ô(Ð(rL   z/api/projects/{project_id}éÌ   r  c              ƒ  ó>   K  — t                                | ¦  «         d S rH   )r  Údelete)r  s    rM   Údelete_projectr™  Ÿ  s    è è € å×Ò˜JÑ'Ô'Ð'Ð'Ð'rL   z/api/agentsc               ƒ  ó(   K  — d„ t           D ¦   «         S )Nc                ó   — g | ]	}|g d ¢dœ‘Œ
S ))r  Úresume_sessionÚ
send_inputr  Úlist_modelsr
  )r¶   rz   rK   )rü   r×   s     rM   rþ   zlist_agents.<locals>.<listcomp>¦  sM   € ð  gð  gð  gð  VZ�dð  -Pð  -Pð  -Pð  Qð  Qð  gð  gð  grL   )r8  rK   rL   rM   Úlist_agentsrŸ  ¤  s1   è è € ð gð  gõ  ^fð  gñ  gô  gð  grL   z#/api/projects/{project_id}/sessionsc              ƒ  ó�  ‡K  — t                                | ¦  «        Šg i }}t          j        ˆfd„t                               ¦   «         D ¦   «         ddiŽƒ d {V —†}t          t          |¦  «        D ]Q\  }}t          |t          ¦  «        r"t          |t          ¦  «        r|j
        nd||<   Œ<|                     |¦  «         ŒR||dœS )Nc              3  óB   •K  — | ]}|                      ‰¦  «        V — Œd S rH   )r  )rü   r  r’  s     €rM   rk  z#project_sessions.<locals>.<genexpr>­  s1   øè è € Ð$eÐ$eÈ W×%:Ò%:¸7Ñ%CÔ%CÐ$eÐ$eÐ$eÐ$eÐ$eÐ$erL   Úreturn_exceptionsTzagent catalog unavailable)rL  Úerrors)r  rU   rˆ   rr  r8  rÛ   Úzipr  r  r(   r  Úextend)r  rL  r£  Úresultsr×   Úresultr’  s         @rM   Úproject_sessionsr¨  ©  sß   øè è € å×"Ò" :Ñ.Ô.€GØ˜2ˆf€HÝ”NÐ$eÐ$eÐ$eÐ$eÕS[×SbÒSbÑSdÔSdÐ$eÑ$eÔ$eÐ~Ðy}Ð~Ð~Ð~Ð~Ð~Ð~Ð~Ð~€GÝ�H gÑ.Ô.ð $ð $‰ˆˆfÝ�f�iÑ(Ô(ð 	$Ý,6°v½|Ñ,LÔ,LÐm˜6œ=˜=ÐRmˆF�4‰LˆLà�OŠO˜FÑ#Ô#Ð#Ð#Ø ¨FÐ3Ð3Ð3rL   z)/api/agents/{agent}/sessions/{session_id}rÞ   c              ƒ  óV   K  — t          | ¦  «                             |¦  «        ƒ d {V —†S rH   )r´   r	  ©r¶   rÞ   s     rM   Úget_agent_sessionr«  ¶  s4   è è € å˜UÑ#Ô#×/Ò/°
Ñ;Ô;Ð;Ð;Ð;Ð;Ð;Ð;Ð;rL   z0/api/agents/{agent}/sessions/{session_id}/resumec              ƒ  ód   K  — t          | ¦  «                             |¦  «        ƒ d {V —†}d| ||dœS )NT)r‹  r¶   rÞ   Úresumed)r´   rœ  )r¶   rÞ   r­  s      rM   Úresume_agent_sessionr®  »  sF   è è € å Ñ&Ô&×5Ò5°jÑAÔAÐAÐAÐAÐAÐAÐA€GØ u¸JÐSZÐ[Ð[Ð[rL   z//api/agents/{agent}/sessions/{session_id}/inputéÊ   r)   c              ƒ  ób   K  — t          | ¦  «                             ||j        ¦  «        ƒ d {V —†S rH   )r´   r�  Útext©r¶   rÞ   r_   s      rM   Úagent_inputr³  Á  s8   è è € å˜UÑ#Ô#×.Ò.¨z¸5¼:ÑFÔFÐFÐFÐFÐFÐFÐFÐFrL   z2/api/agents/{agent}/sessions/{session_id}/settingsc              ƒ  óV   K  — t          | ¦  «                             |¦  «        ƒ d {V —†S rH   )r´   r  rª  s     rM   r  r  Æ  s4   è è € å˜UÑ#Ô#×0Ò0°Ñ<Ô<Ð<Ð<Ð<Ð<Ð<Ð<Ð<rL   r+   c              ƒ  óX   K  — t          | ¦  «                             ||¦  «        ƒ d {V —†S rH   )r´   r
  r²  s      rM   r
  r
  Ë  s6   è è € å˜UÑ#Ô#×3Ò3°JÀÑFÔFÐFÐFÐFÐFÐFÐFÐFrL   z/healthc               ƒ  ón   K  — ddt          d„ t                               ¦   «         D ¦   «         ¦  «        dœS )NÚokry  c              3  ó$   K  — | ]}|j         V — Œd S rH   )ro   )rü   r¾   s     rM   rk  zhealth.<locals>.<genexpr>Ò  s%   è è € ÐMqÐMqÐ[\ÈaÌhÐMqÐMqÐMqÐMqÐMqÐMqrL   )r~  Úcontrol_versionÚonline_devices)Úsumr    rÛ   rK   rL   rM   Úhealthr¼  Ð  s:   è è € à¨wÍ#ÐMqÐMqÕ`g×`nÒ`nÑ`pÔ`pÐMqÑMqÔMqÑJqÔJqÐrÐrÐrrL   ú/F)Úinclude_in_schemar   c               ƒ  ó(   K  — t          dd¬¦  «        S )Nú/admini3  r‘  )r   rK   rL   rM   ÚrootrÁ  Õ  s   è è € å˜H°#Ð6Ñ6Ô6Ð6rL   rÀ  r   c               ƒ  ó2   K  — t          t          d¬¦  «        S )Nz	text/html©Ú
media_type)r   Úadmin_page_pathrK   rL   rM   Ú
admin_pagerÆ  Ú  s   è è € å�°KÐ@Ñ@Ô@Ð@rL   z/api/admin.jsc               ƒ  ó¨   K  — t          t          j                             t          j                             t
          ¦  «        d¦  «        d¬¦  «        S )Nzadmin.jsztext/javascriptrÃ  )r   rS   ÚpathÚjoinÚdirnamerÅ  rK   rL   rM   Úadmin_scriptrË  ß  s8   è è € å�œŸš¥R¤W§_¢_µ_Ñ%EÔ%EÀzÑRÔRÐ_pÐqÑqÔqÐqrL   z/serverc               ƒ  óx   K  — t           j        pt                                ¦   «         } |                      ¦   «         S rH   )r#  r6  r$  r7  r)  s    rM   Úserver_statusrÍ  ä  s2   è è € åÔ&ÐDÕ*:×*BÒ*BÑ*DÔ*D€HØ×ÒÑ Ô Ð rL   z/devicesúlist[dict[str, Any]]c               ƒ  óX  K  — g } t          t                               ¦   «         d„ ¬¦  «        D ]{}|                     ¦   «         }t                               |j        ¦  «        |d<   t          j                             |j        |d         ¦  «        |d<   |  	                    |¦  «         Œ|| S )Nc                ó   — | j         S rH   )re   )r¾   s    rM   rk   zlist_devices.<locals>.<lambda>í  s   € ¸¼€ rL   )r  r›   Úspeech_mode)
r~   r    rÛ   r‚   r°   rU   re   rÜ   ÚpreferencesÚappend)r§  r¡   Úitems      rM   Úlist_devicesrÕ  ê  sš   è è € à€FÝ�ŸšÑ)Ô)Ð/DÐ/DÐEÑEÔEð ð ˆØ�}Š}‰ŒˆÝ%×)Ò)¨&Ô*:Ñ;Ô;ˆˆX‰Ý&Ô2×6Ò6°vÔ7GÈÈhÌÑXÔXˆˆ]ÑØ�Š�dÑÔÐÐØ€MrL   z/api/statusc               ƒ  ór  K  — t           j        pt                                ¦   «         } t                               ¦   «         }|D ]K}t
                               d|d         ¦  «        }|r&d|d<   |d         j        dz   |d         j        z   |d<   ŒL|  	                    ¦   «         t          ¦   «         ƒ d {V —†|dœS )	Nr?   rÞ   ÚWAITING_APPROVALrÑ   r   ú: Úwaiting_reason)Úserverr    rK  )r#  r6  r$  rK  r‚   r@   r¸   r–   r  r7  rÕ  )r*  rL  r  r  s       rM   Úadmin_statusrÛ  õ  sÍ   è è € åÔ&ÐDÕ*:×*BÒ*BÑ*DÔ*D€HÝ×!Ò!Ñ#Ô#€HØð Tð TˆÝ×(Ò(¨¨w°|Ô/DÑEÔEˆØð 	TØ1ˆG�GÑØ(/°¬
Ô(8¸4Ñ(?À'È!Ä*ÔBSÑ(SˆGÐ$Ñ%øà×%Ò%Ñ'Ô'Ý%™œÐ'Ð'Ð'Ð'Ð'Ð'Øðð ð rL   Únotificationú Literal['done', 'failed'] | Nonec           
     ó.  — t                                | ¦  «        }|€ddd| › �| | dddd dœ	S ddd| › �dœ|                     d	¬
¦  «        ¥}t                               d| ¦  «        }|r&d|d<   |d         j        dz   |d         j        z   |d<   |�||d<   |S )NÚagent_stater?   ú	agent:pi:rx   ÚOFFLINEr   )	ræ   r¶   r›   rÞ   r×   ÚcwdrÑ   Úelapsed_secondsrÙ  )ræ   r¶   r›   T)Úinclude_historyr×  rÑ   rØ  rÙ  rÜ  )rK  rU   r‚   r@   r¸   r–   r  )rÞ   rÜ  r  r¢   r  s        rM   Úpi_target_payloadrå    sã   € õ �oŠo˜jÑ)Ô)€GØ€à!¨DØ. *Ð.Ð.Ø$ØØØØ Ø"ð	
ð 	
ð 		
ð ¨Ø*˜jÐ*Ð*ðð ð �.Š.¨ˆ.Ñ
.Ô
.ð€Gõ
 ×$Ò$ T¨:Ñ6Ô6€GØð PØ-ˆ�ÑØ$+¨A¤JÔ$4°tÑ$;¸gÀa¼jÔ>OÑ$OˆÐ Ñ!ØÐØ".ˆ�ÑØ€NrL   c              ƒ  óŽ  K  — d| › �}t          |¦  «        ƒ d {V —†}|�||d<   t          t                               ¦   «         ¦  «        D �]y}t                               |j        ¦  «        |k    rŒ't                               |j        ¦  «        }t                               |j        ¦  «        |k    s#t                               |j        ¦  «        |k    rŒ�	 t          |t          ||¬¦  «        ¦  «        ƒ d {V —† Œ´# t          $ rº t                               |dd¬¦  «         t                               |dd¬¦  «         d |_        |j        rMt!          t          ¦  «        5  |j                             d¬¦  «        ƒ d {V —† d d d ¦  «         n# 1 swxY w Y   d|_        d |_        t'          ¦   «         |_        Y �Œww xY wd S )	Nrà  rÜ  ©r  FTr  r  r  )rd  rÚ   r    rÛ   r°   rU   re   rº   rª   r  r  rÜ   râ   rÏ   rv   rh   r   r   ro   rN   rp   )rÞ   rÜ  r›   r¢   r¡   rº   s         rM   rM  rM  "  s  è è € ð &˜Ð%Ð%€FÝ(¨Ñ0Ô0Ð0Ð0Ð0Ð0Ð0Ð0€GØÐ¸< ¨Ñ!8Ý•w—~’~Ñ'Ô'Ñ(Ô(ð )ñ )ˆÝ×Ò˜FÔ,Ñ-Ô-°Ò7Ð7ØÝ!×,Ò,¨VÔ-=Ñ>Ô>ˆ
õ ×Ò˜FÔ,Ñ-Ô-°Ò7Ð7½<×;RÒ;RÐSYÔScÑ;dÔ;dÐhrÒ;rÐ;rØð
	)Ý  ­¨gÈÐ)TÑ)TÔ)TÑUÔUÐUÐUÐUÐUÐUÐUÐUÐUøÝð 	)ð 	)ð 	)Ý�OŠO˜F¨5¸ˆOÑ>Ô>Ð>Ý�MŠM˜&¨°tˆMÑ<Ô<Ð<Ø!%ˆFÔØÔð RÝ�iÑ(Ô(ÐQÐQ°Ô0@×0FÒ0FÈDÐ0FÑ0QÔ0QÐ*QÐ*QÐ*QÐ*QÐ*QÐ*QÐ*QÐQÐQÐQÑQÔQÐQÐQÐQÐQÐQÐQøøøÐQÐQÐQÐQØ!ˆFŒMØ#ˆFÔÝ&™yœyˆFÔÐÑð	)øøøð)ð )s7   Ã%C>Ã>A&GÅ$"FÆGÆFÆGÆFÆ$GÇGrê   r   c              ƒ  óH  K  — t                                | j        ¦  «        }|�|j        sd S ddd| j        › �| j        |j        |j        |j        �|j                             ¦   «         nd dœ}t          t           	                    ¦   «         ¦  «        D �]}t                               |j        ¦  «        d| j        › �k    rŒ/	 t          ||¦  «        ƒ d {V —† ŒG# t          $ rº t                               |dd¬¦  «         t                                |dd¬¦  «         d |_        |j        rMt'          t          ¦  «        5  |j                             d¬	¦  «        ƒ d {V —† d d d ¦  «         n# 1 swxY w Y   d|_        d |_        t-          ¦   «         |_        Y �Œ
w xY wd S )
NÚagent_activityr?   rà  )ræ   r¶   r›   rÞ   Úactivity_typeÚactivityr   FTr  r  r  )rK  rU   rÞ   rØ   rê  Úactivity_updated_atr   rÚ   r    rÛ   r°   re   rª   r  rÜ   râ   rÏ   rv   rh   r   r   ro   rN   rp   )rê   r  r¢   r¡   s       rM   Úpush_selected_pi_activityrí  =  sï  è è € Ý�oŠo˜eÔ.Ñ/Ô/€GØ€˜gÔ5€Øˆà ¨4Ø0˜eÔ.Ð0Ð0ØÔ&Ø Ô.ØÔ+ð Ô*Ð6ð Ô'×1Ò1Ñ3Ô3Ð3àðð €Gõ •w—~’~Ñ'Ô'Ñ(Ô(ð )ñ )ˆÝ×Ò˜FÔ,Ñ-Ô-Ð1O¸UÔ=MÐ1OÐ1OÒOÐOØð
	)Ý  ¨Ñ1Ô1Ð1Ð1Ð1Ð1Ð1Ð1Ð1Ð1øÝð 	)ð 	)ð 	)Ý�OŠO˜F¨5¸ˆOÑ>Ô>Ð>Ý�MŠM˜&¨°tˆMÑ<Ô<Ð<Ø!%ˆFÔØÔð RÝ�iÑ(Ô(ÐQÐQ°Ô0@×0FÒ0FÈDÐ0FÑ0QÔ0QÐ*QÐ*QÐ*QÐ*QÐ*QÐ*QÐ*QÐQÐQÐQÑQÔQÐQÐQÐQÐQÐQÐQøøøÐQÐQÐQÐQØ!ˆFŒMØ#ˆFÔÝ&™yœyˆFÔÐÑð	)øøøð)ð )s7   ÃCÃA&FÅ"E/Å#FÅ/E3Å3FÅ6E3Å7$FÆFc              ƒ  óÄ  K  — t          | ¦  «        }|sdddœS |\  }}	 t          |¦  «                             |¦  «        ƒ d {V —†}|dk    rEt          t          |¦  «        d¦  «        r(t          |¦  «                             |¦  «        ƒ d {V —† dt          | ¦  «        dœ|                     ¦   «         ¥}|                     dd¦  «                             d	¦  «        d
d …          	                    d	d¬¦  «        |d<   |dk    rt                               |¦  «        re|j        r^t          |¦  «        }dD ]7}|                     |¦  «        s |                     |¦  «        r||         ||<   Œ8|                     |¦  «         |S # t          $ rM |dk    r+t                               |¦  «        rt          |¦  «        cY S dt          | ¦  «        |||ddd d dœ	cY S w xY w)NÚtarget_staterÚ  )ræ   r›   rE   Úobserve_sessionrß  Úrecent_textrx   zutf-8i`ðÿÿÚignore)r£  r?   )rñ  rß   rØ   rá  r   )	ræ   r›   r¶   rÞ   r×   rÑ   rã  rû   Úeffort)r   r´   r	  Úhasattrrð  r   r7  rU   ÚencodeÚdecoderK  Úliverå  r<  r(   )r›   r  r¶   r  r  r¢   Úoverlayr   s           rM   rd  rd  ]  s4  è è € Ý˜&Ñ!Ô!€FØð :Ø%°Ð9Ð9Ð9Ø�J€Eˆ3ðYÝ# EÑ*Ô*×6Ò6°sÑ;Ô;Ð;Ð;Ð;Ð;Ð;Ð;ˆØ�GÒÐ¥­°EÑ(:Ô(:Ð<MÑ NÔ NÐÝ˜eÑ$Ô$×4Ò4°SÑ9Ô9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ø'Õ1AÀ&Ñ1IÔ1IÐbÐbÈW×M_ÒM_ÑMaÔMaÐbˆØ!(§¢¨]¸2Ñ!>Ô!>×!EÒ!EÀgÑ!NÔ!NÈuÈvÈvÔ!V×!]Ò!]Ð^eÐnvÐ!]Ñ!wÔ!wˆ�ÑØ�DŠ=ˆ=�[Ÿ_š_¨SÑ1Ô1ˆ=°g´lˆ=Ý% cÑ*Ô*ˆGð Hð _ð _�Ø—{’{ 5Ñ)Ô)Ð^¨g¯kªk¸%Ñ.@Ô.@Ð^ÐPWÐX]ÔP^ÀÈÁøØ�NŠN˜7Ñ#Ô#Ð#ØˆøÝð Yð Yð YØ�DŠ=ˆ=�[Ÿ_š_¨SÑ1Ô1ˆ=Ý$ SÑ)Ô)Ð)Ð)Ð)Ø$Õ.>¸vÑ.FÔ.FÈuÐbeØ˜y¸1ÀTÐSWðYð Yð 	Yð 	Yð 	YðYøøøs   ŸE(F Æ9GÇGÇGc              ƒ  óL  K  — i }t          t                               ¦   «         ¦  «        D �]÷}t                               |j        ¦  «        }t                               |j        ¦  «        }t          |¦  «        }t          |¦  «        r|r
| r	|| |fk    rŒl	 ||vrt          |¦  «        ƒ d {V —†||<   ||         }t                               |j        ¦  «        |k    s2t                               |j        ¦  «        |k    st          |¦  «        sŒç|rst          |t          d|||d         |d         |                     d¦  «        |                     dd¦  «        |                     dd¦  «        ¬¦  «        ¦  «        ƒ d {V —† npt          ||¬	¦  «        }	|d         d
k    r0|j        dv r'|d         dv r|d                              ¦   «         |	d<   |d         |_        t          ||	¦  «        ƒ d {V —† �ŒÎ# t          $ r t                               d¦  «         Y �Œõw xY wd S )Nré  r   r�   rê  rØ   rx   rñ  )ræ   r›   r  r¶   rÞ   rê  rë  rñ  rç  rE   )ÚRUNNINGr×  rÑ   )ÚDONEÚFAILEDrÜ  zAgent target delivery failed)rÚ   r    rÛ   r°   rU   re   rº   r   r­   rd  rª   r  ry   Úlowerr  rW   rX   )
r¶   r  rë  Úcacher¡   r›   rº   r  r¢   Úoutgoings
             rM   r&  r&  w  sÂ  è è € Ø€EÝ•w—~’~Ñ'Ô'Ñ(Ô(ð ;ñ ;ˆÝ×!Ò! &Ô"2Ñ3Ô3ˆÝ×*Ò*¨6Ô+;Ñ<Ô<ˆ
Ý˜fÑ%Ô%ˆÝ˜fÑ%Ô%ð 	¨Vð 	¸ð 	À&ÈUÐTWÈLÒBXÐBXØð	;Ø˜UÐ"Ð"Õ:NÈvÑ:VÔ:VÐ4VÐ4VÐ4VÐ4VÐ4VÐ4V E¨&¡MØ˜F”mˆGå×Ò Ô 0Ñ1Ô1°VÒ;Ð;½|×?VÒ?VÐW]ÔWgÑ?hÔ?hÐjtÒ?tÐ?tõ  }Kð  LRñ  }Sô  }SÐ?tð  U]Øð 	7Ý$ V­TÐ7GÈvÐhrÐyð  ABô  zCð  OUð  VWô  OXØ")§+¢+¨oÑ">Ô">ÈÏÊÐTeÐfhÑHiÔHiØ '§¢¨M¸"Ñ =Ô =ð.?ñ .?ô .?ñ @ô @ð @ð @ð @ð @ð @ð @ð @ð @õ   ¸*ÐEÑEÔE�Ø˜!”9 Ò'Ð'¨FÔ,CÐGeÐ,eÐ,eÐjqÐryÔjzð  Pð  kPð  kPØ/6°wÔ/?×/EÒ/EÑ/GÔ/G�H˜^Ñ,Ø*1°'Ô*:�Ô'Ý$ V¨XÑ6Ô6Ð6Ð6Ð6Ð6Ð6Ð6Ð6ùøÝð 	;ð 	;ð 	;Ý�NŠNÐ9Ñ:Ô:Ð:Ð:Ñ:ð	;øøøð+;ð ;s   ÂA9G9ÄC%G9Ç9$H!È H!c                ó|   ‡ — ˆ fd„}‰ t           vr,t                                |¦   «         ¦  «        t           ‰ <   d S d S )Nc               “  ó  •K  — 	 t          j        d¦  «        ƒ d {V —† t          d‰ ¦  «        ƒ d {V —† t          d‰ d¬¦  «        ƒ d {V —† t                               ‰ d ¦  «         d S # t                               ‰ d ¦  «         w xY w)Ng333333Ã?rE   T)rë  )rˆ   r'  r&  Ú_codex_push_tasksrJ  )r  s   €rM   Údeliverz%queue_codex_activity.<locals>.deliver–  s°   øè è € ð	-Ý”- Ñ$Ô$Ð$Ð$Ð$Ð$Ð$Ð$Ð$Ý$ W¨cÑ2Ô2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ý$ W¨c¸DÐAÑAÔAÐAÐAÐAÐAÐAÐAÐAå×!Ò! # tÑ,Ô,Ð,Ð,Ð,øÕ×!Ò! # tÑ,Ô,Ð,Ð,øøøs   …AA* Á*B)r  rÏ   Úspawn)r  Úmethodr  s   `  rM   rn  rn  ”  sU   ø€ ð-ð -ð -ð -ð -ð Õ#Ð#Ð#Ý!'§¢¨g¨g©i¬iÑ!8Ô!8Õ˜#ÑÐÐð $Ð#rL   z/integrations/pi/events)rt   Úx_device_lab_pi_tokenc              ƒ  óR  K  — t                                |¦  «        st          dd¬¦  «        ‚t                               | ¦  «        }| j        dv r@t                               d| j        ¦  «         t                               d| j        ¦  «         | j        dk    r5|j
        r.t          d|j        |j        |j        |j        |j        ¬¦  «         | j        dk    rt!          | ¦  «        ƒ d {V —† n t#          |j        |j
        ¦  «        ƒ d {V —† d	|                     ¦   «         d
œS )Ni‘  zinvalid Pi integration tokenrŠ  )Úsession_shutdownÚ	agent_endr?   r	  rÖ   rë  T)r‹  r  )Úcredential_storeÚauthenticate_pir   rK  Úapplyrê   r@   Úcancel_sessionrÞ   rA   Úpending_notificationrà   rÑ   rß   r×   rØ   rí  rM  r‚   )rê   r  r  s      rM   Úpi_eventr  ¡  sA  è è € õ
 ×+Ò+Ð,AÑBÔBð TÝ¨Ð4RÐSÑSÔSÐSÝ×Ò Ñ&Ô&€GØ„{Ð7Ð7Ð7Ý× Ò   uÔ'7Ñ8Ô8Ð8Ý×"Ò" 4¨Ô(8Ñ9Ô9Ð9Ø„{�kÒ!Ð! gÔ&BÐ!Ý˜$ Ô 2°G´MÀ7ÔCUØ&œ|¸WÔ=Tð	Vñ 	Vô 	Vð 	Và„{�jÒ Ð Ý'¨Ñ.Ô.Ð.Ð.Ð.Ð.Ð.Ð.Ð.Ð.å& wÔ'9¸7Ô;WÑXÔXÐXÐXÐXÐXÐXÐXÐXØ¨¯ªÑ)9Ô)9Ð:Ð:Ð:rL   z/devices/{device_id}/targetre   Ú	selectionc              ƒ  ó  K  — | t           vrt          dd¬¦  «        ‚t          |j        ¦  «        }t	          |¦  «        }|rM|\  }}|dk    rt
                               |¦  «        s(t          |¦  «                             |¦  «        ƒ d {V —† t           |          }t                               | ¦  «        |k    rBt                               |¦  «         t                               |¦  «         d |_        d|_        t                               | |¦  «        }|d         }d}	t!          |¦  «        �rJ	 t#          |¦  «        ƒ d {V —†}
t                               | ¦  «        |k    rbt'          |t)          |
|¬¦  «        ¦  «        ƒ d {V —† |
                     d	d¦  «        |_        t                               |¦  «        ƒ d {V —† d
}	n³# t,          $ r¦ t                               |dd
¬¦  «         t                               |dd
¬¦  «         d |_        |j        rMt1          t,          ¦  «        5  |j                             d¬¦  «        ƒ d {V —† d d d ¦  «         n# 1 swxY w Y   d|_        d |_        Y nw xY w| ||	dœS )Nr‚  údevice not foundrŠ  r?   rx   rº   Frç  rÑ   Tr  r  r  )re   r›   Ú	delivered)r    r   r   r›   r   rK  rU   r´   r	  r°   rÜ   râ   rÏ   rv   ry   rŠ   r­   rd  rº   rª   r  rö   r  rh   r   r   ro   )re   r  r›   r  r¶   r  r¡   r_   rº   r  r¢   s              rM   Úselect_targetr  ¶  sÅ  è è € à�ÐÐÝ¨Ð4FÐGÑGÔGÐGÝ˜iÔ.Ñ/Ô/€FÝ˜&Ñ!Ô!€FØð 6Ø‰
ˆˆsØ˜’�¥+§/¢/°#Ñ"6Ô"6�Ý˜eÑ$Ô$×0Ò0°Ñ5Ô5Ð5Ð5Ð5Ð5Ð5Ð5Ð5Ý�YÔ€FÝ×Ò˜	Ñ"Ô" fÒ,Ð,Ý�Š˜ÑÔÐÝ�Š�fÑÔÐØ!ˆÔØ"$ˆÔÝ
×
Ò
˜9 VÑ
,Ô
,€EØ�\Ô"€JØ€IÝ�fÑÔñ $ð	$Ý0°Ñ8Ô8Ð8Ð8Ð8Ð8Ð8Ð8ˆGÝ×&Ò& yÑ1Ô1°:Ò=Ð=Ý$ V­D°È:Ð,VÑ,VÔ,VÑWÔWÐWÐWÐWÐWÐWÐWÐWØ*1¯+ª+°g¸rÑ*BÔ*B�Ô'Ý×'Ò'¨Ñ/Ô/Ð/Ð/Ð/Ð/Ð/Ð/Ð/Ø �	øøÝð 	$ð 	$ð 	$Ý�OŠO˜F¨5¸ˆOÑ>Ô>Ð>Ý�MŠM˜&¨°tˆMÑ<Ô<Ð<Ø!%ˆFÔØÔð RÝ�iÑ(Ô(ÐQÐQ°Ô0@×0FÒ0FÈDÐ0FÑ0QÔ0QÐ*QÐ*QÐ*QÐ*QÐ*QÐ*QÐ*QÐQÐQÐQÑQÔQÐQÐQÐQÐQÐQÐQøøøÐQÐQÐQÐQØ!ˆFŒMØ#ˆFÔÐÐð	$øøøð #¨fÀ9ÐMÐMÐMs8   Ä2BG ÇA&I8È."IÉI8ÉI 	É I8É#I 	É$I8É7I8z/devices/{device_id}/messagerð   c              ƒ  ó”  K  — t                                | ¦  «        }|€t          dd¬¦  «        ‚|j        r|j        €t          dd¬¦  «        ‚d|j        |j        dœ}	 t          ||¦  «        ƒ d {V —† n2# t          $ r%}d|_        d |_        t          dd	¬¦  «        |‚d }~ww xY wt           
                    d
| ¦  «         d| |dœS )Nr‚  r  rŠ  r‰  r¥   Údisplay_message)ræ   r–   r—   Fúdevice disconnectedz!sent display_message to device %sT)Úsentre   rð   )r    rU   r   ro   rh   r–   r—   rª   r  rW   Úinfo)re   rð   r¡   r¢   r  s        rM   Úsend_messager  Ü  s  è è € å�[Š[˜Ñ#Ô#€FØ€~Ý¨Ð4FÐGÑGÔGÐGØŒ=ð I˜FÔ,Ð4Ý¨Ð4GÐHÑHÔHÐHà(°7´=È'Ì,ÐWÐW€GðTÝ˜V WÑ-Ô-Ð-Ð-Ð-Ð-Ð-Ð-Ð-Ð-øÝð Tð Tð TØˆŒØˆÔÝ¨Ð4IÐJÑJÔJÐPSÐSøøøøðTøøøõ ‡K‚KÐ3°YÑ?Ô?Ð?Ø y¸WÐEÐEÐEs   Á A7 Á7
B&Â B!Â!B&z&/devices/{device_id}/test-notificationr  c              ƒ  óš  K  — t                                | ¦  «        }|€t          dd¬¦  «        ‚|j        r|j        €t          dd¬¦  «        ‚	 t          |d|j        dœ¦  «        ƒ d {V —† n2# t          $ r%}d|_        d |_        t          dd	¬¦  «        |‚d }~ww xY wt           	                    d
|j        | ¦  «         d| |j        dœS )Nr‚  r  rŠ  r‰  r¥   Únotification_test)ræ   rŸ   Fr  z&sent %s notification test to device %sT)r  re   rŸ   )
r    rU   r   ro   rh   rª   rŸ   r  rW   r  )re   r  r¡   r  s       rM   Útest_notificationr  ï  s  è è € å�[Š[˜Ñ#Ô#€FØ€~Ý¨Ð4FÐGÑGÔGÐGØŒ=ð I˜FÔ,Ð4Ý¨Ð4GÐHÑHÔHÐHðTÝ˜VÐ.AÈ7Ì<Ð%XÐ%XÑYÔYÐYÐYÐYÐYÐYÐYÐYÐYøÝð Tð Tð TØˆŒØˆÔÝ¨Ð4IÐJÑJÔJÐPSÐSøøøøðTøøøõ ‡K‚KÐ8¸'¼,È	ÑRÔRÐRØ y¸'¼,ÐGÐGÐGs   ÁA/ Á/
BÁ9 BÂBc                  ó>   — e Zd ZU  edd¬¦  «        Zded<   ded<   dS )	ÚSpeechSelectionr�   é¾   r�   rd   r›   z6Literal['OFF', 'MANUAL', 'AUTO_REPLY', 'AUTO_SUMMARY']r†  Nrœ   rK   rL   rM   r  r     s>   € € € € € € Ø�% 1°Ð5Ñ5Ô5€FÐ5Ð5Ð5Ñ5Ø@Ð@Ð@Ñ@Ð@Ð@rL   r  c                  ó<   — e Zd ZU  edd¬¦  «        Zded<   ddiZdS )	Ú
SpeechTestr�   r   r�   rd   r›   ÚextraÚforbidN)r„   r…   r†   r   r›   r‡   Úmodel_configrK   rL   rM   r"  r"    s:   € € € € € € Ø�% 1°Ð5Ñ5Ô5€FÐ5Ð5Ð5Ñ5Ø˜XÐ&€L€L€LrL   r"  z/api/devices/{device_id}/speechc              ƒ  óà  K  — t                                | ¦  «        }|st          dd¦  «        ‚t                               | ¦  «        t	          |j        ¦  «        k    rt          dd¦  «        ‚t                               |¦  «         t          j         	                    | |j        |j
        ¦  «         t                               |¦  «        ƒ d {V —† |j
        t	          |j        ¦  «        dœS )Nr‚  úDevice not foundr‰  ú Target changed; refresh settings)r†  r›   )r    rU   r   r°   r   r›   rÜ   râ   rÒ  rŠ   r†  rö   ©re   r_   r¡   s      rM   Úset_speech_moder*  
  s×   è è € å�[Š[˜Ñ#Ô#€FØð 5Ý˜CÐ!3Ñ4Ô4Ð4Ý×Ò˜	Ñ"Ô"Õ&6°u´|Ñ&DÔ&DÒDÐDÝ˜CÐ!CÑDÔDÐDÝ‡O‚O�FÑÔÐÝÔ×Ò˜Y¨¬°e´jÑAÔAÐAÝ
×
Ò
˜FÑ
#Ô
#Ð#Ð#Ð#Ð#Ð#Ð#Ð#Ø”JÕ*:¸5¼<Ñ*HÔ*HÐIÐIÐIrL   z$/api/devices/{device_id}/speech-testc              ƒ  ó>  K  — t                                | ¦  «        }|st          dd¦  «        ‚t                               | ¦  «        t	          |j        ¦  «        k    rt          dd¦  «        ‚t                               |dd¦  «        st          dd¦  «        ‚dd	iS )
Nr‚  r'  r‰  r(  Úscreenu   è¯­éŸ³æ’­æ”¾æµ‹è¯•æˆ�åŠŸã€‚zASpeech unavailable, device busy or firmware lacks speech_playbackr‹  T)r    rU   r   r°   r   r›   rÜ   Ústartr)  s      rM   Útest_speechr.    s›   è è € å�[Š[˜Ñ#Ô#€FØð 5Ý˜CÐ!3Ñ4Ô4Ð4Ý×Ò˜	Ñ"Ô"Õ&6°u´|Ñ&DÔ&DÒDÐDÝ˜CÐ!CÑDÔDÐDÝ�>Š>˜& (Ð,IÑJÔJð fÝ˜CÐ!dÑeÔeÐeØ˜ÐÐrL   z
/device/wsrh   r   c              ƒ  óê   ‡K  — |                       ¦   «         ƒ d {V —† d }	 |                      ¦   «         ƒ d {V —†Št          ‰t          ¦  «        r‰                     d¦  «        dk    �rª|                      dd¬¦  «        ƒ d {V —† 	 |�‹t                               |dd¬¦  «         t                               |dd¬¦  «         d |_	        t          j                             |j        d ¦  «         t          j                             |j        d ¦  «         |�ùt                               |j        ¦  «        |u rÚt                               |dd¬¦  «         t                               |dd¬¦  «         d |_	        |j        rMt%          t&          ¦  «        5  |j                             d	¬
¦  «        ƒ d {V —† d d d ¦  «         n# 1 swxY w Y   d|_        d |_        t+          ¦   «         |_        t.                               d|j        ¦  «         d S d S d S d}t3          ˆfd„|D ¦   «         ¦  «        �rª|                      dd¬¦  «        ƒ d {V —† 	 |�‹t                               |dd¬¦  «         t                               |dd¬¦  «         d |_	        t          j                             |j        d ¦  «         t          j                             |j        d ¦  «         |�ùt                               |j        ¦  «        |u rÚt                               |dd¬¦  «         t                               |dd¬¦  «         d |_	        |j        rMt%          t&          ¦  «        5  |j                             d	¬
¦  «        ƒ d {V —† d d d ¦  «         n# 1 swxY w Y   d|_        d |_        t+          ¦   «         |_        t.                               d|j        ¦  «         d S d S d S ‰d         }t4                               |‰d         ¦  «        �sÅt.                               d|¦  «         |                      dd¬¦  «        ƒ d {V —† 	 |�‹t                               |dd¬¦  «         t                               |dd¬¦  «         d |_	        t          j                             |j        d ¦  «         t          j                             |j        d ¦  «         |�ùt                               |j        ¦  «        |u rÚt                               |dd¬¦  «         t                               |dd¬¦  «         d |_	        |j        rMt%          t&          ¦  «        5  |j                             d	¬
¦  «        ƒ d {V —† d d d ¦  «         n# 1 swxY w Y   d|_        d |_        t+          ¦   «         |_        t.                               d|j        ¦  «         d S d S d S t                               |¦  «        }|�c|j        �\t                               |dd¬¦  «         t                               |dd¬¦  «         |j                             dd¬¦  «        ƒ d {V —† t;          |‰d         ‰d         | t          ‰                     d¦  «        t<          ¦  «        r d„ ‰                     dg ¦  «        D ¦   «         nt?          ¦   «         ¬¦  «        }|t          |<   tA          |dtC          t+          ¦   «          "                    ¦   «         dz  ¦  «        tG          ¦   «         tI          tJ          |j&        z  ¦  «        tN           (                    |¦  «        dœ¦  «        ƒ d {V —† tR          j*        ptR           +                    ¦   «         }tA          |tY          |¦  «        ¦  «        ƒ d {V —† tN                               |¦  «        }t[          |¦  «        ƒ d {V —†}tA          |t          |fi d|j&        v rdtN           (                    |¦  «        ini ¤Ž¦  «        ƒ d {V —† |                     dd ¦  «        |_.        t           /                    |¦  «        ƒ d {V —† t           0                    ¦   «          t.                               d!|j        |j1        |j2        ¦  «         	 |                      ¦   «         ƒ d {V —†}t          |t          ¦  «        r(t          |                     d¦  «        tf          ¦  «        s!t.                               d"|j        ¦  «         Œyt+          ¦   «         |_        |d          4                    d#¦  «        r
d|d         in||_5        |d          4                    d$¦  «        r#t           6                    ||¦  «        ƒ d {V —† �n¢|d          4                    d%¦  «        rI|d         d&k    rt                               |¦  «         t           6                    ||¦  «        ƒ d {V —† �n>|d         d'v rÈ|d         d(k    rt                               |¦  «         |d         d)k    rto          ||¦  «        ƒ d {V —† �nê|j8        �|j8         9                    ¦   «         r/t           :                    to          ||¦  «        ¦  «        |_8        �n›tA          |d*|                     d+¦  «        d,d-œ¦  «        ƒ d {V —† �nl|d         d.v rÒ|d         d/k    r#tv           6                    ||¦  «        ƒ d {V —† �n3|j8        �|j8         9                    ¦   «         r:t           :                    tv           6                    ||¦  «        ¦  «        |_8        �nÙtA          |t          |d         d0k    rd1nd2|                     d+¦  «        d3¬-¦  «        ¦  «        ƒ d {V —† �n�|d         d4k    rÅt                               |j        ¦  «        |u r£|j        rœ|                     d5¦  «        }	t                               |                     d6¦  «        ¦  «        }
d7|j&        vr|	d8k    r|
rd9|
j<        vrd:|
j<        v rd:}	t           =                    |                     d6¦  «        |	|j        ¬;¦  «         n¿|d         d<k    rKt.                               d=|j        |                     d>d?¦  «        |                     d@d?¦  «        ¦  «         nh|d         dAk    r5t.           >                    dB|j        |                     dC¦  «        ¦  «         n't.                               dD|j        |d         ¦  «         �Œ™# t~          $ r Y n)t&          $ r t.           @                    dE¦  «         Y nw xY w|�‹t                               |dd¬¦  «         t                               |dd¬¦  «         d |_	        t          j                             |j        d ¦  «         t          j                             |j        d ¦  «         |�ùt                               |j        ¦  «        |u rÚt                               |dd¬¦  «         t                               |dd¬¦  «         d |_	        |j        rMt%          t&          ¦  «        5  |j                             d	¬
¦  «        ƒ d {V —† d d d ¦  «         n# 1 swxY w Y   d|_        d |_        t+          ¦   «         |_        t.                               d|j        ¦  «         d S d S d S # |�‹t                               |dd¬¦  «         t                               |dd¬¦  «         d |_	        t          j                             |j        d ¦  «         t          j                             |j        d ¦  «         |�øt                               |j        ¦  «        |u rØt                               |dd¬¦  «         t                               |dd¬¦  «         d |_	        |j        rMt%          t&          ¦  «        5  |j                             d	¬
¦  «        ƒ d {V —† d d d ¦  «         n# 1 swxY w Y   d|_        d |_        t+          ¦   «         |_        t.                               d|j        ¦  «         w w w xY w)FNræ   Úhelloið  zfirst message must be hello)r  ÚreasonFTr  r  r  zdevice %s offline)re   Údevice_tokenrf   rg   c              3  ó|   •K  — | ]6}t          ‰                     |¦  «        t          ¦  «         p‰|          V — Œ7d S rH   )r  rU   rd   )rü   r  r0  s     €rM   rk  z#device_websocket.<locals>.<genexpr>.  sE   øè è € ÐYÐYÈ•:˜eŸiši¨™nœn­cÑ2Ô2Ð2ÐD¸%À¼*°nÐYÐYÐYÐYÐYÐYrL   zinvalid hellore   r2  zrejected unauthorized device %szunauthorized deviceiô  zreplaced by a new connectionrf   rg   rz   c                ó<   — h | ]}t          |t          ¦  «        ¯|’ŒS rK   )r  rd   )rü   Úvs     rM   ú	<setcomp>z#device_websocket.<locals>.<setcomp>B  s)   € ÐYÐYÐY ÅjÐQRÕTWÑFXÔFXÐY˜!ÐYÐYÐYrL   )re   rf   rg   rh   rz   Ú	hello_ackiè  )ræ   Úserver_time_msÚtimezone_offset_minutesrz   r  ztarget-selectr  rÑ   rx   z%device %s online board=%s firmware=%szdevice %s sent invalid event)Úvoice_Ú	settings_Úspeech_Úuser_input_Úsession_Ú	creation_Úhistory_r<  r:  Úvoice_start)rñ   rõ   rç   rñ   rç   rî   rè   zSettings request busyrï   )Úcatalog_getÚtarget_selectÚ
target_getÚcreation_getÚsession_createÚsession_operation_getÚhistory_getÚuser_input_responserI  rH  Únavigator_errorÚhistory_errorÚBusyÚapproval_responser’   rB  rC  ÚrejectÚdeclinerâ   )Údevice_connectionÚbutton_eventz,device %s button clicked button=%s action=%sÚbuttonÚunknownÚactionÚ	heartbeatzdevice %s heartbeat uptime=%sÚuptimezdevice %s event type=%szdevice websocket failed)AÚacceptÚreceive_jsonr  r  rU   r   rÜ   râ   rÏ   rv   r@   rI  rJ  rm   rA   r    re   rh   r   r  ro   rN   rp   rW   r  Úanyr
  ÚauthenticaterX   rc   rÚ   rŠ   rª   rO   Ú	timestampra   r~   r4   rz   r°   rº   r#  r6  r$  r%  rd  ry   rö   rã   rf   rg   rd   Ú
startswithrq   Úhandlerë   ru   Údoner  r¼   ÚchoicesrŒ  Údebugr   Ú	exception)rh   r¡   Úrequiredre   r0  r*  r›   r¢   rê   r’   rQ  r0  s              @rM   Údevice_websocketrc  #  s  øè è € à
×
Ò
Ñ
Ô
ÐÐÐÐÐÐÐØ €Fðv?Ø×,Ò,Ñ.Ô.Ð.Ð.Ð.Ð.Ð.Ð.ˆÝ˜%¥Ñ&Ô&ð 	¨%¯)ª)°FÑ*;Ô*;¸wÒ*FÑ*FØ—/’/ tÐ4Q�/ÑRÔRÐRÐRÐRÐRÐRÐRÐRØðF ÐÝ�OŠO˜F¨5¸ˆOÑ>Ô>Ð>Ý�MŠM˜&¨°tˆMÑ<Ô<Ð<Ø!%ˆFÔÝÔ#×'Ò'¨Ô(<¸dÑCÔCÐCÝÔ%×)Ò)¨&Ô*>¸tÑDÔDÐDØÐ¥'§+¢+¨fÔ.>Ñ"?Ô"?À6Ð"IÐ"IÝ�OŠO˜F¨5¸ˆOÑ>Ô>Ð>Ý�MŠM˜&¨°tˆMÑ<Ô<Ð<Ø!%ˆFÔØÔð RÝ�iÑ(Ô(ÐQÐQ°Ô0@×0FÒ0FÈDÐ0FÑ0QÔ0QÐ*QÐ*QÐ*QÐ*QÐ*QÐ*QÐ*QÐQÐQÐQÑQÔQÐQÐQÐQÐQÐQÐQøøøÐQÐQÐQÐQØ!ˆFŒMØ#ˆFÔÝ&™yœyˆFÔÝ�KŠKÐ+¨VÔ-=Ñ>Ô>Ð>Ð>Ð>ð ÐÐ"IÐ"IðO FˆÝÐYÐYÐYÐYÐPXÐYÑYÔYÑYÔYñ 	Ø—/’/ t°O�/ÑDÔDÐDÐDÐDÐDÐDÐDÐDØð| ÐÝ�OŠO˜F¨5¸ˆOÑ>Ô>Ð>Ý�MŠM˜&¨°tˆMÑ<Ô<Ð<Ø!%ˆFÔÝÔ#×'Ò'¨Ô(<¸dÑCÔCÐCÝÔ%×)Ò)¨&Ô*>¸tÑDÔDÐDØÐ¥'§+¢+¨fÔ.>Ñ"?Ô"?À6Ð"IÐ"IÝ�OŠO˜F¨5¸ˆOÑ>Ô>Ð>Ý�MŠM˜&¨°tˆMÑ<Ô<Ð<Ø!%ˆFÔØÔð RÝ�iÑ(Ô(ÐQÐQ°Ô0@×0FÒ0FÈDÐ0FÑ0QÔ0QÐ*QÐ*QÐ*QÐ*QÐ*QÐ*QÐ*QÐQÐQÐQÑQÔQÐQÐQÐQÐQÐQÐQøøøÐQÐQÐQÐQØ!ˆFŒMØ#ˆFÔÝ&™yœyˆFÔÝ�KŠKÐ+¨VÔ-=Ñ>Ô>Ð>Ð>Ð>ð ÐÐ"IÐ"IðE ˜+Ô&ˆ	Ý×,Ò,¨Y¸¸nÔ8MÑNÔNñ 	Ý�NŠNÐ<¸iÑHÔHÐHØ—/’/ tÐ4I�/ÑJÔJÐJÐJÐJÐJÐJÐJÐJØðp ÐÝ�OŠO˜F¨5¸ˆOÑ>Ô>Ð>Ý�MŠM˜&¨°tˆMÑ<Ô<Ð<Ø!%ˆFÔÝÔ#×'Ò'¨Ô(<¸dÑCÔCÐCÝÔ%×)Ò)¨&Ô*>¸tÑDÔDÐDØÐ¥'§+¢+¨fÔ.>Ñ"?Ô"?À6Ð"IÐ"IÝ�OŠO˜F¨5¸ˆOÑ>Ô>Ð>Ý�MŠM˜&¨°tˆMÑ<Ô<Ð<Ø!%ˆFÔØÔð RÝ�iÑ(Ô(ÐQÐQ°Ô0@×0FÒ0FÈDÐ0FÑ0QÔ0QÐ*QÐ*QÐ*QÐ*QÐ*QÐ*QÐ*QÐQÐQÐQÑQÔQÐQÐQÐQÐQÐQÐQøøøÐQÐQÐQÐQØ!ˆFŒMØ#ˆFÔÝ&™yœyˆFÔÝ�KŠKÐ+¨VÔ-=Ñ>Ô>Ð>Ð>Ð>ð ÐÐ"IÐ"Iõ{ —;’;˜yÑ)Ô)ˆØÐ HÔ$6Ð$BÝ�OŠO˜H¨U¸4ˆOÑ@Ô@Ð@Ý�MŠM˜(¨5¸ˆMÑ>Ô>Ð>ØÔ$×*Ò*°Ð=[Ð*Ñ\Ô\Ð\Ð\Ð\Ð\Ð\Ð\Ð\åØØ˜”.Ø˜:Ô&Øå˜eŸiši¨Ñ7Ô7½Ñ>Ô>ðJÐYÐY U§Y¢Y¨~¸rÑ%BÔ%BÐYÑYÔYÐYÝDGÁEÄEð
ñ 
ô 
ˆð $��	ÑÝ˜VØÝ!¥'¡)¤)×"5Ò"5Ñ"7Ô"7¸$Ñ">Ñ?Ô?Ý'FÑ'HÔ'HÝ!¥,°Ô1DÑ"DÑEÔEÝ ,× 7Ò 7¸	Ñ BÔ Bð&
ð &
ñ ô ð 	ð 	ð 	ð 	ð 	ð 	ð 	õ $Ô*ÐHÕ.>×.FÒ.FÑ.HÔ.HˆÝ˜VÕ%<¸XÑ%FÔ%FÑGÔGÐGÐGÐGÐGÐGÐGÐGÝ×!Ò! )Ñ,Ô,ˆÝ,¨VÑ4Ô4Ð4Ð4Ð4Ð4Ð4Ð4ˆÝ˜V¥D¨ð  %að  %aÐpð  DJô  DWð  qWð  qWÐ5HÍ×I`ÒI`ÐajÑIkÔIkÐ4lÐ4lð  ]_ð  %að  %añ  bô  bð  	bð  	bð  	bð  	bð  	bð  	bð  	bØ")§+¢+¨g°rÑ":Ô":ˆÔÝ×Ò Ñ'Ô'Ð'Ð'Ð'Ð'Ð'Ð'Ð'Ý×ÒÑÔÐÝ�ŠØ3°VÔ5EÀvÄ|ÐU[ÔUdñ	
ô 	
ð 	
ð/	XØ#×0Ò0Ñ2Ô2Ð2Ð2Ð2Ð2Ð2Ð2ˆEÝ˜e¥TÑ*Ô*ð µ*¸U¿YºYÀvÑ=NÔ=NÕPSÑ2TÔ2Tð Ý—’Ð=¸vÔ?OÑPÔPÐPØÝ&™yœyˆFÔà;@À¼=×;SÒ;Sð  Ueñ  <fô  <fð  !q ¨¨v¬Ð 7Ð 7ð  lqˆFÔØ�VŒ}×'Ò'¨	Ñ2Ô2ð 'XÝ—o’o f¨eÑ4Ô4Ð4Ð4Ð4Ð4Ð4Ð4Ð4Ñ4Ø�v”×)Ò)¨(Ñ3Ô3ð %XØ˜”= MÒ1Ð1µ8·?²?À6Ñ3JÔ3JÐ3JÝ—m’m F¨EÑ2Ô2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ñ2Ø�v”Ð"WÐWÐWØ˜”= NÒ2Ð2µH·O²OÀFÑ4KÔ4KÐ4KØ˜”=Ð$5Ò5Ð5Ý)¨&°%Ñ8Ô8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ñ8àÔ+Ð3°vÔ7K×7PÒ7PÑ7RÔ7RÐ3Ý/5¯|ª|½OÈFÐTYÑ<ZÔ<ZÑ/[Ô/[˜Ô,Ñ,å,¨VÐ=MÐ\a×\eÒ\eÐfrÑ\sÔ\sð  @Wð  6Xð  6Xñ  Yô  Yð  Yð  Yð  Yð  Yð  Yð  Yð  Yñ  YØ�v”ð  #kð  kð  kØ˜”=Ð"7Ò7Ð7½i×>NÒ>NÈvÐV[Ñ>\Ô>\Ð8\Ð8\Ð8\Ð8\Ð8\Ð8\Ð8\Ñ8\ØÔ)Ð1°VÔ5I×5NÒ5NÑ5PÔ5PÐ1Õfl×frÒfrÕs|÷  tDò  tDð  EKð  LQñ  tRô  tRñ  gSô  gSÐQWÔQeÑQeÝ)¨&µÐPUÐV\ÔP]Ð_lÒPlÐPlÐ;LÐ;Lð  sBð  NS÷  NWò  NWð  Xdñ  Neô  Neð  ntð  2uñ  2uô  2uñ  vô  vð  vð  vð  vð  vð  vð  vð  vñ  vØ�v”Ð"5Ò5Ð5Ý—;’;˜vÔ/Ñ0Ô0°FÐ:Ð:¸v¼}Ð:Ø"ŸYšY zÑ2Ô2�HÝ&Ÿ]š]¨5¯9ª9°]Ñ+CÔ+CÑDÔD�Hð -°FÔ4GÐGÐGÈHÐV^ÒL^ÐL^Ø (ð M_Ø-6¸hÔ>NÐ-NÐ-NÐS[Ð_gÔ_oÐSoÐSoØ!)˜Ý×%Ò% e§i¢i°Ñ&>Ô&>ÀØ8>Ô8Lð &ñ Nô Nð Nøà�v” .Ò0Ð0Ý—’ØBØÔ$Ø—I’I˜h¨	Ñ2Ô2Ø—I’I˜h¨	Ñ2Ô2ñ	ô ð ð ð �v” +Ò-Ð-Ý—’Ð<¸fÔ>NÐPU×PYÒPYÐZbÑPcÔPcÑdÔdÐdÐdå—’Ð5°vÔ7GÈÈvÌÑWÔWÐWñ_/	Xøõ` ð ð ð ØˆÝð 4ð 4ð 4Ý×ÒÐ2Ñ3Ô3Ð3Ð3Ð3ð4øøøð ÐÝ�OŠO˜F¨5¸ˆOÑ>Ô>Ð>Ý�MŠM˜&¨°tˆMÑ<Ô<Ð<Ø!%ˆFÔÝÔ#×'Ò'¨Ô(<¸dÑCÔCÐCÝÔ%×)Ò)¨&Ô*>¸tÑDÔDÐDØÐ¥'§+¢+¨fÔ.>Ñ"?Ô"?À6Ð"IÐ"IÝ�OŠO˜F¨5¸ˆOÑ>Ô>Ð>Ý�MŠM˜&¨°tˆMÑ<Ô<Ð<Ø!%ˆFÔØÔð RÝ�iÑ(Ô(ÐQÐQ°Ô0@×0FÒ0FÈDÐ0FÑ0QÔ0QÐ*QÐ*QÐ*QÐ*QÐ*QÐ*QÐ*QÐQÐQÐQÑQÔQÐQÐQÐQÐQÐQÐQøøøÐQÐQÐQÐQØ!ˆFŒMØ#ˆFÔÝ&™yœyˆFÔÝ�KŠKÐ+¨VÔ-=Ñ>Ô>Ð>Ð>Ð>ð ÐÐ"IÐ"Iøð ÐÝ�OŠO˜F¨5¸ˆOÑ>Ô>Ð>Ý�MŠM˜&¨°tˆMÑ<Ô<Ð<Ø!%ˆFÔÝÔ#×'Ò'¨Ô(<¸dÑCÔCÐCÝÔ%×)Ò)¨&Ô*>¸tÑDÔDÐDØÐ¥'§+¢+¨fÔ.>Ñ"?Ô"?À6Ð"IÐ"IÝ�OŠO˜F¨5¸ˆOÑ>Ô>Ð>Ý�MŠM˜&¨°tˆMÑ<Ô<Ð<Ø!%ˆFÔØÔð RÝ�iÑ(Ô(ÐQÐQ°Ô0@×0FÒ0FÈDÐ0FÑ0QÔ0QÐ*QÐ*QÐ*QÐ*QÐ*QÐ*QÐ*QÐQÐQÐQÑQÔQÐQÐQÐQÐQÐQÐQøøøÐQÐQÐQÐQØ!ˆFŒMØ#ˆFÔÝ&™yœyˆFÔÝ�KŠKÐ+¨VÔ-=Ñ>Ô>Ð>Ð>ð Ð"Iøøøs¾   ¡A&t' Æ"GÇGÇ	GÈ;t' Í"N
Î
NÎNÏA"t' Õ"U9Õ9U=Ö U=×]t' ô'
uô1{( ô3#uõ{( õuõ{( ù("zúzúzû(DAA2ÿ5"A@#Á@AA2Á@#A@'Á@'AA2Á@*A@'Á@+AAA2)rF   r   )rF   rO   )r¡   rc   r¢   r|   rF   r£   )r¢   r|   rF   r£   )rF   r£   rH   )r*  r,  rF   r|   )rf  r   )r  r(   )r¶   rd   )rB  rd   r_   rŒ   )r’  r*   )r  rd   )r¶   rd   rÞ   rd   )r¶   rd   rÞ   rd   r_   r)   )r¶   rd   rÞ   rd   r_   r+   rƒ   )rF   r   )rF   r   )rF   rÎ  )rÞ   rd   rÜ  rÝ  rF   r|   )rÞ   rd   rÜ  rÝ  rF   r£   )rê   r   rF   r£   )NNF)rê   r   r  rd   rF   r|   )re   rd   r  r™   rF   r|   )re   rd   rð   r”   rF   r|   )re   rd   r  rž   rF   r|   )re   rd   r_   r  )re   rd   r_   r"  )rh   r   rF   r£   )ªÚ
__future__r   rˆ   ÚloggingrS   Ú
contextlibr   r   Údataclassesr   r   r   r	   Útypingr
   r   Úuuidr   Úfastapir   r   r   r   r   Úfastapi.responsesr   r   r   Úpydanticr   r   Údevice_gateway.authr   Ú device_gateway.collectors.systemr   Ú$device_gateway.collectors.host_stater   Údevice_gateway.protocolr   Údevice_gateway.integrations.pir   r   Údevice_gateway.stater   r   r   Údevice_gateway.voicer    r!   Údevice_gateway.speechr"   r#   r$   r%   r&   Údevice_gateway.control.settingsr'   Údevice_gateway.control.modelsr(   r)   r*   r+   Údevice_gateway.control.projectsr,   Údevice_gateway.control.pir-   Údevice_gateway.control.codexr.   Ú device_gateway.control.approvalsr/   Ú"device_gateway.control.pi_approvalr0   Ú!device_gateway.control.user_inputr1   Ú!device_gateway.control.operationsr2   Ú device_gateway.control.navigatorr3   r4   Ú	getLoggerrW   rT   rU   r#  Úfloatr(  r9   r‡   r
  r°   rÈ  rÉ  rÊ  Ú__file__rÅ  rK  r  r@   rA   rc  r8  rN   ra   rc   rŒ   r”   r™   rž   r    rª   r­   rÏ   rÓ   Úspeech_preferencesrÜ   rà   rä   rë   ré   r!  r+  r%  rT  rY  r[  r]  r¼   rx  ÚappÚexception_handlerr€  r´   r‡  Úpostr�  r�  r•  r˜  r™  rŸ  r¨  r«  r®  r³  r  r
  r¼  rÁ  rÆ  rË  rÍ  rÕ  rÛ  rå  rM  rí  rd  r&  r  rn  r  r  r  r  r  r"  r*  r.  rh   rc  rK   rL   rM   ú<module>r†     sÏ  ðØ "Ð "Ð "Ð "Ð "Ð "Ð "à €€€Ø €€€Ø 	€	€	€	Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø Ð Ð Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RØ JÐ JÐ JÐ JÐ JÐ JÐ JÐ JÐ JÐ JØ %Ð %Ð %Ð %Ð %Ð %Ð %Ð %à 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø <Ð <Ð <Ð <Ð <Ð <Ø ;Ð ;Ð ;Ð ;Ð ;Ð ;Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø LÐ LÐ LÐ LÐ LÐ LÐ LÐ LØ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LØ =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ø hÐ hÐ hÐ hÐ hÐ hÐ hÐ hÐ hÐ hÐ hÐ hÐ hÐ hØ 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø PÐ PÐ PÐ PÐ PÐ PÐ PÐ PÐ PÐ PÐ PÐ PØ ;Ð ;Ð ;Ð ;Ð ;Ð ;Ø /Ð /Ð /Ð /Ð /Ð /Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø =Ð =Ð =Ð =Ð =Ð =Ø ?Ð ?Ð ?Ð ?Ð ?Ð ?Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø CÐ CÐ CÐ CÐ CÐ CÐ CÐ Cð 
ˆÔ	Ð9Ñ	:Ô	:€Ø"�?¨B¬J¯NªNÐ;PÑ,QÔ,QÐRÑRÔRÐ Ø!˜E "¤*§.¢.Ð1LÈcÑ"RÔ"RÑSÔSÐ à €Ð  Ð  Ð  Ñ  Ø(Ð(Ø„J‡N‚NØ!Ø4ñô ñô Ð ð ˆ{Ø„J‡N‚NØØ5ñô ñô €ð ”'—,’,˜rœwŸš¨xÑ8Ô8¸(ÀLÑQÔQ€ØÐÑ!Ô!€Ø"�? 2¤:§>¢>Ð2IÐKyÑ#zÔ#zÑ{Ô{Ð ØÐÑÔ€	ØˆJ‰LŒL€Øˆ:�b”j—n’nÐ%>Ð?qÑrÔrÑsÔs€
Ø�)�)Ð,¨kÀYÐ[fÐgÑgÔgÐh€Ø„:‡>‚>Ð)¨3Ñ/Ô/°3Ò6Ð6Ø$˜Ð%5ÀÐWbÐcÑcÔc€HˆWÑð&ð &ð &ð &ð
Jð 
Jð 
Jð 
Jð ð
ð 
ð 
ð 
ð 
ñ 
ô 
ñ „ð
ð:6ð 6ð 6ð 6ð 6�yñ 6ô 6ð 6ð4ð 4ð 4ð 4ð 4�Yñ 4ô 4ð 4ð
`ð `ð `ð `ð `�iñ `ô `ð `ð$ð $ð $ð $ð $�yñ $ô $ð $ð  €Ð Ð Ð Ñ ðGð Gð Gð Gðfð fð fð 
ˆ�n�nÑ&Ô&Ð(IÐ(IÐKkÐKkØ�>Ð"GÐ"GÐW~ÐW~Ø;Ð;ÐJoÐJoð  @jð  @jð
kñ 
kô 
k€ð
Nð Nð Nð
 'Ð& r¤z§~¢~Ð6KÐMyÑ'zÔ'zÑ{Ô{Ð Øˆ=˜˜Ñ)Ô)¨=¨=©?¬?Ð<NØ%Ð% ~°~À~ñWô W€ð EGÐXZð _ð _ð _ð _ð _ð
ð ð ð.ð .ð .ð+]ð +]ð +]ð\eð eð eð eð$7ð 7ð 7ð 7ðð ð ð ð ð(6;ð 6;ð 6;ðr&ð &ð &ðeð eð eð+ð +ð +ð +ð +ñ +ô +ð +ð Ð
Ñ
Ô
€	àðð ð ñ Ôðð: €gÐ(°'ÀHÐMÑMÔM€ð ×Ò�|Ñ$Ô$ðPð Pð Pñ %Ô$ðPðð ð ð ð ‡‚Ð	ÑÔðWð Wñ ÔðWð ‡‚Ð
1Ñ2Ô2ðeð eð eñ 3Ô2ðeð ‡‚ˆÑÔð#ð #ñ Ôð#ð ‡‚ˆ/ s€Ñ+Ô+ð)ð )ð )ñ ,Ô+ð)ð ‡‚Ð(°c€Ñ:Ô:ð(ð (ð (ñ ;Ô:ð(ð ‡‚ˆÑÔðgð gñ Ôðgð ‡‚Ð	.Ñ/Ô/ð	4ð 	4ð 	4ñ 0Ô/ð	4ð ‡‚Ð	4Ñ5Ô5ð<ð <ð <ñ 6Ô5ð<ð ‡‚Ð
<Ñ=Ô=ð\ð \ð \ñ >Ô=ð\ð
 ‡‚Ð
;È€ÑMÔMðGð Gð Gñ NÔMðGð ‡‚Ð	=Ñ>Ô>ð=ð =ð =ñ ?Ô>ð=ð ‡‚Ð
>Ñ?Ô?ðGð Gð Gñ @Ô?ðGð ‡‚ˆÑÔðsð sð sñ Ôðsð ‡‚ˆ €Ñ&Ô&ð7ð 7ð 7ñ 'Ô&ð7ð ‡‚ˆ U€Ñ+Ô+ðAð Að Añ ,Ô+ðAð ‡‚ˆ¨E€Ñ2Ô2ðrð rð rñ 3Ô2ðrð ‡‚ˆÑÔð!ð !ð !ñ Ôð!ð
 ‡‚ˆÑÔðð ð ñ Ôðð ‡‚ˆÑÔðð ð ñ Ôðð  GKðð ð ð ð ð< GKð)ð )ð )ð )ð )ð6)ð )ð )ð )ð@Yð Yð Yð4;ð ;ð ;ð ;ð6 Ð ð
9ð 
9ð 
9ð ‡‚Ð
#°u€Ñ=Ô=ð "( °Ð!3Ñ!3Ô!3ð;ð ;ð ;ð ;ñ >Ô=ð;ð( ‡‚Ð
'Ñ(Ô(ð"Nð "Nð "Nñ )Ô(ð"NðJ ‡‚Ð
(Ñ)Ô)ðFð Fð Fñ *Ô)ðFð$ ‡‚Ð
2Ñ3Ô3ðHð Hð Hñ 4Ô3ðHð Að Að Að Að A�iñ Aô Að Að
'ð 'ð 'ð 'ð '�ñ 'ô 'ð 'ð
 ‡‚Ð
+Ñ,Ô,ð	Jð 	Jð 	Jñ -Ô,ð	Jð ‡‚Ð
0Ñ1Ô1ðð ð ñ 2Ô1ðð ‡‚ˆ|ÑÔðy?ð y?ð y?ñ Ôðy?ð y?ð y?rL   