
    dn                        d Z g dZddlZddlZddlZddlZddlmZ ddlZddl	Z	ddl
Z
ddlZddlmZ  ej        dde          Z e                                ej                    G d	 d
          ZdZ e
j        d          Zd2dZd Z e
j        de
j                  Zd Zd Zd Z G d d          Z G d d          Z  G d de           Z!d Z" G d de#          Z$dddd d!Z% e&            Z' G d" d#          Z(d$ Z)e*e+e,ej        e-fZ. G d% d&e&          Z/d' Z0e1 e2e"ee!(          e3 e2e0e(e/(          iZ4de2d)d*Z5de2d)d+Z6e1d,d-d.d/Z7e1d-d,d0d1Z8dS )3a>  plistlib.py -- a tool to generate and parse MacOSX .plist files.

The property list (.plist) file format is a simple XML pickle supporting
basic object types, like dictionaries, lists, numbers and strings.
Usually the top level object is a dictionary.

To write out a plist file, use the dump(value, file)
function. 'value' is the top level object, 'file' is
a (writable) file object.

To parse a plist from a file, use the load(file) function,
with a (readable) file object as the only argument. It
returns the top level object (again, usually a dictionary).

To work with plist data in bytes objects, you can use loads()
and dumps().

Values can be strings, integers, floats, booleans, tuples, lists,
dictionaries (but only with string keys), Data, bytes, bytearray, or
datetime.datetime objects.

Generate Plist example:

    import datetime
    import plistlib

    pl = dict(
        aString = "Doodah",
        aList = ["A", "B", 12, 32.1, [1, 2, 3]],
        aFloat = 0.1,
        anInt = 728,
        aDict = dict(
            anotherString = "<hello & hi there!>",
            aThirdString = "M\xe4ssig, Ma\xdf",
            aTrueValue = True,
            aFalseValue = False,
        ),
        someData = b"<binary gunk>",
        someMoreData = b"<lots of binary gunk>" * 10,
        aDate = datetime.datetime.now()
    )
    print(plistlib.dumps(pl).decode())

Parse Plist example:

    import plistlib

    plist = b'''<plist version="1.0">
    <dict>
        <key>foo</key>
        <string>bar</string>
    </dict>
    </plist>'''
    pl = plistlib.loads(plist)
    print(pl["foo"])
)InvalidFileExceptionFMT_XML
FMT_BINARYloaddumploadsdumpsUID    N)BytesIO)ParserCreatePlistFormatzFMT_XML FMT_BINARY)modulec                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )r	   c                     t          |t                    st          d          |dk    rt          d          |dk     rt          d          || _        d S )Nzdata must be an int            zUIDs cannot be >= 2**64r
   UIDs must be positive)
isinstanceint	TypeError
ValueErrordataselfr   s       /croot/python-split_1694437901252/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_plac/lib/python3.11/plistlib.py__init__zUID.__init__N   s^    $$$ 	312227??6777!884555			    c                     | j         S N)r   r   s    r   	__index__zUID.__index__W   s
    yr   c                 J    | j         j        dt          | j                  dS )N())	__class____name__reprr   r   s    r   __repr__zUID.__repr__Z   s$    >222DOOOODDr   c                      | j         | j        ffS r   )r$   r   r   s    r   
