+
    jHàjP ã                  ó–  € R t ^ RIHt ^ RIt^ RIt^ RIHt ^ RIHtH	t	H
t
 ^ RIHt ^ RIt^ RIHt ^ RIt^ RIHtHtHtHtHtHtHtHt ^ RIHt ^ R	IHt ^ R
IHtH t H!t!H"t"H#t#H$t$H%t%H&t&H't'H(t( RRut)t*Rt+]! RRR7      t,]! RRR7      t-]	 ! R R4      4       t.R t/]P`                  RR/R l4       t1 ! R R4      t2R t3R t4RRRR/R lt5R# )zÜGateway-owned live sessions and canonical durable FIFO scheduling.

Only the runtime bootstrap holding profile ownership may initialize this service.
Transport attachment never constructs an agent or takes a turn lease.
)ÚannotationsN)Ú
ContextVar)ÚasdictÚ	dataclassÚfield)Úpartial)ÚSimpleNamespace)ÚCANONICAL_GATEWAY_PROTOCOLÚAdmissionReceiptÚPendingAdmissionÚ	PrincipalÚSessionHandleÚ
SessionRefÚ
SubmissionÚSubscriptionSnapshot)ÚSessionEvents)ÚPendingControls)
ÚSTEERINGÚRuntimeStoreErrorÚadmit_session_inputÚbegin_runtime_epochÚcancel_session_inputÚclaim_session_inputÚget_session_admissionÚlist_session_admissionsÚrecover_session_inputsÚresolve_unknown_session_inputg      Ð?g      @g      N@Únative_write_startedF)ÚdefaultÚmessaging_admissionc                  óœ  € ] tR t^+t$ R]R&   R]R&   RtR]R&   ]! ]R7      tR	]R
&   ]! ]	R7      t
R]R&   ]! RR7      tR]R&   RtR]R&   ]! ]P                  R7      tR]R&   ]! ]P                  R7      tR]R&   RtR]R&   ]! ]R7      tR	]R&   RtR]R&   RtR]R&   RtR]R&   RtR]R&   RtR]R&   ]! ]R7      tR]R&   R tR]R!&   R" tR#tR# )$ÚLiveSessionÚobjectÚsourceÚstrÚrouteNzasyncio.Task | NoneÚtask)Údefault_factoryÚdictÚsubscribersr   Úevent_streamF)Úinitr   ÚcontrolsÚboolÚpause_notifiedzasyncio.LockÚmutation_lockÚ
claim_gateÚrescanÚsettlingztuple | NoneÚcontext_breakdownÚ
reask_pickÚpending_reasoningÚ
supersededÚhistory_mountr   ÚreviewÚ Úcontrol_revisionc                	ó:   € \        V P                  4      V n        R # ©N)r   r*   r,   )Úselfs   &Ú>/home/ubuntu/.hermes/hermes-agent/gateway/session_authority.pyÚ__post_init__ÚLiveSession.__post_init__Z   s   € Ü'¨×(9Ñ(9Ó:ˆŽó    )r,   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__annotations__r&   r   r(   r)   r   r*   r,   r.   ÚasyncioÚLockr/   r0   r1   r2   r3   r4   r5   r6   r7   r   r8   r:   r?   Ú__static_attributes__© rA   r>   r!   r!   +   sô   ‡ àƒNØƒJØ $€DÐ
Ó$Ù¨dÔ3€K�Ó3Ù"'¸Ô"F€L�-ÓFÙ %¨5Ô 1€HˆoÓ1ð !€N�DÓ Ù"'¸¿¹Ô"E€M�<ÓEñ  %°W·\±\ÔB€J�ÓBð €FˆDÓñ
 ¨4Ô0€HˆdÓ0ð '+Ð�|Ó*à€J�Óð '+Ð�|Ó*ð
 €J�Óð  €M�4Óñ $°OÔD€FˆOÓDð Ð�cÓö;rA   r!   c                óÈ   € V P                  4       '       g   V P                  4       f   R# ^ RIpVP                  \        4      P                  RV P                  4       4       R# )z>A dead pump is the one failure this module must never swallow.NzSession drain task died: %r)Ú	cancelledÚ	exceptionÚloggingÚ	getLoggerrB   Úerror)r&   rN   s   & r>   Ú_log_drain_failurerQ   ^   sD   € à‡~�~×Ò˜4Ÿ>™>Ó+Ò3ÙÛØ×Ñ”hÓ×%Ñ%Ð&CÀTÇ^Á^ÓEUÖVrA   Úqueuedc              ó   "  € V P                  V\        P                  ! 4       ^ .4      pV^;;,          ^,          uu&   Ve   V^,          ^8”  d   V! 4         V^ ,          ;_uu_4       GRj  x€L
  R5x € RRR4      GRj  x€L
  V^;;,          ^,          uu&   V^,          '       g   W R# R#  LC L0  + GRj  x€L 
 '       g   i     LG; i  T^;;,          ^,          uu&   T^,          '       g   Y i i ; i5i)a%  One FIFO turn per *key*: ``table[key]`` is ``[asyncio.Lock(), holder + waiters]``, created on
first use and deleted when the last one leaves. asyncio's Lock is FIFO and a cancelled waiter gives
up only its own place. *queued* runs (before waiting) when an earlier turn holds or awaits the key.N)Ú
setdefaultrG   rH   )ÚtableÚkeyrR   Úentrys   &&$ r>   Ú
keyed_turnrX   g   s°   é € ð
 ×Ñ˜S¤7§<¢<£>°1Ð"5Ó6€EØ	ˆ!‡H�…MƒHØÒ˜e A�h¨œlÙŒðØ˜—8—8—8Ü÷ —8ð 	ˆa��A�‹Ø�Q�xŒxØ’
ñ ÷	 —8—8”8ûð 	ˆa��A�‹Ø�Q�xŒxØ‘
ð üsl   ‚AC>ÁC Á.B2Á/C Á2B6Á8C ÂB4ÂC Â*C>Â2C Â4C Â6C	Â<B?Â=
C	ÃC	Ã
C Ã)C;Ã;C>c                  ó:  € ] tR t^ytR tR tRR/R ltRORR/R lltR tR	 t	R
 t
R tR tR tR tR tR tR tR tR tRR/R ltR tR tR tR tR tR tROR ltR t]P<                  R 4       tR t R  t!ROR! lt"R"R/R# lt#R$ t$R% t%ROR& lt&R' t'R(RR)RR*RR+R/R, R- llt(R(RRRR*RR+R/R. lt)R/ t*R0 t+R1 t,R2 t-R3 t.RPR4 lt/R5 t0R6R/R7 lt1R8 t2R9 t3R: t4R; t5R< t6R= t7R> t8R? t9R@R/RA lt:R@R/RB lt;RCRD/RE lt<RF t=RG t>RH t?RI t@RJ tARK tB]CRL 4       tDRM tERNtFR# )QÚSessionAuthorityc               	ó¤  € Wn         W n        W0n        W@n        WPn        / V n        / V n        / V n        \        4       V n	        / V n
        / V n        / V n        / V n        / V n        / V n        / V n        / V n        / V n        \        4       V n        R V n        R V n        / V n        / V n        / V n        / V n        / V n        / V n        / V n        R# )FN)ÚrunnerÚ
profile_idÚinstance_idÚdbÚepochÚsessionsÚwaitersÚeventsÚsetÚnative_waitersÚpending_resultsÚpending_deliveriesÚpending_stopsÚpending_stop_causesÚpending_steersÚsteer_transfersÚlaunch_sourcesÚdelivered_stopsÚadoptedÚcancel_obligationsÚretiringÚretiredÚ_classic_evict_atÚ	executingÚpending_closesÚrotated_ownersÚ_route_turnsÚ_route_epochsÚdeferred_resets)r=   r\   r]   r^   r_   r`   s   &&$$$$r>   Ú__init__ÚSessionAuthority.__init__z   så   € ØŒØ$ŒØ&ÔØŒØŒ
ØˆŒØˆŒØˆŒÜ!›eˆÔØ!ˆÔà"$ˆÔð  ˆÔð $&ˆÔ ð !ˆÔð  "ˆÔØ ˆÔð  "ˆÔð
 ˆŒä"%£%ˆÔàˆŒØˆŒØ!#ˆÔØˆŒð !ˆÔð !ˆÔàˆÔð  ˆÔð  "ˆÖrA   c                óB  € ^ RI Hp V! V 4       VP                  V P                  8w  g   VP                  V P                  8w  d   \        R4      hW1P                  9  d   \        R4      hVP
                  V P                  9  Ed:   V P                  P                  VP
                  4      pVf   \        R4      h^ RI	H
p V P                  P                  4       ;_uu_ 4       p^ RIHp VP                  RWbP
                  ,           W‚P
                  ,           34      P                  4       p	RRR4       X	'       g:   \!        VP#                  R	4      ;'       g    R
4      P%                  R4      '       d   ^ RIHp
 V
! WP
                  4       M2^ RIHp V! WP
                  4      f   ^ RIHp V! WP
                  4       ^ RIHp V P                  VP
                  ,          P6                  '       d   VR8w  d   \        RRRR7      hV P                  VP
                  ,          P8                  pVeY   VP:                  VP<                  8X  d<   VP>                  VP@                  8w  d   RVP                  9  d   \        R4      hR# R# R# R#   + '       g   i     ELj; i)z»Every handler calls this first, so a later ``self.sessions[ref.session_id]`` is
safe: a deleted/evicted live entry surfaces here as ``not_found``, not as a KeyError
deeper in the handler.)Úrequire_servingÚprofile_mismatchÚpermission_deniedNÚ	not_found)ÚPOLICY_PREFIX)ÚLEGACY_PREFIXz+SELECT 1 FROM state_meta WHERE key IN (?,?)Úchat_idr9   zlocal-©Úrestore_local_session)Úrestore_routed_session)Úrestore_api_session©ÚPlatformúsession:readÚsession_supersededÚ
session_idzIthis conversation's chat has moved on to a newer session; it is read-only©r   Údetailzsession:operator)!Úgateway.session_authoritiesr|   r]   r   Úcapabilitiesr‹   ra   r_   Úget_sessionÚhermes_state_localr€   Ú	_read_ctxÚhermes_state_local_migrationr�   ÚexecuteÚfetchoner$   ÚgetÚ
startswithÚgateway.session_local_recoveryr„   Úgateway.session_route_recoveryr…   Úgateway.session_apir†   Úgateway.configrˆ   r6   r#   ÚplatformÚLOCALÚuser_idÚsubject)r=   ÚactorÚrefÚ
capabilityr|   Úrowr€   Úconnr�   Úlocalr„   r…   r†   rˆ   r#   s   &&&&           r>   Ú	authorizeÚSessionAuthority.authorize´   sî  € õ 	@Ù˜ÔØ×Ñ˜tŸ™Ô.°#·.±.ÀDÇOÁOÔ2SÜ#Ð$6Ó7Ð7Ø×/Ñ/Ô/Ü#Ð$7Ó8Ð8Ø�>‰> §¡Õ.Ø—'‘'×%Ñ% c§n¡nÓ5ˆCØŠ{Ü'¨Ó4Ð4Ý8Ø—‘×"Ñ"×$Ô$¨ÝFØŸ™Ð%RØ"§^¡^Õ3°]Ç^Á^Õ5SÐTóVßV^ÑV^ÓV`ð ÷ %÷ œ˜CŸG™G IÓ.×4Ð4°"Ó5×@Ñ@À×JÒJÝPÙ% d¯N©NÕ;åQÙ)¨$·±Ó?ÒGÝGÙ'¨¯n©nÔ=Ý+Ø�=‰=˜Ÿ™Õ(×3×3Ð3¸
ÀnÔ8Tô $Ð$8ÀØ+wôyð yà—‘˜sŸ~™~Õ.×5Ñ5ˆØÒ 6§?¡?°h·n±nÔ#DØ—N‘N e§m¡mÔ3Ð8JÐRW×RdÑRdÔ8dÜ#Ð$7Ó8Ð8ñ 9eÑ3ñ $EÑ÷' %×$Ð$ús   Ã#A	JÊJ	Ú
queue_onlyFc               óÞ   € V P                   '       d   \        R4      hV P                  P                  '       d4   ^ RIHp V'       d   V! V P                  4      '       g   \        R4      hR# R# )zñ``queue_only``: the caller only COMMITS a queued row (never claims or runs it). A restart's
after-turn wait accepts those (#139041): the row is durable FIFO input the next owner runs
exactly once, while this owner's claim path stays refused.Úruntime_draining)Úrestart_wait_openN)rp   r   r\   Ú	_drainingÚgateway.drain_controlr«   )r=   r¨   r«   s   &$ r>   Ú_require_admission_openÚ(SessionAuthority._require_admission_openÚ   sU   € ð �=�=ˆ=Ü#Ð$6Ó7Ð7Ø�;‰;× × Ð Ý?ßÑ#4°T·[±[×#AÒ#AÜ'Ð(:Ó;Ð;ñ $Bñ !rA   Nc               ó   a aa€ VVV 3R lpV# )z®The admission gate re-checked inside an off-loop write transaction (with the caller's
own guard), so a drain that began while the write waited on the writer still refuses it.c                óH   <€ SP                  SR 7       Se   S! V 4       R# R# )©r¨   N)r®   )r¤   r¦   r¨   r=   s   &€€€r>   ÚguardÚ/SessionAuthority._admission_gate.<locals>.guardè   s&   ø€ Ø×(Ñ(°JÐ(Ô?ØÒ$Ù˜$–ñ %rA   rJ   )r=   r¦   r¨   r³   s   ffd r>   Ú_admission_gateÚ SessionAuthority._admission_gateå   s   ú€ ÷	 ð ˆrA   c                ór   € V'       g   V# V P                   P                  V4      pV'       d
   V^ ,          # T# )zùThe FIFO/admission identity of a route: the root of its compression lineage.
Compression advances the physical transcript, never the admission identity. A session this
store does not hold (another served profile's, under multiplex) keeps its own id.)r_   Úget_compression_lineage)r=   r‹   Úlineages   && r>   Úlogical_ownerÚSessionAuthority.logical_ownerî   s2   € ÷ ØÐØ—'‘'×1Ñ1°*Ó=ˆß$ˆw�q�zÐ4¨*Ð4rA   c                	ót   € V P                   P                  VP                  4      ;'       g    VP                  # r<   )r_   Úget_compression_tipr‹   )r=   r¡   s   &&r>   Úphysical_targetÚ SessionAuthority.physical_target÷   s'   € Ø�w‰w×*Ñ*¨3¯>©>Ó:×LÐL¸c¿n¹nÐLrA   c                	óH   € V P                   ! V.V P                  V4      O5!  # r<   )Ú_publish_routeÚ_reserve_route)r=   r#   s   &&r>   ÚregisterÚSessionAuthority.registerú   s#   € Ø×"Ò" 6ÐH¨D×,?Ñ,?ÀÓ,GÓHÐHrA   c                óV  € V P                  4        V P                  P                  P                  V4      pV P	                  VP
                  4      pV P                  P                  V4      f1   V P                  P                  W1P                  P                  R7       W2P                  3# )z The durable half of ``register`` (routing entry + reserved row): thread-safe, so async
callers run it off the owner loop and publish the live entry on the loop.©r#   )r®   r\   Úsession_storeÚget_or_create_sessionrº   r‹   r_   r�   Úcreate_sessionrœ   ÚvalueÚsession_key)r=   r#   rW   Úsids   &&  r>   rÂ   ÚSessionAuthority._reserve_routeý   sƒ   € ð 	×$Ñ$Ô&Ø—‘×)Ñ)×?Ñ?ÀÓGˆØ× Ñ  ×!1Ñ!1Ó2ˆà�7‰7×Ñ˜sÓ#Ò+Ø�G‰G×"Ñ" 3¯©×/DÑ/DÐ"ÔEØ×%Ñ%Ð%Ð%rA   c                	ó†  € V P                  4        V P                  P                  V4      pVfp   \        W4      ;q@P                  V&   V P                  P	                  4        F8  pVP
                  '       g   K  VP                  V8X  g   K*  WTJg   K1  RVn        K:  	  R;Vn        Vn        \        V P                  V4      # )NTF)
r®   ra   r–   r!   Úvaluesr7   r%   r6   r   r]   )r=   r#   rÌ   r%   ÚliveÚothers   &&&&  r>   rÁ   ÚSessionAuthority._publish_route  sœ   € Ø×$Ñ$Ô&Ø�}‰}× Ñ  Ó%ˆØŠ<Ü(3°FÓ(BÐBˆD—=‘= Ñ%ð Ÿ™×-Ñ-Ö/�Ø×&×&Ò&¨5¯;©;¸%Ö+?ÀEÕDUØ'+�EÖ$ñ 0ð 05Ð4ˆŒ˜$Ô,Ü˜$Ÿ/™/¨3Ó/Ð/rA   c                	óò   € V P                   VP                  ,          pVP                  '       d   R # \        V P                  RR 4      ;'       g    V P                  P
                  pV! VP                  4      # )NÚ_resident_agent_for)ra   r‹   r6   Úgetattrr\   Ú_cached_agent_forr%   )r=   r¡   rÐ   Úlookups   &&  r>   ÚagentÚSessionAuthority.agent  sT   € Ø�}‰}˜SŸ^™^Õ,ˆØ�?�?ˆ?ÙÜ˜Ÿ™Ð&;¸TÓB×cÐcÀdÇkÁk×FcÑFcˆÙ�d—j‘jÓ!Ð!rA   c                ól  € \        V P                  VP                  R7      pV P                  P	                  VP                  4      pVe   \        VP                  4      M/ pV'       g   V# V Uu/ uF  qUR,          VbK  	  ppVP                  V4       \        VP                  4       R R7      # u upi )a  Pending admissions as the event stream presents them: a settlement committed but not yet
