<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>22927</bug_id>
          
          <creation_ts>2008-12-18 16:56:56 -0800</creation_ts>
          <short_desc>Using spaces for indent in Ext/Javascript code causes all Javascript execution to fail silently</short_desc>
          <delta_ts>2011-09-08 18:13:04 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>525.x (Safari 3.2)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Windows XP</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Critical</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Brian">brian-webkit</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>barraclough</cc>
    
    <cc>brian-webkit</cc>
    
    <cc>entwicklung</cc>
    
    <cc>oliver</cc>
    
    <cc>rik</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>102943</commentid>
    <comment_count>0</comment_count>
    <who name="Brian">brian-webkit</who>
    <bug_when>2008-12-18 16:56:56 -0800</bug_when>
    <thetext>I have some Javascript that uses Ext components.  The indenting was done with spaces.  Loading the document in Firefox/IE works properly; the code is valid and there are no syntax issues associated with it.  Both Webkit browsers Safari and Chrome failed to execute the Javascript and failed to throw an error.  Simply nothing happened.  In fact, putting a &lt;script&gt;alert(&apos;hello&apos;);&lt;/script&gt; in the body didn&apos;t even execute.

It turns out we fixed the problem by converting spaces to tabs.  Nothing else.  Suddenly it worked.  Simply regexp&apos;ing [ ]{4} to tab fixed the issue.  We can&apos;t understand it.

I&apos;m attaching a diff between the two files.  I&apos;m also including the broken.html and working.html files for your review.  There are going to be a couple of different lines between the HTML files because I generated one from our still-broken staging server and another from my working local copy but aside from some IDs and whatnot, they should be identical.  The key difference is the spaces vs. tabs for indents.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>102944</commentid>
    <comment_count>1</comment_count>
      <attachid>26134</attachid>
    <who name="Brian">brian-webkit</who>
    <bug_when>2008-12-18 16:57:38 -0800</bug_when>
    <thetext>Created attachment 26134
Uses spaces for indent and fails in safari 3.2.1/chrome 1.0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>102945</commentid>
    <comment_count>2</comment_count>
      <attachid>26135</attachid>
    <who name="Brian">brian-webkit</who>
    <bug_when>2008-12-18 16:58:06 -0800</bug_when>
    <thetext>Created attachment 26135
Working file which has spaces converted to tab via regexp for [ ]{4} to tab.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>102946</commentid>
    <comment_count>3</comment_count>
    <who name="Brian">brian-webkit</who>
    <bug_when>2008-12-18 16:59:23 -0800</bug_when>
    <thetext>You can get the diff between a working and broken file (before and after my regexp to convert [ ]{4} to a tab) here:  http://www.ghidinelli.com/wp-content/uploads/2008/12/webkit-fail.patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>102971</commentid>
    <comment_count>4</comment_count>
    <who name="Anthony Ricaud">rik</who>
    <bug_when>2008-12-19 01:46:48 -0800</bug_when>
    <thetext>I can&apos;t reproduce this. The console is complaining about a missing Ext variable. It seems you haven&apos;t linked the Ext library in your examples. </thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>102978</commentid>
    <comment_count>5</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-12-19 06:49:06 -0800</bug_when>
    <thetext>Brian are you able to provide a live testcase?

I ahve tried to get the testcase up aat http://nerget.com/bugs/bug22927.html but failed, in both webkit and firefox.  

I&apos;ve had to make a few changes to try to get Ext available to no avail, there&apos;s an exception because it&apos;s attempting to use document.body before the body element is defined.

Random note to future adventurers: while the testcase has an xhtml doctype it isn&apos;t xhtml </thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>102988</commentid>
    <comment_count>6</comment_count>
    <who name="Brian">brian-webkit</who>
    <bug_when>2008-12-19 09:00:05 -0800</bug_when>
    <thetext>This HTML file is loaded into a Panel in an Ext app.  There are several files and a fair amount of data required to make it work.  I do have a live example but I won&apos;t be easily able to have side-by-side working and failure.

Also, I don&apos;t want to publish all of the code to this app in a public space.  What is the preferred approach - I can work thru a fail/working version this morning if someone wants to capture some data?   My IM is massd on Y! or pukkasoft on AIM.  I will be in my office in about an hour and can work thru it this morning.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>102989</commentid>
    <comment_count>7</comment_count>
    <who name="Brian">brian-webkit</who>
    <bug_when>2008-12-19 09:02:13 -0800</bug_when>
    <thetext>&gt; Random note to future adventurers: while the testcase has an xhtml doctype it
&gt; isn&apos;t xhtml 

No?  It validates at validator.w3.org.  It&apos;s missing an xhtml compatible comment around the javascript but that doesn&apos;t break the document; it only generates warnings.

