Permalink
Browse files

fix bug #322

  • Loading branch information...
AriaLyy committed Nov 8, 2018
1 parent 66b36b3 commit e22e2dc84025335eac288ed5d25298b5a4231837
Showing with 249 additions and 242 deletions.
  1. +1 −1 Aria/build.gradle
  2. +1 −1 AriaAnnotations/build.gradle
  3. +1 −1 AriaCompiler/build.gradle
  4. +1 −1 AriaFtpPlug/build.gradle
  5. +2 −2 AriaFtpPlug/src/main/java/{org → aria}/apache/commons/net/DatagramSocketClient.java
  6. +1 −1 AriaFtpPlug/src/main/java/{org → aria}/apache/commons/net/DatagramSocketFactory.java
  7. +1 −1 AriaFtpPlug/src/main/java/{org → aria}/apache/commons/net/DefaultDatagramSocketFactory.java
  8. +1 −1 AriaFtpPlug/src/main/java/{org → aria}/apache/commons/net/DefaultSocketFactory.java
  9. +1 −1 AriaFtpPlug/src/main/java/{org → aria}/apache/commons/net/MalformedServerReplyException.java
  10. +1 −1 AriaFtpPlug/src/main/java/{org → aria}/apache/commons/net/PrintCommandListener.java
  11. +2 −2 AriaFtpPlug/src/main/java/{org → aria}/apache/commons/net/ProtocolCommandEvent.java
  12. +3 −2 AriaFtpPlug/src/main/java/{org → aria}/apache/commons/net/ProtocolCommandListener.java
  13. +4 −4 AriaFtpPlug/src/main/java/{org → aria}/apache/commons/net/ProtocolCommandSupport.java
  14. +2 −2 AriaFtpPlug/src/main/java/{org → aria}/apache/commons/net/SocketClient.java
  15. +1 −1 AriaFtpPlug/src/main/java/{org → aria}/apache/commons/net/ftp/Configurable.java
  16. +25 −25 AriaFtpPlug/src/main/java/{org → aria}/apache/commons/net/ftp/FTP.java
  17. +49 −44 AriaFtpPlug/src/main/java/{org → aria}/apache/commons/net/ftp/FTPClient.java
  18. +5 −3 AriaFtpPlug/src/main/java/{org → aria}/apache/commons/net/ftp/FTPClientConfig.java
  19. +1 −1 AriaFtpPlug/src/main/java/{org → aria}/apache/commons/net/ftp/FTPCmd.java
  20. +1 −1 AriaFtpPlug/src/main/java/{org → aria}/apache/commons/net/ftp/FTPCommand.java
  21. +1 −1 AriaFtpPlug/src/main/java/{org → aria}/apache/commons/net/ftp/FTPConnectionClosedException.java
  22. +1 −1 AriaFtpPlug/src/main/java/{org → aria}/apache/commons/net/ftp/FTPFile.java
  23. +1 −1 AriaFtpPlug/src/main/java/{org → aria}/apache/commons/net/ftp/FTPFileEntryParser.java
  24. +1 −1 AriaFtpPlug/src/main/java/{org → aria}/apache/commons/net/ftp/FTPFileEntryParserImpl.java
  25. +1 −1 AriaFtpPlug/src/main/java/{org → aria}/apache/commons/net/ftp/FTPFileFilter.java
  26. +1 −1 AriaFtpPlug/src/main/java/{org → aria}/apache/commons/net/ftp/FTPFileFilters.java
  27. +2 −2 AriaFtpPlug/src/main/java/{org → aria}/apache/commons/net/ftp/FTPHTTPClient.java
  28. +2 −2 AriaFtpPlug/src/main/java/{org → aria}/apache/commons/net/ftp/FTPListParseEngine.java
  29. +1 −1 AriaFtpPlug/src/main/java/{org → aria}/apache/commons/net/ftp/FTPReply.java
  30. +10 −8 AriaFtpPlug/src/main/java/{org → aria}/apache/commons/net/ftp/FTPSClient.java
  31. +1 −1 AriaFtpPlug/src/main/java/{org → aria}/apache/commons/net/ftp/FTPSCommand.java
  32. +1 −1 AriaFtpPlug/src/main/java/{org → aria}/apache/commons/net/ftp/FTPSServerSocketFactory.java
  33. +1 −1 AriaFtpPlug/src/main/java/{org → aria}/apache/commons/net/ftp/FTPSSocketFactory.java
  34. +3 −2 AriaFtpPlug/src/main/java/{org → aria}/apache/commons/net/ftp/FTPSTrustManager.java
  35. +2 −2 AriaFtpPlug/src/main/java/{org → aria}/apache/commons/net/ftp/OnFtpInputStreamListener.java
  36. +1 −1 AriaFtpPlug/src/main/java/{org → aria}/apache/commons/net/ftp/package-info.java
  37. +4 −4 AriaFtpPlug/src/main/java/{org → aria}/apache/commons/net/ftp/parser/CompositeFileEntryParser.java
  38. +3 −4 .../src/main/java/{org → aria}/apache/commons/net/ftp/parser/ConfigurableFTPFileEntryParserImpl.java
  39. +9 −9 ...ug/src/main/java/{org → aria}/apache/commons/net/ftp/parser/DefaultFTPFileEntryParserFactory.java
  40. +5 −5 ...tpPlug/src/main/java/{org → aria}/apache/commons/net/ftp/parser/EnterpriseUnixFTPEntryParser.java
  41. +3 −3 AriaFtpPlug/src/main/java/{org → aria}/apache/commons/net/ftp/parser/FTPFileEntryParserFactory.java
  42. +1 −1 AriaFtpPlug/src/main/java/{org → aria}/apache/commons/net/ftp/parser/FTPTimestampParser.java
  43. +5 −6 AriaFtpPlug/src/main/java/{org → aria}/apache/commons/net/ftp/parser/FTPTimestampParserImpl.java
  44. +3 −4 AriaFtpPlug/src/main/java/{org → aria}/apache/commons/net/ftp/parser/MLSxEntryParser.java
  45. +5 −5 AriaFtpPlug/src/main/java/{org → aria}/apache/commons/net/ftp/parser/MVSFTPEntryParser.java
  46. +5 −5 AriaFtpPlug/src/main/java/{org → aria}/apache/commons/net/ftp/parser/MacOsPeterFTPEntryParser.java
  47. +6 −6 AriaFtpPlug/src/main/java/{org → aria}/apache/commons/net/ftp/parser/NTFTPEntryParser.java
  48. +5 −5 AriaFtpPlug/src/main/java/{org → aria}/apache/commons/net/ftp/parser/NetwareFTPEntryParser.java
  49. +5 −5 AriaFtpPlug/src/main/java/{org → aria}/apache/commons/net/ftp/parser/OS2FTPEntryParser.java
  50. +3 −4 AriaFtpPlug/src/main/java/{org → aria}/apache/commons/net/ftp/parser/OS400FTPEntryParser.java
  51. +1 −1 ...pPlug/src/main/java/{org → aria}/apache/commons/net/ftp/parser/ParserInitializationException.java
  52. +2 −3 ...FtpPlug/src/main/java/{org → aria}/apache/commons/net/ftp/parser/RegexFTPFileEntryParserImpl.java
  53. +5 −5 AriaFtpPlug/src/main/java/{org → aria}/apache/commons/net/ftp/parser/UnixFTPEntryParser.java
  54. +9 −8 AriaFtpPlug/src/main/java/{org → aria}/apache/commons/net/ftp/parser/VMSFTPEntryParser.java
  55. +4 −4 ...FtpPlug/src/main/java/{org → aria}/apache/commons/net/ftp/parser/VMSVersioningFTPEntryParser.java
  56. +1 −1 AriaFtpPlug/src/main/java/{org → aria}/apache/commons/net/ftp/parser/package-info.java
  57. +1 −1 AriaFtpPlug/src/main/java/{org → aria}/apache/commons/net/io/CRLFLineReader.java
  58. +2 −2 AriaFtpPlug/src/main/java/{org → aria}/apache/commons/net/io/CopyStreamAdapter.java
  59. +1 −1 AriaFtpPlug/src/main/java/{org → aria}/apache/commons/net/io/CopyStreamEvent.java
  60. +1 −1 AriaFtpPlug/src/main/java/{org → aria}/apache/commons/net/io/CopyStreamException.java
  61. +1 −1 AriaFtpPlug/src/main/java/{org → aria}/apache/commons/net/io/CopyStreamListener.java
  62. +1 −1 AriaFtpPlug/src/main/java/{org → aria}/apache/commons/net/io/DotTerminatedMessageReader.java
  63. +1 −1 AriaFtpPlug/src/main/java/{org → aria}/apache/commons/net/io/DotTerminatedMessageWriter.java
  64. +1 −1 AriaFtpPlug/src/main/java/{org → aria}/apache/commons/net/io/FromNetASCIIInputStream.java
  65. +1 −1 AriaFtpPlug/src/main/java/{org → aria}/apache/commons/net/io/FromNetASCIIOutputStream.java
  66. +1 −1 AriaFtpPlug/src/main/java/{org → aria}/apache/commons/net/io/SocketInputStream.java
  67. +1 −1 AriaFtpPlug/src/main/java/{org → aria}/apache/commons/net/io/SocketOutputStream.java
  68. +1 −1 AriaFtpPlug/src/main/java/{org → aria}/apache/commons/net/io/ToNetASCIIInputStream.java
  69. +1 −1 AriaFtpPlug/src/main/java/{org → aria}/apache/commons/net/io/ToNetASCIIOutputStream.java
  70. +1 −1 AriaFtpPlug/src/main/java/{org → aria}/apache/commons/net/io/Util.java
  71. +1 −1 AriaFtpPlug/src/main/java/{org → aria}/apache/commons/net/io/package-info.java
  72. +1 −1 AriaFtpPlug/src/main/java/{org → aria}/apache/commons/net/util/Base64.java
  73. +1 −1 AriaFtpPlug/src/main/java/{org → aria}/apache/commons/net/util/Charsets.java
  74. +2 −3 AriaFtpPlug/src/main/java/{org → aria}/apache/commons/net/util/KeyManagerUtils.java
  75. +1 −1 AriaFtpPlug/src/main/java/{org → aria}/apache/commons/net/util/ListenerList.java
  76. +1 −1 AriaFtpPlug/src/main/java/{org → aria}/apache/commons/net/util/SSLContextUtils.java
  77. +1 −1 AriaFtpPlug/src/main/java/{org → aria}/apache/commons/net/util/SSLSocketUtils.java
  78. +1 −1 AriaFtpPlug/src/main/java/{org → aria}/apache/commons/net/util/SubnetUtils.java
  79. +1 −1 AriaFtpPlug/src/main/java/{org → aria}/apache/commons/net/util/TrustManagerUtils.java
  80. +1 −1 AriaFtpPlug/src/main/java/{org → aria}/apache/commons/net/util/package-info.java
  81. +1 −0 DEV_LOG.md
  82. +2 −2 build.gradle
  83. +2 −2 gradle.properties