published (``LiveSession.settling``) still reads as its started claim. Callers that pair the
result with stream state hold ``event_stream.lock``, under which ``settling`` changes.©r‹   Úadmission_idc                ó   € V R ,          # )ÚseqrJ   )r£   s   &r>   Ú<lambda>Ú0SessionAuthority._pending_rows.<locals>.<lambda>(  s   € °S¸¶ZrA   )rV   )
r   r_   r‹   ra   r–   r(   r2   ÚupdateÚsortedrÏ   )r=   r¡   ÚrowsrÐ   Úmaskedr£   s   &&    r>   Ú_pending_rowsÚSessionAuthority._pending_rows  sŽ   € ô ' t§w¡w¸3¿>¹>ÔJˆØ�}‰}× Ñ  §¡Ó0ˆØ(,Ò(8”�d—m‘mÔ$¸bˆßØˆKÙ48Ó9±D¨S�NÕ# SÒ(±DˆÐ9Ø�‰�FÔÜ�d—k‘k“mÑ)?Ô@Ð@ùò :s   Á0B1c                	óâ  € V P                   P                  VP                  4      pVf   \        R4      hV P	                  V4      p\
        ;QJ d    R V 4       F  '       g   K   RM	  RM! R V 4       4      '       d   RM=\
        ;QJ d    R V 4       F  '       g   K   RM	  RM! R V 4       4      '       d   RMRp\        WP                  V P                  VR	,          VR
,          V4      # )Nr   c              3  ó8   "  € T F  qR ,          R8H  x € K  	  R# 5i©ÚstatusÚunknownNrJ   ©Ú.0Úrs   & r>   Ú	<genexpr>Ú+SessionAuthority._handle.<locals>.<genexpr>/  s   é € Ð KÁ7¸a 8¥°	Ö!9Ã7ùó   ‚TFrë   c              3  ó8   "  € T F  qR ,          R8H  x € K  	  R# 5i)rê   ÚstartedNrJ   rì   s   & r>   rï   rð   0  s   é € ÐG¹w¸!˜x�[¨IÖ5»wùrñ   ÚrunningÚidleÚruntime_revisionÚruntime_generation)	r_   r�   r‹   r   rå   Úanyr   r^   r`   )r=   r¡   r£   ÚpendingÚstates   &&   r>   Ú_handleÚSessionAuthority._handle*  sµ   € Ø�g‰g×!Ñ! #§.¡.Ó1ˆØŠ;Ü# KÓ0Ð0Ø×$Ñ$ SÓ)ˆß ›SÑ KÁ7Ó KŸSŸSšSÑ KÁ7Ó K×KÒK‘	ß›ÑG¹wÓGŸŸšÑG¹wÓG×GÒG‰IÈVð 	ä˜S×"2Ñ"2°D·J±JÀÐDVÕ@WØ Ð!5Õ6¸ó?ð 	?rA   c              ƒ  	óP   "  € V P                  WR 4       V P                  V4      # 5i)r‰   )r¦   rû   )r=   r    r¡   s   &&&r>   ÚresolveÚSessionAuthority.resolve4  s"   é € Ø�‰�u >Ô2Ø�|‰|˜CÓ Ð ùs   ‚$&c                ó˜   €  V! 4       #   \          d6    T P                  P                  TP                  4      f   \        R4      Rhh i ; i)zö``read()``; a refusal because *ref* was deleted after ``authorize`` passed is ``not_found``.
A delete commits off the loop, so its rows can be gone while the live entry still waits for its
retirement, and readers meet the missing receipt instead.Nr   )r   r_   r�   r‹   )r=   r¡   Úreads   &&&r>   Úunless_deletedÚSessionAuthority.unless_deleted8  sF   € ð	Ù“6ˆMøÜ ô 	Ø�w‰w×"Ñ" 3§>¡>Ó2Ò:Ü'¨Ó4¸$Ð>Øð	ús
   ‚	 ‰A A	c              ƒ  	ó<  a aaaa"  € S P                  SSR 4       ^ RIHoHp V! S S4      G Rj  x€L
 o^ RIHp V! S SP                  4      G Rj  x€L
  S P                  SSR 4       S P                  SP                  ,          p^ RIH	p VP                  P                  ;_uu_ 4        S P                  S4      p\        V3R lVP                  P                  4        4       R4      ;'       g     \         P"                  ! 4       P$                  pSVP                  V&   S P&                  P)                  SP                  R4       ^ RIHp	 V	! S P.                  SP                  34       S P0                  P3                  SP4                  4      p
V
eU   VP                  P6                  P9                  V
4       \;        S P<                  SP                  4      VP                  n        VP@                  R8X  d   VPB                  MRpVPD                  PG                  SP                  V4      pVP                  PI                  4       w  rÞS PK                  SVVVV 3R l4      p\M        Y‡YÞT\N        ;QJ d    . V 3R	 lV! S S4       4       F  NK  	  5M! V 3R	 lV! S S4       4       4      V4      pRRR4       ^ R
I(H)p \T        PV                  ! VS SP                  4      G Rj  x€L
  ^ RI,H-p V! S SV4      G Rj  x€L
  X#  ELÐ EL²  + '       g   i     L`; i L7 L!5i)r‰   )Úlocal_historyÚprepare_historyN)Úkeep_from_discard©Úpending_rowsc              3  ó>   <"  € T F  w  rVS8X  g   K  Vx € K  	  R # 5ir<   rJ   )rí   rV   Úmemberr    s   &  €r>   rï   Ú*SessionAuthority.attach.<locals>.<genexpr>Q  s#   øé € ð !5Ñ8P©¨Ø$*¨e¡O÷ "%¢Ó8Pùs   ƒ“
)Úallow_for_sessionrô   c                 ó*   <€ \        S ! SSS4      4      # r<   )Útuple)r  Úpreparedr¡   r=   s   €€€€r>   rß   Ú)SessionAuthority.attach.<locals>.<lambda>^  s   ø€ ´u¹]È4ÐQTÐV^Ó=_Ô7`rA   c              3  óF   <"  € T F  pSP                  V4      x € K  	  R # 5ir<   )Ú_pending_receipt)rí   rî   r=   s   & €r>   rï   r  `  s!   øé € Ð-hÑPgÈ1¨d×.CÑ.CÀA×.FÐ.FÓPgùs   ƒ!)Úcancel_persisted_close)Úreask_on_attach).r¦   r˜   r  r  Úgateway.session_onboardingr  r‹   ra   Úgateway.session_queued_controlsr	  r*   Úlockrû   Únextr)   ÚitemsÚuuidÚuuid4Úhexrt   ÚpopÚtools.async_delegationr  r]   rc   r–   Útransport_idÚfanoutÚattachr   Ú_retire_overflowedÚon_overflowÚexecution_stateÚexecution_generationr,   ÚsnapshotÚ	watermarkr  r   r  Úgateway.session_viewer_closer  rG   Ú	to_threadÚgateway.session_deferred_pickr  )r=   r    r¡   r  r  rÐ   r	  ÚhandleÚsubscriptionr  Ú	transportÚactive_generationÚpromptsr`   ÚsequenceÚhistoryr'  r  r  r  r  s   fff                @@r>   r"  ÚSessionAuthority.attachC  sl  üé € Ø�‰�u˜c >Ô2ßQÙ(¨¨sÓ3×3ˆÝ@ñ    c§n¡nÓ5×5Ð5à�‰�u˜c >Ô2Ø�}‰}˜SŸ^™^Õ,ˆÝ@Ø×Ñ×#×#Ó#Ø—\‘\ #Ó&ˆFÜô !5¸×8HÑ8H×8NÑ8NÔ8Pó !5Ø6:ó<÷ Pð PÜ?C¿zºz»|×?OÑ?Oð à-2ˆD×Ñ˜\Ñ*Ø×Ñ×#Ñ# C§N¡N°DÔ9Ý@Ù˜tŸ™°·±Ð?Ô@ØŸ™Ÿ™¨×(:Ñ(:Ó;ˆIØÒ$Ø×!Ñ!×(Ñ(×/Ñ/°	Ô:Ü07¸×8OÑ8OÐQT×Q_ÑQ_Ó0`�×!Ñ!Ô-Ø?E×?UÑ?UÐYbÔ?b × ;Ò ;ÐhlÐØ—m‘m×,Ñ,¨S¯^©^Ð=NÓOˆGØ"×/Ñ/×9Ñ9Ó;‰OˆEØ×)Ñ)¨#×/`ÓaˆGÜ+¨LÀ%ÐSZß(-¬Ô-hÑP\Ð]aÐcfÔPgÓ-h¯©Ô-hÑP\Ð]aÐcfÔPgÓ-hÓ(hÐjqósˆH÷! $õ$ 	HÜ×ÒÐ 6¸¸c¿n¹nÓM×MÐMÝAÙ˜d C¨Ó.×.Ð.Øˆò? 4ò 	6÷
 $×#úñ& 	Ná.ùsY   ‡(L¯K?° LÁLÁALÂ)HLÊ-3LË LË!LË8LË9LÌLÌL	Ì	LÌLc                óô   € V P                   V,          p\        VP                  P                  4       4       F=  w  rEV P                  P                  VP                  4      VJ g   K0  VP                  V K?  	  R# )z The fanout dropped this peer's backlog: its subscription is over even though the
socket still answers RPCs. A later resume re-attaches it with a fresh snapshot.N)ra   Úlistr)   r  rc   r–   r   )r=   r‹   r.  rÐ   r-  r  s   &&&   r>   r#  Ú#SessionAuthority._retire_overflowedg  s]   € ð �}‰}˜ZÕ(ˆÜ$(¨×)9Ñ)9×)?Ñ)?Ó)AÖ$BÑ ˆLØ�{‰{�‰˜v×2Ñ2Ó3°yÕ@Ø×$Ñ$ \Ò2ó %CrA   Ú
end_reasonc          
   ƒ  	ó´  "  € V P                   P                  4        EF%  w  rEW%P                  9   g   K  VP                  V,          V8w  d   \        R 4      hVP                  V V P                  P                  VP                  4      pVe&   VP                  P                  P                  V4       VP                  '       g~   ^ RI
Hp \        P                  ! WpV.4      G Rj  x€L
  V'       d   ^ RIHp V! WV4      G Rj  x€L
   R# ^ RIHp	Hp
 ^ RIHp V! V \+        W�V4      \+        W V4      R7      G Rj  x€L
   R# 	  \        R4      h Lk LN L5i)r~   N)Úrelease_editor_mcp)Úclose_viewer_session)Úend_idle_acp_sessionÚreopen_if_reattached©Útracked_write©Úthenr   )ra   r  r)   r   rc   r–   r   r*   r!  ÚdetachÚgateway.session_local_mcpr9  rG   r*  r)  r:  Úgateway.session_acp_lifecycler;  r<  Úgateway.session_runtime_workersr>  r   )r=   r    Úsubscription_idr7  r‹   rÐ   r.  r9  r:  r;  r<  r>  s   &&&$        r>   rA  ÚSessionAuthority.detacho  s'  é € Ø $§¡× 3Ñ 3× 5ÑˆJØ×"2Ñ"2Ö2Ø×#Ñ# OÕ4¸Ô=Ü+Ð,?Ó@Ð@Ø×$Ñ$ _Ð5Ø ŸK™KŸO™O¨E×,>Ñ,>Ó?�	ØÒ(Ø×%Ñ%×,Ñ,×3Ñ3°IÔ>Ø×'×'Ð'ÝLÜ!×+Ò+Ð,>ÀzÀlÓS×SÐSß!ÝUÙ2°4ÀZÓP×PÐPÚßhÝMá'¨¬gÐ6JÐR\Ó.]Ü-4Ð5IÐQ[Ó-\ô^÷ ^ð ^âñ) !6ô*   Ó,Ð,ñ Tñ Qñ
^ùsG   ‚.EµBEÃ!EÃ&EÃ'EÃ3EÄEÄ7EÄ=EÄ>EÅEÅEc           
     	óö   € VR ,          VR,          r2V\         8X  d   RRr2\        VR,          \        V P                  VR,          4      VR,          Y#VR,          ;'       g    V P                  VR,          4      # )	rê   Úoutcomeró   NrÜ   Útarget_session_idrÞ   Úowner_epochÚ
generation)r   r
   r   r]   r`   )r=   r£   rê   rH  s   &&  r>   Ú_receiptÚSessionAuthority._receipt‡  sr   € Ø˜h�-¨¨Y­�Ø”hÔØ'¨�GÜ  NÕ 3´ZÀÇÁÐQTÐUhÕQiÓ5jØ # E¥
¨F¸SÀÕ=O×=]Ð=]ÐSW×S]ÑS]Ð_bÐcoÕ_pórð 	rrA   c                	ó>  € VR ,          pVP                  R4      pVf3   VP                  R/ 4      P                  R/ 4      P                  RR4      p^ RIHp \        R/ \	        V P                  V4      4      BRVR,          RVRV! W4      R	VR
,          \        8H  /B # )ÚpayloadÚtextÚnative_text_v1Úeventr9   )Úqueued_controlsÚinput_idÚ
request_idr,   ÚsteeringrH  rJ   )r–   r  rS  r   ÚvarsrL  r   )r=   r£   rO  rP  rS  s   &&   r>   r  Ú!SessionAuthority._pending_receiptŽ  s¬   € ð �i•.ˆØ�{‰{˜6Ó"ˆØŠ<Ø—;‘;Ð/°Ó4×8Ñ8¸À"ÓE×IÑIÈ&ÐRTÓUˆDÝCÜñ j¤$ t§}¡}°SÓ'9Ó":ñ jÀSÈÕEVð jÐ]að jÙ)8¸Ó)CðjØNQÐR[ÍnÔ`hÑNhòjð 	jrA   c                	óX  € V P                   VP                  ,          p^ RIHp VP                  P
                  ;_uu_ 4        V P                  V4      pV! W4       Uu. uF  p\        V P                  V4      4      NK  	  ppVP                  P                  VP                  RVP                  RVRV P                  R\        RVP                  R8H  RVP                  RVP                  /R	R
