+
    ÖÇÜhJX  ã                   ó„   € ^ RI t ^ RIHtHt ^ RIHt ^ RIHt  ! R R]]R7      t ! R R	]4      t	 ! R
 R]4      t
R	R.tR# )é    N)ÚABCMetaÚabstractmethod)ÚTree)Úslice_boundsc                   óì   a a€ ] tR t^t oRtRV 3R llt]RR l4       t]R 4       tV 3R lt	V 3R lt
V 3R ltV 3R ltV 3R	 ltRV 3R
 lltV 3R lt]! ]R4      '       d
   R tR tR tR tRtVtV ;t# )ÚAbstractParentedTreea{  
An abstract base class for a ``Tree`` that automatically maintains
pointers to parent nodes.  These parent pointers are updated
whenever any change is made to a tree's structure.  Two subclasses
are currently defined:

  - ``ParentedTree`` is used for tree structures where each subtree
    has at most one parent.  This class should be used in cases
    where there is no"sharing" of subtrees.

  - ``MultiParentedTree`` is used for tree structures where a
    subtree may have zero or more parents.  This class should be
    used in cases where subtrees may be shared.

Subclassing
===========
The ``AbstractParentedTree`` class redefines all operations that
modify a tree's structure to call two methods, which are used by
subclasses to update parent information:

  - ``_setparent()`` is called whenever a new child is added.
  - ``_delparent()`` is called whenever a child is removed.
