+
    4O|jõ«  ã                  óè  a € 0 t $ R t^ RIHt ^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	t	^ RI
HtHtHtHtHtHtHtHtHtHtHt ^ RIHtHtHtHt ^ RIHt ^ RIHtHt ^ RI H!t!H"t"H#t#H$t$H%t% ^ RI&H't' ^ R	I(H)t) ^ R
I*H+t+ ^ RI,H-t- ^ RI.H/t/ ^ RI0H1t1 ^ RI2H3t3 ^ RI4H5t5 ^ RI6H7t7 ^ RI8H9t9 R]Pt                  R]Pv                  R]Px                  R]Pz                  R]P|                  R]P~                  /t@ ! R R4      tA ! R R4      tB]'       d   ]]]C]3,          ,          tDM]tDR¨tE ! R R]D4      tF]F! ]BPŽ                  R7      tHR]IR&    ]F! ]BP”                  R7      tKR]IR &    ]F! ]BP˜                  R7      tMR]IR!&    ]MtNR]IR"&    R# R$ ltOR% R& ltP]N3R' R( lltQ]N3R) R* lltR]N3R+ R, lltSR- R. ltTR/ R0 ltUR1 R2 ltVR3 R4 ltWR5 R6 ltXR7 R8 ltYR9 R: ltZR; R< lt[R= R> lt\R? R@ lt]RA RB lt^RC RD lt_RE RF lt`RG RH ltaRI RJ ltbRK RL ltcRM RN ltdRO RP lteRQ RR ltfRS RT ltg/ RU]ZbRV]^bRW]YbRX]TbRY]dbRZ]ebR[]fbR\]\bR]]UbR^R_ bR`]abRa]gbRb]cbRc]_bRd]]bRe][bRf]`bRg]b/CthRh]IRi&   ]i! ]h4      tjRj Rk ltkRl Rm ltlRn Ro ltmRp Rq ltnRr Rs ltoRt Ru ltpRv Rw ltqRx Ry ltrRz R{ ltsR| R} lttR~ R ltuR€ R� ltvR‚ Rƒ ltwR„ R… ltxR† R‡ ltyRˆ R‰ ltzRŠ R‹ lt{RŒ R� lt|/ ]}]ob]~]tb]P
                  ]sb]#]lb]]rb]€]qb]C]ob]�! R4      ]ob]	EP                  ]vb]]ub]+]nb]]mb]']zb]-]|b]/]{b]1]wb]3]pb]5]p]7]x])]y/CtƒRŽ]IR�&   / t„R�]IR‘&   ]ƒ F+  t…]†! ]…R’4      '       g   K  ]ƒ]…,          ]„]…EP                  &   K-  	  ]ˆ;QJ d    . R“ ]ƒ 4       F  NK  	  5M! R“ ]ƒ 4       4      t‰]N3R” R• lltŠR– R— lt‹R˜ R™ ltŒRš R› lt�Rœ R� ltŽ]1^]€^]+^])^]7^]/^]-^/t�Rž]IRŸ&   ]C]‹]~]‹]P
                  ]Œ]3]�]']Ž/t�R ]IR¡&   R©R¢ R£ llt‘R¤ R¥ lt’R¦ R§ lt“R# )ªa\  Tools for using Python's :mod:`json` module with BSON documents.

This module provides two helper methods `dumps` and `loads` that wrap the
native :mod:`json` methods and provide explicit BSON conversion to and from
JSON. :class:`~bson.json_util.JSONOptions` provides a way to control how JSON
is emitted and parsed, with the default being the Relaxed Extended JSON format.
:mod:`~bson.json_util` can also generate Canonical or legacy `Extended JSON`_
when :const:`CANONICAL_JSON_OPTIONS` or :const:`LEGACY_JSON_OPTIONS` is
provided, respectively.

.. _Extended JSON: https://github.com/mongodb/specifications/blob/master/source/extended-json/extended-json.md

Example usage (deserialization):

.. doctest::

   >>> from bson.json_util import loads
   >>> loads(
   ...     '[{"foo": [1, 2]}, {"bar": {"hello": "world"}}, {"code": {"$scope": {}, "$code": "function x() { return 1; }"}}, {"bin": {"$type": "80", "$binary": "AQIDBA=="}}]'
   ... )
   [{'foo': [1, 2]}, {'bar': {'hello': 'world'}}, {'code': Code('function x() { return 1; }', {})}, {'bin': Binary(b'...', 128)}]

Example usage with :const:`RELAXED_JSON_OPTIONS` (the default):

.. doctest::

   >>> from bson import Binary, Code
   >>> from bson.json_util import dumps
   >>> dumps(
   ...     [
   ...         {"foo": [1, 2]},
   ...         {"bar": {"hello": "world"}},
   ...         {"code": Code("function x() { return 1; }")},
   ...         {"bin": Binary(b"")},
   ...     ]
   ... )
   '[{"foo": [1, 2]}, {"bar": {"hello": "world"}}, {"code": {"$code": "function x() { return 1; }"}}, {"bin": {"$binary": {"base64": "AQIDBA==", "subType": "00"}}}]'

Example usage (with :const:`CANONICAL_JSON_OPTIONS`):

.. doctest::

   >>> from bson import Binary, Code
   >>> from bson.json_util import dumps, CANONICAL_JSON_OPTIONS
   >>> dumps(
   ...     [
   ...         {"foo": [1, 2]},
   ...         {"bar": {"hello": "world"}},
   ...         {"code": Code("function x() { return 1; }")},
   ...         {"bin": Binary(b"")},
   ...     ],
   ...     json_options=CANONICAL_JSON_OPTIONS,
   ... )
   '[{"foo": [{"$numberInt": "1"}, {"$numberInt": "2"}]}, {"bar": {"hello": "world"}}, {"code": {"$code": "function x() { return 1; }"}}, {"bin": {"$binary": {"base64": "AQIDBA==", "subType": "00"}}}]'

Example usage (with :const:`LEGACY_JSON_OPTIONS`):

.. doctest::

   >>> from bson import Binary, Code
   >>> from bson.json_util import dumps, LEGACY_JSON_OPTIONS
   >>> dumps(
   ...     [
   ...         {"foo": [1, 2]},
   ...         {"bar": {"hello": "world"}},
   ...         {"code": Code("function x() { return 1; }", {})},
   ...         {"bin": Binary(b"")},
   ...     ],
   ...     json_options=LEGACY_JSON_OPTIONS,
   ... )
   '[{"foo": [1, 2]}, {"bar": {"hello": "world"}}, {"code": {"$code": "function x() { return 1; }", "$scope": {}}}, {"bin": {"$binary": "AQIDBA==", "$type": "00"}}]'

Alternatively, you can manually pass the `default` to :func:`json.dumps`.
It won't handle :class:`~bson.binary.Binary` and :class:`~bson.code.Code`
instances (as they are extended strings you can't provide custom defaults),
but it will be faster as there is less recursion.

.. note::
   If your application does not need the flexibility offered by
   :class:`JSONOptions` and spends a large amount of time in the `json_util`
   module, look to
   `python-bsonjs <https://pypi.python.org/pypi/python-bsonjs>`_ for a nice
   performance improvement. `python-bsonjs` is a fast BSON to MongoDB
   Extended JSON converter for Python built on top of
   `libbson <https://github.com/mongodb/libbson>`_. `python-bsonjs` works best
   with PyMongo when using :class:`~bson.raw_bson.RawBSONDocument`.
)ÚannotationsN)ÚTYPE_CHECKINGÚAnyÚCallableÚMappingÚMutableMappingÚOptionalÚSequenceÚTupleÚTypeÚUnionÚcast)ÚALL_UUID_SUBTYPESÚUUID_SUBTYPEÚBinaryÚUuidRepresentation)ÚCode)ÚCodecOptionsÚDatetimeConversion)Ú_MAX_UTC_MSÚEPOCH_AWAREÚ
DatetimeMSÚ_datetime_to_millisÚ_millis_to_datetime)ÚDBRef)Ú
Decimal128)ÚInt64)ÚMaxKey)ÚMinKey)ÚObjectId)ÚRegex)ÚRE_TYPE©Ú	Timestamp)ÚutcÚiÚlÚmÚsÚuÚxc                  ó&   € ] tR t^›t^ t ^t ^tRtR# )ÚDatetimeRepresentation© N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__ÚLEGACYÚ
NUMBERLONGÚISO8601Ú__static_attributes__r-   ó    ÚGC:\Users\alokc\chatbot\backend\venv\Lib\site-packages\bson/json_util.pyr,   r,   ›   s$   † Ø€Fðð €Jðð €Gó	r6   r,   c                  ó&   € ] tR t^¿t^ t ^t ^tRtR# )ÚJSONModer-   N)r.   r/   r0   r1   r2   ÚRELAXEDÚ	CANONICALr5   r-   r6   r7   r9   r9   ¿   s$   † Ø€Fðð €Gðð €Iór6   r9   c                  ó²   a € ] tR t^òt$ R]R&   R]R&   R]R&   R]R&   R]R&   R	 V 3R
 lltRRR]P                  3R V 3R llltR V 3R llt	R R lt