__reduce__zUID.__reduce__]   s    ~	|++r   c                 Z    t          |t                    st          S | j        |j        k    S r   )r   r	   NotImplementedr   )r   others     r   __eq__z
UID.__eq__`   s)    %%% 	"!!yEJ&&r   c                 *    t          | j                  S r   )hashr   r   s    r   __hash__zUID.__hash__e   s    DIr   N)	r%   
__module____qualname__r   r    r'   r)   r-   r0    r   r   r	   r	   M   sq            E E E, , ,' ' '
    r   r	   s   <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
zv[\x00\x01\x02\x03\x04\x05\x06\x07\x08\x0b\x0c\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f]L   c                     |dz  dz  }g }t          dt          |           |          D ]6}| |||z            }|                    t          j        |                     7d                    |          S )N      r
   r   )rangelenappendbinascii
b2a_base64join)smaxlinelength
maxbinsizepiecesichunks         r   _encode_base64rD   y   s|    "A%JF1c!ffj)) 2 2!a*n$%h)%00111188Fr   c                     t          | t                    r't          j        |                     d                    S t          j        |           S )Nutf-8)r   strr;   
a2b_base64encode)r>   s    r   _decode_base64rJ      sD    !S &"188G#4#4555 "1%%%r   z{(?P<year>\d\d\d\d)(?:-(?P<month>\d\d)(?:-(?P<day>\d\d)(?:T(?P<hour>\d\d)(?::(?P<minute>\d\d)(?::(?P<second>\d\d))?)?)?)?)?Zc                     d}t                               |                                           }g }|D ]0}||         }| n#|                    t	          |                     1t          j        | S )Nyearmonthdayhourminutesecond)_dateParsermatch	groupdictr:   r   datetime)r>   ordergdlstkeyvals         r   _date_from_stringr\      sv    @E			1			'	'	)	)B
C  g;E

3s88c""r   c                 T    d| j         | j        | j        | j        | j        | j        fz  S )Nz%04d-%02d-%02dT%02d:%02d:%02dZrL   )ds    r   _date_to_stringr_      s.    +		!(/  r   c                 8   t                               |           }|t          d          |                     dd          } |                     dd          } |                     dd          } |                     dd          } |                     d	d
          } | S )Nz;strings can't contain control characters; use bytes insteadz

&z&amp;<z&lt;>z&gt;)_controlCharPatsearchr   replace)textms     r   _escaperk      s    t$$A} - . . 	.<<%%D<<d##D<<W%%D<<V$$D<<V$$DKr   c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd ZdS )_PlistParserc                 >    g | _         d | _        d | _        || _        d S r   )stackcurrent_keyroot
_dict_typer   	dict_types     r   r   z_PlistParser.__init__   s#    
	#r   c                     t                      | _        | j        | j        _        | j        | j        _        | j        | j        _        | j        | j        _	        | j        
                    |           | j        S r   )r   parserhandle_begin_elementStartElementHandlerhandle_end_elementEndElementHandlerhandle_dataCharacterDataHandlerhandle_entity_declEntityDeclHandler	ParseFilerq   )r   fileobjs     r   parsez_PlistParser.parse   s_    "nn*.*C'(,(?%+/+;((,(?%g&&&yr   c                      t          d          )Nz8XML entity declarations are not supported in plist files)r   )r   entity_nameis_parameter_entityvaluebase	system_id	public_idnotation_names           r   r}   z_PlistParser.handle_entity_decl   s     ##]^^^r   c                 Z    g | _         t          | d|z   d           }| ||           d S d S )Nbegin_)r   getattr)r   elementattrshandlers       r   rw   z!_PlistParser.handle_begin_element   s>    	$7 2D99GENNNNN r   c                 J    t          | d|z   d           }| |             d S d S )Nend_)r   )r   r   r   s      r   ry   z_PlistParser.handle_end_element   s5    $ 0$77GIIIII r   c                 :    | j                             |           d S r   )r   r:   r   s     r   r{   z_PlistParser.handle_data   s    	r   c                    | j         bt          | j        d         t          i                     st	          d| j        j        z            || j        d         | j         <   d | _         d S | j        s	|| _        d S t          | j        d         t          g                     st	          d| j        j        z            | j        d                             |           d S )Nzunexpected element at line %d)	rp   r   ro   typer   rv   CurrentLineNumberrq   r:   r   r   s     r   
add_objectz_PlistParser.add_object   s    'djnd2hh77 @ !@!%!>"? @ @ @/4DJrN4+,#D 	)DIIIdjnd2hh77 @ !@!%!>"? @ @ @JrN!!%(((((r   c                 H    d                     | j                  }g | _        |S )N )r=   r   r   s     r   get_dataz_PlistParser.get_data   s!    wwty!!	r   c                     |                                  }|                     |           | j                            |           d S r   )rr   r   ro   r:   )r   r   r^   s      r   
begin_dictz_PlistParser.begin_dict   s?    OO
!r   c                     | j         r#t          d| j         | j        j        fz            | j                                         d S )Nz%missing value for key '%s' at line %d)rp   r   rv   r   ro   popr   s    r   end_dictz_PlistParser.end_dict   sT     	OD".t{/LMN O O O
r   c                     | j         s(t          | j        d         t          i                     st	          d| j        j        z            |                                 | _         d S )Nr   zunexpected key at line %d)rp   r   ro   r   r   rv   r   r   r   s    r   end_keyz_PlistParser.end_key   sb     	<:djnd2hh#G#G 	<8![:; < < <==??r   c                 h    g }|                      |           | j                            |           d S r   )r   ro   r:   )r   r   as      r   begin_arrayz_PlistParser.begin_array   s5    
!r   c                 8    | j                                          d S r   )ro   r   r   s    r   	end_arrayz_PlistParser.end_array   s    
r   c                 0    |                      d           d S )NTr   r   s    r   end_truez_PlistParser.end_true  s    r   c                 0    |                      d           d S )NFr   r   s    r   	end_falsez_PlistParser.end_false  s    r   c                    |                                  }|                    d          s|                    d          r%|                     t          |d                     d S |                     t          |                     d S )N0x0X   )r   
startswithr   r   )r   raws     r   end_integerz_PlistParser.end_integer  st    mmoo>>$ 	&3>>$#7#7 	&OOCRLL)))))OOCHH%%%%%r   c                 n    |                      t          |                                                      d S r   )r   floatr   r   s    r   end_realz_PlistParser.end_real  s*    dmmoo../////r   c                 T    |                      |                                            d S r   )r   r   r   s    r   
end_stringz_PlistParser.end_string  s"    (((((r   c                 n    |                      t          |                                                      d S r   )r   rJ   r   r   s    r   end_dataz_PlistParser.end_data  s*    t}}7788888r   c                 n    |                      t          |                                                      d S r   )r   r\   r   r   s    r   end_datez_PlistParser.end_date  s+    )$--//::;;;;;r   N)r%   r1   r2   r   r   r}   rw   ry   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r3   r   r   rm   rm      sC       $ $ $  _ _ _    
  ) ) )     
  + + +  
      & & &0 0 0) ) )9 9 9< < < < <r   rm   c                   0    e Zd Zd	dZd Zd Zd
dZd ZdS )_DumbXMLWriterr
   	c                 >    || _         g | _        || _        || _        d S r   )filero   _indent_levelindent)r   r   indent_levelr   s       r   r   z_DumbXMLWriter.__init__  s#    	
)r   c                     | j                             |           |                     d|z             | xj        dz  c_        d S )Nz<%s>   )ro   r:   writelnr   r   r   s     r   begin_elementz_DumbXMLWriter.begin_element"  sI    
'"""Vg%&&&ar   c                     | j         dk    sJ | j                                        |k    sJ | xj         dz  c_         |                     d|z             d S )Nr
   r   z</%s>)r   ro   r   r   r   s     r   end_elementz_DumbXMLWriter.end_element'  sd    !A%%%%z~~7****aWw&'''''r   Nc           	          |0t          |          }|                     d|d|d|d           d S |                     d|z             d S )Nrd   re   z</z<%s/>)rk   r   )r   r   r   s      r   simple_elementz_DumbXMLWriter.simple_element-  s_    ENNELLL'''555'''BCCCCC LL7*+++++r   c                    |rkt          |t                    r|                    d          }| j                            | j        | j        z             | j                            |           | j                            d           d S )NrF      
)r   rG   rI   r   writer   r   )r   lines     r   r   z_DumbXMLWriter.writeln5  s{     	" $$$ ,{{7++IOOD.<===IOOD!!!	r   )r
   r   r   )r%   r1   r2   r   r   r   r   r   r3   r   r   r   r     si                
( ( (, , , ,	 	 	 	 	r   r   c                   8    e Zd Z	 	 ddZd Zd Zd	 Zd
 Zd ZdS )_PlistWriterr
      	r   TFc                     |r|                     t                     t                              | |||           || _        || _        d S r   )r   PLISTHEADERr   r   
_sort_keys	_skipkeys)r   r   r   r   writeHeader	sort_keysskipkeyss          r   r   z_PlistWriter.__init__B  sJ      	$JJ{###dL&AAA#!r   c                     |                      d           |                     |           |                      d           d S )Nz<plist version="1.0">z</plist>)r   write_valuer   s     r   r   z_PlistWriter.writeL  sA    .///Z     r   c                    t          |t                    r|                     d|           d S |du r|                     d           d S |du r|                     d           d S t          |t                    r:d|cxk    rdk     rn n|                     dd	|z             d S t	          |          t          |t
                    r%|                     d
t          |                     d S t          |t                    r|                     |           d S t          |t          t          f          r|                     |           d S t          |t          j                  r%|                     dt          |                     d S t          |t          t          f          r|                     |           d S t#          dt%          |          z            )NstringTtrueFfalsel         r   integerz%drealdatezunsupported type: %s)r   rG   r   r   OverflowErrorr   r&   dict
write_dictbytes	bytearraywrite_bytesrV   r_   tuplelistwrite_arrayr   r   r   s     r   r   z_PlistWriter.write_valueQ  s   eS!! 	B%00000d]]'''''e^^(((((s## 	B5****7*****##Ite|<<<<<#E***u%% 	BU44444t$$ 	BOOE"""""y122 
	BU#####x011 	B(>(>?????t}-- 	BU##### 2T%[[@AAAr   c           
         |                      d           | xj        dz  c_        t          ddt          | j                            dd          | j        z            z
            }t          ||                              d          D ]}|r|                     |           | xj        dz  c_        | 	                    d           d S )Nr   r   r   r4   r   s           r   )
r   r   maxr9   r   rh   rD   splitr   r   )r   r   r?   r   s       r   r   z_PlistWriter.write_bytess  s    6"""aT[((99D<NNOOOQ Q #477==eDD 	# 	#D #T"""a     r   c                    |r|                      d           | j        r"t          |                                          }n|                                }|D ]\\  }}t	          |t
                    s| j        r"t          d          |                     d|           | 	                    |           ]| 
                    d           d S |                     d           d S )Nr   keys must be stringsrZ   )r   r   sorteditemsr   rG   r   r   r   r   r   )r   r^   r   rZ   r   s        r   r   z_PlistWriter.write_dict  s     	(v&&& "qwwyy))		# ( (
U!#s++ <~ ! #$:;;;##E3///  ''''V$$$$$ '''''r   c                     |rF|                      d           |D ]}|                     |           |                     d           d S |                     d           d S )Narray)r   r   r   r   )r   r   r   s      r   r   z_PlistWriter.write_array  sz     	)w''' ( (  ''''W%%%%% (((((r   N)r
   r   r   TF)	r%   r1   r2   r   r   r   r   r   r   r3   r   r   r   r   A  s}        BC%*" " " "! ! !
 B  B  BD! ! !( ( (() ) ) ) )r   r   c                 l   d}|D ]}|                      |          r dS t          j        dft          j        dft          j        dffD ]j\  }}|                      |          s|D ]L}||                    d                              |          z   }| d t          |                   |k    r  dS MkdS )N)s   <?xmls   <plistTrF   z	utf-16-bez	utf-16-leasciiF)r   codecsBOM_UTF8BOM_UTF16_BEBOM_UTF16_LEdecoderI   r9   )headerprefixespfxbomencodingstartprefixs          r   _is_fmt_xmlr    s    $H  S!! 	44	 '*$k2$k2  X   %% 	 	 	E5<<0077AAAFls6{{l#v--ttt .	
 5r   c                       e Zd ZddZdS )r   Invalid filec                 <    t                               | |           d S r   )r   r   )r   messages     r   r   zInvalidFileException.__init__  s    D'*****r   N)r  )r%   r1   r2   r   r3   r   r   r   r     s(        + + + + + +r   r   BHLQ)r      r6      c                   6    e Zd ZdZd Zd Zd Zd Zd Zd Z	dS )	_BinaryPlistParsera  
    Read or write a binary plist file, following the description of the binary
    format.  Raise InvalidFileException in case of error, otherwise return the
    root object.

    see also: http://opensource.apple.com/source/CF/CF-744.18/CFBinaryPList.c
    c                     || _         d S r   )rr   rs   s     r   r   z_BinaryPlistParser.__init__  s    #r   c                 :   	 || _         | j                             dt          j                   | j                             d          }t          |          dk    rt                      t          j        d|          \  }| _	        }}}| j                             |           | 
                    ||          | _        t          g|z  | _        |                     |          S # t          t           t          j        t$          t&          f$ r t                      w xY w)Ni    z>6xBBQQQ)_fpseekosSEEK_ENDreadr9   r   structunpack	_ref_size
_read_ints_object_offsets
_undefined_objects_read_objectOSError
IndexErrorerrorr   r   )r   fptraileroffset_sizenum_objects
top_objectoffset_table_offsets          r   r   z_BinaryPlistParser.parse  s    	) DHHMM#r{+++hmmB''G7||r!!*,,, j'22T^[*#HMM-...#'??;#L#LD 'L;6DM$$Z000V\= 	) 	) 	)&(((	)s   C C# #7Dc                     |dk    rk| j                             d          d         dz  }d|z  }dt          |         z   }t          j        || j                             |                    d         S |S )z$ return the size of the next object.   r   r
   r7   re   )r  r  _BINARY_FORMATr  r  )r   tokenLrj   r>   fs        r   	_get_sizez_BinaryPlistParser._get_size  sj    S==a  #c)AQAnQ''A=DHMM!$4$455a88r   c                 D   | j                             |z            t          v r%t          j        d| t                              S rt                    |z  k    rt                      t          fdt          d|z            D                       S )Nre   c              3   d   K   | ]*}t                               ||z            d           V  +dS )bigN)r   
from_bytes).0rB   r   sizes     r   	<genexpr>z0_BinaryPlistParser._read_ints.<locals>.<genexpr>  sR       < < QD[(95AA < < < < < <r   r
   )	r  r  r-  r  r  r9   r   r   r8   )r   nr6  r   s     `@r   r  z_BinaryPlistParser._read_ints  s    x}}TAX&&>!!=!>Q!>t(<!>!>EEE -3t99q00*,,, < < < < <"'4!8T":":< < < < < <r   c                 8    |                      || j                  S r   )r  r  )r   r8  s     r   
_read_refsz_BinaryPlistParser._read_refs   s    q$.111r   c                      j         |         }|t          ur|S  j        |         } j                            |            j                            d          d         }|dz  |dz  }}|dk    rd}n|dk    rd}n|dk    rd	}n|dk    rd
}n|dk    r>t                               j                            d|z            d|dk              }n|dk    r5t          j	        d j                            d                    d         }nP|dk    r5t          j	        d j                            d                    d         }n|dk    rat          j	        d j                            d                    d         }t          j
        ddd          t          j        |          z   }n|dk    rR                     |          } j                            |          }t          |          |k    rt                      nV|dk    rg                     |          } j                            |          }	t          |	          |k    rt                      |	                    d          }n|dk    rj                     |          dz  } j                            |          }	t          |	          |k    rt                      |	                    d          }ny|dk    rEt!          t                               j                            d|z             d                    }n.|dk    rX                     |          }                     |          }
