From 6c8947e087482ee371e8499732691f63d80d972f Mon Sep 17 00:00:00 2001 From: Sami Samhuri Date: Wed, 23 Oct 2013 12:14:48 -0700 Subject: [PATCH] update sublime packages --- sublime/Packages/LineEndings/LineEndings.py | 4 +- .../LineEndings/package-metadata.json | 2 +- sublime/Packages/LineEndings/readme.md | 3 +- sublime/Packages/SFTP/Context.sublime-menu | 34 + .../SFTP/Default (Linux).sublime-keymap | 26 + .../SFTP/Default (OSX).sublime-keymap | 26 + .../SFTP/Default (Windows).sublime-keymap | 26 + .../Packages/SFTP/Default.sublime-commands | 132 ++ sublime/Packages/SFTP/Main.sublime-menu | 93 ++ sublime/Packages/SFTP/SFTP.default-config | 42 + sublime/Packages/SFTP/SFTP.py | 184 +++ sublime/Packages/SFTP/SFTP.sublime-settings | 61 + sublime/Packages/SFTP/Side Bar.sublime-menu | 36 + .../Packages/SFTP/Tab Context.sublime-menu | 5 + sublime/Packages/SFTP/lang/clock.json | 32 + sublime/Packages/SFTP/lang/months.json | 86 ++ .../SFTP/lib/linux-x32/libssl-0.9.8/_ssl.so | Bin 0 -> 93503 bytes .../SFTP/lib/linux-x32/libssl-1.0.0/_ssl.so | Bin 0 -> 109394 bytes .../SFTP/lib/linux-x32/libssl-10/_ssl.so | Bin 0 -> 113027 bytes .../SFTP/lib/linux-x64/libssl-0.9.8/_ssl.so | Bin 0 -> 110450 bytes .../SFTP/lib/linux-x64/libssl-1.0.0/_ssl.so | Bin 0 -> 128697 bytes .../SFTP/lib/linux-x64/libssl-10/_ssl.so | Bin 0 -> 132945 bytes sublime/Packages/SFTP/lib/linux/ssl.py | 437 ++++++ sublime/Packages/SFTP/license.txt | 33 + sublime/Packages/SFTP/messages.json | 11 + sublime/Packages/SFTP/messages/1.10.0.txt | 86 ++ sublime/Packages/SFTP/messages/1.3.0.txt | 21 + sublime/Packages/SFTP/messages/1.4.0.txt | 14 + sublime/Packages/SFTP/messages/1.5.0.txt | 21 + sublime/Packages/SFTP/messages/1.6.0.txt | 13 + sublime/Packages/SFTP/messages/1.7.0.txt | 89 ++ sublime/Packages/SFTP/messages/1.8.0.txt | 26 + sublime/Packages/SFTP/messages/1.9.0.txt | 41 + sublime/Packages/SFTP/messages/install.txt | 48 + sublime/Packages/SFTP/package-metadata.json | 1 + sublime/Packages/SFTP/python_license.txt | 58 + .../SFTP/schemes/All Hallow's Eve.sftpTheme | 101 ++ sublime/Packages/SFTP/schemes/Amy.sftpTheme | 101 ++ .../SFTP/schemes/Blackboard.sftpTheme | 101 ++ .../Packages/SFTP/schemes/Cobalt.sftpTheme | 101 ++ .../schemes/Custom Output.hidden-tmLanguage | 102 ++ sublime/Packages/SFTP/schemes/Dawn.sftpTheme | 101 ++ .../Packages/SFTP/schemes/Eiffel.sftpTheme | 101 ++ .../SFTP/schemes/Espresso Libre.sftpTheme | 101 ++ sublime/Packages/SFTP/schemes/IDLE.sftpTheme | 101 ++ sublime/Packages/SFTP/schemes/LAZY.sftpTheme | 101 ++ .../SFTP/schemes/Mac Classic.sftpTheme | 101 ++ .../SFTP/schemes/MagicWB (Amiga).sftpTheme | 103 ++ .../SFTP/schemes/Monokai Bright.sftpTheme | 101 ++ .../Packages/SFTP/schemes/Monokai.sftpTheme | 101 ++ .../SFTP/schemes/Output.hidden-tmLanguage | 108 ++ .../Packages/SFTP/schemes/Output.tmLanguage | 108 ++ .../SFTP/schemes/Pastels on Dark.sftpTheme | 101 ++ .../SFTP/schemes/Slush & Poppies.sftpTheme | 101 ++ .../SFTP/schemes/Solarized (Dark).sftpTheme | 101 ++ .../SFTP/schemes/Solarized (Light).sftpTheme | 101 ++ .../SFTP/schemes/SpaceCadet.sftpTheme | 101 ++ .../Packages/SFTP/schemes/Sunburst.sftpTheme | 101 ++ .../Packages/SFTP/schemes/Twilight.sftpTheme | 101 ++ .../SFTP/schemes/Zenburnesque.sftpTheme | 101 ++ .../Packages/SFTP/schemes/iPlastic.sftpTheme | 101 ++ .../Packages/User/Package Control.last-run | 2 +- .../User/Package Control.sublime-settings | 4 +- .../User/Preferences.sublime-settings | 3 +- .../User/sftp_servers/dev.tapfortap.com | 31 + sublime/Packages/User/swi.sublime-settings | 5 + sublime/Packages/Web Inspector/.gitignore | 1 + .../Default (Linux).sublime-keymap | 3 + .../Default (OSX).sublime-keymap | 3 + .../Default (Windows).sublime-keymap | 3 + .../Web Inspector/Default.sublime-commands | 6 + .../Packages/Web Inspector/Main.sublime-menu | 85 ++ .../Packages/Web Inspector/README.markdown | 51 + .../Web Inspector/icons/breakpoint_active.png | Bin 0 -> 6917 bytes .../Web Inspector/icons/breakpoint_active.psd | Bin 0 -> 27000 bytes .../icons/breakpoint_current.png | Bin 0 -> 6917 bytes .../icons/breakpoint_inactive.png | Bin 0 -> 6917 bytes sublime/Packages/Web Inspector/messages.json | 4 + .../Packages/Web Inspector/messages/1.2.1.txt | 4 + .../Packages/Web Inspector/messages/1.4.txt | 3 + .../Web Inspector/messages/install.txt | 3 + .../Web Inspector/package-metadata.json | 1 + sublime/Packages/Web Inspector/packages.json | 20 + sublime/Packages/Web Inspector/swi.py | 1264 +++++++++++++++++ .../Web Inspector/swi.sublime-settings | 26 + .../Web Inspector/swi_log.JSON-tmLanguage | 115 ++ .../Packages/Web Inspector/swi_log.tmLanguage | 187 +++ .../Web Inspector/swi_stack.JSON-tmLanguage | 17 + .../Web Inspector/swi_stack.tmLanguage | 45 + sublime/Packages/Web Inspector/websocket.py | 742 ++++++++++ sublime/Packages/Web Inspector/wip/Console.py | 77 + sublime/Packages/Web Inspector/wip/DOM.py | 1 + .../Packages/Web Inspector/wip/DOMDebugger.py | 1 + .../Packages/Web Inspector/wip/Debugger.py | 219 +++ sublime/Packages/Web Inspector/wip/Network.py | 27 + sublime/Packages/Web Inspector/wip/Page.py | 6 + sublime/Packages/Web Inspector/wip/Runtime.py | 100 ++ .../Packages/Web Inspector/wip/__init__.py | 5 + sublime/Packages/Web Inspector/wip/utils.py | 66 + 99 files changed, 7356 insertions(+), 7 deletions(-) create mode 100644 sublime/Packages/SFTP/Context.sublime-menu create mode 100644 sublime/Packages/SFTP/Default (Linux).sublime-keymap create mode 100644 sublime/Packages/SFTP/Default (OSX).sublime-keymap create mode 100644 sublime/Packages/SFTP/Default (Windows).sublime-keymap create mode 100644 sublime/Packages/SFTP/Default.sublime-commands create mode 100644 sublime/Packages/SFTP/Main.sublime-menu create mode 100644 sublime/Packages/SFTP/SFTP.default-config create mode 100644 sublime/Packages/SFTP/SFTP.py create mode 100644 sublime/Packages/SFTP/SFTP.sublime-settings create mode 100644 sublime/Packages/SFTP/Side Bar.sublime-menu create mode 100644 sublime/Packages/SFTP/Tab Context.sublime-menu create mode 100644 sublime/Packages/SFTP/lang/clock.json create mode 100644 sublime/Packages/SFTP/lang/months.json create mode 100644 sublime/Packages/SFTP/lib/linux-x32/libssl-0.9.8/_ssl.so create mode 100644 sublime/Packages/SFTP/lib/linux-x32/libssl-1.0.0/_ssl.so create mode 100644 sublime/Packages/SFTP/lib/linux-x32/libssl-10/_ssl.so create mode 100644 sublime/Packages/SFTP/lib/linux-x64/libssl-0.9.8/_ssl.so create mode 100644 sublime/Packages/SFTP/lib/linux-x64/libssl-1.0.0/_ssl.so create mode 100644 sublime/Packages/SFTP/lib/linux-x64/libssl-10/_ssl.so create mode 100644 sublime/Packages/SFTP/lib/linux/ssl.py create mode 100644 sublime/Packages/SFTP/license.txt create mode 100644 sublime/Packages/SFTP/messages.json create mode 100644 sublime/Packages/SFTP/messages/1.10.0.txt create mode 100644 sublime/Packages/SFTP/messages/1.3.0.txt create mode 100644 sublime/Packages/SFTP/messages/1.4.0.txt create mode 100644 sublime/Packages/SFTP/messages/1.5.0.txt create mode 100644 sublime/Packages/SFTP/messages/1.6.0.txt create mode 100644 sublime/Packages/SFTP/messages/1.7.0.txt create mode 100644 sublime/Packages/SFTP/messages/1.8.0.txt create mode 100644 sublime/Packages/SFTP/messages/1.9.0.txt create mode 100644 sublime/Packages/SFTP/messages/install.txt create mode 100644 sublime/Packages/SFTP/package-metadata.json create mode 100644 sublime/Packages/SFTP/python_license.txt create mode 100644 sublime/Packages/SFTP/schemes/All Hallow's Eve.sftpTheme create mode 100644 sublime/Packages/SFTP/schemes/Amy.sftpTheme create mode 100644 sublime/Packages/SFTP/schemes/Blackboard.sftpTheme create mode 100644 sublime/Packages/SFTP/schemes/Cobalt.sftpTheme create mode 100644 sublime/Packages/SFTP/schemes/Custom Output.hidden-tmLanguage create mode 100644 sublime/Packages/SFTP/schemes/Dawn.sftpTheme create mode 100644 sublime/Packages/SFTP/schemes/Eiffel.sftpTheme create mode 100644 sublime/Packages/SFTP/schemes/Espresso Libre.sftpTheme create mode 100644 sublime/Packages/SFTP/schemes/IDLE.sftpTheme create mode 100644 sublime/Packages/SFTP/schemes/LAZY.sftpTheme create mode 100644 sublime/Packages/SFTP/schemes/Mac Classic.sftpTheme create mode 100644 sublime/Packages/SFTP/schemes/MagicWB (Amiga).sftpTheme create mode 100644 sublime/Packages/SFTP/schemes/Monokai Bright.sftpTheme create mode 100644 sublime/Packages/SFTP/schemes/Monokai.sftpTheme create mode 100644 sublime/Packages/SFTP/schemes/Output.hidden-tmLanguage create mode 100644 sublime/Packages/SFTP/schemes/Output.tmLanguage create mode 100644 sublime/Packages/SFTP/schemes/Pastels on Dark.sftpTheme create mode 100644 sublime/Packages/SFTP/schemes/Slush & Poppies.sftpTheme create mode 100644 sublime/Packages/SFTP/schemes/Solarized (Dark).sftpTheme create mode 100644 sublime/Packages/SFTP/schemes/Solarized (Light).sftpTheme create mode 100644 sublime/Packages/SFTP/schemes/SpaceCadet.sftpTheme create mode 100644 sublime/Packages/SFTP/schemes/Sunburst.sftpTheme create mode 100644 sublime/Packages/SFTP/schemes/Twilight.sftpTheme create mode 100644 sublime/Packages/SFTP/schemes/Zenburnesque.sftpTheme create mode 100644 sublime/Packages/SFTP/schemes/iPlastic.sftpTheme create mode 100644 sublime/Packages/User/sftp_servers/dev.tapfortap.com create mode 100644 sublime/Packages/User/swi.sublime-settings create mode 100644 sublime/Packages/Web Inspector/.gitignore create mode 100644 sublime/Packages/Web Inspector/Default (Linux).sublime-keymap create mode 100644 sublime/Packages/Web Inspector/Default (OSX).sublime-keymap create mode 100644 sublime/Packages/Web Inspector/Default (Windows).sublime-keymap create mode 100644 sublime/Packages/Web Inspector/Default.sublime-commands create mode 100644 sublime/Packages/Web Inspector/Main.sublime-menu create mode 100644 sublime/Packages/Web Inspector/README.markdown create mode 100644 sublime/Packages/Web Inspector/icons/breakpoint_active.png create mode 100644 sublime/Packages/Web Inspector/icons/breakpoint_active.psd create mode 100644 sublime/Packages/Web Inspector/icons/breakpoint_current.png create mode 100644 sublime/Packages/Web Inspector/icons/breakpoint_inactive.png create mode 100644 sublime/Packages/Web Inspector/messages.json create mode 100644 sublime/Packages/Web Inspector/messages/1.2.1.txt create mode 100644 sublime/Packages/Web Inspector/messages/1.4.txt create mode 100644 sublime/Packages/Web Inspector/messages/install.txt create mode 100644 sublime/Packages/Web Inspector/package-metadata.json create mode 100644 sublime/Packages/Web Inspector/packages.json create mode 100644 sublime/Packages/Web Inspector/swi.py create mode 100644 sublime/Packages/Web Inspector/swi.sublime-settings create mode 100644 sublime/Packages/Web Inspector/swi_log.JSON-tmLanguage create mode 100644 sublime/Packages/Web Inspector/swi_log.tmLanguage create mode 100644 sublime/Packages/Web Inspector/swi_stack.JSON-tmLanguage create mode 100644 sublime/Packages/Web Inspector/swi_stack.tmLanguage create mode 100644 sublime/Packages/Web Inspector/websocket.py create mode 100644 sublime/Packages/Web Inspector/wip/Console.py create mode 100644 sublime/Packages/Web Inspector/wip/DOM.py create mode 100644 sublime/Packages/Web Inspector/wip/DOMDebugger.py create mode 100644 sublime/Packages/Web Inspector/wip/Debugger.py create mode 100644 sublime/Packages/Web Inspector/wip/Network.py create mode 100644 sublime/Packages/Web Inspector/wip/Page.py create mode 100644 sublime/Packages/Web Inspector/wip/Runtime.py create mode 100644 sublime/Packages/Web Inspector/wip/__init__.py create mode 100644 sublime/Packages/Web Inspector/wip/utils.py diff --git a/sublime/Packages/LineEndings/LineEndings.py b/sublime/Packages/LineEndings/LineEndings.py index 85f8434..7500831 100644 --- a/sublime/Packages/LineEndings/LineEndings.py +++ b/sublime/Packages/LineEndings/LineEndings.py @@ -48,7 +48,7 @@ class SetLineEndingWindowCommand(sublime_plugin.TextCommand): sublime.active_window().focus_view(active_view); def is_enabled(self): - return len(sublime.active_window().views()) + return len(sublime.active_window().views()) > 0 class ConvertIndentationWindowCommand(sublime_plugin.TextCommand): @@ -64,4 +64,4 @@ class ConvertIndentationWindowCommand(sublime_plugin.TextCommand): def is_enabled(self): - return len(sublime.active_window().views()) \ No newline at end of file + return len(sublime.active_window().views()) > 0 diff --git a/sublime/Packages/LineEndings/package-metadata.json b/sublime/Packages/LineEndings/package-metadata.json index ab85b4a..5f10e27 100644 --- a/sublime/Packages/LineEndings/package-metadata.json +++ b/sublime/Packages/LineEndings/package-metadata.json @@ -1 +1 @@ -{"url": "https://github.com/SublimeText/LineEndings", "version": "2013.02.23.18.50.15", "description": "On statusbar and on command palete."} \ No newline at end of file +{"url": "https://github.com/SublimeText/LineEndings", "version": "2013.03.16.11.27.12", "description": "On statusbar and on command palete."} \ No newline at end of file diff --git a/sublime/Packages/LineEndings/readme.md b/sublime/Packages/LineEndings/readme.md index 35fb387..b3157c3 100644 --- a/sublime/Packages/LineEndings/readme.md +++ b/sublime/Packages/LineEndings/readme.md @@ -22,4 +22,5 @@ Install this repository via "Package Control" http://wbond.net/sublime_packages/ # Contributors - * polyvertex \ No newline at end of file + * polyvertex + * Nicholas Buse \ No newline at end of file diff --git a/sublime/Packages/SFTP/Context.sublime-menu b/sublime/Packages/SFTP/Context.sublime-menu new file mode 100644 index 0000000..e70c5de --- /dev/null +++ b/sublime/Packages/SFTP/Context.sublime-menu @@ -0,0 +1,34 @@ +[ + { "caption": "-" }, + { + "caption": "SFTP/FTP", + "children": + [ + { "caption": "Upload File", "command": "sftp_upload_file" }, + { "caption": "Upload Open Files", "command": "sftp_upload_open_files" }, + { "caption": "Download File", "command": "sftp_download_file" }, + { "caption": "-" }, + { "caption": "Upload Folder", "command": "sftp_upload_folder" }, + { "caption": "Download Folder", "command": "sftp_download_folder" }, + { "caption": "-" }, + { "caption": "Diff Remote File", "command": "sftp_diff_remote_file" }, + { "caption": "Rename Local and Remote Files", "command": "sftp_rename_local_and_remote_paths" }, + { "caption": "-" }, + { "caption": "Delete Local and Remote Files", "command": "sftp_delete_local_and_remote_paths" }, + { "caption": "Delete Remote File", "command": "sftp_delete_remote_path" }, + { "caption": "-" }, + { "caption": "Sync Local -> Remote…", "command": "sftp_sync_up" }, + { "caption": "Sync Remote -> Local…", "command": "sftp_sync_down" }, + { "caption": "Sync Both Directions…", "command": "sftp_sync_both" }, + { "caption": "-" }, + { "caption": "Monitor File (Upload on External Save)", "command": "sftp_monitor_file" }, + { "caption": "-" }, + { "caption": "Browse Remote…", "command": "sftp_browse" }, + { "caption": "-" }, + { "caption": "Map to Remote…", "command": "sftp_create_config" }, + { "caption": "Edit Remote Mapping…", "command": "sftp_edit_config" }, + { "caption": "Add Alternate Remote Mapping…", "command": "sftp_create_alt_config" }, + { "caption": "Switch Remote Mapping…", "command": "sftp_switch_config" } + ] + } +] diff --git a/sublime/Packages/SFTP/Default (Linux).sublime-keymap b/sublime/Packages/SFTP/Default (Linux).sublime-keymap new file mode 100644 index 0000000..de8211b --- /dev/null +++ b/sublime/Packages/SFTP/Default (Linux).sublime-keymap @@ -0,0 +1,26 @@ +[ + { "keys": ["ctrl+alt+u","ctrl+alt+f"], "command": "sftp_upload_file" }, + { "keys": ["ctrl+alt+u","ctrl+alt+r"], "command": "sftp_upload_folder" }, + { "keys": ["ctrl+alt+u","ctrl+alt+y"], "command": "sftp_sync_up" }, + { "keys": ["ctrl+alt+u","ctrl+alt+n"], "command": "sftp_upload_open_files" }, + { "keys": ["ctrl+alt+u","ctrl+alt+m"], "command": "sftp_monitor_file" }, + + { "keys": ["ctrl+alt+u","ctrl+alt+o"], "command": "sftp_download_file" }, + { "keys": ["ctrl+alt+u","ctrl+alt+e"], "command": "sftp_download_folder" }, + { "keys": ["ctrl+alt+u","ctrl+alt+d"], "command": "sftp_sync_down" }, + { "keys": ["ctrl+alt+u","ctrl+alt+i"], "command": "sftp_diff_remote_file" }, + + { "keys": ["ctrl+alt+u","ctrl+alt+b"], "command": "sftp_sync_both" }, + { "keys": ["ctrl+alt+u","ctrl+alt+c"], "command": "sftp_vcs_changed_files" }, + + { "keys": ["ctrl+alt+u","ctrl+alt+w"], "command": "sftp_browse" }, + + { "keys": ["ctrl+alt+r","ctrl+alt+s"], "command": "sftp_create_server" }, + { "keys": ["ctrl+alt+r","ctrl+alt+b"], "command": "sftp_browse_server" }, + { "keys": ["ctrl+alt+r","ctrl+alt+n"], "command": "sftp_last_server" }, + { "keys": ["ctrl+alt+r","ctrl+alt+e"], "command": "sftp_edit_server" }, + { "keys": ["ctrl+alt+r","ctrl+alt+d"], "command": "sftp_delete_server" }, + + { "keys": ["ctrl+alt+u","ctrl+alt+s"], "command": "sftp_show_panel" }, + { "keys": ["ctrl+alt+u","ctrl+alt+x"], "command": "sftp_cancel_upload" } +] \ No newline at end of file diff --git a/sublime/Packages/SFTP/Default (OSX).sublime-keymap b/sublime/Packages/SFTP/Default (OSX).sublime-keymap new file mode 100644 index 0000000..210799a --- /dev/null +++ b/sublime/Packages/SFTP/Default (OSX).sublime-keymap @@ -0,0 +1,26 @@ +[ + { "keys": ["super+ctrl+u","super+ctrl+f"], "command": "sftp_upload_file" }, + { "keys": ["super+ctrl+u","super+ctrl+r"], "command": "sftp_upload_folder" }, + { "keys": ["super+ctrl+u","super+ctrl+y"], "command": "sftp_sync_up" }, + { "keys": ["super+ctrl+u","super+ctrl+n"], "command": "sftp_upload_open_files" }, + { "keys": ["super+ctrl+u","super+ctrl+m"], "command": "sftp_monitor_file" }, + + { "keys": ["super+ctrl+u","super+ctrl+o"], "command": "sftp_download_file" }, + { "keys": ["super+ctrl+u","super+ctrl+e"], "command": "sftp_download_folder" }, + { "keys": ["super+ctrl+u","super+ctrl+d"], "command": "sftp_sync_down" }, + { "keys": ["super+ctrl+u","super+ctrl+i"], "command": "sftp_diff_remote_file" }, + + { "keys": ["super+ctrl+u","super+ctrl+b"], "command": "sftp_sync_both" }, + { "keys": ["super+ctrl+u","super+ctrl+c"], "command": "sftp_vcs_changed_files" }, + + { "keys": ["super+ctrl+u","super+ctrl+w"], "command": "sftp_browse" }, + + { "keys": ["super+ctrl+r","super+ctrl+s"], "command": "sftp_create_server" }, + { "keys": ["super+ctrl+r","super+ctrl+b"], "command": "sftp_browse_server" }, + { "keys": ["super+ctrl+r","super+ctrl+n"], "command": "sftp_last_server" }, + { "keys": ["super+ctrl+r","super+ctrl+e"], "command": "sftp_edit_server" }, + { "keys": ["super+ctrl+r","super+ctrl+d"], "command": "sftp_delete_server" }, + + { "keys": ["super+ctrl+u","super+ctrl+s"], "command": "sftp_show_panel" }, + { "keys": ["super+ctrl+u","super+ctrl+x"], "command": "sftp_cancel_upload" } +] \ No newline at end of file diff --git a/sublime/Packages/SFTP/Default (Windows).sublime-keymap b/sublime/Packages/SFTP/Default (Windows).sublime-keymap new file mode 100644 index 0000000..de8211b --- /dev/null +++ b/sublime/Packages/SFTP/Default (Windows).sublime-keymap @@ -0,0 +1,26 @@ +[ + { "keys": ["ctrl+alt+u","ctrl+alt+f"], "command": "sftp_upload_file" }, + { "keys": ["ctrl+alt+u","ctrl+alt+r"], "command": "sftp_upload_folder" }, + { "keys": ["ctrl+alt+u","ctrl+alt+y"], "command": "sftp_sync_up" }, + { "keys": ["ctrl+alt+u","ctrl+alt+n"], "command": "sftp_upload_open_files" }, + { "keys": ["ctrl+alt+u","ctrl+alt+m"], "command": "sftp_monitor_file" }, + + { "keys": ["ctrl+alt+u","ctrl+alt+o"], "command": "sftp_download_file" }, + { "keys": ["ctrl+alt+u","ctrl+alt+e"], "command": "sftp_download_folder" }, + { "keys": ["ctrl+alt+u","ctrl+alt+d"], "command": "sftp_sync_down" }, + { "keys": ["ctrl+alt+u","ctrl+alt+i"], "command": "sftp_diff_remote_file" }, + + { "keys": ["ctrl+alt+u","ctrl+alt+b"], "command": "sftp_sync_both" }, + { "keys": ["ctrl+alt+u","ctrl+alt+c"], "command": "sftp_vcs_changed_files" }, + + { "keys": ["ctrl+alt+u","ctrl+alt+w"], "command": "sftp_browse" }, + + { "keys": ["ctrl+alt+r","ctrl+alt+s"], "command": "sftp_create_server" }, + { "keys": ["ctrl+alt+r","ctrl+alt+b"], "command": "sftp_browse_server" }, + { "keys": ["ctrl+alt+r","ctrl+alt+n"], "command": "sftp_last_server" }, + { "keys": ["ctrl+alt+r","ctrl+alt+e"], "command": "sftp_edit_server" }, + { "keys": ["ctrl+alt+r","ctrl+alt+d"], "command": "sftp_delete_server" }, + + { "keys": ["ctrl+alt+u","ctrl+alt+s"], "command": "sftp_show_panel" }, + { "keys": ["ctrl+alt+u","ctrl+alt+x"], "command": "sftp_cancel_upload" } +] \ No newline at end of file diff --git a/sublime/Packages/SFTP/Default.sublime-commands b/sublime/Packages/SFTP/Default.sublime-commands new file mode 100644 index 0000000..baaf037 --- /dev/null +++ b/sublime/Packages/SFTP/Default.sublime-commands @@ -0,0 +1,132 @@ +[ + { + "caption": "SFTP: Upload File", + "command": "sftp_upload_file" + }, + { + "caption": "SFTP: Upload Open Files", + "command": "sftp_upload_open_files" + }, + { + "caption": "SFTP: Download File", + "command": "sftp_download_file" + }, + { + "caption": "SFTP: Upload Folder", + "command": "sftp_upload_folder" + }, + { + "caption": "SFTP: Download Folder", + "command": "sftp_download_folder" + }, + { + "caption": "SFTP: Diff Remote File", + "command": "sftp_diff_remote_file" + }, + { + "caption": "Rename Local and Remote Files", + "command": "sftp_rename_local_and_remote_paths" + }, + { + "caption": "Delete Local and Remote Files", + "command": "sftp_delete_local_and_remote_paths" + }, + { + "caption": "Delete Remote File", + "command": "sftp_delete_remote_path" + }, + { + "caption": "SFTP: Sync Local -> Remote…", + "command": "sftp_sync_up" + }, + { + "caption": "SFTP: Sync Remote -> Local…", + "command": "sftp_sync_down" + }, + { + "caption": "SFTP: Sync Both Directions…", + "command": "sftp_sync_both" + }, + { + "caption": "SFTP: Monitor File (Upload on External Save)", + "command": "sftp_monitor_file" + }, + { + "caption": "SFTP: Upload VCS Changed Files", + "command": "sftp_vcs_changed_files" + }, + { + "caption": "SFTP: Browse Remote…", + "command": "sftp_browse" + }, + { + "caption": "SFTP: Setup Server…", + "command": "sftp_create_server" + }, + { + "caption": "SFTP: Browse Server…", + "command": "sftp_browse_server" + }, + { + "caption": "SFTP: Edit Server…", + "command": "sftp_edit_server" + }, + { + "caption": "SFTP: Delete Server…", + "command": "sftp_delete_server" + }, + { + "caption": "SFTP: Map to Remote…", + "command": "sftp_create_config" + }, + { + "caption": "SFTP: Edit Remote Mapping…", + "command": "sftp_edit_config" + }, + { + "caption": "SFTP: Add Alternate Remote Mapping…", + "command": "sftp_create_alt_config" + }, + { + "caption": "SFTP: Switch Remote Mapping…", + "command": "sftp_switch_config" + }, + { + "caption": "SFTP: Show Panel", + "command": "sftp_show_panel" + }, + { + "caption": "SFTP: Cancel Upload", + "command": "sftp_cancel_upload" + }, + { + "caption": "Preferences: SFTP Settings", + "command": "open_file", "args": + { + "file": "${packages}/SFTP/SFTP.sublime-settings"} + }, + { + "caption": "Preferences: SFTP Key Bindings", + "command": "open_file", "args": + { + "file": "${packages}/SFTP/Default (Windows).sublime-keymap", + "platform": "Windows" + } + }, + { + "caption": "Preferences: SFTP Key Bindings", + "command": "open_file", "args": + { + "file": "${packages}/SFTP/Default (OSX).sublime-keymap", + "platform": "OSX" + } + }, + { + "caption": "Preferences: SFTP Key Bindings", + "command": "open_file", "args": + { + "file": "${packages}/SFTP/Default (Linux).sublime-keymap", + "platform": "Linux" + } + } +] diff --git a/sublime/Packages/SFTP/Main.sublime-menu b/sublime/Packages/SFTP/Main.sublime-menu new file mode 100644 index 0000000..ead032b --- /dev/null +++ b/sublime/Packages/SFTP/Main.sublime-menu @@ -0,0 +1,93 @@ +[ + { + "id": "file", + "children": + [ + { + "caption": "SFTP/FTP", + "mnemonic": "b", + "children": + [ + { "command": "sftp_create_server", "caption": "Setup Server…" }, + { "command": "sftp_browse_server", "caption": "Browse Server…" }, + { "command": "sftp_edit_server", "caption": "Edit Server…" }, + { "command": "sftp_delete_server", "caption": "Delete Server…" } + ] + } + ] + }, + { + "caption": "Preferences", + "mnemonic": "n", + "id": "preferences", + "children": + [ + { + "caption": "Package Settings", + "mnemonic": "P", + "id": "package-settings", + "children": + [ + { + "caption": "SFTP", + "children": + [ + { "command": "open_file", "args": {"file": "${packages}/SFTP/SFTP.sublime-settings"}, "caption": "Settings – Default" }, + { "command": "open_file", "args": {"file": "${packages}/User/SFTP.sublime-settings"}, "caption": "Settings – User" }, + { "caption": "-" }, + { + "command": "open_file", "args": + { + "file": "${packages}/SFTP/Default (Windows).sublime-keymap", + "platform": "Windows" + }, + "caption": "Key Bindings – Default" + }, + { + "command": "open_file", "args": + { + "file": "${packages}/SFTP/Default (OSX).sublime-keymap", + "platform": "OSX" + }, + "caption": "Key Bindings – Default" + }, + { + "command": "open_file", "args": + { + "file": "${packages}/SFTP/Default (Linux).sublime-keymap", + "platform": "Linux" + }, + "caption": "Key Bindings – Default" + }, + { + "command": "open_file", "args": + { + "file": "${packages}/User/Default (Windows).sublime-keymap", + "platform": "Windows" + }, + "caption": "Key Bindings – User" + }, + { + "command": "open_file", "args": + { + "file": "${packages}/User/Default (OSX).sublime-keymap", + "platform": "OSX" + }, + "caption": "Key Bindings – User" + }, + { + "command": "open_file", "args": + { + "file": "${packages}/User/Default (Linux).sublime-keymap", + "platform": "Linux" + }, + "caption": "Key Bindings – User" + }, + { "caption": "-" } + ] + } + ] + } + ] + } +] diff --git a/sublime/Packages/SFTP/SFTP.default-config b/sublime/Packages/SFTP/SFTP.default-config new file mode 100644 index 0000000..5633dfe --- /dev/null +++ b/sublime/Packages/SFTP/SFTP.default-config @@ -0,0 +1,42 @@ +{ + // The tab key will cycle through the settings when first created + // Visit http://wbond.net/sublime_packages/sftp/settings for help + + // sftp, ftp or ftps + "type": "${1:sftp}", + + "save_before_upload": ${2:true}, + "upload_on_save": ${3:false}, + "sync_down_on_open": ${4:false}, + "sync_skip_deletes": ${5:false}, + "confirm_downloads": ${6:false}, + "confirm_sync": ${7:true}, + "confirm_overwrite_newer": ${8:false}, + + "host": "${9:example.com}", + "user": "${10:username}", + ${11://}"password": "${12:password}", + ${13://}"port": "${14:22}", + + "remote_path": "${15:/example/path/}", + "ignore_regexes": [${16: + "\\\.sublime-(project|workspace)", "sftp-config(-alt\\\d?)?\\\.json", + "sftp-settings\\\.json", "/venv/", "\\\.svn", "\\\.hg", "\\\.git", + "\\\.bzr", "_darcs", "CVS", "\\\.DS_Store", "Thumbs\\\.db", "desktop\\\.ini" + }], + ${17://}"file_permissions": "${18:664}", + ${19://}"dir_permissions": "${20:775}", + + ${21://}"extra_list_connections": ${22:0}, + + "connect_timeout": ${23:30}, + ${24://}"keepalive": ${25:120}, + ${26://}"ftp_passive_mode": ${27:true}, + ${28://}"ssh_key_file": "${29:~/.ssh/id_rsa}", + ${30://}"sftp_flags": [${31:"-F", "/path/to/ssh_config"}], + + ${32://}"preserve_modification_times": ${33:false}, + ${34://}"remote_time_offset_in_hours": ${35:0}, + ${36://}"remote_encoding": "${37:utf-8}", + ${38://}"remote_locale": "${39:C}", +} \ No newline at end of file diff --git a/sublime/Packages/SFTP/SFTP.py b/sublime/Packages/SFTP/SFTP.py new file mode 100644 index 0000000..ccb8698 --- /dev/null +++ b/sublime/Packages/SFTP/SFTP.py @@ -0,0 +1,184 @@ +import sublime +import traceback +import os +import sys +import time +import imp +import re + +settings = sublime.load_settings('SFTP.sublime-settings') + +if sublime.platform() == 'linux' and settings.get('linux_enable_ssl'): + print 'SFTP: enabling custom linux ssl module' + arch_lib_path = os.path.join(sublime.packages_path(), 'SFTP', 'lib', + 'linux-' + sublime.arch()) + for ssl_ver in ['0.9.8', '1.0.0', '10']: + lib_path = os.path.join(arch_lib_path, 'libssl-' + ssl_ver) + try: + m_info = imp.find_module('_ssl', [lib_path]) + m = imp.load_module('_ssl', *m_info) + print 'SFTP: successfully loaded _ssl module for libssl.so.%s' % ssl_ver + break + except (ImportError) as (e): + print 'SFTP: _ssl module import error - ' + str(e) + if '_ssl' in sys.modules: + plat_lib_path = os.path.join(sublime.packages_path(), 'SFTP', 'lib', + 'linux') + try: + m_info = imp.find_module('ssl', [plat_lib_path]) + m = imp.load_module('ssl', *m_info) + except (ImportError) as (e): + print 'SFTP: ssl module import error - ' + str(e) + +reloading = { + 'happening': False, + 'shown': False +} + +reload_mods = [] +for mod in sys.modules: + if (mod[0:5] == 'sftp.' or mod == 'sftp') and sys.modules[mod] != None: + reload_mods.append(mod) + reloading['happening'] = True + +# Prevent popups during reload, saving the callbacks for re-adding later +if reload_mods: + old_callbacks = {} + hook_match = re.search("", str(sys.excepthook)) + if hook_match: + _temp = __import__(hook_match.group(1), globals(), locals(), + ['ExcepthookChain'], -1) + ExcepthookChain = _temp.ExcepthookChain + old_callbacks = ExcepthookChain.names + sys.excepthook = sys.__excepthook__ + +mods_load_order = [ + 'sftp', + 'sftp.times', + 'sftp.views', + 'sftp.paths', + 'sftp.debug', + 'sftp.errors', + 'sftp.threads', + 'sftp.secure_input', + 'sftp.proc', + 'sftp.vcs', + 'sftp.config', + 'sftp.panel_printer', + 'sftp.file_transfer', + 'sftp.ftplib2', + 'sftp.ftp_transport', + 'sftp.ftps_transport', + 'sftp.sftp_transport', + 'sftp.commands', + 'sftp.listeners' +] + +for mod in mods_load_order: + if mod in reload_mods: + reload(sys.modules[mod]) + +from sftp.commands import (SftpShowPanelCommand, SftpCreateServerCommand, + SftpBrowseServerCommand, SftpLastServerCommand, SftpEditServerCommand, + SftpDeleteServerCommand, SftpBrowseCommand, SftpUploadFileCommand, + SftpMonitorFileCommand, SftpUploadOpenFilesCommand, + SftpDiffRemoteFileCommand, SftpRenameLocalAndRemotePathsCommand, + SftpDeleteRemotePathCommand, SftpDownloadFileCommand, + SftpUploadFolderCommand, SftpSyncUpCommand, SftpSyncDownCommand, + SftpSyncBothCommand, SftpDownloadFolderCommand, SftpVcsChangedFilesCommand, + SftpCancelUploadCommand, SftpEditConfigCommand, SftpCreateConfigCommand, + SftpCreateSubConfigCommand, SftpThread, + SftpDeleteLocalAndRemotePathsCommand, SftpSwitchConfigCommand, + SftpCreateAltConfigCommand) +from sftp.listeners import (SftpCloseListener, SftpLoadListener, + SftpFocusListener, SftpAutoUploadListener, SftpAutoConnectListener) + +import sftp.debug +import sftp.paths +import sftp.times + +sftp.debug.set_debug(settings.get('debug', False)) + + +hook_match = re.search("", str(sys.excepthook)) + +if not hook_match: + class ExcepthookChain(object): + callbacks = [] + names = {} + + @classmethod + def add(cls, name, callback): + if name == 'sys.excepthook': + if name in cls.names: + return + cls.callbacks.append(callback) + else: + if name in cls.names: + cls.callbacks.remove(cls.names[name]) + cls.callbacks.insert(0, callback) + cls.names[name] = callback + + @classmethod + def hook(cls, type, value, tb): + for callback in cls.callbacks: + callback(type, value, tb) + + @classmethod + def remove(cls, name): + if name not in cls.names: + return + callback = cls.names[name] + del cls.names[name] + cls.callbacks.remove(callback) +else: + _temp = __import__(hook_match.group(1), globals(), locals(), + ['ExcepthookChain'], -1) + ExcepthookChain = _temp.ExcepthookChain + + +# Override default uncaught exception handler +def sftp_uncaught_except(type, value, tb): + message = ''.join(traceback.format_exception(type, value, tb)) + + if message.find('/sftp/') != -1 or message.find('\\sftp\\') != -1: + def append_log(): + log_file_path = os.path.join(sublime.packages_path(), 'User', + 'SFTP.errors.log') + send_log_path = log_file_path + timestamp = sftp.times.timestamp_to_string(time.time(), + '%Y-%m-%d %H:%M:%S\n') + with open(log_file_path, 'a') as f: + f.write(timestamp) + f.write(message) + if sftp.debug.get_debug() and sftp.debug.get_debug_log_file(): + send_log_path = sftp.debug.get_debug_log_file() + sftp.debug.debug_print(message) + sublime.error_message(('%s: An unexpected error occurred, ' + + 'please send the file %s to support@wbond.net') % ('SFTP', + send_log_path)) + sublime.active_window().run_command('open_file', + {'file': sftp.paths.fix_windows_path(send_log_path)}) + if reloading['happening']: + if not reloading['shown']: + sublime.error_message('SFTP: Sublime SFTP was just upgraded' + + ', please restart Sublime to finish the upgrade') + reloading['shown'] = True + else: + sublime.set_timeout(append_log, 10) + +if reload_mods and old_callbacks: + for name in old_callbacks: + ExcepthookChain.add(name, old_callbacks[name]) + +ExcepthookChain.add('sys.excepthook', sys.__excepthook__) +ExcepthookChain.add('sftp_uncaught_except', sftp_uncaught_except) + +if sys.excepthook != ExcepthookChain.hook: + sys.excepthook = ExcepthookChain.hook + + +def unload_handler(): + SftpThread.cleanup() + + ExcepthookChain.remove('sftp_uncaught_except') diff --git a/sublime/Packages/SFTP/SFTP.sublime-settings b/sublime/Packages/SFTP/SFTP.sublime-settings new file mode 100644 index 0000000..f87cb75 --- /dev/null +++ b/sublime/Packages/SFTP/SFTP.sublime-settings @@ -0,0 +1,61 @@ +{ + // Hide the output panel: + // - false = never + // - number = seconds after completion + // - true = always + "hide_output_panel": 1, + + // Frequency in milliseconds that sftp_monitor_file command checks + // modification time of file. This uses lstat, so it is not an I/O + // intensive operation, especially since the OS has a filesystem cache + "monitoring_frequency": 200, + + // Number of milliseconds to wait after a file change is detected before + // starting the upload. This can help if the old version of a file is + // being uploaded. + "monitoring_upload_delay": 500, + + // If you want to use ftps on Linux you need the ssl module, which does + // not come included with Sublime due to compatiblity issues. I've compiled + // different ssl modules for both 32bit and 64bit and included them. + // You can try enabling this, but if Sublime starts crashing, you know + // what to disable. Sublime must be restarted after changing this setting. + "linux_enable_ssl": false, + + // If the temp folder created for diff operations should be deleted when + // the diff completes. If this is set to false, the user is responsible + // for cleaning up temp folders. This only applies to situations when + // diff_command is set. + "delete_temp_diff_folder": true, + + // If debug output should be printed to the console + // True or 1 outputs FTP/SFTP commands, 2 is more verbose + "debug": false + //,"debug_log_file": "C:\\Users\\Username\\Desktop\\sublime_sftp_debug.txt" + //,"debug_log_file": "/Users/username/Desktop/sublime_sftp_debug.txt" + //,"debug_log_file": "/home/username/Desktop/sublime_sftp_debug.txt" + + // The command line arguments to open an external diff tool. The local file + // path will replace any parameter equal to %1$s and the file path of the + // local temp file representing the remote file will replace any parameter + // equal to %2$s + //,"diff_command": ["/usr/bin/meld", "%1$s", "%2$s"] + //,"diff_command": ["C:\\Program Files (x86)\\WinMerge\\WinMergeU.exe", "%1$s", "%2$s"] + //,"diff_command": ["/usr/bin/opendiff", "%1$s", "%2$s"] + + // On Windows machines, git and hg are often not in the path and if they + // are not in one of the default install locations, their path must be + // specified here for the VCS-based commands to work + //,"git_binary_path": "C:\\Program Files\\Msysgit\\bin\\git.exe" + //,"hg_binary_path": "C:\\Program Files\\Mercurial\\hg.exe" + //,"svn_binary_path": "/usr/bin/svn" + + // On OS X, tabs don't instantly get rendered when opening a file, which + // can have the side effect of the sync_down_on_open setting not properly + // detecting a file open. SFTP uses a slight delay before checking to see + // if a file has been completely opened before syncing down. Depending on + // the machine, it may be necessary to tweak this value if sometimes files + // do not sync down on open. The number of milliseconds to wait after a + // file load event is triggered before checking if the file has a tab. + //,"osx_sync_down_on_open_delay": 500 +} \ No newline at end of file diff --git a/sublime/Packages/SFTP/Side Bar.sublime-menu b/sublime/Packages/SFTP/Side Bar.sublime-menu new file mode 100644 index 0000000..5dcec0e --- /dev/null +++ b/sublime/Packages/SFTP/Side Bar.sublime-menu @@ -0,0 +1,36 @@ +[ + { "caption": "-" }, + { + "caption": "SFTP/FTP", + "children": + [ + { "caption": "Upload File", "command": "sftp_upload_file", "args": {"paths": []} }, + { "caption": "Download File", "command": "sftp_download_file", "args": {"paths": []} }, + { "caption": "-" }, + { "caption": "Upload Folder", "command": "sftp_upload_folder", "args": {"paths": []} }, + { "caption": "Download Folder", "command": "sftp_download_folder", "args": {"paths": []} }, + { "caption": "-" }, + { "caption": "Diff Remote File", "command": "sftp_diff_remote_file", "args": {"paths": []} }, + { "caption": "Rename Local and Remote Files", "command": "sftp_rename_local_and_remote_paths", "args": {"files": []} }, + { "caption": "Rename Local and Remote Folders", "command": "sftp_rename_local_and_remote_paths", "args": {"dirs": []} }, + { "caption": "-" }, + { "caption": "Delete Local and Remote Files", "command": "sftp_delete_local_and_remote_paths", "args": {"files": []} }, + { "caption": "Delete Local and Remote Folders", "command": "sftp_delete_local_and_remote_paths", "args": {"dirs": []} }, + { "caption": "Delete Remote File", "command": "sftp_delete_remote_path", "args": {"files": []} }, + { "caption": "Delete Remote Folder", "command": "sftp_delete_remote_path", "args": {"dirs": []} }, + { "caption": "-" }, + { "caption": "Sync Local -> Remote…", "command": "sftp_sync_up", "args": {"paths": []} }, + { "caption": "Sync Remote -> Local…", "command": "sftp_sync_down", "args": {"paths": []} }, + { "caption": "Sync Both Directions…", "command": "sftp_sync_both", "args": {"paths": []} }, + { "caption": "-" }, + { "caption": "Monitor File (Upload on External Save)", "command": "sftp_monitor_file", "args": {"paths": []} }, + { "caption": "-" }, + { "caption": "Browse Remote…", "command": "sftp_browse", "args": {"paths": []} }, + { "caption": "-" }, + { "caption": "Map to Remote…", "command": "sftp_create_config", "args": {"paths": []} }, + { "caption": "Edit Remote Mapping…", "command": "sftp_edit_config", "args": {"paths": []} }, + { "caption": "Add Alternate Remote Mapping…", "command": "sftp_create_alt_config", "args": {"paths": []} }, + { "caption": "Switch Remote Mapping…", "command": "sftp_switch_config", "args": {"paths": []} } + ] + } +] \ No newline at end of file diff --git a/sublime/Packages/SFTP/Tab Context.sublime-menu b/sublime/Packages/SFTP/Tab Context.sublime-menu new file mode 100644 index 0000000..336fa10 --- /dev/null +++ b/sublime/Packages/SFTP/Tab Context.sublime-menu @@ -0,0 +1,5 @@ +[ + { "caption": "-" }, + { "command": "sftp_upload_file", "args": { "group": -1, "index": -1 }, "caption": "Upload File" }, + { "command": "sftp_upload_open_files", "caption": "Upload Open Files" } +] \ No newline at end of file diff --git a/sublime/Packages/SFTP/lang/clock.json b/sublime/Packages/SFTP/lang/clock.json new file mode 100644 index 0000000..952847e --- /dev/null +++ b/sublime/Packages/SFTP/lang/clock.json @@ -0,0 +1,32 @@ +{ + "C": {"am": 0, "pm": 12}, + "af_ZA": {"vm": 0, "nm": 12}, + "am_ET": {"\u1321\u12cb\u1275": 0, "\u12a8\u1230\u12d3\u1275": 12}, + "bn_BD": {"\u09aa\u09c2\u09b0\u09cd\u09ac\u09be\u09b9\u09cd\u09a3": 0, "\u0985\u09aa\u09b0\u09be\u09b9\u09cd\u09a3": 12}, + "bn_IN": {"\u09aa\u09c2\u09b0\u09cd\u09ac\u09be\u09b9\u09cd\u09a3": 0, "\u0985\u09aa\u09b0\u09be\u09b9\u09cd\u09a3": 12}, + "el_GR": {"\u03c0\u03bc": 0, "\u03bc\u03bc": 12}, + "en_AU": {"am": 0, "pm": 12}, + "en_CA": {"am": 0, "pm": 12}, + "en_GB": {"am": 0, "pm": 12}, + "en_NZ": {"am": 0, "pm": 12}, + "en_US": {"am": 0, "pm": 12}, + "es_CO": {"am": 0, "pm": 12}, + "es_CR": {"am": 0, "pm": 12}, + "es_NI": {"am": 0, "pm": 12}, + "es_PE": {"am": 0, "pm": 12}, + "es_VE": {"am": 0, "pm": 12}, + "he_IL": {"am": 0, "pm": 12}, + "ja_JP": {"\u5348\u524d": 0, "\u5348\u5f8c": 12}, + "km_KH": {"\u1796\u17d2\u179a\u17b9\u1780": 0, "\u179b\u17d2\u1784\u17b6\u1785": 12}, + "ko_KR": {"\uc624\uc804": 0, "\uc624\ud6c4": 12}, + "my_MM": {"\u1014\u1036\u1014\u1000\u103a": 0, "\u100a\u1014\u1031": 12}, + "si_LK": {"\u0db4\u0dd9.\u0dc0": 0, "\u0db4.\u0dc0": 12}, + "sq_AL": {"pd": 0, "md": 12}, + "ta_IN": {"\u0b95\u0bbe\u0bb2\u0bc8": 0, "\u0bae\u0bbe\u0bb2\u0bc8": 12}, + "th_TH": {"am": 0, "pm": 12}, + "ur_PK": {"\u0635": 0, "\u0634": 12}, + "vi_VN": {"am": 0, "pm": 12}, + "zh_CN": {"\u4e0a\u5348": 0, "\u4e0b\u5348": 12}, + "zh_HK": {"\u4e0a\u5348": 0, "\u4e0b\u5348": 12}, + "zh_TW": {"\u4e0a\u5348": 0, "\u4e0b\u5348": 12} +} \ No newline at end of file diff --git a/sublime/Packages/SFTP/lang/months.json b/sublime/Packages/SFTP/lang/months.json new file mode 100644 index 0000000..4e8d085 --- /dev/null +++ b/sublime/Packages/SFTP/lang/months.json @@ -0,0 +1,86 @@ +{ + "C": {"jan": 1, "feb": 2, "mar": 3, "apr": 4, "may": 5, "jun": 6, "jul": 7, "aug": 8, "sep": 9, "oct": 10, "nov": 11, "dec": 12}, + "af_ZA": {"jan": 1, "feb": 2, "mrt": 3, "apr": 4, "mei": 5, "jun": 6, "jul": 7, "aug": 8, "sep": 9, "okt": 10, "nov": 11, "des": 12}, + "am_ET": {"\u1303\u1295\u12e9": 1, "\u134c\u1265\u1229": 2, "\u121b\u122d\u127d": 3, "\u12a4\u1355\u1228": 4, "\u121c\u12ed": 5, "\u1301\u1295": 6, "\u1301\u120b\u12ed": 7, "\u12a6\u1308\u1235": 8, "\u1234\u1355\u1274": 9, "\u12a6\u12ad\u1270": 10, "\u1296\u126c\u121d": 11, "\u12f2\u1234\u121d": 12}, + "ast_ES": {"xin": 1, "feb": 2, "mar": 3, "abr": 4, "may": 5, "xun": 6, "xnt": 7, "ago": 8, "set": 9, "och": 10, "pay": 11, "avi": 12}, + "bg_BG": {"\u044f\u043d\u0443": 1, "\u0444\u0435\u0432": 2, "\u043c\u0430\u0440": 3, "\u0430\u043f\u0440": 4, "\u043c\u0430\u0439": 5, "\u044e\u043d\u0438": 6, "\u044e\u043b\u0438": 7, "\u0430\u0432\u0433": 8, "\u0441\u0435\u043f": 9, "\u043e\u043a\u0442": 10, "\u043d\u043e\u0435": 11, "\u0434\u0435\u043a": 12}, + "bn_BD": {"\u099c\u09be\u09a8\u09c1": 1, "\u09ab\u09c7\u09ac\u09cd\u09b0\u09c1": 2, "\u09ae\u09be\u09b0\u09cd\u099a": 3, "\u098f\u09aa\u09cd\u09b0\u09bf": 4, "\u09ae\u09c7": 5, "\u099c\u09c1\u09a8": 6, "\u099c\u09c1\u09b2": 7, "\u0986\u0997": 8, "\u09b8\u09c7\u09aa\u09cd\u099f\u09c7": 9, "\u0985\u0995\u09cd\u099f\u09cb": 10, "\u09a8\u09ad\u09c7": 11, "\u09a1\u09bf\u09b8\u09c7": 12}, + "bn_IN": {"\u099c\u09be\u09a8\u09c1\u09df\u09be\u09b0\u09bf": 1, "\u09ab\u09c7\u09ac\u09cd\u09b0\u09c1\u09df\u09be\u09b0\u09bf": 2, "\u09ae\u09be\u09b0\u09cd\u099a": 3, "\u098f\u09aa\u09cd\u09b0\u09bf\u09b2": 4, "\u09ae\u09c7": 5, "\u099c\u09c1\u09a8": 6, "\u099c\u09c1\u09b2\u09be\u0987": 7, "\u0986\u0997\u09b8\u09cd\u099f": 8, "\u09b8\u09c7\u09aa\u09cd\u099f\u09c7\u09ae\u09cd\u09ac\u09b0": 9, "\u0985\u0995\u09cd\u099f\u09cb\u09ac\u09b0": 10, "\u09a8\u09ad\u09c7\u09ae\u09cd\u09ac\u09b0": 11, "\u09a1\u09bf\u09b8\u09c7\u09ae\u09cd\u09ac\u09b0": 12}, + "ca_ES": {"gen": 1, "feb": 2, "mar": 3, "abr": 4, "mai": 5, "jun": 6, "jul": 7, "ago": 8, "set": 9, "oct": 10, "nov": 11, "des": 12}, + "cs_CZ": {"led": 1, "\u00fano": 2, "b\u0159e": 3, "dub": 4, "kv\u011b": 5, "\u010den": 6, "\u010dec": 7, "srp": 8, "z\u00e1\u0159": 9, "\u0159\u00edj": 10, "lis": 11, "pro": 12}, + "cs_CZ2": {"led": 1, "\u00fano": 2, "b\u0159e": 3, "dub": 4, "kv\u011b": 5, "\u010drn": 6, "\u010drc": 7, "srp": 8, "z\u00e1\u0159": 9, "\u0159\u00edj": 10, "lis": 11, "pro": 12}, + "da_DK": {"jan": 1, "feb": 2, "mar": 3, "apr": 4, "maj": 5, "jun": 6, "jul": 7, "aug": 8, "sep": 9, "okt": 10, "nov": 11, "dec": 12}, + "de_AT": {"j\u00e4n": 1, "feb": 2, "m\u00e4r": 3, "apr": 4, "mai": 5, "jun": 6, "jul": 7, "aug": 8, "sep": 9, "okt": 10, "nov": 11, "dez": 12}, + "de_CH": {"jan": 1, "feb": 2, "m\u00e4r": 3, "apr": 4, "mai": 5, "jun": 6, "jul": 7, "aug": 8, "sep": 9, "okt": 10, "nov": 11, "dez": 12}, + "de_DE": {"jan": 1, "feb": 2, "m\u00e4r": 3, "apr": 4, "mai": 5, "jun": 6, "jul": 7, "aug": 8, "sep": 9, "okt": 10, "nov": 11, "dez": 12}, + "el_GR": {"\u0399\u03b1\u03bd": 1, "\u03a6\u03b5\u03b2": 2, "\u039c\u03ac\u03c1": 3, "\u0391\u03c0\u03c1": 4, "\u039c\u03ac\u03b9": 5, "\u0399\u03bf\u03cd\u03bd": 6, "\u0399\u03bf\u03cd\u03bb": 7, "\u0391\u03cd\u03b3": 8, "\u03a3\u03b5\u03c0": 9, "\u039f\u03ba\u03c4": 10, "\u039d\u03bf\u03ad": 11, "\u0394\u03b5\u03ba": 12}, + "en_AU": {"jan": 1, "feb": 2, "mar": 3, "apr": 4, "may": 5, "jun": 6, "jul": 7, "aug": 8, "sep": 9, "oct": 10, "nov": 11, "dec": 12}, + "en_CA": {"jan": 1, "feb": 2, "mar": 3, "apr": 4, "may": 5, "jun": 6, "jul": 7, "aug": 8, "sep": 9, "oct": 10, "nov": 11, "dec": 12}, + "en_GB": {"jan": 1, "feb": 2, "mar": 3, "apr": 4, "may": 5, "jun": 6, "jul": 7, "aug": 8, "sep": 9, "oct": 10, "nov": 11, "dec": 12}, + "en_NZ": {"jan": 1, "feb": 2, "mar": 3, "apr": 4, "may": 5, "jun": 6, "jul": 7, "aug": 8, "sep": 9, "oct": 10, "nov": 11, "dec": 12}, + "en_US": {"jan": 1, "feb": 2, "mar": 3, "apr": 4, "may": 5, "jun": 6, "jul": 7, "aug": 8, "sep": 9, "oct": 10, "nov": 11, "dec": 12}, + "es_AR": {"ene": 1, "feb": 2, "mar": 3, "abr": 4, "may": 5, "jun": 6, "jul": 7, "ago": 8, "sep": 9, "oct": 10, "nov": 11, "dic": 12}, + "es_CL": {"ene": 1, "feb": 2, "mar": 3, "abr": 4, "may": 5, "jun": 6, "jul": 7, "ago": 8, "sep": 9, "oct": 10, "nov": 11, "dic": 12}, + "es_CO": {"ene": 1, "feb": 2, "mar": 3, "abr": 4, "may": 5, "jun": 6, "jul": 7, "ago": 8, "sep": 9, "oct": 10, "nov": 11, "dic": 12}, + "es_CR": {"ene": 1, "feb": 2, "mar": 3, "abr": 4, "may": 5, "jun": 6, "jul": 7, "ago": 8, "sep": 9, "oct": 10, "nov": 11, "dic": 12}, + "es_DO": {"ene": 1, "feb": 2, "mar": 3, "abr": 4, "may": 5, "jun": 6, "jul": 7, "ago": 8, "sep": 9, "oct": 10, "nov": 11, "dic": 12}, + "es_EC": {"ene": 1, "feb": 2, "mar": 3, "abr": 4, "may": 5, "jun": 6, "jul": 7, "ago": 8, "sep": 9, "oct": 10, "nov": 11, "dic": 12}, + "es_ES": {"ene": 1, "feb": 2, "mar": 3, "abr": 4, "may": 5, "jun": 6, "jul": 7, "ago": 8, "sep": 9, "oct": 10, "nov": 11, "dic": 12}, + "es_GT": {"ene": 1, "feb": 2, "mar": 3, "abr": 4, "may": 5, "jun": 6, "jul": 7, "ago": 8, "sep": 9, "oct": 10, "nov": 11, "dic": 12}, + "es_HN": {"ene": 1, "feb": 2, "mar": 3, "abr": 4, "may": 5, "jun": 6, "jul": 7, "ago": 8, "sep": 9, "oct": 10, "nov": 11, "dic": 12}, + "es_MX": {"ene": 1, "feb": 2, "mar": 3, "abr": 4, "may": 5, "jun": 6, "jul": 7, "ago": 8, "sep": 9, "oct": 10, "nov": 11, "dic": 12}, + "es_NI": {"ene": 1, "feb": 2, "mar": 3, "abr": 4, "may": 5, "jun": 6, "jul": 7, "ago": 8, "sep": 9, "oct": 10, "nov": 11, "dic": 12}, + "es_PA": {"ene": 1, "feb": 2, "mar": 3, "abr": 4, "may": 5, "jun": 6, "jul": 7, "ago": 8, "sep": 9, "oct": 10, "nov": 11, "dic": 12}, + "es_PE": {"ene": 1, "feb": 2, "mar": 3, "abr": 4, "may": 5, "jun": 6, "jul": 7, "ago": 8, "sep": 9, "oct": 10, "nov": 11, "dic": 12}, + "es_PR": {"ene": 1, "feb": 2, "mar": 3, "abr": 4, "may": 5, "jun": 6, "jul": 7, "ago": 8, "sep": 9, "oct": 10, "nov": 11, "dic": 12}, + "es_SV": {"ene": 1, "feb": 2, "mar": 3, "abr": 4, "may": 5, "jun": 6, "jul": 7, "ago": 8, "sep": 9, "oct": 10, "nov": 11, "dic": 12}, + "es_UY": {"ene": 1, "feb": 2, "mar": 3, "abr": 4, "may": 5, "jun": 6, "jul": 7, "ago": 8, "sep": 9, "oct": 10, "nov": 11, "dic": 12}, + "es_VE": {"ene": 1, "feb": 2, "mar": 3, "abr": 4, "may": 5, "jun": 6, "jul": 7, "ago": 8, "sep": 9, "oct": 10, "nov": 11, "dic": 12}, + "et_EE": {"jaan": 1, "veebr": 2, "m\u00e4rts": 3, "apr": 4, "mai": 5, "juuni": 6, "juuli": 7, "aug": 8, "sept": 9, "okt": 10, "nov": 11, "dets": 12}, + "eu_ES": {"urt": 1, "ots": 2, "mar": 3, "api": 4, "mai": 5, "eka": 6, "uzt": 7, "abu": 8, "ira": 9, "urr": 10, "aza": 11, "abe": 12}, + "fa_IR": {"\u0698\u0627\u0646\u0648\u06cc\u0647": 1, "\u0641\u0648\u0631\u06cc\u0647": 2, "\u0645\u0627\u0631\u0633": 3, "\u0622\u0648\u0631\u06cc\u0644": 4, "\u0645\u0647": 5, "\u0698\u0648\u0626\u0646": 6, "\u0698\u0648\u0626\u06cc\u0647": 7, "\u0627\u0648\u062a": 8, "\u0633\u067e\u062a\u0627\u0645\u0628\u0631": 9, "\u0627\u0643\u062a\u0628\u0631": 10, "\u0646\u0648\u0627\u0645\u0628\u0631": 11, "\u062f\u0633\u0627\u0645\u0628\u0631": 12}, + "fi_FI": {"tammi\u00a0": 1, "helmi\u00a0": 2, "maalis": 3, "huhti\u00a0": 4, "touko\u00a0": 5, "kes\u00e4\u00a0\u00a0": 6, "hein\u00e4\u00a0": 7, "elo\u00a0\u00a0\u00a0": 8, "syys\u00a0\u00a0": 9, "loka\u00a0\u00a0": 10, "marras": 11, "joulu\u00a0": 12}, + "fr_BE": {"jan": 1, "f\u00e9v": 2, "mar": 3, "avr": 4, "mai": 5, "jun": 6, "jui": 7, "ao\u00fb": 8, "sep": 9, "oct": 10, "nov": 11, "d\u00e9c": 12}, + "fr_CA": {"jan": 1, "f\u00e9v": 2, "mar": 3, "avr": 4, "mai": 5, "jun": 6, "jui": 7, "ao\u00fb": 8, "sep": 9, "oct": 10, "nov": 11, "d\u00e9c": 12}, + "fr_CH": {"jan": 1, "f\u00e9v": 2, "mar": 3, "avr": 4, "mai": 5, "jun": 6, "jui": 7, "ao\u00fb": 8, "sep": 9, "oct": 10, "nov": 11, "d\u00e9c": 12}, + "fr_FR": {"janv": 1, "f\u00e9vr": 2, "mars": 3, "avril": 4, "mai": 5, "juin": 6, "juil": 7, "ao\u00fbt": 8, "sept": 9, "oct": 10, "nov": 11, "d\u00e9c": 12}, + "gl_ES": {"xan": 1, "feb": 2, "mar": 3, "abr": 4, "mai": 5, "xu\u00f1": 6, "xul": 7, "ago": 8, "set": 9, "out": 10, "nov": 11, "dec": 12}, + "he_IL": {"\u05d9\u05e0\u05d5": 1, "\u05e4\u05d1\u05e8": 2, "\u05de\u05e8\u05e5": 3, "\u05d0\u05e4\u05e8": 4, "\u05de\u05d0\u05d9": 5, "\u05d9\u05d5\u05e0": 6, "\u05d9\u05d5\u05dc": 7, "\u05d0\u05d5\u05d2": 8, "\u05e1\u05e4\u05d8": 9, "\u05d0\u05d5\u05e7": 10, "\u05e0\u05d5\u05d1": 11, "\u05d3\u05e6\u05de": 12}, + "hr_HR": {"sij": 1, "vel": 2, "o\u017eu": 3, "tra": 4, "svi": 5, "lip": 6, "srp": 7, "kol": 8, "ruj": 9, "lis": 10, "stu": 11, "pro": 12}, + "hu_HU": {"jan": 1, "febr": 2, "m\u00e1rc": 3, "\u00e1pr": 4, "m\u00e1j": 5, "j\u00fan": 6, "j\u00fal": 7, "aug": 8, "szept": 9, "okt": 10, "nov": 11, "dec": 12}, + "id_ID": {"jan": 1, "peb": 2, "mar": 3, "apr": 4, "mei": 5, "jun": 6, "jul": 7, "agu": 8, "sep": 9, "okt": 10, "nov": 11, "des": 12}, + "it_CH": {"gen": 1, "feb": 2, "mar": 3, "apr": 4, "mag": 5, "giu": 6, "lug": 7, "ago": 8, "set": 9, "ott": 10, "nov": 11, "dic": 12}, + "it_IT": {"gen": 1, "feb": 2, "mar": 3, "apr": 4, "mag": 5, "giu": 6, "lug": 7, "ago": 8, "set": 9, "ott": 10, "nov": 11, "dic": 12}, + "ja_JP": {"1\u6708": 1, "2\u6708": 2, "3\u6708": 3, "4\u6708": 4, "5\u6708": 5, "6\u6708": 6, "7\u6708": 7, "8\u6708": 8, "9\u6708": 9, "10\u6708": 10, "11\u6708": 11, "12\u6708": 12}, + "km_KH": {"\u17e1": 1, "\u17e2": 2, "\u17e3": 3, "\u17e4": 4, "\u17e5": 5, "\u17e6": 6, "\u17e7": 7, "\u17e8": 8, "\u17e9": 9, "\u17e1\u17e0": 10, "\u17e1\u17e1": 11, "\u17e1\u17e2": 12}, + "ko_KR": {"1\uc6d4": 1, "2\uc6d4": 2, "3\uc6d4": 3, "4\uc6d4": 4, "5\uc6d4": 5, "6\uc6d4": 6, "7\uc6d4": 7, "8\uc6d4": 8, "9\uc6d4": 9, "10\uc6d4": 10, "11\uc6d4": 11, "12\uc6d4": 12}, + "lt_LT": {"sau": 1, "vas": 2, "kov": 3, "bal": 4, "geg": 5, "bir": 6, "lie": 7, "rgp": 8, "rgs": 9, "spa": 10, "lap": 11, "grd": 12}, + "lv_LV": {"jan": 1, "feb": 2, "mar": 3, "apr": 4, "mai": 5, "j\u016bn": 6, "j\u016bl": 7, "aug": 8, "sep": 9, "okt": 10, "nov": 11, "dec": 12}, + "mk_MK": {"\u0458\u0430\u043d": 1, "\u0444\u0435\u0432": 2, "\u043c\u0430\u0440": 3, "\u0430\u043f\u0440": 4, "\u043c\u0430\u0458": 5, "\u0458\u0443\u043d": 6, "\u0458\u0443\u043b": 7, "\u0430\u0432\u0433": 8, "\u0441\u0435\u043f": 9, "\u043e\u043a\u0442": 10, "\u043d\u043e\u0435": 11, "\u0434\u0435\u043a": 12}, + "ms_MY": {"jan": 1, "feb": 2, "mac": 3, "apr": 4, "mei": 5, "jun": 6, "jul": 7, "ogos": 8, "sep": 9, "okt": 10, "nov": 11, "dis": 12}, + "my_MM": {"\u1007\u1014\u103a": 1, "\u1016\u1031": 2, "\u1019\u1010\u103a": 3, "\u1027\u1015\u103c\u102e": 4, "\u1019\u1031": 5, "\u1007\u103d\u1014\u103a": 6, "\u1007\u1030": 7, "\u1029": 8, "\u1005\u1000\u103a": 9, "\u1021\u1031\u102c\u1000\u103a": 10, "\u1014\u102d\u102f": 11, "\u1012\u102e": 12}, + "nb_NO": {"jan": 1, "feb": 2, "mars": 3, "april": 4, "mai": 5, "juni": 6, "juli": 7, "aug": 8, "sep": 9, "okt": 10, "nov": 11, "des": 12}, + "nds_DE": {"jan": 1, "feb": 2, "m\u00e4r": 3, "apr": 4, "mai": 5, "jun": 6, "jul": 7, "aug": 8, "sep": 9, "okt": 10, "nov": 11, "dez": 12}, + "nl_BE": {"jan": 1, "feb": 2, "mrt": 3, "apr": 4, "mei": 5, "jun": 6, "jul": 7, "aug": 8, "sep": 9, "okt": 10, "nov": 11, "dec": 12}, + "nl_NL": {"jan": 1, "feb": 2, "mrt": 3, "apr": 4, "mei": 5, "jun": 6, "jul": 7, "aug": 8, "sep": 9, "okt": 10, "nov": 11, "dec": 12}, + "nn_NO": {"jan": 1, "feb": 2, "mars": 3, "april": 4, "mai": 5, "juni": 6, "juli": 7, "aug": 8, "sep": 9, "okt": 10, "nov": 11, "des": 12}, + "pl_PL": {"sty": 1, "lut": 2, "mar": 3, "kwi": 4, "maj": 5, "cze": 6, "lip": 7, "sie": 8, "wrz": 9, "pa\u017a": 10, "lis": 11, "gru": 12}, + "pt_BR": {"jan": 1, "fev": 2, "mar": 3, "abr": 4, "mai": 5, "jun": 6, "jul": 7, "ago": 8, "set": 9, "out": 10, "nov": 11, "dez": 12}, + "pt_PT": {"jan": 1, "fev": 2, "mar": 3, "abr": 4, "mai": 5, "jun": 6, "jul": 7, "ago": 8, "set": 9, "out": 10, "nov": 11, "dez": 12}, + "ro_RO": {"ian": 1, "feb": 2, "mar": 3, "apr": 4, "mai": 5, "iun": 6, "iul": 7, "aug": 8, "sep": 9, "oct": 10, "nov": 11, "dec": 12}, + "ru_RU": {"\u044f\u043d\u0432": 1, "\u0444\u0435\u0432\u0440": 2, "\u043c\u0430\u0440\u0442\u0430": 3, "\u0430\u043f\u0440": 4, "\u043c\u0430\u044f": 5, "\u0438\u044e\u043d\u044f": 6, "\u0438\u044e\u043b\u044f": 7, "\u0430\u0432\u0433": 8, "\u0441\u0435\u043d\u0442": 9, "\u043e\u043a\u0442": 10, "\u043d\u043e\u044f\u0431": 11, "\u0434\u0435\u043a": 12}, + "si_LK": {"\u0da2\u0db1": 1, "\u0db4\u0dd9\u0db6": 2, "\u0db8\u0dcf\u0dbb\u0dca": 3, "\u0d85\u0db4\u0dca\u200d\u0dbb\u0dd2": 4, "\u0db8\u0dd0\u0dba\u0dd2": 5, "\u0da2\u0dd6\u0db1\u0dd2": 6, "\u0da2\u0dd6\u0dbd\u0dd2": 7, "\u0d85\u0d9c\u0ddd": 8, "\u0dc3\u0dd0\u0db4\u0dca": 9, "\u0d94\u0d9a\u0dca": 10, "\u0db1\u0dd9\u0dc0\u0dd0": 11, "\u0daf\u0dd9\u0dc3\u0dd0": 12}, + "sk_SK": {"jan": 1, "feb": 2, "mar": 3, "apr": 4, "m\u00e1j": 5, "j\u00fan": 6, "j\u00fal": 7, "aug": 8, "sep": 9, "okt": 10, "nov": 11, "dec": 12}, + "sl_SI": {"jan": 1, "feb": 2, "mar": 3, "apr": 4, "maj": 5, "jun": 6, "jul": 7, "avg": 8, "sep": 9, "okt": 10, "nov": 11, "dec": 12}, + "sq_AL": {"jan": 1, "shk": 2, "mar": 3, "pri": 4, "maj": 5, "qer": 6, "kor": 7, "gsh": 8, "sht": 9, "tet": 10, "n\u00ebn": 11, "dhj": 12}, + "sr_RS": {"\u0458\u0430\u043d": 1, "\u0444\u0435\u0431": 2, "\u043c\u0430\u0440": 3, "\u0430\u043f\u0440": 4, "\u043c\u0430\u0458": 5, "\u0458\u0443\u043d": 6, "\u0458\u0443\u043b": 7, "\u0430\u0432\u0433": 8, "\u0441\u0435\u043f": 9, "\u043e\u043a\u0442": 10, "\u043d\u043e\u0432": 11, "\u0434\u0435\u0446": 12}, + "sv_SE": {"jan": 1, "feb": 2, "mar": 3, "apr": 4, "maj": 5, "jun": 6, "jul": 7, "aug": 8, "sep": 9, "okt": 10, "nov": 11, "dec": 12}, + "ta_IN": {"\u0b9c\u0ba9": 1, "\u0baa\u0bbf\u0baa\u0bcd": 2, "\u0bae\u0bbe\u0bb0\u0bcd": 3, "\u0b8f\u0baa\u0bcd": 4, "\u0bae\u0bc7": 5, "\u0b9c\u0bc2\u0ba9\u0bcd": 6, "\u0b9c\u0bc2\u0bb2\u0bc8": 7, "\u0b86\u0b95": 8, "\u0b9a\u0bc6\u0baa\u0bcd": 9, "\u0b85\u0b95\u0bcd": 10, "\u0ba8\u0bb5": 11, "\u0b9f\u0bbf\u0b9a": 12}, + "th_TH": {"\u0e21.\u0e04": 1, "\u0e01.\u0e1e": 2, "\u0e21\u0e35.\u0e04": 3, "\u0e40\u0e21.\u0e22": 4, "\u0e1e.\u0e04": 5, "\u0e21\u0e34.\u0e22": 6, "\u0e01.\u0e04": 7, "\u0e2a.\u0e04": 8, "\u0e01.\u0e22": 9, "\u0e15.\u0e04": 10, "\u0e1e.\u0e22": 11, "\u0e18.\u0e04": 12}, + "uk_UA": {"\u0441\u0456\u0447": 1, "\u043b\u044e\u0442": 2, "\u0431\u0435\u0440": 3, "\u043a\u0432\u0456": 4, "\u0442\u0440\u0430": 5, "\u0447\u0435\u0440": 6, "\u043b\u0438\u043f": 7, "\u0441\u0435\u0440": 8, "\u0432\u0435\u0440": 9, "\u0436\u043e\u0432": 10, "\u043b\u0438\u0441": 11, "\u0433\u0440\u0443": 12}, + "ur_PK": {"\u062c\u0646\u0648\u0631\u064a": 1, "\u0641\u0631\u0648\u0631\u064a": 2, "\u0645\u0627\u0631\u0686": 3, "\u0627\u067e\u0631\u064a\u0644": 4, "\u0645\u0653\u06cc": 5, "\u062c\u0648\u0646": 6, "\u062c\u0648\u0644\u0627\u064a": 7, "\u0627\u06af\u0633\u062a": 8, "\u0633\u062a\u0645\u0628\u0631": 9, "\u0627\u0643\u062a\u0648\u0628\u0631": 10, "\u0646\u0648\u0645\u0628\u0631": 11, "\u062f\u0633\u0645\u0628\u0631": 12}, + "vi_VN": {"th01": 1, "th02": 2, "th03": 3, "th04": 4, "th05": 5, "th06": 6, "th07": 7, "th08": 8, "th09": 9, "th10": 10, "th11": 11, "th12": 12}, + "zh_CN": {"1\u6708": 1, "2\u6708": 2, "3\u6708": 3, "4\u6708": 4, "5\u6708": 5, "6\u6708": 6, "7\u6708": 7, "8\u6708": 8, "9\u6708": 9, "10\u6708": 10, "11\u6708": 11, "12\u6708": 12}, + "zh_HK": {"1\u6708": 1, "2\u6708": 2, "3\u6708": 3, "4\u6708": 4, "5\u6708": 5, "6\u6708": 6, "7\u6708": 7, "8\u6708": 8, "9\u6708": 9, "10\u6708": 10, "11\u6708": 11, "12\u6708": 12}, + "zh_TW": {"1\u6708": 1, "2\u6708": 2, "3\u6708": 3, "4\u6708": 4, "5\u6708": 5, "6\u6708": 6, "7\u6708": 7, "8\u6708": 8, "9\u6708": 9, "10\u6708": 10, "11\u6708": 11, "12\u6708": 12} +} \ No newline at end of file diff --git a/sublime/Packages/SFTP/lib/linux-x32/libssl-0.9.8/_ssl.so b/sublime/Packages/SFTP/lib/linux-x32/libssl-0.9.8/_ssl.so new file mode 100644 index 0000000000000000000000000000000000000000..8e3ac9ac8cdd0617962468d440f466a210de1670 GIT binary patch literal 93503 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 literal 0 HcmV?d00001 diff --git a/sublime/Packages/SFTP/lib/linux-x32/libssl-1.0.0/_ssl.so b/sublime/Packages/SFTP/lib/linux-x32/libssl-1.0.0/_ssl.so new file mode 100644 index 0000000000000000000000000000000000000000..1ff704b4150980334fa9dea058b4126bd25c1daa GIT binary patch literal 109394 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
QT)+IE@ zROi(qFLD;Y7-C&&%Zr>fmHI7o@)kJkft+v_@c+Zwn+HZ!U4P*3&6`Y~nTQDq0fdkt ztVtkY7l8mF2@=R=7B*?eER$p)$%L5+n+po=wG~|IQUzR#3W{}UE1=j~1-DWcM84YE zs)%+G0j+lP_xYTA-(-UN`~C9^%)95@_1tsMJ?GqI-jr$_I_MyE?p%#Sr$pSq=UF$Z z{v$ufv&z~jICR8`bAVUt`k^B>QD$qc*Cib~;(FF!r_-S$5-H+~t*3-P&=I2Jmsm>2 zLq~{?UuG#C4;`^G0r?wsf1xAxQXZPD3Cbpb-l@QwHU2*4_#kNaeveMZtnU9$2)*gL z2=lYwuDOhu+Mf{zKvKV7EJ8%$Yak;z%Wd9BCGZ?b&q~m%X2Tu{GoR%#%NJ12-S$Rw zG%HcB{BZU%URC`Y}7xoQgg(FQq#>%WM_YZNCTAlkI#t#FitY>}*|AvbcNM!(yG{+B|!>(<%F6 zFfelM)oUY zUB5!~Jlkvj4AJS*eky5F*9f>RrXVVrR6bAxizQy1YZ#-m&oq}~(u%L1eU|RIA$vvH zDf()@+pZak7E;aYkdv-^5Q383*L+COWP1*%%}z6aCuoY@Omfn7YPy`PW%n~bmDBb+D%Vr& z=|a`hO|f*6*Ha6M?vf;OgtVz7mJ%kZJ9QrS%dzsLSTdpL@mNux6RVg^6zMkzZ5|-~ zehMyU4>Vtpm@$Y+G1(-g_5X92W+IbEJQk1mX~`6Ip4iIu3DfYo`?r`610OmK&PD&A z`5fU{gjbj!1BN^>O3}6uxYI2bQf&Kk?{uQ<0EF4&ei2Ag4P-7o;{h8Q$4gPnc%VlT z`yjFpWC?khp7aF>9FXzG8o+6hP9x(jy(^p6-h;T)cp#i{Xd#O6ih*24cw1q~>iWT9 zR))(4vbfE7N2NjK-0Va1M+P!+UNXS1c=VriB}6DW2^BQ>`IR|QL3;aPlBgu6;+7vaFk?dNC=BfJolAIAP4iCoH z=*L_386#aC$m((Pa3JwVK1%NZYd=ei_ztif`Bh{4H>9WuLa9ro=%mKtP)#vv@VHrC z<>z5Ysys3YN!HPTkcl@rJnmsY`Y6zlY4laBEDt^6%1QysY93ibu2rND0sMlKJ z7&3X>X~@urr&k^~ccgG75*--k9(YwF5{7ez47~a&kTX0SX)p#}E3wT4uWw_9<~C#C z4V{DnO~$|**8xHul|DXso{77$SZVfu27`lZZ&4(B+*je*hiBzU&*xx#Ge6)_wrHo! z51i5UxPOF5#X@dUr1F8XyuaXa?}(-GG+xrwR|nA#rtgoX^Fo43r)VJQSS)D())6X+ z5R!%<=%X620IJ4$PvLZaixp=H75r1xeJI&Wa5&)82d{oRZ$jg{dUx|9L2Yh$r{o!Gd! zBi!f*vz#ian&m~(*&C4GU&W3;3Cjv3a^j7A$?HzQKeWmoo6O{hheBP|H^E1{tB7)w`&DUmn%z||4>(!2B2>r4QCIFu>f~|^#RhA_WNc}Wo%%(4HQ12k2mZaVbi3+*46u(k_Txde#vh_=^-}9qGw%0V46`8>}~Ew(_7~W@{Q^&jym1B3(Sk zd=iM%pLtHK{=``rs`Sif%-3Uy&-5f-h$%Zd^Eq>I2};Tk|5k6V=sOqB#}4~tSbwL7 z&bD8JZpeJWR4O3Zo;n%miyBR_e~G=@%>7a=_g`h`4(Op9poZ=xJ#>T73liS1XcWr4 zEOg>)JRk_~H~{zh*P{dQfL2M&HF);n)r7>0TsVIfRe)6A=f&rO=`_x(sh4}C0!Rwx)bd74S66~ic-8mGGzNx1_$2oo|6jfLC!1A zsC;yM$U_h`ii|AWhCHmWWbY2Fq=xKJ^DD(m*&DJ`Vd>rp81NyFC~ScDwIRSBrHJxs zzAJAE&|M_U<0jqs-m*MNjWQrSBTeN4X*~ajZx~DCwx+TMI>SA&q_>$Q52@gONHB^r z@VNKJa`DVsDo>!ZSs3q@RbT=~JerL5-_DC08oItja7T zdE9>k>?&hK^*D)`f@g|ZjVC{;3;B==h@!v_X<-?VJ`H#z-3DQrn&lrq4@CddL_HTO z0WrKgh&3q8orcrRtfqe;7iI3MsYnX2qc{lhz633m)$&KdQqr0y1hMh?iD2nz!3oXS z_hdJ43IZ&Gjm<`>WpG-AIoq!h%!jm9MpkHq3MU{)3maLH#|0ac7G_%X z1Hs05FNQwJTE#Bn1sjGd%>%S%1`<8)Ie02QE(4@^A&}+;?{B!Kk$LqUQXnD)o_QvN{XT6mM>x?OUyMN$-3Ew^AWlUU*6XC&+Ml9fCpxjhy3Y=IfB5T>=&O8LsORfj<0Slo{sEdisyZFN@)<-R$g$zf(f?Fm{9q$3JT?_i{!Y z9}4gp0T*&`pCtt&%AjMj_E80lSdP}Sp8Jr+1|Mv`aHWaJlJJq zy(p2Z*th+xV0f@$vXOOwrG|&G50~{4vyPxm&w5#}%E%7fK0q5upFoA!Svyk~ptHQr zk@f3^ARYsbo26N=j7Jvee#7-^Hu~zPM1Pn7@b}78vl#mR7oJ*-*aJhE^?`t0R4X6e zJzK_nFcOmnqFc#X?_V2h=g+zwu{l{EjYR^j%uVpbvc!=TPxR_DfF7$sBDP8KOza26 zk)AbAjvJJRF)z*--hnLr*1;DavB^9DSn20ufJ6Y}R%Z`_G{aQ_KWwD;B+`>!HlZI! z4yh{#BY2Z;q;GZwNiw{nyugNnwL;(paQa4OE6nx|g?x=1rm$r1FJRn84p&%;T&5j4 zl1G#942+~@BVlJpp7{qhKu(W5E1m-*Q`AnXTkfKcO#K+ysPlMVd}QCR1xxmhFoC5F z6T(uwypS<6Lt*J&e!*qr*#(j|z{`F1k%JUASo485H&XckGszQ}Tp;NtYj@)R4p?!G z^-8Q-H;+NF9tdT>LC(Rl^9qBIIW}E7*(OaV&T0N zqdKaR+bA6JQxNk}RSFyIeHPsqRjsf|-sjPcQRlO5T&YQ;7d@)xO{}|cqsDOk6wdFc z+PSFS-r3c%`NEBXS%TbMM=ZvH}6LG(I?J${nHX? zI=n&D+*OIZykqNgj=|JHiLc!`D8X$`+@a9NI`9qM$lIk+y!{E&*tb%nDfaCk-WS$r zy8S7L@I^E_z#fdz^F=i}*nSLh;#;LrpZz6B^sUzDaGUR(_N|d6E6?VC26fY`IZz&62YJP+?kNdB9s??7w#t}{p(zy*XYbC_8|`3wHi&g zpWt9zXI>~}2iTiov3x($=wSP~fk3Y}FOyWC{Q)KC$GYrr`<-Dxf1=UR_I_4%gGR^L zokTa8k4o8b_EfmLz8lSV1f67GHwoy?=KlnpYWq2mx9GAn>?c|CPt9R9?9pudUsHhI zYE}wbVn0HvZZkuI&a*G=1N3(DIzh|rR47>A9p=M=R@-fuMZTYzpUQNov%SoGr}>+(e8Bcy>#|^Q|0r%mI@VM(F150zPQze()jP8ylZDSH2DDVJ+ zKAf5!_a@1}A{_cu>Po~uCb4hh$&bU<_W<|#flS300rtN*Lsp!}0IRNW$m9CE5h@Fn zorEMg3jIdFnFE%R049-6wp-`KF_~ z3i5{drq(cA1#0A6dsE}M3iK@LKO`;7RiF;|2EKR973hLo1^VJF;D3_)zH(hruKWE( z44_hgGvn~QVmBb|<`K!v3JsK#*>C>^8cJ0{dx!*CU7GWqhU$$^xsKz3i? ze-#TLSAp6&-9Iy_U*#&0Trd1wUmD(L+VAEd{R@*VL_}sx=JPA?14AzjZpUL(28K|LFAhO?z)L@_(aoT!%agS@Ib! zRUfVzea8Noa=VPzA=Q>n0MyBrPJz*X%LEZVMtR(`DMFX`LlMg*@cWoKzB^qvNa`(k zDs}QGAejWp7vTwuk$5{AP4;bdeS$=>(09iU5V@n_yT_%SD|PekK9_Rsa6sG!Z^O6U z#aa{nfYW^sx%y%rD#Q7Z%Q2jZ{1FGY?_s&{CYM(LBOhcI2a;oahvYJ!{YR?R!%l)d zbUe^^H0rkRAuUHVYTJBwqwoJTnr!cZ8{~Ueqbc?Pct^hXG@5Q-gf9C2sL=uTB{VXB z(&%8jp9%DRjr#1>6x}~-bhv#MCHpTLi(o5r=pSf;#89OMmoJXmVSLK zUHTvoIi!;WHUVPkKYQFwu|m8I*Q>qTVoAIQ*OQbgl<7tvmrUdWFTbfwoE2(e#Q0v` z{oz>lk-f7EjhdN>Na|k*FATeuV*ro*Cp|JVXA7^nd()r*bGES)Tt$6;2C%yo=Ju|G za>%(yVYc@lkmj6w6_)HZpont#0t}Q(@jf>h*mjkc?!7e;*n@OZ`4yET#2!{@gT4QR z|CggTA${J;JYaega=7;gm`ypmRL;@fPchYU9#hyDZ!4B5Ilo}P@ak0WxvcYXg-!D2 zW7_9Dsj#Wu>(YSzN>PR{>OeYj_}&$io9&IFe2)HFQi*pvY1ysP=6MU4bB}7T+?&ky z_NqFoykal?{X|Ja-LJzGVd5-zfstQ-Ujd>=Xa`wX74_%d2?Ri zaj9!qn|C{QadKW{8ZW_m=R*#1_NzOX*PGrCFi1HERO+3km$x!TXeV0`g5;{+4~pK{oE^cYKq+gvU0C7uW4dO(rvb$d$rD7XK#eM$-PErhEEG7 z=U%HbUug3^f4M&rdoKogHoSw}>opDo`DP#BH%MvR?>6ltkh$(~$NlpcF!s6IbUN;za~|a0t8v^v=S;}G&!Nv{^FS!~evRY) zIVC>#0gWGb*_H&{z}^akIU{u{4rhr zGRvMp=0C3SD=d413H%9-Ut`(Na3p`J@#`)7SPt-C>HcoA?DvKN-=ouSw(KuC9?B1d zLuJ`t!7SxIqtoxS>{ql$6R?k`Sl&|e2j74qiR+f-YR0dCIu+W zZtth)f8Jxn@O2uOx6eSJzfjZg3b!`{(w4_dIY_<6?fp6Y;Jl|5dY#*Q17s_2@Bf6f z>)qb#i0)J9ZEkN3Mk4RGD)W7AZw1lk75aeN%X@-(FDP`o+iQTWc?alkTf-i5d-uXk z%zGtAsCvTfeU|8}3f+UvDDX7z;4{+h^KS2#Si0xEq0s$q?->~Jydx^}E2tR*nD?IQ z(VOnHj%c@$_a}uOc6&dE+~xgwSu@*x7d5l{e^KZ)30`{3c^|$ksZS($*F*O6J|1Z? z^S%V{a_~6sQ`Lq230}^uynm>P^-_YD6D#jC)zB*mUe2q$<0aCgg9%bnWv zUtpB;PAc?$R0S6;@03Du)(blZ6_##}fQC~xav?@UnSE+r1wDv3WHpef|00 zU8o{He_4UIOU=vq{ZYgzUCe9lkO9M6mJN0K2Zdo6sl#7an4Q)XX*Y7-P*}3}J?4~O z7=RU&L-m}uR9bpkQxkF?Qrdoi*M;buw^iCyFPBI;hZQ!%do`8&I|`fay$_wuIij!< zxXqYA!*dsk#*&M7xr=4?QEPL@EO&`0AINTIsHMfoU8+%AHqde}5Z|BQNja+knU`ra z#pdg(a(|%FbbA2x=nrKf!|$a0fYaEob^2huZHj92LX*r&d=tAADY=cJW91Dwxy`y7 zb=5PsMW#0>viJH>%(>}~SB%2I=Q=mtlks&%PS&8g29tl(`)2M-W-DaaUIR(VeZ^Ee zh=yG>0_g7rm2bRlW%5C-f$(jH8BG6!PRF+y_y(rj*L6BH;v>|kZ|Wr)G~y58)#SdV z)1eW^Bmh6Gmvoz~Ox%RaJ!10m5fqSR-#||MQ799Ic&-WjFSaB;@`>?8V%&Xbo#p%W(x0f$*&JEkE{!+RyP9a!?m2;0^l^4q*)55y%bz8DQUk1 zXN9~1=sFX_FsAqb;&J~6&;H4XFq2+_946;=P;27NR$WG3s7TMsB^Zdjm1+wDhaEXo zYtgrmFKGitFgwqxE}X%D)61col}BJQno)1Kd4%v;X|5f3UU z|9O{DdGR(y(g+CAn7oZtb#e}ncO@+hs~n2)%DYMt#aluvjl8Q>G21(l8t@vGmh4>$ z;m_k`5?1Lw#kA|xv`+VCqqBKGIs?^Xw&6zJRFiGeqZjr7L6cjl%039KS?9 z*kyM8k=60lq2|i?_y3tIo%jE}1`TC~nGJlDFS(l$?yP~2Y4{Z`!;ErW$WAW+^=9|| z=Mqcz@*BbCst={y0J)fBt|o?gnL=Vklyb+-wh8neCQYYOZQU7b3(tBza@N1HddZv85UDbKLyVj)_qaQS7F*o)~U2 z%o52lY4%j)UhAGbcKH+lb?$x{hB20Q-mI4llgHjT8OSpCMX)va%P%*9{!FpNY{L&B z^1bkgAc!A(0w~l9OMdngN)!l7B$j-*i+oVL*+Sl&BP`v@oZ|xFuwlw#bX=EV-hBs} zocaZNH!fh9&vGIelL@{hAVh?ck^3IzxcQo;DCzqvYz;B2EyEYrfv?D%bepY4XFGy|1rv#bT#4_h*>rwWWSXm^hvNJ^xT=D}GKSq{W5KD!<3T$TeXw+o6c^GE8fR6#m zrrXVya*4ZPAVk96z_jS%TA2Rmy zh+nb`84uv|8)Pn~QsXav)j@JR=;XK+7{{521V2mWOXx0Lh;SVe=Q8(Hw*D+n zU4@IzK^FOZzYXZ|_@)g2)vy%ZQntTgz-UR9@+vJOX^DglKK11@46>Z>^M#hRp zO_unHqLR-PLoxP=k;vai;7KnI0{kO$>LL)NRD7N(Dt>A(7Bfr7Toj90pksacEw zTVpX@Dn=WQ%N1r!<5&31n@lAH;N}xh43~jHB_T%$Zjv+zqf$=}>Mj(1-6H&QZ7wM+ zVYh!O-EeK5S17%@RiovFUNZ4EjaC;5e{UCFxHi`n3XAX1=;A`*;LkL=tdgU90m_5N zhWUtDVWLwzY>eg?NH{{^69D!Z0Nw*Ig}@&GG!yt8fEx+?8o)6C6xe_BMHDj z01X620CB3*@Q<;WP`^Tnqn${akC;Lv84KRW<7-AOL)6U@^%bI$!M4&) zL>-l=6il%!MqS2&$t*YyQ4<(-BciTlRCzU`O1A-hi75W29T|b1Cb)$2`!FKa6X5%u z32IQVT2yR;d}Xc_an-zyh0MHKwHSEeoP6MkE^*;DzkA8d56~$bsVzjs*CT!Attr6I za8V<_N_-MMlO(};4}0d(vw(XA&%%@_T#S{rne3vuwKgBVWVXm?zH2MoO=DUTIBHH* zl#^MbYqKj9nqNsFMGmPtGsrV+MVd7H+KLC8@WV&_d2%ZZX6(Lgv zUr)Ra>@m-kj%*>`H5~Xf7n|BkTo^N57~_TOH&YlhLl`rM_@hu#W}%e7koeWmAm&WL zZz29Noy1v!9|Eo{$d6nfz*n7p6RpWLuET)g;aoHu8st{2RLsq)>*gaXG4nGyY@1zl ztS1Hy^LD9fBK$A~jlGj4?vM^mgmL?sg6NznD6j_boi5fjb{;!-my1`z#!APwxJD7? z`!CF`t|yphAWi-@7k4EminDOHi@w{~B5Lb<3qRqi7B!XC{w;%~6v6I&tB}Xu&<;?M&VrH**AENSv2j%v{0O6ZfMbGf(jC#IfOI zm}4w{yWj=j%2^s~vH!4-{#oKJz?JiII9yeOi8dArKteA z2@C@8B!N)?u*ihI0dOCI=>R?;a2}He0;mPhNx%=_Rst&k>;o`=H2`r0HUh{7^Ga_3 zFo(d;0IUO0bw7anrh{=9TrUTAyBb{nvgwhThVdRUED6upDG)zCg9 zsr_M}3S|-Tu=NzGb!}ceYmH&<5V@#8;!M7&$lNL8emgUZoIE1q;M%-QvGE0~1+5#! ziEW1bYUzntaI%njFK8(lh)B9VBP4X!j7Mn9E5x(343GaH-~4(>TU^Ns7NGEPGXFKJ zf@ROf&P%!NLUxv%2CS5Y7Xz5b3g)qJ8EY>e&0LLueu6~)P5T-u%>1>froe2&__)|G z9zo*IS2^Yoi6{U9XNe8pEhddW0x(OKNovo2I3{{+Q!46Gd-lf6&YT!>5fT^7L({Xn z!7p*5_KP{b9SKGq*P0WH;71{cdC)wDOcniG;d~;s;!FVPP?P1CA$8s`VDk#_s4pcn z4Ub9|uSM}~EdFa#iuzHaj77_T)vH)3ORPs?70W+`{+1s^hWVAiFtVjf5#Gqwjv=n3yA8_I7mJ)a~RNXnYHp{+sq5nK&asq_hhXx*sk8cVx$0 zrkR`JKbf=@t+c(>l@awihh@a`zXA^|zf&V;Mi>EZn!QiXN=8dv!?q<$~!4x;!z7N3zIlCc~m6zdN6 zDkiMsahYA7vF(>M!2c{NhLm&T7# zw2ehIjn|=sqVcj`#e~L(kSH`(FF?KgUAJB|?q_Se5G%ub0+{}r_LHe-;fPy?mp}h~ z{Cw#CF^2KiOPt|Fq8eVMgpN2$XqNbU?+ThR76TEOPl75z zd0*h2EGo9?&w}UVWANVxsqaF-)Zl+6bGr@+*jca*a+m`X zwp^^mBBemHd>(-EsYv}^mVbugi&^}LnvDE9gJOACuVTXT$B`&3&qb+n{wiLt8TA5N z+lE+S`A5LipU~M@32VxR1|`e|qeTV>kJEJ40Vw~fSA(a`d=~ee(L?7}lu&feMr=>_ zgwAJ?D0H$^`Gv^Pi_X{C+8V?Pou30!eB=$+_M z)it6zuAwG-FddA^TtpQKXc&vk^SX+5N5Az~IH=I>Gh;!QQ;xt~8aj-$mgu+Q^= zLYDj#)<5}|CV%V9G?!dp0xPiiQ^Cmi6JTR+X1`2x>FZ?I;Uq9C!8&%GVJtP$5WkeE z3D$8&+(V<$K)xkdrw~!dpO`iuOkmykb@FRb^&TWX369AD&U&Np7(5^Iar1seC0Lhj z&^ZnRl@pQoOrx-a&7ZPflq}n>(pmoHRN^-ZpB#l8&$&O992Z`xa}2&rH?tDW3_*@J z-N}ebuzXG(Go2i>jl#_w+H(@}CC5IejtiX}-A3Ur*_rDTswKx|*PxY8(60?njx&tH zZOn0FLRfOl1_PwK_c=LkHwqsbfgG0w!g zz7nV8Qlsz}#e#vRoO4)n}S_y0;7xWDPgG z-kC_n@tg)RaTCr$EXZWQT#0F>)yL~ap#&2s4%?)Lgt9dLCMRAYr78p;Vi~>6h|Mdf zDQ3hkw3ekY{>-69Sy};F=ra-kj!@D}sa*=C^fN~#t9+>mlH7NsfdgpNWh=5-S2}aC zE}W4$#9(hvS0rTiPeaO#WLPIqg|A$)FiYTf1x6wEY`4=Xi5)Z=xd)$#Yk5p2Rhha) z-OV9rNE3kVJ?UtI!x3M9)d6XDXb*d^M(?Qvt9zYI8XVr!A;TD<%Luzi#wwSLqtK~X zOQSU+DL8iR=~iw&`a^<9y-(8f65@D+s}({&x&ys3DJ~^nm-P0OEYKx|o^i+=>-l&Y zy98`!=9{yU)$povlVm(5>dey2q$J%8l)2Z$CatDHsy#>3Ajni~mxHczdpe=IFs&z| zER7;O+rxa*dwS-AG|cE}lxU%@88i@`8HZv5%!4ll80*_E>WPSr)|x z7NXR{g~hre4A-n=POBw7HLHlFJvqpB!$KyP@wu42f8*CwaqI%R4SdXkwopf)V0Ey) zy&w{9DyUu?Z3}gdosd5ze@a0`sJXj65HSk6BjJKzXH$E3bD$tNaq5(@?ZM9OHDg;l zy9*kF_~lK>&>n0oXl-gL2u|shVG^nu@09LURWIc9dLwI5?f(mH`2}T)px(8Fx&ocN zY+?BE%*TPgVML;6LMuQzJhDZ&u%0PRdDT-LgR@d6DP?#{}05nej2v z?ymMgd_>pUNVFkJ0#IcaMk*X=Xx3P$yBLYcIgXgFK!+36p$TZ~XwccB?Ga5es-2+n0n$x1_at|%><)C3FRXDbHUdLo4kNe( z6Y4rX6f@uruldmdYq>q+6IXuP*m8U4<^t=fHTL3<>@;i5iH|) zw)2avwe#(cC4q4p#}?eRD7{NYBc`)SK-pRm?Nt;f1uqfINxHO{nFni_>PPDA3D&;u{jQOH?EyyL`Zwom4DWw){W+3D`ke&m2aIf-&#H2I%9{m)-}!CxbbRx?#7K*Sg9wh zzg#-s+G4ioa0Wux7!!54UDorLwt$QKOxIeoySsb!lBKQ@X@T~~Pd@UxVO}?0htK-z6K+*soo#*=FllYuF5l+K;H;o343gxt060 zRd>S5I$^(WwcF9Jt-&YkmDchT5EARKVSi{nwEl#B)EWk8?1_K4^3trRYchUcy7h$B ze1h%Z*80=d8TKKt;l$Th*gLPX2G6jX^EX3=PF`(4vbz$}G_kPA3cAiUeso?=CB_E;B#8Vxzrk z%nC`_QV_w2+_Y?6#y@N{{sw~RvsI1gQ8t;P*# zcpOQzwqAN@=@_ePgH>qztlBLVuIzqa+e5$Fx)bB{p*?)}^a5*8i)(b6UFaH?Hg>^s zyLIe>Hj)kW%R+niGe!0>>)G`mvN7um!`@(>y!6EGu?wuD#+HqHPFfGH$Ly8FdrkY$ zd%La9=x$_r`sCPxA`G!am!>^`*TrDx6V@6?73Nm{b$__>ioNy<*YN&eYQeQE~;MN&9XqcaybfhLw|V zEp4&>>7Mb(Jy3^R8y2iyGPd<{yR{X>WF4}OtlO~M&b9{TTgx_BU$|!+{dTSuPzTms z7umkO-5XEZLpMfF6$Vb0UAgT>>kapo<_>}e388fVx zR?V>PNU-b(>#6lK>~uDWVHLvc-I}c7b_o7id*5Ks{shH(_r)_# zMhdLO_7>|G>knD)8C3dDt>19Uo@f0T-_|hgAG~J|1?QntMwu8yi2t?&+m=qSM(k*v zDRfmoeO$s-b`+ZFqZ?tZE>Vpx7~5D`zxqG`a;bawwYkAwWp(V>YJG6YA#0C|)95zW z4C~k>Gpts7ll6a>NY|pLv1N<(rMbbXK4IN{>4{S?9rLYz`|TmtHwNqhIK4XmZ)9=l z)%MHwF_Dvx^Pr!19=3)Y!h8WQ-+txBJyt5zzttov1_HjAL_=ikb&&M$ViIKJL6W;* ztaavxRtw~Eht79LW&N7Voo-3rpEdR9KWwFL+I>|k%+}4AF3?Y#tT%M2)B1GC`r6nK z%(Is&Iz+R14oGclM5^tuAW(r%T#6xm!*u0~fO$Uj9I*ZlrriXl-F_+bAExAD%Xh*q zwDw-Q2?O_YQ%wtGY#Rd^|AT9>{p#^O6v2Wvw`E=5z2$A_OM58Lqr3M&&+fg{-T_7O zi)6d+603T#b6>kv17q7z`yEjl(@(ti4143-c6#gd!e77h<=d__IQ{LR&Q_m1f}K&gwVeT@ zv(eukX$!VQ4LHFK-R)6-S3@MSy4l~<(B9q%Ptxe_YKG5gV87en5$NzokTcTYZw~qK z3(moowML|2Re(-rz=(AE;jPjI^mhhU8-7%UUk8$4f(j<8V3G669d5tBqXF;nuU?B^i1Ooug+epd1#sUZ5%jjHE#PnI zZf`f5LLFUU#2H1kmE-*ji^}UujZWMQLH*=Ipfef{b***k2}DcjZ5saSwf@RbXP`D3 z?rw@2U|y)Hr5mr41hIk6)@Ykw7D_D*(S~+^Lwg_`MGd8En*4R(oT{R+JJ=o#c1DcV z@Rtp?*wWt6s_8hdw6e6OsJv`xX-QpKMX6Bf$FKUZ*We;^2b#J<7}u6ixT7K39z^eP zFp8F?D!$gdG1%DDg@sC|419Ai($x@cYSVp$EANN+G=L2l2@vaFj75aMxTf5xA<*6) z?1~1Pn!3ZQ0;JlAv~@?DL#rtfflmLrKscm?ARJsJQqTs%BW(>UFkaz?)(#8^J8DS9 z_~9^eq@&9ZQNRKVRbwn#L*Zbwtz!Z>A#2#?+U`aS3s$z_z)F9xvn6Cif~_DK($Fod zHlr~VY7aDY8Xb`3h7QO!mK{n0SbuXc43>n#Ybzx!5NIX^v4;E&-C#TCK`SJ>1H#nM z8gM$?7K%hwm2C}}H29rze-p&Pulg>+80zdq_5Rinw)0sFmwB?F^;3=`I<7O&8j1!X zlYYo9CMsuWj1e`Z=W}qSDCNY6u%lh=4NU>Wbp;xtMrko8j!|1xyr8tsKd-3PKc}>` z(qCL&Ra;tOtOm;he!jIR+6A_YKpU(0!fY)av7v_`mvu%1VayslYekSqu_~-&69bHS z$QVp;12u;^rDTH0G%KqstsrB$YFC}~H-);Pq%?J9Ag&yQmQ|i-K*j^Dfp8qVJ4j}1 zVmtCoPRkYIqNOwat8kUAd5jKaqp;3gRj>ZGK!tI#ytNl&Et~NA89SO~Onhe*J zF05JrM#UssPf>qmQAKGjG+a}g(E=fpnaEM**vOg{0}u^2bVfRYj#BB79KL~ewLj1m zLg`>627PB``udQnwfyxw}P4gfI_ATS~!@cC1uq`HFZl^%2-WP(jIIIC=**%TnGIFzHxFZVGxzv!0C$-?F@B_5$IYg+JOur`>82nz5`S~ z#$TBl8AS+mX=QC0#)Fh7Ly9dovCcHt@HMD8Ws6PZTT01re47E1rY8(}D{U$9nCP!5 zEv~95VJlj>gpAJa4lP-*Ft8L3PisqS7M9i+C1tgB{^}}7iRcP78P6Yzaah*m-COi1u86MJZe^s64P9jl+62G>1BsHxL^O zt?KEKK-JS%>}m)%bhJYIH3qR`EG}eOZEZb<+aJdY3Xn1up{@q(=lQ$BEu78W%Dju4 z*3i@x=!&AtG25s6HD!E{{7}zQsrcy%8bMJS&4I@5R(QNnp`AuoWCgm+4o27d+n_~z zG}o#Sc;R?}Xx*RzXLr>GuF(i`B6@1q6jjpcq>qFc&R;0P*yMC(nzEy94H4>Vju1Ad zLyb^wjEUJSv6oa4r3R^h6104;tHZbm(EYJw?nzSd8iVW&e@mw>U{xFQX z7;Bj)bip`(sSyGg?m!q54FVPk$4yVT)kbh7RFq~col<{iFRXXkN=G;-UWVAc@LDnB zg+R7(wzQZsI#6im=MB%_a65pFP`?23vP zI5Ug3w*4k{L__6(M~xxa zCrAw@3Oy@>cHhwx5HlWOXfipIwJmOh#K7_!a2ZzxLs(-pwFl|Pw}45JHb{%VtO}N| zX+^g-fLbTZ=)$$FFROv)RSRbrRyok@4|H^4Dm%*oy=1DdEQ7YKEh^WNN*^pjOY7uw zoc;Q;5+xhxPD}|Ylgp9w^Lwx&A*GeYRVB1i(DZ&Drzq7%w--i@uDeoD2JLA?EP4~v zSconUSH>cM$_H<055cL@Yuu&~oCMl5X=P4TRe5PqB`lh(8{lfeoW|_9qi3+tipqLV z7DpIb`dcU=Bth#*@FQZ-u15@EGWjF*RLD^o zVr2^edO=qYr^N9HvHJjLN|yGHMWn!}DZ?HrNbC*=29l+jsfLNp6C_-_(HtF_p?Z#K zXA8rlq*6P@Vo>QBb3~&d%mL^)XU$+x$52j~fi?je6rxiEAGNg;{MYg=o*=Cv5C6aq zVYyB#E>a_j0`xm4`sdWooeOm&QvudYc-hdd*N&89C?&2F*&8hFWiunTkWjvCZCzDO zDfm|bD*?a2VXdBp9M-rEm^j0YF(nJ>O32zl_H{(N(>q2ge2C77s6Q|{s+PfV3rTKK zl=!Ra>tv3~9>@32by3aKEMNe}91{a;)3})u*4tCs?}9wYEYYhiJ-3lxCJ|g7Id{aS zg;*QX3iYi=TI8#g`!!l6QH-5^pj9vh^jWZ0Cd)e-!YeRv)D<+jARmr`j8`)hiIxej zOq!tLF?His6KGTGZGUq&tRIur!cQcFG+}2<#;atWqbrMRmQ>eOVIk%(DXJ?nu)n6& zGZ+j3Hn=w>Qi`4_ceWi1!g{qir+cdg9V5mj;C(k?pDGCD+7zL_r+N-a4@8PZqbq^L zLX2IOO)}+4!y0$MP7dqni1{#_iyL`G|+2i)H3r19p4wpgFYpq0R4k0GO1JUco=}SF!Vhy*ogqscB zvX-RdOQ#0AXGS}nJ>-&wRc&c4*Cj>^)@|eDIo@begCUD}u@u#7=ZHI5jdgWw@YL9G zk!_UJ7Wr$-&QnuCHUzP<0U6+dvjB#6fN08EMD`nH*`>FBKp35SJ(bFeCOgjDnl3K- z;rGV8Cw7i28(3npLESlsz#c`~gdS%VEFOZ0P;a*StLDrvEv}3CTH4`Ll-Ji43-K{O zKCcN7qu%3V}tbzR-7WjbCn+y zC>|=_i94-Eok?Vn2yM()lPHP_OkD``1#^sUk>9_v8#|342(l>)mtL#)vPz6Djt10b z2AsE2Bkb>pwEEkcVUt57Un&N*(s#$!(ud$-LsSGR(uO-dzV1%3<;^}W7~#FqH^o{f zVyu}oZd_4wvz!^kFD=Ofu^QU>iD)5}gO^V167+0V=_44i-bM)9;UO$Fpt4W*m)T2E zOBk=HEMb~Ey2i@@=}o*^EF@5I{9uEOaImS3t6G?n9)&Irg4r$j zvVnczZmrSWv2uJo#oBY_E~#)Xwr1uYA=V4wKuZ(&6l~`4KtqK6QTmk9t&V!woJ^Gp zxsBy7sxH%Jd9^kb9I2RxB|=0CAPXrhERE92^UAQ$BU7|1L~_+mH6}34CPzqbj!~u{ zjO+|n-xyK$*dO6D&UIIt?x=>`iC}ud3jzrSN-K5ut=%ywkxD8!*>Y$P;3Q4Ux1J9& zd$4Bl!$MYJ`%LT?4$hRj2--0Zly?kLxP$OL2XRy`VVSkG9N4hY;wTF#E`p28s-YOf zVA2`sqVCZ&;N*ner^leZD5A}EViwOYhKX3I9LpY;kP!*UTS1*hb+FeH!Az&SQv5xMy&?FWv|iI zc8Uhn)oL-;r-={+Pt1R)Q@lJ(AvoXAuWFr!&A67PsS_qtLY4LSCC~_JyS*!fJxQ>P zM}dyZpqBEn1>l^D>K;pp+}O`ir8qUvZwSjOR85)UEjEY!etM8#P27x+EyQC+K`qN@ zH7F6ihDG)>#OZPl1C%?79Y4GbEG~O-d0A;?ou0>W`%~f{i6F{~KxBmK<@7Zyr!yx5 zJytyk+SwxQ9XK8ic450uG!xd!+Lp(5cu68^jU5=CS6S~X_Q?fM(xexU&MJheCE~}s z?c|h9EC7}_a@-c7`$x|YRnZ}#Qt9rbG6r#2?}wZ41}EWs5R(*V2H4=FOQiQF#m|pB z<5la$Ko|!u*ovx+JN&~g2C9>(BKDdlMCQ3tg4`LvTM}Tw8vXFn8vPU0{su{tGvS_P zxzcWY@!6a*^t(bS6)G(SwPD*$oJ0&R4i(j;5~~}VinNuOfl73BUhD=tQlt!`bHFNU z5MG5WSpMHG$|~&|DWLm?3$bXMdzqpsBk)aRVF;fk%uPBBiF01V%~Ku)EB!AVj-9;l z1W5dWm~xh75>-r`e$)09v)xhjRQJxx%kjZPQ)nMC&co#ToC6_?Cx56NGN1^8MO`H) zi&*n?HPN4Avueae;<2(auJALdqYjtsI0NtT3X5c%Gr?v3~Z)xk4IccF)%hrJ%T&GbC4K=MMMp@% zb2tNfqsHlwh~L7p+Oj$2rOsXgw*ly7DxuQLaP7Xr%Yzm)ur~t%!z6daSVW|#{Jg3f zPMPLFyMgU@P9Qm??fUi-LbQVTd1^CWZIVE<#*Jea%(vx{_G)DkU_5xx z$*#s9id3(y6v=f|t>X*Y(Ba~AqJr0UfY#dacA?B5hz(jr zQ&(b8=vWI!i04xADgpLeE)}UuDnd6D{|X*di@T=gVBBtJb1P+$ z_ZwoCwi&Nt;+ckM0`A^p-2goZ7o=H^n=ryWY*Jo3opm8jFW>5FN@ew?#umG@*qngt z(hNSJcUTl-&8!YDaqT3gA3#Iz6$&@Xxk1QNgm|sREfnmU^{B4+jq9rFIxPHg^1%`8 zv7NGaPEo-LD|`wW*WUU}CNs~VWr-uF>Eg=aVgOhD+%Nyuc_x?1!A9=s$7B??MLUVg zKa-WO(gWwg@&uwK0eHk};|o?*_C>MQ;ysw|E@8Q|p%K9a9hhWU<6_EV;Thj2R@rOS ztz0S!mEISNSp@C+mv!)K6ACHnY{p6e%m~Aw3aDckjtVs|+7B4b+)AMbDTW%NKT+?A zGa9}qCkdP_tQ8@D5pGpFR$?{vGet*>2)7d=`1*@8EwrNg)6fkzm z!=PSQ^Fdq`+=>vb3l}w}`kifZ6jcg<;|l$a`+j5*b~osStM5$6xN+&KyaHMYxL2p& zPr;f%Zzn-cd-f6atfhp3(aw2=*aey#MX)S0u@%6}POz!Xkfi2LXc^r0if!zPo7B6b zaXLW8S-JADixF}A);$*o>8JOsgdF~h36S;byjSU1^pv_u)>N@`8fmNqqch$= zr>w4`s2cq02*DP|=|jg6Lbq{tCH;-1%0)tvQ*8Fgy+iJz%Lbpg2blS?yoy~XIS%RMiSS98mLA*>wm@G}IJo zj~zHu+;GC9J)W4egIz;)7D!z!6D_8LNDcOWFfee80m}ki-R{xf8-slC`jIdQ234y( z=9Q_SmM`#^s~of8M+rz;dv`}C>A`L?mmkVM(no8nd7lC|1F=fv3IrPh-8}r{kvcsC zns;Zz&9U*Id;%KfIuJR@H@#Uh7sf!}ij-j&mdYlKqA|7@q7f8dOy49GJFKqlV6Lbg zFtyc-O+fAe;y!?*hkC8#YM0a&7nNg?jc=Esi{EqK!SPtsp#x9-wV6fl;B?BWp=TfE z^aH}!@g{j8Joo1d!UXR39 z71vhdx=d{~R#kClkkHxi?WatFA{9%nx2$1G#ev`ouNM#HPEt*2QHjGpncxjLa7Bkj z0MvC~?XpTs%1Ciko%MjC03w5%aS%23mfmd}t_R?&hs{Blv|g>2R?T&MaD5F6xt+as zt~pQ%_oE?Ca`mBC;iaWDRp@zLeNClvdz!m9@DXuJ%r8(jMAqW6CMJt=R^*(!sD5$J z28N?wxaPodAMS4R{D>XW4e_WO-UU~^6DAtrrd2#2l>OOghA+(U6Xp>=RO0XuWJ z7$dt*v6Dl(GhBXS&$)Pxwm!133bbOZVco>g#p&PJsvo;;jpDYeja=0gb#07<((C!w zCZG~t(JfllA!i(C;oK_4q{&np0z7F_+r8q4aTSg$)don8*;LSuf-;VBmI0k17Z*=o za9}pYu|Xz*?i~Hk-sS?T1l@HO_03)4 zFszZ|Bdi)l@$?8*Y|Di%h7c$B&zf;{9x^K{9`4zkt_+%ZLmftl-`?dohZ^LxkxG&) z2rN$;>EV@)y{E*7&LN$W5`2%dg}0>^)idHEsjUb3-HT&SZ|}n%!V@%a*WW?CAQL;B>J>~ z;wT%Z+E0U+HPhcR*dOj3(5GC>nS`?dwfv~Yh0nU8o^>~eSskH*SaGRg7Gf(yZpTF6 zxZ>_GR_9v(QG!%ooV;SiZR@j*S;Ep^nB97xO1VD+G z&0XTh)!-tz4o{_wnjnd?`4XbP6Y1`tN8sEDi+Mp10)7`F65p&QR_QS3&ZOvnXboXX zm68egE4&vLzxN5F1m_sTsqF}TAjL<=8VCnYGe2~kbv9>Uc-0HejtsA}`k@BY%L87O zLW$zJ&Tb!l5Us3ZJ_yE{s$A~@_An6KlL7C20StuUSORTK@Q3lec$xJv6(Nk4T`p{u z*DUGL9gfh{*3aQC0miFMZ`0CS)i*7A>mt#n7;)VfZr5;?tLH=`H<54=xOvSeF zWW>~R40{Lga1DL+M9)gjcATBk2G1!ktCS08nAr3&l*A(?8g=JM9pBLA^lY4Sy*Ib4 z9PTt2Aba!ea1GT$m1l6@cfwEAqEx>Y4TznybAijdaug{_0X?pe`{Z2AHnoQ$Jhg5P zw$k}0&)Epsfa@Bu8BTS>UAUDoiz{1z-TWGqh)vuKEt^o{EW9|3y;5p=qqV)!h3bwJ z-J;k5m7_7^PcYSipS}vfwTsq_r_CTZa1&!f$u7}v;=wIkc6#*auNDK|x6|9S>NMZ6 zf-w<4&Gq2=Sou*{`o`Ue`%cG5Mn;y2&V?JJlV2^PD~T%udXrFX|A|AR7M37St!Tju z{nZZV+=FKsNT%-w^`k`?-4*vrbS8Xa3>WU2#128VC5$No!S!~KI&!5X%a#~l_JH?! z7%n5qSL+*RDcEM1rC=XJpMvo8R-`#?`eG)3z zb|JJB9IGP*INwi0IvA!a*k(9e!9IpXI-cPi1;^^B241V<81kndq-}(J$uH|>SgPYe zp8Va8y!SA_QO)4EfD2v7)ej%jSlA!IYy~oygAeL*iW`rjz+P4UB?Ny^;3o)FRn@F2 zNy=9{g|0^G%_<`Um2nX>k~-5^f}^uLZ4`M+Z{~@ZGjdVE8Ovpd$%R$$Ugk!w2;;IA6epA!NH09|)0? zkw4Ax9zGt!`UH_%3I7!z6l9Q$f|jv)UuYYEUHBm16HAdV1=aZQ0e%H>!s8UajQDcE zY!3C@ir`KKK8fII1v&&AKr18y8LvbAx8eiPN!_MXUBHc!zYCF)2p2%b2*8+7?*Jah(5GNG!xcK7VY`lx zuj31;W87AT7Sch$AOty*b=+2l(^YhQsZVt&hW#aZ5lfB2hn;1}lBkRU->e&_3c7%< z#D}Caj4Ie>_=tji3?J3;40kEm&F}>U`xw5cV4LB71%sjL?;!9)I*#F^cvBILNeThJ zo0bGH+~*|3mrO(?=+8iqsXzuz0>&l*oA63h4TF&aE@DuO4+QI#kW(j1h9te3!94;l zbefNwSZsI*K4c`r>5{XWfv)smtWr|`96sy`!`~>_X82nLCo_CO!6^(6C^((r2YBNd zShC3^z~ApcMd=JbR&WZ#V+u}Y_=$pThQ}4`W;g_IJClkC43$@(MbjA$S8xi$5eiOb zI8wnj!_f+MGhBs_R77B{N=Rq8PQfV*FH&$a!;2McGrUZ}Zidg}t&UQWGXVGD-HzMw zaT%MJF+2jYF+zLRe+oe52J#)btK)L-h|j&_yK~=u#kqFg_4GgXC}^;wA$JjpaERSi%1^ z%+Qt^su`Sx561G;rB3IV->HtU(~-0BYQE9#4oEqn&hNZejhGZAI|2FFT7$1P-Pe5u|#2|zZn`hW9(bbeKw_=-9?KP<8 zHeD@4#rAsU{01LZz)+Q{?%{iV58q<~nhoZT!-s_!Zp8<5^+Su-s8$)=fDdypWPRwc zL(Hux@N-=OLnX9}I6KI0)I~bZ(iJdd-EkEh1bRr4qi%*DV+{oTv(H7~7(Ud|3@=R4 z2~N{2IRy!)RhA}EH4Ls6u%4w)DX}|So8e*wyBQwEM=B!lu}Vm1cuc`53_nqD zGQ&?5Y%~0;g53D0AI`myQ=1KsDvPBKd_K?!iL zoMA|nW^htRJM=LN`{!4rFo@v8Xs5Qnp|<0yF$TJZ>bM%JS%WTC?G*b8dH<)1F>nbD zHBRbNh;ll3E|Q*?DEPyO^ft0FeVGkHLxlghk3bGsFM~1(Gsp~x))tDc__E1p?XuZ6w3)hAimOXw(uM}b+RKNJ zSW%IprD?Uh^pT7$js1P^x%YW4muECSyZ7@soOA9u_uO;Oz5n}vnTLDMciv71*=Qm; zLl`gM@&)Gv8X3q&mXAiZEgD(AG_rhYWcg@h+X|(T<)e{pD?}sPRw#`uAB}8Vp)|65 zG_q~Qk>Pp1&O8TSDUjzNKM_wjcdyh8Fgoxqfx`JjAvli!@BL&vQFIvrKKnpF;oRx3 z=pq37NIy~Z=OgmxqZU2TR~*^GQn*Z@i=-5d;%$yGJg1d|(XeQsQ};5>GW7&*mUm*A zcY^vb+jP3gb({me?Z_6!@TMTTP>~FL(sU5v@6RPhCqkJd0J2{c8IDIS|#Omf72n7bx&XQ}gZotL?ZLYEpDdOA!^Nf_Ec zyFTkbtX6N&R&J7=b%JVNuUz52OqKQ=>kxFUBa5DoRHvh@W6)ejwlH|Rnp%RHX!&m_ z%$8cYOE_BH8{*Zi78-_MLmLXwIxbzIbnuVPxg3bKtN7E){pJ*CgClbwmXQ?bve(FP zIjJ^uCo*&5T)^8waMhxOl#$Xl%8>fa+XeW>v`I5Hk*H6!g!!?=SQp zR?{T9*+ifjf_~X`wRdPtpL4^@f$kTC7GDzmn2ETo7_v6fFx;IA(dz;&Sy1LoUpCg8 zuE;LyQqxaZbI|RMyeu>ii-l-^PZPJp<`6{i72?vwxh-z&fzgiJGjs1VS3ov#v&dw~ z_9+KT6F-YluscN~8Lc+wTXWDnM^2|rhcypAKQHJ0V1DA<2_|JJo$D;-f?~83HWe=m zMj9=PO>SBE>E9GjznaLhzb-b#)4!=W{m;nB9p*FWJcV7WYjaWFqspgD4)XFX1%`i{ zIScap^p;{fJZG~!Psx8j|#>pPw6{-(OK*u{GF`$YlI z5a2t>Lc<@UAl3>HfPWnXA*{4)a|(?;;3WdhE@*`#TkaB~S-kDPs#ddo9e9C2tw8OL zoJFf=1+)VH$W`Y+7>kz55n|tCQjqnU54}bYi+dz}L%>+TUsVzqH%N#L0t5~#kBt+A zK|UqnGXlA|Q)riwL3)MQbpkyiXD@-(96FS{RJT^3)*w_PuU3e?*`%P`1!~-kp*O4= zwBJ>C1(R93_(xn__nfHDIYFUTJ{;}*(9@{!V56(S#~57$t~0t8e4NpB;4vq-5NvnE zhs7v1b>MT2t_7cGbPf1?qpQJVjjjU!NuXG6cf?yJr~|)kbS?PLM%RG%8(j^~>RrcG z;CVy6A&B_`JOVE;x)$7ObPaf+(beEZMpuFVAaEXqSbag`y+0&^Fb%BWug2S}%`wy!QRwM~VyaYS{B=Br7wIFh#Tvyw?Tn0mv zhkchC)#PAR9~BQ4>pj0{y}KFJ2mC<53@WlpOn&R)($rH~uNM#jf8in~Oc6A5#IT@= z&mEq|6mv&?=1Z`rE-=?6@Iwz4CBfiz0+AqWd!=CBv-I$INg6sCA*;dBa!%ak< z;A*3*z%L23P3(5WFHKMf{*}?S;Ma_<0l#i^HF%HFRp6&j@`fOu5#SN{TSnJ{w-{Xm z-fDC;c)QV6;2VZ}Lzyo#hiOSVh3?Cr7ak-9P3Pqw5FX*_ON41ieQ0;L+TA12yn)C} zt4)kSA1e?!T}z&QnH<6 zhEEfCNr>F@GDUm3LWRM^`_Y+_jT2}jXGt_(5M93v3`aBUu#`Y^T7 zVQ!)E!e0>0A!b|E{d3-xQ)Tbp1-OMh5*tHf?`=myOox&`AZKM*j3imVcoT`n$7J#VPl z9d7(hJ;a2afOSPo200T=Jv2|3cCaC{m}r%{A8xSX*o(tB-qm zG=i&CMVG`SSdHRR5;yjsX4bo#QSA~i!C(dzSzRUeCMWKy0^e+OHF&krHQ-x}t_9y_ zbRBrs2)C1Ocf{plxFvvR8(jzyPLrm3-mRkx&N?=9{jpOhPf{B=59fdL3hd}WZ>0~ZtMXwZ0bXQ^f5$0e_$JS z3+8VXXww1REkFZI800(XRY$ha|9*j#OVKFa$B2Y^+SG$*UlFkS@dovHhedaU%g?Ouxp*1U>?uZW_ObS?PnM%RF!GP)YP+2|^8)|l)!e|?HFTnaR5 z5OM{!_@qe$wy2%}fyv-5)q$sKe-MZS{hcFQHVHi_Zxz_bgy>u3CZV4i`OOBsMF`aF zheEFiFbtk|hEooc{G$3fR^||c-|u?JfmS;*529c9_}DFi-cbjyb6(`};x^ZH9<)~A z)Jrbq|ERu)yS|I><5#Hft8AR0dmWhvJuJ|ty3((szO0HT1@sHXZ9QV)7cPlp^m$`O|pV~a@+BNnN9a6-j6Stc$eRT)IMA!&KPL&nU218QBPCwc4l3;4T z8ia1kb=4|k$YmiknJAV%G?K}|YV@uGKO1`*Tcoq z2eAlNqga&0jXkK@pt_q;9qIyH=6AOQpEN+JLN03vDnjZ-a3ZZx-M+_)`LP1gdo% z&7#q_jlBL$y`2l98z=2QFQ7g60fE|s9(Uw)+TZQkPk%&claX=%c&FdZ574coC%72+ zp!ZD~d)aJsqapE^uDH4Ze z*?IxLbPwf6qIU{*3-$}@`)Ao$K`7T&>ocEVxnQM$pM35)=j7 z_;K(5S9^Yj`F%m-ApLGautxBZpjWU@5Xx_*!%s)|$p>^p;n$J;j+C}5qk4Yc_!Ro8 zt3FcqPr*ZiP>$9Zj}h?G#i@doUMI-^L3P^&!53@{iQ4lQFn)Ew9~kR~*k2>p=+A5X z5tqMm%@w>R;Lm>iSv368AlU!Ewhw>dd5yog=-Y58as6*3`>#Wkua&J{0iW$p(Ru33%5Qw<&n>8D3LmXPyF;ySkxy3$t`#g1bP7Hu;4>EA=2H9AeOtf>riZ-m z%n82p=_Zsz)#HN`_WH8Zm%Oj~p|UkXaE{lYx>QB{*L20RdkY%IWi}zsUQ_ zyK*Rf)$^v0et0<#`tMZFn}4eRw(Rh2r&6+kg7*rJ7x0E(PQUvUdvD|Yj91pp4Z6Pw zLfNgl6HnEg2zClW3GYF?DsLBrmy*9!9$skDc86L&@HEYb-~_=?!3e<_0$y);rAh5m zccXx}j-}pr-dlLoA1MgsQ1y5z!Cqf>`jYom|39)IC(I4+?lyDc27#5-T)s zyg^(q2+#0gJntswMS}KeyLYPR#Uj-opt^yAL4soh!vrS@c!4OV&r|F^0gwLM1ffv> zt1|Wdq{EZ>NP|cg1=X%?1ei3F;~gbc-sMDo<${WN+@@ z-+|s3=>g}8uJm&BfH49+COdmw(gAYSCKKs&YK6xNXp6lq0}cLFdZD08nJn1v`&}_u zYh7@-grQ&B1H2jj+3T%3M(-tn>hK9&Fr`(X?p&L!PK01(WDh;uSRx2|EA?CtY?mQy z9WDrZD@5aKf5GJU8W5{cLciCkBIvD>9>9M$4TYGX`*A_gYaFU~8^Ox6f|jl!Pu?8q zJ*2ljK(80Y68c@^^<12#vqj)0+-nBCwXxon(i80RI-sEU`ABd5ReHY^@ZY6F33?BC zJ>s?J6M}Y&YpVBXq_(=EMNkO8lH90Z4dEX(Qx6Ulxb(TGox-e+%uvVtuNM`{Ebe#={W zt_@Bhr&8spMDGGM98hC2{tbG^d%ZA@iGwP#7uY0xK@S-2^+NrL6DzWs=stlCr76*C zys;wN%mwL7&^uZ@F%D(VEfv`XL8!_=g1I(AdFalHY}JvvXRD%Bz|gto*b8ENBR^Y_ zokAzR1bcyxG5ac|()Y^VX}tB!9%;PwzM* z2U~rZkAAw7UM!yRu|z5~zK;n1QamdIev$A7KY!@^rKDQxze{+pk3aq2Bz_DFTctwt zbvH!R|9xVYa*t5K-eX3(e;H4&s6FbBE|EVgT(67eI?w+^c)fVNE;>2;({}O0JpYC; z%qY*Z-;C9G){C#ud>#oeIr|m%*+0gfX!m3Ilg0Dn5@r&9ocQhHZ}EIi{GKR2^Tf}U zGne)={p)G3_rb4t{WaqEM*1AvGgp&xxtDJgzb}$MEq=4)d%XN5@f%K7taa((&wq=5 zP5RZ6Ge3V8pWPnrH^*iJ<;P}ihHF)i{z>9<3dX;9|HcWk2=0&pX1|boQe7oUSK! zKH~kR_+JgR{@@2`p2Gfzy<^3P!tOXK;<*n^O8D6kkNzzQ|6syDpYVGl9{ZJt=^tO< z>m$Bi{22*9KH}+rNy2|pJkO?-!C6gqYa;(z#M9q*68^^#kNv#~-@iYWtsp-q;jf5z z?6*fe`nN?q^3Oy(^2Z_``8OjT`705R{H=sPZh$I%L4H!i)BZg1doI&EvF2g0*2Ba^ zJ~!c4M?CiKi+Jok9r4J25b?-gk9g#NjCkaAY+Sy;pPumNCH(A&$6iOo)Bc`>|8m0r zAmM)#@!0!Q#AC1C9$`e;bJ14 z{?vq@5%IKdjd=9=TU98??~Qomk0$)~h(~`{#G}72;*nR`Bb_MLm)+4*p70$B z-<|NB&JhaszmxDUCj9<{=WmLk;P1&1kG+WzkNisU;d!rC`(;}sNB^dTzc=9@OZe|6 z{GNnA!X9~L+1A_p68`jr|8T_P&y^96|4Snt`MQMvR>JQ{c+O)9h4zE&5!_W_e|W;5 z74hijA|Cy##J_ciYp$om-|b%z$^K_wLU)e%qo`x5@~g#T{B?@9QhFzO5TPD%KS68>uO@p@d6$h#vR@^caYLGis2 zPk%2YJO^on_qV}%3mwRVgfFPpCA>0>D2=a9v{$CHf-=Y{*Voi3GiDYF;+hZOE*c++ zbS(5Wi#z7)Y*Y6kv!EQl?zsBJO0L@4aCYOEvz5SE`F`43SHg`UEwsLcT9zZ<&xC2s zuA7NEyLmz(aC8&sQZMeSsq2N)_T_7Iureq2F6TsKos3#2W;8R_A1rK)KXTm|f1l%|KWkX_YcHq*b=6qT1lgfmQCn~)bvObb!tdLU*LLKLSu}`m( zT6Bwv?l|aJ2~DR>X--vwH4-y$x-#it8H!8%n<~4byLD9lgh|ToD!ZvXcf-^+r7;`V zIdl0^1uS=iWz#CeNwubRT*%d^NL{16?mC58S@qbhE?QBTzVI3~U$|_%KRvv7Eok4; z`RMfMGY6y{>rXHX7A+e)cGA=-7mhECQZSWnMt?L4qa#*a6F#e&odfSO(xjGhJ`rJI zO6N?asn!@KC~puKvfE~g6X>#iq>Yv6UYkbjMwnq8nNB)j!8IL9y2A>O+m>aI~Urr4^w#cLBm4gw%ybQ6B#cXXJXNE z<+i)NJ=HDFzE2lpAunAk?s_NPVcO8CSWjVD+Qy@tWwZer99F#?{c%)GSces>xn^h+0s%50?k>OCFLfCNz`@Z(xjBV zSO}%hM~zYc7wCh%(E=&3T&F5?jT{|(0$lv_-34pDX`1*S8#MSGpQpH{ODT_&MI*)@omFqahumsk&W8%wP# zmxr>Cq_r4z2DR0aKQxsygmSB(ZPYx=P~&fhX*>ME*=1#K^o0xg!9?Dr{0hS=yLyYe zx2AlYvQhYFfI>mPUa)(o+ak+Ngz_V3Gmdu^=GbR}k!z{P%2(;KHiRddQp?eHJy=qA z21TN66qdPn5JbV=a*~M>dM!4q1%z}tjb8t??J+Y!&3HGl4nhru4gfq z8pYj@($37pc#^TsP^N}?i#wf*_~x>sM)&%(X|(xsuOf9>Uv~hd_14v2dZu7bSzmU? zBl}Zoylqr#fhec-xf@#A+ek#(GJeMBLbFTr${kAsFHF%dUF<$JI^3DcO=oc>Oe9US zlKZr}nJ;r0;byrdt1FYoG9sUa*Q(S}cUL8GeW7(!TPnox;N%51aveLl}QGmKNa`@8)0qYm%;dEe)K z-{*a9?`6ir4f%xys;VlXpBN=ZAu2Z%B@^kWdob)lk!o_(m} z6RN)y^?*P4iR|Bv+88|3i{>gF`*v@9a>7l8ug1k*z2e--zkkg&_Ab_4kB7Xn-8#ik zm7O_*S+)vK0MFF?KOcVPgP*ND^QNAb1J}&={=WMk@rVBOc|594`Z-kuV-^iV@)|q0 zejqMIBjeT&@eQWPrG)gqh@wB=qGiJR2cp`496`_en+B26{9*rfQS>uKF=jpKgHhw( z6H(9hi4=(LcwxMe(ag(Vr86IsQMR`kxt5&;EWB!7p)L z6h0A!r$)$!^uLejkK_FbSYIC1{_cnd ztRK=xEVtqx2~qs6h-$weVmyxTj^b}& z6n%bZFr=i{qS~JwF&_CjJ%Zjq{-vn?JEQuKjj#{)zbJy9cwbcgew2lNINp0v{k<5f zM9TU@QT*K(MgLV4{(Y4G4@T&N{gp=5ABgCm{5D3_Yf=5*0-Ded>E}|PH<%?Zcv)FV_2Rk~e|7V;`ihp8>K3IWwx!Z8>^H#a|+8ASNqE_t~sS8{rw!N9f6)fH7T zl;6zORe>{ej@65+K$729SysBDsXD*8xskjgEh}hjURuE!6U?dhTeA(#ui7G=J*TXt zp$Rha*C_cVC1sWM)fLTUq1v*kt#$QP^D63F$%)mI$(~SCQYJ0iN)9Tbgr&Nvx_U_& z)E6S+;7!#HRjfyM%PQ*2=2R@JHfI%;Ud7~333iW)4-VR4OVXJK-dRW>#>Q0peU zrG;~rWt1%)ut{B+2;ep|{nbk?*9nu> zwY0QWH*6vX(8^JkSw_<^C6$@sZ*=R>rXpUrG3ZAMph6RM;# zZ2J_bxERi4{2ud%MG*xxMdNyLf_t!B8YuUphy0dFFI%IxC&BF+g*URgzb zJ)Xsl5KZmUma>LMM3x$G#OMu+$6A5F!Nn=eb#7G^meXkng#HS6rscaZ774a3%2IUM zSgF9KAy_mE#a@;&5?ZseifO85k<}5kK@zUJmFQ|w1tNGvU0u~cF=ho>k8f!lpOLNr zR5q_@@;46PCci9!EHLYto1~OgO8_VpXf!vV}!a1avDa@mk zDfadAnPMNlkSX@{+r%_ZQT$ACXNe_48H6qQN~X~CDyF#M zYiH`jy&zK<$9kqiv9D)}L&rv@!xiNYrf!_+nT}AD%}jAYb3fBjit-RsoCO|ZnxH6K zm?q+GlWCHoJjK+jD9ZKhqh|Khv4eKhuk$ zf2Nl}|4a*^f2KvyKhxRJKht99pDE6E?MzFcf2MPwf2O6-KhwF;Kht^8Khw*gf2Q-H zf2Nm1|4grd{+TX-{+Z%VdkfPmp?{`VLH|t4pns<2&_B}(=%48#=$~mN^v|>k`e#}V z{WGnB{+TX@{+ZT7|4i$kf2LPM|4i$lf2K>Jf2O$b`I2cP^v|>j`e%9#^uG*gGxX1t zv5qNh!@(3ZE~a?gOqWCdOxvJ;rYoR-rq@FMOs|9fnXZKXnf^pk<^&FFK@6iTSiSw1 zkV{wKXn%iyN3Z{s;2Ut~V77)|zl31~c4!N>D@y;9b`ba9hhq8ZzYor;V4{lBcMvW6 z?}KwHJfSOndj-3RS=iSr7|y5E@>ky$!Cqp6c(Y(;Yg37P1pA27iB}0`Rc#h=lVCWF zQkz3uE|{dXGl+`?!zq;7V&WXZY+5^?I9)L2rqq@b8-jC)Yl&Tg^N5>>6~XMfwvG7c z_b9jz#;eq>B0eaXL)ES$-YXbJs?_!n_X_6FwRaG25xkIiGx27@<-`vW_XviODYaXO zR|zI-wNDW@39cvZB`z0CR%`bV7Yl~5D7AZua|Dz1+5^Ptf>#nBBsK)EA`TL}1h*3( zB~}ElBR)=i^gGUfJu%jA%wKR1u|~XC@J3=6aj)Pzh&{wx1aBfXh&Kz~Oq@#GBlv#e zbmCQlA0o~oZW8<$aSn00;4Q>6h>HbpB`zk;5&RVKeByM$&k~mt8-ja@Yl&TgcMvxb zD}pK7+BV{&CpiCCiB}OH6iiXqt|Q(ncpq^Oaj#&CzV;5{ErQ=A-b}n%@Im5-h%-v?+LBTF!UV--Q70lbyS{HGzU=Oi}c#B{!u|d39utA(k z+#}dWoKCz-a4K;Yag*RQ;vC{~!Rf>^h>Hbh5*HKa2+ks&Pn<3|o4B0V5S&9?OY9Py zN8CiL2%bUQMtt;N;{U{}hz|-bCSFIpS8yqD4{@*H`NVe+ZxOtZcr)>4!R5pc5%&nL zBHlv0N^mXlQ^ZYz>xp}b%LO+P?;$Q0>?ht!oFll6_yBRb;FZJ&i4DQ4h=ar~!R^FH zi50=?h>sH={YLzs7&~;#UvLkxM!Z+>Mq+*h)YmKc4q^}S7Qvf{4dTs$Hxs84_Xxh9 zIGuQv;D?B_h?@jIMw~-jE_e&^4B}$JTZxN_a|Ay{JfApS@Uz6_#D?Hr;#y*t;2p$G z#ERfO#BIb!kBk2kuOdDucrWof;=O|R5%&=H3O+!52k{oc?-Fk&-Yoba@k7Ktf{{zuJRpS^-OOZ3R)L-1rCE_Ebj5$ z0S9uOc3<#rD7E`ZJ5cuqE^y=acLjEU{DtprfzQnT7Wu0zc z|6X+DUU231P$ykpUpSAlIl&LmWcBucVJ{ds>k8+s^)-v7%Z)cz+?LD-6Z=p}KC{jt0 z3(0i_sDpr_cD@+ck=42PhvS1ubYKM2gpFxn;}j1x#t!JO!m|kYS)3ANKW5UOz+$_4 z`*5<|>ml`oF!eSPcArG=3%)A!A7HD@`EW?`+8r>U95(+`NI>0N$40ad9QF$BLZ2(x zDP3%47k;0+bEVJImE-E@?Rt`P^tZB?Bgl62cJB5s-fj26=9J(wa0-;{^3Uze_61*q z)F88KNV{5UP+s6*)z8eTC9JA3t0s3AxORg}@QOxR35NOd$QfGm?^Jo`X>jFPr z;3u%dyS-bc-xV7Osu(xce|pBTLvQz(im-+{LxyU-HB{(2bZ1wAy))C7ajd`CbLi0s zdC$WJ*p2RuU>5|mdi%Y_*aH{1F}g-hzN3x{AOsT@9V2vvU<&x`D$oE&b-4ncsvU23 zx>_A5=_U_+Xg-q9D zz8vCbeVIs{?T^sP>wR`ObujizvOLJS<^gp1{9yd*4%`WctLXu=uC8`p9-4GR3y_x> z1UsU81|BorQVX62=7J3nWq06dmigg~D}DA1F_>j27b6@)qwflYW;7b2>KbWkW~8&7 z7Z#nzyUfXSnf!N|{DONRIlAC&m_{2*bv>ZAVtz8Mhc^Ra?^ zA;i8c;9#Ygw6o(+DDOD(JbJ+#dqD1N_fP>NJKl7*$0HZ`uD|B_Q&71Y({Oft3#SX- zM!SlIZFcVNTL7Axp6BTl-GNMwcK{^M)7cQUiT4m=0S5k%<3GhNK7eOFkNGK`FLu1y z9e7Gc{sn5n4hB6u2RZf8&3jCLz=(Z^0Bd@JAN&)_A0UQl-9qApsHMAvdI9Gc0<|ry zy^yt0@g%KtA-w4VnA+;?rL#c1(w7P?`F%dPS$bDsAFQpTw{;TSiv3JMKV4l?_)=>| zM{ip$OFv>M`au&P96vR%BW=6rA@~kzI(Hv>!5S7}11k3h^T2)=G9A4up6{CH3hbi$ zb{-|${5nQ36J8hHA?HPZ3-&;FIQ|yGh)aFGjyJmk2f$?8XgGG_lnvyqW!N!9RJGOB zW$z(>w~E_hx#0kmx>f!f*pQIkWAV58FdYZ}V;~8hAp>2Af#5wpRy^xVW%5?A@*feZ z0_(eiLoo(~=jdMPGerC(li`DCxqD65G0*$a;# zd+-SI1dkw3t9Ov|?bbZP_Ht;i6&}p>XYOV5GLAurE3uN+2dBdbS8u-x_c|EShoW+% z2GWI864F|v9;8)B-ALyn&-@Kp3GQo$Y6%ukJR_(+YI{^=>NO+3`1&eZ8A3Iy*i>zVnTY-WU38$6mC3@u;(7 z4oU)lSDhVG+4MQC{U^1)E~53?AGGFp(wg6y+g;%1+;$hZ%*0_Pm=sJa<|yo-$n=7& zjw8-nU+8?jqu06dMQ1w?BVBnumTr6jHXYyo5@f*u(QzHB0xNwvs=}X+gE{)E1Zf3g*eKR^<@|Qz~g^Ya9l33gv zD$6Fv9WOaMMv@W~D3e)0IS{x#cpK*-j)%4#JiG*stN!6n=ROs_RjSnn$pSa(1M#uF#j)b*ThC3Qzt1a~A>*6%I&k|-elIrLAHy)uzyjX$ zbTMW0J>q@eIO6sAMre*at#a*_eH1r^6RqcL?)FzHbynV#V9w7w~5gWJBS7 zZ?nx-*|rDYVfl-Fi&%vII%mnp&f*lu@E-$&;7-GPW-x_T4nJAUw7>yfX7(kT^uY}%>vM3um;E<S(d?Goc>p=XQqpP2D~ zB0ZH8@S%5ezOYvp*hAyK9pE7tfH`ygyUqD_rul+L`_N*fiMs<^D6dP<{^_g0Md$J0 z7%X;ug=E(}kcIZkti=|S`acf>TD`p}4<*=bq6B+fZ-_}~SL0l`mSEq@Z8UR#<_;Q} z-R(Xv68;2tnL%dV_W&TxI7Y___F{vIWofs+qT8gE?KbqW7IVQ)s)bZoDA`T-hBvr! zmYO?*d1%?W)2gBdA7EEU{IhVXgSRWek04ChI$YM-=IE?-;TUF4iMwWW$6YfMlV|Lj z0k+eQo=!k}glIcAaD&V<+Mw3nuIYAICJ$e~HKi4<^Cx%ZD<)mO(t3MWz8#_`;d;|= z!wnAze%fXBe?K-y8OQpn;9HjX!~2mr!CuUN_4c=>B0?PIDG74$1)snaF+Iu?I5oKF z6UYEZdsul|MlaW>Donzn2;}LjH2!-+ZC@dCQ4r#&J{!?~&#NPl` z(n7X!H<<03tC(k`xr+aK7!J(t|W1p7-hn~AGwv%y$pZ-gEVD*62 z&bh2K<5YN5e=A3m<8h~pa`tBic4V6?0{aQ+x33b7aqgOH_6r**k$(H?&GJHYa;aJ8 z2-Sr%0=~_t2`azi)w%J9@9rp=|bH`_s8=fXnKRW6t&x3`K53(!BwS z3m+f-=TIBxgh(KKp6(FG)4GP5(i`e*zZ}&euDa%#>}H18J@niFSE2L4+{-$5*t`4V1n3C=T2vPB^G^X0o&pO*0vbIA@~x` zgt)cISDfpv0zt^PobAVPcEj`x8sJ8&N3H_F-H35eGkP2v?(twmkIM&obez=VNG!r# zgUri?5(q2Mt9C*#XMk}=w4Ek%pIBW5&l%`v2gV=Z?5{XY2mgjv-Sxgg_E1e{jo3}m z8tHN{f4Us{^#w1bTR|u*Xy%M`C}i8W(GT;W*ZRR=$kP7@^i<&s5CiEM;(vnMM9dtU zWcm5P%%KKPa0O`Sn~v0z-rcieyK0jUx~U@mTxh;OvT367V4~h8~EzLr3UXgraZ$&{t4ZIQ6QCL zC*=wo%omQk207R9%lT&GL9K(s_KzV%S3igDR__ptH+PA_cc7(^6_lBp^^y8NiFi8b zOcCeM<-(Rw1{qmxPqKvDL63`qmZw+4nz2}2hFwM|ZWZDJ;3dB!#NY|~c=)V5&g3<` zEv@M>r-qg5FJ1YemFsox?*{H0PnsW$jvNNuwhkneYY%+}-fkjAOyw$e+K<*G&=M*u{S!UmmfLl0W+!*t|#U2V7a-X2@=F+m#zkV|Y z`(siwVp^>K3$&@AvP-|v$7eKXlVn{bb)}m2hcnQ1Y?1B5P9a!}2~xcL zyuNP}7ev^jSZ7TSBfxQ-N(AZ1MGs`sT~n?O#}Ix*^T%z7X`INJ|k zx#+^B9K*n?%){yiB1FgUSriU8j{u^V@uABA_(0}b!T4Ps5t z)BMLGaM7(eTlST)FLQtKG?zA%Z({lMfpSYzn2;xEm_7z=jfJ6MHrXLLehgy+*B(=r z_@Du50mqPR@EKkin5(gwVw@_Ek_yRYbYA@y^9zb ziQSO?K-_S4+{6zN!qh8yJmS76T*A{O@9Q;2Y5F+>T=>kq{;!z-C1k^tixp~}9TVAY zcyo0+QCKJ05be`PV9^=9>@j#5c9DIt!Z$a}3*kQ4O9fZJj#h8)!MDdSCO<0kAk`2X zvJii8my3v#*&P_m7-0t8Jh+<&jzPDRvr8we=TpcUmrg5#Z8$!B^mAFyP(TXTk@AkMYtJo9dmxsn9+NCZm(i zAnty--lfBCGhyFZ*rdsMr8_V+#D7?(S?}T6V25?A2;@NSGQV)WhxLzz>Z^WGfBaq4 zx103?^7I79A*!t2o-;}0DRQI~ahM}dxP2<)RvrD5UM76z`X5`sa5|msrw) z*;8_?T47errOu?;bT{QM0z&oVcPOB?2CGLok*xU(M%aZ81U*E=&)I$;A=vG72gmpb zLVQT|Ct&!DH-ppRBb~bry#l`uEoCGL-Ldz_8w7Y7Gp_N%uW=VEHpwfAzo8NK04sSUV&?V9c)E3~JOK|p@8 zvW2b#E`&E&WFKJK|Bh@F$PQg&oiC-+d>RRt-}=UE24Zg}4hjym#Qe1N7TN@uuEGIPjS*@V)9>`$tA=xh(@za*Ye0xG^|{QbR$X zzu)qE0M62n@q_1>nq3cL&FGaQ6ZApJy#3ibeaqLs{n9&q@4fBpDret0_!!c;E*VaJ zpsOBxsJB=8Mw_>I=s&dvqvA%w`MW&d=#G~T1e!n*Vq~kM1|;6M>wVsL7WzC$M>96! zGMh^Z!!_c2r<*%4*?$MyU@rr=vpZmD7`kH^XAo%rfj4}Lnc$|=I`a+i?_A5zwL)_! z9GF7|vj27t_W#29^wu_3gZw|GHkh()@_{6*#}C=!|0&%YJ&QX}RU%iJjBk{yehqj{^|c zWgag7;7pTiAQaz)V)VCqH!mhh_cjW`1o+64WvwI%eUw&jZsG7PgpibLdYtW7a86oD3*M~S_505tG?N&0}HO;jbt1dF~?IvrS*}ePqGvt^{xHzpPNK3!An5U zxvMXMqh03eo-R`UgskIu^&DbwpUPIpBK$pQ{FRP=UItDEhYO({x_>#w5F4F}qq zP*mn;MVRpYusQi$qMbMBC&ve;6&>&e4RPi@Uq_2Iw(ltkV(AEQjOgGN!R+9D&P?54&7CT`to!*YP2jGhHnWE|vyYOGP>! zixRe8L(n58pB`cta}?bVp&^Dp2>BX=aVPl`RO5R#rXJ0>6OJu%aYMscQvFF(g2te7eqcCmiQChQz*wnm6MdU!f3=5z#_7<6Kzi z(1Qr&$Api_=Ir<_c{Jl(dSsmI`E#W3Uxhp=l0?j`JJ1-i&+x9m25QVNbV3ol8GD6GMuMcRL{GupzZ)(p&LSHw11l-o^e282P>= zRES-fz6{M_MEi5NO$h!IyB^Gs+UtC=bFcMz4kBW_X@>)GrI&H#eRw_W#o2K&GVdMe z`R;#dp;{C)^Oc|!0M6KA~H_ZD(J!7pI>ojZH_K1Ma#ffF(tT==HN>6a*n(v0BC zbP;64c+O?4Vd>V$Qhvq3+IEEY8-DCJ?u3)C-o7Obn&4M&*+HYiIM&9)x%MsKkW)UxI@6H%uo&Bp zj3cHwLnEoOJEf7LRuY4z;_PJZ+i#9xDxS96-1TA}<9T$l`9vU55*J07aYI^Y75sI&e zZ0{YwcS^bogq;pv%;Cb~?+93ZtJw$X2E?=c)sSf9-i@MZdp=@`_%FLMOFWT+F~xE- zc>Xc5d-PX5ioaMChc*Uhn|;)PXy87Z-vIj5R|jmhnNlghBvw=1;G=LySc~Yt*e1~f&cKi z<-%8h>AizcVa6rX+FMZ}F`a6+&ZKKJFw8w#55_tlTT(y2iIp0<`~CaN=nI=ut}f=6 zFsOfL$9S|tblhdyle2@d0eD;FPUk*Eppb-?3|N34*&mIBKWYO%776`aAg&3?#`JPg zJR`_K&OW?Zo&+lD{!~W84UC4kX~9{mYlD0{6jFlS1Pj@w5I!6J46lRNrZftE#2NZ{ z(}g2W5FPd4_yZGi1^2xKB1-zZZ_z#0(`oeVT|IsKOe}FA^ey1N$I%pHyMoD}Lf_^g zD?3y=D6-VNhZ6=upSrXTIjOsWb5=UnBCPoH81r`Z6`(_B$4^BemS6UrCfh43{4{`T zm_h4>R5X1C)+^_Xul9g1D7!C)Jjq_m6+Fs9&hfYCF}MhE9}7kxB%Oc5Tz9~Wy9M(b z3Io@aA7S7=er*c}KHM*62a~aCt=^t_nykmJuMkJUj=5v<`*N`K=fMtVbOpYIA$JBo z#1(sYK%vje>97}HA*LsH2cF<60^RSx09YY#srWBzO2dTT?!fOXiWi}2UKHZ~8Wi{@ zp|$>SEw8~$QHReS_MtBPsj##CJ9g&gm(o&$sue6?RPB$GEc97@>rnI4@U*bG;PdXz z4g4}=7e0^*yoyY4B3cJ2fAh4hAQ*&e_DIbfs|KGC zhiiT%HCJ0T)JABWjZ)KQ)$kkap_*%@=2oi)72%q4skz6hiR7R_Y96<0B4v;!HP8G= zn_*J(@{hDRzJoIOi&YaTx4)vMuMaNW6KtUf9lSSI@ZkkM>PYL9`y)&vHMnLsj1Wci zk52jWGd`|jBq%gjA87?IdyWyow3wQVHxCWL=NK=l);FZ*c4yx%eliXg+c~J~8GeVF z#9j8=al+XTD?1hIto?WRh)V1a{lzo-l0=Bl-`{$W-uM)`o`~TQSGxnnPnsTnBOC?0 z*k7Bd6od3VkAM>TcS2Tb{re~Mi+}$#8Vm%E!(RE%B@()yWY+SN?qw(X_u_-y4DJ^(66<*KM zV!rD~F<<1Pgx=P5())QD8vRqNYw#i}1-aZByogN6t7|Ue%f77Ux%GY%uB@Bv$4jfq zs^tAgC%v|2T1CSdexngDBr@cEIxA;S{=utlT27m6zQ?Atw%U*!8#K$SsSJPJ(&{Rs zvDL4zmhY_j(Mqr&@3WCN)s(g1Z7X4?6Q*l(zzu?5v7;q7L}qjH!r&EvXYsl`O$^)UZBF+voD!j98opr@;TFT3kxGl z=0qYHW7_PZqWo#45k&d33nI|WqItQ6GxN$!W~a^0%U7o5mz0(j%`UQXvx`e-&MwL= zG|Nl!FP%HHBtK6nE}30Ad)n;6GE8~d#FOEK2rMt!3JD3X!141vN@daN9C+DUPkWyU4yZ#uCd;9lg1jOskzaQcOBKE&s-5(YjZV;C=d$4dSOzy z1JGG9V?tKeWMgWhzgB3MRIf0`8WC@L6VGiimbSL|Av&W4%ELS0D7#Sm^UwXiX%DqG zLuWLXvs>^^zX3H+E>_7Gd|oVW71@!sL^O{gsDVK zq-B6s#+Em9@nv>2G)NE<2(c2`D%|g+^C2hnYrd9Fy1;t_tDEJejWA^6e&AOg`GR5}eU8IHBX=vE+)FVwr zdIITuq-j`g+mXJDbSu(qtl<1d>0X?7xfM*ql}H=X$8gfQAL&Be@4B%OJp4Y|AenJ1kyqrC`z#%m9seJpjP3-d({%PtJK79;d5nEe zi%-uB*e_jco3SS5T5~=Hy6uwfyLQLhQO$Yr4#mKZRsK1d=m@-kR+N;h&ofyu-*wNg zm6w8+Uuy&(Tfm2Xfe7mkv-26cQjaQrH_d^)r=7NeK07F@wK2Kzt~K^)@$SGW)8c#7 zm_&PAyn9-_3xad(0@ZE^aOZTrfu-ByUDI|!th+J%&UpJ&-Bx53=SCFgS-N=$<2{D! zffme#^0ArnDethAKt2yz^2yi98$Y{H-statm}wMmx#X=VzBuMq6{CUOlUU2wZ8bgFV6JX^fW=Y5n5NfR zrIBoKJnC~R#^Yz`7gH9~;&WyMPPwwfR<|~0joo%vSP~}fLD06p+uuKIfcEk=_72+& zNbMGjmPW{VIAAbs@Adcd>y;7n5S_|Ara^9FC^zyO$r+UQ42q-0nXAWCh?t|uF(AiV ziSdr(3nwdRr~`5v7_TV4Jmzy5?}uW0`$xn!UAMhKHll{R1oO+r5Qj02_7VKxKg`dz z_ebWDugkl@(-1dPgZ=#mkMU9bip|rmw*8ozXXv)?EXE>j9{p0E?dbRDk^X+Zw;B2@ z&I_DkEAFsSpD|ucUtAxw{K0hsKZOdX%=6uURPSimAJem}bc&T;g4BU>zWaFyQoi%~ ztMB_8`Nawht!x~OciAB=1;$xb34orX;j4)XMU~?>{~pC20InB9@r=T=2Y~tF;pY3Z z+t40a1I+ z3gZm+cgFa*5;;b<7tK+K5nL;D#6Ret6N&|#^4{^6qxP9wjfe#;l*1M4%aZSCg-0p! z0~-RzHLVSmJUoWxV_NmVZ@CjlZIP+fS2x7PUB>q{n`$!^Z?p`U7fs7FOv>I;4F@yT z6BkwwyY*LNR30Q#7oca$u;n_1(!(uTYZE7mI!mWD_+tUW`he^HJGR3Uuzfhka7TwXU8foJc}sP1tiz3B)ZK^WTM-7veO%~g z+Zg!7El5`?H36@Ih)?2K`8M`EhqM~3rN2|*Kn4nGu$kXl}0x(gX0Z^dTa4Vdt-ih9(YgchTSt_qHW@s0& zgIskT$O^Rw@jLcn^!A43aACm2&`!g|}Mm z8ywtXOVnRuoO)&O`DA-r+^mr}JjOoDN$Qi~fU$pIR?(Zt;d7j>UH_MX{EO6)2DL6k zS*)F^bWp=&dk9UBrPQgE^1WSBdIm~&0>qQnHWub_%Hl_bmi^gQpkPqp24v%E5H2(= zMUTPgQ*hU(jbX8(pNV6WcIq#XwJWy2L5hRVqp>+x4bDA_v_FTd3@%_6W3%-XJTi8Q zV!IfJ(ZPj$|4yvE5WigN9@>~Sn%0Tg z>v<}L<kt?8nd(H$-J=Cy$@;}=F@RV5iX2>`t_Co)+nfM} z>XQIIZAlKmEcH`>RILso(u>q%0BPDs=>R3_JMlE@;cx|gj`}x%Osx@dMK4u90m#x+ zjx%4i0c2|~c5u169&^jl79sBHS4eMp+FMxw3)Ekt>lxa;*hc9K)xQE1YJWNxpiDi2 z4vMwYS+hu`;!3ssX9HBpwC8KBa1y;%O3R!CaJ^cALEAMS=W~NvgWlF@bG!hn)MkM7+8+=B^wq*ak491IH>%g8W}}t^ zU(o~VZvpPmss{nIt2Y5`(meRBcc>#ly;*zpG=McSx%;)XY_nDdeMl=LZ|ej+rloNT zodULKX%_2e4j@;#n;bQBeP>N;m9X>t^oqtk6+9x41H2e!SoPcdF zRnwg&q!UQW(gKn)GgREr_6mt^zEp@V3lTM)L}XE3GX<2lTql&PNlDJ{I+>CkE4F%4 z{_Fvvd^AM)(#ez@-4aRcc#v<{C**$#k$({;7iOj7So_1Gmu(#61cuUo9>?fycj31P zY8)~Hvm44z6x+NrK=}(&+U`h1_MVHRQGTe=<>5xmp*!+sn}@dg=BtIYDMZ>CCKdj_ zVgGUW!lBai`xB82U({No=ns%hWjOY?h>YaiJ{;#hMgJumY5J$+=ON}D`U5)hk5G~> zeINE8`lHOd^*fn=j1%?fFM(2joVVnFf%>D7pVZA$lxC#8_sI`Y;Ey4Veg{w_XvVH$p_8hKZz4p>%H2-+qH~8bY`K z`(oOdemDK-1Lp1ePfkPrL*_O8@2vcYd55ku&V0*2tvfHtk2T-yY!)acZDjDS_zPOfEk0qt55)u{LANO<-iIK2)u9P@yAHI85CS5=HA| zq!=!Z?b?$G0B&^*IMTF_INcEf9NLZ4*GQG2&ZSM}A}~s2NONmX8vq`aQOl#Xar6Y0 z7VgzL*;|ryZD{9lYvGmNe9DNYXk-BO>GX1ajeSs(Oc4jWX zIJFGGq1nj#nd<4_)}@W2R4G}yof z70?p*Jf@p(lQ9!Ufoh`41$0CejXP6)URvyA3--s2(Lf7}n+;U;xhhwM5j-pClT-$s z5kF-FKTqYVJ%XP@>se|%Ogh%?#%~vQQrsC?oqTsb2+mi}5rT6`Kn}Sv;2nOIt<)kz{eG2kt%0?Ppe1TC$U4%^!mICw;cX=8NV2IAWpI!)24snRa zhU4$gDMN;|u(#p-18YO#??7G~j!z7fAx_db^h?mq5Ere=h3<0E#fb00p?;^zU6#`m zf7%gt%N>8bPbMYjf_R^t3v}-H&2mj&igxj*Q*#b|G9rBZSTgU@@59C`{tO-l-HL4@ zIEc^Kgg%`vrzZnQ`gSG^^zBR-=-VvU^!vx4K_bZ=ii6tDMbNI$ItetNmNW|&97$y>%6Utb7561SC)#2-*F4rtBEK{I7*Dz+WBSPSE4POYGv+L=Qg=++x zYWhS(eAh_k9r|Z5C)X(EU3w*C>hdt}*0;h-T#3wk^v9rPR}%AHeGu%*->|{rYo|FIbAU9(@IeoX)&gcjC8ehRI4gtj{%*d7qxesb0c-s(usuDP%rP z--RQHYZmkA`V`X4W^A{k%!Y&tX1Ce;o^>YXSMm(`O(ixUOV= zhW;Q$Sw@;dy@sMGrx_MQ9CM%o+a|;T*Xfju%?Sf>o!thWW9`?Ib9O+1n3|_JB#;OM z%_3CUCLnOTs@PSm{azF##M+-k5^Kj&sn|3KZ>UB~NF0mic6F>9%RX(NNNM$u}S{}LmQMd1$iy$RcvVnD~VsD2fKRi+3e`B zbo4TssY>D#hy-?Zav>{*!|IfzN6+F2^Egi>@edfnuI4OZb#4wT{)TRCNi#9+7{xIW z4X#6-c+Mc~y-{Ejc{+Wz>pn+~c%yCQfH&G!n%-DI(x0#~?h4?`w(BW5hdvg|g6#(8 zU3#h;`Blujb$t@@tG@)jM?Vbt+2jq*UPX*H*3PkP?;zaS)~rF+so9+bvh|e@kLVpf|8FAF)=Pk@+#6Os~ z%TOc!`7|gsT!EncYuc(qv3-jocQO014IhK-rIPJ}M%^WnZNSpzo+H_DSWDcclI3>* z+;b)SF2;4wlWYg_alxz`1>%LO5 z7m%~7$iA(29I|DSeF-tn-LxHJ4*D~E&OP!%)iqL4lB<-FIqJvhpicHTHYp=><$}(x zEkWhTX#%w5hU&%2$UFfKjba#?F94$b?lg3EO%kX_JpoPIR5H?h7V(>zz&6BFcgqyu zK^MYX3P;XVZvjYdu2V){BAqD7B_+zpLiH)|W=}3sM$VF~C%FhDMUqcTZb(-~7ORKB zXO780iL{-e*ruP00a`b4fW!=_X5=DuF9+b)uSZtNHH4CkPlS|_)p9FoPp({~jI38r zpf63ajiQK_zk?QWerk5qEC)|xYwC>D8|+oqPT>xQt{4%Dd@pa^$R&xf)jdjZu&vKPVJ6AIEZIU;Vc{=y3Q2&UE^kn+6 z=UQn}Y%;S_m?<@7^Ao9=FFN*IFXC9Jb?0E18>~C!k8wu#tP-*+ErU~AEudDr6YlT1 zQO2oPYz~Opece{fCa#f&=h@r}C(`NMo_ptEUW)!QY}Iog^LG6y&iH=jO-J`UKvg(& zQN@G&vyLu(DM~!Q9E&`z3OLw9ImmnTt1vUq!_~-pby3hGq&M`N5FI>^Z$RFse@?mo z`UT`u^=9~@=ZW3Or|DuIPtHTnIlAamKCsBsi=YnAwy!_~8^0DzyH~CP|AY2o`SEyc z>bn5i9C)0^u6_$DOHHR(YNC^RVnu$M#xMJL28sL}+9RCkU^SL%(qu-uDpOKyyWkS; zpL~LzmV!ljg7=52EJ>SH$!o^ zUk@0^Khs&5(7FH<8s3CI+?=q&WNXJ@tn=3jTf>`_gzK(F=+TBRRuWb+=MZ;J_{nMv z?b0jIN5b_ick9zJT*3{^dnCLktY#lxJ#Q4sZ+sr*#_(&DgmzN+hF`5DbTF5y--1Y! zu!hS*n$DN@Cx{r*^-D36gmt9J6!9e7#Qw7M??luukt*?b)Cak{}g2@w6C3I6% z(DLs<ZO*Te{CIRmfrO@QGS{tRkZ<;*tpQQb$yMBIKP3;drhvo5U;G-* zBeG7kyoRz)ypOW9>n{vP-t-#CJ@Em~+yRLtKFFL48c6&lb8eA(;={~)MCyr;Fz?l; zu!qN(H-TuJtwZ&kNMm6vRvfXD(FYkZ@?&toj&C8 zNe=0|Dv)=HtP^kEh`d{(L*gwDBkvJeC;p6iugU)g@@a^y6E{-UK79|C-o)Gf4w_W` z9|&ZLcauI%8C^oT-?Rw4#oY$0nxE8DG1`)Q(nj{9=#+bse9UQ=`6k`A1as76zDaj* zzK-DyO46N_plf)wl5`hy?%`ER(%sB?prNEq%z2@qq@Ocq=$~N7q+c-a(^p`~qqW|qt{NwlA>zfAgHQcF4d0p=fKK2QIc`G=XGp?eTt zk{+id3iV%2M*deT!F93zDD%H&zErW*!zJBa^r%hSMpxQA#0>9HH4hWFYv04$yu;L+u%c+%5=`7XTvjxP z#t7?m3vg+)S?>sythhA>6z@otI`L?e@Z0NA>5_(4%yAL~__R++mMF_Ws&*d4=1mfi zrY(Radc6YDwe%4H$pSL9OHTn9t@ePOEbVa^oi|1O23%)r?o$B_wI3iydt*Gn7}Wra zdD=sejQ3RaB7hmm4V8-bG&LXjLhY&?RGhBX02FICV;S>~RW|~ZYU^PP-f`+(0P~Y8 zTH6%wS?VJISh`aY+1wi%4Vb`j1X|6zb|dmSzXR;;Yy)44{s+qJrT_z>V&kXC?v3|= zX3*!z7J7H6O=GYRt8A`Uyt~zg3(>+9`JPCTzhsGAr2MiaaxR?SS1ggs>|c}FyOZmx zniTIJRX=+3XuC0(cdw9nwJp@y8v+b%3+4YO^?I=B(;g+*Cm_|F@qU?cn&yQNy$94A z&|8kiCBgf)+5wQK*P2o<(VQ0u;bSJ@ZLoewac3Bz58PJso36xQrveYfj(|ZF17!=FWHuV&M^6D z_K#0jha>+?1^mLU{|p<`9Zil zH1vEEBV#yk|6xZa=QtFhC;7;4z?DN^$Z%m1O*wo;IT)rKj!_OiQx0EK4ymRbj*~vkl*2caL%J!4e^CyZrX0Sd z9J2J?ftkq`&*i}xgR2#-A zoTA=@_Vcw%AgJU)Lbg!*Cp;iIPC&WFJA!0gK$TWM3BaLJPPN)#SX1&40rlF<6o7d3 zQFPs;-N_o4wDD{4WPhj}>e{rw&<2L9H-gcX5)hL|NI+br#7#w&cl7F5XiK8`=m1rN z8*$K%Zs(A8{ci|hqdQDB#luZTuc@8}H4SIf7`>K*yYzOba`d_-D91XwNEzKJT2gFh zgG2YjL(%=Hv)K*4qNlhY83Ua1EvjnOl;>iu83zO4qMfomMn>0o_DImvb9RAAt_(SPz*U*Jf@m*T*&gY9@M9NBVdMhrV4N(hOwqldjS5Q@?8v! zM=4HjnV_Wf$J|p2t4VH|sH7+6b_%Ur`)oA8Ap0pL z{N_b+4uB>fNY^IU*7=o`I3cUo7)(+ec6wBk_6n!zw!b}-AFEwXp^XsGrggCE1ZlHU zJJSx3Xg?F;TBT`TfF!#L;kRqwA`GS^+dnUWw`-SE1*ZzxdhPNd0H+CAk5DfK`OS-+ROkdd=e$Y#E*)T^od@8}S^@Pj$^H)X-m5(aOH4W6zHGLl?9g7I zMPv(ad$dkiddh`%djG51L^nW=eJ8r!D^8R$Rmk>f0mS8$X#x&t*CN2A6xja^A-=06 zB37qdY~KO79n>C%v!=|l2LV1zX531-)V`q*uUycsaG<7CIykHihRLQ}W?v1ikBUd7 z%(pWheyOb_2Mg@4fP)hTgJa5-(ne8@r#b3X_FOcwtH!G^;gm8#nrgfr15_>@I#k0) zaaBk=mugf|5Q_x4RpYLqKvg0zk81o6Wx3eSe@5t4jk6F?Qmz)Q8>;bp_PNBq4deM# z<6Q%&UV2GYjYm0pi=Z^sm_sve6_lrv!i%PlCJ_fuLszxWxuERbOeHN?6uUNOv zUI!yARgJ~8s7`4&Uo{?}i?6regSv&Pkw~t)rLJ5x(iug5D(b0H6&pq3esm=@b7KyC zKu!6j?FE#X0pwvD1BhZ;{G&Enyxp|;#|3EG5e9=_+nxcLLtD#kw%A?(aA^fp@r1idL8v}Dm*B)YQ`nzouYBFU@oARObR<3oB>=WA*kX31i8BKz=htYMdHW$BB zj@WWhQ?EGj><**qOeKCxQN6pZGmh|?e zCf=4Iy&cznNjsPn!xQ8Q<6a7JN{kQeD5~+oP@rt#2fn?U^0_dEH+=AIZz|A5f;_6R zhv6niP^xM?MSq$aGatQVsYa02J~O5n2;TKr4$#Hs5~3Ql6M$yL+=e=MR|fkmlDZl2 z83#~F%r>wB?~;HvCx!v7ST!V~&5L0~gLfU{Qnpa$1Mm8Zs=G4g3)I28Hc&oS2`Yy_ zDOkbWzkU@SG%6N!w)t=g_m+2w?N}Ua4Pe3j#9`n;e9g3Dv|SwoBhv1ifOY;9ITk6} zd@M?%W7RM6=x*aNq0xh6laCE?JFLgOH4RM$y^jds8C|8WWBVJ1fvQG5Hy^Xn-gN;i zmQ9UaTQvfpR)D5m3fj?iax!sfcbyM#wbZz@)}(SsgGUo3kc zt=tEyOVoKX%xHwl(S-tVOnPA?nmn_MO}@d9nvtv?0Z49Hq8KUa+wf9w36C@klQCt` zHJMoE$0VuGp-$q>m}K>_bkZ$16lF|``WFDZb~appjQJgAP42G8oGLvyWQ#H8G;0Dp zT8;6U6VNKKT^Mt^0FPV>j~Oe#o807YR>qtm=O07+0@@gpsup1cpZ1U!V4Q$d2_$38 zOZGJFe{uF6@KIISANVVi;gN|UAqfN-lA)8tBy+=b%fFb zV|5ccx2$$#9N1eQghZ5;a0(J}dKMBf))C4OFO+!M`yZH~F9IdeYJz}D9q8rf&9Y1*dPHu`RJU~`E8LxGaN|j84oFrmhfJDN%(B;5>dYNFhI@xHa z|DS#F5SZK&1Gps);c`dgF_9d=>e@h8pK3h`wPbHbO z%We|$h(b!blbJ+~?S1$>1Bu9FI-`WUmjU+BJQMDAtn(tEqTyq~NowSmfD;p5eFtz{ zbG?@Ex@?Wbg&oip$5W_;Hzo8WhzT*mGw5|75@HQ*4-Fatb57`Oa1Uk>?_wv!85a}w!XYQb8{Ebi zbREV_LW03L9fYG`Q3?HwdkNpy8}O;d{e;)U z5hwIF9w9uI<$I0YgvY_bB@8g0Ap8>qPe?MJCA0q|hn^GO(_9KEA;v47aD4oLNy0GWO^D`pac8ziG|VPG zA<;}{PBGd`okiFg`+-U1<%V&mDwO25OW>il+qD$WXr2SOUEIlVyL=FS zh%52(T_6nQph&!87laww)Lfw@UMbirf}8e|p{iC(yyhuD$jOrhw~OaGxJiRR0x!+5 zaGvi)PDiWay>Ig{PMnVSZO7^GwFwbb9}iLaKt>*;x?RT{63-5Wq~2l~2p*760akKO z?I4TSfM<0m^E)VnkY^G8M61%LJ51M*X%5K$vny=>y2Rmr@_%r5>fh$R2~1He@-P5# z?JgxM4_j4BNL97kdC2N^=?HwIc|PuTRY7smJ}xa{Gzy;vXYYv##la(vqemW9MS|HHmZ>z%}ZPC;V=gzw`(;s@#r`5CTvz&r(Se75Ii)L16)jl+NrBqF+$y?u+dZ3 ztOq^j?|AT^G9W4S5Rxd5+1)OlvASIk0v0KLCMy|YMP5nr0Unm^cD?Ix@?@|}p;Cuk zvKu5RjVFexG||W(KDz2A)yd2w#*;JuZ*|rN55aqR4S*=-eZ&yFGye#@g67aQl)*zk}VHc!`|;H zd6Z{;4B#J_HAc1QN8;n-@EH@$`x9G~==l>u9q$QB;`MBg#q(#vKF={sMBZO6K;9ur zOTSV}BOu`!(udTsaXn1V``gC=dmKxox+C;=ki%L>efJPpvmRhcmLy!(EH4s0bw*s4 zEaSbAvW$=$?!JML&Xr1I;PZNK)GGq5$G|U;wSYstASFb^tJ;hx2piS9*@9k ztfWs29++BV!JYJ}@lhUnVn9<>$VqU3g~1@hln1Ed+v9-!3}W|KFFMN5pJy3jlNq+C zJ@z3=j`#jm|FnbjSBI33!8*eGsJ;+uNjbyt?w0)x`xtePeT*s{zgK4uTh?)mFz-H{ zgFecdgfhL4OCrYN+iTwaQdqnto&1E(UQUz+h4)FF-Ryv+e9|EUF0)5w z|5Hi0{GT0!%Wc9MG|D&N?m5}W!K3#9_wIt`@k&ZO;BD`qT9;=OiXQNn9H7;uu>toH zj`Dm7BN?!r!z;!^yBx5CaJ=VRR5sv#!iku>U8 z?c&3E$Q8>6NIYP5yP6#mH~y4ox9NX!C{L0i56RA>E@b2%x9eVqiRXw?ax4k*0Qp6S z95K})3uKqU(=oT}3x{cF2NMaP!~!95=XRqwrKge1ZPs%;$h0A3oJq=ZJorzEWm7gu zl~q9F%|p=ucflk1QLOkuXKe#sI(E=ms{f3SFh-LK9ufZCczPMi882dRCl&HN9pjr` z0B5}}4DaA6?^S#UK&?a9a<#Gsc{Jlrv@>b;?;zodI!x7ghlt`Bbhg{o2hW&HJoqnm z93QMHmPwE|NiH6ZM^D8g^4~C-2}yzP0DJfW#-v3w2fSpa1Fj(KiVL-9NtHYNw5ojY zB?Z~KD3387aP@w`F>zI+;Q(s>4mdt8G`b4=hm<@Ka5FXuhaj&vu9-aHe84{7+q9&H z2$VJ?u8sIcN-zTWCM~JC89b-OH4)!(2jG#O```eQ+Sm|WY1xm#lT`9MGPqq4Ad9Aw z0I22)WH*-w}eSLSlrx| z!g(<{sU?cpSzPB{l4g{_l9J}Df*%G~G`AiiZ^E1wleFS{AUv^D>iN;rP>kof{(vtS z0odiK#O7zxg;M}qo^xStNf(s?j#BcIUG*$m6Uzsh$MU52Swbfnlz1TGSyne}2C*!) zn~~%KVO)-tb<)a5QJ~xP7TSOn0MXC0IaiA9ybo7mCEa;D&>l}5(06slN=bjVFT*^{ z2Hkxjcp~RutHDaT_hs^z!fhpOV?2cyt`IFG{Y7Fc>~|wnOS*46c!s!=c3+ljuPl@H zu!X~haFFaJcGxom0q)~o$guk103R2yVgSJXtb5qSCcq~+T!;OK3{PIgY>jNzQ^LFb z41iBFf*STVhHa7rSwlmOTGDfZoXs{JU;#rz72~v|gUmIw3Hw+{e`iaFalTG^-d+V! z4VaJdjC^S#8@l6B)F-!9lOCJH?!nc!q!-==16BlgQ!OuE2M*(1Oe9JFP!ln;pxqyG zCx6%neL(m~zz5mxkL5m%+x0Yvkvq_&sHCH*n159rA4nZCHza-X8dzMO6O`{WHUJ?a zzr~;Q`3Vr*F6Qcyh@l^!G()!I)qFprW2%}2hJ@i%)nTKS%q!7%@kwtQ__0?zIC#@g zo^7Bj>3!qRKo8o-L3&id@3D72Fzy2$_3c0pV`qc~VemjVM~uTPh?~nv?-?TbfL1N( zLn$BII%m;aeq=ldCbx^M34>AK;7$7XfMvkNO}DMS%kqpvRx|Dy0v&piK#%NW!0`-8 zY6dKK6o>c<&IF6+=P0lY#IS>sZoFq|vQ68Sq4~feJ9OL1k{*XR| z@iH>;r%nW%=;7w~kp6_ds;NBokL3fpV6)vW)*a6h9rQ0ih+0^jAl14UqS`BDLdY4# zV%G>b4xquWSPt=0L2lPnAR<=|!lC}qfhi@Pp<=GF>hhIiG#BTg|e+>zjW86%?QSQy_t@xpROCWmx? zK1jSpnXJyr)FDc8SRJC^7N3?}C#N`;#h>y?Zj=Ph+Ds&tN+QO}hGvtSBoS`~5JD$6 zOCr%40V7Iok%ZUcYALx*5`~>fYm5ZNMojzdMhYy*9CZrx!nXHRvsNYO)`^!rw=uE5EUk`((jX8 z4?4McEkNbk270Wl`vvzt3B)1)Y`|{UC-S5cdklg*Zb@FNHx)oQxyW>}v_Z4Bu$J{Y zZyUL+fiU3YOZ2PBWj*ah;!;UOS!)nNC2tV67;9`Y5|>FL-ujxlx?Fz{c@nLyn0Aw| zkc8KI9rH=@M*R>dJ}W*0i7O?~5bH<^5`U7!2+MRKag`)av$nCcP5OV3XQZ`*y>+!d zypXpIu0(j9e63!9#02Yd*h}(tk|)c0fTdlpH-IwLx)4q>`3C(aByz2%D8Y^TV@S-f zPQ`FdzDa)-i9&09A0%$pk0ViR-482IzD2iSi)Ge57-h+ub!!&yzq#Ryl5f>VAhFQe ze;N{7bb6OX*14Efl5f+;fKp{W(G!WSQb4VBBTeyky#$o7wPyqpcj!xzXjI)!O-l!& zhu9tQ)V71T6tEZv)!C(+X?)-$8M}CS62)e~{f1K* z_1lG8wlq8PfzbuJ2u0m@VeDFUI(b++d!Y-DRJaXzlyjED!|O`1@{nq}^6;h|_NB>r zKOX!i8*@ND0yvu1>~`HoI`gtKV};4ylHTu7J|~3_uz!U=(Hv8V#zt!N$?oma&PRGnNoP1@c6gU2+T^*wCJd#gxl?D+ z$?x~%ch-~l=w}o`Br&6X_P~6Zmh+@e5nWaeJZJJ#`VtId%c`VDds^6Htmo5_ct-Na zTknFN{H)~3wVs22Pkv6`p_-xYoIEd-T6O2-1@(57^%X=&{)bRDT905JNIs%JGEi{$s^0_axVCl}E^ zl(WUVbamhCW65`~?)%mP=O;qjuKNbFk)KLxC+?KdVSFxfJ)-;g7F+VaboSh%y6-D; z{#*R>UfuT)hws-qz2FnNkGBMpzm;18&*;8$M3>&rn6DuyZn1dY+U1UF*9Jj>PRE z#_d|iE>FbNnf#ls;PHU3H`WSu1D;~Yw*wG!?L3{*dh{KRIXL+y<8=^aw!1}zdvcc` zd9xw$lDa&$#b9)X^V;|xDEh6CYt{WH&|FCty$a@nI{5@g=1ce~C+LJHy4HpL_r@dOg&utVl$w=QJb z7RXls>vnyB=EU>Lnz9l0l;fv%3d25B)pvu`_c9Riyo1)o?@I>p*R*I=i`|lU!7k$Q zo|vLYP+^ljzzVsfgDld^Lk`P?Ahv@qguw{0L~`;pb>y*2JJ+G`l31r0u_Betvz$C^ zJ+Fr;9vZqV)5T+VhUchjv%}5nV_mpKK3j)>2dQtwD2nzKz~TD=`t+17yt?c$dTLtA zR*~P6>++9c}94$qX0ih_%zQ7Sa!-o6n~^=0Lyup z@L12CiGcq~c!KAFK7b#k3|XFe==7Aw2v7Aqf|xo*Ue&~XC2FV zmM4(4o>6cPDbEqV!Sf=UJK&UtRD=Q|AYloxV>~9RNqlTQ-V2E>lK9+WFQ#tQ>*n+FCc829 zc1ir|+l|>O^-et*lqlV|5gJOpOHw0s-veyXz51^ZwM_S2=S6Cp%z$%s-?MDfU-YPj zauf1R^j7M9LR+N!Xp^b;OR7ru(JE6P5J75j19~b_J0%s?eYC*T2PM_0`)ISN59u`8 z7TtGtZ>0XJ^QPEx-1|f*pZb{YMST}yZf0t)De#a;Z;Ci#F-L4^ohNPH5L+PN(`0Na{x2_vIv{4oYgX?tAbQq@I`5R^7J* zww8KGZtvZt`z8)Y>SdXm@6~<&@kqTQwC%d@Ew=Vmq3zU1(4JCFV+C~mi0(^g*SQTE z!Y0#KnSfLe1ID2pGJUg7MamM|%ck!;YOtr!VqLzS@km9=EQH@of|DzQ57~+#__>j` zgRePwMtkw|84sL>qVQ=Y!aErrxKe%?3;02S^%VZjLfS)Qav3Q}28@CWaX)AuM{*o@HW$ zk#e06iGvIkQ;n2fWP73d9C#2TC66%Ln!LqnLL+Z99sy=J8RV;gYFvmIg;n&$}YF6CvyF3-5BfL|eO#Z@+kwUk#0 zM|p-~+^5JVlkwgzPKQ%oCq6!|vJyOR&|4;YenwMM4ii7Y!-zfQO~P58(*A(oB0Sa8 zigu>FO*mKU!P`JXQs;=5kbS?@xiT`;CQ9l&8ThUN4b|0J>U>F9vZIo^K*HH5tBhl0 zp(J7~eoiIz97)7mKXGK8E0J`fbrh~UH6YH>t0i1dN3}?&8hRw4M`KbKiwl#FK%`bl z0qW{tYPAeFmo=3IsJqaX^#mrkRCO0R3ZEV0APVVe^U-DR>Zz~mFT)6|MKFQX!#el6 zG;2i~5^qalweM0=-cileeJv!tD`)_!-HPyU&09Q^E;jQ7n0hn`+nhE@U^72>b@fw52@cs z>Mq@PM?a*#74h%Yee>xTkLi4Y;1S%Mw~+cyI3LCPEHJIqA0)L`_woKt>W`weCv@K! z>ivX#mE#%Rw~6)rEFXV3p!=Sp_xVNgy?`|f^ZhERL%MGeYxs};0hITe?zAWL?5SuR3d46NkdmJX%ks>n2a$6$~+-$nJ64 zdT1E%cyvPAB@}`eOqObCmoft`GxPy|1MyLweVCTgE+ZV{>D?FbS;1W_QaWJ`08z3>8=i^SW|N+N?eD7_tTb{u% z{q!4qoy$1xZ5QC1k^yhPC-nf|Or8TNd!WPgTQY&S^prIix9OWnn4zcgLqO@b&OxCY z^pwQ0ph#jPx|~QBE7ITs8Fj;=o%AlGS)`L@5T4zcHok&J)3>lar+E#%@hOnxBUbv- z&W~8>OVvlLuE7A;o5%upiFelY=4%R}kU0G6h^Du2;S}T9*b6+ZJe7|3@U=(1?J!mo zi7C99pf3|xPk9tV=*ua3B3=H^FgC-?0`B~oC_LSzU!n!@2LDequ>LwmzurF=6Fok} z1=X4Tm%&6`{bMKL8(>;SF&v?OG=kr`(#IoLW)kekMvUZVhHQ8g-@Mj8j9{(WXamjG zzm-gvBGZ`1VH^6lRMwa|Y{9o=8}k(ev$3}faIj~@tQV@GqqkW3=>A}o{Ypo*ABQ){5N_tY)ZdH+O`=LpTQ6C>bD4p zU!nlm*|uAx#nLvxvO%{pr)uODHgclq<~DMU#qT|9x-7HCHfs9q&!fgkn^4Etpr-Gq z>1h)PzAhko_5hlj@d`YI{*oyIMOHXH^pZ)5GB-`=Adae`<_`(ucwT1LUp6V~C^`lG z6$Pi#bY2yn38NxVzy6-Q)rzV2PZ(o*Kes-eb@0tEB$$6BN>Whf5%>(i90Zx`F~V%T zHn~4#d{wMy>Of7az(0NSS`;)z%t=v#B7AQJ{r#(5nw z{;sn#*uEH0Hc6JhbM&5&EIuHoNtTTrSx$6hnbMKvR`$nTqKRT4*GiUuc4WCL!mecs z@9%(7HQkka5g7lBO4+aobJ0qHTxPq*CR%JNbp7iHyX3b?6 zK3&Yn5Jsq0I}5?2ubfjdd3inn&O&) z>aw3kz0W{S|LXwW25=dwr_lNs&HoW_Ujw(r#u>|y<7*(PPXB)ZL|m_Fd%IF2QK(P{ z0_YFw(M~Fgb?GCu>=ck_XSpE&EP?g0Y%PBdJ!6K8KMTXJzUiB1RXN(oaI}&AFeu}Z zE&C||GYGs4U_OA{9|44&65CMXhy@D9Q!qgOx(ZY9_bu?wBJT!=_h`gxV4m%yi^x^XEXB;9y%l^LSc8^*CcrHK zv&#Um@!4wtJWS$Q^rc)jy+TnpFRn)Q=|HjiY4X=qFadwvKl6E8!61S8>;@Ok2Ifai z(@M?;V74D^C|nG{r(?NP2jF%B%K_{MP^#g-n}Wbx0!*a=d5#Rly=_W(D#UmjKrVMo zJ_KO*n^ra#hz|22df-Cm{ z08Tr^%qAB=1^RO`o{oaJkppJ4RpXf2bB?J^|HTE$L79|pLt9HR;c9Q9lIb!*Jued! zcO|nEP{dMHmYoOSQr5ZBSJ8nlU5);hHlD8l{IgoBa&4 z%#GZ}t-gVfXXRGVvSvA{kHs6Hlu8UVZqT(A&;`)59H zD`~>hZ2zXA@FD=0kZn4E2LNObKpE^0e(FlOXk*Bz62jI5Y$NmkV(MINX(zJO`0%_NXS)9M3sz->^*Xu)=KbOP` zLL!>CMhmWf|?c zIp4UE?|Ny2(LN(bnskGmEX>)*DdzX6C&$H2cAIlev*q)6y93{rL;W?c^S?709q z(6es`@DhP-0Ny6R4_JLefNwqv=34;25_7`FXr+fxw0{YT_M+&gQM5l5VV`v)oF1?= ze^>k7RT4M2+PANAYyL#!WsMUQT~p|6ekO(zX{Ddz!5^+F%s`O|utxtH6gdJ#HrPeN z6?3Ryy!*p;X&2k2ark6k)KQkEV`gGmQ`vHswFhO*Kv{pY%W}2f3#qbCf#rzj+XcyhgX?lqnnWvvk_oijP4i52Q8Y+JVnGdQ$U54eOJ|j-~v6r?QP!zq{XfXW~Oz$Zs zaZK3_Kt|jI`L71x1Hdn2A_s~X$RhNycJ^!^43FW1{}=$ul}1j=Q|!ny2Cd9vVWj{T z04VP$tXc{i;WrOmnO4>)uG0S4B_*=d=o?_9e+%ohB)V@B;L7mnVE*nck< z3_|r>5D==*z@K=GZTv|z+UMer*Jv-qAD_`)j6Xw+c5FjT?hhU45e64hM^SAl9qs1! z22DFh;^_!^*LI?XG+&JYCvTK4KsqNd4(T2Sm)~alyBAHL5QVg5%t0^l(<0Lw;E45} zQZm0bJ^j=Kq$4Gr&=cvq8Q6OyJq76;b1KqN1~+3N+6-~S8OGn>xBL_FxE`w8Q?Huc zF=u0Kiw-l7>uizqcrjR?1?$T;D@D`%Az+UJ`=wJr`$A+;;n3xv{Q_D98qLxoOxX+0 zz6JRHH>39Z05C8gq!=`PwC4W;IChbrI2AM|o zTO9;Aatnd5dtDzXMiyh2rsbW%b>$e*)grLVyfBZesc^v`arjI z7Nf`#qZsEwx*T?-PnP_pOdp0f(5Fax1Jmzw%OhLT2a#4Qp(~8zqXDP(18sxxIbi=v zv@#vazp+vExY=F?xBDkxrvba&#&U>nw{cH&!MzFGT<{&~l3V(_4Ibok5S!VrKLNN5 zz^@%#g{Z?s^_+ZTmrBo??ZrU$2l6(s4kOZDEBX1B0Bf0MBPpX(i@y=X$3UFhHOF;! zF|8dr7OEUD2>(MMvT>K$L^Q6v9|qgaT}miV2jV^lK{Hwk#9jvhGxDzn;w2RGa#!R= zASunKU6K3*J{x5=sYaRYwlvU^|B#)dUl*cQ{u8jNHij|(ydJPbMC&f=0c~3^z-L@mN^jq9E=nDJZxc@MeQ$jpCf4 z-)ivw_9!vNEyhcP`K2}eHp3!M0XHVL8a%EXFB>Aa8<%487yCvTJ0JPm7M)fL0SYGCf|8`m1*9G(uWJZG8$=7#0W{>z_e^|rbzlTrg=Y8PnC2` zFQhT|YI>Ta&tRJG?&+tQe0lF|q}6Uvy2-}F4+hSZMrW9mZyEXdHm9Cx@@=jsndTdv zcKR)*e7@0q{G4hXIU; z1F#>!SpZ6&2Y|*l6dnffFi9T)c$L7{06g&sDo+5o3yt>Q2q8bh5YRA`XvT>10vPT) zf#z`O+kt)*={ScTYfhqi7OhEYe zf;tD(H8z#Q%KsaX%YfW$BQYUxy26a@?|Fu%-3!u#4nLIZ9{}V5AYbf6N(Poy3>pKI zA8eYmkyM?bi6uqL)L8|_4^hY|$OVd{j7x$34d`)Q(aewNOd4yMk=UH}{{?&lHe=fB z;8SFTRTDM;Q=oDZt+A<`M85`(bM?lPbM$O~BH(7}Ud^A3ej?MKZ6-HqgLTdC2Z8Qu zZ%1x+lD`&c>gQz}&Dqy~Es*rBpV&xF9FGFWzW>=_gnr87Cc*O~2ixC8>5V{B`k@X9 z(q9f7H`=mnoU8o>8p)r5X8hzYgP&mVc#fiDS9Qh$SX%kTz&Cc}q0G5A0o8r#|I(TI zwd|4bE|Z{FzaPMK0QcFM*|O|2ft2cM04xOcZHKDX^buy_9BGcS#cRQJ0l2<)xLC$b zP8pBcWh54=bW5xc-MT%;F95!20(^S5dfNI zyPeO~{)ierC!6NkV0;Kw-tANXvHkqo-T@%@b3X{irLN_G+)Vl(k+1E}GR( zPKm83@ozvgmeq+|~|NT+wR=1{VK+vLM1lg|bjHORuJyvOO-%5pfU!8jl|1b(-X(jYB+ zDA3YTqX0-p%>%%ePdr~K<_}xGlqEvWv$`^Be*RzuTfVF-`oCJv*Y`LKt|ymXY)8Rs zOchi6In7Yo9bF62%0B}7aT_JNikhGl_-a?=2q3Az6Asc*;B-erFo1I2&yBpm?tEHA z)+8lT3XvTmH8>*iHAG50qZ|2Ln_T`a$n!{I$jI{bEKNJFD+`5J;htjcEq!^8Mmx@IGBKd0KvDlJR$otG) zC=-jrGjZ;^UBZ}KL7dKyoa#FyO!+67C9Jt$!UnF)!^#QC2-ek(E`nX zz{U^hz^`5aeD3Eqo>m-T-bI`?^NvN>ZUVu`X1_Gz(5c{IpwJ-&`{l1I@I3x%MThY$ z{0I-8+m?I{0NpU3*%x3p@F?S^m&|_1KbQIW>GlObF>Ye+Vx$ULKs|t>j{p?0fMV9L z0EgdN;je)10@2@w!Y1B|{SRAs>4nRIq=U)65dc@Xxf;ZEw!^XEfEJmNADJg_hoihK zj@9ME=st)y^I@*K{hq}1moqyO zK@dwPKs70=VBd0da6qO|tUA5ByIJ;_QdoEVG z^LaWy4d`MNtsm0AN4~ia1GgK+&fNy!KL8dqf?Bj6siNocsQ7@;8+a^c_DW>m#O#mh zk~P0CieuIV_jb!x$Q&UM7c&2|*$9dBK~&7MhC?UnAu|fa32! z+df?-O(H8>hHb~}Eq;5qQsaNpmN&p{nGog`{qSnLEw7*$Y0IEQls*#FKWq!L&t-PI zEtevPYRmF&*`zJ^fGBNYt_3%Op<7#av$mbUN?YDS%D*v3wdEm*hDLO0i=W?TVBZ|D zNzy;rk92Ec=~0wcwZ<`ke~SUc^g|bG;Cqht+6w?fEdMY7M}SENyI8`qMEpUdtLa+y z=^!$Q@)y`#c^zCb287Fh5JZYJUlBF2`PYGz9pdci=t0>yTnvCN@G7SeOEwObCuCrr z&2PKP&f#S?>+U~fzTW4G9FCdDg z_U{jsCStY!hnD&pvQOZ4z-pI_x@zQ5mRj5`n^@{4Ad02tz>O^&ENF6}&`Zm|y7u%}48AXfg-UG1U zb5Q?Kbp^<7MRckzWq_kPAF!R-M0NQfit6|d{(=c$=%zaUTEc>2U`2HoAm!hgr&MPF%j4i)jr{t3t_|z$wmgJlq%A+N^m{?=6zU}B%j}1k-8O@qB&RLk zbjv1f;Ya$UEzGqb2L8WWTUtO~FalU<%QZ;(FPv_h!TOWi;=dUrcKZsOq&h0xt%d%q zX|Q%ox4Sx+obCR*F_54gPPh1@qN`ePi$}Q_06oeFDjOEyCwr8uz#$&xKASb_5-IP0 zu-=D`qa*SE3Lp={q$*YkXtUqTQ{E-_akS?ToXX?sV7-e|$&P@^v*b?CYP9&xnMiKF z=`zQuWI155<8uTk;koT{_o|`-qo1 zBWiX8&vc&vAv=8r_K>!qg|z_KCsE)M)5CD|uLE)lsDl&|H;6FvXI}|y=ZM;iR3nPl z>my<|*j6~mXItTH01GyO`iE9{6xnw&dsc)vqdy^saz+QbWfLpBA4IXjS@|gUC>Xj; zn=i1opMVuB`~fL{HW=xQzHyr6gaBed%bzRHRsvWs71Td$II4Rxv6_lV4>ZAhzog6~NhO9V9; zzb{EO1dj^*6|>4@{DGv;8;oIf2>noZxihT3mWk>*5VD^sP#1FiFBB=GssxwxO&h33 zfE3M_euDyD?|ri3Kkp{gNo`^Fn4X<&If@*rEhB;LRDrZb8)mnKxfT?Ip<7$x zKweM_th8k`QvTf8sx9Y2wC-*3F9wNy(_)j9NA36DEj$9o8!6&Y2odx z^U-dip437eCiW(?+r9M#a;O%5(=D5{FlxBn!g}OdU`3wPLjJ7f0w1u_!ZM`%i@->i zb0$RV)t(2Ol;7p)Ip@?(``3`y%<)dFLwWe!WY!i!d?R5 z7&r>w0x)_6fDZvQ5%>wf%>Wjf;J&s5m@k3Z0ZjHv6t$aub2ET{0C)u~Vwaq5_5=AZ zAj>x)(-&PR^Y#JZut6$n%m8XNr8>`j<0eRTBc<|!@H#3g`?(AoQfT6AkP3$b`yH$A z4b1PTAa?|SnA^IPnSBv53<4(mW&jxg{7(VM1#kh1usciybng%7tjQrljJ|J>_jGUi2HG(JmHy}^2 z3N~2Z3LpW%DFFQA03-nD)2>Q|X#R5GxP_dia1sFfKemxmyCU7CFec<);2_ntNPWEK z_t~VjlSnvFnrM^SPaD;$~9xZ)>=6}N`jX8;QhUWjqCe1#H1ieL~OUFVRp_51uV~9<<_#_gvF~ug` zb`lA>=Gvs)Cy_>LxlJ|+5_bqb1~fzHtFjL5~n&#siTvG7gAs z5iC{Rbd%Tb7F}b%Fttj{smAEmAJ&V3iZHjr6oq3QlJct05nanU%L2=HW|OcyalXy+ zXQz;WmUAQ>98bEg6OPp@Y>wv~j-^^o0U{9nHP_#SW2#feKOK&#T233i*69&%3CB^V z49~T;sI6MgRdL|h81aj6Y`qY*oE?L!ISxlpEoV77u8tT0RD`@|A&n_=IBwE%K1>70 z3lZ7E;e$I8j-?LAK`rNJM3(xS5f#F*b-B%Pjl=PlmNPyJ9LFNo3C9yGgL3@U;fT<3 z&LPKd5q}mAdV?I>Swv%7e0EA|KH|PI}i#T zRW}F55aNq6nZsx(oZr<~MnmJr!Fl#4o$t`Zk}5wMbDp-Oau~9Pc%rO6vQMU1zN({z z@+M;UJe$maCV4+>R|}QHD@SDz$=63>`3<Jw ziLaH!%KLcX-+f@+AHiZHt_PNRv~Vp{mHc?bF2H<^#K!V7*~$B4Rn2o1^@$~3z}M=| z@@SfOggJv~UWw7_F2gz?d767ZF?^LztNR>6CqERyH$>zkNZOKK@tEW)FCu~yuU4B4 zy~W0@0l4HtbWFx9QB7!2YjyLzHBn!>qQm3x~x81MKe)K4_^gq zO8#8L=5^#QbPA@0dkz5oUqa_q<4(F3-ZUPh)7`WR-X&JXP`3__F?p4n_lIqR3BY$G zuXgkLu)>5^Am`|-sYu=(j(rMtuhoB+31!ykj|1a&@muS;|1TM|gCe|-bc(7}9B$P?%9pYke|M6)lpQXIV9Ec8;4L)9 z=BiJ_zrkw{ERx^WV?5sZP1~+npP_ONNmgEawX?#EwXy1_Joga0i;a;MNsp4#WRIX73A9*fe5!6;%txL$l*ESvjvr+K%R*Fk0_nlebBE15;RSl|Bi- z;{C$p7hriOGnPDB_+RJ=@0TV;<5eGp4aLHU$B(7-j}h59rb02OVEh?G@Cu|FXrX^$ zpp75Nmh;e8A;YJ_t_IF9SO~8=sNbNf_oB}RRvFvTr0~5Mas#K!Eka)LiX~DDCr*S! zze;O)r%QcLo2A(87(O2K-%Z|C2%1Ei<%Cz>Ca3?)N-amCw!{m`M? zV%`81CH0f$^InEBLtdoR!jt-;-33D8buLBP1&Yerm<2^sY6@>hYT>8gTN7NejrE@n z5+M}p!m2)+zh_bZ8YaY$teYPh1_C zNG(1|q&!AJ5vq^e@om&8^3882hNpwC%^ufCHEd?3dz{PE@h3@w9dMz(S+ak;CqNod$H#*}75 z<6s<QN94_k)(LA0hpyC4zHi%Id z(F<5Kjep41BThG?JsxC=(2=xGQ6)s=$4vlRPp3d!-|ArWkkMl^q7X7h>3V(~@uv*b z^5Zgr!7rP!{9bXolrEWK67=Ey6klwFkb4h9JK|85rNm}g@#JDzi0`C15C%I2c0nR$ z-#AdR;7}7GmDO26zXWYKu&275MoG2(M}XT4$K)lMg$=N4w40fPifjSUKhn?$Mu9AoDc;m3lx zLu=!t-yzm`8!P3V9%+{c@8LmkcZOY=QW!=Yt_eHZGmxC&v^N%w&F?Hk32qlLGXs@(Yf3?cHcDhG97_NN%^G0y%=OF@ zi=XX*%)L=+5m~Ui$t>6t?JUbKy+n#Yb4opWd0*%Ap^nmR6g6@l zc(o;6DOqA@;SQ9HA%(2#id3ljj(Ti9yp-A%#flp{vU%#GIj&UJr3y{NShR`KG<9++ zJ_xrX3O-)jg+M{qe~CT?PaQp=;h&ya+fWzGToww4Gn<<#GmBTW)Hc+okIopMF+Ouv zLse@y*sNu?HaBI4LyI$ODl0QX<0p(yZwgk`RSSptQ#6;hKW(UwFm8xj2AElth_4eP^>gr&Vf`e@~TUD(>;MXe^fM2v! z!18e;&*+2#ZPhC}Q*C1uOhrrGl}#%eTc|+Dq0|SUvZ0=u2Gkg=v-uk8?22paDk>F@ zodyW;#gdNlTEfk?^gxYPe1Pm~t2)VzOIw4j)DddI#Zv_|t^nB3#J+{4wi;$}_h~J%7pvukCz|>kFs%)t0)=}Y5bGI6*LY3XpD73>& zD!YmTtAn+nTv(Vg(yr93#jT-mOM0k&3Wh2Ei!i1RL}d1=NB`uYd7hQ^Pa`8Pz0lgx zo@wq{Zp|&o-*M1fehhzhnA>_-J^)s``PPM2#x!%qOsj5QaOAr5%u##rZ{4hQg;V5V zwHErVrX6PO+#A*vXa+-{?fg^2NBWP}^b+_rUj+y7Tm=CrZBXl#;YBAd~@aI6yUUR~xd6ydLar53uLG78=z|YLxtBm2g z+56Z$vvK>`X2SM)>oVt6eVMeYwha!=7}EG7HdJ;%vrbXxNVk*XRfejQq1r8I9_1BWM-KUU6^GJHlH)B zEVI|g*1+}4?k}@On@_YJFoyLWJMX^C`NpugdDc9U>j7hEFY`JbqQ_*JjTvUondY*Y zX3y>B3S*+aZr!EU^mXelHe-*OAFiBfZqYa4uQ5_b-dbZ)oG~S?wY7EGy!pn^xM29< zpij{93EF2AYGno9AYkgEGvIR<2!RePaHsSuHi`=HM(K z4j3b1%~LNj%@S$51!K4u*?!&b`)(|gQXYMyrt=3u_5Ss$B!S#`|%)Eo>b{n%GV zTAbNpjMKj{YmS*!$5_QZy0zQvX}w`Cv$mYLf8HggH_NQbXosm-nMKx{pUj5UjG3Hc zhKv;bDKUoaZmaJOfey&?TUM96+gzN1YJAqv(~B0F%Uep?3)0skFIhs5n~BzeJ$oL$ z__&p6&RaY2j_=cE)m(GiCxyok&a!#TILk*~{G>t&`4s zb593k)lAB?3MQTRHpHEIiFNbrc@VGl63A0)eUg6O-;E)#kbzw=EZ2R&ZC<O}EZs887?g10_@vC24(>2}8iRFf z$eu}=X8&qqM4UC*7#x>gaGq6@UQkQvk^Et@wde61>vMDes*h2$ZhntTs^;;P$M&Qb zn4fA}*6lqGabU$lyi>>6J+a5E-@OMsyN{=5o_GB5DSONjyN%%q!jXN9e@>VauwCN`&S+_-(_w=KsUdve8W8F4ReofRbL3TK4LD1bzwYZT>kR;ZR^*~#(?nbHqW z^ZEMnG95#-O-?Q#^DK|*l(!c)M+_LHqnlxsuSyK%I^_lat%wZX3_<*^2 z)&FYPQH?EoAHMYV3$uF14PwJ{LRrEDbJt$D3x-8yGOq<>42u-fPCf<(rk_X<*=U zDKt#RIvNM$$Zt$byAz&Fi&V}LuuB0C5JdT_dzLbxmdN;Bnf!JM^>UsU)7BaH55N~A2h#& z(yoEhZdwU9_%|JssqdII+1$5s6FTl5T@4E`)}96%f7zI84gGT8UfN)0ExhZ-)-8wO zIIV$5e!6F`wF74RRixE>o>@HCJpGLY)@Ny+sg7&OqY197Gp?) zb#<5jT?3f^uC}h_)4X++_3`}IYTJY9wYAn{Yu#ZhzGl+o$KLwkun~vlNw}fD#wQO% za9U|;VW7FTwWX?IS-n=|pBX@?G`a;JA*f#*2shV;s#~<2(%GW|p_X7>fIrfhQ<`5D ztZxZbhk{MhY8yh8!9a71hTy-VHQW+ttY~gtRu!nM2!|IVg4S9as}O5zxRV*ELjmM$ zt_V~$1lod4q3RV{b46Q_!F5n;u4mO6qR~KoaG4fBQB|YVpV8{i81-kY`ZG>Lv>Ip* zHaCYF>hZS{?@I+L7YC~ADSB0?ErbOVqV7OrE0V!Vtu53XT8t%^tPr%E^0FC4CHZCZ z0tI>V@^dL!bL(P!Ji0lEWmR>kshN%8GDlk+#&Rc6SJAwLp>O~Vst8nvD{7jx;uTaM z{$bHng>?s3G0n|rd}VDgP~931BUGI zS2zU*Tk;raYk}ewf!Pi9!P1td*2)$QN^PjDZp8<+(THGuO-pS+7J=1}C>*E=2b)?@ zLf-PqKp8ZuijZJ8RNt(zG9|V2=b3r4^Gb3G^XKQ~mgUdN6G;R3C@mF1)_Q!1cX6n` zqG?3{A#{*BML-WhWk~|XirnZ^=!-q!w57E<5M17fC0npcmWhGtin>sEg~QTN+1wa_ zMzAKUm%gqFH8)nYRMy(!WA!2mMhl^Q2oso#^-^G3NulOgDf&8CA2>hQ)S$YzDbyzY zTMPM`Yb%yO^-UEubx>)5l}P@|rZ5{;*BC%2W62n5q^5GQpa{%{u~md?8k#~awRNM> zc3Emym9{R1j6 z1_S(g?9k|nfEZi;?6SNw^GdXqM)Z_evDVhu(&V(L!zj=v`SmTqCX5+8OU1+}yOd@d zSxbn6k{FD34OKO99LcC~MyDEN`DJ;tq|c}UX?LKqp_MLA$(;|e3jyZOK2yspDG4+N zgG&P83YZ+q!Qg{;4A$V29i6>W$3}IGdB+~L<|P;_3hlHGgQB9PrAefkRx+=+tO!<% zE`s*qCOX}txZ$dXR`@096vuBusM0990I;8`66PQ1S2%Ji= zu?3#Ci#qsa|7C$-V?$*vlvNdk9a6uL7QPaHq>o@w@Kd79ruvGo*4hkz-&9daZ&}&e zgy9yzhCpjj>neJn5xY1r=59Wqu&Ah@yjaHboH2pCxn+Slqw_T}-GJJVqK67Bt3X?- z8=3;#TWVMX+^V&X`#!46-#6+6|a~jJ6wUB zsw$Y}w1#@{LoE1rjJM`MbqKvyhsln8Rasln)TLyU!&z);YY4jRu#~1?Tf-7K#s(Qt zj@QKS<`kw3TZ2P@zR=&!Xj=|j>^kXU(reL{iw97~p+>&=x#Ds^rZWxOP`2T)BJvB> zaaKe){fs`qRDzjP+1WC*LD`)>bFs^dSCq*nS*Z+2+7^^GyR@t%2LqdC#=p|8ai%@_o#v$%QGP$%Au zs!=m)OGPMb7r`HSpe1pB=g*t?^D)3whlJ__9W#NNfgD2!wALd})o6`de!;-v6>w9v zFbGI#j}*=Y#q&6!2jCHkN&;u+%q|O@jW8ikLm0u~k89IvOG#4$$S#~JRc#1WHgmio zfyr?(+Stv@!BxTiE)6t?5jZJ7RWz*(UKHA-BWlDBBpopc#SK# z3(M$;q#eZ+2-u zx|ZUrU;#U<5_~WkL5RiKLUvSTh>2B6&mvHn4j(W}c4+^H4u#Vm!F1Eu-B!_=NTTd< zOrRuhT2VmL+<`w5D-AOHQfyxbLOaQ$HQ%8k$CBf!~R*aC&=-F{)7)#Rwv+@v+!jq%- zpdZ8)6;%!ODsJlNPJ8NOsD-JIfplX|W1$!HbEKqZnDh_oj2XvCLZBmXZN?Mp8j<4dnD&Yy;7eM36?tg<>uHn%nQ$-`fCxrTT#~^CA=gIC47(r@vm0GUQJ=$&oV~RpS4z3M~RFDeC z(iE(#;N*>93`3qnrOVXQNu+1T^r5P@4MN5=BWrppnqCkl7;J)zsM749hc>A~PSneT z7zwv!wuRS{iPK5YofjjPNA?25b~3r*Y)rLSs=}%Xx)V~j1xld4TdF&4 zsbl^eKpG=PENdh-V;{`QbsWjGyb}11qS<*`Lkp^r*qm`D&0e&E7>5c}LtEll`a?F5 z%LIB94&X5XMn;INU^$vnKgTP)K2B~hiD5BTwOC}w0S+P)>b8r|bA*-A#EebBa77EI zOPTV;vfu%lDm2U)InxTdc1fV6Ay8h1Pq(QFS*=N_J3C;?MZnY)q^6xUg|b=Of}8Dm z6cZN?#$7K9aub%G7<(bcT@uMMyu>h* zO$543G>^eMLN7RUsDE(-;tCiyMm%G3jd7miZf&cy+eL?Hhg6HPxEW56M`_=}1P^Kxe6JXRK_ z2(1zDbOc?Fdz68lUpynPL>3efT|yQt_*)tqI3JW1mbQ&@957uKT!?aIPFF3iYqV!$ z$4k&{+e1pWB{+bjFT_Jacbc?Xrm?A!$`&d}rhaxR0z11SR2MT~#^|uKvS-C{*aO-Qu+g>3 zqEWxH{=jrPf3=*FSchvW+D1zQMiU&ovo_V}5@~T{;53OT14fvGRZI=0Y{WH;+wr-e#o?}eFUp{?0LO2;z2ropl6=8dugCoLrA#59VrDU(IV_mKS zu+p-kl039#7N$vr0FI*V@yt%{vR&9El7fv;p$z$CAu79>(5y#93{5puSmrG*sTA zc5J$AeQ@_IH&9ewCZk<;-u}>Q$V@^X1qHwYFvPHp(q+swsSVeYMvm<9G1{|Z6%kHW zVR^I5O6JMvf`QS)ihzf!7O>0E)(5k9f z-eB3pnvs-Z1C%8;nG+{ix6yLfSWp|GGOL%`pqWT4tyZa>UCS29`Z~VKlmhewt-eN? zC7BVu)>3^<8SRw^IweY@t4&Lmc68b-i|UC9-O6CLP0==V6!Vugmo8_SB*in?E71ed zlEz|T+1$KpZ8|z(!x4iji$t0W=6%}=s5EPq_d`RnaW8U1Z<%@8#bD?%^>s%TT=_0G zdu?kmZbg+wIL-4kJ1aPwu+%I~5ovZzxTC0BBUBb;V@^EVWkR-UT(!llA=a5t8nIOK z+b`5}LfNXncVVyAzr`9%4ej=SRxxPyDw`fKq$1C#R@0lZNxVkJ&NTW@PD@9yek`PI?6 zWT6Tx8;Hk7w=tq^-r7Ws!1NAIv&(d35&79lA2gR8L1NZVH$H3CTOvgW$V+OkQ+ zV8|b;?>)4*l%W^?8 z8x9Q)JEg51HRrOj#Q?yCz?lMD)sZ(!tTu3r5(<+vuZSvMbt( zTLXtp^U6Obyx5Eg9Zfq%Tbo4g1bhLofASd!?quWItM1R8ldU%}ra_ z3?M#6&#LnT_ ztVs&o!tILVL~8k%PBsp2#O75Qf72GM4XVYcS>SDmsjpL1B0jj&@oXVFv|((PSEgDQ z-IE5pY>OcgtwY;1#n6ULv+}&9wFQh`AEkLlR(n=-;Wp?SjCbZ-@+qo#ur8XNxc2mqU!oaDveR?UN)Hg!X}X zFAFqd+%gTtW_w#d%$|GF=D31ZmVLMO*(yPCmlix-IxZ(lm<3rRTA08msaZ(njHy9`>wsio4Ytu zkfvzcck^k#T!u~Q++;ZP54WAGS@?*zZPoZjpDAr#mU)NK3-hT)j0uh4qwEYbY&6GM zk6HVymZdg>+oUwVtFpp#RKZR%jEy*=`x|L6=Zs#o0Qp0xHuph|a z=u4r!v>ys_z1k;(@HSI@YVBC9pDweZ7~N<(IDWz$qzEM{uAFC3bDp{}Cb{H9?{>-dyja`QB(B9k%Q zFKtv>2jS>I9^Qu=)5s`%Gx0N;Q0O%9t>jhxK!oNO-G^W zPH7Wnsxvh@HXeQLz=DY{GOMMBRi?X(rBWKFGV`wKwlVxon1RysV2er9k5$WcLyAT$ z^=D1JWqGa|l*K8PXR7$Hd0@0kZI!HU;GE3J7^Z!-M4QDFhYd}>tSEPk%2jGQPr+c9 zOcb%Y)zCW8Tsv5p3Ssjq%VtwcC$id51U8#X^|v1D>Y@hPEgLnbksGX3#z=+!cX;c_`-(>8`#T% zMQRF(_O6w9*%FFo>AFZ9OtBe)xzi@@$NNErPeBtekhaawB#2wpnQTk6M_DCMCC6nR zr`}?lSz9SOLgSO9m2kN+tc`0M%*w&j7TFqHvynZiHjGm-8){BW^PtpA?8Izf+RR`T z>qk`5xs=eOZ468*f3{$dDM=M&dS-KU{ZQ;mpulXka~Z6t#|EX7D_Pzmtc$T4E--FJ zTS+F9zU9lC-5ouP7d98MzuLR7Tk~2ufmlyVi)&3(8lbepzyuwNi%bvvM1{Vm4z5XA zBkgKee%yk($tHB`QMQRn_me5pmH{>oZ=lurLdj}X2Yu2MuMsc|z? zPd}X7WM}dFl_enL(6(?n3g7K@}y&_i&5#JQV^xq2Wg#X<5n`t)i*UQ%eGVR zwMTL_kI>8*Sg^Re@@+lL8`K7~&5o{q6@Qkl;h~X6WyT^M{8D0Er@U-;C|hcRBx=lwK(mX}0v0XN{NI4S~8*N%_ONrdFdCgf9 zz9(xl6ITD|4%8mHmoyJ1rzi<)$OB!yUGuvah7C;SDlH|vd8TcJv_`>p!HCS2SK5SS zIEfBn{iUOO@$w#Z&Y|J;c1p;1fUQLpY_qBBqW^QA#QRsirX;p5`-w`^kq;2dM(6ul z+b0lhG4{y}t$$k7Wo>8-eahRVvZ+OsRza4(W&PdVwx7wKi1kA1Uk620Lirx9S{eqj za`+@RUj)Pq5=v}n*!&J_jSjP*oWvSqg6XG_9<2^;1BfSGno+EK7=Gy=tJ2J)(Va$M z`{-7ToZpLaU}(#R4LU|qDyC7Hg?7nVn=1>Zg)kZqLHMzl@tD>p6JELo|x`g#_c0YELzCS=XmNj>%!!)6KgHx$Vs zN~KyVs$p#49AY_sk*?_5X+zz+_S6-xHnC)Y*M4C>)T&)DNmS!)s4v==T;AxzGQ}3C zmPyGLgQj5nT55%yPhpz2wlH-NwqZ!;dMs~tvgsTpQgf@R-JIEyJxZHed!6u*&1Ph^ zHr~p9VPQ>y_NHjI7az11Gp`PBUNFp}$Bn}147LHmB3`EVWJBYM7}#kx{nFm@CaT+3f4GW0xG($Dliic{TUp*yw^xIs++&Z?<}^*Bo-s2&u(PBSuqX&a zG_0YG3{YDcro*IdI^om;$p#Utc3)SOhtRSeqUu1o);-mNH|oij9qUKd46BO#e2b45 zsJR;4Z0VeKTzr*?B1JKl+pQM=0xEV^la=Svjs_*XVHAZUtt>RUh9XEwumx>JQ2N>- zb8E@iAnk~{^h+}xoB9)WMIV3|GGw}^XwvCtw*h2YOB^Axgion#CA&NeNf+0#>1sIe zX|j*wYxDbcOpXqtNkTRdvm5%cbPXEpcG2%`=<~S&!!{cfl`&3T+eXTKh#epHfx)#N zTI*)ERG5p?=^5{3w&rwurJwPoZ?U7B)W%X{Btlstd{(voUXF>%B(_Z&1gj6#6QjJ_ z04Zbpr8ezSr&X;MWFzuvNxaroebH$hEUk{3grJ45-?Cw&x+l9jS`WIWnYQ7#=|mgn z*)bI;J}s1(Y3$UHlqYF6VQdcdhLLJEk;)hVr%FGW@)j|Rr6c>+w#tp&u8BSj!Cp{i zNc1$9Ygn~3({j@<9Zbt`gBE?(ExtZrV-S};oFh;%JWg4U_r9#Rvje?EzxpQ2`#5q| z&i7^l)j_AEDUe$1-%87l4Q-3vGNp7rzxEv(up`FFKqGx7 zN;4|OMnN4}OFDj;$a31Vc3z&4^pmAn-_X0JoRp{~zv?H;J9`@(aO`cc)XmN)Fx9XE zJYy~sgQ+Zb;L+`iYR_7BPbp(Nk=nD6uXE(O`YH}{Xv$H8@t>=tWr4-ybE|4S7Ga(O zni%bZrm5WWi-pab?aZxjZRuwQ%H2B7JaLzRetbPOB@34?iWN~ht_yc;Xle0>U~TTu zChc_Clx)0wVb5|(qp!bbS^Of%P6MpLP-pwyt0pewtSTKYO`}qQWRNW_VKESD@yDS6 ztWDY`Rwh$KI$DFqqOSZ)&OjCkpat2)Ylh;bX_wkdOEB}g$i#|F~4S7Zd#rl0%UBaz)^fudRpg| zHLHe9<1Qz{aw@jp;#dz?7^Q8S7IpR`3j0@Dsiomhoje)ihQ>_Y+HSkS7zS(@teR|T zmy?2Ksh5toVTd1^(L>B0D#KrWXv#)lQbZNQ_J((P%&fjzdK{2)%=3a9pAer33J1ijJr3)8P&ykU*UnPRWJ zwLYAUYvHi@j9Dqq`A8{ykgZ}^8TjwQ^lLXb=-4B1xWWrVIhR=0E@@G$USvvKsSx=u zu96B;&V*5UwwJeI%oK#^oL;4U1DV}HB|I~(}Wg_1v zSJC)rOlO#4_3#Lp%rFkyz?QB2qhoN2hf{%?F_xcWgHkF(47plHu>ed*`!y_RjVCjM zPLdF7HVE{vqiRb$EGF18C^7rT985#EVZ{=_?9{dBWleq?(_z0-(`I?RtyyY=D|KvYV<_O1Y1)b8{DG~D zk};Civ)L$0W3yGdufnkvv4T)(`YgJ5cykBl8SjWHx%9qcVt`*eG&nuA)eq{Wu|i`H z$27DDG{3uRnVl16n31aH+CF*_Vl=l>WcmSxIvq>KLCi$t*CsI=^7z?boU1Tvq|Tft zQ>&Z)(z%qzh5df5Pk(3c+~xwapV|5Jy?>2pbd+XjgdYi|BkRPbQls=sqpQY3nTj`=ZBv`%W`fyL{tRJc_K+PpC^ky} zoidzs&0Y{IbG52$py`_3GnMR}N)C9DRxR8#CR^T{;x8q&+=!0(AwMqRM+VYKCoNCY z_+IPxw3j($=c&%~b12ZJk92S(wJvVry(GYsboC7nsS?y?` zr5HE{G|!zv^MM(~X1~pf|2GlfQy%^cps%{~Cm&`g3p|(z6Ws6+mX5`uV^d+Epul`KAzjUo(JG7)M3tn z#oPxs0Fdoq{4C+V4D4Ub{7yfYWy^i9%M$ueU}kaU-J{!)a5(_qdtU~hzV!Gzr#Fk1 zTOW7CzgzTt+=`9_jDj}1^Y1}#b7v&rlfWtzqEty9c z>k6S`0g`#=s6;5K;*TWHD9)Tz(v@VrkEG8i=9bBxQOucC@=pT9Bdp}lC}vHn#FT!$ z7gh#l6sPL~U3=bz-2VlTYzbusa~X2}ri^56rvqN6F8TZbdd*^iAD>LpJa_$?Z|k!;`IP;r^(-fEDbm3X}Gye!^On=et_x|QbAK^O2R|#R1)S{5(b3k0~$n?992YC z!KyTcR|QMJmy=ug9)Ku>?gOa4hyNxrC;kv8cVy(J2Qdx-gzKPWmRspGE(X2cokH(2 z=Zb$NIo}50<$mPiR4bi^Zsb-8(ScM*p5C&j+)mK%0E$!irzWZ)^h?0f7-@MW>DUN} zSNI<+T|K`i$^(c?uZ0isczZ$To3lrCb%i^x2kmrch`kjtUrSh56)K<8Eg36>UJ8g=c%i*+sBL}2 zoMl<9M2tQ}CQe~5_I`1G1<-3@50#aBe^u^f1N{}@3mSm}36BCK@rQ(8>6Ina1jHe% zdL+Y<$F&65mIMfUqg|oiq2flC(s3Uk0m71<3D|+W-@8nqBM*-;GGeG0dc@Gp)$H^z zp=$vj0Oh*TJ%s*PddMY_S)cp^LJl+D#wnn)+$q!rP=R+|EOGDm_Y!b`2`ICC6tAA? zzCzo~xk6#YOpYVvN@K6RY6v-F{~b7;v8;vB(zhYsF94K~kTaHQL@OzIv8P7pE-t8N zSni7m<=q3QsD)Po2ok!$oIOG*)OmTRG2Sbb@T-lrA++_WmLZ{w%-ImS)8BpxbR;Pt z$47(y#ho7nDTb^ZX2Uqw!Zd^~F=xMm|JI$$;BQ!%hR_?#IdBC?(#Sz2bV^Z7rc{3x z{9R9VWU32tslO6Rd0rXb3VAG%Q+nOPFR+9(gg%;HNBYE~{5{K)A~Xlk>yUOM(sp`e zLPYnIeWr)D`aHw_qg9+NgN2F4EB>}kd&^j5$<iSjwJx`3B5Dk%keS5#me>F@RH+LzG6ZUq4xnMN{-+9d!bkI?F@UrcP@LB%W3@| z#zUP;SXXjWwnAPa16hgeZdPS5Q001{%I83q&)v-`p95JwcQ><~?QT{%8_06DyIJLI zAj{eAW}dSr^T`sWT=*#fDHlo=c(Wz3|}i&#FpoKffp&L}43En{3kajx}}720afo`~-l z$Y;5)&~pJw@v5>+UdoFe_x~a2ckb+>!21AdOJ)B>cm9IBJp!opk%q%89gT?T7J_~W z*uU6T?0@3ntO@)%mcZ@6f$9B;tib&FFSrl2l5Ys{O$iM8@;o#*wxH> z`mUx@^KyXN-_?}kd`nM5=$-LC(rHYQQX?X*Mnr1$1*Pp)8V#Y(n{&lYe7)dv0L?_` z`@sIimG5otf8rtc;r^9-86w^p#iqm0CO_v{o*F_!K!g~^y~(}Qt(4_VFL)!e-r@3u zK5Wi&e<5VKJ9jQYU*f@qy3BcQq(2&qN_!in{ThH&3#sra*C-I2DuEeOOFIv*n%nK+ zg}mZce3N8&#W$ijNxpKSfg#Jue-P&99$e@!%Sn&Iyui|2cC(A{z0MhxxUX408%o@x zQyH_SaBJBul+&zP+-l7tRsXGdzqmE;7q{m9;?}ZXjFHIKT0$E_KLcnUx0n7)c`@St zLdpNmrn29#>^FqcIDKasPAS(|i-L4s%;R#$)Gc>pLT)u}6|&q>%5q1Wl{>2Zd?GyM z8RBi96g~~0%7xA_XMZ>71AsUp)cXi^YXF$$( zU!g7lK?@}4qyAdxHhaA}L>6t(8|~ed=Vfu87YwV8r}F~DDRiqj`@aWz)SZukZhMv( z`fmq4=h^0bF6iU#3`rYd+-zYQLLW8ffRKdFEVj;=l-U3D_Y%9y#12U8n_Dff68l;c zI}l?3Na7y_NTAR;9z1+SO1w%!_}k`gpA=SXgc4Fx#S+2(iFells`{Bk|8_v`36k+T zK<*b4W`TukpX>);klb|{L?IDlz>}!h{ZBkFq~H@ml8@xP0!UK@6IGE+wyGm# zOKz3V*~u+Ysyn@pRE9jFkhr;sNLdew_(r^&JsFZBD#rH z8Oie52C2lT^g?P@dX;zkq}aR|u3RA2ivTqbVP!XydOfTkGpQ(*;1kVzKwN+4PN8=I z5+Ho7y)G;Ds1qsX=UB2Wr0qqr_ z$b`OW&Vhr8M>&L1^&r7GRWOp41>Xq2idl_aY4sYZ8ovDR1yakc&%C%A;LI%l`h?R&)H4{=28G>Mx zoTGtS6&_63NWyecjU|61L=Jj*r6|eOl8~B>P?dN4q}W`#7sl}^Bf`p5CRJr}t(D8H z$&V83Y|HJw3=K`vDVPz_l`XJQuylhKH^gx_W+7d*t6X)@e2XE zw$O4w9KtFFicRQ!=ImGew*fF$rBTinDhW^NtVyM8J)m}_)QCMF$He<%Ahi*(uQ9<5 zA%#pn3fv9U8qZ&J zmjhN*WvGS%E2r5wsjO@V#Hse-)zv;JHm{;;5EAcJfRqX;Sjx6SK3b7g;WyrboGXA@ z`FtGah)RvN9@W!$*9s7oyf1TSv=y~@MW^x+mLv)#1ZCw@akfuZoc-cd$|wk-e*{zj z!b(Y26@P#{=y~=^==K*_tfjKE1MfHRUZI8G=B#&tzT{4!rKeg{7lGD3-<+F3uQ|=% zg5K%QOWIJ*0OJ2A(Di@>3qPBPvuc|}>bC%S3x5wFlu)NdHXx*UO@lcXhhi7I@JdU? zfKsv8q8<=x0LFe14o}j+CyDzf~ss2%lLuC=ZZ6l zXtl*zYB&o2Ns)rc zQq(EvW3`}02jA;R@mm2U@gKq0SPsf9j!#0WAm#lv@E-FntyNd==V#%zKgrLsh16T1 zcLBEp_W|UfXa(YV;ei;N03G4kc`$sy&wyV54*|aeIuBvK0Cb8bp8wZyI!^O0pg5Ft z04ss*z~#VhARe8M(Gj5C#4Fx-bjn5NffRO0_Fl(S{tl3gdw_MMb$gcH`|y zl=BkoHBmh1o`Et2s-CV$D%G;2fYAkeyNKtIOBBcLSdVl=hP`bjeUC3)*Xec%CSqY<-fqFFE`2-`D$J zBJUC40AwBn90nW%v;ot_b3N~mPI-{=E*{x?p3cJh?&r`Bfd>FB+vE9D{xb3?d_COb zy>FR@|DDLW7T5v254Z)`1(l4IR&)@(+tgSUV!z z6McU)7J}n|Q-RZfIlv16**|3SsLR(o89HT|SeMeSItlASq~nS5$x#s$#!q>w+ z-g_;g>-_IUjw}Lq0bc>`1^yk-VtG1#tzJ(~Y1Q&Co_)R7;#K^y-VFZ7d#}Z8o&QtF zk-6ftz+J$1fO`QgTBqYb_j$hB(yB@e%}d*uUx0Xa@b3QrD^Fz^3&azvmrGA$Ee^y| z;?MPuWk@~T6McUdY5EFqA8hksOuK=wT+Ed!K+K__&K$h<(%BQ7- zpDf6D(eDSSQLwCN+16GZ3eRfC9C0F%wdR+7)P z?t>(R-v;Vmn?>Y8S96PA8+R7y$EdLC>reb<%)gkGNV|V8yjFA5(bizJ>p_!`el3@r z`~WhXNm7*cpT;Pr#R0$!;Nb*J0Ohk^a;d}p_OZuC#rO0UhZo_Vnf%2kI14x!5MLjB zf_VqJA5P;r96S$DSn*wTki+ZYi$}bAmH>}Myhji(a3G!$ufhwoE_^icwI0a`3efm0 zzK9pH7y^jS!ZhF!Y|rE=4@$;{jBoc*Xe9z7RlH9If^REs$=@Hif@3NIl~p|A)3XT( zzT4pu>`=j{M`a@3i-6!ezqKd?XPwT=^oUQ->ww_9n#>DWXp~RHdwJqh8Qlzzz$!d( z2HzDqA6un21K&tILc#a$jPLSSFcJVepHwjh-wlaR<#pBsFzDqPoWXZf#y1bXdHdkI zCF5HH-xByjhGd5Oe`kE%@OAHlZ#R6Zvzb5xz6N~v;0`&$Y6o8hRL4vYdBdE&nDK)-p4{IrYnYDwE@r)YZ-yhvl zeB_Y5<(-`PA|Ed~p{00F$5cMaoKur`-(X8|B-&Lx;?eVx8sD$p(o*bH$4yW0Jr&x@ zIK98_9W6z7c=9fs!s4XJ&DjVT}uVW)>(y;oio|%PbME%q0qYbMcI{h@K>2FSBs?no<#WQnCj~0Ebd!+v}r;M!f*Q{AR zGpF=S`D1d)o|#2vM&bR;f@Oa8%q&{VcBa?+6~BB;B^u?^LiuQHkMe0Lo?4s?9p%$f z98sJO9rZJV8TcG%chEUn zsK0-}na6((^!b`wcqH#5?zI1sw+q+2XQTBd|1W^YAT}lXJK%?)pOfexfm=`T{v~<8 zhHgO5PW~+|#P>JMq0lYGF@?sXEAanK@;^>Aom2C;!k+?NoP^yq(H+pO&~Hd|1N!i+ zd{#m4#Qy|3y~1yU-t%0J1ttE=p^wV=^#k-PSYfVA{6pFG}K!&Zla$;JUh1Y+p|QU1byj+ zmAo^d_ds_f|1RixuP%!5M86XHcIfYuKedNV&^s<-$2$4H33{d)mpum;Z-HJ(eFl9c z^pcEzJM>u@eGT-<8NCDgo=o2L(7QAG1JJuN`X=a8p6#)z{5}W0pzL2yExryN;~O(t zu?ITFH)htyegYlindrx$so+#EB>1@TH$xq z=r3fn`0vSR@&BPlAFhEvJ@S8MMl1ZRjBbUVm(lX?&S-^i*67h1eNjd${N*+J?HMh3 zH`M4`Gg{%loYCU{ZjFAZMz(T~*V8QGdo@{X+0 ze*qoqts_`9o>ucevqmq-Xys=`Moa!sjoy;c;^)S1z8J~ptN6@HlY8v>kVtn|Z(p+s zwO|T$c4y|rjeu*{kFMt8Co^|8`52_#xVoP2=?%4=etP>^e0!98`A3GfL(Ss*k7hCT z4;G|&7V>F$MYD)&`xZ8XQZ(VNVlmsQ#iIMvNNaY7o~}`|&&%ufs`7Iw&X8`6OEiEzrX3W3MiStNiU{+sMTD zs-0d`ZE z-xBLrDO!cZwTY@VT{-FUqIJ|?aoKSFmA9(wEm2h;0w|Mb*U?oGR5hA~jI3s_;ESBt z+qUjGXB7N9lYevdZ_Z!J)vkZD^l!HQ&7rr9oN?9}ZMqO~jQi8qZP|E1+iE@??0vQD zHxvGu67IWfE_fNY)^&9j&Bfiz=XZ2BmoHk>yRffmSBN(KN>P1%G<`&IpSKLAFMBQH zjyBS6*WcO2wJO;9?WJ)=vXyq(J9X84lYWqWsV?2HnZA7B*V#7t++)|q&7Eq(tLO){ zPl_q>bV)0B=Tfp4H0{G1o|wIE;GOnsIOP?A<^6<6%`W^^dgjer+}$<5vpKu1z07db z7-^dJ+DN4><)zQQ5NpLW<-2xeze!&N^}Zfgfm%#_OXTrBqdE0k1d5UYpveu5&0*U~ zs$!_VXl)+lmweM@r3$LJ6x?srBVQ@qQ$D~}NsKSi*&DS%-Dl0s{_KvG(!DjrM=f+` zs*P%Xfuh31CnfCa;Zjn%7SdiKi;n|nRI)MCuYjc^6Umf&kDJZG?W+_$Urv2>R%5dm zVENG6`swP>Zn>U%iK+@>%9oqU>Rm)busX3ZrYeW3WJmo|D-xl+mDldty@yqvvul9M z9CO8D^%>Eq475T&06 zqV!#gy>8Z*43o;&=$bUv*_-LHRX1O6cjTrIEh=JCDlMpcL?7|i73O>0P%ep~w3LF< zZS~gGrwn2ZzHCRcI)`s5*k$w0CL7(}c!k{9~t9o@spD z`+i==at51X>c#j`gceHS(+$sLljxads*io9nWC3#fqf9Pd`$D5mFC%7n?1v8DWT!< z&UBk^49Y$W#ihq~U98>IOl0cHo%+sJuf7_+UZt#8=_A^EeG|q~UbXi)w-6api}FF+ zzra*uw_!BzYSqukxGJQ@nQKeS=etbP2!GthIR??nJVhzg8FgC*%M=;~Mx0S- zsrk8=Lse!_At z*6l^pi%kXK6Haw^q;JWfyYYA4!ez#1OE$gtU$5?KYTNmB{pr8x{iEI4_b%%(e+&M? z`rp=Xn?`J*McVcF>%!lo|GZ^$ap{ZiopNJe>!GVECp^;oQNoeGewcu)|MufHEMsTx z&?1{4@93cA^b)?D6or0mlzy#@qPOox(Q`%=IlmW${sZtoQGdrp z(f?(T|3u|qkHY^CQTUt-`ib~-MWJ61WqeF3Z6)BA4O^RktqGTCyG1|M&Um>iXKX%lz$}({fsE%*b{~Si{NvjalA50 zeP5ncWspNoCHs#XHS&!KZqjd;wbi+7R3&K4*n8Zr#6b8c14l%nkeNT0sTbn4n!%x zG>U)S8%6$mqKxmoQRI9&N`Jjk_;k5c|861Ts(kDzWw8}WvxN~#ZjRaITFuBoxAHBj9WsH!rm z*3>uF8&y@S+pBq5-B7=&)~GsvebwUHE9zSVwJpUB)vc|yt;XV_g(a*NXlpepHkLI8 zs^+&ett)S8yh3HwUQq*jY5VG`r5l@TOIuo+T8LX(s^&Mftg8-au%tGyB+yciS`{0M zTCS+7sBUSkUE0>%P^;Kf*VGtQ6&tG-HZ|6wVB2a|R5hf*Nad>e^^G+PY6EpmHAZt& zLj(D*uWqPXQoX)*XV~%3!4521b!9E&V(CFnM8XqFlKzpiPyFEY0e+mX=!Rbaj1mT`d(SDydpnyFrQ+msR*nRcnpa>uQJ7*4MVQ z);Bc{C$Fjxv?0c6|kaK4x(-h`ggX_TGtk+Y1+_eRL;yht7=V4t!g}SQM|NLQ7bko zMPuAi1}c$J6_p3nWql2FHki{=i?M61t!ijmy>^gVz51%Q`W8)vu?MPJTWKvcQ?XTC zSCxUjpsA*

{^qtQnvvP<38yprl@Guxwp(6Ff#GDtBSiJl&KQ6s3y-fflWuijBpZ zUevn0slKKn&?0JXXsWImVk&Bo8tPZIRJUxbqKL+#iqeJDF5IE2x}gDoS2VTM2kO?f zRy8)QZfaZu5$Rhn5V%}zbAZENv5~S?!Ntk~wd*2M=&lsi)WBn*9?+j z8(K3o@UR~-xMswpfYFiXh6i~KsY3X??>PbXuh2qx96;&Cj*9se{Zdlm1ZWRJ&{q*W8XJsjlHd~cW zmzF^_66_^oP-miz_CVDt%sgc!gUo9&8fa~i%LYQ`1svIt$`XeG?T5YIr)OH(=#57SFF=KgE zbsgtUk~SdX)EbCO2$<7ao2KPWJ8N12@#>b1&4H#Nq-GV8g(gLKHOr`~6^p2<0uMSz zO8_L8)p_M*^NOpcPn!|Bnm%o2BOA<*Wz@=wWM$glH(uUDju2=O7htXGSKK^0!zGbRk zD~Hif*5&Jl(VJJO^6kUug&S16TZYj`)Tr{?hSBrRRP;NB(RXM*JBHDlwLCkA(fej8 zJ`WG08|_M-{$ccX&1c^*x~=W-@G$xoZHK{O^h90W(EGLUczveJdxp_>@ZbQSv|;ou zT26Zy{aP(&?l5}aOvR^g7=5cQ?;l3rRjJBX4x_Kse*18fEd@s4+oy`kcfW(~+*j{& z(9;~{4>;)BG$r?tgI???f7n64+(9>*Z9zD8(D7GgdK~n@Xo|hGgRZy6QX$Pj#}Po} zV>{^VbNG|%ptJ4pC(l6-k1_KK9CQTQ$fwXj9~q$P>7XO9M?NbZ z^n?i2FzOuiBnQ3OK_Bg)w>#)#9P}*?I`4;uKieGilrRx#pM%bO2;t8i4ti>sh;)a8 zp6;OUbkN5+=(`;B@ecaK4*CQKz28Bf=%DX&&@&wL0}gtogMP?Cw;lAu4*E$BdeA}7 za?p=D=-CeXaR)ueK{u|l1kWV(Djrf^gah&PiaEG!$B`_@ZaH}^WJ#)v(rJ>OC`zL<)F_A7e@N9 zgMPMy-tVB#b@1T1e^z$6_L(g$}yk zL0{ycS2*Yu4tk}7exZZD(m`MBpw~I*OC0oO2VE~gB)8o`*GoX5Z*kC;(}4tkq|-tM5UchI*u=o=jLZ4P?7gWl($Z*k~TqH3*Y_Nt{T0SnyrMNyG;Pf1h|XalhbOh{q7` z5_}^um(HObg0Cm$k~!2TcoXqh;w^$(h`B@#H4DCym|LsRO2Mm$xl|5S2)=}vOXN_Y z;KjsT8i(=(pHIvsamW@tk9Z<+qTt!YTmpv-!PAMk^bH;Tiv2%@*d{(KIE$D|-OvHS z?}OUY25;7!DEKlER43o)0D zp=QBX5_8EIS}AxHF_(&=3c;5UbBP!#6ug+2OT$o};PZ*OBn;Vt=Mm2(P82+wm`lKr zA$U45mwut6|B>-0E+jrIIE$D|z0d){gOJz+)cscPF!7apGQiYlYUrEfRRA{B(Rm5CEg(?JJLd>O8s8H}?VlJ6N zd4kU;=29tS3!X=O8F8ZE*~FI<8-k}3bEyZu_rxwZ*EalJ{Q=j&0hzY@!k=YZ<{n>QV>0i4yJ+c>wpIR)xdkX|1mgWYbI%2< z;JX-QfA7Q#=GsPi@1(PlfZv}`r+msk{ZIVI?e92Z`p-JlY9DcfslTJ&^moVp3i(9? z$$L@sE?gqNYa&vX;o(Q;~*N=d#t_nOhO({XGTw{Zfeb0WDbUK<~_3kQe+B7^&PnM`GA0+ROEK ze~$cj5##;6OLG$az2!L*%6m(4Jo){>c<|_cGQYp;U?8(6kTb#GvpFa6V_zb2gS)8N zp4h)pr5%QeHgos*uX`pBi>1&DsKx^Z7%8=*!h;z)d? z^SD^@FlvL{do~(5FL#Y^T5K66lTEIcro4WlIf4S!Jr^bJa(5kUuk85R>=_kXZX4Z@ zJ-t8w)sDkob@az{?O)Sfl9Swa&d0usV-rxx-wVlill#ZM%GelCKK4yL5bS|$JtHWeW7TvK|?D^Q26q6I2g+h=gCdc2s=g6<6U)^tXBjZ=-Ku=80k!OyK zP`&VXUz&5cyt^jnXj%7{<=qWA$Nl&U`mcM>k2PJ5zb9rA=XQU0XHFUj7>k~3?e0&C zy8qlR*6n>BNyEo-~nEbo@{i|cH_xC0z4!o)DaPCjex6!Ys{ZP9n z*!eka16Tf@M1RM-roZc;zdO;_wE-c<-&5i7cRw?*I4{3HR0jh3^?01>>szP7cv4AI z_VPGa%FsbM=>u4>X?pMz)h%DwVHD_k)z|q9(y|VWvEl3dJ+3?cGw^sUQdFLR<&CfF z3DgcghmkCUT!{k}Hv1C_k|)}aQAKC4o!bZ7d7LYIu=w;8(64pSU5dV)^eYDG!4*ob z$7yJ&R|0;%&iN>ie++#NzK86x?*7mWP=c9Il92P?5B^nWj7P@f&^9ZdPGLrd>q>8e z_v&(=z>|Z&{)Ye1{*Kb*5GUS4WVqIbT?Ix3ANowJz~B8;8+>@;q}d#+L;juySX0lX z7^aTBX?viDKd`^S$Vl z?A(VzKS`^P2M_Bk1f1gBBU`lH#D4EA%2J$mvYoP56f6vu+a3rMYnfU^U zUB}w;y87D-sQ{>|A;(tXH8;fms`wb3L!rB$IueeT-5-j5KlCZMz`VQqH}=CFe}x4) zWKvAX?vdwVP;dss#843HtReA1g@o?^NSshXqT@ZkgyE$KvAr{YF_r%NOi9iJ18jmf zd@?Wq56-3sUz(H4R`SYwYH|w7aaD*m{Cgt&S0hO04+LXS1$qlSM|Z>!7boVw&+a3N z6-re71Y3YY-*=u8edO==cfY%vixLi@ACW{<^#|IgGYfWlDl$uYCf+*VHcH`kU56!r zK(7y=#gd+st0m*0uZ#cl146flX5u0;U&{OesV4*v9#yS$zl)#|3{cIGulwolr-Ek! zl=Q^rfmKoWQ>EZi8FZuFu6|$FcfhTv<11HS8NS_pzRvGMYFv)+b?%U>_gz5dhUFza zqdqK!koj+wcI^+`5Nv^bW!-y2n`khe@SIcL{jXr~V^Dsq=fj?>6Z4M++hEci$6af{ zpZ}8w65ONmyWaQRR0zr(bb;|BFiPeX|LV_z`Jy&xJG2}w8=mjLPbQsU7FZs+SM+-O zhr*rpeO>3%q&YXC*$+euWHAOTP?p3HoE)OJD$s6xYB5 z{vOWaJ+6rFxZ1E9LJR($^E_}GtO-8Dq7-(v{A5^HHyTAC{s{ugnm+ie*!K$`Df&rCPrNC4zs1CnA{W`FDvQZr^ilE~8#-@Yj?ZR;5rP6anfT zwvG3%M(){1L#eEz=Ce=2aYSW_X@uf10%3bW{5r(=a2QeL&H~$Dj0iGD9L0Dg6p;{+ z;Epg5yL<+RaqgYD2p9W{9{vo$8;jQpEP#W1-beQ&g!?-G1$&`m|A8*oJGTwRF`B^x zstBCI*SVKPdS|YZtY?BLR9shoS@%=E&gI}*)`PW=3dLnu_o(vai0#|Sk_Dgkb)F^# zOR;*Bm|fOgim9&$jLUjPK&-3g*|?gI*d5!5%V0H{55D&v>UYd72LXjYfM*4}$+BnW z`5-~q7h$6L2ZL|H9;G|6vq2A}LDoMY$KU-VXPD*S0_~p<`|X*K!}#c7d`x6~Oe@E_ z)n*{({8rXe>Ve$wg3uZ`4lsf^f&d6&m!Xpx9=Og*G1Z#7TAKMV`0)`5!avq-1CxAo z1o{^IBemE&vr>w^@hH~?!QT$0xkWts$0bAX97S8EX*IT~MTcoAa+{F2B9T}tiwWwpSSu$tR+i;22 z*3#~Gg0F)01>Gf|L8{YU2K9oD&7T=Y+soh)n3n&3{;Nm4jH}3f1i58Bn@=-3_F!-G zlqXn-szqo0eZxPI`9oyFj{ZAy3nhwT=Kc-SfACgO@Z86Fy$yUqDTsu_ysFLXu*LZB!6L<*1OM&rFX{e=>^1z||3bm_(0%Ya2GHKQ$FmWkU*~S)&ERhKQmq>^ z5T@o|Z)*-S(j) zBg3;f_M7PM0rnF?^mFzbn=$UcdS~8`jxcr}E$`lp0D9efJ7F+>Y;&>xOL>udSnPW% z%kfpg&2Ix%Ukx-yE}#%@N^)vIsUrnx4L!tag{@(9!n*;}9Vb;cpMk#=i8DP3uRMI8es z>>17WjH<-3NdCdD{l2aQU~JiP-M-Fy5h-|yQht4jB@bt`p4gL7fos1-lv+*TzRpv@ zwY2M4;Cw%-9$wKu8;RXRYoeQ^G%00Kq$pPE@ zuFG`?%CRrcLfxL3a<|mJK&Dp zSx?HJnFTFuh1@-DiCiO`N-M#VDS!W?(5JEcBz#Fc#?GNsb`FnZVXE#JgDNFGGq;0- zEV0pnqbOR+Zr+Xy@(5mzmP&d~yMl$f-Vbo14Q@ie{oQNP*dc#MsbPjb$C_?%K6qBL zpA5atm7>|#+27{rJm~9u8W2vLG7)9t*Pt>w? zvoH7{h-_!J!XjsI8YSOH$s_XhurmEU^c~9Q$Elbde20x=aR2;Irr5P(wQh&*mc?|q zzi+;+`}_Wo@t70lN3#n3hIyiY;rnaNcl{8)7qF0Ck879u0P`M(Z|ry+XcRg1+1U^B zz&I}cI8TOhn2GUHa=#9lDEHVQ{EwhunE&nyXc;AvvAYWKOhm7vcb9^WeejpuHM|Ns znkiuGdvLw`avCo*{W^0WSGkLs`!jOz4o)Y1%lzG6a0~p|ZahG4EWxx>=jNrGJhn4R}e|IJF>uetJQH02>>g)Oyd0w}da<8~- zPgp;Rs1N=8om>3=Bm2Vo#Pws;|L$~^{}}Rz`qyht|2lHBzh_M3d~Zx(n!jfm*8lpv zZ<*oiS_{7b5gz#=&C-KYKRFi+EtZTWbk!jlM;;5ljA7Su7F|@dysZ1{qGd%(mo4FW zPVoExfW!ku81rV;dDc$zb*`Y|2ZAdUQ8qQ4&=`+H#l<`P8sA zoUij;aFNB^1JpamjnRGvxRed*rmP#f>3kj~Ft2UntPjz5P%`eN_69a$V~V2>n$eXa zujnW-_!=4|PejkBgSU=lcW@N+ zkKJz zAuR9tA(khS`g`Uf<7G8_SSaa~80Q}WsVrve=;VzPXYe;}WlyCtVBGG=;QBhZV`Io}+X!NA#7gXXgR5Ut5yOsSp5vU< z*I9^tscea^)jV%US@QfZ27DcU3LHFthsP_()2Dep2L{7<284v2NKZj9_y*YYwwpnp zwnoaeN%7#$Vc*|%F#9H(Qjmgv*6)7C-}}Ryl^)=S>CyZ156WVO8PG^>@JUdqkYCC$ zW0s=HkJ2sXK03gDcfTH-gKQ4_!)$EzQF@Gr<1T*W>*RZW!m4`%(VE@N)$%Pwm0@;< zTL)S%xe7XD>JpEn`>cHnY)m z`C0!7%nWPdt5j;@m0*T$|0~gw!-(2O4n}$DcJM(C8rMUdVQ9gQ8HO*X!VE)0cLoTq z6M`$K0zJ~S!DnUgF~GuhP|1H4{zH`9>S7@gy;9!9;CfUlS8QQE<#41=DHr!dQe3nfJPJ1GNJ&n)Z`(!M zTJv_#MmK|9N_KK9RP&Zve|!bTP`$77F)9PGw$OiSxni2f!syUMxxssBEL=Vhn-Y{GSvee25)d^L548^70gR3>uDGB@dRJut%tA{y8ebv4VA8IB3VXewon3K z_#7oX-6<>&`N6)m`}al8MepV93$t$lcB-B4q5+=ihR=CN__|&e(tOPQpQB1>Uqr8w z&6wtY6Oq^*1Ovz9HW|itY%QGOqGa z(9pT8Yc6;X@(oQB=m>tkE^BCsFTP@b!<|!n@BRY&i0j}bu&CQ{1`>Kv3JpCb@9GyK z#t=&z>SY)3ZXUj%RyAt%g*r&NT=7{%KD{I~DZ)7*WVE{txT7fjw?y$$X7oQ?_(U}ChcpprT98&gDr0BB~Kz|YR&^$5fxlla}E_HD{m=>J$Qut5~_qaQ*hP&e!1xxo}{EO65 zz)#nPp`w1z)lhE$5iJRA;r20>c3h8Rqt=JA3W(SK1NpMmQ48nrxg8E*&O^>lGmuSQ zxWTs%w|{gQJTHSI5dwdA5WBU$;Ir(}u=|s*2xU2R5hT#+a~-SO8oKmg-?C3&KG5m>jC3lr15S2S52MbdITy4{=jJaQ$YG zLbqw$Gq)PtA?Lx7kn=MRRmWaCzkg8eA}{pbjpwdrqH0e}PAG-!cN;5B+B;G^Yy%q!2)02mGy7sr#vYp_2>{!Yyl<9s7 z52O`#d}Uml)K*WIkbe5Q#))a-zBTQV_pcGR;o%KAxeVTTE~J6ag#@sY>cDd$v{Mhv z{m5^_sO3har!4C^DB=AV#Hi*Ad@5h*%Ev!+F_0~U+^^e>DcGfzW# z9P<0RI#GrdAH#s+&eBZKVJn@q>HSbEZ2D8=tm%8EgX$#5qR03h>IvJIJWE0QmwsJ? zJb9MlX1R#+vA?@!s2gLr?^o6cadQ+yK0I9|F zY3UP?1AWfz&K6l$ajQE~$?8|VXi_(nD z@SuatYCnR*U{=fHY(JHAnjKvJyv*&R<l^m49qJ6*!xmg?dzgzs!Ej!l1-ph>CL(D=3cr8lMB383ELmt(<7!

  • `f@@2Yx>GLRpU1CTPM-$-siDM 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
      ?JL;s<&^gDRT=*uXEa7etgNtrfTO! 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

      f~276jI*Rik$$Mk$^)LRVOo? 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" + + +# a replacement for the old socket.ssl function + +def sslwrap_simple(sock, keyfile=None, certfile=None): + + """A replacement for the old socket.ssl function. Designed + for compability with Python 2.5 and earlier. Will disappear in + Python 3.0.""" + + if hasattr(sock, "_sock"): + sock = sock._sock + + ssl_sock = _ssl.sslwrap(sock, 0, keyfile, certfile, CERT_NONE, + PROTOCOL_SSLv23, None) + try: + sock.getpeername() + except: + # no, no connection yet + pass + else: + # yes, do the handshake + ssl_sock.do_handshake() + + return ssl_sock diff --git a/sublime/Packages/SFTP/license.txt b/sublime/Packages/SFTP/license.txt new file mode 100644 index 0000000..3c1e38f --- /dev/null +++ b/sublime/Packages/SFTP/license.txt @@ -0,0 +1,33 @@ +Software contained in the "bin" directory is subject to the licenses in the +"licenses" subdirectory. "sftp/ftplib2.pyc" is subject to the +"python_license.txt" in this directory. All other files are subject to the +following copyright. + +-------- + +Sublime SFTP +Copyright (c) 2011-2012 William Bond + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software to use it for an evaluation period for the purpose of +testing prior to purchase. + +Extended use of Sublime SFTP requires a license, which can be purchased from +http://sublime.wbond.net. Any person who has purchased a license from William +Bond and enters the provided product key is granted use of Sublime SFTP on +any number of computers, of any supported operating system. Licences are +valid for only a single person, and are valid for all upgrades to the +major version purchased. For example, purchasing a license for version 1.1 will +allow for free upgrades until version 2.0. + +Redistribution, modification, merging, publication, distribution, sublicensing, +and/or selling copies of Sublime SFTP is prohibited. Please contact +support@wbond.net with any questions. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/sublime/Packages/SFTP/messages.json b/sublime/Packages/SFTP/messages.json new file mode 100644 index 0000000..3bac59c --- /dev/null +++ b/sublime/Packages/SFTP/messages.json @@ -0,0 +1,11 @@ +{ + "install": "messages/install.txt", + "1.10.0": "messages/1.10.0.txt", + "1.9.0": "messages/1.9.0.txt", + "1.8.0": "messages/1.8.0.txt", + "1.7.0": "messages/1.7.0.txt", + "1.6.0": "messages/1.6.0.txt", + "1.5.0": "messages/1.5.0.txt", + "1.4.0": "messages/1.4.0.txt", + "1.3.0": "messages/1.3.0.txt" +} \ No newline at end of file diff --git a/sublime/Packages/SFTP/messages/1.10.0.txt b/sublime/Packages/SFTP/messages/1.10.0.txt new file mode 100644 index 0000000..caa65a9 --- /dev/null +++ b/sublime/Packages/SFTP/messages/1.10.0.txt @@ -0,0 +1,86 @@ +Sublime SFTP 1.10.0 Changelog: + +New Features + + - Added the "extra_list_connections" setting which allows spawning multiple + connections to the server for vastly improved performance when determining + files to be synced. + + This setting is set to the number of additional connections to open, and is + ONLY used for the list operation that is perfomed when determining what files + should be synced. + + - The "Chmod" operation is now available for files and folders when browsing a + remote + + - Added the "keepalive" setting for users who experience frequent disconnects. + + This will send a command to the server every specified number of seconds in + an effort to keep the connection open. + + - File ignoring is now slightly simpler - the "ignore_regex" setting has been + deprecated, and replaced with "ignore_regexes", which is a list of smaller + regular expressions. This should make adding file and folder paths easier. + + - Sync commands now perform file operations in a specific order for users that + perform deployments via sync: + + 1. Upload/download new files + 2. Upload/download existing files + 3. Remove old files + + - Added a new version of psftp.exe on Windows that supports the -s flag via + "sftp_flags" to allow a custom subsystem to be specified + + - Changed SFTP connections on OS X and Linux to use compression by default for + better performance + + - The ignore regex patterns are now checked against both Linux/OS X and + Windows style file and folder paths so users may more easily write ignore + rules that must work across different operating systems + + +Bug Fixes + + - Added multiple new file listing formats, including support for IIS FTP v7.5 + and IIS servers that respond with four digit years + + - Tweaked the delay of performing the "sync_down_on_open" feature on OS X in + order to ensure that it happens. Also added a new editor-wide setting + called "osx_sync_down_on_open_delay" that allows tweaking the delay for + users still experiencing issues. + + - Fixed an issue where in specific situations the root folder of a sync would + be listed twice when using the FTP protocol + + - Added error handling for encoding errors + + - Fixed an issue on OS X where an sftp-config.json file in a folder with a + non-ASCII character would cause mapping to be broken, and the remote path + to be the same as the local path + + - Added error handling for errors when checking symlinks on certain FTP servers + + - Added trapping for multiple errors related to re-opening Sublime with a + remote file after the local operating system and wiped the temp directory + + - Added checks for remote files that were opened on a copy of Sublime Text + that has been synced between two different machines (such as via Dropbox) + where temp folders are incompatible (e.g. Windows vs Linux/OS X) + + - Fixed a bug with NotFoundErrors when trying to reset the local working + directory after a remote operation + + - Fixed an error with downloading a symlinked file when + "preserve_modiciation_times" is set to true + + - Added another FTP passive mode error handler condition + + - Resolved a working directory (pwd) error caused by the Tornado-vxWorks fix + from v1.9.7 + + - Added a check for disk full messages + + - Added support for a new (previously unreported) FTP password prompt + + - The "sftp_flags" setting now accepts a list by default instead of a string diff --git a/sublime/Packages/SFTP/messages/1.3.0.txt b/sublime/Packages/SFTP/messages/1.3.0.txt new file mode 100644 index 0000000..6e52fcd --- /dev/null +++ b/sublime/Packages/SFTP/messages/1.3.0.txt @@ -0,0 +1,21 @@ +Sublime SFTP 1.3.0 Changelog: + +** Backwards Compatibility Breaks ** + - Changed OS X key bindings to use Ctrl+Cmd instead of Cmd+Alt + - The commands sftp_file and sftp_file_context were merged into a new command + sftp_upload_file. Custom key bindings will need to be updated to reference + this new command name. + +New Features + - Added the ability to download individual files + - Added the ability to diff a file with the remote version + - Diffs are generated and viewed in ST2 by default, but the diff_command + setting may be used for an external diff viewer + - Ignores .DS_Store, Thumbs.db, sftp-settings.json and desktop.ini by default + +Bug Fixes + - Added support for SSH keys with passphrases on Windows when the key file is + specified via the ssh_key_file setting + - Improved Cancel command to work consistently, even if triggered in between + two files being uploaded during a directory upload + - Fixed a number of small errors that showed on the console \ No newline at end of file diff --git a/sublime/Packages/SFTP/messages/1.4.0.txt b/sublime/Packages/SFTP/messages/1.4.0.txt new file mode 100644 index 0000000..4ae8db0 --- /dev/null +++ b/sublime/Packages/SFTP/messages/1.4.0.txt @@ -0,0 +1,14 @@ +Sublime SFTP 1.4.0 Changelog: + +New Features + - Added FTP protocol support + - Updated the plugin to automatically retry operations when a + disconnection occurs + +Bug Fixes + - Fixed handling of diffs on Windows for files not in the + root of the remote + - Made SFTP remote folder list parsing more robust when Sublime + is run on a machine with a different locale than the server + - Fixed issue with connecting to an SFTP server for the + first time on Windows \ No newline at end of file diff --git a/sublime/Packages/SFTP/messages/1.5.0.txt b/sublime/Packages/SFTP/messages/1.5.0.txt new file mode 100644 index 0000000..d526aa4 --- /dev/null +++ b/sublime/Packages/SFTP/messages/1.5.0.txt @@ -0,0 +1,21 @@ +Sublime SFTP 1.5.0 Changelog: + +Please be sure to restart Sublime Text 2 to start using this new version. + +** Backwards Compatibility Breaks ** + - Global "timeout" setting was moved to sftp-settings.json and renamed to + "connect_timeout" + - Global "save_before_upload" setting was moved to sftp-settings.json + +New Features + - Added sync functionality - see side bar and context menus + - Rewrote FTP backend to be faster and use one connection instead of two + - Changed initial remote configuration into a snippet, allowing for navigation + between settings via the tab key + - Added timestamps to debug messages + +Bug Fixes + - Fixed handling of idle timeouts for FTP on all platforms and SFTP on Windows + - Fixed display of connection timeouts for Windows SFTP connections + - Fixed a bug with Save All not uploading all documents when upload_on_save + is set to true diff --git a/sublime/Packages/SFTP/messages/1.6.0.txt b/sublime/Packages/SFTP/messages/1.6.0.txt new file mode 100644 index 0000000..a6de576 --- /dev/null +++ b/sublime/Packages/SFTP/messages/1.6.0.txt @@ -0,0 +1,13 @@ +Sublime SFTP 1.6.0 Changelog: + +Please be sure to restart Sublime Text 2 to start using this new version. + +New Features + - Added remote browsing functionality - see File menu for standalone browsing, + or use the context menus for existing local projects. Open + Preferences > Package Settings > SFTP > Key Bindings - Default to see + the new key bindings. + +Bug Fixes + - More idle timeout fixes for FTP + - Fixed download of 0-byte files via FTP diff --git a/sublime/Packages/SFTP/messages/1.7.0.txt b/sublime/Packages/SFTP/messages/1.7.0.txt new file mode 100644 index 0000000..d7c9b3c --- /dev/null +++ b/sublime/Packages/SFTP/messages/1.7.0.txt @@ -0,0 +1,89 @@ +Sublime SFTP 1.7.0 Changelog: + +Please be sure to restart Sublime Text 2 to start using this new version. + +** Backwards Compatibility Breaks ** + + - Newly created remote configs will be called sftp-config.json instead of + sftp-settings.json. You may need to update your VCS ignore settings. + Existing sftp-settings.json files will continue to function. + + - The sftp_remotes folder in the Packages/User/ folder has been renamed to + sftp_servers. You may need to update your VCS ignore settings. + + - The following commands were renamed: + sftp_browse_remote -> sftp_browse_server + sftp_edit_remote -> sftp_edit_server + sftp_delete_remote -> sftp_delete_server + Custom key bindings may need to be updated. + +New Features + + - Added sync_down_on_open setting that will prompt to download the remote + version of a file when opening a file, if the remote version is newer. + + - Added confirm_overwrite_newer setting that will prompt if the file being + uploaded is older than the file on the server. This only affects single + file uploads and causes uploads to be a little slower since a remote + file listing is required on each upload. + + - Added Monitor File command that will periodically check file modification + time and upload the file if it changes. This is intended to work with + programs such as CodeKit and CSS compilers that will modify a + file externally to Sublime. Frequency of checks can be controlled via + SFTP settings. + + - Added preserve_modification_times setting to preserve the modification time + of files when uploading and downloading. This does not work on all servers. + The plugin will notify if a server is incompatible. Can be set to + "download_only" if remote/server does not support it. + + - Added password prompting with asterisk password hiding, eliminating the + requirement of saving passwords + + - Added context menu entry to delete the remote version of a file + + - Added context menu entry to rename the local and remote versions of a file + + - Default remote/server configuration can now be edited by copying the file + Packages/SFTP/SFTP.default-config to Packages/User/ and customizing + + - Restructured the menus to have a single entry labelled SFTP/FTP in + the file menu, side bar content menu and editor context menu + + - Changed Windows to use Sublime Text interface for SSH key passphrase + entry instead of Pageant + + - Improved performance of reconnecting after a disconnect when the + remote_time_offset_in_hours setting is not set + + - Added uncaught exception handling to help debugging unreported errors + +Bug Fixes + + - Added checks for required configuration information to prevent + silent failures + + - Fixed a bug with deleting remote folders that would cause a not found error + + - Added a missing Upload Folder entry to the side bar context menu + + - Now properly parses MS FTP server file listings that include file + names with spaces + + - Fixed a crash on some OS X machines when using upload_on_save or + editing remote files + + - Changed passphrase prompting on Windows to not disappear after one second + + - Activity indicator in status area is properly cleared after uploading a + file via its preview + + - Fixed sync commands to function properly when syncing a single file and + perform only a single file listing when syncing a single file + + - Fixed a bug with sync operations disconnecting while listing local files + for SFTP remote with short idle timeout and many local folders + + - Updated plugin to ignore .DS_Store, desktop.ini and Thumbs.db files in + the Packages/User/sftp_servers folder to prevent parsing errors diff --git a/sublime/Packages/SFTP/messages/1.8.0.txt b/sublime/Packages/SFTP/messages/1.8.0.txt new file mode 100644 index 0000000..31f5af7 --- /dev/null +++ b/sublime/Packages/SFTP/messages/1.8.0.txt @@ -0,0 +1,26 @@ +Sublime SFTP 1.8.0 Changelog: + +New Features + + - Added FTPS support + + Sublime Text does not include SSL support for Linux builds due to the + different versions of OpenSSL. Linux users may enable experimental ftps + support by opening Preferences > Package Settings > SFTP > Settings - User + and setting "linux_enable_ssl": true. + + Once Sublime Text is restarted, Sublime SFTP will attempt to load one of + several pre-compiled _ssl modules. The console will contain debug + information. If for some reason Sublime is unstable with this enabled, + please set "linux_enable_ssl": false and contact support@wbond.net for + help in compiling a custom _ssl.so for Python 2.6.6. + + +Bug Fixes + + - Fixed the SFTP > Map to Remote... menu entry in the editor context menu + + - Fixed parsing of directory listings with users or group names containing + a space character + + - Improved compatibility with Filezilla Server diff --git a/sublime/Packages/SFTP/messages/1.9.0.txt b/sublime/Packages/SFTP/messages/1.9.0.txt new file mode 100644 index 0000000..47621da --- /dev/null +++ b/sublime/Packages/SFTP/messages/1.9.0.txt @@ -0,0 +1,41 @@ +Sublime SFTP 1.9.0 Changelog: + +New Features + + - Added support for multiple remote configurations and switching them + + New menu items were added to the side bar and editor context menus and the + command palette to Add Alternate Remote Mapping... and Switch Remote + Mapping... + + This functionality is intended for users who need to upload from the same + local folder to multiple remote environments. It is not possible, however, + to upload to multiple environments simultaneously - the remote mapping must + be switched and the files/folders uploaded to each in turn. + + - Added the Delete Local and Remote Files/Folders menu entries to the side bar + and editor context menus and the command palette + + - Added confirm_downloads option to sftp-config.json files + + +Bug Fixes + + - Fixed the sync_down_on_open setting to obey the ignore_regex setting + + - Fixed a bug with FTP disconnections sometimes causing crashes on OS X + + - Added the cs_CZ2 remote_locale for servers using slightly different Czech + month name abbreviations + + - Fixed handling of files and folder names that consist only of a space, or + that end with a space + + - Corrected a bug where a connection error while performing a sync would + causes an error popup + + - Removed some debugging information that was being printed to the console + when connecting to MS FTP servers + + - Fixed FTPS connections to fallback to cleartext mode for data transfers when + the remote server rejects the encrypted mode command diff --git a/sublime/Packages/SFTP/messages/install.txt b/sublime/Packages/SFTP/messages/install.txt new file mode 100644 index 0000000..be8c113 --- /dev/null +++ b/sublime/Packages/SFTP/messages/install.txt @@ -0,0 +1,48 @@ +Thanks for installing Sublime SFTP! Below are some quick notes to get you +started with the plugin. Please see http://wbond.net/sublime_packages/sftp for +the full documentation. + + +There are two major modes of operation: +1. Mapping a local folder to a remote folder +2. Working off of a server + + +Mapping a Local Folder to a Remote Folder +---- + +To map a local folder to a remote folder, right-click on it in the side bar +and select the SFTP/SFTP > Map to Remote... You will enter your connection +parameters and a new file will be created named sftp-config.json. + +Once this file has been saved, all files in that folder and all subfolders +will have various operations available via the side bar context menu, editor +context menu and command palette. + + +Working off of a Server +---- + +To work off of a server, use the File menu and select SFTP/FTP > Setup Server... +You will enter your connection parameters and options then save the file with +the name you want to give the connection. + +Once the server config is saved, you will be automatically connected to the +server and you can browse and perform actions via the quick panel. + +Unfortunely due to limitations of the Sublime Text 2 API, it is not possible +to present the remote filesystem in the side bar. There are, however, key +bindings for connecting to servers to help reduce the amount of time remote +file operations take. + + +Support +---- + +To learn more about the features and settings, please visit +http://wbond.net/sublime_packages/sftp. + +If you are having trouble, please contact me at support@wbond.net. The Support +page, http://wbond.net/sublime_packages/sftp/support, includes instructions +for capturing a debug log that will be useful if you believe you are +experiencing a bug. diff --git a/sublime/Packages/SFTP/package-metadata.json b/sublime/Packages/SFTP/package-metadata.json new file mode 100644 index 0000000..8e9fe04 --- /dev/null +++ b/sublime/Packages/SFTP/package-metadata.json @@ -0,0 +1 @@ +{"url": "http://wbond.net/sublime_packages/sftp", "version": "1.10.2", "description": "Commercial SFTP/FTP plugin - upload, sync, browse, remote edit, diff and vcs integration"} \ No newline at end of file diff --git a/sublime/Packages/SFTP/python_license.txt b/sublime/Packages/SFTP/python_license.txt new file mode 100644 index 0000000..d174031 --- /dev/null +++ b/sublime/Packages/SFTP/python_license.txt @@ -0,0 +1,58 @@ +ftplib2.pyc is subject to the following license. Modifications have been made +from the original ftplib that is included with the Python programming language +in order to provide a better way to handle debugging messages. + +Specifically, the set_debuglevel() method of the ftplib.FTP class accepts a +second optional parameter, "callback", that can specific a callback that will +recieve all debug messages. This callback should accept a single parameter, +the debug message. + +-------- + +PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2 +-------------------------------------------- + +1. This LICENSE AGREEMENT is between the Python Software Foundation +("PSF"), and the Individual or Organization ("Licensee") accessing and +otherwise using this software ("Python") in source or binary form and +its associated documentation. + +2. Subject to the terms and conditions of this License Agreement, PSF hereby +grants Licensee a nonexclusive, royalty-free, world-wide license to reproduce, +analyze, test, perform and/or display publicly, prepare derivative works, +distribute, and otherwise use Python alone or in any derivative version, +provided, however, that PSF's License Agreement and PSF's notice of copyright, +i.e., "Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 +Python Software Foundation; All Rights Reserved" are retained in Python alone or +in any derivative version prepared by Licensee. + +3. In the event Licensee prepares a derivative work that is based on +or incorporates Python or any part thereof, and wants to make +the derivative work available to others as provided herein, then +Licensee hereby agrees to include in any such work a brief summary of +the changes made to Python. + +4. PSF is making Python available to Licensee on an "AS IS" +basis. PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR +IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND +DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS +FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON WILL NOT +INFRINGE ANY THIRD PARTY RIGHTS. + +5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON +FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS +A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON, +OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. + +6. This License Agreement will automatically terminate upon a material +breach of its terms and conditions. + +7. Nothing in this License Agreement shall be deemed to create any +relationship of agency, partnership, or joint venture between PSF and +Licensee. This License Agreement does not grant permission to use PSF +trademarks or trade name in a trademark sense to endorse or promote +products or services of Licensee, or any third party. + +8. By copying, installing or otherwise using Python, Licensee +agrees to be bound by the terms and conditions of this License +Agreement. \ No newline at end of file diff --git a/sublime/Packages/SFTP/schemes/All Hallow's Eve.sftpTheme b/sublime/Packages/SFTP/schemes/All Hallow's Eve.sftpTheme new file mode 100644 index 0000000..2d29321 --- /dev/null +++ b/sublime/Packages/SFTP/schemes/All Hallow's Eve.sftpTheme @@ -0,0 +1,101 @@ + + + + + author + Will Bond + name + SFTP Output + settings + + + settings + + background + #000000 + foreground + #FFFFFF + + + + name + Success + scope + success + settings + + foreground + #66CC33 + + + + name + Failure + scope + failure + settings + + foreground + #C83730 + + + + name + String + scope + string + settings + + foreground + #AAAAAA + + + + name + Date + scope + datediff + settings + + foreground + #9933CC + + + + name + Date + scope + date + settings + + foreground + #555555 + + + + name + Response + scope + response + settings + + foreground + #3387CC + + + + name + dots + scope + dots + settings + + foreground + #434242 + + + + uuid + 766026CB-703D-4610-B070-8DE07D967C5F + + diff --git a/sublime/Packages/SFTP/schemes/Amy.sftpTheme b/sublime/Packages/SFTP/schemes/Amy.sftpTheme new file mode 100644 index 0000000..354c460 --- /dev/null +++ b/sublime/Packages/SFTP/schemes/Amy.sftpTheme @@ -0,0 +1,101 @@ + + + + + author + Will Bond + name + SFTP Output + settings + + + settings + + background + #200020 + foreground + #D0D0FF + + + + name + Success + scope + success + settings + + foreground + #70E0A0 + + + + name + Failure + scope + failure + settings + + foreground + #A00050 + + + + name + String + scope + string + settings + + foreground + #A080FF + + + + name + Date + scope + datediff + settings + + foreground + #BFBFBF + + + + name + Date + scope + date + settings + + foreground + #805080 + + + + name + Response + scope + response + settings + + foreground + #80A0FF + + + + name + dots + scope + dots + settings + + foreground + #999999 + + + + uuid + 766026CB-703D-4610-B070-8DE07D967C5F + + diff --git a/sublime/Packages/SFTP/schemes/Blackboard.sftpTheme b/sublime/Packages/SFTP/schemes/Blackboard.sftpTheme new file mode 100644 index 0000000..20e9177 --- /dev/null +++ b/sublime/Packages/SFTP/schemes/Blackboard.sftpTheme @@ -0,0 +1,101 @@ + + + + + author + Will Bond + name + SFTP Output + settings + + + settings + + background + #0C1021 + foreground + #F8F8F8 + + + + name + Success + scope + success + settings + + foreground + #61CE3C + + + + name + Failure + scope + failure + settings + + foreground + #AB2A1D + + + + name + String + scope + string + settings + + foreground + #D5E0F3 + + + + name + Date + scope + datediff + settings + + foreground + #AEAEAE + + + + name + Date + scope + date + settings + + foreground + #7F90AA + + + + name + Response + scope + response + settings + + foreground + #8DA6CE + + + + name + dots + scope + dots + settings + + foreground + #7F90AA + + + + uuid + 766026CB-703D-4610-B070-8DE07D967C5F + + diff --git a/sublime/Packages/SFTP/schemes/Cobalt.sftpTheme b/sublime/Packages/SFTP/schemes/Cobalt.sftpTheme new file mode 100644 index 0000000..f941ead --- /dev/null +++ b/sublime/Packages/SFTP/schemes/Cobalt.sftpTheme @@ -0,0 +1,101 @@ + + + + + author + Will Bond + name + SFTP Output + settings + + + settings + + background + #002240 + foreground + #FFFFFF + + + + name + Success + scope + success + settings + + foreground + #3AD900 + + + + name + Failure + scope + failure + settings + + foreground + #FF1E00 + + + + name + String + scope + string + settings + + foreground + #C8E4FD + + + + name + Date + scope + datediff + settings + + foreground + #FFDD00 + + + + name + Date + scope + date + settings + + foreground + #73817D + + + + name + Response + scope + response + settings + + foreground + #0088FF + + + + name + dots + scope + dots + settings + + foreground + #8996A8 + + + + uuid + 766026CB-703D-4610-B070-8DE07D967C5F + + diff --git a/sublime/Packages/SFTP/schemes/Custom Output.hidden-tmLanguage b/sublime/Packages/SFTP/schemes/Custom Output.hidden-tmLanguage new file mode 100644 index 0000000..13c60ad --- /dev/null +++ b/sublime/Packages/SFTP/schemes/Custom Output.hidden-tmLanguage @@ -0,0 +1,102 @@ + + + + + fileTypes + + sftp-out + + keyEquivalent + ^~S + name + SFTP Output Panel - Custom + patterns + + + match + ( Yes|No)\n + name + support.constant.sftp + + + match + \.+ + name + comment.sftp + + + match + (?i:\bfailure\b) + name + constant.language.sftp + + + match + (?i:\bsuccess\b) + name + constant.language.sftp + + + captures + + 1 + + name + punctuation.definition.string.begin.sftp + + 2 + + name + punctuation.definition.string.end.sftp + + + match + (")[^"#]*(") + name + string.sftp + + + captures + + 1 + + name + datediff.begin.sftp + + 2 + + name + datediff.end.sftp + + + match + (\()(\d+|same age)[^\)]*(\)) + name + constant.numeric.sftp + + + captures + + 1 + + name + date.begin.sftp + + 2 + + name + date.end.sftp + + + match + (\[)(\d+|same age)[^\]]*(\]) + name + comment.sftp + + + scopeName + output.sftp + uuid + E3A415F0-3F50-11E0-9207-0800200C9A68 + + \ No newline at end of file diff --git a/sublime/Packages/SFTP/schemes/Dawn.sftpTheme b/sublime/Packages/SFTP/schemes/Dawn.sftpTheme new file mode 100644 index 0000000..c5d04cf --- /dev/null +++ b/sublime/Packages/SFTP/schemes/Dawn.sftpTheme @@ -0,0 +1,101 @@ + + + + + author + Will Bond + name + SFTP Output + settings + + + settings + + background + #F9F9F9 + foreground + #080808 + + + + name + Success + scope + success + settings + + foreground + #0B6125 + + + + name + Failure + scope + failure + settings + + foreground + #B4371F + + + + name + String + scope + string + settings + + foreground + #5A525F + + + + name + Date + scope + datediff + settings + + foreground + #691C97 + + + + name + Date + scope + date + settings + + foreground + #808080 + + + + name + Response + scope + response + settings + + foreground + #234A97 + + + + name + dots + scope + dots + settings + + foreground + #808080 + + + + uuid + 766026CB-703D-4610-B070-8DE07D967C5F + + diff --git a/sublime/Packages/SFTP/schemes/Eiffel.sftpTheme b/sublime/Packages/SFTP/schemes/Eiffel.sftpTheme new file mode 100644 index 0000000..20c230a --- /dev/null +++ b/sublime/Packages/SFTP/schemes/Eiffel.sftpTheme @@ -0,0 +1,101 @@ + + + + + author + Will Bond + name + SFTP Output + settings + + + settings + + background + #FFFFFF + foreground + #000000 + + + + name + Success + scope + success + settings + + foreground + #26B31A + + + + name + Failure + scope + failure + settings + + foreground + #D80800 + + + + name + String + scope + string + settings + + foreground + #6D79DE + + + + name + Date + scope + datediff + settings + + foreground + #B90690 + + + + name + Date + scope + date + settings + + foreground + #BFBFBF + + + + name + Response + scope + response + settings + + foreground + #0206FF + + + + name + dots + scope + dots + settings + + foreground + #BFBFBF + + + + uuid + 766026CB-703D-4610-B070-8DE07D967C5F + + diff --git a/sublime/Packages/SFTP/schemes/Espresso Libre.sftpTheme b/sublime/Packages/SFTP/schemes/Espresso Libre.sftpTheme new file mode 100644 index 0000000..76093e7 --- /dev/null +++ b/sublime/Packages/SFTP/schemes/Espresso Libre.sftpTheme @@ -0,0 +1,101 @@ + + + + + author + Will Bond + name + SFTP Output + settings + + + settings + + background + #2A211C + foreground + #BDAE9D + + + + name + Success + scope + success + settings + + foreground + #44AA43 + + + + name + Failure + scope + failure + settings + + foreground + #990000 + + + + name + String + scope + string + settings + + foreground + #BFBFBF + + + + name + Date + scope + datediff + settings + + foreground + #FF9358 + + + + name + Date + scope + date + settings + + foreground + #8F7E65 + + + + name + Response + scope + response + settings + + foreground + #0066FF + + + + name + dots + scope + dots + settings + + foreground + #8F7E65 + + + + uuid + 766026CB-703D-4610-B070-8DE07D967C5F + + diff --git a/sublime/Packages/SFTP/schemes/IDLE.sftpTheme b/sublime/Packages/SFTP/schemes/IDLE.sftpTheme new file mode 100644 index 0000000..d96966d --- /dev/null +++ b/sublime/Packages/SFTP/schemes/IDLE.sftpTheme @@ -0,0 +1,101 @@ + + + + + author + Will Bond + name + SFTP Output + settings + + + settings + + background + #FFFFFF + foreground + #000000 + + + + name + Success + scope + success + settings + + foreground + #00A33F + + + + name + Failure + scope + failure + settings + + foreground + #990000 + + + + name + String + scope + string + settings + + foreground + #21439C + + + + name + Date + scope + datediff + settings + + foreground + #A535AE + + + + name + Date + scope + date + settings + + foreground + #BFBFBF + + + + name + Response + scope + response + settings + + foreground + #FF5600 + + + + name + dots + scope + dots + settings + + foreground + #BFBFBF + + + + uuid + 766026CB-703D-4610-B070-8DE07D967C5F + + diff --git a/sublime/Packages/SFTP/schemes/LAZY.sftpTheme b/sublime/Packages/SFTP/schemes/LAZY.sftpTheme new file mode 100644 index 0000000..ed83db0 --- /dev/null +++ b/sublime/Packages/SFTP/schemes/LAZY.sftpTheme @@ -0,0 +1,101 @@ + + + + + author + Will Bond + name + SFTP Output + settings + + + settings + + background + #FFFFFF + foreground + #000000 + + + + name + Success + scope + success + settings + + foreground + #409B1C + + + + name + Failure + scope + failure + settings + + foreground + #D62A28 + + + + name + String + scope + string + settings + + foreground + #3B5BB5 + + + + name + Date + scope + datediff + settings + + foreground + #671EBB + + + + name + Date + scope + date + settings + + foreground + #7C7C7C + + + + name + Response + scope + response + settings + + foreground + #FF7800 + + + + name + dots + scope + dots + settings + + foreground + #B6B6B6 + + + + uuid + 766026CB-703D-4610-B070-8DE07D967C5F + + diff --git a/sublime/Packages/SFTP/schemes/Mac Classic.sftpTheme b/sublime/Packages/SFTP/schemes/Mac Classic.sftpTheme new file mode 100644 index 0000000..6685c2d --- /dev/null +++ b/sublime/Packages/SFTP/schemes/Mac Classic.sftpTheme @@ -0,0 +1,101 @@ + + + + + author + Will Bond + name + SFTP Output + settings + + + settings + + background + #FFFFFF + foreground + #000000 + + + + name + Success + scope + success + settings + + foreground + #036A07 + + + + name + Failure + scope + failure + settings + + foreground + #C5060B + + + + name + String + scope + string + settings + + foreground + #3C4C72 + + + + name + Date + scope + datediff + settings + + foreground + #585CF6 + + + + name + Date + scope + date + settings + + foreground + #888888 + + + + name + Response + scope + response + settings + + foreground + #B90690 + + + + name + dots + scope + dots + settings + + foreground + #888888 + + + + uuid + 766026CB-703D-4610-B070-8DE07D967C5F + + diff --git a/sublime/Packages/SFTP/schemes/MagicWB (Amiga).sftpTheme b/sublime/Packages/SFTP/schemes/MagicWB (Amiga).sftpTheme new file mode 100644 index 0000000..eea9d96 --- /dev/null +++ b/sublime/Packages/SFTP/schemes/MagicWB (Amiga).sftpTheme @@ -0,0 +1,103 @@ + + + + + author + Will Bond + name + SFTP Output + settings + + + settings + + background + #969696 + foreground + #000000 + + + + name + Success + scope + success + settings + + foreground + #3A68A3 + + + + name + Failure + scope + failure + settings + + foreground + #FF38FF + + + + name + String + scope + string + settings + + foreground + #FFFFFF + background + #FF000033 + + + + name + Date + scope + datediff + settings + + foreground + #FFA995 + + + + name + Date + scope + date + settings + + foreground + #4D4E60 + + + + name + Response + scope + response + settings + + foreground + #0000FF + + + + name + dots + scope + dots + settings + + foreground + #4D4E60 + + + + uuid + 766026CB-703D-4610-B070-8DE07D967C5F + + diff --git a/sublime/Packages/SFTP/schemes/Monokai Bright.sftpTheme b/sublime/Packages/SFTP/schemes/Monokai Bright.sftpTheme new file mode 100644 index 0000000..56f3a0b --- /dev/null +++ b/sublime/Packages/SFTP/schemes/Monokai Bright.sftpTheme @@ -0,0 +1,101 @@ + + + + + author + Will Bond + name + SFTP Output + settings + + + settings + + background + #272822 + foreground + #F8F8F2 + + + + name + Success + scope + success + settings + + foreground + #A6E22E + + + + name + Failure + scope + failure + settings + + foreground + #F92672 + + + + name + String + scope + string + settings + + foreground + #E6DB74 + + + + name + Date + scope + datediff + settings + + foreground + #AE81FF + + + + name + Date + scope + date + settings + + foreground + #75715E + + + + name + Response + scope + response + settings + + foreground + #66D9EF + + + + name + dots + scope + dots + settings + + foreground + #75715E + + + + uuid + 766026CB-703D-4610-B070-8DE07D967C5F + + diff --git a/sublime/Packages/SFTP/schemes/Monokai.sftpTheme b/sublime/Packages/SFTP/schemes/Monokai.sftpTheme new file mode 100644 index 0000000..56f3a0b --- /dev/null +++ b/sublime/Packages/SFTP/schemes/Monokai.sftpTheme @@ -0,0 +1,101 @@ + + + + + author + Will Bond + name + SFTP Output + settings + + + settings + + background + #272822 + foreground + #F8F8F2 + + + + name + Success + scope + success + settings + + foreground + #A6E22E + + + + name + Failure + scope + failure + settings + + foreground + #F92672 + + + + name + String + scope + string + settings + + foreground + #E6DB74 + + + + name + Date + scope + datediff + settings + + foreground + #AE81FF + + + + name + Date + scope + date + settings + + foreground + #75715E + + + + name + Response + scope + response + settings + + foreground + #66D9EF + + + + name + dots + scope + dots + settings + + foreground + #75715E + + + + uuid + 766026CB-703D-4610-B070-8DE07D967C5F + + diff --git a/sublime/Packages/SFTP/schemes/Output.hidden-tmLanguage b/sublime/Packages/SFTP/schemes/Output.hidden-tmLanguage new file mode 100644 index 0000000..84cc66c --- /dev/null +++ b/sublime/Packages/SFTP/schemes/Output.hidden-tmLanguage @@ -0,0 +1,108 @@ + + + + + fileTypes + + sftp-out + + keyEquivalent + ^~S + name + SFTP Output Panel + patterns + + + match + ( Yes|No)\n + name + response.sftp + + + match + \.+ + name + dots.sftp + + + match + (?i:\bfailure\b) + name + failure.sftp + + + match + (?i:\bsuccess\b) + name + success.sftp + + + match + ^UNREGISTERED: Please visit http://sublime.wbond.net/sftp + name + failure.sftp + + + captures + + 1 + + name + punctuation.definition.string.begin.sftp + + 2 + + name + punctuation.definition.string.end.sftp + + + match + (")[^"#]*(") + name + string.sftp + + + captures + + 1 + + name + datediff.begin.sftp + + 2 + + name + datediff.end.sftp + + + match + (\()(\d+|same age)[^\)]*(\)) + name + datediff.sftp + + + captures + + 1 + + name + date.begin.sftp + + 2 + + name + date.end.sftp + + + match + (\[)(\d+|same age)[^\]]*(\]) + name + date.sftp + + + scopeName + output.sftp + uuid + E3A415F0-3F50-11E0-9207-0800200C9A67 + + \ No newline at end of file diff --git a/sublime/Packages/SFTP/schemes/Output.tmLanguage b/sublime/Packages/SFTP/schemes/Output.tmLanguage new file mode 100644 index 0000000..84cc66c --- /dev/null +++ b/sublime/Packages/SFTP/schemes/Output.tmLanguage @@ -0,0 +1,108 @@ + + + + + fileTypes + + sftp-out + + keyEquivalent + ^~S + name + SFTP Output Panel + patterns + + + match + ( Yes|No)\n + name + response.sftp + + + match + \.+ + name + dots.sftp + + + match + (?i:\bfailure\b) + name + failure.sftp + + + match + (?i:\bsuccess\b) + name + success.sftp + + + match + ^UNREGISTERED: Please visit http://sublime.wbond.net/sftp + name + failure.sftp + + + captures + + 1 + + name + punctuation.definition.string.begin.sftp + + 2 + + name + punctuation.definition.string.end.sftp + + + match + (")[^"#]*(") + name + string.sftp + + + captures + + 1 + + name + datediff.begin.sftp + + 2 + + name + datediff.end.sftp + + + match + (\()(\d+|same age)[^\)]*(\)) + name + datediff.sftp + + + captures + + 1 + + name + date.begin.sftp + + 2 + + name + date.end.sftp + + + match + (\[)(\d+|same age)[^\]]*(\]) + name + date.sftp + + + scopeName + output.sftp + uuid + E3A415F0-3F50-11E0-9207-0800200C9A67 + + \ No newline at end of file diff --git a/sublime/Packages/SFTP/schemes/Pastels on Dark.sftpTheme b/sublime/Packages/SFTP/schemes/Pastels on Dark.sftpTheme new file mode 100644 index 0000000..fca2949 --- /dev/null +++ b/sublime/Packages/SFTP/schemes/Pastels on Dark.sftpTheme @@ -0,0 +1,101 @@ + + + + + author + Will Bond + name + SFTP Output + settings + + + settings + + background + #211E1E + foreground + #DADADA + + + + name + Success + scope + success + settings + + foreground + #B8CD06 + + + + name + Failure + scope + failure + settings + + foreground + #C82255 + + + + name + String + scope + string + settings + + foreground + #AD9361 + + + + name + Date + scope + datediff + settings + + foreground + #6969FA + + + + name + Date + scope + date + settings + + foreground + #909090 + + + + name + Response + scope + response + settings + + foreground + #47B8D6 + + + + name + dots + scope + dots + settings + + foreground + #777777 + + + + uuid + 766026CB-703D-4610-B070-8DE07D967C5F + + diff --git a/sublime/Packages/SFTP/schemes/Slush & Poppies.sftpTheme b/sublime/Packages/SFTP/schemes/Slush & Poppies.sftpTheme new file mode 100644 index 0000000..e98e168 --- /dev/null +++ b/sublime/Packages/SFTP/schemes/Slush & Poppies.sftpTheme @@ -0,0 +1,101 @@ + + + + + author + Will Bond + name + SFTP Output + settings + + + settings + + background + #F1F1F1 + foreground + #000000 + + + + name + Success + scope + success + settings + + foreground + #008080 + + + + name + Failure + scope + failure + settings + + foreground + #C03030 + + + + name + String + scope + string + settings + + foreground + #2060A0 + + + + name + Date + scope + datediff + settings + + foreground + #0080FF + + + + name + Date + scope + date + settings + + foreground + #999999 + + + + name + Response + scope + response + settings + + foreground + #8000C0 + + + + name + dots + scope + dots + settings + + foreground + #666666 + + + + uuid + 766026CB-703D-4610-B070-8DE07D967C5F + + diff --git a/sublime/Packages/SFTP/schemes/Solarized (Dark).sftpTheme b/sublime/Packages/SFTP/schemes/Solarized (Dark).sftpTheme new file mode 100644 index 0000000..e063973 --- /dev/null +++ b/sublime/Packages/SFTP/schemes/Solarized (Dark).sftpTheme @@ -0,0 +1,101 @@ + + + + + author + Will Bond + name + SFTP Output + settings + + + settings + + background + #042029 + foreground + #839496 + + + + name + Success + scope + success + settings + + foreground + #748B00 + + + + name + Failure + scope + failure + settings + + foreground + #B81D1C + + + + name + String + scope + string + settings + + foreground + #2AA198 + + + + name + Date + scope + datediff + settings + + foreground + #B58900 + + + + name + Date + scope + date + settings + + foreground + #536871 + + + + name + Response + scope + response + settings + + foreground + #5A74CF + + + + name + dots + scope + dots + settings + + foreground + #536871 + + + + uuid + 766026CB-703D-4610-B070-8DE07D967C5F + + diff --git a/sublime/Packages/SFTP/schemes/Solarized (Light).sftpTheme b/sublime/Packages/SFTP/schemes/Solarized (Light).sftpTheme new file mode 100644 index 0000000..4b7b10e --- /dev/null +++ b/sublime/Packages/SFTP/schemes/Solarized (Light).sftpTheme @@ -0,0 +1,101 @@ + + + + + author + Will Bond + name + SFTP Output + settings + + + settings + + background + #FDF6E3 + foreground + #586E75 + + + + name + Success + scope + success + settings + + foreground + #738A05 + + + + name + Failure + scope + failure + settings + + foreground + #BB3700 + + + + name + String + scope + string + settings + + foreground + #2AA198 + + + + name + Date + scope + datediff + settings + + foreground + #5A74CF + + + + name + Date + scope + date + settings + + foreground + #819090 + + + + name + Response + scope + response + settings + + foreground + #268BD2 + + + + name + dots + scope + dots + settings + + foreground + #B58900 + + + + uuid + 766026CB-703D-4610-B070-8DE07D967C5F + + diff --git a/sublime/Packages/SFTP/schemes/SpaceCadet.sftpTheme b/sublime/Packages/SFTP/schemes/SpaceCadet.sftpTheme new file mode 100644 index 0000000..796d1a9 --- /dev/null +++ b/sublime/Packages/SFTP/schemes/SpaceCadet.sftpTheme @@ -0,0 +1,101 @@ + + + + + author + Will Bond + name + SFTP Output + settings + + + settings + + background + #0D0D0D + foreground + #DDE6CF + + + + name + Success + scope + success + settings + + foreground + #9EBF60 + + + + name + Failure + scope + failure + settings + + foreground + #7F005D + + + + name + String + scope + string + settings + + foreground + #805978 + + + + name + Date + scope + datediff + settings + + foreground + #A8885A + + + + name + Date + scope + date + settings + + foreground + #999999 + + + + name + Response + scope + response + settings + + foreground + #6078BF + + + + name + dots + scope + dots + settings + + foreground + #596380 + + + + uuid + 766026CB-703D-4610-B070-8DE07D967C5F + + diff --git a/sublime/Packages/SFTP/schemes/Sunburst.sftpTheme b/sublime/Packages/SFTP/schemes/Sunburst.sftpTheme new file mode 100644 index 0000000..e16704b --- /dev/null +++ b/sublime/Packages/SFTP/schemes/Sunburst.sftpTheme @@ -0,0 +1,101 @@ + + + + + author + Will Bond + name + SFTP Output + settings + + + settings + + background + #000000 + foreground + #F8F8F8 + + + + name + Success + scope + success + settings + + foreground + #99CF50 + + + + name + Failure + scope + failure + settings + + foreground + #DD7B3B + + + + name + String + scope + string + settings + + foreground + #89BDFF + + + + name + Date + scope + datediff + settings + + foreground + #8693A5 + + + + name + Date + scope + date + settings + + foreground + #AEAEAE + + + + name + Response + scope + response + settings + + foreground + #CF7D34 + + + + name + dots + scope + dots + settings + + foreground + #676767 + + + + uuid + 766026CB-703D-4610-B070-8DE07D967C5F + + diff --git a/sublime/Packages/SFTP/schemes/Twilight.sftpTheme b/sublime/Packages/SFTP/schemes/Twilight.sftpTheme new file mode 100644 index 0000000..ed12f9a --- /dev/null +++ b/sublime/Packages/SFTP/schemes/Twilight.sftpTheme @@ -0,0 +1,101 @@ + + + + + author + Will Bond + name + SFTP Output + settings + + + settings + + background + #141414 + foreground + #F8F8F8 + + + + name + Success + scope + success + settings + + foreground + #8F9D6A + + + + name + Failure + scope + failure + settings + + foreground + #CF6A4C + + + + name + String + scope + string + settings + + foreground + #C5AF75 + + + + name + Date + scope + datediff + settings + + foreground + #9B703F + + + + name + Date + scope + date + settings + + foreground + #9B859D + + + + name + Response + scope + response + settings + + foreground + #7587A6 + + + + name + dots + scope + dots + settings + + foreground + #5F5A60 + + + + uuid + 766026CB-703D-4610-B070-8DE07D967C5F + + diff --git a/sublime/Packages/SFTP/schemes/Zenburnesque.sftpTheme b/sublime/Packages/SFTP/schemes/Zenburnesque.sftpTheme new file mode 100644 index 0000000..a563be4 --- /dev/null +++ b/sublime/Packages/SFTP/schemes/Zenburnesque.sftpTheme @@ -0,0 +1,101 @@ + + + + + author + Will Bond + name + SFTP Output + settings + + + settings + + background + #404040 + foreground + #DEDEDE + + + + name + Success + scope + success + settings + + foreground + #709070 + + + + name + Failure + scope + failure + settings + + foreground + #FF2020 + + + + name + String + scope + string + settings + + foreground + #A8A8A8 + + + + name + Date + scope + datediff + settings + + foreground + #FFFFA0 + + + + name + Date + scope + date + settings + + foreground + #A0A0C0 + + + + name + Response + scope + response + settings + + foreground + #6080FF + + + + name + dots + scope + dots + settings + + foreground + #676767 + + + + uuid + 766026CB-703D-4610-B070-8DE07D967C5F + + diff --git a/sublime/Packages/SFTP/schemes/iPlastic.sftpTheme b/sublime/Packages/SFTP/schemes/iPlastic.sftpTheme new file mode 100644 index 0000000..118162c --- /dev/null +++ b/sublime/Packages/SFTP/schemes/iPlastic.sftpTheme @@ -0,0 +1,101 @@ + + + + + author + Will Bond + name + SFTP Output + settings + + + settings + + background + #EEEEEE + foreground + #000000 + + + + name + Success + scope + success + settings + + foreground + #009933 + + + + name + Failure + scope + failure + settings + + foreground + #FF0000 + + + + name + String + scope + string + settings + + foreground + #0066FF + + + + name + Date + scope + datediff + settings + + foreground + #9700CC + + + + name + Date + scope + date + settings + + foreground + #666666 + + + + name + Response + scope + response + settings + + foreground + #FF8000 + + + + name + dots + scope + dots + settings + + foreground + #999999 + + + + uuid + 766026CB-703D-4610-B070-8DE07D967C5F + + diff --git a/sublime/Packages/User/Package Control.last-run b/sublime/Packages/User/Package Control.last-run index b24d6be..9d0c6f6 100644 --- a/sublime/Packages/User/Package Control.last-run +++ b/sublime/Packages/User/Package Control.last-run @@ -1 +1 @@ -1363369577 \ No newline at end of file +1370390066 \ No newline at end of file diff --git a/sublime/Packages/User/Package Control.sublime-settings b/sublime/Packages/User/Package Control.sublime-settings index 2d6ff63..17079bf 100644 --- a/sublime/Packages/User/Package Control.sublime-settings +++ b/sublime/Packages/User/Package Control.sublime-settings @@ -5,6 +5,8 @@ "AAAPackageDev", "LESS", "LineEndings", - "Package Control" + "Package Control", + "SFTP", + "Web Inspector" ] } diff --git a/sublime/Packages/User/Preferences.sublime-settings b/sublime/Packages/User/Preferences.sublime-settings index 08e836a..6da9b68 100644 --- a/sublime/Packages/User/Preferences.sublime-settings +++ b/sublime/Packages/User/Preferences.sublime-settings @@ -48,7 +48,8 @@ "highlight_modified_tabs": true, "ignored_packages": [ - "Vintage" + "Vintage", + "SFTP" ], "indent_to_bracket": true, "open_files_in_new_window": true, diff --git a/sublime/Packages/User/sftp_servers/dev.tapfortap.com b/sublime/Packages/User/sftp_servers/dev.tapfortap.com new file mode 100644 index 0000000..a308fa7 --- /dev/null +++ b/sublime/Packages/User/sftp_servers/dev.tapfortap.com @@ -0,0 +1,31 @@ +{ + // The tab key will cycle through the settings when first created + // Visit http://wbond.net/sublime_packages/sftp/settings for help + + // sftp, ftp or ftps + "type": "sftp", + + "sync_down_on_open": true, + + "host": "dev.tapfortap.com", + "user": "sjs", + //"password": "password", + //"port": "22", + + "remote_path": "/home/sjs/Dropbox/tapfortap/server-v2", + //"file_permissions": "664", + //"dir_permissions": "775", + + //"extra_list_connections": 0, + + "connect_timeout": 30, + //"keepalive": 120, + //"ftp_passive_mode": true, + "ssh_key_file": "~/.ssh/id_rsa", + //"sftp_flags": ["-F", "/path/to/ssh_config"], + + //"preserve_modification_times": false, + //"remote_time_offset_in_hours": 0, + //"remote_encoding": "utf-8", + //"remote_locale": "C", +} diff --git a/sublime/Packages/User/swi.sublime-settings b/sublime/Packages/User/swi.sublime-settings new file mode 100644 index 0000000..7c21565 --- /dev/null +++ b/sublime/Packages/User/swi.sublime-settings @@ -0,0 +1,5 @@ +{ + "breaks": + { + } +} diff --git a/sublime/Packages/Web Inspector/.gitignore b/sublime/Packages/Web Inspector/.gitignore new file mode 100644 index 0000000..0d20b64 --- /dev/null +++ b/sublime/Packages/Web Inspector/.gitignore @@ -0,0 +1 @@ +*.pyc diff --git a/sublime/Packages/Web Inspector/Default (Linux).sublime-keymap b/sublime/Packages/Web Inspector/Default (Linux).sublime-keymap new file mode 100644 index 0000000..e4e2bbd --- /dev/null +++ b/sublime/Packages/Web Inspector/Default (Linux).sublime-keymap @@ -0,0 +1,3 @@ +[ + {"keys": ["ctrl+shift+r"], "command": "swi_debug" } +] diff --git a/sublime/Packages/Web Inspector/Default (OSX).sublime-keymap b/sublime/Packages/Web Inspector/Default (OSX).sublime-keymap new file mode 100644 index 0000000..8684bd4 --- /dev/null +++ b/sublime/Packages/Web Inspector/Default (OSX).sublime-keymap @@ -0,0 +1,3 @@ +[ + {"keys": ["super+shift+r"], "command": "swi_debug" } +] diff --git a/sublime/Packages/Web Inspector/Default (Windows).sublime-keymap b/sublime/Packages/Web Inspector/Default (Windows).sublime-keymap new file mode 100644 index 0000000..e4e2bbd --- /dev/null +++ b/sublime/Packages/Web Inspector/Default (Windows).sublime-keymap @@ -0,0 +1,3 @@ +[ + {"keys": ["ctrl+shift+r"], "command": "swi_debug" } +] diff --git a/sublime/Packages/Web Inspector/Default.sublime-commands b/sublime/Packages/Web Inspector/Default.sublime-commands new file mode 100644 index 0000000..da4f7da --- /dev/null +++ b/sublime/Packages/Web Inspector/Default.sublime-commands @@ -0,0 +1,6 @@ +[ + { + "caption": "Web Inspector", + "command": "swi_debug" + } +] diff --git a/sublime/Packages/Web Inspector/Main.sublime-menu b/sublime/Packages/Web Inspector/Main.sublime-menu new file mode 100644 index 0000000..fec0139 --- /dev/null +++ b/sublime/Packages/Web Inspector/Main.sublime-menu @@ -0,0 +1,85 @@ +[ + { + "caption": "Preferences", + "mnemonic": "n", + "id": "preferences", + "children": + [ + { + "caption": "Package Settings", + "mnemonic": "P", + "id": "package-settings", + "children": + [ + { + "caption": "Web Inspector", + "children": + [ + { + "command": "open_file", + "args": { + "file": "${packages}/Web Inspector/Default (OSX).sublime-keymap", + "platform": "OSX" + }, + "caption": "Key Bindings – Default" + }, + { + "command": "open_file", + "args": { + "file": "${packages}/Web Inspector/Default (Linux).sublime-keymap", + "platform": "Linux" + }, + "caption": "Key Bindings – Default" + }, + { + "command": "open_file", + "args": { + "file": "${packages}/Web Inspector/Default (Windows).sublime-keymap", + "platform": "Windows" + }, + "caption": "Key Bindings – Default" + }, + { + "command": "open_file", + "args": { + "file": "${packages}/User/Default (OSX).sublime-keymap", + "platform": "OSX" + }, + "caption": "Key Bindings – User" + }, + { + "command": "open_file", + "args": { + "file": "${packages}/User/Default (Linux).sublime-keymap", + "platform": "Linux" + }, + "caption": "Key Bindings – User" + }, + { + "command": "open_file", + "args": { + "file": "${packages}/User/Default (Windows).sublime-keymap", + "platform": "Windows" + }, + "caption": "Key Bindings – User" + }, + { "caption": "-" }, + { + "command": "open_file", + "args": {"file": "${packages}/Web Inspector/swi.sublime-settings"}, + "caption": "Settings – Default" + }, + { + "command": "open_file", + "args": {"file": "${packages}/User/swi.sublime-settings"}, + "caption": "Settings – User" + }, + { "caption": "-" } + + ] + } + ] + } + ] + } +] diff --git a/sublime/Packages/Web Inspector/README.markdown b/sublime/Packages/Web Inspector/README.markdown new file mode 100644 index 0000000..05a246a --- /dev/null +++ b/sublime/Packages/Web Inspector/README.markdown @@ -0,0 +1,51 @@ +# Sublime Web Inpsector (SWI) + +Sublime Web Inspector works on top of WebInspectorProtocol. All information is displayed in console and text files. You can click on objects from console or stack trace to evaluate them. You can click on file name to goto file and line instantly. All clickable zone have borders to simply vizualize them. + +All feature request and bugs you can add to https://github.com/sokolovstas/SublimeWebInspector/issues + +*Thanks XDebug Authors for inspiration* + +## Instalation +Do in your Packages folder: +```git clone git://github.com/sokolovstas/SublimeWebInspector.git Web\ Inpsector``` + +I prepare plugin to Package Manager after some testing + +## Features + +- Breakpoints for project stored in user settings with absolute paths. +- Console. +- Debugger steps and breakpoints. +- Stack trace. +- You can see object properties and values in console and stack trace. + +## Commands + +All commands you can find in "Sublime Web Inspector" command. And here a complete list: + +### Command for controlling debugger +- swi\_debug\_resume +- swi\_debug\_step\_into +- swi\_debug\_step\_out +- swi\_debug\_step\_over + +### Breakpoints +- swi\_debug\_breakpoint + +### Page +- swi\_debug\_reload + +### Start-stop +- swi\_debug\_start +- swi\_debug\_stop + +### Utils +- swi\_debug\_start\_chrome + +## Settings + +In settings you can change layouts for debugger, some color and path to Google Chrome + +## PS +*Close Google Chrome befor run it in remote debugger mode.* diff --git a/sublime/Packages/Web Inspector/icons/breakpoint_active.png b/sublime/Packages/Web Inspector/icons/breakpoint_active.png new file mode 100644 index 0000000000000000000000000000000000000000..c25cb18d82dd9ec5f1ea88a82e64e57a51e1e110 GIT binary patch literal 6917 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 literal 0 HcmV?d00001 diff --git a/sublime/Packages/Web Inspector/icons/breakpoint_active.psd b/sublime/Packages/Web Inspector/icons/breakpoint_active.psd new file mode 100644 index 0000000000000000000000000000000000000000..db6aa5b56b0f8794c95d1091d58b8778a4ff4b65 GIT binary patch literal 27000 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 IA7yv(A5n-z3IG5A literal 0 HcmV?d00001 diff --git a/sublime/Packages/Web Inspector/icons/breakpoint_inactive.png b/sublime/Packages/Web Inspector/icons/breakpoint_inactive.png new file mode 100644 index 0000000000000000000000000000000000000000..b8a47bbdb06f2c55e429d69d8dcbfda4233776ad GIT binary patch literal 6917 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 literal 0 HcmV?d00001 diff --git a/sublime/Packages/Web Inspector/messages.json b/sublime/Packages/Web Inspector/messages.json new file mode 100644 index 0000000..d405454 --- /dev/null +++ b/sublime/Packages/Web Inspector/messages.json @@ -0,0 +1,4 @@ +{ + "install": "messages/install.txt", + "1.2.1": "messages/1.2.1.txt" +} \ No newline at end of file diff --git a/sublime/Packages/Web Inspector/messages/1.2.1.txt b/sublime/Packages/Web Inspector/messages/1.2.1.txt new file mode 100644 index 0000000..38b690f --- /dev/null +++ b/sublime/Packages/Web Inspector/messages/1.2.1.txt @@ -0,0 +1,4 @@ +Added stack trace to console +Fix message displaying in console + +Moved to custom packages.json \ No newline at end of file diff --git a/sublime/Packages/Web Inspector/messages/1.4.txt b/sublime/Packages/Web Inspector/messages/1.4.txt new file mode 100644 index 0000000..fb8a6b6 --- /dev/null +++ b/sublime/Packages/Web Inspector/messages/1.4.txt @@ -0,0 +1,3 @@ +Moved to packages.json +Fixes some bugs +Fix fall out on resume \ No newline at end of file diff --git a/sublime/Packages/Web Inspector/messages/install.txt b/sublime/Packages/Web Inspector/messages/install.txt new file mode 100644 index 0000000..f831228 --- /dev/null +++ b/sublime/Packages/Web Inspector/messages/install.txt @@ -0,0 +1,3 @@ +Use Web Inspector command. + +More details http://sokolovstas.github.com/SublimeWebInspector/ \ No newline at end of file diff --git a/sublime/Packages/Web Inspector/package-metadata.json b/sublime/Packages/Web Inspector/package-metadata.json new file mode 100644 index 0000000..595aacd --- /dev/null +++ b/sublime/Packages/Web Inspector/package-metadata.json @@ -0,0 +1 @@ +{"url": "http://sokolovstas.github.com/SublimeWebInspector", "version": "1.4", "description": "JavaScript debbuging in Sublime Text"} \ No newline at end of file diff --git a/sublime/Packages/Web Inspector/packages.json b/sublime/Packages/Web Inspector/packages.json new file mode 100644 index 0000000..d797b82 --- /dev/null +++ b/sublime/Packages/Web Inspector/packages.json @@ -0,0 +1,20 @@ +{ + "schema_version": "1.2", + "packages": [ + { + "name": "Web Inspector", + "description": "JavaScript debbuging in Sublime Text", + "author": "Stanislav Sokolov", + "homepage": "http://sokolovstas.github.com/SublimeWebInspector", + "last_modified": "2012-02-28 00:00:00", + "platforms": { + "*": [ + { + "version": "1.4", + "url": "https://nodeload.github.com/sokolovstas/SublimeWebInspector/zip/1.4" + } + ] + } + } + ] +} \ No newline at end of file diff --git a/sublime/Packages/Web Inspector/swi.py b/sublime/Packages/Web Inspector/swi.py new file mode 100644 index 0000000..bac70b3 --- /dev/null +++ b/sublime/Packages/Web Inspector/swi.py @@ -0,0 +1,1264 @@ +import hashlib +import functools +import glob +import sublime +import sublime_plugin +import websocket +import urllib2 +import threading +import json +import types +import os +import re +import wip +import time +from wip import utils +from wip import Console +from wip import Runtime +from wip import Debugger +from wip import Network +from wip import Page +import sys + +reload(sys.modules['wip.utils']) +reload(sys.modules['wip.Console']) +reload(sys.modules['wip.Runtime']) +reload(sys.modules['wip.Debugger']) +reload(sys.modules['wip.Network']) +reload(sys.modules['wip.Page']) + +brk_object = {} +buffers = {} +protocol = None +original_layout = None +window = None +debug_view = None +debug_url = None +file_to_scriptId = [] +project_folders = [] +last_clicked = None +paused = False +current_line = None +reload_on_start = False +reload_on_save = False +set_script_source = False +current_call_frame = None +current_call_frame_position = None +open_stack_current_in_new_tab = True +timing = time.time() + + +# scriptId_fileName = {} + +breakpoint_active_icon = '../Web Inspector/icons/breakpoint_active' +breakpoint_inactive_icon = '../Web Inspector/icons/breakpoint_inactive' +breakpoint_current_icon = '../Web Inspector/icons/breakpoint_current' + + +#################################################################################### +# PROTOCOL +#################################################################################### + +# Define protocol to communicate with remote debugger by web sockets +class Protocol(object): + def __init__(self): + self.next_id = 0 + self.commands = {} + self.notifications = {} + self.last_log_object = None + + def connect(self, url, on_open=None, on_close=None): + print 'SWI: Connecting to ' + url + websocket.enableTrace(False) + self.last_break = None + self.last_log_object = None + self.url = url + self.on_open = on_open + self.on_close = on_close + thread = threading.Thread(target=self.thread_callback) + thread.start() + + # start connect with new thread + def thread_callback(self): + print 'SWI: Thread started' + self.socket = websocket.WebSocketApp(self.url, on_message=self.message_callback, on_open=self.open_callback, on_close=self.close_callback) + self.socket.run_forever() + print 'SWI: Thread stoped' + + # send command and increment command counter + def send(self, command, callback=None, options=None): + command.id = self.next_id + command.callback = callback + command.options = options + self.commands[command.id] = command + self.next_id += 1 + # print 'SWI: ->> ' + json.dumps(command.request) + self.socket.send(json.dumps(command.request)) + + # subscribe to notification with callback + def subscribe(self, notification, callback): + notification.callback = callback + self.notifications[notification.name] = notification + + # unsubscribe + def unsubscribe(self, notification): + del self.notifications[notification.name] + + # unsubscribe + def message_callback(self, ws, message): + parsed = json.loads(message) + # print 'SWI: <<- ' + message + # print '' + if 'method' in parsed: + if parsed['method'] in self.notifications: + notification = self.notifications[parsed['method']] + if 'params' in parsed: + data = notification.parser(parsed['params']) + else: + data = None + notification.callback(data, notification) + # else: + # print 'SWI: New unsubscrib notification --- ' + parsed['method'] + else: + if parsed['id'] in self.commands: + + command = self.commands[parsed['id']] + + if 'error' in parsed: + sublime.set_timeout(lambda: sublime.error_message(parsed['error']['message']), 0) + else: + if 'result' in parsed: + command.data = command.parser(parsed['result']) + else: + command.data = None + + if command.callback: + command.callback(command) + # print 'SWI: Command response with ID ' + str(parsed['id']) + + def open_callback(self, ws): + if self.on_open: + self.on_open() + print 'SWI: WebSocket opened' + + def close_callback(self, ws): + if self.on_close: + self.on_close() + print 'SWI: WebSocket closed' + + +#################################################################################### +# COMMANDS +#################################################################################### + +class SwiDebugCommand(sublime_plugin.TextCommand): + ''' + The SWIdebug main quick panel menu + ''' + def run(self, editswi): + mapping = {} + try: + urllib2.urlopen('http://127.0.0.1:' + get_setting('chrome_remote_port') + '/json') + + mapping = {} + + if paused: + mapping['swi_debug_resume'] = 'Resume execution' + mapping['swi_debug_evaluate_on_call_frame'] = 'Evaluate selection' + #mapping['swi_debug_step_into'] = 'Step into' + #mapping['swi_debug_step_out'] = 'Step out' + #mapping['swi_debug_step_over'] = 'Step over' + else: + #mapping['swi_debug_clear_all_breakpoint'] = 'Clear all Breakpoints' + mapping['swi_debug_breakpoint'] = 'Add/Remove Breakpoint' + + if protocol: + mapping['swi_debug_clear_console'] = 'Clear console' + mapping['swi_debug_stop'] = 'Stop debugging' + mapping['swi_debug_reload'] = 'Reload page' + else: + mapping['swi_debug_start'] = 'Start debugging' + except: + mapping['swi_debug_start_chrome'] = 'Start Google Chrome with remote debug port ' + get_setting('chrome_remote_port') + + self.cmds = mapping.keys() + self.items = mapping.values() + self.view.window().show_quick_panel(self.items, self.command_selected) + + def command_selected(self, index): + if index == -1: + return + + command = self.cmds[index] + + if command == 'swi_debug_start': + response = urllib2.urlopen('http://127.0.0.1:' + get_setting('chrome_remote_port') + '/json') + pages = json.loads(response.read()) + mapping = {} + for page in pages: + if 'webSocketDebuggerUrl' in page: + if page['url'].find('chrome-extension://') == -1: + mapping[page['webSocketDebuggerUrl']] = page['url'] + + self.urls = mapping.keys() + items = mapping.values() + self.view.window().show_quick_panel(items, self.remote_debug_url_selected) + return + + self.view.run_command(command) + + def remote_debug_url_selected(self, index): + if index == -1: + return + + url = self.urls[index] + + global window + window = sublime.active_window() + + global original_layout + original_layout = window.get_layout() + + global debug_view + debug_view = window.active_view() + + window.set_layout(get_setting('console_layout')) + + load_breaks() + self.view.run_command('swi_debug_start', {'url': url}) + + +class SwiDebugStartChromeCommand(sublime_plugin.TextCommand): + def run(self, edit): + window = sublime.active_window() + + window.run_command('exec', { + "cmd": [os.getenv('GOOGLE_CHROME_PATH', '')+get_setting('chrome_path')[sublime.platform()], '--remote-debugging-port=' + get_setting('chrome_remote_port')] + }) + + +class SwiDebugStartCommand(sublime_plugin.TextCommand): + + def run(self, edit, url): + global file_to_scriptId + file_to_scriptId = [] + window = sublime.active_window() + global project_folders + project_folders = window.folders() + print 'Starting SWI' + self.url = url + global protocol + if(protocol): + print 'SWI: Socket closed' + protocol.socket.close() + else: + print 'SWI: Creating protocol' + protocol = Protocol() + protocol.connect(self.url, self.connected, self.disconnected) + + global reload_on_start + reload_on_start = get_setting('reload_on_start') + + global reload_on_save + reload_on_save = get_setting('reload_on_save') + + global set_script_source + set_script_source = get_setting('set_script_source') + + global open_stack_current_in_new_tab + open_stack_current_in_new_tab = get_setting('open_stack_current_in_new_tab') + + def connected(self): + protocol.subscribe(wip.Console.messageAdded(), self.messageAdded) + protocol.subscribe(wip.Console.messageRepeatCountUpdated(), self.messageRepeatCountUpdated) + protocol.subscribe(wip.Console.messagesCleared(), self.messagesCleared) + protocol.subscribe(wip.Debugger.scriptParsed(), self.scriptParsed) + protocol.subscribe(wip.Debugger.paused(), self.paused) + protocol.subscribe(wip.Debugger.resumed(), self.resumed) + protocol.send(wip.Debugger.enable()) + protocol.send(wip.Console.enable()) + protocol.send(wip.Debugger.canSetScriptSource(), self.canSetScriptSource) + if reload_on_start: + protocol.send(wip.Network.clearBrowserCache()) + protocol.send(wip.Page.reload(), on_reload) + + def disconnected(self): + sublime.set_timeout(lambda: debug_view.run_command('swi_debug_stop'), 0) + + def messageAdded(self, data, notification): + sublime.set_timeout(lambda: console_add_message(data), 0) + + def messageRepeatCountUpdated(self, data, notification): + sublime.set_timeout(lambda: console_repeat_message(data['count']), 0) + + def messagesCleared(self, data, notification): + sublime.set_timeout(lambda: clear_view('console'), 0) + + def scriptParsed(self, data, notification): + url = data['url'] + if url != '': + url_parts = url.split("/") + scriptId = str(data['scriptId']) + file_name = '' + + script = get_script(data['url']) + + if script: + script['scriptId'] = str(scriptId) + file_name = script['file'] + else: + del url_parts[0:3] + while len(url_parts) > 0: + for folder in project_folders: + if sublime.platform() == "windows": + files = glob.glob(folder + "\\" + "\\".join(url_parts)) + else: + files = glob.glob(folder + "/" + "/".join(url_parts)) + + if len(files) > 0 and files[0] != '': + file_name = files[0] + file_to_scriptId.append({'file': file_name, 'scriptId': str(scriptId), 'sha1': hashlib.sha1(data['url']).hexdigest()}) + del url_parts[0] + + if get_breakpoints_by_full_path(file_name): + for line in get_breakpoints_by_full_path(file_name).keys(): + location = wip.Debugger.Location({'lineNumber': int(line), 'scriptId': scriptId}) + protocol.send(wip.Debugger.setBreakpoint(location), self.breakpointAdded) + + def paused(self, data, notification): + sublime.set_timeout(lambda: window.set_layout(get_setting('stack_layout')), 0) + + sublime.set_timeout(lambda: console_show_stack(data['callFrames']), 0) + + scriptId = data['callFrames'][0].location.scriptId + line_number = data['callFrames'][0].location.lineNumber + file_name = find_script(str(scriptId)) + first_scope = data['callFrames'][0].scopeChain[0] + + if open_stack_current_in_new_tab: + title = {'objectId': first_scope.object.objectId, 'name': "%s:%s (%s)" % (file_name, line_number, first_scope.type)} + else: + title = {'objectId': first_scope.object.objectId, 'name': "Breakpoint Local"} + + global current_call_frame + current_call_frame = data['callFrames'][0].callFrameId + + global current_call_frame_position + current_call_frame_position = "%s:%s" % (file_name, line_number) + + sublime.set_timeout(lambda: protocol.send(wip.Runtime.getProperties(first_scope.object.objectId, True), console_add_properties, title), 30) + sublime.set_timeout(lambda: open_script_and_focus_line(scriptId, line_number), 100) + + global paused + paused = True + + def resumed(self, data, notification): + sublime.set_timeout(lambda: clear_view('stack'), 0) + + global current_line + current_line = None + + global current_call_frame + current_call_frame = None + + global current_call_frame_position + current_call_frame_position = None + + sublime.set_timeout(lambda: lookup_view(self.view).view_breakpoints(), 50) + + global paused + paused = False + + def breakpointAdded(self, command): + breakpointId = command.data['breakpointId'] + scriptId = command.data['actualLocation'].scriptId + lineNumber = command.data['actualLocation'].lineNumber + + try: + breakpoint = get_breakpoints_by_scriptId(str(scriptId))[str(lineNumber)] + breakpoint['status'] = 'enabled' + breakpoint['breakpointId'] = str(breakpointId) + except: + pass + + try: + breaks = get_breakpoints_by_scriptId(str(scriptId))[str(lineNumber)] + + lineNumber = str(lineNumber) + lineNumberSend = str(command.params['lineNumber']) + + if lineNumberSend in breaks and lineNumber != lineNumberSend: + breaks[lineNumber] = breaks[lineNumberSend].copy() + del breaks[lineNumberSend] + + breaks[lineNumber]['status'] = 'enabled' + breaks[lineNumber]['breakpointId'] = str(breakpointId) + except: + pass + + sublime.set_timeout(lambda: save_breaks(), 0) + sublime.set_timeout(lambda: lookup_view(self.view).view_breakpoints(), 0) + + def canSetScriptSource(self, command): + global set_script_source + if set_script_source: + set_script_source = command.data['result'] + + +class SwiDebugResumeCommand(sublime_plugin.TextCommand): + + def run(self, edit): + protocol.send(wip.Debugger.resume()) + + +class SwiDebugStepIntoCommand(sublime_plugin.TextCommand): + + def run(self, edit): + protocol.send(wip.Debugger.stepInto()) + + +class SwiDebugStepOutCommand(sublime_plugin.TextCommand): + + def run(self, edit): + protocol.send(wip.Debugger.stepOut()) + + +class SwiDebugStepOverCommand(sublime_plugin.TextCommand): + + def run(self, edit): + protocol.send(wip.Debugger.stepOver()) + + +class SwiDebugClearConsoleCommand(sublime_plugin.TextCommand): + + def run(self, edit): + sublime.set_timeout(lambda: clear_view('console'), 0) + + +class SwiDebugEvaluateOnCallFrameCommand(sublime_plugin.TextCommand): + + def run(self, edit): + for region in self.view.sel(): + title = self.view.substr(region) + if current_call_frame_position: + title = "%s on %s" % (self.view.substr(region), current_call_frame_position) + protocol.send(wip.Debugger.evaluateOnCallFrame(current_call_frame, self.view.substr(region)), self.evaluated, {'name': title}) + + def evaluated(self, command): + if command.data.type == 'object': + protocol.send(wip.Runtime.getProperties(command.data.objectId, True), console_add_properties, command.options) + else: + sublime.set_timeout(lambda: console_add_evaluate(command.data), 0) + + +class SwiDebugBreakpointCommand(sublime_plugin.TextCommand): + ''' + Toggle a breakpoint + ''' + def run(self, edit): + view = lookup_view(self.view) + row = str(view.rows(view.lines())[0]) + init_breakpoint_for_file(view.file_name()) + breaks = get_breakpoints_by_full_path(view.file_name()) + if row in breaks: + if protocol: + if row in breaks: + protocol.send(wip.Debugger.removeBreakpoint(breaks[row]['breakpointId'])) + + del_breakpoint_by_full_path(view.file_name(), row) + else: + if protocol: + scriptId = find_script(view.file_name()) + if scriptId: + location = wip.Debugger.Location({'lineNumber': int(row), 'scriptId': scriptId}) + protocol.send(wip.Debugger.setBreakpoint(location), self.breakpointAdded, view.file_name()) + else: + set_breakpoint_by_full_path(view.file_name(), row) + + view.view_breakpoints() + + def breakpointAdded(self, command): + breakpointId = command.data['breakpointId'] + scriptId = command.data['actualLocation'].scriptId + lineNumber = command.data['actualLocation'].lineNumber + + init_breakpoint_for_file(command.options) + + sublime.set_timeout(lambda: set_breakpoint_by_scriptId(str(scriptId), str(lineNumber), 'enabled', breakpointId), 0) + # Scroll to position where breakpoints have resolved + sublime.set_timeout(lambda: lookup_view(self.view).view_breakpoints(), 0) + + +class SwiDebugStopCommand(sublime_plugin.TextCommand): + + def run(self, edit): + global window + + window.focus_group(1) + for view in window.views_in_group(1): + window.run_command("close") + + window.focus_group(2) + for view in window.views_in_group(2): + window.run_command("close") + + window.set_layout(original_layout) + + disable_all_breakpoints() + + lookup_view(self.view).view_breakpoints() + + global paused + paused = False + + global current_line + current_line = None + sublime.set_timeout(lambda: lookup_view(self.view).view_breakpoints(), 0) + + global protocol + if protocol: + try: + protocol.socket.close() + except: + print 'SWI: Can\'t close soket' + finally: + protocol = None + + +class SwiDebugReloadCommand(sublime_plugin.TextCommand): + def run(self, view): + if(protocol): + protocol.send(wip.Network.clearBrowserCache()) + protocol.send(wip.Page.reload(), on_reload) + + +#################################################################################### +# VIEW +#################################################################################### + +class SwiDebugView(object): + ''' + The SWIDebugView is sort of a normal view with some convenience methods. + + See lookup_view. + ''' + def __init__(self, view): + self.view = view + self.context_data = {} + self.clicks = [] + self.prev_click_position = 0 + + def __getattr__(self, attr): + if hasattr(self.view, attr): + return getattr(self.view, attr) + if attr.startswith('on_'): + return self + raise(AttributeError, "%s does not exist" % attr) + + def __call__(self, *args, **kwargs): + pass + + def uri(self): + return 'file://' + os.path.realpath(self.view.file_name()) + + def lines(self, data=None): + lines = [] + if data is None: + regions = self.view.sel() + else: + if type(data) != types.ListType: + data = [data] + regions = [] + for item in data: + if type(item) == types.IntType or item.isdigit(): + regions.append(self.view.line(self.view.text_point(int(item) - 1, 0))) + else: + regions.append(item) + for region in regions: + lines.extend(self.view.split_by_newlines(region)) + return [self.view.line(line) for line in lines] + + def rows(self, lines): + if not type(lines) == types.ListType: + lines = [lines] + return [self.view.rowcol(line.begin())[0] + 1 for line in lines] + + def insert_click(self, a, b, click_type, data): + insert_before = 0 + new_region = sublime.Region(a, b) + regions = self.view.get_regions('swi_log_clicks') + for region in regions: + if new_region.b < region.a: + break + insert_before += 1 + + self.clicks.insert(insert_before, {'click_type': click_type, 'data': data}) + + regions.append(new_region) + self.view.add_regions('swi_log_clicks', regions, get_setting('interactive_scope'), sublime.DRAW_EMPTY_AS_OVERWRITE | sublime.DRAW_OUTLINED) + + def print_click(self, edit, position, text, click_type, data): + insert_length = self.insert(edit, position, text) + self.insert_click(position, position + insert_length, click_type, data) + + def remove_click(self, index): + regions = self.view.get_regions('swi_log_clicks') + del regions[index] + self.view.add_regions('swi_log_clicks', regions, get_setting('interactive_scope'), sublime.DRAW_EMPTY_AS_OVERWRITE | sublime.DRAW_OUTLINED) + + def clear_clicks(self): + self.clicks = [] + + def view_breakpoints(self): + self.view.erase_regions('swi_breakpoint_inactive') + self.view.erase_regions('swi_breakpoint_active') + self.view.erase_regions('swi_breakpoint_current') + + if not self.view.file_name(): + return + + breaks = get_breakpoints_by_full_path(self.view.file_name()) + + if not breaks: + return + + enabled = [] + disabled = [] + + for key in breaks.keys(): + if breaks[key]['status'] == 'enabled' and str(current_line) != key: + enabled.append(key) + if breaks[key]['status'] == 'disabled' and str(current_line) != key: + disabled.append(key) + + self.view.add_regions('swi_breakpoint_active', self.lines(enabled), get_setting('breakpoint_scope'), breakpoint_active_icon, sublime.HIDDEN) + self.view.add_regions('swi_breakpoint_inactive', self.lines(disabled), get_setting('breakpoint_scope'), breakpoint_inactive_icon, sublime.HIDDEN) + if current_line: + self.view.add_regions('swi_breakpoint_current', self.lines([current_line]), get_setting('current_line_scope'), breakpoint_current_icon, sublime.DRAW_EMPTY) + + def check_click(self): + if not self.name().startswith('SWI'): + return + + cursor = self.sel()[0].a + + if cursor == self.prev_click_position: + return + + self.prev_click_position = cursor + click_counter = 0 + click_regions = self.get_regions('swi_log_clicks') + for click in click_regions: + if cursor > click.a and cursor < click.b: + + if click_counter < len(self.clicks): + click = self.clicks[click_counter] + + if click['click_type'] == 'goto_file_line': + open_script_and_focus_line(click['data']['scriptId'], click['data']['line']) + + if click['click_type'] == 'goto_call_frame': + callFrame = click['data']['callFrame'] + + scriptId = callFrame.location.scriptId + line_number = callFrame.location.lineNumber + file_name = find_script(str(scriptId)) + + open_script_and_focus_line(scriptId, line_number) + + first_scope = callFrame.scopeChain[0] + + if open_stack_current_in_new_tab: + title = {'objectId': first_scope.object.objectId, 'name': "%s:%s (%s)" % (file_name.split('/')[-1], line_number, first_scope.type)} + else: + title = {'objectId': first_scope.object.objectId, 'name': "Breakpoint Local"} + + sublime.set_timeout(lambda: protocol.send(wip.Runtime.getProperties(first_scope.object.objectId, True), console_add_properties, title), 30) + + global current_call_frame + current_call_frame = callFrame.callFrameId + + global current_call_frame_position + current_call_frame_position = "%s:%s" % (file_name.split('/')[-1], line_number) + + if click['click_type'] == 'get_params': + if protocol: + protocol.send(wip.Runtime.getProperties(click['data']['objectId'], True), console_add_properties, click['data']) + + if click['click_type'] == 'command': + self.remove_click(click_counter) + self.run_command(click['data']) + + click_counter += 1 + + +def lookup_view(v): + ''' + Convert a Sublime View into an SWIDebugView + ''' + if isinstance(v, SwiDebugView): + return v + if isinstance(v, sublime.View): + id = v.buffer_id() + if id in buffers: + buffers[id].view = v + else: + buffers[id] = SwiDebugView(v) + return buffers[id] + return None + + +#################################################################################### +# EventListener +#################################################################################### + +class EventListener(sublime_plugin.EventListener): + def on_new(self, view): + lookup_view(view).on_new() + + def on_clone(self, view): + lookup_view(view).on_clone() + + def on_load(self, view): + lookup_view(view).view_breakpoints() + lookup_view(view).on_load() + + def on_close(self, view): + lookup_view(view).on_close() + + def on_pre_save(self, view): + lookup_view(view).on_pre_save() + + def on_post_save(self, view): + print view.file_name().find('.js') + if protocol and reload_on_save: + protocol.send(wip.Network.clearBrowserCache()) + if view.file_name().find('.css') > 0 or view.file_name().find('.less') > 0 or view.file_name().find('.sass') > 0 or view.file_name().find('.scss') > 0: + protocol.send(wip.Runtime.evaluate("var files = document.getElementsByTagName('link');var links = [];for (var a = 0, l = files.length; a < l; a++) {var elem = files[a];var rel = elem.rel;if (typeof rel != 'string' || rel.length === 0 || rel === 'stylesheet') {links.push({'elem': elem,'href': elem.getAttribute('href').split('?')[0],'last': false});}}for ( a = 0, l = links.length; a < l; a++) {var link = links[a];link.elem.setAttribute('href', (link.href + '?x=' + Math.random()));}")) + elif view.file_name().find('.js') > 0: + scriptId = find_script(view.file_name()) + if scriptId and set_script_source: + scriptSource = view.substr(sublime.Region(0, view.size())) + protocol.send(wip.Debugger.setScriptSource(scriptId, scriptSource), self.paused) + else: + protocol.send(wip.Page.reload(), on_reload) + else: + protocol.send(wip.Page.reload(), on_reload) + lookup_view(view).on_post_save() + + def on_modified(self, view): + lookup_view(view).on_modified() + lookup_view(view).view_breakpoints() + + def on_selection_modified(self, view): + #lookup_view(view).on_selection_modified() + global timing + now = time.time() + if now - timing > 0.08: + timing = now + sublime.set_timeout(lambda: lookup_view(view).check_click(), 0) + else: + timing = now + + def on_activated(self, view): + lookup_view(view).on_activated() + lookup_view(view).view_breakpoints() + + def on_deactivated(self, view): + lookup_view(view).on_deactivated() + + def on_query_context(self, view, key, operator, operand, match_all): + lookup_view(view).on_query_context(key, operator, operand, match_all) + + def paused(self, command): + global paused + + if not paused: + return + + data = command.data + sublime.set_timeout(lambda: window.set_layout(get_setting('stack_layout')), 0) + + sublime.set_timeout(lambda: console_show_stack(data['callFrames']), 0) + + scriptId = data['callFrames'][0].location.scriptId + line_number = data['callFrames'][0].location.lineNumber + file_name = find_script(str(scriptId)) + first_scope = data['callFrames'][0].scopeChain[0] + + if open_stack_current_in_new_tab: + title = {'objectId': first_scope.object.objectId, 'name': "%s:%s (%s)" % (file_name, line_number, first_scope.type)} + else: + title = {'objectId': first_scope.object.objectId, 'name': "Breakpoint Local"} + + sublime.set_timeout(lambda: protocol.send(wip.Runtime.getProperties(first_scope.object.objectId, True), console_add_properties, title), 30) + sublime.set_timeout(lambda: open_script_and_focus_line(scriptId, line_number), 100) + + +#################################################################################### +# GLOBAL HANDLERS +#################################################################################### + +def on_reload(command): + global file_to_scriptId + file_to_scriptId = [] + + +#################################################################################### +# Console +#################################################################################### + +def find_view(console_type, title=''): + found = False + v = None + window = sublime.active_window() + + if console_type.startswith('console'): + group = 1 + fullName = "SWI Console" + + if console_type == 'stack': + group = 2 + fullName = "SWI Breakpoint stack" + + if console_type.startswith('eval'): + group = 1 + fullName = "SWI Object evaluate" + + fullName = fullName + ' ' + title + + for v in window.views(): + if v.name() == fullName: + found = True + break + + if not found: + v = window.new_file() + v.set_scratch(True) + v.set_read_only(False) + v.set_name(fullName) + v.settings().set('word_wrap', False) + + window.set_view_index(v, group, 0) + + if console_type.startswith('console'): + v.set_syntax_file('Packages/Web Inspector/swi_log.tmLanguage') + + if console_type == 'stack': + v.set_syntax_file('Packages/Web Inspector/swi_stack.tmLanguage') + + if console_type.startswith('eval'): + v.set_syntax_file('Packages/Web Inspector/swi_log.tmLanguage') + + window.focus_view(v) + + v.set_read_only(False) + + return lookup_view(v) + + +def clear_view(view): + v = find_view(view) + + edit = v.begin_edit() + + v.erase(edit, sublime.Region(0, v.size())) + + v.end_edit(edit) + v.show(v.size()) + window.focus_group(0) + lookup_view(v).clear_clicks() + + +def console_repeat_message(count): + v = find_view('console') + + edit = v.begin_edit() + + if count > 2: + erase_to = v.size() - len(u' \u21AA Repeat:' + str(count - 1) + '\n') + v.erase(edit, sublime.Region(erase_to, v.size())) + v.insert(edit, v.size(), u' \u21AA Repeat:' + str(count) + '\n') + + v.end_edit(edit) + v.show(v.size()) + window.focus_group(0) + + +def console_add_evaluate(eval_object): + v = find_view('console') + + edit = v.begin_edit() + + insert_position = v.size() + v.insert(edit, insert_position, str(eval_object) + ' ') + + v.insert(edit, v.size(), "\n") + + v.end_edit(edit) + v.show(v.size()) + window.focus_group(0) + + +def console_add_message(message): + v = find_view('console') + + edit = v.begin_edit() + + if message.level == 'debug': + level = "D" + if message.level == 'error': + level = "E" + if message.level == 'log': + level = "L" + if message.level == 'tip': + level = "T" + if message.level == 'warning': + level = "W" + + v.insert(edit, v.size(), "[%s] " % (level)) + # Add file and line + scriptId = None + if message.url: + scriptId = find_script(message.url) + if scriptId: + url = message.url.split("/")[-1] + else: + url = message.url + else: + url = '---' + + if message.line: + line = message.line + else: + line = 0 + + insert_position = v.size() + insert_length = v.insert(edit, insert_position, "%s:%d" % (url, line)) + + if scriptId and line > 0: + v.insert_click(insert_position, insert_position + insert_length, 'goto_file_line', {'scriptId': scriptId, 'line': str(line)}) + + v.insert(edit, v.size(), " ") + + # Add text + if len(message.parameters) > 0: + for param in message.parameters: + insert_position = v.size() + insert_length = v.insert(edit, insert_position, str(param) + ' ') + if param.type == 'object': + v.insert_click(insert_position, insert_position + insert_length - 1, 'get_params', {'objectId': param.objectId}) + else: + v.insert(edit, v.size(), message.text) + + v.insert(edit, v.size(), "\n") + + if level == "E" and message.stackTrace: + stack_start = v.size() + + for callFrame in message.stackTrace: + scriptId = find_script(callFrame.url) + file_name = callFrame.url.split('/')[-1] + + v.insert(edit, v.size(), u'\t\u21E1 ') + + if scriptId: + v.print_click(edit, v.size(), "%s:%s %s" % (file_name, callFrame.lineNumber, callFrame.functionName), 'goto_file_line', {'scriptId': scriptId, 'line': str(callFrame.lineNumber)}) + else: + v.insert(edit, v.size(), "%s:%s %s" % (file_name, callFrame.lineNumber, callFrame.functionName)) + + v.insert(edit, v.size(), "\n") + + v.fold(sublime.Region(stack_start-1, v.size()-1)) + + v.end_edit(edit) + v.show(v.size()) + window.focus_group(0) + + +def console_add_properties(command): + sublime.set_timeout(lambda: console_print_properties(command), 0) + + +def console_print_properties(command): + + if 'name' in command.options: + name = command.options['name'] + else: + name = str(command.options['objectId']) + + if 'prev' in command.options: + prev = command.options['prev'] + ' -> ' + name + else: + prev = name + + v = find_view('eval', name) + + edit = v.begin_edit() + v.erase(edit, sublime.Region(0, v.size())) + + v.insert(edit, v.size(), prev) + + v.insert(edit, v.size(), "\n\n") + + for prop in command.data: + v.insert(edit, v.size(), prop.name + ': ') + insert_position = v.size() + if(prop.value): + insert_length = v.insert(edit, insert_position, str(prop.value) + '\n') + if prop.value.type == 'object': + v.insert_click(insert_position, insert_position + insert_length - 1, 'get_params', {'objectId': prop.value.objectId, 'name': prop.name, 'prev': prev}) + + v.end_edit(edit) + v.show(0) + window.focus_group(0) + + +def console_show_stack(callFrames): + + v = find_view('stack') + + edit = v.begin_edit() + v.erase(edit, sublime.Region(0, v.size())) + + v.insert(edit, v.size(), "\n") + v.print_click(edit, v.size(), "\tResume\t", 'command', 'swi_debug_resume') + v.print_click(edit, v.size(), "\tStep Over\t", 'command', 'swi_debug_step_over') + v.print_click(edit, v.size(), "\tStep Into\t", 'command', 'swi_debug_step_into') + v.print_click(edit, v.size(), "\tStep Out\t", 'command', 'swi_debug_step_out') + v.insert(edit, v.size(), "\n\n") + + for callFrame in callFrames: + line = str(callFrame.location.lineNumber) + file_name = find_script(str(callFrame.location.scriptId)) + + if file_name: + file_name = file_name.split('/')[-1] + else: + file_name = '-' + + insert_position = v.size() + insert_length = v.insert(edit, insert_position, "%s:%s" % (file_name, line)) + + if file_name != '-': + v.insert_click(insert_position, insert_position + insert_length, 'goto_call_frame', {'callFrame': callFrame}) + + v.insert(edit, v.size(), " %s\n" % (callFrame.functionName)) + + for scope in callFrame.scopeChain: + v.insert(edit, v.size(), "\t") + insert_position = v.size() + insert_length = v.insert(edit, v.size(), "%s\n" % (scope.type)) + if scope.object.type == 'object': + v.insert_click(insert_position, insert_position + insert_length - 1, 'get_params', {'objectId': scope.object.objectId, 'name': "%s:%s (%s)" % (file_name, line, scope.type)}) + + v.end_edit(edit) + v.show(0) + window.focus_group(0) + + +#################################################################################### +# All about breaks +#################################################################################### + + +def get_project(): + if not sublime.active_window(): + return None + win_id = sublime.active_window().id() + project = None + reg_session = os.path.join(sublime.packages_path(), "..", "Settings", "Session.sublime_session") + auto_save = os.path.join(sublime.packages_path(), "..", "Settings", "Auto Save Session.sublime_session") + session = auto_save if os.path.exists(auto_save) else reg_session + + if not os.path.exists(session) or win_id == None: + return project + + try: + with open(session, 'r') as f: + # Tabs in strings messes things up for some reason + j = json.JSONDecoder(strict=False).decode(f.read()) + for w in j['windows']: + if w['window_id'] == win_id: + if "workspace_name" in w: + if sublime.platform() == "windows": + # Account for windows specific formatting + project = os.path.normpath(w["workspace_name"].lstrip("/").replace("/", ":/", 1)) + else: + project = w["workspace_name"] + break + except: + pass + + # Throw out empty project names + if project == None or re.match(".*\\.sublime-project", project) == None or not os.path.exists(project): + project = None + + return project + + +def load_breaks(): + # if not get_project(): + # sublime.error_message('Can\' load breaks') + # brk_object = {} + # return + # breaks_file = os.path.splitext(get_project())[0] + '-breaks.json' + # global brk_object + # if not os.path.exists(breaks_file): + # with open(breaks_file, 'w') as f: + # f.write('{}') + + # try: + # with open(breaks_file, 'r') as f: + # brk_object = json.loads(f.read()) + # except: + # brk_object = {} + global brk_object + brk_object = get_setting('breaks') + + +def save_breaks(): + # try: + # breaks_file = os.path.splitext(get_project())[0] + '-breaks.json' + # with open(breaks_file, 'w') as f: + # f.write(json.dumps(brk_object, sort_keys=True, indent=4, separators=(',', ': '))) + # except: + # pass + s = sublime.load_settings("swi.sublime-settings") + s.set('breaks', brk_object) + sublime.save_settings("swi.sublime-settings") + + #print breaks + + +def full_path_to_file_name(path): + return os.path.basename(os.path.realpath(path)) + + +def set_breakpoint_by_full_path(file_name, line, status='disabled', breakpointId=None): + breaks = get_breakpoints_by_full_path(file_name) + + if not line in breaks: + breaks[line] = {} + breaks[line]['status'] = status + breaks[line]['breakpointId'] = str(breakpointId) + else: + breaks[line]['status'] = status + breaks[line]['breakpointId'] = str(breakpointId) + save_breaks() + + +def del_breakpoint_by_full_path(file_name, line): + breaks = get_breakpoints_by_full_path(file_name) + + if line in breaks: + del breaks[line] + save_breaks() + + +def get_breakpoints_by_full_path(file_name): + if file_name in brk_object: + return brk_object[file_name] + + return None + + +def set_breakpoint_by_scriptId(scriptId, line, status='disabled', breakpointId=None): + file_name = find_script(str(scriptId)) + if file_name: + set_breakpoint_by_full_path(file_name, line, status, breakpointId) + + +def del_breakpoint_by_scriptId(scriptId, line): + file_name = find_script(str(scriptId)) + if file_name: + del_breakpoint_by_full_path(file_name, line) + + +def get_breakpoints_by_scriptId(scriptId): + file_name = find_script(str(scriptId)) + if file_name: + return get_breakpoints_by_full_path(file_name) + + return None + + +def init_breakpoint_for_file(file_path): + if not file_path in brk_object: + brk_object[file_path] = {} + + +def disable_all_breakpoints(): + for file_name in brk_object: + for line in brk_object[file_name]: + brk_object[file_name][line]['status'] = 'disabled' + if 'breakpointId' in brk_object[file_name][line]: + del brk_object[file_name][line]['breakpointId'] + + save_breaks() + + +#################################################################################### +# Utils +#################################################################################### + +def get_setting(key): + s = sublime.load_settings("swi.sublime-settings") + if s and s.has(key): + return s.get(key) + + +def find_script(scriptId_or_file_or_url): + sha = hashlib.sha1(scriptId_or_file_or_url).hexdigest() + for item in file_to_scriptId: + if item['scriptId'] == scriptId_or_file_or_url: + return item['file'] + if item['file'] == scriptId_or_file_or_url: + return item['scriptId'] + if item['sha1'] == sha: + return item['scriptId'] + + return None + +def get_script(scriptId_or_file_or_url): + sha = hashlib.sha1(scriptId_or_file_or_url).hexdigest() + for item in file_to_scriptId: + if item['scriptId'] == scriptId_or_file_or_url: + return item + if item['file'] == scriptId_or_file_or_url: + return item + if item['sha1'] == sha: + return item + + return None + + +def do_when(conditional, callback, *args, **kwargs): + if conditional(): + return callback(*args, **kwargs) + sublime.set_timeout(functools.partial(do_when, conditional, callback, *args, **kwargs), 50) + + +def open_script_and_focus_line(scriptId, line_number): + file_name = find_script(str(scriptId)) + window = sublime.active_window() + window.focus_group(0) + view = window.open_file(file_name, sublime.TRANSIENT) + do_when(lambda: not view.is_loading(), lambda: view.run_command("goto_line", {"line": line_number})) + + +def open_script_and_show_current_breakpoint(scriptId, line_number): + file_name = find_script(str(scriptId)) + window.focus_group(0) + view = window.open_file(file_name, sublime.TRANSIENT) + do_when(lambda: not view.is_loading(), lambda: view.run_command("goto_line", {"line": line_number})) + #do_when(lambda: not view.is_loading(), lambda: focus_line_and_highlight(view, line_number)) + + +def focus_line_and_highlight(view, line_number): + view.run_command("goto_line", {"line": line_number}) + global current_line + current_line = line_number + lookup_view(view).view_breakpoints() + +sublime.set_timeout(lambda: load_breaks(), 1000) \ No newline at end of file diff --git a/sublime/Packages/Web Inspector/swi.sublime-settings b/sublime/Packages/Web Inspector/swi.sublime-settings new file mode 100644 index 0000000..7449cbb --- /dev/null +++ b/sublime/Packages/Web Inspector/swi.sublime-settings @@ -0,0 +1,26 @@ +{ + "chrome_path": { + "osx": "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome", + "windows": "C:\\Program Files\\Google\\Chrome\\chrome.exe", + "linux": "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" + }, + "chrome_remote_port": "9222", + "breakpoint_scope": "swi.breakpoint", + "current_line_scope": "swi.current", + "interactive_scope": "mcol_0088CCFF.settings", + "stack_layout": { + "cols": [0.0, 0.6, 1.0], + "rows": [0.0, 0.7, 1.0], + "cells": [[0, 0, 2, 1], [0, 1, 1, 2], [1, 1, 2, 2]] + }, + "console_layout": { + "cols": [0.0, 0.6, 1.0], + "rows": [0.0, 0.7, 1.0], + "cells": [[0, 0, 2, 1], [0, 1, 1, 2], [1, 1, 2, 2]] + }, + "reload_on_start": true, + "reload_on_save": true, + "set_script_source": false, + "open_stack_current_in_new_tab": false, + "breaks": {} +} \ No newline at end of file diff --git a/sublime/Packages/Web Inspector/swi_log.JSON-tmLanguage b/sublime/Packages/Web Inspector/swi_log.JSON-tmLanguage new file mode 100644 index 0000000..6b02529 --- /dev/null +++ b/sublime/Packages/Web Inspector/swi_log.JSON-tmLanguage @@ -0,0 +1,115 @@ +{ + "name": "Web Inspector (Log)", + "scopeName": "jsd.log", + "patterns": [ + { + "match": "^(\\[D\\])\\s(.*?):(\\d+)\\s", + "name": "jsd.log.debug", + "captures": { + "1": { + "name": "mcol_339900FF.settings" + }, + "2": { + "name": "support.type.settings" + }, + "3": { + "name": "variable.parameter.settings" + } + } + }, + { + "match": "^(\\[E\\])\\s(.*?):(\\d+)\\s", + "name": "jsd.log.error", + "captures": { + "1": { + "name": "mcol_CC0000FF.settings" + }, + "2": { + "name": "support.type.settings" + }, + "3": { + "name": "variable.parameter.settings" + } + } + }, + { + "match": "^(\\[W\\])\\s(.*?):(\\d+)\\s", + "name": "jsd.log.warn", + "captures": { + "1": { + "name": "mcol_F93F07FF.settings" + }, + "2": { + "name": "support.type.settings" + }, + "3": { + "name": "variable.parameter.settings" + } + } + }, + { + "match": "^(\\[L\\])\\s(.*?):(\\d+)\\s", + "name": "jsd.log.log", + "captures": { + "1": { + "name": "mcol_0088CCFF.settings" + }, + "2": { + "name": "support.type.settings" + }, + "3": { + "name": "variable.parameter.settings" + } + } + }, + { + "match": "^(\\[T\\])\\s(.*?):(\\d+)\\s", + "name": "jsd.log.tip", + "captures": { + "1": { + "name": "mcol_800080FF.settings" + }, + "2": { + "name": "support.type.settings" + }, + "3": { + "name": "variable.parameter.settings" + } + } + }, + { + "match": "^\\t(.+)\\s(.*?):(\\d+)", + "name": "jsd.log.object", + "captures": { + "1": { + "name": "mcol_CC0000FF.settings" + }, + "2": { + "name": "support.type.settings" + }, + "3": { + "name": "variable.parameter.settings" + } + } + }, + { + "match": "^(.*?:)\\s(.*?)$", + "name": "jsd.log.property", + "captures": { + "1": { + "name": "variable.parameter.settings" + } + } + }, + { + "match": "^(.*?)$", + "name": "jsd.log.property_object_name", + "captures": { + "1": { + "name": "entity.name.function" + } + } + } + ], + "uuid": "ca03e751-04ef-4330-9a6b-9b99aae1c418" +} \ No newline at end of file diff --git a/sublime/Packages/Web Inspector/swi_log.tmLanguage b/sublime/Packages/Web Inspector/swi_log.tmLanguage new file mode 100644 index 0000000..a5c436b --- /dev/null +++ b/sublime/Packages/Web Inspector/swi_log.tmLanguage @@ -0,0 +1,187 @@ + + + + + name + Web Inspector (Log) + patterns + + + captures + + 1 + + name + mcol_339900FF.settings + + 2 + + name + support.type.settings + + 3 + + name + variable.parameter.settings + + + match + ^(\[D\])\s(.*?):(\d+)\s + name + jsd.log.debug + + + captures + + 1 + + name + mcol_CC0000FF.settings + + 2 + + name + support.type.settings + + 3 + + name + variable.parameter.settings + + + match + ^(\[E\])\s(.*?):(\d+)\s + name + jsd.log.error + + + captures + + 1 + + name + mcol_F93F07FF.settings + + 2 + + name + support.type.settings + + 3 + + name + variable.parameter.settings + + + match + ^(\[W\])\s(.*?):(\d+)\s + name + jsd.log.warn + + + captures + + 1 + + name + mcol_0088CCFF.settings + + 2 + + name + support.type.settings + + 3 + + name + variable.parameter.settings + + + match + ^(\[L\])\s(.*?):(\d+)\s + name + jsd.log.log + + + captures + + 1 + + name + mcol_800080FF.settings + + 2 + + name + support.type.settings + + 3 + + name + variable.parameter.settings + + + match + ^(\[T\])\s(.*?):(\d+)\s + name + jsd.log.tip + + + captures + + 1 + + name + mcol_CC0000FF.settings + + 2 + + name + support.type.settings + + 3 + + name + variable.parameter.settings + + + match + ^\t(.+)\s(.*?):(\d+) + name + jsd.log.object + + + captures + + 1 + + name + variable.parameter.settings + + + match + ^(.*?:)\s(.*?)$ + name + jsd.log.property + + + captures + + 1 + + name + entity.name.function + + + match + ^(.*?)$ + name + jsd.log.property_object_name + + + scopeName + jsd.log + uuid + ca03e751-04ef-4330-9a6b-9b99aae1c418 + + diff --git a/sublime/Packages/Web Inspector/swi_stack.JSON-tmLanguage b/sublime/Packages/Web Inspector/swi_stack.JSON-tmLanguage new file mode 100644 index 0000000..c9c61c9 --- /dev/null +++ b/sublime/Packages/Web Inspector/swi_stack.JSON-tmLanguage @@ -0,0 +1,17 @@ +{ "name": "Web Inspector (Stack)", + "scopeName": "jsd.stack", + "patterns": [ + { "match": "^(.*?):(\\d+)(.*?)$", + "name": "jsd.log.debug", + "captures": { + "1": { "name": "support.type.settings" }, + "2": { "name": "variable.parameter.settings" }, + "3": { "name": "entity.name.function" } + } + }, + { "match": "local|global|closure", + "name": "keyword" + } + ], + "uuid": "ca03e751-04ef-4330-9a6b-9b99aae1c418" +} \ No newline at end of file diff --git a/sublime/Packages/Web Inspector/swi_stack.tmLanguage b/sublime/Packages/Web Inspector/swi_stack.tmLanguage new file mode 100644 index 0000000..6b7fb4b --- /dev/null +++ b/sublime/Packages/Web Inspector/swi_stack.tmLanguage @@ -0,0 +1,45 @@ + + + + + name + Web Inspector (Stack) + patterns + + + captures + + 1 + + name + support.type.settings + + 2 + + name + variable.parameter.settings + + 3 + + name + entity.name.function + + + match + ^(.*?):(\d+)(.*?)$ + name + jsd.log.debug + + + match + local|global|closure + name + keyword + + + scopeName + jsd.stack + uuid + ca03e751-04ef-4330-9a6b-9b99aae1c418 + + diff --git a/sublime/Packages/Web Inspector/websocket.py b/sublime/Packages/Web Inspector/websocket.py new file mode 100644 index 0000000..71d8b7e --- /dev/null +++ b/sublime/Packages/Web Inspector/websocket.py @@ -0,0 +1,742 @@ +""" +websocket - WebSocket client library for Python + +Copyright (C) 2010 Hiroki Ohtani(liris) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +""" + + +import socket +from urlparse import urlparse +import os +import struct +import uuid +import sha +import base64 +import logging + +""" +websocket python client. +========================= + +This version support only hybi-13. +Please see http://tools.ietf.org/html/rfc6455 for protocol. +""" + + +# websocket supported version. +VERSION = 13 + +# closing frame status codes. +STATUS_NORMAL = 1000 +STATUS_GOING_AWAY = 1001 +STATUS_PROTOCOL_ERROR = 1002 +STATUS_UNSUPPORTED_DATA_TYPE = 1003 +STATUS_STATUS_NOT_AVAILABLE = 1005 +STATUS_ABNORMAL_CLOSED = 1006 +STATUS_INVALID_PAYLOAD = 1007 +STATUS_POLICY_VIOLATION = 1008 +STATUS_MESSAGE_TOO_BIG = 1009 +STATUS_INVALID_EXTENSION = 1010 +STATUS_UNEXPECTED_CONDITION = 1011 +STATUS_TLS_HANDSHAKE_ERROR = 1015 + +logger = logging.getLogger() + +class WebSocketException(Exception): + """ + websocket exeception class. + """ + pass + +default_timeout = None +traceEnabled = False + +def enableTrace(tracable): + """ + turn on/off the tracability. + + tracable: boolean value. if set True, tracability is enabled. + """ + global traceEnabled + traceEnabled = tracable + if tracable: + if not logger.handlers: + logger.addHandler(logging.StreamHandler()) + logger.setLevel(logging.DEBUG) + +def setdefaulttimeout(timeout): + """ + Set the global timeout setting to connect. + + timeout: default socket timeout time. This value is second. + """ + global default_timeout + default_timeout = timeout + +def getdefaulttimeout(): + """ + Return the global timeout setting(second) to connect. + """ + return default_timeout + +def _parse_url(url): + """ + parse url and the result is tuple of + (hostname, port, resource path and the flag of secure mode) + + url: url string. + """ + if ":" not in url: + raise ValueError("url is invalid") + + scheme, url = url.split(":", 1) + url = url.rstrip("/") + + parsed = urlparse(url, scheme="http") + if parsed.hostname: + hostname = parsed.hostname + else: + raise ValueError("hostname is invalid") + port = 0 + if parsed.port: + port = parsed.port + + is_secure = False + if scheme == "ws": + if not port: + port = 80 + elif scheme == "wss": + is_secure = True + if not port: + port = 443 + else: + raise ValueError("scheme %s is invalid" % scheme) + + if parsed.path: + resource = parsed.path + else: + resource = "/" + + return (hostname, port, resource, is_secure) + +def create_connection(url, timeout=None, **options): + """ + connect to url and return websocket object. + + Connect to url and return the WebSocket object. + Passing optional timeout parameter will set the timeout on the socket. + If no timeout is supplied, the global default timeout setting returned by getdefauttimeout() is used. + You can customize using 'options'. + If you set "headers" dict object, you can set your own custom header. + + >>> conn = create_connection("ws://echo.websocket.org/", + ... headers={"User-Agent": "MyProgram"}) + + timeout: socket timeout time. This value is integer. + if you set None for this value, it means "use default_timeout value" + + options: current support option is only "header". + if you set header as dict value, the custom HTTP headers are added. + """ + websock = WebSocket() + websock.settimeout(timeout != None and timeout or default_timeout) + websock.connect(url, **options) + return websock + +_MAX_INTEGER = (1 << 32) -1 +_AVAILABLE_KEY_CHARS = range(0x21, 0x2f + 1) + range(0x3a, 0x7e + 1) +_MAX_CHAR_BYTE = (1<<8) -1 + +# ref. Websocket gets an update, and it breaks stuff. +# http://axod.blogspot.com/2010/06/websocket-gets-update-and-it-breaks.html + +def _create_sec_websocket_key(): + uid = uuid.uuid4() + return base64.encodestring(uid.bytes).strip() + +_HEADERS_TO_CHECK = { + "upgrade": "websocket", + "connection": "upgrade", + } + +class _SSLSocketWrapper(object): + def __init__(self, sock): + self.ssl = socket.ssl(sock) + + def recv(self, bufsize): + return self.ssl.read(bufsize) + + def send(self, payload): + return self.ssl.write(payload) + +_BOOL_VALUES = (0, 1) +def _is_bool(*values): + for v in values: + if v not in _BOOL_VALUES: + return False + + return True + +class ABNF(object): + """ + ABNF frame class. + see http://tools.ietf.org/html/rfc5234 + and http://tools.ietf.org/html/rfc6455#section-5.2 + """ + + # operation code values. + OPCODE_TEXT = 0x1 + OPCODE_BINARY = 0x2 + OPCODE_CLOSE = 0x8 + OPCODE_PING = 0x9 + OPCODE_PONG = 0xa + + # available operation code value tuple + OPCODES = (OPCODE_TEXT, OPCODE_BINARY, OPCODE_CLOSE, + OPCODE_PING, OPCODE_PONG) + + # opcode human readable string + OPCODE_MAP = { + OPCODE_TEXT: "text", + OPCODE_BINARY: "binary", + OPCODE_CLOSE: "close", + OPCODE_PING: "ping", + OPCODE_PONG: "pong" + } + + # data length threashold. + LENGTH_7 = 0x7d + LENGTH_16 = 1 << 16 + LENGTH_63 = 1 << 63 + + def __init__(self, fin = 0, rsv1 = 0, rsv2 = 0, rsv3 = 0, + opcode = OPCODE_TEXT, mask = 1, data = ""): + """ + Constructor for ABNF. + please check RFC for arguments. + """ + self.fin = fin + self.rsv1 = rsv1 + self.rsv2 = rsv2 + self.rsv3 = rsv3 + self.opcode = opcode + self.mask = mask + self.data = data + self.get_mask_key = os.urandom + + @staticmethod + def create_frame(data, opcode): + """ + create frame to send text, binary and other data. + + data: data to send. This is string value(byte array). + if opcode is OPCODE_TEXT and this value is uniocde, + data value is conveted into unicode string, automatically. + + opcode: operation code. please see OPCODE_XXX. + """ + if opcode == ABNF.OPCODE_TEXT and isinstance(data, unicode): + data = data.encode("utf-8") + # mask must be set if send data from client + return ABNF(1, 0, 0, 0, opcode, 1, data) + + def format(self): + """ + format this object to string(byte array) to send data to server. + """ + if not _is_bool(self.fin, self.rsv1, self.rsv2, self.rsv3): + raise ValueError("not 0 or 1") + if self.opcode not in ABNF.OPCODES: + raise ValueError("Invalid OPCODE") + length = len(self.data) + if length >= ABNF.LENGTH_63: + raise ValueError("data is too long") + + frame_header = chr(self.fin << 7 + | self.rsv1 << 6 | self.rsv2 << 5 | self.rsv3 << 4 + | self.opcode) + if length < ABNF.LENGTH_7: + frame_header += chr(self.mask << 7 | length) + elif length < ABNF.LENGTH_16: + frame_header += chr(self.mask << 7 | 0x7e) + frame_header += struct.pack("!H", length) + else: + frame_header += chr(self.mask << 7 | 0x7f) + frame_header += struct.pack("!Q", length) + + if not self.mask: + return frame_header + self.data + else: + mask_key = self.get_mask_key(4) + return frame_header + self._get_masked(mask_key) + + def _get_masked(self, mask_key): + s = ABNF.mask(mask_key, self.data) + return mask_key + "".join(s) + + @staticmethod + def mask(mask_key, data): + """ + mask or unmask data. Just do xor for each byte + + mask_key: 4 byte string(byte). + + data: data to mask/unmask. + """ + _m = map(ord, mask_key) + _d = map(ord, data) + for i in range(len(_d)): + _d[i] ^= _m[i % 4] + s = map(chr, _d) + return "".join(s) + +class WebSocket(object): + """ + Low level WebSocket interface. + This class is based on + The WebSocket protocol draft-hixie-thewebsocketprotocol-76 + http://tools.ietf.org/html/draft-hixie-thewebsocketprotocol-76 + + We can connect to the websocket server and send/recieve data. + The following example is a echo client. + + >>> import websocket + >>> ws = websocket.WebSocket() + >>> ws.connect("ws://echo.websocket.org") + >>> ws.send("Hello, Server") + >>> ws.recv() + 'Hello, Server' + >>> ws.close() + + get_mask_key: a callable to produce new mask keys, see the set_mask_key + function's docstring for more details + """ + def __init__(self, get_mask_key = None): + """ + Initalize WebSocket object. + """ + self.connected = False + self.io_sock = self.sock = socket.socket() + self.get_mask_key = get_mask_key + + def set_mask_key(self, func): + """ + set function to create musk key. You can custumize mask key generator. + Mainly, this is for testing purpose. + + func: callable object. the fuct must 1 argument as integer. + The argument means length of mask key. + This func must be return string(byte array), + which length is argument specified. + """ + self.get_mask_key = func + + def settimeout(self, timeout): + """ + Set the timeout to the websocket. + + timeout: timeout time(second). + """ + self.sock.settimeout(timeout) + + def gettimeout(self): + """ + Get the websocket timeout(second). + """ + return self.sock.gettimeout() + + def connect(self, url, **options): + """ + Connect to url. url is websocket url scheme. ie. ws://host:port/resource + You can customize using 'options'. + If you set "headers" dict object, you can set your own custom header. + + >>> ws = WebSocket() + >>> ws.connect("ws://echo.websocket.org/", + ... headers={"User-Agent": "MyProgram"}) + + timeout: socket timeout time. This value is integer. + if you set None for this value, + it means "use default_timeout value" + + options: current support option is only "header". + if you set header as dict value, + the custom HTTP headers are added. + + """ + hostname, port, resource, is_secure = _parse_url(url) + # TODO: we need to support proxy + self.sock.connect((hostname, port)) + if is_secure: + self.io_sock = _SSLSocketWrapper(self.sock) + self._handshake(hostname, port, resource, **options) + + def _handshake(self, host, port, resource, **options): + sock = self.io_sock + headers = [] + headers.append("GET %s HTTP/1.1" % resource) + headers.append("Upgrade: websocket") + headers.append("Connection: Upgrade") + if port == 80: + hostport = host + else: + hostport = "%s:%d" % (host, port) + headers.append("Host: %s" % hostport) + headers.append("Origin: %s" % hostport) + + key = _create_sec_websocket_key() + headers.append("Sec-WebSocket-Key: %s" % key) + headers.append("Sec-WebSocket-Protocol: chat, superchat") + headers.append("Sec-WebSocket-Version: %s" % VERSION) + if "header" in options: + headers.extend(options["header"]) + + headers.append("") + headers.append("") + + header_str = "\r\n".join(headers) + sock.send(header_str) + if traceEnabled: + logger.debug( "--- request header ---") + logger.debug( header_str) + logger.debug("-----------------------") + + status, resp_headers = self._read_headers() + if status != 101: + self.close() + raise WebSocketException("Handshake Status %d" % status) + + success = self._validate_header(resp_headers, key) + if not success: + self.close() + raise WebSocketException("Invalid WebSocket Header") + + self.connected = True + + def _validate_header(self, headers, key): + for k, v in _HEADERS_TO_CHECK.iteritems(): + r = headers.get(k, None) + if not r: + return False + r = r.lower() + if v != r: + return False + + result = headers.get("sec-websocket-accept", None) + if not result: + return False + result = result.lower() + + value = key + "258EAFA5-E914-47DA-95CA-C5AB0DC85B11" + hashed = base64.encodestring(sha.sha(value).digest()).strip().lower() + return hashed == result + + def _read_headers(self): + status = None + headers = {} + if traceEnabled: + logger.debug("--- response header ---") + + while True: + line = self._recv_line() + if line == "\r\n": + break + line = line.strip() + if traceEnabled: + logger.debug(line) + if not status: + status_info = line.split(" ", 2) + status = int(status_info[1]) + else: + kv = line.split(":", 1) + if len(kv) == 2: + key, value = kv + headers[key.lower()] = value.strip().lower() + else: + raise WebSocketException("Invalid header") + + if traceEnabled: + logger.debug("-----------------------") + + return status, headers + + def send(self, payload, opcode = ABNF.OPCODE_TEXT): + """ + Send the data as string. + + payload: Payload must be utf-8 string or unicoce, + if the opcode is OPCODE_TEXT. + Otherwise, it must be string(byte array) + + opcode: operation code to send. Please see OPCODE_XXX. + """ + frame = ABNF.create_frame(payload, opcode) + if self.get_mask_key: + frame.get_mask_key = self.get_mask_key + data = frame.format() + self.io_sock.send(data) + if traceEnabled: + logger.debug("send: " + repr(data)) + + def ping(self, payload = ""): + """ + send ping data. + + payload: data payload to send server. + """ + self.send(payload, ABNF.OPCODE_PING) + + def pong(self, payload): + """ + send pong data. + + payload: data payload to send server. + """ + self.send(payload, ABNF.OPCODE_PONG) + + def recv(self): + """ + Receive string data(byte array) from the server. + + return value: string(byte array) value. + """ + opcode, data = self.recv_data() + return data + + def recv_data(self): + """ + Recieve data with operation code. + + return value: tuple of operation code and string(byte array) value. + """ + while True: + frame = self.recv_frame() + if not frame: + # handle error: + # 'NoneType' object has no attribute 'opcode' + raise WebSocketException("Not a valid frame %s" % frame) + elif frame.opcode in (ABNF.OPCODE_TEXT, ABNF.OPCODE_BINARY): + return (frame.opcode, frame.data) + elif frame.opcode == ABNF.OPCODE_CLOSE: + self.send_close() + return (frame.opcode, None) + elif frame.opcode == ABNF.OPCODE_PING: + self.pong("Hi!") + + + def recv_frame(self): + """ + recieve data as frame from server. + + return value: ABNF frame object. + """ + header_bytes = self._recv(2) + if not header_bytes: + return None + b1 = ord(header_bytes[0]) + fin = b1 >> 7 & 1 + rsv1 = b1 >> 6 & 1 + rsv2 = b1 >> 5 & 1 + rsv3 = b1 >> 4 & 1 + opcode = b1 & 0xf + b2 = ord(header_bytes[1]) + mask = b2 >> 7 & 1 + length = b2 & 0x7f + + length_data = "" + if length == 0x7e: + length_data = self._recv(2) + length = struct.unpack("!H", length_data)[0] + elif length == 0x7f: + length_data = self._recv(8) + length = struct.unpack("!Q", length_data)[0] + + mask_key = "" + if mask: + mask_key = self._recv(4) + data = self._recv_strict(length) + if traceEnabled: + recieved = header_bytes + length_data + mask_key + data + logger.debug("recv: " + repr(recieved)) + + if mask: + data = ABNF.mask(mask_key, data) + + frame = ABNF(fin, rsv1, rsv2, rsv3, opcode, mask, data) + return frame + + def send_close(self, status = STATUS_NORMAL, reason = ""): + """ + send close data to the server. + + status: status code to send. see STATUS_XXX. + + reason: the reason to close. This must be string. + """ + if status < 0 or status >= ABNF.LENGTH_16: + raise ValueError("code is invalid range") + self.send(struct.pack('!H', status) + reason, ABNF.OPCODE_CLOSE) + + + + def close(self, status = STATUS_NORMAL, reason = ""): + """ + Close Websocket object + + status: status code to send. see STATUS_XXX. + + reason: the reason to close. This must be string. + """ + if self.connected: + if status < 0 or status >= ABNF.LENGTH_16: + raise ValueError("code is invalid range") + + try: + self.send(struct.pack('!H', status) + reason, ABNF.OPCODE_CLOSE) + timeout = self.sock.gettimeout() + self.sock.settimeout(3) + try: + frame = self.recv_frame() + if logger.isEnabledFor(logging.DEBUG): + logger.error("close status: " + repr(frame.data)) + except: + pass + self.sock.settimeout(timeout) + self.sock.shutdown(socket.SHUT_RDWR) + except: + pass + self._closeInternal() + + def _closeInternal(self): + self.connected = False + self.sock.close() + self.io_sock = self.sock + + def _recv(self, bufsize): + bytes = self.io_sock.recv(bufsize) + return bytes + + def _recv_strict(self, bufsize): + remaining = bufsize + bytes = "" + while remaining: + bytes += self._recv(remaining) + remaining = bufsize - len(bytes) + + return bytes + + def _recv_line(self): + line = [] + while True: + c = self._recv(1) + line.append(c) + if c == "\n": + break + return "".join(line) + +class WebSocketApp(object): + """ + Higher level of APIs are provided. + The interface is like JavaScript WebSocket object. + """ + def __init__(self, url, + on_open = None, on_message = None, on_error = None, + on_close = None, keep_running = True, get_mask_key = None): + """ + url: websocket url. + on_open: callable object which is called at opening websocket. + this function has one argument. The arugment is this class object. + on_message: callbale object which is called when recieved data. + on_message has 2 arguments. + The 1st arugment is this class object. + The passing 2nd arugment is utf-8 string which we get from the server. + on_error: callable object which is called when we get error. + on_error has 2 arguments. + The 1st arugment is this class object. + The passing 2nd arugment is exception object. + on_close: callable object which is called when closed the connection. + this function has one argument. The arugment is this class object. + keep_running: a boolean flag indicating whether the app's main loop should + keep running, defaults to True + get_mask_key: a callable to produce new mask keys, see the WebSocket.set_mask_key's + docstring for more information + """ + self.url = url + self.on_open = on_open + self.on_message = on_message + self.on_error = on_error + self.on_close = on_close + self.keep_running = keep_running + self.get_mask_key = get_mask_key + self.sock = None + + def send(self, data): + """ + send message. data must be utf-8 string or unicode. + """ + self.sock.send(data) + + def close(self): + """ + close websocket connection. + """ + self.keep_running = False + self.sock.close() + + def run_forever(self): + """ + run event loop for WebSocket framework. + This loop is infinite loop and is alive during websocket is available. + """ + if self.sock: + raise WebSocketException("socket is already opened") + try: + self.sock = WebSocket(self.get_mask_key) + self.sock.connect(self.url) + self._run_with_no_err(self.on_open) + while self.keep_running: + data = self.sock.recv() + if data is None: + break + self._run_with_no_err(self.on_message, data) + except Exception, e: + self._run_with_no_err(self.on_error, e) + finally: + self.sock.close() + self._run_with_no_err(self.on_close) + self.sock = None + + def _run_with_no_err(self, callback, *args): + if callback: + try: + callback(self, *args) + except Exception, e: + if logger.isEnabledFor(logging.DEBUG): + logger.error(e) + + +if __name__ == "__main__": + enableTrace(True) + ws = create_connection("ws://echo.websocket.org/") + print "Sending 'Hello, World'..." + ws.send("Hello, World") + print "Sent" + print "Receiving..." + result = ws.recv() + print "Received '%s'" % result + ws.close() diff --git a/sublime/Packages/Web Inspector/wip/Console.py b/sublime/Packages/Web Inspector/wip/Console.py new file mode 100644 index 0000000..e3f2ac7 --- /dev/null +++ b/sublime/Packages/Web Inspector/wip/Console.py @@ -0,0 +1,77 @@ +from utils import Command, Notification, WIPObject +from Runtime import RemoteObject +from Network import RequestId + + +### Console.clearMessages +def clearMessages(): + command = Command('Console.clearMessages') + return command + + +### Console.disable +def disable(): + command = Command('Console.disable') + return command + + +### Console.enable +def enable(): + command = Command('Console.enable') + return command + + +### Console.messageAdded +def messageAdded(): + notification = Notification('Console.messageAdded') + return notification + + +def messageAdded_parser(params): + result = ConsoleMessage(params['message']) + return result + + +### Console.messageRepeatCountUpdated +def messageRepeatCountUpdated(): + notification = Notification('Console.messageRepeatCountUpdated') + return notification + + +def messageRepeatCountUpdate_parser(params): + return params['count'] + + +### Console.messagesCleared +def messagesCleared(): + notification = Notification('Console.messagesCleared') + return notification + + +class CallFrame(WIPObject): + def __init__(self, value): + self.set(value, 'columnNumber') + self.set(value, 'functionName') + self.set(value, 'lineNumber') + self.set(value, 'url') + + +class ConsoleMessage(WIPObject): + def __init__(self, value): + self.set(value, 'level') + self.set(value, 'line') + self.set_class(value, 'networkRequestId', RequestId) + self.parameters = [] + if 'parameters' in value: + for param in value['parameters']: + self.parameters.append(RemoteObject(param)) + self.set(value, 'repeatCount', 1) + self.set_class(value, 'stackTrace', StackTrace) + self.set(value, 'text') + self.set(value, 'url') + + +class StackTrace(list): + def __init__(self, value): + for callFrame in value: + self.append(CallFrame(callFrame)) diff --git a/sublime/Packages/Web Inspector/wip/DOM.py b/sublime/Packages/Web Inspector/wip/DOM.py new file mode 100644 index 0000000..3523130 --- /dev/null +++ b/sublime/Packages/Web Inspector/wip/DOM.py @@ -0,0 +1 @@ +# not implemented now diff --git a/sublime/Packages/Web Inspector/wip/DOMDebugger.py b/sublime/Packages/Web Inspector/wip/DOMDebugger.py new file mode 100644 index 0000000..3523130 --- /dev/null +++ b/sublime/Packages/Web Inspector/wip/DOMDebugger.py @@ -0,0 +1 @@ +# not implemented now diff --git a/sublime/Packages/Web Inspector/wip/Debugger.py b/sublime/Packages/Web Inspector/wip/Debugger.py new file mode 100644 index 0000000..7356734 --- /dev/null +++ b/sublime/Packages/Web Inspector/wip/Debugger.py @@ -0,0 +1,219 @@ +from utils import Command, Notification, WIPObject +from Runtime import RemoteObject +import json + + +### Console.clearMessages +def canSetScriptSource(): + command = Command('Debugger.canSetScriptSource', {}) + return command + + +def enable(): + command = Command('Debugger.enable', {}) + return command + + +def evaluateOnCallFrame(callFrameId, expression): + params = {} + params['callFrameId'] = callFrameId() + params['expression'] = expression + command = Command('Debugger.evaluateOnCallFrame', params) + return command + + +def evaluateOnCallFrame_parser(result): + data = RemoteObject(result['result']) + return data + + +def disable(): + command = Command('Debugger.disable', {}) + return command + + +def resume(): + command = Command('Debugger.resume', {}) + return command + + +def stepInto(): + command = Command('Debugger.stepInto', {}) + return command + + +def stepOut(): + command = Command('Debugger.stepOut', {}) + return command + + +def stepOver(): + command = Command('Debugger.stepOver', {}) + return command + + +def removeBreakpoint(breakpointId): + params = {} + params['breakpointId'] = breakpointId + command = Command('Debugger.removeBreakpoint', params) + return command + + +def setBreakpoint(location, condition=None): + params = {} + params['location'] = location() + + if condition: + params['condition'] = condition + + command = Command('Debugger.setBreakpoint', params) + return command + + +def setBreakpoint_parser(result): + data = {} + data['breakpointId'] = BreakpointId(result['breakpointId']) + data['actualLocation'] = Location(result['actualLocation']) + return data + + +def setScriptSource(scriptId, scriptSource): + params = {} + params['scriptId'] = scriptId + params['scriptSource'] = scriptSource + + command = Command('Debugger.setScriptSource', params) + return command + + +def setScriptSource_parser(result): + data = {} + data['callFrames'] = [] + for callFrame in result['callFrames']: + data['callFrames'].append(CallFrame(callFrame)) + return data + + +def setBreakpointByUrl(lineNumber, url=None, urlRegex=None, columnNumber=None, condition=None): + params = {} + params['lineNumber'] = lineNumber + if url: + params['url'] = url + + if urlRegex: + params['urlRegex'] = urlRegex + + if columnNumber: + params['columnNumber'] = columnNumber + + if condition: + params['condition'] = condition + + command = Command('Debugger.setBreakpointByUrl', params) + return command + + +def setBreakpointByUrl_parser(result): + data = {} + data['breakpointId'] = BreakpointId(result['breakpointId']) + data['locations'] = [] + for location in result['locations']: + data['locations'].append(Location(location)) + return data + + +def scriptParsed(): + notification = Notification('Debugger.scriptParsed') + return notification + + +def scriptParsed_parser(params): + return {'scriptId': ScriptId(params['scriptId']), 'url': params['url']} + + +def paused(): + notification = Notification('Debugger.paused') + return notification + + +def paused_parser(params): + data = {} + data['callFrames'] = [] + for callFrame in params['callFrames']: + data['callFrames'].append(CallFrame(callFrame)) + data['reason'] = params['reason'] + return data + + +def resumed(): + notification = Notification('Debugger.resumed') + return notification + + +class BreakpointId(WIPObject): + def __init__(self, value): + self.value = value + + def __str__(self): + return self.value + + def __call__(self): + return self.value + + +class CallFrameId(WIPObject): + def __init__(self, value): + self.value = value + + def __str__(self): + return self.value + + def __call__(self): + return self.value + + +class ScriptId(WIPObject): + def __init__(self, value): + self.value = value + + def __str__(self): + return self.value + + def __call__(self): + return self.value + + +class Scope(WIPObject): + def __init__(self, value): + self.set_class(value, 'object', RemoteObject) + self.set(value, 'type') + + +class Location(WIPObject): + def __init__(self, value): + self.set(value, 'columnNumber') + self.set(value, 'lineNumber') + self.set_class(value, 'scriptId', ScriptId) + + def __call__(self): + obj = {} + if self.columnNumber: + obj['columnNumber'] = self.columnNumber + obj['lineNumber'] = self.lineNumber + obj['scriptId'] = self.scriptId() + return obj + + +class CallFrame(WIPObject): + def __init__(self, value): + self.set_class(value, 'callFrameId', CallFrameId) + self.set(value, 'functionName') + self.set_class(value, 'location', Location) + self.scopeChain = [] + if 'scopeChain' in value: + for scope in value['scopeChain']: + self.scopeChain.append(Scope(scope)) + self.set_class(value, 'this', RemoteObject) + + def __str__(self): + return "%s:%d %s" % (self.location.scriptId, self.location.lineNumber, self.functionName) diff --git a/sublime/Packages/Web Inspector/wip/Network.py b/sublime/Packages/Web Inspector/wip/Network.py new file mode 100644 index 0000000..4a6d317 --- /dev/null +++ b/sublime/Packages/Web Inspector/wip/Network.py @@ -0,0 +1,27 @@ +from utils import WIPObject, Command + + +def clearBrowserCache(): + command = Command('Network.clearBrowserCache', {}) + return command + + +def canClearBrowserCache(): + command = Command('Network.canClearBrowserCache', {}) + return command + + +def setCacheDisabled(value): + command = Command('Network.setCacheDisabled', {'cacheDisabled': value}) + return command + + +class RequestId(WIPObject): + def __init__(self, value): + self.value = value + + def __str__(self): + return self.value + + def __repr__(self): + return self.value diff --git a/sublime/Packages/Web Inspector/wip/Page.py b/sublime/Packages/Web Inspector/wip/Page.py new file mode 100644 index 0000000..c31be32 --- /dev/null +++ b/sublime/Packages/Web Inspector/wip/Page.py @@ -0,0 +1,6 @@ +from utils import Command + + +def reload(): + command = Command('Page.reload', {}) + return command diff --git a/sublime/Packages/Web Inspector/wip/Runtime.py b/sublime/Packages/Web Inspector/wip/Runtime.py new file mode 100644 index 0000000..2b812a0 --- /dev/null +++ b/sublime/Packages/Web Inspector/wip/Runtime.py @@ -0,0 +1,100 @@ +import json +from utils import WIPObject, Command + + +def evaluate(expression, objectGroup=None, returnByValue=None): + params = {} + + params['expression'] = expression + + if(objectGroup): + params['objectGroup'] = objectGroup + + if(returnByValue): + params['returnByValue'] = returnByValue + + command = Command('Runtime.evaluate', params) + return command + + +def getProperties(objectId, ownProperties=False): + params = {} + + params['objectId'] = str(objectId) + params['ownProperties'] = ownProperties + + command = Command('Runtime.getProperties', params) + return command + + +def getProperties_parser(result): + data = [] + for propertyDescriptor in result['result']: + data.append(PropertyDescriptor(propertyDescriptor)) + return data + + +class RemoteObject(WIPObject): + def __init__(self, value): + self.set(value, 'className') + self.set(value, 'description') + self.set_class(value, 'objectId', RemoteObjectId) + self.set(value, 'subtype') + self.set(value, 'type') + self.set(value, 'value') + + def __str__(self): + if self.type == 'boolean': + return str(self.value) + if self.type == 'string': + return str(self.value) + if self.type == 'undefined': + return 'undefined' + if self.type == 'number': + return str(self.value) + if self.type == 'object': + if not self.objectId(): + return 'null' + else: + if self.className: + return self.className + if self.description: + return self.description + return '{ ... }' + if self.type == 'function': + return self.description.split('\n')[0] + + +class PropertyDescriptor(WIPObject): + def __init__(self, _value): + self.set(_value, 'configurable') + self.set(_value, 'enumerable') + #self.set_class(_value, 'get', RemoteObject) + #self.set_class(_value, 'set', RemoteObject) + self.set(_value, 'name') + self.set_class(_value, 'value', RemoteObject) + self.set(_value, 'wasThrown') + self.set(_value, 'writable') + + def __str__(self): + return self.name + + +class RemoteObjectId(WIPObject): + def __init__(self, value): + self.value = value + + def __str__(self): + return self.value + + def __call__(self): + return self.value + + def dumps(self): + objid = json.loads(self.value) + return "Object_%d_%d" % (objid['injectedScriptId'], objid['id']) + + def loads(self, text): + parts = text.split('_') + self.value = '{"injectedScriptId":%s,"id":%s}' % (parts[1], parts[2]) + return self.value diff --git a/sublime/Packages/Web Inspector/wip/__init__.py b/sublime/Packages/Web Inspector/wip/__init__.py new file mode 100644 index 0000000..4f2484c --- /dev/null +++ b/sublime/Packages/Web Inspector/wip/__init__.py @@ -0,0 +1,5 @@ +""" +WIP Protocol - WebInspectorProtocol implementation for python + +Copyright (C) 2013 Sokolov Stansilav +""" diff --git a/sublime/Packages/Web Inspector/wip/utils.py b/sublime/Packages/Web Inspector/wip/utils.py new file mode 100644 index 0000000..8eb2935 --- /dev/null +++ b/sublime/Packages/Web Inspector/wip/utils.py @@ -0,0 +1,66 @@ +class WIPObject(object): + def set(self, obj, name, default=None): + setattr(self, name, obj.get(name, default)) + + def set_class(self, obj, name, classObject): + if name in obj: + setattr(self, name, classObject(obj[name])) + else: + setattr(self, name, None) + + def parse_to_class(self, obj, name, classObject): + if name in obj: + setattr(self, name, classObject.parse(obj[name])) + else: + setattr(self, name, None) + + +class Notification(object): + def __init__(self, notification_name): + self.name = notification_name + try: + self.parser = eval('wip.' + notification_name + '_parser', {'wip': __import__('wip')}) + except: + self.parser = Notification.default_parser + self.lastResponse = None + self.callback = None + + @staticmethod + def default_parser(params): + print params + return params + + +class Command(object): + def __init__(self, method_name, params={}): + self.request = {'id': 0, 'method': '', 'params': params} + self.method = method_name + try: + self.parser = eval('wip.' + method_name + '_parser', {'wip': __import__('wip')}) + except: + self.parser = Command.default_parser + self.params = params + self.options = None + self.callback = None + self.response = None + self.error = None + self.data = None + + def get_id(self): + return self.request['id'] + + def set_id(self, value): + self.request['id'] = value + + def get_method(self): + return self.request['method'] + + def set_method(self, value): + self.request['method'] = value + + id = property(get_id, set_id) + method = property(get_method, set_method) + + @staticmethod + def default_parser(params): + return params