
    !xjAi                    <   d Z ddlmZ ddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddlZddlZddlZddlmZ ddlmZ ddlmZmZ dZdZd	Zd
ZdZdZdZdZdZdZ dZ!dZ"dZ#dZ$ e%h d      Z&dZ'dZ(dZ)e	jT                   e+e	dd      z  Z, ee-      j]                         j^                  Z0e0jb                  d   Z2e2dz  Z3e3dez   z  dz  Z4e2dz  Z5e3dz  Z6e6d z  Z7e6d!z  Z8e6d"z  Z9e0d#z  Z:e0d$z  Z;d%Z<e0d&z  Z=d'Z> ed(      Z? G d) d*e@      ZAdJd+ZBdKd,ZCdLd-ZDd.d/dMd0ZEdNd1ZFd.d/dOd2ZGdPdQd3ZHdRd4ZIdSd5ZJdTd6ZKdUd7ZLdVd8ZMdWd9ZNdXd:ZOd;ZPdVd<ZQdYdZd=ZRdYdZd>ZS G d? d@      ZTd[dAZUd\dBZVd]dCZWd^dDZXd^dEZYd^dFZZd_dGZ[d`dHZ\e]dIk(  r e^ e\             y)azSTask26 invite harness v2: reset-bound absent-ledger initialization and observation.    )annotationsN)Path)Any)parse_qsurlparse@2e0894eac92bc396cc4723bf1f18ebc653b95018dd41574df435941c235da925@af4a9d0a1ffffb6eb7551c1d6dc2b32853ca6d024332a4f8f5702bbf992f141b@7ace03c6dad33d2fc3ef223621cbca68a150fde8429932138e252fb8498ac582@3c6a0f24124142fc1b03c350a357d5530aa1a561c4b332e2e6c29a0de74c87e2@e2fbff811e5b0caf4551010c1a47d640bba17febffb951f0525b6ff4dccd71d3@2fb0019a8d9e46cc197f72685a89fc54ca5fb98a52840f41ade5d51f76d86736@7ef0eb8f4b27ab311a11909c25167df9493348d996319d009eec36a0ebf6f146@d2879b128573a9d75a55958d2fa3e1a24be1636f0a7a20affe8f2ef9b94dfd33
8527916639
8693203710dual_coach_pilot_test_bot@23845bda574c085e16b6d316e5e84e54b3bc6db3a8803c6b3b93ed7c4b86b049z0gateway/platforms/telegram_customer_bootstrap.py@145515d5e110dcebb94fcaa554bcee29544b3a75dcfe058fae944ea3b70042b2>   ACTIVEFAILEDEXPIRED	CANCELLED         
O_NOFOLLOW   z.omo/evidence/task26z"task26-repaired-archive-successor-z.artifacts/hermes_agent-0.17.0-py3-none-any.whlz,.omo/plans/dualcoach-production-readiness.mdz*task26-runbook-rebind-2e0894ea-st_01a0054ez!task26-golden-path-2e0894ea-v5.mdz&task26-recovery-runbook-2e0894ea-v5.mdzrunbook-binding-receipt-v5.jsonzapproval-receipt.jsonzschema-v2.json@6a4249d263db04bea1432ad2393150ed77d3243a1365ed8dbe1eed5c0261df9ezOPERATIONS-v2.md@82099d8a3658a494c3cf13558e43fe7846e7e826cfcdec6c10515f05a697752dz6data/profile-reset-archives/task26-live-reset-2e0894eac                      e Zd Zy)HarnessErrorN)__name__
__module____qualname__     N.omo/evidence/task26/task26-invite-harness-st_01a0056a-v2/invite_harness_v2.pyr!   r!   :   s    r&   r!   c                H    t        j                  |       j                         S N)hashlibsha256	hexdigest)raws    r'   	sha_bytesr.   >   s    >>#((**r&   c                V    t        j                  | ddd      dz   j                         S )NT,:)	sort_keys
separatorsensure_ascii
)jsondumpsencode)values    r'   	canonicalr;   B   s'    JJuRVWZ^^ffhhr&   c                    | j                   | j                  | j                  | j                  | j                  | j
                  | j                  | j                  fS r)   )st_devst_inost_modest_nlinkst_uidst_sizest_mtime_nsst_ctime_ns)infos    r'   stablerF   F   sB    KKdllDMM4;;LL$**D,<,<> >r&   Tprivatec                  t        j                  | t         j                  t        z        }	 t        j                  |      }t        j                  |j                        r0|j                  dk7  s!|j                  t        j                         k7  rt        d|        |r/t        j                  |j                        dvrt        d|        g }t        j                  |d      x}r*|j                  |       t        j                  |d      x}r*t        |      t        t        j                  |            k7  rt        d|        dj!                  |      t        j"                  |       S # t        j"                  |       w xY w)N   zunsafe regular file: >   @  r       zfile is not private: i   zfile changed during read: r&   )osopenO_RDONLYO_FLAGSfstatstatS_ISREGr?   r@   rA   getuidr!   S_IMODEreadappendrF   joinclose)pathrH   fdbeforechunkschunks         r'   read_regularr`   K   s)   	r{{W,	-B"||FNN+v!/Cv}}XZXaXaXcGc!6tf=>>t||FNN3;WW!6tf=>> wwr;//e/MM%  wwr;//e/&>VBHHRL11!;D6BCCxx
s   C&E2 AE2 2F	c                .    t        t        | d            S )NFrG   )r.   r`   )r[   s    r'   sha_filerb   ]   s    \$677r&   c                   	 t        j                  t        | |            }t        |t              st        d|        |S # t        t         j                  f$ r}t        d|        |d }~ww xY w)NrG   zinvalid JSON: zJSON root is not an object: )r7   loadsr`   UnicodeDecodeErrorJSONDecodeErrorr!   
isinstancedict)r[   rH   r:   excs       r'   	read_jsonrj   a   sq    =

<g>? eT"9$@AAL	  4 45 =^D623<=s    A A/A**A/c                ^   | j                         }t        j                  |j                        r@t        j                  |j                        s!|j
                  t        j                         k7  rt        d|        t        j                  |j                        |k7  rt        d|        y )Nzunsafe directory: zwrong directory mode: )