c                ó*  <€ \         SV `  W4       Ve   \        V 4       F0  w  r4\        V\        4      '       g   K  V P                  WCRR7       K2  	  \        V 4       F.  w  r4\        V\        4      '       g   K  V P                  WC4       K0  	  R # R # )NT©Údry_run)ÚsuperÚ__init__Ú	enumerateÚ
isinstancer   Ú
_setparent©ÚselfÚnodeÚchildrenÚiÚchildÚ	__class__s   &&&  €Ú4/usr/lib/python3/dist-packages/nltk/tree/parented.pyr   ÚAbstractParentedTree.__init__.   sw   ø€ Ü‰Ñ˜Ô(ð Òô & džO‘�Ü˜e¤T×*Ô*Ø—O‘O E°d�OÖ;ñ ,ô & džO‘�Ü˜e¤T×*Ô*Ø—O‘O EÖ-ó ,ñ  ó    c                ó   € R# )a  
Update the parent pointer of ``child`` to point to ``self``.  This
method is only called if the type of ``child`` is ``Tree``;
i.e., it is not called when adding a leaf to a tree.  This method
is always called before the child is actually added to the
child list of ``self``.

:type child: Tree
:type index: int
:param index: The index of ``child`` in ``self``.
:raise TypeError: If ``child`` is a tree with an impropriate
    type.  Typically, if ``child`` is a tree, then its type needs
    to match the type of ``self``.  This prevents mixing of
    different tree types (single-parented, multi-parented, and
    non-parented).
:param dry_run: If true, the don't actually set the child's
    parent pointer; just check for any error conditions, and
    raise an exception if one is found.
N© ©r   r   Úindexr   s   &&&&r   r   ÚAbstractParentedTree._setparent@   ó   ‚ r   c                ó   € R# )as  
Update the parent pointer of ``child`` to not point to self.  This
method is only called if the type of ``child`` is ``Tree``; i.e., it
is not called when removing a leaf from a tree.  This method
is always called before the child is actually removed from the
child list of ``self``.

:type child: Tree
:type index: int
:param index: The index of ``child`` in ``self``.
Nr   ©r   r   r   s   &&&r   Ú
_delparentÚAbstractParentedTree._delparentV   r    r   c                óV  <€ \        V\        4      '       dk   \        WR R7      w  r#p\        W#V4       F9  p\        W,          \        4      '       g   K!  V P                  W,          V4       K;  	  \        SV `  V4       R# \        V\        4      '       dq   V^ 8  d   V\        V 4      ,          pV^ 8  d   \        R4      h\        W,          \        4      '       d   V P                  W,          V4       \        SV `  V4       R# \        V\        \        34      '       dP   \        V4      ^ 8X  d   \        R4      h\        V4      ^8X  d   W^ ,           R# W^ ,          ,          VR,           R# \        \        V 4      P                  : R\        V4      P                  : 24      h)T©Ú
allow_stepúindex out of rangez(The tree position () may not be deleted.ºé   NNú indices must be integers, not N)r   Úslicer   Úranger   r#   r   Ú__delitem__ÚintÚlenÚ
IndexErrorÚlistÚtupleÚ	TypeErrorÚtypeÚ__name__)r   r   ÚstartÚstopÚstepr   r   s   &&    €r   r.   Ú AbstractParentedTree.__delitem__j   s@  ø€ ä�eœU×#Ò#Ü ,¨TÀTÔ JÑˆE˜ä˜5¨Ö-�Ü˜d�g¤t×,Ô,Ø—O‘O D¥G¨QÖ/ñ .ô ‰GÑ Ö&ô ˜œs×#Ò#Ø�qŒyØœ˜T›Õ"�Ø�qŒyÜ Ð!5Ó6Ð6ä˜$�+¤t×,Ò,Ø—‘ ¥¨UÔ3ä‰GÑ Ö&ä˜¤¤e˜}×-Ò-ä�5‹z˜QŒÜ Ð!KÓLÐLä�U“˜q”Ø˜q�’Nð ˜q�•N 5¨¥9Ò-ô ä˜“:×&Ô&¬¨U«×(<Ó(<ð>óð r   c                óD  <€ \        V\        4      '       Ed(   \        WR R7      w  r4p\        V\        \        34      '       g   \        V4      p\        V4       F=  w  rg\        V\        4      '       g   K  V P                  WsWe,          ,           R R7       K?  	  \        W4V4       F9  p\        W,          \        4      '       g   K!  V P                  W,          V4       K;  	  \        V4       F;  w  rg\        V\        4      '       g   K  V P                  WsWe,          ,           4       K=  	  \        SV `-  W4       R# \        V\        4      '       d¦   V^ 8  d   V\        V 4      ,          pV^ 8  d   \        R4      hW V,          J d   R# \        V\        4      '       d   V P                  W!4       \        W,          \        4      '       d   V P                  W,          V4       \        SV `-  W4       R# \        V\        \        34      '       dT   \        V4      ^ 8X  d   \        R4      h\        V4      ^8X  d   W V^ ,          &   R# W V^ ,          ,          VR,          &   R# \        \!        V 4      P"                  : R\!        V4      P"                  : 24      h)Tr&   r
   r(   Nz,The tree position () may not be assigned to.r)   r+   )r   r,   r   r2   r3   r   r   r   r-   r#   r   Ú__setitem__r/   r0   r1   r4   r5   r6   )	r   r   Úvaluer7   r8   r9   r   r   r   s	   &&&     €r   r<   Ú AbstractParentedTree.__setitem__’   sð  ø€ ä�eœU×#Ó#Ü ,¨TÀTÔ JÑˆE˜ä˜e¤d¬E ]×3Ò3Ü˜U›�ô & eÖ,‘�Ü˜e¤T×*Ô*Ø—O‘O E°1µ8Õ+;ÀT�OÖJñ -ô ˜5¨Ö-�Ü˜d�g¤t×,Ô,Ø—O‘O D¥G¨QÖ/ñ .ô & eÖ,‘�Ü˜e¤T×*Ô*Ø—O‘O E°1µ8Õ+;Ö<ñ -ô ‰GÑ Ö-ô ˜œs×#Ò#Ø�qŒyØœ˜T›Õ"�Ø�qŒyÜ Ð!5Ó6Ð6à˜U�Ó#Ùä˜%¤×&Ò&Ø—‘ Ô-ä˜$�+¤t×,Ò,Ø—‘ ¥¨UÔ3ä‰GÑ Ö-ä˜¤¤e˜}×-Ò-ä�5‹z˜QŒÜ Ð!OÓPÐPä�U“˜q”Ø!&�U˜1•X“ð -2�U˜1•X•˜u R�yÓ)ô ä˜“:×&Ô&¬¨U«×(<Ó(<ð>óð r   c                óˆ   <€ \        V\        4      '       d   V P                  V\        V 4      4       \        SV `  V4       R # ©N©r   r   r   r0   r   Úappend)r   r   r   s   &&€r   rB   ÚAbstractParentedTree.appendÎ   s.   ø€ Ü�eœT×"Ò"Ø�O‰O˜E¤3 t£9Ô-Ü‰‰�uÖr   c                óš   <€ V FC  p\        V\        4      '       d   V P                  V\        V 4      4       \        SV `  V4       KE  	  R # r@   rA   )r   r   r   r   s   && €r   ÚextendÚAbstractParentedTree.extendÓ   s8   ø€ ÛˆEÜ˜%¤×&Ò&Ø—‘ ¤s¨4£yÔ1Ü‰G‰N˜5Ö!ó r   c                ó¸   <€ V^ 8  d   V\        V 4      ,          pV^ 8  d   ^ p\        V\        4      '       d   V P                  W!4       \        SV `  W4       R# )r   N)r0   r   r   r   r   Úinsert)r   r   r   r   s   &&&€r   rH   ÚAbstractParentedTree.insertÙ   sK   ø€ ð �1Œ9Ø”S˜“YÕˆEØ�1Œ9ØˆEä�eœT×"Ò"Ø�O‰O˜EÔ)Ü‰‰�uÖ$r   c                óà   <€ V^ 8  d   V\        V 4      ,          pV^ 8  d   \        R4      h\        W,          \        4      '       d   V P	                  W,          V4       \
        SV `  V4      # )r   r(   )r0   r1   r   r   r#   r   Úpop)r   r   r   s   &&€r   rK   ÚAbstractParentedTree.popæ   sY   ø€ Ø�1Œ9Ø”S˜“YÕˆEØ�1Œ9ÜÐ1Ó2Ð2Ü�d•k¤4×(Ò(Ø�O‰O˜D�K¨Ô/Ü‰w‰{˜5Ó!Ð!r   c                ó°   <€ V P                  V4      p\        W,          \        4      '       d   V P                  W,          V4       \        SV `  V4       R # r@   )r   r   r   r#   r   Úremove)r   r   r   r   s   && €r   rN   ÚAbstractParentedTree.removeñ   s<   ø€ Ø—
