+
    4SsiÉ\  ã                   óF  € ^ RI HtHtHt ^ RIHt ^ RIHt ^ RIH	t	 ^ RIH
t
 ^ RIHt ^ RIt^ RIHtHtHt ^ RIt^ R	IHtHt  ! R
 R]4      tRR ltR tR tR tR t ! R R]R7      t ! R R]4      t ! R R4      t ! R R]4      t ! R R]4      t  ! R R]4      t!R# )é    )ÚdrsuapiÚmiscÚdrsblobs)ÚNet)Ú
ndr_unpack)Údsdb)Úwerror)ÚWERRORErrorN)ÚDRSUAPI_ATTID_nameÚ(DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V8Ú)DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V10)ÚABCMetaÚabstractmethodc                   ó0   a € ] tR t^#t o RtR tR tRtV tR# )ÚdrsExceptionzBase element for drs errorsc                ó   € Wn         R # ©N©Úvalue)Úselfr   s   &&Ú1/usr/lib/python3/dist-packages/samba/drs_utils.pyÚ__init__ÚdrsException.__init__&   s   € ØŽ
ó    c                ó(   € R V P                   ,           # )zdrsException: r   )r   s   &r   Ú__str__ÚdrsException.__str__)   s   € Ø $§*¡*Õ,Ð,r   r   N)	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r   Ú__static_attributes__Ú__classdictcell__©Ú__classdict__s   @r   r   r   #   s   ø‡ € Ù%ò÷-ð -r   r   c                ó*  € RpVP                  4       ^	8¼  d
   VR,          pVe   VRV  2,          pRV RV R2pMRV : RV: R2p \        P                  ! WQV4      p\        V4      w  rxYgT3#   \         d   p	\	        RT : R	T	: 24      hRp	?	ii ; i)
av  Make a DRSUAPI connection to the server.

:param server: the name of the server to connect to
:param lp: a samba line parameter object
:param creds: credential used for the connection
:param ip: Forced target server name
:return: A tuple with the drsuapi bind object, the drsuapi handle
            and the supported extensions.
:raise drsException: if the connection fails
Úsealz,printNz,target_hostname=zncacn_ip_tcp:Ú[Ú]zDRS connection to z	 failed: )Ú	log_levelr   Ú
drs_DsBindÚ	Exceptionr   )
ÚserverÚlpÚcredsÚipÚbinding_optionsÚbinding_stringÚdrsuapiBindÚdrsuapiHandleÚbindSupportedExtensionsÚes
   &&&&      r   Údrsuapi_connectr8   -   sµ   € ð €OØ	‡|�|ƒ~˜ÔØ˜8Õ#ˆð 
