<?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>67647</bug_id>
          
          <creation_ts>2011-09-06 08:37:08 -0700</creation_ts>
          <short_desc>Web Inspector: do not re-create RawSourceCode when toggling pretty-print mode.</short_desc>
          <delta_ts>2011-09-08 08:04:52 -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>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>67754</dependson>
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Pavel Podivilov">podivilov</reporter>
          <assigned_to name="Pavel Podivilov">podivilov</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>rniwa</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>462550</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-09-06 08:37:08 -0700</bug_when>
    <thetext>Web Inspector: do not re-create RawSourceCode when toggling pretty-print mode.

* implement RawSourceCode.setFormatted that allows toggling pretty-print mode on the fly without recreating everything
* add RawSourceCode unit tests
* remove source mapping listeners and console messages from presentation model</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462551</commentid>
    <comment_count>1</comment_count>
      <attachid>106423</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-09-06 08:38:59 -0700</bug_when>
    <thetext>Created attachment 106423
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462552</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-06 08:40:40 -0700</bug_when>
    <thetext>Attachment 106423 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/update-webkit&apos;, &apos;--chromium&apos;]&quot; exit_code: 2

Last 3072 characters of output:
://src.chromium.org/svn/trunk/src/media@99393
    parsed_url: http://src.chromium.org/svn/trunk/src/media@99393
    should_process: True
    processed: True
    requirements: set([&apos;./&apos;])
  
    name: build
    url: http://src.chromium.org/svn/trunk/src/build@99393
    parsed_url: http://src.chromium.org/svn/trunk/src/build@99393
    should_process: True
    processed: True
    requirements: set([&apos;./&apos;])
  
    name: net
    url: http://src.chromium.org/svn/trunk/src/net@99393
    should_process: True
    requirements: set([&apos;./&apos;])
  
    name: tools/data_pack
    url: http://src.chromium.org/svn/trunk/src/tools/data_pack@99393
    should_process: True
    requirements: set([&apos;./&apos;])
  
    name: third_party/ffmpeg
    url: From(&apos;chromium_deps&apos;, &apos;src/third_party/ffmpeg&apos;)
    should_process: True
    requirements: set([&apos;third_party&apos;, &apos;chromium_deps&apos;, &apos;./&apos;])
  
    name: tools/generate_stubs
    url: http://src.chromium.org/svn/trunk/src/tools/generate_stubs@99393
    should_process: True
    requirements: set([&apos;./&apos;])
  
    name: third_party/libjpeg_turbo
    url: From(&apos;chromium_deps&apos;, &apos;src/third_party/libjpeg_turbo&apos;)
    should_process: True
    requirements: set([&apos;third_party&apos;, &apos;chromium_deps&apos;, &apos;./&apos;])
  
    name: third_party/v8-i18n
    url: From(&apos;chromium_deps&apos;, &apos;src/third_party/v8-i18n&apos;)
    should_process: True
    requirements: set([&apos;third_party&apos;, &apos;chromium_deps&apos;, &apos;./&apos;])
  
    name: tools/grit
    url: http://src.chromium.org/svn/trunk/src/tools/grit@99393
    should_process: True
    requirements: set([&apos;./&apos;])
  
    name: base
    url: http://src.chromium.org/svn/trunk/src/base@99393
    should_process: True
    requirements: set([&apos;./&apos;])
  
    name: sql
    url: http://src.chromium.org/svn/trunk/src/sql@99393
    should_process: True
    requirements: set([&apos;./&apos;])
  
    name: v8
    url: From(&apos;chromium_deps&apos;, &apos;src/v8&apos;)
    should_process: True
    requirements: set([&apos;chromium_deps&apos;, &apos;./&apos;])
  
    name: testing/gtest
    url: From(&apos;chromium_deps&apos;, &apos;src/testing/gtest&apos;)
    should_process: True
    requirements: set([&apos;testing&apos;, &apos;chromium_deps&apos;, &apos;./&apos;])
  
    name: third_party/libwebp
    url: http://src.chromium.org/svn/trunk/src/third_party/libwebp@99393
    should_process: True
    requirements: set([&apos;third_party&apos;, &apos;./&apos;])
  
    name: googleurl
    url: From(&apos;chromium_deps&apos;, &apos;src/googleurl&apos;)
    should_process: True
    requirements: set([&apos;chromium_deps&apos;, &apos;./&apos;])
  
    name: third_party/skia/include
    url: From(&apos;chromium_deps&apos;, &apos;src/third_party/skia/include&apos;)
    should_process: True
    requirements: set([&apos;third_party&apos;, &apos;chromium_deps&apos;, &apos;./&apos;])
  
    name: third_party/ots
    url: From(&apos;chromium_deps&apos;, &apos;src/third_party/ots&apos;)
    should_process: True
    requirements: set([&apos;third_party&apos;, &apos;chromium_deps&apos;, &apos;./&apos;])
  
    name: third_party/snappy/src
    url: From(&apos;chromium_deps&apos;, &apos;src/third_party/snappy/src&apos;)
    should_process: True
    requirements: set([&apos;third_party&apos;, &apos;chromium_deps&apos;, &apos;./&apos;])

Died at Tools/Scripts/update-webkit-chromium line 80.
No such file or directory at Tools/Scripts/update-webkit line 104.


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462554</commentid>
    <comment_count>3</comment_count>
      <attachid>106423</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-06 08:42:51 -0700</bug_when>
    <thetext>Comment on attachment 106423
Patch

Attachment 106423 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/9590989</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463292</commentid>
    <comment_count>4</comment_count>
      <attachid>106423</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-09-07 04:53:40 -0700</bug_when>
    <thetext>Comment on attachment 106423
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=106423&amp;action=review