‘
˜5Ó!ˆÜ�d•k¤4×(Ò(Ø�O‰O˜D�K¨Ô/Ü‰‰�uÖr   Ú__getslice__c           	     ó`   € V P                  \        \        ^ V4      \        ^ V4      4      4      # ©r   )Ú__getitem__r,   Úmax©r   r7   r8   s   &&&r   rP   Ú!AbstractParentedTree.__getslice__ÿ   ó&   € Ø×#Ñ#¤E¬#¨a°«-¼¸QÀ»Ó$FÓGÐGr   c           	     ó`   € V P                  \        \        ^ V4      \        ^ V4      4      4      # rR   )r.   r,   rT   rU   s   &&&r   Ú__delslice__Ú!AbstractParentedTree.__delslice__  rW   r   c           	     ób   € V P                  \        \        ^ V4      \        ^ V4      4      V4      # rR   )r<   r,   rT   )r   r7   r8   r=   s   &&&&r   Ú__setslice__Ú!AbstractParentedTree.__setslice__  s(   € Ø×#Ñ#¤E¬#¨a°«-¼¸QÀ»Ó$FÈÓNÐNr   c                ó0   € V P                   \        V 4      3# )aq  Method used by the pickle module when un-pickling.
This method provides the arguments passed to ``__new__``
upon un-pickling. Without this method, ParentedTree instances
cannot be pickled and unpickled in Python 3.7+ onwards.

:return: Tuple of arguments for ``__new__``, i.e. the label
    and the children of this node.
:rtype: Tuple[Any, List[AbstractParentedTree]]
)Ú_labelr2   ©r   s   &r   Ú__getnewargs__Ú#AbstractParentedTree.__getnewargs__  s   € ð —‘œT $›ZÐ(Ð(r   r   r@   ©F)éÿÿÿÿ)r6   Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r   r   r#   r.   r<   rB   rE   rH   rK   rN   Úhasattrr2   rP   rY   r\   ra   Ú__static_attributes__Ú__classdictcell__Ú__classcell__©r   Ú__classdict__s   @@r   r   r      s‡   ù‡ € ñ÷0.ð$ óó ðð* ñó ðõ&&õP:õxõ
"õ%÷"õñ ˆt�^×$Ò$ò	Hò	Hò	O÷
)ò 
)r   r   )Ú	metaclassc                   ó„   a a€ ] tR tRt oRtRV 3R lltR tRV 3R lltR tR t	R t
R	 tR
 tR tR tRR ltRtVtV ;t# )ÚParentedTreei  aØ  
