__  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ V /  | |__) | __ ___   ____ _| |_ ___  | (___ | |__   ___| | |
 | |\/| | '__|> <   |  ___/ '__| \ \ / / _` | __/ _ \  \___ \| '_ \ / _ \ | |
 | |  | | |_ / . \  | |   | |  | |\ V / (_| | ||  __/  ____) | | | |  __/ | |
 |_|  |_|_(_)_/ \_\ |_|   |_|  |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1
 if you need WebShell for Seo everyday contact me on Telegram
 Telegram Address : @jackleet
        
        
For_More_Tools: Telegram: @jackleet | Bulk Smtp support mail sender | Business Mail Collector | Mail Bouncer All Mail | Bulk Office Mail Validator | Html Letter private



Upload:

Command:

[email protected]: ~ $
�

���g���J�SrSrSrSrSrSrSSKrSSKr\R"SS	5 SS
K	J
r
 SSKJr SS
KJ
r
 SSKJr SSKJr SSKJr SSKJr SSKJr SSKJr SSKJr SSKJr SSKJr SSKJr SSKJr SSKJr SSKJr SSK J!r! SSK"J#r# SSK$J%r% "SS5r&g) z�Commonly-required utility methods needed by -- and potentially
customized by -- application and toolkit scripts. They have
been pulled out from the scripts because certain scripts had
gotten way too large as a result of including these methods.z$Id$z
$Revision$z$Date$z#Copyright (c) 2010 Joanmarie Diggs.�LGPL�N�Atspiz2.0)r�)�debug)�
focus_manager)�input_event_manager)�mathsymbols)�messages)�object_properties)�pronunciation_dict)�script_manager)�settings)�settings_manager)�AXComponent)�AXHypertext)�AXObject)�AXSelection)�AXTable)�AXText)�AXUtilities)�AXValuec���\rSrSrSrSr\Rr\R"S\5r
\R"S\5rSrSr
SrS	rS�S
jrS�SjrS
rSrSrS�SjrS�SjrSrSrSrSrSrSrSrSrSrSr Sr!Sr"Sr#Sr$S r%S!r&S�S"jr'S�S#jr(S$r)S%r*S&r+S'r,S(r-S)r.S*r/S+r0S,r1S-r2S�S.jr3S�S/jr4S�S0jr5S1r6S2r7S3r8S4r9S5r:S6r;S7r<S8r=S�S9jr>S:r?S;r@S�S<jrAS=rBS>rCS?rDS@rESArFSBrGS�SCjrHS�SDjrI\JSE5rKS�SFjrLS�SGjrMSHrNSIrOS�SJjrPSKrQSLrRS�SMjrSSNrTSOrUSPrVSQrWSRrXS�SSjrYSTrZS�SUjr[SVr\SWr]S�SXjr^SYr_SZr`S[raS\rbS�S]jrcS�S^jrdS�S_jreS�S`jrfSargSbrhScriSdrjSerkSfrlSgrmShrnSiroSjrpSkrqSlrrSmrsSnrtSoruSprvS�SqjrwSrrxS�SsjryStrzSur{Svr|Swr}Sxr~SyrSzr�S{r�S|r�S�S}jr�S�S~jr�Sr�g)��	Utilities�8uuz(\W+)z[^\w\s]c��Xl0Ulg)zuCreates an instance of the Utilities class.

Arguments:
- script: the script with which this instance is associated.
N��_script�_selectedMenuBarMenu)�self�scripts  �7/usr/lib/python3/dist-packages/orca/script_utilities.py�__init__�Utilities.__init__?s����$&��!�c��[R"U5(d/$[R"U5nUc/$[R"U5nS[U5SUS/n[R"[RUS5 U(aU$[R"USS9upVURU5n[US-[R"USS95Hmn[R"X(U5n	[R"U	5n
U
(dM9U
SnX:XaURU	5 MVURU5U::dMm O S[U5SUS	/n[R"[RUS5 U$)
z�Gets all of the children that have RELATION_NODE_CHILD_OF pointing
to this expanded table cell.

Arguments:
-obj: the Accessible Object

Returns: a list of all the child nodes
�SCRIPT UTILITIES:zchild nodes forzvia node-parent-ofTF��prefer_attributerrzvia node-child-of)r�is_expandedr�	get_table�get_is_node_parent_of�lenr�print_tokens�
LEVEL_INFO�get_cell_coordinates�	nodeLevel�range�
get_row_count�get_cell_at�get_is_node_child_of�append)r�obj�parent�nodes�tokens�row�colr0�i�cell�targets�nodeOfs            r!�
childNodes�Utilities.childNodesOsN���&�&�s�+�+��I��"�"�3�'���>��I�
�1�1�#�6��%�s�5�z�3D�c�K_�`��
���5�+�+�V�T�:���L��/�/��e�L����N�N�3�'�	��s�Q�w�� 5� 5�f�u� U�V�A��&�&�v�#�6�D�!�6�6�t�<�G����Q�Z�F��}����T�"�����'�9�4��W�&�s�5�z�3D�c�K^�_��
���5�+�+�V�T�:��r$c��g�NF��rr6s  r!�preferDescriptionOverName�#Utilities.preferDescriptionOverName����r$c�j�URU5n[[[RU55$�N)�detailsForObject�list�mapr�get_all_text)rr6�detailss   r!�detailsContentForObject�!Utilities.detailsContentForObject�s*���'�'��,���C��+�+�W�5�6�6r$c�l�[R"U5nU(d[[R"U5(a@[R"U5(a%[R
"U5Vs/sHoDPM nnU(dU$/nUH%nUR
URUS55 M' U$s snf)z4Return a list of objects containing details for obj.c�8�[R"U5(+$rJ)r�is_whitespace_or_empty��xs r!�<lambda>�,Utilities.detailsForObject.<locals>.<lambda>�s��f�&C�&C�A�&F�"Fr$)r�get_details�is_toggle_buttonr)r�
iter_children�extend�findAllDescendants)rr6�textOnlyrO�child�textObjects�details       r!rK�Utilities.detailsForObject�s����)�)�#�.���;�7�7��<�<��AX�AX�Y\�A]�A]�*2�*@�*@��*E�F�*E��u�*E�G�F���N����F����t�6�6��F� H�
I��
���Gs�,B1Nc��U(dUR5up[R"U[R5nU(aU$[
R"5R5n[R"U5(aU$g)zqReturns the document frame which is displaying the content.
Note that this is intended primarily for web content.N)�getCaretContextr�
find_ancestorr�is_documentr�get_manager�get_locus_of_focus)rr6�offset�document�focuss     r!�
documentFrame�Utilities.documentFrame�sg����.�.�0�K�C��)�)�#�{�/F�/F�G����O��)�)�+�>�>�@���"�"�5�)�)��L�r$c�D^�SS/nU=(d# [R"5R5nU(d*Sn[R"[R
US5 U$UR
U5nUc,SU/n[R"[R
US5 U$[RR[RR[RR/m[R"U5nUT;aXBS'O[U[RR[RR 4;aXBS'U4Sjn[R""X5US'SUS	USS
US/n[R"[R
US5 U$)z;Returns the frame and (possibly) the dialog containing obj.Nz>SCRIPT UTILITIES: frameAndDialog() called without valid objectTz5SCRIPT UTILITIES: could not find top-level object forrrc�6>�[R"U5T;$rJ)r�get_role)rV�dialog_roless �r!�isDialog�*Utilities.frameAndDialog.<locals>.isDialog�s����(�(��+�|�;�;r$r&zis in framez
and dialog)rrgrhr�
print_messager.�topLevelObjectr-r�Role�DIALOG�FILE_CHOOSER�ALERTrrp�FRAME�WINDOW�find_ancestor_inclusive)	rr6�results�msg�topLevelr9�rolerrrqs	        @r!�frameAndDialog�Utilities.frameAndDialog�sR�����,���E�]�.�.�0�C�C�E���R�C����� 0� 0�#�t�<��N��&�&�s�+����M�s�S�F����u�/�/���>��N��
�
�)�)�5�:�:�+B�+B�E�J�J�DT�DT�U��� � ��*���<��!�A�J���
�
�(�(�%�*�*�*;�*;�<�<�%��
�
<�"�9�9�#�H�G�A�J�%�s�M�7�1�:�|�U\�]^�U_�`��
���5�+�+�V�T�:��r$c�.�[R"U5$rJ)r�is_focusablerEs  r!�grabFocusWhenSettingCaret�#Utilities.grabFocusWhenSettingCaret�s���'�'��,�,r$c��[R"U5=(a& U[R"5R	5:g$)aAWhether or not we should perform a grabFocus before routing
the cursor via the braille cursor routing keys.

Arguments:
- obj: the accessible object where the cursor should be routed
- offset: the offset to which it should be routed

Returns True if we should do an explicit grabFocus on obj prior
to routing the cursor.
)r�is_combo_boxrrgrh�rr6ris   r!�grabFocusBeforeRouting� Utilities.grabFocusBeforeRouting�s8���'�'��,�H��}�0�0�2�E�E�G�G�	Hr$c���Uc#[R"5R5n[R"U5(dg[
R"U[R5SL$rC)rrgrhr�is_entryrre�is_tool_barrEs  r!�inFindContainer�Utilities.inFindContainer�sP���;��+�+�-�@�@�B�C��#�#�C�(�(���%�%�c�;�+B�+B�C�4�O�Or$c��g)N�rD�r�roots  r!�getFindResultsCount�Utilities.getFindResultsCount�s��r$c��grCrDrEs  r!�isAnchor�Utilities.isAnchor�rHr$c��grCrDrEs  r!�isCodeDescendant�Utilities.isCodeDescendant�rHr$c��grCrDrEs  r!�isComboBoxWithToggleDescendant�(Utilities.isComboBoxWithToggleDescendant�rHr$c��grCrDrEs  r!�isToggleDescendantOfComboBox�&Utilities.isToggleDescendantOfComboBox�rHr$c��grCrDrEs  r!�isContentError�Utilities.isContentError�rHr$c��grCrDrEs  r!�$isFirstItemInInlineContentSuggestion�.Utilities.isFirstItemInInlineContentSuggestion�rHr$c��grCrDrEs  r!�#isLastItemInInlineContentSuggestion�-Utilities.isLastItemInInlineContentSuggestion�rHr$c��grCrDrEs  r!�is_empty�Utilities.is_emptyrHr$c�T�[R"US5nURSS5$)NF�hidden)r�get_attributes_dict�get)rr6�attrss   r!�isHidden�Utilities.isHiddens%���,�,�S�%�8���y�y��5�)�)r$c�j�[R"U5(dg[R"U5SL$rC)r�is_progress_barr�get_value_as_percentrEs  r!�
isProgressBar�Utilities.isProgressBars,���*�*�3�/�/���+�+�C�0��<�<r$c�l�URU5[R"5R5:H$rJ)rurrg�get_active_windowrEs  r!�topLevelObjectIsActiveWindow�&Utilities.topLevelObjectIsActiveWindows*���"�"�3�'�=�+D�+D�+F�+X�+X�+Z�Z�Zr$c�|�[R"5RS5(dS[R"5RS5(d*[R"5RS5(dgURU5(dg[R
"U5(ag[R"5RS5(a+[R"U[R5(ag[R"5RS	5nU[R:Xag
U[R:XaURU5(aggU[R:Xa@[R"U5n[ R"5R#5nX4:Xag
gg)N�speakProgressBarUpdates�brailleProgressBarUpdates�beepProgressBarUpdates)FzUpdates not enabled)FzIs not progress bar)FzHas no size�ignoreStatusBarProgressBars)FzIs status bar descendant�progressBarVerbosity)TzVerbosity is all)TzVerbosity is window)Fz%Top-level object is not active window)TzVerbosity is app)FzApp is not active app)TzNot handled by any other case)rrg�get_settingr�r�has_no_sizerrer�
is_status_barr�PROGRESS_BAR_ALL�PROGRESS_BAR_WINDOWr��PROGRESS_BAR_APPLICATION�get_applicationr
�get_active_script_app)rr6�	verbosity�app�	activeApps     r!�isProgressBarUpdate�Utilities.isProgressBarUpdatesI���+�+�-�9�9�:S�T�T�#�/�/�1�=�=�>Y�Z�Z�#�/�/�1�=�=�>V�W�W�/��!�!�#�&�&�/��"�"�3�'�'�'��'�'�)�5�5�6S�T�T��%�%�c�;�+D�+D�E�E�8�$�0�0�2�>�>�?U�V�	���1�1�1�+���4�4�4��0�0��5�5�2�A���9�9�9��-�-�c�2�C�&�2�2�4�J�J�L�I���/�1�4r$c��[R"U5(d/$[Rn[RnURXU5$rJ)r�is_description_list�is_description_termr])rr6�_include�_excludes    r!�descriptionListTerms�Utilities.descriptionListTerms1sA���.�.�s�3�3��I��2�2���2�2���&�&�s�h�?�?r$c���[R"U5[RR[RR
4;ag[R"U[R5SL$rC)	rrprrv�LIST�DESCRIPTION_LISTrerrfrEs  r!�isDocumentList�Utilities.isDocumentList9sM�����S�!�%�*�*�/�/�5�:�:�;V�;V�)W�W���%�%�c�;�+B�+B�C�4�O�Or$c��[R"U5(dg[R"U[R5SL$rC)r�is_panelrrerfrEs  r!�isDocumentPanel�Utilities.isDocumentPanel>s4���#�#�C�(�(���%�%�c�;�+B�+B�C�4�O�Or$c�.�[R"U5$rJ)rrfrEs  r!�
isDocument�Utilities.isDocumentCs���&�&�s�+�+r$c��U=(d# [R"5R5nURU5SL$rJ)rrgrh�getDocumentForObjectrEs  r!�inDocumentContent�Utilities.inDocumentContentFs4���E�]�.�.�0�C�C�E���(�(��-�T�9�9r$c�f�UR[R"5R55$rJ)�getTopLevelDocumentForObjectrrgrh)r�windows  r!�activeDocument�Utilities.activeDocumentJs%���0�0��1J�1J�1L�1_�1_�1a�b�br$c�|�URU5=(a% [R"XR5(+$rJ)r�rrerEs  r!�isTopLevelDocument�Utilities.isTopLevelDocumentMs(�����s�#�X�H�,B�,B�3���,X�(X�Xr$c�B�[R"XR5$rJ)rr|r�rEs  r!r��&Utilities.getTopLevelDocumentForObjectPs���/�/��5L�5L�M�Mr$c�B�[R"XR5$rJ)rr|r�rEs  r!r��Utilities.getDocumentForObjectSs���/�/��_�_�E�Er$c��U$rJrD)r�columns  r!�
columnConvert�Utilities.columnConvertVs���
r$c��[R"U5(dgURU5nUSL=(a [R"U5(+$rC)r�is_tabler��is_document_spreadsheet�rr6�docs   r!�isTextDocumentTable�Utilities.isTextDocumentTableYsC���#�#�C�(�(���'�'��,���$��O�{�'J�'J�3�'O�#O�Or$c�b�[R"U5=(a URU5SL$rJ)rr�r�rEs  r!�
isGUITable�Utilities.isGUITable`s(���#�#�C�(�S�T�-F�-F�s�-K�t�-S�Sr$c��[R"U5(a[R"U5(dgUR	U5nUcg[R
"U5(ag[R"U5S:�$)NFTi)rr�r�supports_tabler�r�rr2r�s   r!�isSpreadSheetTable�Utilities.isSpreadSheetTablecsh���$�$�S�)�)�h�.E�.E�c�.J�.J���'�'��,���;���.�.�s�3�3���$�$�S�)�E�1�1r$c�z�[R"U5(dg[R"XR5$rC)r�is_table_cell_or_headerrrer�rEs  r!�isTextDocumentCell�Utilities.isTextDocumentCellos-���2�2�3�7�7���%�%�c�+C�+C�D�Dr$c�z�[R"U5(dg[R"XR5$rC)rrrrerrEs  r!�	isGUICell�Utilities.isGUICellts+���2�2�3�7�7���%�%�c�?�?�;�;r$c�z�[R"U5(dg[R"XR5$rC)rrrrerrEs  r!�isSpreadSheetCell�Utilities.isSpreadSheetCellys-���2�2�3�7�7���%�%�c�+B�+B�C�Cr$c���[R"U5SnUS:XagUc)URRR	S5nX4:g$[R"U5SnX4:g$)Nr���F�
lastColumn�rr/r�point_of_referencer�)rr=�prevCellr�rs     r!�cellColumnChanged�Utilities.cellColumnChanged~sl���-�-�d�3�A�6���R�<�������8�8�<�<�\�J�J��#�#�!�5�5�h�?��B�J��#�#r$c���[R"U5SnUS:XagUc)URRR	S5nX4:g$[R"U5SnX4:g$)NrrF�lastRowr)rr=rr:rs     r!�cellRowChanged�Utilities.cellRowChanged�sj���*�*�4�0��3���"�9�����l�l�5�5�9�9�)�D�G��~���2�2�8�<�Q�?�G��~�r$c�0�URR5(agURR5R5(agUR	X5(dg[
R"U5nUcgURU5(d$[R"5RS5$URU5(a$[R"5RS5$[R"5RS5$)NF�readFullRowInGUITable�readFullRowInSpreadSheet�readFullRowInDocumentTable)r�inSayAll�get_table_navigator�'last_input_event_was_navigation_commandrrr*r�rrgr�r)rr6�prevObj�tables    r!�shouldReadFullRow�Utilities.shouldReadFullRow�s����<�<� � �"�"���<�<�+�+�-�U�U�W�W���"�"�3�0�0���!�!�#�&���=���(�(��/�/�#�/�/�1�=�=�>U�V�V��"�"�5�)�)�#�/�/�1�=�=�>X�Y�Y��+�+�-�9�9�:V�W�Wr$c
��[R"U5(dg/n[R"U5nU(aUR	U5 URU5nU(aXB;aUR	U5 OJSR
[SURUSS555nU(aXR;aUR	U5 [R"U5nU(aXb;aUR	U5 SR
U5$)Nr�� c�h�[R"U5=(d [R"U5$rJ)rrNr�get_namerUs r!rW�2Utilities.getNotificationContent.<locals>.<lambda>�s#��F�,?�,?��,B�,Z�h�FW�FW�XY�FZ�,Zr$Fr)
r�is_notificationrr+r5�
expandEOCs�joinrM�unrelatedLabels�get_description)rr6r9�name�text�labels�descriptions       r!�getNotificationContent� Utilities.getNotificationContent�s����*�*�3�/�/����� � ��%����M�M�$�����s�#���D�&��M�M�$���X�X�c�"Z�"&�"6�"6�s�E�1�"E�G�H�F��&�.��
�
�f�%��.�.�s�3���;�4��M�M�+�&��x�x���r$c��Ucg[R"U5(ag[R"U[R5SL$�NFT)r�is_tree_itemrre�is_tree_or_tree_tablerEs  r!�isTreeDescendant�Utilities.isTreeDescendant�s=���;���#�#�C�(�(���%�%�c�;�+L�+L�M�UY�Y�Yr$c�.�[R"U5$)zReturns True if obj is a link.)r�is_linkrEs  r!�isLink�Utilities.isLink�s���"�"�3�'�'r$c��URRnSnUHnUS:XaMX$nM UnU$![a  U$f=f�Nr)rr��	Exception)r�path�start�rv�ps     r!�getObjectFromPath�Utilities.getObjectFromPath�s]����� � ��
���A��B�w��
����	��B��	���
���	�
�s�3�
A�Ac��[R"U5n[R"U5n[U5[U5:wagU(aU(dgUSSnUSSnUSS:XaUSS:Xa
USSnUSSnURS5(aURS5(agUR	S5nUSUUSU:H$![
a1 UR	S5nN)![
a [U5nNAf=ff=f)NFrrr)r�get_pathr,�count�index�
ValueError)r�obj1�obj2�path1�path2rNs      r!�_hasSamePath�Utilities._hasSamePath�s���!�!�$�'���!�!�$�'���u�:��U��#���%���a�b�	���a�b�	��
��9��?�u�R�y�B���#�2�J�E��#�2�J�E��;�;�r�?�?�u�{�{�2����	#��K�K��O�E��Q�u�~��q���/�/��
�	#�
#����B�����
#��E�
��
#��	#�s*�)C�
D�C#�#C<�8D�;C<�<Dc���URU5(ag[R"U5=(d3 [R"U5=(d [R"U5$)zcReturns True if obj is a GUI component that is for entering text.

Arguments:
- obj: an accessible
F)r@r�
is_text_input�is_text�is_paragraphrEs  r!�
isTextArea�Utilities.isTextAreasQ���;�;�s�����(�(��-�-��"�"�3�'�-��'�'��,�	-r$c��^�TcgU4Sjn/n[R"TU5nU(a0URU5 [R"XB5nU(aM0[U5$)zUDetermines the nesting level of this object.

Arguments:
-obj: the Accessible object
rc�>�[R"T5(a[R"U5$[R"T5(a*[R"[R
"U55$[R"TU5$rJ)r�is_block_quote�is_list_item�is_listr�
get_parent�have_same_role)rVr6s �r!�pred�$Utilities.nestingLevel.<locals>.predse����)�)�#�.�.�"�1�1�!�4�4��'�'��,�,�"�*�*�8�+>�+>�q�+A�B�B��-�-�c�1�5�5r$)rrer5r,)rr6rc�	ancestors�ancestors `   r!�nestingLevel�Utilities.nestingLevels_����;��	6��	��)�)�#�t�4������X�&��-�-�h�=�H��h��9�~�r$c�j�URU5(dg[R"U5nSU;a[UR	SS55S-
$/nUnSnU(d�[
R"U5nSnU(aUSnURU5(a.SUSU/n[R"[RUS	5 S	n[U5S
:�a-SU/n[R"[RUS	5 S	nOU(aURU5 OS	nU(dM�[U5S-
$)z�Determines the node level of this object if it is in a tree
relation, with 0 being the top level node.  If this object is
not in a tree relation, then -1 will be returned.

Arguments:
-obj: the Accessible object
r�levelrrFNr&z#is already in the list of nodes forT�dz/SCRIPT UTILITIES: More than 100 nodes found for)
r<rr��intr�rr4rMrr-r.r,r5)rr6r�r8�node�doner>r9s        r!r0�Utilities.nodeLevel)s���$�$�S�)�)���,�,�S�1���e���u�y�y��!�,�-��1�1��������!�6�6�t�<�G��D���q�z��
�{�{�4� � �-�t�5Z�\_�`���"�"�5�#3�#3�V�T�B����5�z�C��K�S�Q���"�"�5�#3�#3�V�T�B�������T�"���)�$�,�5�z�A�~�r$c��[R"U5(agURU5(ag[R"U5(a[R
"U5(d�SUS/n[R"[RUS5 [R"U5(az[R"USS5 [R"U5(aG[R
"U5(a,SUS/n[R"[RUS5 gg[R"U5(a,SUS	/n[R"[RUS5 g[R"U5(agUcg[R"X5(d-SUS
U/n[R"[RUS5 gg)NFr&zis not showing and visibleTz(Suspecting filler might have wrong statezWARNING: Nowzis showing and visiblezSCRIPT UTILITIES: Rect ofz"is unhelpful. Treating as onscreenznot in)r�is_deadr�r�
is_showing�
is_visiblerr-r.�	is_filler�clear_cacher�has_no_size_or_invalid_rect�object_is_off_screen�object_intersects_rect)rr6�boundingboxr9s    r!�
isOnScreen�Utilities.isOnScreenUsq�����C� � ���=�=������&�&�s�+�+��0F�0F�s�0K�0K�)�3�0L�M�F����u�/�/���>��$�$�S�)�)��$�$�S�%�1[�\��)�)�#�.�.�;�3I�3I�#�3N�3N�,�c�3K�L�F��&�&�u�'7�'7���F����2�2�3�7�7�1�3�8\�]�F����u�/�/���>���+�+�C�0�0������1�1�#�C�C�)�3��+�F�F����u�/�/���>��r$c��[R"U5(dg[R"U5(aUR	U5nU(aUS$g[R
"U5HUn[R"USS5 [R"U5(d[R"U5(dMSUs $ g)NrF�#Ensuring we have the correct state.)	r�is_menu_barr�supports_selection�selectedChildrenr[rur)�is_selected)r�menubar�selected�menus    r!�selectedMenuBarMenu�Utilities.selectedMenuBarMenu{s����&�&�w�/�/���&�&�w�/�/��,�,�W�5�H����{�"���*�*�7�3�D�� � ��u�.S�T��&�&�t�,�,��0G�0G��0M�0M���	4�r$c�^�Ucg[R"U[R5nUcgURR[
U55mTcURU5mTcgU4Sjn[R"X5SL$)NFc�>�UT:H$rJrD)rV�selectedMenus �r!�inSelectedMenu�5Utilities.isInOpenMenuBarMenu.<locals>.inSelectedMenu�s�����$�$r$)	rrerr~rr��hashr�r|)rr6r�r�r�s    @r!�isInOpenMenuBarMenu�Utilities.isInOpenMenuBarMenu�s�����;���(�(��k�.E�.E�F���?���0�0�4�4�T�'�]�C�����3�3�G�<�L����	%��/�/��D�D�P�Pr$c	�f	�URX5(d/$[R"U5[RR
:Xa/$[R"U5(d[R"U5(aU/$[R"U5(a'URU5UR[U5'[R"[R"U55(aURU5(dU/$[R"U5(a�[R "U5(d�[R""USS5 [R "U5nSUSUS3/n[$R&"[$R(US5 U(d*SU/n[$R&"[$R(US5 Uc[*R,"U5n[R."U5(a:[R0"U5(a[3[4R6"U55$/n[R8"U5=(d [R:"U5nU(aH[R<"U5(d[R>"U5(aURAU5 O,[BRD"U5(aURAU5 [RF"U5H#nURIURKXr55 M% [R"U5(aSUR[U5'U(aU$[RL"U5(a$U(d[BRN"U5(a/$[RRP[RRR[RRT[RRV[RRX[RRZ[RR\[RR^[RR`/	n[R"U5U;a	U(d/$U/$)NTzRoot is empty filler.r&znow reports z	 childrenz"WARNING: unexpectedly empty filler)1rzrrprrv�INVALIDr�	is_buttonr�r~r�rr�rar�rt�get_child_countrurr-r.r�get_rectrrrLr�iter_visible_cellsr+r1�is_page_tab�is_imager5r�has_presentable_textr[r\�getOnScreenObjects�is_labelrT�CANVAS�FILLER�IMAGE�LINK�LIST_BOX�PANEL�SECTION�SCROLL_PANE�VIEWPORT)	rr��extentsrMr9�objects�
hasNameOrDescr_�
containerss	         r!r��Utilities.getOnScreenObjects�s9�����t�-�-��I����T�"�e�j�j�&8�&8�8��I�� � ��&�&�+�*B�*B�4�*H�*H��6�M��"�"�4�(�(�48�4L�4L�T�4R�D�%�%�d�4�j�1��"�"�8�#6�#6�t�#<�=�=��+�+�D�1�1��6�M�� � ��&�&�x�/G�/G��/M�/M�� � ��t�-D�E��,�,�T�2�E�)�4�<��w�i�1P�Q�F����u�/�/���>��>��E���"�"�5�#3�#3�V�T�B��?�!�*�*�4�0�G��"�"�4�(�(�X�-H�-H��-N�-N���2�2�4�8�9�9��� �)�)�$�/�Q�8�3K�3K�D�3Q�
��k�5�5�d�;�;�{�?S�?S�TX�?Y�?Y��N�N�4� �
�
(�
(��
.�
.��N�N�4� ��+�+�D�1�E��N�N�4�2�2�5�B�C�2��"�"�4�(�(�48�D�%�%�d�4�j�1���N�����%�%�m��@]�@]�^b�@c�@c��I��j�j�'�'��j�j�'�'��j�j�&�&��j�j�o�o��j�j�)�)��j�j�&�&��j�j�(�(��j�j�,�,��j�j�)�)�+�
����T�"�j�0���I��v�
r$c���[R"U5(aU$Sn[R"X5nUb1[R"[R
"U55(dUnU$)Nc�h�[R"U5=(d [R"U5$rJ)rrr_rUs r!rc�*Utilities.realActiveAncestor.<locals>.pred�s$���6�6�q�9�X�[�=U�=U�VW�=X�Xr$)r�
is_focusedrre�is_layout_onlyra)rr6rcrfs    r!�realActiveAncestor�Utilities.realActiveAncestor�s\���!�!�#�&�&��J�	Y��)�)�#�4�����-�-�h�.A�.A�(�.K�L�L��C��
r$c���[R"U5(ag[R"U5(dU$[R"U5(aU$Sn[R
"X5nUbU$U$)aGiven an object that should be a child of an object that
manages its descendants, return the child that is the real
active descendant carrying useful information.

Arguments:
- obj: an object that should be a child of an object that
manages its descendants.
Nc�h�[R"U5=(d [R"U5$rJ)rr+rrNrUs r!rc�,Utilities.realActiveDescendant.<locals>.preds#���$�$�Q�'�A�6�+>�+>�q�+A�Ar$)rrqr�
is_table_cellr+�find_descendant)rr6rcr_s    r!�realActiveDescendant�Utilities.realActiveDescendant�sl�����C� � ���(�(��-�-��J����S�!�!��J�	B��(�(��3�����L��
r$c��grJrDr�s  r!�infoBar�Utilities.infoBars��r$c��[RR[RR[RR[RR
[RR/nU$rJ)rrvrwrxrzr{ry)r�roless  r!�_topLevelRoles�Utilities._topLevelRolessQ�����"�"����(�(����!�!����"�"����!�!�	#��
�r$c�^�[R"T5nUcg[[R"U55H�n[R
"X#5n[R"UU4Sj5b0SUST/n[R"[RUS5 Us $SUST/n[R"[RUS5 M� g)z�Searches each frame/window/dialog of an application to find the one
which contains child. This is extremely non-performant and should only
be used to work around broken accessibility trees where topLevelObject
fails.Nc�>�UT:H$rJrD)rVr_s �r!rW�5Utilities._findWindowWithDescendant.<locals>.<lambda>#s	���!�u�*r$r&�containsTzdoes not contain)
rr�r1rr��	get_childr�rr-r.)rr_r�r<r�r9s `    r!�_findWindowWithDescendant�#Utilities._findWindowWithDescendants�����)�)�%�0���;���x�/�/��4�5�A��'�'��/�F��'�'��0D�E�Q�-�v�z�5�I���"�"�5�#3�#3�V�T�B��
�)�6�3E�u�M�F����u�/�/���>�6�r$c���[R"U5UR5;=(aE [R"[R"U55[R
R:H$rJ)rrpr�rarrv�APPLICATIONrEs  r!�_isTopLevelObject�Utilities._isTopLevelObject-sR��� � ��%��)<�)<�)>�>�V��!�!�(�"5�"5�c�":�;�u�z�z�?U�?U�U�	Vr$c�$�[R"XR5nSUSU/n[R"[R
US5 Uc@U(a9Sn[R"[R
US5 URU5nU$)z�Returns the top-level object (frame, dialog ...) containing obj,
or None if obj is not inside a top-level object.

Arguments:
- obj: the Accessible object
r&zis top-level object for:TzISCRIPT UTILITIES: Attempting to find top-level object via fallback search)rr|r�rr-r.rtr�)rr6�useFallbackSearchrGr9r~s      r!ru�Utilities.topLevelObject1s{���
-�
-�c�3I�3I�
J��%�r�+E�s�K��
���5�+�+�V�T�:�
�:�+�]�C����� 0� 0�#�t�<��/�/��4�B��	r$c�v�U=(d# [R"5R5nURU5nU(dg[R
"USS5 [R"U5(a[R"U5(agU[R"5R5:H$)NFr})
rrgrhrurrur�	is_active�
is_defunctr�)rr6rs   r!� topLevelObjectIsActiveAndCurrent�*Utilities.topLevelObjectIsActiveAndCurrentDs����E�]�.�.�0�C�C�E���&�&�s�+�������X�u�.S�T��$�$�X�.�.�+�2H�2H��2R�2R���=�4�4�6�H�H�J�J�Jr$c��X:Xag[[U5[U55nUS/U--SUnUS/U--SUn[[[U5[U555HnXX:a gXX:�dM g g)zhCompares the two paths and returns -1, 0, or 1 to indicate if path1
is before, the same, or after path2.rrNr)�maxr,r1�min)rRrS�sizerVs    r!�pathComparison�Utilities.pathComparisonPs���
�>���3�u�:�s�5�z�*���"����$�e�t�,���"����$�e�t�,���s�3�u�:�s�5�z�2�3�A��x�%�(�"���x�%�(�"��	4�r$c�0�[R"XU5$rJ)r�find_all_descendants)rr��	includeIf�	excludeIfs    r!r]�Utilities.findAllDescendantsds���,�,�T�i�H�Hr$c�f^^^�URR(a,URRRU5(a/$[RR
[RR/m[RR[RR[RR[RR[RR[RR[RR[RR[RR[RR [RR"[RR$[RR&[RR([RR*[RR,[RR.[RR0[RR2[RR4[RR6/m[8R:"U5T;a/$UU4SjnUU4SjnUR=XU5n[8R>"U5n/nUH�n	[8R>"U	5=(d [@RB"U	5n
U
(a1X�[8R>"[8RD"U	554;aMn[GU
RI55U:aM�URKU
5S:�aM�URMU	5 M� [NRP"U5$)a�Returns a list containing all the unrelated (i.e., have no
relations to anything and are not a fundamental element of a
more atomic component like a combo box) labels under the given
root.  Note that the labels must also be showing on the display.

Arguments:
- root: the Accessible object to traverse
- onlyShowing: if True, only return labels with STATE_SHOWING

Returns a list of unrelated labels under the given root.
c��>�U(a[R"U5T;dg[R"U5(dgT(a[R"U5(dggr9)rrpr�object_is_unrelatedrr)rV�
labelRoles�onlyShowings ��r!r��+Utilities.unrelatedLabels.<locals>._include�sH����(�+�+�A�.�*�<���2�2�1�5�5���;�#9�#9�!�#<�#<��r$c�>�U(a[R"U5T;agT(a[R"U5(dgg�NTF)rrprrr)rVr��	skipRoless ��r!r��+Utilities.unrelatedLabels.<locals>._exclude�s4�����)�)�!�,�	�9���;�#9�#9�!�#<�#<��r$r))r�
spellcheck�is_spell_check_windowrrv�LABEL�STATIC�	COMBO_BOX�DOCUMENT_EMAIL�DOCUMENT_FRAME�DOCUMENT_PRESENTATION�DOCUMENT_SPREADSHEET�
DOCUMENT_TEXT�DOCUMENT_WEBrzr�r��	LIST_ITEM�MENU�MENU_BAR�PUSH_BUTTONr��
SPLIT_PANE�TABLE�
TOGGLE_BUTTON�TREE�
TREE_TABLEr{rrpr]r+rrNrar,�split�findr5r�sort_objects_by_position)
rr�r��minimumWordsr�r�r4�rootName�labels_filtered�labelr2r�r�s
  `        @@r!r0�Utilities.unrelatedLabelsgsM����<�<�"�"�t�|�|�'>�'>�'T�'T�UY�'Z�'Z��I��j�j�&�&��
�
�(9�(9�:�
��Z�Z�)�)��Z�Z�.�.��Z�Z�.�.��Z�Z�5�5��Z�Z�4�4��Z�Z�-�-��Z�Z�,�,��Z�Z�%�%��Z�Z�(�(��Z�Z�_�_��Z�Z�)�)��Z�Z�_�_��Z�Z�(�(��Z�Z�+�+��Z�Z�+�+��Z�Z�*�*��Z�Z�%�%��Z�Z�-�-��Z�Z�_�_��Z�Z�*�*��Z�Z�&�&�)(�	�,���T�"�i�/��I�	�	��(�(���B���$�$�T�*�����E��$�$�U�+�I�v�/B�/B�5�/I�D���8�+<�+<�X�=P�=P�QV�=W�+X� Y�Y���4�:�:�<� �<�/���}�}�T�"�a�'���"�"�5�)���3�3�O�D�Dr$c��[R"U5(dg[R"U5nU(aUS$[R"U5$)z!Finds the object before this one.Nr)r�is_validr�get_flows_from�get_previous_object�rr6r>s   r!�findPreviousObject�Utilities.findPreviousObject�sF��� � ��%�%���,�,�S�1����1�:���+�+�C�0�0r$c��[R"U5(dg[R"U5nU(aUS$[R"U5$)z Finds the object after this one.Nr)rrr�get_flows_to�get_next_objectrs   r!�findNextObject�Utilities.findNextObject�sF��� � ��%�%���*�*�3�/����1�:���'�'��,�,r$c��Uc-SU/n[R"[RUSS5 SnUc-SU/n[R"[RUSS5 Sn[R"XU5nUR
U;aU$[RR[RR[RR[RR[RR[RR[RR[RR/n[!U5n[#U5Hjup�X�R
:XdM[$R&"XU-5n
UR)U
5nU
(a[*R,"U
5U;aUS-
nX�U'Ml SR/U5nSUS	US
US
3SUS3/n[R"[RUS5 UR
U;a)Sn[R0"[RUS5 gU$)
a:Expands the current object replacing EMBEDDED_OBJECT_CHARACTERS
with their text.

Arguments
- obj: the object whose text should be expanded
- startOffset: the offset of the first character to be included
- endOffset: the offset of the last character to be included

Returns the fully expanded text for the object.
z@SCRIPT UTILITIES: expandEOCs called with start offset of None onTrz>SCRIPT UTILITIES: expandEOCs called with end offset of None onrr)r�z#SCRIPT UTILITIES: Expanded EOCs forzrange: �:�'z'SCRIPT UTILITIES: Unable to expand EOCs)rr-r.r�
get_substring�EMBEDDED_OBJECT_CHARACTERrrv�HEADINGr�r��	PARAGRAPHr�r��
TABLE_CELL�	TABLE_ROWrL�	enumerater�get_child_at_offsetr.rrpr/rt)
rr6�startOffset�	endOffsetr9�string�
blockRoles�toBuildr<�charr_�resultr~s
             r!r.�Utilities.expandEOCs�s�����X�Z]�^�F����u�/�/���t�D��K���V�X[�\�F����u�/�/���t�D��I��%�%�c�	�B���)�)��7��M��j�j�(�(��j�j�o�o��j�j�*�*��j�j�*�*��j�j�(�(��j�j�&�&��j�j�+�+��j�j�*�*�,�
��v�,�� ��)�G�A��5�5�5�#�7�7���_�M������/���X�.�.�u�5��C��c�M�F�#��
�
*�����!��7����}�TU�V_�U`�`a�>b��V�H�A�� ��
���5�+�+�V�T�:��)�)�V�3�;�C����� 0� 0�#�t�<���
r$c��[R"U5(dgURUSS5up#nURS5nUS:XagUS;agU$)NFrT�invalid�false)�spelling�grammar)r�is_invalid_entry�textAttributesr�)rr6r��_start�_end�errors      r!�getError�Utilities.getErrorsY���+�+�C�0�0��"�1�1�#�q�$�?���t��	�	�)�$���G����/�/���r$c�v�URU5(dg[R"U5nU(aUS$g)Nr)r*r�get_error_messagers   r!�_getErrorMessageContainer�#Utilities._getErrorMessageContainers4���}�}�S�!�!���/�/��4����1�:��r$c��U(dgURU5(dgUHup4pVURU5U:XdM g g)z9Returns True of obj is an error message for the contents.FT)�isErrorMessager.)rr6�contents�accr'r(�_strings       r!�isErrorForContents�Utilities.isErrorForContentssH�����"�"�3�'�'��*2�&�C���-�-�c�2�c�9��+3�r$c�B�URURU55$rJ)r.r.rEs  r!�getErrorMessage�Utilities.getErrorMessage)s�����t�=�=�c�B�C�Cr$c�@�[[R"U55$rJ)�boolr�get_is_error_forrEs  r!r1�Utilities.isErrorMessage,s���K�0�0��5�6�6r$c��UR$rJ)�any_data�r�events  r!�deletedText�Utilities.deletedText/s���~�~�r$c���UR(aUR$Sn[R"[RUS5 [R
"UR5(aW[R"UR5nU(a0SUS/n[R"[RUS5 US$Sn[R"[RUS5 g)Nz-SCRIPT UTILITIES: Broken text insertion eventTzHACK: Returning last char in 'rrz3FAIL: Unable to correct broken text insertion eventr�)
r?rrtr.r�is_password_text�sourcerrNr-)rrAr~rr9s     r!�insertedText�Utilities.insertedText2s����>�>��>�>�!�=��
���E�,�,�c�4�8��'�'����5�5��(�(����6�F��:�F�C�H���"�"�5�#3�#3�V�T�B��b�z�!�C��
���E�,�,�c�4�8�r$c�z�[R"5R5n[R"U5nX4$rJ)rrgrhr�get_caret_offsetr�s   r!rd�Utilities.getCaretContextDs1���'�'�)�<�<�>���(�(��-���{�r$c�r�[R"5RSUS5 URX5 grC)rrg�set_locus_of_focus�setCaretOffset)rr6rirls    r!�setCaretPosition�Utilities.setCaretPositionIs+���!�!�#�6�6�t�S�%�H����C�(r$c�0�[R"X5 grJ)r�set_caret_offsetr�s   r!rN�Utilities.setCaretOffsetMs������,r$c�.�[R"X5$rJ)r�get_text_attributes_at_offset)rr3ri�get_defaultss    r!r&�Utilities.textAttributesQs���3�3�C�@�@r$c���/nURXU5nUHVupgp�X':�aM
X6::a U$[X&5n[X75n[R"XU5n
URXgX�U	/5 MX U$)zAReturns a list of (start, end, string, language, dialect) tuples.)�'getLanguageAndDialectFromTextAttributesr�r�rrr5)rr6rF�endrG�
allSubstringsrr�language�dialectrs           r!�splitSubstringByLanguage�"Utilities.splitSubstringByLanguageUs������D�D�S�QT�U�
�9F�5�K�H��!���!���	��e�1�K��C�+�I��)�)�#�I�F�F��I�I�{�v��I�J�:G��	r$c�b�URXU5nUHupVpxXR::dM
Xc:�dMXx4s $ g)z�Returns a (language, dialect) tuple. If multiple languages apply to
the substring, language and dialect will be empty strings. Callers must
do any preprocessing to avoid that condition.)r�r�)rY)	rr6rFrZr[rrr\r]s	         r!�!getLanguageAndDialectForSubstring�+Utilities.getLanguageAndDialectForSubstringfs@��
�D�D�S�QT�U�
�9F�5�K�H��#�	�(8��(�(�:G�r$c��/n[R"XU5nS=pgUHiup�n
U
RSS5nSnSU;aURSS5up�U(aXk:XaX|:XaUSSX�U4US'OUR	X�X�45 X�pvMk U$)znReturns a list of (start, end, language, dialect) tuples for obj
based on what is exposed via text attributes.r�r\�-rrr)r�get_all_text_attributesr�r�r5)
rr6rrrG�attributeSet�lastLanguage�lastDialectrFrZr�r\r]s
             r!rY�1Utilities.getLanguageAndDialectFromTextAttributesrs������5�5�c�	�R��%'�'��#/��U���y�y��R�0�H��G��h��$,�N�N�3��$:�!���l�.�;�3I��B����C�7�:��2���	�	�5�x�9�:�(0�+�$0��	r$c��[R"U5(dURU5(dg[R"5RS5nU[R[R4;agg)NF�verbalizePunctuationStyleT)	r�is_coder�rrgr�r�PUNCTUATION_STYLE_ALL�PUNCTUATION_STYLE_NONE)rr6�styles   r!�shouldVerbalizeAllPunctuation�'Utilities.shouldVerbalizeAllPunctuation�sa���#�#�C�(�(�D�,A�,A�#�,F�,F��
!�,�,�.�:�:�;V�W���X�3�3�X�5T�5T�U�U��r$c��Un[[R"URU55H#nSUS3n[R"SU-XB5nM% U$)Nr)z\%s)�set�re�findall�PUNCTUATION�sub)rrr�symbol�charNames     r!�verbalizeAllPunctuation�!Utilities.verbalizeAllPunctuation�sP�����"�*�*�T�%5�%5�v�>�?�F��6�(�!�}�H��V�V�F�V�O�X�>�F�@��
r$c�X�URSS5n[R"5R5n[R
"U5(a[R"U5n[U5S:XaWURR5(d8[R
"U5(a[R"U5nX1:waU$[R(dU$SnURRU5nSR![#[$R&U55nU$)aAdjust the line to replace words in the pronunciation dictionary,
with what those words actually sound like.

Arguments:
- line: the string to adjust for words in the pronunciation dictionary.

Returns: a new line adjusted for words found in the pronunciation
dictionary.
� r)rr�)�replacerrgrhr�is_math_relatedr	�adjustForSpeechr,rr!�getCharacterNamer�usePronunciationDictionary�WORDS_REr�r/rMr�getPronunciation)r�linerk�charname�newLine�wordss      r!�adjustForPronunciation� Utilities.adjustForPronunciation�s����|�|�H�c�*���)�)�+�>�>�@���&�&�u�-�-��.�.�t�4�D��t�9��>�$�,�,�"7�"7�"9�"9�k�>Y�>Y�Z_�>`�>`�"�3�3�D�9�H������2�2��K����
�
�#�#�D�)���'�'�#�0�A�A�5�I�J���r$c���[R"5RS5(d)[R"5RS5(dgURSS5n[R
"SU5nU(aUSUR
5nSn[R"SU5Vs/sHoDR5PM nn[R"SU5Vs/sHoDR5PM nn[XV-5nUHJup�X�4U;a U[R"X(-
5S3-
nM,U[R"X(-
5S3-
nML U$s snfs snf)	N�onlySpeakDisplayedText�enableSpeechIndentationr�r}r)z[^ 	]z +z	+)
rrgr�r~rt�searchrF�finditer�span�sortedr
�spacesCount�	tabsCount)	rr�rZr�m�spaces�tabs�spansrFs	         r!�indentationDescription� Utilities.indentationDescription�s.���'�'�)�5�5�6N�O�O�"�.�.�0�<�<�=V�W�W���|�|�H�c�*���i�i��$�'���������%�D���$&�K�K��d�$;�<�$;�q�&�&�(�$;��<�"$�+�+�e�T�":�;�":�Q����":��;��v�}�%��!�L�U��|�v�%��X�1�1�#�+�>�?�q�A�A���X�/�/���<�=�Q�?�?��	"��
��=��;s�2E �&E%c��/$rJrD)rr6ri�
layoutMode�useCaches     r!�getLineContentsAtOffset�!Utilities.getLineContentsAtOffset�����	r$c��/$rJrD)rr6rir�s    r!�getObjectContentsAtOffset�#Utilities.getObjectContentsAtOffset�r�r$c�@�U(dUR5upXS-
4$�Nr�rd�rr6ri�	skipSpaces    r!�previousContext�Utilities.previousContext��!����.�.�0�K�C��Q�J��r$c�@�U(dUR5upXS-4$r�r�r�s    r!�nextContext�Utilities.nextContext�r�r$c�N�[S[R"U5S-
5nX4$)Nrr)r�r�get_character_count)rr�ris   r!�lastContext�Utilities.lastContext�s&���Q��2�2�4�8�1�<�=���|�r$c�^�URU5(a/$[R"U5$rJ)rr�get_selected_childrenrEs  r!r��Utilities.selectedChildren�s+���"�"�3�'�'��I��0�0��5�5r$c��grCrDrEs  r!�speakSelectedCellRange� Utilities.speakSelectedCellRange�rHr$c
�^�U(dgURU5(ag[R"U5(aU$[RR
[RR/[RR[RR/[RR[RR/[RR[RR[RR/[RR[RR[RR/[RR[RR[RR/0nUR![R""U55mU4Sjn[R$"X5$)Nc�t>�T(a"U5T;ag[R"U5$rC)rrpr)rV�
matchingRoless �r!�isMatch�0Utilities.getSelectionContainer.<locals>.isMatchs,�����!2�!2�1�!5�]�!J���.�.�q�1�1r$)rZrrrrvr��LAYERED_PANE�ICONr�r��	TREE_ITEMr�r�rr�rr�rpre)rr6�rolemapr�r�s    @r!�getSelectionContainer�Utilities.getSelectionContainer�s5������?�?�3�����&�&�s�+�+��J�
�J�J����
�
� 7� 7�8��J�J�O�O�e�j�j�5�5�6��J�J� � �5�:�:�#6�#6�"7��J�J� � �5�:�:�?�?�E�J�J�4I�4I�"J��J�J�!�!�E�J�J�$4�$4�e�j�j�6K�6K�#L��J�J� � �5�:�:�#3�#3�U�Z�Z�5J�5J�"K�

�� ���H�$5�$5�c�$:�;�
�	2�
�%�%�c�3�3r$c�.^^�[R"U5(dg[R"U5(a"[R"U5n[SU5$[RR[RR/[RR[RR/0m[R"U5mTT;a[R"U5$UU4Sjn[URX55$)Nrc�T>�[R"U5TRT5;$rJ)rrpr�)rVr�r�s ��r!r��/Utilities.selectableChildCount.<locals>.isMatch s"����$�$�Q�'�7�;�;�t�+<�<�<r$)rrrrr2r�rrvr�r�r�r�rpr�r,r])rr6�rowsr�r�r�s    @@r!�selectableChildCount�Utilities.selectableChildCounts�����*�*�3�/�/���"�"�3�'�'��(�(��-�D��q�$�<��
�J�J���%�*�*�"6�"6�!7��J�J�O�O�e�j�j�2�2�3�
��
� � ��%���w���+�+�C�0�0�	=��4�*�*�3�8�9�9r$c��[R"U5(a[R"U5$[R
"U5$rJ)rrr�get_selected_row_countr�get_selected_child_countrEs  r!�selectedChildCount�Utilities.selectedChildCount%s5���"�"�3�'�'��1�1�#�6�6��3�3�C�8�8r$c��[R"5R5nX:Xag[R"U5(dg[
R"U5nU(dgU[
R"U5:H$rC)rrgrhr�is_menurr+)rr6rkr2s    r!�isPopupMenuForCurrentItem�#Utilities.isPopupMenuForCurrentItem*sa���)�)�+�>�>�@���<���"�"�3�'�'��� � ��%�����x�(�(��/�/�/r$c��grCrDrEs  r!�isEntryCompletionPopupItem�$Utilities.isEntryCompletionPopupItem8rHr$c���[R"U5(dg[R"U[R5Vs/sHo"PM nn[U5S:XaUS$gs snf)Nrr)rr�rr[rWr,)rr6rV�childrens    r!�getEntryForEditableComboBox�%Utilities.getEntryForEditableComboBox;s^���'�'��,�,��'�5�5�c�;�;T�;T�U�V�U�!�A�U��V��x�=�A���A�;����	Ws�A&c��[R"U5(dg[R"U[R5SL$rC)r�is_editablerrer�rEs  r!�isEditableDescendantOfComboBox�(Utilities.isEditableDescendantOfComboBoxEs4���&�&�s�+�+���%�%�c�;�+C�+C�D�D�P�Pr$c��[R"US5nSU;aURS5$[R"U5(d3[R"U5=(d [
R"U5$URU5nU(a[
R"U5$URRRU5nU=(d: URRR[R"US55n[U5S:Xa9[R"US5=(d [
R"US5$[R"U5=(d [
R"U5$)NF�	valuetextrr)
rr�r�r�r+rrNr�r�	utilitiesr�r�r,)rr6r��entryr�s     r!�getComboBoxValue�Utilities.getComboBoxValueKs ���,�,�S�%�8���%���9�9�[�)�)��'�'��,�,��$�$�S�)�E�V�-@�-@��-E�E��0�0��5����&�&�u�-�-��<�<�)�)�:�:�3�?���b�t�|�|�5�5�F�F�x�GY�GY�Z]�_`�Ga�b���x�=�A���$�$�X�a�[�1�U�V�5H�5H��RS��5U�U�� � ��%�A��)<�)<�S�)A�Ar$c��grCrDrEs  r!�isClickableElement�Utilities.isClickableElement^rHr$c��grCrDrEs  r!�hasLongDesc�Utilities.hasLongDescarHr$c��grCrDrEs  r!�hasVisibleCaption�Utilities.hasVisibleCaptiondrHr$c�R�[R"U5(dg[R"U5(+n[R"X5n[UR
SS55nU$![a0 SUSUS/n[R"[RUS5 gf=f)Nrrj�0z-SCRIPT UTILITIES: Exception getting value for�(�)T)r�
is_headingr�rr�rlr�rOrr-r.)rr6�	use_cacher��valuer9s      r!�headingLevel�Utilities.headingLevelgs����%�%�c�*�*��#�/�/��4�4�	��,�,�S�<��	���	�	�'�3�/�0�E�����	�E�s�C�QV�X[�\�F����u�/�/���>��	�s�A,�,7B&�%B&c��[R"US5=(d% [R"U[R5$)N�toggle)r�
has_actionr�
ACTION_TOGGLErEs  r!�hasMeaningfulToggleAction�#Utilities.hasMeaningfulToggleActionws5���"�"�3��1�I��"�"�3�(9�(G�(G�H�	Ir$c	�:�[R"X5up4nURRR	SS5upgXa:waX4U4$[
R"5nUR5n	UR5n
[R"Xg5up�n
URRR	S5S:XayU	(aUnUnOU
(aUnUn[R"XU5nURSS5nSUSUS	US
US3	n[R"[RUS5 X4U4$U	(a8UnUS
R5(dUS
R5(dUS-nOhU
(aaUnX;:waX�s=:aU
::aO OUn[R"XS-
U5nUR5(dUR5(dUS-
n[R"XU5nSU;a<X;:Xa7UR!S5(aUS-
nOUR#S5(aUS-n[R"XU5nURSS5nSUSUS	US
US3	n[R"[RUS5 X4U4$)N�penultimateCursorPositionrC�lastTextUnitSpoken�word�
z\nz*SCRIPT UTILITIES: Adjusted word at offset z for ongoing word nav is 'z' (rdr�Trrz for new word nav is ')r�get_word_at_offsetrrr�rrg�'last_event_was_previous_word_navigation�#last_event_was_next_word_navigationrr~rrtr.�isspace�isalnum�
startswith�endswith)rr6rir�rFrZr$�
prevOffset�manager�wasPreviousWordNav�wasNextWordNav�prevWord�	prevStart�prevEnd�debugStringr~�lastChars                 r!�$getWordAtOffsetAdjustedForNavigation�.Utilities.getWordAtOffsetAdjustedForNavigation{s���!�4�4�S�A���S�"�l�l�=�=�A�A�'��5����>���#�#�%�1�1�3��$�L�L�N�� �D�D�F��(.�'@�'@��'U�$��W��<�<�*�*�.�.�/C�D��N�!��� ���"�����'�'��C�8�D��,�,�t�U�3�K�<�V�H�E��=��E�7�!�C�5��3�
�
���� 0� 0�#�t�<���#�#���E�
��H�$�$�&�&�$�r�(�*:�*:�*<�*<��q����
��C���I�$A�'�$A�!��
�+�+�C�!��V�D�H��$�$�&�&�(�*:�*:�*<�*<���
���#�#�C��4���4�<�D�,����t�$�$���
�����t�$�$��q����#�#�C��4���l�l�4��/��8���A��}�C��w�a��u�A�
/�	�	���E�,�,�c�4�8��C��r$c�*�[R"U5nUcg[R"US5nSUpTURU5(dXE4$[R
"U5n[R"X&RS-UR5nU(a[R"USS9SnUn[R"X&RUR-S-
UR5nU(a[R"USS9SnUS-nXE4$)N)rrFrrr')rr*�get_column_countrrr��get_descendant_at_pointrV�yr/�width)	rr6r%�columnCount�
startIndex�endIndex�rectr=r�s	         r!�_getTableRowRange�Utilities._getTableRowRange�s����!�!�#�&���=���.�.�u�e�<�� �+�H��&�&�u�-�-��'�'��#�#�E�*���2�2�5�&�&�1�*�d�f�f�M����1�1�$��O�PQ�R�F��J��2�2�5�&�&�4�:�:�:M�PQ�:Q�SW�SY�SY�Z����1�1�$��O�PQ�R�F���z�H��#�#r$c��[R"USS9SnUS:Xa/$[R"U5nU(aS[R"U5peOUR	U5upVXV:Xa/$/n[XV5HHn[R"XCU5n	[R"U	5(dM7URU	5 MJ U$)NFr'rr)
rr/r*rrr1r3rrrr5)
rr6�forceFullRowr:r%rr�cellsr<r=s
          r!�getShowingCellsInSameRow�"Utilities.getShowingCellsInSameRow�s����*�*�3��G��J���"�9��I��!�!�#�&���#$�g�&>�&>�u�&E��#'�#9�#9�#�#>� �J��!��I����z�,�A��&�&�u�1�5�D��%�%�d�+�+����T�"�-�
�r$c�^^�STSU/n[R"[RUS5 U(aT(dg[R"U5(d[R
"U5(agUU4SjnU"U5(aUnO[R"X5nSUST/n[R"[RUS5 U$)Nz-SCRIPT UTILITIES: Searching for replicant for�inTc��>�UT:XagUcg[R"TU5(dgTRTU5(ag[R"TU5(dg[R
"U5(+$r�)rrbrTr�objects_have_same_rectr�)rVr6rs ��r!�isSame�'Utilities.findReplicant.<locals>.isSame�sm����C�x���y���-�-�c�1�5�5��� � ��a�(�(���5�5�c�1�=�=��"�.�.�q�1�1�1r$zHACK: Returningzas replicant for invalid object)rr-r.rr��is_embeddedrr�)rr�r6r9r&�	replicants` `   r!�
findReplicant�Utilities.findReplicant�s����A�3��d�S��
���5�+�+�V�T�:��������%�%��)@�)@��)F�)F��
	2��$�<�<��I� �0�0��>�I�#�Y�0Q�SV�W��
���5�+�+�V�T�:��r$c�J�[R"U5(d/$/n[R"U5nU(af[R"U5(aKURU5 [R"U5nU(a[R"U5(aMKU$rJ)rr�r�get_next_sibling�is_description_valuer5)rr6�valuess   r!�
valuesForTerm�Utilities.valuesForTermsx���.�.�s�3�3��I����'�'��,���k�6�6�s�;�;��M�M�#���+�+�C�0�C��k�6�6�s�;�;��
r$c��SURRS'SURRS'SURRS'g)NF�undo�redo�paste)rr�rs r!�clearCachedCommandState�!Utilities.clearCachedCommandState#s>��27����'�'��/�27����'�'��/�38����'�'��0r$c���[R"5R5(a�URRRS5(dBURR
[R5 SURRS'[R"UR5 g[R"5R5(a�URRRS5(dBURR
[R5 SURRS'[R"UR5 gg)Nr3Tr4F)rrg�last_event_was_undorrr��presentMessager
�UNDOr�update_cached_selected_textrF�last_event_was_redo�REDOr@s  r!�handleUndoTextEvent�Utilities.handleUndoTextEvent(s����*�*�,�@�@�B�B��<�<�2�2�6�6�v�>�>����+�+�H�M�M�:�:>����/�/��7��.�.�u�|�|�<���*�*�,�@�@�B�B��<�<�2�2�6�6�v�>�>����+�+�H�M�M�:�:>����/�/��7��.�.�u�|�|�<��r$c��[R"5R5(ag[R"5R	5(amUR
RRS5(dBUR
R[R5 SUR
RS'g[R"5R5(amUR
RRS5(dBUR
R[R5 SUR
RS'gg)NFr3Tr4)
rrg�focus_is_active_windowrr:rrr�r;r
r<r>r?r6s r!�handleUndoLocusOfFocusChange�&Utilities.handleUndoLocusOfFocusChange9s����$�$�&�=�=�?�?���*�*�,�@�@�B�B��<�<�2�2�6�6�v�>�>����+�+�H�M�M�:�:>����/�/��7���*�*�,�@�@�B�B��<�<�2�2�6�6�v�>�>����+�+�H�M�M�:�:>����/�/��7��r$c��[R"5R5(ag[R"5R	5(a|UR
RRS5(dQUR
R[R[R5 SUR
RS'gg)NFr5T)rrgrCr�last_event_was_pasterrr�r;r
�CLIPBOARD_PASTED_FULL�CLIPBOARD_PASTED_BRIEFr6s r!�handlePasteLocusOfFocusChange�'Utilities.handlePasteLocusOfFocusChangeLs����$�$�&�=�=�?�?���*�*�,�A�A�C�C��<�<�2�2�6�6�w�?�?����+�+��2�2�H�4S�4S�U�;?����/�/��8��r$c�\�UR5(agUR5(aggr�)rDrJr6s r!�presentFocusChangeReason�"Utilities.presentFocusChangeReasonZs)���,�,�.�.���-�-�/�/��r$c�`�[R"U5(dg[R"U5(a[R"U5(dg[R
"U5(d[R"U5(ag[R"U5nU[R"U5:Xa_[R"US5n[R"U5U:wagSUS3n[R"[RUS5 g[R "U5$)NFrzSCRIPT UTILITIES: All z! children believed to be selectedT)rrr�
is_expandabler)r�r�r�rr��get_selected_childrarrtr.r�all_cells_are_selected)rr6�
childCountr_r~s     r!�allItemsSelected�Utilities.allItemsSelectedas����*�*�3�/�/���$�$�S�)�)�+�2I�2I�#�2N�2N���#�#�C�(�(�K�,?�,?��,D�,D���-�-�c�2�
���=�=�c�B�B� �2�2�3��:�E��"�"�5�)�S�0��*�:�,�6W�X�C����� 0� 0�#�t�<���-�-�c�2�2r$c��URRRS5nURU5nU(aU(agX0RRS'[R
"5R
5(aWU(aPURR[R5 [R
"5RSUS5 gg)NrTTF)rrr�rTrrg�last_event_was_select_allr;r
�CONTAINER_SELECTED_ALLrrM)rr6�allAlreadySelected�allCurrentlySelecteds    r!�handleContainerSelectionChange�(Utilities.handleContainerSelectionChangeys���!�\�\�<�<�@�@�AS�T��#�4�4�S�9���"6��>R���'�'�(:�;��*�*�,�F�F�H�H�Ma��L�L�'�'��(G�(G�H��%�%�'�:�:�4��e�L��r$c�4	�[R"U5(dg[R"5R	5(ag[
R"U5up4n[
R"U5 [
R"U5upgn[R"5R5(a6U(a/Xc:wa)URR[R5 g[R"5R5(d8U(a1U(d*URR[R5 g/n	[[!XE55n
[[!Xx55nU
R#U5(dgU
(aaU(aZU
R%U5(dDU	R'XE[R(/5 U	R'Xx[R*/5 GO[-U
R/U55nU(dgUSUSS-p�X�:arU	R'X�[R*/5 UR1UR25(a0X]:Xa+[4R6"XS-
5nUR9US5 OlU	R'X�[R(/5 UR1UR25(a+[4R6"XS-
5nUR9US5 U=(a) [:R"5R=S5(+nU	GHZunnn[
R>"UUU5nUR1UR25nU(aUS-n[AU5S:�a�U(a�U[R*:Xa9URR[RB"[AU555 O~URR[RD"[AU555 OEURRGUUU5 U(a!U(dURRUSS9 U(dGM2[4R6"UU5nUR9X�5 GM] g)	NFTrrrr�i�)�	interrupt)$r�
supports_textrrg�last_event_was_cutr�get_cached_selected_textr=rWr�speakMessager
�DOCUMENT_SELECTED_ALL�last_event_was_caret_selection�SELECTION_REMOVEDrsr1�union�intersectionr5�TEXT_UNSELECTED�
TEXT_SELECTEDr��symmetric_differencerrrr�handleTextSelectionChangerr�rr,�selectedCharacterCount�unselectedCharacterCount�	sayPhrase)rr6rb�
old_string�	old_start�old_end�
new_string�	new_start�new_end�changes�oldChars�newChars�change�changeStart�	changeEndr_rFrZ�messager�
endsWithChilds                     r!rk�#Utilities.handleTextSelectionChange�sf��
�%�%�c�*�*���*�*�,�?�?�A�A��)/�)H�)H��)M�&�
�w��*�*�3�/�)/�)H�)H��)M�&�
�w��*�*�,�F�F�H�H�Z��'����)�)�(�*H�*H�I��#�.�.�0�O�O�Q�Q��*��L�L�%�%�h�&@�&@�A�����u�Y�0�1���u�Y�0�1���~�~�h�'�'�����)>�)>�x�)H�)H��N�N�I��0H�0H�I�J��N�N�I��0F�0F�G�H��H�9�9�(�C�D�F���%+�A�Y��r�
�Q����"������8N�8N�O�P��&�&�t�'E�'E�F�F�7�Ka�(�;�;�C�1��M�E��2�2�5�%�@�������8P�8P�Q�R��&�&�t�'E�'E�F�F�(�;�;�C�1��M�E��2�2�5�%�@�#�Y�$�0�0�2�>�>�?W�X�X�	�#*��E�3���)�)�#�u�c�:�F�"�O�O�D�,J�,J�K�M���q����6�{�T�!�l��h�4�4�4��L�L�-�-�h�.M�.M�c�RX�k�.Z�[��L�L�-�-�h�.O�.O�PS�TZ�P[�.\�]����&�&�s�E�3�7��
��L�L�-�-�g��-�G��}�#�7�7��S�A���.�.�u�C�%$+�(r$c�
�SnUc,US-
n[R"[RUS5 gURR	S5(a,US-
n[R"[RUS5 g[
R"U5(ab[
R"U5(aG[
R"U5(a,US-
n[R"[RUS5 g[
R"U5(db[
R"U5(d[
R"U5(a,US-
n[R"[RUS5 g[R"X!5(a�[R"U5(a,US	-
n[R"[RUS5 g[
R"U5(a,US
-
n[R"[RUS5 gg[
R "X5(d[
R "X!5(a,US-
n[R"[RUS5 gg)Nz<SCRIPT UTILITIES: Not interrupting for locusOfFocus change: z
event is NoneTFz object:active-descendant-changedz"event is active-descendant-changedzsuspected editable cellzsuspected menuitem state changez:old locusOfFocus is ancestor with name of new locusOfFocuszEold locusOfFocus is ancestor dialog or window of the new locusOfFocusz<new locusOfFocus and old locusOfFocus have controls relation)rrtr.�typerrr�rXr��is_menu_related�is_check_menu_item�is_radio_menu_itemr�is_ancestorr+�is_dialog_or_window�object_is_controlled_by)r�	old_focus�	new_focusrAr~s     r!�$shouldInterruptForLocusOfFocusChange�.Utilities.shouldInterruptForLocusOfFocusChange�s���L���=��?�"�C����� 0� 0�#�t�<���:�:� � �!C�D�D��7�7�C����� 0� 0�#�t�<���$�$�Y�/�/�K�4G�4G�	�4R�4R��&�&�y�1�1��,�,�C����� 0� 0�#�t�<���*�*�9�5�5��.�.�y�9�9��1�1�)�<�<��4�4�C����� 0� 0�#�t�<�����	�5�5�� � ��+�+��S�S���#�#�E�$4�$4�c�4�@���.�.�y�9�9��^�^���#�#�E�$4�$4�c�4�@����.�.�y�D�D��1�1�)�G�G��Q�Q�C����� 0� 0�#�t�<��r$r)TrJ)F)NN)T�)rrrC)TT)rT)NrF)��__name__�
__module__�__qualname__�__firstlineno__r�ZERO_WIDTH_NO_BREAK_SPACErt�UNICODE�flags�compiler�rvr"r@rFrPrKrlr�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�rrr	rrrrr&r6r<r@rIrTrZrgr0rzr�r�r�r�r�r�r�r�r�rur��staticmethodr�r]r0rrr.r*r.r5r8r1rBrGrdrOrNr&r^rarYrprzr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrr r*r0r7r@rDrJrMrTr[rkr��__static_attributes__rDr$r!rr8s��� (�� (���J�J�E��z�z�(�E�*�H��*�*�Z��/�K�'� 0�d�7��$�" �D-�
H�P����������*�=�
[� 5�D@�P�
P�
,�:�c�Y�N�F��P�T�
2�E�
<�
D�

$�	�X�, �.Z�(�

� 0�D-� �0*�X$�L�$Q�(?�B��8���,V��&
K�����&I�JE�X
1�
-�6�p��
�D�7���$�
)�-�A��"
��(�� �D�,�����6��4�6:�,9�
0���Q�B�&���� I�M �^$�.�*�B
�9�
�"�&��3�0�P�d*r$r)'�__doc__�__id__�__version__�__date__�
__copyright__�__license__rt�gi�require_version�
gi.repositoryrr�rrrr	r
rrr
rr�ax_componentr�ax_hypertextr�	ax_objectr�ax_selectionr�ax_tabler�ax_textr�ax_utilitiesr�ax_valuerrrDr$r!�<module>r�s���(C�

������5�
���	�	����7�E�"����!���� ����%�%��%���%��K�Kr$

Filemanager

Name Type Size Permission Actions
__init__.cpython-313.pyc File 276 B 0644
acss.cpython-313.pyc File 4.37 KB 0644
action_presenter.cpython-313.pyc File 12.53 KB 0644
ax_collection.cpython-313.pyc File 6.06 KB 0644
ax_component.cpython-313.pyc File 22.4 KB 0644
ax_document.cpython-313.pyc File 13.2 KB 0644
ax_event_synthesizer.cpython-313.pyc File 22.37 KB 0644
ax_hypertext.cpython-313.pyc File 11.3 KB 0644
ax_object.cpython-313.pyc File 63.85 KB 0644
ax_selection.cpython-313.pyc File 5.26 KB 0644
ax_table.cpython-313.pyc File 62.75 KB 0644
ax_text.cpython-313.pyc File 58.92 KB 0644
ax_utilities.cpython-313.pyc File 37.16 KB 0644
ax_utilities_application.cpython-313.pyc File 9.14 KB 0644
ax_utilities_collection.cpython-313.pyc File 125.47 KB 0644
ax_utilities_debugging.cpython-313.pyc File 15.44 KB 0644
ax_utilities_event.cpython-313.pyc File 41.86 KB 0644
ax_utilities_relation.cpython-313.pyc File 21.3 KB 0644
ax_utilities_role.cpython-313.pyc File 139.59 KB 0644
ax_utilities_state.cpython-313.pyc File 19.65 KB 0644
ax_value.cpython-313.pyc File 8.8 KB 0644
bookmarks.cpython-313.pyc File 16.09 KB 0644
braille.cpython-313.pyc File 82.01 KB 0644
braille_generator.cpython-313.pyc File 71.06 KB 0644
braille_rolenames.cpython-313.pyc File 8.73 KB 0644
brlmon.cpython-313.pyc File 9.02 KB 0644
brltablenames.cpython-313.pyc File 2.46 KB 0644
bypass_mode_manager.cpython-313.pyc File 5.79 KB 0644
caret_navigation.cpython-313.pyc File 22.86 KB 0644
chat.cpython-313.pyc File 33.96 KB 0644
clipboard.cpython-313.pyc File 27.81 KB 0644
cmdnames.cpython-313.pyc File 18.85 KB 0644
colornames.cpython-313.pyc File 11.83 KB 0644
debug.cpython-313.pyc File 4.76 KB 0644
debugging_tools_manager.cpython-313.pyc File 13.8 KB 0644
event_manager.cpython-313.pyc File 43.89 KB 0644
flat_review.cpython-313.pyc File 59.1 KB 0644
flat_review_finder.cpython-313.pyc File 29.77 KB 0644
flat_review_presenter.cpython-313.pyc File 59.01 KB 0644
focus_manager.cpython-313.pyc File 14.24 KB 0644
generator.cpython-313.pyc File 95.62 KB 0644
guilabels.cpython-313.pyc File 12.43 KB 0644
highlighter.cpython-313.pyc File 9.86 KB 0644
input_event.cpython-313.pyc File 45.78 KB 0644
input_event_manager.cpython-313.pyc File 48.43 KB 0644
keybindings.cpython-313.pyc File 27.27 KB 0644
keynames.cpython-313.pyc File 4.73 KB 0644
label_inference.cpython-313.pyc File 25.15 KB 0644
learn_mode_presenter.cpython-313.pyc File 19.89 KB 0644
liveregions.cpython-313.pyc File 31.34 KB 0644
mathsymbols.cpython-313.pyc File 64.53 KB 0644
messages.cpython-313.pyc File 41.8 KB 0644
mouse_review.cpython-313.pyc File 33.59 KB 0644
notification_presenter.cpython-313.pyc File 18.47 KB 0644
object_navigator.cpython-313.pyc File 15.8 KB 0644
object_properties.cpython-313.pyc File 8.27 KB 0644
orca.cpython-313.pyc File 13.43 KB 0644
orca_gtkbuilder.cpython-313.pyc File 5.53 KB 0644
orca_gui_navlist.cpython-313.pyc File 10.45 KB 0644
orca_gui_prefs.cpython-313.pyc File 166.31 KB 0644
orca_gui_profile.cpython-313.pyc File 5.69 KB 0644
orca_i18n.cpython-313.pyc File 2.63 KB 0644
orca_modifier_manager.cpython-313.pyc File 17.05 KB 0644
orca_platform.cpython-313.pyc File 661 B 0644
phonnames.cpython-313.pyc File 1.51 KB 0644
pronunciation_dict.cpython-313.pyc File 1.95 KB 0644
script.cpython-313.pyc File 15.33 KB 0644
script_manager.cpython-313.pyc File 18.15 KB 0644
script_utilities.cpython-313.pyc File 87.03 KB 0644
settings.cpython-313.pyc File 6.79 KB 0644
settings_manager.cpython-313.pyc File 35.18 KB 0644
sleep_mode_manager.cpython-313.pyc File 6.67 KB 0644
sound.cpython-313.pyc File 8.71 KB 0644
sound_generator.cpython-313.pyc File 58.4 KB 0644
speech.cpython-313.pyc File 10.75 KB 0644
speech_and_verbosity_manager.cpython-313.pyc File 34.1 KB 0644
speech_generator.cpython-313.pyc File 214.55 KB 0644
speechdispatcherfactory.cpython-313.pyc File 33.52 KB 0644
speechserver.cpython-313.pyc File 10.21 KB 0644
spellcheck.cpython-313.pyc File 24.24 KB 0644
spiel.cpython-313.pyc File 34.68 KB 0644
ssml.cpython-313.pyc File 6.03 KB 0644
structural_navigation.cpython-313.pyc File 93.9 KB 0644
system_information_presenter.cpython-313.pyc File 9.42 KB 0644
table_navigator.cpython-313.pyc File 36.48 KB 0644
text_attribute_names.cpython-313.pyc File 6.01 KB 0644
where_am_i_presenter.cpython-313.pyc File 26.41 KB 0644
Filemanager