‚~ØÐ.¨v¨hÐ7Õ7ˆØ(¨¨¨A¨oÐ->¸aÐ@‰ð ó 39»/ÐJˆðLÜ—o’o n¸%Ó@ˆÜ3=¸kÓ3JÑ0ˆð Ð(?Ð@Ð@øô ô LÝÃÊÐJÓKÐKûðLús   Á$A/ Á/BÁ:BÂBc                ó&  € \         P                  ! 4       pW5n        \         P                  ! 4       pWVn        WFn        \        P                  ! V4      Vn         V P                  V^V4       R#   \         d   p\        RT,          4      hRp?ii ; i)a¾  Send DS replica sync request.

:param drsuapiBind: a drsuapi Bind object
:param drsuapi_handle: a drsuapi handle on the drsuapi connection
:param source_dsa_guid: the guid of the source dsa for the replication
:param naming_context: the DN of the naming context to replicate
:param req_options: replication options for the DsReplicaSync call
:raise drsException: if any error occur while sending and receiving the
    reply for the dsReplicaSync
zDsReplicaSync failed %sN)r   ÚDsReplicaObjectIdentifierÚdnÚDsReplicaSyncRequest1Únaming_contextÚoptionsr   ÚGUIDÚsource_dsa_guidÚDsReplicaSyncr-   r   )r4   Údrsuapi_handler@   r=   Ú
req_optionÚncÚreq1Úestrs   &&&&&   r   ÚsendDsReplicaSyncrG   M   sy   € ô 
×	*Ò	*Ó	,€BØ„Eä×(Ò(Ó*€DØÔØ„LÜŸ9š9 _Ó5€DÔð=Ø×!Ñ! .°!°TÖ:øÜô =ÜÐ4°tÕ;Ó<Ð<ûð=ús   ÁA. Á.BÁ9BÂBc                óÀ  € \         P                  ! 4       p^Vn        \         P                  ! 4       Vn        VP                  ;P
                  \         P                  ,          un        VP                  ;P
                  \         P                  ,          un        VP                  ;P
                  \         P                  ,          un        VP                  ;P
                  \         P                  ,          un        VP                  ;P
                  \         P                  ,          un        VP                  ;P
                  \         P                  ,          un        VP                  ;P
                  \         P                  ,          un        VP                  ;P
                  \         P                  ,          un        VP                  ;P
                  \         P                  ,          un        VP                  ;P
                  \         P                  ,          un        VP                  ;P
                  \         P                   ,          un        VP                  ;P
                  \         P"                  ,          un        VP                  ;P
                  \         P$                  ,          un        VP                  ;P
                  \         P&                  ,          un        VP                  ;P
                  \         P(                  ,          un        VP                  ;P
                  \         P*                  ,          un        VP                  ;P
                  \         P,                  ,          un        VP                  ;P
                  \         P.                  ,          un        VP                  ;P
                  \         P0                  ,          un        VP                  ;P
                  \         P2                  ,          un        VP                  ;P
                  \         P4                  ,          un        VP                  ;P
                  \         P6                  ,          un        VP                  ;P
                  \         P8                  ,          un        VP                  ;P
                  \         P:                  ,          un        VP                  ;P
                  \         P<                  ,          un        VP                  ;P
                  \         P>                  ,          un        VP                  ;P
                  \         P@                  ,          un        VP                  ;P
                  \         PB                  ,          un        V PE                  \F        PH                  ! \         PJ                  4      V4      w  r#W2P                  P
                  3# )z0make a DsBind call, returning the binding handle)&r   ÚDsBindInfoCtrÚlengthÚDsBindInfo28ÚinfoÚsupported_extensionsÚ DRSUAPI_SUPPORTED_EXTENSION_BASEÚ-DRSUAPI_SUPPORTED_EXTENSION_ASYNC_REPLICATIONÚ%DRSUAPI_SUPPORTED_EXTENSION_REMOVEAPIÚ&DRSUAPI_SUPPORTED_EXTENSION_MOVEREQ_V2Ú+DRSUAPI_SUPPORTED_EXTENSION_GETCHG_COMPRESSÚ%DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V1Ú4DRSUAPI_SUPPORTED_EXTENSION_RESTORE_USN_OPTIMIZATIONÚ'DRSUAPI_SUPPORTED_EXTENSION_KCC_EXECUTEÚ'DRSUAPI_SUPPORTED_EXTENSION_ADDENTRY_V2Ú4DRSUAPI_SUPPORTED_EXTENSION_LINKED_VALUE_REPLICATIONÚ%DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V2Ú8DRSUAPI_SUPPORTED_EXTENSION_INSTANCE_TYPE_NOT_REQ_ON_MODÚ'DRSUAPI_SUPPORTED_EXTENSION_CRYPTO_BINDÚ)DRSUAPI_SUPPORTED_EXTENSION_GET_REPL_INFOÚ-DRSUAPI_SUPPORTED_EXTENSION_STRONG_ENCRYPTIONÚ&DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V01Ú1DRSUAPI_SUPPORTED_EXTENSION_TRANSITIVE_MEMBERSHIPÚ+DRSUAPI_SUPPORTED_EXTENSION_ADD_SID_HISTORYÚ&DRSUAPI_SUPPORTED_EXTENSION_POST_BETA3Ú,DRSUAPI_SUPPORTED_EXTENSION_GET_MEMBERSHIPS2Ú(DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V6Ú)DRSUAPI_SUPPORTED_EXTENSION_NONDOMAIN_NCSr   Ú*DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V5Ú*DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V6Ú,DRSUAPI_SUPPORTED_EXTENSION_ADDENTRYREPLY_V3Ú*DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V7Ú)DRSUAPI_SUPPORTED_EXTENSION_VERIFY_OBJECTÚDsBindr   r?   ÚDRSUAPI_DS_BIND_GUID)ÚdrsÚ	bind_inforL   Úhandles   &   r   r,   r,   h   sP  € ä×%Ò%Ó'€IØ€IÔÜ×)Ò)Ó+€I„NØ‡N�N×'Ò'¬7×+SÑ+SÕSÕ'Ø‡N�N×'Ò'¬7×+`Ñ+`Õ`Õ'Ø‡N�N×'Ò'¬7×+XÑ+XÕXÕ'Ø‡N�N×'Ò'¬7×+YÑ+YÕYÕ'Ø‡N�N×'Ò'¬7×+^Ñ+^Õ^Õ'Ø‡N�N×'Ò'¬7×+XÑ+XÕXÕ'Ø‡N�N×'Ò'¬7×+gÑ+gÕgÕ'Ø‡N�N×'Ò'¬7×+ZÑ+ZÕZÕ'Ø‡N�N×'Ò'¬7×+ZÑ+ZÕZÕ'Ø‡N�N×'Ò'¬7×+gÑ+gÕgÕ'Ø‡N�N×'Ò'¬7×+XÑ+XÕXÕ'Ø‡N�N×'Ò'¬7×+kÑ+kÕkÕ'Ø‡N�N×'Ò'¬7×+ZÑ+ZÕZÕ'Ø‡N�N×'Ò'¬7×+\Ñ+\Õ\Õ'Ø‡N�N×'Ò'¬7×+`Ñ+`Õ`Õ'Ø‡N�N×'Ò'¬7×+YÑ+YÕYÕ'Ø‡N�N×'Ò'¬7×+dÑ+dÕdÕ'Ø‡N�N×'Ò'¬7×+^Ñ+^Õ^Õ'Ø‡N�N×'Ò'¬7×+YÑ+YÕYÕ'Ø‡N�N×'Ò'¬7×+_Ñ+_Õ_Õ'Ø‡N�N×'Ò'¬7×+[Ñ+[Õ[Õ'Ø‡N�N×'Ò'¬7×+\Ñ+\Õ\Õ'Ø‡N�N×'Ò'¬7×+[Ñ+[Õ[Õ'Ø‡N�N×'Ò'¬7×+]Ñ+]Õ]Õ'Ø‡N�N×'Ò'¬7×+]Ñ+]Õ]Õ'Ø‡N�N×'Ò'¬7×+_Ñ+_Õ_Õ'Ø‡N�N×'Ò'¬7×+]Ñ+]Õ]Õ'Ø‡N�N×'Ò'¬7×+\Ñ+\Õ\Õ'Ø—Z‘Z¤§	¢	¬'×*FÑ*FÓ GÈÓS�N€Tà—I‘I×2Ñ2Ð3Ð3r   c                ó¸  € \         P                  ! 4       p^Vn        . pV P                  4       pV P	                  V\
        P                  R. ROR7      pV FÚ  p\        VR,          ^ ,          4      pRV9   dN   VR,          ^ ,          p\        V4      \        P                  \        P                  ,          ,          '       d   Kp  RV9   d9   VR,          ^ ,          p\        V4      \        P                  ,          '       d   K¯  V P                  V4      p	VP                  \        V	4      4       KÜ  	  VP                  4        W!n        \#        V4      Vn        V# )z-get a list of attributes for RODC replicationzobjectClass=attributeSchemaÚlDAPDisplayNameÚsystemFlagsÚsearchFlags)ÚbaseÚscopeÚ
expressionÚattrs)ro   rp   rq   )r   ÚDsPartialAttributeSetÚversionÚget_schema_basednÚsearchÚldbÚSCOPE_SUBTREEÚstrÚintr   ÚDS_FLAG_ATTR_NOT_REPLICATEDÚDS_FLAG_ATTR_IS_CONSTRUCTEDÚSEARCH_FLAG_RODC_ATTRIBUTEÚget_attid_from_lDAPDisplayNameÚappendÚsortÚattidsÚlenÚ
num_attids)
ÚsamdbÚpartial_attribute_setr„   Ú	schema_dnÚresÚrÚldap_display_nameÚsystem_flagsÚsearch_flagsÚattids
   &         r   Ú"drs_get_rodc_partial_attribute_setr�   Ž   s0  € ä#×9Ò9Ó;ÐØ$%ÐÔ!à€Fð
 ×'Ñ'Ó)€IØ