7       RRR4       ^ RIHp V! WP                  4       R# u upi   + '       g   i     L/; i)é    r  Ústored_session_idrù   Úauthority_epochÚdesktop_protocolrô   r&  Úrevisionzsession.info©Ú
event_typeN)Úwake_bot_receipts)ra   r‹   r  r	  r*   r  rû   r   r  Úpublishr`   r	   r%  r&  r^  Úgateway.session_bot_mailboxra  )r=   r¡   rÐ   r	  r,  r£   rù   ra  s   &&      r>   Ú_publish_pendingÚ!SessionAuthority._publish_pending™  s÷   € Ø�}‰}˜SŸ^™^Õ,ˆÝ@Ø×Ñ×#×#Ó#Ø—\‘\ #Ó&ˆFÙEQÐRVÔE\Ó]ÑE\¸c”v˜d×3Ñ3°CÓ8Ö9ÑE\ˆGÐ]ð ×Ñ×%Ñ% c§n¡nØ# S§^¡^°YÀÐIZÐ\`×\fÑ\fØ"Ô$>Ø˜6×1Ñ1°YÑ>Ø&¨×(CÑ(CØ˜FŸO™Oð7ð )ð &ô *÷ $õ 	BÙ˜$§¡Ö/ùò ^÷ $×#ús   ÁDÁ#DÂA1DÄDÄD)	c                	ó�  a a€ S P                   VP                  ,          pR Vn        VP                  e!   VP                  P	                  4       '       dr   \
        P                  ! S P                  V4      4      Vn        VP                  P                  \        4       ^ RI
Ho VP                  P                  VV 3R l4       R# R# )TN)Úpersist_work_countc                ó   <€ S! SV 4      # r<   rJ   )r&   rg  r=   s   &€€r>   rß   Ú,SessionAuthority._schedule.<locals>.<lambda>³  s   ø€ Ñ5GÈÈdÔ5SrA   )ra   r‹   r1   r&   ÚdonerG   Úcreate_taskÚ_drainÚadd_done_callbackrQ   rD  rg  )r=   r¡   rÐ   rg  s   f& @r>   Ú	_scheduleÚSessionAuthority._schedule¬  s   ù€ Ø�}‰}˜SŸ^™^Õ,ˆØˆŒØ�9‰9Ò §	¡	§¡× 0Ò 0Ü×+Ò+¨D¯K©K¸Ó,<Ó=ˆDŒIØ�I‰I×'Ñ'Ô(:Ô;ÝJØ�I‰I×'Ñ'Õ(SÖTñ	 !1rA   c                óÌ   € \         P                  WP                  V4      34       F:  pW P                  9   g   K  V P	                  \        V P                  V4      4       K<  	  R# )z¦A worker execution on ``session_id`` (a logical owner or its compression continuation)
ended: a drain that parked behind it re-runs. A no-op while a drain is running.N)r(   Úfromkeysrº   ra   rn  r   r]   )r=   r‹   rÌ   s   && r>   Úwake_after_workerÚ"SessionAuthority.wake_after_workerµ  sG   € ô —=‘= *×.@Ñ.@ÀÓ.LÐ!MÖNˆCØ—m‘mÖ#Ø—‘œz¨$¯/©/¸3Ó?Ö@ó OrA   c                óx  € \        V P                  VP                  R7       F”  pVR,          pVR8X  d   W@P                  9  d   K%  V P                  P	                  V4       V P
                  P                  VR4      pVf   Kb  VP                  4       '       d   Kz  VP                  \        V4      4       K–  	  R# )aH  The FIFO stopped without claiming its head. Committed rows stay queued for a later
drain; process-local delivery/HTTP/producer waiters on this session are released,
with the reason instead of a reply, so an adapter loop is never parked on a turn that
will not run. The ingress turns that refusal into one user-facing notice per episode.
``session_busy`` is transient (a registered worker finishes and wakes the FIFO), so only
the messaging delivery waiters are released for it; an API/webhook/Bot observer keeps
waiting for the answer instead of reporting accepted work as a conflict.rÛ   rÜ   Úsession_busyN)
r   r_   r‹   re   Údiscardrb   r  rj  Úset_exceptionr   )r=   r¡   Úreasonr£   rÜ   Úwaiters   &&&   r>   Ú_pauseÚSessionAuthority._pause¼  sŒ   € ô +¨4¯7©7¸s¿~¹~×NˆCØ˜~Õ.ˆLØ˜Ô'¨L×@SÑ@SÔ,SÙØ×Ñ×'Ñ'¨Ô5Ø—\‘\×%Ñ% l°DÓ9ˆFØÔ!¨&¯+©+¯-¬-Ø×$Ñ$Ô%6°vÓ%>Ö?ó OrA   c              ƒ  	ó>   "  € ^ RI Hp V! WW#V4      G Rj  x€L
 #  L5i)rZ  )Úadmit_automationN)Úgateway.session_automationr}  )r=   ÚadapterrR  ÚidentityÚreplacesr}  s   &&&&& r>   r}  Ú!SessionAuthority.admit_automationÍ  s   é € Ý?Ù% d°UÀhÓO×OÐOÑOùs   ‚–—c           	   ƒ  óä  "  € ^ RI HpHp V P                  V4      ;_uu_4       GRj  x€L
 pV! V 4      ;_uu_ 4       p V P	                  W4      G Rj  x€L
 uuRRR4       uuRRR4      GRj  x€L
  #  LK L" L	  \
         d&    TP                  '       g   T! T4      G Rj  x€L 
  h i ; i  + '       g   i     M; iRRR4      GRj  x€L 
  R#   + GRj  x€L 
 '       g   i     R# ; i5i)zOAwait current connector policy, then commit before ACK or scheduling execution.)Úabandon_captureÚcapture_leaseN)Úgateway.session_ingress_mediar„  r…  Ú_route_turnÚ_admit_nativeÚBaseExceptionÚwrite_started)r=   rR  r„  r…  ÚfenceÚscopes   &&    r>   Úadmit_nativeÚSessionAuthority.admit_nativeÑ  s¬   é € çPØ×#Ñ# E×*×*Ô*¨eÙ˜t×$Ô$¨ðØ!%×!3Ñ!3°EÓ!A×A÷ %Ñ$÷ +×*Ô*ñ Bñ +øô %ô ð !×.×.Ð.Ù-¨eÓ4×4Ñ4Øðú÷ %×$ú÷ +×*×*×*×*Ô*üs¨   ‚&C0¨A4©C0¬C½B-	¿A:ÁA6ÁA:Á
CÁ!C0Á.A8Á/C0Á6A:Á8C0Á:B*ÂB*Â"B%Â#B*Â*B-	Â-B=Â8CÃ C0ÃCÃC0ÃC-	ÃCÃ
C-	Ã%C-	Ã'	C0c               ó&  a aaa"  € \         P                  4       o\         P                  R4        S P                  P                  P                  VP                  4      oSf   R5x € R# S P                  S4      oRVVV 3R llpV3R lp\        S P                  SVR7      ;_uu_4       GRj  x€L
  Se   V! 4        Se   TMR5x € RRR4      GRj  x€L
  R#   \         d    Ro LŒi ; i L? L  + GRj  x€L 
 '       g   i     R# ; i5i)a¾  One route's inputs commit in the order they entered ``admit_native``: a photo's off-loop
capture must not let the chat's next text take the earlier FIFO position. asyncio's Lock is
FIFO and a cancelled waiter gives up only its own place, so a later input never overtakes an
earlier one still in flight. Other routes never wait; an unroutable event (refused by
``prepare_native``) is not held. Yields the messaging input's fence check (else None).Nc                óP   <€ SP                  S4      S8w  d   \        R RRR7      hR# )Ústale_generationr%   z4a /stop or /new of this chat came after this messagerŒ   N)Úroute_epochr   )Ú_connÚarrivedrV   r=   s   &€€€r>   r‹  Ú+SessionAuthority._route_turn.<locals>.fenceñ  s2   ø€ Ø×Ñ Ó$¨Ô/Ü'Ð(:À'Ø/eôgð gñ 0rA   c                 óž   <€ \        S \        P                  4      '       d,   S P                  4       '       g   S P	                  R 4       R # R # R # r<   )Ú
isinstancerG   ÚFuturerj  Ú
set_result)Úingresss   €r>   rR   Ú,SessionAuthority._route_turn.<locals>.queuedö  s5   ø€ Ü˜'¤7§>¡>×2Ò2¸7¿<¹<¿>º>Ø×"Ñ" 4Ö(ñ <JÑ2rA   )rR   r<   )r   r–   rd   r\   rÇ   Ú_generate_session_keyr#   ÚAttributeErrorr’  rX   rv   )r=   rR  r‹  rR   r”  rš  rV   s   f&  @@@r>   r‡  ÚSessionAuthority._route_turnß  sÚ   ûé € ô &×)Ñ)Ó+ˆÜ×Ñ Ô%ð	Ø—+‘+×+Ñ+×AÑAÀ%Ç,Á,ÓOˆCð Š;Ø‹JÙØ×"Ñ" 3Ó'ˆ÷	gñ 	gõ
	)ô ˜d×/Ñ/°¸V×D×DÖDØÒ"Ù”Ø"Ò.‘%°DÓ8÷ E×DÑDøô ô 	ØŠCð	ú÷ E×D×DÕDüsq   †*D±/C Á ADÂ0C0Â1DÂ4C4ÃDÃC2ÃDÃC-Ã*DÃ,C-Ã-DÃ2DÃ4D	Ã:C=Ã;
D	ÄD	Ä	Dc                ó:   € V P                   P                  V^ 4      # )zCHow many messaging /stop and /new fenced *route* (``fence_route``).)rw   r–   ©r=   r%   s   &&r>   r’  ÚSessionAuthority.route_epochþ  s   € à×!Ñ!×%Ñ% e¨QÓ/Ð/rA   c                óP   € V P                  V4      ^,           V P                  V&   R# )z’/stop and /new: the route's messaging input still capturing or waiting, and a slash command's
turn read before it (``_stop_epoch``), never commit.N)r’  rw   r   s   &&r>   Úfence_routeÚSessionAuthority.fence_route  s$   € ð %)×$4Ñ$4°UÓ$;¸aÕ$?ˆ×Ñ˜5Ó!rA   c              ƒ  	óÆ  a aaaa"  € ^ RI p^ RIHpHp S P	                  4        V! S P
                  S4      G Rj  x€L
 p\        SRR4      ;p'       d   WvR,          R&   S P	                  4        V! V4      p^ RIHp	 S P                  ! V.V	! S \        S P                  V4      4      G Rj  x€L
 O5!  oVP                  VP                  VP                  P                  VP                   VP"                  VP$                  .RR7      p
\'        VR,          R,          R	,          ;'       g     \(        P*                  ! 4       P,                  4      pVR,          R,          P/                  R
4      ;p'       d   VRV,           ,          pS.o^ RIHp VP5                  SS P6                  4      oVVVVV 3R lp^ RIHp VP/                  4       ;pe   RVn        \>        PA                  R4       V	! S \        S PB                  RV
,           SPD                  W¶VPG                  SS PI                  V4      4      \        SRR4      R7      VRVV 3R lR7      G Rj  x€L
 #  EL EL± L
5i)rZ  N)Úprepare_nativeÚrestore_native_sourceÚ_ingress_sha256rQ  Úingress_sha256r=  )Ú
separatorsrR  Ú
message_idÚedit_revisionz:edit:)Úsession_retry_admissionc                óü   <€ \        SP                  V P                  R 4      ;'       g    SP                  4      S^ &   Se#   SP                  '       d   SP                  4        SP                  S^ ,          SV 4      # )rI  )r   r]   r–   r‹   ÚappliedÚ	on_commitÚ	_admitted)r£   Ú	committedrR  r¡   Úrewriter=   s   &€€€€€r>   ÚadmittedÚ0SessionAuthority._admit_native.<locals>.admitted  sa   ø€ Ü% d§o¡o°s·w±wÐ?RÓ7S×7eÐ7eÐWZ×WeÑWeÓfˆI�a‰LØÒ" w§§ Ø×!Ñ!Ô#Ø—>‘> )¨A¥,°°sÓ;Ð;rA   )Ú_lease_scopeTz
messaging:Úraw_message)Úprincipal_idr‹   rU  rO  r¦   Úrawc                ó4   <€ SP                  S^ ,          4      # )rZ  )Ú_schedule_admitted)rL  r²  r=   s   &€€r>   rß   Ú0SessionAuthority._admit_native.<locals>.<lambda>*  s   ø€ À×@WÑ@WÐXaÐbcÕXdÔ@erA   ©r@  ÚorderedÚafter)Ú,Ú:)%ÚjsonÚgateway.session_enveloper¦  r§  r®   r\   rÕ   rD  r>  rÁ   r   rÂ   ÚdumpsÚprofilerœ   rÊ   r‚   Ú	thread_idrž   r$   r  r  r  r–   Úgatewayr­  Útaker_   r†  r¶  rŠ  r   rd   Ú_admit_native_writer‹   Úcomposerµ   )r=   rR  r‹  rÂ  r¦  r§  rO  Úfingerprintr#   r>  r€  rU  r^  r­  r´  r¶  rŒ  r²  r¡   r³  s   ff&              @@@r>   rˆ  ÚSessionAuthority._admit_native  s  üé € ÛßRØ×$Ñ$Ô&Ù& t§{¡{°EÓ:×:ˆÜ! %Ð):¸DÓAÐAˆ;ÖAØ:EÐ$Õ%Ð&6Ñ7Ø×$Ñ$Ô&Ù& wÓ/ˆÝAØ×!Ò! &Ðk±¸tÄWÈT×M`ÑM`ÐbhÓEiÓ1j×+jÓkˆØ—:‘:˜vŸ~™~¨v¯©×/DÑ/DÀfÇnÁnØ%×/Ñ/°·±ðAØMWð ó Yˆä˜Ð!1Õ2°7Õ;¸LÕI×]Ð]ÌTÏZÊZË\×M]ÑM]Ó^ˆ
ØÐ/Õ0°Õ9×=Ñ=¸oÓNÐNˆ8ÖNØ˜( XÕ-Õ-ˆJØ�Eˆ	å3Ø)×.Ñ.¨u°d·g±gÓ>ˆ÷	<ñ 	<õ
 	?Ø!×%Ñ%Ó'Ð'ˆEÒ4Ø"&ˆEÔÜ× Ñ  Ô&Ù" 4¬Ø×$Ñ$°<À(Õ3JÐWZ×WeÑWeØ!Ø-×5Ñ5°g¸t×?SÑ?SÐTYÓ?ZÓ[Ü˜˜}¨dÓ3ô	*5ð
  4Õ/eôg÷ gð 	gò5 ;ò ,kñ(gùs<   ‡3I!ºI»A0I!Â+I
Â,C	I!Å6CI!ÉIÉI!ÉI!ÉI!r¹  c          
     	óJ  € ^ RI HpHpHp	 VP	                  R/ 4      P	                  R. 4      p
V P                  V4      p V! V P                  WW4VR7      p\        V P                  V P                  WW4VR7      #   \         d    T! 4        T	! T P                  T
RR7       h i ; i)rZ  )Údrop_capture_leaseÚreconcile_native_retryÚrelease_unheld_mediarQ  Úmedia)r¸  r‹   rU  rO  r¹  )r`   r¸  r‹   rU  rO  Ú_authorize_writeF)Úretain_history)
r†  rÎ  rÏ  rÐ  r–   Ú_current_ownerr_   r   r`   Ú	Exception)r=   r¸  r‹   rU  rO  r¦   r¹  rÎ  rÏ  rÐ  Úfreshs   &$$$$$$    r>   rÉ  Ú$SessionAuthority._admit_native_write,  s¢   € ÷ 	sÑrØ—‘Ð,¨bÓ1×5Ñ5°g¸rÓBˆØ×(Ñ(¨Ó4ˆ
ð		Ù,¨T¯W©WÀ<Ø8BÐY\ô^ˆGä& t§w¡w°d·j±jÈ|Ø2<Ð`iôkð køäô 	áÔ Ù  §¡¨%ÀÕFØð		ús   ¿9A9 Á9)B"c                óø   € V P                   P                  V4      pVf   V# V P                  P                  P	                  V4      pVe   V P                  VP                  4      MTpW@P                  9   d   V# T# )z©``session_id`` unless the exhaustion auto-reset rotated it away after this admission
reserved it: then the live fresh session its route now names (the moved rows' home).)ru   r–   r\   rÇ   Úlookup_by_session_keyrº   r‹   ra   )r=   r‹   r%   rW   Úcurrents   &&   r>   rÔ  ÚSessionAuthority._current_owner=  sq   € ð ×#Ñ#×'Ñ'¨
Ó3ˆØŠ=ØÐØ—‘×)Ñ)×?Ñ?ÀÓFˆØ:?Ò:K�$×$Ñ$ U×%5Ñ%5Ô6ÐQ[ˆØ!§]¡]Ô2ˆwÐB¸
ÐBrA   c                	ó¨   € Ve.   RVn         VR,          R8X  d   \        VRR 4      ;pe   V! 4        V P                  V4       V P                  V4      # )NTrê   rR   Ú
_on_commit)Ú_gateway_acceptedrÕ   rd  rL  )r=   r¡   rR  r£   r²  s   &&&& r>   r±  ÚSessionAuthority._admittedG  sR   € ØÒØ&*ˆEÔ#Ø�8�} Ô(¼7À5È,ÐX\Ó;]Ð.]¨iÒ-jÙ”Ø×Ñ˜cÔ"Ø�}‰}˜SÓ!Ð!rA   c                	ó(   € V P                  V4       R # r<   )rn  )r=   r¡   rL  s   &&&r>   r»  Ú#SessionAuthority._schedule_admittedO  s   € à�‰�sÖrA   c           	   ƒ  óâ  "  € ^ RI Hp ^ RIHp \	        V4      pV! R V 4       4      p/ pV EF  w  rgp WF,          ^8w  d   \        R4      h\        V P                  VRR7      p	V	 U
u. uF  p
RV
R,          9   g   K  V
NK  	  pp
V'       g   \        R	4      hV P                  \        V P                  V4      4      pV! V P                  VR,          R,          VWx4      G R
j  x€L
 w  rÞV	 F¡  p