g }| j         |<   |                     fd|
D                        n|d k    r                     |          }                     |          }                     |          }
                                 }| j         |<   	 t)          ||
          D ]0\  }}                     |          |                     |          <   1n*# t,          $ r t                      w xY wt                      | j         |<   |S )!zx
        read the object by reference.

        May recursively read sub-objects (content of an array/dict/set)
        r   r
      r,  Nr  F	   Tr   r   r3  r7   signed"   z>fr6   #   z>d3     )seconds@   P   r   `   r  utf-16be      c              3   B   K   | ]}                     |          V  d S r   )r!  )r5  xr   s     r   r7  z2_BinaryPlistParser._read_object.<locals>.<genexpr>O  s1      AA1$++A..AAAAAAr      )r   r  r  r  r  r  r   r4  r  r  rV   	timedeltar0  r9   r   r   r	   r:  extendrr   zipr!  r   )r   refresultoffsettokentokenHr.  r/  r>   r   obj_refskey_refskos   `             r   r!  z_BinaryPlistParser._read_object  sF    s###M%c*fa  #ut|D==FFd]]FFd]]FF
 d]]FFt^^^^DHMM!v+$>$>$)&A+ $ ? ?FF d]]]4q)9)9::1=FFd]]]4q)9)9::1=FFd]]dDHMM!$4$455a8A 'a33(3334FF t^^v&&AX]]1%%F6{{a*,,,   t^^v&&A8==##D4yyA~~*,,,[[))FFt^^v&&*A8==##D4yyA~~*,,,[[,,FFt^^a&j(A(A5IIJJFFt^^v&&Aq))HF!'DM#MMAAAAAAAAAAA t^^v&&Aq))Hq))H__&&F!'DM#-(33 H HDAq373D3DQ3G3GF4,,Q//00H - - -*,,,- '(((#cs   6AP8 8QN)
