<html><head>
<meta HTTP-EQUIV="content-type" CONTENT="text/html; charset=UTF-8">
</head>
<body>
  <p>Licenses </p>
   

  <div class="docs" id="domainlicenses">
   <h2>Licenses</h2>
   #if (false) { #foreach $license in $currentDomain.licenseList() { } } 

   <p>The following licenses are used on this site:</p>

   <ul>
    <!-- temporary static html -->

    <li>$license_name</li>

    <li>$license_description</li>

    <li><a href="$license_more_info_url">more info</a></li>

    <li>$license_name</li>

    <li>$license_description</li>

    <li><a href="$license_more_info_url">more info</a></li>

    <li>$license_name</li>

    <li>$license_description</li>

    <li><a href="$license_more_info_url">more info</a></li>

    <li><!-- webmacro commented out --></li>

    <li>$license.getName()</li>

    <li>$license.getLongDescription</li>

    <li><a href="$license.getInfoURL">more info</a></li>
   </ul>
  </div>
 


</body>
</html>