RtV ;t# )ÚJSONOptionsÚintÚ	json_modeÚboolÚstrict_number_longÚdatetime_representationÚstrict_uuidzType[MutableMapping[str, Any]]Údocument_classc               ó    € V ^8„  d   QhRRRR/# )é   Úargsr   Úkwargsr-   )Úformats   "r7   Ú__annotate__ÚJSONOptions.__annotate__ù   s   € ÷ 6ñ 6˜cð 6¨Sñ 6r6   c                ó$   <€ \         SV `  4        R# )a·  Encapsulates JSON options for :func:`dumps` and :func:`loads`.

:param strict_number_long: If ``True``, :class:`~bson.int64.Int64` objects
    are encoded to MongoDB Extended JSON's *Strict mode* type
    `NumberLong`, ie ``'{"$numberLong": "<number>" }'``. Otherwise they
    will be encoded as an `int`. Defaults to ``False``.
:param datetime_representation: The representation to use when encoding
    instances of :class:`datetime.datetime`. Defaults to
    :const:`~DatetimeRepresentation.LEGACY`.
:param strict_uuid: If ``True``, :class:`uuid.UUID` object are encoded to
    MongoDB Extended JSON's *Strict mode* type `Binary`. Otherwise it
    will be encoded as ``'{"$uuid": "<hex>" }'``. Defaults to ``False``.
:param json_mode: The :class:`JSONMode` to use when encoding BSON types to
    Extended JSON. Defaults to :const:`~JSONMode.LEGACY`.
:param document_class: BSON documents returned by :func:`loads` will be
    decoded to an instance of this class. Must be a subclass of
    :class:`collections.MutableMapping`. Defaults to :class:`dict`.
:param uuid_representation: The :class:`~bson.binary.UuidRepresentation`
    to use when encoding and decoding instances of :class:`uuid.UUID`.
    Defaults to :const:`~bson.binary.UuidRepresentation.UNSPECIFIED`.
:param tz_aware: If ``True``, MongoDB Extended JSON's *Strict mode* type
    `Date` will be decoded to timezone aware instances of
    :class:`datetime.datetime`. Otherwise they will be naive. Defaults
    to ``False``.
:param tzinfo: A :class:`datetime.tzinfo` subclass that specifies the
    timezone from which :class:`~datetime.datetime` objects should be
    decoded. Defaults to :const:`~bson.tz_util.utc`.
:param datetime_conversion: Specifies how UTC datetimes should be decoded
    within BSON. Valid options include 'datetime_ms' to return as a
    DatetimeMS, 'datetime' to return as a datetime.datetime and
    raising a ValueError for out-of-range values, 'datetime_auto' to
    return DatetimeMS objects when the underlying datetime is
    out-of-range and 'datetime_clamp' to clamp to the minimum and
    maximum possible datetimes. Defaults to 'datetime'. See
    `handling out of range datetimes <https://www.mongodb.com/docs/languages/python/pymongo-driver/current/data-formats/dates-and-times/#handling-out-of-range-datetimes>`_ for details.
:param args: arguments to :class:`~bson.codec_options.CodecOptions`
:param kwargs: arguments to :class:`~bson.codec_options.CodecOptions`

.. seealso:: The specification for Relaxed and Canonical `Extended JSON`_.

.. versionchanged:: 4.0
   The default for `json_mode` was changed from :const:`JSONMode.LEGACY`
   to :const:`JSONMode.RELAXED`.
   The default for `uuid_representation` was changed from
   :const:`~bson.binary.UuidRepresentation.PYTHON_LEGACY` to
   :const:`~bson.binary.UuidRepresentation.UNSPECIFIED`.

.. versionchanged:: 3.5
   Accepts the optional parameter `json_mode`.

.. versionchanged:: 4.0
   Changed default value of `tz_aware` to False.
N)ÚsuperÚ__init__)ÚselfrG   rH   Ú	__class__s   &*,€r7   rN   ÚJSONOptions.__init__ù   s   ø€ ôl 	‰ÑÖr6   Nc               ó8   € V ^8„  d   QhRRRRRRRRRR	R
RRRRR/# )rF   ÚclszType[JSONOptions]rA   zOptional[bool]rB   zOptional[int]rC   r?   r>   rG   r   rH   Úreturnr=   r-   )rI   s   "r7   rJ   rK   1  sb   € ÷ Añ AØðAà*ðAð "/ðAð $ð	Að
 ðAð ðAð ðAð 
ñAr6   c                	ó|  <€ VP                  R R4      VR &   VR ,          '       d   VP                  R\        4      VR&   V\        P                  \        P                  \        P
                  R39  d   \        R4      h\        \        \        SV `(  ! V .VO5/ VB 4      pV\        P                  \        P                  \        P                  39  d   \        R4      hWGn        VP                  \        P                  8X  dm   V'       d   \        R4      hVR\        P
                  39  d   \        R4      hVR9  d   \        R	4      hRVn        \        P
                  Vn        RVn        V# VP                  \        P                  8X  dl   VR9  d   \        R
4      hVR\        P                  39  d   \        R4      hVR9  d   \        R	4      hRVn        \        P                  Vn        RVn        V# RVn        \        P                  Vn        RVn        Ve   Wn        Ve   W'n        Ve   W7n        V# )Útz_awareFÚtzinfoNznJSONOptions.datetime_representation must be one of LEGACY, NUMBERLONG, or ISO8601 from DatetimeRepresentation.zQJSONOptions.json_mode must be one of LEGACY, RELAXED, or CANONICAL from JSONMode.z<Cannot specify strict_number_long=True with JSONMode.RELAXEDz_datetime_representation must be DatetimeRepresentation.ISO8601 or omitted with JSONMode.RELAXEDTz6Cannot specify strict_uuid=False with JSONMode.RELAXEDz=Cannot specify strict_number_long=False with JSONMode.RELAXEDzbdatetime_representation must be DatetimeRepresentation.NUMBERLONG or omitted with JSONMode.RELAXED)NT)Úgetr$   r,   r2   r3   r4   Ú
ValueErrorr   r=   rM   Ú__new__r9   r:   r;   r?   rA   rB   rC   )	rS   rA   rB   rC   r?   rG   rH   rO   rP   s	   &&&&&*, €r7   rZ   ÚJSONOptions.__new__1  s(  ø€ ð $ŸZ™Z¨
°EÓ:ˆˆzÑØ�*×ÔØ%Ÿz™z¨(´CÓ8ˆF�8ÑØ"Ü"×)Ñ)Ü"×-Ñ-Ü"×*Ñ*Øð	+
ô 
ô ðFóð ô ”K¤¡¢°Ð!F°tÒ!F¸vÑ!FÓGˆØœXŸ_™_¬h×.>Ñ.>Ä×@RÑ@RÐSÔSÜð.óð ð #ŒØ�>‰>œX×-Ñ-Ô-ß!Ü Ð!_Ó`Ð`Ø&¨tÔ5K×5SÑ5SÐ.TÔTÜ ð?óð ð  ,Ô.Ü Ð!YÓZÐZØ&+ˆDÔ#Ü+A×+IÑ+IˆDÔ(Ø#ˆDÔð0 ˆð/ �^‰^œx×1Ñ1Ô1Ø!¨Ô5Ü Ð!`ÓaÐaØ&¨tÔ5K×5VÑ5VÐ.WÔWÜ ðBóð ð  ,Ô.Ü Ð!YÓZÐZØ&*ˆDÔ#Ü+A×+LÑ+LˆDÔ(Ø#ˆDÔð ˆð ',ˆDÔ#Ü+A×+HÑ+HˆDÔ(Ø$ˆDÔØ!Ò-Ø*<Ô'Ø&Ò2Ø/FÔ,ØÒ&Ø#.Ô Øˆr6   c               ó   € V ^8„  d   QhRR/# )rF   rT   Ústrr-   )rI   s   "r7   rJ   rK   t  s   € ÷ 
ñ 
 ñ 