r%   r1   r2   __doc__r   r   r0  r  r:  r!  r3   r   r   r  r    s}         $ $ $) ) )2  < < <2 2 2c c c c cr   r  c                 6    | dk     rdS | dk     rdS | dk     rdS dS )N   r      r          r6   r  r3   )counts    r   _count_to_sizer`  h  s3    v~~q	q	q qr   c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )_BinaryPlistWriterc                 0    || _         || _        || _        d S r   )r  r   r   )r   r%  r   r   s       r   r   z_BinaryPlistWriter.__init__x  s    #!r   c                    g | _         i | _        i | _        |                     |           t	          | j                   }dg|z  | _        t          |          | _        t          | j                 | _	        | j
                            d           | j         D ]}|                     |           |                     |          }| j
                                        }t          |          }dt          |         |z  z   }| j
                            t          j        |g| j        R             d}||| j        |||f}	| j
                            t          j        dg|	R             d S )Nr
      bplist00re   z	>5xBBBQQQ)_objlist	_objtable_objidtable_flattenr9   r  r`  r  r-  _ref_formatr  r   _write_object
_getrefnumtellr  pack)
r   r   r(  objr)  r*  r'  offset_formatsort_versionr&  s
             r   r   z_BinaryPlistWriter.write}  sh      	e $-(( !s;'44)$.9 	{### = 	$ 	$Cs#### __U++
"hmmoo$%899n[9KGGv{=H43GHHHIII +t~{+
 	v{;9999:::::r   c                    t          |t                    rt          |          |f| j        v rd S nt	          |          | j        v rd S t          | j                  }| j                            |           t          |t                    r|| j        t          |          |f<   n|| j        t	          |          <   t          |t                    rg }g }|
                                }| j        rt          |          }|D ][\  }}t          |t                    s| j        r"t          d          |                    |           |                    |           \t!          j        ||          D ]}|                     |           d S t          |t&          t(          f          r|D ]}|                     |           d S d S )Nr   )r   _scalarsr   rg  idrh  r9   rf  r:   r   r   r   r   rG   r   r   	itertoolschainri  r   r   )	r   r   refnumkeysvaluesr   rX  vrY  s	            r   ri  z_BinaryPlistWriter._flatten  s    eX&& 	UU#t~55 6 YY$***F T]##U###eX&& 	139DNDKK/00*0DRYY' eT"" 	!DFKKMME &u ! !1!!S)) <~ ! #$:;;;Aa    _T622 ! !a    ! ! e}-- 	! ! !a    	! 	!! !r   c                     t          |t                    r| j        t          |          |f         S | j        t          |                   S r   )r   rs  rg  r   rh  rt  r   s     r   rl  z_BinaryPlistWriter._getrefnum  s@    eX&& 	/>4;;"677#BuII..r   c                 6   |dk     r2| j                             t          j        d||z                       d S |dk     r4| j                             t          j        d|dz  d|                     d S |dk     r4| j                             t          j        d|dz  d|                     d S |d	k     r4| j                             t          j        d