V
R,          R8w  d   K  RV
R,          9   d'   V! V P                  V
R,          WÇV4      G R
j  x€L
  KG  RV
R,          9   d(   ^ RIHp V! V \        V P                  V4      W®R7       K|  ^ RIHp V! V \        V P                  V4      W­R7       K£  	  V P!                  4        V P"                  P%                  V\'        WÞ4      4       \(        ;QJ d    R V	 4       F  '       g   K   RM	  RM! R V	 4       4      '       d   \        R4      hV P+                  \        V P                  V4      4       RWV&   EK  	  V# u up
i  EL] EL  \
         d   pTP,                  YV&    R
p?EK:  R
p?ii ; i5i)zCBind only server-observed native routes; unknown work stays paused.)ÚCounter©Úcheck_native_routec              3  ó,   "  € T F
  w  p q!x € K  	  R # 5ir<   rJ   )rí   rÌ   Ú_s   &  r>   rï   Ú;SessionAuthority.recover_native_sessions.<locals>.<genexpr>X  s   é € Ð7©h¡  a¨œ«hùs   ‚Úadmission_conflictF)r‹   Úpending_onlyrQ  rO  r   Nrê   rR   Úlocal_automation_v1©Úcheck_local_automation)r%   ©Úcheck_local_inputrÆ   c              3  ó8   "  € T F  qR ,          R8H  x € K  	  R# 5iré   rJ   ©rí   r£   s   & r>   rï   rè  t  s   é € ÐB¹T°c˜8•}¨	Ö1»Tùrñ   TÚunknown_executionÚreadyéÿÿÿÿ)Úcollectionsrã  rÃ  rå  r5  r   r   r_   r¾   r   r]   r\   r~  rí  Úgateway.session_operatorrï  r®   ra   rT   r!   rø   rn  rx  )r=   Úbindingsrã  rå  ÚcountsÚresultsrÌ   Úavailable_sourcer  rã   r£   ÚnativeÚtargetr#   r%   rí  rï  Úexcs   &&                r>   Úrecover_native_sessionsÚ(SessionAuthority.recover_native_sessionsS  s  é € å'Ý?Ü˜“>ˆÙÑ7©hÓ7Ó7ˆØˆÜ.6Ñ*ˆC 7ð*Ø•; !Ô#Ü+Ð,@ÓAÐAÜ.¨t¯w©wÀ3ÐUZÔ[�Ù)-ÓT© #Ð1AÀSÈÅ^Ñ1SŸ#˜#©�ÐTßÜ+¨KÓ8Ð8Ø×-Ñ-¬j¸¿¹È#Ó.NÓO�Ù&8¸¿¹ÀfÈRÅjÐQZÕF[Ð]cØ4Dó'O÷ !O‘�ã�CØ˜8•}¨Ô0Ù Ø'¨3¨y­>Ô9Ù0°·±¸cÀ)½nÈfÐhoÓp×pÒpØ.°#°iµ.Ô@ÝUÙ.Ø ¤*¨T¯_©_¸cÓ"BÀC÷Võ OÙ)Ø ¤*¨T¯_©_¸cÓ"BÀC÷Xñ  ð ×,Ñ,Ô.Ø—‘×(Ñ(¨¬k¸&Ó.HÔIß“3ÑB¹TÓB—3—3’3ÑB¹TÓB×BÒBÜ+Ð,?Ó@Ð@Ø—‘œz¨$¯/©/¸3Ó?Ô@Ø&�”ñ; /7ð@ ˆùò7 Uò!Oò qøô %ô *Ø"Ÿz™z�—�ûð*üss   ‚2I/µ4IÁ)H<Á>H<ÂA IÃ$IÃ%AIÄ-IÄ.B5IÇ&IÈ4IÈ5I/È<IÉIÉI,ÉI'É I/É'I,É,I/rÒ  Úqueue_while_restartingÚ_replay_guardÚ_kanban_cardc               ó    € V ^8„  d   QhRRRR/# )é   r    r   Úrequestr   rJ   )Úformats   "r>   Ú__annotate__ÚSessionAuthority.__annotate__|  s   € ÷ Eñ E )ð E°jñ ErA   c             ƒ  ó4  "  € V P                  WP                  R4       V P                  VP                  P                  ,          P                  ;_uu_4       GRj  x€L
  V P                  WP                  R4       ^ RIHp V! 4       ;_uu_ 4        V P                  WVVRJ VVR7      G Rj  x€L
 uuRRR4       uuRRR4      GRj  x€L
  #  Lr L" L	  + '       g   i     M; iRRR4      GRj  x€L 
  R#   + GRj  x€L 
 '       g   i     R# ; i5i)ay  ``queue_while_restarting``: the caller is an interactive client attached to a restart's
after-turn wait, which commits the input queued for the next owner. Machine callers (a2a,
kanban, hosted rooms) keep the plain ``runtime_draining`` refusal and retry against the next
owner with their own stable request id; none of them reads a released waiter as queued.

``_kanban_card`` is the Kanban dispatcher's trusted producer marker (``session_kanban.run_task``
only): committed as ``kanban_card_v1``, it lets a card attempt lost across an owner restart
settle interrupted (#134889 KB-8). Never a payload field: a client cannot supply it.úsession:submitN)r…  T)rÒ  r¨   r  r  )r¦   r¡   ra   r‹   r/   r†  r…  Ú_submit)r=   r    r  rÒ  r   r  r  r…  s   &&&$$$$ r>   ÚsubmitÚSessionAuthority.submit|  sÀ   é € ð 	�‰�uŸk™kÐ+;Ô<Ø—=‘= §¡×!7Ñ!7Õ8×F×F×FÓFà�N‰N˜5§+¡+Ð/?Ô@ÝCÙ—•Ø!Ÿ\™\¨%ÐK[Ø5KÈtÐ5SÐcpØ7Cð *ó E÷ E÷ !‘÷	 G×FÔFñ
Eñ G÷ !—ú÷	 G×F×F×F×FÔFüsŠ   ‚ADÁCÁDÁ 2C;ÂC	Â.CÂ/C	Â2
C;Â<DÃ	CÃ
DÃC	ÃDÃC%Ã C;Ã(DÃ3C6Ã4DÃ;D	ÄDÄ
D	ÄD	Ä	Dc          
   ƒ  	óF  a aaaaaa"  € S P                  SR 7       SP                  R8w  gP   R0\        SP                  4      u;8:  d
   0 Rm8:  d+   M M'\	        SP                  R,          \
        4      '       g   \        R4      h^ RIHp ^ RI	H
p ^ RIHp	 ^ RIHp
 ^ R	IHp V! SP                  4      pVVV 3R
 lpRSP                  R,          /VCV	! SP                  4      CV
! SP                  4      CV! SP                  4      CV! SP                  P#                  R4      VR7      CoVe   VSR&   S P$                  SP&                  P(                  ,          P*                  pVeO   VP,                  SP.                  8w  d4   RS P0                  RSP&                  P(                  RSP.                  /SR&   TVVVVVV 3R lp^ RIHp V! S V\7        S P8                  SP&                  R4      R\7        S P:                  SP&                  4      R7      G Rj  x€L
 #  L5i)r²   ÚqueuerP  ÚattachmentsÚinvalid_params)Úadmit_attachments)Úadmit_finite)Úadmit_surface)Úadmit_display)Úadmit_cli_turnc                 óŒ   <€ ^ RI Hp  V ! SP                  SP                  SP                  P
                  SP                  R7      # )rZ  )Úfind_session_admission)r¸  r‹   rU  )Úhermes_state_runtimer  r_   rŸ   r¡   r‹   rU  )r  r    r  r=   s    €€€r>   r´  Ú*SessionAuthority._submit.<locals>.admittedž  s:   ø€ õ DÙ)¨$¯'©'ÀÇÁØ5<·[±[×5KÑ5KÐX_×XjÑXjôlð lrA   )r´  NÚkanban_card_v1r]   r‹   r¸  Úlocal_operator_v1c                 ó   <€  \        SP                  SP                  SP                  SP                  P
                  SP                  SSP                  SSP                  S SR 7      R7	      #   \         d    SP                  SS4       h i ; i)r²   )r`   r¸  r‹   rU  rO  Úintentr  rÒ  )r   r_   r`   rŸ   r¡   r‹   rU  r  rµ   rÕ  Ú_release_refused_capture)rÒ  r  r    rO  r¨   r  r=   s   €€€€€€€r>   ÚadmitÚ'SessionAuthority._submit.<locals>.admit²  s‡   ø€ ðÜ*¨4¯7©7¸$¿*¹*ÐSX×S`ÑS`Ø6=·k±k×6LÑ6LÐY`×YkÑYkØ3:À7Ç>Á>ÐanØ<@×<PÑ<PÐQaÐnxÐ<PÓ<yô{ð {øô ô Ø×-Ñ-¨g°wÔ?Øðús   ƒA*A. Á.Br=  Tr½  >   rP  ÚfiniteÚsurfaceÚapi_textÚ
unattendedÚ
voice_turnr  ÚinterruptedÚturn_authorÚdisplay_kindÚclarify_batchÚtitle_previewÚvoice_contextÚmodel_override)r®   r  rd   rO  r—  r$   r   r†  r  Úgateway.session_finiter  Úgateway.session_surfacer  Úgateway.session_displayr  Úgateway.session_cli_turnr  r–   ra   r¡   r‹   r#   rž   rŸ   r]   rD  r>  r   r±  r»  )r=   r    r  rÒ  r¨   r  r  r  r  r  r  r  r"  r´  r#   r   r>  rO  s   fffddd$          @r>   r  ÚSessionAuthority._submit�  sÐ  þé € à×$Ñ$°
Ð$Ô;Ø�N‰N˜gÔ%¨f¨X¼¸W¿_¹_Ó9Mö .}ò R}÷ .}ô " '§/¡/°&Õ"9¼3×?Ò?Ü#Ð$4Ó5Ð5ÝCÝ7Ý9Ý9Ý;Ù˜gŸo™oÓ.ˆ÷	lð ˜7Ÿ?™?¨6Õ2ð _°fð _ÁÈgÏoÉoÓ@^ð _Ù" 7§?¡?Ó3ð_Ù7EÀgÇoÁoÓ7Vð_á& w§¡×':Ñ':¸=Ó'IÐT\Ô]ð_ˆð Ò#Ø(4ˆGÐ$Ñ%Ø—‘˜wŸ{™{×5Ñ5Õ6×=Ñ=ˆØÒ &§.¡.°E·M±MÔ"Að ˜dŸo™o¨|¸W¿[¹[×=SÑ=SØ §¡ð,/ˆGÐ'Ñ(÷	ó 	õ 	BÙ" 4¨´W¸T¿^¹^ÈWÏ[É[ÐZ^Ó5_ÐimÜ)0°×1HÑ1HÈ'Ï+É+Ó)VôX÷ Xð 	Xñ Xùs   ‰HH!ÈHÈH!c                ó|  aa€ VP                  R/ 4      P                  R. 4      oS'       g   R# ^ RIHp V! 4        ^ RIHpHo  V P                  P                  VV3R l4       V! V P                  4       R#   \         d8    ^ RI	pTP                  \        4      P                  RTP                  4        R# i ; i)aL  A refused submission's captured bytes have no owner unless another admission holds the
same bytes. They become durable retirement candidates (collected again by delete/prune if
this pass fails), then a holder-aware release runs. Its failure is logged and never replaces
the refusal the client must see (e.g. ``admission_conflict``).Úattachments_v1rÑ  N)rÎ  )Úcollect_retired_mediaÚretire_mediac                ó   <€ S! V R RS//4      # )r4  rÑ  rJ   )r¤   rÑ  r6  s   &€€r>   rß   Ú;SessionAuthority._release_refused_capture.<locals>.<lambda>Ë  s   ø€ ±¸TÐDTÐW^Ð`eÐVfÐCgÔ0hrA   z2Releasing refused attachments of request %s failed)r–   r†  rÎ  Úhermes_state_mediar5  r6  r_   Ú_execute_writerÕ  rN   rO   rB   rM   rU  )r=   r  rO  rÎ  r5  rN   rÑ  r6  s   &&&   @@r>   r  Ú)SessionAuthority._release_refused_capture¿  s“   ù€ ð
 —‘Ð,¨bÓ1×5Ñ5°g¸rÓBˆßÙÝDÙÔßJð	ZØ�G‰G×"Ñ"Õ#hÔiÙ! $§'¡'Ö*øÜô 	ZÛØ×ÑœhÓ'×1Ñ1ØDÀg×FXÑFX÷Zð	Zús   Á2A9 Á9>B;Â:B;c              ƒ  	ó  "  € V P                  WR 4       \        V P                  VR7      pVe   VR,          VP                  8w  d   \	        R4      hVR,          VP
                  8w  d   RVP                  9  d   \	        R4      hV P                  VP                  ,          pVP                  P                  ;_uu_ 4        VP                  P                  W44      pRRR4       V P                  V4      #   + '       g   i     L!; i5i)r
  ©rÜ   NrI  r   r¸  úsession:controlr~   )r¦   r   r_   r‹   r   rŸ   r�   ra   r*   r  r2   r–   rL  )r=   r    r¡   rÜ   r£   rÐ   s   &&&&  r>   ÚreceiptÚSessionAuthority.receiptÒ  sÈ   é € Ø�‰�uÐ#3Ô4Ü# D§G¡G¸,ÔGˆØŠ;˜#Ð1Õ2°c·n±nÔDÜ# KÓ0Ð0Øˆ~Õ %§-¡-Ô/Ð4EÈU×M_ÑM_Ô4_Ü#Ð$7Ó8Ð8Ø�}‰}˜SŸ^™^Õ,ˆØ×Ñ×#×#Ó#ð —-‘-×#Ñ# LÓ6ˆC÷ $ð �}‰}˜SÓ!Ð!÷	 $×#üs   ‚C D
