+
    4Ssi<  ã                   ó”   € ^ RI t ^ RIt^ RIHtHt ^ RIHtHt ^ RIH	t	 ^ RI
Ht ^ RIHt R tR tR	 tR
 tR tR tR tR tRR ltR# )é    N)Ú
SCOPE_BASEÚLdbError)Únttime2unixÚdsdb)ÚCommandError)ÚSamDB)ÚKCCc                ó   € \        \        P                  ! 4       4      p\        VRR7      pVP                  WV4       VP	                  4       p\        V4      p\        V4      \        V4      8w  d   \        R\        P                  R7       WF3# )z>Get a readonly KCC object and the list of DSAs it knows about.T)ÚreadonlyzThere seem to be duplicate dsas©Úfile)
ÚintÚtimer	   Ú
load_samdbÚ	list_dsasÚsetÚlenÚprintÚsysÚstderr)ÚurlÚlpÚcredsÚunix_nowÚkccÚdsa_listÚdsass   &&&    Ú4/usr/lib/python3/dist-packages/samba/uptodateness.pyÚget_kcc_and_dsasr      sg   € ä”4—9’9“;Ó€HÜ
ˆh Ô
&€CØ‡N�N�3˜EÔ"à�}‰}‹€HÜˆx‹=€DÜ
ˆ4ƒy”C˜“MÔ!ÜÐ/´c·j±jÕAàˆ9Ðó    c                óò   € V P                  4       pRVR\        V P                  4       4      RRV P                  4       ,          RRV,          RRV,          /p/ pVP                  4        F	  w  rEWCV&   K  	  W#3# )	zKGenerate dictionaries mapping short partition names to the
appropriate DNs.ÚDOMAINÚCONFIGURATIONÚSCHEMAzCN=Schema,%sÚ	DNSDOMAINzDC=DomainDnsZones,%sÚ	DNSFORESTzDC=ForestDnsZones,%s)Ú	domain_dnÚstrÚget_config_basednÚitems)ÚsamdbÚbase_dnÚshort_to_longÚlong_to_shortÚsÚls   &     r   Úget_partition_mapsr1   -   s‡   € ð �o‰oÓ€Gà�'Øœ˜U×4Ñ4Ó6Ó7Ø�. 5×#:Ñ#:Ó#<Õ<ØÐ+¨gÕ5ØÐ+¨gÕ5ð€Mð €MØ×#Ñ#Ö%‰ˆØ�aÓñ &ð Ð'Ð'r    c                 ó˜   € VeF   \        V 4      w  r#VP                  VP                  4       V4      pW9  d   \        RV,          4      hV# )Nzunknown partition %s)r1   ÚgetÚupperr   )r+   ÚpartÚshort_partitionsÚlong_partitionss   &&  r   Úget_partitionr8   @   sL   € ð ÒÜ,>¸uÓ,EÑ)ÐØ×#Ñ# D§J¡J£L°$Ó7ˆØÔ&ÜÐ5¸Õ<Ó=Ð=Ø€Kr    c           	     ó  € . pV P                  4       p\        P                  ! W4       F¾  p\        VP                  4      pV P                  VRV,          RR.R7      p \        V^ ,          R,          ^ ,          4      pVP                  R^4      w  r‰TR8w  d   \        RT,          4      hTP                  T	T\        TP                  4      \        TP                  4      34       KÀ  	  V#   \         d   p
 Rp
?
KÕ  Rp
?
ii ; i)	z3This finds the uptodateness vector in the database.z)(&(invocationId=%s)(objectClass=nTDSDSA))ÚdistinguishedNameÚinvocationId)ÚbaseÚ
expressionÚattrsÚ,NzCN=NTDS Settingsz!Expected NTDS Settings DN, got %s)r)   r   Ú_dsdb_load_udv_v2r(   Úsource_dsa_invocation_idÚsearchÚsplitÚ
IndexErrorr   Úappendr   Úhighest_usnr   Úlast_sync_success)r+   ÚdnÚcursorsÚ	config_dnÚcÚinv_idÚresÚsettings_dnÚprefixÚdsa_dnÚes   &&         r   Úget_utdvrR   K   s
  € à€GØ×'Ñ'Ó)€IÜ×#Ò# EÖ.ˆÜ�Q×/Ñ/Ó0ˆØ�l‰l 	ð(@ØBHõ(Ià"5°~Ð!Fð ó Hˆð	Ü˜c !�fÐ%8Õ9¸!Õ<Ó=ˆKØ(×.Ñ.¨s°AÓ6‰NˆFð Ð'Ô'ÜÐBØ*õ +ó ,ð ,ð 	�‰˜ØÜ˜AŸM™MÓ*Ü# A×$7Ñ$7Ó8ð:ö 	;ñ /ð& €Nøô ô 	Ýûð	ús   Á4C-Ã-DÃ>Dc                 ó¶   € V P                  R \        R.R7      p\        V^ ,          R,          ^ ,          4      p\        \        P                  ! 4       4      pW#3# )Ú ÚhighestCommittedUSN)r<   Úscoper>   )rB   r   r   r   )r+   rM   ÚusnÚnows   &   r   Úget_own_cursorrY   e   sS   € Ø
