ó
    cÛ–ip§ ã                   óä  • S SK r S SKrS SKJr  S SKrS SKrS SKJs  J	r
  S SKrS SKrS SKJr  S SKJrJrJrJr  S SKJr  S SKJr  S SKJr  S SKJrJr  S SKJr  S SKrS SKrS S	KJrJ r J!r!  S S
K"J#r#  S SKJ$r$  S SK%J&r'  S SKJ(r(  S SK)r)S SK*J+r+  S SKJ,r,  S SK-J.r.  S SK/J0r0J1r1J2r2  S SK3J4r4  S SK5J6r6J7r7J8r8J9r9  S SK:J;r;  S SK<J=r=  S SK>J?r?  S SKJ@r@  S SK"JArA  S SKBJCrCJDrD  S SKEJFrF  S SKGJHrHJIrI  S SKJJKrKJLrL  S SKMrMS SKNrNS SKOJPrP  S SKQJRrRJSrSJTrTJUrUJVrV  S SKWJXrXJYrYJZrZ  S S K[J\r\  S S!K]J^r^  S S"K_J`r`JaraJbrb  S# rcS$ rdS% reS& rfSªS' jrgSSS\RÐ                  \RÒ                  -  \RÔ                  -  \RÖ                  -  4S( jrlS) rmS* rnS+ ro\Rà                  4S, jrqS- rr\'Ræ                  \'Rè                  -  \'Rê                  -  \'Rì                  -  rwS. rx  S«S/ jry " S0 S1\5      rz " S2 S3\z5      r{ " S4 S5\z5      r| " S6 S7\z5      r} " S8 S9\z5      r~ " S: S;\z5      r " S< S=\z5      r€ " S> S?\z5      r� " S@ SA\z5      r‚ " SB SC\z5      rƒ " SD SE\z5      r„ " SF SG\z5      r… " SH SI\z5      r† " SJ SK\z5      r‡ " SL SM\z5      rˆ " SN SO\ˆ5      r‰ " SP SQ\z5      rŠ " SR SS\z5      r‹ " ST SU\5      rŒ " SV SW\z5      r� " SX SY\5      rŽ " SZ S[\z5      r� " S\ S]\5      r� " S^ S_\z5      r‘ " S` Sa\5      r’ " Sb Sc\5      r“ " Sd Se\5      r” " Sf Sg\z5      r• " Sh Si\5      r– " Sj Sk\5      r— " Sl Sm\z5      r˜ " Sn So\z5      r™ " Sp Sq\5      rš " Sr Ss\5      r› " St Su\z5      rœ " Sv Sw\z5      r� " Sx Sy\5      rž " Sz S{\5      rŸ " S| S}\z5      r  " S~ S\5      r¡ " S€ S�\5      r¢ " S‚ Sƒ\z5      r£ " S„ S…\z5      r¤ " S† S‡\5      r¥ " Sˆ S‰\5      r¦ " SŠ S‹\5      r§ " SŒ S�\z5      r¨ " SŽ S�\5      r© " S� S‘\5      rª " S’ S“\z5      r« " S” S•\5      r¬ " S– S—\5      r­ " S˜ S™\z5      r® " Sš S›\z5      r¯ " Sœ S�\5      r° " Sž SŸ\5      r± " S  S¡\5      r² " S¢ S£\5      r³ " S¤ S¥\5      r´ " S¦ S§\5      rµ " S¨ S©\5      r¶g)¬é    N)Úsystem_session)ÚCommandÚCommandErrorÚOptionÚSuperCommand)ÚSamDB)Údsdb)Úsecurity)Ú
ndr_unpackÚndr_pack)Úpreg)Ú AUTH_SESSION_INFO_DEFAULT_GROUPSÚAUTH_SESSION_INFO_AUTHENTICATEDÚ#AUTH_SESSION_INFO_SIMPLE_PRIVILEGES)Únetcmd_finddc)Úpolicy)Úlibsmb_samba_internal)ÚNTSTATUSError)Údsacl2fsacl)Únbt)ÚNet)ÚGPParserÚGPNoParserExceptionÚGPGeneralizeException)ÚGPPolParser)ÚGPIniParserÚGPTIniParserÚGPFDeploy1IniParserÚGPScriptsIniParser)ÚGPAuditCsvParser)ÚGptTmplInfParser)ÚGPAasParser)Úparam)Úattr_default)Ú	get_bytesÚ
get_string)ÚConfigParser)ÚStringIOÚBytesIO)Ú	calc_modeÚstat_from_mode)Ústr_regtype)ÚNT_STATUS_OBJECT_NAME_INVALIDÚNT_STATUS_OBJECT_NAME_NOT_FOUNDÚNT_STATUS_OBJECT_PATH_NOT_FOUNDÚNT_STATUS_OBJECT_NAME_COLLISIONÚNT_STATUS_ACCESS_DENIED)Úcreate_directory_hierÚsmb_connectionÚ
get_gpo_dn)ÚRegistryGroupPolicies)ÚREG_MULTI_SZ)Úregister_gp_extensionÚlist_gp_extensionsÚunregister_gp_extensionc                 ój   • [         R                  " U 5      nU(       d  SnU$ SR                  U5      nU$ )zreturn gpo flags stringÚNONEÚ )r   Úget_gpo_flagsÚjoin)ÚvalueÚflagsÚrets      Ú2/usr/lib/python3/dist-packages/samba/netcmd/gpo.pyÚgpo_flags_stringrC   [   s5   € ä× Ò  Ó'€EÞØˆð €Jð �h‰h�u‹oˆØ€Jó    c                 ój   • [         R                  " U 5      nU(       d  SnU$ SR                  U5      nU$ )zreturn gplink options stringr;   r<   )r   Úget_gplink_optionsr>   )r?   ÚoptionsrA   s      rB   Úgplink_options_stringrH   e   s6   € ä×'Ò'¨Ó.€GÞØˆð €Jð �h‰h�wÓˆØ€JrD   c                 óV  • / nU R                  5       S:X  a  U$ U R                  S5      nU Hy  nU(       d  M  UR                  S5      n[        U5      S:w  d  US   R                  S5      (       d  [	        SU-  5      eUR                  US   SS	 [        US
   5      S.5        M{     U$ )z.parse a gPLink into an array of dn and optionsÚ Ú]Ú;é   r   z[LDAP://zBadly formed gPLink '%s'é   Né   ©ÚdnrG   )ÚstripÚsplitÚlenÚ
startswithÚRuntimeErrorÚappendÚint)ÚgplinkrA   ÚaÚgÚds        rB   Úparse_gplinkr]   o   s�   € à
€Cà‡|�|ƒ~˜ÓØˆ
à�‰�SÓ€AÛˆÞÙØ�G‰G�C‹LˆÜˆq‹6�Q‹;˜a ™dŸo™o¨j×9Ñ9ÜÐ9¸AÑ=Ó>Ð>Ø�
‰
˜!˜A™$˜q˜r˜(¬s°1°Q±4«yÑ9Ö:ñ ð €JrD   c                 ó6   • SR                  S U  5       5      nU$ )z4Encode an array of dn and options into gPLink stringrJ   c              3   ó<   #   • U  H  nS US   US   4-  v •  M     g7f)z[LDAP://%s;%d]rQ   rG   N© )Ú.0r[   s     rB   Ú	<genexpr>Ú encode_gplink.<locals>.<genexpr>ƒ   s#   é € ÐMÂfÀÐ" a¨¡g¨q°©|Ð%<Ö<Âfùs   ‚)r>   )ÚgplistrA   s     rB   Úencode_gplinkre   �   s   € à
�'‰'ÑMÁfÓMÓ
M€CØ€JrD   c                 óp   • Uc  Uc   [        X5      nSU-   nU$ ! [         a  n[        SU5      eSnAff = f)zfIf URL is not specified, return URL for writable DC.
If dc is provided, use that to construct ldap URLNzCould not find a DC for domainúldap://)r   Ú	ExceptionrV   )ÚlpÚcredsÚurlÚdcÚes        rB   Údc_urlrn   ‡   sP   € ð �{Ø‰:ðHÜ" 2Ó-�ð ˜"‰nˆØ€Jøô ó HÜ"Ð#CÀQÓGÐGûðHús   ˆ š
5¤0°5c                 ó¶  • U R                  5       nUR                  [        R                  " U S5      5        UnSn[        R                  nUb  S[        R
                  " U5      -  nUb  S[        R
                  " U5      -  nUb  Un[        R                  n U R                  XhU/ SQSU-  /S9n	U	$ ! [         a  n
Ub  S	U-  nOS
n[        Xº5      eSn
A
ff = f)z0Get GPO information using gpo, displayname or dnzCN=Policies,CN=Systemz"(objectClass=groupPolicyContainer)Nz.(&(objectClass=groupPolicyContainer)(name=%s))z5(&(objectClass=groupPolicyContainer)(displayname=%s)))ÚnTSecurityDescriptorÚversionNumberr@   ÚnameÚdisplayNameÚgPCFileSysPathÚgPCMachineExtensionNamesÚgPCUserExtensionNamesúsd_flags:1:%d)ÚbaseÚscopeÚ
expressionÚattrsÚcontrolsz!Cannot get information for GPO %szCannot get information for GPOs)
Úget_default_basednÚ	add_childÚldbÚDnÚSCOPE_ONELEVELÚbinary_encodeÚ
SCOPE_BASEÚsearchrh   r   )ÚsamdbÚgpoÚdisplaynamerQ   Úsd_flagsÚpolicies_dnÚbase_dnÚsearch_exprÚsearch_scopeÚmsgrm   Úmesgs               rB   Úget_gpo_infor�   •   sô   € ð ×*Ñ*Ó,€KØ×Ñœ#Ÿ&š& Ð(?Ó@ÔAà€GØ6€KÜ×%Ñ%€Là
�ØFÌ×IZÒIZÐ[^ÓI_Ñ_ˆàÑØMÔPS×PaÒPaÐbmÓPnÑnˆà	�~ØˆÜ—~‘~ˆð$Ø�l‰l Ø&1ò";ð &5°xÑ%?Ð$@ð ð 
Bˆð$ €Jøô ó $Ø‰?Ø6¸Ñ<‰Dà4ˆDÜ˜4Ó#Ð#ûð$ús   ÂB3 Â3
CÂ=CÃCc                 óv   • SU-  n U R                  US/S9nU$ ! [         a  n[        SU-  U5      eSnAff = f)z lists dn of containers for a GPOz(&(objectClass=*)(gPLink=*%s*))ÚgPLink)rz   r{   z'Could not find container(s) with GPO %sN)r„   rh   r   )r…   r†   r‹   r�   rm   s        rB   Úget_gpo_containersr’   Ã   sV   € ð 4°cÑ9€KðOØ�l‰l k¸(¸ˆlÐDˆð €Jøô ó OÜÐDÀsÑJÈAÓNÐNûðOús   ‡ š
8¤3³8c                 ó0  •  U R                  U[        R                  SS/S9S   nSn[        [        X5      5      nSU;   a^  [        [        US   S   5      5      nU H=  nUS   R                  5       UR                  5       :X  d  M*  UR                  U5        S	n  O   O[	        S
5      eU(       d  [	        SU-  5      e[        R                  " 5       n	Xl        U(       a5  [        U5      n
[        R                  " U
[        R                  S5      U	S'   O/[        R                  " US   S   [        R                  S5      U	S'    U R!                  U	5        g! [         a  n[	        SU-  U5      eSnAff = f! [         a  n[	        SU5      eSnAff = f)z!delete GPO link for the containerú(objectClass=*)r‘   ©rx   ry   rz   r{   r   úContainer '%s' does not existNFrQ   Tz"No GPO(s) linked to this containerz%GPO '%s' not linked to this containerÚr0Úd0z!Error removing GPO from container)r„   r   rƒ   rh   r   Ústrr4   r]   ÚlowerÚremoveÚMessagerQ   re   ÚMessageElementÚFLAG_MOD_REPLACEÚFLAG_MOD_DELETEÚmodify)r…   Úcontainer_dnr†   r�   rm   ÚfoundÚgpo_dnrd   r[   ÚmÚ
gplink_strs              rB   Údel_gpo_linkr¦   Ï   s{  € ðNØ�l‰l ´C·N±NØ&7Ø"* ð ð -à-.ñ0ˆð €EÜ”˜EÓ'Ó(€FØ�3ƒÜœc # h¡-°Ñ"2Ó3Ó4ˆÛˆAØ�‰w�}‰}‹ &§,¡,£.Õ0Ø—‘˜aÔ Ø�Ùò	 ô Ð?Ó@Ð@æÜÐBÀSÑHÓIÐIä�Š‹€AØ„DÞÜ" 6Ó*ˆ
Ü×$Ò$ Z´×1EÑ1EÀxÓPˆˆ$Šä×$Ò$ S¨¡]°1Ñ%5´s×7JÑ7JÈHÓUˆˆ$‰ðCØ�‰�Q�øô5 ó NÜÐ:¸\ÑIÈ1ÓMÐMûðNûô6 ó CÜÐ>ÀÓBÐBûðCús/   ‚$E ÅE: Å
E7Å#E2Å2E7Å:
FÆFÆFc                 óò   • / nU R                  S5      (       a  U SS R                  SS5      nO+U R                  S5      (       a  U SS R                  SS5      n[        U5      S:w  a  [        SU -  5      eU$ )	z;Parse UNC string into a hostname, a service, and a filepathú\\rM   NÚ\z//Ú/é   zInvalid UNC string: %s)rU   rS   rT   Ú
ValueError)ÚuncÚtmps     rB   Ú	parse_uncr¯   õ   sr   € à
€CØ
‡~�~�f×ÑØ�!�"ˆg�m‰m˜D !Ó$‰Ø	�‰˜×	Ñ	Ø�!�"ˆg�m‰m˜C Ó#ˆä
ˆ3ƒx�1ƒ}ÜÐ1°CÑ7Ó8Ð8à€JrD   c                 óæ  • [         R                  " SXS9(       a
  [        5       $ [         R                  " SXS9(       a
  [        5       $ [         R                  " SXS9(       a
  [	        5       $ [         R                  " SXS9(       a
  [        5       $ [         R                  " SXS9(       a
  [        5       $ [         R                  " SXS9(       a
  [        5       $ [         R                  " SXS9(       a
  [        5       $ [         R                  " S	XS9(       a
  [        5       $ [         R                  " S
XS9(       a
  [        5       $ [         R                  " SXS9(       a
  [        5       $ [        5       $ )Nzfdeploy1\.ini$©r@   zaudit\.csv$zGptTmpl\.inf$z	GPT\.INI$zscripts\.ini$zpsscripts\.ini$z	GPE\.INI$z.*\.ini$z.*\.pol$z.*\.aas$)ÚreÚmatchr   r    r!   r   r   r   r   r   r"   )rr   r@   s     rB   Úfind_parserr´     sñ   € Ü	‡x‚xÐ! 4×5Ü"Ó$Ð$Ü	‡x‚x� ×2ÜÓ!Ð!Ü	‡x‚xÐ  $×4ÜÓ!Ð!Ü	‡x‚x�˜d×0Ü‹~ÐÜ	‡x‚xÐ  $×4Ü!Ó#Ð#Ü	‡x‚xÐ" D×6Ü!Ó#Ð#Ü	‡x‚x�˜d×0ô
 ‹zÐÜ	‡x‚x�˜T×/Ü‹}ÐÜ	‡x‚x�˜T×/Ü‹}ÐÜ	‡x‚x�˜T×/Ü‹}Ðä‹:ÐrD   c                 óF  • Sn[         R                  R                  U5      (       d  [         R                  " U5        U/nU/nU(       GaF  UR	                  5       nUR	                  5       nU R                  U[        S9nUR                  S S9  U Hñ  n	US-   U	S   -   n
[         R                  R                  XyS   5      nU	S   [        R                  -  (       a:  UR                  U
5        UR                  U5        [         R                  " U5        M…  U R                  U
5      n[        X³-   S5       nUR                  U5        S S S 5        [        U	S   5      nUR!                  U5        UR#                  US	-   5        Mó     U(       a  GME  g g ! , (       d  f       NQ= f)
Nú.SAMBABACKUP©Úattribsc                 ó   • U S   $ ©Nrr   r`   ©Úxs    rB   Ú<lambda>Ú2backup_directory_remote_to_local.<locals>.<lambda>+  ó   €  A f¢IrD   ©Úkeyr©   rr   ÚattribÚwbú.xml)ÚosÚpathÚisdirÚmkdirÚpopÚlistÚ
attr_flagsÚsortr>   ÚlibsmbÚFILE_ATTRIBUTE_DIRECTORYrW   ÚloadfileÚopenÚwriter´   ÚparseÚ	write_xml)ÚconnÚ	remotedirÚlocaldirÚSUFFIXÚr_dirsÚl_dirsÚr_dirÚl_dirÚdirlistrm   Úr_nameÚl_nameÚdataÚfÚparsers                  rB   Ú backup_directory_remote_to_localrâ      s@  € Ø€FÜ�7‰7�=‰=˜×"Ñ"Ü
�Š�ÔØˆ]€FØˆ\€Fß
Ø—
‘
“ˆØ—
‘
“ˆà—)‘)˜E¬:�)Ð6ˆØ�‰Ñ-ˆÑ.ÛˆAØ˜T‘\ A f¡IÑ-ˆFÜ—W‘W—\‘\ %¨6©Ó3ˆFà�‰{œV×<Ñ<×<Ø—‘˜fÔ%Ø—‘˜fÔ%Ü—’˜Ö à—}‘} VÓ,�Ü˜&™/¨4Ô0°AØ—G‘G˜D”M÷ 1ô % Q v¡YÓ/�Ø—‘˜TÔ"Ø× Ñ  ¨&¡Ö1ñ ÷ ‹&÷  1Õ0ús   Ä5FÆ
F 	c                 ó   • [         R                  R                  U5      (       d  [         R                  " U5        U/nU/nU(       Ga  UR	                  5       nUR	                  5       nU R                  U[        S9nUR                  S S9  U H±  nUS-   US   -   n	[         R                  R                  XhS   5      n
US   [        R                  -  (       a:  UR                  U	5        UR                  U
5        [         R                  " U
5        M…  U R                  U	5      n[        U
S5      R                  U5        M³     U(       a  GM  g g )Nr·   c                 ó   • U S   $ rº   r`   r»   s    rB   r½   Ú0copy_directory_remote_to_local.<locals>.<lambda>N  r¿   rD   rÀ   r©   rr   rÂ   rÃ   )rÅ   rÆ   rÇ   rÈ   rÉ   rÊ   rË   rÌ   r>   rÍ   rÎ   rW   rÏ   rÐ   rÑ   )rÔ   rÕ   rÖ   rØ   rÙ   rÚ   rÛ   rÜ   rm   rÝ   rÞ   rß   s               rB   Úcopy_directory_remote_to_localræ   D  sû   € Ü�7‰7�=‰=˜×"Ñ"Ü
�Š�ÔØˆ[€FØˆZ€Fß
Ø—
‘
“ˆØ—
‘
“ˆà—)‘)˜E¬:�)Ð6ˆØ�‰Ñ-ˆÑ.ÛˆAØ˜T‘\ A f¡IÑ-ˆFÜ—W‘W—\‘\ %¨6©Ó3ˆFà�‰{œV×<Ñ<×<Ø—‘˜fÔ%Ø—‘˜fÔ%Ü—’˜Ö à—}‘} VÓ,�Ü�V˜TÓ"×(Ñ(¨Ö.ñ ÷ ‹&rD   c                 ó  • U R                  U5      (       d  U R                  U5        U/nU/nU(       Ga!  UR                  5       nUR                  5       n[        R                  " U5      n	U	R                  5         U	 HÊ  n
[        R                  R                  Xz5      nUS-   U
-   n[        R                  R                  U5      (       a6  UR                  U5        UR                  U5         U R                  U5        M„  U(       a   U R                  U5        MŸ  [        US5      R                  5       nU R                  XÍ5        MÌ     U(       a  GM   g g ! [         a    U(       d  e  Mï  f = f! [         a     N`f = f)Nr©   Úrb)ÚchkpathrÈ   rÉ   rÅ   ÚlistdirrÌ   rÆ   r>   rÇ   rW   r   rÏ   rÐ   ÚreadÚsavefile)rÔ   rÖ   rÕ   Úignore_existing_dirÚkeep_existing_filesrÙ   rØ   rÛ   rÚ   rÜ   rm   rÞ   rÝ   rß   s                 rB   Úcopy_directory_local_to_remoterï   \  s5  € ð �<‰<˜	×"Ñ"Ø�
‰
�9ÔØˆZ€FØˆ[€Fß
Ø—
‘
“ˆØ—
‘
“ˆä—*’*˜UÓ#ˆØ�‰ŒÛˆAÜ—W‘W—\‘\ %Ó+ˆFØ˜T‘\ AÑ%ˆFä�w‰w�}‰}˜V×$Ñ$Ø—‘˜fÔ%Ø—‘˜fÔ%ðØ—J‘J˜vÖ&ö
 'ðØŸ™ fÔ-Ù ô ˜F DÓ)×.Ñ.Ó0�Ø—‘˜fÖ+ñ+ ÷ ‹&øô %ó Þ.Øò /ðûô )ó Ùðús$   Ã/EÄ
E1ÅE.Å-E.Å1
E>Å=E>c                   ó    • \ rS rSrS rS rSrg)Ú
GPOCommandi�  c                 ó–  • Uc,  [         R                  " 5       n[        SU-  U R                  S9  [        R
                  R                  U5      (       d  [        SU-  5      e[        R
                  R                  US5      n[        R
                  R                  U5      (       d  [        R                  " U5        [        R
                  R                  X25      n[        R
                  R                  U5      (       a  [        SU-  5      e [        R                  " U5        X4$ ! [        [        4 a  n[        SU5      eSnAff = f)a†  Ensure that the temporary directory structure used in fetch,
backup, create, and restore is consistent.

If --tmpdir is used the named directory must be present, which may
contain a 'policy' subdirectory, but 'policy' must not itself have
a subdirectory with the gpo name. The policy and gpo directories
will be created.

If --tmpdir is not used, a temporary directory is securely created.
Nz5Using temporary directory %s (use --tmpdir to change))Úfilez'Temporary directory '%s' does not existr   z8GPO directory '%s' already exists, refusing to overwritez%Error creating teporary GPO directory)ÚtempfileÚmkdtempÚprintÚoutfrÅ   rÆ   rÇ   r   r>   rÈ   ÚIOErrorÚOSError)ÚselfÚtmpdirr†   rÖ   Úgpodirrm   s         rB   Úconstruct_tmpdirÚGPOCommand.construct_tmpdir‚  s  € ð ‰>Ü×%Ò%Ó'ˆFÜÐIÈFÑRØ—y‘yò"ô �w‰w�}‰}˜V×$Ñ$ÜÐHÈ6ÑQÓRÐRä—7‘7—<‘< ¨Ó1ˆÜ�w‰w�}‰}˜X×&Ñ&Ü�HŠH�XÔä—‘—‘˜hÓ,ˆÜ�7‰7�=‰=˜× Ñ ÜØJÈVÑSóUð Uð	KÜ�HŠH�VÔð ˆ~Ðøô œÐ!ó 	KÜÐFÈÓJÐJûð	Kús   ÄD' Ä'EÄ7EÅEc                 óÊ   •  [        U R                  [        5       U R                  U R                  S9U l        g! [         a  n[        SU R                  -  U5      eSnAff = f)z$make a ldap connection to the server©rk   Úsession_infoÚcredentialsri   zLDAP connection to %s failed N)r   rk   r   rj   ri   r…   rh   r   )rú   rm   s     rB   Úsamdb_connectÚGPOCommand.samdb_connect¥  sY   € ð	NÜ 4§8¡8Ü,:Ó,<Ø+/¯:©:¸$¿'¹'ñCˆD�Jøô ó 	NÜÐ>ÀÇÁÑIÈ1ÓMÐMûð	Nús   ‚7: º
A"ÁAÁA")r…   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__rý   r  Ú__static_attributes__r`   rD   rB   rñ   rñ   �  s   † ò!õFNrD   rñ   c            	       ó†   • \ rS rSrSrSr\R                  \R                  \R                  S.r
\" SSS\SS	S
9/rSS jrSrg)Úcmd_listalli¯  zList all GPOs.ú%prog [options]©Ú	sambaoptsÚversionoptsÚcredoptsú-Hú--URLú%LDB URL for database or target serverÚURLÚH©ÚhelpÚtypeÚmetavarÚdestNc                 ó@  • UR                  5       U l        UR                  U R                  SS9U l        [	        U R                  U R                  U5      U l        U R                  5         [        U R                  S 5      nU GH  nU R                  R                  SUS   S   -  5        U R                  R                  SUS   S   -  5        U R                  R                  SUS	   S   -  5        U R                  R                  S
UR                  -  5        U R                  R                  S[        USS5      -  5        U R                  R                  S[        [        [        USS5      5      5      -  5        U R                  R                  S5        GM     g )NT©Úfallback_machineúGPO          : %s
rr   r   údisplay name : %s
rs   úpath         : %s
rt   údn           : %s
úversion      : %s
rq   Ú0úflags        : %s
r@   Ú
)Úget_loadparmri   Úget_credentialsrj   rn   rk   r  r�   r…   r÷   rÑ   rQ   r$   rC   rX   )rú   r  r  r  r  r�   r¤   s          rB   ÚrunÚcmd_listall.run¿  sA  € à×(Ñ(Ó*ˆŒØ×-Ñ-¨d¯g©gÈÐ-ÐMˆŒ
ä˜$Ÿ'™' 4§:¡:¨qÓ1ˆŒà×ÑÔä˜4Ÿ:™: tÓ,ˆäˆAØ�I‰I�O‰OÐ1°A°f±I¸a±LÑ@ÔAØ�I‰I�O‰OÐ1°A°mÑ4DÀQÑ4GÑGÔHØ�I‰I�O‰OÐ1°AÐ6FÑ4GÈÑ4JÑJÔKØ�I‰I�O‰OÐ1°A·D±DÑ8Ô9Ø�I‰I�O‰OÐ1´LÀÀOÐUXÓ4YÑYÔZØ�I‰I�O‰OÐ1Ô4DÄSÌÐVWÐY`ÐbcÓIdÓEeÓ4fÑfÔgØ�I‰I�O‰O˜D×!ò rD   ©rj   ri   rk   ©NNNN©r  r  r  r  Ú__doc__ÚsynopsisrG   ÚSambaOptionsÚVersionOptionsÚCredentialsOptionsÚtakes_optiongroupsr   r™   Útakes_optionsr(  r	  r`   rD   rB   r  r  ¯  sT   † Ùà €Hð ×)Ñ)Ø×-Ñ-Ø×.Ñ.ñÐñ 	ˆt�WÐ#JÐQTØ 3ñ	(ð€M÷
"rD   r  c            	       óŒ   • \ rS rSrSrSrS/r\R                  \R                  \R                  S.r\" SSS\S	S
S9/rSS jrSrg)Úcmd_listiÔ  zList GPOs for an account.z&%prog <username|machinename> [options]Úaccountnamer  r  r  r  r  r  r  Nc                 ó>
  • UR                  5       U l        UR                  U R                  SS9U l        [	        U R                  U R                  U5      U l        U R                  5          U R                  R                  S[        R                  " U5      < S[        R                  " U5      < S3S9nUS   R                  n U R                  R                  U[        R                  S	/S
9S   nSUS	   ;   n[        [         -  n	U R
                  b)  U R
                  R#                  S5      (       a	  U	[$        -  n	[&        R(                  R+                  U R                  U R                  UU	S9n
U
R,                  n/ nSn[        R.                  " U R                  [1        U5      5      R3                  5       n U R                  R                  U[        R                  SS/S
9S   nSU;   GaÅ  [5        [1        US   S   5      5      nU GH¤  nU(       d  US   [6        R8                  -  (       d  M(  US   [6        R:                  -  (       a  ME   [<        R>                  [<        R@                  -  [<        RB                  -  nU R                  R                  US   [        R                  / SQSU-  /S9nUS   S   S   n[E        [<        RF                  U5      n [&        R<                  RM                  UU[<        RN                  [<        RP                  -  [<        RR                  -  5        [W        [Y        US   SS5      5      nU(       a  U[6        RZ                  -  (       a  GM]  U(       d  U[6        R\                  -  (       a  GM  UR_                  US   S   S   US   S   S   45        GM§     [W        [Y        USS5      5      nU[6        R`                  -  (       a  SnXàR                  Rc                  5       :X  a  OUR3                  5       nGM[  U(       a  SnOSnU RH                  RK                  SU< SU< S 35        U H-  nU RH                  RK                  S!US   < SUS"   < S 35        M/     g ! [         a    [        SU-  5      ef = f! [         a    [        SU-  5      ef = f! [         a&    U RH                  RK                  SUS   -  5         GMÕ  f = f! [T         a-    U RH                  RK                  SUR                  -  5         GM  f = f)#NTr  z(&(|(samAccountName=z)(samAccountName=z$))(objectClass=User)))rz   r   zFailed to find account %sÚobjectClass)rx   ry   r{   Úcomputerz!Failed to find objectClass for %sÚldap)Úlp_ctxrQ   Úsession_info_flagsr‘   Ú	gPOptionsrG   rQ   )rr   rs   r@   rp   rw   )rx   ry   r{   r|   rp   z8Failed to fetch gpo object with nTSecurityDescriptor %s
zFailed access check on %s
r@   rs   rr   FÚuserz	GPOs for r<   r%  z    rO   )2r&  ri   r'  rj   rn   rk   r  r…   r„   r   r‚   rQ   rh   r   rƒ   r   r   rU   r   ÚsambaÚauthÚuser_sessionÚsecurity_tokenr€   r™   Úparentr]   r	   ÚGPLINK_OPT_ENFORCEÚGPLINK_OPT_DISABLEr
   ÚSECINFO_OWNERÚSECINFO_GROUPÚSECINFO_DACLr   Ú
descriptorr÷   rÑ   Úaccess_checkÚSEC_STD_READ_CONTROLÚSEC_ADS_LISTÚSEC_ADS_READ_PROPrV   rX   r$   ÚGPO_FLAG_MACHINE_DISABLEÚGPO_FLAG_USER_DISABLErW   ÚGPO_BLOCK_INHERITANCEr}   )rú   r6  r  r  r  r  r�   Úuser_dnÚis_computerr<  ÚsessionÚtokenÚgposÚinheritrQ   Úglistr[   rˆ   ÚgmsgÚsecdesc_ndrÚsecdescr@   Ú	gpoptionsÚmsg_strs                           rB   r(  Úcmd_list.runå  s|  € à×(Ñ(Ó*ˆŒØ×-Ñ-¨d¯g©gÈÐ-ÐMˆŒ
ä˜$Ÿ'™' 4§:¡:¨qÓ1ˆŒà×ÑÔð	JØ—*‘*×#Ò#Ü%(×%6Ò%6°{Ö%CÄS×EVÒEVÐWbÖEcð0eÐ#ð fˆCà˜!‘f—i‘iˆGð
	RØ—*‘*×#Ñ#¨¼¿¹È}ÈoÐ#Ð^Ð_`ÑaˆCØ$¨¨MÑ(:Ñ:ˆKô ?Ü=ñ>Ðð �8‰8Ñ D§H¡H×$7Ñ$7¸×$?Ñ$?ØÔ"EÑEÐä—*‘*×)Ñ)¨$¯*©*¸T¿W¹WÈØ=Oð *ð Qˆð ×&Ñ&ˆàˆàˆÜ�VŠV�D—J‘J¤ G£Ó-×4Ñ4Ó6ˆØØ—*‘*×#Ñ#¨´3·>±>È(ÐT_ÐI`Ð#ÐaÐbcÑdˆCØ˜3ŒÜ$¤S¨¨X©°qÑ)9Ó%:Ó;�Ü�AÞ"¨A¨i©L¼4×;RÑ;R×,RÙ Ø˜‘|¤d×&=Ñ&=×=Ù ð!Ü$,×$:Ñ$:Ü$,×$:Ñ$:ñ%;ä$,×$9Ñ$9ñ%:˜ð  $Ÿz™z×0Ñ0°a¸±gÄSÇ^Á^ò8Pà;JÈXÑ;UÐ:Vð  1ð  X˜ð '+¨1¡gÐ.DÑ&EÀaÑ&H˜Ü",¬X×-@Ñ-@À+Ó"N˜ð!ÜŸ™×3Ñ3°G¸UÜ4<×4QÑ4QÜ4<×4IÑ4Iñ5Jä4<×4NÑ4Nñ5OôPô  ¤¨T°!©W°g¸qÓ AÓB�EÞ"¨´×0MÑ0M×(MÚ Þ&¨E´D×4NÑ4N×,NÚ Ø—K‘K  a¡¨Ñ!7¸Ñ!:¸DÀ¹GÀF¹OÈAÑ<NÐ O×PñI ôN œL¨¨k¸1Ó=Ó>ˆIØœ4×5Ñ5×5Ø�à—Z‘Z×2Ñ2Ó4Ó4ØØ—‘“ˆBòc öf Ø ‰GàˆGà�	‰	�Š«g³{ÐCÔDÛˆAØ�I‰I�OŠO¨Q¨q¬T°1°Q´4Ð8Ö9ò øôg ó 	JÜÐ:¸[ÑHÓIÐIð	Jûô ó 	RÜÐBÀ[ÑPÓQÐQð	RûôN %ó !ØŸ	™	Ÿ™Ð(cØ()¨$©ñ)0ô 1ã ð!ûô (ó !ØŸ	™	Ÿ™Ð(EÈÏÉÑ(NÔOÛ ð!ús?   Á,AQ: Ã5R ÉB
R2ËAS%Ñ:RÒR/Ò2+S"Ó!S"Ó%2TÔTr*  r+  )r  r  r  r  r-  r.  Ú
takes_argsrG   r/  r0  r1  r2  r   r™   r3  r(  r	  r`   rD   rB   r5  r5  Ô  sY   † Ù#à7€Hà�€Jà×)Ñ)Ø×-Ñ-Ø×.Ñ.ñÐñ 	ˆt�WÐ#JØ ¨Sñ	2ð€M÷
a:rD   r5  c                   ó†   • \ rS rSrSrSr\R                  \R                  \R                  S.r
S/r\" SS\S9/rSS
 jrSrg	)Úcmd_showiI  zShow information for a GPO.ú%prog <gpo> [options]r  r†   r  r  ©r  r  Nc                 ó°	  • UR                  5       U l        UR                  U R                  SS9U l        U(       a"  UR	                  S5      (       a  USS  nX l        OD[        U R                  U R                  5      n[        U R                  U R                  US9U l        U R                  5          [        U R                  U5      S   n US   S   n[        [        R                  U5      n	U	R!                  5       n
U R"                  R%                  S
US   S   -  5        U R"                  R%                  SUS   S   -  5        U R"                  R%                  SUS   S   -  5        SU;   a$  U R"                  R%                  SUS   S   -  5        SU;   a$  U R"                  R%                  SUS   S   -  5        U R"                  R%                  SUR&                  -  5        U R"                  R%                  S[)        USS5      -  5        U R"                  R%                  S[+        [-        [)        USS5      5      5      -  5        U R"                  R%                  SU
-  5        [/        USU R                  U R                  S9nU R                  R1                  S5      nSR3                  UR5                  5       SUS /5      n/ nS! GH%  n [        [6        R8                  UR;                  Xß-  5      5      nURH                   Hå  nURJ                  S#:X  a  M  0 nURL                  US$'   URJ                  US%'   UUS&'   [O        URP                  5      US''   URR                  US('   [Q        US(   5      [T        :X  a]  URP                  [V        :X  a8  US(   RY                  S)5      nUR[                  S*5      R]                  S*5      US('   O[_        US(   5      US('   URa                  U5        Mç     GM(     U R"                  R%                  S+5        [b        Rd                  " XàR"                  S,S-9  U R"                  R%                  S.5        g ! [         a    [        SU-  5      ef = f! [         a    S	n
 GNwf = f! [<         aQ  nUR>                  S   [@        [B        [D        4;   a   S nAGMâ  UR>                  S   [F        :X  a  [        S"5      ee S nAff = f)/NTr  rg   é   ©rl   r   úGPO '%s' does not existrp   z<hidden>r  rr   r  rs   r   rt   ru   zMachine Exts : %s
rv   zUser Exts    : %s
r!  r"  rq   r#  r$  r@   zACL          : %s
Úsysvol©ri   rj   Úrealmr©   ÚPoliciesz%s\Registry.pol)ÚMACHINEÚUSERú:The authenticated user does not have sufficient privilegesz
**delvals.ÚkeynameÚ	valuenameÚclassr  rß   z	utf-16-leÚ zPolicies     :
é   )Úindentr%  )3r&  ri   r'  rj   rU   rk   r   rn   r  r�   r…   rh   r   r   r
   rI  Úas_sddlr÷   rÑ   rQ   r$   rC   rX   r3   Úgetr>   rš   r   ró   rÏ   r   Úargsr-   r.   r/   r1   Úentriesro  rn  r,   r  rß   Úbytesr6   ÚdecodeÚrstriprS   rÊ   rW   ÚjsonÚdump)rú   r†   r  r  r  r  Údc_hostnamer�   rY  rZ  Úsecdesc_sddlrÔ   ri  Úpol_fileÚpolicy_defsÚpolicy_classÚpol_datarm   ÚentryÚdefsrß   s                        rB   r(  Úcmd_show.runZ  s6  € à×(Ñ(Ó*ˆŒØ×-Ñ-¨d¯g©gÈÐ-ÐMˆŒ
ö �—‘˜i×(Ñ(Ø˜A˜B˜%ˆKØ�Hä'¨¯©°·±Ó<ˆKÜ˜dŸg™g t§z¡z°kÑBˆDŒHà×ÑÔð	@Ü˜tŸz™z¨3Ó/°Ñ2ˆCð	&ØÐ4Ñ5°aÑ8ˆKÜ ¤×!4Ñ!4°kÓBˆGØ"Ÿ?™?Ó,ˆLð 	�	‰	�‰Ð-°°F±¸A±Ñ>Ô?Ø�	‰	�‰Ð-°°MÑ0BÀ1Ñ0EÑEÔFØ�	‰	�‰Ð-°Ð4DÑ0EÀaÑ0HÑHÔIØ%¨Ó,Ø�I‰I�O‰OÐ1°CÐ8RÑ4SÐTUÑ4VÑVÔWØ" cÓ)Ø�I‰I�O‰OÐ1°CÐ8OÑ4PÐQRÑ4SÑSÔTØ�	‰	�‰Ð-°·±Ñ6Ô7Ø�	‰	�‰Ð-´¸SÀ/ÐSVÓ0WÑWÔXØ�	‰	�‰Ð-Ô0@ÄÄ\ÐRUÐW^Ð`aÓEbÓAcÓ0dÑdÔeØ�	‰	�‰Ð-°Ñ<Ô=ô ˜kØ&Ø!%§¡Ø$(§J¡Jñ0ˆð
 —‘—‘˜GÓ$ˆØ—9‘9˜eŸk™k›m¨Z¸Ø 2ð4ó 5ˆàˆÜ/ˆLðÜ%¤d§i¡iØ&*§m¡m°HÑ4KÓ&LóN�ð "×)Ô)�Ø—?‘? lÓ2ÙØ�Ø"'§-¡-��Y‘Ø$)§O¡O��[Ñ!Ø ,��W‘Ü*¨5¯:©:Ó6��V‘Ø$Ÿz™z��V‘ä˜˜V™Ó%¬Ó.Ø—z‘z¤\Ó1Ø# F™|×2Ñ2°;Ó?˜Ø'+§{¡{°6Ó':×'@Ñ'@ÀÓ'H˜˜Všä'+¨D°©LÓ'9˜˜V™Ø×"Ñ" 4Ö(ô! *ñ 0ð> 	�	‰	�‰Ð*Ô+Ü�	Š	�+Ÿy™y°Ò3Ø�	‰	�‰˜ÕøôC ó 	@ÜÐ8¸3Ñ>Ó?Ð?ð	@ûô ó 	&Ø%‹Lð	&ûô: !ó Ø—6‘6˜!‘9Ô!>Ü!@Ü!@ð!Bó Bö Ø—6‘6˜!‘9Ô 7Ó7Ü&ð (Hó Ið Iàûðús<   Â3Q Ã2Q' Ë+Q:ÑQ$Ñ'Q7Ñ6Q7Ñ:
SÒ"SÒ-#SÓSr*  r+  ©r  r  r  r  r-  r.  rG   r/  r0  r1  r2  r^  r   r™   r3  r(  r	  r`   rD   rB   r`  r`  I  sT   † Ù%à&€Hð ×)Ñ)Ø×-Ñ-Ø×.Ñ.ñÐð �€Jñ 	ˆtÐAÈÑLð€M÷RrD   r`  c                   óÔ   • \ rS rSrSrSr\R                  \R                  \R                  S.r
S/r\" SS\S9\" S	S
\S9\" SSSS/SS9\" SSSS/SS9\" SSSSS9/r    SS jrSrg)Úcmd_loadi¯  aê  Load policies onto a GPO.

Reads json from standard input until EOF, unless a json formatted
file is provided via --content.

Example json_input:
[
    {
        "keyname": "Software\Policies\Mozilla\Firefox\Homepage",
        "valuename": "StartPage",
        "class": "USER",
        "type": "REG_SZ",
        "data": "homepage"
    },
    {
        "keyname": "Software\Policies\Mozilla\Firefox\Homepage",
        "valuename": "URL",
        "class": "USER",
        "type": "REG_SZ",
        "data": "google.com"
    },
    {
        "keyname": "Software\Microsoft\Internet Explorer\Toolbar",
        "valuename": "IEToolbar",
        "class": "USER",
        "type": "REG_BINARY",
        "data": [0]
    },
    {
        "keyname": "Software\Policies\Microsoft\InputPersonalization",
        "valuename": "RestrictImplicitTextCollection",
        "class": "USER",
        "type": "REG_DWORD",
        "data": 1
    }
]

Valid class attributes: MACHINE|USER|BOTH
Data arrays are interpreted as bytes.

The --machine-ext-name and --user-ext-name options are multi-value inputs
which respectively set the gPCMachineExtensionNames and gPCUserExtensionNames
ldap attributes on the GPO. These attributes must be set to the correct GUID
names for Windows Group Policy to work correctly. These GUIDs represent
the client side extensions to apply on the machine. Linux Group Policy does
not enforce this constraint.
{35378EAC-683F-11D2-A89A-00C04FBBCFA2} is provided by default, which
enables most Registry policies.
ra  r  r†   r  r  rb  ú	--contentúJSON file of policy inputsú--machine-ext-namerW   Úmachine_extsú&{35378EAC-683F-11D2-A89A-00C04FBBCFA2}z;A machine extension name to add to gPCMachineExtensionNames)Úactionr  Údefaultr  ú--user-ext-nameÚ	user_extsz5A user extension name to add to gPCUserExtensionNamesz	--replaceÚ
store_trueFz8Replace the existing Group Policies, rather than merging©rŽ  r�  r  Nc
                 óº  • Uc  S/nUc  S/nUc3  [         R                  " [        R                  R	                  5       5      n
O[[
        R                  R                  U5      (       a,  [        US5       n[         R                  " U5      n
S S S 5        O[        S5      eUR                  5       U l        UR                  U R                  SS9U l        [        U R                  U R                  U5      U l        U R#                  5         [%        XR                  U R                  U R&                  U5      nU H  nUR)                  US5        M     U H  nUR)                  US5        M      U(       a  UR+                  W
5        g UR-                  W
5        g ! , (       d  f       GN= f! [.         a(  nUR0                  S   [2        :X  a  [        S	5      ee S nAff = f)
Nr�  rè   ú$The JSON content file does not existTr  ru   rv   r   rm  )r{  ÚloadsÚsysÚstdinrë   rÅ   rÆ   ÚexistsrÐ   Úloadr   r&  ri   r'  rj   rn   rk   r  r5   r…   Úregister_extension_nameÚ	replace_sÚmerge_sr   rv  r1   )rú   r†   r  ÚcontentrŒ  r‘  Úreplacer  r  r  r€  ÚrÚregÚext_namerm   s                  rB   r(  Úcmd_load.runû  s†  € ð ÑØDÐEˆLØÑØAÐBˆIØ‰?ÜŸ*š*¤S§Y¡Y§^¡^Ó%5Ó6‰KÜ�W‰W�^‰^˜G×$Ñ$Ü�g˜tÔ$¨Ü"Ÿiši¨›l�÷ %Ð$ô ÐEÓFÐFà×(Ñ(Ó*ˆŒØ×-Ñ-¨d¯g©gÈÐ-ÐMˆŒ
Ü˜$Ÿ'™' 4§:¡:¨qÓ1ˆŒØ×ÑÔÜ# C¯©°$·*±*¸d¿j¹jÈ!ÓLˆÛ$ˆHØ×'Ñ'¨Ð2LÖMñ %ã!ˆHØ×'Ñ'¨Ð2IÖJñ "ð
	ÞØ—‘˜kÕ*à—‘˜KÕ(÷% %Ö$ûô& ó 	Ø�v‰v�a‰yÔ3Ó3Ü"ð $Dó Eð Eð ûð	ús*   Á3FÅ+F( ÆF( Æ
F%Æ(
GÆ2#GÇGr*  )NNNNFNNNr†  r`   rD   rB   rˆ  rˆ  ¯  s½   † ñ0ðd '€Hð ×)Ñ)Ø×-Ñ-Ø×.Ñ.ñÐð �€Jñ 	ˆtÐAÈÑLÙˆ{Ð!=ÀCÑHÙÐ#Ø .Ø=Ð>ØNñ	Pñ 	Ð Ø +Ø=Ð>ØHñ	Jñ 	ˆ{ <¸ØNñ	Pð€Mð (,ØØØFJ÷#rD   rˆ  c                   ó¼   • \ rS rSrSrSr\R                  \R                  \R                  S.r
S/r\" SS\S9\" S	S
\S9\" SS/ SSS9\" SS/ SSS9/r  SS jrSrg)Ú
cmd_removei!  aû  Remove policies from a GPO.

Reads json from standard input until EOF, unless a json formatted
file is provided via --content.

Example json_input:
[
    {
        "keyname": "Software\Policies\Mozilla\Firefox\Homepage",
        "valuename": "StartPage",
        "class": "USER",
    },
    {
        "keyname": "Software\Policies\Mozilla\Firefox\Homepage",
        "valuename": "URL",
        "class": "USER",
    },
    {
        "keyname": "Software\Microsoft\Internet Explorer\Toolbar",
        "valuename": "IEToolbar",
        "class": "USER"
    },
    {
        "keyname": "Software\Policies\Microsoft\InputPersonalization",
        "valuename": "RestrictImplicitTextCollection",
        "class": "USER"
    }
]

Valid class attributes: MACHINE|USER|BOTH
ra  r  r†   r  r  rb  r‰  rŠ  r‹  rW   rŒ  z@A machine extension name to remove from gPCMachineExtensionNames)rŽ  r�  r  r  r�  r‘  z:A user extension name to remove from gPCUserExtensionNamesNc	                 ó‚  • Uc  / nUc  / nUc3  [         R                  " [        R                  R	                  5       5      n	O[[
        R                  R                  U5      (       a,  [        US5       n
[         R                  " U
5      n	S S S 5        O[        S5      eUR                  5       U l        UR                  U R                  SS9U l        [        U R                  U R                  U5      U l        U R#                  5         [%        XR                  U R                  U R&                  U5      nU H  nUR)                  US5        M     U H  nUR)                  US5        M      UR+                  W	5        g ! , (       d  f       Ní= f! [,         a(  nUR.                  S   [0        :X  a  [        S5      ee S nAff = f)	Nrè   r•  Tr  ru   rv   r   rm  )r{  r–  r—  r˜  rë   rÅ   rÆ   r™  rÐ   rš  r   r&  ri   r'  rj   rn   rk   r  r5   r…   Úunregister_extension_nameÚremove_sr   rv  r1   )rú   r†   r  rž  rŒ  r‘  r  r  r  r€  r   r¡  r¢  rm   s                 rB   r(  Úcmd_remove.runW  so  € àÑØˆLØÑØˆIØ‰?ÜŸ*š*¤S§Y¡Y§^¡^Ó%5Ó6‰KÜ�W‰W�^‰^˜G×$Ñ$Ü�g˜tÔ$¨Ü"Ÿiši¨›l�÷ %Ð$ô ÐEÓFÐFà×(Ñ(Ó*ˆŒØ×-Ñ-¨d¯g©gÈÐ-ÐMˆŒ
Ü˜$Ÿ'™' 4§:¡:¨qÓ1ˆŒØ×ÑÔÜ# C¯©°$·*±*¸d¿j¹jÈ!ÓLˆÛ$ˆHØ×)Ñ)¨(Ð4NÖOñ %ã!ˆHØ×)Ñ)¨(Ð4KÖLñ "ð	Ø�L‰L˜Õ%÷ %Õ$ûô  ó 	Ø�v‰v�a‰yÔ3Ó3Ü"ð $Dó Eð Eð ûð	ús$   Á1E;Å)F Å;
F	Æ
F>Æ#F9Æ9F>r*  ©NNNNNNNr†  r`   rD   rB   r¥  r¥  !  s�   † ñð@ '€Hð ×)Ñ)Ø×-Ñ-Ø×.Ñ.ñÐð �€Jñ 	ˆtÐAÈÑLÙˆ{Ð!=ÀCÑHÙÐ#Ø R¨nØSñ	Uñ 	Ð Ø R¨kØMñ	Oð	€Mð KOØ7;÷rD   r¥  c                   óŠ   • \ rS rSrSrSr\R                  \R                  \R                  S.r
S/r\" SS\S9/r  SS
 jrSrg	)Úcmd_getlinkix  zList GPO Links for a container.ú%prog <container_dn> [options]r  r¡   r  r  rb  Nc                 ó¢  • UR                  5       U l        UR                  U R                  SS9U l        [	        U R                  U R                  U5      U l        U R                  5          U R                  R                  U[        R                  SS/S9S   nSU;   aö  US   (       aì  U R                  R                  SU-  5        [        [!        US   S   5      5      nU H­  n[#        U R                  US	   S
9nU R                  R                  SUS   S   S   -  5        U R                  R                  SUS   S   S   -  5        U R                  R                  S[%        US   5      -  5        U R                  R                  S5        M¯     g U R                  R                  SU-  5        g ! [         a    [        SU-  5      ef = f)NTr  r”   r‘   r•   r   r–   zGPO(s) linked to DN %s
rQ   )rQ   z    GPO     : %s
rr   z    Name    : %s
rs   z    Options : %s
rG   r%  zNo GPO(s) linked to DN=%s
)r&  ri   r'  rj   rn   rk   r  r…   r„   r   rƒ   rh   r   r÷   rÑ   r]   r™   r�   rH   )	rú   r¡   r  r  r  r  r�   rd   r[   s	            rB   r(  Úcmd_getlink.run‰  s˜  € ð ×(Ñ(Ó*ˆŒØ×-Ñ-¨d¯g©gÈÐ-ÐMˆŒ
ä˜$Ÿ'™' 4§:¡:¨qÓ1ˆŒà×ÑÔð	OØ—*‘*×#Ñ#¨¼S¿^¹^Ø/@Ø+3¨*ð $ð 6à67ñ9ˆCð �s‹?˜s 8Ÿ}Ø�I‰I�O‰OÐ6¸ÑEÔFÜ!¤# c¨(¡m°AÑ&6Ó"7Ó8ˆFÛ�Ü" 4§:¡:°!°D±'Ñ:�Ø—	‘	—‘Ð 4°s¸1±v¸f±~ÀaÑ7HÑ HÔIØ—	‘	—‘Ð 4°s¸1±v¸mÑ7LÈQÑ7OÑ OÔPØ—	‘	—‘Ð 4Ô7LÈQÈyÉ\Ó7ZÑ ZÔ[Ø—	‘	—‘ Ö%ò ð �I‰I�O‰OÐ9¸LÑHÕIøô ó 	OÜÐ>ÀÑMÓNÐNð	Oús   Á,.F5 Æ5Gr*  r+  r†  r`   rD   rB   r¬  r¬  x  s_   † Ù)à/€Hð ×)Ñ)Ø×-Ñ-Ø×.Ñ.ñÐð !Ð!€Jñ 	ˆtÐAÈÑLð€Mð BFØ÷JrD   r¬  c            
       ó°   • \ rS rSrSrSr\R                  \R                  \R                  S.r
SS/r\" SS\S	9\" S
SSSSS9\" SSSSSS9/r  SS jrSrg)Úcmd_setlinki§  z(Add or update a GPO link to a container.ú$%prog <container_dn> <gpo> [options]r  r¡   r†   r  r  rb  z	--disableÚdisabledFr’  zDisable policy©r  r�  rŽ  r  z	--enforceÚenforcedzEnforce policyNc	                 óÖ  • UR                  5       U l        UR                  U R                  SS9U l        [	        U R                  U R                  U5      U l        U R                  5         Sn	U(       a  U	[        R                  -  n	U(       a  U	[        R                  -  n	 [        U R                  US9S     [        [        U R                  U5      5      n
 U R                  R!                  U["        R$                  SS/S9S   nS
nSU;   a~  ['        [        US   S   5      5      nSnS
nU H0  nUS   R)                  5       U
R)                  5       :X  d  M*  XŸS'   Sn  O   U(       a  [        SU-  5      eUR+                  SX©S.5        O/ nUR-                  X©S.5        [/        U5      n["        R0                  " 5       n["        R2                  " U R                  U5      Ul        U(       a*  ["        R6                  " U["        R8                  S5      US'   O)["        R6                  " U["        R:                  S5      US'    U R                  R=                  U5        U R>                  RA                  S5        [C        5       RE                  XXgU5        g ! [         a    [        SU-  5      ef = f! [         a    [        S	U-  5      ef = f! [         a  n[        SU5      eS nAff = f)NTr  r   ©r†   rf  r”   r‘   r•   r–   FrQ   rG   z)GPO '%s' already linked to this containerrP   Ú	new_valuezError adding GPO LinkzAdded/Updated GPO link
)#r&  ri   r'  rj   rn   rk   r  r	   rE  rD  r�   r…   rh   r   r™   r4   r„   r   rƒ   r]   rš   ÚinsertrW   re   rœ   r€   rQ   r�   rž   ÚFLAG_MOD_ADDr    r÷   rÑ   r¬  r(  )rú   r¡   r†   r  r³  rµ  r  r  r  Úgplink_optionsr£   r�   Úexisting_gplinkrd   r¢   r[   r¥   r¤   rm   s                      rB   r(  Úcmd_setlink.run¼  s“  € ð ×(Ñ(Ó*ˆŒØ×-Ñ-¨d¯g©gÈÐ-ÐMˆŒ
ä˜$Ÿ'™' 4§:¡:¨qÓ1ˆŒà×ÑÔàˆÞØœd×5Ñ5Ñ5ˆNÞØœd×5Ñ5Ñ5ˆNð	@Ü˜Ÿ™¨Ñ-¨aÒ0ô ”Z §
¡
¨CÓ0Ó1ˆð	OØ—*‘*×#Ñ#¨¼S¿^¹^Ø/@Ø+3¨*ð $ð 6à67ñ9ˆCð  ˆØ�s‹?Ü!¤# c¨(¡m°AÑ&6Ó"7Ó8ˆFØ"ˆOØˆEÛ�Ø�T‘7—=‘=“? f§l¡l£nÕ4Ø#1�i‘LØ �EÙñ	 ö
 Ü"Ð#NÐQTÑ#TÓUÐUà—‘˜a¨Ñ!JÕKàˆFØ�M‰M ÑCÔDä" 6Ó*ˆ
ä�KŠK‹MˆÜ�vŠv�d—j‘j ,Ó/ˆŒæÜ ×/Ò/°
¼C×<PÑ<PÐRZÓ[ˆAˆkŠNä ×/Ò/°
¼C×<LÑ<LÈhÓWˆAˆk‰Nð	;Ø�J‰J×Ñ˜aÔ ð 	�	‰	�‰Ð2Ô3Ü‹×Ñ˜,¨9ÀÕLøô_ ó 	@ÜÐ8¸3Ñ>Ó?Ð?ð	@ûô ó 	OÜÐ>ÀÑMÓNÐNð	OûôD ó 	;ÜÐ6¸Ó:Ð:ûð	;ús0   Â"J Ã.J1 ÉK ÊJ.Ê1K
Ë
K(ËK#Ë#K(r*  )NFFNNNr†  r`   rD   rB   r±  r±  §  sˆ   † Ù2à5€Hð ×)Ñ)Ø×-Ñ-Ø×.Ñ.ñÐð ! %Ð(€Jñ 	ˆtÐAÈÑLÙˆ{ °UÀ<Ø$ñ	&áˆ{ °UÀ<Ø$ñ	&ð	€Mð GLØ7;÷BMrD   r±  c                   óŒ   • \ rS rSrSrSr\R                  \R                  \R                  S.r
SS/r\" SS\S	9/r  SS jrSrg
)Úcmd_dellinki  z!Delete GPO link from a container.r²  r  Ú	containerr†   r  r  rb  Nc                 ó  • UR                  5       U l        UR                  U R                  SS9U l        [	        U R                  U R                  U5      U l        U R                  5          [        U R                  US9S     [        R                  " U R                  U5      n[        U R                  Xr5        U R                  R                  S5        [!        5       R#                  XsXEU5        g ! [         a    [        SU-  5      ef = f)NTr  r·  r   rf  zDeleted GPO link.
)r&  ri   r'  rj   rn   rk   r  r�   r…   rh   r   r   r€   r¦   r÷   rÑ   r¬  r(  )rú   rÀ  r†   r  r  r  r  r¡   s           rB   r(  Úcmd_dellink.run  sÙ   € ð ×(Ñ(Ó*ˆŒØ×-Ñ-¨d¯g©gÈÐ-ÐMˆŒ
ä˜$Ÿ'™' 4§:¡:¨qÓ1ˆŒà×ÑÔð	@Ü˜Ÿ™¨Ñ-¨aÒ0ô —v’v˜dŸj™j¨)Ó4ˆÜ�T—Z‘Z Ô3Ø�	‰	�‰Ð-Ô.Ü‹×Ñ˜,¨9ÀÕLøô ó 	@ÜÐ8¸3Ñ>Ó?Ð?ð	@ús   Á,C1 Ã1D
r*  r+  r†  r`   rD   rB   r¿  r¿    sa   † Ù+à5€Hð ×)Ñ)Ø×-Ñ-Ø×.Ñ.ñÐð ˜uÐ%€Jñ 	ˆtÐAÈÑLð€Mð DHØ÷MrD   r¿  c                   óŠ   • \ rS rSrSrSr\R                  \R                  \R                  S.r
S/r\" SS\S9/r  SS
 jrSrg	)Úcmd_listcontainersi(  z%List all linked containers for a GPO.ra  r  r†   r  r  rb  Nc                 óò  • UR                  5       U l        UR                  U R                  SS9U l        [	        U R                  U R                  U5      U l        U R                  5         [        U R                  U5      n[        U5      (       aI  U R                  R                  SU-  5        U H$  nU R                  R                  SUS   -  5        M&     g U R                  R                  SU-  5        g )NTr  zContainer(s) using GPO %s
z    DN: %s
rQ   zNo Containers using GPO %s
)r&  ri   r'  rj   rn   rk   r  r’   r…   rT   r÷   rÑ   )rú   r†   r  r  r  r  r�   r¤   s           rB   r(  Úcmd_listcontainers.run9  s½   € ð ×(Ñ(Ó*ˆŒØ×-Ñ-¨d¯g©gÈÐ-ÐMˆŒ
ä˜$Ÿ'™' 4§:¡:¨qÓ1ˆŒà×ÑÔä  §¡¨SÓ1ˆÜˆs�8‰8Ø�I‰I�O‰OÐ9¸CÑ?Ô@Û�Ø—	‘	—‘ °°4±Ñ 8Ö9ò ð �I‰I�O‰OÐ:¸SÑ@ÕArD   r*  r+  r†  r`   rD   rB   rÄ  rÄ  (  s\   † Ù/à&€Hð ×)Ñ)Ø×-Ñ-Ø×.Ñ.ñÐð �€Jñ 	ˆtÐAÈÑLð€Mð 9=Ø÷BrD   rÄ  c                   óŠ   • \ rS rSrSrSr\R                  \R                  \R                  S.r
S/r\" SS\S9/r  SS
 jrSrg	)Úcmd_getinheritanceiL  z%Get inheritance flag for a container.r­  r  r¡   r  r  rb  Nc                 ó6  • UR                  5       U l        UR                  U R                  SS9U l        [	        U R                  U R                  U5      U l        U R                  5          U R                  R                  U[        R                  SS/S9S   nSnSU;   a  [        US   S   5      nU[        R                  :X  a  U R                   R#                  S5        g U R                   R#                  S	5        g ! [         a    [        SU-  5      ef = f)
NTr  r”   r=  r•   r   r–   z$Container has GPO_BLOCK_INHERITANCE
zContainer has GPO_INHERIT
)r&  ri   r'  rj   rn   rk   r  r…   r„   r   rƒ   rh   r   rX   r	   rP  r÷   rÑ   )rú   r¡   r  r  r  r  r�   Úinheritances           rB   r(  Úcmd_getinheritance.run]  s  € ð ×(Ñ(Ó*ˆŒØ×-Ñ-¨d¯g©gÈÐ-ÐMˆŒ
ä˜$Ÿ'™' 4§:¡:¨qÓ1ˆŒà×ÑÔð	OØ—*‘*×#Ñ#¨¼S¿^¹^Ø/@Ø+6¨-ð $ð 9à9:ñ<ˆCð ˆØ˜#ÓÜ˜c +Ñ.¨qÑ1Ó2ˆKàœ$×4Ñ4Ó4Ø�I‰I�O‰OÐCÕDà�I‰I�O‰OÐ9Õ:øô ó 	OÜÐ>ÀÑMÓNÐNð	Oús   Á,.C? Ã?Dr*  r+  r†  r`   rD   rB   rÈ  rÈ  L  s^   † Ù/à/€Hð ×)Ñ)Ø×-Ñ-Ø×.Ñ.ñÐð !Ð!€Jñ 	ˆtÐAÈÑLð€Mð BFØ÷;rD   rÈ  c                   óŒ   • \ rS rSrSrSr\R                  \R                  \R                  S.r
SS/r\" SS\S	9/r  SS jrSrg
)Úcmd_setinheritanceix  z$Set inheritance flag on a container.z.%prog <container_dn> <block|inherit> [options]r  r¡   Úinherit_stater  r  rb  Nc                 óä  • UR                  5       S:X  a  [        R                  nO3UR                  5       S:X  a  [        R                  nO[	        SU-  5      eUR                  5       U l        UR                  U R                  SS9U l        [        U R                  U R                  U5      U l
        U R                  5          U R                  R                  U[        R                  SS/S9S	   n[        R"                  " 5       n	[        R$                  " U R                  U5      U	l        SU;   a3  [        R(                  " [+        U5      [        R,                  S5      U	S'   O2[        R(                  " [+        U5      [        R.                  S5      U	S'    U R                  R1                  U	5        g ! [          a    [	        S
U-  5      ef = f! [          a  n
[	        SU-  U
5      eS n
A
ff = f)NÚblockrV  zUnknown inheritance state (%s)Tr  r”   r=  r•   r   r–   r¸  z"Error setting inheritance state %s)rš   r	   rP  ÚGPO_INHERITr   r&  ri   r'  rj   rn   rk   r  r…   r„   r   rƒ   rh   rœ   r€   rQ   r�   r™   rž   rº  r    )rú   r¡   rÎ  r  r  r  r  rÊ  r�   r¤   rm   s              rB   r(  Úcmd_setinheritance.run‰  s©  € ð ×ÑÓ  GÓ+Ü×4Ñ4‰KØ× Ñ Ó" iÓ/Ü×*Ñ*‰KäÐ?À-ÑOÓPÐPà×(Ñ(Ó*ˆŒØ×-Ñ-¨d¯g©gÈÐ-ÐMˆŒ
ä˜$Ÿ'™' 4§:¡:¨qÓ1ˆŒà×ÑÔð	OØ—*‘*×#Ñ#¨¼S¿^¹^Ø/@Ø+6¨-ð $ð 9à9:ñ<ˆCô �KŠK‹MˆÜ�vŠv�d—j‘j ,Ó/ˆŒà˜#ÓÜ ×/Ò/´°KÓ0@Ä#×BVÑBVÐXcÓdˆAˆkŠNä ×/Ò/´°KÓ0@Ä#×BRÑBRÐT_Ó`ˆAˆk‰Nð	XØ�J‰J×Ñ˜aÕ øô ó 	OÜÐ>ÀÑMÓNÐNð	Oûô ó 	XÜÐCÀmÑSÐUVÓWÐWûð	Xús$   Ã.F5 ÆG Æ5GÇ
G/ÇG*Ç*G/r*  r+  r†  r`   rD   rB   rÍ  rÍ  x  sa   † Ù.à?€Hð ×)Ñ)Ø×-Ñ-Ø×.Ñ.ñÐð ! /Ð2€Jñ 	ˆtÐAÈÑLð€Mð QUØ÷"XrD   rÍ  c                   ó”   • \ rS rSrSrSr\R                  \R                  \R                  S.r
S/r\" SS\S9\" S	S
\S9/rSS jrSrg)Ú	cmd_fetchi®  zDownload a GPO.ra  r  r†   r  r  rb  ú--tmpdirú,Temporary directory for copying policy filesNc                 ó@  • UR                  5       U l        UR                  U R                  SS9U l        U(       a"  UR	                  S5      (       a  USS  nX l        OD[        U R                  U R                  5      n[        U R                  U R                  US9U l        U R                  5          [        U R                  U5      S   n[        US   S   5      n	 [        U	5      u  p«n[!        X{U R                  U R                  S
9nU R#                  X15      u  p> [%        XÜU5        U R&                  R)                  SU-  5        g ! [         a    [        SU-  5      ef = f! [         a    [        S	U	-  5      ef = f! [         a  n[        SU5      eS nAff = f)NTr  rg   rd  re  r   rf  rt   úInvalid GPO path (%s)rh  úError copying GPO from DCúGPO copied to %s
)r&  ri   r'  rj   rU   rk   r   rn   r  r�   r…   rh   r   r™   r¯   r¬   r3   rý   ræ   r÷   rÑ   )rú   r†   r  rû   r  r  r  r}  r�   r­   Údom_nameÚserviceÚ	sharepathrÔ   rü   rm   s                   rB   r(  Úcmd_fetch.runÀ  s‡  € à×(Ñ(Ó*ˆŒØ×-Ñ-¨d¯g©gÈÐ-ÐMˆŒ
ö �—‘˜i×(Ñ(Ø˜A˜B˜%ˆKØ�Hä'¨¯©°·±Ó<ˆKÜ˜dŸg™g t§z¡z°kÑBˆDŒHà×ÑÔð	@Ü˜tŸz™z¨3Ó/°Ñ2ˆCô
 �#Ð&Ñ'¨Ñ*Ó+ˆð	>Ü-6°s«^Ñ*ˆX 	ô
 ˜k°t·w±wØ$(§J¡Jñ0ˆð ×.Ñ.¨vÓ;‰ˆð	?Ü*¨4¸FÔCð 	�	‰	�‰Ð,¨vÑ5Õ6øô- ó 	@ÜÐ8¸3Ñ>Ó?Ð?ð	@ûô ó 	>ÜÐ6¸Ñ<Ó=Ð=ð	>ûô ó 	?äÐ:¸AÓ>Ð>ûð	?ús0   Â3E
 ÃE& ÄF Å
E#Å&E?Æ
FÆFÆFr*  ©NNNNNr†  r`   rD   rB   rÔ  rÔ  ®  sa   † Ùà&€Hð ×)Ñ)Ø×-Ñ-Ø×.Ñ.ñÐð �€Jñ 	ˆtÐAÈÑLÙˆzÐ NÐUXÑYð€M÷
&7rD   rÔ  c            
       óÈ   • \ rS rSrSrSr\R                  \R                  \R                  S.r
S/r\" SS\S9\" S	S
\S9\" SSSSS9\" SSS\S9/r  SS jr\S 5       rSrg)Ú
cmd_backupié  zBackup a GPO.ra  r  r†   r  r  rb  rÕ  rÖ  z--generalizez"Generalize XML entities to restoreFr’  ©r  r�  rŽ  ú
--entitiesz4File to export defining XML entities for the restoreÚent_file)r  r  r  Nc	                 ó|  • UR                  5       U l        UR                  U R                  SS9U l        U(       a"  UR	                  S5      (       a  USS  n	X l        OD[        U R                  U R                  5      n	[        U R                  U R                  U	S9U l        U R                  5          [        U R                  U5      S   n
[        U
S   S   5      n [        U5      u  pÍn[!        X�U R                  U R                  S
9nU R#                  X15      u  nn [%        XþU5        U R&                  R)                  SU-  5        U(       Ga  U R&                  R)                  S5        [*        R-                  U R&                  UU5      nUR/                  5        VVs/ s H
  u  nnUU4PM     nnnUR1                  5         SR3                  S U 5       5      nU(       aE  [5        US5       nUR)                  U5        S S S 5        U R&                  R)                  SU-  5        O6U R&                  R)                  S5        U R&                  R)                  U5        S HX  nUU
;   d  M  [5        [6        R8                  R3                  UUS-   5      S5       nUR)                  U
U   S   5        S S S 5        MZ     g ! [         a    [        SU-  5      ef = f! [         a    [        S	U-  5      ef = f! [         a  n[        SU5      eS nAff = fs  snnf ! , (       d  f       GN= f! , (       d  f       MÚ  = f)NTr  rg   rd  re  r   rf  rt   rØ  rh  rÙ  rÚ  z(
Attempting to generalize XML entities:
rJ   c              3   óV   #   • U  H  u  pS UR                  S5       SU S3v •  M!     g7f)z	<!ENTITY z&;z "z">
N)rR   )ra   ÚentÚvals      rB   rb   Ú!cmd_backup.run.<locals>.<genexpr>0  s1   é € ð 5Ú+3™x˜sð ' s§y¡y°£Ð&7°r¸#¸¸dÕCÚ+3ùs   ‚')Úwz$Entities successfully written to %s
z
Entities:
©ru   rv   ú	.SAMBAEXTrÃ   )r&  ri   r'  rj   rU   rk   r   rn   r  r�   r…   rh   r   r™   r¯   r¬   r3   rý   râ   r÷   rÑ   rá  Úgeneralize_xml_entitiesÚitemsrÌ   r>   rÐ   rÅ   rÆ   )rú   r†   r  rû   Ú
generalizer  r  r  rä  r}  r�   r­   rÛ  rÜ  rÝ  rÔ   rü   rm   ÚentitiesÚkÚvÚent_listÚentsrà   Úexts                            rB   r(  Úcmd_backup.runÿ  sÎ  € ð ×(Ñ(Ó*ˆŒØ×-Ñ-¨d¯g©gÈÐ-ÐMˆŒ
ö �—‘˜i×(Ñ(Ø˜A˜B˜%ˆKØ�Hä'¨¯©°·±Ó<ˆKÜ˜dŸg™g t§z¡z°kÑBˆDŒHà×ÑÔð	@Ü˜tŸz™z¨3Ó/°Ñ2ˆCô
 �#Ð&Ñ'¨Ñ*Ó+ˆð	>Ü-6°s«^Ñ*ˆX 	ô
 ˜k°t·w±wØ$(§J¡Jñ0ˆð ×.Ñ.¨vÓ;‰ˆ�ð	?Ü,¨T¸fÔEð
 	�	‰	�‰Ð,¨vÑ5Ô6çØ�I‰I�O‰OÐHÔIÜ!×9Ñ9¸$¿)¹)ÀVØ:@óBˆHð ,4¯>©>Ô+;Ô<Ò+;¡4 1 a˜˜A›Ñ+;ˆHÑ<Ø�M‰MŒOØ—7‘7ñ 5Ù+3ó5ó 5ˆDö Ü˜( CÔ(¨AØ—G‘G˜D”M÷ )à—	‘	—‘Ð GØ (ñ!)õ *ð —	‘	—‘ Ô0Ø—	‘	—‘ Ô%ó IˆCØ�c�zÜœ"Ÿ'™'Ÿ,™, v¨s°[Ñ/@ÓAÀ4ÔHÈAØ—G‘G˜C ™H Q™KÔ(÷ IÑHò Iøô[ ó 	@ÜÐ8¸3Ñ>Ó?Ð?ð	@ûô ó 	>ÜÐ6¸Ñ<Ó=Ð=ð	>ûô ó 	?äÐ:¸AÓ>Ð>ûð	?üó =÷ )Ö(ú÷ IÖHúsN   Â3J> ÃK Ä K6 Æ!LÇ0LÊL,Ê>KËK3Ë6
LÌ LÌLÌ
L)Ì,
L;	c                 óä  • 0 n[         R                  R                  U5      (       d  [         R                  " U5        U/nU/nU(       Gaî  UR	                  5       nUR	                  5       n[         R
                  " U5      nUR                  5         U GH—  n	[         R                  R                  Xi5      n
[         R                  R                  Xy5      n[         R                  R                  U
5      (       a`  UR                  U
5        UR                  U5        [         R                  R                  U5      (       d  [         R                  " U5        MÄ  MÆ  U
R                  S5      (       a~  [         R                  R                  U
5      S S n[        U5      n [        U
S5       nUR                  5       nS S S 5        [        R                   " W5      nUR#                  UX³5      nGMZ  [         R                  R)                  X«5      (       a  GM�  [*        R,                  " X«5        GMš     U(       a  GMî  U$ ! , (       d  f       N‡= f! [$         a    U R'                  SU-  5         GMÛ  f = f)NrÄ   éüÿÿÿr   z%SKIPPING: Generalizing failed for %s
)rÅ   rÆ   r™  rÈ   rÉ   rê   rÌ   r>   rÇ   rW   ÚendswithÚbasenamer´   rÐ   rë   ÚETÚ
fromstringÚgeneralize_xmlr   rÑ   ÚsamefileÚshutilÚcopy2)r÷   Ú	sourcedirÚ	targetdirrð  rÙ   rØ   rÛ   rÚ   rÜ   rm   rÞ   rÝ   Úto_parserá   Últemprß   Úconcrete_xmlÚfound_entitiess                     rB   rí  Ú"cmd_backup.generalize_xml_entitiesB  sÂ  € àˆä�w‰w�~‰~˜i×(Ñ(Ü�HŠH�YÔà�ˆØ�ˆßØ—J‘J“LˆEØ—J‘J“LˆEä—j’j Ó'ˆGØ�L‰LŒNÜ�ÜŸ™Ÿ™ eÓ/�ÜŸ™Ÿ™ eÓ/�ä—7‘7—=‘= ×(Ñ(Ø—M‘M &Ô)Ø—M‘M &Ô)ÜŸ7™7Ÿ>™>¨&×1Ñ1ÜŸš Ö(ñ 2ð —‘ v×.Ñ.ô $&§7¡7×#3Ñ#3°FÓ#;¸C¸RÐ#@˜ä!,¨XÓ!6˜ð\Ü!% f¨cÔ!2°eØ',§z¡z£| ÷ "3ô ,.¯=ª=¸Ó+>˜LØ-3×-BÑ-BÀ<ÐQWÓ-b›Nô  "Ÿw™w×/Ñ/°×?Ô?Ü"ŸLšL¨×8ñC ÷ ‰fðR ˆ÷# "3Õ!2ûô
  5ó \Ø ŸJ™JÐ'OÐRZÑ'Z×[Ð[ð\ús*   ÆIÆ)H;Æ:0IÈ;
I		ÉIÉI/É.I/r*  )NNFNNNN)r  r  r  r  r-  r.  rG   r/  r0  r1  r2  r^  r   r™   r3  r(  Ústaticmethodrí  r	  r`   rD   rB   rá  rá  é  s¥   † Ùà&€Hð ×)Ñ)Ø×-Ñ-Ø×.Ñ.ñÐð �€Jñ 	ˆtÐAÈÑLÙˆzÐ NÐUXÑYÙˆ~Ð$HØ \ñ	3áˆ|Ð"XØ Sñ	*ð€Mð IMØ6:ôA)ðF ñ1ó ó1rD   rá  c                   ó˜   • \ rS rSrSrSr\R                  \R                  \R                  S.r
S/r\" SS\S9\" S	S
\S9/r  SS jrSrg)Ú
cmd_createiw  zCreate an empty GPO.z%prog <displayname> [options]r  r‡   r  r  rb  rÕ  rÖ  Nc                 óê  • UR                  5       U l        UR                  U R                  SS9U l        [	        U R                  U R                  S9nU(       ac  UR                  S5      (       aM  USS  nX l        [        R                  [        R                  -  [        R                  -  n	UR                  X‰S9n
O‹[        R                  [        R                  -  [        R                  -  n	UR                  U R                  R                  S5      U	S9n
U
R                  n[        U R                  U R                  US	9U l        U R                  5         [!        U R"                  US
9nUR$                  S:”  a  ['        SU-  5      e[)        [*        R,                  " 5       5      nSUR/                  5       -  nXÐl        U
R2                  nSU< SU< SU< 3nU R5                  X=5      u  U l        nUU l         [:        R<                  " [:        R>                  RA                  US5      5        [:        R<                  " [:        R>                  RA                  US5      5        Sn[C        [:        R>                  RA                  US5      S5      RE                  U5        [I        U5      u  nnnUU l%        [M        UUU R                  U R                  S9nUU l'        U R"                  RQ                  5          [S        U R"                  U5      n[T        RV                  " 5       nUUl,        [T        RZ                  " S[T        R\                  S5      US'   U R"                  R_                  U5        [T        RV                  " 5       n[T        R`                  " U R"                  S[)        U5      -  5      Ul,        [T        RZ                  " S[T        R\                  S5      US'   U R"                  R_                  U5        [T        RV                  " 5       n[T        R`                  " U R"                  S[)        U5      -  5      Ul,        [T        RZ                  " S[T        R\                  S5      US'   U R"                  R_                  U5        [b        Rd                  [b        Rf                  -  [b        Rh                  -  n[!        U R"                  UUS9S   nUS   S   n[k        [b        Rl                  U5      Ro                  5       n[b        Rp                  " U R"                  Rs                  5       5      n[u        UU5      n[b        Rl                  Rw                  UU5      n[y        UU5        [b        Rd                  [b        Rf                  -  [b        Rh                  -  [b        Rz                  -  nUR}                  UUU5        [        UUU5        [T        RV                  " 5       nUUl,        [T        RZ                  " U[T        R€                  S 5      US!'   [T        RZ                  " U[T        R€                  S"5      US#'   [T        RZ                  " S$[T        R€                  S%5      US&'   [T        RZ                  " S'[T        R€                  S(5      US)'   [T        RZ                  " S$[T        R€                  S*5      US+'   S,/n U R"                  Rƒ                  UU S-9  U R"                  R…                  5         Uc   [ˆ        RŠ                  " U R6                  5        U RŒ                  RE                  S.U< S/U< S035        g ! [F         a  n['        SU5      eS nAff = f! [F         a    U R"                  R‡                  5         e f = f)1NTr  )rj   ri   rg   rd  )Úaddressr@   ri  )Údomainr@   re  )r‡   r   z%A GPO already existing with name '%s'ú{%s}r¨   z\sysvol\z
\Policies\ÚMachineÚUserz[General]
Version=0
zGPT.INIrê  zError Creating GPO filesrh  ÚgroupPolicyContainerr8  Úa01ú
CN=User,%srÀ  úCN=Machine,%s)r†   rˆ   rp   rs   Úa02rt   Úa03r#  rq   Úa05Ú2ÚgpcFunctionalityVersionÚa07r@   Úa04zpermissive_modify:0)r|   zGPO 'z' created as r%  )Gr&  ri   r'  rj   r   rU   rk   r   ÚNBT_SERVER_LDAPÚNBT_SERVER_DSÚNBT_SERVER_WRITABLEÚfinddcru  Úpdc_dns_namern   r  r�   r…   Úcountr   r™   ÚuuidÚuuid4ÚupperÚgpo_nameÚ
dns_domainrý   rû   rü   rÅ   rÈ   rÆ   r>   rÐ   rÑ   rh   r¯   rÝ  r3   rÔ   Útransaction_startr4   r   rœ   rQ   r�   rº  Úaddr€   r
   rF  rG  rH  r   rI  rt  Údom_sidÚget_domain_sidr   Ú	from_sddlr2   ÚSECINFO_PROTECTED_DACLÚset_aclrï   rž   r    Útransaction_commitÚtransaction_cancelrÿ  Úrmtreer÷   )!rú   r‡   r  rû   r  r  r  Únetr}  r@   Ú	cldap_retr�   Úguidr†   ri  Úunc_pathrü   Úgpt_contentsrm   rÛ  rÜ  rÝ  rÔ   r£   r¤   Úds_sd_flagsÚ	ds_sd_ndrÚds_sdÚ
domain_sidÚsddlÚfs_sdÚsior|   s!                                    rB   r(  Úcmd_create.run‰  s¼  € ð ×(Ñ(Ó*ˆŒØ×-Ñ-¨d¯g©gÈÐ-ÐMˆŒ
ä˜Ÿ
™
 t§w¡wÑ/ˆö �—‘˜i×(Ñ(Ø˜A˜B˜%ˆKØŒHÜ×(Ñ(Ü×&Ñ&ñ'ä×,Ñ,ñ-ˆEð Ÿ
™
¨;˜
ÐD‰Iä×(Ñ(Ü×&Ñ&ñ'ä×,Ñ,ñ-ˆEð Ÿ
™
¨$¯'©'¯+©+°gÓ*>Àe˜
ÐLˆIØ#×0Ñ0ˆKÜ˜dŸg™g t§z¡z°kÑBˆDŒHà×ÑÔä˜4Ÿ:™:°;Ñ?ˆØ�9‰9�q‹=ÜÐFÈÑTÓUÐUô ”D—J’J“LÓ!ˆØ�t—z‘z“|Ñ#ˆàŒà×$Ñ$‰Û9>ÃÂsÐKˆð #×3Ñ3°FÓ@ÑˆŒ�VØˆŒð	>Ü�HŠH”R—W‘W—\‘\ &¨)Ó4Ô5Ü�HŠH”R—W‘W—\‘\ &¨&Ó1Ô2Ø7ˆLÜ”—‘—‘˜f iÓ0°#Ó6×<Ñ<¸\ÔJô
 *3°8Ó)<Ñ&ˆ�7˜IØ"ˆŒÜ˜k¨7°t·w±wØ$(§J¡Jñ0ˆð ˆŒ	à�
‰
×$Ñ$Ô&ð<	,ä §
¡
¨CÓ0ˆFä—’“ˆAØˆAŒDÜ×)Ò)Ð*@Ä#×BRÑBRÐTaÓbˆAˆe‰HØ�J‰J�N‰N˜1Ôô —’“ˆAÜ—6’6˜$Ÿ*™* l´S¸³[Ñ&@ÓAˆAŒDÜ×)Ò)¨+´s×7GÑ7GÈÓWˆAˆe‰HØ�J‰J�N‰N˜1Ôô —’“ˆAÜ—6’6˜$Ÿ*™* o¼¸F»Ñ&CÓDˆAŒDÜ×)Ò)¨+´s×7GÑ7GÈÓWˆAˆe‰HØ�J‰J�N‰N˜1Ôô $×1Ñ1Ü#×1Ñ1ñ2ä#×0Ñ0ñ1ˆKô ˜tŸz™z¨s¸[ÑIÈ!ÑLˆCØÐ2Ñ3°AÑ6ˆIÜœx×2Ñ2°IÓ>×FÑFÓHˆEô "×)Ò)¨$¯*©*×*CÑ*CÓ*EÓFˆJÜ˜u jÓ1ˆDÜ×'Ñ'×1Ñ1°$¸
ÓCˆEô " $¨	Ô2ô ×)Ñ)Ü×)Ñ)ñ*ä×(Ñ(ñ)ô ×2Ñ2ñ3ˆCð �L‰L˜ E¨3Ô/ô +¨4°¸ÔCä—’“ˆAØˆAŒDÜ×)Ò)¨+´s×7KÑ7KÈ]Ó[ˆAˆe‰HÜ×)Ò)¨(´C×4HÑ4HÐJZÓ[ˆAˆe‰HÜ×)Ò)¨#¬s×/CÑ/CÀ_ÓUˆAˆe‰HÜ×)Ò)¨#¬s×/CÑ/CÐE^Ó_ˆAˆe‰HÜ×)Ò)¨#¬s×/CÑ/CÀWÓMˆAˆe‰HØ-Ð.ˆHØ�J‰J×Ñ˜a¨(ÐÑ3ð
 �J‰J×)Ñ)Ô+à‰>ä�MŠM˜$Ÿ+™+Ô&à�	‰	�Š³kÃ3ÐGÕHøô] ó 	>ÜÐ9¸1Ó=Ð=ûð	>ûôH ó 	Ø�J‰J×)Ñ)Ô+Øð	ús&   Ç<B#\. Ë7O] Ü.
]	Ü8]Ý]	Ý&]2)rÔ   rj   r%  rü   ri   rÝ  rû   rk   rß  r†  r`   rD   rB   r
  r
  w  sm   † Ùà.€Hð ×)Ñ)Ø×-Ñ-Ø×.Ñ.ñÐð  �€Jñ 	ˆtÐAÈÑLÙˆzÐ NÐUXÑYð€Mð
 NRØ÷~IrD   r
  c            
       óÐ   ^ • \ rS rSrSrSr\R                  \R                  \R                  S.r
SS/r\" SS\S	9\" S
S\S	9\" SS\S	9\" SSSSS9/rSS jr  SU 4S jjrSrU =r$ )Úcmd_restorei
  z!Restore a GPO to a new container.z/%prog <displayname> <backup location> [options]r  r‡   Úbackupr  r  rb  rÕ  rÖ  rã  z8File defining XML entities to insert into DOCTYPE headerz--restore-metadataz7Keep the old GPT.INI file and associated version numberFr’  râ  c                 ó¬  • Sn[         R                  R                  U5      (       d  [         R                  " U5        U/nU/nU(       Ga  UR	                  5       nUR	                  5       n[         R
                  " U5      n	U	R                  5         U	 GH¿  n
[         R                  R                  Xz5      n[         R                  R                  XŠ5      n[         R                  R                  U5      (       a`  UR                  U5        UR                  U5        [         R                  R                  U5      (       d  [         R                  " U5        MÄ  MÆ  UR                  S5      (       d  MÞ  [         R                  R                  U5      S S n[        U5      n [        US5       nUR                  5       nSnUR                  U5      (       a:  U[!        U5      S  nUR#                  [$        R&                  " UU-   U-   5      5        O(UR#                  [$        R&                  " UU-   5      5        UR)                  US S 5        S S S 5        GMÂ     U(       a  GM  g g ! , (       d  f       GMà  = f! [*         a`    US S U-   n[,        R.                  " UUS S 5        U R0                  R3                  SU-  5        U R0                  R3                  S5         GML    SS KnUR7                  5         US S U-   n[,        R.                  " UUS S 5        U R0                  R3                  S	U-  5        U R0                  R3                  S5         GMÀ  = f)
Nr¶   rÄ   rø  r   z&<?xml version="1.0" encoding="utf-8"?>zWARNING: No such parser for %s
z.WARNING: Falling back to simple copy-restore.
r   z%WARNING: Error during parsing for %s
)rÅ   rÆ   r™  rÈ   rÉ   rê   rÌ   r>   rÇ   rW   rù  rú  r´   rÐ   rë   rU   rT   Úload_xmlrû  rü  Úwrite_binaryr   rÿ  r   r÷   rÑ   Ú	tracebackÚ	print_exc)rú   r  r  Ú
dtd_headerr×   rÙ   rØ   rÛ   rÚ   rÜ   rm   rÞ   rÝ   r  rá   r  rß   Úxml_headÚoriginal_filerD  s                       rB   Ú restore_from_backup_to_local_dirÚ,cmd_restore.restore_from_backup_to_local_dir  s‡  € Øˆä�w‰w�~‰~˜i×(Ñ(Ü�HŠH�YÔà�ˆØ�ˆßØ—J‘J“LˆEØ—J‘J“LˆEä—j’j Ó'ˆGØ�L‰LŒNÜ�ÜŸ™Ÿ™ eÓ/�ÜŸ™Ÿ™ eÓ/�ä—7‘7—=‘= ×(Ñ(Ø—M‘M &Ô)Ø—M‘M &Ô)ÜŸ7™7Ÿ>™>¨&×1Ñ1ÜŸš Ö(ñ 2ð —‘ v×.Ó.ô $&§7¡7×#3Ñ#3°FÓ#;¸C¸RÐ#@˜ä!,¨XÓ!6˜ð#_Ü!% f¨cÔ!2°eØ',§z¡z£| Ø+S à#'§?¡?°8×#<Ñ#<ð ,0´°H³°Ð+? Dð %+§O¡O´B·M²MÀ(ÈZÑBWÐZ^ÑB^Ó4_Õ$`à$*§O¡O´B·M²MÀ*ÈtÑBSÓ4TÔ$Uð !'× 3Ñ 3°F¸3¸B°KÔ @÷! "3Ò!2ñ% ÷ ‹f÷0 "3×!2ûô$  3ó _à,2°3°B¨K¸&Ñ,@˜MÜ"ŸLšL¨¸¸sÀ¸ÔDà ŸI™IŸO™OÐ,NÐQYÑ,YÔZØ ŸI™IŸO™OÐ,]×^Ð^ð	_Û,Ø%×/Ñ/Ô1ð -3°3°B¨K¸&Ñ,@˜MÜ"ŸLšL¨¸¸sÀ¸ÔDà ŸI™IŸO™OÐ,TÐW]Ñ,]Ô^Ø ŸI™IŸO™OÐ,]×^Ð^ús3   ÆI6Æ+BI#É
I6É#
I3	É-I6É3I6É6A%MËA0Mc
                 ó¦  >• Sn
[         R                  R                  U5      (       d  [        SU-  5      eUb²  Sn
[         R                  R                  U5      (       d  [        SU-  5      e[	        US5       nUR                  5       n[        R                  " SU[        R                  [        R                  -  S9 c  [        S5      eX¬R                  5       -  n
S S S 5        U
S	-  n
[        TU ]1  XXFXx5         Uc)  U R                  X@R                  5      u  U l        nXÐl        U R#                  X R                   U
5        U	(       + n[%        U R&                  U R                   U R(                  S
US9  [+        U R,                  U R                  5      nS HÑ  n[         R                  R/                  UUS-   5      n[         R                  R                  U5      (       d  ML  [	        US5       nUR                  5       nS S S 5        [0        R2                  " 5       nUUl        [0        R6                  " W[0        R8                  U5      UU'   U R,                  R;                  U5        MÓ     Uc!  [<        R>                  " U R                  5        g g ! , (       d  f       GN¼= f! , (       d  f       N©= f! [@         a�  nSS K!nURE                  5         U RF                  RI                  [K        U5      S-   5        U RF                  RI                  S5        [M        5       nUR                  U R                  X6Xx5        [        SU-  5      eS nAff = f)NrJ   z"Backup directory does not exist %sz<!DOCTYPE foobar [
zEntities file does not exist %sr   z*(\s*<!ENTITY\s+[a-zA-Z0-9_]+\s+.*?>)+\s*\Zr±   zPEntities file does not appear to conform to format
e.g. <!ENTITY entity "value">z
]>
T)rí   rî   rë  rì  rè   r   r%  z%Failed to restore GPO -- deleting...
zFailed to restore: %s)'rÅ   rÆ   r™  r   rÐ   rë   r²   r³   Ú	MULTILINEÚDOTALLrR   Úsuperr(  rý   r%  rû   rü   rI  rï   rÔ   rÝ  r4   r…   r>   r   rœ   rQ   r�   rž   r    rÿ  r0  rh   rD  rE  r÷   rÑ   r™   Úcmd_del)rú   r‡   r@  r  rû   rð  r  r  r  Úrestore_metadatarF  Úentities_fileÚentities_contentrü   Úkeep_new_filesr£   rõ  Úext_filerà   rß   r¤   rm   rD  ÚcmdÚ	__class__s                           €rB   r(  Úcmd_restore.runc  sÂ  ø€ ð ˆ
ä�w‰w�~‰~˜f×%Ñ%ÜÐCÀfÑLÓMÐMàÑð 0ˆJä—7‘7—>‘> (×+Ñ+Ü"Ð#DØ#+ñ$,ó -ð -ä�h Ô$¨Ø#0×#5Ñ#5Ó#7Ð ô —8’8ÐIØ,´B·L±LÄÇÁÑ4JñLØOSñTä&ð (Gó Hð Hð ×4Ñ4Ó6Ñ6�
÷ %ð ˜(Ñ"ˆJä‰‰�K F°xÔMð/	<Ø‰~à&*×&;Ñ&;¸FÇMÁMÓ&RÑ#�”˜VØ$”ð ×1Ñ1°&¿+¹+Ø2<ô>ð "2Ô1ˆNô +¨4¯9©9°d·k±kØ+/¯>©>Ø?CØ?MòOô
   §
¡
¨D¯M©MÓ:ˆFó M�ÜŸ7™7Ÿ<™<¨°°kÑ0AÓB�Ü—7‘7—>‘> (×+Ó+Ü˜h¨Ô-°Ø Ÿv™v›x˜÷ .ô Ÿš›�AØ!�A”DÜ ×/Ò/°´c×6JÑ6JØ03ó5�A�c‘Fð —J‘J×%Ñ% aÖ(ñ Mð ‰~ä—’˜dŸk™kÕ*ð ÷c %Ö$ú÷N .Õ-ûô ó 		<ÛØ×ÑÔ!Ø�I‰I�O‰OœC ›F T™MÔ*à�I‰I�O‰OÐDÔEÜ“)ˆCØ�G‰G�D—M‘M 1°ÔGäÐ6¸Ñ:Ó;Ð;ûð		<úsF   Á9A%JÃ=C$J6 Ç%J6 Ç1J%ÈBJ6 Ê
J"Ê%
J3	Ê/J6 Ê6
MË BMÍM)rü   rû   )rJ   rª  )r  r  r  r  r-  r.  rG   r/  r0  r1  r2  r^  r   r™   r3  rI  r(  r	  Ú__classcell__)rV  s   @rB   r?  r?  
  sŸ   ø† Ù+à@€Hð ×)Ñ)Ø×-Ñ-Ø×.Ñ.ñÐð   Ð*€Jñ 	ˆtÐAÈÑLÙˆzÐ NÐUXÑYÙˆ|Ð"\ÐcfÑgÙÐ#Ð*cØ \ñ	3ð	€MôB_ðH eiØ/3÷O<õ O<rD   r?  c                   óŠ   • \ rS rSrSrSr\R                  \R                  \R                  S.r
S/r\" SS\S9/r  SS
 jrSrg	)rO  iµ  zDelete a GPO.ra  r  r†   r  r  rb  Nc           	      óö  • UR                  5       U l        UR                  U R                  SS9U l        U(       a"  UR	                  S5      (       a  USS  nX l        OD[        U R                  U R                  5      n[        U R                  U R                  US9U l        U R                  5          [        U R                  US9S   n[        US   S   5      n[        U5      u  pšn[        XjU R                  U R                  S
9nU R                  R!                  5          [#        U R                  U5      n[%        U5      (       ab  U R&                  R)                  SU-  5        U H>  n[+        U R                  US   U5        U R&                  R)                  SUS   -  5        M@     [-        U R                  U5      nU R                  R/                  [0        R2                  " U R                  S[        U5      -  5      S/5        U R                  R/                  [0        R2                  " U R                  S[        U5      -  5      S/5        U R                  R/                  U5        UR5                  U5        U R                  R7                  5         U R&                  R)                  SU-  5        g ! [         a    [        S	U-  5      ef = f! [         a    U R                  R9                  5         e f = f)NTr  rg   rd  re  r·  r   rt   rf  rh  zGPO %s is linked to containers
rQ   z    Removed link from %s.
r  ztree_delete:1r  zGPO %s deleted.
)r&  ri   r'  rj   rU   rk   r   rn   r  r�   r…   r™   rh   r   r¯   r3   r'  r’   rT   r÷   rÑ   r¦   r4   Údeleter   r€   Údeltreer.  r/  )rú   r†   r  r  r  r  r}  r�   r4  rÛ  rÜ  rÝ  rÔ   r¤   r£   s                  rB   r(  Úcmd_del.runÆ  sc  € ð ×(Ñ(Ó*ˆŒØ×-Ñ-¨d¯g©gÈÐ-ÐMˆŒ
ö �—‘˜i×(Ñ(Ø˜A˜B˜%ˆKØ�Hä'¨¯©°·±Ó<ˆKÜ˜dŸg™g t§z¡z°kÑBˆDŒHà×ÑÔð	@Ü˜tŸz™z¨sÑ3°AÑ6ˆCÜ˜3Ð/Ñ0°Ñ3Ó4ˆHô
 *3°8Ó)<Ñ&ˆ˜IÜ˜k°t·w±wØ$(§J¡Jñ0ˆð 	�
‰
×$Ñ$Ô&ð	,ä$ T§Z¡Z°Ó5ˆCä�3�x‰xØ—	‘	—‘Ð BÀSÑ HÔIÛ�AÜ  §¡¨Q¨t©W°cÔ:Ø—I‘I—O‘OÐ$AÀAÀdÁGÑ$KÖLñ ô
   §
¡
¨CÓ0ˆFØ�J‰J×ÑœcŸfšf T§Z¡Z°ÄÀFÃÑ1KÓLÈÐN_Ô`Ø�J‰J×ÑœcŸfšf T§Z¡Z°Ä3ÀvÃ;Ñ1NÓOÐRaÐQbÔcØ�J‰J×Ñ˜fÔ%ð �L‰L˜Ô#ð �J‰J×)Ñ)Ô+à�	‰	�‰Ð+¨cÑ1Õ2øôE ó 	@ÜÐ8¸3Ñ>Ó?Ð?ð	@ûô8 ó 	Ø�J‰J×)Ñ)Ô+Øð	ús   Â3(J6 Ä#EK Ê6KË&K8r*  r+  r†  r`   rD   rB   rO  rO  µ  s[   † Ùà&€Hð ×)Ñ)Ø×-Ñ-Ø×.Ñ.ñÐð �€Jñ 	ˆtÐAÈÑLð€Mð 9=Ø÷63rD   rO  c            	       ó†   • \ rS rSrSrSr\R                  \R                  \R                  S.r
\" SSS\SS	S
9/rSS jrSrg)Úcmd_aclcheckiÿ  z.Check all GPOs have matching LDAP and DS ACLs.r  r  r  r  r  r  r  r  Nc           	      ó¸  • UR                  5       U l        UR                  U R                  SS9U l        [	        U R                  U R                  U5      U l        U(       a"  UR                  S5      (       a  USS  nXl        OD[        U R                  U R                  5      n[	        U R                  U R                  US9U l        U R                  5         [        U R                  S 5      nU GHJ  n[        US   S   5      n [        U5      u  pšn[        XZU R                  U R                  S	9nUR!                  U["        R$                  ["        R&                  -  ["        R(                  -  ["        R*                  5      nS
U;  a  [        S5      eUS
   S   n[-        ["        R.                  U5      R1                  5       n["        R2                  " U R                  R5                  5       5      n[7        UU5      nUR1                  U5      U:w  d  GM'  [        SUR1                  U5      < SU< SU< 35      e   g ! [         a    [        SU-  5      ef = f)NTr  rg   rd  re  rt   r   rØ  rh  rp   zKCould not read nTSecurityDescriptor. This requires an Administrator accountzInvalid GPO ACL z
 on path (z), should be )r&  ri   r'  rj   rn   rk   rU   r   r  r�   r…   r™   r¯   r¬   r   r3   Úget_aclr
   rF  rG  rH  ÚSEC_FLAG_MAXIMUM_ALLOWEDr   rI  rt  r)  r*  r   )rú   r  r  r  r  r}  r�   r¤   r­   rÛ  rÜ  rÝ  rÔ   r;  r7  r8  r9  Úexpected_fs_sddls                     rB   r(  Úcmd_aclcheck.run  s  € à×(Ñ(Ó*ˆŒØ×-Ñ-¨d¯g©gÈÐ-ÐMˆŒ
ä˜$Ÿ'™' 4§:¡:¨qÓ1ˆŒö �—‘˜i×(Ñ(Ø˜A˜B˜%ˆKØ�Hä'¨¯©°·±Ó<ˆKÜ˜dŸg™g t§z¡z°kÑBˆDŒHà×ÑÔä˜4Ÿ:™: tÓ,ˆäˆAä�aÐ(Ñ)¨!Ñ,Ó-ˆCðBÜ1:¸3³Ñ.� Iô
 " +¸4¿7¹7Ø(,¯
©
ñ4ˆDð —L‘L ¬H×,BÑ,BÄX×E[ÑE[Ñ,[Ô^f×^sÑ^sÑ,sÔu}÷  vWñ  vWó  XˆEà%¨QÓ.Ü"ð $Ló Mð Mð Ð0Ñ1°!Ñ4ˆIÜœx×2Ñ2°IÓ>×FÑFÓHˆEô "×)Ò)¨$¯*©*×*CÑ*CÓ*EÓFˆJÜ*¨5°*Ó=Ðà—‘˜jÓ)Ð-=Ö=Ý"ÐV[×VcÑVcÐdnÖVoÓqzò  }Mð  $Nó  Oð  Oò5 øô
 ó BÜ"Ð#:¸SÑ#@ÓAÐAðBús   ÄI É Ir*  r+  r,  r`   rD   rB   r_  r_  ÿ  sU   † Ù8à €Hð ×)Ñ)Ø×-Ñ-Ø×.Ñ.ñÐñ 	ˆt�WÐ#JÐQTØ 3ñ	(ð€M÷
-OrD   r_  c            
       óì   • \ rS rSrSrSr\R                  \R                  \R                  S.r
\" SSS\SS	S
9\" SS\\R                  R                  \R"                  " 5       S5      S9/r  SS jrSrg)Úcmd_admxloadi>  z Loads samba admx files to sysvolr  r  r  r  r  r  r  r  z
--admx-dirz)Directory where admx templates are storedz
samba/admx)r  r  r�  Nc                 óÚ  • UR                  5       U l        UR                  U R                  SS9U l        U(       a"  UR	                  S5      (       a  USS  nXl        OD[        U R                  U R                  5      n[        U R                  U R                  US9U l        [        USU R                  U R                  S9nSR                  U R                  R                  S	5      R                  5       S
S/5      n UR                  U5        [$        R&                  " U5       H¸  u  p«nU H¬  nU
R)                  US5      n[$        R*                  R                  X­5      nSR                  XŽ/5      R)                  SS5      nSR                  UU/5      n [-        UU5        [/        US5       n UR1                  UUR3                  5       5        S S S 5        M®     Mº     U R4                  R7                  S5        g ! [         aE  n	U	R                  S   [        :X  a  [!        S5      eU	R                  S   ["        :w  a  e  S n	A	GN8S n	A	ff = f! [         aD  n	U	R                  S   [        :X  a  [!        S5      eU	R                  S   ["        :w  a  e  S n	A	NõS n	A	ff = f! [         a-  n	U	R                  S   [        :X  a  [!        S5      e S n	A	GNS n	A	ff = f! , (       d  f       GM½  = f)NTr  rg   rd  re  rg  rh  r©   ri  rj  ÚPolicyDefinitionsr   rm  rJ   rª   rè   a  Installing ADMX templates to the Central Store prevents Windows from displaying its own templates in the Group Policy Management Console. You will need to install these templates from https://www.microsoft.com/en-us/download/102157 to continue using Windows Administrative Templates.
)r&  ri   r'  rj   rU   rk   r   rn   r3   r>   ru  rš   rÈ   r   rv  r1   r   r0   rÅ   ÚwalkrŸ  rÆ   r2   rÐ   rì   rë   r÷   rÑ   )rú   r  r  r  r  Úadmx_dirr}  rÔ   Úsmb_dirrm   ÚdirnameÚdirsÚfilesÚfnameÚpath_in_admxÚ	full_pathÚsub_dirÚsmb_pathrà   s                      rB   r(  Úcmd_admxload.runP  s˜  € à×(Ñ(Ó*ˆŒØ×-Ñ-¨d¯g©gÈÐ-ÐMˆŒ
ö �—‘˜i×(Ñ(Ø˜A˜B˜%ˆKØ�Hä'¨¯©°·±Ó<ˆKÜ˜dŸg™g t§z¡z°kÑBˆDŒHô ˜kØ&Ø!%§¡Ø$(§J¡Jñ0ˆð
 —)‘)˜TŸW™WŸ[™[¨Ó1×7Ñ7Ó9Ø'Ð)<ð>ó ?ˆð	Ø�J‰J�wÔô %'§G¢G¨HÖ$5Ñ ˆG˜5Û�Ø&Ÿ™¨x¸Ó<�ÜŸG™GŸL™L¨Ó8�	ØŸ)™) WÐ$;Ó<×DÑDÀSÈ$ÓO�ØŸ9™9 g¨uÐ%5Ó6�ðÜ)¨$°Ô8ô ˜) TÔ*¨aðQØŸ™ h°·±³Ô9÷ +Ñ*ó ñ %6ð* 	�	‰	�‰ð Põ 	Qøô9 ó 	Ø�v‰v�a‰yÔ3Ó3Ü"ð $Dó Eð Eà—‘˜‘Ô=Ó=Øõ >ûð		ûô %ó Ø—v‘v˜a‘yÔ$;Ó;Ü*ð ,Ló Mð MàŸ™ ™Ô&EÓEØô Fûð	ûô )ó QØŸ6™6 !™9Ô(?Ó?Ü".ð 0Pó #Qð Qõ @ûðQú÷ +×*ús`   Ã>G= ÆIÆ/KÆ1 J Ç=
IÈ:IÉIÉ
JÉ:JÊJÊ 
K	Ê*"K	ËKËK	ËKË
K*r*  rß  )r  r  r  r  r-  r.  rG   r/  r0  r1  r2  r   r™   rÅ   rÆ   r>   r#   Údata_dirr3  r(  r	  r`   rD   rB   rf  rf  >  sˆ   † Ù*à €Hð ×)Ñ)Ø×-Ñ-Ø×.Ñ.ñÐñ 	ˆt�WÐ#JÐQTØ Cñ	)áˆ|Ð"MØ "§'¡'§,¡,¨u¯~ª~Ó/?ÀÓ"Nñ	Pð€Mð FJØ÷8QrD   rf  c            	       ó¢   • \ rS rSrSrSr\R                  \R                  \R                  S.r
\" SSS\SS	S
9\" SSSSS9/r/ SQr  SS jrSrg)Úcmd_add_sudoersiŠ  aý  Adds a Samba Sudoers Group Policy to the sysvol

This command adds a sudo rule to the sysvol for applying to winbind clients.

The command argument indicates the final field in the sudo rule.
The user argument indicates the user specified in the parentheses.
The users and groups arguments are comma separated lists, which are combined to
form the first field in the sudo rule.
The --passwd argument specifies whether the sudo entry will require a password
be specified. The default is False, meaning the NOPASSWD field will be
specified in the sudo entry.

Example:
samba-tool gpo manage sudoers add {31B2F340-016D-11D2-945F-00C04FB984F9} ALL ALL fakeu fakeg

The example command will generate the following sudoers entry:
fakeu,fakeg% ALL=(ALL) NOPASSWD: ALL
    z7%prog <gpo> <command> <user> <users> [groups] [options]r  r  r  r  r  r  r  z--passwdr’  Fz;Specify to indicate that sudo entry must provide a passwordr“  )r†   Úcommandr>  Úuserszgroups?Nc                 óŒ	  • UR                  5       U l        U	R                  U R                  SS9U l        U(       a"  UR	                  S5      (       a  USS  nXpl        OD[        U R                  U R                  5      n[        U R                  U R                  US9U l        [        USU R                  U R                  S9nU R                  5         [        XR                  U R                  U R                  U5      nU R                  R                  S5      nS	R                  UR                  5       S
USS/5      nS	R                  US/5      n [        R                   " [        R"                  " UR%                  U5      5      5      nUR'                  5       R)                  S5      nUR)                  S5      n[        R6                  " US5      nU(       a  [        R6                  " US5        [        R6                  " US5      nUUl        [        R6                  " US 5      nUUl        [        R6                  " US!5      nUR?                  S"5       H0  n[        R6                  " US#5      nUUl        S UR@                  S$'   M2     UbD  UR?                  5        H0  n [        R6                  " US#5      nU Ul        S%UR@                  S$'   M2     [C        5       n!URE                  U!S&SS'9  U!RG                  S5         [I        XÏ5        URK                  UU!RM                  5       5        URO                  SS(9  g ! [*         GaM  nUR,                  S   [.        [0        [2        4;   Ga  [        R                   " [        R4                  " S5      5      n[        R6                  " UR'                  5       S5      n[        R6                  " US5      nSUl        [        R6                  " US5      nSUl        [        R6                  " US5      nSUl        [        R6                  " US5      nSUl        [        R6                  " US5      n[        R6                  " US5      nSUl         S nAGN¬UR,                  S   [:        :X  a  [=        S5      ee S nAff = f! [*         a(  nUR,                  S   [:        :X  a  [=        S5      ee S nAff = f))NTr  rg   rd  re  rg  rh  ri  r©   rj  úMACHINE\VGP\VTLA\SudoÚSudoersConfigurationúmanifest.xmlÚpolicysettingrß   r   Ú	vgppolicyÚversionÚ1rr   zSudo PolicyÚdescriptionz!Sudoers File Configuration PolicyÚ
apply_modeÚmergeÚload_pluginÚtruerm  Úsudoers_entryÚpasswordrx  r>  ÚlistelementÚ,Ú	principalr  ÚgroupúUTF-8©ÚencodingÚxml_declaration©Úmachine_changed)(r&  ri   r'  rj   rU   rk   r   rn   r3   r  r5   r…   ru  r>   rš   rû  ÚElementTreerü  rÏ   ÚgetrootÚfindr   rv  r-   r.   r/   ÚElementÚ
SubElementÚtextr1   r   rS   rÂ   r)   rÑ   Úseekr2   rì   rë   Úincrement_gpt_ini)"rú   r†   rx  r>  ry  ÚgroupsÚpasswdr  r  r  r  r}  rÔ   r¡  ri  Úvgp_dirÚvgp_xmlÚxml_datar~  rß   rm   Úpvrr   r‚  rƒ  r…  r‡  Úcommand_elmÚuser_elmr‰  Úur‹  r[   Úouts"                                     rB   r(  Úcmd_add_sudoers.run¯  sæ  € à×(Ñ(Ó*ˆŒØ×-Ñ-¨d¯g©gÈÐ-ÐMˆŒ
ö �—‘˜i×(Ñ(Ø˜A˜B˜%ˆKØ�Hä'¨¯©°·±Ó<ˆKÜ˜dŸg™g t§z¡z°kÑBˆDŒHô ˜kØ&Ø!%§¡Ø$(§J¡Jñ0ˆð
 	×ÑÔÜ# C¯©°$·*±*¸d¿j¹jÈ!ÓLˆà—‘—‘˜GÓ$ˆØ—)‘)˜UŸ[™[›]¨J¸Ø7Ø3ð5ó 6ˆð —)‘)˜W nÐ5Ó6ˆð	Ü—~’~¤b§m¢m°D·M±MÀ'Ó4JÓ&KÓLˆHØ$×,Ñ,Ó.×3Ñ3°OÓDˆMØ ×%Ñ% fÓ-ˆDô4 Ÿš d¨OÓ<ˆÞÜ�MŠM˜-¨Ô4Ü—m’m M°9Ó=ˆØ"ˆÔÜ—=’= °Ó7ˆØˆŒÜ—m’m M°=ÓAˆØ—‘˜SÖ!ˆAÜŸš k°;Ó?ˆIØˆIŒNØ'-ˆI×Ñ˜VÓ$ñ "ð ÑØ—\‘\–^�ÜŸMšM¨+°{ÓC�	Ø!"�	”Ø+2�	× Ñ  Ó(ñ $ô
 ‹iˆØ�‰�s W¸dˆÑCØ�‰�Œð	Ü! $Ô0Ø�M‰M˜' 3§8¡8£:Ô.Ø×!Ñ!°$Ð!Ò7øôc ô 	Ø�v‰v�a‰yÔ:Ü<Ü<ð>ô >ô Ÿ>š>¬"¯*ª*°[Ó*AÓB�Ü "§¢¨h×.>Ñ.>Ó.@Ø.=ó!?�ä—]’] =°)Ó<�Ø�”Ü—}’} ]°FÓ;�Ø)�”	Ü Ÿmšm¨M¸=ÓI�Ø#F�Ô ÜŸ]š]¨=¸,ÓG�
Ø")�
”Ü—}’} ]°FÓ;�Ü Ÿmšm¨D°-Ó@�Ø#)�× Ò Ø—‘˜‘Ô5Ó5Ü"ð $Dó Eð Eð ûð/	ûôd ó 	Ø�v‰v�a‰yÔ3Ó3Ü"ð $Dó Eð Eàûð		ús8   ÅA)L6 Ë;:R Ì6RÍDR	Ñ&#R	Ò	RÒ
SÒ#R>Ò>Sr*  )NNNNNN©r  r  r  r  r-  r.  rG   r/  r0  r1  r2  r   r™   r3  r^  r(  r	  r`   rD   rB   rw  rw  Š  sz   † ñð& I€Hð ×)Ñ)Ø×-Ñ-Ø×.Ñ.ñÐñ 	ˆt�WÐ#JÐQTØ Cñ	)áˆz ,¸ØQñ	Sð€Mò @€JàAEØ?C÷UrD   rw  c            	       óŒ   • \ rS rSrSrSr\R                  \R                  \R                  S.r
\" SSS\SS	S
9/rS/rSS jrSrg)Úcmd_list_sudoersi  zàList Samba Sudoers Group Policy from the sysvol

This command lists sudo rules from the sysvol that will be applied to winbind clients.

Example:
samba-tool gpo manage sudoers list {31B2F340-016D-11D2-945F-00C04FB984F9}
    ra  r  r  r  r  r  r  r  r†   Nc                 ó.  • UR                  5       U l        UR                  U R                  SS9U l        U(       a"  UR	                  S5      (       a  USS  nX l        OD[        U R                  U R                  5      n[        U R                  U R                  US9U l        [        USU R                  U R                  S9nU R                  R                  S5      nS	R                  UR                  5       S
USS/5      n	 [        R                  " UR                  U	5      5      n
U
Gb\  U
R-                  S5      nUR,                  " S5      nUR/                  S5       GH#  nUR-                  S5      R0                  nUR-                  S5      R0                  nUR/                  S5      n/ nU H#  nUR3                  UR/                  S5      5        M%     [5        U5      S:”  aO  SR                  U Vs/ s H1  nUR6                  S   S:X  a  UR0                  OSUR0                  -  PM3     sn5      nOSnUR-                  S5      S L nU(       a  SOSnU< SU< SU< SU< 3nU R8                  R;                  S U-  5        GM&     S	R                  UR                  5       S
US!/5      n [=        [>        R@                  UR                  U5      5      nS"nURB                   Hp  n[E        URF                  5      U:X  d  M  [I        URJ                  5      RM                  5       (       d  MH  U R8                  R;                  S URJ                  -  5        Mr     g ! [         aR  nUR                   S   ["        [$        [&        4;   a  S n
 S nAGNdUR                   S   [(        :X  a  [+        S5      ee S nAff = fs  snf ! [         aO  nUR                   S   ["        [$        [&        4;   a   S nAg UR                   S   [(        :X  a  [+        S5      ee S nAff = f)#NTr  rg   rd  re  rg  rh  ri  r©   rj  r{  z!SudoersConfiguration\manifest.xmlr   rm  r~  rß   r‡  rx  r>  r‰  r‹  rŠ  r  ú%s%%ÚALLrˆ  ú
 NOPASSWD:rJ   ú ALL=(Ú)r<   ú%s
úMACHINE\Registry.pols1   Software\Policies\Samba\Unix Settings\Sudo Rights)'r&  ri   r'  rj   rU   rk   r   rn   r3   ru  r>   rš   rû  rü  rÏ   r   rv  r-   r.   r/   r1   r   r•  Úfindallr˜  ÚextendrT   rÂ   r÷   rÑ   r   r   ró   rw  r%   rn  r&   rß   rR   )rú   r†   r  r  r  r  r}  rÔ   ri  rž  rŸ  rm   r   rß   rƒ  rx  r>  ÚlistelementsÚ
principalsr‰  r£  ÚunameÚ
nopasswordÚnp_entryÚpr  r‚  rn  s                               rB   r(  Úcmd_list_sudoers.run  sŠ  € Ø×(Ñ(Ó*ˆŒØ×-Ñ-¨d¯g©gÈÐ-ÐMˆŒ
ö �—‘˜i×(Ñ(Ø˜A˜B˜%ˆKØ�Hä'¨¯©°·±Ó<ˆKÜ˜dŸg™g t§z¡z°kÑBˆDŒHô ˜kØ&Ø!%§¡Ø$(§J¡Jñ0ˆð
 —‘—‘˜GÓ$ˆØ—)‘)˜UŸ[™[›]¨J¸Ø :Ø DðFó Gˆð	Ü—}’} T§]¡]°7Ó%;Ó<ˆHð ÒØ—]‘] ?Ó3ˆFØ—;’;˜vÓ&ˆDØŸ™ o×6�ØŸ*™* YÓ/×4Ñ4�Ø—z‘z &Ó)×.Ñ.�Ø$Ÿ}™}¨]Ó;�Ø�
Û#/�KØ×%Ñ% k×&9Ñ&9¸+Ó&FÖGñ $0ä�z“? QÓ&ØŸH™HÙ6@ó&BÚ6@°ð 12·±¸Ñ0@ÀFÓ0J a§f¢fØ# a§f¡f™_ò'-Ù6@ñ&Bó C‘Eð "�EØ"ŸZ™Z¨
Ó3°tÐ;�
Þ+5™<¸2�Û*/³³xÂÐI�Ø—	‘	—‘ ¨¡
×+ñ 7ð" —9‘9˜eŸk™k›m¨Z¸Ø5ð7ó 8ˆð
	Ü!¤$§)¡)¨T¯]©]¸8Ó-DÓEˆHð KˆØ×%Ô%ˆEÜ˜Ÿ™Ó'¨7Õ2Ü˜uŸz™zÓ*×0Ñ0×2Ó2Ø—	‘	—‘ ¨¯©Ñ 3Ö4ò &øôa ó 
	Ø�v‰v�a‰yÔ:Ü<Ü<ð>ó >ð  –Ø—‘˜‘Ô5Ó5Ü"ð $Dó Eð Eð ûð
	üò.&Bøô ó 	Ø�v‰v�a‰yÔ:Ü<Ü<ð>ó >ô Ø�v‰v�a‰yÔ3Ó3Ü"ð $Dó Eð Eàûð	úsB   Ä%M Ç38N6
Ê+)N; Í
N3Í!$N.Î#N.Î.N3Î;
PÏ"PÏ,#PÐPr*  r+  r¦  r`   rD   rB   r¨  r¨    sb   † ñð '€Hð ×)Ñ)Ø×-Ñ-Ø×.Ñ.ñÐñ 	ˆt�WÐ#JÐQTØ Cñ	)ð€Mð
 �€J÷K5rD   r¨  c            	       óŽ   • \ rS rSrSrSr\R                  \R                  \R                  S.r
\" SSS\SS	S
9/rSS/rSS jrSrg)Úcmd_remove_sudoersik  a  Removes a Samba Sudoers Group Policy from the sysvol

This command removes a sudo rule from the sysvol from applying to winbind clients.

Example:
samba-tool gpo manage sudoers remove {31B2F340-016D-11D2-945F-00C04FB984F9} 'fakeu ALL=(ALL) NOPASSWD: ALL'
    ú%prog <gpo> <entry> [options]r  r  r  r  r  r  r  r†   rƒ  Nc                 óX  • UR                  5       U l        UR                  U R                  SS9U l        U(       a"  UR	                  S5      (       a  USS  nX0l        OD[        U R                  U R                  5      n[        U R                  U R                  US9U l        [        USU R                  U R                  S9nU R                  5         [        XR                  U R                  U R                  U5      n	U R                  R                  S5      n
S	R                  U
R                  5       S
USS/5      nS	R                  US/5      n [        R                   " [        R"                  " UR%                  U5      5      5      nUR'                  5       R)                  S5      nUR)                  S5      nS	R                  U
R                  5       S
US/5      n [9        [:        R<                  UR%                  U5      5      n0 nU(       a  UR?                  S5      O/  GH
  nUR)                  S5      R@                  nUR)                  S5      R@                  nUR?                  S5      n/ nU H#  nURC                  UR?                  S5      5        M%     [E        U5      S:”  aO  SR                  U Vs/ s H1  nURF                  S   S:X  a  UR@                  OSUR@                  -  PM3     sn5      nOSnUR)                  S5      S L nU(       a  SOSnU< SU< S U< S!U< 3nUUU'   GM     UURI                  5       ;   a|  URK                  UU   5        [M        5       nWRO                  US"SS#9  URQ                  S5         [S        X‹5        URU                  UURW                  5       5        U	RY                  SS$9  g UU(       a'  URZ                   Vs/ s H  nUR\                  PM     snO/ ;   aq  URZ                   Vs/ s H  nUR\                  U:w  d  M  UPM     nn[E        U5      Ul/        UUl-         URU                  U[a        U5      5        U	RY                  SS$9  g [7        S%U-  5      e! [*         aR  nUR,                  S   [.        [0        [2        4;   a  S n S nAGNïUR,                  S   [4        :X  a  [7        S5      ee S nAff = f! [*         aR  nUR,                  S   [.        [0        [2        4;   a  S n S nAGNUR,                  S   [4        :X  a  [7        S5      ee S nAff = fs  snf ! [*         a(  nUR,                  S   [4        :X  a  [7        S5      ee S nAff = fs  snf s  snf ! [*         a(  nUR,                  S   [4        :X  a  [7        S5      ee S nAff = f)&NTr  rg   rd  re  rg  rh  ri  r©   rj  r{  r|  r}  r~  rß   r   rm  r°  r‡  rx  r>  r‰  r‹  rŠ  r  rª  r«  rˆ  r¬  rJ   r­  r®  r<   r�  rŽ  r‘  ú,Cannot remove '%s' because it does not exist)1r&  ri   r'  rj   rU   rk   r   rn   r3   r  r5   r…   ru  r>   rš   rû  r“  rü  rÏ   r”  r•  r   rv  r-   r.   r/   r1   r   r   r   ró   r±  r˜  r²  rT   rÂ   Úkeysr›   r)   rÑ   r™  r2   rì   rë   rš  rw  rß   Únum_entriesr   )rú   r†   rƒ  r  r  r  r  r}  rÔ   r¡  ri  r�  rž  rŸ  r~  rß   rm   r  r‚  rw  rx  r>  r³  r´  r‰  r£  rµ  r¶  r·  r¸  r¤  s                                  rB   r(  Úcmd_remove_sudoers.runƒ  s  € Ø×(Ñ(Ó*ˆŒØ×-Ñ-¨d¯g©gÈÐ-ÐMˆŒ
ö �—‘˜i×(Ñ(Ø˜A˜B˜%ˆKØ�Hä'¨¯©°·±Ó<ˆKÜ˜dŸg™g t§z¡z°kÑBˆDŒHô ˜kØ&Ø!%§¡Ø$(§J¡Jñ0ˆð
 	×ÑÔÜ# C¯©°$·*±*¸d¿j¹jÈ!ÓLˆà—‘—‘˜GÓ$ˆØ—)‘)˜UŸ[™[›]¨J¸Ø7Ø3ð5ó 6ˆð —)‘)˜W nÐ5Ó6ˆð	Ü—~’~¤b§m¢m°D·M±MÀ'Ó4JÓ&KÓLˆHØ$×,Ñ,Ó.×3Ñ3°OÓDˆMØ ×%Ñ% fÓ-ˆDð —9‘9˜eŸk™k›m¨Z¸Ø5ð7ó 8ˆð	Ü!¤$§)¡)¨T¯]©]¸8Ó-DÓEˆHð ˆÞ26�—‘˜oÔ.¸BÓ>ˆAØ—f‘f˜YÓ'×,Ñ,ˆGØ—6‘6˜&“>×&Ñ&ˆDØŸ9™9 ]Ó3ˆLØˆJÛ+�Ø×!Ñ! +×"5Ñ"5°kÓ"BÖCñ  ,ä�:‹ Ó"ØŸ™Ù2<ó">Ú2<¨Qð -.¯H©H°VÑ,<ÀÓ,F !§&¢&Ø !§&¡&™ò#)Ù2<ñ">ó ?‘ð �ØŸ™ 
Ó+¨tÐ3ˆJÞ'1‘|°rˆHÛ&+«T³8ºWÐEˆAØˆG�AŒJñ ?ð" �G—L‘L“NÓ"Ø�K‰K˜ ™Ô'ä“)ˆCØ�N‰N˜3¨À$ˆNÑGØ�H‰H�QŒKðÜ% dÔ4Ø—‘˜g s§x¡x£zÔ2Ø×%Ñ%°dÐ%Ò;ð ¾X¨×(8Ò(8Ó9Ò(8 1˜ŸœÑ(8Ò9È2ÓNØ"*×"2Ò"2ÓFÒ"2˜Q°a·f±fÀ±o—qÑ"2ˆGÐFÜ#& w£<ˆHÔ Ø&ˆHÔðØ—‘˜h¬°Ó(:Ô;Ø×%Ñ%°dÐ%Ò;ô ÐMØ$ñ %ó &ð &øôS ó 		Ø�v‰v�a‰yÔ:Ü<Ü<ð>ó >ð –Ø—‘˜‘Ô5Ó5Ü"ð $Dó Eð Eð ûð		ûô ó 		Ø�v‰v�a‰yÔ:Ü<Ü<ð>ó >ð  –Ø—‘˜‘Ô5Ó5Ü"ð $Dó Eð Eð ûð		üò(">øô& !ó Ø—6‘6˜!‘9Ô 7Ó7Ü&ð (Hó Ið Iàûð	üò
 :ùÚFøô !ó Ø—6‘6˜!‘9Ô 7Ó7Ü&ð (Hó Ið Iàûð	ús…   ÅA)Q5 Ç)S Ê78T3
Î:T8 ÏU-ÐU2ÐU2Ð<*U7 Ñ5
SÑ?$SÒ)#SÓSÓ
T0Ó$T+Ô#T+Ô+T0Ô8
U*Õ#U%Õ%U*Õ7
V)Ö#V$Ö$V)r*  r+  r¦  r`   rD   rB   r»  r»  k  se   † ñð /€Hð ×)Ñ)Ø×-Ñ-Ø×.Ñ.ñÐñ 	ˆt�WÐ#JÐQTØ Cñ	)ð€Mð
 ˜Ð!€J÷h&rD   r»  c                   óX   • \ rS rSrSr0 r\" 5       \S'   \" 5       \S'   \" 5       \S'   Sr	g)Úcmd_sudoersií  z#Manage Sudoers Group Policy Objectsr(  rÊ   r›   r`   N)
r  r  r  r  r-  Úsubcommandsrw  r¨  r»  r	  r`   rD   rB   rÃ  rÃ  í  s1   † Ù-Ø€KÙ(Ó*€K�ÑÙ*Ó,€K�ÑÙ.Ó0€K�ÔrD   rÃ  c            	       ó’   • \ rS rSrSrSr\R                  \R                  \R                  S.r
\" SSS\SS	S
9/r/ SQr  SS jrSrg)Úcmd_set_securityiô  a  Set Samba Security Group Policy to the sysvol

This command sets a security setting to the sysvol for applying to winbind
clients. Not providing a value will unset the policy.
These settings only apply to the ADDC.

Example:
samba-tool gpo manage security set {31B2F340-016D-11D2-945F-00C04FB984F9} MaxTicketAge 10

Possible policies:
MaxTicketAge            Maximum lifetime for user ticket
                        Defined in hours

MaxServiceAge           Maximum lifetime for service ticket
                        Defined in minutes

MaxRenewAge             Maximum lifetime for user ticket renewal
                        Defined in minutes

MinimumPasswordAge      Minimum password age
                        Defined in days

MaximumPasswordAge      Maximum password age
                        Defined in days

MinimumPasswordLength   Minimum password length
                        Defined in characters

PasswordComplexity      Password must meet complexity requirements
                        1 is Enabled, 0 is Disabled
    ra  r  r  r  r  r  r  r  )r†   r   úvalue?Nc                 ó®  • UR                  5       U l        UR                  U R                  SS9U l        U(       a"  UR	                  S5      (       a  USS  nX@l        OD[        U R                  U R                  5      n[        U R                  U R                  US9U l        [        USU R                  U R                  S9n	U R                  5         [        XR                  U R                  U R                  U5      n
U R                  R                  S5      nS	R                  UR                  5       S
US/5      nS	R                  US/5      n [        S S9n[         Ul        U	R%                  U5      n UR'                  [)        UR+                  5       5      5        SSSSSSSS.nUU   nWR=                  U5      (       d  UR?                  U5        Ub  URA                  UX#5        OAURC                  UU5        [E        URG                  U5      5      S:X  a  URI                  U5        [)        5       nURK                  U5         [M        Xœ5        U	RO                  U[Q        URS                  5       5      5        U
RU                  SS9  g ! [,         a-    UR'                  [)        UR+                  S5      5      5         GN#f = f! [.         aP  nUR0                  S   [2        :X  a  [5        S5      eUR0                  S   [6        [8        [:        4;  a  e  S nAGN|S nAff = f! [.         a(  nUR0                  S   [2        :X  a  [5        S5      ee S nAff = f)NTr  rg   rd  re  rg  rh  ri  r©   rj  z$MACHINE\Microsoft\Windows NT\SecEditzGptTmpl.inf©Úinterpolationúutf-16r   rm  úKerberos PolicyúSystem Access)ÚMaxTicketAgeÚMaxServiceAgeÚMaxRenewAgeÚMinimumPasswordAgeÚMaximumPasswordAgeÚMinimumPasswordLengthÚPasswordComplexityr‘  )+r&  ri   r'  rj   rU   rk   r   rn   r3   r  r5   r…   ru  r>   rš   r'   r™   ÚoptionxformrÏ   Ú	read_filer(   ry  ÚUnicodeDecodeErrorr   rv  r1   r   r-   r.   r/   Úhas_sectionÚadd_sectionÚsetÚremove_optionrT   rG   Úremove_sectionrÑ   r2   rì   r%   Úgetvaluerš  )rú   r†   r   r?   r  r  r  r  r}  rÔ   r¡  ri  Úinf_dirÚinf_fileÚinf_dataÚrawrm   Úsection_mapÚsectionr¤  s                       rB   r(  Úcmd_set_security.run$	  sú  € à×(Ñ(Ó*ˆŒØ×-Ñ-¨d¯g©gÈÐ-ÐMˆŒ
ö �—‘˜i×(Ñ(Ø˜A˜B˜%ˆKØ�Hä'¨¯©°·±Ó<ˆKÜ˜dŸg™g t§z¡z°kÑBˆDŒHô ˜kØ&Ø!%§¡Ø$(§J¡Jñ0ˆð
 	×ÑÔÜ# C¯©°$·*±*¸d¿j¹jÈ!ÓLˆà—‘—‘˜GÓ$ˆØ—)‘)˜UŸ[™[›]¨J¸Ø5ð7ó 8ˆà—9‘9˜g }Ð5Ó6ˆð	Ü#°$Ñ7ˆHÜ!$ˆHÔ Ø—-‘- Ó)ˆCðCØ×"Ñ"¤8¨C¯J©J«LÓ#9Ô:ð *;Ø*;Ø(9Ø/>Ø/>Ø2AØ/>ñˆð ˜fÑ%ˆØ×#Ñ# G×,Ñ,Ø× Ñ  Ô)ØÑØ�L‰L˜ &Õ0à×"Ñ" 7¨FÔ3Ü�8×#Ñ# GÓ,Ó-°Ó2Ø×'Ñ'¨Ô0ä‹jˆØ�‰�sÔð		Ü! $Ô0Ø�M‰M˜(¤I¨c¯l©l«nÓ$=Ô>Ø×!Ñ!°$Ð!Ò7øôG &ó CØ×"Ñ"¤8¨C¯J©J°xÓ,@Ó#A×BðCûäó 	Ø�v‰v�a‰yÔ3Ó3Ü"ð $Dó Eð Eà�v‰v�a‰yÔ!>Ü!@Ü!@ð!Bó Bð õBûð		ûôD ó 	Ø�v‰v�a‰yÔ3Ó3Ü"ð $Dó Eð Eð ûð	úsP   Å%K Å6(J ÉAL" Ê3KÊ>K ËKËK Ë
LËALÌLÌ"
MÌ,#MÍMr*  rß  r¦  r`   rD   rB   rÆ  rÆ  ô  sg   † ñð@ '€Hð ×)Ñ)Ø×-Ñ-Ø×.Ñ.ñÐñ 	ˆt�WÐ#JÐQTØ Cñ	)ð€Mò
 -€Jà=AØ'+÷IrD   rÆ  c            	       óŒ   • \ rS rSrSrSr\R                  \R                  \R                  S.r
\" SSS\SS	S
9/rS/rSS jrSrg)Úcmd_list_securityio	  a  List Samba Security Group Policy from the sysvol

This command lists security settings from the sysvol that will be applied to winbind clients.
These settings only apply to the ADDC.

Example:
samba-tool gpo manage security list {31B2F340-016D-11D2-945F-00C04FB984F9}
    ra  r  r  r  r  r  r  r  r†   Nc                 ó‚  • UR                  5       U l        UR                  U R                  SS9U l        U(       a"  UR	                  S5      (       a  USS  nX l        OD[        U R                  U R                  5      n[        U R                  U R                  US9U l        [        USU R                  U R                  S9nU R                  R                  S5      nS	R                  UR                  5       S
US/5      n	 [        S S9n
[        U
l        UR                  U	5      n U
R!                  [#        UR%                  5       5      5        U
R7                  5        HH  nUS;  a  M  U
R9                  U5       H(  u  pïU R:                  R=                  U< SU< S35        M*     MJ     g ! [&         a,    U
R!                  [#        UR%                  S5      5      5         N’f = f! [(         aO  nUR*                  S   [,        [.        [0        4;   a   S nAg UR*                  S   [2        :X  a  [5        S5      ee S nAff = f)NTr  rg   rd  re  rg  rh  ri  r©   rj  z0MACHINE\Microsoft\Windows NT\SecEdit\GptTmpl.infrÉ  rË  r   rm  )rÌ  rÍ  ú = r%  )r&  ri   r'  rj   rU   rk   r   rn   r3   ru  r>   rš   r'   r™   rÕ  rÏ   rÖ  r(   ry  r×  r   rv  r-   r.   r/   r1   r   Úsectionsrî  r÷   rÑ   )rú   r†   r  r  r  r  r}  rÔ   ri  rß  rà  rá  rm   rã  rÁ   r?   s                   rB   r(  Úcmd_list_security.runˆ	  sì  € Ø×(Ñ(Ó*ˆŒØ×-Ñ-¨d¯g©gÈÐ-ÐMˆŒ
ö �—‘˜i×(Ñ(Ø˜A˜B˜%ˆKØ�Hä'¨¯©°·±Ó<ˆKÜ˜dŸg™g t§z¡z°kÑBˆDŒHô ˜kØ&Ø!%§¡Ø$(§J¡Jñ0ˆð
 —‘—‘˜GÓ$ˆØ—9‘9˜eŸk™k›m¨Z¸ØBðDó Eˆð	Ü#°$Ñ7ˆHÜ!$ˆHÔ Ø—-‘- Ó)ˆCðCØ×"Ñ"¤8¨C¯J©J«LÓ#9Ô:ð  ×(Ñ(Ö*ˆGØÐBÓBÙØ&Ÿn™n¨WÖ5‘
�Ø—	‘	—‘«s³EÐ :Ö;ó 6ò +øô &ó CØ×"Ñ"¤8¨C¯J©J°xÓ,@Ó#AÖBðCûäó 	Ø�v‰v�a‰yÔ:Ü<Ü<ð>ó >ô Ø�v‰v�a‰yÔ3Ó3Ü"ð $Dó Eð Eàûð	ús<   Ä%G% Ä'(F, Æ,3G"ÇG% Ç!G"Ç"G% Ç%
H>Ç/"H9È#H9È9H>r*  r+  r¦  r`   rD   rB   ræ  ræ  o	  sa   † ñð '€Hð ×)Ñ)Ø×-Ñ-Ø×.Ñ.ñÐñ 	ˆt�WÐ#JÐQTØ Cñ	)ð€Mð
 �€J÷+<rD   ræ  c                   óD   • \ rS rSrSr0 r\" 5       \S'   \" 5       \S'   Srg)Úcmd_securityiµ	  z$Manage Security Group Policy ObjectsrÚ  rÊ   r`   N)	r  r  r  r  r-  rÄ  rÆ  ræ  r	  r`   rD   rB   rì  rì  µ	  s$   † Ù.Ø€KÙ)Ó+€K�ÑÙ+Ó-€K�ÔrD   rì  c            	       óŒ   • \ rS rSrSrSr\R                  \R                  \R                  S.r
\" SSS\SS	S
9/rS/rSS jrSrg)Úcmd_list_smb_confi»	  zéList Samba smb.conf Group Policy from the sysvol

This command lists smb.conf settings from the sysvol that will be applied to winbind clients.

Example:
samba-tool gpo manage smb_conf list {31B2F340-016D-11D2-945F-00C04FB984F9}
    ra  r  r  r  r  r  r  r  r†   Nc                 ó†  • UR                  5       U l        UR                  U R                  SS9U l        U(       a"  UR	                  S5      (       a  USS  nX l        OD[        U R                  U R                  5      n[        U R                  U R                  US9U l        [        USU R                  U R                  S9nU R                  R                  S5      nS	R                  UR                  5       S
US/5      n	 [        [        R                  UR                  U	5      5      n
Sn[.        R0                  " 5       nU
R2                   H•  n[5        UR6                  5      U:X  d  M  UR9                  UR:                  [=        UR>                  5      5        UR                  UR:                  5      nU R@                  RC                  UR:                  < SU< S35        M—     g ! [          aO  nUR"                  S   [$        [&        [(        4;   a   S nAg UR"                  S   [*        :X  a  [-        S5      ee S nAff = f)NTr  rg   rd  re  rg  rh  ri  r©   rj  r°  r   rm  ó    Software\Policies\Samba\smb_confrè  r%  )"r&  ri   r'  rj   rU   rk   r   rn   r3   ru  r>   rš   r   r   ró   rÏ   r   rv  r-   r.   r/   r1   r   r#   ÚLoadParmrw  r%   rn  rÚ  ro  r™   rß   r÷   rÑ   )rú   r†   r  r  r  r  r}  rÔ   ri  r  r‚  rm   rn  ri   rƒ  rè  s                   rB   r(  Úcmd_list_smb_conf.runÓ	  sÆ  € Ø×(Ñ(Ó*ˆŒØ×-Ñ-¨d¯g©gÈÐ-ÐMˆŒ
ö �—‘˜i×(Ñ(Ø˜A˜B˜%ˆKØ�Hä'¨¯©°·±Ó<ˆKÜ˜dŸg™g t§z¡z°kÑBˆDŒHô ˜kØ&Ø!%§¡Ø$(§J¡Jñ0ˆð
 —‘—‘˜GÓ$ˆØ—9‘9˜eŸk™k›m¨Z¸Ø 7ð9ó :ˆð
	Ü!¤$§)¡)¨T¯]©]¸8Ó-DÓEˆHð 9ˆÜ�^Š^ÓˆØ×%Ô%ˆEÜ˜Ÿ™Ó'¨7Õ2Ø—‘�u—‘¬¨E¯J©J«Ô8Ø—f‘f˜UŸ_™_Ó-�Ø—	‘	—‘¨u¯¬ÃÐ DÖEò	 &øô ó 	Ø�v‰v�a‰yÔ:Ü<Ü<ð>ó >ô Ø�v‰v�a‰yÔ3Ó3Ü"ð $Dó Eð Eàûð	ús   Ä)G' Ç'
I Ç1"H;È#H;È;I r*  r+  r¦  r`   rD   rB   rî  rî  »	  sb   † ñð '€Hð ×)Ñ)Ø×-Ñ-Ø×.Ñ.ñÐñ 	ˆt�WÐ#JÐQTØ Cñ	)ð€Mð
 �€J÷'FrD   rî  c            	       ó’   • \ rS rSrSrSr\R                  \R                  \R                  S.r
\" SSS\SS	S
9/r/ SQr  SS jrSrg)Úcmd_set_smb_confiü	  a%  Sets a Samba smb.conf Group Policy to the sysvol

This command sets an smb.conf setting to the sysvol for applying to winbind
clients. Not providing a value will unset the policy.

Example:
samba-tool gpo manage smb_conf set {31B2F340-016D-11D2-945F-00C04FB984F9} 'apply gpo policies' yes
    r¼  r  r  r  r  r  r  r  ©r†   ÚsettingrÇ  Nc                 ó¼  • UR                  5       U l        UR                  U R                  SS9U l        U(       a"  UR	                  S5      (       a  USS  nX@l        OD[        U R                  U R                  5      n[        U R                  U R                  US9U l        [        USU R                  U R                  S9n	U R                  5         [        XR                  U R                  U R                  U5      n
U R                  R                  S5      nS	R                  UR                  5       S
US/5      nS	R                  US/5      n [        [         R"                  U	R%                  U5      5      nUc}  X.R4                   Vs/ s H  oÿR6                  PM     sn;  a  [3        SU-  5      eUR4                   Vs/ s H  nUR6                  U:w  d  M  UPM     nnUUl        [9        U5      Ul        Oý[=        U5      R                  5       S;   a  SnSnOd[=        U5      R                  5       S;   a  SnSnOB[=        U5      R?                  5       (       a  Sn[A        [=        U5      5      nOSn[C        U5      n[         RD                  " 5       nSUl#        [C        U5      Ul        UUl$        UUl%        [M        UR4                  5      nURO                  U5        UUl        [9        U5      Ul         [Q        Xœ5        U	RS                  U[U        U5      5        U
RW                  SS9  g ! [&         ae  nUR(                  S   [*        [,        [.        4;   a  [         R"                  " 5       n S nAGNûUR(                  S   [0        :X  a  [3        S5      ee S nAff = fs  snf s  snf ! [&         a(  nUR(                  S   [0        :X  a  [3        S5      ee S nAff = f)NTr  rg   rd  re  rg  rh  ri  r©   rj  rk  zRegistry.polr   rm  r¾  )Úyesr†  r�  rr  rO   )ÚnoÚfalser#  rð  r‘  ),r&  ri   r'  rj   rU   rk   r   rn   r3   r  r5   r…   ru  r>   rš   r   r   ró   rÏ   r   rv  r-   r.   r/   r1   r   rw  ro  rT   rÀ  r&   Ú	isnumericrX   r%   rƒ  rn  r  rß   rÊ   rW   r2   rì   r   rš  )rú   r†   rö  r?   r  r  r  r  r}  rÔ   r¡  ri  Úpol_dirr  r‚  rm   rw  Úetyperè  s                      rB   r(  Úcmd_set_smb_conf.run
  s\  € à×(Ñ(Ó*ˆŒØ×-Ñ-¨d¯g©gÈÐ-ÐMˆŒ
ö �—‘˜i×(Ñ(Ø˜A˜B˜%ˆKØ�Hä'¨¯©°·±Ó<ˆKÜ˜dŸg™g t§z¡z°kÑBˆDŒHô ˜kØ&Ø!%§¡Ø$(§J¡Jñ0ˆð
 	×ÑÔÜ# C¯©°$·*±*¸d¿j¹jÈ!ÓLˆà—‘—‘˜GÓ$ˆØ—)‘)˜UŸ[™[›]¨J¸¸YÐGÓHˆØ—9‘9˜g ~Ð6Ó7ˆð	Ü!¤$§)¡)¨T¯]©]¸8Ó-DÓEˆHð ‰=Ø×4DÒ4DÓEÒ4D¨qŸ{œ{Ñ4DÑEÓEÜ"ð $0Ø29ñ$:ó ;ð ;à"*×"2Ò"2ó +Ò"2˜QØ—;‘; 'Ñ)÷ Ñ"2ˆGð +à&ˆHÔÜ#& w£<ˆHÕ ä˜%Ó ×&Ñ&Ó(Ð,@Ó@Ø�Ø‘Ü˜EÓ"×(Ñ(Ó*Ð.BÓBØ�Ø‘Ü˜EÓ"×,Ñ,×.Ñ.Ø�Üœ* UÓ+Ó,‘à�Ü Ó&�Ü—
’
“ˆAØ>ˆAŒIÜ# GÓ,ˆAŒKØˆAŒFØˆAŒFÜ˜8×+Ñ+Ó,ˆGØ�N‰N˜1ÔØ&ˆHÔÜ#& w£<ˆHÔ ð	Ü! $Ô0Ø�M‰M˜(¤H¨XÓ$6Ô7Ø×!Ñ!°$Ð!Ò7øô[ ó 		Ø�v‰v�a‰yÔ:Ü<Ü<ð>ó >ô  Ÿ9š9›;–Ø—‘˜‘Ô5Ó5Ü"ð $Dó Eð Eð ûð		üò Fùò+øô> ó 	Ø�v‰v�a‰yÔ3Ó3Ü"ð $Dó Eð Eàûð		úsH   Å)L- Æ
NÇN$ÇN$Ë75N) Ì-
NÌ77NÍ4#NÎNÎ)
OÎ3#OÏOr*  rß  r¦  r`   rD   rB   rô  rô  ü	  sf   † ñð /€Hð ×)Ñ)Ø×-Ñ-Ø×.Ñ.ñÐñ 	ˆt�WÐ#JÐQTØ Cñ	)ð€Mò
 .€JàMQØ÷MrD   rô  c                   óD   • \ rS rSrSr0 r\" 5       \S'   \" 5       \S'   Srg)Úcmd_smb_confid
  z$Manage smb.conf Group Policy ObjectsrÊ   rÚ  r`   N)	r  r  r  r  r-  rÄ  rî  rô  r	  r`   rD   rB   r   r   d
  s$   † Ù.Ø€KÙ+Ó-€K�ÑÙ)Ó+€K�ÔrD   r   c            	       óŒ   • \ rS rSrSrSr\R                  \R                  \R                  S.r
\" SSS\SS	S
9/rS/rSS jrSrg)Úcmd_list_symlinkij
  zêList VGP Symbolic Link Group Policy from the sysvol

This command lists symlink settings from the sysvol that will be applied to winbind clients.

Example:
samba-tool gpo manage symlink list {31B2F340-016D-11D2-945F-00C04FB984F9}
    ra  r  r  r  r  r  r  r  r†   Nc                 ó2  • UR                  5       U l        UR                  U R                  SS9U l        U(       a"  UR	                  S5      (       a  USS  nX l        OD[        U R                  U R                  5      n[        U R                  U R                  US9U l        [        USU R                  U R                  S9nU R                  R                  S5      nS	R                  UR                  5       S
USS/5      n	 [        R                  " UR                  U	5      5      n
U
R-                  S5      nUR,                  " S5      nUR/                  S5       H]  nUR-                  S5      nUR-                  S5      nU R0                  R3                  SUR4                  < SUR4                  < S35        M_     g ! [         aO  nUR                   S   ["        [$        [&        4;   a   S nAg UR                   S   [(        :X  a  [+        S5      ee S nAff = f)NTr  rg   rd  re  rg  rh  ri  r©   rj  úMACHINE\VGP\VTLA\UnixzSymlink\manifest.xmlr   rm  r~  rß   Úfile_propertiesÚsourceÚtargetzln -s r<   r%  ©r&  ri   r'  rj   rU   rk   r   rn   r3   ru  r>   rš   rû  rü  rÏ   r   rv  r-   r.   r/   r1   r   r•  r±  r÷   rÑ   r˜  )rú   r†   r  r  r  r  r}  rÔ   ri  rž  rŸ  rm   r   rß   r  r  r  s                    rB   r(  Úcmd_list_symlink.run‚
  s½  € Ø×(Ñ(Ó*ˆŒØ×-Ñ-¨d¯g©gÈÐ-ÐMˆŒ
ö �—‘˜i×(Ñ(Ø˜A˜B˜%ˆKØ�Hä'¨¯©°·±Ó<ˆKÜ˜dŸg™g t§z¡z°kÑBˆDŒHô ˜kØ&Ø!%§¡Ø$(§J¡Jñ0ˆð
 —‘—‘˜GÓ$ˆØ—)‘)˜UŸ[™[›]¨J¸Ø :Ø 7ð9ó :ˆð
	Ü—}’} T§]¡]°7Ó%;Ó<ˆHð —‘˜Ó/ˆØ�{Š{˜6Ó"ˆØ#Ÿ|™|Ð,=Ö>ˆOØ$×)Ñ)¨(Ó3ˆFØ$×)Ñ)¨(Ó3ˆFØ�I‰I�OŠO¨v¯{¬{¸F¿K¼KÐHÖIò  ?øô ó 	Ø�v‰v�a‰yÔ:Ü<Ü<ð>ó >ô Ø�v‰v�a‰yÔ3Ó3Ü"ð $Dó Eð Eàûð	ús   Ä%F= Æ=
HÇ"HÇ.#HÈHr*  r+  r¦  r`   rD   rB   r  r  j
  sb   † ñð '€Hð ×)Ñ)Ø×-Ñ-Ø×.Ñ.ñÐñ 	ˆt�WÐ#JÐQTØ Cñ	)ð€Mð
 �€J÷'JrD   r  c            	       ó’   • \ rS rSrSrSr\R                  \R                  \R                  S.r
\" SSS\SS	S
9/r/ SQr  SS jrSrg)Úcmd_add_symlinki«
  zÿAdds a VGP Symbolic Link Group Policy to the sysvol

This command adds a symlink setting to the sysvol that will be applied to winbind clients.

Example:
samba-tool gpo manage symlink add {31B2F340-016D-11D2-945F-00C04FB984F9} /tmp/source /tmp/target
    ú'%prog <gpo> <source> <target> [options]r  r  r  r  r  r  r  ©r†   r  r  Nc                 ó�  • UR                  5       U l        UR                  U R                  SS9U l        U(       a"  UR	                  S5      (       a  USS  nX@l        OD[        U R                  U R                  5      n[        U R                  U R                  US9U l        [        USU R                  U R                  S9n	U R                  5         [        XR                  U R                  U R                  U5      n
U R                  R                  S5      nS	R                  UR                  5       S
US/5      nS	R                  US/5      n [        R                   " [        R"                  " U	R%                  U5      5      5      nUR'                  5       R)                  S5      nUR(                  " S5      n[        R6                  " US5      n[        R6                  " US5      nUUl        [        R6                  " US5      nUUl        [?        5       nURA                  USSS9  URC                  S5         [E        Xœ5        U	RG                  UURI                  5       5        U
RK                  SS9  g ! [*         Ga  nUR,                  S   [.        [0        [2        4;   aÆ  [        R                   " [        R4                  " S5      5      n[        R6                  " UR'                  5       S5      n[        R6                  " US5      nSUl        [        R6                  " US5      nSUl        [        R6                  " US5      nSUl        [        R6                  " US5      n S nAGN®UR,                  S   [:        :X  a  [=        S5      ee S nAff = f! [*         a(  nUR,                  S   [:        :X  a  [=        S5      ee S nAff = f)NTr  rg   rd  re  rg  rh  ri  r©   rj  úMACHINE\VGP\VTLA\Unix\Symlinkr}  r~  rß   r   r  r€  r�  rr   zSymlink Policyr‚  zSpecifies symbolic link datarm  r  r  r  r�  rŽ  r‘  )&r&  ri   r'  rj   rU   rk   r   rn   r3   r  r5   r…   ru  r>   rš   rû  r“  rü  rÏ   r”  r•  r   rv  r-   r.   r/   r–  r—  r˜  r1   r   r)   rÑ   r™  r2   rì   rë   rš  )rú   r†   r  r  r  r  r  r  r}  rÔ   r¡  ri  r�  rž  rŸ  r   rß   rm   r~  r   rr   r‚  r  Ú
source_elmÚ
target_elmr¤  s                             rB   r(  Úcmd_add_symlink.runÃ
  s  € à×(Ñ(Ó*ˆŒØ×-Ñ-¨d¯g©gÈÐ-ÐMˆŒ
ö �—‘˜i×(Ñ(Ø˜A˜B˜%ˆKØ�Hä'¨¯©°·±Ó<ˆKÜ˜dŸg™g t§z¡z°kÑBˆDŒHô ˜kØ&Ø!%§¡Ø$(§J¡Jñ0ˆð
 	×ÑÔÜ# C¯©°$·*±*¸d¿j¹jÈ!ÓLˆà—‘—‘˜GÓ$ˆØ—)‘)˜UŸ[™[›]¨J¸Ø@ðBó Cˆà—)‘)˜W nÐ5Ó6ˆð	Ü—~’~¤b§m¢m°D·M±MÀ'Ó4JÓ&KÓLˆHØ×%Ñ%Ó'×,Ñ,¨_Ó=ˆFØ—;’;˜vÓ&ˆDô, Ÿ-š-¨Ð.?Ó@ˆÜ—]’] ?°HÓ=ˆ
Ø ˆ
ŒÜ—]’] ?°HÓ=ˆ
Ø ˆ
Œä‹iˆØ�‰�s W¸dˆÑCØ�‰�Œð	Ü! $Ô0Ø�M‰M˜' 3§8¡8£:Ô.Ø×!Ñ!°$Ð!Ò7øôC ô 	Ø�v‰v�a‰yÔ:Ü<Ü<ð>ó >ô Ÿ>š>¬"¯*ª*°[Ó*AÓB�Ü "§¢¨h×.>Ñ.>Ó.@Ø.=ó!?�ä—]’] =°)Ó<�Ø�”Ü—}’} ]°FÓ;�Ø,�”	Ü Ÿmšm¨M¸=ÓI�Ø#A�Ô Ü—}’} ]°FÓ;–Ø—‘˜‘Ô5Ó5Ü"ð $Dó Eð Eð ûð'	ûôD ó 	Ø�v‰v�a‰yÔ3Ó3Ü"ð $Dó Eð Eàûð		ús8   ÅA*I5 È::N É5NÊ C"NÍ(#NÎNÎ
OÎ#O Ï Or*  r+  r¦  r`   rD   rB   r  r  «
  sf   † ñð 9€Hð ×)Ñ)Ø×-Ñ-Ø×.Ñ.ñÐñ 	ˆt�WÐ#JÐQTØ Cñ	)ð€Mò
 -€JàHLØ÷DrD   r  c            	       ó’   • \ rS rSrSrSr\R                  \R                  \R                  S.r
\" SSS\SS	S
9/r/ SQr  SS jrSrg)Úcmd_remove_symlinki	  a  Removes a VGP Symbolic Link Group Policy from the sysvol

This command removes a symlink setting from the sysvol from applying to winbind
clients.

Example:
samba-tool gpo manage symlink remove {31B2F340-016D-11D2-945F-00C04FB984F9} /tmp/source /tmp/target
    r  r  r  r  r  r  r  r  r  Nc                 óv  • UR                  5       U l        UR                  U R                  SS9U l        U(       a"  UR	                  S5      (       a  USS  nX@l        OD[        U R                  U R                  5      n[        U R                  U R                  US9U l        [        USU R                  U R                  S9n	U R                  5         [        XR                  U R                  U R                  U5      n
U R                  R                  S5      nS	R                  UR                  5       S
US/5      nS	R                  US/5      n [        R                   " [        R"                  " U	R%                  U5      5      5      nUR'                  5       R)                  S5      nUR(                  " S5      nUR9                  S5       HZ  nUR)                  S5      nUR)                  S5      nUR:                  U:X  d  M7  UR:                  U:X  d  MI  UR=                  U5          O   [5        SU-  U5      e[?        5       nURA                  USSS9  URC                  S5         [E        Xœ5        U	RG                  UURI                  5       5        U
RK                  SS9  g ! [*         aY  nUR,                  S   [.        [0        [2        4;   a  [5        SU-  U5      eUR,                  S   [6        :X  a  [5        S5      ee S nAff = f! [*         a(  nUR,                  S   [6        :X  a  [5        S5      ee S nAff = f)NTr  rg   rd  re  rg  rh  ri  r©   rj  r  r}  r~  rß   r   z>Cannot remove link from '%s' to '%s' because it does not existrm  r  r  r  r�  rŽ  r‘  )&r&  ri   r'  rj   rU   rk   r   rn   r3   r  r5   r…   ru  r>   rš   rû  r“  rü  rÏ   r”  r•  r   rv  r-   r.   r/   r   r1   r±  r˜  r›   r)   rÑ   r™  r2   rì   rë   rš  )rú   r†   r  r  r  r  r  r  r}  rÔ   r¡  ri  r�  rž  rŸ  r   rß   rm   r  r  r  r¤  s                         rB   r(  Úcmd_remove_symlink.run"  sæ  € à×(Ñ(Ó*ˆŒØ×-Ñ-¨d¯g©gÈÐ-ÐMˆŒ
ö �—‘˜i×(Ñ(Ø˜A˜B˜%ˆKØ�Hä'¨¯©°·±Ó<ˆKÜ˜dŸg™g t§z¡z°kÑBˆDŒHô ˜kØ&Ø!%§¡Ø$(§J¡Jñ0ˆð
 	×ÑÔÜ# C¯©°$·*±*¸d¿j¹jÈ!ÓLˆà—‘—‘˜GÓ$ˆØ—)‘)˜UŸ[™[›]¨J¸Ø@ðBó Cˆà—)‘)˜W nÐ5Ó6ˆð	Ü—~’~¤b§m¢m°D·M±MÀ'Ó4JÓ&KÓLˆHØ×%Ñ%Ó'×,Ñ,¨_Ó=ˆFØ—;’;˜vÓ&ˆDð  $Ÿ|™|Ð,=Ö>ˆOØ(×-Ñ-¨hÓ7ˆJØ(×-Ñ-¨hÓ7ˆJØ�‰ &Õ(¨Z¯_©_ÀÕ-FØ—‘˜OÔ,Ùñ  ?ô ð  ;Ø=Cñ DØEKóMð Mô ‹iˆØ�‰�s W¸dˆÑCØ�‰�Œð	Ü! $Ô0Ø�M‰M˜' 3§8¡8£:Ô.Ø×!Ñ!°$Ð!Ò7øô; ó 
	Ø�v‰v�a‰yÔ:Ü<Ü<ð>ó >ô #ð $0Ø28ñ$9Ø:@óBð Bà—‘˜‘Ô5Ó5Ü"ð $Dó Eð Eð ûð
	ûô< ó 	Ø�v‰v�a‰yÔ3Ó3Ü"ð $Dó Eð Eàûð		ús2   ÅA*J  É%:L Ê 
LÊ*AK>Ë>LÌ
L8Ì#L3Ì3L8r*  r+  r¦  r`   rD   rB   r  r  	  sf   † ñð 9€Hð ×)Ñ)Ø×-Ñ-Ø×.Ñ.ñÐñ 	ˆt�WÐ#JÐQTØ Cñ	)ð€Mò
 -€JàHLØ÷@rD   r  c                   óX   • \ rS rSrSr0 r\" 5       \S'   \" 5       \S'   \" 5       \S'   Sr	g)Úcmd_symlinkid  z#Manage symlink Group Policy ObjectsrÊ   r(  r›   r`   N)
r  r  r  r  r-  rÄ  r  r  r  r	  r`   rD   rB   r  r  d  s1   † Ù-Ø€KÙ*Ó,€K�ÑÙ(Ó*€K�ÑÙ.Ó0€K�ÔrD   r  c            	       óŒ   • \ rS rSrSrSr\R                  \R                  \R                  S.r
\" SSS\SS	S
9/rS/rSS jrSrg)Úcmd_list_filesik  záList VGP Files Group Policy from the sysvol

This command lists files which will be copied from the sysvol and applied to winbind clients.

Example:
samba-tool gpo manage files list {31B2F340-016D-11D2-945F-00C04FB984F9}
    ra  r  r  r  r  r  r  r  r†   Nc           
      óä  • UR                  5       U l        UR                  U R                  SS9U l        U(       a"  UR	                  S5      (       a  USS  nX l        OD[        U R                  U R                  5      n[        U R                  U R                  US9U l        [        USU R                  U R                  S9nU R                  R                  S5      nS	R                  UR                  5       S
USS/5      n	 [        R                  " UR                  U	5      5      n
U
R-                  S5      nUR,                  " S5      nUR/                  S5       H¶  nUR-                  S5      R0                  nUR-                  S5      R0                  nUR-                  S5      R0                  nUR-                  S5      R0                  n[3        U5      n[5        U5      < SU< SU< SU< SU< 3	nU R6                  R9                  SU-  5        M¸     g ! [         aO  nUR                   S   ["        [$        [&        4;   a   S nAg UR                   S   [(        :X  a  [+        S5      ee S nAff = f)NTr  rg   rd  re  rg  rh  ri  r©   rj  r  zFiles\manifest.xmlr   rm  r~  rß   r  r  r  r>  rŒ  Ú	z -> r¯  )r&  ri   r'  rj   rU   rk   r   rn   r3   ru  r>   rš   rû  rü  rÏ   r   rv  r-   r.   r/   r1   r   r•  r±  r˜  r*   r+   r÷   rÑ   )rú   r†   r  r  r  r  r}  rÔ   ri  rž  rŸ  rm   r   rß   rƒ  r  r  r>  rŒ  Úmoder¸  s                        rB   r(  Úcmd_list_files.runƒ  s  € Ø×(Ñ(Ó*ˆŒØ×-Ñ-¨d¯g©gÈÐ-ÐMˆŒ
ö �—‘˜i×(Ñ(Ø˜A˜B˜%ˆKØ�Hä'¨¯©°·±Ó<ˆKÜ˜dŸg™g t§z¡z°kÑBˆDŒHô ˜kØ&Ø!%§¡Ø$(§J¡Jñ0ˆð
 —‘—‘˜GÓ$ˆØ—)‘)˜UŸ[™[›]¨J¸Ø :Ø 5ð7ó 8ˆð
	Ü—}’} T§]¡]°7Ó%;Ó<ˆHð —‘˜Ó/ˆØ�{Š{˜6Ó"ˆØ—\‘\Ð"3Ö4ˆEØ—Z‘Z Ó)×.Ñ.ˆFØ—Z‘Z Ó)×.Ñ.ˆFØ—:‘:˜fÓ%×*Ñ*ˆDØ—J‘J˜wÓ'×,Ñ,ˆEÜ˜UÓ#ˆDä# DÖ)«4³»ÂðHˆAà�I‰I�O‰O˜F Q™JÖ'ò 5øô ó 	Ø�v‰v�a‰yÔ:Ü<Ü<ð>ó >ô Ø�v‰v�a‰yÔ3Ó3Ü"ð $Dó Eð Eàûð	ús   Ä%H È
I/È "I*É#I*É*I/r*  r+  r¦  r`   rD   rB   r  r  k  sa   † ñð '€Hð ×)Ñ)Ø×-Ñ-Ø×.Ñ.ñÐñ 	ˆt�WÐ#JÐQTØ Cñ	)ð€Mð
 �€J÷,(rD   r  c            	       ó’   • \ rS rSrSrSr\R                  \R                  \R                  S.r
\" SSS\SS	S
9/r/ SQr  SS jrSrg)Úcmd_add_filesi±  a  Add VGP Files Group Policy to the sysvol

This command adds files which will be copied from the sysvol and applied to winbind clients.

Example:
samba-tool gpo manage files add {31B2F340-016D-11D2-945F-00C04FB984F9} ./source.txt /usr/share/doc/target.txt root root 600
    z=%prog <gpo> <source> <target> <user> <group> <mode> [options]r  r  r  r  r  r  r  )r†   r  r  r>  rŒ  r  Nc                 óà
  • UR                  5       U l        U	R                  U R                  SS9U l        [        R
                  R                  U5      (       d  [        SU-  5      eU(       a"  UR                  S5      (       a  USS  nXpl	        OD[        U R                  U R                  5      n[        U R                  U R                  US9U l	        [        USU R                  U R                  S9nU R                  5         [        XR                  U R                  U R                  U5      nU R                  R!                  S	5      nS
R#                  UR%                  5       SUS/5      nS
R#                  US/5      n [&        R(                  " [&        R*                  " UR-                  U5      5      5      nUR/                  5       R1                  S5      nUR0                  " S5      n[&        R>                  " US5      n[&        R>                  " US5      n[        R
                  RE                  U5      Ul         [&        R>                  " US5      nUUl         [&        R>                  " US5      nUUl         [&        R>                  " US5      nUUl         S H»  u  nn[&        R>                  " US5      n U RG                  S U5        [I        US!5      S"U-  -  (       a  [&        R>                  " U S#5        [I        US!5      S$U-  -  (       a  [&        R>                  " U S%5        [I        US!5      S&U-  -  (       d  M¤  [&        R>                  " U S'5        M½     [K        5       n!URM                  U!S(SS)9  U!RO                  S5        [Q        US*5      RS                  5       n"S
R#                  U[        R
                  RE                  U5      /5      n# [U        XÏ5        URW                  UU!RS                  5       5        URW                  U#U"5        URY                  SS+9  g ! [2         Ga  nUR4                  S   [6        [8        [:        4;   aÆ  [&        R(                  " [&        R<                  " S5      5      n[&        R>                  " UR/                  5       S5      n[&        R>                  " US5      nSUl         [&        R>                  " US5      nSUl         [&        R>                  " US5      nSUl         [&        R>                  " US5      n S nAGN$UR4                  S   [B        :X  a  [        S5      ee S nAff = f! [2         a(  nUR4                  S   [B        :X  a  [        S5      ee S nAff = f),NTr  zSource '%s' does not existrg   rd  re  rg  rh  ri  r©   rj  úMACHINE\VGP\VTLA\Unix\Filesr}  r~  rß   r   r  r€  r�  rr   ÚFilesr‚  z+Represents file data to set/copy on clientsrm  r  r  r  r>  rŒ  ))r>  é   )rŒ  r«   )Úotherr   Úpermissionsr  rN   rr  rë   rM   rÑ   rO   Úexecuter�  rŽ  rè   r‘  )-r&  ri   r'  rj   rÅ   rÆ   r™  r   rU   rk   r   rn   r3   r  r5   r…   ru  r>   rš   rû  r“  rü  rÏ   r”  r•  r   rv  r-   r.   r/   r–  r—  r˜  r1   rú  rÚ  rX   r)   rÑ   r™  rÐ   rë   r2   rì   rš  )$rú   r†   r  r  r>  rŒ  r  r  r  r  r  r}  rÔ   r¡  ri  r�  rž  rŸ  r   rß   rm   r~  r   rr   r‚  r  r  r  r¢  Ú	group_elmÚptypeÚshiftr&  r¤  Úsource_dataÚsysvol_sources$                                       rB   r(  Úcmd_add_files.runÉ  sK  € à×(Ñ(Ó*ˆŒØ×-Ñ-¨d¯g©gÈÐ-ÐMˆŒ
ä�w‰w�~‰~˜f×%Ñ%ÜÐ;¸fÑDÓEÐEö �—‘˜i×(Ñ(Ø˜A˜B˜%ˆKØ�Hä'¨¯©°·±Ó<ˆKÜ˜dŸg™g t§z¡z°kÑBˆDŒHô ˜kØ&Ø!%§¡Ø$(§J¡Jñ0ˆð
 	×ÑÔÜ# C¯©°$·*±*¸d¿j¹jÈ!ÓLˆà—‘—‘˜GÓ$ˆØ—)‘)˜UŸ[™[›]¨J¸Ø>ð@ó Aˆà—)‘)˜W nÐ5Ó6ˆð	Ü—~’~¤b§m¢m°D·M±MÀ'Ó4JÓ&KÓLˆHØ×%Ñ%Ó'×,Ñ,¨_Ó=ˆFØ—;’;˜vÓ&ˆDô, Ÿ-š-¨Ð.?Ó@ˆÜ—]’] ?°HÓ=ˆ
ÜŸ'™'×*Ñ*¨6Ó2ˆ
ŒÜ—]’] ?°HÓ=ˆ
Ø ˆ
ŒÜ—=’= °&Ó9ˆØˆŒÜ—M’M /°7Ó;ˆ	Øˆ	ŒÛE‰LˆE�5ÜŸ-š-¨¸ÓGˆKØ�O‰O˜F EÔ*Ü�4˜‹|˜s e™|×,Ü—’˜k¨6Ô2Ü�4˜‹|˜s e™|×,Ü—’˜k¨7Ô3Ü�4˜‹|˜s e™|×,Ñ,Ü—’˜k¨9Ö5ñ Fô ‹iˆØ�‰�s W¸dˆÑCØ�‰�ŒÜ˜6 4Ó(×-Ñ-Ó/ˆØŸ	™	 7¬B¯G©G×,<Ñ,<¸VÓ,DÐ"EÓFˆð		Ü! $Ô0Ø�M‰M˜' 3§8¡8£:Ô.Ø�M‰M˜-¨Ô5Ø×!Ñ!°$Ð!Ò7øôc ô 	Ø�v‰v�a‰yÔ:Ü<Ü<ð>ó >ô Ÿ>š>¬"¯*ª*°[Ó*AÓB�Ü "§¢¨h×.>Ñ.>Ó.@Ø.=ó!?�ä—]’] =°)Ó<�Ø�”Ü—}’} ]°FÓ;�Ø#�”	Ü Ÿmšm¨M¸=ÓI�Ø#P�Ô Ü—}’} ]°FÓ;–Ø—‘˜‘Ô5Ó5Ü"ð $Dó Eð Eð ûð'	ûôd ó 	Ø�v‰v�a‰yÔ3Ó3Ü"ð $Dó Eð Eàûð		ús9   ÆA*P ÏAT; ÐT8Ð(C"T3Ô#T3Ô3T8Ô;
U-Õ#U(Õ(U-r*  r+  r¦  r`   rD   rB   r   r   ±  sh   † ñð O€Hð ×)Ñ)Ø×-Ñ-Ø×.Ñ.ñÐñ 	ˆt�WÐ#JÐQTØ Cñ	)ð€Mò
 F€Jà<@Ø7;÷WrD   r   c            	       ó’   • \ rS rSrSrSr\R                  \R                  \R                  S.r
\" SSS\SS	S
9/rSS/r  SS jrSrg)Úcmd_remove_filesi"  a  Remove VGP Files Group Policy from the sysvol

This command removes files which would be copied from the sysvol and applied to winbind clients.

Example:
samba-tool gpo manage files remove {31B2F340-016D-11D2-945F-00C04FB984F9} /usr/share/doc/target.txt
    z%prog <gpo> <target> [options]r  r  r  r  r  r  r  r†   r  Nc                 óª  • UR                  5       U l        UR                  U R                  SS9U l        U(       a"  UR	                  S5      (       a  USS  nX0l        OD[        U R                  U R                  5      n[        U R                  U R                  US9U l        [        USU R                  U R                  S9nU R                  5         [        XR                  U R                  U R                  U5      n	U R                  R                  S5      n
S	R                  U
R                  5       S
US/5      nS	R                  US/5      n [        R                   " [        R"                  " UR%                  U5      5      5      nUR'                  5       R)                  S5      nUR(                  " S5      nUR9                  S5       Hv  nUR)                  S5      nUR)                  S5      nUR:                  U:X  d  M7  S	R                  UUR:                  /5      nUR=                  U5        UR?                  U5          O   [5        SU-  5      e[A        5       nURC                  USSS9  URE                  S5         [G        X‹5        URI                  UURK                  5       5        U	RM                  SS9  g ! [*         aX  nUR,                  S   [.        [0        [2        4;   a  [5        SU-  5      eUR,                  S   [6        :X  a  [5        S5      ee S nAff = f! [*         a(  nUR,                  S   [6        :X  a  [5        S5      ee S nAff = f)NTr  rg   rd  re  rg  rh  ri  r©   rj  r"  r}  r~  rß   r   z1Cannot remove file '%s' because it does not existrm  r  r  r  r�  rŽ  r‘  )'r&  ri   r'  rj   rU   rk   r   rn   r3   r  r5   r…   ru  r>   rš   rû  r“  rü  rÏ   r”  r•  r   rv  r-   r.   r/   r   r1   r±  r˜  Úunlinkr›   r)   rÑ   r™  r2   rì   rë   rš  )rú   r†   r  r  r  r  r  r}  rÔ   r¡  ri  r�  rž  rŸ  r   rß   rm   r  r  r  r  r¤  s                         rB   r(  Úcmd_remove_files.run:  s÷  € à×(Ñ(Ó*ˆŒØ×-Ñ-¨d¯g©gÈÐ-ÐMˆŒ
ö �—‘˜i×(Ñ(Ø˜A˜B˜%ˆKØ�Hä'¨¯©°·±Ó<ˆKÜ˜dŸg™g t§z¡z°kÑBˆDŒHô ˜kØ&Ø!%§¡Ø$(§J¡Jñ0ˆð
 	×ÑÔÜ# C¯©°$·*±*¸d¿j¹jÈ!ÓLˆà—‘—‘˜GÓ$ˆØ—)‘)˜UŸ[™[›]¨J¸Ø>ð@ó Aˆà—)‘)˜W nÐ5Ó6ˆð	Ü—~’~¤b§m¢m°D·M±MÀ'Ó4JÓ&KÓLˆHØ×%Ñ%Ó'×,Ñ,¨_Ó=ˆFØ—;’;˜vÓ&ˆDð  $Ÿ|™|Ð,=Ö>ˆOØ(×-Ñ-¨hÓ7ˆJØ(×-Ñ-¨hÓ7ˆJØ�‰ &Õ(ØŸ™ G¨Z¯_©_Ð#=Ó>�Ø—‘˜FÔ#Ø—‘˜OÔ,Ùñ  ?ô ð  ;Ø=Cñ Dó Eð Eô ‹iˆØ�‰�s W¸dˆÑCØ�‰�Œð	Ü! $Ô0Ø�M‰M˜' 3§8¡8£:Ô.Ø×!Ñ!°$Ð!Ò7øô? ó 
	Ø�v‰v�a‰yÔ:Ü<Ü<ð>ó >ô #ð $0Ø28ñ$9ó :ð :à—‘˜‘Ô5Ó5Ü"ð $Dó Eð Eð ûð
	ûô@ ó 	Ø�v‰v�a‰yÔ3Ó3Ü"ð $Dó Eð Eàûð		ús2   ÅA*J; Ê :L  Ê;
LËALÌLÌ 
MÌ*#MÍMr*  r+  r¦  r`   rD   rB   r/  r/  "  sk   † ñð 0€Hð ×)Ñ)Ø×-Ñ-Ø×.Ñ.ñÐñ 	ˆt�WÐ#JÐQTØ Cñ	)ð€Mð
 ˜Ð"€Jà@DØ÷BrD   r/  c                   óX   • \ rS rSrSr0 r\" 5       \S'   \" 5       \S'   \" 5       \S'   Sr	g)Ú	cmd_filesi~  z!Manage Files Group Policy ObjectsrÊ   r(  r›   r`   N)
r  r  r  r  r-  rÄ  r  r   r/  r	  r`   rD   rB   r4  r4  ~  s0   † Ù+Ø€KÙ(Ó*€K�ÑÙ&›€K�ÑÙ,Ó.€K�ÔrD   r4  c            	       óŒ   • \ rS rSrSrSr\R                  \R                  \R                  S.r
\" SSS\SS	S
9/rS/rSS jrSrg)Úcmd_list_opensshi…  zãList VGP OpenSSH Group Policy from the sysvol

This command lists openssh options from the sysvol that will be applied to winbind clients.

Example:
samba-tool gpo manage openssh list {31B2F340-016D-11D2-945F-00C04FB984F9}
    ra  r  r  r  r  r  r  r  r†   Nc           	      ó¾  • UR                  5       U l        UR                  U R                  SS9U l        U(       a"  UR	                  S5      (       a  USS  nX l        OD[        U R                  U R                  5      n[        U R                  U R                  US9U l        [        USU R                  U R                  S9nU R                  R                  S5      nS	R                  UR                  5       S
USS/5      n	 [        R                  " UR                  U	5      5      n
U
R-                  S5      nUR,                  " S5      nUR-                  S5      nUR/                  S5       H’  nUR-                  S5      R0                  (       a  M%  UR/                  S5       HX  nU R2                  R5                  UR-                  S5      R0                  < SUR-                  S5      R0                  < S35        MZ     M”     g ! [         aO  nUR                   S   ["        [$        [&        4;   a   S nAg UR                   S   [(        :X  a  [+        S5      ee S nAff = f)NTr  rg   rd  re  rg  rh  ri  r©   rj  zMACHINE\VGP\VTLA\SshCfgzSshD\manifest.xmlr   rm  r~  rß   Ú
configfileÚconfigsectionÚsectionnameÚkeyvaluepairrÁ   r<   r?   r%  ©r&  ri   r'  rj   rU   rk   r   rn   r3   ru  r>   rš   rû  rü  rÏ   r   rv  r-   r.   r/   r1   r   r•  r±  r˜  r÷   rÑ   )rú   r†   r  r  r  r  r}  rÔ   ri  rž  rŸ  rm   r   rß   r8  r9  Úkvs                    rB   r(  Úcmd_list_openssh.run�  sõ  € Ø×(Ñ(Ó*ˆŒØ×-Ñ-¨d¯g©gÈÐ-ÐMˆŒ
ö �—‘˜i×(Ñ(Ø˜A˜B˜%ˆKØ�Hä'¨¯©°·±Ó<ˆKÜ˜dŸg™g t§z¡z°kÑBˆDŒHô ˜kØ&Ø!%§¡Ø$(§J¡Jñ0ˆð
 —‘—‘˜GÓ$ˆØ—)‘)˜UŸ[™[›]¨J¸Ø <Ø 4ð6ó 7ˆð
	Ü—}’} T§]¡]°7Ó%;Ó<ˆHð —‘˜Ó/ˆØ�{Š{˜6Ó"ˆØ—Y‘Y˜|Ó,ˆ
Ø'×/Ñ/°Ö@ˆMØ×!Ñ! -Ó0×5×5ÙØ#×+Ñ+¨NÖ;�Ø—	‘	—‘¨R¯W©W°U«^×-@Ô-@Ø-/¯W©W°WÓ-=×-BÔ-Bð!Dö Eó <ò Aøô ó 	Ø�v‰v�a‰yÔ:Ü<Ü<ð>ó >ô Ø�v‰v�a‰yÔ3Ó3Ü"ð $Dó Eð Eàûð	ús   Ä%H È
IÈ"IÈ4#IÉIr*  r+  r¦  r`   rD   rB   r6  r6  …  sb   † ñð '€Hð ×)Ñ)Ø×-Ñ-Ø×.Ñ.ñÐñ 	ˆt�WÐ#JÐQTØ Cñ	)ð€Mð
 �€J÷*ErD   r6  c            	       ó’   • \ rS rSrSrSr\R                  \R                  \R                  S.r
\" SSS\SS	S
9/r/ SQr  SS jrSrg)Úcmd_set_opensshiÉ  a"  Sets a VGP OpenSSH Group Policy to the sysvol

This command sets an openssh setting to the sysvol for applying to winbind
clients. Not providing a value will unset the policy.

Example:
samba-tool gpo manage openssh set {31B2F340-016D-11D2-945F-00C04FB984F9} KerberosAuthentication Yes
    z'%prog <gpo> <setting> [value] [options]r  r  r  r  r  r  r  rõ  Nc                 óâ
  • UR                  5       U l        UR                  U R                  SS9U l        U(       a"  UR	                  S5      (       a  USS  nX@l        OD[        U R                  U R                  5      n[        U R                  U R                  US9U l        [        USU R                  U R                  S9n	U R                  5         [        XR                  U R                  U R                  U5      n
U R                  R                  S5      nS	R                  UR                  5       S
US/5      nS	R                  US/5      n [        R                   " [        R"                  " U	R%                  U5      5      5      nUR'                  5       R)                  S5      nUR(                  " S5      nUR)                  S5      nUbÜ  UR?                  S5       HÆ  nUR)                  S5      R8                  (       a  M%  0 nUR?                  S5       H  nUUUR)                  S5      '   M     UURA                  5       ;   a  UUU   l        Ms  [        R6                  " US5      n[        R6                  " US5      nUUl        [        R6                  " US5      nUUl        MÈ     O¨UR?                  S5       H“  nUR)                  S5      R8                  (       a  M%  0 nUR?                  S5       H!  nUUUR)                  S5      R8                  '   M#     UURA                  5       ;   a  URC                  UU   5        M‡  [=        S U-  5      e   [E        5       nURG                  US!SS"9  URI                  S5         [K        Xœ5        U	RM                  UURO                  5       5        U
RQ                  SS#9  g ! [*         Gat  nUR,                  S   [.        [0        [2        4;   Ga)  [        R                   " [        R4                  " S5      5      n[        R6                  " UR'                  5       S5      n[        R6                  " US5      nSUl        [        R6                  " US5      nSUl        [        R6                  " US5      nSUl        [        R6                  " US5      nSUl        [        R6                  " US5      n[        R6                  " US5      n[        R6                  " US5      n[        R6                  " US5         S nAGNFUR,                  S   [:        :X  a  [=        S5      ee S nAff = f! [*         a(  nUR,                  S   [:        :X  a  [=        S5      ee S nAff = f)$NTr  rg   rd  re  rg  rh  ri  r©   rj  zMACHINE\VGP\VTLA\SshCfg\SshDr}  r~  rß   r8  r   r  r€  r�  rr   zConfiguration Filer‚  z+Represents Unix configuration file settingsrƒ  r„  r9  r:  rm  r;  rÁ   r?   r¾  r�  rŽ  r‘  ))r&  ri   r'  rj   rU   rk   r   rn   r3   r  r5   r…   ru  r>   rš   rû  r“  rü  rÏ   r”  r•  r   rv  r-   r.   r/   r–  r—  r˜  r1   r   r±  r¿  r›   r)   rÑ   r™  r2   rì   rë   rš  )rú   r†   rö  r?   r  r  r  r  r}  rÔ   r¡  ri  r�  rž  rŸ  r   rß   r8  rm   r~  r   rr   r‚  rƒ  r9  Úsettingsr=  r;  rÁ   Údvaluer¤  s                                  rB   r(  Úcmd_set_openssh.runâ  s‚  € à×(Ñ(Ó*ˆŒØ×-Ñ-¨d¯g©gÈÐ-ÐMˆŒ
ö �—‘˜i×(Ñ(Ø˜A˜B˜%ˆKØ�Hä'¨¯©°·±Ó<ˆKÜ˜dŸg™g t§z¡z°kÑBˆDŒHô ˜kØ&Ø!%§¡Ø$(§J¡Jñ0ˆð
 	×ÑÔÜ# C¯©°$·*±*¸d¿j¹jÈ!ÓLˆà—‘—‘˜GÓ$ˆØ—)‘)˜UŸ[™[›]¨J¸Ø?ðAó Bˆà—)‘)˜W nÐ5Ó6ˆð	Ü—~’~¤b§m¢m°D·M±MÀ'Ó4JÓ&KÓLˆHØ×%Ñ%Ó'×,Ñ,¨_Ó=ˆFØ—;’;˜vÓ&ˆDØŸ™ <Ó0ˆJð6 ÑØ!+×!3Ñ!3°OÖ!D�Ø ×%Ñ% mÓ4×9×9ÙØ�Ø'×/Ñ/°Ö?�BØ/1�H˜RŸW™W U›^Ó,ñ @à˜hŸm™m›oÓ-Ø-2�H˜WÑ%Ö*ä#%§=¢=°ÀÓ#O�LÜŸ-š-¨°eÓ<�CØ&�C”HÜŸ]š]¨<¸ÓA�FØ"'�F–Kò "Eð ",×!3Ñ!3°OÖ!D�Ø ×%Ñ% mÓ4×9×9ÙØ�Ø'×/Ñ/°Ö?�BØ46�H˜RŸW™W U›^×0Ñ0Ó1ñ @à˜hŸm™m›oÓ-Ø!×(Ñ(¨°'Ñ):Ö;ä&ð (3Ø5<ñ(=ó >ð >ñ "Eô ‹iˆØ�‰�s W¸dˆÑCØ�‰�Œð	Ü! $Ô0Ø�M‰M˜' 3§8¡8£:Ô.Ø×!Ñ!°$Ð!Ò7øôy ô 	Ø�v‰v�a‰yÔ:Ü<Ü<ð>ô >ô Ÿ>š>¬"¯*ª*°[Ó*AÓB�Ü "§¢¨h×.>Ñ.>Ó.@Ø.=ó!?�ä—]’] =°)Ó<�Ø�”Ü—}’} ]°FÓ;�Ø0�”	Ü Ÿmšm¨M¸=ÓI�Ø#P�Ô ÜŸ]š]¨=¸,ÓG�
Ø")�
”Ü—}’} ]°FÓ;�ÜŸ]š]¨4°Ó>�
Ü "§¢¨j¸/Ó J�Ü—’˜m¨]×;Ò;Ø—‘˜‘Ô5Ó5Ü"ð $Dó Eð Eð ûð1	ûôz ó 	Ø�v‰v�a‰yÔ3Ó3Ü"ð $Dó Eð Eàûð		ús8   ÅA;N: Í?:T< Î:T9ÏET4Ô#T4Ô4T9Ô<
U.Õ#U)Õ)U.r*  rß  r¦  r`   rD   rB   r@  r@  É  sf   † ñð 9€Hð ×)Ñ)Ø×-Ñ-Ø×.Ñ.ñÐñ 	ˆt�WÐ#JÐQTØ Cñ	)ð€Mò
 .€Jà>BØ'+÷`rD   r@  c                   óD   • \ rS rSrSr0 r\" 5       \S'   \" 5       \S'   Srg)Úcmd_opensshiD  z#Manage OpenSSH Group Policy ObjectsrÊ   rÚ  r`   N)	r  r  r  r  r-  rÄ  r6  r@  r	  r`   rD   rB   rF  rF  D  s$   † Ù-Ø€KÙ*Ó,€K�ÑÙ(Ó*€K�ÔrD   rF  c            	       óŒ   • \ rS rSrSrSr\R                  \R                  \R                  S.r
\" SSS\SS	S
9/rS/rSS jrSrg)Úcmd_list_startupiJ  zâList VGP Startup Script Group Policy from the sysvol

This command lists the startup script policies currently set on the sysvol.

Example:
samba-tool gpo manage scripts startup list {31B2F340-016D-11D2-945F-00C04FB984F9}
    ra  r  r  r  r  r  r  r  r†   Nc           
      óÜ  • UR                  5       U l        UR                  U R                  SS9U l        U(       a"  UR	                  S5      (       a  USS  nX l        OD[        U R                  U R                  5      n[        U R                  U R                  US9U l        [        USU R                  U R                  S9nU R                  R                  S5      nS	R                  UR                  5       S
USS/5      n	 [        R                  " UR                  U	5      5      n
U
R-                  S5      nUR,                  " S5      nUR/                  S5       H²  nUR-                  S5      nS	R                  S	UR                  5       S
USSUR0                  /5      nUR-                  S5      nUR-                  S5      nUb  UR0                  nOSnUb  UR0                  nOSnU R2                  R5                  SU< SU< SU< S35        M´     g ! [         aO  nUR                   S   ["        [$        [&        4;   a   S nAg UR                   S   [(        :X  a  [+        S5      ee S nAff = f)NTr  rg   rd  re  rg  rh  ri  r©   rj  r  zScripts\Startup\manifest.xmlr   rm  r~  rß   r‰  ÚscriptzMACHINE\VGP\VTLA\Unix\ScriptsÚStartupÚ
parametersÚrun_asÚrootrJ   z@reboot r<   r%  r<  )rú   r†   r  r  r  r  r}  rÔ   ri  rž  rŸ  rm   r   rß   r‰  rJ  Úscript_pathrL  rM  s                      rB   r(  Úcmd_list_startup.runb  s$  € Ø×(Ñ(Ó*ˆŒØ×-Ñ-¨d¯g©gÈÐ-ÐMˆŒ
ö �—‘˜i×(Ñ(Ø˜A˜B˜%ˆKØ�Hä'¨¯©°·±Ó<ˆKÜ˜dŸg™g t§z¡z°kÑBˆDŒHô ˜kØ&Ø!%§¡Ø$(§J¡Jñ0ˆð
 —‘—‘˜GÓ$ˆØ—)‘)˜UŸ[™[›]¨J¸Ø :Ø @ðBó Cˆð
	Ü—}’} T§]¡]°7Ó%;Ó<ˆHð —‘˜Ó/ˆØ�{Š{˜6Ó"ˆØŸ<™<¨Ö6ˆKØ ×%Ñ% hÓ/ˆFØŸ)™) T¨5¯;©;«=¸*ÀcØ%HØ%.°·±ð%=ó >ˆKð %×)Ñ)¨,Ó7ˆJØ ×%Ñ% hÓ/ˆFØÑ!ØŸ™‘à�ØÑ%Ø'Ÿ_™_‘
à�
Ø�I‰I�OŠO³F»KÛ2<ð>ö ?ò 7øô ó 	Ø�v‰v�a‰yÔ:Ü<Ü<ð>ó >ô Ø�v‰v�a‰yÔ3Ó3Ü"ð $Dó Eð Eàûð	ús   Ä%H È
I+È"I&É#I&É&I+r*  r+  r¦  r`   rD   rB   rH  rH  J  sa   † ñð '€Hð ×)Ñ)Ø×-Ñ-Ø×.Ñ.ñÐñ 	ˆt�WÐ#JÐQTØ Cñ	)ð€Mð
 �€J÷4?rD   rH  c            	       ó¤   • \ rS rSrSrSr\R                  \R                  \R                  S.r
\" SSS\SS	S
9\" SSSSSS9/r/ SQr  SS jrSrg)Úcmd_add_startupi˜  zéAdds VGP Startup Script Group Policy to the sysvol

This command adds a startup script policy to the sysvol.

Example:
samba-tool gpo manage scripts startup add {31B2F340-016D-11D2-945F-00C04FB984F9} test_script.sh '\-n \-p all'
    z.%prog <gpo> <script> [args] [run_as] [options]r  r  r  r  r  r  r  z
--run-onceÚrun_onceFr’  z#Whether to run the script only oncer´  )r†   rJ  zargs?zrun_as?Nc
                 ób
  • UR                  5       U l        UR                  U R                  SS9U l        [        R
                  R                  U5      (       d  [        SU-  5      eU(       a"  UR                  S5      (       a  USS  n
X`l	        OD[        U R                  U R                  5      n
[        U R                  U R                  U
S9U l	        [        U
SU R                  U R                  S9nU R                  5         [        XR                  U R                  U R                  U5      nU R                  R!                  S	5      nS
R#                  UR%                  5       SUS/5      nS
R#                  US/5      n [&        R(                  " [&        R*                  " UR-                  U5      5      5      nUR/                  5       R1                  S5      nUR0                  " S5      n[E        US5      RG                  5       n[&        R>                  " US5      n[&        R>                  " US5      n[        R
                  RI                  U5      Ul         [&        R>                  " US5      n[J        RL                  " U5      RO                  5       RQ                  5       Ul         UbL  [&        R>                  " US5      nURS                  S5      RS                  S5      RU                  S S!5      Ul         Ub  [&        R>                  " US"5      nUUl         U(       a  [&        R>                  " US#5        [W        5       nURY                  US$SS%9  UR[                  S5        S
R#                  U[        R
                  RI                  U5      /5      n []        X¾5        UR_                  UURG                  5       5        UR_                  UU5        URa                  SS&9  g ! [2         Ga  nUR4                  S   [6        [8        [:        4;   aÆ  [&        R(                  " [&        R<                  " S5      5      n[&        R>                  " UR/                  5       S5      n[&        R>                  " US5      nSUl         [&        R>                  " US5      nSUl         [&        R>                  " US5      nSUl         [&        R>                  " US5      n S nAGNåUR4                  S   [B        :X  a  [        S5      ee S nAff = f! [2         a(  nUR4                  S   [B        :X  a  [        S5      ee S nAff = f)'NTr  zScript '%s' does not existrg   rd  re  rg  rh  ri  r©   rj  ú%MACHINE\VGP\VTLA\Unix\Scripts\Startupr}  r~  rß   r   r  r€  r�  rr   zUnix Scriptsr‚  z6Represents Unix scripts to run on Group Policy clientsrm  rè   r‰  rJ  ÚhashrL  Ú"Ú'z\-Ú-rM  rS  r�  rŽ  r‘  )1r&  ri   r'  rj   rÅ   rÆ   r™  r   rU   rk   r   rn   r3   r  r5   r…   ru  r>   rš   rû  r“  rü  rÏ   r”  r•  r   rv  r-   r.   r/   r–  r—  r˜  r1   rÐ   rë   rú  ÚhashlibÚmd5Ú	hexdigestr$  rR   rŸ  r)   rÑ   r™  r2   rì   rš  ) rú   r†   rJ  rv  rM  rS  r  r  r  r  r}  rÔ   r¡  ri  r�  rž  rŸ  r   rß   rm   r~  r   rr   r‚  Úscript_datar‰  Ú
script_elmrV  rL  Ú
run_as_elmr¤  Úsysvol_scripts                                    rB   r(  Úcmd_add_startup.run²  s  € à×(Ñ(Ó*ˆŒØ×-Ñ-¨d¯g©gÈÐ-ÐMˆŒ
ä�w‰w�~‰~˜f×%Ñ%ÜÐ;¸fÑDÓEÐEö �—‘˜i×(Ñ(Ø˜A˜B˜%ˆKØ�Hä'¨¯©°·±Ó<ˆKÜ˜dŸg™g t§z¡z°kÑBˆDŒHô ˜kØ&Ø!%§¡Ø$(§J¡Jñ0ˆð
 	×ÑÔÜ# C¯©°$·*±*¸d¿j¹jÈ!ÓLˆà—‘—‘˜GÓ$ˆØ—)‘)˜UŸ[™[›]¨J¸ØIðKó Lˆà—)‘)˜W nÐ5Ó6ˆð	Ü—~’~¤b§m¢m°D·M±MÀ'Ó4JÓ&KÓLˆHØ×%Ñ%Ó'×,Ñ,¨_Ó=ˆFØ—;’;˜vÓ&ˆDô. ˜6 4Ó(×-Ñ-Ó/ˆÜ—m’m D¨-Ó8ˆÜ—]’] ;°Ó9ˆ
ÜŸ'™'×*Ñ*¨6Ó2ˆ
ŒÜ�}Š}˜[¨&Ó1ˆÜ—K’K Ó,×6Ñ6Ó8×>Ñ>Ó@ˆŒ	ØÑÜŸš {°LÓAˆJØ"Ÿj™j¨›o×3Ñ3°CÓ8×@Ñ@ÀÈÓLˆJŒOØÑÜŸš {°HÓ=ˆJØ$ˆJŒOÞÜ�MŠM˜+ zÔ2ä‹iˆØ�‰�s W¸dˆÑCØ�‰�ŒØŸ	™	 7¬B¯G©G×,<Ñ,<¸VÓ,DÐ"EÓFˆð		Ü! $Ô0Ø�M‰M˜' 3§8¡8£:Ô.Ø�M‰M˜-¨Ô5Ø×!Ñ!°$Ð!Ò7øô[ ô 	Ø�v‰v�a‰yÔ:Ü<Ü<ð>ó >ô Ÿ>š>¬"¯*ª*°[Ó*AÓB�Ü "§¢¨h×.>Ñ.>Ó.@Ø.=ó!?�ä—]’] =°)Ó<�Ø�”Ü—}’} ]°FÓ;�Ø*�”	Ü Ÿmšm¨M¸=ÓI�àLð Ô ä—}’} ]°FÓ;–Ø—‘˜‘Ô5Ó5Ü"ð $Dó Eð Eð ûð)	ûô\ ó 	Ø�v‰v�a‰yÔ3Ó3Ü"ð $Dó Eð Eàûð		ús9   ÆA*O ÎAS< ÏS9Ï)C"S4Ó#S4Ó4S9Ó<
T.Ô#T)Ô)T.r*  rª  r¦  r`   rD   rB   rR  rR  ˜  sz   † ñð @€Hð ×)Ñ)Ø×-Ñ-Ø×.Ñ.ñÐñ 	ˆt�WÐ#JÐQTØ Cñ	)áˆ| *°eÀLØ9ñ	;ð€Mò 7€Jà@DØ?C÷SrD   rR  c            	       ó’   • \ rS rSrSrSr\R                  \R                  \R                  S.r
\" SSS\SS	S
9/rSS/r  SS jrSrg)Úcmd_remove_startupi  zèRemoves VGP Startup Script Group Policy from the sysvol

This command removes a startup script policy from the sysvol.

Example:
samba-tool gpo manage scripts startup remove {31B2F340-016D-11D2-945F-00C04FB984F9} test_script.sh
    z%prog <gpo> <script> [options]r  r  r  r  r  r  r  r†   rJ  Nc                 ó†  • UR                  5       U l        UR                  U R                  SS9U l        U(       a"  UR	                  S5      (       a  USS  nX0l        OD[        U R                  U R                  5      n[        U R                  U R                  US9U l        [        USU R                  U R                  S9nU R                  5         [        XR                  U R                  U R                  U5      n	U R                  R                  S5      n
S	R                  U
R                  5       S
US/5      nS	R                  US/5      n [        R                   " [        R"                  " UR%                  U5      5      5      nUR'                  5       R)                  S5      nUR(                  " S5      nUR9                  S5       Hd  nUR)                  S5      nUR:                  [<        R>                  RA                  URC                  S	S5      5      :X  d  MS  URE                  U5          O   [5        SU-  5      e[G        5       nURI                  USSS9  URK                  S5         [M        X‹5        URO                  UURQ                  5       5        U	RS                  SS9  g ! [*         aX  nUR,                  S   [.        [0        [2        4;   a  [5        SU-  5      eUR,                  S   [6        :X  a  [5        S5      ee S nAff = f! [*         a(  nUR,                  S   [6        :X  a  [5        S5      ee S nAff = f)NTr  rg   rd  re  rg  rh  ri  r©   rj  rU  r}  r~  rß   r   z3Cannot remove script '%s' because it does not existrm  r‰  rJ  rª   r�  rŽ  r‘  )*r&  ri   r'  rj   rU   rk   r   rn   r3   r  r5   r…   ru  r>   rš   rû  r“  rü  rÏ   r”  r•  r   rv  r-   r.   r/   r   r1   r±  r˜  rÅ   rÆ   rú  rŸ  r›   r)   rÑ   r™  r2   rì   rë   rš  )rú   r†   rJ  r  r  r  r  r}  rÔ   r¡  ri  r�  rž  rŸ  r   rß   rm   r‰  r^  r¤  s                       rB   r(  Úcmd_remove_startup.run  sÙ  € à×(Ñ(Ó*ˆŒØ×-Ñ-¨d¯g©gÈÐ-ÐMˆŒ
ö �—‘˜i×(Ñ(Ø˜A˜B˜%ˆKØ�Hä'¨¯©°·±Ó<ˆKÜ˜dŸg™g t§z¡z°kÑBˆDŒHô ˜kØ&Ø!%§¡Ø$(§J¡Jñ0ˆð
 	×ÑÔÜ# C¯©°$·*±*¸d¿j¹jÈ!ÓLˆà—‘—‘˜GÓ$ˆØ—)‘)˜UŸ[™[›]¨J¸ØIðKó Lˆà—)‘)˜W nÐ5Ó6ˆð	Ü—~’~¤b§m¢m°D·M±MÀ'Ó4JÓ&KÓLˆHØ×%Ñ%Ó'×,Ñ,¨_Ó=ˆFØ—;’;˜vÓ&ˆDð  Ÿ<™<¨Ö6ˆKØ$×)Ñ)¨(Ó3ˆJØ�‰¤"§'¡'×"2Ñ"2°6·>±>À$ÈÓ3LÓ"MÕMØ—‘˜KÔ(Ùñ	 7ô ð  ,Ø.4ñ 5ó 6ð 6ô ‹iˆØ�‰�s W¸dˆÑCØ�‰�Œð	Ü! $Ô0Ø�M‰M˜' 3§8¡8£:Ô.Ø×!Ñ!°$Ð!Ò7øô7 ó 
	Ø�v‰v�a‰yÔ:Ü<Ü<ð>ó >ô #ð $0Ø28ñ$9ó :ð :à—‘˜‘Ô5Ó5Ü"ð $Dó Eð Eð ûð
	ûô8 ó 	Ø�v‰v�a‰yÔ3Ó3Ü"ð $Dó Eð Eàûð		ús2   ÅA*J) É.:L Ê)
LÊ3ALÌLÌ
M Ì#L;Ì;M r*  r+  r¦  r`   rD   rB   rc  rc    sj   † ñð 0€Hð ×)Ñ)Ø×-Ñ-Ø×.Ñ.ñÐñ 	ˆt�WÐ#JÐQTØ Cñ	)ð€Mð
 ˜Ð"€Jà@DØ÷>rD   rc  c                   óX   • \ rS rSrSr0 r\" 5       \S'   \" 5       \S'   \" 5       \S'   Sr	g)Úcmd_startupi_  z+Manage Startup Scripts Group Policy ObjectsrÊ   r(  r›   r`   N)
r  r  r  r  r-  rÄ  rH  rR  rc  r	  r`   rD   rB   rg  rg  _  s1   † Ù5Ø€KÙ*Ó,€K�ÑÙ(Ó*€K�ÑÙ.Ó0€K�ÔrD   rg  c                   ó0   • \ rS rSrSr0 r\" 5       \S'   Srg)Úcmd_scriptsif  z#Manage Scripts Group Policy ObjectsÚstartupr`   N)r  r  r  r  r-  rÄ  rg  r	  r`   rD   rB   ri  ri  f  s   † Ù-Ø€KÙ(›]€K�	ÔrD   ri  c            	       óŒ   • \ rS rSrSrSr\R                  \R                  \R                  S.r
\" SSS\SS	S
9/rS/rSS jrSrg)Úcmd_list_motdik  zäList VGP MOTD Group Policy from the sysvol

This command lists the Message of the Day from the sysvol that will be applied
to winbind clients.

Example:
samba-tool gpo manage motd list {31B2F340-016D-11D2-945F-00C04FB984F9}
    ra  r  r  r  r  r  r  r  r†   Nc                 óº  • UR                  5       U l        UR                  U R                  SS9U l        U(       a"  UR	                  S5      (       a  USS  nX l        OD[        U R                  U R                  5      n[        U R                  U R                  US9U l        [        USU R                  U R                  S9nU R                  R                  S5      nS	R                  UR                  5       S
USS/5      n	 [        R                  " UR                  U	5      5      n
U
R-                  S5      nUR,                  " S5      nUR-                  S5      nU R.                  R1                  UR2                  5        g ! [         aO  nUR                   S   ["        [$        [&        4;   a   S nAg UR                   S   [(        :X  a  [+        S5      ee S nAff = f)NTr  rg   rd  re  rg  rh  ri  r©   rj  r  zMOTD\manifest.xmlr   rm  r~  rß   r˜  ©r&  ri   r'  rj   rU   rk   r   rn   r3   ru  r>   rš   rû  rü  rÏ   r   rv  r-   r.   r/   r1   r   r•  r÷   rÑ   r˜  ©rú   r†   r  r  r  r  r}  rÔ   ri  rž  rŸ  rm   r   rß   r˜  s                  rB   r(  Úcmd_list_motd.run„  sŽ  € Ø×(Ñ(Ó*ˆŒØ×-Ñ-¨d¯g©gÈÐ-ÐMˆŒ
ö �—‘˜i×(Ñ(Ø˜A˜B˜%ˆKØ�Hä'¨¯©°·±Ó<ˆKÜ˜dŸg™g t§z¡z°kÑBˆDŒHô ˜kØ&Ø!%§¡Ø$(§J¡Jñ0ˆð
 —‘—‘˜GÓ$ˆØ—)‘)˜UŸ[™[›]¨J¸Ø :Ø 4ð6ó 7ˆð
	Ü—}’} T§]¡]°7Ó%;Ó<ˆHð —‘˜Ó/ˆØ�{Š{˜6Ó"ˆØ�y‰y˜Ó ˆØ�	‰	�‰˜Ÿ	™	Õ"øô ó 	Ø�v‰v�a‰yÔ:Ü<Ü<ð>ó >ô Ø�v‰v�a‰yÔ3Ó3Ü"ð $Dó Eð Eàûð	úó   Ä%F Æ
GÆ"GÆ2#GÇGr*  r+  r¦  r`   rD   rB   rl  rl  k  óa   † ñð '€Hð ×)Ñ)Ø×-Ñ-Ø×.Ñ.ñÐñ 	ˆt�WÐ#JÐQTØ Cñ	)ð€Mð
 �€J÷%#rD   rl  c            	       ó’   • \ rS rSrSrSr\R                  \R                  \R                  S.r
\" SSS\SS	S
9/rSS/r  SS jrSrg)Úcmd_set_motdi«  a  Sets a VGP MOTD Group Policy to the sysvol

This command sets the Message of the Day to the sysvol for applying to winbind
clients. Not providing a value will unset the policy.

Example:
samba-tool gpo manage motd set {31B2F340-016D-11D2-945F-00C04FB984F9} "Message for today"
    ú%prog <gpo> [value] [options]r  r  r  r  r  r  r  r†   rÇ  Nc                 ó  • UR                  5       U l        UR                  U R                  SS9U l        U(       a"  UR	                  S5      (       a  USS  nX0l        OD[        U R                  U R                  5      n[        U R                  U R                  US9U l        [        USU R                  U R                  S9nU R                  5         [        XR                  U R                  U R                  U5      n	U R                  R                  S5      n
S	R                  U
R                  5       S
US/5      nS	R                  US/5      nUc!  UR                  U5        U	R!                  SS9  g  ["        R$                  " ["        R&                  " UR)                  U5      5      5      nUR+                  5       R-                  S5      nUR-                  S5      nUR-                  S5      nUc  ["        R:                  " US5      nUUl        [C        5       nURE                  USSS9  URG                  S5         [I        X‹5        URK                  UURM                  5       5        U	R!                  SS9  g ! [.         GaM  nUR0                  S   [2        [4        [6        4;   Ga  ["        R$                  " ["        R8                  " S5      5      n["        R:                  " UR+                  5       S5      n["        R:                  " US5      nSUl        ["        R:                  " US5      nSUl        ["        R:                  " US5      nSUl        ["        R:                  " US5      nSUl        ["        R:                  " US5      n["        R:                  " US5      nSUl         S nAGNÊUR0                  S   [>        :X  a  [A        S5      ee S nAff = f! [.         a(  nUR0                  S   [>        :X  a  [A        S5      ee S nAff = f) NTr  rg   rd  re  rg  rh  ri  r©   rj  zMACHINE\VGP\VTLA\Unix\MOTDr}  r‘  r~  rß   r   r  r€  r�  rr   ú	Text Filer‚  úRepresents a Generic Text Filerƒ  rŸ  ÚfilenameÚmotdrm  r˜  r�  rŽ  )'r&  ri   r'  rj   rU   rk   r   rn   r3   r  r5   r…   ru  r>   rš   r1  rš  rû  r“  rü  rÏ   r”  r•  r   rv  r-   r.   r/   r–  r—  r˜  r1   r   r)   rÑ   r™  r2   rì   rë   )rú   r†   r?   r  r  r  r  r}  rÔ   r¡  ri  r�  rž  rŸ  r~  rß   rm   r   rr   r‚  rƒ  ry  r˜  r¤  s                           rB   r(  Úcmd_set_motd.runÄ  sT  € à×(Ñ(Ó*ˆŒØ×-Ñ-¨d¯g©gÈÐ-ÐMˆŒ
ö �—‘˜i×(Ñ(Ø˜A˜B˜%ˆKØ�Hä'¨¯©°·±Ó<ˆKÜ˜dŸg™g t§z¡z°kÑBˆDŒHô ˜kØ&Ø!%§¡Ø$(§J¡Jñ0ˆð
 	×ÑÔÜ# C¯©°$·*±*¸d¿j¹jÈ!ÓLˆà—‘—‘˜GÓ$ˆØ—)‘)˜UŸ[™[›]¨J¸Ø=ð?ó @ˆà—)‘)˜W nÐ5Ó6ˆà‰=Ø�K‰K˜Ô Ø×!Ñ!°$Ð!Ñ7Øð	Ü—~’~¤b§m¢m°D·M±MÀ'Ó4JÓ&KÓLˆHØ$×,Ñ,Ó.×3Ñ3°OÓDˆMØ ×%Ñ% fÓ-ˆDð4 �y‰y˜Ó ˆØ‰<Ü—=’=  vÓ.ˆDØˆŒ	ä‹iˆØ�‰�s W¸dˆÑCØ�‰�Œð	Ü! $Ô0Ø�M‰M˜' 3§8¡8£:Ô.Ø×!Ñ!°$Ð!Ò7øôI ô 	Ø�v‰v�a‰yÔ:Ü<Ü<ð>ô >ô Ÿ>š>¬"¯*ª*°[Ó*AÓB�Ü "§¢¨h×.>Ñ.>Ó.@Ø.=ó!?�ä—]’] =°)Ó<�Ø�”Ü—}’} ]°FÓ;�Ø'�”	Ü Ÿmšm¨M¸=ÓI�Ø#C�Ô ÜŸ]š]¨=¸,ÓG�
Ø"+�
”Ü—}’} ]°FÓ;�ÜŸ=š=¨¨zÓ:�Ø &�—’Ø—‘˜‘Ô5Ó5Ü"ð $Dó Eð Eð ûð/	ûôJ ó 	Ø�v‰v�a‰yÔ3Ó3Ü"ð $Dó Eð Eàûð		ús8   Å4A)I7 È<:O É7OÊDO
Î'#O
Ï
OÏ
PÏ#O?Ï?Pr*  rß  r¦  r`   rD   rB   rt  rt  «  sk   † ñð /€Hð ×)Ñ)Ø×-Ñ-Ø×.Ñ.ñÐñ 	ˆt�WÐ#JÐQTØ Cñ	)ð€Mð
 ˜Ð"€JàDHØ÷MrD   rt  c                   óD   • \ rS rSrSr0 r\" 5       \S'   \" 5       \S'   Srg)Úcmd_motdi  z.Manage Message of the Day Group Policy ObjectsrÊ   rÚ  r`   N)	r  r  r  r  r-  rÄ  rl  rt  r	  r`   rD   rB   r}  r}    s"   † Ù8Ø€KÙ'›/€K�ÑÙ%›€K�ÔrD   r}  c            	       óŒ   • \ rS rSrSrSr\R                  \R                  \R                  S.r
\" SSS\SS	S
9/rS/rSS jrSrg)Úcmd_list_issuei  zäList VGP Issue Group Policy from the sysvol

This command lists the Prelogin Message from the sysvol that will be applied
to winbind clients.

Example:
samba-tool gpo manage issue list {31B2F340-016D-11D2-945F-00C04FB984F9}
    ra  r  r  r  r  r  r  r  r†   Nc                 óº  • UR                  5       U l        UR                  U R                  SS9U l        U(       a"  UR	                  S5      (       a  USS  nX l        OD[        U R                  U R                  5      n[        U R                  U R                  US9U l        [        USU R                  U R                  S9nU R                  R                  S5      nS	R                  UR                  5       S
USS/5      n	 [        R                  " UR                  U	5      5      n
U
R-                  S5      nUR,                  " S5      nUR-                  S5      nU R.                  R1                  UR2                  5        g ! [         aO  nUR                   S   ["        [$        [&        4;   a   S nAg UR                   S   [(        :X  a  [+        S5      ee S nAff = f)NTr  rg   rd  re  rg  rh  ri  r©   rj  r  zIssue\manifest.xmlr   rm  r~  rß   r˜  rn  ro  s                  rB   r(  Úcmd_list_issue.run2  sŽ  € Ø×(Ñ(Ó*ˆŒØ×-Ñ-¨d¯g©gÈÐ-ÐMˆŒ
ö �—‘˜i×(Ñ(Ø˜A˜B˜%ˆKØ�Hä'¨¯©°·±Ó<ˆKÜ˜dŸg™g t§z¡z°kÑBˆDŒHô ˜kØ&Ø!%§¡Ø$(§J¡Jñ0ˆð
 —‘—‘˜GÓ$ˆØ—)‘)˜UŸ[™[›]¨J¸Ø :Ø 5ð7ó 8ˆð
	Ü—}’} T§]¡]°7Ó%;Ó<ˆHð —‘˜Ó/ˆØ�{Š{˜6Ó"ˆØ�y‰y˜Ó ˆØ�	‰	�‰˜Ÿ	™	Õ"øô ó 	Ø�v‰v�a‰yÔ:Ü<Ü<ð>ó >ô Ø�v‰v�a‰yÔ3Ó3Ü"ð $Dó Eð Eàûð	úrq  r*  r+  r¦  r`   rD   rB   r  r    rr  rD   r  c            	       ó’   • \ rS rSrSrSr\R                  \R                  \R                  S.r
\" SSS\SS	S
9/rSS/r  SS jrSrg)Úcmd_set_issueiY  a  Sets a VGP Issue Group Policy to the sysvol

This command sets the Prelogin Message to the sysvol for applying to winbind
clients. Not providing a value will unset the policy.

Example:
samba-tool gpo manage issue set {31B2F340-016D-11D2-945F-00C04FB984F9} "Welcome to Samba!"
    ru  r  r  r  r  r  r  r  r†   rÇ  Nc                 ó^  • UR                  5       U l        UR                  U R                  SS9U l        U(       a"  UR	                  S5      (       a  USS  nX0l        OD[        U R                  U R                  5      n[        U R                  U R                  US9U l        [        USU R                  U R                  S9nU R                  5         [        XR                  U R                  U R                  U5      n	U R                  R                  S5      n
S	R                  U
R                  5       S
US/5      nS	R                  US/5      nUc!  UR                  U5        U	R!                  SS9  g  ["        R$                  " UR'                  U5      5      n["        R6                  " WS5      nUUl        [A        5       nURC                  USSS9  URE                  S5         [G        X‹5        URI                  UURK                  5       5        U	R!                  SS9  g ! [(         GaM  nUR*                  S   [,        [.        [0        4;   Ga  ["        R2                  " ["        R4                  " S5      5      n["        R6                  " UR9                  5       S5      n["        R6                  " US5      nSUl        ["        R6                  " US5      nSUl        ["        R6                  " US5      nSUl        ["        R6                  " US5      nSUl        ["        R6                  " US5      n["        R6                  " US5      nSUl         S nAGN¶UR*                  S   [<        :X  a  [?        S5      ee S nAff = f! [(         a(  nUR*                  S   [<        :X  a  [?        S5      ee S nAff = f) NTr  rg   rd  re  rg  rh  ri  r©   rj  zMACHINE\VGP\VTLA\Unix\Issuer}  r‘  r   r  r~  r€  r�  rr   rw  r‚  rx  rƒ  rŸ  rß   ry  Úissuerm  r˜  r�  rŽ  )&r&  ri   r'  rj   rU   rk   r   rn   r3   r  r5   r…   ru  r>   rš   r1  rš  rû  rü  rÏ   r   rv  r-   r.   r/   r“  r–  r—  r”  r˜  r1   r   r)   rÑ   r™  r2   rì   rë   )rú   r†   r?   r  r  r  r  r}  rÔ   r¡  ri  r�  rž  rŸ  rm   r~  r   rr   r‚  rƒ  rß   ry  r˜  r¤  s                           rB   r(  Úcmd_set_issue.runr  s  € à×(Ñ(Ó*ˆŒØ×-Ñ-¨d¯g©gÈÐ-ÐMˆŒ
ö �—‘˜i×(Ñ(Ø˜A˜B˜%ˆKØ�Hä'¨¯©°·±Ó<ˆKÜ˜dŸg™g t§z¡z°kÑBˆDŒHô ˜kØ&Ø!%§¡Ø$(§J¡Jñ0ˆð
 	×ÑÔÜ# C¯©°$·*±*¸d¿j¹jÈ!ÓLˆà—‘—‘˜GÓ$ˆØ—)‘)˜UŸ[™[›]¨J¸Ø>ð@ó Aˆà—)‘)˜W nÐ5Ó6ˆà‰=Ø�K‰K˜Ô Ø×!Ñ!°$Ð!Ñ7Øð	Ü—}’} T§]¡]°7Ó%;Ó<ˆHô4 �}Š}˜T 6Ó*ˆØˆŒ	ä‹iˆØ�‰�s W¸dˆÑCØ�‰�Œð	Ü! $Ô0Ø�M‰M˜' 3§8¡8£:Ô.Ø×!Ñ!°$Ð!Ò7øôE ô 	Ø�v‰v�a‰yÔ:Ü<Ü<ð>ô >ô Ÿ>š>¬"¯*ª*°[Ó*AÓB�Ü "§¢¨h×.>Ñ.>Ó.@Ø.=ó!?�ä—]’] =°)Ó<�Ø�”Ü—}’} ]°FÓ;�Ø'�”	Ü Ÿmšm¨M¸=ÓI�Ø#C�Ô ÜŸ]š]¨=¸,ÓG�
Ø"+�
”Ü—}’} ]°FÓ;�ÜŸ=š=¨¨zÓ:�Ø '�—’Ø—‘˜‘Ô5Ó5Ü"ð $Dó Eð Eð ûð/	ûôF ó 	Ø�v‰v�a‰yÔ3Ó3Ü"ð $Dó Eð Eàûð		ús7   Å4%H Ç$:M: ÈM7È*DM2Í#M2Í2M7Í:
N,Î#N'Î'N,r*  rß  r¦  r`   rD   rB   rƒ  rƒ  Y  sk   † ñð /€Hð ×)Ñ)Ø×-Ñ-Ø×.Ñ.ñÐñ 	ˆt�WÐ#JÐQTØ Cñ	)ð€Mð
 ˜Ð"€JàDHØ÷IrD   rƒ  c                   óD   • \ rS rSrSr0 r\" 5       \S'   \" 5       \S'   Srg)Ú	cmd_issuei½  z!Manage Issue Group Policy ObjectsrÊ   rÚ  r`   N)	r  r  r  r  r-  rÄ  r  rƒ  r	  r`   rD   rB   rˆ  rˆ  ½  s#   † Ù+Ø€KÙ(Ó*€K�ÑÙ&›€K�ÔrD   rˆ  c            	       óŒ   • \ rS rSrSrSr\R                  \R                  \R                  S.r
\" SSS\SS	S
9/rS/rSS jrSrg)Úcmd_list_accessiÃ  zèList VGP Host Access Group Policy from the sysvol

This command lists host access rules from the sysvol that will be applied to winbind clients.

Example:
samba-tool gpo manage access list {31B2F340-016D-11D2-945F-00C04FB984F9}
    ra  r  r  r  r  r  r  r  r†   Nc                 ó  • UR                  5       U l        UR                  U R                  SS9U l        U(       a"  UR	                  S5      (       a  USS  nX l        OD[        U R                  U R                  5      n[        U R                  U R                  US9U l        [        USU R                  U R                  S9nU R                  R                  S5      nS	R                  UR                  5       S
USS/5      n	 [        R                  " UR                  U	5      5      n
U
b¦  U
R-                  S5      nUR,                  " S5      nUR/                  S5       Hn  nUR-                  S5      nUR-                  S5      nUR-                  S5      nU R0                  R3                  SUR4                  < S	UR4                  < S35        Mp     S	R                  UR                  5       S
USS/5      n	 [        R                  " UR                  U	5      5      nUb§  UR-                  S5      nUR,                  " S5      nUR/                  S5       Hn  nUR-                  S5      nUR-                  S5      nUR-                  S5      nU R0                  R3                  SUR4                  < S	UR4                  < S35        Mp     g g ! [         aR  nUR                   S   ["        [$        [&        4;   a  S n
 S nAGNÒUR                   S   [(        :X  a  [+        S5      ee S nAff = f! [         aR  nUR                   S   ["        [$        [&        4;   a  S n S nAGN>UR                   S   [(        :X  a  [+        S5      ee S nAff = f)NTr  rg   rd  re  rg  rh  ri  r©   rj  úMACHINE\VGP\VTLA\VASz$HostAccessControl\Allow\manifest.xmlr   rm  r~  rß   r‰  Úadobjectrr   r  z+:z:ALL
z#HostAccessControl\Deny\manifest.xmlz-:r  )rú   r†   r  r  r  r  r}  rÔ   ri  rž  Úallowrm   r   rß   r‰  r�  rr   r  Údenys                      rB   r(  Úcmd_list_access.runÛ  s   € Ø×(Ñ(Ó*ˆŒØ×-Ñ-¨d¯g©gÈÐ-ÐMˆŒ
ö �—‘˜i×(Ñ(Ø˜A˜B˜%ˆKØ�Hä'¨¯©°·±Ó<ˆKÜ˜dŸg™g t§z¡z°kÑBˆDŒHô ˜kØ&Ø!%§¡Ø$(§J¡Jñ0ˆð
 —‘—‘˜GÓ$ˆØ—)‘)˜UŸ[™[›]¨J¸Ø6ØEðGó Hˆð	Ü—M’M $§-¡-°Ó"8Ó9ˆEð ÑØ—Z‘Z Ó0ˆFØ—;’;˜vÓ&ˆDØ#Ÿ|™|¨MÖ:�Ø&×+Ñ+¨JÓ7�Ø—}‘} VÓ,�Ø!Ÿ™ xÓ0�Ø—	‘	—’°F·K´KÀÇÄÐ KÖLñ	  ;ð —)‘)˜UŸ[™[›]¨J¸Ø6ØDðFó Gˆð	Ü—=’= §¡¨wÓ!7Ó8ˆDð ÑØ—Y‘Y˜Ó/ˆFØ—;’;˜vÓ&ˆDØ#Ÿ|™|¨MÖ:�Ø&×+Ñ+¨JÓ7�Ø—}‘} VÓ,�Ø!Ÿ™ xÓ0�Ø—	‘	—’°F·K´KÀÇÄÐ KÖLò	  ;ð øôI ó 		Ø�v‰v�a‰yÔ:Ü<Ü<ð>ó >ð –Ø—‘˜‘Ô5Ó5Ü"ð $Dó Eð Eð ûð		ûô2 ó 		Ø�v‰v�a‰yÔ:Ü<Ü<ð>ó >ð –Ø—‘˜‘Ô5Ó5Ü"ð $Dó Eð Eð ûð		ús<   Ä%K Ç5%L$ Ë
L!Ë$LË9#LÌL!Ì$
N Ì.$M;Í#M;Í;N r*  r+  r¦  r`   rD   rB   rŠ  rŠ  Ã  sc   † ñð '€Hð ×)Ñ)Ø×-Ñ-Ø×.Ñ.ñÐñ 	ˆt�WÐ#JÐQTØ Cñ	)ð€Mð
 �€J÷CMrD   rŠ  c            	       ó’   • \ rS rSrSrSr\R                  \R                  \R                  S.r
\" SSS\SS	S
9/r/ SQr  SS jrSrg)Úcmd_add_accessi   aS  Adds a VGP Host Access Group Policy to the sysvol

This command adds a host access setting to the sysvol for applying to winbind
clients. Any time an allow entry is detected by the client, an implicit deny
ALL will be assumed.

Example:
samba-tool gpo manage access add {31B2F340-016D-11D2-945F-00C04FB984F9} allow goodguy example.com
    z0%prog <gpo> <allow/deny> <cn> <domain> [options]r  r  r  r  r  r  r  )r†   rý  Úcnr  Nc	                 ó„  • UR                  5       U l        UR                  U R                  SS9U l        U(       a"  UR	                  S5      (       a  USS  n	XPl        OD[        U R                  U R                  5      n	[        U R                  U R                  U	S9U l        [        U	SU R                  U R                  S9n
U R                  5         [        XR                  U R                  U R                  U5      nU R                  R                  S5      nUS	:X  a%  S
R                  UR                  5       SUSS/5      nO9US:X  a%  S
R                  UR                  5       SUSS/5      nO[        SU-  5      eS
R                  US/5      n [         R"                  " [         R$                  " U
R'                  U5      5      5      nUR)                  5       R+                  S5      nUR*                  " S5      n[        U R                  U R                  US9n[?        U[A        5       U R                  U R                  S9nURC                  URE                  5       [F        RH                  S U-  / S!QS"9n[K        U5      S:X  a  [        S#U-  5      e[M        US   S$   S%   5      nUS&;  a  [        S'U-  5      e[         R8                  " US(5      n[         R8                  " US)5      nURO                  5       Ul        [         R8                  " US*5      nURQ                  5       < S
[M        US   S+   S%   5      < 3Ul        US,:X  a  [         R8                  " US-5      nS.Ul        [         R8                  " US/5      n[         R8                  " US5      n[M        US   S+   S%   5      Ul        [         R8                  " US05      n UU l        [         R8                  " US)5      nUUl        [S        5       n!URU                  U!S1SS29  U!RW                  S5         [Y        X­5        U
R[                  UU!R]                  5       5        UR_                  SS39  g ! [,         Ga.  nUR.                  S   [0        [2        [4        4;   aä  [         R"                  " [         R6                  " S5      5      n[         R8                  " UR)                  5       S5      n[         R8                  " US5      nSUl        [         R8                  " US5      nSUl        [         R8                  " US5      nSUl        [         R8                  " US5      nSUl        [         R8                  " US5      n S nAGNgUR.                  S   [<        :X  a  [        S5      ee S nAff = f! [,         a(  nUR.                  S   [<        :X  a  [        S5      ee S nAff = f)4NTr  rg   rd  re  rg  rh  ri  rŽ  r©   rj  rŒ  úHostAccessControl\Allowr�  úHostAccessControl\DenyúBThe entry type must be either 'allow' or 'deny'. Unknown type '%s'r}  r~  rß   r   r  r€  r�  rr   zHost Access Controlr‚  z0Represents host access control data (pam_access)rƒ  r„  rm  r   z(cn=%s))ÚuserPrincipalNameÚsamaccountnamer8  r•   z!Unable to find user or group "%s"r8  éÿÿÿÿ)r>  rŒ  z%s is not a user or groupr‰  r  rƒ  r™  rŒ  Ú	groupattrÚsamAccountNamer�  r  r�  rŽ  r‘  )0r&  ri   r'  rj   rU   rk   r   rn   r3   r  r5   r…   ru  r>   rš   r   rû  r“  rü  rÏ   r”  r•  r   rv  r-   r.   r/   r–  r—  r˜  r1   r   r   r„   Ú	domain_dnr   ÚSCOPE_SUBTREErT   r&   r$  Údomain_netbios_namer)   rÑ   r™  r2   rì   rë   rš  )"rú   r†   rý  r“  r  r  r  r  r  r}  rÔ   r¡  ri  r�  rž  rŸ  r   rß   rm   r~  r   rr   r‚  rƒ  rk   r…   ÚresÚobjectclassr‰  rƒ  r›  r�  Ú
domain_elmr¤  s"                                     rB   r(  Úcmd_add_access.run:  sí  € à×(Ñ(Ó*ˆŒØ×-Ñ-¨d¯g©gÈÐ-ÐMˆŒ
ö �—‘˜i×(Ñ(Ø˜A˜B˜%ˆKØ�Hä'¨¯©°·±Ó<ˆKÜ˜dŸg™g t§z¡z°kÑBˆDŒHô ˜kØ&Ø!%§¡Ø$(§J¡Jñ0ˆð
 	×ÑÔÜ# C¯©°$·*±*¸d¿j¹jÈ!ÓLˆà—‘—‘˜GÓ$ˆØ�GÓØ—i‘i §¡£°
¸CØ!:Ø!;ð!=ó >‰Gð �f‹_Ø—i‘i §¡£°
¸CØ!:Ø!:ð!<ó =‰Gô ð  ;Ø=Bñ Có Dð Dà—)‘)˜W nÐ5Ó6ˆð	Ü—~’~¤b§m¢m°D·M±MÀ'Ó4JÓ&KÓLˆHØ×%Ñ%Ó'×,Ñ,¨_Ó=ˆFØ—;’;˜vÓ&ˆDô0 �T—W‘W˜dŸj™j¨VÑ4ˆÜ˜#¬NÓ,<Ø"&§*¡*°·±ñ:ˆð �l‰l §¡Ó 1Ü!$×!2Ñ!2Ø&/°"¡nò"1ð ð 2ˆô ˆs‹8�q‹=ÜÐBÀRÑGÓHÐHä   Q¡¨Ñ!6°rÑ!:Ó;ˆØÐ/Ó/ÜÐ:¸RÑ?Ó@Ð@ä—m’m D¨-Ó8ˆÜ—’˜k¨6Ó2ˆØ ×&Ñ&Ó(ˆŒ
Ü—’˜k¨7Ó3ˆØ!&×!:Ñ!:Ö!<Ü!+¨C°©FÐ3CÑ,DÀRÑ,HÕ!IðKˆŒ
à˜'Ó!ÜŸš d¨KÓ8ˆIØ-ˆIŒNÜ—=’= ¨jÓ9ˆÜ�}Š}˜X vÓ.ˆÜ˜s 1™vÐ&6Ñ7¸Ñ;Ó<ˆŒ	Ü—]’] 8¨XÓ6ˆ
Ø ˆ
ŒÜ—’˜h¨Ó/ˆØ ˆŒ
ä‹iˆØ�‰�s W¸dˆÑCØ�‰�Œð	Ü! $Ô0Ø�M‰M˜' 3§8¡8£:Ô.Ø×!Ñ!°$Ð!Ò7øô ô 	Ø�v‰v�a‰yÔ:Ü<Ü<ð>ó >ô Ÿ>š>¬"¯*ª*°[Ó*AÓB�Ü "§¢¨h×.>Ñ.>Ó.@Ø.=ó!?�ä—]’] =°)Ó<�Ø�”Ü—}’} ]°FÓ;�Ø1�”	Ü Ÿmšm¨M¸=ÓI�Ø#U�Ô ÜŸ]š]¨=¸,ÓG�
Ø")�
”Ü—}’} ]°FÓ;–Ø—‘˜‘Ô5Ó5Ü"ð $Dó Eð Eð ûð+	ûô@ ó 	Ø�v‰v�a‰yÔ3Ó3Ü"ð $Dó Eð Eàûð		ús8   ÆA*Q Ð:V ÑV
ÑD VÕ"#VÖV
Ö
V?Ö#V:Ö:V?r*  r+  r¦  r`   rD   rB   r’  r’     sg   † ñð B€Hð ×)Ñ)Ø×-Ñ-Ø×.Ñ.ñÐñ 	ˆt�WÐ#JÐQTØ Cñ	)ð€Mò
 2€Jà<@Ø'+÷krD   r’  c            	       ó’   • \ rS rSrSrSr\R                  \R                  \R                  S.r
\" SSS\SS	S
9/r/ SQr  SS jrSrg)Úcmd_remove_accessi§  a  Remove a VGP Host Access Group Policy from the sysvol

This command removes a host access setting from the sysvol for applying to
winbind clients.

Example:
samba-tool gpo manage access remove {31B2F340-016D-11D2-945F-00C04FB984F9} allow goodguy example.com
    z2%prog <gpo> <allow/deny> <name> <domain> [options]r  r  r  r  r  r  r  )r†   rý  rr   r  Nc	                 ó*  • UR                  5       U l        UR                  U R                  SS9U l        U(       a"  UR	                  S5      (       a  USS  n	XPl        OD[        U R                  U R                  5      n	[        U R                  U R                  U	S9U l        [        U	SU R                  U R                  S9n
U R                  5         [        XR                  U R                  U R                  U5      nU R                  R                  S5      nUS	:X  a%  S
R                  UR                  5       SUSS/5      nO9US:X  a%  S
R                  UR                  5       SUSS/5      nO[        SU-  5      eS
R                  US/5      n [         R"                  " [         R$                  " U
R'                  U5      5      5      nUR)                  5       R+                  S5      nUR*                  " S5      nUR9                  S5       Hu  nUR+                  S5      nUR+                  S5      nUR+                  S5      nUc  M;  UR:                  U:X  d  MM  Uc  MR  UR:                  U:X  d  Md  UR=                  U5          O   [        SU-  5      e[?        5       nURA                  USSS9  URC                  S5         [E        X­5        U
RG                  UURI                  5       5        URK                  SS9  g ! [,         aX  nUR.                  S   [0        [2        [4        4;   a  [        SU-  5      eUR.                  S   [6        :X  a  [        S5      ee S nAff = f! [,         a(  nUR.                  S   [6        :X  a  [        S5      ee S nAff = f)NTr  rg   rd  re  rg  rh  ri  rŽ  r©   rj  rŒ  r•  r�  r–  r—  r}  r~  rß   r   z0Cannot remove %s entry because it does not existrm  r‰  r�  rr   r  r�  rŽ  r‘  )&r&  ri   r'  rj   rU   rk   r   rn   r3   r  r5   r…   ru  r>   rš   r   rû  r“  rü  rÏ   r”  r•  r   rv  r-   r.   r/   r1   r±  r˜  r›   r)   rÑ   r™  r2   rì   rë   rš  )rú   r†   rý  rr   r  r  r  r  r  r}  rÔ   r¡  ri  r�  rž  rŸ  r   rß   rm   r‰  r�  Úname_elmr¢  r¤  s                           rB   r(  Úcmd_remove_access.runÀ  sG  € à×(Ñ(Ó*ˆŒØ×-Ñ-¨d¯g©gÈÐ-ÐMˆŒ
ö �—‘˜i×(Ñ(Ø˜A˜B˜%ˆKØ�Hä'¨¯©°·±Ó<ˆKÜ˜dŸg™g t§z¡z°kÑBˆDŒHô ˜kØ&Ø!%§¡Ø$(§J¡Jñ0ˆð
 	×ÑÔÜ# C¯©°$·*±*¸d¿j¹jÈ!ÓLˆà—‘—‘˜GÓ$ˆØ�GÓØ—i‘i §¡£°
¸CØ!:Ø!;ð!=ó >‰Gð �f‹_Ø—i‘i §¡£°
¸CØ!:Ø!:ð!<ó =‰Gô ð  ;Ø=Bñ Có Dð Dà—)‘)˜W nÐ5Ó6ˆð	Ü—~’~¤b§m¢m°D·M±MÀ'Ó4JÓ&KÓLˆHØ×%Ñ%Ó'×,Ñ,¨_Ó=ˆFØ—;’;˜vÓ&ˆDð  Ÿ<™<¨Ö6ˆKØ"×'Ñ'¨
Ó3ˆHØ—}‘} VÓ,ˆHØ!Ÿ™ xÓ0ˆJØÓ#¨¯©¸Õ(=ØÓ%¨*¯/©/¸VÕ*CØ—‘˜KÔ(Ùñ 7ô ð  /Ø16ñ 7ó 8ð 8ô ‹iˆØ�‰�s W¸dˆÑCØ�‰�Œð	Ü! $Ô0Ø�M‰M˜' 3§8¡8£:Ô.Ø×!Ñ!°$Ð!Ò7øô= ó 
	Ø�v‰v�a‰yÔ:Ü<Ü<ð>ó >ô #ð $/Ø16ñ$7ó 8ð 8à—‘˜‘Ô5Ó5Ü"ð $Dó Eð Eð ûð
	ûô> ó 	Ø�v‰v�a‰yÔ3Ó3Ü"ð $Dó Eð Eàûð		ús2   ÆA*K; Ë :M  Ë;
MÌAMÍMÍ 
NÍ*#NÎNr*  r+  r¦  r`   rD   rB   r¥  r¥  §  sg   † ñð D€Hð ×)Ñ)Ø×-Ñ-Ø×.Ñ.ñÐñ 	ˆt�WÐ#JÐQTØ Cñ	)ð€Mò
 4€Jà>BØ'+÷JrD   r¥  c                   óˆ   • \ rS rSrSrSr\R                  \R                  S.r	\
" SSSSS	9\
" S
SSSS	9/rSS/r  SS jrSrg)Úcmd_cse_registeri  aŠ  Register a Client Side Extension (CSE) on the current host

This command takes a CSE filename as an argument, and registers it for
applying policy on the current host. This is not necessary for CSEs which
are distributed with the current version of Samba, but is useful for installing
experimental CSEs or custom built CSEs.
The <cse_file> argument MUST be a permanent location for the CSE. The register
command does not copy the file to some other directory. The samba-gpupdate
command will execute the CSE from the exact location specified from this
command.

Example:
samba-tool gpo cse register ./gp_chromium_ext.py gp_chromium_ext --machine
    z%%prog <cse_file> <cse_name> [options]©r  r  z	--machineFr’  z-Whether to register the CSE as Machine policy)r�  rŽ  r  z--userz*Whether to register the CSE as User policyÚcse_fileÚcse_nameNc           	      óF  • UR                  5       U l        US:X  a  US:X  a  [        S5      eS[        [        R
                  " 5       5      -  n[        R                  R                  U5      n[        XrUU R                  R                  X4S9n	U	(       d  [        SU-  5      eg )NFz+Either --machine or --user must be selectedr  )Úsmb_confÚmachiner>  zFailed to register CSE "%s")r&  ri   r   r™   r"  r#  rÅ   rÆ   Úrealpathr7   r8  )
rú   r¬  r­  r°  r>  r  r  Úext_guidÚext_pathrA   s
             rB   r(  Úcmd_cse_register.run,  s�   € à×(Ñ(Ó*ˆŒà�eÓ ¨£ÜÐLÓMÐMàœC¤§
¢
£Ó-Ñ-ˆÜ—7‘7×#Ñ# HÓ-ˆÜ# H¸Ø-1¯W©W×-?Ñ-?Ø,3ñ@ˆö ÜÐ<¸xÑGÓHÐHð rD   ©ri   )FFNN)r  r  r  r  r-  r.  rG   r/  r0  r2  r   r3  r^  r(  r	  r`   rD   rB   rª  rª    so   † ñð 7€Hð ×)Ñ)Ø×-Ñ-ñÐñ 	ˆ{ E°,ØCñ	Eáˆx ¨|Ø@ñ	Bð€Mð ˜jÐ)€Jà:?Ø(,÷IrD   rª  c                   óX   • \ rS rSrSrSr\R                  \R                  S.r	SS jr
Srg)	Úcmd_cse_listi;  z«List the registered Client Side Extensions (CSEs) on the current host

This command lists the currently registered CSEs on the host.

Example:
samba-tool gpo cse list
    r  r«  Nc                 ó  • UR                  5       U l        [        U R                  R                  5      nUR	                  5        H¹  u  pEU R
                  R                  SU-  5        U R
                  R                  SUS   -  5        U R
                  R                  SUS   -  5        U R
                  R                  S[        US   5      -  5        U R
                  R                  S[        US	   5      -  5        M»     g )
NzUniqueGUID         : %s
zFileName           : %s
ÚDllNamezProcessGroupPolicy : %s
ÚProcessGroupPolicyzMachinePolicy      : %s
ÚMachinePolicyzUserPolicy         : %s

Ú
UserPolicy)r&  ri   r8   r8  rî  r÷   rÑ   r™   )rú   r  r  Úcsesr3  Úgp_exts         rB   r(  Úcmd_cse_list.runK  sÔ   € Ø×(Ñ(Ó*ˆŒä! $§'¡'×"4Ñ"4Ó5ˆØ ŸJ™JžL‰LˆDØ�I‰I�O‰OÐ7¸$Ñ>Ô?Ø�I‰I�O‰OÐ7¸&ÀÑ:KÑKÔLØ�I‰I�O‰OÐ7ØÐ/Ñ0ñ1ô 2à�I‰I�O‰OÐ7Ü˜˜Ñ/Ó0ñ1ô 2à�I‰I�O‰OÐ9Ü˜˜|Ñ,Ó-ñ.ö /ò )rD   rµ  ©NN)r  r  r  r  r-  r.  rG   r/  r0  r2  r(  r	  r`   rD   rB   r·  r·  ;  s/   † ñð !€Hð ×)Ñ)Ø×-Ñ-ñÐ÷
/rD   r·  c                   ó^   • \ rS rSrSrSr\R                  \R                  S.r	S/r
S	S jrSrg)
Úcmd_cse_unregisteriY  aq  Unregister a Client Side Extension (CSE) from the current host

This command takes a unique GUID as an argument (representing a registered
CSE), and unregisters it for applying policy on the current host. Use the
`samba-tool gpo cse list` command to determine the unique GUIDs of CSEs.

Example:
samba-tool gpo cse unregister {3F60F344-92BF-11ED-A1EB-0242AC120002}
    z%prog <guid> [options]r«  r3  Nc                 ó–   • UR                  5       U l        [        XR                  R                  5      nU(       d  [	        SU-  5      eg )NzFailed to unregister CSE "%s")r&  ri   r9   r8  r   )rú   r3  r  r  rA   s        rB   r(  Úcmd_cse_unregister.runm  s?   € Ø×(Ñ(Ó*ˆŒä% d¯G©G×,>Ñ,>Ó?ˆÞÜÐ>ÀÑEÓFÐFð rD   rµ  rÀ  )r  r  r  r  r-  r.  rG   r/  r0  r2  r^  r(  r	  r`   rD   rB   rÂ  rÂ  Y  s9   † ñð (€Hð ×)Ñ)Ø×-Ñ-ñÐð
 �€J÷GrD   rÂ  c                   óX   • \ rS rSrSr0 r\" 5       \S'   \" 5       \S'   \" 5       \S'   Sr	g)Úcmd_cseit  zManage Client Side ExtensionsÚregisterrÊ   Ú
unregisterr`   N)
r  r  r  r  r-  rÄ  rª  r·  rÂ  r	  r`   rD   rB   rÆ  rÆ  t  s0   † Ù'Ø€KÙ.Ó0€K�
ÑÙ&›.€K�ÑÙ 2Ó 4€K�ÔrD   rÆ  c                   óX   • \ rS rSrSr0 r\" 5       \S'   \" 5       \S'   \" 5       \S'   Sr	g)Ú
cmd_accessi{  z'Manage Host Access Group Policy ObjectsrÊ   r(  r›   r`   N)
r  r  r  r  r-  rÄ  rŠ  r’  r¥  r	  r`   rD   rB   rÊ  rÊ  {  s1   † Ù1Ø€KÙ)Ó+€K�ÑÙ'Ó)€K�ÑÙ-Ó/€K�ÔrD   rÊ  c                   óä   • \ rS rSrSr0 r\" 5       \S'   \" 5       \S'   \" 5       \S'   \	" 5       \S'   \
" 5       \S'   \" 5       \S'   \" 5       \S	'   \" 5       \S
'   \" 5       \S'   \" 5       \S'   Srg)Ú
cmd_managei‚  zManage Group Policy ObjectsÚsudoersr
   r¯  Úsymlinkrn  ÚopensshÚscriptsrz  r…  Úaccessr`   N)r  r  r  r  r-  rÄ  rÃ  rì  r   r  r4  rF  ri  r}  rˆ  rÊ  r	  r`   rD   rB   rÌ  rÌ  ‚  s‚   † Ù%Ø€KÙ(›]€K�	ÑÙ*›n€K�
ÑÙ*›n€K�
ÑÙ(›]€K�	ÑÙ$›;€K�ÑÙ(›]€K�	ÑÙ(›]€K�	ÑÙ"›*€K�ÑÙ$›;€K�ÑÙ&›L€K�ÔrD   rÌ  c                   ó¬  • \ rS rSrSr0 r\" 5       \S'   \" 5       \S'   \" 5       \S'   \	" 5       \S'   \
" 5       \S'   \" 5       \S'   \" 5       \S	'   \" 5       \S
'   \" 5       \S'   \" 5       \S'   \" 5       \S'   \" 5       \S'   \" 5       \S'   \" 5       \S'   \" 5       \S'   \" 5       \S'   \" 5       \S'   \" 5       \S'   \" 5       \S'   \" 5       \S'   Srg)Úcmd_gpoi�  z%Group Policy Object (GPO) management.ÚlistallrÊ   Úshowrš  r›   ÚgetlinkÚsetlinkÚdellinkÚlistcontainersÚgetinheritanceÚsetinheritanceÚfetchÚcreateÚdelÚaclcheckr@  ÚrestoreÚadmxloadÚmanageÚcser`   N)r  r  r  r  r-  rÄ  r  r5  r`  rˆ  r¥  r¬  r±  r¿  rÄ  rÈ  rÍ  rÔ  r
  rO  r_  rá  r?  rf  rÌ  rÆ  r	  r`   rD   rB   rÓ  rÓ  �  s   † Ù/à€KÙ(›]€K�	ÑÙ"›*€K�ÑÙ"›*€K�ÑÙ"›*€K�ÑÙ&›L€K�ÑÙ(›]€K�	ÑÙ(›]€K�	ÑÙ(›]€K�	ÑÙ$6Ó$8€KÐ Ñ!Ù$6Ó$8€KÐ Ñ!Ù$6Ó$8€KÐ Ñ!Ù$›;€K�ÑÙ&›L€K�ÑÙ ›€K�ÑÙ*›n€K�
ÑÙ&›L€K�ÑÙ(›]€K�	ÑÙ*›n€K�
ÑÙ&›L€K�ÑÙ ›€K�ÔrD   rÓ  rÀ  )FF)·rÅ   r—  Úsamba.getoptÚgetoptrG   r   r²   Úxml.etree.ElementTreeÚetreer“  rû  rÿ  rô   Ú
samba.authr   Úsamba.netcmdr   r   r   r   Úsamba.samdbr   r?  r	   Úsamba.dcerpcr
   Ú	samba.ndrr   r   r   Úsamba.securityr   r   r   Úsamba.netcmd.commonr   r   Úsamba.samba3r   rÍ   r   r"  Úsamba.ntaclsr   r   Ú	samba.netr   Úsamba.gp_parser   r   r   Úsamba.gp_parse.gp_polr   Úsamba.gp_parse.gp_inir   r   r   r   Úsamba.gp_parse.gp_csvr    Úsamba.gp_parse.gp_infr!   Úsamba.gp_parse.gp_aasr"   r#   r$   Úsamba.commonr%   r&   Úconfigparserr'   Úior(   r)   Úsamba.gp.vgp_files_extr*   r+   rZ  r{  Úsamba.registryr,   Úsamba.ntstatusr-   r.   r/   r0   r1   Úsamba.netcmd.gpcommonr2   r3   r4   Úsamba.policiesr5   Úsamba.dcerpc.miscr6   Úsamba.gp.gpclassr7   r8   r9   rC   rH   r]   re   rn   rF  rG  rH  ÚSECINFO_SACLr�   r’   r¦   r¯   Ú
IGNORECASEr´   râ   ÚFILE_ATTRIBUTE_SYSTEMrÎ   ÚFILE_ATTRIBUTE_ARCHIVEÚFILE_ATTRIBUTE_HIDDENrË   ræ   rï   rñ   r  r5  r`  rˆ  r¥  r¬  r±  r¿  rÄ  rÈ  rÍ  rÔ  rá  r
  r?  rO  r_  rf  rw  r¨  r»  rÃ  rÆ  ræ  rì  rî  rô  r   r  r  r  r  r  r   r/  r4  r6  r@  rF  rH  rR  rc  rg  ri  rl  rt  r}  r  rƒ  rˆ  rŠ  r’  r¥  rª  r·  rÂ  rÆ  rÊ  rÌ  rÓ  r`   rD   rB   Ú<module>r     sõ  ðó* 
Û 
Ý Û 
Û 	ß "Ð "Û Û å %÷ó õ Ý Ý !ß *Ý Û Û ß }Ñ }Ý -Ý Ý 8Ý Û Ý $Ý Ý ß OÑ OÝ -÷ó õ 3Ý 2Ý -Ý Ý ,ß .Ý %ß  ß <Û Û Ý &÷õ ÷ñ õ
 1Ý *÷ñ òòòò$ôð !¨d°tØ#×1Ñ1Ø#×1Ñ1ñ2à#×0Ñ0ñ1ð $×0Ñ0ñ1ô+ò\	ò#CòLð ŸM™Mô ò:2ð< ×)Ñ)Ø×,Ñ,ñ-à×*Ñ*ñ+ð ×)Ñ)ñ*€
ò/ð2 8=Ø7<ô",ôJ+N�ô +Nô\""�*ô ""ôJr:ˆzô r:ôjcˆzô côLoˆzô oôdT�ô Tôn,J�*ô ,Jô^WM�*ô WMôt$M�*ô $MôN!B˜ô !BôH);˜ô );ôX3X˜ô 3Xôl87�
ô 87ôvK�ô Kô\PI�ô PIôfh<�*ô h<ôVG3ˆjô G3ôT=O�:ô =Oô~JQ�7ô JQôXz�jô zôxc5�wô c5ôJ@&˜ô @&ôD1�,ô 1ôy�zô yôvD<˜ô D<ôL.�<ô .ô?F˜ô ?FôBf�zô fôP,�<ô ,ô?J�wô ?JôB\�jô \ô|Y˜ô Yôv1�,ô 1ôD(�Wô D(ôLo�Jô oôbZ�zô Zôx/�ô /ôBE�wô BEôHy�jô yôv+�,ô +ôL?�wô L?ô\m�jô mô^V˜ô Vôp1�,ô 1ô+�,ô +ô
>#�Gô >#ô@f�:ô fôP(ˆ|ô (ô>#�Wô >#ô@b�Jô bôH)�ô )ô[M�gô [MôzE�Zô EôNc˜
ô côJ-I�wô -Iô^/�7ô /ô<G˜ô Gô65ˆlô 5ô0�ô 0ô)�ô )ô#ˆlõ #rD   