r6   c           	     	ó–   <€ R P                  V P                  V P                  V P                  V P                  \
        SV `  4       4      # )z[strict_number_long={!r}, datetime_representation={!r}, strict_uuid={!r}, json_mode={!r}, {})rI   rA   rB   rC   r?   rM   Ú_arguments_repr)rO   rP   s   &€r7   r_   ÚJSONOptions._arguments_reprt  sD   ø€ ð3ç39±6Ø×'Ñ'Ø×,Ñ,Ø× Ñ Ø—‘Ü‘Ñ'Ó)ó4ð
	
r6   c               ó    € V ^8„  d   QhRRRR/# )rF   rH   r   rT   r=   r-   )rI   s   "r7   rJ   rK   �  s   € ÷ #ñ # Sð #¨[ñ #r6   c                ó¦   € V P                  4       pR F   pVP                  V\        W4      4      W#&   K"  	  VP                  V4       \	        R/ VB # )a@  
Make a copy of this JSONOptions, overriding some options::

    >>> from bson.json_util import CANONICAL_JSON_OPTIONS
    >>> CANONICAL_JSON_OPTIONS.tz_aware
    True
    >>> json_options = CANONICAL_JSON_OPTIONS.with_options(tz_aware=False, tzinfo=None)
    >>> json_options.tz_aware
    False

.. versionadded:: 3.12
)rA   rB   rC   r?   r-   )Ú_asdictrX   ÚgetattrÚupdater=   )rO   rH   ÚoptsÚopts   &,  r7   Úwith_optionsÚJSONOptions.with_options�  sK   € ð �|‰|‹~ˆÛ`ˆCØŸ
™
 3¬°Ó(:Ó;ˆD‹Iñ aà�‰�FÔÜÑ"˜TÑ"Ð"r6   )rB   r?   rA   rC   )r.   r/   r0   r1   Ú__annotations__rN   r9   r:   rZ   r_   rh   r5   Ú__classcell__)rP   s   @r7   r=   r=   ò   s`   ø‡ ØƒNØÓØ Ó ØÓØ2Ó2÷6ð 6ðt .2Ø15Ø&*Ø!×)Ñ)÷Aò A÷F
ð 
÷#ó #r6   r=   )r?   ÚLEGACY_JSON_OPTIONSÚCANONICAL_JSON_OPTIONSÚRELAXED_JSON_OPTIONSÚDEFAULT_JSON_OPTIONSc               ó(   € V ^8„  d   QhRRRRRRRR/# )rF   Úobjr   rG   rH   rT   r]   r-   )rI   s   "r7   rJ   rJ   º  s.   € ÷ Iñ Iˆsð I˜3ð I¨#ð I°#ñ Ir6   c                ót   € VP                  R\        4      p\        P                  ! \	        W4      .VO5/ VB # )a%  Helper function that wraps :func:`json.dumps`.

Recursive function that handles all BSON types including
:class:`~bson.binary.Binary` and :class:`~bson.code.Code`.

:param json_options: A :class:`JSONOptions` instance used to modify the
    encoding of MongoDB Extended JSON types. Defaults to
    :const:`DEFAULT_JSON_OPTIONS`.

.. versionchanged:: 4.0
   Now outputs MongoDB Relaxed Extended JSON by default (using
   :const:`DEFAULT_JSON_OPTIONS`).

.. versionchanged:: 3.4
   Accepts optional parameter `json_options`. See :class:`JSONOptions`.
Újson_options)Úpopro   ÚjsonÚdumpsÚ_json_convert)rq   rG   rH   rs   s   &*, r7   rv   rv   º  s3   € ð" —:‘:˜nÔ.BÓC€LÜ�:Š:”m CÓ6ÐH¸ÒHÀÑHÐHr6   c               ó(   € V ^8„  d   QhRRRRRRRR/# )rF   r(   zUnion[str, bytes, bytearray]rG   r   rH   rT   r-   )rI   s   "r7   rJ   rJ   Ï  s)   € ÷ *ñ *Ð)ð *°#ð *Àð *Èñ *r6   c                ó²   a€ VP                  R\        4      oSP                  \        J d   V3R lVR&   M	V3R lVR&   \        P
                  ! V .VO5/ VB # )aº  Helper function that wraps :func:`json.loads`.

Automatically passes the object_hook for BSON type conversion.

Raises ``TypeError``, ``ValueError``, ``KeyError``, or
:exc:`~bson.errors.InvalidId` on invalid MongoDB Extended JSON.

:param json_options: A :class:`JSONOptions` instance used to modify the
    decoding of MongoDB Extended JSON types. Defaults to
    :const:`DEFAULT_JSON_OPTIONS`.

.. versionchanged:: 4.0
   Now loads :class:`datetime.datetime` instances as naive by default. To
   load timezone aware instances utilize the `json_options` parameter.
   See :ref:`tz_aware_default_change` for an example.

.. versionchanged:: 3.5
   Parses Relaxed and Canonical Extended JSON as well as PyMongo's legacy
   format. Now raises ``TypeError`` or ``ValueError`` when parsing JSON
   type wrappers with values of the wrong type or any extra keys.

.. versionchanged:: 3.4
   Accepts optional parameter `json_options`. See :class:`JSONOptions`.
rs   c                ó   <€ \        V S4      # ©N)Úobject_hook©rq   rs   s   &€r7   Ú<lambda>Úloads.<locals>.<lambda>ë  s   ø€ ¬K¸¸\Ô,Jr6   r|   c                ó   <€ \        V S4      # r{   )Úobject_pairs_hook©Úpairsrs   s   &€r7   r~   r   í  s   ø€ Ô4EÀeÈ\Ô4Zr6   r�   )rt   ro   rD   Údictru   Úloads)r(   rG   rH   rs   s   &*,@r7   r…   r…   Ï  sR   ø€ ð2 —:‘:˜nÔ.BÓC€Là×"Ñ"¤dÓ*Ü Jˆˆ}Òä&ZˆÐ"Ñ#Ü�:Š:�aÐ)˜$Ò) &Ñ)Ð)r6   c               ó$   € V ^8„  d   QhRRRRRR/# ©rF   rq   r   rs   r=   rT   r-   )rI   s   "r7   rJ   rJ   ñ  s"   € ÷ ñ �sð ¨+ð ÐQTñ r6   c           	     óh  € \        V R4      '       d/   V P                  4        UUu/ uF  w  r#V\        W14      bK  	  upp# \        V R4      '       d8   \        V \        \
        34      '       g   V  Uu. uF  p\        W14      NK  	  up#  \        W4      # u uppi u upi   \         d    T u # i ; i)zURecursive helper method that converts BSON types so they can be
converted into json.
ÚitemsÚ__iter__)Úhasattrr‰   rw   Ú
isinstancer]   ÚbytesÚdefaultÚ	TypeError)rq   rs   ÚkÚvs   &&  r7   rw   rw   ñ  sž   € ô ˆs�G×ÒØ>A¿i¹i¼kÔJ¹k±d°a�”= Ó1Ò1¹kÒJÐJÜ	��j×	!Ò	!¬*°S¼3Ä¸,×*GÒ*GÙ8;Ó<¹°1”˜aÖ.¹Ñ<Ð<ðÜ�sÓ)Ð)ùó	 Kùâ<øô ô ØŠ
ðús   ¦BÁ3BÂ
B! Â!B1Â0B1c               ó$   € V ^8„  d   QhRRRRRR/# )rF   rƒ   zSequence[Tuple[str, Any]]rs   r=   rT   r   r-   )rI   s   "r7   rJ   rJ   ÿ  s)   € ÷ Iñ IØ$ðIØ4?ðIàñIr6   c                ó8   € \        VP                  V 4      V4      # r{   )r|   rD   r‚   s   &&r7   r�   r�   ÿ  s   € ô �|×2Ñ2°5Ó9¸<ÓHÐHr6   c               ó$   € V ^8„  d   QhRRRRRR/# )rF   ÚdctzMapping[str, Any]rs   r=   rT   r   r-   )rI   s   "r7   rJ   rJ     s#   € ÷ ñ Ð&ð °kð Ð]`ñ r6   c                óp   € R pV  F  pV\         9   g   K  Tp M	  V'       d   \        V,          ! W4      # V # r{   )Ú_PARSERS_SETÚ_PARSERS)r•   rs   Úmatchr�   s   &&  r7   r|   r|     s:   € Ø€EÛˆØ”ÖØˆEÙñ ÷ Ü˜Ž˜sÓ1Ð1Ø€Jr6   c               ó$   € V ^8„  d   QhRRRRRR/# ©rF   Údocr   Údummy0rT   r-   )rI   s   "r7   rJ   rJ     s!   € ÷ 	!ñ 	!˜Sð 	!¨#ð 	!°#ñ 	!r6   c                óÖ   € V R ,          p\        V\        \        34      '       g   V # ^ pV P                  RR4       F   pV\        P                  V^ 4      ,          pK"  	  \        W#4      # )ú$regexú$optionsÚ )rŒ   r]   r�   rX   Ú_RE_OPT_TABLEr    )rœ   r�   ÚpatternÚflagsrg   s   &&   r7   Ú_parse_legacy_regexr¥     s]   € Ø�(�m€Gä�g¤¤U˜|×,Ò,Øˆ
Ø€Eà�w‰w�z 2Ö&ˆØ”×"Ñ" 3¨Ó*Õ*Šñ 'ä�Ó Ð r6   c               ó$   € V ^8„  d   QhRRRRRR/# ©rF   rœ   r   rs   r=   rT   úUnion[Binary, uuid.UUID]r-   )rI   s   "r7   rJ   rJ     s"   € ÷ 	'ñ 	'˜Cð 	'¨{ð 	'Ð?Wñ 	'r6   c                ón  € \        V 4      ^8w  d   \        RV  24      h\        V R,          \        4      '       g   \        RV  24      hVP                  \
        P                  8X  d2   \        P                  ! \        P                  ! V R,          4      4      # \        P                  ! V R,          4      # )z*Decode a JSON legacy $uuid to Python UUID.zBad $uuid, extra field(s): ú$uuidz$uuid must be a string: )Úlenr�   rŒ   r]   Úuuid_representationr   ÚUNSPECIFIEDr   Ú	from_uuidÚuuidÚUUID©rœ   rs   s   &&r7   Ú_parse_legacy_uuidr²     sŠ   € ä
ˆ3ƒx�1„}ÜÐ5°c°UÐ;Ó<Ð<Ü�c˜'•l¤C×(Ò(ÜÐ2°3°%Ð8Ó9Ð9Ø×'Ñ'Ô+=×+IÑ+IÔIÜ×Ò¤§	¢	¨#¨g­,Ó 7Ó8Ð8ä�yŠy˜˜W�Ó&Ð&r6   c               ó(   € V ^8„  d   QhRRRRRRRR/# )	rF   Údatar   Úsubtyper>   rs   r=   rT   r¨   r-   )rI   s   "r7   rJ   rJ   (  s)   € ÷ !ñ !˜#ð !¨ð !¸;ð !ÐKcñ !r6   c                óp  € V\         9   d�   VP                  p\        W4      pV\        P                  8X  d   V# V\
        8X  d   \        P                  pM%V\        P                  8X  d   \        P                  pVP                  V4      # V^ 8X  d   \        \        P                  V 4      # \        W4      # ©é    )r   r¬   r   r   r­   r   ÚSTANDARDÚPYTHON_LEGACYÚas_uuidr   r¯   r°   )r´   rµ   rs   r¬   Úbinary_values   &&&  r7   Ú_binary_or_uuidr½   (  sœ   € àÔ#Ô#Ø*×>Ñ>ÐÜ˜dÓ,ˆØÔ"4×"@Ñ"@Ô@ØÐØ”lÔ"ä"4×"=Ñ"=ÑØ Ô$6×$?Ñ$?Ô?ô #5×"BÑ"BÐØ×#Ñ#Ð$7Ó8Ð8à�!„|Ü”D—I‘I˜tÓ$Ð$Ü�$Ó Ð r6   c               ó$   € V ^8„  d   QhRRRRRR/# r§   r-   )rI   s   "r7   rJ   rJ   =  s"   € ÷ 8ñ 8˜cð 8°ð 8ÐAYñ 8r6   c                ó8  € \        V R ,          \        4      '       d   RV R ,          ,          V R &   \        V R ,          ^4      pVR8¼  d   \        V R ,          R,          ^4      p\        P                  ! V R,          P	                  4       4      p\        W2V4      # )ú$typeú%02xl   €ÿ :é   NNú$binary)rŒ   r>   Úbase64Ú	b64decodeÚencoder½   )rœ   rs   rµ   r´   s   &&  r7   Ú_parse_legacy_binaryrÇ   =  s|   € Ü�#�g•,¤×$Ò$Ø  G¥Õ,ˆˆG‰Ü�#�g•, Ó#€GØ�*ÔÜ�c˜'•l 2Õ&¨Ó+ˆÜ×Ò˜C 	�N×1Ñ1Ó3Ó4€DÜ˜4¨,Ó7Ð7r6   c               ó$   € V ^8„  d   QhRRRRRR/# r§   r-   )rI   s   "r7   rJ   rJ   G  s'   € ÷ Añ A ð A°Kð AÐD\ñ Ar6   c                óš  € V R ,          pVR,          pVR,          p\        V\        4      '       g   \        RV  24      h\        V\        4      '       d   \        V4      ^8”  d   \        RV  24      h\        V4      ^8w  d   \        RV  24      h\        P
                  ! VP                  4       4      p\        V\        V^4      V4      # )rÃ   rÄ   ÚsubTypez!$binary base64 must be a string: z7$binary subType must be a string at most 2 characters: z=$binary must include only "base64" and "subType" components: )	rŒ   r]   r�   r«   rÄ   rÅ   rÆ   r½   r>   )rœ   rs   ÚbinaryÚb64rµ   r´   s   &&    r7   Ú_parse_canonical_binaryrÍ   G  s¹   € Ø��^€FØ
