
    g
fF                    n   d Z dZdZdZdZdZddlZ ej                  dd	       dd
lm	Z	 ddl
mZ ddl
mZ ddl
mZ ddl
mZ ddl
mZ ddl
mZ ddl
mZ ddl
mZ ddl
mZ ddl
mZ ddl
mZ ddl
mZ ddlmZ ddlmZ ddlmZ ddlmZ ddlm Z  ddl!m"Z" ddl#m$Z$ ddl%m&Z&  G d  d!      Z' G d" d#      Z(y)$z!Implements structural navigation.z$Id$z
$Revision$z$Date$zRCopyright (c) 2005-2009 Sun Microsystems Inc.Copyright (c) 2010-2013 The Orca TeamLGPL    NAtspiz2.0)r      )cmdnames)debug)focus_manager)	guilabels)input_event)keybindings)messages)object_properties)orca_gui_navlist)
orca_state)settings)settings_manager)AXCollection)AXEventSynthesizer)AXHypertext)AXObject)AXSelection)AXTable)AXText)AXUtilitiesc                   F    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zy)StructuralNavigationObjectat  Represents a document object which has identifiable characteristics
    which can be used for the purpose of navigation to and among instances
    of that object. These characteristics may be something as simple as a
    role and/or a state of interest. Or they may be something more complex
    such as character counts, text attributes, and other object attributes.
    c	                     || _         || _        || _        || _        || _        || _        || _        || _        i | _        t        j                         | _        g | _        | j                          y)ap  Creates a new structural navigation object.

        Arguments:
        - structuralNavigation: the StructuralNavigation class associated
          with this object.
        - objType: the type (e.g. BLOCKQUOTE) associated with this object.
        - bindings: a dictionary of all of the possible bindings for this
          object.  In the case of all but the "atLevel" bindings, each
          binding takes the form of [keysymstring, modifiers, description].
          The goPreviousAtLevel and goNextAtLevel bindings are each a list
          of bindings in that form.
        - predicate: the method to use to verify if a given accessible
          matches this structural navigation object. Used only when the
          collection interface does not provide a way for us to specify
          needed condition(s).
        - criteria: a method which returns a MatchRule object which is used
          to find all matching objects via AtspiCollection.
        - presentation: the method which should be called after performing
          the search for the structural navigation object.
        - dialogData: the method which returns the title, column headers,
          and row data which should be included in the "list of" dialog for
          the structural navigation object.
        - getter: The function which should be used instead of the criteria
          and predicate.
        N)structuralNavigationobjTypebindings	predicatecriteriapresent_dialogDatagetterinputEventHandlersr   KeyBindingskeyBindings	functions_setUpHandlersAndBindings)	selfr   r   r   r    r!   presentation
dialogDatar$   s	            </usr/lib/python3/dist-packages/orca/structural_navigation.py__init__z#StructuralNavigationObject.__init__D   sj    8 %9! " #%"$&224&&(    c           
         | j                   j                  d      }|r|\  }}}| j                   d}t        j                  | j
                  |      | j                  |<   | j                  j                  t        j                  |t        j                  || j                  |                | j                  j                  | j
                         | j                   j                  d      }|r|\  }}}| j                   d}t        j                  | j                  |      | j                  |<   | j                  j                  t        j                  |t        j                  || j                  |                | j                  j                  | j                         | j                   j                  d      }|r|\  }}}| j                   d}t        j                  | j                  |      | j                  |<   | j                  j                  t        j                  |t        j                  || j                  |                | j                  j                  | j                         | j                   j                  d      xs g }t!        |      D ]  \  }	}
|	dz   }| j#                  |      }d	| j                  |fz  }|
\  }}}t        j                  ||      | j                  |<   | j                  j                  t        j                  |t        j                  || j                  |                | j                  j                  |        | j                   j                  d
      xs g }t!        |      D ]  \  }	}
|	dz   }| j%                  |      }d| j                  |fz  }|
\  }}}t        j                  ||      | j                  |<   | j                  j                  t        j                  |t        j                  || j                  |                | j                  j                  |        | j                   j                  d      xs g }t!        |      D ]  \  }	}
|	dz   }| j'                  |      }d| j                  |fz  }|
\  }}}t        j                  ||      | j                  |<   | j                  j                  t        j                  |t        j                  || j                  |                | j                  j                  |        i }| j                   j                  d      |d<   | j                   j                  d      |d<   | j                   j                  d      |d<   | j                   j                  d      |d<   | j                   j                  d      |d<   | j                   j                  d      |d<   | j                   j                  d      |d<   | j                   j                  d      |d<   |D ]  }|j                  |      }
|
s| j)                  |      }| j                   d| }|
\  }}}t        j                  ||      | j                  |<   | j                  j                  t        j                  |t        j                  || j                  |                | j                  j                  |        y) z<Adds the inputEventHandlers and keyBindings for this object.previous
GoPreviousnextGoNextlistShowListpreviousAtLevelr   z%sGoPreviousLevel%dHandlernextAtLevelz%sGoNextLevel%dHandlerlistAtLevelz%sShowListAtLevel%dHandlerleftLeftrightRightupUpdownDownfirstFirstlastLaststartStartendEndGoN)r   getr   r
   InputEventHandler
goPreviousr%   r'   addr   
KeyBindingdefaultModifierMaskr(   appendgoNextshowList	enumerategoPreviousAtLevelFactorygoNextAtLevelFactoryshowListAtLevelFactorygoDirectionFactory)r*   previousBindingkeysymstring	modifiersdescriptionhandlerNamenextBindinglistBindingr7   ibindinglevelhandlerr8   r9   
directions	directions                    r-   r)   z4StructuralNavigationObject._setUpHandlersAndBindingsn   sT    --++J75D2\9k!\\N*5K--doo{K ##K0   && 33++K8	:; NN!!$//2mm''/5@2\9k!\\N&1K--dkk;G ##K0   && 33++K8	:; NN!!$++.mm''/5@2\9k!\\N(3K--dmm[I ##K0   && 33++K8	:; NN!!$--0
 --++,=>D"#O4 	+JAwEE33E:G6$,,9NNK3:0L)[ --g{C ##K0   && 33++K8	:; NN!!'*!	+$ mm''6<"#K0 	+JAwEE//6G2dllE5JJK3:0L)[ --g{C ##K0   && 33++K8	:; NN!!'*!	+$ mm''6<"#K0 	+JAwEE11%8G6$,,9NNK3:0L)[ --g{C ##K0   && 33++K8	:; NN!!'*!	+, 
"mm//7
6"mm//8
7"mm//5
4"mm//7
6"mm//8
7"mm//7
6#}}009
7!]]..u5
5# 	+I nnY/G--i8G!\\N"YK8K3:0L)[ --g{C ##K0   && 33++K8	:; NN!!'*'	+r/   c                 >    | j                   j                  | d|       y)zGo to the previous object.FNr   goObjectr*   script
inputEvents      r-   rM   z%StructuralNavigationObject.goPrevious  s    !!**4
Cr/   c                 >    | j                   j                  | d|       y)zGo to the next object.TNrg   ri   s      r-   rR   z!StructuralNavigationObject.goNext  s    !!**4zBr/   c                    | j                   j                  |       }fd}t        t        ||            }| j                  t        t        | j                  |            }| j
                  (d}t        j                  t        j                  |d       y| j                         \  }}}t        |      }	| dt        j                  |	       }|	sj                  |       yj                  j                         \  }
}	 |j                  |
      }|D cg c]  }|dg ||      z    }}t#        j$                  ||||       y# t         $ r d}Y @w xY wc c}w )z3Show a list of all the items with this object type.c                     t        j                  |       ryj                  j                  |       xs j                  j	                  |        S NF)r   is_dead	utilitiesisHiddenisEmptyxrj   s    r-   _isValidMatchz:StructuralNavigationObject.showList.<locals>._isValidMatch  sE    "((11!4S8H8H8P8PQR8STTr/   Nz;STRUCTURAL NAVIGATION: Cannot show list without dialog dataT: r   )r   _getAllr5   filterr    r#   r   printMessage
