<?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>13366</bug_id>
          
          <creation_ts>2007-04-16 15:31:19 -0700</creation_ts>
          <short_desc>REGRESSION (r10935): AOL beta music player doesn&apos;t play</short_desc>
          <delta_ts>2007-07-18 21:58:26 -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>DOM</component>
          <version>523.x (Safari 3)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://music.aol.com/songs/newsongs</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar, Regression</keywords>
          <priority>P1</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Troy Brandt">troyb</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>dacarson</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>mitz</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>14547</commentid>
    <comment_count>0</comment_count>
    <who name="Troy Brandt">troyb</who>
    <bug_when>2007-04-16 15:31:19 -0700</bug_when>
    <thetext>If you visit the page above you&apos;ll be presented with a list of songs. Click the play link to the right to open a pop-up with the player contained within. 

In Safari Version 2.0.4 (419.3) the song immediately starts playing. In WebKit r20897 the player appears to load but doesn&apos;t ever start playing and the controls don&apos;t work. It looks like it fails to load up the song for play. 

I&apos;ll included a reduction however someone may be able to get it reduced down a bit further.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>14548</commentid>
    <comment_count>1</comment_count>
      <attachid>14056</attachid>
    <who name="Troy Brandt">troyb</who>
    <bug_when>2007-04-16 15:33:34 -0700</bug_when>
    <thetext>Created attachment 14056
reduction</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>7326</commentid>
    <comment_count>2</comment_count>
    <who name="David Carson">dacarson</who>
    <bug_when>2007-06-15 21:16:35 -0700</bug_when>
    <thetext>According to the Javascript console, there was a TypeError: NULL value on line 1382 of:
http://nsvapp-prod-rr.stream.aol.com:80/283/qt.js</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>7327</commentid>
    <comment_count>3</comment_count>
      <attachid>15077</attachid>
    <who name="David Carson">dacarson</who>
    <bug_when>2007-06-15 21:17:38 -0700</bug_when>
    <thetext>Created attachment 15077
The qt script file referenced in Javascript console</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>7328</commentid>
    <comment_count>4</comment_count>
    <who name="David Carson">dacarson</who>
    <bug_when>2007-06-15 21:18:42 -0700</bug_when>
    <thetext>Full details of JS console error:
[21325] http://nsvapp-prod-rr.stream.aol.com:80/fugu?t=uni&amp;tsize=uni&amp;mac=1&amp;tzone=-8&amp;pmmsid=1803379&amp;s1=Fergie&amp;s2=The%20Dutchess&amp;s3=%27Glamorous%27%20feat.%20Ludacris&amp;live=0&amp;angle=0&amp;startpos=0&amp;startpos=0&amp;lpos=0&amp;ppos=0&amp;poffset=0&amp;event=&amp;maxbps=0&amp;skin=grey&amp;width=320&amp;height=77&amp;aspect=4&amp;video=false&amp;showui=1&amp;prefs=1&amp;pid=DL&amp;brand=AOL&amp;player=fls&amp;len=246&amp;country=US&amp;company=AOL&amp;version=1.0&amp;franchise=MUSIC%3A%20Audio%20General&amp;showads=0&amp;locale=US&amp;autoplay=true&amp;mtrack=1&amp;curtainExpand=top&amp;gender=&amp;age=&amp;daypart=&amp;dma=&amp;genre=MUSIC%20-%20Pop&amp;cpid=pmmsid%3A1803379&amp;windowedFullscreen=true&amp;surfacePoint=us.aol.music.newsongs_newsongs&amp;sync=1&amp;restartUrl=mode%3D0%26pmmsid%3D1803379%26referer%3Dhttp%253A//music.aol.com/songs/newsongs line 1382: TypeError: Null value
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>5451</commentid>
    <comment_count>5</comment_count>
    <who name="David Carson">dacarson</who>
    <bug_when>2007-07-05 22:38:15 -0700</bug_when>
    <thetext>using nightly.webkit.org, I went back to the first release, r11976, and the problem still exists there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>4613</commentid>
    <comment_count>6</comment_count>
    <who name="David Carson">dacarson</who>
    <bug_when>2007-07-16 11:01:37 -0700</bug_when>
    <thetext>regression was introduced in r10936 when correcting the bug:
http://bugs.webkit.org/show_bug.cgi?id=5449
Added mitz to CC list as he corrected the bug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>4532</commentid>
    <comment_count>7</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2007-07-17 07:38:35 -0700</bug_when>
    <thetext>Code change:  http://trac.webkit.org/projects/webkit/changeset/10935
Layout test: http://trac.webkit.org/projects/webkit/changeset/10936

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>4526</commentid>
    <comment_count>8</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2007-07-17 07:38:54 -0700</bug_when>
    <thetext>&lt;rdar://problem/5340098&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>4377</commentid>
    <comment_count>9</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2007-07-18 17:10:17 -0700</bug_when>
    <thetext>7/18/07 3:56 PM Anders Carlsson:
Here&apos;s the problem:

The qt.js file has a typo, causing it to write