�,‰,˜I¬S×->Ñ->Ø"?ò-ð ó .€Có
 ˆÜ Ð"3Õ 4°QÕ 7Ó8ÐØ˜AÔØ ! -Õ 0°Õ 3ˆLÜ�LÓ!¤T×%EÑ%EÜ%)×%EÑ%Eõ&F÷ Gô GáØ˜AÔØ˜]Õ+¨AÕ.ˆLÜ�<Ó ¤4×#BÑ#B×BÔBÙØ×4Ñ4Ð5FÓGˆØ�‰”c˜%“jÖ!ñ ð  ‡K�K„MØ#)Ô Ü'*¨6£{ÐÔ$Ø Ð r   c                ól   € VP                   V n         VP                  V n        VP                  V n        R# )z”
Copies the highwater mark by value, rather than by object reference. (This
avoids lingering talloc references to old GetNCChanges reply messages).
N)Útmp_highest_usnÚreserved_usnÚhighest_usn)ÚhwmÚnew_hwms   &&r   Údrs_copy_highwater_markr—   ´   s-   € ð
 "×1Ñ1€CÔØ×+Ñ+€CÔØ×)Ñ)€C†Or   c                   ót   a € ] tR t^¾t o ]V 3R lR l4       t]V 3R lR l4       t]V 3R lR l4       tRtV t	R# )	Údrs_ReplicatorImplBasec                ó   <€ V ^8„  d   QhRR/# )é   ÚreturnN© )Úformatr&   s   "€r   Ú__annotate__Ú#drs_ReplicatorImplBase.__annotate__À   s   ø€ ÷ ñ à	ñr   c                ó   € R # r   r�   ©r   r‡   ÚlevelÚctrÚschemaÚ	req_levelÚreqÚfirst_chunks   &&&&&&&&r   Úprocess_chunkÚ$drs_ReplicatorImplBase.process_chunk¿   s   € ñ r   c                ó    <€ V ^8„  d   QhRS[ /# ©r›   rœ   ©Úbool)rž   r&   s   "€r   rŸ   r    Å   s   ø€ ×,Ñ,¡4Ñ,r   c                ó   € R # r   r�   ©r   Úexts   &&r   Úsupports_extÚ#drs_ReplicatorImplBase.supports_extÄ   s   € Ù),r   c                ó    <€ V ^8„  d   QhRS[ /# r¬   r­   )rž   r&   s   "€r   rŸ   r    È   s   ø€ ×9Ñ9±Ñ9r   c                ó   € R # r   r�   ©r   r¦   r§   s   &&&r   Úget_nc_changesÚ%drs_ReplicatorImplBase.get_nc_changesÇ   s   € Ù69r   r�   N)