A ``Tree`` that automatically maintains parent pointers for
single-parented trees.  The following are methods for querying
the structure of a parented tree: ``parent``, ``parent_index``,
``left_sibling``, ``right_sibling``, ``root``, ``treeposition``.

Each ``ParentedTree`` may have at most one parent.  In
particular, subtrees may not be shared.  Any attempt to reuse a
single ``ParentedTree`` as a child of more than one parent (or
as multiple children of the same parent) will cause a
``ValueError`` exception to be raised.

``ParentedTrees`` should never be used in the same tree as ``Trees``
or ``MultiParentedTrees``.  Mixing tree implementations may result
in incorrect parent pointers and in ``TypeError`` exceptions.
c                óÊ   <€ R V n          \        SV `	  W4       VfG   \        V 4       F5  w  r4\	        V\
        4      '       g   K  R Vn         V P                  WC4       K7  	  R # R # r@   )Ú_parentr   r   r   r   r   r   r   s   &&&  €r   r   ÚParentedTree.__init__'  sW   ø€ ØˆŒØCÜ‰Ñ˜Ô(ØÒô
 & džO‘�Ü˜e¤T×*Ô*Ø$(�E”MØ—O‘O EÖ-ó ,ñ r   c                ó   € ^ RI Hp V# )r   )ÚImmutableParentedTree)Únltk.tree.immutablerv   )r   rv   s   & r   Ú_frozen_classÚParentedTree._frozen_class5  s   € Ý=à$Ð$r   c                óŽ   <€ V'       g.   \         P                  ! V P                  P                   R 24       \        SV `  RR7      # )zB objects do not support shallow copies. Defaulting to a deep copy.T)Údeep)ÚwarningsÚwarnr   r6   r   Úcopy)r   r{   r   s   &&€r   r~   ÚParentedTree.copy:  s;   ø€ ßÜ�MŠMØ—>‘>×*Ñ*Ð+Ð+mÐnôô ‰w‰| ˆ|Ó&Ð&r   c                ó   € V P                   # )z5The parent of this tree, or None if it has no parent.©rs   r`   s   &r   ÚparentÚParentedTree.parentE  s   € à�|‰|Ðr   c                ó~   € V P                   f   R# \        V P                   4       F  w  rW J g   K  Vu # 	  Q R4       h)a  