ÃC7ÃD
Ã7D	ÄD
c           
   ƒ  	ó>  "  € V P                  WV4      G R j  x€L
 p^ RIHp \        P                  ! V! W P                  W#V4      4      4      G R j  x€L
 p^ RIHp \        P                  ! WpP                  V4      G R j  x€L
  V P                  V4      #  L~ LF L5i)N)Útrack_mutation©Úrelease_admission_media)r?  rD  rB  rG   ÚshieldÚ_commit_cancelr†  rD  r*  r_   rL  )r=   r    r¡   rÜ   ÚbeforerB  r£   rD  s   &&&&    r>   Úcancel_queuedÚSessionAuthority.cancel_queuedà  s‚   é € Ø—|‘| E°Ó=×=ˆÝBô —N’N¡>°$×8KÑ8KÈCÐ_eÓ8fÓ#gÓh×hˆõ 	JÜ×ÒÐ 7¿¹À,ÓO×OÐOØ�}‰}˜SÓ!Ð!ñ >ñ iñ 	Pùs3   ‚B˜B™9BÁBÁ.BÂBÂBÂBÂBc              ƒ  ó  "  €  V P                  WV4      G Rj  x€L
  R#  L  \         d   pTP                  R8w  d   h  Rp?MRp?ii ; i\        T P                  TR7      pTe   TR,          R8w  d   \        R4      hT# 5i)zåCancel a row the caller read ``queued``: None once cancelled, else the started row the
drain claimed between that read and the cancel commit (``stale_generation``), which the
caller must stop instead of refusing a live execution.Nr‘  r=  rê   ró   )rH  r   rx  r   r_   )r=   r    r¡   rÜ   rý  r£   s   &&&&  r>   Úcancel_or_claimedÚ"SessionAuthority.cancel_or_claimedì  s€   é € ð	Ø×$Ñ$ U°Ó>×>Ð>Ùñ ?øä ô 	Ø�z‰zÐ/Ô/Øô 0ûð	úô $ D§G¡G¸,ÔGˆØŠ;˜#˜h�-¨9Ô4Ü#Ð$6Ó7Ð7Øˆ
ùs5   ‚B„" ™ š" žB " ¢A	­A¿BÁA	Á	9Bc              ƒ  	ó  "  € VP                   R 8X  d   V P                  P                  V4        \        P                  ! \
        V P                  V P                  VR7      G Rj  x€L
 pTR,          TR,          3R8X  d$   Y P                  9   d   T P                  Y4       T# TR,          R 8w  d   T P                  P                  T4       T P                  T4       T#  Lz  \         d    T P                  P                  T4       h i ; i5i)rR   )r`   rÜ   Nrê   rH  )ÚterminalrL   )rê   ro   ÚaddrG   r*  r   r_   r`   r   rv  Ú_settle_cancelledrd  )r=   r¡   rÜ   rG  r£   s   &&&& r>   rF  ÚSessionAuthority._commit_cancelû  sç   é € Ø�=‰=˜HÔ$ð ×#Ñ#×'Ñ'¨Ô5ð	Ü×)Ò)Ô*>ÀÇÁÈtÏzÉzÐhtÔu×uˆCð ��M˜3˜y�>Ð*Ð.GÔGÈL×\sÑ\sÔLsØ×"Ñ" 3Ô5ð
 ˆ
ð �8�} Ô(Ø×'Ñ'×/Ñ/°Ô=Ø×!Ñ! #Ô&Øˆ
ñ vøÜ ô 	Ø×#Ñ#×+Ñ+¨LÔ9Øð	üs/   ‚-D°5C" Á%C Á&C" Á*A6DÃ C" Ã"(D
Ä
Dc                	ó  € V P                   VP                  ,          pVP                  P                  ;_uu_ 4        V P	                  V4       VP                  P
                  pR V P                  RV/VP                  n         VP                  P                  VP                  RRRRRVRV/4       WTP                  n         RRR4       V P                  P                  V4       V P                  P                  V4       V P                  P                  VR4      pVe(   VP                  4       '       g   VP                  R4       V P                  V4       R#   YTP                  n        i ; i  + '       g   i     Lµ; i)r\  rÜ   rP  r9   ÚcontentrH  N)ra   r‹   r*   r  rd  Ú	executionr`   rb  ro   rv  re   rb   r  rj  r™  rn  )r=   r¡   rÜ   rH  rÐ   rô   ry  s   &&&&   r>   rP  Ú"SessionAuthority._settle_cancelled  s5  € ð �}‰}˜SŸ^™^Õ,ˆØ×Ñ×#×#Ó#Ø×!Ñ! #Ô&Ø×'Ñ'×1Ñ1ˆGð ,=¸d¿j¹jÈ.ÐZfÐ*gˆD×ÑÔ'ð6Ø×!Ñ!×)Ñ)¨#¯.©.Ø˜B 	¨2¨~¸|ÈYÐX_ð;aô bð /6×!Ñ!Õ+÷ $ð 	×Ñ×'Ñ'¨Ô5Ø×Ñ×#Ñ# LÔ1Ø—‘×!Ñ! ,°Ó5ˆØÒ f§k¡k§m¢mØ×Ñ˜dÔ#ð 	�‰�sÖøð /6×!Ñ!Õ+ú÷ $×#ús$   ¼AE0Â.EÂ2E0ÅE-Å-E0Å0F 	c              ƒ  óž   "  € V P                  WR4       V P                  WV4      G Rj  x€L
  V P                  W#V4      G Rj  x€L
 #  L L5i)aY  Operator acknowledgement that an ``unknown`` turn will not finish; the paused FIFO behind
it resumes. Never requeues the input. A turn that finished in THIS owner but whose
settlement write failed (its exact result is still in ``pending_results``) commits that
result instead of discarding it: the answer was produced, only its receipt was lost.r>  N)r¦   r?  Úresolve_unknown_as_owner)r=   r    r¡   rÜ   rK  s   &&&&&r>   Úresolve_unknownÚ SessionAuthority.resolve_unknown'  sH   é € ð
 	�‰�uÐ#4Ô5Ø�l‰l˜5 |Ó4×4Ð4Ø×2Ñ2°3ÀjÓQ×QÐQñ 	5ÙQùs!   ‚(AªA	«AÁAÁAÁAÚnoticec             ƒ  ó   a aa
a"  € S P                   P                  V4      p\        S P                  VR7      pRoVeZ   VeV   VR,          R8X  dH   ^ RIHp \        S P                  VR7      pT! Y…R,          P                  R4      ;'       g    RR	V4      o^ R
IHo
 ^ RIHp	 V	! S \        \        S P                  S P                  VVSV
VVV 3R lR7      \        S P                  WSV4      R7      G Rj  x€L
 #  L5i)a  ``resolve_unknown`` past authorization: also the owner's own call when the last viewer
closed a session whose turn recovered ``unknown`` (gateway/session_viewer_close), or when an
unattended automation turn settles itself (``notice``: its transcript copy, GW-10).r=  Nrê   rë   )Úprepare_resultÚresultÚfinal_responser9   Ú	completed)Úclose_discarded_turnr=  c                óp   <€ S! SP                   YSe   VR,          SP                  8X  d   R 4      # S4      # )NrJ  )r_   r`   )r¤   Úlostr`  rZ  r  r=   s   &&€€€€r>   rß   Ú;SessionAuthority.resolve_unknown_as_owner.<locals>.<lambda>E  s:   ø€ Ñ/CÀDÇGÁGÈTØÒ$¨¨mÕ)<ÀÇ
Á
Ô)Jð Z^ô 0YØQWô0YrA   )r`   rÜ   rK  Ú	_capturedÚ_terminal_writer?  )rf   r–   r   r_   Úgateway.session_resultsr\  r`  rD  r>  r   r   r`   Ú_resolved_unknown)r=   r¡   rÜ   rK  rZ  ÚcapturedrG  r\  r£   r>  r`  r  s   f&&&d     @@r>   rW  Ú)SessionAuthority.resolve_unknown_as_owner0  sè   ûé € ð ×'Ñ'×+Ñ+¨LÓ9ˆÜ& t§w¡w¸\ÔJˆØˆØÒ FÒ$6¸6À(Õ;KÈyÔ;XÝ>Ü'¨¯©¸lÔKˆCÙ% c°HÕ+=×+AÑ+AÐBRÓ+S×+YÐ+YÐWYÐ[fÐhpÓqˆHõ 	AÝAÙ" 4¬Ü)¨4¯7©7¸$¿*¹*ÐS_Ø!¨X÷Yô*Zô ˜×/Ñ/°ÀHÈhÓWôY÷ Yð 	Yñ Yùs   †BC>ÂA(C>Ã7C<Ã8C>c              ƒ  	ó  "  € V P                   P                  VR 4       Ve¹   VR,          V P                  8X  d¡   ^ RIHp V P
                  VP                  ,          pVP                  P                  ;_uu_ 4        VP                  P                  P                  R4      V8w  d-   T! YYTVR,          P                  R4      ;'       g    RV4       R R R 4       ^ RIHp \        P                  ! W€P                  V4      G R j  x€L
  ^ RIHp	 T	! YVR J;'       d    VR,          V P                  8H  R	7      G R j  x€L
  V P%                  V4       V P'                  V4       V P)                  V4      #   + '       g   i     Lª; i L‚ LL5i)
NrJ  )Ú_publish_completionrÜ   r]  r^  r9   rC  )Údeliver_resolved)Úowed)rf   r  r`   Ú#gateway.session_settlement_recoveryrk  ra   r‹   r*   r  rT  r–   r†  rD  rG   r*  r_   Úgateway.session_ingressrl  rd  rn  rL  )
r=   r¡   rÜ   r  rh  r£   rk  rÐ   rD  rl  s
   &&&&&&    r>   rg  Ú"SessionAuthority._resolved_unknownI  sB  é € Ø×Ñ× Ñ  ¨tÔ4ØÒ C¨Õ$6¸$¿*¹*Ô$Dõ PØ—=‘= §¡Õ0ˆDØ×"Ñ"×'×'Ó'Ø×$Ñ$×.Ñ.×2Ñ2°>ÓBÀlÔRÙ'¨°C¸cØ(0°Õ(:×(>Ñ(>Ð?OÓ(P×(VÐ(VÐTVÐX`ôb÷ (õ 	JÜ×ÒÐ 7¿¹À,ÓO×OÐOõ 	=Ù˜t¸ÈÐ8L×8qÐ8qÐQTÐUbÕQcÐgk×gqÑgqÑQqÔr×rÐrØ×Ñ˜cÔ"Ø�‰�sÔØ�}‰}˜SÓ!Ð!÷ (×'úñ 	Pñ 	sùsI   ‚A:FÁ<AE5ÃE5Ã2FÄFÄFÄFÄ=F
Ä>7FÅ5F	Æ 	FÆ
Fc              ƒ  	óX  "  € V P                  WR 4       V P                  V4      pVP                  V8w  d   \        R4      hV P                  VP
                  ,          RreVP                  R8X  d²   VP                  P                  ;_uu_ 4        V P                  P                  VP
                  R4      w  rvWs8w  dA   V P                  V4      pV P                  V4      '       g   W0P                  VP
                  &   Ve   W0P                  VP
                  &   RRR4       ^ RIHp ^ RIHp	 Ve	   V! V4       \&        P)                  VP
                  V P+                  V4      34       F  p
V	! VP,                  V
RR7       K  	  V P                  V4      #   + '       g   i     L…; i5i)	r>  r‘  Nrô   ©Úrequest_hard_interrupt)Úinterrupt_for_sessionÚ	user_stop)rË   Úparent_session_idrx  ©NN)r¦   rû   r&  r   ra   r‹   r%  r*   r  rn   r–   rØ   Ú_runs_own_agentrh   rm   Úagent.interrupt_compatrs  r  rt  r(   rq  r¾   r%   )r=   r    r¡   rK  r,  rÐ   rØ   Úadopted_generationrs  rt  Úparents   &&&&       r>   Ú	interruptÚSessionAuthority.interrupta  sM  é € Ø�‰�uÐ#4Ô5Ø—‘˜cÓ"ˆØ×&Ñ&¨*Ô4Ü#Ð$6Ó7Ð7Ø—m‘m C§N¡NÕ3°TˆeØ×!Ñ! YÔ.ð ×"Ñ"×'×'Ó'Ø,0¯L©L×,<Ñ,<¸S¿^¹^È\Ó,ZÑ)Ð"Ø%Ô3Ø ŸJ™J s›O�EØ×/Ñ/°×4Ò4ð >H×*Ñ*¨3¯>©>Ñ:ØÒ$Ø;E×(Ñ(¨¯©Ñ8÷ (õ 	BÝ@ØÒÙ" 5Ô)Ü—m‘m S§^¡^°T×5IÑ5IÈ#Ó5NÐ$OÖPˆFÙ!¨d¯j©jÈFÐ[f×gñ Qà�|‰|˜CÓ Ð ÷% (×'üs&   ‚BF*ÂAFÃ&4FÄA=F*ÆF'	Æ"F*c                ó^  € V P                   p\        VRR4      pVe   V! V4      '       g   R# ^ RIpVP                  4       pWPP                  P                  VR4      ,
          R8¼  d?   WPP                  V&   VP                  V4       V! V4      '       d   VP                  V4       V! V4      # )a
  The route's running slot is held by a turn this FIFO did not claim (the drain is serial:
its own previous turn released the slot before this claim). Leaked and reaped slots are
evicted first, so they never block the FIFO; the reaped check reads state.db at most 1/s.Ú_is_session_runningNFç        g      ð?)r\   rÕ   ÚtimeÚ	monotonicrr   r–   Ú_hm_evict_idle_stale_agentÚ_hm_evict_reaped_agent)r=   r%   r\   rô   r�  Únows   &&    r>   Ú_classic_turn_holdsÚ$SessionAuthority._classic_turn_holds~  s–   € ð —‘ˆÜ˜&Ð"7¸Ó>ˆØŠ?¡'¨%§.¢.ÙÛØ�n‰nÓˆØ×'Ñ'×+Ñ+¨E°3Ó7Õ7¸3Ô>Ø,/×"Ñ" 5Ñ)Ø×-Ñ-¨eÔ4Ù�u�~Š~Ø×-Ñ-¨eÔ4Ù�u‹~ÐrA   c                ó  € ^ RI Hp V P                  VP                  ,          pVP                  '       d   R# \        V P                  RR4      ;'       g    / pVP                  VP                  4      pVRJ;'       d    WRJ# )z¦The route's running slot holds a real agent (not the claim's pending sentinel), so the
Stop above reached the turn's own agent, not a cached one it may still replace.)Ú_AGENT_PENDING_SENTINELFÚ_running_agentsN)	Úgateway.runr‰  ra   r‹   r6   rÕ   r\   r–   r%   )r=   r¡   r‰  rÐ   rô   rØ   s   &&    r>   rx  Ú SessionAuthority._runs_own_agent�  sh   € õ 	8Ø�}‰}˜SŸ^™^Õ,ˆØ�?�?ˆ?ÙÜ˜$Ÿ+™+Ð'8¸$Ó?×EÐEÀ2ˆØ—‘˜DŸJ™JÓ'ˆØ˜DÐ ×IÐI UÐ%IÐIrA   c                óš  € V P                   P                  VP                  R4      w  rEWB8w  d+   V P                  V4      '       d   V P	                  V4      MRp^ RIHp Vf   Ve   V! W4      '       g   VR3# V P                  P                  VP                  R. 34      w  rxY'V8X  d   . VOVNMV.3V P                  VP                  &   R# )a¯  The agent a steer for this running generation reaches; the caller holds the session's
event_stream.lock after check_approval_generation. Before the turn adopts its agent the
resident one is the previous turn's cached agent, which this turn may replace, so *text* is
latched for the agent this generation adopts (adopt_agent, under the same lock):
``(None, True)``. A claim with no steer seam (cron, managed worker) latches nothing.N)Úadopts_owner_agentFrw  )NT)rn   r–   r‹   rx  rØ   Úgateway.session_busy_controlsrŽ  rj   )	r=   r¡   rK  rP  rz  rØ   rŽ  ÚlatchedÚtextss	   &&&&     r>   Ústeer_agentÚSessionAuthority.steer_agentš  s¾   € ð %)§L¡L×$4Ñ$4°S·^±^À\Ó$RÑ!ÐØÔ+Ø'+×';Ñ';¸C×'@Ò'@�D—J‘J˜s”OÀdˆEÝDØÒ ¢Ñ4FÀt×4QÒ4QØ˜%�<ÐØ×,Ñ,×0Ñ0°·±À$ÈÀÓL‰ˆØ/9ÐXbÔMb¸>¸U¸>ÀD¹>ÐimÐhnÐ.oˆ×Ñ˜CŸN™NÑ+ØÐrA   c                ój  € V P                   P                  V4      pVe   VP                  P                  M\        P
                  ! 4       ;_uu_ 4        W#3V P                  V&   \        VRR4      pV P                  P                  W4      V8w  d   Ve   V! 4        V P                  P                  V4      V8X  d   T P                  V ^ RIHp V! V4       V P                  P                  VR4      w  rxWr8X  d   TMR F  p	VP                  V	4       K  	  RRR4       R#   + '       g   i     R# ; i)a”  The turn installs its agent for the running claim; a Stop latched while there