document.write(&quot;&lt;embed&quot;
                + &quot;\&quot; width=&quot; + width + &quot; height=&quot; + height

this will result in a tag with the name &lt;embed&quot; (note the extra character at the end). This causes Safari to not recognize the embed element.

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>4376</commentid>
    <comment_count>10</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2007-07-18 17:11:07 -0700</bug_when>
    <thetext>Should we evangelize AOL to fix this issue as well?

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>4374</commentid>
    <comment_count>11</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2007-07-18 17:12:09 -0700</bug_when>
    <thetext>Fixed by andersca in r 24429.

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>4364</commentid>
    <comment_count>12</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2007-07-18 21:58:26 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Should we evangelize AOL to fix this issue as well?

Sent feedback to AOL via the &quot;Send Us Feedback&quot; link on http://music.aol.com/songs/newsongs.

</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>14056</attachid>
            <date>2007-04-16 15:33:34 -0700</date>
            <delta_ts>2007-04-16 15:33:34 -0700</delta_ts>
            <desc>reduction </desc>
            <filename>audio.full.html</filename>
            <type>text/html</type>
            <size>51550</size>
            <attacher name="Troy Brandt">troyb</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFs
Ly9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25h
bC5kdGQiPgo8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgeG1sOmxh
bmc9ImVuIiBsYW5nPSJlbiIgPgoKPGhlYWQ+CiAgICA8dGl0bGU+RmVyZ2llIDpUaGUgRHV0Y2hl
c3MgOlwnR2xhbW9yb3VzXCcgZmVhdC4gTHVkYWNyaXMgPC90aXRsZT4KCjxzY3JpcHQgdHlwZT0i
dGV4dC9qYXZhc2NyaXB0Ij4KdmFyIEFTWF9CWV9QTU1TSUQgPSBmYWxzZTsKdmFyIFdNU1BMU1Jl
Z0V4ID0gL1wud21zcGxzJHx0eXBlPXdtdnx0eXBlPXF0L2k7CnZhciBXTVNSZWdFeCA9IC9cLndt
YSR8XC53bXYkfFwud21hbGl2ZSR8XC53bXZsaXZlJHxcLmFzZiR8XC53YXh8XC53bXgkfF5tbXM6
XC9cL3xeaHR0cDpcL1wvd21zfHdtc2xpdmUvaTsKdmFyIEV4dFdNUmVnRXggPSAvXC5hc3gkfFwu
YXNmJHxcLmF2aSQvaTsKdmFyIEZ1Z3VBU1hSZWdFeCA9IC9hc3hpZC9pOwovLyBSZWFsIGZpbGVz
IGVuZCB3aXRoIC5ybSwgLnJhLCBvciAuc21pbAp2YXIgUmVhbFJlZ0V4ID0gL1wucm0kfFwucmEk
fFwuc21pbCR8Xmh0dHA6XC9cL2RlbWFuZDFcLnN0cmVhbVwuYW9sXC5jb21cL3JhbWdlblwvL2k7
Ci8vIEEgc2luZ2xlIHVuc3YgdXJsIHN0YXJ0cyB3aXRoIHVuc3Y6Ly8KLy8gKGJvdGggZm9yIG9u
IGRlbWFuZCBhbmQgbGl2ZSkKdmFyIFVOU1ZSZWdFeCA9IC9edW5zdi9pOwp2YXIgTlNWUExTUmVn
RXggPSAvXC5uc3ZwbHMkfHR5cGU9bnN2L2k7CnZhciBSZWFsUExTUmVnRXggPSAvXC5yZWFscGxz
JHx0eXBlPXJlYWwvaTsKdmFyIFFUUExTUmVnRXggPSAvXC5xdHBscyQvaTsKdmFyIFFUUmVnRXgg
PSAvXC5tb3YkL2k7Ci8vIEZsYXNoCnZhciBGTFNQTFNSZWdFeCA9IC9cLmZsc3BscyR8dHlwZT1m
bHYvaTsKdmFyIEZMU1JlZ0V4ID0gL1wuZmx2JC9pOwp2YXIgRXh0RkxTUmVnRXggPSAvXC5zd2Yk
L2k7Ci8vIGRlZmF1bHQgSFRUUCBoYW5kbGVyIGdvZXMgdG8gVW5hZ2kKLy8gbWFrZSBzdXJlIHRo
ZSBTSE9VVGNhc3QgcmVnZXggaXMgY2hlY2tlZCBBRlRFUgovLyBRdWlja3RpbWUgYW5kIFJlYWwK
dmFyIFNIT1VUY2FzdFJlZ0V4ID0gL15odHRwL2k7CnZhciBQTEFZTElTVGFkcFJlZ0V4ID0gL3Bs
YXlsaXN0LmFkcC9pOwp2YXIgVVZPWFJlZ0V4ID0gL151dm94L2k7CnZhciBFeHRRVFJlZ0V4ID0g
L1wubXBnJHxcLm1wNCR8XC5tcGVnJC9pOwp2YXIgRXh0UmVhbFJlZ0V4ID0gL1wuc21pbCR8XC5y
YW0kL2k7CnZhciBFeHROU1ZSZWdFeCA9IC9cLm5zdnZ2dnZ2diQvaTsKdmFyIFBNTVNJRFJlZ0V4
ID0gL3BtbXNpZDpcZCsvaTsKdmFyIE1wM1JlZ0V4ID0gL1wubXAzJHxcLm0zdSQvaTsKLy8gRmly
ZWZveCB2YXJpYWJsZXMuCi8vIFRoZXNlIGFyZSBuZWVkIGhlcmUgYi9jIGZ1Z3Vfd3JhcHBlci5q
cyBpcyB0aGUKLy8gb25seSAuanMgdGhhdCBpcyBsb2FkZWQuCi8vIEJyb3dzZXIgdmFycy4KTUlO
X0FPTF9TVVBQT1JURUQgPSAiOC4wIjsKTUlOX0lFX1NVUFBPUlRFRCA9ICI2LjAiOwpNSU5fRklS
RUZPWF9TVVBQT1JURUQgPSAiMS41IjsKTUlOX05FVFNDQVBFX1NVUFBPUlRFRCA9ICI3LjIiOwpN
SU5fU0FGQVJJX1NVUFBPUlRFRCA9ICIzLjEiOwoKdmFyIF9mdWd1ID0gbnVsbDsKdmFyIF9jdXJ0
YWluID0gbnVsbDsKdmFyIHR6ID0gbnVsbDsKCmZ1bmN0aW9uIGNoZWNrVGltZVpvbmUoKSB7CiAg
IHZhciByaWdodE5vdyA9IG5ldyBEYXRlKCk7CiAgIHZhciBkYXRlMSA9IG5ldyBEYXRlKHJpZ2h0
Tm93LmdldEZ1bGxZZWFyKCksIDAsIDEsIDAsIDAsIDAsIDApOwogICB2YXIgZGF0ZTIgPSBuZXcg
RGF0ZShyaWdodE5vdy5nZXRGdWxsWWVhcigpLCA2LCAxLCAwLCAwLCAwLCAwKTsKICAgdmFyIHRl
bXAgPSBkYXRlMS50b0dNVFN0cmluZygpOwogICB2YXIgZGF0ZTMgPSBuZXcgRGF0ZSh0ZW1wLnN1
YnN0cmluZygwLCB0ZW1wLmxhc3RJbmRleE9mKCIgIiktMSkpOwogICB2YXIgdGVtcCA9IGRhdGUy
LnRvR01UU3RyaW5nKCk7CiAgIHZhciBkYXRlNCA9IG5ldyBEYXRlKHRlbXAuc3Vic3RyaW5nKDAs
IHRlbXAubGFzdEluZGV4T2YoIiAiKS0xKSk7CiAgIHZhciBob3Vyc0RpZmZTdGRUaW1lID0gKGRh
dGUxIC0gZGF0ZTMpIC8gKDEwMDAgKiA2MCAqIDYwKTsKICAgdmFyIGhvdXJzRGlmZkRheWxpZ2h0
VGltZSA9IChkYXRlMiAtIGRhdGU0KSAvICgxMDAwICogNjAgKiA2MCk7CiAgIGlmIChob3Vyc0Rp
ZmZEYXlsaWdodFRpbWUgPT0gaG91cnNEaWZmU3RkVGltZSkgewogICAgIHR6ID0gaG91cnNEaWZm
U3RkVGltZTsgIC8vTk9UIERTVAogICB9IGVsc2UgewogICAgIHR6ID0gaG91cnNEaWZmU3RkVGlt
ZTsgIC8vRFNUCiAgIH0KfQoKY2hlY2tUaW1lWm9uZSgpOwoKZnVuY3Rpb24gc2NyaXB0YWJsZSh1
YSwgYXNzZXQpIHsKCWlmIChhc3NldCl7CgkJcmV0dXJuICEoKCh1YS5pc0ZpcmVmb3ggfHwgdWEu
aXNTYWZhcmkpICYmIHVhLmlzTWFjICYmIChRVFJlZ0V4LnRlc3QoYXNzZXQpIHx8IFFUUExTUmVn
RXgudGVzdChhc3NldCkpKSB8fCAodWEuaXNGaXJlZm94ICYmIGNoZWNrQnJvd3NlclZlcnNpb24o
dWEsICJndCIsICIxLjAuNyIpICYmIChRVFJlZ0V4LnRlc3QoYXNzZXQpIHx8IFFUUExTUmVnRXgu
dGVzdChhc3NldCkpKSB8fCAodWEuaXNNYWMgJiYgKChXTVNSZWdFeC50ZXN0KGFzc2V0KSB8fCBF
eHRXTVJlZ0V4LnRlc3QoYXNzZXQpKSkpKQoJfWVsc2V7CgkJcmV0dXJuICEodWEuaXNNYWMpOyAg
IAoJfQp9CgpmdW5jdGlvbiBfRlVHVV9HZW5JZnJhbWVVcmwoIGFzc2V0LCBzY3JvbGxfYXJyYXkg
KSB7CiAgaWYgKCAhdGhpcy5sb2NhbGUpIHRoaXMubG9jYWxlID0gIlVTIjsKICBpZiAodGhpcy5V
QS5pc05TOCAmJiB0aGlzLlVBLmlzR2Vja28pIHJldHVybiBuZXcgU3RyaW5nKCAiaHR0cDovLyIg
KyB0aGlzLkRMU2VydmVyICsgIi8iICsgRlVHVS5GdWd1VmVyc2lvbiArICIvZXJyb3JfbnM4ZmZl
bmdpbmUuaHRtbD92ZXJzaW9uPSIgKyBGVUdVLkZ1Z3VWZXJzaW9uICsgIiZ0PSIgKyB0aGlzLnQg
KyAiJmxvY2FsZT0iICsgdGhpcy5sb2NhbGUpOwogIHZhciBub05TViA9IGZhbHNlOwogIGlmICgg
IWFzc2V0ICkgYXNzZXQgPSAiIjsgLy8gYWxsb3cgZm9yIG51bGwgYXNzZXQgdG8gZW1iZWQgRnVn
dSB3aXRoIG5vIHZpZGVvCiAgaWYgKCggdGhpcy5VQS5pc01hYyApICYmIChhc3NldCA9PSBudWxs
IHx8IGFzc2V0ID09ICIiICkpIHJldHVybiBuZXcgU3RyaW5nKCAiaHR0cDovLyIgKyB0aGlzLkRM
U2VydmVyICsgIi9ibGFua19wbGF5ZXIuaHRtbCIgKTsKCiAgaWYgKHRoaXMuVUEuaXNNYWMgfHwg
IXRoaXMuVUEuaXNXaW5kb3dzICkgbm9OU1YgPSB0cnVlOwoJaWYgKCFzY3JpcHRhYmxlKHRoaXMu
VUEsIGFzc2V0KSkgewogICAgaWYgKHRoaXMudCAhPSAidW5pIikgdGhpcy50ID0gdGhpcy50ICsg
Ii1tYWMiOyAgIC8vIERvbid0IGFwcGVuZCBmb3IgbWFjIGlmIHVuaS4KCX0KICBpZiAodGhpcy5V
QS5pc05TNiB8fCB0aGlzLlVBLmlzTlM3MCkgcmV0dXJuIG5ldyBTdHJpbmcoICJodHRwOi8vIiAr
IHRoaXMuRExTZXJ2ZXIgKyAiLyIgKyBGVUdVLkZ1Z3VWZXJzaW9uICsgIi9lcnJvcl9vbGRuc2Nw
Lmh0bWw/dmVyc2lvbj0iICsgRlVHVS5GdWd1VmVyc2lvbiArICImdD0iICsgdGhpcy50ICsgIiZs
b2NhbGU9IiArIHRoaXMubG9jYWxlKSA7IAogIGlmICggdGhpcy5VQS5pc0FPTDYgfHwgdGhpcy5V
QS5pc0FPTDUgfHwgdGhpcy5VQS5pc0FPTDQgKSByZXR1cm4gbmV3IFN0cmluZyggImh0dHA6Ly8i
ICsgdGhpcy5ETFNlcnZlciArICIvIiArIEZVR1UuRnVndVZlcnNpb24gKyAiL2Vycm9yX29sZGFv
bC5odG1sP3ZlcnNpb249IiArIEZVR1UuRnVndVZlcnNpb24gKyAiJnQ9IiArIHRoaXMudCArICIm
bG9jYWxlPSIgKyB0aGlzLmxvY2FsZSk7IAogIGlmICggdGhpcy5VQS5pc0lFNTAgKSByZXR1cm4g
bmV3IFN0cmluZyggImh0dHA6Ly8iICsgdGhpcy5ETFNlcnZlciArICIvIiArIEZVR1UuRnVndVZl
cnNpb24gKyAiL2Vycm9yX29sZGllLmh0bWw/dmVyc2lvbj0iICsgRlVHVS5GdWd1VmVyc2lvbiAr
ICImdD0iICsgdGhpcy50ICsgIiZsb2NhbGU9IiArIHRoaXMubG9jYWxlKTsgCiAgCgkvLyBUaGlz
IGNoZWNrIGlzIG9ubHkgdmFsaWQgd2l0aCB2ZXJzaW9uIHN0cmluZyB4LngueAogIC8vIFVzZXIg
bXVzdCBoYXZlIEZpcmVmb3ggMS4wLjQrIHRvIHVzZSBOU1YuCiAgaWYgKHRoaXMuVUEuaXNGaXJl
Zm94KXsKICAgICBpZiAoY2hlY2tCcm93c2VyVmVyc2lvbih0aGlzLlVBLCAibHQiLCBNSU5fRklS
RUZPWF9TVVBQT1JURUQpKXsKICAgICAgICAvLyBJZiB0aGUgbWluaW11bSBicm93c2VyIHZlcnNp
b24gaXMgbm90IG1ldCwgc2hvdyB0aGUgZXJyb3IgcGFnZS4KICAgICAJcmV0dXJuIG5ldyBTdHJp
bmcoICJodHRwOi8vIiArIHRoaXMuRExTZXJ2ZXIgKyAiLyIgKyBGVUdVLkZ1Z3VWZXJzaW9uICsg
Ii9lcnJvcl9maXJlZm94Lmh0bWw/dmVyc2lvbj0iICsgRlVHVS5GdWd1VmVyc2lvbiArICImdD0i
ICsgdGhpcy50ICsgIiZsb2NhbGU9IiArIHRoaXMubG9jYWxlKTsKICAgICB9CiAgfQoKCgogICAg
Ly8gTG9vayBmb3IgdGhlIE1vemlsbGEgQWN0aXZlWCBwbHVnaW4KICAgIHZhciBtb3pfaGFzX2F4
ID0gZmFsc2U7CiAgICBuYXZpZ2F0b3IucGx1Z2lucy5yZWZyZXNoKCk7CiAgICB2YXIgcGx1Z2lu
X25hbWUgPSAiIjsKCiAgICB2YXIgcXVpY2t0aW1lX2Zvcl9GaXJlZm94ID0gZmFsc2U7CgogICAg
ICAKICAgIAogICAgZm9yKHZhciBpID0gMDsgaSA8IG5hdmlnYXRvci5wbHVnaW5zLmxlbmd0aDsg
aSsrKXsKICAgICAgICBwbHVnaW5fbmFtZSA9IG5hdmlnYXRvci5wbHVnaW5zW2ldLm5hbWUudG9M
b3dlckNhc2UoKTsKICAgIAogICAgICAgIGlmKHBsdWdpbl9uYW1lLmluZGV4T2YoIm1vemlsbGEg
YWN0aXZleCIpICE9IC0xKXsKICAgICAgICAgICAgbW96X2hhc19heCA9IHRydWU7CiAgICAgICAg
fQoJCglpZihwbHVnaW5fbmFtZS5pbmRleE9mKCJxdWlja3RpbWUgcGx1Zy1pbiA3IikgIT0gLTEp
ewoJICAgIC8vYWxlcnQocGx1Z2luX25hbWUpOwoJICAgIHZhciB2ZXJzaW9uID0gcGFyc2VGbG9h
dChwbHVnaW5fbmFtZS5zdWJzdHJpbmcocGx1Z2luX25hbWUuaW5kZXhPZigiLiIpLTEsIHBsdWdp
bl9uYW1lLmluZGV4T2YoIi4iKSsyKSk7CgkgICAgLy9hbGVydCh2ZXJzaW9uKTsKCSAgICBpZih2
ZXJzaW9uID49IDcuMCkKCQlxdWlja3RpbWVfZm9yX0ZpcmVmb3ggPSB0cnVlOwoJICAgIGVsc2UK
CQlxdWlja3RpbWVfZm9yX0ZpcmVmb3ggPSBmYWxzZTsKCX0KICAgIH0KICAgIAogICAgaWYodGhp
cy5VQS5pc0ZpcmVmb3ggJiYgUVRSZWdFeC50ZXN0KGFzc2V0KSkKICAgIHsKCS8vIGNoZWNraW5n
IGZvciBxdCBwbGF5ZXIgdG8gYmUgdmVyc2lvbiA3LjAgb3IgYWJvdmUgLi4uCglpZighcXVpY2t0
aW1lX2Zvcl9GaXJlZm94KXsKCSAgICByZXR1cm4gbmV3IFN0cmluZyggImh0dHA6Ly8iICsgdGhp
cy5ETFNlcnZlciArICIvIiArIEZVR1UuRnVndVZlcnNpb24gKyAiL2Vycm9yX3F0Lmh0bWw/dmVy
c2lvbj0iICsgRlVHVS5GdWd1VmVyc2lvbiArICImdD0iICsgdGhpcy50ICsgIiZsb2NhbGU9IiAr
IHRoaXMubG9jYWxlKTsKCX0KCQogICAgfQoKICAgIC8vIENoZWNrIGZvciBtb3ppbGxhIGFjdGl2
ZVggZm9yIEZGLgogICAgLy8gV2luZG93cyBNZWRpYSBGaXJlZm94IHN1cHBvcnQgbGltaXRlZCB0
byAxLjAuMyAmIDEuMC40IGFuZCByZXF1aXJlcyB0aGUgTW96aWxsYSBBY3RpdmVYIHBsdWdpbgog
ICAgaWYgKCAhdGhpcy5VQS5pc01hYyAmJiB0aGlzLlVBLmlzRmlyZWZveCAmJiAodGhpcy50Lmlu
ZGV4T2YoImFrb2xyYWRpby1tYWMiKSA9PSAtMSkgJiYgKFdNU1JlZ0V4LnRlc3QoYXNzZXQpIHx8
IFdNU1BMU1JlZ0V4LnRlc3QoYXNzZXQpIHx8IEV4dFdNUmVnRXgudGVzdChhc3NldCkgfHwgUE1N
U0lEUmVnRXgudGVzdChhc3NldCkgfHwgKHRoaXMucGxheWVyID09ICJ3bSIpKSApIHsKICAgICAv
KiAKICAgICAgLy8gRGV0ZXJtaW5lIHdoaWNoIE1vemlsbGEgQWN0aXZlWCBjb250cm9sIHRvIHVz
ZS4gMTA0IGlzIHVzZWQgZm9yIEZGIHZlcnNpb25zIDEwNSsuCiAgICAgIGlmICghbW96X2hhc19h
eCkgewogICAgICAgIHZhciBmZnZlciA9ICh0aGlzLlVBLmlzRmlyZWZveDEwMykgPyAxMDMgOiAx
MDQ7CiAgICAgICAgcmV0dXJuIG5ldyBTdHJpbmcoICJodHRwOi8vIiArIHRoaXMuRExTZXJ2ZXIg
KyAiLyIgKyBGVUdVLkZ1Z3VWZXJzaW9uICsgIi9lcnJvcl9nZWNrb19ub19heC5odG1sP3ZlcnNp
b249IiArIEZVR1UuRnVndVZlcnNpb24gKyAiJnQ9IiArIHRoaXMudCArICImbG9jYWxlPSIgKyB0
aGlzLmxvY2FsZSArICImZmZ2ZXI9IiArIGZmdmVyICArICImaXN2aXN0YT0iICsgdGhpcy5pc1Zp
c3RhKTsKICAgICAgfQoJCQkqLwogICAgfQogICAgdmFyIHJ2ID0gImh0dHA6Ly8iICsgdGhpcy5E
TFNlcnZlciArICIvZnVndT90PSIgKyAgdGhpcy50ICsgIiZ0c2l6ZT0iICsgdGhpcy50c2l6ZTsK
CgkJaWYgKHRoaXMuVUEuaXNNYWMpIHJ2ICs9ICImbWFjPTEiOwoJCWlmICh0aGlzLlVBLmlzQU9M
KSBydiArPSAiJmFvbD0xIjsKCQlpZiAodGhpcy5VQS5pc0FPTEV4cGxvcmVyKSBydiArPSAiJmFv
bGV4cD0xIjsKCgoJCS8vIFRlc3QgYXNzZXQgdHlwZS4KICAgIGlmIChGdWd1QVNYUmVnRXgudGVz
dChhc3NldCkpIHsKICAgICAgcnYgKz0gIiZ3bXNpZD0iICsgZXNjYXBlICgiaHR0cDovLyIpICsg
ZXNjYXBlICh0aGlzLkRMU2VydmVyKSArIGVzY2FwZSAoIi9mdWd1YXN4L290Zi5hc3g/IikgKyBl
c2NhcGUoIGFzc2V0ICk7CiAgICAgIHRoaXMuc2hvd2FkcyA9ICIwIjsKICAgICAgdGhpcy5wbGF5
ZXIgPSAid20iOwogICAgfQogICAgZWxzZSBpZiAoKHRoaXMuYnJhbmQgPT0gInNpbmdpbmdmaXNo
IikgJiYgKHRoaXMucGxheWVyID09ICJyZWFsIikpIHsKICAgICAgcnYgKz0gIiZyZWFsdXJsPSIg
KyBlc2NhcGUoIGFzc2V0ICk7CiAgICAgIHRoaXMuc2hvd2FkcyA9ICIwIjsKICAgIH0KICAgIGVs
c2UgaWYgKCh0aGlzLmJyYW5kID09ICJzaW5naW5nZmlzaCIpICYmICh0aGlzLnBsYXllciA9PSAi
d20iKSkgewogICAgICBydiArPSAiJndtc2lkPSIgKyBlc2NhcGUoIGFzc2V0ICk7CiAgICAgIHRo
aXMuc2hvd2FkcyA9ICIwIjsKICAgIH0KICAgIGVsc2UgaWYgKCh0aGlzLmJyYW5kID09ICJzaW5n
aW5nZmlzaCIpICYmICh0aGlzLnBsYXllciA9PSAicXQiKSkgewogICAgICBydiArPSAiJnF0dXJs
PSIgKyBlc2NhcGUoIGFzc2V0ICk7CiAgICAgIHRoaXMuc2hvd2FkcyA9ICIwIjsKICAgIH0KICAg
IGVsc2UgaWYgKCh0aGlzLmJyYW5kID09ICJzaW5naW5nZmlzaCIpICYmICh0aGlzLnBsYXllciA9
PSAiZmxzIikpIHsKICAgICAgcnYgKz0gIiZmbHN1cmw9IiArIGVzY2FwZSggYXNzZXQgKTsKICAg
ICAgdGhpcy5zaG93YWRzID0gIjAiOwogICAgfQogICAgZWxzZSBpZiAoKHRoaXMuYnJhbmQgPT0g
InNpbmdpbmdmaXNoIikgJiYgKHRoaXMucGxheWVyID09ICJ1bmFnaSIpKSB7CiAgICAgIHJ2ICs9
ICImbnN2dXJsPSIgKyBlc2NhcGUoIGFzc2V0ICk7CiAgICAgIHRoaXMuc2hvd2FkcyA9ICIwIjsK
ICAgIH0KICAgIGVsc2UgaWYgKCh0aGlzLmJyYW5kID09ICJzaW5naW5nZmlzaCIpICYmICh0aGlz
LnBsYXllciA9PSAiIikpIHsKICAgICAgdGhpcy5zaG93YWRzID0gIjAiOwogICAgICBpZiAoICF0
aGlzLlVBLmlzTWFjICkgewogICAgICAgIHJldHVybiBuZXcgU3RyaW5nKCAiaHR0cDovLyIgKyB0
aGlzLkRMU2VydmVyICsgIi8iICsgRlVHVS5GdWd1VmVyc2lvbiArICIvZXJyb3JfcXR3aW4uaHRt
bD92ZXJzaW9uPSIgKyBGVUdVLkZ1Z3VWZXJzaW9uICsgIiZ0PSIgKyB0aGlzLnQgKyAiJmxvY2Fs
ZT0iICsgdGhpcy5sb2NhbGUpOyAKICAgICAgfSBlbHNlIHsKICAgICAgICByZXR1cm4gbmV3IFN0
cmluZyggImh0dHA6Ly8iICsgdGhpcy5ETFNlcnZlciArICIvIiArIEZVR1UuRnVndVZlcnNpb24g
KyAiL2Vycm9yX21hYy5odG1sP3ZlcnNpb249IiArIEZVR1UuRnVndVZlcnNpb24gKyAiJnQ9IiAr
IHRoaXMudCArICImbG9jYWxlPSIgKyB0aGlzLmxvY2FsZSk7IAogICAgICB9CiAgICB9CgkJZWxz
ZSBpZiAoIFJlYWxSZWdFeC50ZXN0KCBhc3NldCApICkgewoJCQl0aGlzLnBsYXllciA9ICJyZWFs
IjsKCQkJcnYgKz0gIiZyZWFsdXJsPSIgKyBlc2NhcGUoIGFzc2V0ICk7CgkJfQoJCWVsc2UgaWYg
KCBRVFJlZ0V4LnRlc3QoIGFzc2V0ICkgKXsKCQkJdGhpcy5zaG93YWRzID0gIjAiOwogICAgICB0
aGlzLnBsYXllciA9ICJxdCI7CgkJCXJ2ICs9ICImcXR1cmw9IiArIGVzY2FwZSggYXNzZXQgKTsK
CQkJaWYgKHRoaXMuVUEuaXNGaXJlZm94KSB7CiAgICAgICAgcnYgKz0gIiZmaXJlZm94PW5vc2Ny
aXB0IjsKICAgICAgfQoJCX0KICAgIGVsc2UgaWYgKCBVTlNWUmVnRXgudGVzdCggYXNzZXQgKSAp
ewogICAgCXRoaXMucGxheWVyID0gInVuYWdpIjsKICAgICAgaWYgKG5vTlNWKSByZXR1cm4gbmV3
IFN0cmluZyAoICJodHRwOi8vIiArIHRoaXMuRExTZXJ2ZXIgKyAiLyIgKyBGVUdVLkZ1Z3VWZXJz
aW9uICsgIi9lcnJvcl9tYWMuaHRtbD92ZXJzaW9uPSIgKyBGVUdVLkZ1Z3VWZXJzaW9uICsgIiZ0
PSIgKyB0aGlzLnQgKyAiJmxvY2FsZT0iICsgdGhpcy5sb2NhbGUpOyAKICAgICAgcnYgKz0gIiZu
c3Z1cmw9IiArIGVzY2FwZSggYXNzZXQgKTsKICAgIH0KCQllbHNlIGlmICggTlNWUExTUmVnRXgu
dGVzdCggYXNzZXQgKSApewogICAgICB0aGlzLnBsYXllciA9ICJ1bmFnaSI7CiAgICAgIHRoaXMu
cGxheWxpc3QgPSB0cnVlOwogICAgICBydiArPSAiJm5zdnBscz0iICsgZXNjYXBlKCBhc3NldCAp
OwogICAgfQogICAgZWxzZSBpZiAoIFJlYWxQTFNSZWdFeC50ZXN0KCBhc3NldCApICl7CgkJCXRo
aXMucGxheWVyID0gInJlYWwiOwogICAgICB0aGlzLnBsYXlsaXN0ID0gdHJ1ZTsKICAgICAgcnYg
Kz0gIiZyZWFscGxzPSIgKyBlc2NhcGUoIGFzc2V0ICk7CiAgICB9CiAgICBlbHNlIGlmICggUVRQ
TFNSZWdFeC50ZXN0KCBhc3NldCApICl7CiAgICAJdGhpcy5zaG93YWRzID0gIjAiOwogICAgICB0
aGlzLnBsYXllciA9ICJxdCI7CiAgICAgIHRoaXMucGxheWxpc3QgPSB0cnVlOwogICAgICBydiAr
PSAiJnF0cGxzPSIgKyBlc2NhcGUoIGFzc2V0ICk7CgkJCWlmICh0aGlzLlVBLmlzRmlyZWZveCkg
ewogICAgICAgIHJ2ICs9ICImZmlyZWZveD1ub3NjcmlwdCI7CiAgICAgIH0KICAgIH0KICAgIGVs
c2UgaWYgKCBGTFNQTFNSZWdFeC50ZXN0KCBhc3NldCApICl7CiAgICAgIGlmICh0aGlzLnNob3dh
ZHMgPT0gInVuZGVmaW5lZCIpIHRoaXMuc2hvd2FkcyA9ICIxIjsKICAgICAgdGhpcy5wbGF5ZXIg
PSAiZmxzIjsKICAgICAgdGhpcy5wbGF5bGlzdCA9IHRydWU7CiAgICAgIHJ2ICs9ICImZmxzcGxz
PSIgKyBlc2NhcGUoIGFzc2V0ICk7CiAgICB9CiAgICBlbHNlIGlmICggV01TUExTUmVnRXgudGVz
dCggYXNzZXQgKSApewogICAgICBpZiAodGhpcy5VQS5pc01hYyAmJiBhc3NldC5pbmRleE9mKCIu
d21zcGxzIikgPT0gLTEpICB7CiAgICAgICAgaWYgKCFQTEFZTElTVGFkcFJlZ0V4LnRlc3QoIGFz
c2V0ICkpIHRoaXMuc2hvd2FkcyA9ICIwIjsKICAgICAgICB0aGlzLnBsYXllciA9ICJxdCI7CiAg
ICAgICAgdGhpcy5wbGF5bGlzdCA9IHRydWU7CiAgICAgICAgcnYgKz0gIiZxdHBscz0iICsgZXNj
YXBlKGFzc2V0LnJlcGxhY2UoL3R5cGU9d212LywgInR5cGU9cXQiKSk7CiAgCQkJaWYgKHRoaXMu
VUEuaXNGaXJlZm94KSB7CiAgICAgICAgICBydiArPSAiJmZpcmVmb3g9bm9zY3JpcHQiOwogICAg
ICAgIH0KICAgICAgfQoJCQllbHNlIHsKICAgIAkJdGhpcy5wbGF5ZXIgPSAid20iOwogICAgICAJ
dGhpcy5wbGF5bGlzdCA9IHRydWU7CgkJCQlydiArPSAiJndtc3Bscz0iICsgZXNjYXBlKCBhc3Nl
dCApOwoJCQl9CiAgICB9CiAgICBlbHNlIGlmICggUE1NU0lEUmVnRXgudGVzdCggYXNzZXQgKSAp
ewogICAgICBydiArPSAiJnR6b25lPSIgKyB0ejsKICAgICAgaWYgKEFTWF9CWV9QTU1TSUQgPT0g
dHJ1ZSkgewogICAgICAgIGFzc2V0ID0gImFzeGlkPSIgKyBhc3NldC5zdWJzdHJpbmcoYXNzZXQu
aW5kZXhPZigiOiIpKzEsIGFzc2V0Lmxlbmd0aCk7CiAgICAgICAgcnYgKz0gIiZ3bXNpZD0iICsg
ZXNjYXBlICgiaHR0cDovLyIpICsgZXNjYXBlICh0aGlzLkRMU2VydmVyKSArIGVzY2FwZSAoIi9m
dWd1YXN4L290Zi5hc3g/IikgKyBlc2NhcGUoIGFzc2V0ICk7CiAgICAgICAgdGhpcy5zaG93YWRz
ID0gIjAiOwogICAgICAgIHRoaXMucGxheWVyID0gIndtIjsKICAgICAgfSBlbHNlIHsKICAgICAg
ICB0aGlzLnBsYXllciA9IFdNU1JlZ0V4LnRlc3QoIGFzc2V0ICkgPyAid20iIDogImZscyI7CiAg
ICAgICAgcnYgKz0gIiZwbW1zaWQ9IiArIGFzc2V0LnN1YnN0cmluZyhhc3NldC5pbmRleE9mKCI6
IikrMSwgYXNzZXQubGVuZ3RoKTsKICAgICAgfQogICAgICBpZiAodGhpcy5VQS5pc01hYyAmJiB0
aGlzLlVBLmlzRmlyZWZveCkgewogICAgICAgIHJ2ICs9ICImZmlyZWZveD1ub3NjcmlwdCI7CiAg
ICAgIH0KICAgIH0KICAgIGVsc2UgaWYgKCBGTFNSZWdFeC50ZXN0KCBhc3NldCApICl7CiAgICAg
IHRoaXMucGxheWVyID0gImZscyI7CiAgICAgICAgcnYgKz0gIiZmbHNpZD0iICsgZXNjYXBlKCBh
c3NldCApOwogICAgfQogICAgZWxzZSBpZiAoIEV4dFdNUmVnRXgudGVzdCggYXNzZXQgKSApewog
ICAgCXRoaXMucGxheWVyID0gIndtIjsKICAgICAgcnYgKz0gIiZ3bXNpZD0iICsgZXNjYXBlKCBh
c3NldCApOwogICAgfQogICAgZWxzZSBpZiAoIFdNU1JlZ0V4LnRlc3QoIGFzc2V0ICkgKXsKICAg
IAl0aGlzLnBsYXllciA9ICJ3bSI7CiAgICAgICAgcnYgKz0gIiZ3bXNpZD0iICsgZXNjYXBlKCBh
c3NldCApOwogICAgfQogICAgZWxzZSBpZiAoIEV4dFFUUmVnRXgudGVzdCggYXNzZXQgKSApewog
ICAgICAgIHRoaXMuc2hvd2FkcyA9ICIwIjsKICAgICAgICB0aGlzLnBsYXllciA9ICJxdCI7CiAg
ICAgIHJ2ICs9ICImcXR1cmw9IiArIGVzY2FwZSggYXNzZXQgKTsKICAgIH0KICAgIGVsc2UgaWYg
KE1wM1JlZ0V4LnRlc3QoIGFzc2V0ICkgKSB7CiAgICAJaWYgKHRoaXMuVUEuaXNNYWMpICB7CiAg
ICAgIAl0aGlzLnBsYXllciA9ICJxdCI7CiAgICAgICAgcnYgKz0gIiZxdHVybD0iICsgZXNjYXBl
KGFzc2V0KTsKICAgICAgfQogICAgICBlbHNlICB7CiAgICAgIAl0aGlzLnBsYXllciA9ICJ3bSI7
CiAgICAgICAgcnYgKz0gIiZ3bXNpZD0iICsgZXNjYXBlKGFzc2V0KTsKICAgICAgfQogICAgfQog
ICAgZWxzZSBpZiAoUExBWUxJU1RhZHBSZWdFeC50ZXN0KCBhc3NldCApICkgewogICAgICB0aGlz
LnBsYXllciA9ICJ3bSI7CiAgICAgIHRoaXMucGxheWxpc3QgPSB0cnVlOwogICAgICBydiArPSAi
Jndtc3Bscz0iICsgZXNjYXBlKCBhc3NldCApOwogICAgfQogICAgZWxzZSBpZiAoIFNIT1VUY2Fz
dFJlZ0V4LnRlc3QoIGFzc2V0ICkgKXsKICAgIAlpZiAobm9OU1YpIHJldHVybiBuZXcgU3RyaW5n
ICggImh0dHA6Ly8iICsgdGhpcy5ETFNlcnZlciArICIvIiArIEZVR1UuRnVndVZlcnNpb24gKyAi
L2Vycm9yX21hYy5odG1sP3ZlcnNpb249IiArIEZVR1UuRnVndVZlcnNpb24gKyAiJnQ9IiArIHRo
aXMudCArICImbG9jYWxlPSIgKyB0aGlzLmxvY2FsZSk7CgkgICAgLy8gZGlzYWJsZSBid2hpbnQg
cHJvbXB0IGZvciB3ZWIgdXNlcnMKICAgICAgdGhpcy5wbGF5ZXIgPSAidW5hZ2kiOwogICAgICBy
diArPSAiJm5zdnVybD0iICsgZXNjYXBlKCBhc3NldCApICsgIiZGVUdVX1NQRUVEPTk5OTk5OSI7
CiAgICB9CiAgICBlbHNlIGlmICggVVZPWFJlZ0V4LnRlc3QoIGFzc2V0ICkgKXsKICAgCWlmIChu
b05TVikgcmV0dXJuIG5ldyBTdHJpbmcgKCAiaHR0cDovLyIgKyB0aGlzLkRMU2VydmVyICsgIi8i
ICsgRlVHVS5GdWd1VmVyc2lvbiArICIvZXJyb3JfbWFjLmh0bWw/dmVyc2lvbj0iICsgRlVHVS5G
dWd1VmVyc2lvbiArICImdD0iICsgdGhpcy50ICsgIiZsb2NhbGU9IiArIHRoaXMubG9jYWxlKTsK
CSAgICAvLyBkaXNhYmxlIGJ3aGludCBwcm9tcHQgZm9yIHdlYiB1c2VycwogICAgICB0aGlzLnBs
YXllciA9ICJ1bmFnaSI7CiAgICAgIHJ2ICs9ICImbnN2dXJsPSIgKyBlc2NhcGUoIGFzc2V0ICkg
KyAiJkZVR1VfU1BFRUQ9OTk5OTk5IjsKICAgIH0KICAgIGVsc2UgewogICAgCS8vIG9uIGRlbWFu
ZCBOU1YKICAgICAgdGhpcy5wbGF5ZXIgPSAidW5hZ2kiOwogICAgICBydiArPSAiJm5zdmlkPSIg
KyBlc2NhcGUoYXNzZXQpOwogICAgfQogICAgaWYgKCBzY3JvbGxfYXJyYXkgKSB7CiAgICAgIGlm
IChzY3JvbGxfYXJyYXkubGVuZ3RoID49IDEgKSBydiArPSAiJnMxPSIgKyAoZXNjYXBlKHNjcm9s
bF9hcnJheVswXSkpOwogICAgICBpZiAoc2Nyb2xsX2FycmF5Lmxlbmd0aCA+PSAyICkgcnYgKz0g
IiZzMj0iICsgKGVzY2FwZShzY3JvbGxfYXJyYXlbMV0pKTsKICAgICAgaWYgKHNjcm9sbF9hcnJh
eS5sZW5ndGggPj0gMyApIHJ2ICs9ICImczM9IiArIChlc2NhcGUoc2Nyb2xsX2FycmF5WzJdKSk7
CiAgICB9CiAgICBpZiAoIHRoaXMuaXNMaXZlICkgcnYgKz0gIiZsaXZlPTEiOwogICAgZWxzZSBy
diArPSAiJmxpdmU9MCI7CgogICAgIGlmICh0aGlzLmFuZ2xlICE9IG51bGwgKSBydiArPSAiJmFu
Z2xlPSIgKyB0aGlzLmFuZ2xlOwoKCSAJLyogYXBvcyBjYW4gY2F1c2UgcHJvYmxlbXMgd2l0aCBG
aXJlZm94IHNvIHN0YXJ0IG1pZ3JhdGluZyB0byBzdGFydHBvcyAqLwogICAgIGlmICh0aGlzLmFw
b3MgIT0gbnVsbCkgIAkJCXJ2ICs9ICImc3RhcnRwb3M9IiArIHRoaXMuYXBvczsKICAgICBpZiAo
dGhpcy5zdGFydHBvcyAhPSBudWxsKSAJcnYgKz0gIiZzdGFydHBvcz0iICsgdGhpcy5zdGFydHBv
czsKICAgICBpZiAodGhpcy5scG9zICE9IG51bGwgKSAJCQlydiArPSAiJmxwb3M9IiArIHRoaXMu
bHBvczsKICAgICBpZiAodGhpcy5wcG9zICE9IG51bGwgKSAJCQlydiArPSAiJnBwb3M9IiArIHRo
aXMucHBvczsKICAgICBpZiAodGhpcy5wb2Zmc2V0ICE9IG51bGwgKSAJcnYgKz0gIiZwb2Zmc2V0
PSIgKyB0aGlzLnBvZmZzZXQ7CiAgICAgaWYgKHRoaXMuZXZlbnRpZCAhPSBudWxsICkgCXJ2ICs9
ICImZXZlbnQ9IiArIHRoaXMuZXZlbnRpZDsKICAgICBpZiAodGhpcy5tYXhicHMgIT0gbnVsbCAp
IAkJcnYgKz0gIiZtYXhicHM9IiArIHRoaXMubWF4YnBzOwogICAgIGlmICh0aGlzLnNraW4gIT0g
bnVsbCApIAkJCXJ2ICs9ICImc2tpbj0iICsgdGhpcy5za2luOwogICAgIGlmICh0aGlzLndpZHRo
ICE9IG51bGwgKSAJCXJ2ICs9ICImd2lkdGg9IiArIHRoaXMud2lkdGg7CiAgICAgaWYgKHRoaXMu
aGVpZ2h0ICE9IG51bGwgKSAJCXJ2ICs9ICImaGVpZ2h0PSIgKyB0aGlzLmhlaWdodDsKICAgICBp
ZiAodGhpcy5hc3BlY3QgIT0gbnVsbCApIAkJcnYgKz0gIiZhc3BlY3Q9IiArIHRoaXMuYXNwZWN0
OwogICAgIGlmICh0aGlzLnZpZGVvICE9IG51bGwgKSAJCXJ2ICs9ICImdmlkZW89IiArIHRoaXMu
dmlkZW87CiAgICAgaWYgKHRoaXMuc2hvd3VpICE9IG51bGwgKSAJCXJ2ICs9ICImc2hvd3VpPSIg
KyB0aGlzLnNob3d1aTsKICAgICBpZiAodGhpcy5wcmVmcyAhPSBudWxsICkgCQlydiArPSAiJnBy
ZWZzPSIgKyB0aGlzLnByZWZzOwoJCSBpZiAodGhpcy5zaG93Q0MgPT0gIjEiICkgICAgIHJ2ICs9
ICImc2hvd0NDPSIgKyB0aGlzLnNob3dDQzsKICAgICBpZiAodGhpcy5zdHJlYW1lciAhPSBudWxs
ICkgCXJ2ICs9ICImc3RyZWFtZXI9IiArIHRoaXMuc3RyZWFtZXI7CiAgICAgaWYgKCB0aGlzLnBp
ZCApIAkJCQkJCQlydiArPSAiJnBpZD0iICsgZXNjYXBlKHRoaXMucGlkKTsKICAgICBpZiAoIHRo
aXMuYnJhbmQgKSAJCQkJCQlydiArPSAiJmJyYW5kPSIgKyBlc2NhcGUodGhpcy5icmFuZCk7CiAg
ICAgaWYgKCB0aGlzLnBsYXllciApIAkJCQkJcnYgKz0gIiZwbGF5ZXI9IiArIGVzY2FwZSh0aGlz
LnBsYXllcik7CiAgICAgaWYgKCB0aGlzLnBsYXlsaXN0KSAJCQkJCXJ2ICs9ICImcGxheWxpc3Q9
MSI7CiAgICAgaWYgKCB0aGlzLmxlbmd0aCApCQkJCQkgIHJ2ICs9ICImbGVuPSIgKyBlc2NhcGUo
dGhpcy5sZW5ndGgpOwogICAgIGlmICggdGhpcy5jaGFubmVsICkJCQkJCXJ2ICs9ICImY2hhbm5l
bD0iICsgZXNjYXBlKHRoaXMuY2hhbm5lbCk7CiAgICAgaWYgKCB0aGlzLnByZXZpZCApCQkJCQkg
IHJ2ICs9ICImcHJldmlkPSIgKyBlc2NhcGUodGhpcy5wcmV2aWQpOwogICAgIGlmICggdGhpcy5j
b3VudHJ5ICkgCQkJCQlydiArPSAiJmNvdW50cnk9IiArIGVzY2FwZSh0aGlzLmNvdW50cnkpOwog
ICAgIGlmICggdGhpcy5jb21wYW55ICkJCQkJICBydiArPSAiJmNvbXBhbnk9IiArIGVzY2FwZSh0
aGlzLmNvbXBhbnkpOwogICAgIGlmICggdGhpcy52ZXJzaW9uICkJCQkJICBydiArPSAiJnZlcnNp
b249IiArIGVzY2FwZSh0aGlzLnZlcnNpb24pOwkKICAgICBpZiAoIHRoaXMuYWRzZXJ2ZXIgKQkJ
CQkgIHJ2ICs9ICImYWRzZXJ2ZXI9IiArIGVzY2FwZSh0aGlzLmFkc2VydmVyKTsKICAgICBpZiAo
IHRoaXMuYXNzZXRJbmZvLmZyYW5jaGlzZSApIAogICAgICAgcnYgKz0gIiZmcmFuY2hpc2U9IiAr
IGVzY2FwZSggdGhpcy5hc3NldEluZm8uZnJhbmNoaXNlICk7CiAgICAgZWxzZSBpZiAoIHRoaXMu
ZnJhbmNoaXNlICkKICAgICAgIHJ2ICs9ICImZnJhbmNoaXNlPSIgKyBlc2NhcGUoIHRoaXMuZnJh
bmNoaXNlICk7CiAgICAgaWYgKHRoaXMuc3BlZWQgKSAJCQkJCQlydiArPSAiJkZVR1VfU1BFRUQ9
IiArIGVzY2FwZSggdGhpcy5zcGVlZCAqIDEwMDAgKTsKICAgICBpZiAoIHRoaXMuc2hvd2FkcyAh
PSBudWxsKSAJcnYgKz0gIiZzaG93YWRzPSIgKyBlc2NhcGUodGhpcy5zaG93YWRzKTsJCiAgICAg
aWYgKCB0aGlzLmxvY2FsZSAhPSBudWxsKSAJCXJ2ICs9ICImbG9jYWxlPSIgKyBlc2NhcGUodGhp
cy5sb2NhbGUpOwkKICAgICBpZiAoIHRoaXMuYnBzc2VsZWN0ICE9IG51bGwpIHJ2ICs9ICImYnBz
c2VsZWN0PSIgKyB0aGlzLmJwc3NlbGVjdDsJCiAgICAgaWYgKCB0aGlzLmF1dG9wbGF5ICE9IG51
bGwpIAlydiArPSAiJmF1dG9wbGF5PSIgKyB0aGlzLmF1dG9wbGF5OwkKICAgICBpZiAoIHRoaXMu
c3RhdGljYWQgIT0gbnVsbCkgCXJ2ICs9ICImc3RhdGljYWQ9IiArIGVzY2FwZSh0aGlzLnN0YXRp
Y2FkKTsJCiAgICAgaWYgKCB0aGlzLmxvZ291cmwgIT0gbnVsbCkgCXJ2ICs9ICImbG9nb3VybD0i
ICsgZXNjYXBlKHRoaXMubG9nb3VybCk7CQogICAgIGlmICh0aGlzLkFuZ2xlVHlwZSAhPSBudWxs
KSAJcnYgKz0gIiZtdWx0aWFuZ2xldHlwZT0iICsgZXNjYXBlKHRoaXMuQW5nbGVUeXBlLnRvTG93
ZXJDYXNlKCkpOwogICAgIGVsc2UgaWYodGhpcy5NdWx0aUFuZ2xlVHlwZSAhPSBudWxsKSBydiAr
PSAiJm11bHRpYW5nbGV0eXBlPSIgKyBlc2NhcGUodGhpcy5NdWx0aUFuZ2xlVHlwZS50b0xvd2Vy
Q2FzZSgpKTsKICAgICBpZiAoKHRoaXMud3d3dHJhY2sgJiYgdGhpcy53d3d0cmFjayAhPSAiMCIp
IHx8ICh0aGlzLnd3d3RyYWNrID09IG51bGwgJiYgdGhpcy5waWQgIT0gIkRMIiAmJiBhc3NldCAh
PSAiIikpIHJ2ICs9ICImd3d3dHJhY2s9MSI7CgkJIGlmICh0aGlzLm10cmFjayAhPSBudWxsIHx8
IHRoaXMucGlkID09ICJETCIpIHJ2ICs9ICImbXRyYWNrPTEiOwoJCSBpZiAodGhpcy5zY3JvbGxm
bXQpIAkJCQkJcnYgKz0gIiZzY3JvbGxmbXQ9IiArIGVzY2FwZSh0aGlzLnNjcm9sbGZtdCk7CgkJ
IGlmICh0aGlzLmNoYW5uZWwpIAkJCQkJCXJ2ICs9ICImY2hhbm5lbD0iICsgZXNjYXBlKHRoaXMu
Y2hhbm5lbCk7CiAgICAgaWYgKHRoaXMuZXZlbnRUaW1lcnMgIT0gbnVsbCkgewoJCSAgIGlmICh0
eXBlb2YodGhpcy5ldmVudFRpbWVycykgPT0gInN0cmluZyIgJiYgdGhpcy5ldmVudFRpbWVycy5s
ZW5ndGggPiAwICYmIHRoaXMuZXZlbnRUaW1lcnMudG9Mb3dlckNhc2UoKS5pbmRleE9mKCJodHRw
Oi8vIikgPT0gMCkKCQkJCQlydiArPSAiJmV2ZW50VGltZXJzPSIgKyBlc2NhcGUodGhpcy5ldmVu
dFRpbWVycyk7CQoJCSB9CiAgICAgaWYgKHRoaXMua2V5aWQpIAkJCQkJCQkJcnYgKz0gIiZrZXlJ
RD0iICsgdGhpcy5rZXlpZDsKICAgICBpZiAodGhpcy5rZXlzZWVkaWQpIAkJCQkJCXJ2ICs9ICIm
a2V5U2VlZElEPSIgKyB0aGlzLmtleXNlZWRpZDsKICAgICBpZiAodGhpcy5pc2RybSkgCQkJCQkJ
CQlydiArPSAiJmlzZHJtPTEiOwoJCSBpZiAodGhpcy5jdXJ0YWluKQkJCQkJCQlydiArPSAiJmN1
cnRhaW49MSI7CgkJIGlmICh0aGlzLmN1cnRhaW5FeHBhbmQpCQkJIAlydiArPSAiJmN1cnRhaW5F
eHBhbmQ9IiArIHRoaXMuY3VydGFpbkV4cGFuZDsKCgkJIC8vIERMIDIuMyBwYXJhbXMKICAgICBp
ZiAoIHRoaXMudXNlckluZm8uZ2VuZGVyICE9IG51bGwpIAlydiArPSAiJmdlbmRlcj0iICsgZXNj
YXBlKHRoaXMudXNlckluZm8uZ2VuZGVyKTsJCiAgICAgaWYgKCB0aGlzLnVzZXJJbmZvLmFnZSAh
PSBudWxsKSAJCQlydiArPSAiJmFnZT0iICsgZXNjYXBlKHRoaXMudXNlckluZm8uYWdlKTsJCiAg
ICAgaWYgKCB0aGlzLnVzZXJJbmZvLmRheXBhcnQgIT0gbnVsbCkgCXJ2ICs9ICImZGF5cGFydD0i
ICsgZXNjYXBlKHRoaXMudXNlckluZm8uZGF5cGFydCk7CQogICAgIGlmICggdGhpcy51c2VySW5m
by5kbWEgIT0gbnVsbCkgCQkJcnYgKz0gIiZkbWE9IiArIGVzY2FwZSh0aGlzLnVzZXJJbmZvLmRt
YSk7CQogICAgIGlmICggdGhpcy5hc3NldEluZm8uZ2VucmUgIT0gbnVsbCkgCXJ2ICs9ICImZ2Vu
cmU9IiArIGVzY2FwZSh0aGlzLmFzc2V0SW5mby5nZW5yZSk7CQogICAgIGlmICggdGhpcy5jcGlk
ICE9IG51bGwpIAkJCQkJCQlydiArPSAiJmNwaWQ9IiArIGVzY2FwZSh0aGlzLmNwaWQpOwkKCgkJ
IGlmICggdGhpcy53aW5kb3dlZEZ1bGxzY3JlZW4gIT0gbnVsbCApIHJ2ICs9ICImd2luZG93ZWRG
dWxsc2NyZWVuPSIgKyAgZXNjYXBlKHRoaXMud2luZG93ZWRGdWxsc2NyZWVuKTsKIAkJIGlmICgg
dGhpcy5mbGFzaERlYnVnICE9IG51bGwgKSBydiArPSAiJmZsYXNoRGVidWc9IiArICBlc2NhcGUo
dGhpcy5mbGFzaERlYnVnKTsKICAgIAoJCSBpZiAoIHRoaXMuYXNzZXRJbmZvLnN1cmZhY2VQb2lu
dCAhPSBudWxsKSAJcnYgKz0gIiZzdXJmYWNlUG9pbnQ9IiArIGVzY2FwZSh0aGlzLmFzc2V0SW5m
by5zdXJmYWNlUG9pbnQpOwkKICAgICBpZiAoIHRoaXMuYXNzZXRJbmZvLnBsYXlsaXN0R3JvdXAg
IT0gbnVsbCkgcnYgKz0gIiZwbGF5bGlzdEdyb3VwPSIgKyBlc2NhcGUodGhpcy5hc3NldEluZm8u
cGxheWxpc3RHcm91cCk7CQogICAgIAoJCSBpZiAoIHRoaXMuRVVMQSAhPSBudWxsKSB7CiAgICAg
ICBpZiAoIHR5cGVvZih0aGlzLkVVTEEpID09ICJvYmplY3QiIHx8IHR5cGVvZih0aGlzLkVVTEEp
ID09ICJhcnJheSIgKSB7CiAgICAgICAgIC8vIGxpbWl0IGV1bGFzIHRvIDMgZm9yIHRoZSBzYWtl
IG9mIHRoZSBmdWd1IHVybCdzIGxlbmd0aCA6KQogICAgICAgICBmb3IodmFyIGV1bGFfY291bnQg
PSAwOyBldWxhX2NvdW50IDwgMzsgZXVsYV9jb3VudCsrKSB7CiAgICAgICAgICAgaWYodGhpcy5F
VUxBW2V1bGFfY291bnRdKXsKICAgICAgICAgICAgIHJ2ICs9ICImZXVsYSIgKyBldWxhX2NvdW50
ICsgIj0iICsgKHRoaXMuRVVMQVtldWxhX2NvdW50XSk7CiAgICAgICAgICAgfQogICAgICAgICB9
CiAgICAgICB9ZWxzZSBpZiggdHlwZW9mKHRoaXMuRVVMQSkgPT0gInN0cmluZyIgKSB7CiAgICAg
ICAgIHJ2ICs9ICImZXVsYTA9IiArIGVzY2FwZSh0aGlzLkVVTEEpOwogICAgICAgfQogICAgIH0K
CiAgICAgcnYgKz0gKCB0aGlzLmVuYWJsZVN5bmMgKSA/ICImc3luYz0xIiA6ICImc3luYz0wIjsK
CiAgICAgcnYgKz0gKHRoaXMuc2lsZW5jZSkgPyAiJnNpbGVuY2U9IiArIGVzY2FwZSAodGhpcy5z
aWxlbmNlKSA6ICIiOwoKICAgICBpZiAoIHRoaXMudGl0bGUgIT0gbnVsbCkgcnYgKz0gIiZ0aXRs
ZT0iICsgZXNjYXBlKHRoaXMudGl0bGUpOwkKCiAgICAgLy8gS09MIHZhcnMuCiAgICAgaWYgKHRo
aXMudHNpemUuaW5kZXhPZigiYWtvbHJhZGlvIikgIT0gLTEpIHJ2ICs9IHRoaXMuS09MUGFyYW1z
OwogICAgIC8qIHJ2IGNhbm5vdCBleGNlZWQgMTAyNCBjaGFyYWN0ZXJzLiAgY2FyZWZ1bGx5IGFk
ZCB0aGUgcmVzdGFydCBVUkwgKi8gICAgIAogICAgIHZhciBydXJsID0gdGhpcy5yZXN0YXJ0dXJs
ID8gdGhpcy5yZXN0YXJ0dXJsIDogZG9jdW1lbnQubG9jYXRpb24uaHJlZjsgCiAgICAgdmFyIHBh
cmFtID0gIiZyZXN0YXJ0VXJsPSI7CgogICAgIGlmICgocnYubGVuZ3RoICsgZXNjYXBlKHJ1cmwp
Lmxlbmd0aCArIHBhcmFtLmxlbmd0aCkgPiAxMDI0KSB7CiAgICAgICAgLy8gdHJ5IHBydW5pbmcg
dGhlIHJlZmVyZXIKICAgICAgICBydXJsID0gcnVybC5zdWJzdHJpbmcoMCwgcnVybC5pbmRleE9m
KCImcmVmZXJlcj0iKSk7CiAgICAgfQogICAgIGlmICgocnYubGVuZ3RoICsgZXNjYXBlKHJ1cmwp
Lmxlbmd0aCArIHBhcmFtLmxlbmd0aCkgPiAxMDI0KSB7CiAgICAgICAgLy8gaWYgYWxsIGVsc2Ug
ZmFpbHMgcmVtb3ZlIHRoZSByZXN0YXJ0VXJsCiAgICAgICAgcnVybCA9ICIiOwogICAgIH0KICAg
ICBydiArPSBwYXJhbSArIGVzY2FwZShydXJsKTsKICAgICByZXR1cm4gcnY7Cn0KCmZ1bmN0aW9u
IF9GVUdVX0luaXQoICkgewogIGlmICggdGhpcy5pbml0aWFsaXplZCApIHsKICAgIHJldHVybjsg
Ly8gYmVlbiB0aGVyZSwgZG9uZSB0aGF0LgogIH0KICBlbHNlIHsKICAgIHRoaXMuaW5pdGlhbGl6
ZWQgPSB0cnVlOwogIH0KCiAgdmFyIGlmcmFtZV9odG1sID0gICI8aWZyYW1lIGlkPSdfRlVHVV9J
RlJBTUVfJyBuYW1lPSdfRlVHVV9JRlJBTUVfJyAiOwogIAogIHN3aXRjaCAoIHRoaXMudCApIHsg
CiAgCWNhc2UgInVuaSI6CiAgICAJaWYoKHRoaXMuQW5nbGVUeXBlICYmIHRoaXMuQW5nbGVUeXBl
LnRvTG93ZXJDYXNlKCkgPT0gImRyb3Bkb3duIikgfHwgKHRoaXMuTXVsdGlBbmdsZVR5cGUgJiYg
dGhpcy5NdWx0aUFuZ2xlVHlwZS50b0xvd2VyQ2FzZSgpID09ICJkcm9wZG93biIpKXsKICAgICAg
CXZhciBuZXdIZWlnaHQgPSB0aGlzLmhlaWdodCArIDQwOwogICAgICAgIGlmcmFtZV9odG1sICs9
ICIgd2lkdGg9IiArIHRoaXMud2lkdGggKyAiIGhlaWdodD0iICsgbmV3SGVpZ2h0OwogICAgICB9
IGVsc2UgewoJCQlpZiAodGhpcy5oaWRlY29udHJvbHMgJiYgdGhpcy5oZWlnaHQgPj0gMzE3KSAK
ICAgICAgCWlmcmFtZV9odG1sICs9ICIgd2lkdGg9IiArIHRoaXMud2lkdGggKyAiIGhlaWdodD0i
ICsgKHRoaXMuaGVpZ2h0LTc3KTsKCQkJZWxzZQogICAgICAJaWZyYW1lX2h0bWwgKz0gIiB3aWR0
aD0iICsgdGhpcy53aWR0aCArICIgaGVpZ2h0PSIgKyB0aGlzLmhlaWdodDsKICAgICAgfQogICAg
ICBicmVhazsKICAJCWNhc2UgIndpZGVzY3JlZW4iOgoJCQkJaWZyYW1lX2h0bWwgKz0gIiB3aWR0
aD0zNjggaGVpZ2h0PTI4NCIgOwoJCQkJdGhpcy53aWR0aCA9IDM2ODsgIHRoaXMuaGVpZ2h0ID0g
Mjg0OwoJCQkJYnJlYWs7CiAgCQljYXNlICJ3aWRlc2NyZWVuYmlnIjoKCQkJCWlmcmFtZV9odG1s
ICs9ICIgd2lkdGg9NDQ4IGhlaWdodD0zMzMiIDsKCQkJCXRoaXMud2lkdGggPSA0NDg7ICB0aGlz
LmhlaWdodCA9IDMzMzsKCQkJCWJyZWFrOwogIAkJY2FzZSAib2xkbGFyZ2UiOgoJCQkJaWZyYW1l
X2h0bWwgKz0gIiB3aWR0aD0zODQgaGVpZ2h0PTM1NSAiIDsKCQkJCXRoaXMud2lkdGggPSAzODQ7
ICB0aGlzLmhlaWdodCA9IDM1NTsKCQkJCWJyZWFrOwogIAkJY2FzZSAib2xkbWVkaXVtIjoKCQkJ
CWlmcmFtZV9odG1sICs9ICIgd2lkdGg9MzIwIGhlaWdodD0zMDAgIiA7CgkJCQl0aGlzLndpZHRo
ID0gMzIwOyAgdGhpcy5oZWlnaHQgPSAzMDA7CgkJCQlicmVhazsKICAJCWNhc2UgIm9sZHNtYWxs
IjoKCQkJCWlmcmFtZV9odG1sICs9ICIgd2lkdGg9MTc2IGhlaWdodD0xNjggIiA7CgkJCQl0aGlz
LndpZHRoID0gMTc2OyAgdGhpcy5oZWlnaHQgPSAxNjg7CgkJCQlicmVhazsKICAJCWNhc2UgImxh
cmdlIjoKICAgICAgICBpZigodGhpcy5BbmdsZVR5cGUgJiYgdGhpcy5BbmdsZVR5cGUudG9Mb3dl
ckNhc2UoKSA9PSAiZHJvcGRvd24iKSB8fCAodGhpcy5NdWx0aUFuZ2xlVHlwZSAmJiB0aGlzLk11
bHRpQW5nbGVUeXBlLnRvTG93ZXJDYXNlKCkgPT0gImRyb3Bkb3duIikpewogICAgICAgICAgICBp
ZnJhbWVfaHRtbCArPSAiIHdpZHRoPTMyMCBoZWlnaHQ9MzU3ICIgOwoJCQkJCQl0aGlzLndpZHRo
ID0gMzIwOyAgdGhpcy5oZWlnaHQgPSAzNTc7CiAgICAgICAgfWVsc2V7CiAgICAgICAgICAgIGlm
cmFtZV9odG1sICs9ICIgd2lkdGg9MzIwIGhlaWdodD0zMTcgIiA7CgkJCQkJCXRoaXMud2lkdGgg
PSAzMjA7ICB0aGlzLmhlaWdodCA9IDMxNzsKICAgICAgICB9CgkJCQlicmVhazsKICAJCWNhc2Ug
InN1cGVybGFyZ2UiOgoJCQkJaWZyYW1lX2h0bWwgKz0gIiB3aWR0aD02NDAgaGVpZ2h0PTU1NyAi
IDsKCQkJCXRoaXMud2lkdGggPSA2NDA7ICB0aGlzLmhlaWdodCA9IDU1NzsKCQkJCWJyZWFrOwog
IAkJY2FzZSAiYmlnIjoKCQkJCWlmcmFtZV9odG1sICs9ICIgd2lkdGg9NTEyIGhlaWdodD00NjEg
IiA7CgkJCQl0aGlzLndpZHRoID0gNTEyOyAgdGhpcy5oZWlnaHQgPSA0NjE7CgkJCQlicmVhazsK
ICAJCWNhc2UgInByZXZpZXciOgoJCQkJaWZyYW1lX2h0bWwgKz0gIiB3aWR0aD0xNjAgaGVpZ2h0
PTEyMCAiIDsKCQkJCXRoaXMud2lkdGggPSAxNjA7ICB0aGlzLmhlaWdodCA9IDEyMDsKCQkJCWJy
ZWFrOwogIAkJY2FzZSAibWVkaXVtIjoKCQkJCWlmcmFtZV9odG1sICs9ICIgd2lkdGg9MTc2IGhl
aWdodD0xODggIiA7CgkJCQl0aGlzLndpZHRoID0gMTc2OyAgdGhpcy5oZWlnaHQgPSAxODg7CgkJ
CQlicmVhazsKICAJCWNhc2UgInNtYWxsIjoKCQkJCWlmcmFtZV9odG1sICs9ICIgd2lkdGg9MTc2
IGhlaWdodD0xNTUgIiA7CgkJCQl0aGlzLndpZHRoID0gMTc2OyAgdGhpcy5oZWlnaHQgPSAxNTU7
CgkJCQlicmVhazsKICAJCWNhc2UgImFsYXJnZSI6CgkJCQlpZnJhbWVfaHRtbCArPSAiIHdpZHRo
PTMyMCBoZWlnaHQ9NzcgIiA7CgkJCQl0aGlzLndpZHRoID0gMzIwOyAgdGhpcy5oZWlnaHQgPSA3
NzsKCQkJCWJyZWFrOwogIAkJY2FzZSAiYW1lZGl1bSI6CgkJCQlpZnJhbWVfaHRtbCArPSAiIHdp
ZHRoPTE3NiBoZWlnaHQ9NTggIiA7CgkJCQl0aGlzLndpZHRoID0gMTc2OyAgdGhpcy5oZWlnaHQg
PSA1ODsKCQkJCWJyZWFrOwogIAkJY2FzZSAib2xkbWVkaXVtYXVkaW8iOgoJCQkJaWZyYW1lX2h0
bWwgKz0gIiB3aWR0aD0xODAgaGVpZ2h0PTYwICIgOwoJCQkJdGhpcy53aWR0aCA9IDE4MDsgIHRo
aXMuaGVpZ2h0ID0gNjA7CgkJCQlicmVhazsKICAJCWNhc2UgIm9sZGxhcmdlYXVkaW8iOgoJCQkJ
aWZyYW1lX2h0bWwgKz0gIiB3aWR0aD0zMzIgaGVpZ2h0PTExMyAiIDsKCQkJCXRoaXMud2lkdGgg
PSAzMzI7ICB0aGlzLmhlaWdodCA9IDExMzsKCQkJCWJyZWFrOwogIAkJY2FzZSAiYXNtYWxsIjoK
CQkJCWlmcmFtZV9odG1sICs9ICIgd2lkdGg9MTc2IGhlaWdodD0yMyAiIDsKCQkJCXRoaXMud2lk
dGggPSAxNzY7ICB0aGlzLmhlaWdodCA9IDIzOwoJCQkJYnJlYWs7CiAgCQljYXNlICJha29scmFk
aW8iOgogICAgICAgIGlmcmFtZV9odG1sICs9ICIgd2lkdGg9IiArIHRoaXMud2lkdGggKyAiIGhl
aWdodD0iICsgdGhpcy5oZWlnaHQ7CgkJCQlicmVhazsKICB9CgogIGlmcmFtZV9odG1sICs9ICIg
ZnJhbWVib3JkZXI9MCBzY3JvbGxpbmc9bm8gYm9yZGVyPTAgIjsKCWlmcmFtZV9odG1sICs9ICJz
dHlsZT0nb3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOiI7CgoJaWYgKHRoaXMucGxheWVyeCAhPSBu
dWxsICYmIHRoaXMucGxheWVyeSAhPSBudWxsKSAKCQlpZnJhbWVfaHRtbCArPSAiYWJzb2x1dGU7
IHRvcDoiICsgdGhpcy5wbGF5ZXJ5ICsgIjtsZWZ0OiIgKyB0aGlzLnBsYXllcnggKyAiOyI7Cgll
bHNlIGlmICh0aGlzLmN1cnRhaW4gJiYgKHRoaXMuY3VydGFpbnggPT0gbnVsbCB8fCB0aGlzLmN1
cnRhaW55ID09IG51bGwpKQoJCWlmcmFtZV9odG1sICs9ICJhYnNvbHV0ZTsgdG9wOjBweDsgbGVm
dDowcHg7IjsKCWVsc2UJCgkJaWZyYW1lX2h0bWwgKz0gInJlbGF0aXZlOyB0b3A6MHB4OyBsZWZ0
OjBweDsiOwoKCWlmICh0aGlzLnBsYXllcnogIT0gbnVsbCkgCgkJaWZyYW1lX2h0bWwgKz0gInot
aW5kZXg6IiArIHRoaXMucGxheWVyeiArICI7IjsKCglpZiAodGhpcy5oaWRkZW5Jbml0ICE9IG51
bGwpCgkJaWZyYW1lX2h0bWwgKz0gInZpc2liaWxpdHk6IGhpZGRlbjsiOwoKCWlmcmFtZV9odG1s
ICs9ICInIGFsbG93dHJhbnNwYXJlbmN5PXRydWU+PC9pZnJhbWU+IjsKICBkb2N1bWVudC53cml0
ZShpZnJhbWVfaHRtbCk7CglfZnVndSA9IHdpbmRvdy5mcmFtZXMuX0ZVR1VfSUZSQU1FXzsKCglp
ZiAodGhpcy5jdXJ0YWluKSB0aGlzLldyaXRlQ3VydGFpbkZyYW1lKCk7Cn0KCmZ1bmN0aW9uIF9G
VUdVX1BsYXkoIHNBc3NldCwgYVNjcm9sbFRleHQgICkgewogIHRoaXMuSW5pdCgpOwogIHRoaXMu
aXNQbGF5aW5nID0gdHJ1ZTsgICAKICB0aGlzLkFzc2V0ICAgICAgPSBzQXNzZXQ7CiAgdGhpcy5z
Y3JvbGxUZXh0ID0gYVNjcm9sbFRleHQ7CiAgdGhpcy5wbGF5bGlzdCA9IGZhbHNlOwogIHZhciB1
cmwgPSB0aGlzLkdlbklmcmFtZVVybChzQXNzZXQsIGFTY3JvbGxUZXh0KTsKCXRyeSB7CiAgCSAg
IGlmIChfZnVndSkgewogICAgCSAgICAgaWYgKHNjcmlwdGFibGUodGhpcy5VQSwgc0Fzc2V0KSAm
JiBfZnVndS5wbGF5ZXIgIT0gInF0IiAmJiAKICAgICAgICAJKF9mdWd1LnBsYXllciA9PSB0aGlz
LnBsYXllciB8fCB0aGlzLnBsYXllciA9PSAidW5rbm93biIpICYmCiAgICAgICAgCV9mdWd1LnQg
PT0gdGhpcy5jdXJfdGVtcGxhdGUgJiYKICAgICAgICAJX2Z1Z3UudHNpemUgPT0gdGhpcy50c2l6
ZSkgewogICAgICAgIAlfZnVndS5wbGF5KHNBc3NldCwgdGhpcy5wbGF5bGlzdCwgYVNjcm9sbFRl
eHQsIHRoaXMuc2Nyb2xsZm10LCB0aGlzLmFzc2V0SW5mbywgdXJsKTsKICAgICAgICAJcmV0dXJu
OwogICAgCSAgICAgfQogIAkgICB9Cgl9CgljYXRjaChlKSB7fQoKICBpZiAodGhpcy5oaWRkZW5J
bml0ID09IG51bGwgfHwgdGhpcy5oaWRkZW5Jbml0ID09IDApIHsKICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdfRlVHVV9JRlJBTUVfJykuc3JjID0gdXJsOwogICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ19GVUdVX0lGUkFNRV8nKS5zdHlsZS52aXNpYmlsaXR5ID0gInZpc2libGUiOwog
IH0KICBlbHNlIHsKICAgIHRoaXMuaGlkZGVuSW5pdCA9IG51bGw7CiAgfQogCn0KCmZ1bmN0aW9u
IF9GdWd1KCkgewoJdGhpcy5Bc3NldCA9IG51bGw7CiAgdGhpcy5hdXRvcGxheSA9IHRydWU7CiAg
dGhpcy5pc1BsYXlpbmcgPSBmYWxzZTsKICB0aGlzLmluaXRpYWxpemVkID0gZmFsc2U7CiAgdGhp
cy5ETFNlcnZlciA9ICJuc3ZhcHAtcHJvZC1yci1zdHJlYW0uYW9sLmNvbSI7Cgl0aGlzLmFkc2Vy
dmVyID0gbnVsbDsKICAKICB0aGlzLmlzTGl2ZSA9IGZhbHNlOwogIHRoaXMuZW5hYmxlU3luYyA9
IHRydWU7IC8vZGVmYXVsdAogIAogIHRoaXMuaGlxID0gZmFsc2U7CiAgdGhpcy5za2luID0gbnVs
bDsKICB0aGlzLnRzaXplID0gImxhcmdlIjsKICB0aGlzLndpZHRoID0gMDsKICB0aGlzLmhlaWdo
dCA9IDA7CiAgdGhpcy5hc3BlY3QgPSA0OwogIHRoaXMudmlkZW8gPSB0cnVlOwogIHRoaXMuc3Ry
ZWFtZXIgPSBudWxsOwogIHRoaXMuYW5nbGUgPSAwOwogIHRoaXMuYXBvcyA9IDA7CiAgdGhpcy5z
dGFydHBvcyA9IDA7CiAgdGhpcy5scG9zID0gMDsKICB0aGlzLnBwb3MgPSAwOwogIHRoaXMubWF4
YnBzID0gMDsKICB0aGlzLmV2ZW50aWQgPSAiIjsKICB0aGlzLnBvZmZzZXQgPSAwOwogIHRoaXMu
cHJlZnMgPSAxOwoJdGhpcy5zaG93Q0MgPSBnZXRQcmVmcygpLmNjOwogIHRoaXMuc2hvd3VpID0g
MTsKICB0aGlzLmhpZGVjb250cm9scyA9IDA7CiAgdGhpcy5QbGF5ID0gX0ZVR1VfUGxheTsKICB0
aGlzLkluaXQgPSBfRlVHVV9Jbml0OwogIHRoaXMuVUEgICA9IG5ldyBfRlVHVV9Vc2VyQWdlbnQo
KTsKICB0aGlzLktPTFBhcmFtcyA9ICIiOwogIHRoaXMuS09MQXV0b1BsYXkgPSBmYWxzZTsKICB0
aGlzLktPTE1hcnZpbklEID0gIiI7CiAgdGhpcy5LT0xNYXJ2aW5JbnRlcnZhbCA9IC0xOwogIHRo
aXMuS09MU2hvd0RlYnVnID0gZmFsc2U7CiAgdGhpcy53d3d0cmFjayA9IG51bGw7CiAgdGhpcy5t
dHJhY2sgPSBudWxsOwogIHRoaXMuY2hhbm5lbCA9IG51bGw7CiAgdGhpcy5zaWxlbmNlID0gbnVs
bDsKICB0aGlzLmV2ZW50SGFuZGxlciA9IG51bGw7Cgl0aGlzLmV2ZW50VGltZXJzID0gbnVsbDsK
ICB0aGlzLnBpZCA9IG51bGw7CiAgdGhpcy5wbGF5bGlzdCA9IGZhbHNlOwogIHRoaXMua2V5aWQg
PSBudWxsOwogIHRoaXMua2V5c2VlZGlkID0gbnVsbDsgCiAgdGhpcy5pc2RybSA9IG51bGw7CiAg
dGhpcy5zY3JvbGxmbXQgPSBudWxsOwogIHRoaXMuaGlkZGVuSW5pdCA9IG51bGw7Cgl0aGlzLmN1
cnRhaW4gPSBmYWxzZTsKCXRoaXMucGxheWVyeCA9IG51bGw7Cgl0aGlzLnBsYXllcnkgPSBudWxs
OwoJdGhpcy5wbGF5ZXJ6ID0gbnVsbDsKCXRoaXMuY3VydGFpbkV4cGFuZCA9ICJ0b3AiOwoJdGhp
cy5jdXJ0YWlueCA9IG51bGw7Cgl0aGlzLmN1cnRhaW55ID0gbnVsbDsKCXRoaXMuY3VydGFpbnog
PSBudWxsOwoJdGhpcy5jdXJ0YWluZXggPSBmYWxzZTsKCXRoaXMuY3VydGFpbm9mZnNldCA9IDA7
Cgl0aGlzLmN1cnRhaW5laCA9IDI1MDsKCXRoaXMuY3VydGFpbmNoID0gNjA7Cgl0aGlzLmN1cnRh
aW5leSA9IDA7Cgl0aGlzLmN1cnRhaW5jeSA9IDA7Cgl0aGlzLnZpc2libGUgPSB0cnVlOwoJdGhp
cy53aW5kb3dlZEZ1bGxzY3JlZW4gPSAidHJ1ZSI7Cgl0aGlzLmZsYXNoRGVidWcgPSBudWxsOyAK
CXRoaXMuZmxhc2hWZXJzaW9uID0gZGV0ZWN0Rmxhc2goKTsKICB0aGlzLkdlbklmcmFtZVVybCA9
IF9GVUdVX0dlbklmcmFtZVVybDsKICAKICB0aGlzLk9wZW5NaW5pVmlkZW8gICAgICA9IF9GVUdV
X09wZW5NaW5pVmlkZW87CiAgdGhpcy5PcGVuVW5pVmlkZW8gICAgICAgPSBfRlVHVV9PcGVuVW5p
VmlkZW87CiAgdGhpcy5PcGVuS29sUmFkaW8gICAgICAgPSBfRlVHVV9PcGVuS29sUmFkaW87CiAg
dGhpcy5QbGF5VmlkZW9PbGRMYXJnZSAgPSBfRlVHVV9QbGF5VmlkZW9PbGRMYXJnZTsKICB0aGlz
LlBsYXlWaWRlb09sZE1lZGl1bSA9IF9GVUdVX1BsYXlWaWRlb09sZE1lZGl1bTsKICB0aGlzLlBs
YXlWaWRlb09sZFNtYWxsICA9IF9GVUdVX1BsYXlWaWRlb09sZFNtYWxsOwogIHRoaXMuUGxheVZp
ZGVvTGFyZ2UgICAgID0gX0ZVR1VfUGxheVZpZGVvTGFyZ2U7CiAgdGhpcy5QbGF5VmlkZW9TdXBl
ckxhcmdlPSBfRlVHVV9QbGF5VmlkZW9TdXBlckxhcmdlOwogIHRoaXMuUGxheVZpZGVvSGlRCSAg
CQk9IF9GVUdVX1BsYXlWaWRlb0hpUTsKICB0aGlzLlBsYXlWaWRlb0JpZyAgICAgICA9IF9GVUdV
X1BsYXlWaWRlb0JpZzsKICB0aGlzLlBsYXlWaWRlb1ByZXZpZXcgICA9IF9GVUdVX1BsYXlWaWRl
b1ByZXZpZXc7CiAgdGhpcy5QbGF5VmlkZW9NZWRpdW0gICAgPSBfRlVHVV9QbGF5VmlkZW9NZWRp
dW07CiAgdGhpcy5QbGF5VmlkZW9TbWFsbCAgICAgPSBfRlVHVV9QbGF5VmlkZW9TbWFsbDsKICB0
aGlzLlBsYXlWaWRlb1dpZGVzY3JlZW5CaWcgPSBfRlVHVV9QbGF5VmlkZW9XaWRlc2NyZWVuQmln
OwogIHRoaXMuUGxheVZpZGVvV2lkZXNjcmVlbiA9IF9GVUdVX1BsYXlWaWRlb1dpZGVzY3JlZW47
CiAgdGhpcy5QbGF5VW5pIAkJCSAJPSBfRlVHVV9QbGF5VW5pOwogIHRoaXMuUGxheUl0ZW0gCQkJ
PSBfRlVHVV9QbGF5SXRlbTsKICAKICB0aGlzLk9wZW5NaW5pQXVkaW8gICAgICA9IF9GVUdVX09w
ZW5NaW5pQXVkaW87CiAgdGhpcy5QbGF5QXVkaW9MYXJnZSAgICAgPSBfRlVHVV9QbGF5QXVkaW9M
YXJnZTsKICB0aGlzLlBsYXlBdWRpb01lZGl1bSAgICA9IF9GVUdVX1BsYXlBdWRpb01lZGl1bTsK
ICB0aGlzLlBsYXlBdWRpb1NtYWxsICAgICA9IF9GVUdVX1BsYXlBdWRpb1NtYWxsOwogIHRoaXMu
UGxheUF1ZGlvT2xkTWVkaXVtID0gX0ZVR1VfUGxheUF1ZGlvT2xkTWVkaXVtOwogIHRoaXMuUGxh
eUF1ZGlvT2xkTGFyZ2UgPSBfRlVHVV9QbGF5QXVkaW9PbGRMYXJnZTsKICB0aGlzLlBsYXlBdWRp
b0tvbFJhZGlvID0gX0ZVR1VfUGxheUF1ZGlvS29sUmFkaW87CgogIC8vIEZ1Z3UgQVBJCiAgdGhp
cy5nZXRQb2xsaW5nSW5mbyAgICAgICAgID0gX0ZVR1VfZ2V0UG9sbGluZ0luZm87CiAgdGhpcy5n
ZXRVc2VyQmFuZHdpZHRoCQkgID0gX0ZVR1VfZ2V0VXNlckJhbmR3aWR0aDsKICB0aGlzLmdldEN1
cnJlbnRQbGF5TGlzdEl0ZW0gPSBfRlVHVV9nZXRDdXJyZW50UGxheUxpc3RJdGVtOwogIHRoaXMu
Z2V0RWxhcHNlZFRpbWUgICAgICAgICA9IF9GVUdVX2dldEVsYXBzZWRUaW1lOwogIHRoaXMuZ2V0
VG90YWxUaW1lICAgICAgICAgICA9IF9GVUdVX2dldFRvdGFsVGltZTsKICB0aGlzLmdldFRpbWVU
ZXh0ICAgICAgICAgICAgPSBfRlVHVV9nZXRUaW1lVGV4dDsKICB0aGlzLmdldE1ldGFkYXRhICAg
ICAgICAgICAgPSBfRlVHVV9nZXRNZXRhZGF0YTsKCXRoaXMuc2V0Vm9sdW1lCQkJCQkJCT0gX0ZV
R1Vfc2V0Vm9sdW1lOwoJdGhpcy5zZXRTZWVrCQkJCQkJCQk9IF9GVUdVX3NldFNlZWs7CiAgdGhp
cy5DbGlja1BsYXkgICAgICAgICAgICAgID0gX0ZVR1VfQ2xpY2tQbGF5OwogIHRoaXMuQ2xpY2tT
dG9wICAgICAgICAgICAgICA9IF9GVUdVX0NsaWNrU3RvcDsKICB0aGlzLkNsaWNrUHJldiAgICAg
ICAgICAgICAgPSBfRlVHVV9DbGlja1ByZXY7CiAgdGhpcy5DbGlja05leHQgICAgICAgICAgICAg
ID0gX0ZVR1VfQ2xpY2tOZXh0OwogIHRoaXMuQ2xpY2tIb2xkCQkgICAgICA9IF9GVUdVX0NsaWNr
SG9sZDsKICB0aGlzLkNsaWNrUGF1c2UgICAgICAgICAgICAgPSBfRlVHVV9DbGlja1BhdXNlOwog
IHRoaXMuQ2xpY2tNdXRlICAgICAgICAgICAgICA9IF9GVUdVX0NsaWNrTXV0ZTsKICB0aGlzLkNs
aWNrRnVsbFNjcmVlbiAgICAgICAgPSBfRlVHVV9DbGlja0Z1bGxTY3JlZW47CiAgdGhpcy5NZXRh
ZGF0YUhhbmRsZXIgICAgICAgID0gbnVsbDsKCXRoaXMuV3JpdGVDdXJ0YWluRnJhbWUgICAgICA9
IF9GVUdVX1dyaXRlQ3VydGFpbkZyYW1lOwoKICB0aGlzLmNwaWQgPSAiIjsKICB0aGlzLmZyYW5j
aGlzZSA9ICIiOyAvLyBUb3AgbGV2ZWwgZnJhbmNoaXNlIHRvIGJlIGNvbXBhdGlibGUgd2l0aCBu
b24tREwgY2xpZW50cwogIHRoaXMudXNlckluZm8gPSB7IGdlbmRlcjogIiIsIGFnZTogIiIsIGRh
eXBhcnQ6ICIiLCBkbWE6ICIiLCBjb25uZWN0aW9uU3BlZWQ6ICIiIH07CiAgdGhpcy5hc3NldElu
Zm8gPSB7IGZyYW5jaGlzZTogIiIsIGdlbnJlOiAiIiwgc3VyZmFjZVBvaW50OiAiIiwgcGxheWxp
c3RHcm91cDogIiIgfTsKCgl0aGlzLkhpZGUgPSBmdW5jdGlvbigpIHsKCQl0cnkgewoJCQl0aGlz
LnZpc2libGUgPSBmYWxzZTsKCQkJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ19GVUdVX0lGUkFN
RV8nKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwoJCQlkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
X0ZVR1VfQ1VSVEFJTl8nKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwoJCQl0aGlzLlVBLmlzTWFj
ID8gdGhpcy5QbGF5KCkgOiBfZnVndS5NYWtlSXRTdG9wKCk7CgoJCX0KCQljYXRjaChlKSB7fQoJ
fQoJCgl0aGlzLlNob3cgPSBmdW5jdGlvbigpIHsKCQl0cnkgewoJCQl0aGlzLnZpc2libGUgPSB0
cnVlOwoJCQlkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnX0ZVR1VfSUZSQU1FXycpLnN0eWxlLmRp
c3BsYXkgPSAiYmxvY2siOwogICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnX0ZVR1VfQ1VS
VEFJTl8nKS5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIjsKCQl9CgkJY2F0Y2goZSkge30KCX0KCgl0
aGlzLmlzVmlzaWJsZSA9IGZ1bmN0aW9uKCkgewoJCXJldHVybiB0aGlzLnZpc2libGU7Cgl9CgoJ
dGhpcy5tb3ZlID0gZnVuY3Rpb24obyx4LHkseikgewogIAlpZiAobykgewogICAgCWlmKHgpIG8u
c3R5bGUubGVmdCA9ICgiIiArIHggKyAicHgiKTsKICAgICAJaWYoeSkgby5zdHlsZS50b3AgPSAo
IiIgKyB5ICsgInB4Iik7CiAgICAgIGlmKHopIG8uc3R5bGUuekluZGV4ID0gejsKICAgIH0KICB9
CiAKICB0aGlzLmdldENvb3JkcyA9IGZ1bmN0aW9uKG8pIHsKICAJaWYgKG8pIHsKICAgIAl2YXIg
YyA9IG5ldyBPYmplY3QoKTsKICAgICAgYy54ID0gcGFyc2VJbnQoby5zdHlsZS5sZWZ0KTsKICAg
ICAgYy55ID0gcGFyc2VJbnQoby5zdHlsZS50b3ApOwogICAgICBjLnogPSBwYXJzZUludChvLnN0
eWxlLnpJbmRleCk7CiAgICAgIHJldHVybiBjOwoJCX0KCQlyZXR1cm4gbnVsbDsKCX0KCiAgdGhp
cy5tb3ZlUGxheWVyID0gZnVuY3Rpb24oeCx5LHopIHsKICAJdGhpcy5tb3ZlKGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJfRlVHVV9JRlJBTUVfIiksIHgsIHksIHopOwogIH0KCiAgdGhpcy5leHBh
bmRDdXJ0YWluRnJhbWUgPSBmdW5jdGlvbigpIHsKCQl0aGlzLmN1cnRhaW5leCA9IHRydWU7CiAg
CXRoaXMuc2l6ZUN1cnRhaW4oZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIl9GVUdVX0NVUlRBSU5f
IiksIHRoaXMuY3VydGFpbmV5LCB0aGlzLmN1cnRhaW5laCk7CiAgfQoKICB0aGlzLmNvbGxhcHNl
Q3VydGFpbkZyYW1lID0gZnVuY3Rpb24oKSB7CgkJdGhpcy5jdXJ0YWluZXggPSBmYWxzZTsKICAJ
dGhpcy5zaXplQ3VydGFpbihkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiX0ZVR1VfQ1VSVEFJTl8i
KSwgdGhpcy5jdXJ0YWluY3ksIHRoaXMuY3VydGFpbmNoKTsKICB9CgoJdGhpcy5zaXplQ3VydGFp
biA9IGZ1bmN0aW9uKG8sIHQsIGgpIHsKCQlpZiAobykgewoJCQlvLnN0eWxlLnRvcCA9IHQgKyAi
cHgiOwoJCQlvLnN0eWxlLmhlaWdodCA9IGggKyAicHgiOwoJCX0KCX0gCgogIHRoaXMubW92ZUN1
cnRhaW4gPSBmdW5jdGlvbih4LHkseikgewoJCWlmICh0aGlzLmN1cnRhaW5vZmZzZXQpIHsKCQkJ
dGhpcy5jdXJ0YWluZXkgPSB5OwoJCQl0aGlzLmN1cnRhaW5jeSA9ICh5K3RoaXMuY3VydGFpbm9m
ZnNldCk7CiAgCQl0aGlzLm1vdmUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIl9GVUdVX0NVUlRB
SU5fIiksIHgsICh5ICsgKHRoaXMuY3VydGFpbmV4ID8gMCA6IHRoaXMuY3VydGFpbm9mZnNldCkp
LCB6KTsKCQl9CgkJZWxzZSB7CQogIAkJdGhpcy5tb3ZlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJfRlVHVV9DVVJUQUlOXyIpLCB4LCB5LCB6KTsKCQl9CiAgfQogIAoJdGhpcy5nZXRQbGF5ZXJD
b29yZGluYXRlcyA9IGZ1bmN0aW9uKCkgewogIAlyZXR1cm4gdGhpcy5nZXRDb29yZHMoZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoIl9GVUdVX0lGUkFNRV8iKSk7CiAgfQoKICB0aGlzLmdldEN1cnRh
aW5Db29yZGluYXRlcyA9IGZ1bmN0aW9uKCkgewogIAl2YXIgYyA9IHRoaXMuZ2V0Q29vcmRzKGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJfRlVHVV9DVVJUQUlOXyIpKTsKCQljLnkgKz0gdGhpcy5j
dXJ0YWlub2Zmc2V0OwoJCXJldHVybiBjOwogIH0KfQoKZnVuY3Rpb24gX0ZVR1VfUGxheUl0ZW0o
aSkgewogIHRyeSB7IAoJCWlmIChzY3JpcHRhYmxlKHRoaXMuVUEsIF9mdWd1LnRvcF9wbGF5bGlz
dF91cmwpKSB7CgkJCV9mdWd1LnBsYXlJdGVtKGkpOyAKCQl9CgkJZWxzZSB7CgkJCXZhciBwbHMg
PSBfZnVndS50b3BfcGxheWxpc3RfdXJsOwoJCQl2YXIgdXJsID0gX2Z1Z3UubG9jYXRpb24uaHJl
ZjsKCQkJdmFyIGlkeCA9IC0xOwoKCQkJaWYgKHVybC5pbmRleE9mKCJxdHBscz0iKSAhPSAtMSkg
CgkJCQlpZHggPSB1cmwuaW5kZXhPZigicXRwbHM9IikgKyA2OwoJCQllbHNlIGlmICh1cmwuaW5k
ZXhPZigicmVhbHBscz0iKSAhPSAtMSkgCgkJCQlpZHggPSB1cmwuaW5kZXhPZigicmVhbHBscz0i
KSArIDg7CgkJCWVsc2UgaWYgKHVybC5pbmRleE9mKCJ3bXNwbHM9IikgIT0gLTEpIAoJCQkJaWR4
ID0gdXJsLmluZGV4T2YoIndtc3Bscz0iKSArIDc7CgkJCWVsc2UgaWYgKHVybC5pbmRleE9mKCJu
c3ZwbHM9IikgIT0gLTEpCgkJCQlpZHggPSB1cmwuaW5kZXhPZigibnN2cGxzPSIpICsgNzsKCQkJ
ZWxzZSBpZiAodXJsLmluZGV4T2YoImZsc3Bscz0iKSAhPSAtMSkKICAgICAgICBpZHggPSB1cmwu
aW5kZXhPZigiZmxzcGxzPSIpICsgNzsKCgkJCWZvciAodmFyIGogPSBpZHg7IGogPCB1cmwubGVu
Z3RoICYmIHVybC5jaGFyQXQoaikgIT0gJyYnOyBqKyspOwoJCQlpZiAocGxzLmluZGV4T2YoInN0
YXJ0PSIpICE9IC0xKQoJCQkJcGxzID0gcGxzLnJlcGxhY2UoL3N0YXJ0PVxkKy8sICJzdGFydD0i
ICsgaSk7CgkJCWVsc2UKCQkJCXBscyArPSAiJnN0YXJ0PSIgKyBpOwoJCQl1cmwgPSB1cmwuc3Vi
c3RyaW5nKDAsaWR4KSArIGVzY2FwZShwbHMpICsgdXJsLnN1YnN0cmluZyhqKTsKCQkJZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ19GVUdVX0lGUkFNRV8nKS5zcmMgPSB1cmw7CgkJfQoJfSAKCWNh
dGNoIChlKSB7fQp9CgpmdW5jdGlvbiBfRlVHVV9nZXRQb2xsaW5nSW5mbygpIHsKCXZhciBydiA9
IG51bGw7CiAgCXRyeSB7IHJ2ID0gX2Z1Z3UuUGxheUxpc3QuZ2V0UG9sbGluZ0luZm8oKTsgfSBj
YXRjaCAoZSkgeyBydiA9IG51bGw7IH0KCXJldHVybiBydjsKfQoKZnVuY3Rpb24gX0ZVR1VfZ2V0
VXNlckJhbmR3aWR0aCgpIHsKCXZhciBydiA9IDA7CiAgCXRyeSB7IHJ2ID0gX2Z1Z3UuYndoaW50
OyB9IGNhdGNoIChlKSB7IHJ2ID0gMDsgfQoJcmV0dXJuIHJ2Owp9CgpmdW5jdGlvbiBfRlVHVV9n
ZXRDdXJyZW50UGxheUxpc3RJdGVtKCkgewoJdmFyIHJ2ID0gbnVsbDsKICAJdHJ5IHsgcnYgPSBf
ZnVndS5Ub3BQbGF5TGlzdC5nZXRDdXJyZW50SXRlbSgpOyB9IGNhdGNoIChlKSB7IHJ2ID0gbnVs
bDsgfQoJcmV0dXJuIHJ2Owp9CgpmdW5jdGlvbiBfRlVHVV9nZXRFbGFwc2VkVGltZSgpIHsKCXZh
ciBydiA9IG51bGw7CiAgdHJ5IHsgcnYgPSBfZnVndS5GdWd1R2V0RWxhcHNlZFRpbWUoKTsgfSBj
YXRjaCAoZSkgeyBydiA9IG51bGw7IH0KCXJldHVybiBydjsKfQoKZnVuY3Rpb24gX0ZVR1VfZ2V0
VG90YWxUaW1lKCkgewoJdmFyIHJ2ID0gbnVsbDsKICB0cnkgeyBydiA9IF9mdWd1LkZ1Z3VHZXRU
b3RhbFRpbWUoKTsgfSBjYXRjaCAoZSkgeyBydiA9IG51bGw7IH0KCXJldHVybiBydjsKfQoKZnVu
Y3Rpb24gX0ZVR1VfZ2V0VGltZVRleHQoKSB7Cgl2YXIgcnYgPSAiMDA6MDAgLyAwMDowMCI7CiAg
dHJ5IHsgcnYgPSBfZnVndS5GdWd1R2V0VGltZVRleHQoKTsgfSBjYXRjaCAoZSkgeyBydiA9ICIw
MDowMCAvIDAwOjAwIiB9CglyZXR1cm4gcnY7Cn0KCmZ1bmN0aW9uIF9GVUdVX3NldFZvbHVtZShp
KSB7CiAgdHJ5IHsgX2Z1Z3UuRnVndVNldFZvbHVtZShpKTsgfSBjYXRjaCAoZSkge30KfQoKZnVu
Y3Rpb24gX0ZVR1Vfc2V0U2VlayhpKSB7CiAgdHJ5IHsgX2Z1Z3UuRnVndVNldFNlZWsoaSk7IH0g
Y2F0Y2ggKGUpIHt9Cn0KCmZ1bmN0aW9uIF9GVUdVX2dldE1ldGFkYXRhKCkgewoJdmFyIHJ2ID0g
bnVsbDsKICB0cnkgeyBydiA9IF9mdWd1LkZ1Z3VHZXRNZXRhZGF0YSgpOyB9IGNhdGNoIChlKSB7
IHJ2ID0gbnVsbDsgfQoJcmV0dXJuIHJ2Owp9CgpmdW5jdGlvbiBfRlVHVV9DbGlja1BsYXkoKSB7
Cgl2YXIgcnYgPSBudWxsOwogIHRyeSB7IHJ2ID0gX2Z1Z3UuRnVndUNsaWNrUGxheSgpOyB9IGNh
dGNoIChlKSB7IHJ2ID0gbnVsbDsgfQoJcmV0dXJuIHJ2Owp9CgpmdW5jdGlvbiBfRlVHVV9DbGlj
a1N0b3AoKSB7Cgl2YXIgcnYgPSBudWxsOwogIHRyeSB7IHJ2ID0gX2Z1Z3UuRnVndUNsaWNrU3Rv
cCgpOyB9IGNhdGNoIChlKSB7IHJ2ID0gbnVsbDsgfQoJcmV0dXJuIHJ2Owp9CgpmdW5jdGlvbiBf
RlVHVV9DbGlja05leHQoKSB7Cgl2YXIgcnYgPSBudWxsOwogIHRyeSB7IHJ2ID0gX2Z1Z3UuRnVn
dUNsaWNrTmV4dCgpOyB9IGNhdGNoIChlKSB7IHJ2ID0gbnVsbDsgfQoJcmV0dXJuIHJ2Owp9Cgpm
dW5jdGlvbiBfRlVHVV9DbGlja1ByZXYoKSB7Cgl2YXIgcnYgPSBudWxsOwogIHRyeSB7IHJ2ID0g
X2Z1Z3UuRnVndUNsaWNrUHJldigpOyB9IGNhdGNoIChlKSB7IHJ2ID0gbnVsbDsgfQoJcmV0dXJu
IHJ2Owp9CgpmdW5jdGlvbiBfRlVHVV9DbGlja0hvbGQoKSB7Cgl2YXIgcnYgPSBudWxsOwogIHRy
eSB7IHJ2ID0gX2Z1Z3UuRnVndUNsaWNrSG9sZCgpOyB9IGNhdGNoIChlKSB7IHJ2ID0gbnVsbDsg
fQoJcmV0dXJuIHJ2Owp9CgpmdW5jdGlvbiBfRlVHVV9DbGlja1BhdXNlKCkgewoJdmFyIHJ2ID0g
bnVsbDsKICB0cnkgeyBydiA9IF9mdWd1LkZ1Z3VDbGlja1BhdXNlKCk7IH0gY2F0Y2ggKGUpIHsg
cnYgPSBudWxsOyB9CglyZXR1cm4gcnY7Cn0KCmZ1bmN0aW9uIF9GVUdVX0NsaWNrTXV0ZSgpIHsK
CXZhciBydiA9IG51bGw7CiAgdHJ5IHsgcnYgPSBfZnVndS5GdWd1Q2xpY2tNdXRlKCk7IH0gY2F0
Y2ggKGUpIHsgcnYgPSBudWxsOyB9CglyZXR1cm4gcnY7Cn0KCmZ1bmN0aW9uIF9GVUdVX0NsaWNr
RnVsbFNjcmVlbigpIHsKCXZhciBydiA9IG51bGw7CiAgdHJ5IHsgcnYgPSBfZnVndS5GdWd1Q2xp
Y2tGdWxsU2NyZWVuKCk7IH0gY2F0Y2ggKGUpIHsgcnYgPSBudWxsOyB9CglyZXR1cm4gcnY7Cn0K
CmZ1bmN0aW9uIF9GVUdVX1BsYXlVbmkgKCBhc3NldCwgc2Nyb2xsYXJyYXksIHdpZHRoLCBoZWln
aHQsIHNraW4gKSB7CgkKCXRoaXMudCA9ICJ1bmkiOwoJdHJ5ewoJCWlmICh0aGlzLnRzaXplICE9
ICJoaXEiICYmIHRoaXMudHNpemUgIT0gIm9sZG1lZGl1bSIpewogICAgCXRoaXMudHNpemUgPSB0
aGlzLnQ7IC8vIFNhdmUgdGhlIG9yaWdpbmFsIHRlbXBsYXRlIG5hbWUgZm9yIHByZWZzIGRpc3Bs
YXkKICAJfQovLwlpZiAoYXNzZXQgJiYgYXNzZXQuaW5kZXhPZigiLmZsdiIpID09IC0xKSBhc3Nl
dCA9IGFzc2V0LnRvTG93ZXJDYXNlKCk7Cgl9Y2F0Y2goZSl7fQogIHRoaXMuc2tpbiA9IChza2lu
ID09ICJ1bmRlZmluZWQiIHx8ICFza2luKSA/ICJkZWZhdWx0IiA6IHNraW47CiAgaWYgKHRoaXMu
d2lkdGggPT0gMCkgewogICAgdGhpcy53aWR0aCA9IHdpZHRoOwogIH0KICBpZiAodGhpcy5oZWln
aHQgPT0gMCkgewogICAgdGhpcy5oZWlnaHQgPSBoZWlnaHQ7CiAgfQogIHRoaXMuUGxheSggYXNz
ZXQsIHNjcm9sbGFycmF5ICk7Cn0KCmZ1bmN0aW9uIF9GVUdVX1BsYXlWaWRlb09sZExhcmdlKCBh
c3NldCwgc2Nyb2xsYXJyYXksIHNraW4gKSB7CiAgdGhpcy50ID0gIm9sZGxhcmdlIjsKCWlmICgh
c2NyaXB0YWJsZSh0aGlzLlVBLCBhc3NldCkpIHsKICB0aGlzLnNraW4gPSBza2luOwogIHRoaXMu
UGxheSggYXNzZXQsIHNjcm9sbGFycmF5ICk7CiAgfSBlbHNlIHsKICAgIHRoaXMuUGxheVVuaSAo
YXNzZXQsIHNjcm9sbGFycmF5LCAzODQsIDM1NSwgc2tpbik7CiAgfQp9CgpmdW5jdGlvbiBfRlVH
VV9PcGVuS29sUmFkaW8oc2Nyb2xsVGV4dCwgcGNfYXNzZXQsIG1hY19hc3NldCwgcGxheWVyU3Bl
ZWQsIHBsYXllclNjcm9sbENvdW50KSB7Cgl0aGlzLnQgPSAidW5pIjsKICB0aGlzLnRzaXplID0g
ImFrb2xyYWRpbyI7IC8vIFNhdmUgdGhlIG9yaWdpbmFsIHRlbXBsYXRlIG5hbWUgZm9yIHByZWZz
IGRpc3BsYXkKICB0aGlzLnBpZCA9ICJLT0wiOwogIHRoaXMuaXNMaXZlID0gMTsKICB0aGlzLmJy
YW5kID0gIktPTCI7CiAgdGhpcy5jb21wYW55ID0gIktPTCI7CiAgdGhpcy52aWRlbyA9IGZhbHNl
OwogIHRoaXMuc2hvd2FkcyA9ICIwIjsKICB0aGlzLnNraW4gPSAiYWtvbHJhZGlvIjsKCUtPTF9N
QVJWSU5fSUQgPSAiNS00MTUtNTUxMiI7CglLT0xfTUFSVklOX1VSTCA9IGVzY2FwZSgiaHR0cDov
L2FvbHN2Yy5rb2wuYW9sLmNvbS9tYXJ2aW4vbWFpbi5hZHA/Zm9ybWF0PXhtbCZpZD0iICsgS09M
X01BUlZJTl9JRCk7CglLT0xfUExBWUVSX1dJRFRIX01BQ19GUkFNRSA9ICIxMjMiOwogIEtPTF9Q
TEFZRVJfSEVJR0hUX01BQ19GUkFNRSA9ICIxMDAiOwoKICBpZiAodGhpcy5VQS5vcyAhPSAiT1NY
Iil7CiAgICB0aGlzLndpZHRoID0gS09MX1BMQVlFUl9XSURUSDsKICAgIHRoaXMuaGVpZ2h0ID0g
S09MX1BMQVlFUl9IRUlHSFQ7CiAgfWVsc2V7CgkJdGhpcy50ID0gImFrb2xyYWRpbyI7CgkJdGhp
cy5za2luID0gImRlZmF1bHQiOwogICAgdGhpcy53aWR0aCA9IEtPTF9QTEFZRVJfV0lEVEhfTUFD
X0ZSQU1FOwogICAgdGhpcy5oZWlnaHQgPSBLT0xfUExBWUVSX0hFSUdIVF9NQUNfRlJBTUU7CiAg
fQogIHZhciBhc3NldCA9ICIiOwogIC8vIEVuc3VyZSBzdHJlYW0gaXMgdmFsaWQuCiAgaWYgKHBj
X2Fzc2V0ICYmIHBjX2Fzc2V0LmluZGV4T2YoIi5uc3ZwbHMiKSA9PSAtMSl7CgkJaWYgKHBjX2Fz
c2V0LmluZGV4T2YoIi53bXNwbHMiKSA9PSAtMSkgcGNfYXNzZXQgPSB1bmRlZmluZWQ7CiAgfQog
IGlmIChtYWNfYXNzZXQgJiYgbWFjX2Fzc2V0LmluZGV4T2YoIi53bXNwbHMiKSA9PSAtMSkgbWFj
X2Fzc2V0ID0gdW5kZWZpbmVkOwoKICAvLyBEZWZhdWx0cy4KICBpZiAoIXRoaXMuVUEuaXNNYWMp
ewogICAgICghcGNfYXNzZXQpID8gYXNzZXQgPSBLT0xfUENfUExBWUxJU1QgOiBhc3NldCA9IHBj
X2Fzc2V0OwogIH1lbHNlewogICAgICghbWFjX2Fzc2V0KSA/IGFzc2V0ID0gS09MX01BQ19QTEFZ
TElTVCA6IGFzc2V0ID0gbWFjX2Fzc2V0OwogIH0KCgogIC8vIFNldCB2YXJpYWJsZXMuCiAgdGhp
cy5LT0xQYXJhbXMgPSAiIjsKICB0aGlzLktPTFBhcmFtcyArPSAiJmF1dG9wbGF5PSIgKyB0aGlz
LmF1dG9wbGF5OwogIHRoaXMuS09MUGFyYW1zICs9ICImbWFydmluSW50ZXJ2YWw9IiArIHRoaXMu
S09MTWFydmluSW50ZXJ2YWw7CiAgdGhpcy5LT0xQYXJhbXMgKz0gIiZzaG93RGVidWc9IiArIHRo
aXMuS09MU2hvd0RlYnVnOwoKICBpZiAodGhpcy5LT0xNYXJ2aW5JRCAhPSAiIikgdGhpcy5LT0xQ
YXJhbXMgKz0gIiZtYXJ2aW5JZD0iICsgdGhpcy5LT0xNYXJ2aW5JRDsKIAogIGlmIChzY3JvbGxU
ZXh0ICE9IHVuZGVmaW5lZCAmJiBzY3JvbGxUZXh0ICE9ICIiKSB7CgkJdGhpcy5LT0xQYXJhbXMg
Kz0gIiZzY3JvbGxUZXh0PSIgKyBzY3JvbGxUZXh0OwogIH1lbHNlewogIAl0aGlzLktPTFBhcmFt
cyArPSAiJnNjcm9sbFRleHQ9IiArIEtPTF9NQVJWSU5fVVJMOwogIH0KICBpZiAocGxheWVyU3Bl
ZWQpIHRoaXMuS09MUGFyYW1zICs9ICImcGxheWVyU3BlZWQ9IiArIHBsYXllclNwZWVkOwogIGlm
IChwbGF5ZXJTY3JvbGxDb3VudCkgdGhpcy5LT0xQYXJhbXMgKz0gIiZwbGF5ZXJTY3JvbGxDb3Vu
dD0iICsgcGxheWVyU2Nyb2xsQ291bnQ7CgogIHRoaXMuUGxheShhc3NldCwgIiIpOwp9CgpmdW5j
dGlvbiBfRlVHVV9PcGVuTWluaVZpZGVvKCBhc3NldCwgc2Nyb2xsYXJyYXkgKSB7CglpZiAoIXNj
cmlwdGFibGUodGhpcy5VQSwgYXNzZXQpKSB7CiAgdGhpcy50ID0gImxhcmdlIjsgLy8gd2FzIG9s
ZGxhcmdlCiAgfSBlbHNlIHsKICB0aGlzLndpZHRoID0gMzIwOwogIHRoaXMuaGVpZ2h0ID0gMzQ3
OwogIHRoaXMudHNpemUgPSAibGFyZ2UiOwogIHRoaXMudCA9ICJ1bmkiOwogIH0KICBNaW5pVXJs
ID0gdGhpcy5HZW5JZnJhbWVVcmwoIGFzc2V0LCBzY3JvbGxhcnJheSApOwogIGlmKE1pbmlVcmwu
aW5kZXhPZigiZXJyb3JfIikgPT0gLTEpeyAvLyA0MDQgZXJyb3IgZm9yIG1hYy9uc3YgZXJyb3Ig
cGFnZSBidWcgZml4CiAgICBNaW5pVXJsICs9ICImX0FPTEZPUk09dzMyNS5oMzU2LnA3LlIxMCI7
CiAgfQogIGlmICggIXRoaXMuVUEuaXNBT0w5UGx1cyApewogICAgb3BlbmVyID0gd2luZG93Lm9w
ZW4oIE1pbmlVcmwsICJwbGF5ZXJ3aW4iLCAid2lkdGg9MzIwLCBoZWlnaHQ9MzQ3LCByZXNpemFi
bGU9bm8iICk7CiAgfSBlbHNlIHsKICAgIGRvY3VtZW50LmxvY2F0aW9uLmhyZWYgPSBNaW5pVXJs
OwogIH0KfQoKZnVuY3Rpb24gX0ZVR1VfT3BlblVuaVZpZGVvKCBhc3NldCwgc2Nyb2xsYXJyYXks
IHdpZHRoLCBoZWlnaHQgKSB7CglpZiAoIXNjcmlwdGFibGUodGhpcy5VQSwgYXNzZXQpKSB7CiAg
dGhpcy50ID0gImxhcmdlIjsgLy8gd2FzIG9sZGxhcmdlCiAgfSBlbHNlIHsKICB0aGlzLndpZHRo
ID0gd2lkdGg7CiAgdGhpcy5oZWlnaHQgPSBoZWlnaHQ7CiAgdGhpcy50c2l6ZSA9ICJsYXJnZSI7
CiAgdGhpcy50ID0gInVuaSI7CiAgfQogIE1pbmlVcmwgPSB0aGlzLkdlbklmcmFtZVVybCggYXNz
ZXQsIHNjcm9sbGFycmF5ICk7CiAgaWYoTWluaVVybC5pbmRleE9mKCJlcnJvcl8iKSA9PSAtMSl7
IC8vIDQwNCBlcnJvciBmb3IgbWFjL25zdiBlcnJvciBwYWdlIGJ1ZyBmaXgKICAgIHZhciBpbkFP
THdpZHRoID0gd2lkdGggKyA1OwogICAgdmFyIGluQU9MaGVpZ2h0ID0gaGVpZ2h0ICsgNTsKICAg
IE1pbmlVcmwgKz0gIiZfQU9MRk9STT13IiArIGluQU9Md2lkdGggKyAiLmgiICsgaW5BT0xoZWln
aHQgKyAiLnA3LlIxMCI7CiAgfQogIGlmICggIXRoaXMuVUEuaXNBT0w5UGx1cyApewogICAgdmFy
IHNpemVTdHIgPSAid2lkdGg9IiArIHdpZHRoICsgIiwgaGVpZ2h0PSIgKyBoZWlnaHQgKyAiLCBy
ZXNpemFibGU9bm8iOwogICAgb3BlbmVyID0gd2luZG93Lm9wZW4oIE1pbmlVcmwsICJwbGF5ZXJ3
aW4iLCBzaXplU3RyICk7CiAgfSBlbHNlIHsKICAgIGRvY3VtZW50LmxvY2F0aW9uLmhyZWYgPSBN
aW5pVXJsOwogIH0KfQoKZnVuY3Rpb24gX0ZVR1VfUGxheVZpZGVvV2lkZXNjcmVlbkJpZyggYXNz
ZXQsIHNjcm9sbGFycmF5LCBza2luICkgewogIHRoaXMudCA9ICJ3aWRlc2NyZWVuYmlnIjsKICB0
aGlzLmFzcGVjdCA9IDE2OwogIHRoaXMuUGxheVVuaSAoYXNzZXQsIHNjcm9sbGFycmF5LCA0NDgs
IDMzMywgc2tpbik7Cn0KCmZ1bmN0aW9uIF9GVUdVX1BsYXlWaWRlb1dpZGVzY3JlZW4oIGFzc2V0
LCBzY3JvbGxhcnJheSwgc2tpbiApIHsKICB0aGlzLnQgPSAid2lkZXNjcmVlbiI7CiAgdGhpcy5h
c3BlY3QgPSAxNjsKICB0aGlzLlBsYXlVbmkgKGFzc2V0LCBzY3JvbGxhcnJheSwgMzY4LCAyODQs
IHNraW4pOwp9CgpmdW5jdGlvbiBfRlVHVV9QbGF5VmlkZW9PbGRNZWRpdW0oIGFzc2V0LCBza2lu
ICkgewogIHRoaXMudHNpemUgPSAib2xkbWVkaXVtIjsKICBpZiAoIXNjcmlwdGFibGUodGhpcy5V
QSwgYXNzZXQpKSB7CiAgICBpZiAoc2tpbikgdGhpcy5za2luID0gc2tpbjsKICAgIHRoaXMuUGxh
eSggYXNzZXQgKTsKICB9IGVsc2UgewogICAgdGhpcy5QbGF5VW5pIChhc3NldCwgbnVsbCwgMzIw
LCAzMDAsIHNraW4pOwogIH0KfQoKZnVuY3Rpb24gX0ZVR1VfUGxheVZpZGVvT2xkU21hbGwoIGFz
c2V0LCBza2luICkgewogIHRoaXMudCA9ICJ1bmkiOwogIHNraW4gPSAib2xkc21hbGwiOwogIHRo
aXMuUGxheVVuaSAoYXNzZXQsIG51bGwsIDE3NiwgMTY4LCBza2luKTsKfQoKZnVuY3Rpb24gX0ZV
R1VfUGxheVZpZGVvTGFyZ2UoIGFzc2V0LCBzY3JvbGxhcnJheSwgc2tpbiApIHsKIHRoaXMudCA9
ICJsYXJnZSI7CiAgaWYgKCFzY3JpcHRhYmxlKHRoaXMuVUEsIGFzc2V0KSkgewogICAgdGhpcy5z
a2luID0gImRlZmF1bHQiOwogICAgdGhpcy5QbGF5KGFzc2V0LCBzY3JvbGxhcnJheSApOwogIH0g
ZWxzZSB7CiAgICB0aGlzLndpZHRoID0gKHRoaXMud2lkdGggPT0gMCkgPyB0aGlzLndpZHRoID0g
MzIwIDogdGhpcy53aWR0aDsgCiAgICB0aGlzLmhlaWdodCA9ICh0aGlzLmhlaWdodCA9PSAwKSA/
IHRoaXMuaGVpZ2h0ID0gMzE3IDogdGhpcy5oZWlnaHQ7CiAgICB0aGlzLlBsYXlVbmkgKGFzc2V0
LCBzY3JvbGxhcnJheSwgdGhpcy53aWR0aCwgdGhpcy5oZWlnaHQsIHNraW4pOwogIH0KfQoKZnVu
Y3Rpb24gX0ZVR1VfUGxheVZpZGVvSGlRKCBhc3NldCwgc2Nyb2xsYXJyYXksIHNraW4gKSB7CiAg
dGhpcy50ID0gInVuaSI7Cgl0aGlzLnRzaXplID0gImhpcSI7CiAgc2tpbiA9ICJoaXEiOwogIGlm
ICghc2NyaXB0YWJsZSh0aGlzLlVBLCBhc3NldCkpIHsKICAgIHRoaXMuUGxheShhc3NldCwgc2Ny
b2xsYXJyYXkgKTsKICB9IGVsc2UgewogICAgdGhpcy53aWR0aCA9ICh0aGlzLndpZHRoID09IDAp
ID8gdGhpcy53aWR0aCA9IDY0MCA6IHRoaXMud2lkdGg7CiAgICB0aGlzLmhlaWdodCA9ICh0aGlz
LmhlaWdodCA9PSAwKSA/IHRoaXMuaGVpZ2h0ID0gNTU3IDogdGhpcy5oZWlnaHQ7CiAgICB0aGlz
LlBsYXlVbmkgKGFzc2V0LCBzY3JvbGxhcnJheSwgdGhpcy53aWR0aCwgdGhpcy5oZWlnaHQsIHNr
aW4pOwogIH0KfQoKZnVuY3Rpb24gX0ZVR1VfUGxheVZpZGVvU3VwZXJMYXJnZSggYXNzZXQsIHNj
cm9sbGFycmF5LCBza2luICkgewogIHRoaXMudCA9ICJzdXBlcmxhcmdlIjsKICB0aGlzLlBsYXlV
bmkgKGFzc2V0LCBzY3JvbGxhcnJheSwgNjQwLCA1NTcsIHNraW4pOwp9CgpmdW5jdGlvbiBfRlVH
VV9QbGF5VmlkZW9CaWcoIGFzc2V0LCBzY3JvbGxhcnJheSwgc2tpbiApIHsKICB0aGlzLnQgPSAi
YmlnIjsKICB0aGlzLlBsYXlVbmkgKGFzc2V0LCBzY3JvbGxhcnJheSwgNTEyLCA0NjEsIHNraW4p
Owp9CgpmdW5jdGlvbiBfRlVHVV9QbGF5VmlkZW9QcmV2aWV3KCBhc3NldCApIHsKICB0aGlzLnQg
PSAicHJldmlldyI7CiAgdGhpcy5zaG93dWkgPSAwOwogIHRoaXMuUGxheVVuaSAoYXNzZXQsIG51
bGwsIDE2MCwgMTIwLCBudWxsICk7Cn0KCmZ1bmN0aW9uIF9GVUdVX1BsYXlWaWRlb01lZGl1bSgg
YXNzZXQsIHNjcm9sbGFycmF5LCBza2luICkgewogIHRoaXMudCA9ICJtZWRpdW0iOwogIGlmICgh
c2tpbiB8fCBza2luID09ICJncmV5IiB8fCBza2luID09ICJibHVlIikgc2tpbiA9ICJtZWRpdW0i
OwogIHRoaXMuUGxheVVuaSAoYXNzZXQsIHNjcm9sbGFycmF5LCAxNzYsIDE4OCwgc2tpbik7Cn0K
CmZ1bmN0aW9uIF9GVUdVX1BsYXlWaWRlb1NtYWxsKCBhc3NldCApIHsKICB0aGlzLnQgPSAic21h
bGwiOwogIHNraW4gPSAic21hbGwiOwogIHRoaXMuUGxheVVuaSAoYXNzZXQsIG51bGwsIDE3Niwg
MTU1LCBza2luKTsKfQoKZnVuY3Rpb24gX0ZVR1VfT3Blbk1pbmlBdWRpbyggYXNzZXQsIHNjcm9s
bGFycmF5ICkgewoJaWYgKCFzY3JpcHRhYmxlKHRoaXMuVUEsIGFzc2V0KSkgewogIHRoaXMudCA9
ICJhbGFyZ2UiOyAvLyB3YXMgb2xkbGFyZ2UKICB9IGVsc2UgewogIHRoaXMud2lkdGggPSAzMjA7
CiAgdGhpcy5oZWlnaHQgPSAxMDc7CiAgdGhpcy50ID0gInVuaSI7CiAgdGhpcy50c2l6ZSA9ICJh
bGFyZ2UiOwogIH0KICB0aGlzLnZpZGVvID0gZmFsc2U7CiAgdGhpcy5zaG93YWRzID0gMDsKICBN
aW5pVXJsID0gdGhpcy5HZW5JZnJhbWVVcmwoIGFzc2V0LCBzY3JvbGxhcnJheSApOwogIGlmKE1p
bmlVcmwuaW5kZXhPZigiZXJyb3JfIikgPT0gLTEpeyAvLyA0MDQgZXJyb3IgZm9yIG1hYy9uc3Yg
ZXJyb3IgcGFnZSBidWcgZml4CiAgICBNaW5pVXJsICs9ICImX0FPTEZPUk09dzMyNS5oMTA3LnA3
LlIxMCI7CiAgfQogIGlmICggIXRoaXMuVUEuaXNBT0w5UGx1cyApewogICAgb3BlbmVyID0gd2lu
ZG93Lm9wZW4oIE1pbmlVcmwsICJwbGF5ZXJ3aW4iLCAid2lkdGg9MzIwLCBoZWlnaHQ9MTA3LCBy
ZXNpemFibGU9bm8iICk7CiAgfSBlbHNlIHsKICAgIGRvY3VtZW50LmxvY2F0aW9uLmhyZWYgPSBN
aW5pVXJsOwogIH0KfQoKZnVuY3Rpb24gX0ZVR1VfUGxheUF1ZGlvTGFyZ2UoIGFzc2V0LCBzY3Jv
bGxhcnJheSwgc2tpbiApIHsKICB0aGlzLnQgICAgPSAiYWxhcmdlIjsKCXRoaXMudmlkZW8gPSBm
YWxzZTsKCWlmICghc2NyaXB0YWJsZSh0aGlzLlVBLCBhc3NldCkpIHsKCQl0aGlzLnRzaXplID0g
ImxhcmdlIjsKICAJdGhpcy5za2luID0gc2tpbjsKICAJdGhpcy5QbGF5KCBhc3NldCwgc2Nyb2xs
YXJyYXkpOwogIH0gZWxzZSB7CiAgCXRoaXMuc2hvd2FkcyA9ICIwIjsKICAJdGhpcy5QbGF5VW5p
IChhc3NldCwgc2Nyb2xsYXJyYXksIDMyMCwgNzcsIHNraW4pOwogIH0KfQoKZnVuY3Rpb24gX0ZV
R1VfUGxheUF1ZGlvS29sUmFkaW8oIHNjcm9sbFRleHQsIHBjX2Fzc2V0LCBtYWNfYXNzZXQsIHNr
aW4gKSB7CiAgdGhpcy50ID0gInVuaSI7CiAgdGhpcy50c2l6ZSA9ICJha29scmFkaW8iOwoJc2tp
biA9IChza2luKSA/IHNraW4gOiAiYWtvbHJhZGlvIjsKICBpZiAodGhpcy5VQS5pc01hYykgewoJ
CXRoaXMuT3BlbktvbFJhZGlvKHNjcm9sbFRleHQsIHBjX2Fzc2V0LCBtYWNfYXNzZXQpOwogIH1l
bHNlewoJCXRoaXMuUGxheUF1ZGlvTGFyZ2UocGNfYXNzZXQsIHNjcm9sbFRleHQsIHNraW4pOwog
IH0KfQoKZnVuY3Rpb24gX0ZVR1VfUGxheUF1ZGlvTWVkaXVtKCBhc3NldCwgc2Nyb2xsYXJyYXks
IHNraW4gKSB7CiAgdGhpcy50ICAgID0gImFtZWRpdW0iOwogIHRoaXMudmlkZW8gPSBmYWxzZTsK
ICB0aGlzLnNob3dhZHMgPSAiMCI7CiAgaWYgKCFza2luIHx8IHNraW4gPT0gImdyZXkiIHx8IHNr
aW4gPT0gImJsdWUiKSBza2luID0gImFtZWRpdW0iOwogIHRoaXMuUGxheVVuaSAoYXNzZXQsIHNj
cm9sbGFycmF5LCAxNzYsIDg4LCBza2luKTsKfQoKZnVuY3Rpb24gX0ZVR1VfUGxheUF1ZGlvU21h
bGwoIGFzc2V0LCBzY3JvbGxhcnJheSwgc2tpbiApIHsKICB0aGlzLnQgPSAiYXNtYWxsIjsKICB0
aGlzLnZpZGVvID0gZmFsc2U7CiAgdGhpcy5zaG93YWRzID0gIjAiOwogIGlmICghc2tpbiB8fCBz
a2luID09ICJncmV5IiB8fCBza2luID09ICJibHVlIikgc2tpbiA9ICJzbWFsbCI7CiAgdGhpcy5Q
bGF5VW5pIChhc3NldCwgc2Nyb2xsYXJyYXksIDE3NiwgMjMsIHNraW4pOwp9CgpmdW5jdGlvbiBf
RlVHVV9QbGF5QXVkaW9PbGRNZWRpdW0oIGFzc2V0LCBzY3JvbGxhcnJheSwgc2tpbiApIHsKICB0
aGlzLnQgICAgICAgID0gIm9sZG1lZGl1bWF1ZGlvIjsKICB0aGlzLnZpZGVvID0gZmFsc2U7CiAg
dGhpcy5zaG93YWRzID0gIjAiOwogIGlmICghc2tpbiB8fCBza2luID09ICJncmV5IiB8fCBza2lu
ID09ICJibHVlIikgc2tpbiA9ICJvbGRtZWRpdW1hdWRpbyI7CiAgdGhpcy5QbGF5VW5pIChhc3Nl
dCwgc2Nyb2xsYXJyYXksIDE4MCwgNjAsIHNraW4pOwp9CgpmdW5jdGlvbiBfRlVHVV9QbGF5QXVk
aW9PbGRMYXJnZSggYXNzZXQsIHNjcm9sbGFycmF5LCBza2luICkgewogIHRoaXMudCAgICAgICAg
PSAib2xkbGFyZ2VhdWRpbyI7CiAgdGhpcy52aWRlbyA9IGZhbHNlOwogIHRoaXMuc2hvd2FkcyA9
ICIwIjsKICB0aGlzLlBsYXlVbmkgKGFzc2V0LCBzY3JvbGxhcnJheSwgMzMyLCAxMTMsIHNraW4p
Owp9CgpmdW5jdGlvbiBfRlVHVV9Xcml0ZUN1cnRhaW5GcmFtZSgpIHsKCXZhciB4ID0gMDsKCXZh
ciB5ID0gMDsKCXZhciBoID0gdGhpcy5VQS5pc0lFID8gMjUwIDogNjA7Cgl2YXIgcCA9IHRoaXMu
VUEuaXNJRSA/ICIvIiArIEZVR1UuRnVndVZlcnNpb24gKyAiL2N1cnRhaW4uaHRtbCIgOiAiLyIg
KyBGVUdVLkZ1Z3VWZXJzaW9uICsgIi9jdXJ0YWluLmh0bWwiOwoJdGhpcy5jdXJ0YWlub2Zmc2V0
ID0gdGhpcy5VQS5pc0lFID8gMCA6IDE5MDsKCglpZiAodGhpcy5jdXJ0YWlueCAhPSBudWxsICYm
IHRoaXMuY3VydGFpbnkgIT0gbnVsbCkgewoJCXggPSBwYXJzZUludCh0aGlzLmN1cnRhaW54KTsK
CQl5ID0gcGFyc2VJbnQodGhpcy5jdXJ0YWlueSkgKyB0aGlzLmN1cnRhaW5vZmZzZXQ7CgkJdGhp
cy5jdXJ0YWluZXkgPSBwYXJzZUludCh0aGlzLmN1cnRhaW55KTsKCX0KCWVsc2UgaWYgKHRoaXMu
cGxheWVyeCAhPSBudWxsICYmIHRoaXMucGxheWVyeSAhPSBudWxsKSB7CgkJeCA9IHBhcnNlSW50
KHRoaXMucGxheWVyeCkgKyB0aGlzLndpZHRoICsgMTA7CgkJeSA9IHBhcnNlSW50KHRoaXMucGxh
eWVyeSkgKyB0aGlzLmN1cnRhaW5vZmZzZXQ7CgkJdGhpcy5jdXJ0YWluZXkgPSBwYXJzZUludCh0
aGlzLnBsYXllcnkpOwoJCXRoaXMuY3VydGFpbmN5ID0geTsKCX0KCWVsc2UgewoJCXggPSB0aGlz
LndpZHRoICsgMTA7CgkJeSA9IHRoaXMuY3VydGFpbm9mZnNldCArIDE7CgkJdGhpcy5jdXJ0YWlu
ZXkgPSAxOwoJfQoJdGhpcy5jdXJ0YWluY3kgPSB5OwoKCXZhciBzID0gJ3Bvc2l0aW9uOmFic29s
dXRlOyBsZWZ0OicreCsncHg7JwoJaWYgKHkpIHMgKz0gJyB0b3A6Jyt5KydweDsnOwoJaWYgKHRo
aXMuY3VydGFpbnogIT0gbnVsbCkKCQlzICs9ICJ6LWluZGV4OiIgKyB0aGlzLmN1cnRhaW56ICsg
JzsnOwoKCXZhciBmID0gJzxpZnJhbWUgaWQ9X0ZVR1VfQ1VSVEFJTl8gbmFtZT1fRlVHVV9DVVJU
QUlOXyB3aWR0aD0zMDAgaGVpZ2h0PScraCsnIHN0eWxlPSInK3MrJyIgZnJhbWVib3JkZXI9MCBt
YXJnaW5oZWlnaHQ9MCBtYXJnaW53aWR0aD0wIGFsbG93VHJhbnNwYXJlbmN5PSJ0cnVlIiBzcmM9
Imh0dHA6Ly8nICsgdGhpcy5ETFNlcnZlciArICcvJytwKyciPjwvaWZyYW1lPlxuJzsKCWRvY3Vt
ZW50LndyaXRlKGYpOwoJX2N1cnRhaW4gPSB3aW5kb3cuZnJhbWVzLl9GVUdVX0NVUlRBSU5fOwp9
CgpmdW5jdGlvbiBfRlVHVV9Vc2VyQWdlbnQoKSB7CiAgICB0aGlzLlVBU3RyaW5nICAgPSBuYXZp
Z2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCk7CiAgICB0aGlzLmlzQU9MICAgICAgPSAodGhp
cy5VQVN0cmluZy5pbmRleE9mKCJhb2wiKSAhPSAtMSk7CiAgICB0aGlzLmlzQU9MRXhwbG9yZXIg
ID0gKHRoaXMuVUFTdHJpbmcuaW5kZXhPZigiYW1lcmljYSBvbmxpbmUgYnJvd3NlciIpICE9IC0x
KTsKICAgIHRoaXMuaXNBT0w4ICAgICA9ICh0aGlzLlVBU3RyaW5nLmluZGV4T2YoImFvbCA4LjAi
KSAhPSAtMSB8fCB0aGlzLlVBU3RyaW5nLmluZGV4T2YoImFvbC84LjAiKSAhPSAtMSk7CiAgICB0
aGlzLmlzQU9MNyAgICAgPSAodGhpcy5VQVN0cmluZy5pbmRleE9mKCJhb2wgNy4wIikgIT0gLTEg
fHwgdGhpcy5VQVN0cmluZy5pbmRleE9mKCJhb2wvNy4wIikgIT0gLTEpOwogICAgdGhpcy5pc0FP
TDYgICAgID0gKHRoaXMuVUFTdHJpbmcuaW5kZXhPZigiYW9sIDYuMCIpICE9IC0xIHx8IHRoaXMu
VUFTdHJpbmcuaW5kZXhPZigiYW9sLzYuMCIpICE9IC0xKTsKICAgIHRoaXMuaXNBT0w1ICAgICA9
ICh0aGlzLlVBU3RyaW5nLmluZGV4T2YoImFvbCA1LjAiKSAhPSAtMSB8fCB0aGlzLlVBU3RyaW5n
LmluZGV4T2YoImFvbC81LjAiKSAhPSAtMSk7CiAgICB0aGlzLmlzQU9MNCAgICAgPSAodGhpcy5V
QVN0cmluZy5pbmRleE9mKCJhb2wgNC4wIikgIT0gLTEgfHwgdGhpcy5VQVN0cmluZy5pbmRleE9m
KCJhb2wvNC4wIikgIT0gLTEpOwogICAgdGhpcy5pc0FPTDMgICAgID0gKHRoaXMuVUFTdHJpbmcu
aW5kZXhPZigiYW9sIDMuMCIpICE9IC0xIHx8IHRoaXMuVUFTdHJpbmcuaW5kZXhPZigiYW9sLzMu
MCIpICE9IC0xKTsKICAgIHRoaXMuaXNDUyAgICAgICA9ICh0aGlzLlVBU3RyaW5nLmluZGV4T2Yo
ImNzIikgIT0gLTEpOwogICAgdGhpcy5pc0dlY2tvICAgID0gKHRoaXMuVUFTdHJpbmcuaW5kZXhP
ZigiZ2Vja28iKSAhPSAtMSk7CiAgICB0aGlzLmlzU2FmYXJpICAgPSAodGhpcy5VQVN0cmluZy5p
bmRleE9mKCJzYWZhcmkiKSAhPSAtMSk7CiAgICB0aGlzLmlzV2luZG93cyAgPSAodGhpcy5VQVN0
cmluZy5pbmRleE9mKCJ3aW5kb3dzIikgIT0gLTEpOwogICAgdGhpcy5pc1Zpc3RhICA9ICh0aGlz
LlVBU3RyaW5nLmluZGV4T2YoIndpbmRvd3MgbnQgNi4wIikgIT0gLTEpOwogICAgdGhpcy5pc01h
YyAgICAgID0gKCF0aGlzLmlzV2luZG93cyAmJiB0aGlzLlVBU3RyaW5nLmluZGV4T2YoIm1hYyIp
ICE9IC0xKTsKICAgIHRoaXMuaXNOUzYgICAgICA9ICh0aGlzLlVBU3RyaW5nLmluZGV4T2YoIm5l
dHNjYXBlNiIpICE9IC0xKTsKICAgIHRoaXMuaXNOUzcwICAgICA9ICh0aGlzLlVBU3RyaW5nLmlu
ZGV4T2YoIm5ldHNjYXBlLzcuMCIpICE9IC0xKTsKICAgIHRoaXMuaXNOUzcxICAgICA9ICh0aGlz
LlVBU3RyaW5nLmluZGV4T2YoIm5ldHNjYXBlLzcuMSIpICE9IC0xKTsKICAgIHRoaXMuaXNOUzcy
ICAgICA9ICh0aGlzLlVBU3RyaW5nLmluZGV4T2YoIm5ldHNjYXBlLzcuMiIpICE9IC0xKTsKICAg
IHRoaXMuaXNOUzggICAgICA9ICh0aGlzLlVBU3RyaW5nLmluZGV4T2YoIm5ldHNjYXBlLzgiKSAh
PSAtMSk7CiAgICB0aGlzLmlzSUUgICAgID0gKHRoaXMuVUFTdHJpbmcuaW5kZXhPZigibXNpZSIp
ICE9IC0xKTsKICAgIHRoaXMuaXNJRTUwICAgICA9ICh0aGlzLlVBU3RyaW5nLmluZGV4T2YoIm1z
aWUgNS4wIikgIT0gLTEpOwogICAgdGhpcy5pc0lFTWFjICAgID0gKHRoaXMuaXNNYWMgJiYgdGhp
cy5VQVN0cmluZy5pbmRleE9mKCJtc2llIikgIT0gLTEpOwogICAgdGhpcy5pc0ZpcmVmb3ggID0g
KHRoaXMuVUFTdHJpbmcuaW5kZXhPZigiZmlyZWZveCIpICE9IC0xKTsKICAgIHRoaXMuaXNOZXRz
Y2FwZSA9ICh0aGlzLlVBU3RyaW5nLmluZGV4T2YoIm5ldHNjYXBlIikgIT0gLTEpOwogICAgdGhp
cy5pc05ldHNjYXBlOCAgPSAodGhpcy5VQVN0cmluZy5pbmRleE9mKCJuZXRzY2FwZS84LjAiKSAh
PSAtMSk7CiAgICB0aGlzLmlzTlM4ICAgICAgPSAodGhpcy5VQVN0cmluZy5pbmRleE9mKCJuZXRz
Y2FwZS84IikgIT0gLTEpOwogICAgLy8gT2xkZXIgY29kZSBmb3IgRkYgZGV0ZWN0aW9uLgogICAg
dGhpcy5pc0ZpcmVmb3gyMCA9ICh0aGlzLlVBU3RyaW5nLmluZGV4T2YoImZpcmVmb3gvMi4wIikg
IT0gLTEpOwogICAgdGhpcy5pc0ZpcmVmb3gxNSA9ICh0aGlzLlVBU3RyaW5nLmluZGV4T2YoImZp
cmVmb3gvMS41IikgIT0gLTEpOwogICAgdGhpcy5pc0ZpcmVmb3gxMDYgPSAodGhpcy5VQVN0cmlu
Zy5pbmRleE9mKCJmaXJlZm94LzEuMC42IikgIT0gLTEpOwogICAgdGhpcy5pc0ZpcmVmb3gxMDUg
PSAodGhpcy5VQVN0cmluZy5pbmRleE9mKCJmaXJlZm94LzEuMC41IikgIT0gLTEpOwogICAgdGhp
cy5pc0ZpcmVmb3gxMDQgPSAodGhpcy5VQVN0cmluZy5pbmRleE9mKCJmaXJlZm94LzEuMC40Iikg
IT0gLTEpOwogICAgdGhpcy5pc0ZpcmVmb3gxMDMgPSAodGhpcy5VQVN0cmluZy5pbmRleE9mKCJm
aXJlZm94LzEuMC4zIikgIT0gLTEpOwogICAgdGhpcy5pc0ZpcmVmb3gxMDIgPSAodGhpcy5VQVN0
cmluZy5pbmRleE9mKCJmaXJlZm94LzEuMC4yIikgIT0gLTEpOwogICAgdGhpcy5pc0ZpcmVmb3gx
MDEgPSAodGhpcy5VQVN0cmluZy5pbmRleE9mKCJmaXJlZm94LzEuMC4xIikgIT0gLTEpOwogICAg
dGhpcy5pc0ZpcmVmb3gxMDAgPSAodGhpcy5VQVN0cmluZy5pbmRleE9mKCJmaXJlZm94LzEuMCIp
ICE9IC0xICYmICF0aGlzLmlzRmlyZWZveDEwNCAmJiAhdGhpcy5pc0ZpcmVmb3gxMDMgJiYgIXRo
aXMuaXNGaXJlZm94MTAyICYmICF0aGlzLmlzRmlyZWZveDEwMSAmJiAhdGhpcy5pc0ZpcmVmb3gx
MDUgJiYgIXRoaXMuaXNGaXJlZm94MTA2KTsKICAgIHRoaXMuaXNBT0w5UGx1cyA9ICh0aGlzLmlz
QU9MICYmICF0aGlzLmlzQU9MOCAmJiAhdGhpcy5pc0FPTDcgJiYKICAgICAgICAgICAgICAgICAg
ICAgICAhdGhpcy5pc0FPTDYgJiYgIXRoaXMuaXNBT0w1ICYmICF0aGlzLmlzQU9MNCAmJgogICAg
ICAgICAgICAgICAgICAgICAgICF0aGlzLmlzQU9MMyApOwogICAgLy8gVGhlIGZvbGxvd2luZyBj
b2RlIGlzIHRvIG1ha2UgdGhlIFVBIG9iamVjdCBtb3JlIHVzZWFibGUuCiAgICAvL2FsZXJ0KHRo
aXMuVUFTdHJpbmcpOwogICAgdGhpcy5vczsKICAgIHRoaXMuYnJvd3NlcjsKICAgIHRoaXMuYnJv
d3NlclZlcnNpb247CgogICAgLy8gT1MKICAgIGlmICh0aGlzLlVBU3RyaW5nLmluZGV4T2YoIndp
bmRvd3MgbnQgNS4xIikgIT0gLTEpIHRoaXMub3MgPSAiWFAiOwogICAgaWYgKHRoaXMuVUFTdHJp
bmcuaW5kZXhPZigid2luZG93cyBudCA1LjAiKSAhPSAtMSkgdGhpcy5vcyA9ICJXaW5kb3dzMjAw
MCI7CiAgICBpZiAodGhpcy5VQVN0cmluZy5pbmRleE9mKCJ3aW5kb3dzIG50IDQuMCIpICE9IC0x
KSB0aGlzLm9zID0gIldpbmRvd3NOVCI7CiAgICBpZiAodGhpcy5VQVN0cmluZy5pbmRleE9mKCJ3
aW4gOXggNC45MCIpICE9IC0xKSB0aGlzLm9zID0gIldpbmRvd3NNRSI7CiAgICBpZiAodGhpcy5V
QVN0cmluZy5pbmRleE9mKCJ3aW5kb3dzIDk4IikgIT0gLTEpIHRoaXMub3MgPSAiV2luZG93czk4
IjsKICAgIGlmICh0aGlzLlVBU3RyaW5nLmluZGV4T2YoIm1hYyBvcyB4IikgIT0gLTEpIHRoaXMu
b3MgPSAiT1NYIjsKICAgIC8vIEJyb3dzZXIuCiAgICBpZiAodGhpcy5VQVN0cmluZy5pbmRleE9m
KCJtc2llIikgIT0gLTEpIHRoaXMuYnJvd3NlciA9ICJJRSI7IAogICAgaWYgKHRoaXMuVUFTdHJp
bmcuaW5kZXhPZigiYW9sIikgIT0gLTEpIHRoaXMuYnJvd3NlciA9ICJBT0wiOwogICAgaWYgKHRo
aXMuVUFTdHJpbmcuaW5kZXhPZigibmV0c2NhcGUiKSAhPSAtMSkgdGhpcy5icm93c2VyID0gIk5l
dHNjYXBlIjsKICAgIGlmICh0aGlzLlVBU3RyaW5nLmluZGV4T2YoImZpcmVmb3giKSAhPSAtMSkg
dGhpcy5icm93c2VyID0gIkZpcmVmb3giOwogICAgaWYgKHRoaXMuVUFTdHJpbmcuaW5kZXhPZigi
c2FmYXJpIikgIT0gLTEpIHRoaXMuYnJvd3NlciA9ICJTYWZhcmkiOwogICAgLy8gQnJvd3NlciBW
ZXJzaW9uLgogICAgaWYgKHRoaXMuYnJvd3NlciA9PSAiSUUiKXsKCXZhciB0ZW1wQXJyYXkgPSB0
aGlzLlVBU3RyaW5nLnNwbGl0KCI7Iik7Cglmb3IgKHZhciBpPTA7IGkgPCB0ZW1wQXJyYXkubGVu
Z3RoOyBpKyspewoJICAgaWYgKHRlbXBBcnJheVtpXS5pbmRleE9mKCJtc2llIikgIT0gLTEpewoJ
CXRoaXMuYnJvd3NlclZlcnNpb24gPSB0ZW1wQXJyYXlbaV0uc3Vic3RyaW5nKDUsIHRlbXBBcnJh
eVtpXS5sZW5ndGgpOwoJICAgfQoJfQoJZGVsZXRlIHRlbXBBcnJheTsKICAgIH0KICAgIGlmICh0
aGlzLmJyb3dzZXIgPT0gIkFPTCIpewogICAgICAgIHZhciB0ZW1wQXJyYXkgPSB0aGlzLlVBU3Ry
aW5nLnNwbGl0KCIgIik7CiAgICAgICAgZm9yICh2YXIgaT0wOyBpIDwgdGVtcEFycmF5Lmxlbmd0
aDsgaSsrKXsKICAgICAgICAgICBpZiAodGVtcEFycmF5W2ldLmluZGV4T2YoIm5ldHNjYXBlIikg
IT0gLTEpewogICAgICAgICAgICAgICAgdGhpcy5icm93c2VyVmVyc2lvbiA9IHRlbXBBcnJheVtp
XS5zdWJzdHJpbmcoNCwgdGVtcEFycmF5W2ldLmxlbmd0aCk7CiAgICAgICAgICAgfQogICAgICAg
IH0KICAgICAgICBkZWxldGUgdGVtcEFycmF5OwogICAgfQogICAgaWYgKHRoaXMuYnJvd3NlciA9
PSAiRmlyZWZveCIpewogICAgICAgIHZhciB0ZW1wQXJyYXkgPSB0aGlzLlVBU3RyaW5nLnNwbGl0
KCIgIik7CiAgICAgICAgZm9yICh2YXIgaT0wOyBpIDwgdGVtcEFycmF5Lmxlbmd0aDsgaSsrKXsK
ICAgICAgICAgICBpZiAodGVtcEFycmF5W2ldLmluZGV4T2YoImZpcmVmb3giKSAhPSAtMSl7CiAg
ICAgICAgICAgICAgICB0aGlzLmJyb3dzZXJWZXJzaW9uID0gdGVtcEFycmF5W2ldLnN1YnN0cmlu
Zyg4LCB0ZW1wQXJyYXlbaV0ubGVuZ3RoKTsKICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAg
IGRlbGV0ZSB0ZW1wQXJyYXk7CiAgICB9CiAgICBpZiAodGhpcy5icm93c2VyID09ICJTYWZhcmki
KXsKICAgICAgICB2YXIgdGVtcEFycmF5ID0gdGhpcy5VQVN0cmluZy5zcGxpdCgiICIpOwogICAg
ICAgIGZvciAodmFyIGk9MDsgaSA8IHRlbXBBcnJheS5sZW5ndGg7IGkrKyl7CiAgICAgICAgICAg
aWYgKHRlbXBBcnJheVtpXS5pbmRleE9mKCJzYWZhcmkiKSAhPSAtMSl7CiAgICAgICAgICAgICAg
ICB0aGlzLmJyb3dzZXJWZXJzaW9uID0gdGVtcEFycmF5W2ldLnN1YnN0cmluZyg3LCB0ZW1wQXJy
YXlbaV0ubGVuZ3RoKTsKICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGRlbGV0ZSB0ZW1w
QXJyYXk7CiAgICB9CiAgICBpZiAodGhpcy5icm93c2VyID09ICJOZXRzY2FwZSIpewogICAgICAg
IHZhciB0ZW1wQXJyYXkgPSB0aGlzLlVBU3RyaW5nLnNwbGl0KCIgIik7CiAgICAgICAgZm9yICh2
YXIgaT0wOyBpIDwgdGVtcEFycmF5Lmxlbmd0aDsgaSsrKXsKICAgICAgICAgICBpZiAodGVtcEFy
cmF5W2ldLmluZGV4T2YoIm5ldHNjYXBlIikgIT0gLTEpewogICAgICAgICAgICAgICAgdGhpcy5i
cm93c2VyVmVyc2lvbiA9IHRlbXBBcnJheVtpXS5zdWJzdHJpbmcoOSwgdGVtcEFycmF5W2ldLmxl
bmd0aCk7CiAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBkZWxldGUgdGVtcEFycmF5Owog
ICAgfQp9CgpmdW5jdGlvbiBjaGVja0Jyb3dzZXJWZXJzaW9uKFVBLCBjaGVja1R5cGUsIHZDb21w
KXsKICAgIGNoZWNrVHlwZSA9IGNoZWNrVHlwZS50b1VwcGVyQ2FzZSgpOwogICAgdmFyIHRlbXBW
ZXJzaW9uQXJyYXkgPSBVQS5icm93c2VyVmVyc2lvbi5zcGxpdCgiLiIpOwogICAgdmFyIHRlbXBD
aGVja0FycmF5ID0gdkNvbXAuc3BsaXQoIi4iKTsKICAgIHZhciBzdWNjZXNzID0gZmFsc2U7Cgog
ICAgLy8gQ2hlY2sgZm9yIExlc3MgVGhhbi4KICAgIGlmIChjaGVja1R5cGUgPT0gIkxUIikgewog
ICAgCWZvciAodmFyIGk9MDsgaTx0ZW1wVmVyc2lvbkFycmF5Lmxlbmd0aDsgaSsrKXsKICAgICAg
CWlmICh0ZW1wVmVyc2lvbkFycmF5W2ldID4gdGVtcENoZWNrQXJyYXlbaV0pIGJyZWFrOwogICAg
ICAgIGlmICh0ZW1wVmVyc2lvbkFycmF5W2ldIDwgdGVtcENoZWNrQXJyYXlbaV0pewogICAgICAg
IAlzdWNjZXNzID0gdHJ1ZTsKICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgfQoJCX0K
CiAgICAvLyBDaGVjayBmb3IgR3JlYXRlciBUaGFuLgogICAgaWYgKGNoZWNrVHlwZSA9PSAiR1Qi
KXsKICAgICAgICBmb3IgKHZhciBpPTA7IGk8dGVtcFZlcnNpb25BcnJheS5sZW5ndGg7IGkrKyl7
CiAgICAgICAgICBpZiAodGVtcFZlcnNpb25BcnJheVtpXSA+IHRlbXBDaGVja0FycmF5W2ldKSB7
CiAgICAgICAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTsKICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIHJldHVybiBzdWNjZXNzOwp9CgpmdW5jdGlv
biBkZXRlY3RGbGFzaCgpewogIHZhciBmbGFzaFZlcnNpb247CiAgaWYgKG5hdmlnYXRvci51c2Vy
QWdlbnQudG9Mb3dlckNhc2UoKS5pbmRleE9mKCJtc2llIikgIT0gLTEpewogICAgICBmb3IodmFy
IGk9NjsgaTw9MTU7IGkrKyl7CiAgICAgICAgICAgICB0cnl7CiAgICAgICAgICAgICAgICB2YXIg
Zmxhc2ggPSBuZXcgQWN0aXZlWE9iamVjdCgiU2hvY2t3YXZlRmxhc2guU2hvY2t3YXZlRmxhc2gu
IiArIGkpOwogICAgICAgICAgICAgICAgZmxhc2hWZXJzaW9uID0gaTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIGNhdGNoKGUpewogICAgICAgICAgICAgfQogICAgICB9CiAgfWVsc2V7CiAg
ICAgIGlmIChuYXZpZ2F0b3IucGx1Z2lucyAhPSBudWxsICYmIG5hdmlnYXRvci5wbHVnaW5zLmxl
bmd0aCA+IDApIHsKICAgICAgICAgICAgaWYgKG5hdmlnYXRvci5wbHVnaW5zWydTaG9ja3dhdmUg
Rmxhc2gnXSkKICAgICAgICAgICAgICBmbGFzaFZlcnNpb24gPSBuYXZpZ2F0b3IucGx1Z2luc1sn
U2hvY2t3YXZlIEZsYXNoJ10uZGVzY3JpcHRpb24uc3BsaXQoIiAiKVsyXTsKICAgICAgfQogIH0K
ICByZXR1cm4gZmxhc2hWZXJzaW9uOwp9CgovLyBSZWFkaW5nIGNvb2tpZXMuCmZ1bmN0aW9uIF9E
TF9SZWFkQ29va2llKG5hbWUpIHsKICAgIGlmKGRvY3VtZW50LmNvb2tpZSA9PSAnJykgewogICAg
ICByZXR1cm4gZmFsc2U7CiAgICB9CiAgICBlbHNlIHsgLy8gdGhlcmUgaXMgYSBjb29raWUKICAg
ICAgdmFyIGZpcnN0Q2hhciwgbGFzdENoYXI7CiAgICAgIHZhciB0aGVCaWdDb29raWUgPSBkb2N1
bWVudC5jb29raWU7CiAgICAgIGZpcnN0Q2hhciA9IHRoZUJpZ0Nvb2tpZS5pbmRleE9mKG5hbWUp
OwogICAgICB2YXIgTk4ySGFjayA9IGZpcnN0Q2hhciArIG5hbWUubGVuZ3RoOwogICAgICBpZigo
Zmlyc3RDaGFyICE9IC0xKSAmJiAodGhlQmlnQ29va2llLmNoYXJBdChOTjJIYWNrKSA9PSAnPScp
KSB7CiAgICAgICAgZmlyc3RDaGFyICs9IG5hbWUubGVuZ3RoICsgMTsKICAgICAgICBsYXN0Q2hh
ciA9IHRoZUJpZ0Nvb2tpZS5pbmRleE9mKCc7JywgZmlyc3RDaGFyKTsKICAgICAgICBpZihsYXN0
Q2hhciA9PSAtMSkgewogICAgICAgICAgbGFzdENoYXIgPSB0aGVCaWdDb29raWUubGVuZ3RoOwog
ICAgICAgIH0KICAgICAgICByZXR1cm4gdW5lc2NhcGUodGhlQmlnQ29va2llLnN1YnN0cmluZyhm
aXJzdENoYXIsIGxhc3RDaGFyKSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgLy8gSWYgdGhlcmUg
d2FzIG5vIGNvb2tpZSBvZiB0aGF0IG5hbWUsIHJldHVybiBmYWxzZS4KICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgIH0KICAgIH0KfQoKCmZ1bmN0aW9uIGdldFByZWZzKCkgewogICAgICAgIHZh
ciBjb29raWUgPSBfRExfUmVhZENvb2tpZSgiRlVHVV9QUkVGUyIpOwogICAgICAgIHZhciBwcmVm
cyA9ICBuZXcgQXJyYXkoNCk7CgogICAgICAgIHByZWZzLnNwZWVkID0gNDYwMDAwOwogICAgICAg
IHByZWZzLnZvbHVtZSA9IDUwOwogICAgICAgIHByZWZzLmNjID0gMDsKICAgICAgICBwcmVmcy5i
cmEgPSAwOyAvL2JpdHJhdGUgYWxlcnQKCiAgICAgICAgaWYgKGNvb2tpZSkgewogICAgICAgICAg
ICAgICAgdmFyIHAgPSBjb29raWUuc3BsaXQoL1wuLyk7CiAgICAgICAgICAgICAgICAgICAgICAg
IHByZWZzLnNwZWVkID0gKHR5cGVvZihwWzBdKSAhPSAidW5kZWZpbmVkIikgPyBwWzBdIDogNDYw
MDAwOwogICAgICAgICAgICAgICAgICAgICAgICBwcmVmcy52b2x1bWUgPSAodHlwZW9mKHBbMV0p
ICE9ICJ1bmRlZmluZWQiKSA/IHBbMV0gOiA1MDsKICAgICAgICAgICAgICAgICAgICAgICAgcHJl
ZnMuY2MgPSAodHlwZW9mKHBbMl0pICE9ICJ1bmRlZmluZWQiKSA/IHBbMl0gOiAwOwogICAgICAg
ICAgICAgICAgICAgICAgICBwcmVmcy5icmEgPSAodHlwZW9mKHBbM10pICE9ICJ1bmRlZmluZWQi
KSA/IHBbM10gOiAwOwogICAgICAgIH0KICAgICAgICByZXR1cm4gcHJlZnM7Cn0KCgp2YXIgRlVH
VSA9IG5ldyBfRnVndSgpOwpGVUdVLkRMU2VydmVyID0gJ25zdmFwcC1wcm9kLXJyLnN0cmVhbS5h
b2wuY29tOjgwJztGVUdVLkZ1Z3VWZXJzaW9uID0gJzI4Mic7Cjwvc2NyaXB0PgoKPC9oZWFkPgoK
PGJvZHkgID4KCjxkaXYgaWQ9InZpZGVvUGxheWVyIj4KCgoKPHNjcmlwdD4KRlVHVS5waWQgPSAi
REwiOwpGVUdVLmNvdW50cnkgPSAiVVMiOwpGVUdVLmxvY2FsZSA9ICJVUyI7CkZVR1UuY29tcGFu
eSA9ICJBT0wiOwpGVUdVLnZlcnNpb24gPSAiMS4wIjsKRlVHVS5icmFuZCA9ICJBT0wiOwpGVUdV
Lmxlbmd0aCA9ICIyNDYiOwpGVUdVLnNob3dhZHMgPSAiMSI7CkZVR1Uuc2tpbiA9ICJncmV5IjsK
RlVHVS5wbW1zaWQgPSAiMTgwMzM3OSI7CkZVR1UucmVzdGFydHVybCA9ICJtb2RlPTAmcG1tc2lk
PTE4MDMzNzkmcmVmZXJlcj1odHRwJTNBLy9tdXNpYy5hb2wuY29tL3NvbmdzL25ld3NvbmdzIjsK
RlVHVS5hc3NldEluZm8gPSB7CglnZW5yZTogJ01VU0lDIC0gUG9wJywKCWZyYW5jaGlzZTogIk1V
U0lDOiBBdWRpbyBHZW5lcmFsIiwKCXN1cmZhY2VQb2ludDogJ3VzLmFvbC5tdXNpYy5uZXdzb25n
c19uZXdzb25ncycKfQpGVUdVLmNwaWQgPSAicG1tc2lkOjE4MDMzNzkiOwpGVUdVLlBsYXlBdWRp
b0xhcmdlKCJwbW1zaWQ6MTgwMzM3OSIsIFsgIkZlcmdpZSIsICJUaGUgRHV0Y2hlc3MiLCAiXCdH
bGFtb3JvdXNcJyBmZWF0LiBMdWRhY3JpcyIgXSwgImdyZXkiKTsKPC9zY3JpcHQ+CjwvZGl2Pgo8
L2JvZHk+CjwvaHRtbD4KCgoKCgoKCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>15077</attachid>
            <date>2007-06-15 21:17:38 -0700</date>
            <delta_ts>2007-06-15 21:17:38 -0700</delta_ts>
            <desc>The qt script file referenced in Javascript console</desc>
            <filename>qt.js</filename>
            <type>text/plain</type>
            <size>45312</size>
            <attacher name="David Carson">dacarson</attacher>
            
              <data encoding="base64">dHJ5IHsKCWlmIChpc01hYyAmJiBpc0FPTCB8fCBpc0ZpcmVGb3ggJiYgY2hlY2tCcm93c2VyVmVy
c2lvbihVQSwgImd0IiwgIjEuMC43IikpCgl7CiAgCXZhciBpdGVtID0gVG9wUGxheUxpc3QuZ2V0
Q3VycmVudEl0ZW0oKTsKICAJdHJhY2UgKCJUb3BQbGF5TGlzdCBpcyAiICsgVG9wUGxheUxpc3Qg
KyAiLCBUb3BQbGF5TGlzdC5jdXJyZW50SXRlbUluZGV4OiAiICsgVG9wUGxheUxpc3QuY3VycmVu
dEl0ZW1JbmRleCArICIgVG9wUGxheUxpc3QuaXRlbXMubGVuZ3RoIGlzICIgKyBUb3BQbGF5TGlz
dC5pdGVtcy5sZW5ndGggKyAiLCBpdGVtIGlzOiAiICsgaXRlbSk7CgogICAgUGxheUxpc3QgPSB7
IGl0ZW1zOiBbIGl0ZW0gXSB9OwogICAgUGxheUxpc3QuY3VycmVudEl0ZW1JbmRleCA9IDA7CiAg
ICBQbGF5TGlzdC5wb2xsaW5nSW5mbyA9IG51bGw7CiAgICBQbGF5TGlzdC5nZXRDdXJyZW50SXRl
bSA9IF9GdWd1UGxheUxpc3RfZ2V0Q3VycmVudEl0ZW07CiAgICBQbGF5TGlzdC5nZXRQb2xsaW5n
SW5mbyA9IF9GdWd1UGxheUxpc3RfZ2V0UG9sbGluZ0luZm87CiAgICBQbGF5TGlzdC5zZXRQb2xs
aW5nSW5mbyA9IF9GdWd1UGxheUxpc3Rfc2V0UG9sbGluZ0luZm87CiAgICBQbGF5TGlzdC5zZXRQ
b2xsaW5nSW5mbygpOwoJfQp9Y2F0Y2goZSl7fQoKZnVuY3Rpb24gRGVJbml0KCkgewogIHJldHVy
bjsKfQoKdmFyIEJQaW50OwpmdW5jdGlvbiB1cGRhdGVCUCgpIHsKICBpZiAoJCgiYnAiKSkgewog
ICAgdmFyIHAgPSBkb2N1bWVudC5RVFBsYXllck9iamVjdC5HZXRNYXhCeXRlc0xvYWRlZCgpIDsK
ICAgIHAgPSBNYXRoLnJvdW5kKChwIC8gZG9jdW1lbnQuUVRQbGF5ZXJPYmplY3QuR2V0TW92aWVT
aXplKCkpICogMTAwKTsKICAgICQoInByb2dyZXNzU2xpZGVyQmdNYXNrIikuc3R5bGUud2lkdGgg
PSBzZWVrQmFyTGVuZ3RoICogKHAgLyAxMDApICsgInB4IjsKICAgICQoImJwRW1iZWQiKS5zdHls
ZS5kaXNwbGF5ID0gImJsb2NrIjsKICAgICQoImJwIikuc3R5bGUudmlzaWJpbGl0eSA9ICJ2aXNp
YmxlIjsKICAgICQoImJwIikuaW5uZXJIVE1MID0gIiI7CiAgICAkKCJicCIpLmlubmVySFRNTCA9
IHA7CiAgICAkKCJicCIpLmlubmVySFRNTCArPSAiXCUiOwoKICAgIGlmIChwID4gOTkpewoJCQlj
bGVhckJQKCk7CiAgICB9CiAgfQoKfQoKZnVuY3Rpb24gY2xlYXJCUCgpIHsKICAkKCJwcm9ncmVz
c1NsaWRlckJnTWFzayIpLnN0eWxlLndpZHRoID0gc2Vla0Jhckxlbmd0aCArIChwYXJzZUludChj
c3MoJCgicHJvZ3Jlc3NTbGlkZXIiKSwgIndpZHRoIikpLzIpIC0gMiArICJweCI7CiAgaWYgKCQo
ImJwIikpIHsKICAgICQoImJwRW1iZWQiKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwogICAgJCgi
YnAiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7CiAgfQoJY2xlYXJJbnRlcnZhbChCUGlu
dCk7CiAgcmV0dXJuOwp9CgoKZnVuY3Rpb24gVXBkYXRlRGVidWdUeHQoKSB7Cgl0cnl7CiAgZGVi
dWdUeHQgPSAKICAgICI8Yj5GdWd1IERlYnVnIFdpbmRvdyEgLSAiICsgZnVndV9ob3N0bmFtZSAr
ICIgLSAgYnVpbGQ6ICIgKyBmdWd1X3ZlcnNpb24gKyAiPC9iPjxicj4iICsKICAgICI8dGFibGUg
Ym9yZGVyPTE+IiArCiAgICAiPHRyPjx0ZD5RVFVybDwvdGQ+PHRkPiAiICsgR2V0Q3VycmVudEl0
ZW1VcmwoKSAgKyAiPC90ZD48L3RyPiIgKwogICAgIjx0cj48dGQ+Z2V0UG9sbGluZ0luZm88L3Rk
Pjx0ZD4gIiArIFBsYXlMaXN0LmdldFBvbGxpbmdJbmZvKCkgKyAiPC90ZD48L3RyPiIgKwogICAg
Ijx0cj48dGQ+c2NyZWVubmFtZTwvdGQ+PHRkPiAiICsgc2NyZWVubmFtZSArICI8L3RkPjwvdHI+
IiArCgogICAgIjx0cj48dGQ+bG9jYWxlPC90ZD48dGQ+ICIgKyBMT0NBTEUgKyAiPC90ZD48L3Ry
PiIgKwogICAgIjx0cj48dGQ+YXNzZXRJbmZvLmZyYW5jaGlzZTwvdGQ+PHRkPiAiICsgdW5lc2Nh
cGUoYXNzZXRJbmZvLmZyYW5jaGlzZSkgKyAiPC90ZD48L3RyPiIgKwogICAgIjx0cj48dGQ+dWlk
PC90ZD48dGQ+ICIgKyB1aWQgKyAiPC90ZD48L3RyPiIgKwogICAgIjx0cj48dGQ+cGlkPC90ZD48
dGQ+ICIgKyBwaWQgKyAiPC90ZD48L3RyPiIgKwogICAgIjx0cj48dGQ+emlwY29kZTwvdGQ+PHRk
PiAiICsgemlwY29kZSArICI8L3RkPjwvdHI+IiArCiAgICAiPHRyPjx0ZD5Ub3BQbGF5bGlzdCB1
cmw8L3RkPjx0ZD4gPGEgdGFyZ2V0PV9ibGFuayBocmVmPSciICArIHRvcF9wbGF5bGlzdF91cmwg
KyAiJz4iICsgdG9wX3BsYXlsaXN0X3VybCArICI8L2E+PC90ZD48L3RyPiIgKwogICAgIjx0cj48
dGQ+Q2hpbGRQbGF5bGlzdCB1cmw8L3RkPjx0ZD4gPGEgdGFyZ2V0PV9ibGFuayBocmVmPSciICAr
IGNoaWxkX3BsYXlsaXN0X3VybCArICInPiIgKyBjaGlsZF9wbGF5bGlzdF91cmwgKyAiPC9hPjwv
dGQ+PC90cj4iICsKICAgICI8dHI+PHRkPkNvbXBhbnk8L3RkPjx0ZD4gIiAgKyBjb21wYW55ICsg
IjwvdGQ+PC90cj4iICsKICAgICI8dHI+PHRkPkNvdW50cnk8L3RkPjx0ZD4gIiAgKyBjb3VudHJ5
ICsgIjwvdGQ+PC90cj4iICsKICAgICI8dHI+PHRkPkJyYW5kPC90ZD48dGQ+ICIgICsgYnJhbmQg
KyAiPC90ZD48L3RyPiIgKwogICAgIjwvdGFibGU+IjsKCX1jYXRjaChlKXt9Cn0JCgpzZXRJbnRl
cnZhbCggJ1VwZGF0ZURlYnVnVHh0KCknLCAxMDAwICk7Cgp2YXIgc3BlZWRQb3MgPSAwOwpmdW5j
dGlvbiBjaGFuZ2VTcGVlZChzcGVlZCkgewogIHRyeSB7CgkJbWFjdGlvbiA9IEFTUEVFRDsKICAg
IE1ha2VJdFN0b3AoKTsKICAgIGJ3aGludCA9IHNwZWVkOwogICAgTWFrZUl0UGxheSgpOwogIH0K
ICBjYXRjaChlKSB7CiAgICB0cmlnZ2VyRXZlbnQoUExBWUVSX0VYQ0VQVElPTiwgImNoYW5nZVNw
ZWVkKCk6ICIgKyBlLm1lc3NhZ2UpOwogIH0KfSAgICAgICAKCmZ1bmN0aW9uIE1ha2VJdFBsYXko
KSB7CiAgLy9lbGFwc2VySW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgndXBkYXRlUG9zKCknLDUwMCk7
CiAgLy9hbGVydCggIk1ha2VJdFBsYXk6IFBsYXlMaXN0OiAiICsgUGxheUxpc3QgKTsKCSQoInBv
c3RSb2xsIikuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKCWlmIChtYWN0aW9uID09ICIiKSBtYWN0
aW9uID0gQVBMQVk7CiAgaWYgKCAhUGxheUxpc3QgKSB7CiAgICAvLyBsb2FkIENoaWxkUGxheWxp
c3QgaWYgbmVlZGVkLCB3ZSdsbCBnZXQgY2FsbGVkCiAgICAvLyBhZ2FpbiBvbmNlcyBpdHMgbG9h
ZGVkCiAgICBnZXRDaGlsZFBsYXlMaXN0KCk7CiAgICB0b3RhbFRpbWUgPSAtMTsKICAgIHJldHVy
bjsKICB9CgogIC8vYWxlcnQgKCIgc2V0dGluZyBzb3VyY2U6ICIgKyBQbGF5TGlzdC5pdGVtc1tQ
bGF5TGlzdC5jdXJyZW50SXRlbUluZGV4XS5xdHVybCApOwogIC8vdmFyIHRlc3RQbGF5U3RhdGUg
PSAzOyAvL2RvY3VtZW50LlFUUGxheWVyT2JqZWN0LkdldFBsdWdpblN0YXR1cygpOwogIHZhciB0
ZXN0UGxheVN0YXRlID0gZG9jdW1lbnQuUVRQbGF5ZXJPYmplY3QuR2V0UGx1Z2luU3RhdHVzKCk7
CiAgLy9pZiAodGVzdFBsYXlTdGF0ZSAhPSA0ICkgCiAgaWYgKFRvcFBsYXlMaXN0Lml0ZW1zLmxl
bmd0aCA+IDEgfHwgKHRlc3RQbGF5U3RhdGUgIT0gIlBsYXlhYmxlIiAmJiB0ZXN0UGxheVN0YXRl
ICE9ICJDb21wbGV0ZSIpICkKICB7IAogICAgaWYgKFBsYXlMaXN0Lml0ZW1zW1BsYXlMaXN0LmN1
cnJlbnRJdGVtSW5kZXhdLnF0dXJsKQoJZG9jdW1lbnQuUVRQbGF5ZXJPYmplY3QuU2V0VVJMICgg
IFBsYXlMaXN0Lml0ZW1zW1BsYXlMaXN0LmN1cnJlbnRJdGVtSW5kZXhdLnF0dXJsICk7CiAgICBl
bHNlIGlmIChQbGF5TGlzdC5pdGVtc1tQbGF5TGlzdC5jdXJyZW50SXRlbUluZGV4XS5xdEJCVXJs
KQogICAgICAgIGRvY3VtZW50LlFUUGxheWVyT2JqZWN0LlNldFVSTCAoICBQbGF5TGlzdC5pdGVt
c1tQbGF5TGlzdC5jdXJyZW50SXRlbUluZGV4XS5xdEJCVXJsICk7CiAgICBlbHNlIGlmIChQbGF5
TGlzdC5pdGVtc1tQbGF5TGlzdC5jdXJyZW50SXRlbUluZGV4XS5xdEJCVVJMKQogICAgICAgIGRv
Y3VtZW50LlFUUGxheWVyT2JqZWN0LlNldFVSTCAoICBQbGF5TGlzdC5pdGVtc1tQbGF5TGlzdC5j
dXJyZW50SXRlbUluZGV4XS5xdEJCVVJMICk7CiAgICBlbHNlIGlmIChQbGF5TGlzdC5pdGVtc1tQ
bGF5TGlzdC5jdXJyZW50SXRlbUluZGV4XS5xdExCVVJMKQogICAgICAgIGRvY3VtZW50LlFUUGxh
eWVyT2JqZWN0LlNldFVSTCAoICBQbGF5TGlzdC5pdGVtc1tQbGF5TGlzdC5jdXJyZW50SXRlbUlu
ZGV4XS5xdExCVVJMICk7CiAgICBlbHNlIGlmIChQbGF5TGlzdC5pdGVtc1tQbGF5TGlzdC5jdXJy
ZW50SXRlbUluZGV4XS5xdE5CVXJsKQogICAgICAgIGRvY3VtZW50LlFUUGxheWVyT2JqZWN0LlNl
dFVSTCAoICBQbGF5TGlzdC5pdGVtc1tQbGF5TGlzdC5jdXJyZW50SXRlbUluZGV4XS5xdE5CVXJs
ICk7CiAgfQoKICBpZiAoaXNDaGFwdGVyZWRBc3NldCgpKSB7ICAgIAogICAgdHJ5IHsKICAgICAg
aWYoYXBvcyAhPSAwKQogICAgICB7CiAgICAgICAgLy9UaW1pbmcgaXNzdWUgYWJvdXQgdm9sdW1l
IGZvciBzdWJzZXF1ZW50IGNoYXB0ZXJzCiAgICAgICAgZm9yKHZhciBpPTA7IGk8MzAwMDAwMDsg
aSsrKQogICAgICAgICAgaSsrOwogICAgICAgIHNldFZvbHVtZSg1MCk7CiAgICAgIH0KICAgICAg
ZG9jdW1lbnQuUVRQbGF5ZXJPYmplY3QuU2V0U3RhcnRUaW1lKHBhcnNlSW50KGFwb3MpKTsKICAg
ICAgaWYobHBvcyA9PSAtMSkKICAgICAgICBscG9zID0gZ2V0TW92aWVMZW5ndGgoKTsKICAgICAg
ZG9jdW1lbnQuUVRQbGF5ZXJPYmplY3QuU2V0RW5kVGltZShwYXJzZUludChscG9zKSk7CiAgICAg
IG1vdmllTGVuZ3RoID0gbHBvcyAtIGFwb3M7CiAgICAgIGN1cnJlbnRQb3MgPSBnZXRDdXJyZW50
UG9zaXRpb24oKTsKICAgICAgY3VycmVudFBvcyA9IG5ldyBOdW1iZXIoIGN1cnJlbnRQb3MgKTsg
Ly8gaW5jYXNlIGl0J3MgYSBzdHJpbmcKICAgICAgY3VycmVudFBvcyA9IGN1cnJlbnRQb3MgLSBh
cG9zOwogICAgfSBjYXRjaCAoZSkgewogICAgfQogIH0KCiAgZWxhcHNlckludGVydmFsID0gc2V0
SW50ZXJ2YWwoJ3VwZGF0ZVBvcygpJyw1MDApOwogIERhbGFpTGxhbWFTeW5jLlN0YXJ0UGxheSgp
OwogIE1ha2VJdFNob3cgKCk7CgoJQlBpbnQgPSBzZXRJbnRlcnZhbCAoInVwZGF0ZUJQKCkiLCAx
MDApOwoKICBMb2coICJQTEFZSU5HIiApOyAvLyBMT0dJVAogIExDTG9nKCAiUExBWUlORyIgKTsg
Ly8gU2VuZCBFdmVudCBOb3RpZmljYXRpb24gdG8gTEMKICB0cmlnZ2VyRXZlbnQoUExBWUVSX1BM
QVkpOwoJc2VuZFRyYWNraW5nUmVxdWVzdChQbGF5TGlzdC5nZXRDdXJyZW50SXRlbSgpKTsKCiAg
c2V0X3Njcm9sbF9hcnJheSggR2V0Q3VycmVudEl0ZW1TY3JvbGxUZXh0KCkgKTsKCiAgIGlmICgk
KCJwcm9ncmVzc1NsaWRlckRpcyIpKSB7CiAgICBpZiAoc2Vla1VJX2VuYWJsZWQpIHsKICAgICAg
JCgicHJvZ3Jlc3NTbGlkZXIiKS5zdHlsZS52aXNpYmlsaXR5ID0gInZpc2libGUiOwogICAgICBp
ZiAoJCgicHJvZ3Jlc3NTbGlkZXJCZyIpKSB7CiAgICAgICAgJCgicHJvZ3Jlc3NTbGlkZXJCZyIp
LnN0eWxlLnZpc2liaWxpdHkgPSAidmlzaWJsZSI7CgkJCQkkKCJwcm9ncmVzc1NsaWRlckJnTWFz
ayIpLnN0eWxlLnZpc2liaWxpdHkgPSAidmlzaWJsZSI7CiAgICAgIH0KICAgICAgJCgicHJvZ3Jl
c3NTbGlkZXJEaXMiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7CiAgICAgIGlmICgkKCJ1
aVByb2dyZXNzU2xpZGVyIikpIHsKICAgICAgICAkKCJ1aVByb2dyZXNzU2xpZGVyIikuc3R5bGUu
dmlzaWJpbGl0eSA9ICJ2aXNpYmxlIjsKICAgICAgfQogICAgfSBlbHNlIHsKICAgICAgJCgicHJv
Z3Jlc3NTbGlkZXIiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7CiAgICAgIGlmICgkKCJw
cm9ncmVzc1NsaWRlckJnIikpIHsKICAgICAgICAkKCJwcm9ncmVzc1NsaWRlckJnIikuc3R5bGUu
dmlzaWJpbGl0eSA9ICJoaWRkZW4iOwoJCQkJJCgicHJvZ3Jlc3NTbGlkZXJCZ01hc2siKS5zdHls
ZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7CiAgICAgIH0KICAgICAgJCgicHJvZ3Jlc3NTbGlkZXJE
aXMiKS5zdHlsZS52aXNpYmlsaXR5ID0gInZpc2libGUiOwogICAgICBpZiAoJCgidWlQcm9ncmVz
c1NsaWRlciIpKSB7CiAgICAgICAgJCgidWlQcm9ncmVzc1NsaWRlciIpLnN0eWxlLnZpc2liaWxp
dHkgPSAiaGlkZGVuIjsKICAgICAgfQogICAgfQogICB9CgogICBpZiAoJCgicHJldmlvdXNEaXMi
KSAmJiAkKCJwcmV2aW91cyIpKSB7CiAgICBpZiAoYmFja1VJX2VuYWJsZWQpIHsKICAgICAgJCgi
cHJldmlvdXMiKS5zdHlsZS52aXNpYmlsaXR5ID0gInZpc2libGUiOwogICAgICAkKCJwcmV2aW91
c0RpcyIpLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKICAgIH0gZWxzZSB7CiAgICAgICQo
InByZXZpb3VzIikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOwogICAgICAkKCJwcmV2aW91
c0RpcyIpLnN0eWxlLnZpc2liaWxpdHkgPSAidmlzaWJsZSI7CiAgICB9CiAgIH0KCiAgIGlmICgk
KCJzdG9wRGlzIikpIHsKICAgIGlmIChzdG9wVUlfZW5hYmxlZCkgewogICAgICAkKCJzdG9wIiku
c3R5bGUudmlzaWJpbGl0eSA9ICJ2aXNpYmxlIjsKICAgICAgJCgic3RvcERpcyIpLnN0eWxlLnZp
c2liaWxpdHkgPSAiaGlkZGVuIjsKICAgIH0gZWxzZSB7CiAgICAgICQoInN0b3AiKS5zdHlsZS52
aXNpYmlsaXR5ID0gImhpZGRlbiI7CiAgICAgICQoInN0b3BEaXMiKS5zdHlsZS52aXNpYmlsaXR5
ID0gInZpc2libGUiOwogICAgfQogICB9CgogICB0cnkKICAgewogICBpZiAoJCgicHJlZmVyZW5j
ZXMiKSkgewogICAgaWYgKHByZWZzVUlfZW5hYmxlZCkgewogICAgICAvLyQoInByZWZlcmVuY2Vz
Iikuc3R5bGUudmlzaWJpbGl0eSA9ICJ2aXNpYmxlIjsKICAgICAgJCgicHJlZmVyZW5jZXMiKS5z
dHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7CiAgICB9IGVsc2UgewogICAgICAkKCJwcmVmZXJl
bmNlcyIpLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKICAgIH0KICAgfQogICB9IGNhdGNo
ICggZSApIHsgCiAgICAgLy8gbm8gcHJlZnMgbGluayAKICAgfQoKICAgaWYgKCQoInBsYXlEaXMi
KSkgewogICAgaWYgKHBsYXlVSV9lbmFibGVkKSB7CiAgICAgICQoInBsYXkiKS5zdHlsZS52aXNp
YmlsaXR5ID0gInZpc2libGUiOwogICAgICAkKCJwbGF5RGlzIikuc3R5bGUudmlzaWJpbGl0eSA9
ICJoaWRkZW4iOwogICAgfSBlbHNlIHsKICAgICAgJCgicGxheSIpLnN0eWxlLnZpc2liaWxpdHkg
PSAiaGlkZGVuIjsKICAgICAgJCgicGxheURpcyIpLnN0eWxlLnZpc2liaWxpdHkgPSAidmlzaWJs
ZSI7CiAgICB9CiAgIH0KCiAgIGlmICgkKCJwYXVzZURpcyIpKSB7CiAgICBpZiAocGF1c2VVSV9l
bmFibGVkKSB7CiAgICAgICQoInBhdXNlIikuc3R5bGUudmlzaWJpbGl0eSA9ICJ2aXNpYmxlIjsK
ICAgICAgJCgicGF1c2VEaXMiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7CiAgICB9IGVs
c2UgewogICAgICAkKCJwYXVzZSIpLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKICAgICAg
JCgicGF1c2VEaXMiKS5zdHlsZS52aXNpYmlsaXR5ID0gInZpc2libGUiOwogICAgfQogICB9Cgog
ICBpZiAoJCgibmV4dERpcyIpKSB7CiAgICBpZiAobmV4dFVJX2VuYWJsZWQpIHsKICAgICAgJCgi
bmV4dCIpLnN0eWxlLnZpc2liaWxpdHkgPSAidmlzaWJsZSI7CiAgICAgICQoIm5leHREaXMiKS5z
dHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7CiAgICB9IGVsc2UgewogICAgICAkKCJuZXh0Iiku
c3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOwogICAgICAkKCJuZXh0RGlzIikuc3R5bGUudmlz
aWJpbGl0eSA9ICJ2aXNpYmxlIjsKICAgIH0KICAgfQoKICAgaWYgKCQoIm11dGVEaXMiKSkgewog
ICAgaWYgKG11dGVVSV9lbmFibGVkKSB7CiAgICAgICQoIm11dGUiKS5zdHlsZS52aXNpYmlsaXR5
ID0gInZpc2libGUiOwogICAgICAkKCJtdXRlRGlzIikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRk
ZW4iOwogICAgfSBlbHNlIHsKICAgICAgJCgibXV0ZSIpLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlk
ZGVuIjsKICAgICAgJCgibXV0ZURpcyIpLnN0eWxlLnZpc2liaWxpdHkgPSAidmlzaWJsZSI7CiAg
ICB9CiAgIH0KCiAgIGlmICgkKCJ2b2x1bWVTbGlkZXJCZ0RpcyIpKSB7CiAgICBpZiAodm9sdW1l
VUlfZW5hYmxlZCkgewogICAgICAkKCJ2b2x1bWVTbGlkZXIiKS5zdHlsZS52aXNpYmlsaXR5ID0g
InZpc2libGUiOwogICAgICAkKCJ2b2x1bWVTbGlkZXJEaXMiKS5zdHlsZS52aXNpYmlsaXR5ID0g
ImhpZGRlbiI7CiAgICAgICQoInZvbHVtZVNsaWRlckJnIikuc3R5bGUudmlzaWJpbGl0eSA9ICJ2
aXNpYmxlIjsKICAgICAgJCgidm9sdW1lU2xpZGVyQmdEaXMiKS5zdHlsZS52aXNpYmlsaXR5ID0g
ImhpZGRlbiI7CiAgICB9IGVsc2UgewogICAgICAkKCJ2b2x1bWVTbGlkZXIiKS5zdHlsZS52aXNp
YmlsaXR5ID0gImhpZGRlbiI7CiAgICAgICQoInZvbHVtZVNsaWRlckRpcyIpLnN0eWxlLnZpc2li
aWxpdHkgPSAidmlzaWJsZSI7CiAgICAgICQoInZvbHVtZVNsaWRlckJnIikuc3R5bGUudmlzaWJp
bGl0eSA9ICJoaWRkZW4iOwogICAgICAkKCJ2b2x1bWVTbGlkZXJCZ0RpcyIpLnN0eWxlLnZpc2li
aWxpdHkgPSAidmlzaWJsZSI7CiAgICB9CiAgIH0KCiAgIGlmICgkKCJmdWxsc2NyZWVuRGlzIikp
IHsKICAgIGlmIChmdWxsc2NyZWVuVUlfZW5hYmxlZCkgewogICAgICAvLyQoImZ1bGxzY3JlZW4i
KS5zdHlsZS52aXNpYmlsaXR5ID0gInZpc2libGUiOwogICAgICAvLyQoImZ1bGxzY3JlZW5EaXMi
KS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7CiAgICAgICQoImZ1bGxzY3JlZW4iKS5zdHls
ZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7CiAgICAgICQoImZ1bGxzY3JlZW5EaXMiKS5zdHlsZS52
aXNpYmlsaXR5ID0gInZpc2libGUiOwogICAgfSBlbHNlIHsKICAgICAgJCgiZnVsbHNjcmVlbiIp
LnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKICAgICAgJCgiZnVsbHNjcmVlbkRpcyIpLnN0
eWxlLnZpc2liaWxpdHkgPSAidmlzaWJsZSI7CiAgICB9CiAgIH0KCiAgLy9kYVBsYXllclN0YXRl
ID0gMzsgLy9kb2N1bWVudC5RVFBsYXllck9iamVjdC5HZXRQbGF5U3RhdGUoKTsKICB0cnkgewog
ICAgZGFQbGF5ZXJTdGF0ZSA9IGRvY3VtZW50LlFUUGxheWVyT2JqZWN0LkdldFJhdGUoKTsKICB9
IGNhdGNoIChlKSB7CiAgICBkYVBsYXllclN0YXRlID0gMTsKICB9CiAgdHJ5IHsKCQlhdXRvcGxh
eSA9ICJ0cnVlIjsKICAgIGRvY3VtZW50LlFUUGxheWVyT2JqZWN0LlBsYXkoKTsKCQljaGVja0Fk
Q3VydGFpbkV2ZW50cyhQbGF5TGlzdC5pdGVtc1tQbGF5TGlzdC5jdXJyZW50SXRlbUluZGV4XSk7
CiAgfSBjYXRjaCAoZSkgewogIH0KICBpZiAoZGFQbGF5ZXJTdGF0ZSA9PSAwIHx8IGRhUGxheWVy
U3RhdGUgPT0gMSApIHsKICAgICQoInVpUGxheSIpLnNyYyA9IHNraW5fZGlyICsgInVpUGxheV9j
bGljay5naWYiOwogICAgJCgidWlQYXVzZSIpLnNyYyA9IHNraW5fZGlyICsgInVpUGF1c2UuZ2lm
IjsKICAgICQoInVpU3RvcCIpLnNyYyA9IHNraW5fZGlyICsgInVpU3RvcC5naWYiOwoKICAgIC8v
JCgiZnVsbHNjcmVlbiIpLnN0eWxlLnZpc2liaWxpdHkgPSAidmlzaWJsZSI7CiAgICAvLyQoImZ1
bGxzY3JlZW5EaXMiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7CiAgICAkKCJmdWxsc2Ny
ZWVuIikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOwogICAgJCgiZnVsbHNjcmVlbkRpcyIp
LnN0eWxlLnZpc2liaWxpdHkgPSAidmlzaWJsZSI7CgogICAgdWlQbGF5U3RhdGUgPSAxOwogICAg
dWlQYXVzZVN0YXRlID0gMDsKICAgIHVpU3RvcFN0YXRlID0gMDsKICB9CiAgc2V0Vm9sdW1lKGxh
c3RWb2wpOwp9CgpmdW5jdGlvbiBNYWtlSXRGdWxsc2NyZWVuKCkgewogIGlmICggY3RsX3ByZXNz
ZWQgJiYgYWx0X3ByZXNzZWQgKSB7CiAgICBjdGxfcHJlc3NlZCA9IGZhbHNlOwogICAgYWx0X3By
ZXNzZWQgPSBmYWxzZTsKICAgIE9wZW5GdWd1RGVidWcoKTsKICB9CiAgLy8gc29tZXRpbWVzIGtl
eXMgZ2V0ICJzdHVjayIgYW5kIGEgZnVsbHNjcmVlbiBhcnRpZmFjdCBmbGFzaGVzLCB0aGlzIHBy
ZXZlbnRzIHRoYXQ6CiAgZWxzZSBpZiAoY3RsX3ByZXNzZWQpIHsKICAgIGN0bF9wcmVzc2VkID0g
ZmFsc2U7CiAgICByZXR1cm4gZmFsc2U7CiAgfQogIC8vIHNvbWV0aW1lcyBrZXlzIGdldCAic3R1
Y2siIGFuZCBhIGZ1bGxzY3JlZW4gYXJ0aWZhY3QgZmxhc2hlcywgdGhpcyBwcmV2ZW50cyB0aGF0
OgogIGVsc2UgaWYgKGFsdF9wcmVzc2VkKSB7CiAgICBhbHRfcHJlc3NlZCA9IGZhbHNlOwogICAg
cmV0dXJuIGZhbHNlOwogIH0KICBlbHNlIHsKICAgIHZhciBmc01zZ0Nvb2tpZVZhbCA9IF9ETF9S
ZWFkQ29va2llKCBGVUdVX0ZTX01TR19DT09LSUUgKTsKICAgIGlmICggIWZzTXNnQ29va2llVmFs
ICkgZnNNc2dDb29raWVWYWwgPSAwOwogICAgZnNNc2dDb29raWVWYWwgPSBwYXJzZUludChmc01z
Z0Nvb2tpZVZhbCk7CiAgICBpZiAoIGZzTXNnQ29va2llVmFsIDwgRlNfTVNHX0ZSRVEgKSB7CiAg
ICAgIGlmICghaXNBT0wpIHsKICAgICAgICBmc01zZ0Nvb2tpZVZhbCsrOwogICAgICAgIF9ETF9T
ZXRDb29raWUoIEZVR1VfRlNfTVNHX0NPT0tJRSwgZnNNc2dDb29raWVWYWwsIDI0KjM2NSwgIi8i
ICk7CiAgICAgICAgYWxlcnQoY29udmVydENoYXJzKEdldExvY2FsaXplZFRleHQoIkZVTExTQ1JF
RU5fTVNHX1JRIikpKTsKICAgICAgfQogICAgfQogIAkvL0xDTG9nKCAiRW50ZXJpbmcgRnVsbFNj
cmVlbiIgKTsgLy8gU2VuZCBFdmVudCBOb3RpZmljYXRpb24gdG8gTEMKICAgIC8vZG9jdW1lbnQu
UVRQbGF5ZXJPYmplY3QuU2V0RW5hYmxlRnVsbFNjcmVlbih0cnVlKTsKICAgIC8vZG9jdW1lbnQu
UVRQbGF5ZXJPYmplY3QuU2V0RnVsbFNjcmVlbigpOwogIH0KfQoKCmZ1bmN0aW9uIEV4aXRGdWxs
U2NyZWVuKCkgewoJLy9MQ0xvZyggIkxlYXZpbmcgRnVsbFNjcmVlbiIgKTsgLy8gU2VuZCBFdmVu
dCBOb3RpZmljYXRpb24gdG8gTEMKICAvL2RvY3VtZW50LlFUUGxheWVyT2JqZWN0LlNldE9yaWdp
bmFsU2l6ZSgpOwp9CgovLyBUcnkgdG8gZmlndXJlIG91dCB0aGUgYmFuZHdpZHRoIGJhc2VkIG9u
IHRoZSBmaWxlIG5hbWUgY29udmVudGlvbgovLyBYWFhYWF9uYi5ybSAgICA9PiBOYXJyb3diYW5k
Ci8vIFhYWFhYX2JiOC5ybSAgID0+IEJyb2FkYmFuZApmdW5jdGlvbiBpc05hcnJvd2JhbmQodXJs
KQp7CiAgdmFyIG5iRmlsZU5hbWVSZWdleCA9IC9fbmJcLm1vdiQvOwoKICBpZiAobmJGaWxlTmFt
ZVJlZ2V4LnRlc3QodXJsKSkKICB7CiAgICBwbGF5ZXJXaWR0aCA9IDE3NjsKICAgIHBsYXllckhl
aWdodCA9IDEzMjsKICAgIHJldHVybiB0cnVlOwogIH0KICBlbHNlCiAgewogICAgcGxheWVyV2lk
dGggPSAzMjA7CiAgICBwbGF5ZXJIZWlnaHQgPSAyNDA7CiAgfQogIHJldHVybiBmYWxzZTsKfQoK
Ly8gVHJ5IHRvIGZpZ3VyZSBvdXQgdGhlIGJhbmR3aWR0aCBmb3IgV2lkZXNjcmVlbgovLyBYWFhY
WF9uYi5ybSAgICA9PiBOYXJyb3diYW5kCi8vIFhYWFhYX2JiOC5ybSAgID0+IEJyb2FkYmFuZApm
dW5jdGlvbiBpc05hcnJvd2JhbmRXaWRlU2NyZWVuKHVybCkKewogIHZhciBuYkZpbGVOYW1lUmVn
ZXggPSAvX25iXC5tb3YkLzsKCiAgaWYgKG5iRmlsZU5hbWVSZWdleC50ZXN0KHVybCkpCiAgewog
ICAgcGxheWVyV2lkdGggPSAxOTg7CiAgICBwbGF5ZXJIZWlnaHQgPSAxMDg7CiAgICByZXR1cm4g
dHJ1ZTsKICB9CiAgZWxzZQogIHsKICAgIHBsYXllcldpZHRoID0gMzY4OwogICAgcGxheWVySGVp
Z2h0ID0gMjA4OwogIH0KICByZXR1cm4gZmFsc2U7Cn0KCnRvcE9mUGxheWVyID0gMDsKCmZ1bmN0
aW9uIE1ha2VJdFNob3coKSB7Ci8vCSQoIm92ZXJsYXlEdW1teSIpLnN0eWxlLmRpc3BsYXkgPSAi
bm9uZSI7CiAgaWYgKCQoInN0YXRpY0FkIikpIHsKICAgICQoInN0YXRpY0FkIikuc3R5bGUudmlz
aWJpbGl0eSA9ICJoaWRkZW4iOwogIH0KCSQoInBsYXllciIpLnN0eWxlLmRpc3BsYXkgPSAiYmxv
Y2siOwogICQoInBsYXllciIpLnN0eWxlLnZpc2liaWxpdHkgPSAidmlzaWJsZSI7Cn0KCmZ1bmN0
aW9uIE1ha2VJdEJsYW5rKHN0b3ApIHsKLy8JJCgib3ZlcmxheUR1bW15Iikuc3R5bGUuZGlzcGxh
eSA9ICJub25lIjsKCSQoInByb2dyZXNzU2xpZGVyQmdNYXNrIikuc3R5bGUud2lkdGggPSAiMHB4
IjsKICAkKCJwcm9ncmVzc1NsaWRlckJnVGltZSIpLnN0eWxlLndpZHRoID0gIjBweCI7Ci8vICAk
KCJwbGF5ZXIiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7CiAgaWYgKCQoInN0YXRpY0Fk
IikgJiYgYXV0b3BsYXkgPT0gImZhbHNlIikgewogICAgJCgic3RhdGljQWQiKS5zdHlsZS52aXNp
YmlsaXR5ID0gInZpc2libGUiOwogIH0KICBpZiAoKHN0b3AgPT0gMSB8fCBpc1BsYXlsaXN0Rmlu
aXNoZWQpICYmICQoInBvc3RSb2xsIikpIHsKICAgICQoInBvc3RSb2xsIikuc3R5bGUudmlzaWJp
bGl0eSA9ICJ2aXNpYmxlIjsKICAgICQoInBvc3RSb2xsIikuc3R5bGUuZGlzcGxheSA9ICJibG9j
ayI7CiAgfQp9Cgp2YXIgbSA9IG5ldyBBcnJheSgnTGlua2luIFBhcmsgLSBOdW1iJywnJywnJyk7
Ci8qCmlmIChkb2N1bWVudC5pbWFnZXMpIHsKICAgIHZvbHVtZV9rbm9iX29mZm9uID0gbmV3IElt
YWdlKCk7CiAgICB2b2x1bWVfa25vYl9vZmZvbi5zcmMgPSBza2luX2RpciArICJ2b2x1bWVfa25v
Yl9vbiI7IAogICAgdm9sdW1lX2tub2Jfb2Zmb2ZmID0gbmV3IEltYWdlKCk7CiAgICB2b2x1bWVf
a25vYl9vZmZvZmYuc3JjID0gc2tpbl9kaXIgKyAidm9sdW1lX2tub2Jfb2ZmIjsgCgogICAgbXV0
ZV9vZmZvbiA9IG5ldyBJbWFnZSgpOwogICAgbXV0ZV9vZmZvbi5zcmMgPSBza2luX2RpciArICJt
dXRlX3JvbGxvdmVyLmdpZiI7IAogICAgbXV0ZV9vZmZvZmYgPSBuZXcgSW1hZ2UoKTsKICAgIG11
dGVfb2Zmb2ZmLnNyYyA9IHNraW5fZGlyICsgIm11dGUiOwogICAgCiAgICBtdXRlX29ub24gPSBu
ZXcgSW1hZ2UoKTsKICAgIG11dGVfb25vbi5zcmMgPSBza2luX2RpciArICJtdXRlX3JvbGxvdmVy
LmdpZiI7IAogICAgbXV0ZV9vbm9mZiA9IG5ldyBJbWFnZSgpOwogICAgbXV0ZV9vbm9mZi5zcmMg
PSBza2luX2RpciArICJtdXRlX3ByZXNzZWQiOyAKfQoKZnVuY3Rpb24gaW1nT24oaW1nTmFtZSkg
ewogICAgaWYgKGRvY3VtZW50LmltYWdlcykgewogICAgICAgIGRvY3VtZW50W2ltZ05hbWVdLnNy
YyA9IGV2YWwoaW1nTmFtZSArICJvbi5zcmMiKTsKICAgIH0KfQoKZnVuY3Rpb24gaW1nT2ZmKGlt
Z05hbWUpIHsKICAgIGlmIChkb2N1bWVudC5pbWFnZXMpIHsKICAgICAgICBkb2N1bWVudFtpbWdO
YW1lXS5zcmMgPSBldmFsKGltZ05hbWUgKyAib2ZmLnNyYyIpOwogICAgfQp9CgpmdW5jdGlvbiBz
aG93KGlkKSB7CiAgICBpZiAoJCkgCiAgICAgICAgJChpZCkuc3R5bGUudmlzaWJpbGl0eSA9ICd2
aXNpYmxlJzsKfQoKZnVuY3Rpb24gaGlkZShpZCkgewogICAgaWYgKCQpIAogICAgICAgICQoaWQp
LnN0eWxlLnZpc2liaWxpdHkgPSAnaGlkZGVuJzsKfQoKZnVuY3Rpb24gYnV0dG92ZXIoaW1nTmFt
ZSl7CiAgICBpZiAoZXZhbChpbWdOYW1lICsgIlN0YXRlIikgPT0gMCl7CiAgICAgICAgJChpbWdO
YW1lKS5zcmMgPSBza2luX2RpciAgKyBpbWdOYW1lICsgIl9yb2xsb3Zlci5naWYiOwogICAgfQp9
CgpmdW5jdGlvbiBidXR0b3V0KGltZ05hbWUpewogICAgaWYgKGV2YWwoaW1nTmFtZSArICJTdGF0
ZSIpID09IDApewogICAgICAgICQoaW1nTmFtZSkuc3JjID0gc2tpbl9kaXIgKyBpbWdOYW1lICsg
ImdpZiI7CiAgICB9Cn0KKi8KCmZ1bmN0aW9uIHBsYXllckZvY3VzKCkgewogICAgaWYgKHRvcC5N
QUlOID09IG51bGwgfHwgdG9wLk1BSU4uaXBsYXllciA9PSBudWxsKSB7CiAgICAgICAgcmV0dXJu
OwogICAgfQoKICAgIGlmICh0b3AuTUFJTi5pcGxheWVyLnRyYWNrSW5mb0FjY2VzcykgewogICAg
ICAgIHRvcC5NQUlOLmlwbGF5ZXIudHJhY2tJbmZvQWNjZXNzLmFsdCAgPSB0b3AuZG9jdW1lbnQu
dGl0bGU7CiAgICB9CiAgICBpZiAodG9wLk1BSU4uaXBsYXllci5zdGFydEZvY3VzKSB7CiAgICAg
ICAgdG9wLk1BSU4uaXBsYXllci5zdGFydEZvY3VzLmZvY3VzKCk7CiAgICB9Cn0KCmZ1bmN0aW9u
IHNldFBvc2l0aW9uVGl0bGVUZXh0KGkpIHsKICAgICQoJ3Bvc2l0aW9uJykudGl0bGUgID0gaTsK
ICAgICQoJ3Bvc2l0aW9uJykuYWx0ICA9IGk7Cn0KCmlmICghaXNNYWMpIHsKdWlTdG9wID0gbmV3
IEltYWdlKCk7CnVpU3RvcC5zcmMgPSBza2luX2RpciArICd1aVN0b3BfY2xpY2suZ2lmJzsKdWlQ
YXVzZSA9IG5ldyBJbWFnZSgpOwp1aVBhdXNlLnNyYyA9IHNraW5fZGlyICsgJ3VpUGF1c2VfY2xp
Y2suZ2lmJzsKdWlQbGF5ID0gbmV3IEltYWdlKCk7CnVpUGxheS5zcmMgPSBza2luX2RpciArICd1
aVBsYXlfY2xpY2suZ2lmJzsKfQoKZnVuY3Rpb24gc2Vla1NldCgpIHsKICBpZih1aVN0b3BTdGF0
ZSA9PSAxKQogICAgICAgIHJldHVybiBmYWxzZTsKICBpZiAoaXNDaGFwdGVyZWRBc3NldCgpKSB7
CiAgICBtb3ZpZUxlbmd0aCA9IGxwb3MgLSBhcG9zOwogIH0KCiAgICBzZWVrRHJhZ2dpbmcgPSAw
OwoKICAgIGRvY3VtZW50LnRpdGxlID0gc2V0U2Vla1ZhbDsKICAgIGlmIChzZXRTZWVrVmFsID49
IG1vdmllTGVuZ3RoKSB7CiAgICAgIC8vYWxlcnQgKCJzZWVrU2V0KCkgIHNldFNlZWtWYWw6ICIg
KyBzZXRTZWVrVmFsICsgIiwgbW92aWVMZW5ndGg6ICIgKyBtb3ZpZUxlbmd0aCk7CiAgICAgIHNl
dFNlZWtWYWwgPSBtb3ZpZUxlbmd0aCAtIDUwMDA7IC8vIGp1c3Qgc2VlayB1cCB0byA1IHNlY29u
ZHMgZnJvbSB0aGUgZW5kCiAgICB9IAoJCiAgICBzZWVrV2FpdCA9IDE7CiAgICBpZiAodWlTdG9w
U3RhdGUgPT0gMSB8fCB1aVBhdXNlU3RhdGUgPT0gMSkgewogICAgICBjbGlja0J1dHRvbigndWlQ
bGF5JywgdHJ1ZSk7CiAgICB9CiAgICAKICB0cnkgeyAgCiAgICBpZiAoZG9jdW1lbnQuUVRQbGF5
ZXJPYmplY3QuR2V0UmF0ZSgpID09IDEpIHsgICAvLyBwbGF5aW5nCiAgICAgIGRvY3VtZW50LlFU
UGxheWVyT2JqZWN0LlNldFRpbWUoc2V0U2Vla1ZhbCk7CgogICAgICAvL0NhbGwgdXBkYXRlUG9z
KCkgaW1tZWRpYXRlbHkgdG8gc29sdmUgY2hhcHRlcmluZyBzZWVrIGRyYWdnaW5nIHByb2JsZW0s
IHNvIHRoYXQgdGhlIGNvcnJlY3Qgc2Vla2luZyBwb3NpdGlvbiBpcyBwbGF5ZWQsIG5vdCBtZXNp
c2luZyB1cCB3aXRoIHRoZSBiZWdpbm5pbmcgb2YgYSBjaGFwdGVyLgogICAgICB1cGRhdGVQb3Mo
KTsKCiAgICAgIHNlZWtXYWl0ID0gMDsKICAgIH0KICAgIGVsc2UgewogICAgICBzZWVrVGltZW91
dCA9IHNldFRpbWVvdXQoJ3NlZWtTZXQoKScsMjAwKTsKICAgIH0KICAgIGRvY3VtZW50LlFUUGxh
eWVyT2JqZWN0LlBsYXkoKTsKICB9IGNhdGNoIChlKSB7CiAgICBzZWVrVGltZW91dCA9IHNldFRp
bWVvdXQoJ3NlZWtTZXQoKScsMjAwKTsKICB9CiAgICBkb2N1bWVudC5vbm1vdXNlbW92ZSA9IG51
bGw7Cn0KCmZ1bmN0aW9uIHNlZWtTdGFydERyYWcoZSkgewogIGlmKHVpU3RvcFN0YXRlID09IDEp
CiAgICAgICAgcmV0dXJuIGZhbHNlOwogIGlmIChpc0NoYXB0ZXJlZEFzc2V0KCkpIHsKICAgIG1v
dmllTGVuZ3RoID0gbHBvcyAtIGFwb3M7CiAgfQoJCiAgTENMb2coICJTZWVraW5nIiApOyAgLy8g
U2VuZCBFdmVudCBOb3RpZmljYXRpb24gdG8gTEMKICAgIC8vIGZpbmRzIHRoZSBzZWVrIHRpbWUg
bG9jYXRpb24gYnkgdGhlIHggdmFsdWUgb2YgdGhlIHNlZWsgdGh1bWIKICAgIGlmIChzZWVrRHJh
Z2dpbmcgPT0gMSkgewogICAgICAgIGlmIChpc0dlY2tvKSB7CiAgICAgICAgICAgIHhwb3MgPSBl
LnBhZ2VYOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHhwb3MgPSBldmVudC5jbGllbnRY
OwogICAgICAgIH0KCiAgICAgICAgbmV4dFggPSB0aHVtYlggKyB4cG9zIC0gb2Zmc2V0WAoKICAg
ICAgICBpZiAobmV4dFggPD0gc2Vla0VuZFggJiYgbmV4dFggPj0gc2Vla1N0YXJ0WCApIHsKICAg
ICAgICAgICAgJCgicHJvZ3Jlc3NTbGlkZXIiKS5zdHlsZS5sZWZ0ID0gbmV4dFg7CiAgICAgICAg
ICAgIAogICAgICAgICAgICBpZiAobW92aWVMZW5ndGggPiAwKSB7CiAgICAgICAgICAgICAgICB2
YXIgc2Vla0RpZmZlciA9IG5leHRYIC0gc2Vla1N0YXJ0WDsKICAgICAgICAgICAgICAgIHNldFNl
ZWtWYWwgPSAobW92aWVMZW5ndGggKiBzZWVrRGlmZmVyKSAvIHNlZWtCYXJMZW5ndGg7CiAgICAg
ICAgICAgICAgICBzZXRTZWVrVmFsID0gc2V0U2Vla1ZhbC50b0ZpeGVkKDApOwogICAgICAgICAg
ICB9CiAgICAgICAgfSBlbHNlIGlmIChuZXh0WCA+IHNlZWtFbmRYKSB7ICAgIC8vIGNoZWNrIGZv
ciBiZWdpbm5pbmcgc2xpZGVyIGJvdW5kcwogICAgICAgICAgICBzZXRTZWVrVmFsID0gZ2V0TW92
aWVMZW5ndGgoKTsKICAgICAgICAgICAgJCgicHJvZ3Jlc3NTbGlkZXIiKS5zdHlsZS5sZWZ0ID0g
c2Vla0VuZFg7IC8vIC0gc2Vla1N0YXJ0WDsKICAgICAgICB9IGVsc2UgaWYgKG5leHRYIDwgc2Vl
a1N0YXJ0WCkgeyAgICAvLyBjaGVjayBmb3IgZW5kaW5nIHNsaWRlciBib3VuZHMKICAgICAgICAg
ICAgc2V0U2Vla1ZhbCA9IDA7CiAgICAgICAgICAgICQoInByb2dyZXNzU2xpZGVyIikuc3R5bGUu
bGVmdCA9IHNlZWtTdGFydFg7CiAgICAgICAgfQogICAgfQogICAgZG9jdW1lbnQudGl0bGUgPSBz
ZXRTZWVrVmFsOwp9CgpmdW5jdGlvbiBzZWVrSW5pdERyYWcoZSkgewogIGlmKHVpU3RvcFN0YXRl
ID09IDEpCiAgICAgICAgcmV0dXJuIGZhbHNlOwogIGlmIChpc0NoYXB0ZXJlZEFzc2V0KCkpIHsK
ICAgIG1vdmllTGVuZ3RoID0gbHBvcyAtIGFwb3M7CiAgfQoKICAgIExDTG9nKCAiU2Vla2luZyIg
KTsgIC8vIFNlbmQgRXZlbnQgTm90aWZpY2F0aW9uIHRvIExDCiAgICBpZiAobW92aWVMZW5ndGgg
PiAwKSB7CiAgICAgICAgaWYgKGlzR2Vja28pIHsKICAgICAgICAgICAgb2Zmc2V0WCA9IGUucGFn
ZVg7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgb2Zmc2V0WCA9IGV2ZW50LmNsaWVudFg7
CiAgICAgICAgfQoKICAgICAgICB0aHVtYlggPSBwYXJzZUludCgkKCJwcm9ncmVzc1NsaWRlciIp
LnN0eWxlLmxlZnQpOwogICAgICAgIHNlZWtEcmFnZ2luZyA9IDE7CiAgICAgICAgZG9jdW1lbnQu
b25tb3VzZW1vdmUgPSBzZWVrU3RhcnREcmFnOwogICAgfQp9CgovLyBzYW1lIGFzIGluIHV2b3gu
cGxheWVyanMuaW5jCmZ1bmN0aW9uIHNlZWtRdWlja0RyYWcoZSkgewogIGlmKHVpU3RvcFN0YXRl
ID09IDEpCiAgICAgICAgcmV0dXJuIGZhbHNlOwoKICBpZiAoaXNDaGFwdGVyZWRBc3NldCgpKSB7
CiAgICBtb3ZpZUxlbmd0aCA9IGxwb3MgLSBhcG9zOwogIH0KCglMQ0xvZyggIlNlZWtpbmciICk7
ICAvLyBTZW5kIEV2ZW50IE5vdGlmaWNhdGlvbiB0byBMQwogICAgaWYgKG1vdmllTGVuZ3RoID4g
MCkgewogICAgICAgIGlmIChpc0dlY2tvKSB7CiAgICAgICAgICAgIG9mZnNldFggPSBlLnBhZ2VY
OwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIG9mZnNldFggPSBldmVudC5jbGllbnRYOwog
ICAgICAgIH0KCWRlYnVnKCAic2Vla1F1aWNrRHJhZywgb2Zmc2V0WDogIiArIG9mZnNldFggKyAi
LCBtb3ZpZUxlbmd0aDogIiArIG1vdmllTGVuZ3RoICsgIiwgZXZlbnQ6ICIgKyBlKTsKCiAgICAg
ICAgaWYgKG9mZnNldFggPiBzZWVrU3RhcnRYICsgMTIpIHsKICAgICAgICAgICAgJCgicHJvZ3Jl
c3NTbGlkZXIiKS5zdHlsZS5sZWZ0ID0gb2Zmc2V0WCAtIDEyOwogICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICQoInByb2dyZXNzU2xpZGVyIikuc3R5bGUubGVmdCA9IHNlZWtTdGFydFg7CiAg
ICAgICAgfQoKICAgICAgICB0aHVtYlggPSBwYXJzZUludCgkKCJwcm9ncmVzc1NsaWRlciIpLnN0
eWxlLmxlZnQpOwogICAgICAgIHNlZWtEaWZmZXIgPSB0aHVtYlggLSBzZWVrU3RhcnRYOwogICAg
ICAgIHNldFNlZWtWYWwgPSBtb3ZpZUxlbmd0aCAqIChzZWVrRGlmZmVyIC8gc2Vla0JhckNoZWNr
KTsKICAgICAgICBzZXRTZWVrVmFsID0gc2V0U2Vla1ZhbC50b0ZpeGVkKDApOwogICAgICAgIHNl
ZWtTZXQoKTsKICAgIH0KfQoKdmFyIGxhc3RWb2w7CmZ1bmN0aW9uIHNldFZvbHVtZSh2b2wpIHsK
ICAgIG11dGVPbmx5ID0gMDsKCiAgICBpZiAodm9sID09IG51bGwpIHsKICAgICAgICBjdXJyZW50
Vm9sID0gZG9jdW1lbnQuUVRQbGF5ZXJPYmplY3QuR2V0Vm9sdW1lKCk7CiAgICAgICAgbmV3Vm9s
ID0gY3VycmVudFZvbDsKICAgIH0gZWxzZSBpZiAodm9sID09ICdtdXRlJykgewogICAgICAgIG5l
d1ZvbCA9IDA7CiAgICAgICAgbXV0ZU9ubHkgPSAxOwogICAgfSBlbHNlIGlmICh2b2wgPT0gJ3Vw
JykgewogICAgICAgIGN1cnJlbnRWb2wgPSBkb2N1bWVudC5RVFBsYXllck9iamVjdC5HZXRWb2x1
bWUoKTsKICAgICAgICBuZXdWb2wgPSBjdXJyZW50Vm9sICsgdm9sSW5jcjsKICAgIH0gZWxzZSBp
ZiAodm9sID09ICdkb3duJykgewogICAgICAgIGN1cnJlbnRWb2wgPSBkb2N1bWVudC5RVFBsYXll
ck9iamVjdC5HZXRWb2x1bWUoKTsKICAgICAgICBuZXdWb2wgPSBjdXJyZW50Vm9sIC0gdm9sSW5j
cjsKICAgIH0gZWxzZSB7CiAgICAgICAgbmV3Vm9sID0gcGFyc2VJbnQodm9sKTsKICAgIH0KCiAg
ICBpZiAoaXNNdXRlZCA9PSAxICYmIG5ld1ZvbCAhPSAwKSB7CiAgICAgICAgdG9nZ2xlTXV0ZSgp
OwogICAgfQoKICAgIGlmIChuZXdWb2wgPiB2b2xNYXgpIHsKICAgICAgICBuZXdWb2wgPSB2b2xN
YXg7CiAgICB9IGVsc2UgaWYgKG5ld1ZvbCA8IHZvbE1pbikgewogICAgICAgIG5ld1ZvbCA9IHZv
bE1pbjsKICAgIH0KCiAgICBuZXdWb2xQb3MgPSB2b2xTdGFydFggKyBNYXRoLmZsb29yKChuZXdW
b2wgLyB2b2xNYXgpICogdm9sTGVuZ3RoKTsKICAgICQoJ3ZvbHVtZVNsaWRlcicpLnN0eWxlLmxl
ZnQgPSBuZXdWb2xQb3MgKyAncHgnOwoKICAgIGlmICghbXV0ZU9ubHkpIHsKICAgICAgICBkb2N1
bWVudC5RVFBsYXllck9iamVjdC5TZXRWb2x1bWUobmV3Vm9sKTsKCQl2YXIgcHJlZnMgPSBnZXRQ
cmVmcygpOwoJCXByZWZzLnZvbHVtZSA9IG5ld1ZvbDsKCQlzZXRQcmVmcyhwcmVmcyk7CiAgICB9
CiAgICBsYXN0Vm9sID0gbmV3Vm9sOwp9CgpmdW5jdGlvbiBNYWtlSXRNdXRlKCkgewogICAgaWYg
KGlzTXV0ZWQgPT0gMCkgewogICAgICAgIG9sZFZvbCA9IGRvY3VtZW50LlFUUGxheWVyT2JqZWN0
LkdldFZvbHVtZSgpOwogICAgICAgIG5ld1ZvbCA9ICdtdXRlJwogICAgfSBlbHNlIHsKICAgICAg
ICBuZXdWb2wgPSBvbGRWb2w7CiAgICB9CgogICAgdG9nZ2xlTXV0ZSgpOwogICAgc2V0Vm9sdW1l
KG5ld1ZvbCk7CiAgICB0cmlnZ2VyRXZlbnQoUExBWUVSX01VVEUpOwp9CgpmdW5jdGlvbiB0b2dn
bGVNdXRlKCkgewogICAgaWYgKGlzTXV0ZWQgPT0gMCkgewogICAgICAgIGlzTXV0ZWQgPSAxOwog
ICAgICAgIHVpTXV0ZVN0YXRlID0gMTsKICAgICAgICAkKCJ1aU11dGUiKS5zcmMgPSBza2luX2Rp
ciArICJ1aU11dGVfY2xpY2suZ2lmIjsKICAgICAgICBkb2N1bWVudC5RVFBsYXllck9iamVjdC5T
ZXRNdXRlKHRydWUpOwogICAgfSBlbHNlIHsKICAgICAgICBpc011dGVkID0gMDsKICAgICAgICB1
aU11dGVTdGF0ZSA9IDA7CiAgICAgICAgJCgidWlNdXRlIikuc3JjID0gc2tpbl9kaXIgKyAidWlN
dXRlLmdpZiI7CiAgICAgICAgZG9jdW1lbnQuUVRQbGF5ZXJPYmplY3QuU2V0TXV0ZShmYWxzZSk7
CiAgICB9Cn0KCi8vIHZvbHVtZSBzbGlkZXIgZnVuY3Rpb25zCgovLyBzYW1lIGV4Y2VwdCBmb3Ig
ZWxlbWVudCBpZApmdW5jdGlvbiB2b2xTdGFydERyYWcoZSl7CiAgICBpZiAodm9sRHJhZ2dpbmcg
PT0gMSkgewogICAgICAgIGlmIChpc0dlY2tvKSB7CiAgICAgICAgICAgIHhwb3MgPSBlLnBhZ2VY
OwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHhwb3MgPSBldmVudC5jbGllbnRYOwogICAg
ICAgIH0KICAgICAgICBuZXh0WCA9IHRodW1iWCArIHhwb3MgLSBvZmZzZXRYOwogICAgICAgIGlm
IChuZXh0WCA8PSB2b2xFbmRYICYmIG5leHRYID49IHZvbFN0YXJ0WCkgewogICAgICAgICAgICB2
b2xTZXR0aW5nID0gKG5leHRYIC0gdm9sU3RhcnRYKS8odm9sRW5kWCAtIHZvbFN0YXJ0WCkgKiAx
MDsgLy8gMSAtIDEwCiAgICAgICAgICAgIHNldFZvbHVtZSh2b2xTZXR0aW5nICogdm9sSW5jcikK
ICAgICAgICB9IGVsc2UgaWYgKG5leHRYIDwgdm9sU3RhcnRYKSB7ICAgLy8gY2hlY2sgZm9yIHNs
aWRlciBzdGFydCBib3VuZHMKICAgICAgICAgICAgc2V0Vm9sdW1lKHZvbE1pbik7CiAgICAgICAg
fSBlbHNlIGlmIChuZXh0WCA+IHZvbEVuZFgpIHsgICAgLy8gY2hlY2sgZm9yIHNsaWRlciBlbmQg
Ym91bmRzCiAgICAgICAgICAgIHNldFZvbHVtZSh2b2xNYXgpOwogICAgICAgIH0KCiAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgfQp9CgpmdW5jdGlvbiB2b2xJbml0RHJhZyhlKXsKICAgIGlmIChp
c0dlY2tvKSB7CiAgICAgICAgb2Zmc2V0WCA9IGUucGFnZVg7CiAgICB9IGVsc2UgewogICAgICAg
IG9mZnNldFggPSBldmVudC5jbGllbnRYOwogICAgfQoKICAgIHRodW1iWCA9IHBhcnNlSW50KCQo
InZvbHVtZVNsaWRlciIpLnN0eWxlLmxlZnQpOwogICAgdm9sRHJhZ2dpbmcgPSAxOwogICAgZG9j
dW1lbnQub25tb3VzZW1vdmUgPSB2b2xTdGFydERyYWc7Cn0KCmZ1bmN0aW9uIHZvbFF1aWNrRHJh
ZyhlKXsKICAgIGlmIChpc0dlY2tvKSB7CiAgICAgICAgb2Zmc2V0WCA9IGUucGFnZVg7CiAgICB9
IGVsc2UgewogICAgICAgIG9mZnNldFggPSBldmVudC5jbGllbnRYOwogICAgfQoKICAgIG9mZnNl
dFggLT0gNjsgLy8gY2VudGVyCgogICAgaWYgKG9mZnNldFggPD0gdm9sRW5kWCAmJiBvZmZzZXRY
ID49IHZvbFN0YXJ0WCkgewogICAgICAgIHZvbFNldHRpbmcgPSAob2Zmc2V0WCAtIHZvbFN0YXJ0
WCkvKHZvbEVuZFggLSB2b2xTdGFydFgpICogMTA7IC8vIDEgLSAxMAogICAgICAgIHNldFZvbHVt
ZSh2b2xTZXR0aW5nICogdm9sSW5jcikKICAgIH0gZWxzZSBpZiAob2Zmc2V0WCA8IHZvbFN0YXJ0
WCkgeyAgIC8vIGNoZWNrIGZvciBzbGlkZXIgc3RhcnQgYm91bmRzCiAgICAgICAgc2V0Vm9sdW1l
KHZvbE1pbik7CiAgICAgICAgb2Zmc2V0WCA9IHZvbFN0YXJ0WDsKICAgIH0gZWxzZSBpZiAob2Zm
c2V0WCA+IHZvbEVuZFgpIHsgICAgLy8gY2hlY2sgZm9yIHNsaWRlciBlbmQgYm91bmRzCiAgICAg
ICAgc2V0Vm9sdW1lKHZvbE1heCk7CiAgICAgICAgb2Zmc2V0WCA9IHZvbEVuZFg7CiAgICB9Cgog
ICAgJCgidm9sdW1lU2xpZGVyIikuc3R5bGUubGVmdCA9IG9mZnNldFg7CgogICAgcmV0dXJuIGZh
bHNlOwp9CgpmdW5jdGlvbiBlbmREcmFnKGUpIHsKICAgIGlmIChzZWVrRHJhZ2dpbmcgPT0gMSkg
ewogICAgICAgIHNlZWtTZXQoKTsKICAgICAgICBzZWVrRHJhZ2dpbmcgPSAwOwogICAgfQogICAg
aWYgKHZvbERyYWdnaW5nID09IDEpIHsKICAgICAgICB2b2xEcmFnZ2luZyA9IDA7CiAgICB9CiAg
ICAKICAgIGRvY3VtZW50Lm9ubW91c2Vtb3ZlID0gbnVsbDsKfQoKCgoKZnVuY3Rpb24gc2hvd2J1
ZmZlcigpIHsKICAgIHZhciBCUyA9IDE7IC8vZG9jdW1lbnQuUVRQbGF5ZXJPYmplY3QuR2V0UGxh
eVN0YXRlKCk7CiAgICBidWZmZXJWaXNpYmlsaXR5ID0gJCgiQlMiKS5zdHlsZS52aXNpYmlsaXR5
OwoKICAgIGlmICggKEJTID09IDEpIHx8IChCUyA9PSAyKSB8fCAoQlMgPT0gNSkgKSB7CiAgICAg
ICAgbmV3VmFsdWUgPSAgInZpc2libGUiOwogICAgfSBlbHNlIHsKICAgICAgICBuZXdWYWx1ZSA9
ICJoaWRkZW4iOwogICAgfQoKICAgIGlmIChidWZmZXJWaXNpYmlsaXR5ICE9IG5ld1ZhbHVlKSB7
CiAgICAgICAgJCgiQlMiKS5zdHlsZS52aXNpYmlsaXR5ID0gbmV3VmFsdWU7ICAgIAogICAgfQp9
CgoKCgpmdW5jdGlvbiBNYWtlSXRTdG9wKCkgewogICAgc3RvcEhlYXJ0YmVhdCgpOyAvLyBDbGVh
ciB0aGUgaGVhcnRiZWF0CiAgICBMb2coICJTVE9QUEVEIiApOyAvLyBMT0dJVAogICAgTENMb2co
ICJTVE9QUEVEIiApOyAvLyBTZW5kIEV2ZW50IE5vdGlmaWNhdGlvbiB0byBMQwoJCXRyeQoJCXsK
ICAgIAlkb2N1bWVudC5RVFBsYXllck9iamVjdC5SZXdpbmQoKTsKICAgIAlkb2N1bWVudC5RVFBs
YXllck9iamVjdC5TdG9wKCk7CgkJfSBjYXRjaCAoZSkKCQl7CgkJCS8vZG9udCBkbyBhbnl0aGlu
ZywgbGV0IGl0IHNsaWRlLCBtYXliZSBjYWxsZWQgZnJvbSBpbml0IGluIHdoaWNoIGNhc2Ugbm90
aGluZyB0byByZXdpbmQgb3Igc3RvcAoJCX0KCgkJaWYgKCQoInBvc3RSb2xsIikgJiYgYXV0b3Bs
YXkgPT0gInRydWUiKSAkKCJwb3N0Um9sbCIpLnN0eWxlLmRpc3BsYXkgPSAiYmxvY2siOwovLyQo
InBsYXllciIpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CiQoInBsYXllciIpLnN0eWxlLnZpc2li
aWxpdHkgPSAiaGlkZGVuIjsKICAgIE1ha2VJdEJsYW5rKCk7CgogICAgaWYoYXBvcyAhPSAwKSAv
L29ubHkgZm9yIHRoZSBzdWJzZXF1ZW50IGNoYXB0ZXJzLiBUaGUgZmlyc3QgY2hhcHRlciBpcyBm
aW5lLgogICAgICBkb2N1bWVudC5RVFBsYXllck9iamVjdC5TZXRUaW1lKDApOyAvL2NsaWNraW5n
ICJTdG9wIiBkaXNwbGF5cyBibGFjayBzY3JlZW4gaW5zdGVhZCBvZiB0aGUgYmVnaW5uaW5nIG9m
IGEgY2hhcHRlcgoKICAgIHRyaWdnZXJFdmVudChQTEFZRVJfU1RPUCk7Cn0KCmZ1bmN0aW9uIHN0
b3Bfc3luYygpIHsKICAgIGRvY3VtZW50LlFUUGxheWVyT2JqZWN0LlJld2luZCgpOwogICAgZG9j
dW1lbnQuUVRQbGF5ZXJPYmplY3QuU3RvcCgpOwogICAgJCgidWlTdG9wIikuc3JjID0gc2tpbl9k
aXIgKyAidWlTdG9wX2NsaWNrLmdpZiI7CiAgICAkKCJ1aVBsYXkiKS5zcmMgPSBza2luX2RpciAr
ICJ1aVBsYXkuZ2lmIjsKICAgICQoInVpUGF1c2UiKS5zcmMgPSBza2luX2RpciArICJ1aVBhdXNl
LmdpZiI7CgogICAgJCgiZnVsbHNjcmVlbiIpLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsK
ICAgICQoImZ1bGxzY3JlZW5EaXMiKS5zdHlsZS52aXNpYmlsaXR5ID0gInZpc2libGUiOwoKICAg
IHVpU3RvcFN0YXRlID0gMTsKICAgIHVpUGxheVN0YXRlID0gMDsKICAgIHVpUGF1c2VTdGF0ZSA9
IDA7CgogICAgJCgicHJvZ3Jlc3NTbGlkZXIiKS5zdHlsZS5sZWZ0ID0gc2Vla1N0YXJ0WDsKICAg
IGNsZWFyVGltZW91dChzZWVrVGltZW91dCk7IC8vIGNsZWFyIHNlZWtXYWl0CiAgICBzZWVrV2Fp
dCA9IDA7Cn0KCgpmdW5jdGlvbiBwYXVzZSgpIHsKICAgIHN0b3BIZWFydGJlYXQoKTsgLy8gQ2xl
YXIgdGhlIGhlYXJ0YmVhdAogICAgLy9kb2N1bWVudC5RVFBsYXllck9iamVjdC5QYXVzZSgpOwog
ICAgZG9jdW1lbnQuUVRQbGF5ZXJPYmplY3QuU3RvcCgpOwogICAgdHJpZ2dlckV2ZW50KFBMQVlF
Ul9QQVVTRSk7Cn0KCgoKZnVuY3Rpb24gY2xpY2tCdXR0b24oaW1nTmFtZSwgY2FsbGVkRnJvbVNl
ZWspIHsKICB0cmFjZSAoJ2NsaWNrQnV0dG9uJyArIGltZ05hbWUgKTsKICAgIGlmIChpbWdOYW1l
ID09ICJ1aVN0b3AiKSB7CiAgICAgICAgJCgidWlTdG9wIikuc3JjID0gc2tpbl9kaXIgKyAidWlT
dG9wX2NsaWNrLmdpZiI7CiAgICAgICAgJCgidWlQbGF5Iikuc3JjID0gc2tpbl9kaXIgKyAidWlQ
bGF5LmdpZiI7CiAgICAgICAgJCgidWlQYXVzZSIpLnNyYyA9IHNraW5fZGlyICsgInVpUGF1c2Uu
Z2lmIjsKCiAgICAgICAgJCgiZnVsbHNjcmVlbiIpLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVu
IjsKICAgICAgICAkKCJmdWxsc2NyZWVuRGlzIikuc3R5bGUudmlzaWJpbGl0eSA9ICJ2aXNpYmxl
IjsKCiAgICAgICAgdWlTdG9wU3RhdGUgPSAxOwogICAgICAgIHVpUGxheVN0YXRlID0gMDsKICAg
ICAgICB1aVBhdXNlU3RhdGUgPSAwOwoKICAgICAgICAkKCJwcm9ncmVzc1NsaWRlciIpLnN0eWxl
LmxlZnQgPSBzZWVrU3RhcnRYOwoJCQkJCgkJCQlpZiAoJCgicG9zdFJvbGwiKSAmJiBhdXRvcGxh
eSA9PSAidHJ1ZSIpICQoInBvc3RSb2xsIikuc3R5bGUuZGlzcGxheSA9ICJibG9jayI7CgkJCQlN
YWtlSXRTdG9wKCk7IAogICAgICAgIGNsZWFyVGltZW91dChzZWVrVGltZW91dCk7IC8vIGNsZWFy
IHNlZWtXYWl0CiAgICAgICAgc2Vla1dhaXQgPSAwOwoKICAgIH0gZWxzZSBpZiAoaW1nTmFtZSA9
PSAidWlQbGF5IikgewogICAgICAgICQoInVpUGxheSIpLnNyYyA9IHNraW5fZGlyICsgInVpUGxh
eV9jbGljay5naWYiOwogICAgICAgICQoInVpUGF1c2UiKS5zcmMgPSBza2luX2RpciArICJ1aVBh
dXNlLmdpZiI7CiAgICAgICAgJCgidWlTdG9wIikuc3JjID0gc2tpbl9kaXIgKyAidWlTdG9wLmdp
ZiI7CgogICAgICAgIC8vJCgiZnVsbHNjcmVlbiIpLnN0eWxlLnZpc2liaWxpdHkgPSAidmlzaWJs
ZSI7CiAgICAgICAgLy8kKCJmdWxsc2NyZWVuRGlzIikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRk
ZW4iOwogICAgICAgICQoImZ1bGxzY3JlZW4iKS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7
CiAgICAgICAgJCgiZnVsbHNjcmVlbkRpcyIpLnN0eWxlLnZpc2liaWxpdHkgPSAidmlzaWJsZSI7
CgoJaWYodWlQYXVzZVN0YXRlID09IDEpCgl7CiAgICAgICAgCXVpUGxheVN0YXRlID0gMTsKICAg
ICAgICAJdWlQYXVzZVN0YXRlID0gMDsKICAgICAgICAJdWlTdG9wU3RhdGUgPSAwOwoJCQkJCWlm
ICghY2FsbGVkRnJvbVNlZWspCgkJCQkJewogICAgICAgICAJCWRvY3VtZW50LlFUUGxheWVyT2Jq
ZWN0LlBsYXkoKTsKCQkJCQl9CiAgCQl0cmlnZ2VyRXZlbnQoUExBWUVSX1BMQVkpOwoJfQoJZWxz
ZQoJewogICAgICAgIAl1aVBsYXlTdGF0ZSA9IDE7CiAgICAgICAgCXVpUGF1c2VTdGF0ZSA9IDA7
CiAgICAgICAgCXVpU3RvcFN0YXRlID0gMDsKCQlNYWtlSXRQbGF5KCk7Cgl9CgogICAgfSBlbHNl
IGlmIChpbWdOYW1lID09ICJ1aVBhdXNlIikgewogICAgICAgIC8vZGFQbGF5ZXJTdGF0ZSA9IDM7
IC8vZG9jdW1lbnQuUVRQbGF5ZXJPYmplY3QuR2V0UGxheVN0YXRlKCk7CiAgdHJ5IHsKICAgIGRh
UGxheWVyU3RhdGUgPSBkb2N1bWVudC5RVFBsYXllck9iamVjdC5HZXRSYXRlKCk7CiAgfSBjYXRj
aCAoZSkgewogICAgZGFQbGF5ZXJTdGF0ZSA9IDE7CiAgfQogICAgICAgIGlmIChkYVBsYXllclN0
YXRlID49IDEpIHsKICAgICAgICAgICAgJCgidWlQYXVzZSIpLnNyYyA9IHNraW5fZGlyICsgInVp
UGF1c2VfY2xpY2suZ2lmIjsKICAgICAgICAgICAgJCgidWlQbGF5Iikuc3JjID0gc2tpbl9kaXIg
KyAidWlQbGF5LmdpZiI7CiAgICAgICAgICAgICQoInVpU3RvcCIpLnNyYyA9IHNraW5fZGlyICsg
InVpU3RvcC5naWYiOwoKICAgICAgICAgICAgJCgiZnVsbHNjcmVlbiIpLnN0eWxlLnZpc2liaWxp
dHkgPSAiaGlkZGVuIjsKICAgICAgICAgICAgJCgiZnVsbHNjcmVlbkRpcyIpLnN0eWxlLnZpc2li
aWxpdHkgPSAidmlzaWJsZSI7CgogICAgICAgICAgICB1aVBhdXNlU3RhdGUgPSAxOwogICAgICAg
ICAgICB1aVBsYXlTdGF0ZSA9IDA7CiAgICAgICAgICAgIHVpU3RvcFN0YXRlID0gMDsKICAgICAg
ICAgICAgLy9pZiggZGFQbGF5ZXJTdGF0ZSA9PSAzICkKICAgICAgICAgICAgaWYoIGRhUGxheWVy
U3RhdGUgPT0gMSApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICBMb2coICJQYXVzZSBQcmVz
c2VkOiBTdGF0dXMgUEFVU0VEIiApOyAvLyBMT0dJVAogIAkgICAgICBMQ0xvZyggIlBhdXNlIFBy
ZXNzZWQ6IFN0YXR1cyBQQVVTRUQiICk7IC8vIFNlbmQgRXZlbnQgTm90aWZpY2F0aW9uIHRvIExD
CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcGF1c2UoKTsKICAgICAgICB9IAogICAgICAgIC8v
aWYgKGRhUGxheWVyU3RhdGUgPT0gNCkgewoJaWYoZGFQbGF5ZXJTdGF0ZSA9PSAwICYmIHVpUGF1
c2VTdGF0ZSA9PSAxKSB7CiAgICAgICAgICAgICQoInVpUGF1c2UiKS5zcmMgPSBza2luX2RpciAr
ICJ1aVBhdXNlLmdpZiI7CiAgICAgICAgICAgICQoInVpUGxheSIpLnNyYyA9IHNraW5fZGlyICsg
InVpUGxheV9jbGljay5naWYiOwogICAgICAgICAgICAkKCJ1aVN0b3AiKS5zcmMgPSBza2luX2Rp
ciArICJ1aVN0b3AuZ2lmIjsKCiAgICAgICAgICAgIC8vJCgiZnVsbHNjcmVlbiIpLnN0eWxlLnZp
c2liaWxpdHkgPSAidmlzaWJsZSI7CiAgICAgICAgICAgIC8vJCgiZnVsbHNjcmVlbkRpcyIpLnN0
eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKICAgICAgICAgICAgJCgiZnVsbHNjcmVlbiIpLnN0
eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKICAgICAgICAgICAgJCgiZnVsbHNjcmVlbkRpcyIp
LnN0eWxlLnZpc2liaWxpdHkgPSAidmlzaWJsZSI7CgogICAgICAgICAgICB1aVBhdXNlU3RhdGUg
PSAwOwogICAgICAgICAgICB1aVBsYXlTdGF0ZSA9IDE7CiAgICAgICAgICAgIHVpU3RvcFN0YXRl
ID0gMDsKICAgICAgICAgICAgTG9nKCAiUGF1c2UgUHJlc3NlZDogU3RhdHVzIFBMQVlJTkciICk7
IC8vIExPR0lUCiAgIAkgICAgTENMb2coICJQYXVzZSBQcmVzc2VkOiBTdGF0dXMgUExBWUlORyIg
KTsgLy8gU2VuZCBFdmVudCBOb3RpZmljYXRpb24gdG8gTEMKCSAgICAvL01ha2VJdFBsYXkoKTsK
ICAgICAgICAgICAgZG9jdW1lbnQuUVRQbGF5ZXJPYmplY3QuUGxheSgpOwogIAkgICAgdHJpZ2dl
ckV2ZW50KFBMQVlFUl9QTEFZKTsKICAgICAgICB9CiAgICB9Cn0KCmZ1bmN0aW9uIGtpbGx0aW1l
cnMoKSB7CiAgICBpZiAoZG9jdW1lbnQuUVRQbGF5ZXJPYmplY3QuR2V0TXV0ZSgpKSB7CiAgICAg
ICAgZG9jdW1lbnQuUVRQbGF5ZXJPYmplY3QuU2V0TXV0ZShmYWxzZSk7CiAgICB9CiAgICBNYWtl
SXRTdG9wKCk7CiAgICBjbGVhckludGVydmFsKGVsYXBzZXJJbnRlcnZhbCk7CiAgICBjbGVhclRp
bWVvdXQoc2Vla1RpbWVvdXQpOyAvLyBiL2Mgb2Ygc2Vla1dhaXQKfQoKLy8gUVQtc3BlY2lmaWMg
cHJvY3MKZnVuY3Rpb24gZ2V0Q3VycmVudFBvc2l0aW9uKCkgewogICAgdHJ5IHsKICAgICAgcmV0
dXJuIGRvY3VtZW50LlFUUGxheWVyT2JqZWN0LkdldFRpbWUoKTsKICAgIH0gY2F0Y2ggKGUpIHsK
ICAgICAgc2V0VGltZW91dCAoImdldEN1cnJlbnRQb3NpdGlvbigpOyIsIDEwMDApOwogICAgfQp9
CgpmdW5jdGlvbiBnZXRNb3ZpZUxlbmd0aCgpIHsKICAgIHRyeSB7CiAgICAgIG1vdmllTGVuZ3Ro
ID0gZG9jdW1lbnQuUVRQbGF5ZXJPYmplY3QuR2V0RHVyYXRpb24oKTsKICAgIH0gY2F0Y2ggKGUp
IHsKICAgICAgc2V0VGltZW91dCAoImdldE1vdmllTGVuZ3RoKCk7IiwgMTAwMCk7CiAgICB9CiAg
ICByZXR1cm4gbW92aWVMZW5ndGg7Cn0KLy8KCmZ1bmN0aW9uIGZvcm1hdENsaXBMZW5ndGggKCkg
ewogIG1vdmllTGVuZ3RoID0gZ2V0TW92aWVMZW5ndGgoKTsKCiAgaWYgKGlzQ2hhcHRlcmVkQXNz
ZXQoKSkgeyAgCiAgICB0cnkgewogICAgICBpZihscG9zID09IC0xKQogICAgICAgIGxwb3MgPSBn
ZXRNb3ZpZUxlbmd0aCgpOwogICAgICBtb3ZpZUxlbmd0aCA9IGxwb3MgLSBhcG9zOwogICAgfSAK
ICAgIGNhdGNoIChlKSB7fQogIH0KCiAgaWYgKG1vdmllTGVuZ3RoID09IDApIHsKICAgIHJldHVy
bjsKICB9CgogIEVob3VycyAgID0gTWF0aC5mbG9vcihtb3ZpZUxlbmd0aC8oMzYwMCoxMDAwKSk7
CiAgRW1pbnV0ZXMgPSBNYXRoLmZsb29yKG1vdmllTGVuZ3RoLyg2MCoxMDAwKSk7CiAgRXNlY29u
ZHMgPSBNYXRoLmZsb29yKG1vdmllTGVuZ3RoLzEwMDAtKEVtaW51dGVzKjYwKSk7CgogIGlmIChF
bWludXRlczw9OSkgeyBFbWludXRlcz0iMCIrRW1pbnV0ZXMgfQogIGlmIChFc2Vjb25kczw9OSkg
eyBFc2Vjb25kcz0iMCIrRXNlY29uZHMgfQoKICBpZiAoRWhvdXJzID4gMCkgewogICAgRW1pbnV0
ZXMgPSBFbWludXRlcyAtIChFaG91cnMgKiA2MCk7CiAgICBpZiAoRW1pbnV0ZXM8PTkpIHsgRW1p
bnV0ZXM9IjAiK0VtaW51dGVzIH0KICAgICAgdG90YWxUaW1lID0gRWhvdXJzICsiOiIrIEVtaW51
dGVzICsiOiIrIEVzZWNvbmRzOwogIH0gZWxzZSB7CiAgICB0b3RhbFRpbWUgPSBFbWludXRlcyAr
IjoiKyBFc2Vjb25kczsKICB9Cn0KCgovLyBOb3RlOiBjdXJyZW50UG9zIHNvbWV0aW1lcyBpcyBh
IFN0cmluZywgZXZlbiB0aG91Z2gKLy8gaXQncyBhbHdheXMgbnVtZXJpYy4gU28gaWYgY3VycmVu
dFBvcyBpcyAiMTIzNCIgCi8vIGN1cnJlbnRQb3MgKyA1ID09ICIxMjM0NSIgCnZhciBzZWVrX3Vu
Z3JleWVkID0gZmFsc2U7CmZ1bmN0aW9uIHVwZGF0ZVBvcyhjdXJyZW50UG9zLCB0b3RhbCkgewog
IGlmICggUGxheUxpc3QgPT0gbnVsbCApIHsKICAgIHJldHVybjsKICB9CiAgdHJ5IHsKICAgZG9j
dW1lbnQuUVRQbGF5ZXJPYmplY3QuU2V0Q29udHJvbGxlclZpc2libGUoZmFsc2UpOwogIH0gY2F0
Y2ggKGUpIHsKCiAgfQoKICBmb3JtYXRDbGlwTGVuZ3RoKCk7CiAgaWYgKGN1cnJlbnRQb3MgPT0g
bnVsbCkgewogICAgY3VycmVudFBvcyA9IGdldEN1cnJlbnRQb3NpdGlvbigpOwogIH0KICAgIAog
IGN1cnJlbnRQb3MgPSBuZXcgTnVtYmVyKCBjdXJyZW50UG9zICk7IC8vIGluY2FzZSBpdCdzIGEg
c3RyaW5nCgogIGlmIChpc0NoYXB0ZXJlZEFzc2V0KCkpIHsgCiAgICB0cnkgewogICAgICBkb2N1
bWVudC5RVFBsYXllck9iamVjdC5TZXRTdGFydFRpbWUocGFyc2VJbnQoYXBvcykpOwogICAgICBp
ZihscG9zID09IC0xKSBscG9zID0gZ2V0TW92aWVMZW5ndGgoKTsKICAgICAgZG9jdW1lbnQuUVRQ
bGF5ZXJPYmplY3QuU2V0RW5kVGltZShwYXJzZUludChscG9zKSk7CiAgICAgIG1vdmllTGVuZ3Ro
ID0gbHBvcyAtIGFwb3M7CiAgICAgIGN1cnJlbnRQb3MgPSBnZXRDdXJyZW50UG9zaXRpb24oKTsK
ICAgICAgY3VycmVudFBvcyA9IG5ldyBOdW1iZXIoIGN1cnJlbnRQb3MgKTsgLy8gaW5jYXNlIGl0
J3MgYSBzdHJpbmcKICAgICAgY3VycmVudFBvcyA9IGN1cnJlbnRQb3MgIC0gYXBvczsKICAgIH0g
Y2F0Y2ggKGUpIHt9CgogICAgLy8gU29sdmUgY2hhcHRlcmluZyBzZWVrIGRyYWdnaW5nIHByb2Js
ZW0KICAgIGlmKGN1cnJlbnRQb3MgPT0gMCkKICAgIHsKICAgICAgY3VycmVudFBvcyA9IG5ldyBO
dW1iZXIgKHNldFNlZWtWYWwpOyAvL3NlZWsgYmFyIGlzIGluIHRoZSBjb3JyZWN0IHBvc2l0aW9u
CiAgICAgIGRvY3VtZW50LlFUUGxheWVyT2JqZWN0LlNldFRpbWUoY3VycmVudFBvcythcG9zKTsg
Ly9wbGF5aW5nIGF0IHRoZSBjb3JyZWN0IHNlZWsgYmFyIHBvc2l0aW9uCiAgICB9CiAgfQoKICAv
L2RlYnVnICggInVwZGF0ZVBvczogY3VycmVudFBvczogIiArIGN1cnJlbnRQb3MgKTsKICAvLyBE
byB0aGUgQXVkaXQgbG9nZ2luZyBzdHVmZiAxIHNlY29uZCBpbnRvIHRoZSBjbGlwCiAgdmFyIGl0
ZW0gPSBQbGF5TGlzdC5nZXRDdXJyZW50SXRlbSgpOwoKICAgIC8vIFNldHVwIHRoZSBoZWFydGJl
YXRpbmcKICAgIGlmICggY3VycmVudFBvcyA+PSAxICkgewogICAgICBpZiAoIGl0ZW0uaGVhcnRi
ZWF0ICYmICghIGl0ZW0uaGVhcnRiZWF0RmlyZWQgKSApIHsKICAgICAgICBpZiAodWlQYXVzZVN0
YXRlID09IDApCiAgICAgICAgewogICAgICAgICAgZGVidWcgKCAiaGVhcnRiZWF0OiAiICsgaXRl
bS5oZWFydGJlYXQgKTsKICAgICAgICAgIGV2YWwgKCBpdGVtLmhlYXJ0YmVhdCApOwogICAgICAg
ICAgUGxheUxpc3QuZ2V0Q3VycmVudEl0ZW0oKS5oZWFydGJlYXRGaXJlZCA9IHRydWU7CiAgICAg
ICAgfQogICAgICB9CiAgICB9CgogICAgaWYgKCBjdXJyZW50UG9zID49IDEgKSB7CiAgICAgIGlm
ICggaXRlbS5zdGFydEV2ZW50ICYmICghIGl0ZW0uc3RhcnRFdmVudEZpcmVkICkgKSB7CiAgICAg
ICAgdHJhY2UgKCAiU3RhcnRFdmVudDogIiArIGl0ZW0uc3RhcnRFdmVudCApOwogICAgICAgIGV2
YWwgKCBpdGVtLnN0YXJ0RXZlbnQgKTsKICAgICAgICBQbGF5TGlzdC5nZXRDdXJyZW50SXRlbSgp
LnN0YXJ0RXZlbnRGaXJlZCA9IHRydWU7CiAgICAgICAgdHJpZ2dlckV2ZW50KFBMQVlFUl9TVEFS
VF9FVkVOVCk7CiAgICAgIH0KICAgIH0KICAgIGlmIChjdXJyZW50UG9zID4gbW92aWVMZW5ndGgv
MikgewogICAgICBpZiAoIGl0ZW0ubWlkRXZlbnQgJiYgKCEgaXRlbS5taWRFdmVudEZpcmVkICkg
KSB7CiAgICAgICAgdHJhY2UgKCAiTWlkRXZlbnQ6ICIgKyBpdGVtLm1pZEV2ZW50ICk7CiAgICAg
ICAgZXZhbCAoIGl0ZW0ubWlkRXZlbnQgKTsKICAgICAgICBpdGVtLm1pZEV2ZW50RmlyZWQgPSB0
cnVlOwogICAgICAgIHRyaWdnZXJFdmVudChQTEFZRVJfTUlEX0VWRU5UKTsKICAgICAgfQogICAg
fQoKCgogICAgLyogd29ya2Fyb3VuZCBmb3Igc2xpZGVyIGRyYWcgYWZ0ZXIgc3RvcC4gd2FpdCB0
byByZXNldCBwb3MuCiAgICAgIDUgaXMgYW4gYXJiaXRyYXJ5LCBzbWFsbCBudW1iZXIsIGRlbW9u
c3RyYXRpbmcgcHJvZ3Jlc3MuICovCiAgICBpZiAoc2Vla1dhaXQgPT0gMCB8fCBNYXRoLmFicyhj
dXJyZW50UG9zIC0gc2V0U2Vla1ZhbCkgPCA1KSB7CiAgICAgICAgc2Vla1dhaXQgPSAwOwogICAg
fSBlbHNlIHsKICAgICAgICBjdXJyZW50UG9zID0gbmV3IE51bWJlciAoc2V0U2Vla1ZhbCk7CiAg
ICB9CiAgICBpZiAodG90YWxUaW1lID09IC0xKSB7CiAgICAgICAgc2Vla191bmdyZXllZCA9IGZh
bHNlOwogICAgICAgIC8vIGZpcnN0IHRpbWUKICAgICAgICBpZiAodG90YWwgPT0gbnVsbCkgewog
ICAgICAgICAgICBnZXRNb3ZpZUxlbmd0aCgpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
IG1vdmllTGVuZ3RoID0gdG90YWw7CiAgICAgICAgfQogICAgICAgIGZvcm1hdENsaXBMZW5ndGgo
KTsKICAgICAgICB2YXIgdHJhY2tlcl9zcmNfZGlzID0gJCgidWlQcm9ncmVzc1NsaWRlciIpLnNy
YzsKICAgICAgICBpZih0cmFja2VyX3NyY19kaXMuaW5kZXhPZigiZGlzYWJsZWQiKSA9PSAtMSl7
CiAgICAgICAgICAgICQoInVpUHJvZ3Jlc3NTbGlkZXIiKS5zcmMgPSBza2luX2RpciArICJ1aVBy
b2dyZXNzU2xpZGVyX2Rpc2FibGVkLmdpZiI7CiAgICAgICAgfQogICAgfSBlbHNlIGlmIChzZWVr
RHJhZ2dpbmcgIT0gMSkgewogICAgICAgIGRpZmYgPSBzZWVrQmFyTGVuZ3RoICogY3VycmVudFBv
czsKICAgICAgICBuZXdTZWVrWCA9IGRpZmYvbW92aWVMZW5ndGg7CiAgICAgICAgbmV3U2Vla1gg
PSBwYXJzZUludChuZXdTZWVrWC50b0ZpeGVkKDApKTsKCiAgICAgICAgaWYgKG5ld1NlZWtYID49
IDAgJiYgbmV3U2Vla1ggPCBzZWVrQmFyQ2hlY2sgKyAzKSB7CiAgICAgICAgICAgICQoInByb2dy
ZXNzU2xpZGVyIikuc3R5bGUubGVmdCA9IHNlZWtTdGFydFggKyBuZXdTZWVrWDsKICAgICAgICB9
IGVsc2UgaWYgKG5ld1NlZWtYID49IHNlZWtCYXJDaGVjaykgewogICAgICAgICAgICAkKCJwcm9n
cmVzc1NsaWRlciIpLnN0eWxlLmxlZnQgPSBzZWVrRW5kWDsgLy9zZWVrU3RhcnRYICsgc2Vla0Jh
ck9mZnNldDsKICAgICAgICB9CiAgICAgICAgaWYoIXNlZWtfdW5ncmV5ZWQpewogICAgICAgICAg
ICBzZWVrX3VuZ3JleWVkID0gdHJ1ZTsKICAgICAgICAgICAgJCgidWlQcm9ncmVzc1NsaWRlciIp
LnNyYyA9IHNraW5fZGlyICsgInVpUHJvZ3Jlc3NTbGlkZXIuZ2lmIjsKICAgICAgICB9CiAgICB9
CgogICAgaWYgKGN1cnJlbnRQb3MgPiBtb3ZpZUxlbmd0aCkgewogICAgICAgIGN1cnJlbnRQb3Mg
PSBuZXcgTnVtYmVyKG1vdmllTGVuZ3RoKTsgLy9kdW1iIGhhY2suIHByZXZlbnQgZWxhcHNlZCB0
aW1lIGZyb20gZXhjZWVkaW5nIHRvdGFsOwogICAgfQoJCgl0cmlnZ2VyRXZlbnRUaW1lcnMoKTsK
CiAgICAvLy8gZGVidWcgKCAidXBkYXRlUG9zOiBjdXJyZW50UG9zOiAiICsgY3VycmVudFBvcyAr
ICIsIG1vdmllTGVuZ3RoOiAiICsgbW92aWVMZW5ndGggKTsKICAgIC8vIGhhY2sgZm9yIFJlYWws
IGlmIHdlJ3JlIGdvbm5hIHJlYWNoIHRoZSBlbmQgaW4gMjAwMG1zLCB0aGVuIHNldCBhIHRpbWVv
dXQKICAgIC8vIHRvIGZpcmUgaW4gMzAwMCBtaWxsaXNlY29uZHMKICAgIC8vIHdlIGNhbid0IHdh
aXQgZm9yIGN1cnJlbnRQb3MgPT0gbW92aWVMZW5ndGgsIGIvYyBjdXJyZW50UG9zIGNvdWxkIGdl
dCByZXNldCB0byAwCiAgICAvLyBpZiB3ZSBkb250IGNhdGggaXQgaW4gdGltZQogICAgdmFyIGN1
cnJlbnRQbHVzMlNlYyA9IGN1cnJlbnRQb3MgKyA0MDA7CiAgICAvL2lmICggKGN1cnJlbnRQbHVz
MlNlYyAgPj0gIG1vdmllTGVuZ3RoKSAmJiBtb3ZpZUxlbmd0aCAhPSAwKSB7CiAgICBpZiAoICgg
KGN1cnJlbnRQbHVzMlNlYyAgPj0gIG1vdmllTGVuZ3RoKSAmJiBtb3ZpZUxlbmd0aCAhPSAwKSB8
fCAoY3VycmVudFBvcyA9PSBscG9zICYmIG1vdmllTGVuZ3RoICE9IDAgJiYgaXNDaGFwdGVyZWRB
c3NldCgpKSApIHsKICAgICAgaWYgKCAhRW5kaW5nICkgewoJdHJhY2UgKCAiRW5kRmlsZUV2ZW50
IGFib3V0IHRvIGJlIGNhbGxlZDogY3VycmVudFBvczogIiArIGN1cnJlbnRQb3MgKyAiLCBtb3Zp
ZUxlbmd0aDogIiArIG1vdmllTGVuZ3RoICsiLCBjdXJyZW50UGx1czJTZWM6ICIgKyBjdXJyZW50
UGx1czJTZWMgKTsKCXNldFRpbWVvdXQgKCAiRW5kRmlsZUV2ZW50KCkiLCAzMDAwICk7CglFbmRp
bmcgPSB0cnVlOwogICAgICB9CiAgICAgIC8vLyAgICAgIGNsaWNrQnV0dG9uKCd1aVN0b3AnKTsK
ICAgIH0KCiAgICBDaG91cnMgICA9IE1hdGguZmxvb3IoY3VycmVudFBvcy8oMzYwMCoxMDAwKSk7
CiAgICBDbWludXRlcyA9IE1hdGguZmxvb3IoY3VycmVudFBvcy8oNjAqMTAwMCkpOwogICAgQ3Nl
Y29uZHMgPSBNYXRoLmZsb29yKGN1cnJlbnRQb3MvMTAwMC0oQ21pbnV0ZXMqNjApKTsKCiAgICBp
ZiAoQ21pbnV0ZXM8PTkpIHsgQ21pbnV0ZXM9IjAiK0NtaW51dGVzOyB9CiAgICBpZiAoQ3NlY29u
ZHM8PTkpIHsgQ3NlY29uZHM9IjAiK0NzZWNvbmRzOyB9CgogICAgaWYgKENob3VycyA+IDApIHsK
ICAgICAgICBDbWludXRlcyA9IENtaW51dGVzIC0gKENob3VycyAqIDYwKTsKICAgICAgICBpZiAo
Q21pbnV0ZXM8PTkpIHsgQ21pbnV0ZXM9IjAiK0NtaW51dGVzOyB9CiAgICAgICAgZWxhcHNlZCA9
IENob3VycyArIjoiKyBDbWludXRlcyArIjoiKyBDc2Vjb25kczsKICAgIH0gZWxzZSB7CiAgICAg
ICAgZWxhcHNlZCA9IENtaW51dGVzICsiOiIrIENzZWNvbmRzOwogICAgfQoKICAgIGlmIChsaXZl
c3RyZWFtICE9ICJ0cnVlIikgewogICAgICAgICBpZiAoKGVsYXBzZWQuaW5kZXhPZigiLSIpICE9
IC0xKSB8fCAodG90YWxUaW1lID09IC0xKSkgewogICAgICAgICAgICAkKCdwb3NpdGlvbicpLmlu
bmVySFRNTCA9ICIiOwogICAgICAgICB9IGVsc2UgewoJICAgIAl2YXIgY3VycmVudFRpbWVyVGV4
dCA9IGVsYXBzZWQ7CgkgICAgCWlmIChjc3MoJCgicG9zaXRpb25Ub3RhbCIpLCAidmlzaWJpbGl0
eSIpID09ICJ2aXNpYmxlIikgY3VycmVudFRpbWVyVGV4dCArPSAiIC8gIiArIHRvdGFsVGltZTsK
ICAgICAJCWlmICggJCgncG9zaXRpb24nKS5pbm5lckhUTUwgIT0gY3VycmVudFRpbWVyVGV4dCAp
IHsKICAgICAgICAJJCgncG9zaXRpb24nKS5pbm5lckhUTUwgPSBjdXJyZW50VGltZXJUZXh0Owog
ICAgICAgCSB9CiAgICAgICAgIC8vJCgncG9zaXRpb24nKS5pbm5lckhUTUwgPSBlbGFwc2VkICsg
IiAvICIgKyB0b3RhbFRpbWU7CgogICAgICAgIFRJTUVEaW5mbyAgPSBHZXRMb2NhbGl6ZWRUZXh0
KCJUSU1FIikgKyAiOiAiOwogICAgICAgIFRJTUVEaW5mbyArPSBDaG91cnMrIiAiICsgR2V0TG9j
YWxpemVkVGV4dCgiSE9VUlMiICkgKyAiICIrCgkgICAgICBDbWludXRlcysiICIgKyBHZXRMb2Nh
bGl6ZWRUZXh0KCJNSU5VVEVTIikgKyIgIitDc2Vjb25kcysiICIgKyBHZXRMb2NhbGl6ZWRUZXh0
KCJTRUNPTkRTIikgKyIgIiArCgkgICAgICBHZXRMb2NhbGl6ZWRUZXh0KCJPRiIpICsgIiAiOwoJ
ICAgIAoJICAgIFRJTUVEaW5mbyArPSBFaG91cnMrIiAiICsgR2V0TG9jYWxpemVkVGV4dCgiSE9V
UlMiKSsgIiAiICsgRW1pbnV0ZXMrICIgIiArIEdldExvY2FsaXplZFRleHQoIk1JTlVURVMiKSAr
IAoJICAgICAgIiAiICtFc2Vjb25kcysiICIgKyBHZXRMb2NhbGl6ZWRUZXh0KCJTRUNPTkRTIiAp
OwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgICQoJ3Bvc2l0aW9uJykuaW5uZXJIVE1M
ID0gIiI7CiAgICAgfSAKCiAgICBpZiAoRW5kaW5nKSB7CiAgICAgIGtpbGx0aW1lcnMoKTsgLy8g
ZG9uJ3QgY2FsbCB1cGRhdGVQb3MgYWdhaW4KICAgIH0KfQoKdmFyIEVuZGluZyA9IGZhbHNlOwpm
dW5jdGlvbiBFbmRGaWxlRXZlbnQoKSB7CiAgdHJhY2UgKCJFbmRGaWxlRXZlbnQ6IEdvdCB0byBl
bmQhIiApOwogIHRvdGFsVGltZSA9IC0xOwogIG1vdmllTGVuZ3RoID0gLTE7CiAgdG90YWwgPSBu
dWxsOwoKICBjbGlja0J1dHRvbigndWlTdG9wJyApOwoKICAvLyBOZWVkIHRvIHByZXZlbnQgYWR2
YW5jaW5nIHRvIHRoZSBuZXh0IGl0ZW0gdW50aWwgYWZ0ZXIgCiAgLy8gdGhlIHN0b3AgYnV0dG9u
IHdhcyBjbGlja2VkIChyYWNlIGNvbmRpdGlvbikKICBzZXRUaW1lb3V0KCJQbGF5TmV4dEl0ZW0o
KTsiLCAxMDAwICk7ICAKICB0cmFjZSAoIlNldHRpbmcgRW5kaW5nIHRvIGZhbHNlIiApOwogIEVu
ZGluZyA9IGZhbHNlOwp9CgovL0JlZ2luIG1haW4gYWNjZXNzaWJpbGl0eSBjb2RlCgpkb2N1bWVu
dC5vbmtleWRvd24gPSBrZXlEb3duOyAvL2FkZGVkIGZvciBhY2Nlc3NpYmlsaXR5CmRvY3VtZW50
Lm9ua2V5dXAgPSBrZXlVcDsgLy9hZGRlZCBmb3IgYWNjZXNzaWJpbGl0eQoKZnVuY3Rpb24gY2hh
bmdlUG9zaXRpb24odHlwZSkgewogICAgbW92aWVMZW5ndGggPSBnZXRNb3ZpZUxlbmd0aCgpOwog
ICAgY3VycmVudFBvc2l0aW9uID0gZ2V0Q3VycmVudFBvc2l0aW9uKCk7CiAgICBwZXJjZW50RG9u
ZSA9IE1hdGguZmxvb3IoKGN1cnJlbnRQb3NpdGlvbiAvIG1vdmllTGVuZ3RoKSAqIDEwMCk7Cgog
ICAgaWYgKHR5cGUgPT0gImZvcndhcmQiKSB7CglMQ0xvZyggIkZvcndhcmQiICk7ICAvLyBTZW5k
IEV2ZW50IE5vdGlmaWNhdGlvbiB0byBMQwogICAgICAgIHZhciB0ZW1wUGVyY2VudERvbmUgPSBw
ZXJjZW50RG9uZSArIDEwOwogICAgICAgIGlmICh0ZW1wUGVyY2VudERvbmUgPCBtb3ZpZUxlbmd0
aCkgewogICAgICAgICAgICBwZXJjZW50RG9uZSA9IHRlbXBQZXJjZW50RG9uZTsKLy8gICAgICAg
ICAgICBkb2N1bWVudC5RVFBsYXllck9iamVjdC5TZXRQb3NpdGlvbihtb3ZpZUxlbmd0aCAqIChw
ZXJjZW50RG9uZSAvIDEwMCkpOwogICAgICAgICAgICAvL2RvY3VtZW50LlFUUGxheWVyT2JqZWN0
LlN0ZXAocGVyY2VudERvbmUpOwogICAgICAgICAgICBkb2N1bWVudC5RVFBsYXllck9iamVjdC5T
ZXRUaW1lKHBlcmNlbnREb25lKTsKICAgICAgICB9CiAgICB9IGVsc2UgaWYgKHR5cGUgPT0gInJl
d2luZCIpIHsKCUxDTG9nKCAiUmV3aW5kIiApOyAgLy8gU2VuZCBFdmVudCBOb3RpZmljYXRpb24g
dG8gTEMKICAgICAgICB2YXIgdGVtcFBlcmNlbnREb25lID0gcGVyY2VudERvbmUgLSAxMDsKICAg
ICAgICBpZiAodGVtcFBlcmNlbnREb25lID4gMCkgewogICAgICAgICAgICBwZXJjZW50RG9uZSA9
IHRlbXBQZXJjZW50RG9uZTsKLy8gICAgICAgICAgICBkb2N1bWVudC5RVFBsYXllck9iamVjdC5z
ZXRQb3NpdGlvbihtb3ZpZUxlbmd0aCAqIChwZXJjZW50RG9uZSAvIDEwMCkpOwogICAgICAgICAg
ICAvL2RvY3VtZW50LlFUUGxheWVyT2JqZWN0LlN0ZXAocGVyY2VudERvbmUpOwogICAgICAgICAg
ICBkb2N1bWVudC5RVFBsYXllck9iamVjdC5TZXRUaW1lKHBlcmNlbnREb25lKTsKICAgICAgICB9
CiAgICB9Cn0KCmZ1bmN0aW9uIGtleVVwKGUpIHsKICAgIGlmIChpc0dlY2tvKSB7CiAgICAgICAg
a2V5Y29kZSA9IGUud2hpY2g7CiAgICB9IGVsc2UgewogICAgICAgIGtleWNvZGUgPSBldmVudC5r
ZXlDb2RlOwogICAgfQoKICAgIGlmIChrZXljb2RlID09IDE3KSB7IC8vIENUUkwKICAgICAgICBj
dGxfcHJlc3NlZCA9IGZhbHNlOwogICAgfQoKICAgIGlmIChrZXljb2RlID09IDE4KSB7IC8vIEFM
VAogICAgICAgIGFsdF9wcmVzc2VkID0gZmFsc2U7CiAgICB9CiAgICAKICAgIHJldHVybiBmYWxz
ZTsKfQpmdW5jdGlvbiBrZXlEb3duKGUpIHsKICAgIGlmIChpc0dlY2tvKSB7CiAgICAgICAga2V5
Y29kZSA9IGUud2hpY2g7CiAgICB9IGVsc2UgewogICAgICAgIGtleWNvZGUgPSBldmVudC5rZXlD
b2RlOwogICAgfQogIHRyeSB7CiAgICBkYVBsYXllclN0YXRlID0gZG9jdW1lbnQuUVRQbGF5ZXJP
YmplY3QuR2V0UmF0ZSgpOwogIH0gY2F0Y2ggKGUpIHsKICAgIGRhUGxheWVyU3RhdGUgPSAxOwog
IH0KICAgIAogICAgaWYgKGtleWNvZGUgPT0gMTcpIHsgLy8gQ1RSTAogICAgICAgIGN0bF9wcmVz
c2VkID0gdHJ1ZTsKICAgIH0gZWxzZSBpZiAoa2V5Y29kZSA9PSAxOCkgeyAvLyBBTFQKICAgICAg
ICBhbHRfcHJlc3NlZCA9IHRydWU7CiAgICB9IGVsc2UgaWYgKGtleWNvZGUgPT0gODApIHsgLy8g
UCBLRVkKICAgICAgICBpZiAoZGFQbGF5ZXJTdGF0ZSA9PSAwKSB7CiAgICAgICAgICAgIGNsaWNr
QnV0dG9uKCd1aVBsYXknKTsgLy9QTEFZCiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaWYg
KGxpdmVzdHJlYW0gPT0gInRydWUiKSB7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAvL2lmIChkYVBsYXllclN0YXRlID09IDMpIHsK
ICAgICAgICAgICAgICAgIGlmIChkYVBsYXllclN0YXRlID09IDEpIHsKICAgICAgICAgICAgICAg
ICAgICBjbGlja0J1dHRvbigndWlQYXVzZScpOyAvL1BBVVNFCiAgICAgICAgICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgICAgICAgIGNsaWNrQnV0dG9uKCd1aVBsYXknKTsgLy9QTEFZCiAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9IGVsc2UgaWYgKGtl
eWNvZGUgPT0gMzIpIHsgLy8gU1BBQ0UgQkFSCiAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBuZWVk
ZWQgZm9yIElFNS41IGJ1ZwogICAgfSBlbHNlIGlmIChrZXljb2RlID09IDgzKSB7CiAgICAgICAg
Y2xpY2tCdXR0b24oJ3VpU3RvcCcpOyAvL1NUT1AKICAgIH0gZWxzZSBpZiAoa2V5Y29kZSA9PSA4
NSkgeyAvLyBVCiAgICAgICAgc2V0Vm9sdW1lKCd1cCcpOwogICAgfSBlbHNlIGlmIChrZXljb2Rl
ID09IDY4KSB7IC8vIEQKICAgICAgICBzZXRWb2x1bWUoJ2Rvd24nKTsKICAgIH0gZWxzZSBpZiAo
a2V5Y29kZSA9PSA3NykgeyAvLyBNCiAgICAgICAgTWFrZUl0TXV0ZSgpOwogICAgfSBlbHNlIGlm
IChrZXljb2RlID09IDY2KSB7IC8vIEIKICAgICAgICBpZiAoY3RsX3ByZXNzZWQpIHsKICAgICAg
ICAgICAgLy9TS0lQIFRPIFBSRVZJT1VTIENIQVBURVIKICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICBjaGFuZ2VQb3NpdGlvbigicmV3aW5kIik7ICAvL1JFV0lORAogICAgICAgIH0KICAgIH0g
ZWxzZSBpZiAoa2V5Y29kZSA9PSA3MCkgeyAvLyBGCiAgICAgICAgaWYgKGN0bF9wcmVzc2VkKSB7
CiAgICAgICAgICAgIC8vU0tJUCBUTyBORVhUIENIQVBURVIKICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICBjaGFuZ2VQb3NpdGlvbigiZm9yd2FyZCIpOyAgLy9GQVNUIEZPUldBUkQKICAgICAg
ICB9CiAgICB9Cn0KCmZ1bmN0aW9uIGdldEJyb3dzZXJXKCkgewogICAgdmFyIG15V2lkdGggPSAz
MjA7IC8vIGRlZmF1bHQgdG8gbGFyZ2Ugd2lkZ2V0IHNpemUKICAgIGlmKCB0eXBlb2YoIHdpbmRv
dy5pbm5lcldpZHRoICkgPT0gJ251bWJlcicgKSB7CiAgICAgICAgLy9Ob24tSUUKICAgICAgICBt
eVdpZHRoID0gd2luZG93LmlubmVyV2lkdGg7CiAgICB9IGVsc2UgaWYoIGRvY3VtZW50LmRvY3Vt
ZW50RWxlbWVudCAmJiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGggKSB7CiAg
ICAgICAgLy9JRSA2KyBpbiAnc3RhbmRhcmRzIGNvbXBsaWFudCBtb2RlJwogICAgICAgIG15V2lk
dGggPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGg7CiAgICB9IGVsc2UgaWYo
IGRvY3VtZW50LmJvZHkgJiYgZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aCApIHsKICAgICAgICAv
L0lFIDQgY29tcGF0aWJsZQogICAgICAgIG15V2lkdGggPSBkb2N1bWVudC5ib2R5LmNsaWVudFdp
ZHRoOwogICAgfQogICAgcmV0dXJuIG15V2lkdGg7Cn0KCmZ1bmN0aW9uIGdldEJyb3dzZXJIKCkg
ewogICAgdmFyIG15SGVpZ2h0ID0gMzE3OyAvLyBkZWZhdWx0IHRvIGxhcmdlIHdpZGdldCBzaXpl
CiAgICBpZiggdHlwZW9mKCB3aW5kb3cuaW5uZXJIZWlnaHQgKSA9PSAnbnVtYmVyJyApIHsKICAg
ICAgICAvL05vbi1JRQogICAgICAgIG15SGVpZ2h0ID0gd2luZG93LmlubmVySGVpZ2h0OwogICAg
fSBlbHNlIGlmKCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQgJiYgZG9jdW1lbnQuZG9jdW1lbnRF
bGVtZW50LmNsaWVudEhlaWdodCApIHsKICAgICAgICAvL0lFIDYrIGluICdzdGFuZGFyZHMgY29t
cGxpYW50IG1vZGUnCiAgICAgICAgbXlIZWlnaHQgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQu
Y2xpZW50SGVpZ2h0OwogICAgfSBlbHNlIGlmKCBkb2N1bWVudC5ib2R5ICYmIGRvY3VtZW50LmJv
ZHkuY2xpZW50SGVpZ2h0ICkgewogICAgICAgIC8vSUUgNCBjb21wYXRpYmxlCiAgICAgICAgbXlI
ZWlnaHQgPSBkb2N1bWVudC5ib2R5LmNsaWVudEhlaWdodDsKICAgIH0KICAgIHJldHVybiBteUhl
aWdodDsKfQoKZnVuY3Rpb24gY2hlY2tOc01vdXNlQm91bmRzKGUpewogICAgLy8gaGV5LCB0aGFu
a3MgTmV0c2NhcGUhCiAgICBpZiAoaXNHZWNrbykgewogICAgICAgIHZhciBtb3VzZVggPSBlLnBh
Z2VYOwogICAgICAgIHZhciBtb3VzZVkgPSBlLnBhZ2VZOwogICAgfSBlbHNlIHsKICAgICAgICB2
YXIgbW91c2VYID0gZXZlbnQuY2xpZW50WDsKICAgICAgICB2YXIgbW91c2VZID0gZXZlbnQuY2xp
ZW50WTsKICAgIH0KCiAgICBpZiggbW91c2VYIDw9IDAgfHwgbW91c2VYID4gZ2V0QnJvd3Nlclco
KSB8fCBtb3VzZVkgPD0gMCB8fCBtb3VzZVkgPiBnZXRCcm93c2VySCgpICl7CiAgICAgICAgZW5k
RHJhZygpOwogICAgfQp9CgpmdW5jdGlvbiBvbmxvYWRJbml0KCkgewogICAkKCJjYyIpLnN0eWxl
LnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKICAgJCgicHJlZmVyZW5jZXMiKS5zdHlsZS52aXNpYmls
aXR5ID0gImhpZGRlbiI7CiAgIHNlZWtfdW5ncmV5ZWQgPSB0cnVlOwogICAkKCJ1aVByb2dyZXNz
U2xpZGVyIikuc3JjID0gc2tpbl9kaXIgKyAidWlQcm9ncmVzc1NsaWRlci5naWYiOwogIC8vIGFs
ZXJ0ICgnb25sb2FkSW5pdCBjYWxsZWQnICk7CiAgZG9jdW1lbnQub25tb3VzZXVwID0gZW5kRHJh
ZzsKICAvLyBzdG9wIGRyYWcgZXZlbnQgaWYgdGhlIG1vdXNlIGxlYXZlcyB0aGUgZnVndSBpZnJh
bWUKICAvLyBvbm1vdXNlbGVhdmUgb25seSB3b3JrcyBmb3IgSUUKICAvLyBvbm1vdXNlb3V0IHBy
ZXZlbnRzIHNlZWtpbmcgYmFja3dhcmRzLCBidXQgaXMgcHJlc2VudAogIC8vIGluIEdlY2tvLiBz
aWdoLgogIGRvY3VtZW50LmJvZHkub25tb3VzZWxlYXZlID0gZW5kRHJhZzsKICBpZiAoaXNHZWNr
bykgewogICAgZG9jdW1lbnQuYm9keS5vbm1vdXNlb3V0ID0gY2hlY2tOc01vdXNlQm91bmRzOwog
IH0KICB0cnkgewogIAl2YXIgc3RhdHVzID0gZG9jdW1lbnQuUVRQbGF5ZXJPYmplY3QuR2V0UGx1
Z2luU3RhdHVzKCk7CgkgIGlmICggdHlwZW9mKHBsYXlsaXN0X3VybCkgIT0gInVuZGVmaW5lZCIg
KSB7CiAgCSAgZGVidWcgKCJhZCBwbGF5bGlzdCB1cmw6ICIgKyBwbGF5bGlzdF91cmwgKTsKICAJ
fQogIAlpZiAoIGF1dG9wbGF5ID09ICJ0cnVlIiApIHsKICAgIAljbGlja0J1dHRvbigndWlQbGF5
Jyk7CiAgICAJc2V0Vm9sdW1lKDUwKTsKICAJfQogIAllbHNlIHsKICAgIAljbGlja0J1dHRvbign
dWlTdG9wJyk7CiAgICAJc2V0Vm9sdW1lKDUwKTsKICAJfQoKICAJdXBkYXRlUG9zKCk7CiAgCWxv
YWRfaW1hZ2VzKCk7CiAgCXRoaXMuZm9jdXMoKTsKCQl0cmlnZ2VyRXZlbnQoUExBWUVSX0xPQURF
RCk7CiAgfWNhdGNoKGUpewoJCWlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoInBt
bXNpZCIpICE9IC0xICYmIFVBLmJyb3dzZXIuaW5kZXhPZigiaXJlZm94IikgIT0gLTEpewoJCQl2
YXIgcmVzdGFydFVybCA9IGRvY3VtZW50LmxvY2F0aW9uLmhyZWY7CgkJCXJlc3RhcnRVcmwgPSBy
ZXN0YXJ0VXJsLnJlcGxhY2UoInQ9dW5pIiwgInQ9bGFyZ2UtbWFjIik7CgkJCWRvY3VtZW50Lmxv
Y2F0aW9uLmhyZWYgPSByZXN0YXJ0VXJsOwoJCX1lbHNlewoJCQl2YXIgcmVzdGFydFVybCA9IGRv
Y3VtZW50LmxvY2F0aW9uLmhyZWY7CgkJCS8vIEhhbmRsZSB3bXNwbHMgZm9yIE1hYy4gIFNob3Vs
ZCBvbmx5IHBsYXkgdGhlIDFzdCBhc3NldC4KCQkJaWYgKGlzTWFjIHx8IHJlc3RhcnRVcmwuaW5k
ZXhPZigid21zcGxzIikgIT0gLTEpewoJCQkJdmFyIGFzc2V0ID0gUGxheUxpc3QuaXRlbXNbUGxh
eUxpc3QuY3VycmVudEl0ZW1JbmRleF0ud21zaWQ7CgkJCQl2YXIgcG1tc2lkID0gUGxheUxpc3Qu
aXRlbXNbUGxheUxpc3QuY3VycmVudEl0ZW1JbmRleF0uY3BpZDsKCQkJCXZhciB0ID0gcmVzdGFy
dFVybC5zcGxpdCgiJiIpOwoJCQkJcmVzdGFydFVybCA9ICIiOwoJCQkJZm9yIChpPTA7aTx0Lmxl
bmd0aDtpKyspewoJCQkJCWlmICh0W2ldLmluZGV4T2YoInQ9dW5pIikgIT0gLTEpIHRbaV0gPSB0
W2ldLnJlcGxhY2UoInQ9dW5pIiwgInQ9bGFyZ2UtbWFjIik7CgkJCQkJaWYgKHRbaV0uaW5kZXhP
ZigidHNpemU9dW5pIikgIT0gLTEpIHRbaV0gPSB0W2ldLnJlcGxhY2UoInRzaXplPXVuaSIsICJ0
PWxhcmdlIik7CgkJCQkgIGlmICh0W2ldLmluZGV4T2YoInF0cGxzIikgIT0gLTEpIHRbaV0gPSAi
d21zaWQ9IiArIGFzc2V0OwoJCQkJCWlmICh0W2ldLmluZGV4T2YoInJlc3RhcnRVcmwiKSAhPSAt
MSkgdFtpXSA9ICJyZXN0YXJ0VXJsPSIgKyBhc3NldDsKCQkJCQlyZXN0YXJ0VXJsICs9IHRbaV07
CgkJCQkJaWYgKGkrMSAhPSB0Lmxlbmd0aCkgcmVzdGFydFVybCArPSAgIiYiOwoJCQkJfQoJCQkJ
dHJpZ2dlckV2ZW50KFBMQVlFUl9NRURJQV9DSEFOR0VELCBQbGF5TGlzdC5nZXRQb2xsaW5nSW5m
bygpKTsKCQkJCWRvY3VtZW50LmxvY2F0aW9uLmhyZWY9cmVzdGFydFVybDsKCQkJfWVsc2V7CgkJ
CQlkb2N1bWVudC5sb2NhdGlvbi5ocmVmPSIvIiArIGZ1Z3VfdmVyc2lvbiArICIvZXJyb3JfcXQu
aHRtbD9sb2NhbGU9IiArIExPQ0FMRSArICImdHRpZD0iICsgdHRpZCArICImdHR2ZXJzaW9uPSIg
KyB0dHZlcnNpb24gKyAiJnZlcnNpb249IiArIGZ1Z3VfdmVyc2lvbjsKCQkJfQoJCX0KICB9Cn0K
CmZ1bmN0aW9uIGVtYmVkUGxheWVyKCB3aWR0aCwgaGVpZ2h0LCBwbGF5ZXJvZmZzZXR4LCBwbGF5
ZXJvZmZzZXR5ICkgewp2YXIgY3VyclRpbWU9IG5ldyBTdHJpbmcoIG5ldyBEYXRlKCkuZ2V0VGlt
ZSgpICk7Cgpkb2N1bWVudC53cml0ZSAoICc8RElWIGlkPXBsYXllciBzdHlsZT0iYmFja2dyb3Vu
ZC1jb2xvcjogIzAwMDAwMDsgei1pbmRleDogMTsgcG9zaXRpb246YWJzb2x1dGU7IHdpZHRoOicg
KyB3aWR0aCArICc7IGhlaWdodDonICsgaGVpZ2h0ICsgJzsgbGVmdDonICsgcGxheWVyb2Zmc2V0
eCArICc7IHRvcDonICArIHBsYXllcm9mZnNldHkgKyAnOyI+JyApOwpkb2N1bWVudC53cml0ZSgi
PG9iamVjdCBjbGFzc2lkPVwiY2xzaWQ6MDJCRjI1RDUtOEMxNy00QjIzLUJDODAtRDM0ODhBQkRE
QzZCXCIgIgogICAgICAgICsgImNvZGViYXNlPVwiaHR0cDovL3d3dy5hcHBsZS5jb20vcXRhY3Rp
dmV4L3F0cGx1Z2luLmNhYlwiICIKICAgICAgICArICJ3aWR0aD0iICsgd2lkdGggKyAiIGhlaWdo
dD0iICsgaGVpZ2h0CiAgICAgICAgKyAiIGlkPVwiUVRQbGF5ZXJPYmplY3RcIiA+ICIpOwoKZG9j
dW1lbnQud3JpdGUoIjxQQVJBTSBuYW1lPVwiY29udHJvbGxlclwiIHZhbHVlPVwiZmFsc2VcIj4i
KTsKZG9jdW1lbnQud3JpdGUoIjxQQVJBTSBuYW1lPVwiYXV0b3BsYXlcIiB2YWx1ZT1cInRydWVc
Ij4iKTsKZG9jdW1lbnQud3JpdGUoIjxQQVJBTSBuYW1lPVwiYmdjb2xvclwiIHZhbHVlPVwiIiAr
IGNzcygkKCJwbGF5ZXJDb250cm9scyIpLCAiYmFja2dyb3VuZC1jb2xvciIpICsgIlwiIik7CmRv
Y3VtZW50LndyaXRlKCI8UEFSQU0gbmFtZT1cImVuYWJsZWphdmFzY3JpcHRcIiB2YWx1ZT1cInRy
dWVcIj4iKTsKZG9jdW1lbnQud3JpdGUoIjxlbWJlZCIKICAgICAgICAgICAgICAgICsgIlwiIHdp
ZHRoPSIgKyB3aWR0aCArICIgaGVpZ2h0PSIgKyBoZWlnaHQKICAgICAgICAgICAgICAgICsgIiBu
YW1lID1cIlFUUGxheWVyT2JqZWN0XCIiCgkJCQkJCQkJKyAiIGlkID0gXCJRVFBsYXllck9iamVj
dFwiIgogICAgICAgICAgICAgICAgKyAiIHZvbHVtZT1cIjUwXCIgc2NhbGU9XCJhc3BlY3RcIiBi
Z2NvbG9yPVwiIiArIGNzcygkKCJwbGF5ZXJDb250cm9scyIpLCAiYmFja2dyb3VuZC1jb2xvciIp
ICsgIlwiICIKICAgICAgICAgICAgICAgICsgIiBjb250cm9sbGVyPVwiZmFsc2VcIiAiCiAgICAg
ICAgICAgICAgICArICIgYXV0b3BsYXk9XCJ0cnVlXCIgdHlwZT1cInZpZGVvL3F1aWNrdGltZVwi
ICIKCQkrICIgcGx1Z2luc3BhZ2U9XCJodHRwOi8vd3d3LmFwcGxlLmNvbS9xdWlja3RpbWUvZG93
bmxhb2RcIiAiCiAgICAgICAgICAgICAgICArICIgZW5hYmxlamF2YXNjcmlwdD1cInRydWVcIiAi
CgkJKyAiID48L2VtYmVkPiIgKTsKCmRvY3VtZW50LndyaXRlKCc8L29iamVjdD4nKTsKZG9jdW1l
bnQud3JpdGUgKCAnPC9kaXY+JyApOwoKfQoKCnZhciBUSU1FRGluZm87Cgp2YXIgRWhvdXJzICAg
PSAwOwp2YXIgRW1pbnV0ZXMgPSAwOwp2YXIgRXNlY29uZHMgPSAwOwoKdmFyIENtaW51dGVzID0g
MDsKdmFyIENob3VycyAgID0gMDsKdmFyIENzZWNvbmRzID0gMDsKCgp2YXIgZWxhcHNlckludGVy
dmFsID0gbnVsbDsgCgpmdW5jdGlvbiBPblBsYXlTdGF0ZUNoYW5nZShvbGRfc3RhdGUsIG5ld19z
dGF0ZSkgewkgIC8vCSAgYWxlcnQoICJPblBsYXlTdGF0ZUNoYW5nZSgpLCBvbGRfc3RhdGU6ICIg
KyBvbGRfc3RhdGUgKyAiLCBuZXdfc3RhdGU6ICIgKyBuZXdfc3RhdGUgKTsKICBpZiAobmV3X3N0
YXRlID09IDApIHs7IC8vIHN0b3BwZWQgPSAwCiAgLy9pZiAodWlTdG9wU3RhdGUgPT0gMSkgezsg
Ly8gc3RvcHBlZCA9IDAKICB1cGRhdGVQb3MoMCxtb3ZpZUxlbmd0aCk7ICAgIAogIC8vCQlhbGVy
dCAoInJlYWwgcGxheWVyIHN0b3BwZWQhIiApOwogIH0KfQoKZnVuY3Rpb24gT25Qb3NMZW5ndGgo
cG9zLCB2bGVuKSB7CiAgaWYgKGxpdmVzdHJlYW0gPT0gZmFsc2UpIHsKICAgIHVwZGF0ZVBvcyhw
b3MsIHZsZW4pOyAgICAKICB9Cn0KCmZ1bmN0aW9uIE9uQnVmZmVyaW5nKG9sZF9zdGF0ZSwgbmV3
X3N0YXRlKSB7Cn0KCmZ1bmN0aW9uIE9uU2hvd1N0YXR1cyhvbGRfc3RhdGUsIG5ld19zdGF0ZSkg
ewp9CgpmdW5jdGlvbiBjaGVja1BsdWdpbihuYW1lKXsKICBwbHVnaW4gPSBuYXZpZ2F0b3IucGx1
Z2luc1tuYW1lXTsKICAvL2lmKGlzT2JqZWN0KHBsdWdpbikpewogIC8vICB2ZXJzaW9uID0gcGx1
Z2luLmRlc2NyaXB0aW9uOwogIC8vICByZXR1cm4gdHJ1ZTsKICAvL30KICByZXR1cm4gZmFsc2U7
Cn0KCmZ1bmN0aW9uIGRldGVjdFBsdWdpbigpIHsKCiAgdmFyIHZlcnNpb247CiAgdmFyIHF0X3Bs
dWdpbnMgPSAiIjsKICBpZiAoIWlzR2Vja28pIHsKICAgICAgLy8gdGhpcyBpcyBjb2RlIGZvciBh
IG1pY3Jvc29mdCBicm93c2VyIGFuZCBBT0wgYnJvd3NlciAuLi4gY2hlY2sgaWYgcXQgNy4wIGV4
aXN0cyBhbmQgcmV0dXJuIC4uCiAgICAgIHZhciBVQVN0cmluZyAgPSBuYXZpZ2F0b3IudXNlckFn
ZW50LnRvTG93ZXJDYXNlKCk7CiAgICAgIGlmKHRoaXMuVUFTdHJpbmcuaW5kZXhPZigibXNpZSIp
ICE9IC0xIHx8ICB0aGlzLlVBU3RyaW5nLmluZGV4T2YoIkFPTCIpICE9IC0xICApCiAgICAgIHsK
CSAgdmFyIHF1aWNrdGltZT1uZXcgT2JqZWN0KCk7CgkgIHF1aWNrdGltZS5pbnN0YWxsZWQ9ZmFs
c2U7CgkgIHF1aWNrdGltZS52ZXJzaW9uPTAuMDsKCSAgaWYobmF2aWdhdG9yLnBsdWdpbnMpCgkg
IHsKICAgICAgICAgICAgICB0cnkgewoJICAgICAgICAgb1FUaW1lPW5ldyBBY3RpdmVYT2JqZWN0
KCdRdWlja1RpbWVDaGVja09iamVjdC5RdWlja1RpbWVDaGVjay4xJyk7CiAgICAgICAgICAgICAg
fSBjYXRjaChlKSB7CgkgICAgICAgICAgZG9jdW1lbnQubG9jYXRpb24uaHJlZj0iLyIgKyBmdWd1
X3ZlcnNpb24gKyAiL2Vycm9yX3F0Lmh0bWw/bG9jYWxlPSIgKyBMT0NBTEUgKyAiJnR0aWQ9IiAr
IHR0aWQgKyAiJnR0dmVyc2lvbj0iICsgdHR2ZXJzaW9uICsgIiZ2ZXJzaW9uPSIgKyBmdWd1X3Zl
cnNpb247ICAKCSAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICB9CgoJICAg
ICAgaWYgKG9RVGltZSkKCSAgICAgIHsKCQkgIHF1aWNrdGltZS5pbnN0YWxsZWQ9b1FUaW1lLklz
UXVpY2tUaW1lQXZhaWxhYmxlKDApOwoJCSAgcXVpY2t0aW1lLnZlcnNpb249cGFyc2VJbnQob1FU
aW1lLlF1aWNrVGltZVZlcnNpb24udG9TdHJpbmcoMTYpLnN1YnN0cmluZygwLDMpKS8xMDA7Cgkg
ICAgICB9CgkgIH0KCSAgaWYocXVpY2t0aW1lLnZlcnNpb24gPj0gNy4wKQoJICB7CgkgICAgICBy
ZXR1cm4gdHJ1ZTsKCSAgfQoJICBlbHNlCgkgIHsgICAgCgkgICAgICBkb2N1bWVudC5sb2NhdGlv
bi5ocmVmPSIvIiArIGZ1Z3VfdmVyc2lvbiArICIvZXJyb3JfcXQuaHRtbD9sb2NhbGU9IiArIExP
Q0FMRSArICImdHRpZD0iICsgdHRpZCArICImdHR2ZXJzaW9uPSIgKyB0dHZlcnNpb24gKyAiJnZl
cnNpb249IiArIGZ1Z3VfdmVyc2lvbjsgIAoJICAgICAgcmV0dXJuIGZhbHNlOwoJICB9CiAgICAg
IH0KICAgICAgZWxzZSAKICAgICAgewoJICByZXR1cm4gdHJ1ZTsgICAgIAogICAgICB9CiAgfQog
IGVsc2UKICB7CiAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBuYXZpZ2F0b3IucGx1Z2lucy5sZW5n
dGg7IGkrKykKICAgICAgewoJICBxdF9wbHVnaW5zID0gbmV3IFN0cmluZyhuYXZpZ2F0b3IucGx1
Z2luc1tpXS5uYW1lKTsKCSAgaWYocXRfcGx1Z2lucy5pbmRleE9mKCJRdWlja1RpbWUiKSA+PSAw
ICl7CgkgICAgICB2YXIgdmVyc2lvbiA9IHBhcnNlRmxvYXQocXRfcGx1Z2lucy5zdWJzdHJpbmco
cXRfcGx1Z2lucy5pbmRleE9mKCIuIiktMSwgcXRfcGx1Z2lucy5pbmRleE9mKCIuIikrMikpOwoJ
ICAgICAgaWYodmVyc2lvbiA+PSA3LjApCgkgICAgICByZXR1cm4gdHJ1ZTsKCSAgfQogICAgICB9
CiAgICAgIGRvY3VtZW50LmxvY2F0aW9uLmhyZWY9Ii8iICsgZnVndV92ZXJzaW9uICsgIi9lcnJv
cl9xdC5odG1sP2xvY2FsZT0iICsgTE9DQUxFICsgIiZ0dGlkPSIgKyB0dGlkICsgIiZ0dHZlcnNp
b249IiArIHR0dmVyc2lvbiArICImdmVyc2lvbj0iICsgZnVndV92ZXJzaW9uOwogICAgICByZXR1
cm4gZmFsc2U7CiAgfQp9CgpEYWxhaUxsYW1hU3luYy5TdG9wUGxheSA9IHN0b3Bfc3luYzsK
</data>

          </attachment>
      

    </bug>

</bugzilla>