Ë p«?&Ž…î\ãó¦—dZdZddlZddlZddlmZddlmZddlmZddlm Z e jZ d„Z d „Z e d e«Ze d e«Ze d e«Ze d e«Zd„Zd„Zd„Zd„Zd„Zd„Z d/d„Zeej4e«Zeej4e«Zeej4e«Zeej4e«Zeej4eej>«Z eej4eej>«Z!eejDd«Z#eejHd«Z%eejDd«Z&eejHd«Z'e«Z(e«Z)eej4ee*«Z+ d/d„Z, d/d„Z-d„Z.d„Z/ej`dejb«Z2d„Z3d„Z4d „Z5d!„Z6d"„Z7d#„Z8d$„Z9d%„Z:d&Z;e;ad1d)„Z?d*„Z@d+„ZAd,„ZBd-„ZCd.„ZDeD«ZEy)2aÏ Code for decoding protocol buffer primitives. This code is very similar to encoder.py -- read the docs for that module first. A "decoder" is a function with the signature: Decode(buffer, pos, end, message, field_dict) The arguments are: buffer: The string containing the encoded message. pos: The current position in the string. end: The position in the string where the current message ends. May be less than len(buffer) if we're reading a sub-message. message: The message object into which we're parsing. field_dict: message._fields (avoids a hashtable lookup). The decoder reads the field and stores it into field_dict, returning the new buffer position. A decoder for a repeated field may proactively decode all of the elements of that field, if they appear consecutively. Note that decoders may throw any of the following: IndexError: Indicates a truncated message. struct.error: Unpacking of a fixed-width field failed. message.DecodeError: Other errors. Decoders are expected to raise an exception if they are called with pos > end. This allows callers to be lax about bounds checking: it's fineto read past "end" as long as you are sure that someone else will notice and throw an exception later on. Something up the call stack is expected to catch IndexError and struct.error and convert them to message.DecodeError. Decoders are constructed using decoder constructors with the signature: MakeDecoder(field_number, is_repeated, is_packed, key, new_default) The arguments are: field_number: The field number of the field we want to decode. is_repeated: Is the field a repeated field? (bool) is_packed: Is the field a packed field? (bool) key: The key to use when looking up the field within field_dict. (This is actually the FieldDescriptor but nothing in this file should depend on that.) new_default: A function which takes a message object as a parameter and returns a new instance of the default value for this field. (This is called for repeated fields and sub-messages, when an instance does not already exist.) As with encoders, we define a decoder constructor for every type of field. Then, for every field of every message class we construct an actual decoder. That decoder goes into a dict indexed by tag, so when we decode a message we repeatedly read a tag, look up the corresponding decoder, and invoke it. z kenton@google.com (Kenton Varda)éN)Ú containers)Úencoder)Ú wire_format)Úmessagec󇇗ˆˆfd„}|S)a¢Return an encoder for a basic varint value (does not include tag). Decoded values will be bitwise-anded with the given mask before being returned, e.g. to limit them to 32 bits. The returned decoder does not take the usual "end" parameter -- the caller is expected to do bounds checking after the fact (often the caller can defer such checking until later). The decoder returns a (value, new_pos) pair. có�•—d}d} ||}||dz|zz}|dz }|dzs|‰z}‰|«}||fS|dz }|dk\r td«‚ŒA©Nrééé€éé@z$Too many bytes when decoding varint.©Ú _DecodeError)ÚbufferÚposÚresultÚshiftÚbÚmaskÚ result_types €€úE/usr/lib/python3.12/site-packages/google/protobuf/internal/decoder.pyÚ DecodeVarintz$_VarintDecoder..DecodeVarintTszø€Ø €FØ €EØ Ø �‰+€aØ �!�d‘(˜uÑ$Ñ%€fØ ˆQ�h€cØ�$ŠhØ�$‰ˆÙ˜VÓ$ˆØ˜ˆ}ÐØ ˆq�j€eØ �"ŠÜÐAÓBÐBð ó©)rrrs`` rÚ_VarintDecoderrJsù€õ Cð Ðrcó:‡‡‡—d|dz zŠd|zdz Šˆˆˆfd„}|S)z0Like _VarintDecoder() but decodes signed values.r có •—d}d} ||}||dz|zz}|dz }|dzs|‰z}|‰z ‰z }‰|«}||fS|dz }|dk\r td«‚ŒIr r)rrrrrrrÚsignbits €€€rrz*_SignedVarintDecoder..DecodeVarintks‰ø€Ø €FØ €EØ Ø �‰+€aØ �!�d‘(˜uÑ$Ñ%€fØ ˆQ�h€cØ�$ŠhØ�$‰ˆØ˜7Ñ" gÑ-ˆÙ˜VÓ$ˆØ˜ˆ}ÐØ ˆq�j€eØ �"ŠÜÐAÓBÐBð rr)Úbitsrrrrs ` @@rÚ_SignedVarintDecoderr!es-ú€ð �$˜‘(‰O€'Ø ˆt‰)�q‰€$öCð Ðrlÿÿÿÿrlÿÿé cój—|}||dzr|dz }||dzrŒ|dz }|||j«}||fS)ažRead a tag from the memoryview, and return a (tag_bytes, new_pos) tuple. We return the raw bytes of the tag rather than decoding them. The raw bytes can then be used to look up the proper decoder. This effectively allows us to trade some work that would be done in pure-python (decoding a varint) for work that is done in C (searching for a byte string in a hash table). In a low-level language it would be much cheaper to decode the varint and use that, but not in Python. Args: buffer: memoryview object of the encoded bytes pos: int of the current position to start from Returns: Tuple[bytes, int] of the tag data and new position. r r )Útobytes)rrÚstartÚ tag_bytess rÚReadTagr'…sT€ð" €%؈s‰ �dÒØˆ1�H€Cð ˆs‰ �dÓàˆ�(€#à�U˜3Ð×'Ñ'Ó)€)Ø �CˆÐrc󇇗 dˆˆfd„ }|S)zØReturn a constructor for a decoder for fields of a particular type. Args: wire_type: The field's wire type. decode_value: A function which decodes an individual value, e.g. _DecodeVarint() c󬕇‡‡‡ ‡ ‡ —|rtŠ dˆ ˆˆ ˆfd„ }|S|r.tj|‰ «Š t‰ «Š dˆ ˆˆˆ ˆ fd„ }|Sdˆˆ ˆfd„ }|S)Ncó•—~|j‰ «}|€|j‰ ‰ |««}‰ ||«\}}||z }||kDr td«‚||kr#‰ ||«\}}|j|«||krŒ#||kDr|d=td«‚|S)NúTruncated message.éÿÿÿÿúPacked element was truncated.©ÚgetÚ setdefaultrÚappend) rrÚendrÚ field_dictÚ current_depthÚvalueÚendpointÚelementÚ decode_valueÚkeyÚlocal_DecodeVarintÚ new_defaults €€€€rÚDecodePackedFieldzB_SimpleDecoder..SpecificDecoder..DecodePackedField¯s«ø€ð Ø—‘˜sÓ#ˆØ ˆ=Ø×'Ñ'¨©[¸Ó-AÓBˆ%Ù,¨V°SÓ9‰ˆ�3Ø�C‰ˆØ �cŠ>ÜÐ1Ó2Ð 2Ø�HŠnÙ'¨°Ó4‰.ˆ7�CØ �,‰,�wÔ ð�H‹nð �Š>Ø�BˆiÜÐ<Ó=Ð =؈ rcóâ•—~|j‰ «}|€|j‰ ‰ |««} ‰ ||«\}}|j|«|‰ z}|||‰ k7s||k\r||kDr td«‚|SŒB©Nr+)r/r0r1r)rrr2rr3r4r5r7Únew_posr8r9r;r&Útag_lens €€€€€rÚDecodeRepeatedFieldzD_SimpleDecoder..SpecificDecoder..DecodeRepeatedFieldÅs�ø€ð Ø—‘˜sÓ#ˆØ ˆ=Ø×'Ñ'¨©[¸Ó-AÓBˆ%ØÙ+¨F°CÓ8Ñ ˆ7�GØ �,‰,�wÔ ð˜'Ñ!ˆ#Ø �G˜CÐ  IÒ -°¸C²à˜Š}Ü Ð!5Ó6Ð6؈Nðrcó|•—~‰||«\}}||kDr td«‚‰r|s|j‰ d«|S||‰ <|Sr>©rÚpop) rrr2rr3r4Ú new_valueÚclear_if_defaultr8r9s €€€rÚ DecodeFieldz<_SimpleDecoder..SpecificDecoder..DecodeFieldÙsTø€Ø Ù'¨°Ó4ш�CØ �Š9ÜÐ1Ó2Ð 2Ù ¡IØ �.‰.˜˜dÔ #ðˆ ð&ˆ*�S‰/؈ r©r)Ú _DecodeVarintrÚTagBytesÚlen)Ú field_numberÚ is_repeatedÚ is_packedr9r;rFr<rArGr:r&r@r8Ú wire_types ``` @@@€€rÚSpecificDecoderz'_SimpleDecoder..SpecificDecoder«saþ€áÜ(Ðà?@÷ðð$ÐÙ Ü×"Ñ" <°Ó;€iÜ�I“€gà?@÷ñð$!Ð ÷ ðÐr©Fr)rOr8rPs`` rÚ_SimpleDecoderrR¢sù€ð(-ö8ðt Ðrcó*‡‡—ˆˆfd„}t||«S)z†Like SimpleDecoder but additionally invokes modify_value on every value before storing it. Usually modify_value is ZigZagDecode. có0•—‰||«\}}‰|«|fS©Nr)rrrr?r8Ú modify_values €€rÚ InnerDecodez%_ModifiedDecoder..InnerDecodeðs$ø€Ù$ V¨SÓ1Ñ€VˆWÙ ˜Ó  'Ð *Ð*r)rR)rOr8rVrWs `` rÚ_ModifiedDecoderrXèsù€õ+ô ˜  ;Ó /Ð/rcóx‡‡‡—tj‰«ŠtjŠˆˆˆfd„}t||«S)z­Return a constructor for a decoder for a fixed-width field. Args: wire_type: The field's wire type. format: The format string to pass to struct.unpack(). có4•—|‰z}‰‰|||«d}||fS©Nrr)rrr?rÚformatÚ local_unpackÚ value_sizes €€€rrWz'_StructPackDecoder..InnerDecodes0ø€Ø�JÑ€GÙ ˜& &¨¨WÐ"5Ó 6°qÑ 9€FØ �GÐ Ðr)ÚstructÚcalcsizeÚunpackrR)rOr\rWr]r^s ` @@rÚ_StructPackDecoderrbös0ú€ô�‰˜vÓ&€*Ü—‘€,öô ˜  ;Ó /Ð/rcób‡—tjŠˆfd„}ttj|«S)z‡Returns a decoder for a float field. This code works around a bug in struct.unpack for non-finite 32-bit floating-point values. có•—|dz}|||j«}|dddvrO|dddk\rG|dddk7rtj|fS|dddk(rtj |fStj|fS‰d |«d}||fS) a#Decode serialized float to a float and new position. Args: buffer: memoryview of the serialized bytes pos: int, position in the memory view to start at. Returns: Tuple[float, int] of the deserialized float value and new position in the serialized data. ééóÿéó€rs€óÿz.InnerDecodes­ø€ð�A‰g€Gؘ˜WÐ%×-Ñ-Ó/€Kð �A�aИKÑ'¨K¸¸!Ð,<ÀÒ,Gà �Q�qÐ ˜_Ò ,Ü—‘˜'Ð"Ð"à �Q�qÐ ˜WÒ $Ü—‘� ˜7Ð#Ð#Ü�h‰h˜Ð Ð ñ ˜$  Ó ,¨QÑ /€FØ �GÐ Ðr)r_rarRrÚWIRETYPE_FIXED32©rWr]s @rÚ _FloatDecoderrqs)ø€ô—‘€,ô ôB œ ×4Ñ4°kÓ BÐBrcób‡—tjŠˆfd„}ttj|«S)zkReturns a decoder for a double field. This code works around a bug in struct.unpack for not-a-number. c󦕗|dz}|||j«}|dddvr"|dddk\r|dddk7rtj|fS‰d|«d}||fS) a"Decode serialized double to a double and new position. Args: buffer: memoryview of the serialized bytes. pos: int, position in the memory view to start at. Returns: Tuple[float, int] of the decoded double value and new position in the serialized data. ér rgéóðrsðz.InnerDecodeDs€ø€ð�A‰g€Gؘ#˜gÐ&×.Ñ.Ó0€Lð �a˜Ð ˜kÑ )Ø ˜!˜AÐ  'Ò )Ø ˜!˜AÐ Ð"AÒ AÜ�h‰h˜Ð Ð ñ ˜$  Ó -¨aÑ 0€FØ �GÐ Ðr)r_rarRrÚWIRETYPE_FIXED64rps @rÚ_DoubleDecoderry<s(ø€ô —‘€,ôô: œ ×4Ñ4°kÓ BÐBrcó臇‡‡‡ ‡ ‡ ‡ —‰jŠ |rtŠ dˆ ˆˆˆ ˆfd„ }|S|r=tj‰tj «Š t ‰ «Š dˆ ˆˆˆˆ ˆ fd„ }|Sdˆˆ ˆˆfd„ }|S)z!Returns a decoder for enum field.có$•—~|j‰ «}|€|j‰ ‰|««}‰||«\}}||z }||kDr td«‚||krì|}t||«\} }| ‰ jvr|j | «nµ|j sg|_tj‰ tj«} |j j | |||j«f«|j€tj«|_ |jj‰ tj| «||krŒì||kDrK ‰ jvr|d=td«‚|j d=|jj d=td«‚|S)a±Decode serialized packed enum to its value and a new position. Args: buffer: memoryview of the serialized bytes. pos: int, position in the memory view to start at. end: int, end position of serialized data message: Message object to store unknown fields in field_dict: Map[Descriptor, Any] to store decoded values in. Returns: int, new position in serialized data. r+r,r-)r/r0rÚ_DecodeSignedVarint32Úvalues_by_numberr1Ú_unknown_fieldsrrJrÚWIRETYPE_VARINTr$Ú_unknown_field_setrÚUnknownFieldSetÚ_addÚ_values)rrr2rr3r4r5r6Úvalue_start_posr7r&Ú enum_typerLr9r:r;s €€€€€rr<z&EnumDecoder..DecodePackedFieldjs™ø€ð Ø�n‰n˜SÓ!€eØ ˆØ×%Ñ% c©;°wÓ+?Ó@ˆÙ*¨6°3Ó7�o€x�Ø�#�o€hØ �CŠÜÐ/Ó0Ð0Ø �(ŠN؈Ü.¨v°sÓ;‰ˆ�#à �i×0Ñ0Ñ 0Ø �,‰,�wÕ à×(Ò(Ø&(ˆGÔ #Ü×&Ñ& |Ü'2×'BÑ'BóDˆ)ð × !Ñ !× (Ñ (ؘ& °Ð5×=Ñ=Ó?Ð@ô Bà × 'Ñ 'Ð /Ü)3×)CÑ)CÓ)EˆGÔ &Ø × $Ñ $× )Ñ )ØœK×7Ñ7¸ô Bð! �(‹Nð& ˆxŠØ �i×0Ñ0Ñ 0Ø�Bˆiô Ð:Ó;Ð;ð ×%Ñ% bÐ)à×(Ñ(×0Ñ0°Ð4äÐ:Ó;Ð;Ø €jrcó(•—~|j‰ «}|€|j‰ ‰ |««} t||«\}}|‰ jvr|j |«n‘|j sg|_|j j ‰ |||j «f«|j€tj«|_|jj‰ tj|«|‰z}|||‰ k7s||k\r||kDr td«‚|SŒå)á³Decode serialized repeated enum to its value and a new position. Args: buffer: memoryview of the serialized bytes. pos: int, position in the memory view to start at. end: int, end position of serialized data message: Message object to store unknown fields in field_dict: Map[Descriptor, Any] to store decoded values in. Returns: int, new position in serialized data. r+)r/r0r|r}r1r~r$r€rr�r‚rrr)rrr2rr3r4r5r7r?r…rLr9r;r&r@s €€€€€€rrAz(EnumDecoder..DecodeRepeatedField¢sø€ð Ø�n‰n˜SÓ!€eØ ˆØ×%Ñ% c©;°wÓ+?Ó@ˆØ Ü2°6¸3Ó?ш�'à �i×0Ñ0Ñ 0Ø �,‰,�wÕ à×(Ò(Ø&(ˆGÔ #Ø × !Ñ !× (Ñ (ؘ&  WÐ-×5Ñ5Ó7Ð8ô :à × 'Ñ 'Ð /Ü)3×)CÑ)CÓ)EˆGÔ &Ø × $Ñ $× )Ñ )ØœK×7Ñ7¸ô Bð ˜ÑˆØ �'˜#Ð  )Ò +¨w¸#ª~à �sŠ]ÜÐ3Ó4Ð 4؈.ð- rcó•—~|}t||«\}}||kDr td«‚‰ r|s|j‰ d«|S|‰ jvr||‰ <|S|jsg|_t j ‰ tj«}|jj||||j«f«|j€tj«|_ |jj‰ tj|«|S)r‡r+N)r|rrDr}r~rrJrrr1r$r€rr�r‚) rrr2rr3r4r„Ú enum_valuer&rFr…rLr9s €€€€rrGz EnumDecoder..DecodeFieldÎs ø€ð Ø€oÜ/°¸Ó<Ñ€z�3Ø ˆsŠÜÐ/Ó0Ð0Ù ¡*Ø�‰�s˜DÔ!؈ à �y×1Ñ1Ñ 1Ø$ˆ �3‰ð€jð×&Ò&Ø$&ˆ'Ô !Ü×$Ñ$ \Ü%0×%@Ñ%@óBˆ à×Ñ×&Ñ&Ø ˜˜¨sÐ3×;Ñ;Ó=Ð >ô @à × %Ñ %Ð -Ü'1×'AÑ'AÓ'Cˆ'Ô $Ø×"Ñ"×'Ñ'Ø œ+×5Ñ5°zô Cð€jrrH)r…rIrrJrrrK) rLrMrNr9r;rFr<rArGr…r:r&r@s ` ``` @@@@rÚ EnumDecoderrŠdszÿ€ð�m‰m€)ÙÜ&Ðà=>÷3ñ3ðh ÐÙÜ× Ñ  ¬{×/JÑ/JÓK€IÜ�)‹n€Gà=>÷)ò)ðT Ð÷$ð$ðJ Ðrú._ConvertToUnicodesLø€à�‰Ó €Hð Ü�(˜GÓ$€eð €Løô ò â&'¨¯ªÐ7€a„hØ ûð ús“ !¡ AªAÁAcóþ•—~|j‰ «}|€|j‰ ‰ |««} ‰ ||«\}}||z}||kDr td«‚|j‰ |||««|‰z}|||‰ k7s||k(r|SŒP©NzTruncated string.r.)rrr2rr3r4r5Úsizer?r–r9r:r;r&r@s €€€€€€rrAz*StringDecoder..DecodeRepeatedField-s£ø€ð Ø�n‰n˜SÓ!€eØ ˆØ×%Ñ% c©;°wÓ+?Ó@ˆØ Ù(¨°Ó5‰ ˆˆsؘ‘*ˆØ �SŠ=ÜÐ0Ó1Ð 1Ø � ‰ Ñ& v¨c°'Ð':Ó;Ô<à˜ÑˆØ �'˜#Ð  )Ò +¨w¸#ª~àˆ.ð rc󘕗~‰ ||«\}}||z}||kDr td«‚‰ r|s|j‰ d«|S‰|||«|‰ <|Sr˜rC) rrr2rr3r4r™r?r–rFr9r:s €€€€rrGz"StringDecoder..DecodeFieldAshø€Ø Ù& v¨sÓ3�k€tˆSØ�d‘ €gØ �3ŠÜÐ.Ó/Ð/Ù ¡$Ø�‰�s˜DÔ!ð€nñ,¨F°3°wÐ,?Ó@ˆ �3‰Ø €nrrH©rIrrJrÚWIRETYPE_LENGTH_DELIMITEDrK) rLrMrNr9r;rFrArGr–r:r&r@s ``` @@@@rÚ StringDecoderr�siþ€ô%Ðô ñЈÙÜ× Ñ  Ü!,×!FÑ!FóH€Iä�)‹n€Gà=>÷òð$ Ð÷ ð ð Ðrc󲇇‡‡‡ ‡ —tŠ|rJ‚|r.DecodeRepeatedFieldZs¦ø€ð Ø�n‰n˜SÓ!€eØ ˆØ×%Ñ% c©;°wÓ+?Ó@ˆØ Ù(¨°Ó5‰ ˆˆsؘ‘*ˆØ �SŠ=ÜÐ0Ó1Ð 1Ø � ‰ �V˜C Ð(×0Ñ0Ó2Ô3à˜ÑˆØ �'˜#Ð  )Ò +¨w¸#ª~àˆ.ð rc󨕗~‰ ||«\}}||z}||kDr td«‚‰r|s|j‰ d«|S|||j«|‰ <|Sr˜)rrDr$) rrr2rr3r4r™r?rFr9r:s €€€rrGz!BytesDecoder..DecodeFieldnslø€Ø Ù& v¨sÓ3�k€tˆSØ�d‘ €gØ �3ŠÜÐ.Ó/Ð/Ù ¡$Ø�‰�s˜DÔ!ð€nð!  WÐ-×5Ñ5Ó7ˆ �3‰Ø €nrrHr›) rLrMrNr9r;rFrArGr:r&r@s ``` @@@rÚ BytesDecoderr¢Os]ý€ô%Ðá ЈÙÜ× Ñ  Ü!,×!FÑ!FóH€Iä�)‹n€Gà=>÷ñð$ Ð÷ ð Ðrc󇇇‡‡ ‡ —tj|tj«Št ‰«Š|rJ‚|r=tj|tj «Š t ‰ «Š dˆˆˆˆˆ ˆ fd„ }|Sdˆˆˆˆfd„ }|S)z$Returns a decoder for a group field.có–•—|j‰ «}|€|j‰ ‰ |««} |j‰ «}|€|j‰ ‰ |««}|dz }|tkDr td«‚|j «j ||||«}|dz}|‰ z}|||‰k7s||kDr td«‚|‰ z}|||‰ k7s||k(r|SŒ�©Nr ú2Error parsing message: too many levels of nesting.úMissing group end tag.)r/r0Ú_recursion_limitrÚaddÚ_InternalParse)rrr2rr3r4r5r?Ú end_tag_bytesÚ end_tag_lenr9r;r&r@s €€€€€€rrAz)GroupDecoder..DecodeRepeatedFieldˆsúø€ð�n‰n˜SÓ!€eØ ˆØ×%Ñ% c©;°wÓ+?Ó@ˆØ Ø—‘˜sÓ#ˆØ ˆ=Ø×'Ñ'¨©[¸Ó-AÓBˆ%à˜Ñˆ Ø Ô+Ò +ÜØBó ð ð�i‰i‹k×(Ñ(¨°°c¸=ÓIˆØ˜Ñˆ à�k‘/ˆØ �#�gÐ  -Ò /°7¸S²=ÜÐ5Ó6Ð 6à˜ÑˆØ �'˜#Ð  )Ò +¨w¸#ª~àˆ.ð) rcóü•—|j‰ «}|€|j‰ ‰ |««}|dz }|tkDr td«‚|j ||||«}|dz}|‰ z}|||‰k7s||kDr td«‚|Sr¥)r/r0r¨rrª) rrr2rr3r4r5r?r«r¬r9r;s €€€€rrGz!GroupDecoder..DecodeField¥s›ø€Ø�n‰n˜SÓ!€eØ ˆØ×%Ñ% c©;°wÓ+?Ó@ˆà�qÑ€mØ Ô)Ò )ÜÐOÓPÐPØ × Ñ  ¨¨c°=Ó A€cØ�qÑ€mà�K‘€gØ ��GÐ   Ò -°¸3²ÜÐ3Ó4Ð4Ø €nrrH)rrJrÚWIRETYPE_END_GROUPrKÚWIRETYPE_START_GROUP) rLrMrNr9r;rArGr«r¬r&r@s `` @@@@rÚ GroupDecoderr°|s‚ý€ô×"Ñ" <Ü#.×#AÑ#AóC€-ä�MÓ"€+á ЈÙÜ× Ñ  Ü!,×!AÑ!AóC€Iä�)‹n€Gà=>÷òð6 Ð÷ðð Ðrc󰇇‡‡‡ —tŠ|rJ‚|r.DecodeRepeatedFieldÁsæø€ð�n‰n˜SÓ!€eØ ˆØ×%Ñ% c©;°wÓ+?Ó@ˆØ á(¨°Ó5‰ ˆˆsؘ‘*ˆØ �SŠ=ÜÐ1Ó2Ð 2à˜Ñˆ Ø Ô+Ò +ÜØBó ð ð �I‰I‹K× &Ñ & v¨s°G¸]Ó KØò ô Ð8Ó9Ð 9à˜Ñˆ Ø˜ÑˆØ �'˜#Ð  )Ò +¨w¸#ª~àˆ.ð1 rcó •—|j‰ «}|€|j‰ ‰ |««}‰ ||«\}}||z}||kDr td«‚|dz }|tkDr td«‚|j ||||«|k7r td«‚|dz}|S)Nr+r r¦r³)r/r0rr¨rª) rrr2rr3r4r5r™r?r9r:r;s €€€rrGz#MessageDecoder..DecodeFieldâs®ø€Ø�n‰n˜SÓ!€eØ ˆØ×%Ñ% c©;°wÓ+?Ó@ˆá& v¨sÓ3�k€tˆSØ�d‘ €gØ �3ŠÜÐ/Ó0Ð0Ø�qÑ€mØ Ô)Ò )ÜÐOÓPÐPØ × Ñ ˜f c¨7°MÓ BÀgÒ MôÐ6Ó7Ð7Ø�qÑ€mØ €nrrHr›) rLrMrNr9r;rArGr:r&r@s `` @@@rÚMessageDecoderrµ·s]ü€ô%Ðá ЈÙÜ× Ñ  Ü!,×!FÑ!FóH€Iä�)‹n€Gà=>÷ñð> Ð÷ð$ Ðrr c󇇇‡‡—tjdtj«Štjdtj«Štjdtj «Št ŠtŠt}ˆˆˆˆˆfd„}|S)aReturns a decoder for a MessageSet item. The parameter is the message Descriptor. The message set message looks like this: message MessageSet { repeated group Item = 1 { required int32 type_id = 2; required string message = 3; } } rhrfr c󾕗|}d}d}d} ‰||«\} }| ‰k(r ‰||«\}}n=| ‰k(r‰||«\} }|| zx}}n$| ‰k(rnt|||| «}|dk(r td«‚Œ\||kDr td«‚|dk(r td«‚|dk(r td«‚|jj|«} | �ƒ|j | «} | €M| j } t | d«stj| «|j| | j««} | j|||«|k7r td«‚|S|jsg|_ |jjt|||j«f«|j €t#j$«|_|j j'|t(j*|||j««|S)a�Decode serialized message set to its value and new position. Args: buffer: memoryview of the serialized bytes. pos: int, position in the memory view to start at. end: int, end position of serialized data message: Message object to store unknown fields in field_dict: Map[Descriptor, Any] to store decoded values in. Returns: int, new position in serialized data. r,r§r+ú MessageSet item missing type_id.ú MessageSet item missing message.Ú_concrete_classr³)Ú SkipFieldrÚ ExtensionsÚ_FindExtensionByNumberr/Ú message_typeÚhasattrÚmessage_factoryÚGetMessageClassr0rºrªr~r1ÚMESSAGE_SET_ITEM_TAGr$r€rr�r‚rrœ)rrr2rr3Úmessage_set_item_startÚtype_idÚ message_startÚ message_endr&r™Ú extensionr5r¾Úitem_end_tag_bytesr:Ú local_ReadTagÚmessage_tag_bytesÚtype_id_tag_bytess €€€€€rÚ DecodeItemz)MessageSetItemDecoder..DecodeItemsø€ð!ÐØ€GØ€MØ€Kð Ù& v¨sÓ3Ñ€y�#Ø Ð'Ò 'Ù+¨F°CÓ8‰ˆ‘#Ø Ð)Ò )Ù 2°6¸3Ó ?шˆ}Ø)¨DÑ0Ð0ˆ‰kØ Ð*Ò *Ø ä˜  S¨)Ó4ˆØ �"Š9ÜÐ5Ó6Ð 6ð ð ˆS‚yÜ Ð-Ó .Ð.à�"‚}Ü Ð;Ó <Ð<ؘÒÜ Ð;Ó <Ð<à×"Ñ"×9Ñ9¸'ÓB€IàÐØ�n‰n˜YÓ'€eØ ˆØ ×-Ñ-ˆ Ü�|Ð%6Ô7Ü × )Ñ )¨,Ô 7Ø×%Ñ%Ø �|×3Ñ3Ó5ó7ˆà × Ñ ˜f m°KÓ @ÀKÒ OôÐ6Ó7Ð7ð €Jð× $Ò $Ø"$ˆÔØ ×Ñ×$Ñ$Ü  Ð(>¸sÐ!C×!KÑ!KÓ!MÐ NôPà × #Ñ #Ð +Ü%/×%?Ñ%?Ó%AˆÔ"Ø × Ñ ×%Ñ%Ø Ü × /Ñ /Ø �˜{Ð +× 3Ñ 3Ó 5ô7ð €Jr) rrJrrrœr®r'rIr»)Ú descriptorÚlocal_SkipFieldrÌrÈr:rÉrÊrËs @@@@@rÚMessageSetItemDecoderrÏûsuü€ô×&Ñ& q¬+×*EÑ*EÓFÐÜ×&Ñ& q¬+×*OÑ*OÓPÐÜ×'Ñ'¨¬;×+IÑ+IÓJÐä€-Ü$ÐÜ€/÷EðEðN Ðrcóò‡‡‡—tjdtj«Štjdtj«Štjdtj «Šˆˆˆfd„}|S)z0Returns a decoder for a Unknown MessageSet item.rhrfr có|•—d}t|«}d}d} t||«\}}|‰ k(rt||«\}}n@|‰ k(rt||«\}}||zx}}n$|‰k(rnt||||«}|dk(r t d«‚Œe||kDr t d«‚dk(r t d«‚|dk(r t d«‚||||j «fS)Nrr,r§r+r¸r¹)rKr'rIr»rr$) rrr2rÅrÆr&rÄr™rÈrÊrËs €€€rÚDecodeUnknownItemz7UnknownMessageSetItemDecoder..DecodeUnknownItembsüø€Ø €CÜ ˆf‹+€CØ€MØ€KØ Ü  ¨Ó-Ñ€y�#Ø Ð'Ò 'Ü& v¨sÓ3‰ˆ‘#Ø Ð)Ò )Ü -¨f°cÓ :шˆ}Ø)¨DÑ0Ð0ˆ‰kØ Ð*Ò *Ø ä˜  S¨)Ó4ˆØ �"Š9ÜÐ5Ó6Ð 6ð ð ˆS‚yÜ Ð-Ó .Ð.à�"‚}Ü Ð;Ó <Ð<ؘÒÜ Ð;Ó <Ð<à �V˜M¨+Ð6×>Ñ>Ó@Ð AÐAr)rrJrrrœr®)rÒrÈrÊrËs @@@rÚUnknownMessageSetItemDecoderrÓ[s^ú€ô×&Ñ& q¬+×*EÑ*EÓFÐÜ×&Ñ& q¬+×*OÑ*OÓPÐÜ×'Ñ'¨¬;×+IÑ+IÓJÐöBð: ÐrcóƇ‡‡‡‡‡‡—|Štj|jtj«Št ‰«Št Š|jŠdˆˆˆˆˆˆˆfd„ }|S)z"Returns a decoder for a map field.cóÔ•—~‰ j«}|j‰ «}|€|j‰ ‰|««} ‰ ||«\}}||z} | |kDr td«‚|j «|j ||| «| k7r td«‚‰ r)||j j|j«n|j||j <| ‰z}|| |‰k7s| |k(r| SŒ«)Nr+r³) rºr/r0rÚClearrªr9ÚCopyFromr5)rrr2rr3r4Úsubmsgr5r™r?Úis_message_mapr9r:r¾r;r&r@s €€€€€€€rÚ DecodeMapzMapDecoder..DecodeMapŽsöø€ØØ × )Ñ )Ó +€FØ �N‰N˜3Ó €EØ €}Ø×#Ñ# C©°WÓ)=Ó>€eØ á& v¨sÓ3�k€tˆSØ�d‘ €gØ �3ŠÜÐ/Ó0Ð0à ‡l�l„nØ × Ñ ˜v s¨GÓ 4¸Ò ?ôÐ6Ó7Ð7á Ø ˆf�j‰jÑ×"Ñ" 6§<¡<Õ0à"ŸL™Lˆˆf�j‰jÑð �gÑ €cØ �˜Ð   Ò )¨W¸ª^àˆð- rrH)rrJÚnumberrrœrKrIr¾) Úfield_descriptorr;rÙrÚr9r:r¾r&r@s `` @@@@@rÚ MapDecoderr݃sYþ€ð €#Ü×ÑÐ/×6Ñ6Ü*×DÑDóF€)ä � ‹N€'Ü$Ðà!×.Ñ.€,÷óð< ÐrcóÄ—t|||dzj««dzr(|dz }t|||dzj««dzrŒ(|dz }||kDr td«‚|S)z/Skip a varint value. Returns the new position.r r r+)Úordr$r©rrr2s rÚ _SkipVarintrá²sr€ô ˆF�3�s˜1‘uÐ × %Ñ %Ó 'Ó(¨4Ò/؈1�H€Cô ˆF�3�s˜1‘uÐ × %Ñ %Ó 'Ó(¨4Ó/àˆ�(€#؈3‚YÜ Ð+Ó ,Ð,Ø €*rcó0—|dz }||kDr td«‚|S)z0Skip a fixed64 value. Returns the new position.rtr+rràs rÚ _SkipFixed64rã¾ó%€ðˆ�(€#؈3‚YÜ Ð+Ó ,Ð,Ø €*rcóH—|dz}tjd|||«d|fS)zDecode a fixed64.rtrŒr©r_ra©rrr?s rÚ_DecodeFixed64rèÇs-€à �!‰G€'Ü �-‰-˜˜f S¨Ð1Ó 2°1Ñ 5°wÐ ?Ð?rcóN—t||«\}}||z }||kDr td«‚|S)z9Skip a length-delimited value. Returns the new position.r+)rIr)rrr2r™s rÚ_SkipLengthDelimitedrêÍs5€ô˜f cÓ*�+€4ˆØˆ�+€#؈3‚YÜ Ð+Ó ,Ð,Ø €*rcóR— t||«\}}t||||«}|dk(r|S|}Œ')z*Skip sub-group. Returns the new position.r,)r'r»)rrr2r&r?s rÚ _SkipGrouprì×s>€ð ܘv sÓ+Ñ€Y�ܘ  S¨)Ó4€GØ�"‚}Ø €jØ €Cð rédcó—|ayrU)r¨)Ú new_limits rÚSetRecursionLimitrðås€àÑrcó6—tj«}|�||kr{t||«\}}t|d«\}}t j |«\}} | tj k(r ||fSt||| |«\} }|j|| | «|€Œu||krŒ{||fS)zFDecode UnknownFieldSet. Returns the UnknownFieldSet and new position.r) rr�r'rIrÚ UnpackTagr®Ú_DecodeUnknownFieldr‚) rrÚend_posr4Úunknown_field_setr&ÚtagÚ_rLrOÚdatas rÚ_DecodeUnknownFieldSetrùês´€ô!×0Ñ0Ó2ÐØˆ˜3 š=ܘv sÓ+Ñ€Y�ܘY¨Ó*�H€Sˆ!Ü)×3Ñ3°CÓ8Ñ€L�)Ø”K×2Ñ2Ò2Ø ð ˜SÐ !Ð!ô & f¨c°9¸mÓL�K€Tˆ3à×ј<¨°DÔ9𠉘3 ›=ð ˜SÐ !Ð!rcó2—|tjk(rt||«\}}||fS|tjk(rt ||«\}}||fS|tj k(rt ||«\}}||fS|tjk(r.t||«\}}||||zj«}||z }||fS|tjk(r3|dz }|tk\r td«‚t||d|«\}}|dz}||fS|tjk(rytd«‚)zCDecode a unknown field. Returns the UnknownField and new position.r r¦N)rr,zWrong wire type in tag.)rrrIrxrèroÚ_DecodeFixed32rœr$r¯r¨rrùr®)rrrOr4rør™s rróróûsL€ð”+×-Ñ-Ò-Ü ¨Ó,�K€Tˆ3ð( �ˆÐð'”K×0Ñ0Ò0Ü  ¨Ó-�K€Tˆ3ð$ �ˆÐð#”K×0Ñ0Ò0Ü  ¨Ó-�K€Tˆ3ð �ˆÐð”K×9Ñ9Ò9Ü ¨Ó,�K€Tˆ3Ø �#�c˜$‘hÐ × 'Ñ 'Ó )€D؈4�K€Cð �ˆÐð”K×4Ñ4Ò4Ø�QÑ€MØÔ(Ò(Ü ÐMÓ NÐNÜ(¨°°d¸MÓJ�K€Tˆ3Ø�QÑ€Mð �ˆÐð ”K×2Ñ2Ò2Ø ä Ð0Ó 1Ð1rcó—y)zFSkipping an END_GROUP tag returns -1 to tell the parent loop to break.r,rràs rÚ _EndGrouprýs€ð rcó0—|dz }||kDr td«‚|S)z0Skip a fixed32 value. Returns the new position.rer+rràs rÚ _SkipFixed32rÿrärcóH—|dz}tjd|||«d|fS)zDecode a fixed32.rer‹rrærçs rrûrû%s/€ð �!‰G€'Ü �-‰-˜˜f S¨Ð1Ó 2°1Ñ 5°wÐ ?Ð?rcó—td«‚)z;Skip function for unknown wire types. Raises an exception.zTag had invalid wire type.rràs rÚ_RaiseInvalidWireTyper,s€ô Ð1Ó2Ð2rcóЇ‡—tttttt t t gŠtjŠˆˆfd„}|S)z"Constructs the SkipField function.có@•—t|dd«‰z}‰||||«S)aSkips a field with the specified tag. |pos| should point to the byte immediately after the tag. Returns: The new position (after the tag value), or -1 if the tag is an end-group tag (in which case the calling loop should break). rr )rß)rrr2r&rOÚWIRETYPE_TO_SKIPPERÚ wiretype_masks €€rr»z _FieldSkipper..SkipFieldAs1ø€ô�I˜a �NÓ# mÑ3€IØ )Ð ˜yÑ )¨&°#°sÓ ;Ð;r) rárãrêrìrýrÿrrÚ TAG_TYPE_MASK)r»rrs @@rÚ _FieldSkipperr1s?ù€ôÜÜÜÜÜÜÜð Ðô×+Ñ+€-õ <ð ÐrrQr[rH)FÚ__doc__Ú __author__rkr_Úgoogle.protobuf.internalrrrÚgoogle.protobufrÚ DecodeErrorrrr!ÚintrIÚ_DecodeSignedVarintÚ_DecodeVarint32r|r'rRrXrbrqryrŠrÚ Int32DecoderÚ Int64DecoderÚ UInt32DecoderÚ UInt64DecoderÚ ZigZagDecodeÚ SInt32DecoderÚ SInt64DecoderroÚFixed32DecoderrxÚFixed64DecoderÚSFixed32DecoderÚSFixed64DecoderÚ FloatDecoderÚ DoubleDecoderÚboolÚ BoolDecoderr�r¢r°rµrJr¯rÂrÏrÓrÝrárãrèrêrìÚDEFAULT_RECURSION_LIMITr¨rðrùrórýrÿrûrrr»rrrÚr!sPðñ0ðd0€ ã Û å/Ý,Ý0Ý#ð ×"Ñ"€ òò6ñ0˜}¨cÓ2€ Ù*¨2¨sÓ3Ðñ! °Ó4€Ù,¨R°Ó5Ðòò:CòL 0ò0ò2*CòZ%CðR"'óOñjØ×ÑÐ!6ó8€ ñØ×ÑÐ!4ó6€ ñ˜{×:Ñ:¸OÓL€ Ù˜{×:Ñ:¸MÓJ€ á Ø×Ñ °+×2JÑ2JóL€ á Ø×Ñ ° ×0HÑ0HóJ€ ñ% [×%AÑ%AÀ4ÓH€Ù$ [×%AÑ%AÀ4ÓH€Ù$ [×%AÑ%AÀ4ÓH€Ù$ [×%AÑ%AÀ4ÓH€Ù‹€ ÙÓ € áØ×Ñ °ó6€ ð $)ó6ðt#(ó*òZ8òv=ðD(�w×'Ñ'¨¨;×+KÑ+KÓLÐò]ò@$òP)ò^  ò ò@ò  òðÐØ*Ðòó "ó"ò6 ò  ò@ò3ò ñ@ ‹O� r