<?xml version="1.0" encoding="utf-8"?>
<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:tns="http://wren.cis.upenn.edu/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" targetNamespace="http://wren.cis.upenn.edu/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
  <wsdl:types>
    <s:schema elementFormDefault="qualified" targetNamespace="http://wren.cis.upenn.edu/">
      <s:element name="RegisterUser">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="0" maxOccurs="1" name="userID" type="s:string" />
            <s:element minOccurs="0" maxOccurs="1" name="displayName" type="s:string" />
            <s:element minOccurs="0" maxOccurs="1" name="password" type="s:string" />
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:element name="RegisterUserResponse">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="1" maxOccurs="1" name="RegisterUserResult" type="s:boolean" />
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:element name="PasswordOK">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="0" maxOccurs="1" name="userID" type="s:string" />
            <s:element minOccurs="0" maxOccurs="1" name="password" type="s:string" />
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:element name="PasswordOKResponse">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="1" maxOccurs="1" name="PasswordOKResult" type="s:boolean" />
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:element name="GetUserDisplayName">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="0" maxOccurs="1" name="userID" type="s:string" />
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:element name="GetUserDisplayNameResponse">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="0" maxOccurs="1" name="GetUserDisplayNameResult" type="s:string" />
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:element name="UserExists">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="0" maxOccurs="1" name="userID" type="s:string" />
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:element name="UserExistsResponse">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="1" maxOccurs="1" name="UserExistsResult" type="s:boolean" />
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:element name="BlogIDExists">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="1" maxOccurs="1" name="blogID" type="s:int" />
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:element name="BlogIDExistsResponse">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="1" maxOccurs="1" name="BlogIDExistsResult" type="s:boolean" />
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:element name="CommentIDExists">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="1" maxOccurs="1" name="commentID" type="s:int" />
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:element name="CommentIDExistsResponse">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="1" maxOccurs="1" name="CommentIDExistsResult" type="s:boolean" />
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:element name="BlogIDMatchesUser">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="0" maxOccurs="1" name="userID" type="s:string" />
            <s:element minOccurs="1" maxOccurs="1" name="blogID" type="s:int" />
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:element name="BlogIDMatchesUserResponse">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="1" maxOccurs="1" name="BlogIDMatchesUserResult" type="s:boolean" />
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:element name="GetPageLength">
        <s:complexType />
      </s:element>
      <s:element name="GetPageLengthResponse">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="1" maxOccurs="1" name="GetPageLengthResult" type="s:int" />
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:element name="GetTitleLength">
        <s:complexType />
      </s:element>
      <s:element name="GetTitleLengthResponse">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="1" maxOccurs="1" name="GetTitleLengthResult" type="s:int" />
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:element name="GetCommentLength">
        <s:complexType />
      </s:element>
      <s:element name="GetCommentLengthResponse">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="1" maxOccurs="1" name="GetCommentLengthResult" type="s:int" />
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:element name="PostBlog">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="0" maxOccurs="1" name="userID" type="s:string" />
            <s:element minOccurs="0" maxOccurs="1" name="password" type="s:string" />
            <s:element minOccurs="0" maxOccurs="1" name="title" type="s:string" />
            <s:element minOccurs="0" maxOccurs="1" name="body" type="s:string" />
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:element name="PostBlogResponse">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="1" maxOccurs="1" name="PostBlogResult" type="s:int" />
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:element name="PostBlogComment">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="0" maxOccurs="1" name="userID" type="s:string" />
            <s:element minOccurs="0" maxOccurs="1" name="password" type="s:string" />
            <s:element minOccurs="1" maxOccurs="1" name="blogID" type="s:int" />
            <s:element minOccurs="0" maxOccurs="1" name="body" type="s:string" />
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:element name="PostBlogCommentResponse">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="1" maxOccurs="1" name="PostBlogCommentResult" type="s:int" />
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:element name="boolean" type="s:boolean" />
      <s:element name="string" nillable="true" type="s:string" />
      <s:element name="int" type="s:int" />
    </s:schema>
  </wsdl:types>
  <wsdl:message name="RegisterUserSoapIn">
    <wsdl:part name="parameters" element="tns:RegisterUser" />
  </wsdl:message>
  <wsdl:message name="RegisterUserSoapOut">
    <wsdl:part name="parameters" element="tns:RegisterUserResponse" />
  </wsdl:message>
  <wsdl:message name="PasswordOKSoapIn">
    <wsdl:part name="parameters" element="tns:PasswordOK" />
  </wsdl:message>
  <wsdl:message name="PasswordOKSoapOut">
    <wsdl:part name="parameters" element="tns:PasswordOKResponse" />
  </wsdl:message>
  <wsdl:message name="GetUserDisplayNameSoapIn">
    <wsdl:part name="parameters" element="tns:GetUserDisplayName" />
  </wsdl:message>
  <wsdl:message name="GetUserDisplayNameSoapOut">
    <wsdl:part name="parameters" element="tns:GetUserDisplayNameResponse" />
  </wsdl:message>
  <wsdl:message name="UserExistsSoapIn">
    <wsdl:part name="parameters" element="tns:UserExists" />
  </wsdl:message>
  <wsdl:message name="UserExistsSoapOut">
    <wsdl:part name="parameters" element="tns:UserExistsResponse" />
  </wsdl:message>
  <wsdl:message name="BlogIDExistsSoapIn">
    <wsdl:part name="parameters" element="tns:BlogIDExists" />
  </wsdl:message>
  <wsdl:message name="BlogIDExistsSoapOut">
    <wsdl:part name="parameters" element="tns:BlogIDExistsResponse" />
  </wsdl:message>
  <wsdl:message name="CommentIDExistsSoapIn">
    <wsdl:part name="parameters" element="tns:CommentIDExists" />
  </wsdl:message>
  <wsdl:message name="CommentIDExistsSoapOut">
    <wsdl:part name="parameters" element="tns:CommentIDExistsResponse" />
  </wsdl:message>
  <wsdl:message name="BlogIDMatchesUserSoapIn">
    <wsdl:part name="parameters" element="tns:BlogIDMatchesUser" />
  </wsdl:message>
  <wsdl:message name="BlogIDMatchesUserSoapOut">
    <wsdl:part name="parameters" element="tns:BlogIDMatchesUserResponse" />
  </wsdl:message>
  <wsdl:message name="GetPageLengthSoapIn">
    <wsdl:part name="parameters" element="tns:GetPageLength" />
  </wsdl:message>
  <wsdl:message name="GetPageLengthSoapOut">
    <wsdl:part name="parameters" element="tns:GetPageLengthResponse" />
  </wsdl:message>
  <wsdl:message name="GetTitleLengthSoapIn">
    <wsdl:part name="parameters" element="tns:GetTitleLength" />
  </wsdl:message>
  <wsdl:message name="GetTitleLengthSoapOut">
    <wsdl:part name="parameters" element="tns:GetTitleLengthResponse" />
  </wsdl:message>
  <wsdl:message name="GetCommentLengthSoapIn">
    <wsdl:part name="parameters" element="tns:GetCommentLength" />
  </wsdl:message>
  <wsdl:message name="GetCommentLengthSoapOut">
    <wsdl:part name="parameters" element="tns:GetCommentLengthResponse" />
  </wsdl:message>
  <wsdl:message name="PostBlogSoapIn">
    <wsdl:part name="parameters" element="tns:PostBlog" />
  </wsdl:message>
  <wsdl:message name="PostBlogSoapOut">
    <wsdl:part name="parameters" element="tns:PostBlogResponse" />
  </wsdl:message>
  <wsdl:message name="PostBlogCommentSoapIn">
    <wsdl:part name="parameters" element="tns:PostBlogComment" />
  </wsdl:message>
  <wsdl:message name="PostBlogCommentSoapOut">
    <wsdl:part name="parameters" element="tns:PostBlogCommentResponse" />
  </wsdl:message>
  <wsdl:message name="RegisterUserHttpGetIn">
    <wsdl:part name="userID" type="s:string" />
    <wsdl:part name="displayName" type="s:string" />
    <wsdl:part name="password" type="s:string" />
  </wsdl:message>
  <wsdl:message name="RegisterUserHttpGetOut">
    <wsdl:part name="Body" element="tns:boolean" />
  </wsdl:message>
  <wsdl:message name="PasswordOKHttpGetIn">
    <wsdl:part name="userID" type="s:string" />
    <wsdl:part name="password" type="s:string" />
  </wsdl:message>
  <wsdl:message name="PasswordOKHttpGetOut">
    <wsdl:part name="Body" element="tns:boolean" />
  </wsdl:message>
  <wsdl:message name="GetUserDisplayNameHttpGetIn">
    <wsdl:part name="userID" type="s:string" />
  </wsdl:message>
  <wsdl:message name="GetUserDisplayNameHttpGetOut">
    <wsdl:part name="Body" element="tns:string" />
  </wsdl:message>
  <wsdl:message name="UserExistsHttpGetIn">
    <wsdl:part name="userID" type="s:string" />
  </wsdl:message>
  <wsdl:message name="UserExistsHttpGetOut">
    <wsdl:part name="Body" element="tns:boolean" />
  </wsdl:message>
  <wsdl:message name="BlogIDExistsHttpGetIn">
    <wsdl:part name="blogID" type="s:string" />
  </wsdl:message>
  <wsdl:message name="BlogIDExistsHttpGetOut">
    <wsdl:part name="Body" element="tns:boolean" />
  </wsdl:message>
  <wsdl:message name="CommentIDExistsHttpGetIn">
    <wsdl:part name="commentID" type="s:string" />
  </wsdl:message>
  <wsdl:message name="CommentIDExistsHttpGetOut">
    <wsdl:part name="Body" element="tns:boolean" />
  </wsdl:message>
  <wsdl:message name="BlogIDMatchesUserHttpGetIn">
    <wsdl:part name="userID" type="s:string" />
    <wsdl:part name="blogID" type="s:string" />
  </wsdl:message>
  <wsdl:message name="BlogIDMatchesUserHttpGetOut">
    <wsdl:part name="Body" element="tns:boolean" />
  </wsdl:message>
  <wsdl:message name="GetPageLengthHttpGetIn" />
  <wsdl:message name="GetPageLengthHttpGetOut">
    <wsdl:part name="Body" element="tns:int" />
  </wsdl:message>
  <wsdl:message name="GetTitleLengthHttpGetIn" />
  <wsdl:message name="GetTitleLengthHttpGetOut">
    <wsdl:part name="Body" element="tns:int" />
  </wsdl:message>
  <wsdl:message name="GetCommentLengthHttpGetIn" />
  <wsdl:message name="GetCommentLengthHttpGetOut">
    <wsdl:part name="Body" element="tns:int" />
  </wsdl:message>
  <wsdl:message name="PostBlogHttpGetIn">
    <wsdl:part name="userID" type="s:string" />
    <wsdl:part name="password" type="s:string" />
    <wsdl:part name="title" type="s:string" />
    <wsdl:part name="body" type="s:string" />
  </wsdl:message>
  <wsdl:message name="PostBlogHttpGetOut">
    <wsdl:part name="Body" element="tns:int" />
  </wsdl:message>
  <wsdl:message name="PostBlogCommentHttpGetIn">
    <wsdl:part name="userID" type="s:string" />
    <wsdl:part name="password" type="s:string" />
    <wsdl:part name="blogID" type="s:string" />
    <wsdl:part name="body" type="s:string" />
  </wsdl:message>
  <wsdl:message name="PostBlogCommentHttpGetOut">
    <wsdl:part name="Body" element="tns:int" />
  </wsdl:message>
  <wsdl:message name="RegisterUserHttpPostIn">
    <wsdl:part name="userID" type="s:string" />
    <wsdl:part name="displayName" type="s:string" />
    <wsdl:part name="password" type="s:string" />
  </wsdl:message>
  <wsdl:message name="RegisterUserHttpPostOut">
    <wsdl:part name="Body" element="tns:boolean" />
  </wsdl:message>
  <wsdl:message name="PasswordOKHttpPostIn">
    <wsdl:part name="userID" type="s:string" />
    <wsdl:part name="password" type="s:string" />
  </wsdl:message>
  <wsdl:message name="PasswordOKHttpPostOut">
    <wsdl:part name="Body" element="tns:boolean" />
  </wsdl:message>
  <wsdl:message name="GetUserDisplayNameHttpPostIn">
    <wsdl:part name="userID" type="s:string" />
  </wsdl:message>
  <wsdl:message name="GetUserDisplayNameHttpPostOut">
    <wsdl:part name="Body" element="tns:string" />
  </wsdl:message>
  <wsdl:message name="UserExistsHttpPostIn">
    <wsdl:part name="userID" type="s:string" />
  </wsdl:message>
  <wsdl:message name="UserExistsHttpPostOut">
    <wsdl:part name="Body" element="tns:boolean" />
  </wsdl:message>
  <wsdl:message name="BlogIDExistsHttpPostIn">
    <wsdl:part name="blogID" type="s:string" />
  </wsdl:message>
  <wsdl:message name="BlogIDExistsHttpPostOut">
    <wsdl:part name="Body" element="tns:boolean" />
  </wsdl:message>
  <wsdl:message name="CommentIDExistsHttpPostIn">
    <wsdl:part name="commentID" type="s:string" />
  </wsdl:message>
  <wsdl:message name="CommentIDExistsHttpPostOut">
    <wsdl:part name="Body" element="tns:boolean" />
  </wsdl:message>
  <wsdl:message name="BlogIDMatchesUserHttpPostIn">
    <wsdl:part name="userID" type="s:string" />
    <wsdl:part name="blogID" type="s:string" />
  </wsdl:message>
  <wsdl:message name="BlogIDMatchesUserHttpPostOut">
    <wsdl:part name="Body" element="tns:boolean" />
  </wsdl:message>
  <wsdl:message name="GetPageLengthHttpPostIn" />
  <wsdl:message name="GetPageLengthHttpPostOut">
    <wsdl:part name="Body" element="tns:int" />
  </wsdl:message>
  <wsdl:message name="GetTitleLengthHttpPostIn" />
  <wsdl:message name="GetTitleLengthHttpPostOut">
    <wsdl:part name="Body" element="tns:int" />
  </wsdl:message>
  <wsdl:message name="GetCommentLengthHttpPostIn" />
  <wsdl:message name="GetCommentLengthHttpPostOut">
    <wsdl:part name="Body" element="tns:int" />
  </wsdl:message>
  <wsdl:message name="PostBlogHttpPostIn">
    <wsdl:part name="userID" type="s:string" />
    <wsdl:part name="password" type="s:string" />
    <wsdl:part name="title" type="s:string" />
    <wsdl:part name="body" type="s:string" />
  </wsdl:message>
  <wsdl:message name="PostBlogHttpPostOut">
    <wsdl:part name="Body" element="tns:int" />
  </wsdl:message>
  <wsdl:message name="PostBlogCommentHttpPostIn">
    <wsdl:part name="userID" type="s:string" />
    <wsdl:part name="password" type="s:string" />
    <wsdl:part name="blogID" type="s:string" />
    <wsdl:part name="body" type="s:string" />
  </wsdl:message>
  <wsdl:message name="PostBlogCommentHttpPostOut">
    <wsdl:part name="Body" element="tns:int" />
  </wsdl:message>
  <wsdl:portType name="BlinkySoap">
    <wsdl:operation name="RegisterUser">
      <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Adds userID, displayName, and password to the database.  Returns false if the action fails.</wsdl:documentation>
      <wsdl:input message="tns:RegisterUserSoapIn" />
      <wsdl:output message="tns:RegisterUserSoapOut" />
    </wsdl:operation>
    <wsdl:operation name="PasswordOK">
      <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Returns true if the password matches the userID.  Returns false otherwise.</wsdl:documentation>
      <wsdl:input message="tns:PasswordOKSoapIn" />
      <wsdl:output message="tns:PasswordOKSoapOut" />
    </wsdl:operation>
    <wsdl:operation name="GetUserDisplayName">
      <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Returns the DisplayName for specified user.  Returns empty string if user doesn't exist.</wsdl:documentation>
      <wsdl:input message="tns:GetUserDisplayNameSoapIn" />
      <wsdl:output message="tns:GetUserDisplayNameSoapOut" />
    </wsdl:operation>
    <wsdl:operation name="UserExists">
      <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Returns true if user exists.  Returns false otherwise.</wsdl:documentation>
      <wsdl:input message="tns:UserExistsSoapIn" />
      <wsdl:output message="tns:UserExistsSoapOut" />
    </wsdl:operation>
    <wsdl:operation name="BlogIDExists">
      <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Returns true if a blog with the specified ID exists.  Returns false otherwise.</wsdl:documentation>
      <wsdl:input message="tns:BlogIDExistsSoapIn" />
      <wsdl:output message="tns:BlogIDExistsSoapOut" />
    </wsdl:operation>
    <wsdl:operation name="CommentIDExists">
      <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Returns true if a comment with the specified ID exists.  Returns false otherwise.</wsdl:documentation>
      <wsdl:input message="tns:CommentIDExistsSoapIn" />
      <wsdl:output message="tns:CommentIDExistsSoapOut" />
    </wsdl:operation>
    <wsdl:operation name="BlogIDMatchesUser">
      <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Returns true if the specified user has a blog with the specified id.  Returns false otherwise.</wsdl:documentation>
      <wsdl:input message="tns:BlogIDMatchesUserSoapIn" />
      <wsdl:output message="tns:BlogIDMatchesUserSoapOut" />
    </wsdl:operation>
    <wsdl:operation name="GetPageLength">
      <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Returns max length of a page.</wsdl:documentation>
      <wsdl:input message="tns:GetPageLengthSoapIn" />
      <wsdl:output message="tns:GetPageLengthSoapOut" />
    </wsdl:operation>
    <wsdl:operation name="GetTitleLength">
      <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Returns max length of a title.</wsdl:documentation>
      <wsdl:input message="tns:GetTitleLengthSoapIn" />
      <wsdl:output message="tns:GetTitleLengthSoapOut" />
    </wsdl:operation>
    <wsdl:operation name="GetCommentLength">
      <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Returns max length of a comment.</wsdl:documentation>
      <wsdl:input message="tns:GetCommentLengthSoapIn" />
      <wsdl:output message="tns:GetCommentLengthSoapOut" />
    </wsdl:operation>
    <wsdl:operation name="PostBlog">
      <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">If the userID and password match, it writes the title/blog to the database.  Returns the blogID if the action succeeds.  Returns -1 if anything fails.</wsdl:documentation>
      <wsdl:input message="tns:PostBlogSoapIn" />
      <wsdl:output message="tns:PostBlogSoapOut" />
    </wsdl:operation>
    <wsdl:operation name="PostBlogComment">
      <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">If the userID and password match, it writes the comment with body &lt;body&gt; to the blog with id blogID.  Returns the commentID if the action succeeds.  Returns -1 if anything fails.</wsdl:documentation>
      <wsdl:input message="tns:PostBlogCommentSoapIn" />
      <wsdl:output message="tns:PostBlogCommentSoapOut" />
    </wsdl:operation>
  </wsdl:portType>
  <wsdl:portType name="BlinkyHttpGet">
    <wsdl:operation name="RegisterUser">
      <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Adds userID, displayName, and password to the database.  Returns false if the action fails.</wsdl:documentation>
      <wsdl:input message="tns:RegisterUserHttpGetIn" />
      <wsdl:output message="tns:RegisterUserHttpGetOut" />
    </wsdl:operation>
    <wsdl:operation name="PasswordOK">
      <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Returns true if the password matches the userID.  Returns false otherwise.</wsdl:documentation>
      <wsdl:input message="tns:PasswordOKHttpGetIn" />
      <wsdl:output message="tns:PasswordOKHttpGetOut" />
    </wsdl:operation>
    <wsdl:operation name="GetUserDisplayName">
      <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Returns the DisplayName for specified user.  Returns empty string if user doesn't exist.</wsdl:documentation>
      <wsdl:input message="tns:GetUserDisplayNameHttpGetIn" />
      <wsdl:output message="tns:GetUserDisplayNameHttpGetOut" />
    </wsdl:operation>
    <wsdl:operation name="UserExists">
      <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Returns true if user exists.  Returns false otherwise.</wsdl:documentation>
      <wsdl:input message="tns:UserExistsHttpGetIn" />
      <wsdl:output message="tns:UserExistsHttpGetOut" />
    </wsdl:operation>
    <wsdl:operation name="BlogIDExists">
      <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Returns true if a blog with the specified ID exists.  Returns false otherwise.</wsdl:documentation>
      <wsdl:input message="tns:BlogIDExistsHttpGetIn" />
      <wsdl:output message="tns:BlogIDExistsHttpGetOut" />
    </wsdl:operation>
    <wsdl:operation name="CommentIDExists">
      <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Returns true if a comment with the specified ID exists.  Returns false otherwise.</wsdl:documentation>
      <wsdl:input message="tns:CommentIDExistsHttpGetIn" />
      <wsdl:output message="tns:CommentIDExistsHttpGetOut" />
    </wsdl:operation>
    <wsdl:operation name="BlogIDMatchesUser">
      <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Returns true if the specified user has a blog with the specified id.  Returns false otherwise.</wsdl:documentation>
      <wsdl:input message="tns:BlogIDMatchesUserHttpGetIn" />
      <wsdl:output message="tns:BlogIDMatchesUserHttpGetOut" />
    </wsdl:operation>
    <wsdl:operation name="GetPageLength">
      <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Returns max length of a page.</wsdl:documentation>
      <wsdl:input message="tns:GetPageLengthHttpGetIn" />
      <wsdl:output message="tns:GetPageLengthHttpGetOut" />
    </wsdl:operation>
    <wsdl:operation name="GetTitleLength">
      <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Returns max length of a title.</wsdl:documentation>
      <wsdl:input message="tns:GetTitleLengthHttpGetIn" />
      <wsdl:output message="tns:GetTitleLengthHttpGetOut" />
    </wsdl:operation>
    <wsdl:operation name="GetCommentLength">
      <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Returns max length of a comment.</wsdl:documentation>
      <wsdl:input message="tns:GetCommentLengthHttpGetIn" />
      <wsdl:output message="tns:GetCommentLengthHttpGetOut" />
    </wsdl:operation>
    <wsdl:operation name="PostBlog">
      <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">If the userID and password match, it writes the title/blog to the database.  Returns the blogID if the action succeeds.  Returns -1 if anything fails.</wsdl:documentation>
      <wsdl:input message="tns:PostBlogHttpGetIn" />
      <wsdl:output message="tns:PostBlogHttpGetOut" />
    </wsdl:operation>
    <wsdl:operation name="PostBlogComment">
      <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">If the userID and password match, it writes the comment with body &lt;body&gt; to the blog with id blogID.  Returns the commentID if the action succeeds.  Returns -1 if anything fails.</wsdl:documentation>
      <wsdl:input message="tns:PostBlogCommentHttpGetIn" />
      <wsdl:output message="tns:PostBlogCommentHttpGetOut" />
    </wsdl:operation>
  </wsdl:portType>
  <wsdl:portType name="BlinkyHttpPost">
    <wsdl:operation name="RegisterUser">
      <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Adds userID, displayName, and password to the database.  Returns false if the action fails.</wsdl:documentation>
      <wsdl:input message="tns:RegisterUserHttpPostIn" />
      <wsdl:output message="tns:RegisterUserHttpPostOut" />
    </wsdl:operation>
    <wsdl:operation name="PasswordOK">
      <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Returns true if the password matches the userID.  Returns false otherwise.</wsdl:documentation>
      <wsdl:input message="tns:PasswordOKHttpPostIn" />
      <wsdl:output message="tns:PasswordOKHttpPostOut" />
    </wsdl:operation>
    <wsdl:operation name="GetUserDisplayName">
      <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Returns the DisplayName for specified user.  Returns empty string if user doesn't exist.</wsdl:documentation>
      <wsdl:input message="tns:GetUserDisplayNameHttpPostIn" />
      <wsdl:output message="tns:GetUserDisplayNameHttpPostOut" />
    </wsdl:operation>
    <wsdl:operation name="UserExists">
      <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Returns true if user exists.  Returns false otherwise.</wsdl:documentation>
      <wsdl:input message="tns:UserExistsHttpPostIn" />
      <wsdl:output message="tns:UserExistsHttpPostOut" />
    </wsdl:operation>
    <wsdl:operation name="BlogIDExists">
      <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Returns true if a blog with the specified ID exists.  Returns false otherwise.</wsdl:documentation>
      <wsdl:input message="tns:BlogIDExistsHttpPostIn" />
      <wsdl:output message="tns:BlogIDExistsHttpPostOut" />
    </wsdl:operation>
    <wsdl:operation name="CommentIDExists">
      <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Returns true if a comment with the specified ID exists.  Returns false otherwise.</wsdl:documentation>
      <wsdl:input message="tns:CommentIDExistsHttpPostIn" />
      <wsdl:output message="tns:CommentIDExistsHttpPostOut" />
    </wsdl:operation>
    <wsdl:operation name="BlogIDMatchesUser">
      <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Returns true if the specified user has a blog with the specified id.  Returns false otherwise.</wsdl:documentation>
      <wsdl:input message="tns:BlogIDMatchesUserHttpPostIn" />
      <wsdl:output message="tns:BlogIDMatchesUserHttpPostOut" />
    </wsdl:operation>
    <wsdl:operation name="GetPageLength">
      <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Returns max length of a page.</wsdl:documentation>
      <wsdl:input message="tns:GetPageLengthHttpPostIn" />
      <wsdl:output message="tns:GetPageLengthHttpPostOut" />
    </wsdl:operation>
    <wsdl:operation name="GetTitleLength">
      <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Returns max length of a title.</wsdl:documentation>
      <wsdl:input message="tns:GetTitleLengthHttpPostIn" />
      <wsdl:output message="tns:GetTitleLengthHttpPostOut" />
    </wsdl:operation>
    <wsdl:operation name="GetCommentLength">
      <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Returns max length of a comment.</wsdl:documentation>
      <wsdl:input message="tns:GetCommentLengthHttpPostIn" />
      <wsdl:output message="tns:GetCommentLengthHttpPostOut" />
    </wsdl:operation>
    <wsdl:operation name="PostBlog">
      <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">If the userID and password match, it writes the title/blog to the database.  Returns the blogID if the action succeeds.  Returns -1 if anything fails.</wsdl:documentation>
      <wsdl:input message="tns:PostBlogHttpPostIn" />
      <wsdl:output message="tns:PostBlogHttpPostOut" />
    </wsdl:operation>
    <wsdl:operation name="PostBlogComment">
      <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">If the userID and password match, it writes the comment with body &lt;body&gt; to the blog with id blogID.  Returns the commentID if the action succeeds.  Returns -1 if anything fails.</wsdl:documentation>
      <wsdl:input message="tns:PostBlogCommentHttpPostIn" />
      <wsdl:output message="tns:PostBlogCommentHttpPostOut" />
    </wsdl:operation>
  </wsdl:portType>
  <wsdl:binding name="BlinkySoap" type="tns:BlinkySoap">
    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" />
    <wsdl:operation name="RegisterUser">
      <soap:operation soapAction="http://wren.cis.upenn.edu/RegisterUser" style="document" />
      <wsdl:input>
        <soap:body use="literal" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="PasswordOK">
      <soap:operation soapAction="http://wren.cis.upenn.edu/PasswordOK" style="document" />
      <wsdl:input>
        <soap:body use="literal" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="GetUserDisplayName">
      <soap:operation soapAction="http://wren.cis.upenn.edu/GetUserDisplayName" style="document" />
      <wsdl:input>
        <soap:body use="literal" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="UserExists">
      <soap:operation soapAction="http://wren.cis.upenn.edu/UserExists" style="document" />
      <wsdl:input>
        <soap:body use="literal" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="BlogIDExists">
      <soap:operation soapAction="http://wren.cis.upenn.edu/BlogIDExists" style="document" />
      <wsdl:input>
        <soap:body use="literal" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="CommentIDExists">
      <soap:operation soapAction="http://wren.cis.upenn.edu/CommentIDExists" style="document" />
      <wsdl:input>
        <soap:body use="literal" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="BlogIDMatchesUser">
      <soap:operation soapAction="http://wren.cis.upenn.edu/BlogIDMatchesUser" style="document" />
      <wsdl:input>
        <soap:body use="literal" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="GetPageLength">
      <soap:operation soapAction="http://wren.cis.upenn.edu/GetPageLength" style="document" />
      <wsdl:input>
        <soap:body use="literal" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="GetTitleLength">
      <soap:operation soapAction="http://wren.cis.upenn.edu/GetTitleLength" style="document" />
      <wsdl:input>
        <soap:body use="literal" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="GetCommentLength">
      <soap:operation soapAction="http://wren.cis.upenn.edu/GetCommentLength" style="document" />
      <wsdl:input>
        <soap:body use="literal" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="PostBlog">
      <soap:operation soapAction="http://wren.cis.upenn.edu/PostBlog" style="document" />
      <wsdl:input>
        <soap:body use="literal" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="PostBlogComment">
      <soap:operation soapAction="http://wren.cis.upenn.edu/PostBlogComment" style="document" />
      <wsdl:input>
        <soap:body use="literal" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
  </wsdl:binding>
  <wsdl:binding name="BlinkySoap12" type="tns:BlinkySoap">
    <soap12:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" />
    <wsdl:operation name="RegisterUser">
      <soap12:operation soapAction="http://wren.cis.upenn.edu/RegisterUser" style="document" />
      <wsdl:input>
        <soap12:body use="literal" />
      </wsdl:input>
      <wsdl:output>
        <soap12:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="PasswordOK">
      <soap12:operation soapAction="http://wren.cis.upenn.edu/PasswordOK" style="document" />
      <wsdl:input>
        <soap12:body use="literal" />
      </wsdl:input>
      <wsdl:output>
        <soap12:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="GetUserDisplayName">
      <soap12:operation soapAction="http://wren.cis.upenn.edu/GetUserDisplayName" style="document" />
      <wsdl:input>
        <soap12:body use="literal" />
      </wsdl:input>
      <wsdl:output>
        <soap12:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="UserExists">
      <soap12:operation soapAction="http://wren.cis.upenn.edu/UserExists" style="document" />
      <wsdl:input>
        <soap12:body use="literal" />
      </wsdl:input>
      <wsdl:output>
        <soap12:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="BlogIDExists">
      <soap12:operation soapAction="http://wren.cis.upenn.edu/BlogIDExists" style="document" />
      <wsdl:input>
        <soap12:body use="literal" />
      </wsdl:input>
      <wsdl:output>
        <soap12:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="CommentIDExists">
      <soap12:operation soapAction="http://wren.cis.upenn.edu/CommentIDExists" style="document" />
      <wsdl:input>
        <soap12:body use="literal" />
      </wsdl:input>
      <wsdl:output>
        <soap12:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="BlogIDMatchesUser">
      <soap12:operation soapAction="http://wren.cis.upenn.edu/BlogIDMatchesUser" style="document" />
      <wsdl:input>
        <soap12:body use="literal" />
      </wsdl:input>
      <wsdl:output>
        <soap12:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="GetPageLength">
      <soap12:operation soapAction="http://wren.cis.upenn.edu/GetPageLength" style="document" />
      <wsdl:input>
        <soap12:body use="literal" />
      </wsdl:input>
      <wsdl:output>
        <soap12:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="GetTitleLength">
      <soap12:operation soapAction="http://wren.cis.upenn.edu/GetTitleLength" style="document" />
      <wsdl:input>
        <soap12:body use="literal" />
      </wsdl:input>
      <wsdl:output>
        <soap12:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="GetCommentLength">
      <soap12:operation soapAction="http://wren.cis.upenn.edu/GetCommentLength" style="document" />
      <wsdl:input>
        <soap12:body use="literal" />
      </wsdl:input>
      <wsdl:output>
        <soap12:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="PostBlog">
      <soap12:operation soapAction="http://wren.cis.upenn.edu/PostBlog" style="document" />
      <wsdl:input>
        <soap12:body use="literal" />
      </wsdl:input>
      <wsdl:output>
        <soap12:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="PostBlogComment">
      <soap12:operation soapAction="http://wren.cis.upenn.edu/PostBlogComment" style="document" />
      <wsdl:input>
        <soap12:body use="literal" />
      </wsdl:input>
      <wsdl:output>
        <soap12:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
  </wsdl:binding>
  <wsdl:binding name="BlinkyHttpGet" type="tns:BlinkyHttpGet">
    <http:binding verb="GET" />
    <wsdl:operation name="RegisterUser">
      <http:operation location="/RegisterUser" />
      <wsdl:input>
        <http:urlEncoded />
      </wsdl:input>
      <wsdl:output>
        <mime:mimeXml part="Body" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="PasswordOK">
      <http:operation location="/PasswordOK" />
      <wsdl:input>
        <http:urlEncoded />
      </wsdl:input>
      <wsdl:output>
        <mime:mimeXml part="Body" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="GetUserDisplayName">
      <http:operation location="/GetUserDisplayName" />
      <wsdl:input>
        <http:urlEncoded />
      </wsdl:input>
      <wsdl:output>
        <mime:mimeXml part="Body" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="UserExists">
      <http:operation location="/UserExists" />
      <wsdl:input>
        <http:urlEncoded />
      </wsdl:input>
      <wsdl:output>
        <mime:mimeXml part="Body" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="BlogIDExists">
      <http:operation location="/BlogIDExists" />
      <wsdl:input>
        <http:urlEncoded />
      </wsdl:input>
      <wsdl:output>
        <mime:mimeXml part="Body" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="CommentIDExists">
      <http:operation location="/CommentIDExists" />
      <wsdl:input>
        <http:urlEncoded />
      </wsdl:input>
      <wsdl:output>
        <mime:mimeXml part="Body" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="BlogIDMatchesUser">
      <http:operation location="/BlogIDMatchesUser" />
      <wsdl:input>
        <http:urlEncoded />
      </wsdl:input>
      <wsdl:output>
        <mime:mimeXml part="Body" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="GetPageLength">
      <http:operation location="/GetPageLength" />
      <wsdl:input>
        <http:urlEncoded />
      </wsdl:input>
      <wsdl:output>
        <mime:mimeXml part="Body" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="GetTitleLength">
      <http:operation location="/GetTitleLength" />
      <wsdl:input>
        <http:urlEncoded />
      </wsdl:input>
      <wsdl:output>
        <mime:mimeXml part="Body" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="GetCommentLength">
      <http:operation location="/GetCommentLength" />
      <wsdl:input>
        <http:urlEncoded />
      </wsdl:input>
      <wsdl:output>
        <mime:mimeXml part="Body" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="PostBlog">
      <http:operation location="/PostBlog" />
      <wsdl:input>
        <http:urlEncoded />
      </wsdl:input>
      <wsdl:output>
        <mime:mimeXml part="Body" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="PostBlogComment">
      <http:operation location="/PostBlogComment" />
      <wsdl:input>
        <http:urlEncoded />
      </wsdl:input>
      <wsdl:output>
        <mime:mimeXml part="Body" />
      </wsdl:output>
    </wsdl:operation>
  </wsdl:binding>
  <wsdl:binding name="BlinkyHttpPost" type="tns:BlinkyHttpPost">
    <http:binding verb="POST" />
    <wsdl:operation name="RegisterUser">
      <http:operation location="/RegisterUser" />
      <wsdl:input>
        <mime:content type="application/x-www-form-urlencoded" />
      </wsdl:input>
      <wsdl:output>
        <mime:mimeXml part="Body" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="PasswordOK">
      <http:operation location="/PasswordOK" />
      <wsdl:input>
        <mime:content type="application/x-www-form-urlencoded" />
      </wsdl:input>
      <wsdl:output>
        <mime:mimeXml part="Body" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="GetUserDisplayName">
      <http:operation location="/GetUserDisplayName" />
      <wsdl:input>
        <mime:content type="application/x-www-form-urlencoded" />
      </wsdl:input>
      <wsdl:output>
        <mime:mimeXml part="Body" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="UserExists">
      <http:operation location="/UserExists" />
      <wsdl:input>
        <mime:content type="application/x-www-form-urlencoded" />
      </wsdl:input>
      <wsdl:output>
        <mime:mimeXml part="Body" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="BlogIDExists">
      <http:operation location="/BlogIDExists" />
      <wsdl:input>
        <mime:content type="application/x-www-form-urlencoded" />
      </wsdl:input>
      <wsdl:output>
        <mime:mimeXml part="Body" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="CommentIDExists">
      <http:operation location="/CommentIDExists" />
      <wsdl:input>
        <mime:content type="application/x-www-form-urlencoded" />
      </wsdl:input>
      <wsdl:output>
        <mime:mimeXml part="Body" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="BlogIDMatchesUser">
      <http:operation location="/BlogIDMatchesUser" />
      <wsdl:input>
        <mime:content type="application/x-www-form-urlencoded" />
      </wsdl:input>
      <wsdl:output>
        <mime:mimeXml part="Body" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="GetPageLength">
      <http:operation location="/GetPageLength" />
      <wsdl:input>
        <mime:content type="application/x-www-form-urlencoded" />
      </wsdl:input>
      <wsdl:output>
        <mime:mimeXml part="Body" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="GetTitleLength">
      <http:operation location="/GetTitleLength" />
      <wsdl:input>
        <mime:content type="application/x-www-form-urlencoded" />
      </wsdl:input>
      <wsdl:output>
        <mime:mimeXml part="Body" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="GetCommentLength">
      <http:operation location="/GetCommentLength" />
      <wsdl:input>
        <mime:content type="application/x-www-form-urlencoded" />
      </wsdl:input>
      <wsdl:output>
        <mime:mimeXml part="Body" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="PostBlog">
      <http:operation location="/PostBlog" />
      <wsdl:input>
        <mime:content type="application/x-www-form-urlencoded" />
      </wsdl:input>
      <wsdl:output>
        <mime:mimeXml part="Body" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="PostBlogComment">
      <http:operation location="/PostBlogComment" />
      <wsdl:input>
        <mime:content type="application/x-www-form-urlencoded" />
      </wsdl:input>
      <wsdl:output>
        <mime:mimeXml part="Body" />
      </wsdl:output>
    </wsdl:operation>
  </wsdl:binding>
  <wsdl:service name="Blinky">
    <wsdl:port name="BlinkySoap" binding="tns:BlinkySoap">
      <soap:address location="http://wren.cis.upenn.edu/Blinky/Blinky.asmx" />
    </wsdl:port>
    <wsdl:port name="BlinkySoap12" binding="tns:BlinkySoap12">
      <soap12:address location="http://wren.cis.upenn.edu/Blinky/Blinky.asmx" />
    </wsdl:port>
    <wsdl:port name="BlinkyHttpGet" binding="tns:BlinkyHttpGet">
      <http:address location="http://wren.cis.upenn.edu/Blinky/Blinky.asmx" />
    </wsdl:port>
    <wsdl:port name="BlinkyHttpPost" binding="tns:BlinkyHttpPost">
      <http:address location="http://wren.cis.upenn.edu/Blinky/Blinky.asmx" />
    </wsdl:port>
  </wsdl:service>
</wsdl:definitions>