r   r   r    r!   r   r©   r²   r·   r#   r$   r%   s   @r   r™   r™   ¾   s5   ø‡ € Ø÷ó ðð ß,ó Ø,àß9ó Þ9r   r™   )Ú	metaclassc                   óP   a € ] tR t^Ët o R tR tV 3R lR ltV 3R lR ltRtV t	R# )	Údrs_ReplicatorImplc                óž  € \         P                   ! WV4      V n        \        V P                  4      w  V n        V n        \        W2R 7      V n        \        V\        P                  4      '       g   \        R4      hV\        P                  ! R4      8X  d   \        R4      hV P                  P                  WBV P                  V4      V n        R# ))r0   r/   z"Must supply GUID for invocation_idú$00000000-0000-0000-0000-000000000000zGMust not set GUID 00000000-0000-0000-0000-000000000000 as invocation_idN)r   rk   r,   Ú
drs_handleÚ_supports_extr   ÚnetÚ
isinstancer   r?   ÚRuntimeErrorÚreplicate_initÚreplication_state)r   r3   r/   r0   r‡   Úinvocation_ids   &&&&&&r   r   Údrs_ReplicatorImpl.__init__Ì   s’   € Ü—?’? >°uÓ=ˆŒÜ0:¸4¿8¹8Ó0DÑ-ˆŒ˜$Ô,Ü˜UÔ*ˆŒÜ˜-¬¯©×3Ò3ÜÐCÓDÐDØœDŸIšIÐ&LÓMÔMÜÐhÓiÐiØ!%§¡×!8Ñ!8¸ÀDÇHÁHÈmÓ!\ˆÖr   c           	     óX   € V P                   P                  V P                  W#WEVR7       R# )ú5Processes a single chunk of received replication data)r¥   r¦   r§   N)rÀ   Úreplicate_chunkrÄ   r¢   s   &&&&&&&&r   r©   Ú drs_ReplicatorImpl.process_chunkÖ   s+   € ð 	�‰× Ñ  ×!7Ñ!7¸Ø(.Èð 	!ö 	Nr   c                ó    <€ V ^8„  d   QhRS[ /# r¬   r­   )rž   r&   s   "€r   rŸ   Údrs_ReplicatorImpl.__annotate__Ü   s   ø€ ÷ (ñ (¡4ñ (r   c                ó(   € V P                   V,          # r   )r¿   r°   s   &&r   r²   Údrs_ReplicatorImpl.supports_extÜ   s   € Ø×!Ñ! CÕ'Ð'r   c                ó    <€ V ^8„  d   QhRS[ /# r¬   r­   )rž   r&   s   "€r   rŸ   rÌ   ß   s   ø€ ÷ Hñ H±ñ Hr   c                óN   € V P                   P                  V P                  W4      # r   )rk   ÚDsGetNCChangesr¾   r¶   s   &&&r   r·   Ú!drs_ReplicatorImpl.get_nc_changesß   s   € Ø�x‰x×&Ñ& t§¡¸	ÓGÐGr   )r¿   rk   r¾   rÀ   rÄ   N)
r   r   r    r!   r   r©   r²   r·   r#   r$   r%   s   @r   r»   r»   Ë   s'   ø‡ € ò]òN÷(ð (÷Hö Hr   r»   c                   óz   a € ] tR t^ãt o RtR t]R 4       t]R 4       tR t	R]
P                  RRRR3R	 ltR
tV tR# )Údrs_ReplicatorzDRS replication implementationc                ó,   € W n         Wn        ^ V n        R# )r   N)r‡   ÚreplÚ
more_flags)r   rÖ   r‡   s   &&&r   r   Údrs_Replicator.__init__æ   s   € ØŒ
ØŒ	ØˆŽr   c                ó¨   € V \         P                  8H  ;'       d9    \        VR 4      ;'       d%    VP                  \        P
                  ,          ^ 8H  # )r×   )r	   ÚWERR_DS_DRA_RECYCLED_TARGETÚhasattrr×   r   ÚDRSUAPI_DRS_GET_TGT©Ú
error_coder§   s   &&r   Ú_should_retry_with_get_tgtÚ)drs_Replicator._should_retry_with_get_tgtë   sQ   € ð œf×@Ñ@Ñ@÷ Dð DÜ˜˜\Ó*÷Dð Dà—‘¤'×"=Ñ"=Õ=À!ÑCð	Er   c                ó€   € V \         P                  8H  ;'       d%    VP                  \        P                  ,          ^ 8g  # )r   )r	   ÚWERR_DS_DRA_MISSING_PARENTÚreplica_flagsr   ÚDRSUAPI_DRS_GET_ANCrÝ   s   &&r   Ú%_should_calculate_missing_anc_locallyÚ4drs_Replicator._should_calculate_missing_anc_locallyö   s=   € ð œv×@Ñ@Ñ@÷ Gð GØ×"Ñ"¤W×%@Ñ%@Õ@ÀQÑFð	Hr   c                ó:  € \        4       pVP                  pVEe    VP                  \        VP                  P
                  P                  4      4       VP                  e«   VP                  \        P                  ! R4      8w  d†   \        VP                  4      V9  dl   \        P                  ! V P                  VP                  P
                  P                  4      pVP                  4       p\        RV RVP                   R24       VP                   pEK  R # )Nr½   zObject z with GUID z) was not sent by the server in this chunk)ÚsetÚfirst_objectÚaddr|   ÚobjectÚ