was no agent to deliver it to fires now, never against a later generation. A Stop
delivered to the cached agent for an earlier generation may have landed after that
turn's finalizer cleared it, so it is dropped rather than cancelling this turn. A managed
worker is a fresh process per turn and carries no earlier flag to drop.NÚclear_interruptrr  rJ   )NrJ   )ra   r–   r*   r  Ú
contextlibÚnullcontextrn   rÕ   rm   r  rh   ry  rs  rj   Ústeer)
r=   r‹   rK  rØ   rÐ   Úclearrs  r�  ÚsteersrP  s
   &&&&      r>   Úadopt_agentÚSessionAuthority.adopt_agentª  sþ   € ð �}‰}× Ñ  Ó,ˆà'+Ò'7ˆT×Ñ×#Ò#¼Z×=SÒ=SÓ=U×UÑUØ(2Ð':ˆD�L‰L˜Ñ$Ü˜EÐ#4°dÓ;ˆEØ×#Ñ#×'Ñ'¨
Ó?À:ÔMÐRWÒRcÙ”Ø×!Ñ!×%Ñ% jÓ1°ZÔ?Ø×&Ñ& zÐ2ÝIÙ& uÔ-Ø"×1Ñ1×5Ñ5°jÀ*ÓM‰OˆGØ")Ô"7™¸RÒ?�Ø—‘˜DÖ!ñ @÷ V×U×UÒUús   ÁCD!Ä!D2	c                	óª   € V P                  \        V P                  V4      4      pVP                  V8w  g   VP                  R 8w  d   \        R4      hR# )rô   r‘  N)rû   r   r]   r&  r%  r   )r=   r‹   rK  r,  s   &&& r>   Úcheck_approval_generationÚ*SessionAuthority.check_approval_generation¿  sI   € Ø—‘œj¨¯©¸*ÓEÓFˆØ×&Ñ&¨*Ô4¸×8NÑ8NÐR[Ô8[Ü#Ð$6Ó7Ð7ñ 9\rA   c                óz  € V P                   V,          pVP                  P                  ;_uu_ 4        V P                  P	                  V4      V8w  d    RRR4       R# TP                  P                  WVR7      p^ RIHp V! WW44      p\        T;'       g    T4      uuRRR4       #   + '       g   i     R# ; i)z9Worker callbacks never outlive their exact running claim.NFr_  )Úpublish_api_event)	ra   r*   r  rs   r–   rb  Úgateway.session_api_turnr¡  r-   )	r=   r‹   rK  r`  rO  rÐ   Ú	deliveredr¡  Úobserveds	   &&&&&    r>   Úpublish_executionÚ"SessionAuthority.publish_executionÄ  s’   € à�}‰}˜ZÕ(ˆØ×Ñ×#×#Ó#ð �~‰~×!Ñ! *Ó-°Ô;Ø÷ $Ñ#ð ×)Ñ)×1Ñ1°*ÐR\Ð1Ó]ˆIÝBÙ(¨¸:ÓOˆHÜ˜	×-Ð- XÓ.÷ $×#×#Ó#ús   ²"B)ÁA B)Â)B:	Ú	timeout_sc          
     	ó   € V P                   V,          pVP                  P                  ;_uu_ 4        V P                  W4       VP                  P                  WW$VR 7       RRR4       R#   + '       g   i     R# ; i©)r§  N)ra   r*   r  rž  r,   rÃ   )r=   r‹   rK  r%   Údatar§  rÐ   s   &&&&&$ r>   Úregister_approvalÚ"SessionAuthority.register_approvalÒ  sY   € Ø�}‰}˜ZÕ(ˆØ×Ñ×#×#Ó#Ø×*Ñ*¨:ÔBØ�M‰M×"Ñ" :°jÐR[Ð"Ô\÷ $×#×#Ò#ús   ²0A,Á,A=	c          	     	óþ   € V P                   V,          pVP                  P                  ;_uu_ 4        V P                  W4       VP                  P                  WW4R 7       RRR4       R#   + '       g   i     R# ; ir©  )ra   r*   r  rž  r,   Úregister_clarify)r=   r‹   rK  rW   r§  rÐ   s   &&&&$ r>   r®  Ú!SessionAuthority.register_clarifyØ  sV   € Ø�}‰}˜ZÕ(ˆØ×Ñ×#×#Ó#Ø×*Ñ*¨:ÔBØ�M‰M×*Ñ*¨:À5Ð*Ô^÷ $×#×#Ò#ús   ²/A+Á+A<	ÚkindÚapprovalc          
   ƒ  	ó’  "  € R RRR/P                  V4      pVf   \        R4      hV P                  WV4       V P                  VP                  ,          pVP
                  P                  ;_uu_ 4        WP                  P                  4       9  d   \        R4      h\        V4      \        Jd   \        R4      hV P                  VP                  V4       \        V\        4      '       d	   V'       g   \        R4      hVP                  P                  VP                  W4WVR7      uuRRR4       #   + '       g   i     R# ; i5i)	r±  zsession:approveÚclarifyzsession:respondNr  r~   r‘  )r°  )r–   r   r¦   ra   r‹   r*   r  r)   rÏ   ÚtypeÚintrž  r—  r$   r,   Úrespond)	r=   r    r¡   rK  Ú	prompt_idÚresponser°  r¢   rÐ   s	   &&&&&&$  r>   r¶  ÚSessionAuthority.respondÞ  sú   é € Ø Ð"3°YÐ@QÐR×VÑVÐW[Ó\ˆ
ØÒÜ#Ð$4Ó5Ð5Ø�‰�u :Ô.Ø�}‰}˜SŸ^™^Õ,ˆØ×Ñ×#×#Ó#Ø×,Ñ,×3Ñ3Ó5Ô5Ü'Ð(;Ó<Ð<Ü�JÓ¤sÓ*Ü'Ð(:Ó;Ð;Ø×*Ñ*¨3¯>©>¸:ÔFÜ˜i¬×-Ò-·YÜ'Ð(8Ó9Ð9Ø—=‘=×(Ñ(¨¯©¸ÐPXÐ(Ód÷ $×#×#Ó#üs%   ‚A2EÁ4BD3Ã62D3Ä(EÄ3E	Ä>	Ec              ƒ  	óÊ
  "  € VP                   ;_uu_4       GR j  x€L
  VP                  ;_uu_4       GR j  x€L
  \        V P                  VP                  R7      p\
        ;QJ d    R V 4       F  '       g   K   RM	  RM! R V 4       4      '       d   \        R4      h\        R V 4       R 4      p^ RIH	p VP                  P                  VP                  8X  d/   ^ RIHp ^ R	IHp V! WV4      G R j  x€L
  V! WV4      G R j  x€L
  VEe¤   VP                  P                  VP                  8X  Ed~   ^ R
IHp V! WP                  4       VR,          P'                  R4      '       dÉ   ^ RIHp	 \,        P.                  ! W�W4      G R j  x€L
 '       gF   \1        V RR 4      p
V
f   \        R4      h\,        P.                  ! V
P2                  W4      G R j  x€L
  \5        V P                  VR,          R7      pVe   VR,          R8w  d)   RV3uuR R R 4      GR j  x€L
  uuR R R 4      GR j  x€L
  # RVR,          9   d   ^ RIHp V! WV4       M^ RIHp V! WV4       ^ RIH p V! WV4      G R j  x€L
  ^ RIH!p ^ RI"H#p ^ RI$H%p V! V4      '       g   V! V \M        WðV4      4      G R j  x€L
  VeÎ   RVR,          9   dÀ   ^ RI'H(p V! V PR                  VR,          V PU                  V4      VP                  V PR                  PW                  VP                  4      4      G R j  x€L
  \5        V P                  VR,          R7      pVe   VR,          R8w  d)   RV3uuR R R 4      GR j  x€L
  uuR R R 4      GR j  x€L
  # Ve<   VP                  P                  VPX                  8X  d   ^ RI-H.p V! WVR,          4       VeJ   V P_                  VP`                  4      '       d)   RV3uuR R R 4      GR j  x€L
  uuR R R 4      GR j  x€L
  # T Pc                  4        ^ RI"H#p RVn2        T! T \M        \f        V P                  V Ph                  VP                  V Pk                  4       Ve
   VR,          MR R 7      \M        V Pl                  W4      R!7      G R j  x€L
 pVf   VPd                  '       d   RMTV3uuR R R 4      GR j  x€L
  uuR R R 4      GR j  x€L
  #  ELÉ EL¯ ELñ ELã EL` EL ELÖ ELÇ EL… ELM EL× EL• EL† EL EL  Lq LF L6  + GR j  x€L 
 '       g   i     M; iR R R 4      GR j  x€L 
  R #   + GR j  x€L 
 '       g   i     R # ; i5i)"NrÛ   c              3  ó8   "  € T F  qR ,          R8H  x € K  	  R# 5iré   rJ   rñ  s   & r>   rï   Ú/SessionAuthority._claim_next.<locals>.<genexpr>ò  s   é € ÐA¹°#�x•= IÖ-»ùrñ   TFrò  c              3  óD   "  € T F  qR ,          R8X  g   K  Vx € K  	  R# 5i)rê   rR   NrJ   rñ  s   & r>   rï   r¼  ô  s   é € ÐN© #¸µMÀXÑ4MŸ#š#«ùs   ‚ –
 r‡   )Úapply_deferred_pick)Úapply_pending_reasoningrƒ   rU  zhosted:)Úcheck_remote_hosted_admissionÚhosted_room_servicer~   rÜ   r=  rê   rR   rë  rO  rì  rî  )Úrefreeze_editor_mcp)Úreopen_local_sessionr=  )Únoted_completionrQ  rä  )Úcheck_api_turnÚclassic_busy)r`   r‹   Ú_guardÚheadr?  )7r0   r/   r   r_   r‹   rø   r   r  r›   rˆ   r#   rœ   r�   r+  r¾  Ú gateway.session_setting_commandsr¿  r˜   r„   r—   Ú gateway.session_hosted_transportrÀ  rG   r*  rÕ   Úcheck_admissionr   r~  rí  rö  rï  rB  rÂ  rÃ  rD  r>  Ú gateway.session_completion_notesrÄ  r   rÃ  rå  r\   r¾   Ú_adapter_for_sourceÚ
API_SERVERr¢  rÅ  r†  r%   r®   r1   r   r`   rµ   Ú_stamp_claim)r=   r¡   rÐ   rù   Úfirstrˆ   r¾  r¿  r„   rÀ  ÚservicerÚ  rí  rï  rÂ  rÃ  r>  rÄ  rå  rÅ  r£   s   &&&                  r>   Ú_claim_nextÚSessionAuthority._claim_nextî  s  é € à—?—?—?“? D×$6×$6×$6Ó$6Ü-¨d¯g©gÀ#Ç.Á.ÔQˆGß‹sÑA¹ÓA�s�sŠsÑA¹ÓA×AÒAÜ'Ð(;Ó<Ð<ÜÑN©ÓNÐPTÓUˆEÝ/Ø�{‰{×#Ñ# x§~¡~Ô5õ NÝTÙ-¨d¸Ó>×>Ð>Ù)¨$°TÓ:×:Ð:ØÓ  T§[¡[×%9Ñ%9¸X¿^¹^Õ%KÝPÙ% d¯N©NÔ;Ø˜Õ&×1Ñ1°)×<Ò<Ý^Ü!(×!2Ò!2Ð3PÐX[Ó!c×cÖcÜ")¨$Ð0EÀtÓ"L˜Ø"š?Ü"3Ð4GÓ"HÐHÜ%×/Ò/°×0GÑ0GÈÓT×TÐTô 4°D·G±GÈ%ÐP^ÕJ_Ô`�GØ’¨'°(Õ*;¸xÔ*GØ$ e˜|÷7 %7×$6Ñ$6—?—?’?ð8 )¨E°)Õ,<Ô<ÝQÙ*¨4°eÕ<åJÙ% d°Ô7õ JÙ)¨$°TÓ:×:Ð:õ PÝIÝMÙ'¨×.Ò.Ù'¨¬gÐ6JÐRUÓ.VÓW×WÐWØÒ Ð%5¸¸yÕ9IÔ%IÝGÙ(¨¯©°e¸IÕ6FÈ×H\ÑH\Ð]`ÓHaÐcg×cnÑcnØ#'§;¡;×#BÑ#BÀ4Ç;Á;Ó#OóQ÷ Qð Qô 0°·±ÀeÈNÕF[Ô\�Ø’? g¨hÕ&7¸8Ô&CØ  %˜<÷m %7×$6Ñ$6—?—?’?ðn Ò  T§[¡[×%9Ñ%9¸X×=PÑ=PÔ%PÝCÙ˜t¨%°	Õ*:Ô;ØÒ  T×%=Ñ%=¸d¿j¹j×%IÒ%Ið & uÐ,÷} %7×$6Ñ$6—?—?’?ð~ ×(Ñ(Ô*ÝEØˆDŒKñ & d¬GÔ4GÈÏÉÐX\×XbÑXbØ?B¿~¹~ÐVZ×VjÑVjÓVlØRWÒRc¸¸~Ö9NÐimô-oô ,3°4×3DÑ3DÀcÓ+PôR÷ RˆCð !š[¨T¯[¯[¨[‘E¸cÀEÐI÷U %7×$6Ñ$6—?—?•?Ò$6ò ?Ú:ò dò Uò- %7’?òJ ;ò XòQòa %7’?Ò$6’?ñHRñI %7‘?×$6×$6×$6Ð$6ú—?—?—?—?—?”?üs  ‚U#›S$œU#ŸU¸S'¹U¼>T	Á=T	ÂA!T	Ã9S*Ã:T	Ä
S-ÄBT	ÆS0Æ	T	ÆA T	ÇS3Ç7T	ÈUÈ S6
È!UÈ%U#È2S9È3U#È8?T	É7S<É8#T	ÊT	Ê2S?Ê3A8T	Ì+TÌ,7T	Í#UÍ0T
Í1UÍ5U#ÎTÎU#ÎA#T	Ï,T	Ï/UÏ<T
Ï=UÐU#ÐTÐU#ÐBT	ÒTÒ T	Ò:T	Ò?UÓT
ÓUÓU#ÓTÓU#Ó'UÓ*T	Ó-T	Ó0T	Ó3T	Ó6UÓ9U#Ó<T	Ó?T	ÔT	ÔUÔU#ÔUÔU#ÔT	ÔUÔU#ÔT0ÔT Ô
T0Ô)T0Ô+UÔ3U#Ô>UÔ?U#ÕU 	ÕUÕ
U 	ÕU 	Õ	U#c           
     óê  € V'       d×   TP                   P                  ;_uu_ 4        RV P                  RVR,          RVR,          /VP                   n        VR,          V P                  VP
                  &   ^ RIHp VP                   P                  VP
                  T! VP                  R4      ;'       g    / 4      RR7       V P                  V4       R	R	R	4       V# V#   + '       g   i     T# ; i)