lstatrS   S_ISDIRr?   S_ISLNKrA   rN   rU   r!   rV   )r[   moderE   s      r'   require_directoryrp   k   s    ::<D<<%dll)Ct{{VXV_V_VaGa/v677||DLL!T)3D6:;; *r&   c                h   | j                   j                  ddd       | j                   j                         rt        d      t	        j
                  | t        j                  t        j                  z  t        j                  z  t        z  d      }	 t        |      }t	        j                  |d       d}|t        |      k  r+|t	        j                  |||d        z  }|t        |      k  r+t	        j                  |       t	        j                  |       y # t	        j                  |       w xY w)NrM   T)ro   parentsexist_okz"receipt parent cannot be a symlinkrL   r   )parentmkdir
is_symlinkr!   rN   rO   O_WRONLYO_CREATO_EXCLrQ   r;   fchmodlenwritefsyncrZ   )r[   r:   r\   r-   offsets        r'   exclusive_writer   s   s    KK5$>{{?@@	r{{RZZ/"));gEu	MB
		"es3xbhhr3vw<00F s3x

s   AD /D D1c                    t        t              t        k7  rt        d      t	        j
                  t              5 } | j                  t              }d d d        t              t        k7  rt        d      |S # 1 sw Y   (xY w)Nzwheel hash mismatchz$wheel bootstrap member hash mismatch)
rb   WHEELWHEEL_SHA256r!   zipfileZipFilerW   MODULE_MEMBERr.   MODULE_SHA256)archiver-   s     r'   wheel_module_bytesr      sa    ,&011		7ll=) 
 ~&ABBJ	 
 	s   A88Bc                    t         t        ft        t        ft        t
        ft        t        ff} | D ]+  \  }}t        |      |k7  st        d|j                          t               }|j                  d      d}t        fd|D              rt        d      t        j                  j!                  d      }|1|j"                  %t        t%        |j"                              t&        k7  rt        d      dt&        ddd	S )
Nzbound evidence hash mismatch: zutf-8)zself._prepare_paths()z=self.state_dir.mkdir(mode=0o700, parents=True, exist_ok=True)zself._write_unlocked(())z,os.replace(temporary_name, self.ledger_path)zos.fsync(directory)c              3  &   K   | ]  }|v 
 y wr)   r%   ).0fragmentsources     r'   	<genexpr>z$loaded_byte_proof.<locals>.<genexpr>   s     
