__  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ 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]: ~ $
�

���g7��8�SrSrSrSrSrSSKr\R"SS5 SS	KJr SSK	r	SSK
r
SSKrSSKrSS
K
Jr SSK
Jr SSK
Jr SS
K
Jr SSK
Jr SSKJr SSKJr SSKJr SSKJr SSKJr SSKJr SSKJ r  SSK!J"r" "SS\RF5r#g)z$Id$z
$Revision$z$Date$zGCopyright (c) 2010 Joanmarie Diggs.Copyright (c) 2014-2015 Igalia, S.L.�LGPL�N�Atspiz2.0)r)�debug)�
focus_manager)�input_event_manager)�script_utilities)�settings_manager)�AXComponent)�
AXDocument)�AXHypertext)�AXObject)�AXTable)�AXText)�AXUtilities)�AXUtilitiesDebuggingc�^�\rSrSrU4SjrSrS�SjrSrSrS�Sjr	S�Sjr
S�S	jrS�S
jrSr
S�SjrS
rS�U4SjjrSrU4SjrSrS�SjrS�SjrSrSr\S�Sj5rSrSrS�U4SjjrS�U4SjjrSrS�U4SjjrS�Sjr U4Sjr!U4Sjr"S r#S�S!jr$S"r%S#r&S�S$jr'S%r(S&r)S'r*S�S(jr+S�S)jr,S�S*jr-S�S+jr.S�S,jr/S�S-jr0S�S.jr1S�S/jr2S0r3S�S1jr4S2r5S�S3jr6S�S4jr7S�S5jr8S�S6jr9S�S7jr:S8r;S9r<S�U4S:jjr=S�S;jr>S<r?S=r@S>rAS?rBS�U4S@jjrCSArDSBrESCrFSDrGS�SEjrHU4SFjrISGrJSHrKSIrLSJrMS�SKjrNSLrOSMrPSNrQSOrRSPrSS�U4SQjjrTSRrUSSrVSTrWSUrXSVrYSWrZSXr[SYr\SZr]S[r^S\r_S�S]jr`S^raS_rbS`rc/4SajrdSbreScrfSdrgSerhSfriU4SgjrjShrkSirlSjrmSkrnSlroSmrpSnrqSorrSprsSqrtSrruSsrvStrwSurxSvrySwrzSxr{U4Syjr|Szr}S{r~S|rS}r�S~r�Sr�S�S�jr�S�r�S�r�S�r�S�r�S�r�S�r�S�r�S�S�jr�S�S�jr�S�r�S�r�S�r�S�r�S�r�S�r�S�S�jr�S�S�jr�S�S�jr�S�r�S�r�S�r�S�S�jr�S�S�jr�S�r�S�S�jr�S�r�S�r�S�S�jr�S�S�jr�S�S�jr�S�S�jr�S�r�U4S�jr�S�r�U=r�$)��	Utilities�4c�T>�[TU]U5 0Ul0Ul0Ul0Ul0Ul0Ul0Ul0Ul	0Ul
0Ul0Ul0Ul
0Ul0Ul0Ul0Ul0Ul0Ul0Ul0Ul0Ul0Ul0Ul0Ul0Ul0Ul0Ul0Ul0Ul0Ul0Ul 0Ul!0Ul"0Ul#0Ul$0Ul%0Ul&0Ul'0Ul(0Ul)0Ul*0Ul+0Ul,0Ul-SUl.SUl/SUl0SUl1SUl2SUl3[hRjRl[hRjRn/0Ul8g�N)9�super�__init__�_caretContexts�_priorContexts�_canHaveCaretContextDecision�_contextPathsRolesAndNames�_paths�_inDocumentContent�_inTopLevelWebApp�_isTextBlockElement�%_isContentEditableWithEmbeddedObjects�_isCodeDescendant�_isEntryDescendant�_hasGridDescendant�_isGridDescendant�_isLabelDescendant�_isMenuDescendant�_isNavigableToolTipDescendant�_isToolBarDescendant�_isWebAppDescendant�_isFocusableWithMathChild�_isOffScreenLabel�_labelIsAncestorOfLabelled�_elementLinesAreSingleChars�_elementLinesAreSingleWords�_hasLongDesc�_hasVisibleCaption�$_isNonInteractiveDescendantOfControl�_isClickableElement�_isInlineListDescendant�_isLink�_isListDescendant�_isNonNavigablePopup�_isNonEntryTextWidget�_isCustomImage�_isUselessImage�_isRedundantSVG�_isUselessEmptyElement�$_hasNameAndActionAndNoUsefulChildren�_isNonNavigableEmbeddedDocument�_inferredLabels�_preferDescriptionOverName�
_shouldFilter�_shouldInferLabelFor�_treatAsTextObject�_treatAsDiv�_currentObjectContents�_currentSentenceContents�_currentLineContents�_currentWordContents�_currentCharacterContents�_findContainerr�Role�LIST�	LIST_ITEM�_validChildRoles)�self�script�	__class__s  ��C/usr/lib/python3/dist-packages/orca/scripts/web/script_utilities.pyr�Utilities.__init__6s����
���� � ��� ���,.��)�*,��'����"$���!#���#%�� �57��2�!#���"$���"$���!#���"$���!#���-/��*�$&��!�#%�� �)+��&�!#���*,��'�*,��(�*,��(����"$���46��1�#%�� �')��$����!#���$&��!�%'��"� ���!���!���&(��#�46��1�/1��,�!���*,��'����$&��!�"$������&*��#�(,��%�$(��!�$(��!�)-��&�"���!&�����5�:�:�3G�3G�2H� I���c��/nURR5H6unup4[R"U5(aM%UR	U5 M8 UHnURRUS5 M! gr)r�itemsr
�is_valid�append�pop)rO�toRemove�key�obj�offsets     rR�_cleanupContexts�Utilities._cleanupContextsmsf����"&�"5�"5�";�";�"=��C��#��$�$�S�)�)�����$�#>��C����#�#�C��.�rTc�h�[R"U5(dUR5n[R"U5nURR[
U55nSUSUSU/n[R"[RUS5 URRRU5 URU5 UR5 U(aRU(aJSUSSUS/n[R"[RUS5 X@R[
U5'ggg)	Nz!WEB: Clearing all cached info forzPreserving context:zContext:TzWEB: Preserving context ofr�,�)r
rW�
documentFrame�
get_parentr�get�hashr�print_tokens�
LEVEL_INFO�_script�structural_navigation�
clearCache�clearCaretContext�clearCachedObjects)rOrc�preserveContext�documentFrameParent�context�tokenss      rR�	dumpCache�Utilities.dumpCachevs���� � ��/�/� �.�.�0�M�&�1�1�-�@���%�%�)�)�$�/B�*C�D��5�}�'��*�g�O��
���5�+�+�V�T�:����*�*�5�5�m�D����}�-����!��w�2�G�A�J��W�Q�Z�P�F����u�/�/���>�=D����%8� 9�:� '�?rTc���[R"[RSS5 0Ul0Ul0Ul0Ul0Ul0Ul0Ul	0Ul
0Ul0Ul0Ul
0Ul0Ul0Ul0Ul0Ul0Ul0Ul0Ul0Ul0Ul0Ul0Ul0Ul0Ul0Ul0Ul0Ul0Ul0Ul 0Ul!0Ul"0Ul#0Ul$0Ul%0Ul&0Ul'0Ul(0Ul)0Ul*0Ul+0Ul,UR[5 0Ul.SUl/g)NzWEB: cleaning up cached objectsT)0r�
print_messagerhrrr r!r"r#r$r%r&r'r(r)r*r+r,r-r.r/r0r1r2r3r4r5r6r7r8r9r:r;r<r=r>r?r@rArBrCrDrrrr^rrJ�rOs rRrm�Utilities.clearCachedObjects�s���
���E�,�,�.O�QU�V�"$���!#���#%�� �57��2�!#���"$���"$���!#���"$���!#���-/��*�$&��!�#%�� �)+��&�!#���*,��'�*,��(�*,��(����"$���46��1�#%�� �')��$����!#���$&��!�%'��"� ���!���!���&(��#�46��1�/1��,�!���*,��'����$&��!�"$���������*,��'�,.��)����� ���"��rTc�J�SUlSUlSUlSUlSUlgr)rErFrGrHrIrvs rR�clearContentCache�Utilities.clearContentCache�s*��&*��#�(,��%�$(��!�$(��!�)-��&rTc��[R"U5(d"U5(agU(d[R"U5$g�NTF)r�is_document_web�is_embedded�is_document_frame)rOr\�excludeDocumentFrames   rR�
isDocument�Utilities.isDocument�s=���&�&�s�+�+�{�/F�/F�s�/K�/K��#��0�0��5�5�rTc�2�U(d#[R"5R5nURU5(agURR[
U55nUbU$URU5nUSLnX R[
U5'U$�NT)r�get_manager�get_locus_of_focusr�rrerf�getDocumentForObject�rOr\�rv�documents    rR�inDocumentContent�Utilities.inDocumentContent�s�����+�+�-�@�@�B�C��?�?�3����
�
$�
$�
(�
(��c��
3��
�>��I��,�,�S�1��
�T�
!��-/����S�	�*��	rTc�0�U=(d# [R"5R5n[[	UR
[R"U555n[[	[RU55n[U5S:XaUS$g)Nrbr)
rr��get_active_window�list�filterr�r�
get_embeds�
is_showing�len)rO�window�	documentss   rR�activeDocument�Utilities.activeDocument�sn���J�=�4�4�6�H�H�J��������1G�1G��1O�P�Q�	���� 6� 6�	�B�C�	��y�>�Q���Q�<��rTc��U(dUR5nU(aU$URU=(d# [R"5R	55$r)r�r�rr�r�)rOr\r�s   rRrc�Utilities.documentFrame�sC����*�*�,�H�����(�(��)`�
�0I�0I�0K�0^�0^�0`�a�arTc��[R"U5(ag[R"U5(a'[R"U[R
5SL$[R"U5(a@[R"U5S:Xa&UR[R"US55$[R"U5$)NFrbr)r�is_entry�is_imager
�
find_ancestor�is_link�
is_heading�get_child_count�isLink�	get_child�is_focusable�rOr\s  rR�grabFocusWhenSettingCaret�#Utilities.grabFocusWhenSettingCaret�s�������$�$������$�$��)�)�#�{�/B�/B�C�4�O�O��!�!�#�&�&�8�+C�+C�C�+H�A�+M��;�;�x�1�1�#�q�9�:�:��'�'��,�,rTc��URR5R5(a(URR5R5 UR	U5nURX5upUR
XU5 URR5(ag[R"5R5n[R"U5 [R"5RSUSS9 U(a[R"U5 [R "X5 URR#X5URR%5:waURR'S5 U(a[R("USS5 URR+U5 g)NF)�
notify_scriptzSet caret in object.)ri�get_flat_review_presenter�	is_active�quitr��findFirstCaretContext�setCaretContext�focusModeIsStickyrr�r�r�clear_all_selected_text�set_locus_of_focusr
�
grab_focus�set_caret_offset�useFocusMode�inFocusMode�togglePresentationMode�clear_cache�_save_focused_object_info)rOr\r]rc�	grabFocus�	old_focuss      rR�setCaretPosition�Utilities.setCaretPosition�sD���<�<�1�1�3�=�=�?�?��L�L�2�2�4�9�9�;��2�2�3�7�	��0�0��=������S�-�8��<�<�)�)�+�+��!�-�-�/�B�B�D�	��&�&�y�1��!�!�#�6�6�t�S�PU�6�V������$�����,��<�<�$�$�S�4����8P�8P�8R�R��L�L�/�/��5��� � ��e�-C�D�	
���.�.�s�3rTc��U(dg[R"U5nU(aUS$X:XaNURU5up[R"U5H!n[
R"U5U:�dMUs $ [R"U5(a[R"US5$U(aHX:waC[R"U5nU(aU$[R"U5nU(aX:waMCg�Nr)r�get_flows_to�getCaretContextr
�
iter_childrenr�get_character_offset_in_parentr�r��get_next_siblingrd)rOr\rc�targetsr]�child�nextObjs       rR�getNextObjectInDocument�!Utilities.getNextObjectInDocuments������*�*�3�/����1�:�����.�.�}�=�K�C�!�/�/�
�>���=�=�e�D�v�M� �L�?��#�#�C�(�(��%�%�c�1�-�-��c�*��/�/��4�G�����%�%�c�*�C�	�c�*�rTc�>�U(d#[R"5R5nURU5(ag[TU]U5$�NF)rr�r�r�r�inFindContainer�rOr\rQs  �rRr��Utilities.inFindContainer+sA�����+�+�-�@�@�B�C��!�!�#�&�&���w�&�s�+�+rTc��URU5(dg[R"U5(agURUS5(+$r�)�isTextBlockElementr
�get_name�treatAsTextObjectr�s  rR�is_empty�Utilities.is_empty4s@���&�&�s�+�+�����S�!�!���)�)�#�u�5�5�5rTc��>�URU5(d[TU]	U5$URU5(ag[R
"U5(a7[R"U5(a[R"U5(dg[R"U5UR5;a-URU5n[R"U5(ag[TU]	U5$�NFT)r�r�
isTextArear�r�is_combo_box�is_editabler
r��get_role�_textBlockElementRolesr�)rOr\r�rQs   �rRr��Utilities.isTextArea=s�����%�%�c�*�*��7�%�c�*�*��;�;�s�����#�#�C�(�(��&�&�s�+�+��+�+�C�0�0�����S�!�T�%@�%@�%B�B��0�0��5�H��&�&�x�0�0���w�!�#�&�&rTc�\�URX5 URRU5 gr)r�ri�update_braille)rOr\�characterOffsets   rR�setCaretOffset�Utilities.setCaretOffsetPs"�����c�3����#�#�C�(rTc�H�U(dUR5upURX5upEU(am[R"XE5SR	5(aAURXE5upE[R"XE5SR	5(aMAXE4$r�)r��findNextCaretInOrderr�get_character_at_offset�isspace)rOr\r]�	skipSpace�nextobj�
nextoffsets      rR�nextContext�Utilities.nextContextTs�����.�.�0�K�C�"�7�7��D�����0�0��E�a�H�P�P�R�R�&*�&?�&?��&T�#���0�0��E�a�H�P�P�R�R��"�"rTc�H�U(dUR5upURX5upEU(am[R"XE5SR	5(aAURXE5upE[R"XE5SR	5(aMAXE4$r�)r��findPreviousCaretInOrderrr�r�)rOr\r]r��prevobj�
prevoffsets      rR�previousContext�Utilities.previousContext_s�����.�.�0�K�C�"�;�;�C�H�����0�0��E�a�H�P�P�R�R�&*�&C�&C�G�&X�#���0�0��E�a�H�P�P�R�R��"�"rTc�^�SnURT5(a[R"T5S-
nU4SjnTnU(a6URXB5upVU(a
U"U5(dXB4$XVp$U(aM6XB4$)Nrrbc�R>�UT:H=(d [R"UU4Sj5$)Nc�>�UT:H$r�)�x�roots �rR�<lambda>�:Utilities.lastContext.<locals>._isInRoot.<locals>.<lambda>ps	���A��IrT)r
r�)�or�s �rR�	_isInRoot�(Utilities.lastContext.<locals>._isInRootos �����9�N�� 6� 6�q�:M� N�NrT)r�r�get_character_countr�)rOr�r]r�r\�lastobj�
lastoffsets `     rR�lastContext�Utilities.lastContextjs�������!�!�$�'�'��/�/��5��9�F�	O����"&�"2�"2�3�"?��G��	�'� 2� 2���{��"��	�c��{�rTc��X:XagUup4UupVURX4US-5nURXVUS-5nURXx5$)NTrb)�
getExtents�extentsAreOnSameLine)	rO�a�b�aObj�aOffset�bObj�bOffset�aExtents�bExtentss	         rR�contextsAreOnSameLine�Utilities.contextsAreOnSameLine{sQ���6���
���
���?�?�4�'�A�+�>���?�?�4�'�A�+�>���(�(��<�<rTc�.�X:XagUup4pVUupxp�US:XaUS:XaX�s=:*=(a X�-:*$s $U	S:XaU
S:XaXHs=:*=(a XF-:*$s $[XF-X�-5n[XH5nX�:�agXFS--n
X�S--n[X�-
5U:�agg)NTrF�)�min�max�abs)rr�
pixelDelta�aX�aY�aWidth�aHeight�bX�bY�bWidth�bHeight�
highestBottom�	lowestTop�aMiddle�bMiddles               rRr�Utilities.extentsAreOnSameLine�s����6��"#����"#�����Q�;�7�a�<��+�+�r�|�+�+�+�+��Q�;�7�a�<��+�+�r�|�+�+�+�+��B�L�"�,�7�
���K�	��%����{�"����{�"���w� �!�J�.��rTc��U(d/SQ$/SQnURU5(a�SUs=::aU:a�O O�[R"XU5nURURUR
UR/nUS(awUS(amUSS:XadUSS:Xa[[R"XU5R5(a1SUSUSUS	U/n[R"[RUS
5 OU$[R"U5n[R"U5(d[R "U5(aM[R""U5(d[R$"U5(a[&R("U5nO[&R("U5nURURUR
UR/$)N)rrrrrrbr
�z&WEB: Suspected bogus range extents forz(chars:raz):T)r�r�get_range_rectr��y�width�height�
get_substring�striprrgrhr
rdr�is_menu�is_list_itemr��is_list_boxr
�get_rect)	rOr\�startOffset�	endOffset�result�rectrq�parent�exts	         rRr�Utilities.getExtents�sb��������!�!�#�&�&�1��+G�i�+G��(�(��9�E�D��f�f�d�f�f�d�j�j�$�+�+�>�F��a�y�V�A�Y�6�!�9��>�f�Q�i�1�n��'�'��)�D�J�J�L�L�B��y�+�s�I�t�V�U���"�"�5�#3�#3�V�T�B��
��$�$�S�)������$�$��(@�(@��(E�(E��)�)�&�1�1�[�5L�5L�V�5T�5T��&�&�v�.�C��&�&�s�+�C����s�u�u�c�i�i����4�4rTc��U(a"U5(dg[R"U5(aggr�)r
r�r�is_mathr�s  rR�
_preserveTree�Utilities._preserveTree�s/����0�0��5�5�����s�#�#��rTc�>�URU5(d[TU]	XU5$URU5(a,SUS/n[R
"[RUS5 gURU5(dgURU5(aJURRRU5nURRRU5$[TU]	XU5R5$)NzWEB: not expanding EOCs:zhas grid descendantT�)r�r�
expandEOCs�hasGridDescendantrrgrhr�r4ri�speech_generator�generate_speech�utterances_to_stringr&)rOr\r+r,rq�
utterancesrQs      �rRr8�Utilities.expandEOCs�s�����%�%�c�*�*��7�%�c�	�B�B��!�!�#�&�&�0�#�7L�M�F����u�/�/���>���%�%�c�*�*�����c�"�"����6�6�F�F�s�K�J��<�<�0�0�E�E�j�Q�Q��w�!�#�I�>�D�D�F�FrTc��>�[TU]XU5n[R"US5nURR
R
5H nURU5nUcMXtSU'M" U$�NFr)r�textAttributesr
�get_attributes_dictri�attributeNamesDict�keysre)	rO�accr]�get_defaults�attrs�
objAttributesr[�valuerQs	        �rRrA�Utilities.textAttributes�sk�����&�s�L�A�� �4�4�S�%�@�
��<�<�2�2�7�7�9�C�!�%�%�c�*�E�� � %�a���
�:�
�rTc��/nUH9nUR"USS6nUHupVpxn	URUSXVU/5 M  M; U$)Nrr )�splitSubstringByLanguagerX)
rO�contentsr��content�split�start�end�string�language�dialects
          rR�adjustContentsForLanguage�#Utilities.adjustContentsForLanguage�sV��
���G��1�1�7�1�Q�<�@�E�9>�5��F�g��	�	�7�1�:�u�6�:�;�:?� �
�	rTc�J>�[T
U]XU5nU(dUcU$[R"U5nUbUR	U5(dU$[
R"U5n[
R"U5nURXVU5up�URSSX�45 U$�Nrrb)
r�'getLanguageAndDialectFromTextAttributesr
rdr�r�get_link_start_offset�get_link_end_offset�!getLanguageAndDialectForSubstringrX)rOr\r+r,r�r/rPrQrSrTrQs          �rRrY�1Utilities.getLanguageAndDialectFromTextAttributes�s����
�W�
<�S�y�
Y��
����I��$�$�S�)���>��!7�!7��!?�!?��I��1�1�#�6���-�-�c�2�� �B�B�6�RU�V���
�	�	�1�a��+�,��	rTc��U(aU(dg[SU5nUVs/sHoUSU:XdM
UPM nnUVs/sHoUSUs=::aUS:dMO MUPM nnU(a'US(aUSU;aURUS5$U(dJUVs/sHoRUS:XdM
UPM nnU(a'US(aUSU;aURUS5$URU5(dg[R"X5nU(aUURU5(d?UVs/sHoUSU:XdM
UPM nn[U5S:XaURUS5$gs snfs snfs snfs snf)N���rrbr
)r�indexr�r�get_child_at_offsetr�)	rOr\r]rM�
usingCacher��matches�matchr�s	         rR�findObjectInContents�Utilities.findObjectInContents�sP���(���Q����&�6�h��A�$�#�+�1�h��6�#�=�G�q��t�v�'<��!��'<��'<��G��=��U�1�X�%��(�h�"6��>�>�%��(�+�+�� '�:��1�Q�q�T�>�Q��E�:���q��e�A�h�(�&:��~�~�e�A�h�/�/��&�&�s�+�+���/�/��<����0�0��7�7�"*�<�(�Q��d�e�m�q�(�G�<��7�|�q� ��~�~�g�a�j�1�1���%7��=��;��=s3�E+�E+�E0�E0�E0�E5�+E5�/E:�?E:c�D>�[TU]U5nU(aURU5(dU$U(aURU5(dgURU5URU5:wagSUSUS/n[R
"[RUS5 U$)NzWEB: Previous object for�is�.T)r�findPreviousObjectr��getTopLevelDocumentForObjectrrgrh�rOr\r-rqrQs    �rRrj�Utilities.findPreviousObjects������+�C�0����.�.�s�3�3��M��4�1�1�&�9�9���,�,�V�4��8Y�8Y�Z]�8^�^��,�c�4���E��
���5�+�+�V�T�:��
rTc�D>�[TU]U5nU(aURU5(dU$U(aURU5(dgURU5URU5:wagSUSUS/n[R
"[RUS5 U$)NzWEB: Next object forrhriT)r�findNextObjectr�rkrrgrhrls    �rRro�Utilities.findNextObjects������'��,����.�.�s�3�3��M��4�1�1�&�9�9���,�,�V�4��8Y�8Y�Z]�8^�^��(�#�t�V�S�A��
���5�+�+�V�T�:��
rTc	���URR[U55nUbU$[RR
[RR[RR[RR[RR[RR[RR[RR[RR/	n[R"U5nXC;aSnO�U[RR :Xa0["R$"[R&"U55(+nORU[RR(:Xa4["R*"U5(aSnOUR-U5(+nX R[U5'U$r|)r8rerfrrK�	CHECK_BOX�CHECK_MENU_ITEM�MENU�	MENU_ITEM�PAGE_TAB�RADIO_MENU_ITEM�RADIO_BUTTON�PUSH_BUTTON�
TOGGLE_BUTTONr
r�rMr�is_listrd�
TABLE_CELLr�r�)rOr\r��roles�roles     rR�isNonEntryTextWidget�Utilities.isNonEntryTextWidget.s>��
�
'�
'�
+�
+�D��I�
6��
�>��I����%�%����+�+���������%�%����$�$����+�+����(�(����'�'����)�)�+��� � ��%���=��B�
�U�Z�Z�)�)�
)� �(�(��)<�)<�S�)A�B�B�B�
�U�Z�Z�*�*�
*��&�&�s�+�+����0�0��5�5��02�"�"�4��9�-��	rTc�~�U(a"U5(agURR[	U55nUbU$[R
"U5(dgUR
U5(aURR5(ag[R"U5S:�=(d [R"U5nU(awURUS5(a`[R"U5(aEURU5(d/SUS/n[ R""[ R$US5 SnGO�U(Ga�[R&"U5(Gd�[(R*R,/n[R."U5nU(a2Xe;a-SUS/n[ R""[ R$US5 SnU(aJU(aCUR1U5(a-SUS/n[ R""[ R$US5 SnU(aYUR3U5(dUR5U5(a-SUS	/n[ R""[ R$US5 SnU(aCUR7U5(a-SUS
/n[ R""[ R$US5 SnU(aCUR9U5(a-SUS/n[ R""[ R$US5 SnX0R[	U5'U$)NFTrr_z
WEB: Treatingz+as non-text: named object treated as whole.zas non-text due to role.z&as non-text: is non-entry text widget.z+as non-text: is hidden or off-screen label.z0as non-text: is non-navigable embedded document.z+as non-text: is fake placeholder for entry.)r
�is_deadrCrerf�
supports_textr�ri�browseModeIsStickyrr�rr��_treatObjectAsWholer��isCellWithNameFromHeaderrrgrh�is_live_regionrrK�LIST_BOXr�r�isHidden�isOffScreenLabel�isNonNavigableEmbeddedDocument�isFakePlaceholderForEntry)rOr\�excludeNonEntryTextWidgetsr�rq�
doNotQueryr~s       rRr��Utilities.treatAsTextObjectKs~���h�&�&�s�+�+��
�
$�
$�
(�
(��c��
3��
�>��I��%�%�c�*�*���%�%�c�*�*�d�l�l�.M�.M�.O�.O��
�
'�
'��
,�q�
0�
P�K�4K�4K�C�4P��
�$�*�*�3��3�3��8I�8I�#�8N�8N��1�1�#�6�6�%�s�,Y�Z�F����u�/�/���>��B�
��2�2�3�7�7��*�*�-�-�.�J��$�$�S�)�D��d�(�)�3�0J�K���"�"�5�#3�#3�V�T�B����0�T�5N�5N�s�5S�5S�)�3�0X�Y���"�"�5�#3�#3�V�T�B����t�}�}�S�)�)�T�-B�-B�3�-G�-G�)�3�0]�^���"�"�5�#3�#3�V�T�B����d�9�9�#�>�>�)�3�0b�c���"�"�5�#3�#3�V�T�B����d�4�4�S�9�9�)�3�0]�^���"�"�5�#3�#3�V�T�B���-/����S�	�*��	rTc�0�U(aURU5(dgURR[U55nUbU$Sn[R
"U5(ah[R"U5(aM[R"U5H1nURU5(aURU5(dM1 O SnU(a+SUS/n[R"[RUS5 X R[U5'U$)NFT�WEB:z*has name and action and no useful children)r�r=rerfr�has_explicit_namer
�supports_actionr��isUselessEmptyElement�isUselessImagerrgrh)rOr\r�r�rqs     rR�#hasNameAndActionAndNoUsefulChildren�-Utilities.hasNameAndActionAndNoUsefulChildren{s�����.�.�s�3�3��
�
6�
6�
:�
:�4��9�
E��
�>��I�
���(�(��-�-�(�2J�2J�3�2O�2O�!�/�/��4���1�1�%�8�8�D�<O�<O�PU�<V�<V��5���
��c�#O�P�F����u�/�/���>�?A�1�1�$�s�)�<��	rTc	��^�U(aURU5(dgURR[U55nUbU$[R
"U5nSnUR
5nUR[RR[RR/5 X4;Ga[R"U5(d�[RR[RR[RR [RR"[RR$[RR&[RR([RR*[RR,/	m[R."UU4Sj5nX R[U5'U$)NFc�6>�[R"U5T;$r�r
r�)r��controlss �rRr��?Utilities.isNonInteractiveDescendantOfControl.<locals>.<lambda>�s���x�7H�7H��7K�x�7WrT)r�r2rerfr
r�r��extendrrK�IMAGE�CANVASrr�rrrsr�rurwrxryrz�	TREE_ITEMr�)rOr\r�r~r}r�s     @rR�#isNonInteractiveDescendantOfControl�-Utilities.isNonInteractiveDescendantOfControl�sB�����.�.�s�3�3��
�
6�
6�
:�
:�4��9�
E��
�>��I�� � ��%��
���+�+�-��
���e�j�j�&�&��
�
�(9�(9�:�;��=��!9�!9�#�!>�!>��
�
�,�,��
�
�2�2��
�
�+�+��
�
�,�,��
�
�2�2��
�
�/�/��
�
�.�.��
�
�0�0��
�
�,�,�.�H��'�'��-W�X�B�?A�1�1�$�s�)�<��	rTc	���[RR[RR[RR[RR
[RR[RR[RR[RR[RR/	n[RR[RR[RR[RR/n[R "U5nXS;agXT;a%UR"R%5(agUS:H$U[RR&:XaG[R("U5S:Xa,UR+[R,"US55(agg[.R0"U5(agU[RR2:XaLUR5U5(aUR"R75(+$UR9U5(agU[RR:[RR<4;a[.R>"U5(agU[RR@:XagU[RRB[RRD[RRF4;aUR"R75(+$U[RRH:Xa.[.R>"U5=(d URKU5$URMU5(agUR+U5(agUROU5(agXPRQ5;al[.RR"U5(aQ[.R>"U5(a6[RT"U5HnURWU5(aM g gg)NTr_rbrF),rrKrrrsr�rurvrwrxryrzrt�MENU_BAR�TOOL_BARr�r
r�rir��ENTRYr�r�r�rr�r|�isFocusModeWidgetr�r��
COLUMN_HEADER�
ROW_HEADERr��	COMBO_BOX�EMBEDDED�TREE�
TREE_TABLE�LINK�hasUselessCanvasDescendantr��
isCustomImager�r�r�r�)rOr\r]�always�descendabler~r�s       rRr��Utilities._treatObjectAsWhole�s���*�*�&�&��*�*�,�,��*�*�%�%��*�*�&�&��*�*�%�%��*�*�,�,��*�*�)�)��*�*�(�(��*�*�*�*�,���z�z����z�z�*�*��z�z�*�*��z�z�+�+�-��
� � ��%���>�����|�|�'�'�)�)���R�<���5�:�:�#�#�#��'�'��,��1��0�0��1C�1C�C��1K�L�L����"�"�3�'�'���5�:�:�(�(�(��%�%�c�*�*��<�<�:�:�<�<�<��7�7��<�<���E�J�J�,�,�e�j�j�.C�.C�D�D��,�,�S�1�1���5�:�:�'�'�'���E�J�J�'�'������%�*�*�:O�:O�P�P��|�|�6�6�8�8�8��5�:�:�?�?�"��0�0��5�]��9X�9X�Y\�9]�]��.�.�s�3�3���)�)�#�.�.�����c�"�"���.�.�0�0�[�5M�5M�c�5R�5R��,�,�S�1�1�!�/�/��4���1�1�%�8�8� �5��rTc� �[R"U5n[R"SU5Vs/sHoDR	5PM nnS[U5pvUH(nUSUs=::aUS::dMO MUSUSS-pv O X6UXg4$s snf)Nz)\S*[^\.\?\!]+((?<!\w)[\.\?\!]+(?!\w)|\S*)rrb)r�get_all_text�re�finditer�spanr�)	rOr\r]�text�m�spans�
rangeStart�rangeEndr�s	         rR�__findSentence�Utilities.__findSentence�s����"�"�3�'��#%�;�;�/[�]a�#b�c�#b�a����#b��c� �#�d�)�H��D��A�w�&�+�D��G�+�+�'+�A�w��Q��!��H����x�(�*�>�>��
ds�Bc�^�U4SjnU(d3SUSUS3USS/n[R"[RUS5 gTRU5(d3SUSUS3USS	/n[R"[RUS5 g
[R
"U5nUcVUS[
U5p�nU"U5n
SUSUS3USSU
S
USU	S3/n[R"[RUS5 XxU	4$U[RR:Xa�[R"U5(d�[R"U5[RR[RR 4;d2["R$"SU5(aTR'U5(dVUS[
U5p�nU"U5n
SUSUS3USSU
S
USU	S3/n[R"[RUS5 XxU	4$U[RR(:XaHTR+X5(a2US-nSUSUS/n[R"[RUS5 [-SU5nU[RR(:Xa[R."X5upxn	O�U[RR:Xa[R0"X5upxn	O�U[RR2:Xa[R4"X5upxn	OQU[RR6:Xa[R8"X5upxn	O[R."X5upxn	U"U5n
SUSUS3USSU
S
USU	S3/n[R"[RUS5 U[RR:H=(a U=(a XxU	4S:HnU(aTTR;X5up�nU"U5n
SSU
S
U
SUS3/n[R"[RUS5 X�U4$XxU	4$)Nc�\>�URTRS5RSS5$)Nz[OBJ]�
�\n)�replace�EMBEDDED_OBJECT_CHARACTER�r�rOs �rR�stringForDebug�2Utilities._getTextAtOffset.<locals>.stringForDebugs(����9�9�T�;�;�W�E�M�M�d�TY�Z�ZrTr��
at offset z for�:z#'', Start: 0, End: 0. (obj is None)T)r7rrz:'', Start: 0, End: 1. (treatAsTextObject() returned False))r7rrbr�'z
', Start: z, End: riz\wrbzWEB: Line sought forz#at end of text. Adjusting offset toz7HACK: Attempting to recover from above failure. Result:)rrgrhr�rr�r�r�TextGranularity�SENTENCErr�r
r�rKrM�HEADINGr��searchr��LINE�treatAsEndOfLiner�get_line_at_offset�get_sentence_at_offset�WORD�get_word_at_offset�CHARr��_Utilities__findSentence)rOr\r]�granularityr�rq�allTextrRrPrQ�s�needSadHack�	sadString�sadStart�sadEnds`              rR�_getTextAtOffset�Utilities._getTextAtOffsets���	[���k�Z��x�t�+D�c�3�;�=�F����u�/�/���>���%�%�c�*�*��k�Z��x�t�+D�c�3�R�T�F����u�/�/���>���%�%�c�*����!(�!�S��\�3�F��v�&�A��k�Z��x�t�+D�c�3��!��J�u�g�W�S�E��;�=�F����u�/�/���>��#�%�%��%�/�/�8�8�8��AX�AX�Y\�A]�A]�� � ��%�%�*�*�*>�*>��
�
�@R�@R�)S�S��y�y���0�0�T�5L�5L�S�5Q�5Q�%,�a��W��s��"�6�*�� �+��F�8�4�/H�#�s��a�S�
�5�'����Q�?�A���"�"�5�#3�#3�V�T�B��c�)�)��%�/�/�4�4�4��9N�9N�s�9[�9[��a�K�F�,�c�3X��c�#�F����u�/�/���>��Q�����%�/�/�4�4�4�!'�!:�!:�3�!G��F�3�
�E�1�1�:�:�
:�!'�!>�!>�s�!K��F�3�
�E�1�1�6�6�
6�!'�!:�!:�3�!G��F�3�
�E�1�1�6�6�
6�!'�!?�!?��!L��F�3�!'�!:�!:�3�!G��F�3��6�"���+��F�8�4�'@�#�s��a�S�
�5�'����Q�7�9��
���5�+�+�V�T�:�"�U�%:�%:�%C�%C�C�2��2��s�#�z�1�	��*.�*=�*=�c�*J�'�I���y�)�A�O��!��J�x�j���x�q�A�C�F����u�/�/���>���.�.��c�!�!rTc�^�SX/n[R"[RUS5 U(d/$U[RR
:XaH[R"U5(a-[R"U5nU(aUS[U5U//$U[RR:XGa�[R"U5(a6[R"U5(aUnOURU5nUSSS//$URU5nUR!U5(a�["R$"U5(aaU(aZSUS/n[R"[RUS5 US[R&"U5["R$"U5//$SUS/n[R"[RUS5 SnUR)U5(a�["R$"U5(aaU(aZSUS	/n[R"[RUS5 US[R&"U5["R$"U5//$SUS	/n[R"[RUS5 Sn[R*"U5(aB["R,"U5S:Xa(UR/["R0"US5SU5$UR3XU5upXn	U(dXX�//$X(-
mUTn
X�R4:Xa0[6R8"X5nU(aUR/USU5$[>R@"S
U5Vs/sHo�RC5PM nn[E[GU4SjU55n[U5S:Xa USunnUU-
nUUUnU[U5-n	U[RRH[RRJ4;aXX�//$URMXX�//5$![:a<nS
TSUSU3n
[R<"[RU
S5 SnAGNSnAff=fs snf)Nz#WEB: Attempting to get contents forTrrbr7z#WEB: Returning name as contents forz(single-char lines)z'WEB: Returning all text as contents forz(single-word lines)zWEB: Could not get char z for 'z': u[^]+c�:>�USTs=:*=(a US:*$s $rXr�)r��stringOffsets �rRr��.Utilities._getContentsForObj.<locals>.<lambda>�s����!���(D�(D��!��(DrT)'rrgrhrr�r�r�is_timerr�r�r��is_math_relatedr3�getMathAncestorr��elementLinesAreSingleCharsr
r�r��elementLinesAreSingleWords�is_internal_framer��_getContentsForObjr�r�r�rra�	Exceptionrur�r�r�r�r�r�r�rU)rOr\r]r�rqrR�math�treatAsTextrPrQ�charr��error�msgr��ranges�stringsr�r�r�s                   @rRr��Utilities._getContentsForObjLs����7��J��
���5�+�+�V�T�:���I��%�/�/�8�8�8�[�=P�=P�QT�=U�=U��(�(��-�F���a��V��f�5�6�6��%�/�/�4�4�4��*�*�3�/�/��&�&�s�+�+��D��/�/��4�D��q�!�R�(�)�)��0�0��5�K��.�.�s�3�3��$�$�S�)�)�k�C�S�J_�`�F��&�&�u�'7�'7���F� �!�V�%?�%?��%D�h�FW�FW�X[�F\�]�^�^�C�S�J_�`���"�"�5�#3�#3�V�T�B�"���.�.�s�3�3��$�$�S�)�)�k�C�S�J_�`�F��&�&�u�'7�'7���F� �!�V�%?�%?��%D�h�FW�FW�X[�F\�]�^�^�C�S�J_�`���"�"�5�#3�#3�V�T�B�"���(�(��-�-�(�2J�2J�3�2O�ST�2T��*�*�8�+=�+=�c�1�+E�q�+�V�V�!�2�2�3��L���s����-�.�.��~��		J��,�'�D�
�5�5�5�#�7�7��D����2�2�5�!�[�I�I�$&�K�K��f�$E�F�$E�q�&�&�(�$E��F��v�D�f�M�N���w�<�1��#*�1�:� �J���Z��E��J�x�0�F��#�f�+�%�C��5�0�0�5�5�u�7L�7L�7Q�7Q�R�R���-�.�.��-�-��C�/H�.I�J�J��)�	=�,�\�N�&����E�7�S�C����� 0� 0�#�t�<�<��	=��Gs�P.�:Q7�.
Q4�81Q/�/Q4c�F�0UlURXU5n0UlU$r)r�_getSentenceContentsAtOffset�rOr\r]�useCacher�s     rR�getSentenceContentsAtOffset�%Utilities.getSentenceContentsAtOffset�s)��,.��)�
�
.�
.�s�H�
E��,.��)��	rTc��^^�U(d/$[SU5nU(a+TRXTRSS9S:waTR$[RR
nTR
XU5m[R"U5(a5[R"U5(aT$TRU5(aT$U4SjnTSupgp�U(GaU	(a�TRU5(aUS:XaO�OETR[R"U55(a[R"U5S:XaO�TR!Xg5up�TR
X�U5n[#[%U4SjU55n[#[%X\55n
U
(aUR'U
S5nX�S-SnU(dOUTSS&TSupgp�U(a	U	(aM�U"TS5(dyTSunnnnTR)UUS-
5unnTR
UUU5n[#[%U4SjU55nU(dO#TR+U5 U"TS5(dMyU(aTTlT$)	NrT�rbr_c�J>�Uupp4TRU5(dgTRU5(a$S[R"U5s=:aU::ag SUs=::aS::a%O O"SR	UR5SS5n[R"SU5nUSL$)NFrT�� rbz\S[\.\!\?]+(\s|\Z))r�r�rr��joinrOr�r�)r��xObj�xStart�xEnd�xStringrdrOs      �rR�_treatAsSentenceEnd�CUtilities._getSentenceContentsAtOffset.<locals>._treatAsSentenceEnd�s����*+�'�D�$��*�*�4�0�0���%�%�d�+�+��F�4N�4N�t�4T�0\�X\�0\��1]��F��a���(�(�7�=�=�?�1�2�#6�7���I�I�3�W�=�E���$�$rTc�>�UT;$rr��r��objectss �rRr��8Utilities._getSentenceContentsAtOffset.<locals>.<lambda>�s
���1�G�+;rTrbc�>�UT;$rr�rs �rRr�r
�s
���A�W�,<rT)rrerFrr�r�r�rr��
is_focused�$isContentEditableWithEmbeddedObjectsr�r
rdrr�r�r�r�r`r�r�)rOr\r]r�r�r�firstObj�
firstStart�firstEnd�firstString�prevObj�pOffset�onLeft�
endsOnLeft�i�lastObj�	lastStart�lastEnd�
lastStringr��nOffset�onRightr	s`                     @rRr��&Utilities._getSentenceContentsAtOffset�sE�����I��Q������(�(���!>�!>�4�)�Q�TV�W��4�4�4��+�+�4�4���)�)�#�{�C���"�"�3�'�'��%�%�c�*�*����8�8��=�=���	%�7>�a�j�3��h��;��&�&�x�0�0���?��#��(�(��)<�)<�X�)F�G�G��=�=�h�G�1�L��#�<�<�X�R��G��,�,�W�{�K�F��&�!;�V�D�E�F��f�%8�A�B�J���L�L��B��0���!�������!�G�A�a�L�:A�!�*�7�H�(�)�;�;�.&�g�b�k�2�2�6=�b�k�3�G�Y���#�8�8��'�A�+�N��G�W��-�-�g�w��L�G��6�"<�g�F�G�G����N�N�7�#�&�g�b�k�2�2��,3�D�)��rTc�F�0UlURXU5n0UlU$r)r�_getCharacterContentsAtOffsetr�s     rR�getCharacterContentsAtOffset�&Utilities.getCharacterContentsAtOffset�s)��,.��)�
�
/�
/��X�
F��,.��)��	rTc��U(d/$[SU5nU(a+URXURSS9S:waUR$[RR
nUR
XU5nU(aXPlU$)NrTr�r_)rrerIrr�r�r�)rOr\r]r�r�r	s      rRr�'Utilities._getCharacterContentsAtOffset�s����I��Q������(�(���!?�!?�D�)�R�UW�X��5�5�5��+�+�0�0���)�)�#�{�C���-4�*��rTc�F�0UlURXU5n0UlU$r)r�_getWordContentsAtOffsetr�s     rR�getWordContentsAtOffset�!Utilities.getWordContentsAtOffset�s)��,.��)�
�
*�
*�3��
A��,.��)��	rTc��^^^^�T(d/$[SU5nU(aJTRTUTRSS9S:wa*TRTUTRS5 TR$[R
RnTRTX$5mTRTX"S-5mUUUU4SjnTSupgp�TRXg5up�U
(a�U	(a�X�:wa�[R"X�5SnU(aUR5(aO�TRX�U5n
[[X]55n
U
(dOcTRTSU
S5(aTR!S5 U
TSS&TSupgp�TRXg5up�U
(aU	(aX�:waM�TSup�nnU(a�U(a�USR5(d�TR#UUS-
5unnUU:XaO�TRUUU5nU(a"TRTSUS5(aUSSn[[UU55nU(dOBTR%U5 TSup�nnU(a!U(aUSR5(dM�TSupgp�US:Xa![&R("U5(aTS/mU(aTTlTRTUTS5 T$)	NrTr�r_z
Word (cached)rbc�6>�UT;ag[R"T5(agUupp4X#:XdU(dg[R"T5(a"[R"U5(aTU:wagT	RXUS-5nT	R	TU5$)NFrb)r�
is_text_input�is_table_cell_or_headerrr)
r�rrrr�xExtents�extentsr\r	rOs
      ����rR�_include�4Utilities._getWordContentsAtOffset.<locals>._includes�����G�|���(�(��-�-��*+�'�D�$��~�W���2�2�3�7�7��6�6�t�<�<��������t�V�a�Z�@�H��,�,�W�h�?�?rTzWord (not cached))rrerH�_debugContentsInforr�r�r�rr�rr�r�r�r��_contentIsSubsetOfrYr�r�rr()rOr\r]r�r�r.rrrrrrr�rrrrrr�rrr-r	s``                   @@rRr%�"Utilities._getWordContentsAtOffsets������I��Q������(�(����!:�!:�t�)�M�PR�S��'�'��V�T�5N�5N�P_�`��0�0�0��+�+�0�0���)�)�#�v�C���/�/�#�v��z�:��	@�	@�&7>�a�j�3��h��8�8��N����+�'�*=��1�1�'�C�A�F�D��4�<�<�>�>���,�,�W�{�K�F��&��2�3�F����&�&�w�q�z�6�"�:�>�>����A��!�G�A�a�L�:A�!�*�7�H�(�#�<�<�X�R��G��+�'�*=�$3:�"�+�/��G�Z��*�Z��^�-C�-C�-E�-E�#�8�8��'�A�+�N��G�W��'�!���-�-�g�w��L�G��4�2�2�7�1�:�w�r�{�K�K�!�!�B�-���6�(�G�4�5�G����N�N�7�#�6=�b�k�3�G����*�Z��^�-C�-C�-E�-E�"7>�a�j�3��h���?�{�7�7��A�A��q�z�l�G��(/�D�%�����V�W�6I�J��rTc�F�0UlURXU5n0UlU$r)r�_getObjectContentsAtOffsetr�s     rR�getObjectContentsAtOffset�#Utilities.getObjectContentsAtOffsetTs)��,.��)�
�
,�
,�S�(�
C��,.��)��	rTc�^^^^�T(d/$[R"T5(a*Sn[R"[RUS5 /$[SU5nU(aHUR
TX RSS9S:wa)URTX RS5 UR$[R"T5mUU4SjmUUUU4SjnURTUS5mT(d0S	TS
U3/n[R"[RUS5 /$TSupxp�URXyS-
5up�U(amURX�S5n
[[X]55n
U
(dO?TR!U
5 TSSTSSp�URXyS-
5up�U(aMmU(aTUlURTUTS
5 T$)Nz<ERROR: Cannot get object contents at offset for dead object.Trr�r_zObject (cached)c�Z>�U(dgUT:XagT"[R"U55$r�)r
rd)r��_isInObjectr\s ��rRr9�9Utilities._getObjectContentsAtOffset.<locals>._isInObjectns)������C�x���x�2�2�1�5�6�6rTc�>�UT;agUupp4X#:XagT(a"[R"U5(aTU:wagT"U5$r�)r�is_landmark)	r�rrrrr9r\�
objIsLandmarkr	s	     ����rRr.�6Utilities._getObjectContentsAtOffset.<locals>._includeusF����G�|��*+�'�D�$��~����!8�!8��!>�!>�3�$�;���t�$�$rTz%ERROR: Cannot get object contents forr�rbr
zObject (not cached))r
r�rrurhrrerEr0rr<r�rgr�r�r�r�)rOr\r]r�r�r.rqrrrrr�rrr9r=r	s `            @@@rRr4�$Utilities._getObjectContentsAtOffsetZs������I����C� � �P�C����� 0� 0�#�t�<��I��Q������(�(���!<�!<��)�O�RT�U��'�'���!<�!<�>O�Q��2�2�2�#�/�/��4�
�	7�	%�	%��)�)�#�v�t�<���=�s�j�QW�PX�DY�Z�F����u�/�/���>��I�29�"�+�/��G��4�4�W��k�J�����-�-�g��E�G��6�(�4�5�G����N�N�7�#�&�r�{�1�~�w�r�{�1�~�W�#�8�8��A�+�N��G��g��*1�D�'�����V�W�6K�L��rTc��Uup4pVUupxp�X7:Xa9[[XE55n[[X�55nURU5$gr�)�set�range�issubset)
rO�contentA�contentB�objA�startA�endA�stringA�objB�startB�endB�stringB�setA�setBs
             rRr1�Utilities._contentIsSubsetOf�sK��&.�#��d�&.�#��d��<��u�V�*�+�D��u�V�*�+�D��=�=��&�&�rTc���[R[R:agSUSUSUS/n[R"[RUS5 Sn[	U5Hnunup�p�URX�U
5nS	US
U	SU
SUS
US3nU[R"X�S5-
n[R"[RUS5 Mp g![an
SU
S3nSn
A
NlSn
A
ff=f)N�WEB: �for�	at offsetr�Tz        z(exception: �)z     z	. chars: �-z: 'z
' extents=r�F)
rrh�
debugLevelrg�	enumeraterr�r�object_details_as_stringru)rOr\r]rM�contentsMsgrq�indentrrErPrQrRr-r�r�s               rRr0�Utilities._debugContentsInfo�s������e�.�.�.���;��s�K���M��
���5�+�+�V�T�:���,5�h�,?�(�A�(��C�
2��/�/�#�c�:���!��I�e�W�A�c�U�#�f�X�Z��y�PR�S�C��'�@�@��e�T�T�C����� 0� 0�#�t�<�-@���
2�(���q�1���
2�s�*C�
C-�C(�(C-c�f�URU5(dg[R"U5(dgURU5(agU[R
"U5:Xa.SUSUS/n[R"[RUS5 g[R"X5SnX@R:XawURXS-
U5nURXUS-5nURXV5nSUSUSUS	U(+/n[R"[RUS5 U(+$g)
NFrRr]z(is end of line: offset is characterCountTrrbzis [obj]. Same line: zIs end of line: )
r
r
r�r�rr�rrgrhr�r�rr)rOr\r]rqr��prevExtents�thisExtents�sameLines        rRr��Utilities.treatAsEndOfLine�s���8�8��=�=���%�%�c�*�*���?�?�3�����V�/�/��4�4��s�H�f�6`�a�F����u�/�/���>���-�-�c�:�1�=���1�1�1��/�/�#��z�6�B�K��/�/�#�v��z�B�K��0�0��J�H��s�H�f�6M�� 2��L�B�F����u�/�/���>��<��rTc�F�0UlURXX45n0UlU$r)r�_getLineContentsAtOffset)rOr\r]�
layoutModer�r�s      rR�getLineContentsAtOffset�!Utilities.getLineContentsAtOffset�s)��,.��)�
�
*�
*�3�
�
M��,.��)��	rTc��^^^ ^!^"�[R"5nT(d/$[R"T5(a*Sn[R"[R
US5 /$[
SU5n[R"T5(d[R"T5(a8TRT5(d"[R"TU5nU(aUmSnU(aJTRTUTRSS9S:wa*TRTUTRS5 TR$UcE[ R""5R%S5=(d TR&R)5n/m"US:�a.TR+TU5(aTR-TUS-
U5m OTR-TX"S-5m TR/T5(a+TR1T5nU(aTR-USS5m [R2"T[R45m!U UU!U"U4S	jn	[6R8R:n
TR=TX*5m"U(d$U(aT"TlTRTUT"S
5 T"$T"(a
T"S(d,ST/n[R>"[R
US5 /$T"Sup�p�T SS:Xa	T S
S:Xd[R@"U5(aTR-X�U5m T"Sunnnn[RB"U5(aTREU5unnUS-
nTRGT5nTRIX�5unnTRKUUS-
5unn[R"5nU(Ga&TRGU5U:XGa[LRN"UU5SnURQ5(aTRIUU5unn[LRN"UU5SnUS:XaUU:XaO�TR=UUU
5n[UU	U55nU(dOuTRWT"SUS5(aT"RYS5 UT"SS&T"SST"SSp�TRIX�5unnU(aTRGU5U:XaGM[R"5nSUU-
SS3n[R"[R
US5 [R"5nU(GafTRGU5U:XGaP[LRN"UU5SnURQ5(aTRKUU5unn[LRN"UU5SnUS:XaUU:XaO�TR=UUU
5nU(a"TRWT"SUS5(aUSSn[S[UU	U55nU(dO�T"R[U5 T"SST"SSnn[RB"U5(aTREU5unnUS-
nTRKUUS-
5unnU(aTRGU5U:XaGMP[R"5nSUU-
SS3n[R"[R
US5 T"Sup�p�US:Xa []T"5S:�aT"RYS5 U(aT"TlS[R"5U-
SS3n[R"[R
US5 TRTUT"S5 0Tl/T"$)Nz:ERROR: Cannot get line contents at offset for dead object.Trr�r_z
Line (cached)rdrbc�>�UT;agUupp4X#:XagTRXUS-5nT	U:wGa�[R"T	5(a[R"U5(agTRT	5(a�TRU5(al[R
"U[R5nT
(dU(aT
U:wag[TSUS-
5S::a[TSUS-
5S::agO�TRT	5TRU5:wag[R"T	5(a[R"U5(ag[R"T	5(a[R"T	5(ag[R"U5(a[R"U5(ag[R"U5(d[R"T	5(aTRTUTS5nU$TR!U5(aTRTXUS5nU$TRTU5nU$)NFrbrr )rrr<r�r
r��is_landmark_bannerr�isBlockListDescendant�is_tree_relatedr�r
�has_no_sizer3r�r�isTextSubscriptOrSuperscript)
r�rrrrr,�
xObjBanner�
onSameLiner-r\�	objBannerr	rOs
        �����rRr.�4Utilities._getLineContentsAtOffset.<locals>._includes�����G�|��*+�'�D�$��~�����t�V�a�Z�@�H��d�{��*�*�3�/�/�K�4K�4K�D�4Q�4Q� ��;�;�s�#�#����D�(9�(9�!)�!7�!7��k�>\�>\�!]�J�!�Z�Y�*�5L�$��7�1�:����3�4��9�c�'�!�*�x�XY�{�BZ�>[�_`�>`�$���/�/��4��8R�8R�SW�8X�X� � �0�0��5�5�+�:U�:U�VZ�:[�:[� � �+�+�C�0�0�[�5L�5L�S�5Q�5Q� � �+�+�D�1�1�k�6M�6M�d�6S�6S� ��"�"�4�(�(�K�,G�,G��,L�,L�!�6�6�w��'�RS�*�U�
�
��	�2�2�4�8�8�!�6�6�w��ST�+�V�
���"�6�6�w��I�
��rTzLine (not layout mode)z WEB: Error. No objects found forr
r r�z)INFO: Time to get line contents on left: �.4fr�z*INFO: Time to get line contents on right: z!INFO: Time to get line contents: zLine (layout mode))0�timer
r�rrurhrr�is_tool_bar�is_menu_barr�rrarerGr0r	r��get_settingrir�r�r�isInlineListDescendant�listForInlineListDescendantr�rirr�r�r�rgr�r3r�r�r�r�rr�r�r�r�r1rYr�r�r)#rOr\r]rdr��
start_timer�r��	containerr.r�rqrrrrrrrrr�rrr�r�
prevStartTimer�r�prevEndTime�
nextStartTimer�nextEndTimer-rpr	s#``                              @@@rRrc�"Utilities._getLineContentsAtOffset�s�����Y�Y�[�
���I����C� � �N�C����� 0� 0�#�t�<��I��Q�����#�#�C�(�(�K�,C�,C�C�,H�,H��0�0��5�5��3�3�C��@�E��������(�(����!:�!:�t�)�M�PR�S��'�'����!:�!:�O�M��0�0�0���)�5�5�7�C�C�L�Q�.��<�<�+�+�-�
����A�:�$�/�/��V�<�<��o�o�c�6�A�:�v�>�G��o�o�c�6�A�:�>�G��&�&�s�+�+��8�8��=�I���/�/�)�Q��:���*�*�3��0N�0N�O�	�#	�#	�J�+�+�0�0���)�)�#�v�C����,3��)��#�#�C���:R�S��N��G�A�J�8�#�>�F����u�/�/���>��I�6=�a�j�3��h��A�J�!�O���
�a��K�4O�4O�PX�4Y�4Y��o�o�h�H�E�G�29�"�+�/���G�Z����w�'�'�#�/�/��8��G�W��q�L�G��,�,�S�1���8�8��N�����4�4�W�g��k�J�����	�	��
��$�3�3�G�<��H��1�1�'�7�C�A�F�D��|�|�~�~�#'�#@�#@��'�#R� ����1�1�'�7�C�A�F�D��t�|��G� 3���,�,�W�g�{�K�F��&��6�2�3�F����&�&�w�q�z�6�"�:�>�>����A��!�G�A�a�L�#*�1�:�a�=�'�!�*�Q�-�j�#�<�<�X�R��G�W�'�$�3�3�G�<��H�*�i�i�k��9�+�
�:U�VY�9Z�Z[�\��
���E�,�,�c�4�8��	�	��
��$�3�3�G�<��H��1�1�'�7�C�A�F�D��|�|�~�~�#'�#<�#<�W�g�#N� ����1�1�'�7�C�A�F�D��t�|��7� 2���-�-�g�w��L�G��4�2�2�7�1�:�w�r�{�K�K�!�!�B�-���6�(�G�4�5�G����N�N�7�#�&�r�{�1�~�w�r�{�1�~�W�G��"�"�7�+�+�#'�#3�#3�G�#<� ����1���#�8�8��'�A�+�N��G�W�/�$�3�3�G�<��H�2�i�i�k��:�;��;V�WZ�:[�[\�]��
���E�,�,�c�4�8�6=�a�j�3��h��$��3�w�<�!�#3��K�K��N��(/�D�%�1�$�)�)�+�
�2J�3�1O�q�Q��
���E�,�,�c�4�8�����V�W�6J�K�,.��)��rTc��UcUR5upSUSU/n[R"[RUS5 [R
"U5(dySUS/n[R"[RUS5 UR
5 UR5upSUSU/n[R"[RUS5 URXX45nU(a
US(d/$USSUSSp�S	USU/n[R"[RUS5 [R"5RS
5(+n	URXxU	5upU(dXU(aQSUSUS/n[R"[RUS5 UR
5 URXxU	5upSUSU/n[R"[RUS5 URXX45n
U
(d.S
USU/n[R"[RUS5 /$Xj:XaRURXS5upSUSU/n[R"[RUS5 URXX45n
Xj:Xa�[R"U5n[R"[RUS5 US:�ah[R"U5nURX�S5upSUSU/n[R"[RUS5 URXX45n
U
$)N�WEB: Current context is: �, T�WEB: Current context obj�is not valid. Clearing cache.�WEB: Now Current context is: rrbzWEB: First context on line is: �speakBlankLineszWEB: Previous context is: �. Trying again.�%WEB: Could not get line contents for �&WEB: Got same line. Trying again with �WEB: Trying again with)r�rrgrhr
rWrmrer	r�rvr�rrZrd)
rOr\r]rdr�rq�liner�firstOffsetr�rMrPr/s
             rR�getPreviousLineContents�!Utilities.getPreviousLineContents�s����;��.�.�0�K�C�-�s�D�&�A��
���5�+�+�V�T�:�� � ��%�%�0�#�7V�W�F����u�/�/���>��#�#�%��.�.�0�K�C�5�s�D�&�I�F����u�/�/���>��+�+�C��N����a���I� $�Q���
�D��G�A�J�+�3�X�t�[�Q��
���5�+�+�V�T�:�(�4�4�6�B�B�CT�U�U�	��*�*�8�)�L����x�2�C��v�GX�Y�F����u�/�/���>��#�#�%��.�.�x�i�P�K�C�.��T�6�B��
���5�+�+�V�T�:��/�/��Z�R���=�s�D�&�Q�F����u�/�/���>��I����.�.�s�D�A�K�C�>��T�6�R�F����u�/�/���>��3�3�C��V�H����5�5�c�:�E����u�/�/���>���z�!�,�,�S�1��"�2�2�6�$�G���2�C��v�F���"�"�5�#3�#3�V�T�B��7�7��Z�Z���rTc��UcUR5upSUSU/n[R"[RUS5 [R
"U5(dySUS/n[R"[RUS5 UR
5 UR5upSUSU/n[R"[RUS5 URXX45nU(a
US(d/$USSUSS	S
-
p�URU5n	U	(aURU	5upxSUSU/n[R"[RUS5 [R"5RS5(+n
URXxU
5upU(dXU(aQS
USUS/n[R"[RUS5 UR
5 URXxU
5upS
USU/n[R"[RUS5 URXX45nXk:XaRURXS5upSUSU/n[R"[RUS5 URXX45nXk:Xa�[R"U5nUS:�ah[R "U5n
URX�S5upSUSU/n[R"[RUS5 URXX45nU(d.SUSU/n[R"[RUS5 /$U$)Nr�r�Tr�r�r�rr_r
rbzWEB: Last context on line is: r�zWEB: Next context is: r�r�r�r�)r�rrgrhr
rWrmrer�r�r	r�rvr�rr[rd)rOr\r]rdr�rqr�r�
lastOffsetr�r�rMrQr/s              rR�getNextLineContents�Utilities.getNextLineContents�s����;��.�.�0�K�C�-�s�D�&�A��
���5�+�+�V�T�:�� � ��%�%�0�#�7V�W�F����u�/�/���>��#�#�%��.�.�0�K�C�5�s�D�&�I�F����u�/�/���>��+�+�C��N����a���I�"�2�h�q�k�4��8�A�;��?���#�#�G�,���"&�"2�"2�4�"8��G�2�G�T�:�N��
���5�+�+�V�T�:�(�4�4�6�B�B�CT�U�U�	��&�&�w�I�F����w�.��T�6�CT�U�F����u�/�/���>��#�#�%��*�*�7�	�J�K�C�*�C��v�>��
���5�+�+�V�T�:��/�/��Z�R�����*�*�3��=�K�C�>��T�6�R�F����u�/�/���>��3�3�C��V�H����1�1�#�6�C��a�x�!�,�,�S�1��"�.�.�v�D�A���2�C��v�F���"�"�5�#3�#3�V�T�B��7�7��Z�Z���=�s�D�&�Q�F����u�/�/���>��I��rTc���[R"U5SnU(dgU(a"URUR5(dU$U(d"UR	UR5(dU$[[
[R"U555nU(dUR5 UH4nUR[R"X5U5nU(dM2Us $ gr�)r�get_selected_text�
startswithr��endswithr�rBr
r��reverse�_findSelectionBoundaryObjectr�)rOr��	findStartrR�indicesrr-s       rRr��&Utilities._findSelectionBoundaryObjects����)�)�$�/��2�����V�.�.�t�/M�/M�N�N��K������1O�1O�!P�!P��K��u�X�5�5�d�;�<�=����O�O���A��6�6�x�7I�7I�$�7R�T]�^�F��v��
��
rTc�P�URUS5nURUS5nX#4$r|)r�)rOr��obj1�obj2s    rR�_getSelectionAnchorAndFocus�%Utilities._getSelectionAnchorAndFocuss.���0�0��t�<���0�0��u�=���z�rTc��U(aU(d/$[R"U5(a*Sn[R"[RUS5 /$SnSn/n[R
"U5n[
[R"U5[R"U55Hon[R"Xx5n	[R"U	5(dM6URU	5 URURX�U55 X&;dMo O X!:XaU$X&;a2URU5 URURX$U55 [R
"U5n
[R"U5n[R"X�S-5=(d UnURU5n
X�:XaU
S-
n
USU
nU$![ a U$f=f)Nz/INFO: Cannot get subtree: Start object is dead.Tc�
�USL$rr��r�s rRr.�'Utilities._getSubtree.<locals>._include+s���D�=� rTc�8�[R"U5(+$r)r�is_web_elementr�s rR�_exclude�'Utilities._getSubtree.<locals>._exclude.s��"�1�1�!�4�4�4rTrb)r
r�rrurhrdrB�get_index_in_parentr�r�rr�rXr��findAllDescendantsr`�
ValueError)rO�startObj�endObjr�r.r��subtree�startObjParentrr��endObjParent�endObjIndexr�endIndexs              rR�_getSubtree�Utilities._getSubtree"s����V��I����H�%�%�C�C����� 0� 0�#�t�<��I�	!�	5���!�,�,�X�6���x�3�3�H�=� �0�0��@�B�A��&�&�~�9�E��-�-�e�4�4���N�N�5�!��N�N�4�2�2�5�H�M�N�� ��B����N�� ��N�N�6�"��N�N�4�2�2�6�X�N�O��*�*�6�2���2�2�6�:���$�$�\��?�C�M�v��	)��}�}�W�-�H�� ��A�
���i�x�(�G�����	����	�s�(G
�

G�Gc��>^^�TRU5(aTRR5(a[TT]U5$TRR
R
SS5up4TRU5upVXV4TRR
S'U4SjnTRX45nXS:XaXd:XaUmOGTRXV5n	[[U5RU	5[R"U5S9mT(dgTHRn
X�XEU4;a8[R"U
U4Sj5(a[ R""U
5 MC[TT]X�5 MT g)N�selectionAnchorAndFocus)NNc�x>�TR[R"U5[R"U55$r)�pathComparisonr
�get_path)r�r�rOs  �rR�_cmp�1Utilities.handleTextSelectionChange.<locals>._cmp\s-����&�&�x�'8�'8��'>��@Q�@Q�RV�@W�X�XrT)r[Fc�>�UT;$rr�)r��descendantss �rRr��5Utilities.handleTextSelectionChange.<locals>.<lambda>ks
����[�@PrTT)r�rir�r�handleTextSelectionChange�point_of_referencerer�r��sortedrA�union�	functools�
cmp_to_keyr
r�r�update_cached_selected_text)
rOr\�speakMessage�oldStart�oldEndrPrQr��
oldSubtree�
newSubtree�
descendantr�rQs
`          @�rRr��#Utilities.handleTextSelectionChangeSs2����%�%�c�*�*�d�l�l�.F�.F�.H�.H��7�4�S�9�9�
�L�L�+�+�/�/�0I�<�X�	���5�5�c�:�
��FK�\����'�'�(A�B�	Y��%�%�h�7�
�����$�K��)�)�%�5�J� ��Z��!6�!6�z�!B�	�H\�H\�]a�Hb�c�K���%�J��F�3�!?�?��)�)�*�6P�Q�Q��2�2�:�>���1�*�K�&�rTc�\�U(d#[R"5R5nURR	[U55nUbU$UR
U5nU(dURU5(aUnURU5nX R[U5'U$r)	rr�r�rrerfr�r��isTopLevelWebAppr�s    rR�inTopLevelWebApp�Utilities.inTopLevelWebApprs�����+�+�-�@�@�B�C�
�
#�
#�
'�
'��S�	�
2��
�>��I��,�,�S�1���D�O�O�C�0�0��H�
�
"�
"�8�
,��,.���t�C�y�)��	rTc�b�[R"U5(a�UR[R"U55(dj[
R"U5n[U=(a URS55nSUSUSUS/n[R"[RUS5 U$g)N�httpr�zis top-level web application:z(URI:rUTF)rr~r�r
rdr�get_uri�boolr�rrgrh)rOr\�urir�rqs     rRr��Utilities.isTopLevelWebApp�s����"�"�3�'�'��,�,�X�-@�-@��-E�F�F��$�$�S�)�C��c�4�c�n�n�V�4�5�B��c�#B�B��QT�VY�Z�F����u�/�/���>��I�rTc��URU5(dg[R"U5(a[R"U5$[R"U5(aURU5(+$gr�)�isWebAppDescendantr�is_tool_tiprr}r�r�s  rR�"forceBrowseModeForWebAppDescendant�,Utilities.forceBrowseModeForWebAppDescendant�s`���&�&�s�+�+���"�"�3�'�'��)�)�#�.�.��&�&�s�+�+��-�-�c�2�2�2�rTc�6�[R"U5(a,SUS/n[R"[RUS5 g[R
"U5(ab[R"U5(aG[R"U5(d,SUS/n[R"[RUS5 g[RR[RR[RR[RR[RR[RR[RR [RR"[RR$[RR&[RR([RR*[RR,[RR.[RR0[RR2/n[4R6"U5nXC;a,SUS/n[R"[RUS5 gU[RR8[RR:4;a[[<R>"[<R@"U55(a,SUS/n[R"[RUS5 g[RB"X5(a,SUS/n[R"[RUS5 g[RD"X5(a,SUS	/n[R"[RUS5 g[RRF[RR8[RR:/nXE;a�URIU5(dkURKU5(dU[LRN"URQ55(d,SUS
/n[R"[RUS5 gURSU5(a,SUS/n[R"[RUS5 gURUU5(a,SUS/n[R"[RUS5 gURWU5(a,SUS
/n[R"[RUS5 gURYU5(a,SUS/n[R"[RUS5 gg)Nr�z*is focus mode widget because it's editableTz:is focus mode widget because it's expandable and focusablez$is focus mode widget due to its rolez1is not focus mode widget because it's layout onlyFz0is focus mode widget because it's a listbox itemz5is focus mode widget because it's a button with popupz4is focus mode widget based on presumed functionalityz3is focus mode widget because it's a grid descendantz3is focus mode widget because it's a menu descendantz6is focus mode widget because it's a toolbar descendantz2is focus mode widget because it's content editable)-rr�rrgrh�
is_expandabler�r�rrKr�r�r�rtrursrwrv�
PASSWORD_TEXT�PROGRESS_BAR�SLIDER�SPIN_BUTTONr�r�r�r�r
r�r|�TABLEr�is_layout_table�	get_table�is_list_box_item�is_button_with_popupr�r�r�r�is_pdfrc�isGridDescendant�isMenuDescendant�isToolBarDescendantr
)rOr\rq�alwaysFocusModeRolesr~�focusModeRoless      rRr��Utilities.isFocusModeWidget�s���"�"�3�'�'��c�#O�P�F����u�/�/���>���$�$�S�)�)�k�.F�.F�s�.K�.K��&�&�s�+�+��c�#_�`�F����u�/�/���>�� %�
�
� 4� 4� %�
�
� 0� 0� %�
�
� 3� 3� %�
�
��� %�
�
� 4� 4� %�
�
� :� :� %�
�
� :� :� %�
�
� 3� 3� %�
�
� 8� 8� %�
�
� 7� 7� %�
�
� 1� 1� %�
�
� 6� 6� %�
�
� 3� 3� %�
�
� 4� 4� %�
�
� 5� 5� %�
�
��� 1��"� � ��%���'��c�#I�J�F����u�/�/���>���E�J�J�)�)�5�:�:�+;�+;�<�<��&�&�w�'8�'8��'=�>�>��c�#V�W�F����u�/�/���>���'�'��2�2��c�#U�V�F����u�/�/���>���+�+�C�6�6��c�#Z�[�F����u�/�/���>���*�*�-�-��*�*�/�/��*�*�*�*�,���!��*�*�3�/�/��;�;�C�@�@��$�$�T�%7�%7�%9�:�:��c�#Y�Z�F����u�/�/���>��� � ��%�%��c�#X�Y�F����u�/�/���>��� � ��%�%��c�#X�Y�F����u�/�/���>���#�#�C�(�(��c�#[�\�F����u�/�/���>���4�4�S�9�9��c�#W�X�F����u�/�/���>��rTc���[RR[RR[RR[RR
[RR[RR[RR[RR[RR[RR[RR[RR[RR[RR[RR [RR"[RR$[RR&[RR([RR*[RR,[RR.[RR0[RR2[RR4/nU$r)rrK�ARTICLE�CAPTIONr��COMMENT�CONTENT_DELETION�CONTENT_INSERTION�
DEFINITION�DESCRIPTION_LIST�DESCRIPTION_TERM�DESCRIPTION_VALUE�DOCUMENT_FRAME�DOCUMENT_WEB�FOOTER�FORMr�rLrM�MARK�	PARAGRAPHr��SECTION�STATIC�
SUGGESTION�TEXTr|)rOr}s  rRr�� Utilities._textBlockElementRoles�sM�����#�#����#�#����)�)����#�#����,�,����-�-����&�&����,�,����,�,����-�-����*�*����(�(����"�"���������#�#���������%�%���������%�%����&�&����#�#����"�"����&�&���������&�&�1(��4�rTc�b>�U(aURU5(d[TU]	XU5$/$r)r�r�unrelatedLabels)rOr��onlyShowing�minimumWordsrQs    �rRr�Utilities.unrelatedLabelss-�����/�/��5�5��7�*�4�l�K�K��	rTc��U(aURU5(dgURR[U55nUbU$Sn[R
"U5(aDUR
U5(d.[R"U[R5HnSn O X R[U5'U$r�)
r�r+rerfrr�r�r
r�r3�rOr\r�r�s    rR�isFocusableWithMathChild�"Utilities.isFocusableWithMathChilds�����.�.�s�3�3��
�
+�
+�
/�
/��S�	�
:��
�>��I�
���#�#�C�(�(��O�O�C�(�(�!�/�/��[�5H�5H�I�����J�57�&�&�t�C�y�1��	rTc�\�URU5(dg[R"U5$r�)r
rrr�s  rR�isFocusedWithMathChild� Utilities.isFocusedWithMathChild#s'���,�,�S�1�1���%�%�c�*�*rTc��U(aURU5(dgURR[U55nUbU$[R
"U5nUR
5nX4;aSnO�[R"U5(dSnO�[R"U5(aSnO�[R"U5(aSnOk[R"U5(aSnOMURU5(aSnO4[R"U5(dURU5(+nOSnX R[U5'U$r�)r�r rerfr
r�r�r�rr��is_grid_cell�is_documentr�r�r�)rOr\r�r~�textBlockElementss     rRr��Utilities.isTextBlockElement(s����.�.�s�3�3��
�
%�
%�
)�
)�$�s�)�
4��
�>��I�� � ��%�� �7�7�9���(��B��'�'��,�,��B�
�
$�
$�S�
)�
)��B�
�
%�
%�c�
*�
*��B�
�
$�
$�S�
)�
)��B�
�
�
��
$�
$��B��)�)�#�.�.��=�=�c�B�B�B��B�.0� � ��c��+��	rTc��[R"U5(a?URU5(d)URRR5(+$gr�)r�
is_table_cellr�ri�caret_navigation�'last_input_event_was_navigation_commandr�s  rR�_advanceCaretInEmptyObject�$Utilities._advanceCaretInEmptyObjectFsB���$�$�S�)�)�$�2H�2H��2M�2M��|�|�4�4�\�\�^�^�^�rTc��^
�U(aURU5(dg[R"U5(ag[R"U5(a4Ub1[R
"XUS-5nU(aX0R:wag[R"U5n[R"U5(aU(dgURR[U55nUbU$URR[R"U55m
T
(a?U(dSnO5U
4Sjn[[R "X5Vs/sHowPM sn5nU(dm[R""U5nURRU5m
T
(a5U
4Sjn	[[R "X�5Vs/sHowPM sn5nXPR[U5'U$s snfs snf)NFrbTc�L>�USL=(a [R"U5T;$rr��r��
validRoless �rR�pred1�#Utilities.treatAsDiv.<locals>.pred1e�"����D�=�S�X�->�->�q�-A��-S�SrTc�L>�USL=(a [R"U5T;$rr�rs �rR�pred2�#Utilities.treatAsDiv.<locals>.pred2nr rT)r�r�is_description_listr{rr%r�r
r��is_panelrDrerfrNr�r�r�rd)rOr\r]rR�
childCountr�rr�r/r"rs          @rR�
treatAsDiv�Utilities.treatAsDivLs������.�.�s�3�3���*�*�3�/�/�����s�#�#��(:��)�)�#�v��z�B�F��&�$B�$B�B���-�-�c�2�
�����$�$�Z��
�
�
�
!�
!�$�s�)�
,��
�>��I��*�*�.�.�x�/@�/@��/E�F�
�����T��h�&<�&<�S�&H�I�&H��1�&H�I�J����(�(��-�F��.�.�2�2�6�:�J��T��h�&<�&<�V�&K�L�&K��1�&K�L�M��&(����c��#��	��J��Ms�G/�G4c��>�U(aURU5(d[TU]	U5$[R"U5UR5;ag[R"U5$r�)r�r�isContentErrorr
r�r�r�is_invalid_entryr�s  �rRr*�Utilities.isContentErrorvsV�����.�.�s�3�3��7�)�#�.�.����S�!��)D�)D�)F�F���+�+�C�0�0rTc�T�[R"U[R5nUSL$r)r
r�r�is_inline_iframe)rOr\�ancestors   rR�isInlineIframeDescendant�"Utilities.isInlineIframeDescendants%���)�)�#�{�/K�/K�L���t�#�#rTc��[R"U[R5nU(a"U5(dgUSU:H$r@�r
r�r�is_inline_suggestionr��rOr\�
suggestions   rR�$isFirstItemInInlineContentSuggestion�.Utilities.isFirstItemInInlineContentSuggestion�s?���+�+�C��1Q�1Q�R�
��x�7�7�
�C�C���!�}��#�#rTc��[R"U[R5nU(a"U5(dgUSU:H$)NFr_r3r5s   rR�#isLastItemInInlineContentSuggestion�-Utilities.isLastItemInInlineContentSuggestion�s?���+�+�C��1Q�1Q�R�
��x�7�7�
�C�C���"�~��$�$rTc��[R"U5(dg[R"U5(aU$[R"U[R5$r)rr�r3r
r�r�s  rRr��Utilities.getMathAncestor�sE���*�*�3�/�/�����s�#�#��J��%�%�c�;�+>�+>�?�?rTc�v^^^�UUU4Sjn[T5S:XaT$[[UT55n0TlU$)Nc�r>�Uupp4U(a"U5(agTRR[	U55nUbU$U=(d [R
"U5nSnTR
U5(dTRU5(aU(a�TRU5(aUR5(a�TRU5(d�[R"U5(aU(apTRU5(dZTRU5(dDTRU5(d.TR!UT	5(dTR#UT	5(aSnO�[$R&"U5(a[$R("U5nOpTR+UT	5n[,R.R0[,R.R2/nU(a#T
(d[R4"U5U;aSnUTR[	U5'U$r�)r
r�rArerfr�r�r�r
r&�
isEmptyAnchorr
rlr�r�r��isErrorForContents�isLabellingContentsr�is_table_rowr��isInferredLabelForContentsrrKrxrrr�)r�r\rPrQrRr�r��widget�alwaysFilterrM�inferLabelsrOs         ���rRr.�9Utilities.filterContentsForPresentation.<locals>._include�s����&'�#�C���(�*�*�3�/�/���#�#�'�'��S�	�2�B��~��	��3�X�.�.�s�3�D��B��(�(��-�-����S�1A�1A�4��<�<�S�A�A�&�,�,�.�.��$�$�S�)�)��*�*�3�/�/���-�-��$�$��'�'��,�,��%�%�c�*�*��)�)�#�x�8�8��*�*�3��9�9����)�)�#�.�.� �2�2�3�7���8�8��H�E�� %�
�
� 7� 7����9M�9M�N���{�h�.?�.?��.G�<�.W��B�,.�D���t�C�y�)��IrTrb)r�r�r�rA)rOrMrGr.r�s```  rR�filterContentsForPresentation�'Utilities.filterContentsForPresentation�s:���	�@�x�=�A���O�
�&��8�,�
-������	rTc��UR5(dUR5(ag/SQn/SQnX;dX#;agX;dX$;agUR5$)NF)�(�[�{�<)
ri�?�!r�ra�;rU�]�}�>T)r��isalnum)rO�lastChar�nextChar�openingPunctuation�closingPunctuations     rR�needsSeparator�Utilities.needsSeparator�sY��������!1�!1�!3�!3��1��O���)�X�-K���)�X�-K�����!�!rTc�h�[R"U5=(a [R"U5$r)r
�supports_table�supports_selectionr�s  rR�supportsSelectionAndTable�#Utilities.supportsSelectionAndTable�s#���&�&�s�+�P��0K�0K�C�0P�PrTc�z�U(dgURR[U55nUbU$[R"U5(dSnO0URU5nX:waUR
U5nU(dSnUc![R"U5n[U5nX R[U5'U$r�)
r$rerfr
r�rcr9r�find_all_gridsr�)rOr\r�r��document_has_grids�gridss      rRr9�Utilities.hasGridDescendant�s�����
�
$�
$�
(�
(��c��
3��
�>��I��'�'��,�,��B��)�)�#�.�H���%)�%;�%;�H�%E�"�)��B�
�:��.�.�s�3�E��e��B�-/����S�	�*��	rTc���U(dgURR[U55nUbU$[R"XR
5SLnX R[U5'U$r�)r%rerfr
r�r`�rOr\r�s   rRr��Utilities.isGridDescendant�s_����
�
#�
#�
'�
'��S�	�
2��
�>��I�
�
#�
#�C�)G�)G�
H�PT�
T��,.���t�C�y�)��	rTc�d�[R"U5(dg[R"U5nU(dg[R
"U5nUHn[R"U5U:XdM g [R"U5nUHn[R"U5U:XdM g gr�)rrr
r�r�get_column_headers�get_row_headers)rOr\�name�headers�headers     rRr��"Utilities.isCellWithNameFromHeader�s����(�(��-�-��� � ��%�����,�,�S�1���F�� � ��(�D�0����)�)�#�.���F�� � ��(�D�0���rTc�>�U(aURU5(d[TU]	X5$[TU]	X5(dgURU5(aURR5(+$[R"5R5(ag[R"5R5(aggr�)
r�r�shouldReadFullRowr�rir�rr��last_event_was_line_navigation�last_event_was_mouse_button)rOr\rrQs   �rRrr�Utilities.shouldReadFullRow
s������.�.�s�3�3��7�,�S�:�:��w�(��6�6��� � ��%�%��|�|�/�/�1�1�1��*�*�,�K�K�M�M���*�*�,�H�H�J�J��rTc���U(dgURR[U55nUbU$[R"U[
R5SLnX R[U5'U$r�)r#rerfr
r�rr�rhs   rR�isEntryDescendant�Utilities.isEntryDescendants`����
�
$�
$�
(�
(��c��
3��
�>��I�
�
#�
#�C��)=�)=�
>�d�
J��-/����S�	�*��	rTc���U(dgURR[U55nUbU$[R"U[
R5SLnX R[U5'U$r�)r&rerfr
r�r�is_label_or_captionrhs   rR�isLabelDescendant�Utilities.isLabelDescendant(sa����
�
$�
$�
(�
(��c��
3��
�>��I�
�
#�
#�C��)H�)H�
I�QU�
U��-/����S�	�*��	rTc���U(dgURR[U55nUbU$[R"U[
R5SLnX R[U5'U$r�)r'rerfr
r�rr'rhs   rRr��Utilities.isMenuDescendant4s`����
�
#�
#�
'�
'��S�	�
2��
�>��I�
�
#�
#�C��)<�)<�
=�T�
I��,.���t�C�y�)��	rTc�Z�U(dgURR[U55nUbU$[R"U5(aUnO%[
R"U[R5nU=(a URU5(+nX R[U5'U$r�)r(rerfrr�r
r��isNonNavigablePopup�rOr\r�r/s    rR�isNavigableToolTipDescendant�&Utilities.isNavigableToolTipDescendant@s�����
�
/�
/�
3�
3�D��I�
>��
�>��I��"�"�3�'�'��H��-�-�c�;�3J�3J�K�H�
�
@�d�6�6�x�@�@��8:�*�*�4��9�5��	rTc���U(dgURR[U55nUbU$[R"U[
R5SLnX R[U5'U$r�)r)rerfr
r�rrtrhs   rRr��Utilities.isToolBarDescendantPs`����
�
&�
&�
*�
*�4��9�
5��
�>��I�
�
#�
#�C��)@�)@�
A��
M��/1�!�!�$�s�)�,��	rTc���U(dgURR[U55nUbU$[R"U[
R5SLnX R[U5'U$r�)r*rerfr
r�rr~rhs   rRr��Utilities.isWebAppDescendant\s`����
�
%�
%�
)�
)�$�s�)�
4��
�>��I�
�
#�
#�C��)@�)@�
A��
M��.0� � ��c��+��	rTc	��U(aURU5(dg[R"U5(agURR	[U55nUbU$[R"U5nU(dgURU5(dg[R"U5n[R"SU5n[U5U-S:�ag[R"USS5 [[!S[R""SU555n[R$"U5(+=(a [U5S:�nU(aVSnXs:aO[R&"X5upHn	[UR#55S:waSnO[)US-U	5nXs:aMOX R[U5'U$)	NF��333333�?z+Checking if element lines are single words.c��U$rr�r�s rRr��6Utilities.elementLinesAreSingleWords.<locals>.<lambda>�s��qrTz
[\s\ufffc]rbr)r�r�is_coder/rerfrr�r�r�r��findallr�r
r�r�r�rOr�r�r)
rOr\r��nCharsrR�eocsrqrrPrQs
          rRr��$Utilities.elementLinesAreSingleWordshso����.�.�s�3�3�����s�#�#��
�
-�
-�
1�
1�$�s�)�
<��
�>��I��+�+�C�0�����%�%�c�*�*���$�$�S�)���z�z�(�F�+���t�9�V��c�!��	���S�%�)V�W��f�[�"�(�(�=�&�*I�J�K���(�(��-�
-�
A�#�f�+��/��
��A��*�%+�%>�%>�s�%F�"��s��v�|�|�~�&�!�+��B����!��S�M���*�79�(�(��c��3��	rTc�$�U(aURU5(dgURR[U55nUbU$[R
"U5nU(dgUR
U5(dg[R"U5n[R"SU5n[U5U-S:�ag[R"USS5 [R"U5(+nU(a�[U5Hsn[R "X5SnUR#5(dUS;aM9[R$"X5Sn[UR'55S:�dMqSn O X R[U5'U$)NFr�r�z+Checking if element lines are single chars.r)r�u�rb)r�r.rerfrr�r�r�r�r�r�r
r�rr�rBr�r�r�r&)rOr\r�r�rRr�rr�s        rRr��$Utilities.elementLinesAreSingleChars�sK����.�.�s�3�3��
�
-�
-�
1�
1�$�s�)�
<��
�>��I��+�+�C�0�����%�%�c�*�*���$�$�S�)���z�z�(�F�+���t�9�V��c�!��	���S�%�)V�W��(�(��-�
-��
��6�]���5�5�c�=�a�@���<�<�>�>�T�-A�%A���2�2�3�:�1�=���v�|�|�~�&��*��B��#�79�(�(��c��3��	rTc�J^�T(aURT5(dgURR[T55nUbU$Sn[R
"T5H'n[R"UU4Sj5(dM%Sn O X R[T5'U$)NFc�>�UT:H$rr�)r�r\s �rRr��5Utilities.labelIsAncestorOfLabelled.<locals>.<lambda>�s	����S�rTT)r�r-rerfr�get_is_label_forr
r�)rOr\r��targets `  rR�labelIsAncestorOfLabelled�#Utilities.labelIsAncestorOfLabelled�s������.�.�s�3�3��
�
,�
,�
0�
0��c��
;��
�>��I�
��!�2�2�3�7�F��%�%�f�.@�A�A����8�
68�'�'��S�	�2��	rTc���U(aURU5(dgURR[U55nUbU$UR	U5(agSn[
R"U5nU(aZ[S[R"U55n[R"USU5nURS:dURS:aSnX R[U5'U$)NFrbrT)
r�r,rerfr�rr�rrr�r!r�r")rOr\r�r�rQr.s      rRr��Utilities.isOffScreenLabel�s�����.�.�s�3�3��
�
#�
#�
'�
'��S�	�
2��
�>��I��)�)�#�.�.��
���.�.�s�3����a��3�3�C�8�9�C��(�(��a��5�D��v�v��z�T�V�V�a�Z���,.���t�C�y�)��	rTc���[R"U5(a[[R"[R"U55(d,SUS/n[
R"[
RUS5 gg)Nr�zis a detached documentTF)rrr
rWrdrrgrh)rOr\rqs   rR�isDetachedDocument�Utilities.isDetachedDocument�sZ���"�"�3�'�'��0A�0A�(�BU�BU�VY�BZ�0[�0[��c�#;�<�F����u�/�/���>��rTc��U=(d UR5n[R"U5HMn[R"U5U:XdMSUSU/n[
R"[
RUS5 Us $ g)N�WEB: Returningzas iframe parent of detachedT)rcr�find_all_internal_framesr
rdrrgrh)rOr\r��iframerqs     rR�iframeForDetachedDocument�#Utilities.iframeForDetachedDocument�sp���+�t�)�)�+��!�:�:�4�@�F��"�"�3�'�6�1�*�F�4R�TW�X���"�"�5�#3�#3�V�T�B��
�	A�rTc��^�URT5(dgUHEup4pV[R"U5(dM#[R"UU4Sj5(dME g g)NFc�>�UT:H$rr�)r��links �rRr��;Utilities.isLinkAncestorOfImageInContents.<locals>.<lambda>	s	���Q�$�YrTT)r�rr�r
r�)rOr�rMr\rPrQrRs `     rR�isLinkAncestorOfImageInContents�)Utilities.isLinkAncestorOfImageInContents�sT����{�{�4� � ��'/�#�C���'�'��,�,���%�%�c�+>�?�?��	(0�rTc
��Uup4pV[[URUVs/sHowSPM	 sn55nU(dgUHCn	URU	5up�X;;dMU
R	5UR	5:XdMAU	s $ gs snfr�)r�r��shouldInferLabelFor�
inferLabelForr&)rOrNrMr\rPrQrRr��objsr��label�sourcess            rRrD�$Utilities.isInferredLabelForContents	s~��")���C��F�4�3�3�H�5M�H�q��d�H�5M�N�O�����A�!�/�/��2�N�E��~�%�+�+�-�6�<�<�>�"A����
��6Ns�B
c�x�[R"U5H n[R"U5(dM  g gr|)rr�r�)rOr\r�s   rR�isLabellingInteractiveElement�'Utilities.isLabellingInteractiveElement	s0��!�2�2�3�7�F��'�'��/�/��8�rTc�
�URU5(ag[R"U5nU(d#[U5=(d UR	U5$UH
upEpgXC;dM
 g URU5(dgUR	U5(dgUHeupEpgUR	U5(aURU5(aM4[R"[R"XA55(dMe g gr�)	r�rr�r�r{r�rzr
�get_common_ancestor)rOr\rMr�rErPrQrRs        rRrB�Utilities.isLabellingContents	s����!�!�#�&�&���.�.�s�3�����=�?�D�$:�$:�3�$?�?�'/�#�C���~��(0��&�&�s�+�+���%�%�c�*�*��'/�#�C���)�)�#�.�.�$�2I�2I�#�2N�2N���.�.�x�/K�/K�C�/U�V�V��(0�rTc��[R"U5=(a` [R"U5(+=(a> [R"US5(+=(a [R
"U5(+$)N�jump)rr�r�r
�
has_action�has_role_from_ariar�s  rR�isAnchor�Utilities.isAnchor:	s]���"�"�3�'�`��0H�0H��0M�,M�`��&�&�s�F�3�3�`�<G�<Z�<Z�[^�<_�8_�	`rTc�^�URU5=(a URU5(+$r)r�r�r�s  rRr@�Utilities.isEmptyAnchor>	s$���}�}�S�!�E�$�*@�*@��*E�&E�ErTc�h�[R"U5=(a URU5(+$r)rr�r�r�s  rR�isEmptyToolTip�Utilities.isEmptyToolTipA	s&���&�&�s�+�O�D�4J�4J�3�4O�0O�OrTc�j�[R"U5(dgURU5(aggr�)r�is_alertr�r�s  rR�isBrowserUIAlert�Utilities.isBrowserUIAlertD	s-���#�#�C�(�(���!�!�#�&�&��rTc��U(aURU5(dgURR[U55nUbU$UR	U5(agURU5(a,SUS/n[R"[RUS5 gSnURU5(dJ[R"U5(d[R"US5nO[R"US5nU(a�[R"U5(d�[R"U5(a�[ R""U5nUR%SS5(d.SUS	/n[R"[RUS5 SnOMUR'5(d8[R("U5=(d [R*"U5(+nX R[U5'U$)
NFr�z%is not clickable: has grid descendantT�click�click-ancestorr�r7z'is not clickable: its text is just EOCs)r�r3rerfr�r9rrgrhr�rr�r
r�r�r�rr�r�r&�	is_staticr�)rOr\r�rqr�s     rR�isClickableElement�Utilities.isClickableElementM	s�����.�.�s�3�3��
�
%�
%�
)�
)�$�s�)�
4��
�>��I��)�)�#�.�.���!�!�#�&�&��c�#J�K�F����u�/�/���>��
���%�%�c�*�*��+�+�C�0�0��(�(��g�6���(�(��.>�?��
�h�'�'��,�,��1G�1G��1L�1L��&�&�s�+�D��<�<��"�-�-� �#�'P�Q���"�"�5�#3�#3�V�T�B����Z�Z�\�\�%�/�/��4�P��8K�8K�C�8P�Q��.0� � ��c��+��	rTc�.>�U(aURU5(d[TU]	U5$URR	[U55nUbU$[R"U[R5SLnX R[U5'U$r)
r�r�isCodeDescendantr"rerfr
r�rr�)rOr\r�rQs   �rRr��Utilities.isCodeDescendantp	s~�����.�.�s�3�3��7�+�C�0�0�
�
#�
#�
'�
'��S�	�
2��
�>��I�
�
#�
#�C��)<�)<�
=�T�
I��,.���t�C�y�)��	rTc�D�[R"U5(d[R"U5(dg[R"U5(dg[R
"X5(ag[R"US5n[R"U5nX$;$)NFTc�h�[R"U5=(d [R"U5$r)rr)r�r�s rRr��5Utilities.isItemForEditableComboBox.<locals>.<lambda>�	s#��K�3�3�A�6�U�+�:R�:R�ST�:U�UrT)rr(�is_menu_item�is_editable_combo_boxr
�is_ancestorr��get_is_controlled_by)rO�item�comboBoxrzr�s     rR�isItemForEditableComboBox�#Utilities.isItemForEditableComboBox|	s~���(�(��.�.�+�2J�2J�4�2P�2P���0�0��:�:������/�/���*�*��U�W�	��2�2�9�=���"�"rTc�^�U(a1URU5(a[R"U5(dg[R"U5(ag[R
"[R"U[R55mT(dgU4SjnU"U5(ag[R"X5SL$)NFc�>�[R"U5R5nTU:wag[R"U5=(d [R
"U5$r�)rr�r&r�
is_sectionr�)r�rR�	entryNames  �rR�_isMatch�5Utilities.isFakePlaceholderForEntry.<locals>._isMatch�	sH����(�(��+�1�1�3�F��F�"���)�)�!�,�H��0E�0E�a�0H�HrTT)	r�r
rdrr�r�r�r��find_descendant)rOr\r�r�s   @rRr��#Utilities.isFakePlaceholderForEntry�	s������.�.�s�3�3��8K�8K�C�8P�8P���"�"�3�'�'���%�%�h�&<�&<�S�+�BV�BV�&W�X�	���	I��C�=�=���'�'��6�d�B�BrTc�\�URU5(dgURU5(+$r�)�isListDescendantrwr�s  rRrj�Utilities.isBlockListDescendant�	s*���$�$�S�)�)���.�.�s�3�3�3rTc��U(aURU5(dgURR[U55nUbU$[R
"U[R5nUSLnX R[U5'U$r�)r�r6rerfr
r�rr{r�s    rRr��Utilities.isListDescendant�	su����.�.�s�3�3��
�
#�
#�
'�
'��S�	�
2��
�>��I��)�)�#�{�/B�/B�C��
�T�
!��,.���t�C�y�)��	rTc�P�U(aURU5(dgURR[U55nUbU$[R
"U5(aSnO)[R"U[R
5nUSLnX R[U5'U$r�)r�r4rerfr�is_inline_list_itemr
r�r�s    rRrw� Utilities.isInlineListDescendant�	s�����.�.�s�3�3��
�
)�
)�
-�
-�d�3�i�
8��
�>��I��*�*�3�/�/��B��-�-�c�;�3R�3R�S�H���%�B�24�$�$�T�#�Y�/��	rTc�z�URU5(dg[R"U[R5$r)rwr
r�rr{r�s  rRrx�%Utilities.listForInlineListDescendant�	s/���*�*�3�/�/���%�%�c�;�+>�+>�?�?rTc��U(dgURR[U55nUbU$[R"U5(aURU5(dSnO[R"U5(ab[R"[R"U55(a3[R"U[R"U55(aSnOSnX R[U5'U$r�)
r5rerfrr�r�r�r
rd�has_same_non_empty_namerhs   rRr��Utilities.isLink�	s�����
�\�\�
�
�d�3�i�
(��
�>��I����s�#�#�D�M�M�#�,>�,>��B�
�
"�
"�3�
'�
'��"�"�8�#6�#6�s�#;�<�<��/�/��X�5H�5H��5M�N�N��B��B�"$���T�#�Y���	rTc�2�U(aURU5(dgURR[U55nUbU$[R
"U5=(a [R"U5(+nX R[U5'U$r�)r�r7rerfrr�r�rhs   rRr��Utilities.isNonNavigablePopup�	s~����.�.�s�3�3��
�
&�
&�
*�
*�4��9�
5��
�>��I�
�
$�
$�S�
)�2��,�,�S�1�1�	�02�!�!�$�s�)�,��	rTc�Z�[[R"XR55S:�$r�)r�r�find_all_canvasesr�r�s  rRr��$Utilities.hasUselessCanvasDescendant�	s#���;�0�0��6I�6I�J�K�a�O�OrTc�f�[R"U5(ag[R"U5$r�)rr��is_subscript_or_superscriptr�s  rRrm�&Utilities.isTextSubscriptOrSuperscript�	s'���&�&�s�+�+���6�6�s�;�;rTc�>�URR[U55nUbU$SnURU5(a2UR	U5(a[
R"U5nSU;nX R[U5'U$![a SnN'f=f)NF�doubleclickT)r>rerfr�r�r
r�r�)rOr\r�rms    rRr��(Utilities.isNonNavigableEmbeddedDocument�	s���
�
1�
1�
5�
5�d�3�i�
@��
�>��I�
���?�?�3���D�$=�$=�c�$B�$B�
+��(�(��-��#�d�*��:<�,�,�T�#�Y�7��	��
�
���
�s�B
�
B�Bc���[R"U5(a.[R"[R"U55S:XagUR
R
[U55nUbU$Sn[R"U5n[R"U[R5Vs/sHoDPM nn[U5[R"U5:Xag[R"U5nXS:waI[R"U5n[R"US5n[R"Xx5n	X�:HnX R
[U5'U$s snf)NrbFr_)r�is_svgr
r�rdr;rerfr�r�r
�sort_objects_by_sizer*�get_rect_intersection)
rOr\r�r/r��children�sortedChildren�
objExtents�largestExtents�intersections
          rR�isRedundantSVG�Utilities.isRedundantSVG
s#���!�!�#�&�&�(�*B�*B�8�CV�CV�WZ�C[�*\�`a�*a��
�
!�
!�
%�
%�d�3�i�
0��
�>��I�
���$�$�S�)��'�5�5�f�k�>P�>P�Q�R�Q�!�A�Q��R��x�=�H�4�4�V�<�<�(�=�=�h�G�N��R�(�(�(�1�1�#�6�
�!,�!5�!5�n�R�6H�!I��*�@�@��\��!�/��*,���T�#�Y�'��	��Ss�3E#c��U(aURU5(dgURR[U55nUbU$Sn[R
"U5(a�[R"U5(a�[R"U5(a�[R"U5(a�[R"S[R"U55(dY[R"U5H=n[R"U5(aM [R "U5(aM= O SnX R[U5'U$)NFz[^\s\ufffc]T)r�r9rerfr�is_web_element_customr�r�r
r�r�r�rr�r��is_image_or_canvasr�r	s    rRr��Utilities.isCustomImage
s�����.�.�s�3�3��
�
 �
 �
$�
$�T�#�Y�
/��
�>��I�
���,�,�S�1�1�k�6S�6S�TW�6X�6X��%�%�c�*�*��%�%�c�*�*��9�9�^�V�-@�-@��-E�F�F�!�/�/��4��#�6�6�u�=�=��AS�AS�TY�AZ�AZ��5���)+���D��I�&��	rTc�"�U(aURU5(dgURR[U55nUbU$Sn[R
"U5n[R"U5(d[R"U5(dSnU(aN[R"U5(d1[R"U5(dURU5(aSnU(aURU5(a	U(dSnU(a[R"U5(aSnU(a[R"[R"U55(aPU(dI[ R""[R"U55nU(aUR%S5(dSnU(a|[R&"U5(aa[R("U5(aSnOCU(d<UR+U5(d&[R,"U5upVUS:�aUS:�aSnU(a1[R."U5(aUR1U5(+nU(ay[R2"U5(a^[5[7[R2"U5S55H1nUR9[R:"X55(aM/Sn O X R[U5'U$)NFT�
javascript��2)r�r:rerfrr�r	r�r
r��get_description�hasLongDescr�r�r�rdr�get_link_urir��supports_image�get_image_descriptionr�get_image_sizer�r�r�rBrr�r�)rOr\r�r�r�r#r$rs        rRr��Utilities.isUselessImage1
s/����.�.�s�3�3��
�
!�
!�
%�
%�d�3�i�
0��
�>��I�
��'�9�9�#�>���.�.�s�3�3�{�7I�7I�#�7N�7N��B�
�8�$�$�S�)�)��.�.�s�3�3��&�&�s�+�+��B�
�$�)�)�#�.�.�7H��B�
�+�*�*�3�/�/��B�
�+�%�%�h�&9�&9�#�&>�?�?�HY��*�*�8�+>�+>�s�+C�D�C��3�>�>�,�7�7���
�(�)�)�#�.�.��-�-�c�2�2���&�t�/B�/B�3�/G�/G� (� 7� 7�� <�
���2�:�&�2�+��B�
�(�(�(��-�-��+�+�C�0�0�B�
�(�*�*�3�/�/��3�x�7�7��<�b�A�B���*�*�8�+=�+=�c�+E�F�F��B��C�
+-���T�#�Y�'��	rTc���[R"U5nU(dg[UR55S:�ag[R
R
U5n[U5S:�a,SUS/n[R"[RUS5 g[U5S:XaE[U5[SS5;a,SUS	/n[R"[RUS5 gg)
NFrbTr
�WEB: name ofzis suspected query string����is in unicode private use area)r
r�r�rO�urllib�parse�parse_qsrrgrh�ordrB)rOr\rm�parsedrqs     rR�hasValidName�Utilities.hasValidName[
s���� � ��%�����t�z�z�|��q� �����&�&�t�,���v�;��?�$�c�+F�G�F����u�/�/���>���t�9��>�c�$�i�5���+@�@�$�c�+K�L�F����u�/�/���>��rTc�d^�U(aURU5(dgURR[U55nUbU$[R
R[R
R[R
R[R
R/n[R"U5nXC;a[R"U5(dSnGO0[R"U5(aSnGO[R"U5(aSnO�UR!U5(d6[R""U5(d[R$"U5(aSnO�[&R("U5(a1[&R*"U5[R,"U5:waSnOX[R."U5(a;[R0"U5n/SQm[3[5U4SjU55nU(+nOSnX R[U5'U$)NF)r�zshow-context-menuz
do-defaultc�>�UT;$rr�)r��ignores �rRr��1Utilities.isUselessEmptyElement.<locals>.<lambda>�
s	���!�6�/rTT)r�r<rerfrrKr�r�r��	TABLE_ROWr
r�r�
is_aria_alertr�r�r rr�rr�r�r�r��get_action_namesr�r�)rOr\r�r}r~�namesr$s      @rRr��Utilities.isUselessEmptyElementp
s������.�.�s�3�3��
�
(�
(�
,�
,�T�#�Y�
7��
�>��I����%�%����#�#����"�"����%�%�'��� � ��%����[�%>�%>�s�%C�%C��B�
�
%�
%�c�
*�
*��B�
�
$�
$�S�
)�
)��B�
�
�
�s�
#�
#��+�+�C�0�0�H�4L�4L�S�4Q�4Q��B�
�
'�
'��
,�
,��1D�1D�S�1I�X�M^�M^�_b�Mc�1c��B�
�
%�
%�c�
*�
*��-�-�c�2�E�J�F��� 9�5�A�B�E���B��B�13�#�#�D��I�.��	rTc���U(aURU5(dgURR[U55nUbU$[R
"US5nX R[U5'U$)NF�showlongdesc)r�r0rerfr
r�rhs   rRr�Utilities.hasLongDesc�
se����.�.�s�3�3��
�
�
�
"�
"�4��9�
-��
�>��I�
�
 �
 ��n�
5��')���$�s�)�$��	rTc�>�U(aURU5(d[TU]	U5$[R"U5(d[
R"U5(dgURR[U55nUbU$[R"U5nSn[[[XC555nX R[U5'U$)NFc��[R"U5=(a3 [R"U5=(a [R"U5$r)r�
is_captionr��
is_visibler�s rR�isVisibleCaption�5Utilities.hasVisibleCaption.<locals>.isVisibleCaption�
s>���)�)�!�,�L��*�*�1�-�L�2=�2H�2H��2K�
LrT)r�r�hasVisibleCaptionr�	is_figurer
r^r1rerf�get_is_labelled_byr�r�r�)rOr\r��labelsr2rQs     �rRr4�Utilities.hasVisibleCaption�
s������.�.�s�3�3��7�,�S�1�1��%�%�c�*�*�h�.E�.E�c�.J�.J��
�
$�
$�
(�
(��c��
3��
�>��I��/�/��4��	L��$�v�.�7�8�
9��-/����S�	�*��	rTc��URU5(dS/4$URR[U55nUbU$URR
R
US5nX R[U5'U$r�)r�r?rerfri�label_inference�inferrhs   rRr��Utilities.inferLabelFor�
ss���'�'��,�,���8�O�
�
!�
!�
%�
%�d�3�i�
0��
�>��I�
�\�\�
)�
)�
/�
/��U�
;��*,���T�#�Y�'��	rTc�v�UR5(aURU5(agURR[	U55nU(aHUR
RR5(dUR
R5(+$USLaU$[R"U5n[R"U5nU(aSnO�[R"U5(aSnO�U(d�[RR [RR"[RR$[RR&[RR([RR*/nX5;=(a [R,"U5(+nX R[	U5'UR
RR5(a9U[RR*[RR 4;agU$r�)r�r�rBrerfrirr�inSayAllr
r�r�rr�rrKrrr�r�r�r�rx�get_displayed_label)rOr\r�r~rmr}s      rRr��Utilities.shouldInferLabelFor�
s����%�%�'�'�4�+B�+B�3�+G�+G��
�
&�
&�
*�
*�4��9�
5��
�d�l�l�3�3�[�[�]�]��|�|�,�,�.�.�.�
��;��I�� � ��%��� � ��%����B�
�
+�
+�C�
0�
0��B���Z�Z�)�)��Z�Z�)�)��Z�Z�%�%��Z�Z�(�(��Z�Z�-�-��Z�Z�,�,�.�E���K�{�'F�'F�s�'K�#K�B�/1�!�!�$�s�)�,��<�<�(�(�P�P�R�R��E�J�J�3�3�U�Z�Z�5I�5I�J�J���	rTc��URU5(dg[R"U5(dg[R"U5(d/[R"[R
"U55(aggr�)r�rr��is_spin_buttonr
rdr�s  rR�isSpinnerEntry�Utilities.isSpinnerEntry�
s]���%�%�c�*�*���&�&�s�+�+���%�%�c�*�*�k�.H�.H��I\�I\�]`�Ia�.b�.b��rTc���URUR5(dgURRS5=(a# [R
"5R
5$)NFzobject:text-selection-changed)rC�source�typer�rr��last_event_was_up_or_down�rO�events  rR�eventIsSpinnerNoise�Utilities.eventIsSpinnerNoise�
sN���"�"�5�<�<�0�0���z�z�$�$�%D�E�N�#�/�/�1�K�K�M�	NrTc��URRS5(ajURUR5(aJ[R
"5R
5(a"UR5SnURU:H$g)N�object:text-caret-movedrF)rGr�rCrFrr�rHr�)rOrJr\s   rR�treatEventAsSpinnerValueChange�(Utilities.treatEventAsSpinnerValueChange�
sl���:�:� � �!:�;�;��@S�@S�TY�T`�T`�@a�@a�"�.�.�0�J�J�L�L��*�*�,�Q�/���|�|�s�*�*�rTc��URUR5(agURRS5(an[R
"UR5=(dG [R"UR5=(d  [R"UR5$URRS5(agg)NFzaccessible-namezobject:children-changedT)	r�rFrGr�r�
is_status_bar�is_label�is_framer�rIs  rR�eventIsBrowserUINoise�Utilities.eventIsBrowserUINoise�
s����!�!�%�,�,�/�/���:�:���0�1�1��,�,�U�\�\�:�6�k�>R�>R�SX�S_�S_�>`�6��'�'����5�
6��:�:� � �!:�;�;��rTc���U=(d URUR5nU(dgSnSnSn[R"UR5(a�URRS5(asUR
U5upxU"U5(d
U"U5(agXqR:Xa6U"U5(a)[R"5R5(agg)NFc�V�[R"[R"U55$r)rr)r
rdr�s rR�
isListBoxItem�9Utilities.eventIsAutocompleteNoise.<locals>.isListBoxItem
s���*�*�8�+>�+>�q�+A�B�BrTc�V�[R"[R"U55$r)rr'r
rdr�s rR�
isMenuItem�6Utilities.eventIsAutocompleteNoise.<locals>.isMenuItems���&�&�x�':�':�1�'=�>�>rTc�V�[R"[R"U55$r)rr�r
rdr�s rR�isComboBoxItem�:Utilities.eventIsAutocompleteNoise.<locals>.isComboBoxItems���+�+�H�,?�,?��,B�C�CrT�object:text-T)
r�rFrr�rGr�r�rr�rH)	rOrJrc�	inContentrYr\r_r\r]s	         rR�eventIsAutocompleteNoise�"Utilities.eventIsAutocompleteNoises���!�I�T�%;�%;�E�L�L�%I�	���	C�	?�	D��"�"�5�<�<�0�0��z�z�$�$�^�4�4��.�.�}�=�K�C��S�!�!�Z��_�_���l�l�"�~�c�':�':�&�2�2�4�N�N�P�P��rTc��URUR5(agURU5(agURU5$r�)r�rF�&_eventIsBrowserUIAutocompleteTextNoise�+_eventIsBrowserUIAutocompleteSelectionNoiserIs  rR�!eventIsBrowserUIAutocompleteNoise�+Utilities.eventIsBrowserUIAutocompleteNoise"s?���!�!�%�,�,�/�/���6�6�u�=�=���?�?��F�FrTc�~�SS/nURU;ag[R"UR5(dg[R
"5R
5n[R"U5(aD[R"U5(a)[R
"5R5(dgg�N�object:selection-changedzobject:state-changed:selectedFT)rGr�is_menu_relatedrFrr�r�r�rrrH)rOrJ�	selection�focuss    rRrg�5Utilities._eventIsBrowserUIAutocompleteSelectionNoise+s���/�1P�Q�	��:�:�Y�&���*�*�5�<�<�8�8���)�)�+�>�>�@������&�&�;�+A�+A�%�+H�+H�&�2�2�4�N�N�P�P��rTc��URRS5(a%[R"UR5(dg[
R"5R5n[R"U5(dg[R"U5(d[R"U5(a#[R"5R5$g�NraF)
rGr�r�!is_single_line_autocomplete_entryrFrr�r��
is_selectable�is_menu_item_of_any_kindr(rrH)rOrJros   rRrf�0Utilities._eventIsBrowserUIAutocompleteTextNoise:s����z�z�$�$�^�4�4��?�?����M�M���)�)�+�>�>�@���(�(��/�/���/�/��6�6�+�:R�:R�SX�:Y�:Y�&�2�2�4�N�N�P�P�rTc�,�SS/nURU;ag[R"UR5(dgUR	UR5(agUR	[
R"5R55(dggrk)rGr�is_page_tab_list_relatedrFr�rr�r�)rOrJrns   rR�eventIsBrowserUIPageSwitch�$Utilities.eventIsBrowserUIPageSwitchHsu��/�1P�Q�	��:�:�Y�&���3�3�E�L�L�A�A���!�!�%�,�,�/�/���%�%�m�&?�&?�&A�&T�&T�&V�W�W��rTc��[R"5R5(a,UR5nUR	UR
5nOMUR
[R"5R55nUR
UR
5nSUSUS/n[R"[RUS5 U(aU(dgX2:Xag[R"U5(dX[R"U5(a=UR5U:Xa)Sn[R"[RUS5 gg)NzWEB: Event doc:z. Focus doc:riTFz,WEB: Treating active doc as locusOfFocus doc)rr��focus_is_active_windowr�rkrFr�r�rrgrhr
rWru)rOrJrorFrqr�s      rR�eventIsFromLocusOfFocusDocument�)Utilities.eventIsFromLocusOfFocusDocumentXs����$�$�&�=�=�?�?��'�'�)�E��6�6�u�|�|�D�F��-�-�m�.G�.G�.I�.\�.\�.^�_�E��.�.�u�|�|�<�F�#�V�^�U�C�H��
���5�+�+�V�T�:��5���?��� � ��'�'�H�,=�,=�f�,E�,E��"�"�$��.�D���#�#�E�$4�$4�c�4�@��rTc�^�TRS:wag[R"5R5nU(d)Sn[R
"[RUS5 gTRU:Xa)Sn[R
"[RUS5 g[R"UU4Sj5(a)Sn[R
"[RUS5 g[R"TR5(aJS[R"TR5S	/n[R"[RUS5 gS
n[R
"[RUS5 g)NrlFz:WEB: Selection changed event is relevant (no locusOfFocus)Tz:WEB: Selection changed event is relevant (is locusOfFocus)c�">�UTR:H$r)rF�r�rJs �rRr��BUtilities.eventIsIrrelevantSelectionChangedEvent.<locals>.<lambda>~s���1����3DrTzCWEB: Selection changed event is relevant (ancestor of locusOfFocus)z5WEB: Selection changed event is irrelevant (unrelatedrUzGWEB: Selection changed event is relevant (no reason found to ignore it))rGrr�r�rrurhrFr
r�r�is_page_tab_list�
get_role_namerg)rOrJror�rqs `   rR�&eventIsIrrelevantSelectionChangedEvent�0Utilities.eventIsIrrelevantSelectionChangedEventqs����:�:�3�3���)�)�+�>�>�@���N�C����� 0� 0�#�t�<���<�<�5� �N�C����� 0� 0�#�t�<���!�!�%�)D�E�E�W�C����� 0� 0�#�t�<���'�'����5�5�M��,�,�U�\�\�:�C�A�F����u�/�/���>��W��
���E�,�,�c�4�8�rTc�z�URRS5(dgURUR5$rr)rGr�r�rFrIs  rR�$textEventIsForNonNavigableTextObject�.Utilities.textEventIsForNonNavigableTextObject�s/���z�z�$�$�^�4�4���'�'����5�5rTc��U(a URRS5(dgU=(d# [R"5R	5nURU5(dgURUR5(+$)NrNF)rGr�rr�r�r�rF)rOrJr�s   rR�caretMovedOutsideActiveGrid�%Utilities.caretMovedOutsideActiveGrid�se���%�*�*�/�/�0I�J�J���Q��!:�!:�!<�!O�!O�!Q�	��$�$�Y�/�/���(�(����6�6�6rTc��U(a URRS5(dg[R"UR5(ag[
R"UR55nU(dg[R"URS5nU(aX4:XagU=(d# [R"5R5nURU5(aUnO [R"X R5nU=(a; [R "U5[
R""UR55:H$)NrNF�idT)rGr�rr�rFr�get_document_uri_fragmentrcr
�
get_attributerr�r�r�r�rrr�)rOrJr��fragment�sourceIDr�s      rR�caretMovedToSamePageFragment�&Utilities.caretMovedToSamePageFragment�s����%�*�*�/�/�0I�J�J���"�"�5�<�<�0�0���7�7��8J�8J�8L�M�����)�)�%�,�,��=����,���Q��!:�!:�!<�!O�!O�!Q�	��;�;�y�!�!��D��)�)�)�[�[�A�D��b��0�0��6�*�:L�:L�T�M_�M_�Ma�:b�b�brTc�^�[R"URU55mT(dgU4Sjn[R"X5SL$)NFc�8>�[R"US5T:H$)Nr�)r
r�)r�r�s �rR�isSameFragment�:Utilities.isChildOfCurrentFragment.<locals>.isSameFragment�s����)�)�!�T�2�h�>�>rT)rr�rcr
r�)rOr\r�r�s   @rR�isChildOfCurrentFragment�"Utilities.isChildOfCurrentFragment�sA����7�7��8J�8J�3�8O�P����	?��%�%�c�:�$�F�FrTc�^^�U(aTRU5(dgTRR[U55nUbU$SnU4Sjn[R
"U5(aSnO�[R"U5(a[R"X5nOt[R"U5(a!U"U5=(d TRU5nO8TRU5(d"TRU5nTRU5nUTR[U5'U$)NFc��>�[R"U5TR5;=(a3 TRU5(+=(a [R
"U5$r)r
r�r�r�rr�r�s �rR�hasTextBlockRole�HUtilities.isContentEditableWithEmbeddedObjects.<locals>.hasTextBlockRole�sQ����$�$�Q�'�4�+F�+F�+H�H�\��6�6�q�9�9�\�>I�>X�>X�YZ�>[�
\rT)r�r!rerfrr*�is_multi_line_entryr
r�r�r�r�r�r
)rOr\r�r�r�s`    rRr
�.Utilities.isContentEditableWithEmbeddedObjects�s������.�.�s�3�3��
�
7�
7�
;�
;�D��I�
F��
�>��I�
��	\��$�$�S�)�)��B�
�
,�
,�S�
1�
1��)�)�#�@�B�
�
$�
$�S�
)�
)�!�#�&�:�$�+�+�c�*:�B�����%�%��0�0��5�H��:�:�8�D�B�@B��2�2�4��9�=��	rTc���[R"U5nURU5(dg[R"U5n[R
"U5nX4[R"U54$)N)r_r_r)r
rdr�rrZr[rr�)rOr\r/rPrQs     rR�_rangeInParentWithLength�"Utilities._rangeInParentWithLength�s\���$�$�S�)���%�%�f�-�-���1�1�#�6���-�-�c�2���6�5�5�f�=�=�=rTc�|
�URR[U55nUbU$Ucg[R"U5(a)Sn[
R"[
RUS5 g[R"U5(d+SU/n[
R"[
RUS5 g[R"U5(d+SU/n[
R"[
RUS5 g[R"5nSn[R"U5(a.SU/n[
R"[
RUS5 SnGO�[R"U5(a.SU/n[
R"[
RUS5 SnGO;[R"U5(a.SU/n[
R"[
RUS5 SnGO�UR!U5(a.S	U/n[
R"[
RUS5 SnGO�UR#U5(a.S
U/n[
R"[
RUS5 SnGOjUR%U5(a.SU/n[
R"[
RUS5 SnGO&UR'U5(a.SU/n[
R"[
RUS5 SnGO�UR)U5(a.S
U/n[
R"[
RUS5 SnGO�UR+U5(a.SU/n[
R"[
RUS5 SnGOZUR-U5(a.SU/n[
R"[
RUS5 SnGOUR/U5(a-SU/n[
R"[
RUS5 SnO�UR1U5(a-SU/n[
R"[
RUS5 SnO�[2R4"U5(a-SU/n[
R"[
RUS5 SnOHSUS[R"5U-
SS3/n[
R"[
RUS5 SnX R[U5'S[R"5U-
SS3n[
R"[
RUS5 U$)NFz*WEB: Dead object cannot have caret contextTz-WEB: Invalid object cannot have caret contextz*WEB: Non-element cannot have caret contextz,WEB: Focusable object can have caret contextz+WEB: Editable object can have caret contextz$WEB: Landmark can have caret contextz4WEB: Useless empty element cannot have caret contextz/WEB: Off-screen label cannot have caret contextz2WEB: Non-navigable popup cannot have caret contextz,WEB: Useless image cannot have caret contextz+WEB: Empty anchor cannot have caret contextz-WEB: Empty tool tip cannot have caret contextz9WEB: Fake placeholder for entry cannot have caret contextzDWEB: Non interactive descendant of control cannot have caret contextz,WEB: Hidden object cannot have caret contextz3WEB: Allowing sizeless object to have caret contextrRzcan have caret context. (rr�s)z INFO: _canHaveCaretContext took r�)rrerfr
r�rrurhrWrgrr�rsr�r�r<r�r�r�r�r@r�r�r�r�r
rl)rOr\r�r�rqrys      rR�_canHaveCaretContext�Utilities._canHaveCaretContext�sD��
�
.�
.�
2�
2�4��9�
=��
�>��I��;�����C� � �>�C����� 0� 0�#�t�<��� � ��%�%�E�s�K�F����u�/�/���>���)�)�#�.�.�B�C�H�F����u�/�/���>���Y�Y�[�
�
���#�#�C�(�(�D�c�J�F����u�/�/���>��B�
�
$�
$�S�
)�
)�C�S�I�F����u�/�/���>��B�
�
$�
$�S�
)�
)�<�c�B�F����u�/�/���>��B�
�
'�
'��
,�
,�L�c�R�F����u�/�/���>��B�
�
"�
"�3�
'�
'�G��M�F����u�/�/���>��B�
�
%�
%�c�
*�
*�J�C�P�F����u�/�/���>��B�
�
 �
 ��
%�
%�D�c�J�F����u�/�/���>��B�
�
�
��
$�
$�C�S�I�F����u�/�/���>��B�
�
 �
 ��
%�
%�E�s�K�F����u�/�/���>��B�
�
+�
+�C�
0�
0�Q�SV�W�F����u�/�/���>��B�
�
5�
5�c�
:�
:�\�^a�b�F����u�/�/���>��B�
�]�]�3�
�
�E�c�J�F����u�/�/���>��B�
�
$�
$�S�
)�
)�K�S�Q�F����u�/�/���>��B��s�&?��	�	��j�@X�Y\�?]�]_�$`�a�F����u�/�/���>��B�79�)�)�$�s�)�4�0�����z�1I�#�0N�a�P��
���E�,�,�c�4�8��	rTc��SU/n[R"[RUS5 UnSupEU(aK[R"U5nUS:aSnO#XpT[
R"X5nU(aUnOO	U(aMKU(a5URU5(dURU[SUS-
55$URU5(aUS4$g)Nz#WEB: Searching for caret context inT�Nr_rr_rb)rrgrhr�get_caret_offsetrrar�r�rr�)rOr\rqrz�
contextObj�
contextOffsetr]r�s        rR�searchForCaretContext�Utilities.searchForCaretContext9s���7��=��
���5�+�+�V�T�:��	�$,�!�
���,�,�S�1�F���z���,/�M�#�7�7��D����C���c��d�m�m�J�7�7��,�,�Z��R��QR�AR�9S�T�T��?�?�9�%�%��a�<��rTc�4�[R"5R5nSn[R"[R
US5 UR
U5(dg[R"U5(dUS4$U[R"U54$)Nz+WEB: Getting caret context via locusOfFocusTr�r)rr�r�rrurhr�r
r�rr�)rOr\r�s   rR�_getCaretContextViaLocusOfFocus�)Utilities._getCaretContextViaLocusOfFocusSsz���'�'�)�<�<�>��;��
���E�,�,�c�4�8��%�%�c�*�*���%�%�c�*�*���6�M��F�+�+�C�0�0�0rTc���SU/n[R"[RUS5 [R"U5(d:UR5nSU/n[R"[RUS5 U(drU(d)Sn[R"[RUS5 gUR5upgSUSUS/n[R"[RUS5 Xg4$URR[[R"U555nUb5S	US
USSUS/n[R"[RUS5 O/S
US/n[R"[RUS5 SupgU(aURU5(dDU(d)Sn[R"[RUS5 gURU5upgO�U(dUupgO�[R"US5(d�Sn[R"[RUS5 UR5upgU(aKUR[R"U55up�U	(a[R"U	5(aX�pvOUupgSUS
USUS/n[R"[RUS5 URXgU5 Xg4$)NzWEB: Getting caret context forTz"WEB: Now getting caret context forz=WEB: Returning None, -1: No document and no search requested.r�r�r�z(from locusOfFocus)zWEB: Cached context ofrhrrbzWEB: No cached context forrizTWEB: Returning None, -1: No top-level document with context and no search requested.z3WEB: Context is not valid. Searching for replicant.zWEB: Result context of)rrgrhr
rWrcrur�rrerfrd�isTopLevelDocumentr��findContextReplicantr�)rOrc�getReplicant�searchIfNeededrqr�r\r]rp�caretObj�caretOffsets           rRr��Utilities.getCaretContext_sz��2�M�B��
���5�+�+�V�T�:�� � ��/�/� �.�.�0�M�:�M�J�F����u�/�/���>��!�U���#�#�E�$4�$4�c�4�@���>�>�@�K�C�&��T�6�;P�Q�F����u�/�/���>��;���%�%�)�)�$�x�/B�/B�=�/Q�*R�S����.�
�t�W�Q�Z�QU�W^�_`�Wa�b�F����u�/�/���>�2�M�3�G�F����u�/�/���>�"�K�C��d�5�5�m�D�D�!�1���#�#�E�$4�$4�c�4�@���4�4�]�C�K�C���!�K�C���"�"�7�1�:�.�.�G�C����� 0� 0�#�t�<��3�3�5�K�C��(,�(B�(B�8�CV�CV�WZ�C[�(\�%���� 1� 1�(� ;� ;�"*���!�K�C�*�M�4��d�F�TW�X��
���5�+�+�V�T�:����S�-�8��{�rTc���U=(d UR5nU(dS/SS4$URR[[R
"U555nU(dS/SS4$U$r�)rcrrerfr
rd)rOrcr�s   rR�getCaretContextPathRoleAndName�(Utilities.getCaretContextPathRoleAndName�sd��%�=��);�);�)=�
���4��t�#�#�
�
,�
,�
0�
0��h�6I�6I�-�6X�1Y�
Z����4��t�#�#��	rTc�&�UR5 U=(d UR5nU(dg[R"U5nURR[
U5S5 URR[
U5S5 gr)ryrcr
rdrrYrfr)rOrcr/s   rRrl�Utilities.clearCaretContext�sk����� �%�=��);�);�)=�
����$�$�]�3��������V��d�3�������V��d�3rTc��[R"U5(a)Sn[R"[RUS5 g[
R"5R5(d)Sn[R"[RUS5 gUR5upEn[R"U5nXG:wa-SUSU/n[R"[RUS5 g[R"U5n	XY:wa-SUSU	/n[R"[RUS5 g[R"U5U:gn
UR5nURR[![R""U555up�S	U
/n[R"[RUS5 [
R"5R%XU
5 UR'X-U5 g)
NzWEB: Context replicant is dead.TFzBWEB: Not event from context replicant, locus of focus is not dead.z+WEB: Not event from context replicant. Pathz != replicant pathz+WEB: Not event from context replicant. Rolez != replicant rolez-WEB: Is event from context replicant. Notify:)r
r�rrurhrr��
focus_is_deadr�r�rgr�r�rcrrerfrdr�r�)rOrJ�	replicantr��pathr~rm�
replicantPathrq�
replicantRole�notifyrcr\r]s              rR�handleEventFromContextReplicant�)Utilities.handleEventFromContextReplicant�s������I�&�&�3�C����� 0� 0�#�t�<���(�(�*�8�8�:�:�V�C����� 0� 0�#�t�<���>�>�@���D� �)�)�)�4�
�� �C�T�*�M�;�F����u�/�/���>�� �)�)�)�4�
�� �C�T�*�M�;�F����u�/�/���>���"�"�9�-��5���*�*�,�
��)�)�-�-�d�8�3F�3F�}�3U�.V�W���A�6�J��
���5�+�+�V�T�:��!�!�#�6�6�u��P����Y�
�>�rTc��Sn[R"UR5(a
URnO�[R"UR5(a
URnOe[R
"UR[R5=(d/ [R
"UR[R5nUc)Sn[R"[RUS5 gSUS/n[R"[RUS5 [R"USS5 [R"U5n[R"U5(d>[R(d)Sn[R"[RUS5 gURRR!S05nUR![#[$R&"5R)555n[R*"U5U:gnS	US
/n[R"[RUS5 [$R&"5R-XU5 UR/US5 g)NzBWEB: Could not find listbox or tree to recover from removed child.TFz
WEB: Checkingzfor focused child.z,Handling event for removed selectable child.z?WEB: Could not find focused item to recover from removed child.r)z1WEB: Recovered from removed child. New focus is: �0r)rr)rF�is_treer
r�rrurhrgr��get_focused_objectr(�is_tree_itemrir�rerfrr�r�r�r�r�)	rOrJrzr�rqr�r)�oldNamer�s	         rR�%_handleEventForRemovedSelectableChild�/Utilities._handleEventForRemovedSelectableChild�s����	��"�"�5�<�<�0�0����I�
�
 �
 ����
.�
.����I� �.�.�u�|�|�[�=T�=T�U�M��)�)�%�,�,��8K�8K�L�
���V�C����� 0� 0�#�t�<��!�9�.B�C��
���5�+�+�V�T�:�	���Y��/]�^��-�-�i�8���(�(��.�.�+�2J�2J�S�C����� 0� 0�#�t�<�����/�/�3�3�G�R�@���)�)�D��!:�!:�!<�!O�!O�!Q�R�S���"�"�4�(�G�3��E�t�S�Q��
���5�+�+�V�T�:��!�!�#�6�6�u�F�K����T�1�%�rTc�|^�[R"5R5nTRU:Xa)Sn[R
"[RUS5 Or[R"UU4Sj5(a)Sn[R
"[RUS5 O)Sn[R
"[RUS5 gTRS:Xa)Sn[R
"[RUS5 gURT5(agS	upESn[R"TR5n[R"5R5(Ga@TRU:�aHS
n[R
"[RUS5 URTRS5upEGO~STRS-
s=::aU:arO Oo[R "TRTRS-
5nS
US/n	[R""[RU	S5 URUS5upEGO�UR%TR5n
SU
S/n	[R""[RU	S5 URU
S5upEGO�[R"5R'5(GaETRS:XaHSn[R
"[RUS5 UR)TRS5upEGOSTRs=:aU:azO Ow[R "TRTR5nSTRUS/n	[R""[RU	S5 UR)US5upEGO�UR+TR5nSUS/n	[R""[RU	S5 UR)US5upEGO(Sn[R,"TRSS5 UR/TR5upEUc [0R2"TR5nU(a�[R"5R55(a�[0R6"U5(azUR8R:R=S05nUR=[?[R"5R555n
[R@"U5U
:gnU(a=SXE4-n[R"5RCTXF5 UREXE5 gSTR/n	[R""[RU	S5 g)Nz%WEB: Removed child is locus of focus.Tc�">�UTR:H$r)�any_datar�s �rRr��6Utilities.handleEventForRemovedChild.<locals>.<lambda>�s���Q�%�.�.�5HrTz1WEB: Removed child is ancestor of locus of focus.zHWEB: Removed child is not locus of focus nor ancestor of locus of focus.Fr_zWEB: Event detail1 is useless.r�zAWEB: Last child removed. Getting new location from end of parent.rrbz4WEB: Getting new location from end of previous childriz>WEB: Getting new location from end of source's previous objectzDWEB: First child removed. Getting new location from start of parent.z-WEB: Getting new location from start of childz<WEB: Getting new location from start of source's next objectz!Handling event for removed child.r)z0WEB: Setting locusOfFocus and context to: %s, %iz2WEB: Unable to find context for child removed from)#rr�r�r�rrurhr
r��detail1r�r�rFr�last_event_was_upr�r�rgrj�last_event_was_downr�ror�r�rr�r�rrir�rerfr�r�r�)rOrJror�r\r]r�r&r�rqrr�r)r�s `            rR�handleEventForRemovedChild�$Utilities.handleEventForRemovedChild�s_����)�)�+�>�>�@���>�>�U�"�9�C����� 0� 0�#�t�<�
�
#�
#�E�+H�
I�
I�E�C����� 0� 0�#�t�<�\�C����� 0� 0�#�t�<���=�=�B��2�C����� 0� 0�#�t�<���5�5�e�<�<��������-�-�e�l�l�;�
��*�*�,�>�>�@�@��}�}�
�*�Y���#�#�E�$4�$4�c�4�@�"�2�2�5�<�<��D���V��e�m�m�a�'�4�*�4� �*�*�5�<�<�����9J�K��P�RW�Y\�]���"�"�5�#3�#3�V�T�B�"�2�2�5�"�=���V��1�1�%�,�,�?��Z�!�3�(���"�"�5�#3�#3�V�T�B�"�2�2�7�B�?���V�
 �
,�
,�
.�
B�
B�
D�
D��}�}��!�\���#�#�E�$4�$4�c�4�@�"�.�.�u�|�|�R�@���V��U�]�]�/�Z�/� �*�*�5�<�<����G��I�5�=�=���&���"�"�5�#3�#3�V�T�B�"�.�.�u�b�9���V��-�-�e�l�l�;��X�!�3�(���"�"�5�#3�#3�V�T�B�"�.�.�w��;���V��F�
� � ����u�6Y�Z��4�4�U�\�\�B�K�C��{�!�4�4�U�\�\�B���}�0�0�2�@�@�B�B�{�G]�G]�^a�Gb�Gb����7�7�;�;�G�R�H���)�)�D��)B�)B�)D�)W�)W�)Y�$Z�[��!�*�*�3�/�7�:���D��}�T�C��%�%�'�:�:�5�#�N�� � ��-��F����U��
���5�+�+�V�T�:�rTc��URU5upEnURU5nU(a#U(a[R"U5U:waSnU(a#U(a[R"U5U:waSnU(dgURUS5upxSUSU/n	[R"[RU	S5 Xx4$)Nr�rzWEB: Context replicant isr�T)	r��getObjectFromPathr
r�r�r�rrgrh)
rOrc�	matchRole�	matchNamer��oldRoler�r\r]rqs
          rRr��Utilities.findContextReplicantH
s���!%�!D�!D�]�!S���w��$�$�T�*���9�� � ��%��0����9�� � ��%��0������0�0��a�8���-�s�D�&�A��
���5�+�+�V�T�:��{�rTc���[R"U5(dUR5nU(aAURR	[[R"U555nU(aU$g)Nr�)r
rWrcrrerfrd)rOrcrps   rR�getPriorContext�Utilities.getPriorContextY
sU��� � ��/�/� �.�.�0�M���)�)�-�-�d�8�3F�3F�}�3U�.V�W�G����rTc���URR[U55nUbU$[R"U5=(d S/nX R[U5'U$r�)rrerfr
r�rhs   rR�_getPath�Utilities._getPathd
sN��
�[�[�_�_�T�#�Y�
'��
�>��I�
�
�
�s�
#�
+��t��!#���D��I���	rTc���U=(d UR5nU(dg[R"U5nURR	[U5X45upVXV4UR[U5'X4UR[U5'URU5n[R"U5n[R"U5n	XxU	4UR[U5'gr)rcr
rdrrerfrr�r�r�r)
rOr\r]rcr/�oldObj�	oldOffsetr�r~rms
          rRr��Utilities.setCaretContextm
s���%�=��);�);�)=�
����$�$�]�3�� �/�/�3�3�D��L�3�-�P���,2�,=����D��L�)�,/�K����D��L�)��}�}�S�!��� � ��%��� � ��%��8<�D�8H��'�'��V��5rTc�D�0UlURX5n0UlU$r)r�_findFirstCaretContext)rOr\r]r�s    rRr��Utilities.findFirstCaretContext|
s'��,.��)�
�
(�
(��
5��,.��)��	rTc��
�SUSU/n[R"[RUS5 [R"U5n[
RR[
RR[
RR[
RR/nXE;a�[R"U5(ajURX5(dT[R"US5nSUS/n[R"[RUS5 URUS5$URU5nU(dEUR!U5(a/SUS/n[R"[RUS5 US4$["R$"U5nU(Ga1X(:�Ga+UR'U5(a�[(R*"5R-5(a�UR/X5up�U	(d+S	U/n[R"[RUS5 OuUR'U	5(d.S
U	SUS/n[R"[RUS5 O1S
USU	SU
/n[R"[RUS5 X�4$SUSUSUSU/n[R"[RUS5 X4$[1SU5nU(a�["R2"U5nU(aX�UR4:wdU[
RR6:Xa+Sn[R8"[RUS5 X4$UR;U5(a+Sn[R8"[RUS5 X4$[<R>"X5n
U
(d+Sn[R8"[RUS5 X4$URAU5(axURCU
5(abSU
SUSUS/n[R"[RUS5 US-
n[<R>"X5n
URCU
5(aMbUREU
5(aKUR/X5up�U	(a1SUSU	SU
/n[R"[RUS5 X�4$UR!U
5(d1SU
SUSU/n[R"[RUS5 X4$SU
SUSU/n[R"[RUS5 URU
S5$)Nz(WEB: Looking for first caret context forr�TrzWEB: Will look in childzfor first caret contextz0WEB: First caret context for non-text context isr�z3WEB: No next object found at end of contenteditablezWEB: Next objectzfound at end of contenteditablezis not editablez2WEB: First caret context at end of contenteditablezis next contextz"WEB: First caret context at end ofrhz%WEB: First caret context is unchangedzCWEB: EOC in single-char-lines element. Returning context unchanged.z:WEB: Child at offset is null. Returning context unchanged.z
WEB: Child�ofrTzcannot be context.rbz/WEB: First caret context at end of empty anchorzcannot be context. ReturningzWEB: Looking in childzfor first caret context for)#rrgrhr
r�rrKrL�INTERNAL_FRAMEr�r&r�r'r�r�r�r�rr�r
rr��#last_event_was_character_navigationr�rr�r�r�rur�rrar�r�r@)rOr\r]rqr~�lookInChild�
firstChildr��lengthr��
nextOffsetr�r�r�s              rRr�� Utilities._findFirstCaretContext�
s���<�c�4��P��
���5�+�+�V�T�:�� � ��%���z�z����z�z�0�0��z�z�'�'��z�z�+�+�-�����'�'��,�,�T�_�_�S�5Q�5Q�!�+�+�C��3�J�/��=V�W�F����u�/�/���>��.�.�z�1�=�=��,�,�S�1���t�8�8��=�=�H�#�s�S�F����u�/�/���>���6�M��+�+�C�0���6�+��8�8��=�=�&�2�2�4�X�X�Z�Z�&*�&6�&6�s�&C�#���S�UX�Y�F��&�&�u�'7�'7���F��B�B�7�K�K�0�'�?��FW�Y�F��&�&�u�'7�'7���F�R�TW�/��$�
�L�F��&�&�u�'7�'7���F�"�.�.�:�C��v�t��4��)�F����u�/�/���>��;���Q������)�)�#�.�G��G�O�t�/M�/M�M��%�*�*�*�*�*�=���#�#�E�$4�$4�c�4�@��{�"��.�.�s�3�3�[���#�#�E�$4�$4�c�4�@��{�"��/�/��<���N�C����� 0� 0�#�t�<��;���?�?�3����,�,�U�3�3�&��t�S�+�v�Oc�d���"�"�5�#3�#3�V�T�B��!���#�7�7��D��	�,�,�U�3�3����e�$�$�"&�"2�"2�3�"?��G��K�S�+�W�d�J�H���"�"�5�#3�#3�V�T�B��*�*��(�(��/�/�"�E�+I�3�PT�V\�]�F����u�/�/���>��;��)�5�2O�QT�VZ�\b�c��
���5�+�+�V�T�:��*�*�5�!�4�4rTc��[R"5nURX5nSUSUSUSSUSS[R"5U-
SS3/	n[R"[RUS	5 U$)
NzWEB: Next caret in order forr�r�rrbrLrrr�T)rs�_findNextCaretInOrderrrgrh�rOr\r]ryr�rqs      rRr��Utilities.findNextCaretInOrder�
su���Y�Y�[�
�
�
'�
'��
4��0�#�t�V�S��Q�%��r�!�u��$�)�)�+�
�*B�3�)G�r�&J�L��
���5�+�+�V�T�:��	rTc���U(dUR5upU(aURU5(dgURU5(Ga�URU5(Ga*[R
"U5(Ga[R"U5n[US-[U55H�n[R"X5nU(aQX4UR:wa?SUSX4RSS5S/n[R"[RUS5 URU5(a1UR!US	5(aUS
4s $UR#US	5s $X4URUR$4;dM�X4s $ Ox[&R("U5(a=UR!X5(d'UR#[&R*"US
5S	5$US
:aUR-U5(dUS
4$UR/U5(agU(Ga�[&R0"U5(Ga�UR3[&R0"U55(a'UR5[&R0"U55nMu[&R0"U5n[&R6"U5(d�Sn[R8"[RUS5 UR;UR=5U5n	[&R6"U	5(aU	nO"[&R0"U5(aUnGM,gUR?U5up�nU
S-U:Xa(S
U
s=::a
Us=:aU::aO OUR#Xz5$[&R@"U5nU(aUR#US	5$UnU(a[&R0"U5(aGM�g)Nr�rb�ERROR: Child�found at offset with char 'r�r�r�Tr_rz6WEB: Finding next caret in order. Parent is not valid.)!r�r�r�r�rr�r�rBr�rrar�r�rrgrhr�r��ZERO_WIDTH_NO_BREAK_SPACEr
r�r�r�r�rdr�r�rWru�
findReplicantrcr�r��
rOr\r]r�rr�rqr/r�r�rPrQr�s
             rRr��Utilities._findNextCaretInOrder�
s.����.�.�0�K�C��$�0�0��5�5���$�$�S�)�)��%�%�c�*�*�v�/I�/I�#�/N�/N� �-�-�c�2���v��z�3�w�<�8�A�'�;�;�C�C�E����t�/M�/M�!M�"0�%�9V�")�*�"4�"4�T�5�"A�3�"H���*�*�5�+;�+;�V�T�J��0�0��7�7��3�3�E�2�>�>�#(�!�8�O�#�9�9�%��D�D��z� �:�:�D�<Z�<Z�*\�\�"�v�
�9��)�)�#�.�.�t�7O�7O�PS�7\�7\��1�1�(�2D�2D�S�!�2L�b�Q�Q��!��D�$;�$;�C�$@�$@��A�v�
��"�"�3�'�'���h�)�)�#�.�.��&�&�x�':�':�3�'?�@�@��4�4�X�5H�5H��5M�N����(�(��-�F��$�$�V�,�,�N���#�#�E�$4�$4�c�4�@� �.�.�t�/A�/A�/C�V�L�	��$�$�Y�/�/�&�F��(�(��0�0� �C����"&�!>�!>�s�!C��E���q�y�C��A��$>��$>��$>��1�1�&�@�@��-�-�c�2�E���1�1�%��<�<��C�3�h�)�)�#�.�.�6rTc��[R"5nURX5nSUSUSUSSUSS[R"5U-
SS3/	n[R"[RUS	5 U$)
Nz WEB: Previous caret in order forr�r�rrbrLrrr�T)rs�_findPreviousCaretInOrderrrgrhr�s      rRr��"Utilities.findPreviousCaretInOrder!su���Y�Y�[�
�
�
+�
+�C�
8��4�c�4����Q�%��r�!�u��$�)�)�+�
�*B�3�)G�r�&J�L��
���5�+�+�V�T�:��	rTc�0�U(dUR5upU(aURU5(dgURU5(Ga�URU5(GaB[R
"U5(Ga&[R"U5nUS:XdU[U5:�a[U5n[US-
SS5H�n[R"X5nU(aQX4UR:wa?SUSX4RSS5S/n[R"[RUS	5 URU5(a1UR!US5(aUS
4s $UR#US5s $X4URUR$4;dM�X4s $ O�[&R("U5(aTUR!X5(d>UR#[&R*"U[&R("U5S-
5S5$US
:aUR-U5(dUS
4$UR/U5(agU(Ga�[&R0"U5(Ga�UR3[&R0"U55(a'UR5[&R0"U55nMu[&R0"U5n[&R6"U5(d�Sn[R8"[RUS	5 UR;UR=5U5n	[&R6"U	5(aU	nO"[&R0"U5(aUnGM,gUR?U5up�nU
S-U:Xa(S
U
s=::a
Us=:aU::aO OUR#Xz5$[&R@"U5nU(aUR#US5$UnU(a[&R0"U5(aGM�g)Nr�r_rbr�r�r�r�r�Trz:WEB: Finding previous caret in order. Parent is not valid.)!r�r�r�r�rr�r�r�rBrrar�r�rrgrhr�rr�r
r�r�r�r�rdr�r�rWrur�rcr��get_previous_siblingr�s
             rRr�#Utilities._findPreviousCaretInOrder)s_����.�.�0�K�C��$�0�0��5�5���$�$�S�)�)��%�%�c�*�*�v�/I�/I�#�/N�/N� �-�-�c�2���R�<�6�C��L�#8� ��\�F��v��z�2�r�2�A�'�;�;�C�C�E����t�/M�/M�!M�"0�%�9V�")�*�"4�"4�T�5�"A�3�"H���*�*�5�+;�+;�V�T�J��0�0��7�7��3�3�E�2�>�>�#(�!�8�O�#�=�=�e�R�H�H��z� �:�:�D�<Z�<Z�*\�\�"�v�
�3��)�)�#�.�.�t�7O�7O�PS�7\�7\��5�5��&�&�s�H�,D�,D�S�,I�A�,M�N�PR�T�T��!��D�$;�$;�C�$@�$@��A�v�
��"�"�3�'�'���h�)�)�#�.�.��&�&�x�':�':�3�'?�@�@��4�4�X�5H�5H��5M�N����(�(��-�F��$�$�V�,�,�R���#�#�E�$4�$4�c�4�@� �.�.�t�/A�/A�/C�V�L�	��$�$�Y�/�/�&�F��(�(��0�0� �C����"&�!>�!>�s�!C��E���q�y�C��A��$>��$>��$>��5�5�f�D�D��1�1�#�6�E���5�5�e�R�@�@��C�3�h�)�)�#�.�.�6rTc��[R"5RS5(dg[R"UR
5(dg[R"5RS5(dVUR
UR
5UR5:wa)Sn[R"[RUS5 g[R"UR
[R5nU(aM[R"U5UR
:Xa)Sn[R"[RUS5 gg)N�inferLiveRegionsF� presentLiveRegionFromInactiveTabz-WEB: Live region source is not in active tab.Tz6WEB: Focused source will be presented as part of alert)r	r�rvrr�rFrkr�rrurhr
r�r'r�)rOrJr��alerts    rR�handleAsLiveRegion�Utilities.handleAsLiveRegionis����+�+�-�9�9�:L�M�M���)�)�%�,�,�7�7���+�+�-�9�9�:\�]�]��0�0����>�$�BU�BU�BW�W�A�C����� 0� 0�#�t�<���&�&�u�|�|�[�5N�5N�O���[�3�3�E�:�e�l�l�J�J�C����� 0� 0�#�t�<��rTc�<>�URU5(d[TU]	U5$URR	[U55nUbU$[R"U5n[U5S:XaG[U5[SS5;a.SUS/n[R"[RUS5 SnOI[R"U5(a,[R "U5=(a [U5S:HnOSnX R[U5'U$)NrbrrrrTF)r�r�preferDescriptionOverNamer@rerfr
r�r�rrBrrgrhrr�is_push_button)rOr\r�rmrqrQs     �rRr
�#Utilities.preferDescriptionOverName~s�����%�%�c�*�*��7�4�S�9�9�
�
,�
,�
0�
0��c��
;��
�>��I�� � ��%���t�9��>�c�$�i�5���+@�@�$�c�+K�L�F����u�/�/���>��B�
�
%�
%�c�
*�
*��+�+�C�0�C�S��Y�!�^�B��B�57�'�'��S�	�2��	rT)3rrrrIrGrErFrHr.r/rJr$r0r=r1rrr?r3r"r!r9r#r+r%r4r&r5r6r'r(r8r2r>r7r,r;r r)r<r:r*r-rr@rrArBrDrCrNr�)Tr)Nr_F)r�)rr_)F)rT)r7r�)Nr_NT)Tr r�)NTT)Nr_Nr�)��__name__�
__module__�__qualname__�__firstlineno__rr^rrrmryr�r�r�rcr�r�r�r�r�r�r�r�r�r�r
�staticmethodrrr4r8rArUrYrerjrorr�r�r�r�r�r�r�r�r�r rr&r%r5r4r1r0r�rercr�r�r�r�r�r�r�r�r�r�r�rr
r
r�rr'r*r0r7r:r�rIr[r`r9r�r�rrrwr{r�r�r�r�r�r�r�r�r�r�r�rDr�rBr�r@r�r�r�r�r�r�rjr�rwrxr�r�r�rmr�rr�r�r r�rr4r�r�rCrKrOrUrcrhrgrfryr}r�r�r�r�r�r
r�r�r�r�r�r�rlr�r�r�r�r�r�r�r�r�r�r�r�rr
r
�__static_attributes__�
__classcell__)rQs@rRrr4sw���5J�n/�E�&.#�`.���"�b�-�4�6�2,�6�'�&)�	#�	#��"=�����05�2�G�$���$�2
�
��:.�`�.�6J�X	?�F"�PFK�P�G�R��$�Q�f�>�@�=�"�@�q�f9�v<�|�,�
/�b�>� 	�
�S�j�:��$+�
�<�(�T1�$�$�%�@�&�P"�Q��0
��(�$
�
�
�� 
�
�.�`,�\�"�,��
���13��6`�F�P��!�F
�#�C�,4���"@��(�P�<��"�,�,(�T�*!�F
��*
��B
�N��
��4G�
��� �2�:6�7�c�.G��4>�U�n�4
1�4�l	�4�#�J!�FT�l�"	��
I��X5�t�;�z�>�@�*�rTr)$�__id__�__version__�__date__�
__copyright__�__license__�gi�require_version�
gi.repositoryrr�r�rsr�orcarrrrr	�orca.ax_componentr
�orca.ax_documentr�orca.ax_hypertextr�orca.ax_objectr
�
orca.ax_tabler�orca.ax_textr�orca.ax_utilitiesr�orca.ax_utilities_debuggingrrr�rTrR�<module>r(s���*������7�
���	����7�E�"���	��
���$�!�!�)�'�)�#�!��)�<�]9� �*�*�]9rT

Filemanager

Name Type Size Permission Actions
__init__.cpython-313.pyc File 365 B 0644
bookmarks.cpython-313.pyc File 6.07 KB 0644
braille_generator.cpython-313.pyc File 14.75 KB 0644
script.cpython-313.pyc File 139.03 KB 0644
script_utilities.cpython-313.pyc File 188.59 KB 0644
speech_generator.cpython-313.pyc File 38.75 KB 0644
Filemanager