z¢The claim's execution stamp, in the same tracked task as its commit: no observer (or
retirement's join) ever sees a committed claim that no execution stamp names.r\  r&  rK  rÜ   )Úadmission_displayrO  zmessage.startr_  N)r*   r  r`   rT  rs   r‹   r~  rÕ  rb  r–   rd  )r=   r¡   rÐ   r£   rÕ  s   &&&& r>   rÏ  ÚSessionAuthority._stamp_claim<  sÎ   € ÷ Ø×"Ñ"×'×'Ó'à% t§z¡zÐ3IÈ3È|ÕK\Ø" C¨Õ$7ð/9�×!Ñ!Ô+ð 25°\Õ1B�—‘˜sŸ~™~Ñ.ÝHØ×!Ñ!×)Ñ)¨#¯.©.Ñ:KÈCÏGÉGÐT]ÓL^×LdÐLdÐbdÓ:eØ5Dð *ô Fà×%Ñ% cÔ*÷ (ð ˆ
ˆsˆ
÷ (Ö'ð ˆ
ús   §B.C!Ã!C2	c                óÜ   € V P                   P                  '       g<   V P                  '       g*   V P                  P	                  VP
                  4      VJd   V P                  VR4       R# R# )zªA drain about to wait (storage retry, classic slot) exits instead when the runtime drains,
the profile retires or the live entry was replaced; committed rows stay queued.rª   TF)r\   r¬   rp   ra   r–   r‹   rz  )r=   r¡   rÐ   s   &&&r>   Ú_drain_stoppingÚ SessionAuthority._drain_stoppingK  sL   € ð �;‰;× × Ð  D§M§M M°T·]±]×5FÑ5FÀsÇ~Á~Ó5VÐ^bÓ5bØ�K‰K˜Ð/Ô0ÙÙrA   c              ƒ  ó¤  "  € Rp  V P                  W4      G Rj  x€L
 w  rERpTR8w  d   YE3# T P                  Y4      '       d   R# \&        P(                  ! \"        4      G Rj  x€L
  Kf   LO  \         d™   pTP                  R8X  d$   ^ RIHp T! Y4      G Rj  x€L 
 '       d    Rp?K§  ^ RIpTP                  \        4      P                  RTP                  TP                  4       T P                  YP                  4        Rp?R# Rp?i\        \        P                  3 d¢   pT P                  Y4      '       d    Rp?R# \        \!        T^,          \"        4      \$        4      p^ RIpTP                  \        4      P                  RTP                  Yc4       \&        P(                  ! T4      G Rj  x€L 
   Rp?EKÀ  Rp?ii ; i ELi5i)z¶The drain's next ``(row, first)``, waiting out transient storage and a classic turn on the
route; None when the drain must exit (paused, or stopping with committed rows left queued).r€  Nrò  ©Úsettle_unattended_unknownzSession %s paused: %sz<Session %s claim deferred by storage (%r); retrying in %.1fsrÆ  )rÒ  r   rx  Ú"gateway.session_unattended_unknownrÜ  rN   rO   rB   Úwarningr‹   rz  ÚOSErrorÚsqlite3ÚOperationalErrorrØ  ÚminÚmaxÚ_CLAIM_RETRY_MIN_SÚ_CLAIM_RETRY_MAX_SrG   Úsleep)	r=   r¡   rÐ   Úbackoffr£   rÐ  rý  rÜ  rN   s	   &&&      r>   Ú_claim_with_retryÚ"SessionAuthority._claim_with_retryS  sh  é € ð ˆØðØ#'×#3Ñ#3°CÓ#>×>‘
�ð2 ˆGØ�nÔ$Ø�zÐ!Ø×#Ñ# C×.Ò.ÙÜ—-’-Ô 2Ó3×3Ò3ñ= ?øÜ$ô 
Ø—:‘:Ð!4Ô4õ ]Ù6°tÓA×A×AÝ ÛØ×!Ñ!¤(Ó+×3Ñ3Ð4KÈSÏ^É^Ð]`×]gÑ]gÔhØ—‘˜C§¡Ô,ÝûÜœW×5Ñ5Ð6ô ð
 ×'Ñ'¨×2Ò2ÝÜœc '¨A¥+Ô/AÓBÔDVÓW�ÛØ×!Ñ!¤(Ó+×3Ñ3ØRÐTW×TbÑTbÐdgôrä—m’m GÓ,×,Ñ,Þûðúò$ 4ùs”   ‚G‡A- ›A+œA- ¢AGÁ$GÁ%GÁ+A- Á-G
Á8"DÂBÂ
DÂ&GÂ,ADÄGÄG
Ä(G
Ä)GÅ GÅA2GÆ8F;Æ9GÆ>GÇG
Ç
Gc           	   ƒ  ót  "  € ^ RI Hp ^ RIHp \	        VP
                  RR4      pVeO   VP                  P                  4       '       g/   ^ RIH	p \        P                  ! WrP
                  4      G Rj  x€L
    V! WV4      G Rj  x€L
 R3VP                  P                  ;_uu_ 4        V P                  P                  VP                   R4       RRR4       #  Lf LU  + '       g   i     # ; i  TP                  P                  ;_uu_ 4        T P                  P                  TP                   R4       RRR4       i   + '       g   i     i ; i; i  T Ed    TP                  P                  ;_uu_ 4        / TP                  n        RRR4       M  + '       g   i     M; iT P$                  P                  TP                   R4       T P&                  P                  TP                   R4       T P(                  P                  TP                   R4       T P*                  P                  TP                   R4       ^ RIHp T! Y4      G Rj  x€L 
 '       d   Ru # T P1                  TR4       h \2         d6    ^ RIp	T	P7                  \8        4      P;                  R	TR
,          4       Ru # i ; i5i)zíRun the claimed admission: ``(response, outcome)``. The executing stamp clears the moment
execution returns; a lost managed worker settles an automation turn (``settled_unknown``) or pauses
the FIFO and re-raises ManagedExecutionUnknown.)Úexecute_finite_admission©ÚManagedExecutionUnknownÚ_background_review_runN)Ú&cancel_background_review_for_live_turnr_  rÛ  rò  zAdmitted turn %s failedrÜ   )NÚsettled_unknown)zThe admitted turn failed.Úfailed)r.  rë  Úgateway.session_managed_workerrí  rÕ   r8   Úrequest_doneÚis_setÚagent.background_reviewrï  rG   r*  r*   r  rs   r  r‹   rT  rh   ri   rj   rn   rÝ  rÜ  rz  rÕ  rN   rO   rB   rM   )
r=   r¡   rÐ   r£   rë  rí  r8   rï  rÜ  rN   s
   &&&&      r>   Ú_execute_claimedÚ!SessionAuthority._execute_claimedy  sô  é € õ 	DÝJÜ˜Ÿ™Ð&>ÀÓEˆØÒ f×&9Ñ&9×&@Ñ&@×&BÒ&Bõ WÜ×#Ò#Ð$JÏKÉKÓX×XÐXð	9ð=Ù5°dÀÓE×EÀ{ÐRà×&Ñ&×+×+Ó+Ø—N‘N×&Ñ& s§~¡~°tÔ<÷ ,Ð+ñ Yñ Fç+×+û�T×&Ñ&×+×+Ó+Ø—N‘N×&Ñ& s§~¡~°tÔ<÷ ,×+×+Ð+þà&õ 	Ø×"Ñ"×'×'Ó'Ø.0�×!Ñ!Ô+÷ (×'×'Ð'úà×Ñ×"Ñ" 3§>¡>°4Ô8Ø×$Ñ$×(Ñ(¨¯©¸Ô>Ø×Ñ×#Ñ# C§N¡N°DÔ9Ø�L‰L×Ñ˜SŸ^™^¨TÔ2õ UÙ.¨tÓ9×9×9Ø.Ò.Ø�K‰K˜Ð0Ô1ØÜô 	9ÛØ×ÑœhÓ'×1Ñ1Ð2KÈSÐQ_ÕM`ÔaØ8Ò8ð	9üsÙ   ‚AJ8Á
)J8Á3CÁ4J8Á:C1 ÂCÂC1 ÂE Â*'CÃE ÃJ8ÃC1 ÃC.Ã)E Ã-J8Ã.E Ã1EÄ'E 	Ä7	EÅ EÅEÅE Å&J5Å<FÆ	J5ÆF'Æ"B1J5ÉIÉ
J5ÉJ5É!J8É#J5É?3J5Ê2J8Ê4J5Ê5J8c              ƒ  	ó´  "  € ^ RI Hp V P                  VP                  ,          p V P	                  W4      G Rj  x€L
 pVf   R# Vw  rVVRJ d   K,  Vf   Ve   V P                  VR4       R# RVn        Vf|   ^ RIHp ^ RI	H
p V! V \        WpVP                  4      4      G Rj  x€L
  VP                  '       d   K˜  ^ RIHp	 V	! WP                  4      G Rj  x€L
  VP                  '       d   KÌ  R# VR,          p
 V P                  WV4      G Rj  x€L
 w  r¼VR	8X  d*   V P                   P#                  VP$                  R4       EK$   Rp/ p ^ R
IHp T P.                  P1                  T
4      p T! YYY¼TT4      G Rj  x€L
  RT9   d.   TR,          TR,          r¾T P.                  P#                  T
R4       T P                  P1                  TP                  4      TJ d   T P3                  T4       TPD                  PF                  ;_uu_ 4        / TPD                  n$        RRR4       T PJ                  P#                  TP                  R4       T PL                  P#                  TP                  R4       T PN                  P#                  TP                  R4       T PP                  P#                  TP                  R4       ^ RI)H*p T! YTR,          4       Tf   T PV                  P#                  T
R4       ^ RI,H-p T! T 4      P#                  T
R4       T P                   P#                  TP$                  R4      pT Po                  TP$                  T4      G Rj  x€L
  ^ RI,H8p T! Y
4      G Rj  x€L
  T Ps                  Y«4      G Rj  x€L
  EKn   ELY ELò ELÁ ELŠ  \&         dD   pT P                   P#                  TP$                  R4       \)        YÒ4      '       d    Rp?R# h Rp?ii ; i ELp  RT9   d/   TR,          TR,          r¾T P.                  P#                  T
R4       i i ; i  \4         Ed    ^ RIpTP9                  \:        4      P=                  RT
4       TEfê   T P.                  P?                  T
RRTRTR8H  /R/ /4       ^ RIH p  T! Y4      G Rj  x€L 
 pEM„  \B         Edv    T P                  TR4         TPD                  PF                  ;_uu_ 4        / TPD                  n$        RRR4       M  + '       g   i     M; iT PJ                  P#                  TP                  R4       T PL                  P#                  TP                  R4       T PN                  P#                  TP                  R4       T PP                  P#                  TP                  R4       ^ RI)H*p T! YTR,          4       Tf   T PV                  P#                  T