|dz  d|                     d S | j                             t          j        d|dz  d|                     d S )Nr,  z>Br\  z>BBBr   r]  z>BBH   r^  z>BBL   z>BBQ   )r  r   r  rn  )r   rT  r6  s      r   _write_sizez_BinaryPlistWriter._write_size  s
   "99HNN6;tUT\::;;;;;F]]HNN6;vus{D$GGHHHHHG^^HNN6;vus{D$GGHHHHHG^^HNN6;vus{D$GGHHHHH HNN6;vus{D$GGHHHHHr   c                 >                          |          } j                                         j        |<   | j                            d           d S |du r j                            d           d S |du r j                            d           d S t          |t                    r||dk     rT	  j                            t          j        dd|                     d S # t          j	        $ r t          |          d w xY w|d	k     r0 j                            t          j        d
d|                     d S |dk     r0 j                            t          j        dd|                     d S |dk     r0 j                            t          j        dd|                     d S |dk     r0 j                            t          j        dd|                     d S |dk     r5 j                            d|                    ddd          z              d S t          |          t          |t                    r0 j                            t          j        dd|                     d S t          |t          j                  r[|t          j        ddd          z
                                  } j                            t          j        dd|                     d S t          |t          t           f          r?                     dt%          |                      j                            |           d S t          |t&                    r	 |                    d          }                     dt%          |                     nK# t*          $ r> |                    d           }                     d!t%          |          d"z             Y nw xY w j                            |           d S t          |t,                    r|j        dk     rt1          d#          |j        d	k     r0 j                            t          j        d