LEVEL_INFOlenr   
itemsFoundpresentMessagerq   getCaretContextindex	Exceptionr   showUI)r*   rj   rk   objectsrv   msgtitlecolumnHeadersrowDatacountcurrentObjectoffsetr   objrowss    `             r-   rS   z#StructuralNavigationObject.showList  sI    ++33D9	U
 vmW56>>%6$..':;G#OCu//d;(,(8(8(:%}gG'H//678!!%( & 0 0 @ @ Bv	MM-0E 5<<Sb	GCL(<<}dEB	  	E	 =s   E EEEc                       fd}|S )a[  Generates a goPrevious method for the specified level. Right
        now, this is just for headings, but it may have applicability
        for other objects such as list items (i.e. for level-based
        navigation in an outline or other multi-tiered list.

        Arguments:
        - level: the desired level of the object as an int.
        c                 D    j                   j                  d|       y )NFargrg   rj   rk   rb   r*   s     r-   goPreviousAtLevelzNStructuralNavigationObject.goPreviousAtLevelFactory.<locals>.goPreviousAtLevel9  s     %%..tUJE.Rr/    )r*   rb   r   s   `` r-   rU   z3StructuralNavigationObject.goPreviousAtLevelFactory/  s    	S  r/   c                       fd}|S )aX  Generates a goNext method for the specified level. Right
        now, this is just for headings, but it may have applicability
        for other objects such as list items (i.e. for level-based
        navigation in an outline or other multi-tiered list.

        Arguments:
        - level: the desired level of the object as an int.

        c                 D    j                   j                  d|       y )NTr   rg   r   s     r-   goNextAtLevelzFStructuralNavigationObject.goNextAtLevelFactory.<locals>.goNextAtLevelH  s     %%..tT:5.Qr/   r   )r*   rb   r   s   `` r-   rV   z/StructuralNavigationObject.goNextAtLevelFactory=  s    	Rr/   c                       fd}|S )aY  Generates a showList method for the specified level. Right
        now, this is just for headings, but it may have applicability
        for other objects such as list items (i.e. for level-based
        navigation in an outline or other multi-tiered list.

        Arguments:
        - level: the desired level of the object as an int.
        c                 X    j                   j                        } fd}t        t        ||            }j                  t        t        j                  |            }j                        \  }}}t        |      }| dt        j                  |       }|s j                  |       y  j                  j                         \  }}		 |j                  |      }
|D cg c]  }|dg ||      z    }}t        j                  ||||
       y # t        $ r d}
Y @w xY wc c}w )Nr   c                 v    j                   j                  |       xs j                   j                  |        S N)rq   rr   rs   rt   s    r-   rv   zaStructuralNavigationObject.showListAtLevelFactory.<locals>.showListAtLevel.<locals>._isValidMatchY  s4    ",,55a8WF<L<L<T<TUV<WXXr/   rw   r   rx   )r   ry   r5   rz   r    r#   r}   r   r~   r   rq   r   r   r   r   r   )rj   rk   r   rv   r   r   r   r   r   r   r   r   r   rb   r*   s   `            r-   showListAtLevelzJStructuralNavigationObject.showListAtLevelFactory.<locals>.showListAtLevelV  s'   //77%7HGY 6-9:G~~)vdnng>?,0,<,<,<,G)E='LEgR 3 3E :;<E%%e,$*$4$4$D$D$F!M6m4 9@@S"I,@D@##E=$F	   As   D 'D'D$#D$r   )r*   rb   r   s   `` r-   rW   z1StructuralNavigationObject.showListAtLevelFactoryL  s    	G4 r/   c                      d } fd} j                   t        j                  k(  r|S  j                   t        j                  k(  rdk(  r|S yy)z?Generates the methods for navigation in a particular direction.c                     t         j                  r| j                  j                          y| j	                  t
        j                         y)zGo to the last liveRegion.N)r   inferLiveRegionsliveRegionManagergoLastLiveRegionr   r   LIVE_REGIONS_OFF)rj   rk   s     r-   r   zGStructuralNavigationObject.goDirectionFactory.<locals>.goLastLiveRegionu  s1    ((((99;%%h&?&?@r/   c                 J    dk(  }j                   j                  ||       y )NrG   )r   goEdge)rj   rk   isStartre   r*   s      r-   goContainerEdgezFStructuralNavigationObject.goDirectionFactory.<locals>.goContainerEdge|  s%    7*G%%,,T7JGr/   rE   N)r   StructuralNavigation	CONTAINERLIVE_REGION)r*   re   r   r   s   ``  r-   rX   z-StructuralNavigationObject.goDirectionFactoryr  sU    	A	H <</999""\\1===f$## % >r/   N)__name__
__module____qualname____doc__r.   r)   rM   rR   rS   rU   rV   rW   rX   r   r/   r-   r   r   =   s<    ()TS+jDC"CH!$L$r/   r   c                   d	   e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZej8                  j                  ej8                  j&                  ej8                  j:                  ej8                  j*                  ej8                  j<                  ej8                  j>                  ej8                  j@                  ej8                  jB                  ej8                  jD                  ej8                  jF                  ej8                  jH                  ej8                  jJ                  ej8                  jL                  ej8                  jN                  ej8                  jP                  ej8                  jR                  ej8                  jT                  ej8                  jV                  ej8                  jX                  ej8                  jZ                  gZ.ej8                  j^                  ej8                  j`                  ej8                  jb                  ej8                  jd                  ej8                  jf                  ej8                  j                   ej8                  jh                  ej8                  j$                  ej8                  jj                  ej8                  jl                  ej8                  jH                  ej8                  j0                  ej8                  jn                  ej8                  jp                  gZ9ddZ:ddZ;d Z<d Z=ddZ>d Z?dd Z@d! ZAd" ZBdd#ZCdd$ZDdd%ZEdd&ZFdd'ZGdd(ZHd) ZId* ZJd+ ZKd, ZLd- ZMd. ZNd/ ZOdd0ZPd1 ZQd2 ZRd3 ZSd4 ZTd5 ZUd6 ZVd7 ZWd8 ZXdd9ZYdd:ZZd; Z[d< Z\dd=Z]dd>Z^d? Z_d@ Z`ddAZaddBZbdC ZcdD ZdddEZeddFZfddGZgdH ZhdI ZiddJZjddKZkdL ZldM ZmddNZnddOZodP ZpdQ ZqddRZrddSZsdT ZtdU ZudV ZvddWZwddXZxddYZydZ Zzdd[Z{dd\Z|d] Z}d^ Z~dd_Zdd`Zda Zdb ZddcZdddZde Zdf ZddgZddhZdi Zdj ZddkZddlZdm Zdn ZddoZddpZdq ZddrZddsZdt Zdu ZddvZddwZdx Zdy ZddzZdd{Zd| Zdd}Zdd~Zd Zd ZddZddZd Zd ZddZddZd Zd ZddZddZd Zd ZddZddZddZd Zd ZddZddZddZy)r   a1  This class implements the structural navigation functionality which
    is available to scripts. Scripts interested in implementing structural
    navigation need to override getEnabledStructuralNavigationTypes() and
    return a list of StructuralNavigation object types which should be
    enabled.
    
blockquotebuttoncheckBoxchunk	clickablecomboBox	containerentry	formFieldheadingimageiframelandmarklinkr5   listItem
liveRegion	paragraphradioButton	separatortableunvisitedLinkvisitedLinkc                 .   || _         || _        d| _        i | _        |D ]   }| j	                  |      | j                  |<   " g | _        d| _        | j                  d      | _        t        j                         | _        ddg| _        i | _        d| _        y)a4  Creates an instance of the StructuralNavigation class.

        Arguments:
        - script: the script which which this instance is associated.
        - enabledTypes: a list of StructuralNavigation object types
          which the script is interested in supporting.
        - enabled: Whether structural navigation should start out
          enabled.  For instance, in Gecko by default we do what it
          enabled; in soffice, we would want to start out with it
          disabled and have the user enable it via a keystroke when
          desired.
        FNTrx   )_scriptenabled
_suspendedenabledObjects!structuralNavigationObjectCreatorr(   _last_input_eventget_handlers	_handlersr   r&   	_bindingslastTableCell_objectCache_inModalDialog)r*   rj   enabledTypesr   r   s        r-   r.   zStructuralNavigation.__init__  s       
 !# 	@G66w? (	@ !%**40$002 !"X#r/   Nc                 H    |ri | j                   t        |      <   y i | _         y r   )r   hash)r*   documents     r-   
clearCachezStructuralNavigation.clearCache  s!    02Dd8n- "Dr/   c           
      j   t        d| d      }t        d| d      }	 t        d| d      }	 t        d| d      }	 t        d| d      }	 t        d| d      }t        | |||||||      S # t        $ r d}Y Ow xY w# t        $ r d}Y Pw xY w# t        $ r d}Y Qw xY w# t        $ r d}Y Rw xY w)	a  This convenience method creates a StructuralNavigationObject
        with the specified name and associated characteristics. (See the
        "Objects" section of code near the end of this class. Creators
        of StructuralNavigationObject's can still do things the old
        fashioned way should they so choose, by creating the instance
        and then adding it via addObject().

        Arguments:
        - name: the name/objType associated with this object.
        zself._z
Bindings()Presentation	PredicateN
DialogDataCriteriaGetter)evalr   r   )r*   namer   r+   r    r,   r!   r$   s           r-   r   z6StructuralNavigation.structuralNavigationObjectCreator  s    &j12fTF,78	vdV956I
	tfJ78J
	fTF(34H
	F4&/0F *$h	*2L*fV 	V+  	I	  	J	  	H	  	F	sF   A1 B  B B$ 1A?>A?BBB! B!$B21B2c                 "    || j                   |<   y)a  Adds structuralNavigationObject to the dictionary of enabled
        objects.

        Arguments:
        - objType: the name/object type of the StructuralNavigationObject.
        - structuralNavigationObject: the StructuralNavigationObject to
          add.
        N)r   )r*   r   structuralNavigationObjects      r-   	addObjectzStructuralNavigation.addObjectA  s     (BG$r/   c                     |r7d}t        j                  t         j                  |d       | j                          | j                  S )z7Returns the structural navigation input event handlers.z+STRUCTURAL NAVIGATION: Refreshing handlers.T)r   r{   r|   _setup_handlersr   )r*   refreshr   s      r-   r   z!StructuralNavigation.get_handlersM  s:     ?Cu//d;  "~~r/   c                    i | _         g | _        t        | j                        syt	        j
                  | j                  t        j                  | j                         | j                   d<   | j                  j                         D ]  }|j                  }|D ]/  }||   j                  | j                   xr | j                         1 | j                   j                  |       | j                  j                  |j                          d| j                   }t!        j"                  t         j$                  |d       y)z7Sets up the structural navigation input event handlers.N)r   !toggleStructuralNavigationHandlerz3STRUCTURAL NAVIGATION: Handlers set up. Suspended: T)r   r(   r}   r   r
   rL   toggleStructuralNavigationr   STRUCTURAL_NAVIGATION_TOGGLEr   valuesr%   set_enabledr   updateextendr   r{   r|   )r*   r   handlerskeyr   s        r-   r   z$StructuralNavigation._setup_handlersW  s    4&&' ))//66#.0 	:; +/*=*=*D*D*F 	H&1DDH P))doo*=*N$,,OPNN!!(+NN!!"<"F"FG	H DDOOCTU5++S$7r/   c                     |rCd}t        j                  t         j                  |d       | j                          | j                  S | j                  j                         r| j                          | j                  S )z.Returns the structural navigation keybindings.z+STRUCTURAL NAVIGATION: Refreshing bindings.T)r   r{   r|   _setup_bindingsr   rs   )r*   r   