�,‰,˜BÜ'Ø3Ð4ð ó 6€Cô ˆc�!�fÐ*Õ+¨AÕ.Ó
/€CÜ
Œd�iŠi‹kÓ
€CØˆ:Ðr    c           	      ó”  € / pV F‚  pV P                   P                  V\        R .R7      pRV^ ,          R ,          ^ ,          ,          p \        W„VR7      p	\	        W’4      p
\        V	4      w  r¼Wk/pV
 F  w  rïppVWÞ&   K  	  YÕT&   K„  	  V#   \         d0   p\        RT: RT: R2\        P                  R7        Rp?K½  Rp?ii ; i)	ÚdNSHostName)rV   r>   z	ldap://%s)r   Úcredentialsr   zCould not contact z (Ú)r   N)
r+   rB   r   r   rR   rY   r   r   r   r   )Ú	local_kccr   Úpart_dnr   r   Ú
utdv_edgesrP   rM   Úldap_urlr+   rI   Úown_usnÚown_timeÚremotesrH   ÚguidrW   ÚtrQ   s   &&&&&              r   Úget_utdv_edgesrg   n   sÕ   € ð €JÛˆØ�o‰o×$Ñ$ VÜ+5Ø,9¨?ð %ó <ˆð   Q¥¨Õ!6°qÕ!9Õ9ˆð
	Ü˜h¸bÔAˆEÜ˜uÓ.ˆGÜ .¨uÓ 5ÑˆGØÐ'ˆGÛ$+Ñ �˜#˜qØ!�“ñ %,ð %�6Óñ! ð" Ðøô ô 	Ý³»1Ð=Ü—z‘zõ#åûð	ús   Á
9BÂCÂ$CÃCc                 óv  € / pV F–  p W,          V,          p/ pWbV&   V Fw  pWp9   dM   W0V,          9   d   W@V,          V,          ,
          pW†V&   K2  \        RV RV 2\        P                  R7       KU  \        RV,          \        P                  R7       Ky  	  K˜  	  V#   \          d   p^ p Rp?L›Rp?ii ; i)r   NzMissing dn z from UTD vector for dsa r   z"missing dn %s from UTD vector list)ÚKeyErrorr   r   r   )	r`   r   Ú	distancesÚdn1ÚpeakrQ   ÚdÚdn2Údists	   &&       r   Úget_utdv_distancesrp   ‡   s¹   € Ø€IÛˆð	Ø•? 3Õ'ˆDð ˆØ�#‰ÛˆCØÔ Ø S�/Ô)Ø¨S¥/°#Õ"6Õ6�DØ!�c“Fä˜K¨ uÐ,EÀcÀUÐKÜ"Ÿz™z÷+ô Ð:¸SÕ@ÜŸ:™:÷'ó ñ ð$ Ðøô ô 	Ø�Dûð	ús   ‰B!Â!B8Â,B3Â3B8c                 ó|   € ^ pV P                  4        F%  pVP                  4        F  p\        W4      pK  	  K'  	  V# )r   )ÚvaluesÚmax)rj   Úmax_distanceÚvectorÚdistances   &   r   Úget_utdv_max_distancerw   ž   s<   € Ø€LØ×"Ñ"Ö$ˆØŸ™žˆHÜ˜|Ó6ŠLó (ñ %ð Ðr    c                 ó’  € ^ ;r#Rp. pV P                  4        F7  w  rgVP                  4        F  w  r‰Wh8w  g   K  VP                  V	4       K   	  K9  	  V'       dÀ   VP                  4        VR,          p\        V4      p
V
^,          ^ 8X  dA   V
^,          ^,
          pW[,          W[^,           ,          ,           R,          p\	        V^4      pM#V
^,
          ^,          pW[,          p\        V4      p\        V 4      \        V 4      ^,
          ,          pWÊ,
          pRVRVRV/pV'       d   V Uu/ uF  qîWÞ,          bK  	  up# V# u upi )r   g        g       @ÚmaximumÚmedianÚfailureéÿÿÿÿ)r*   rE   Úsortr   ÚroundÚfloat)rj   Úfiltersry   r{   rz   rr   Údn_outerru   Údn_innerrv   ÚlengthÚindexÚexpected_lengthÚsummaryÚkeys   &&             r   Úget_utdv_summaryrˆ   ¦   s%  € ØÐ€GØ€FØ€Fà%ŸO™OÖ-ÑˆØ"(§,¡,¦.ÑˆHØÖ#Ø—‘˜hÖ'ó #1ñ .÷
 Ø�‰ŒØ˜•*ˆÜ�V“ˆØ�A�:˜Œ?Ø˜A•I •MˆEØ•m f°1­W¥oÕ5°sÕ:ˆFÜ˜6 1Ó%‰Fà˜a•Z !•OˆEØ•]ˆFÜ˜6“]ˆFä˜i›.¬C°	«N¸QÕ,>Õ?ˆØ!Õ*ˆð 	�7Ø�&Ø�7ð€G÷ Ù-4Ó5©W c�W•\Ò!©WÑ5Ð5àˆùò 6s   Ä.E)N)r   r   Úldbr   r   Úsambar   r   Úsamba.netcmdr   Úsamba.samdbr   Ú	samba.kccr	   r   r1   r8   rR   rY   rg   rp   rw   rˆ   © r    r   Ú<module>r�      sI   ðó( Û ç $ç #Ý %Ý Ý òò(ò&òò4òò2ò.ö#r    