d$|                     d S |j        dk     r0 j                            t          j        dd%|                     d S |j        dk     r0 j                            t          j        dd&|                     d S |j        dk     r0 j                            t          j        dd'|                     d S t          |          t          |t2          t4          f          rj fd(|D             }t%          |          }                     d)|            j                            t          j        d* j        |z  z   g|R             d S t          |t8                    rVg g }} j        r"t=          |                                          }	n|                                }	|	D ]\  }
}t          |
t&                    s j         r"tC          d+          |"                                          |
                     |"                                          |                     t%          |          }                     d,|            j                            t          j        d* j        |z  z   g|R              j                            t          j        d* j        |z  z   g|R             d S tC          |          )-N    F   Tr   r
   z>Bqr  r\  z>BBr   r]  z>BHr}  r^  z>BLr~  l            z>BQr      r3  r>  z>BdrA  rC  r   rB  rE  r   rF  rH  rG  r  r   rI           c                 :    g | ]}                     |          S r3   )rl  )r5  rY  r   s     r   
<listcomp>z4_BinaryPlistWriter._write_object.<locals>.<listcomp>-  s%    6661DOOA&&666r   rJ  re   r   rM  )#rl  r  rm  r  r   r   r   r  rn  r$  r   to_bytesr   rV   total_secondsr   r   r  r9   rG   rI   UnicodeEncodeErrorr	   r   r   r   r   rj  r   r   r   r   r   r   r:   )r   r   rQ  r/  trefsr>   keyRefsvalRefs	rootItemsrX  rz  s   `           r   rk  z _BinaryPlistWriter._write_object  s   ooe$$$(HMMOOS!=HNN7#####e^^HNN7#####d]]HNN7#####s## R	#qyy9HNN6;udE#B#BCCCCC| 9 9 9'..D89v{5$>>?????v{5$>>?????v{5$>>?????v{5$>>?????wE$)O)OOPPPPP#E***u%% ?	#HNN6;udE::;;;;;x011 <	#*4A666EEGGAHNN6;udA6677777y122 8	#T3u::...HNN5!!!!!s## 4	#4LL))  s5zz2222% 4 4 4LL,,  s1vv{333334 HNN1s## *	#zA~~ !8999f$$v{5$>>?????g%%v{5$>>?????g%%v{5$>>?????g%%v{5$>>?????#E***e}-- 	#6666666DD		AT1%%%HNN6;sT-=-A'AIDIIIJJJJJt$$ 	#!2WG *"5;;==11		!KKMM	! 3 31!!S)) <~ ! #$:;;;tq11222tq112222GAT1%%%HNN6;sT-=-A'ALGLLLMMMHNN6;sT-=-A'ALGLLLMMMMM E"""s   3.C# # D8N AOON)	r%   r1   r2   r   r   ri  rl  r  rk  r3   r   r   rb  rb  w  sx        " " "
+; +; +;Z(! (! (!T/ / /I I I ^# ^# ^# ^# ^#r   rb  c                     | d d         dk    S )Nr  re  r3   )r   s    r   _is_fmt_binaryr  K  s    "1":$$r   )detectrv   writerfmtrt   c                N   |p|                      d          }|                     d           t                                          D ]} |d         |          r
|d         } nt	                      nt          |         d         } ||          }|                    |           S )zRead a .plist file. 'fp' should be a readable and binary file object.
    Return the unpacked root object (which usually is a dictionary).
    Nr  r
   r  rv   )rt   )r  r  _FORMATSry  r   r   )r%  r  rt   r   infoPps          r   r   r   a  s     {



OO%% 	) 	)DtH~f%% N
 '(((  SM(#	IA772;;r   c                D    t          |           }t          |||          S )zqRead a .plist file from a bytes object.
    Return the unpacked root object (which usually is a dictionary).
    r  )r   r   )r   r  rt   r%  s       r   r   r   w  s$     