is_desktopr   s       r-   get_bindingsz!StructuralNavigation.get_bindingso  sd     ?Cu//d;  " ~~ ^^##%  "~~r/   c           
      z   t        j                         | _        t        | j                        sy| j                  j                  t        j                  dt         j                  t         j                  | j                  d   d| j                                | j                  j                         D ]d  }|j                  j                  }|D ]G  }|j                  | j                  xr | j                          | j                  j                  |       I f t        j                          j#                  | j                  | j                  d      | _        d| j                   }t%        j&                  t$        j(                  |d       | j                  g}t%        j*                  t$        j(                  |d       y)z.Sets up the structural navigation keybindings.Nzr   r   Fz3STRUCTURAL NAVIGATION: Bindings set up. Suspended: T)r   r&   r   r}   r   rN   rO   rP   ORCA_MODIFIER_MASKr   r   r   r'   r   r   r   
getManageroverrideKeyBindingsr   r{   r|   printTokens)r*   r   r   
keybindingr   tokenss         r-   r   z$StructuralNavigation._setup_bindings{  sa    %0024&&'""//..BCOO#%	& +/*=*=*D*D*F 	/&1==IIH& /
&&t||'KDOO8KL"":./	/ *446JJNNDNNE3 DDOOCTU5++S$7..!%**FD9r/   c                 b   | j                   duxrH | j                   t        j                  k(  xs) t        j                  j                  | j                         }| j                   | j                   j	                         }nd}d| d| }t        j                  t
        j                  |d       |S )z>Returns true if the last input event was a navigation command.NNonez.STRUCTURAL NAVIGATION: Last navigation event (z) is last key event: T)r   r   lastNonModifierKeyEventisReleaseForasSingleLineStringr   r{   r|   )r*   resultstringr   s       r-   'last_input_event_was_navigation_commandz<StructuralNavigation.last_input_event_was_navigation_command  s     ''t3 \'':+M+MM [55BB4CYCYZ 	 !!-++>>@FF>vhF[\b[cd5++S$7r/   c                    d}|r|d| z  }t        j                  t         j                  |d       | j                  j                  D ]  }|j                  j                  |d       ! | j                  d      | _        | j                  d      | _        | j                  j                  D ]*  }|j                  j                  || j                          , y)z>Refreshes structural navigation bindings and grabs for script.z4STRUCTURAL NAVIGATION: Refreshing bindings and grabsrw   T)includeGrabsN)r   r{   r|   r   r'   remover   r   r   rN   r   )r*   rj   reasonr   ra   s        r-   refresh_bindings_and_grabsz/StructuralNavigation.refresh_bindings_and_grabs  s     ERx= C5++S$7~~11 	BG%%gD%A	B **40**40~~11 	NG""7T__9L"M	Nr/   c                 8   | j                    | _         | j                   rt        j                  }nt        j                  }| j	                  d      | _        | j                  d      | _        | j                  |d       |r| j                  j                  |       y)z#Toggles structural navigation keys.Tztoggling structural navigation)r   r   STRUCTURAL_NAVIGATION_KEYS_ONSTRUCTURAL_NAVIGATION_KEYS_OFFr   r   r   r   r  r   r   )r*   rj   rk   r   r  s        r-   r   z/StructuralNavigation.toggleStructuralNavigation  s|      <<'<<;;F<<F**40**40''0PQLL''/r/   c                    || j                   k(  ryd| }|r|d| z  }t        j                  t        j                  |d       t        j                  t        j                  |d       || _         | j	                  |d|        y)zBSuspends structural navigation independent of the enabled setting.Nz"STRUCTURAL NAVIGATION: Suspended: rw   TzSuspended changed to )r   r   r{   r|   r  )r*   rj   	suspendedr  r   s        r-   suspend_commandsz%StructuralNavigation.suspend_commands  s     '29+>Rx= C5++S$75++S$7#''2G	{0STr/   c                 .   | j                   j                  j                  t        j                         j                               t              }| j                  |k7  rNd| j                   d| }t        j                  t        j                  |d       | j                          || _        | j                   j                  j                         }| j                  j                  t        |      i       }|j                    d| }|j                  |g       }|rCdt#        |      dg}	t        j$                  t        j                  |	d       |j'                         S |j(                  r|j)                  ||      }nv|j*                  sg S t-        j.                  |      s,d|dg}	t        j$                  t        j                  |	d       g S |j+                  |      }
t1        j2                  ||
      }|rlt#        |      }|D cg c]  }t-        j4                  |fd	      s|  }}d
|t#        |      z
  hdg}	t        j$                  t        j                  |	d       |j'                         }|||<   || j                  t        |      <   |S c c}w )z8Returns all the instances of structuralNavigationObject.z8STRUCTURAL NAVIGATION: in modal dialog has changed from z to T:z STRUCTURAL NAVIGATION: Returningzmatches from cacheSTRUCTURAL NAVIGATION:zdoes not support collectionc                     | k(  S r   r   )ru   modalDialogs    r-   <lambda>z.StructuralNavigation._getAll.<locals>.<lambda>	  s    QRVaQa r/   zSTRUCTURAL NAVIGATION: Removedzobjects outside of modal dialog)r   rq   getModalDialogr   r   get_locus_of_focusboolr   r   r{   r|   r   documentFramer   rK   r   r   r}   r   copyr$   r!   r   supports_collectionr   get_all_matchesfind_ancestor)r*   r   r   inModalDialogr   r   cacher   matchesr   ruleoriginalSizemrvr  s                 @r-   ry   zStructuralNavigation._getAll  sE    ll,,;;$$&99;=[)-/J&&'tM?<  u//d;OO"/D<<))779!!%%d8nb9+334AcU;))C$8#g,H\]Fe..=<<>!%,,077#FG+44I--h7.:WXFe..=I-66s;D"228TBGw<L")cQX-C-CAGa-bqcGc6G9T8U7FFe..=\\^c
,1$x.)	 ds   J%Jc                 D   || _         |8| j                  j                  j                         \  }}| j	                  |      }|t        j                  |      r|j                  d |       y |r<| j                  j                  j                  |d      \  }}|j                  ||       y | j                  j                  j                  |      \  }}| j                  j                  j                  ||      \  }}	|sK| j                  j                  j                  |      }
| j                  j                  j                  ||
      }| j	                  |      }|r||k7  r|j                  ||	       y ||k(  rt        j                  |d      }|j                  |d       y )Nrx   T)sameContainer)r   r   rq   r   getContainerForObjectr   rp   r"   nextContextlastContextgetDocumentForObjectgetNextObjectInDocument	get_child)r*   r   r   eventr   r   r   r   newObj	newOffsetr   newContainers               r-   r   zStructuralNavigation.goEdge  sl   !&,,00@@BKC2237I 0 0 ;&..tS9,,00<<YKKC&..sF; ll,,88CV LL22>>sFK	||--BB3GH\\++CCCRF11&9li/&..vyA)$$S"-C"**3d*Cr/   c                 @    | _          j                  |      sj                  d|       y|sj                           fd}fd}d}|s' j                  j
                  j                         \  }} ||      \  }	}
|	r|
d |	}t        j                  |      }t              D ]  \  }} ||      st        j                  |      |k(  rt        j                  |      |z
  }n;t        j                  |      } j                  j
                  j                  ||      }|dkD  r|s	|dk  s|rj                  ||        y t        j                  sj                  d|       y|s* j                  j!                  t"        j$                         n) j                  j!                  t"        j&                          j                  |      |sj                          D ]  } ||      sj                  ||        y j                  d|       y)aL  The method used for navigation among StructuralNavigationObjects
        which are not table cells.

        Arguments:
        - structuralNavigationObject: the StructuralNavigationObject which
          represents the object of interest.
        - isNext: If True, we're interested in the next accessible object
          which matches structuralNavigationObject.  If False, we're
          interested in the previous accessible object which matches.
        - event: The input event triggering this navigation
        - obj: the current object (typically the locusOfFocus).
        - arg: optional arguments which may need to be passed along to
          the predicate, presentation method, etc. For instance, in the
          case of navigating amongst headings at a given level, the level
          is needed and passed in as arg.
        Nc                    t        j                  |       ryj                  j                  j	                  |       s%j                  j                  j                  |       ryj                  yj                  |       S )NFT)r   rp   r   rq   rr   rs   r    )r   r*   r   s    r-   rv   z4StructuralNavigation.goObject.<locals>._isValidMatchO  sg    $||%%..s3t||7M7M7U7UVY7Z)33;-77<<r/   c                 h    | r/| v r| j                  |       fS t        j                  |       } | r/y)N)Nrx   )r   r   
get_parent)r   r  s    r-   _getMatchingObjAndIndexz>StructuralNavigation.goObject.<locals>._getMatchingObjAndIndexX  s;    '>c 222))#. 
 r/   r   )r   ry   r"   reverser   rq   r   r   get_pathrT   r2  r   get_character_offset_in_parentpathComparisonr   wrappedStructuralNavigationr   r   WRAPPING_TO_BOTTOMWRAPPING_TO_TOP)r*   r   isNextr+  r   r   rv   r3  r   thisObjr   currentPathr`   match
