###############################################################################
# Copyright (c) 2000, 2016 IBM Corporation and others.
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v1.0
# which accompanies this distribution, and is available at
# http://www.eclipse.org/legal/epl-v10.html
#
# Contributors:
#     IBM Corporation - initial API and implementation
#     Google Inc - add support for accepting multiple connections
###############################################################################

PacketReceiveManager_Got_IOException_from_Virtual_Machine_1=Got IOException from Virtual Machine
PacketReceiveManager_Got_IOException_from_Virtual_Machine_2=Got IOException from Virtual Machine
PacketSendManager_Got_IOException_from_Virtual_Machine_1=Got IOException from Virtual Machine
SocketAttachingConnectorImpl_Machine_name_to_which_to_attach_for_VM_connections_1=Machine name to which to attach for VM connections
SocketAttachingConnectorImpl_Host_2=Host:
SocketAttachingConnectorImpl_Port_number_to_which_to_attach_for_VM_connections_3=Port number to which to attach for VM connections
SocketAttachingConnectorImpl_Port_4=Port:
SocketAttachingConnectorImpl_1=Connection Timeout
SocketAttachingConnectorImpl_2=Connection Timeout:
SocketAttachingConnectorImpl_Attaches_by_socket_to_other_VMs_5=Attaches by socket to other VMs
SocketAttachingConnectorImpl_Connection_argument_is_not_of_the_right_type_6=Connection argument is not of the right type
SocketAttachingConnectorImpl_Necessary_connection_argument_is_null_7=Necessary connection argument is null
SocketAttachingConnectorImpl_Connection_argument_is_not_a_number_8=Connection argument is not a number
SocketLaunchingConnectorImpl_Home_directory_of_the_SDK_or_runtime_environment_used_to_launch_the_application_1=Home directory of the SDK or runtime environment used to launch the application
SocketLaunchingConnectorImpl_Home_2=Home:
SocketLaunchingConnectorImpl_Launched_VM_options_3=Launched VM options
SocketLaunchingConnectorImpl_Options_4=Options:
SocketLaunchingConnectorImpl_Main_class_and_arguments__or_if__jar_is_an_option__the_main_jar_file_and_arguments_5=Main class and arguments, or if -jar is an option, the main jar file and arguments
SocketLaunchingConnectorImpl_Main_6=Main:
SocketLaunchingConnectorImpl_All_threads_will_be_suspended_before_execution_of_main_7=All threads will be suspended before execution of main
SocketLaunchingConnectorImpl_Suspend_8=Suspend:
SocketLaunchingConnectorImpl_Character_used_to_combine_space_delimited_text_into_a_single_command_line_argument_9=Character used to combine space-delimited text into a single command line argument
SocketLaunchingConnectorImpl_Quote_10=Quote:
SocketLaunchingConnectorImpl_Name_of_the_Java_VM_launcher_11=Name of the Java VM launcher
SocketLaunchingConnectorImpl_Launcher_12=Launcher:
SocketLaunchingConnectorImpl_Launches_target_using_Sun_Java_VM_command_line_and_attaches_to_it_13=Launches target using Sun Java VM command line and attaches to it
SocketLaunchingConnectorImpl_Connection_argument_is_not_of_the_right_type_14=Connection argument is not of the right type
SocketLaunchingConnectorImpl_Necessary_connection_argument_is_null_15=Necessary connection argument is null
SocketLaunchingConnectorImpl_Connection_argument_is_not_a_number_16=Connection argument is not a number
SocketListeningConnectorImpl_Port_number_at_which_to_listen_for_VM_connections_1=Port number at which to listen for VM connections
SocketListeningConnectorImpl_Port_2=Port:
SocketListeningConnectorImpl_Timeout_before_accept_returns_3=Timeout before accept returns
SocketListeningConnectorImpl_Timeout_4=Timeout:
SocketListeningConnectorImpl_Accepts_socket_connections_initiated_by_other_VMs_5=Accepts socket connections initiated by other VMs
SocketListeningConnectorImpl_Connection_argument_is_not_of_the_right_type_6=Connection argument is not of the right type
SocketListeningConnectorImpl_Necessary_connection_argument_is_null_7=Necessary connection argument is null
SocketListeningConnectorImpl_Connection_argument_is_not_a_number_8=Connection argument is not a number
SocketListeningConnectorImpl_Limit=Connection limit:
SocketListeningConnectorImpl_Limit_incoming_connections=Limit incoming connections (0 = no limit)
SocketListeningConnectorImpl_ListeningConnector_Socket_Port=ListeningConnector Socket Port=
SocketRawLaunchingConnectorImpl_Raw_command_to_start_the_debugged_application_VM_1=Raw command to start the debugged application VM
SocketRawLaunchingConnectorImpl_Command_2=Command:
SocketRawLaunchingConnectorImpl_Address_from_which_to_listen_for_a_connection_after_the_raw_command_is_run_3=Address from which to listen for a connection after the raw command is run
SocketRawLaunchingConnectorImpl_Address_4=Address:
SocketRawLaunchingConnectorImpl_Character_used_to_combine_space_delimited_text_into_a_single_command_line_argument_5=Character used to combine space-delimited text into a single command line argument
SocketRawLaunchingConnectorImpl_Quote_6=Quote:
SocketRawLaunchingConnectorImpl_Launches_target_using_user_specified_command_line_and_attaches_to_it_7=Launches target using user-specified command line and attaches to it
SocketRawLaunchingConnectorImpl_Connection_argument_is_not_of_the_right_type_8=Connection argument is not of the right type
SocketRawLaunchingConnectorImpl_Necessary_connection_argument_is_null_9=Necessary connection argument is null
SocketRawLaunchingConnectorImpl_Connection_argument_is_not_a_number_10=Connection argument is not a number
SocketLaunchingConnectorImpl_VM_did_not_connect_within_given_time___0__ms_1=VM did not connect within given time: {0} ms
PacketSendManager_Got__0__from_Virtual_Machine_1=Got {0} from Virtual Machine
PacketSendManager_Got__0__from_Virtual_Machine___1__1=Got {0} from Virtual Machine: {1}
PacketReceiveManager_Got__0__from_Virtual_Machine_1=Got {0} from Virtual Machine
PacketReceiveManager_Got__0__from_Virtual_Machine___1__1=Got {0} from Virtual Machine: {1}
PacketReceiveManager_0=Timeout occurred while waiting for packet {0}.
SocketTransportService_0=Attach Thread
SocketTransportService_1=Handshake Thread