�Õ
€CØ�YÕ€GÜ�cœ3×ÒÜÐ;¸C¸5ÐAÓBÐBÜ�gœs×#Ò#¤s¨7£|°aÔ'7ÜÐQÐRUÐQVÐWÓXÐXÜ
ˆ6ƒ{�aÔÜÐWÐX[ÐW\Ð]Ó^Ð^ä×Ò˜CŸJ™J›LÓ)€DÜ˜4¤ W¨bÓ!1°<Ó@Ð@r6   c               ó$   € V ^8„  d   QhRRRRRR/# )rF   rœ   r   rs   r=   rT   z$Union[datetime.datetime, DatetimeMS]r-   )rI   s   "r7   rJ   rJ   V  s.   € ÷ BRñ BRØ	ðBRØ'ðBRà)ñBRr6   c                ó6  € V R,          p\        V 4      ^8w  d   \        RV  24      h\        V\        4      '       Edš    VR,          R8X  d	   VRR pRpM^VR,          R9   d   VR,          R8X  d   VRR pVRR pM7VR,          R9   d   VRR pVRR pMVR,          R9   d   VRR pVRR pMTpRp VP                  R
4      p^ pVR8w  d#   \        \        W6R 4      R,          4      pVRV p\        P                  P                  VR4      P                  V\        R7      pV'       Ed   VR8w  dû   \        V4      ^8X  dE   VR,          P                  R4      w  rš\        V	4      R,          \        V
4      ^<,          ,           pMq\        V4      ^8X  d9   \        VR,          4      R,          \        VR,          4      ^<,          ,           pM)\        V4      ^8X  d   \        VR,          4      R,          pV^ ,          R8X  d
   XR,          pV\        P                  ! XR7      ,
          pVP                  '       dZ   VP                   '       d   VP#                  VP                   4      pVP$                  \&        P(                  8X  d   \+        V4      # V# VP                  RR7      pVP$                  \&        P(                  8X  d   \+        V4      # V# \-        \        V4      \/        RV4      4      #   \         d   p\        RT: R	24      ThRp?ii ; i)z3Decode a JSON datetime to python datetime.datetime.ú$datezBad $date, extra field(s): ÚZNÚ-Ú:r¡   z
time data z( does not match ISO-8601 datetime formatÚ.i@B ú%Y-%m-%dT%H:%M:%S)ÚmicrosecondrW   :é   NNi  :r×   é   N:rØ   NN)Úseconds©rW   zCodecOptions[Any]éÿÿÿÿiúÿÿÿ)Ú+rÒ   éýÿÿÿéûÿÿÿ)r«   r�   rŒ   r]   Ú
IndexErrorrY   Úrfindr>   ÚfloatÚdatetimeÚstrptimeÚreplacer$   ÚsplitÚ	timedeltarV   rW   Ú
astimezoneÚdatetime_conversionr   ÚDATETIME_MSr   r   r   )rœ   rs   ÚdtmÚdtÚoffsetÚexcÚ	dot_indexrÖ   ÚawareÚhoursÚminutesÚsecsÚaware_tzinfo_nones   &&           r7   Ú_parse_canonical_datetimerô   V  sÖ  € ð ˆg�,€CÜ
ˆ3ƒx�1„}ÜÐ5°c°UÐ;Ó<Ð<ä�#”s×Óð	dà�2�w˜#Œ~Ø˜˜"�X�Ø‘Ø�R•˜JÔ&¨3¨r­7°c¬>à˜˜"�X�Ø˜R˜S˜‘Ø�R•˜JÔ&à˜˜"�X�Ø˜R˜S˜‘Ø�R•˜JÔ&à˜˜"�X�Ø˜R˜S˜‘à�Ø‘ð
 —H‘H˜S“Mˆ	ØˆØ˜Œ?Üœe B z NÓ3°gÕ=Ó>ˆKØ�J�Y�ˆBä×!Ñ!×*Ñ*¨2Ð/BÓC×KÑKØ#¬Cð Ló 