The index of this tree in its parent.  I.e.,
``ptree.parent()[ptree.parent_index()] is ptree``.  Note that
``ptree.parent_index()`` is not necessarily equal to
``ptree.parent.index(ptree)``, since the ``index()`` method
returns the first child that is equal to its argument.
Nz&expected to find self in self._parent!)rs   r   )r   r   r   s   &  r   Úparent_indexÚParentedTree.parent_indexI  s=   € ð �<‰<ÒÙÜ! $§,¡,Ö/‰HˆAØ�}Ø’ñ 0ð 	?Ð>Ó>ˆur   c                óŒ   € V P                  4       pV P                  '       d"   V^ 8”  d   V P                  V^,
          ,          # R# )z6The left sibling of this tree, or None if it has none.N)r…   rs   ©r   r…   s   & r   Úleft_siblingÚParentedTree.left_siblingX  s7   € à×(Ñ(Ó*ˆØ�<�<ˆ<˜L¨1Ô,Ø—<‘< ¨qÕ 0Õ1Ð1Ùr   c                óÀ   € V P                  4       pV P                  '       d<   V\        V P                  4      ^,
          8  d   V P                  V^,           ,          # R# )z7The right sibling of this tree, or None if it has none.N)r…   rs   r0   rˆ   s   & r   Úright_siblingÚParentedTree.right_sibling_  sE   € à×(Ñ(Ó*ˆØ�<�<ˆ<˜L¬C°·±Ó,=ÀÕ,AÔBØ—<‘< ¨qÕ 0Õ1Ð1Ùr   c                óR   € T pVP                  4       e   VP                  4       pK$  V# )z–
The root of this tree.  I.e., the unique ancestor of this tree
whose parent is None.  If ``ptree.parent()`` is None, then
``ptree`` is its own root.
)r‚   )r   Úroots   & r   r�   ÚParentedTree.rootf  s%   € ð ˆØ�k‰k‹mÒ'Ø—;‘;“=ŠDØˆr   c                ó’   € V P                  4       f   R# V P                  4       P                  4       V P                  4       3,           # )zw
The tree position of this tree, relative to the root of the
tree.  I.e., ``ptree.root[ptree.treeposition] is ptree``.
r   )r‚   Útreepositionr…   r`   s   &r   r’   ÚParentedTree.treepositionq  s;   € ð
 �;‰;‹=Ò ØˆIà—;‘;“=×-Ñ-Ó/°4×3DÑ3DÓ3FÐ2HÕHÐHr   c                ó„   € \        V\        4      '       g   Q hW,          VJ g   Q hVP                  V J g   Q hR Vn        R # r@   )r   rq   rs   r"   s   &&&r   r#   ÚParentedTree._delparent  s@   € ä˜%¤×.Ò.Ð.Ð.Ø�{˜eÓ#Ð#Ð#Ø�}‰} Ó$Ð$Ð$ð ˆŽr   c                ó¾   € \        V\        4      '       g   \        R 4      h\        VR4      '       d   VP                  e   \        R4      hV'       g	   Wn        R# R# )z5Can not insert a non-ParentedTree into a ParentedTreers   Nz3Can not insert a subtree that already has a parent.)r   rq   r4   ri   rs   Ú
ValueErrorr   s   &&&&r   r   ÚParentedTree._setparentˆ  sN   € ä˜%¤×.Ò.ÜÐSÓTÐTô �5˜)×$Ò$¨¯©Ò)BÜÐRÓSÐS÷ Ø ŽMñ r   r�   r@   rc   )r6   re   rf   rg   rh   r   rx   r~   r‚   r…   r‰   rŒ   r�   r’   r#   r   rj   rk   rl   rm   s   @@r   rq   rq     sG   ù‡ € ñ÷".ò%÷
'òò?òòò	òIò÷!ô !r   rq   c                   ó€   a a€ ] tR tRt oRtRV 3R lltR tR tR tR t	R t
R	 tR
 tR tR tR tRR ltRtVtV ;t# )ÚMultiParentedTreei–  aØ  
A ``Tree`` that automatically maintains parent pointers for
multi-parented trees.  The following are methods for querying the
structure of a multi-parented tree: ``parents()``, ``parent_indices()``,
``left_siblings()``, ``right_siblings()``, ``roots``, ``treepositions``.

Each ``MultiParentedTree`` may have zero or more parents.  In
particular, subtrees may be shared.  If a single
``MultiParentedTree`` is used as multiple children of the same
parent, then that parent will appear multiple times in its
``parents()`` method.

``MultiParentedTrees`` should never be used in the same tree as
``Trees`` or ``ParentedTrees``.  Mixing tree implementations may
result in incorrect parent pointers and in ``TypeError`` exceptions.
c                óÊ   <€ . V n          \        SV `	  W4       VfG   \        V 4       F5  w  r4\	        V\
        4      '       g   K  . Vn         V P                  WC4       K7  	  R # R # r@   )Ú_parentsr   r   r   r   r   r   r   s   &&&  €r   r   ÚMultiParentedTree.__init__¨  s[   ø€ ØˆŒð	ô 	‰Ñ˜Ô(ØÒô
 & džO‘�Ü˜e¤T×*Ô*Ø%'�E”NØ—O‘O EÖ-ó ,ñ r   c                ó   € ^ RI Hp V# )r   )ÚImmutableMultiParentedTree)rw   rŸ   )r   rŸ   s   & r   rx   ÚMultiParentedTree._frozen_class¸  s   € ÝBà)Ð)r   c                ó,   € \        V P                  4      # )zí