comparisonpathr  s   ``              @r-   rh   zStructuralNavigation.goObject4  s   $ "',,93?&..tS9OO	=	 ,,00@@BKC05efoGC'',!'* 	HAu '""5)S0(GGNQWW
((/!\\33BB4U
Q6zA~f*225#>	 33&..tS9LL''(C(CDLL''(@(@A,,93?OO 	EU#*225#>	
 	#**45r/   c                    t        j                  |      rt        j                  |t         j                        D cg c]  }| }}|ra| j
                  j                  j                  |      rt        j                  t        |            S t        j                  t        |            S yt        j                  |      r5t        j                  |      }|rt        j                  t        |            S yc c}w N )r   is_listr   iter_childrenis_list_itemr   rq   nestingLevelr   nestedListItemCountr}   listItemCountis_description_listfind_all_description_termsdescriptionListTermCount)r*   r   ru   childrens       r-   _getListDescriptionz(StructuralNavigation._getListDescription  s    s##+#9#9#{?W?W#XYaYHY<<))66s;#77HFF#11#h-@@  ,,S1"==cBH88XGG Zs   	C6c                 d   t        j                  |      }|| j                  vry|t        j                  j
                  k(  rK| j                  j                  j                  |      s&| j                  j                  j                  |      sy| j                  j                  j                  |      S ro   )r   get_roleCONTAINER_ROLESr   RoleSECTIONr   rq   
isLandmarkisBlockquoteinDocumentContent)r*   r   roles      r-   _isContainerz!StructuralNavigation._isContainer  s      %t+++5::%%%<<))44S9<<))66s;||%%77<<r/   c                 n    |sy | j                  |      r|S t        j                  || j                         S r   )rX  r   r  r*   r   s     r-   r%  z*StructuralNavigation.getContainerForObject  s4    S!J%%c4+<+<==r/   c                 |    |r9t        j                  |      s$t        j                  |t         j                        }|S )zLooks for a table in the ancestry of obj, if obj is not a table.

        Arguments:
        - obj: the accessible object of interest.
        )r   is_tabler   r  rZ  s     r-   getTableForCellz$StructuralNavigation.getTableForCell  s1     {++C0((k.B.BCC
r/   c                 L    | j                   j                  j                  |      S )a@  Returns the [obj, characterOffset] where the caret should be
        positioned. For most scripts, the object should not change and
        the offset should be 0.  That's not always the case with Gecko.

        Arguments:
        - obj: the accessible object in which the caret should be
          positioned.
        )r   rq   getFirstCaretPositionrZ  s     r-   _getCaretPositionz&StructuralNavigation._getCaretPosition  s     ||%%;;C@@r/   c                 t   t        j                  |      }t        j                  |      }|t        j                  j
                  k(  r||fS | j                  j                  j                  ||       t        j                  |dd       t        j                  |      s||fS d|dg}t        j                  t        j                  |d       | j                  j                  j                  |      }|rCt        j                  |      |k(  r+d|g}t        j                  t        j                  |d       |}||fS )z2Sets the caret at the specified offset within obj.FzKStructural navigation workaround for object destruction when setting caret.r  z+became defunct after setting caret positionTz0STRUCTURAL NAVIGATION: Updating obj to replicant)r   r5  rP  r   rR  INVALIDr   rq   setCaretPositionclear_cacher   
is_defunctr   r   r|   getObjectFromPath)r*   r   characterOffsetobjPathobjRoler   	replicants          r-   _setCaretPositionz&StructuralNavigation._setCaretPosition  s    ##C(##C(ejj(((''//_EY	[ %%c*''*C1^_%**FD9LL**<<WE	**95@H)TFe..=CO##r/   c                     |sy| j                  ||      ry| j                  j                  |       | j                  j                  |       y)zPresents the first line of the object to the user.

        Arguments:
        - obj: the accessible object to be presented.
        - offset: the character offset within obj.
        N)_presentWithSayAllr   updateBraillesayLiner*   r   r   s      r-   _presentLinez!StructuralNavigation._presentLine  sA     ""3/""3'S!r/   c                     |sy| j                  ||      ryt        j                  |       | j                  j	                  |||d       y)zPresents the entire object to the user.

        Arguments:
        - obj: the accessible object to be presented.
        - offset: the character offset within obj.
        NT)r   priorObj	interrupt)rm  r   scroll_to_top_edger   presentObject)r*   r   r   rs  s       r-   _presentObjectz#StructuralNavigation._presentObject  sG     ""3/--c2""3vTX"Yr/   c                     | j                   j                         r@t        j                         j	                  d      r| j                   j                  ||       yy)NstructNavInSayAllTF)r   inSayAllr   r   
getSettingsayAllrp  s      r-   rm  z'StructuralNavigation._presentWithSayAll	  sD    <<  "**,778KLLLV,r/   c                 L    | j                   j                  j                  |      S r   )r   speechGeneratorgetLocalizedRoleNamerZ  s     r-   _getRoleNamez!StructuralNavigation._getRoleName  s     ||++@@EEr/   c                     t        j                  |      rt        j                  |d      }t        j                  |      sy t        j                  |d      S Nr   )r   is_combo_boxr   r*  supports_selectionr   get_selected_childrZ  s     r-   _getSelectedItemz%StructuralNavigation._getSelectedItem  sH     ##C($$S!,C**3/--c155r/   c                    | j                   j                  j                  |      }|s%| j                   j                  j                  |      }|s(| j	                  |      }|rt        j                  |      }|st        j                  |      rmt        j                  |      xs t        j                  |      }|s?t        j                  |      }t        j                  |      rt        j                  |      }|stt        j                  |      r_t        j                   |t        j"                        D cg c]  }| }}dj%                  t'        t)        | j*                  |                  }|S c c}w )N )r   rq   displayedText
expandEOCsr  r   get_namer   is_imageget_image_descriptionget_descriptionr2  is_linkr   get_link_basenamerD  rE  rF  joinr5   map_getText)r*   r   textitemparentru   rM  s          r-   r  zStructuralNavigation._getText!  s"    ||%%33C8<<))44S9D((-D((.,,S111#6W(:R:RSV:WD!,,S1&&v.&88@D++C0#+#9#9#{?W?W#XYaYHY88DT]]H!=>?D Zs   8	E3c                     | j                   j                  j                  |      }|s*| j                   j                  j	                  |d      \  }}|S )NF)focusedOnly)r   rq   displayedLabellabelInferenceinfer)r*   r   labelr   s       r-   	_getLabelzStructuralNavigation._getLabel7  sP     &&55c:!\\88>> ? (NE7 r/   c                    t        j                  |      rDt        j                  \  }}}t        j                  |      r|S t        j
                  |      r|S |S t        j                  |      r,t        j                  \  }}t        j
                  |      r|S |S t        j                  |      r5t        j                  |      rt        j                  S t        j                  S yrB  )r   is_check_boxr   CHECK_BOX_INDICATORS_SPEECHis_indeterminate
is_checkedis_radio_buttonRADIO_BUTTON_INDICATORS_SPEECHr  
is_visitedSTATE_VISITEDSTATE_UNVISITED)r*   r   	uncheckedchecked	partially
unselectedselecteds          r-   	_getStatezStructuralNavigation._getStateA  s     ##C(,=,Y,Y)Iw	++C0  %%c*&&s+#4#S#S J%%c*s#%%c*(666(888r/   c                 J    | j                  |      xs | j                  |      S r   )r  r  rZ  s     r-   	_getValuezStructuralNavigation._getValue]  s!     ~~c"8dmmC&88r/   c                     i }t         j                  }dt        j                  |g|d<   t         j                  }dt        j
                  |g|d<   t         j                  }dt        j                  |g|d<   |S )Nqr1   r3   r5   )r   BLOCKQUOTE_PREVr   SHIFT_MODIFIER_MASKBLOCKQUOTE_NEXTNO_MODIFIER_MASKBLOCKQUOTE_LISTSHIFT_ALT_MODIFIER_MASKr*   r   prevDescnextDesclistDescs        r-   _blockquoteBindingsz(StructuralNavigation._blockquoteBindings  r    ++ #[%D%DhO++!=!=xH++!D!DhOr/   c                 ,    t        j                  |      S r   )r   find_all_block_quotesr*   r   r   s      r-   _blockquoteGetterz&StructuralNavigation._blockquoteGetter      00::r/   c                     |<| j                  |      \  }}| j                  ||      \  }}| j                  ||       y t        j                  }t        j
                  }| j                  j                  ||       y r   )r`  rk  rw  r   NO_MORE_BLOCKQUOTESSTRUCTURAL_NAVIGATION_NOT_FOUNDr   r   r*   r   r   rg  fullbriefs         r-   _blockquotePresentationz,StructuralNavigation._blockquotePresentation  m    ?%)%;%;C%@"S/#'#9#9##O C_5//D<<ELL''e4r/   c                 V     t         j                  g} fd}t         j                  ||fS )Nc                 (    j                  |       gS r   r  r   r*   s    r-   r   z;StructuralNavigation._blockquoteDialogData.<locals>.rowData      MM#&''r/   )r	   SN_HEADER_BLOCKQUOTESN_TITLE_BLOCKQUOTEr*   r   r   s   `  r-   _blockquoteDialogDataz*StructuralNavigation._blockquoteDialogData  s+    "778	( ,,mWDDr/   c                     i }t         j                  }dt        j                  |g|d<   t         j                  }dt        j
                  |g|d<   t         j                  }dt        j                  |g|d<   |S )Nbr1   r3   r5   )r   BUTTON_PREVr   r  BUTTON_NEXTr  BUTTON_LISTr  r  s        r-   _buttonBindingsz$StructuralNavigation._buttonBindings  sr    '' #[%D%DhO''!=!=xH''!D!DhOr/   c                 ,    t        j                  |      S r   )r   find_all_buttonsr  s      r-   _buttonGetterz"StructuralNavigation._buttonGetter  s    ++H55r/   c                     |<| j                  |      \  }}| j                  ||      \  }}| j                  ||       y t        j                  }t        j
                  }| j                  j                  ||       y r   )r`  rk  rw  r   NO_MORE_BUTTONSr  r   r   r  s         r-   _buttonPresentationz(StructuralNavigation._buttonPresentation  m    ?%)%;%;C%@"S/#'#9#9##O C_5++D<<ELL''e4r/   c                 V     t         j                  g} fd}t         j                  ||fS )Nc                 (    j                  |       gS r   r  r  s    r-   r   z7StructuralNavigation._buttonDialogData.<locals>.rowData  r  r/   )r	   SN_HEADER_BUTTONSN_TITLE_BUTTONr  s   `  r-   _buttonDialogDataz&StructuralNavigation._buttonDialogData  s+    "334	( ((-@@r/   c                     i }t         j                  }dt        j                  |g|d<   t         j                  }dt        j
                  |g|d<   t         j                  }dt        j                  |g|d<   |S )Nru   r1   r3   r5   )r   CHECK_BOX_PREVr   r  CHECK_BOX_NEXTr  CHECK_BOX_LISTr  r  s        r-   _checkBoxBindingsz&StructuralNavigation._checkBoxBindings  r    ** #[%D%DhO**!=!=xH**!D!DhOr/   c                 ,    t        j                  |      S r   )r   find_all_check_boxesr  s      r-   _checkBoxGetterz$StructuralNavigation._checkBoxGetter      //99r/   c                     |<| j                  |      \  }}| j                  ||      \  }}| j                  ||       y t        j                  }t        j
                  }| j                  j                  ||       y r   )r`  rk  rw  r   NO_MORE_CHECK_BOXESr  r   r   r  s         r-   _checkBoxPresentationz*StructuralNavigation._checkBoxPresentation  r  r/   c                      t         j                  g}|j                  t         j                          fd}t         j                  ||fS )Nc                 H    j                  |       j                  |       gS r   r  r  r  s    r-   r   z9StructuralNavigation._checkBoxDialogData.<locals>.rowData       NN3')<==r/   )r	   SN_HEADER_CHECK_BOXrQ   SN_HEADER_STATESN_TITLE_CHECK_BOXr  s   `  r-   _checkBoxDialogDataz(StructuralNavigation._checkBoxDialogData  s?    "667Y667	> ++]GCCr/   c                     i }t         j                  }dt        j                  |g|d<   t         j                  }dt        j
                  |g|d<   t         j                  }dt        j                  |g|d<   |S )Nor1   r3   r5   )r   LARGE_OBJECT_PREVr   r  LARGE_OBJECT_NEXTr  LARGE_OBJECT_LISTr  r  s        r-   _chunkBindingsz#StructuralNavigation._chunkBindings  r    -- #[%D%DhO--!=!=xH--!D!DhOr/   c                 \    t        j                  | j                  | j                  z         S N)roles)r   create_match_ruleOBJECT_ROLESrQ  r*   r   s     r-   _chunkCriteriaz#StructuralNavigation._chunkCriteria  s$    --D4E4EH\H\4\]]r/   c                    t        j                  |      ryt        j                  |      }|t        j
                  k  ryt        j                  |      }|j                  | j                  j                        }||z  dk  ryy)NTFg?)