ˆ÷ ˆ6�f ”mÜ�6‹{˜aÔØ!'¨¥×!1Ñ!1°#Ó!6‘�Ü˜5“z DÕ(¬3¨w«<¸"Õ+<Õ<‘Ü�V“ Ô!Ü˜6 #�;Ó'¨$Õ.´°V¸BµZ³À2Õ1EÕE‘Ü�V“ Ô!Ü˜6 #�;Ó'¨$Õ.�Ø�a�y˜CÔØ˜•
�ØœH×.Ò.°tÔ<Õ<ˆEà× × Ð Ø×"×"Ð"Ø×(Ñ(¨×)<Ñ)<Ó=�Ø×/Ñ/Ô3E×3QÑ3QÔQÜ! %Ó(Ð(ØˆLà %§¡°T Ó :ÐØ×/Ñ/Ô3E×3QÑ3QÔQÜ!Ð"3Ó4Ð4Ø$Ð$Üœs 3›x¬Ð.AÀ<Ó)PÓQÐQøôK ô 	dÜ˜z¨#©Ð0XÐYÓZÐ`cÐcûð	dús0   Á K7 Á&K7 Á=K7 ÂK7 Â/K7 Ë7LÌLÌLc               ó$   € V ^8„  d   QhRRRRRR/# )rF   rœ   r   r�   rT   r   r-   )rI   s   "r7   rJ   rJ   ›  s!   € ÷ !ñ !˜cð !¨3ð !°8ñ !r6   c                ób   € \        V 4      ^8w  d   \        RV  24      h\        V R,          4      # )z1Decode a JSON ObjectId to bson.objectid.ObjectId.zBad $oid, extra field(s): ú$oid)r«   r�   r   ©rœ   r�   s   &&r7   Ú_parse_canonical_oidrù   ›  s/   € ä
ˆ3ƒx�1„}ÜÐ4°S°EÐ:Ó;Ð;Ü�C˜•KÓ Ð r6   c               ó$   € V ^8„  d   QhRRRRRR/# )rF   rœ   r   r�   rT   r]   r-   )rI   s   "r7   rJ   rJ   ¢  s!   € ÷ ñ  ð ¨cð °cñ r6   c                óf   € V R,          p\        V 4      ^8w  d   \        RV  24      h\        V4      # )z&Decode a JSON symbol to Python string.ú$symbolzBad $symbol, extra field(s): )r«   r�   r]   )rœ   r�   Úsymbols   && r7   Ú_parse_canonical_symbolrþ   ¢  s3   € à��^€FÜ
ˆ3ƒx�1„}ÜÐ7¸°uÐ=Ó>Ð>Üˆv‹;Ðr6   c               ó$   € V ^8„  d   QhRRRRRR/# )rF   rœ   r   r�   rT   r   r-   )rI   s   "r7   rJ   rJ   ª  s!   € ÷ 7ñ 7˜sð 7¨Cð 7°Dñ 7r6   c                ó„   € V  F  pVR9  g   K  \        RV  24      h	  \        V R,          V P                  R4      R7      # )z%Decode a JSON code to bson.code.Code.ú$codeú$scopezBad $code, extra field(s): )Úscope)r  r  )r�   r   rX   )rœ   r�   Úkeys   && r7   Ú_parse_canonical_coder  ª  sD   € ãˆØÐ)Ö)ÜÐ9¸#¸Ð?Ó@Ð@ñ ô ��G• C§G¡G¨HÓ$5Ô6Ð6r6   c               ó$   € V ^8„  d   QhRRRRRR/# )rF   rœ   r   r�   rT   z
Regex[str]r-   )rI   s   "r7   rJ   rJ   ²  s!   € ÷ )ñ ) ð )¨Sð )°Zñ )r6   c                ó&  € V R,          p\        V 4      ^8w  d   \        RV  24      h\        V4      ^8w  d   \        RV  24      hVR,          p\        V\        4      '       g   \        R\	        V4      ,          4      h\        VR,          V4      # )z(Decode a JSON regex to bson.regex.Regex.ú$regularExpressionz(Bad $regularExpression, extra field(s): zLBad $regularExpression must include only "pattern and "options" components: ÚoptionszCBad $regularExpression options, options must be string, was type %sr£   )r«   r�   rŒ   r]   Útyper    )rœ   r�   Úregexrf   s   &&  r7   Ú_parse_canonical_regexr  ²  s˜   € àÐ$Õ%€EÜ
ˆ3ƒx�1„}ÜÐBÀ3À%ÐHÓIÐIÜ
ˆ5ƒz�Q„ÜØZÐ[^ÐZ_Ð`ó
ð 	
ð �Õ€DÜ�dœC× Ò ÜØQÔUYÐZ^ÓU_Õ`ó
ð 	
ô ��yÕ! 4Ó(Ð(r6   c               ó$   € V ^8„  d   QhRRRRRR/# r›   r-   )rI   s   "r7   rJ   rJ   Ã  s!   € ÷ ñ  ð ¨Sð °Sñ r6   c                ó8  € \        V P                  R4      \        4      '       du   RV 9   dn   \        V P                  R4      \        \        R4      34      '       d>   \	        V P                  R4      V P                  R4      3RV P                  RR4      /V B # V # )z(Decode a JSON DBRef to bson.dbref.DBRef.ú$refz$idz$dbNÚdatabase)rŒ   rX   r]   r
  r   rt   rø   s   &&r7   Ú_parse_canonical_dbrefr  Ã  sv   € ô 	�3—7‘7˜6“?¤C×(Ò(Ø�SŒLÜ�s—w‘w˜u“~¬¬T°$«ZÐ'8×9Ò9ä�S—W‘W˜V“_ c§g¡g¨e£nÑ[¸s¿w¹wÀuÈdÓ?SÐ[ÐWZÑ[Ð[Ø€Jr6   c               ó$   € V ^8„  d   QhRRRRRR/# r›   r-   )rI   s   "r7   rJ   rJ   Î  s&   € ÷ Dñ D Cð D°ð D¸ñ Dr6   c                óŒ  € V R,          p\        V 4      ^8w  d   \        RV  24      h\        V\        4      '       d{   VP	                  4       pVP
                  e   \        RV 24      h\        VP                  \        4      '       g   \        RV 24      h\        V4      ^8w  d   \        RV 24      hV# \        RV  24      h)z9Decode a JSON (deprecated) DBPointer to bson.dbref.DBRef.ú
$dbPointerz Bad $dbPointer, extra field(s): z!Bad $dbPointer, extra field $db: z)Bad $dbPointer, $id must be an ObjectId: z)Bad $dbPointer, extra field(s) in DBRef: z"Bad $dbPointer, expected a DBRef: )r«   r�   rŒ   r   Úas_docr  Úidr   )rœ   r�   ÚdbrefÚ	dbref_docs   &&  r7   Ú_parse_canonical_dbpointerr  Î  sº   € à�Õ€EÜ
ˆ3ƒx�1„}ÜÐ:¸3¸%Ð@ÓAÐAÜ�%œ×ÒØ—L‘L“Nˆ	à�>‰>Ò%ÜÐ?À	¸{ÐKÓLÐLÜ˜%Ÿ(™(¤H×-Ò-ÜÐGÈ	À{ÐSÓTÐTÜˆy‹>˜QÔÜÐGÈ	À{ÐSÓTÐTØˆäÐ<¸S¸EÐBÓCÐCr6   c               ó$   € V ^8„  d   QhRRRRRR/# )rF   rœ   r   r�   rT   r>   r-   )rI   s   "r7   rJ   rJ   á  s!   € ÷ ñ  ð ¨Sð °Sñ r6   c                ó®   € V R,          p\        V 4      ^8w  d   \        RV  24      h\        V\        4      '       g   \        RV  24      h\	        V4      # )z"Decode a JSON int32 to python int.ú
$numberIntz Bad $numberInt, extra field(s): z$numberInt must be string: )r«   r�   rŒ   r]   r>   )rœ   r�   Úi_strs   && r7   Ú_parse_canonical_int32r  á  sT   € à�Õ€EÜ
ˆ3ƒx�1„}ÜÐ:¸3¸%Ð@ÓAÐAÜ�eœS×!Ò!ÜÐ5°c°UÐ;Ó<Ð<Üˆu‹:Ðr6   c               ó$   € V ^8„  d   QhRRRRRR/# )rF   rœ   r   r�   rT   r   r-   )rI   s   "r7   rJ   rJ   ë  s!   € ÷ ñ  ð ¨Sð °Uñ r6   c                óf   € V R,          p\        V 4      ^8w  d   \        RV  24      h\        V4      # )z(Decode a JSON int64 to bson.int64.Int64.ú$numberLongz!Bad $numberLong, extra field(s): )r«   r�   r   )rœ   r�   Úl_strs   && r7   Ú_parse_canonical_int64r#  ë  s4   € à�Õ€EÜ
ˆ3ƒx�1„}ÜÐ;¸C¸5ÐAÓBÐBÜ�‹<Ðr6   c               ó$   € V ^8„  d   QhRRRRRR/# )rF   rœ   r   r�   rT   rá   r-   )rI   s   "r7   rJ   rJ   ó  s!   € ÷ ñ  ð ¨cð °eñ r6   c                ó®   € V R,          p\        V 4      ^8w  d   \        RV  24      h\        V\        4      '       g   \        RV  24      h\	        V4      # )z%Decode a JSON double to python float.ú$numberDoublez#Bad $numberDouble, extra field(s): z$numberDouble must be string: )r«   r�   rŒ   r]   rá   ©rœ   r�   Úd_strs   && r7   Ú_parse_canonical_doubler)  ó  sT   € à�Õ €EÜ
ˆ3ƒx�1„}ÜÐ=¸c¸UÐCÓDÐDÜ�eœS×!Ò!ÜÐ8¸¸Ð>Ó?Ð?Ü�‹<Ðr6   c               ó$   € V ^8„  d   QhRRRRRR/# )rF   rœ   r   r�   rT   r   r-   )rI   s   "r7   rJ   rJ   ý  s!   € ÷ ñ  Sð °#ð ¸*ñ r6   c                ó®   € V R,          p\        V 4      ^8w  d   \        RV  24      h\        V\        4      '       g   \        RV  24      h\	        V4      # )z7Decode a JSON decimal128 to bson.decimal128.Decimal128.ú$numberDecimalz$Bad $numberDecimal, extra field(s): z$numberDecimal must be string: )r«   r�   rŒ   r]   r   r'  s   && r7   Ú_parse_canonical_decimal128r-  ý  sV   € àÐ Õ!€EÜ
ˆ3ƒx�1„}ÜÐ>¸s¸eÐDÓEÐEÜ�eœS×!Ò!ÜÐ9¸#¸Ð?Ó@Ð@Ü�eÓÐr6   c               ó$   € V ^8„  d   QhRRRRRR/# )rF   rœ   r   r�   rT   r   r-   )rI   s   "r7   rJ   rJ     ó!   € ÷ ñ  ð ¨cð °fñ r6   c                ó¾   € \        V R,          4      \        Jg   V R,          ^8w  d   \        RV  24      h\        V 4      ^8w  d   \        RV  24      h\	        4       # )z,Decode a JSON MinKey to bson.min_key.MinKey.ú$minKeyz$minKey value must be 1: úBad $minKey, extra field(s): )r
  r>   r�   r«   r   rø   s   &&r7   Ú_parse_canonical_minkeyr3    sV   € äˆC�	�NÓ¤3Ó&¨#¨i­.¸AÔ*=ÜÐ3°C°5Ð9Ó:Ð:Ü
ˆ3ƒx�1„}ÜÐ7¸°uÐ=Ó>Ð>Ü‹8€Or6   c               ó$   € V ^8„  d   QhRRRRRR/# )rF   rœ   r   r�   rT   r   r-   )rI   s   "r7   rJ   rJ     r/  r6   c                ó¼   € \        V R,          4      \        Jg   V R,          ^8w  d   \        RV 34      h\        V 4      ^8w  d   \        RV  24      h\	        4       # )z,Decode a JSON MaxKey to bson.max_key.MaxKey.ú$maxKeyz$maxKey value must be 1: %sr2  )r
  r>   r�   r«   r   rø   s   &&r7   Ú_parse_canonical_maxkeyr7    sS   € äˆC�	�NÓ¤3Ó&¨#¨i­.¸AÔ*=ÜÐ5¸°vÓ>Ð>Ü
