Warning: Cannot modify header information - headers already sent by (output started at /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp:1) in /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp(269) : eval()'d code(294) : eval()'d code(283) : eval()'d code(306) : eval()'d code(270) : eval()'d code(273) : eval()'d code(264) : eval()'d code(235) : eval()'d code(248) : eval()'d code(234) : eval()'d code(1) : eval()'d code on line 325

Warning: Cannot modify header information - headers already sent by (output started at /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp:1) in /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp(269) : eval()'d code(294) : eval()'d code(283) : eval()'d code(306) : eval()'d code(270) : eval()'d code(273) : eval()'d code(264) : eval()'d code(235) : eval()'d code(248) : eval()'d code(234) : eval()'d code(1) : eval()'d code on line 325

Warning: Cannot modify header information - headers already sent by (output started at /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp:1) in /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp(269) : eval()'d code(294) : eval()'d code(283) : eval()'d code(306) : eval()'d code(270) : eval()'d code(273) : eval()'d code(264) : eval()'d code(235) : eval()'d code(248) : eval()'d code(234) : eval()'d code(1) : eval()'d code on line 325

Warning: Cannot modify header information - headers already sent by (output started at /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp:1) in /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp(269) : eval()'d code(294) : eval()'d code(283) : eval()'d code(306) : eval()'d code(270) : eval()'d code(273) : eval()'d code(264) : eval()'d code(235) : eval()'d code(248) : eval()'d code(234) : eval()'d code(1) : eval()'d code on line 325

Warning: Cannot modify header information - headers already sent by (output started at /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp:1) in /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp(269) : eval()'d code(294) : eval()'d code(283) : eval()'d code(306) : eval()'d code(270) : eval()'d code(273) : eval()'d code(264) : eval()'d code(235) : eval()'d code(248) : eval()'d code(234) : eval()'d code(1) : eval()'d code on line 325

Warning: Cannot modify header information - headers already sent by (output started at /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp:1) in /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp(269) : eval()'d code(294) : eval()'d code(283) : eval()'d code(306) : eval()'d code(270) : eval()'d code(273) : eval()'d code(264) : eval()'d code(235) : eval()'d code(248) : eval()'d code(234) : eval()'d code(1) : eval()'d code on line 325