identifierÚguidÚparent_object_guidr   r?   rz   ÚDnr‡   r;   ÚparentÚprintÚnext_object)r   r¤   Ú
guids_seenÚobject_to_checkÚobj_dnÚ	parent_dns   &&    r   Ú_calculate_missing_anc_locallyÚ-drs_Replicator._calculate_missing_anc_locally  sê   € Ü“Uˆ
ð
 ×*Ñ*ˆàÓ)Ø�N‰Nœ3˜×5Ñ5×@Ñ@×EÑEÓFÔGà×1Ñ1Ò=Ø"×5Ñ5Ü—)’)ÐBÓCôDä�×9Ñ9Ó:À*ÔLÜŸš §
¡
¨O×,BÑ,B×,MÑ,M×,PÑ,PÓQ�Ø"ŸM™M›O�	Ü˜ 	˜{ð +Ø-×@Ñ@ÐAð BAðAô Bð .×9Ñ9‹Oñ *r   FNTc
           	     ó`  € V P                   P                  \        4      '       d*   ^
p
\        P                  ! 4       pV P
                  Vn        MTV P                   P                  \        4      '       d   ^p
\        P                  ! 4       pM^p
\        P                  ! 4       pW;n	        W+n
        \        P                  ! 4       Vn        WP                  n        Rp\        P                  ! 4       p^ Vn        ^ Vn        ^ Vn        V'       Egm   V P$                  P'                  V\(        P*                  R.R7      pRV^ ,          9   de   V^ ,          R,           FP  p\-        \.        P0                  V4      pVP2                  P                  V8X  g   K:  VP2                  P4                  pKR  	  \        P6                  ! 4       p^Vn        ^ Vn        ^ Vn        . p\>        P@                  ! V P$                  V P$                  PC                  4       4      pV FK  p\        PD                  ! 4       pVP                  Vn
        VP"                  Vn        VPG                  V4       KM  	  VVn$        \K        V4      Vn&        WÛn        WËn'        Ve   W{n(        MÝV\        PR                  8X  d	   ^ Vn(        MÀ\        PT                  \        PV                  ,          \        PX                  ,          \        PZ                  ,          \        P\                  ,          Vn(        V'       d)   V;PP                  \        P^                  ,          un(        M'V;PP                  \        P`                  ,          un(        V	'       d(   V;PP                  \        Pb                  ,          un(        RVn2        RVn3        W[n4        ^ Vn5        \m        VR4      '       d+   V'       g#   V'       d   \o        V P$                  4      Vn8        ^ p^ pRp V P                   Ps                  W«4      w  ppVPt                  f.   VPv                  ^ 8w  d   \y        RVPv                  ,          4      h V P                   P{                  V P$                  VVWJVV4       RpTTPv                  ,          p TTPŠ                  ,          pTPŽ                  ^ 8X  d    TT3# \‘        TP4                  TP’                  4       Kæ    \|         d±   pT P                  TP€                  ^ ,          T4      '       d<   \ƒ        R	4       T;P
                  \        P„                  ,          un        Rp Rp?EKU  T P‡                  TP€                  ^ ,          T4      '       d   \ƒ        R
4       T P‰                  T4       ThRp?ii ; i  \Œ         d     ELi ; i)zreplicate a single DNNÚrepsFrom)rr   rs   ru   i’  iÄ" rˆ   Tz6DsGetNCChanges: NULL first_object with object_count=%uz1Missing target object - retrying with DRS_GET_TGTz;Missing parent object - calculating missing objects locallyF)JrÖ   r²   r   r   ÚDsGetNCChangesRequest10r×   r   ÚDsGetNCChangesRequest8ÚDsGetNCChangesRequest5Údestination_dsa_guidÚsource_dsa_invocation_idr:   r=   r;   ÚDsReplicaHighWaterMarkr’   r“   r”   r‡   ry   rz   Ú
SCOPE_BASEr   r   ÚrepsFromToBlobr¤   ÚhighwatermarkÚDsReplicaCursorCtrExrw   Ú	reserved1Ú	reserved2r   Ú_dsdb_load_udv_v2Úget_default_basednÚDsReplicaCursorr‚   Úcursorsr…   ÚcountÚuptodateness_vectorrã   ÚDRSUAPI_EXOP_REPL_SECRETÚDRSUAPI_DRS_INIT_SYNCÚDRSUAPI_DRS_PER_SYNCrä   ÚDRSUAPI_DRS_NEVER_SYNCEDÚ$DRSUAPI_DRS_GET_ALL_GROUP_MEMBERSHIPÚ%DRSUAPI_DRS_SPECIAL_SECRET_PROCESSINGÚDRSUAPI_DRS_WRIT_REPÚDRSUAPI_DRS_SYNC_FORCEDÚmax_object_countÚmax_ndr_sizeÚextended_opÚ	fsmo_inforÛ   r�   rˆ   r·   ré   Úobject_countrÂ   r©   r
   rß   Úargsrñ   rÜ   rå   r÷   Úlinked_attributes_countÚAttributeErrorÚ	more_datar—   Únew_highwatermark)r   r;   rÿ   rþ   r¥   ÚexopÚrodcrã   Ú	full_syncÚsync_forcedr¦   r§   Úudvr•   rŠ   Úreps_from_packedÚreps_from_objÚ