The set of parents of this tree.  If this tree has no parents,
then ``parents`` is the empty set.  To check if a tree is used
as multiple children of the same parent, use the
``parent_indices()`` method.

:type: list(MultiParentedTree)
)r2   rœ   r`   s   &r   ÚparentsÚMultiParentedTree.parentsÁ  s   € ô �D—M‘MÓ"Ð"r   c                ó‚   € V P                  4        UUu. uF  w  rV^ 8”  g   K  W^,
          ,          NK  	  upp# u uppi )aE  
A list of all left siblings of this tree, in any of its parent
trees.  A tree may be its own left sibling if it is used as
multiple contiguous children of the same parent.  A tree may
appear multiple times in this list if it is the left sibling
of this tree with respect to multiple parents.

:type: list(MultiParentedTree)
)Ú_get_parent_indices©r   r‚   r   s   &  r   Úleft_siblingsÚMultiParentedTree.left_siblingsÌ  sG   € ð $(×#;Ñ#;Ô#=ô
á#=‘�Ø�q‰yô ˆF˜1•9×ÐÙ#=ò
ð 	
ùó 
s   ”;¤;c                ó¢   € V P                  4        UUu. uF-  w  rV\        V4      ^,
          8  g   K  W^,           ,          NK/  	  upp# u uppi )aH  
A list of all right siblings of this tree, in any of its parent
trees.  A tree may be its own right sibling if it is used as
multiple contiguous children of the same parent.  A tree may
appear multiple times in this list if it is the right sibling
of this tree with respect to multiple parents.

:type: list(MultiParentedTree)
)r¥   r0   r¦   s   &  r   Úright_siblingsÚ MultiParentedTree.right_siblingsÜ  sP   € ð $(×#;Ñ#;Ô#=ô
á#=‘�Øœ˜F› a�Ñ(ô ˆF˜1•9×ÐÙ#=ò
ð 	
ùó 
s
   ”A´Ac                óˆ   € V P                    UUUu. uF!  p\        V4       F  w  r#W0J g   K  W3NK  	  K#  	  uppp# u upppi r@   ©rœ   r   ©r   r‚   r   r   s   &   r   r¥   Ú%MultiParentedTree._get_parent_indicesì  sJ   € ð Ÿ-š-õ
á'�Ü )¨&Ö 1‘�Øˆ}ô ˆV‹Oá 1ñ Ù'ó
ð 	
ùô 
s   ‘=­=c                óR   € \        V P                  / 4      P                  4       4      # )z¤
The set of all roots of this tree.  This set is formed by
tracing all possible parent paths until trees with no parents
are found.

:type: list(MultiParentedTree)
)r2   Ú_get_roots_helperÚvaluesr`   s   &r   ÚrootsÚMultiParentedTree.rootsô  s#   € ô �D×*Ñ*¨2Ó.×5Ñ5Ó7Ó8Ð8r   c                ó�   € V P                   '       d'   V P                    F  pVP                  V4       K  	  V# W\        V 4      &   V# r@   )rœ   r±   Úid)r   Úresultr‚   s   && r   r±   Ú#MultiParentedTree._get_roots_helperþ  sA   € Ø�=�=ˆ=ØŸ-œ-�Ø×(Ñ(¨Ö0ñ (ð ˆð  $”2�d“8ÑØˆr   c                ó~   € WP                   9  d   . # \        V4       UUu. uF  w  r#W0J g   K  VNK  	  upp# u uppi )a!  
Return a list of the indices where this tree occurs as a child
of ``parent``.  If this child does not occur as a child of
``parent``, then the empty list is returned.  The following is
always true::

  for parent_index in ptree.parent_indices(parent):
      parent[parent_index] is ptree