r   
is_headingr   get_character_countr   largeObjectTextLengthget_all_textr   r   EMBEDDED_OBJECT_CHARACTER)r*   r   r   lengthr  eocss         r-   _chunkPredicatez$StructuralNavigation._chunkPredicate  sn    !!#&++C0H222$$S)||DLLBBC;r/   c                     |9| j                  |      \  }}| j                  ||       | j                  |d       y t        j                  }t        j
                  }| j                  j                  ||       y r  )r`  rk  rw  r   NO_MORE_CHUNKSr  r   r   r*   r   r   r,  rg  r  r  s          r-   _chunkPresentationz'StructuralNavigation._chunkPresentation!  f    ?(,(>(>s(C%V_""6?;Q'**D<<ELL''e4r/   c                      t         j                  g}|j                  t         j                          fd}t         j                  ||fS )Nc                 H    j                  |       j                  |       gS r   r  r  r  s    r-   r   z6StructuralNavigation._chunkDialogData.<locals>.rowData/  "    MM#&(9(9#(>??r/   )r	   SN_HEADER_OBJECTrQ   SN_HEADER_ROLESN_TITLE_LARGE_OBJECTr  s   `  r-   _chunkDialogDataz%StructuralNavigation._chunkDialogData+  s@    "334Y556	@ ..wFFr/   c                     i }t         j                  }dt        j                  |g|d<   t         j                  }dt        j
                  |g|d<   t         j                  }dt        j                  |g|d<   |S )Ncr1   r3   r5   )r   COMBO_BOX_PREVr   r  COMBO_BOX_NEXTr  COMBO_BOX_LISTr  r  s        r-   _comboBoxBindingsz&StructuralNavigation._comboBoxBindings:  r  r/   c                 ,    t        j                  |      S r   )r   find_all_combo_boxesr  s      r-   _comboBoxGetterz$StructuralNavigation._comboBoxGetterF  r  r/   c                     |<| j                  |      \  }}| j                  ||      \  }}| j                  ||       y t        j                  }t        j
                  }| j                  j                  ||       y r   )r`  rk  rw  r   NO_MORE_COMBO_BOXESr  r   r   r  s         r-   _comboBoxPresentationz*StructuralNavigation._comboBoxPresentationI  r  r/   c                      t         j                  g}|j                  t         j                          fd}t         j                  ||fS )Nc                 H    j                  |       j                  |       gS r   r  r  r  s    r-   r   z9StructuralNavigation._comboBoxDialogData.<locals>.rowDataW       NN3's);<<r/   )r	   SN_HEADER_COMBO_BOXrQ   SN_HEADER_SELECTED_ITEMSN_TITLE_COMBO_BOXr  s   `  r-   _comboBoxDialogDataz(StructuralNavigation._comboBoxDialogDataS  s?    "667Y>>?	= ++]GCCr/   c                     i }t         j                  }dt        j                  |g|d<   t         j                  }dt        j
                  |g|d<   t         j                  }dt        j                  |g|d<   |S )Ner1   r3   r5   )r   