cursors_v1Ú
cursors_v2Ú	cursor_v2Ú	cursor_v1Únum_objectsÚ	num_linksr¨   r£   r¤   r7   s   &&&&&&&&&&                 r   Ú	replicateÚdrs_Replicator.replicate  s€  € ð �9‰9×!Ñ!Ô"K×LÒLØˆIÜ×1Ò1Ó3ˆCØ!Ÿ_™_ˆC�NØ�Y‰Y×#Ñ#Ô$L×MÒMØˆIÜ×0Ò0Ó2‰CàˆIÜ×0Ò0Ó2ˆCà#7Ô Ø'?Ô$Ü$×>Ò>Ó@ˆÔØ "×ÑÔð ˆÜ×,Ò,Ó.ˆØˆÔØˆÔØˆŒçˆyØ—*‘*×#Ñ#¨´3·>±>Ø+5¨,ð $ó 8ˆCà˜S �VÔ#Ø(+¨A­¨z×(:Ð(:Ð$Ü$.¬x×/FÑ/FÐHXÓ$Y�MØ$×(Ñ(×AÑAÐE]Ö]Ø+×/Ñ/×=Ñ=šñ );ô
 ×.Ò.Ó0ˆCØˆCŒKØˆCŒMØˆCŒMàˆJÜ×/Ò/°·
