� H�g�X����dZddlZddlmZmZmZmZmZmZm Z m Z m Z m Z ddl mZmZmZmZmZmZmZmZmZmZmZddlmZgd�ZdZGd�d e��ZGd �d e��ZGd �d e��ZdS)z� pygments.lexers.ruby ~~~~~~~~~~~~~~~~~~~~ Lexers for Ruby and related languages. :copyright: Copyright 2006-2025 by the Pygments team, see AUTHORS. :license: BSD, see LICENSE for details. �N) �Lexer� RegexLexer�ExtendedRegexLexer�include�bygroups�default� LexerContext� do_insertions�words�line_re) �Text�Comment�Operator�Keyword�Name�String�Number� Punctuation�Error�Generic� Whitespace��shebang_matches)� RubyLexer�RubyConsoleLexer� FancyLexer)�*z**�-�+z-@z+@�/�%�&�|�^�`�~z[]z[]=�<<z>>�<�<>z<=>�>z>=z==z===c���eZdZdZdZdZgd�Zgd�ZddgZdZ e j e j zZ d �Zd �Zgd ejf�d ejf�d ejf�edd���ef�deeeej��f�deee��df�dedf�deee��df�edd���ejf�dejf�edd���ejf�dejf�eddd���ejf�dejjf�d ef�d!ef�d"ejd#f�d$eee j!��d%f�d&e j!d%f�d'eee j!��d%f�d(ee"j#ee��f�d)ee"j$ee��f�d*ee"j%ee��f�d+ee"j&ee��f�d,ej'j(f�d-ej'j)f�d.ej'j*f�d/ej'j*f�d0ej'j*f�d1ef�e+d2���d3e j,f�d4ej-f�ee.d5�6��eeej��f�d7eee��f�d8ef�d9ef�d:ef�d;e/f�d<ef�d=e/d>fd?eej(eej0��d@fe1d@��gd=e/d>fdAed@fdBej(d@fe1d@��gdCee/e��d@fd=edDfe+dE��gdFe j2dDfdGe j2d@fe+dE��gdHe j2dIfdJe j2fdKe j2fge+dL��dMe j3fge+dL��dNe j!fdOe j!fge+dL��dNe j4fdOe j4fge+dL��dPe j!fdQe j!fdNe j!fdRe j!fdSe j!d@fgdTejd@fgdU� Z5e5�6e����dV�Z7dWS)Xrz For Ruby source code. �Rubyzhttp://www.ruby-lang.org)�ruby�rb�duby) z*.rbz*.rbw�Rakefilez*.rakez *.gemspecz*.rbxz*.duby�Gemfile� Vagrantfilez text/x-rubyzapplication/x-ruby�c#��K�|�d��}|t|�d��fV�|�d��tj|�d��fV�|�d��tj|�d��fV�|�d��tj|�d��fV�|j�dg��}t|�� }|� |�d��dv|�d��f��|�d��|_ |� d��|_ t|��dkr|� |� ��Ed{V��n)|j tj|�d��fV�|� ��|_ |�rw|D�]S\}}g}tj|j|j ��D]�}|r'|������} n&|������} | |kr�|D]7} | ���tj| ���fV��8|���tj|���fV�|� ��|_ nK|� |����|D]2} | ���t&| ���fV��3��Ut|j��|_ |dd�=dSdS) N����� heredocstack)z<<-z<<~��d��context)�startr�groupr�Heredoc� Delimiter�__dict__� setdefault�bool�append�pos�end�len�get_tokens_unprocessedr �finditer�text�strip�rstripr) �self�match�ctxr>r9� outermost�tolerant�hdname�lines�check�amatchs �d/home/asafur/pinokio/api/open-webui.git/app/env/lib/python3.11/site-packages/pygments/lexers/ruby.py�heredoc_callbackzRubyLexer.heredoc_callback+s����� � �A�����X�u�{�{�1�~�~�-�-�-�-��k�k�!�n�n�f�n�e�k�k�!�n�n�<�<�<�<��k�k�!�n�n�f�.�� � �A���>�>�>�>��k�k�!�n�n�f�n�e�k�k�!�n�n�<�<�<�<��|�.�.�~�r�B�B� ��\�*�*�*� ����U�[�[��^�^�~�=�u�{�{�1�~�~�N�O�O�O��+�+�a�.�.����)�)�A�,�,��� �|� � �s� "� "��2�2�3�2�?�?� ?� ?� ?� ?� ?� ?� ?� ?��'�6�>�5�;�;�q�>�>�9� 9� 9� 9��)�)�+�+��� � �$0� D� D� ��&���$�-�c�h���@�@�D�D�E��7� %� � � � � 3� 3� 5� 5��� %� � � � � 4� 4� 6� 6������&+�Q�Q�F�"(�,�,�.�.�&�.�&�,�,�.�.�"P�P�P�P�P�#�k�k�m�m�V�-=�u�{�{�}�}�L�L�L�L�"'�)�)�+�+������ � �U�+�+�+�+�#(�D�D��$�l�l�n�n�e�V�\�\�^�^�C�C�C�C�C���#�(�m�m�C�G��Q�Q�Q����- � �c �x�d�}d�}i}dtjfttd���tjfdtjfdtjdfd t tjt ��fd tjd fd tjd fdtjdfg|d<dtjd fdtjd fdtjd fdtjdffD]*\}}}td��d|�d�|fd|f||dfg|d|z<�+dD�]�\}}}}d|zdztj f|tj df|tj dftd��d |zdztj fd!|zd"ztj fg||d#z<|d� d$|ztj |d#zf��d|zdztj f|tj df|tj dfd |zdztj fd!|zd"ztj fg||d%z<|d� d&|ztj |d%zf��d|zdztj f|tj df|d'ztj dftd(��d |zdztj fd!|zd"ztj fg||d)z<|d� d*|ztj |d)zf�����|dxxd+|fd,tj fd-|fd.t ttj d��fd/t ttj d��fd0|fgz cc<|S)1Nc3��K�|�d��tj|�d��fV�t |�d��ddg��}|�|���D]#\}}}|�d��|z||fV��$|�d��tj|�d��fV�|���|_dS)Nr5r7r�interpolated-regexr<r8)r>r�Regexr?r rIrGrF�rNrOrP�nctx�i�t�vs rW�intp_regex_callbackz<RubyLexer.gen_rubystrings_rules.<locals>.intp_regex_callback[s������+�+�a�.�.�&�,�� � �A���>� >� >� >��� � �A����4H�3I�J�J�D��6�6�t�6�D�D� -� -���1�a��k�k�!�n�n�Q�&��1�,�,�,�,�,��+�+�a�.�.�&�,�� � �A���>� >� >� >��i�i�k�k�C�G�G�GrYc3��K�|�d��tj|�d��fV�t |�d��ddg��}|�|���D]#\}}}|�d��|z||fV��$|�d��tj|�d��fV�|���|_dS)Nr5r7r�interpolated-stringr<r8)r>r�Otherr?r rIrGrFr^s rW�intp_string_callbackz=RubyLexer.gen_rubystrings_rules.<locals>.intp_string_callbackcs������+�+�a�.�.�&�,�� � �A���>� >� >� >��� � �A����4I�3J�K�K�D��6�6�t�6�D�D� -� -���1�a��k�k�!�n�n�Q�&��1�,�,�,�,�,��+�+�a�.�.�&�,�� � �A���>� >� >� >��i�i�k�k�C�G�G�GrYz\:@{0,2}[a-zA-Z_]\w*[!?]?z\:@{0,2}��prefixz:'(\\\\|\\[^\\]|[^'\\])*'z:"z simple-symz([a-zA-Z_]\w*)(:)(?!:)�"zsimple-string-double�'zsimple-string-singlez(?<!\.)`zsimple-backtick�stringsz string-doublez string-single�sym�backtickr%�string-intp-escapedz[^\\z#]+�[\\#]�#popzsimple-))�\{�\}z{}�cb)z\[z\]z\[\]�sb)�\(z\)z()�pa)r(r*r)�abz\\[\\�]�#pushz[\\#z[^\\#z]+z -intp-stringz%[QWx]?z-stringz%[qsw]z [mixounse]*� string-intpz-regexz%rz-(%r([\W_]))((?:\\\2|(?!\2).)*)(\2[mixounse]*)z"%[qsw]([\W_])((?:\\\1|(?!\1).)*)\1z&(%[QWx]([\W_]))((?:\\\2|(?!\2).)*)(\2)z<(?<=[-+/*%=<>&!^|~,(])(\s*)(%([\t ])(?:(?:\\\3|(?!\3).)*)\3)z'^(\s*)(%([\t ])(?:(?:\\\3|(?!\3).)*)\3)z*(%([^a-zA-Z0-9\s]))((?:\\\2|(?!\2).)*)(\2))r�Symbolr �RUBY_OPERATORSrr�Double�Single�BacktickrrfrEr]r) rcrg�states�name�ttyperG�lbrace�rbrace�braceccs rW�gen_rubystrings_ruleszRubyLexer.gen_rubystrings_rulesZs��� "� "� "� "� "� "���*�6�=� 9� �>�+� 6� 6� 6�� � F� )�6�=� 9� �F�M�<� 0� &� �f�m�[� 1� 1� 3� �6�=�"8� 9� �6�=�"8� 9� �&�/�+<� =�  ��y��"1�&�-�� E�!0�&�-�� E�!&�� �s� ;�!+�V�_�c� B�!C� � � �D�%�� �-�.�.�!��!�!�!�5�)��5�!��e�V�$� &�F�9�T�>� "� "�'�! 6�! 6� )�F�F�G�T� �G�#�c�)�6�<�8����w�/����v�.��-�.�.��7�"�S�(�&�,�7��G�#�d�*�F�L�9� +�F�4��&� '� �9� � $� $�j�6�&9�6�<�&*�>�&9�&;� <� <� <��G�#�c�)�6�<�8����w�/����v�.��7�"�S�(�&�,�7��G�#�d�*�F�L�9� &�F�4� �>� "� �9� � $� $�i�&�&8�&�,�&*�9�n�&6� 7� 7� 7��G�#�c�)�6�<�8����w�/��-�'���v�>�� �&�&��7�"�S�(�&�,�7��G�#�d�*�F�L�9� %�F�4��=� !� �9� � $� $�e�f�n�f�l�&*�8�m�&5� 6� 6� 6� 6� �y���� =� � "�3�F�L� A� 6� !� #�M� �j�&�,�� 5� 5� 7�8� �j�&�,�� 5� 5� 7�;� !� #�# � ����*� rYz\A#!.+?$z#.*?$z=begin\s.*?\n=end.*?$)�BEGIN�END�alias�begin�break�casezdefined?�do�else�elsifrG�ensure�for�if�in�next�redo�rescue�raise�retry�return�super�then�undef�unless�until�when�while�yield�\b��suffixz.(module)(\s+)([a-zA-Z_]\w*(?:::[a-zA-Z_]\w*)*)z (def)(\s+)�funcnamezdef(?=[*%&^`~+-/\[<>=])z (class)(\s+)� classname)� initialize�new�loopr�extendr�� attr_reader� attr_writer� attr_accessor�attr�catch�throw�private�module_function�public� protected�true�false�nilz(not|and|or)\b)�autoload� block_given� const_defined�eql�equal�frozenr� instance_of�is_a�iterator�kind_of�method_definedr��private_method_defined�protected_method_defined�public_method_defined� respond_to�taintedz\?z(chomp|chop|exit|gsub|sub)!)e�Array�Float�Integerr�__id__�__send__�abort� ancestors�at_exitr��binding�callcc�callerr��chomp�chop� class_eval�class_variables�clonezconst_defined?� const_get� const_missing� const_set� constants�display�dup�eval�exec�exitr��fail�fork�format�freeze�getc�gets�global_variables�gsub�hash�id�included_modules�inspect� instance_eval�instance_method�instance_methods�instance_variable_get�instance_variable_set�instance_variables�lambda�load�local_variablesr��method�method_missing�methods� module_evalr�� object_id�open�p�print�printf�private_class_method�private_instance_methods�private_methods�proc�protected_instance_methods�protected_methods�public_class_method�public_instance_methods�public_methods�putc�putsr��rand�readline� readlines�require�scan�selectrN�send�set_trace_func�singleton_methods�sleep�split�sprintf�srand�sub�syscall�system�taint�testr��to_a�to_s� trace_var�trap�untaint� untrace_var�warnz(?<!\.))rir�z__(FILE|LINE)__\bz2(?<!\w)(<<[-~]?)(["`\']?)([a-zA-Z_]\w*)(\2)(.*?\n)z(<<[-~]?)("|\')()(\2)(.*?\n)�__END__�end-partab(?:^|(?<=[=<>~!:])|(?<=(?:\s|;)when\s)|(?<=(?:\s|;)or\s)|(?<=(?:\s|;)and\s)|(?<=\.index\s)|(?<=\.scan\s)|(?<=\.sub\s)|(?<=\.sub!\s)|(?<=\.gsub\s)|(?<=\.gsub!\s)|(?<=\.match\s)|(?<=(?:\s|;)if\s)|(?<=(?:\s|;)elsif\s)|(?<=^when\s)|(?<=^index\s)|(?<=^scan\s)|(?<=^sub\s)|(?<=^gsub\s)|(?<=^sub!\s)|(?<=^gsub!\s)|(?<=^match\s)|(?<=^if\s)|(?<=^elsif\s))(\s*)(/)�multiline-regexz (?<=\(|,|\[)/z(\s+)(/)(?![\s=])z#(0_?[0-7]+(?:_[0-7]+)*)(\s*)([/?])?z.(0x[0-9A-Fa-f]+(?:_[0-9A-Fa-f]+)*)(\s*)([/?])?z (0b[01]+(?:_[01]+)*)(\s*)([/?])?�([\d]+(?:_\d+)*)(\s*)([/?])?�@@[a-zA-Z_]\w*� @[a-zA-Z_]\w*z\$\w+z\$[!@&`\'+~=/\\,;.<>_*$?:"^-]z\$-[0adFiIlpvw]z::rlzI\?(\\[MC]-)*(\\([\\abefnrstv#"\']|x[a-fA-F0-9]{1,2}|[0-7]{1,3})|\S)(?!\w)z[A-Z]\w+z(\.|::)rhz,(\.|::)([a-zA-Z_]\w*[!?]?|[*%&^`~+\-/\[<>=])z[a-zA-Z_]\w*[!?]?z:(\[|\]|\*\*|<<?|>>?|>=|<=|<=>|=~|={3}|!~|&&?|\|\||\.{1,3})z[-+/*%=<>&!^|~]=?z [(){};,/?:\\]�\s+rv�defexprz�(?:([a-zA-Z_]\w*)(\.))?([a-zA-Z\u0080-\uffff][a-zA-Z0-9_\u0080-\uffff]*[!?=]?|!=|!~|=~|\*\*?|[-+!~]@?|[/%&|^]|<=>|<[<=]?|>[>=]?|===?|\[\]=?|`)rqr'z [A-Z_]\w*z (\))(\.|::)?rz�rootrrrsz#\{�in-intpz#@@?[a-zA-Z_]\w*z#\$[a-zA-Z_]\w*r{z2\\([\\abefnrstv#"\']|x[a-fA-F0-9]{1,2}|[0-7]{1,3})rpz[^\\#]+z\\\\z\\/z[^\\/#]+z /[mixounse]*z.+) r,r�r�r+r-r{ror\rer&r%c�"�t|d��S)Nz ruby(1\.\d)?r)rKs rW� analyse_textzRubyLexer.analyse_text�s���t�_�5�5�5rYN)8�__name__� __module__� __qualname__�__doc__r��url�aliases� filenames� mimetypes� version_added�re�DOTALL� MULTILINE�flagsrXr�r�Hashbangr� Multiliner rrrr� Namespace�Pseudor�Word�Builtin�Preprocr rr]r�Oct�Hex�Binr��Variable�Class�Instance�Globalr�Char�Constantr}r�Functionr�Interpol�Escaperf�tokens�updater/�rYrWrrs��������� �D� $�C�$�$�$�G�>�>�>�I�� 4�5�I��M� �I�� � $�E�- �- �- �^e�e�e�PG � �'�*� +�G � �w�~� &�G �&�w�'8� 9�G � �U�=�FK� L�L�L� �  � G �%� �X�g�z�4�>� :� :� <�G ��H�H�W�j�9�9�:� F�G � (��*� =�!G �"�h�h�w� �;�;�[� I�#G �&�U�R�� ��� �^�  �'G �2�� � .�3G �4�U�B�KP� Q�Q�Q� �\�  �5G �@,�T�\� :�AG �B�U�'�*0:�%�+I�I�I�,�\�- �CG �p"�4�<�#6� 7�qG �tC� � �uG �z-�.>� ?�{G �|���*� 5�}G �@�.$�8�D�&�,�7�7�9J�/ L�AG �r�v�|�->� ?�sG �v"�8�8�J�� �#E�#E� � �wG �J4� �X�f�j�*�h� 7� 7� 9�KG �N?� �X�f�j�*�h� 7� 7� 9�OG �R1� �X�f�j�*�h� 7� 7� 9�SG �V-� �X�f�n�j�(� ;� ;� =�WG �\�� � 3� 4�]G �^�t�}�5� 6�_G �`�t�}�+� ,�aG �b.�t�}�/C� D�cG �d ���!5� 6�eG �f�H� �gG �h �G�I� � �iG �l��[� �mG �t�$�-� (�uG �z�U�>�*� 5� 5� 5� �X�h�� � .� .� 0�{G �~=� �X�h�� %� %� '�G �B"�4� (�CG �D%�&.� 0�EG �H"�8� ,�IG �J�{� +�KG �L�Z� �MG �R�K�� +���X�d�j�(�D�M� :� :�F� D� �G�F�O�O�  ��K�� +� �H�f� %� �4�:�v� .� �G�F�O�O�  ��h�h�{�H�=�=�v� F� �H�g� &� �G�F�O�O� � �F�O�W� -� �F�O�V� ,� �G�F�O�O� � �V�_�i� 0� �&�/� 2� ��� 1� � �G�M� "� "� B� �]� � � �G�M� "� "� �v�|� $� ��� &� � �G�M� "� "� �v�|� $� ��� &� � �G�M� "� "� �f�l� #� �V�\� "� �v�|� $� �&�,� '� �f�l�F� 3�  ��G�O�V� ,� �CD�D�F�J �M�M�'�'�)�)�*�*�*�6�6�6�6�6rYrc�V�eZdZdZdZddgZdgZdZdZdZ e j d ��Z d �Z d S) rz8 For Ruby interactive console (**irb**) output. zRuby irb session�rbcon�irbztext/x-ruby-shellsessionzhttps://www.ruby-lang.orgr3z rbcon/consolez.irb\([a-zA-Z_]\w*\):\d{3}:\d+[>*"\'] |>> |\?> c #�xK�tdi|j��}d}g}tj|��D]�}|���}|j�|��}|�\|���}|�t|��dtj |d|�fgf��|||d�z }��|r-t||� |����Ed{V��d}g}|���tj|fV���|r+t||� |����Ed{V��dSdS)Nr3rrR)r�optionsr rJr?� _prompt_rerOrGrErHr�Promptr rIr>�Output) rNrK�rblexer�curcode� insertionsrO�line�mrGs rWrIz'RubyConsoleLexer.get_tokens_unprocessed�s������+�+�d�l�+�+����� ��%�d�+�+� :� :�E��;�;�=�=�D���%�%�d�+�+�A��}��e�e�g�g���!�!�3�w�<�<�%&����T�c�T� �$C�#D�#F�G�G�G��4����:�%����$�,�"�G�$B�$B�7�$K�$K� M� M�M�M�M�M�M�M�M� �G�!#�J��k�k�m�m�W�^�T�9�9�9�9�9� � E�$��G�:�:�7�C�C�E�E� E� E� E� E� E� E� E� E� E� E� ErYN)r0r1r2r3r�r5r7r4r8�_exampler9�compilerXrIrRrYrWrr�sr�������� �D����G�+�,�I� %�C��M��H����)�*�*�J�E�E�E�E�ErYrc ���eZdZdZdZdZddgZddgZdgZd Z d e j d fd e j d fd e j d fde j d fde j d fde j d fde j d fde j d fde j d fde j d fg de fde j dfde j dfde j dfde j dfde j fde j dfde jfde jfde fd e fd!efd"ejfd#efed$d%�&��ejfd'ejfd(efd)ejfd*ejjfd+ejjfd,efd-efd.eeje e��fd/eeje e��fd0eeje e��fd1eej e e��fd2ej!fd3ej fgd4�Z"d5S)6rz� Pygments Lexer For Fancy. Fancy is a self-hosted, pure object-oriented, dynamic, class-based, concurrent general-purpose programming language running on Rubinius, the Ruby VM. �Fancyz!https://github.com/bakkdoor/fancyz*.fyz *.fancypack�fancy�fyztext/x-fancysrcz1.5z"/(\\\\|\\[^\\]|[^/\\])*/[egimosx]*rqz"!(\\\\|\\[^\\]|[^!\\])*![egimosx]*z\\(\\\\|[^\\])*\\[egimosx]*z$\{(\\\\|\\[^\\]|[^}\\])*\}[egimosx]*z"<(\\\\|\\[^\\]|[^>\\])*>[egimosx]*z%\[(\\\\|\\[^\\]|[^\]\\])*\][egimosx]*z$\((\\\\|\\[^\\]|[^)\\])*\)[egimosx]*z"@(\\\\|\\[^\\]|[^@\\])*@[egimosx]*z"%(\\\\|\\[^\\]|[^%\\])*%[egimosx]*z$\$(\\\\|\\[^\\]|[^$\\])*\$[egimosx]*r*zs\{(\\\\|\\[^\\]|[^}\\])*\}\s*�balanced-regexzs<(\\\\|\\[^\\]|[^>\\])*>\s*zs\[(\\\\|\\[^\\]|[^\]\\])*\]\s*zs\((\\\\|\\[^\\]|[^)\\])*\)\s*z&m?/(\\\\|\\[^\\]|[^///\n])*/[gcimosx]*zm(?=[/!\\{<\[(@%$])z#(.*?)\nz\'([^\'\s\[\](){}]+|\[\])z"""(\\\\|\\[^\\]|[^\\])*?"""z"(\\\\|\\[^\\]|[^"\\])*"zJ(def|class|try|catch|finally|retry|return|return_local|match|case|->|=>)\bz(self|super|nil|false|true)\bz[(){};,/?|:\\])�Objectr��Hash� Directory�FilerHrr� Enumerable�FancyEnumerable�Block� TrueClass�NilClass� FalseClass�Tupler|�Stack�Set� FancySpec�Method�Package�Ranger�r�z[a-zA-Z](\w|[-+?!=*/^><%])*:z[-+*/~,<>=&!?%^\[\].$]+z[A-Z]\w*r)r(z@@?z [a-zA-Z_]\w*z&(0[oO]?[0-7]+(?:_[0-7]+)*)(\s*)([/?])?z1(0[xX][0-9A-Fa-f]+(?:_[0-9A-Fa-f]+)*)(\s*)([/?])?z#(0[bB][01]+(?:_[01]+)*)(\s*)([/?])?r'z/\d+([eE][+-]?[0-9]+)|\d+\.\d+([eE][+-]?[0-9]+)?z\d+)rfr,N)#r0r1r2r3r�r4r6r5r7r8rr]rrrr|rrrLrr rBrMrrGrIrHrrrDrErFr�r�rPrRrYrWrr�sn�������� �D� -�C���'�I���o�G�"�#�I��M� 3�F�L�&� I� 2�F�L�&� I� +�V�\�6� B� 4�f�l�F� K� 2�F�L�&� I� 5�v�|�V� L� 4�f�l�F� K� 2�F�L�&� I� 2�F�L�&� I� 4�f�l�F� K�  ��Z� �/�� �>N� O� ,�f�l�<L� M� /���?O� P� .�� �>N� O� 6�� � E� #�V�\�3C� D��'�.� )� )�6�=� 9� ,�f� 5� (�&� 1��&� (�.�t�}� =� � � ,� �U�;�DI� J�J�J� �\�  �-�d�m� <� '�� 2� �$�-� (� �t�}�5� 6� �� � 3� 4� �H� � �d� #�7� �X�f�j�*�h� 7� 7� 9� A� �X�f�j�*�h� 7� 7� 9� 3� �X�f�j�*�h� 7� 7� 9� ,� �X�f�n�j�(� ;� ;� =� ?��� N� �V�^� $�i5 �D�D�F�F�FrYr) r3r9�pygments.lexerrrrrrrr r r r �pygments.tokenr rrrrrrrrrr� pygments.utilr�__all__r}rrrrRrYrW�<module>r|s����� � � � �C�C�C�C�C�C�C�C�C�C�C�C�C�C�C�C�C�C�C�C�C�C�C�C�4�4�4�4�4�4�4�4�4�4�4�4�4�4�4�4�4�4�4�4�4�4�4�4�4�4�)�)�)�)�)�)� 9� 9� 9���� m6�m6�m6�m6�m6�"�m6�m6�m6�` $E�$E�$E�$E�$E�u�$E�$E�$E�NS�S�S�S�S��S�S�S�S�SrY
Memory