// Path: src/main/java/com/google/gwt/emul/java/io/BufferedReader.java
// public class BufferedReader extends Reader {
// 
//     /** The next saved character. */
//     private int savedNextChar;
// 
//     private Reader source;
// 
//     /**
//      * Constructor.
//      * 
//      * @param source
//      *            The source reader.
//      */
//     public BufferedReader(Reader source) {
//         this.source = source;
//         this.savedNextChar = -2;
//     }
// 
//     /**
//      * Constructor.
//      * 
//      * @param source
//      *            The source reader.
//      * @param size
//      *            The size of the buffer.
//      */
//     public BufferedReader(Reader source, int size) {
//         this.source = source;
//         this.savedNextChar = -2;
//     }
//     
//     /**
//      * 
//      */
//     public void close() throws IOException {
// 
//     }
// 
//     /**
//      * Returns the source reader.
//      * 
//      * @return The source reader.
//      */
//     private Reader getSource() {
//         return source;
//     }
// 
//     /**
//      * Returns the next character, either the saved one or the next one from the
//      * source reader.
//      * 
//      * @return The next character.
//      * @throws IOException
//      */
//     public int read() throws IOException {
//         int result = -1;
// 
//         if (this.savedNextChar != -2) {
//             result = this.savedNextChar;
//             this.savedNextChar = -2;
//         } else {
//             result = getSource().read();
//         }
// 
//         return result;
//     }
// 
//     @Override
//     public int read(char[] cbuf, int off, int len) throws IOException {
//         return source.read(cbuf, off, len);
//     }
// 
//     /**
//      * Reads the next line of characters.
//      * 
//      * @return The next line.
//      */
//     public String readLine() throws IOException {
//         StringBuilder sb = null;
//         boolean eol = false;
//         int nextChar = read();
// 
//         while (!eol && (nextChar != -1)) {
//             if (nextChar == 10) {
//                 eol = true;
//             } else if (nextChar == 13) {
//                 eol = true;
// 
//                 // Check if there is a immediate LF following the CR
//                 nextChar = read();
//                 if (nextChar != 10) {
//                     this.savedNextChar = nextChar;
//                 }
//             }
// 
//             if (!eol) {
//                 if (sb == null) {
//                     sb = new StringBuilder();
//                 }
// 
//                 sb.append((char) nextChar);
//                 nextChar = read();
//             }
// 
//         }
// 
//         return (sb == null) ? null : sb.toString();
//     }
// }


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;
import java.util.List;
import java.util.Map;
import org.markdown4j.Plugin;


		try {
			String link = getSequenceDiagram(content, style);

			if (link != null) {
				out.append("<img src=\"");
				out.append(link);
				out.append("\"/>");
			}
		} catch (IOException e) {
			throw new RuntimeException("Error while rendering websequenceplugin", e);
		}
	}

	private String getSequenceDiagram(String text, String style) throws IOException {
		// Build parameter string
		String data = "style=" + style + "&message=" + URLEncoder.encode(text, "UTF-8") + "&apiVersion=1";

		// Send the request
		URL url = new URL("http://www.websequencediagrams.com");
		URLConnection conn = url.openConnection();
		conn.setDoOutput(true);
		OutputStreamWriter writer = new OutputStreamWriter(conn.getOutputStream());

		// write parameters
		writer.write(data);
		writer.flush();

		// Get the response
		StringBuffer answer = new StringBuffer();

// Path: src/main/java/com/google/gwt/emul/java/io/BufferedReader.java
// public class BufferedReader extends Reader {
// 
//     /** The next saved character. */
//     private int savedNextChar;
// 
//     private Reader source;
// 
//     /**
//      * Constructor.
//      * 
//      * @param source
//      *            The source reader.
//      */
//     public BufferedReader(Reader source) {
//         this.source = source;
//         this.savedNextChar = -2;
//     }
// 
//     /**
//      * Constructor.
//      * 
//      * @param source
//      *            The source reader.
//      * @param size
//      *            The size of the buffer.
//      */
//     public BufferedReader(Reader source, int size) {
//         this.source = source;
//         this.savedNextChar = -2;
//     }
//     
//     /**
//      * 
//      */
//     public void close() throws IOException {
// 
//     }
// 
//     /**
//      * Returns the source reader.
//      * 
//      * @return The source reader.
//      */
//     private Reader getSource() {
//         return source;
//     }
// 
//     /**
//      * Returns the next character, either the saved one or the next one from the
//      * source reader.
//      * 
//      * @return The next character.
//      * @throws IOException
//      */
//     public int read() throws IOException {
//         int result = -1;
// 
//         if (this.savedNextChar != -2) {
//             result = this.savedNextChar;
//             this.savedNextChar = -2;
//         } else {
//             result = getSource().read();
//         }
// 
//         return result;
//     }
// 
//     @Override
//     public int read(char[] cbuf, int off, int len) throws IOException {
//         return source.read(cbuf, off, len);
//     }
// 
//     /**
//      * Reads the next line of characters.
//      * 
//      * @return The next line.
//      */
//     public String readLine() throws IOException {
//         StringBuilder sb = null;
//         boolean eol = false;
//         int nextChar = read();
// 
//         while (!eol && (nextChar != -1)) {
//             if (nextChar == 10) {
//                 eol = true;
//             } else if (nextChar == 13) {
//                 eol = true;
// 
//                 // Check if there is a immediate LF following the CR
//                 nextChar = read();
//                 if (nextChar != 10) {
//                     this.savedNextChar = nextChar;
//                 }
//             }
// 
//             if (!eol) {
//                 if (sb == null) {
//                     sb = new StringBuilder();
//                 }
// 
//                 sb.append((char) nextChar);
//                 nextChar = read();
//             }
// 
//         }
// 
//         return (sb == null) ? null : sb.toString();
//     }
// }


// Path: src/main/java/org/markdown4j/server/WebSequencePlugin.java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;
import java.util.List;
import java.util.Map;
import org.markdown4j.Plugin;


		try {
			String link = getSequenceDiagram(content, style);

			if (link != null) {
				out.append("<img src=\"");
				out.append(link);
				out.append("\"/>");
			}
		} catch (IOException e) {
			throw new RuntimeException("Error while rendering websequenceplugin", e);
		}
	}

	private String getSequenceDiagram(String text, String style) throws IOException {
		// Build parameter string
		String data = "style=" + style + "&message=" + URLEncoder.encode(text, "UTF-8") + "&apiVersion=1";

		// Send the request
		URL url = new URL("http://www.websequencediagrams.com");
		URLConnection conn = url.openConnection();
		conn.setDoOutput(true);
		OutputStreamWriter writer = new OutputStreamWriter(conn.getOutputStream());

		// write parameters
		writer.write(data);
		writer.flush();

		// Get the response
		StringBuffer answer = new StringBuffer();

		BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