http://validator.w3.org/check?uri=https%3A%2F%2Fbugs.webkit.org%2Fattachment.cgi%3Fid%3D26135&amp;charset=%28detect+automatically%29&amp;doctype=Inline&amp;group=0

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>103012</commentid>
    <comment_count>8</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-12-19 12:52:45 -0800</bug_when>
    <thetext>By having an the extension .html, the server sends it as text/html which triggers quirks mode (in most browsers due almost exclusively to this being IEs behaviour), if you rename to .xhtml (so it gets sent as application/xml+xhtml it fails because the scripts need to be in CDATA sections.

Anyhoo, If you have a page that can demonstrate the problem, but you wish it to remain private you can file a bug at bugreporter.apple.com, which i&apos;m fairly sure will give you a radar #, then paste the radar in this bug, and i&apos;ll get it (hopefully) to us, and then associate it with this bug.

That way your testcase can be kept out of &quot;public&quot; 
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>103023</commentid>
    <comment_count>9</comment_count>
    <who name="Brian">brian-webkit</who>
    <bug_when>2008-12-19 13:40:02 -0800</bug_when>
    <thetext>It will take me some time to put together a test case that is static that I can deliver (this is a 3-pane Ext app with a lot of dynamic loading going on).  We were able to manipulate the file so that adding a single additional space to the file would break Safari/Chrome and removing that space would make it work.  It may actually be more file size related than space/tab although that was the solution that fixed the behavior.

I will work on a test case over the holidays and return here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>103031</commentid>
    <comment_count>10</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-12-19 14:11:23 -0800</bug_when>
    <thetext>Thanks Brian!

Oh, quick question -- Does the Wed Inspector console report an error, and if so what?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>103046</commentid>
    <comment_count>11</comment_count>
    <who name="Brian">brian-webkit</who>
    <bug_when>2008-12-19 15:25:24 -0800</bug_when>
    <thetext>There are no errors reported - in fact no Javascript executes when this happens.  I was able to modify the &lt;body&gt; of the HTML to something like:

&lt;body&gt;
HELLO
&lt;script&gt;alert(&apos;hello!&apos;);&lt;/script&gt;
&lt;/body&gt;

And the HELLO would show up in the Ext panel - proving that the content was loading - but the alert would not fire.  Totally bizarre.  Both my computer and my contractor&apos;s computer showed the same behavior in all four browsers (working in FF/IE, failing in Safari/Chrome).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107502</commentid>
    <comment_count>12</comment_count>
    <who name="ES2000">entwicklung</who>
    <bug_when>2009-01-29 02:59:09 -0800</bug_when>
    <thetext>I&apos;ve experienced a similar bug. Further testing shows that the regular expression used by extjs to determine the javascript code is the problem. Here is the regular expression:

(?:&lt;script([^&gt;]*)?&gt;)((\n|\r|.)*?)(?:&lt;\/script&gt;)

Webkits RegExp implementation find no match if the part between the script tags is too long. I will add a simple test file that shows the problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107503</commentid>
    <comment_count>13</comment_count>
      <attachid>27143</attachid>
    <who name="ES2000">entwicklung</who>
    <bug_when>2009-01-29 03:02:18 -0800</bug_when>
    <thetext>Created attachment 27143
simple regular expression limit test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>114732</commentid>
    <comment_count>14</comment_count>
    <who name="Brian">brian-webkit</who>
    <bug_when>2009-03-22 18:08:57 -0700</bug_when>
    <thetext>I&apos;m looking at trying to recreate my situation with a static test case.  However, it appears as though a solid test has been submitted which demonstrates the issue.  It will take a fairly large amount of time that I don&apos;t wish to spend if the submitted test by ES2000 is enough.  Can anyone comment?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>114733</commentid>
    <comment_count>15</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-03-22 18:31:17 -0700</bug_when>
    <thetext>We&apos;ve recently increased the regex size limit -- does this bug still repro?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>115144</commentid>
    <comment_count>16</comment_count>
    <who name="ES2000">entwicklung</who>
    <bug_when>2009-03-25 08:44:29 -0700</bug_when>
    <thetext>I have tested it again with the following versions:

Safari 4 Public Beta (528.16) on Windows: bug still exist
Webkit Nightly Build r41944 on MacOS: bug seems to be solved
Google Chrome (2.0.171.0) on Windows: bug seems to be solved

So will the final release of Safari 4 get the fix that is in the nightly version?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>115196</commentid>
    <comment_count>17</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-03-25 12:51:10 -0700</bug_when>
    <thetext>Could you please provide a testcase that fails? the regex limit test appears to work fine, the two big tests do not run because they are incomplete</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>124921</commentid>
    <comment_count>18</comment_count>
    <who name="ES2000">entwicklung</who>
    <bug_when>2009-06-09 03:10:31 -0700</bug_when>
    <thetext>Tested my case again in the final version of Safari 4 under Windows and it seems to be fixed. Maybe Brian could comment again if his cases are also fixed so this bug could be closed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>124999</commentid>
    <comment_count>19</comment_count>
    <who name="Brian">brian-webkit</who>
    <bug_when>2009-06-09 13:15:41 -0700</bug_when>
    <thetext>I don&apos;t have the facility to test the broken case any longer, sorry. :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464551</commentid>
    <comment_count>20</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-09-08 18:13:04 -0700</bug_when>
    <thetext>The attached test cases seem to work &amp; the limits have been raised, based on comments looks like this should now be fixed.  Please do reopen if this still repros.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>26134</attachid>
            <date>2008-12-18 16:57:38 -0800</date>
            <delta_ts>2008-12-18 16:57:38 -0800</delta_ts>
            <desc>Uses spaces for indent and fails in safari 3.2.1/chrome 1.0</desc>
            <filename>broken.html</filename>
            <type>text/html</type>
            <size>22162</size>
            <attacher name="Brian">brian-webkit</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFs
Ly9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25h
bC5kdGQiPg0KPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPg0KPGhl
YWQ+DQoJPHRpdGxlPkZvcm0gTGF5b3V0PC90aXRsZT4NCgkNCgk8c2NyaXB0IHR5cGU9InRleHQv
amF2YXNjcmlwdCI+DQogICAgICAgIHZhciBpZCA9ICdEMjJEMTkwQi1CRkExLUEwRUYtQTZCNTM1
RUZERTJGRkNEQSc7DQoNCgkJdmFyIG1hc2sgPSBuZXcgRXh0LkxvYWRNYXNrKEV4dC5nZXRCb2R5
KCksIHttc2c6ICdGZXRjaGluZyBkZXRhaWxzLCBwbGVhc2Ugd2FpdC4uLid9KTsNCgkJbWFzay5z
aG93KCk7DQoNCiAgICAgICAgdmFyIG9uU3VibWl0ID0gew0KICAgICAgICAgICAgdXJsOiB1cmws
DQogICAgICAgICAgICBwYXJhbXMgOiB7dWlkRXZlbnQ6dWlkRXZlbnQsIG1ldGhvZDogJ3NhdmVG
b3JtQmVhbid9LA0KICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24gKGZvcm0sIGFjdGlvbikg
ew0KICAgICAgICAgICAgICAgIHVwZGF0ZUZvcm1MYXlvdXQoYWN0aW9uLnJlc3VsdC5kYXRhKTsN
CiAgICAgICAgICAgIH0sDQogICAgICAgICAgICBmYWlsdXJlOiBmdW5jdGlvbiAoZm9ybSwgYWN0
aW9uKSB7DQogICAgICAgICAgICAgICAgRXh0Lk1zZy5hbGVydCgnU3RhdHVzJywgImZhaWx1cmUi
KTsNCiAgICAgICAgICAgIH0sDQogICAgICAgICAgICB3YWl0TXNnOiAnUGxlYXNlIHdhaXQgd2hp
bGUgd2Ugc2F2ZSB5b3VyIGNoYW5nZXMuLi4nLA0KICAgICAgICAgICAgd2FpdFRpdGxlOiAnRm9y
bSBMYXlvdXQgVXBkYXRlJywNCiAgICAgICAgICAgIGNsaWVudFZhbGlkYXRpb246IGZhbHNlDQog
ICAgICAgIH07DQoNCg0KICAgICAgICB2YXIgc2ltcGxlOw0KICAgICAgICBFeHQuYXBwLlVzZXJT
ZWxlY3Rpb25EaWFsb2cgPSBFeHQuZXh0ZW5kKEV4dC5XaW5kb3csIHsNCiAgICAgICAgICAgIHRp
dGxlOiAnVXNlciBTZWxlY3Rpb24nLA0KICAgICAgICAgICAgd2lkdGg6IDI4MCwNCiAgICAgICAg
ICAgIGhlaWdodDogMzAwLA0KICAgICAgICAgICAgY2xvc2FibGU6IGZhbHNlLA0KICAgICAgICAg
ICAgbGF5b3V0OiAnZml0JywNCiAgICAgICAgICAgIGJ1dHRvbkFsaWduOiAnY2VudGVyJywNCiAg
ICAgICAgICAgIGN1cnJlbnROb2RlSWQ6ICcnLA0KICAgICAgICAgICAgcm9vdDogbmV3IEV4dC50
cmVlLkFzeW5jVHJlZU5vZGUoe2RyYWdnYWJsZTpmYWxzZSwgZXhwYW5kZWQ6ZmFsc2V9KSwNCiAg
ICAgICAgICAgIGluaXRDb21wb25lbnQ6IGZ1bmN0aW9uKCkgew0KICAgICAgICAgICAgICAgIEV4
dC5hcHAuVXNlclNlbGVjdGlvbkRpYWxvZy5zdXBlcmNsYXNzLmluaXRDb21wb25lbnQuY2FsbCh0
aGlzKTsNCg0KICAgICAgICAgICAgICAgIHZhciBjaWQgPSB0aGlzLmN1cnJlbnROb2RlSWQ7DQog
ICAgICAgICAgICAgICAgdGhpcy50cmVlUGFuZWwgPSBuZXcgRXh0LnRyZWUuVHJlZVBhbmVsKHsN
CiAgICAgICAgICAgICAgICAgICAgYXV0b1Njcm9sbDp0cnVlLA0KICAgICAgICAgICAgICAgICAg
ICBhbmltYXRlOnRydWUsDQogICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lclNjcm9sbDp0cnVl
LA0KICAgICAgICAgICAgICAgICAgICByb290VmlzaWJsZTogZmFsc2UsDQogICAgICAgICAgICAg
ICAgICAgIHJvb3Q6IHRoaXMucm9vdCwNCiAgICAgICAgICAgICAgICAgICAgc2VsTW9kZWw6IG5l
dyBFeHQudHJlZS5EZWZhdWx0U2VsZWN0aW9uTW9kZWwoew0KICAgICAgICAgICAgICAgICAgICAg
ICAgbGlzdGVuZXJzOiB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uY2hh
bmdlIDogZnVuY3Rpb24gKHNlbGVjdGlvbk1vZGVsLCBub2RlKSB7DQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHZhciBtZXNzYWdlID0gbm9kZS50ZXh0Ow0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB2YXIgaWQgPSBub2RlLmlkOw0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZXRNZXNzYWdlQm94VmFsdWUoaWQsbWVzc2FnZSk7DQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRpYWxvZy5oaWRlKCk7DQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB9
KSwNCiAgICAgICAgICAgICAgICAgICAgbGlzdGVuZXJzOiB7DQogICAgICAgICAgICAgICAgICAg
ICAgICBsb2FkOiBmdW5jdGlvbiAobm9kZSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG5vZGUuZXhwYW5kKHRydWUpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmaWx0
ZXIgPSBuZXcgRXh0LnRyZWUuVHJlZUZpbHRlcih0aGlzKTsNCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmaWx0ZXIuZmlsdGVyQnkoZnVuY3Rpb24obm9kZSkgew0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpZihjaWQgPT0gbm9kZS5pZCkgcmV0dXJuIGZhbHNlOw0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9KTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAg
ICAgICAgfQ0KICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgICAgIHRoaXMuYWRkKHRo
aXMudHJlZVBhbmVsKTsNCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICB2YXIgY2xv
c2VCdXR0b24gPSBuZXcgRXh0LkJ1dHRvbih7DQogICAgICAgICAgICAgICAgICAgIHRleHQ6J0Ns
b3NlJywNCiAgICAgICAgICAgICAgICAgICAgc2NvcGU6dGhpcywNCiAgICAgICAgICAgICAgICAg
ICAgbWluV2lkdGg6NzUsDQogICAgICAgICAgICAgICAgICAgIGhhbmRsZXI6dGhpcy5vbkNsb3Nl
DQogICAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICAgICAgdGhpcy5hZGRCdXR0b24oY2xv
c2VCdXR0b24pOw0KICAgICAgICAgICAgfSwNCiAgICAgICAgICAgIG9uQ2xvc2U6IGZ1bmN0aW9u
KCkgew0KICAgICAgICAgICAgICAgIHRoaXMuaGlkZSgpOw0KICAgICAgICAgICAgfQ0KICAgICAg
ICB9KTsNCg0KICAgICAgICB2YXIgZ2xvYmFsSW5kZXhJZDsNCiAgICAgICAgZnVuY3Rpb24gc2V0
SW5kZXhJZChpbmRleElkKSB7DQogICAgICAgICAgICBnbG9iYWxJbmRleElkID0gaW5kZXhJZDsN
CiAgICAgICAgfTsNCg0KICAgICAgICBmdW5jdGlvbiBzZXRNZXNzYWdlQm94VmFsdWUoaWQsIG1l
c3NhZ2UpIHsNCiAgICAgICAgICAgIHZhciBtZXNzYWdlQm94ID0gc2ltcGxlLmZpbmRCeUlkKCd2
Y2hNZXNzYWdlJytnbG9iYWxJbmRleElkKTsgDQogICAgICAgICAgICBtZXNzYWdlQm94LnNldFZh
bHVlKG1lc3NhZ2UpOw0KICAgICAgICAgICAgdmFyIG9iamVjdEJveCA9IHNpbXBsZS5maW5kQnlJ
ZCgndWlkT2JqZWN0JytnbG9iYWxJbmRleElkKTsgDQogICAgICAgICAgICBvYmplY3RCb3guc2V0
VmFsdWUoaWQpOw0KICAgICAgICB9Ow0KDQogICAgICAgIHZhciBidWlsZFRyZWUgPSBmdW5jdGlv
bihub2RlLHN0cikgew0KCQkJc3RyICs9ICAneycrDQoJCQkJCSdpZDogIicrbm9kZS5pZCsnIiwn
Kw0KCQkJCQkndGV4dDogIicrbm9kZS50ZXh0KyciLCcrDQogICAgICAgICAgICAgICAgICAgICdp
Y29uOiAiL2dmeC9mb3JtYnVpbGRlci9ncmlkL2ljb25fJyArIG5vZGUuYXR0cmlidXRlcy50eXBl
ICsgJy5naWYiLCcgKw0KCQkJCQkncnVsZUNvdW50OiAnK25vZGUuYXR0cmlidXRlcy5ydWxlQ291
bnQrJywnKw0KICAgICAgICAgICAgICAgIAknZGF0ZUxpbWl0OiAnK25vZGUuYXR0cmlidXRlcy5k
YXRlTGltaXQrJywnKw0KCQkJCQkndHlwZTogJytub2RlLmF0dHJpYnV0ZXMudHlwZSsnLCcrDQoJ
CQkJCSdjaGlsZHJlbjogWyc7DQoJCQkJCWZvcih2YXIgaWk9MDsgaWk8IG5vZGUuY2hpbGROb2Rl
cy5sZW5ndGg7IGlpKyspIHsNCgkJCQkJCXN0ciArPSBidWlsZFRyZWUobm9kZS5jaGlsZE5vZGVz
W2lpXSwnJyk7DQoJCQkJCQlpZihpaSA8IChub2RlLmNoaWxkTm9kZXMubGVuZ3RoIC0gMSkpDQog
ICAgCQkJCQkJc3RyICs9JywnOw0KCQkJCQl9DQoJCQkJCXN0ciArPSAnXX0nOw0KCQkJcmV0dXJu
IHN0cjsNCgkJfTsNCg0KICAgICAgICB2YXIgc3RyID0gYnVpbGRUcmVlKHRyZWVwYW5lbC5yb290
LCAnJyk7DQoNCiAgICAgICAgdmFyIGRpYWxvZyA9IG5ldyBFeHQuYXBwLlVzZXJTZWxlY3Rpb25E
aWFsb2coe3Jvb3Q6IGV2YWwoIigiK3N0cisiKSIpLCBjdXJyZW50Tm9kZUlkOiBpZH0pOw0KDQoJ
CXZhciBydWxlU3RvcmUgPSBuZXcgRXh0LmRhdGEuSnNvblN0b3JlKHsNCiAgICAgICAgICAgICAg
ICBhdXRvTG9hZDogdHJ1ZSwNCiAgICAgICAgICAgICAgICBmaWVsZHM6IFt7bmFtZTogJ3ZhbHVl
J30se25hbWU6ICd0ZXh0J31dLA0KICAgICAgICAgICAgICAgIHJvb3Q6ICdkYXRhJywNCiAgICAg
ICAgICAgICAgICB1cmw6IHVybCwNCiAgICAgICAgICAgICAgICBiYXNlUGFyYW1zIDoge2lkOiBp
ZCwgdWlkRXZlbnQ6dWlkRXZlbnQsIG1ldGhvZDogJ2dldE9wdGlvbkRhdGEnLCBxdWVyeTogJ3Zh
bGlkYXRpb25WYWx1ZSd9LA0KICAgICAgICAgICAgICAgIGxpc3RlbmVyczogew0KICAgICAgICAg
ICAgICAgICAgICBsb2FkOiBmdW5jdGlvbiAoIHN0b3JlLCByZWNvcmRzLCBvcHRpb25zKSB7DQog
ICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJGb3JtKCk7DQogICAgICAgICAgICAgICAgICAg
IH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgIH0pOw0KCQkNCgkJdmFyIHJ1bGVJbmRleCA9
IDA7DQoJCXZhciBhY3Rpb25JbmRleCA9IFtdOw0KDQoNCgkJZnVuY3Rpb24gcmVuZGVyRm9ybSgp
IA0KCQl7DQoJCQlzaW1wbGUgPSBuZXcgRXh0LmZvcm0uRm9ybVBhbmVsKHsNCgkJCQlsYWJlbFdp
ZHRoOiA3NSwgDQoJCQkJYXV0b1Njcm9sbDogdHJ1ZSwNCgkJCQlmcmFtZTogdHJ1ZSwNCgkJCQlm
b290ZXI6IHRydWUsDQoJCQkJaGVhZGVyOiB0cnVlLA0KCQkJCXRpdGxlOiAnRm9ybSBPYmplY3Qn
LA0KCQkJCWJvZHlTdHlsZToncGFkZGluZzo1cHggNXB4IDAnLA0KCQkJCXJlbmRlclRvOiAneHgn
LA0KCSAgICAgICAgICAgIGJhc2VQYXJhbXM6IHsgdWlkRXZlbnQ6dWlkRXZlbnQsIG1ldGhvZDog
J2dldEZvcm1CZWFuJywgdWlkT2JqZWN0OiBpZH0sDQoJICAgICAgICAgICAgdXJsOiB1cmwsDQoJ
CQkJaXRlbXM6IFt7DQoJICAgICAgICAgICAgICAgICAgICB4dHlwZTonZmllbGRzZXQnLA0KCSAg
ICAgICAgICAgICAgICAgICAgY29sbGFwc2libGU6IGZhbHNlLA0KCSAgICAgICAgICAgICAgICAg
ICAgdGl0bGU6ICdHcm91cCcsDQoJICAgICAgICAgICAgICAgICAgICBjb2xsYXBzZWQgOiBmYWxz
ZSwNCgkgICAgICAgICAgICAgICAgICAgIGF1dG9IZWlnaHQ6dHJ1ZSwNCgkgICAgICAgICAgICAg
ICAgICAgIGl0ZW1zIDpbew0KCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBodG1sOiAnPCcg
KyAnaDIgc3R5bGU9InBhZGRpbmc6IDBweCAwcHggNXB4IDBweCI+VGV4dCBzdHJpbmcgZm9yIGRp
c3BsYXk6PCcgKyAnL2gyPicsDQoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIHh0eXBlOiAn
bGFiZWwnDQoJICAgICAgICAgICAgICAgICAgICAgICAgfSx7DQoJICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG5hbWU6ICd2Y2hMYWJlbCcsDQoJICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGhpZGVMYWJlbDp0cnVlLA0KCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvd0JsYW5r
OmZhbHNlLA0KCSAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogNDUwLA0KCSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB4dHlwZTogJ3RleHRmaWVsZCcNCgkgICAgICAgICAgICAg
ICAgICAgICAgICB9LHsNCgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHRtbDogJzwnICsg
J2gyIHN0eWxlPSJwYWRkaW5nOiAwcHggMHB4IDVweCAwcHgiPlJlcXVpcmVkID88JyArICcvaDI+
JywNCgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgeHR5cGU6ICdsYWJlbCcNCgkgICAgICAg
ICAgICAgICAgICAgICAgICB9LHsNCgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlkZUxh
YmVsOnRydWUsDQoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93Qmxhbms6IGZhbHNl
LA0KCSAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJ0aWNhbDogZmFsc2UsDQoJICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAsDQoJICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHh0eXBlOiAncmFkaW9ncm91cCcsDQoJICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlkOiAncmVxdWlyZWQnLA0KCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtczogWw0K
CSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2JveExhYmVsOiAnWWVzJywgaW5wdXRW
YWx1ZTogJ3RydWUnLCBuYW1lOidib29SZXF1aXJlZCd9LA0KCSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAge2JveExhYmVsOiAnTm8nLCBpbnB1dFZhbHVlOiAnZmFsc2UnLCBuYW1lOidi
b29SZXF1aXJlZCd9XQ0KCSAgICAgICAgICAgICAgICAgICAgICAgIH0NCgkgICAgICAgICAgICAg
ICAgXX0sew0KCQkJCQkJaHRtbDogJzwnICsgJ2gyIHN0eWxlPSJwYWRkaW5nOiAwcHggMHB4IDVw
eCAwcHgiPkRpc3BsYXkgdG8gYXR0ZW5kZWVzIGJldHdlZW46PCcgKyAnL2gyPicsDQoJCQkJCQl4
dHlwZTogJ2xhYmVsJw0KCQkJCQl9LHsNCgkJCQkJCWxheW91dDonY29sdW1uJywNCgkJCQkJCXdp
ZHRoOiAzMDAsDQoJCQkJCQlpdGVtczpbew0KCQkJCQkJCWNvbHVtbldpZHRoOi40LA0KCQkJCQkJ
CWxheW91dDogJ2Zvcm0nLA0KCQkJCQkJCWl0ZW1zOiBbew0KCQkJCQkJCQluYW1lOiAnZHRlQmVn
aW4nLA0KCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQ6ICdZLW0tZCcsDQoJCQkJ
CQkJCWhpZGVMYWJlbDp0cnVlLA0KCQkJCQkJCQl4dHlwZTogJ2RhdGVmaWVsZCcNCgkJCQkJCQl9
XQ0KCQkJCQkJfSx7DQoJCQkJCQkJY29sdW1uV2lkdGg6LjIsDQoJCQkJCQkJbGF5b3V0OiAnZm9y
bScsDQoJCQkJCQkJaXRlbXM6IFt7DQoJCQkJCQkJCWh0bWw6ICc8JyArICdoMiBzdHlsZT0icGFk
ZGluZzogMHB4IDBweCA1cHggMHB4Ij5BTkQ8JyArICcvaDI+JywNCgkJCQkJCQkJeHR5cGU6ICds
YWJlbCcNCgkJCQkJCQl9XQ0KCQkJCQkJfSx7DQoJCQkJCQkJY29sdW1uV2lkdGg6LjQsDQoJCQkJ
CQkJbGF5b3V0OiAnZm9ybScsDQoJCQkJCQkJaXRlbXM6IFt7DQoJCQkJCQkJCW5hbWU6ICdkdGVF
bmQnLA0KCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQ6ICdZLW0tZCcsDQoJCQkJ
CQkJCWhpZGVMYWJlbDp0cnVlLA0KCQkJCQkJCQl4dHlwZTogJ2RhdGVmaWVsZCcNCgkJCQkJCQl9
XQ0KCQkJCQkJfV0NCgkJCQkJfSx7DQoJCQkJCQlodG1sOiAnPCcgKyAnaDIgc3R5bGU9InBhZGRp
bmc6IDBweCAwcHggNXB4IDBweCI+VmlzaWJsZSBUbzo8JyArICcvaDI+JywNCgkJCQkJCXh0eXBl
OiAnbGFiZWwnDQoJCQkJCX0sew0KCQkJCQkJaGlkZUxhYmVsOnRydWUsDQoJCQkJCQl2ZXJ0aWNh
bDogZmFsc2UsDQoJCQkJCQl4dHlwZTogJ2NoZWNrYm94Z3JvdXAnLA0KCSAgICAgICAgICAgICAg
ICAgICAgaWQ6ICd2aXNpYmlsaXR5JywNCgkJCQkJCWl0ZW1zOiBbDQoJCQkJCQkJe2JveExhYmVs
OiAnRHJpdmVyL0F0dGVuZGVlJywgaW5wdXRWYWx1ZTogIjEiLCBuYW1lOidpbnRWaXNpYmxlVG8n
fSwNCgkJCQkJCQl7Ym94TGFiZWw6ICdJbnN0cnVjdG9yJywgaW5wdXRWYWx1ZTogIjIiLCBuYW1l
OidpbnRWaXNpYmxlVG8nfV0NCgkJCQkJfSx7DQoJICAgICAgICAgICAgICAgICAgICB4dHlwZTog
ImhpZGRlbiIsDQoJICAgICAgICAgICAgICAgICAgICBuYW1lOiAicnVsZXMiDQoJICAgICAgICAg
ICAgICAgIH0NCgkJCQldLA0KCQkJCXRiYXI6IFsNCgkJCQl7dGV4dDogJ1NhdmUnLGhhbmRsZXI6
IGZ1bmN0aW9uKCkge3NpbXBsZS5nZXRGb3JtKCkuc3VibWl0KG9uU3VibWl0KTt9fSwNCgkJCQki
LSIsDQoJCQkJe3RleHQ6ICdBZGQgUnVsZScsIGhhbmRsZXI6IGZ1bmN0aW9uKCkgew0KCQkJCQl2
YXIgcnVsZVBhbmVsID0gbmV3IEV4dC5QYW5lbCgNCgkgICAgICAgICAgICAgICAgICAgIGdldFZh
bGlkYXRpb25SdWxlQ29uZmlnKCcwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwMDAwMCcs
ICIiLCAiIikpOw0KCQkJCQlzaW1wbGUuYWRkKHJ1bGVQYW5lbCk7DQoJCQkJCXNpbXBsZS5kb0xh
eW91dCgpOw0KCQkJCX19XSwNCgkJCQliYmFyOiBbDQoJCQkJe3RleHQ6ICdTYXZlJyxoYW5kbGVy
OiBmdW5jdGlvbigpIHtzaW1wbGUuZ2V0Rm9ybSgpLnN1Ym1pdChvblN1Ym1pdCk7fX0sDQoJCQkJ
Ii0iLA0KCQkJCXt0ZXh0OiAnQWRkIFJ1bGUnLCBoYW5kbGVyOiBmdW5jdGlvbigpIHsNCgkJCQkJ
dmFyIHJ1bGVQYW5lbCA9IG5ldyBFeHQuUGFuZWwoDQoJICAgICAgICAgICAgICAgICAgICBnZXRW
YWxpZGF0aW9uUnVsZUNvbmZpZygnMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMDAwMDAn
LCIiLCAiIikpOw0KCQkJCQlzaW1wbGUuYWRkKHJ1bGVQYW5lbCk7DQoJCQkJCXNpbXBsZS5kb0xh
eW91dCgpOw0KCQkJCX19XSwNCgkgICAgICAgICAgICBsaXN0ZW5lcnM6IHsNCgkgICAgICAgICAg
ICAgICAgYWN0aW9uY29tcGxldGUgOiBmdW5jdGlvbiAoIGZvcm0gLCBhY3Rpb24gKSB7DQoJICAg
ICAgICAgICAgICAgICAgICBpZihhY3Rpb24udHlwZSA9PSAibG9hZCIpIHsNCgkgICAgICAgICAg
ICAgICAgICAgIAltYXNrLmhpZGUoKTsNCgkgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcnVs
ZXNEYXRhID0gYWN0aW9uLnJlc3VsdC5kYXRhLnJ1bGVzOw0KCSAgICAgICAgICAgICAgICAgICAg
ICAgIGZvcih2YXIgaWkgPSAwOyBpaTwgcnVsZXNEYXRhLmxlbmd0aDsgaWkrKykgew0KCSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB2YXIgcnVsZVBhbmVsID0gbmV3IEV4dC5QYW5lbCgNCgkg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldFZhbGlkYXRpb25SdWxlQ29uZmlnKA0K
CSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bGVzRGF0YVtpaV0udWlkVmFs
aWRhdGlvbiwgDQoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVsZXNEYXRh
W2lpXS52Y2hWYWxpZGF0aW9uTmFtZSwgDQoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcnVsZXNEYXRhW2lpXS52Y2hWYWx1ZSkpOw0KCSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzaW1wbGUuYWRkKHJ1bGVQYW5lbCk7DQoJICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNpbXBsZS5kb0xheW91dCgpOw0KCSAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYWN0
aW9uc0RhdGEgPSBydWxlc0RhdGFbaWldLkFDVElPTlM7DQoJICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmKGFjdGlvbnNEYXRhKSB7DQoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmb3IodmFyIGpqID0gMDsgamo8IGFjdGlvbnNEYXRhLmxlbmd0aDsgamorKykgew0KCSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvYmplY3RJZCA9IGFjdGlvbnNEYXRh
W2pqXS51aWRPYmplY3Q7DQoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFy
IG1lc3NhZ2UgPSBhY3Rpb25zRGF0YVtqal0udmNoTWVzc2FnZTsNCgkgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB2YXIgZmxhZyA9IGZhbHNlOw0KCSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmKG9iamVjdElkICE9ICcnKSB7DQoJICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWcgPSB0cnVlOw0KCSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB2YXIgbm9kZSA9IHRyZWVwYW5lbC5nZXROb2RlQnlJZChv
YmplY3RJZCk7DQoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKG5v
ZGUpDQoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdl
ID0gbm9kZS50ZXh0Ow0KCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
bHNlDQoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdl
ID0gJ05PIE5PREUgRk9VTkQnOw0KCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0NCgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcnVsZUFjdGlvbiA9
IG5ldyBFeHQuUGFuZWwoDQoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGdldFJ1bGVBY3Rpb25Db25maWcoDQoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBydWxlSW5kZXgsIA0KCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYWN0aW9uc0RhdGFbampdLnVpZEFjdGlvbiwgDQoJICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb25zRGF0YVtqal0uYm9vUmVzdWx0LCAN
CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbnNEYXRh
W2pqXS52Y2hBY3Rpb24sIA0KCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbWVzc2FnZSwgDQoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBvYmplY3RJZCwgDQoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBmbGFnKSk7DQoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVsZVBh
bmVsLmFkZChydWxlQWN0aW9uKTsNCgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBydWxlUGFuZWwuZG9MYXlvdXQoKTsNCgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0NCgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KCSAgICAgICAgICAgICAgICAgICAg
ICAgIH0NCgkgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVxdWlyZWQgPSBhY3Rpb24ucmVz
dWx0LmRhdGEuYm9vUmVxdWlyZWQ7DQoJICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlcXVp
cmVkUmFkaW9Hcm91cCA9IGZvcm0uZmluZEZpZWxkKCdyZXF1aXJlZCcpOw0KCSAgICAgICAgICAg
ICAgICAgICAgICAgIGlmKHJlcXVpcmVkUmFkaW9Hcm91cCkgew0KCSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZihyZXF1aXJlZCkgew0KCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmVxdWlyZWRSYWRpb0dyb3VwLml0ZW1zLmdldCgwKS5zZXRWYWx1ZSh0cnVlKTsNCgkgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCgkgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJlcXVpcmVkUmFkaW9Hcm91cC5pdGVtcy5nZXQoMSkuc2V0VmFsdWUodHJ1ZSk7
DQoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCgkgICAgICAgICAgICAgICAgICAgICAg
ICB9DQoJICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHZpc2libGVNYXNrID0gYWN0aW9uLnJl
c3VsdC5kYXRhLmludFZpc2libGVUbzsNCgkgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdmlz
aWJsZUNoZWNrQm94R3JvdXAgPSBmb3JtLmZpbmRGaWVsZCgndmlzaWJpbGl0eScpOw0KCSAgICAg
ICAgICAgICAgICAgICAgICAgIGlmKHZpc2libGVNYXNrID4gMCAmJiB2aXNpYmxlTWFzayA8PSAx
KSB7DQoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpc2libGVDaGVja0JveEdyb3VwLml0
ZW1zLmdldCgwKS5zZXRWYWx1ZSh0cnVlKTsNCgkgICAgICAgICAgICAgICAgICAgICAgICB9IGVs
c2UgaWYodmlzaWJsZU1hc2sgPiAxICYmIHZpc2libGVNYXNrIDw9IDIpIHsNCgkgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdmlzaWJsZUNoZWNrQm94R3JvdXAuaXRlbXMuZ2V0KDEpLnNldFZh
bHVlKHRydWUpOw0KCSAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZih2aXNpYmxlTWFz
ayA+IDIpIHsNCgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJsZUNoZWNrQm94R3Jv
dXAuaXRlbXMuZ2V0KDApLnNldFZhbHVlKHRydWUpOw0KCSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB2aXNpYmxlQ2hlY2tCb3hHcm91cC5pdGVtcy5nZXQoMSkuc2V0VmFsdWUodHJ1ZSk7DQoJ
ICAgICAgICAgICAgICAgICAgICAgICAgfQ0KCSAgICAgICAgICAgICAgICAgICAgfSANCgkgICAg
ICAgICAgICAgICAgfSwNCgkgICAgICAgICAgICAgICAgYmVmb3JlYWN0aW9uIDogZnVuY3Rpb24g
KGZvcm0sIGFjdGlvbikgew0KCSAgICAgICAgICAgICAgICAgICAgaWYoYWN0aW9uLnR5cGUgPT0g
InN1Ym1pdCIpIHsNCgkgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcnVsZXMgPSBbXTsNCgkg
ICAgICAgICAgICAgICAgICAgICAgICBmb3IodmFyIGlpID0gMTsgaWkgPD0gcnVsZUluZGV4OyBp
aSsrKSB7DQoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBydWxlUGFuZWwgPSBzaW1w
bGUuaXRlbXMuZ2V0KCJydWxlLSIraWkpOw0KCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ZihydWxlUGFuZWwpIHsNCgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBydWxl
SnNvbiA9ICd7JzsNCgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bGVKc29uICs9
ICd1aWRWYWxpZGF0aW9uOiAiJyArIHNpbXBsZS5maW5kQnlJZCgidWlkVmFsaWRhdGlvbiIraWkp
LmdldFZhbHVlKCkgKyAnIic7DQoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydWxl
SnNvbiArPSAnLHZjaFZhbGlkYXRpb25OYW1lOiInICsgc2ltcGxlLmZpbmRCeUlkKCJ2Y2hWYWxp
ZGF0aW9uTmFtZSIraWkpLmdldFZhbHVlKCkgKyAnIic7DQoJICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBydWxlSnNvbiArPSAnLHZjaFZhbHVlOiInICsgc2ltcGxlLmZpbmRCeUlkKCJ2
Y2hWYWx1ZSIraWkpLmdldFZhbHVlKCkgKyAnIic7DQoJICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBydWxlSnNvbiArPSAnLHZjaG9wZXJhdG9yOiAiPSInOw0KCSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcnVsZUpzb24gKz0gJ30nOw0KCSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdmFyIHJ1bGUgPSBFeHQudXRpbC5KU09OLmRlY29kZShydWxlSnNvbik7DQoJ
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYWN0aW9ucyA9IFtdOw0KCSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yKHZhciBqaiA9IDE7IGpqIDw9IGFjdGlvbklu
ZGV4W2lpLTFdOyBqaisrKSB7DQoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dmFyIGluZGV4SWQgPSBpaSArICctJyArIGpqOw0KCSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHZhciBhY3Rpb25QYW5lbCA9IHJ1bGVQYW5lbC5pdGVtcy5nZXQoImFjdGlvbi0i
K2luZGV4SWQpOw0KCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGFjdGlv
blBhbmVsKSB7DQoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBh
Y3Rpb25Kc29uID0gJ3snOw0KCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBhY3Rpb25Kc29uICs9ICd1aWRBY3Rpb246ICInICsgc2ltcGxlLmZpbmRCeUlkKCJ1aWRBY3Rp
b24iK2luZGV4SWQpLmdldFZhbHVlKCkgKyAnIic7DQoJICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGFjdGlvbkpzb24gKz0gJyx1aWRPYmplY3Q6IicgKyBzaW1wbGUuZmlu
ZEJ5SWQoInVpZE9iamVjdCIraW5kZXhJZCkuZ2V0VmFsdWUoKSArICciJzsNCgkgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uSnNvbiArPSAnLGJvb1Jlc3VsdDon
ICsgc2ltcGxlLmZpbmRCeUlkKCJib29SZXN1bHQiK2luZGV4SWQpLmdldFZhbHVlKCk7DQoJICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbkpzb24gKz0gJyx2Y2hB
Y3Rpb246IicgKyBzaW1wbGUuZmluZEJ5SWQoInZjaEFjdGlvbiIraW5kZXhJZCkuZ2V0VmFsdWUo
KSArICciJzsNCgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoc2lt
cGxlLmZpbmRCeUlkKCJ1aWRPYmplY3QiK2luZGV4SWQpLmdldFZhbHVlKCkgPT0gJycpDQoJICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb25Kc29uICs9ICcs
dmNoTWVzc2FnZToiJyArIHNpbXBsZS5maW5kQnlJZCgidmNoTWVzc2FnZSIraW5kZXhJZCkuZ2V0
VmFsdWUoKSArICciJzsNCgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZWxzZQ0KCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9u
SnNvbiArPSAnLHZjaE1lc3NhZ2U6IiInOw0KCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhY3Rpb25Kc29uICs9ICd9JzsNCgkgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYWN0aW9ucy5wdXNoKEV4dC51dGlsLkpTT04uZGVjb2RlKGFjdGlvbkpz
b24pKTsNCgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQoJICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9DQoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBydWxlLmFjdGlvbnMgPSBhY3Rpb25zOw0KCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcnVsZXMucHVzaChydWxlKTsNCgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KCSAg
ICAgICAgICAgICAgICAgICAgICAgIH0NCgkgICAgICAgICAgICAgICAgICAgICAgICBmb3JtLmZp
bmRGaWVsZCgncnVsZXMnKS5zZXRSYXdWYWx1ZShFeHQudXRpbC5KU09OLmVuY29kZShydWxlcykp
Ow0KCSAgICAgICAgICAgICAgICAgICAgfQ0KCSAgICAgICAgICAgICAgICB9DQoJICAgICAgICAg
ICAgfQ0KCQkJfSk7DQoNCgkgICAgICAgIHNpbXBsZS5sb2FkKCk7DQoJDQoJCQlmdW5jdGlvbiBn
ZXRWYWxpZGF0aW9uUnVsZUNvbmZpZyhpZCwgY29uZGl0aW9uLCB2YWx1ZSkgew0KCQkJCWFjdGlv
bkluZGV4W2FjdGlvbkluZGV4Lmxlbmd0aF0gPSAwOw0KCQkJCXJ1bGVJbmRleCsrOw0KCQkJCXJl
dHVybiB7DQoJCQkJCXRpdGxlOiAnVmFsaWRhdGlvbiBSdWxlICcgKyBydWxlSW5kZXgsDQoJCQkJ
CWF1dG9IZWlnaHQ6dHJ1ZSwNCgkJCQkJZnJhbWU6IHRydWUsDQoJCQkJCWhlYWRlcjogdHJ1ZSwN
CgkJCQkJaWQ6ICdydWxlLScgKyBydWxlSW5kZXgsDQoJCQkJCWl0ZW1zIDpbew0KCSAgICAgICAg
ICAgICAgICAgICAgeHR5cGU6ICJoaWRkZW4iLA0KCSAgICAgICAgICAgICAgICAgICAgaWQ6ICJ1
aWRWYWxpZGF0aW9uIisgcnVsZUluZGV4LA0KCSAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGlk
DQoJICAgICAgICAgICAgICAgIH0sew0KCQkJCQkJbGF5b3V0Oidjb2x1bW4nLA0KCQkJCQkJaXRl
bXM6W3sNCgkJCQkJCQljb2x1bW5XaWR0aDouNTAsDQoJCQkJCQkJbGF5b3V0OiAnZm9ybScsDQoJ
CQkJCQkJaXRlbXM6IFt7DQoJCQkJCQkJCQl4dHlwZTonY29tYm8nLA0KCSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3RvcmU6IHJ1bGVTdG9yZSwNCgkJCQkJCQkJCWRpc3BsYXlGaWVs
ZDondGV4dCcsDQoJCQkJCQkJCQl2YWx1ZUZpZWxkOiAndmFsdWUnLA0KCSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdmFsdWU6IGNvbmRpdGlvbiwNCgkJCQkJCQkJCWZvcmNlU2VsZWN0
aW9uOiB0cnVlLA0KCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDIyMCwN
CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RXaWR0aCA6IDMwMCwNCgkJCQkJ
CQkJCWVtcHR5VGV4dDonU2VsZWN0IGNvbmRpdGlvbiAuLi4nLA0KCQkJCQkJCQkJZWRpdGFibGU6
ZmFsc2UsDQoJCQkJCQkJCQloaWRlTGFiZWw6dHJ1ZSwNCgkJCQkJCQkJCWFsbG93Qmxhbms6ZmFs
c2UsDQoJCQkJCQkJCQlsYXp5SW5pdDogZmFsc2UsDQoJCQkJCQkJCQltb2RlOiAnbG9jYWwnLA0K
CSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlckFjdGlvbjogJ2FsbCcsDQoJ
CQkJCQkJCQlpZDogJ3ZjaFZhbGlkYXRpb25OYW1lJysgcnVsZUluZGV4DQoJCQkJCQkJfV0NCgkJ
CQkJCX0sew0KCQkJCQkJCWNvbHVtbldpZHRoOi4zMCwNCgkJCQkJCQlsYXlvdXQ6ICdmb3JtJywN
CgkJCQkJCQlpdGVtczogW3sNCgkJCQkJCQkJeHR5cGU6J3RleHRmaWVsZCcsDQoJCQkJCQkJCWhp
ZGVMYWJlbDp0cnVlLA0KCQkJCQkJCQl3aWR0aDogMTMwLA0KCQkJCQkJCQlhbGxvd0JsYW5rOmZh
bHNlLA0KCQkJCQkJCQl2YWx1ZTogdmFsdWUsDQoJCQkJCQkJCWlkOiAndmNoVmFsdWUnKyBydWxl
SW5kZXgNCgkJCQkJCQl9XQ0KCQkJCQkJfSx7DQoJCQkJCQkJY29sdW1uV2lkdGg6LjEyLA0KCQkJ
CQkJCWxheW91dDogJ2FuY2hvcicsDQoJCQkJCQkJaXRlbXM6IFt7DQoJCQkJCQkJCXh0eXBlOiAn
YnV0dG9uJywNCgkJCQkJCQkJdGV4dDogJ0FkZCcsIA0KCQkJCQkJCQlpZDogJ2FkZGFjdGlvbmJ1
dHRvbi0nICsgcnVsZUluZGV4LCANCgkJCQkJCQkJaGFuZGxlcjogZnVuY3Rpb24oKSB7DQoJCQkJ
CQkJCQl2YXIgaWQgPSB0aGlzLmlkLnN1YnN0cmluZyh0aGlzLmlkLmluZGV4T2YoJy0nKSsxKTsN
CgkJCQkJCQkJCXZhciBydWxlUGFuZWwgPSBzaW1wbGUuaXRlbXMuZ2V0KCdydWxlLScraWQpOyAN
CgkJCQkJCQkJCXZhciBydWxlQWN0aW9uID0gbmV3IEV4dC5QYW5lbCgNCgkgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBnZXRSdWxlQWN0aW9uQ29uZmlnKGlkLCAnMDAwMDAwMDAt
MDAwMC0wMDAwLTAwMDAwMDAwMDAwMDAwMDAnLCAidHJ1ZSIsICJTSE9XRVJST1IiLCAiIiwgJycs
IGZhbHNlKSk7DQoJCQkJCQkJCQlydWxlUGFuZWwuYWRkKHJ1bGVBY3Rpb24pOw0KCQkJCQkJCQkJ
cnVsZVBhbmVsLmRvTGF5b3V0KCk7DQoJCQkJCQkJCX0NCgkJCQkJCQl9XQ0KCQkJCQkJfSx7DQoJ
CQkJCQkJY29sdW1uV2lkdGg6LjA4LA0KCQkJCQkJCWxheW91dDogJ2FuY2hvcicsDQoJCQkJCQkJ
aXRlbXM6IFt7DQoJCQkJCQkJCXh0eXBlOiAnYnV0dG9uJywNCgkJCQkJCQkJdGV4dDogJ1gnLCAN
CgkJCQkJCQkJaWQ6ICdydWxlYnV0dG9uLScgKyBydWxlSW5kZXgsIA0KCQkJCQkJCQloYW5kbGVy
OiBmdW5jdGlvbigpIHsNCgkJCQkJCQkJCXZhciBpZCA9IHRoaXMuaWQuc3Vic3RyaW5nKHRoaXMu
aWQuaW5kZXhPZignLScpKzEpOw0KCQkJCQkJCQkJdmFyIHJ1bGVQYW5lbCA9IHNpbXBsZS5pdGVt
cy5nZXQoJ3J1bGUtJytpZCk7IA0KCQkJCQkJCQkJc2ltcGxlLnJlbW92ZShydWxlUGFuZWwsIHRy
dWUpOw0KCQkJCQkJCQl9DQoJCQkJCQkJfV0NCgkJCQkJCX1dDQoJCQkJCX0sew0KCQkJCQkJaHRt
bDogJzwnICsgJ2gyIHN0eWxlPSJwYWRkaW5nOiAwcHggMHB4IDVweCAwcHgiPkVuZm9yY2UgdGhl
IGZvbGxvd2luZzo8JyArICcvaDI+JywNCgkJCQkJCXh0eXBlOiAnbGFiZWwnDQoJCQkJCX1dDQoJ
CQkJfTsNCgkJCX07DQoNCgkJCWZ1bmN0aW9uIGdldFJ1bGVBY3Rpb25Db25maWcocnVsZUluZGV4
LCB1aWRBY3Rpb24sIHR5cGUsIGFjdGlvbiwgbWVzc2FnZSwgb2JqZWN0SWQsIGZsYWcpIHsNCgkJ
CQlydWxlSW5kZXggPSBwYXJzZUludChydWxlSW5kZXgpOw0KCQkJCWFjdGlvbkluZGV4W3J1bGVJ
bmRleC0xXSsrOw0KCSAgICAgICAgICAgIHZhciBpbmRleElkID0gcnVsZUluZGV4ICsgJy0nICsg
YWN0aW9uSW5kZXhbcnVsZUluZGV4LTFdOw0KCQkJCXJldHVybiB7DQoJCQkJCWF1dG9IZWlnaHQ6
dHJ1ZSwNCgkJCQkJaGVhZGVyOiBmYWxzZSwNCgkJCQkJaWQ6ICdhY3Rpb24tJyArIGluZGV4SWQs
DQoJCQkJCWl0ZW1zIDpbew0KCSAgICAgICAgICAgICAgICAgICAgeHR5cGU6ICJoaWRkZW4iLA0K
CSAgICAgICAgICAgICAgICAgICAgaWQ6ICJ1aWRBY3Rpb24iICsgaW5kZXhJZCwNCgkgICAgICAg
ICAgICAgICAgICAgIHZhbHVlOiB1aWRBY3Rpb24NCgkgICAgICAgICAgICAgICAgfSx7DQoJICAg
ICAgICAgICAgICAgICAgICB4dHlwZTogImhpZGRlbiIsDQoJICAgICAgICAgICAgICAgICAgICBp
ZDogInVpZE9iamVjdCIgKyBpbmRleElkLA0KCSAgICAgICAgICAgICAgICAgICAgdmFsdWU6IG9i
amVjdElkDQoJICAgICAgICAgICAgICAgIH0sew0KCQkJCQkJbGF5b3V0Oidjb2x1bW4nLA0KCQkJ
CQkJaXRlbXM6W3sNCgkJCQkJCQljb2x1bW5XaWR0aDouMTgsDQoJCQkJCQkJbGF5b3V0OiAnZm9y
bScsDQoJICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxXaWR0aDogMTIsDQoJCQkJCQkJaXRl
bXM6IFt7DQoJCQkJCQkJCXh0eXBlOidjb21ibycsDQoJCQkJCQkJCXN0b3JlOlsndHJ1ZScsJ2Zh
bHNlJ10sDQoJCQkJCQkJCWZvcmNlU2VsZWN0aW9uOiB0cnVlLA0KCSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB2YWx1ZTogdHlwZSwNCgkJCQkJCQkJZW1wdHlUZXh0OidJZiAuLi4nLA0KCQkJ
CQkJCQllZGl0YWJsZTpmYWxzZSwNCgkJCQkJCQkJZmllbGRMYWJlbDonSWYnLA0KCQkJCQkJCQl3
aWR0aDogNTAsDQoJCQkJCQkJCWFsbG93Qmxhbms6ZmFsc2UsDQoJCQkJCQkJCWxhenlJbml0OiBm
YWxzZSwNCgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlckFjdGlvbjogJ2FsbCcs
DQoJCQkJCQkJCW1vZGU6ICdsb2NhbCcsDQoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlk
OiAiYm9vUmVzdWx0IiArIGluZGV4SWQNCgkJCQkJCQl9XQ0KCQkJCQkJfSx7DQoJCQkJCQkJY29s
dW1uV2lkdGg6LjM1LA0KCQkJCQkJCWxheW91dDogJ2Zvcm0nLA0KCSAgICAgICAgICAgICAgICAg
ICAgICAgIGxhYmVsV2lkdGg6IDUwLA0KCQkJCQkJCWl0ZW1zOiBbew0KCQkJCQkJCQl4dHlwZTon
Y29tYm8nLA0KCQkJCQkJCQlzdG9yZTogWydBVkFJTEFCTEUnLCdVTkFWQUlMQUJMRScsJ1JFUVVJ
UkVEJywnU0hPV0VSUk9SJ10sDQoJCQkJCQkJCWZvcmNlU2VsZWN0aW9uOiB0cnVlLA0KCSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogYWN0aW9uLA0KCQkJCQkJCQllbXB0eVRleHQ6
J0FjdGlvbiBpcy4uLicsDQoJCQkJCQkJCWVkaXRhYmxlOmZhbHNlLA0KCQkJCQkJCQlmaWVsZExh
YmVsOidBY3Rpb24gaXMnLA0KCQkJCQkJCQl3aWR0aDogMTAwLA0KCQkJCQkJCQlhbGxvd0JsYW5r
OmZhbHNlLA0KCQkJCQkJCQlsYXp5SW5pdDogZmFsc2UsDQoJICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRyaWdnZXJBY3Rpb246ICdhbGwnLA0KCQkJCQkJCQltb2RlOiAnbG9jYWwnLA0KCSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogInZjaEFjdGlvbiIrIGluZGV4SWQsDQoJICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RlbmVyczogew0KCSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2VsZWN0OiBmdW5jdGlvbiAoY29tYm8sIHJlY29yZCwgaW5kZXggKSB7
DQoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG1lc3NhZ2VCb3ggPSBz
aW1wbGUuZmluZEJ5SWQoJ3ZjaE1lc3NhZ2UnKyBpbmRleElkKTsgDQoJICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdmFyIG9iamVjdEJveCA9IHNpbXBsZS5maW5kQnlJZCgndWlk
T2JqZWN0JysgaW5kZXhJZCk7IA0KCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHZhciBwb3BCdXR0b24gPSBzaW1wbGUuZmluZEJ5SWQoJ3BvcGJ1dHRvbi0nKyBpbmRleElkKTsN
CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihpbmRleCA8IDMpIHsNCgkg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SW5kZXhJZChpbmRleElk
KTsNCgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlhbG9nLnNob3co
KTsNCgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZUJveC5z
ZXRWYWx1ZSgnJyk7DQoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1l
c3NhZ2VCb3guc2V0RGlzYWJsZWQodHJ1ZSk7DQoJICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG9iamVjdEJveC5zZXRWYWx1ZSgnJyk7DQoJICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHBvcEJ1dHRvbi5zZXREaXNhYmxlZChmYWxzZSk7DQoJICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KCSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGVsc2Ugew0KCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtZXNzYWdlQm94LnNldFZhbHVlKCcnKTsNCgkgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbWVzc2FnZUJveC5zZXREaXNhYmxlZChmYWxzZSk7DQoJICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcEJ1dHRvbi5zZXREaXNhYmxlZCh0
cnVlKTsNCgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQoJICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9DQoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0N
CgkJCQkJCQl9XQ0KCQkJCQkJfSx7DQoJCQkJCQkJY29sdW1uV2lkdGg6LjMwLA0KCQkJCQkJCWxh
eW91dDogJ2Zvcm0nLA0KCSAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsV2lkdGg6IDUsICAg
ICAgICAgICAgICAgICAgICAgICAgICAgDQoJCQkJCQkJaXRlbXM6IFt7DQoJCQkJCQkJCXh0eXBl
Oid0ZXh0ZmllbGQnLA0KCQkJCQkJCQl3aWR0aDogMTIwLA0KCSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkaXNhYmxlZDogZmxhZywNCgkJCQkJCQkJdmFsdWU6IG1lc3NhZ2UsDQoJICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlkOiAidmNoTWVzc2FnZSIrIGluZGV4SWQNCgkJCQkJCQl9
XQ0KCQkJCQkJfSx7DQoJCQkJCQkJY29sdW1uV2lkdGg6LjEwLA0KCQkJCQkJCWxheW91dDogJ2Fu
Y2hvcicsDQoJCQkJCQkJaXRlbXM6IFt7DQoJCQkJCQkJCXh0eXBlOiAnYnV0dG9uJywNCgkJCQkJ
CQkJdGV4dDogJ1BvcCcsIA0KCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDog
IWZsYWcsDQoJCQkJCQkJCWlkOiAncG9wYnV0dG9uLScgKyBpbmRleElkLCANCgkJCQkJCQkJaGFu
ZGxlcjogZnVuY3Rpb24oKSB7DQoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJ
bmRleElkKGluZGV4SWQpOw0KCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlhbG9n
LnNob3coKTsNCgkJCQkJCQkJfQ0KCQkJCQkJCX1dDQoJCQkJCQl9LHsNCgkJCQkJCQljb2x1bW5X
aWR0aDouMDcsDQoJCQkJCQkJbGF5b3V0OiAnYW5jaG9yJywNCgkJCQkJCQlpdGVtczogW3sNCgkJ
CQkJCQkJeHR5cGU6ICdidXR0b24nLA0KCQkJCQkJCQl0ZXh0OiAnWCcsIA0KCQkJCQkJCQlpZDog
J2FjdGlvbmJ1dHRvbi0nICsgaW5kZXhJZCwgDQoJCQkJCQkJCWhhbmRsZXI6IGZ1bmN0aW9uKCkg
ew0KCQkJCQkJCQkJdmFyIGlkID0gdGhpcy5pZC5zdWJzdHJpbmcodGhpcy5pZC5pbmRleE9mKCct
JykrMSx0aGlzLmlkLmxhc3RJbmRleE9mKCctJykpOw0KCQkJCQkJCQkJdmFyIHJ1bGVQYW5lbCA9
IHNpbXBsZS5pdGVtcy5nZXQoJ3J1bGUtJytpZCk7IA0KCQkJCQkJCQkJaWQgPSB0aGlzLmlkLnN1
YnN0cmluZyh0aGlzLmlkLmluZGV4T2YoJy0nKSsxKTsNCgkJCQkJCQkJCXZhciBhY3Rpb25QYW5l
bCA9IHJ1bGVQYW5lbC5pdGVtcy5nZXQoJ2FjdGlvbi0nK2lkKTsNCgkJCQkJCQkJCXJ1bGVQYW5l
bC5yZW1vdmUoYWN0aW9uUGFuZWwsIHRydWUpOw0KCQkJCQkJCQl9DQoJCQkJCQkJfV0NCgkJCQkJ
CX1dDQoJCQkJCX1dDQoJCQkJfQ0KCQkJfTsNCgkgICAgfTsNCgk8L3NjcmlwdD4NCjwvaGVhZD4N
Cjxib2R5Pg0KPGRpdiBpZD0ieHgiPjwvZGl2Pg0KPC9ib2R5Pg0KPC9odG1sPg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>26135</attachid>
            <date>2008-12-18 16:58:06 -0800</date>
            <delta_ts>2008-12-18 16:58:06 -0800</delta_ts>
            <desc>Working file which has spaces converted to tab via regexp for [ ]{4} to tab.</desc>
            <filename>working.html</filename>
            <type>text/html</type>
            <size>16728</size>
            <attacher name="Brian">brian-webkit</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFs
Ly9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25h
bC5kdGQiPg0KPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPg0KPGhl
YWQ+DQoJPHRpdGxlPkZvcm0gTGF5b3V0PC90aXRsZT4NCgkNCgk8c2NyaXB0IHR5cGU9InRleHQv
amF2YXNjcmlwdCI+DQoJCXZhciBpZCA9ICdDQ0M1RDJFMC0xRDcyLTgyMkItNzkyMEQyQjE3NzQ2
NkY1Myc7DQoNCgkJdmFyIG1hc2sgPSBuZXcgRXh0LkxvYWRNYXNrKEV4dC5nZXRCb2R5KCksIHtt
c2c6ICdGZXRjaGluZyBkZXRhaWxzLCBwbGVhc2Ugd2FpdC4uLid9KTsNCgkJbWFzay5zaG93KCk7
DQoNCgkJdmFyIG9uU3VibWl0ID0gew0KCQkJdXJsOiB1cmwsDQoJCQlwYXJhbXMgOiB7dWlkRXZl
bnQ6dWlkRXZlbnQsIG1ldGhvZDogJ3NhdmVGb3JtQmVhbid9LA0KCQkJc3VjY2VzczogZnVuY3Rp
b24gKGZvcm0sIGFjdGlvbikgew0KCQkJCXVwZGF0ZUZvcm1MYXlvdXQoYWN0aW9uLnJlc3VsdC5k
YXRhKTsNCgkJCX0sDQoJCQlmYWlsdXJlOiBmdW5jdGlvbiAoZm9ybSwgYWN0aW9uKSB7DQoJCQkJ
RXh0Lk1zZy5hbGVydCgnU3RhdHVzJywgImZhaWx1cmUiKTsNCgkJCX0sDQoJCQl3YWl0TXNnOiAn
UGxlYXNlIHdhaXQgd2hpbGUgd2Ugc2F2ZSB5b3VyIGNoYW5nZXMuLi4nLA0KCQkJd2FpdFRpdGxl
OiAnRm9ybSBMYXlvdXQgVXBkYXRlJywNCgkJCWNsaWVudFZhbGlkYXRpb246IGZhbHNlDQoJCX07
DQoNCg0KCQl2YXIgc2ltcGxlOw0KCQlFeHQuYXBwLlVzZXJTZWxlY3Rpb25EaWFsb2cgPSBFeHQu
ZXh0ZW5kKEV4dC5XaW5kb3csIHsNCgkJCXRpdGxlOiAnVXNlciBTZWxlY3Rpb24nLA0KCQkJd2lk
dGg6IDI4MCwNCgkJCWhlaWdodDogMzAwLA0KCQkJY2xvc2FibGU6IGZhbHNlLA0KCQkJbGF5b3V0
OiAnZml0JywNCgkJCWJ1dHRvbkFsaWduOiAnY2VudGVyJywNCgkJCWN1cnJlbnROb2RlSWQ6ICcn
LA0KCQkJcm9vdDogbmV3IEV4dC50cmVlLkFzeW5jVHJlZU5vZGUoe2RyYWdnYWJsZTpmYWxzZSwg
ZXhwYW5kZWQ6ZmFsc2V9KSwNCgkJCWluaXRDb21wb25lbnQ6IGZ1bmN0aW9uKCkgew0KCQkJCUV4
dC5hcHAuVXNlclNlbGVjdGlvbkRpYWxvZy5zdXBlcmNsYXNzLmluaXRDb21wb25lbnQuY2FsbCh0
aGlzKTsNCg0KCQkJCXZhciBjaWQgPSB0aGlzLmN1cnJlbnROb2RlSWQ7DQoJCQkJdGhpcy50cmVl
UGFuZWwgPSBuZXcgRXh0LnRyZWUuVHJlZVBhbmVsKHsNCgkJCQkJYXV0b1Njcm9sbDp0cnVlLA0K
CQkJCQlhbmltYXRlOnRydWUsDQoJCQkJCWNvbnRhaW5lclNjcm9sbDp0cnVlLA0KCQkJCQlyb290
VmlzaWJsZTogZmFsc2UsDQoJCQkJCXJvb3Q6IHRoaXMucm9vdCwNCgkJCQkJc2VsTW9kZWw6IG5l
dyBFeHQudHJlZS5EZWZhdWx0U2VsZWN0aW9uTW9kZWwoew0KCQkJCQkJbGlzdGVuZXJzOiB7DQoJ
CQkJCQkJc2VsZWN0aW9uY2hhbmdlIDogZnVuY3Rpb24gKHNlbGVjdGlvbk1vZGVsLCBub2RlKSB7
DQoJCQkJCQkJCXZhciBtZXNzYWdlID0gbm9kZS50ZXh0Ow0KCQkJCQkJCQl2YXIgaWQgPSBub2Rl
LmlkOw0KCQkJCQkJCQlzZXRNZXNzYWdlQm94VmFsdWUoaWQsbWVzc2FnZSk7DQoJCQkJCQkJCWRp
YWxvZy5oaWRlKCk7DQoJCQkJCQkJfQ0KCQkJCQkJfQ0KCQkJCQl9KSwNCgkJCQkJbGlzdGVuZXJz
OiB7DQoJCQkJCQlsb2FkOiBmdW5jdGlvbiAobm9kZSkgew0KCQkJCQkJCW5vZGUuZXhwYW5kKHRy
dWUpOw0KCQkJCQkJCXZhciBmaWx0ZXIgPSBuZXcgRXh0LnRyZWUuVHJlZUZpbHRlcih0aGlzKTsN
CgkJCQkJCQlmaWx0ZXIuZmlsdGVyQnkoZnVuY3Rpb24obm9kZSkgew0KCQkJCQkJCQlpZihjaWQg
PT0gbm9kZS5pZCkgcmV0dXJuIGZhbHNlOw0KCQkJCQkJCQlyZXR1cm4gdHJ1ZTsNCgkJCQkJCQl9
KTsNCgkJCQkJCX0NCgkJCQkJfQ0KCQkJCX0pOw0KCQkJCXRoaXMuYWRkKHRoaXMudHJlZVBhbmVs
KTsNCgkJCQkNCgkJCQl2YXIgY2xvc2VCdXR0b24gPSBuZXcgRXh0LkJ1dHRvbih7DQoJCQkJCXRl
eHQ6J0Nsb3NlJywNCgkJCQkJc2NvcGU6dGhpcywNCgkJCQkJbWluV2lkdGg6NzUsDQoJCQkJCWhh
bmRsZXI6dGhpcy5vbkNsb3NlDQoJCQkJfSk7DQoJCQkJdGhpcy5hZGRCdXR0b24oY2xvc2VCdXR0
b24pOw0KCQkJfSwNCgkJCW9uQ2xvc2U6IGZ1bmN0aW9uKCkgew0KCQkJCXRoaXMuaGlkZSgpOw0K
CQkJfQ0KCQl9KTsNCg0KCQl2YXIgZ2xvYmFsSW5kZXhJZDsNCgkJZnVuY3Rpb24gc2V0SW5kZXhJ
ZChpbmRleElkKSB7DQoJCQlnbG9iYWxJbmRleElkID0gaW5kZXhJZDsNCgkJfTsNCg0KCQlmdW5j
dGlvbiBzZXRNZXNzYWdlQm94VmFsdWUoaWQsIG1lc3NhZ2UpIHsNCgkJCXZhciBtZXNzYWdlQm94
ID0gc2ltcGxlLmZpbmRCeUlkKCd2Y2hNZXNzYWdlJytnbG9iYWxJbmRleElkKTsgDQoJCQltZXNz
YWdlQm94LnNldFZhbHVlKG1lc3NhZ2UpOw0KCQkJdmFyIG9iamVjdEJveCA9IHNpbXBsZS5maW5k
QnlJZCgndWlkT2JqZWN0JytnbG9iYWxJbmRleElkKTsgDQoJCQlvYmplY3RCb3guc2V0VmFsdWUo
aWQpOw0KCQl9Ow0KDQoJCXZhciBidWlsZFRyZWUgPSBmdW5jdGlvbihub2RlLHN0cikgew0KCQkJ
c3RyICs9ICAneycrDQoJCQkJCSdpZDogIicrbm9kZS5pZCsnIiwnKw0KCQkJCQkndGV4dDogIicr
bm9kZS50ZXh0KyciLCcrDQoJCQkJCSdpY29uOiAiL2dmeC9mb3JtYnVpbGRlci9ncmlkL2ljb25f
JyArIG5vZGUuYXR0cmlidXRlcy50eXBlICsgJy5naWYiLCcgKw0KCQkJCQkncnVsZUNvdW50OiAn
K25vZGUuYXR0cmlidXRlcy5ydWxlQ291bnQrJywnKw0KCQkJCQknZGF0ZUxpbWl0OiAnK25vZGUu
YXR0cmlidXRlcy5kYXRlTGltaXQrJywnKw0KCQkJCQkndHlwZTogJytub2RlLmF0dHJpYnV0ZXMu
dHlwZSsnLCcrDQoJCQkJCSdjaGlsZHJlbjogWyc7DQoJCQkJCWZvcih2YXIgaWk9MDsgaWk8IG5v
ZGUuY2hpbGROb2Rlcy5sZW5ndGg7IGlpKyspIHsNCgkJCQkJCXN0ciArPSBidWlsZFRyZWUobm9k
ZS5jaGlsZE5vZGVzW2lpXSwnJyk7DQoJCQkJCQlpZihpaSA8IChub2RlLmNoaWxkTm9kZXMubGVu
Z3RoIC0gMSkpDQoJCQkJCQkJc3RyICs9JywnOw0KCQkJCQl9DQoJCQkJCXN0ciArPSAnXX0nOw0K
CQkJcmV0dXJuIHN0cjsNCgkJfTsNCg0KCQl2YXIgc3RyID0gYnVpbGRUcmVlKHRyZWVwYW5lbC5y
b290LCAnJyk7DQoNCgkJdmFyIGRpYWxvZyA9IG5ldyBFeHQuYXBwLlVzZXJTZWxlY3Rpb25EaWFs
b2coe3Jvb3Q6IGV2YWwoIigiK3N0cisiKSIpLCBjdXJyZW50Tm9kZUlkOiBpZH0pOw0KDQoJCXZh
ciBydWxlU3RvcmUgPSBuZXcgRXh0LmRhdGEuSnNvblN0b3JlKHsNCgkJCQlhdXRvTG9hZDogdHJ1
ZSwNCgkJCQlmaWVsZHM6IFt7bmFtZTogJ3ZhbHVlJ30se25hbWU6ICd0ZXh0J31dLA0KCQkJCXJv
b3Q6ICdkYXRhJywNCgkJCQl1cmw6IHVybCwNCgkJCQliYXNlUGFyYW1zIDoge2lkOiBpZCwgdWlk
RXZlbnQ6dWlkRXZlbnQsIG1ldGhvZDogJ2dldE9wdGlvbkRhdGEnLCBxdWVyeTogJ3ZhbGlkYXRp
b25WYWx1ZSd9LA0KCQkJCWxpc3RlbmVyczogew0KCQkJCQlsb2FkOiBmdW5jdGlvbiAoIHN0b3Jl
LCByZWNvcmRzLCBvcHRpb25zKSB7DQoJCQkJCQlyZW5kZXJGb3JtKCk7DQoJCQkJCX0NCgkJCQl9
DQoJCX0pOw0KCQkNCgkJdmFyIHJ1bGVJbmRleCA9IDA7DQoJCXZhciBhY3Rpb25JbmRleCA9IFtd
Ow0KDQoNCgkJZnVuY3Rpb24gcmVuZGVyRm9ybSgpIA0KCQl7DQoJCQlzaW1wbGUgPSBuZXcgRXh0
LmZvcm0uRm9ybVBhbmVsKHsNCgkJCQlsYWJlbFdpZHRoOiA3NSwgDQoJCQkJYXV0b1Njcm9sbDog
dHJ1ZSwNCgkJCQlmcmFtZTogdHJ1ZSwNCgkJCQlmb290ZXI6IHRydWUsDQoJCQkJaGVhZGVyOiB0
cnVlLA0KCQkJCXRpdGxlOiAnRm9ybSBPYmplY3QnLA0KCQkJCWJvZHlTdHlsZToncGFkZGluZzo1
cHggNXB4IDAnLA0KCQkJCXJlbmRlclRvOiAneHgnLA0KCQkJCWJhc2VQYXJhbXM6IHsgdWlkRXZl
bnQ6dWlkRXZlbnQsIG1ldGhvZDogJ2dldEZvcm1CZWFuJywgdWlkT2JqZWN0OiBpZH0sDQoJCQkJ
dXJsOiB1cmwsDQoJCQkJaXRlbXM6IFt7DQoJCQkJCQl4dHlwZTonZmllbGRzZXQnLA0KCQkJCQkJ
Y29sbGFwc2libGU6IGZhbHNlLA0KCQkJCQkJdGl0bGU6ICdHcm91cCcsDQoJCQkJCQljb2xsYXBz
ZWQgOiBmYWxzZSwNCgkJCQkJCWF1dG9IZWlnaHQ6dHJ1ZSwNCgkJCQkJCWl0ZW1zIDpbew0KCQkJ
CQkJCQlodG1sOiAnPCcgKyAnaDIgc3R5bGU9InBhZGRpbmc6IDBweCAwcHggNXB4IDBweCI+VGV4
dCBzdHJpbmcgZm9yIGRpc3BsYXk6PCcgKyAnL2gyPicsDQoJCQkJCQkJCXh0eXBlOiAnbGFiZWwn
DQoJCQkJCQkJfSx7DQoJCQkJCQkJCW5hbWU6ICd2Y2hMYWJlbCcsDQoJCQkJCQkJCWhpZGVMYWJl
bDp0cnVlLA0KCQkJCQkJCQlhbGxvd0JsYW5rOmZhbHNlLA0KCQkJCQkJCQl3aWR0aDogNDUwLA0K
CQkJCQkJCQl4dHlwZTogJ3RleHRmaWVsZCcNCgkJCQkJCQl9LHsNCgkJCQkJCQkJaHRtbDogJzwn
ICsgJ2gyIHN0eWxlPSJwYWRkaW5nOiAwcHggMHB4IDVweCAwcHgiPlJlcXVpcmVkID88JyArICcv
aDI+JywNCgkJCQkJCQkJeHR5cGU6ICdsYWJlbCcNCgkJCQkJCQl9LHsNCgkJCQkJCQkJaGlkZUxh
YmVsOnRydWUsDQoJCQkJCQkJCWFsbG93Qmxhbms6IGZhbHNlLA0KCQkJCQkJCQl2ZXJ0aWNhbDog
ZmFsc2UsDQoJCQkJCQkJCXdpZHRoOiAxMDAsDQoJCQkJCQkJCXh0eXBlOiAncmFkaW9ncm91cCcs
DQoJCQkJCQkJCWlkOiAncmVxdWlyZWQnLA0KCQkJCQkJCQlpdGVtczogWw0KCQkJCQkJCQkJe2Jv
eExhYmVsOiAnWWVzJywgaW5wdXRWYWx1ZTogJ3RydWUnLCBuYW1lOidib29SZXF1aXJlZCd9LA0K
CQkJCQkJCQkJe2JveExhYmVsOiAnTm8nLCBpbnB1dFZhbHVlOiAnZmFsc2UnLCBuYW1lOidib29S
ZXF1aXJlZCd9XQ0KCQkJCQkJCX0NCgkJCQkJXX0sew0KCQkJCQkJaHRtbDogJzwnICsgJ2gyIHN0
eWxlPSJwYWRkaW5nOiAwcHggMHB4IDVweCAwcHgiPkRpc3BsYXkgdG8gYXR0ZW5kZWVzIGJldHdl
ZW46PCcgKyAnL2gyPicsDQoJCQkJCQl4dHlwZTogJ2xhYmVsJw0KCQkJCQl9LHsNCgkJCQkJCWxh
eW91dDonY29sdW1uJywNCgkJCQkJCXdpZHRoOiAzMDAsDQoJCQkJCQlpdGVtczpbew0KCQkJCQkJ
CWNvbHVtbldpZHRoOi40LA0KCQkJCQkJCWxheW91dDogJ2Zvcm0nLA0KCQkJCQkJCWl0ZW1zOiBb
ew0KCQkJCQkJCQluYW1lOiAnZHRlQmVnaW4nLA0KCQkJCQkJCQlmb3JtYXQ6ICdZLW0tZCcsDQoJ
CQkJCQkJCWhpZGVMYWJlbDp0cnVlLA0KCQkJCQkJCQl4dHlwZTogJ2RhdGVmaWVsZCcNCgkJCQkJ
CQl9XQ0KCQkJCQkJfSx7DQoJCQkJCQkJY29sdW1uV2lkdGg6LjIsDQoJCQkJCQkJbGF5b3V0OiAn
Zm9ybScsDQoJCQkJCQkJaXRlbXM6IFt7DQoJCQkJCQkJCWh0bWw6ICc8JyArICdoMiBzdHlsZT0i
cGFkZGluZzogMHB4IDBweCA1cHggMHB4Ij5BTkQ8JyArICcvaDI+JywNCgkJCQkJCQkJeHR5cGU6
ICdsYWJlbCcNCgkJCQkJCQl9XQ0KCQkJCQkJfSx7DQoJCQkJCQkJY29sdW1uV2lkdGg6LjQsDQoJ
CQkJCQkJbGF5b3V0OiAnZm9ybScsDQoJCQkJCQkJaXRlbXM6IFt7DQoJCQkJCQkJCW5hbWU6ICdk
dGVFbmQnLA0KCQkJCQkJCQlmb3JtYXQ6ICdZLW0tZCcsDQoJCQkJCQkJCWhpZGVMYWJlbDp0cnVl
LA0KCQkJCQkJCQl4dHlwZTogJ2RhdGVmaWVsZCcNCgkJCQkJCQl9XQ0KCQkJCQkJfV0NCgkJCQkJ
fSx7DQoJCQkJCQlodG1sOiAnPCcgKyAnaDIgc3R5bGU9InBhZGRpbmc6IDBweCAwcHggNXB4IDBw
eCI+VmlzaWJsZSBUbzo8JyArICcvaDI+JywNCgkJCQkJCXh0eXBlOiAnbGFiZWwnDQoJCQkJCX0s
ew0KCQkJCQkJaGlkZUxhYmVsOnRydWUsDQoJCQkJCQl2ZXJ0aWNhbDogZmFsc2UsDQoJCQkJCQl4
dHlwZTogJ2NoZWNrYm94Z3JvdXAnLA0KCQkJCQkJaWQ6ICd2aXNpYmlsaXR5JywNCgkJCQkJCWl0
ZW1zOiBbDQoJCQkJCQkJe2JveExhYmVsOiAnRHJpdmVyL0F0dGVuZGVlJywgaW5wdXRWYWx1ZTog
IjEiLCBuYW1lOidpbnRWaXNpYmxlVG8nfSwNCgkJCQkJCQl7Ym94TGFiZWw6ICdJbnN0cnVjdG9y
JywgaW5wdXRWYWx1ZTogIjIiLCBuYW1lOidpbnRWaXNpYmxlVG8nfV0NCgkJCQkJfSx7DQoJCQkJ
CQl4dHlwZTogImhpZGRlbiIsDQoJCQkJCQluYW1lOiAicnVsZXMiDQoJCQkJCX0NCgkJCQldLA0K
CQkJCXRiYXI6IFsNCgkJCQl7dGV4dDogJ1NhdmUnLGhhbmRsZXI6IGZ1bmN0aW9uKCkge3NpbXBs
ZS5nZXRGb3JtKCkuc3VibWl0KG9uU3VibWl0KTt9fSwNCgkJCQkiLSIsDQoJCQkJe3RleHQ6ICdB
ZGQgUnVsZScsIGhhbmRsZXI6IGZ1bmN0aW9uKCkgew0KCQkJCQl2YXIgcnVsZVBhbmVsID0gbmV3
IEV4dC5QYW5lbCgNCgkJCQkJCWdldFZhbGlkYXRpb25SdWxlQ29uZmlnKCcwMDAwMDAwMC0wMDAw
LTAwMDAtMDAwMDAwMDAwMDAwMDAwMCcsICIiLCAiIikpOw0KCQkJCQlzaW1wbGUuYWRkKHJ1bGVQ
YW5lbCk7DQoJCQkJCXNpbXBsZS5kb0xheW91dCgpOw0KCQkJCX19XSwNCgkJCQliYmFyOiBbDQoJ
CQkJe3RleHQ6ICdTYXZlJyxoYW5kbGVyOiBmdW5jdGlvbigpIHtzaW1wbGUuZ2V0Rm9ybSgpLnN1
Ym1pdChvblN1Ym1pdCk7fX0sDQoJCQkJIi0iLA0KCQkJCXt0ZXh0OiAnQWRkIFJ1bGUnLCBoYW5k
bGVyOiBmdW5jdGlvbigpIHsNCgkJCQkJdmFyIHJ1bGVQYW5lbCA9IG5ldyBFeHQuUGFuZWwoDQoJ
CQkJCQlnZXRWYWxpZGF0aW9uUnVsZUNvbmZpZygnMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAwMDAw
MDAwMDAwMDAnLCIiLCAiIikpOw0KCQkJCQlzaW1wbGUuYWRkKHJ1bGVQYW5lbCk7DQoJCQkJCXNp
bXBsZS5kb0xheW91dCgpOw0KCQkJCX19XSwNCgkJCQlsaXN0ZW5lcnM6IHsNCgkJCQkJYWN0aW9u
Y29tcGxldGUgOiBmdW5jdGlvbiAoIGZvcm0gLCBhY3Rpb24gKSB7DQoJCQkJCQlpZihhY3Rpb24u
dHlwZSA9PSAibG9hZCIpIHsNCgkJCQkJCQltYXNrLmhpZGUoKTsNCgkJCQkJCQl2YXIgcnVsZXNE
YXRhID0gYWN0aW9uLnJlc3VsdC5kYXRhLnJ1bGVzOw0KCQkJCQkJCWZvcih2YXIgaWkgPSAwOyBp
aTwgcnVsZXNEYXRhLmxlbmd0aDsgaWkrKykgew0KCQkJCQkJCQl2YXIgcnVsZVBhbmVsID0gbmV3
IEV4dC5QYW5lbCgNCgkJCQkJCQkJCWdldFZhbGlkYXRpb25SdWxlQ29uZmlnKA0KCQkJCQkJCQkJ
CXJ1bGVzRGF0YVtpaV0udWlkVmFsaWRhdGlvbiwgDQoJCQkJCQkJCQkJcnVsZXNEYXRhW2lpXS52
Y2hWYWxpZGF0aW9uTmFtZSwgDQoJCQkJCQkJCQkJcnVsZXNEYXRhW2lpXS52Y2hWYWx1ZSkpOw0K
CQkJCQkJCQlzaW1wbGUuYWRkKHJ1bGVQYW5lbCk7DQoJCQkJCQkJCXNpbXBsZS5kb0xheW91dCgp
Ow0KCQkJCQkJCQl2YXIgYWN0aW9uc0RhdGEgPSBydWxlc0RhdGFbaWldLkFDVElPTlM7DQoJCQkJ
CQkJCWlmKGFjdGlvbnNEYXRhKSB7DQoJCQkJCQkJCQlmb3IodmFyIGpqID0gMDsgamo8IGFjdGlv
bnNEYXRhLmxlbmd0aDsgamorKykgew0KCQkJCQkJCQkJCXZhciBvYmplY3RJZCA9IGFjdGlvbnNE
YXRhW2pqXS51aWRPYmplY3Q7DQoJCQkJCQkJCQkJdmFyIG1lc3NhZ2UgPSBhY3Rpb25zRGF0YVtq
al0udmNoTWVzc2FnZTsNCgkJCQkJCQkJCQl2YXIgZmxhZyA9IGZhbHNlOw0KCQkJCQkJCQkJCWlm
KG9iamVjdElkICE9ICcnKSB7DQoJCQkJCQkJCQkJCWZsYWcgPSB0cnVlOw0KCQkJCQkJCQkJCQl2
YXIgbm9kZSA9IHRyZWVwYW5lbC5nZXROb2RlQnlJZChvYmplY3RJZCk7DQoJCQkJCQkJCQkJCWlm
KG5vZGUpDQoJCQkJCQkJCQkJCQltZXNzYWdlID0gbm9kZS50ZXh0Ow0KCQkJCQkJCQkJCQllbHNl
DQoJCQkJCQkJCQkJCQltZXNzYWdlID0gJ05PIE5PREUgRk9VTkQnOw0KCQkJCQkJCQkJCX0NCgkJ
CQkJCQkJCQl2YXIgcnVsZUFjdGlvbiA9IG5ldyBFeHQuUGFuZWwoDQoJCQkJCQkJCQkJCWdldFJ1
bGVBY3Rpb25Db25maWcoDQoJCQkJCQkJCQkJCQlydWxlSW5kZXgsIA0KCQkJCQkJCQkJCQkJYWN0
aW9uc0RhdGFbampdLnVpZEFjdGlvbiwgDQoJCQkJCQkJCQkJCQlhY3Rpb25zRGF0YVtqal0uYm9v
UmVzdWx0LCANCgkJCQkJCQkJCQkJCWFjdGlvbnNEYXRhW2pqXS52Y2hBY3Rpb24sIA0KCQkJCQkJ
CQkJCQkJbWVzc2FnZSwgDQoJCQkJCQkJCQkJCQlvYmplY3RJZCwgDQoJCQkJCQkJCQkJCQlmbGFn
KSk7DQoJCQkJCQkJCQkJcnVsZVBhbmVsLmFkZChydWxlQWN0aW9uKTsNCgkJCQkJCQkJCQlydWxl
UGFuZWwuZG9MYXlvdXQoKTsNCgkJCQkJCQkJCX0NCgkJCQkJCQkJfQ0KCQkJCQkJCX0NCgkJCQkJ
CQl2YXIgcmVxdWlyZWQgPSBhY3Rpb24ucmVzdWx0LmRhdGEuYm9vUmVxdWlyZWQ7DQoJCQkJCQkJ
dmFyIHJlcXVpcmVkUmFkaW9Hcm91cCA9IGZvcm0uZmluZEZpZWxkKCdyZXF1aXJlZCcpOw0KCQkJ
CQkJCWlmKHJlcXVpcmVkUmFkaW9Hcm91cCkgew0KCQkJCQkJCQlpZihyZXF1aXJlZCkgew0KCQkJ
CQkJCQkJcmVxdWlyZWRSYWRpb0dyb3VwLml0ZW1zLmdldCgwKS5zZXRWYWx1ZSh0cnVlKTsNCgkJ
CQkJCQkJfSBlbHNlIHsNCgkJCQkJCQkJCXJlcXVpcmVkUmFkaW9Hcm91cC5pdGVtcy5nZXQoMSku
c2V0VmFsdWUodHJ1ZSk7DQoJCQkJCQkJCX0NCgkJCQkJCQl9DQoJCQkJCQkJdmFyIHZpc2libGVN
YXNrID0gYWN0aW9uLnJlc3VsdC5kYXRhLmludFZpc2libGVUbzsNCgkJCQkJCQl2YXIgdmlzaWJs
ZUNoZWNrQm94R3JvdXAgPSBmb3JtLmZpbmRGaWVsZCgndmlzaWJpbGl0eScpOw0KCQkJCQkJCWlm
KHZpc2libGVNYXNrID4gMCAmJiB2aXNpYmxlTWFzayA8PSAxKSB7DQoJCQkJCQkJCXZpc2libGVD
aGVja0JveEdyb3VwLml0ZW1zLmdldCgwKS5zZXRWYWx1ZSh0cnVlKTsNCgkJCQkJCQl9IGVsc2Ug
aWYodmlzaWJsZU1hc2sgPiAxICYmIHZpc2libGVNYXNrIDw9IDIpIHsNCgkJCQkJCQkJdmlzaWJs
ZUNoZWNrQm94R3JvdXAuaXRlbXMuZ2V0KDEpLnNldFZhbHVlKHRydWUpOw0KCQkJCQkJCX0gZWxz
ZSBpZih2aXNpYmxlTWFzayA+IDIpIHsNCgkJCQkJCQkJdmlzaWJsZUNoZWNrQm94R3JvdXAuaXRl
bXMuZ2V0KDApLnNldFZhbHVlKHRydWUpOw0KCQkJCQkJCQl2aXNpYmxlQ2hlY2tCb3hHcm91cC5p
dGVtcy5nZXQoMSkuc2V0VmFsdWUodHJ1ZSk7DQoJCQkJCQkJfQ0KCQkJCQkJfSANCgkJCQkJfSwN
CgkJCQkJYmVmb3JlYWN0aW9uIDogZnVuY3Rpb24gKGZvcm0sIGFjdGlvbikgew0KCQkJCQkJaWYo
YWN0aW9uLnR5cGUgPT0gInN1Ym1pdCIpIHsNCgkJCQkJCQl2YXIgcnVsZXMgPSBbXTsNCgkJCQkJ
CQlmb3IodmFyIGlpID0gMTsgaWkgPD0gcnVsZUluZGV4OyBpaSsrKSB7DQoJCQkJCQkJCXZhciBy
dWxlUGFuZWwgPSBzaW1wbGUuaXRlbXMuZ2V0KCJydWxlLSIraWkpOw0KCQkJCQkJCQlpZihydWxl
UGFuZWwpIHsNCgkJCQkJCQkJCXZhciBydWxlSnNvbiA9ICd7JzsNCgkJCQkJCQkJCXJ1bGVKc29u
ICs9ICd1aWRWYWxpZGF0aW9uOiAiJyArIHNpbXBsZS5maW5kQnlJZCgidWlkVmFsaWRhdGlvbiIr
aWkpLmdldFZhbHVlKCkgKyAnIic7DQoJCQkJCQkJCQlydWxlSnNvbiArPSAnLHZjaFZhbGlkYXRp
b25OYW1lOiInICsgc2ltcGxlLmZpbmRCeUlkKCJ2Y2hWYWxpZGF0aW9uTmFtZSIraWkpLmdldFZh
bHVlKCkgKyAnIic7DQoJCQkJCQkJCQlydWxlSnNvbiArPSAnLHZjaFZhbHVlOiInICsgc2ltcGxl
LmZpbmRCeUlkKCJ2Y2hWYWx1ZSIraWkpLmdldFZhbHVlKCkgKyAnIic7DQoJCQkJCQkJCQlydWxl
SnNvbiArPSAnLHZjaG9wZXJhdG9yOiAiPSInOw0KCQkJCQkJCQkJcnVsZUpzb24gKz0gJ30nOw0K
CQkJCQkJCQkJdmFyIHJ1bGUgPSBFeHQudXRpbC5KU09OLmRlY29kZShydWxlSnNvbik7DQoJCQkJ
CQkJCQl2YXIgYWN0aW9ucyA9IFtdOw0KCQkJCQkJCQkJZm9yKHZhciBqaiA9IDE7IGpqIDw9IGFj
dGlvbkluZGV4W2lpLTFdOyBqaisrKSB7DQoJCQkJCQkJCQkJdmFyIGluZGV4SWQgPSBpaSArICct
JyArIGpqOw0KCQkJCQkJCQkJCXZhciBhY3Rpb25QYW5lbCA9IHJ1bGVQYW5lbC5pdGVtcy5nZXQo
ImFjdGlvbi0iK2luZGV4SWQpOw0KCQkJCQkJCQkJCWlmKGFjdGlvblBhbmVsKSB7DQoJCQkJCQkJ
CQkJCXZhciBhY3Rpb25Kc29uID0gJ3snOw0KCQkJCQkJCQkJCQlhY3Rpb25Kc29uICs9ICd1aWRB
Y3Rpb246ICInICsgc2ltcGxlLmZpbmRCeUlkKCJ1aWRBY3Rpb24iK2luZGV4SWQpLmdldFZhbHVl
KCkgKyAnIic7DQoJCQkJCQkJCQkJCWFjdGlvbkpzb24gKz0gJyx1aWRPYmplY3Q6IicgKyBzaW1w
bGUuZmluZEJ5SWQoInVpZE9iamVjdCIraW5kZXhJZCkuZ2V0VmFsdWUoKSArICciJzsNCgkJCQkJ
CQkJCQkJYWN0aW9uSnNvbiArPSAnLGJvb1Jlc3VsdDonICsgc2ltcGxlLmZpbmRCeUlkKCJib29S
ZXN1bHQiK2luZGV4SWQpLmdldFZhbHVlKCk7DQoJCQkJCQkJCQkJCWFjdGlvbkpzb24gKz0gJyx2
Y2hBY3Rpb246IicgKyBzaW1wbGUuZmluZEJ5SWQoInZjaEFjdGlvbiIraW5kZXhJZCkuZ2V0VmFs
dWUoKSArICciJzsNCgkJCQkJCQkJCQkJaWYoc2ltcGxlLmZpbmRCeUlkKCJ1aWRPYmplY3QiK2lu
ZGV4SWQpLmdldFZhbHVlKCkgPT0gJycpDQoJCQkJCQkJCQkJCQlhY3Rpb25Kc29uICs9ICcsdmNo
TWVzc2FnZToiJyArIHNpbXBsZS5maW5kQnlJZCgidmNoTWVzc2FnZSIraW5kZXhJZCkuZ2V0VmFs
dWUoKSArICciJzsNCgkJCQkJCQkJCQkJZWxzZQ0KCQkJCQkJCQkJCQkJYWN0aW9uSnNvbiArPSAn
LHZjaE1lc3NhZ2U6IiInOw0KCQkJCQkJCQkJCQlhY3Rpb25Kc29uICs9ICd9JzsNCgkJCQkJCQkJ
CQkJYWN0aW9ucy5wdXNoKEV4dC51dGlsLkpTT04uZGVjb2RlKGFjdGlvbkpzb24pKTsNCgkJCQkJ
CQkJCQl9DQoJCQkJCQkJCQl9DQoJCQkJCQkJCQlydWxlLmFjdGlvbnMgPSBhY3Rpb25zOw0KCQkJ
CQkJCQkJcnVsZXMucHVzaChydWxlKTsNCgkJCQkJCQkJfQ0KCQkJCQkJCX0NCgkJCQkJCQlmb3Jt
LmZpbmRGaWVsZCgncnVsZXMnKS5zZXRSYXdWYWx1ZShFeHQudXRpbC5KU09OLmVuY29kZShydWxl
cykpOw0KCQkJCQkJfQ0KCQkJCQl9DQoJCQkJfQ0KCQkJfSk7DQoNCgkJCXNpbXBsZS5sb2FkKCk7
DQoJDQoJCQlmdW5jdGlvbiBnZXRWYWxpZGF0aW9uUnVsZUNvbmZpZyhpZCwgY29uZGl0aW9uLCB2
YWx1ZSkgew0KCQkJCWFjdGlvbkluZGV4W2FjdGlvbkluZGV4Lmxlbmd0aF0gPSAwOw0KCQkJCXJ1
bGVJbmRleCsrOw0KCQkJCXJldHVybiB7DQoJCQkJCXRpdGxlOiAnVmFsaWRhdGlvbiBSdWxlICcg
KyBydWxlSW5kZXgsDQoJCQkJCWF1dG9IZWlnaHQ6dHJ1ZSwNCgkJCQkJZnJhbWU6IHRydWUsDQoJ
CQkJCWhlYWRlcjogdHJ1ZSwNCgkJCQkJaWQ6ICdydWxlLScgKyBydWxlSW5kZXgsDQoJCQkJCWl0
ZW1zIDpbew0KCQkJCQkJeHR5cGU6ICJoaWRkZW4iLA0KCQkJCQkJaWQ6ICJ1aWRWYWxpZGF0aW9u
IiArIHJ1bGVJbmRleCwNCgkJCQkJCXZhbHVlOiBpZA0KCQkJCQl9LHsNCgkJCQkJCWxheW91dDon
Y29sdW1uJywNCgkJCQkJCWl0ZW1zOlt7DQoJCQkJCQkJY29sdW1uV2lkdGg6LjUwLA0KCQkJCQkJ
CWxheW91dDogJ2Zvcm0nLA0KCQkJCQkJCWl0ZW1zOiBbew0KCQkJCQkJCQkJeHR5cGU6J2NvbWJv
JywNCgkJCQkJCQkJCXN0b3JlOiBydWxlU3RvcmUsDQoJCQkJCQkJCQlkaXNwbGF5RmllbGQ6J3Rl
eHQnLA0KCQkJCQkJCQkJdmFsdWVGaWVsZDogJ3ZhbHVlJywNCgkJCQkJCQkJCXZhbHVlOiBjb25k
aXRpb24sDQoJCQkJCQkJCQlmb3JjZVNlbGVjdGlvbjogdHJ1ZSwNCgkJCQkJCQkJCXdpZHRoOiAy
MjAsDQoJCQkJCQkJCQlsaXN0V2lkdGggOiAzMDAsDQoJCQkJCQkJCQllbXB0eVRleHQ6J1NlbGVj
dCBjb25kaXRpb24gLi4uJywNCgkJCQkJCQkJCWVkaXRhYmxlOmZhbHNlLA0KCQkJCQkJCQkJaGlk
ZUxhYmVsOnRydWUsDQoJCQkJCQkJCQlhbGxvd0JsYW5rOmZhbHNlLA0KCQkJCQkJCQkJbGF6eUlu
aXQ6IGZhbHNlLA0KCQkJCQkJCQkJbW9kZTogJ2xvY2FsJywNCgkJCQkJCQkJCXRyaWdnZXJBY3Rp
b246ICdhbGwnLA0KCQkJCQkJCQkJaWQ6ICd2Y2hWYWxpZGF0aW9uTmFtZScrIHJ1bGVJbmRleA0K
CQkJCQkJCX1dDQoJCQkJCQl9LHsNCgkJCQkJCQljb2x1bW5XaWR0aDouMzAsDQoJCQkJCQkJbGF5
b3V0OiAnZm9ybScsDQoJCQkJCQkJaXRlbXM6IFt7DQoJCQkJCQkJCXh0eXBlOid0ZXh0ZmllbGQn
LA0KCQkJCQkJCQloaWRlTGFiZWw6dHJ1ZSwNCgkJCQkJCQkJd2lkdGg6IDEzMCwNCgkJCQkJCQkJ
YWxsb3dCbGFuazpmYWxzZSwNCgkJCQkJCQkJdmFsdWU6IHZhbHVlLA0KCQkJCQkJCQlpZDogJ3Zj
aFZhbHVlJysgcnVsZUluZGV4DQoJCQkJCQkJfV0NCgkJCQkJCX0sew0KCQkJCQkJCWNvbHVtbldp
ZHRoOi4xMiwNCgkJCQkJCQlsYXlvdXQ6ICdhbmNob3InLA0KCQkJCQkJCWl0ZW1zOiBbew0KCQkJ
CQkJCQl4dHlwZTogJ2J1dHRvbicsDQoJCQkJCQkJCXRleHQ6ICdBZGQnLCANCgkJCQkJCQkJaWQ6
ICdhZGRhY3Rpb25idXR0b24tJyArIHJ1bGVJbmRleCwgDQoJCQkJCQkJCWhhbmRsZXI6IGZ1bmN0
aW9uKCkgew0KCQkJCQkJCQkJdmFyIGlkID0gdGhpcy5pZC5zdWJzdHJpbmcodGhpcy5pZC5pbmRl
eE9mKCctJykrMSk7DQoJCQkJCQkJCQl2YXIgcnVsZVBhbmVsID0gc2ltcGxlLml0ZW1zLmdldCgn
cnVsZS0nK2lkKTsgDQoJCQkJCQkJCQl2YXIgcnVsZUFjdGlvbiA9IG5ldyBFeHQuUGFuZWwoDQoJ
CQkJCQkJCQkJZ2V0UnVsZUFjdGlvbkNvbmZpZyhpZCwgJzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAw
MDAwMDAwMDAwMDAwJywgInRydWUiLCAiU0hPV0VSUk9SIiwgIiIsICcnLCBmYWxzZSkpOw0KCQkJ
CQkJCQkJcnVsZVBhbmVsLmFkZChydWxlQWN0aW9uKTsNCgkJCQkJCQkJCXJ1bGVQYW5lbC5kb0xh
eW91dCgpOw0KCQkJCQkJCQl9DQoJCQkJCQkJfV0NCgkJCQkJCX0sew0KCQkJCQkJCWNvbHVtbldp
ZHRoOi4wOCwNCgkJCQkJCQlsYXlvdXQ6ICdhbmNob3InLA0KCQkJCQkJCWl0ZW1zOiBbew0KCQkJ
CQkJCQl4dHlwZTogJ2J1dHRvbicsDQoJCQkJCQkJCXRleHQ6ICdYJywgDQoJCQkJCQkJCWlkOiAn
cnVsZWJ1dHRvbi0nICsgcnVsZUluZGV4LCANCgkJCQkJCQkJaGFuZGxlcjogZnVuY3Rpb24oKSB7
DQoJCQkJCQkJCQl2YXIgaWQgPSB0aGlzLmlkLnN1YnN0cmluZyh0aGlzLmlkLmluZGV4T2YoJy0n
KSsxKTsNCgkJCQkJCQkJCXZhciBydWxlUGFuZWwgPSBzaW1wbGUuaXRlbXMuZ2V0KCdydWxlLScr
aWQpOyANCgkJCQkJCQkJCXNpbXBsZS5yZW1vdmUocnVsZVBhbmVsLCB0cnVlKTsNCgkJCQkJCQkJ
fQ0KCQkJCQkJCX1dDQoJCQkJCQl9XQ0KCQkJCQl9LHsNCgkJCQkJCWh0bWw6ICc8JyArICdoMiBz
dHlsZT0icGFkZGluZzogMHB4IDBweCA1cHggMHB4Ij5FbmZvcmNlIHRoZSBmb2xsb3dpbmc6PCcg
KyAnL2gyPicsDQoJCQkJCQl4dHlwZTogJ2xhYmVsJw0KCQkJCQl9XQ0KCQkJCX07DQoJCQl9Ow0K
DQoJCQlmdW5jdGlvbiBnZXRSdWxlQWN0aW9uQ29uZmlnKHJ1bGVJbmRleCwgdWlkQWN0aW9uLCB0
eXBlLCBhY3Rpb24sIG1lc3NhZ2UsIG9iamVjdElkLCBmbGFnKSB7DQoJCQkJcnVsZUluZGV4ID0g
cGFyc2VJbnQocnVsZUluZGV4KTsNCgkJCQlhY3Rpb25JbmRleFtydWxlSW5kZXgtMV0rKzsNCgkJ
CQl2YXIgaW5kZXhJZCA9IHJ1bGVJbmRleCArICctJyArIGFjdGlvbkluZGV4W3J1bGVJbmRleC0x
XTsNCgkJCQlyZXR1cm4gew0KCQkJCQlhdXRvSGVpZ2h0OnRydWUsDQoJCQkJCWhlYWRlcjogZmFs
c2UsDQoJCQkJCWlkOiAnYWN0aW9uLScgKyBpbmRleElkLA0KCQkJCQlpdGVtcyA6W3sNCgkJCQkJ
CXh0eXBlOiAiaGlkZGVuIiwNCgkJCQkJCWlkOiAidWlkQWN0aW9uIiArIGluZGV4SWQsDQoJCQkJ
CQl2YWx1ZTogdWlkQWN0aW9uDQoJCQkJCX0sew0KCQkJCQkJeHR5cGU6ICJoaWRkZW4iLA0KCQkJ
CQkJaWQ6ICJ1aWRPYmplY3QiICsgaW5kZXhJZCwNCgkJCQkJCXZhbHVlOiBvYmplY3RJZA0KCQkJ
CQl9LHsNCgkJCQkJCWxheW91dDonY29sdW1uJywNCgkJCQkJCWl0ZW1zOlt7DQoJCQkJCQkJY29s
dW1uV2lkdGg6LjE4LA0KCQkJCQkJCWxheW91dDogJ2Zvcm0nLA0KCQkJCQkJCWxhYmVsV2lkdGg6
IDEyLA0KCQkJCQkJCWl0ZW1zOiBbew0KCQkJCQkJCQl4dHlwZTonY29tYm8nLA0KCQkJCQkJCQlz
dG9yZTpbJ3RydWUnLCdmYWxzZSddLA0KCQkJCQkJCQlmb3JjZVNlbGVjdGlvbjogdHJ1ZSwNCgkJ
CQkJCQkJdmFsdWU6IHR5cGUsDQoJCQkJCQkJCWVtcHR5VGV4dDonSWYgLi4uJywNCgkJCQkJCQkJ
ZWRpdGFibGU6ZmFsc2UsDQoJCQkJCQkJCWZpZWxkTGFiZWw6J0lmJywNCgkJCQkJCQkJd2lkdGg6
IDUwLA0KCQkJCQkJCQlhbGxvd0JsYW5rOmZhbHNlLA0KCQkJCQkJCQlsYXp5SW5pdDogZmFsc2Us
DQoJCQkJCQkJCXRyaWdnZXJBY3Rpb246ICdhbGwnLA0KCQkJCQkJCQltb2RlOiAnbG9jYWwnLA0K
CQkJCQkJCQlpZDogImJvb1Jlc3VsdCIgKyBpbmRleElkDQoJCQkJCQkJfV0NCgkJCQkJCX0sew0K
CQkJCQkJCWNvbHVtbldpZHRoOi4zNSwNCgkJCQkJCQlsYXlvdXQ6ICdmb3JtJywNCgkJCQkJCQls
YWJlbFdpZHRoOiA1MCwNCgkJCQkJCQlpdGVtczogW3sNCgkJCQkJCQkJeHR5cGU6J2NvbWJvJywN
CgkJCQkJCQkJc3RvcmU6IFsnQVZBSUxBQkxFJywnVU5BVkFJTEFCTEUnLCdSRVFVSVJFRCcsJ1NI
T1dFUlJPUiddLA0KCQkJCQkJCQlmb3JjZVNlbGVjdGlvbjogdHJ1ZSwNCgkJCQkJCQkJdmFsdWU6
IGFjdGlvbiwNCgkJCQkJCQkJZW1wdHlUZXh0OidBY3Rpb24gaXMuLi4nLA0KCQkJCQkJCQllZGl0
YWJsZTpmYWxzZSwNCgkJCQkJCQkJZmllbGRMYWJlbDonQWN0aW9uIGlzJywNCgkJCQkJCQkJd2lk
dGg6IDEwMCwNCgkJCQkJCQkJYWxsb3dCbGFuazpmYWxzZSwNCgkJCQkJCQkJbGF6eUluaXQ6IGZh
bHNlLA0KCQkJCQkJCQl0cmlnZ2VyQWN0aW9uOiAnYWxsJywNCgkJCQkJCQkJbW9kZTogJ2xvY2Fs
JywNCgkJCQkJCQkJaWQ6ICJ2Y2hBY3Rpb24iICsgaW5kZXhJZCwNCgkJCQkJCQkJbGlzdGVuZXJz
OiB7DQoJCQkJCQkJCQlzZWxlY3Q6IGZ1bmN0aW9uIChjb21ibywgcmVjb3JkLCBpbmRleCApIHsN
CgkJCQkJCQkJCQl2YXIgbWVzc2FnZUJveCA9IHNpbXBsZS5maW5kQnlJZCgndmNoTWVzc2FnZScr
IGluZGV4SWQpOyANCgkJCQkJCQkJCQl2YXIgb2JqZWN0Qm94ID0gc2ltcGxlLmZpbmRCeUlkKCd1
aWRPYmplY3QnKyBpbmRleElkKTsgDQoJCQkJCQkJCQkJdmFyIHBvcEJ1dHRvbiA9IHNpbXBsZS5m
aW5kQnlJZCgncG9wYnV0dG9uLScrIGluZGV4SWQpOw0KCQkJCQkJCQkJCWlmKGluZGV4IDwgMykg
ew0KCQkJCQkJCQkJCQlzZXRJbmRleElkKGluZGV4SWQpOw0KCQkJCQkJCQkJCQlkaWFsb2cuc2hv
dygpOw0KCQkJCQkJCQkJCQltZXNzYWdlQm94LnNldFZhbHVlKCcnKTsNCgkJCQkJCQkJCQkJbWVz
c2FnZUJveC5zZXREaXNhYmxlZCh0cnVlKTsNCgkJCQkJCQkJCQkJb2JqZWN0Qm94LnNldFZhbHVl
KCcnKTsNCgkJCQkJCQkJCQkJcG9wQnV0dG9uLnNldERpc2FibGVkKGZhbHNlKTsNCgkJCQkJCQkJ
CQl9DQoJCQkJCQkJCQkJZWxzZSB7DQoJCQkJCQkJCQkJCW1lc3NhZ2VCb3guc2V0VmFsdWUoJycp
Ow0KCQkJCQkJCQkJCQltZXNzYWdlQm94LnNldERpc2FibGVkKGZhbHNlKTsNCgkJCQkJCQkJCQkJ
cG9wQnV0dG9uLnNldERpc2FibGVkKHRydWUpOw0KCQkJCQkJCQkJCX0NCgkJCQkJCQkJCX0NCgkJ
CQkJCQkJfQ0KCQkJCQkJCX1dDQoJCQkJCQl9LHsNCgkJCQkJCQljb2x1bW5XaWR0aDouMzAsDQoJ
CQkJCQkJbGF5b3V0OiAnZm9ybScsDQoJCQkJCQkJbGFiZWxXaWR0aDogNSwJCQkJCQkgICANCgkJ
CQkJCQlpdGVtczogW3sNCgkJCQkJCQkJeHR5cGU6J3RleHRmaWVsZCcsDQoJCQkJCQkJCXdpZHRo
OiAxMjAsDQoJCQkJCQkJCWRpc2FibGVkOiBmbGFnLA0KCQkJCQkJCQl2YWx1ZTogbWVzc2FnZSwN
CgkJCQkJCQkJaWQ6ICJ2Y2hNZXNzYWdlIiArIGluZGV4SWQNCgkJCQkJCQl9XQ0KCQkJCQkJfSx7
DQoJCQkJCQkJY29sdW1uV2lkdGg6LjEwLA0KCQkJCQkJCWxheW91dDogJ2FuY2hvcicsDQoJCQkJ
CQkJaXRlbXM6IFt7DQoJCQkJCQkJCXh0eXBlOiAnYnV0dG9uJywNCgkJCQkJCQkJdGV4dDogJ1Bv
cCcsIA0KCQkJCQkJCQlkaXNhYmxlZDogIWZsYWcsDQoJCQkJCQkJCWlkOiAncG9wYnV0dG9uLScg
KyBpbmRleElkLCANCgkJCQkJCQkJaGFuZGxlcjogZnVuY3Rpb24oKSB7DQoJCQkJCQkJCQlzZXRJ
bmRleElkKGluZGV4SWQpOw0KCQkJCQkJCQkJZGlhbG9nLnNob3coKTsNCgkJCQkJCQkJfQ0KCQkJ
CQkJCX1dDQoJCQkJCQl9LHsNCgkJCQkJCQljb2x1bW5XaWR0aDouMDcsDQoJCQkJCQkJbGF5b3V0
OiAnYW5jaG9yJywNCgkJCQkJCQlpdGVtczogW3sNCgkJCQkJCQkJeHR5cGU6ICdidXR0b24nLA0K
CQkJCQkJCQl0ZXh0OiAnWCcsIA0KCQkJCQkJCQlpZDogJ2FjdGlvbmJ1dHRvbi0nICsgaW5kZXhJ
ZCwgDQoJCQkJCQkJCWhhbmRsZXI6IGZ1bmN0aW9uKCkgew0KCQkJCQkJCQkJdmFyIGlkID0gdGhp
cy5pZC5zdWJzdHJpbmcodGhpcy5pZC5pbmRleE9mKCctJykgKyAxLCB0aGlzLmlkLmxhc3RJbmRl
eE9mKCctJykpOw0KCQkJCQkJCQkJdmFyIHJ1bGVQYW5lbCA9IHNpbXBsZS5pdGVtcy5nZXQoJ3J1
bGUtJytpZCk7IA0KCQkJCQkJCQkJaWQgPSB0aGlzLmlkLnN1YnN0cmluZyh0aGlzLmlkLmluZGV4
T2YoJy0nKSArIDEpOw0KCQkJCQkJCQkJdmFyIGFjdGlvblBhbmVsID0gcnVsZVBhbmVsLml0ZW1z
LmdldCgnYWN0aW9uLScgKyBpZCk7DQoJCQkJCQkJCQlydWxlUGFuZWwucmVtb3ZlKGFjdGlvblBh
bmVsLCB0cnVlKTsNCgkJCQkJCQkJfQ0KCQkJCQkJCX1dDQoJCQkJCQl9XQ0KCQkJCQl9XQ0KCQkJ
CX0NCgkJCX07DQoJCX07IA0KCTwvc2NyaXB0Pg0KPC9oZWFkPg0KPGJvZHk+DQo8ZGl2IGlkPSJ4
eCI+PC9kaXY+DQo8L2JvZHk+DQo8L2h0bWw+
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>27143</attachid>
            <date>2009-01-29 03:02:18 -0800</date>
            <delta_ts>2009-01-29 03:02:18 -0800</delta_ts>
            <desc>simple regular expression limit test</desc>
            <filename>test.html</filename>
            <type>application/xhtml+xml</type>
            <size>1192</size>
            <attacher name="ES2000">entwicklung</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFs
Ly9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25h
bC5kdGQiPg0KDQo8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+DQo8
aGVhZD4NCgk8bWV0YSBodHRwLWVxdWl2PSJjb250ZW50LXR5cGUiIGNvbnRlbnQ9ImFwcGxpY2F0
aW9uL3hodG1sK3htbDsgY2hhcnNldD11dGYtOCIgLz4NCgk8dGl0bGU+VGVzdDwvdGl0bGU+DQo8
L2hlYWQ+DQo8Ym9keT4NCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+DQoJLy88IVtD
REFUQVsNCgkJdmFyIGdldFRlc3RDb2RlID0gZnVuY3Rpb24oYVNpemUsIGFXaXRoTGluZUJyZWFr
KSB7DQoJCQl2YXIgcmVzdWx0ID0gJzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4nOw0K
CQkJZm9yICh2YXIgaSA9IDA7IGkgPCBhU2l6ZTsgaSsrKSB7DQoJCQkJaWYgKGFXaXRoTGluZUJy
ZWFrICYmIChpICUgMTAwID09IDApKQ0KCQkJCQlyZXN1bHQgKz0gJ1xuJzsNCgkJCQllbHNlDQoJ
CQkJCXJlc3VsdCArPSAnYSc7DQoJCQl9DQoJCQlyZXN1bHQgKz0gJzwvc2MnICsgJ3JpcHQ+JzsN
CgkJCXJldHVybiByZXN1bHQ7DQoJCX07DQoJCQ0KCQl2YXIgdHJ5Q29kZVNpemUgPSBmdW5jdGlv
bihhU2l6ZSwgYVdpdGhMaW5lQnJlYWspIHsNCgkJCXZhciB0ZXN0dmFsdWUgPSBnZXRUZXN0Q29k
ZShhU2l6ZSwgYVdpdGhMaW5lQnJlYWspOw0KCQkJdmFyIHJlID0gbmV3IFJlZ0V4cCgiKD86PHNj
cmlwdChbXj5dKik/PikoKFxufFxyfC4pKj8pKD86PFwvc2NyaXB0PikiLCAiaWciKTsNCgkJCXZh
ciBtYXRjaCA9IHJlLmV4ZWModGVzdHZhbHVlKTsNCgkJCWlmIChtYXRjaCkgew0KCQkJCWFsZXJ0
KCdGb3VuZDogJyArIG1hdGNoWzJdLmxlbmd0aCk7DQoJCQl9DQoJCQllbHNlIHsNCgkJCQlhbGVy
dCgnTm90IGZvdW5kOiAnICsgYVNpemUpOw0KCQkJfQ0KCQl9Ow0KCQkNCgkJdHJ5Q29kZVNpemUo
MTY2NjUpOyAvLyBXb3Jrcw0KCQl0cnlDb2RlU2l6ZSgxNjY2Nik7IC8vIEZhaWxlcw0KCQl0cnlD
b2RlU2l6ZSgxNjcyMSwgdHJ1ZSk7IC8vIFdvcmtzDQoJCXRyeUNvZGVTaXplKDE2NzIyLCB0cnVl
KTsgLy8gRmFpbGVzDQoJLy9dXT4NCgk8L3NjcmlwdD4NCjwvYm9keT4NCjwvaHRtbD4NCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>