ˆ3ƒx�1„}ÜÐ7¸°uÐ=Ó>Ð>Ü‹8€Or6   c               ó$   € V ^8„  d   QhRRRRRR/# r§   r-   )rI   s   "r7   rJ   rJ     s"   € ÷ :ñ :�sð :¨+ð :Ð:Rñ :r6   c                ó<   € R V 9   d   \        W4      # \        W4      # )rÀ   )rÇ   rÍ   r±   s   &&r7   Ú_parse_binaryr:    s   € Ø�#„~Ü# CÓ6Ð6ä& sÓ9Ð9r6   c               ó$   € V ^8„  d   QhRRRRRR/# )rF   rœ   r   r�   rT   r#   r-   )rI   s   "r7   rJ   rJ      s!   € ÷ )ñ )˜#ð ) sð )¨yñ )r6   c                óH   € V R ,          p\        VR,          VR,          4      # ©ú
$timestampÚtr%   r"   )rœ   r�   Útsps   && r7   Ú_parse_timestamprA     s!   € Ø
ˆlÕ
€CÜ�S˜•X˜s 3�xÓ(Ð(r6   r÷   r  rÐ   rŸ   r1  r6  rÃ   r  rª   z
$undefinedc                ó   € R # r{   r-   )Ú_Ú_1s   &&r7   r~   r~   /  s   € ¡r6   r!  r>  r,  r  r  rü   r  r&  z,dict[str, Callable[[Any, JSONOptions], Any]]r˜   c               ó(   € V ^8„  d   QhRRRRRRRR/# )	rF   r´   r�   rµ   r>   rs   r=   rT   r   r-   )rI   s   "r7   rJ   rJ   <  s.   € ÷ añ a˜ð a¨ð a¸Kð aÈCñ ar6   c                ó   € VP                   \        P                  8X  d0   R \        P                  ! V 4      P                  4       RRV,          /# R R\        P                  ! V 4      P                  4       RRV,          //# )rÃ   rÀ   rÁ   rÄ   rÊ   )r?   r9   r2   rÄ   Ú	b64encodeÚdecode)r´   rµ   rs   s   &&&r7   Ú_encode_binaryrI  <  sj   € Ø×Ñ¤§¡Ô0Øœ6×+Ò+¨DÓ1×8Ñ8Ó:¸GÀVÈgÕEUÐVÐVØ˜¤&×"2Ò"2°4Ó"8×"?Ñ"?Ó"AÀ9ÈfÐW^ÕN^Ð_Ð`Ð`r6   c               ó$   € V ^8„  d   QhRRRRRR/# ©rF   rq   r   rs   r=   rT   r„   r-   )rI   s   "r7   rJ   rJ   B  s!   € ÷ 5ñ 5˜Cð 5¨{ð 5¸tñ 5r6   c                ó:  € VP                   \        P                  8X  d:   ^ \        V 4      u;8:  d   \        8:  d   M M\        V P                  4       V4      # VP                   \        P                  8X  d   R\        V 4      /# RR\        \        V 4      4      //# )r¸   rÐ   r!  )	rB   r,   r4   r>   r   Ú_encode_datetimeÚas_datetimer2   r]   r}   s   &&r7   Ú_encode_datetimemsrO  B  sx   € à×,Ñ,Ô0F×0NÑ0NÔNØ”�S“Ö(œ[×(ä §¡Ó 1°<Ó@Ð@Ø	×	-Ñ	-Ô1G×1NÑ1NÔ	NØœ˜S›Ð"Ð"Ø�m¤S¬¨S«£]Ð3Ð4Ð4r6   c               ó$   € V ^8„  d   QhRRRRRR/# )rF   rq   r   rs   r=   rT   r„   r-   )rI   s   "r7   rJ   rJ   M  s&   € ÷ Uñ U�dð U¨+ð U¸$ñ Ur6   c                ó~   € V P                   f   R\        V 4      /# R\        V 4      R\        V P                   V4      /# )Nr  r  )r  r]   rw   r}   s   &&r7   Ú_encode_coderR  M  s9   € Ø
‡y�yÒØœ˜S›Ð"Ð"àœ˜S› 8¬]¸3¿9¹9ÀlÓ-SÐTÐTr6   c               ó$   € V ^8„  d   QhRRRRRR/# )rF   rq   r   rs   r=   rT   r   r-   )rI   s   "r7   rJ   rJ   T  s!   € ÷ ñ �uð ¨Kð ¸Cñ r6   c                óV   € VP                   '       d   R \        V 4      /# \        V 4      # )r!  )rA   r]   r>   r}   s   &&r7   Ú_encode_int64rU  T  s&   € Ø×&×&Ð&Øœs 3›xÐ(Ð(ä�3‹xˆr6   c               ó$   € V ^8„  d   QhRRRRRR/# )rF   rq   r   r�   rT   r-   )rI   s   "r7   rJ   rJ   [  s!   € ÷ ñ �cð  3ð ¨3ñ r6   c                ó   € V # r{   r-   ©rq   r�   s   &&r7   Ú_encode_nooprY  [  s   € Ø€Jr6   c               ó$   € V ^8„  d   QhRRRRRR/# rK  r-   )rI   s   "r7   rJ   rJ   _  s&   € ÷ Jñ J�sð J¨+ð J¸$ñ Jr6   c                ó0  € R pV P                   \        P                  ,          '       d
   VR,          pV P                   \        P                  ,          '       d
   VR,          pV P                   \        P                  ,          '       d
   VR,          pV P                   \        P
                  ,          '       d
   VR,          pV P                   \        P                  ,          '       d
   VR,          pV P                   \        P                  ,          '       d
   VR,          p\        V P                  \        4      '       d   V P                  pMV P                  P                  R4      pVP                  \        P                  8X  d   RVR	V/# R
RVRV//# )r¡   r%   r&   r'   r(   r)   r*   zutf-8rŸ   r    r  r£   r	  )r¤   ÚreÚ
IGNORECASEÚLOCALEÚ	MULTILINEÚDOTALLÚUNICODEÚVERBOSErŒ   r£   r]   rH  r?   r9   r2   )rq   rs   r¤   r£   s   &&  r7   Ú_encode_regexrc  _  s  € Ø€EØ
‡y�y”2—=‘=× Ô Ø��ˆØ
‡y�y”2—9‘9×ÔØ��ˆØ
‡y�y”2—<‘<×ÔØ��ˆØ
‡y�y”2—9‘9×ÔØ��ˆØ
‡y�y”2—:‘:×ÔØ��ˆØ
‡y�y”2—:‘:×ÔØ��ˆÜ�#—+‘+œs×#Ò#Ø—+‘+‰à—+‘+×$Ñ$ WÓ-ˆØ×Ñ¤§¡Ô0Ø˜' :¨uÐ5Ð5Ø  9¨g°yÀ%Ð"HÐIÐIr6   c               ó$   € V ^8„  d   QhRRRRRR/# )rF   rq   r>   rs   r=   rT   r   r-   )rI   s   "r7   rJ   rJ   v  s!   € ÷ ñ �Sð ¨ð ¸ñ r6   c                ó®   € VP                   \        P                  8X  d6   \        ) T u;8:  d   \        8  d   M MR \	        V 4      /# R\	        V 4      /# V # )r  r!  )r?   r9   r;   Ú
_INT32_MAXr]   r}   s   &&r7   Ú_encode_intrg  v  sH   € Ø×Ñ¤×!3Ñ!3Ô3Üˆ;˜#Ö*¤
×*Ø ¤# c£(Ð+Ð+Øœs 3›xÐ(Ð(Ø€Jr6   c               ó$   € V ^8„  d   QhRRRRRR/# )rF   rq   rá   rs   r=   rT   r   r-   )rI   s   "r7   rJ   rJ   ~  s!   € ÷ ñ �uð ¨Kð ¸Cñ r6   c                óD  € VP                   \        P                  8w  d�   \        P                  ! V 4      '       d   R R/# \        P
                  ! V 4      '       d   V ^ 8”  d   RMRpR V/# VP                   \        P                  8X  d   R \        \        V 4      4      /# V # )r&  ÚNaNÚInfinityz	-Infinity)	r?   r9   r2   ÚmathÚisnanÚisinfr;   r]   Úrepr)rq   rs   Úrepresentations   && r7   Ú_encode_floatrq  ~  s   € Ø×Ñ¤§¡Ô0Ü�:Š:�c�?Š?Ø# UÐ+Ð+Ü�ZŠZ˜�_Š_Ø+.°¬7™Z¸ˆNØ# ^Ð4Ð4Ø×#Ñ#¤x×'9Ñ'9Ô9ð $¤S¬¨c«£^Ð4Ð4Ø€Jr6   c               ó$   € V ^8„  d   QhRRRRRR/# )rF   rq   údatetime.datetimers   r=   rT   r„   r-   )rI   s   "r7   rJ   rJ   Œ  s"   € ÷ 3ñ 3Ð+ð 3¸;ð 3È4ñ 3r6   c                ó”  € VP                   \        P                  8X  dî   V P                  '       g'   V P	                  \
        R 7      p V P                  f   Q hV \        8¼  d«   V P                  P                  V 4      pVP                  VP                  VP                  3R