ENTRY_PREVr   r  
ENTRY_NEXTr  
ENTRY_LISTr  r  s        r-   _entryBindingsz#StructuralNavigation._entryBindingsb  r    && #[%D%DhO&&!=!=xH&&!D!DhOr/   c                 6    d }t        j                  ||      S )Nc                 d    t        j                  |       }|d uxr t        j                  |       S r   )r   r2  r   is_editable)r   r  s     r-   parent_is_not_editablezAStructuralNavigation._entryGetter.<locals>.parent_is_not_editableo  s0    ((-F%Mk.E.Ef.M*MMr/   pred)r   find_all_editable_objects)r*   r   r   r=  s       r-   _entryGetterz!StructuralNavigation._entryGettern  s    	N 44XDZ[[r/   c                     |<| j                  |      \  }}| j                  ||      \  }}| j                  ||       y t        j                  }t        j
                  }| j                  j                  ||       y r   )r`  rk  rw  r   NO_MORE_ENTRIESr  r   r   r  s         r-   _entryPresentationz'StructuralNavigation._entryPresentationt  r  r/   c                      t         j                  g}|j                  t         j                          fd}t         j                  ||fS )Nc                 H    j                  |       j                  |       gS r   r-  r  s    r-   r   z6StructuralNavigation._entryDialogData.<locals>.rowData  r.  r/   )r	   SN_HEADER_LABELrQ   SN_HEADER_TEXTSN_TITLE_ENTRYr  s   `  r-   _entryDialogDataz%StructuralNavigation._entryDialogData~  s?    "223Y556	= ''??r/   c                     i }t         j                  }dt        j                  |g|d<   t         j                  }dt        j
                  |g|d<   t         j                  }dt        j                  |g|d<   |S )Nfr1   r3   r5   )r   FORM_FIELD_PREVr   r  FORM_FIELD_NEXTr  FORM_FIELD_LISTr  r  s        r-   _formFieldBindingsz'StructuralNavigation._formFieldBindings  r  r/   c                 6    d }t        j                  ||      S )Nc                 X    t        j                  |       rt        j                  |       S y)NT)r   is_document_framer<  r   s    r-   is_not_noneditable_doc_framezKStructuralNavigation._formFieldGetter.<locals>.is_not_noneditable_doc_frame  s$    ,,S1"..s33r/   r>  )r   find_all_form_fields)r*   r   r   rU  s       r-   _formFieldGetterz%StructuralNavigation._formFieldGetter  s    	 //?[\\r/   c                 x   ||t        j                  |      r+t        j                  |      rt        j                  |d      }| j                  |      \  }}| j                  ||      \  }}| j                  ||       y t        j                  }t        j                  }| j                  j                  ||       y r  )r   is_textr   get_child_countr*  r`  rk  rw  r   NO_MORE_FORM_FIELDSr  r   r   r  s         r-   _formFieldPresentationz+StructuralNavigation._formFieldPresentation  s    ?""3'H,D,DS,I((a0%)%;%;C%@"S/#'#9#9##O C_5//D<<ELL''e4r/   c                      t         j                  g}|j                  t         j                         |j                  t         j                          fd}t         j
                  ||fS )Nc                 h    j                  |       j                  |       j                  |       gS r   )r  r  r  r  s    r-   r   z:StructuralNavigation._formFieldDialogData.<locals>.rowData  s3    NN3'%%c*NN3') )r/   )r	   rG  rQ   r  SN_HEADER_VALUESN_TITLE_FORM_FIELDr  s   `  r-   _formFieldDialogDataz)StructuralNavigation._formFieldDialogData  sS    "223Y556Y667	)
 ,,mWDDr/   c                    i }t         j                  }dt        j                  |g|d<   t         j                  }dt        j
                  |g|d<   t         j                  }dt        j                  |g|d<   g }g }g }| j                         \  }}	t        ||	dz         D ]  }
t         j                  |
z  }|j                  t        |
      t        j                  |g       t         j                  |
z  }|j                  t        |
      t        j
                  |g       t         j                  |
z  }|j                  t        |
      t        j                  |g        ||d<   ||d<   ||d<   |S )	Nhr1   r3   r5   r   r7   r8   r9   )r   HEADING_PREVr   r  HEADING_NEXTr  HEADING_LISTr  _headingLevelsrangeHEADING_AT_LEVEL_PREVrQ   strHEADING_AT_LEVEL_NEXTHEADING_AT_LEVEL_LIST)r*   r   r  r  r  prevAtLevelBindingsnextAtLevelBindingslistAtLevelBindingsminLevelmaxLevelr`   s              r-   _headingBindingsz%StructuralNavigation._headingBindings  su   (( #[%D%DhO((!=!=xH((!D!DhO   !002(xA. 	3A559H&&A(3(G(G(0(2 3  559H&&A(3(D(D(0(2 3  55q8H&&A(3(K(K(0(2 3	3  ':"#"5"5r/   c                 
    ddgS )Nr      r   )r*   s    r-   rg  z#StructuralNavigation._headingLevels  s    1vr/   c                 ^    |t        j                  ||      S t        j                  |      S )N)rb   )r   find_all_headings_at_levelfind_all_headingsr  s      r-   _headingGetterz#StructuralNavigation._headingGetter  s+    ?99(#NN,,X66r/   c                 |   |<| j                  |      \  }}| j                  ||      \  }}| j                  ||       y |=t        j                  }t        j
                  }| j                  j                  ||       y t        j                  |z  }t        j
                  }| j                  j                  ||       y r   )	r`  rk  rw  r   NO_MORE_HEADINGSr  r   r   NO_MORE_HEADINGS_AT_LEVELr  s         r-   _headingPresentationz)StructuralNavigation._headingPresentation  s    ?%)%;%;C%@"S/#'#9#9##O C_5[,,D<<ELL''e455;D<<ELL''e4r/   c                      t         j                  g}|s5t         j                  }|j                  t         j                          fd}nt         j
                  |z  } fd}|||fS )Nc                     j                  |       t        j                  j                  j	                  |             gS r   )r  rj  r   rq   headingLevelr  s    r-   r   z8StructuralNavigation._headingDialogData.<locals>.rowData   s8    c*DLL22??DEG Gr/   c                 (    j                  |       gS r   r  r  s    r-   r   z8StructuralNavigation._headingDialogData.<locals>.rowData  s    c*++r/   )r	   SN_HEADER_HEADINGSN_TITLE_HEADINGrQ   SN_HEADER_LEVELSN_TITLE_HEADING_AT_LEVEL)r*   r   r   r   r   s   `    r-   _headingDialogDataz'StructuralNavigation._headingDialogData  s_    "445..E  !:!:;G
 77#=E, mW,,r/   c                     i }t         j                  }dt        j                  |g|d<   t         j                  }dt        j
                  |g|d<   t         j                  }dt        j                  |g|d<   |S )NrC  r1   r3   r5   )r   IFRAME_PREVr   r  IFRAME_NEXTr  IFRAME_LISTr  r  s        r-   _iframeBindingsz$StructuralNavigation._iframeBindings  sr    '' "K$C$CXN'' < <hG'' C CXNr/   c                 ,    t        j                  |      S r   )r   find_all_internal_framesr  s      r-   _iframeGetterz"StructuralNavigation._iframeGetter      33H==r/   c                     |9| j                  |      \  }}| j                  ||       | j                  |d       y t        j                  }t        j
                  }| j                  j                  ||       y r  )r`  rk  rw  r   NO_MORE_IFRAMESr  r   r   r  s          r-   _iframePresentationz(StructuralNavigation._iframePresentation!  sf    ?(,(>(>s(C%V_""6?;Q'++D<<ELL''e4r/   c                 V     t         j                  g} fd}t         j                  ||fS )Nc                     t        j                  |       }|s>t        j                  |       r)t        j                  t        j                  | d            }|xs j	                  |       gS r  )r   r  rZ  r*  r  )r   r   r*   s     r-   r   z7StructuralNavigation._iframeDialogData.<locals>.rowData.  sY    $$S)DH44S9((););C)CD2D--c233r/   )r	   SN_HEADER_IFRAMESN_TITLE_IFRAMEr  s   `  r-   _iframeDialogDataz&StructuralNavigation._iframeDialogData+  s+    "334	4 ((-@@r/   c                     i }t         j                  }dt        j                  |g|d<   t         j                  }dt        j
                  |g|d<   t         j                  }dt        j                  |g|d<   |S )Ngr1   r3   r5   )r   
IMAGE_PREVr   r  
IMAGE_NEXTr  
IMAGE_LISTr  r  s        r-   _imageBindingsz#StructuralNavigation._imageBindings<  r9  r/   c                 ,    t        j                  |      S r   )r   find_all_images_and_image_mapsr  s      r-   _imageGetterz!StructuralNavigation._imageGetterH  s    99(CCr/   c                     |9| j                  |      \  }}| j                  ||       | j                  |d       y t        j                  }t        j
                  }| j                  j                  ||       y r  )r`  rk  rw  r   NO_MORE_IMAGESr  r   r   r  s          r-   _imagePresentationz'StructuralNavigation._imagePresentationK  r  r/   c                 V     t         j                  g} fd}t         j                  ||fS )Nc                 N    j                  |       xs j                  |       gS r   r  r  s    r-   r   z6StructuralNavigation._imageDialogData.<locals>.rowDataX  s%    MM#&@$*;*;C*@AAr/   )r	   SN_HEADER_IMAGESN_TITLE_IMAGEr  s   `  r-   _imageDialogDataz%StructuralNavigation._imageDialogDataU  s,    "223	B ''??r/   c                     i }t         j                  }dt        j                  |g|d<   t         j                  }dt        j
                  |g|d<   t         j                  }dt        j                  |g|d<   |S )Nr!  r1   r3   r5   )r   LANDMARK_PREVr   r  LANDMARK_NEXTr  LANDMARK_LISTr  r  s        r-   _landmarkBindingsz&StructuralNavigation._landmarkBindingsc  sr    )) #[%D%DhO))!=!=xH))!D!DhOr/   c                 ,    t        j                  |      S r   )r   find_all_landmarksr  s      r-   _landmarkGetterz$StructuralNavigation._landmarkGettero  s    --h77r/   c                 T   |j| j                  |      \  }}| j                  ||      \  }}| j                  j                  t	        j
                  |             | j                  ||       y t        j                  }t        j                  }| j                  j                  ||       y r   )
r`  rk  r   r   r   r  rq  r   NO_LANDMARK_FOUNDr  r  s         r-   _landmarkPresentationz*StructuralNavigation._landmarkPresentationr  s    ?%)%;%;C%@"S/#'#9#9##O CLL''(9(9#(>?c?3--D<<ELL''e4r/   c                      t         j                  g}|j                  t         j                          fd}t         j                  ||fS )Nc                 P    t        j                  |       j                  |       gS r   )r   r  r  r  s    r-   r   z9StructuralNavigation._landmarkDialogData.<locals>.rowData  s$    %%c*D,=,=c,BCCr/   )r	   SN_HEADER_LANDMARKrQ   r  SN_TITLE_LANDMARKr  s   `  r-   _landmarkDialogDataz(StructuralNavigation._landmarkDialogData}  s@    "556Y556	D **M7BBr/   c                     i }t         j                  }dt        j                  |g|d<   t         j                  }dt        j
                  |g|d<   t         j                  }dt        j                  |g|d<   |S )Nlr1   r3   r5   )r   	LIST_PREVr   r  	LIST_NEXTr  	LIST_LISTr  r  s        r-   _listBindingsz"StructuralNavigation._listBindings  r    %% #[%D%DhO%%!=!=xH%%!D!DhOr/   c                 x    t        j                  |      }|j                  t        j                  |             |S r   )r   find_all_listsr   find_all_description_listsr*   r   r   resultss       r-   _listGetterz StructuralNavigation._listGetter  s.    ,,X6{==hGHr/   c                 L   |f| j                   j                  | j                  |             | j                  |      \  }}| j	                  ||      \  }}| j                  ||       y t        j                  }t        j                  }| j                   j                  ||       y r   )