±
Ø04·
±
×0MÑ0MÓ0OóQˆJã'�	Ü#×3Ò3Ó5�	Ø5>×5WÑ5W�	Ô2Ø(1×(=Ñ(=�	Ô%Ø×!Ñ! )Ö,ñ	 (ð %ˆCŒKÜ˜J›ˆCŒIàÔØ"%ÔàÒ$Ø -ÕØ”W×5Ñ5Ô5Ø !ˆCÕä!(×!>Ñ!>Ü!(×!=Ñ!=õ">ä!(×!<Ñ!<õ"=ô ")×!AÑ!Aõ"Bô ")×!MÑ!Mõ	"NˆCÔ÷
 Ø×!Ò!¤W×%RÑ%RÕRÖ!à×!Ò!¤W×%AÑ%AÕAÕ!çØ×Ò¤×!@Ñ!@Õ@Õà"ˆÔØ!ˆÔØŒØˆŒä�3Ð/×0Ò0¿ÇDÜ(JÈ4Ï:É:Ó(VˆCÔ%àˆØˆ	ØˆàØŸ9™9×3Ñ3°IÓC‰LˆU�CØ×ÑÒ'¨C×,<Ñ,<ÀÔ,AÜ"Ð#[Ð_b×_oÑ_oÕ#pÓqÐqðØ—	‘	×'Ñ'Ø—J‘J  s¨F¸sÀKôð(  ˆKØ˜3×+Ñ+Õ+ˆKðØ˜S×8Ñ8Õ8�	ð �}‰} Ô!Øð
 ˜YÐ'Ð'ô $ C×$5Ñ$5°s×7LÑ7LÖMøô= ô à×2Ñ2°1·6±6¸!µ9¸c×BÒBÜÐMÔNØ—N’N¤g×&AÑ&AÕA•Nð #'�KÞà×=Ñ=¸a¿f¹fÀQ½iÈ×MÒMÜÐWÔXà×7Ñ7¸Ô<Ø�ûðûô. "ô Úðús7   Ñ*S  ÒV Ó VÓ+AVÕ(VÕ8VÖVÖV-Ö,V-)r×   rÖ   r‡   )r   r   r    r!   r"   r   Ústaticmethodrß   rå   r÷   r   ÚDRSUAPI_EXOP_NONEr,  r#   r$   r%   s   @r   rÔ   rÔ   ã   s`   ø‡ € Ù(òð
 ñEó ðEð ñHó ðHò:ð2  W×%>Ñ%>ÀUØ $°À%÷A(ò A(r   rÔ   c                   ó6   a a€ ] tR tRt oRtV 3R ltRtVtV ;t# )Údrs_Replicatei�  zDRS replication callsc                ó@   <€ \        WW4V4      p\        SV `	  Wd4       R # r   )r»   Úsuperr   )r   r3   r/   r0   r‡   rÅ   rÖ   Ú	__class__s   &&&&&& €r   r   Údrs_Replicate.__init__   s   ø€ Ü! .°eÀMÓRˆÜ‰Ñ˜Ö%r   r�   )	r   r   r    r!   r"   r   r#   r$   Ú__classcell__)r4  r&   s   @@r   r1  r1  �  s   ù‡ € Ù÷&õ &r   r1  c                   óp   a € ] tR tRt o RtR tR t]R 4       tR t	R t
V 3R lR	 ltV 3R
 lR ltRtV tR# )Údrs_ReplicateRenameri¦  z,Uses DRS replication to rename the entire DBc                óT   € Wn         W n        W0n        \        P                  V n        R # r   )rÖ   Úold_base_dnÚnew_base_dnr   rÜ   r×   )r   rÖ   r:  r;  s   &&&&r   r   Údrs_ReplicateRenamer.__init__©  s"   € ØŒ	Ø&ÔØ&Ôô "×5Ñ5ˆŽr   c                óh   € \         P                  ! RV P                  ,          V P                  V4      # )z/Uses string substitution to replace the base DNz%s$)ÚreÚsubr:  r;  )r   Údn_strs   &&r   Ú	rename_dnÚdrs_ReplicateRenamer.rename_dn´  s&   € ä�vŠv�e˜d×.Ñ.Õ.°×0@Ñ0@À&ÓIÐIr   c                óD  € V P                   P                   F…  pVP                  \        8X  g   K  \        P
                  ! WP                  P                  4      pVP                  4       pVP                  R4      VP                  P                  ^ ,          n        K‡  	  R# )z3Updates the 'name' attribute for the base DN objectz	utf-16-leN)Úattribute_ctrÚ
attributesr�   r   rz   rï   rì   r;   Úget_rdn_valueÚencodeÚ	value_ctrÚvaluesÚblob)Úbase_objr‡   ÚattrÚbase_dnÚnew_names   &&   r   Úupdate_name_attrÚ%drs_ReplicateRenamer.update_name_attr¸  so   € ð ×*Ñ*×5Ô5ˆDØ�z‰zÔ/Ö/ÜŸ&š& ×(;Ñ(;×(>Ñ(>Ó?�Ø"×0Ñ0Ó2�Ø08·±ÀÓ0L�—‘×%Ñ% aÕ(Ö-ó	 6r   c                óX  € VP                   P                  pV P                  VP                   P                  4      VP                   n        \        RV: RVP                   P                  : 24       VP                   P                  V P                  8X  d   V P                  W4       R# R# )z1Renames the first/top-level object in a partitionzRenaming partition z --> N)rì   r;   rA  rñ   r;  rO  )r   Ú	first_objr‡   Úold_dns   &&& r   Úrename_top_level_objectÚ,drs_ReplicateRenamer.rename_top_level_objectÁ  s~   € à×%Ñ%×(Ñ(ˆØ"&§.¡.°×1EÑ1E×1HÑ1HÓ"Iˆ	×ÑÔÝ³¸	×8LÑ8L×8OÓ8OÐPÔQð ×Ñ×"Ñ" d×&6Ñ&6Ô6Ø×!Ñ! )Ö3ñ 7r   c           	     óL  € VP                   '       d5   V P                  VP                   P                  4      VP                   n        V'       d8   VP                  ^ 8w  d'   V P	                  VP
                  P                  V4       V P                  P                  WW4WVV4       R# )rÈ   N)	r=   rA  r;   r  rT  ré   rë   rÖ   r©   r¢   s   &&&&&&&&r   r©   Ú"drs_ReplicateRenamer.process_chunkÌ  s{   € ð
 ××ÐØ$(§N¡N°3×3EÑ3E×3HÑ3HÓ$IˆC×ÑÔ!÷ ˜3×+Ñ+¨qÔ0Ø×(Ñ(¨×)9Ñ)9×)@Ñ)@À%ÔHð 	�	‰	×Ñ ¨c¸9È;ÖWr   c                ó    <€ V ^8„  d   QhRS[ /# r¬   r­   )rž   r&   s   "€r   rŸ   Ú!drs_ReplicateRenamer.__annotate__Ü  ó   ø€ ÷ +ñ +¡4ñ +r   c                ó8   € V P                   P                  V4      # r   ©rÖ   r²   r°   s   &&r   r²   Ú!drs_ReplicateRenamer.supports_extÜ  ó   € Ø�y‰y×%Ñ% cÓ*Ð*r   c                ó    <€ V ^8„  d   QhRS[ /# r¬   r­   )rž   r&   s   "€r   rŸ   rY  ß  ó   ø€ ÷ 8ñ 8±ñ 8r   c                ó8   € V P                   P                  W4      # r   ©rÖ   r·   r¶   s   &&&r   r·   Ú#drs_ReplicateRenamer.get_nc_changesß  ó   € Ø�y‰y×'Ñ'¨	Ó7Ð7r   )r×   r;  r:  rÖ   N)r   r   r    r!   r"   r   rA  r.  rO  rT  r©   r²   r·   r#   r$   r%   s   @r   r8  r8  ¦  sH   ø‡ € Ù6ò	6òJð ñMó ðMò	4òX÷ +ð +÷8ö 8r   r8  c                   óX   a € ] tR tRt o 0 R
mtR tR tV 3R lR ltV 3R lR ltRt	V t
R	# )Údrs_SecretFilteriã  c                ó   € Wn         R # r   ©rÖ   )r   rÖ   s   &&r   r   Údrs_SecretFilter.__init__î  s   € ØŽ	r   c           	     óÜ  aa€ R V3R lloR V3R llpTp	VP                   p
RpV
Ee¥   Rp\        4       pV
P                  P                  P                   Fž  pVP
                  \        P                  8X  g   K$  VP                  P                  '       g   KB  SP                  \        P                  VP                  P                  ^ ,          P                  RR7      4      pSP                  V4      p M	  WÀP                   9   d>   V
P"                  p
V'       d   W©n         MW©n        V;P$                  ^,          un        EK   \'        WŠP                  P                  P                  4       FI  pSP)                  VP
                  4      pWý9   d   \+        R	V R
V R24       K8  ^ VP                  n	        KK  	  T
p	V
P"                  p
RpEK©  V P,                  P/                  SW#WEWg4       R# )rÈ   c                óD   € V ^8„  d   QhR\         P                  R\        /# ©r›   rL  rœ   )r   ÚDsReplicaAttributer}   )rž   s   "r   rŸ   Ú4drs_SecretFilter.process_chunk.<locals>.__annotate__ô  s$   € ÷ 	Iñ 	I¤'×"<Ñ"<ð 	IÄñ 	Ir   c                 ó\   <€ SP                  V P                  4      pSP                  V4      # r   )Úget_lDAPDisplayName_by_attidr�   Ú$get_searchFlags_from_lDAPDisplayName)rL  Ú	attr_namer‡   s   & €r   Úget_searchFlagsÚ7drs_SecretFilter.process_chunk.<locals>.get_searchFlagsô  s(   ø€ Ø×:Ñ:¸4¿:¹:ÓFˆIØ×=Ñ=¸iÓHÐHr   c                óD   € V ^8„  d   QhR\         P                  R\        /# rl  )r   rm  r®   )rž   s   "r   rŸ   rn  ø  s$   € ÷ 	Iñ 	I¤'×"<Ñ"<ð 	IÄñ 	Ir   c                 ó>   <€ S! V 4      \         P                  ,          # r   )r   ÚSEARCH_FLAG_CONFIDENTIAL)rL  rs  s   &€r   Úis_confidentialÚ7drs_SecretFilter.process_chunk.<locals>.is_confidentialø  s   ø€ Ù" 4Ó(¬4×+HÑ+HÕHÐHr   TNÚlittle)Ú	byteorderz	Warning: z is a required attribute of u$    â€” not filtering with --no-secretsF)ré   rè   rë   rD  rE  r�   r   ÚDRSUAPI_ATTID_objectClassrH  Ú
num_valuesÚ#get_lDAPDisplayName_by_governsID_idr}   Ú
from_bytesrI  rJ  Ú%get_must_contain_from_lDAPDisplayNameÚobject_classes_to_filter_outrò   r  Úfilterrp  rñ   rÖ   r©   )r   r‡   r£   r¤   r¥   r¦   r§   r¨   rx  Úprev_objÚobjÚfirstÚobject_classÚmust_containrL  rr  rs  s   &f&&&&&&        @r   r©   Údrs_SecretFilter.process_chunkñ  s¦  ù€ ÷	Ið 	I÷	Ið 	Ið ˆØ×ÑˆØˆØ‹oØˆLÜ›5ˆLØŸ
™
×0Ñ0×;Ô;�à—J‘J¤'×"CÑ"CÖCØŸ™×1×1Ò1à#(×#LÑ#LÜŸ™Ø ŸN™N×1Ñ1°!Õ4×9Ñ9ÀXð 'ó ó$�Lð
 $)×#NÑ#NØ$ó$�Lñ ñ <ð ×@Ñ@Ô@Ø—o‘o�ßØ,/Õ)à+.Ô(à× Ò  AÕ%Õ Úä˜·
±
×0HÑ0H×0SÑ0SÖT�Ø!×>Ñ>¸t¿z¹zÓJ�	ØÔ,ÜØ# I ;Ð.JÈ<È.ð Y>ð ?öð
 12�D—N‘NÖ-ñ Uð ˆHØ—/‘/ˆCØ‹Eð 	�	‰	×Ñ  u°6ÀcÖWr   c                ó    <€ V ^8„  d   QhRS[ /# r¬   r­   )rž   r&   s   "€r   rŸ   Údrs_SecretFilter.__annotate__+  rZ  r   c                ó8   € V P                   P                  V4      # r   r\  r°   s   &&r   r²   Údrs_SecretFilter.supports_ext+  r^  r   c                ó    <€ V ^8„  d   QhRS[ /# r¬   r­   )rž   r&   s   "€r   rŸ   rŠ  .  r`  r   c                ó8   € V P                   P                  W4      # r   rb  r¶   s   &&&r   r·   Údrs_SecretFilter.get_nc_changes.  rd  r   rh  N>   úmsKds-ProvRootKeyúmsTPM-InformationObjectúmsFVE-RecoveryInformation)r   r   r    r!   r�  r   r©   r²   r·   r#   r$   r%   s   @r   rf  rf  ã  s-   ø‡ € ò
$Ð òò8X÷t+ð +÷8ö 8r   rf  r   )"Úsamba.dcerpcr   r   r   Ú	samba.netr   Ú	samba.ndrr   Úsambar   r	   r
   rz   Úsamba.dcerpc.drsuapir   r   r   r>  Úabcr   r   r-   r   r8   rG   r,   r�   r—   r™   r»   rÔ   r1  r8  rf  r�   r   r   Ú<module>r™     s­   ð÷( 1Ñ 0Ý Ý  Ý Ý Ý ã 
÷Mñ Mó 
ß 'ô-�9ô -ôAò@=ò6#4òL#!òL*ô
: wõ 
:ôHÐ/ô H÷0w(ñ w(ôt&�Nô &ô:8Ð1ô :8ôzL8Ð-ö L8r   