H2Gh86!2Gs   z2candidate absent-ledger initializer proof mismatch-gateway.platforms.telegram_customer_bootstrapz2loaded bootstrap bytes differ from candidate wheelPASS)#candidate_absent_ledger_initializerinitializer_source_sha256"atomic_replace_and_directory_fsyncloaded_byte_match)PLANPLAN_SHA256	GOLDEN_V5GOLDEN_V5_SHA256RECOVERY_V5RECOVERY_V5_SHA256RUNBOOK_V5_RECEIPTRUNBOOK_V5_RECEIPT_SHA256rb   r!   namer   decodeany	importlibutil	find_specoriginr   r   )pinsr[   wantedr-   initializer_fragmentsspecr   s         @r'   loaded_byte_proofr      s    	{i)9:	(),>@Y+ZD fD>V#!?		{KLL  
CZZ F 
H2G
HHOPP>>##$STD|t{{*htDKK7H.I].ZOPP/5%2.4#	 r&   c                   t        |       }t        t              t        k7  rt	        d      t        t
              t        k7  rt	        d      i dddt        dt        dt        dt        d	t        d
t        dt        dt        dt        dt         dt"        dt        t$              dt        dt        dt        t'        t(              j+                               }|j-                         D ]'  \  }}|j/                  |      |k7  st	        d|        ||j/                  dg       vrt	        d|       |S )Nzharness schema hash mismatchzoperations hash mismatchschemaz(task26-invite-harness-permission-seal-v2candidate_digestwheel_sha256plan_sha256golden_runbook_v5_sha256recovery_runbook_v5_sha256runbook_binding_v5_sha256reset_manifest_sha256reset_evidence_digestactor_idowner_idapproval_event_sha256approval_receipt_sha256schema_sha256operations_sha256harness_sha256zpermission seal mismatch: allowed_modeszmode is not permission sealed: )rj   rb   SCHEMASCHEMA_SHA256r!   
OPERATIONSOPERATIONS_SHA256	CANDIDATEr   r   r   r   r   RESET_MANIFEST_SHA256RESET_EVIDENCE_DIGESTACTOR_IDOWNER_IDAPPROVAL_EVENT_SHA256APPROVAL_RECEIPTr   __file__resolveitemsget)r[   ro   sealexpectedkeyr   s         r'   verify_sealr      s   T?D=(9::
00566<I 	 	{	
 	#$4 	%&8 	$%> 	 !6 	 !6 	H 	H 	 !6 	"8,<#= 	 	.  	(4>#9#9#;<!H$  ~~'V88C=F"!;C5ABB ( 488OR00<TFCDDKr&   c                   | t         z  }|dz  }|dz  }t        |      t        k7  rt        d      t	        |      t	        |      }t
        t        t        t        dd}t        fd|j                         D              rt        d      |j                  d      d	k7  sC|j                  d
      t        k7  s+|j                  d      t        k7  s|j                  d      durt        d      t        t        t        |      dS )Nzmanifest.jsonzreceipt.jsonzreset manifest hash mismatchF)r   r   r   evidence_digestrestore_or_prepopulatec              3  L   K   | ]  \  }}j                  |      |k7    y wr)   r   )r   r   r:   manifests      r'   r   z reset_binding.<locals>.<genexpr>   s&     
I8H*#u8<<%8Hs   !$zreset manifest binding mismatchstatusr   manifest_sha256r   post_reset_empty_baselineTz(reset execution receipt binding mismatch)r   r   reset_receipt_sha256)RESET_RELATIVErb   r   r!   rj   r   r   r   r   r   r   r   )profilerootmanifest_pathreceipt_pathreceiptr   r   s         @r'   reset_bindingr      s    ^#D?*M.(L"779::'H%G%$"0"'H 
I8H
II<==H';;()-BB;;()-BB;;234?EFF%:%:$,\$:< <r&   c                    | dz  S )Nz:data/onboarding/telegram-customer-bootstrap-v1/ledger.jsonr%   )r   s    r'   bootstrap_pathr      s    QQQr&   c                   t        |       }t        |      h dk7  s|j                  d      dk7  rt        d      |j                  d      }t	        |t
              st        d      t        j                  |d   |ddd	d