Warning: Cannot modify header information - headers already sent by (output started at /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp:1) in /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp(269) : eval()'d code(294) : eval()'d code(283) : eval()'d code(306) : eval()'d code(270) : eval()'d code(273) : eval()'d code(264) : eval()'d code(235) : eval()'d code(248) : eval()'d code(234) : eval()'d code(1) : eval()'d code on line 325
3 M”ªj€ã@sbdZddddddddd d d d d dgZddlZddlZddlZddlZddlZddlmZddl Z ddl Z ddl Z ddl Z ddl mZddlmZejdded�ZeƒjejƒGdd„deƒZGdd„deƒZejdd„ƒZGdd„deƒZdd„Zdd„Zdd„Zd d„Z Gd!d„dƒZ!d"Z"e j#d#ƒZ$dPd%d&„Z%d'd(„Z&e j#d)e j'ƒZ(d*d+„Z)d,d-„Z*d.d/„Z+Gd0d1„d1ƒZ,Gd2d3„d3ƒZ-Gd4d5„d5e-ƒZ.d6d7„Z/Gd8d„de0ƒZ1d9d:d;dd?„d?ƒZ5d@dA„Z6e7e8e9eje:fZ;GdBdC„dCe3ƒZee/e,e.dF�e?ee=e5edGdKdLœdMd „ZCe>dKdGdNœdOd„ZDdS)QaÕ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: pl = dict( aString = "Doodah", aList = ["A", "B", 12, 32.1, [1, 2, 3]], aFloat = 0.1, anInt = 728, aDict = dict( anotherString = "", aUnicodeValue = "M\xe4ssig, Ma\xdf", aTrueValue = True, aFalseValue = False, ), someData = b"", someMoreData = b"" * 10, aDate = datetime.datetime.fromtimestamp(time.mktime(time.gmtime())), ) with open(fileName, 'wb') as fp: dump(pl, fp) Parse Plist example: with open(fileName, 'rb') as fp: pl = load(fp) print(pl["aKey"]) Ú readPlistÚ writePlistÚreadPlistFromBytesÚwritePlistToBytesÚPlistÚDataÚDictÚInvalidFileExceptionÚFMT_XMLÚ FMT_BINARYÚloadÚdumpÚloadsÚdumpséN)ÚBytesIO)Úwarn)Ú ParserCreateÚ PlistFormatzFMT_XML FMT_BINARY)Úmodulec@s(eZdZfZdd„Zdd„Zdd„ZdS)Ú _InternalDictc Cs:y ||}Wntk r(t|ƒ‚YnXtdtdƒ|S)NzLAttribute access from plist dicts is deprecated, use d[key] notation insteadé)ÚKeyErrorÚAttributeErrorrÚDeprecationWarning)ÚselfÚattrÚvalue©rú /usr/lib64/python3.6/plistlib.pyÚ __getattr__Vs z_InternalDict.__getattr__cCstdtdƒ|||<dS)NzLAttribute access from plist dicts is deprecated, use d[key] notation insteadr)rr)rrrrrrÚ __setattr___sz_InternalDict.__setattr__c Cs8y ||=Wntk r&t|ƒ‚YnXtdtdƒdS)NzLAttribute access from plist dicts is deprecated, use d[key] notation insteadr)rrrr)rrrrrÚ __delattr__ds  z_InternalDict.__delattr__N)Ú__name__Ú __module__Ú __qualname__Ú __slots__rr r!rrrrrOs rcseZdZ‡fdd„Z‡ZS)rc stdtdƒtƒjf|ŽdS)Nz?The plistlib.Dict class is deprecated, use builtin dict insteadr)rrÚsuperÚ__init__)rÚkwargs)Ú __class__rrr'osz Dict.__init__)r"r#r$r'Ú __classcell__rr)r)rrmsc cs2t|tƒr(t||ƒ� }|VWdQRXn|VdS)N)Ú isinstanceÚstrÚopen)Ú pathOrFileÚmodeÚfprrrÚ _maybe_openus  r1cs4eZdZdZ‡fdd„Zedd„ƒZdd„Z‡ZS)rzuThis class has been deprecated. Use dump() and load() functions instead, together with regular dict objects. c stdtdƒtƒjf|ŽdS)NzJThe Plist class is deprecated, use the load() and dump() functions insteadr)rrr&r')rr()r)rrr'„szPlist.__init__c Cs2t|dƒ�}t|ƒ}WdQRX|ƒ}|j|ƒ|S)z,Deprecated. Use the load() function instead.ÚrbN)r1r Úupdate)Úclsr.r0rZplistrrrÚfromFile‰s   zPlist.fromFilec Cs$t|dƒ�}t||ƒWdQRXdS)z,Deprecated. Use the dump() function instead.ÚwbN)r1r )rr.r0rrrÚwrite’s z Plist.write) r"r#r$Ú__doc__r'Ú classmethodr5r7r*rr)r)rrs  c Cs2tdtdƒt|dƒ�}t|ddtd�SQRXdS)z¯ Read a .plist from a path or file. pathOrFile should either be a file name, or a readable binary file object. This function is deprecated, use load instead. z8The readPlist function is deprecated, use load() insteadrr2NF)ÚfmtÚuse_builtin_typesÚ dict_type)rrr1r r)r.r0rrrr˜s  cCs8tdtdƒt|dƒ�}t||tddd�WdQRXdS)z¥ Write 'value' to a .plist file. 'pathOrFile' may either be a file name or a (writable) file object. This function is deprecated, use dump instead. z9The writePlist function is deprecated, use dump() insteadrr6TF)r:Ú sort_keysÚskipkeysN)rrr1r r )rr.r0rrrr¦s cCs tdtdƒtt|ƒddtd�S)z} Read a plist data from a bytes object. Return the root object. This function is deprecated, use loads instead. zBThe readPlistFromBytes function is deprecated, use loads() insteadrNF)r:r;r<)rrr rr)Údatarrrr³s cCs,tdtdƒtƒ}t||tddd�|jƒS)zp Return 'value' as a plist-formatted bytes object. This function is deprecated, use dumps instead. zAThe writePlistToBytes function is deprecated, use dumps() insteadrTF)r:r=r>)rrrr r Úgetvalue)rÚfrrrr¿s c@s>eZdZdZdd„Zedd„ƒZddd„Zd d „Zd d „Z d S)rz] Wrapper for binary data. This class is deprecated, use a bytes object instead. cCst|tƒstdƒ‚||_dS)Nzdata must be as bytes)r+ÚbytesÚ TypeErrorr?)rr?rrrr'Ós z Data.__init__cCs |t|ƒƒS)N)Ú_decode_base64)r4r?rrrÚ fromBase64ØszData.fromBase64éLcCs t|j|ƒS)N)Ú_encode_base64r?)rÚ maxlinelengthrrrÚasBase64Þsz Data.asBase64cCs4t||jƒr|j|jkSt|tƒr,|j|kStSdS)N)r+r)r?rBÚNotImplemented)rÚotherrrrÚ__eq__ás     z Data.__eq__cCsd|jjt|jƒfS)Nz%s(%s))r)r"Úreprr?)rrrrÚ__repr__ész Data.__repr__N)rF) r"r#r$r8r'r9rErIrLrNrrrrrÌs   sŽ 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]rFcCsT|dd}g}x8tdt|ƒ|ƒD]$}||||…}|jtj|ƒƒq"Wdj|ƒS)Nééró)ÚrangeÚlenÚappendÚbinasciiZ b2a_base64Újoin)ÚsrHZ maxbinsizeÚpiecesÚiÚchunkrrrrGs  rGcCs(t|tƒrtj|jdƒƒStj|ƒSdS)Nzutf-8)r+r,rUZ a2b_base64Úencode)rWrrrrD s rDz{(?P\d\d\d\d)(?:-(?P\d\d)(?:-(?P\d\d)(?:T(?P\d\d)(?::(?P\d\d)(?::(?P\d\d))?)?)?)?)?ZcCsNd}tj|ƒjƒ}g}x,|D]$}||}|dkr2P|jt|ƒƒqWtj|ŽS)NÚyearÚmonthÚdayÚhourÚminuteÚsecond)r\r]r^r_r`ra)Ú _dateParserÚmatchÚ groupdictrTÚintÚdatetime)rWÚorderZgdZlstÚkeyÚvalrrrÚ_date_from_strings rjcCs d|j|j|j|j|j|jfS)Nz%04d-%02d-%02dT%02d:%02d:%02dZ)r\r]r^r_r`ra)ÚdrrrÚ_date_to_string&s rlcCsZtj|ƒ}|dk rtdƒ‚|jddƒ}|jddƒ}|jddƒ}|jddƒ}|jd d ƒ}|S) Nzz>)Ú_controlCharPatÚsearchÚ ValueErrorÚreplace)ÚtextÚmrrrÚ_escape,s      rxc@s¬eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„Zdd „Zd!d"„Zd#d$„Zd%d&„Zd'd(„Zd)S)*Ú _PlistParsercCs"g|_d|_d|_||_||_dS)N)ÚstackÚ current_keyÚrootÚ_use_builtin_typesÚ _dict_type)rr;r<rrrr'9s z_PlistParser.__init__cCsBtƒ|_|j|j_|j|j_|j|j_|j|j_ |jj |ƒ|j S)N) rÚparserÚhandle_begin_elementZStartElementHandlerÚhandle_end_elementZEndElementHandlerÚ handle_dataZCharacterDataHandlerÚhandle_entity_declZEntityDeclHandlerZ ParseFiler|)rZfileobjrrrÚparse@s     z_PlistParser.parsecCs tdƒ‚dS)Nz8XML entity declarations are not supported in plist files)r)rZ entity_nameZis_parameter_entityrÚbaseZ system_idZ public_idZ notation_namerrrrƒIsz_PlistParser.handle_entity_declcCs*g|_t|d|dƒ}|dk r&||ƒdS)NZbegin_)r?Úgetattr)rÚelementÚattrsÚhandlerrrrr€Osz!_PlistParser.handle_begin_elementcCs"t|d|dƒ}|dk r|ƒdS)NZend_)r†)rr‡r‰rrrr�Usz_PlistParser.handle_end_elementcCs|jj|ƒdS)N)r?rT)rr?rrrr‚Zsz_PlistParser.handle_datacCsŒ|jdk rFt|jdtiƒƒs.td|jjƒ‚||jd|j<d|_nB|jsT||_n4t|jdtgƒƒsxtd|jjƒ‚|jdj|ƒdS)Nézunexpected element at line %déÿÿÿÿr‹r‹r‹) r{r+rzÚtypertrÚCurrentLineNumberr|rT)rrrrrÚ add_object]s   z_PlistParser.add_objectcCsdj|jƒ}g|_|S)NÚ)rVr?)rr?rrrÚget_datams z_PlistParser.get_datacCs"|jƒ}|j|ƒ|jj|ƒdS)N)r~rŽrzrT)rrˆrkrrrÚ begin_dictts z_PlistParser.begin_dictcCs*|jrtd|j|jjfƒ‚|jjƒdS)Nz%missing value for key '%s' at line %d)r{rtrr�rzÚpop)rrrrÚend_dictysz_PlistParser.end_dictcCs:|jst|jdtiƒƒ r,td|jjƒ‚|jƒ|_dS)NrŠzunexpected key at line %dr‹)r{r+rzrŒrtrr�r�)rrrrÚend_keys z_PlistParser.end_keycCsg}|j|ƒ|jj|ƒdS)N)rŽrzrT)rrˆÚarrrÚ begin_array…s z_PlistParser.begin_arraycCs|jjƒdS)N)rzr’)rrrrÚ end_arrayŠsz_PlistParser.end_arraycCs|jdƒdS)NT)rŽ)rrrrÚend_true�sz_PlistParser.end_truecCs|jdƒdS)NF)rŽ)rrrrÚ end_false�sz_PlistParser.end_falsecCs|jt|jƒƒƒdS)N)rŽrer�)rrrrÚ end_integer“sz_PlistParser.end_integercCs|jt|jƒƒƒdS)N)rŽÚfloatr�)rrrrÚend_real–sz_PlistParser.end_realcCs|j|jƒƒdS)N)rŽr�)rrrrÚ end_string™sz_PlistParser.end_stringcCs2|jr|jt|jƒƒƒn|jtj|jƒƒƒdS)N)r}rŽrDr�rrE)rrrrÚend_dataœsz_PlistParser.end_datacCs|jt|jƒƒƒdS)N)rŽrjr�)rrrrÚend_date£sz_PlistParser.end_dateN)r"r#r$r'r„rƒr€r�r‚rŽr�r‘r“r”r–r—r˜r™ršrœr�ržrŸrrrrry8s( ryc@s8eZdZddd„Zdd„Zdd„Zdd d „Zd d „Zd S)Ú_DumbXMLWriterrú cCs||_g|_||_||_dS)N)ÚfilerzÚ _indent_levelÚindent)rr¢Ú indent_levelr¤rrrr'¨sz_DumbXMLWriter.__init__cCs,|jj|ƒ|jd|ƒ|jd7_dS)Nz<%s>rŠ)rzrTÚwritelnr£)rr‡rrrÚ begin_element®s z_DumbXMLWriter.begin_elementcCs |jd8_|jd|ƒdS)NrŠz)r£r¦)rr‡rrrÚ end_element³sz_DumbXMLWriter.end_elementNcCs8|dk r&t|ƒ}|jd|||fƒn|jd|ƒdS)Nz <%s>%sz<%s/>)rxr¦)rr‡rrrrÚsimple_element¹sz_DumbXMLWriter.simple_elementcCsH|r8t|tƒr|jdƒ}|jj|j|jƒ|jj|ƒ|jjdƒdS)Nzutf-8ó )r+r,r[r¢r7r£r¤)rÚlinerrrr¦Ás    z_DumbXMLWriter.writeln)rr¡)N)r"r#r$r'r§r¨r©r¦rrrrr §s   r c@sFeZdZddd„Zdd „Zd d „Zd d „Zdd„Zdd„Zdd„Z dS)Ú _PlistWriterró rŠTFcCs.|r|jtƒtj||||ƒ||_||_dS)N)r7Ú PLISTHEADERr r'Ú _sort_keysÚ _skipkeys)rr¢r¥r¤Z writeHeaderr=r>rrrr'Îs  z_PlistWriter.__init__cCs"|jdƒ|j|ƒ|jdƒdS)Nzz)r¦Ú write_value)rrrrrr7Øs  z_PlistWriter.writecCs4t|tƒr|jd|ƒ�n|dkr0|jdƒ�n|dkrD|jdƒnìt|tƒr‚d|ko`dknrx|jd d |ƒnt|ƒ‚n®t|tƒrž|jd t|ƒƒn’t|tƒr´|j|ƒn|t|t ƒrÊ|j |ƒnft|t t fƒrä|j |ƒnLt|tjƒ�r|jd t|ƒƒn,t|ttfƒ�r |j|ƒntd t|ƒƒ‚dS)NÚstringTÚtrueFZfalserŠé?é@Zintegerz%dÚrealZdatezunsupported type: %sr‹lûÿÿÿl)r+r,r©reÚ OverflowErrorr›rMÚdictÚ write_dictrÚ write_datarBÚ bytearrayÚ write_bytesrfrlÚtupleÚlistÚ write_arrayrCrŒ)rrrrrr±Ýs.           z_PlistWriter.write_valuecCs|j|jƒdS)N)r¼r?)rr?rrrrºsz_PlistWriter.write_datacCs~|jdƒ|jd8_tddt|jjdd ƒ|jƒƒ}x&t||ƒjdƒD]}|rL|j|ƒqLW|jd7_|j dƒdS) Nr?rŠérFr­ó érªs ) r§r£ÚmaxrSr¤rurGÚsplitr¦r¨)rr?rHr«rrrr¼s z_PlistWriter.write_bytescCs†|rx|jdƒ|jr"t|jƒƒ}n|jƒ}x@|D]8\}}t|tƒsR|jrJq0tdƒ‚|jd|ƒ|j |ƒq0W|j dƒn |jdƒdS)Nr¸zkeys must be stringsrh) r§r¯ÚsortedÚitemsr+r,r°rCr©r±r¨)rrkrÆrhrrrrr¹s    z_PlistWriter.write_dictcCs@|r2|jdƒx|D]}|j|ƒqW|jdƒn |jdƒdS)NÚarray)r§r±r¨r©)rrÇrrrrr¿&s    z_PlistWriter.write_arrayN)rr­rŠTF) r"r#r$r'r7r±rºr¼r¹r¿rrrrr¬Ís % r¬cCs”d }x|D]}|j|ƒr dSq WxntjdftjdftjdffD]N\}}|j|ƒsRq>x8|D]0}||jdƒj|ƒ}|dt|ƒ…|krXdSqXWq>WdS) Nó6xBBQQQiàÿÿÿ)Ú_fpÚseekÚosÚSEEK_ENDÚreadrSrÚstructÚunpackÚ _ref_sizeÚ _read_intsÚ_object_offsetsÚ _undefinedÚ_objectsÚ _read_objectÚOSErrorÚ IndexErrorÚerrorr·rt)rr0ÚtrailerÚ offset_sizeÚ num_objectsÚ top_objectÚoffset_table_offsetrrrr„fs      z_BinaryPlistParser.parsecCsL|dkrH|jjdƒdd@}d|>}dt|}tj||jj|ƒƒdS|S)z$ return the size of the next object.érŠrrPrq)rßrãÚ_BINARY_FORMATrärå)rÚtokenLrwrWrArrrÚ _get_sizes  z_BinaryPlistParser._get_sizecsv|jjˆ|ƒ‰ˆtkr2tjd|›tˆ›�ˆƒSˆ sHtˆƒˆ|krNtƒ‚t‡‡fdd„tdˆ|ˆƒDƒƒSdS)Nrqc3s&|]}tjˆ||ˆ…dƒVqdS)ÚbigN)reÚ from_bytes)Ú.0rY)r?Úsizerrú �sz0_BinaryPlistParser._read_ints..r) rßrãrõrärårSrr½rR)rÚnrûr)r?rûrrç‰sz_BinaryPlistParser._read_intscCs|j||jƒS)N)rçræ)rrýrrrÚ _read_refs“sz_BinaryPlistParser._read_refsc søˆj|}|tk r|Sˆj|}ˆjj|ƒˆjjdƒd}|d@|d@}}|dkr^d}�nŒ|dkrnd}�n||dkr~d }�nl|dkrŽd }�n\|d krºtjˆjjd|>ƒd |d kd�}�n0|dkrÞtj dˆjjdƒƒd}�n |dk�rtj dˆjjdƒƒd}�næ|dk�rDtj dˆjjdƒƒd}t j dddƒt j |d�}�n¦|dk�rŒˆj |ƒ}ˆjj|ƒ}t |ƒ|k�rxtƒ‚ˆj�sêt|ƒ}�n^|dk�rΈj |ƒ}ˆjj|ƒ} t | ƒ|k�rÀtƒ‚| jdƒ}�n|dk�rˆj |ƒd}ˆjj|ƒ} t | ƒ|k�rtƒ‚| jdƒ}nØ|dk�rXˆj |ƒ}ˆj|ƒ} g}|ˆj|<|j‡fdd„| Dƒƒn’|d k�räˆj |ƒ}ˆj|ƒ} ˆj|ƒ} ˆjƒ}|ˆj|<y2x,t| | ƒD]\} } ˆj| ƒ|ˆj| ƒ<�q WWntk �ràtƒ‚YnXntƒ‚|ˆj|<|S)!zx read the object by reference. May recursively read sub-objects (content of an array/dict/set) rŠréðrôNrÂFé TrQrÀrørP)Úsignedé"z>frOé#z>dé3iÑ)ZsecondsrµéPrÊé`rzutf-16beé c3s|]}ˆj|ƒVqdS)N)rë)rúÚx)rrrrüãsz2_BinaryPlistParser._read_object..éÐ)rêrérèrßràrãrerùrärårfZ timedeltar÷rSrr}rrÐrþÚextendr~ÚziprërC)rÚrefÚresultÚoffsetÚtokenZtokenHrörArWr?Zobj_refsZkey_refsÚkÚor)rrrë–s‚                          z_BinaryPlistParser._read_objectN) r"r#r$r8r'r„r÷rçrþrërrrrrÝZs  rÝcCs0|dkr dS|dkrdS|d>d>r(dSdSdS) NrŠrÂrÀrrÞrOéir)ÚcountrrrÚ_count_to_sizeüs rc@s<eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd S)Ú_BinaryPlistWritercCs||_||_||_dS)N)rßr¯r°)rr0r=r>rrrr' sz_BinaryPlistWriter.__init__c Csäg|_i|_i|_|j|ƒt|jƒ}dg||_t|ƒ|_t|j|_ |j j dƒx|jD]}|j |ƒq\W|j |ƒ}|j jƒ}t|ƒ}dt||}|j j tj|f|jžŽƒd}|||j|||f} |j j tjd| žŽƒdS)Nrsbplist00rqú >5xBBBQQQ)r)Ú_objlistÚ _objtableÚ _objidtableÚ_flattenrSrèrrærõÚ _ref_formatrßr7Ú _write_objectÚ _getrefnumÚtellräÚpack) rrrñÚobjròrórðZ offset_formatZ sort_versionrïrrrr7s(          z_BinaryPlistWriter.writec Cs~t|tƒr"t|ƒ|f|jkrZdSn8t|tƒrHt|jƒ|jf|jkrZdSnt|ƒ|jkrZdSt|j ƒ}|j j |ƒt|tƒrŽ||jt|ƒ|f<n0t|tƒr°||jt|jƒ|jf<n||jt|ƒ<t|t ƒ�rPg}g}|j ƒ}|j rèt|ƒ}xB|D]:\}}t|tƒ�s|j�r qîtdƒ‚|j |ƒ|j |ƒqîWxLtj||ƒD]}|j|ƒ�q:Wn*t|ttfƒ�rzx|D]}|j|ƒ�qfWdS)Nzkeys must be strings)r+Ú_scalarsrŒrrr?ÚidrrSrrTr¸rÆr¯rÅr,r°rCÚ itertoolsÚchainrr¾r½) rrZrefnumÚkeysÚvaluesrÆrÚvrrrrr>sB          z_BinaryPlistWriter._flattencCsNt|tƒr|jt|ƒ|fSt|tƒr<|jt|jƒ|jfS|jt|ƒSdS)N)r+r!rrŒrr?rr")rrrrrrns   z_BinaryPlistWriter._getrefnumcCs´|dkr"|jjtjd||BƒƒnŽ|dkrH|jjtjd|dBd|ƒƒnh|dkrn|jjtjd|dBd|ƒƒnB|dkr”|jjtjd |dBd |ƒƒn|jjtjd |dBd |ƒƒdS)Nrôz>BrŠrÂz>BBBrÀz>BBHérÞz>BBLéz>BBQéril)rßr7rär)rrrûrrrÚ _write_sizevsz_BinaryPlistWriter._write_sizec sèˆj|ƒ}ˆjjƒˆj|<|dkr2ˆjjdƒ�n²|dkrJˆjjdƒ�nš|dkrbˆjjdƒ�n‚t|tƒ�rl|dkr´yˆjjtjdd|ƒƒWn tj k r°t |ƒd‚YnXn´|d'krÔˆjjtjd d |ƒƒn”|d(krôˆjjtjd d|ƒƒnt|d)k�rˆjjtjdd|ƒƒnR|d*k�r8ˆjjtjdd|ƒƒn0|d+k�r`ˆjjd|j d ddd�ƒnt |ƒ‚�nxt|t ƒ�r’ˆjjtjdd|ƒƒ�nRt|t j ƒ�rÐ|t j dd d ƒjƒ}ˆjjtjdd|ƒƒ�nt|tƒ�rˆjdt|jƒƒˆjj|jƒ�nät|ttfƒ�r0ˆjdt|ƒƒˆjj|ƒ�n´t|tƒ�r y|jdƒ}ˆjdt|ƒƒWn4tk �rŽ|jdƒ}ˆjdt|ƒd ƒYnXˆjj|ƒ�nDt|ttfƒ�rú‡fd!d"„|Dƒ}t|ƒ}ˆjd#|ƒˆjjtjd$ˆj|f|žŽƒnêt|tƒ�rÜgg}}ˆj�r&t|jƒƒ} n|jƒ} xR| D]J\} } t| tƒ�s\ˆj�rT�q4t d%ƒ‚|j!ˆj| ƒƒ|j!ˆj| ƒƒ�q4Wt|ƒ}ˆjd&|ƒˆjjtjd$ˆj|f|žŽƒˆjjtjd$ˆj|f|žŽƒnt |ƒ‚dS),NóFóTr­rz>Bqr*rŠrÂz>BBrÀz>BHr(rÞz>BLr)r´z>BQrµórø)rz>BdriÑrrÊrzutf-16berrcsg|]}ˆj|ƒ‘qSr)r)rúr)rrrú ¿sz4_BinaryPlistWriter._write_object..rrqzkeys must be stringsr rilll)"rrßrrèr7r+rerärrîr·Úto_bytesr›rfZ total_secondsrr+rSr?rBr»r,r[ÚUnicodeEncodeErrorr¾r½rr¸r¯rÅrÆr°rCrT) rrr rAÚtZrefsrWZkeyRefsZvalRefsZ rootItemsrr'r)rrr†s„            $    "$z _BinaryPlistWriter._write_objectN) r"r#r$r'r7rrr+rrrrrr s -0rcCs|dd…dkS)NrÂsbplist00r)rÑrrrÚ_is_fmt_binaryÝsr3)ÚdetectrÚwriterT)r:r;r<cCsn|dkrL|jdƒ}|jdƒx:tjƒD]}|d|ƒr&|d}Pq&Wtƒ‚n t|d}|||d�}|j|ƒS)z„Read a .plist file. 'fp' should be (readable) file object. Return the unpacked root object (which usually is a dictionary). NrÞrr4r)r;r<)rãràÚ_FORMATSr&rr„)r0r:r;r<rÑÚinfoÚPÚprrrr ós     cCst|ƒ}t||||d�S)zqRead a .plist file from a bytes object. Return the unpacked root object (which usually is a dictionary). )r:r;r<)rr )rr:r;r<r0rrrr sF)r:r=r>cCs:|tkrtd|fƒ‚t|d|||d�}|j|ƒdS)zQWrite 'value' to a .plist file. 'fp' should be a (writable) file object. zUnsupported format: %rr5)r=r>N)r6rtr7)rr0r:r=r>r5rrrr s)r:r>r=cCs tƒ}t|||||d�|jƒS)z?Return a bytes object with the contents for a .plist file. )r:r>r=)rr r@)rr:r>r=r0rrrrs)rF)Er8Ú__all__rUrÌÚ contextlibrfÚenumÚiorr#ráÚreräÚwarningsrZxml.parsers.expatrÚEnumr"rÚglobalsr3Ú __members__r¸rrÚcontextmanagerr1rrrrrrr®ÚcompilerrrGrDÚASCIIrbrjrlrxryr r¬rÖrtrrõÚobjectrérÝrr,rer›rBr!rr3r r r6r r r rrrrrÚ/sz          0    o&d!# S