View
@@ -30,4 +30,4 @@ dependencies {
// compile project(':AriaFtpPlug')
}
apply from: 'bintray-release.gradle'
//apply from: 'bintray-release.gradle'
@@ -11,4 +11,4 @@ dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
}
apply from: 'bintray-release.gradle'
//apply from: 'bintray-release.gradle'
@@ -14,4 +14,4 @@ dependencies {
compile project(':AriaAnnotations')
}
apply from: 'bintray-release.gradle'
//apply from: 'bintray-release.gradle'
View
@@ -11,4 +11,4 @@ dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
}
//apply from: 'bintray-release.gradle'
apply from: 'bintray-release.gradle'
@@ -15,7 +15,7 @@
* limitations under the License.
*/
package org.apache.commons.net;
package aria.apache.commons.net;
import java.net.DatagramSocket;
import java.net.InetAddress;
@@ -33,7 +33,7 @@
* especially useful for adding things like proxy support as well as better
* support for applets. For
* example, you could create a
* {@link org.apache.commons.net.DatagramSocketFactory}
* {@link DatagramSocketFactory}
* that
* requests browser security capabilities before creating a socket.
* All classes derived from DatagramSocketClient should use the
@@ -15,7 +15,7 @@
* limitations under the License.
*/
package org.apache.commons.net;
package aria.apache.commons.net;
import java.net.DatagramSocket;
import java.net.InetAddress;
@@ -15,7 +15,7 @@
* limitations under the License.
*/
package org.apache.commons.net;
package aria.apache.commons.net;
import java.net.DatagramSocket;
import java.net.InetAddress;
@@ -15,7 +15,7 @@
* limitations under the License.
*/
package org.apache.commons.net;
package aria.apache.commons.net;
import java.io.IOException;
import java.net.InetAddress;
@@ -15,7 +15,7 @@
* limitations under the License.
*/
package org.apache.commons.net;
package aria.apache.commons.net;
import java.io.IOException;
@@ -15,7 +15,7 @@
* limitations under the License.
*/
package org.apache.commons.net;
package aria.apache.commons.net;
import java.io.PrintStream;
import java.io.PrintWriter;
@@ -15,7 +15,7 @@
* limitations under the License.
*/
package org.apache.commons.net;
package aria.apache.commons.net;
import java.util.EventObject;
@@ -25,7 +25,7 @@
* ASCII text reply. For debugging and other purposes, it is extremely
* useful to log or keep track of the contents of the protocol messages.
* The ProtocolCommandEvent class coupled with the
* {@link org.apache.commons.net.ProtocolCommandListener}
* {@link ProtocolCommandListener}
* interface facilitate this process.
*
*
@@ -15,8 +15,9 @@
* limitations under the License.
*/
package org.apache.commons.net;
package aria.apache.commons.net;
import aria.apache.commons.net.ftp.FTPClient;
import java.util.EventListener;
/***
@@ -30,7 +31,7 @@
* To receive ProtocolCommandEvents, you merely implement the
* ProtocolCommandListener interface and register the class as a listener
* with a ProtocolCommandEvent source such as
* {@link org.apache.commons.net.ftp.FTPClient}.
* {@link FTPClient}.
*
*
* @see ProtocolCommandEvent
@@ -15,12 +15,12 @@
* limitations under the License.
*/
package org.apache.commons.net;
package aria.apache.commons.net;
import java.io.Serializable;
import java.util.EventListener;
import org.apache.commons.net.util.ListenerList;
import aria.apache.commons.net.util.ListenerList;
/***
* ProtocolCommandSupport is a convenience class for managing a list of
@@ -53,7 +53,7 @@ public ProtocolCommandSupport(Object source) {
/***
* Fires a ProtocolCommandEvent signalling the sending of a command to all
* registered listeners, invoking their
* {@link org.apache.commons.net.ProtocolCommandListener#protocolCommandSent protocolCommandSent() }
* {@link ProtocolCommandListener#protocolCommandSent protocolCommandSent() }
* methods.
*
* @param command The string representation of the command type sent, not
@@ -74,7 +74,7 @@ public void fireCommandSent(String command, String message) {
/***
* Fires a ProtocolCommandEvent signalling the reception of a command reply
* to all registered listeners, invoking their
* {@link org.apache.commons.net.ProtocolCommandListener#protocolReplyReceived protocolReplyReceived() }
* {@link ProtocolCommandListener#protocolReplyReceived protocolReplyReceived() }
* methods.
*
* @param replyCode The integer code indicating the natureof the reply.
@@ -15,7 +15,7 @@
* limitations under the License.
*/
package org.apache.commons.net;
package aria.apache.commons.net;
import java.io.Closeable;
import java.io.IOException;
@@ -119,7 +119,7 @@
* _socket_ to null, _timeout_ to 0, _defaultPort to 0,
* _isConnected_ to false, charset to {@code Charset.defaultCharset()}
* and _socketFactory_ to a shared instance of
* {@link org.apache.commons.net.DefaultSocketFactory}.
* {@link DefaultSocketFactory}.
*/
public SocketClient() {
_socket_ = null;
@@ -15,7 +15,7 @@
* limitations under the License.
*/
package org.apache.commons.net.ftp;
package aria.apache.commons.net.ftp;
/**
* This interface adds the aspect of configurability by means of
@@ -15,7 +15,7 @@
* limitations under the License.
*/
package org.apache.commons.net.ftp;
package aria.apache.commons.net.ftp;
import java.io.BufferedReader;
import java.io.BufferedWriter;
@@ -30,21 +30,21 @@
import java.net.SocketTimeoutException;
import java.util.ArrayList;
import org.apache.commons.net.MalformedServerReplyException;
import org.apache.commons.net.ProtocolCommandSupport;
import org.apache.commons.net.SocketClient;
import org.apache.commons.net.io.CRLFLineReader;
import aria.apache.commons.net.MalformedServerReplyException;
import aria.apache.commons.net.ProtocolCommandSupport;
import aria.apache.commons.net.SocketClient;
import aria.apache.commons.net.io.CRLFLineReader;
/***
* FTP provides the basic the functionality necessary to implement your
* own FTP client. It extends org.apache.commons.net.SocketClient since
* own FTP client. It extends SocketClient since
* extending TelnetClient was causing unwanted behavior (like connections
* that did not time out properly).
* <p>
* To derive the full benefits of the FTP class requires some knowledge
* of the FTP protocol defined in RFC 959. However, there is no reason
* why you should have to use the FTP class. The
* {@link org.apache.commons.net.ftp.FTPClient} class,
* {@link FTPClient} class,
* derived from FTP,
* implements all the functionality required of an FTP client. The
* FTP class is made public to provide access to various FTP constants
@@ -57,16 +57,16 @@
* close a connection if the client has been idle for longer than a
* given time period (usually 900 seconds). The FTP class will detect a
* premature FTP server connection closing when it receives a
* {@link org.apache.commons.net.ftp.FTPReply#SERVICE_NOT_AVAILABLE FTPReply.SERVICE_NOT_AVAILABLE }
* {@link FTPReply#SERVICE_NOT_AVAILABLE FTPReply.SERVICE_NOT_AVAILABLE }
* response to a command.
* When that occurs, the FTP class method encountering that reply will throw
* an {@link org.apache.commons.net.ftp.FTPConnectionClosedException}
* an {@link FTPConnectionClosedException}
* . <code>FTPConectionClosedException</code>
* is a subclass of <code> IOException </code> and therefore need not be
* caught separately, but if you are going to catch it separately, its
* catch block must appear before the more general <code> IOException </code>
* catch block. When you encounter an
* {@link org.apache.commons.net.ftp.FTPConnectionClosedException}
* {@link FTPConnectionClosedException}
* , you must disconnect the connection with
* {@link #disconnect disconnect() } to properly clean up the
* system resources used by FTP. Before disconnecting, you may check the
@@ -80,7 +80,7 @@
* Rather than list it separately for each method, we mention here that
* every method communicating with the server and throwing an IOException
* can also throw a
* {@link org.apache.commons.net.MalformedServerReplyException}
* {@link MalformedServerReplyException}
* , which is a subclass
* of IOException. A MalformedServerReplyException will be thrown when
* the reply received from the server deviates enough from the protocol
@@ -89,7 +89,7 @@
*
* @see FTPClient
* @see FTPConnectionClosedException
* @see org.apache.commons.net.MalformedServerReplyException
* @see MalformedServerReplyException
* @version $Id: FTP.java 1782546 2017-02-11 00:05:41Z sebb $
***/
@@ -1105,7 +1105,7 @@ public int mode(int mode) throws IOException {
* A convenience method to send the FTP RETR command to the server,
* receive the reply, and return the reply code. Remember, it is up
* to you to manage the data connection. If you don't need this low
* level of access, use {@link org.apache.commons.net.ftp.FTPClient}
* level of access, use {@link FTPClient}
* , which will handle all low level details for you.
*
* @param pathname The pathname of the file to retrieve.
@@ -1126,7 +1126,7 @@ public int retr(String pathname) throws IOException {
* A convenience method to send the FTP STOR command to the server,
* receive the reply, and return the reply code. Remember, it is up
* to you to manage the data connection. If you don't need this low
* level of access, use {@link org.apache.commons.net.ftp.FTPClient}
* level of access, use {@link FTPClient}
* , which will handle all low level details for you.
*
* @param pathname The pathname to use for the file when stored at
@@ -1148,7 +1148,7 @@ public int stor(String pathname) throws IOException {
* A convenience method to send the FTP STOU command to the server,
* receive the reply, and return the reply code. Remember, it is up
* to you to manage the data connection. If you don't need this low
* level of access, use {@link org.apache.commons.net.ftp.FTPClient}
* level of access, use {@link FTPClient}
* , which will handle all low level details for you.
*
* @return The reply code received from the server.
@@ -1168,7 +1168,7 @@ public int stou() throws IOException {
* A convenience method to send the FTP STOU command to the server,
* receive the reply, and return the reply code. Remember, it is up
* to you to manage the data connection. If you don't need this low
* level of access, use {@link org.apache.commons.net.ftp.FTPClient}
* level of access, use {@link FTPClient}
* , which will handle all low level details for you.
* @param pathname The base pathname to use for the file when stored at
* the remote end of the transfer. Some FTP servers
@@ -1190,7 +1190,7 @@ public int stou(String pathname) throws IOException {
* A convenience method to send the FTP APPE command to the server,
* receive the reply, and return the reply code. Remember, it is up
* to you to manage the data connection. If you don't need this low
* level of access, use {@link org.apache.commons.net.ftp.FTPClient}
* level of access, use {@link FTPClient}
* , which will handle all low level details for you.
*
* @param pathname The pathname to use for the file when stored at
@@ -1418,7 +1418,7 @@ public int pwd() throws IOException {
* A convenience method to send the FTP LIST command to the server,
* receive the reply, and return the reply code. Remember, it is up
* to you to manage the data connection. If you don't need this low
* level of access, use {@link org.apache.commons.net.ftp.FTPClient}
* level of access, use {@link FTPClient}
* , which will handle all low level details for you.
*
* @return The reply code received from the server.
@@ -1438,7 +1438,7 @@ public int list() throws IOException {
* A convenience method to send the FTP LIST command to the server,
* receive the reply, and return the reply code. Remember, it is up
* to you to manage the data connection. If you don't need this low
* level of access, use {@link org.apache.commons.net.ftp.FTPClient}
* level of access, use {@link FTPClient}
* , which will handle all low level details for you.
*
* @param pathname The pathname to list,
@@ -1460,7 +1460,7 @@ public int list(String pathname) throws IOException {
* A convenience method to send the FTP MLSD command to the server,
* receive the reply, and return the reply code. Remember, it is up
* to you to manage the data connection. If you don't need this low
* level of access, use {@link org.apache.commons.net.ftp.FTPClient}
* level of access, use {@link FTPClient}
* , which will handle all low level details for you.
*
* @return The reply code received from the server.
@@ -1481,7 +1481,7 @@ public int mlsd() throws IOException {
* A convenience method to send the FTP MLSD command to the server,
* receive the reply, and return the reply code. Remember, it is up
* to you to manage the data connection. If you don't need this low
* level of access, use {@link org.apache.commons.net.ftp.FTPClient}
* level of access, use {@link FTPClient}
* , which will handle all low level details for you.
*
* @param path the path to report on
@@ -1504,7 +1504,7 @@ public int mlsd(String path) throws IOException {
* A convenience method to send the FTP MLST command to the server,
* receive the reply, and return the reply code. Remember, it is up
* to you to manage the data connection. If you don't need this low
* level of access, use {@link org.apache.commons.net.ftp.FTPClient}
* level of access, use {@link FTPClient}
* , which will handle all low level details for you.
*
* @return The reply code received from the server.
@@ -1525,7 +1525,7 @@ public int mlst() throws IOException {
* A convenience method to send the FTP MLST command to the server,
* receive the reply, and return the reply code. Remember, it is up
* to you to manage the data connection. If you don't need this low
* level of access, use {@link org.apache.commons.net.ftp.FTPClient}
* level of access, use {@link FTPClient}
* , which will handle all low level details for you.
*
* @param path the path to report on
@@ -1548,7 +1548,7 @@ public int mlst(String path) throws IOException {
* A convenience method to send the FTP NLST command to the server,
* receive the reply, and return the reply code. Remember, it is up
* to you to manage the data connection. If you don't need this low
* level of access, use {@link org.apache.commons.net.ftp.FTPClient}
* level of access, use {@link FTPClient}
* , which will handle all low level details for you.
*
* @return The reply code received from the server.
@@ -1568,7 +1568,7 @@ public int nlst() throws IOException {
* A convenience method to send the FTP NLST command to the server,
* receive the reply, and return the reply code. Remember, it is up
* to you to manage the data connection. If you don't need this low
* level of access, use {@link org.apache.commons.net.ftp.FTPClient}
* level of access, use {@link FTPClient}
* , which will handle all low level details for you.
*
* @param pathname The pathname to list,
Oops, something went wrong.

0 comments on commit e22e2dc

Please sign in to comment.