d      j                         }|j                  d      t        |      k7  rt        d      |D cg c]$  }t	        |t              s|j                  d      & }}|D cg c]$  }t	        |t              s|j                  d      & }}t        |      t        |      k7  s@t        t        |            t        |      k7  s t        t        |            t        |      k7  rt        d      |S c c}w c c}w )N>   digestr   sessionsr   telegram-customer-bootstrap-v1z$unexpected customer-bootstrap schemar   z'customer-bootstrap sessions are invalid)r   r   FTr0   )r5   r3   r4   	allow_nanr   z)customer-bootstrap ledger digest mismatch
session_idsid_hashz2duplicate or malformed customer-bootstrap identity)rj   setr   r!   rg   listr7   r8   r9   r.   rh   r{   )r[   r:   r   payloaditemidshashess          r'   validate_ledgerr      sK   dOE
5z5589LPp9pABByy$Hh%DEEjjE(OJY^#'J%QQWQWQY yyi00FGG.6
Qhd*T4:P488L!hC
Q/7Rxt:dD;Qdhhz"xFR
3x3x= CCMSX$=S[AQUXY_U`A`OPPL	 RRs   E?E?0FF)	customerszgateway.lockzgateway_state.jsonr   zstate.dbz.clean_shutdownzdata/customerszdata/owner-actionsz(data/activation-completion-notices.jsonlz$data/customer-activation-audit.jsonlz%data/customer-activation-journal.jsonz%data/customer-activation-receipt.jsonz2data/nutrition-onboarding-projection-journal.jsonlzdata/scheduled-deliveries.jsonlz$data/scheduled-deliveries-fence.jsonzdata/customer-schedule-claimszdata/recovery-auditszdata/activation-readinessc           
        t        |        t        | dz         t        |       }| dz  }|j                         s|j                         rt	        d      t
        D cg c]+  }| |z  j                         s| |z  j                         s*|- }}|rt	        d|d   z         t               }ddddd	d	dt        t        k7  |d
	|S c c}w )Ndatadata/onboardingz8absent-ledger baseline requires onboarding parent absentz)unexpected post-reset sibling authority: r   r   RESET_BOUND_LEDGER_ABSENTFT)	r   baselineledger_presentprior_session_countall_prior_sessions_terminalsibling_authorities_cleannearest_stable_parentactor_not_owner_staffr   )	rp   r   existsrv   r!   CLEARED_SIBLINGSr   r   r   )r   binding
onboardingrelativepresentproofs         r'   absent_baseliner    s    gg&'G$G,,Jj335UVV(8(8HWx=O<W<W<Y^ehp^p]|]|]~x(8GFQRSTTE&AUZ %)F!)X!5E	 V]	 	 @s   +C	Cc                    t        |        t        | dz         t        |       }t        |      }|j                  }t        |       |j	                         D ch c]  }|j
                   c}ddhk7  rt        d      |j	                         D ]|  }|j                         s`|j                         rP|j                         j                  t        j                         k7  s!|j                         j                  dz  dk7  sst        d       |d   }t        d	 |D              rt        d
      t        d |D              rt        d      t        fd|D              rt        d      |dddt        |      dt!               dfS c c}w )Nr   ledger.jsonledger.lockz,unexpected customer-bootstrap authority file  rL   z-unsafe customer-bootstrap authority mode/typer   c              3  J   K   | ]  }|j                  d       t        v  yw)stateN)r   TERMINALr   r   s     r'   r   z$existing_baseline.<locals>.<genexpr>(  s     
B488GH,s   !#z#nonterminal prior bootstrap sessionc              3  d   K   | ](  }|j                  d       xs |j                  d       * yw)role_claimsrecovery_attemptsNr   r
  s     r'   r   z$existing_baseline.<locals>.<genexpr>*  s.     
YPX488M"Cdhh/B&CCPXs   .0z#open prior claim/recovery authorityc              3     K   | ]<  }t        |j                  d       t              xr |d    j                  d      k(   > yw)customer_draftcustomer_keyN)rg   r   rh   )r   r   r  s     r'   r   z$existing_baseline.<locals>.<genexpr>,  sJ      (D 	488,-t4s>N9O9S9STb9cgs9sss   AAzcustomer key is not newr   AUTHENTICATED_LEDGER_PRESENTT)r   r   r   r   r   r   )rp   r   r   rt   iterdirr   r!   rv   is_filerS   rA   rN   rU   r?   r   r{   r   )r   r  r[   ledgerr  r   r   s    `     r'   existing_baseliner    sn   gg&''"DT"FKKEe#mmo.od		o.=-2PPIJJ??DLLNdiik6H6HBIIK6W[_[d[d[f[n[nqv[vz[NOO   j!H