&gt; LayoutTests/inspector/debugger/raw-source-code.html:9
&gt; +    var sourceMapping = {

Can this test be split into a few smaller ones?

&gt; LayoutTests/inspector/debugger/raw-source-code.html:83
&gt; +        var timerId = originalSetTimeout(invokeCallback, timeout)

It should be originalSetTimeout.call(window,...)

&gt; LayoutTests/inspector/debugger/raw-source-code.html:93
&gt; +        for (var i = 0; i &lt; 3; ++i) {

Why do you do it exactly thrice? Should it loop until timers is empty? If you assume that firing timers may modify &quot;timers&quot; map it should be cloned before the iteration.

&gt; LayoutTests/inspector/debugger/raw-source-code.html:105
&gt; +            var script = createScript(&quot;foo.js&quot;, [0, 0, 20, 80], true, &quot;&lt;script source&gt;&quot;);

Here and below script content and start/end line/column should be in sync, otherwise the test uses invalid scripts. r- for this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463310</commentid>
    <comment_count>5</comment_count>
      <attachid>106575</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-09-07 05:34:33 -0700</bug_when>
    <thetext>Created attachment 106575
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463312</commentid>
    <comment_count>6</comment_count>
      <attachid>106575</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-09-07 05:39:57 -0700</bug_when>
    <thetext>Comment on attachment 106575
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=106575&amp;action=review

&gt; LayoutTests/inspector/debugger/raw-source-code.html:9
&gt; +    function createScriptMock(url, range, isContentScript, source)

Can this method derive end coordinates from the start and source?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463313</commentid>
    <comment_count>7</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-09-07 05:40:55 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 106423 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=106423&amp;action=review
&gt; 
&gt; &gt; LayoutTests/inspector/debugger/raw-source-code.html:9
&gt; &gt; +    var sourceMapping = {
&gt; 
&gt; Can this test be split into a few smaller ones?

This is a set of unit tests for a single class, I think it&apos;s nice to have them defined in the same file. Also, it&apos;s faster than loading multiple test documents.

&gt; 
&gt; &gt; LayoutTests/inspector/debugger/raw-source-code.html:83
&gt; &gt; +        var timerId = originalSetTimeout(invokeCallback, timeout)
&gt; 
&gt; It should be originalSetTimeout.call(window,...)

Done.

&gt; 
&gt; &gt; LayoutTests/inspector/debugger/raw-source-code.html:93
&gt; &gt; +        for (var i = 0; i &lt; 3; ++i) {
&gt; 
&gt; Why do you do it exactly thrice? Should it loop until timers is empty? If you assume that firing timers may modify &quot;timers&quot; map it should be cloned before the iteration.

I don&apos;t want this test to start timing out if there is a setTimeout chain somewhere.
Three times is just enough for the test purpose, and there shouldn&apos;t be any problems with it.
Keys list is cloned by VM, no need to do it manually (items added during enumeration are guaranteed not to be visited.

&gt; 
&gt; &gt; LayoutTests/inspector/debugger/raw-source-code.html:105
&gt; &gt; +            var script = createScript(&quot;foo.js&quot;, [0, 0, 20, 80], true, &quot;&lt;script source&gt;&quot;);
&gt; 
&gt; Here and below script content and start/end line/column should be in sync, otherwise the test uses invalid scripts. r- for this.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463317</commentid>
    <comment_count>8</comment_count>
      <attachid>106576</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-09-07 05:48:40 -0700</bug_when>
    <thetext>Created attachment 106576
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463322</commentid>
    <comment_count>9</comment_count>
      <attachid>106576</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-09-07 06:30:28 -0700</bug_when>
    <thetext>Comment on attachment 106576
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=106576&amp;action=review

&gt; LayoutTests/inspector/debugger/raw-source-code.html:96
&gt; +    function fireTimers()

Are there real setTimeout chains that can&apos;t be handled with listeners/sniffers like in other inspector tests? We don&apos;t intervene in the timer in other tests I don&apos;t see why we should here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463323</commentid>
    <comment_count>10</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-09-07 06:31:10 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #4)
&gt; &gt; (From update of attachment 106423 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=106423&amp;action=review
&gt; Keys list is cloned by VM, no need to do it manually (items added during enumeration are guaranteed not to be visited.
&gt; 
Good to know.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463362</commentid>
    <comment_count>11</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-09-07 08:20:57 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 106576 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=106576&amp;action=review
&gt; 
&gt; &gt; LayoutTests/inspector/debugger/raw-source-code.html:96
&gt; &gt; +    function fireTimers()
&gt; 
&gt; Are there real setTimeout chains that can&apos;t be handled with listeners/sniffers like in other inspector tests? We don&apos;t intervene in the timer in other tests I don&apos;t see why we should here.

Removed use of timers from RawSourceCode._createSourceMapping and the test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463363</commentid>
    <comment_count>12</comment_count>
      <attachid>106586</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-09-07 08:22:25 -0700</bug_when>
    <thetext>Created attachment 106586
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463385</commentid>
    <comment_count>13</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-09-07 09:41:24 -0700</bug_when>
    <thetext>Committed r94674: &lt;http://trac.webkit.org/changeset/94674&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463438</commentid>
    <comment_count>14</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-09-07 10:43:54 -0700</bug_when>
    <thetext>inspector/debugger/script-formatter.html is failing on Qt after this patch:
http://build.webkit.org/results/Qt%20Linux%20Release/r94677%20(37240)/results.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463516</commentid>
    <comment_count>15</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-09-07 11:44:28 -0700</bug_when>
    <thetext>This is causing a failure on Mac:
http://build.webkit.org/results/SnowLeopard%20Intel%20Release%20(Tests)/r94675%20(32889)/inspector/debugger/script-formatter-pretty-diff.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463530</commentid>
    <comment_count>16</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-09-07 11:49:33 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; This is causing a failure on Mac:
&gt; http://build.webkit.org/results/SnowLeopard%20Intel%20Release%20(Tests)/r94675%20(32889)/inspector/debugger/script-formatter-pretty-diff.html

I think it&apos;s fixed in http://trac.webkit.org/changeset/94689.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463580</commentid>
    <comment_count>17</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-09-07 12:33:55 -0700</bug_when>
    <thetext>Mn... the test still appears to be flaky on Qt:
http://build.webkit.org/results/Qt%20Linux%20Release/r94694%20(37244)/results.html
http://build.webkit.org/results/Qt%20Linux%20Release/r94690%20(37243)/results.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463838</commentid>
    <comment_count>18</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-09-07 19:44:01 -0700</bug_when>
    <thetext>This test is also failing on Snow Leopard:
http://build.webkit.org/results/SnowLeopard%20Intel%20Debug%20(Tests)/r94736%20(2047)/inspector/debugger/script-formatter-pretty-diff.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463839</commentid>
    <comment_count>19</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-09-07 19:48:01 -0700</bug_when>
    <thetext>Here&apos;s failure on Windows 7:
http://build.webkit.org/results/Windows%207%20Release%20(Tests)/r94740%20(16122)/inspector/debugger/script-formatter-pretty-diff.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463844</commentid>
    <comment_count>20</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-09-07 19:57:07 -0700</bug_when>
    <thetext>I&apos;m going to rollout the patch for now since I don&apos;t understand what the test is testing or what this change is about, and nobody appears to be actively working on it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464052</commentid>
    <comment_count>21</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-09-08 08:04:52 -0700</bug_when>
    <thetext>Committed r94760: &lt;http://trac.webkit.org/changeset/94760&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106423</attachid>
            <date>2011-09-06 08:38:59 -0700</date>
            <delta_ts>2011-09-07 05:34:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-67647-20110906193857.patch</filename>
            <type>text/plain</type>
            <size>31822</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTQ1NzEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBjNjU3ZjMwNDYwOWRmYmVkMjJkMTJk
M2NmNDdkZmQyYmQ5YjZkZGQ3Li5jNDBjMzg1Y2JjMDIxN2NjNjI3NTAwM2YwOGZkOGM5ZjVmYzQ1
Nzg5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTEtMDktMDYgIFBhdmVsIFBvZGl2aWxvdiAg
PHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogZG8gbm90
IHJlLWNyZWF0ZSBSYXdTb3VyY2VDb2RlIHdoZW4gdG9nZ2xpbmcgcHJldHR5LXByaW50IG1vZGUu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NzY0Nwor
CisgICAgICAgIDEpIEltcGxlbWVudCBSYXdTb3VyY2VDb2RlLnNldEZvcm1hdHRlZCB0aGF0IGFs
bG93cyB0b2dnbGluZyBwcmV0dHktcHJpbnQgbW9kZSBvbiB0aGUgZmx5IHdpdGhvdXQgcmVzZXR0
aW5nIGV2ZXJ5dGhpbmcuCisgICAgICAgIDIpIEFkZCBSYXdTb3VyY2VDb2RlIHVuaXQgdGVzdHMu
CisgICAgICAgIDMpIFJlbW92ZSBzb3VyY2UgbWFwcGluZyBsaXN0ZW5lcnMgYW5kIGNvbnNvbGUg
bWVzc2FnZXMgZnJvbSBwcmVzZW50YXRpb24gbW9kZWwgKHRoZXkgbGl2ZSBpbiBSYXdTb3VyY2VD
b2RlIG5vdykuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvcmF3LXNvdXJjZS1jb2RlLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL3Jhdy1zb3VyY2UtY29kZS5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0LWZvcm1hdHRlci5odG1s
OgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9zb3VyY2UtZmlsZS5odG1sOgorCiAyMDEx
LTA5LTA1ICBQYXZlbCBQb2Rpdmlsb3YgIDxwb2Rpdmlsb3ZAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IHJlLWltcGxlbWVudCBSYXdTb3VyY2VDb2RlLgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3Jhdy1zb3VyY2UtY29kZS1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvcmF3LXNvdXJjZS1jb2RlLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZWMzOTIxYmE1OTY5MmUzYWExMjYwZjc1NmMyMTUwNzAy
ODYwMjdlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2Vy
L3Jhdy1zb3VyY2UtY29kZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNyBAQAorVGVzdHMgUmF3
U291cmNlQ29kZSBjbGFzcy4KKworCitSdW5uaW5nOiB0ZXN0U2NyaXB0V2l0aG91dFJlc291cmNl
CisKK1J1bm5pbmc6IHRlc3RIVE1MV2l0aFBlbmRpbmdSZXNvdXJjZQorCitSdW5uaW5nOiB0ZXN0
SFRNTFdpdGhGaW5pc2hlZFJlc291cmNlCisKK1J1bm5pbmc6IHRlc3RDb250ZW50RWRpdGVkCisK
K1J1bm5pbmc6IHRlc3RGb3JjZVVwZGF0ZVNvdXJjZU1hcHBpbmcKKworUnVubmluZzogdGVzdEZv
cm1hdHRpbmdXaXRoRmluaXNoZWRSZXNvdXJjZQorCitSdW5uaW5nOiB0ZXN0Rm9ybWF0dGluZ1dp
dGhQZW5kaW5nUmVzb3VyY2UKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Rl
YnVnZ2VyL3Jhdy1zb3VyY2UtY29kZS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVn
Z2VyL3Jhdy1zb3VyY2UtY29kZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU2Y2Y0ZjU4NDUxY2IyMDZmNTM0
ZjY5MGZiZDAxY2FkNGVkNjA0NWEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvZGVidWdnZXIvcmF3LXNvdXJjZS1jb2RlLmh0bWwKQEAgLTAsMCArMSw0MDAgQEAKKzxo
dG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5z
cGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0PgorCitmdW5jdGlvbiB0ZXN0KCkK
K3sKKyAgICB2YXIgc291cmNlTWFwcGluZyA9IHsKKyAgICAgICAgb3JpZ2luYWxUb0Zvcm1hdHRl
ZDogZnVuY3Rpb24obG9jYXRpb24pCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBmb3JtYXR0
ZWRMb2NhdGlvbiA9IHt9OworICAgICAgICAgICAgZm9ybWF0dGVkTG9jYXRpb24ubGluZU51bWJl
ciA9IGxvY2F0aW9uLmxpbmVOdW1iZXIgKiAyOworICAgICAgICAgICAgZm9ybWF0dGVkTG9jYXRp
b24uY29sdW1uTnVtYmVyID0gbG9jYXRpb24uY29sdW1uTnVtYmVyICogMjsKKyAgICAgICAgICAg
IHJldHVybiBmb3JtYXR0ZWRMb2NhdGlvbjsKKyAgICAgICAgfSwKKworICAgICAgICBmb3JtYXR0
ZWRUb09yaWdpbmFsOiBmdW5jdGlvbihsb2NhdGlvbikKKyAgICAgICAgeworICAgICAgICAgICAg
dmFyIG9yaWdpbmFsTG9jYXRpb24gPSB7fTsKKyAgICAgICAgICAgIG9yaWdpbmFsTG9jYXRpb24u
bGluZU51bWJlciA9IE1hdGguZmxvb3IobG9jYXRpb24ubGluZU51bWJlciAvIDIpOworICAgICAg
ICAgICAgb3JpZ2luYWxMb2NhdGlvbi5jb2x1bW5OdW1iZXIgPSBNYXRoLmZsb29yKGxvY2F0aW9u
LmNvbHVtbk51bWJlciAvIDIpOworICAgICAgICAgICAgcmV0dXJuIG9yaWdpbmFsTG9jYXRpb247
CisgICAgICAgIH0KKyAgICB9OworCisgICAgdmFyIHNjcmlwdEZvcm1hdHRlciA9IHsKKyAgICAg
ICAgZm9ybWF0Q29udGVudDogZnVuY3Rpb24obWltZVR5cGUsIGNvbnRlbnQsIGNhbGxiYWNrKQor
ICAgICAgICB7CisgICAgICAgICAgICBzZXRUaW1lb3V0KGNhbGxiYWNrLmJpbmQobnVsbCwgIjxm
b3JtYXR0ZWQ+ICIgKyBjb250ZW50LCBzb3VyY2VNYXBwaW5nKSwgMCk7CisgICAgICAgIH0KKyAg
ICB9OworCisgICAgZnVuY3Rpb24gY3JlYXRlU2NyaXB0KHVybCwgcmFuZ2UsIGlzQ29udGVudFNj
cmlwdCwgc291cmNlKQorICAgIHsKKyAgICAgICAgdmFyIHNjcmlwdCA9IG5ldyBXZWJJbnNwZWN0
b3IuU2NyaXB0KG51bGwsIHVybCwgcmFuZ2VbMF0sIHJhbmdlWzFdLCByYW5nZVsyXSwgcmFuZ2Vb
M10sIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBpc0NvbnRlbnRTY3JpcHQpOworICAgICAgICBzY3Jp
cHQucmVxdWVzdFNvdXJjZSA9IGZ1bmN0aW9uKGNhbGxiYWNrKSB7IHNldFRpbWVvdXQoY2FsbGJh
Y2suYmluZChudWxsLCBzb3VyY2UpLCAwKTsgfTsKKyAgICAgICAgcmV0dXJuIHNjcmlwdDsKKyAg
ICB9CisKKyAgICBmdW5jdGlvbiBjcmVhdGVSZXNvdXJjZSh0eXBlLCBmaW5pc2hlZCwgY29udGVu
dCkKKyAgICB7CisgICAgICAgIHZhciByZXNvdXJjZSA9IHt9OworICAgICAgICByZXNvdXJjZS50
eXBlID0gdHlwZSA9PT0gImRvY3VtZW50IiA/IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLkRv
Y3VtZW50IDogV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuU2NyaXB0OworICAgICAgICByZXNv
dXJjZS5maW5pc2hlZCA9IGZpbmlzaGVkOworICAgICAgICByZXNvdXJjZS5jb250ZW50ID0gY29u
dGVudDsKKyAgICAgICAgcmVzb3VyY2UucmVxdWVzdENvbnRlbnQgPSBmdW5jdGlvbihjYWxsYmFj
aykgeyBzZXRUaW1lb3V0KGNhbGxiYWNrLmJpbmQobnVsbCwgcmVzb3VyY2UuY29udGVudCksIDAp
OyB9OworICAgICAgICByZXNvdXJjZS5maW5pc2ggPSBmdW5jdGlvbigpIHsgcmVzb3VyY2UuZmlu
aXNoZWQgPSB0cnVlOyByZXNvdXJjZS5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoImZpbmlzaGVk
Iik7IH07CisgICAgICAgIHJlc291cmNlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3Qu
cHJvdG90eXBlOworICAgICAgICByZXR1cm4gcmVzb3VyY2U7CisgICAgfQorICAgIGZ1bmN0aW9u
IGNyZWF0ZVBlbmRpbmdSZXNvdXJjZSh0eXBlLCBjb250ZW50KSB7IHJldHVybiBjcmVhdGVSZXNv
dXJjZSh0eXBlLCBmYWxzZSwgY29udGVudCk7IH0KKyAgICBmdW5jdGlvbiBjcmVhdGVGaW5pc2hl
ZFJlc291cmNlKHR5cGUsIGNvbnRlbnQpIHsgcmV0dXJuIGNyZWF0ZVJlc291cmNlKHR5cGUsIHRy
dWUsIGNvbnRlbnQpOyB9CisKKyAgICBmdW5jdGlvbiBjcmVhdGVSYXdTb3VyY2VDb2RlKHNjcmlw
dCwgcmVzb3VyY2UsIGZvcm1hdHRlZCkKKyAgICB7CisgICAgICAgIHZhciByYXdTb3VyY2VDb2Rl
ID0gbmV3IFdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlKCJpZCIsIHNjcmlwdCwgcmVzb3VyY2Us
IHNjcmlwdEZvcm1hdHRlciwgISFmb3JtYXR0ZWQpOworICAgICAgICByYXdTb3VyY2VDb2RlLmFk
ZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUuRXZlbnRzLlNvdXJjZU1h
cHBpbmdVcGRhdGVkLCBkZWZhdWx0U291cmNlTWFwcGluZ1VwZGF0ZWRIYW5kbGVyKTsKKyAgICAg
ICAgcmV0dXJuIHJhd1NvdXJjZUNvZGU7CisgICAgfQorCisgICAgZnVuY3Rpb24gd2FpdEZvclNv
dXJjZU1hcHBpbmcocmF3U291cmNlQ29kZSwgY2FsbGJhY2spCisgICAgeworICAgICAgICByYXdT
b3VyY2VDb2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUu
RXZlbnRzLlNvdXJjZU1hcHBpbmdVcGRhdGVkLCBkZWZhdWx0U291cmNlTWFwcGluZ1VwZGF0ZWRI
YW5kbGVyKTsKKyAgICAgICAgcmF3U291cmNlQ29kZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3Bl
Y3Rvci5SYXdTb3VyY2VDb2RlLkV2ZW50cy5Tb3VyY2VNYXBwaW5nVXBkYXRlZCwgc291cmNlTWFw
cGluZ1VwZGF0ZWQpOworICAgICAgICBmdW5jdGlvbiBzb3VyY2VNYXBwaW5nVXBkYXRlZChldmVu
dCkKKyAgICAgICAgeworICAgICAgICAgICAgcmF3U291cmNlQ29kZS5yZW1vdmVFdmVudExpc3Rl
bmVyKFdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlLkV2ZW50cy5Tb3VyY2VNYXBwaW5nVXBkYXRl
ZCwgc291cmNlTWFwcGluZ1VwZGF0ZWQpOworICAgICAgICAgICAgcmF3U291cmNlQ29kZS5hZGRF
dmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlLkV2ZW50cy5Tb3VyY2VNYXBw
aW5nVXBkYXRlZCwgZGVmYXVsdFNvdXJjZU1hcHBpbmdVcGRhdGVkSGFuZGxlcik7CisgICAgICAg
ICAgICBjYWxsYmFjayhldmVudCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmdW5jdGlvbiBk
ZWZhdWx0U291cmNlTWFwcGluZ1VwZGF0ZWRIYW5kbGVyKCkKKyAgICB7CisgICAgICAgIHRocm93
ICJVbmV4cGVjdGVkIFNvdXJjZU1hcHBpbmdVcGRhdGVkIGV2ZW50LiI7CisgICAgfQorCisgICAg
dmFyIG9yaWdpbmFsU2V0VGltZW91dCA9IHdpbmRvdy5zZXRUaW1lb3V0OworICAgIHZhciB0aW1l
cnMgPSB7fTsKKyAgICB3aW5kb3cuc2V0VGltZW91dCA9IGZ1bmN0aW9uKGNhbGxiYWNrLCB0aW1l
b3V0KQorICAgIHsKKyAgICAgICAgdmFyIHRpbWVySWQgPSBvcmlnaW5hbFNldFRpbWVvdXQoaW52
b2tlQ2FsbGJhY2ssIHRpbWVvdXQpCisgICAgICAgIGZ1bmN0aW9uIGludm9rZUNhbGxiYWNrKCkK
KyAgICAgICAgeworICAgICAgICAgICAgZGVsZXRlIHRpbWVyc1t0aW1lcklkXTsKKyAgICAgICAg
ICAgIGNhbGxiYWNrKCk7CisgICAgICAgIH0KKyAgICAgICAgdGltZXJzW3RpbWVySWRdID0gY2Fs
bGJhY2s7CisgICAgfTsKKyAgICBmdW5jdGlvbiBmaXJlVGltZXJzKCkKKyAgICB7CisgICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgMzsgKytpKSB7CisgICAgICAgICAgICBmb3IgKHZhciBpZCBp
biB0aW1lcnMpIHsKKyAgICAgICAgICAgICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KGlkKTsKKyAg
ICAgICAgICAgICAgICB0aW1lcnNbaWRdKCk7CisgICAgICAgICAgICAgICAgZGVsZXRlIHRpbWVy
c1tpZF07CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBJbnNwZWN0b3JU
ZXN0LnJ1blRlc3RTdWl0ZShbCisgICAgICAgIGZ1bmN0aW9uIHRlc3RTY3JpcHRXaXRob3V0UmVz
b3VyY2UobmV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHNjcmlwdCA9IGNyZWF0ZVNj
cmlwdCgiZm9vLmpzIiwgWzAsIDAsIDIwLCA4MF0sIHRydWUsICI8c2NyaXB0IHNvdXJjZT4iKTsK
KyAgICAgICAgICAgIHZhciByYXdTb3VyY2VDb2RlID0gY3JlYXRlUmF3U291cmNlQ29kZShzY3Jp
cHQsIG51bGwpOworICAgICAgICAgICAgd2FpdEZvclNvdXJjZU1hcHBpbmcocmF3U291cmNlQ29k
ZSwgbWFwcGluZ1JlYWR5KTsKKworICAgICAgICAgICAgZnVuY3Rpb24gbWFwcGluZ1JlYWR5KGV2
ZW50KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0
VHJ1ZSghZXZlbnQuZGF0YS5vbGRTb3VyY2VDb2RlKTsKKyAgICAgICAgICAgICAgICB2YXIgdWlT
b3VyY2VDb2RlID0gcmF3U291cmNlQ29kZS51aVNvdXJjZUNvZGU7CisgICAgICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoImZvby5qcyIsIHVpU291cmNlQ29kZS51cmwpOwor
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKHRydWUsIHVpU291cmNl
Q29kZS5pc0NvbnRlbnRTY3JpcHQpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNz
ZXJ0RXF1YWxzKHJhd1NvdXJjZUNvZGUsIHVpU291cmNlQ29kZS5yYXdTb3VyY2VDb2RlKTsKKyAg
ICAgICAgICAgICAgICB1aVNvdXJjZUNvZGUucmVxdWVzdENvbnRlbnQoZGlkUmVxdWVzdENvbnRl
bnQpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBkaWRSZXF1ZXN0Q29u
dGVudChtaW1lVHlwZSwgY29udGVudCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscygidGV4dC9qYXZhc2NyaXB0IiwgbWltZVR5cGUpOwor
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKCI8c2NyaXB0IHNvdXJj
ZT4iLCBjb250ZW50KTsKKyAgICAgICAgICAgICAgICBuZXh0KCk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0sCisKKyAgICAgICAgZnVuY3Rpb24gdGVzdEhUTUxXaXRoUGVuZGluZ1Jlc291cmNl
KG5leHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBzY3JpcHQxID0gY3JlYXRlU2NyaXB0
KCJpbmRleC5odG1sIiwgWzAsIDEwLCAwLCAyN10sIGZhbHNlLCAiPHNjcmlwdCBzb3VyY2UgMT4i
KTsKKyAgICAgICAgICAgIHZhciBzY3JpcHQyID0gY3JlYXRlU2NyaXB0KCJpbmRleC5odG1sIiwg
WzAsIDQ1LCAwLCA2Ml0sIGZhbHNlLCAiPHNjcmlwdCBzb3VyY2UgMj4iKTsKKyAgICAgICAgICAg
IHZhciByZXNvdXJjZSA9IGNyZWF0ZVBlbmRpbmdSZXNvdXJjZSgiZG9jdW1lbnQiLCAiPHJlc291
cmNlIGNvbnRlbnQ+Iik7CisgICAgICAgICAgICB2YXIgcmF3U291cmNlQ29kZSA9IGNyZWF0ZVJh
d1NvdXJjZUNvZGUoc2NyaXB0MSwgcmVzb3VyY2UpOworCisgICAgICAgICAgICBmaXJlVGltZXJz
KCk7CisgICAgICAgICAgICB3YWl0Rm9yU291cmNlTWFwcGluZyhyYXdTb3VyY2VDb2RlLCBtYXBw
aW5nUmVhZHkpOworICAgICAgICAgICAgcmVzb3VyY2UuZmluaXNoKCk7CisKKyAgICAgICAgICAg
IGZ1bmN0aW9uIG1hcHBpbmdSZWFkeShldmVudCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydFRydWUoIWV2ZW50LmRhdGEub2xkU291cmNlQ29kZSk7
CisgICAgICAgICAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9IHJhd1NvdXJjZUNvZGUudWlTb3Vy
Y2VDb2RlOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKCJpbmRl
eC5odG1sIiwgdWlTb3VyY2VDb2RlLnVybCk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5hc3NlcnRFcXVhbHMoZmFsc2UsIHVpU291cmNlQ29kZS5pc0NvbnRlbnRTY3JpcHQpOworICAg
ICAgICAgICAgICAgIHVpU291cmNlQ29kZS5yZXF1ZXN0Q29udGVudChkaWRSZXF1ZXN0Q29udGVu
dCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGRpZFJlcXVlc3RDb250
ZW50KG1pbWVUeXBlLCBjb250ZW50KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKG1pbWVUeXBlLCAidGV4dC9odG1sIik7CisgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoIjxyZXNvdXJjZSBjb250ZW50PiIs
IGNvbnRlbnQpOworCisgICAgICAgICAgICAgICAgcmF3U291cmNlQ29kZS5hZGRTY3JpcHQoc2Ny
aXB0Mik7CisgICAgICAgICAgICAgICAgZmlyZVRpbWVycygpOworICAgICAgICAgICAgICAgIHJh
d1NvdXJjZUNvZGUuZm9yY2VVcGRhdGVTb3VyY2VNYXBwaW5nKCk7CisgICAgICAgICAgICAgICAg
ZmlyZVRpbWVycygpOworICAgICAgICAgICAgICAgIG5leHQoKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfSwKKworICAgICAgICBmdW5jdGlvbiB0ZXN0SFRNTFdpdGhGaW5pc2hlZFJlc291cmNl
KG5leHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBzY3JpcHQxID0gY3JlYXRlU2NyaXB0
KCJpbmRleC5odG1sIiwgWzAsIDEwLCAwLCAyN10sIGZhbHNlLCAiPHNjcmlwdCBzb3VyY2UgMT4i
KTsKKyAgICAgICAgICAgIHZhciBzY3JpcHQyID0gY3JlYXRlU2NyaXB0KCJpbmRleC5odG1sIiwg
WzAsIDQ1LCAwLCA2Ml0sIGZhbHNlLCAiPHNjcmlwdCBzb3VyY2UgMj4iKTsKKyAgICAgICAgICAg
IHZhciByZXNvdXJjZSA9IGNyZWF0ZUZpbmlzaGVkUmVzb3VyY2UoImRvY3VtZW50IiwgIjxyZXNv
dXJjZSBjb250ZW50PiIpOworICAgICAgICAgICAgdmFyIHJhd1NvdXJjZUNvZGUgPSBjcmVhdGVS
YXdTb3VyY2VDb2RlKHNjcmlwdDEsIHJlc291cmNlKTsKKyAgICAgICAgICAgIHdhaXRGb3JTb3Vy
Y2VNYXBwaW5nKHJhd1NvdXJjZUNvZGUsIG1hcHBpbmdSZWFkeSk7CisKKyAgICAgICAgICAgIGZ1
bmN0aW9uIG1hcHBpbmdSZWFkeSgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdmFy
IHVpU291cmNlQ29kZSA9IHJhd1NvdXJjZUNvZGUudWlTb3VyY2VDb2RlOworICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKCJpbmRleC5odG1sIiwgdWlTb3VyY2VDb2Rl
LnVybCk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoZmFsc2Us
IHVpU291cmNlQ29kZS5pc0NvbnRlbnRTY3JpcHQpOworICAgICAgICAgICAgICAgIHVpU291cmNl
Q29kZS5yZXF1ZXN0Q29udGVudChkaWRSZXF1ZXN0Q29udGVudCk7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIGZ1bmN0aW9uIGRpZFJlcXVlc3RDb250ZW50KG1pbWVUeXBlLCBjb250ZW50
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1
YWxzKG1pbWVUeXBlLCAidGV4dC9odG1sIik7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5hc3NlcnRFcXVhbHMoIjxyZXNvdXJjZSBjb250ZW50PiIsIGNvbnRlbnQpOworCisgICAgICAg
ICAgICAgICAgcmF3U291cmNlQ29kZS5hZGRTY3JpcHQoc2NyaXB0Mik7CisgICAgICAgICAgICAg
ICAgZmlyZVRpbWVycygpOworICAgICAgICAgICAgICAgIHJhd1NvdXJjZUNvZGUuZm9yY2VVcGRh
dGVTb3VyY2VNYXBwaW5nKCk7CisgICAgICAgICAgICAgICAgZmlyZVRpbWVycygpOworICAgICAg
ICAgICAgICAgIG5leHQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKworICAgICAgICBm
dW5jdGlvbiB0ZXN0Q29udGVudEVkaXRlZChuZXh0KQorICAgICAgICB7CisgICAgICAgICAgICB2
YXIgc2NyaXB0ID0gY3JlYXRlU2NyaXB0KCJmb28uanMiLCBbMCwgMCwgMjAsIDgwXSwgdHJ1ZSwg
IjxzY3JpcHQgc291cmNlPiIpOworICAgICAgICAgICAgdmFyIHJlc291cmNlID0gY3JlYXRlRmlu
aXNoZWRSZXNvdXJjZSgic2NyaXB0IiwgIjxyZXNvdXJjZSBjb250ZW50PiIpOworICAgICAgICAg
ICAgdmFyIHJhd1NvdXJjZUNvZGUgPSBjcmVhdGVSYXdTb3VyY2VDb2RlKHNjcmlwdCwgcmVzb3Vy
Y2UpOworICAgICAgICAgICAgd2FpdEZvclNvdXJjZU1hcHBpbmcocmF3U291cmNlQ29kZSwgbWFw
cGluZ1JlYWR5KTsKKworICAgICAgICAgICAgZnVuY3Rpb24gbWFwcGluZ1JlYWR5KCkKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICByYXdTb3VyY2VDb2RlLnVpU291cmNlQ29kZS5yZXF1
ZXN0Q29udGVudChkaWRSZXF1ZXN0Q29udGVudCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIGZ1bmN0aW9uIGRpZFJlcXVlc3RDb250ZW50KG1pbWVUeXBlLCBjb250ZW50KQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKCJ0ZXh0
L2phdmFzY3JpcHQiLCBtaW1lVHlwZSk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5h
c3NlcnRFcXVhbHMoIjxyZXNvdXJjZSBjb250ZW50PiIsIGNvbnRlbnQpOworCisgICAgICAgICAg
ICAgICAgd2FpdEZvclNvdXJjZU1hcHBpbmcocmF3U291cmNlQ29kZSwgbWFwcGluZ1JlYWR5QWZ0
ZXJFZGl0KTsKKyAgICAgICAgICAgICAgICByZXNvdXJjZS5jb250ZW50ID0gIjxlZGl0ZWQgcmVz
b3VyY2UgY29udGVudD4iOworICAgICAgICAgICAgICAgIHJhd1NvdXJjZUNvZGUuY29udGVudEVk
aXRlZCgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBtYXBwaW5nUmVh
ZHlBZnRlckVkaXQoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJhd1NvdXJjZUNv
ZGUudWlTb3VyY2VDb2RlLnJlcXVlc3RDb250ZW50KGRpZFJlcXVlc3RDb250ZW50QWZ0ZXJFZGl0
KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gZGlkUmVxdWVzdENvbnRl
bnRBZnRlckVkaXQobWltZVR5cGUsIGNvbnRlbnQpCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMobWltZVR5cGUsICJ0ZXh0L2phdmFzY3Jp
cHQiKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscygiPGVkaXRl
ZCByZXNvdXJjZSBjb250ZW50PiIsIGNvbnRlbnQpOworICAgICAgICAgICAgICAgIG5leHQoKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKworICAgICAgICBmdW5jdGlvbiB0ZXN0Rm9yY2VV
cGRhdGVTb3VyY2VNYXBwaW5nKG5leHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBzY3Jp
cHQxID0gY3JlYXRlU2NyaXB0KCJpbmRleC5odG1sIiwgWzAsIDEwLCAwLCAyN10sIGZhbHNlLCAi
PHNjcmlwdCBzb3VyY2UgMT4iKTsKKyAgICAgICAgICAgIHZhciBzY3JpcHQyID0gY3JlYXRlU2Ny
aXB0KCJpbmRleC5odG1sIiwgWzAsIDQ1LCAwLCA2Ml0sIGZhbHNlLCAiPHNjcmlwdCBzb3VyY2Ug
Mj4iKTsKKyAgICAgICAgICAgIHZhciBzY3JpcHQzID0gY3JlYXRlU2NyaXB0KCJpbmRleC5odG1s
IiwgWzEsIDEwLCAxLCAyN10sIGZhbHNlLCAiPHNjcmlwdCBzb3VyY2UgMz4iKTsKKyAgICAgICAg
ICAgIHZhciByZXNvdXJjZSA9IGNyZWF0ZVBlbmRpbmdSZXNvdXJjZSgiZG9jdW1lbnQiLCAiPHJl
c291cmNlIGNvbnRlbnQ+Iik7CisgICAgICAgICAgICB2YXIgcmF3U291cmNlQ29kZSA9IGNyZWF0
ZVJhd1NvdXJjZUNvZGUoc2NyaXB0MSwgcmVzb3VyY2UpOworCisgICAgICAgICAgICBmaXJlVGlt
ZXJzKCk7CisgICAgICAgICAgICB3YWl0Rm9yU291cmNlTWFwcGluZyhyYXdTb3VyY2VDb2RlLCBy
ZXF1ZXN0Q29udGVudCk7CisgICAgICAgICAgICByYXdTb3VyY2VDb2RlLmZvcmNlVXBkYXRlU291
cmNlTWFwcGluZygpOworCisgICAgICAgICAgICBmdW5jdGlvbiByZXF1ZXN0Q29udGVudCgpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmF3U291cmNlQ29kZS51aVNvdXJjZUNvZGUu
cmVxdWVzdENvbnRlbnQoZGlkUmVxdWVzdENvbnRlbnRPbmVTY3JpcHQpOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBmdW5jdGlvbiBkaWRSZXF1ZXN0Q29udGVudE9uZVNjcmlwdChtaW1l
VHlwZSwgY29udGVudCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmFzc2VydEVxdWFscyhtaW1lVHlwZSwgInRleHQvaHRtbCIpOworICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKCIgIDxzY3JpcHQ+PHNjcmlwdCBzb3VyY2UgMT48
LyIgKyAic2NyaXB0PiIsIGNvbnRlbnQpOworCisgICAgICAgICAgICAgICAgcmF3U291cmNlQ29k
ZS5mb3JjZVVwZGF0ZVNvdXJjZU1hcHBpbmcoKTsKKyAgICAgICAgICAgICAgICBmaXJlVGltZXJz
KCk7CisgICAgICAgICAgICAgICAgcmF3U291cmNlQ29kZS5hZGRTY3JpcHQoc2NyaXB0Mik7Cisg
ICAgICAgICAgICAgICAgZmlyZVRpbWVycygpOworICAgICAgICAgICAgICAgIHdhaXRGb3JTb3Vy
Y2VNYXBwaW5nKHJhd1NvdXJjZUNvZGUsIHJlcXVlc3RDb250ZW50VHdvU2NyaXB0cyk7CisgICAg
ICAgICAgICAgICAgcmF3U291cmNlQ29kZS5mb3JjZVVwZGF0ZVNvdXJjZU1hcHBpbmcoKTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gcmVxdWVzdENvbnRlbnRUd29TY3Jp
cHRzKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByYXdTb3VyY2VDb2RlLnVpU291
cmNlQ29kZS5yZXF1ZXN0Q29udGVudChkaWRSZXF1ZXN0Q29udGVudFR3b1NjcmlwdHMpOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBkaWRSZXF1ZXN0Q29udGVudFR3b1Nj
cmlwdHMobWltZVR5cGUsIGNvbnRlbnQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMobWltZVR5cGUsICJ0ZXh0L2h0bWwiKTsKKyAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscygiICA8c2NyaXB0PjxzY3JpcHQg
c291cmNlIDE+PC8iICsgInNjcmlwdD4gPHNjcmlwdD48c2NyaXB0IHNvdXJjZSAyPjwvIiArICJz
Y3JpcHQ+IiwgY29udGVudCk7CisKKyAgICAgICAgICAgICAgICByYXdTb3VyY2VDb2RlLmZvcmNl
VXBkYXRlU291cmNlTWFwcGluZygpOworICAgICAgICAgICAgICAgIGZpcmVUaW1lcnMoKTsKKyAg
ICAgICAgICAgICAgICB3YWl0Rm9yU291cmNlTWFwcGluZyhyYXdTb3VyY2VDb2RlLCByZXF1ZXN0
Q29udGVudFJlc291cmNlKTsKKyAgICAgICAgICAgICAgICByZXNvdXJjZS5maW5pc2goKTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gcmVxdWVzdENvbnRlbnRSZXNvdXJj
ZSgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmF3U291cmNlQ29kZS51aVNvdXJj
ZUNvZGUucmVxdWVzdENvbnRlbnQoZGlkUmVxdWVzdENvbnRlbnRSZXNvdXJjZSk7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGRpZFJlcXVlc3RDb250ZW50UmVzb3VyY2Uo
bWltZVR5cGUsIGNvbnRlbnQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5hc3NlcnRFcXVhbHMobWltZVR5cGUsICJ0ZXh0L2h0bWwiKTsKKyAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscygiPHJlc291cmNlIGNvbnRlbnQ+IiwgY29u
dGVudCk7CisKKyAgICAgICAgICAgICAgICByYXdTb3VyY2VDb2RlLmFkZFNjcmlwdChzY3JpcHQz
KTsKKyAgICAgICAgICAgICAgICBmaXJlVGltZXJzKCk7CisgICAgICAgICAgICAgICAgcmF3U291
cmNlQ29kZS5mb3JjZVVwZGF0ZVNvdXJjZU1hcHBpbmcoKTsKKyAgICAgICAgICAgICAgICBmaXJl
VGltZXJzKCk7CisKKyAgICAgICAgICAgICAgICBuZXh0KCk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0sCisKKyAgICAgICAgZnVuY3Rpb24gdGVzdEZvcm1hdHRpbmdXaXRoRmluaXNoZWRSZXNv
dXJjZShuZXh0KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgc2NyaXB0ID0gY3JlYXRlU2Ny
aXB0KCJmb28uanMiLCBbMCwgMCwgMjAsIDgwXSwgdHJ1ZSwgIjxzY3JpcHQgc291cmNlPiIpOwor
ICAgICAgICAgICAgdmFyIHJlc291cmNlID0gY3JlYXRlRmluaXNoZWRSZXNvdXJjZSgic2NyaXB0
IiwgIjxyZXNvdXJjZSBjb250ZW50PiIpOworICAgICAgICAgICAgdmFyIHJhd1NvdXJjZUNvZGUg
PSBjcmVhdGVSYXdTb3VyY2VDb2RlKHNjcmlwdCwgcmVzb3VyY2UsIGZhbHNlKTsKKyAgICAgICAg
ICAgIHdhaXRGb3JTb3VyY2VNYXBwaW5nKHJhd1NvdXJjZUNvZGUsIHJlcXVlc3RDb250ZW50KTsK
KworICAgICAgICAgICAgZnVuY3Rpb24gcmVxdWVzdENvbnRlbnQoKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIHZhciB1aVNvdXJjZUNvZGUgPSByYXdTb3VyY2VDb2RlLnVpU291cmNl
Q29kZTsKKyAgICAgICAgICAgICAgICB2YXIgdWlMb2NhdGlvbiA9IHJhd1NvdXJjZUNvZGUucmF3
TG9jYXRpb25Ub1VJTG9jYXRpb24oeyBsaW5lTnVtYmVyIDogMSwgY29sdW1uTnVtYmVyOiAyIH0p
OworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKHVpU291cmNlQ29k
ZSwgdWlMb2NhdGlvbi51aVNvdXJjZUNvZGUpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuYXNzZXJ0RXF1YWxzKDEsIHVpTG9jYXRpb24ubGluZU51bWJlcik7CisgICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoMiwgdWlMb2NhdGlvbi5jb2x1bW5OdW1iZXIp
OworICAgICAgICAgICAgICAgIHVpU291cmNlQ29kZS5yZXF1ZXN0Q29udGVudChkaWRSZXF1ZXN0
Q29udGVudCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGRpZFJlcXVl
c3RDb250ZW50KG1pbWVUeXBlLCBjb250ZW50KQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKCJ0ZXh0L2phdmFzY3JpcHQiLCBtaW1lVHlw
ZSk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoIjxyZXNvdXJj
ZSBjb250ZW50PiIsIGNvbnRlbnQpOworCisgICAgICAgICAgICAgICAgd2FpdEZvclNvdXJjZU1h
cHBpbmcocmF3U291cmNlQ29kZSwgcmVxdWVzdEZvcm1hdHRlZENvbnRlbnQpOworICAgICAgICAg
ICAgICAgIHJhd1NvdXJjZUNvZGUuc2V0Rm9ybWF0dGVkKHRydWUpOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBmdW5jdGlvbiByZXF1ZXN0Rm9ybWF0dGVkQ29udGVudCgpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9IHJhd1NvdXJjZUNvZGUu
dWlTb3VyY2VDb2RlOworICAgICAgICAgICAgICAgIHZhciB1aUxvY2F0aW9uID0gcmF3U291cmNl
Q29kZS5yYXdMb2NhdGlvblRvVUlMb2NhdGlvbih7IGxpbmVOdW1iZXIgOiAxLCBjb2x1bW5OdW1i
ZXI6IDIgfSk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHModWlT
b3VyY2VDb2RlLCB1aUxvY2F0aW9uLnVpU291cmNlQ29kZSk7CisgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoMiwgdWlMb2NhdGlvbi5saW5lTnVtYmVyKTsKKyAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyg0LCB1aUxvY2F0aW9uLmNvbHVt
bk51bWJlcik7CisgICAgICAgICAgICAgICAgdWlTb3VyY2VDb2RlLnJlcXVlc3RDb250ZW50KGRp
ZFJlcXVlc3RGb3JtYXR0ZWRDb250ZW50KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
ZnVuY3Rpb24gZGlkUmVxdWVzdEZvcm1hdHRlZENvbnRlbnQobWltZVR5cGUsIGNvbnRlbnQpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMo
bWltZVR5cGUsICJ0ZXh0L2phdmFzY3JpcHQiKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmFzc2VydEVxdWFscygiPGZvcm1hdHRlZD4gPHJlc291cmNlIGNvbnRlbnQ+IiwgY29udGVu
dCk7CisKKyAgICAgICAgICAgICAgICB3YWl0Rm9yU291cmNlTWFwcGluZyhyYXdTb3VyY2VDb2Rl
LCByZXF1ZXN0Tm90Rm9ybWF0dGVkQ29udGVudCk7CisgICAgICAgICAgICAgICAgcmF3U291cmNl
Q29kZS5zZXRGb3JtYXR0ZWQoZmFsc2UpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBm
dW5jdGlvbiByZXF1ZXN0Tm90Rm9ybWF0dGVkQ29udGVudCgpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9IHJhd1NvdXJjZUNvZGUudWlTb3VyY2VDb2Rl
OworICAgICAgICAgICAgICAgIHZhciB1aUxvY2F0aW9uID0gcmF3U291cmNlQ29kZS5yYXdMb2Nh
dGlvblRvVUlMb2NhdGlvbih7IGxpbmVOdW1iZXIgOiAxLCBjb2x1bW5OdW1iZXI6IDIgfSk7Cisg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHModWlTb3VyY2VDb2RlLCB1
aUxvY2F0aW9uLnVpU291cmNlQ29kZSk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5h
c3NlcnRFcXVhbHMoMSwgdWlMb2NhdGlvbi5saW5lTnVtYmVyKTsKKyAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscygyLCB1aUxvY2F0aW9uLmNvbHVtbk51bWJlcik7Cisg
ICAgICAgICAgICAgICAgdWlTb3VyY2VDb2RlLnJlcXVlc3RDb250ZW50KGRpZFJlcXVlc3ROb3RG
b3JtYXR0ZWRDb250ZW50KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24g
ZGlkUmVxdWVzdE5vdEZvcm1hdHRlZENvbnRlbnQobWltZVR5cGUsIGNvbnRlbnQpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoInRleHQv
amF2YXNjcmlwdCIsIG1pbWVUeXBlKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFz
c2VydEVxdWFscygiPHJlc291cmNlIGNvbnRlbnQ+IiwgY29udGVudCk7CisKKyAgICAgICAgICAg
ICAgICBuZXh0KCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0sCisKKyAgICAgICAgZnVuY3Rp
b24gdGVzdEZvcm1hdHRpbmdXaXRoUGVuZGluZ1Jlc291cmNlKG5leHQpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHZhciBzY3JpcHQgPSBjcmVhdGVTY3JpcHQoImZvby5qcyIsIFswLCAwLCAyMCwg
ODBdLCB0cnVlLCAiPHNjcmlwdCBzb3VyY2U+Iik7CisgICAgICAgICAgICB2YXIgcmVzb3VyY2Ug
PSBjcmVhdGVQZW5kaW5nUmVzb3VyY2UoInNjcmlwdCIsICI8cmVzb3VyY2UgY29udGVudD4iKTsK
KyAgICAgICAgICAgIHZhciByYXdTb3VyY2VDb2RlID0gY3JlYXRlUmF3U291cmNlQ29kZShzY3Jp
cHQsIHJlc291cmNlLCB0cnVlKTsKKworICAgICAgICAgICAgZmlyZVRpbWVycygpOworICAgICAg
ICAgICAgd2FpdEZvclNvdXJjZU1hcHBpbmcocmF3U291cmNlQ29kZSwgY2hlY2tNYXBwaW5nKTsK
KyAgICAgICAgICAgIHJlc291cmNlLmZpbmlzaCgpOworCisgICAgICAgICAgICBmdW5jdGlvbiBj
aGVja01hcHBpbmcoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHZhciB1aVNvdXJj
ZUNvZGUgPSByYXdTb3VyY2VDb2RlLnVpU291cmNlQ29kZTsKKyAgICAgICAgICAgICAgICB2YXIg
dWlMb2NhdGlvbiA9IHJhd1NvdXJjZUNvZGUucmF3TG9jYXRpb25Ub1VJTG9jYXRpb24oeyBsaW5l
TnVtYmVyIDogMSwgY29sdW1uTnVtYmVyOiAyIH0pOworICAgICAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuYXNzZXJ0RXF1YWxzKHVpU291cmNlQ29kZSwgdWlMb2NhdGlvbi51aVNvdXJjZUNvZGUp
OworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKDIsIHVpTG9jYXRp
b24ubGluZU51bWJlcik7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVh
bHMoNCwgdWlMb2NhdGlvbi5jb2x1bW5OdW1iZXIpOworCisgICAgICAgICAgICAgICAgd2FpdEZv
clNvdXJjZU1hcHBpbmcocmF3U291cmNlQ29kZSwgY2hlY2tNYXBwaW5nQWdhaW4pOworICAgICAg
ICAgICAgICAgIHJhd1NvdXJjZUNvZGUuc2V0Rm9ybWF0dGVkKGZhbHNlKTsKKyAgICAgICAgICAg
ICAgICByYXdTb3VyY2VDb2RlLnNldEZvcm1hdHRlZCh0cnVlKTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgZnVuY3Rpb24gY2hlY2tNYXBwaW5nQWdhaW4oKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIHZhciB1aVNvdXJjZUNvZGUgPSByYXdTb3VyY2VDb2RlLnVpU291cmNl
Q29kZTsKKyAgICAgICAgICAgICAgICB2YXIgdWlMb2NhdGlvbiA9IHJhd1NvdXJjZUNvZGUucmF3
TG9jYXRpb25Ub1VJTG9jYXRpb24oeyBsaW5lTnVtYmVyIDogMSwgY29sdW1uTnVtYmVyOiAyIH0p
OworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKHVpU291cmNlQ29k
ZSwgdWlMb2NhdGlvbi51aVNvdXJjZUNvZGUpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuYXNzZXJ0RXF1YWxzKDIsIHVpTG9jYXRpb24ubGluZU51bWJlcik7CisgICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoNCwgdWlMb2NhdGlvbi5jb2x1bW5OdW1iZXIp
OworCisgICAgICAgICAgICAgICAgZmlyZVRpbWVycygpOworCisgICAgICAgICAgICAgICAgbmV4
dCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgXSk7Cit9OworCis8L3NjcmlwdD4K
KworPC9oZWFkPgorCis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8cD5UZXN0cyBSYXdTb3Vy
Y2VDb2RlIGNsYXNzLjwvcD4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdC1mb3JtYXR0ZXIuaHRtbCBiL0xheW91dFRl
c3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHQtZm9ybWF0dGVyLmh0bWwKaW5kZXggZmY5OWY3
NDQzM2ZhOTY2OWEzMWNhMmI5OTgzM2RmMTcxZGI4ZTdhOS4uODAzOGY1OWUwNjBiMzQ1ZTJlMzcy
ZDU4MTVjZGU0MTlkM2JhYjliYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Rl
YnVnZ2VyL3NjcmlwdC1mb3JtYXR0ZXIuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
ZGVidWdnZXIvc2NyaXB0LWZvcm1hdHRlci5odG1sCkBAIC0xODUsNyArMTg1LDcgQEAgdmFyIHRl
c3QgPSBmdW5jdGlvbigpCiAgICAgICAgICAgICBmdW5jdGlvbiBkaWRFdmFsdWF0ZSgpCiAgICAg
ICAgICAgICB7CiAgICAgICAgICAgICAgICAgZHVtcENvbnNvbGVNZXNzYWdlVVJMcygpOwotICAg
ICAgICAgICAgICAgIHBhbmVsLl9wcmVzZW50YXRpb25Nb2RlbC5hZGRFdmVudExpc3RlbmVyKFdl
Ykluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLkV2ZW50cy5VSVNvdXJjZUNvZGVB
ZGRlZCwgIHVpU291cmNlQ29kZVJlcGxhY2VkKTsKKyAgICAgICAgICAgICAgICBwYW5lbC5fcHJl
c2VudGF0aW9uTW9kZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVz
ZW50YXRpb25Nb2RlbC5FdmVudHMuVUlTb3VyY2VDb2RlUmVwbGFjZWQsICB1aVNvdXJjZUNvZGVS
ZXBsYWNlZCk7CiAgICAgICAgICAgICAgICAgcGFuZWwuX3RvZ2dsZUZvcm1hdFNvdXJjZSgpOwog
ICAgICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdn
ZXIvc291cmNlLWZpbGUuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zb3Vy
Y2UtZmlsZS5odG1sCmluZGV4IDUwNTZiMDk1ZWZjYzljYjYyNTkwZDNiZmY2YmMwODIxNGRlMGRm
NjQuLmNlMmIzN2M3OGJiNzJlMTUyNTkyOTNmZTI4MTFmZDYwZGMzNjYzOTYgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zb3VyY2UtZmlsZS5odG1sCisrKyBiL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zb3VyY2UtZmlsZS5odG1sCkBAIC04MSw3ICs4
MSw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICBmdW5jdGlvbiB0ZXN0Rm9ybWF0dGVkQ29u
dmVydExvY2F0aW9uKG5leHQpCiAgICAgICAgIHsKICAgICAgICAgICAgIHZhciBzY3JpcHQgPSBu
ZXcgV2ViSW5zcGVjdG9yLlNjcmlwdCgiMSIsICJmb28uanMiLCAwLCAwLCAyMCwgODAsIHVuZGVm
aW5lZCwgdW5kZWZpbmVkLCBmYWxzZSk7Ci0gICAgICAgICAgICB2YXIgcmF3U291cmNlQ29kZSA9
IG5ldyBXZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZSgiaWQiLCBzY3JpcHQsIG1vY2tTY3JpcHRG
b3JtYXR0ZXIsIHRydWUpOworICAgICAgICAgICAgdmFyIHJhd1NvdXJjZUNvZGUgPSBuZXcgV2Vi
SW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUoImlkIiwgc2NyaXB0LCBudWxsLCBtb2NrU2NyaXB0Rm9y
bWF0dGVyLCB0cnVlKTsKIAogICAgICAgICAgICAgZnVuY3Rpb24gZGlkQ3JlYXRlU291cmNlTWFw
cGluZygpCiAgICAgICAgICAgICB7CkBAIC05Niw3ICs5Niw3IEBAIGZ1bmN0aW9uIHRlc3QoKQog
ICAgICAgICB7CiAgICAgICAgICAgICB2YXIgc2NyaXB0MSA9IG5ldyBXZWJJbnNwZWN0b3IuU2Ny
aXB0KCIxIiwgImZvby5qcyIsIDEwLCAyMCwgMzAsIDQwLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwg
ZmFsc2UpOwogICAgICAgICAgICAgdmFyIHNjcmlwdDIgPSBuZXcgV2ViSW5zcGVjdG9yLlNjcmlw
dCgiMiIsICJmb28uanMiLCA1MCwgNjAsIDcwLCA4MCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIGZh
bHNlKTsKLSAgICAgICAgICAgIHZhciByYXdTb3VyY2VDb2RlID0gbmV3IFdlYkluc3BlY3Rvci5S
YXdTb3VyY2VDb2RlKCJpZCIsIHNjcmlwdDEsIG1vY2tTY3JpcHRGb3JtYXR0ZXIsIHRydWUpOwor
ICAgICAgICAgICAgdmFyIHJhd1NvdXJjZUNvZGUgPSBuZXcgV2ViSW5zcGVjdG9yLlJhd1NvdXJj
ZUNvZGUoImlkIiwgc2NyaXB0MSwgbnVsbCwgbW9ja1NjcmlwdEZvcm1hdHRlciwgdHJ1ZSk7CiAg
ICAgICAgICAgICByYXdTb3VyY2VDb2RlLmFkZFNjcmlwdChzY3JpcHQyKTsKIAogICAgICAgICAg
ICAgZnVuY3Rpb24gZGlkQ3JlYXRlU291cmNlTWFwcGluZygpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDlmYWIw
YjhjZDdiMzJiZDQyMjg0ODEyOTc2YzhlZWVmMjBhODcxZS4uN2Q3N2QxMDFiMmZmZTFjN2U1Nzhm
OWE4NDA1ZTRhNmQ2ZmQ2YjY0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDExLTA5
LTA2ICBQYXZlbCBQb2Rpdmlsb3YgIDxwb2Rpdmlsb3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFdlYiBJbnNwZWN0b3I6IGRvIG5vdCByZS1jcmVhdGUgUmF3U291cmNlQ29kZSB3aGVuIHRvZ2ds
aW5nIHByZXR0eS1wcmludCBtb2RlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9Njc2NDcKKworICAgICAgICAxKSBJbXBsZW1lbnQgUmF3U291cmNlQ29k
ZS5zZXRGb3JtYXR0ZWQgdGhhdCBhbGxvd3MgdG9nZ2xpbmcgcHJldHR5LXByaW50IG1vZGUgb24g
dGhlIGZseSB3aXRob3V0IHJlc2V0dGluZyBldmVyeXRoaW5nLgorICAgICAgICAyKSBBZGQgUmF3
U291cmNlQ29kZSB1bml0IHRlc3RzLgorICAgICAgICAzKSBSZW1vdmUgc291cmNlIG1hcHBpbmcg
bGlzdGVuZXJzIGFuZCBjb25zb2xlIG1lc3NhZ2VzIGZyb20gcHJlc2VudGF0aW9uIG1vZGVsICh0
aGV5IGxpdmUgaW4gUmF3U291cmNlQ29kZSBub3cpLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGluc3BlY3Rvci9kZWJ1Z2dlci9yYXctc291
cmNlLWNvZGUuaHRtbAorCisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dlclBy
ZXNlbnRhdGlvbk1vZGVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2Vu
dGF0aW9uTW9kZWwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9u
TW9kZWwucHJvdG90eXBlLmxpbmtpZnlMb2NhdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
RGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUuX2FkZFNjcmlwdCk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUuX3NvdXJj
ZU1hcHBpbmdVcGRhdGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRh
dGlvbk1vZGVsLnByb3RvdHlwZS5zZXRGb3JtYXRTb3VyY2UpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBlLl9jcmVhdGVSYXdTb3VyY2VD
b2RlSWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwu
cHJvdG90eXBlLl9kZWJ1Z2dlclJlc2V0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5k
L1NjcmlwdHNQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJv
dG90eXBlLl90b2dnbGVGb3JtYXRTb3VyY2UpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1l
bmQvU291cmNlRmlsZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlLnByb3RvdHlwZS5nZXQgdWlTb3Vy
Y2VDb2RlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlLnByb3RvdHlwZS5z
ZXRGb3JtYXR0ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUucHJvdG90
eXBlLnJhd0xvY2F0aW9uVG9VSUxvY2F0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SYXdT
b3VyY2VDb2RlLnByb3RvdHlwZS5fc2F2ZVNvdXJjZU1hcHBpbmcpOgorCiAyMDExLTA5LTA1ICBQ
YXZlbCBQb2Rpdmlsb3YgIDxwb2Rpdmlsb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJ
bnNwZWN0b3I6IHJlLWltcGxlbWVudCBSYXdTb3VyY2VDb2RlLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLmpz
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dlclByZXNlbnRhdGlv
bk1vZGVsLmpzCmluZGV4IDE3OGRlM2M1YjE2NjZlYjhkZTU2MzU1ODUxNDYyOTNkMjg0MmYwOWEu
LjIwZWFkNTY1NWFhZjQ2ZTI1MjBlNjk1YWVkOTA1ZDE2YjYyNGNhOTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJQcmVzZW50YXRpb25Nb2Rl
bC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RlYnVnZ2VyUHJl
c2VudGF0aW9uTW9kZWwuanMKQEAgLTM3LDggKzM3LDYgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2Vy
UHJlc2VudGF0aW9uTW9kZWwgPSBmdW5jdGlvbigpCiAgICAgdGhpcy5fZm9ybWF0dGVyID0gbmV3
IFdlYkluc3BlY3Rvci5TY3JpcHRGb3JtYXR0ZXIoKTsKICAgICB0aGlzLl9yYXdTb3VyY2VDb2Rl
ID0ge307CiAgICAgdGhpcy5fbWVzc2FnZXMgPSBbXTsKLSAgICAvLyBGSVhNRTogbW92ZSB0aGlz
IHRvIFJhd1NvdXJjZUNvZGUgd2hlbiBpdCdzIG5vdCByZS1jcmVhdGVkIGluIHByZXR0eS1wcmlu
dCBtb2RlLgotICAgIHRoaXMuX3NvdXJjZU1hcHBpbmdMaXN0ZW5lcnMgPSBbXTsKIAogICAgIHRo
aXMuX3ByZXNlbnRhdGlvbkNhbGxGcmFtZXMgPSBbXTsKICAgICB0aGlzLl9zZWxlY3RlZENhbGxG
cmFtZUluZGV4ID0gMDsKQEAgLTk4LDE2ICs5Niw2IEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclBy
ZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmF3U291cmNlQ29kZS5jcmVh
dGVTb3VyY2VNYXBwaW5nSWZOZWVkZWQoZGlkQ3JlYXRlU291cmNlTWFwcGluZyk7CiAgICAgfSwK
IAotICAgIGFkZFNvdXJjZU1hcHBpbmdMaXN0ZW5lcjogZnVuY3Rpb24oc291cmNlVVJMLCBzY3Jp
cHRJZCwgbGlzdGVuZXIpCi0gICAgewotICAgICAgICB0aGlzLl9zb3VyY2VNYXBwaW5nTGlzdGVu
ZXJzLnB1c2gobGlzdGVuZXIpOwotICAgIH0sCi0KLSAgICByZW1vdmVTb3VyY2VNYXBwaW5nTGlz
dGVuZXI6IGZ1bmN0aW9uKHNvdXJjZVVSTCwgc2NyaXB0SWQsIGxpc3RlbmVyKQotICAgIHsKLSAg
ICAgICAgLy8gRklYTUU6IGltcGxlbWVudCB0aGlzLgotICAgIH0sCi0KICAgICBsaW5raWZ5TG9j
YXRpb246IGZ1bmN0aW9uKHNvdXJjZVVSTCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBjbGFz
c2VzKQogICAgIHsKICAgICAgICAgdmFyIGxpbmtUZXh0ID0gV2ViSW5zcGVjdG9yLmZvcm1hdExp
bmtUZXh0KHNvdXJjZVVSTCwgbGluZU51bWJlcik7CkBAIC0xMzIsNyArMTIwLDcgQEAgV2ViSW5z
cGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBlID0gewogICAgICAgICAg
ICAgdGhpcy5fc2NyaXB0TG9jYXRpb25Ub1VJTG9jYXRpb24oc291cmNlVVJMLCBudWxsLCBsaW5l
TnVtYmVyLCBjb2x1bW5OdW1iZXIsIGRpZEdldExvY2F0aW9uLmJpbmQodGhpcykpOwogICAgICAg
ICB9CiAgICAgICAgIHVwZGF0ZUFuY2hvci5jYWxsKHRoaXMpOwotICAgICAgICB0aGlzLmFkZFNv
dXJjZU1hcHBpbmdMaXN0ZW5lcihzb3VyY2VVUkwsIG51bGwsIHVwZGF0ZUFuY2hvci5iaW5kKHRo
aXMpKTsKKyAgICAgICAgcmF3U291cmNlQ29kZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rv
ci5SYXdTb3VyY2VDb2RlLkV2ZW50cy5Tb3VyY2VNYXBwaW5nVXBkYXRlZCwgdXBkYXRlQW5jaG9y
LCB0aGlzKTsKICAgICAgICAgcmV0dXJuIGFuY2hvcjsKICAgICB9LAogCkBAIC0xNTUsMTYgKzE0
MywxNiBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUg
PSB7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICByYXdTb3VyY2VD
b2RlID0gbmV3IFdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlKHJhd1NvdXJjZUNvZGVJZCwgc2Ny
aXB0LCB0aGlzLl9mb3JtYXR0ZXIsIHRoaXMuX2Zvcm1hdFNvdXJjZSk7CisgICAgICAgIHZhciBy
ZXNvdXJjZTsKKyAgICAgICAgaWYgKHNjcmlwdC5zb3VyY2VVUkwpCisgICAgICAgICAgICByZXNv
dXJjZSA9IFdlYkluc3BlY3Rvci5uZXR3b3JrTWFuYWdlci5pbmZsaWdodFJlc291cmNlRm9yVVJM
KHNjcmlwdC5zb3VyY2VVUkwpIHx8IFdlYkluc3BlY3Rvci5yZXNvdXJjZUZvclVSTChzY3JpcHQu
c291cmNlVVJMKTsKKyAgICAgICAgcmF3U291cmNlQ29kZSA9IG5ldyBXZWJJbnNwZWN0b3IuUmF3
U291cmNlQ29kZShyYXdTb3VyY2VDb2RlSWQsIHNjcmlwdCwgcmVzb3VyY2UsIHRoaXMuX2Zvcm1h
dHRlciwgdGhpcy5fZm9ybWF0U291cmNlKTsKICAgICAgICAgdGhpcy5fcmF3U291cmNlQ29kZVty
YXdTb3VyY2VDb2RlSWRdID0gcmF3U291cmNlQ29kZTsKICAgICAgICAgcmF3U291cmNlQ29kZS5h
ZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlLkV2ZW50cy5Tb3VyY2VN
YXBwaW5nVXBkYXRlZCwgdGhpcy5fc291cmNlTWFwcGluZ1VwZGF0ZWQsIHRoaXMpOwogICAgIH0s
CiAKICAgICBfc291cmNlTWFwcGluZ1VwZGF0ZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAg
ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9zb3VyY2VNYXBwaW5nTGlzdGVuZXJzLmxl
bmd0aDsgKytpKQotICAgICAgICAgICAgdGhpcy5fc291cmNlTWFwcGluZ0xpc3RlbmVyc1tpXSgp
OwotCiAgICAgICAgIHZhciByYXdTb3VyY2VDb2RlID0gZXZlbnQudGFyZ2V0OwogICAgICAgICB2
YXIgb2xkVUlTb3VyY2VDb2RlID0gZXZlbnQuZGF0YS5vbGRVSVNvdXJjZUNvZGU7CiAgICAgICAg
IHZhciB1aVNvdXJjZUNvZGUgPSByYXdTb3VyY2VDb2RlLnVpU291cmNlQ29kZTsKQEAgLTI2Miwy
MyArMjUwLDE3IEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgdGhpcy5fZm9ybWF0U291cmNlID0gZm9ybWF0U291cmNlOwogCiAg
ICAgICAgIHRoaXMuX2JyZWFrcG9pbnRNYW5hZ2VyLnJlc2V0KCk7Ci0gICAgICAgIGZvciAodmFy
IGlkIGluIHRoaXMuX3Jhd1NvdXJjZUNvZGUpCi0gICAgICAgICAgICB0aGlzLl9yYXdTb3VyY2VD
b2RlW2lkXS5yZW1vdmVFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlLkV2
ZW50cy5Tb3VyY2VNYXBwaW5nVXBkYXRlZCwgdGhpcy5fc291cmNlTWFwcGluZ1VwZGF0ZWQsIHRo
aXMpOwotICAgICAgICB0aGlzLl9yYXdTb3VyY2VDb2RlID0ge307Ci0gICAgICAgIHZhciBtZXNz
YWdlcyA9IHRoaXMuX21lc3NhZ2VzOwotICAgICAgICB0aGlzLl9tZXNzYWdlcyA9IFtdOwogCi0g
ICAgICAgIHZhciBzY3JpcHRzID0gV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwuc2NyaXB0czsK
LSAgICAgICAgZm9yICh2YXIgaWQgaW4gc2NyaXB0cykKLSAgICAgICAgICAgIHRoaXMuX2FkZFNj
cmlwdChzY3JpcHRzW2lkXSk7CisgICAgICAgIGZvciAodmFyIGlkIGluIHRoaXMuX3Jhd1NvdXJj
ZUNvZGUpIHsKKyAgICAgICAgICAgIHRoaXMuX3Jhd1NvdXJjZUNvZGVbaWRdLm1lc3NhZ2VzID0g
W107CisgICAgICAgICAgICB0aGlzLl9yYXdTb3VyY2VDb2RlW2lkXS5zZXRGb3JtYXR0ZWQodGhp
cy5fZm9ybWF0U291cmNlKTsKKyAgICAgICAgfQogCisgICAgICAgIHZhciBtZXNzYWdlcyA9IHRo
aXMuX21lc3NhZ2VzOworICAgICAgICB0aGlzLl9tZXNzYWdlcyA9IFtdOwogICAgICAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IG1lc3NhZ2VzLmxlbmd0aDsgKytpKQogICAgICAgICAgICAgdGhpcy5f
YWRkQ29uc29sZU1lc3NhZ2UobWVzc2FnZXNbaV0pOwogCi0gICAgICAgIC8vIEZJWE1FOiBtb3Zl
IHRoaXMgdG8gUmF3U291cmNlQ29kZS4KLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlz
Ll9zb3VyY2VNYXBwaW5nTGlzdGVuZXJzLmxlbmd0aDsgKytpKQotICAgICAgICAgICAgdGhpcy5f
c291cmNlTWFwcGluZ0xpc3RlbmVyc1tpXSgpOwotCiAgICAgICAgIGlmIChXZWJJbnNwZWN0b3Iu
ZGVidWdnZXJNb2RlbC5jYWxsRnJhbWVzKQogICAgICAgICAgICAgdGhpcy5fZGVidWdnZXJQYXVz
ZWQoKTsKICAgICB9LApAQCAtNDQ2LDE1ICs0MjgsMTMgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2Vy
UHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBlID0gewogCiAgICAgX2NyZWF0ZVJhd1NvdXJjZUNv
ZGVJZDogZnVuY3Rpb24oc291cmNlVVJMLCBzY3JpcHRJZCkKICAgICB7Ci0gICAgICAgIHZhciBw
cmVmaXggPSB0aGlzLl9mb3JtYXRTb3VyY2UgPyAiZGVvYmZ1c2NhdGVkOiIgOiAiIjsKLSAgICAg
ICAgcmV0dXJuIHByZWZpeCArIChzb3VyY2VVUkwgfHwgc2NyaXB0SWQpOworICAgICAgICByZXR1
cm4gc291cmNlVVJMIHx8IHNjcmlwdElkOwogICAgIH0sCiAKICAgICBfZGVidWdnZXJSZXNldDog
ZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgdGhpcy5fcmF3U291cmNlQ29kZSA9IHt9OwogICAg
ICAgICB0aGlzLl9tZXNzYWdlcyA9IFtdOwotICAgICAgICB0aGlzLl9zb3VyY2VNYXBwaW5nTGlz
dGVuZXJzID0gW107CiAgICAgICAgIHRoaXMuX3ByZXNlbnRhdGlvbkNhbGxGcmFtZXMgPSBbXTsK
ICAgICAgICAgdGhpcy5fc2VsZWN0ZWRDYWxsRnJhbWVJbmRleCA9IDA7CiAgICAgICAgIHRoaXMu
X2JyZWFrcG9pbnRNYW5hZ2VyLmRlYnVnZ2VyUmVzZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanMKaW5kZXggYjMwN2FmZjI4NDRi
YTE2ZGQzYTIzZDc3MmEwMTVkMjA2Y2M4MTJiNS4uY2Q2ZGQwYjFmMDJjNTk4MmI5MzA1ZGEzMTI0
YWQ0NGIzYzNlMTcyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9TY3JpcHRzUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9TY3JpcHRzUGFuZWwuanMKQEAgLTExMzIsNyArMTEzMiw2IEBAIFdlYkluc3BlY3Rvci5T
Y3JpcHRzUGFuZWwucHJvdG90eXBlID0gewogCiAgICAgX3RvZ2dsZUZvcm1hdFNvdXJjZTogZnVu
Y3Rpb24oKQogICAgIHsKLSAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5zY3JpcHRzLnJlc2V0
KCk7CiAgICAgICAgIHRoaXMuX3RvZ2dsZUZvcm1hdFNvdXJjZUJ1dHRvbi50b2dnbGVkID0gIXRo
aXMuX3RvZ2dsZUZvcm1hdFNvdXJjZUJ1dHRvbi50b2dnbGVkOwogICAgICAgICB0aGlzLl9wcmVz
ZW50YXRpb25Nb2RlbC5zZXRGb3JtYXRTb3VyY2UodGhpcy5fdG9nZ2xlRm9ybWF0U291cmNlQnV0
dG9uLnRvZ2dsZWQpOwogICAgIH0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1NvdXJjZUZpbGUuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1NvdXJjZUZpbGUuanMKaW5kZXggMTM2ZmEwMzY4Y2RjNWUyNzVlYTA5OGZkYzY1NTlj
MzJjMWU3YjdlMC4uZGU1ODFkMGE2NzlmZWQ4MTI1ZWM5MTkyMTU2OGRjNDA2OGI0OTY4NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VGaWxlLmpz
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU291cmNlRmlsZS5qcwpA
QCAtMzUsMTggKzM1LDE1IEBACiAgKiBAY29uc3RydWN0b3IKICAqIEBleHRlbmRzIHtXZWJJbnNw
ZWN0b3IuT2JqZWN0fQogICovCi1XZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZSA9IGZ1bmN0aW9u
KGlkLCBzY3JpcHQsIGZvcm1hdHRlciwgZm9ybWF0dGVkKQorV2ViSW5zcGVjdG9yLlJhd1NvdXJj
ZUNvZGUgPSBmdW5jdGlvbihpZCwgc2NyaXB0LCByZXNvdXJjZSwgZm9ybWF0dGVyLCBmb3JtYXR0
ZWQpCiB7Ci0gICAgdGhpcy5fc2NyaXB0cyA9IFtzY3JpcHRdOwotICAgIHRoaXMuX2Zvcm1hdHRl
ciA9IGZvcm1hdHRlcjsKLSAgICB0aGlzLl9mb3JtYXR0ZWQgPSBmb3JtYXR0ZWQ7Ci0KLSAgICBp
ZiAoc2NyaXB0LnNvdXJjZVVSTCkKLSAgICAgICAgdGhpcy5fcmVzb3VyY2UgPSBXZWJJbnNwZWN0
b3IubmV0d29ya01hbmFnZXIuaW5mbGlnaHRSZXNvdXJjZUZvclVSTChzY3JpcHQuc291cmNlVVJM
KSB8fCBXZWJJbnNwZWN0b3IucmVzb3VyY2VGb3JVUkwoc2NyaXB0LnNvdXJjZVVSTCk7Ci0KICAg
ICB0aGlzLmlkID0gaWQ7CiAgICAgdGhpcy51cmwgPSBzY3JpcHQuc291cmNlVVJMOwogICAgIHRo
aXMuaXNDb250ZW50U2NyaXB0ID0gc2NyaXB0LmlzQ29udGVudFNjcmlwdDsKKyAgICB0aGlzLl9z
Y3JpcHRzID0gW3NjcmlwdF07CisgICAgdGhpcy5fZm9ybWF0dGVyID0gZm9ybWF0dGVyOworICAg
IHRoaXMuX2Zvcm1hdHRlZCA9IGZvcm1hdHRlZDsKKyAgICB0aGlzLl9yZXNvdXJjZSA9IHJlc291
cmNlOwogICAgIHRoaXMubWVzc2FnZXMgPSBbXTsKIAogICAgIHRoaXMuX3VzZVRlbXBvcmFyeUNv
bnRlbnQgPSB0aGlzLl9yZXNvdXJjZSAmJiAhdGhpcy5fcmVzb3VyY2UuZmluaXNoZWQ7CkBAIC03
MCwxNCArNjcsMTUgQEAgV2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUucHJvdG90eXBlID0gewog
CiAgICAgZ2V0IHVpU291cmNlQ29kZSgpCiAgICAgewotICAgICAgICAvLyBGSVhNRTogZXh0cmFj
dCBVSVNvdXJjZUNvZGUgZnJvbSBSYXdTb3VyY2VDb2RlIChjdXJyZW50bHkgUmF3U291cmNlQ29k
ZSBpbXBsZW1lbnRzIG1ldGhvZHMgZnJvbSBib3RoIGludGVyZmFjZXMpLgotICAgICAgICByZXR1
cm4gdGhpczsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3VpU291cmNlQ29kZTsKICAgICB9LAogCi0g
ICAgZ2V0IHJhd1NvdXJjZUNvZGUoKQorICAgIHNldEZvcm1hdHRlZDogZnVuY3Rpb24oZm9ybWF0
dGVkKQogICAgIHsKLSAgICAgICAgLy8gRklYTUU6IGV4dHJhY3QgVUlTb3VyY2VDb2RlIGZyb20g
UmF3U291cmNlQ29kZSAoY3VycmVudGx5IFJhd1NvdXJjZUNvZGUgaW1wbGVtZW50cyBtZXRob2Rz
IGZyb20gYm90aCBpbnRlcmZhY2VzKS4KLSAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgIGlm
ICh0aGlzLl9mb3JtYXR0ZWQgPT09IGZvcm1hdHRlZCkKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgdGhpcy5fZm9ybWF0dGVkID0gZm9ybWF0dGVkOworICAgICAgICB0aGlzLl91cGRhdGVT
b3VyY2VNYXBwaW5nKCk7CiAgICAgfSwKIAogICAgIGNvbnRlbnRFZGl0ZWQ6IGZ1bmN0aW9uKCkK
QEAgLTk0LDcgKzkyLDcgQEAgV2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUucHJvdG90eXBlID0g
ewogICAgIHJhd0xvY2F0aW9uVG9VSUxvY2F0aW9uOiBmdW5jdGlvbihyYXdMb2NhdGlvbikKICAg
ICB7CiAgICAgICAgIHZhciBsb2NhdGlvbiA9IHRoaXMuX21hcHBpbmcgPyB0aGlzLl9tYXBwaW5n
Lm9yaWdpbmFsVG9Gb3JtYXR0ZWQocmF3TG9jYXRpb24pIDogcmF3TG9jYXRpb247Ci0gICAgICAg
IHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlVJTG9jYXRpb24odGhpcywgbG9jYXRpb24ubGluZU51
bWJlciwgbG9jYXRpb24uY29sdW1uTnVtYmVyKTsKKyAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNw
ZWN0b3IuVUlMb2NhdGlvbih0aGlzLnVpU291cmNlQ29kZSwgbG9jYXRpb24ubGluZU51bWJlciwg
bG9jYXRpb24uY29sdW1uTnVtYmVyKTsKICAgICB9LAogCiAgICAgdWlMb2NhdGlvblRvUmF3TG9j
YXRpb246IGZ1bmN0aW9uKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKQEAgLTEyMCwxMiArMTE4
LDYgQEAgV2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUucHJvdG90eXBlID0gewogICAgICAgICBy
ZXR1cm4gY2xvc2VzdFNjcmlwdDsKICAgICB9LAogCi0gICAgcmVxdWVzdENvbnRlbnQ6IGZ1bmN0
aW9uKGNhbGxiYWNrKQotICAgIHsKLSAgICAgICAgLy8gRklYTUU6IHJlbW92ZSB0aGlzLgotICAg
ICAgICB0aGlzLl91aVNvdXJjZUNvZGUucmVxdWVzdENvbnRlbnQoY2FsbGJhY2spOwotICAgIH0s
Ci0KICAgICBjcmVhdGVTb3VyY2VNYXBwaW5nSWZOZWVkZWQ6IGZ1bmN0aW9uKGNhbGxiYWNrKQog
ICAgIHsKICAgICAgICAgLy8gRklYTUU6IHJlbW92ZSBjcmVhdGVTb3VyY2VNYXBwaW5nSWZOZWVk
ZWQsIGNsaWVudCBzaG91bGQgbGlzdGVuIHRvIFNvdXJjZU1hcHBpbmdVcGRhdGVkIGV2ZW50IGlu
c3RlYWQuCkBAIC0yMDIsOSArMTk0LDcgQEAgV2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUucHJv
dG90eXBlID0gewogCiAgICAgX3NhdmVTb3VyY2VNYXBwaW5nOiBmdW5jdGlvbihjb250ZW50UHJv
dmlkZXIsIG1hcHBpbmcpCiAgICAgewotICAgICAgICB2YXIgb2xkVUlTb3VyY2VDb2RlOwotICAg
ICAgICBpZiAodGhpcy5fdWlTb3VyY2VDb2RlKQotICAgICAgICAgICAgb2xkVUlTb3VyY2VDb2Rl
ID0gdGhpczsKKyAgICAgICAgdmFyIG9sZFVJU291cmNlQ29kZSA9IHRoaXMuX3VpU291cmNlQ29k
ZTsKICAgICAgICAgdmFyIHVpU291cmNlQ29kZUlkID0gKHRoaXMuX2Zvcm1hdHRlZCA/ICJkZW9i
ZnVzY2F0ZWQ6IiA6ICIiKSArICh0aGlzLl9zY3JpcHRzWzBdLnNvdXJjZVVSTCB8fCB0aGlzLl9z
Y3JpcHRzWzBdLnNjcmlwdElkKTsKICAgICAgICAgdGhpcy5fdWlTb3VyY2VDb2RlID0gbmV3IFdl
Ykluc3BlY3Rvci5VSVNvdXJjZUNvZGUodWlTb3VyY2VDb2RlSWQsIHRoaXMudXJsLCB0aGlzLmlz
Q29udGVudFNjcmlwdCwgdGhpcywgY29udGVudFByb3ZpZGVyKTsKICAgICAgICAgdGhpcy5fbWFw
cGluZyA9IG1hcHBpbmc7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106575</attachid>
            <date>2011-09-07 05:34:33 -0700</date>
            <delta_ts>2011-09-07 05:48:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-67647-20110907163431.patch</filename>
            <type>text/plain</type>
            <size>32076</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTQ1NzcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0NDBjZjM3ZmY3ZjJhMDg4OWI1MzU0
MWI3ZWYyZGYxZmM0NmIzMWVlLi44YTk1MjMxM2NjYzJkODgyNDczMDRiYWE1ZDA2ODE1MjcwNzc0
ODE3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTEtMDktMDYgIFBhdmVsIFBvZGl2aWxvdiAg
PHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogZG8gbm90
IHJlLWNyZWF0ZSBSYXdTb3VyY2VDb2RlIHdoZW4gdG9nZ2xpbmcgcHJldHR5LXByaW50IG1vZGUu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NzY0Nwor
CisgICAgICAgIDEpIEltcGxlbWVudCBSYXdTb3VyY2VDb2RlLnNldEZvcm1hdHRlZCB0aGF0IGFs
bG93cyB0b2dnbGluZyBwcmV0dHktcHJpbnQgbW9kZSBvbiB0aGUgZmx5IHdpdGhvdXQgcmVzZXR0
aW5nIGV2ZXJ5dGhpbmcuCisgICAgICAgIDIpIEFkZCBSYXdTb3VyY2VDb2RlIHVuaXQgdGVzdHMu
CisgICAgICAgIDMpIFJlbW92ZSBzb3VyY2UgbWFwcGluZyBsaXN0ZW5lcnMgYW5kIGNvbnNvbGUg
bWVzc2FnZXMgZnJvbSBwcmVzZW50YXRpb24gbW9kZWwgKHRoZXkgbGl2ZSBpbiBSYXdTb3VyY2VD
b2RlIG5vdykuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvcmF3LXNvdXJjZS1jb2RlLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL3Jhdy1zb3VyY2UtY29kZS5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0LWZvcm1hdHRlci5odG1s
OgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9zb3VyY2UtZmlsZS5odG1sOgorCiAyMDEx
LTA4LTMwICBQYXZlbCBQb2Rpdmlsb3YgIDxwb2Rpdmlsb3ZAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IGltcGxlbWVudCBzb3VyY2UgbWFwIHYzIGNvbnN1bWVyLgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3Jhdy1zb3VyY2UtY29kZS1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvcmF3LXNvdXJjZS1j
b2RlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZWMzOTIxYmE1OTY5MmUzYWExMjYwZjc1NmMy
MTUwNzAyODYwMjdlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Rl
YnVnZ2VyL3Jhdy1zb3VyY2UtY29kZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNyBAQAorVGVz
dHMgUmF3U291cmNlQ29kZSBjbGFzcy4KKworCitSdW5uaW5nOiB0ZXN0U2NyaXB0V2l0aG91dFJl
c291cmNlCisKK1J1bm5pbmc6IHRlc3RIVE1MV2l0aFBlbmRpbmdSZXNvdXJjZQorCitSdW5uaW5n
OiB0ZXN0SFRNTFdpdGhGaW5pc2hlZFJlc291cmNlCisKK1J1bm5pbmc6IHRlc3RDb250ZW50RWRp
dGVkCisKK1J1bm5pbmc6IHRlc3RGb3JjZVVwZGF0ZVNvdXJjZU1hcHBpbmcKKworUnVubmluZzog
dGVzdEZvcm1hdHRpbmdXaXRoRmluaXNoZWRSZXNvdXJjZQorCitSdW5uaW5nOiB0ZXN0Rm9ybWF0
dGluZ1dpdGhQZW5kaW5nUmVzb3VyY2UKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2RlYnVnZ2VyL3Jhdy1zb3VyY2UtY29kZS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2RlYnVnZ2VyL3Jhdy1zb3VyY2UtY29kZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJiZWRhNmExNTJiYTdi
ZjM2ZGQ5NzZkZjBmNmVkNzBmYWFkNWU3MDEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZGVidWdnZXIvcmF3LXNvdXJjZS1jb2RlLmh0bWwKQEAgLTAsMCArMSw0MDIg
QEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0
b3IvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0PgorCitmdW5jdGlvbiB0
ZXN0KCkKK3sKKyAgICBmdW5jdGlvbiBjcmVhdGVTY3JpcHRNb2NrKHVybCwgcmFuZ2UsIGlzQ29u
dGVudFNjcmlwdCwgc291cmNlKQorICAgIHsKKyAgICAgICAgdmFyIHNjcmlwdCA9IG5ldyBXZWJJ
bnNwZWN0b3IuU2NyaXB0KG51bGwsIHVybCwgcmFuZ2VbMF0sIHJhbmdlWzFdLCByYW5nZVsyXSwg
cmFuZ2VbM10sIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBpc0NvbnRlbnRTY3JpcHQpOworICAgICAg
ICBzY3JpcHQucmVxdWVzdFNvdXJjZSA9IGZ1bmN0aW9uKGNhbGxiYWNrKSB7IHNldFRpbWVvdXQo
Y2FsbGJhY2suYmluZChudWxsLCBzb3VyY2UpLCAwKTsgfTsKKyAgICAgICAgcmV0dXJuIHNjcmlw
dDsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBjcmVhdGVSZXNvdXJjZU1vY2sodHlwZSwgZmluaXNo
ZWQsIGNvbnRlbnQpCisgICAgeworICAgICAgICB2YXIgcmVzb3VyY2UgPSB7fTsKKyAgICAgICAg
cmVzb3VyY2UudHlwZSA9IHR5cGUgPT09ICJkb2N1bWVudCIgPyBXZWJJbnNwZWN0b3IuUmVzb3Vy
Y2UuVHlwZS5Eb2N1bWVudCA6IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLlNjcmlwdDsKKyAg
ICAgICAgcmVzb3VyY2UuZmluaXNoZWQgPSBmaW5pc2hlZDsKKyAgICAgICAgcmVzb3VyY2UuY29u
dGVudCA9IGNvbnRlbnQ7CisgICAgICAgIHJlc291cmNlLnJlcXVlc3RDb250ZW50ID0gZnVuY3Rp
b24oY2FsbGJhY2spIHsgc2V0VGltZW91dChjYWxsYmFjay5iaW5kKG51bGwsIHJlc291cmNlLmNv
bnRlbnQpLCAwKTsgfTsKKyAgICAgICAgcmVzb3VyY2UuZmluaXNoID0gZnVuY3Rpb24oKSB7IHJl
c291cmNlLmZpbmlzaGVkID0gdHJ1ZTsgcmVzb3VyY2UuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJz
KCJmaW5pc2hlZCIpOyB9OworICAgICAgICByZXNvdXJjZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0
b3IuT2JqZWN0LnByb3RvdHlwZTsKKyAgICAgICAgcmV0dXJuIHJlc291cmNlOworICAgIH0KKyAg
ICBmdW5jdGlvbiBjcmVhdGVQZW5kaW5nUmVzb3VyY2VNb2NrKHR5cGUsIGNvbnRlbnQpIHsgcmV0
dXJuIGNyZWF0ZVJlc291cmNlTW9jayh0eXBlLCBmYWxzZSwgY29udGVudCk7IH0KKyAgICBmdW5j
dGlvbiBjcmVhdGVGaW5pc2hlZFJlc291cmNlTW9jayh0eXBlLCBjb250ZW50KSB7IHJldHVybiBj
cmVhdGVSZXNvdXJjZU1vY2sodHlwZSwgdHJ1ZSwgY29udGVudCk7IH0KKworICAgIGZ1bmN0aW9u
IGNyZWF0ZVNjcmlwdEZvcm1hdHRlck1vY2soKQorICAgIHsKKyAgICAgICAgdmFyIHNvdXJjZU1h
cHBpbmcgPSB7CisgICAgICAgICAgICBvcmlnaW5hbFRvRm9ybWF0dGVkOiBmdW5jdGlvbihsb2Nh
dGlvbikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB2YXIgZm9ybWF0dGVkTG9jYXRp
b24gPSB7fTsKKyAgICAgICAgICAgICAgICBmb3JtYXR0ZWRMb2NhdGlvbi5saW5lTnVtYmVyID0g
bG9jYXRpb24ubGluZU51bWJlciAqIDI7CisgICAgICAgICAgICAgICAgZm9ybWF0dGVkTG9jYXRp
b24uY29sdW1uTnVtYmVyID0gbG9jYXRpb24uY29sdW1uTnVtYmVyICogMjsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZm9ybWF0dGVkTG9jYXRpb247CisgICAgICAgICAgICB9LAorCisgICAgICAg
ICAgICBmb3JtYXR0ZWRUb09yaWdpbmFsOiBmdW5jdGlvbihsb2NhdGlvbikKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICB2YXIgb3JpZ2luYWxMb2NhdGlvbiA9IHt9OworICAgICAgICAg
ICAgICAgIG9yaWdpbmFsTG9jYXRpb24ubGluZU51bWJlciA9IE1hdGguZmxvb3IobG9jYXRpb24u
bGluZU51bWJlciAvIDIpOworICAgICAgICAgICAgICAgIG9yaWdpbmFsTG9jYXRpb24uY29sdW1u
TnVtYmVyID0gTWF0aC5mbG9vcihsb2NhdGlvbi5jb2x1bW5OdW1iZXIgLyAyKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gb3JpZ2luYWxMb2NhdGlvbjsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fTsKKyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgIGZvcm1hdENvbnRlbnQ6IGZ1bmN0aW9u
KG1pbWVUeXBlLCBjb250ZW50LCBjYWxsYmFjaykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBzZXRUaW1lb3V0KGNhbGxiYWNrLmJpbmQobnVsbCwgIjxmb3JtYXR0ZWQ+ICIgKyBjb250
ZW50LCBzb3VyY2VNYXBwaW5nKSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg
IH07CisKKyAgICBmdW5jdGlvbiBjcmVhdGVSYXdTb3VyY2VDb2RlKHNjcmlwdCwgcmVzb3VyY2Us
IGZvcm1hdHRlZCkKKyAgICB7CisgICAgICAgIHZhciByYXdTb3VyY2VDb2RlID0gbmV3IFdlYklu
c3BlY3Rvci5SYXdTb3VyY2VDb2RlKCJpZCIsIHNjcmlwdCwgcmVzb3VyY2UsIGNyZWF0ZVNjcmlw
dEZvcm1hdHRlck1vY2soKSwgISFmb3JtYXR0ZWQpOworICAgICAgICByYXdTb3VyY2VDb2RlLmFk
ZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUuRXZlbnRzLlNvdXJjZU1h
cHBpbmdVcGRhdGVkLCBkZWZhdWx0U291cmNlTWFwcGluZ1VwZGF0ZWRIYW5kbGVyKTsKKyAgICAg
ICAgcmV0dXJuIHJhd1NvdXJjZUNvZGU7CisgICAgfQorCisgICAgZnVuY3Rpb24gd2FpdEZvclNv
dXJjZU1hcHBpbmcocmF3U291cmNlQ29kZSwgY2FsbGJhY2spCisgICAgeworICAgICAgICByYXdT
b3VyY2VDb2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUu
RXZlbnRzLlNvdXJjZU1hcHBpbmdVcGRhdGVkLCBkZWZhdWx0U291cmNlTWFwcGluZ1VwZGF0ZWRI
YW5kbGVyKTsKKyAgICAgICAgcmF3U291cmNlQ29kZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3Bl
Y3Rvci5SYXdTb3VyY2VDb2RlLkV2ZW50cy5Tb3VyY2VNYXBwaW5nVXBkYXRlZCwgc291cmNlTWFw
cGluZ1VwZGF0ZWQpOworICAgICAgICBmdW5jdGlvbiBzb3VyY2VNYXBwaW5nVXBkYXRlZChldmVu
dCkKKyAgICAgICAgeworICAgICAgICAgICAgcmF3U291cmNlQ29kZS5yZW1vdmVFdmVudExpc3Rl
bmVyKFdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlLkV2ZW50cy5Tb3VyY2VNYXBwaW5nVXBkYXRl
ZCwgc291cmNlTWFwcGluZ1VwZGF0ZWQpOworICAgICAgICAgICAgcmF3U291cmNlQ29kZS5hZGRF
dmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlLkV2ZW50cy5Tb3VyY2VNYXBw
aW5nVXBkYXRlZCwgZGVmYXVsdFNvdXJjZU1hcHBpbmdVcGRhdGVkSGFuZGxlcik7CisgICAgICAg
ICAgICBjYWxsYmFjayhldmVudCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmdW5jdGlvbiBk
ZWZhdWx0U291cmNlTWFwcGluZ1VwZGF0ZWRIYW5kbGVyKCkKKyAgICB7CisgICAgICAgIHRocm93
ICJVbmV4cGVjdGVkIFNvdXJjZU1hcHBpbmdVcGRhdGVkIGV2ZW50LiI7CisgICAgfQorCisgICAg
dmFyIG9yaWdpbmFsU2V0VGltZW91dCA9IHdpbmRvdy5zZXRUaW1lb3V0OworICAgIHZhciB0aW1l
cnMgPSB7fTsKKyAgICB3aW5kb3cuc2V0VGltZW91dCA9IGZ1bmN0aW9uKGNhbGxiYWNrLCB0aW1l
b3V0KQorICAgIHsKKyAgICAgICAgdmFyIHRpbWVySWQgPSBvcmlnaW5hbFNldFRpbWVvdXQuY2Fs
bCh3aW5kb3csIGludm9rZUNhbGxiYWNrLCB0aW1lb3V0KQorICAgICAgICBmdW5jdGlvbiBpbnZv
a2VDYWxsYmFjaygpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlbGV0ZSB0aW1lcnNbdGltZXJJ
ZF07CisgICAgICAgICAgICBjYWxsYmFjaygpOworICAgICAgICB9CisgICAgICAgIHRpbWVyc1t0
aW1lcklkXSA9IGNhbGxiYWNrOworICAgIH07CisgICAgZnVuY3Rpb24gZmlyZVRpbWVycygpCisg
ICAgeworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDM7ICsraSkgeworICAgICAgICAgICAg
Zm9yICh2YXIgaWQgaW4gdGltZXJzKSB7CisgICAgICAgICAgICAgICAgd2luZG93LmNsZWFyVGlt
ZW91dChpZCk7CisgICAgICAgICAgICAgICAgdGltZXJzW2lkXSgpOworICAgICAgICAgICAgICAg
IGRlbGV0ZSB0aW1lcnNbaWRdOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisg
ICAgSW5zcGVjdG9yVGVzdC5ydW5UZXN0U3VpdGUoWworICAgICAgICBmdW5jdGlvbiB0ZXN0U2Ny
aXB0V2l0aG91dFJlc291cmNlKG5leHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBzY3Jp
cHQgPSBjcmVhdGVTY3JpcHRNb2NrKCJmb28uanMiLCBbMCwgMCwgMCwgMTVdLCB0cnVlLCAiPHNj
cmlwdCBzb3VyY2U+Iik7CisgICAgICAgICAgICB2YXIgcmF3U291cmNlQ29kZSA9IGNyZWF0ZVJh
d1NvdXJjZUNvZGUoc2NyaXB0LCBudWxsKTsKKyAgICAgICAgICAgIHdhaXRGb3JTb3VyY2VNYXBw
aW5nKHJhd1NvdXJjZUNvZGUsIG1hcHBpbmdSZWFkeSk7CisKKyAgICAgICAgICAgIGZ1bmN0aW9u
IG1hcHBpbmdSZWFkeShldmVudCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmFzc2VydFRydWUoIWV2ZW50LmRhdGEub2xkU291cmNlQ29kZSk7CisgICAgICAg
ICAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9IHJhd1NvdXJjZUNvZGUudWlTb3VyY2VDb2RlOwor
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKCJmb28uanMiLCB1aVNv
dXJjZUNvZGUudXJsKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFs
cyh0cnVlLCB1aVNvdXJjZUNvZGUuaXNDb250ZW50U2NyaXB0KTsKKyAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyhyYXdTb3VyY2VDb2RlLCB1aVNvdXJjZUNvZGUucmF3
U291cmNlQ29kZSk7CisgICAgICAgICAgICAgICAgdWlTb3VyY2VDb2RlLnJlcXVlc3RDb250ZW50
KGRpZFJlcXVlc3RDb250ZW50KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rp
b24gZGlkUmVxdWVzdENvbnRlbnQobWltZVR5cGUsIGNvbnRlbnQpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoInRleHQvamF2YXNjcmlw
dCIsIG1pbWVUeXBlKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFs
cygiPHNjcmlwdCBzb3VyY2U+IiwgY29udGVudCk7CisgICAgICAgICAgICAgICAgbmV4dCgpOwor
ICAgICAgICAgICAgfQorICAgICAgICB9LAorCisgICAgICAgIGZ1bmN0aW9uIHRlc3RIVE1MV2l0
aFBlbmRpbmdSZXNvdXJjZShuZXh0KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgc2NyaXB0
MSA9IGNyZWF0ZVNjcmlwdE1vY2soImluZGV4Lmh0bWwiLCBbMCwgMTAsIDAsIDI3XSwgZmFsc2Us
ICI8c2NyaXB0IHNvdXJjZSAxPiIpOworICAgICAgICAgICAgdmFyIHNjcmlwdDIgPSBjcmVhdGVT
Y3JpcHRNb2NrKCJpbmRleC5odG1sIiwgWzAsIDQ1LCAwLCA2Ml0sIGZhbHNlLCAiPHNjcmlwdCBz
b3VyY2UgMj4iKTsKKyAgICAgICAgICAgIHZhciByZXNvdXJjZSA9IGNyZWF0ZVBlbmRpbmdSZXNv
dXJjZU1vY2soImRvY3VtZW50IiwgIjxyZXNvdXJjZSBjb250ZW50PiIpOworICAgICAgICAgICAg
dmFyIHJhd1NvdXJjZUNvZGUgPSBjcmVhdGVSYXdTb3VyY2VDb2RlKHNjcmlwdDEsIHJlc291cmNl
KTsKKworICAgICAgICAgICAgZmlyZVRpbWVycygpOworICAgICAgICAgICAgd2FpdEZvclNvdXJj
ZU1hcHBpbmcocmF3U291cmNlQ29kZSwgbWFwcGluZ1JlYWR5KTsKKyAgICAgICAgICAgIHJlc291
cmNlLmZpbmlzaCgpOworCisgICAgICAgICAgICBmdW5jdGlvbiBtYXBwaW5nUmVhZHkoZXZlbnQp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRUcnVl
KCFldmVudC5kYXRhLm9sZFNvdXJjZUNvZGUpOworICAgICAgICAgICAgICAgIHZhciB1aVNvdXJj
ZUNvZGUgPSByYXdTb3VyY2VDb2RlLnVpU291cmNlQ29kZTsKKyAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmFzc2VydEVxdWFscygiaW5kZXguaHRtbCIsIHVpU291cmNlQ29kZS51cmwpOwor
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKGZhbHNlLCB1aVNvdXJj
ZUNvZGUuaXNDb250ZW50U2NyaXB0KTsKKyAgICAgICAgICAgICAgICB1aVNvdXJjZUNvZGUucmVx
dWVzdENvbnRlbnQoZGlkUmVxdWVzdENvbnRlbnQpOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBmdW5jdGlvbiBkaWRSZXF1ZXN0Q29udGVudChtaW1lVHlwZSwgY29udGVudCkKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyhtaW1l
VHlwZSwgInRleHQvaHRtbCIpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0
RXF1YWxzKCI8cmVzb3VyY2UgY29udGVudD4iLCBjb250ZW50KTsKKworICAgICAgICAgICAgICAg
IHJhd1NvdXJjZUNvZGUuYWRkU2NyaXB0KHNjcmlwdDIpOworICAgICAgICAgICAgICAgIGZpcmVU
aW1lcnMoKTsKKyAgICAgICAgICAgICAgICByYXdTb3VyY2VDb2RlLmZvcmNlVXBkYXRlU291cmNl
TWFwcGluZygpOworICAgICAgICAgICAgICAgIGZpcmVUaW1lcnMoKTsKKyAgICAgICAgICAgICAg
ICBuZXh0KCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0sCisKKyAgICAgICAgZnVuY3Rpb24g
dGVzdEhUTUxXaXRoRmluaXNoZWRSZXNvdXJjZShuZXh0KQorICAgICAgICB7CisgICAgICAgICAg
ICB2YXIgc2NyaXB0MSA9IGNyZWF0ZVNjcmlwdE1vY2soImluZGV4Lmh0bWwiLCBbMCwgMTAsIDAs
IDI3XSwgZmFsc2UsICI8c2NyaXB0IHNvdXJjZSAxPiIpOworICAgICAgICAgICAgdmFyIHNjcmlw
dDIgPSBjcmVhdGVTY3JpcHRNb2NrKCJpbmRleC5odG1sIiwgWzAsIDQ1LCAwLCA2Ml0sIGZhbHNl
LCAiPHNjcmlwdCBzb3VyY2UgMj4iKTsKKyAgICAgICAgICAgIHZhciByZXNvdXJjZSA9IGNyZWF0
ZUZpbmlzaGVkUmVzb3VyY2VNb2NrKCJkb2N1bWVudCIsICI8cmVzb3VyY2UgY29udGVudD4iKTsK
KyAgICAgICAgICAgIHZhciByYXdTb3VyY2VDb2RlID0gY3JlYXRlUmF3U291cmNlQ29kZShzY3Jp
cHQxLCByZXNvdXJjZSk7CisgICAgICAgICAgICB3YWl0Rm9yU291cmNlTWFwcGluZyhyYXdTb3Vy
Y2VDb2RlLCBtYXBwaW5nUmVhZHkpOworCisgICAgICAgICAgICBmdW5jdGlvbiBtYXBwaW5nUmVh
ZHkoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHZhciB1aVNvdXJjZUNvZGUgPSBy
YXdTb3VyY2VDb2RlLnVpU291cmNlQ29kZTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmFzc2VydEVxdWFscygiaW5kZXguaHRtbCIsIHVpU291cmNlQ29kZS51cmwpOworICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKGZhbHNlLCB1aVNvdXJjZUNvZGUuaXND
b250ZW50U2NyaXB0KTsKKyAgICAgICAgICAgICAgICB1aVNvdXJjZUNvZGUucmVxdWVzdENvbnRl
bnQoZGlkUmVxdWVzdENvbnRlbnQpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5j
dGlvbiBkaWRSZXF1ZXN0Q29udGVudChtaW1lVHlwZSwgY29udGVudCkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyhtaW1lVHlwZSwgInRl
eHQvaHRtbCIpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKCI8
cmVzb3VyY2UgY29udGVudD4iLCBjb250ZW50KTsKKworICAgICAgICAgICAgICAgIHJhd1NvdXJj
ZUNvZGUuYWRkU2NyaXB0KHNjcmlwdDIpOworICAgICAgICAgICAgICAgIGZpcmVUaW1lcnMoKTsK
KyAgICAgICAgICAgICAgICByYXdTb3VyY2VDb2RlLmZvcmNlVXBkYXRlU291cmNlTWFwcGluZygp
OworICAgICAgICAgICAgICAgIGZpcmVUaW1lcnMoKTsKKyAgICAgICAgICAgICAgICBuZXh0KCk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0sCisKKyAgICAgICAgZnVuY3Rpb24gdGVzdENvbnRl
bnRFZGl0ZWQobmV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHNjcmlwdCA9IGNyZWF0
ZVNjcmlwdE1vY2soImZvby5qcyIsIFswLCAwLCAwLCAxNV0sIHRydWUsICI8c2NyaXB0IHNvdXJj
ZT4iKTsKKyAgICAgICAgICAgIHZhciByZXNvdXJjZSA9IGNyZWF0ZUZpbmlzaGVkUmVzb3VyY2VN
b2NrKCJzY3JpcHQiLCAiPHJlc291cmNlIGNvbnRlbnQ+Iik7CisgICAgICAgICAgICB2YXIgcmF3
U291cmNlQ29kZSA9IGNyZWF0ZVJhd1NvdXJjZUNvZGUoc2NyaXB0LCByZXNvdXJjZSk7CisgICAg
ICAgICAgICB3YWl0Rm9yU291cmNlTWFwcGluZyhyYXdTb3VyY2VDb2RlLCBtYXBwaW5nUmVhZHkp
OworCisgICAgICAgICAgICBmdW5jdGlvbiBtYXBwaW5nUmVhZHkoKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIHJhd1NvdXJjZUNvZGUudWlTb3VyY2VDb2RlLnJlcXVlc3RDb250ZW50
KGRpZFJlcXVlc3RDb250ZW50KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rp
b24gZGlkUmVxdWVzdENvbnRlbnQobWltZVR5cGUsIGNvbnRlbnQpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoInRleHQvamF2YXNjcmlw
dCIsIG1pbWVUeXBlKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFs
cygiPHJlc291cmNlIGNvbnRlbnQ+IiwgY29udGVudCk7CisKKyAgICAgICAgICAgICAgICB3YWl0
Rm9yU291cmNlTWFwcGluZyhyYXdTb3VyY2VDb2RlLCBtYXBwaW5nUmVhZHlBZnRlckVkaXQpOwor
ICAgICAgICAgICAgICAgIHJlc291cmNlLmNvbnRlbnQgPSAiPGVkaXRlZCByZXNvdXJjZSBjb250
ZW50PiI7CisgICAgICAgICAgICAgICAgcmF3U291cmNlQ29kZS5jb250ZW50RWRpdGVkKCk7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIG1hcHBpbmdSZWFkeUFmdGVyRWRp
dCgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmF3U291cmNlQ29kZS51aVNvdXJj
ZUNvZGUucmVxdWVzdENvbnRlbnQoZGlkUmVxdWVzdENvbnRlbnRBZnRlckVkaXQpOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBkaWRSZXF1ZXN0Q29udGVudEFmdGVyRWRp
dChtaW1lVHlwZSwgY29udGVudCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmFzc2VydEVxdWFscyhtaW1lVHlwZSwgInRleHQvamF2YXNjcmlwdCIpOworICAg
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKCI8ZWRpdGVkIHJlc291cmNl
IGNvbnRlbnQ+IiwgY29udGVudCk7CisgICAgICAgICAgICAgICAgbmV4dCgpOworICAgICAgICAg
ICAgfQorICAgICAgICB9LAorCisgICAgICAgIGZ1bmN0aW9uIHRlc3RGb3JjZVVwZGF0ZVNvdXJj
ZU1hcHBpbmcobmV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHNjcmlwdDEgPSBjcmVh
dGVTY3JpcHRNb2NrKCJpbmRleC5odG1sIiwgWzAsIDEwLCAwLCAyN10sIGZhbHNlLCAiPHNjcmlw
dCBzb3VyY2UgMT4iKTsKKyAgICAgICAgICAgIHZhciBzY3JpcHQyID0gY3JlYXRlU2NyaXB0TW9j
aygiaW5kZXguaHRtbCIsIFswLCA0NSwgMCwgNjJdLCBmYWxzZSwgIjxzY3JpcHQgc291cmNlIDI+
Iik7CisgICAgICAgICAgICB2YXIgc2NyaXB0MyA9IGNyZWF0ZVNjcmlwdE1vY2soImluZGV4Lmh0
bWwiLCBbMSwgMTAsIDEsIDI3XSwgZmFsc2UsICI8c2NyaXB0IHNvdXJjZSAzPiIpOworICAgICAg
ICAgICAgdmFyIHJlc291cmNlID0gY3JlYXRlUGVuZGluZ1Jlc291cmNlTW9jaygiZG9jdW1lbnQi
LCAiPHJlc291cmNlIGNvbnRlbnQ+Iik7CisgICAgICAgICAgICB2YXIgcmF3U291cmNlQ29kZSA9
IGNyZWF0ZVJhd1NvdXJjZUNvZGUoc2NyaXB0MSwgcmVzb3VyY2UpOworCisgICAgICAgICAgICBm
aXJlVGltZXJzKCk7CisgICAgICAgICAgICB3YWl0Rm9yU291cmNlTWFwcGluZyhyYXdTb3VyY2VD
b2RlLCByZXF1ZXN0Q29udGVudCk7CisgICAgICAgICAgICByYXdTb3VyY2VDb2RlLmZvcmNlVXBk
YXRlU291cmNlTWFwcGluZygpOworCisgICAgICAgICAgICBmdW5jdGlvbiByZXF1ZXN0Q29udGVu
dCgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmF3U291cmNlQ29kZS51aVNvdXJj
ZUNvZGUucmVxdWVzdENvbnRlbnQoZGlkUmVxdWVzdENvbnRlbnRPbmVTY3JpcHQpOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBkaWRSZXF1ZXN0Q29udGVudE9uZVNjcmlw
dChtaW1lVHlwZSwgY29udGVudCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmFzc2VydEVxdWFscyhtaW1lVHlwZSwgInRleHQvaHRtbCIpOworICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKCIgIDxzY3JpcHQ+PHNjcmlwdCBzb3Vy
Y2UgMT48LyIgKyAic2NyaXB0PiIsIGNvbnRlbnQpOworCisgICAgICAgICAgICAgICAgcmF3U291
cmNlQ29kZS5mb3JjZVVwZGF0ZVNvdXJjZU1hcHBpbmcoKTsKKyAgICAgICAgICAgICAgICBmaXJl
VGltZXJzKCk7CisgICAgICAgICAgICAgICAgcmF3U291cmNlQ29kZS5hZGRTY3JpcHQoc2NyaXB0
Mik7CisgICAgICAgICAgICAgICAgZmlyZVRpbWVycygpOworICAgICAgICAgICAgICAgIHdhaXRG
b3JTb3VyY2VNYXBwaW5nKHJhd1NvdXJjZUNvZGUsIHJlcXVlc3RDb250ZW50VHdvU2NyaXB0cyk7
CisgICAgICAgICAgICAgICAgcmF3U291cmNlQ29kZS5mb3JjZVVwZGF0ZVNvdXJjZU1hcHBpbmco
KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gcmVxdWVzdENvbnRlbnRU
d29TY3JpcHRzKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByYXdTb3VyY2VDb2Rl
LnVpU291cmNlQ29kZS5yZXF1ZXN0Q29udGVudChkaWRSZXF1ZXN0Q29udGVudFR3b1NjcmlwdHMp
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBkaWRSZXF1ZXN0Q29udGVu
dFR3b1NjcmlwdHMobWltZVR5cGUsIGNvbnRlbnQpCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMobWltZVR5cGUsICJ0ZXh0L2h0bWwiKTsK
KyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscygiICA8c2NyaXB0Pjxz
Y3JpcHQgc291cmNlIDE+PC8iICsgInNjcmlwdD4gPHNjcmlwdD48c2NyaXB0IHNvdXJjZSAyPjwv
IiArICJzY3JpcHQ+IiwgY29udGVudCk7CisKKyAgICAgICAgICAgICAgICByYXdTb3VyY2VDb2Rl
LmZvcmNlVXBkYXRlU291cmNlTWFwcGluZygpOworICAgICAgICAgICAgICAgIGZpcmVUaW1lcnMo
KTsKKyAgICAgICAgICAgICAgICB3YWl0Rm9yU291cmNlTWFwcGluZyhyYXdTb3VyY2VDb2RlLCBy
ZXF1ZXN0Q29udGVudFJlc291cmNlKTsKKyAgICAgICAgICAgICAgICByZXNvdXJjZS5maW5pc2go
KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gcmVxdWVzdENvbnRlbnRS
ZXNvdXJjZSgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmF3U291cmNlQ29kZS51
aVNvdXJjZUNvZGUucmVxdWVzdENvbnRlbnQoZGlkUmVxdWVzdENvbnRlbnRSZXNvdXJjZSk7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGRpZFJlcXVlc3RDb250ZW50UmVz
b3VyY2UobWltZVR5cGUsIGNvbnRlbnQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMobWltZVR5cGUsICJ0ZXh0L2h0bWwiKTsKKyAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscygiPHJlc291cmNlIGNvbnRlbnQ+
IiwgY29udGVudCk7CisKKyAgICAgICAgICAgICAgICByYXdTb3VyY2VDb2RlLmFkZFNjcmlwdChz
Y3JpcHQzKTsKKyAgICAgICAgICAgICAgICBmaXJlVGltZXJzKCk7CisgICAgICAgICAgICAgICAg
cmF3U291cmNlQ29kZS5mb3JjZVVwZGF0ZVNvdXJjZU1hcHBpbmcoKTsKKyAgICAgICAgICAgICAg
ICBmaXJlVGltZXJzKCk7CisKKyAgICAgICAgICAgICAgICBuZXh0KCk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0sCisKKyAgICAgICAgZnVuY3Rpb24gdGVzdEZvcm1hdHRpbmdXaXRoRmluaXNo
ZWRSZXNvdXJjZShuZXh0KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgc2NyaXB0ID0gY3Jl
YXRlU2NyaXB0TW9jaygiZm9vLmpzIiwgWzAsIDAsIDAsIDE1XSwgdHJ1ZSwgIjxzY3JpcHQgc291
cmNlPiIpOworICAgICAgICAgICAgdmFyIHJlc291cmNlID0gY3JlYXRlRmluaXNoZWRSZXNvdXJj
ZU1vY2soInNjcmlwdCIsICI8cmVzb3VyY2UgY29udGVudD4iKTsKKyAgICAgICAgICAgIHZhciBy
YXdTb3VyY2VDb2RlID0gY3JlYXRlUmF3U291cmNlQ29kZShzY3JpcHQsIHJlc291cmNlLCBmYWxz
ZSk7CisgICAgICAgICAgICB3YWl0Rm9yU291cmNlTWFwcGluZyhyYXdTb3VyY2VDb2RlLCByZXF1
ZXN0Q29udGVudCk7CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHJlcXVlc3RDb250ZW50KCkKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gcmF3U291cmNl
Q29kZS51aVNvdXJjZUNvZGU7CisgICAgICAgICAgICAgICAgdmFyIHVpTG9jYXRpb24gPSByYXdT
b3VyY2VDb2RlLnJhd0xvY2F0aW9uVG9VSUxvY2F0aW9uKHsgbGluZU51bWJlciA6IDEsIGNvbHVt
bk51bWJlcjogMiB9KTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFs
cyh1aVNvdXJjZUNvZGUsIHVpTG9jYXRpb24udWlTb3VyY2VDb2RlKTsKKyAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscygxLCB1aUxvY2F0aW9uLmxpbmVOdW1iZXIpOwor
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKDIsIHVpTG9jYXRpb24u
Y29sdW1uTnVtYmVyKTsKKyAgICAgICAgICAgICAgICB1aVNvdXJjZUNvZGUucmVxdWVzdENvbnRl
bnQoZGlkUmVxdWVzdENvbnRlbnQpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5j
dGlvbiBkaWRSZXF1ZXN0Q29udGVudChtaW1lVHlwZSwgY29udGVudCkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscygidGV4dC9qYXZhc2Ny
aXB0IiwgbWltZVR5cGUpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1
YWxzKCI8cmVzb3VyY2UgY29udGVudD4iLCBjb250ZW50KTsKKworICAgICAgICAgICAgICAgIHdh
aXRGb3JTb3VyY2VNYXBwaW5nKHJhd1NvdXJjZUNvZGUsIHJlcXVlc3RGb3JtYXR0ZWRDb250ZW50
KTsKKyAgICAgICAgICAgICAgICByYXdTb3VyY2VDb2RlLnNldEZvcm1hdHRlZCh0cnVlKTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gcmVxdWVzdEZvcm1hdHRlZENvbnRl
bnQoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHZhciB1aVNvdXJjZUNvZGUgPSBy
YXdTb3VyY2VDb2RlLnVpU291cmNlQ29kZTsKKyAgICAgICAgICAgICAgICB2YXIgdWlMb2NhdGlv
biA9IHJhd1NvdXJjZUNvZGUucmF3TG9jYXRpb25Ub1VJTG9jYXRpb24oeyBsaW5lTnVtYmVyIDog
MSwgY29sdW1uTnVtYmVyOiAyIH0pOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNz
ZXJ0RXF1YWxzKHVpU291cmNlQ29kZSwgdWlMb2NhdGlvbi51aVNvdXJjZUNvZGUpOworICAgICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKDIsIHVpTG9jYXRpb24ubGluZU51
bWJlcik7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoNCwgdWlM
b2NhdGlvbi5jb2x1bW5OdW1iZXIpOworICAgICAgICAgICAgICAgIHVpU291cmNlQ29kZS5yZXF1
ZXN0Q29udGVudChkaWRSZXF1ZXN0Rm9ybWF0dGVkQ29udGVudCk7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIGZ1bmN0aW9uIGRpZFJlcXVlc3RGb3JtYXR0ZWRDb250ZW50KG1pbWVUeXBl
LCBjb250ZW50KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
YXNzZXJ0RXF1YWxzKG1pbWVUeXBlLCAidGV4dC9qYXZhc2NyaXB0Iik7CisgICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoIjxmb3JtYXR0ZWQ+IDxyZXNvdXJjZSBjb250
ZW50PiIsIGNvbnRlbnQpOworCisgICAgICAgICAgICAgICAgd2FpdEZvclNvdXJjZU1hcHBpbmco
cmF3U291cmNlQ29kZSwgcmVxdWVzdE5vdEZvcm1hdHRlZENvbnRlbnQpOworICAgICAgICAgICAg
ICAgIHJhd1NvdXJjZUNvZGUuc2V0Rm9ybWF0dGVkKGZhbHNlKTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgZnVuY3Rpb24gcmVxdWVzdE5vdEZvcm1hdHRlZENvbnRlbnQoKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIHZhciB1aVNvdXJjZUNvZGUgPSByYXdTb3VyY2VDb2Rl
LnVpU291cmNlQ29kZTsKKyAgICAgICAgICAgICAgICB2YXIgdWlMb2NhdGlvbiA9IHJhd1NvdXJj
ZUNvZGUucmF3TG9jYXRpb25Ub1VJTG9jYXRpb24oeyBsaW5lTnVtYmVyIDogMSwgY29sdW1uTnVt
YmVyOiAyIH0pOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKHVp
U291cmNlQ29kZSwgdWlMb2NhdGlvbi51aVNvdXJjZUNvZGUpOworICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKDEsIHVpTG9jYXRpb24ubGluZU51bWJlcik7CisgICAg
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoMiwgdWlMb2NhdGlvbi5jb2x1
bW5OdW1iZXIpOworICAgICAgICAgICAgICAgIHVpU291cmNlQ29kZS5yZXF1ZXN0Q29udGVudChk
aWRSZXF1ZXN0Tm90Rm9ybWF0dGVkQ29udGVudCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIGZ1bmN0aW9uIGRpZFJlcXVlc3ROb3RGb3JtYXR0ZWRDb250ZW50KG1pbWVUeXBlLCBjb250
ZW50KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0
RXF1YWxzKCJ0ZXh0L2phdmFzY3JpcHQiLCBtaW1lVHlwZSk7CisgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoIjxyZXNvdXJjZSBjb250ZW50PiIsIGNvbnRlbnQpOwor
CisgICAgICAgICAgICAgICAgbmV4dCgpOworICAgICAgICAgICAgfQorICAgICAgICB9LAorCisg
ICAgICAgIGZ1bmN0aW9uIHRlc3RGb3JtYXR0aW5nV2l0aFBlbmRpbmdSZXNvdXJjZShuZXh0KQor
ICAgICAgICB7CisgICAgICAgICAgICB2YXIgc2NyaXB0ID0gY3JlYXRlU2NyaXB0TW9jaygiZm9v
LmpzIiwgWzAsIDAsIDAsIDE1XSwgdHJ1ZSwgIjxzY3JpcHQgc291cmNlPiIpOworICAgICAgICAg
ICAgdmFyIHJlc291cmNlID0gY3JlYXRlUGVuZGluZ1Jlc291cmNlTW9jaygic2NyaXB0IiwgIjxy
ZXNvdXJjZSBjb250ZW50PiIpOworICAgICAgICAgICAgdmFyIHJhd1NvdXJjZUNvZGUgPSBjcmVh
dGVSYXdTb3VyY2VDb2RlKHNjcmlwdCwgcmVzb3VyY2UsIHRydWUpOworCisgICAgICAgICAgICBm
aXJlVGltZXJzKCk7CisgICAgICAgICAgICB3YWl0Rm9yU291cmNlTWFwcGluZyhyYXdTb3VyY2VD
b2RlLCBjaGVja01hcHBpbmcpOworICAgICAgICAgICAgcmVzb3VyY2UuZmluaXNoKCk7CisKKyAg
ICAgICAgICAgIGZ1bmN0aW9uIGNoZWNrTWFwcGluZygpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9IHJhd1NvdXJjZUNvZGUudWlTb3VyY2VDb2RlOwor
ICAgICAgICAgICAgICAgIHZhciB1aUxvY2F0aW9uID0gcmF3U291cmNlQ29kZS5yYXdMb2NhdGlv
blRvVUlMb2NhdGlvbih7IGxpbmVOdW1iZXIgOiAxLCBjb2x1bW5OdW1iZXI6IDIgfSk7CisgICAg
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHModWlTb3VyY2VDb2RlLCB1aUxv
Y2F0aW9uLnVpU291cmNlQ29kZSk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3Nl
cnRFcXVhbHMoMiwgdWlMb2NhdGlvbi5saW5lTnVtYmVyKTsKKyAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmFzc2VydEVxdWFscyg0LCB1aUxvY2F0aW9uLmNvbHVtbk51bWJlcik7CisKKyAg
ICAgICAgICAgICAgICB3YWl0Rm9yU291cmNlTWFwcGluZyhyYXdTb3VyY2VDb2RlLCBjaGVja01h
cHBpbmdBZ2Fpbik7CisgICAgICAgICAgICAgICAgcmF3U291cmNlQ29kZS5zZXRGb3JtYXR0ZWQo
ZmFsc2UpOworICAgICAgICAgICAgICAgIHJhd1NvdXJjZUNvZGUuc2V0Rm9ybWF0dGVkKHRydWUp
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBjaGVja01hcHBpbmdBZ2Fp
bigpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9IHJh
d1NvdXJjZUNvZGUudWlTb3VyY2VDb2RlOworICAgICAgICAgICAgICAgIHZhciB1aUxvY2F0aW9u
ID0gcmF3U291cmNlQ29kZS5yYXdMb2NhdGlvblRvVUlMb2NhdGlvbih7IGxpbmVOdW1iZXIgOiAx
LCBjb2x1bW5OdW1iZXI6IDIgfSk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3Nl
cnRFcXVhbHModWlTb3VyY2VDb2RlLCB1aUxvY2F0aW9uLnVpU291cmNlQ29kZSk7CisgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoMiwgdWlMb2NhdGlvbi5saW5lTnVt
YmVyKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyg0LCB1aUxv
Y2F0aW9uLmNvbHVtbk51bWJlcik7CisKKyAgICAgICAgICAgICAgICBmaXJlVGltZXJzKCk7CisK
KyAgICAgICAgICAgICAgICBuZXh0KCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICBd
KTsKK307CisKKzwvc2NyaXB0PgorCis8L2hlYWQ+CisKKzxib2R5IG9ubG9hZD0icnVuVGVzdCgp
Ij4KKzxwPlRlc3RzIFJhd1NvdXJjZUNvZGUgY2xhc3MuPC9wPgorCis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0LWZvcm1h
dHRlci5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdC1mb3JtYXR0
ZXIuaHRtbAppbmRleCBmZjk5Zjc0NDMzZmE5NjY5YTMxY2EyYjk5ODMzZGYxNzFkYjhlN2E5Li44
MDM4ZjU5ZTA2MGIzNDVlMmUzNzJkNTgxNWNkZTQxOWQzYmFiOWJiIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0LWZvcm1hdHRlci5odG1sCisrKyBiL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHQtZm9ybWF0dGVyLmh0bWwKQEAgLTE4
NSw3ICsxODUsNyBAQCB2YXIgdGVzdCA9IGZ1bmN0aW9uKCkKICAgICAgICAgICAgIGZ1bmN0aW9u
IGRpZEV2YWx1YXRlKCkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBkdW1wQ29uc29s
ZU1lc3NhZ2VVUkxzKCk7Ci0gICAgICAgICAgICAgICAgcGFuZWwuX3ByZXNlbnRhdGlvbk1vZGVs
LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwu
RXZlbnRzLlVJU291cmNlQ29kZUFkZGVkLCAgdWlTb3VyY2VDb2RlUmVwbGFjZWQpOworICAgICAg
ICAgICAgICAgIHBhbmVsLl9wcmVzZW50YXRpb25Nb2RlbC5hZGRFdmVudExpc3RlbmVyKFdlYklu
c3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLkV2ZW50cy5VSVNvdXJjZUNvZGVSZXBs
YWNlZCwgIHVpU291cmNlQ29kZVJlcGxhY2VkKTsKICAgICAgICAgICAgICAgICBwYW5lbC5fdG9n
Z2xlRm9ybWF0U291cmNlKCk7CiAgICAgICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zb3VyY2UtZmlsZS5odG1sIGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2RlYnVnZ2VyL3NvdXJjZS1maWxlLmh0bWwKaW5kZXggNTA1NmIwOTVlZmNjOWNiNjI1
OTBkM2JmZjZiYzA4MjE0ZGUwZGY2NC4uY2UyYjM3Yzc4YmI3MmUxNTI1OTI5M2ZlMjgxMWZkNjBk
YzM2NjM5NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NvdXJj
ZS1maWxlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NvdXJjZS1m
aWxlLmh0bWwKQEAgLTgxLDcgKzgxLDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIGZ1bmN0
aW9uIHRlc3RGb3JtYXR0ZWRDb252ZXJ0TG9jYXRpb24obmV4dCkKICAgICAgICAgewogICAgICAg
ICAgICAgdmFyIHNjcmlwdCA9IG5ldyBXZWJJbnNwZWN0b3IuU2NyaXB0KCIxIiwgImZvby5qcyIs
IDAsIDAsIDIwLCA4MCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIGZhbHNlKTsKLSAgICAgICAgICAg
IHZhciByYXdTb3VyY2VDb2RlID0gbmV3IFdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlKCJpZCIs
IHNjcmlwdCwgbW9ja1NjcmlwdEZvcm1hdHRlciwgdHJ1ZSk7CisgICAgICAgICAgICB2YXIgcmF3
U291cmNlQ29kZSA9IG5ldyBXZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZSgiaWQiLCBzY3JpcHQs
IG51bGwsIG1vY2tTY3JpcHRGb3JtYXR0ZXIsIHRydWUpOwogCiAgICAgICAgICAgICBmdW5jdGlv
biBkaWRDcmVhdGVTb3VyY2VNYXBwaW5nKCkKICAgICAgICAgICAgIHsKQEAgLTk2LDcgKzk2LDcg
QEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIHsKICAgICAgICAgICAgIHZhciBzY3JpcHQxID0g
bmV3IFdlYkluc3BlY3Rvci5TY3JpcHQoIjEiLCAiZm9vLmpzIiwgMTAsIDIwLCAzMCwgNDAsIHVu
ZGVmaW5lZCwgdW5kZWZpbmVkLCBmYWxzZSk7CiAgICAgICAgICAgICB2YXIgc2NyaXB0MiA9IG5l
dyBXZWJJbnNwZWN0b3IuU2NyaXB0KCIyIiwgImZvby5qcyIsIDUwLCA2MCwgNzAsIDgwLCB1bmRl
ZmluZWQsIHVuZGVmaW5lZCwgZmFsc2UpOwotICAgICAgICAgICAgdmFyIHJhd1NvdXJjZUNvZGUg
PSBuZXcgV2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUoImlkIiwgc2NyaXB0MSwgbW9ja1Njcmlw
dEZvcm1hdHRlciwgdHJ1ZSk7CisgICAgICAgICAgICB2YXIgcmF3U291cmNlQ29kZSA9IG5ldyBX
ZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZSgiaWQiLCBzY3JpcHQxLCBudWxsLCBtb2NrU2NyaXB0
Rm9ybWF0dGVyLCB0cnVlKTsKICAgICAgICAgICAgIHJhd1NvdXJjZUNvZGUuYWRkU2NyaXB0KHNj
cmlwdDIpOwogCiAgICAgICAgICAgICBmdW5jdGlvbiBkaWRDcmVhdGVTb3VyY2VNYXBwaW5nKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA4MmZkNmRjM2UwZTFmZGIwNDQ2ZDViYzVkNzgxMGQ3YzZmNDAzNWYwLi5i
OTg1ZTM0YjZlMGVlYWY0YWVhYzAwYzg5ZDExNzdkNjA2OTZkMzk4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMzMgQEAKKzIwMTEtMDktMDYgIFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogZG8gbm90IHJlLWNyZWF0ZSBSYXdT
b3VyY2VDb2RlIHdoZW4gdG9nZ2xpbmcgcHJldHR5LXByaW50IG1vZGUuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NzY0NworCisgICAgICAgIDEpIElt
cGxlbWVudCBSYXdTb3VyY2VDb2RlLnNldEZvcm1hdHRlZCB0aGF0IGFsbG93cyB0b2dnbGluZyBw
cmV0dHktcHJpbnQgbW9kZSBvbiB0aGUgZmx5IHdpdGhvdXQgcmVzZXR0aW5nIGV2ZXJ5dGhpbmcu
CisgICAgICAgIDIpIEFkZCBSYXdTb3VyY2VDb2RlIHVuaXQgdGVzdHMuCisgICAgICAgIDMpIFJl
bW92ZSBzb3VyY2UgbWFwcGluZyBsaXN0ZW5lcnMgYW5kIGNvbnNvbGUgbWVzc2FnZXMgZnJvbSBw
cmVzZW50YXRpb24gbW9kZWwgKHRoZXkgbGl2ZSBpbiBSYXdTb3VyY2VDb2RlIG5vdykuCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogaW5zcGVj
dG9yL2RlYnVnZ2VyL3Jhdy1zb3VyY2UtY29kZS5odG1sCisKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZnJvbnQtZW5kL0RlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuanM6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
RGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUubGlua2lmeUxvY2F0aW9uKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZS5f
YWRkU2NyaXB0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1v
ZGVsLnByb3RvdHlwZS5fc291cmNlTWFwcGluZ1VwZGF0ZWQpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBlLnNldEZvcm1hdFNvdXJjZSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5
cGUuX2NyZWF0ZVJhd1NvdXJjZUNvZGVJZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdn
ZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUuX2RlYnVnZ2VyUmVzZXQpOgorICAgICAgICAq
IGluc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUuX3RvZ2dsZUZvcm1hdFNvdXJjZSk6CisgICAgICAg
ICogaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VGaWxlLmpzOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlJhd1NvdXJjZUNvZGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUu
cHJvdG90eXBlLmdldCB1aVNvdXJjZUNvZGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJhd1Nv
dXJjZUNvZGUucHJvdG90eXBlLnNldEZvcm1hdHRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
UmF3U291cmNlQ29kZS5wcm90b3R5cGUucmF3TG9jYXRpb25Ub1VJTG9jYXRpb24pOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUucHJvdG90eXBlLl9zYXZlU291cmNlTWFwcGlu
Zyk6CisKIDIwMTEtMDgtMzAgIFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogaW1wbGVtZW50IHNvdXJjZSBtYXAgdjMgY29u
c3VtZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0Rl
YnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0RlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuanMKaW5kZXggMTc4ZGUzYzViMTY2NmVi
OGRlNTYzNTU4NTE0NjI5M2QyODQyZjA5YS4uMjBlYWQ1NjU1YWFmNDZlMjUyMGU2OTVhZWQ5MDVk
MTZiNjI0Y2E5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5qcwpAQCAtMzcsOCArMzcs
NiBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbCA9IGZ1bmN0aW9uKCkK
ICAgICB0aGlzLl9mb3JtYXR0ZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlNjcmlwdEZvcm1hdHRlcigp
OwogICAgIHRoaXMuX3Jhd1NvdXJjZUNvZGUgPSB7fTsKICAgICB0aGlzLl9tZXNzYWdlcyA9IFtd
OwotICAgIC8vIEZJWE1FOiBtb3ZlIHRoaXMgdG8gUmF3U291cmNlQ29kZSB3aGVuIGl0J3Mgbm90
IHJlLWNyZWF0ZWQgaW4gcHJldHR5LXByaW50IG1vZGUuCi0gICAgdGhpcy5fc291cmNlTWFwcGlu
Z0xpc3RlbmVycyA9IFtdOwogCiAgICAgdGhpcy5fcHJlc2VudGF0aW9uQ2FsbEZyYW1lcyA9IFtd
OwogICAgIHRoaXMuX3NlbGVjdGVkQ2FsbEZyYW1lSW5kZXggPSAwOwpAQCAtOTgsMTYgKzk2LDYg
QEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBlID0gewog
ICAgICAgICByYXdTb3VyY2VDb2RlLmNyZWF0ZVNvdXJjZU1hcHBpbmdJZk5lZWRlZChkaWRDcmVh
dGVTb3VyY2VNYXBwaW5nKTsKICAgICB9LAogCi0gICAgYWRkU291cmNlTWFwcGluZ0xpc3RlbmVy
OiBmdW5jdGlvbihzb3VyY2VVUkwsIHNjcmlwdElkLCBsaXN0ZW5lcikKLSAgICB7Ci0gICAgICAg
IHRoaXMuX3NvdXJjZU1hcHBpbmdMaXN0ZW5lcnMucHVzaChsaXN0ZW5lcik7Ci0gICAgfSwKLQot
ICAgIHJlbW92ZVNvdXJjZU1hcHBpbmdMaXN0ZW5lcjogZnVuY3Rpb24oc291cmNlVVJMLCBzY3Jp
cHRJZCwgbGlzdGVuZXIpCi0gICAgewotICAgICAgICAvLyBGSVhNRTogaW1wbGVtZW50IHRoaXMu
Ci0gICAgfSwKLQogICAgIGxpbmtpZnlMb2NhdGlvbjogZnVuY3Rpb24oc291cmNlVVJMLCBsaW5l
TnVtYmVyLCBjb2x1bW5OdW1iZXIsIGNsYXNzZXMpCiAgICAgewogICAgICAgICB2YXIgbGlua1Rl
eHQgPSBXZWJJbnNwZWN0b3IuZm9ybWF0TGlua1RleHQoc291cmNlVVJMLCBsaW5lTnVtYmVyKTsK
QEAgLTEzMiw3ICsxMjAsNyBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2Rl
bC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9zY3JpcHRMb2NhdGlvblRvVUlMb2Nh
dGlvbihzb3VyY2VVUkwsIG51bGwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgZGlkR2V0TG9j
YXRpb24uYmluZCh0aGlzKSk7CiAgICAgICAgIH0KICAgICAgICAgdXBkYXRlQW5jaG9yLmNhbGwo
dGhpcyk7Ci0gICAgICAgIHRoaXMuYWRkU291cmNlTWFwcGluZ0xpc3RlbmVyKHNvdXJjZVVSTCwg
bnVsbCwgdXBkYXRlQW5jaG9yLmJpbmQodGhpcykpOworICAgICAgICByYXdTb3VyY2VDb2RlLmFk
ZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUuRXZlbnRzLlNvdXJjZU1h
cHBpbmdVcGRhdGVkLCB1cGRhdGVBbmNob3IsIHRoaXMpOwogICAgICAgICByZXR1cm4gYW5jaG9y
OwogICAgIH0sCiAKQEAgLTE1NSwxNiArMTQzLDE2IEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclBy
ZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogCi0gICAgICAgIHJhd1NvdXJjZUNvZGUgPSBuZXcgV2ViSW5zcGVjdG9yLlJhd1NvdXJj
ZUNvZGUocmF3U291cmNlQ29kZUlkLCBzY3JpcHQsIHRoaXMuX2Zvcm1hdHRlciwgdGhpcy5fZm9y
bWF0U291cmNlKTsKKyAgICAgICAgdmFyIHJlc291cmNlOworICAgICAgICBpZiAoc2NyaXB0LnNv
dXJjZVVSTCkKKyAgICAgICAgICAgIHJlc291cmNlID0gV2ViSW5zcGVjdG9yLm5ldHdvcmtNYW5h
Z2VyLmluZmxpZ2h0UmVzb3VyY2VGb3JVUkwoc2NyaXB0LnNvdXJjZVVSTCkgfHwgV2ViSW5zcGVj
dG9yLnJlc291cmNlRm9yVVJMKHNjcmlwdC5zb3VyY2VVUkwpOworICAgICAgICByYXdTb3VyY2VD
b2RlID0gbmV3IFdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlKHJhd1NvdXJjZUNvZGVJZCwgc2Ny
aXB0LCByZXNvdXJjZSwgdGhpcy5fZm9ybWF0dGVyLCB0aGlzLl9mb3JtYXRTb3VyY2UpOwogICAg
ICAgICB0aGlzLl9yYXdTb3VyY2VDb2RlW3Jhd1NvdXJjZUNvZGVJZF0gPSByYXdTb3VyY2VDb2Rl
OwogICAgICAgICByYXdTb3VyY2VDb2RlLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlJh
d1NvdXJjZUNvZGUuRXZlbnRzLlNvdXJjZU1hcHBpbmdVcGRhdGVkLCB0aGlzLl9zb3VyY2VNYXBw
aW5nVXBkYXRlZCwgdGhpcyk7CiAgICAgfSwKIAogICAgIF9zb3VyY2VNYXBwaW5nVXBkYXRlZDog
ZnVuY3Rpb24oZXZlbnQpCiAgICAgewotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMu
X3NvdXJjZU1hcHBpbmdMaXN0ZW5lcnMubGVuZ3RoOyArK2kpCi0gICAgICAgICAgICB0aGlzLl9z
b3VyY2VNYXBwaW5nTGlzdGVuZXJzW2ldKCk7Ci0KICAgICAgICAgdmFyIHJhd1NvdXJjZUNvZGUg
PSBldmVudC50YXJnZXQ7CiAgICAgICAgIHZhciBvbGRVSVNvdXJjZUNvZGUgPSBldmVudC5kYXRh
Lm9sZFVJU291cmNlQ29kZTsKICAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9IHJhd1NvdXJjZUNv
ZGUudWlTb3VyY2VDb2RlOwpAQCAtMjYyLDIzICsyNTAsMTcgQEAgV2ViSW5zcGVjdG9yLkRlYnVn
Z2VyUHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9mb3JtYXRT
b3VyY2UgPSBmb3JtYXRTb3VyY2U7CiAKICAgICAgICAgdGhpcy5fYnJlYWtwb2ludE1hbmFnZXIu
cmVzZXQoKTsKLSAgICAgICAgZm9yICh2YXIgaWQgaW4gdGhpcy5fcmF3U291cmNlQ29kZSkKLSAg
ICAgICAgICAgIHRoaXMuX3Jhd1NvdXJjZUNvZGVbaWRdLnJlbW92ZUV2ZW50TGlzdGVuZXIoV2Vi
SW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUuRXZlbnRzLlNvdXJjZU1hcHBpbmdVcGRhdGVkLCB0aGlz
Ll9zb3VyY2VNYXBwaW5nVXBkYXRlZCwgdGhpcyk7Ci0gICAgICAgIHRoaXMuX3Jhd1NvdXJjZUNv
ZGUgPSB7fTsKLSAgICAgICAgdmFyIG1lc3NhZ2VzID0gdGhpcy5fbWVzc2FnZXM7Ci0gICAgICAg
IHRoaXMuX21lc3NhZ2VzID0gW107CiAKLSAgICAgICAgdmFyIHNjcmlwdHMgPSBXZWJJbnNwZWN0
b3IuZGVidWdnZXJNb2RlbC5zY3JpcHRzOwotICAgICAgICBmb3IgKHZhciBpZCBpbiBzY3JpcHRz
KQotICAgICAgICAgICAgdGhpcy5fYWRkU2NyaXB0KHNjcmlwdHNbaWRdKTsKKyAgICAgICAgZm9y
ICh2YXIgaWQgaW4gdGhpcy5fcmF3U291cmNlQ29kZSkgeworICAgICAgICAgICAgdGhpcy5fcmF3
U291cmNlQ29kZVtpZF0ubWVzc2FnZXMgPSBbXTsKKyAgICAgICAgICAgIHRoaXMuX3Jhd1NvdXJj
ZUNvZGVbaWRdLnNldEZvcm1hdHRlZCh0aGlzLl9mb3JtYXRTb3VyY2UpOworICAgICAgICB9CiAK
KyAgICAgICAgdmFyIG1lc3NhZ2VzID0gdGhpcy5fbWVzc2FnZXM7CisgICAgICAgIHRoaXMuX21l
c3NhZ2VzID0gW107CiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbWVzc2FnZXMubGVuZ3Ro
OyArK2kpCiAgICAgICAgICAgICB0aGlzLl9hZGRDb25zb2xlTWVzc2FnZShtZXNzYWdlc1tpXSk7
CiAKLSAgICAgICAgLy8gRklYTUU6IG1vdmUgdGhpcyB0byBSYXdTb3VyY2VDb2RlLgotICAgICAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX3NvdXJjZU1hcHBpbmdMaXN0ZW5lcnMubGVuZ3Ro
OyArK2kpCi0gICAgICAgICAgICB0aGlzLl9zb3VyY2VNYXBwaW5nTGlzdGVuZXJzW2ldKCk7Ci0K
ICAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLmNhbGxGcmFtZXMpCiAgICAg
ICAgICAgICB0aGlzLl9kZWJ1Z2dlclBhdXNlZCgpOwogICAgIH0sCkBAIC00NDYsMTUgKzQyOCwx
MyBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUgPSB7
CiAKICAgICBfY3JlYXRlUmF3U291cmNlQ29kZUlkOiBmdW5jdGlvbihzb3VyY2VVUkwsIHNjcmlw
dElkKQogICAgIHsKLSAgICAgICAgdmFyIHByZWZpeCA9IHRoaXMuX2Zvcm1hdFNvdXJjZSA/ICJk
ZW9iZnVzY2F0ZWQ6IiA6ICIiOwotICAgICAgICByZXR1cm4gcHJlZml4ICsgKHNvdXJjZVVSTCB8
fCBzY3JpcHRJZCk7CisgICAgICAgIHJldHVybiBzb3VyY2VVUkwgfHwgc2NyaXB0SWQ7CiAgICAg
fSwKIAogICAgIF9kZWJ1Z2dlclJlc2V0OiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICB0aGlz
Ll9yYXdTb3VyY2VDb2RlID0ge307CiAgICAgICAgIHRoaXMuX21lc3NhZ2VzID0gW107Ci0gICAg
ICAgIHRoaXMuX3NvdXJjZU1hcHBpbmdMaXN0ZW5lcnMgPSBbXTsKICAgICAgICAgdGhpcy5fcHJl
c2VudGF0aW9uQ2FsbEZyYW1lcyA9IFtdOwogICAgICAgICB0aGlzLl9zZWxlY3RlZENhbGxGcmFt
ZUluZGV4ID0gMDsKICAgICAgICAgdGhpcy5fYnJlYWtwb2ludE1hbmFnZXIuZGVidWdnZXJSZXNl
dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3Jp
cHRzUGFuZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQ
YW5lbC5qcwppbmRleCBiMzA3YWZmMjg0NGJhMTZkZDNhMjNkNzcyYTAxNWQyMDZjYzgxMmI1Li5j
ZDZkZDBiMWYwMmM1OTgyYjkzMDVkYTMxMjRhZDQ0YjNjM2UxNzJlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qcworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qcwpAQCAtMTEzMiw3
ICsxMTMyLDYgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUgPSB7CiAKICAg
ICBfdG9nZ2xlRm9ybWF0U291cmNlOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICBXZWJJbnNw
ZWN0b3IucGFuZWxzLnNjcmlwdHMucmVzZXQoKTsKICAgICAgICAgdGhpcy5fdG9nZ2xlRm9ybWF0
U291cmNlQnV0dG9uLnRvZ2dsZWQgPSAhdGhpcy5fdG9nZ2xlRm9ybWF0U291cmNlQnV0dG9uLnRv
Z2dsZWQ7CiAgICAgICAgIHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVsLnNldEZvcm1hdFNvdXJjZSh0
aGlzLl90b2dnbGVGb3JtYXRTb3VyY2VCdXR0b24udG9nZ2xlZCk7CiAgICAgfSwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU291cmNlRmlsZS5qcyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU291cmNlRmlsZS5qcwppbmRleCAxMzZm
YTAzNjhjZGM1ZTI3NWVhMDk4ZmRjNjU1OWMzMmMxZTdiN2UwLi5kZTU4MWQwYTY3OWZlZDgxMjVl
YzkxOTIxNTY4ZGM0MDY4YjQ5Njg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1NvdXJjZUZpbGUuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9Tb3VyY2VGaWxlLmpzCkBAIC0zNSwxOCArMzUsMTUgQEAKICAqIEBjb25zdHJ1
Y3RvcgogICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5PYmplY3R9CiAgKi8KLVdlYkluc3BlY3Rv
ci5SYXdTb3VyY2VDb2RlID0gZnVuY3Rpb24oaWQsIHNjcmlwdCwgZm9ybWF0dGVyLCBmb3JtYXR0
ZWQpCitXZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZSA9IGZ1bmN0aW9uKGlkLCBzY3JpcHQsIHJl
c291cmNlLCBmb3JtYXR0ZXIsIGZvcm1hdHRlZCkKIHsKLSAgICB0aGlzLl9zY3JpcHRzID0gW3Nj
cmlwdF07Ci0gICAgdGhpcy5fZm9ybWF0dGVyID0gZm9ybWF0dGVyOwotICAgIHRoaXMuX2Zvcm1h
dHRlZCA9IGZvcm1hdHRlZDsKLQotICAgIGlmIChzY3JpcHQuc291cmNlVVJMKQotICAgICAgICB0
aGlzLl9yZXNvdXJjZSA9IFdlYkluc3BlY3Rvci5uZXR3b3JrTWFuYWdlci5pbmZsaWdodFJlc291
cmNlRm9yVVJMKHNjcmlwdC5zb3VyY2VVUkwpIHx8IFdlYkluc3BlY3Rvci5yZXNvdXJjZUZvclVS
TChzY3JpcHQuc291cmNlVVJMKTsKLQogICAgIHRoaXMuaWQgPSBpZDsKICAgICB0aGlzLnVybCA9
IHNjcmlwdC5zb3VyY2VVUkw7CiAgICAgdGhpcy5pc0NvbnRlbnRTY3JpcHQgPSBzY3JpcHQuaXND
b250ZW50U2NyaXB0OworICAgIHRoaXMuX3NjcmlwdHMgPSBbc2NyaXB0XTsKKyAgICB0aGlzLl9m
b3JtYXR0ZXIgPSBmb3JtYXR0ZXI7CisgICAgdGhpcy5fZm9ybWF0dGVkID0gZm9ybWF0dGVkOwor
ICAgIHRoaXMuX3Jlc291cmNlID0gcmVzb3VyY2U7CiAgICAgdGhpcy5tZXNzYWdlcyA9IFtdOwog
CiAgICAgdGhpcy5fdXNlVGVtcG9yYXJ5Q29udGVudCA9IHRoaXMuX3Jlc291cmNlICYmICF0aGlz
Ll9yZXNvdXJjZS5maW5pc2hlZDsKQEAgLTcwLDE0ICs2NywxNSBAQCBXZWJJbnNwZWN0b3IuUmF3
U291cmNlQ29kZS5wcm90b3R5cGUgPSB7CiAKICAgICBnZXQgdWlTb3VyY2VDb2RlKCkKICAgICB7
Ci0gICAgICAgIC8vIEZJWE1FOiBleHRyYWN0IFVJU291cmNlQ29kZSBmcm9tIFJhd1NvdXJjZUNv
ZGUgKGN1cnJlbnRseSBSYXdTb3VyY2VDb2RlIGltcGxlbWVudHMgbWV0aG9kcyBmcm9tIGJvdGgg
aW50ZXJmYWNlcykuCi0gICAgICAgIHJldHVybiB0aGlzOworICAgICAgICByZXR1cm4gdGhpcy5f
dWlTb3VyY2VDb2RlOwogICAgIH0sCiAKLSAgICBnZXQgcmF3U291cmNlQ29kZSgpCisgICAgc2V0
Rm9ybWF0dGVkOiBmdW5jdGlvbihmb3JtYXR0ZWQpCiAgICAgewotICAgICAgICAvLyBGSVhNRTog
ZXh0cmFjdCBVSVNvdXJjZUNvZGUgZnJvbSBSYXdTb3VyY2VDb2RlIChjdXJyZW50bHkgUmF3U291
cmNlQ29kZSBpbXBsZW1lbnRzIG1ldGhvZHMgZnJvbSBib3RoIGludGVyZmFjZXMpLgotICAgICAg
ICByZXR1cm4gdGhpczsKKyAgICAgICAgaWYgKHRoaXMuX2Zvcm1hdHRlZCA9PT0gZm9ybWF0dGVk
KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB0aGlzLl9mb3JtYXR0ZWQgPSBmb3JtYXR0
ZWQ7CisgICAgICAgIHRoaXMuX3VwZGF0ZVNvdXJjZU1hcHBpbmcoKTsKICAgICB9LAogCiAgICAg
Y29udGVudEVkaXRlZDogZnVuY3Rpb24oKQpAQCAtOTQsNyArOTIsNyBAQCBXZWJJbnNwZWN0b3Iu
UmF3U291cmNlQ29kZS5wcm90b3R5cGUgPSB7CiAgICAgcmF3TG9jYXRpb25Ub1VJTG9jYXRpb246
IGZ1bmN0aW9uKHJhd0xvY2F0aW9uKQogICAgIHsKICAgICAgICAgdmFyIGxvY2F0aW9uID0gdGhp
cy5fbWFwcGluZyA/IHRoaXMuX21hcHBpbmcub3JpZ2luYWxUb0Zvcm1hdHRlZChyYXdMb2NhdGlv
bikgOiByYXdMb2NhdGlvbjsKLSAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuVUlMb2Nh
dGlvbih0aGlzLCBsb2NhdGlvbi5saW5lTnVtYmVyLCBsb2NhdGlvbi5jb2x1bW5OdW1iZXIpOwor
ICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5VSUxvY2F0aW9uKHRoaXMudWlTb3VyY2VD
b2RlLCBsb2NhdGlvbi5saW5lTnVtYmVyLCBsb2NhdGlvbi5jb2x1bW5OdW1iZXIpOwogICAgIH0s
CiAKICAgICB1aUxvY2F0aW9uVG9SYXdMb2NhdGlvbjogZnVuY3Rpb24obGluZU51bWJlciwgY29s
dW1uTnVtYmVyKQpAQCAtMTIwLDEyICsxMTgsNiBAQCBXZWJJbnNwZWN0b3IuUmF3U291cmNlQ29k
ZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiBjbG9zZXN0U2NyaXB0OwogICAgIH0sCiAK
LSAgICByZXF1ZXN0Q29udGVudDogZnVuY3Rpb24oY2FsbGJhY2spCi0gICAgewotICAgICAgICAv
LyBGSVhNRTogcmVtb3ZlIHRoaXMuCi0gICAgICAgIHRoaXMuX3VpU291cmNlQ29kZS5yZXF1ZXN0
Q29udGVudChjYWxsYmFjayk7Ci0gICAgfSwKLQogICAgIGNyZWF0ZVNvdXJjZU1hcHBpbmdJZk5l
ZWRlZDogZnVuY3Rpb24oY2FsbGJhY2spCiAgICAgewogICAgICAgICAvLyBGSVhNRTogcmVtb3Zl
IGNyZWF0ZVNvdXJjZU1hcHBpbmdJZk5lZWRlZCwgY2xpZW50IHNob3VsZCBsaXN0ZW4gdG8gU291
cmNlTWFwcGluZ1VwZGF0ZWQgZXZlbnQgaW5zdGVhZC4KQEAgLTIwMiw5ICsxOTQsNyBAQCBXZWJJ
bnNwZWN0b3IuUmF3U291cmNlQ29kZS5wcm90b3R5cGUgPSB7CiAKICAgICBfc2F2ZVNvdXJjZU1h
cHBpbmc6IGZ1bmN0aW9uKGNvbnRlbnRQcm92aWRlciwgbWFwcGluZykKICAgICB7Ci0gICAgICAg
IHZhciBvbGRVSVNvdXJjZUNvZGU7Ci0gICAgICAgIGlmICh0aGlzLl91aVNvdXJjZUNvZGUpCi0g
ICAgICAgICAgICBvbGRVSVNvdXJjZUNvZGUgPSB0aGlzOworICAgICAgICB2YXIgb2xkVUlTb3Vy
Y2VDb2RlID0gdGhpcy5fdWlTb3VyY2VDb2RlOwogICAgICAgICB2YXIgdWlTb3VyY2VDb2RlSWQg
PSAodGhpcy5fZm9ybWF0dGVkID8gImRlb2JmdXNjYXRlZDoiIDogIiIpICsgKHRoaXMuX3Njcmlw
dHNbMF0uc291cmNlVVJMIHx8IHRoaXMuX3NjcmlwdHNbMF0uc2NyaXB0SWQpOwogICAgICAgICB0
aGlzLl91aVNvdXJjZUNvZGUgPSBuZXcgV2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZSh1aVNvdXJj
ZUNvZGVJZCwgdGhpcy51cmwsIHRoaXMuaXNDb250ZW50U2NyaXB0LCB0aGlzLCBjb250ZW50UHJv
dmlkZXIpOwogICAgICAgICB0aGlzLl9tYXBwaW5nID0gbWFwcGluZzsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106576</attachid>
            <date>2011-09-07 05:48:40 -0700</date>
            <delta_ts>2011-09-07 08:22:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-67647-20110907164838.patch</filename>
            <type>text/plain</type>
            <size>32228</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTQ1NzcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0NDBjZjM3ZmY3ZjJhMDg4OWI1MzU0
MWI3ZWYyZGYxZmM0NmIzMWVlLi44YTk1MjMxM2NjYzJkODgyNDczMDRiYWE1ZDA2ODE1MjcwNzc0
ODE3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTEtMDktMDYgIFBhdmVsIFBvZGl2aWxvdiAg
PHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogZG8gbm90
IHJlLWNyZWF0ZSBSYXdTb3VyY2VDb2RlIHdoZW4gdG9nZ2xpbmcgcHJldHR5LXByaW50IG1vZGUu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NzY0Nwor
CisgICAgICAgIDEpIEltcGxlbWVudCBSYXdTb3VyY2VDb2RlLnNldEZvcm1hdHRlZCB0aGF0IGFs
bG93cyB0b2dnbGluZyBwcmV0dHktcHJpbnQgbW9kZSBvbiB0aGUgZmx5IHdpdGhvdXQgcmVzZXR0
aW5nIGV2ZXJ5dGhpbmcuCisgICAgICAgIDIpIEFkZCBSYXdTb3VyY2VDb2RlIHVuaXQgdGVzdHMu
CisgICAgICAgIDMpIFJlbW92ZSBzb3VyY2UgbWFwcGluZyBsaXN0ZW5lcnMgYW5kIGNvbnNvbGUg
bWVzc2FnZXMgZnJvbSBwcmVzZW50YXRpb24gbW9kZWwgKHRoZXkgbGl2ZSBpbiBSYXdTb3VyY2VD
b2RlIG5vdykuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvcmF3LXNvdXJjZS1jb2RlLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL3Jhdy1zb3VyY2UtY29kZS5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0LWZvcm1hdHRlci5odG1s
OgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9zb3VyY2UtZmlsZS5odG1sOgorCiAyMDEx
LTA4LTMwICBQYXZlbCBQb2Rpdmlsb3YgIDxwb2Rpdmlsb3ZAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IGltcGxlbWVudCBzb3VyY2UgbWFwIHYzIGNvbnN1bWVyLgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3Jhdy1zb3VyY2UtY29kZS1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvcmF3LXNvdXJjZS1j
b2RlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZWMzOTIxYmE1OTY5MmUzYWExMjYwZjc1NmMy
MTUwNzAyODYwMjdlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Rl
YnVnZ2VyL3Jhdy1zb3VyY2UtY29kZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNyBAQAorVGVz
dHMgUmF3U291cmNlQ29kZSBjbGFzcy4KKworCitSdW5uaW5nOiB0ZXN0U2NyaXB0V2l0aG91dFJl
c291cmNlCisKK1J1bm5pbmc6IHRlc3RIVE1MV2l0aFBlbmRpbmdSZXNvdXJjZQorCitSdW5uaW5n
OiB0ZXN0SFRNTFdpdGhGaW5pc2hlZFJlc291cmNlCisKK1J1bm5pbmc6IHRlc3RDb250ZW50RWRp
dGVkCisKK1J1bm5pbmc6IHRlc3RGb3JjZVVwZGF0ZVNvdXJjZU1hcHBpbmcKKworUnVubmluZzog
dGVzdEZvcm1hdHRpbmdXaXRoRmluaXNoZWRSZXNvdXJjZQorCitSdW5uaW5nOiB0ZXN0Rm9ybWF0
dGluZ1dpdGhQZW5kaW5nUmVzb3VyY2UKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2RlYnVnZ2VyL3Jhdy1zb3VyY2UtY29kZS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2RlYnVnZ2VyL3Jhdy1zb3VyY2UtY29kZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc2YjlhMjc1MTQwNzI2
ZjFjYzgwYWYxOWYxZmFhMDhiYzAwYTM0YjgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZGVidWdnZXIvcmF3LXNvdXJjZS1jb2RlLmh0bWwKQEAgLTAsMCArMSw0MDUg
QEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0
b3IvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0PgorCitmdW5jdGlvbiB0
ZXN0KCkKK3sKKyAgICBmdW5jdGlvbiBjcmVhdGVTY3JpcHRNb2NrKHVybCwgc3RhcnRMaW5lLCBz
dGFydENvbHVtbiwgaXNDb250ZW50U2NyaXB0LCBzb3VyY2UpCisgICAgeworICAgICAgICB2YXIg
bGluZUNvdW50ID0gc291cmNlLmxpbmVFbmRpbmdzKCkubGVuZ3RoOworICAgICAgICB2YXIgZW5k
TGluZSA9IHN0YXJ0TGluZSArIGxpbmVDb3VudCAtIDE7CisgICAgICAgIHZhciBlbmRDb2x1bW4g
PSBsaW5lQ291bnQgPT09IDEgPyBzdGFydENvbHVtbiArIHNvdXJjZS5sZW5ndGggOiBzb3VyY2Uu
bGVuZ3RoIC0gc291cmNlLmxpbmVFbmRpbmdzKClbbGluZUNvdW50IC0gMl07CisgICAgICAgIHZh
ciBzY3JpcHQgPSBuZXcgV2ViSW5zcGVjdG9yLlNjcmlwdChudWxsLCB1cmwsIHN0YXJ0TGluZSwg
c3RhcnRDb2x1bW4sIGVuZExpbmUsIGVuZENvbHVtbiwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIGlz
Q29udGVudFNjcmlwdCk7CisgICAgICAgIHNjcmlwdC5yZXF1ZXN0U291cmNlID0gZnVuY3Rpb24o
Y2FsbGJhY2spIHsgc2V0VGltZW91dChjYWxsYmFjay5iaW5kKG51bGwsIHNvdXJjZSksIDApOyB9
OworICAgICAgICByZXR1cm4gc2NyaXB0OworICAgIH0KKworICAgIGZ1bmN0aW9uIGNyZWF0ZVJl
c291cmNlTW9jayh0eXBlLCBmaW5pc2hlZCwgY29udGVudCkKKyAgICB7CisgICAgICAgIHZhciBy
ZXNvdXJjZSA9IHt9OworICAgICAgICByZXNvdXJjZS50eXBlID0gdHlwZSA9PT0gImRvY3VtZW50
IiA/IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLkRvY3VtZW50IDogV2ViSW5zcGVjdG9yLlJl
c291cmNlLlR5cGUuU2NyaXB0OworICAgICAgICByZXNvdXJjZS5maW5pc2hlZCA9IGZpbmlzaGVk
OworICAgICAgICByZXNvdXJjZS5jb250ZW50ID0gY29udGVudDsKKyAgICAgICAgcmVzb3VyY2Uu
cmVxdWVzdENvbnRlbnQgPSBmdW5jdGlvbihjYWxsYmFjaykgeyBzZXRUaW1lb3V0KGNhbGxiYWNr
LmJpbmQobnVsbCwgcmVzb3VyY2UuY29udGVudCksIDApOyB9OworICAgICAgICByZXNvdXJjZS5m
aW5pc2ggPSBmdW5jdGlvbigpIHsgcmVzb3VyY2UuZmluaXNoZWQgPSB0cnVlOyByZXNvdXJjZS5k
aXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoImZpbmlzaGVkIik7IH07CisgICAgICAgIHJlc291cmNl
Ll9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlOworICAgICAgICByZXR1
cm4gcmVzb3VyY2U7CisgICAgfQorICAgIGZ1bmN0aW9uIGNyZWF0ZVBlbmRpbmdSZXNvdXJjZU1v
Y2sodHlwZSwgY29udGVudCkgeyByZXR1cm4gY3JlYXRlUmVzb3VyY2VNb2NrKHR5cGUsIGZhbHNl
LCBjb250ZW50KTsgfQorICAgIGZ1bmN0aW9uIGNyZWF0ZUZpbmlzaGVkUmVzb3VyY2VNb2NrKHR5
cGUsIGNvbnRlbnQpIHsgcmV0dXJuIGNyZWF0ZVJlc291cmNlTW9jayh0eXBlLCB0cnVlLCBjb250
ZW50KTsgfQorCisgICAgZnVuY3Rpb24gY3JlYXRlU2NyaXB0Rm9ybWF0dGVyTW9jaygpCisgICAg
eworICAgICAgICB2YXIgc291cmNlTWFwcGluZyA9IHsKKyAgICAgICAgICAgIG9yaWdpbmFsVG9G
b3JtYXR0ZWQ6IGZ1bmN0aW9uKGxvY2F0aW9uKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIHZhciBmb3JtYXR0ZWRMb2NhdGlvbiA9IHt9OworICAgICAgICAgICAgICAgIGZvcm1hdHRl
ZExvY2F0aW9uLmxpbmVOdW1iZXIgPSBsb2NhdGlvbi5saW5lTnVtYmVyICogMjsKKyAgICAgICAg
ICAgICAgICBmb3JtYXR0ZWRMb2NhdGlvbi5jb2x1bW5OdW1iZXIgPSBsb2NhdGlvbi5jb2x1bW5O
dW1iZXIgKiAyOworICAgICAgICAgICAgICAgIHJldHVybiBmb3JtYXR0ZWRMb2NhdGlvbjsKKyAg
ICAgICAgICAgIH0sCisKKyAgICAgICAgICAgIGZvcm1hdHRlZFRvT3JpZ2luYWw6IGZ1bmN0aW9u
KGxvY2F0aW9uKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHZhciBvcmlnaW5hbExv
Y2F0aW9uID0ge307CisgICAgICAgICAgICAgICAgb3JpZ2luYWxMb2NhdGlvbi5saW5lTnVtYmVy
ID0gTWF0aC5mbG9vcihsb2NhdGlvbi5saW5lTnVtYmVyIC8gMik7CisgICAgICAgICAgICAgICAg
b3JpZ2luYWxMb2NhdGlvbi5jb2x1bW5OdW1iZXIgPSBNYXRoLmZsb29yKGxvY2F0aW9uLmNvbHVt
bk51bWJlciAvIDIpOworICAgICAgICAgICAgICAgIHJldHVybiBvcmlnaW5hbExvY2F0aW9uOwor
ICAgICAgICAgICAgfQorICAgICAgICB9OworICAgICAgICByZXR1cm4geworICAgICAgICAgICAg
Zm9ybWF0Q29udGVudDogZnVuY3Rpb24obWltZVR5cGUsIGNvbnRlbnQsIGNhbGxiYWNrKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoY2FsbGJhY2suYmluZChudWxs
LCAiPGZvcm1hdHRlZD4gIiArIGNvbnRlbnQsIHNvdXJjZU1hcHBpbmcpLCAwKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgICAgfTsKKworICAgIGZ1bmN0aW9uIGNyZWF0ZVJhd1NvdXJj
ZUNvZGUoc2NyaXB0LCByZXNvdXJjZSwgZm9ybWF0dGVkKQorICAgIHsKKyAgICAgICAgdmFyIHJh
d1NvdXJjZUNvZGUgPSBuZXcgV2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUoImlkIiwgc2NyaXB0
LCByZXNvdXJjZSwgY3JlYXRlU2NyaXB0Rm9ybWF0dGVyTW9jaygpLCAhIWZvcm1hdHRlZCk7Cisg
ICAgICAgIHJhd1NvdXJjZUNvZGUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuUmF3U291
cmNlQ29kZS5FdmVudHMuU291cmNlTWFwcGluZ1VwZGF0ZWQsIGRlZmF1bHRTb3VyY2VNYXBwaW5n
VXBkYXRlZEhhbmRsZXIpOworICAgICAgICByZXR1cm4gcmF3U291cmNlQ29kZTsKKyAgICB9CisK
KyAgICBmdW5jdGlvbiB3YWl0Rm9yU291cmNlTWFwcGluZyhyYXdTb3VyY2VDb2RlLCBjYWxsYmFj
aykKKyAgICB7CisgICAgICAgIHJhd1NvdXJjZUNvZGUucmVtb3ZlRXZlbnRMaXN0ZW5lcihXZWJJ
bnNwZWN0b3IuUmF3U291cmNlQ29kZS5FdmVudHMuU291cmNlTWFwcGluZ1VwZGF0ZWQsIGRlZmF1
bHRTb3VyY2VNYXBwaW5nVXBkYXRlZEhhbmRsZXIpOworICAgICAgICByYXdTb3VyY2VDb2RlLmFk
ZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUuRXZlbnRzLlNvdXJjZU1h
cHBpbmdVcGRhdGVkLCBzb3VyY2VNYXBwaW5nVXBkYXRlZCk7CisgICAgICAgIGZ1bmN0aW9uIHNv
dXJjZU1hcHBpbmdVcGRhdGVkKGV2ZW50KQorICAgICAgICB7CisgICAgICAgICAgICByYXdTb3Vy
Y2VDb2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUuRXZl
bnRzLlNvdXJjZU1hcHBpbmdVcGRhdGVkLCBzb3VyY2VNYXBwaW5nVXBkYXRlZCk7CisgICAgICAg
ICAgICByYXdTb3VyY2VDb2RlLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlJhd1NvdXJj
ZUNvZGUuRXZlbnRzLlNvdXJjZU1hcHBpbmdVcGRhdGVkLCBkZWZhdWx0U291cmNlTWFwcGluZ1Vw
ZGF0ZWRIYW5kbGVyKTsKKyAgICAgICAgICAgIGNhbGxiYWNrKGV2ZW50KTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIGZ1bmN0aW9uIGRlZmF1bHRTb3VyY2VNYXBwaW5nVXBkYXRlZEhhbmRsZXIo
KQorICAgIHsKKyAgICAgICAgdGhyb3cgIlVuZXhwZWN0ZWQgU291cmNlTWFwcGluZ1VwZGF0ZWQg
ZXZlbnQuIjsKKyAgICB9CisKKyAgICB2YXIgb3JpZ2luYWxTZXRUaW1lb3V0ID0gd2luZG93LnNl
dFRpbWVvdXQ7CisgICAgdmFyIHRpbWVycyA9IHt9OworICAgIHdpbmRvdy5zZXRUaW1lb3V0ID0g
ZnVuY3Rpb24oY2FsbGJhY2ssIHRpbWVvdXQpCisgICAgeworICAgICAgICB2YXIgdGltZXJJZCA9
IG9yaWdpbmFsU2V0VGltZW91dC5jYWxsKHdpbmRvdywgaW52b2tlQ2FsbGJhY2ssIHRpbWVvdXQp
CisgICAgICAgIGZ1bmN0aW9uIGludm9rZUNhbGxiYWNrKCkKKyAgICAgICAgeworICAgICAgICAg
ICAgZGVsZXRlIHRpbWVyc1t0aW1lcklkXTsKKyAgICAgICAgICAgIGNhbGxiYWNrKCk7CisgICAg
ICAgIH0KKyAgICAgICAgdGltZXJzW3RpbWVySWRdID0gY2FsbGJhY2s7CisgICAgfTsKKyAgICBm
dW5jdGlvbiBmaXJlVGltZXJzKCkKKyAgICB7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
MzsgKytpKSB7CisgICAgICAgICAgICBmb3IgKHZhciBpZCBpbiB0aW1lcnMpIHsKKyAgICAgICAg
ICAgICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KGlkKTsKKyAgICAgICAgICAgICAgICB0aW1lcnNb
aWRdKCk7CisgICAgICAgICAgICAgICAgZGVsZXRlIHRpbWVyc1tpZF07CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBJbnNwZWN0b3JUZXN0LnJ1blRlc3RTdWl0ZShbCisg
ICAgICAgIGZ1bmN0aW9uIHRlc3RTY3JpcHRXaXRob3V0UmVzb3VyY2UobmV4dCkKKyAgICAgICAg
eworICAgICAgICAgICAgdmFyIHNjcmlwdCA9IGNyZWF0ZVNjcmlwdE1vY2soImZvby5qcyIsIDAs
IDAsIHRydWUsICI8c2NyaXB0IHNvdXJjZT4iKTsKKyAgICAgICAgICAgIHZhciByYXdTb3VyY2VD
b2RlID0gY3JlYXRlUmF3U291cmNlQ29kZShzY3JpcHQsIG51bGwpOworICAgICAgICAgICAgd2Fp
dEZvclNvdXJjZU1hcHBpbmcocmF3U291cmNlQ29kZSwgbWFwcGluZ1JlYWR5KTsKKworICAgICAg
ICAgICAgZnVuY3Rpb24gbWFwcGluZ1JlYWR5KGV2ZW50KQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0VHJ1ZSghZXZlbnQuZGF0YS5vbGRTb3VyY2VD
b2RlKTsKKyAgICAgICAgICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gcmF3U291cmNlQ29kZS51
aVNvdXJjZUNvZGU7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMo
ImZvby5qcyIsIHVpU291cmNlQ29kZS51cmwpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuYXNzZXJ0RXF1YWxzKHRydWUsIHVpU291cmNlQ29kZS5pc0NvbnRlbnRTY3JpcHQpOworICAg
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKHJhd1NvdXJjZUNvZGUsIHVp
U291cmNlQ29kZS5yYXdTb3VyY2VDb2RlKTsKKyAgICAgICAgICAgICAgICB1aVNvdXJjZUNvZGUu
cmVxdWVzdENvbnRlbnQoZGlkUmVxdWVzdENvbnRlbnQpOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBmdW5jdGlvbiBkaWRSZXF1ZXN0Q29udGVudChtaW1lVHlwZSwgY29udGVudCkKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscygi
dGV4dC9qYXZhc2NyaXB0IiwgbWltZVR5cGUpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuYXNzZXJ0RXF1YWxzKCI8c2NyaXB0IHNvdXJjZT4iLCBjb250ZW50KTsKKyAgICAgICAgICAg
ICAgICBuZXh0KCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0sCisKKyAgICAgICAgZnVuY3Rp
b24gdGVzdEhUTUxXaXRoUGVuZGluZ1Jlc291cmNlKG5leHQpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHZhciBzY3JpcHQxID0gY3JlYXRlU2NyaXB0TW9jaygiaW5kZXguaHRtbCIsIDAsIDEwLCBm
YWxzZSwgIjxzY3JpcHQgc291cmNlIDE+Iik7CisgICAgICAgICAgICB2YXIgc2NyaXB0MiA9IGNy
ZWF0ZVNjcmlwdE1vY2soImluZGV4Lmh0bWwiLCAwLCA0NSwgZmFsc2UsICI8c2NyaXB0IHNvdXJj
ZSAyPiIpOworICAgICAgICAgICAgdmFyIHJlc291cmNlID0gY3JlYXRlUGVuZGluZ1Jlc291cmNl
TW9jaygiZG9jdW1lbnQiLCAiPHJlc291cmNlIGNvbnRlbnQ+Iik7CisgICAgICAgICAgICB2YXIg
cmF3U291cmNlQ29kZSA9IGNyZWF0ZVJhd1NvdXJjZUNvZGUoc2NyaXB0MSwgcmVzb3VyY2UpOwor
CisgICAgICAgICAgICBmaXJlVGltZXJzKCk7CisgICAgICAgICAgICB3YWl0Rm9yU291cmNlTWFw
cGluZyhyYXdTb3VyY2VDb2RlLCBtYXBwaW5nUmVhZHkpOworICAgICAgICAgICAgcmVzb3VyY2Uu
ZmluaXNoKCk7CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIG1hcHBpbmdSZWFkeShldmVudCkKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydFRydWUoIWV2
ZW50LmRhdGEub2xkU291cmNlQ29kZSk7CisgICAgICAgICAgICAgICAgdmFyIHVpU291cmNlQ29k
ZSA9IHJhd1NvdXJjZUNvZGUudWlTb3VyY2VDb2RlOworICAgICAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuYXNzZXJ0RXF1YWxzKCJpbmRleC5odG1sIiwgdWlTb3VyY2VDb2RlLnVybCk7CisgICAg
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoZmFsc2UsIHVpU291cmNlQ29k
ZS5pc0NvbnRlbnRTY3JpcHQpOworICAgICAgICAgICAgICAgIHVpU291cmNlQ29kZS5yZXF1ZXN0
Q29udGVudChkaWRSZXF1ZXN0Q29udGVudCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IGZ1bmN0aW9uIGRpZFJlcXVlc3RDb250ZW50KG1pbWVUeXBlLCBjb250ZW50KQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKG1pbWVUeXBl
LCAidGV4dC9odG1sIik7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVh
bHMoIjxyZXNvdXJjZSBjb250ZW50PiIsIGNvbnRlbnQpOworCisgICAgICAgICAgICAgICAgcmF3
U291cmNlQ29kZS5hZGRTY3JpcHQoc2NyaXB0Mik7CisgICAgICAgICAgICAgICAgZmlyZVRpbWVy
cygpOworICAgICAgICAgICAgICAgIHJhd1NvdXJjZUNvZGUuZm9yY2VVcGRhdGVTb3VyY2VNYXBw
aW5nKCk7CisgICAgICAgICAgICAgICAgZmlyZVRpbWVycygpOworICAgICAgICAgICAgICAgIG5l
eHQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKworICAgICAgICBmdW5jdGlvbiB0ZXN0
SFRNTFdpdGhGaW5pc2hlZFJlc291cmNlKG5leHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZh
ciBzY3JpcHQxID0gY3JlYXRlU2NyaXB0TW9jaygiaW5kZXguaHRtbCIsIDAsIDEwLCBmYWxzZSwg
IjxzY3JpcHQgc291cmNlIDE+Iik7CisgICAgICAgICAgICB2YXIgc2NyaXB0MiA9IGNyZWF0ZVNj
cmlwdE1vY2soImluZGV4Lmh0bWwiLCAwLCA0NSwgZmFsc2UsICI8c2NyaXB0IHNvdXJjZSAyPiIp
OworICAgICAgICAgICAgdmFyIHJlc291cmNlID0gY3JlYXRlRmluaXNoZWRSZXNvdXJjZU1vY2so
ImRvY3VtZW50IiwgIjxyZXNvdXJjZSBjb250ZW50PiIpOworICAgICAgICAgICAgdmFyIHJhd1Nv
dXJjZUNvZGUgPSBjcmVhdGVSYXdTb3VyY2VDb2RlKHNjcmlwdDEsIHJlc291cmNlKTsKKyAgICAg
ICAgICAgIHdhaXRGb3JTb3VyY2VNYXBwaW5nKHJhd1NvdXJjZUNvZGUsIG1hcHBpbmdSZWFkeSk7
CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIG1hcHBpbmdSZWFkeSgpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9IHJhd1NvdXJjZUNvZGUudWlTb3VyY2VD
b2RlOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKCJpbmRleC5o
dG1sIiwgdWlTb3VyY2VDb2RlLnVybCk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5h
c3NlcnRFcXVhbHMoZmFsc2UsIHVpU291cmNlQ29kZS5pc0NvbnRlbnRTY3JpcHQpOworICAgICAg
ICAgICAgICAgIHVpU291cmNlQ29kZS5yZXF1ZXN0Q29udGVudChkaWRSZXF1ZXN0Q29udGVudCk7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGRpZFJlcXVlc3RDb250ZW50
KG1pbWVUeXBlLCBjb250ZW50KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuYXNzZXJ0RXF1YWxzKG1pbWVUeXBlLCAidGV4dC9odG1sIik7CisgICAgICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoIjxyZXNvdXJjZSBjb250ZW50PiIsIGNv
bnRlbnQpOworCisgICAgICAgICAgICAgICAgcmF3U291cmNlQ29kZS5hZGRTY3JpcHQoc2NyaXB0
Mik7CisgICAgICAgICAgICAgICAgZmlyZVRpbWVycygpOworICAgICAgICAgICAgICAgIHJhd1Nv
dXJjZUNvZGUuZm9yY2VVcGRhdGVTb3VyY2VNYXBwaW5nKCk7CisgICAgICAgICAgICAgICAgZmly
ZVRpbWVycygpOworICAgICAgICAgICAgICAgIG5leHQoKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfSwKKworICAgICAgICBmdW5jdGlvbiB0ZXN0Q29udGVudEVkaXRlZChuZXh0KQorICAgICAg
ICB7CisgICAgICAgICAgICB2YXIgc2NyaXB0ID0gY3JlYXRlU2NyaXB0TW9jaygiZm9vLmpzIiwg
MCwgMCwgdHJ1ZSwgIjxzY3JpcHQgc291cmNlPiIpOworICAgICAgICAgICAgdmFyIHJlc291cmNl
ID0gY3JlYXRlRmluaXNoZWRSZXNvdXJjZU1vY2soInNjcmlwdCIsICI8cmVzb3VyY2UgY29udGVu
dD4iKTsKKyAgICAgICAgICAgIHZhciByYXdTb3VyY2VDb2RlID0gY3JlYXRlUmF3U291cmNlQ29k
ZShzY3JpcHQsIHJlc291cmNlKTsKKyAgICAgICAgICAgIHdhaXRGb3JTb3VyY2VNYXBwaW5nKHJh
d1NvdXJjZUNvZGUsIG1hcHBpbmdSZWFkeSk7CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIG1hcHBp
bmdSZWFkeSgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmF3U291cmNlQ29kZS51
aVNvdXJjZUNvZGUucmVxdWVzdENvbnRlbnQoZGlkUmVxdWVzdENvbnRlbnQpOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBkaWRSZXF1ZXN0Q29udGVudChtaW1lVHlwZSwg
Y29udGVudCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFz
c2VydEVxdWFscygidGV4dC9qYXZhc2NyaXB0IiwgbWltZVR5cGUpOworICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKCI8cmVzb3VyY2UgY29udGVudD4iLCBjb250ZW50
KTsKKworICAgICAgICAgICAgICAgIHdhaXRGb3JTb3VyY2VNYXBwaW5nKHJhd1NvdXJjZUNvZGUs
IG1hcHBpbmdSZWFkeUFmdGVyRWRpdCk7CisgICAgICAgICAgICAgICAgcmVzb3VyY2UuY29udGVu
dCA9ICI8ZWRpdGVkIHJlc291cmNlIGNvbnRlbnQ+IjsKKyAgICAgICAgICAgICAgICByYXdTb3Vy
Y2VDb2RlLmNvbnRlbnRFZGl0ZWQoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVu
Y3Rpb24gbWFwcGluZ1JlYWR5QWZ0ZXJFZGl0KCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICByYXdTb3VyY2VDb2RlLnVpU291cmNlQ29kZS5yZXF1ZXN0Q29udGVudChkaWRSZXF1ZXN0
Q29udGVudEFmdGVyRWRpdCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9u
IGRpZFJlcXVlc3RDb250ZW50QWZ0ZXJFZGl0KG1pbWVUeXBlLCBjb250ZW50KQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKG1pbWVUeXBl
LCAidGV4dC9qYXZhc2NyaXB0Iik7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3Nl
cnRFcXVhbHMoIjxlZGl0ZWQgcmVzb3VyY2UgY29udGVudD4iLCBjb250ZW50KTsKKyAgICAgICAg
ICAgICAgICBuZXh0KCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0sCisKKyAgICAgICAgZnVu
Y3Rpb24gdGVzdEZvcmNlVXBkYXRlU291cmNlTWFwcGluZyhuZXh0KQorICAgICAgICB7CisgICAg
ICAgICAgICB2YXIgc2NyaXB0MSA9IGNyZWF0ZVNjcmlwdE1vY2soImluZGV4Lmh0bWwiLCAwLCAx
MCwgZmFsc2UsICI8c2NyaXB0IHNvdXJjZSAxPiIpOworICAgICAgICAgICAgdmFyIHNjcmlwdDIg
PSBjcmVhdGVTY3JpcHRNb2NrKCJpbmRleC5odG1sIiwgMCwgNDUsIGZhbHNlLCAiPHNjcmlwdCBz
b3VyY2UgMj4iKTsKKyAgICAgICAgICAgIHZhciBzY3JpcHQzID0gY3JlYXRlU2NyaXB0TW9jaygi
aW5kZXguaHRtbCIsIDEsIDEwLCBmYWxzZSwgIjxzY3JpcHQgc291cmNlIDM+Iik7CisgICAgICAg
ICAgICB2YXIgcmVzb3VyY2UgPSBjcmVhdGVQZW5kaW5nUmVzb3VyY2VNb2NrKCJkb2N1bWVudCIs
ICI8cmVzb3VyY2UgY29udGVudD4iKTsKKyAgICAgICAgICAgIHZhciByYXdTb3VyY2VDb2RlID0g
Y3JlYXRlUmF3U291cmNlQ29kZShzY3JpcHQxLCByZXNvdXJjZSk7CisKKyAgICAgICAgICAgIGZp
cmVUaW1lcnMoKTsKKyAgICAgICAgICAgIHdhaXRGb3JTb3VyY2VNYXBwaW5nKHJhd1NvdXJjZUNv
ZGUsIHJlcXVlc3RDb250ZW50KTsKKyAgICAgICAgICAgIHJhd1NvdXJjZUNvZGUuZm9yY2VVcGRh
dGVTb3VyY2VNYXBwaW5nKCk7CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHJlcXVlc3RDb250ZW50
KCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByYXdTb3VyY2VDb2RlLnVpU291cmNl
Q29kZS5yZXF1ZXN0Q29udGVudChkaWRSZXF1ZXN0Q29udGVudE9uZVNjcmlwdCk7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGRpZFJlcXVlc3RDb250ZW50T25lU2NyaXB0
KG1pbWVUeXBlLCBjb250ZW50KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuYXNzZXJ0RXF1YWxzKG1pbWVUeXBlLCAidGV4dC9odG1sIik7CisgICAgICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoIiAgPHNjcmlwdD48c2NyaXB0IHNvdXJj
ZSAxPjwvIiArICJzY3JpcHQ+IiwgY29udGVudCk7CisKKyAgICAgICAgICAgICAgICByYXdTb3Vy
Y2VDb2RlLmZvcmNlVXBkYXRlU291cmNlTWFwcGluZygpOworICAgICAgICAgICAgICAgIGZpcmVU
aW1lcnMoKTsKKyAgICAgICAgICAgICAgICByYXdTb3VyY2VDb2RlLmFkZFNjcmlwdChzY3JpcHQy
KTsKKyAgICAgICAgICAgICAgICBmaXJlVGltZXJzKCk7CisgICAgICAgICAgICAgICAgd2FpdEZv
clNvdXJjZU1hcHBpbmcocmF3U291cmNlQ29kZSwgcmVxdWVzdENvbnRlbnRUd29TY3JpcHRzKTsK
KyAgICAgICAgICAgICAgICByYXdTb3VyY2VDb2RlLmZvcmNlVXBkYXRlU291cmNlTWFwcGluZygp
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiByZXF1ZXN0Q29udGVudFR3
b1NjcmlwdHMoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJhd1NvdXJjZUNvZGUu
dWlTb3VyY2VDb2RlLnJlcXVlc3RDb250ZW50KGRpZFJlcXVlc3RDb250ZW50VHdvU2NyaXB0cyk7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGRpZFJlcXVlc3RDb250ZW50
VHdvU2NyaXB0cyhtaW1lVHlwZSwgY29udGVudCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyhtaW1lVHlwZSwgInRleHQvaHRtbCIpOwor
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKCIgIDxzY3JpcHQ+PHNj
cmlwdCBzb3VyY2UgMT48LyIgKyAic2NyaXB0PiA8c2NyaXB0PjxzY3JpcHQgc291cmNlIDI+PC8i
ICsgInNjcmlwdD4iLCBjb250ZW50KTsKKworICAgICAgICAgICAgICAgIHJhd1NvdXJjZUNvZGUu
Zm9yY2VVcGRhdGVTb3VyY2VNYXBwaW5nKCk7CisgICAgICAgICAgICAgICAgZmlyZVRpbWVycygp
OworICAgICAgICAgICAgICAgIHdhaXRGb3JTb3VyY2VNYXBwaW5nKHJhd1NvdXJjZUNvZGUsIHJl
cXVlc3RDb250ZW50UmVzb3VyY2UpOworICAgICAgICAgICAgICAgIHJlc291cmNlLmZpbmlzaCgp
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiByZXF1ZXN0Q29udGVudFJl
c291cmNlKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByYXdTb3VyY2VDb2RlLnVp
U291cmNlQ29kZS5yZXF1ZXN0Q29udGVudChkaWRSZXF1ZXN0Q29udGVudFJlc291cmNlKTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gZGlkUmVxdWVzdENvbnRlbnRSZXNv
dXJjZShtaW1lVHlwZSwgY29udGVudCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyhtaW1lVHlwZSwgInRleHQvaHRtbCIpOworICAgICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKCI8cmVzb3VyY2UgY29udGVudD4i
LCBjb250ZW50KTsKKworICAgICAgICAgICAgICAgIHJhd1NvdXJjZUNvZGUuYWRkU2NyaXB0KHNj
cmlwdDMpOworICAgICAgICAgICAgICAgIGZpcmVUaW1lcnMoKTsKKyAgICAgICAgICAgICAgICBy
YXdTb3VyY2VDb2RlLmZvcmNlVXBkYXRlU291cmNlTWFwcGluZygpOworICAgICAgICAgICAgICAg
IGZpcmVUaW1lcnMoKTsKKworICAgICAgICAgICAgICAgIG5leHQoKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfSwKKworICAgICAgICBmdW5jdGlvbiB0ZXN0Rm9ybWF0dGluZ1dpdGhGaW5pc2hl
ZFJlc291cmNlKG5leHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBzY3JpcHQgPSBjcmVh
dGVTY3JpcHRNb2NrKCJmb28uanMiLCAwLCAwLCB0cnVlLCAiPHNjcmlwdCBzb3VyY2U+Iik7Cisg
ICAgICAgICAgICB2YXIgcmVzb3VyY2UgPSBjcmVhdGVGaW5pc2hlZFJlc291cmNlTW9jaygic2Ny
aXB0IiwgIjxyZXNvdXJjZSBjb250ZW50PiIpOworICAgICAgICAgICAgdmFyIHJhd1NvdXJjZUNv
ZGUgPSBjcmVhdGVSYXdTb3VyY2VDb2RlKHNjcmlwdCwgcmVzb3VyY2UsIGZhbHNlKTsKKyAgICAg
ICAgICAgIHdhaXRGb3JTb3VyY2VNYXBwaW5nKHJhd1NvdXJjZUNvZGUsIHJlcXVlc3RDb250ZW50
KTsKKworICAgICAgICAgICAgZnVuY3Rpb24gcmVxdWVzdENvbnRlbnQoKQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIHZhciB1aVNvdXJjZUNvZGUgPSByYXdTb3VyY2VDb2RlLnVpU291
cmNlQ29kZTsKKyAgICAgICAgICAgICAgICB2YXIgdWlMb2NhdGlvbiA9IHJhd1NvdXJjZUNvZGUu
cmF3TG9jYXRpb25Ub1VJTG9jYXRpb24oeyBsaW5lTnVtYmVyIDogMSwgY29sdW1uTnVtYmVyOiAy
IH0pOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKHVpU291cmNl
Q29kZSwgdWlMb2NhdGlvbi51aVNvdXJjZUNvZGUpOworICAgICAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuYXNzZXJ0RXF1YWxzKDEsIHVpTG9jYXRpb24ubGluZU51bWJlcik7CisgICAgICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoMiwgdWlMb2NhdGlvbi5jb2x1bW5OdW1i
ZXIpOworICAgICAgICAgICAgICAgIHVpU291cmNlQ29kZS5yZXF1ZXN0Q29udGVudChkaWRSZXF1
ZXN0Q29udGVudCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGRpZFJl
cXVlc3RDb250ZW50KG1pbWVUeXBlLCBjb250ZW50KQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKCJ0ZXh0L2phdmFzY3JpcHQiLCBtaW1l
VHlwZSk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoIjxyZXNv
dXJjZSBjb250ZW50PiIsIGNvbnRlbnQpOworCisgICAgICAgICAgICAgICAgd2FpdEZvclNvdXJj
ZU1hcHBpbmcocmF3U291cmNlQ29kZSwgcmVxdWVzdEZvcm1hdHRlZENvbnRlbnQpOworICAgICAg
ICAgICAgICAgIHJhd1NvdXJjZUNvZGUuc2V0Rm9ybWF0dGVkKHRydWUpOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBmdW5jdGlvbiByZXF1ZXN0Rm9ybWF0dGVkQ29udGVudCgpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9IHJhd1NvdXJjZUNv
ZGUudWlTb3VyY2VDb2RlOworICAgICAgICAgICAgICAgIHZhciB1aUxvY2F0aW9uID0gcmF3U291
cmNlQ29kZS5yYXdMb2NhdGlvblRvVUlMb2NhdGlvbih7IGxpbmVOdW1iZXIgOiAxLCBjb2x1bW5O
dW1iZXI6IDIgfSk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMo
dWlTb3VyY2VDb2RlLCB1aUxvY2F0aW9uLnVpU291cmNlQ29kZSk7CisgICAgICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoMiwgdWlMb2NhdGlvbi5saW5lTnVtYmVyKTsKKyAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyg0LCB1aUxvY2F0aW9uLmNv
bHVtbk51bWJlcik7CisgICAgICAgICAgICAgICAgdWlTb3VyY2VDb2RlLnJlcXVlc3RDb250ZW50
KGRpZFJlcXVlc3RGb3JtYXR0ZWRDb250ZW50KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgZnVuY3Rpb24gZGlkUmVxdWVzdEZvcm1hdHRlZENvbnRlbnQobWltZVR5cGUsIGNvbnRlbnQp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVh
bHMobWltZVR5cGUsICJ0ZXh0L2phdmFzY3JpcHQiKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmFzc2VydEVxdWFscygiPGZvcm1hdHRlZD4gPHJlc291cmNlIGNvbnRlbnQ+IiwgY29u
dGVudCk7CisKKyAgICAgICAgICAgICAgICB3YWl0Rm9yU291cmNlTWFwcGluZyhyYXdTb3VyY2VD
b2RlLCByZXF1ZXN0Tm90Rm9ybWF0dGVkQ29udGVudCk7CisgICAgICAgICAgICAgICAgcmF3U291
cmNlQ29kZS5zZXRGb3JtYXR0ZWQoZmFsc2UpOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBmdW5jdGlvbiByZXF1ZXN0Tm90Rm9ybWF0dGVkQ29udGVudCgpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9IHJhd1NvdXJjZUNvZGUudWlTb3VyY2VD
b2RlOworICAgICAgICAgICAgICAgIHZhciB1aUxvY2F0aW9uID0gcmF3U291cmNlQ29kZS5yYXdM
b2NhdGlvblRvVUlMb2NhdGlvbih7IGxpbmVOdW1iZXIgOiAxLCBjb2x1bW5OdW1iZXI6IDIgfSk7
CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHModWlTb3VyY2VDb2Rl
LCB1aUxvY2F0aW9uLnVpU291cmNlQ29kZSk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5hc3NlcnRFcXVhbHMoMSwgdWlMb2NhdGlvbi5saW5lTnVtYmVyKTsKKyAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscygyLCB1aUxvY2F0aW9uLmNvbHVtbk51bWJlcik7
CisgICAgICAgICAgICAgICAgdWlTb3VyY2VDb2RlLnJlcXVlc3RDb250ZW50KGRpZFJlcXVlc3RO
b3RGb3JtYXR0ZWRDb250ZW50KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rp
b24gZGlkUmVxdWVzdE5vdEZvcm1hdHRlZENvbnRlbnQobWltZVR5cGUsIGNvbnRlbnQpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoInRl
eHQvamF2YXNjcmlwdCIsIG1pbWVUeXBlKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmFzc2VydEVxdWFscygiPHJlc291cmNlIGNvbnRlbnQ+IiwgY29udGVudCk7CisKKyAgICAgICAg
ICAgICAgICBuZXh0KCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0sCisKKyAgICAgICAgZnVu
Y3Rpb24gdGVzdEZvcm1hdHRpbmdXaXRoUGVuZGluZ1Jlc291cmNlKG5leHQpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHZhciBzY3JpcHQgPSBjcmVhdGVTY3JpcHRNb2NrKCJmb28uanMiLCAwLCAw
LCB0cnVlLCAiPHNjcmlwdCBzb3VyY2U+Iik7CisgICAgICAgICAgICB2YXIgcmVzb3VyY2UgPSBj
cmVhdGVQZW5kaW5nUmVzb3VyY2VNb2NrKCJzY3JpcHQiLCAiPHJlc291cmNlIGNvbnRlbnQ+Iik7
CisgICAgICAgICAgICB2YXIgcmF3U291cmNlQ29kZSA9IGNyZWF0ZVJhd1NvdXJjZUNvZGUoc2Ny
aXB0LCByZXNvdXJjZSwgdHJ1ZSk7CisKKyAgICAgICAgICAgIGZpcmVUaW1lcnMoKTsKKyAgICAg
ICAgICAgIHdhaXRGb3JTb3VyY2VNYXBwaW5nKHJhd1NvdXJjZUNvZGUsIGNoZWNrTWFwcGluZyk7
CisgICAgICAgICAgICByZXNvdXJjZS5maW5pc2goKTsKKworICAgICAgICAgICAgZnVuY3Rpb24g
Y2hlY2tNYXBwaW5nKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB2YXIgdWlTb3Vy
Y2VDb2RlID0gcmF3U291cmNlQ29kZS51aVNvdXJjZUNvZGU7CisgICAgICAgICAgICAgICAgdmFy
IHVpTG9jYXRpb24gPSByYXdTb3VyY2VDb2RlLnJhd0xvY2F0aW9uVG9VSUxvY2F0aW9uKHsgbGlu
ZU51bWJlciA6IDEsIGNvbHVtbk51bWJlcjogMiB9KTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmFzc2VydEVxdWFscyh1aVNvdXJjZUNvZGUsIHVpTG9jYXRpb24udWlTb3VyY2VDb2Rl
KTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscygyLCB1aUxvY2F0
aW9uLmxpbmVOdW1iZXIpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1
YWxzKDQsIHVpTG9jYXRpb24uY29sdW1uTnVtYmVyKTsKKworICAgICAgICAgICAgICAgIHdhaXRG
b3JTb3VyY2VNYXBwaW5nKHJhd1NvdXJjZUNvZGUsIGNoZWNrTWFwcGluZ0FnYWluKTsKKyAgICAg
ICAgICAgICAgICByYXdTb3VyY2VDb2RlLnNldEZvcm1hdHRlZChmYWxzZSk7CisgICAgICAgICAg
ICAgICAgcmF3U291cmNlQ29kZS5zZXRGb3JtYXR0ZWQodHJ1ZSk7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIGZ1bmN0aW9uIGNoZWNrTWFwcGluZ0FnYWluKCkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gcmF3U291cmNlQ29kZS51aVNvdXJj
ZUNvZGU7CisgICAgICAgICAgICAgICAgdmFyIHVpTG9jYXRpb24gPSByYXdTb3VyY2VDb2RlLnJh
d0xvY2F0aW9uVG9VSUxvY2F0aW9uKHsgbGluZU51bWJlciA6IDEsIGNvbHVtbk51bWJlcjogMiB9
KTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyh1aVNvdXJjZUNv
ZGUsIHVpTG9jYXRpb24udWlTb3VyY2VDb2RlKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmFzc2VydEVxdWFscygyLCB1aUxvY2F0aW9uLmxpbmVOdW1iZXIpOworICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKDQsIHVpTG9jYXRpb24uY29sdW1uTnVtYmVy
KTsKKworICAgICAgICAgICAgICAgIGZpcmVUaW1lcnMoKTsKKworICAgICAgICAgICAgICAgIG5l
eHQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIF0pOworfTsKKworPC9zY3JpcHQ+
CisKKzwvaGVhZD4KKworPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHA+VGVzdHMgUmF3U291
cmNlQ29kZSBjbGFzcy48L3A+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHQtZm9ybWF0dGVyLmh0bWwgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0LWZvcm1hdHRlci5odG1sCmluZGV4IGZmOTlm
NzQ0MzNmYTk2NjlhMzFjYTJiOTk4MzNkZjE3MWRiOGU3YTkuLjgwMzhmNTllMDYwYjM0NWUyZTM3
MmQ1ODE1Y2RlNDE5ZDNiYWI5YmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9k
ZWJ1Z2dlci9zY3JpcHQtZm9ybWF0dGVyLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2RlYnVnZ2VyL3NjcmlwdC1mb3JtYXR0ZXIuaHRtbApAQCAtMTg1LDcgKzE4NSw3IEBAIHZhciB0
ZXN0ID0gZnVuY3Rpb24oKQogICAgICAgICAgICAgZnVuY3Rpb24gZGlkRXZhbHVhdGUoKQogICAg
ICAgICAgICAgewogICAgICAgICAgICAgICAgIGR1bXBDb25zb2xlTWVzc2FnZVVSTHMoKTsKLSAg
ICAgICAgICAgICAgICBwYW5lbC5fcHJlc2VudGF0aW9uTW9kZWwuYWRkRXZlbnRMaXN0ZW5lcihX
ZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5FdmVudHMuVUlTb3VyY2VDb2Rl
QWRkZWQsICB1aVNvdXJjZUNvZGVSZXBsYWNlZCk7CisgICAgICAgICAgICAgICAgcGFuZWwuX3By
ZXNlbnRhdGlvbk1vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJl
c2VudGF0aW9uTW9kZWwuRXZlbnRzLlVJU291cmNlQ29kZVJlcGxhY2VkLCAgdWlTb3VyY2VDb2Rl
UmVwbGFjZWQpOwogICAgICAgICAgICAgICAgIHBhbmVsLl90b2dnbGVGb3JtYXRTb3VyY2UoKTsK
ICAgICAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVn
Z2VyL3NvdXJjZS1maWxlLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc291
cmNlLWZpbGUuaHRtbAppbmRleCA1MDU2YjA5NWVmY2M5Y2I2MjU5MGQzYmZmNmJjMDgyMTRkZTBk
ZjY0Li5jZTJiMzdjNzhiYjcyZTE1MjU5MjkzZmUyODExZmQ2MGRjMzY2Mzk2IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc291cmNlLWZpbGUuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc291cmNlLWZpbGUuaHRtbApAQCAtODEsNyAr
ODEsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgZnVuY3Rpb24gdGVzdEZvcm1hdHRlZENv
bnZlcnRMb2NhdGlvbihuZXh0KQogICAgICAgICB7CiAgICAgICAgICAgICB2YXIgc2NyaXB0ID0g
bmV3IFdlYkluc3BlY3Rvci5TY3JpcHQoIjEiLCAiZm9vLmpzIiwgMCwgMCwgMjAsIDgwLCB1bmRl
ZmluZWQsIHVuZGVmaW5lZCwgZmFsc2UpOwotICAgICAgICAgICAgdmFyIHJhd1NvdXJjZUNvZGUg
PSBuZXcgV2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUoImlkIiwgc2NyaXB0LCBtb2NrU2NyaXB0
Rm9ybWF0dGVyLCB0cnVlKTsKKyAgICAgICAgICAgIHZhciByYXdTb3VyY2VDb2RlID0gbmV3IFdl
Ykluc3BlY3Rvci5SYXdTb3VyY2VDb2RlKCJpZCIsIHNjcmlwdCwgbnVsbCwgbW9ja1NjcmlwdEZv
cm1hdHRlciwgdHJ1ZSk7CiAKICAgICAgICAgICAgIGZ1bmN0aW9uIGRpZENyZWF0ZVNvdXJjZU1h
cHBpbmcoKQogICAgICAgICAgICAgewpAQCAtOTYsNyArOTYsNyBAQCBmdW5jdGlvbiB0ZXN0KCkK
ICAgICAgICAgewogICAgICAgICAgICAgdmFyIHNjcmlwdDEgPSBuZXcgV2ViSW5zcGVjdG9yLlNj
cmlwdCgiMSIsICJmb28uanMiLCAxMCwgMjAsIDMwLCA0MCwgdW5kZWZpbmVkLCB1bmRlZmluZWQs
IGZhbHNlKTsKICAgICAgICAgICAgIHZhciBzY3JpcHQyID0gbmV3IFdlYkluc3BlY3Rvci5TY3Jp
cHQoIjIiLCAiZm9vLmpzIiwgNTAsIDYwLCA3MCwgODAsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBm
YWxzZSk7Ci0gICAgICAgICAgICB2YXIgcmF3U291cmNlQ29kZSA9IG5ldyBXZWJJbnNwZWN0b3Iu
UmF3U291cmNlQ29kZSgiaWQiLCBzY3JpcHQxLCBtb2NrU2NyaXB0Rm9ybWF0dGVyLCB0cnVlKTsK
KyAgICAgICAgICAgIHZhciByYXdTb3VyY2VDb2RlID0gbmV3IFdlYkluc3BlY3Rvci5SYXdTb3Vy
Y2VDb2RlKCJpZCIsIHNjcmlwdDEsIG51bGwsIG1vY2tTY3JpcHRGb3JtYXR0ZXIsIHRydWUpOwog
ICAgICAgICAgICAgcmF3U291cmNlQ29kZS5hZGRTY3JpcHQoc2NyaXB0Mik7CiAKICAgICAgICAg
ICAgIGZ1bmN0aW9uIGRpZENyZWF0ZVNvdXJjZU1hcHBpbmcoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDgyZmQ2
ZGMzZTBlMWZkYjA0NDZkNWJjNWQ3ODEwZDdjNmY0MDM1ZjAuLmI5ODVlMzRiNmUwZWVhZjRhZWFj
MDBjODlkMTE3N2Q2MDY5NmQzOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAxMS0w
OS0wNiAgUGF2ZWwgUG9kaXZpbG92ICA8cG9kaXZpbG92QGNocm9taXVtLm9yZz4KKworICAgICAg
ICBXZWIgSW5zcGVjdG9yOiBkbyBub3QgcmUtY3JlYXRlIFJhd1NvdXJjZUNvZGUgd2hlbiB0b2dn
bGluZyBwcmV0dHktcHJpbnQgbW9kZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTY3NjQ3CisKKyAgICAgICAgMSkgSW1wbGVtZW50IFJhd1NvdXJjZUNv
ZGUuc2V0Rm9ybWF0dGVkIHRoYXQgYWxsb3dzIHRvZ2dsaW5nIHByZXR0eS1wcmludCBtb2RlIG9u
IHRoZSBmbHkgd2l0aG91dCByZXNldHRpbmcgZXZlcnl0aGluZy4KKyAgICAgICAgMikgQWRkIFJh
d1NvdXJjZUNvZGUgdW5pdCB0ZXN0cy4KKyAgICAgICAgMykgUmVtb3ZlIHNvdXJjZSBtYXBwaW5n
IGxpc3RlbmVycyBhbmQgY29uc29sZSBtZXNzYWdlcyBmcm9tIHByZXNlbnRhdGlvbiBtb2RlbCAo
dGhleSBsaXZlIGluIFJhd1NvdXJjZUNvZGUgbm93KS4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBpbnNwZWN0b3IvZGVidWdnZXIvcmF3LXNv
dXJjZS1jb2RlLmh0bWwKKworICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJQ
cmVzZW50YXRpb25Nb2RlbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNl
bnRhdGlvbk1vZGVsKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlv
bk1vZGVsLnByb3RvdHlwZS5saW5raWZ5TG9jYXRpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBlLl9hZGRTY3JpcHQpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBlLl9zb3Vy
Y2VNYXBwaW5nVXBkYXRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50
YXRpb25Nb2RlbC5wcm90b3R5cGUuc2V0Rm9ybWF0U291cmNlKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZS5fY3JlYXRlUmF3U291cmNl
Q29kZUlkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVs
LnByb3RvdHlwZS5fZGVidWdnZXJSZXNldCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVu
ZC9TY3JpcHRzUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnBy
b3RvdHlwZS5fdG9nZ2xlRm9ybWF0U291cmNlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQt
ZW5kL1NvdXJjZUZpbGUuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZS5wcm90b3R5cGUuZ2V0IHVpU291
cmNlQ29kZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZS5wcm90b3R5cGUu
c2V0Rm9ybWF0dGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlLnByb3Rv
dHlwZS5yYXdMb2NhdGlvblRvVUlMb2NhdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmF3
U291cmNlQ29kZS5wcm90b3R5cGUuX3NhdmVTb3VyY2VNYXBwaW5nKToKKwogMjAxMS0wOC0zMCAg
UGF2ZWwgUG9kaXZpbG92ICA8cG9kaXZpbG92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIg
SW5zcGVjdG9yOiBpbXBsZW1lbnQgc291cmNlIG1hcCB2MyBjb25zdW1lci4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJQcmVzZW50YXRpb25N
b2RlbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJQcmVz
ZW50YXRpb25Nb2RlbC5qcwppbmRleCAxNzhkZTNjNWIxNjY2ZWI4ZGU1NjM1NTg1MTQ2MjkzZDI4
NDJmMDlhLi4yMGVhZDU2NTVhYWY0NmUyNTIwZTY5NWFlZDkwNWQxNmI2MjRjYTkxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RlYnVnZ2VyUHJlc2VudGF0
aW9uTW9kZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1
Z2dlclByZXNlbnRhdGlvbk1vZGVsLmpzCkBAIC0zNyw4ICszNyw2IEBAIFdlYkluc3BlY3Rvci5E
ZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsID0gZnVuY3Rpb24oKQogICAgIHRoaXMuX2Zvcm1hdHRl
ciA9IG5ldyBXZWJJbnNwZWN0b3IuU2NyaXB0Rm9ybWF0dGVyKCk7CiAgICAgdGhpcy5fcmF3U291
cmNlQ29kZSA9IHt9OwogICAgIHRoaXMuX21lc3NhZ2VzID0gW107Ci0gICAgLy8gRklYTUU6IG1v
dmUgdGhpcyB0byBSYXdTb3VyY2VDb2RlIHdoZW4gaXQncyBub3QgcmUtY3JlYXRlZCBpbiBwcmV0
dHktcHJpbnQgbW9kZS4KLSAgICB0aGlzLl9zb3VyY2VNYXBwaW5nTGlzdGVuZXJzID0gW107CiAK
ICAgICB0aGlzLl9wcmVzZW50YXRpb25DYWxsRnJhbWVzID0gW107CiAgICAgdGhpcy5fc2VsZWN0
ZWRDYWxsRnJhbWVJbmRleCA9IDA7CkBAIC05OCwxNiArOTYsNiBAQCBXZWJJbnNwZWN0b3IuRGVi
dWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJhd1NvdXJjZUNv
ZGUuY3JlYXRlU291cmNlTWFwcGluZ0lmTmVlZGVkKGRpZENyZWF0ZVNvdXJjZU1hcHBpbmcpOwog
ICAgIH0sCiAKLSAgICBhZGRTb3VyY2VNYXBwaW5nTGlzdGVuZXI6IGZ1bmN0aW9uKHNvdXJjZVVS
TCwgc2NyaXB0SWQsIGxpc3RlbmVyKQotICAgIHsKLSAgICAgICAgdGhpcy5fc291cmNlTWFwcGlu
Z0xpc3RlbmVycy5wdXNoKGxpc3RlbmVyKTsKLSAgICB9LAotCi0gICAgcmVtb3ZlU291cmNlTWFw
cGluZ0xpc3RlbmVyOiBmdW5jdGlvbihzb3VyY2VVUkwsIHNjcmlwdElkLCBsaXN0ZW5lcikKLSAg
ICB7Ci0gICAgICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgdGhpcy4KLSAgICB9LAotCiAgICAgbGlu
a2lmeUxvY2F0aW9uOiBmdW5jdGlvbihzb3VyY2VVUkwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJl
ciwgY2xhc3NlcykKICAgICB7CiAgICAgICAgIHZhciBsaW5rVGV4dCA9IFdlYkluc3BlY3Rvci5m
b3JtYXRMaW5rVGV4dChzb3VyY2VVUkwsIGxpbmVOdW1iZXIpOwpAQCAtMTMyLDcgKzEyMCw3IEBA
IFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgICAgIHRoaXMuX3NjcmlwdExvY2F0aW9uVG9VSUxvY2F0aW9uKHNvdXJjZVVSTCwgbnVs
bCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBkaWRHZXRMb2NhdGlvbi5iaW5kKHRoaXMpKTsK
ICAgICAgICAgfQogICAgICAgICB1cGRhdGVBbmNob3IuY2FsbCh0aGlzKTsKLSAgICAgICAgdGhp
cy5hZGRTb3VyY2VNYXBwaW5nTGlzdGVuZXIoc291cmNlVVJMLCBudWxsLCB1cGRhdGVBbmNob3Iu
YmluZCh0aGlzKSk7CisgICAgICAgIHJhd1NvdXJjZUNvZGUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJ
bnNwZWN0b3IuUmF3U291cmNlQ29kZS5FdmVudHMuU291cmNlTWFwcGluZ1VwZGF0ZWQsIHVwZGF0
ZUFuY2hvciwgdGhpcyk7CiAgICAgICAgIHJldHVybiBhbmNob3I7CiAgICAgfSwKIApAQCAtMTU1
LDE2ICsxNDMsMTYgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwucHJv
dG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgcmF3
U291cmNlQ29kZSA9IG5ldyBXZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZShyYXdTb3VyY2VDb2Rl
SWQsIHNjcmlwdCwgdGhpcy5fZm9ybWF0dGVyLCB0aGlzLl9mb3JtYXRTb3VyY2UpOworICAgICAg
ICB2YXIgcmVzb3VyY2U7CisgICAgICAgIGlmIChzY3JpcHQuc291cmNlVVJMKQorICAgICAgICAg
ICAgcmVzb3VyY2UgPSBXZWJJbnNwZWN0b3IubmV0d29ya01hbmFnZXIuaW5mbGlnaHRSZXNvdXJj
ZUZvclVSTChzY3JpcHQuc291cmNlVVJMKSB8fCBXZWJJbnNwZWN0b3IucmVzb3VyY2VGb3JVUkwo
c2NyaXB0LnNvdXJjZVVSTCk7CisgICAgICAgIHJhd1NvdXJjZUNvZGUgPSBuZXcgV2ViSW5zcGVj
dG9yLlJhd1NvdXJjZUNvZGUocmF3U291cmNlQ29kZUlkLCBzY3JpcHQsIHJlc291cmNlLCB0aGlz
Ll9mb3JtYXR0ZXIsIHRoaXMuX2Zvcm1hdFNvdXJjZSk7CiAgICAgICAgIHRoaXMuX3Jhd1NvdXJj
ZUNvZGVbcmF3U291cmNlQ29kZUlkXSA9IHJhd1NvdXJjZUNvZGU7CiAgICAgICAgIHJhd1NvdXJj
ZUNvZGUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZS5FdmVudHMu
U291cmNlTWFwcGluZ1VwZGF0ZWQsIHRoaXMuX3NvdXJjZU1hcHBpbmdVcGRhdGVkLCB0aGlzKTsK
ICAgICB9LAogCiAgICAgX3NvdXJjZU1hcHBpbmdVcGRhdGVkOiBmdW5jdGlvbihldmVudCkKICAg
ICB7Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fc291cmNlTWFwcGluZ0xpc3Rl
bmVycy5sZW5ndGg7ICsraSkKLSAgICAgICAgICAgIHRoaXMuX3NvdXJjZU1hcHBpbmdMaXN0ZW5l
cnNbaV0oKTsKLQogICAgICAgICB2YXIgcmF3U291cmNlQ29kZSA9IGV2ZW50LnRhcmdldDsKICAg
ICAgICAgdmFyIG9sZFVJU291cmNlQ29kZSA9IGV2ZW50LmRhdGEub2xkVUlTb3VyY2VDb2RlOwog
ICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gcmF3U291cmNlQ29kZS51aVNvdXJjZUNvZGU7CkBA
IC0yNjIsMjMgKzI1MCwxNyBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2Rl
bC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2Zvcm1hdFNvdXJjZSA9IGZvcm1hdFNvdXJj
ZTsKIAogICAgICAgICB0aGlzLl9icmVha3BvaW50TWFuYWdlci5yZXNldCgpOwotICAgICAgICBm
b3IgKHZhciBpZCBpbiB0aGlzLl9yYXdTb3VyY2VDb2RlKQotICAgICAgICAgICAgdGhpcy5fcmF3
U291cmNlQ29kZVtpZF0ucmVtb3ZlRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuUmF3U291cmNl
Q29kZS5FdmVudHMuU291cmNlTWFwcGluZ1VwZGF0ZWQsIHRoaXMuX3NvdXJjZU1hcHBpbmdVcGRh
dGVkLCB0aGlzKTsKLSAgICAgICAgdGhpcy5fcmF3U291cmNlQ29kZSA9IHt9OwotICAgICAgICB2
YXIgbWVzc2FnZXMgPSB0aGlzLl9tZXNzYWdlczsKLSAgICAgICAgdGhpcy5fbWVzc2FnZXMgPSBb
XTsKIAotICAgICAgICB2YXIgc2NyaXB0cyA9IFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLnNj
cmlwdHM7Ci0gICAgICAgIGZvciAodmFyIGlkIGluIHNjcmlwdHMpCi0gICAgICAgICAgICB0aGlz
Ll9hZGRTY3JpcHQoc2NyaXB0c1tpZF0pOworICAgICAgICBmb3IgKHZhciBpZCBpbiB0aGlzLl9y
YXdTb3VyY2VDb2RlKSB7CisgICAgICAgICAgICB0aGlzLl9yYXdTb3VyY2VDb2RlW2lkXS5tZXNz
YWdlcyA9IFtdOworICAgICAgICAgICAgdGhpcy5fcmF3U291cmNlQ29kZVtpZF0uc2V0Rm9ybWF0
dGVkKHRoaXMuX2Zvcm1hdFNvdXJjZSk7CisgICAgICAgIH0KIAorICAgICAgICB2YXIgbWVzc2Fn
ZXMgPSB0aGlzLl9tZXNzYWdlczsKKyAgICAgICAgdGhpcy5fbWVzc2FnZXMgPSBbXTsKICAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtZXNzYWdlcy5sZW5ndGg7ICsraSkKICAgICAgICAgICAg
IHRoaXMuX2FkZENvbnNvbGVNZXNzYWdlKG1lc3NhZ2VzW2ldKTsKIAotICAgICAgICAvLyBGSVhN
RTogbW92ZSB0aGlzIHRvIFJhd1NvdXJjZUNvZGUuCi0gICAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgdGhpcy5fc291cmNlTWFwcGluZ0xpc3RlbmVycy5sZW5ndGg7ICsraSkKLSAgICAgICAgICAg
IHRoaXMuX3NvdXJjZU1hcHBpbmdMaXN0ZW5lcnNbaV0oKTsKLQogICAgICAgICBpZiAoV2ViSW5z
cGVjdG9yLmRlYnVnZ2VyTW9kZWwuY2FsbEZyYW1lcykKICAgICAgICAgICAgIHRoaXMuX2RlYnVn
Z2VyUGF1c2VkKCk7CiAgICAgfSwKQEAgLTQ0NiwxNSArNDI4LDEzIEBAIFdlYkluc3BlY3Rvci5E
ZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZSA9IHsKIAogICAgIF9jcmVhdGVSYXdT
b3VyY2VDb2RlSWQ6IGZ1bmN0aW9uKHNvdXJjZVVSTCwgc2NyaXB0SWQpCiAgICAgewotICAgICAg
ICB2YXIgcHJlZml4ID0gdGhpcy5fZm9ybWF0U291cmNlID8gImRlb2JmdXNjYXRlZDoiIDogIiI7
Ci0gICAgICAgIHJldHVybiBwcmVmaXggKyAoc291cmNlVVJMIHx8IHNjcmlwdElkKTsKKyAgICAg
ICAgcmV0dXJuIHNvdXJjZVVSTCB8fCBzY3JpcHRJZDsKICAgICB9LAogCiAgICAgX2RlYnVnZ2Vy
UmVzZXQ6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHRoaXMuX3Jhd1NvdXJjZUNvZGUgPSB7
fTsKICAgICAgICAgdGhpcy5fbWVzc2FnZXMgPSBbXTsKLSAgICAgICAgdGhpcy5fc291cmNlTWFw
cGluZ0xpc3RlbmVycyA9IFtdOwogICAgICAgICB0aGlzLl9wcmVzZW50YXRpb25DYWxsRnJhbWVz
ID0gW107CiAgICAgICAgIHRoaXMuX3NlbGVjdGVkQ2FsbEZyYW1lSW5kZXggPSAwOwogICAgICAg
ICB0aGlzLl9icmVha3BvaW50TWFuYWdlci5kZWJ1Z2dlclJlc2V0KCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qcyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzCmluZGV4IGIzMDdh
ZmYyODQ0YmExNmRkM2EyM2Q3NzJhMDE1ZDIwNmNjODEyYjUuLmNkNmRkMGIxZjAyYzU5ODJiOTMw
NWRhMzEyNGFkNDRiM2MzZTE3MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzCkBAIC0xMTMyLDcgKzExMzIsNiBAQCBXZWJJbnNw
ZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZSA9IHsKIAogICAgIF90b2dnbGVGb3JtYXRTb3Vy
Y2U6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMuc2NyaXB0
cy5yZXNldCgpOwogICAgICAgICB0aGlzLl90b2dnbGVGb3JtYXRTb3VyY2VCdXR0b24udG9nZ2xl
ZCA9ICF0aGlzLl90b2dnbGVGb3JtYXRTb3VyY2VCdXR0b24udG9nZ2xlZDsKICAgICAgICAgdGhp
cy5fcHJlc2VudGF0aW9uTW9kZWwuc2V0Rm9ybWF0U291cmNlKHRoaXMuX3RvZ2dsZUZvcm1hdFNv
dXJjZUJ1dHRvbi50b2dnbGVkKTsKICAgICB9LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VGaWxlLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9Tb3VyY2VGaWxlLmpzCmluZGV4IDEzNmZhMDM2OGNkYzVlMjc1ZWEwOThm
ZGM2NTU5YzMyYzFlN2I3ZTAuLmRlNTgxZDBhNjc5ZmVkODEyNWVjOTE5MjE1NjhkYzQwNjhiNDk2
ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU291cmNl
RmlsZS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NvdXJjZUZp
bGUuanMKQEAgLTM1LDE4ICszNSwxNSBAQAogICogQGNvbnN0cnVjdG9yCiAgKiBAZXh0ZW5kcyB7
V2ViSW5zcGVjdG9yLk9iamVjdH0KICAqLwotV2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUgPSBm
dW5jdGlvbihpZCwgc2NyaXB0LCBmb3JtYXR0ZXIsIGZvcm1hdHRlZCkKK1dlYkluc3BlY3Rvci5S
YXdTb3VyY2VDb2RlID0gZnVuY3Rpb24oaWQsIHNjcmlwdCwgcmVzb3VyY2UsIGZvcm1hdHRlciwg
Zm9ybWF0dGVkKQogewotICAgIHRoaXMuX3NjcmlwdHMgPSBbc2NyaXB0XTsKLSAgICB0aGlzLl9m
b3JtYXR0ZXIgPSBmb3JtYXR0ZXI7Ci0gICAgdGhpcy5fZm9ybWF0dGVkID0gZm9ybWF0dGVkOwot
Ci0gICAgaWYgKHNjcmlwdC5zb3VyY2VVUkwpCi0gICAgICAgIHRoaXMuX3Jlc291cmNlID0gV2Vi
SW5zcGVjdG9yLm5ldHdvcmtNYW5hZ2VyLmluZmxpZ2h0UmVzb3VyY2VGb3JVUkwoc2NyaXB0LnNv
dXJjZVVSTCkgfHwgV2ViSW5zcGVjdG9yLnJlc291cmNlRm9yVVJMKHNjcmlwdC5zb3VyY2VVUkwp
OwotCiAgICAgdGhpcy5pZCA9IGlkOwogICAgIHRoaXMudXJsID0gc2NyaXB0LnNvdXJjZVVSTDsK
ICAgICB0aGlzLmlzQ29udGVudFNjcmlwdCA9IHNjcmlwdC5pc0NvbnRlbnRTY3JpcHQ7CisgICAg
dGhpcy5fc2NyaXB0cyA9IFtzY3JpcHRdOworICAgIHRoaXMuX2Zvcm1hdHRlciA9IGZvcm1hdHRl
cjsKKyAgICB0aGlzLl9mb3JtYXR0ZWQgPSBmb3JtYXR0ZWQ7CisgICAgdGhpcy5fcmVzb3VyY2Ug
PSByZXNvdXJjZTsKICAgICB0aGlzLm1lc3NhZ2VzID0gW107CiAKICAgICB0aGlzLl91c2VUZW1w
b3JhcnlDb250ZW50ID0gdGhpcy5fcmVzb3VyY2UgJiYgIXRoaXMuX3Jlc291cmNlLmZpbmlzaGVk
OwpAQCAtNzAsMTQgKzY3LDE1IEBAIFdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlLnByb3RvdHlw
ZSA9IHsKIAogICAgIGdldCB1aVNvdXJjZUNvZGUoKQogICAgIHsKLSAgICAgICAgLy8gRklYTUU6
IGV4dHJhY3QgVUlTb3VyY2VDb2RlIGZyb20gUmF3U291cmNlQ29kZSAoY3VycmVudGx5IFJhd1Nv
dXJjZUNvZGUgaW1wbGVtZW50cyBtZXRob2RzIGZyb20gYm90aCBpbnRlcmZhY2VzKS4KLSAgICAg
ICAgcmV0dXJuIHRoaXM7CisgICAgICAgIHJldHVybiB0aGlzLl91aVNvdXJjZUNvZGU7CiAgICAg
fSwKIAotICAgIGdldCByYXdTb3VyY2VDb2RlKCkKKyAgICBzZXRGb3JtYXR0ZWQ6IGZ1bmN0aW9u
KGZvcm1hdHRlZCkKICAgICB7Ci0gICAgICAgIC8vIEZJWE1FOiBleHRyYWN0IFVJU291cmNlQ29k
ZSBmcm9tIFJhd1NvdXJjZUNvZGUgKGN1cnJlbnRseSBSYXdTb3VyY2VDb2RlIGltcGxlbWVudHMg
bWV0aG9kcyBmcm9tIGJvdGggaW50ZXJmYWNlcykuCi0gICAgICAgIHJldHVybiB0aGlzOworICAg
ICAgICBpZiAodGhpcy5fZm9ybWF0dGVkID09PSBmb3JtYXR0ZWQpCisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIHRoaXMuX2Zvcm1hdHRlZCA9IGZvcm1hdHRlZDsKKyAgICAgICAgdGhpcy5f
dXBkYXRlU291cmNlTWFwcGluZygpOwogICAgIH0sCiAKICAgICBjb250ZW50RWRpdGVkOiBmdW5j
dGlvbigpCkBAIC05NCw3ICs5Miw3IEBAIFdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlLnByb3Rv
dHlwZSA9IHsKICAgICByYXdMb2NhdGlvblRvVUlMb2NhdGlvbjogZnVuY3Rpb24ocmF3TG9jYXRp
b24pCiAgICAgewogICAgICAgICB2YXIgbG9jYXRpb24gPSB0aGlzLl9tYXBwaW5nID8gdGhpcy5f
bWFwcGluZy5vcmlnaW5hbFRvRm9ybWF0dGVkKHJhd0xvY2F0aW9uKSA6IHJhd0xvY2F0aW9uOwot
ICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5VSUxvY2F0aW9uKHRoaXMsIGxvY2F0aW9u
LmxpbmVOdW1iZXIsIGxvY2F0aW9uLmNvbHVtbk51bWJlcik7CisgICAgICAgIHJldHVybiBuZXcg
V2ViSW5zcGVjdG9yLlVJTG9jYXRpb24odGhpcy51aVNvdXJjZUNvZGUsIGxvY2F0aW9uLmxpbmVO
dW1iZXIsIGxvY2F0aW9uLmNvbHVtbk51bWJlcik7CiAgICAgfSwKIAogICAgIHVpTG9jYXRpb25U
b1Jhd0xvY2F0aW9uOiBmdW5jdGlvbihsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCkBAIC0xMjAs
MTIgKzExOCw2IEBAIFdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgcmV0dXJuIGNsb3Nlc3RTY3JpcHQ7CiAgICAgfSwKIAotICAgIHJlcXVlc3RDb250ZW50
OiBmdW5jdGlvbihjYWxsYmFjaykKLSAgICB7Ci0gICAgICAgIC8vIEZJWE1FOiByZW1vdmUgdGhp
cy4KLSAgICAgICAgdGhpcy5fdWlTb3VyY2VDb2RlLnJlcXVlc3RDb250ZW50KGNhbGxiYWNrKTsK
LSAgICB9LAotCiAgICAgY3JlYXRlU291cmNlTWFwcGluZ0lmTmVlZGVkOiBmdW5jdGlvbihjYWxs
YmFjaykKICAgICB7CiAgICAgICAgIC8vIEZJWE1FOiByZW1vdmUgY3JlYXRlU291cmNlTWFwcGlu
Z0lmTmVlZGVkLCBjbGllbnQgc2hvdWxkIGxpc3RlbiB0byBTb3VyY2VNYXBwaW5nVXBkYXRlZCBl
dmVudCBpbnN0ZWFkLgpAQCAtMjAyLDkgKzE5NCw3IEBAIFdlYkluc3BlY3Rvci5SYXdTb3VyY2VD
b2RlLnByb3RvdHlwZSA9IHsKIAogICAgIF9zYXZlU291cmNlTWFwcGluZzogZnVuY3Rpb24oY29u
dGVudFByb3ZpZGVyLCBtYXBwaW5nKQogICAgIHsKLSAgICAgICAgdmFyIG9sZFVJU291cmNlQ29k
ZTsKLSAgICAgICAgaWYgKHRoaXMuX3VpU291cmNlQ29kZSkKLSAgICAgICAgICAgIG9sZFVJU291
cmNlQ29kZSA9IHRoaXM7CisgICAgICAgIHZhciBvbGRVSVNvdXJjZUNvZGUgPSB0aGlzLl91aVNv
dXJjZUNvZGU7CiAgICAgICAgIHZhciB1aVNvdXJjZUNvZGVJZCA9ICh0aGlzLl9mb3JtYXR0ZWQg
PyAiZGVvYmZ1c2NhdGVkOiIgOiAiIikgKyAodGhpcy5fc2NyaXB0c1swXS5zb3VyY2VVUkwgfHwg
dGhpcy5fc2NyaXB0c1swXS5zY3JpcHRJZCk7CiAgICAgICAgIHRoaXMuX3VpU291cmNlQ29kZSA9
IG5ldyBXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlKHVpU291cmNlQ29kZUlkLCB0aGlzLnVybCwg
dGhpcy5pc0NvbnRlbnRTY3JpcHQsIHRoaXMsIGNvbnRlbnRQcm92aWRlcik7CiAgICAgICAgIHRo
aXMuX21hcHBpbmcgPSBtYXBwaW5nOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106586</attachid>
            <date>2011-09-07 08:22:25 -0700</date>
            <delta_ts>2011-09-07 09:03:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-67647-20110907192222.patch</filename>
            <type>text/plain</type>
            <size>31768</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTQ1NzcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0NDBjZjM3ZmY3ZjJhMDg4OWI1MzU0
MWI3ZWYyZGYxZmM0NmIzMWVlLi44YTk1MjMxM2NjYzJkODgyNDczMDRiYWE1ZDA2ODE1MjcwNzc0
ODE3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTEtMDktMDYgIFBhdmVsIFBvZGl2aWxvdiAg
PHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogZG8gbm90
IHJlLWNyZWF0ZSBSYXdTb3VyY2VDb2RlIHdoZW4gdG9nZ2xpbmcgcHJldHR5LXByaW50IG1vZGUu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NzY0Nwor
CisgICAgICAgIDEpIEltcGxlbWVudCBSYXdTb3VyY2VDb2RlLnNldEZvcm1hdHRlZCB0aGF0IGFs
bG93cyB0b2dnbGluZyBwcmV0dHktcHJpbnQgbW9kZSBvbiB0aGUgZmx5IHdpdGhvdXQgcmVzZXR0
aW5nIGV2ZXJ5dGhpbmcuCisgICAgICAgIDIpIEFkZCBSYXdTb3VyY2VDb2RlIHVuaXQgdGVzdHMu
CisgICAgICAgIDMpIFJlbW92ZSBzb3VyY2UgbWFwcGluZyBsaXN0ZW5lcnMgYW5kIGNvbnNvbGUg
bWVzc2FnZXMgZnJvbSBwcmVzZW50YXRpb24gbW9kZWwgKHRoZXkgbGl2ZSBpbiBSYXdTb3VyY2VD
b2RlIG5vdykuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvcmF3LXNvdXJjZS1jb2RlLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL3Jhdy1zb3VyY2UtY29kZS5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0LWZvcm1hdHRlci5odG1s
OgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9zb3VyY2UtZmlsZS5odG1sOgorCiAyMDEx
LTA4LTMwICBQYXZlbCBQb2Rpdmlsb3YgIDxwb2Rpdmlsb3ZAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IGltcGxlbWVudCBzb3VyY2UgbWFwIHYzIGNvbnN1bWVyLgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3Jhdy1zb3VyY2UtY29kZS1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvcmF3LXNvdXJjZS1j
b2RlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZWMzOTIxYmE1OTY5MmUzYWExMjYwZjc1NmMy
MTUwNzAyODYwMjdlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Rl
YnVnZ2VyL3Jhdy1zb3VyY2UtY29kZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNyBAQAorVGVz
dHMgUmF3U291cmNlQ29kZSBjbGFzcy4KKworCitSdW5uaW5nOiB0ZXN0U2NyaXB0V2l0aG91dFJl
c291cmNlCisKK1J1bm5pbmc6IHRlc3RIVE1MV2l0aFBlbmRpbmdSZXNvdXJjZQorCitSdW5uaW5n
OiB0ZXN0SFRNTFdpdGhGaW5pc2hlZFJlc291cmNlCisKK1J1bm5pbmc6IHRlc3RDb250ZW50RWRp
dGVkCisKK1J1bm5pbmc6IHRlc3RGb3JjZVVwZGF0ZVNvdXJjZU1hcHBpbmcKKworUnVubmluZzog
dGVzdEZvcm1hdHRpbmdXaXRoRmluaXNoZWRSZXNvdXJjZQorCitSdW5uaW5nOiB0ZXN0Rm9ybWF0
dGluZ1dpdGhQZW5kaW5nUmVzb3VyY2UKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2RlYnVnZ2VyL3Jhdy1zb3VyY2UtY29kZS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2RlYnVnZ2VyL3Jhdy1zb3VyY2UtY29kZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjllM2IzZGU1NWViM2I0
NTI0YzliNGM0ZWQ4YWQ3NGRkNWQzYTczOGIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZGVidWdnZXIvcmF3LXNvdXJjZS1jb2RlLmh0bWwKQEAgLTAsMCArMSwzNDYg
QEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0
b3IvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0PgorCitmdW5jdGlvbiB0
ZXN0KCkKK3sKKyAgICBmdW5jdGlvbiBjcmVhdGVTY3JpcHRNb2NrKHVybCwgc3RhcnRMaW5lLCBz
dGFydENvbHVtbiwgaXNDb250ZW50U2NyaXB0LCBzb3VyY2UpCisgICAgeworICAgICAgICB2YXIg
bGluZUNvdW50ID0gc291cmNlLmxpbmVFbmRpbmdzKCkubGVuZ3RoOworICAgICAgICB2YXIgZW5k
TGluZSA9IHN0YXJ0TGluZSArIGxpbmVDb3VudCAtIDE7CisgICAgICAgIHZhciBlbmRDb2x1bW4g
PSBsaW5lQ291bnQgPT09IDEgPyBzdGFydENvbHVtbiArIHNvdXJjZS5sZW5ndGggOiBzb3VyY2Uu
bGVuZ3RoIC0gc291cmNlLmxpbmVFbmRpbmdzKClbbGluZUNvdW50IC0gMl07CisgICAgICAgIHZh
ciBzY3JpcHQgPSBuZXcgV2ViSW5zcGVjdG9yLlNjcmlwdChudWxsLCB1cmwsIHN0YXJ0TGluZSwg
c3RhcnRDb2x1bW4sIGVuZExpbmUsIGVuZENvbHVtbiwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIGlz
Q29udGVudFNjcmlwdCk7CisgICAgICAgIHNjcmlwdC5yZXF1ZXN0U291cmNlID0gZnVuY3Rpb24o
Y2FsbGJhY2spIHsgY2FsbGJhY2soc291cmNlKTsgfTsKKyAgICAgICAgcmV0dXJuIHNjcmlwdDsK
KyAgICB9CisKKyAgICBmdW5jdGlvbiBjcmVhdGVSZXNvdXJjZU1vY2sodHlwZSwgZmluaXNoZWQs
IGNvbnRlbnQpCisgICAgeworICAgICAgICB2YXIgcmVzb3VyY2UgPSB7fTsKKyAgICAgICAgcmVz
b3VyY2UudHlwZSA9IHR5cGUgPT09ICJkb2N1bWVudCIgPyBXZWJJbnNwZWN0b3IuUmVzb3VyY2Uu
VHlwZS5Eb2N1bWVudCA6IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLlNjcmlwdDsKKyAgICAg
ICAgcmVzb3VyY2UuZmluaXNoZWQgPSBmaW5pc2hlZDsKKyAgICAgICAgcmVzb3VyY2UuY29udGVu
dCA9IGNvbnRlbnQ7CisgICAgICAgIHJlc291cmNlLnJlcXVlc3RDb250ZW50ID0gZnVuY3Rpb24o
Y2FsbGJhY2spIHsgY2FsbGJhY2socmVzb3VyY2UuY29udGVudCk7IH07CisgICAgICAgIHJlc291
cmNlLmZpbmlzaCA9IGZ1bmN0aW9uKCkgeyByZXNvdXJjZS5maW5pc2hlZCA9IHRydWU7IHJlc291
cmNlLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycygiZmluaXNoZWQiKTsgfTsKKyAgICAgICAgcmVz
b3VyY2UuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGU7CisgICAgICAg
IHJldHVybiByZXNvdXJjZTsKKyAgICB9CisgICAgZnVuY3Rpb24gY3JlYXRlUGVuZGluZ1Jlc291
cmNlTW9jayh0eXBlLCBjb250ZW50KSB7IHJldHVybiBjcmVhdGVSZXNvdXJjZU1vY2sodHlwZSwg
ZmFsc2UsIGNvbnRlbnQpOyB9CisgICAgZnVuY3Rpb24gY3JlYXRlRmluaXNoZWRSZXNvdXJjZU1v
Y2sodHlwZSwgY29udGVudCkgeyByZXR1cm4gY3JlYXRlUmVzb3VyY2VNb2NrKHR5cGUsIHRydWUs
IGNvbnRlbnQpOyB9CisKKyAgICBmdW5jdGlvbiBjcmVhdGVTY3JpcHRGb3JtYXR0ZXJNb2NrKCkK
KyAgICB7CisgICAgICAgIHZhciBzb3VyY2VNYXBwaW5nID0geworICAgICAgICAgICAgb3JpZ2lu
YWxUb0Zvcm1hdHRlZDogZnVuY3Rpb24obG9jYXRpb24pCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgdmFyIGZvcm1hdHRlZExvY2F0aW9uID0ge307CisgICAgICAgICAgICAgICAgZm9y
bWF0dGVkTG9jYXRpb24ubGluZU51bWJlciA9IGxvY2F0aW9uLmxpbmVOdW1iZXIgKiAyOworICAg
ICAgICAgICAgICAgIGZvcm1hdHRlZExvY2F0aW9uLmNvbHVtbk51bWJlciA9IGxvY2F0aW9uLmNv
bHVtbk51bWJlciAqIDI7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZvcm1hdHRlZExvY2F0aW9u
OworICAgICAgICAgICAgfSwKKworICAgICAgICAgICAgZm9ybWF0dGVkVG9PcmlnaW5hbDogZnVu
Y3Rpb24obG9jYXRpb24pCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdmFyIG9yaWdp
bmFsTG9jYXRpb24gPSB7fTsKKyAgICAgICAgICAgICAgICBvcmlnaW5hbExvY2F0aW9uLmxpbmVO
dW1iZXIgPSBNYXRoLmZsb29yKGxvY2F0aW9uLmxpbmVOdW1iZXIgLyAyKTsKKyAgICAgICAgICAg
ICAgICBvcmlnaW5hbExvY2F0aW9uLmNvbHVtbk51bWJlciA9IE1hdGguZmxvb3IobG9jYXRpb24u
Y29sdW1uTnVtYmVyIC8gMik7CisgICAgICAgICAgICAgICAgcmV0dXJuIG9yaWdpbmFsTG9jYXRp
b247CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgICAgIHZhciBmb3JtYXR0ZXIgPSB7
CisgICAgICAgICAgICBmb3JtYXRDb250ZW50OiBmdW5jdGlvbihtaW1lVHlwZSwgY29udGVudCwg
Y2FsbGJhY2spIHsgZm9ybWF0dGVyLl9jYWxsYmFjayA9IGNhbGxiYWNrLmJpbmQobnVsbCwgIjxm
b3JtYXR0ZWQ+ICIgKyBjb250ZW50LCBzb3VyY2VNYXBwaW5nKTsgfSwKKyAgICAgICAgICAgIGZp
bmlzaDogZnVuY3Rpb24oKSB7IGZvcm1hdHRlci5fY2FsbGJhY2soKTsgfQorICAgICAgICB9Owor
ICAgICAgICByZXR1cm4gZm9ybWF0dGVyOworICAgICAgfTsKKworICAgIGZ1bmN0aW9uIGNyZWF0
ZVJhd1NvdXJjZUNvZGUoc2NyaXB0LCByZXNvdXJjZSwgZm9ybWF0dGVkKQorICAgIHsKKyAgICAg
ICAgdmFyIHJhd1NvdXJjZUNvZGUgPSBuZXcgV2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUoImlk
Iiwgc2NyaXB0LCByZXNvdXJjZSwgY3JlYXRlU2NyaXB0Rm9ybWF0dGVyTW9jaygpLCAhIWZvcm1h
dHRlZCk7CisgICAgICAgIHJhd1NvdXJjZUNvZGUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0
b3IuUmF3U291cmNlQ29kZS5FdmVudHMuU291cmNlTWFwcGluZ1VwZGF0ZWQsIGRlZmF1bHRTb3Vy
Y2VNYXBwaW5nVXBkYXRlZEhhbmRsZXIpOworICAgICAgICByZXR1cm4gcmF3U291cmNlQ29kZTsK
KyAgICB9CisKKyAgICBmdW5jdGlvbiB3YWl0Rm9yU291cmNlTWFwcGluZ0V2ZW50KHJhd1NvdXJj
ZUNvZGUsIGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgcmF3U291cmNlQ29kZS5yZW1vdmVFdmVu
dExpc3RlbmVyKFdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlLkV2ZW50cy5Tb3VyY2VNYXBwaW5n
VXBkYXRlZCwgZGVmYXVsdFNvdXJjZU1hcHBpbmdVcGRhdGVkSGFuZGxlcik7CisgICAgICAgIHJh
d1NvdXJjZUNvZGUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZS5F
dmVudHMuU291cmNlTWFwcGluZ1VwZGF0ZWQsIHNvdXJjZU1hcHBpbmdVcGRhdGVkKTsKKyAgICAg
ICAgZnVuY3Rpb24gc291cmNlTWFwcGluZ1VwZGF0ZWQoZXZlbnQpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHJhd1NvdXJjZUNvZGUucmVtb3ZlRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuUmF3
U291cmNlQ29kZS5FdmVudHMuU291cmNlTWFwcGluZ1VwZGF0ZWQsIHNvdXJjZU1hcHBpbmdVcGRh
dGVkKTsKKyAgICAgICAgICAgIHJhd1NvdXJjZUNvZGUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNw
ZWN0b3IuUmF3U291cmNlQ29kZS5FdmVudHMuU291cmNlTWFwcGluZ1VwZGF0ZWQsIGRlZmF1bHRT
b3VyY2VNYXBwaW5nVXBkYXRlZEhhbmRsZXIpOworICAgICAgICAgICAgY2FsbGJhY2soZXZlbnQp
OworICAgICAgICB9CisgICAgfQorCisgICAgZnVuY3Rpb24gZGVmYXVsdFNvdXJjZU1hcHBpbmdV
cGRhdGVkSGFuZGxlcigpCisgICAgeworICAgICAgICB0aHJvdyAiVW5leHBlY3RlZCBTb3VyY2VN
YXBwaW5nVXBkYXRlZCBldmVudC4iOworICAgIH0KKworICAgIEluc3BlY3RvclRlc3QucnVuVGVz
dFN1aXRlKFsKKyAgICAgICAgZnVuY3Rpb24gdGVzdFNjcmlwdFdpdGhvdXRSZXNvdXJjZShuZXh0
KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgc2NyaXB0ID0gY3JlYXRlU2NyaXB0TW9jaygi
Zm9vLmpzIiwgMCwgMCwgdHJ1ZSwgIjxzY3JpcHQgc291cmNlPiIpOworICAgICAgICAgICAgdmFy
IHJhd1NvdXJjZUNvZGUgPSBjcmVhdGVSYXdTb3VyY2VDb2RlKHNjcmlwdCwgbnVsbCk7CisKKyAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0VHJ1ZSghIXJhd1NvdXJjZUNvZGUudWlTb3Vy
Y2VDb2RlKTsKKyAgICAgICAgICAgIHZhciB1aVNvdXJjZUNvZGUgPSByYXdTb3VyY2VDb2RlLnVp
U291cmNlQ29kZTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKCJmb28u
anMiLCB1aVNvdXJjZUNvZGUudXJsKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0
RXF1YWxzKHRydWUsIHVpU291cmNlQ29kZS5pc0NvbnRlbnRTY3JpcHQpOworICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMocmF3U291cmNlQ29kZSwgdWlTb3VyY2VDb2RlLnJh
d1NvdXJjZUNvZGUpOworICAgICAgICAgICAgdWlTb3VyY2VDb2RlLnJlcXVlc3RDb250ZW50KGRp
ZFJlcXVlc3RDb250ZW50KTsKKworICAgICAgICAgICAgZnVuY3Rpb24gZGlkUmVxdWVzdENvbnRl
bnQobWltZVR5cGUsIGNvbnRlbnQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoInRleHQvamF2YXNjcmlwdCIsIG1pbWVUeXBlKTsKKyAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscygiPHNjcmlwdCBzb3VyY2U+
IiwgY29udGVudCk7CisgICAgICAgICAgICAgICAgbmV4dCgpOworICAgICAgICAgICAgfQorICAg
ICAgICB9LAorCisgICAgICAgIGZ1bmN0aW9uIHRlc3RIVE1MV2l0aFBlbmRpbmdSZXNvdXJjZShu
ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgc2NyaXB0MSA9IGNyZWF0ZVNjcmlwdE1v
Y2soImluZGV4Lmh0bWwiLCAwLCAxMCwgZmFsc2UsICI8c2NyaXB0IHNvdXJjZSAxPiIpOworICAg
ICAgICAgICAgdmFyIHNjcmlwdDIgPSBjcmVhdGVTY3JpcHRNb2NrKCJpbmRleC5odG1sIiwgMCwg
NDUsIGZhbHNlLCAiPHNjcmlwdCBzb3VyY2UgMj4iKTsKKyAgICAgICAgICAgIHZhciByZXNvdXJj
ZSA9IGNyZWF0ZVBlbmRpbmdSZXNvdXJjZU1vY2soImRvY3VtZW50IiwgIjxyZXNvdXJjZSBjb250
ZW50PiIpOworICAgICAgICAgICAgdmFyIHJhd1NvdXJjZUNvZGUgPSBjcmVhdGVSYXdTb3VyY2VD
b2RlKHNjcmlwdDEsIHJlc291cmNlKTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3Nl
cnRUcnVlKCFyYXdTb3VyY2VDb2RlLnVpU291cmNlQ29kZSk7CisgICAgICAgICAgICB3YWl0Rm9y
U291cmNlTWFwcGluZ0V2ZW50KHJhd1NvdXJjZUNvZGUsIG1hcHBpbmdSZWFkeSk7CisgICAgICAg
ICAgICByZXNvdXJjZS5maW5pc2goKTsKKworICAgICAgICAgICAgZnVuY3Rpb24gbWFwcGluZ1Jl
YWR5KGV2ZW50KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
YXNzZXJ0VHJ1ZSghZXZlbnQuZGF0YS5vbGRTb3VyY2VDb2RlKTsKKyAgICAgICAgICAgICAgICB2
YXIgdWlTb3VyY2VDb2RlID0gcmF3U291cmNlQ29kZS51aVNvdXJjZUNvZGU7CisgICAgICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoImluZGV4Lmh0bWwiLCB1aVNvdXJjZUNv
ZGUudXJsKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyhmYWxz
ZSwgdWlTb3VyY2VDb2RlLmlzQ29udGVudFNjcmlwdCk7CisgICAgICAgICAgICAgICAgdWlTb3Vy
Y2VDb2RlLnJlcXVlc3RDb250ZW50KGRpZFJlcXVlc3RDb250ZW50KTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgZnVuY3Rpb24gZGlkUmVxdWVzdENvbnRlbnQobWltZVR5cGUsIGNvbnRl
bnQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRF
cXVhbHMobWltZVR5cGUsICJ0ZXh0L2h0bWwiKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmFzc2VydEVxdWFscygiPHJlc291cmNlIGNvbnRlbnQ+IiwgY29udGVudCk7CisKKyAgICAg
ICAgICAgICAgICByYXdTb3VyY2VDb2RlLmFkZFNjcmlwdChzY3JpcHQyKTsKKyAgICAgICAgICAg
ICAgICByYXdTb3VyY2VDb2RlLmZvcmNlVXBkYXRlU291cmNlTWFwcGluZygpOworICAgICAgICAg
ICAgICAgIG5leHQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKworICAgICAgICBmdW5j
dGlvbiB0ZXN0SFRNTFdpdGhGaW5pc2hlZFJlc291cmNlKG5leHQpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHZhciBzY3JpcHQxID0gY3JlYXRlU2NyaXB0TW9jaygiaW5kZXguaHRtbCIsIDAsIDEw
LCBmYWxzZSwgIjxzY3JpcHQgc291cmNlIDE+Iik7CisgICAgICAgICAgICB2YXIgc2NyaXB0MiA9
IGNyZWF0ZVNjcmlwdE1vY2soImluZGV4Lmh0bWwiLCAwLCA0NSwgZmFsc2UsICI8c2NyaXB0IHNv
dXJjZSAyPiIpOworICAgICAgICAgICAgdmFyIHJlc291cmNlID0gY3JlYXRlRmluaXNoZWRSZXNv
dXJjZU1vY2soImRvY3VtZW50IiwgIjxyZXNvdXJjZSBjb250ZW50PiIpOworICAgICAgICAgICAg
dmFyIHJhd1NvdXJjZUNvZGUgPSBjcmVhdGVSYXdTb3VyY2VDb2RlKHNjcmlwdDEsIHJlc291cmNl
KTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRUcnVlKCEhcmF3U291cmNlQ29k
ZS51aVNvdXJjZUNvZGUpOworICAgICAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9IHJhd1NvdXJj
ZUNvZGUudWlTb3VyY2VDb2RlOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVh
bHMoImluZGV4Lmh0bWwiLCB1aVNvdXJjZUNvZGUudXJsKTsKKyAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuYXNzZXJ0RXF1YWxzKGZhbHNlLCB1aVNvdXJjZUNvZGUuaXNDb250ZW50U2NyaXB0KTsK
KyAgICAgICAgICAgIHVpU291cmNlQ29kZS5yZXF1ZXN0Q29udGVudChkaWRSZXF1ZXN0Q29udGVu
dCk7CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGRpZFJlcXVlc3RDb250ZW50KG1pbWVUeXBlLCBj
b250ZW50KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNz
ZXJ0RXF1YWxzKG1pbWVUeXBlLCAidGV4dC9odG1sIik7CisgICAgICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5hc3NlcnRFcXVhbHMoIjxyZXNvdXJjZSBjb250ZW50PiIsIGNvbnRlbnQpOworCisg
ICAgICAgICAgICAgICAgcmF3U291cmNlQ29kZS5hZGRTY3JpcHQoc2NyaXB0Mik7CisgICAgICAg
ICAgICAgICAgcmF3U291cmNlQ29kZS5mb3JjZVVwZGF0ZVNvdXJjZU1hcHBpbmcoKTsKKyAgICAg
ICAgICAgICAgICBuZXh0KCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0sCisKKyAgICAgICAg
ZnVuY3Rpb24gdGVzdENvbnRlbnRFZGl0ZWQobmV4dCkKKyAgICAgICAgeworICAgICAgICAgICAg
dmFyIHNjcmlwdCA9IGNyZWF0ZVNjcmlwdE1vY2soImZvby5qcyIsIDAsIDAsIHRydWUsICI8c2Ny
aXB0IHNvdXJjZT4iKTsKKyAgICAgICAgICAgIHZhciByZXNvdXJjZSA9IGNyZWF0ZUZpbmlzaGVk
UmVzb3VyY2VNb2NrKCJzY3JpcHQiLCAiPHJlc291cmNlIGNvbnRlbnQ+Iik7CisgICAgICAgICAg
ICB2YXIgcmF3U291cmNlQ29kZSA9IGNyZWF0ZVJhd1NvdXJjZUNvZGUoc2NyaXB0LCByZXNvdXJj
ZSk7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0VHJ1ZSghIXJhd1NvdXJjZUNv
ZGUudWlTb3VyY2VDb2RlKTsKKyAgICAgICAgICAgIHJhd1NvdXJjZUNvZGUudWlTb3VyY2VDb2Rl
LnJlcXVlc3RDb250ZW50KGRpZFJlcXVlc3RDb250ZW50KTsKKworICAgICAgICAgICAgZnVuY3Rp
b24gZGlkUmVxdWVzdENvbnRlbnQobWltZVR5cGUsIGNvbnRlbnQpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoInRleHQvamF2YXNjcmlw
dCIsIG1pbWVUeXBlKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFs
cygiPHJlc291cmNlIGNvbnRlbnQ+IiwgY29udGVudCk7CisKKyAgICAgICAgICAgICAgICB3YWl0
Rm9yU291cmNlTWFwcGluZ0V2ZW50KHJhd1NvdXJjZUNvZGUsIG1hcHBpbmdSZWFkeUFmdGVyRWRp
dCk7CisgICAgICAgICAgICAgICAgcmVzb3VyY2UuY29udGVudCA9ICI8ZWRpdGVkIHJlc291cmNl
IGNvbnRlbnQ+IjsKKyAgICAgICAgICAgICAgICByYXdTb3VyY2VDb2RlLmNvbnRlbnRFZGl0ZWQo
KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gbWFwcGluZ1JlYWR5QWZ0
ZXJFZGl0KCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByYXdTb3VyY2VDb2RlLnVp
U291cmNlQ29kZS5yZXF1ZXN0Q29udGVudChkaWRSZXF1ZXN0Q29udGVudEFmdGVyRWRpdCk7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGRpZFJlcXVlc3RDb250ZW50QWZ0
ZXJFZGl0KG1pbWVUeXBlLCBjb250ZW50KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKG1pbWVUeXBlLCAidGV4dC9qYXZhc2NyaXB0Iik7
CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoIjxlZGl0ZWQgcmVz
b3VyY2UgY29udGVudD4iLCBjb250ZW50KTsKKyAgICAgICAgICAgICAgICBuZXh0KCk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0sCisKKyAgICAgICAgZnVuY3Rpb24gdGVzdEZvcmNlVXBkYXRl
U291cmNlTWFwcGluZyhuZXh0KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgc2NyaXB0MSA9
IGNyZWF0ZVNjcmlwdE1vY2soImluZGV4Lmh0bWwiLCAwLCAxMCwgZmFsc2UsICI8c2NyaXB0IHNv
dXJjZSAxPiIpOworICAgICAgICAgICAgdmFyIHNjcmlwdDIgPSBjcmVhdGVTY3JpcHRNb2NrKCJp
bmRleC5odG1sIiwgMCwgNDUsIGZhbHNlLCAiPHNjcmlwdCBzb3VyY2UgMj4iKTsKKyAgICAgICAg
ICAgIHZhciBzY3JpcHQzID0gY3JlYXRlU2NyaXB0TW9jaygiaW5kZXguaHRtbCIsIDEsIDEwLCBm
YWxzZSwgIjxzY3JpcHQgc291cmNlIDM+Iik7CisgICAgICAgICAgICB2YXIgcmVzb3VyY2UgPSBj
cmVhdGVQZW5kaW5nUmVzb3VyY2VNb2NrKCJkb2N1bWVudCIsICI8cmVzb3VyY2UgY29udGVudD4i
KTsKKyAgICAgICAgICAgIHZhciByYXdTb3VyY2VDb2RlID0gY3JlYXRlUmF3U291cmNlQ29kZShz
Y3JpcHQxLCByZXNvdXJjZSk7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0VHJ1
ZSghcmF3U291cmNlQ29kZS51aVNvdXJjZUNvZGUpOworICAgICAgICAgICAgd2FpdEZvclNvdXJj
ZU1hcHBpbmdFdmVudChyYXdTb3VyY2VDb2RlLCByZXF1ZXN0Q29udGVudCk7CisgICAgICAgICAg
ICByYXdTb3VyY2VDb2RlLmZvcmNlVXBkYXRlU291cmNlTWFwcGluZygpOworCisgICAgICAgICAg
ICBmdW5jdGlvbiByZXF1ZXN0Q29udGVudCgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgcmF3U291cmNlQ29kZS51aVNvdXJjZUNvZGUucmVxdWVzdENvbnRlbnQoZGlkUmVxdWVzdENv
bnRlbnRPbmVTY3JpcHQpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBk
aWRSZXF1ZXN0Q29udGVudE9uZVNjcmlwdChtaW1lVHlwZSwgY29udGVudCkKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyhtaW1lVHlwZSwg
InRleHQvaHRtbCIpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxz
KCIgIDxzY3JpcHQ+PHNjcmlwdCBzb3VyY2UgMT48LyIgKyAic2NyaXB0PiIsIGNvbnRlbnQpOwor
CisgICAgICAgICAgICAgICAgcmF3U291cmNlQ29kZS5mb3JjZVVwZGF0ZVNvdXJjZU1hcHBpbmco
KTsKKyAgICAgICAgICAgICAgICByYXdTb3VyY2VDb2RlLmFkZFNjcmlwdChzY3JpcHQyKTsKKyAg
ICAgICAgICAgICAgICB3YWl0Rm9yU291cmNlTWFwcGluZ0V2ZW50KHJhd1NvdXJjZUNvZGUsIHJl
cXVlc3RDb250ZW50VHdvU2NyaXB0cyk7CisgICAgICAgICAgICAgICAgcmF3U291cmNlQ29kZS5m
b3JjZVVwZGF0ZVNvdXJjZU1hcHBpbmcoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
ZnVuY3Rpb24gcmVxdWVzdENvbnRlbnRUd29TY3JpcHRzKCkKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICByYXdTb3VyY2VDb2RlLnVpU291cmNlQ29kZS5yZXF1ZXN0Q29udGVudChkaWRS
ZXF1ZXN0Q29udGVudFR3b1NjcmlwdHMpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBm
dW5jdGlvbiBkaWRSZXF1ZXN0Q29udGVudFR3b1NjcmlwdHMobWltZVR5cGUsIGNvbnRlbnQpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMo
bWltZVR5cGUsICJ0ZXh0L2h0bWwiKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFz
c2VydEVxdWFscygiICA8c2NyaXB0PjxzY3JpcHQgc291cmNlIDE+PC8iICsgInNjcmlwdD4gPHNj
cmlwdD48c2NyaXB0IHNvdXJjZSAyPjwvIiArICJzY3JpcHQ+IiwgY29udGVudCk7CisKKyAgICAg
ICAgICAgICAgICByYXdTb3VyY2VDb2RlLmZvcmNlVXBkYXRlU291cmNlTWFwcGluZygpOworICAg
ICAgICAgICAgICAgIHdhaXRGb3JTb3VyY2VNYXBwaW5nRXZlbnQocmF3U291cmNlQ29kZSwgcmVx
dWVzdENvbnRlbnRSZXNvdXJjZSk7CisgICAgICAgICAgICAgICAgcmVzb3VyY2UuZmluaXNoKCk7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHJlcXVlc3RDb250ZW50UmVz
b3VyY2UoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJhd1NvdXJjZUNvZGUudWlT
b3VyY2VDb2RlLnJlcXVlc3RDb250ZW50KGRpZFJlcXVlc3RDb250ZW50UmVzb3VyY2UpOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBkaWRSZXF1ZXN0Q29udGVudFJlc291
cmNlKG1pbWVUeXBlLCBjb250ZW50KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKG1pbWVUeXBlLCAidGV4dC9odG1sIik7CisgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoIjxyZXNvdXJjZSBjb250ZW50PiIs
IGNvbnRlbnQpOworCisgICAgICAgICAgICAgICAgcmF3U291cmNlQ29kZS5hZGRTY3JpcHQoc2Ny
aXB0Myk7CisgICAgICAgICAgICAgICAgcmF3U291cmNlQ29kZS5mb3JjZVVwZGF0ZVNvdXJjZU1h
cHBpbmcoKTsKKworICAgICAgICAgICAgICAgIG5leHQoKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfSwKKworICAgICAgICBmdW5jdGlvbiB0ZXN0Rm9ybWF0dGluZ1dpdGhGaW5pc2hlZFJlc291
cmNlKG5leHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBzY3JpcHQgPSBjcmVhdGVTY3Jp
cHRNb2NrKCJmb28uanMiLCAwLCAwLCB0cnVlLCAiPHNjcmlwdCBzb3VyY2U+Iik7CisgICAgICAg
ICAgICB2YXIgcmVzb3VyY2UgPSBjcmVhdGVGaW5pc2hlZFJlc291cmNlTW9jaygic2NyaXB0Iiwg
IjxyZXNvdXJjZSBjb250ZW50PiIpOworICAgICAgICAgICAgdmFyIHJhd1NvdXJjZUNvZGUgPSBj
cmVhdGVSYXdTb3VyY2VDb2RlKHNjcmlwdCwgcmVzb3VyY2UsIGZhbHNlKTsKKworICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRUcnVlKCEhcmF3U291cmNlQ29kZS51aVNvdXJjZUNvZGUp
OworICAgICAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9IHJhd1NvdXJjZUNvZGUudWlTb3VyY2VD
b2RlOworICAgICAgICAgICAgdmFyIHVpTG9jYXRpb24gPSByYXdTb3VyY2VDb2RlLnJhd0xvY2F0
aW9uVG9VSUxvY2F0aW9uKHsgbGluZU51bWJlciA6IDEsIGNvbHVtbk51bWJlcjogMiB9KTsKKyAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKHVpU291cmNlQ29kZSwgdWlMb2Nh
dGlvbi51aVNvdXJjZUNvZGUpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVh
bHMoMSwgdWlMb2NhdGlvbi5saW5lTnVtYmVyKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
YXNzZXJ0RXF1YWxzKDIsIHVpTG9jYXRpb24uY29sdW1uTnVtYmVyKTsKKyAgICAgICAgICAgIHVp
U291cmNlQ29kZS5yZXF1ZXN0Q29udGVudChkaWRSZXF1ZXN0Q29udGVudCk7CisKKyAgICAgICAg
ICAgIGZ1bmN0aW9uIGRpZFJlcXVlc3RDb250ZW50KG1pbWVUeXBlLCBjb250ZW50KQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKCJ0ZXh0
L2phdmFzY3JpcHQiLCBtaW1lVHlwZSk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5h
c3NlcnRFcXVhbHMoIjxyZXNvdXJjZSBjb250ZW50PiIsIGNvbnRlbnQpOworCisgICAgICAgICAg
ICAgICAgcmF3U291cmNlQ29kZS5zZXRGb3JtYXR0ZWQodHJ1ZSk7CisgICAgICAgICAgICAgICAg
d2FpdEZvclNvdXJjZU1hcHBpbmdFdmVudChyYXdTb3VyY2VDb2RlLCByZXF1ZXN0Rm9ybWF0dGVk
Q29udGVudCk7CisgICAgICAgICAgICAgICAgcmF3U291cmNlQ29kZS5fZm9ybWF0dGVyLmZpbmlz
aCgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiByZXF1ZXN0Rm9ybWF0
dGVkQ29udGVudCgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdmFyIHVpU291cmNl
Q29kZSA9IHJhd1NvdXJjZUNvZGUudWlTb3VyY2VDb2RlOworICAgICAgICAgICAgICAgIHZhciB1
aUxvY2F0aW9uID0gcmF3U291cmNlQ29kZS5yYXdMb2NhdGlvblRvVUlMb2NhdGlvbih7IGxpbmVO
dW1iZXIgOiAxLCBjb2x1bW5OdW1iZXI6IDIgfSk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5hc3NlcnRFcXVhbHModWlTb3VyY2VDb2RlLCB1aUxvY2F0aW9uLnVpU291cmNlQ29kZSk7
CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoMiwgdWlMb2NhdGlv
bi5saW5lTnVtYmVyKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFs
cyg0LCB1aUxvY2F0aW9uLmNvbHVtbk51bWJlcik7CisgICAgICAgICAgICAgICAgdWlTb3VyY2VD
b2RlLnJlcXVlc3RDb250ZW50KGRpZFJlcXVlc3RGb3JtYXR0ZWRDb250ZW50KTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gZGlkUmVxdWVzdEZvcm1hdHRlZENvbnRlbnQo
bWltZVR5cGUsIGNvbnRlbnQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5hc3NlcnRFcXVhbHMobWltZVR5cGUsICJ0ZXh0L2phdmFzY3JpcHQiKTsKKyAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscygiPGZvcm1hdHRlZD4gPHJlc291
cmNlIGNvbnRlbnQ+IiwgY29udGVudCk7CisKKyAgICAgICAgICAgICAgICB3YWl0Rm9yU291cmNl
TWFwcGluZ0V2ZW50KHJhd1NvdXJjZUNvZGUsIHJlcXVlc3ROb3RGb3JtYXR0ZWRDb250ZW50KTsK
KyAgICAgICAgICAgICAgICByYXdTb3VyY2VDb2RlLnNldEZvcm1hdHRlZChmYWxzZSk7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHJlcXVlc3ROb3RGb3JtYXR0ZWRDb250
ZW50KCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0g
cmF3U291cmNlQ29kZS51aVNvdXJjZUNvZGU7CisgICAgICAgICAgICAgICAgdmFyIHVpTG9jYXRp
b24gPSByYXdTb3VyY2VDb2RlLnJhd0xvY2F0aW9uVG9VSUxvY2F0aW9uKHsgbGluZU51bWJlciA6
IDEsIGNvbHVtbk51bWJlcjogMiB9KTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFz
c2VydEVxdWFscyh1aVNvdXJjZUNvZGUsIHVpTG9jYXRpb24udWlTb3VyY2VDb2RlKTsKKyAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscygxLCB1aUxvY2F0aW9uLmxpbmVO
dW1iZXIpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKDIsIHVp
TG9jYXRpb24uY29sdW1uTnVtYmVyKTsKKyAgICAgICAgICAgICAgICB1aVNvdXJjZUNvZGUucmVx
dWVzdENvbnRlbnQoZGlkUmVxdWVzdE5vdEZvcm1hdHRlZENvbnRlbnQpOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBmdW5jdGlvbiBkaWRSZXF1ZXN0Tm90Rm9ybWF0dGVkQ29udGVudCht
aW1lVHlwZSwgY29udGVudCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmFzc2VydEVxdWFscygidGV4dC9qYXZhc2NyaXB0IiwgbWltZVR5cGUpOworICAgICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKCI8cmVzb3VyY2UgY29udGVudD4i
LCBjb250ZW50KTsKKworICAgICAgICAgICAgICAgIG5leHQoKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfSwKKworICAgICAgICBmdW5jdGlvbiB0ZXN0Rm9ybWF0dGluZ1dpdGhQZW5kaW5nUmVz
b3VyY2UobmV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHNjcmlwdCA9IGNyZWF0ZVNj
cmlwdE1vY2soImZvby5qcyIsIDAsIDAsIHRydWUsICI8c2NyaXB0IHNvdXJjZT4iKTsKKyAgICAg
ICAgICAgIHZhciByZXNvdXJjZSA9IGNyZWF0ZVBlbmRpbmdSZXNvdXJjZU1vY2soInNjcmlwdCIs
ICI8cmVzb3VyY2UgY29udGVudD4iKTsKKyAgICAgICAgICAgIHZhciByYXdTb3VyY2VDb2RlID0g
Y3JlYXRlUmF3U291cmNlQ29kZShzY3JpcHQsIHJlc291cmNlLCB0cnVlKTsKKworICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRUcnVlKCFyYXdTb3VyY2VDb2RlLnVpU291cmNlQ29kZSk7
CisgICAgICAgICAgICByZXNvdXJjZS5maW5pc2goKTsKKyAgICAgICAgICAgIHdhaXRGb3JTb3Vy
Y2VNYXBwaW5nRXZlbnQocmF3U291cmNlQ29kZSwgY2hlY2tNYXBwaW5nKTsKKyAgICAgICAgICAg
IHJhd1NvdXJjZUNvZGUuX2Zvcm1hdHRlci5maW5pc2goKTsKKworICAgICAgICAgICAgZnVuY3Rp
b24gY2hlY2tNYXBwaW5nKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB2YXIgdWlT
b3VyY2VDb2RlID0gcmF3U291cmNlQ29kZS51aVNvdXJjZUNvZGU7CisgICAgICAgICAgICAgICAg
dmFyIHVpTG9jYXRpb24gPSByYXdTb3VyY2VDb2RlLnJhd0xvY2F0aW9uVG9VSUxvY2F0aW9uKHsg
bGluZU51bWJlciA6IDEsIGNvbHVtbk51bWJlcjogMiB9KTsKKyAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmFzc2VydEVxdWFscyh1aVNvdXJjZUNvZGUsIHVpTG9jYXRpb24udWlTb3VyY2VD
b2RlKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscygyLCB1aUxv
Y2F0aW9uLmxpbmVOdW1iZXIpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0
RXF1YWxzKDQsIHVpTG9jYXRpb24uY29sdW1uTnVtYmVyKTsKKworICAgICAgICAgICAgICAgIG5l
eHQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIF0pOworfTsKKworPC9zY3JpcHQ+
CisKKzwvaGVhZD4KKworPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHA+VGVzdHMgUmF3U291
cmNlQ29kZSBjbGFzcy48L3A+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHQtZm9ybWF0dGVyLmh0bWwgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0LWZvcm1hdHRlci5odG1sCmluZGV4IGZmOTlm
NzQ0MzNmYTk2NjlhMzFjYTJiOTk4MzNkZjE3MWRiOGU3YTkuLjgwMzhmNTllMDYwYjM0NWUyZTM3
MmQ1ODE1Y2RlNDE5ZDNiYWI5YmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9k
ZWJ1Z2dlci9zY3JpcHQtZm9ybWF0dGVyLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2RlYnVnZ2VyL3NjcmlwdC1mb3JtYXR0ZXIuaHRtbApAQCAtMTg1LDcgKzE4NSw3IEBAIHZhciB0
ZXN0ID0gZnVuY3Rpb24oKQogICAgICAgICAgICAgZnVuY3Rpb24gZGlkRXZhbHVhdGUoKQogICAg
ICAgICAgICAgewogICAgICAgICAgICAgICAgIGR1bXBDb25zb2xlTWVzc2FnZVVSTHMoKTsKLSAg
ICAgICAgICAgICAgICBwYW5lbC5fcHJlc2VudGF0aW9uTW9kZWwuYWRkRXZlbnRMaXN0ZW5lcihX
ZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5FdmVudHMuVUlTb3VyY2VDb2Rl
QWRkZWQsICB1aVNvdXJjZUNvZGVSZXBsYWNlZCk7CisgICAgICAgICAgICAgICAgcGFuZWwuX3By
ZXNlbnRhdGlvbk1vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJl
c2VudGF0aW9uTW9kZWwuRXZlbnRzLlVJU291cmNlQ29kZVJlcGxhY2VkLCAgdWlTb3VyY2VDb2Rl
UmVwbGFjZWQpOwogICAgICAgICAgICAgICAgIHBhbmVsLl90b2dnbGVGb3JtYXRTb3VyY2UoKTsK
ICAgICAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVn
Z2VyL3NvdXJjZS1maWxlLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc291
cmNlLWZpbGUuaHRtbAppbmRleCA1MDU2YjA5NWVmY2M5Y2I2MjU5MGQzYmZmNmJjMDgyMTRkZTBk
ZjY0Li5jZTJiMzdjNzhiYjcyZTE1MjU5MjkzZmUyODExZmQ2MGRjMzY2Mzk2IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc291cmNlLWZpbGUuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc291cmNlLWZpbGUuaHRtbApAQCAtODEsNyAr
ODEsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgZnVuY3Rpb24gdGVzdEZvcm1hdHRlZENv
bnZlcnRMb2NhdGlvbihuZXh0KQogICAgICAgICB7CiAgICAgICAgICAgICB2YXIgc2NyaXB0ID0g
bmV3IFdlYkluc3BlY3Rvci5TY3JpcHQoIjEiLCAiZm9vLmpzIiwgMCwgMCwgMjAsIDgwLCB1bmRl
ZmluZWQsIHVuZGVmaW5lZCwgZmFsc2UpOwotICAgICAgICAgICAgdmFyIHJhd1NvdXJjZUNvZGUg
PSBuZXcgV2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUoImlkIiwgc2NyaXB0LCBtb2NrU2NyaXB0
Rm9ybWF0dGVyLCB0cnVlKTsKKyAgICAgICAgICAgIHZhciByYXdTb3VyY2VDb2RlID0gbmV3IFdl
Ykluc3BlY3Rvci5SYXdTb3VyY2VDb2RlKCJpZCIsIHNjcmlwdCwgbnVsbCwgbW9ja1NjcmlwdEZv
cm1hdHRlciwgdHJ1ZSk7CiAKICAgICAgICAgICAgIGZ1bmN0aW9uIGRpZENyZWF0ZVNvdXJjZU1h
cHBpbmcoKQogICAgICAgICAgICAgewpAQCAtOTYsNyArOTYsNyBAQCBmdW5jdGlvbiB0ZXN0KCkK
ICAgICAgICAgewogICAgICAgICAgICAgdmFyIHNjcmlwdDEgPSBuZXcgV2ViSW5zcGVjdG9yLlNj
cmlwdCgiMSIsICJmb28uanMiLCAxMCwgMjAsIDMwLCA0MCwgdW5kZWZpbmVkLCB1bmRlZmluZWQs
IGZhbHNlKTsKICAgICAgICAgICAgIHZhciBzY3JpcHQyID0gbmV3IFdlYkluc3BlY3Rvci5TY3Jp
cHQoIjIiLCAiZm9vLmpzIiwgNTAsIDYwLCA3MCwgODAsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBm
YWxzZSk7Ci0gICAgICAgICAgICB2YXIgcmF3U291cmNlQ29kZSA9IG5ldyBXZWJJbnNwZWN0b3Iu
UmF3U291cmNlQ29kZSgiaWQiLCBzY3JpcHQxLCBtb2NrU2NyaXB0Rm9ybWF0dGVyLCB0cnVlKTsK
KyAgICAgICAgICAgIHZhciByYXdTb3VyY2VDb2RlID0gbmV3IFdlYkluc3BlY3Rvci5SYXdTb3Vy
Y2VDb2RlKCJpZCIsIHNjcmlwdDEsIG51bGwsIG1vY2tTY3JpcHRGb3JtYXR0ZXIsIHRydWUpOwog
ICAgICAgICAgICAgcmF3U291cmNlQ29kZS5hZGRTY3JpcHQoc2NyaXB0Mik7CiAKICAgICAgICAg
ICAgIGZ1bmN0aW9uIGRpZENyZWF0ZVNvdXJjZU1hcHBpbmcoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDgyZmQ2
ZGMzZTBlMWZkYjA0NDZkNWJjNWQ3ODEwZDdjNmY0MDM1ZjAuLmI5ODVlMzRiNmUwZWVhZjRhZWFj
MDBjODlkMTE3N2Q2MDY5NmQzOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAxMS0w
OS0wNiAgUGF2ZWwgUG9kaXZpbG92ICA8cG9kaXZpbG92QGNocm9taXVtLm9yZz4KKworICAgICAg
ICBXZWIgSW5zcGVjdG9yOiBkbyBub3QgcmUtY3JlYXRlIFJhd1NvdXJjZUNvZGUgd2hlbiB0b2dn
bGluZyBwcmV0dHktcHJpbnQgbW9kZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTY3NjQ3CisKKyAgICAgICAgMSkgSW1wbGVtZW50IFJhd1NvdXJjZUNv
ZGUuc2V0Rm9ybWF0dGVkIHRoYXQgYWxsb3dzIHRvZ2dsaW5nIHByZXR0eS1wcmludCBtb2RlIG9u
IHRoZSBmbHkgd2l0aG91dCByZXNldHRpbmcgZXZlcnl0aGluZy4KKyAgICAgICAgMikgQWRkIFJh
d1NvdXJjZUNvZGUgdW5pdCB0ZXN0cy4KKyAgICAgICAgMykgUmVtb3ZlIHNvdXJjZSBtYXBwaW5n
IGxpc3RlbmVycyBhbmQgY29uc29sZSBtZXNzYWdlcyBmcm9tIHByZXNlbnRhdGlvbiBtb2RlbCAo
dGhleSBsaXZlIGluIFJhd1NvdXJjZUNvZGUgbm93KS4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBpbnNwZWN0b3IvZGVidWdnZXIvcmF3LXNv
dXJjZS1jb2RlLmh0bWwKKworICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJQ
cmVzZW50YXRpb25Nb2RlbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNl
bnRhdGlvbk1vZGVsKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlv
bk1vZGVsLnByb3RvdHlwZS5saW5raWZ5TG9jYXRpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBlLl9hZGRTY3JpcHQpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBlLl9zb3Vy
Y2VNYXBwaW5nVXBkYXRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50
YXRpb25Nb2RlbC5wcm90b3R5cGUuc2V0Rm9ybWF0U291cmNlKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZS5fY3JlYXRlUmF3U291cmNl
Q29kZUlkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVs
LnByb3RvdHlwZS5fZGVidWdnZXJSZXNldCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVu
ZC9TY3JpcHRzUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnBy
b3RvdHlwZS5fdG9nZ2xlRm9ybWF0U291cmNlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQt
ZW5kL1NvdXJjZUZpbGUuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZS5wcm90b3R5cGUuZ2V0IHVpU291
cmNlQ29kZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZS5wcm90b3R5cGUu
c2V0Rm9ybWF0dGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlLnByb3Rv
dHlwZS5yYXdMb2NhdGlvblRvVUlMb2NhdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmF3
U291cmNlQ29kZS5wcm90b3R5cGUuX3NhdmVTb3VyY2VNYXBwaW5nKToKKwogMjAxMS0wOC0zMCAg
UGF2ZWwgUG9kaXZpbG92ICA8cG9kaXZpbG92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIg
SW5zcGVjdG9yOiBpbXBsZW1lbnQgc291cmNlIG1hcCB2MyBjb25zdW1lci4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJQcmVzZW50YXRpb25N
b2RlbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJQcmVz
ZW50YXRpb25Nb2RlbC5qcwppbmRleCAxNzhkZTNjNWIxNjY2ZWI4ZGU1NjM1NTg1MTQ2MjkzZDI4
NDJmMDlhLi44YThlMWU2ODE4NDA2ZjExZjJkYzQ4NzZmOGQzMDM5ODU3YzkxNWFjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RlYnVnZ2VyUHJlc2VudGF0
aW9uTW9kZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1
Z2dlclByZXNlbnRhdGlvbk1vZGVsLmpzCkBAIC0zNyw4ICszNyw2IEBAIFdlYkluc3BlY3Rvci5E
ZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsID0gZnVuY3Rpb24oKQogICAgIHRoaXMuX2Zvcm1hdHRl
ciA9IG5ldyBXZWJJbnNwZWN0b3IuU2NyaXB0Rm9ybWF0dGVyKCk7CiAgICAgdGhpcy5fcmF3U291
cmNlQ29kZSA9IHt9OwogICAgIHRoaXMuX21lc3NhZ2VzID0gW107Ci0gICAgLy8gRklYTUU6IG1v
dmUgdGhpcyB0byBSYXdTb3VyY2VDb2RlIHdoZW4gaXQncyBub3QgcmUtY3JlYXRlZCBpbiBwcmV0
dHktcHJpbnQgbW9kZS4KLSAgICB0aGlzLl9zb3VyY2VNYXBwaW5nTGlzdGVuZXJzID0gW107CiAK
ICAgICB0aGlzLl9wcmVzZW50YXRpb25DYWxsRnJhbWVzID0gW107CiAgICAgdGhpcy5fc2VsZWN0
ZWRDYWxsRnJhbWVJbmRleCA9IDA7CkBAIC05OCwxNiArOTYsNiBAQCBXZWJJbnNwZWN0b3IuRGVi
dWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJhd1NvdXJjZUNv
ZGUuY3JlYXRlU291cmNlTWFwcGluZ0lmTmVlZGVkKGRpZENyZWF0ZVNvdXJjZU1hcHBpbmcpOwog
ICAgIH0sCiAKLSAgICBhZGRTb3VyY2VNYXBwaW5nTGlzdGVuZXI6IGZ1bmN0aW9uKHNvdXJjZVVS
TCwgc2NyaXB0SWQsIGxpc3RlbmVyKQotICAgIHsKLSAgICAgICAgdGhpcy5fc291cmNlTWFwcGlu
Z0xpc3RlbmVycy5wdXNoKGxpc3RlbmVyKTsKLSAgICB9LAotCi0gICAgcmVtb3ZlU291cmNlTWFw
cGluZ0xpc3RlbmVyOiBmdW5jdGlvbihzb3VyY2VVUkwsIHNjcmlwdElkLCBsaXN0ZW5lcikKLSAg
ICB7Ci0gICAgICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgdGhpcy4KLSAgICB9LAotCiAgICAgbGlu
a2lmeUxvY2F0aW9uOiBmdW5jdGlvbihzb3VyY2VVUkwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJl
ciwgY2xhc3NlcykKICAgICB7CiAgICAgICAgIHZhciBsaW5rVGV4dCA9IFdlYkluc3BlY3Rvci5m
b3JtYXRMaW5rVGV4dChzb3VyY2VVUkwsIGxpbmVOdW1iZXIpOwpAQCAtMTMyLDcgKzEyMCw3IEBA
IFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgICAgIHRoaXMuX3NjcmlwdExvY2F0aW9uVG9VSUxvY2F0aW9uKHNvdXJjZVVSTCwgbnVs
bCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBkaWRHZXRMb2NhdGlvbi5iaW5kKHRoaXMpKTsK
ICAgICAgICAgfQogICAgICAgICB1cGRhdGVBbmNob3IuY2FsbCh0aGlzKTsKLSAgICAgICAgdGhp
cy5hZGRTb3VyY2VNYXBwaW5nTGlzdGVuZXIoc291cmNlVVJMLCBudWxsLCB1cGRhdGVBbmNob3Iu
YmluZCh0aGlzKSk7CisgICAgICAgIHJhd1NvdXJjZUNvZGUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJ
bnNwZWN0b3IuUmF3U291cmNlQ29kZS5FdmVudHMuU291cmNlTWFwcGluZ1VwZGF0ZWQsIHVwZGF0
ZUFuY2hvciwgdGhpcyk7CiAgICAgICAgIHJldHVybiBhbmNob3I7CiAgICAgfSwKIApAQCAtMTU1
LDE4ICsxNDMsMjUgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwucHJv
dG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgcmF3
U291cmNlQ29kZSA9IG5ldyBXZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZShyYXdTb3VyY2VDb2Rl
SWQsIHNjcmlwdCwgdGhpcy5fZm9ybWF0dGVyLCB0aGlzLl9mb3JtYXRTb3VyY2UpOworICAgICAg
ICB2YXIgcmVzb3VyY2U7CisgICAgICAgIGlmIChzY3JpcHQuc291cmNlVVJMKQorICAgICAgICAg
ICAgcmVzb3VyY2UgPSBXZWJJbnNwZWN0b3IubmV0d29ya01hbmFnZXIuaW5mbGlnaHRSZXNvdXJj
ZUZvclVSTChzY3JpcHQuc291cmNlVVJMKSB8fCBXZWJJbnNwZWN0b3IucmVzb3VyY2VGb3JVUkwo
c2NyaXB0LnNvdXJjZVVSTCk7CisgICAgICAgIHJhd1NvdXJjZUNvZGUgPSBuZXcgV2ViSW5zcGVj
dG9yLlJhd1NvdXJjZUNvZGUocmF3U291cmNlQ29kZUlkLCBzY3JpcHQsIHJlc291cmNlLCB0aGlz
Ll9mb3JtYXR0ZXIsIHRoaXMuX2Zvcm1hdFNvdXJjZSk7CiAgICAgICAgIHRoaXMuX3Jhd1NvdXJj
ZUNvZGVbcmF3U291cmNlQ29kZUlkXSA9IHJhd1NvdXJjZUNvZGU7CisgICAgICAgIGlmIChyYXdT
b3VyY2VDb2RlLnVpU291cmNlQ29kZSkKKyAgICAgICAgICAgIHRoaXMuX3VwZGF0ZVNvdXJjZU1h
cHBpbmcocmF3U291cmNlQ29kZSwgbnVsbCk7CiAgICAgICAgIHJhd1NvdXJjZUNvZGUuYWRkRXZl
bnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZS5FdmVudHMuU291cmNlTWFwcGlu
Z1VwZGF0ZWQsIHRoaXMuX3NvdXJjZU1hcHBpbmdVcGRhdGVkLCB0aGlzKTsKICAgICB9LAogCiAg
ICAgX3NvdXJjZU1hcHBpbmdVcGRhdGVkOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fc291cmNlTWFwcGluZ0xpc3RlbmVycy5sZW5ndGg7
ICsraSkKLSAgICAgICAgICAgIHRoaXMuX3NvdXJjZU1hcHBpbmdMaXN0ZW5lcnNbaV0oKTsKLQog
ICAgICAgICB2YXIgcmF3U291cmNlQ29kZSA9IGV2ZW50LnRhcmdldDsKICAgICAgICAgdmFyIG9s
ZFVJU291cmNlQ29kZSA9IGV2ZW50LmRhdGEub2xkVUlTb3VyY2VDb2RlOworICAgICAgICB0aGlz
Ll91cGRhdGVTb3VyY2VNYXBwaW5nKHJhd1NvdXJjZUNvZGUsIG9sZFVJU291cmNlQ29kZSk7Cisg
ICAgfSwKKworICAgIF91cGRhdGVTb3VyY2VNYXBwaW5nOiBmdW5jdGlvbihyYXdTb3VyY2VDb2Rl
LCBvbGRVSVNvdXJjZUNvZGUpCisgICAgewogICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gcmF3
U291cmNlQ29kZS51aVNvdXJjZUNvZGU7CiAKICAgICAgICAgaWYgKCFvbGRVSVNvdXJjZUNvZGUp
CkBAIC0xODEsMTEgKzE3Niw3IEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1v
ZGVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHZhciBldmVudERhdGEgPSB7IHVpU291cmNl
Q29kZTogdWlTb3VyY2VDb2RlLCBvbGRVSVNvdXJjZUNvZGU6IG9sZFVJU291cmNlQ29kZSB9Owog
ICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkRl
YnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuRXZlbnRzLlVJU291cmNlQ29kZVJlcGxhY2VkLCBldmVu
dERhdGEpOwogICAgICAgICB9Ci0gICAgICAgIHRoaXMuX3Jlc3RvcmVCcmVha3BvaW50cyh1aVNv
dXJjZUNvZGUpOwotICAgIH0sCiAKLSAgICBfcmVzdG9yZUJyZWFrcG9pbnRzOiBmdW5jdGlvbih1
aVNvdXJjZUNvZGUpCi0gICAgewogICAgICAgICB0aGlzLl9icmVha3BvaW50TWFuYWdlci51aVNv
dXJjZUNvZGVBZGRlZCh1aVNvdXJjZUNvZGUpOwogICAgICAgICB2YXIgYnJlYWtwb2ludHMgPSB0
aGlzLl9icmVha3BvaW50TWFuYWdlci5icmVha3BvaW50c0ZvclVJU291cmNlQ29kZSh1aVNvdXJj
ZUNvZGUpOwogICAgICAgICBmb3IgKHZhciBsaW5lTnVtYmVyIGluIGJyZWFrcG9pbnRzKQpAQCAt
MjYyLDIzICsyNTMsMTcgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwu
cHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9mb3JtYXRTb3VyY2UgPSBmb3JtYXRTb3VyY2U7
CiAKICAgICAgICAgdGhpcy5fYnJlYWtwb2ludE1hbmFnZXIucmVzZXQoKTsKLSAgICAgICAgZm9y
ICh2YXIgaWQgaW4gdGhpcy5fcmF3U291cmNlQ29kZSkKLSAgICAgICAgICAgIHRoaXMuX3Jhd1Nv
dXJjZUNvZGVbaWRdLnJlbW92ZUV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNv
ZGUuRXZlbnRzLlNvdXJjZU1hcHBpbmdVcGRhdGVkLCB0aGlzLl9zb3VyY2VNYXBwaW5nVXBkYXRl
ZCwgdGhpcyk7Ci0gICAgICAgIHRoaXMuX3Jhd1NvdXJjZUNvZGUgPSB7fTsKLSAgICAgICAgdmFy
IG1lc3NhZ2VzID0gdGhpcy5fbWVzc2FnZXM7Ci0gICAgICAgIHRoaXMuX21lc3NhZ2VzID0gW107
CiAKLSAgICAgICAgdmFyIHNjcmlwdHMgPSBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5zY3Jp
cHRzOwotICAgICAgICBmb3IgKHZhciBpZCBpbiBzY3JpcHRzKQotICAgICAgICAgICAgdGhpcy5f
YWRkU2NyaXB0KHNjcmlwdHNbaWRdKTsKKyAgICAgICAgZm9yICh2YXIgaWQgaW4gdGhpcy5fcmF3
U291cmNlQ29kZSkgeworICAgICAgICAgICAgdGhpcy5fcmF3U291cmNlQ29kZVtpZF0ubWVzc2Fn
ZXMgPSBbXTsKKyAgICAgICAgICAgIHRoaXMuX3Jhd1NvdXJjZUNvZGVbaWRdLnNldEZvcm1hdHRl
ZCh0aGlzLl9mb3JtYXRTb3VyY2UpOworICAgICAgICB9CiAKKyAgICAgICAgdmFyIG1lc3NhZ2Vz
ID0gdGhpcy5fbWVzc2FnZXM7CisgICAgICAgIHRoaXMuX21lc3NhZ2VzID0gW107CiAgICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgbWVzc2FnZXMubGVuZ3RoOyArK2kpCiAgICAgICAgICAgICB0
aGlzLl9hZGRDb25zb2xlTWVzc2FnZShtZXNzYWdlc1tpXSk7CiAKLSAgICAgICAgLy8gRklYTUU6
IG1vdmUgdGhpcyB0byBSYXdTb3VyY2VDb2RlLgotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IHRoaXMuX3NvdXJjZU1hcHBpbmdMaXN0ZW5lcnMubGVuZ3RoOyArK2kpCi0gICAgICAgICAgICB0
aGlzLl9zb3VyY2VNYXBwaW5nTGlzdGVuZXJzW2ldKCk7Ci0KICAgICAgICAgaWYgKFdlYkluc3Bl
Y3Rvci5kZWJ1Z2dlck1vZGVsLmNhbGxGcmFtZXMpCiAgICAgICAgICAgICB0aGlzLl9kZWJ1Z2dl
clBhdXNlZCgpOwogICAgIH0sCkBAIC00NDYsMTUgKzQzMSwxMyBAQCBXZWJJbnNwZWN0b3IuRGVi
dWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUgPSB7CiAKICAgICBfY3JlYXRlUmF3U291
cmNlQ29kZUlkOiBmdW5jdGlvbihzb3VyY2VVUkwsIHNjcmlwdElkKQogICAgIHsKLSAgICAgICAg
dmFyIHByZWZpeCA9IHRoaXMuX2Zvcm1hdFNvdXJjZSA/ICJkZW9iZnVzY2F0ZWQ6IiA6ICIiOwot
ICAgICAgICByZXR1cm4gcHJlZml4ICsgKHNvdXJjZVVSTCB8fCBzY3JpcHRJZCk7CisgICAgICAg
IHJldHVybiBzb3VyY2VVUkwgfHwgc2NyaXB0SWQ7CiAgICAgfSwKIAogICAgIF9kZWJ1Z2dlclJl
c2V0OiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICB0aGlzLl9yYXdTb3VyY2VDb2RlID0ge307
CiAgICAgICAgIHRoaXMuX21lc3NhZ2VzID0gW107Ci0gICAgICAgIHRoaXMuX3NvdXJjZU1hcHBp
bmdMaXN0ZW5lcnMgPSBbXTsKICAgICAgICAgdGhpcy5fcHJlc2VudGF0aW9uQ2FsbEZyYW1lcyA9
IFtdOwogICAgICAgICB0aGlzLl9zZWxlY3RlZENhbGxGcmFtZUluZGV4ID0gMDsKICAgICAgICAg
dGhpcy5fYnJlYWtwb2ludE1hbmFnZXIuZGVidWdnZXJSZXNldCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanMgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qcwppbmRleCBiMzA3YWZm
Mjg0NGJhMTZkZDNhMjNkNzcyYTAxNWQyMDZjYzgxMmI1Li5jZDZkZDBiMWYwMmM1OTgyYjkzMDVk
YTMxMjRhZDQ0YjNjM2UxNzJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qcwpAQCAtMTEzMiw3ICsxMTMyLDYgQEAgV2ViSW5zcGVj
dG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUgPSB7CiAKICAgICBfdG9nZ2xlRm9ybWF0U291cmNl
OiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLnNjcmlwdHMu
cmVzZXQoKTsKICAgICAgICAgdGhpcy5fdG9nZ2xlRm9ybWF0U291cmNlQnV0dG9uLnRvZ2dsZWQg
PSAhdGhpcy5fdG9nZ2xlRm9ybWF0U291cmNlQnV0dG9uLnRvZ2dsZWQ7CiAgICAgICAgIHRoaXMu
X3ByZXNlbnRhdGlvbk1vZGVsLnNldEZvcm1hdFNvdXJjZSh0aGlzLl90b2dnbGVGb3JtYXRTb3Vy
Y2VCdXR0b24udG9nZ2xlZCk7CiAgICAgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvU291cmNlRmlsZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvU291cmNlRmlsZS5qcwppbmRleCAxMzZmYTAzNjhjZGM1ZTI3NWVhMDk4ZmRj
NjU1OWMzMmMxZTdiN2UwLi44NTA2NGYxYmI0MGIyYjdiYjMyOWYwZWJiN2Y5ZWRjNzliNWZlMjAz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NvdXJjZUZp
bGUuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VGaWxl
LmpzCkBAIC0zNSwxOCArMzUsMTUgQEAKICAqIEBjb25zdHJ1Y3RvcgogICogQGV4dGVuZHMge1dl
Ykluc3BlY3Rvci5PYmplY3R9CiAgKi8KLVdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlID0gZnVu
Y3Rpb24oaWQsIHNjcmlwdCwgZm9ybWF0dGVyLCBmb3JtYXR0ZWQpCitXZWJJbnNwZWN0b3IuUmF3
U291cmNlQ29kZSA9IGZ1bmN0aW9uKGlkLCBzY3JpcHQsIHJlc291cmNlLCBmb3JtYXR0ZXIsIGZv
cm1hdHRlZCkKIHsKLSAgICB0aGlzLl9zY3JpcHRzID0gW3NjcmlwdF07Ci0gICAgdGhpcy5fZm9y
bWF0dGVyID0gZm9ybWF0dGVyOwotICAgIHRoaXMuX2Zvcm1hdHRlZCA9IGZvcm1hdHRlZDsKLQot
ICAgIGlmIChzY3JpcHQuc291cmNlVVJMKQotICAgICAgICB0aGlzLl9yZXNvdXJjZSA9IFdlYklu
c3BlY3Rvci5uZXR3b3JrTWFuYWdlci5pbmZsaWdodFJlc291cmNlRm9yVVJMKHNjcmlwdC5zb3Vy
Y2VVUkwpIHx8IFdlYkluc3BlY3Rvci5yZXNvdXJjZUZvclVSTChzY3JpcHQuc291cmNlVVJMKTsK
LQogICAgIHRoaXMuaWQgPSBpZDsKICAgICB0aGlzLnVybCA9IHNjcmlwdC5zb3VyY2VVUkw7CiAg
ICAgdGhpcy5pc0NvbnRlbnRTY3JpcHQgPSBzY3JpcHQuaXNDb250ZW50U2NyaXB0OworICAgIHRo
aXMuX3NjcmlwdHMgPSBbc2NyaXB0XTsKKyAgICB0aGlzLl9mb3JtYXR0ZXIgPSBmb3JtYXR0ZXI7
CisgICAgdGhpcy5fZm9ybWF0dGVkID0gZm9ybWF0dGVkOworICAgIHRoaXMuX3Jlc291cmNlID0g
cmVzb3VyY2U7CiAgICAgdGhpcy5tZXNzYWdlcyA9IFtdOwogCiAgICAgdGhpcy5fdXNlVGVtcG9y
YXJ5Q29udGVudCA9IHRoaXMuX3Jlc291cmNlICYmICF0aGlzLl9yZXNvdXJjZS5maW5pc2hlZDsK
QEAgLTcwLDE0ICs2NywxNSBAQCBXZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZS5wcm90b3R5cGUg
PSB7CiAKICAgICBnZXQgdWlTb3VyY2VDb2RlKCkKICAgICB7Ci0gICAgICAgIC8vIEZJWE1FOiBl
eHRyYWN0IFVJU291cmNlQ29kZSBmcm9tIFJhd1NvdXJjZUNvZGUgKGN1cnJlbnRseSBSYXdTb3Vy
Y2VDb2RlIGltcGxlbWVudHMgbWV0aG9kcyBmcm9tIGJvdGggaW50ZXJmYWNlcykuCi0gICAgICAg
IHJldHVybiB0aGlzOworICAgICAgICByZXR1cm4gdGhpcy5fdWlTb3VyY2VDb2RlOwogICAgIH0s
CiAKLSAgICBnZXQgcmF3U291cmNlQ29kZSgpCisgICAgc2V0Rm9ybWF0dGVkOiBmdW5jdGlvbihm
b3JtYXR0ZWQpCiAgICAgewotICAgICAgICAvLyBGSVhNRTogZXh0cmFjdCBVSVNvdXJjZUNvZGUg
ZnJvbSBSYXdTb3VyY2VDb2RlIChjdXJyZW50bHkgUmF3U291cmNlQ29kZSBpbXBsZW1lbnRzIG1l
dGhvZHMgZnJvbSBib3RoIGludGVyZmFjZXMpLgotICAgICAgICByZXR1cm4gdGhpczsKKyAgICAg
ICAgaWYgKHRoaXMuX2Zvcm1hdHRlZCA9PT0gZm9ybWF0dGVkKQorICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB0aGlzLl9mb3JtYXR0ZWQgPSBmb3JtYXR0ZWQ7CisgICAgICAgIHRoaXMuX3Vw
ZGF0ZVNvdXJjZU1hcHBpbmcoKTsKICAgICB9LAogCiAgICAgY29udGVudEVkaXRlZDogZnVuY3Rp
b24oKQpAQCAtOTQsNyArOTIsNyBAQCBXZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZS5wcm90b3R5
cGUgPSB7CiAgICAgcmF3TG9jYXRpb25Ub1VJTG9jYXRpb246IGZ1bmN0aW9uKHJhd0xvY2F0aW9u
KQogICAgIHsKICAgICAgICAgdmFyIGxvY2F0aW9uID0gdGhpcy5fbWFwcGluZyA/IHRoaXMuX21h
cHBpbmcub3JpZ2luYWxUb0Zvcm1hdHRlZChyYXdMb2NhdGlvbikgOiByYXdMb2NhdGlvbjsKLSAg
ICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuVUlMb2NhdGlvbih0aGlzLCBsb2NhdGlvbi5s
aW5lTnVtYmVyLCBsb2NhdGlvbi5jb2x1bW5OdW1iZXIpOworICAgICAgICByZXR1cm4gbmV3IFdl
Ykluc3BlY3Rvci5VSUxvY2F0aW9uKHRoaXMudWlTb3VyY2VDb2RlLCBsb2NhdGlvbi5saW5lTnVt
YmVyLCBsb2NhdGlvbi5jb2x1bW5OdW1iZXIpOwogICAgIH0sCiAKICAgICB1aUxvY2F0aW9uVG9S
YXdMb2NhdGlvbjogZnVuY3Rpb24obGluZU51bWJlciwgY29sdW1uTnVtYmVyKQpAQCAtMTIwLDEy
ICsxMTgsNiBAQCBXZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZS5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIHJldHVybiBjbG9zZXN0U2NyaXB0OwogICAgIH0sCiAKLSAgICByZXF1ZXN0Q29udGVudDog
ZnVuY3Rpb24oY2FsbGJhY2spCi0gICAgewotICAgICAgICAvLyBGSVhNRTogcmVtb3ZlIHRoaXMu
Ci0gICAgICAgIHRoaXMuX3VpU291cmNlQ29kZS5yZXF1ZXN0Q29udGVudChjYWxsYmFjayk7Ci0g
ICAgfSwKLQogICAgIGNyZWF0ZVNvdXJjZU1hcHBpbmdJZk5lZWRlZDogZnVuY3Rpb24oY2FsbGJh
Y2spCiAgICAgewogICAgICAgICAvLyBGSVhNRTogcmVtb3ZlIGNyZWF0ZVNvdXJjZU1hcHBpbmdJ
Zk5lZWRlZCwgY2xpZW50IHNob3VsZCBsaXN0ZW4gdG8gU291cmNlTWFwcGluZ1VwZGF0ZWQgZXZl
bnQgaW5zdGVhZC4KQEAgLTE4NCw3ICsxNzYsNyBAQCBXZWJJbnNwZWN0b3IuUmF3U291cmNlQ29k
ZS5wcm90b3R5cGUgPSB7CiAgICAgX2NyZWF0ZVNvdXJjZU1hcHBpbmc6IGZ1bmN0aW9uKG9yaWdp
bmFsQ29udGVudFByb3ZpZGVyLCBjYWxsYmFjaykKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5f
Zm9ybWF0dGVkKSB7Ci0gICAgICAgICAgICBzZXRUaW1lb3V0KGNhbGxiYWNrLmJpbmQobnVsbCwg
b3JpZ2luYWxDb250ZW50UHJvdmlkZXIsIG51bGwpLCAwKTsKKyAgICAgICAgICAgIGNhbGxiYWNr
KG9yaWdpbmFsQ29udGVudFByb3ZpZGVyLCBudWxsKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogCkBAIC0yMDIsOSArMTk0LDcgQEAgV2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUu
cHJvdG90eXBlID0gewogCiAgICAgX3NhdmVTb3VyY2VNYXBwaW5nOiBmdW5jdGlvbihjb250ZW50
UHJvdmlkZXIsIG1hcHBpbmcpCiAgICAgewotICAgICAgICB2YXIgb2xkVUlTb3VyY2VDb2RlOwot
ICAgICAgICBpZiAodGhpcy5fdWlTb3VyY2VDb2RlKQotICAgICAgICAgICAgb2xkVUlTb3VyY2VD
b2RlID0gdGhpczsKKyAgICAgICAgdmFyIG9sZFVJU291cmNlQ29kZSA9IHRoaXMuX3VpU291cmNl
Q29kZTsKICAgICAgICAgdmFyIHVpU291cmNlQ29kZUlkID0gKHRoaXMuX2Zvcm1hdHRlZCA/ICJk
ZW9iZnVzY2F0ZWQ6IiA6ICIiKSArICh0aGlzLl9zY3JpcHRzWzBdLnNvdXJjZVVSTCB8fCB0aGlz
Ll9zY3JpcHRzWzBdLnNjcmlwdElkKTsKICAgICAgICAgdGhpcy5fdWlTb3VyY2VDb2RlID0gbmV3
IFdlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGUodWlTb3VyY2VDb2RlSWQsIHRoaXMudXJsLCB0aGlz
LmlzQ29udGVudFNjcmlwdCwgdGhpcywgY29udGVudFByb3ZpZGVyKTsKICAgICAgICAgdGhpcy5f
bWFwcGluZyA9IG1hcHBpbmc7Cg==
</data>
<flag name="review"
          id="103049"
          type_id="1"
          status="+"
          setter="yurys"
    />
          </attachment>
      

    </bug>

</bugzilla>