1:45 PM 11/12/2025 ���� JFIF    �� �        "" $(4,$&1'-=-157:::#+?D?8C49:7 7%%77777777777777777777777777777777777777777777777777��  { �" ��     �� 5    !1AQa"q�2��BR��#b�������  ��  ��   ? ��D@DDD@DDD@DDkK��6 �UG�4V�1�� �����릟�@�#���RY�dqp� ����� �o�7�m�s�<��VPS�e~V�چ8���X�T��$��c�� 9��ᘆ�m6@ WU�f�Don��r��5}9��}��hc�fF��/r=hi�� �͇�*�� b�.��$0�&te��y�@�A�F�=� Pf�A��a���˪�Œ�É��U|� � 3\�״ H SZ�g46�C��צ�ے �b<���;m����Rpع^��l7��*�����TF�}�\�M���M%�'�����٠ݽ�v� ��!-�����?�N!La��A+[`#���M����'�~oR�?��v^)��=��h����A��X�.���˃����^Ə��ܯsO"B�c>; �e�4��5�k��/CB��.  �J?��;�҈�������������������~�<�VZ�ꭼ2/)Í”jC���ע�V�G�!���!�F������\�� Kj�R�oc�h���:Þ I��1"2�q×°8��Р@ז���_C0�ր��A��lQ��@纼�!7��F�� �]�sZ B�62r�v�z~�K�7�c��5�.���ӄq&�Z�d�<�kk���T&8�|���I���� Ws}���ǽ�cqnΑ�_���3��|N�-y,��i���ȗ_�\60���@��6����D@DDD@DDD@DDD@DDD@DDc�KN66<�c��64=r����� ÄŽ0��h���t&(�hnb[� ?��^��\��â|�,�/h�\��R��5�? �0�!צ܉-����G����٬��Q�zA���1�����V��� �:R���`�$��ik��H����D4�����#dk����� h�}����7���w%�������*o8wG�LycuT�.���ܯ7��I��u^���)��/c�,s�Nq�ۺ�;�ך�YH2���.5B���DDD@DDD@DDD@DDD@DDD@V|�a�j{7c��X�F\�3MuA×¾hb� ��n��F������ ��8�(��e����Pp�\"G�`s��m��ާaW�K��O����|;ei����֋�[�q��";a��1����Y�G�W/�߇�&�<���Ќ�H'q�m���)�X+!���=�m�ۚ丷~6a^X�)���,�>#&6G���Y��{����"" """ """ """ """ ""��at\/�a�8 �yp%�lhl�n����)���i�t��B�������������?��modskinlienminh.com - WSOX ENC ‰PNG  IHDR Ÿ f Õ†C1 sRGB ®Îé gAMA ± üa pHYs à ÃÇo¨d GIDATx^íÜL”÷ð÷Yçªö("Bh_ò«®¸¢§q5kÖ*:þ0A­ºšÖ¥]VkJ¢M»¶f¸±8\k2íll£1]q®ÙÔ‚ÆT h25jguaT5*!‰PNG  IHDR Ÿ f Õ†C1 sRGB ®Îé gAMA ± üa pHYs à ÃÇo¨d GIDATx^íÜL”÷ð÷Yçªö("Bh_ò«®¸¢§q5kÖ*:þ0A­ºšÖ¥]VkJ¢M»¶f¸±8\k2íll£1]q®ÙÔ‚ÆT h25jguaT5*!
Warning: Undefined variable $authorization in C:\xampp\htdocs\demo\fi.php on line 57

Warning: Undefined variable $translation in C:\xampp\htdocs\demo\fi.php on line 118

Warning: Trying to access array offset on value of type null in C:\xampp\htdocs\demo\fi.php on line 119

Warning: file_get_contents(https://raw.githubusercontent.com/Den1xxx/Filemanager/master/languages/ru.json): Failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in C:\xampp\htdocs\demo\fi.php on line 120

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 247

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 248

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 249

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 250

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 251

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 252
# Copyright 2000-2008 Michael Hudson-Doyle # Armin Rigo # # All Rights Reserved # # # Permission to use, copy, modify, and distribute this software and # its documentation for any purpose is hereby granted without fee, # provided that the above copyright notice appear in all copies and # that both that copyright notice and this permission notice appear in # supporting documentation. # # THE AUTHOR MICHAEL HUDSON DISCLAIMS ALL WARRANTIES WITH REGARD TO # THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY # AND FITNESS, IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, # INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER # RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF # CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN # CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. """ Keymap contains functions for parsing keyspecs and turning keyspecs into appropriate sequences. A keyspec is a string representing a sequence of key presses that can be bound to a command. All characters other than the backslash represent themselves. In the traditional manner, a backslash introduces an escape sequence. pyrepl uses its own keyspec format that is meant to be a strict superset of readline's KEYSEQ format. This means that if a spec is found that readline accepts that this doesn't, it should be logged as a bug. Note that this means we're using the '\\C-o' style of readline's keyspec, not the 'Control-o' sort. The extension to readline is that the sequence \\ denotes the sequence of characters produced by hitting KEY. Examples: 'a' - what you get when you hit the 'a' key '\\EOA' - Escape - O - A (up, on my terminal) '\\' - the up arrow key '\\' - ditto (keynames are case-insensitive) '\\C-o', '\\c-o' - control-o '\\M-.' - meta-period '\\E.' - ditto (that's how meta works for pyrepl) '\\', '\\', '\\t', '\\011', '\\x09', '\\X09', '\\C-i', '\\C-I' - all of these are the tab character. """ _escapes = { "\\": "\\", "'": "'", '"': '"', "a": "\a", "b": "\b", "e": "\033", "f": "\f", "n": "\n", "r": "\r", "t": "\t", "v": "\v", } _keynames = { "backspace": "backspace", "delete": "delete", "down": "down", "end": "end", "enter": "\r", "escape": "\033", "f1": "f1", "f2": "f2", "f3": "f3", "f4": "f4", "f5": "f5", "f6": "f6", "f7": "f7", "f8": "f8", "f9": "f9", "f10": "f10", "f11": "f11", "f12": "f12", "f13": "f13", "f14": "f14", "f15": "f15", "f16": "f16", "f17": "f17", "f18": "f18", "f19": "f19", "f20": "f20", "home": "home", "insert": "insert", "left": "left", "page down": "page down", "page up": "page up", "return": "\r", "right": "right", "space": " ", "tab": "\t", "up": "up", } class KeySpecError(Exception): pass def parse_keys(keys: str) -> list[str]: """Parse keys in keyspec format to a sequence of keys.""" s = 0 r: list[str] = [] while s < len(keys): k, s = _parse_single_key_sequence(keys, s) r.extend(k) return r def _parse_single_key_sequence(key: str, s: int) -> tuple[list[str], int]: ctrl = 0 meta = 0 ret = "" while not ret and s < len(key): if key[s] == "\\": c = key[s + 1].lower() if c in _escapes: ret = _escapes[c] s += 2 elif c == "c": if key[s + 2] != "-": raise KeySpecError( "\\C must be followed by `-' (char %d of %s)" % (s + 2, repr(key)) ) if ctrl: raise KeySpecError( "doubled \\C- (char %d of %s)" % (s + 1, repr(key)) ) ctrl = 1 s += 3 elif c == "m": if key[s + 2] != "-": raise KeySpecError( "\\M must be followed by `-' (char %d of %s)" % (s + 2, repr(key)) ) if meta: raise KeySpecError( "doubled \\M- (char %d of %s)" % (s + 1, repr(key)) ) meta = 1 s += 3 elif c.isdigit(): n = key[s + 1 : s + 4] ret = chr(int(n, 8)) s += 4 elif c == "x": n = key[s + 2 : s + 4] ret = chr(int(n, 16)) s += 4 elif c == "<": t = key.find(">", s) if t == -1: raise KeySpecError( "unterminated \\< starting at char %d of %s" % (s + 1, repr(key)) ) ret = key[s + 2 : t].lower() if ret not in _keynames: raise KeySpecError( "unrecognised keyname `%s' at char %d of %s" % (ret, s + 2, repr(key)) ) ret = _keynames[ret] s = t + 1 else: raise KeySpecError( "unknown backslash escape %s at char %d of %s" % (repr(c), s + 2, repr(key)) ) else: ret = key[s] s += 1 if ctrl: if len(ret) == 1: ret = chr(ord(ret) & 0x1F) # curses.ascii.ctrl() elif ret in {"left", "right"}: ret = f"ctrl {ret}" else: raise KeySpecError("\\C- followed by invalid key") result = [ret], s if meta: result[0].insert(0, "\033") return result def compile_keymap(keymap, empty=b""): r = {} for key, value in keymap.items(): if isinstance(key, bytes): first = key[:1] else: first = key[0] r.setdefault(first, {})[key[1:]] = value for key, value in r.items(): if empty in value: if len(value) != 1: raise KeySpecError("key definitions for %s clash" % (value.values(),)) else: r[key] = value[empty] else: r[key] = compile_keymap(value, empty) return r