B
BB@AA

YPX
YY@AAC (( % 455f2P&*3x=37N_Nac c c /s   Fc                    t        |       }|j                         s|j                         rt        | |      S t	        |       }dg d d|fS )Nr   )r   r   r   )r   r   rv   r  r  )r   r  r[   results       r'   	preflightr  6  sI    '"D{{}) ,77W%F6BRVWY___r&   c                  $    e Zd ZddZddZddZy)Inotifyc                   t        j                  d d      }|j                  t        j                        | _        | j
                  dk  rt        t        j                         d      |j                  | j
                  t        j                  |      t        t        z  t        z        }|dk  rBt        j                         }t        j                  | j
                         t        |d|       y )NT)	use_errnor   inotify_init1zinotify_add_watch:)ctypesCDLLr  rN   	O_CLOEXECr\   OSError	get_errnoinotify_add_watchfsencode	IN_CREATEIN_MOVED_TOIN_CLOSE_WRITErZ   )self	directorylibcwatcherrors        r'   __init__zInotify.__init__?  s    {{440$$R\\277Q;&**,o>>&&twwI0F	T_H_bpHpq19$$&EHHTWW%#5i[!ABB r&   c                B    t        j                  | j                         y r)   )rN   rZ   r\   )r(  s    r'   rZ   zInotify.closeJ  s    
r&   c           	     L   t        j                         |z   }d}	 |t        j                         z
  }|dk  r|dk(  rt        d      t        j                  | j                  gg g |dk(  rt        d|      nd      \  }}}|s|r|S t        d      t        j                  | j                  d      }d}	|	dz   t        |      k  rat        j                  d||	      \  }
}}}||	dz   |	dz   |z    j                  dd      d   }|	d|z   z  }	||k(  r|dz  }|	dz   t        |      k  ra)	Nr   z bounded filesystem event timeoutg        i      iIII    rJ   )time	monotonicr!   selectr\   maxrN   rW   r{   structunpack_fromsplit)r(  r   timeoutdeadlinecount	remainingreadable_r   r~   _watch_mask_cookielengthobserveds                  r'   await_name_countzInotify.await_name_countM  s9   >>#g- 4>>#33IA~%1*"#EFF#]]DGG9b"UZ^_U_c#y>QehiNHa L"#EFFggdggu-GF2+W-171C1CFGU[1\.w"6B;v{V/CDJJ5RSTUVW"v+%t#QJE 2+W- r&   N)r)  r   returnNone)rF  rG  )r   bytesr:  floatrF  int)r"   r#   r$   r-  rZ   rE  r%   r&   r'   r  r  >  s    	Cr&   r  c                 r    t        j                  d      } | j                  | j                  | j                  fS )Nr   )r   import_moduleRoomBootstrapStoreload_customer_draftroom_bootstrap_state_dir)modules    r'   
import_apirQ  c  s2    $$%TUF$$f&@&@&BaBaaar&   c                \    d|  d| t         t        t        t        t        t
        t        dd
