Ë ‚Ö¦i¦oãó¦—dZgd¢ZddlZddlZddlZddlZddlmZddlZddl Z ddl Z ddl Z ddl m Z ejdde¬«Ze«j%ej&«d ZGd „d «Zd Ze j.d «Zd2d„Zd„Ze j.de j6«Zd„Zd„Zd„ZGd„d«Z Gd„d«Z!Gd„de!«Z"d„Z#Gd„de$«Z%dddd d!œZ&e'«Z(Gd"„d#«Z)d$„Z*e+e,e-eje.fZ/Gd%„d&e'«Z0d'„Z1e2e3e#e e"¬(«e4e3e1e)e0¬(«iZ5de3d)œd*„Z6de3d)œd+„Z7e2d,d-d.œd/„Z8e2d-d,d0œd1„Z9y)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 = "", aThirdString = "M\xe4ssig, Ma\xdf", aTrueValue = True, aFalseValue = False, ), someData = b"", someMoreData = b"" * 10, aDate = datetime.datetime.now() ) print(plistlib.dumps(pl).decode()) Parse Plist example: import plistlib plist = b''' foo bar ''' pl = plistlib.loads(plist) print(pl["foo"]) )ÚInvalidFileExceptionÚFMT_XMLÚ FMT_BINARYÚloadÚdumpÚloadsÚdumpsÚUIDéN)ÚBytesIO)Ú ParserCreateÚ PlistFormatzFMT_XML FMT_BINARY)Úmoduleicó0—eZdZd„Zd„Zd„Zd„Zd„Zd„Zy)r cóˆ—t|t«s td«‚|dk\r td«‚|dkr td«‚||_y)Nzdata must be an intìzUIDs cannot be >= 2**64r úUIDs must be positive)Ú isinstanceÚintÚ TypeErrorÚ ValueErrorÚdata©Úselfrs ú!/usr/lib64/python3.12/plistlib.pyÚ__init__z UID.__init__QsE€Ü˜$¤Ô$ÜÐ1Ó2Ð 2Ø �7Š?ÜÐ6Ó7Ð 7Ø �!Š8ÜÐ4Ó5Ð 5؈� ócó—|jS©N)r©rs rÚ __index__z UID.__index__Zs €Ø�y‰yÐrcó`—|jj›dt|j«›d�S)NÚ(Ú))Ú __class__Ú__name__Úreprrrs rÚ__repr__z UID.__repr__]s€ØŸ>™>×2Ó2´D¸¿¹µOÐDÐDrcó4—|j|jffSr)r$rrs rÚ __reduce__zUID.__reduce__`s€Ø�~‰~ § ¡ ˜|Ð+Ð+rcó`—t|t«stS|j|jk(Sr)rr ÚNotImplementedr)rÚothers rÚ__eq__z UID.__eq__cs%€Ü˜%¤Ô%Ü!Ð !Ø�y‰y˜EŸJ™JÑ&Ð&rcó,—t|j«Sr)Úhashrrs rÚ__hash__z UID.__hash__hs€Ü�D—I‘I‹ÐrN) r%Ú __module__Ú __qualname__rr r'r)r-r0©rrr r Ps!„òòòEò,ò'ó rr 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]cóÆ—|dzdz}g}tdt|«|«D].}||||z}|jtj|««Œ0dj |«S)Néér r)ÚrangeÚlenÚappendÚbinasciiÚ b2a_base64Újoin)ÚsÚ maxlinelengthÚ maxbinsizeÚpiecesÚiÚchunks rÚ_encode_base64rC|se€à Ñ" AÑ%€JØ €FÜ �1”c˜!“f˜jÖ )ˆØ�!�a˜*‘nÐ%ˆØ� ‰ ”h×)Ñ)¨%Ó0Õ1ð*ð �8‰8�FÓ Ðrcó”—t|t«r$tj|j d««Stj|«S)Núutf-8)rÚstrr:Ú a2b_base64Úencode)r=s rÚ_decode_base64rI…s9€Ü�!”SÔÜ×"Ñ" 1§8¡8¨GÓ#4Ó5Ð5ô×"Ñ" 1Ó%Ð%rz{(?P\d\d\d\d)(?:-(?P\d\d)(?:-(?P\d\d)(?:T(?P\d\d)(?::(?P\d\d)(?::(?P\d\d))?)?)?)?)?ZcóÈ—d}tj|«j«}g}|D]%}||}|€n|jt |««Œ't j |ŽS)N©ÚyearÚmonthÚdayÚhourÚminuteÚsecond)Ú _dateParserÚmatchÚ groupdictr9rÚdatetime)r=ÚorderÚgdÚlstÚkeyÚvals rÚ_date_from_stringr[’sc€Ø @€EÜ × Ñ ˜1Ó × 'Ñ 'Ó )€BØ €CÛˆØ�‰gˆØ ˆ;Ù Ø � ‰ ”3�s“8Õð ô × Ñ ˜cÐ "Ð"rcó�—d|j|j|j|j|j|j fzS)Nz%04d-%02d-%02dT%02d:%02d:%02dZrK)Úds rÚ_date_to_stringr^žs:€Ø +Ø �‰�—‘˜Ÿ™Ø �‰�—‘˜!Ÿ(™(ð/ñ ðrcóþ—tj|«}|� td«‚|jdd«}|jdd«}|jdd«}|jdd«}|jd d «}|S) Nz;strings can't contain control characters; use bytes insteadz Ú Ú Ú&z&Úz>)Ú_controlCharPatÚsearchrÚreplace)ÚtextÚms rÚ_escaperj¤s~€Ü×јtÓ$€AØ€}Üð-ó.ð .à �<‰<˜ Ó %€DØ �<‰<˜˜dÓ #€DØ �<‰<˜˜WÓ %€DØ �<‰<˜˜VÓ $€DØ �<‰<˜˜VÓ $€DØ €Krcó„—eZdZd„Zd„Zd„Zd„Zd„Zd„Zd„Z d„Z d „Z d „Z d „Z d „Zd „Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zy)Ú _PlistParsercó<—g|_d|_d|_||_yr)ÚstackÚ current_keyÚrootÚ _dict_type©rÚ dict_types rrz_PlistParser.__init__±s€ØˆŒ ØˆÔØˆŒ Ø#ˆ�rcóF—t«|_|j|j_|j|j_|j |j_|j|j_ |jj|«|jSr) r ÚparserÚhandle_begin_elementÚStartElementHandlerÚhandle_end_elementÚEndElementHandlerÚ handle_dataÚCharacterDataHandlerÚhandle_entity_declÚEntityDeclHandlerÚ ParseFilerp)rÚfileobjs rÚparsez_PlistParser.parse·so€Ü"“nˆŒ Ø*.×*CÑ*Cˆ� ‰ Ô'Ø(,×(?Ñ(?ˆ� ‰ Ô%Ø+/×+;Ñ+;ˆ� ‰ Ô(Ø(,×(?Ñ(?ˆ� ‰ Ô%Ø � ‰ ×јgÔ&Ø�y‰yÐrcó—td«‚)Nz8XML entity declarations are not supported in plist files)r)rÚ entity_nameÚis_parameter_entityÚvalueÚbaseÚ system_idÚ public_idÚ notation_names rr|z_PlistParser.handle_entity_declÀs€ô#Ð#]Ó^Ð^rcóH—g|_t|d|zd«}|� ||«yy)NÚbegin_)rÚgetattr)rÚelementÚattrsÚhandlers rrvz!_PlistParser.handle_begin_elementÆs.€ØˆŒ ܘ$ ¨7Ñ 2°DÓ9ˆØ Ð Ù �E�Nð rcó8—t|d|zd«}|�|«yy)NÚend_)r‹)rrŒrŽs rrxz_PlistParser.handle_end_elementÌs%€Ü˜$ ¨Ñ 0°$Ó7ˆØ Ð Ù �Ið rcó:—|jj|«yr)rr9rs rrzz_PlistParser.handle_dataÑs€Ø � ‰ ×јÕrcóÄ—|j�ct|jdt«s"t d|j j z«‚||jd|j<d|_y|js||_yt|jdt«s"t d|j j z«‚|jdj|«y)Néÿÿÿÿzunexpected element at line %d) rorrnÚdictrruÚCurrentLineNumberrpÚlistr9©rr„s rÚ add_objectz_PlistParser.add_objectÔs¾€Ø × Ñ Ð 'ܘdŸj™j¨™n¬dÔ3Ü Ð!@Ø!%§¡×!>Ñ!>ñ"?ó@ð@à/4ˆD�J‰J�r‰N˜4×+Ñ+Ñ ,Ø#ˆDÕ Ø—’àˆD�Iä˜dŸj™j¨™n¬dÔ3Ü Ð!@Ø!%§¡×!>Ñ!>ñ"?ó@ð@à �J‰J�r‰N× !Ñ ! %Õ (rcóJ—dj|j«}g|_|S)NÚ)r<rrs rÚget_dataz_PlistParser.get_dataäs €Ø�w‰w�t—y‘yÓ!ˆØˆŒ ؈ rcó|—|j«}|j|«|jj|«yr)rqr˜rnr9)rr�r]s rÚ begin_dictz_PlistParser.begin_dictës,€Ø �O‰OÓ ˆØ �‰˜ÔØ � ‰ ×ј!Õrcó¬—|jr.td|j|jjfz«‚|jj «y)Nz%missing value for key '%s' at line %d)rorrur•rnÚpoprs rÚend_dictz_PlistParser.end_dictðsI€Ø × Ò ÜÐDØ"×.Ñ.¨t¯{©{×/LÑ/LÐMñNóOð Oà � ‰ �‰ÕrcóÄ—|jst|jdt«s"t d|j j z«‚|j«|_y)Nr“zunexpected key at line %d)rorrnr”rrur•r›rs rÚend_keyz_PlistParser.end_keyösL€Ø × Ò ¤:¨d¯j©j¸©n¼dÔ#CÜÐ8Ø!Ÿ[™[×:Ñ:ñ;ó<ð <àŸ=™=›?ˆÕrcó`—g}|j|«|jj|«yr)r˜rnr9)rr�Úas rÚ begin_arrayz_PlistParser.begin_arrayüs%€Ø ˆØ �‰˜ÔØ � ‰ ×ј!Õrcó8—|jj«yr)rnrŸrs rÚ end_arrayz_PlistParser.end_arrays€Ø � ‰ �‰Õrcó&—|jd«y)NT©r˜rs rÚend_truez_PlistParser.end_trues€Ø �‰˜Õrcó&—|jd«y)NFr©rs rÚ end_falsez_PlistParser.end_falses€Ø �‰˜ÕrcóÔ—|j«}|jd«s|jd«r|jt|d««y|jt|««y)NÚ0xÚ0Xé)r›Ú startswithr˜r)rÚraws rÚ end_integerz_PlistParser.end_integer sF€Ø�m‰m‹oˆØ �>‰>˜$Ô  3§>¡>°$Ô#7Ø �O‰OœC  R›LÕ )à �O‰OœC ›HÕ %rcóT—|jt|j«««yr)r˜Úfloatr›rs rÚend_realz_PlistParser.end_reals€Ø �‰œ˜dŸm™m›oÓ.Õ/rcóB—|j|j««yr)r˜r›rs rÚ end_stringz_PlistParser.end_strings€Ø �‰˜Ÿ ™ ›Õ(rcóT—|jt|j«««yr)r˜rIr›rs rÚend_dataz_PlistParser.end_datas€Ø �‰œ t§}¡}£Ó7Õ8rcóT—|jt|j«««yr)r˜r[r›rs rÚend_datez_PlistParser.end_dates€Ø �‰Ô)¨$¯-©-«/Ó:Õ;rN)r%r1r2rr€r|rvrxrzr˜r›r�r r¢r¥r§rªr¬r³r¶r¸rºr¼r3rrrlrl°sg„ò$ò ò_ò ò ò ò)ò òò ò +ò ò òòò&ò0ò)ò9óé)rnr9ÚwritelnrÁ©rrŒs rÚ begin_elementz_DumbXMLWriter.begin_element%s6€Ø � ‰ ×ј'Ô"Ø � ‰ �V˜gÑ%Ô&Ø ×Ò˜aÑÖrcóV—|xjdzc_|jd|z«y)NrÅz)rÁrÆrÇs rÚ end_elementz_DumbXMLWriter.end_element*s&€ð ×Ò˜aÑÕØ � ‰ �W˜wÑ&Õ'rNc ó~—|�'t|«}|jd|›d|›d|›d�«y|jd|z«y)Nrcrdz)rjrÆ)rrŒr„s rÚsimple_elementz_DumbXMLWriter.simple_element0s7€Ø РܘE“NˆEØ �LŠLª'²5º'ÐBÕ Cð �L‰L˜ 7Ñ*Õ +rcó—|rnt|t«r|jd«}|jj |j |j z«|jj |«|jj d«y)NrEó )rrFrHrÀÚwriterÁrÂ)rÚlines rrÆz_DumbXMLWriter.writeln8s^€Ù ô˜$¤Ô$Ø—{‘{ 7Ó+�Ø �I‰I�O‰O˜D×.Ñ.°·±Ñ<Ô =Ø �I‰I�O‰O˜DÔ !Ø � ‰ �‰˜Õr)r Ú r)r%r1r2rrÈrÊrÌrÆr3rrr¾r¾s„óò  ò (ó ,ó rr¾có6—eZdZ dd„Zd„Zd„Zd„Zd„Zd„Zy) Ú _PlistWritercó~—|r|jt«tj||||«||_||_yr)rÏÚ PLISTHEADERr¾rÚ _sort_keysÚ _skipkeys)rrÀrÃrÂÚ writeHeaderÚ sort_keysÚskipkeyss rrz_PlistWriter.__init__Es5€ñ Ø �J‰J”{Ô #Ü×Ñ  d¨L¸&ÔAØ#ˆŒØ!ˆ�rcój—|jd«|j|«|jd«y)Nzz)rÆÚ write_valuer—s rrÏz_PlistWriter.writeOs)€Ø � ‰ Ð.Ô/Ø ×Ñ˜ÔØ � ‰ �ZÕ rcó—t|t«r|jd|«y|dur|jd«y|dur|jd«yt|t«r9d|cxkrdkr#n t |«‚|jdd |z«yt |«‚t|t «r|jd t |««yt|t«r|j|«yt|ttf«r|j|«yt|tj«r|jd t|««yt|ttf«r|j!|«yt#d t%|«z«‚) NÚstringTÚtrueFÚfalselûÿÿÿrÚintegerz%dÚrealÚdatezunsupported type: %s)rrFrÌrÚ OverflowErrorrµr&r”Ú write_dictÚbytesÚ bytearrayÚ write_bytesrUr^Útupler–Ú write_arrayrÚtyper—s rrÜz_PlistWriter.write_valueTs4€Ü �eœSÔ !Ø × Ñ  ¨%Õ 0à �d‰]Ø × Ñ  Õ 'à �e‰^Ø × Ñ  Õ (ä ˜œsÔ #ؘ5Ô* 7Ô*ô$ EÓ*Ð*ð×#Ñ# I¨t°e©|Õ<ä# EÓ*Ð*ä ˜œuÔ %Ø × Ñ  ¬¨U« Õ 4ä ˜œtÔ $Ø �O‰O˜EÕ "ä ˜¤¤yÐ1Ô 2Ø × Ñ ˜UÕ #ä ˜œx×0Ñ0Ô 1Ø × Ñ  ¬¸Ó(>Õ ?ä ˜¤¤t˜}Ô -Ø × Ñ ˜UÕ #ôÐ2´T¸%³[Ñ@ÓAÐ Arc ó‚—|jd«|xjdzc_tddt|jj dd«|jz«z «}t ||«jd«D]}|sŒ|j|«Œ|xjdz c_|jd«y)NrrÅr°éLó s rÎ) rÈrÁÚmaxr8rÂrgrCÚsplitrÆrÊ)rrr>rÐs rrèz_PlistWriter.write_bytesvs§€Ø ×ј6Ô"Ø ×Ò˜aÑÕÜØ Ø ”�T—[‘[×(Ñ(¨°Ó9¸D×6xBBQQQ)Ú_fpÚseekÚosÚSEEK_ENDÚreadr8rÚ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 rr€z_BinaryPlistParser.parseÖsÝ€ð )ð ˆDŒHØ �H‰H�M‰M˜#œrŸ{™{Ô +Ø—h‘h—m‘m BÓ'ˆGÜ�7‹|˜rÒ!Ü*Ó,Ð,ô— ‘ ˜j¨'Ó2ñ ؘTœ^¨[¸*Ø#à �H‰H�M‰MÐ-Ô .Ø#'§?¡?°;À Ó#LˆDÔ Ü'˜L¨;Ñ6ˆDŒMØ×$Ñ$ ZÓ0Ð 0øäœ¤V§\¡\´=Üðò )ä&Ó(Ð (ð )ús ‚CCÃ3D cóØ—|dk(rd|jjd«ddz}d|z}dt|z}tj||jj|««dS|S)z$ return the size of the next object.érÅr r6rd)rrÚ_BINARY_FORMATrr)rÚtokenLrir=Úfs rÚ _get_sizez_BinaryPlistParser._get_sizeïse€à �SŠ=Ø—‘— ‘ ˜aÓ  Ñ# cÑ)ˆAØ�Q‘ˆAØ”n QÑ'Ñ'ˆAÜ—=‘=  D§H¡H§M¡M°!Ó$4Ó5°aÑ8Ð 8àˆ rcóö—t|t«}|jj|«} t |«|k7rt ‚||k(r|St|||z «}||jj|«z }||z }ŒNr)ÚminÚ_MIN_READ_BUF_SIZErrr8r)rÚsizeÚcursizerÚdeltas rÚ_readz_BinaryPlistParser._readùsx€Ü�dÔ.Ó/ˆØ�x‰x�}‰}˜WÓ%ˆØÜ�4‹y˜GÒ#Ü*Ð*ؘ$ŠØ� ܘ ¨¡Ó0ˆEØ �D—H‘H—M‘M %Ó(Ñ (ˆDØ �uÑ ˆGðrcóà‡‡—|j‰|z«Š‰tvr"tjd|›t‰›�‰«S‰s t «‚t ˆˆfd„t d‰|z‰«D««S)Nrdc3óV•K—|] }tj‰||‰zd«–—Œ"y­w)ÚbigN)rÚ from_bytes)Ú.0rArr3s €€rÚ z0_BinaryPlistParser._read_ints.. s/øèø€ð<Ù":˜QôŸ™¨¨Q°°D±Ð(9¸5×AÙ":ùsƒ&)r )r6r,rrrrér7)rÚnr3rs `@rrz_BinaryPlistParser._read_intssrù€Ø�z‰z˜$ ™(Ó#ˆØ ”>Ñ !Ü—=‘= 1 Q C¬°tÑ(<Ð'=Ð!>ÀÓEÐ EáÜ*Ó,Ð,Üô<Ü"'¨¨4°!©8°TÔ":ó<ó<ð fr5é#z>dé3éÑ)Úsecondsé@éPrøé`r úutf-16beé€é c3ó@•K—|]}‰j|«–—Œy­wr)r )r;Úxrs €rr<z2_BinaryPlistParser._read_object..Xsøèø€ÐA¹°1˜$×+Ñ+¨A×.¹ùsƒéÐ)rrrrrrrr:rrrUÚ timedeltar/r6rýr r?ÚextendrqÚzipr rr)rÚrefÚresultÚoffsetÚtokenÚtokenHr-r.r=rÚobj_refsÚkey_refsÚkÚos` rr z_BinaryPlistParser._read_objects3ø€ð —‘˜sÑ#ˆØ œÑ #؈Mà×%Ñ% cÑ*ˆØ �‰� ‰ �fÔØ—‘— ‘ ˜aÓ  Ñ#ˆØ ™ u¨t¡|�ˆà �DŠ=ØŠFà �dŠ]ØŠFà �dŠ]ØŠFð �dŠ]ØŠFà �tŠ^Ü—^‘^ D§H¡H§M¡M°!°v±+Ó$>Ø$)°&¸A±+ð$ó?ŠFð�dŠ]Ü—]‘] 4¨¯©¯©°qÓ)9Ó:¸1Ñ=ŠFà �dŠ]Ü—]‘] 4¨¯©¯©°qÓ)9Ó:¸1Ñ=ŠFà �dŠ]Ü— ‘ ˜d D§H¡H§M¡M°!Ó$4Ó5°aÑ8ˆAô×'Ñ'¨¨a°Ó3Ü×(Ñ(°Ô3ñ4ŠFð�tŠ^Ø—‘˜vÓ&ˆAØ—Z‘Z “]ŠFà �tŠ^Ø—‘˜vÓ&ˆAØ—:‘:˜a“=ˆDØ—[‘[ Ó)ŠFà �tŠ^Ø—‘˜vÓ&¨Ñ*ˆAØ—:‘:˜a“=ˆDØ—[‘[ Ó,ŠFà �tŠ^䜟™¨¯©¯ © °a¸&±jÓ(AÀ5ÓIÓJ‰Fà �tŠ^Ø—‘˜vÓ&ˆAØ—‘ qÓ)ˆH؈FØ!'ˆD�M‰M˜#Ñ Ø �M‰MÓA¹ÓAÕ Að�tŠ^Ø—‘˜vÓ&ˆAØ—‘ qÓ)ˆHØ—‘ qÓ)ˆHØ—_‘_Ó&ˆFØ!'ˆD�M‰M˜#Ñ ð -Ü ¨(Ö3‘D�A�qØ37×3DÑ3DÀQÓ3G�F˜4×,Ñ,¨QÓ/Ò0ñ4ô 'Ó(Ð (à#ˆ� ‰ �cÑØˆ øô ò -Ü*Ó,Ð,ð -ús Ì47NÎNN) r%r1r2Ú__doc__rr€r/r6rr?r r3rrrrËs+„ñò$ò)ò2ò ò<ò2ó]rrcó(—|dkry|dkry|dkryy)NérÅér ìr5rr3)Úcounts rÚ_count_to_sizereqs%€Ø ˆv‚~Øà �ŠØà �ŠØðrcó0—eZdZd„Zd„Zd„Zd„Zd„Zd„Zy)Ú_BinaryPlistWritercó.—||_||_||_yr)rrÖr×)rr$rÙrÚs rrz_BinaryPlistWriter.__init__�s€ØˆŒØ#ˆŒØ!ˆ�rcóÜ—g|_i|_i|_|j|«t |j«}dg|z|_t |«|_t|j|_ |jjd«|jD]}|j|«Œ|j|«}|jj«}t |«}dt||zz}|jjtj |g|j ¢­Ž«d}|||j|||f} |jjtj dg| ¢­Ž«y)Nr óbplist00rdz >5xBBBQQQ)Ú_objlistÚ _objtableÚ _objidtableÚ_flattenr8rrerr,Ú _ref_formatrrÏÚ _write_objectÚ _getrefnumÚtellrÚpack) rr„r'Úobjr(r)r&Ú offset_formatÚ sort_versionr%s rrÏz_BinaryPlistWriter.write†s9€ðˆŒ 𠈌؈Ôð � ‰ �eÔô˜$Ÿ-™-Ó(ˆ Ø !˜s ;™ˆÔÜ'¨ Ó4ˆŒä)¨$¯.©.Ñ9ˆÔð �‰�‰�{Ô#ð—=”=ˆCØ × Ñ ˜sÕ #ð!ð—_‘_ UÓ+ˆ Ø"Ÿh™hŸm™m›oÐÜ$Ð%8Ó9ˆ Øœn¨[Ñ9¸KÑGÑGˆ Ø �‰�‰”v—{‘{ =ÐH°4×3GÑ3GÒHÔIðˆ à ˜+ t§~¡~°{Ø Ð+ð ˆð �‰�‰”v—{‘{ ;Ð9°Ò9Õ:rcóD—t|t«rt|«|f|jvryt |«|j vryt |j«}|jj|«t|t«r||jt|«|f<n||j t |«<t|t«r¬g}g}|j«}|jr t|«}|D]O\}}t|t«s|jrŒ#td«‚|j|«|j|«ŒQt!j"||«D]}|j%|«Œyt|t&t(f«r|D]}|j%|«Œyy)Nrò)rÚ_scalarsrërlÚidrmr8rkr9r”rôrÖrórFr×rÚ itertoolsÚchainrnr–ré) rr„ÚrefnumÚkeysÚvaluesrôr]Úvr^s rrnz_BinaryPlistWriter._flatten³sV€ô �eœXÔ &Ü�U“ ˜UÐ# t§~¡~Ñ5Øä �‹Y˜$×*Ñ*Ñ *Ø ô�T—]‘]Ó#ˆØ � ‰ ×јUÔ#Ü �eœXÔ &Ø39ˆD�N‰NœD ›K¨Ð/Ò 0à*0ˆD× Ñ œR ›YÑ 'ô �eœTÔ "؈D؈FØ—K‘K“MˆEØ�ŠÜ˜u› �ã‘��1Ü! !¤SÔ)Ø—~’~Ø Ü#Ð$:Ó;Ð;Ø— ‘ ˜A”Ø— ‘ ˜aÕ ð ô—_‘_ T¨6Ö2�Ø— ‘ ˜aÕ ñ3ô˜¤¤e˜}Ô -Û�Ø— ‘ ˜aÕ ñð.rcó†—t|t«r|jt|«|fS|jt |«Sr)rrxrlrërmryr—s rrqz_BinaryPlistWriter._getrefnumÝs9€Ü �eœXÔ &Ø—>‘>¤4¨£;°Ð"6Ñ7Ð 7à×#Ñ#¤B u£IÑ.Ð .rcó8—|dkr3|jjtjd||z««y|dkr5|jjtjd|dzd|««y|dkr5|jjtjd|dzd|««y|d kr5|jjtjd |dzd |««y|jjtjd |dzd |««y)Nr+z>Braz>BBBr°rbz>BBHércz>BBLéz>BBQé)rrÏrrs)rrYr3s rÚ _write_sizez_BinaryPlistWriter._write_sizeãsË€Ø �"Š9Ø �H‰H�N‰Nœ6Ÿ;™; t¨U°T©\Ó:Õ ;à �FŠ]Ø �H‰H�N‰Nœ6Ÿ;™; v¨u°s©{¸DÀ$ÓGÕ Hà �GŠ^Ø �H‰H�N‰Nœ6Ÿ;™; v¨u°s©{¸DÀ$ÓGÕ Hà �GŠ^Ø �H‰H�N‰Nœ6Ÿ;™; v¨u°s©{¸DÀ$ÓGÕ Hð �H‰H�N‰Nœ6Ÿ;™; v¨u°s©{¸DÀ$ÓGÕ HrcóÈ —|j|«}|jj«|j|<|€|jj d«y|dur|jj d«y|dur|jj d«yt |t «�rP|dkr2 |jj tjdd|««y|d kr1|jj tjd d |««y|d kr1|jj tjd d|««y|dkr1|jj tjdd|««y|dkr1|jj tjdd|««y|dkr1|jj d|jd dd¬«z«yt|«‚t |t«r1|jj tjdd|««yt |tj«rY|tjddd«z j«}|jj tjdd|««yt |tt f«r7|j#dt%|««|jj |«yt |t&«rI |j)d«}|j#dt%|««|jj |«yt |t,«�r%|j.dkr t1d#«‚|j.d kr1|jj tjd d$|««y|j.d kr1|jj tjd d%|««y|j.dkr1|jj tjdd&|««y|j.dkr1|jj tjdd'|««yt|«‚t |t2t4f«r{|D�cgc]}|j|«‘Œ}}t%|«}|j#d(|«|jj tjd)|j6|zzg|¢­Ž«yt |t8«�rHgg} }|j:rt=|j?««} n|j?«} | D]m\} } t | t&«s|j@rŒ#tCd*«‚|jE|j| ««| jE|j| ««Œot%|«}|j#d+|«|jj tjd)|j6|zzg|¢­Ž«|jj tjd)|j6|zzg| ¢­Ž«ytC|«‚#tj$r t|«d‚wxYw#t*$r3|j)d «}|j#d!t%|«d"z«Y�Œ¥wxYwcc}w),NóFóTrîr z>Bqr„raz>BBr°rbz>BHr‚rcz>BLrƒlz>BQrór9rCz>BdrFrHrÅrGrJrørKrMrLr rrNé�éƒé‡rOrdròrR)#rqrrrrrÏrrrrsr#räÚto_bytesrµrUÚ total_secondsrærçr…r8rFrHÚUnicodeEncodeErrorr rrr–réror”rÖrórôr×rr9) rr„rVr.Útr^Úrefsr=ÚkeyRefsÚvalRefsÚ rootItemsr]rs rrpz _BinaryPlistWriter._write_objectós€Ø�o‰o˜eÓ$ˆØ$(§H¡H§M¡M£Oˆ×јSÑ!Ø ˆ=Ø �H‰H�N‰N˜7Õ #à �e‰^Ø �H‰H�N‰N˜7Õ #à �d‰]Ø �H‰H�N‰N˜7Õ #ä ˜œsÕ #Ø�qŠyð9Ø—H‘H—N‘N¤6§;¡;¨u°d¸EÓ#BÕCð˜’Ø—‘—‘œvŸ{™{¨5°$¸Ó>Õ?ؘ’Ø—‘—‘œvŸ{™{¨5°$¸Ó>Õ?ؘ’Ø—‘—‘œvŸ{™{¨5°$¸Ó>Õ?ؘ’Ø—‘—‘œvŸ{™{¨5°$¸Ó>Õ?ؘ’Ø—‘—‘˜w¨¯©¸¸EÈ$¨Ó)OÑOÕPä# EÓ*Ð*ä ˜œuÔ %Ø �H‰H�N‰Nœ6Ÿ;™; u¨d°EÓ:Õ ;ä ˜œx×0Ñ0Ô 1Øœ×*Ñ*¨4°°AÓ6Ñ6×EÑEÓGˆAØ �H‰H�N‰Nœ6Ÿ;™; u¨d°AÓ6Õ 7ä ˜¤¤yÐ1Ô 2Ø × Ñ ˜T¤3 u£:Ô .Ø �H‰H�N‰N˜5Õ !ä ˜œsÔ #ð 4Ø—L‘L Ó)�Ø× Ñ  ¤s¨5£zÔ2ð �H‰H�N‰N˜1Õ ä ˜œsÕ #Ø�z‰z˜AŠ~Ü Ð!8Ó9Ð9Ø—‘˜fÒ$Ø—‘—‘œvŸ{™{¨5°$¸Ó>Õ?Ø—‘˜gÒ%Ø—‘—‘œvŸ{™{¨5°$¸Ó>Õ?Ø—‘˜gÒ%Ø—‘—‘œvŸ{™{¨5°$¸Ó>Õ?Ø—‘˜gÒ%Ø—‘—‘œvŸ{™{¨5°$¸Ó>Õ?ä# EÓ*Ð*ä ˜¤¤e˜}Ô -Ù05Ó6±¨1�D—O‘O AÕ&°ˆDÐ6Ü�D“ ˆAØ × Ñ ˜T 1Ô %Ø �H‰H�N‰Nœ6Ÿ;™; s¨T×-=Ñ-=ÀÑ-AÑ'AÐIÀDÒIÕ Jä ˜œtÕ $Ø! 2�WˆGà�ŠÜ" 5§;¡;£=Ó1‘ à!ŸK™K›M� ã!‘��1Ü! !¤SÔ)Ø—~’~Ø Ü#Ð$:Ó;Ð;Ø—‘˜tŸ™¨qÓ1Ô2Ø—‘˜tŸ™¨qÓ1Õ2ð "ô�G“ ˆAØ × Ñ ˜T 1Ô %Ø �H‰H�N‰Nœ6Ÿ;™; s¨T×-=Ñ-=ÀÑ-AÑ'AÐLÀGÒLÔ MØ �H‰H�N‰Nœ6Ÿ;™; s¨T×-=Ñ-=ÀÑ-AÑ'AÐLÀGÒLÕ Mô˜EÓ"Ð "øô]—|‘|ò9Ü'¨Ó.°DÐ8ð9ûô<&ò 4Ø—L‘L Ó,�Ø× Ñ  ¤s¨1£v°¡{×3ð 4üò*7s$Â.0Y=Ì ,Z Ò"[Ù= ZÚ 8[Û[N) r%r1r2rrÏrnrqr…rpr3rrrgrg€s$„ò"ò +;òZ(!òT/ò Ió ^#rrgcó—|dddk(S)Nrrjr3)rþs rÚ_is_fmt_binaryr–Ts€Ø �"�1ˆ:˜Ñ $Ð$r)ÚdetectruÚwriter©Úfmtrscó—|€W|jd«}|jd«tj«D]}|d|«sŒ|d}nt «‚t|d}||¬«}|j |«S)z�Read a .plist file. 'fp' should be a readable and binary file object. Return the unpacked root object (which usually is a dictionary). rr r—ru)rs)rrÚ_FORMATSr~rr€)r$ršrsrþÚinfoÚPÚps rrrjs€ð €{Ø—‘˜“ˆØ �‰�Œ Ü—O‘OÖ%ˆD؈t�H‰~˜fÕ%ؘ‘N�Ùð&ô 'Ó(Ð (ô �S‰M˜(Ñ #ˆá �IÔ€AØ �7‰7�2‹;Ðrcó4—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šrsr$s rrr€s€ô �‹€BÜ �˜ yÔ 1Ð1rTF)ršrÙrÚcóz—|tvrtd|›�«‚t|d|||¬«}|j|«y)zWWrite 'value' to a .plist file. 'fp' should be a writable, binary file object. zUnsupported format: r˜)rÙrÚN)rœrrÏ)r„r$ršrÙrÚr˜s rrrˆs=€ð ”(Ñݱ3Ð8Ó9Ð9ä �c‰]˜8Ñ $ R°9ÀxÔ P€FØ ‡L�L�Õr©ršrÚrÙcóV—t«}t|||||¬«|j«S)z?Return a bytes object with the contents for a .plist file. r¢)r rÚgetvalue)r„ršrÚrÙr$s rrr“s'€ô ‹€B܈�˜ h¸)ÕDØ �;‰;‹=Ðr)rí):r_Ú__all__r:rùrUÚenumÚior rzrÚrerÚxml.parsers.expatr ÚEnumr%r ÚglobalsÚupdateÚ __members__r2r rÕÚcompilererCrIÚASCIIrRr[r^rjrlr¾rÓrrrr,ÚobjectrrrerFrrµrærxrgr–rr”rrœrrrrr3rrÚr±sÌðñ7òp €óÛ ÛÛ ÝÛÛ Û Û Ý*ðˆd�i‰i˜ Ð';ÀHÔM€ Ùƒ ×Ñ�×(Ñ(Ô)ðÐ÷ñðB€ ð�"—*‘*ðIóJ€óò&ðˆb�j‰jðXðZ\÷ZbñZbóc€ ò #òò ÷k<ñk<÷\#ñ#ôL[)�>ô[)ò|ôB+˜Jô+ð˜S S¨SÑ1€á ‹X€ ÷dñdòL ð ��e˜X×.Ñ.°Ð 6€ôQ#˜&ôQ#òh%ð ‰TØØØôð ‘ØØ!Ø!ôð €ð Dôð,¨ô2ð#¨d¸Uôð ¨%¸4õr