r   speakMessagerN  r`  rk  rq  r   NO_MORE_LISTSr  r   r  s         r-   _listPresentationz&StructuralNavigation._listPresentation  s    ?LL%%d&>&>s&CD%)%;%;C%@"S/#'#9#9##O Cc?3))D<<ELL''e4r/   c                 V     t         j                  g} fd}t         j                  ||fS )Nc                 (    j                  |       gS r   r  r  s    r-   r   z5StructuralNavigation._listDialogData.<locals>.rowData  r  r/   )r	   SN_HEADER_LISTSN_TITLE_LISTr  s   `  r-   _listDialogDataz$StructuralNavigation._listDialogData  s+    "112	( &&w>>r/   c                     i }t         j                  }dt        j                  |g|d<   t         j                  }dt        j
                  |g|d<   t         j                  }dt        j                  |g|d<   |S )Nr`   r1   r3   r5   )r   LIST_ITEM_PREVr   r  LIST_ITEM_NEXTr  LIST_ITEM_LISTr  r  s        r-   _listItemBindingsz&StructuralNavigation._listItemBindings  r  r/   c                 x    t        j                  |      }|j                  t        j                  |             |S r   )r   find_all_list_itemsr   rK  r  s       r-   _listItemGetterz$StructuralNavigation._listItemGetter  s.    11(;{==hGHr/   c                    |=t         j                  }t         j                  }| j                  j	                  ||       y d }d }t        j                         j                         }t        j                  |      rIt        j                  |t        j                        }t        j                  |t        j                        }nHt        j                  |t        j                        }t        j                  |t        j                        }|/||k7  r*| j                  j                  | j                  |             | j!                  |      \  }}| j#                  ||      \  }}| j%                  ||       y r   )r   NO_MORE_LIST_ITEMSr  r   r   r   r   r  r   rF  r   r  rD  rJ  r  rN  r`  rk  rq  )	r*   r   r   r  r  thisList	priorListfocusrg  s	            r-   _listItemPresentationz*StructuralNavigation._listItemPresentation  s)   ;..D<<ELL''e4	((*==?##C(--c;3F3FGH ..uk6I6IJI--c;3R3RSH ..uk6U6UVII$9LL%%d&>&>x&HI!%!7!7!<o#55c?K_#/r/   c                 V     t         j                  g} fd}t         j                  ||fS )Nc                 (    j                  |       gS r   r  r  s    r-   r   z9StructuralNavigation._listItemDialogData.<locals>.rowData  r  r/   )r	   SN_HEADER_LIST_ITEMSN_TITLE_LIST_ITEMr  s   `  r-   _listItemDialogDataz(StructuralNavigation._listItemDialogData  +    "667	( ++]GCCr/   c                     i }t         j                  }dt        j                  |g|d<   t         j                  }dt        j
                  |g|d<   t         j                  }dt        j
                  |g|d<   |S )Ndr1   r3   yrD   )r   LIVE_REGION_PREVr   r  LIVE_REGION_NEXTr  LIVE_REGION_LAST)r*   r   r  r  descs        r-   _liveRegionBindingsz(StructuralNavigation._liveRegionBindings  sr    ,, #[%D%DhO,,!=!=xH((!=!=tDr/   c                 ,    t        j                  |      S r   )r   find_all_live_regionsr  s      r-   _liveRegionGetterz&StructuralNavigation._liveRegionGetter  r  r/   c                     |<| j                  |      \  }}| j                  ||      \  }}| j                  ||       y t        j                  }t        j
                  }| j                  j                  ||       y r   )r`  rk  rw  r   NO_MORE_LIVE_REGIONSr  r   r   r  s         r-   _liveRegionPresentationz,StructuralNavigation._liveRegionPresentation  sm    ?%)%;%;C%@"S/#'#9#9##O C_500D<<ELL''e4r/   c                     i }t         j                  }dt        j                  |g|d<   t         j                  }dt        j
                  |g|d<   t         j                  }dt        j                  |g|d<   |S )Npr1   r3   r5   )r   PARAGRAPH_PREVr   r  PARAGRAPH_NEXTr  PARAGRAPH_LISTr  r  s        r-   _paragraphBindingsz'StructuralNavigation._paragraphBindings  r  r/   c                 6    d }t        j                  |d|      S )Nc                 ^    t        j                  |       ryt        j                  |       dkD  S )NT   )r   r
  r   r  rT  s    r-   has_at_least_three_characterszLStructuralNavigation._paragraphGetter.<locals>.has_at_least_three_characters  s+    %%c*
 --c2Q66r/   T)r   find_all_paragraphs)r*   r   r   r  s       r-   _paragraphGetterz%StructuralNavigation._paragraphGetter  s    	7 ..x?\]]r/   c                     |9| j                  |      \  }}| j                  ||       | j                  |d       y t        j                  }t        j
                  }| j                  j                  ||       y r  )r`  rk  rw  r   NO_MORE_PARAGRAPHSr  r   r   r  s          r-   _paragraphPresentationz+StructuralNavigation._paragraphPresentation#  f    ?(,(>(>s(C%V_""6?;Q'..D<<ELL''e4r/   c                 V     t         j                  g} fd}t         j                  ||fS )Nc                 (    j                  |       gS r   r  r  s    r-   r   z:StructuralNavigation._paragraphDialogData.<locals>.rowData0  r  r/   )r	   SN_HEADER_PARAGRAPHSN_TITLE_PARAGRAPHr  s   `  r-   _paragraphDialogDataz)StructuralNavigation._paragraphDialogData-  r  r/   c                     i }t         j                  }dt        j                  |g|d<   t         j                  }dt        j
                  |g|d<   t         j                  }dt        j                  |g|d<   |S )Nrr1   r3   r5   )r   RADIO_BUTTON_PREVr   r  RADIO_BUTTON_NEXTr  RADIO_BUTTON_LISTr  r  s        r-   _radioButtonBindingsz)StructuralNavigation._radioButtonBindings;  r  r/   c                 ,    t        j                  |      S r   )r   find_all_radio_buttonsr  s      r-   _radioButtonGetterz'StructuralNavigation._radioButtonGetterG      11(;;r/   c                     |<| j                  |      \  }}| j                  ||      \  }}| j                  ||       y t        j                  }t        j
                  }| j                  j                  ||       y r   )r`  rk  rw  r   NO_MORE_RADIO_BUTTONSr  r   r   r  s         r-   _radioButtonPresentationz-StructuralNavigation._radioButtonPresentationJ  m    ?%)%;%;C%@"S/#'#9#9##O C_511D<<ELL''e4r/   c                      t         j                  g}|j                  t         j                          fd}t         j                  ||fS )Nc                 H    j                  |       j                  |       gS r   r  r  s    r-   r   z<StructuralNavigation._radioButtonDialogData.<locals>.rowDataX  r  r/   )r	   SN_HEADER_RADIO_BUTTONrQ   r  SN_TITLE_RADIO_BUTTONr  s   `  r-   _radioButtonDialogDataz+StructuralNavigation._radioButtonDialogDataT  s?    "99:Y667	> ..wFFr/   c                     i }t         j                  }dt        j                  |g|d<   t         j                  }dt        j
                  |g|d<   |S )Nsr1   r3   )r   SEPARATOR_PREVr   r  SEPARATOR_NEXTr  )r*   r   r  r  s       r-   _separatorBindingsz'StructuralNavigation._separatorBindingsc  sP    ** #[%D%DhO**!=!=xHr/   c                 ,    t        j                  |      S r   )r   find_all_separatorsr  s      r-   _separatorGetterz%StructuralNavigation._separatorGetterl  s    ..x88r/   c                     |9| j                  |      \  }}| j                  ||       | j                  |d       y t        j                  }t        j
                  }| j                  j                  ||       y r  )r`  rk  rw  r   NO_MORE_SEPARATORSr  r   r   r  s          r-   _separatorPresentationz+StructuralNavigation._separatorPresentationo  r  r/   c                     i }t         j                  }dt        j                  |g|d<   t         j                  }dt        j
                  |g|d<   t         j                  }dt        j                  |g|d<   |S )Ntr1   r3   r5   )r   
TABLE_PREVr   r  
TABLE_NEXTr  
TABLE_LISTr  r  s        r-   _tableBindingsz#StructuralNavigation._tableBindings  r9  r/   c                 ,    t        j                  |      S r   )r   find_all_tablesr  s      r-   _tableGetterz!StructuralNavigation._tableGetter  s    **844r/   c                 4   |Yt        j                  |      }|r>| j                  j                  | j                  j                  j                  |             | j                  j                  t        j                  |             t        j                  |dd      }|syd|g}t        j                  t        j                  |d       t        j                  |t        j                        }|r*d|dg}t        j                  t        j                  |d       ddg| _        | j!                  |d|       | j#                  |      \  }}| j%                  ||       y t&        j(                  }t&        j*                  }| j                  j                  ||       y )Nr   z1STRUCTURAL NAVIGATION: Broken table interface forTzSTRUCTURAL NAVIGATION: Locatedzfor first cell)rs  )r   get_captionr   r   rq   r  &get_table_description_for_presentationget_cell_atr   r   r|   r   find_descendantr   is_table_cellr   rw  r`  rk  r   NO_MORE_TABLESr  )	r*   r   r   captioncellr   rg  r  r  s	            r-   _tablePresentationz'StructuralNavigation._tablePresentation  sI   ?))#.G++DLL,B,B,P,PQX,YZLL''(V(VWZ([\&&sAq1DMsS!!%"2"2FDA//[5N5NO>FVWF%%e&6&6E"#QDa#6&*&<&<T&B#T?""49**D<<ELL''e4r/   c                      t         j                  g}|j                  t         j                          fd}t         j                  ||fS )Nc                     t        j                  |       }|r&j                  j                  j	                  |      }nt        j                  |       }|t        j                  |       gS r   )r   r-  r   rq   r  r   r  r.  )r   r3  r   r*   s      r-   r   z6StructuralNavigation._tableDialogData.<locals>.rowData  sV    ))#.G||--;;GD((-'HHMNNr/   )r	   SN_HEADER_CAPTIONrQ   SN_HEADER_DESCRIPTIONSN_TITLE_TABLEr  s   `  r-   _tableDialogDataz%StructuralNavigation._tableDialogData  s@    "445Y<<=	O ''??r/   c                     i }t         j                  }dt        j                  |g|d<   t         j                  }dt        j
                  |g|d<   t         j                  }dt        j                  |g|d<   |S )Nur1   r3   r5   )r   UNVISITED_LINK_PREVr   r  UNVISITED_LINK_NEXTr  UNVISITED_LINK_LISTr  r  s        r-   _unvisitedLinkBindingsz+StructuralNavigation._unvisitedLinkBindings  sr    // #[%D%DhO//!=!=xH//!D!DhOr/   c                 ,    t        j                  |      S r   )r   find_all_unvisited_linksr  s      r-   _unvisitedLinkGetterz)StructuralNavigation._unvisitedLinkGetter  r  r/   c                     |<| j                  |      \  }}| j                  ||      \  }}| j                  ||       y t        j                  }t        j
                  }| j                  j                  ||       y r   )r`  rk  rw  r   NO_MORE_UNVISITED_LINKSr  r   r   r  s         r-   _unvisitedLinkPresentationz/StructuralNavigation._unvisitedLinkPresentation  sm    ?%)%;%;C%@"S/#'#9#9##O C_533D<<ELL''e4r/   c                      t         j                  g}|j                  t         j                          fd}t         j                  ||fS )Nc                 P    j                  |       t        j                  |       gS r   r  r   get_link_urir  s    r-   r   z>StructuralNavigation._unvisitedLinkDialogData.<locals>.rowData  "    MM#&(@(@(EFFr/   )r	   SN_HEADER_LINKrQ   SN_HEADER_URISN_TITLE_UNVISITED_LINKr  s   `  r-   _unvisitedLinkDialogDataz-StructuralNavigation._unvisitedLinkDialogData  s@    "112Y445	G 00-HHr/   c                     i }t         j                  }dt        j                  |g|d<   t         j                  }dt        j
                  |g|d<   t         j                  }dt        j                  |g|d<   |S )Nvr1   r3   r5   )r   VISITED_LINK_PREVr   r  VISITED_LINK_NEXTr  VISITED_LINK_LISTr  r  s        r-   _visitedLinkBindingsz)StructuralNavigation._visitedLinkBindings  sr    -- #[%D%DhO--!=!=xH--!D!DhOr/   c                 ,    t        j                  |      S r   )r   find_all_visited_linksr  s      r-   _visitedLinkGetterz'StructuralNavigation._visitedLinkGetter  r  r/   c                     |<| j                  |      \  }}| j                  ||      \  }}| j                  ||       y t        j                  }t        j
                  }| j                  j                  ||       y r   )r`  rk  rw  r   NO_MORE_VISITED_LINKSr  r   r   r  s         r-   _visitedLinkPresentationz-StructuralNavigation._visitedLinkPresentation  r  r/   c                      t         j                  g}|j                  t         j                          fd}t         j                  ||fS )Nc                 P    j                  |       t        j                  |       gS r   rJ  r  s    r-   r   z<StructuralNavigation._visitedLinkDialogData.<locals>.rowData  rL  r/   )r	   rM  rQ   rN  SN_TITLE_VISITED_LINKr  s   `  r-   _visitedLinkDialogDataz+StructuralNavigation._visitedLinkDialogData  s@    "112Y445	G ..wFFr/   c                     i }t         j                  }dt        j                  |g|d<   t         j                  }dt        j
                  |g|d<   t         j                  }dt        j                  |g|d<   |S )Nkr1   r3   r5   )r   	LINK_PREVr   r  	LINK_NEXTr  	LINK_LISTr  r  s        r-   _linkBindingsz"StructuralNavigation._linkBindings  r  r/   c                 ,    t        j                  |      S r   )r   find_all_linksr  s      r-   _linkGetterz StructuralNavigation._linkGetter  s    ))(33r/   c                     |<| j                  |      \  }}| j                  ||      \  }}| j                  ||       y t        j                  }t        j
                  }| j                  j                  ||       y r   )r`  rk  rw  r   NO_MORE_LINKSr  r   r   r  s         r-   _linkPresentationz&StructuralNavigation._linkPresentation  sm    ?%)%;%;C%@"S/#'#9#9##O C_5))D<<ELL''e4r/   c                      t         j                  g}|j                  t         j                         |j                  t         j                          fd}t         j
                  ||fS )Nc                 p    j                  |       j                  |       t        j                  |       gS r   )r  r  r   rK  r  s    r-   r   z5StructuralNavigation._linkDialogData.<locals>.rowData*  s3    MM#&NN3',,S13 3r/   )r	   rM  rQ   r  rN  SN_TITLE_LINKr  s   `  r-   _linkDialogDataz$StructuralNavigation._linkDialogData%  sS    "112Y667Y445	3
 &&w>>r/   c                     i }t         j                  }dt        j                  |g|d<   t         j                  }dt        j
                  |g|d<   t         j                  }dt        j                  |g|d<   |S )Nar1   r3   r5   )r   CLICKABLE_PREVr   r  CLICKABLE_NEXTr  CLICKABLE_LISTr  r  s        r-   _clickableBindingsz'StructuralNavigation._clickableBindings7  r  r/   c                 b    t        j                  dgt        j                  j                        S )Naction)