8X  d   RpMV P                  R4      p\        V P                  R,          4      pV'       d   RV3,          MRpRRP                  V P                  R4      WS4      /# \        V 4      pVP                   \        P                   8X  d   RV/# RR	\#        V4      //# )rÚ   rÑ   z%ziè  z.%03dr¡   rÐ   z{}{}{}rÕ   r!  )r¸   r¸   r¸   )rB   r,   r4   rW   rä   r$   r   Ú	utcoffsetÚdaysrÙ   ÚmicrosecondsÚstrftimer>   rÖ   rI   r   r2   r]   )rq   rs   ÚoffÚ	tz_stringÚmillisÚfracsecss   &&    r7   rM  rM  Œ  s  € Ø×+Ñ+Ô/E×/MÑ/MÔMØ�z�zˆzØ—+‘+¤S�+Ó)ˆCØ—:‘:Ò)Ð)Ð)Ø”+ÔØ—*‘*×&Ñ& sÓ+ˆCØ—‘˜#Ÿ+™+ s×'7Ñ'7Ð8¸IÔEØ‘	àŸL™L¨Ó.�	Ü˜Ÿ™¨4Õ/Ó0ˆFß.4�w & Ö*¸"ˆHà˜Ÿ™¨¯©Ð6IÓ)JÈHÓ`ðð ô ! Ó%€FØ×+Ñ+Ô/E×/LÑ/LÔLØ˜Ð Ð Ø�m¤S¨£[Ð1Ð2Ð2r6   c               ó$   € V ^8„  d   QhRRRRRR/# )rF   rq   r�   rs   r=   rT   r„   r-   )rI   s   "r7   rJ   rJ   £  s!   € ÷ 0ñ 0�uð 0¨Kð 0¸Dñ 0r6   c                ó   € \        V ^ V4      # r·   )rI  r}   s   &&r7   Ú_encode_bytesr  £  s   € Ü˜#˜q ,Ó/Ð/r6   c               ó$   € V ^8„  d   QhRRRRRR/# )rF   rq   r   rs   r=   rT   r„   r-   )rI   s   "r7   rJ   rJ   §  s!   € ÷ :ñ :˜Fð :°+ð :À$ñ :r6   c                ó.   € \        W P                  V4      # r{   )rI  rµ   r}   s   &&r7   Ú_encode_binary_objr‚  §  s   € Ü˜#Ÿ{™{¨LÓ9Ð9r6   c               ó$   € V ^8„  d   QhRRRRRR/# )rF   rq   z	uuid.UUIDrs   r=   rT   r„   r-   )rI   s   "r7   rJ   rJ   «  s!   € ÷ "ñ "�ið "¨{ð "¸tñ "r6   c                ó°   € VP                   '       d8   \        P                  ! WP                  R 7      p\	        W"P
                  V4      # RV P                  /# ))r¬   rª   )rC   r   r®   r¬   rI  rµ   Úhex)rq   rs   Úbinvals   && r7   Ú_encode_uuidr‡  «  sD   € Ø××ÐÜ×!Ò! #×;[Ñ;[Ô\ˆÜ˜f§n¡n°lÓCÐCà˜Ÿ™Ð!Ð!r6   c               ó$   € V ^8„  d   QhRRRRRR/# )rF   rq   r   r�   r   rT   r„   r-   )rI   s   "r7   rJ   rJ   ³  s!   € ÷ ñ ˜(ð ¨Cð °Dñ r6   c                ó   € R \        V 4      /# )r÷   ©r]   rX  s   &&r7   Ú_encode_objectidr‹  ³  s   € Ø”C˜“HÐÐr6   c               ó$   € V ^8„  d   QhRRRRRR/# ©rF   rq   r#   r�   r   rT   r„   r-   )rI   s   "r7   rJ   rJ   ·  s!   € ÷ 9ñ 9˜9ð 9¨cð 9°dñ 9r6   c                ó:   € R RV P                   RV P                  //# r=  )ÚtimeÚincrX  s   &&r7   Ú_encode_timestampr‘  ·  s   € Ø˜3 §¡¨#¨s¯w©wÐ7Ð8Ð8r6   c               ó$   € V ^8„  d   QhRRRRRR/# r�  r-   )rI   s   "r7   rJ   rJ   »  s!   € ÷ (ñ (˜Ið (¨sð (°tñ (r6   c                ó   € R \        V 4      /# )r,  rŠ  rX  s   &&r7   Ú_encode_decimal128r”  »  s   € Øœc #›hÐ'Ð'r6   c               ó$   € V ^8„  d   QhRRRRRR/# )rF   rq   r   rs   r=   rT   r„   r-   )rI   s   "r7   rJ   rJ   ¿  s&   € ÷ Bñ B�uð B¨Kð B¸Dñ Br6   c                ó8   € \        V P                  4       VR 7      # ))rs   )rw   r  r}   s   &&r7   Ú_encode_dbrefr—  ¿  s   € Ü˜Ÿ™›°LÔAÐAr6   c               ó$   € V ^8„  d   QhRRRRRR/# ©rF   r�   r   Údummy1rT   r„   r-   )rI   s   "r7   rJ   rJ   Ã  ó!   € ÷ ñ ˜3ð ¨ð °ñ r6   c                ó
   € R ^/# )r1  r-   ©r�   rš  s   &&r7   Ú_encode_minkeyrž  Ã  ó   € Ø�qˆ>Ðr6   c               ó$   € V ^8„  d   QhRRRRRR/# r™  r-   )rI   s   "r7   rJ   rJ   Ç  r›  r6   c                ó
   € R ^/# )r6  r-   r�  s   &&r7   Ú_encode_maxkeyr¢  Ç  rŸ  r6   z-dict[Type, Callable[[Any, JSONOptions], Any]]Ú	_ENCODERSz,dict[int, Callable[[Any, JSONOptions], Any]]Ú_MARKERSÚ_type_markerc              #  ó$   "  € T F  qx € K  	  R # 5ir{   r-   )Ú.0r?  s   & r7   Ú	<genexpr>r¨  ì  s   é € Ð-¡9˜aœ£9ùs   ‚c               ó$   € V ^8„  d   QhRRRRRR/# r‡   r-   )rI   s   "r7   rJ   rJ   ï  s!   € ÷ 9ñ 9�ð 9 Kð 9È3ñ 9r6   c                ó°  €  \         \        V 4      ,          ! W4      #   \         d     Mi ; i\        T R 4      '       d?   T P                  pT\
        9   d(   \
        T,          pT\         \        T 4      &   T! Y4      # \         F=  p\        Y4      '       g   K  \         T,          pT\         \        T 4      &   T! Y4      u # 	  \        RT ,          4      h)r¥  z%r is not JSON serializable)	r£  r
  ÚKeyErrorr‹   r¥  r¤  Ú_BUILT_IN_TYPESrŒ   r�   )rq   rs   ÚmarkerÚfuncÚbases   &&   r7   rŽ   rŽ   ï  s¾   € ðÜœ˜c›Ö# CÓ6Ð6øÜô Ùðúô ˆs�N×#Ò#Ø×!Ñ!ˆØ”XÔÜ˜FÕ#ˆDà#'ŒI”d˜3“iÑ Ù˜Ó*Ð*÷  ˆÜ�c× Ô Ü˜T•?ˆDà#'ŒI”d˜3“iÑ Ù˜Ó*Ò*ñ  ô Ð1°CÕ7Ó