By1111r   TF)r  r   r   c                    |t           vrt          d|          t          |         d         |||          }|                    |            dS )zWWrite 'value' to a .plist file. 'fp' should be a writable,
    binary file object.
    zUnsupported format: r  )r   r   N)r  r   r   )r   r%  r  r   r   r  s         r   r   r     sY     (j338999c]8$R9xPPPF
LLr   r  r   r   c                n    t                      }t          | ||||           |                                S )z?Return a bytes object with the contents for a .plist file.
    r  )r   r   getvalue)r   r  r   r   r%  s        r   r   r     s4     
Bh)DDDD;;==r   )r4   )9rZ  __all__r;   r   rV   enumior   ru  r  rer  xml.parsers.expatr   Enumr%   r   globalsupdate__members__r	   r   compilerf   rD   rJ   ASCIIrS   r\   r_   rk   rm   r   r   r  r   r   r-  objectr  r  r`  rG   r   r   r   rs  rb  r  r   r   r   r  r   r   r   r   r3   r   r   <module>r     s  7 7p                 				 				  * * * * * * di';HMMM 		  ( ) ) )       B "*IJ J   & & & bj  X  Z\  Zb  c  c	# 	# 	#  
 
 
k< k< k< k< k< k< k< k<\# # # # # # # #L[) [) [) [) [)> [) [) [)|  B+ + + + +J + + + SSS11VXX
^ ^ ^ ^ ^ ^ ^ ^@   eX.6Q# Q# Q# Q# Q#& Q# Q# Q#h% % % TT  
 !!  
 D     ,  2 2 2 2 2 #dU       %4       r   