interfacesinterface_match_type)r   r  r   CollectionMatchTypeANYr  s     r-   _clickableCriteriaz'StructuralNavigation._clickableCriteriaC  s+    -- z!&!:!:!>!>@ 	@r/   c                 L    | j                   j                  j                  |      S r   )r   rq   isClickableElementr*   r   r   s      r-   _clickablePredicatez(StructuralNavigation._clickablePredicateH  s    ||%%88==r/   c                     |<| j                  |      \  }}| j                  ||      \  }}| j                  ||       y |s=t        j                  }t        j
                  }| j                  j                  ||       y y r   )r`  rk  rw  r   NO_MORE_CLICKABLESr  r   r   r  s         r-   _clickablePresentationz+StructuralNavigation._clickablePresentationK  su    ?%)%;%;C%@"S/#'#9#9##O C_5..D<<ELL''e4 r/   c                      t         j                  g}|j                  t         j                          fd}t         j                  ||fS )Nc                 H    j                  |       j                  |       gS r   r  r  s    r-   r   z:StructuralNavigation._clickableDialogData.<locals>.rowDataY  r  r/   )r	   SN_HEADER_CLICKABLErQ   r  SN_TITLE_CLICKABLEr  s   `  r-   _clickableDialogDataz)StructuralNavigation._clickableDialogDataU  s@    "667Y556	@ ++]GCCr/   c                     i }t         j                  }dt        j                  |g|d<   t         j                  }dt        j
                  |g|d<   |S )NcommarF   rH   )r   CONTAINER_STARTr   r  CONTAINER_ENDr  )r*   r   r  s      r-   _containerBindingsz'StructuralNavigation._containerBindingsd  sO    ''$k&E&EtL%%"K$@$@$Gr/   c                 B    t        j                  | j                        S r  )r   r  rQ  r  s     r-   _containerCriteriaz'StructuralNavigation._containerCriterian  s    --D4H4HIIr/   c                 $    | j                  |      S r   )rX  r  s      r-   _containerPredicatez(StructuralNavigation._containerPredicateq  s      %%r/   c                 N   |*| j                   j                  t        j                         y |j	                  d      r)| j                   j                  t        j
                         |}|| j                  |      \  }}| j                  ||      \  }}| j                  ||       y )Nr$  )	r   r   r   CONTAINER_NOT_IN_ArK   r  r`  rk  rq  )r*   r   r   kwargsrg  s        r-   _containerPresentationz+StructuralNavigation._containerPresentationt  s    ;LL''(C(CD::o&LL''(>(>?"#'#9#9##> C#55c?K_#/r/   )Fr   )FT)rC  )T)NN)r   r   r   r   
BLOCKQUOTEBUTTON	CHECK_BOXCHUNK	CLICKABLE	COMBO_BOXr   ENTRY
FORM_FIELDHEADINGIMAGEIFRAMELANDMARKLINKLIST	LIST_ITEMr   	PARAGRAPHRADIO_BUTTON	SEPARATORTABLEUNVISITED_LINKVISITED_LINKr   rR  MATHSTATICCOLUMN_HEADER
ROW_HEADER
TABLE_CELL	TABLE_ROWTEXTrS  ARTICLEDESCRIPTION_TERMDESCRIPTION_VALUEDOCUMENT_EMAILDOCUMENT_FRAMEDOCUMENT_PRESENTATIONDOCUMENT_SPREADSHEETDOCUMENT_TEXTDOCUMENT_WEBr  BLOCK_QUOTEDESCRIPTION_LISTFORMFOOTERHEADERLOGMARQUEEPANELTREE
TREE_TABLErQ  r.   r   r   r   r   r   r   r   r  r  r   r  ry   r   rh   rN  rX  r%  r]  r`  rk  rq  rw  rm  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r$  r'  r*  r2  r8  rA  rD  rJ  rP  rW  r\  ra  rr  rg  rx  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r
  r  r  r  r  r  r"  r(  r+  r5  r;  rA  rD  rG  rP  rV  rY  r\  r`  rf  ri  rl  rp  rv  r}  r  r  r  r  r  r  r  r   r/   r-   r   r     s   , #JF IE!I I!IE!JGEF HDD I"K!I#L!IE%N#L
 JJ&&JJ((JJOOJJ((JJ%%JJ,,JJ))JJ))JJ((JJOOJJ&&JJ&&JJ//JJ00JJ--JJ--JJ44JJ33JJ,,JJ++'-L* zz--zz22zzzz((zz((zz**zz~~zzzz))zz''zz))zz''zzzz,,.O,$\#)VV
B80
:@ N"$U*.`DBT6x
=>

A$6""Z"F
	6,89`
;5E
65A
:5D
^5G
:5D
\5@
]
5
E$#J7
5-2
>5	A"
D5@
8	5C

	5?

0.D
;5 

^5D
<5G95 
550@(>5I<5G
45
?$
@
>5DJ&0r/   r   ))r   __id____version____date____copyright____license__girequire_versiongi.repositoryr   rC  r   r   r   r	   r
   r   r   r   r   r   r   r   ax_collectionr   ax_event_synthesizerr   ax_hypertextr   	ax_objectr   ax_selectionr   ax_tabler   ax_textr   ax_utilitiesr   r   r   r   r/   r-   <module>r     s   * (	8 	   7E "              ' 4 %  %   %G$ G$^
u0 u0r/   