S )Nztask26-invite-harness-v2-z-receipt-v1z1redacted; no raw invite token or customer content)
r   ro   r   r   r   r   r   r   r   privacy)r   r   r   r   r   r   r   ro   s    r'   base_receiptrU  h  s1    -dV;?%|T_$4&8!6QfF r&   c                f   	 t        | j                        \  }}i t        |      |dddt        |d         d}|d   r!t	        t        | j                              |d<   t        | j                  |       |S # t        t        f$ r'}i t        |      dt        |      dd	d
}Y d }~Id }~ww xY w)Nr   r   Tr   )r   	mutationsready_for_one_inviteledger_session_countr   ledger_sha256FAILF)r   blockerrW  rX  )r  r   rU  r{   rb   r   r!   r!  strr   r   )argsro   r  r  r   ri   s         r'   	read_moder_  s  s    B"4<<0b\$' b6 bVRS+/VT^M_I`b"#'/t||0L'MGO$ DLL'*N	 '" BB\$' B6c#h !5BBs   A A: :B0	B++B0c                   | j                   j                         s| j                  j                         rt        d      t	               \  }}} || j
                        }t        | j                  |j                        \  }}|d    }|r| j                  dz  nt        | j                        j                  }|rdnd}	t        |      }
	 |rE| j                  dz  j                         s| j                  dz  j                         rt        d       | || j                              }|j                  |t        t              }|
j!                  |	d	      }|
j#                          |d
k7  rt        d      t        | j                        }t%        |      }|j                  }t'        | j                  dz  d       t'        |       |j)                         D ch c]  }|j*                   c}ddhk7  rt        d      |j)                         D ]M  }|j                         s1|j-                         r!|j/                         j0                  dz  dk7  sDt        d       t3        |d         t3        |d         d
z   k7  rt        d      |d   D cg c]-  }|j5                  d      |j6                  j8                  k(  s,|/ }}t3        |      d
k7  s.|d   j5                  d      dk7  s|d   j5                  d      d
k7  rt        d      t;        t=        |j>                        j@                  d      j5                  d      }tC        |tD              r"t3        |      d
k7  s|d   jG                  d      st        d       |d   }|j6                  jH                  tK        |d!d  jM                  d"            k7  rt        d#      d$|j6                  j8                  ||j>                  |jN                  jQ                         tR        d%}tU        | j                   |       i tW        d&      i d'd(d)|d*   d+|rdnd,d-dd.|r|ndd/|s|ndd0d
d1d
d2|rd3nd
d4dd|j6                  j8                  d5tK        |j6                  j8                  jM                               d6|j6                  jH                  d7tK        |jM                               dddd
d8tY        |      tY        | j                         d9t[        | j                         gd:}tU        | j                  |       | j\                  rg }t_        d; | j\                  ja                  d<      D              D ]=  }	 |jM                         tc        |      v r|je                  |jg                                ? || j                   jg                         gk7  rt        d=      |S # |
j#                          w xY wc c}w c c}w # t        th        f$ r Y w xY w)>Nzone-use output already existsr   r   s
   onboarding   ledger.jsonr   z5onboarding authority race appeared after subscription)bot_usernamer   g      @rJ   z;expected exactly one watched authority creation/write eventi  rT  r  r  z'unexpected candidate initializer outputr  rL   z/candidate initializer output mode/type mismatchr   z1prepare did not establish exactly one new sessionr   r   r  PREPARED
generationz>new session is not exactly one generation-1 PREPARED authorityT)strict_parsingstartrc1_z$candidate private handoff is invalid   asciizcandidate SID hash mismatchz task26-private-invite-handoff-v2)r   r   start_tokencustomer_link
expires_atr   preparer   PASS_PREPAREDbaseline_beforer   
watch_rootr   %event_subscription_before_initializeronboarding_create_event_countledger_write_event_count!candidate_initializer_invocationsprepare_invocations1final_ledger_publications_expected_from_candidate   /atomic_replace_and_directory_fsync_source_proofsession_id_sha256r   start_token_sha256rZ  0600)handoff_sha256handoff_moderaw_token_locationsc              3  d   K   | ](  }|j                         s|j                         r%| * y wr)   )r  rv   r
  s     r'   r   zprepare.<locals>.<genexpr>  s'     v,IDT\\^dhdsdsdu4,Is   000*z)raw token escaped the one private handoff)5handoffr   r   r!   rQ  draftr  r   r  r   rt   r  rv   !prepare_rehearsal_customer_inviteBOT_USERNAMEr   rE  rZ   r   rp   r  r   r  rS   r?   r{   r   sessionr   r   r   rk  queryrg   r   
startswithr   r.   r9   rl  	isoformatr   r   rU  rb   r]  evidence_rootsortedrglobr`   rX   r   PermissionError)r^  Store
load_draftstate_dir_forr  r]   r  absentrp  
event_namer+  storepreparedevent_countledger_pathafterr  r   newtokenstokenr  r   	locationsr[   s                            r'   rm  rm    s   || 3 3 5:;;'1|$E:}tzz"Et||U-?-?@NFF())F*0&nT\\6R6Y6YJ"(nJJE'88@@Bt||VgGgFsFsFuVWWmDLL12::5|fn:o,,Z=aXYY .KK(EE dll%66UCe#mmo.od		o.=-2PPDEE??DLLNdiik6I6IE6QUZ6ZPQQ   5VJ%7!81!<<NOO!*-
g-D,1G8K[K[KfKf1f4-C
g
3x1}A

7+z9SVZZ=UYZ=Z[\\hx556<<TRVVW^_Ffd#s6{a'7vay?S?STZ?[ABB1IE  IeABi.>.>w.G$HH899;8K[K[KfKf#h6L6L%00::<(TG DLL'*
y
!#+_>OQWXbQcf,L 	0 	(A	
 	#vK1 	,Q 1Fq 	<&Qa 	:4 	h&&11 	Yx'7'7'B'B'I'I'KL 	H$$-- 0DYu||~E^ 	 *1 />x?T #4<<0& #DLL 12G  DLL'*	vD,>,>,D,DS,IvvD<<>\$%77$$T\\^4 w --/00JKKNu 	 / hH !/2 s1   BW W%-W*W*):W/W"/X Xc                    t                t        t         j                              }|d   D cg c]#  }|j	                  d       j
                  k(  s"|% }}t        |      dk7  s8|d   j	                  d       j                  k7  s|d   j	                  d      dk7  rt        d      t        t         j                        j                        }i t        d	      d
dt         j
                  j                                j                  d}t         j                  |        j                   ?t#        j$                   j                   d       t#        j&                   j                          	 |j)                  d j*                        }|j'                          |dk7  rt        d      t        t         j                              }t-         fd|d   D              }|j	                  d      }t/        |t0              rt        |      dk7  rt        d      |d   }	|	j	                  d      t2        k7  s,|	j	                  d      t2        k7  s|	j	                  d      dk7  rt        d      i t        d      ddt2        d j
                   j                  |j	                  d      t5        t         j                              dddd}
t         j6                  |
       |
S c c}w # |j'                          w xY w)Nr   r   rJ   r   r   r  rc  z-observe requires exact clean PREPARED bindingzobserve-readyREADYT)r   event_subscription_before_claimry  r      1ra  z2duplicate claim ledger writes observed at boundaryc              3  `   K   | ]%  }|j                  d       j                  k(  s"| ' yw)r   N)r   r   r   oner^  s     r'   r   zobserve.<locals>.<genexpr>  s(     ]0CGGL4IT__4\0s   #..r  z%accepted claim cardinality is not oneuser_idchat_idtopic_id0z,accepted claim is not exact actor private DMobservePASS_CLAIM_OBSERVEDF)r   accepted_start_claim_countr   
private_dmr   r   r  rZ  raw_getUpdatesdrop_pending_updatescursor_edits)r   r   r   r   r   r   r{   r   r!   r  rt   rU  r.   r9   r   readyready_fdrN   r|   rZ   rE  timeout_secondsnextrg   r   r   rb   r   )r^  r  r   matchesr+  r  r<  r  claimsclaimr   s   `          r'   r  r    s   ^DLL9:F &z 2` 2dhh|6LPTP_P_6_t 2G`
7|qGAJNN:6$--G7ST:>>ZaKbfpKpJKKN4<<0778Eb|O, bdh"+DOO,B,B,D"ESWS`S`bEDJJ&}} 
%
&&~t7K7KLzOPPN4<<89E]uZ0]]DXXm$Ffd#s6{a'7BCC1IEyyx'599Y+?8+KuyyYcOdhkOkIJJ^i( ^4Iij#4t==488G3DW_`noso{o{`|W}!&W\^G DLL'*N; a 	s   #K*K*5K/ /Lc                    t               \  }}}t        t         j                              }|d   D cg c]#  }|j	                  d       j
                  k(  s"|% }}t        |      dk7  s8|d   j	                  d       j                  k7  s|d   j	                  d      dk7  rt        d      t        j                         t        d	      j                  j                  |d   d
         j                         k  rt        d       | | j                              j                         }t         fd|D              }|j                   j"                  dk7  rt        d      i t%        d      ddd j
                   j                  dt'        t         j                              d}t)         j*                  |       |S c c}w )Nr   r   rJ   r   r   r  rc  zexpiry binding mismatchdatetimerl  z.canonical expiry unavailable before expires_atc              3  V   K   | ]   }|j                   j                   k(  s| " y wr)   )r   r  s     r'   r   zexpire.<locals>.<genexpr>  s!     Mx3>>T__+Lxs   ))r   zcanonical expiry failedexpirePASS_EXPIREDz!RoomBootstrapStore.expire_unbound)r   canonical_apiexpire_invocationsr   r   r  rZ  )rQ  r   r   r   r   r   r{   r   r!   r3  
__import__r  fromisoformat	timestampexpire_unboundr  r  r:   rU  rb   r   r   )	r^  r  _loadr  r  r   r  r   r   s	   `        r'   r  r    s   ",,E5-^DLL9:F &z 2` 2dhh|6LPTP_P_6_t 2G`
7|qGAJNN:6$--G7ST:>>ZaKbfpKp455yy{Z
+44BB71:lC[\ffhhKLL]4<<01@@BHMxMMDzz9$455\h' \>Tw%&dooSWS`S`!H^DLL=Y4Z\G DLL'*N as   #GGc                    t        j                  t              } | j                  dd      }dD ]  }|j	                  |      }|j                  dt        d       |j                  dt        d       |j                  d	t        d       |d
k(  rG|j                  dt        d       |j                  dt        d       |j                  dt               |dv r&|j                  dd       |j                  dd       |dk(  s|j                  dt        d       |j                  dt        d       |j                  dt               " | S )N)descriptionro   T)destrequired)dry-runverifyrm  r  r  z	--profile)typer  z--permissionz	--receiptrm  z--draftz	--handoffz--evidence-root)r  >   r  r  z--session-id)r  z
--sid-hashr  z--readyz--timeout-secondsg      ^@)r  defaultz
--ready-fd)	argparseArgumentParser__doc__add_subparsers
add_parseradd_argumentr   rI  rJ  )r  subr   commands       r'   parserr    sA   $$9F


Vd

;CE..&[tdC^$F[tdC9   E  4$ G  !2 >((  $ ?   =9   E  !45% P  C 8 F  Mr&   c            	        t               j                         } 	 t        | j                  | j                         | j                  dv rt        | | j                        }n$t        t        t        d| j                     |       }t        j                  j                  j                  t        | j                  |d   t        | j                        d             |d   dk(  rdS dS # t         t"        t$        t&        t(        t*        j,                  f$ r-}t        j.                  j                  d| d	       Y d }~yd }~ww xY w)
N>   r  r  )rm  r  r  r   )ro   r   r   r[  rw  r   zFAIL: r6   )r  
parse_argsr   
permissionro   r_  rm  r  r  sysstdoutbufferr|   r;   r]  r   r!   r!  
ValueErrorKeyErrorStopIterationr   
BadZipFilestderr)r^  r  ri   s      r'   mainr    s    8 D
DOOTYY/99--tTYY/F!(WOPTPYPYZ[_`F

	499xHXehimiuiuev*w xy8$.q5A5':xHZHZ[ 

6#b)*s   CC% #C% %-D?#D::D?__main__)r-   rH  rF  r]  )r:   r   rF  rH  )rE   zos.stat_resultrF  ztuple[int, ...])r[   r   rH   boolrF  rH  )r[   r   rF  r]  )r[   r   rH   r  rF  dict[str, Any])rM   )r[   r   ro   rJ  rF  rG  )r[   r   r:   r  rF  rG  )rF  rH  )rF  zdict[str, str])r[   r   ro   r]  rF  r  )r   r   rF  r  )r   r   rF  r   )r[   r   rF  r  r)   )r   r   r  z
str | NonerF  z%tuple[dict[str, Any], dict[str, Any]])rF  ztuple[Any, Any, Any])ro   r]  rF  r  )r^  argparse.Namespacero   r]  rF  r  )r^  r  rF  r  )rF  zargparse.ArgumentParser)rF  rJ  )_r  
__future__r   r  r  r*   r   importlib.utilr7   rN   r5  rS   r7  r  r3  r   pathlibr   typingr   urllib.parser   r   r   r   r   r   r   r   r   r   r   r   r  r   r   r   	frozensetr	  r'  r&  r%  r   getattrrQ   r   r   rt   HERErr   ROOTEVIDENCEr   r   RUNBOOK_ROOTr   r   r   r   r   r   r   r   r   RuntimeErrorr!   r.   r;   rF   r`   rb   rj   rp   r   r   r   r   r   r   r   r   r  r  r  r  rQ  rU  r_  rm  r  r  r  r  r"   
SystemExitr%   r&   r'   <module>r     s9   Y "       	    
     +N	QPU W ^ Z Z *Z BRAB	
,,\15
5H~&&||A((89DEHxx<<FF>>	EE!$EE 11 	 	 R&&
V NO	< 	+i>
 15 $8 .2 < <@<:R$ &c6`" "Jb
K\ F&, z
TV
 r&   