8Ð8s   ‚ ž,«,c               ó    € V ^8„  d   QhRRRR/# )rF   rq   r   rT   r>   r-   )rI   s   "r7   rJ   rJ     s   € ÷ ñ �sð ˜sñ r6   c                ó   € \        V 4      # r{   )r«   ©rq   s   &r7   Ú_get_str_sizer³    s   € Üˆs‹8€Or6   c               ó    € V ^8„  d   QhRRRR/# )rF   rq   rs  rT   r>   r-   )rI   s   "r7   rJ   rJ     s   € ÷ $ñ $Ð-ð $°#ñ $r6   c                óT   € ^\        \        V P                  4       4      4      ,           # )é   )r«   r]   r�  r²  s   &r7   Ú_get_datetime_sizer·    s   € ØŒs”3�s—x‘x“z“?Ó#Õ#Ð#r6   c               ó    € V ^8„  d   QhRRRR/# )rF   rq   r    rT   r>   r-   )rI   s   "r7   rJ   rJ     s   € ÷ !ñ !˜ð ! 3ñ !r6   c                ó:   € ^\        V P                  4      ,           # )é   )r«   r£   r²  s   &r7   Ú_get_regex_sizer»    s   € Ø”�C—K‘KÓ Õ Ð r6   c               ó    € V ^8„  d   QhRRRR/# )rF   rq   r   rT   r>   r-   )rI   s   "r7   rJ   rJ     s   € ÷ $ñ $˜ð $ 3ñ $r6   c                ó:   € ^"\        V P                  4      ,           # )é"   )r«   Ú
collectionr²  s   &r7   Ú_get_dbref_sizerÀ    s   € Ø”�C—N‘NÓ#Õ#Ð#r6   zdict[Any, int]Ú_CONSTANT_SIZE_TABLEzdict[Any, Callable[[Any], int]]Ú_VARIABLE_SIZE_TABLEc               ó(   € V ^8„  d   QhRRRRRRRR/# )rF   rq   r   Úmax_sizer>   Úcurrent_sizerT   r-   )rI   s   "r7   rJ   rJ   1  s(   € ÷ &ñ &�#ð & ð &°Cð &Àñ &r6   c                óâ  € W!8¼  d   V# \        V 4      p \        V,          #   \         d     Mi ; i \        T,          ! T 4      #   \         d     Mi ; iT\        8X  d   T P
                  '       dQ   T^\        T P
                  Y4      ,           \        T 4      ,           \        T P
                  4      ,
          ,          pT# T^\        T 4      ,           ,          p T# T\        8X  dL   T P                  4        F5  w  rET\        YAT4      ,          pT\        YQT4      ,          pY!8¼  g   K3  Tu # 	  T# \        T R4      '       d'   T  F   pT\        YaT4      ,          pY!8¼  g   K  Tu # 	  T# )z!Recursively finds size of objectsrŠ   )r
  rÁ  r«  rÂ  r   r  Úget_sizer«   r„   r‰   r‹   )rq   rÄ  rÅ  Úobj_typer�   r‘   r%   s   &&&    r7   rÇ  rÇ  1  s]  € àÔØÐä�C‹y€HðÜ# HÕ-Ð-øÜô ÙðúðÜ# HÖ-¨cÓ2Ð2øÜô Ùðúð ”4ÔØ�9�9ˆ9ØØ”H˜SŸY™Y¨Ó?Õ?Ä#ÀcÃ(ÕJÌSÐQT×QZÑQZË^Õ[õˆLð  Ðð ˜A¤ C£�LÕ(‰Lð Ðð 
”TÔ	Ø—I‘I–K‰DˆAØœH Q°,Ó?Õ?ˆLØœH Q°,Ó?Õ?ˆLØÖ'Ø#Ò#ñ	  ð Ðô 
��j×	!Ò	!ÛˆAØœH Q°,Ó?Õ?ˆLØÖ'Ø#Ò#ñ ð Ðs   •" ¢0¯0´A ÁAÁAc               ó$   € V ^8„  d   QhRRRRRR/# )rF   rq   r   Ú
max_lengthr>   rT   úTuple[Any, int]r-   )rI   s   "r7   rJ   rJ   Z  s!   € ÷ )ñ )˜Sð )¨cð )°oñ )r6   c                ó°  € V^ 8:  d   R# Tp\        V R4      '       dC   / pV P                  4        F)  w  rE\        WR4      w  rbV'       d   WcV&   V^ 8:  g   K'   W23# 	  W23# \        V R4      '       d\   \        V \        \
        34      '       g@   . pV  F4  p\        WR4      w  rbV'       d   VP                  V4       V^ 8:  g   K2   W23# 	  W23# \        W4      # )zMRecursively truncate documents as needed to fit inside max_length characters.r‰   rŠ   )Nr¸   )r‹   r‰   Ú_truncate_documentsrŒ   r]   r�   ÚappendÚ	_truncate)rq   rÊ  Ú	remainingÚ	truncatedr�   r‘   Útruncated_vs   &&     r7   rÍ  rÍ  Z  sß   € à�Q„ØˆØ€IÜˆs�G×ÒØˆ	Ø—I‘I–K‰DˆAÜ%8¸Ó%FÑ"ˆKßØ*˜!‘Ø˜AŽ~ØØÐ#Ð#ñ  ð Ð#Ð#Ü	��j×	!Ò	!¬*°S¼3Ä¸,×*GÒ*GØˆ	ÛˆAÜ%8¸Ó%FÑ"ˆKßØ× Ñ  Ô-Ø˜AŽ~ØØÐ#Ð#ñ ð Ð#Ð#ä˜Ó(Ð(r6   c               ó$   € V ^8„  d   QhRRRRRR/# )rF   rq   r   rÐ  r>   rT   rË  r-   )rI   s   "r7   rJ   rJ   u  s!   € ÷ 
+ñ 
+�3ð 
+ 3ð 
+¨?ñ 
+r6   c                ó~   € \        W4      pW!8:  d   WV,
          3#  V R V pW1V,
          3#   \         d    T p Li ; ir{   )rÇ  r�   )rq   rÐ  ÚsizerÑ  s   &&  r7   rÏ  rÏ  u  sV   € Ü�CÓ#€DàÔØ Õ$Ð$Ð$ð	Ø˜J˜Y˜ˆIð  dÕ*Ð*Ð*øô ô 	ØŠIð	ús   �, ¬<»<l        r·   )”Ú__conditional_annotations__Ú__doc__Ú
__future__r   rÄ   râ   ru   rl  r\  r¯   Útypingr   r   r   r   r   r   r	   r
   r   r   r   Úbson.binaryr   r   r   r   Ú	bson.coder   Úbson.codec_optionsr   r   Úbson.datetime_msr   r   r   r   r   Ú
bson.dbrefr   Úbson.decimal128r   Ú
bson.int64r   Úbson.max_keyr   Úbson.min_keyr   Úbson.objectidr   Ú
bson.regexr    Úbson.sonr!   Úbson.timestampr#   Úbson.tz_utilr$   ÚIÚLÚMÚSÚUÚXr¢   r,   r9   r]   Ú_BASE_CLASSrf  r=   r2   rl   rj   r;   rm   r:   rn   ro   rv   r…   rw   r�   r|   r¥   r²   r½   rÇ   rÍ   rô   rù   rþ   r  r  r  r  r  r#  r)  r-  r3  r7  r:  rA  r˜   Úsetr—   rI  rO  rR  rU  rY  rc  rg  rq  rM  r  r‚  r‡  r‹  r‘  r”  r—  rž  r¢  r@   r�   rá   r>   r
  r°   r£  r¤  Ú_typr‹   r¥  Útupler¬  rŽ   r³  r·  r»  rÀ  rÁ  rÂ  rÇ  rÍ  rÏ  )rÖ  s   @r7   Ú<module>rò     sB  øðôVõn #ã Û Û Û Û 	Û ÷÷ ÷ ñ ÷ TÓ SÝ ß ?÷õ õ Ý &Ý Ý Ý Ý "Ý Ý Ý $Ý ð ˆ�‰Øˆ�‰Øˆ�‰Øˆ�‰Øˆ�‰Øˆ�‰ð€÷!ñ !÷H(ñ (÷V Ø˜~¨c°3¨hÕ7Õ8�Kà€Kà€
ô`#�+ô `#ñF $/¸¿¹Ô#IÐ �[Ó Iðñ '2¸H×<NÑ<NÔ&OÐ ˜Ó Oðñ %0¸(×:JÑ:JÔ$KÐ �kÓ Kðð %9Ð �kÓ 8ð	õIõ**ðD 9M÷ ð CW÷Ið EY÷ õ	!õ	'õ!õ*8õAõBRõJ!õõ7õ)õ"õDõ&õõõõõõ:õ)ð
:Ø
Ð ð:à
Ð"ð:ð Ð&ð:ð Ð!ð	:ð
 Ð&ð:ð Ð&ð:ð ˆ}ð:ð Ð"ð:ð Ðð:ð Ñ$ð:ð Ð)ð:ð Ð"ð:ð Ð1ð:ð Ð,ð:ð Ð0ð:ð  Ð&ð!:ð" Ð(ð#:ð$ Ð,ñ%:€Ð
6ó ñ( �8‹}€õaõ5õUõõõJõ.õõ3õ.0õ:õ"õõ9õ(õBõõð<Øˆ,ð<à	ˆ=ð<ð ×ÑÐ'ð<ð Ð"ð	<ð
 
ˆ=ð<ð ˆð<ð ˆð<ñ 	ˆƒJ�ð<ð 	‡I‚Iˆ|ð<ð Ðð<ð 
ˆ=ð<ð 	ˆ,ð<ð 
ˆ=ð<ð ˆNð<ð ˆNð<ð  Ðð!<ð" 
ˆ=ð#<ð$ ˆ]ØÐ ØÐ"ñ)<€	Ð8ó ð0 :<€Ð
6Ó ;Û€DÙˆt�^×$Ô$Ø&/°¥oˆ�×"Ò"Ó#ñ ÷ �%Ñ-¡9Ó-—%‘%Ñ-¡9Ó-Ó-€ð 3G÷ 9õ>õ$õ!õ$ð
 ˆbØˆØ	ˆ2Ø�ØˆrØ
ˆAØ
ˆAð(Ð �nó ð ˆØ	ˆ=Ø×ÑÐ)Ø	ˆ?Ø	ˆ?ð9Ð Ð5ó ÷&õR)÷6
+r6   