r­   r®   s   &&  r   Úparent_indicesÚ MultiParentedTree.parent_indices  s:   € ð Ÿ™Ô&ØˆIä09¸&Ô0AÔSÑ0A™n˜uÀUÀ]—E�EÑ0AÒSÐSùÓSs   ¡	9¯9c           
     óÚ   € WJ d   R.# V P                    UUUUu. uF?  pVP                  V4       F'  p\        V4       F  w  rEWPJ g   K  W43,           NK  	  K)  	  KA  	  upppp# u uppppi )zà
Return a list of all tree positions that can be used to reach
this multi-parented tree starting from ``root``.  I.e., the
following is always true::

  for treepos in ptree.treepositions(root):
      root[treepos] is ptree
r   )rœ   Útreepositionsr   )r   r�   r‚   Útreeposr   r   s   &&    r   r½   ÚMultiParentedTree.treepositions  sx   € ð ‹<Ø�4ˆKð #Ÿmšmöá+�FØ%×3Ñ3°DÖ9�GÜ&/°Ö&7‘N�UØ�=ô	 #�˜(×"Ð"ñ '8ñ #á9ñ #Ù+ôð ùõ s   š+A%
Á
A%
c                ó@  € \        V\        4      '       g   Q hW,          VJ g   Q h\        VP                   Uu. uF  q3V J g   K
  VNK  	  up4      ^8X  g   Q h\	        V 4       F  w  rEWQJ g   K  WB8w  g   K   R# 	  VP                  P                  V 4       R# u upi )r*   N)r   rš   r0   rœ   r   rN   )r   r   r   Úpr   Úcs   &&&   r   r#   ÚMultiParentedTree._delparent-  s‰   € ä˜%Ô!2×3Ò3Ð3Ð3Ø�{˜eÓ#Ð#Ð#Ü˜uŸ~š~Ó;™~˜!°d°—A�A™~Ñ;Ó<ÀÔAÐAÐAô ˜d–O‰DˆAØ�z˜ažjÚñ $ð �N‰N×!Ñ! $Ö'ùò <s   ºBÁBc                óÈ   € \        V\        4      '       g   \        R 4      hV'       g9   VP                   F  pW@J g   K
   R# 	  VP                  P	                  V 4       R# R# )z?Can not insert a non-MultiParentedTree into a MultiParentedTreeN)r   rš   r4   rœ   rB   )r   r   r   r   r‚   s   &&&& r   r   ÚMultiParentedTree._setparent;  sT   € ä˜%Ô!2×3Ò3ÜØQóð ÷
 ØŸ.œ.�Ø•>Úñ )ð —‘×%Ñ% dÖ+ñ r   )rœ   r@   rc   )r6   re   rf   rg   rh   r   rx   r¢   r§   rª   r¥   r³   r±   rº   r½   r#   r   rj   rk   rl   rm   s   @@r   rš   rš   –  sL   ù‡ € ñ÷".ò *ò	#ò
ò 
ò 
ò9òòTòò0(÷,ô ,r   rš   )r|   Úabcr   r   Únltk.tree.treer   Ú	nltk.utilr   r   rq   rš   Ú__all__r   r   r   Ú<module>rÊ      sS   ðó ß 'å Ý "ô})˜4¨7õ })ô@~!Ð'ô ~!ôBr,Ð,ô r,ðl Øð‚r   