R4       ^ RI,H-p T! T 4      P#                  T
R4       T P                   P#                  TP$                  R4      pR# i ; i\]        T P^                  T
R7      pTR,          pTR8X  Ed“   ^ RI,H0p T! Y
4       T P3                  T4       T P                  TR4        TPD                  PF                  ;_uu_ 4        / TPD                  n$        RRR4       M  + '       g   i     M; iT PJ                  P#                  TP                  R4       T PL                  P#                  TP                  R4       T PN                  P#                  TP                  R4       T PP                  P#                  TP                  R4       ^ RI)H*p T! YTR,          4       Tf   T PV                  P#                  T
R4       ^ RI,H-p T! T 4      P#                  T
R4       T P                   P#                  TP$                  R4      pR# ^ RI1H2p ^ RIH3p TPD                  PF                  ;_uu_ 4        T! T P^                  T
4      pT P.                  P#                  T
R4       TEf¼   T Ph                  P#                  T
R4      pTe1   TPk                  4       '       g   TPm                  \C        R4      4        RRR4        TPD                  PF                  ;_uu_ 4        / TPD                  n$        RRR4       M  + '       g   i     M; iT PJ                  P#                  TP                  R4       T PL                  P#                  TP                  R4       T PN                  P#                  TP                  R4       T PP                  P#                  TP                  R4       ^ RI)H*p T! YTR,          4       Tf   T PV                  P#                  T
R4       ^ RI,H-p T! T 4      P#                  T
R4       T P                   P#                  TP$                  R4      pE	KÛ  TpTR,          P1                  R4      ;'       g    RpT! YY^TT4       RRR4        EKH    + '       g   i      ELZ; i EL`i ; i  + '       g   i     EL=; i  TPD                  PF                  ;_uu_ 4        / TPD                  n$        RRR4       M  + '       g   i     M; iT PJ                  P#                  TP                  R4       T PL                  P#                  TP                  R4       T PN                  P#                  TP                  R4       T PP                  P#                  TP                  R4       ^ RI)H*p T! YTR,          4       Tf   T PV                  P#                  T
R4       ^ RI,H-p T! T 4      P#                  T
R4       T P                   P#                  TP$                  R4      pi ; i ELr EL_ ELI5i)rZ  rì  NFru  )r;  r=  )Úsettle_viewer_closerÜ   rð  )Úsettle_with_retryÚsettledr¸  z0Settlement or publication of admission %s failedr]  r^  rñ  Úusage)Úrecover_failed_settlementrò  )Úpublish_transfersrK  )Úwaiter_repliesr=  rê   rë   )Úretain_unsettled_delivery)Úadmission_result)Úpublish_terminalr9   )Údeliver_settled):rò  rí  ra   r‹   rè  rz  r.   rC  r;  rD  r>  r   r1   r)  rù  rö  rx   r  r%   r‰  r—  rn  rú  rf   r–   rd  rÕ  rN   rO   rB   rM   rT   rý  r   r*   r  rT  rh   ri   rj   rn   r  rþ  rg   ro  rÿ  r   r_   r   rf  r  r  rb   rj  rw  Ú_run_deferred_resetr  Ú_resolve_settled_waiter)r=   r¡   rí  rÐ   Úclaimedr£   rÐ  r;  r>  rù  rÜ   r¸  rH  rý  rû  Ú
settlementrú  rh  rN   rý  rê   rþ  rÿ  ÚresetrÚ  r   r  r  ry  r  s   &&                            r>   rl  ÚSessionAuthority._drainž  sH	  é € ÝJØ�}‰}˜SŸ^™^Õ,ˆØØ ×2Ñ2°3Ó=×=ˆGØŠÙØ ‰JˆCØ�e‹|ÙØŠ{˜uÒ0ð —‘˜C Ô0Ùà"'ˆDÔØŠ{ÝNõ JÙ# D¬'Ð2FÈcÏnÉnÓ*]Ó^×^Ð^Ø—;—;�;ÙÝLÙ)¨$·±Ó?×?Ð?Ø—;—;�;ÙÙØ˜~Õ.ˆLðØ*.×*?Ñ*?ÀÈ3Ó*O×$OÑ!�ØÐ/Ô/Ø×(Ñ(×,Ñ,¨T¯Z©Z¸Ô>Úð 0ð ˆGØˆJðJCõ RØ×/Ñ/×3Ñ3°LÓA�ðEÙ+¨D¸À(ÐU]Ð_iÓj×jÐjà  JÔ.Ø,6°yÕ,AÀ:ÈjÕCY Ø×,Ñ,×0Ñ0°¸tÔDð —=‘=×$Ñ$ S§^¡^Ó4¸Ó<Ø×)Ñ)¨#Ô.ðZ ×&Ñ&×+×+Ó+Ø24�D×%Ñ%Ô/÷ ,à×"Ñ"×&Ñ& s§~¡~°tÔ<Ø×(Ñ(×,Ñ,¨S¯^©^¸TÔBØ×#Ñ#×'Ñ'¨¯©¸Ô=Ø—‘× Ñ  §¡°Ô6ÝMÙ! $¨S°Õ->Ô?Ø’?à×+Ñ+×/Ñ/°¸dÔCÝBÙ˜tÓ$×(Ñ(¨°tÔ<à×,Ñ,×0Ñ0°·±¸TÓB�Ø×*Ñ*¨4¯:©:°uÓ=×=Ð=Ý?Ù! $Ó5×5Ð5Ø×.Ñ.¨|ÓF×FÓFòq >ò$ _ò @ò %Pøô !ô ð ×$Ñ$×(Ñ(¨¯©°TÔ:Ü˜c×;Ò;ÝØûðúò" køà  JÔ.Ø,6°yÕ,AÀ:ÈjÕCY Ø×,Ñ,×0Ñ0°¸tÕDð /ûô õ 'VÛØ×!Ñ!¤(Ó+×5Ñ5ØFÈôVà“?Ø×(Ñ(×3Ñ3°LØ Ð#3°X¸xÈÐT\ÑI\Ð"]Ð_fÐhjðClô må]ðÙ'@ÀÓ'K×!KÐ!KšøÜ,õ àŸ™ CÐ)<Ô=Ùð> ×&Ñ&×+×+Ó+Ø24�D×%Ñ%Ô/÷ ,×+×+Ð+úà×"Ñ"×&Ñ& s§~¡~°tÔ<Ø×(Ñ(×,Ñ,¨S¯^©^¸TÔBØ×#Ñ#×'Ñ'¨¯©¸Ô=Ø—‘× Ñ  §¡°Ô6ÝMÙ! $¨S°Õ->Ô?Ø’?à×+Ñ+×/Ñ/°¸dÔCÝBÙ˜tÓ$×(Ñ(¨°tÔ<à×,Ñ,×0Ñ0°·±¸TÓB’ðaúô
 4°D·G±GÈ,ÔW�GØ$ XÕ.�FØ Õ*ÝUÙ1°$ÔEØ×-Ñ-¨cÔ2ØŸ™ CÐ)<Ô=Øð, ×&Ñ&×+×+Ó+Ø24�D×%Ñ%Ô/÷ ,×+×+Ð+úà×"Ñ"×&Ñ& s§~¡~°tÔ<Ø×(Ñ(×,Ñ,¨S¯^©^¸TÔBØ×#Ñ#×'Ñ'¨¯©¸Ô=Ø—‘× Ñ  §¡°Ô6ÝMÙ! $¨S°Õ->Ô?Ø’?à×+Ñ+×/Ñ/°¸dÔCÝBÙ˜tÓ$×(Ñ(¨°tÔ<à×,Ñ,×0Ñ0°·±¸TÓB’õC IÝTØ×*Ñ*×/×/Ó/Ù#3°D·G±G¸\Ó#J˜Ø×,Ñ,×0Ñ0°¸tÔDØ#Ó+ð &*§\¡\×%5Ñ%5°lÀDÓ%I˜FØ%Ò1¸&¿+¹+¿-º-Ø &× 4Ñ 4Ô5FÐGZÓ5[Ô \Ø$÷ 0Ð/ð" ×&Ñ&×+×+Ó+Ø24�D×%Ñ%Ô/÷ ,×+×+Ð+úà×"Ñ"×&Ñ& s§~¡~°tÔ<Ø×(Ñ(×,Ñ,¨S¯^©^¸TÔBØ×#Ñ#×'Ñ'¨¯©¸Ô=Ø—‘× Ñ  §¡°Ô6ÝMÙ! $¨S°Õ->Ô?Ø’?à×+Ñ+×/Ñ/°¸dÔCÝBÙ˜tÓ$×(Ñ(¨°tÔ<à×,Ñ,×0Ñ0°·±¸TÓB“ð+ #*˜Ø#+¨HÕ#5×#9Ñ#9Ð:JÓ#K×#QÐ#QÈr˜Ù(¨°CÀ(ÈHÔU÷ 0×/×/Õ/úò/ #ð	'Vú÷X ,×+Ð+û�T×&Ñ&×+×+Ó+Ø24�D×%Ñ%Ô/÷ ,×+×+Ð+úà×"Ñ"×&Ñ& s§~¡~°tÔ<Ø×(Ñ(×,Ñ,¨S¯^©^¸TÔBØ×#Ñ#×'Ñ'¨¯©¸Ô=Ø—‘× Ñ  §¡°Ô6ÝMÙ! $¨S°Õ->Ô?Ø’?à×+Ñ+×/Ñ/°¸dÔCÝBÙ˜tÓ$×(Ñ(¨°tÔ<à×,Ñ,×0Ñ0°·±¸TÓB‘úÚ=â5ÚFùs)  ‚9o»N¼A)oÂ%NÂ&oÂ<oÃNÃoÃ0oÃ>N  ÄNÄ3N  ÅoÅ!P. Å2O4 ÆO1ÆO4 ÆA.P. Ç4oÈiÈ$D9oÍoÍoÍ3oÍ4oÎoÎoÎoÎoÎN  Î O.Î+7O)Ï"oÏ(O)Ï)O.Ï.oÏ1O4 Ï47P+Ð+P. Ð.A'iÒR)Ò!R$Ò"R)Ò'iÒ)X*ÓiÓi, Ó	oÓ'TÓ9	oÔT	ÔDoØ)X*Ø*AiÚi, ÚoÚ%[ Ú7	oÛ [	ÛDoß'*iàA*h<á<h<âiâi, â oâ>cã	oãc)	ã$Doè h<è"h<è0iè8i, è<iéiéi, éiéi, éiéi, éi)	é#	oé,oêj&	ê	oê&j6ê1Doïoïoïoc              ƒ  ó´   "  € Ve    V! 4       G Rj  x€L
  R# R#  L  \          d.    ^ RIpTP                  \        4      P	                  RT 4        R# i ; i5i)z¢The auto-reset the settled turn deferred (``_hmwa_defer_exhaustion_reset``), before its
waiter wakes: a delivery retry or the next DM then reads the fresh target.Nz Deferred auto-reset of %s failed)rÕ  rN   rO   rB   rM   )r%   r  rN   s   && r>   r  Ú$SessionAuthority._run_deferred_reset  sT   é € ð ÒðaÙ“g—’ñ áøÜô aÛØ×!Ñ!¤(Ó+×5Ñ5Ð6XÐZ_×`ðaüs1   ‚Aˆ
 ’“ —A› �4AÁAÁAÁAc              ƒ  ó”  "  € \        V R/ 4      P                  V4      pRpVe/   \        VRR4      '       d   \        P                  ! 4       ;qCn        V P
                  P                  VR4      pVe   VP                  4       '       d   R# VP                  V4       Ve‘   V P                  P                  '       gs   V P                  '       g_   \        P                  ! \        4      ;_uu_ 4        \        P                  ! VP!                  4       \"        4      G Rj  x€L
  RRR4       R# R# R# R#  L  + '       g   i     R# ; i5i)a`  Hand the settled reply to its waiter. The adapter sending it adopted the turn's crash marker
and releases it once the reply is ledgered (seconds with auto-TTS); a follower claimed before
that replaces the one-slot marker, so a kill in between would lose the persisted reply: the
drain waits for that release (bounded; never while draining or retiring).Úmarker_adoptersNÚ_gateway_active_turn_token)rÕ   r–   rG   ÚEventÚ_gateway_marker_releasedrb   r  rj  r™  r\   r¬   rp   r–  ÚsuppressÚTimeoutErrorÚwait_forÚwaitÚ_MARKER_RELEASE_WAIT_S)r=   rÜ   r¸  ÚadopterÚreleasedry  s   &&&   r>   r  Ú(SessionAuthority._resolve_settled_waiter'  sñ   é € ô
 ˜$Ð 1°2Ó6×:Ñ:¸<ÓHˆØˆØÒ¤7¨7Ð4PÐRV×#WÒ#WÜ:A¿-º-»/ÐIˆHÔ7Ø—‘×!Ñ! ,°Ó5ˆØŠ>˜VŸ[™[Ÿ]š]ÙØ×Ñ˜(Ô#ØÒ¨¯©×)>×)>Ð)>À$Ç-Ç-À-Ü×$Ò$¤\×2Õ2Ü×&Ò& x§}¡}£Ô8NÓO×OÐO÷ 3Ñ2ñ CPÑ)>ÑáO÷ 3×2Ð2üsB   ‚BEÂ	2EÂ<EÃ"EÃ0-D4ÄD2ÄD4Ä"EÄ2D4Ä4E	Ä?	E)rr   rw   rv   rn   ro   r_   rx   rm   r`   rc   rs   r^   rl   re   rt   rg   rf   rj   ri   rh   r]   rq   rp   ru   r\   ra   rk   rb   r<   )rL   )GrB   rC   rD   rE   ry   r¦   r®   rµ   rº   r¾   rÃ   rÂ   rÁ   rØ   rå   rû   rþ   r  r"  r#  rA  rL  r  rd  rn  rr  rz  r}  r�  r–  Úasynccontextmanagerr‡  r’  r£  rˆ  rÉ  rÔ  r±  r»  rþ  r  r  r  r?  rH  rK  rF  rP  rX  rW  rg  r|  r†  rx  r’  r›  rž  r¥  r«  r®  r¶  rÒ  rÏ  rØ  rè  rö  rl  Ústaticmethodr  r  rI   rJ   rA   r>   rZ   rZ   y   s  † ò8"òt$9ðL	<°Eô 	<ñ¸Eõ ò5òMòIò	&ò0ò"òAò?ò!ò	ò"òH3ð-Àô -ò0rò	jò0ò&UòAò@ô"Pòð ×#Ñ#ñ9ó $ð9ò<0ò@ô
#gðJÐcgô ò"Cò"ôò'ðREÐVZð EÐsxð EØ#'ðEØ6:÷Eð(-XÀð -XÐQVð -XÐfjð -XØ#'ô-Xò^Zò&"ò
"òòô$ò4RðYÐVZô Yò2"ò0!ò:ò"	Jòò "ò*8ò
/ð]ÐRVô ]ð_È4ô _ðeÐQ[ô eò LJò\òò$4òL#9òJ|Gð| ñaó ðaöPrA   rZ   c                óF  € ^ RI pV P                  4       pV'       g   ^ #  V P                  V4      pT'       d&   TP	                  \
        4      P                  RY24       T#   \         d6    TP	                  \
        4      P                  RT P                  RR7        ^ # i ; i)a~  Stamp this store's own profile onto pre-ownership NULL rows (#94724).

The owner is the only writer while it holds the profile, so the offline REST backfill is
refused for as long as it runs; doing it here is what migrates an upgraded install. Idempotent
and never overwrites an owner, so every start runs it. A store outside the profile tree has
no derivable owner and keeps NULL.
Nz+Legacy session owner backfill failed for %sT©Úexc_infoz6Stamped %d legacy session row(s) with owner profile %r)	rN   Ú_own_profile_nameÚbackfill_null_session_profilesrÕ  rO   rB   rÞ  Údb_pathÚinfo)r_   rN   ÚstampÚstampeds   &   r>   Úbackfill_legacy_session_ownersr$  9  s”   € ó Ø× Ñ Ó"€EßÙðØ×3Ñ3°EÓ:ˆ÷ Ø×Ñœ(Ó#×(Ñ(Ð)aÐcjÔrØ€Nøô ô Ø×Ñœ(Ó#×+Ñ+Ð,YÐ[]×[eÑ[eÐptÐ+ÔuÚðús    A  Á <B ÂB c                ó  € ^ RI p V P                  4       pT'       d&   TP                  \        4      P                  RT4       T#   \         d6    TP                  \        4      P                  RT P                  RR7        ^ # i ; i)a	  List conversations compressed before write-time stamping under their surface again: a chain
root without a created_source takes its nearest stamped continuation's. Idempotent and never
overwrites a known value, so every start runs it, like the owner backfill above.Nz/Compression created_source repair failed for %sTr  z6Stamped created_source on %d compressed session row(s))rN   Ústamp_legacy_compression_chainsrÕ  rO   rB   rÞ  r   r!  )r_   rN   r#  s   &  r>   Ú$backfill_compression_created_sourcesr'  O  s~   € ó ðØ×4Ñ4Ó6ˆ÷ Ø×Ñœ(Ó#×(Ñ(Ð)aÐcjÔkØ€Nøô ô Ø×Ñœ(Ó#×+Ñ+Ð,]Ð_a×_iÑ_iÐtxÐ+ÔyÚðús   †A Á<BÂBr_   rÃ   Tc             ƒ  ód  "  € Vf"   \        V P                  RV P                  4      p^ RIHp \        P
                  ! V! VP                  4      P                  4      G Rj  x€L
 p\        P
                  ! \        W2R7      G Rj  x€L
 p\        P
                  ! \        W7R7      G Rj  x€L
  ^ RI
Hp \        P
                  ! WƒV4      G Rj  x€L
  \        P
                  ! \        V4      G Rj  x€L
  \        P
                  ! \        V4      G Rj  x€L
  \        WW#VR7      p	^ RIHp
 V
! V	4      G Rj  x€L
  V'       d   W�n        ^ R	IHp V! V	4       V P(                  pV'       d   W|n        \        VR
R4      pVf	   / ;qÜn        Y}V&   ^ RIHp V! V	4       V	#  EL? EL Lü LÙ L¸ L— Lu5i)zùCall after exclusive profile ownership, before connecting adapters/API.

``register=False`` builds a served secondary's authority without making it the runner's
launch authority (``runner.session_authority``); the per-home registry owns the lookup.
NÚ_db)ÚPath)r^   )r`   )Úsettle_recovered_unattended)r]   r^   r_   r`   )Úadopt_local_compressions)Ú
bind_ownerÚ_local_authority_epochs)Úrecover_local_sessions)rÕ   Ú_session_dbÚpathlibr*  rG   r*  r   rþ   r   r   rÝ  r+  r$  r'  rZ   Úgateway.session_local_adoptionr,  Úsession_authorityÚgateway.session_cronr-  rÇ   Ú_local_authority_epochr.  r˜   r/  )r\   r]   r^   r_   rÃ   r*  Údb_keyr`   r+  Ú	authorityr,  r-  ÚstoreÚepochsr/  s   &$$$$          r>   Úinitialize_session_authorityr:  ^  s`  é € ð 
‚zÜ�V×'Ñ'¨°×0BÑ0BÓCˆõ Ü×$Ò$¡T¨"¯*©*Ó%5×%=Ñ%=Ó>×>€FÜ×#Ò#Ô$7¸ÔU×U€Eä
×
Ò
Ô2°BÔ
D×DÐDåNÜ
×
Ò
Ð7¸UÓ
C×CÐCÜ
×
Ò
Ô:¸BÓ
?×?Ð?Ü
×
Ò
Ô@À"Ó
E×EÐEÜ  ÈKÐfkÔl€Iõ HÙ
" 9Ó
-×-Ð-ßØ#,Ô Ý/ÙˆyÔØ× Ñ €EßØ',Ô$ä�UÐ5°tÓ<€FØ‚~Ø13Ð3ˆÔ.Øˆ6�NÝEÙ˜9Ô%ØÐò9 ?ÚUáDñ DÙ?ÙEñ
 .ùsŠ   ‚AF0Á!F Á"#F0ÂF#Â#F0Â)F&Â*$F0ÃF(Ã"F0Ã1F*Ã2"F0ÄF,Ä#F0Ä8F.Ä9F0Å'F0Å-4F0Æ#F0Æ&F0Æ(F0Æ*F0Æ,F0Æ.F0)6Ú__doc__Ú
__future__r   rG   r–  Úcontextvarsr   Údataclassesr   r   r   Ú	functoolsr   rà  Útypesr   r  Úgateway.session_contractr	   r
   r   r   r   r   r   r   Úgateway.session_eventsr   Ú gateway.session_pending_controlsr   r  r   r   r   r   r   r   r   r   r   r   rä  rå  r  r   r   r!   rQ   r  rX   rZ   r$  r'  r:  rJ   rA   r>   Ú<module>rD     sô   ðñõ
 #ã Û Ý "ß 0Ñ 0Ý Û Ý !Û ÷÷ ó õ 1Ý <÷÷ ÷ ð *.¨sÐ &Ð Ð&àÐ ñ "Ð"8À%ÔHÐ ñ
 !Ð!6ÀÔEÐ ð ÷/;ð /;ó ð/;òdWð ×Ñð¨4ó ó  ð÷"}Pñ }Pò@&ò,ð'Èdð 'Ð]aö 'rA   