<?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>69146</bug_id>
          
          <creation_ts>2011-09-30 06:55:27 -0700</creation_ts>
          <short_desc>Web Inspector: debuggerPresentatioModel.linkifyLocation leaks updateAnchor closure instances.</short_desc>
          <delta_ts>2011-10-05 04:40:17 -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>69268</dependson>
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Ilya Tikhonovsky">loislo</reporter>
          <assigned_to name="Ilya Tikhonovsky">loislo</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>dglazkov</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</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>476068</commentid>
    <comment_count>0</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2011-09-30 06:55:27 -0700</bug_when>
    <thetext>In many places we use linkifyLocation function to produce a link node which will updates automatically when the source file was changed on the fly.
Such changes happen when we use pretty print or another operation that changes the source code somehow.

linkifyLocation associates a new instance of updateAnchor closure with the each link node and add the closure to the SourceMappingUpdated event&apos;s list.

As result the node&lt;-&gt;closure pairs wouldn&apos;t be collected until reset the UI and DebuggerPresentationModel</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>476534</commentid>
    <comment_count>1</comment_count>
      <attachid>109396</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2011-09-30 22:30:01 -0700</bug_when>
    <thetext>Created attachment 109396
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>476535</commentid>
    <comment_count>2</comment_count>
      <attachid>109396</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-09-30 22:35:43 -0700</bug_when>
    <thetext>Comment on attachment 109396
Patch

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

&gt; Source/WebCore/inspector/front-end/TimelinePanel.js:1181
&gt; +        return WebInspector.debuggerPresentationModel.linkifyLocation(WebInspector.TimelinePanel.linkedNodesOwnerName, url, lineNumber, columnNumber, &quot;timeline-details&quot;);

I would form it a bit differently to improve readability.

I would introduce DebuggerPresentationModel.Linkifier and do this:

this._linkifier = DebuggerPresentationModel.createLinkifier();
this._linkifier.linkifyLocation(url, lineNumber, ...)
this._linkifier.reset() (or delete this._linkifier);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>476536</commentid>
    <comment_count>3</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2011-09-30 22:46:56 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 109396 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=109396&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/TimelinePanel.js:1181
&gt; &gt; +        return WebInspector.debuggerPresentationModel.linkifyLocation(WebInspector.TimelinePanel.linkedNodesOwnerName, url, lineNumber, columnNumber, &quot;timeline-details&quot;);
&gt; 
&gt; I would form it a bit differently to improve readability.
&gt; 
&gt; I would introduce DebuggerPresentationModel.Linkifier and do this:
&gt; 
&gt; this._linkifier = DebuggerPresentationModel.createLinkifier();
&gt; this._linkifier.linkifyLocation(url, lineNumber, ...)
&gt; this._linkifier.reset() (or delete this._linkifier);

Panel:
WebInspector.TimelinePanel.linkifier = DebuggerPresentationModel.createLinkifier();

lalalalNode:
WebInspector.TimelinePanel.linkifier.linkifyLocation(url, lineNumber, ...)

panel.reset:
WebInspector.TimelinePanel.linkifier.reset() (or delete this._linkifier);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>476537</commentid>
    <comment_count>4</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-09-30 22:48:39 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (In reply to comment #2)
&gt; &gt; (From update of attachment 109396 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=109396&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/inspector/front-end/TimelinePanel.js:1181
&gt; &gt; &gt; +        return WebInspector.debuggerPresentationModel.linkifyLocation(WebInspector.TimelinePanel.linkedNodesOwnerName, url, lineNumber, columnNumber, &quot;timeline-details&quot;);
&gt; &gt; 
&gt; &gt; I would form it a bit differently to improve readability.
&gt; &gt; 
&gt; &gt; I would introduce DebuggerPresentationModel.Linkifier and do this:
&gt; &gt; 
&gt; &gt; this._linkifier = DebuggerPresentationModel.createLinkifier();
&gt; &gt; this._linkifier.linkifyLocation(url, lineNumber, ...)
&gt; &gt; this._linkifier.reset() (or delete this._linkifier);
&gt; 
&gt; Panel:
&gt; WebInspector.TimelinePanel.linkifier = DebuggerPresentationModel.createLinkifier();

you&apos;ll need to create this on instance of dpm. I would do WebInspector.debuggerPresentationModel.createLinkifier from within TimelinePanel constructor.


&gt; 


&gt; lalalalNode:
&gt; WebInspector.TimelinePanel.linkifier.linkifyLocation(url, lineNumber, ...)

should be defined on instance (this._linkifier ...)
&gt; 
&gt; panel.reset:
&gt; WebInspector.TimelinePanel.linkifier.reset() (or delete this._linkifier);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>476687</commentid>
    <comment_count>5</comment_count>
      <attachid>109396</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-10-02 10:21:26 -0700</bug_when>
    <thetext>Comment on attachment 109396
Patch

r- as per comments in the bug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>476858</commentid>
    <comment_count>6</comment_count>
      <attachid>109457</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2011-10-03 02:50:28 -0700</bug_when>
    <thetext>Created attachment 109457
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>476862</commentid>
    <comment_count>7</comment_count>
      <attachid>109457</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-03 03:11:19 -0700</bug_when>
    <thetext>Comment on attachment 109457
Patch

Attachment 109457 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/9937004

New failing tests:
http/tests/inspector/network/network-disabling-check-no-memory-leak.html
http/tests/inspector/console-xhr-logging.html
http/tests/inspector/network/network-cachedresources-with-same-urls.html
http/tests/inspector/console-cd.html
http/tests/inspector/network/network-disable-cache-memory.html
http/tests/inspector/resource-har-headers.html
http/tests/inspector/network/network-disable-cache-xhrs.html
http/tests/inspector/network/download.html
http/tests/inspector-enabled/console-clear-arguments-on-frame-remove.html
http/tests/inspector/inspect-iframe-from-different-domain.html
http/tests/inspector-enabled/console-log-before-frame-navigation.html
http/tests/inspector/network-preflight-options.html
http/tests/inspector/network/network-content-replacement-xhr.html
http/tests/inspector/console-cd-completions.html
http/tests/inspector-enabled/dom-storage-open.html
http/tests/inspector/resource-har-conversion.html
http/tests/inspector/console-resource-errors.html
http/tests/inspector/resource-parameters.html
http/tests/inspector-enabled/database-open.html
http/tests/inspector/change-iframe-src.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>476928</commentid>
    <comment_count>8</comment_count>
      <attachid>109477</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2011-10-03 05:58:06 -0700</bug_when>
    <thetext>Created attachment 109477
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>476931</commentid>
    <comment_count>9</comment_count>
      <attachid>109477</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-10-03 06:03:51 -0700</bug_when>
    <thetext>Comment on attachment 109477
Patch

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

&gt; Source/WebCore/WebCore.gypi:6237
&gt; +            &apos;inspector/front-end/Linkifier.js&apos;,

Do not forget about .vcproj!

&gt; Source/WebCore/inspector/front-end/EventListenersSidebarPane.js:59
&gt; +    WebInspector.EventListenersSidebarPane._linkifier = new WebInspector.Linkifier();

you should install these on instance. Installing on class in constructor does not make sense - it leaks linkifier anyways.

&gt; Source/WebCore/inspector/front-end/Linkifier.js:46
&gt; +        var rawSourceCode = WebInspector.debuggerPresentationModel._rawSourceCodeForScript(sourceURL);

Extracting linkifier in its own class does not remote dependency from the DPM. Not sure what you were trying to achieve here.

&gt; Source/WebCore/inspector/front-end/ProfileDataGridTree.js:101
&gt; +            var urlElement = WebInspector.ProfilesPanel.linkifier.linkifyLocation(this.profileNode.url, lineNumber, 0, &quot;profile-node-file&quot;);

Why not to create linkifier on the tree instead?

&gt; Source/WebCore/inspector/front-end/TimelinePanel.js:112
&gt; +    WebInspector.TimelinePanel._linkifier = new WebInspector.Linkifier();

ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>476966</commentid>
    <comment_count>10</comment_count>
      <attachid>109483</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2011-10-03 07:46:18 -0700</bug_when>
    <thetext>Created attachment 109483
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>476969</commentid>
    <comment_count>11</comment_count>
      <attachid>109483</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-10-03 07:52:22 -0700</bug_when>
    <thetext>Comment on attachment 109483
Patch

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

&gt; Source/WebCore/inspector/front-end/Linkifier.js:36
&gt; +    this._model = model;

_model -&gt; _debuggerPresentationModel, alternatively you may add corresponding type annotation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>476974</commentid>
    <comment_count>12</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2011-10-03 08:06:09 -0700</bug_when>
    <thetext>Committed r96500: &lt;http://trac.webkit.org/changeset/96500&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477631</commentid>
    <comment_count>13</comment_count>
      <attachid>109628</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2011-10-04 09:10:34 -0700</bug_when>
    <thetext>Created attachment 109628
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477642</commentid>
    <comment_count>14</comment_count>
      <attachid>109628</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-10-04 09:27:37 -0700</bug_when>
    <thetext>Comment on attachment 109628
Patch

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

&gt; LayoutTests/inspector/console/console-preserve-log.html:8
&gt; +    WebInspector.console.addMessage(WebInspector.consoleView.createTextMessage(&quot;PASS&quot;));

You should always use factory method when creating messages.

&gt; LayoutTests/inspector/debugger/linkifier.html:37
&gt; +        DummyPresentationModel.prototype = {

Something is wrong with indentation.

&gt; Source/WebCore/inspector/front-end/ConsoleMessage.js:37
&gt; + * @param {WebInspector.DebuggerPresentationModel.Linkifier=} linkifier

move this parameter to after &quot;message&quot;, make it non-optional

&gt; Source/WebCore/inspector/front-end/ConsoleModel.js:126
&gt; +            var msgCopy = WebInspector.consoleView.createMessage(msg.source, msg.type, msg.level, msg.line, msg.url, count - prevRepeatCount, msg._messageText, msg._parameters, msg._stackTrace, msg._request);

ditto

&gt; Source/WebCore/inspector/front-end/ConsoleModel.js:177
&gt; +WebInspector.ConsoleMessage.create = function(source, type, level, line, url, repeatCount, message, parameters, stackTrace, request, linkifier)

These should not have linkifier parameter.

&gt; Source/WebCore/inspector/front-end/ConsoleModel.js:187
&gt; +WebInspector.ConsoleMessage.createTextMessage = function(text, level, linkifier)

ditto

&gt; Source/WebCore/inspector/front-end/ConsoleView.js:123
&gt; +    createMessage: function(source, type, level, line, url, repeatCount, message, parameters, stackTrace, request)

WebInspector.ConsoleMessage.create should be defined in the bottom of this class. You will add WebInspector.consoleView.linkifier() into each of the created ConsoleMessageImpls.

&gt; Source/WebCore/inspector/front-end/ConsoleView.js:129
&gt; +    {

createTextMessage

&gt; Source/WebCore/inspector/front-end/DebuggerPresentationModel.js:404
&gt; +    rawSourceCodeForScriptWithURL: function(sourceURL)

This can&apos;t be exposed.

&gt; Source/WebCore/inspector/front-end/ExtensionServer.js:333
&gt; +        var consoleMessage = WebInspector.consoleView.createMessage(

ditto

&gt; Source/WebCore/inspector/front-end/NetworkManager.js:-130
&gt; -            WebInspector.console.addMessage(WebInspector.ConsoleMessage.create(WebInspector.ConsoleMessage.MessageSource.Other,

ditt

&gt; Source/WebCore/inspector/front-end/ProfileView.js:490
&gt; +        this._linkiier.reset();

This should not work!

&gt; Source/WebCore/inspector/front-end/inspector.js:1012
&gt; +        var msg = WebInspector.consoleView.createMessage(

ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477666</commentid>
    <comment_count>15</comment_count>
      <attachid>109634</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2011-10-04 10:03:33 -0700</bug_when>
    <thetext>Created attachment 109634
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477680</commentid>
    <comment_count>16</comment_count>
      <attachid>109634</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-10-04 10:15:21 -0700</bug_when>
    <thetext>Comment on attachment 109634
Patch

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

&gt; LayoutTests/inspector/debugger/linkifier.html:49
&gt; +        console.log(&quot;--- linkify fakeURL-1 first time ---&quot;);

console.log -&gt; InspectorTest.addResult

&gt; Source/WebCore/inspector/front-end/ConsoleView.js:701
&gt; +    WebInspector.ConsoleCommandResult = function(result, wasThrown, originatingCommand, linkifier)

Weird indent</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477690</commentid>
    <comment_count>17</comment_count>
      <attachid>109634</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2011-10-04 10:21:47 -0700</bug_when>
    <thetext>Comment on attachment 109634
Patch

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

&gt;&gt; Source/WebCore/inspector/front-end/ConsoleView.js:701
&gt;&gt; +    WebInspector.ConsoleCommandResult = function(result, wasThrown, originatingCommand, linkifier)
&gt; 
&gt; Weird indent

it was tab</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477692</commentid>
    <comment_count>18</comment_count>
      <attachid>109639</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2011-10-04 10:23:41 -0700</bug_when>
    <thetext>Created attachment 109639
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477705</commentid>
    <comment_count>19</comment_count>
      <attachid>109634</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-10-04 10:37:11 -0700</bug_when>
    <thetext>Comment on attachment 109634
Patch

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

Looks good.

&gt; Source/WebCore/inspector/front-end/DebuggerPresentationModel.js:565
&gt; +    this._anchorsForURL = {};

We should be able to linkify console messages for anonymous scripts as well. Could you store anchors by rawSourceCode.id instead so we can easily support anonymous scripts?

&gt; Source/WebCore/inspector/front-end/DebuggerPresentationModel.js:609
&gt; +        if (!anchors)

How could this happen?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>478180</commentid>
    <comment_count>20</comment_count>
      <attachid>109639</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-10-04 23:51:58 -0700</bug_when>
    <thetext>Comment on attachment 109639
Patch

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

Overall looks good. Could you update it and let Pavel P. take a look?

&gt; LayoutTests/inspector/debugger/linkifier.html:21
&gt; +        DummyPresentationModel = function()

You should define classes according the the style guidelines.

&gt; LayoutTests/inspector/debugger/linkifier.html:25
&gt; +                this.addEventListener = function(eventName, callback, object)

ditto

&gt; LayoutTests/inspector/debugger/linkifier.html:37
&gt; +        DummyPresentationModel.prototype = {

ditto

&gt; Source/WebCore/inspector/front-end/ConsoleView.js:701
&gt; +    WebInspector.ConsoleCommandResult = function(result, wasThrown, originatingCommand, linkifier)

Weird space added. It is clear that it has been added, not removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>478227</commentid>
    <comment_count>21</comment_count>
      <attachid>109763</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2011-10-05 01:45:48 -0700</bug_when>
    <thetext>Created attachment 109763
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>478232</commentid>
    <comment_count>22</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2011-10-05 01:59:06 -0700</bug_when>
    <thetext>the landed patch was rolled out.
reopen the bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>478235</commentid>
    <comment_count>23</comment_count>
      <attachid>109763</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-10-05 02:09:33 -0700</bug_when>
    <thetext>Comment on attachment 109763
Patch

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

Looks good.

&gt; Source/WebCore/inspector/front-end/DebuggerPresentationModel.js:565
&gt; +    this._anchorsForScriptId = {};

Please rename to anchorsForRawSourceCode or anchorsForRawSourceCodeId, because rawSourceCode.id is not a scriptId.

&gt; Source/WebCore/inspector/front-end/DebuggerPresentationModel.js:599
&gt; +            if (rawSourceCode)

This check is not needed. You add entries in this._anchorsForScriptId only when rawSourceCode exists, and model._rawSourceCode is cleared only on navigation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>478245</commentid>
    <comment_count>24</comment_count>
      <attachid>109765</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2011-10-05 02:35:16 -0700</bug_when>
    <thetext>Created attachment 109765
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>478252</commentid>
    <comment_count>25</comment_count>
      <attachid>109765</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-10-05 03:10:10 -0700</bug_when>
    <thetext>Comment on attachment 109765
Patch

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

&gt; LayoutTests/inspector/debugger/linkifier.html:45
&gt; +            _rawSourceCodeForScript: function(id)

nit: it should be &quot;script&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>478272</commentid>
    <comment_count>26</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2011-10-05 04:40:17 -0700</bug_when>
    <thetext>Committed r96694: &lt;http://trac.webkit.org/changeset/96694&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109396</attachid>
            <date>2011-09-30 22:30:01 -0700</date>
            <delta_ts>2011-10-03 02:50:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-69146-20111001092957.patch</filename>
            <type>text/plain</type>
            <size>12871</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTY0NTQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4MDg4OWFiYzE0NmQ1OWFm
NWY0MTQyMjM0NDdlYjEwNWMzYWVjYmJjLi45ZjNjYzFlMTE1ZmUyMTZkMzNmNDg0ODA4YWJhZGE4
MDU5YWQxY2NkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTEtMDktMzAgIElseWEg
VGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IGRlYnVnZ2VyUHJlc2VudGF0aW9Nb2RlbC5saW5raWZ5TG9jYXRpb24gbGVha3MgdXBkYXRl
QW5jaG9yIGNsb3N1cmUgaW5zdGFuY2VzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NjkxNDYKKworICAgICAgICBJbiBtYW55IHBsYWNlcyB3ZSB1c2Ug
bGlua2lmeUxvY2F0aW9uIGZ1bmN0aW9uIHRvIHByb2R1Y2UgYSBsaW5rIG5vZGUgd2hpY2ggdXBk
YXRlcyBhdXRvbWF0aWNhbGx5IHdoZW4gdGhlIHNvdXJjZSBmaWxlIGlzIGNoYW5nZWQgb24gdGhl
IGZseS4KKyAgICAgICAgU3VjaCBjaGFuZ2VzIGhhcHBlbiB3aGVuIHdlIHVzZSBwcmV0dHkgcHJp
bnQgb3IgYW5vdGhlciBvcGVyYXRpb24gdGhhdCBjaGFuZ2VzIHRoZSBzb3VyY2UgY29kZSBzb21l
aG93LgorICAgICAgICBsaW5raWZ5TG9jYXRpb24gYXNzb2NpYXRlcyBhIG5ldyBpbnN0YW5jZSBv
ZiB1cGRhdGVBbmNob3IgY2xvc3VyZSB3aXRoIHRoZSBlYWNoIGxpbmsgbm9kZSBhbmQgYWRkIHRo
ZSBjbG9zdXJlIHRvIHRoZSBTb3VyY2VNYXBwaW5nVXBkYXRlZCBldmVudCdzIGxpc3QuCisgICAg
ICAgIEFzIHRoZSByZXN1bHQgdGhlIG5vZGU8LT5jbG9zdXJlIHBhaXJzIHdvdWxkbid0IGJlIGNv
bGxlY3RlZCB1bnRpbCByZXNldCB0aGUgVUkgYW5kIERlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwu
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDog
aW5zcGVjdG9yL3BlcmZvcm1hbmNlL3Jlc291cmNlcy9uZXR3b3JrLWFwcGVuZC0zMC1yZXF1ZXN0
cy5odG1sCisKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0RlYnVnZ2VyUHJlc2VudGF0
aW9uTW9kZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25N
b2RlbC5wcm90b3R5cGUucmVzZXRPd25lcnNEYXRhKToKKwogMjAxMS0wOS0zMCAgQWRyaWVubmUg
V2Fsa2VyICA8ZW5uZUBnb29nbGUuY29tPgogCiAgICAgICAgIFtjaHJvbWl1bV0gVHJhY2sgc2Vw
YXJhdGUgc2Nyb2xsIGRlbHRhcyBvbiB0aGUgY29tcG9zaXRvciB0aHJlYWQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29uc29sZU1lc3NhZ2UuanMgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVNZXNzYWdlLmpzCmluZGV4
IDA1NjU4M2UxN2Y1YzQ1NmYwYmMwMzM2Nzc5MGM2ZjFiMjg0NjNkYzQuLjYyNDg1YWU3ZDE1MWU5
ZWMyMTYyZTI3NDhiNjFiZjkxMzdlNGI4YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvQ29uc29sZU1lc3NhZ2UuanMKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xlTWVzc2FnZS5qcwpAQCAtMTg0LDcgKzE4NCw3IEBA
IFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIC8vIEZJ
WE1FKDYyNzI1KTogc3RhY2sgdHJhY2UgbGluZS9jb2x1bW4gbnVtYmVycyBhcmUgb25lLWJhc2Vk
LgogICAgICAgICBsaW5lTnVtYmVyID0gbGluZU51bWJlciA/IGxpbmVOdW1iZXIgLSAxIDogdW5k
ZWZpbmVkOwogICAgICAgICBjb2x1bW5OdW1iZXIgPSBjb2x1bW5OdW1iZXIgPyBjb2x1bW5OdW1i
ZXIgLSAxIDogMDsKLSAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5kZWJ1Z2dlclByZXNlbnRh
dGlvbk1vZGVsLmxpbmtpZnlMb2NhdGlvbih1cmwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwg
ImNvbnNvbGUtbWVzc2FnZS11cmwiKTsKKyAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5kZWJ1
Z2dlclByZXNlbnRhdGlvbk1vZGVsLmxpbmtpZnlMb2NhdGlvbihXZWJJbnNwZWN0b3IuQ29uc29s
ZVZpZXcubGlua2VkTm9kZXNPd25lck5hbWUsIHVybCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVy
LCAiY29uc29sZS1tZXNzYWdlLXVybCIpOwogICAgIH0sCiAKICAgICBfbGlua2lmeUNhbGxGcmFt
ZTogZnVuY3Rpb24oY2FsbEZyYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9Db25zb2xlVmlldy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvQ29uc29sZVZpZXcuanMKaW5kZXggYzUxNjgyZTBiMGE3MmZkZTcxOTc4OTM3YTdh
NzQyODc2NDUyMmYyZi4uNDY3ODFiZDhiZmFhZGFlOGZkNGJiYzljNzJkODUxMWM4OWI4OWFkMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xlVmll
dy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVWaWV3
LmpzCkBAIC0xMTksNiArMTE5LDggQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3LkV2ZW50cyA9
IHsKICAgRW50cnlBZGRlZDogImNvbnNvbGUtZW50cnktYWRkZWQiLAogfQogCitXZWJJbnNwZWN0
b3IuQ29uc29sZVZpZXcubGlua2VkTm9kZXNPd25lck5hbWUgPSAiQ29uc29sZVZpZXciOworCiBX
ZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcucHJvdG90eXBlID0gewogICAgIGdldCBzdGF0dXNCYXJJ
dGVtcygpCiAgICAgewpAQCAtMzMxLDYgKzMzMyw4IEBAIFdlYkluc3BlY3Rvci5Db25zb2xlVmll
dy5wcm90b3R5cGUgPSB7CiAgICAgICAgIGRlbGV0ZSB0aGlzLnByZXZpb3VzTWVzc2FnZTsKIAog
ICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuQ29uc29s
ZVZpZXcuRXZlbnRzLkNvbnNvbGVDbGVhcmVkKTsKKworICAgICAgICBXZWJJbnNwZWN0b3IuZGVi
dWdnZXJQcmVzZW50YXRpb25Nb2RlbC5yZXNldE93bmVyc0RhdGEoV2ViSW5zcGVjdG9yLkNvbnNv
bGVWaWV3LmxpbmtlZE5vZGVzT3duZXJOYW1lKTsKICAgICB9LAogCiAgICAgY29tcGxldGlvbnM6
IGZ1bmN0aW9uKHdvcmRSYW5nZSwgYmVzdE1hdGNoT25seSwgY29tcGxldGlvbnNSZWFkeUNhbGxi
YWNrKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1
Z2dlclByZXNlbnRhdGlvbk1vZGVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLmpzCmluZGV4IDNiMmY4ODQ5ODY5Y2RiZDdi
YzU5NWE3ZDc4OTI3YTZkZWM4YmJkN2QuLmI4YTQwZGUxY2ZjMDU4NDVmOWM1NTA5NWQ0MzQ4YWE0
NTkzY2YzOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
RGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0RlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuanMKQEAgLTY2LDcgKzY2LDcg
QEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuRXZlbnRzID0gewogfQog
CiBXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUgPSB7Ci0g
ICAgbGlua2lmeUxvY2F0aW9uOiBmdW5jdGlvbihzb3VyY2VVUkwsIGxpbmVOdW1iZXIsIGNvbHVt
bk51bWJlciwgY2xhc3NlcykKKyAgICBsaW5raWZ5TG9jYXRpb246IGZ1bmN0aW9uKG93bmVyTmFt
ZSwgc291cmNlVVJMLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGNsYXNzZXMpCiAgICAgewog
ICAgICAgICB2YXIgbGlua1RleHQgPSBXZWJJbnNwZWN0b3IuZm9ybWF0TGlua1RleHQoc291cmNl
VVJMLCBsaW5lTnVtYmVyKTsKICAgICAgICAgdmFyIGFuY2hvciA9IFdlYkluc3BlY3Rvci5saW5r
aWZ5VVJMQXNOb2RlKHNvdXJjZVVSTCwgbGlua1RleHQsIGNsYXNzZXMsIGZhbHNlKTsKQEAgLTg4
LDEwICs4OCwxOCBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90
b3R5cGUgPSB7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHJhd1NvdXJjZUNvZGUuc291cmNlTWFw
cGluZykKICAgICAgICAgICAgIHVwZGF0ZUFuY2hvci5jYWxsKHRoaXMpOwotICAgICAgICByYXdT
b3VyY2VDb2RlLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUuRXZl
bnRzLlNvdXJjZU1hcHBpbmdVcGRhdGVkLCB1cGRhdGVBbmNob3IsIHRoaXMpOworICAgICAgICBp
ZiAoIXJhd1NvdXJjZUNvZGUuX2xpbmtPd25lcnNbb3duZXJOYW1lXSkKKyAgICAgICAgICAgIHJh
d1NvdXJjZUNvZGUuX2xpbmtPd25lcnNbb3duZXJOYW1lXSA9IG5ldyBXZWJJbnNwZWN0b3IuT2Jq
ZWN0KCk7CisgICAgICAgIHJhd1NvdXJjZUNvZGUuX2xpbmtPd25lcnNbb3duZXJOYW1lXS5hZGRF
dmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlLkV2ZW50cy5Tb3VyY2VNYXBw
aW5nVXBkYXRlZCwgdXBkYXRlQW5jaG9yLCB0aGlzKTsKICAgICAgICAgcmV0dXJuIGFuY2hvcjsK
ICAgICB9LAogCisgICAgcmVzZXRPd25lcnNEYXRhOiBmdW5jdGlvbihvd25lck5hbWUpCisgICAg
eworICAgICAgICBmb3IgKHZhciBzb3VyY2VJZCBpbiB0aGlzLl9yYXdTb3VyY2VDb2RlKQorICAg
ICAgICAgICAgZGVsZXRlIHRoaXMuX3Jhd1NvdXJjZUNvZGVbc291cmNlSWRdLl9saW5rT3duZXJz
W293bmVyTmFtZV07CisgICAgfSwKKwogICAgIF9wYXJzZWRTY3JpcHRTb3VyY2U6IGZ1bmN0aW9u
KGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5fYWRkU2NyaXB0KGV2ZW50LmRhdGEpOwpAQCAt
MTE1LDYgKzEyMyw3IEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgaWYgKHNjcmlwdC5zb3VyY2VVUkwpCiAgICAgICAgICAgICBy
ZXNvdXJjZSA9IFdlYkluc3BlY3Rvci5uZXR3b3JrTWFuYWdlci5pbmZsaWdodFJlc291cmNlRm9y
VVJMKHNjcmlwdC5zb3VyY2VVUkwpIHx8IFdlYkluc3BlY3Rvci5yZXNvdXJjZUZvclVSTChzY3Jp
cHQuc291cmNlVVJMKTsKICAgICAgICAgcmF3U291cmNlQ29kZSA9IG5ldyBXZWJJbnNwZWN0b3Iu
UmF3U291cmNlQ29kZShyYXdTb3VyY2VDb2RlSWQsIHNjcmlwdCwgcmVzb3VyY2UsIHRoaXMuX2Zv
cm1hdHRlciwgdGhpcy5fZm9ybWF0U291cmNlKTsKKyAgICAgICAgcmF3U291cmNlQ29kZS5fbGlu
a093bmVycyA9IHt9OwogICAgICAgICB0aGlzLl9yYXdTb3VyY2VDb2RlW3Jhd1NvdXJjZUNvZGVJ
ZF0gPSByYXdTb3VyY2VDb2RlOwogICAgICAgICBpZiAocmF3U291cmNlQ29kZS5zb3VyY2VNYXBw
aW5nKQogICAgICAgICAgICAgdGhpcy5fdXBkYXRlU291cmNlTWFwcGluZyhyYXdTb3VyY2VDb2Rl
LCBudWxsKTsKQEAgLTE0OSw2ICsxNTgsOSBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50
YXRpb25Nb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB2YXIgZXZlbnREYXRhID0geyB1
aVNvdXJjZUNvZGU6IHVpU291cmNlQ29kZSwgb2xkVUlTb3VyY2VDb2RlOiBvbGRVSVNvdXJjZUNv
ZGUgfTsKICAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3Bl
Y3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLkV2ZW50cy5VSVNvdXJjZUNvZGVSZXBsYWNl
ZCwgZXZlbnREYXRhKTsKICAgICAgICAgfQorCisgICAgICAgIGZvciAodmFyIG93bmVyTmFtZSBp
biByYXdTb3VyY2VDb2RlLl9saW5rT3duZXJzKQorICAgICAgICAgICAgcmF3U291cmNlQ29kZS5f
bGlua093bmVyc1tvd25lck5hbWVdLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0
b3IuUmF3U291cmNlQ29kZS5FdmVudHMuU291cmNlTWFwcGluZ1VwZGF0ZWQsIHsgb2xkVUlTb3Vy
Y2VDb2RlOiBvbGRVSVNvdXJjZUNvZGUgfSk7CiAgICAgfSwKIAogICAgIF9yZXN0b3JlQnJlYWtw
b2ludHM6IGZ1bmN0aW9uKHJhd1NvdXJjZUNvZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0V2ZW50TGlzdGVuZXJzU2lkZWJhclBhbmUuanMgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0V2ZW50TGlzdGVuZXJzU2lkZWJhclBhbmUu
anMKaW5kZXggMmViODY0OTYwMWJmYzMwNDhmMDVmZTdhZGNiNTZjYjUyMzhmYzNkZi4uYzA5ZmQz
OTBlMThmMDBmMzYyZjYzNzc0NTBmNGZlYTFlYjdlZmU2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FdmVudExpc3RlbmVyc1NpZGViYXJQYW5lLmpzCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRXZlbnRMaXN0ZW5lcnNTaWRl
YmFyUGFuZS5qcwpAQCAtMzIsNiArMzIsOCBAQCBXZWJJbnNwZWN0b3IuRXZlbnRMaXN0ZW5lcnNT
aWRlYmFyUGFuZSA9IGZ1bmN0aW9uKCkKICAgICBXZWJJbnNwZWN0b3IuU2lkZWJhclBhbmUuY2Fs
bCh0aGlzLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkV2ZW50IExpc3RlbmVycyIpKTsKICAgICB0
aGlzLmJvZHlFbGVtZW50LmFkZFN0eWxlQ2xhc3MoImV2ZW50cy1wYW5lIik7CiAKKyAgICBXZWJJ
bnNwZWN0b3IuZGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5yZXNldE93bmVyc0RhdGEoV2ViSW5z
cGVjdG9yLkV2ZW50TGlzdGVuZXJzU2lkZWJhclBhbmUuX29iamVjdEdyb3VwTmFtZSk7CisKICAg
ICB0aGlzLnNlY3Rpb25zID0gW107CiAKICAgICB0aGlzLnNldHRpbmdzU2VsZWN0RWxlbWVudCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNlbGVjdCIpOwpAQCAtMjQwLDcgKzI0Miw3IEBAIFdl
Ykluc3BlY3Rvci5FdmVudExpc3RlbmVyQmFyLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHZh
ciB1cmwgPSB0aGlzLmV2ZW50TGlzdGVuZXIubG9jYXRpb24uc2NyaXB0SWQ7CiAgICAgICAgICAg
ICB2YXIgbGluZU51bWJlciA9IHRoaXMuZXZlbnRMaXN0ZW5lci5sb2NhdGlvbi5saW5lTnVtYmVy
IC0gMTsKICAgICAgICAgICAgIHZhciBjb2x1bW5OdW1iZXIgPSAwOwotICAgICAgICAgICAgdmFy
IHVybEVsZW1lbnQgPSBXZWJJbnNwZWN0b3IuZGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5saW5r
aWZ5TG9jYXRpb24odXJsLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpOworICAgICAgICAgICAg
dmFyIHVybEVsZW1lbnQgPSBXZWJJbnNwZWN0b3IuZGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5s
aW5raWZ5TG9jYXRpb24oV2ViSW5zcGVjdG9yLkV2ZW50TGlzdGVuZXJzU2lkZWJhclBhbmUuX29i
amVjdEdyb3VwTmFtZSwgdXJsLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpOwogICAgICAgICAg
ICAgdGhpcy5zdWJ0aXRsZUVsZW1lbnQuYXBwZW5kQ2hpbGQodXJsRWxlbWVudCk7CiAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICB2YXIgbWF0Y2ggPSB0aGlzLmV2ZW50TGlzdGVuZXIuaGFu
ZGxlckJvZHkubWF0Y2goL2Z1bmN0aW9uIChbXlwoXSs/KVwoLyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtQYW5lbC5qcyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya1BhbmVsLmpzCmluZGV4IDViYmI1OWI0
OTIyN2M5YzhlMDlhNmEwZTJhOGE0MzgzZDk4YWU5MzEuLmQyN2FkZTQyZmI5NjlmMjk0MzM2NWRh
YTdhOWVkYTE4NTEwYmFhODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvTmV0d29ya1BhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvTmV0d29ya1BhbmVsLmpzCkBAIC03MzUsNyArNzM1LDcgQEAgV2ViSW5zcGVjdG9y
Lk5ldHdvcmtMb2dWaWV3LnByb3RvdHlwZSA9IHsKIAogICAgICAgICB0aGlzLl9tYWluUmVzb3Vy
Y2VMb2FkVGltZSA9IC0xOwogICAgICAgICB0aGlzLl9tYWluUmVzb3VyY2VET01Db250ZW50VGlt
ZSA9IC0xOwotCisgICAgICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVs
LnJlc2V0T3duZXJzRGF0YShXZWJJbnNwZWN0b3IuTmV0d29ya1BhbmVsLmxpbmtlZE5vZGVzT3du
ZXJOYW1lKTsKICAgICB9LAogCiAgICAgZ2V0IHJlc291cmNlcygpCkBAIC0xMzAzLDYgKzEzMDMs
OCBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya1BhbmVsID0gZnVuY3Rpb24oKQogICAgIHRoaXMucmVn
aXN0ZXJTaG9ydGN1dHMoKTsKIH0KIAorV2ViSW5zcGVjdG9yLk5ldHdvcmtQYW5lbC5saW5rZWRO
b2Rlc093bmVyTmFtZSA9ICJOZXR3b3JrUGFuZWwiOworCiBXZWJJbnNwZWN0b3IuTmV0d29ya1Bh
bmVsLnByb3RvdHlwZSA9IHsKICAgICBnZXQgdG9vbGJhckl0ZW1MYWJlbCgpCiAgICAgewpAQCAt
MjA0MSw3ICsyMDQzLDcgQEAgV2ViSW5zcGVjdG9yLk5ldHdvcmtEYXRhR3JpZE5vZGUucHJvdG90
eXBlID0gewogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgIHRoaXMuX2luaXRpYXRvckNlbGwudGl0bGUgPSB0b3BGcmFtZS51cmwg
KyAiOiIgKyB0b3BGcmFtZS5saW5lTnVtYmVyOwotICAgICAgICAgICAgICAgIHZhciB1cmxFbGVt
ZW50ID0gV2ViSW5zcGVjdG9yLmRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwubGlua2lmeUxvY2F0
aW9uKHRvcEZyYW1lLnVybCwgdG9wRnJhbWUubGluZU51bWJlciAtIDEsIDApOworICAgICAgICAg
ICAgICAgIHZhciB1cmxFbGVtZW50ID0gV2ViSW5zcGVjdG9yLmRlYnVnZ2VyUHJlc2VudGF0aW9u
TW9kZWwubGlua2lmeUxvY2F0aW9uKFdlYkluc3BlY3Rvci5OZXR3b3JrUGFuZWwubGlua2VkTm9k
ZXNPd25lck5hbWUsIHRvcEZyYW1lLnVybCwgdG9wRnJhbWUubGluZU51bWJlciAtIDEsIDApOwog
ICAgICAgICAgICAgICAgIHRoaXMuX2luaXRpYXRvckNlbGwuYXBwZW5kQ2hpbGQodXJsRWxlbWVu
dCk7CiAgICAgICAgICAgICAgICAgdGhpcy5fYXBwZW5kU3VidGl0bGUodGhpcy5faW5pdGlhdG9y
Q2VsbCwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTY3JpcHQiKSk7CiAgICAgICAgICAgICB9IGVs
c2UgeyAvLyBpbml0aWF0b3IudHlwZSA9PT0gInBhcnNlciIKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUHJvZmlsZURhdGFHcmlkVHJlZS5qcyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUHJvZmlsZURhdGFHcmlkVHJlZS5qcwppbmRl
eCA1ODU1NjhjM2FiYTA2OTgxY2VjODUyOWYxMTQyYjkwZjI2NDNiODdlLi5jMzIwZmNmZmJkMmQ4
ZDNkYTY0MGZjNGI2YzhjZGQzNmMxNjUyYTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVEYXRhR3JpZFRyZWUuanMKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlRGF0YUdyaWRUcmVlLmpzCkBAIC05OCw3
ICs5OCw3IEBAIFdlYkluc3BlY3Rvci5Qcm9maWxlRGF0YUdyaWROb2RlLnByb3RvdHlwZSA9IHsK
ICAgICAgICAgaWYgKHRoaXMucHJvZmlsZU5vZGUudXJsKSB7CiAgICAgICAgICAgICAvLyBGSVhN
RSg2MjcyNSk6IHByb2ZpbGVOb2RlIHNob3VsZCByZWZlcmVuY2UgYSBkZWJ1Z2dlciBsb2NhdGlv
bi4KICAgICAgICAgICAgIHZhciBsaW5lTnVtYmVyID0gdGhpcy5wcm9maWxlTm9kZS5saW5lTnVt
YmVyID8gdGhpcy5wcm9maWxlTm9kZS5saW5lTnVtYmVyIC0gMSA6IDA7Ci0gICAgICAgICAgICB2
YXIgdXJsRWxlbWVudCA9IFdlYkluc3BlY3Rvci5kZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLmxp
bmtpZnlMb2NhdGlvbih0aGlzLnByb2ZpbGVOb2RlLnVybCwgbGluZU51bWJlciwgMCwgInByb2Zp
bGUtbm9kZS1maWxlIik7CisgICAgICAgICAgICB2YXIgdXJsRWxlbWVudCA9IFdlYkluc3BlY3Rv
ci5kZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLmxpbmtpZnlMb2NhdGlvbihXZWJJbnNwZWN0b3Iu
UHJvZmlsZXNQYW5lbC5saW5rZWROb2Rlc093bmVyTmFtZSwgdGhpcy5wcm9maWxlTm9kZS51cmws
IGxpbmVOdW1iZXIsIDAsICJwcm9maWxlLW5vZGUtZmlsZSIpOwogICAgICAgICAgICAgdXJsRWxl
bWVudC5zdHlsZS5tYXhXaWR0aCA9ICI3NSUiOwogICAgICAgICAgICAgY2VsbC5pbnNlcnRCZWZv
cmUodXJsRWxlbWVudCwgY2VsbC5maXJzdENoaWxkKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlc1BhbmVsLmpzIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlc1BhbmVsLmpzCmluZGV4IDEy
YmEwZWQzMWU5NDg3ZWJlZGU3M2U2YmE3ODEwMmVkODY3YmJjNjYuLjY2MjNiZTA4OTJkOWJmZDBj
OWVmMjExZTFjMTQ1YjE5Y2NkOWExZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvUHJvZmlsZXNQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVzUGFuZWwuanMKQEAgLTE0Miw2ICsxNDIsOCBAQCBXZWJJ
bnNwZWN0b3IuUHJvZmlsZXNQYW5lbCA9IGZ1bmN0aW9uKCkKICAgICB9CiB9CiAKK1dlYkluc3Bl
Y3Rvci5Qcm9maWxlc1BhbmVsLmxpbmtlZE5vZGVzT3duZXJOYW1lID0gIlByb2ZpbGVzUGFuZWwi
OworCiBXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgZ2V0IHRv
b2xiYXJJdGVtTGFiZWwoKQogICAgIHsKQEAgLTIzMiw2ICsyMzQsOCBAQCBXZWJJbnNwZWN0b3Iu
UHJvZmlsZXNQYW5lbC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgdGhpcy5fdXBkYXRlSW50ZXJm
YWNlKCk7CiAgICAgICAgIHRoaXMud2VsY29tZVZpZXcuc2hvdygpOworCisgICAgICAgIFdlYklu
c3BlY3Rvci5kZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnJlc2V0T3duZXJzRGF0YShXZWJJbnNw
ZWN0b3IuUHJvZmlsZXNQYW5lbC5saW5rZWROb2Rlc093bmVyTmFtZSk7CiAgICAgfSwKIAogICAg
IF9jbGVhclByb2ZpbGVzOiBmdW5jdGlvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lUGFuZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lUGFuZWwuanMKaW5kZXggZTI4MWM1Y2YyNjQwZTk1NWNm
OTVlMjRjMjY5MjQ1NTg4M2NhOTM5MS4uZWU3ODY5Y2IyOTU3MjM5ZGU5NzEzOWFkZTBhYmUyZmFl
MzYxZmZjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9U
aW1lbGluZVBhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
VGltZWxpbmVQYW5lbC5qcwpAQCAtMTE0LDYgKzExNCw3IEBAIFdlYkluc3BlY3Rvci5UaW1lbGlu
ZVBhbmVsID0gZnVuY3Rpb24oKQogLy8gRGVmaW5lIHJvdyBoZWlnaHQsIHNob3VsZCBiZSBpbiBz
eW5jIHdpdGggc3R5bGVzIGZvciB0aW1lbGluZSBncmFwaHMuCiBXZWJJbnNwZWN0b3IuVGltZWxp
bmVQYW5lbC5yb3dIZWlnaHQgPSAxODsKIFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLnNob3J0
UmVjb3JkVGhyZXNob2xkID0gMC4wMTU7CitXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5saW5r
ZWROb2Rlc093bmVyTmFtZSA9ICJUaW1lbGluZVBhbmVsIjsKIAogV2ViSW5zcGVjdG9yLlRpbWVs
aW5lUGFuZWwucHJvdG90eXBlID0gewogICAgIF9jcmVhdGVUb3BQYW5lOiBmdW5jdGlvbigpIHsK
QEAgLTUyOCw2ICs1MjksNyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5wcm90b3R5cGUg
PSB7CiAgICAgICAgIHRoaXMuX3JlZnJlc2goKTsKICAgICAgICAgdGhpcy5fY2xvc2VSZWNvcmRE
ZXRhaWxzKCk7CiAgICAgICAgIHRoaXMuX21vZGVsLl9yZXNldCgpOworICAgICAgICBXZWJJbnNw
ZWN0b3IuZGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5yZXNldE93bmVyc0RhdGEoV2ViSW5zcGVj
dG9yLlRpbWVsaW5lUGFuZWwubGlua2VkTm9kZXNPd25lck5hbWUpOwogICAgIH0sCiAKICAgICBl
bGVtZW50c1RvUmVzdG9yZVNjcm9sbFBvc2l0aW9uc0ZvcjogZnVuY3Rpb24oKQpAQCAtMTE3Niw3
ICsxMTc4LDcgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwuRm9ybWF0dGVkUmVjb3JkLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgLy8gRklYTUUoNjI3MjUpOiBzdGFjayB0cmFjZSBsaW5lL2Nv
bHVtbiBudW1iZXJzIGFyZSBvbmUtYmFzZWQuCiAgICAgICAgIGxpbmVOdW1iZXIgPSBsaW5lTnVt
YmVyID8gbGluZU51bWJlciAtIDEgOiBsaW5lTnVtYmVyOwogICAgICAgICBjb2x1bW5OdW1iZXIg
PSBjb2x1bW5OdW1iZXIgPyBjb2x1bW5OdW1iZXIgLSAxIDogMDsKLSAgICAgICAgcmV0dXJuIFdl
Ykluc3BlY3Rvci5kZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLmxpbmtpZnlMb2NhdGlvbih1cmws
IGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgInRpbWVsaW5lLWRldGFpbHMiKTsKKyAgICAgICAg
cmV0dXJuIFdlYkluc3BlY3Rvci5kZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLmxpbmtpZnlMb2Nh
dGlvbihXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5saW5rZWROb2Rlc093bmVyTmFtZSwgdXJs
LCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsICJ0aW1lbGluZS1kZXRhaWxzIik7CiAgICAgfSwK
IAogICAgIF9saW5raWZ5Q2FsbEZyYW1lOiBmdW5jdGlvbihjYWxsRnJhbWUpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109457</attachid>
            <date>2011-10-03 02:50:28 -0700</date>
            <delta_ts>2011-10-03 05:57:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-69146-20111003135026.patch</filename>
            <type>text/plain</type>
            <size>15881</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTY0ODYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxMDRmZWU3ZjU1MThkYTQ0
ZmEyYjRmMWY0NzQyYjA2MzdmZDIzNDZjLi43OGI4OGUwNzdkOTZiNzFlMWFmYWRjODM3NjdlZThm
YTkzMjE3MDg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDQgQEAKKzIwMTEtMTAtMDMgIElseWEg
VGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IGRlYnVnZ2VyUHJlc2VudGF0aW9Nb2RlbC5saW5raWZ5TG9jYXRpb24gbGVha3MgdXBkYXRl
QW5jaG9yIGNsb3N1cmUgaW5zdGFuY2VzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NjkxNDYKKworICAgICAgICBJbiBtYW55IHBsYWNlcyB3ZSB1c2Ug
bGlua2lmeUxvY2F0aW9uIGZ1bmN0aW9uIHRvIHByb2R1Y2UgYSBsaW5rIG5vZGUgd2hpY2ggdXBk
YXRlcyBhdXRvbWF0aWNhbGx5IHdoZW4gdGhlIHNvdXJjZSBmaWxlIGlzIGNoYW5nZWQgb24gdGhl
IGZseS4KKyAgICAgICAgU3VjaCBjaGFuZ2VzIGhhcHBlbiB3aGVuIHdlIHVzZSBwcmV0dHkgcHJp
bnQgb3IgYW5vdGhlciBvcGVyYXRpb24gdGhhdCBjaGFuZ2VzIHRoZSBzb3VyY2UgY29kZSBzb21l
aG93LgorICAgICAgICBsaW5raWZ5TG9jYXRpb24gYXNzb2NpYXRlcyBhIG5ldyBpbnN0YW5jZSBv
ZiB1cGRhdGVBbmNob3IgY2xvc3VyZSB3aXRoIHRoZSBlYWNoIGxpbmsgbm9kZSBhbmQgYWRkIHRo
ZSBjbG9zdXJlIHRvIHRoZSBTb3VyY2VNYXBwaW5nVXBkYXRlZCBldmVudCdzIGxpc3QuCisgICAg
ICAgIEFzIHRoZSByZXN1bHQgdGhlIG5vZGU8LT5jbG9zdXJlIHBhaXJzIHdvdWxkbid0IGJlIGNv
bGxlY3RlZCB1bnRpbCByZXNldCB0aGUgVUkgYW5kIERlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwu
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDog
aW5zcGVjdG9yL3BlcmZvcm1hbmNlL3Jlc291cmNlcy9uZXR3b3JrLWFwcGVuZC0zMC1yZXF1ZXN0
cy5odG1sCisKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVNZXNzYWdlLmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLnByb3RvdHlwZS5fbGlua2lm
eUxvY2F0aW9uKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVWaWV3Lmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3KToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5Db25zb2xlVmlldy5wcm90b3R5cGUuX2NvbnNvbGVDbGVhcmVkKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvZnJvbnQtZW5kL0RlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuanM6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5MaW5raWZpZXIpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuTGlua2lmaWVyLnBy
b3RvdHlwZS5saW5raWZ5TG9jYXRpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2Vy
UHJlc2VudGF0aW9uTW9kZWwuTGlua2lmaWVyLnByb3RvdHlwZS5yZXNldCk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5MaW5raWZpZXIucHJvdG90eXBl
Ll91cGRhdGVTb3VyY2VBbmNob3JzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclBy
ZXNlbnRhdGlvbk1vZGVsLkxpbmtpZmllci5wcm90b3R5cGUuX3VwZGF0ZUFuY2hvcik6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUuY3Jl
YXRlTGlua2lmaWVyKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0V2ZW50TGlzdGVu
ZXJzU2lkZWJhclBhbmUuanM6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3Jr
UGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya0xvZ1ZpZXcpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtMb2dWaWV3LnByb3RvdHlwZS5fcmVzZXQpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtEYXRhR3JpZE5vZGUucHJvdG90eXBlLl9yZWZyZXNoSW5p
dGlhdG9yQ2VsbCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlRGF0YUdy
aWRUcmVlLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlByb2ZpbGVEYXRhR3JpZE5vZGUucHJv
dG90eXBlLmNyZWF0ZUNlbGwpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUHJvZmls
ZXNQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsLnByb3RvdHlwZS5fcmVzZXQpOgorICAgICAg
ICAqIGluc3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVQYW5lbC5qczoKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5UaW1lbGluZVBhbmVsKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVBh
bmVsLnByb3RvdHlwZS5fY2xlYXJQYW5lbCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxp
bmVQYW5lbC5Gb3JtYXR0ZWRSZWNvcmQucHJvdG90eXBlLl9saW5raWZ5TG9jYXRpb24pOgorCiAy
MDExLTEwLTAzICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IHJlc3RvcmUgcGFydGlhbCBmcm9udC1lbmQgY29tcGlsYWJpbGl0
eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xl
TWVzc2FnZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29uc29sZU1l
c3NhZ2UuanMKaW5kZXggMDU2NTgzZTE3ZjVjNDU2ZjBiYzAzMzY3NzkwYzZmMWIyODQ2M2RjNC4u
M2Y2NDM2MGVlNGEyYTMzNGY4MDc0OWQ3OWMzNGE1NTJiMjkxNjkzYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xlTWVzc2FnZS5qcworKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVNZXNzYWdlLmpzCkBAIC0x
ODQsNyArMTg0LDcgQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLnByb3RvdHlwZSA9IHsK
ICAgICAgICAgLy8gRklYTUUoNjI3MjUpOiBzdGFjayB0cmFjZSBsaW5lL2NvbHVtbiBudW1iZXJz
IGFyZSBvbmUtYmFzZWQuCiAgICAgICAgIGxpbmVOdW1iZXIgPSBsaW5lTnVtYmVyID8gbGluZU51
bWJlciAtIDEgOiB1bmRlZmluZWQ7CiAgICAgICAgIGNvbHVtbk51bWJlciA9IGNvbHVtbk51bWJl
ciA/IGNvbHVtbk51bWJlciAtIDEgOiAwOwotICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLmRl
YnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwubGlua2lmeUxvY2F0aW9uKHVybCwgbGluZU51bWJlciwg
Y29sdW1uTnVtYmVyLCAiY29uc29sZS1tZXNzYWdlLXVybCIpOworICAgICAgICByZXR1cm4gV2Vi
SW5zcGVjdG9yLkNvbnNvbGVWaWV3LmxpbmtpZmllci5saW5raWZ5TG9jYXRpb24odXJsLCBsaW5l
TnVtYmVyLCBjb2x1bW5OdW1iZXIsICJjb25zb2xlLW1lc3NhZ2UtdXJsIik7CiAgICAgfSwKIAog
ICAgIF9saW5raWZ5Q2FsbEZyYW1lOiBmdW5jdGlvbihjYWxsRnJhbWUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVWaWV3LmpzIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xlVmlldy5qcwppbmRleCBjNTE2ODJl
MGIwYTcyZmRlNzE5Nzg5MzdhN2E3NDI4NzY0NTIyZjJmLi45MmQ3ODg4MTVmZTYxMjMyOWViMTZh
MTA5MmMzZGRiMDYxNTNjODFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0NvbnNvbGVWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvQ29uc29sZVZpZXcuanMKQEAgLTExMiw2ICsxMTIsOCBAQCBXZWJJbnNwZWN0b3Iu
Q29uc29sZVZpZXcgPSBmdW5jdGlvbigpCiAKICAgICBXZWJJbnNwZWN0b3IuY29uc29sZS5hZGRF
dmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Db25zb2xlTW9kZWwuRXZlbnRzLk1lc3NhZ2VBZGRl
ZCwgdGhpcy5fY29uc29sZU1lc3NhZ2VBZGRlZCwgdGhpcyk7CiAgICAgV2ViSW5zcGVjdG9yLmNv
bnNvbGUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQ29uc29sZU1vZGVsLkV2ZW50cy5D
b25zb2xlQ2xlYXJlZCwgdGhpcy5fY29uc29sZUNsZWFyZWQsIHRoaXMpOworCisgICAgV2ViSW5z
cGVjdG9yLkNvbnNvbGVWaWV3LmxpbmtpZmllciA9IFdlYkluc3BlY3Rvci5kZWJ1Z2dlclByZXNl
bnRhdGlvbk1vZGVsLmNyZWF0ZUxpbmtpZmllcigpOwogfQogCiBXZWJJbnNwZWN0b3IuQ29uc29s
ZVZpZXcuRXZlbnRzID0gewpAQCAtMzMxLDYgKzMzMyw4IEBAIFdlYkluc3BlY3Rvci5Db25zb2xl
Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIGRlbGV0ZSB0aGlzLnByZXZpb3VzTWVzc2FnZTsK
IAogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuQ29u
c29sZVZpZXcuRXZlbnRzLkNvbnNvbGVDbGVhcmVkKTsKKworICAgICAgICBXZWJJbnNwZWN0b3Iu
Q29uc29sZVZpZXcubGlua2lmaWVyLnJlc2V0KCk7CiAgICAgfSwKIAogICAgIGNvbXBsZXRpb25z
OiBmdW5jdGlvbih3b3JkUmFuZ2UsIGJlc3RNYXRjaE9ubHksIGNvbXBsZXRpb25zUmVhZHlDYWxs
YmFjaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVi
dWdnZXJQcmVzZW50YXRpb25Nb2RlbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5qcwppbmRleCAzYjJmODg0OTg2OWNkYmQ3
YmM1OTVhN2Q3ODkyN2E2ZGVjOGJiZDdkLi5jNWI1YmRhMzJiMjY2ODA1YTUxNGZjMDdiNjMyMTIw
ODRlMTg4OGM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0RlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLmpzCkBAIC02NSwzMyArNjUs
NzYgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuRXZlbnRzID0gewog
ICAgIENhbGxGcmFtZVNlbGVjdGVkOiAiY2FsbC1mcmFtZS1zZWxlY3RlZCIKIH0KIAotV2ViSW5z
cGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBlID0geworV2ViSW5zcGVj
dG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuTGlua2lmaWVyID0gZnVuY3Rpb24oZGVidWdn
ZXJQcmVzZW50YXRpb25Nb2RlbCkKK3sKKyAgICB0aGlzLl9hbmNob3JzRm9yVVJMID0ge307Cisg
ICAgdGhpcy5fbW9kZWwgPSBkZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsOworfQorCitXZWJJbnNw
ZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5MaW5raWZpZXIucHJvdG90eXBlID0gewog
ICAgIGxpbmtpZnlMb2NhdGlvbjogZnVuY3Rpb24oc291cmNlVVJMLCBsaW5lTnVtYmVyLCBjb2x1
bW5OdW1iZXIsIGNsYXNzZXMpCiAgICAgewogICAgICAgICB2YXIgbGlua1RleHQgPSBXZWJJbnNw
ZWN0b3IuZm9ybWF0TGlua1RleHQoc291cmNlVVJMLCBsaW5lTnVtYmVyKTsKICAgICAgICAgdmFy
IGFuY2hvciA9IFdlYkluc3BlY3Rvci5saW5raWZ5VVJMQXNOb2RlKHNvdXJjZVVSTCwgbGlua1Rl
eHQsIGNsYXNzZXMsIGZhbHNlKTsKKyAgICAgICAgYW5jaG9yLnJhd0xvY2F0aW9uID0geyBsaW5l
TnVtYmVyOiBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXI6IGNvbHVtbk51bWJlciB9OwogCi0gICAg
ICAgIHZhciByYXdTb3VyY2VDb2RlID0gdGhpcy5fcmF3U291cmNlQ29kZUZvclNjcmlwdChzb3Vy
Y2VVUkwpOworICAgICAgICB2YXIgcmF3U291cmNlQ29kZSA9IHRoaXMuX21vZGVsLl9yYXdTb3Vy
Y2VDb2RlRm9yU2NyaXB0KHNvdXJjZVVSTCk7CiAgICAgICAgIGlmICghcmF3U291cmNlQ29kZSkg
ewogICAgICAgICAgICAgYW5jaG9yLnNldEF0dHJpYnV0ZSgicHJlZmVycmVkX3BhbmVsIiwgInJl
c291cmNlcyIpOwogICAgICAgICAgICAgYW5jaG9yLnNldEF0dHJpYnV0ZSgibGluZV9udW1iZXIi
LCBsaW5lTnVtYmVyKTsKICAgICAgICAgICAgIHJldHVybiBhbmNob3I7CiAgICAgICAgIH0KIAot
ICAgICAgICBmdW5jdGlvbiB1cGRhdGVBbmNob3IoKQotICAgICAgICB7Ci0gICAgICAgICAgICB2
YXIgdWlMb2NhdGlvbiA9IHJhd1NvdXJjZUNvZGUuc291cmNlTWFwcGluZy5yYXdMb2NhdGlvblRv
VUlMb2NhdGlvbih7IGxpbmVOdW1iZXI6IGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcjogY29sdW1u
TnVtYmVyIH0pOwotICAgICAgICAgICAgYW5jaG9yLnRleHRDb250ZW50ID0gV2ViSW5zcGVjdG9y
LmZvcm1hdExpbmtUZXh0KHVpTG9jYXRpb24udWlTb3VyY2VDb2RlLnVybCwgdWlMb2NhdGlvbi5s
aW5lTnVtYmVyKTsKLSAgICAgICAgICAgIGFuY2hvci5zZXRBdHRyaWJ1dGUoInByZWZlcnJlZF9w
YW5lbCIsICJzY3JpcHRzIik7Ci0gICAgICAgICAgICBhbmNob3IudWlTb3VyY2VDb2RlID0gdWlM
b2NhdGlvbi51aVNvdXJjZUNvZGU7Ci0gICAgICAgICAgICBhbmNob3IubGluZU51bWJlciA9IHVp
TG9jYXRpb24ubGluZU51bWJlcjsKKyAgICAgICAgdmFyIGFuY2hvcnMgPSB0aGlzLl9hbmNob3Jz
Rm9yVVJMW3NvdXJjZVVSTF07CisgICAgICAgIGlmICghYW5jaG9ycykgeworICAgICAgICAgICAg
YW5jaG9ycyA9IFtdOworICAgICAgICAgICAgdGhpcy5fYW5jaG9yc0ZvclVSTFtzb3VyY2VVUkxd
ID0gYW5jaG9yczsKKyAgICAgICAgICAgIHJhd1NvdXJjZUNvZGUuYWRkRXZlbnRMaXN0ZW5lcihX
ZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZS5FdmVudHMuU291cmNlTWFwcGluZ1VwZGF0ZWQsIHRo
aXMuX3VwZGF0ZVNvdXJjZUFuY2hvcnMsIHRoaXMpOwogICAgICAgICB9CisKICAgICAgICAgaWYg
KHJhd1NvdXJjZUNvZGUuc291cmNlTWFwcGluZykKLSAgICAgICAgICAgIHVwZGF0ZUFuY2hvci5j
YWxsKHRoaXMpOwotICAgICAgICByYXdTb3VyY2VDb2RlLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5z
cGVjdG9yLlJhd1NvdXJjZUNvZGUuRXZlbnRzLlNvdXJjZU1hcHBpbmdVcGRhdGVkLCB1cGRhdGVB
bmNob3IsIHRoaXMpOworICAgICAgICAgICAgdGhpcy5fdXBkYXRlQW5jaG9yKGFuY2hvcik7Cisg
ICAgICAgIGFuY2hvcnMucHVzaChhbmNob3IpOwogICAgICAgICByZXR1cm4gYW5jaG9yOwogICAg
IH0sCiAKKyAgICByZXNldDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgZm9yICh2YXIgc291
cmNlVVJMIGluIHRoaXMuX2FuY2hvcnNGb3JVUkwpIHsKKyAgICAgICAgICAgIHZhciByYXdTb3Vy
Y2VDb2RlID0gdGhpcy5fbW9kZWwuX3Jhd1NvdXJjZUNvZGVGb3JTY3JpcHQoc291cmNlVVJMKTsK
KyAgICAgICAgICAgIGlmIChyYXdTb3VyY2VDb2RlKQorICAgICAgICAgICAgICAgIHJhd1NvdXJj
ZUNvZGUucmVtb3ZlRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZS5FdmVu
dHMuU291cmNlTWFwcGluZ1VwZGF0ZWQsIHRoaXMuX3VwZGF0ZVNvdXJjZUFuY29ycywgdGhpcyk7
CisgICAgICAgIH0KKyAgICAgICAgdGhpcy5fYW5jaG9yc0ZvclVSTCA9IHt9OworICAgIH0sCisK
KyAgICBfdXBkYXRlU291cmNlQW5jaG9yczogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAg
ICB2YXIgcmF3U291cmNlQ29kZSA9IGV2ZW50LnRhcmdldDsKKyAgICAgICAgdmFyIGFuY2hvcnMg
PSB0aGlzLl9hbmNob3JzRm9yVVJMW3Jhd1NvdXJjZUNvZGUudXJsXTsKKyAgICAgICAgaWYgKCFh
bmNob3JzKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgYW5jaG9ycy5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgIHZhciBhbmNob3IgPSBhbmNob3Jz
W2ldLmFuY2hvcjsKKyAgICB9LAorCisgICAgX3VwZGF0ZUFuY2hvcjogZnVuY3Rpb24oYW5jaG9y
KQorICAgIHsKKyAgICAgICAgdmFyIHVpTG9jYXRpb24gPSByYXdTb3VyY2VDb2RlLnNvdXJjZU1h
cHBpbmcucmF3TG9jYXRpb25Ub1VJTG9jYXRpb24oYW5jaG9yLnJhd0xvY2F0aW9uKTsKKyAgICAg
ICAgYW5jaG9yLnRleHRDb250ZW50ID0gV2ViSW5zcGVjdG9yLmZvcm1hdExpbmtUZXh0KHVpTG9j
YXRpb24udWlTb3VyY2VDb2RlLnVybCwgdWlMb2NhdGlvbi5saW5lTnVtYmVyKTsKKyAgICAgICAg
YW5jaG9yLnNldEF0dHJpYnV0ZSgicHJlZmVycmVkX3BhbmVsIiwgInNjcmlwdHMiKTsKKyAgICAg
ICAgYW5jaG9yLnVpU291cmNlQ29kZSA9IHVpTG9jYXRpb24udWlTb3VyY2VDb2RlOworICAgICAg
ICBhbmNob3IubGluZU51bWJlciA9IHVpTG9jYXRpb24ubGluZU51bWJlcjsKKyAgICB9Cit9CisK
K1dlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZSA9IHsKKyAg
ICBjcmVhdGVMaW5raWZpZXI6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcg
V2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuTGlua2lmaWVyKHRoaXMpOwor
ICAgIH0sCisKICAgICBfcGFyc2VkU2NyaXB0U291cmNlOiBmdW5jdGlvbihldmVudCkKICAgICB7
CiAgICAgICAgIHRoaXMuX2FkZFNjcmlwdChldmVudC5kYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRXZlbnRMaXN0ZW5lcnNTaWRlYmFyUGFuZS5q
cyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRXZlbnRMaXN0ZW5lcnNTaWRl
YmFyUGFuZS5qcwppbmRleCAyZWI4NjQ5NjAxYmZjMzA0OGYwNWZlN2FkY2I1NmNiNTIzOGZjM2Rm
Li5kODQ1ZWY3OWQ4MTc5MmQ5ZmJhNTZmNzg4MGU1MWQ4NWZmYTVlZTRjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0V2ZW50TGlzdGVuZXJzU2lkZWJhclBh
bmUuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FdmVudExpc3Rl
bmVyc1NpZGViYXJQYW5lLmpzCkBAIC01Niw2ICs1Niw3IEBAIFdlYkluc3BlY3Rvci5FdmVudExp
c3RlbmVyc1NpZGViYXJQYW5lID0gZnVuY3Rpb24oKQogICAgIHRoaXMuc2V0dGluZ3NTZWxlY3RF
bGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsIHRoaXMuX2NoYW5nZVNldHRpbmcuYmlu
ZCh0aGlzKSwgZmFsc2UpOwogCiAgICAgdGhpcy50aXRsZUVsZW1lbnQuYXBwZW5kQ2hpbGQodGhp
cy5zZXR0aW5nc1NlbGVjdEVsZW1lbnQpOworICAgIFdlYkluc3BlY3Rvci5FdmVudExpc3RlbmVy
c1NpZGViYXJQYW5lLmxpbmtpZmllciA9IFdlYkluc3BlY3Rvci5kZWJ1Z2dlclByZXNlbnRhdGlv
bk1vZGVsLmNyZWF0ZUxpbmtpZmllcigpOwogfQogCiBXZWJJbnNwZWN0b3IuRXZlbnRMaXN0ZW5l
cnNTaWRlYmFyUGFuZS5fb2JqZWN0R3JvdXBOYW1lID0gImV2ZW50LWxpc3RlbmVycy1zaWRlYmFy
LXBhbmUiOwpAQCAtNjQsNiArNjUsOCBAQCBXZWJJbnNwZWN0b3IuRXZlbnRMaXN0ZW5lcnNTaWRl
YmFyUGFuZS5wcm90b3R5cGUgPSB7CiAgICAgdXBkYXRlOiBmdW5jdGlvbihub2RlKQogICAgIHsK
ICAgICAgICAgUnVudGltZUFnZW50LnJlbGVhc2VPYmplY3RHcm91cChXZWJJbnNwZWN0b3IuRXZl
bnRMaXN0ZW5lcnNTaWRlYmFyUGFuZS5fb2JqZWN0R3JvdXBOYW1lKTsKKyAgICAgICAgV2ViSW5z
cGVjdG9yLkV2ZW50TGlzdGVuZXJzU2lkZWJhclBhbmUubGlua2lmaWVyLnJlc2V0KCk7CisKICAg
ICAgICAgdmFyIGJvZHkgPSB0aGlzLmJvZHlFbGVtZW50OwogICAgICAgICBib2R5LnJlbW92ZUNo
aWxkcmVuKCk7CiAgICAgICAgIHRoaXMuc2VjdGlvbnMgPSBbXTsKQEAgLTI0MCw3ICsyNDMsNyBA
QCBXZWJJbnNwZWN0b3IuRXZlbnRMaXN0ZW5lckJhci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAg
ICB2YXIgdXJsID0gdGhpcy5ldmVudExpc3RlbmVyLmxvY2F0aW9uLnNjcmlwdElkOwogICAgICAg
ICAgICAgdmFyIGxpbmVOdW1iZXIgPSB0aGlzLmV2ZW50TGlzdGVuZXIubG9jYXRpb24ubGluZU51
bWJlciAtIDE7CiAgICAgICAgICAgICB2YXIgY29sdW1uTnVtYmVyID0gMDsKLSAgICAgICAgICAg
IHZhciB1cmxFbGVtZW50ID0gV2ViSW5zcGVjdG9yLmRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwu
bGlua2lmeUxvY2F0aW9uKHVybCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyKTsKKyAgICAgICAg
ICAgIHZhciB1cmxFbGVtZW50ID0gV2ViSW5zcGVjdG9yLkV2ZW50TGlzdGVuZXJzU2lkZWJhclBh
bmUubGlua2lmaWVyLmxpbmtpZnlMb2NhdGlvbih1cmwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJl
cik7CiAgICAgICAgICAgICB0aGlzLnN1YnRpdGxlRWxlbWVudC5hcHBlbmRDaGlsZCh1cmxFbGVt
ZW50KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHZhciBtYXRjaCA9IHRoaXMuZXZl
bnRMaXN0ZW5lci5oYW5kbGVyQm9keS5tYXRjaCgvZnVuY3Rpb24gKFteXChdKz8pXCgvKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya1BhbmVs
LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrUGFuZWwuanMK
aW5kZXggNWJiYjU5YjQ5MjI3YzljOGUwOWE2YTBlMmE4YTQzODNkOThhZTkzMS4uNTQ1MzdjOGRk
YTU0MjAxNWM2YTM0YjdjZGIwYzE0MzgxYzQ3ODZjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrUGFuZWwuanMKQEAgLTU2LDYgKzU2LDcgQEAg
V2ViSW5zcGVjdG9yLk5ldHdvcmtMb2dWaWV3ID0gZnVuY3Rpb24ocGFyZW50RWxlbWVudCkKIAog
ICAgIHRoaXMuX2NyZWF0ZVN0YXR1c2JhckJ1dHRvbnMoKTsKICAgICB0aGlzLl9jcmVhdGVGaWx0
ZXJTdGF0dXNCYXJJdGVtcygpOworICAgIHRoaXMuX2xpbmtpZmllciA9IFdlYkluc3BlY3Rvci5k
ZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLmNyZWF0ZUxpbmtpZmllcigpOwogCiAgICAgV2ViSW5z
cGVjdG9yLm5ldHdvcmtNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLk5ldHdv
cmtNYW5hZ2VyLkV2ZW50VHlwZXMuUmVzb3VyY2VTdGFydGVkLCB0aGlzLl9vblJlc291cmNlU3Rh
cnRlZCwgdGhpcyk7CiAgICAgV2ViSW5zcGVjdG9yLm5ldHdvcmtNYW5hZ2VyLmFkZEV2ZW50TGlz
dGVuZXIoV2ViSW5zcGVjdG9yLk5ldHdvcmtNYW5hZ2VyLkV2ZW50VHlwZXMuUmVzb3VyY2VVcGRh
dGVkLCB0aGlzLl9vblJlc291cmNlVXBkYXRlZCwgdGhpcyk7CkBAIC03MzUsNyArNzM2LDcgQEAg
V2ViSW5zcGVjdG9yLk5ldHdvcmtMb2dWaWV3LnByb3RvdHlwZSA9IHsKIAogICAgICAgICB0aGlz
Ll9tYWluUmVzb3VyY2VMb2FkVGltZSA9IC0xOwogICAgICAgICB0aGlzLl9tYWluUmVzb3VyY2VE
T01Db250ZW50VGltZSA9IC0xOwotCisgICAgICAgIHRoaXMuX2xpbmtpZmllci5yZXNldCgpOwog
ICAgIH0sCiAKICAgICBnZXQgcmVzb3VyY2VzKCkKQEAgLTIwNDEsNyArMjA0Miw3IEBAIFdlYklu
c3BlY3Rvci5OZXR3b3JrRGF0YUdyaWROb2RlLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB0aGlzLl9p
bml0aWF0b3JDZWxsLnRpdGxlID0gdG9wRnJhbWUudXJsICsgIjoiICsgdG9wRnJhbWUubGluZU51
bWJlcjsKLSAgICAgICAgICAgICAgICB2YXIgdXJsRWxlbWVudCA9IFdlYkluc3BlY3Rvci5kZWJ1
Z2dlclByZXNlbnRhdGlvbk1vZGVsLmxpbmtpZnlMb2NhdGlvbih0b3BGcmFtZS51cmwsIHRvcEZy
YW1lLmxpbmVOdW1iZXIgLSAxLCAwKTsKKyAgICAgICAgICAgICAgICB2YXIgdXJsRWxlbWVudCA9
IHRoaXMuX3BhcmVudFZpZXcuX2xpbmtpZmllci5saW5raWZ5TG9jYXRpb24odG9wRnJhbWUudXJs
LCB0b3BGcmFtZS5saW5lTnVtYmVyIC0gMSwgMCk7CiAgICAgICAgICAgICAgICAgdGhpcy5faW5p
dGlhdG9yQ2VsbC5hcHBlbmRDaGlsZCh1cmxFbGVtZW50KTsKICAgICAgICAgICAgICAgICB0aGlz
Ll9hcHBlbmRTdWJ0aXRsZSh0aGlzLl9pbml0aWF0b3JDZWxsLCBXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIlNjcmlwdCIpKTsKICAgICAgICAgICAgIH0gZWxzZSB7IC8vIGluaXRpYXRvci50eXBlID09
PSAicGFyc2VyIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9Qcm9maWxlRGF0YUdyaWRUcmVlLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9Qcm9maWxlRGF0YUdyaWRUcmVlLmpzCmluZGV4IDU4NTU2OGMzYWJhMDY5ODFjZWM4NTI5
ZjExNDJiOTBmMjY0M2I4N2UuLjY0ZjdkZDQ5ZGUyOWExOGMzMTg3YTAzZWJjZDk4MWRjNDYxZGJk
ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUHJvZmls
ZURhdGFHcmlkVHJlZS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1Byb2ZpbGVEYXRhR3JpZFRyZWUuanMKQEAgLTk4LDcgKzk4LDcgQEAgV2ViSW5zcGVjdG9yLlBy
b2ZpbGVEYXRhR3JpZE5vZGUucHJvdG90eXBlID0gewogICAgICAgICBpZiAodGhpcy5wcm9maWxl
Tm9kZS51cmwpIHsKICAgICAgICAgICAgIC8vIEZJWE1FKDYyNzI1KTogcHJvZmlsZU5vZGUgc2hv
dWxkIHJlZmVyZW5jZSBhIGRlYnVnZ2VyIGxvY2F0aW9uLgogICAgICAgICAgICAgdmFyIGxpbmVO
dW1iZXIgPSB0aGlzLnByb2ZpbGVOb2RlLmxpbmVOdW1iZXIgPyB0aGlzLnByb2ZpbGVOb2RlLmxp
bmVOdW1iZXIgLSAxIDogMDsKLSAgICAgICAgICAgIHZhciB1cmxFbGVtZW50ID0gV2ViSW5zcGVj
dG9yLmRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwubGlua2lmeUxvY2F0aW9uKHRoaXMucHJvZmls
ZU5vZGUudXJsLCBsaW5lTnVtYmVyLCAwLCAicHJvZmlsZS1ub2RlLWZpbGUiKTsKKyAgICAgICAg
ICAgIHZhciB1cmxFbGVtZW50ID0gV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwubGlua2lmaWVy
LmxpbmtpZnlMb2NhdGlvbih0aGlzLnByb2ZpbGVOb2RlLnVybCwgbGluZU51bWJlciwgMCwgInBy
b2ZpbGUtbm9kZS1maWxlIik7CiAgICAgICAgICAgICB1cmxFbGVtZW50LnN0eWxlLm1heFdpZHRo
ID0gIjc1JSI7CiAgICAgICAgICAgICBjZWxsLmluc2VydEJlZm9yZSh1cmxFbGVtZW50LCBjZWxs
LmZpcnN0Q2hpbGQpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVzUGFuZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1Byb2ZpbGVzUGFuZWwuanMKaW5kZXggMTJiYTBlZDMxZTk0ODdlYmVkZTcz
ZTZiYTc4MTAyZWQ4NjdiYmM2Ni4uYzMzODdhNWZmZjRiMDU0YTZiYzVhMDNjZDk3MmM5OGRlNzQ1
MjI2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9m
aWxlc1BhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUHJv
ZmlsZXNQYW5lbC5qcwpAQCAtMTQwLDYgKzE0MCw3IEBAIFdlYkluc3BlY3Rvci5Qcm9maWxlc1Bh
bmVsID0gZnVuY3Rpb24oKQogICAgICAgICB9CiAgICAgICAgIFByb2ZpbGVyQWdlbnQuaXNFbmFi
bGVkKG9uUHJvZmlsZXJFbmVibGVkLmJpbmQodGhpcykpOwogICAgIH0KKyAgICBXZWJJbnNwZWN0
b3IuUHJvZmlsZXNQYW5lbC5saW5raWZpZXIgPSBXZWJJbnNwZWN0b3IuZGVidWdnZXJQcmVzZW50
YXRpb25Nb2RlbC5jcmVhdGVMaW5raWZpZXIoKTsKIH0KIAogV2ViSW5zcGVjdG9yLlByb2ZpbGVz
UGFuZWwucHJvdG90eXBlID0gewpAQCAtMjMyLDYgKzIzMyw4IEBAIFdlYkluc3BlY3Rvci5Qcm9m
aWxlc1BhbmVsLnByb3RvdHlwZSA9IHsKIAogICAgICAgICB0aGlzLl91cGRhdGVJbnRlcmZhY2Uo
KTsKICAgICAgICAgdGhpcy53ZWxjb21lVmlldy5zaG93KCk7CisKKyAgICAgICAgV2ViSW5zcGVj
dG9yLlByb2ZpbGVzUGFuZWwubGlua2lmaWVyLnJlc2V0KCk7CiAgICAgfSwKIAogICAgIF9jbGVh
clByb2ZpbGVzOiBmdW5jdGlvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1RpbWVsaW5lUGFuZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1RpbWVsaW5lUGFuZWwuanMKaW5kZXggZTI4MWM1Y2YyNjQwZTk1NWNmOTVlMjRj
MjY5MjQ1NTg4M2NhOTM5MS4uYzg0NGQ0NzdlY2I3YmE3YzgyYmJiMmVkNDQxYTFiNmEwYzVjYTQw
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGlu
ZVBhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGltZWxp
bmVQYW5lbC5qcwpAQCAtMTA5LDYgKzEwOSw3IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVs
ID0gZnVuY3Rpb24oKQogCiAgICAgdGhpcy5fcmVnaXN0ZXJTaG9ydGN1dHMoKTsKICAgICBXZWJJ
bnNwZWN0b3IudGltZWxpbmVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRp
bWVsaW5lTWFuYWdlci5FdmVudFR5cGVzLlRpbWVsaW5lRXZlbnRSZWNvcmRlZCwgdGhpcy5fb25U
aW1lbGluZUV2ZW50UmVjb3JkZWQsIHRoaXMpOworICAgIFdlYkluc3BlY3Rvci5UaW1lbGluZVBh
bmVsLl9saW5raWZpZXIgPSBXZWJJbnNwZWN0b3IuZGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5j
cmVhdGVMaW5raWZpZXIoKTsKIH0KIAogLy8gRGVmaW5lIHJvdyBoZWlnaHQsIHNob3VsZCBiZSBp
biBzeW5jIHdpdGggc3R5bGVzIGZvciB0aW1lbGluZSBncmFwaHMuCkBAIC01MjgsNiArNTI5LDcg
QEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB0aGlz
Ll9yZWZyZXNoKCk7CiAgICAgICAgIHRoaXMuX2Nsb3NlUmVjb3JkRGV0YWlscygpOwogICAgICAg
ICB0aGlzLl9tb2RlbC5fcmVzZXQoKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFu
ZWwuX2xpbmtpZmllci5yZXNldCgpOwogICAgIH0sCiAKICAgICBlbGVtZW50c1RvUmVzdG9yZVNj
cm9sbFBvc2l0aW9uc0ZvcjogZnVuY3Rpb24oKQpAQCAtMTE3Niw3ICsxMTc4LDcgQEAgV2ViSW5z
cGVjdG9yLlRpbWVsaW5lUGFuZWwuRm9ybWF0dGVkUmVjb3JkLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgLy8gRklYTUUoNjI3MjUpOiBzdGFjayB0cmFjZSBsaW5lL2NvbHVtbiBudW1iZXJzIGFyZSBv
bmUtYmFzZWQuCiAgICAgICAgIGxpbmVOdW1iZXIgPSBsaW5lTnVtYmVyID8gbGluZU51bWJlciAt
IDEgOiBsaW5lTnVtYmVyOwogICAgICAgICBjb2x1bW5OdW1iZXIgPSBjb2x1bW5OdW1iZXIgPyBj
b2x1bW5OdW1iZXIgLSAxIDogMDsKLSAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5kZWJ1Z2dl
clByZXNlbnRhdGlvbk1vZGVsLmxpbmtpZnlMb2NhdGlvbih1cmwsIGxpbmVOdW1iZXIsIGNvbHVt
bk51bWJlciwgInRpbWVsaW5lLWRldGFpbHMiKTsKKyAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rv
ci5UaW1lbGluZVBhbmVsLl9saW5raWZpZXIubGlua2lmeUxvY2F0aW9uKHVybCwgbGluZU51bWJl
ciwgY29sdW1uTnVtYmVyLCAidGltZWxpbmUtZGV0YWlscyIpOwogICAgIH0sCiAKICAgICBfbGlu
a2lmeUNhbGxGcmFtZTogZnVuY3Rpb24oY2FsbEZyYW1lKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109477</attachid>
            <date>2011-10-03 05:58:06 -0700</date>
            <delta_ts>2011-10-03 07:46:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-69146-20111003165804.patch</filename>
            <type>text/plain</type>
            <size>20062</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTY0OTAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0ODQ4ZWVkMmQ4MmFkOGQ2
NGQ1ZWQyYzAzZjgwNTBiOTJkZDNhMmQ0Li5iNjczNWQ2YjI1NmVmZjkxMDBiYTc3NjVjYzhiZTZm
ZWZlMjU5NmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDUgQEAKKzIwMTEtMTAtMDMgIElseWEg
VGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IGRlYnVnZ2VyUHJlc2VudGF0aW9Nb2RlbC5saW5raWZ5TG9jYXRpb24gbGVha3MgdXBkYXRl
QW5jaG9yIGNsb3N1cmUgaW5zdGFuY2VzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NjkxNDYKKworICAgICAgICBJbiBtYW55IHBsYWNlcyB3ZSB1c2Ug
bGlua2lmeUxvY2F0aW9uIGZ1bmN0aW9uIHRvIHByb2R1Y2UgYSBsaW5rIG5vZGUgd2hpY2ggdXBk
YXRlcyBhdXRvbWF0aWNhbGx5IHdoZW4gdGhlIHNvdXJjZSBmaWxlIGlzIGNoYW5nZWQgb24gdGhl
IGZseS4KKyAgICAgICAgU3VjaCBjaGFuZ2VzIGhhcHBlbiB3aGVuIHdlIHVzZSBwcmV0dHkgcHJp
bnQgb3IgYW5vdGhlciBvcGVyYXRpb24gdGhhdCBjaGFuZ2VzIHRoZSBzb3VyY2UgY29kZSBzb21l
aG93LgorICAgICAgICBsaW5raWZ5TG9jYXRpb24gYXNzb2NpYXRlcyBhIG5ldyBpbnN0YW5jZSBv
ZiB1cGRhdGVBbmNob3IgY2xvc3VyZSB3aXRoIHRoZSBlYWNoIGxpbmsgbm9kZSBhbmQgYWRkIHRo
ZSBjbG9zdXJlIHRvIHRoZSBTb3VyY2VNYXBwaW5nVXBkYXRlZCBldmVudCdzIGxpc3QuCisgICAg
ICAgIEFzIHRoZSByZXN1bHQgdGhlIG5vZGU8LT5jbG9zdXJlIHBhaXJzIHdvdWxkbid0IGJlIGNv
bGxlY3RlZCB1bnRpbCByZXNldCB0aGUgVUkgYW5kIERlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwu
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDog
aW5zcGVjdG9yL3BlcmZvcm1hbmNlL3Jlc291cmNlcy9uZXR3b3JrLWFwcGVuZC0zMC1yZXF1ZXN0
cy5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogaW5zcGVjdG9yL2Zy
b250LWVuZC9Db25zb2xlTWVzc2FnZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db25zb2xl
TWVzc2FnZS5wcm90b3R5cGUuX2xpbmtpZnlMb2NhdGlvbik6CisgICAgICAgICogaW5zcGVjdG9y
L2Zyb250LWVuZC9Db25zb2xlVmlldy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db25zb2xl
Vmlldy5wcm90b3R5cGUuX2NvbnNvbGVDbGVhcmVkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJv
bnQtZW5kL0RlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuanM6CisgICAgICAgICogaW5zcGVjdG9y
L2Zyb250LWVuZC9FdmVudExpc3RlbmVyc1NpZGViYXJQYW5lLmpzOgorICAgICAgICAqIGluc3Bl
Y3Rvci9mcm9udC1lbmQvTGlua2lmaWVyLmpzOiBBZGRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5MaW5raWZpZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkxpbmtpZmllci5wcm90b3R5cGUu
bGlua2lmeUxvY2F0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5MaW5raWZpZXIucHJvdG90
eXBlLnJlc2V0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5MaW5raWZpZXIucHJvdG90eXBlLl91
cGRhdGVTb3VyY2VBbmNob3JzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5MaW5raWZpZXIucHJv
dG90eXBlLl91cGRhdGVBbmNob3IpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvTmV0
d29ya1BhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtMb2dWaWV3KToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrTG9nVmlldy5wcm90b3R5cGUuX3Jlc2V0KToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrRGF0YUdyaWROb2RlLnByb3RvdHlwZS5fcmVmcmVz
aEluaXRpYXRvckNlbGwpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUHJvZmlsZURh
dGFHcmlkVHJlZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9maWxlRGF0YUdyaWROb2Rl
LnByb3RvdHlwZS5jcmVhdGVDZWxsKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1By
b2ZpbGVzUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5wcm90
b3R5cGUuX3Jlc2V0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lUGFu
ZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbCk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5wcm90b3R5cGUuX2NsZWFyUGFuZWwpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwuRm9ybWF0dGVkUmVjb3JkLnByb3RvdHlwZS5f
bGlua2lmeUxvY2F0aW9uKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5x
cmM6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbDoKKwogMjAx
MS0xMC0wMyAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGdvb2dsZS5jb20+CiAKICAgICAgICAg
V2ViIEluc3BlY3RvcjogbW92ZSBjb25zb2xlIG1lc3NhZ2UgZm9ybWF0dGluZyBmcm9tIENvbnNv
bGVWaWV3LmpzIGludG8gQ29uc29sZU1lc3NhZ2UuanMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBmYTNm
OTEyM2RjNzllMTM0NjNmY2VmMDU3NmUwZTA4NGQxYjkzMTYyLi42ZmIyYmUwOTlmYjIxMzAxMmI1
ZDE2Zjg5N2I3OTllYzQzYTA5NjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC02MjM0LDYgKzYyMzQs
NyBAQAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvRGF0YUdyaWQuanMnLAogICAg
ICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJNb2RlbC5qcycsCiAgICAgICAg
ICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLmpzJywK
KyAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0xpbmtpZmllci5qcycsCiAgICAgICAg
ICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9EZXRhaWxlZEhlYXBzaG90R3JpZE5vZGVzLmpzJywK
ICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0RldGFpbGVkSGVhcHNob3RWaWV3Lmpz
JywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0RPTUFnZW50LmpzJywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29uc29sZU1lc3NhZ2Uu
anMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVNZXNzYWdlLmpz
CmluZGV4IDhiNWJkYzE3OTIzN2M3NzRmMTJkYzlmZTk4Y2MyMDI5NjlmYjdiZDUuLmQwYjdlZjE4
MzVkMGIwYjAzYmNlNGUwOTExNDU0ZGJmMTNjYTZmMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29uc29sZU1lc3NhZ2UuanMKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xlTWVzc2FnZS5qcwpAQCAtMTkyLDcgKzE5
Miw3IEBAIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5wcm90b3R5cGUgPSB7CiAgICAgICAg
IC8vIEZJWE1FKDYyNzI1KTogc3RhY2sgdHJhY2UgbGluZS9jb2x1bW4gbnVtYmVycyBhcmUgb25l
LWJhc2VkLgogICAgICAgICBsaW5lTnVtYmVyID0gbGluZU51bWJlciA/IGxpbmVOdW1iZXIgLSAx
IDogdW5kZWZpbmVkOwogICAgICAgICBjb2x1bW5OdW1iZXIgPSBjb2x1bW5OdW1iZXIgPyBjb2x1
bW5OdW1iZXIgLSAxIDogMDsKLSAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5kZWJ1Z2dlclBy
ZXNlbnRhdGlvbk1vZGVsLmxpbmtpZnlMb2NhdGlvbih1cmwsIGxpbmVOdW1iZXIsIGNvbHVtbk51
bWJlciwgImNvbnNvbGUtbWVzc2FnZS11cmwiKTsKKyAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rv
ci5Db25zb2xlVmlldy5saW5raWZpZXIubGlua2lmeUxvY2F0aW9uKHVybCwgbGluZU51bWJlciwg
Y29sdW1uTnVtYmVyLCAiY29uc29sZS1tZXNzYWdlLXVybCIpOwogICAgIH0sCiAKICAgICBfbGlu
a2lmeUNhbGxGcmFtZTogZnVuY3Rpb24oY2FsbEZyYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xlVmlldy5qcyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvQ29uc29sZVZpZXcuanMKaW5kZXggOWNjY2UxNmVhN2Y5NTYz
OTYyMmFiMjI3ZjdiOWM0YmFkMzlhNzcyNS4uNWRjZmZiMzE4ZDk3NGFkZjE1MWFjYzNlMDhmYjEz
MTY1NTE4YzAzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9Db25zb2xlVmlldy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0NvbnNvbGVWaWV3LmpzCkBAIC0xMDksNiArMTA5LDggQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVW
aWV3ID0gZnVuY3Rpb24oKQogCiAgICAgV2ViSW5zcGVjdG9yLmNvbnNvbGUuYWRkRXZlbnRMaXN0
ZW5lcihXZWJJbnNwZWN0b3IuQ29uc29sZU1vZGVsLkV2ZW50cy5NZXNzYWdlQWRkZWQsIHRoaXMu
X2NvbnNvbGVNZXNzYWdlQWRkZWQsIHRoaXMpOwogICAgIFdlYkluc3BlY3Rvci5jb25zb2xlLmFk
ZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNvbnNvbGVNb2RlbC5FdmVudHMuQ29uc29sZUNs
ZWFyZWQsIHRoaXMuX2NvbnNvbGVDbGVhcmVkLCB0aGlzKTsKKworICAgIFdlYkluc3BlY3Rvci5D
b25zb2xlVmlldy5saW5raWZpZXIgPSBuZXcgV2ViSW5zcGVjdG9yLkxpbmtpZmllcigpOwogfQog
CiBXZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcuRXZlbnRzID0gewpAQCAtMzI4LDYgKzMzMCw4IEBA
IFdlYkluc3BlY3Rvci5Db25zb2xlVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIGRlbGV0ZSB0
aGlzLnByZXZpb3VzTWVzc2FnZTsKIAogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3Rl
bmVycyhXZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcuRXZlbnRzLkNvbnNvbGVDbGVhcmVkKTsKKwor
ICAgICAgICBXZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcubGlua2lmaWVyLnJlc2V0KCk7CiAgICAg
fSwKIAogICAgIGNvbXBsZXRpb25zOiBmdW5jdGlvbih3b3JkUmFuZ2UsIGJlc3RNYXRjaE9ubHks
IGNvbXBsZXRpb25zUmVhZHlDYWxsYmFjaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5qcyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5qcwpp
bmRleCAzYjJmODg0OTg2OWNkYmQ3YmM1OTVhN2Q3ODkyN2E2ZGVjOGJiZDdkLi40YTI4NzVjNjE5
NzYzMjA4NDhiNjBjNGVjY2RkYWI3MDE1MWEzYzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuanMKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dlclByZXNlbnRhdGlvbk1v
ZGVsLmpzCkBAIC02NiwzMiArNjYsNiBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRp
b25Nb2RlbC5FdmVudHMgPSB7CiB9CiAKIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlv
bk1vZGVsLnByb3RvdHlwZSA9IHsKLSAgICBsaW5raWZ5TG9jYXRpb246IGZ1bmN0aW9uKHNvdXJj
ZVVSTCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBjbGFzc2VzKQotICAgIHsKLSAgICAgICAg
dmFyIGxpbmtUZXh0ID0gV2ViSW5zcGVjdG9yLmZvcm1hdExpbmtUZXh0KHNvdXJjZVVSTCwgbGlu
ZU51bWJlcik7Ci0gICAgICAgIHZhciBhbmNob3IgPSBXZWJJbnNwZWN0b3IubGlua2lmeVVSTEFz
Tm9kZShzb3VyY2VVUkwsIGxpbmtUZXh0LCBjbGFzc2VzLCBmYWxzZSk7Ci0KLSAgICAgICAgdmFy
IHJhd1NvdXJjZUNvZGUgPSB0aGlzLl9yYXdTb3VyY2VDb2RlRm9yU2NyaXB0KHNvdXJjZVVSTCk7
Ci0gICAgICAgIGlmICghcmF3U291cmNlQ29kZSkgewotICAgICAgICAgICAgYW5jaG9yLnNldEF0
dHJpYnV0ZSgicHJlZmVycmVkX3BhbmVsIiwgInJlc291cmNlcyIpOwotICAgICAgICAgICAgYW5j
aG9yLnNldEF0dHJpYnV0ZSgibGluZV9udW1iZXIiLCBsaW5lTnVtYmVyKTsKLSAgICAgICAgICAg
IHJldHVybiBhbmNob3I7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiB1cGRhdGVBbmNo
b3IoKQotICAgICAgICB7Ci0gICAgICAgICAgICB2YXIgdWlMb2NhdGlvbiA9IHJhd1NvdXJjZUNv
ZGUuc291cmNlTWFwcGluZy5yYXdMb2NhdGlvblRvVUlMb2NhdGlvbih7IGxpbmVOdW1iZXI6IGxp
bmVOdW1iZXIsIGNvbHVtbk51bWJlcjogY29sdW1uTnVtYmVyIH0pOwotICAgICAgICAgICAgYW5j
aG9yLnRleHRDb250ZW50ID0gV2ViSW5zcGVjdG9yLmZvcm1hdExpbmtUZXh0KHVpTG9jYXRpb24u
dWlTb3VyY2VDb2RlLnVybCwgdWlMb2NhdGlvbi5saW5lTnVtYmVyKTsKLSAgICAgICAgICAgIGFu
Y2hvci5zZXRBdHRyaWJ1dGUoInByZWZlcnJlZF9wYW5lbCIsICJzY3JpcHRzIik7Ci0gICAgICAg
ICAgICBhbmNob3IudWlTb3VyY2VDb2RlID0gdWlMb2NhdGlvbi51aVNvdXJjZUNvZGU7Ci0gICAg
ICAgICAgICBhbmNob3IubGluZU51bWJlciA9IHVpTG9jYXRpb24ubGluZU51bWJlcjsKLSAgICAg
ICAgfQotICAgICAgICBpZiAocmF3U291cmNlQ29kZS5zb3VyY2VNYXBwaW5nKQotICAgICAgICAg
ICAgdXBkYXRlQW5jaG9yLmNhbGwodGhpcyk7Ci0gICAgICAgIHJhd1NvdXJjZUNvZGUuYWRkRXZl
bnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZS5FdmVudHMuU291cmNlTWFwcGlu
Z1VwZGF0ZWQsIHVwZGF0ZUFuY2hvciwgdGhpcyk7Ci0gICAgICAgIHJldHVybiBhbmNob3I7Ci0g
ICAgfSwKLQogICAgIF9wYXJzZWRTY3JpcHRTb3VyY2U6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsK
ICAgICAgICAgdGhpcy5fYWRkU2NyaXB0KGV2ZW50LmRhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FdmVudExpc3RlbmVyc1NpZGViYXJQYW5lLmpz
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FdmVudExpc3RlbmVyc1NpZGVi
YXJQYW5lLmpzCmluZGV4IDJlYjg2NDk2MDFiZmMzMDQ4ZjA1ZmU3YWRjYjU2Y2I1MjM4ZmMzZGYu
LmJlZjUxODExODc0MDEyYmZhM2Y4YjZiNDhjOGY0MjlmZGUwMmE5YzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRXZlbnRMaXN0ZW5lcnNTaWRlYmFyUGFu
ZS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0V2ZW50TGlzdGVu
ZXJzU2lkZWJhclBhbmUuanMKQEAgLTU2LDYgKzU2LDcgQEAgV2ViSW5zcGVjdG9yLkV2ZW50TGlz
dGVuZXJzU2lkZWJhclBhbmUgPSBmdW5jdGlvbigpCiAgICAgdGhpcy5zZXR0aW5nc1NlbGVjdEVs
ZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIiwgdGhpcy5fY2hhbmdlU2V0dGluZy5iaW5k
KHRoaXMpLCBmYWxzZSk7CiAKICAgICB0aGlzLnRpdGxlRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlz
LnNldHRpbmdzU2VsZWN0RWxlbWVudCk7CisgICAgV2ViSW5zcGVjdG9yLkV2ZW50TGlzdGVuZXJz
U2lkZWJhclBhbmUuX2xpbmtpZmllciA9IG5ldyBXZWJJbnNwZWN0b3IuTGlua2lmaWVyKCk7CiB9
CiAKIFdlYkluc3BlY3Rvci5FdmVudExpc3RlbmVyc1NpZGViYXJQYW5lLl9vYmplY3RHcm91cE5h
bWUgPSAiZXZlbnQtbGlzdGVuZXJzLXNpZGViYXItcGFuZSI7CkBAIC02NCw2ICs2NSw4IEBAIFdl
Ykluc3BlY3Rvci5FdmVudExpc3RlbmVyc1NpZGViYXJQYW5lLnByb3RvdHlwZSA9IHsKICAgICB1
cGRhdGU6IGZ1bmN0aW9uKG5vZGUpCiAgICAgewogICAgICAgICBSdW50aW1lQWdlbnQucmVsZWFz
ZU9iamVjdEdyb3VwKFdlYkluc3BlY3Rvci5FdmVudExpc3RlbmVyc1NpZGViYXJQYW5lLl9vYmpl
Y3RHcm91cE5hbWUpOworICAgICAgICBXZWJJbnNwZWN0b3IuRXZlbnRMaXN0ZW5lcnNTaWRlYmFy
UGFuZS5fbGlua2lmaWVyLnJlc2V0KCk7CisKICAgICAgICAgdmFyIGJvZHkgPSB0aGlzLmJvZHlF
bGVtZW50OwogICAgICAgICBib2R5LnJlbW92ZUNoaWxkcmVuKCk7CiAgICAgICAgIHRoaXMuc2Vj
dGlvbnMgPSBbXTsKQEAgLTI0MCw3ICsyNDMsNyBAQCBXZWJJbnNwZWN0b3IuRXZlbnRMaXN0ZW5l
ckJhci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB2YXIgdXJsID0gdGhpcy5ldmVudExpc3Rl
bmVyLmxvY2F0aW9uLnNjcmlwdElkOwogICAgICAgICAgICAgdmFyIGxpbmVOdW1iZXIgPSB0aGlz
LmV2ZW50TGlzdGVuZXIubG9jYXRpb24ubGluZU51bWJlciAtIDE7CiAgICAgICAgICAgICB2YXIg
Y29sdW1uTnVtYmVyID0gMDsKLSAgICAgICAgICAgIHZhciB1cmxFbGVtZW50ID0gV2ViSW5zcGVj
dG9yLmRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwubGlua2lmeUxvY2F0aW9uKHVybCwgbGluZU51
bWJlciwgY29sdW1uTnVtYmVyKTsKKyAgICAgICAgICAgIHZhciB1cmxFbGVtZW50ID0gV2ViSW5z
cGVjdG9yLkV2ZW50TGlzdGVuZXJzU2lkZWJhclBhbmUuX2xpbmtpZmllci5saW5raWZ5TG9jYXRp
b24odXJsLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpOwogICAgICAgICAgICAgdGhpcy5zdWJ0
aXRsZUVsZW1lbnQuYXBwZW5kQ2hpbGQodXJsRWxlbWVudCk7CiAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICB2YXIgbWF0Y2ggPSB0aGlzLmV2ZW50TGlzdGVuZXIuaGFuZGxlckJvZHkubWF0
Y2goL2Z1bmN0aW9uIChbXlwoXSs/KVwoLyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL0xpbmtpZmllci5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvTGlua2lmaWVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZkZmYyOWZhNTE0NDc4Zjk1Yzk3
NjRlZTBiOTg4YzljOGI2MTlhODUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL0xpbmtpZmllci5qcwpAQCAtMCwwICsxLDk2IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3Ry
aWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLyoqCisgKiBA
Y29uc3RydWN0b3IKKyAqLworV2ViSW5zcGVjdG9yLkxpbmtpZmllciA9IGZ1bmN0aW9uKCkKK3sK
KyAgICB0aGlzLl9hbmNob3JzRm9yVVJMID0ge307Cit9CisKK1dlYkluc3BlY3Rvci5MaW5raWZp
ZXIucHJvdG90eXBlID0geworICAgIGxpbmtpZnlMb2NhdGlvbjogZnVuY3Rpb24oc291cmNlVVJM
LCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGNsYXNzZXMpCisgICAgeworICAgICAgICB2YXIg
bGlua1RleHQgPSBXZWJJbnNwZWN0b3IuZm9ybWF0TGlua1RleHQoc291cmNlVVJMLCBsaW5lTnVt
YmVyKTsKKyAgICAgICAgdmFyIGFuY2hvciA9IFdlYkluc3BlY3Rvci5saW5raWZ5VVJMQXNOb2Rl
KHNvdXJjZVVSTCwgbGlua1RleHQsIGNsYXNzZXMsIGZhbHNlKTsKKyAgICAgICAgYW5jaG9yLnJh
d0xvY2F0aW9uID0geyBsaW5lTnVtYmVyOiBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXI6IGNvbHVt
bk51bWJlciB9OworCisgICAgICAgIHZhciByYXdTb3VyY2VDb2RlID0gV2ViSW5zcGVjdG9yLmRl
YnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuX3Jhd1NvdXJjZUNvZGVGb3JTY3JpcHQoc291cmNlVVJM
KTsKKyAgICAgICAgaWYgKCFyYXdTb3VyY2VDb2RlKSB7CisgICAgICAgICAgICBhbmNob3Iuc2V0
QXR0cmlidXRlKCJwcmVmZXJyZWRfcGFuZWwiLCAicmVzb3VyY2VzIik7CisgICAgICAgICAgICBh
bmNob3Iuc2V0QXR0cmlidXRlKCJsaW5lX251bWJlciIsIGxpbmVOdW1iZXIpOworICAgICAgICAg
ICAgcmV0dXJuIGFuY2hvcjsKKyAgICAgICAgfQorCisgICAgICAgIHZhciBhbmNob3JzID0gdGhp
cy5fYW5jaG9yc0ZvclVSTFtzb3VyY2VVUkxdOworICAgICAgICBpZiAoIWFuY2hvcnMpIHsKKyAg
ICAgICAgICAgIGFuY2hvcnMgPSBbXTsKKyAgICAgICAgICAgIHRoaXMuX2FuY2hvcnNGb3JVUkxb
c291cmNlVVJMXSA9IGFuY2hvcnM7CisgICAgICAgICAgICByYXdTb3VyY2VDb2RlLmFkZEV2ZW50
TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUuRXZlbnRzLlNvdXJjZU1hcHBpbmdV
cGRhdGVkLCB0aGlzLl91cGRhdGVTb3VyY2VBbmNob3JzLCB0aGlzKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGlmIChyYXdTb3VyY2VDb2RlLnNvdXJjZU1hcHBpbmcpCisgICAgICAgICAgICB0aGlz
Ll91cGRhdGVBbmNob3IocmF3U291cmNlQ29kZSwgYW5jaG9yKTsKKyAgICAgICAgYW5jaG9ycy5w
dXNoKGFuY2hvcik7CisgICAgICAgIHJldHVybiBhbmNob3I7CisgICAgfSwKKworICAgIHJlc2V0
OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBmb3IgKHZhciBzb3VyY2VVUkwgaW4gdGhpcy5f
YW5jaG9yc0ZvclVSTCkgeworICAgICAgICAgICAgdmFyIHJhd1NvdXJjZUNvZGUgPSBXZWJJbnNw
ZWN0b3IuZGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5fcmF3U291cmNlQ29kZUZvclNjcmlwdChz
b3VyY2VVUkwpOworICAgICAgICAgICAgaWYgKHJhd1NvdXJjZUNvZGUpCisgICAgICAgICAgICAg
ICAgcmF3U291cmNlQ29kZS5yZW1vdmVFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5SYXdTb3Vy
Y2VDb2RlLkV2ZW50cy5Tb3VyY2VNYXBwaW5nVXBkYXRlZCwgdGhpcy5fdXBkYXRlU291cmNlQW5j
b3JzLCB0aGlzKTsKKyAgICAgICAgfQorICAgICAgICB0aGlzLl9hbmNob3JzRm9yVVJMID0ge307
CisgICAgfSwKKworICAgIF91cGRhdGVTb3VyY2VBbmNob3JzOiBmdW5jdGlvbihldmVudCkKKyAg
ICB7CisgICAgICAgIHZhciByYXdTb3VyY2VDb2RlID0gZXZlbnQudGFyZ2V0OworICAgICAgICB2
YXIgYW5jaG9ycyA9IHRoaXMuX2FuY2hvcnNGb3JVUkxbcmF3U291cmNlQ29kZS51cmxdOworICAg
ICAgICBpZiAoIWFuY2hvcnMpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBhbmNob3JzLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgdGhpcy5fdXBk
YXRlQW5jaG9yKHJhd1NvdXJjZUNvZGUsIGFuY2hvcnNbaV0pOworICAgIH0sCisKKyAgICBfdXBk
YXRlQW5jaG9yOiBmdW5jdGlvbihyYXdTb3VyY2VDb2RlLCBhbmNob3IpCisgICAgeworICAgICAg
ICB2YXIgdWlMb2NhdGlvbiA9IHJhd1NvdXJjZUNvZGUuc291cmNlTWFwcGluZy5yYXdMb2NhdGlv
blRvVUlMb2NhdGlvbihhbmNob3IucmF3TG9jYXRpb24pOworICAgICAgICBhbmNob3IudGV4dENv
bnRlbnQgPSBXZWJJbnNwZWN0b3IuZm9ybWF0TGlua1RleHQodWlMb2NhdGlvbi51aVNvdXJjZUNv
ZGUudXJsLCB1aUxvY2F0aW9uLmxpbmVOdW1iZXIpOworICAgICAgICBhbmNob3Iuc2V0QXR0cmli
dXRlKCJwcmVmZXJyZWRfcGFuZWwiLCAic2NyaXB0cyIpOworICAgICAgICBhbmNob3IudWlTb3Vy
Y2VDb2RlID0gdWlMb2NhdGlvbi51aVNvdXJjZUNvZGU7CisgICAgICAgIGFuY2hvci5saW5lTnVt
YmVyID0gdWlMb2NhdGlvbi5saW5lTnVtYmVyOworICAgIH0KK30KKwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrUGFuZWwuanMgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtQYW5lbC5qcwppbmRleCA1YmJiNTli
NDkyMjdjOWM4ZTA5YTZhMGUyYThhNDM4M2Q5OGFlOTMxLi41OTliNTc2NDBjNjM3ZWJmNzIyY2M1
MDdiOTBmN2QwN2Q2ZGZjMDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL05ldHdvcmtQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL05ldHdvcmtQYW5lbC5qcwpAQCAtNTYsNiArNTYsNyBAQCBXZWJJbnNwZWN0b3Iu
TmV0d29ya0xvZ1ZpZXcgPSBmdW5jdGlvbihwYXJlbnRFbGVtZW50KQogCiAgICAgdGhpcy5fY3Jl
YXRlU3RhdHVzYmFyQnV0dG9ucygpOwogICAgIHRoaXMuX2NyZWF0ZUZpbHRlclN0YXR1c0Jhckl0
ZW1zKCk7CisgICAgdGhpcy5fbGlua2lmaWVyID0gbmV3IFdlYkluc3BlY3Rvci5MaW5raWZpZXIo
KTsKIAogICAgIFdlYkluc3BlY3Rvci5uZXR3b3JrTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdl
Ykluc3BlY3Rvci5OZXR3b3JrTWFuYWdlci5FdmVudFR5cGVzLlJlc291cmNlU3RhcnRlZCwgdGhp
cy5fb25SZXNvdXJjZVN0YXJ0ZWQsIHRoaXMpOwogICAgIFdlYkluc3BlY3Rvci5uZXR3b3JrTWFu
YWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5OZXR3b3JrTWFuYWdlci5FdmVudFR5
cGVzLlJlc291cmNlVXBkYXRlZCwgdGhpcy5fb25SZXNvdXJjZVVwZGF0ZWQsIHRoaXMpOwpAQCAt
NzM1LDcgKzczNiw3IEBAIFdlYkluc3BlY3Rvci5OZXR3b3JrTG9nVmlldy5wcm90b3R5cGUgPSB7
CiAKICAgICAgICAgdGhpcy5fbWFpblJlc291cmNlTG9hZFRpbWUgPSAtMTsKICAgICAgICAgdGhp
cy5fbWFpblJlc291cmNlRE9NQ29udGVudFRpbWUgPSAtMTsKLQorICAgICAgICB0aGlzLl9saW5r
aWZpZXIucmVzZXQoKTsKICAgICB9LAogCiAgICAgZ2V0IHJlc291cmNlcygpCkBAIC0yMDQxLDcg
KzIwNDIsNyBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya0RhdGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7
CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgdGhpcy5faW5pdGlhdG9yQ2VsbC50aXRsZSA9IHRvcEZyYW1lLnVybCArICI6IiAr
IHRvcEZyYW1lLmxpbmVOdW1iZXI7Ci0gICAgICAgICAgICAgICAgdmFyIHVybEVsZW1lbnQgPSBX
ZWJJbnNwZWN0b3IuZGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5saW5raWZ5TG9jYXRpb24odG9w
RnJhbWUudXJsLCB0b3BGcmFtZS5saW5lTnVtYmVyIC0gMSwgMCk7CisgICAgICAgICAgICAgICAg
dmFyIHVybEVsZW1lbnQgPSB0aGlzLl9wYXJlbnRWaWV3Ll9saW5raWZpZXIubGlua2lmeUxvY2F0
aW9uKHRvcEZyYW1lLnVybCwgdG9wRnJhbWUubGluZU51bWJlciAtIDEsIDApOwogICAgICAgICAg
ICAgICAgIHRoaXMuX2luaXRpYXRvckNlbGwuYXBwZW5kQ2hpbGQodXJsRWxlbWVudCk7CiAgICAg
ICAgICAgICAgICAgdGhpcy5fYXBwZW5kU3VidGl0bGUodGhpcy5faW5pdGlhdG9yQ2VsbCwgV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJTY3JpcHQiKSk7CiAgICAgICAgICAgICB9IGVsc2UgeyAvLyBp
bml0aWF0b3IudHlwZSA9PT0gInBhcnNlciIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvUHJvZmlsZURhdGFHcmlkVHJlZS5qcyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvUHJvZmlsZURhdGFHcmlkVHJlZS5qcwppbmRleCA1ODU1Njhj
M2FiYTA2OTgxY2VjODUyOWYxMTQyYjkwZjI2NDNiODdlLi42NGY3ZGQ0OWRlMjlhMThjMzE4N2Ew
M2ViY2Q5ODFkYzQ2MWRiZGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1Byb2ZpbGVEYXRhR3JpZFRyZWUuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlRGF0YUdyaWRUcmVlLmpzCkBAIC05OCw3ICs5OCw3IEBA
IFdlYkluc3BlY3Rvci5Qcm9maWxlRGF0YUdyaWROb2RlLnByb3RvdHlwZSA9IHsKICAgICAgICAg
aWYgKHRoaXMucHJvZmlsZU5vZGUudXJsKSB7CiAgICAgICAgICAgICAvLyBGSVhNRSg2MjcyNSk6
IHByb2ZpbGVOb2RlIHNob3VsZCByZWZlcmVuY2UgYSBkZWJ1Z2dlciBsb2NhdGlvbi4KICAgICAg
ICAgICAgIHZhciBsaW5lTnVtYmVyID0gdGhpcy5wcm9maWxlTm9kZS5saW5lTnVtYmVyID8gdGhp
cy5wcm9maWxlTm9kZS5saW5lTnVtYmVyIC0gMSA6IDA7Ci0gICAgICAgICAgICB2YXIgdXJsRWxl
bWVudCA9IFdlYkluc3BlY3Rvci5kZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLmxpbmtpZnlMb2Nh
dGlvbih0aGlzLnByb2ZpbGVOb2RlLnVybCwgbGluZU51bWJlciwgMCwgInByb2ZpbGUtbm9kZS1m
aWxlIik7CisgICAgICAgICAgICB2YXIgdXJsRWxlbWVudCA9IFdlYkluc3BlY3Rvci5Qcm9maWxl
c1BhbmVsLmxpbmtpZmllci5saW5raWZ5TG9jYXRpb24odGhpcy5wcm9maWxlTm9kZS51cmwsIGxp
bmVOdW1iZXIsIDAsICJwcm9maWxlLW5vZGUtZmlsZSIpOwogICAgICAgICAgICAgdXJsRWxlbWVu
dC5zdHlsZS5tYXhXaWR0aCA9ICI3NSUiOwogICAgICAgICAgICAgY2VsbC5pbnNlcnRCZWZvcmUo
dXJsRWxlbWVudCwgY2VsbC5maXJzdENoaWxkKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlc1BhbmVsLmpzIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlc1BhbmVsLmpzCmluZGV4IDEyYmEw
ZWQzMWU5NDg3ZWJlZGU3M2U2YmE3ODEwMmVkODY3YmJjNjYuLmJmN2NjNGMwNjUyNDZiZjhiMjQy
NjlhZjVmYjZlMGViMDA0ODY0N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvUHJvZmlsZXNQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1Byb2ZpbGVzUGFuZWwuanMKQEAgLTEyMyw2ICsxMjMsNyBAQCBXZWJJbnNw
ZWN0b3IuUHJvZmlsZXNQYW5lbCA9IGZ1bmN0aW9uKCkKIAogICAgIHRoaXMuX3Byb2ZpbGVzID0g
W107CiAgICAgdGhpcy5fcHJvZmlsZXJFbmFibGVkID0gUHJlZmVyZW5jZXMucHJvZmlsZXJBbHdh
eXNFbmFibGVkOworICAgIFdlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsLmxpbmtpZmllciA9IG5l
dyBXZWJJbnNwZWN0b3IuTGlua2lmaWVyKCk7CiAgICAgdGhpcy5fcmVzZXQoKTsKIAogICAgIHRo
aXMuX3JlZ2lzdGVyUHJvZmlsZVR5cGUobmV3IFdlYkluc3BlY3Rvci5DUFVQcm9maWxlVHlwZSgp
KTsKQEAgLTIzMiw2ICsyMzMsOCBAQCBXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5wcm90b3R5
cGUgPSB7CiAKICAgICAgICAgdGhpcy5fdXBkYXRlSW50ZXJmYWNlKCk7CiAgICAgICAgIHRoaXMu
d2VsY29tZVZpZXcuc2hvdygpOworCisgICAgICAgIFdlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVs
LmxpbmtpZmllci5yZXNldCgpOwogICAgIH0sCiAKICAgICBfY2xlYXJQcm9maWxlczogZnVuY3Rp
b24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1l
bGluZVBhbmVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGlu
ZVBhbmVsLmpzCmluZGV4IGUyODFjNWNmMjY0MGU5NTVjZjk1ZTI0YzI2OTI0NTU4ODNjYTkzOTEu
LjNmMzhhZTI2YjJkNDYwZGQ1MWQzN2Y0ZDJjMjI1OWMwNzI1ZjhkMzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVQYW5lbC5qcworKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lUGFuZWwuanMKQEAgLTEw
OSw2ICsxMDksNyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbCA9IGZ1bmN0aW9uKCkKIAog
ICAgIHRoaXMuX3JlZ2lzdGVyU2hvcnRjdXRzKCk7CiAgICAgV2ViSW5zcGVjdG9yLnRpbWVsaW5l
TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5UaW1lbGluZU1hbmFnZXIuRXZl
bnRUeXBlcy5UaW1lbGluZUV2ZW50UmVjb3JkZWQsIHRoaXMuX29uVGltZWxpbmVFdmVudFJlY29y
ZGVkLCB0aGlzKTsKKyAgICBXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5fbGlua2lmaWVyID0g
bmV3IFdlYkluc3BlY3Rvci5MaW5raWZpZXIoKTsKIH0KIAogLy8gRGVmaW5lIHJvdyBoZWlnaHQs
IHNob3VsZCBiZSBpbiBzeW5jIHdpdGggc3R5bGVzIGZvciB0aW1lbGluZSBncmFwaHMuCkBAIC01
MjgsNiArNTI5LDcgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwucHJvdG90eXBlID0gewog
ICAgICAgICB0aGlzLl9yZWZyZXNoKCk7CiAgICAgICAgIHRoaXMuX2Nsb3NlUmVjb3JkRGV0YWls
cygpOwogICAgICAgICB0aGlzLl9tb2RlbC5fcmVzZXQoKTsKKyAgICAgICAgV2ViSW5zcGVjdG9y
LlRpbWVsaW5lUGFuZWwuX2xpbmtpZmllci5yZXNldCgpOwogICAgIH0sCiAKICAgICBlbGVtZW50
c1RvUmVzdG9yZVNjcm9sbFBvc2l0aW9uc0ZvcjogZnVuY3Rpb24oKQpAQCAtMTE3Niw3ICsxMTc4
LDcgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwuRm9ybWF0dGVkUmVjb3JkLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgLy8gRklYTUUoNjI3MjUpOiBzdGFjayB0cmFjZSBsaW5lL2NvbHVtbiBu
dW1iZXJzIGFyZSBvbmUtYmFzZWQuCiAgICAgICAgIGxpbmVOdW1iZXIgPSBsaW5lTnVtYmVyID8g
bGluZU51bWJlciAtIDEgOiBsaW5lTnVtYmVyOwogICAgICAgICBjb2x1bW5OdW1iZXIgPSBjb2x1
bW5OdW1iZXIgPyBjb2x1bW5OdW1iZXIgLSAxIDogMDsKLSAgICAgICAgcmV0dXJuIFdlYkluc3Bl
Y3Rvci5kZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLmxpbmtpZnlMb2NhdGlvbih1cmwsIGxpbmVO
dW1iZXIsIGNvbHVtbk51bWJlciwgInRpbWVsaW5lLWRldGFpbHMiKTsKKyAgICAgICAgcmV0dXJu
IFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLl9saW5raWZpZXIubGlua2lmeUxvY2F0aW9uKHVy
bCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCAidGltZWxpbmUtZGV0YWlscyIpOwogICAgIH0s
CiAKICAgICBfbGlua2lmeUNhbGxGcmFtZTogZnVuY3Rpb24oY2FsbEZyYW1lKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjCmluZGV4IDUyYWM5MzQyNDNi
MGE5ZmI1YjQyMDFkNzNkNzFmNjY4YWJkMjQ2YzQuLmYyYzIxMTNmM2EzN2JmNzlhZTBkNTA4Yzdj
MjYzODBmM2YxZWE3OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvV2ViS2l0LnFyYworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1dlYktpdC5xcmMKQEAgLTM2LDYgKzM2LDcgQEAKICAgICA8ZmlsZT5EYXRhR3JpZC5qczwvZmls
ZT4KICAgICA8ZmlsZT5EZWJ1Z2dlck1vZGVsLmpzPC9maWxlPgogICAgIDxmaWxlPkRlYnVnZ2Vy
UHJlc2VudGF0aW9uTW9kZWwuanM8L2ZpbGU+CisgICAgPGZpbGU+TGlua2lmaWVyLmpzPC9maWxl
PgogICAgIDxmaWxlPkRPTUFnZW50LmpzPC9maWxlPgogICAgIDxmaWxlPkRPTUJyZWFrcG9pbnRz
U2lkZWJhclBhbmUuanM8L2ZpbGU+CiAgICAgPGZpbGU+RE9NU3RvcmFnZS5qczwvZmlsZT4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0
bWwgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sCmlu
ZGV4IGM3NTg3ZWIzODM0OTM5NzRlYTMzNDZhYzBlY2Q0MWM1ZDJkYzcwMzMuLjM3ZDcyMzVhZTJh
ZjNmMzU3M2EwYzMzZDJjNzFlZDRmZDg2NWQ3NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbApAQCAtMTU4LDYgKzE1OCw3IEBAIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iRGV0YWlsZWRI
ZWFwc2hvdFZpZXcuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2Ny
aXB0IiBzcmM9IkRlYnVnZ2VyTW9kZWwuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0i
dGV4dC9qYXZhc2NyaXB0IiBzcmM9IkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuanMiPjwvc2Ny
aXB0PgorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkxpbmtpZmllci5q
cyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iQnJl
YWtwb2ludE1hbmFnZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZh
c2NyaXB0IiBzcmM9IlVJU291cmNlQ29kZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBl
PSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iQ29udGVudFByb3ZpZGVycy5qcyI+PC9zY3JpcHQ+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109483</attachid>
            <date>2011-10-03 07:46:18 -0700</date>
            <delta_ts>2011-10-04 09:10:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-69146-20111003184616.patch</filename>
            <type>text/plain</type>
            <size>31833</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTY0OTgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0NjNkZmMzNTkwMzcxMjMx
ZDY3Y2NhNWIwNWZiNTI2YTIwNTJjYzI4Li40YTk0OGFiNTc3ZDM2MmU4ZDJjMGY0YmY1NGYxNTVl
Mzc3OGE5ZTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTggQEAKKzIwMTEtMTAtMDMgIElseWEg
VGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IGRlYnVnZ2VyUHJlc2VudGF0aW9Nb2RlbC5saW5raWZ5TG9jYXRpb24gbGVha3MgdXBkYXRl
QW5jaG9yIGNsb3N1cmUgaW5zdGFuY2VzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NjkxNDYKKworICAgICAgICBJbiBtYW55IHBsYWNlcyB3ZSB1c2Ug
bGlua2lmeUxvY2F0aW9uIGZ1bmN0aW9uIHRvIHByb2R1Y2UgYSBsaW5rIG5vZGUgd2hpY2ggdXBk
YXRlcyBhdXRvbWF0aWNhbGx5IHdoZW4gdGhlIHNvdXJjZSBmaWxlIGlzIGNoYW5nZWQgb24gdGhl
IGZseS4KKyAgICAgICAgU3VjaCBjaGFuZ2VzIGhhcHBlbiB3aGVuIHdlIHVzZSBwcmV0dHkgcHJp
bnQgb3IgYW5vdGhlciBvcGVyYXRpb24gdGhhdCBjaGFuZ2VzIHRoZSBzb3VyY2UgY29kZSBzb21l
aG93LgorICAgICAgICBsaW5raWZ5TG9jYXRpb24gYXNzb2NpYXRlcyBhIG5ldyBpbnN0YW5jZSBv
ZiB1cGRhdGVBbmNob3IgY2xvc3VyZSB3aXRoIHRoZSBlYWNoIGxpbmsgbm9kZSBhbmQgYWRkIHRo
ZSBjbG9zdXJlIHRvIHRoZSBTb3VyY2VNYXBwaW5nVXBkYXRlZCBldmVudCdzIGxpc3QuCisgICAg
ICAgIEFzIHRoZSByZXN1bHQgdGhlIG5vZGU8LT5jbG9zdXJlIHBhaXJzIHdvdWxkbid0IGJlIGNv
bGxlY3RlZCB1bnRpbCByZXNldCB0aGUgVUkgYW5kIERlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwu
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDog
aW5zcGVjdG9yL3BlcmZvcm1hbmNlL3Jlc291cmNlcy9uZXR3b3JrLWFwcGVuZC0zMC1yZXF1ZXN0
cy5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xl
TWVzc2FnZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5wcm90b3R5
cGUuX2xpbmtpZnlMb2NhdGlvbik6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9Db25z
b2xlVmlldy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db25zb2xlVmlldy5wcm90b3R5cGUu
X2NvbnNvbGVDbGVhcmVkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0RlYnVnZ2Vy
UHJlc2VudGF0aW9uTW9kZWwuanM6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9FdmVu
dExpc3RlbmVyc1NpZGViYXJQYW5lLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkV2ZW50TGlz
dGVuZXJzU2lkZWJhclBhbmUucHJvdG90eXBlLnVwZGF0ZS5jYWxsYmFjayk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuRXZlbnRMaXN0ZW5lcnNTaWRlYmFyUGFuZS5wcm90b3R5cGUudXBkYXRlKToK
KyAgICAgICAgKCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9MaW5raWZpZXIuanM6
IEFkZGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLkxpbmtpZmllcik6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuTGlua2lmaWVyLnByb3RvdHlwZS5saW5raWZ5TG9jYXRpb24pOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkxpbmtpZmllci5wcm90b3R5cGUucmVzZXQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkxpbmtpZmllci5wcm90b3R5cGUuX3VwZGF0ZVNvdXJjZUFuY2hvcnMpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkxpbmtpZmllci5wcm90b3R5cGUuX3VwZGF0ZUFuY2hvcik6CisgICAg
ICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrUGFuZWwuanM6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuTmV0d29ya0xvZ1ZpZXcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtM
b2dWaWV3LnByb3RvdHlwZS5fcmVzZXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtE
YXRhR3JpZE5vZGUucHJvdG90eXBlLl9yZWZyZXNoSW5pdGlhdG9yQ2VsbCk6CisgICAgICAgICog
aW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlRGF0YUdyaWRUcmVlLmpzOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlByb2ZpbGVEYXRhR3JpZE5vZGUucHJvdG90eXBlLmNyZWF0ZUNlbGwpOgorICAg
ICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUHJvZmlsZVZpZXcuanM6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuQ1BVUHJvZmlsZVZpZXcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNQVVByb2Zp
bGVWaWV3LnByb3RvdHlwZS5fcmVzZXRDbGlja2VkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJv
bnQtZW5kL1RpbWVsaW5lUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVQ
YW5lbCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5wcm90b3R5cGUuX2xp
bmtpZnlMb2NhdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5wcm90
b3R5cGUuX2xpbmtpZnlDYWxsRnJhbWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5l
UGFuZWwucHJvdG90eXBlLl9jbGVhclBhbmVsKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1l
bGluZVBhbmVsLkZvcm1hdHRlZFJlY29yZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxp
bmVQYW5lbC5Gb3JtYXR0ZWRSZWNvcmQucHJvdG90eXBlLl9nZW5lcmF0ZVBvcHVwQ29udGVudCk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5Gb3JtYXR0ZWRSZWNvcmQucHJv
dG90eXBlLl9nZXRSZWNvcmREZXRhaWxzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGlu
ZVBhbmVsLlBvcHVwQ29udGVudEhlbHBlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxp
bmVQYW5lbC5Qb3B1cENvbnRlbnRIZWxwZXIucHJvdG90eXBlLl9hcHBlbmRMaW5rUm93KToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLlBvcHVwQ29udGVudEhlbHBlci5wcm90
b3R5cGUuX2FwcGVuZFN0YWNrVHJhY2UpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQv
V2ViS2l0LnFyYzoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1s
OgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzOgorCiAyMDExLTEw
LTAzICBEaXJrIFNjaHVsemUgIDxrcml0QHdlYmtpdC5vcmc+CiAKICAgICAgICAgZmVDb2xvck1h
dHJpeCBzYXR1cmF0aW9uIGlzIG5vdCBsaW1pdGVkIHRvIHJhbmdlIDAuLjEgYW55bW9yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCmluZGV4IGZhM2Y5MTIzZGM3OWUxMzQ2M2ZjZWYwNTc2ZTBlMDg0ZDFiOTMxNjIu
LjZmYjJiZTA5OWZiMjEzMDEyYjVkMTZmODk3Yjc5OWVjNDNhMDk2M2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkKQEAgLTYyMzQsNiArNjIzNCw3IEBACiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVu
ZC9EYXRhR3JpZC5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dl
ck1vZGVsLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0RlYnVnZ2VyUHJl
c2VudGF0aW9uTW9kZWwuanMnLAorICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvTGlu
a2lmaWVyLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0RldGFpbGVkSGVh
cHNob3RHcmlkTm9kZXMuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvRGV0
YWlsZWRIZWFwc2hvdFZpZXcuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQv
RE9NQWdlbnQuanMnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvagppbmRleCBmZTlmYmY1ZWQyMDJkZmFhYTJjYTg4MDlkYTE0YzNlNGQyZGRjMTFkLi4yY2Q4
MjIwOWUxNjJlZWVkZTI1NTEzOThhMGI1MjY0ZjcwNTE5MGMxIDEwMDc1NQotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNjkzNDksNiArNjkzNDksMTAgQEAK
IAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGlu
c3BlY3Rvclxmcm9udC1lbmRcTGlua2lmaWVyLmpzIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJ
CTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxNZXRyaWNz
U2lkZWJhclBhbmUuanMiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVNZXNzYWdlLmpzIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xlTWVzc2FnZS5qcwppbmRleCA4YjViZGMx
NzkyMzdjNzc0ZjEyZGM5ZmU5OGNjMjAyOTY5ZmI3YmQ1Li5kMGI3ZWYxODM1ZDBiMGIwM2JjZTRl
MDkxMTQ1NGRiZjEzY2E2ZjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0NvbnNvbGVNZXNzYWdlLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvQ29uc29sZU1lc3NhZ2UuanMKQEAgLTE5Miw3ICsxOTIsNyBAQCBXZWJJbnNw
ZWN0b3IuQ29uc29sZU1lc3NhZ2UucHJvdG90eXBlID0gewogICAgICAgICAvLyBGSVhNRSg2Mjcy
NSk6IHN0YWNrIHRyYWNlIGxpbmUvY29sdW1uIG51bWJlcnMgYXJlIG9uZS1iYXNlZC4KICAgICAg
ICAgbGluZU51bWJlciA9IGxpbmVOdW1iZXIgPyBsaW5lTnVtYmVyIC0gMSA6IHVuZGVmaW5lZDsK
ICAgICAgICAgY29sdW1uTnVtYmVyID0gY29sdW1uTnVtYmVyID8gY29sdW1uTnVtYmVyIC0gMSA6
IDA7Ci0gICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuZGVidWdnZXJQcmVzZW50YXRpb25Nb2Rl
bC5saW5raWZ5TG9jYXRpb24odXJsLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsICJjb25zb2xl
LW1lc3NhZ2UtdXJsIik7CisgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcu
bGlua2lmaWVyLmxpbmtpZnlMb2NhdGlvbih1cmwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwg
ImNvbnNvbGUtbWVzc2FnZS11cmwiKTsKICAgICB9LAogCiAgICAgX2xpbmtpZnlDYWxsRnJhbWU6
IGZ1bmN0aW9uKGNhbGxGcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvQ29uc29sZVZpZXcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0NvbnNvbGVWaWV3LmpzCmluZGV4IDljY2NlMTZlYTdmOTU2Mzk2MjJhYjIyN2Y3Yjlj
NGJhZDM5YTc3MjUuLjlhZGViZDk1ZWM2OWI2MWY4ZmQ3YjdjODk4OGQwNWI5OTY2MTE5NzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29uc29sZVZpZXcu
anMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xlVmlldy5q
cwpAQCAtMTA5LDYgKzEwOSw4IEBAIFdlYkluc3BlY3Rvci5Db25zb2xlVmlldyA9IGZ1bmN0aW9u
KCkKIAogICAgIFdlYkluc3BlY3Rvci5jb25zb2xlLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVj
dG9yLkNvbnNvbGVNb2RlbC5FdmVudHMuTWVzc2FnZUFkZGVkLCB0aGlzLl9jb25zb2xlTWVzc2Fn
ZUFkZGVkLCB0aGlzKTsKICAgICBXZWJJbnNwZWN0b3IuY29uc29sZS5hZGRFdmVudExpc3RlbmVy
KFdlYkluc3BlY3Rvci5Db25zb2xlTW9kZWwuRXZlbnRzLkNvbnNvbGVDbGVhcmVkLCB0aGlzLl9j
b25zb2xlQ2xlYXJlZCwgdGhpcyk7CisKKyAgICBXZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcubGlu
a2lmaWVyID0gbmV3IFdlYkluc3BlY3Rvci5MaW5raWZpZXIoV2ViSW5zcGVjdG9yLmRlYnVnZ2Vy
UHJlc2VudGF0aW9uTW9kZWwpOwogfQogCiBXZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcuRXZlbnRz
ID0gewpAQCAtMzI4LDYgKzMzMCw4IEBAIFdlYkluc3BlY3Rvci5Db25zb2xlVmlldy5wcm90b3R5
cGUgPSB7CiAgICAgICAgIGRlbGV0ZSB0aGlzLnByZXZpb3VzTWVzc2FnZTsKIAogICAgICAgICB0
aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcuRXZl
bnRzLkNvbnNvbGVDbGVhcmVkKTsKKworICAgICAgICBXZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcu
bGlua2lmaWVyLnJlc2V0KCk7CiAgICAgfSwKIAogICAgIGNvbXBsZXRpb25zOiBmdW5jdGlvbih3
b3JkUmFuZ2UsIGJlc3RNYXRjaE9ubHksIGNvbXBsZXRpb25zUmVhZHlDYWxsYmFjaykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJQcmVzZW50
YXRpb25Nb2RlbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVidWdn
ZXJQcmVzZW50YXRpb25Nb2RlbC5qcwppbmRleCAzYjJmODg0OTg2OWNkYmQ3YmM1OTVhN2Q3ODky
N2E2ZGVjOGJiZDdkLi40YTI4NzVjNjE5NzYzMjA4NDhiNjBjNGVjY2RkYWI3MDE1MWEzYzRkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RlYnVnZ2VyUHJl
c2VudGF0aW9uTW9kZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLmpzCkBAIC02NiwzMiArNjYsNiBAQCBXZWJJbnNw
ZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5FdmVudHMgPSB7CiB9CiAKIFdlYkluc3Bl
Y3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZSA9IHsKLSAgICBsaW5raWZ5
TG9jYXRpb246IGZ1bmN0aW9uKHNvdXJjZVVSTCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBj
bGFzc2VzKQotICAgIHsKLSAgICAgICAgdmFyIGxpbmtUZXh0ID0gV2ViSW5zcGVjdG9yLmZvcm1h
dExpbmtUZXh0KHNvdXJjZVVSTCwgbGluZU51bWJlcik7Ci0gICAgICAgIHZhciBhbmNob3IgPSBX
ZWJJbnNwZWN0b3IubGlua2lmeVVSTEFzTm9kZShzb3VyY2VVUkwsIGxpbmtUZXh0LCBjbGFzc2Vz
LCBmYWxzZSk7Ci0KLSAgICAgICAgdmFyIHJhd1NvdXJjZUNvZGUgPSB0aGlzLl9yYXdTb3VyY2VD
b2RlRm9yU2NyaXB0KHNvdXJjZVVSTCk7Ci0gICAgICAgIGlmICghcmF3U291cmNlQ29kZSkgewot
ICAgICAgICAgICAgYW5jaG9yLnNldEF0dHJpYnV0ZSgicHJlZmVycmVkX3BhbmVsIiwgInJlc291
cmNlcyIpOwotICAgICAgICAgICAgYW5jaG9yLnNldEF0dHJpYnV0ZSgibGluZV9udW1iZXIiLCBs
aW5lTnVtYmVyKTsKLSAgICAgICAgICAgIHJldHVybiBhbmNob3I7Ci0gICAgICAgIH0KLQotICAg
ICAgICBmdW5jdGlvbiB1cGRhdGVBbmNob3IoKQotICAgICAgICB7Ci0gICAgICAgICAgICB2YXIg
dWlMb2NhdGlvbiA9IHJhd1NvdXJjZUNvZGUuc291cmNlTWFwcGluZy5yYXdMb2NhdGlvblRvVUlM
b2NhdGlvbih7IGxpbmVOdW1iZXI6IGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcjogY29sdW1uTnVt
YmVyIH0pOwotICAgICAgICAgICAgYW5jaG9yLnRleHRDb250ZW50ID0gV2ViSW5zcGVjdG9yLmZv
cm1hdExpbmtUZXh0KHVpTG9jYXRpb24udWlTb3VyY2VDb2RlLnVybCwgdWlMb2NhdGlvbi5saW5l
TnVtYmVyKTsKLSAgICAgICAgICAgIGFuY2hvci5zZXRBdHRyaWJ1dGUoInByZWZlcnJlZF9wYW5l
bCIsICJzY3JpcHRzIik7Ci0gICAgICAgICAgICBhbmNob3IudWlTb3VyY2VDb2RlID0gdWlMb2Nh
dGlvbi51aVNvdXJjZUNvZGU7Ci0gICAgICAgICAgICBhbmNob3IubGluZU51bWJlciA9IHVpTG9j
YXRpb24ubGluZU51bWJlcjsKLSAgICAgICAgfQotICAgICAgICBpZiAocmF3U291cmNlQ29kZS5z
b3VyY2VNYXBwaW5nKQotICAgICAgICAgICAgdXBkYXRlQW5jaG9yLmNhbGwodGhpcyk7Ci0gICAg
ICAgIHJhd1NvdXJjZUNvZGUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuUmF3U291cmNl
Q29kZS5FdmVudHMuU291cmNlTWFwcGluZ1VwZGF0ZWQsIHVwZGF0ZUFuY2hvciwgdGhpcyk7Ci0g
ICAgICAgIHJldHVybiBhbmNob3I7Ci0gICAgfSwKLQogICAgIF9wYXJzZWRTY3JpcHRTb3VyY2U6
IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5fYWRkU2NyaXB0KGV2ZW50LmRh
dGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FdmVu
dExpc3RlbmVyc1NpZGViYXJQYW5lLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9FdmVudExpc3RlbmVyc1NpZGViYXJQYW5lLmpzCmluZGV4IDJlYjg2NDk2MDFiZmMzMDQ4
ZjA1ZmU3YWRjYjU2Y2I1MjM4ZmMzZGYuLmRlZTMzMTQyZmViYjkyYzk3YzQ3OWMzZGFmMDFkODBh
Mzc1MzlhZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
RXZlbnRMaXN0ZW5lcnNTaWRlYmFyUGFuZS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0V2ZW50TGlzdGVuZXJzU2lkZWJhclBhbmUuanMKQEAgLTU2LDYgKzU2LDgg
QEAgV2ViSW5zcGVjdG9yLkV2ZW50TGlzdGVuZXJzU2lkZWJhclBhbmUgPSBmdW5jdGlvbigpCiAg
ICAgdGhpcy5zZXR0aW5nc1NlbGVjdEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIiwg
dGhpcy5fY2hhbmdlU2V0dGluZy5iaW5kKHRoaXMpLCBmYWxzZSk7CiAKICAgICB0aGlzLnRpdGxl
RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLnNldHRpbmdzU2VsZWN0RWxlbWVudCk7CisKKyAgICB0
aGlzLl9saW5raWZpZXIgPSBuZXcgV2ViSW5zcGVjdG9yLkxpbmtpZmllcihXZWJJbnNwZWN0b3Iu
ZGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbCk7CiB9CiAKIFdlYkluc3BlY3Rvci5FdmVudExpc3Rl
bmVyc1NpZGViYXJQYW5lLl9vYmplY3RHcm91cE5hbWUgPSAiZXZlbnQtbGlzdGVuZXJzLXNpZGVi
YXItcGFuZSI7CkBAIC02NCw2ICs2Niw4IEBAIFdlYkluc3BlY3Rvci5FdmVudExpc3RlbmVyc1Np
ZGViYXJQYW5lLnByb3RvdHlwZSA9IHsKICAgICB1cGRhdGU6IGZ1bmN0aW9uKG5vZGUpCiAgICAg
ewogICAgICAgICBSdW50aW1lQWdlbnQucmVsZWFzZU9iamVjdEdyb3VwKFdlYkluc3BlY3Rvci5F
dmVudExpc3RlbmVyc1NpZGViYXJQYW5lLl9vYmplY3RHcm91cE5hbWUpOworICAgICAgICB0aGlz
Ll9saW5raWZpZXIucmVzZXQoKTsKKwogICAgICAgICB2YXIgYm9keSA9IHRoaXMuYm9keUVsZW1l
bnQ7CiAgICAgICAgIGJvZHkucmVtb3ZlQ2hpbGRyZW4oKTsKICAgICAgICAgdGhpcy5zZWN0aW9u
cyA9IFtdOwpAQCAtODQsNyArODgsNyBAQCBXZWJJbnNwZWN0b3IuRXZlbnRMaXN0ZW5lcnNTaWRl
YmFyUGFuZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgdmFyIHR5cGUgPSBldmVudExp
c3RlbmVyLnR5cGU7CiAgICAgICAgICAgICAgICAgdmFyIHNlY3Rpb24gPSBzZWN0aW9uTWFwW3R5
cGVdOwogICAgICAgICAgICAgICAgIGlmICghc2VjdGlvbikgewotICAgICAgICAgICAgICAgICAg
ICBzZWN0aW9uID0gbmV3IFdlYkluc3BlY3Rvci5FdmVudExpc3RlbmVyc1NlY3Rpb24odHlwZSwg
bm9kZS5pZCk7CisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gPSBuZXcgV2ViSW5zcGVjdG9y
LkV2ZW50TGlzdGVuZXJzU2VjdGlvbih0eXBlLCBub2RlLmlkLCBzZWxmLl9saW5raWZpZXIpOwog
ICAgICAgICAgICAgICAgICAgICBzZWN0aW9uTWFwW3R5cGVdID0gc2VjdGlvbjsKICAgICAgICAg
ICAgICAgICAgICAgc2VjdGlvbk5hbWVzLnB1c2godHlwZSk7CiAgICAgICAgICAgICAgICAgICAg
IHNlbGYuc2VjdGlvbnMucHVzaChzZWN0aW9uKTsKQEAgLTEyNCwxMCArMTI4LDExIEBAIFdlYklu
c3BlY3Rvci5FdmVudExpc3RlbmVyc1NpZGViYXJQYW5lLnByb3RvdHlwZSA9IHsKIAogV2ViSW5z
cGVjdG9yLkV2ZW50TGlzdGVuZXJzU2lkZWJhclBhbmUucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdl
Ykluc3BlY3Rvci5TaWRlYmFyUGFuZS5wcm90b3R5cGU7CiAKLVdlYkluc3BlY3Rvci5FdmVudExp
c3RlbmVyc1NlY3Rpb24gPSBmdW5jdGlvbih0aXRsZSwgbm9kZUlkKQorV2ViSW5zcGVjdG9yLkV2
ZW50TGlzdGVuZXJzU2VjdGlvbiA9IGZ1bmN0aW9uKHRpdGxlLCBub2RlSWQsIGxpbmtpZmllcikK
IHsKICAgICB0aGlzLmV2ZW50TGlzdGVuZXJzID0gW107CiAgICAgdGhpcy5fbm9kZUlkID0gbm9k
ZUlkOworICAgIHRoaXMuX2xpbmtpZmllciA9IGxpbmtpZmllcjsKICAgICBXZWJJbnNwZWN0b3Iu
UHJvcGVydGllc1NlY3Rpb24uY2FsbCh0aGlzLCB0aXRsZSk7CiAKICAgICAvLyBDaGFuZ2VkIGZy
b20gYSBQcm9wZXJ0aWVzIExpc3QKQEAgLTE1OCw3ICsxNjMsNyBAQCBXZWJJbnNwZWN0b3IuRXZl
bnRMaXN0ZW5lcnNTZWN0aW9uLnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFyIGxlbmd0aCA9IGZp
bHRlcmVkRXZlbnRMaXN0ZW5lcnMubGVuZ3RoOwogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IGxlbmd0aDsgKytpKSB7CiAgICAgICAgICAgICB2YXIgZXZlbnRMaXN0ZW5lciA9IGZpbHRlcmVk
RXZlbnRMaXN0ZW5lcnNbaV07Ci0gICAgICAgICAgICB2YXIgZXZlbnRMaXN0ZW5lckJhciA9IG5l
dyBXZWJJbnNwZWN0b3IuRXZlbnRMaXN0ZW5lckJhcihldmVudExpc3RlbmVyLCB0aGlzLl9ub2Rl
SWQpOworICAgICAgICAgICAgdmFyIGV2ZW50TGlzdGVuZXJCYXIgPSBuZXcgV2ViSW5zcGVjdG9y
LkV2ZW50TGlzdGVuZXJCYXIoZXZlbnRMaXN0ZW5lciwgdGhpcy5fbm9kZUlkLCB0aGlzLl9saW5r
aWZpZXIpOwogICAgICAgICAgICAgdGhpcy5ldmVudEJhcnMuYXBwZW5kQ2hpbGQoZXZlbnRMaXN0
ZW5lckJhci5lbGVtZW50KTsKICAgICAgICAgfQogICAgIH0sCkBAIC0xNzEsMTMgKzE3NiwxMyBA
QCBXZWJJbnNwZWN0b3IuRXZlbnRMaXN0ZW5lcnNTZWN0aW9uLnByb3RvdHlwZSA9IHsKIAogV2Vi
SW5zcGVjdG9yLkV2ZW50TGlzdGVuZXJzU2VjdGlvbi5wcm90b3R5cGUuX19wcm90b19fID0gV2Vi
SW5zcGVjdG9yLlByb3BlcnRpZXNTZWN0aW9uLnByb3RvdHlwZTsKIAotV2ViSW5zcGVjdG9yLkV2
ZW50TGlzdGVuZXJCYXIgPSBmdW5jdGlvbihldmVudExpc3RlbmVyLCBub2RlSWQpCitXZWJJbnNw
ZWN0b3IuRXZlbnRMaXN0ZW5lckJhciA9IGZ1bmN0aW9uKGV2ZW50TGlzdGVuZXIsIG5vZGVJZCwg
bGlua2lmaWVyKQogewogICAgIHRoaXMuZXZlbnRMaXN0ZW5lciA9IGV2ZW50TGlzdGVuZXI7CiAg
ICAgdGhpcy5fbm9kZUlkID0gbm9kZUlkOwogICAgIFdlYkluc3BlY3Rvci5PYmplY3RQcm9wZXJ0
aWVzU2VjdGlvbi5jYWxsKHRoaXMpOwogICAgIHRoaXMuX3NldE5vZGVUaXRsZSgpOwotICAgIHRo
aXMuX3NldEZ1bmN0aW9uU3VidGl0bGUoKTsKKyAgICB0aGlzLl9zZXRGdW5jdGlvblN1YnRpdGxl
KGxpbmtpZmllcik7CiAgICAgdGhpcy5lZGl0YWJsZSA9IGZhbHNlOwogICAgIHRoaXMuZWxlbWVu
dC5jbGFzc05hbWUgPSAiZXZlbnQtYmFyIjsgLyogQ2hhbmdlZCBmcm9tICJzZWN0aW9uIiAqLwog
ICAgIHRoaXMuaGVhZGVyRWxlbWVudC5hZGRTdHlsZUNsYXNzKCJzb3VyY2UtY29kZSIpOwpAQCAt
MjMxLDcgKzIzNiw3IEBAIFdlYkluc3BlY3Rvci5FdmVudExpc3RlbmVyQmFyLnByb3RvdHlwZSA9
IHsKICAgICAgICAgdGhpcy50aXRsZUVsZW1lbnQuYXBwZW5kQ2hpbGQoV2ViSW5zcGVjdG9yLnBh
bmVscy5lbGVtZW50cy5saW5raWZ5Tm9kZVJlZmVyZW5jZSh0aGlzLmV2ZW50TGlzdGVuZXIubm9k
ZSkpOwogICAgIH0sCiAKLSAgICBfc2V0RnVuY3Rpb25TdWJ0aXRsZTogZnVuY3Rpb24oKQorICAg
IF9zZXRGdW5jdGlvblN1YnRpdGxlOiBmdW5jdGlvbihsaW5raWZpZXIpCiAgICAgewogICAgICAg
ICAvLyBSZXF1aXJlcyB0aGF0IEZ1bmN0aW9uLnRvU3RyaW5nKCkgcmV0dXJuIGF0IGxlYXN0IHRo
ZSBmdW5jdGlvbidzIHNpZ25hdHVyZS4KICAgICAgICAgaWYgKHRoaXMuZXZlbnRMaXN0ZW5lci5s
b2NhdGlvbikgewpAQCAtMjQwLDcgKzI0NSw3IEBAIFdlYkluc3BlY3Rvci5FdmVudExpc3RlbmVy
QmFyLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHZhciB1cmwgPSB0aGlzLmV2ZW50TGlzdGVu
ZXIubG9jYXRpb24uc2NyaXB0SWQ7CiAgICAgICAgICAgICB2YXIgbGluZU51bWJlciA9IHRoaXMu
ZXZlbnRMaXN0ZW5lci5sb2NhdGlvbi5saW5lTnVtYmVyIC0gMTsKICAgICAgICAgICAgIHZhciBj
b2x1bW5OdW1iZXIgPSAwOwotICAgICAgICAgICAgdmFyIHVybEVsZW1lbnQgPSBXZWJJbnNwZWN0
b3IuZGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5saW5raWZ5TG9jYXRpb24odXJsLCBsaW5lTnVt
YmVyLCBjb2x1bW5OdW1iZXIpOworICAgICAgICAgICAgdmFyIHVybEVsZW1lbnQgPSBsaW5raWZp
ZXIubGlua2lmeUxvY2F0aW9uKHVybCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyKTsKICAgICAg
ICAgICAgIHRoaXMuc3VidGl0bGVFbGVtZW50LmFwcGVuZENoaWxkKHVybEVsZW1lbnQpOwogICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgdmFyIG1hdGNoID0gdGhpcy5ldmVudExpc3RlbmVy
LmhhbmRsZXJCb2R5Lm1hdGNoKC9mdW5jdGlvbiAoW15cKF0rPylcKC8pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9MaW5raWZpZXIuanMgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0xpbmtpZmllci5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MDVl
M2U0ZWRhODExNjNlMzQ5ZjIyNTRkODY5MDc1ZTE2ZGUyODhmCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9MaW5raWZpZXIuanMKQEAgLTAsMCAr
MSw5NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0Ogor
ICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisg
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKi8KK1dlYkluc3BlY3Rvci5MaW5raWZpZXIg
PSBmdW5jdGlvbihtb2RlbCkKK3sKKyAgICB0aGlzLl9tb2RlbCA9IG1vZGVsOworICAgIHRoaXMu
X2FuY2hvcnNGb3JVUkwgPSB7fTsKK30KKworV2ViSW5zcGVjdG9yLkxpbmtpZmllci5wcm90b3R5
cGUgPSB7CisgICAgbGlua2lmeUxvY2F0aW9uOiBmdW5jdGlvbihzb3VyY2VVUkwsIGxpbmVOdW1i
ZXIsIGNvbHVtbk51bWJlciwgY2xhc3NlcykKKyAgICB7CisgICAgICAgIHZhciBsaW5rVGV4dCA9
IFdlYkluc3BlY3Rvci5mb3JtYXRMaW5rVGV4dChzb3VyY2VVUkwsIGxpbmVOdW1iZXIpOworICAg
ICAgICB2YXIgYW5jaG9yID0gV2ViSW5zcGVjdG9yLmxpbmtpZnlVUkxBc05vZGUoc291cmNlVVJM
LCBsaW5rVGV4dCwgY2xhc3NlcywgZmFsc2UpOworICAgICAgICBhbmNob3IucmF3TG9jYXRpb24g
PSB7IGxpbmVOdW1iZXI6IGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcjogY29sdW1uTnVtYmVyIH07
CisKKyAgICAgICAgdmFyIHJhd1NvdXJjZUNvZGUgPSB0aGlzLl9tb2RlbC5fcmF3U291cmNlQ29k
ZUZvclNjcmlwdChzb3VyY2VVUkwpOworICAgICAgICBpZiAoIXJhd1NvdXJjZUNvZGUpIHsKKyAg
ICAgICAgICAgIGFuY2hvci5zZXRBdHRyaWJ1dGUoInByZWZlcnJlZF9wYW5lbCIsICJyZXNvdXJj
ZXMiKTsKKyAgICAgICAgICAgIGFuY2hvci5zZXRBdHRyaWJ1dGUoImxpbmVfbnVtYmVyIiwgbGlu
ZU51bWJlcik7CisgICAgICAgICAgICByZXR1cm4gYW5jaG9yOworICAgICAgICB9CisKKyAgICAg
ICAgdmFyIGFuY2hvcnMgPSB0aGlzLl9hbmNob3JzRm9yVVJMW3NvdXJjZVVSTF07CisgICAgICAg
IGlmICghYW5jaG9ycykgeworICAgICAgICAgICAgYW5jaG9ycyA9IFtdOworICAgICAgICAgICAg
dGhpcy5fYW5jaG9yc0ZvclVSTFtzb3VyY2VVUkxdID0gYW5jaG9yczsKKyAgICAgICAgICAgIHJh
d1NvdXJjZUNvZGUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZS5F
dmVudHMuU291cmNlTWFwcGluZ1VwZGF0ZWQsIHRoaXMuX3VwZGF0ZVNvdXJjZUFuY2hvcnMsIHRo
aXMpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHJhd1NvdXJjZUNvZGUuc291cmNlTWFwcGlu
ZykKKyAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUFuY2hvcihyYXdTb3VyY2VDb2RlLCBhbmNob3Ip
OworICAgICAgICBhbmNob3JzLnB1c2goYW5jaG9yKTsKKyAgICAgICAgcmV0dXJuIGFuY2hvcjsK
KyAgICB9LAorCisgICAgcmVzZXQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGZvciAodmFy
IHNvdXJjZVVSTCBpbiB0aGlzLl9hbmNob3JzRm9yVVJMKSB7CisgICAgICAgICAgICB2YXIgcmF3
U291cmNlQ29kZSA9IHRoaXMuX21vZGVsLl9yYXdTb3VyY2VDb2RlRm9yU2NyaXB0KHNvdXJjZVVS
TCk7CisgICAgICAgICAgICBpZiAocmF3U291cmNlQ29kZSkKKyAgICAgICAgICAgICAgICByYXdT
b3VyY2VDb2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUu
RXZlbnRzLlNvdXJjZU1hcHBpbmdVcGRhdGVkLCB0aGlzLl91cGRhdGVTb3VyY2VBbmNvcnMsIHRo
aXMpOworICAgICAgICB9CisgICAgICAgIHRoaXMuX2FuY2hvcnNGb3JVUkwgPSB7fTsKKyAgICB9
LAorCisgICAgX3VwZGF0ZVNvdXJjZUFuY2hvcnM6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAg
ICAgICAgdmFyIHJhd1NvdXJjZUNvZGUgPSBldmVudC50YXJnZXQ7CisgICAgICAgIHZhciBhbmNo
b3JzID0gdGhpcy5fYW5jaG9yc0ZvclVSTFtyYXdTb3VyY2VDb2RlLnVybF07CisgICAgICAgIGlm
ICghYW5jaG9ycykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IGFuY2hvcnMubGVuZ3RoOyArK2kpCisgICAgICAgICAgICB0aGlzLl91cGRhdGVBbmNo
b3IocmF3U291cmNlQ29kZSwgYW5jaG9yc1tpXSk7CisgICAgfSwKKworICAgIF91cGRhdGVBbmNo
b3I6IGZ1bmN0aW9uKHJhd1NvdXJjZUNvZGUsIGFuY2hvcikKKyAgICB7CisgICAgICAgIHZhciB1
aUxvY2F0aW9uID0gcmF3U291cmNlQ29kZS5zb3VyY2VNYXBwaW5nLnJhd0xvY2F0aW9uVG9VSUxv
Y2F0aW9uKGFuY2hvci5yYXdMb2NhdGlvbik7CisgICAgICAgIGFuY2hvci50ZXh0Q29udGVudCA9
IFdlYkluc3BlY3Rvci5mb3JtYXRMaW5rVGV4dCh1aUxvY2F0aW9uLnVpU291cmNlQ29kZS51cmws
IHVpTG9jYXRpb24ubGluZU51bWJlcik7CisgICAgICAgIGFuY2hvci5zZXRBdHRyaWJ1dGUoInBy
ZWZlcnJlZF9wYW5lbCIsICJzY3JpcHRzIik7CisgICAgICAgIGFuY2hvci51aVNvdXJjZUNvZGUg
PSB1aUxvY2F0aW9uLnVpU291cmNlQ29kZTsKKyAgICAgICAgYW5jaG9yLmxpbmVOdW1iZXIgPSB1
aUxvY2F0aW9uLmxpbmVOdW1iZXI7CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtQYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya1BhbmVsLmpzCmluZGV4IDViYmI1OWI0OTIyN2M5
YzhlMDlhNmEwZTJhOGE0MzgzZDk4YWU5MzEuLjNiZTllNDdmYjM4NjMzZDljOTdlMTUyMTk5OWQw
YzQxZTE0ZGM4ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvTmV0d29ya1BhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvTmV0d29ya1BhbmVsLmpzCkBAIC01Niw2ICs1Niw3IEBAIFdlYkluc3BlY3Rvci5OZXR3b3Jr
TG9nVmlldyA9IGZ1bmN0aW9uKHBhcmVudEVsZW1lbnQpCiAKICAgICB0aGlzLl9jcmVhdGVTdGF0
dXNiYXJCdXR0b25zKCk7CiAgICAgdGhpcy5fY3JlYXRlRmlsdGVyU3RhdHVzQmFySXRlbXMoKTsK
KyAgICB0aGlzLl9saW5raWZpZXIgPSBuZXcgV2ViSW5zcGVjdG9yLkxpbmtpZmllcihXZWJJbnNw
ZWN0b3IuZGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbCk7CiAKICAgICBXZWJJbnNwZWN0b3IubmV0
d29ya01hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuTmV0d29ya01hbmFnZXIu
RXZlbnRUeXBlcy5SZXNvdXJjZVN0YXJ0ZWQsIHRoaXMuX29uUmVzb3VyY2VTdGFydGVkLCB0aGlz
KTsKICAgICBXZWJJbnNwZWN0b3IubmV0d29ya01hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJ
bnNwZWN0b3IuTmV0d29ya01hbmFnZXIuRXZlbnRUeXBlcy5SZXNvdXJjZVVwZGF0ZWQsIHRoaXMu
X29uUmVzb3VyY2VVcGRhdGVkLCB0aGlzKTsKQEAgLTczNSw3ICs3MzYsNyBAQCBXZWJJbnNwZWN0
b3IuTmV0d29ya0xvZ1ZpZXcucHJvdG90eXBlID0gewogCiAgICAgICAgIHRoaXMuX21haW5SZXNv
dXJjZUxvYWRUaW1lID0gLTE7CiAgICAgICAgIHRoaXMuX21haW5SZXNvdXJjZURPTUNvbnRlbnRU
aW1lID0gLTE7Ci0KKyAgICAgICAgdGhpcy5fbGlua2lmaWVyLnJlc2V0KCk7CiAgICAgfSwKIAog
ICAgIGdldCByZXNvdXJjZXMoKQpAQCAtMjA0MSw3ICsyMDQyLDcgQEAgV2ViSW5zcGVjdG9yLk5l
dHdvcmtEYXRhR3JpZE5vZGUucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHRoaXMuX2luaXRpYXRvckNl
bGwudGl0bGUgPSB0b3BGcmFtZS51cmwgKyAiOiIgKyB0b3BGcmFtZS5saW5lTnVtYmVyOwotICAg
ICAgICAgICAgICAgIHZhciB1cmxFbGVtZW50ID0gV2ViSW5zcGVjdG9yLmRlYnVnZ2VyUHJlc2Vu
dGF0aW9uTW9kZWwubGlua2lmeUxvY2F0aW9uKHRvcEZyYW1lLnVybCwgdG9wRnJhbWUubGluZU51
bWJlciAtIDEsIDApOworICAgICAgICAgICAgICAgIHZhciB1cmxFbGVtZW50ID0gdGhpcy5fcGFy
ZW50Vmlldy5fbGlua2lmaWVyLmxpbmtpZnlMb2NhdGlvbih0b3BGcmFtZS51cmwsIHRvcEZyYW1l
LmxpbmVOdW1iZXIgLSAxLCAwKTsKICAgICAgICAgICAgICAgICB0aGlzLl9pbml0aWF0b3JDZWxs
LmFwcGVuZENoaWxkKHVybEVsZW1lbnQpOwogICAgICAgICAgICAgICAgIHRoaXMuX2FwcGVuZFN1
YnRpdGxlKHRoaXMuX2luaXRpYXRvckNlbGwsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2NyaXB0
IikpOwogICAgICAgICAgICAgfSBlbHNlIHsgLy8gaW5pdGlhdG9yLnR5cGUgPT09ICJwYXJzZXIi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVE
YXRhR3JpZFRyZWUuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2Zp
bGVEYXRhR3JpZFRyZWUuanMKaW5kZXggNTg1NTY4YzNhYmEwNjk4MWNlYzg1MjlmMTE0MmI5MGYy
NjQzYjg3ZS4uY2Y0MGJjMjZlNzkwOTMwNTNmZDc5MmIzNzM3NTI4YjM0OWFmYjRmMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlRGF0YUdyaWRU
cmVlLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUHJvZmlsZURh
dGFHcmlkVHJlZS5qcwpAQCAtOTgsNyArOTgsNyBAQCBXZWJJbnNwZWN0b3IuUHJvZmlsZURhdGFH
cmlkTm9kZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmICh0aGlzLnByb2ZpbGVOb2RlLnVybCkg
ewogICAgICAgICAgICAgLy8gRklYTUUoNjI3MjUpOiBwcm9maWxlTm9kZSBzaG91bGQgcmVmZXJl
bmNlIGEgZGVidWdnZXIgbG9jYXRpb24uCiAgICAgICAgICAgICB2YXIgbGluZU51bWJlciA9IHRo
aXMucHJvZmlsZU5vZGUubGluZU51bWJlciA/IHRoaXMucHJvZmlsZU5vZGUubGluZU51bWJlciAt
IDEgOiAwOwotICAgICAgICAgICAgdmFyIHVybEVsZW1lbnQgPSBXZWJJbnNwZWN0b3IuZGVidWdn
ZXJQcmVzZW50YXRpb25Nb2RlbC5saW5raWZ5TG9jYXRpb24odGhpcy5wcm9maWxlTm9kZS51cmws
IGxpbmVOdW1iZXIsIDAsICJwcm9maWxlLW5vZGUtZmlsZSIpOworICAgICAgICAgICAgdmFyIHVy
bEVsZW1lbnQgPSB0aGlzLnByb2ZpbGVWaWV3Ll9saW5raWZpZXIubGlua2lmeUxvY2F0aW9uKHRo
aXMucHJvZmlsZU5vZGUudXJsLCBsaW5lTnVtYmVyLCAwLCAicHJvZmlsZS1ub2RlLWZpbGUiKTsK
ICAgICAgICAgICAgIHVybEVsZW1lbnQuc3R5bGUubWF4V2lkdGggPSAiNzUlIjsKICAgICAgICAg
ICAgIGNlbGwuaW5zZXJ0QmVmb3JlKHVybEVsZW1lbnQsIGNlbGwuZmlyc3RDaGlsZCk7CiAgICAg
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUHJv
ZmlsZVZpZXcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVW
aWV3LmpzCmluZGV4IDJhMDNmODMwNTFkYTU0MWVmZTQxNDA5YzExYmRkMmFlODk0MzFjZTIuLjYy
Y2ZmYzBiOTAwZWY3NzI5MzQ5NTM4NjM1MjM2MWVmMTc0ZmMwMWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUHJvZmlsZVZpZXcuanMKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlVmlldy5qcwpAQCAtOTYsNiArOTYs
OCBAQCBXZWJJbnNwZWN0b3IuQ1BVUHJvZmlsZVZpZXcgPSBmdW5jdGlvbihwcm9maWxlKQogICAg
ICAgICBzZWxmLl91cGRhdGVQZXJjZW50QnV0dG9uKCk7CiAgICAgfQogCisgICAgdGhpcy5fbGlu
a2lmaWVyID0gbmV3IFdlYkluc3BlY3Rvci5MaW5raWZpZXIoV2ViSW5zcGVjdG9yLmRlYnVnZ2Vy
UHJlc2VudGF0aW9uTW9kZWwpOworCiAgICAgUHJvZmlsZXJBZ2VudC5nZXRQcm9maWxlKHRoaXMu
cHJvZmlsZS50eXBlSWQsIHRoaXMucHJvZmlsZS51aWQsIHByb2ZpbGVDYWxsYmFjayk7CiB9CiAK
QEAgLTQ4NSw2ICs0ODcsNyBAQCBXZWJJbnNwZWN0b3IuQ1BVUHJvZmlsZVZpZXcucHJvdG90eXBl
ID0gewogICAgIHsKICAgICAgICAgdGhpcy5yZXNldEJ1dHRvbi52aXNpYmxlID0gZmFsc2U7CiAg
ICAgICAgIHRoaXMucHJvZmlsZURhdGFHcmlkVHJlZS5yZXN0b3JlKCk7CisgICAgICAgIHRoaXMu
X2xpbmtpaWVyLnJlc2V0KCk7CiAgICAgICAgIHRoaXMucmVmcmVzaCgpOwogICAgICAgICB0aGlz
LnJlZnJlc2hWaXNpYmxlRGF0YSgpOwogICAgIH0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lUGFuZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lUGFuZWwuanMKaW5kZXggZTI4MWM1Y2YyNjQwZTk1
NWNmOTVlMjRjMjY5MjQ1NTg4M2NhOTM5MS4uYTkyMmZiMTFiYzJiMWUyMTMwZWI1ZThjZDBmNzU5
NDg2NzVjZTk3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9UaW1lbGluZVBhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvVGltZWxpbmVQYW5lbC5qcwpAQCAtMTA5LDYgKzEwOSw3IEBAIFdlYkluc3BlY3Rvci5UaW1l
bGluZVBhbmVsID0gZnVuY3Rpb24oKQogCiAgICAgdGhpcy5fcmVnaXN0ZXJTaG9ydGN1dHMoKTsK
ICAgICBXZWJJbnNwZWN0b3IudGltZWxpbmVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5z
cGVjdG9yLlRpbWVsaW5lTWFuYWdlci5FdmVudFR5cGVzLlRpbWVsaW5lRXZlbnRSZWNvcmRlZCwg
dGhpcy5fb25UaW1lbGluZUV2ZW50UmVjb3JkZWQsIHRoaXMpOworICAgIHRoaXMuX2xpbmtpZmll
ciA9IG5ldyBXZWJJbnNwZWN0b3IuTGlua2lmaWVyKFdlYkluc3BlY3Rvci5kZWJ1Z2dlclByZXNl
bnRhdGlvbk1vZGVsKTsKIH0KIAogLy8gRGVmaW5lIHJvdyBoZWlnaHQsIHNob3VsZCBiZSBpbiBz
eW5jIHdpdGggc3R5bGVzIGZvciB0aW1lbGluZSBncmFwaHMuCkBAIC0xMTYsNiArMTE3LDE5IEBA
IFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLnJvd0hlaWdodCA9IDE4OwogV2ViSW5zcGVjdG9y
LlRpbWVsaW5lUGFuZWwuc2hvcnRSZWNvcmRUaHJlc2hvbGQgPSAwLjAxNTsKIAogV2ViSW5zcGVj
dG9yLlRpbWVsaW5lUGFuZWwucHJvdG90eXBlID0geworICAgIF9saW5raWZ5TG9jYXRpb246IGZ1
bmN0aW9uKHVybCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyKQorICAgIHsKKyAgICAgICAgLy8g
RklYTUUoNjI3MjUpOiBzdGFjayB0cmFjZSBsaW5lL2NvbHVtbiBudW1iZXJzIGFyZSBvbmUtYmFz
ZWQuCisgICAgICAgIGxpbmVOdW1iZXIgPSBsaW5lTnVtYmVyID8gbGluZU51bWJlciAtIDEgOiBs
aW5lTnVtYmVyOworICAgICAgICBjb2x1bW5OdW1iZXIgPSBjb2x1bW5OdW1iZXIgPyBjb2x1bW5O
dW1iZXIgLSAxIDogMDsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2xpbmtpZmllci5saW5raWZ5TG9j
YXRpb24odXJsLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsICJ0aW1lbGluZS1kZXRhaWxzIik7
CisgICAgfSwKKworICAgIF9saW5raWZ5Q2FsbEZyYW1lOiBmdW5jdGlvbihjYWxsRnJhbWUpCisg
ICAgeworICAgICAgICByZXR1cm4gdGhpcy5fbGlua2lmeUxvY2F0aW9uKGNhbGxGcmFtZS51cmws
IGNhbGxGcmFtZS5saW5lTnVtYmVyLCBjYWxsRnJhbWUuY29sdW1uTnVtYmVyKTsKKyAgICB9LAor
CiAgICAgX2NyZWF0ZVRvcFBhbmU6IGZ1bmN0aW9uKCkgewogICAgICAgICB2YXIgdG9wUGFuZUVs
ZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICAgICAgdG9wUGFuZUVs
ZW1lbnQuaWQgPSAidGltZWxpbmUtb3ZlcnZpZXctcGFuZWwiOwpAQCAtNTI4LDYgKzU0Miw3IEBA
IFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5f
cmVmcmVzaCgpOwogICAgICAgICB0aGlzLl9jbG9zZVJlY29yZERldGFpbHMoKTsKICAgICAgICAg
dGhpcy5fbW9kZWwuX3Jlc2V0KCk7CisgICAgICAgIHRoaXMuX2xpbmtpZmllci5yZXNldCgpOwog
ICAgIH0sCiAKICAgICBlbGVtZW50c1RvUmVzdG9yZVNjcm9sbFBvc2l0aW9uc0ZvcjogZnVuY3Rp
b24oKQpAQCAtOTYxLDYgKzk3Niw3IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZEdyYXBo
Um93LnByb3RvdHlwZSA9IHsKIAogV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwuRm9ybWF0dGVk
UmVjb3JkID0gZnVuY3Rpb24ocmVjb3JkLCBwYXJlbnRSZWNvcmQsIHBhbmVsLCBzY3JpcHREZXRh
aWxzKQogeworICAgIHRoaXMuX3BhbmVsID0gcGFuZWw7CiAgICAgdmFyIHJlY29yZFR5cGVzID0g
V2ViSW5zcGVjdG9yLlRpbWVsaW5lQWdlbnQuUmVjb3JkVHlwZTsKICAgICB2YXIgc3R5bGUgPSBw
YW5lbC5fcmVjb3JkU3R5bGVzW3JlY29yZC50eXBlXTsKICAgICB0aGlzLnBhcmVudCA9IHBhcmVu
dFJlY29yZDsKQEAgLTEwNTEsNyArMTA2Nyw3IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVs
LkZvcm1hdHRlZFJlY29yZC5wcm90b3R5cGUgPSB7CiAKICAgICBfZ2VuZXJhdGVQb3B1cENvbnRl
bnQ6IGZ1bmN0aW9uKGNhbGN1bGF0b3IsIGNhdGVnb3JpZXMpCiAgICAgewotICAgICAgICB2YXIg
Y29udGVudEhlbHBlciA9IG5ldyBXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5Qb3B1cENvbnRl
bnRIZWxwZXIodGhpcy50aXRsZSk7CisgICAgICAgIHZhciBjb250ZW50SGVscGVyID0gbmV3IFdl
Ykluc3BlY3Rvci5UaW1lbGluZVBhbmVsLlBvcHVwQ29udGVudEhlbHBlcih0aGlzLnRpdGxlLCB0
aGlzLl9wYW5lbCk7CiAKICAgICAgICAgaWYgKHRoaXMuX2NoaWxkcmVuICYmIHRoaXMuX2NoaWxk
cmVuLmxlbmd0aCkgewogICAgICAgICAgICAgY29udGVudEhlbHBlci5fYXBwZW5kVGV4dFJvdyhX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNlbGYgVGltZSIpLCBOdW1iZXIuc2Vjb25kc1RvU3RyaW5n
KHRoaXMuX3NlbGZUaW1lICsgMC4wMDAxKSk7CkBAIC0xMTM2LDI2ICsxMTUyLDI2IEBAIFdlYklu
c3BlY3Rvci5UaW1lbGluZVBhbmVsLkZvcm1hdHRlZFJlY29yZC5wcm90b3R5cGUgPSB7CiAgICAg
ICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5UaW1lbGluZUFnZW50LlJlY29yZFR5cGUuR0NFdmVu
dDoKICAgICAgICAgICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCIlcyBjb2xs
ZWN0ZWQiLCBOdW1iZXIuYnl0ZXNUb1N0cmluZyh0aGlzLmRhdGEudXNlZEhlYXBTaXplRGVsdGEp
KTsKICAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRpbWVsaW5lQWdlbnQuUmVjb3JkVHlw
ZS5UaW1lckZpcmU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2NyaXB0TmFtZSA/IHRo
aXMuX2xpbmtpZnlMb2NhdGlvbih0aGlzLnNjcmlwdE5hbWUsIHRoaXMuc2NyaXB0TGluZSwgMCkg
OiB0aGlzLmRhdGEudGltZXJJZDsKKyAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zY3JpcHRO
YW1lID8gdGhpcy5fcGFuZWwuX2xpbmtpZnlMb2NhdGlvbih0aGlzLnNjcmlwdE5hbWUsIHRoaXMu
c2NyaXB0TGluZSwgMCkgOiB0aGlzLmRhdGEudGltZXJJZDsKICAgICAgICAgICAgIGNhc2UgV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lQWdlbnQuUmVjb3JkVHlwZS5GdW5jdGlvbkNhbGw6Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIHRoaXMuc2NyaXB0TmFtZSA/IHRoaXMuX2xpbmtpZnlMb2NhdGlvbih0
aGlzLnNjcmlwdE5hbWUsIHRoaXMuc2NyaXB0TGluZSwgMCkgOiBudWxsOworICAgICAgICAgICAg
ICAgIHJldHVybiB0aGlzLnNjcmlwdE5hbWUgPyB0aGlzLl9wYW5lbC5fbGlua2lmeUxvY2F0aW9u
KHRoaXMuc2NyaXB0TmFtZSwgdGhpcy5zY3JpcHRMaW5lLCAwKSA6IG51bGw7CiAgICAgICAgICAg
ICBjYXNlIFdlYkluc3BlY3Rvci5UaW1lbGluZUFnZW50LlJlY29yZFR5cGUuRmlyZUFuaW1hdGlv
bkZyYW1lRXZlbnQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2NyaXB0TmFtZSA/IHRo
aXMuX2xpbmtpZnlMb2NhdGlvbih0aGlzLnNjcmlwdE5hbWUsIHRoaXMuc2NyaXB0TGluZSwgMCkg
OiB0aGlzLmRhdGEuaWQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2NyaXB0TmFtZSA/
IHRoaXMuX3BhbmVsLl9saW5raWZ5TG9jYXRpb24odGhpcy5zY3JpcHROYW1lLCB0aGlzLnNjcmlw
dExpbmUsIDApIDogdGhpcy5kYXRhLmlkOwogICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3Iu
VGltZWxpbmVBZ2VudC5SZWNvcmRUeXBlLkV2ZW50RGlzcGF0Y2g6CiAgICAgICAgICAgICAgICAg
cmV0dXJuIHRoaXMuZGF0YSA/IHRoaXMuZGF0YS50eXBlIDogbnVsbDsKICAgICAgICAgICAgIGNh
c2UgV2ViSW5zcGVjdG9yLlRpbWVsaW5lQWdlbnQuUmVjb3JkVHlwZS5QYWludDoKICAgICAgICAg
ICAgICAgICByZXR1cm4gdGhpcy5kYXRhLndpZHRoICsgIlx1MjAwOVx1MDBkN1x1MjAwOSIgKyB0
aGlzLmRhdGEuaGVpZ2h0OwogICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuVGltZWxpbmVB
Z2VudC5SZWNvcmRUeXBlLlRpbWVySW5zdGFsbDoKICAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVj
dG9yLlRpbWVsaW5lQWdlbnQuUmVjb3JkVHlwZS5UaW1lclJlbW92ZToKLSAgICAgICAgICAgICAg
ICByZXR1cm4gdGhpcy5zdGFja1RyYWNlID8gdGhpcy5fbGlua2lmeUNhbGxGcmFtZSh0aGlzLnN0
YWNrVHJhY2VbMF0pIDogdGhpcy5kYXRhLnRpbWVySWQ7CisgICAgICAgICAgICAgICAgcmV0dXJu
IHRoaXMuc3RhY2tUcmFjZSA/IHRoaXMuX3BhbmVsLl9saW5raWZ5Q2FsbEZyYW1lKHRoaXMuc3Rh
Y2tUcmFjZVswXSkgOiB0aGlzLmRhdGEudGltZXJJZDsKICAgICAgICAgICAgIGNhc2UgV2ViSW5z
cGVjdG9yLlRpbWVsaW5lQWdlbnQuUmVjb3JkVHlwZS5SZWdpc3RlckFuaW1hdGlvbkZyYW1lQ2Fs
bGJhY2s6CiAgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5UaW1lbGluZUFnZW50LlJlY29y
ZFR5cGUuQ2FuY2VsQW5pbWF0aW9uRnJhbWVDYWxsYmFjazoKLSAgICAgICAgICAgICAgICByZXR1
cm4gdGhpcy5zdGFja1RyYWNlID8gdGhpcy5fbGlua2lmeUNhbGxGcmFtZSh0aGlzLnN0YWNrVHJh
Y2VbMF0pIDogdGhpcy5kYXRhLmlkOworICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnN0YWNr
VHJhY2UgPyB0aGlzLl9wYW5lbC5fbGlua2lmeUNhbGxGcmFtZSh0aGlzLnN0YWNrVHJhY2VbMF0p
IDogdGhpcy5kYXRhLmlkOwogICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuVGltZWxpbmVB
Z2VudC5SZWNvcmRUeXBlLlBhcnNlSFRNTDoKICAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9y
LlRpbWVsaW5lQWdlbnQuUmVjb3JkVHlwZS5SZWNhbGN1bGF0ZVN0eWxlczoKLSAgICAgICAgICAg
ICAgICByZXR1cm4gdGhpcy5zdGFja1RyYWNlID8gdGhpcy5fbGlua2lmeUNhbGxGcmFtZSh0aGlz
LnN0YWNrVHJhY2VbMF0pIDogbnVsbDsKKyAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zdGFj
a1RyYWNlID8gdGhpcy5fcGFuZWwuX2xpbmtpZnlDYWxsRnJhbWUodGhpcy5zdGFja1RyYWNlWzBd
KSA6IG51bGw7CiAgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5UaW1lbGluZUFnZW50LlJl
Y29yZFR5cGUuRXZhbHVhdGVTY3JpcHQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudXJs
ID8gdGhpcy5fbGlua2lmeUxvY2F0aW9uKHRoaXMudXJsLCB0aGlzLmRhdGEubGluZU51bWJlciwg
MCkgOiBudWxsOworICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnVybCA/IHRoaXMuX3BhbmVs
Ll9saW5raWZ5TG9jYXRpb24odGhpcy51cmwsIHRoaXMuZGF0YS5saW5lTnVtYmVyLCAwKSA6IG51
bGw7CiAgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5UaW1lbGluZUFnZW50LlJlY29yZFR5
cGUuWEhSUmVhZHlTdGF0ZUNoYW5nZToKICAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRp
bWVsaW5lQWdlbnQuUmVjb3JkVHlwZS5YSFJMb2FkOgogICAgICAgICAgICAgY2FzZSBXZWJJbnNw
ZWN0b3IuVGltZWxpbmVBZ2VudC5SZWNvcmRUeXBlLlNjaGVkdWxlUmVzb3VyY2VSZXF1ZXN0OgpA
QCAtMTE3MSwxOSArMTE4Nyw2IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLkZvcm1hdHRl
ZFJlY29yZC5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KICAgICB9LAogCi0gICAgX2xpbmtpZnlM
b2NhdGlvbjogZnVuY3Rpb24odXJsLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCi0gICAgewot
ICAgICAgICAvLyBGSVhNRSg2MjcyNSk6IHN0YWNrIHRyYWNlIGxpbmUvY29sdW1uIG51bWJlcnMg
YXJlIG9uZS1iYXNlZC4KLSAgICAgICAgbGluZU51bWJlciA9IGxpbmVOdW1iZXIgPyBsaW5lTnVt
YmVyIC0gMSA6IGxpbmVOdW1iZXI7Ci0gICAgICAgIGNvbHVtbk51bWJlciA9IGNvbHVtbk51bWJl
ciA/IGNvbHVtbk51bWJlciAtIDEgOiAwOwotICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLmRl
YnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwubGlua2lmeUxvY2F0aW9uKHVybCwgbGluZU51bWJlciwg
Y29sdW1uTnVtYmVyLCAidGltZWxpbmUtZGV0YWlscyIpOwotICAgIH0sCi0KLSAgICBfbGlua2lm
eUNhbGxGcmFtZTogZnVuY3Rpb24oY2FsbEZyYW1lKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRo
aXMuX2xpbmtpZnlMb2NhdGlvbihjYWxsRnJhbWUudXJsLCBjYWxsRnJhbWUubGluZU51bWJlciwg
Y2FsbEZyYW1lLmNvbHVtbk51bWJlcik7Ci0gICAgfSwKLQogICAgIF9jYWxjdWxhdGVBZ2dyZWdh
dGVkU3RhdHM6IGZ1bmN0aW9uKGNhdGVnb3JpZXMpCiAgICAgewogICAgICAgICB0aGlzLl9hZ2dy
ZWdhdGVkU3RhdHMgPSB7fTsKQEAgLTEyMDQsOCArMTIwNyw5IEBAIFdlYkluc3BlY3Rvci5UaW1l
bGluZVBhbmVsLkZvcm1hdHRlZFJlY29yZC5wcm90b3R5cGUgPSB7CiAgICAgfQogfQogCi1XZWJJ
bnNwZWN0b3IuVGltZWxpbmVQYW5lbC5Qb3B1cENvbnRlbnRIZWxwZXIgPSBmdW5jdGlvbih0aXRs
ZSkKK1dlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLlBvcHVwQ29udGVudEhlbHBlciA9IGZ1bmN0
aW9uKHRpdGxlLCBwYW5lbCkKIHsKKyAgICB0aGlzLl9wYW5lbCA9IHBhbmVsOwogICAgIHRoaXMu
X2NvbnRlbnRUYWJsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRhYmxlIik7OwogICAgIHZh
ciB0aXRsZUNlbGwgPSB0aGlzLl9jcmVhdGVDZWxsKFdlYkluc3BlY3Rvci5VSVN0cmluZygiJXMg
LSBEZXRhaWxzIiwgdGl0bGUpLCAidGltZWxpbmUtZGV0YWlscy10aXRsZSIpOwogICAgIHRpdGxl
Q2VsbC5jb2xTcGFuID0gMjsKQEAgLTEyNTEsNyArMTI1NSw3IEBAIFdlYkluc3BlY3Rvci5UaW1l
bGluZVBhbmVsLlBvcHVwQ29udGVudEhlbHBlci5wcm90b3R5cGUgPSB7CiAKICAgICBfYXBwZW5k
TGlua1JvdzogZnVuY3Rpb24odGl0bGUsIHNjcmlwdE5hbWUsIHNjcmlwdExpbmUpCiAgICAgewot
ICAgICAgICB2YXIgbGluayA9IFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLkZvcm1hdHRlZFJl
Y29yZC5wcm90b3R5cGUuX2xpbmtpZnlMb2NhdGlvbihzY3JpcHROYW1lLCBzY3JpcHRMaW5lLCAw
LCAidGltZWxpbmUtZGV0YWlscyIpOworICAgICAgICB2YXIgbGluayA9IHRoaXMuX3BhbmVsLl9s
aW5raWZ5TG9jYXRpb24oc2NyaXB0TmFtZSwgc2NyaXB0TGluZSwgMCwgInRpbWVsaW5lLWRldGFp
bHMiKTsKICAgICAgICAgdGhpcy5fYXBwZW5kRWxlbWVudFJvdyh0aXRsZSwgbGluayk7CiAgICAg
fSwKIApAQCAtMTI2Niw3ICsxMjcwLDcgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwuUG9w
dXBDb250ZW50SGVscGVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJvdy5hcHBlbmRDaGls
ZCh0aGlzLl9jcmVhdGVDZWxsKHN0YWNrRnJhbWUuZnVuY3Rpb25OYW1lID8gc3RhY2tGcmFtZS5m
dW5jdGlvbk5hbWUgOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIihhbm9ueW1vdXMgZnVuY3Rpb24p
IiksICJ0aW1lbGluZS1mdW5jdGlvbi1uYW1lIikpOwogICAgICAgICAgICAgcm93LmFwcGVuZENo
aWxkKHRoaXMuX2NyZWF0ZUNlbGwoIiBAICIpKTsKICAgICAgICAgICAgIHZhciBsaW5rQ2VsbCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRkIik7Ci0gICAgICAgICAgICB2YXIgdXJsRWxlbWVu
dCA9IFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLkZvcm1hdHRlZFJlY29yZC5wcm90b3R5cGUu
X2xpbmtpZnlDYWxsRnJhbWUoc3RhY2tGcmFtZSk7CisgICAgICAgICAgICB2YXIgdXJsRWxlbWVu
dCA9IHRoaXMuX3BhbmVsLl9saW5raWZ5Q2FsbEZyYW1lKHN0YWNrRnJhbWUpOwogICAgICAgICAg
ICAgbGlua0NlbGwuYXBwZW5kQ2hpbGQodXJsRWxlbWVudCk7CiAgICAgICAgICAgICByb3cuYXBw
ZW5kQ2hpbGQobGlua0NlbGwpOwogICAgICAgICAgICAgZnJhbWVzVGFibGUuYXBwZW5kQ2hpbGQo
cm93KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2Vi
S2l0LnFyYyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYwpp
bmRleCA1MmFjOTM0MjQzYjBhOWZiNWI0MjAxZDczZDcxZjY2OGFiZDI0NmM0Li5mMmMyMTEzZjNh
MzdiZjc5YWUwZDUwOGM3YzI2MzgwZjNmMWVhNzk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjCkBAIC0zNiw2ICszNiw3IEBACiAgICAgPGZpbGU+
RGF0YUdyaWQuanM8L2ZpbGU+CiAgICAgPGZpbGU+RGVidWdnZXJNb2RlbC5qczwvZmlsZT4KICAg
ICA8ZmlsZT5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLmpzPC9maWxlPgorICAgIDxmaWxlPkxp
bmtpZmllci5qczwvZmlsZT4KICAgICA8ZmlsZT5ET01BZ2VudC5qczwvZmlsZT4KICAgICA8Zmls
ZT5ET01CcmVha3BvaW50c1NpZGViYXJQYW5lLmpzPC9maWxlPgogICAgIDxmaWxlPkRPTVN0b3Jh
Z2UuanM8L2ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL2luc3BlY3Rvci5odG1sIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9p
bnNwZWN0b3IuaHRtbAppbmRleCBjNzU4N2ViMzgzNDkzOTc0ZWEzMzQ2YWMwZWNkNDFjNWQyZGM3
MDMzLi4zN2Q3MjM1YWUyYWYzZjM1NzNhMGMzM2QyYzcxZWQ0ZmQ4NjVkNzU2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwKQEAgLTE1
OCw2ICsxNTgsNyBAQCBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0
IiBzcmM9IkRldGFpbGVkSGVhcHNob3RWaWV3LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5
cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJEZWJ1Z2dlck1vZGVsLmpzIj48L3NjcmlwdD4KICAg
ICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJEZWJ1Z2dlclByZXNlbnRhdGlv
bk1vZGVsLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIg
c3JjPSJMaW5raWZpZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZh
c2NyaXB0IiBzcmM9IkJyZWFrcG9pbnRNYW5hZ2VyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0
IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJVSVNvdXJjZUNvZGUuanMiPjwvc2NyaXB0Pgog
ICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkNvbnRlbnRQcm92aWRlcnMu
anMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9pbnNwZWN0b3IuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2lu
c3BlY3Rvci5qcwppbmRleCBmYzJiNTlhZGJmMjY0NWIwZjU0NDk4YzUxMzNlNTJmYzQ0MTYyZjI5
Li42Mjk1MDdjZjZjOTA3ZGE5MTA2NTQxMGU3ZjA4ODcwYWM5MGI0ZTkwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcwpAQCAtNTA5LDYgKzUw
OSw5IEBAIFdlYkluc3BlY3Rvci5kb0xvYWRlZERvbmUgPSBmdW5jdGlvbigpCiAgICAgdGhpcy5j
b25zb2xlLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNvbnNvbGVNb2RlbC5FdmVudHMu
TWVzc2FnZUFkZGVkLCB0aGlzLl91cGRhdGVFcnJvckFuZFdhcm5pbmdDb3VudHMsIHRoaXMpOwog
ICAgIHRoaXMuY29uc29sZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Db25zb2xlTW9k
ZWwuRXZlbnRzLlJlcGVhdENvdW50VXBkYXRlZCwgdGhpcy5fdXBkYXRlRXJyb3JBbmRXYXJuaW5n
Q291bnRzLCB0aGlzKTsKIAorICAgIHRoaXMuZGVidWdnZXJNb2RlbCA9IG5ldyBXZWJJbnNwZWN0
b3IuRGVidWdnZXJNb2RlbCgpOworICAgIHRoaXMuZGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbCA9
IG5ldyBXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbCgpOworCiAgICAgdGhp
cy5kcmF3ZXIgPSBuZXcgV2ViSW5zcGVjdG9yLkRyYXdlcigpOwogICAgIHRoaXMuY29uc29sZVZp
ZXcgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3KCk7CiAKQEAgLTUyMSw4ICs1MjQsNiBA
QCBXZWJJbnNwZWN0b3IuZG9Mb2FkZWREb25lID0gZnVuY3Rpb24oKQogICAgIEluc3BlY3RvckJh
Y2tlbmQucmVnaXN0ZXJJbnNwZWN0b3JEaXNwYXRjaGVyKHRoaXMpOwogCiAgICAgdGhpcy5jc3NN
b2RlbCA9IG5ldyBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbCgpOwotICAgIHRoaXMuZGVidWdn
ZXJNb2RlbCA9IG5ldyBXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbCgpOwotICAgIHRoaXMuZGVi
dWdnZXJQcmVzZW50YXRpb25Nb2RlbCA9IG5ldyBXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50
YXRpb25Nb2RlbCgpOwogCiAgICAgdGhpcy5zZWFyY2hDb250cm9sbGVyID0gbmV3IFdlYkluc3Bl
Y3Rvci5TZWFyY2hDb250cm9sbGVyKCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109628</attachid>
            <date>2011-10-04 09:10:34 -0700</date>
            <delta_ts>2011-10-04 10:03:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-69146-20111004201031.patch</filename>
            <type>text/plain</type>
            <size>45880</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTY1OTYKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAwMzBhN2NlYzM2NTk1YjM4NWU3MDc1
M2YzMTA3NTVlNTg4MjNjNTNjLi5hMmRiNjcwNTBkZWE4YjZkYzVlNjk1YmYyMWRiM2E3ODU2ZjA3
MDk1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTEtMTAtMDQgIElseWEgVGlraG9ub3Zza3kg
IDxsb2lzbG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGRlYnVnZ2Vy
UHJlc2VudGF0aW9Nb2RlbC5saW5raWZ5TG9jYXRpb24gbGVha3MgdXBkYXRlQW5jaG9yIGNsb3N1
cmUgaW5zdGFuY2VzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NjkxNDYKKworICAgICAgICBJbiBtYW55IHBsYWNlcyB3ZSB1c2UgbGlua2lmeUxvY2F0
aW9uIGZ1bmN0aW9uIHRvIHByb2R1Y2UgYSBsaW5rIG5vZGUgd2hpY2ggdXBkYXRlcyBhdXRvbWF0
aWNhbGx5IHdoZW4gdGhlIHNvdXJjZSBmaWxlIGlzIGNoYW5nZWQgb24gdGhlIGZseS4KKyAgICAg
ICAgU3VjaCBjaGFuZ2VzIGhhcHBlbiB3aGVuIHdlIHVzZSBwcmV0dHkgcHJpbnQgb3IgYW5vdGhl
ciBvcGVyYXRpb24gdGhhdCBjaGFuZ2VzIHRoZSBzb3VyY2UgY29kZSBzb21laG93LgorICAgICAg
ICBsaW5raWZ5TG9jYXRpb24gYXNzb2NpYXRlcyBhIG5ldyBpbnN0YW5jZSBvZiB1cGRhdGVBbmNo
b3IgY2xvc3VyZSB3aXRoIHRoZSBlYWNoIGxpbmsgbm9kZSBhbmQgYWRkIHRoZSBjbG9zdXJlIHRv
IHRoZSBTb3VyY2VNYXBwaW5nVXBkYXRlZCBldmVudCdzIGxpc3QuCisgICAgICAgIEFzIHRoZSBy
ZXN1bHQgdGhlIG5vZGU8LT5jbG9zdXJlIHBhaXJzIHdvdWxkbid0IGJlIGNvbGxlY3RlZCB1bnRp
bCByZXNldCB0aGUgVUkgYW5kIERlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvY29uc29s
ZS9jb25zb2xlLXByZXNlcnZlLWxvZy5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dl
ci9saW5raWZpZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvZGVi
dWdnZXIvbGlua2lmaWVyLmh0bWw6IEFkZGVkLgorCiAyMDExLTEwLTA0ICBWc2V2b2xvZCBWbGFz
b3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFJlbW92
ZSBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2Rpc2FibGVkLWNhY2hlLWNyYXNoLmh0bWwu
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS9jb25zb2xlLXByZXNl
cnZlLWxvZy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUvY29uc29sZS1wcmVz
ZXJ2ZS1sb2cuaHRtbAppbmRleCBiMzJlOTI2ZWU1MWQ5NDRjYzRkNzg0ZDljMjBmMzFkY2Y0OGYx
NzU3Li41N2I4YzU1MDQ5MWY1NjI5ODJiY2VkZGQwM2RhNTgzMzBhMjEwNDRhIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS9jb25zb2xlLXByZXNlcnZlLWxvZy5odG1s
CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jb25zb2xlL2NvbnNvbGUtcHJlc2VydmUtbG9n
Lmh0bWwKQEAgLTUsNyArNSw3IEBACiA8c2NyaXB0PgogZnVuY3Rpb24gdGVzdCgpCiB7Ci0gICAg
V2ViSW5zcGVjdG9yLmNvbnNvbGUuYWRkTWVzc2FnZShXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3Nh
Z2UuY3JlYXRlVGV4dE1lc3NhZ2UoIlBBU1MiKSk7CisgICAgV2ViSW5zcGVjdG9yLmNvbnNvbGUu
YWRkTWVzc2FnZShXZWJJbnNwZWN0b3IuY29uc29sZVZpZXcuY3JlYXRlVGV4dE1lc3NhZ2UoIlBB
U1MiKSk7CiAgICAgV2ViSW5zcGVjdG9yLnNldHRpbmdzLnByZXNlcnZlQ29uc29sZUxvZy5zZXQo
dHJ1ZSk7CiAgICAgSW5zcGVjdG9yVGVzdC5yZWxvYWRQYWdlKGZ1bmN0aW9uKCkgewogICAgICAg
ICBJbnNwZWN0b3JUZXN0LmR1bXBDb25zb2xlTWVzc2FnZXMoKTsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9saW5raWZpZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2xpbmtpZmllci1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uOTI5NjQxM2ZlYzdiOTlmMzY1YWE3MmQyN2MyYTIxNzgwZTdiMWI4ZgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9saW5raWZpZXItZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMjggQEAKK1Rlc3RzIHRoYXQgTGlua2lmaWVyIHdvcmtzIGNvcnJlY3Rs
eS4KKworRGVidWdnZXIgd2FzIGVuYWJsZWQuCitsb2c6IC0tLSBsaW5raWZ5IGZha2VVUkwtMSBm
aXJzdCB0aW1lIC0tLQorbG9nOiBEdW1teVByZXNlbnRhdGlvbk1vZGVsLnJhd1NvdXJjZUNvZGVG
b3JTY3JpcHRXaXRoVVJMIHdhcyBjYWxsZWQgd2l0aCBhcmd1bWVudHMgPSBbJ2Zha2VVcmwtMSdd
Citsb2c6IER1bW15UmF3U291cmNlQ29kZS5hZGRFdmVudExpc3RlbmVyIHdhcyBjYWxsZWQgd2l0
aCBhcmd1bWVudHMgPSBbJ3NvdXJjZS1tYXBwaW5nLXVwZGF0ZWQnLCBmdW5jdGlvbiwgb2JqZWN0
XQorbG9nOiAKK2xvZzogLS0tIGxpbmtpZnkgZmFrZVVSTC0yIGZpcnN0IHRpbWUgLS0tCitsb2c6
IER1bW15UHJlc2VudGF0aW9uTW9kZWwucmF3U291cmNlQ29kZUZvclNjcmlwdFdpdGhVUkwgd2Fz
IGNhbGxlZCB3aXRoIGFyZ3VtZW50cyA9IFsnZmFrZVVybC0yJ10KK2xvZzogRHVtbXlSYXdTb3Vy
Y2VDb2RlLmFkZEV2ZW50TGlzdGVuZXIgd2FzIGNhbGxlZCB3aXRoIGFyZ3VtZW50cyA9IFsnc291
cmNlLW1hcHBpbmctdXBkYXRlZCcsIGZ1bmN0aW9uLCBvYmplY3RdCitsb2c6IAorbG9nOiAtLS0g
bGlua2lmeSBmYWtlVVJMLTEgc2Vjb25kIHRpbWUgLS0tCitsb2c6IER1bW15UHJlc2VudGF0aW9u
TW9kZWwucmF3U291cmNlQ29kZUZvclNjcmlwdFdpdGhVUkwgd2FzIGNhbGxlZCB3aXRoIGFyZ3Vt
ZW50cyA9IFsnZmFrZVVybC0xJ10KK2xvZzogCitsb2c6IC0tLSBsaW5raWZ5IGZha2VVUkwtMiBz
ZWNvbmQgdGltZSAtLS0KK2xvZzogRHVtbXlQcmVzZW50YXRpb25Nb2RlbC5yYXdTb3VyY2VDb2Rl
Rm9yU2NyaXB0V2l0aFVSTCB3YXMgY2FsbGVkIHdpdGggYXJndW1lbnRzID0gWydmYWtlVXJsLTIn
XQorbG9nOiAKK2xvZzogLS0tIHJlc2V0IC0tLQorbG9nOiBEdW1teVByZXNlbnRhdGlvbk1vZGVs
LnJhd1NvdXJjZUNvZGVGb3JTY3JpcHRXaXRoVVJMIHdhcyBjYWxsZWQgd2l0aCBhcmd1bWVudHMg
PSBbJ2Zha2VVcmwtMSddCitsb2c6IER1bW15UmF3U291cmNlQ29kZS5yZW1vdmVFdmVudExpc3Rl
bmVyIHdhcyBjYWxsZWQgd2l0aCBhcmd1bWVudHMgPSBbJ3NvdXJjZS1tYXBwaW5nLXVwZGF0ZWQn
LCBmdW5jdGlvbiwgb2JqZWN0XQorbG9nOiBEdW1teVByZXNlbnRhdGlvbk1vZGVsLnJhd1NvdXJj
ZUNvZGVGb3JTY3JpcHRXaXRoVVJMIHdhcyBjYWxsZWQgd2l0aCBhcmd1bWVudHMgPSBbJ2Zha2VV
cmwtMiddCitsb2c6IER1bW15UmF3U291cmNlQ29kZS5yZW1vdmVFdmVudExpc3RlbmVyIHdhcyBj
YWxsZWQgd2l0aCBhcmd1bWVudHMgPSBbJ3NvdXJjZS1tYXBwaW5nLXVwZGF0ZWQnLCBmdW5jdGlv
biwgb2JqZWN0XQorbG9nOiAKK2xvZzogLS0tIGxvY2F0aW9uIHVwZGF0ZSAtLS0KK2xvZzogb3Jp
Z2luYWwgbG9jYXRpb246IGxpbmtpZmllci5odG1sOjY1Citsb2c6IHByZXR0eSBwcmludGVkIGxv
Y2F0aW9uOiBsaW5raWZpZXIuaHRtbDo2NworbG9nOiByZXZlcnRlZCBsb2NhdGlvbjogbGlua2lm
aWVyLmh0bWw6NjUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2Vy
L2xpbmtpZmllci5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2xpbmtpZmll
ci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjYxZmFiMjU3NGMyODI3Njk4ZmYyNjhhMWM3NjE1NWZkYWYxY2Vj
NDIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvbGlu
a2lmaWVyLmh0bWwKQEAgLTAsMCArMSwxMDQgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXRlc3Qu
anMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgSW5zcGVj
dG9yVGVzdC5zdGFydERlYnVnZ2VyVGVzdChkZWJ1Z2dlclRlc3QpOworCisgICAgZnVuY3Rpb24g
ZGVidWdnZXJUZXN0KCkKKyAgICB7CisgICAgICAgIGlmICghV2ViSW5zcGVjdG9yLmRlYnVnZ2Vy
UHJlc2VudGF0aW9uTW9kZWwuX3Jhd1NvdXJjZUNvZGVbV2ViSW5zcGVjdG9yLm1haW5SZXNvdXJj
ZS5fZG9jdW1lbnRVUkxdKSB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFNuaWZmZXIo
V2ViSW5zcGVjdG9yLmRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwsICJfYWRkU2NyaXB0IiwgZGVi
dWdnZXJUZXN0KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHZh
ciBmYWtlVVJMMSA9ICJmYWtlVXJsLTEiOworICAgICAgICB2YXIgZmFrZVVSTDIgPSAiZmFrZVVy
bC0yIjsKKworICAgICAgICBEdW1teVByZXNlbnRhdGlvbk1vZGVsID0gZnVuY3Rpb24oKQorICAg
ICAgICB7CisgICAgICAgICAgICBEdW1teVJhd1NvdXJjZUNvZGUgPSBmdW5jdGlvbigpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgdGhpcy5hZGRFdmVudExpc3RlbmVyID0gZnVuY3Rp
b24oZXZlbnROYW1lLCBjYWxsYmFjaywgb2JqZWN0KQorICAgICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAgICAgY29uc29sZS5sb2coIkR1bW15UmF3U291cmNlQ29kZS5hZGRFdmVudExp
c3RlbmVyIHdhcyBjYWxsZWQgd2l0aCBhcmd1bWVudHMgPSBbJyIgKyBldmVudE5hbWUgKyAiJywg
IiArICh0eXBlb2YgY2FsbGJhY2spICsgIiwgIiArICh0eXBlb2Ygb2JqZWN0KSArICJdIik7Cisg
ICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVFdmVudExpc3Rl
bmVyID0gZnVuY3Rpb24oZXZlbnROYW1lLCBjYWxsYmFjaywgb2JqZWN0KQorICAgICAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coIkR1bW15UmF3U291cmNlQ29k
ZS5yZW1vdmVFdmVudExpc3RlbmVyIHdhcyBjYWxsZWQgd2l0aCBhcmd1bWVudHMgPSBbJyIgKyBl
dmVudE5hbWUgKyAiJywgIiArICh0eXBlb2YgY2FsbGJhY2spICsgIiwgIiArICh0eXBlb2Ygb2Jq
ZWN0KSArICJdIik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgIH0K
KworICAgICAgICBEdW1teVByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZSA9IHsKKyAgICAgICAg
ICAgIHJhd1NvdXJjZUNvZGVGb3JTY3JpcHRXaXRoVVJMOiBmdW5jdGlvbihzb3VyY2VVUkwpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29uc29sZS5sb2coIkR1bW15UHJlc2VudGF0
aW9uTW9kZWwucmF3U291cmNlQ29kZUZvclNjcmlwdFdpdGhVUkwgd2FzIGNhbGxlZCB3aXRoIGFy
Z3VtZW50cyA9IFsnIiArIHNvdXJjZVVSTCArICInXSIpOworICAgICAgICAgICAgICAgIHJldHVy
biBuZXcgRHVtbXlSYXdTb3VyY2VDb2RlKCk7CisgICAgICAgICAgICB9LAorICAgICAgICB9CisK
KyAgICAgICAgdmFyIGR5bW15UHJlc2VudGF0aW9uTW9kZWwgPSBuZXcgRHVtbXlQcmVzZW50YXRp
b25Nb2RlbCgpOworCisgICAgICAgIHZhciBsaW5raWZpZXIgPSBuZXcgV2ViSW5zcGVjdG9yLkRl
YnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuTGlua2lmaWVyKGR5bW15UHJlc2VudGF0aW9uTW9kZWwp
OworCisgICAgICAgIGNvbnNvbGUubG9nKCItLS0gbGlua2lmeSBmYWtlVVJMLTEgZmlyc3QgdGlt
ZSAtLS0iKTsKKyAgICAgICAgbGlua2lmaWVyLmxpbmtpZnlMb2NhdGlvbihmYWtlVVJMMSwgNDIs
IDI2LCAiZmFrZS1jbGFzcy1uYW1lIik7CisgICAgICAgIGNvbnNvbGUubG9nKCIiKTsKKworICAg
ICAgICBjb25zb2xlLmxvZygiLS0tIGxpbmtpZnkgZmFrZVVSTC0yIGZpcnN0IHRpbWUgLS0tIik7
CisgICAgICAgIGxpbmtpZmllci5saW5raWZ5TG9jYXRpb24oZmFrZVVSTDIsIDQyLCAyNiwgImZh
a2UtY2xhc3MtbmFtZSIpOworICAgICAgICBjb25zb2xlLmxvZygiIik7CisKKyAgICAgICAgY29u
c29sZS5sb2coIi0tLSBsaW5raWZ5IGZha2VVUkwtMSBzZWNvbmQgdGltZSAtLS0iKTsKKyAgICAg
ICAgbGlua2lmaWVyLmxpbmtpZnlMb2NhdGlvbihmYWtlVVJMMSwgOTcsIDIzLCAiZmFrZS1jbGFz
cy1uYW1lIik7CisgICAgICAgIGNvbnNvbGUubG9nKCIiKTsKKworICAgICAgICBjb25zb2xlLmxv
ZygiLS0tIGxpbmtpZnkgZmFrZVVSTC0yIHNlY29uZCB0aW1lIC0tLSIpOworICAgICAgICBsaW5r
aWZpZXIubGlua2lmeUxvY2F0aW9uKGZha2VVUkwyLCA0LCAyLCAiZmFrZS1jbGFzcy1uYW1lIik7
CisgICAgICAgIGNvbnNvbGUubG9nKCIiKTsKKworICAgICAgICBjb25zb2xlLmxvZygiLS0tIHJl
c2V0IC0tLSIpOworICAgICAgICBsaW5raWZpZXIucmVzZXQoKTsKKyAgICAgICAgY29uc29sZS5s
b2coIiIpOworCisgICAgICAgIGNvbnNvbGUubG9nKCItLS0gbG9jYXRpb24gdXBkYXRlIC0tLSIp
OworCisgICAgICAgIGZ1bmN0aW9uIGR1bW15RnVuY3Rpb25Ub0JlUHJldHR5UHJpbnRlZCgpIHsg
Y29uc29sZS5sb2coIiIpOyBjb25zb2xlLmVycm9yKCIiKTsgfQorCisgICAgICAgIGxpbmtpZmll
ciA9IFdlYkluc3BlY3Rvci5kZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLmNyZWF0ZUxpbmtpZmll
cigpOworICAgICAgICB2YXIgbGluayA9IGxpbmtpZmllci5saW5raWZ5TG9jYXRpb24oV2ViSW5z
cGVjdG9yLm1haW5SZXNvdXJjZS5fZG9jdW1lbnRVUkwsIDY0LCAwLCAiZHVtbXktY2xhc3MiKTsK
KyAgICAgICAgY29uc29sZS5sb2coIm9yaWdpbmFsIGxvY2F0aW9uOiAiICsgbGluay50ZXh0Q29u
dGVudCk7CisKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRTbmlmZmVyKGxpbmtpZmllciwgIl91
cGRhdGVBbmNob3IiLCBsaW5rVXBkYXRlZCk7CisgICAgICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dl
clByZXNlbnRhdGlvbk1vZGVsLnNldEZvcm1hdFNvdXJjZSh0cnVlKTsKKworICAgICAgICBmdW5j
dGlvbiBsaW5rVXBkYXRlZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnNvbGUubG9nKCJw
cmV0dHkgcHJpbnRlZCBsb2NhdGlvbjogIiArIGxpbmsudGV4dENvbnRlbnQpOworICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5hZGRTbmlmZmVyKGxpbmtpZmllciwgIl91cGRhdGVBbmNob3IiLCBs
aW5rUmV2ZXJ0ZWQpOworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyUHJlc2VudGF0
aW9uTW9kZWwuc2V0Rm9ybWF0U291cmNlKGZhbHNlKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1
bmN0aW9uIGxpbmtSZXZlcnRlZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnNvbGUubG9n
KCJyZXZlcnRlZCBsb2NhdGlvbjogIiArIGxpbmsudGV4dENvbnRlbnQpOworICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKKyAgICAgICAgfQorICAgIH0KK30KKworPC9z
Y3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxwPgorVGVzdHMg
dGhhdCBMaW5raWZpZXIgd29ya3MgY29ycmVjdGx5LgorPC9wPgorCis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggMGMwMGM1ZjJjYjM1NjE4OTNkNTdmZDg0MGVlODFlN2QzMjU5ZDM4Ny4u
NGRhNDVkZDkzNzY2M2QxYTk0M2E0YzM1YWJiNzA1N2RmOWZlNTA5OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDczIEBACisyMDExLTEwLTA0ICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBkZWJ1Z2dlclByZXNlbnRhdGlvTW9k
ZWwubGlua2lmeUxvY2F0aW9uIGxlYWtzIHVwZGF0ZUFuY2hvciBjbG9zdXJlIGluc3RhbmNlcy4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY5MTQ2CisK
KyAgICAgICAgSW4gbWFueSBwbGFjZXMgd2UgdXNlIGxpbmtpZnlMb2NhdGlvbiBmdW5jdGlvbiB0
byBwcm9kdWNlIGEgbGluayBub2RlIHdoaWNoIHVwZGF0ZXMgYXV0b21hdGljYWxseSB3aGVuIHRo
ZSBzb3VyY2UgZmlsZSBpcyBjaGFuZ2VkIG9uIHRoZSBmbHkuCisgICAgICAgIFN1Y2ggY2hhbmdl
cyBoYXBwZW4gd2hlbiB3ZSB1c2UgcHJldHR5IHByaW50IG9yIGFub3RoZXIgb3BlcmF0aW9uIHRo
YXQgY2hhbmdlcyB0aGUgc291cmNlIGNvZGUgc29tZWhvdy4KKyAgICAgICAgbGlua2lmeUxvY2F0
aW9uIGFzc29jaWF0ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdXBkYXRlQW5jaG9yIGNsb3N1cmUgd2l0
aCB0aGUgZWFjaCBsaW5rIG5vZGUgYW5kIGFkZCB0aGUgY2xvc3VyZSB0byB0aGUgU291cmNlTWFw
cGluZ1VwZGF0ZWQgZXZlbnQncyBsaXN0LgorICAgICAgICBBcyB0aGUgcmVzdWx0IHRoZSBub2Rl
PC0+Y2xvc3VyZSBwYWlycyB3b3VsZG4ndCBiZSBjb2xsZWN0ZWQgdW50aWwgcmVzZXQgdGhlIFVJ
IGFuZCBEZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGluc3BlY3Rvci9kZWJ1Z2dlci9saW5raWZp
ZXIuaHRtbAorCisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xlTWVzc2FnZS5q
czoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZUltcGwpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlSW1wbC5wcm90b3R5cGUuX2xpbmtpZnlMb2NhdGlv
bik6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xlTW9kZWwuanM6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuQ29uc29sZU1vZGVsLnByb3RvdHlwZS5fc2V0Q29uc29sZU1lc3Nh
Z2VFeHBpcmVkQ291bnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnNvbGVNb2RlbC5wcm90
b3R5cGUuX21lc3NhZ2VSZXBlYXRDb3VudFVwZGF0ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkNvbnNvbGVNZXNzYWdlLmNyZWF0ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29uc29sZU1l
c3NhZ2UuY3JlYXRlVGV4dE1lc3NhZ2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnNvbGVE
aXNwYXRjaGVyLnByb3RvdHlwZS5tZXNzYWdlQWRkZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9m
cm9udC1lbmQvQ29uc29sZVZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29uc29sZVZp
ZXcucHJvdG90eXBlLmNyZWF0ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcu
cHJvdG90eXBlLmNyZWF0ZVRleHRNZXNzYWdlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db25z
b2xlVmlldy5wcm90b3R5cGUuX2NvbnNvbGVDbGVhcmVkKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZnJvbnQtZW5kL0RlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuanM6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUuY3JlYXRlTGlua2lmaWVy
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3Rv
dHlwZS5fY29uc29sZU1lc3NhZ2VBZGRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdn
ZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUucmF3U291cmNlQ29kZUZvclNjcmlwdFdpdGhV
UkwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWxSZXNv
dXJjZUJpbmRpbmcucHJvdG90eXBlLmNhblNldENvbnRlbnQpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWxSZXNvdXJjZUJpbmRpbmcucHJvdG90eXBlLnNl
dENvbnRlbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9k
ZWwuTGlua2lmaWVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlv
bk1vZGVsLkxpbmtpZmllci5wcm90b3R5cGUubGlua2lmeUxvY2F0aW9uKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLkxpbmtpZmllci5wcm90b3R5cGUu
cmVzZXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwu
TGlua2lmaWVyLnByb3RvdHlwZS5fdXBkYXRlU291cmNlQW5jaG9ycyk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5MaW5raWZpZXIucHJvdG90eXBlLl91
cGRhdGVBbmNob3IpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRXZlbnRMaXN0ZW5l
cnNTaWRlYmFyUGFuZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FdmVudExpc3RlbmVyc1Np
ZGViYXJQYW5lLnByb3RvdHlwZS51cGRhdGUuY2FsbGJhY2spOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkV2ZW50TGlzdGVuZXJzU2lkZWJhclBhbmUucHJvdG90eXBlLnVwZGF0ZSk6CisgICAgICAg
ICgpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9uU2VydmVyLmpzOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkV4dGVuc2lvblNlcnZlci5wcm90b3R5cGUuX29uQWRkQ29u
c29sZU1lc3NhZ2UpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya01hbmFn
ZXIuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya0Rpc3BhdGNoZXIucHJvdG90eXBl
Ll91cGRhdGVSZXNvdXJjZVdpdGhSZXNwb25zZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250
LWVuZC9OZXR3b3JrUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya0xvZ1Zp
ZXcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtMb2dWaWV3LnByb3RvdHlwZS5fcmVz
ZXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtEYXRhR3JpZE5vZGUucHJvdG90eXBl
Ll9yZWZyZXNoSW5pdGlhdG9yQ2VsbCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9Q
cm9maWxlRGF0YUdyaWRUcmVlLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlByb2ZpbGVEYXRh
R3JpZE5vZGUucHJvdG90eXBlLmNyZWF0ZUNlbGwpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9u
dC1lbmQvUHJvZmlsZVZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1BVUHJvZmlsZVZp
ZXcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNQVVByb2ZpbGVWaWV3LnByb3RvdHlwZS5fcmVz
ZXRDbGlja2VkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lUGFuZWwu
anM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuVGltZWxpbmVQYW5lbC5wcm90b3R5cGUuX2xpbmtpZnlMb2NhdGlvbik6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5wcm90b3R5cGUuX2xpbmtpZnlDYWxsRnJh
bWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwucHJvdG90eXBlLl9jbGVh
clBhbmVsKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLkZvcm1hdHRlZFJl
Y29yZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5Gb3JtYXR0ZWRSZWNv
cmQucHJvdG90eXBlLl9nZW5lcmF0ZVBvcHVwQ29udGVudCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuVGltZWxpbmVQYW5lbC5Gb3JtYXR0ZWRSZWNvcmQucHJvdG90eXBlLl9nZXRSZWNvcmREZXRh
aWxzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLlBvcHVwQ29udGVudEhl
bHBlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5Qb3B1cENvbnRlbnRI
ZWxwZXIucHJvdG90eXBlLl9hcHBlbmRMaW5rUm93KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5U
aW1lbGluZVBhbmVsLlBvcHVwQ29udGVudEhlbHBlci5wcm90b3R5cGUuX2FwcGVuZFN0YWNrVHJh
Y2UpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLmxvZy5sb2dNZXNzYWdlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5s
b2cpOgorCiAyMDExLTEwLTA0ICBWc2V2b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFRpbWVsaW5lIHBhbmVsIHNob3J0Y3V0IGZvciBm
aWx0ZXJpbmcgc2hvcnQgcmVjb3JkcyBzaG91bGQgaGF2ZSBzaG9ydGVyIGRlc2NyaXB0aW9uLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xlTWVz
c2FnZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29uc29sZU1lc3Nh
Z2UuanMKaW5kZXggM2U3MDgzZjUyOGViNTFmNjFjMzBkODExNmEzZGZmNjRjYmYxNjJjZS4uZGYz
YmEyY2Q0MWQ0YjQxOGRhNjM3MmI5ODY5NjBkNjJjMzcxNWRmMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xlTWVzc2FnZS5qcworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVNZXNzYWdlLmpzCkBAIC0yOCwy
OCArMjgsMTkgQEAKICAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNz
YWdlLmNyZWF0ZSA9IGZ1bmN0aW9uKHNvdXJjZSwgdHlwZSwgbGV2ZWwsIGxpbmUsIHVybCwgcmVw
ZWF0Q291bnQsIG1lc3NhZ2UsIHBhcmFtZXRlcnMsIHN0YWNrVHJhY2UsIHJlcXVlc3QpCi17Ci0g
ICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2VJbXBsKHNvdXJjZSwgdHlw
ZSwgbGV2ZWwsIGxpbmUsIHVybCwgcmVwZWF0Q291bnQsIG1lc3NhZ2UsIHBhcmFtZXRlcnMsIHN0
YWNrVHJhY2UsIHJlcXVlc3QpOwotfQotCi1XZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuY3Jl
YXRlVGV4dE1lc3NhZ2UgPSBmdW5jdGlvbih0ZXh0LCBsZXZlbCkKLXsKLSAgICBsZXZlbCA9IGxl
dmVsIHx8IFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlTGV2ZWwuTG9nOwotICAg
IHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlSW1wbChXZWJJbnNwZWN0b3Iu
Q29uc29sZU1lc3NhZ2UuTWVzc2FnZVNvdXJjZS5Db25zb2xlQVBJLCBXZWJJbnNwZWN0b3IuQ29u
c29sZU1lc3NhZ2UuTWVzc2FnZVR5cGUuTG9nLCBsZXZlbCwgMCwgbnVsbCwgMSwgbnVsbCwgW3Rl
eHRdLCBudWxsKTsKLX0KLQogLyoqCiAgKiBAY29uc3RydWN0b3IKICAqIEBleHRlbmRzIHtXZWJJ
bnNwZWN0b3IuQ29uc29sZU1lc3NhZ2V9CiAgKiBAcGFyYW0ge0FycmF5LjxSdW50aW1lQWdlbnQu
UmVtb3RlT2JqZWN0Pj19IHBhcmFtZXRlcnMKICAqIEBwYXJhbSB7Q29uc29sZUFnZW50LlN0YWNr
VHJhY2U9fSBzdGFja1RyYWNlCiAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5SZXNvdXJjZT19IHJl
cXVlc3QKKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwu
TGlua2lmaWVyPX0gbGlua2lmaWVyCiAgKi8KLVdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZUlt
cGwgPSBmdW5jdGlvbihzb3VyY2UsIHR5cGUsIGxldmVsLCBsaW5lLCB1cmwsIHJlcGVhdENvdW50
LCBtZXNzYWdlLCBwYXJhbWV0ZXJzLCBzdGFja1RyYWNlLCByZXF1ZXN0KQorV2ViSW5zcGVjdG9y
LkNvbnNvbGVNZXNzYWdlSW1wbCA9IGZ1bmN0aW9uKHNvdXJjZSwgdHlwZSwgbGV2ZWwsIGxpbmUs
IHVybCwgcmVwZWF0Q291bnQsIG1lc3NhZ2UsIHBhcmFtZXRlcnMsIHN0YWNrVHJhY2UsIHJlcXVl
c3QsIGxpbmtpZmllcikKIHsKICAgICBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuY2FsbCgp
OwogCisgICAgdGhpcy5fbGlua2lmaWVyID0gbGlua2lmaWVyOwogICAgIHRoaXMuc291cmNlID0g
c291cmNlOwogICAgIHRoaXMudHlwZSA9IHR5cGU7CiAgICAgdGhpcy5sZXZlbCA9IGxldmVsOwpA
QCAtMTk0LDcgKzE4NSw3IEBAIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZUltcGwucHJvdG90
eXBlID0gewogICAgICAgICAvLyBGSVhNRSg2MjcyNSk6IHN0YWNrIHRyYWNlIGxpbmUvY29sdW1u
IG51bWJlcnMgYXJlIG9uZS1iYXNlZC4KICAgICAgICAgbGluZU51bWJlciA9IGxpbmVOdW1iZXIg
PyBsaW5lTnVtYmVyIC0gMSA6IHVuZGVmaW5lZDsKICAgICAgICAgY29sdW1uTnVtYmVyID0gY29s
dW1uTnVtYmVyID8gY29sdW1uTnVtYmVyIC0gMSA6IDA7Ci0gICAgICAgIHJldHVybiBXZWJJbnNw
ZWN0b3IuZGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5saW5raWZ5TG9jYXRpb24odXJsLCBsaW5l
TnVtYmVyLCBjb2x1bW5OdW1iZXIsICJjb25zb2xlLW1lc3NhZ2UtdXJsIik7CisgICAgICAgIHJl
dHVybiB0aGlzLl9saW5raWZpZXIubGlua2lmeUxvY2F0aW9uKHVybCwgbGluZU51bWJlciwgY29s
dW1uTnVtYmVyLCAiY29uc29sZS1tZXNzYWdlLXVybCIpOwogICAgIH0sCiAKICAgICBfbGlua2lm
eUNhbGxGcmFtZTogZnVuY3Rpb24oY2FsbEZyYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xlTW9kZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVNb2RlbC5qcwppbmRleCBhYjgzZmRlNDgwZjAxYzE0
ZTc4ZWJhM2NkOWYxOWZkYmRiZTVjZTYwLi42OWQwMGZlMjg5MWI4ZGE5NzBlMzBjOWNjMGEwNGY4
ODZkZjUzNGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0NvbnNvbGVNb2RlbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0NvbnNvbGVNb2RlbC5qcwpAQCAtNjAsNyArNjAsNyBAQCBXZWJJbnNwZWN0b3IuQ29uc29sZU1v
ZGVsLnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAgIGlmIChjb3VudCkgewogICAgICAgICAg
ICAgdmFyIG1lc3NhZ2UgPSBTdHJpbmcuc3ByaW50ZihXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIiVk
IGNvbnNvbGUgbWVzc2FnZXMgYXJlIG5vdCBzaG93bi4iKSwgY291bnQpOwotICAgICAgICAgICAg
dGhpcy5hZGRNZXNzYWdlKFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5jcmVhdGVUZXh0TWVz
c2FnZShtZXNzYWdlLCBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZUxldmVsLldh
cm5pbmcpKTsKKyAgICAgICAgICAgIHRoaXMuYWRkTWVzc2FnZShXZWJJbnNwZWN0b3IuY29uc29s
ZVZpZXcuY3JlYXRlVGV4dE1lc3NhZ2UobWVzc2FnZSwgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNz
YWdlLk1lc3NhZ2VMZXZlbC5XYXJuaW5nKSk7CiAgICAgICAgIH0KICAgICB9LAogCkBAIC0xMjMs
NyArMTIzLDcgQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVNb2RlbC5wcm90b3R5cGUgPSB7CiAgICAg
ICAgICAgICB0aGlzLl9pbmNyZW1lbnRFcnJvcldhcm5pbmdDb3VudChtc2cpOwogICAgICAgICAg
ICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkNvbnNvbGVNb2Rl
bC5FdmVudHMuUmVwZWF0Q291bnRVcGRhdGVkLCBtc2cpOwogICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgdmFyIG1zZ0NvcHkgPSBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuY3JlYXRl
KG1zZy5zb3VyY2UsIG1zZy50eXBlLCBtc2cubGV2ZWwsIG1zZy5saW5lLCBtc2cudXJsLCBjb3Vu
dCAtIHByZXZSZXBlYXRDb3VudCwgbXNnLl9tZXNzYWdlVGV4dCwgbXNnLl9wYXJhbWV0ZXJzLCBt
c2cuX3N0YWNrVHJhY2UsIG1zZy5fcmVxdWVzdCk7CisgICAgICAgICAgICB2YXIgbXNnQ29weSA9
IFdlYkluc3BlY3Rvci5jb25zb2xlVmlldy5jcmVhdGVNZXNzYWdlKG1zZy5zb3VyY2UsIG1zZy50
eXBlLCBtc2cubGV2ZWwsIG1zZy5saW5lLCBtc2cudXJsLCBjb3VudCAtIHByZXZSZXBlYXRDb3Vu
dCwgbXNnLl9tZXNzYWdlVGV4dCwgbXNnLl9wYXJhbWV0ZXJzLCBtc2cuX3N0YWNrVHJhY2UsIG1z
Zy5fcmVxdWVzdCk7CiAgICAgICAgICAgICBtc2dDb3B5LnRvdGFsUmVwZWF0Q291bnQgPSBjb3Vu
dDsKICAgICAgICAgICAgIHRoaXMuYWRkTWVzc2FnZShtc2dDb3B5KTsKICAgICAgICAgfQpAQCAt
MTcwLDE5ICsxNzAsMjEgQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLnByb3RvdHlwZSA9
IHsKICAqIEBwYXJhbSB7QXJyYXkuPFJ1bnRpbWVBZ2VudC5SZW1vdGVPYmplY3Q+PX0gcGFyYW1l
dGVycwogICogQHBhcmFtIHtDb25zb2xlQWdlbnQuU3RhY2tUcmFjZT19IHN0YWNrVHJhY2UKICAq
IEBwYXJhbSB7V2ViSW5zcGVjdG9yLlJlc291cmNlPX0gcmVxdWVzdAorICogQHBhcmFtIHtXZWJJ
bnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5MaW5raWZpZXI9fSBsaW5raWZpZXIK
ICAqCiAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2V9CiAgKi8KLVdlYklu
c3BlY3Rvci5Db25zb2xlTWVzc2FnZS5jcmVhdGUgPSBmdW5jdGlvbihzb3VyY2UsIHR5cGUsIGxl
dmVsLCBsaW5lLCB1cmwsIHJlcGVhdENvdW50LCBtZXNzYWdlLCBwYXJhbWV0ZXJzLCBzdGFja1Ry
YWNlLCByZXF1ZXN0KQorV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLmNyZWF0ZSA9IGZ1bmN0
aW9uKHNvdXJjZSwgdHlwZSwgbGV2ZWwsIGxpbmUsIHVybCwgcmVwZWF0Q291bnQsIG1lc3NhZ2Us
IHBhcmFtZXRlcnMsIHN0YWNrVHJhY2UsIHJlcXVlc3QsIGxpbmtpZmllcikKIHsKIH0KIAogLyoq
CiAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dAogICogQHBhcmFtIHtzdHJpbmd9IGxldmVsCisgKiBA
cGFyYW0ge1dlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLkxpbmtpZmllcj19
IGxpbmtpZmllcgogICogQHJldHVybiB7V2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlfQogICov
Ci1XZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuY3JlYXRlVGV4dE1lc3NhZ2UgPSBmdW5jdGlv
bih0ZXh0LCBsZXZlbCkKK1dlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5jcmVhdGVUZXh0TWVz
c2FnZSA9IGZ1bmN0aW9uKHRleHQsIGxldmVsLCBsaW5raWZpZXIpCiB7CiB9CiAKQEAgLTIzMCw3
ICsyMzIsNyBAQCBXZWJJbnNwZWN0b3IuQ29uc29sZURpc3BhdGNoZXIgPSBmdW5jdGlvbihjb25z
b2xlKQogV2ViSW5zcGVjdG9yLkNvbnNvbGVEaXNwYXRjaGVyLnByb3RvdHlwZSA9IHsKICAgICBt
ZXNzYWdlQWRkZWQ6IGZ1bmN0aW9uKHBheWxvYWQpCiAgICAgewotICAgICAgICB2YXIgY29uc29s
ZU1lc3NhZ2UgPSBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuY3JlYXRlKAorICAgICAgICB2
YXIgY29uc29sZU1lc3NhZ2UgPSBXZWJJbnNwZWN0b3IuY29uc29sZVZpZXcuY3JlYXRlTWVzc2Fn
ZSgKICAgICAgICAgICAgIHBheWxvYWQuc291cmNlLAogICAgICAgICAgICAgcGF5bG9hZC50eXBl
LAogICAgICAgICAgICAgcGF5bG9hZC5sZXZlbCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvQ29uc29sZVZpZXcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVWaWV3LmpzCmluZGV4IGU0MTI0MzJjZDlmZGYzOWJkY2U3
NDM5MGYyMTVhNmNmZTk3ZmY2ZDQuLjlhYzY3MWYwYWIxNjMyMjc3YWZlNGE4MjZmNWJlYTI5OTlk
YjNiNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29u
c29sZVZpZXcuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db25z
b2xlVmlldy5qcwpAQCAtMTEwLDYgKzExMCw4IEBAIFdlYkluc3BlY3Rvci5Db25zb2xlVmlldyA9
IGZ1bmN0aW9uKGhpZGVDb250ZXh0U2VsZWN0b3IpCiAKICAgICBXZWJJbnNwZWN0b3IuY29uc29s
ZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Db25zb2xlTW9kZWwuRXZlbnRzLk1lc3Nh
Z2VBZGRlZCwgdGhpcy5fY29uc29sZU1lc3NhZ2VBZGRlZCwgdGhpcyk7CiAgICAgV2ViSW5zcGVj
dG9yLmNvbnNvbGUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQ29uc29sZU1vZGVsLkV2
ZW50cy5Db25zb2xlQ2xlYXJlZCwgdGhpcy5fY29uc29sZUNsZWFyZWQsIHRoaXMpOworCisgICAg
dGhpcy5fbGlua2lmaWVyID0gV2ViSW5zcGVjdG9yLmRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwu
Y3JlYXRlTGlua2lmaWVyKCk7CiB9CiAKIFdlYkluc3BlY3Rvci5Db25zb2xlVmlldy5FdmVudHMg
PSB7CkBAIC0xMTgsNiArMTIwLDE3IEBAIFdlYkluc3BlY3Rvci5Db25zb2xlVmlldy5FdmVudHMg
PSB7CiB9CiAKIFdlYkluc3BlY3Rvci5Db25zb2xlVmlldy5wcm90b3R5cGUgPSB7CisgICAgY3Jl
YXRlTWVzc2FnZTogZnVuY3Rpb24oc291cmNlLCB0eXBlLCBsZXZlbCwgbGluZSwgdXJsLCByZXBl
YXRDb3VudCwgbWVzc2FnZSwgcGFyYW1ldGVycywgc3RhY2tUcmFjZSwgcmVxdWVzdCkKKyAgICB7
CisgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlSW1wbChzb3Vy
Y2UsIHR5cGUsIGxldmVsLCBsaW5lLCB1cmwsIHJlcGVhdENvdW50LCBtZXNzYWdlLCBwYXJhbWV0
ZXJzLCBzdGFja1RyYWNlLCByZXF1ZXN0LCB0aGlzLl9saW5raWZpZXIpOworICAgIH0sCisKKyAg
ICBjcmVhdGVUZXh0TWVzc2FnZTogZnVuY3Rpb24odGV4dCwgbGV2ZWwpCisgICAgeworICAgICAg
ICBsZXZlbCA9IGxldmVsIHx8IFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlTGV2
ZWwuTG9nOworICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZUlt
cGwoV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VTb3VyY2UuQ29uc29sZUFQSSwg
V2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VUeXBlLkxvZywgbGV2ZWwsIDAsIG51
bGwsIDEsIG51bGwsIFt0ZXh0XSwgbnVsbCwgdGhpcy5fbGlua2lmaWVyKTsKKyAgICB9LAorCiAg
ICAgZ2V0IHN0YXR1c0Jhckl0ZW1zKCkKICAgICB7CiAgICAgICAgIHJldHVybiBbdGhpcy5fY2xl
YXJDb25zb2xlQnV0dG9uLmVsZW1lbnQsIHRoaXMuX2NvbnRleHRTZWxlY3RFbGVtZW50LCB0aGlz
Ll9maWx0ZXJCYXJFbGVtZW50XTsKQEAgLTMyNiw2ICszMzksOCBAQCBXZWJJbnNwZWN0b3IuQ29u
c29sZVZpZXcucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLnRvcEdyb3VwLm1lc3NhZ2VzRWxl
bWVudC5yZW1vdmVDaGlsZHJlbigpOwogCiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlz
dGVuZXJzKFdlYkluc3BlY3Rvci5Db25zb2xlVmlldy5FdmVudHMuQ29uc29sZUNsZWFyZWQpOwor
CisgICAgICAgIHRoaXMuX2xpbmtpZmllci5yZXNldCgpOwogICAgIH0sCiAKICAgICBjb21wbGV0
aW9uczogZnVuY3Rpb24od29yZFJhbmdlLCBiZXN0TWF0Y2hPbmx5LCBjb21wbGV0aW9uc1JlYWR5
Q2FsbGJhY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0RlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0RlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuanMKaW5kZXggZGZlMDEwMTM1NmJl
MjE2ZmU2OWYxOGM1ZTVkMmVhZGI4YmEzNjYyNC4uNDRhNDYzMmU2YWUyZjJhODJkZTJjYjY5Y2Y2
YzBiM2JkZDNjY2Y0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5qcwpAQCAtNjcsMzAg
KzY3LDkgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuRXZlbnRzID0g
ewogfQogCiBXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUg
PSB7Ci0gICAgbGlua2lmeUxvY2F0aW9uOiBmdW5jdGlvbihzb3VyY2VVUkwsIGxpbmVOdW1iZXIs
IGNvbHVtbk51bWJlciwgY2xhc3NlcykKKyAgICBjcmVhdGVMaW5raWZpZXI6IGZ1bmN0aW9uKCkK
ICAgICB7Ci0gICAgICAgIHZhciBsaW5rVGV4dCA9IFdlYkluc3BlY3Rvci5mb3JtYXRMaW5rVGV4
dChzb3VyY2VVUkwsIGxpbmVOdW1iZXIpOwotICAgICAgICB2YXIgYW5jaG9yID0gV2ViSW5zcGVj
dG9yLmxpbmtpZnlVUkxBc05vZGUoc291cmNlVVJMLCBsaW5rVGV4dCwgY2xhc3NlcywgZmFsc2Up
OwotCi0gICAgICAgIHZhciByYXdTb3VyY2VDb2RlID0gdGhpcy5fcmF3U291cmNlQ29kZUZvclNj
cmlwdFdpdGhVUkwoc291cmNlVVJMKTsKLSAgICAgICAgaWYgKCFyYXdTb3VyY2VDb2RlKSB7Ci0g
ICAgICAgICAgICBhbmNob3Iuc2V0QXR0cmlidXRlKCJwcmVmZXJyZWRfcGFuZWwiLCAicmVzb3Vy
Y2VzIik7Ci0gICAgICAgICAgICBhbmNob3Iuc2V0QXR0cmlidXRlKCJsaW5lX251bWJlciIsIGxp
bmVOdW1iZXIpOwotICAgICAgICAgICAgcmV0dXJuIGFuY2hvcjsKLSAgICAgICAgfQotCi0gICAg
ICAgIGZ1bmN0aW9uIHVwZGF0ZUFuY2hvcigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHZhciB1
aUxvY2F0aW9uID0gcmF3U291cmNlQ29kZS5zb3VyY2VNYXBwaW5nLnJhd0xvY2F0aW9uVG9VSUxv
Y2F0aW9uKHsgbGluZU51bWJlcjogbGluZU51bWJlciwgY29sdW1uTnVtYmVyOiBjb2x1bW5OdW1i
ZXIgfSk7Ci0gICAgICAgICAgICBhbmNob3IudGV4dENvbnRlbnQgPSBXZWJJbnNwZWN0b3IuZm9y
bWF0TGlua1RleHQodWlMb2NhdGlvbi51aVNvdXJjZUNvZGUudXJsLCB1aUxvY2F0aW9uLmxpbmVO
dW1iZXIpOwotICAgICAgICAgICAgYW5jaG9yLnNldEF0dHJpYnV0ZSgicHJlZmVycmVkX3BhbmVs
IiwgInNjcmlwdHMiKTsKLSAgICAgICAgICAgIGFuY2hvci51aVNvdXJjZUNvZGUgPSB1aUxvY2F0
aW9uLnVpU291cmNlQ29kZTsKLSAgICAgICAgICAgIGFuY2hvci5saW5lTnVtYmVyID0gdWlMb2Nh
dGlvbi5saW5lTnVtYmVyOwotICAgICAgICB9Ci0gICAgICAgIGlmIChyYXdTb3VyY2VDb2RlLnNv
dXJjZU1hcHBpbmcpCi0gICAgICAgICAgICB1cGRhdGVBbmNob3IuY2FsbCh0aGlzKTsKLSAgICAg
ICAgcmF3U291cmNlQ29kZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5SYXdTb3VyY2VD
b2RlLkV2ZW50cy5Tb3VyY2VNYXBwaW5nVXBkYXRlZCwgdXBkYXRlQW5jaG9yLCB0aGlzKTsKLSAg
ICAgICAgcmV0dXJuIGFuY2hvcjsKKyAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuRGVi
dWdnZXJQcmVzZW50YXRpb25Nb2RlbC5MaW5raWZpZXIodGhpcyk7CiAgICAgfSwKIAogICAgIGNy
ZWF0ZVBsYWNhcmQ6IGZ1bmN0aW9uKGNhbGxGcmFtZSkKQEAgLTI2OCw3ICsyNDcsNyBAQCBXZWJJ
bnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgICAg
IGlmICghbWVzc2FnZS51cmwgfHwgIW1lc3NhZ2UuaXNFcnJvck9yV2FybmluZygpIHx8ICFtZXNz
YWdlLm1lc3NhZ2UpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgdmFyIHJhd1NvdXJj
ZUNvZGUgPSB0aGlzLl9yYXdTb3VyY2VDb2RlRm9yU2NyaXB0V2l0aFVSTChtZXNzYWdlLnVybCk7
CisgICAgICAgIHZhciByYXdTb3VyY2VDb2RlID0gdGhpcy5yYXdTb3VyY2VDb2RlRm9yU2NyaXB0
V2l0aFVSTChtZXNzYWdlLnVybCk7CiAgICAgICAgIGlmICghcmF3U291cmNlQ29kZSkKICAgICAg
ICAgICAgIHJldHVybjsKIApAQCAtNDIyLDcgKzQwMSw3IEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dl
clByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAvKioKICAgICAgKiBAcGFyYW0g
e3N0cmluZ30gc291cmNlVVJMCiAgICAgICovCi0gICAgX3Jhd1NvdXJjZUNvZGVGb3JTY3JpcHRX
aXRoVVJMOiBmdW5jdGlvbihzb3VyY2VVUkwpCisgICAgcmF3U291cmNlQ29kZUZvclNjcmlwdFdp
dGhVUkw6IGZ1bmN0aW9uKHNvdXJjZVVSTCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9y
YXdTb3VyY2VDb2RlW3NvdXJjZVVSTF07CiAgICAgfSwKQEAgLTU0NCw3ICs1MjMsNyBAQCBXZWJJ
bnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbFJlc291cmNlQmluZGluZyA9IGZ1bmN0
aW9uKG1vZGVsKQogV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWxSZXNvdXJj
ZUJpbmRpbmcucHJvdG90eXBlID0gewogICAgIGNhblNldENvbnRlbnQ6IGZ1bmN0aW9uKHJlc291
cmNlKQogICAgIHsKLSAgICAgICAgdmFyIHJhd1NvdXJjZUNvZGUgPSB0aGlzLl9wcmVzZW50YXRp
b25Nb2RlbC5fcmF3U291cmNlQ29kZUZvclNjcmlwdFdpdGhVUkwocmVzb3VyY2UudXJsKQorICAg
ICAgICB2YXIgcmF3U291cmNlQ29kZSA9IHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVsLnJhd1NvdXJj
ZUNvZGVGb3JTY3JpcHRXaXRoVVJMKHJlc291cmNlLnVybCkKICAgICAgICAgaWYgKCFyYXdTb3Vy
Y2VDb2RlKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICByZXR1cm4gdGhpcy5f
cHJlc2VudGF0aW9uTW9kZWwuY2FuRWRpdFNjcmlwdFNvdXJjZShyYXdTb3VyY2VDb2RlLnNvdXJj
ZU1hcHBpbmcudWlTb3VyY2VDb2RlKTsKQEAgLTU1NSw3ICs1MzQsNyBAQCBXZWJJbnNwZWN0b3Iu
RGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbFJlc291cmNlQmluZGluZy5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIGlmICghbWFqb3JDaGFuZ2UpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAg
dmFyIHJhd1NvdXJjZUNvZGUgPSB0aGlzLl9wcmVzZW50YXRpb25Nb2RlbC5fcmF3U291cmNlQ29k
ZUZvclNjcmlwdFdpdGhVUkwocmVzb3VyY2UudXJsKTsKKyAgICAgICAgdmFyIHJhd1NvdXJjZUNv
ZGUgPSB0aGlzLl9wcmVzZW50YXRpb25Nb2RlbC5yYXdTb3VyY2VDb2RlRm9yU2NyaXB0V2l0aFVS
TChyZXNvdXJjZS51cmwpOwogICAgICAgICBpZiAoIXJhd1NvdXJjZUNvZGUpIHsKICAgICAgICAg
ICAgIHVzZXJDYWxsYmFjaygiUmVzb3VyY2UgaXMgbm90IGVkaXRhYmxlIik7CiAgICAgICAgICAg
ICByZXR1cm47CkBAIC01NzcsNiArNTU2LDczIEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNl
bnRhdGlvbk1vZGVsUmVzb3VyY2VCaW5kaW5nLnByb3RvdHlwZSA9IHsKICAgICB9CiB9CiAKKy8q
KgorICogQGNvbnN0cnVjdG9yCisgKi8KK1dlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlv
bk1vZGVsLkxpbmtpZmllciA9IGZ1bmN0aW9uKG1vZGVsKQoreworICAgIHRoaXMuX21vZGVsID0g
bW9kZWw7CisgICAgdGhpcy5fYW5jaG9yc0ZvclVSTCA9IHt9OworfQorCitXZWJJbnNwZWN0b3Iu
RGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5MaW5raWZpZXIucHJvdG90eXBlID0geworICAgIGxp
bmtpZnlMb2NhdGlvbjogZnVuY3Rpb24oc291cmNlVVJMLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1i
ZXIsIGNsYXNzZXMpCisgICAgeworICAgICAgICB2YXIgbGlua1RleHQgPSBXZWJJbnNwZWN0b3Iu
Zm9ybWF0TGlua1RleHQoc291cmNlVVJMLCBsaW5lTnVtYmVyKTsKKyAgICAgICAgdmFyIGFuY2hv
ciA9IFdlYkluc3BlY3Rvci5saW5raWZ5VVJMQXNOb2RlKHNvdXJjZVVSTCwgbGlua1RleHQsIGNs
YXNzZXMsIGZhbHNlKTsKKyAgICAgICAgYW5jaG9yLnJhd0xvY2F0aW9uID0geyBsaW5lTnVtYmVy
OiBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXI6IGNvbHVtbk51bWJlciB9OworCisgICAgICAgIHZh
ciByYXdTb3VyY2VDb2RlID0gdGhpcy5fbW9kZWwucmF3U291cmNlQ29kZUZvclNjcmlwdFdpdGhV
Ukwoc291cmNlVVJMKTsKKyAgICAgICAgaWYgKCFyYXdTb3VyY2VDb2RlKSB7CisgICAgICAgICAg
ICBhbmNob3Iuc2V0QXR0cmlidXRlKCJwcmVmZXJyZWRfcGFuZWwiLCAicmVzb3VyY2VzIik7Cisg
ICAgICAgICAgICBhbmNob3Iuc2V0QXR0cmlidXRlKCJsaW5lX251bWJlciIsIGxpbmVOdW1iZXIp
OworICAgICAgICAgICAgcmV0dXJuIGFuY2hvcjsKKyAgICAgICAgfQorCisgICAgICAgIHZhciBh
bmNob3JzID0gdGhpcy5fYW5jaG9yc0ZvclVSTFtzb3VyY2VVUkxdOworICAgICAgICBpZiAoIWFu
Y2hvcnMpIHsKKyAgICAgICAgICAgIGFuY2hvcnMgPSBbXTsKKyAgICAgICAgICAgIHRoaXMuX2Fu
Y2hvcnNGb3JVUkxbc291cmNlVVJMXSA9IGFuY2hvcnM7CisgICAgICAgICAgICByYXdTb3VyY2VD
b2RlLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUuRXZlbnRzLlNv
dXJjZU1hcHBpbmdVcGRhdGVkLCB0aGlzLl91cGRhdGVTb3VyY2VBbmNob3JzLCB0aGlzKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGlmIChyYXdTb3VyY2VDb2RlLnNvdXJjZU1hcHBpbmcpCisgICAg
ICAgICAgICB0aGlzLl91cGRhdGVBbmNob3IocmF3U291cmNlQ29kZSwgYW5jaG9yKTsKKyAgICAg
ICAgYW5jaG9ycy5wdXNoKGFuY2hvcik7CisgICAgICAgIHJldHVybiBhbmNob3I7CisgICAgfSwK
KworICAgIHJlc2V0OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBmb3IgKHZhciBzb3VyY2VV
UkwgaW4gdGhpcy5fYW5jaG9yc0ZvclVSTCkgeworICAgICAgICAgICAgdmFyIHJhd1NvdXJjZUNv
ZGUgPSB0aGlzLl9tb2RlbC5yYXdTb3VyY2VDb2RlRm9yU2NyaXB0V2l0aFVSTChzb3VyY2VVUkwp
OworICAgICAgICAgICAgaWYgKHJhd1NvdXJjZUNvZGUpCisgICAgICAgICAgICAgICAgcmF3U291
cmNlQ29kZS5yZW1vdmVFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlLkV2
ZW50cy5Tb3VyY2VNYXBwaW5nVXBkYXRlZCwgdGhpcy5fdXBkYXRlU291cmNlQW5jaG9ycywgdGhp
cyk7CisgICAgICAgIH0KKyAgICAgICAgdGhpcy5fYW5jaG9yc0ZvclVSTCA9IHt9OworICAgIH0s
CisKKyAgICBfdXBkYXRlU291cmNlQW5jaG9yczogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAg
ICAgICB2YXIgcmF3U291cmNlQ29kZSA9IGV2ZW50LnRhcmdldDsKKyAgICAgICAgdmFyIGFuY2hv
cnMgPSB0aGlzLl9hbmNob3JzRm9yVVJMW3Jhd1NvdXJjZUNvZGUudXJsXTsKKyAgICAgICAgaWYg
KCFhbmNob3JzKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgYW5jaG9ycy5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUFuY2hv
cihyYXdTb3VyY2VDb2RlLCBhbmNob3JzW2ldKTsKKyAgICB9LAorCisgICAgX3VwZGF0ZUFuY2hv
cjogZnVuY3Rpb24ocmF3U291cmNlQ29kZSwgYW5jaG9yKQorICAgIHsKKyAgICAgICAgdmFyIHVp
TG9jYXRpb24gPSByYXdTb3VyY2VDb2RlLnNvdXJjZU1hcHBpbmcucmF3TG9jYXRpb25Ub1VJTG9j
YXRpb24oYW5jaG9yLnJhd0xvY2F0aW9uKTsKKyAgICAgICAgYW5jaG9yLnRleHRDb250ZW50ID0g
V2ViSW5zcGVjdG9yLmZvcm1hdExpbmtUZXh0KHVpTG9jYXRpb24udWlTb3VyY2VDb2RlLnVybCwg
dWlMb2NhdGlvbi5saW5lTnVtYmVyKTsKKyAgICAgICAgYW5jaG9yLnNldEF0dHJpYnV0ZSgicHJl
ZmVycmVkX3BhbmVsIiwgInNjcmlwdHMiKTsKKyAgICAgICAgYW5jaG9yLnVpU291cmNlQ29kZSA9
IHVpTG9jYXRpb24udWlTb3VyY2VDb2RlOworICAgICAgICBhbmNob3IubGluZU51bWJlciA9IHVp
TG9jYXRpb24ubGluZU51bWJlcjsKKyAgICB9Cit9CisKIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclBy
ZXNlbnRhdGlvbk1vZGVsUmVzb3VyY2VCaW5kaW5nLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJ
bnNwZWN0b3IuUmVzb3VyY2VEb21haW5Nb2RlbEJpbmRpbmcucHJvdG90eXBlOwogCiAvKioKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRXZlbnRMaXN0ZW5l
cnNTaWRlYmFyUGFuZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRXZl
bnRMaXN0ZW5lcnNTaWRlYmFyUGFuZS5qcwppbmRleCAyZWI4NjQ5NjAxYmZjMzA0OGYwNWZlN2Fk
Y2I1NmNiNTIzOGZjM2RmLi43OTVlNmIxOGQ1MTNjNGYxNGViYmIyY2E2NTg1MTVlYzk2MGU0MWRj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0V2ZW50TGlz
dGVuZXJzU2lkZWJhclBhbmUuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9FdmVudExpc3RlbmVyc1NpZGViYXJQYW5lLmpzCkBAIC01Niw2ICs1Niw4IEBAIFdlYklu
c3BlY3Rvci5FdmVudExpc3RlbmVyc1NpZGViYXJQYW5lID0gZnVuY3Rpb24oKQogICAgIHRoaXMu
c2V0dGluZ3NTZWxlY3RFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsIHRoaXMuX2No
YW5nZVNldHRpbmcuYmluZCh0aGlzKSwgZmFsc2UpOwogCiAgICAgdGhpcy50aXRsZUVsZW1lbnQu
YXBwZW5kQ2hpbGQodGhpcy5zZXR0aW5nc1NlbGVjdEVsZW1lbnQpOworCisgICAgdGhpcy5fbGlu
a2lmaWVyID0gV2ViSW5zcGVjdG9yLmRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuY3JlYXRlTGlu
a2lmaWVyKCk7CiB9CiAKIFdlYkluc3BlY3Rvci5FdmVudExpc3RlbmVyc1NpZGViYXJQYW5lLl9v
YmplY3RHcm91cE5hbWUgPSAiZXZlbnQtbGlzdGVuZXJzLXNpZGViYXItcGFuZSI7CkBAIC02NCw2
ICs2Niw4IEBAIFdlYkluc3BlY3Rvci5FdmVudExpc3RlbmVyc1NpZGViYXJQYW5lLnByb3RvdHlw
ZSA9IHsKICAgICB1cGRhdGU6IGZ1bmN0aW9uKG5vZGUpCiAgICAgewogICAgICAgICBSdW50aW1l
QWdlbnQucmVsZWFzZU9iamVjdEdyb3VwKFdlYkluc3BlY3Rvci5FdmVudExpc3RlbmVyc1NpZGVi
YXJQYW5lLl9vYmplY3RHcm91cE5hbWUpOworICAgICAgICB0aGlzLl9saW5raWZpZXIucmVzZXQo
KTsKKwogICAgICAgICB2YXIgYm9keSA9IHRoaXMuYm9keUVsZW1lbnQ7CiAgICAgICAgIGJvZHku
cmVtb3ZlQ2hpbGRyZW4oKTsKICAgICAgICAgdGhpcy5zZWN0aW9ucyA9IFtdOwpAQCAtODQsNyAr
ODgsNyBAQCBXZWJJbnNwZWN0b3IuRXZlbnRMaXN0ZW5lcnNTaWRlYmFyUGFuZS5wcm90b3R5cGUg
PSB7CiAgICAgICAgICAgICAgICAgdmFyIHR5cGUgPSBldmVudExpc3RlbmVyLnR5cGU7CiAgICAg
ICAgICAgICAgICAgdmFyIHNlY3Rpb24gPSBzZWN0aW9uTWFwW3R5cGVdOwogICAgICAgICAgICAg
ICAgIGlmICghc2VjdGlvbikgewotICAgICAgICAgICAgICAgICAgICBzZWN0aW9uID0gbmV3IFdl
Ykluc3BlY3Rvci5FdmVudExpc3RlbmVyc1NlY3Rpb24odHlwZSwgbm9kZS5pZCk7CisgICAgICAg
ICAgICAgICAgICAgIHNlY3Rpb24gPSBuZXcgV2ViSW5zcGVjdG9yLkV2ZW50TGlzdGVuZXJzU2Vj
dGlvbih0eXBlLCBub2RlLmlkLCBzZWxmLl9saW5raWZpZXIpOwogICAgICAgICAgICAgICAgICAg
ICBzZWN0aW9uTWFwW3R5cGVdID0gc2VjdGlvbjsKICAgICAgICAgICAgICAgICAgICAgc2VjdGlv
bk5hbWVzLnB1c2godHlwZSk7CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2VjdGlvbnMucHVz
aChzZWN0aW9uKTsKQEAgLTEyNCwxMCArMTI4LDExIEBAIFdlYkluc3BlY3Rvci5FdmVudExpc3Rl
bmVyc1NpZGViYXJQYW5lLnByb3RvdHlwZSA9IHsKIAogV2ViSW5zcGVjdG9yLkV2ZW50TGlzdGVu
ZXJzU2lkZWJhclBhbmUucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5TaWRlYmFy
UGFuZS5wcm90b3R5cGU7CiAKLVdlYkluc3BlY3Rvci5FdmVudExpc3RlbmVyc1NlY3Rpb24gPSBm
dW5jdGlvbih0aXRsZSwgbm9kZUlkKQorV2ViSW5zcGVjdG9yLkV2ZW50TGlzdGVuZXJzU2VjdGlv
biA9IGZ1bmN0aW9uKHRpdGxlLCBub2RlSWQsIGxpbmtpZmllcikKIHsKICAgICB0aGlzLmV2ZW50
TGlzdGVuZXJzID0gW107CiAgICAgdGhpcy5fbm9kZUlkID0gbm9kZUlkOworICAgIHRoaXMuX2xp
bmtpZmllciA9IGxpbmtpZmllcjsKICAgICBXZWJJbnNwZWN0b3IuUHJvcGVydGllc1NlY3Rpb24u
Y2FsbCh0aGlzLCB0aXRsZSk7CiAKICAgICAvLyBDaGFuZ2VkIGZyb20gYSBQcm9wZXJ0aWVzIExp
c3QKQEAgLTE1OCw3ICsxNjMsNyBAQCBXZWJJbnNwZWN0b3IuRXZlbnRMaXN0ZW5lcnNTZWN0aW9u
LnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFyIGxlbmd0aCA9IGZpbHRlcmVkRXZlbnRMaXN0ZW5l
cnMubGVuZ3RoOwogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CiAg
ICAgICAgICAgICB2YXIgZXZlbnRMaXN0ZW5lciA9IGZpbHRlcmVkRXZlbnRMaXN0ZW5lcnNbaV07
Ci0gICAgICAgICAgICB2YXIgZXZlbnRMaXN0ZW5lckJhciA9IG5ldyBXZWJJbnNwZWN0b3IuRXZl
bnRMaXN0ZW5lckJhcihldmVudExpc3RlbmVyLCB0aGlzLl9ub2RlSWQpOworICAgICAgICAgICAg
dmFyIGV2ZW50TGlzdGVuZXJCYXIgPSBuZXcgV2ViSW5zcGVjdG9yLkV2ZW50TGlzdGVuZXJCYXIo
ZXZlbnRMaXN0ZW5lciwgdGhpcy5fbm9kZUlkLCB0aGlzLl9saW5raWZpZXIpOwogICAgICAgICAg
ICAgdGhpcy5ldmVudEJhcnMuYXBwZW5kQ2hpbGQoZXZlbnRMaXN0ZW5lckJhci5lbGVtZW50KTsK
ICAgICAgICAgfQogICAgIH0sCkBAIC0xNzEsMTMgKzE3NiwxMyBAQCBXZWJJbnNwZWN0b3IuRXZl
bnRMaXN0ZW5lcnNTZWN0aW9uLnByb3RvdHlwZSA9IHsKIAogV2ViSW5zcGVjdG9yLkV2ZW50TGlz
dGVuZXJzU2VjdGlvbi5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLlByb3BlcnRp
ZXNTZWN0aW9uLnByb3RvdHlwZTsKIAotV2ViSW5zcGVjdG9yLkV2ZW50TGlzdGVuZXJCYXIgPSBm
dW5jdGlvbihldmVudExpc3RlbmVyLCBub2RlSWQpCitXZWJJbnNwZWN0b3IuRXZlbnRMaXN0ZW5l
ckJhciA9IGZ1bmN0aW9uKGV2ZW50TGlzdGVuZXIsIG5vZGVJZCwgbGlua2lmaWVyKQogewogICAg
IHRoaXMuZXZlbnRMaXN0ZW5lciA9IGV2ZW50TGlzdGVuZXI7CiAgICAgdGhpcy5fbm9kZUlkID0g
bm9kZUlkOwogICAgIFdlYkluc3BlY3Rvci5PYmplY3RQcm9wZXJ0aWVzU2VjdGlvbi5jYWxsKHRo
aXMpOwogICAgIHRoaXMuX3NldE5vZGVUaXRsZSgpOwotICAgIHRoaXMuX3NldEZ1bmN0aW9uU3Vi
dGl0bGUoKTsKKyAgICB0aGlzLl9zZXRGdW5jdGlvblN1YnRpdGxlKGxpbmtpZmllcik7CiAgICAg
dGhpcy5lZGl0YWJsZSA9IGZhbHNlOwogICAgIHRoaXMuZWxlbWVudC5jbGFzc05hbWUgPSAiZXZl
bnQtYmFyIjsgLyogQ2hhbmdlZCBmcm9tICJzZWN0aW9uIiAqLwogICAgIHRoaXMuaGVhZGVyRWxl
bWVudC5hZGRTdHlsZUNsYXNzKCJzb3VyY2UtY29kZSIpOwpAQCAtMjMxLDcgKzIzNiw3IEBAIFdl
Ykluc3BlY3Rvci5FdmVudExpc3RlbmVyQmFyLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy50
aXRsZUVsZW1lbnQuYXBwZW5kQ2hpbGQoV2ViSW5zcGVjdG9yLnBhbmVscy5lbGVtZW50cy5saW5r
aWZ5Tm9kZVJlZmVyZW5jZSh0aGlzLmV2ZW50TGlzdGVuZXIubm9kZSkpOwogICAgIH0sCiAKLSAg
ICBfc2V0RnVuY3Rpb25TdWJ0aXRsZTogZnVuY3Rpb24oKQorICAgIF9zZXRGdW5jdGlvblN1YnRp
dGxlOiBmdW5jdGlvbihsaW5raWZpZXIpCiAgICAgewogICAgICAgICAvLyBSZXF1aXJlcyB0aGF0
IEZ1bmN0aW9uLnRvU3RyaW5nKCkgcmV0dXJuIGF0IGxlYXN0IHRoZSBmdW5jdGlvbidzIHNpZ25h
dHVyZS4KICAgICAgICAgaWYgKHRoaXMuZXZlbnRMaXN0ZW5lci5sb2NhdGlvbikgewpAQCAtMjQw
LDcgKzI0NSw3IEBAIFdlYkluc3BlY3Rvci5FdmVudExpc3RlbmVyQmFyLnByb3RvdHlwZSA9IHsK
ICAgICAgICAgICAgIHZhciB1cmwgPSB0aGlzLmV2ZW50TGlzdGVuZXIubG9jYXRpb24uc2NyaXB0
SWQ7CiAgICAgICAgICAgICB2YXIgbGluZU51bWJlciA9IHRoaXMuZXZlbnRMaXN0ZW5lci5sb2Nh
dGlvbi5saW5lTnVtYmVyIC0gMTsKICAgICAgICAgICAgIHZhciBjb2x1bW5OdW1iZXIgPSAwOwot
ICAgICAgICAgICAgdmFyIHVybEVsZW1lbnQgPSBXZWJJbnNwZWN0b3IuZGVidWdnZXJQcmVzZW50
YXRpb25Nb2RlbC5saW5raWZ5TG9jYXRpb24odXJsLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIp
OworICAgICAgICAgICAgdmFyIHVybEVsZW1lbnQgPSBsaW5raWZpZXIubGlua2lmeUxvY2F0aW9u
KHVybCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyKTsKICAgICAgICAgICAgIHRoaXMuc3VidGl0
bGVFbGVtZW50LmFwcGVuZENoaWxkKHVybEVsZW1lbnQpOwogICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgdmFyIG1hdGNoID0gdGhpcy5ldmVudExpc3RlbmVyLmhhbmRsZXJCb2R5Lm1hdGNo
KC9mdW5jdGlvbiAoW15cKF0rPylcKC8pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25TZXJ2ZXIuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lvblNlcnZlci5qcwppbmRleCBlOWMyN2E4NDhmYjBhN2Ux
YzA5NjZhZGU5YmUwNGM1MTllNTM1MDJiLi5iNjFjNmRjZTZkOWY0MTMyMDdiNjIzZTZkZDhhNzQ0
MTQwOWU4MGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0V4dGVuc2lvblNlcnZlci5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL0V4dGVuc2lvblNlcnZlci5qcwpAQCAtMzMwLDcgKzMzMCw3IEBAIFdlYkluc3BlY3Rvci5F
eHRlbnNpb25TZXJ2ZXIucHJvdG90eXBlID0gewogICAgICAgICBpZiAoIWxldmVsKQogICAgICAg
ICAgICAgcmV0dXJuIHRoaXMuX3N0YXR1cy5FX0JBREFSRygibWVzc2FnZS5zZXZlcml0eSIsIG1l
c3NhZ2Uuc2V2ZXJpdHkpOwogCi0gICAgICAgIHZhciBjb25zb2xlTWVzc2FnZSA9IFdlYkluc3Bl
Y3Rvci5Db25zb2xlTWVzc2FnZS5jcmVhdGUoCisgICAgICAgIHZhciBjb25zb2xlTWVzc2FnZSA9
IFdlYkluc3BlY3Rvci5jb25zb2xlVmlldy5jcmVhdGVNZXNzYWdlKAogICAgICAgICAgICAgV2Vi
SW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VTb3VyY2UuSlMsCiAgICAgICAgICAgICBX
ZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVR5cGUuTG9nLAogICAgICAgICAgICAg
bGV2ZWwsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05l
dHdvcmtNYW5hZ2VyLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3
b3JrTWFuYWdlci5qcwppbmRleCAxZWJhZjcyNDFiNzVhNzk5ZTVkNzg4ZTNhZGUxMDdhOWFlY2U3
MmEzLi4zY2VkYjU5NDlmNTE1Yzg2ODE1OGYxMGVkZmUyYmVhZmIxYjkyMGM5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtNYW5hZ2VyLmpzCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya01hbmFnZXIuanMK
QEAgLTEyNyw3ICsxMjcsNyBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya0Rpc3BhdGNoZXIucHJvdG90
eXBlID0gewogICAgICAgICAgICAgcmVzb3VyY2UudGltaW5nID0gcmVzcG9uc2UudGltaW5nOwog
CiAgICAgICAgIGlmICghdGhpcy5fbWltZVR5cGVJc0NvbnNpc3RlbnRXaXRoVHlwZShyZXNvdXJj
ZSkpIHsKLSAgICAgICAgICAgIFdlYkluc3BlY3Rvci5jb25zb2xlLmFkZE1lc3NhZ2UoV2ViSW5z
cGVjdG9yLkNvbnNvbGVNZXNzYWdlLmNyZWF0ZShXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2Uu
TWVzc2FnZVNvdXJjZS5PdGhlciwKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5jb25zb2xlLmFk
ZE1lc3NhZ2UoV2ViSW5zcGVjdG9yLmNvbnNvbGVWaWV3LmNyZWF0ZU1lc3NhZ2UoV2ViSW5zcGVj
dG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VTb3VyY2UuT3RoZXIsCiAgICAgICAgICAgICAgICAg
V2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VUeXBlLkxvZywKICAgICAgICAgICAg
ICAgICBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZUxldmVsLldhcm5pbmcsCiAg
ICAgICAgICAgICAgICAgLTEsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL05ldHdvcmtQYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvTmV0d29ya1BhbmVsLmpzCmluZGV4IDNhYTFmNzY0OGZlZTYwYTJhYjI1ZTU0YTFmZjdm
ZDVjZDdiODM5ZGUuLjI0MGZhYzgwNDlkMzYzYTQyNDRlOTI5YzI5YmZmYjIxOGU1ZTk2MDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya1BhbmVs
LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya1BhbmVs
LmpzCkBAIC01Niw2ICs1Niw3IEBAIFdlYkluc3BlY3Rvci5OZXR3b3JrTG9nVmlldyA9IGZ1bmN0
aW9uKHBhcmVudEVsZW1lbnQpCiAKICAgICB0aGlzLl9jcmVhdGVTdGF0dXNiYXJCdXR0b25zKCk7
CiAgICAgdGhpcy5fY3JlYXRlRmlsdGVyU3RhdHVzQmFySXRlbXMoKTsKKyAgICB0aGlzLl9saW5r
aWZpZXIgPSBXZWJJbnNwZWN0b3IuZGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5jcmVhdGVMaW5r
aWZpZXIoKTsKIAogICAgIFdlYkluc3BlY3Rvci5uZXR3b3JrTWFuYWdlci5hZGRFdmVudExpc3Rl
bmVyKFdlYkluc3BlY3Rvci5OZXR3b3JrTWFuYWdlci5FdmVudFR5cGVzLlJlc291cmNlU3RhcnRl
ZCwgdGhpcy5fb25SZXNvdXJjZVN0YXJ0ZWQsIHRoaXMpOwogICAgIFdlYkluc3BlY3Rvci5uZXR3
b3JrTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5OZXR3b3JrTWFuYWdlci5F
dmVudFR5cGVzLlJlc291cmNlVXBkYXRlZCwgdGhpcy5fb25SZXNvdXJjZVVwZGF0ZWQsIHRoaXMp
OwpAQCAtNzM1LDcgKzczNiw3IEBAIFdlYkluc3BlY3Rvci5OZXR3b3JrTG9nVmlldy5wcm90b3R5
cGUgPSB7CiAKICAgICAgICAgdGhpcy5fbWFpblJlc291cmNlTG9hZFRpbWUgPSAtMTsKICAgICAg
ICAgdGhpcy5fbWFpblJlc291cmNlRE9NQ29udGVudFRpbWUgPSAtMTsKLQorICAgICAgICB0aGlz
Ll9saW5raWZpZXIucmVzZXQoKTsKICAgICB9LAogCiAgICAgZ2V0IHJlc291cmNlcygpCkBAIC0y
MDQ1LDcgKzIwNDYsNyBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya0RhdGFHcmlkTm9kZS5wcm90b3R5
cGUgPSB7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgdGhpcy5faW5pdGlhdG9yQ2VsbC50aXRsZSA9IHRvcEZyYW1lLnVybCAr
ICI6IiArIHRvcEZyYW1lLmxpbmVOdW1iZXI7Ci0gICAgICAgICAgICAgICAgdmFyIHVybEVsZW1l
bnQgPSBXZWJJbnNwZWN0b3IuZGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5saW5raWZ5TG9jYXRp
b24odG9wRnJhbWUudXJsLCB0b3BGcmFtZS5saW5lTnVtYmVyIC0gMSwgMCk7CisgICAgICAgICAg
ICAgICAgdmFyIHVybEVsZW1lbnQgPSB0aGlzLl9wYXJlbnRWaWV3Ll9saW5raWZpZXIubGlua2lm
eUxvY2F0aW9uKHRvcEZyYW1lLnVybCwgdG9wRnJhbWUubGluZU51bWJlciAtIDEsIDApOwogICAg
ICAgICAgICAgICAgIHRoaXMuX2luaXRpYXRvckNlbGwuYXBwZW5kQ2hpbGQodXJsRWxlbWVudCk7
CiAgICAgICAgICAgICAgICAgdGhpcy5fYXBwZW5kU3VidGl0bGUodGhpcy5faW5pdGlhdG9yQ2Vs
bCwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTY3JpcHQiKSk7CiAgICAgICAgICAgICB9IGVsc2Ug
eyAvLyBpbml0aWF0b3IudHlwZSA9PT0gInBhcnNlciIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUHJvZmlsZURhdGFHcmlkVHJlZS5qcyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUHJvZmlsZURhdGFHcmlkVHJlZS5qcwppbmRleCA1
ODU1NjhjM2FiYTA2OTgxY2VjODUyOWYxMTQyYjkwZjI2NDNiODdlLi5jZjQwYmMyNmU3OTA5MzA1
M2ZkNzkyYjM3Mzc1MjhiMzQ5YWZiNGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVEYXRhR3JpZFRyZWUuanMKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlRGF0YUdyaWRUcmVlLmpzCkBAIC05OCw3ICs5
OCw3IEBAIFdlYkluc3BlY3Rvci5Qcm9maWxlRGF0YUdyaWROb2RlLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgaWYgKHRoaXMucHJvZmlsZU5vZGUudXJsKSB7CiAgICAgICAgICAgICAvLyBGSVhNRSg2
MjcyNSk6IHByb2ZpbGVOb2RlIHNob3VsZCByZWZlcmVuY2UgYSBkZWJ1Z2dlciBsb2NhdGlvbi4K
ICAgICAgICAgICAgIHZhciBsaW5lTnVtYmVyID0gdGhpcy5wcm9maWxlTm9kZS5saW5lTnVtYmVy
ID8gdGhpcy5wcm9maWxlTm9kZS5saW5lTnVtYmVyIC0gMSA6IDA7Ci0gICAgICAgICAgICB2YXIg
dXJsRWxlbWVudCA9IFdlYkluc3BlY3Rvci5kZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLmxpbmtp
ZnlMb2NhdGlvbih0aGlzLnByb2ZpbGVOb2RlLnVybCwgbGluZU51bWJlciwgMCwgInByb2ZpbGUt
bm9kZS1maWxlIik7CisgICAgICAgICAgICB2YXIgdXJsRWxlbWVudCA9IHRoaXMucHJvZmlsZVZp
ZXcuX2xpbmtpZmllci5saW5raWZ5TG9jYXRpb24odGhpcy5wcm9maWxlTm9kZS51cmwsIGxpbmVO
dW1iZXIsIDAsICJwcm9maWxlLW5vZGUtZmlsZSIpOwogICAgICAgICAgICAgdXJsRWxlbWVudC5z
dHlsZS5tYXhXaWR0aCA9ICI3NSUiOwogICAgICAgICAgICAgY2VsbC5pbnNlcnRCZWZvcmUodXJs
RWxlbWVudCwgY2VsbC5maXJzdENoaWxkKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlVmlldy5qcyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUHJvZmlsZVZpZXcuanMKaW5kZXggMmEwM2Y4MzA1MWRh
NTQxZWZlNDE0MDljMTFiZGQyYWU4OTQzMWNlMi4uY2UwNDc3MWRmYTNkOTcxMjJhYjc4YWExOGQy
MDI1NDNjMjY5NDViYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9Qcm9maWxlVmlldy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1Byb2ZpbGVWaWV3LmpzCkBAIC05Niw2ICs5Niw4IEBAIFdlYkluc3BlY3Rvci5DUFVQcm9m
aWxlVmlldyA9IGZ1bmN0aW9uKHByb2ZpbGUpCiAgICAgICAgIHNlbGYuX3VwZGF0ZVBlcmNlbnRC
dXR0b24oKTsKICAgICB9CiAKKyAgICB0aGlzLl9saW5raWZpZXIgPSBXZWJJbnNwZWN0b3IuZGVi
dWdnZXJQcmVzZW50YXRpb25Nb2RlbC5jcmVhdGVMaW5raWZpZXIoKTsKKwogICAgIFByb2ZpbGVy
QWdlbnQuZ2V0UHJvZmlsZSh0aGlzLnByb2ZpbGUudHlwZUlkLCB0aGlzLnByb2ZpbGUudWlkLCBw
cm9maWxlQ2FsbGJhY2spOwogfQogCkBAIC00ODUsNiArNDg3LDcgQEAgV2ViSW5zcGVjdG9yLkNQ
VVByb2ZpbGVWaWV3LnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAgIHRoaXMucmVzZXRCdXR0
b24udmlzaWJsZSA9IGZhbHNlOwogICAgICAgICB0aGlzLnByb2ZpbGVEYXRhR3JpZFRyZWUucmVz
dG9yZSgpOworICAgICAgICB0aGlzLl9saW5raWllci5yZXNldCgpOwogICAgICAgICB0aGlzLnJl
ZnJlc2goKTsKICAgICAgICAgdGhpcy5yZWZyZXNoVmlzaWJsZURhdGEoKTsKICAgICB9LApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZVBhbmVs
LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZVBhbmVsLmpz
CmluZGV4IDE1NTE3Y2U2Mzk3ZGY0ZTU1YjY2NTAwNTc2MGUyMzBlM2EwZjM4MzQuLjM2OTgxYzI4
YTUwOTc2OWRlYjk4ODVmOGZkMWY5ZWJlNzYxYTI0YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVQYW5lbC5qcworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lUGFuZWwuanMKQEAgLTEwOSw2ICsxMDks
NyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbCA9IGZ1bmN0aW9uKCkKIAogICAgIHRoaXMu
X3JlZ2lzdGVyU2hvcnRjdXRzKCk7CiAgICAgV2ViSW5zcGVjdG9yLnRpbWVsaW5lTWFuYWdlci5h
ZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5UaW1lbGluZU1hbmFnZXIuRXZlbnRUeXBlcy5U
aW1lbGluZUV2ZW50UmVjb3JkZWQsIHRoaXMuX29uVGltZWxpbmVFdmVudFJlY29yZGVkLCB0aGlz
KTsKKyAgICB0aGlzLl9saW5raWZpZXIgPSBXZWJJbnNwZWN0b3IuZGVidWdnZXJQcmVzZW50YXRp
b25Nb2RlbC5jcmVhdGVMaW5raWZpZXIoKTsKIH0KIAogLy8gRGVmaW5lIHJvdyBoZWlnaHQsIHNo
b3VsZCBiZSBpbiBzeW5jIHdpdGggc3R5bGVzIGZvciB0aW1lbGluZSBncmFwaHMuCkBAIC0xMTYs
NiArMTE3LDE5IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLnJvd0hlaWdodCA9IDE4Owog
V2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwuc2hvcnRSZWNvcmRUaHJlc2hvbGQgPSAwLjAxNTsK
IAogV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwucHJvdG90eXBlID0geworICAgIF9saW5raWZ5
TG9jYXRpb246IGZ1bmN0aW9uKHVybCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyKQorICAgIHsK
KyAgICAgICAgLy8gRklYTUUoNjI3MjUpOiBzdGFjayB0cmFjZSBsaW5lL2NvbHVtbiBudW1iZXJz
IGFyZSBvbmUtYmFzZWQuCisgICAgICAgIGxpbmVOdW1iZXIgPSBsaW5lTnVtYmVyID8gbGluZU51
bWJlciAtIDEgOiBsaW5lTnVtYmVyOworICAgICAgICBjb2x1bW5OdW1iZXIgPSBjb2x1bW5OdW1i
ZXIgPyBjb2x1bW5OdW1iZXIgLSAxIDogMDsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2xpbmtpZmll
ci5saW5raWZ5TG9jYXRpb24odXJsLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsICJ0aW1lbGlu
ZS1kZXRhaWxzIik7CisgICAgfSwKKworICAgIF9saW5raWZ5Q2FsbEZyYW1lOiBmdW5jdGlvbihj
YWxsRnJhbWUpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fbGlua2lmeUxvY2F0aW9uKGNh
bGxGcmFtZS51cmwsIGNhbGxGcmFtZS5saW5lTnVtYmVyLCBjYWxsRnJhbWUuY29sdW1uTnVtYmVy
KTsKKyAgICB9LAorCiAgICAgX2NyZWF0ZVRvcFBhbmU6IGZ1bmN0aW9uKCkgewogICAgICAgICB2
YXIgdG9wUGFuZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICAg
ICAgdG9wUGFuZUVsZW1lbnQuaWQgPSAidGltZWxpbmUtb3ZlcnZpZXctcGFuZWwiOwpAQCAtNTI4
LDYgKzU0Miw3IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgdGhpcy5fcmVmcmVzaCgpOwogICAgICAgICB0aGlzLl9jbG9zZVJlY29yZERldGFpbHMo
KTsKICAgICAgICAgdGhpcy5fbW9kZWwuX3Jlc2V0KCk7CisgICAgICAgIHRoaXMuX2xpbmtpZmll
ci5yZXNldCgpOwogICAgIH0sCiAKICAgICBlbGVtZW50c1RvUmVzdG9yZVNjcm9sbFBvc2l0aW9u
c0ZvcjogZnVuY3Rpb24oKQpAQCAtOTYxLDYgKzk3Niw3IEBAIFdlYkluc3BlY3Rvci5UaW1lbGlu
ZVJlY29yZEdyYXBoUm93LnByb3RvdHlwZSA9IHsKIAogV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFu
ZWwuRm9ybWF0dGVkUmVjb3JkID0gZnVuY3Rpb24ocmVjb3JkLCBwYXJlbnRSZWNvcmQsIHBhbmVs
LCBzY3JpcHREZXRhaWxzKQogeworICAgIHRoaXMuX3BhbmVsID0gcGFuZWw7CiAgICAgdmFyIHJl
Y29yZFR5cGVzID0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lQWdlbnQuUmVjb3JkVHlwZTsKICAgICB2
YXIgc3R5bGUgPSBwYW5lbC5fcmVjb3JkU3R5bGVzW3JlY29yZC50eXBlXTsKICAgICB0aGlzLnBh
cmVudCA9IHBhcmVudFJlY29yZDsKQEAgLTEwNTEsNyArMTA2Nyw3IEBAIFdlYkluc3BlY3Rvci5U
aW1lbGluZVBhbmVsLkZvcm1hdHRlZFJlY29yZC5wcm90b3R5cGUgPSB7CiAKICAgICBfZ2VuZXJh
dGVQb3B1cENvbnRlbnQ6IGZ1bmN0aW9uKGNhbGN1bGF0b3IsIGNhdGVnb3JpZXMpCiAgICAgewot
ICAgICAgICB2YXIgY29udGVudEhlbHBlciA9IG5ldyBXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5l
bC5Qb3B1cENvbnRlbnRIZWxwZXIodGhpcy50aXRsZSk7CisgICAgICAgIHZhciBjb250ZW50SGVs
cGVyID0gbmV3IFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLlBvcHVwQ29udGVudEhlbHBlcih0
aGlzLnRpdGxlLCB0aGlzLl9wYW5lbCk7CiAKICAgICAgICAgaWYgKHRoaXMuX2NoaWxkcmVuICYm
IHRoaXMuX2NoaWxkcmVuLmxlbmd0aCkgewogICAgICAgICAgICAgY29udGVudEhlbHBlci5fYXBw
ZW5kVGV4dFJvdyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNlbGYgVGltZSIpLCBOdW1iZXIuc2Vj
b25kc1RvU3RyaW5nKHRoaXMuX3NlbGZUaW1lICsgMC4wMDAxKSk7CkBAIC0xMTM2LDI2ICsxMTUy
LDI2IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLkZvcm1hdHRlZFJlY29yZC5wcm90b3R5
cGUgPSB7CiAgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5UaW1lbGluZUFnZW50LlJlY29y
ZFR5cGUuR0NFdmVudDoKICAgICAgICAgICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCIlcyBjb2xsZWN0ZWQiLCBOdW1iZXIuYnl0ZXNUb1N0cmluZyh0aGlzLmRhdGEudXNlZEhl
YXBTaXplRGVsdGEpKTsKICAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRpbWVsaW5lQWdl
bnQuUmVjb3JkVHlwZS5UaW1lckZpcmU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2Ny
aXB0TmFtZSA/IHRoaXMuX2xpbmtpZnlMb2NhdGlvbih0aGlzLnNjcmlwdE5hbWUsIHRoaXMuc2Ny
aXB0TGluZSwgMCkgOiB0aGlzLmRhdGEudGltZXJJZDsKKyAgICAgICAgICAgICAgICByZXR1cm4g
dGhpcy5zY3JpcHROYW1lID8gdGhpcy5fcGFuZWwuX2xpbmtpZnlMb2NhdGlvbih0aGlzLnNjcmlw
dE5hbWUsIHRoaXMuc2NyaXB0TGluZSwgMCkgOiB0aGlzLmRhdGEudGltZXJJZDsKICAgICAgICAg
ICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRpbWVsaW5lQWdlbnQuUmVjb3JkVHlwZS5GdW5jdGlvbkNh
bGw6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2NyaXB0TmFtZSA/IHRoaXMuX2xpbmtp
ZnlMb2NhdGlvbih0aGlzLnNjcmlwdE5hbWUsIHRoaXMuc2NyaXB0TGluZSwgMCkgOiBudWxsOwor
ICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNjcmlwdE5hbWUgPyB0aGlzLl9wYW5lbC5fbGlu
a2lmeUxvY2F0aW9uKHRoaXMuc2NyaXB0TmFtZSwgdGhpcy5zY3JpcHRMaW5lLCAwKSA6IG51bGw7
CiAgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5UaW1lbGluZUFnZW50LlJlY29yZFR5cGUu
RmlyZUFuaW1hdGlvbkZyYW1lRXZlbnQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2Ny
aXB0TmFtZSA/IHRoaXMuX2xpbmtpZnlMb2NhdGlvbih0aGlzLnNjcmlwdE5hbWUsIHRoaXMuc2Ny
aXB0TGluZSwgMCkgOiB0aGlzLmRhdGEuaWQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMu
c2NyaXB0TmFtZSA/IHRoaXMuX3BhbmVsLl9saW5raWZ5TG9jYXRpb24odGhpcy5zY3JpcHROYW1l
LCB0aGlzLnNjcmlwdExpbmUsIDApIDogdGhpcy5kYXRhLmlkOwogICAgICAgICAgICAgY2FzZSBX
ZWJJbnNwZWN0b3IuVGltZWxpbmVBZ2VudC5SZWNvcmRUeXBlLkV2ZW50RGlzcGF0Y2g6CiAgICAg
ICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGF0YSA/IHRoaXMuZGF0YS50eXBlIDogbnVsbDsKICAg
ICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRpbWVsaW5lQWdlbnQuUmVjb3JkVHlwZS5QYWlu
dDoKICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kYXRhLndpZHRoICsgIlx1MjAwOVx1MDBk
N1x1MjAwOSIgKyB0aGlzLmRhdGEuaGVpZ2h0OwogICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0
b3IuVGltZWxpbmVBZ2VudC5SZWNvcmRUeXBlLlRpbWVySW5zdGFsbDoKICAgICAgICAgICAgIGNh
c2UgV2ViSW5zcGVjdG9yLlRpbWVsaW5lQWdlbnQuUmVjb3JkVHlwZS5UaW1lclJlbW92ZToKLSAg
ICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zdGFja1RyYWNlID8gdGhpcy5fbGlua2lmeUNhbGxG
cmFtZSh0aGlzLnN0YWNrVHJhY2VbMF0pIDogdGhpcy5kYXRhLnRpbWVySWQ7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIHRoaXMuc3RhY2tUcmFjZSA/IHRoaXMuX3BhbmVsLl9saW5raWZ5Q2FsbEZy
YW1lKHRoaXMuc3RhY2tUcmFjZVswXSkgOiB0aGlzLmRhdGEudGltZXJJZDsKICAgICAgICAgICAg
IGNhc2UgV2ViSW5zcGVjdG9yLlRpbWVsaW5lQWdlbnQuUmVjb3JkVHlwZS5SZWdpc3RlckFuaW1h
dGlvbkZyYW1lQ2FsbGJhY2s6CiAgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5UaW1lbGlu
ZUFnZW50LlJlY29yZFR5cGUuQ2FuY2VsQW5pbWF0aW9uRnJhbWVDYWxsYmFjazoKLSAgICAgICAg
ICAgICAgICByZXR1cm4gdGhpcy5zdGFja1RyYWNlID8gdGhpcy5fbGlua2lmeUNhbGxGcmFtZSh0
aGlzLnN0YWNrVHJhY2VbMF0pIDogdGhpcy5kYXRhLmlkOworICAgICAgICAgICAgICAgIHJldHVy
biB0aGlzLnN0YWNrVHJhY2UgPyB0aGlzLl9wYW5lbC5fbGlua2lmeUNhbGxGcmFtZSh0aGlzLnN0
YWNrVHJhY2VbMF0pIDogdGhpcy5kYXRhLmlkOwogICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0
b3IuVGltZWxpbmVBZ2VudC5SZWNvcmRUeXBlLlBhcnNlSFRNTDoKICAgICAgICAgICAgIGNhc2Ug
V2ViSW5zcGVjdG9yLlRpbWVsaW5lQWdlbnQuUmVjb3JkVHlwZS5SZWNhbGN1bGF0ZVN0eWxlczoK
LSAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zdGFja1RyYWNlID8gdGhpcy5fbGlua2lmeUNh
bGxGcmFtZSh0aGlzLnN0YWNrVHJhY2VbMF0pIDogbnVsbDsKKyAgICAgICAgICAgICAgICByZXR1
cm4gdGhpcy5zdGFja1RyYWNlID8gdGhpcy5fcGFuZWwuX2xpbmtpZnlDYWxsRnJhbWUodGhpcy5z
dGFja1RyYWNlWzBdKSA6IG51bGw7CiAgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5UaW1l
bGluZUFnZW50LlJlY29yZFR5cGUuRXZhbHVhdGVTY3JpcHQ6Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIHRoaXMudXJsID8gdGhpcy5fbGlua2lmeUxvY2F0aW9uKHRoaXMudXJsLCB0aGlzLmRhdGEu
bGluZU51bWJlciwgMCkgOiBudWxsOworICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnVybCA/
IHRoaXMuX3BhbmVsLl9saW5raWZ5TG9jYXRpb24odGhpcy51cmwsIHRoaXMuZGF0YS5saW5lTnVt
YmVyLCAwKSA6IG51bGw7CiAgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5UaW1lbGluZUFn
ZW50LlJlY29yZFR5cGUuWEhSUmVhZHlTdGF0ZUNoYW5nZToKICAgICAgICAgICAgIGNhc2UgV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lQWdlbnQuUmVjb3JkVHlwZS5YSFJMb2FkOgogICAgICAgICAgICAg
Y2FzZSBXZWJJbnNwZWN0b3IuVGltZWxpbmVBZ2VudC5SZWNvcmRUeXBlLlNjaGVkdWxlUmVzb3Vy
Y2VSZXF1ZXN0OgpAQCAtMTE3MSwxOSArMTE4Nyw2IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVBh
bmVsLkZvcm1hdHRlZFJlY29yZC5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KICAgICB9LAogCi0g
ICAgX2xpbmtpZnlMb2NhdGlvbjogZnVuY3Rpb24odXJsLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1i
ZXIpCi0gICAgewotICAgICAgICAvLyBGSVhNRSg2MjcyNSk6IHN0YWNrIHRyYWNlIGxpbmUvY29s
dW1uIG51bWJlcnMgYXJlIG9uZS1iYXNlZC4KLSAgICAgICAgbGluZU51bWJlciA9IGxpbmVOdW1i
ZXIgPyBsaW5lTnVtYmVyIC0gMSA6IGxpbmVOdW1iZXI7Ci0gICAgICAgIGNvbHVtbk51bWJlciA9
IGNvbHVtbk51bWJlciA/IGNvbHVtbk51bWJlciAtIDEgOiAwOwotICAgICAgICByZXR1cm4gV2Vi
SW5zcGVjdG9yLmRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwubGlua2lmeUxvY2F0aW9uKHVybCwg
bGluZU51bWJlciwgY29sdW1uTnVtYmVyLCAidGltZWxpbmUtZGV0YWlscyIpOwotICAgIH0sCi0K
LSAgICBfbGlua2lmeUNhbGxGcmFtZTogZnVuY3Rpb24oY2FsbEZyYW1lKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIHRoaXMuX2xpbmtpZnlMb2NhdGlvbihjYWxsRnJhbWUudXJsLCBjYWxsRnJhbWUu
bGluZU51bWJlciwgY2FsbEZyYW1lLmNvbHVtbk51bWJlcik7Ci0gICAgfSwKLQogICAgIF9jYWxj
dWxhdGVBZ2dyZWdhdGVkU3RhdHM6IGZ1bmN0aW9uKGNhdGVnb3JpZXMpCiAgICAgewogICAgICAg
ICB0aGlzLl9hZ2dyZWdhdGVkU3RhdHMgPSB7fTsKQEAgLTEyMDQsOCArMTIwNyw5IEBAIFdlYklu
c3BlY3Rvci5UaW1lbGluZVBhbmVsLkZvcm1hdHRlZFJlY29yZC5wcm90b3R5cGUgPSB7CiAgICAg
fQogfQogCi1XZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5Qb3B1cENvbnRlbnRIZWxwZXIgPSBm
dW5jdGlvbih0aXRsZSkKK1dlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLlBvcHVwQ29udGVudEhl
bHBlciA9IGZ1bmN0aW9uKHRpdGxlLCBwYW5lbCkKIHsKKyAgICB0aGlzLl9wYW5lbCA9IHBhbmVs
OwogICAgIHRoaXMuX2NvbnRlbnRUYWJsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRhYmxl
Iik7OwogICAgIHZhciB0aXRsZUNlbGwgPSB0aGlzLl9jcmVhdGVDZWxsKFdlYkluc3BlY3Rvci5V
SVN0cmluZygiJXMgLSBEZXRhaWxzIiwgdGl0bGUpLCAidGltZWxpbmUtZGV0YWlscy10aXRsZSIp
OwogICAgIHRpdGxlQ2VsbC5jb2xTcGFuID0gMjsKQEAgLTEyNTEsNyArMTI1NSw3IEBAIFdlYklu
c3BlY3Rvci5UaW1lbGluZVBhbmVsLlBvcHVwQ29udGVudEhlbHBlci5wcm90b3R5cGUgPSB7CiAK
ICAgICBfYXBwZW5kTGlua1JvdzogZnVuY3Rpb24odGl0bGUsIHNjcmlwdE5hbWUsIHNjcmlwdExp
bmUpCiAgICAgewotICAgICAgICB2YXIgbGluayA9IFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVs
LkZvcm1hdHRlZFJlY29yZC5wcm90b3R5cGUuX2xpbmtpZnlMb2NhdGlvbihzY3JpcHROYW1lLCBz
Y3JpcHRMaW5lLCAwLCAidGltZWxpbmUtZGV0YWlscyIpOworICAgICAgICB2YXIgbGluayA9IHRo
aXMuX3BhbmVsLl9saW5raWZ5TG9jYXRpb24oc2NyaXB0TmFtZSwgc2NyaXB0TGluZSwgMCwgInRp
bWVsaW5lLWRldGFpbHMiKTsKICAgICAgICAgdGhpcy5fYXBwZW5kRWxlbWVudFJvdyh0aXRsZSwg
bGluayk7CiAgICAgfSwKIApAQCAtMTI2Niw3ICsxMjcwLDcgQEAgV2ViSW5zcGVjdG9yLlRpbWVs
aW5lUGFuZWwuUG9wdXBDb250ZW50SGVscGVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJv
dy5hcHBlbmRDaGlsZCh0aGlzLl9jcmVhdGVDZWxsKHN0YWNrRnJhbWUuZnVuY3Rpb25OYW1lID8g
c3RhY2tGcmFtZS5mdW5jdGlvbk5hbWUgOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIihhbm9ueW1v
dXMgZnVuY3Rpb24pIiksICJ0aW1lbGluZS1mdW5jdGlvbi1uYW1lIikpOwogICAgICAgICAgICAg
cm93LmFwcGVuZENoaWxkKHRoaXMuX2NyZWF0ZUNlbGwoIiBAICIpKTsKICAgICAgICAgICAgIHZh
ciBsaW5rQ2VsbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRkIik7Ci0gICAgICAgICAgICB2
YXIgdXJsRWxlbWVudCA9IFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLkZvcm1hdHRlZFJlY29y
ZC5wcm90b3R5cGUuX2xpbmtpZnlDYWxsRnJhbWUoc3RhY2tGcmFtZSk7CisgICAgICAgICAgICB2
YXIgdXJsRWxlbWVudCA9IHRoaXMuX3BhbmVsLl9saW5raWZ5Q2FsbEZyYW1lKHN0YWNrRnJhbWUp
OwogICAgICAgICAgICAgbGlua0NlbGwuYXBwZW5kQ2hpbGQodXJsRWxlbWVudCk7CiAgICAgICAg
ICAgICByb3cuYXBwZW5kQ2hpbGQobGlua0NlbGwpOwogICAgICAgICAgICAgZnJhbWVzVGFibGUu
YXBwZW5kQ2hpbGQocm93KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvaW5zcGVjdG9yLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9pbnNwZWN0b3IuanMKaW5kZXggMWNlOWU5OTE3NjhmMWJkNTU1NWRlZWJjZjRkYTdmZDM1ZDcx
NTZhYi4uN2Y2NDlhN2M0MmEzYjQyMjNlN2QxZWIxYjI2YTU5N2FjMjg2YThmOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKQEAgLTUwOSw2
ICs1MDksOSBAQCBXZWJJbnNwZWN0b3IuZG9Mb2FkZWREb25lID0gZnVuY3Rpb24oKQogICAgIHRo
aXMuY29uc29sZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Db25zb2xlTW9kZWwuRXZl
bnRzLk1lc3NhZ2VBZGRlZCwgdGhpcy5fdXBkYXRlRXJyb3JBbmRXYXJuaW5nQ291bnRzLCB0aGlz
KTsKICAgICB0aGlzLmNvbnNvbGUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQ29uc29s
ZU1vZGVsLkV2ZW50cy5SZXBlYXRDb3VudFVwZGF0ZWQsIHRoaXMuX3VwZGF0ZUVycm9yQW5kV2Fy
bmluZ0NvdW50cywgdGhpcyk7CiAKKyAgICB0aGlzLmRlYnVnZ2VyTW9kZWwgPSBuZXcgV2ViSW5z
cGVjdG9yLkRlYnVnZ2VyTW9kZWwoKTsKKyAgICB0aGlzLmRlYnVnZ2VyUHJlc2VudGF0aW9uTW9k
ZWwgPSBuZXcgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwoKTsKKwogICAg
IHRoaXMuZHJhd2VyID0gbmV3IFdlYkluc3BlY3Rvci5EcmF3ZXIoKTsKICAgICB0aGlzLmNvbnNv
bGVWaWV3ID0gbmV3IFdlYkluc3BlY3Rvci5Db25zb2xlVmlldyhXZWJJbnNwZWN0b3IuV29ya2Vy
TWFuYWdlci5pc1dvcmtlckZyb250ZW5kKCkpOwogCkBAIC01MjEsOCArNTI0LDYgQEAgV2ViSW5z
cGVjdG9yLmRvTG9hZGVkRG9uZSA9IGZ1bmN0aW9uKCkKICAgICBJbnNwZWN0b3JCYWNrZW5kLnJl
Z2lzdGVySW5zcGVjdG9yRGlzcGF0Y2hlcih0aGlzKTsKIAogICAgIHRoaXMuY3NzTW9kZWwgPSBu
ZXcgV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwoKTsKLSAgICB0aGlzLmRlYnVnZ2VyTW9kZWwg
PSBuZXcgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwoKTsKLSAgICB0aGlzLmRlYnVnZ2VyUHJl
c2VudGF0aW9uTW9kZWwgPSBuZXcgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9k
ZWwoKTsKIAogICAgIHRoaXMuc2VhcmNoQ29udHJvbGxlciA9IG5ldyBXZWJJbnNwZWN0b3IuU2Vh
cmNoQ29udHJvbGxlcigpOwogCkBAIC0xMDA4LDcgKzEwMDksNyBAQCBXZWJJbnNwZWN0b3IubG9n
ID0gZnVuY3Rpb24obWVzc2FnZSwgbWVzc2FnZUxldmVsKQogICAgICAgICBtZXNzYWdlID0gV2Vi
SW5zcGVjdG9yLlJlbW90ZU9iamVjdC5mcm9tUHJpbWl0aXZlVmFsdWUobWVzc2FnZSk7CiAKICAg
ICAgICAgLy8gcG9zdCB0aGUgbWVzc2FnZQotICAgICAgICB2YXIgbXNnID0gV2ViSW5zcGVjdG9y
LkNvbnNvbGVNZXNzYWdlLmNyZWF0ZSgKKyAgICAgICAgdmFyIG1zZyA9IFdlYkluc3BlY3Rvci5j
b25zb2xlVmlldy5jcmVhdGVNZXNzYWdlKAogICAgICAgICAgICAgV2ViSW5zcGVjdG9yLkNvbnNv
bGVNZXNzYWdlLk1lc3NhZ2VTb3VyY2UuT3RoZXIsCiAgICAgICAgICAgICBXZWJJbnNwZWN0b3Iu
Q29uc29sZU1lc3NhZ2UuTWVzc2FnZVR5cGUuTG9nLAogICAgICAgICAgICAgbWVzc2FnZUxldmVs
IHx8IFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlTGV2ZWwuRGVidWcsCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109634</attachid>
            <date>2011-10-04 10:03:33 -0700</date>
            <delta_ts>2011-10-05 01:45:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-69146-20111004210330.patch</filename>
            <type>text/plain</type>
            <size>38643</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTY2MDIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBjN2E3Mzc2MGU4NTZkYzA5NTVjNzMy
MjRkZjAxYjI1NWUyYTQzMDhhLi5jOTlkZmE3ZDcwMGMyOTZmOTQ4YjVkYmE3MzllMGYyMTdmZWU1
MTdkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMTAtMDQgIElseWEgVGlraG9ub3Zza3kg
IDxsb2lzbG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGRlYnVnZ2Vy
UHJlc2VudGF0aW9Nb2RlbC5saW5raWZ5TG9jYXRpb24gbGVha3MgdXBkYXRlQW5jaG9yIGNsb3N1
cmUgaW5zdGFuY2VzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NjkxNDYKKworICAgICAgICBJbiBtYW55IHBsYWNlcyB3ZSB1c2UgbGlua2lmeUxvY2F0
aW9uIGZ1bmN0aW9uIHRvIHByb2R1Y2UgYSBsaW5rIG5vZGUgd2hpY2ggdXBkYXRlcyBhdXRvbWF0
aWNhbGx5IHdoZW4gdGhlIHNvdXJjZSBmaWxlIGlzIGNoYW5nZWQgb24gdGhlIGZseS4KKyAgICAg
ICAgU3VjaCBjaGFuZ2VzIGhhcHBlbiB3aGVuIHdlIHVzZSBwcmV0dHkgcHJpbnQgb3IgYW5vdGhl
ciBvcGVyYXRpb24gdGhhdCBjaGFuZ2VzIHRoZSBzb3VyY2UgY29kZSBzb21laG93LgorICAgICAg
ICBsaW5raWZ5TG9jYXRpb24gYXNzb2NpYXRlcyBhIG5ldyBpbnN0YW5jZSBvZiB1cGRhdGVBbmNo
b3IgY2xvc3VyZSB3aXRoIHRoZSBlYWNoIGxpbmsgbm9kZSBhbmQgYWRkIHRoZSBjbG9zdXJlIHRv
IHRoZSBTb3VyY2VNYXBwaW5nVXBkYXRlZCBldmVudCdzIGxpc3QuCisgICAgICAgIEFzIHRoZSBy
ZXN1bHQgdGhlIG5vZGU8LT5jbG9zdXJlIHBhaXJzIHdvdWxkbid0IGJlIGNvbGxlY3RlZCB1bnRp
bCByZXNldCB0aGUgVUkgYW5kIERlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdn
ZXIvbGlua2lmaWVyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yL2Rl
YnVnZ2VyL2xpbmtpZmllci5odG1sOiBBZGRlZC4KKwogMjAxMS0xMC0wNCAgQWRhbSBCYXJ0aCAg
PGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFVwZGF0ZSBmb250IHNoYXBpbmcgcmVzdWx0
IGFmdGVyIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0Lzk2NTgyLgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2xpbmtpZmllci1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvbGlua2lmaWVyLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi45Mjk2NDEzZmVjN2I5OWYzNjVhYTcyZDI3YzJhMjE3ODBlN2IxYjhmCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2xpbmtpZmllci1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwyOCBAQAorVGVzdHMgdGhhdCBMaW5raWZpZXIgd29ya3Mg
Y29ycmVjdGx5LgorCitEZWJ1Z2dlciB3YXMgZW5hYmxlZC4KK2xvZzogLS0tIGxpbmtpZnkgZmFr
ZVVSTC0xIGZpcnN0IHRpbWUgLS0tCitsb2c6IER1bW15UHJlc2VudGF0aW9uTW9kZWwucmF3U291
cmNlQ29kZUZvclNjcmlwdFdpdGhVUkwgd2FzIGNhbGxlZCB3aXRoIGFyZ3VtZW50cyA9IFsnZmFr
ZVVybC0xJ10KK2xvZzogRHVtbXlSYXdTb3VyY2VDb2RlLmFkZEV2ZW50TGlzdGVuZXIgd2FzIGNh
bGxlZCB3aXRoIGFyZ3VtZW50cyA9IFsnc291cmNlLW1hcHBpbmctdXBkYXRlZCcsIGZ1bmN0aW9u
LCBvYmplY3RdCitsb2c6IAorbG9nOiAtLS0gbGlua2lmeSBmYWtlVVJMLTIgZmlyc3QgdGltZSAt
LS0KK2xvZzogRHVtbXlQcmVzZW50YXRpb25Nb2RlbC5yYXdTb3VyY2VDb2RlRm9yU2NyaXB0V2l0
aFVSTCB3YXMgY2FsbGVkIHdpdGggYXJndW1lbnRzID0gWydmYWtlVXJsLTInXQorbG9nOiBEdW1t
eVJhd1NvdXJjZUNvZGUuYWRkRXZlbnRMaXN0ZW5lciB3YXMgY2FsbGVkIHdpdGggYXJndW1lbnRz
ID0gWydzb3VyY2UtbWFwcGluZy11cGRhdGVkJywgZnVuY3Rpb24sIG9iamVjdF0KK2xvZzogCits
b2c6IC0tLSBsaW5raWZ5IGZha2VVUkwtMSBzZWNvbmQgdGltZSAtLS0KK2xvZzogRHVtbXlQcmVz
ZW50YXRpb25Nb2RlbC5yYXdTb3VyY2VDb2RlRm9yU2NyaXB0V2l0aFVSTCB3YXMgY2FsbGVkIHdp
dGggYXJndW1lbnRzID0gWydmYWtlVXJsLTEnXQorbG9nOiAKK2xvZzogLS0tIGxpbmtpZnkgZmFr
ZVVSTC0yIHNlY29uZCB0aW1lIC0tLQorbG9nOiBEdW1teVByZXNlbnRhdGlvbk1vZGVsLnJhd1Nv
dXJjZUNvZGVGb3JTY3JpcHRXaXRoVVJMIHdhcyBjYWxsZWQgd2l0aCBhcmd1bWVudHMgPSBbJ2Zh
a2VVcmwtMiddCitsb2c6IAorbG9nOiAtLS0gcmVzZXQgLS0tCitsb2c6IER1bW15UHJlc2VudGF0
aW9uTW9kZWwucmF3U291cmNlQ29kZUZvclNjcmlwdFdpdGhVUkwgd2FzIGNhbGxlZCB3aXRoIGFy
Z3VtZW50cyA9IFsnZmFrZVVybC0xJ10KK2xvZzogRHVtbXlSYXdTb3VyY2VDb2RlLnJlbW92ZUV2
ZW50TGlzdGVuZXIgd2FzIGNhbGxlZCB3aXRoIGFyZ3VtZW50cyA9IFsnc291cmNlLW1hcHBpbmct
dXBkYXRlZCcsIGZ1bmN0aW9uLCBvYmplY3RdCitsb2c6IER1bW15UHJlc2VudGF0aW9uTW9kZWwu
cmF3U291cmNlQ29kZUZvclNjcmlwdFdpdGhVUkwgd2FzIGNhbGxlZCB3aXRoIGFyZ3VtZW50cyA9
IFsnZmFrZVVybC0yJ10KK2xvZzogRHVtbXlSYXdTb3VyY2VDb2RlLnJlbW92ZUV2ZW50TGlzdGVu
ZXIgd2FzIGNhbGxlZCB3aXRoIGFyZ3VtZW50cyA9IFsnc291cmNlLW1hcHBpbmctdXBkYXRlZCcs
IGZ1bmN0aW9uLCBvYmplY3RdCitsb2c6IAorbG9nOiAtLS0gbG9jYXRpb24gdXBkYXRlIC0tLQor
bG9nOiBvcmlnaW5hbCBsb2NhdGlvbjogbGlua2lmaWVyLmh0bWw6NjUKK2xvZzogcHJldHR5IHBy
aW50ZWQgbG9jYXRpb246IGxpbmtpZmllci5odG1sOjY3Citsb2c6IHJldmVydGVkIGxvY2F0aW9u
OiBsaW5raWZpZXIuaHRtbDo2NQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
ZGVidWdnZXIvbGlua2lmaWVyLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIv
bGlua2lmaWVyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTI0OWFjMmEwNjk1NGYxNWMzYmFiYzg3NzNjOTNj
ZWVmMDUzNWYzOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1
Z2dlci9saW5raWZpZXIuaHRtbApAQCAtMCwwICsxLDEwNCBAQAorPGh0bWw+Cis8aGVhZD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvZGVidWdn
ZXItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAg
ICBJbnNwZWN0b3JUZXN0LnN0YXJ0RGVidWdnZXJUZXN0KGRlYnVnZ2VyVGVzdCk7CisKKyAgICBm
dW5jdGlvbiBkZWJ1Z2dlclRlc3QoKQorICAgIHsKKyAgICAgICAgaWYgKCFXZWJJbnNwZWN0b3Iu
ZGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5fcmF3U291cmNlQ29kZVtXZWJJbnNwZWN0b3IubWFp
blJlc291cmNlLl9kb2N1bWVudFVSTF0pIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRk
U25pZmZlcihXZWJJbnNwZWN0b3IuZGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbCwgIl9hZGRTY3Jp
cHQiLCBkZWJ1Z2dlclRlc3QpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAg
ICAgICAgdmFyIGZha2VVUkwxID0gImZha2VVcmwtMSI7CisgICAgICAgIHZhciBmYWtlVVJMMiA9
ICJmYWtlVXJsLTIiOworCisgICAgICAgIER1bW15UHJlc2VudGF0aW9uTW9kZWwgPSBmdW5jdGlv
bigpCisgICAgICAgIHsKKyAgICAgICAgICAgIER1bW15UmF3U291cmNlQ29kZSA9IGZ1bmN0aW9u
KCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIg
PSBmdW5jdGlvbihldmVudE5hbWUsIGNhbGxiYWNrLCBvYmplY3QpCisgICAgICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygiRHVtbXlSYXdTb3VyY2VDb2RlLmFk
ZEV2ZW50TGlzdGVuZXIgd2FzIGNhbGxlZCB3aXRoIGFyZ3VtZW50cyA9IFsnIiArIGV2ZW50TmFt
ZSArICInLCAiICsgKHR5cGVvZiBjYWxsYmFjaykgKyAiLCAiICsgKHR5cGVvZiBvYmplY3QpICsg
Il0iKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZUV2
ZW50TGlzdGVuZXIgPSBmdW5jdGlvbihldmVudE5hbWUsIGNhbGxiYWNrLCBvYmplY3QpCisgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygiRHVtbXlSYXdT
b3VyY2VDb2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIgd2FzIGNhbGxlZCB3aXRoIGFyZ3VtZW50cyA9
IFsnIiArIGV2ZW50TmFtZSArICInLCAiICsgKHR5cGVvZiBjYWxsYmFjaykgKyAiLCAiICsgKHR5
cGVvZiBvYmplY3QpICsgIl0iKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKworICAgICAgICBEdW1teVByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZSA9IHsK
KyAgICAgICAgICAgIF9yYXdTb3VyY2VDb2RlRm9yU2NyaXB0V2l0aFVSTDogZnVuY3Rpb24oc291
cmNlVVJMKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCJEdW1t
eVByZXNlbnRhdGlvbk1vZGVsLnJhd1NvdXJjZUNvZGVGb3JTY3JpcHRXaXRoVVJMIHdhcyBjYWxs
ZWQgd2l0aCBhcmd1bWVudHMgPSBbJyIgKyBzb3VyY2VVUkwgKyAiJ10iKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gbmV3IER1bW15UmF3U291cmNlQ29kZSgpOworICAgICAgICAgICAgfSwKKyAg
ICAgICAgfQorCisgICAgICAgIHZhciBkeW1teVByZXNlbnRhdGlvbk1vZGVsID0gbmV3IER1bW15
UHJlc2VudGF0aW9uTW9kZWwoKTsKKworICAgICAgICB2YXIgbGlua2lmaWVyID0gbmV3IFdlYklu
c3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLkxpbmtpZmllcihkeW1teVByZXNlbnRh
dGlvbk1vZGVsKTsKKworICAgICAgICBjb25zb2xlLmxvZygiLS0tIGxpbmtpZnkgZmFrZVVSTC0x
IGZpcnN0IHRpbWUgLS0tIik7CisgICAgICAgIGxpbmtpZmllci5saW5raWZ5TG9jYXRpb24oZmFr
ZVVSTDEsIDQyLCAyNiwgImZha2UtY2xhc3MtbmFtZSIpOworICAgICAgICBjb25zb2xlLmxvZygi
Iik7CisKKyAgICAgICAgY29uc29sZS5sb2coIi0tLSBsaW5raWZ5IGZha2VVUkwtMiBmaXJzdCB0
aW1lIC0tLSIpOworICAgICAgICBsaW5raWZpZXIubGlua2lmeUxvY2F0aW9uKGZha2VVUkwyLCA0
MiwgMjYsICJmYWtlLWNsYXNzLW5hbWUiKTsKKyAgICAgICAgY29uc29sZS5sb2coIiIpOworCisg
ICAgICAgIGNvbnNvbGUubG9nKCItLS0gbGlua2lmeSBmYWtlVVJMLTEgc2Vjb25kIHRpbWUgLS0t
Iik7CisgICAgICAgIGxpbmtpZmllci5saW5raWZ5TG9jYXRpb24oZmFrZVVSTDEsIDk3LCAyMywg
ImZha2UtY2xhc3MtbmFtZSIpOworICAgICAgICBjb25zb2xlLmxvZygiIik7CisKKyAgICAgICAg
Y29uc29sZS5sb2coIi0tLSBsaW5raWZ5IGZha2VVUkwtMiBzZWNvbmQgdGltZSAtLS0iKTsKKyAg
ICAgICAgbGlua2lmaWVyLmxpbmtpZnlMb2NhdGlvbihmYWtlVVJMMiwgNCwgMiwgImZha2UtY2xh
c3MtbmFtZSIpOworICAgICAgICBjb25zb2xlLmxvZygiIik7CisKKyAgICAgICAgY29uc29sZS5s
b2coIi0tLSByZXNldCAtLS0iKTsKKyAgICAgICAgbGlua2lmaWVyLnJlc2V0KCk7CisgICAgICAg
IGNvbnNvbGUubG9nKCIiKTsKKworICAgICAgICBjb25zb2xlLmxvZygiLS0tIGxvY2F0aW9uIHVw
ZGF0ZSAtLS0iKTsKKworICAgICAgICBmdW5jdGlvbiBkdW1teUZ1bmN0aW9uVG9CZVByZXR0eVBy
aW50ZWQoKSB7IGNvbnNvbGUubG9nKCIiKTsgY29uc29sZS5lcnJvcigiIik7IH0KKworICAgICAg
ICBsaW5raWZpZXIgPSBXZWJJbnNwZWN0b3IuZGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5jcmVh
dGVMaW5raWZpZXIoKTsKKyAgICAgICAgdmFyIGxpbmsgPSBsaW5raWZpZXIubGlua2lmeUxvY2F0
aW9uKFdlYkluc3BlY3Rvci5tYWluUmVzb3VyY2UuX2RvY3VtZW50VVJMLCA2NCwgMCwgImR1bW15
LWNsYXNzIik7CisgICAgICAgIGNvbnNvbGUubG9nKCJvcmlnaW5hbCBsb2NhdGlvbjogIiArIGxp
bmsudGV4dENvbnRlbnQpOworCisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkU25pZmZlcihsaW5r
aWZpZXIsICJfdXBkYXRlQW5jaG9yIiwgbGlua1VwZGF0ZWQpOworICAgICAgICBXZWJJbnNwZWN0
b3IuZGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5zZXRGb3JtYXRTb3VyY2UodHJ1ZSk7CisKKyAg
ICAgICAgZnVuY3Rpb24gbGlua1VwZGF0ZWQoKQorICAgICAgICB7CisgICAgICAgICAgICBjb25z
b2xlLmxvZygicHJldHR5IHByaW50ZWQgbG9jYXRpb246ICIgKyBsaW5rLnRleHRDb250ZW50KTsK
KyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkU25pZmZlcihsaW5raWZpZXIsICJfdXBkYXRl
QW5jaG9yIiwgbGlua1JldmVydGVkKTsKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dl
clByZXNlbnRhdGlvbk1vZGVsLnNldEZvcm1hdFNvdXJjZShmYWxzZSk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBsaW5rUmV2ZXJ0ZWQoKQorICAgICAgICB7CisgICAgICAgICAgICBj
b25zb2xlLmxvZygicmV2ZXJ0ZWQgbG9jYXRpb246ICIgKyBsaW5rLnRleHRDb250ZW50KTsKKyAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CisgICAgICAgIH0KKyAgICB9
Cit9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8
cD4KK1Rlc3RzIHRoYXQgTGlua2lmaWVyIHdvcmtzIGNvcnJlY3RseS4KKzwvcD4KKworPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDcyZjgxNzZiMzllYTk4MDk3ZTg4MWZkY2I3MGM0ZDgy
Zjc0ZGVjMjguLjMzMGQyNDcyZGVmMjRjMGMwYWQwZTgzMjE0ODMxMmE0MTAxOGU5OTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw1OCBAQAorMjAxMS0xMC0wNCAgSWx5YSBUaWtob25vdnNreSAgPGxv
aXNsb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogZGVidWdnZXJQcmVz
ZW50YXRpb01vZGVsLmxpbmtpZnlMb2NhdGlvbiBsZWFrcyB1cGRhdGVBbmNob3IgY2xvc3VyZSBp
bnN0YW5jZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02OTE0NgorCisgICAgICAgIEluIG1hbnkgcGxhY2VzIHdlIHVzZSBsaW5raWZ5TG9jYXRpb24g
ZnVuY3Rpb24gdG8gcHJvZHVjZSBhIGxpbmsgbm9kZSB3aGljaCB1cGRhdGVzIGF1dG9tYXRpY2Fs
bHkgd2hlbiB0aGUgc291cmNlIGZpbGUgaXMgY2hhbmdlZCBvbiB0aGUgZmx5LgorICAgICAgICBT
dWNoIGNoYW5nZXMgaGFwcGVuIHdoZW4gd2UgdXNlIHByZXR0eSBwcmludCBvciBhbm90aGVyIG9w
ZXJhdGlvbiB0aGF0IGNoYW5nZXMgdGhlIHNvdXJjZSBjb2RlIHNvbWVob3cuCisgICAgICAgIGxp
bmtpZnlMb2NhdGlvbiBhc3NvY2lhdGVzIGEgbmV3IGluc3RhbmNlIG9mIHVwZGF0ZUFuY2hvciBj
bG9zdXJlIHdpdGggdGhlIGVhY2ggbGluayBub2RlIGFuZCBhZGQgdGhlIGNsb3N1cmUgdG8gdGhl
IFNvdXJjZU1hcHBpbmdVcGRhdGVkIGV2ZW50J3MgbGlzdC4KKyAgICAgICAgQXMgdGhlIHJlc3Vs
dCB0aGUgbm9kZTwtPmNsb3N1cmUgcGFpcnMgd291bGRuJ3QgYmUgY29sbGVjdGVkIHVudGlsIHJl
c2V0IHRoZSBVSSBhbmQgRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBpbnNwZWN0b3IvZGVidWdn
ZXIvbGlua2lmaWVyLmh0bWwKKworICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvQ29uc29s
ZU1lc3NhZ2UuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2VJbXBsKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZUltcGwucHJvdG90eXBlLl9saW5r
aWZ5TG9jYXRpb24pOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvQ29uc29sZVZpZXcu
anM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcucHJvdG90eXBlLl9jb25zb2xl
Q2xlYXJlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29uc29sZUNvbW1hbmRSZXN1bHQpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLmNyZWF0ZSk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuY3JlYXRlVGV4dE1lc3NhZ2UpOgorICAgICAgICAq
IGluc3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5qczoKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZS5jcmVh
dGVMaW5raWZpZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9u
TW9kZWwuTGlua2lmaWVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRh
dGlvbk1vZGVsLkxpbmtpZmllci5wcm90b3R5cGUubGlua2lmeUxvY2F0aW9uKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLkxpbmtpZmllci5wcm90b3R5
cGUucmVzZXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9k
ZWwuTGlua2lmaWVyLnByb3RvdHlwZS5fdXBkYXRlU291cmNlQW5jaG9ycyk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5MaW5raWZpZXIucHJvdG90eXBl
Ll91cGRhdGVBbmNob3IpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRXZlbnRMaXN0
ZW5lcnNTaWRlYmFyUGFuZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FdmVudExpc3RlbmVy
c1NpZGViYXJQYW5lLnByb3RvdHlwZS51cGRhdGUuY2FsbGJhY2spOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkV2ZW50TGlzdGVuZXJzU2lkZWJhclBhbmUucHJvdG90eXBlLnVwZGF0ZSk6CisgICAg
ICAgICgpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya1BhbmVsLmpzOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtMb2dWaWV3KToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5OZXR3b3JrTG9nVmlldy5wcm90b3R5cGUuX3Jlc2V0KToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5OZXR3b3JrRGF0YUdyaWROb2RlLnByb3RvdHlwZS5fcmVmcmVzaEluaXRpYXRvckNlbGwp
OgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUHJvZmlsZURhdGFHcmlkVHJlZS5qczoK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9maWxlRGF0YUdyaWROb2RlLnByb3RvdHlwZS5jcmVh
dGVDZWxsKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVWaWV3LmpzOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkNQVVByb2ZpbGVWaWV3KToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5DUFVQcm9maWxlVmlldy5wcm90b3R5cGUuX3Jlc2V0Q2xpY2tlZCk6CisgICAgICAgICog
aW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZVBhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlRpbWVsaW5lUGFuZWwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwu
cHJvdG90eXBlLl9saW5raWZ5TG9jYXRpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVs
aW5lUGFuZWwucHJvdG90eXBlLl9saW5raWZ5Q2FsbEZyYW1lKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5UaW1lbGluZVBhbmVsLnByb3RvdHlwZS5fY2xlYXJQYW5lbCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuVGltZWxpbmVQYW5lbC5Gb3JtYXR0ZWRSZWNvcmQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlRpbWVsaW5lUGFuZWwuRm9ybWF0dGVkUmVjb3JkLnByb3RvdHlwZS5fZ2VuZXJhdGVQ
b3B1cENvbnRlbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwuRm9ybWF0
dGVkUmVjb3JkLnByb3RvdHlwZS5fZ2V0UmVjb3JkRGV0YWlscyk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuVGltZWxpbmVQYW5lbC5Qb3B1cENvbnRlbnRIZWxwZXIpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlRpbWVsaW5lUGFuZWwuUG9wdXBDb250ZW50SGVscGVyLnByb3RvdHlwZS5fYXBwZW5k
TGlua1Jvdyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5Qb3B1cENvbnRl
bnRIZWxwZXIucHJvdG90eXBlLl9hcHBlbmRTdGFja1RyYWNlKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qczoKKwogMjAxMS0xMC0wNCAgTWlraGFpbCBOYWdhbm92
ICA8bW5hZ2Fub3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IEZhY3Rv
ciBvdXQgb2JqZWN0IHByb3BlcnRpZXMgcG9wdXAuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVNZXNzYWdlLmpzIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xlTWVzc2FnZS5qcwppbmRleCAzZTcwODNmNTI4ZWI1
MWY2MWMzMGQ4MTE2YTNkZmY2NGNiZjE2MmNlLi5kN2E0MGMwZDcyNWJkNDUxMDBmMTNmNjUyN2Yw
NjcyODQ0NzQwNWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL0NvbnNvbGVNZXNzYWdlLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvQ29uc29sZU1lc3NhZ2UuanMKQEAgLTI4LDI4ICsyOCwxOSBAQAogICogVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
ICAqLwogCi1XZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuY3JlYXRlID0gZnVuY3Rpb24oc291
cmNlLCB0eXBlLCBsZXZlbCwgbGluZSwgdXJsLCByZXBlYXRDb3VudCwgbWVzc2FnZSwgcGFyYW1l
dGVycywgc3RhY2tUcmFjZSwgcmVxdWVzdCkKLXsKLSAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rv
ci5Db25zb2xlTWVzc2FnZUltcGwoc291cmNlLCB0eXBlLCBsZXZlbCwgbGluZSwgdXJsLCByZXBl
YXRDb3VudCwgbWVzc2FnZSwgcGFyYW1ldGVycywgc3RhY2tUcmFjZSwgcmVxdWVzdCk7Ci19Ci0K
LVdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5jcmVhdGVUZXh0TWVzc2FnZSA9IGZ1bmN0aW9u
KHRleHQsIGxldmVsKQotewotICAgIGxldmVsID0gbGV2ZWwgfHwgV2ViSW5zcGVjdG9yLkNvbnNv
bGVNZXNzYWdlLk1lc3NhZ2VMZXZlbC5Mb2c7Ci0gICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3Iu
Q29uc29sZU1lc3NhZ2VJbXBsKFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlU291
cmNlLkNvbnNvbGVBUEksIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlVHlwZS5M
b2csIGxldmVsLCAwLCBudWxsLCAxLCBudWxsLCBbdGV4dF0sIG51bGwpOwotfQotCiAvKioKICAq
IEBjb25zdHJ1Y3RvcgogICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZX0K
KyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuTGlua2lm
aWVyfSBsaW5raWZpZXIKICAqIEBwYXJhbSB7QXJyYXkuPFJ1bnRpbWVBZ2VudC5SZW1vdGVPYmpl
Y3Q+PX0gcGFyYW1ldGVycwogICogQHBhcmFtIHtDb25zb2xlQWdlbnQuU3RhY2tUcmFjZT19IHN0
YWNrVHJhY2UKICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlJlc291cmNlPX0gcmVxdWVzdAogICov
Ci1XZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2VJbXBsID0gZnVuY3Rpb24oc291cmNlLCB0eXBl
LCBsZXZlbCwgbGluZSwgdXJsLCByZXBlYXRDb3VudCwgbWVzc2FnZSwgcGFyYW1ldGVycywgc3Rh
Y2tUcmFjZSwgcmVxdWVzdCkKK1dlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZUltcGwgPSBmdW5j
dGlvbihzb3VyY2UsIHR5cGUsIGxldmVsLCBsaW5lLCB1cmwsIHJlcGVhdENvdW50LCBtZXNzYWdl
LCBsaW5raWZpZXIsIHBhcmFtZXRlcnMsIHN0YWNrVHJhY2UsIHJlcXVlc3QpCiB7CiAgICAgV2Vi
SW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLmNhbGwoKTsKIAorICAgIHRoaXMuX2xpbmtpZmllciA9
IGxpbmtpZmllcjsKICAgICB0aGlzLnNvdXJjZSA9IHNvdXJjZTsKICAgICB0aGlzLnR5cGUgPSB0
eXBlOwogICAgIHRoaXMubGV2ZWwgPSBsZXZlbDsKQEAgLTE5NCw3ICsxODUsNyBAQCBXZWJJbnNw
ZWN0b3IuQ29uc29sZU1lc3NhZ2VJbXBsLnByb3RvdHlwZSA9IHsKICAgICAgICAgLy8gRklYTUUo
NjI3MjUpOiBzdGFjayB0cmFjZSBsaW5lL2NvbHVtbiBudW1iZXJzIGFyZSBvbmUtYmFzZWQuCiAg
ICAgICAgIGxpbmVOdW1iZXIgPSBsaW5lTnVtYmVyID8gbGluZU51bWJlciAtIDEgOiB1bmRlZmlu
ZWQ7CiAgICAgICAgIGNvbHVtbk51bWJlciA9IGNvbHVtbk51bWJlciA/IGNvbHVtbk51bWJlciAt
IDEgOiAwOwotICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLmRlYnVnZ2VyUHJlc2VudGF0aW9u
TW9kZWwubGlua2lmeUxvY2F0aW9uKHVybCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCAiY29u
c29sZS1tZXNzYWdlLXVybCIpOworICAgICAgICByZXR1cm4gdGhpcy5fbGlua2lmaWVyLmxpbmtp
ZnlMb2NhdGlvbih1cmwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgImNvbnNvbGUtbWVzc2Fn
ZS11cmwiKTsKICAgICB9LAogCiAgICAgX2xpbmtpZnlDYWxsRnJhbWU6IGZ1bmN0aW9uKGNhbGxG
cmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29u
c29sZVZpZXcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVW
aWV3LmpzCmluZGV4IGU0MTI0MzJjZDlmZGYzOWJkY2U3NDM5MGYyMTVhNmNmZTk3ZmY2ZDQuLmQ4
MDU1MDU3NDdjNDAzYTMwOGU1YWI4ZjI2YzA2YzFlMWNlM2FjNzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29uc29sZVZpZXcuanMKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xlVmlldy5qcwpAQCAtMTEwLDYgKzEx
MCw4IEBAIFdlYkluc3BlY3Rvci5Db25zb2xlVmlldyA9IGZ1bmN0aW9uKGhpZGVDb250ZXh0U2Vs
ZWN0b3IpCiAKICAgICBXZWJJbnNwZWN0b3IuY29uc29sZS5hZGRFdmVudExpc3RlbmVyKFdlYklu
c3BlY3Rvci5Db25zb2xlTW9kZWwuRXZlbnRzLk1lc3NhZ2VBZGRlZCwgdGhpcy5fY29uc29sZU1l
c3NhZ2VBZGRlZCwgdGhpcyk7CiAgICAgV2ViSW5zcGVjdG9yLmNvbnNvbGUuYWRkRXZlbnRMaXN0
ZW5lcihXZWJJbnNwZWN0b3IuQ29uc29sZU1vZGVsLkV2ZW50cy5Db25zb2xlQ2xlYXJlZCwgdGhp
cy5fY29uc29sZUNsZWFyZWQsIHRoaXMpOworCisgICAgdGhpcy5fbGlua2lmaWVyID0gV2ViSW5z
cGVjdG9yLmRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuY3JlYXRlTGlua2lmaWVyKCk7CiB9CiAK
IFdlYkluc3BlY3Rvci5Db25zb2xlVmlldy5FdmVudHMgPSB7CkBAIC0zMjYsNiArMzI4LDggQEAg
V2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy50b3BH
cm91cC5tZXNzYWdlc0VsZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKIAogICAgICAgICB0aGlzLmRp
c3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcuRXZlbnRzLkNv
bnNvbGVDbGVhcmVkKTsKKworICAgICAgICB0aGlzLl9saW5raWZpZXIucmVzZXQoKTsKICAgICB9
LAogCiAgICAgY29tcGxldGlvbnM6IGZ1bmN0aW9uKHdvcmRSYW5nZSwgYmVzdE1hdGNoT25seSwg
Y29tcGxldGlvbnNSZWFkeUNhbGxiYWNrKQpAQCAtNjE3LDcgKzYyMSw3IEBAIFdlYkluc3BlY3Rv
ci5Db25zb2xlVmlldy5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5z
ZXR0aW5ncy5jb25zb2xlSGlzdG9yeS5zZXQodGhpcy5wcm9tcHQuaGlzdG9yeS5zbGljZSgtMzAp
KTsKIAotICAgICAgICAgICAgdGhpcy5fYXBwZW5kQ29uc29sZU1lc3NhZ2UobmV3IFdlYkluc3Bl
Y3Rvci5Db25zb2xlQ29tbWFuZFJlc3VsdChyZXN1bHQsIHdhc1Rocm93biwgY29tbWFuZE1lc3Nh
Z2UpKTsKKyAgICAgICAgICAgIHRoaXMuX2FwcGVuZENvbnNvbGVNZXNzYWdlKG5ldyBXZWJJbnNw
ZWN0b3IuQ29uc29sZUNvbW1hbmRSZXN1bHQocmVzdWx0LCB3YXNUaHJvd24sIGNvbW1hbmRNZXNz
YWdlLCB0aGlzLl9saW5raWZpZXIpKTsKICAgICAgICAgfQogICAgICAgICB0aGlzLmV2YWxJbklu
c3BlY3RlZFdpbmRvdyhzdHIsICJjb25zb2xlIiwgdHJ1ZSwgdW5kZWZpbmVkLCB1bmRlZmluZWQs
IHByaW50UmVzdWx0LmJpbmQodGhpcykpOwogCkBAIC02OTQsMTEgKzY5OCwxMSBAQCBXZWJJbnNw
ZWN0b3IuQ29uc29sZUNvbW1hbmQucHJvdG90eXBlID0gewogICogQGV4dGVuZHMge1dlYkluc3Bl
Y3Rvci5Db25zb2xlTWVzc2FnZUltcGx9CiAgKiBAY29uc3RydWN0b3IKICAqLwotV2ViSW5zcGVj
dG9yLkNvbnNvbGVDb21tYW5kUmVzdWx0ID0gZnVuY3Rpb24ocmVzdWx0LCB3YXNUaHJvd24sIG9y
aWdpbmF0aW5nQ29tbWFuZCkKKyAgICBXZWJJbnNwZWN0b3IuQ29uc29sZUNvbW1hbmRSZXN1bHQg
PSBmdW5jdGlvbihyZXN1bHQsIHdhc1Rocm93biwgb3JpZ2luYXRpbmdDb21tYW5kLCBsaW5raWZp
ZXIpCiB7CiAgICAgdmFyIGxldmVsID0gKHdhc1Rocm93biA/IFdlYkluc3BlY3Rvci5Db25zb2xl
TWVzc2FnZS5NZXNzYWdlTGV2ZWwuRXJyb3IgOiBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2Uu
TWVzc2FnZUxldmVsLkxvZyk7CiAgICAgdGhpcy5vcmlnaW5hdGluZ0NvbW1hbmQgPSBvcmlnaW5h
dGluZ0NvbW1hbmQ7Ci0gICAgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlSW1wbC5jYWxsKHRo
aXMsIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlU291cmNlLkpTLCBXZWJJbnNw
ZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVR5cGUuUmVzdWx0LCBsZXZlbCwgLTEsIG51bGws
IDEsIG51bGwsIFtyZXN1bHRdKTsKKyAgICBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2VJbXBs
LmNhbGwodGhpcywgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VTb3VyY2UuSlMs
IFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlVHlwZS5SZXN1bHQsIGxldmVsLCAt
MSwgbnVsbCwgMSwgbnVsbCwgbGlua2lmaWVyLCBbcmVzdWx0XSk7CiB9CiAKIFdlYkluc3BlY3Rv
ci5Db25zb2xlQ29tbWFuZFJlc3VsdC5wcm90b3R5cGUgPSB7CkBAIC03NzYsMyArNzgwLDE1IEBA
IFdlYkluc3BlY3Rvci5Db25zb2xlR3JvdXAucHJvdG90eXBlID0gewogICogQHR5cGUgez9XZWJJ
bnNwZWN0b3IuQ29uc29sZVZpZXd9CiAgKi8KIFdlYkluc3BlY3Rvci5jb25zb2xlVmlldyA9IG51
bGw7CisKK1dlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5jcmVhdGUgPSBmdW5jdGlvbihzb3Vy
Y2UsIHR5cGUsIGxldmVsLCBsaW5lLCB1cmwsIHJlcGVhdENvdW50LCBtZXNzYWdlLCBwYXJhbWV0
ZXJzLCBzdGFja1RyYWNlLCByZXF1ZXN0KQoreworICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9y
LkNvbnNvbGVNZXNzYWdlSW1wbChzb3VyY2UsIHR5cGUsIGxldmVsLCBsaW5lLCB1cmwsIHJlcGVh
dENvdW50LCBtZXNzYWdlLCBXZWJJbnNwZWN0b3IuY29uc29sZVZpZXcuX2xpbmtpZmllciwgcGFy
YW1ldGVycywgc3RhY2tUcmFjZSwgcmVxdWVzdCk7Cit9CisgICAgCitXZWJJbnNwZWN0b3IuQ29u
c29sZU1lc3NhZ2UuY3JlYXRlVGV4dE1lc3NhZ2UgPSBmdW5jdGlvbih0ZXh0LCBsZXZlbCkKK3sK
KyAgICBsZXZlbCA9IGxldmVsIHx8IFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdl
TGV2ZWwuTG9nOworICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlSW1w
bChXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVNvdXJjZS5Db25zb2xlQVBJLCBX
ZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVR5cGUuTG9nLCBsZXZlbCwgMCwgbnVs
bCwgMSwgbnVsbCwgV2ViSW5zcGVjdG9yLmNvbnNvbGVWaWV3Ll9saW5raWZpZXIsIFt0ZXh0XSwg
bnVsbCk7Cit9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5qcwppbmRleCBkZmUwMTAxMzU2
YmUyMTZmZTY5ZjE4YzVlNWQyZWFkYjhiYTM2NjI0Li40MzRhODZiMzk1OTEyODFjOTQyNzBkNGM0
MjQxNzA2MmJiZmZiOGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0RlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLmpzCkBAIC02Nywz
MCArNjcsOSBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5FdmVudHMg
PSB7CiB9CiAKIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlw
ZSA9IHsKLSAgICBsaW5raWZ5TG9jYXRpb246IGZ1bmN0aW9uKHNvdXJjZVVSTCwgbGluZU51bWJl
ciwgY29sdW1uTnVtYmVyLCBjbGFzc2VzKQorICAgIGNyZWF0ZUxpbmtpZmllcjogZnVuY3Rpb24o
KQogICAgIHsKLSAgICAgICAgdmFyIGxpbmtUZXh0ID0gV2ViSW5zcGVjdG9yLmZvcm1hdExpbmtU
ZXh0KHNvdXJjZVVSTCwgbGluZU51bWJlcik7Ci0gICAgICAgIHZhciBhbmNob3IgPSBXZWJJbnNw
ZWN0b3IubGlua2lmeVVSTEFzTm9kZShzb3VyY2VVUkwsIGxpbmtUZXh0LCBjbGFzc2VzLCBmYWxz
ZSk7Ci0KLSAgICAgICAgdmFyIHJhd1NvdXJjZUNvZGUgPSB0aGlzLl9yYXdTb3VyY2VDb2RlRm9y
U2NyaXB0V2l0aFVSTChzb3VyY2VVUkwpOwotICAgICAgICBpZiAoIXJhd1NvdXJjZUNvZGUpIHsK
LSAgICAgICAgICAgIGFuY2hvci5zZXRBdHRyaWJ1dGUoInByZWZlcnJlZF9wYW5lbCIsICJyZXNv
dXJjZXMiKTsKLSAgICAgICAgICAgIGFuY2hvci5zZXRBdHRyaWJ1dGUoImxpbmVfbnVtYmVyIiwg
bGluZU51bWJlcik7Ci0gICAgICAgICAgICByZXR1cm4gYW5jaG9yOwotICAgICAgICB9Ci0KLSAg
ICAgICAgZnVuY3Rpb24gdXBkYXRlQW5jaG9yKCkKLSAgICAgICAgewotICAgICAgICAgICAgdmFy
IHVpTG9jYXRpb24gPSByYXdTb3VyY2VDb2RlLnNvdXJjZU1hcHBpbmcucmF3TG9jYXRpb25Ub1VJ
TG9jYXRpb24oeyBsaW5lTnVtYmVyOiBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXI6IGNvbHVtbk51
bWJlciB9KTsKLSAgICAgICAgICAgIGFuY2hvci50ZXh0Q29udGVudCA9IFdlYkluc3BlY3Rvci5m
b3JtYXRMaW5rVGV4dCh1aUxvY2F0aW9uLnVpU291cmNlQ29kZS51cmwsIHVpTG9jYXRpb24ubGlu
ZU51bWJlcik7Ci0gICAgICAgICAgICBhbmNob3Iuc2V0QXR0cmlidXRlKCJwcmVmZXJyZWRfcGFu
ZWwiLCAic2NyaXB0cyIpOwotICAgICAgICAgICAgYW5jaG9yLnVpU291cmNlQ29kZSA9IHVpTG9j
YXRpb24udWlTb3VyY2VDb2RlOwotICAgICAgICAgICAgYW5jaG9yLmxpbmVOdW1iZXIgPSB1aUxv
Y2F0aW9uLmxpbmVOdW1iZXI7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHJhd1NvdXJjZUNvZGUu
c291cmNlTWFwcGluZykKLSAgICAgICAgICAgIHVwZGF0ZUFuY2hvci5jYWxsKHRoaXMpOwotICAg
ICAgICByYXdTb3VyY2VDb2RlLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlJhd1NvdXJj
ZUNvZGUuRXZlbnRzLlNvdXJjZU1hcHBpbmdVcGRhdGVkLCB1cGRhdGVBbmNob3IsIHRoaXMpOwot
ICAgICAgICByZXR1cm4gYW5jaG9yOworICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5E
ZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLkxpbmtpZmllcih0aGlzKTsKICAgICB9LAogCiAgICAg
Y3JlYXRlUGxhY2FyZDogZnVuY3Rpb24oY2FsbEZyYW1lKQpAQCAtNTc3LDYgKzU1Niw3MyBAQCBX
ZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbFJlc291cmNlQmluZGluZy5wcm90
b3R5cGUgPSB7CiAgICAgfQogfQogCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICovCitXZWJJbnNw
ZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5MaW5raWZpZXIgPSBmdW5jdGlvbihtb2Rl
bCkKK3sKKyAgICB0aGlzLl9tb2RlbCA9IG1vZGVsOworICAgIHRoaXMuX2FuY2hvcnNGb3JVUkwg
PSB7fTsKK30KKworV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuTGlua2lm
aWVyLnByb3RvdHlwZSA9IHsKKyAgICBsaW5raWZ5TG9jYXRpb246IGZ1bmN0aW9uKHNvdXJjZVVS
TCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBjbGFzc2VzKQorICAgIHsKKyAgICAgICAgdmFy
IGxpbmtUZXh0ID0gV2ViSW5zcGVjdG9yLmZvcm1hdExpbmtUZXh0KHNvdXJjZVVSTCwgbGluZU51
bWJlcik7CisgICAgICAgIHZhciBhbmNob3IgPSBXZWJJbnNwZWN0b3IubGlua2lmeVVSTEFzTm9k
ZShzb3VyY2VVUkwsIGxpbmtUZXh0LCBjbGFzc2VzLCBmYWxzZSk7CisgICAgICAgIGFuY2hvci5y
YXdMb2NhdGlvbiA9IHsgbGluZU51bWJlcjogbGluZU51bWJlciwgY29sdW1uTnVtYmVyOiBjb2x1
bW5OdW1iZXIgfTsKKworICAgICAgICB2YXIgcmF3U291cmNlQ29kZSA9IHRoaXMuX21vZGVsLl9y
YXdTb3VyY2VDb2RlRm9yU2NyaXB0V2l0aFVSTChzb3VyY2VVUkwpOworICAgICAgICBpZiAoIXJh
d1NvdXJjZUNvZGUpIHsKKyAgICAgICAgICAgIGFuY2hvci5zZXRBdHRyaWJ1dGUoInByZWZlcnJl
ZF9wYW5lbCIsICJyZXNvdXJjZXMiKTsKKyAgICAgICAgICAgIGFuY2hvci5zZXRBdHRyaWJ1dGUo
ImxpbmVfbnVtYmVyIiwgbGluZU51bWJlcik7CisgICAgICAgICAgICByZXR1cm4gYW5jaG9yOwor
ICAgICAgICB9CisKKyAgICAgICAgdmFyIGFuY2hvcnMgPSB0aGlzLl9hbmNob3JzRm9yVVJMW3Nv
dXJjZVVSTF07CisgICAgICAgIGlmICghYW5jaG9ycykgeworICAgICAgICAgICAgYW5jaG9ycyA9
IFtdOworICAgICAgICAgICAgdGhpcy5fYW5jaG9yc0ZvclVSTFtzb3VyY2VVUkxdID0gYW5jaG9y
czsKKyAgICAgICAgICAgIHJhd1NvdXJjZUNvZGUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0
b3IuUmF3U291cmNlQ29kZS5FdmVudHMuU291cmNlTWFwcGluZ1VwZGF0ZWQsIHRoaXMuX3VwZGF0
ZVNvdXJjZUFuY2hvcnMsIHRoaXMpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHJhd1NvdXJj
ZUNvZGUuc291cmNlTWFwcGluZykKKyAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUFuY2hvcihyYXdT
b3VyY2VDb2RlLCBhbmNob3IpOworICAgICAgICBhbmNob3JzLnB1c2goYW5jaG9yKTsKKyAgICAg
ICAgcmV0dXJuIGFuY2hvcjsKKyAgICB9LAorCisgICAgcmVzZXQ6IGZ1bmN0aW9uKCkKKyAgICB7
CisgICAgICAgIGZvciAodmFyIHNvdXJjZVVSTCBpbiB0aGlzLl9hbmNob3JzRm9yVVJMKSB7Cisg
ICAgICAgICAgICB2YXIgcmF3U291cmNlQ29kZSA9IHRoaXMuX21vZGVsLl9yYXdTb3VyY2VDb2Rl
Rm9yU2NyaXB0V2l0aFVSTChzb3VyY2VVUkwpOworICAgICAgICAgICAgaWYgKHJhd1NvdXJjZUNv
ZGUpCisgICAgICAgICAgICAgICAgcmF3U291cmNlQ29kZS5yZW1vdmVFdmVudExpc3RlbmVyKFdl
Ykluc3BlY3Rvci5SYXdTb3VyY2VDb2RlLkV2ZW50cy5Tb3VyY2VNYXBwaW5nVXBkYXRlZCwgdGhp
cy5fdXBkYXRlU291cmNlQW5jaG9ycywgdGhpcyk7CisgICAgICAgIH0KKyAgICAgICAgdGhpcy5f
YW5jaG9yc0ZvclVSTCA9IHt9OworICAgIH0sCisKKyAgICBfdXBkYXRlU291cmNlQW5jaG9yczog
ZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICB2YXIgcmF3U291cmNlQ29kZSA9IGV2ZW50
LnRhcmdldDsKKyAgICAgICAgdmFyIGFuY2hvcnMgPSB0aGlzLl9hbmNob3JzRm9yVVJMW3Jhd1Nv
dXJjZUNvZGUudXJsXTsKKyAgICAgICAgaWYgKCFhbmNob3JzKQorICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYW5jaG9ycy5sZW5ndGg7ICsraSkKKyAg
ICAgICAgICAgIHRoaXMuX3VwZGF0ZUFuY2hvcihyYXdTb3VyY2VDb2RlLCBhbmNob3JzW2ldKTsK
KyAgICB9LAorCisgICAgX3VwZGF0ZUFuY2hvcjogZnVuY3Rpb24ocmF3U291cmNlQ29kZSwgYW5j
aG9yKQorICAgIHsKKyAgICAgICAgdmFyIHVpTG9jYXRpb24gPSByYXdTb3VyY2VDb2RlLnNvdXJj
ZU1hcHBpbmcucmF3TG9jYXRpb25Ub1VJTG9jYXRpb24oYW5jaG9yLnJhd0xvY2F0aW9uKTsKKyAg
ICAgICAgYW5jaG9yLnRleHRDb250ZW50ID0gV2ViSW5zcGVjdG9yLmZvcm1hdExpbmtUZXh0KHVp
TG9jYXRpb24udWlTb3VyY2VDb2RlLnVybCwgdWlMb2NhdGlvbi5saW5lTnVtYmVyKTsKKyAgICAg
ICAgYW5jaG9yLnNldEF0dHJpYnV0ZSgicHJlZmVycmVkX3BhbmVsIiwgInNjcmlwdHMiKTsKKyAg
ICAgICAgYW5jaG9yLnVpU291cmNlQ29kZSA9IHVpTG9jYXRpb24udWlTb3VyY2VDb2RlOworICAg
ICAgICBhbmNob3IubGluZU51bWJlciA9IHVpTG9jYXRpb24ubGluZU51bWJlcjsKKyAgICB9Cit9
CisKIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsUmVzb3VyY2VCaW5kaW5n
LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuUmVzb3VyY2VEb21haW5Nb2RlbEJp
bmRpbmcucHJvdG90eXBlOwogCiAvKioKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvRXZlbnRMaXN0ZW5lcnNTaWRlYmFyUGFuZS5qcyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRXZlbnRMaXN0ZW5lcnNTaWRlYmFyUGFuZS5qcwppbmRl
eCAyZWI4NjQ5NjAxYmZjMzA0OGYwNWZlN2FkY2I1NmNiNTIzOGZjM2RmLi43OTVlNmIxOGQ1MTNj
NGYxNGViYmIyY2E2NTg1MTVlYzk2MGU0MWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL0V2ZW50TGlzdGVuZXJzU2lkZWJhclBhbmUuanMKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FdmVudExpc3RlbmVyc1NpZGViYXJQYW5l
LmpzCkBAIC01Niw2ICs1Niw4IEBAIFdlYkluc3BlY3Rvci5FdmVudExpc3RlbmVyc1NpZGViYXJQ
YW5lID0gZnVuY3Rpb24oKQogICAgIHRoaXMuc2V0dGluZ3NTZWxlY3RFbGVtZW50LmFkZEV2ZW50
TGlzdGVuZXIoImNoYW5nZSIsIHRoaXMuX2NoYW5nZVNldHRpbmcuYmluZCh0aGlzKSwgZmFsc2Up
OwogCiAgICAgdGhpcy50aXRsZUVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5zZXR0aW5nc1NlbGVj
dEVsZW1lbnQpOworCisgICAgdGhpcy5fbGlua2lmaWVyID0gV2ViSW5zcGVjdG9yLmRlYnVnZ2Vy
UHJlc2VudGF0aW9uTW9kZWwuY3JlYXRlTGlua2lmaWVyKCk7CiB9CiAKIFdlYkluc3BlY3Rvci5F
dmVudExpc3RlbmVyc1NpZGViYXJQYW5lLl9vYmplY3RHcm91cE5hbWUgPSAiZXZlbnQtbGlzdGVu
ZXJzLXNpZGViYXItcGFuZSI7CkBAIC02NCw2ICs2Niw4IEBAIFdlYkluc3BlY3Rvci5FdmVudExp
c3RlbmVyc1NpZGViYXJQYW5lLnByb3RvdHlwZSA9IHsKICAgICB1cGRhdGU6IGZ1bmN0aW9uKG5v
ZGUpCiAgICAgewogICAgICAgICBSdW50aW1lQWdlbnQucmVsZWFzZU9iamVjdEdyb3VwKFdlYklu
c3BlY3Rvci5FdmVudExpc3RlbmVyc1NpZGViYXJQYW5lLl9vYmplY3RHcm91cE5hbWUpOworICAg
ICAgICB0aGlzLl9saW5raWZpZXIucmVzZXQoKTsKKwogICAgICAgICB2YXIgYm9keSA9IHRoaXMu
Ym9keUVsZW1lbnQ7CiAgICAgICAgIGJvZHkucmVtb3ZlQ2hpbGRyZW4oKTsKICAgICAgICAgdGhp
cy5zZWN0aW9ucyA9IFtdOwpAQCAtODQsNyArODgsNyBAQCBXZWJJbnNwZWN0b3IuRXZlbnRMaXN0
ZW5lcnNTaWRlYmFyUGFuZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgdmFyIHR5cGUg
PSBldmVudExpc3RlbmVyLnR5cGU7CiAgICAgICAgICAgICAgICAgdmFyIHNlY3Rpb24gPSBzZWN0
aW9uTWFwW3R5cGVdOwogICAgICAgICAgICAgICAgIGlmICghc2VjdGlvbikgewotICAgICAgICAg
ICAgICAgICAgICBzZWN0aW9uID0gbmV3IFdlYkluc3BlY3Rvci5FdmVudExpc3RlbmVyc1NlY3Rp
b24odHlwZSwgbm9kZS5pZCk7CisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gPSBuZXcgV2Vi
SW5zcGVjdG9yLkV2ZW50TGlzdGVuZXJzU2VjdGlvbih0eXBlLCBub2RlLmlkLCBzZWxmLl9saW5r
aWZpZXIpOwogICAgICAgICAgICAgICAgICAgICBzZWN0aW9uTWFwW3R5cGVdID0gc2VjdGlvbjsK
ICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbk5hbWVzLnB1c2godHlwZSk7CiAgICAgICAgICAg
ICAgICAgICAgIHNlbGYuc2VjdGlvbnMucHVzaChzZWN0aW9uKTsKQEAgLTEyNCwxMCArMTI4LDEx
IEBAIFdlYkluc3BlY3Rvci5FdmVudExpc3RlbmVyc1NpZGViYXJQYW5lLnByb3RvdHlwZSA9IHsK
IAogV2ViSW5zcGVjdG9yLkV2ZW50TGlzdGVuZXJzU2lkZWJhclBhbmUucHJvdG90eXBlLl9fcHJv
dG9fXyA9IFdlYkluc3BlY3Rvci5TaWRlYmFyUGFuZS5wcm90b3R5cGU7CiAKLVdlYkluc3BlY3Rv
ci5FdmVudExpc3RlbmVyc1NlY3Rpb24gPSBmdW5jdGlvbih0aXRsZSwgbm9kZUlkKQorV2ViSW5z
cGVjdG9yLkV2ZW50TGlzdGVuZXJzU2VjdGlvbiA9IGZ1bmN0aW9uKHRpdGxlLCBub2RlSWQsIGxp
bmtpZmllcikKIHsKICAgICB0aGlzLmV2ZW50TGlzdGVuZXJzID0gW107CiAgICAgdGhpcy5fbm9k
ZUlkID0gbm9kZUlkOworICAgIHRoaXMuX2xpbmtpZmllciA9IGxpbmtpZmllcjsKICAgICBXZWJJ
bnNwZWN0b3IuUHJvcGVydGllc1NlY3Rpb24uY2FsbCh0aGlzLCB0aXRsZSk7CiAKICAgICAvLyBD
aGFuZ2VkIGZyb20gYSBQcm9wZXJ0aWVzIExpc3QKQEAgLTE1OCw3ICsxNjMsNyBAQCBXZWJJbnNw
ZWN0b3IuRXZlbnRMaXN0ZW5lcnNTZWN0aW9uLnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFyIGxl
bmd0aCA9IGZpbHRlcmVkRXZlbnRMaXN0ZW5lcnMubGVuZ3RoOwogICAgICAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CiAgICAgICAgICAgICB2YXIgZXZlbnRMaXN0ZW5lciA9
IGZpbHRlcmVkRXZlbnRMaXN0ZW5lcnNbaV07Ci0gICAgICAgICAgICB2YXIgZXZlbnRMaXN0ZW5l
ckJhciA9IG5ldyBXZWJJbnNwZWN0b3IuRXZlbnRMaXN0ZW5lckJhcihldmVudExpc3RlbmVyLCB0
aGlzLl9ub2RlSWQpOworICAgICAgICAgICAgdmFyIGV2ZW50TGlzdGVuZXJCYXIgPSBuZXcgV2Vi
SW5zcGVjdG9yLkV2ZW50TGlzdGVuZXJCYXIoZXZlbnRMaXN0ZW5lciwgdGhpcy5fbm9kZUlkLCB0
aGlzLl9saW5raWZpZXIpOwogICAgICAgICAgICAgdGhpcy5ldmVudEJhcnMuYXBwZW5kQ2hpbGQo
ZXZlbnRMaXN0ZW5lckJhci5lbGVtZW50KTsKICAgICAgICAgfQogICAgIH0sCkBAIC0xNzEsMTMg
KzE3NiwxMyBAQCBXZWJJbnNwZWN0b3IuRXZlbnRMaXN0ZW5lcnNTZWN0aW9uLnByb3RvdHlwZSA9
IHsKIAogV2ViSW5zcGVjdG9yLkV2ZW50TGlzdGVuZXJzU2VjdGlvbi5wcm90b3R5cGUuX19wcm90
b19fID0gV2ViSW5zcGVjdG9yLlByb3BlcnRpZXNTZWN0aW9uLnByb3RvdHlwZTsKIAotV2ViSW5z
cGVjdG9yLkV2ZW50TGlzdGVuZXJCYXIgPSBmdW5jdGlvbihldmVudExpc3RlbmVyLCBub2RlSWQp
CitXZWJJbnNwZWN0b3IuRXZlbnRMaXN0ZW5lckJhciA9IGZ1bmN0aW9uKGV2ZW50TGlzdGVuZXIs
IG5vZGVJZCwgbGlua2lmaWVyKQogewogICAgIHRoaXMuZXZlbnRMaXN0ZW5lciA9IGV2ZW50TGlz
dGVuZXI7CiAgICAgdGhpcy5fbm9kZUlkID0gbm9kZUlkOwogICAgIFdlYkluc3BlY3Rvci5PYmpl
Y3RQcm9wZXJ0aWVzU2VjdGlvbi5jYWxsKHRoaXMpOwogICAgIHRoaXMuX3NldE5vZGVUaXRsZSgp
OwotICAgIHRoaXMuX3NldEZ1bmN0aW9uU3VidGl0bGUoKTsKKyAgICB0aGlzLl9zZXRGdW5jdGlv
blN1YnRpdGxlKGxpbmtpZmllcik7CiAgICAgdGhpcy5lZGl0YWJsZSA9IGZhbHNlOwogICAgIHRo
aXMuZWxlbWVudC5jbGFzc05hbWUgPSAiZXZlbnQtYmFyIjsgLyogQ2hhbmdlZCBmcm9tICJzZWN0
aW9uIiAqLwogICAgIHRoaXMuaGVhZGVyRWxlbWVudC5hZGRTdHlsZUNsYXNzKCJzb3VyY2UtY29k
ZSIpOwpAQCAtMjMxLDcgKzIzNiw3IEBAIFdlYkluc3BlY3Rvci5FdmVudExpc3RlbmVyQmFyLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy50aXRsZUVsZW1lbnQuYXBwZW5kQ2hpbGQoV2ViSW5z
cGVjdG9yLnBhbmVscy5lbGVtZW50cy5saW5raWZ5Tm9kZVJlZmVyZW5jZSh0aGlzLmV2ZW50TGlz
dGVuZXIubm9kZSkpOwogICAgIH0sCiAKLSAgICBfc2V0RnVuY3Rpb25TdWJ0aXRsZTogZnVuY3Rp
b24oKQorICAgIF9zZXRGdW5jdGlvblN1YnRpdGxlOiBmdW5jdGlvbihsaW5raWZpZXIpCiAgICAg
ewogICAgICAgICAvLyBSZXF1aXJlcyB0aGF0IEZ1bmN0aW9uLnRvU3RyaW5nKCkgcmV0dXJuIGF0
IGxlYXN0IHRoZSBmdW5jdGlvbidzIHNpZ25hdHVyZS4KICAgICAgICAgaWYgKHRoaXMuZXZlbnRM
aXN0ZW5lci5sb2NhdGlvbikgewpAQCAtMjQwLDcgKzI0NSw3IEBAIFdlYkluc3BlY3Rvci5FdmVu
dExpc3RlbmVyQmFyLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHZhciB1cmwgPSB0aGlzLmV2
ZW50TGlzdGVuZXIubG9jYXRpb24uc2NyaXB0SWQ7CiAgICAgICAgICAgICB2YXIgbGluZU51bWJl
ciA9IHRoaXMuZXZlbnRMaXN0ZW5lci5sb2NhdGlvbi5saW5lTnVtYmVyIC0gMTsKICAgICAgICAg
ICAgIHZhciBjb2x1bW5OdW1iZXIgPSAwOwotICAgICAgICAgICAgdmFyIHVybEVsZW1lbnQgPSBX
ZWJJbnNwZWN0b3IuZGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5saW5raWZ5TG9jYXRpb24odXJs
LCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpOworICAgICAgICAgICAgdmFyIHVybEVsZW1lbnQg
PSBsaW5raWZpZXIubGlua2lmeUxvY2F0aW9uKHVybCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVy
KTsKICAgICAgICAgICAgIHRoaXMuc3VidGl0bGVFbGVtZW50LmFwcGVuZENoaWxkKHVybEVsZW1l
bnQpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgdmFyIG1hdGNoID0gdGhpcy5ldmVu
dExpc3RlbmVyLmhhbmRsZXJCb2R5Lm1hdGNoKC9mdW5jdGlvbiAoW15cKF0rPylcKC8pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrUGFuZWwu
anMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtQYW5lbC5qcwpp
bmRleCAzYWExZjc2NDhmZWU2MGEyYWIyNWU1NGExZmY3ZmQ1Y2Q3YjgzOWRlLi4yNDBmYWM4MDQ5
ZDM2M2E0MjQ0ZTkyOWMyOWJmZmIyMThlNWU5NjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtQYW5lbC5qcwpAQCAtNTYsNiArNTYsNyBAQCBX
ZWJJbnNwZWN0b3IuTmV0d29ya0xvZ1ZpZXcgPSBmdW5jdGlvbihwYXJlbnRFbGVtZW50KQogCiAg
ICAgdGhpcy5fY3JlYXRlU3RhdHVzYmFyQnV0dG9ucygpOwogICAgIHRoaXMuX2NyZWF0ZUZpbHRl
clN0YXR1c0Jhckl0ZW1zKCk7CisgICAgdGhpcy5fbGlua2lmaWVyID0gV2ViSW5zcGVjdG9yLmRl
YnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuY3JlYXRlTGlua2lmaWVyKCk7CiAKICAgICBXZWJJbnNw
ZWN0b3IubmV0d29ya01hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuTmV0d29y
a01hbmFnZXIuRXZlbnRUeXBlcy5SZXNvdXJjZVN0YXJ0ZWQsIHRoaXMuX29uUmVzb3VyY2VTdGFy
dGVkLCB0aGlzKTsKICAgICBXZWJJbnNwZWN0b3IubmV0d29ya01hbmFnZXIuYWRkRXZlbnRMaXN0
ZW5lcihXZWJJbnNwZWN0b3IuTmV0d29ya01hbmFnZXIuRXZlbnRUeXBlcy5SZXNvdXJjZVVwZGF0
ZWQsIHRoaXMuX29uUmVzb3VyY2VVcGRhdGVkLCB0aGlzKTsKQEAgLTczNSw3ICs3MzYsNyBAQCBX
ZWJJbnNwZWN0b3IuTmV0d29ya0xvZ1ZpZXcucHJvdG90eXBlID0gewogCiAgICAgICAgIHRoaXMu
X21haW5SZXNvdXJjZUxvYWRUaW1lID0gLTE7CiAgICAgICAgIHRoaXMuX21haW5SZXNvdXJjZURP
TUNvbnRlbnRUaW1lID0gLTE7Ci0KKyAgICAgICAgdGhpcy5fbGlua2lmaWVyLnJlc2V0KCk7CiAg
ICAgfSwKIAogICAgIGdldCByZXNvdXJjZXMoKQpAQCAtMjA0NSw3ICsyMDQ2LDcgQEAgV2ViSW5z
cGVjdG9yLk5ldHdvcmtEYXRhR3JpZE5vZGUucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHRoaXMuX2lu
aXRpYXRvckNlbGwudGl0bGUgPSB0b3BGcmFtZS51cmwgKyAiOiIgKyB0b3BGcmFtZS5saW5lTnVt
YmVyOwotICAgICAgICAgICAgICAgIHZhciB1cmxFbGVtZW50ID0gV2ViSW5zcGVjdG9yLmRlYnVn
Z2VyUHJlc2VudGF0aW9uTW9kZWwubGlua2lmeUxvY2F0aW9uKHRvcEZyYW1lLnVybCwgdG9wRnJh
bWUubGluZU51bWJlciAtIDEsIDApOworICAgICAgICAgICAgICAgIHZhciB1cmxFbGVtZW50ID0g
dGhpcy5fcGFyZW50Vmlldy5fbGlua2lmaWVyLmxpbmtpZnlMb2NhdGlvbih0b3BGcmFtZS51cmws
IHRvcEZyYW1lLmxpbmVOdW1iZXIgLSAxLCAwKTsKICAgICAgICAgICAgICAgICB0aGlzLl9pbml0
aWF0b3JDZWxsLmFwcGVuZENoaWxkKHVybEVsZW1lbnQpOwogICAgICAgICAgICAgICAgIHRoaXMu
X2FwcGVuZFN1YnRpdGxlKHRoaXMuX2luaXRpYXRvckNlbGwsIFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiU2NyaXB0IikpOwogICAgICAgICAgICAgfSBlbHNlIHsgLy8gaW5pdGlhdG9yLnR5cGUgPT09
ICJwYXJzZXIiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1Byb2ZpbGVEYXRhR3JpZFRyZWUuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1Byb2ZpbGVEYXRhR3JpZFRyZWUuanMKaW5kZXggNTg1NTY4YzNhYmEwNjk4MWNlYzg1Mjlm
MTE0MmI5MGYyNjQzYjg3ZS4uY2Y0MGJjMjZlNzkwOTMwNTNmZDc5MmIzNzM3NTI4YjM0OWFmYjRm
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxl
RGF0YUdyaWRUcmVlLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
UHJvZmlsZURhdGFHcmlkVHJlZS5qcwpAQCAtOTgsNyArOTgsNyBAQCBXZWJJbnNwZWN0b3IuUHJv
ZmlsZURhdGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmICh0aGlzLnByb2ZpbGVO
b2RlLnVybCkgewogICAgICAgICAgICAgLy8gRklYTUUoNjI3MjUpOiBwcm9maWxlTm9kZSBzaG91
bGQgcmVmZXJlbmNlIGEgZGVidWdnZXIgbG9jYXRpb24uCiAgICAgICAgICAgICB2YXIgbGluZU51
bWJlciA9IHRoaXMucHJvZmlsZU5vZGUubGluZU51bWJlciA/IHRoaXMucHJvZmlsZU5vZGUubGlu
ZU51bWJlciAtIDEgOiAwOwotICAgICAgICAgICAgdmFyIHVybEVsZW1lbnQgPSBXZWJJbnNwZWN0
b3IuZGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5saW5raWZ5TG9jYXRpb24odGhpcy5wcm9maWxl
Tm9kZS51cmwsIGxpbmVOdW1iZXIsIDAsICJwcm9maWxlLW5vZGUtZmlsZSIpOworICAgICAgICAg
ICAgdmFyIHVybEVsZW1lbnQgPSB0aGlzLnByb2ZpbGVWaWV3Ll9saW5raWZpZXIubGlua2lmeUxv
Y2F0aW9uKHRoaXMucHJvZmlsZU5vZGUudXJsLCBsaW5lTnVtYmVyLCAwLCAicHJvZmlsZS1ub2Rl
LWZpbGUiKTsKICAgICAgICAgICAgIHVybEVsZW1lbnQuc3R5bGUubWF4V2lkdGggPSAiNzUlIjsK
ICAgICAgICAgICAgIGNlbGwuaW5zZXJ0QmVmb3JlKHVybEVsZW1lbnQsIGNlbGwuZmlyc3RDaGls
ZCk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvUHJvZmlsZVZpZXcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1Byb2ZpbGVWaWV3LmpzCmluZGV4IDJhMDNmODMwNTFkYTU0MWVmZTQxNDA5YzExYmRkMmFlODk0
MzFjZTIuLjA4NmVmYTRlY2FkNTI1MjAwOTg1NmFiMGE2MDBiODliYzQxYjFlMmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUHJvZmlsZVZpZXcuanMKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlVmlldy5qcwpAQCAt
OTYsNiArOTYsOCBAQCBXZWJJbnNwZWN0b3IuQ1BVUHJvZmlsZVZpZXcgPSBmdW5jdGlvbihwcm9m
aWxlKQogICAgICAgICBzZWxmLl91cGRhdGVQZXJjZW50QnV0dG9uKCk7CiAgICAgfQogCisgICAg
dGhpcy5fbGlua2lmaWVyID0gV2ViSW5zcGVjdG9yLmRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwu
Y3JlYXRlTGlua2lmaWVyKCk7CisKICAgICBQcm9maWxlckFnZW50LmdldFByb2ZpbGUodGhpcy5w
cm9maWxlLnR5cGVJZCwgdGhpcy5wcm9maWxlLnVpZCwgcHJvZmlsZUNhbGxiYWNrKTsKIH0KIApA
QCAtNDg1LDYgKzQ4Nyw3IEBAIFdlYkluc3BlY3Rvci5DUFVQcm9maWxlVmlldy5wcm90b3R5cGUg
PSB7CiAgICAgewogICAgICAgICB0aGlzLnJlc2V0QnV0dG9uLnZpc2libGUgPSBmYWxzZTsKICAg
ICAgICAgdGhpcy5wcm9maWxlRGF0YUdyaWRUcmVlLnJlc3RvcmUoKTsKKyAgICAgICAgdGhpcy5f
bGlua2lmaWVyLnJlc2V0KCk7CiAgICAgICAgIHRoaXMucmVmcmVzaCgpOwogICAgICAgICB0aGlz
LnJlZnJlc2hWaXNpYmxlRGF0YSgpOwogICAgIH0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lUGFuZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lUGFuZWwuanMKaW5kZXggMTU1MTdjZTYzOTdkZjRl
NTViNjY1MDA1NzYwZTIzMGUzYTBmMzgzNC4uMzY5ODFjMjhhNTA5NzY5ZGViOTg4NWY4ZmQxZjll
YmU3NjFhMjRjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9UaW1lbGluZVBhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvVGltZWxpbmVQYW5lbC5qcwpAQCAtMTA5LDYgKzEwOSw3IEBAIFdlYkluc3BlY3Rvci5UaW1l
bGluZVBhbmVsID0gZnVuY3Rpb24oKQogCiAgICAgdGhpcy5fcmVnaXN0ZXJTaG9ydGN1dHMoKTsK
ICAgICBXZWJJbnNwZWN0b3IudGltZWxpbmVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5z
cGVjdG9yLlRpbWVsaW5lTWFuYWdlci5FdmVudFR5cGVzLlRpbWVsaW5lRXZlbnRSZWNvcmRlZCwg
dGhpcy5fb25UaW1lbGluZUV2ZW50UmVjb3JkZWQsIHRoaXMpOworICAgIHRoaXMuX2xpbmtpZmll
ciA9IFdlYkluc3BlY3Rvci5kZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLmNyZWF0ZUxpbmtpZmll
cigpOwogfQogCiAvLyBEZWZpbmUgcm93IGhlaWdodCwgc2hvdWxkIGJlIGluIHN5bmMgd2l0aCBz
dHlsZXMgZm9yIHRpbWVsaW5lIGdyYXBocy4KQEAgLTExNiw2ICsxMTcsMTkgQEAgV2ViSW5zcGVj
dG9yLlRpbWVsaW5lUGFuZWwucm93SGVpZ2h0ID0gMTg7CiBXZWJJbnNwZWN0b3IuVGltZWxpbmVQ
YW5lbC5zaG9ydFJlY29yZFRocmVzaG9sZCA9IDAuMDE1OwogCiBXZWJJbnNwZWN0b3IuVGltZWxp
bmVQYW5lbC5wcm90b3R5cGUgPSB7CisgICAgX2xpbmtpZnlMb2NhdGlvbjogZnVuY3Rpb24odXJs
LCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCisgICAgeworICAgICAgICAvLyBGSVhNRSg2Mjcy
NSk6IHN0YWNrIHRyYWNlIGxpbmUvY29sdW1uIG51bWJlcnMgYXJlIG9uZS1iYXNlZC4KKyAgICAg
ICAgbGluZU51bWJlciA9IGxpbmVOdW1iZXIgPyBsaW5lTnVtYmVyIC0gMSA6IGxpbmVOdW1iZXI7
CisgICAgICAgIGNvbHVtbk51bWJlciA9IGNvbHVtbk51bWJlciA/IGNvbHVtbk51bWJlciAtIDEg
OiAwOworICAgICAgICByZXR1cm4gdGhpcy5fbGlua2lmaWVyLmxpbmtpZnlMb2NhdGlvbih1cmws
IGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgInRpbWVsaW5lLWRldGFpbHMiKTsKKyAgICB9LAor
CisgICAgX2xpbmtpZnlDYWxsRnJhbWU6IGZ1bmN0aW9uKGNhbGxGcmFtZSkKKyAgICB7CisgICAg
ICAgIHJldHVybiB0aGlzLl9saW5raWZ5TG9jYXRpb24oY2FsbEZyYW1lLnVybCwgY2FsbEZyYW1l
LmxpbmVOdW1iZXIsIGNhbGxGcmFtZS5jb2x1bW5OdW1iZXIpOworICAgIH0sCisKICAgICBfY3Jl
YXRlVG9wUGFuZTogZnVuY3Rpb24oKSB7CiAgICAgICAgIHZhciB0b3BQYW5lRWxlbWVudCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICAgICB0b3BQYW5lRWxlbWVudC5pZCA9
ICJ0aW1lbGluZS1vdmVydmlldy1wYW5lbCI7CkBAIC01MjgsNiArNTQyLDcgQEAgV2ViSW5zcGVj
dG9yLlRpbWVsaW5lUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9yZWZyZXNoKCk7
CiAgICAgICAgIHRoaXMuX2Nsb3NlUmVjb3JkRGV0YWlscygpOwogICAgICAgICB0aGlzLl9tb2Rl
bC5fcmVzZXQoKTsKKyAgICAgICAgdGhpcy5fbGlua2lmaWVyLnJlc2V0KCk7CiAgICAgfSwKIAog
ICAgIGVsZW1lbnRzVG9SZXN0b3JlU2Nyb2xsUG9zaXRpb25zRm9yOiBmdW5jdGlvbigpCkBAIC05
NjEsNiArOTc2LDcgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkR3JhcGhSb3cucHJvdG90
eXBlID0gewogCiBXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5Gb3JtYXR0ZWRSZWNvcmQgPSBm
dW5jdGlvbihyZWNvcmQsIHBhcmVudFJlY29yZCwgcGFuZWwsIHNjcmlwdERldGFpbHMpCiB7Cisg
ICAgdGhpcy5fcGFuZWwgPSBwYW5lbDsKICAgICB2YXIgcmVjb3JkVHlwZXMgPSBXZWJJbnNwZWN0
b3IuVGltZWxpbmVBZ2VudC5SZWNvcmRUeXBlOwogICAgIHZhciBzdHlsZSA9IHBhbmVsLl9yZWNv
cmRTdHlsZXNbcmVjb3JkLnR5cGVdOwogICAgIHRoaXMucGFyZW50ID0gcGFyZW50UmVjb3JkOwpA
QCAtMTA1MSw3ICsxMDY3LDcgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwuRm9ybWF0dGVk
UmVjb3JkLnByb3RvdHlwZSA9IHsKIAogICAgIF9nZW5lcmF0ZVBvcHVwQ29udGVudDogZnVuY3Rp
b24oY2FsY3VsYXRvciwgY2F0ZWdvcmllcykKICAgICB7Ci0gICAgICAgIHZhciBjb250ZW50SGVs
cGVyID0gbmV3IFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLlBvcHVwQ29udGVudEhlbHBlcih0
aGlzLnRpdGxlKTsKKyAgICAgICAgdmFyIGNvbnRlbnRIZWxwZXIgPSBuZXcgV2ViSW5zcGVjdG9y
LlRpbWVsaW5lUGFuZWwuUG9wdXBDb250ZW50SGVscGVyKHRoaXMudGl0bGUsIHRoaXMuX3BhbmVs
KTsKIAogICAgICAgICBpZiAodGhpcy5fY2hpbGRyZW4gJiYgdGhpcy5fY2hpbGRyZW4ubGVuZ3Ro
KSB7CiAgICAgICAgICAgICBjb250ZW50SGVscGVyLl9hcHBlbmRUZXh0Um93KFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiU2VsZiBUaW1lIiksIE51bWJlci5zZWNvbmRzVG9TdHJpbmcodGhpcy5fc2Vs
ZlRpbWUgKyAwLjAwMDEpKTsKQEAgLTExMzYsMjYgKzExNTIsMjYgQEAgV2ViSW5zcGVjdG9yLlRp
bWVsaW5lUGFuZWwuRm9ybWF0dGVkUmVjb3JkLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGNh
c2UgV2ViSW5zcGVjdG9yLlRpbWVsaW5lQWdlbnQuUmVjb3JkVHlwZS5HQ0V2ZW50OgogICAgICAg
ICAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIiVzIGNvbGxlY3RlZCIsIE51
bWJlci5ieXRlc1RvU3RyaW5nKHRoaXMuZGF0YS51c2VkSGVhcFNpemVEZWx0YSkpOwogICAgICAg
ICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuVGltZWxpbmVBZ2VudC5SZWNvcmRUeXBlLlRpbWVyRmly
ZToKLSAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zY3JpcHROYW1lID8gdGhpcy5fbGlua2lm
eUxvY2F0aW9uKHRoaXMuc2NyaXB0TmFtZSwgdGhpcy5zY3JpcHRMaW5lLCAwKSA6IHRoaXMuZGF0
YS50aW1lcklkOworICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNjcmlwdE5hbWUgPyB0aGlz
Ll9wYW5lbC5fbGlua2lmeUxvY2F0aW9uKHRoaXMuc2NyaXB0TmFtZSwgdGhpcy5zY3JpcHRMaW5l
LCAwKSA6IHRoaXMuZGF0YS50aW1lcklkOwogICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3Iu
VGltZWxpbmVBZ2VudC5SZWNvcmRUeXBlLkZ1bmN0aW9uQ2FsbDoKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gdGhpcy5zY3JpcHROYW1lID8gdGhpcy5fbGlua2lmeUxvY2F0aW9uKHRoaXMuc2NyaXB0
TmFtZSwgdGhpcy5zY3JpcHRMaW5lLCAwKSA6IG51bGw7CisgICAgICAgICAgICAgICAgcmV0dXJu
IHRoaXMuc2NyaXB0TmFtZSA/IHRoaXMuX3BhbmVsLl9saW5raWZ5TG9jYXRpb24odGhpcy5zY3Jp
cHROYW1lLCB0aGlzLnNjcmlwdExpbmUsIDApIDogbnVsbDsKICAgICAgICAgICAgIGNhc2UgV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lQWdlbnQuUmVjb3JkVHlwZS5GaXJlQW5pbWF0aW9uRnJhbWVFdmVu
dDoKLSAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zY3JpcHROYW1lID8gdGhpcy5fbGlua2lm
eUxvY2F0aW9uKHRoaXMuc2NyaXB0TmFtZSwgdGhpcy5zY3JpcHRMaW5lLCAwKSA6IHRoaXMuZGF0
YS5pZDsKKyAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zY3JpcHROYW1lID8gdGhpcy5fcGFu
ZWwuX2xpbmtpZnlMb2NhdGlvbih0aGlzLnNjcmlwdE5hbWUsIHRoaXMuc2NyaXB0TGluZSwgMCkg
OiB0aGlzLmRhdGEuaWQ7CiAgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5UaW1lbGluZUFn
ZW50LlJlY29yZFR5cGUuRXZlbnREaXNwYXRjaDoKICAgICAgICAgICAgICAgICByZXR1cm4gdGhp
cy5kYXRhID8gdGhpcy5kYXRhLnR5cGUgOiBudWxsOwogICAgICAgICAgICAgY2FzZSBXZWJJbnNw
ZWN0b3IuVGltZWxpbmVBZ2VudC5SZWNvcmRUeXBlLlBhaW50OgogICAgICAgICAgICAgICAgIHJl
dHVybiB0aGlzLmRhdGEud2lkdGggKyAiXHUyMDA5XHUwMGQ3XHUyMDA5IiArIHRoaXMuZGF0YS5o
ZWlnaHQ7CiAgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5UaW1lbGluZUFnZW50LlJlY29y
ZFR5cGUuVGltZXJJbnN0YWxsOgogICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuVGltZWxp
bmVBZ2VudC5SZWNvcmRUeXBlLlRpbWVyUmVtb3ZlOgotICAgICAgICAgICAgICAgIHJldHVybiB0
aGlzLnN0YWNrVHJhY2UgPyB0aGlzLl9saW5raWZ5Q2FsbEZyYW1lKHRoaXMuc3RhY2tUcmFjZVsw
XSkgOiB0aGlzLmRhdGEudGltZXJJZDsKKyAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zdGFj
a1RyYWNlID8gdGhpcy5fcGFuZWwuX2xpbmtpZnlDYWxsRnJhbWUodGhpcy5zdGFja1RyYWNlWzBd
KSA6IHRoaXMuZGF0YS50aW1lcklkOwogICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVBZ2VudC5SZWNvcmRUeXBlLlJlZ2lzdGVyQW5pbWF0aW9uRnJhbWVDYWxsYmFjazoKICAg
ICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRpbWVsaW5lQWdlbnQuUmVjb3JkVHlwZS5DYW5j
ZWxBbmltYXRpb25GcmFtZUNhbGxiYWNrOgotICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnN0
YWNrVHJhY2UgPyB0aGlzLl9saW5raWZ5Q2FsbEZyYW1lKHRoaXMuc3RhY2tUcmFjZVswXSkgOiB0
aGlzLmRhdGEuaWQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3RhY2tUcmFjZSA/IHRo
aXMuX3BhbmVsLl9saW5raWZ5Q2FsbEZyYW1lKHRoaXMuc3RhY2tUcmFjZVswXSkgOiB0aGlzLmRh
dGEuaWQ7CiAgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5UaW1lbGluZUFnZW50LlJlY29y
ZFR5cGUuUGFyc2VIVE1MOgogICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuVGltZWxpbmVB
Z2VudC5SZWNvcmRUeXBlLlJlY2FsY3VsYXRlU3R5bGVzOgotICAgICAgICAgICAgICAgIHJldHVy
biB0aGlzLnN0YWNrVHJhY2UgPyB0aGlzLl9saW5raWZ5Q2FsbEZyYW1lKHRoaXMuc3RhY2tUcmFj
ZVswXSkgOiBudWxsOworICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnN0YWNrVHJhY2UgPyB0
aGlzLl9wYW5lbC5fbGlua2lmeUNhbGxGcmFtZSh0aGlzLnN0YWNrVHJhY2VbMF0pIDogbnVsbDsK
ICAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRpbWVsaW5lQWdlbnQuUmVjb3JkVHlwZS5F
dmFsdWF0ZVNjcmlwdDoKLSAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy51cmwgPyB0aGlzLl9s
aW5raWZ5TG9jYXRpb24odGhpcy51cmwsIHRoaXMuZGF0YS5saW5lTnVtYmVyLCAwKSA6IG51bGw7
CisgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudXJsID8gdGhpcy5fcGFuZWwuX2xpbmtpZnlM
b2NhdGlvbih0aGlzLnVybCwgdGhpcy5kYXRhLmxpbmVOdW1iZXIsIDApIDogbnVsbDsKICAgICAg
ICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRpbWVsaW5lQWdlbnQuUmVjb3JkVHlwZS5YSFJSZWFk
eVN0YXRlQ2hhbmdlOgogICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuVGltZWxpbmVBZ2Vu
dC5SZWNvcmRUeXBlLlhIUkxvYWQ6CiAgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5UaW1l
bGluZUFnZW50LlJlY29yZFR5cGUuU2NoZWR1bGVSZXNvdXJjZVJlcXVlc3Q6CkBAIC0xMTcxLDE5
ICsxMTg3LDYgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwuRm9ybWF0dGVkUmVjb3JkLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgfQogICAgIH0sCiAKLSAgICBfbGlua2lmeUxvY2F0aW9uOiBm
dW5jdGlvbih1cmwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKLSAgICB7Ci0gICAgICAgIC8v
IEZJWE1FKDYyNzI1KTogc3RhY2sgdHJhY2UgbGluZS9jb2x1bW4gbnVtYmVycyBhcmUgb25lLWJh
c2VkLgotICAgICAgICBsaW5lTnVtYmVyID0gbGluZU51bWJlciA/IGxpbmVOdW1iZXIgLSAxIDog
bGluZU51bWJlcjsKLSAgICAgICAgY29sdW1uTnVtYmVyID0gY29sdW1uTnVtYmVyID8gY29sdW1u
TnVtYmVyIC0gMSA6IDA7Ci0gICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuZGVidWdnZXJQcmVz
ZW50YXRpb25Nb2RlbC5saW5raWZ5TG9jYXRpb24odXJsLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1i
ZXIsICJ0aW1lbGluZS1kZXRhaWxzIik7Ci0gICAgfSwKLQotICAgIF9saW5raWZ5Q2FsbEZyYW1l
OiBmdW5jdGlvbihjYWxsRnJhbWUpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fbGlua2lm
eUxvY2F0aW9uKGNhbGxGcmFtZS51cmwsIGNhbGxGcmFtZS5saW5lTnVtYmVyLCBjYWxsRnJhbWUu
Y29sdW1uTnVtYmVyKTsKLSAgICB9LAotCiAgICAgX2NhbGN1bGF0ZUFnZ3JlZ2F0ZWRTdGF0czog
ZnVuY3Rpb24oY2F0ZWdvcmllcykKICAgICB7CiAgICAgICAgIHRoaXMuX2FnZ3JlZ2F0ZWRTdGF0
cyA9IHt9OwpAQCAtMTIwNCw4ICsxMjA3LDkgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwu
Rm9ybWF0dGVkUmVjb3JkLnByb3RvdHlwZSA9IHsKICAgICB9CiB9CiAKLVdlYkluc3BlY3Rvci5U
aW1lbGluZVBhbmVsLlBvcHVwQ29udGVudEhlbHBlciA9IGZ1bmN0aW9uKHRpdGxlKQorV2ViSW5z
cGVjdG9yLlRpbWVsaW5lUGFuZWwuUG9wdXBDb250ZW50SGVscGVyID0gZnVuY3Rpb24odGl0bGUs
IHBhbmVsKQogeworICAgIHRoaXMuX3BhbmVsID0gcGFuZWw7CiAgICAgdGhpcy5fY29udGVudFRh
YmxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGFibGUiKTs7CiAgICAgdmFyIHRpdGxlQ2Vs
bCA9IHRoaXMuX2NyZWF0ZUNlbGwoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCIlcyAtIERldGFpbHMi
LCB0aXRsZSksICJ0aW1lbGluZS1kZXRhaWxzLXRpdGxlIik7CiAgICAgdGl0bGVDZWxsLmNvbFNw
YW4gPSAyOwpAQCAtMTI1MSw3ICsxMjU1LDcgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwu
UG9wdXBDb250ZW50SGVscGVyLnByb3RvdHlwZSA9IHsKIAogICAgIF9hcHBlbmRMaW5rUm93OiBm
dW5jdGlvbih0aXRsZSwgc2NyaXB0TmFtZSwgc2NyaXB0TGluZSkKICAgICB7Ci0gICAgICAgIHZh
ciBsaW5rID0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwuRm9ybWF0dGVkUmVjb3JkLnByb3Rv
dHlwZS5fbGlua2lmeUxvY2F0aW9uKHNjcmlwdE5hbWUsIHNjcmlwdExpbmUsIDAsICJ0aW1lbGlu
ZS1kZXRhaWxzIik7CisgICAgICAgIHZhciBsaW5rID0gdGhpcy5fcGFuZWwuX2xpbmtpZnlMb2Nh
dGlvbihzY3JpcHROYW1lLCBzY3JpcHRMaW5lLCAwLCAidGltZWxpbmUtZGV0YWlscyIpOwogICAg
ICAgICB0aGlzLl9hcHBlbmRFbGVtZW50Um93KHRpdGxlLCBsaW5rKTsKICAgICB9LAogCkBAIC0x
MjY2LDcgKzEyNzAsNyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5Qb3B1cENvbnRlbnRI
ZWxwZXIucHJvdG90eXBlID0gewogICAgICAgICAgICAgcm93LmFwcGVuZENoaWxkKHRoaXMuX2Ny
ZWF0ZUNlbGwoc3RhY2tGcmFtZS5mdW5jdGlvbk5hbWUgPyBzdGFja0ZyYW1lLmZ1bmN0aW9uTmFt
ZSA6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiKGFub255bW91cyBmdW5jdGlvbikiKSwgInRpbWVs
aW5lLWZ1bmN0aW9uLW5hbWUiKSk7CiAgICAgICAgICAgICByb3cuYXBwZW5kQ2hpbGQodGhpcy5f
Y3JlYXRlQ2VsbCgiIEAgIikpOwogICAgICAgICAgICAgdmFyIGxpbmtDZWxsID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgidGQiKTsKLSAgICAgICAgICAgIHZhciB1cmxFbGVtZW50ID0gV2ViSW5z
cGVjdG9yLlRpbWVsaW5lUGFuZWwuRm9ybWF0dGVkUmVjb3JkLnByb3RvdHlwZS5fbGlua2lmeUNh
bGxGcmFtZShzdGFja0ZyYW1lKTsKKyAgICAgICAgICAgIHZhciB1cmxFbGVtZW50ID0gdGhpcy5f
cGFuZWwuX2xpbmtpZnlDYWxsRnJhbWUoc3RhY2tGcmFtZSk7CiAgICAgICAgICAgICBsaW5rQ2Vs
bC5hcHBlbmRDaGlsZCh1cmxFbGVtZW50KTsKICAgICAgICAgICAgIHJvdy5hcHBlbmRDaGlsZChs
aW5rQ2VsbCk7CiAgICAgICAgICAgICBmcmFtZXNUYWJsZS5hcHBlbmRDaGlsZChyb3cpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcwppbmRleCAx
Y2U5ZTk5MTc2OGYxYmQ1NTU1ZGVlYmNmNGRhN2ZkMzVkNzE1NmFiLi5iNzRjNmFjNjMzNGVkNDVk
ODg5YzUwMGZmNjE0MGFjOGNjMzQ3ZTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcwpAQCAtNTA5LDYgKzUwOSw5IEBAIFdlYkluc3BlY3Rv
ci5kb0xvYWRlZERvbmUgPSBmdW5jdGlvbigpCiAgICAgdGhpcy5jb25zb2xlLmFkZEV2ZW50TGlz
dGVuZXIoV2ViSW5zcGVjdG9yLkNvbnNvbGVNb2RlbC5FdmVudHMuTWVzc2FnZUFkZGVkLCB0aGlz
Ll91cGRhdGVFcnJvckFuZFdhcm5pbmdDb3VudHMsIHRoaXMpOwogICAgIHRoaXMuY29uc29sZS5h
ZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Db25zb2xlTW9kZWwuRXZlbnRzLlJlcGVhdENv
dW50VXBkYXRlZCwgdGhpcy5fdXBkYXRlRXJyb3JBbmRXYXJuaW5nQ291bnRzLCB0aGlzKTsKIAor
ICAgIHRoaXMuZGVidWdnZXJNb2RlbCA9IG5ldyBXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbCgp
OworICAgIHRoaXMuZGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbCA9IG5ldyBXZWJJbnNwZWN0b3Iu
RGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbCgpOworCiAgICAgdGhpcy5kcmF3ZXIgPSBuZXcgV2Vi
SW5zcGVjdG9yLkRyYXdlcigpOwogICAgIHRoaXMuY29uc29sZVZpZXcgPSBuZXcgV2ViSW5zcGVj
dG9yLkNvbnNvbGVWaWV3KFdlYkluc3BlY3Rvci5Xb3JrZXJNYW5hZ2VyLmlzV29ya2VyRnJvbnRl
bmQoKSk7CiAKQEAgLTUyMSw4ICs1MjQsNiBAQCBXZWJJbnNwZWN0b3IuZG9Mb2FkZWREb25lID0g
ZnVuY3Rpb24oKQogICAgIEluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJJbnNwZWN0b3JEaXNwYXRj
aGVyKHRoaXMpOwogCiAgICAgdGhpcy5jc3NNb2RlbCA9IG5ldyBXZWJJbnNwZWN0b3IuQ1NTU3R5
bGVNb2RlbCgpOwotICAgIHRoaXMuZGVidWdnZXJNb2RlbCA9IG5ldyBXZWJJbnNwZWN0b3IuRGVi
dWdnZXJNb2RlbCgpOwotICAgIHRoaXMuZGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbCA9IG5ldyBX
ZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbCgpOwogCiAgICAgdGhpcy5zZWFy
Y2hDb250cm9sbGVyID0gbmV3IFdlYkluc3BlY3Rvci5TZWFyY2hDb250cm9sbGVyKCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109639</attachid>
            <date>2011-10-04 10:23:41 -0700</date>
            <delta_ts>2011-10-05 01:45:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-69146-20111004212339.patch</filename>
            <type>text/plain</type>
            <size>38724</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTY2MDMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA5YTVjYjljNjk2OGRkMDgwYWQwNDU3
NTIzMjdjZmM3NDQ2NWM1MTA4Li5iZmFjYzMzOWM3YTc0ZjUxNWI0NjU3MTliMGZhYTIwM2QzM2Ni
OGMxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMTAtMDQgIElseWEgVGlraG9ub3Zza3kg
IDxsb2lzbG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGRlYnVnZ2Vy
UHJlc2VudGF0aW9Nb2RlbC5saW5raWZ5TG9jYXRpb24gbGVha3MgdXBkYXRlQW5jaG9yIGNsb3N1
cmUgaW5zdGFuY2VzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NjkxNDYKKworICAgICAgICBJbiBtYW55IHBsYWNlcyB3ZSB1c2UgbGlua2lmeUxvY2F0
aW9uIGZ1bmN0aW9uIHRvIHByb2R1Y2UgYSBsaW5rIG5vZGUgd2hpY2ggdXBkYXRlcyBhdXRvbWF0
aWNhbGx5IHdoZW4gdGhlIHNvdXJjZSBmaWxlIGlzIGNoYW5nZWQgb24gdGhlIGZseS4KKyAgICAg
ICAgU3VjaCBjaGFuZ2VzIGhhcHBlbiB3aGVuIHdlIHVzZSBwcmV0dHkgcHJpbnQgb3IgYW5vdGhl
ciBvcGVyYXRpb24gdGhhdCBjaGFuZ2VzIHRoZSBzb3VyY2UgY29kZSBzb21laG93LgorICAgICAg
ICBsaW5raWZ5TG9jYXRpb24gYXNzb2NpYXRlcyBhIG5ldyBpbnN0YW5jZSBvZiB1cGRhdGVBbmNo
b3IgY2xvc3VyZSB3aXRoIHRoZSBlYWNoIGxpbmsgbm9kZSBhbmQgYWRkIHRoZSBjbG9zdXJlIHRv
IHRoZSBTb3VyY2VNYXBwaW5nVXBkYXRlZCBldmVudCdzIGxpc3QuCisgICAgICAgIEFzIHRoZSBy
ZXN1bHQgdGhlIG5vZGU8LT5jbG9zdXJlIHBhaXJzIHdvdWxkbid0IGJlIGNvbGxlY3RlZCB1bnRp
bCByZXNldCB0aGUgVUkgYW5kIERlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdn
ZXIvbGlua2lmaWVyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yL2Rl
YnVnZ2VyL2xpbmtpZmllci5odG1sOiBBZGRlZC4KKwogMjAxMS0xMC0wNCAgTWFyaW8gU2FuY2hl
eiBQcmFkYSAgPG1zYW5jaGV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZDsgbmV3
IGJhc2VsaW5lcyBmb3IgR1RLIGFmdGVyIHI5NjQ3MApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2RlYnVnZ2VyL2xpbmtpZmllci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZGVidWdnZXIvbGlua2lmaWVyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42OGE2
ZDU5ZjU3NGEwZjcyYWRmMjY4NTRhM2JmMDdjMGViMTJlYzkwCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2xpbmtpZmllci1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwyOCBAQAorVGVzdHMgdGhhdCBMaW5raWZpZXIgd29ya3MgY29ycmVjdGx5LgorCitE
ZWJ1Z2dlciB3YXMgZW5hYmxlZC4KKy0tLSBsaW5raWZ5IGZha2VVUkwtMSBmaXJzdCB0aW1lIC0t
LQorRHVtbXlQcmVzZW50YXRpb25Nb2RlbC5yYXdTb3VyY2VDb2RlRm9yU2NyaXB0V2l0aFVSTCB3
YXMgY2FsbGVkIHdpdGggYXJndW1lbnRzID0gWydmYWtlVXJsLTEnXQorRHVtbXlSYXdTb3VyY2VD
b2RlLmFkZEV2ZW50TGlzdGVuZXIgd2FzIGNhbGxlZCB3aXRoIGFyZ3VtZW50cyA9IFsnc291cmNl
LW1hcHBpbmctdXBkYXRlZCcsIGZ1bmN0aW9uLCBvYmplY3RdCisKKy0tLSBsaW5raWZ5IGZha2VV
UkwtMiBmaXJzdCB0aW1lIC0tLQorRHVtbXlQcmVzZW50YXRpb25Nb2RlbC5yYXdTb3VyY2VDb2Rl
Rm9yU2NyaXB0V2l0aFVSTCB3YXMgY2FsbGVkIHdpdGggYXJndW1lbnRzID0gWydmYWtlVXJsLTIn
XQorRHVtbXlSYXdTb3VyY2VDb2RlLmFkZEV2ZW50TGlzdGVuZXIgd2FzIGNhbGxlZCB3aXRoIGFy
Z3VtZW50cyA9IFsnc291cmNlLW1hcHBpbmctdXBkYXRlZCcsIGZ1bmN0aW9uLCBvYmplY3RdCisK
Ky0tLSBsaW5raWZ5IGZha2VVUkwtMSBzZWNvbmQgdGltZSAtLS0KK0R1bW15UHJlc2VudGF0aW9u
TW9kZWwucmF3U291cmNlQ29kZUZvclNjcmlwdFdpdGhVUkwgd2FzIGNhbGxlZCB3aXRoIGFyZ3Vt
ZW50cyA9IFsnZmFrZVVybC0xJ10KKworLS0tIGxpbmtpZnkgZmFrZVVSTC0yIHNlY29uZCB0aW1l
IC0tLQorRHVtbXlQcmVzZW50YXRpb25Nb2RlbC5yYXdTb3VyY2VDb2RlRm9yU2NyaXB0V2l0aFVS
TCB3YXMgY2FsbGVkIHdpdGggYXJndW1lbnRzID0gWydmYWtlVXJsLTInXQorCistLS0gcmVzZXQg
LS0tCitEdW1teVByZXNlbnRhdGlvbk1vZGVsLnJhd1NvdXJjZUNvZGVGb3JTY3JpcHRXaXRoVVJM
IHdhcyBjYWxsZWQgd2l0aCBhcmd1bWVudHMgPSBbJ2Zha2VVcmwtMSddCitEdW1teVJhd1NvdXJj
ZUNvZGUucmVtb3ZlRXZlbnRMaXN0ZW5lciB3YXMgY2FsbGVkIHdpdGggYXJndW1lbnRzID0gWydz
b3VyY2UtbWFwcGluZy11cGRhdGVkJywgZnVuY3Rpb24sIG9iamVjdF0KK0R1bW15UHJlc2VudGF0
aW9uTW9kZWwucmF3U291cmNlQ29kZUZvclNjcmlwdFdpdGhVUkwgd2FzIGNhbGxlZCB3aXRoIGFy
Z3VtZW50cyA9IFsnZmFrZVVybC0yJ10KK0R1bW15UmF3U291cmNlQ29kZS5yZW1vdmVFdmVudExp
c3RlbmVyIHdhcyBjYWxsZWQgd2l0aCBhcmd1bWVudHMgPSBbJ3NvdXJjZS1tYXBwaW5nLXVwZGF0
ZWQnLCBmdW5jdGlvbiwgb2JqZWN0XQorCistLS0gbG9jYXRpb24gdXBkYXRlIC0tLQorb3JpZ2lu
YWwgbG9jYXRpb246IGxpbmtpZmllci5odG1sOjY1CitwcmV0dHkgcHJpbnRlZCBsb2NhdGlvbjog
bGlua2lmaWVyLmh0bWw6NjcKK3JldmVydGVkIGxvY2F0aW9uOiBsaW5raWZpZXIuaHRtbDo2NQor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvbGlua2lmaWVyLmh0
bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvbGlua2lmaWVyLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZmFmN2ZhYzY2MDExNGM0MGJjOTZlYzlkZDQ4MWQ0ZjViNDUxYmJjNAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9saW5raWZpZXIuaHRtbApA
QCAtMCwwICsxLDEwNCBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9odHRw
L3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItdGVzdC5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0PgorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBJbnNwZWN0b3JUZXN0LnN0YXJ0
RGVidWdnZXJUZXN0KGRlYnVnZ2VyVGVzdCk7CisKKyAgICBmdW5jdGlvbiBkZWJ1Z2dlclRlc3Qo
KQorICAgIHsKKyAgICAgICAgaWYgKCFXZWJJbnNwZWN0b3IuZGVidWdnZXJQcmVzZW50YXRpb25N
b2RlbC5fcmF3U291cmNlQ29kZVtXZWJJbnNwZWN0b3IubWFpblJlc291cmNlLl9kb2N1bWVudFVS
TF0pIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkU25pZmZlcihXZWJJbnNwZWN0b3Iu
ZGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbCwgIl9hZGRTY3JpcHQiLCBkZWJ1Z2dlclRlc3QpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgdmFyIGZha2VVUkwxID0g
ImZha2VVcmwtMSI7CisgICAgICAgIHZhciBmYWtlVVJMMiA9ICJmYWtlVXJsLTIiOworCisgICAg
ICAgIER1bW15UHJlc2VudGF0aW9uTW9kZWwgPSBmdW5jdGlvbigpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIER1bW15UmF3U291cmNlQ29kZSA9IGZ1bmN0aW9uKCkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIgPSBmdW5jdGlvbihldmVudE5hbWUs
IGNhbGxiYWNrLCBvYmplY3QpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiRHVtbXlSYXdTb3VyY2VDb2RlLmFkZEV2ZW50TGlz
dGVuZXIgd2FzIGNhbGxlZCB3aXRoIGFyZ3VtZW50cyA9IFsnIiArIGV2ZW50TmFtZSArICInLCAi
ICsgKHR5cGVvZiBjYWxsYmFjaykgKyAiLCAiICsgKHR5cGVvZiBvYmplY3QpICsgIl0iKTsKKyAg
ICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZUV2ZW50TGlzdGVu
ZXIgPSBmdW5jdGlvbihldmVudE5hbWUsIGNhbGxiYWNrLCBvYmplY3QpCisgICAgICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiRHVtbXlS
YXdTb3VyY2VDb2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIgd2FzIGNhbGxlZCB3aXRoIGFyZ3VtZW50
cyA9IFsnIiArIGV2ZW50TmFtZSArICInLCAiICsgKHR5cGVvZiBjYWxsYmFjaykgKyAiLCAiICsg
KHR5cGVvZiBvYmplY3QpICsgIl0iKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKworICAgICAgICBEdW1teVByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZSA9
IHsKKyAgICAgICAgICAgIF9yYXdTb3VyY2VDb2RlRm9yU2NyaXB0V2l0aFVSTDogZnVuY3Rpb24o
c291cmNlVVJMKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
YWRkUmVzdWx0KCJEdW1teVByZXNlbnRhdGlvbk1vZGVsLnJhd1NvdXJjZUNvZGVGb3JTY3JpcHRX
aXRoVVJMIHdhcyBjYWxsZWQgd2l0aCBhcmd1bWVudHMgPSBbJyIgKyBzb3VyY2VVUkwgKyAiJ10i
KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbmV3IER1bW15UmF3U291cmNlQ29kZSgpOworICAg
ICAgICAgICAgfSwKKyAgICAgICAgfQorCisgICAgICAgIHZhciBkeW1teVByZXNlbnRhdGlvbk1v
ZGVsID0gbmV3IER1bW15UHJlc2VudGF0aW9uTW9kZWwoKTsKKworICAgICAgICB2YXIgbGlua2lm
aWVyID0gbmV3IFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLkxpbmtpZmll
cihkeW1teVByZXNlbnRhdGlvbk1vZGVsKTsKKworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJl
c3VsdCgiLS0tIGxpbmtpZnkgZmFrZVVSTC0xIGZpcnN0IHRpbWUgLS0tIik7CisgICAgICAgIGxp
bmtpZmllci5saW5raWZ5TG9jYXRpb24oZmFrZVVSTDEsIDQyLCAyNiwgImZha2UtY2xhc3MtbmFt
ZSIpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiIik7CisKKyAgICAgICAgSW5z
cGVjdG9yVGVzdC5hZGRSZXN1bHQoIi0tLSBsaW5raWZ5IGZha2VVUkwtMiBmaXJzdCB0aW1lIC0t
LSIpOworICAgICAgICBsaW5raWZpZXIubGlua2lmeUxvY2F0aW9uKGZha2VVUkwyLCA0MiwgMjYs
ICJmYWtlLWNsYXNzLW5hbWUiKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIiIp
OworCisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCItLS0gbGlua2lmeSBmYWtlVVJM
LTEgc2Vjb25kIHRpbWUgLS0tIik7CisgICAgICAgIGxpbmtpZmllci5saW5raWZ5TG9jYXRpb24o
ZmFrZVVSTDEsIDk3LCAyMywgImZha2UtY2xhc3MtbmFtZSIpOworICAgICAgICBJbnNwZWN0b3JU
ZXN0LmFkZFJlc3VsdCgiIik7CisKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIi0t
LSBsaW5raWZ5IGZha2VVUkwtMiBzZWNvbmQgdGltZSAtLS0iKTsKKyAgICAgICAgbGlua2lmaWVy
LmxpbmtpZnlMb2NhdGlvbihmYWtlVVJMMiwgNCwgMiwgImZha2UtY2xhc3MtbmFtZSIpOworICAg
ICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiIik7CisKKyAgICAgICAgSW5zcGVjdG9yVGVz
dC5hZGRSZXN1bHQoIi0tLSByZXNldCAtLS0iKTsKKyAgICAgICAgbGlua2lmaWVyLnJlc2V0KCk7
CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCIiKTsKKworICAgICAgICBJbnNwZWN0
b3JUZXN0LmFkZFJlc3VsdCgiLS0tIGxvY2F0aW9uIHVwZGF0ZSAtLS0iKTsKKworICAgICAgICBm
dW5jdGlvbiBkdW1teUZ1bmN0aW9uVG9CZVByZXR0eVByaW50ZWQoKSB7IEluc3BlY3RvclRlc3Qu
YWRkUmVzdWx0KCIiKTsgY29uc29sZS5lcnJvcigiIik7IH0KKworICAgICAgICBsaW5raWZpZXIg
PSBXZWJJbnNwZWN0b3IuZGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5jcmVhdGVMaW5raWZpZXIo
KTsKKyAgICAgICAgdmFyIGxpbmsgPSBsaW5raWZpZXIubGlua2lmeUxvY2F0aW9uKFdlYkluc3Bl
Y3Rvci5tYWluUmVzb3VyY2UuX2RvY3VtZW50VVJMLCA2NCwgMCwgImR1bW15LWNsYXNzIik7Cisg
ICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJvcmlnaW5hbCBsb2NhdGlvbjogIiArIGxp
bmsudGV4dENvbnRlbnQpOworCisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkU25pZmZlcihsaW5r
aWZpZXIsICJfdXBkYXRlQW5jaG9yIiwgbGlua1VwZGF0ZWQpOworICAgICAgICBXZWJJbnNwZWN0
b3IuZGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5zZXRGb3JtYXRTb3VyY2UodHJ1ZSk7CisKKyAg
ICAgICAgZnVuY3Rpb24gbGlua1VwZGF0ZWQoKQorICAgICAgICB7CisgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmFkZFJlc3VsdCgicHJldHR5IHByaW50ZWQgbG9jYXRpb246ICIgKyBsaW5rLnRl
eHRDb250ZW50KTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkU25pZmZlcihsaW5raWZp
ZXIsICJfdXBkYXRlQW5jaG9yIiwgbGlua1JldmVydGVkKTsKKyAgICAgICAgICAgIFdlYkluc3Bl
Y3Rvci5kZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnNldEZvcm1hdFNvdXJjZShmYWxzZSk7Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBsaW5rUmV2ZXJ0ZWQoKQorICAgICAgICB7Cisg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgicmV2ZXJ0ZWQgbG9jYXRpb246ICIg
KyBsaW5rLnRleHRDb250ZW50KTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVU
ZXN0KCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9k
eSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8cD4KK1Rlc3RzIHRoYXQgTGlua2lmaWVyIHdvcmtzIGNv
cnJlY3RseS4KKzwvcD4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDcyZjgxNzZi
MzllYTk4MDk3ZTg4MWZkY2I3MGM0ZDgyZjc0ZGVjMjguLjMzMGQyNDcyZGVmMjRjMGMwYWQwZTgz
MjE0ODMxMmE0MTAxOGU5OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1OCBAQAorMjAxMS0xMC0w
NCAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2Vi
IEluc3BlY3RvcjogZGVidWdnZXJQcmVzZW50YXRpb01vZGVsLmxpbmtpZnlMb2NhdGlvbiBsZWFr
cyB1cGRhdGVBbmNob3IgY2xvc3VyZSBpbnN0YW5jZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02OTE0NgorCisgICAgICAgIEluIG1hbnkgcGxhY2Vz
IHdlIHVzZSBsaW5raWZ5TG9jYXRpb24gZnVuY3Rpb24gdG8gcHJvZHVjZSBhIGxpbmsgbm9kZSB3
aGljaCB1cGRhdGVzIGF1dG9tYXRpY2FsbHkgd2hlbiB0aGUgc291cmNlIGZpbGUgaXMgY2hhbmdl
ZCBvbiB0aGUgZmx5LgorICAgICAgICBTdWNoIGNoYW5nZXMgaGFwcGVuIHdoZW4gd2UgdXNlIHBy
ZXR0eSBwcmludCBvciBhbm90aGVyIG9wZXJhdGlvbiB0aGF0IGNoYW5nZXMgdGhlIHNvdXJjZSBj
b2RlIHNvbWVob3cuCisgICAgICAgIGxpbmtpZnlMb2NhdGlvbiBhc3NvY2lhdGVzIGEgbmV3IGlu
c3RhbmNlIG9mIHVwZGF0ZUFuY2hvciBjbG9zdXJlIHdpdGggdGhlIGVhY2ggbGluayBub2RlIGFu
ZCBhZGQgdGhlIGNsb3N1cmUgdG8gdGhlIFNvdXJjZU1hcHBpbmdVcGRhdGVkIGV2ZW50J3MgbGlz
dC4KKyAgICAgICAgQXMgdGhlIHJlc3VsdCB0aGUgbm9kZTwtPmNsb3N1cmUgcGFpcnMgd291bGRu
J3QgYmUgY29sbGVjdGVkIHVudGlsIHJlc2V0IHRoZSBVSSBhbmQgRGVidWdnZXJQcmVzZW50YXRp
b25Nb2RlbC4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUZXN0OiBpbnNwZWN0b3IvZGVidWdnZXIvbGlua2lmaWVyLmh0bWwKKworICAgICAgICAqIGlu
c3BlY3Rvci9mcm9udC1lbmQvQ29uc29sZU1lc3NhZ2UuanM6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuQ29uc29sZU1lc3NhZ2VJbXBsKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db25zb2xlTWVz
c2FnZUltcGwucHJvdG90eXBlLl9saW5raWZ5TG9jYXRpb24pOgorICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQvQ29uc29sZVZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29uc29s
ZVZpZXcucHJvdG90eXBlLl9jb25zb2xlQ2xlYXJlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
Q29uc29sZUNvbW1hbmRSZXN1bHQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNz
YWdlLmNyZWF0ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuY3JlYXRl
VGV4dE1lc3NhZ2UpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJQcmVz
ZW50YXRpb25Nb2RlbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRh
dGlvbk1vZGVsLnByb3RvdHlwZS5jcmVhdGVMaW5raWZpZXIpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuTGlua2lmaWVyKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLkxpbmtpZmllci5wcm90b3R5cGUubGlu
a2lmeUxvY2F0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlv
bk1vZGVsLkxpbmtpZmllci5wcm90b3R5cGUucmVzZXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuTGlua2lmaWVyLnByb3RvdHlwZS5fdXBkYXRlU291
cmNlQW5jaG9ycyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25N
b2RlbC5MaW5raWZpZXIucHJvdG90eXBlLl91cGRhdGVBbmNob3IpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9mcm9udC1lbmQvRXZlbnRMaXN0ZW5lcnNTaWRlYmFyUGFuZS5qczoKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5FdmVudExpc3RlbmVyc1NpZGViYXJQYW5lLnByb3RvdHlwZS51cGRhdGUuY2Fs
bGJhY2spOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkV2ZW50TGlzdGVuZXJzU2lkZWJhclBhbmUu
cHJvdG90eXBlLnVwZGF0ZSk6CisgICAgICAgICgpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9u
dC1lbmQvTmV0d29ya1BhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtMb2dW
aWV3KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrTG9nVmlldy5wcm90b3R5cGUuX3Jl
c2V0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrRGF0YUdyaWROb2RlLnByb3RvdHlw
ZS5fcmVmcmVzaEluaXRpYXRvckNlbGwpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQv
UHJvZmlsZURhdGFHcmlkVHJlZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9maWxlRGF0
YUdyaWROb2RlLnByb3RvdHlwZS5jcmVhdGVDZWxsKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJv
bnQtZW5kL1Byb2ZpbGVWaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNQVVByb2ZpbGVW
aWV3KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DUFVQcm9maWxlVmlldy5wcm90b3R5cGUuX3Jl
c2V0Q2xpY2tlZCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZVBhbmVs
LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwucHJvdG90eXBlLl9saW5raWZ5TG9jYXRpb24pOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwucHJvdG90eXBlLl9saW5raWZ5Q2FsbEZy
YW1lKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLnByb3RvdHlwZS5fY2xl
YXJQYW5lbCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5Gb3JtYXR0ZWRS
ZWNvcmQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwuRm9ybWF0dGVkUmVj
b3JkLnByb3RvdHlwZS5fZ2VuZXJhdGVQb3B1cENvbnRlbnQpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlRpbWVsaW5lUGFuZWwuRm9ybWF0dGVkUmVjb3JkLnByb3RvdHlwZS5fZ2V0UmVjb3JkRGV0
YWlscyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5Qb3B1cENvbnRlbnRI
ZWxwZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwuUG9wdXBDb250ZW50
SGVscGVyLnByb3RvdHlwZS5fYXBwZW5kTGlua1Jvdyk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
VGltZWxpbmVQYW5lbC5Qb3B1cENvbnRlbnRIZWxwZXIucHJvdG90eXBlLl9hcHBlbmRTdGFja1Ry
YWNlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qczoKKwogMjAx
MS0xMC0wNCAgTWlraGFpbCBOYWdhbm92ICA8bW5hZ2Fub3ZAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IEZhY3RvciBvdXQgb2JqZWN0IHByb3BlcnRpZXMgcG9wdXAuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVNZXNz
YWdlLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xlTWVzc2Fn
ZS5qcwppbmRleCAzZTcwODNmNTI4ZWI1MWY2MWMzMGQ4MTE2YTNkZmY2NGNiZjE2MmNlLi5kN2E0
MGMwZDcyNWJkNDUxMDBmMTNmNjUyN2YwNjcyODQ0NzQwNWViIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVNZXNzYWdlLmpzCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29uc29sZU1lc3NhZ2UuanMKQEAgLTI4LDI4
ICsyOCwxOSBAQAogICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuQ29uc29sZU1lc3Nh
Z2UuY3JlYXRlID0gZnVuY3Rpb24oc291cmNlLCB0eXBlLCBsZXZlbCwgbGluZSwgdXJsLCByZXBl
YXRDb3VudCwgbWVzc2FnZSwgcGFyYW1ldGVycywgc3RhY2tUcmFjZSwgcmVxdWVzdCkKLXsKLSAg
ICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZUltcGwoc291cmNlLCB0eXBl
LCBsZXZlbCwgbGluZSwgdXJsLCByZXBlYXRDb3VudCwgbWVzc2FnZSwgcGFyYW1ldGVycywgc3Rh
Y2tUcmFjZSwgcmVxdWVzdCk7Ci19Ci0KLVdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5jcmVh
dGVUZXh0TWVzc2FnZSA9IGZ1bmN0aW9uKHRleHQsIGxldmVsKQotewotICAgIGxldmVsID0gbGV2
ZWwgfHwgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VMZXZlbC5Mb2c7Ci0gICAg
cmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2VJbXBsKFdlYkluc3BlY3Rvci5D
b25zb2xlTWVzc2FnZS5NZXNzYWdlU291cmNlLkNvbnNvbGVBUEksIFdlYkluc3BlY3Rvci5Db25z
b2xlTWVzc2FnZS5NZXNzYWdlVHlwZS5Mb2csIGxldmVsLCAwLCBudWxsLCAxLCBudWxsLCBbdGV4
dF0sIG51bGwpOwotfQotCiAvKioKICAqIEBjb25zdHJ1Y3RvcgogICogQGV4dGVuZHMge1dlYklu
c3BlY3Rvci5Db25zb2xlTWVzc2FnZX0KKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkRlYnVnZ2Vy
UHJlc2VudGF0aW9uTW9kZWwuTGlua2lmaWVyfSBsaW5raWZpZXIKICAqIEBwYXJhbSB7QXJyYXku
PFJ1bnRpbWVBZ2VudC5SZW1vdGVPYmplY3Q+PX0gcGFyYW1ldGVycwogICogQHBhcmFtIHtDb25z
b2xlQWdlbnQuU3RhY2tUcmFjZT19IHN0YWNrVHJhY2UKICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9y
LlJlc291cmNlPX0gcmVxdWVzdAogICovCi1XZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2VJbXBs
ID0gZnVuY3Rpb24oc291cmNlLCB0eXBlLCBsZXZlbCwgbGluZSwgdXJsLCByZXBlYXRDb3VudCwg
bWVzc2FnZSwgcGFyYW1ldGVycywgc3RhY2tUcmFjZSwgcmVxdWVzdCkKK1dlYkluc3BlY3Rvci5D
b25zb2xlTWVzc2FnZUltcGwgPSBmdW5jdGlvbihzb3VyY2UsIHR5cGUsIGxldmVsLCBsaW5lLCB1
cmwsIHJlcGVhdENvdW50LCBtZXNzYWdlLCBsaW5raWZpZXIsIHBhcmFtZXRlcnMsIHN0YWNrVHJh
Y2UsIHJlcXVlc3QpCiB7CiAgICAgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLmNhbGwoKTsK
IAorICAgIHRoaXMuX2xpbmtpZmllciA9IGxpbmtpZmllcjsKICAgICB0aGlzLnNvdXJjZSA9IHNv
dXJjZTsKICAgICB0aGlzLnR5cGUgPSB0eXBlOwogICAgIHRoaXMubGV2ZWwgPSBsZXZlbDsKQEAg
LTE5NCw3ICsxODUsNyBAQCBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2VJbXBsLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgLy8gRklYTUUoNjI3MjUpOiBzdGFjayB0cmFjZSBsaW5lL2NvbHVtbiBu
dW1iZXJzIGFyZSBvbmUtYmFzZWQuCiAgICAgICAgIGxpbmVOdW1iZXIgPSBsaW5lTnVtYmVyID8g
bGluZU51bWJlciAtIDEgOiB1bmRlZmluZWQ7CiAgICAgICAgIGNvbHVtbk51bWJlciA9IGNvbHVt
bk51bWJlciA/IGNvbHVtbk51bWJlciAtIDEgOiAwOwotICAgICAgICByZXR1cm4gV2ViSW5zcGVj
dG9yLmRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwubGlua2lmeUxvY2F0aW9uKHVybCwgbGluZU51
bWJlciwgY29sdW1uTnVtYmVyLCAiY29uc29sZS1tZXNzYWdlLXVybCIpOworICAgICAgICByZXR1
cm4gdGhpcy5fbGlua2lmaWVyLmxpbmtpZnlMb2NhdGlvbih1cmwsIGxpbmVOdW1iZXIsIGNvbHVt
bk51bWJlciwgImNvbnNvbGUtbWVzc2FnZS11cmwiKTsKICAgICB9LAogCiAgICAgX2xpbmtpZnlD
YWxsRnJhbWU6IGZ1bmN0aW9uKGNhbGxGcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvQ29uc29sZVZpZXcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVWaWV3LmpzCmluZGV4IGU0MTI0MzJjZDlmZGYzOWJkY2U3
NDM5MGYyMTVhNmNmZTk3ZmY2ZDQuLmQ4MDU1MDU3NDdjNDAzYTMwOGU1YWI4ZjI2YzA2YzFlMWNl
M2FjNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29u
c29sZVZpZXcuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db25z
b2xlVmlldy5qcwpAQCAtMTEwLDYgKzExMCw4IEBAIFdlYkluc3BlY3Rvci5Db25zb2xlVmlldyA9
IGZ1bmN0aW9uKGhpZGVDb250ZXh0U2VsZWN0b3IpCiAKICAgICBXZWJJbnNwZWN0b3IuY29uc29s
ZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Db25zb2xlTW9kZWwuRXZlbnRzLk1lc3Nh
Z2VBZGRlZCwgdGhpcy5fY29uc29sZU1lc3NhZ2VBZGRlZCwgdGhpcyk7CiAgICAgV2ViSW5zcGVj
dG9yLmNvbnNvbGUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQ29uc29sZU1vZGVsLkV2
ZW50cy5Db25zb2xlQ2xlYXJlZCwgdGhpcy5fY29uc29sZUNsZWFyZWQsIHRoaXMpOworCisgICAg
dGhpcy5fbGlua2lmaWVyID0gV2ViSW5zcGVjdG9yLmRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwu
Y3JlYXRlTGlua2lmaWVyKCk7CiB9CiAKIFdlYkluc3BlY3Rvci5Db25zb2xlVmlldy5FdmVudHMg
PSB7CkBAIC0zMjYsNiArMzI4LDggQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3LnByb3RvdHlw
ZSA9IHsKICAgICAgICAgdGhpcy50b3BHcm91cC5tZXNzYWdlc0VsZW1lbnQucmVtb3ZlQ2hpbGRy
ZW4oKTsKIAogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0
b3IuQ29uc29sZVZpZXcuRXZlbnRzLkNvbnNvbGVDbGVhcmVkKTsKKworICAgICAgICB0aGlzLl9s
aW5raWZpZXIucmVzZXQoKTsKICAgICB9LAogCiAgICAgY29tcGxldGlvbnM6IGZ1bmN0aW9uKHdv
cmRSYW5nZSwgYmVzdE1hdGNoT25seSwgY29tcGxldGlvbnNSZWFkeUNhbGxiYWNrKQpAQCAtNjE3
LDcgKzYyMSw3IEBAIFdlYkluc3BlY3Rvci5Db25zb2xlVmlldy5wcm90b3R5cGUgPSB7CiAKICAg
ICAgICAgICAgIFdlYkluc3BlY3Rvci5zZXR0aW5ncy5jb25zb2xlSGlzdG9yeS5zZXQodGhpcy5w
cm9tcHQuaGlzdG9yeS5zbGljZSgtMzApKTsKIAotICAgICAgICAgICAgdGhpcy5fYXBwZW5kQ29u
c29sZU1lc3NhZ2UobmV3IFdlYkluc3BlY3Rvci5Db25zb2xlQ29tbWFuZFJlc3VsdChyZXN1bHQs
IHdhc1Rocm93biwgY29tbWFuZE1lc3NhZ2UpKTsKKyAgICAgICAgICAgIHRoaXMuX2FwcGVuZENv
bnNvbGVNZXNzYWdlKG5ldyBXZWJJbnNwZWN0b3IuQ29uc29sZUNvbW1hbmRSZXN1bHQocmVzdWx0
LCB3YXNUaHJvd24sIGNvbW1hbmRNZXNzYWdlLCB0aGlzLl9saW5raWZpZXIpKTsKICAgICAgICAg
fQogICAgICAgICB0aGlzLmV2YWxJbkluc3BlY3RlZFdpbmRvdyhzdHIsICJjb25zb2xlIiwgdHJ1
ZSwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHByaW50UmVzdWx0LmJpbmQodGhpcykpOwogCkBAIC02
OTQsMTEgKzY5OCwxMSBAQCBXZWJJbnNwZWN0b3IuQ29uc29sZUNvbW1hbmQucHJvdG90eXBlID0g
ewogICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZUltcGx9CiAgKiBAY29u
c3RydWN0b3IKICAqLwotV2ViSW5zcGVjdG9yLkNvbnNvbGVDb21tYW5kUmVzdWx0ID0gZnVuY3Rp
b24ocmVzdWx0LCB3YXNUaHJvd24sIG9yaWdpbmF0aW5nQ29tbWFuZCkKKyAgICBXZWJJbnNwZWN0
b3IuQ29uc29sZUNvbW1hbmRSZXN1bHQgPSBmdW5jdGlvbihyZXN1bHQsIHdhc1Rocm93biwgb3Jp
Z2luYXRpbmdDb21tYW5kLCBsaW5raWZpZXIpCiB7CiAgICAgdmFyIGxldmVsID0gKHdhc1Rocm93
biA/IFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlTGV2ZWwuRXJyb3IgOiBXZWJJ
bnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZUxldmVsLkxvZyk7CiAgICAgdGhpcy5vcmln
aW5hdGluZ0NvbW1hbmQgPSBvcmlnaW5hdGluZ0NvbW1hbmQ7Ci0gICAgV2ViSW5zcGVjdG9yLkNv
bnNvbGVNZXNzYWdlSW1wbC5jYWxsKHRoaXMsIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5N
ZXNzYWdlU291cmNlLkpTLCBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVR5cGUu
UmVzdWx0LCBsZXZlbCwgLTEsIG51bGwsIDEsIG51bGwsIFtyZXN1bHRdKTsKKyAgICBXZWJJbnNw
ZWN0b3IuQ29uc29sZU1lc3NhZ2VJbXBsLmNhbGwodGhpcywgV2ViSW5zcGVjdG9yLkNvbnNvbGVN
ZXNzYWdlLk1lc3NhZ2VTb3VyY2UuSlMsIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNz
YWdlVHlwZS5SZXN1bHQsIGxldmVsLCAtMSwgbnVsbCwgMSwgbnVsbCwgbGlua2lmaWVyLCBbcmVz
dWx0XSk7CiB9CiAKIFdlYkluc3BlY3Rvci5Db25zb2xlQ29tbWFuZFJlc3VsdC5wcm90b3R5cGUg
PSB7CkBAIC03NzYsMyArNzgwLDE1IEBAIFdlYkluc3BlY3Rvci5Db25zb2xlR3JvdXAucHJvdG90
eXBlID0gewogICogQHR5cGUgez9XZWJJbnNwZWN0b3IuQ29uc29sZVZpZXd9CiAgKi8KIFdlYklu
c3BlY3Rvci5jb25zb2xlVmlldyA9IG51bGw7CisKK1dlYkluc3BlY3Rvci5Db25zb2xlTWVzc2Fn
ZS5jcmVhdGUgPSBmdW5jdGlvbihzb3VyY2UsIHR5cGUsIGxldmVsLCBsaW5lLCB1cmwsIHJlcGVh
dENvdW50LCBtZXNzYWdlLCBwYXJhbWV0ZXJzLCBzdGFja1RyYWNlLCByZXF1ZXN0KQoreworICAg
IHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlSW1wbChzb3VyY2UsIHR5cGUs
IGxldmVsLCBsaW5lLCB1cmwsIHJlcGVhdENvdW50LCBtZXNzYWdlLCBXZWJJbnNwZWN0b3IuY29u
c29sZVZpZXcuX2xpbmtpZmllciwgcGFyYW1ldGVycywgc3RhY2tUcmFjZSwgcmVxdWVzdCk7Cit9
CisgICAgCitXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuY3JlYXRlVGV4dE1lc3NhZ2UgPSBm
dW5jdGlvbih0ZXh0LCBsZXZlbCkKK3sKKyAgICBsZXZlbCA9IGxldmVsIHx8IFdlYkluc3BlY3Rv
ci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlTGV2ZWwuTG9nOworICAgIHJldHVybiBuZXcgV2ViSW5z
cGVjdG9yLkNvbnNvbGVNZXNzYWdlSW1wbChXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVz
c2FnZVNvdXJjZS5Db25zb2xlQVBJLCBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2Fn
ZVR5cGUuTG9nLCBsZXZlbCwgMCwgbnVsbCwgMSwgbnVsbCwgV2ViSW5zcGVjdG9yLmNvbnNvbGVW
aWV3Ll9saW5raWZpZXIsIFt0ZXh0XSwgbnVsbCk7Cit9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5qcyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJQcmVzZW50YXRpb25N
b2RlbC5qcwppbmRleCBkZmUwMTAxMzU2YmUyMTZmZTY5ZjE4YzVlNWQyZWFkYjhiYTM2NjI0Li40
MzRhODZiMzk1OTEyODFjOTQyNzBkNGM0MjQxNzA2MmJiZmZiOGM4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwu
anMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dlclByZXNl
bnRhdGlvbk1vZGVsLmpzCkBAIC02NywzMCArNjcsOSBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJQ
cmVzZW50YXRpb25Nb2RlbC5FdmVudHMgPSB7CiB9CiAKIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclBy
ZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZSA9IHsKLSAgICBsaW5raWZ5TG9jYXRpb246IGZ1bmN0
aW9uKHNvdXJjZVVSTCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBjbGFzc2VzKQorICAgIGNy
ZWF0ZUxpbmtpZmllcjogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgdmFyIGxpbmtUZXh0ID0g
V2ViSW5zcGVjdG9yLmZvcm1hdExpbmtUZXh0KHNvdXJjZVVSTCwgbGluZU51bWJlcik7Ci0gICAg
ICAgIHZhciBhbmNob3IgPSBXZWJJbnNwZWN0b3IubGlua2lmeVVSTEFzTm9kZShzb3VyY2VVUkws
IGxpbmtUZXh0LCBjbGFzc2VzLCBmYWxzZSk7Ci0KLSAgICAgICAgdmFyIHJhd1NvdXJjZUNvZGUg
PSB0aGlzLl9yYXdTb3VyY2VDb2RlRm9yU2NyaXB0V2l0aFVSTChzb3VyY2VVUkwpOwotICAgICAg
ICBpZiAoIXJhd1NvdXJjZUNvZGUpIHsKLSAgICAgICAgICAgIGFuY2hvci5zZXRBdHRyaWJ1dGUo
InByZWZlcnJlZF9wYW5lbCIsICJyZXNvdXJjZXMiKTsKLSAgICAgICAgICAgIGFuY2hvci5zZXRB
dHRyaWJ1dGUoImxpbmVfbnVtYmVyIiwgbGluZU51bWJlcik7Ci0gICAgICAgICAgICByZXR1cm4g
YW5jaG9yOwotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gdXBkYXRlQW5jaG9yKCkKLSAg
ICAgICAgewotICAgICAgICAgICAgdmFyIHVpTG9jYXRpb24gPSByYXdTb3VyY2VDb2RlLnNvdXJj
ZU1hcHBpbmcucmF3TG9jYXRpb25Ub1VJTG9jYXRpb24oeyBsaW5lTnVtYmVyOiBsaW5lTnVtYmVy
LCBjb2x1bW5OdW1iZXI6IGNvbHVtbk51bWJlciB9KTsKLSAgICAgICAgICAgIGFuY2hvci50ZXh0
Q29udGVudCA9IFdlYkluc3BlY3Rvci5mb3JtYXRMaW5rVGV4dCh1aUxvY2F0aW9uLnVpU291cmNl
Q29kZS51cmwsIHVpTG9jYXRpb24ubGluZU51bWJlcik7Ci0gICAgICAgICAgICBhbmNob3Iuc2V0
QXR0cmlidXRlKCJwcmVmZXJyZWRfcGFuZWwiLCAic2NyaXB0cyIpOwotICAgICAgICAgICAgYW5j
aG9yLnVpU291cmNlQ29kZSA9IHVpTG9jYXRpb24udWlTb3VyY2VDb2RlOwotICAgICAgICAgICAg
YW5jaG9yLmxpbmVOdW1iZXIgPSB1aUxvY2F0aW9uLmxpbmVOdW1iZXI7Ci0gICAgICAgIH0KLSAg
ICAgICAgaWYgKHJhd1NvdXJjZUNvZGUuc291cmNlTWFwcGluZykKLSAgICAgICAgICAgIHVwZGF0
ZUFuY2hvci5jYWxsKHRoaXMpOwotICAgICAgICByYXdTb3VyY2VDb2RlLmFkZEV2ZW50TGlzdGVu
ZXIoV2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUuRXZlbnRzLlNvdXJjZU1hcHBpbmdVcGRhdGVk
LCB1cGRhdGVBbmNob3IsIHRoaXMpOwotICAgICAgICByZXR1cm4gYW5jaG9yOworICAgICAgICBy
ZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLkxpbmtpZmll
cih0aGlzKTsKICAgICB9LAogCiAgICAgY3JlYXRlUGxhY2FyZDogZnVuY3Rpb24oY2FsbEZyYW1l
KQpAQCAtNTc3LDYgKzU1Niw3MyBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25N
b2RlbFJlc291cmNlQmluZGluZy5wcm90b3R5cGUgPSB7CiAgICAgfQogfQogCisvKioKKyAqIEBj
b25zdHJ1Y3RvcgorICovCitXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5M
aW5raWZpZXIgPSBmdW5jdGlvbihtb2RlbCkKK3sKKyAgICB0aGlzLl9tb2RlbCA9IG1vZGVsOwor
ICAgIHRoaXMuX2FuY2hvcnNGb3JVUkwgPSB7fTsKK30KKworV2ViSW5zcGVjdG9yLkRlYnVnZ2Vy
UHJlc2VudGF0aW9uTW9kZWwuTGlua2lmaWVyLnByb3RvdHlwZSA9IHsKKyAgICBsaW5raWZ5TG9j
YXRpb246IGZ1bmN0aW9uKHNvdXJjZVVSTCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBjbGFz
c2VzKQorICAgIHsKKyAgICAgICAgdmFyIGxpbmtUZXh0ID0gV2ViSW5zcGVjdG9yLmZvcm1hdExp
bmtUZXh0KHNvdXJjZVVSTCwgbGluZU51bWJlcik7CisgICAgICAgIHZhciBhbmNob3IgPSBXZWJJ
bnNwZWN0b3IubGlua2lmeVVSTEFzTm9kZShzb3VyY2VVUkwsIGxpbmtUZXh0LCBjbGFzc2VzLCBm
YWxzZSk7CisgICAgICAgIGFuY2hvci5yYXdMb2NhdGlvbiA9IHsgbGluZU51bWJlcjogbGluZU51
bWJlciwgY29sdW1uTnVtYmVyOiBjb2x1bW5OdW1iZXIgfTsKKworICAgICAgICB2YXIgcmF3U291
cmNlQ29kZSA9IHRoaXMuX21vZGVsLl9yYXdTb3VyY2VDb2RlRm9yU2NyaXB0V2l0aFVSTChzb3Vy
Y2VVUkwpOworICAgICAgICBpZiAoIXJhd1NvdXJjZUNvZGUpIHsKKyAgICAgICAgICAgIGFuY2hv
ci5zZXRBdHRyaWJ1dGUoInByZWZlcnJlZF9wYW5lbCIsICJyZXNvdXJjZXMiKTsKKyAgICAgICAg
ICAgIGFuY2hvci5zZXRBdHRyaWJ1dGUoImxpbmVfbnVtYmVyIiwgbGluZU51bWJlcik7CisgICAg
ICAgICAgICByZXR1cm4gYW5jaG9yOworICAgICAgICB9CisKKyAgICAgICAgdmFyIGFuY2hvcnMg
PSB0aGlzLl9hbmNob3JzRm9yVVJMW3NvdXJjZVVSTF07CisgICAgICAgIGlmICghYW5jaG9ycykg
eworICAgICAgICAgICAgYW5jaG9ycyA9IFtdOworICAgICAgICAgICAgdGhpcy5fYW5jaG9yc0Zv
clVSTFtzb3VyY2VVUkxdID0gYW5jaG9yczsKKyAgICAgICAgICAgIHJhd1NvdXJjZUNvZGUuYWRk
RXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZS5FdmVudHMuU291cmNlTWFw
cGluZ1VwZGF0ZWQsIHRoaXMuX3VwZGF0ZVNvdXJjZUFuY2hvcnMsIHRoaXMpOworICAgICAgICB9
CisKKyAgICAgICAgaWYgKHJhd1NvdXJjZUNvZGUuc291cmNlTWFwcGluZykKKyAgICAgICAgICAg
IHRoaXMuX3VwZGF0ZUFuY2hvcihyYXdTb3VyY2VDb2RlLCBhbmNob3IpOworICAgICAgICBhbmNo
b3JzLnB1c2goYW5jaG9yKTsKKyAgICAgICAgcmV0dXJuIGFuY2hvcjsKKyAgICB9LAorCisgICAg
cmVzZXQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGZvciAodmFyIHNvdXJjZVVSTCBpbiB0
aGlzLl9hbmNob3JzRm9yVVJMKSB7CisgICAgICAgICAgICB2YXIgcmF3U291cmNlQ29kZSA9IHRo
aXMuX21vZGVsLl9yYXdTb3VyY2VDb2RlRm9yU2NyaXB0V2l0aFVSTChzb3VyY2VVUkwpOworICAg
ICAgICAgICAgaWYgKHJhd1NvdXJjZUNvZGUpCisgICAgICAgICAgICAgICAgcmF3U291cmNlQ29k
ZS5yZW1vdmVFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlLkV2ZW50cy5T
b3VyY2VNYXBwaW5nVXBkYXRlZCwgdGhpcy5fdXBkYXRlU291cmNlQW5jaG9ycywgdGhpcyk7Cisg
ICAgICAgIH0KKyAgICAgICAgdGhpcy5fYW5jaG9yc0ZvclVSTCA9IHt9OworICAgIH0sCisKKyAg
ICBfdXBkYXRlU291cmNlQW5jaG9yczogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICB2
YXIgcmF3U291cmNlQ29kZSA9IGV2ZW50LnRhcmdldDsKKyAgICAgICAgdmFyIGFuY2hvcnMgPSB0
aGlzLl9hbmNob3JzRm9yVVJMW3Jhd1NvdXJjZUNvZGUudXJsXTsKKyAgICAgICAgaWYgKCFhbmNo
b3JzKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
YW5jaG9ycy5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUFuY2hvcihyYXdT
b3VyY2VDb2RlLCBhbmNob3JzW2ldKTsKKyAgICB9LAorCisgICAgX3VwZGF0ZUFuY2hvcjogZnVu
Y3Rpb24ocmF3U291cmNlQ29kZSwgYW5jaG9yKQorICAgIHsKKyAgICAgICAgdmFyIHVpTG9jYXRp
b24gPSByYXdTb3VyY2VDb2RlLnNvdXJjZU1hcHBpbmcucmF3TG9jYXRpb25Ub1VJTG9jYXRpb24o
YW5jaG9yLnJhd0xvY2F0aW9uKTsKKyAgICAgICAgYW5jaG9yLnRleHRDb250ZW50ID0gV2ViSW5z
cGVjdG9yLmZvcm1hdExpbmtUZXh0KHVpTG9jYXRpb24udWlTb3VyY2VDb2RlLnVybCwgdWlMb2Nh
dGlvbi5saW5lTnVtYmVyKTsKKyAgICAgICAgYW5jaG9yLnNldEF0dHJpYnV0ZSgicHJlZmVycmVk
X3BhbmVsIiwgInNjcmlwdHMiKTsKKyAgICAgICAgYW5jaG9yLnVpU291cmNlQ29kZSA9IHVpTG9j
YXRpb24udWlTb3VyY2VDb2RlOworICAgICAgICBhbmNob3IubGluZU51bWJlciA9IHVpTG9jYXRp
b24ubGluZU51bWJlcjsKKyAgICB9Cit9CisKIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRh
dGlvbk1vZGVsUmVzb3VyY2VCaW5kaW5nLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0
b3IuUmVzb3VyY2VEb21haW5Nb2RlbEJpbmRpbmcucHJvdG90eXBlOwogCiAvKioKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRXZlbnRMaXN0ZW5lcnNTaWRl
YmFyUGFuZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRXZlbnRMaXN0
ZW5lcnNTaWRlYmFyUGFuZS5qcwppbmRleCAyZWI4NjQ5NjAxYmZjMzA0OGYwNWZlN2FkY2I1NmNi
NTIzOGZjM2RmLi43OTVlNmIxOGQ1MTNjNGYxNGViYmIyY2E2NTg1MTVlYzk2MGU0MWRjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0V2ZW50TGlzdGVuZXJz
U2lkZWJhclBhbmUuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9F
dmVudExpc3RlbmVyc1NpZGViYXJQYW5lLmpzCkBAIC01Niw2ICs1Niw4IEBAIFdlYkluc3BlY3Rv
ci5FdmVudExpc3RlbmVyc1NpZGViYXJQYW5lID0gZnVuY3Rpb24oKQogICAgIHRoaXMuc2V0dGlu
Z3NTZWxlY3RFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsIHRoaXMuX2NoYW5nZVNl
dHRpbmcuYmluZCh0aGlzKSwgZmFsc2UpOwogCiAgICAgdGhpcy50aXRsZUVsZW1lbnQuYXBwZW5k
Q2hpbGQodGhpcy5zZXR0aW5nc1NlbGVjdEVsZW1lbnQpOworCisgICAgdGhpcy5fbGlua2lmaWVy
ID0gV2ViSW5zcGVjdG9yLmRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuY3JlYXRlTGlua2lmaWVy
KCk7CiB9CiAKIFdlYkluc3BlY3Rvci5FdmVudExpc3RlbmVyc1NpZGViYXJQYW5lLl9vYmplY3RH
cm91cE5hbWUgPSAiZXZlbnQtbGlzdGVuZXJzLXNpZGViYXItcGFuZSI7CkBAIC02NCw2ICs2Niw4
IEBAIFdlYkluc3BlY3Rvci5FdmVudExpc3RlbmVyc1NpZGViYXJQYW5lLnByb3RvdHlwZSA9IHsK
ICAgICB1cGRhdGU6IGZ1bmN0aW9uKG5vZGUpCiAgICAgewogICAgICAgICBSdW50aW1lQWdlbnQu
cmVsZWFzZU9iamVjdEdyb3VwKFdlYkluc3BlY3Rvci5FdmVudExpc3RlbmVyc1NpZGViYXJQYW5l
Ll9vYmplY3RHcm91cE5hbWUpOworICAgICAgICB0aGlzLl9saW5raWZpZXIucmVzZXQoKTsKKwog
ICAgICAgICB2YXIgYm9keSA9IHRoaXMuYm9keUVsZW1lbnQ7CiAgICAgICAgIGJvZHkucmVtb3Zl
Q2hpbGRyZW4oKTsKICAgICAgICAgdGhpcy5zZWN0aW9ucyA9IFtdOwpAQCAtODQsNyArODgsNyBA
QCBXZWJJbnNwZWN0b3IuRXZlbnRMaXN0ZW5lcnNTaWRlYmFyUGFuZS5wcm90b3R5cGUgPSB7CiAg
ICAgICAgICAgICAgICAgdmFyIHR5cGUgPSBldmVudExpc3RlbmVyLnR5cGU7CiAgICAgICAgICAg
ICAgICAgdmFyIHNlY3Rpb24gPSBzZWN0aW9uTWFwW3R5cGVdOwogICAgICAgICAgICAgICAgIGlm
ICghc2VjdGlvbikgewotICAgICAgICAgICAgICAgICAgICBzZWN0aW9uID0gbmV3IFdlYkluc3Bl
Y3Rvci5FdmVudExpc3RlbmVyc1NlY3Rpb24odHlwZSwgbm9kZS5pZCk7CisgICAgICAgICAgICAg
ICAgICAgIHNlY3Rpb24gPSBuZXcgV2ViSW5zcGVjdG9yLkV2ZW50TGlzdGVuZXJzU2VjdGlvbih0
eXBlLCBub2RlLmlkLCBzZWxmLl9saW5raWZpZXIpOwogICAgICAgICAgICAgICAgICAgICBzZWN0
aW9uTWFwW3R5cGVdID0gc2VjdGlvbjsKICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbk5hbWVz
LnB1c2godHlwZSk7CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2VjdGlvbnMucHVzaChzZWN0
aW9uKTsKQEAgLTEyNCwxMCArMTI4LDExIEBAIFdlYkluc3BlY3Rvci5FdmVudExpc3RlbmVyc1Np
ZGViYXJQYW5lLnByb3RvdHlwZSA9IHsKIAogV2ViSW5zcGVjdG9yLkV2ZW50TGlzdGVuZXJzU2lk
ZWJhclBhbmUucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5TaWRlYmFyUGFuZS5w
cm90b3R5cGU7CiAKLVdlYkluc3BlY3Rvci5FdmVudExpc3RlbmVyc1NlY3Rpb24gPSBmdW5jdGlv
bih0aXRsZSwgbm9kZUlkKQorV2ViSW5zcGVjdG9yLkV2ZW50TGlzdGVuZXJzU2VjdGlvbiA9IGZ1
bmN0aW9uKHRpdGxlLCBub2RlSWQsIGxpbmtpZmllcikKIHsKICAgICB0aGlzLmV2ZW50TGlzdGVu
ZXJzID0gW107CiAgICAgdGhpcy5fbm9kZUlkID0gbm9kZUlkOworICAgIHRoaXMuX2xpbmtpZmll
ciA9IGxpbmtpZmllcjsKICAgICBXZWJJbnNwZWN0b3IuUHJvcGVydGllc1NlY3Rpb24uY2FsbCh0
aGlzLCB0aXRsZSk7CiAKICAgICAvLyBDaGFuZ2VkIGZyb20gYSBQcm9wZXJ0aWVzIExpc3QKQEAg
LTE1OCw3ICsxNjMsNyBAQCBXZWJJbnNwZWN0b3IuRXZlbnRMaXN0ZW5lcnNTZWN0aW9uLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgdmFyIGxlbmd0aCA9IGZpbHRlcmVkRXZlbnRMaXN0ZW5lcnMubGVu
Z3RoOwogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CiAgICAgICAg
ICAgICB2YXIgZXZlbnRMaXN0ZW5lciA9IGZpbHRlcmVkRXZlbnRMaXN0ZW5lcnNbaV07Ci0gICAg
ICAgICAgICB2YXIgZXZlbnRMaXN0ZW5lckJhciA9IG5ldyBXZWJJbnNwZWN0b3IuRXZlbnRMaXN0
ZW5lckJhcihldmVudExpc3RlbmVyLCB0aGlzLl9ub2RlSWQpOworICAgICAgICAgICAgdmFyIGV2
ZW50TGlzdGVuZXJCYXIgPSBuZXcgV2ViSW5zcGVjdG9yLkV2ZW50TGlzdGVuZXJCYXIoZXZlbnRM
aXN0ZW5lciwgdGhpcy5fbm9kZUlkLCB0aGlzLl9saW5raWZpZXIpOwogICAgICAgICAgICAgdGhp
cy5ldmVudEJhcnMuYXBwZW5kQ2hpbGQoZXZlbnRMaXN0ZW5lckJhci5lbGVtZW50KTsKICAgICAg
ICAgfQogICAgIH0sCkBAIC0xNzEsMTMgKzE3NiwxMyBAQCBXZWJJbnNwZWN0b3IuRXZlbnRMaXN0
ZW5lcnNTZWN0aW9uLnByb3RvdHlwZSA9IHsKIAogV2ViSW5zcGVjdG9yLkV2ZW50TGlzdGVuZXJz
U2VjdGlvbi5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLlByb3BlcnRpZXNTZWN0
aW9uLnByb3RvdHlwZTsKIAotV2ViSW5zcGVjdG9yLkV2ZW50TGlzdGVuZXJCYXIgPSBmdW5jdGlv
bihldmVudExpc3RlbmVyLCBub2RlSWQpCitXZWJJbnNwZWN0b3IuRXZlbnRMaXN0ZW5lckJhciA9
IGZ1bmN0aW9uKGV2ZW50TGlzdGVuZXIsIG5vZGVJZCwgbGlua2lmaWVyKQogewogICAgIHRoaXMu
ZXZlbnRMaXN0ZW5lciA9IGV2ZW50TGlzdGVuZXI7CiAgICAgdGhpcy5fbm9kZUlkID0gbm9kZUlk
OwogICAgIFdlYkluc3BlY3Rvci5PYmplY3RQcm9wZXJ0aWVzU2VjdGlvbi5jYWxsKHRoaXMpOwog
ICAgIHRoaXMuX3NldE5vZGVUaXRsZSgpOwotICAgIHRoaXMuX3NldEZ1bmN0aW9uU3VidGl0bGUo
KTsKKyAgICB0aGlzLl9zZXRGdW5jdGlvblN1YnRpdGxlKGxpbmtpZmllcik7CiAgICAgdGhpcy5l
ZGl0YWJsZSA9IGZhbHNlOwogICAgIHRoaXMuZWxlbWVudC5jbGFzc05hbWUgPSAiZXZlbnQtYmFy
IjsgLyogQ2hhbmdlZCBmcm9tICJzZWN0aW9uIiAqLwogICAgIHRoaXMuaGVhZGVyRWxlbWVudC5h
ZGRTdHlsZUNsYXNzKCJzb3VyY2UtY29kZSIpOwpAQCAtMjMxLDcgKzIzNiw3IEBAIFdlYkluc3Bl
Y3Rvci5FdmVudExpc3RlbmVyQmFyLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy50aXRsZUVs
ZW1lbnQuYXBwZW5kQ2hpbGQoV2ViSW5zcGVjdG9yLnBhbmVscy5lbGVtZW50cy5saW5raWZ5Tm9k
ZVJlZmVyZW5jZSh0aGlzLmV2ZW50TGlzdGVuZXIubm9kZSkpOwogICAgIH0sCiAKLSAgICBfc2V0
RnVuY3Rpb25TdWJ0aXRsZTogZnVuY3Rpb24oKQorICAgIF9zZXRGdW5jdGlvblN1YnRpdGxlOiBm
dW5jdGlvbihsaW5raWZpZXIpCiAgICAgewogICAgICAgICAvLyBSZXF1aXJlcyB0aGF0IEZ1bmN0
aW9uLnRvU3RyaW5nKCkgcmV0dXJuIGF0IGxlYXN0IHRoZSBmdW5jdGlvbidzIHNpZ25hdHVyZS4K
ICAgICAgICAgaWYgKHRoaXMuZXZlbnRMaXN0ZW5lci5sb2NhdGlvbikgewpAQCAtMjQwLDcgKzI0
NSw3IEBAIFdlYkluc3BlY3Rvci5FdmVudExpc3RlbmVyQmFyLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgICAgIHZhciB1cmwgPSB0aGlzLmV2ZW50TGlzdGVuZXIubG9jYXRpb24uc2NyaXB0SWQ7CiAg
ICAgICAgICAgICB2YXIgbGluZU51bWJlciA9IHRoaXMuZXZlbnRMaXN0ZW5lci5sb2NhdGlvbi5s
aW5lTnVtYmVyIC0gMTsKICAgICAgICAgICAgIHZhciBjb2x1bW5OdW1iZXIgPSAwOwotICAgICAg
ICAgICAgdmFyIHVybEVsZW1lbnQgPSBXZWJJbnNwZWN0b3IuZGVidWdnZXJQcmVzZW50YXRpb25N
b2RlbC5saW5raWZ5TG9jYXRpb24odXJsLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpOworICAg
ICAgICAgICAgdmFyIHVybEVsZW1lbnQgPSBsaW5raWZpZXIubGlua2lmeUxvY2F0aW9uKHVybCwg
bGluZU51bWJlciwgY29sdW1uTnVtYmVyKTsKICAgICAgICAgICAgIHRoaXMuc3VidGl0bGVFbGVt
ZW50LmFwcGVuZENoaWxkKHVybEVsZW1lbnQpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgdmFyIG1hdGNoID0gdGhpcy5ldmVudExpc3RlbmVyLmhhbmRsZXJCb2R5Lm1hdGNoKC9mdW5j
dGlvbiAoW15cKF0rPylcKC8pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9OZXR3b3JrUGFuZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL05ldHdvcmtQYW5lbC5qcwppbmRleCAzYWExZjc2NDhmZWU2MGEyYWIyNWU1NGExZmY3
ZmQ1Y2Q3YjgzOWRlLi4yNDBmYWM4MDQ5ZDM2M2E0MjQ0ZTkyOWMyOWJmZmIyMThlNWU5NjA2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtQYW5l
bC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtQYW5l
bC5qcwpAQCAtNTYsNiArNTYsNyBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya0xvZ1ZpZXcgPSBmdW5j
dGlvbihwYXJlbnRFbGVtZW50KQogCiAgICAgdGhpcy5fY3JlYXRlU3RhdHVzYmFyQnV0dG9ucygp
OwogICAgIHRoaXMuX2NyZWF0ZUZpbHRlclN0YXR1c0Jhckl0ZW1zKCk7CisgICAgdGhpcy5fbGlu
a2lmaWVyID0gV2ViSW5zcGVjdG9yLmRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuY3JlYXRlTGlu
a2lmaWVyKCk7CiAKICAgICBXZWJJbnNwZWN0b3IubmV0d29ya01hbmFnZXIuYWRkRXZlbnRMaXN0
ZW5lcihXZWJJbnNwZWN0b3IuTmV0d29ya01hbmFnZXIuRXZlbnRUeXBlcy5SZXNvdXJjZVN0YXJ0
ZWQsIHRoaXMuX29uUmVzb3VyY2VTdGFydGVkLCB0aGlzKTsKICAgICBXZWJJbnNwZWN0b3IubmV0
d29ya01hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuTmV0d29ya01hbmFnZXIu
RXZlbnRUeXBlcy5SZXNvdXJjZVVwZGF0ZWQsIHRoaXMuX29uUmVzb3VyY2VVcGRhdGVkLCB0aGlz
KTsKQEAgLTczNSw3ICs3MzYsNyBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya0xvZ1ZpZXcucHJvdG90
eXBlID0gewogCiAgICAgICAgIHRoaXMuX21haW5SZXNvdXJjZUxvYWRUaW1lID0gLTE7CiAgICAg
ICAgIHRoaXMuX21haW5SZXNvdXJjZURPTUNvbnRlbnRUaW1lID0gLTE7Ci0KKyAgICAgICAgdGhp
cy5fbGlua2lmaWVyLnJlc2V0KCk7CiAgICAgfSwKIAogICAgIGdldCByZXNvdXJjZXMoKQpAQCAt
MjA0NSw3ICsyMDQ2LDcgQEAgV2ViSW5zcGVjdG9yLk5ldHdvcmtEYXRhR3JpZE5vZGUucHJvdG90
eXBlID0gewogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgIHRoaXMuX2luaXRpYXRvckNlbGwudGl0bGUgPSB0b3BGcmFtZS51cmwg
KyAiOiIgKyB0b3BGcmFtZS5saW5lTnVtYmVyOwotICAgICAgICAgICAgICAgIHZhciB1cmxFbGVt
ZW50ID0gV2ViSW5zcGVjdG9yLmRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwubGlua2lmeUxvY2F0
aW9uKHRvcEZyYW1lLnVybCwgdG9wRnJhbWUubGluZU51bWJlciAtIDEsIDApOworICAgICAgICAg
ICAgICAgIHZhciB1cmxFbGVtZW50ID0gdGhpcy5fcGFyZW50Vmlldy5fbGlua2lmaWVyLmxpbmtp
ZnlMb2NhdGlvbih0b3BGcmFtZS51cmwsIHRvcEZyYW1lLmxpbmVOdW1iZXIgLSAxLCAwKTsKICAg
ICAgICAgICAgICAgICB0aGlzLl9pbml0aWF0b3JDZWxsLmFwcGVuZENoaWxkKHVybEVsZW1lbnQp
OwogICAgICAgICAgICAgICAgIHRoaXMuX2FwcGVuZFN1YnRpdGxlKHRoaXMuX2luaXRpYXRvckNl
bGwsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2NyaXB0IikpOwogICAgICAgICAgICAgfSBlbHNl
IHsgLy8gaW5pdGlhdG9yLnR5cGUgPT09ICJwYXJzZXIiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVEYXRhR3JpZFRyZWUuanMgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVEYXRhR3JpZFRyZWUuanMKaW5kZXgg
NTg1NTY4YzNhYmEwNjk4MWNlYzg1MjlmMTE0MmI5MGYyNjQzYjg3ZS4uY2Y0MGJjMjZlNzkwOTMw
NTNmZDc5MmIzNzM3NTI4YjM0OWFmYjRmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlRGF0YUdyaWRUcmVlLmpzCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUHJvZmlsZURhdGFHcmlkVHJlZS5qcwpAQCAtOTgsNyAr
OTgsNyBAQCBXZWJJbnNwZWN0b3IuUHJvZmlsZURhdGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIGlmICh0aGlzLnByb2ZpbGVOb2RlLnVybCkgewogICAgICAgICAgICAgLy8gRklYTUUo
NjI3MjUpOiBwcm9maWxlTm9kZSBzaG91bGQgcmVmZXJlbmNlIGEgZGVidWdnZXIgbG9jYXRpb24u
CiAgICAgICAgICAgICB2YXIgbGluZU51bWJlciA9IHRoaXMucHJvZmlsZU5vZGUubGluZU51bWJl
ciA/IHRoaXMucHJvZmlsZU5vZGUubGluZU51bWJlciAtIDEgOiAwOwotICAgICAgICAgICAgdmFy
IHVybEVsZW1lbnQgPSBXZWJJbnNwZWN0b3IuZGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5saW5r
aWZ5TG9jYXRpb24odGhpcy5wcm9maWxlTm9kZS51cmwsIGxpbmVOdW1iZXIsIDAsICJwcm9maWxl
LW5vZGUtZmlsZSIpOworICAgICAgICAgICAgdmFyIHVybEVsZW1lbnQgPSB0aGlzLnByb2ZpbGVW
aWV3Ll9saW5raWZpZXIubGlua2lmeUxvY2F0aW9uKHRoaXMucHJvZmlsZU5vZGUudXJsLCBsaW5l
TnVtYmVyLCAwLCAicHJvZmlsZS1ub2RlLWZpbGUiKTsKICAgICAgICAgICAgIHVybEVsZW1lbnQu
c3R5bGUubWF4V2lkdGggPSAiNzUlIjsKICAgICAgICAgICAgIGNlbGwuaW5zZXJ0QmVmb3JlKHVy
bEVsZW1lbnQsIGNlbGwuZmlyc3RDaGlsZCk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUHJvZmlsZVZpZXcuanMgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVWaWV3LmpzCmluZGV4IDJhMDNmODMwNTFk
YTU0MWVmZTQxNDA5YzExYmRkMmFlODk0MzFjZTIuLjA4NmVmYTRlY2FkNTI1MjAwOTg1NmFiMGE2
MDBiODliYzQxYjFlMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvUHJvZmlsZVZpZXcuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9Qcm9maWxlVmlldy5qcwpAQCAtOTYsNiArOTYsOCBAQCBXZWJJbnNwZWN0b3IuQ1BVUHJv
ZmlsZVZpZXcgPSBmdW5jdGlvbihwcm9maWxlKQogICAgICAgICBzZWxmLl91cGRhdGVQZXJjZW50
QnV0dG9uKCk7CiAgICAgfQogCisgICAgdGhpcy5fbGlua2lmaWVyID0gV2ViSW5zcGVjdG9yLmRl
YnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuY3JlYXRlTGlua2lmaWVyKCk7CisKICAgICBQcm9maWxl
ckFnZW50LmdldFByb2ZpbGUodGhpcy5wcm9maWxlLnR5cGVJZCwgdGhpcy5wcm9maWxlLnVpZCwg
cHJvZmlsZUNhbGxiYWNrKTsKIH0KIApAQCAtNDg1LDYgKzQ4Nyw3IEBAIFdlYkluc3BlY3Rvci5D
UFVQcm9maWxlVmlldy5wcm90b3R5cGUgPSB7CiAgICAgewogICAgICAgICB0aGlzLnJlc2V0QnV0
dG9uLnZpc2libGUgPSBmYWxzZTsKICAgICAgICAgdGhpcy5wcm9maWxlRGF0YUdyaWRUcmVlLnJl
c3RvcmUoKTsKKyAgICAgICAgdGhpcy5fbGlua2lmaWVyLnJlc2V0KCk7CiAgICAgICAgIHRoaXMu
cmVmcmVzaCgpOwogICAgICAgICB0aGlzLnJlZnJlc2hWaXNpYmxlRGF0YSgpOwogICAgIH0sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lUGFu
ZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lUGFuZWwu
anMKaW5kZXggMTU1MTdjZTYzOTdkZjRlNTViNjY1MDA1NzYwZTIzMGUzYTBmMzgzNC4uMzY5ODFj
MjhhNTA5NzY5ZGViOTg4NWY4ZmQxZjllYmU3NjFhMjRjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZVBhbmVsLmpzCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVQYW5lbC5qcwpAQCAtMTA5LDYgKzEw
OSw3IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsID0gZnVuY3Rpb24oKQogCiAgICAgdGhp
cy5fcmVnaXN0ZXJTaG9ydGN1dHMoKTsKICAgICBXZWJJbnNwZWN0b3IudGltZWxpbmVNYW5hZ2Vy
LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRpbWVsaW5lTWFuYWdlci5FdmVudFR5cGVz
LlRpbWVsaW5lRXZlbnRSZWNvcmRlZCwgdGhpcy5fb25UaW1lbGluZUV2ZW50UmVjb3JkZWQsIHRo
aXMpOworICAgIHRoaXMuX2xpbmtpZmllciA9IFdlYkluc3BlY3Rvci5kZWJ1Z2dlclByZXNlbnRh
dGlvbk1vZGVsLmNyZWF0ZUxpbmtpZmllcigpOwogfQogCiAvLyBEZWZpbmUgcm93IGhlaWdodCwg
c2hvdWxkIGJlIGluIHN5bmMgd2l0aCBzdHlsZXMgZm9yIHRpbWVsaW5lIGdyYXBocy4KQEAgLTEx
Niw2ICsxMTcsMTkgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwucm93SGVpZ2h0ID0gMTg7
CiBXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5zaG9ydFJlY29yZFRocmVzaG9sZCA9IDAuMDE1
OwogCiBXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5wcm90b3R5cGUgPSB7CisgICAgX2xpbmtp
ZnlMb2NhdGlvbjogZnVuY3Rpb24odXJsLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCisgICAg
eworICAgICAgICAvLyBGSVhNRSg2MjcyNSk6IHN0YWNrIHRyYWNlIGxpbmUvY29sdW1uIG51bWJl
cnMgYXJlIG9uZS1iYXNlZC4KKyAgICAgICAgbGluZU51bWJlciA9IGxpbmVOdW1iZXIgPyBsaW5l
TnVtYmVyIC0gMSA6IGxpbmVOdW1iZXI7CisgICAgICAgIGNvbHVtbk51bWJlciA9IGNvbHVtbk51
bWJlciA/IGNvbHVtbk51bWJlciAtIDEgOiAwOworICAgICAgICByZXR1cm4gdGhpcy5fbGlua2lm
aWVyLmxpbmtpZnlMb2NhdGlvbih1cmwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgInRpbWVs
aW5lLWRldGFpbHMiKTsKKyAgICB9LAorCisgICAgX2xpbmtpZnlDYWxsRnJhbWU6IGZ1bmN0aW9u
KGNhbGxGcmFtZSkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9saW5raWZ5TG9jYXRpb24o
Y2FsbEZyYW1lLnVybCwgY2FsbEZyYW1lLmxpbmVOdW1iZXIsIGNhbGxGcmFtZS5jb2x1bW5OdW1i
ZXIpOworICAgIH0sCisKICAgICBfY3JlYXRlVG9wUGFuZTogZnVuY3Rpb24oKSB7CiAgICAgICAg
IHZhciB0b3BQYW5lRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAg
ICAgICB0b3BQYW5lRWxlbWVudC5pZCA9ICJ0aW1lbGluZS1vdmVydmlldy1wYW5lbCI7CkBAIC01
MjgsNiArNTQyLDcgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwucHJvdG90eXBlID0gewog
ICAgICAgICB0aGlzLl9yZWZyZXNoKCk7CiAgICAgICAgIHRoaXMuX2Nsb3NlUmVjb3JkRGV0YWls
cygpOwogICAgICAgICB0aGlzLl9tb2RlbC5fcmVzZXQoKTsKKyAgICAgICAgdGhpcy5fbGlua2lm
aWVyLnJlc2V0KCk7CiAgICAgfSwKIAogICAgIGVsZW1lbnRzVG9SZXN0b3JlU2Nyb2xsUG9zaXRp
b25zRm9yOiBmdW5jdGlvbigpCkBAIC05NjEsNiArOTc2LDcgQEAgV2ViSW5zcGVjdG9yLlRpbWVs
aW5lUmVjb3JkR3JhcGhSb3cucHJvdG90eXBlID0gewogCiBXZWJJbnNwZWN0b3IuVGltZWxpbmVQ
YW5lbC5Gb3JtYXR0ZWRSZWNvcmQgPSBmdW5jdGlvbihyZWNvcmQsIHBhcmVudFJlY29yZCwgcGFu
ZWwsIHNjcmlwdERldGFpbHMpCiB7CisgICAgdGhpcy5fcGFuZWwgPSBwYW5lbDsKICAgICB2YXIg
cmVjb3JkVHlwZXMgPSBXZWJJbnNwZWN0b3IuVGltZWxpbmVBZ2VudC5SZWNvcmRUeXBlOwogICAg
IHZhciBzdHlsZSA9IHBhbmVsLl9yZWNvcmRTdHlsZXNbcmVjb3JkLnR5cGVdOwogICAgIHRoaXMu
cGFyZW50ID0gcGFyZW50UmVjb3JkOwpAQCAtMTA1MSw3ICsxMDY3LDcgQEAgV2ViSW5zcGVjdG9y
LlRpbWVsaW5lUGFuZWwuRm9ybWF0dGVkUmVjb3JkLnByb3RvdHlwZSA9IHsKIAogICAgIF9nZW5l
cmF0ZVBvcHVwQ29udGVudDogZnVuY3Rpb24oY2FsY3VsYXRvciwgY2F0ZWdvcmllcykKICAgICB7
Ci0gICAgICAgIHZhciBjb250ZW50SGVscGVyID0gbmV3IFdlYkluc3BlY3Rvci5UaW1lbGluZVBh
bmVsLlBvcHVwQ29udGVudEhlbHBlcih0aGlzLnRpdGxlKTsKKyAgICAgICAgdmFyIGNvbnRlbnRI
ZWxwZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwuUG9wdXBDb250ZW50SGVscGVy
KHRoaXMudGl0bGUsIHRoaXMuX3BhbmVsKTsKIAogICAgICAgICBpZiAodGhpcy5fY2hpbGRyZW4g
JiYgdGhpcy5fY2hpbGRyZW4ubGVuZ3RoKSB7CiAgICAgICAgICAgICBjb250ZW50SGVscGVyLl9h
cHBlbmRUZXh0Um93KFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2VsZiBUaW1lIiksIE51bWJlci5z
ZWNvbmRzVG9TdHJpbmcodGhpcy5fc2VsZlRpbWUgKyAwLjAwMDEpKTsKQEAgLTExMzYsMjYgKzEx
NTIsMjYgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwuRm9ybWF0dGVkUmVjb3JkLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRpbWVsaW5lQWdlbnQuUmVj
b3JkVHlwZS5HQ0V2ZW50OgogICAgICAgICAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIiVzIGNvbGxlY3RlZCIsIE51bWJlci5ieXRlc1RvU3RyaW5nKHRoaXMuZGF0YS51c2Vk
SGVhcFNpemVEZWx0YSkpOwogICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuVGltZWxpbmVB
Z2VudC5SZWNvcmRUeXBlLlRpbWVyRmlyZToKLSAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5z
Y3JpcHROYW1lID8gdGhpcy5fbGlua2lmeUxvY2F0aW9uKHRoaXMuc2NyaXB0TmFtZSwgdGhpcy5z
Y3JpcHRMaW5lLCAwKSA6IHRoaXMuZGF0YS50aW1lcklkOworICAgICAgICAgICAgICAgIHJldHVy
biB0aGlzLnNjcmlwdE5hbWUgPyB0aGlzLl9wYW5lbC5fbGlua2lmeUxvY2F0aW9uKHRoaXMuc2Ny
aXB0TmFtZSwgdGhpcy5zY3JpcHRMaW5lLCAwKSA6IHRoaXMuZGF0YS50aW1lcklkOwogICAgICAg
ICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuVGltZWxpbmVBZ2VudC5SZWNvcmRUeXBlLkZ1bmN0aW9u
Q2FsbDoKLSAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zY3JpcHROYW1lID8gdGhpcy5fbGlu
a2lmeUxvY2F0aW9uKHRoaXMuc2NyaXB0TmFtZSwgdGhpcy5zY3JpcHRMaW5lLCAwKSA6IG51bGw7
CisgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2NyaXB0TmFtZSA/IHRoaXMuX3BhbmVsLl9s
aW5raWZ5TG9jYXRpb24odGhpcy5zY3JpcHROYW1lLCB0aGlzLnNjcmlwdExpbmUsIDApIDogbnVs
bDsKICAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRpbWVsaW5lQWdlbnQuUmVjb3JkVHlw
ZS5GaXJlQW5pbWF0aW9uRnJhbWVFdmVudDoKLSAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5z
Y3JpcHROYW1lID8gdGhpcy5fbGlua2lmeUxvY2F0aW9uKHRoaXMuc2NyaXB0TmFtZSwgdGhpcy5z
Y3JpcHRMaW5lLCAwKSA6IHRoaXMuZGF0YS5pZDsKKyAgICAgICAgICAgICAgICByZXR1cm4gdGhp
cy5zY3JpcHROYW1lID8gdGhpcy5fcGFuZWwuX2xpbmtpZnlMb2NhdGlvbih0aGlzLnNjcmlwdE5h
bWUsIHRoaXMuc2NyaXB0TGluZSwgMCkgOiB0aGlzLmRhdGEuaWQ7CiAgICAgICAgICAgICBjYXNl
IFdlYkluc3BlY3Rvci5UaW1lbGluZUFnZW50LlJlY29yZFR5cGUuRXZlbnREaXNwYXRjaDoKICAg
ICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kYXRhID8gdGhpcy5kYXRhLnR5cGUgOiBudWxsOwog
ICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuVGltZWxpbmVBZ2VudC5SZWNvcmRUeXBlLlBh
aW50OgogICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRhdGEud2lkdGggKyAiXHUyMDA5XHUw
MGQ3XHUyMDA5IiArIHRoaXMuZGF0YS5oZWlnaHQ7CiAgICAgICAgICAgICBjYXNlIFdlYkluc3Bl
Y3Rvci5UaW1lbGluZUFnZW50LlJlY29yZFR5cGUuVGltZXJJbnN0YWxsOgogICAgICAgICAgICAg
Y2FzZSBXZWJJbnNwZWN0b3IuVGltZWxpbmVBZ2VudC5SZWNvcmRUeXBlLlRpbWVyUmVtb3ZlOgot
ICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnN0YWNrVHJhY2UgPyB0aGlzLl9saW5raWZ5Q2Fs
bEZyYW1lKHRoaXMuc3RhY2tUcmFjZVswXSkgOiB0aGlzLmRhdGEudGltZXJJZDsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gdGhpcy5zdGFja1RyYWNlID8gdGhpcy5fcGFuZWwuX2xpbmtpZnlDYWxs
RnJhbWUodGhpcy5zdGFja1RyYWNlWzBdKSA6IHRoaXMuZGF0YS50aW1lcklkOwogICAgICAgICAg
ICAgY2FzZSBXZWJJbnNwZWN0b3IuVGltZWxpbmVBZ2VudC5SZWNvcmRUeXBlLlJlZ2lzdGVyQW5p
bWF0aW9uRnJhbWVDYWxsYmFjazoKICAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRpbWVs
aW5lQWdlbnQuUmVjb3JkVHlwZS5DYW5jZWxBbmltYXRpb25GcmFtZUNhbGxiYWNrOgotICAgICAg
ICAgICAgICAgIHJldHVybiB0aGlzLnN0YWNrVHJhY2UgPyB0aGlzLl9saW5raWZ5Q2FsbEZyYW1l
KHRoaXMuc3RhY2tUcmFjZVswXSkgOiB0aGlzLmRhdGEuaWQ7CisgICAgICAgICAgICAgICAgcmV0
dXJuIHRoaXMuc3RhY2tUcmFjZSA/IHRoaXMuX3BhbmVsLl9saW5raWZ5Q2FsbEZyYW1lKHRoaXMu
c3RhY2tUcmFjZVswXSkgOiB0aGlzLmRhdGEuaWQ7CiAgICAgICAgICAgICBjYXNlIFdlYkluc3Bl
Y3Rvci5UaW1lbGluZUFnZW50LlJlY29yZFR5cGUuUGFyc2VIVE1MOgogICAgICAgICAgICAgY2Fz
ZSBXZWJJbnNwZWN0b3IuVGltZWxpbmVBZ2VudC5SZWNvcmRUeXBlLlJlY2FsY3VsYXRlU3R5bGVz
OgotICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnN0YWNrVHJhY2UgPyB0aGlzLl9saW5raWZ5
Q2FsbEZyYW1lKHRoaXMuc3RhY2tUcmFjZVswXSkgOiBudWxsOworICAgICAgICAgICAgICAgIHJl
dHVybiB0aGlzLnN0YWNrVHJhY2UgPyB0aGlzLl9wYW5lbC5fbGlua2lmeUNhbGxGcmFtZSh0aGlz
LnN0YWNrVHJhY2VbMF0pIDogbnVsbDsKICAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRp
bWVsaW5lQWdlbnQuUmVjb3JkVHlwZS5FdmFsdWF0ZVNjcmlwdDoKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gdGhpcy51cmwgPyB0aGlzLl9saW5raWZ5TG9jYXRpb24odGhpcy51cmwsIHRoaXMuZGF0
YS5saW5lTnVtYmVyLCAwKSA6IG51bGw7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudXJs
ID8gdGhpcy5fcGFuZWwuX2xpbmtpZnlMb2NhdGlvbih0aGlzLnVybCwgdGhpcy5kYXRhLmxpbmVO
dW1iZXIsIDApIDogbnVsbDsKICAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRpbWVsaW5l
QWdlbnQuUmVjb3JkVHlwZS5YSFJSZWFkeVN0YXRlQ2hhbmdlOgogICAgICAgICAgICAgY2FzZSBX
ZWJJbnNwZWN0b3IuVGltZWxpbmVBZ2VudC5SZWNvcmRUeXBlLlhIUkxvYWQ6CiAgICAgICAgICAg
ICBjYXNlIFdlYkluc3BlY3Rvci5UaW1lbGluZUFnZW50LlJlY29yZFR5cGUuU2NoZWR1bGVSZXNv
dXJjZVJlcXVlc3Q6CkBAIC0xMTcxLDE5ICsxMTg3LDYgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5l
UGFuZWwuRm9ybWF0dGVkUmVjb3JkLnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogICAgIH0sCiAK
LSAgICBfbGlua2lmeUxvY2F0aW9uOiBmdW5jdGlvbih1cmwsIGxpbmVOdW1iZXIsIGNvbHVtbk51
bWJlcikKLSAgICB7Ci0gICAgICAgIC8vIEZJWE1FKDYyNzI1KTogc3RhY2sgdHJhY2UgbGluZS9j
b2x1bW4gbnVtYmVycyBhcmUgb25lLWJhc2VkLgotICAgICAgICBsaW5lTnVtYmVyID0gbGluZU51
bWJlciA/IGxpbmVOdW1iZXIgLSAxIDogbGluZU51bWJlcjsKLSAgICAgICAgY29sdW1uTnVtYmVy
ID0gY29sdW1uTnVtYmVyID8gY29sdW1uTnVtYmVyIC0gMSA6IDA7Ci0gICAgICAgIHJldHVybiBX
ZWJJbnNwZWN0b3IuZGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5saW5raWZ5TG9jYXRpb24odXJs
LCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsICJ0aW1lbGluZS1kZXRhaWxzIik7Ci0gICAgfSwK
LQotICAgIF9saW5raWZ5Q2FsbEZyYW1lOiBmdW5jdGlvbihjYWxsRnJhbWUpCi0gICAgewotICAg
ICAgICByZXR1cm4gdGhpcy5fbGlua2lmeUxvY2F0aW9uKGNhbGxGcmFtZS51cmwsIGNhbGxGcmFt
ZS5saW5lTnVtYmVyLCBjYWxsRnJhbWUuY29sdW1uTnVtYmVyKTsKLSAgICB9LAotCiAgICAgX2Nh
bGN1bGF0ZUFnZ3JlZ2F0ZWRTdGF0czogZnVuY3Rpb24oY2F0ZWdvcmllcykKICAgICB7CiAgICAg
ICAgIHRoaXMuX2FnZ3JlZ2F0ZWRTdGF0cyA9IHt9OwpAQCAtMTIwNCw4ICsxMjA3LDkgQEAgV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwuRm9ybWF0dGVkUmVjb3JkLnByb3RvdHlwZSA9IHsKICAg
ICB9CiB9CiAKLVdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLlBvcHVwQ29udGVudEhlbHBlciA9
IGZ1bmN0aW9uKHRpdGxlKQorV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwuUG9wdXBDb250ZW50
SGVscGVyID0gZnVuY3Rpb24odGl0bGUsIHBhbmVsKQogeworICAgIHRoaXMuX3BhbmVsID0gcGFu
ZWw7CiAgICAgdGhpcy5fY29udGVudFRhYmxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGFi
bGUiKTs7CiAgICAgdmFyIHRpdGxlQ2VsbCA9IHRoaXMuX2NyZWF0ZUNlbGwoV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCIlcyAtIERldGFpbHMiLCB0aXRsZSksICJ0aW1lbGluZS1kZXRhaWxzLXRpdGxl
Iik7CiAgICAgdGl0bGVDZWxsLmNvbFNwYW4gPSAyOwpAQCAtMTI1MSw3ICsxMjU1LDcgQEAgV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwuUG9wdXBDb250ZW50SGVscGVyLnByb3RvdHlwZSA9IHsK
IAogICAgIF9hcHBlbmRMaW5rUm93OiBmdW5jdGlvbih0aXRsZSwgc2NyaXB0TmFtZSwgc2NyaXB0
TGluZSkKICAgICB7Ci0gICAgICAgIHZhciBsaW5rID0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFu
ZWwuRm9ybWF0dGVkUmVjb3JkLnByb3RvdHlwZS5fbGlua2lmeUxvY2F0aW9uKHNjcmlwdE5hbWUs
IHNjcmlwdExpbmUsIDAsICJ0aW1lbGluZS1kZXRhaWxzIik7CisgICAgICAgIHZhciBsaW5rID0g
dGhpcy5fcGFuZWwuX2xpbmtpZnlMb2NhdGlvbihzY3JpcHROYW1lLCBzY3JpcHRMaW5lLCAwLCAi
dGltZWxpbmUtZGV0YWlscyIpOwogICAgICAgICB0aGlzLl9hcHBlbmRFbGVtZW50Um93KHRpdGxl
LCBsaW5rKTsKICAgICB9LAogCkBAIC0xMjY2LDcgKzEyNzAsNyBAQCBXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVQYW5lbC5Qb3B1cENvbnRlbnRIZWxwZXIucHJvdG90eXBlID0gewogICAgICAgICAgICAg
cm93LmFwcGVuZENoaWxkKHRoaXMuX2NyZWF0ZUNlbGwoc3RhY2tGcmFtZS5mdW5jdGlvbk5hbWUg
PyBzdGFja0ZyYW1lLmZ1bmN0aW9uTmFtZSA6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiKGFub255
bW91cyBmdW5jdGlvbikiKSwgInRpbWVsaW5lLWZ1bmN0aW9uLW5hbWUiKSk7CiAgICAgICAgICAg
ICByb3cuYXBwZW5kQ2hpbGQodGhpcy5fY3JlYXRlQ2VsbCgiIEAgIikpOwogICAgICAgICAgICAg
dmFyIGxpbmtDZWxsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGQiKTsKLSAgICAgICAgICAg
IHZhciB1cmxFbGVtZW50ID0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwuRm9ybWF0dGVkUmVj
b3JkLnByb3RvdHlwZS5fbGlua2lmeUNhbGxGcmFtZShzdGFja0ZyYW1lKTsKKyAgICAgICAgICAg
IHZhciB1cmxFbGVtZW50ID0gdGhpcy5fcGFuZWwuX2xpbmtpZnlDYWxsRnJhbWUoc3RhY2tGcmFt
ZSk7CiAgICAgICAgICAgICBsaW5rQ2VsbC5hcHBlbmRDaGlsZCh1cmxFbGVtZW50KTsKICAgICAg
ICAgICAgIHJvdy5hcHBlbmRDaGlsZChsaW5rQ2VsbCk7CiAgICAgICAgICAgICBmcmFtZXNUYWJs
ZS5hcHBlbmRDaGlsZChyb3cpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9pbnNwZWN0b3IuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL2luc3BlY3Rvci5qcwppbmRleCAxY2U5ZTk5MTc2OGYxYmQ1NTU1ZGVlYmNmNGRhN2ZkMzVk
NzE1NmFiLi5iNzRjNmFjNjMzNGVkNDVkODg5YzUwMGZmNjE0MGFjOGNjMzQ3ZTZmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcwpAQCAtNTA5
LDYgKzUwOSw5IEBAIFdlYkluc3BlY3Rvci5kb0xvYWRlZERvbmUgPSBmdW5jdGlvbigpCiAgICAg
dGhpcy5jb25zb2xlLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNvbnNvbGVNb2RlbC5F
dmVudHMuTWVzc2FnZUFkZGVkLCB0aGlzLl91cGRhdGVFcnJvckFuZFdhcm5pbmdDb3VudHMsIHRo
aXMpOwogICAgIHRoaXMuY29uc29sZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Db25z
b2xlTW9kZWwuRXZlbnRzLlJlcGVhdENvdW50VXBkYXRlZCwgdGhpcy5fdXBkYXRlRXJyb3JBbmRX
YXJuaW5nQ291bnRzLCB0aGlzKTsKIAorICAgIHRoaXMuZGVidWdnZXJNb2RlbCA9IG5ldyBXZWJJ
bnNwZWN0b3IuRGVidWdnZXJNb2RlbCgpOworICAgIHRoaXMuZGVidWdnZXJQcmVzZW50YXRpb25N
b2RlbCA9IG5ldyBXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbCgpOworCiAg
ICAgdGhpcy5kcmF3ZXIgPSBuZXcgV2ViSW5zcGVjdG9yLkRyYXdlcigpOwogICAgIHRoaXMuY29u
c29sZVZpZXcgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3KFdlYkluc3BlY3Rvci5Xb3Jr
ZXJNYW5hZ2VyLmlzV29ya2VyRnJvbnRlbmQoKSk7CiAKQEAgLTUyMSw4ICs1MjQsNiBAQCBXZWJJ
bnNwZWN0b3IuZG9Mb2FkZWREb25lID0gZnVuY3Rpb24oKQogICAgIEluc3BlY3RvckJhY2tlbmQu
cmVnaXN0ZXJJbnNwZWN0b3JEaXNwYXRjaGVyKHRoaXMpOwogCiAgICAgdGhpcy5jc3NNb2RlbCA9
IG5ldyBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbCgpOwotICAgIHRoaXMuZGVidWdnZXJNb2Rl
bCA9IG5ldyBXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbCgpOwotICAgIHRoaXMuZGVidWdnZXJQ
cmVzZW50YXRpb25Nb2RlbCA9IG5ldyBXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25N
b2RlbCgpOwogCiAgICAgdGhpcy5zZWFyY2hDb250cm9sbGVyID0gbmV3IFdlYkluc3BlY3Rvci5T
ZWFyY2hDb250cm9sbGVyKCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109763</attachid>
            <date>2011-10-05 01:45:48 -0700</date>
            <delta_ts>2011-10-05 02:35:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-69146-20111005124545.patch</filename>
            <type>text/plain</type>
            <size>39384</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTY2ODIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBjNTAzYjM5OTkxYzdhMjc4Y2YyZmRl
ODE0MGMyZmZmMzlmZjNiYTlmLi4xMzc1MTZiOGQ1MTI3MDc4MTgyNzE5ODM4ZGFlYzBlMjM5MzAz
YjBhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMTAtMDQgIElseWEgVGlraG9ub3Zza3kg
IDxsb2lzbG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGRlYnVnZ2Vy
UHJlc2VudGF0aW9Nb2RlbC5saW5raWZ5TG9jYXRpb24gbGVha3MgdXBkYXRlQW5jaG9yIGNsb3N1
cmUgaW5zdGFuY2VzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NjkxNDYKKworICAgICAgICBJbiBtYW55IHBsYWNlcyB3ZSB1c2UgbGlua2lmeUxvY2F0
aW9uIGZ1bmN0aW9uIHRvIHByb2R1Y2UgYSBsaW5rIG5vZGUgd2hpY2ggdXBkYXRlcyBhdXRvbWF0
aWNhbGx5IHdoZW4gdGhlIHNvdXJjZSBmaWxlIGlzIGNoYW5nZWQgb24gdGhlIGZseS4KKyAgICAg
ICAgU3VjaCBjaGFuZ2VzIGhhcHBlbiB3aGVuIHdlIHVzZSBwcmV0dHkgcHJpbnQgb3IgYW5vdGhl
ciBvcGVyYXRpb24gdGhhdCBjaGFuZ2VzIHRoZSBzb3VyY2UgY29kZSBzb21laG93LgorICAgICAg
ICBsaW5raWZ5TG9jYXRpb24gYXNzb2NpYXRlcyBhIG5ldyBpbnN0YW5jZSBvZiB1cGRhdGVBbmNo
b3IgY2xvc3VyZSB3aXRoIHRoZSBlYWNoIGxpbmsgbm9kZSBhbmQgYWRkIHRoZSBjbG9zdXJlIHRv
IHRoZSBTb3VyY2VNYXBwaW5nVXBkYXRlZCBldmVudCdzIGxpc3QuCisgICAgICAgIEFzIHRoZSBy
ZXN1bHQgdGhlIG5vZGU8LT5jbG9zdXJlIHBhaXJzIHdvdWxkbid0IGJlIGNvbGxlY3RlZCB1bnRp
bCByZXNldCB0aGUgVUkgYW5kIERlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdn
ZXIvbGlua2lmaWVyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yL2Rl
YnVnZ2VyL2xpbmtpZmllci5odG1sOiBBZGRlZC4KKwogMjAxMS0xMC0wNSAgR2Fib3IgUmFwY3Nh
bnlpICA8cmdhYm9yQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1F0XSBVbnJldmlld2VkIGdhcmRl
bmluZy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9saW5raWZp
ZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2xpbmtpZmll
ci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjhmYzE0MWY3ODM2MTVmZDhjNTQ2ZDQwMDZlY2Vj
NGU1ODcxNjM4OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1
Z2dlci9saW5raWZpZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjYgQEAKK1Rlc3RzIHRoYXQg
TGlua2lmaWVyIHdvcmtzIGNvcnJlY3RseS4KKworRGVidWdnZXIgd2FzIGVuYWJsZWQuCistLS0g
bGlua2lmeSBmYWtlVVJMLTEgZmlyc3QgdGltZSAtLS0KK0R1bW15UHJlc2VudGF0aW9uTW9kZWwu
X3Jhd1NvdXJjZUNvZGVGb3JTY3JpcHRXaXRoVVJMIHdhcyBjYWxsZWQgd2l0aCBhcmd1bWVudHMg
PSBbJ2Zha2VVcmwtMSddCitEdW1teVJhd1NvdXJjZUNvZGUuYWRkRXZlbnRMaXN0ZW5lciB3YXMg
Y2FsbGVkIGZvciBzb3VyY2Ugd2l0aCBVUkwgPSAnZmFrZVVybC0xJyB3aXRoIGFyZ3VtZW50cyA9
IFsnc291cmNlLW1hcHBpbmctdXBkYXRlZCcsIGZ1bmN0aW9uLCBvYmplY3RdCisKKy0tLSBsaW5r
aWZ5IGZha2VVUkwtMiBmaXJzdCB0aW1lIC0tLQorRHVtbXlQcmVzZW50YXRpb25Nb2RlbC5fcmF3
U291cmNlQ29kZUZvclNjcmlwdFdpdGhVUkwgd2FzIGNhbGxlZCB3aXRoIGFyZ3VtZW50cyA9IFsn
ZmFrZVVybC0yJ10KK0R1bW15UmF3U291cmNlQ29kZS5hZGRFdmVudExpc3RlbmVyIHdhcyBjYWxs
ZWQgZm9yIHNvdXJjZSB3aXRoIFVSTCA9ICdmYWtlVXJsLTInIHdpdGggYXJndW1lbnRzID0gWydz
b3VyY2UtbWFwcGluZy11cGRhdGVkJywgZnVuY3Rpb24sIG9iamVjdF0KKworLS0tIGxpbmtpZnkg
ZmFrZVVSTC0xIHNlY29uZCB0aW1lIC0tLQorRHVtbXlQcmVzZW50YXRpb25Nb2RlbC5fcmF3U291
cmNlQ29kZUZvclNjcmlwdFdpdGhVUkwgd2FzIGNhbGxlZCB3aXRoIGFyZ3VtZW50cyA9IFsnZmFr
ZVVybC0xJ10KKworLS0tIGxpbmtpZnkgZmFrZVVSTC0yIHNlY29uZCB0aW1lIC0tLQorRHVtbXlQ
cmVzZW50YXRpb25Nb2RlbC5fcmF3U291cmNlQ29kZUZvclNjcmlwdFdpdGhVUkwgd2FzIGNhbGxl
ZCB3aXRoIGFyZ3VtZW50cyA9IFsnZmFrZVVybC0yJ10KKworLS0tIHJlc2V0IC0tLQorRHVtbXlS
YXdTb3VyY2VDb2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIgd2FzIGNhbGxlZCBmb3Igc291cmNlIHdp
dGggaWQgPSAnZmFrZVVybC0xJyB3aXRoIGFyZ3VtZW50cyA9IFsnc291cmNlLW1hcHBpbmctdXBk
YXRlZCcsIGZ1bmN0aW9uLCBvYmplY3RdCitEdW1teVJhd1NvdXJjZUNvZGUucmVtb3ZlRXZlbnRM
aXN0ZW5lciB3YXMgY2FsbGVkIGZvciBzb3VyY2Ugd2l0aCBpZCA9ICdmYWtlVXJsLTInIHdpdGgg
YXJndW1lbnRzID0gWydzb3VyY2UtbWFwcGluZy11cGRhdGVkJywgZnVuY3Rpb24sIG9iamVjdF0K
KworLS0tIGxvY2F0aW9uIHVwZGF0ZSAtLS0KK29yaWdpbmFsIGxvY2F0aW9uOiBsaW5raWZpZXIu
aHRtbDo5MworcHJldHR5IHByaW50ZWQgbG9jYXRpb246IGxpbmtpZmllci5odG1sOjk5CityZXZl
cnRlZCBsb2NhdGlvbjogbGlua2lmaWVyLmh0bWw6OTMKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2xpbmtpZmllci5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2RlYnVnZ2VyL2xpbmtpZmllci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU1OTgwZTg1OTczYzk5MmMy
MDEwNjAxMDVkNGYzOTZlMjExYjI0MDUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZGVidWdnZXIvbGlua2lmaWVyLmh0bWwKQEAgLTAsMCArMSwxMjQgQEAKKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVj
dG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL2RlYnVnZ2VyLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKworZnVuY3Rpb24g
dGVzdCgpCit7CisgICAgSW5zcGVjdG9yVGVzdC5zdGFydERlYnVnZ2VyVGVzdChkZWJ1Z2dlclRl
c3QpOworCisgICAgZnVuY3Rpb24gZGVidWdnZXJUZXN0KCkKKyAgICB7CisgICAgICAgIGlmICgh
V2ViSW5zcGVjdG9yLmRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuX3Jhd1NvdXJjZUNvZGVbV2Vi
SW5zcGVjdG9yLm1haW5SZXNvdXJjZS5fZG9jdW1lbnRVUkxdKSB7CisgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmFkZFNuaWZmZXIoV2ViSW5zcGVjdG9yLmRlYnVnZ2VyUHJlc2VudGF0aW9uTW9k
ZWwsICJfYWRkU2NyaXB0IiwgZGVidWdnZXJUZXN0KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorCisgICAgICAgIHZhciBmYWtlVVJMMSA9ICJmYWtlVXJsLTEiOworICAgICAgICB2
YXIgZmFrZVVSTDIgPSAiZmFrZVVybC0yIjsKKworICAgICAgICBEdW1teVJhd1NvdXJjZUNvZGUg
PSBmdW5jdGlvbih1cmwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHRoaXMudXJsID0gdXJsOwor
ICAgICAgICAgICAgdGhpcy5pZCA9IHVybDsKKyAgICAgICAgfQorCisgICAgICAgIER1bW15UmF3
U291cmNlQ29kZS5wcm90b3R5cGUgPSB7CisgICAgICAgICAgICBhZGRFdmVudExpc3RlbmVyOiBm
dW5jdGlvbihldmVudE5hbWUsIGNhbGxiYWNrLCBvYmplY3QpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIkR1bW15UmF3U291cmNlQ29kZS5h
ZGRFdmVudExpc3RlbmVyIHdhcyBjYWxsZWQgZm9yIHNvdXJjZSB3aXRoIFVSTCA9ICciICsgdGhp
cy51cmwgKyAiJyB3aXRoIGFyZ3VtZW50cyA9IFsnIiArIGV2ZW50TmFtZSArICInLCAiICsgKHR5
cGVvZiBjYWxsYmFjaykgKyAiLCAiICsgKHR5cGVvZiBvYmplY3QpICsgIl0iKTsKKyAgICAgICAg
ICAgIH0sCisKKyAgICAgICAgICAgIHJlbW92ZUV2ZW50TGlzdGVuZXI6IGZ1bmN0aW9uKGV2ZW50
TmFtZSwgY2FsbGJhY2ssIG9iamVjdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiRHVtbXlSYXdTb3VyY2VDb2RlLnJlbW92ZUV2ZW50TGlz
dGVuZXIgd2FzIGNhbGxlZCBmb3Igc291cmNlIHdpdGggaWQgPSAnIiArIHRoaXMudXJsICsgIicg
d2l0aCBhcmd1bWVudHMgPSBbJyIgKyBldmVudE5hbWUgKyAiJywgIiArICh0eXBlb2YgY2FsbGJh
Y2spICsgIiwgIiArICh0eXBlb2Ygb2JqZWN0KSArICJdIik7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKworICAgICAgICBEdW1teVByZXNlbnRhdGlvbk1vZGVsID0gZnVuY3Rpb24oKQorICAg
ICAgICB7CisgICAgICAgICAgICB0aGlzLl9yYXdTb3VyY2VDb2RlID0gW107CisgICAgICAgIH0K
KworICAgICAgICBEdW1teVByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZSA9IHsKKyAgICAgICAg
ICAgIF9yYXdTb3VyY2VDb2RlRm9yU2NyaXB0OiBmdW5jdGlvbihpZCkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiRHVtbXlQcmVzZW50YXRp
b25Nb2RlbC5fcmF3U291cmNlQ29kZUZvclNjcmlwdCB3YXMgY2FsbGVkIHdpdGggYXJndW1lbnRz
ID0gWyciICsgaWQgKyAiJ10iKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fcmF3U291
cmNlQ29kZVtpZF07CisgICAgICAgICAgICB9LAorCisgICAgICAgICAgICBfcmF3U291cmNlQ29k
ZUZvclNjcmlwdFdpdGhVUkw6IGZ1bmN0aW9uKHNvdXJjZVVSTCkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiRHVtbXlQcmVzZW50YXRpb25N
b2RlbC5fcmF3U291cmNlQ29kZUZvclNjcmlwdFdpdGhVUkwgd2FzIGNhbGxlZCB3aXRoIGFyZ3Vt
ZW50cyA9IFsnIiArIHNvdXJjZVVSTCArICInXSIpOworICAgICAgICAgICAgICAgIHZhciByYXdT
b3VyY2VDb2RlID0gdGhpcy5fcmF3U291cmNlQ29kZVtzb3VyY2VVUkxdOworICAgICAgICAgICAg
ICAgIGlmIChyYXdTb3VyY2VDb2RlKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmF3U291
cmNlQ29kZTsKKyAgICAgICAgICAgICAgICByYXdTb3VyY2VDb2RlID0gbmV3IER1bW15UmF3U291
cmNlQ29kZShzb3VyY2VVUkwpOworICAgICAgICAgICAgICAgIHRoaXMuX3Jhd1NvdXJjZUNvZGVb
c291cmNlVVJMXSA9IHJhd1NvdXJjZUNvZGU7CisgICAgICAgICAgICAgICAgcmV0dXJuIHJhd1Nv
dXJjZUNvZGU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICB2YXIgZHVtbXlQ
cmVzZW50YXRpb25Nb2RlbCA9IG5ldyBEdW1teVByZXNlbnRhdGlvbk1vZGVsKCk7CisKKyAgICAg
ICAgdmFyIGxpbmtpZmllciA9IG5ldyBXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25N
b2RlbC5MaW5raWZpZXIoZHVtbXlQcmVzZW50YXRpb25Nb2RlbCk7CisKKyAgICAgICAgSW5zcGVj
dG9yVGVzdC5hZGRSZXN1bHQoIi0tLSBsaW5raWZ5IGZha2VVUkwtMSBmaXJzdCB0aW1lIC0tLSIp
OworICAgICAgICBsaW5raWZpZXIubGlua2lmeUxvY2F0aW9uKGZha2VVUkwxLCA0MiwgMjYsICJm
YWtlLWNsYXNzLW5hbWUiKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIiIpOwor
CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCItLS0gbGlua2lmeSBmYWtlVVJMLTIg
Zmlyc3QgdGltZSAtLS0iKTsKKyAgICAgICAgbGlua2lmaWVyLmxpbmtpZnlMb2NhdGlvbihmYWtl
VVJMMiwgNDIsIDI2LCAiZmFrZS1jbGFzcy1uYW1lIik7CisgICAgICAgIEluc3BlY3RvclRlc3Qu
YWRkUmVzdWx0KCIiKTsKKworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiLS0tIGxp
bmtpZnkgZmFrZVVSTC0xIHNlY29uZCB0aW1lIC0tLSIpOworICAgICAgICBsaW5raWZpZXIubGlu
a2lmeUxvY2F0aW9uKGZha2VVUkwxLCA5NywgMjMsICJmYWtlLWNsYXNzLW5hbWUiKTsKKyAgICAg
ICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIiIpOworCisgICAgICAgIEluc3BlY3RvclRlc3Qu
YWRkUmVzdWx0KCItLS0gbGlua2lmeSBmYWtlVVJMLTIgc2Vjb25kIHRpbWUgLS0tIik7CisgICAg
ICAgIGxpbmtpZmllci5saW5raWZ5TG9jYXRpb24oZmFrZVVSTDIsIDQsIDIsICJmYWtlLWNsYXNz
LW5hbWUiKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIiIpOworCisgICAgICAg
IEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCItLS0gcmVzZXQgLS0tIik7CisgICAgICAgIGxpbmtp
Zmllci5yZXNldCgpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiIik7CisKKyAg
ICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIi0tLSBsb2NhdGlvbiB1cGRhdGUgLS0tIik7
CisKKyAgICAgICAgZnVuY3Rpb24gZHVtbXlGdW5jdGlvblRvQmVQcmV0dHlQcmludGVkKCkgeyBJ
bnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiIik7IGNvbnNvbGUuZXJyb3IoIiIpOyB9CisKKyAgICAg
ICAgbGlua2lmaWVyID0gV2ViSW5zcGVjdG9yLmRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuY3Jl
YXRlTGlua2lmaWVyKCk7CisgICAgICAgIHZhciBsaW5rID0gbGlua2lmaWVyLmxpbmtpZnlMb2Nh
dGlvbihXZWJJbnNwZWN0b3IubWFpblJlc291cmNlLl9kb2N1bWVudFVSTCwgOTIsIDAsICJkdW1t
eS1jbGFzcyIpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgib3JpZ2luYWwgbG9j
YXRpb246ICIgKyBsaW5rLnRleHRDb250ZW50KTsKKworICAgICAgICBJbnNwZWN0b3JUZXN0LmFk
ZFNuaWZmZXIobGlua2lmaWVyLCAiX3VwZGF0ZUFuY2hvciIsIGxpbmtVcGRhdGVkKTsKKyAgICAg
ICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuc2V0Rm9ybWF0U291cmNl
KHRydWUpOworCisgICAgICAgIGZ1bmN0aW9uIGxpbmtVcGRhdGVkKCkKKyAgICAgICAgeworICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoInByZXR0eSBwcmludGVkIGxvY2F0aW9u
OiAiICsgbGluay50ZXh0Q29udGVudCk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFNu
aWZmZXIobGlua2lmaWVyLCAiX3VwZGF0ZUFuY2hvciIsIGxpbmtSZXZlcnRlZCk7CisgICAgICAg
ICAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5zZXRGb3JtYXRTb3Vy
Y2UoZmFsc2UpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gbGlua1JldmVydGVkKCkK
KyAgICAgICAgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoInJldmVydGVk
IGxvY2F0aW9uOiAiICsgbGluay50ZXh0Q29udGVudCk7CisgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmNvbXBsZXRlVGVzdCgpOworICAgICAgICB9CisgICAgfQorfQorCis8L3NjcmlwdD4KKzwv
aGVhZD4KKworPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHA+CitUZXN0cyB0aGF0IExpbmtp
ZmllciB3b3JrcyBjb3JyZWN0bHkuCis8cD4KK1R3byBhZGRFdmVudExpc3RlbmVyIGNhbGxzIGV4
cGVjdGVkLiBUaGUgZmlyc3QgZm9yICdmYWtlVXJsLTEnIHRoZSBzZWNvbmQgZm9yICdmYWtlVXJs
LTInOworPC9wPgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDM0NjljZDMzMDNk
MjliNzNiZmVmMmMyNmQ4Mjc1NGQyNTc2MDg4NS4uNGFiOGQ4NTk3MTcwOGJkOGVkMDFhYTA4NzNj
NzRhYTVkMDY1MGY2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDExLTEwLTA0ICBJ
bHlhIFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5z
cGVjdG9yOiBkZWJ1Z2dlclByZXNlbnRhdGlvTW9kZWwubGlua2lmeUxvY2F0aW9uIGxlYWtzIHVw
ZGF0ZUFuY2hvciBjbG9zdXJlIGluc3RhbmNlcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTY5MTQ2CisKKyAgICAgICAgSW4gbWFueSBwbGFjZXMgd2Ug
dXNlIGxpbmtpZnlMb2NhdGlvbiBmdW5jdGlvbiB0byBwcm9kdWNlIGEgbGluayBub2RlIHdoaWNo
IHVwZGF0ZXMgYXV0b21hdGljYWxseSB3aGVuIHRoZSBzb3VyY2UgZmlsZSBpcyBjaGFuZ2VkIG9u
IHRoZSBmbHkuCisgICAgICAgIFN1Y2ggY2hhbmdlcyBoYXBwZW4gd2hlbiB3ZSB1c2UgcHJldHR5
IHByaW50IG9yIGFub3RoZXIgb3BlcmF0aW9uIHRoYXQgY2hhbmdlcyB0aGUgc291cmNlIGNvZGUg
c29tZWhvdy4KKyAgICAgICAgbGlua2lmeUxvY2F0aW9uIGFzc29jaWF0ZXMgYSBuZXcgaW5zdGFu
Y2Ugb2YgdXBkYXRlQW5jaG9yIGNsb3N1cmUgd2l0aCB0aGUgZWFjaCBsaW5rIG5vZGUgYW5kIGFk
ZCB0aGUgY2xvc3VyZSB0byB0aGUgU291cmNlTWFwcGluZ1VwZGF0ZWQgZXZlbnQncyBsaXN0Lgor
ICAgICAgICBBcyB0aGUgcmVzdWx0IHRoZSBub2RlPC0+Y2xvc3VyZSBwYWlycyB3b3VsZG4ndCBi
ZSBjb2xsZWN0ZWQgdW50aWwgcmVzZXQgdGhlIFVJIGFuZCBEZWJ1Z2dlclByZXNlbnRhdGlvbk1v
ZGVsLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRl
c3Q6IGluc3BlY3Rvci9kZWJ1Z2dlci9saW5raWZpZXIuaHRtbAorCisgICAgICAgICogaW5zcGVj
dG9yL2Zyb250LWVuZC9Db25zb2xlTWVzc2FnZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5D
b25zb2xlTWVzc2FnZUltcGwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdl
SW1wbC5wcm90b3R5cGUuX2xpbmtpZnlMb2NhdGlvbik6CisgICAgICAgICogaW5zcGVjdG9yL2Zy
b250LWVuZC9Db25zb2xlVmlldy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db25zb2xlVmll
dy5wcm90b3R5cGUuX2NvbnNvbGVDbGVhcmVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db25z
b2xlQ29tbWFuZFJlc3VsdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2Uu
Y3JlYXRlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5jcmVhdGVUZXh0
TWVzc2FnZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dlclByZXNlbnRh
dGlvbk1vZGVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9u
TW9kZWwucHJvdG90eXBlLmNyZWF0ZUxpbmtpZmllcik6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
RGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5MaW5raWZpZXIpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuTGlua2lmaWVyLnByb3RvdHlwZS5saW5raWZ5
TG9jYXRpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9k
ZWwuTGlua2lmaWVyLnByb3RvdHlwZS5yZXNldCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVi
dWdnZXJQcmVzZW50YXRpb25Nb2RlbC5MaW5raWZpZXIucHJvdG90eXBlLl91cGRhdGVTb3VyY2VB
bmNob3JzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVs
LkxpbmtpZmllci5wcm90b3R5cGUuX3VwZGF0ZUFuY2hvcik6CisgICAgICAgICogaW5zcGVjdG9y
L2Zyb250LWVuZC9FdmVudExpc3RlbmVyc1NpZGViYXJQYW5lLmpzOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkV2ZW50TGlzdGVuZXJzU2lkZWJhclBhbmUucHJvdG90eXBlLnVwZGF0ZS5jYWxsYmFj
ayk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRXZlbnRMaXN0ZW5lcnNTaWRlYmFyUGFuZS5wcm90
b3R5cGUudXBkYXRlKToKKyAgICAgICAgKCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVu
ZC9OZXR3b3JrUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya0xvZ1ZpZXcp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtMb2dWaWV3LnByb3RvdHlwZS5fcmVzZXQp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtEYXRhR3JpZE5vZGUucHJvdG90eXBlLl9y
ZWZyZXNoSW5pdGlhdG9yQ2VsbCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9m
aWxlRGF0YUdyaWRUcmVlLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlByb2ZpbGVEYXRhR3Jp
ZE5vZGUucHJvdG90eXBlLmNyZWF0ZUNlbGwpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1l
bmQvUHJvZmlsZVZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1BVUHJvZmlsZVZpZXcp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNQVVByb2ZpbGVWaWV3LnByb3RvdHlwZS5fcmVzZXRD
bGlja2VkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lUGFuZWwuanM6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuVGltZWxpbmVQYW5lbC5wcm90b3R5cGUuX2xpbmtpZnlMb2NhdGlvbik6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5wcm90b3R5cGUuX2xpbmtpZnlDYWxsRnJhbWUp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwucHJvdG90eXBlLl9jbGVhclBh
bmVsKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLkZvcm1hdHRlZFJlY29y
ZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5Gb3JtYXR0ZWRSZWNvcmQu
cHJvdG90eXBlLl9nZW5lcmF0ZVBvcHVwQ29udGVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
VGltZWxpbmVQYW5lbC5Gb3JtYXR0ZWRSZWNvcmQucHJvdG90eXBlLl9nZXRSZWNvcmREZXRhaWxz
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLlBvcHVwQ29udGVudEhlbHBl
cik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5Qb3B1cENvbnRlbnRIZWxw
ZXIucHJvdG90eXBlLl9hcHBlbmRMaW5rUm93KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1l
bGluZVBhbmVsLlBvcHVwQ29udGVudEhlbHBlci5wcm90b3R5cGUuX2FwcGVuZFN0YWNrVHJhY2Up
OgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzOgorCiAyMDExLTEw
LTA0ICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZW1vdmUg
Tm9kZTo6d2lsbEJsdXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9Db25zb2xlTWVzc2FnZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvQ29uc29sZU1lc3NhZ2UuanMKaW5kZXggM2U3MDgzZjUyOGViNTFmNjFjMzBkODExNmEz
ZGZmNjRjYmYxNjJjZS4uZDdhNDBjMGQ3MjViZDQ1MTAwZjEzZjY1MjdmMDY3Mjg0NDc0MDVlYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xlTWVz
c2FnZS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVN
ZXNzYWdlLmpzCkBAIC0yOCwyOCArMjgsMTkgQEAKICAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5z
cGVjdG9yLkNvbnNvbGVNZXNzYWdlLmNyZWF0ZSA9IGZ1bmN0aW9uKHNvdXJjZSwgdHlwZSwgbGV2
ZWwsIGxpbmUsIHVybCwgcmVwZWF0Q291bnQsIG1lc3NhZ2UsIHBhcmFtZXRlcnMsIHN0YWNrVHJh
Y2UsIHJlcXVlc3QpCi17Ci0gICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3Nh
Z2VJbXBsKHNvdXJjZSwgdHlwZSwgbGV2ZWwsIGxpbmUsIHVybCwgcmVwZWF0Q291bnQsIG1lc3Nh
Z2UsIHBhcmFtZXRlcnMsIHN0YWNrVHJhY2UsIHJlcXVlc3QpOwotfQotCi1XZWJJbnNwZWN0b3Iu
Q29uc29sZU1lc3NhZ2UuY3JlYXRlVGV4dE1lc3NhZ2UgPSBmdW5jdGlvbih0ZXh0LCBsZXZlbCkK
LXsKLSAgICBsZXZlbCA9IGxldmVsIHx8IFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNz
YWdlTGV2ZWwuTG9nOwotICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdl
SW1wbChXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVNvdXJjZS5Db25zb2xlQVBJ
LCBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVR5cGUuTG9nLCBsZXZlbCwgMCwg
bnVsbCwgMSwgbnVsbCwgW3RleHRdLCBudWxsKTsKLX0KLQogLyoqCiAgKiBAY29uc3RydWN0b3IK
ICAqIEBleHRlbmRzIHtXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2V9CisgKiBAcGFyYW0ge1dl
Ykluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLkxpbmtpZmllcn0gbGlua2lmaWVy
CiAgKiBAcGFyYW0ge0FycmF5LjxSdW50aW1lQWdlbnQuUmVtb3RlT2JqZWN0Pj19IHBhcmFtZXRl
cnMKICAqIEBwYXJhbSB7Q29uc29sZUFnZW50LlN0YWNrVHJhY2U9fSBzdGFja1RyYWNlCiAgKiBA
cGFyYW0ge1dlYkluc3BlY3Rvci5SZXNvdXJjZT19IHJlcXVlc3QKICAqLwotV2ViSW5zcGVjdG9y
LkNvbnNvbGVNZXNzYWdlSW1wbCA9IGZ1bmN0aW9uKHNvdXJjZSwgdHlwZSwgbGV2ZWwsIGxpbmUs
IHVybCwgcmVwZWF0Q291bnQsIG1lc3NhZ2UsIHBhcmFtZXRlcnMsIHN0YWNrVHJhY2UsIHJlcXVl
c3QpCitXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2VJbXBsID0gZnVuY3Rpb24oc291cmNlLCB0
eXBlLCBsZXZlbCwgbGluZSwgdXJsLCByZXBlYXRDb3VudCwgbWVzc2FnZSwgbGlua2lmaWVyLCBw
YXJhbWV0ZXJzLCBzdGFja1RyYWNlLCByZXF1ZXN0KQogewogICAgIFdlYkluc3BlY3Rvci5Db25z
b2xlTWVzc2FnZS5jYWxsKCk7CiAKKyAgICB0aGlzLl9saW5raWZpZXIgPSBsaW5raWZpZXI7CiAg
ICAgdGhpcy5zb3VyY2UgPSBzb3VyY2U7CiAgICAgdGhpcy50eXBlID0gdHlwZTsKICAgICB0aGlz
LmxldmVsID0gbGV2ZWw7CkBAIC0xOTQsNyArMTg1LDcgQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVN
ZXNzYWdlSW1wbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIC8vIEZJWE1FKDYyNzI1KTogc3RhY2sg
dHJhY2UgbGluZS9jb2x1bW4gbnVtYmVycyBhcmUgb25lLWJhc2VkLgogICAgICAgICBsaW5lTnVt
YmVyID0gbGluZU51bWJlciA/IGxpbmVOdW1iZXIgLSAxIDogdW5kZWZpbmVkOwogICAgICAgICBj
b2x1bW5OdW1iZXIgPSBjb2x1bW5OdW1iZXIgPyBjb2x1bW5OdW1iZXIgLSAxIDogMDsKLSAgICAg
ICAgcmV0dXJuIFdlYkluc3BlY3Rvci5kZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLmxpbmtpZnlM
b2NhdGlvbih1cmwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgImNvbnNvbGUtbWVzc2FnZS11
cmwiKTsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2xpbmtpZmllci5saW5raWZ5TG9jYXRpb24odXJs
LCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsICJjb25zb2xlLW1lc3NhZ2UtdXJsIik7CiAgICAg
fSwKIAogICAgIF9saW5raWZ5Q2FsbEZyYW1lOiBmdW5jdGlvbihjYWxsRnJhbWUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVWaWV3LmpzIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xlVmlldy5qcwppbmRleCBl
NDEyNDMyY2Q5ZmRmMzliZGNlNzQzOTBmMjE1YTZjZmU5N2ZmNmQ0Li4zYjExZTczNWQ1NjUxYTI3
NDY0ZWI3MTE3NjNhMzljOTBmMDdhN2EyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvQ29uc29sZVZpZXcuanMKQEAgLTExMCw2ICsxMTAsOCBAQCBXZWJJbnNw
ZWN0b3IuQ29uc29sZVZpZXcgPSBmdW5jdGlvbihoaWRlQ29udGV4dFNlbGVjdG9yKQogCiAgICAg
V2ViSW5zcGVjdG9yLmNvbnNvbGUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQ29uc29s
ZU1vZGVsLkV2ZW50cy5NZXNzYWdlQWRkZWQsIHRoaXMuX2NvbnNvbGVNZXNzYWdlQWRkZWQsIHRo
aXMpOwogICAgIFdlYkluc3BlY3Rvci5jb25zb2xlLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVj
dG9yLkNvbnNvbGVNb2RlbC5FdmVudHMuQ29uc29sZUNsZWFyZWQsIHRoaXMuX2NvbnNvbGVDbGVh
cmVkLCB0aGlzKTsKKworICAgIHRoaXMuX2xpbmtpZmllciA9IFdlYkluc3BlY3Rvci5kZWJ1Z2dl
clByZXNlbnRhdGlvbk1vZGVsLmNyZWF0ZUxpbmtpZmllcigpOwogfQogCiBXZWJJbnNwZWN0b3Iu
Q29uc29sZVZpZXcuRXZlbnRzID0gewpAQCAtMzI2LDYgKzMyOCw4IEBAIFdlYkluc3BlY3Rvci5D
b25zb2xlVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMudG9wR3JvdXAubWVzc2FnZXNF
bGVtZW50LnJlbW92ZUNoaWxkcmVuKCk7CiAKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9M
aXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3LkV2ZW50cy5Db25zb2xlQ2xlYXJlZCk7
CisKKyAgICAgICAgdGhpcy5fbGlua2lmaWVyLnJlc2V0KCk7CiAgICAgfSwKIAogICAgIGNvbXBs
ZXRpb25zOiBmdW5jdGlvbih3b3JkUmFuZ2UsIGJlc3RNYXRjaE9ubHksIGNvbXBsZXRpb25zUmVh
ZHlDYWxsYmFjaykKQEAgLTYxNyw3ICs2MjEsNyBAQCBXZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcu
cHJvdG90eXBlID0gewogCiAgICAgICAgICAgICBXZWJJbnNwZWN0b3Iuc2V0dGluZ3MuY29uc29s
ZUhpc3Rvcnkuc2V0KHRoaXMucHJvbXB0Lmhpc3Rvcnkuc2xpY2UoLTMwKSk7CiAKLSAgICAgICAg
ICAgIHRoaXMuX2FwcGVuZENvbnNvbGVNZXNzYWdlKG5ldyBXZWJJbnNwZWN0b3IuQ29uc29sZUNv
bW1hbmRSZXN1bHQocmVzdWx0LCB3YXNUaHJvd24sIGNvbW1hbmRNZXNzYWdlKSk7CisgICAgICAg
ICAgICB0aGlzLl9hcHBlbmRDb25zb2xlTWVzc2FnZShuZXcgV2ViSW5zcGVjdG9yLkNvbnNvbGVD
b21tYW5kUmVzdWx0KHJlc3VsdCwgd2FzVGhyb3duLCBjb21tYW5kTWVzc2FnZSwgdGhpcy5fbGlu
a2lmaWVyKSk7CiAgICAgICAgIH0KICAgICAgICAgdGhpcy5ldmFsSW5JbnNwZWN0ZWRXaW5kb3co
c3RyLCAiY29uc29sZSIsIHRydWUsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBwcmludFJlc3VsdC5i
aW5kKHRoaXMpKTsKIApAQCAtNjk0LDExICs2OTgsMTEgQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVD
b21tYW5kLnByb3RvdHlwZSA9IHsKICAqIEBleHRlbmRzIHtXZWJJbnNwZWN0b3IuQ29uc29sZU1l
c3NhZ2VJbXBsfQogICogQGNvbnN0cnVjdG9yCiAgKi8KLVdlYkluc3BlY3Rvci5Db25zb2xlQ29t
bWFuZFJlc3VsdCA9IGZ1bmN0aW9uKHJlc3VsdCwgd2FzVGhyb3duLCBvcmlnaW5hdGluZ0NvbW1h
bmQpCitXZWJJbnNwZWN0b3IuQ29uc29sZUNvbW1hbmRSZXN1bHQgPSBmdW5jdGlvbihyZXN1bHQs
IHdhc1Rocm93biwgb3JpZ2luYXRpbmdDb21tYW5kLCBsaW5raWZpZXIpCiB7CiAgICAgdmFyIGxl
dmVsID0gKHdhc1Rocm93biA/IFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlTGV2
ZWwuRXJyb3IgOiBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZUxldmVsLkxvZyk7
CiAgICAgdGhpcy5vcmlnaW5hdGluZ0NvbW1hbmQgPSBvcmlnaW5hdGluZ0NvbW1hbmQ7Ci0gICAg
V2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlSW1wbC5jYWxsKHRoaXMsIFdlYkluc3BlY3Rvci5D
b25zb2xlTWVzc2FnZS5NZXNzYWdlU291cmNlLkpTLCBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3Nh
Z2UuTWVzc2FnZVR5cGUuUmVzdWx0LCBsZXZlbCwgLTEsIG51bGwsIDEsIG51bGwsIFtyZXN1bHRd
KTsKKyAgICBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2VJbXBsLmNhbGwodGhpcywgV2ViSW5z
cGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VTb3VyY2UuSlMsIFdlYkluc3BlY3Rvci5Db25z
b2xlTWVzc2FnZS5NZXNzYWdlVHlwZS5SZXN1bHQsIGxldmVsLCAtMSwgbnVsbCwgMSwgbnVsbCwg
bGlua2lmaWVyLCBbcmVzdWx0XSk7CiB9CiAKIFdlYkluc3BlY3Rvci5Db25zb2xlQ29tbWFuZFJl
c3VsdC5wcm90b3R5cGUgPSB7CkBAIC03NzYsMyArNzgwLDE0IEBAIFdlYkluc3BlY3Rvci5Db25z
b2xlR3JvdXAucHJvdG90eXBlID0gewogICogQHR5cGUgez9XZWJJbnNwZWN0b3IuQ29uc29sZVZp
ZXd9CiAgKi8KIFdlYkluc3BlY3Rvci5jb25zb2xlVmlldyA9IG51bGw7CisKK1dlYkluc3BlY3Rv
ci5Db25zb2xlTWVzc2FnZS5jcmVhdGUgPSBmdW5jdGlvbihzb3VyY2UsIHR5cGUsIGxldmVsLCBs
aW5lLCB1cmwsIHJlcGVhdENvdW50LCBtZXNzYWdlLCBwYXJhbWV0ZXJzLCBzdGFja1RyYWNlLCBy
ZXF1ZXN0KQoreworICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlSW1w
bChzb3VyY2UsIHR5cGUsIGxldmVsLCBsaW5lLCB1cmwsIHJlcGVhdENvdW50LCBtZXNzYWdlLCBX
ZWJJbnNwZWN0b3IuY29uc29sZVZpZXcuX2xpbmtpZmllciwgcGFyYW1ldGVycywgc3RhY2tUcmFj
ZSwgcmVxdWVzdCk7Cit9CisKK1dlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5jcmVhdGVUZXh0
TWVzc2FnZSA9IGZ1bmN0aW9uKHRleHQsIGxldmVsKQoreworICAgIGxldmVsID0gbGV2ZWwgfHwg
V2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VMZXZlbC5Mb2c7CisgICAgcmV0dXJu
IG5ldyBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2VJbXBsKFdlYkluc3BlY3Rvci5Db25zb2xl
TWVzc2FnZS5NZXNzYWdlU291cmNlLkNvbnNvbGVBUEksIFdlYkluc3BlY3Rvci5Db25zb2xlTWVz
c2FnZS5NZXNzYWdlVHlwZS5Mb2csIGxldmVsLCAwLCBudWxsLCAxLCBudWxsLCBXZWJJbnNwZWN0
b3IuY29uc29sZVZpZXcuX2xpbmtpZmllciwgW3RleHRdLCBudWxsKTsKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJQcmVzZW50YXRpb25N
b2RlbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJQcmVz
ZW50YXRpb25Nb2RlbC5qcwppbmRleCBkZmUwMTAxMzU2YmUyMTZmZTY5ZjE4YzVlNWQyZWFkYjhi
YTM2NjI0Li40ZDcyNDk5YTJlODE3ZGZlYWI4ODcxOGZiNmM0NjQ4ZGQxZTMyODc3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RlYnVnZ2VyUHJlc2VudGF0
aW9uTW9kZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1
Z2dlclByZXNlbnRhdGlvbk1vZGVsLmpzCkBAIC02NywzMCArNjcsOSBAQCBXZWJJbnNwZWN0b3Iu
RGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5FdmVudHMgPSB7CiB9CiAKIFdlYkluc3BlY3Rvci5E
ZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZSA9IHsKLSAgICBsaW5raWZ5TG9jYXRp
b246IGZ1bmN0aW9uKHNvdXJjZVVSTCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBjbGFzc2Vz
KQorICAgIGNyZWF0ZUxpbmtpZmllcjogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgdmFyIGxp
bmtUZXh0ID0gV2ViSW5zcGVjdG9yLmZvcm1hdExpbmtUZXh0KHNvdXJjZVVSTCwgbGluZU51bWJl
cik7Ci0gICAgICAgIHZhciBhbmNob3IgPSBXZWJJbnNwZWN0b3IubGlua2lmeVVSTEFzTm9kZShz
b3VyY2VVUkwsIGxpbmtUZXh0LCBjbGFzc2VzLCBmYWxzZSk7Ci0KLSAgICAgICAgdmFyIHJhd1Nv
dXJjZUNvZGUgPSB0aGlzLl9yYXdTb3VyY2VDb2RlRm9yU2NyaXB0V2l0aFVSTChzb3VyY2VVUkwp
OwotICAgICAgICBpZiAoIXJhd1NvdXJjZUNvZGUpIHsKLSAgICAgICAgICAgIGFuY2hvci5zZXRB
dHRyaWJ1dGUoInByZWZlcnJlZF9wYW5lbCIsICJyZXNvdXJjZXMiKTsKLSAgICAgICAgICAgIGFu
Y2hvci5zZXRBdHRyaWJ1dGUoImxpbmVfbnVtYmVyIiwgbGluZU51bWJlcik7Ci0gICAgICAgICAg
ICByZXR1cm4gYW5jaG9yOwotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gdXBkYXRlQW5j
aG9yKCkKLSAgICAgICAgewotICAgICAgICAgICAgdmFyIHVpTG9jYXRpb24gPSByYXdTb3VyY2VD
b2RlLnNvdXJjZU1hcHBpbmcucmF3TG9jYXRpb25Ub1VJTG9jYXRpb24oeyBsaW5lTnVtYmVyOiBs
aW5lTnVtYmVyLCBjb2x1bW5OdW1iZXI6IGNvbHVtbk51bWJlciB9KTsKLSAgICAgICAgICAgIGFu
Y2hvci50ZXh0Q29udGVudCA9IFdlYkluc3BlY3Rvci5mb3JtYXRMaW5rVGV4dCh1aUxvY2F0aW9u
LnVpU291cmNlQ29kZS51cmwsIHVpTG9jYXRpb24ubGluZU51bWJlcik7Ci0gICAgICAgICAgICBh
bmNob3Iuc2V0QXR0cmlidXRlKCJwcmVmZXJyZWRfcGFuZWwiLCAic2NyaXB0cyIpOwotICAgICAg
ICAgICAgYW5jaG9yLnVpU291cmNlQ29kZSA9IHVpTG9jYXRpb24udWlTb3VyY2VDb2RlOwotICAg
ICAgICAgICAgYW5jaG9yLmxpbmVOdW1iZXIgPSB1aUxvY2F0aW9uLmxpbmVOdW1iZXI7Ci0gICAg
ICAgIH0KLSAgICAgICAgaWYgKHJhd1NvdXJjZUNvZGUuc291cmNlTWFwcGluZykKLSAgICAgICAg
ICAgIHVwZGF0ZUFuY2hvci5jYWxsKHRoaXMpOwotICAgICAgICByYXdTb3VyY2VDb2RlLmFkZEV2
ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUuRXZlbnRzLlNvdXJjZU1hcHBp
bmdVcGRhdGVkLCB1cGRhdGVBbmNob3IsIHRoaXMpOwotICAgICAgICByZXR1cm4gYW5jaG9yOwor
ICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVs
LkxpbmtpZmllcih0aGlzKTsKICAgICB9LAogCiAgICAgY3JlYXRlUGxhY2FyZDogZnVuY3Rpb24o
Y2FsbEZyYW1lKQpAQCAtNTc3LDYgKzU1Niw3MCBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVz
ZW50YXRpb25Nb2RlbFJlc291cmNlQmluZGluZy5wcm90b3R5cGUgPSB7CiAgICAgfQogfQogCisv
KioKKyAqIEBjb25zdHJ1Y3RvcgorICovCitXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRp
b25Nb2RlbC5MaW5raWZpZXIgPSBmdW5jdGlvbihtb2RlbCkKK3sKKyAgICB0aGlzLl9tb2RlbCA9
IG1vZGVsOworICAgIHRoaXMuX2FuY2hvcnNGb3JTY3JpcHRJZCA9IHt9OworfQorCitXZWJJbnNw
ZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5MaW5raWZpZXIucHJvdG90eXBlID0gewor
ICAgIGxpbmtpZnlMb2NhdGlvbjogZnVuY3Rpb24oc291cmNlVVJMLCBsaW5lTnVtYmVyLCBjb2x1
bW5OdW1iZXIsIGNsYXNzZXMpCisgICAgeworICAgICAgICB2YXIgbGlua1RleHQgPSBXZWJJbnNw
ZWN0b3IuZm9ybWF0TGlua1RleHQoc291cmNlVVJMLCBsaW5lTnVtYmVyKTsKKyAgICAgICAgdmFy
IGFuY2hvciA9IFdlYkluc3BlY3Rvci5saW5raWZ5VVJMQXNOb2RlKHNvdXJjZVVSTCwgbGlua1Rl
eHQsIGNsYXNzZXMsIGZhbHNlKTsKKyAgICAgICAgYW5jaG9yLnJhd0xvY2F0aW9uID0geyBsaW5l
TnVtYmVyOiBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXI6IGNvbHVtbk51bWJlciB9OworCisgICAg
ICAgIHZhciByYXdTb3VyY2VDb2RlID0gdGhpcy5fbW9kZWwuX3Jhd1NvdXJjZUNvZGVGb3JTY3Jp
cHRXaXRoVVJMKHNvdXJjZVVSTCk7CisgICAgICAgIGlmICghcmF3U291cmNlQ29kZSkgeworICAg
ICAgICAgICAgYW5jaG9yLnNldEF0dHJpYnV0ZSgicHJlZmVycmVkX3BhbmVsIiwgInJlc291cmNl
cyIpOworICAgICAgICAgICAgYW5jaG9yLnNldEF0dHJpYnV0ZSgibGluZV9udW1iZXIiLCBsaW5l
TnVtYmVyKTsKKyAgICAgICAgICAgIHJldHVybiBhbmNob3I7CisgICAgICAgIH0KKworICAgICAg
ICB2YXIgYW5jaG9ycyA9IHRoaXMuX2FuY2hvcnNGb3JTY3JpcHRJZFtyYXdTb3VyY2VDb2RlLmlk
XTsKKyAgICAgICAgaWYgKCFhbmNob3JzKSB7CisgICAgICAgICAgICBhbmNob3JzID0gW107Cisg
ICAgICAgICAgICB0aGlzLl9hbmNob3JzRm9yU2NyaXB0SWRbcmF3U291cmNlQ29kZS5pZF0gPSBh
bmNob3JzOworICAgICAgICAgICAgcmF3U291cmNlQ29kZS5hZGRFdmVudExpc3RlbmVyKFdlYklu
c3BlY3Rvci5SYXdTb3VyY2VDb2RlLkV2ZW50cy5Tb3VyY2VNYXBwaW5nVXBkYXRlZCwgdGhpcy5f
dXBkYXRlU291cmNlQW5jaG9ycywgdGhpcyk7CisgICAgICAgIH0KKworICAgICAgICBpZiAocmF3
U291cmNlQ29kZS5zb3VyY2VNYXBwaW5nKQorICAgICAgICAgICAgdGhpcy5fdXBkYXRlQW5jaG9y
KHJhd1NvdXJjZUNvZGUsIGFuY2hvcik7CisgICAgICAgIGFuY2hvcnMucHVzaChhbmNob3IpOwor
ICAgICAgICByZXR1cm4gYW5jaG9yOworICAgIH0sCisKKyAgICByZXNldDogZnVuY3Rpb24oKQor
ICAgIHsKKyAgICAgICAgZm9yICh2YXIgaWQgaW4gdGhpcy5fYW5jaG9yc0ZvclNjcmlwdElkKSB7
CisgICAgICAgICAgICB2YXIgcmF3U291cmNlQ29kZSA9IHRoaXMuX21vZGVsLl9yYXdTb3VyY2VD
b2RlW2lkXTsKKyAgICAgICAgICAgIGlmIChyYXdTb3VyY2VDb2RlKQorICAgICAgICAgICAgICAg
IHJhd1NvdXJjZUNvZGUucmVtb3ZlRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuUmF3U291cmNl
Q29kZS5FdmVudHMuU291cmNlTWFwcGluZ1VwZGF0ZWQsIHRoaXMuX3VwZGF0ZVNvdXJjZUFuY2hv
cnMsIHRoaXMpOworICAgICAgICB9CisgICAgICAgIHRoaXMuX2FuY2hvcnNGb3JTY3JpcHRJZCA9
IHt9OworICAgIH0sCisKKyAgICBfdXBkYXRlU291cmNlQW5jaG9yczogZnVuY3Rpb24oZXZlbnQp
CisgICAgeworICAgICAgICB2YXIgcmF3U291cmNlQ29kZSA9IGV2ZW50LnRhcmdldDsKKyAgICAg
ICAgdmFyIGFuY2hvcnMgPSB0aGlzLl9hbmNob3JzRm9yU2NyaXB0SWRbcmF3U291cmNlQ29kZS5p
ZF07CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYW5jaG9ycy5sZW5ndGg7ICsraSkKKyAg
ICAgICAgICAgIHRoaXMuX3VwZGF0ZUFuY2hvcihyYXdTb3VyY2VDb2RlLCBhbmNob3JzW2ldKTsK
KyAgICB9LAorCisgICAgX3VwZGF0ZUFuY2hvcjogZnVuY3Rpb24ocmF3U291cmNlQ29kZSwgYW5j
aG9yKQorICAgIHsKKyAgICAgICAgdmFyIHVpTG9jYXRpb24gPSByYXdTb3VyY2VDb2RlLnNvdXJj
ZU1hcHBpbmcucmF3TG9jYXRpb25Ub1VJTG9jYXRpb24oYW5jaG9yLnJhd0xvY2F0aW9uKTsKKyAg
ICAgICAgYW5jaG9yLnRleHRDb250ZW50ID0gV2ViSW5zcGVjdG9yLmZvcm1hdExpbmtUZXh0KHVp
TG9jYXRpb24udWlTb3VyY2VDb2RlLnVybCwgdWlMb2NhdGlvbi5saW5lTnVtYmVyKTsKKyAgICAg
ICAgYW5jaG9yLnNldEF0dHJpYnV0ZSgicHJlZmVycmVkX3BhbmVsIiwgInNjcmlwdHMiKTsKKyAg
ICAgICAgYW5jaG9yLnVpU291cmNlQ29kZSA9IHVpTG9jYXRpb24udWlTb3VyY2VDb2RlOworICAg
ICAgICBhbmNob3IubGluZU51bWJlciA9IHVpTG9jYXRpb24ubGluZU51bWJlcjsKKyAgICB9Cit9
CisKIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsUmVzb3VyY2VCaW5kaW5n
LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuUmVzb3VyY2VEb21haW5Nb2RlbEJp
bmRpbmcucHJvdG90eXBlOwogCiAvKioKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvRXZlbnRMaXN0ZW5lcnNTaWRlYmFyUGFuZS5qcyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRXZlbnRMaXN0ZW5lcnNTaWRlYmFyUGFuZS5qcwppbmRl
eCAyZWI4NjQ5NjAxYmZjMzA0OGYwNWZlN2FkY2I1NmNiNTIzOGZjM2RmLi43OTVlNmIxOGQ1MTNj
NGYxNGViYmIyY2E2NTg1MTVlYzk2MGU0MWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL0V2ZW50TGlzdGVuZXJzU2lkZWJhclBhbmUuanMKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FdmVudExpc3RlbmVyc1NpZGViYXJQYW5l
LmpzCkBAIC01Niw2ICs1Niw4IEBAIFdlYkluc3BlY3Rvci5FdmVudExpc3RlbmVyc1NpZGViYXJQ
YW5lID0gZnVuY3Rpb24oKQogICAgIHRoaXMuc2V0dGluZ3NTZWxlY3RFbGVtZW50LmFkZEV2ZW50
TGlzdGVuZXIoImNoYW5nZSIsIHRoaXMuX2NoYW5nZVNldHRpbmcuYmluZCh0aGlzKSwgZmFsc2Up
OwogCiAgICAgdGhpcy50aXRsZUVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5zZXR0aW5nc1NlbGVj
dEVsZW1lbnQpOworCisgICAgdGhpcy5fbGlua2lmaWVyID0gV2ViSW5zcGVjdG9yLmRlYnVnZ2Vy
UHJlc2VudGF0aW9uTW9kZWwuY3JlYXRlTGlua2lmaWVyKCk7CiB9CiAKIFdlYkluc3BlY3Rvci5F
dmVudExpc3RlbmVyc1NpZGViYXJQYW5lLl9vYmplY3RHcm91cE5hbWUgPSAiZXZlbnQtbGlzdGVu
ZXJzLXNpZGViYXItcGFuZSI7CkBAIC02NCw2ICs2Niw4IEBAIFdlYkluc3BlY3Rvci5FdmVudExp
c3RlbmVyc1NpZGViYXJQYW5lLnByb3RvdHlwZSA9IHsKICAgICB1cGRhdGU6IGZ1bmN0aW9uKG5v
ZGUpCiAgICAgewogICAgICAgICBSdW50aW1lQWdlbnQucmVsZWFzZU9iamVjdEdyb3VwKFdlYklu
c3BlY3Rvci5FdmVudExpc3RlbmVyc1NpZGViYXJQYW5lLl9vYmplY3RHcm91cE5hbWUpOworICAg
ICAgICB0aGlzLl9saW5raWZpZXIucmVzZXQoKTsKKwogICAgICAgICB2YXIgYm9keSA9IHRoaXMu
Ym9keUVsZW1lbnQ7CiAgICAgICAgIGJvZHkucmVtb3ZlQ2hpbGRyZW4oKTsKICAgICAgICAgdGhp
cy5zZWN0aW9ucyA9IFtdOwpAQCAtODQsNyArODgsNyBAQCBXZWJJbnNwZWN0b3IuRXZlbnRMaXN0
ZW5lcnNTaWRlYmFyUGFuZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgdmFyIHR5cGUg
PSBldmVudExpc3RlbmVyLnR5cGU7CiAgICAgICAgICAgICAgICAgdmFyIHNlY3Rpb24gPSBzZWN0
aW9uTWFwW3R5cGVdOwogICAgICAgICAgICAgICAgIGlmICghc2VjdGlvbikgewotICAgICAgICAg
ICAgICAgICAgICBzZWN0aW9uID0gbmV3IFdlYkluc3BlY3Rvci5FdmVudExpc3RlbmVyc1NlY3Rp
b24odHlwZSwgbm9kZS5pZCk7CisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gPSBuZXcgV2Vi
SW5zcGVjdG9yLkV2ZW50TGlzdGVuZXJzU2VjdGlvbih0eXBlLCBub2RlLmlkLCBzZWxmLl9saW5r
aWZpZXIpOwogICAgICAgICAgICAgICAgICAgICBzZWN0aW9uTWFwW3R5cGVdID0gc2VjdGlvbjsK
ICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbk5hbWVzLnB1c2godHlwZSk7CiAgICAgICAgICAg
ICAgICAgICAgIHNlbGYuc2VjdGlvbnMucHVzaChzZWN0aW9uKTsKQEAgLTEyNCwxMCArMTI4LDEx
IEBAIFdlYkluc3BlY3Rvci5FdmVudExpc3RlbmVyc1NpZGViYXJQYW5lLnByb3RvdHlwZSA9IHsK
IAogV2ViSW5zcGVjdG9yLkV2ZW50TGlzdGVuZXJzU2lkZWJhclBhbmUucHJvdG90eXBlLl9fcHJv
dG9fXyA9IFdlYkluc3BlY3Rvci5TaWRlYmFyUGFuZS5wcm90b3R5cGU7CiAKLVdlYkluc3BlY3Rv
ci5FdmVudExpc3RlbmVyc1NlY3Rpb24gPSBmdW5jdGlvbih0aXRsZSwgbm9kZUlkKQorV2ViSW5z
cGVjdG9yLkV2ZW50TGlzdGVuZXJzU2VjdGlvbiA9IGZ1bmN0aW9uKHRpdGxlLCBub2RlSWQsIGxp
bmtpZmllcikKIHsKICAgICB0aGlzLmV2ZW50TGlzdGVuZXJzID0gW107CiAgICAgdGhpcy5fbm9k
ZUlkID0gbm9kZUlkOworICAgIHRoaXMuX2xpbmtpZmllciA9IGxpbmtpZmllcjsKICAgICBXZWJJ
bnNwZWN0b3IuUHJvcGVydGllc1NlY3Rpb24uY2FsbCh0aGlzLCB0aXRsZSk7CiAKICAgICAvLyBD
aGFuZ2VkIGZyb20gYSBQcm9wZXJ0aWVzIExpc3QKQEAgLTE1OCw3ICsxNjMsNyBAQCBXZWJJbnNw
ZWN0b3IuRXZlbnRMaXN0ZW5lcnNTZWN0aW9uLnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFyIGxl
bmd0aCA9IGZpbHRlcmVkRXZlbnRMaXN0ZW5lcnMubGVuZ3RoOwogICAgICAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CiAgICAgICAgICAgICB2YXIgZXZlbnRMaXN0ZW5lciA9
IGZpbHRlcmVkRXZlbnRMaXN0ZW5lcnNbaV07Ci0gICAgICAgICAgICB2YXIgZXZlbnRMaXN0ZW5l
ckJhciA9IG5ldyBXZWJJbnNwZWN0b3IuRXZlbnRMaXN0ZW5lckJhcihldmVudExpc3RlbmVyLCB0
aGlzLl9ub2RlSWQpOworICAgICAgICAgICAgdmFyIGV2ZW50TGlzdGVuZXJCYXIgPSBuZXcgV2Vi
SW5zcGVjdG9yLkV2ZW50TGlzdGVuZXJCYXIoZXZlbnRMaXN0ZW5lciwgdGhpcy5fbm9kZUlkLCB0
aGlzLl9saW5raWZpZXIpOwogICAgICAgICAgICAgdGhpcy5ldmVudEJhcnMuYXBwZW5kQ2hpbGQo
ZXZlbnRMaXN0ZW5lckJhci5lbGVtZW50KTsKICAgICAgICAgfQogICAgIH0sCkBAIC0xNzEsMTMg
KzE3NiwxMyBAQCBXZWJJbnNwZWN0b3IuRXZlbnRMaXN0ZW5lcnNTZWN0aW9uLnByb3RvdHlwZSA9
IHsKIAogV2ViSW5zcGVjdG9yLkV2ZW50TGlzdGVuZXJzU2VjdGlvbi5wcm90b3R5cGUuX19wcm90
b19fID0gV2ViSW5zcGVjdG9yLlByb3BlcnRpZXNTZWN0aW9uLnByb3RvdHlwZTsKIAotV2ViSW5z
cGVjdG9yLkV2ZW50TGlzdGVuZXJCYXIgPSBmdW5jdGlvbihldmVudExpc3RlbmVyLCBub2RlSWQp
CitXZWJJbnNwZWN0b3IuRXZlbnRMaXN0ZW5lckJhciA9IGZ1bmN0aW9uKGV2ZW50TGlzdGVuZXIs
IG5vZGVJZCwgbGlua2lmaWVyKQogewogICAgIHRoaXMuZXZlbnRMaXN0ZW5lciA9IGV2ZW50TGlz
dGVuZXI7CiAgICAgdGhpcy5fbm9kZUlkID0gbm9kZUlkOwogICAgIFdlYkluc3BlY3Rvci5PYmpl
Y3RQcm9wZXJ0aWVzU2VjdGlvbi5jYWxsKHRoaXMpOwogICAgIHRoaXMuX3NldE5vZGVUaXRsZSgp
OwotICAgIHRoaXMuX3NldEZ1bmN0aW9uU3VidGl0bGUoKTsKKyAgICB0aGlzLl9zZXRGdW5jdGlv
blN1YnRpdGxlKGxpbmtpZmllcik7CiAgICAgdGhpcy5lZGl0YWJsZSA9IGZhbHNlOwogICAgIHRo
aXMuZWxlbWVudC5jbGFzc05hbWUgPSAiZXZlbnQtYmFyIjsgLyogQ2hhbmdlZCBmcm9tICJzZWN0
aW9uIiAqLwogICAgIHRoaXMuaGVhZGVyRWxlbWVudC5hZGRTdHlsZUNsYXNzKCJzb3VyY2UtY29k
ZSIpOwpAQCAtMjMxLDcgKzIzNiw3IEBAIFdlYkluc3BlY3Rvci5FdmVudExpc3RlbmVyQmFyLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy50aXRsZUVsZW1lbnQuYXBwZW5kQ2hpbGQoV2ViSW5z
cGVjdG9yLnBhbmVscy5lbGVtZW50cy5saW5raWZ5Tm9kZVJlZmVyZW5jZSh0aGlzLmV2ZW50TGlz
dGVuZXIubm9kZSkpOwogICAgIH0sCiAKLSAgICBfc2V0RnVuY3Rpb25TdWJ0aXRsZTogZnVuY3Rp
b24oKQorICAgIF9zZXRGdW5jdGlvblN1YnRpdGxlOiBmdW5jdGlvbihsaW5raWZpZXIpCiAgICAg
ewogICAgICAgICAvLyBSZXF1aXJlcyB0aGF0IEZ1bmN0aW9uLnRvU3RyaW5nKCkgcmV0dXJuIGF0
IGxlYXN0IHRoZSBmdW5jdGlvbidzIHNpZ25hdHVyZS4KICAgICAgICAgaWYgKHRoaXMuZXZlbnRM
aXN0ZW5lci5sb2NhdGlvbikgewpAQCAtMjQwLDcgKzI0NSw3IEBAIFdlYkluc3BlY3Rvci5FdmVu
dExpc3RlbmVyQmFyLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHZhciB1cmwgPSB0aGlzLmV2
ZW50TGlzdGVuZXIubG9jYXRpb24uc2NyaXB0SWQ7CiAgICAgICAgICAgICB2YXIgbGluZU51bWJl
ciA9IHRoaXMuZXZlbnRMaXN0ZW5lci5sb2NhdGlvbi5saW5lTnVtYmVyIC0gMTsKICAgICAgICAg
ICAgIHZhciBjb2x1bW5OdW1iZXIgPSAwOwotICAgICAgICAgICAgdmFyIHVybEVsZW1lbnQgPSBX
ZWJJbnNwZWN0b3IuZGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5saW5raWZ5TG9jYXRpb24odXJs
LCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpOworICAgICAgICAgICAgdmFyIHVybEVsZW1lbnQg
PSBsaW5raWZpZXIubGlua2lmeUxvY2F0aW9uKHVybCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVy
KTsKICAgICAgICAgICAgIHRoaXMuc3VidGl0bGVFbGVtZW50LmFwcGVuZENoaWxkKHVybEVsZW1l
bnQpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgdmFyIG1hdGNoID0gdGhpcy5ldmVu
dExpc3RlbmVyLmhhbmRsZXJCb2R5Lm1hdGNoKC9mdW5jdGlvbiAoW15cKF0rPylcKC8pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrUGFuZWwu
anMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtQYW5lbC5qcwpp
bmRleCAzYWExZjc2NDhmZWU2MGEyYWIyNWU1NGExZmY3ZmQ1Y2Q3YjgzOWRlLi4yNDBmYWM4MDQ5
ZDM2M2E0MjQ0ZTkyOWMyOWJmZmIyMThlNWU5NjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtQYW5lbC5qcwpAQCAtNTYsNiArNTYsNyBAQCBX
ZWJJbnNwZWN0b3IuTmV0d29ya0xvZ1ZpZXcgPSBmdW5jdGlvbihwYXJlbnRFbGVtZW50KQogCiAg
ICAgdGhpcy5fY3JlYXRlU3RhdHVzYmFyQnV0dG9ucygpOwogICAgIHRoaXMuX2NyZWF0ZUZpbHRl
clN0YXR1c0Jhckl0ZW1zKCk7CisgICAgdGhpcy5fbGlua2lmaWVyID0gV2ViSW5zcGVjdG9yLmRl
YnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuY3JlYXRlTGlua2lmaWVyKCk7CiAKICAgICBXZWJJbnNw
ZWN0b3IubmV0d29ya01hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuTmV0d29y
a01hbmFnZXIuRXZlbnRUeXBlcy5SZXNvdXJjZVN0YXJ0ZWQsIHRoaXMuX29uUmVzb3VyY2VTdGFy
dGVkLCB0aGlzKTsKICAgICBXZWJJbnNwZWN0b3IubmV0d29ya01hbmFnZXIuYWRkRXZlbnRMaXN0
ZW5lcihXZWJJbnNwZWN0b3IuTmV0d29ya01hbmFnZXIuRXZlbnRUeXBlcy5SZXNvdXJjZVVwZGF0
ZWQsIHRoaXMuX29uUmVzb3VyY2VVcGRhdGVkLCB0aGlzKTsKQEAgLTczNSw3ICs3MzYsNyBAQCBX
ZWJJbnNwZWN0b3IuTmV0d29ya0xvZ1ZpZXcucHJvdG90eXBlID0gewogCiAgICAgICAgIHRoaXMu
X21haW5SZXNvdXJjZUxvYWRUaW1lID0gLTE7CiAgICAgICAgIHRoaXMuX21haW5SZXNvdXJjZURP
TUNvbnRlbnRUaW1lID0gLTE7Ci0KKyAgICAgICAgdGhpcy5fbGlua2lmaWVyLnJlc2V0KCk7CiAg
ICAgfSwKIAogICAgIGdldCByZXNvdXJjZXMoKQpAQCAtMjA0NSw3ICsyMDQ2LDcgQEAgV2ViSW5z
cGVjdG9yLk5ldHdvcmtEYXRhR3JpZE5vZGUucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHRoaXMuX2lu
aXRpYXRvckNlbGwudGl0bGUgPSB0b3BGcmFtZS51cmwgKyAiOiIgKyB0b3BGcmFtZS5saW5lTnVt
YmVyOwotICAgICAgICAgICAgICAgIHZhciB1cmxFbGVtZW50ID0gV2ViSW5zcGVjdG9yLmRlYnVn
Z2VyUHJlc2VudGF0aW9uTW9kZWwubGlua2lmeUxvY2F0aW9uKHRvcEZyYW1lLnVybCwgdG9wRnJh
bWUubGluZU51bWJlciAtIDEsIDApOworICAgICAgICAgICAgICAgIHZhciB1cmxFbGVtZW50ID0g
dGhpcy5fcGFyZW50Vmlldy5fbGlua2lmaWVyLmxpbmtpZnlMb2NhdGlvbih0b3BGcmFtZS51cmws
IHRvcEZyYW1lLmxpbmVOdW1iZXIgLSAxLCAwKTsKICAgICAgICAgICAgICAgICB0aGlzLl9pbml0
aWF0b3JDZWxsLmFwcGVuZENoaWxkKHVybEVsZW1lbnQpOwogICAgICAgICAgICAgICAgIHRoaXMu
X2FwcGVuZFN1YnRpdGxlKHRoaXMuX2luaXRpYXRvckNlbGwsIFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiU2NyaXB0IikpOwogICAgICAgICAgICAgfSBlbHNlIHsgLy8gaW5pdGlhdG9yLnR5cGUgPT09
ICJwYXJzZXIiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1Byb2ZpbGVEYXRhR3JpZFRyZWUuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1Byb2ZpbGVEYXRhR3JpZFRyZWUuanMKaW5kZXggNTg1NTY4YzNhYmEwNjk4MWNlYzg1Mjlm
MTE0MmI5MGYyNjQzYjg3ZS4uY2Y0MGJjMjZlNzkwOTMwNTNmZDc5MmIzNzM3NTI4YjM0OWFmYjRm
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxl
RGF0YUdyaWRUcmVlLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
UHJvZmlsZURhdGFHcmlkVHJlZS5qcwpAQCAtOTgsNyArOTgsNyBAQCBXZWJJbnNwZWN0b3IuUHJv
ZmlsZURhdGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmICh0aGlzLnByb2ZpbGVO
b2RlLnVybCkgewogICAgICAgICAgICAgLy8gRklYTUUoNjI3MjUpOiBwcm9maWxlTm9kZSBzaG91
bGQgcmVmZXJlbmNlIGEgZGVidWdnZXIgbG9jYXRpb24uCiAgICAgICAgICAgICB2YXIgbGluZU51
bWJlciA9IHRoaXMucHJvZmlsZU5vZGUubGluZU51bWJlciA/IHRoaXMucHJvZmlsZU5vZGUubGlu
ZU51bWJlciAtIDEgOiAwOwotICAgICAgICAgICAgdmFyIHVybEVsZW1lbnQgPSBXZWJJbnNwZWN0
b3IuZGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5saW5raWZ5TG9jYXRpb24odGhpcy5wcm9maWxl
Tm9kZS51cmwsIGxpbmVOdW1iZXIsIDAsICJwcm9maWxlLW5vZGUtZmlsZSIpOworICAgICAgICAg
ICAgdmFyIHVybEVsZW1lbnQgPSB0aGlzLnByb2ZpbGVWaWV3Ll9saW5raWZpZXIubGlua2lmeUxv
Y2F0aW9uKHRoaXMucHJvZmlsZU5vZGUudXJsLCBsaW5lTnVtYmVyLCAwLCAicHJvZmlsZS1ub2Rl
LWZpbGUiKTsKICAgICAgICAgICAgIHVybEVsZW1lbnQuc3R5bGUubWF4V2lkdGggPSAiNzUlIjsK
ICAgICAgICAgICAgIGNlbGwuaW5zZXJ0QmVmb3JlKHVybEVsZW1lbnQsIGNlbGwuZmlyc3RDaGls
ZCk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvUHJvZmlsZVZpZXcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1Byb2ZpbGVWaWV3LmpzCmluZGV4IDJhMDNmODMwNTFkYTU0MWVmZTQxNDA5YzExYmRkMmFlODk0
MzFjZTIuLjA4NmVmYTRlY2FkNTI1MjAwOTg1NmFiMGE2MDBiODliYzQxYjFlMmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUHJvZmlsZVZpZXcuanMKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlVmlldy5qcwpAQCAt
OTYsNiArOTYsOCBAQCBXZWJJbnNwZWN0b3IuQ1BVUHJvZmlsZVZpZXcgPSBmdW5jdGlvbihwcm9m
aWxlKQogICAgICAgICBzZWxmLl91cGRhdGVQZXJjZW50QnV0dG9uKCk7CiAgICAgfQogCisgICAg
dGhpcy5fbGlua2lmaWVyID0gV2ViSW5zcGVjdG9yLmRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwu
Y3JlYXRlTGlua2lmaWVyKCk7CisKICAgICBQcm9maWxlckFnZW50LmdldFByb2ZpbGUodGhpcy5w
cm9maWxlLnR5cGVJZCwgdGhpcy5wcm9maWxlLnVpZCwgcHJvZmlsZUNhbGxiYWNrKTsKIH0KIApA
QCAtNDg1LDYgKzQ4Nyw3IEBAIFdlYkluc3BlY3Rvci5DUFVQcm9maWxlVmlldy5wcm90b3R5cGUg
PSB7CiAgICAgewogICAgICAgICB0aGlzLnJlc2V0QnV0dG9uLnZpc2libGUgPSBmYWxzZTsKICAg
ICAgICAgdGhpcy5wcm9maWxlRGF0YUdyaWRUcmVlLnJlc3RvcmUoKTsKKyAgICAgICAgdGhpcy5f
bGlua2lmaWVyLnJlc2V0KCk7CiAgICAgICAgIHRoaXMucmVmcmVzaCgpOwogICAgICAgICB0aGlz
LnJlZnJlc2hWaXNpYmxlRGF0YSgpOwogICAgIH0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lUGFuZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lUGFuZWwuanMKaW5kZXggMTU1MTdjZTYzOTdkZjRl
NTViNjY1MDA1NzYwZTIzMGUzYTBmMzgzNC4uMzY5ODFjMjhhNTA5NzY5ZGViOTg4NWY4ZmQxZjll
YmU3NjFhMjRjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9UaW1lbGluZVBhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvVGltZWxpbmVQYW5lbC5qcwpAQCAtMTA5LDYgKzEwOSw3IEBAIFdlYkluc3BlY3Rvci5UaW1l
bGluZVBhbmVsID0gZnVuY3Rpb24oKQogCiAgICAgdGhpcy5fcmVnaXN0ZXJTaG9ydGN1dHMoKTsK
ICAgICBXZWJJbnNwZWN0b3IudGltZWxpbmVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5z
cGVjdG9yLlRpbWVsaW5lTWFuYWdlci5FdmVudFR5cGVzLlRpbWVsaW5lRXZlbnRSZWNvcmRlZCwg
dGhpcy5fb25UaW1lbGluZUV2ZW50UmVjb3JkZWQsIHRoaXMpOworICAgIHRoaXMuX2xpbmtpZmll
ciA9IFdlYkluc3BlY3Rvci5kZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLmNyZWF0ZUxpbmtpZmll
cigpOwogfQogCiAvLyBEZWZpbmUgcm93IGhlaWdodCwgc2hvdWxkIGJlIGluIHN5bmMgd2l0aCBz
dHlsZXMgZm9yIHRpbWVsaW5lIGdyYXBocy4KQEAgLTExNiw2ICsxMTcsMTkgQEAgV2ViSW5zcGVj
dG9yLlRpbWVsaW5lUGFuZWwucm93SGVpZ2h0ID0gMTg7CiBXZWJJbnNwZWN0b3IuVGltZWxpbmVQ
YW5lbC5zaG9ydFJlY29yZFRocmVzaG9sZCA9IDAuMDE1OwogCiBXZWJJbnNwZWN0b3IuVGltZWxp
bmVQYW5lbC5wcm90b3R5cGUgPSB7CisgICAgX2xpbmtpZnlMb2NhdGlvbjogZnVuY3Rpb24odXJs
LCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCisgICAgeworICAgICAgICAvLyBGSVhNRSg2Mjcy
NSk6IHN0YWNrIHRyYWNlIGxpbmUvY29sdW1uIG51bWJlcnMgYXJlIG9uZS1iYXNlZC4KKyAgICAg
ICAgbGluZU51bWJlciA9IGxpbmVOdW1iZXIgPyBsaW5lTnVtYmVyIC0gMSA6IGxpbmVOdW1iZXI7
CisgICAgICAgIGNvbHVtbk51bWJlciA9IGNvbHVtbk51bWJlciA/IGNvbHVtbk51bWJlciAtIDEg
OiAwOworICAgICAgICByZXR1cm4gdGhpcy5fbGlua2lmaWVyLmxpbmtpZnlMb2NhdGlvbih1cmws
IGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgInRpbWVsaW5lLWRldGFpbHMiKTsKKyAgICB9LAor
CisgICAgX2xpbmtpZnlDYWxsRnJhbWU6IGZ1bmN0aW9uKGNhbGxGcmFtZSkKKyAgICB7CisgICAg
ICAgIHJldHVybiB0aGlzLl9saW5raWZ5TG9jYXRpb24oY2FsbEZyYW1lLnVybCwgY2FsbEZyYW1l
LmxpbmVOdW1iZXIsIGNhbGxGcmFtZS5jb2x1bW5OdW1iZXIpOworICAgIH0sCisKICAgICBfY3Jl
YXRlVG9wUGFuZTogZnVuY3Rpb24oKSB7CiAgICAgICAgIHZhciB0b3BQYW5lRWxlbWVudCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICAgICB0b3BQYW5lRWxlbWVudC5pZCA9
ICJ0aW1lbGluZS1vdmVydmlldy1wYW5lbCI7CkBAIC01MjgsNiArNTQyLDcgQEAgV2ViSW5zcGVj
dG9yLlRpbWVsaW5lUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9yZWZyZXNoKCk7
CiAgICAgICAgIHRoaXMuX2Nsb3NlUmVjb3JkRGV0YWlscygpOwogICAgICAgICB0aGlzLl9tb2Rl
bC5fcmVzZXQoKTsKKyAgICAgICAgdGhpcy5fbGlua2lmaWVyLnJlc2V0KCk7CiAgICAgfSwKIAog
ICAgIGVsZW1lbnRzVG9SZXN0b3JlU2Nyb2xsUG9zaXRpb25zRm9yOiBmdW5jdGlvbigpCkBAIC05
NjEsNiArOTc2LDcgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkR3JhcGhSb3cucHJvdG90
eXBlID0gewogCiBXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5Gb3JtYXR0ZWRSZWNvcmQgPSBm
dW5jdGlvbihyZWNvcmQsIHBhcmVudFJlY29yZCwgcGFuZWwsIHNjcmlwdERldGFpbHMpCiB7Cisg
ICAgdGhpcy5fcGFuZWwgPSBwYW5lbDsKICAgICB2YXIgcmVjb3JkVHlwZXMgPSBXZWJJbnNwZWN0
b3IuVGltZWxpbmVBZ2VudC5SZWNvcmRUeXBlOwogICAgIHZhciBzdHlsZSA9IHBhbmVsLl9yZWNv
cmRTdHlsZXNbcmVjb3JkLnR5cGVdOwogICAgIHRoaXMucGFyZW50ID0gcGFyZW50UmVjb3JkOwpA
QCAtMTA1MSw3ICsxMDY3LDcgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwuRm9ybWF0dGVk
UmVjb3JkLnByb3RvdHlwZSA9IHsKIAogICAgIF9nZW5lcmF0ZVBvcHVwQ29udGVudDogZnVuY3Rp
b24oY2FsY3VsYXRvciwgY2F0ZWdvcmllcykKICAgICB7Ci0gICAgICAgIHZhciBjb250ZW50SGVs
cGVyID0gbmV3IFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLlBvcHVwQ29udGVudEhlbHBlcih0
aGlzLnRpdGxlKTsKKyAgICAgICAgdmFyIGNvbnRlbnRIZWxwZXIgPSBuZXcgV2ViSW5zcGVjdG9y
LlRpbWVsaW5lUGFuZWwuUG9wdXBDb250ZW50SGVscGVyKHRoaXMudGl0bGUsIHRoaXMuX3BhbmVs
KTsKIAogICAgICAgICBpZiAodGhpcy5fY2hpbGRyZW4gJiYgdGhpcy5fY2hpbGRyZW4ubGVuZ3Ro
KSB7CiAgICAgICAgICAgICBjb250ZW50SGVscGVyLl9hcHBlbmRUZXh0Um93KFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiU2VsZiBUaW1lIiksIE51bWJlci5zZWNvbmRzVG9TdHJpbmcodGhpcy5fc2Vs
ZlRpbWUgKyAwLjAwMDEpKTsKQEAgLTExMzYsMjYgKzExNTIsMjYgQEAgV2ViSW5zcGVjdG9yLlRp
bWVsaW5lUGFuZWwuRm9ybWF0dGVkUmVjb3JkLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGNh
c2UgV2ViSW5zcGVjdG9yLlRpbWVsaW5lQWdlbnQuUmVjb3JkVHlwZS5HQ0V2ZW50OgogICAgICAg
ICAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIiVzIGNvbGxlY3RlZCIsIE51
bWJlci5ieXRlc1RvU3RyaW5nKHRoaXMuZGF0YS51c2VkSGVhcFNpemVEZWx0YSkpOwogICAgICAg
ICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuVGltZWxpbmVBZ2VudC5SZWNvcmRUeXBlLlRpbWVyRmly
ZToKLSAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zY3JpcHROYW1lID8gdGhpcy5fbGlua2lm
eUxvY2F0aW9uKHRoaXMuc2NyaXB0TmFtZSwgdGhpcy5zY3JpcHRMaW5lLCAwKSA6IHRoaXMuZGF0
YS50aW1lcklkOworICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNjcmlwdE5hbWUgPyB0aGlz
Ll9wYW5lbC5fbGlua2lmeUxvY2F0aW9uKHRoaXMuc2NyaXB0TmFtZSwgdGhpcy5zY3JpcHRMaW5l
LCAwKSA6IHRoaXMuZGF0YS50aW1lcklkOwogICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3Iu
VGltZWxpbmVBZ2VudC5SZWNvcmRUeXBlLkZ1bmN0aW9uQ2FsbDoKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gdGhpcy5zY3JpcHROYW1lID8gdGhpcy5fbGlua2lmeUxvY2F0aW9uKHRoaXMuc2NyaXB0
TmFtZSwgdGhpcy5zY3JpcHRMaW5lLCAwKSA6IG51bGw7CisgICAgICAgICAgICAgICAgcmV0dXJu
IHRoaXMuc2NyaXB0TmFtZSA/IHRoaXMuX3BhbmVsLl9saW5raWZ5TG9jYXRpb24odGhpcy5zY3Jp
cHROYW1lLCB0aGlzLnNjcmlwdExpbmUsIDApIDogbnVsbDsKICAgICAgICAgICAgIGNhc2UgV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lQWdlbnQuUmVjb3JkVHlwZS5GaXJlQW5pbWF0aW9uRnJhbWVFdmVu
dDoKLSAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zY3JpcHROYW1lID8gdGhpcy5fbGlua2lm
eUxvY2F0aW9uKHRoaXMuc2NyaXB0TmFtZSwgdGhpcy5zY3JpcHRMaW5lLCAwKSA6IHRoaXMuZGF0
YS5pZDsKKyAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zY3JpcHROYW1lID8gdGhpcy5fcGFu
ZWwuX2xpbmtpZnlMb2NhdGlvbih0aGlzLnNjcmlwdE5hbWUsIHRoaXMuc2NyaXB0TGluZSwgMCkg
OiB0aGlzLmRhdGEuaWQ7CiAgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5UaW1lbGluZUFn
ZW50LlJlY29yZFR5cGUuRXZlbnREaXNwYXRjaDoKICAgICAgICAgICAgICAgICByZXR1cm4gdGhp
cy5kYXRhID8gdGhpcy5kYXRhLnR5cGUgOiBudWxsOwogICAgICAgICAgICAgY2FzZSBXZWJJbnNw
ZWN0b3IuVGltZWxpbmVBZ2VudC5SZWNvcmRUeXBlLlBhaW50OgogICAgICAgICAgICAgICAgIHJl
dHVybiB0aGlzLmRhdGEud2lkdGggKyAiXHUyMDA5XHUwMGQ3XHUyMDA5IiArIHRoaXMuZGF0YS5o
ZWlnaHQ7CiAgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5UaW1lbGluZUFnZW50LlJlY29y
ZFR5cGUuVGltZXJJbnN0YWxsOgogICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuVGltZWxp
bmVBZ2VudC5SZWNvcmRUeXBlLlRpbWVyUmVtb3ZlOgotICAgICAgICAgICAgICAgIHJldHVybiB0
aGlzLnN0YWNrVHJhY2UgPyB0aGlzLl9saW5raWZ5Q2FsbEZyYW1lKHRoaXMuc3RhY2tUcmFjZVsw
XSkgOiB0aGlzLmRhdGEudGltZXJJZDsKKyAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zdGFj
a1RyYWNlID8gdGhpcy5fcGFuZWwuX2xpbmtpZnlDYWxsRnJhbWUodGhpcy5zdGFja1RyYWNlWzBd
KSA6IHRoaXMuZGF0YS50aW1lcklkOwogICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVBZ2VudC5SZWNvcmRUeXBlLlJlZ2lzdGVyQW5pbWF0aW9uRnJhbWVDYWxsYmFjazoKICAg
ICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRpbWVsaW5lQWdlbnQuUmVjb3JkVHlwZS5DYW5j
ZWxBbmltYXRpb25GcmFtZUNhbGxiYWNrOgotICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnN0
YWNrVHJhY2UgPyB0aGlzLl9saW5raWZ5Q2FsbEZyYW1lKHRoaXMuc3RhY2tUcmFjZVswXSkgOiB0
aGlzLmRhdGEuaWQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3RhY2tUcmFjZSA/IHRo
aXMuX3BhbmVsLl9saW5raWZ5Q2FsbEZyYW1lKHRoaXMuc3RhY2tUcmFjZVswXSkgOiB0aGlzLmRh
dGEuaWQ7CiAgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5UaW1lbGluZUFnZW50LlJlY29y
ZFR5cGUuUGFyc2VIVE1MOgogICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuVGltZWxpbmVB
Z2VudC5SZWNvcmRUeXBlLlJlY2FsY3VsYXRlU3R5bGVzOgotICAgICAgICAgICAgICAgIHJldHVy
biB0aGlzLnN0YWNrVHJhY2UgPyB0aGlzLl9saW5raWZ5Q2FsbEZyYW1lKHRoaXMuc3RhY2tUcmFj
ZVswXSkgOiBudWxsOworICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnN0YWNrVHJhY2UgPyB0
aGlzLl9wYW5lbC5fbGlua2lmeUNhbGxGcmFtZSh0aGlzLnN0YWNrVHJhY2VbMF0pIDogbnVsbDsK
ICAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRpbWVsaW5lQWdlbnQuUmVjb3JkVHlwZS5F
dmFsdWF0ZVNjcmlwdDoKLSAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy51cmwgPyB0aGlzLl9s
aW5raWZ5TG9jYXRpb24odGhpcy51cmwsIHRoaXMuZGF0YS5saW5lTnVtYmVyLCAwKSA6IG51bGw7
CisgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudXJsID8gdGhpcy5fcGFuZWwuX2xpbmtpZnlM
b2NhdGlvbih0aGlzLnVybCwgdGhpcy5kYXRhLmxpbmVOdW1iZXIsIDApIDogbnVsbDsKICAgICAg
ICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRpbWVsaW5lQWdlbnQuUmVjb3JkVHlwZS5YSFJSZWFk
eVN0YXRlQ2hhbmdlOgogICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuVGltZWxpbmVBZ2Vu
dC5SZWNvcmRUeXBlLlhIUkxvYWQ6CiAgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5UaW1l
bGluZUFnZW50LlJlY29yZFR5cGUuU2NoZWR1bGVSZXNvdXJjZVJlcXVlc3Q6CkBAIC0xMTcxLDE5
ICsxMTg3LDYgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwuRm9ybWF0dGVkUmVjb3JkLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgfQogICAgIH0sCiAKLSAgICBfbGlua2lmeUxvY2F0aW9uOiBm
dW5jdGlvbih1cmwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKLSAgICB7Ci0gICAgICAgIC8v
IEZJWE1FKDYyNzI1KTogc3RhY2sgdHJhY2UgbGluZS9jb2x1bW4gbnVtYmVycyBhcmUgb25lLWJh
c2VkLgotICAgICAgICBsaW5lTnVtYmVyID0gbGluZU51bWJlciA/IGxpbmVOdW1iZXIgLSAxIDog
bGluZU51bWJlcjsKLSAgICAgICAgY29sdW1uTnVtYmVyID0gY29sdW1uTnVtYmVyID8gY29sdW1u
TnVtYmVyIC0gMSA6IDA7Ci0gICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuZGVidWdnZXJQcmVz
ZW50YXRpb25Nb2RlbC5saW5raWZ5TG9jYXRpb24odXJsLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1i
ZXIsICJ0aW1lbGluZS1kZXRhaWxzIik7Ci0gICAgfSwKLQotICAgIF9saW5raWZ5Q2FsbEZyYW1l
OiBmdW5jdGlvbihjYWxsRnJhbWUpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fbGlua2lm
eUxvY2F0aW9uKGNhbGxGcmFtZS51cmwsIGNhbGxGcmFtZS5saW5lTnVtYmVyLCBjYWxsRnJhbWUu
Y29sdW1uTnVtYmVyKTsKLSAgICB9LAotCiAgICAgX2NhbGN1bGF0ZUFnZ3JlZ2F0ZWRTdGF0czog
ZnVuY3Rpb24oY2F0ZWdvcmllcykKICAgICB7CiAgICAgICAgIHRoaXMuX2FnZ3JlZ2F0ZWRTdGF0
cyA9IHt9OwpAQCAtMTIwNCw4ICsxMjA3LDkgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwu
Rm9ybWF0dGVkUmVjb3JkLnByb3RvdHlwZSA9IHsKICAgICB9CiB9CiAKLVdlYkluc3BlY3Rvci5U
aW1lbGluZVBhbmVsLlBvcHVwQ29udGVudEhlbHBlciA9IGZ1bmN0aW9uKHRpdGxlKQorV2ViSW5z
cGVjdG9yLlRpbWVsaW5lUGFuZWwuUG9wdXBDb250ZW50SGVscGVyID0gZnVuY3Rpb24odGl0bGUs
IHBhbmVsKQogeworICAgIHRoaXMuX3BhbmVsID0gcGFuZWw7CiAgICAgdGhpcy5fY29udGVudFRh
YmxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGFibGUiKTs7CiAgICAgdmFyIHRpdGxlQ2Vs
bCA9IHRoaXMuX2NyZWF0ZUNlbGwoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCIlcyAtIERldGFpbHMi
LCB0aXRsZSksICJ0aW1lbGluZS1kZXRhaWxzLXRpdGxlIik7CiAgICAgdGl0bGVDZWxsLmNvbFNw
YW4gPSAyOwpAQCAtMTI1MSw3ICsxMjU1LDcgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwu
UG9wdXBDb250ZW50SGVscGVyLnByb3RvdHlwZSA9IHsKIAogICAgIF9hcHBlbmRMaW5rUm93OiBm
dW5jdGlvbih0aXRsZSwgc2NyaXB0TmFtZSwgc2NyaXB0TGluZSkKICAgICB7Ci0gICAgICAgIHZh
ciBsaW5rID0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwuRm9ybWF0dGVkUmVjb3JkLnByb3Rv
dHlwZS5fbGlua2lmeUxvY2F0aW9uKHNjcmlwdE5hbWUsIHNjcmlwdExpbmUsIDAsICJ0aW1lbGlu
ZS1kZXRhaWxzIik7CisgICAgICAgIHZhciBsaW5rID0gdGhpcy5fcGFuZWwuX2xpbmtpZnlMb2Nh
dGlvbihzY3JpcHROYW1lLCBzY3JpcHRMaW5lLCAwLCAidGltZWxpbmUtZGV0YWlscyIpOwogICAg
ICAgICB0aGlzLl9hcHBlbmRFbGVtZW50Um93KHRpdGxlLCBsaW5rKTsKICAgICB9LAogCkBAIC0x
MjY2LDcgKzEyNzAsNyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5Qb3B1cENvbnRlbnRI
ZWxwZXIucHJvdG90eXBlID0gewogICAgICAgICAgICAgcm93LmFwcGVuZENoaWxkKHRoaXMuX2Ny
ZWF0ZUNlbGwoc3RhY2tGcmFtZS5mdW5jdGlvbk5hbWUgPyBzdGFja0ZyYW1lLmZ1bmN0aW9uTmFt
ZSA6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiKGFub255bW91cyBmdW5jdGlvbikiKSwgInRpbWVs
aW5lLWZ1bmN0aW9uLW5hbWUiKSk7CiAgICAgICAgICAgICByb3cuYXBwZW5kQ2hpbGQodGhpcy5f
Y3JlYXRlQ2VsbCgiIEAgIikpOwogICAgICAgICAgICAgdmFyIGxpbmtDZWxsID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgidGQiKTsKLSAgICAgICAgICAgIHZhciB1cmxFbGVtZW50ID0gV2ViSW5z
cGVjdG9yLlRpbWVsaW5lUGFuZWwuRm9ybWF0dGVkUmVjb3JkLnByb3RvdHlwZS5fbGlua2lmeUNh
bGxGcmFtZShzdGFja0ZyYW1lKTsKKyAgICAgICAgICAgIHZhciB1cmxFbGVtZW50ID0gdGhpcy5f
cGFuZWwuX2xpbmtpZnlDYWxsRnJhbWUoc3RhY2tGcmFtZSk7CiAgICAgICAgICAgICBsaW5rQ2Vs
bC5hcHBlbmRDaGlsZCh1cmxFbGVtZW50KTsKICAgICAgICAgICAgIHJvdy5hcHBlbmRDaGlsZChs
aW5rQ2VsbCk7CiAgICAgICAgICAgICBmcmFtZXNUYWJsZS5hcHBlbmRDaGlsZChyb3cpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcwppbmRleCA2
YWNlNzFlY2I1MzBjMmUxZjA5ZDVhY2I2ZmJjNDkwZTFlMTU4MjA2Li42ODIwOTQwMjZkNDVmYmEw
YjkyZmVkZGZkZWM3ZjBlZTBlODkyNWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcwpAQCAtNTA5LDYgKzUwOSw5IEBAIFdlYkluc3BlY3Rv
ci5kb0xvYWRlZERvbmUgPSBmdW5jdGlvbigpCiAgICAgdGhpcy5jb25zb2xlLmFkZEV2ZW50TGlz
dGVuZXIoV2ViSW5zcGVjdG9yLkNvbnNvbGVNb2RlbC5FdmVudHMuTWVzc2FnZUFkZGVkLCB0aGlz
Ll91cGRhdGVFcnJvckFuZFdhcm5pbmdDb3VudHMsIHRoaXMpOwogICAgIHRoaXMuY29uc29sZS5h
ZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Db25zb2xlTW9kZWwuRXZlbnRzLlJlcGVhdENv
dW50VXBkYXRlZCwgdGhpcy5fdXBkYXRlRXJyb3JBbmRXYXJuaW5nQ291bnRzLCB0aGlzKTsKIAor
ICAgIHRoaXMuZGVidWdnZXJNb2RlbCA9IG5ldyBXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbCgp
OworICAgIHRoaXMuZGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbCA9IG5ldyBXZWJJbnNwZWN0b3Iu
RGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbCgpOworCiAgICAgdGhpcy5kcmF3ZXIgPSBuZXcgV2Vi
SW5zcGVjdG9yLkRyYXdlcigpOwogICAgIHRoaXMuY29uc29sZVZpZXcgPSBuZXcgV2ViSW5zcGVj
dG9yLkNvbnNvbGVWaWV3KFdlYkluc3BlY3Rvci5Xb3JrZXJNYW5hZ2VyLmlzV29ya2VyRnJvbnRl
bmQoKSk7CiAKQEAgLTUyMSw4ICs1MjQsNiBAQCBXZWJJbnNwZWN0b3IuZG9Mb2FkZWREb25lID0g
ZnVuY3Rpb24oKQogICAgIEluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJJbnNwZWN0b3JEaXNwYXRj
aGVyKHRoaXMpOwogCiAgICAgdGhpcy5jc3NNb2RlbCA9IG5ldyBXZWJJbnNwZWN0b3IuQ1NTU3R5
bGVNb2RlbCgpOwotICAgIHRoaXMuZGVidWdnZXJNb2RlbCA9IG5ldyBXZWJJbnNwZWN0b3IuRGVi
dWdnZXJNb2RlbCgpOwotICAgIHRoaXMuZGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbCA9IG5ldyBX
ZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbCgpOwogCiAgICAgdGhpcy5zZWFy
Y2hDb250cm9sbGVyID0gbmV3IFdlYkluc3BlY3Rvci5TZWFyY2hDb250cm9sbGVyKCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109765</attachid>
            <date>2011-10-05 02:35:16 -0700</date>
            <delta_ts>2011-10-05 03:10:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-69146-20111005133513.patch</filename>
            <type>text/plain</type>
            <size>39697</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTY2ODgKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3YmQxOTc1Mzg1ZjUxODAxMWJkMDEx
Y2VhNTc3ODliZWY0NTMwYjE3Li43ZDBkZWRhYTVjODhiYzUyY2IwNmFhNmFmYWM5NTczZWU1OTQ1
N2UzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMTAtMDQgIElseWEgVGlraG9ub3Zza3kg
IDxsb2lzbG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGRlYnVnZ2Vy
UHJlc2VudGF0aW9Nb2RlbC5saW5raWZ5TG9jYXRpb24gbGVha3MgdXBkYXRlQW5jaG9yIGNsb3N1
cmUgaW5zdGFuY2VzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NjkxNDYKKworICAgICAgICBJbiBtYW55IHBsYWNlcyB3ZSB1c2UgbGlua2lmeUxvY2F0
aW9uIGZ1bmN0aW9uIHRvIHByb2R1Y2UgYSBsaW5rIG5vZGUgd2hpY2ggdXBkYXRlcyBhdXRvbWF0
aWNhbGx5IHdoZW4gdGhlIHNvdXJjZSBmaWxlIGlzIGNoYW5nZWQgb24gdGhlIGZseS4KKyAgICAg
ICAgU3VjaCBjaGFuZ2VzIGhhcHBlbiB3aGVuIHdlIHVzZSBwcmV0dHkgcHJpbnQgb3IgYW5vdGhl
ciBvcGVyYXRpb24gdGhhdCBjaGFuZ2VzIHRoZSBzb3VyY2UgY29kZSBzb21laG93LgorICAgICAg
ICBsaW5raWZ5TG9jYXRpb24gYXNzb2NpYXRlcyBhIG5ldyBpbnN0YW5jZSBvZiB1cGRhdGVBbmNo
b3IgY2xvc3VyZSB3aXRoIHRoZSBlYWNoIGxpbmsgbm9kZSBhbmQgYWRkIHRoZSBjbG9zdXJlIHRv
IHRoZSBTb3VyY2VNYXBwaW5nVXBkYXRlZCBldmVudCdzIGxpc3QuCisgICAgICAgIEFzIHRoZSBy
ZXN1bHQgdGhlIG5vZGU8LT5jbG9zdXJlIHBhaXJzIHdvdWxkbid0IGJlIGNvbGxlY3RlZCB1bnRp
bCByZXNldCB0aGUgVUkgYW5kIERlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdn
ZXIvbGlua2lmaWVyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yL2Rl
YnVnZ2VyL2xpbmtpZmllci5odG1sOiBBZGRlZC4KKwogMjAxMS0xMC0wNSAgSGFucyBXZW5uYm9y
ZyAgPGhhbnNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJlYmFzZWxpbmUgZmFzdC9yZXBhaW50
L2phcGFuZXNlLXJsLXNlbGVjdGlvbi1yZXBhaW50LWluLXJlZ2lvbnMuaHRtbApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2xpbmtpZmllci1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvbGlua2lmaWVyLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4zMzlkNjAwMzZhZTNhMWYwMDI1NjE4MzJkOTJjOTg5YzhmMWMxZmFhCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2xpbmtpZmllci1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwyOCBAQAorVGVzdHMgdGhhdCBMaW5raWZpZXIgd29ya3Mg
Y29ycmVjdGx5LgorCitUd28gYWRkRXZlbnRMaXN0ZW5lciBjYWxscyBleHBlY3RlZC4gVGhlIGZp
cnN0IGZvciAnZmFrZVVybC0xJyB0aGUgc2Vjb25kIGZvciAnZmFrZVVybC0yJy4KK1R3byByZW1v
dmVFdmVudExpc3RlbmVyIGNhbGxzIGV4cGVjdGVkLiBUaGUgZmlyc3QgZm9yICdmYWtlVXJsLTEn
IHRoZSBzZWNvbmQgZm9yICdmYWtlVXJsLTInLgorRGVidWdnZXIgd2FzIGVuYWJsZWQuCistLS0g
bGlua2lmeSBmYWtlVVJMLTEgZmlyc3QgdGltZSAtLS0KK0R1bW15UHJlc2VudGF0aW9uTW9kZWwu
X3Jhd1NvdXJjZUNvZGVGb3JTY3JpcHRXaXRoVVJMIHdhcyBjYWxsZWQgd2l0aCBhcmd1bWVudHMg
PSBbJ2Zha2VVcmwtMSddCitEdW1teVJhd1NvdXJjZUNvZGUuYWRkRXZlbnRMaXN0ZW5lciB3YXMg
Y2FsbGVkIGZvciBzb3VyY2Ugd2l0aCBVUkwgPSAnZmFrZVVybC0xJyB3aXRoIGFyZ3VtZW50cyA9
IFsnc291cmNlLW1hcHBpbmctdXBkYXRlZCcsIGZ1bmN0aW9uLCBvYmplY3RdCisKKy0tLSBsaW5r
aWZ5IGZha2VVUkwtMiBmaXJzdCB0aW1lIC0tLQorRHVtbXlQcmVzZW50YXRpb25Nb2RlbC5fcmF3
U291cmNlQ29kZUZvclNjcmlwdFdpdGhVUkwgd2FzIGNhbGxlZCB3aXRoIGFyZ3VtZW50cyA9IFsn
ZmFrZVVybC0yJ10KK0R1bW15UmF3U291cmNlQ29kZS5hZGRFdmVudExpc3RlbmVyIHdhcyBjYWxs
ZWQgZm9yIHNvdXJjZSB3aXRoIFVSTCA9ICdmYWtlVXJsLTInIHdpdGggYXJndW1lbnRzID0gWydz
b3VyY2UtbWFwcGluZy11cGRhdGVkJywgZnVuY3Rpb24sIG9iamVjdF0KKworLS0tIGxpbmtpZnkg
ZmFrZVVSTC0xIHNlY29uZCB0aW1lIC0tLQorRHVtbXlQcmVzZW50YXRpb25Nb2RlbC5fcmF3U291
cmNlQ29kZUZvclNjcmlwdFdpdGhVUkwgd2FzIGNhbGxlZCB3aXRoIGFyZ3VtZW50cyA9IFsnZmFr
ZVVybC0xJ10KKworLS0tIGxpbmtpZnkgZmFrZVVSTC0yIHNlY29uZCB0aW1lIC0tLQorRHVtbXlQ
cmVzZW50YXRpb25Nb2RlbC5fcmF3U291cmNlQ29kZUZvclNjcmlwdFdpdGhVUkwgd2FzIGNhbGxl
ZCB3aXRoIGFyZ3VtZW50cyA9IFsnZmFrZVVybC0yJ10KKworLS0tIHJlc2V0IC0tLQorRHVtbXlS
YXdTb3VyY2VDb2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIgd2FzIGNhbGxlZCBmb3Igc291cmNlIHdp
dGggaWQgPSAnZmFrZVVybC0xJyB3aXRoIGFyZ3VtZW50cyA9IFsnc291cmNlLW1hcHBpbmctdXBk
YXRlZCcsIGZ1bmN0aW9uLCBvYmplY3RdCitEdW1teVJhd1NvdXJjZUNvZGUucmVtb3ZlRXZlbnRM
aXN0ZW5lciB3YXMgY2FsbGVkIGZvciBzb3VyY2Ugd2l0aCBpZCA9ICdmYWtlVXJsLTInIHdpdGgg
YXJndW1lbnRzID0gWydzb3VyY2UtbWFwcGluZy11cGRhdGVkJywgZnVuY3Rpb24sIG9iamVjdF0K
KworLS0tIGxvY2F0aW9uIHVwZGF0ZSAtLS0KK29yaWdpbmFsIGxvY2F0aW9uOiBsaW5raWZpZXIu
aHRtbDo5MworcHJldHR5IHByaW50ZWQgbG9jYXRpb246IGxpbmtpZmllci5odG1sOjk5CityZXZl
cnRlZCBsb2NhdGlvbjogbGlua2lmaWVyLmh0bWw6OTMKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2xpbmtpZmllci5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2RlYnVnZ2VyL2xpbmtpZmllci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYwM2Y2Y2YxYzUwYmZiNzI5
ZmIwYzc5MWY1YmJmNDVlNTkyZDI5MDEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZGVidWdnZXIvbGlua2lmaWVyLmh0bWwKQEAgLTAsMCArMSwxMjQgQEAKKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVj
dG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL2RlYnVnZ2VyLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKworZnVuY3Rpb24g
dGVzdCgpCit7CisgICAgSW5zcGVjdG9yVGVzdC5zdGFydERlYnVnZ2VyVGVzdChkZWJ1Z2dlclRl
c3QpOworCisgICAgZnVuY3Rpb24gZGVidWdnZXJUZXN0KCkKKyAgICB7CisgICAgICAgIGlmICgh
V2ViSW5zcGVjdG9yLmRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuX3Jhd1NvdXJjZUNvZGVbV2Vi
SW5zcGVjdG9yLm1haW5SZXNvdXJjZS5fZG9jdW1lbnRVUkxdKSB7CisgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmFkZFNuaWZmZXIoV2ViSW5zcGVjdG9yLmRlYnVnZ2VyUHJlc2VudGF0aW9uTW9k
ZWwsICJfYWRkU2NyaXB0IiwgZGVidWdnZXJUZXN0KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorCisgICAgICAgIHZhciBmYWtlVVJMMSA9ICJmYWtlVXJsLTEiOworICAgICAgICB2
YXIgZmFrZVVSTDIgPSAiZmFrZVVybC0yIjsKKworICAgICAgICBEdW1teVJhd1NvdXJjZUNvZGUg
PSBmdW5jdGlvbih1cmwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHRoaXMudXJsID0gdXJsOwor
ICAgICAgICAgICAgdGhpcy5pZCA9IHVybDsKKyAgICAgICAgfQorCisgICAgICAgIER1bW15UmF3
U291cmNlQ29kZS5wcm90b3R5cGUgPSB7CisgICAgICAgICAgICBhZGRFdmVudExpc3RlbmVyOiBm
dW5jdGlvbihldmVudE5hbWUsIGNhbGxiYWNrLCBvYmplY3QpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIkR1bW15UmF3U291cmNlQ29kZS5h
ZGRFdmVudExpc3RlbmVyIHdhcyBjYWxsZWQgZm9yIHNvdXJjZSB3aXRoIFVSTCA9ICciICsgdGhp
cy51cmwgKyAiJyB3aXRoIGFyZ3VtZW50cyA9IFsnIiArIGV2ZW50TmFtZSArICInLCAiICsgKHR5
cGVvZiBjYWxsYmFjaykgKyAiLCAiICsgKHR5cGVvZiBvYmplY3QpICsgIl0iKTsKKyAgICAgICAg
ICAgIH0sCisKKyAgICAgICAgICAgIHJlbW92ZUV2ZW50TGlzdGVuZXI6IGZ1bmN0aW9uKGV2ZW50
TmFtZSwgY2FsbGJhY2ssIG9iamVjdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiRHVtbXlSYXdTb3VyY2VDb2RlLnJlbW92ZUV2ZW50TGlz
dGVuZXIgd2FzIGNhbGxlZCBmb3Igc291cmNlIHdpdGggaWQgPSAnIiArIHRoaXMudXJsICsgIicg
d2l0aCBhcmd1bWVudHMgPSBbJyIgKyBldmVudE5hbWUgKyAiJywgIiArICh0eXBlb2YgY2FsbGJh
Y2spICsgIiwgIiArICh0eXBlb2Ygb2JqZWN0KSArICJdIik7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKworICAgICAgICBEdW1teVByZXNlbnRhdGlvbk1vZGVsID0gZnVuY3Rpb24oKQorICAg
ICAgICB7CisgICAgICAgICAgICB0aGlzLl9yYXdTb3VyY2VDb2RlID0gW107CisgICAgICAgIH0K
KworICAgICAgICBEdW1teVByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZSA9IHsKKyAgICAgICAg
ICAgIF9yYXdTb3VyY2VDb2RlRm9yU2NyaXB0OiBmdW5jdGlvbihpZCkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiRHVtbXlQcmVzZW50YXRp
b25Nb2RlbC5fcmF3U291cmNlQ29kZUZvclNjcmlwdCB3YXMgY2FsbGVkIHdpdGggYXJndW1lbnRz
ID0gWyciICsgaWQgKyAiJ10iKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fcmF3U291
cmNlQ29kZVtpZF07CisgICAgICAgICAgICB9LAorCisgICAgICAgICAgICBfcmF3U291cmNlQ29k
ZUZvclNjcmlwdFdpdGhVUkw6IGZ1bmN0aW9uKHNvdXJjZVVSTCkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiRHVtbXlQcmVzZW50YXRpb25N
b2RlbC5fcmF3U291cmNlQ29kZUZvclNjcmlwdFdpdGhVUkwgd2FzIGNhbGxlZCB3aXRoIGFyZ3Vt
ZW50cyA9IFsnIiArIHNvdXJjZVVSTCArICInXSIpOworICAgICAgICAgICAgICAgIHZhciByYXdT
b3VyY2VDb2RlID0gdGhpcy5fcmF3U291cmNlQ29kZVtzb3VyY2VVUkxdOworICAgICAgICAgICAg
ICAgIGlmIChyYXdTb3VyY2VDb2RlKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmF3U291
cmNlQ29kZTsKKyAgICAgICAgICAgICAgICByYXdTb3VyY2VDb2RlID0gbmV3IER1bW15UmF3U291
cmNlQ29kZShzb3VyY2VVUkwpOworICAgICAgICAgICAgICAgIHRoaXMuX3Jhd1NvdXJjZUNvZGVb
c291cmNlVVJMXSA9IHJhd1NvdXJjZUNvZGU7CisgICAgICAgICAgICAgICAgcmV0dXJuIHJhd1Nv
dXJjZUNvZGU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICB2YXIgZHVtbXlQ
cmVzZW50YXRpb25Nb2RlbCA9IG5ldyBEdW1teVByZXNlbnRhdGlvbk1vZGVsKCk7CisKKyAgICAg
ICAgdmFyIGxpbmtpZmllciA9IG5ldyBXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25N
b2RlbC5MaW5raWZpZXIoZHVtbXlQcmVzZW50YXRpb25Nb2RlbCk7CisKKyAgICAgICAgSW5zcGVj
dG9yVGVzdC5hZGRSZXN1bHQoIi0tLSBsaW5raWZ5IGZha2VVUkwtMSBmaXJzdCB0aW1lIC0tLSIp
OworICAgICAgICBsaW5raWZpZXIubGlua2lmeUxvY2F0aW9uKGZha2VVUkwxLCA0MiwgMjYsICJm
YWtlLWNsYXNzLW5hbWUiKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIiIpOwor
CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCItLS0gbGlua2lmeSBmYWtlVVJMLTIg
Zmlyc3QgdGltZSAtLS0iKTsKKyAgICAgICAgbGlua2lmaWVyLmxpbmtpZnlMb2NhdGlvbihmYWtl
VVJMMiwgNDIsIDI2LCAiZmFrZS1jbGFzcy1uYW1lIik7CisgICAgICAgIEluc3BlY3RvclRlc3Qu
YWRkUmVzdWx0KCIiKTsKKworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiLS0tIGxp
bmtpZnkgZmFrZVVSTC0xIHNlY29uZCB0aW1lIC0tLSIpOworICAgICAgICBsaW5raWZpZXIubGlu
a2lmeUxvY2F0aW9uKGZha2VVUkwxLCA5NywgMjMsICJmYWtlLWNsYXNzLW5hbWUiKTsKKyAgICAg
ICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIiIpOworCisgICAgICAgIEluc3BlY3RvclRlc3Qu
YWRkUmVzdWx0KCItLS0gbGlua2lmeSBmYWtlVVJMLTIgc2Vjb25kIHRpbWUgLS0tIik7CisgICAg
ICAgIGxpbmtpZmllci5saW5raWZ5TG9jYXRpb24oZmFrZVVSTDIsIDQsIDIsICJmYWtlLWNsYXNz
LW5hbWUiKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIiIpOworCisgICAgICAg
IEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCItLS0gcmVzZXQgLS0tIik7CisgICAgICAgIGxpbmtp
Zmllci5yZXNldCgpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiIik7CisKKyAg
ICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIi0tLSBsb2NhdGlvbiB1cGRhdGUgLS0tIik7
CisKKyAgICAgICAgZnVuY3Rpb24gZHVtbXlGdW5jdGlvblRvQmVQcmV0dHlQcmludGVkKCkgeyBJ
bnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiIik7IGNvbnNvbGUuZXJyb3IoIiIpOyB9CisKKyAgICAg
ICAgbGlua2lmaWVyID0gV2ViSW5zcGVjdG9yLmRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuY3Jl
YXRlTGlua2lmaWVyKCk7CisgICAgICAgIHZhciBsaW5rID0gbGlua2lmaWVyLmxpbmtpZnlMb2Nh
dGlvbihXZWJJbnNwZWN0b3IubWFpblJlc291cmNlLl9kb2N1bWVudFVSTCwgOTIsIDAsICJkdW1t
eS1jbGFzcyIpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgib3JpZ2luYWwgbG9j
YXRpb246ICIgKyBsaW5rLnRleHRDb250ZW50KTsKKworICAgICAgICBJbnNwZWN0b3JUZXN0LmFk
ZFNuaWZmZXIobGlua2lmaWVyLCAiX3VwZGF0ZUFuY2hvciIsIGxpbmtVcGRhdGVkKTsKKyAgICAg
ICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuc2V0Rm9ybWF0U291cmNl
KHRydWUpOworCisgICAgICAgIGZ1bmN0aW9uIGxpbmtVcGRhdGVkKCkKKyAgICAgICAgeworICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoInByZXR0eSBwcmludGVkIGxvY2F0aW9u
OiAiICsgbGluay50ZXh0Q29udGVudCk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFNu
aWZmZXIobGlua2lmaWVyLCAiX3VwZGF0ZUFuY2hvciIsIGxpbmtSZXZlcnRlZCk7CisgICAgICAg
ICAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5zZXRGb3JtYXRTb3Vy
Y2UoZmFsc2UpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gbGlua1JldmVydGVkKCkK
KyAgICAgICAgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoInJldmVydGVk
IGxvY2F0aW9uOiAiICsgbGluay50ZXh0Q29udGVudCk7CisgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmNvbXBsZXRlVGVzdCgpOworICAgICAgICB9CisgICAgfQorfQorCis8L3NjcmlwdD4KKzwv
aGVhZD4KKworPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHA+CitUZXN0cyB0aGF0IExpbmtp
ZmllciB3b3JrcyBjb3JyZWN0bHkuCis8cD4KK1R3byBhZGRFdmVudExpc3RlbmVyIGNhbGxzIGV4
cGVjdGVkLiBUaGUgZmlyc3QgZm9yICdmYWtlVXJsLTEnIHRoZSBzZWNvbmQgZm9yICdmYWtlVXJs
LTInLjxicj4KK1R3byByZW1vdmVFdmVudExpc3RlbmVyIGNhbGxzIGV4cGVjdGVkLiBUaGUgZmly
c3QgZm9yICdmYWtlVXJsLTEnIHRoZSBzZWNvbmQgZm9yICdmYWtlVXJsLTInLjxicj4KKworPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGNmYTJhYzMyOGVmYjg4ZmMzNjc3NjBiMjkwMzli
NjFkMTFjMDI2ZGYuLjQ2YmU2MTE0MzM1MjUxZTRlZTZlNTVkOThmYzYyM2Y5ZmY2ZmJmNDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSw1OCBAQAorMjAxMS0xMC0wNCAgSWx5YSBUaWtob25vdnNreSAg
PGxvaXNsb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogZGVidWdnZXJQ
cmVzZW50YXRpb01vZGVsLmxpbmtpZnlMb2NhdGlvbiBsZWFrcyB1cGRhdGVBbmNob3IgY2xvc3Vy
ZSBpbnN0YW5jZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02OTE0NgorCisgICAgICAgIEluIG1hbnkgcGxhY2VzIHdlIHVzZSBsaW5raWZ5TG9jYXRp
b24gZnVuY3Rpb24gdG8gcHJvZHVjZSBhIGxpbmsgbm9kZSB3aGljaCB1cGRhdGVzIGF1dG9tYXRp
Y2FsbHkgd2hlbiB0aGUgc291cmNlIGZpbGUgaXMgY2hhbmdlZCBvbiB0aGUgZmx5LgorICAgICAg
ICBTdWNoIGNoYW5nZXMgaGFwcGVuIHdoZW4gd2UgdXNlIHByZXR0eSBwcmludCBvciBhbm90aGVy
IG9wZXJhdGlvbiB0aGF0IGNoYW5nZXMgdGhlIHNvdXJjZSBjb2RlIHNvbWVob3cuCisgICAgICAg
IGxpbmtpZnlMb2NhdGlvbiBhc3NvY2lhdGVzIGEgbmV3IGluc3RhbmNlIG9mIHVwZGF0ZUFuY2hv
ciBjbG9zdXJlIHdpdGggdGhlIGVhY2ggbGluayBub2RlIGFuZCBhZGQgdGhlIGNsb3N1cmUgdG8g
dGhlIFNvdXJjZU1hcHBpbmdVcGRhdGVkIGV2ZW50J3MgbGlzdC4KKyAgICAgICAgQXMgdGhlIHJl
c3VsdCB0aGUgbm9kZTwtPmNsb3N1cmUgcGFpcnMgd291bGRuJ3QgYmUgY29sbGVjdGVkIHVudGls
IHJlc2V0IHRoZSBVSSBhbmQgRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBpbnNwZWN0b3IvZGVi
dWdnZXIvbGlua2lmaWVyLmh0bWwKKworICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvQ29u
c29sZU1lc3NhZ2UuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2VJbXBs
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZUltcGwucHJvdG90eXBlLl9s
aW5raWZ5TG9jYXRpb24pOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvQ29uc29sZVZp
ZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcucHJvdG90eXBlLl9jb25z
b2xlQ2xlYXJlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29uc29sZUNvbW1hbmRSZXN1bHQp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLmNyZWF0ZSk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuY3JlYXRlVGV4dE1lc3NhZ2UpOgorICAgICAg
ICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5qczoKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZS5j
cmVhdGVMaW5raWZpZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0
aW9uTW9kZWwuTGlua2lmaWVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNl
bnRhdGlvbk1vZGVsLkxpbmtpZmllci5wcm90b3R5cGUubGlua2lmeUxvY2F0aW9uKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLkxpbmtpZmllci5wcm90
b3R5cGUucmVzZXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9u
TW9kZWwuTGlua2lmaWVyLnByb3RvdHlwZS5fdXBkYXRlU291cmNlQW5jaG9ycyk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5MaW5raWZpZXIucHJvdG90
eXBlLl91cGRhdGVBbmNob3IpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRXZlbnRM
aXN0ZW5lcnNTaWRlYmFyUGFuZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FdmVudExpc3Rl
bmVyc1NpZGViYXJQYW5lLnByb3RvdHlwZS51cGRhdGUuY2FsbGJhY2spOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkV2ZW50TGlzdGVuZXJzU2lkZWJhclBhbmUucHJvdG90eXBlLnVwZGF0ZSk6Cisg
ICAgICAgICgpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya1BhbmVsLmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtMb2dWaWV3KToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5OZXR3b3JrTG9nVmlldy5wcm90b3R5cGUuX3Jlc2V0KToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5OZXR3b3JrRGF0YUdyaWROb2RlLnByb3RvdHlwZS5fcmVmcmVzaEluaXRpYXRvckNl
bGwpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUHJvZmlsZURhdGFHcmlkVHJlZS5q
czoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9maWxlRGF0YUdyaWROb2RlLnByb3RvdHlwZS5j
cmVhdGVDZWxsKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVWaWV3Lmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNQVVByb2ZpbGVWaWV3KToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5DUFVQcm9maWxlVmlldy5wcm90b3R5cGUuX3Jlc2V0Q2xpY2tlZCk6CisgICAgICAg
ICogaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZVBhbmVsLmpzOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlRpbWVsaW5lUGFuZWwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFu
ZWwucHJvdG90eXBlLl9saW5raWZ5TG9jYXRpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRp
bWVsaW5lUGFuZWwucHJvdG90eXBlLl9saW5raWZ5Q2FsbEZyYW1lKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5UaW1lbGluZVBhbmVsLnByb3RvdHlwZS5fY2xlYXJQYW5lbCk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5Gb3JtYXR0ZWRSZWNvcmQpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwuRm9ybWF0dGVkUmVjb3JkLnByb3RvdHlwZS5fZ2VuZXJh
dGVQb3B1cENvbnRlbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwuRm9y
bWF0dGVkUmVjb3JkLnByb3RvdHlwZS5fZ2V0UmVjb3JkRGV0YWlscyk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuVGltZWxpbmVQYW5lbC5Qb3B1cENvbnRlbnRIZWxwZXIpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwuUG9wdXBDb250ZW50SGVscGVyLnByb3RvdHlwZS5fYXBw
ZW5kTGlua1Jvdyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5Qb3B1cENv
bnRlbnRIZWxwZXIucHJvdG90eXBlLl9hcHBlbmRTdGFja1RyYWNlKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qczoKKwogMjAxMS0xMC0wNSAgS2VudCBUYW11cmEg
IDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgSW5wdXQgc3R5bGVzIGFyZSB1bmV4cGVj
dGVkbHkgc2hhcmVkIHJlZ2FyZGxlc3Mgb2YgcmVxdWlyZWQgc3RhdHVzIGRpZmZlcmVuY2UuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVNZXNz
YWdlLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xlTWVzc2Fn
ZS5qcwppbmRleCAzZTcwODNmNTI4ZWI1MWY2MWMzMGQ4MTE2YTNkZmY2NGNiZjE2MmNlLi5kN2E0
MGMwZDcyNWJkNDUxMDBmMTNmNjUyN2YwNjcyODQ0NzQwNWViIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVNZXNzYWdlLmpzCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29uc29sZU1lc3NhZ2UuanMKQEAgLTI4LDI4
ICsyOCwxOSBAQAogICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuQ29uc29sZU1lc3Nh
Z2UuY3JlYXRlID0gZnVuY3Rpb24oc291cmNlLCB0eXBlLCBsZXZlbCwgbGluZSwgdXJsLCByZXBl
YXRDb3VudCwgbWVzc2FnZSwgcGFyYW1ldGVycywgc3RhY2tUcmFjZSwgcmVxdWVzdCkKLXsKLSAg
ICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZUltcGwoc291cmNlLCB0eXBl
LCBsZXZlbCwgbGluZSwgdXJsLCByZXBlYXRDb3VudCwgbWVzc2FnZSwgcGFyYW1ldGVycywgc3Rh
Y2tUcmFjZSwgcmVxdWVzdCk7Ci19Ci0KLVdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5jcmVh
dGVUZXh0TWVzc2FnZSA9IGZ1bmN0aW9uKHRleHQsIGxldmVsKQotewotICAgIGxldmVsID0gbGV2
ZWwgfHwgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VMZXZlbC5Mb2c7Ci0gICAg
cmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2VJbXBsKFdlYkluc3BlY3Rvci5D
b25zb2xlTWVzc2FnZS5NZXNzYWdlU291cmNlLkNvbnNvbGVBUEksIFdlYkluc3BlY3Rvci5Db25z
b2xlTWVzc2FnZS5NZXNzYWdlVHlwZS5Mb2csIGxldmVsLCAwLCBudWxsLCAxLCBudWxsLCBbdGV4
dF0sIG51bGwpOwotfQotCiAvKioKICAqIEBjb25zdHJ1Y3RvcgogICogQGV4dGVuZHMge1dlYklu
c3BlY3Rvci5Db25zb2xlTWVzc2FnZX0KKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkRlYnVnZ2Vy
UHJlc2VudGF0aW9uTW9kZWwuTGlua2lmaWVyfSBsaW5raWZpZXIKICAqIEBwYXJhbSB7QXJyYXku
PFJ1bnRpbWVBZ2VudC5SZW1vdGVPYmplY3Q+PX0gcGFyYW1ldGVycwogICogQHBhcmFtIHtDb25z
b2xlQWdlbnQuU3RhY2tUcmFjZT19IHN0YWNrVHJhY2UKICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9y
LlJlc291cmNlPX0gcmVxdWVzdAogICovCi1XZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2VJbXBs
ID0gZnVuY3Rpb24oc291cmNlLCB0eXBlLCBsZXZlbCwgbGluZSwgdXJsLCByZXBlYXRDb3VudCwg
bWVzc2FnZSwgcGFyYW1ldGVycywgc3RhY2tUcmFjZSwgcmVxdWVzdCkKK1dlYkluc3BlY3Rvci5D
b25zb2xlTWVzc2FnZUltcGwgPSBmdW5jdGlvbihzb3VyY2UsIHR5cGUsIGxldmVsLCBsaW5lLCB1
cmwsIHJlcGVhdENvdW50LCBtZXNzYWdlLCBsaW5raWZpZXIsIHBhcmFtZXRlcnMsIHN0YWNrVHJh
Y2UsIHJlcXVlc3QpCiB7CiAgICAgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLmNhbGwoKTsK
IAorICAgIHRoaXMuX2xpbmtpZmllciA9IGxpbmtpZmllcjsKICAgICB0aGlzLnNvdXJjZSA9IHNv
dXJjZTsKICAgICB0aGlzLnR5cGUgPSB0eXBlOwogICAgIHRoaXMubGV2ZWwgPSBsZXZlbDsKQEAg
LTE5NCw3ICsxODUsNyBAQCBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2VJbXBsLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgLy8gRklYTUUoNjI3MjUpOiBzdGFjayB0cmFjZSBsaW5lL2NvbHVtbiBu
dW1iZXJzIGFyZSBvbmUtYmFzZWQuCiAgICAgICAgIGxpbmVOdW1iZXIgPSBsaW5lTnVtYmVyID8g
bGluZU51bWJlciAtIDEgOiB1bmRlZmluZWQ7CiAgICAgICAgIGNvbHVtbk51bWJlciA9IGNvbHVt
bk51bWJlciA/IGNvbHVtbk51bWJlciAtIDEgOiAwOwotICAgICAgICByZXR1cm4gV2ViSW5zcGVj
dG9yLmRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwubGlua2lmeUxvY2F0aW9uKHVybCwgbGluZU51
bWJlciwgY29sdW1uTnVtYmVyLCAiY29uc29sZS1tZXNzYWdlLXVybCIpOworICAgICAgICByZXR1
cm4gdGhpcy5fbGlua2lmaWVyLmxpbmtpZnlMb2NhdGlvbih1cmwsIGxpbmVOdW1iZXIsIGNvbHVt
bk51bWJlciwgImNvbnNvbGUtbWVzc2FnZS11cmwiKTsKICAgICB9LAogCiAgICAgX2xpbmtpZnlD
YWxsRnJhbWU6IGZ1bmN0aW9uKGNhbGxGcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvQ29uc29sZVZpZXcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVWaWV3LmpzCmluZGV4IGU0MTI0MzJjZDlmZGYzOWJkY2U3
NDM5MGYyMTVhNmNmZTk3ZmY2ZDQuLjNiMTFlNzM1ZDU2NTFhMjc0NjRlYjcxMTc2M2EzOWM5MGYw
N2E3YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29u
c29sZVZpZXcuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db25z
b2xlVmlldy5qcwpAQCAtMTEwLDYgKzExMCw4IEBAIFdlYkluc3BlY3Rvci5Db25zb2xlVmlldyA9
IGZ1bmN0aW9uKGhpZGVDb250ZXh0U2VsZWN0b3IpCiAKICAgICBXZWJJbnNwZWN0b3IuY29uc29s
ZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Db25zb2xlTW9kZWwuRXZlbnRzLk1lc3Nh
Z2VBZGRlZCwgdGhpcy5fY29uc29sZU1lc3NhZ2VBZGRlZCwgdGhpcyk7CiAgICAgV2ViSW5zcGVj
dG9yLmNvbnNvbGUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQ29uc29sZU1vZGVsLkV2
ZW50cy5Db25zb2xlQ2xlYXJlZCwgdGhpcy5fY29uc29sZUNsZWFyZWQsIHRoaXMpOworCisgICAg
dGhpcy5fbGlua2lmaWVyID0gV2ViSW5zcGVjdG9yLmRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwu
Y3JlYXRlTGlua2lmaWVyKCk7CiB9CiAKIFdlYkluc3BlY3Rvci5Db25zb2xlVmlldy5FdmVudHMg
PSB7CkBAIC0zMjYsNiArMzI4LDggQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3LnByb3RvdHlw
ZSA9IHsKICAgICAgICAgdGhpcy50b3BHcm91cC5tZXNzYWdlc0VsZW1lbnQucmVtb3ZlQ2hpbGRy
ZW4oKTsKIAogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0
b3IuQ29uc29sZVZpZXcuRXZlbnRzLkNvbnNvbGVDbGVhcmVkKTsKKworICAgICAgICB0aGlzLl9s
aW5raWZpZXIucmVzZXQoKTsKICAgICB9LAogCiAgICAgY29tcGxldGlvbnM6IGZ1bmN0aW9uKHdv
cmRSYW5nZSwgYmVzdE1hdGNoT25seSwgY29tcGxldGlvbnNSZWFkeUNhbGxiYWNrKQpAQCAtNjE3
LDcgKzYyMSw3IEBAIFdlYkluc3BlY3Rvci5Db25zb2xlVmlldy5wcm90b3R5cGUgPSB7CiAKICAg
ICAgICAgICAgIFdlYkluc3BlY3Rvci5zZXR0aW5ncy5jb25zb2xlSGlzdG9yeS5zZXQodGhpcy5w
cm9tcHQuaGlzdG9yeS5zbGljZSgtMzApKTsKIAotICAgICAgICAgICAgdGhpcy5fYXBwZW5kQ29u
c29sZU1lc3NhZ2UobmV3IFdlYkluc3BlY3Rvci5Db25zb2xlQ29tbWFuZFJlc3VsdChyZXN1bHQs
IHdhc1Rocm93biwgY29tbWFuZE1lc3NhZ2UpKTsKKyAgICAgICAgICAgIHRoaXMuX2FwcGVuZENv
bnNvbGVNZXNzYWdlKG5ldyBXZWJJbnNwZWN0b3IuQ29uc29sZUNvbW1hbmRSZXN1bHQocmVzdWx0
LCB3YXNUaHJvd24sIGNvbW1hbmRNZXNzYWdlLCB0aGlzLl9saW5raWZpZXIpKTsKICAgICAgICAg
fQogICAgICAgICB0aGlzLmV2YWxJbkluc3BlY3RlZFdpbmRvdyhzdHIsICJjb25zb2xlIiwgdHJ1
ZSwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHByaW50UmVzdWx0LmJpbmQodGhpcykpOwogCkBAIC02
OTQsMTEgKzY5OCwxMSBAQCBXZWJJbnNwZWN0b3IuQ29uc29sZUNvbW1hbmQucHJvdG90eXBlID0g
ewogICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZUltcGx9CiAgKiBAY29u
c3RydWN0b3IKICAqLwotV2ViSW5zcGVjdG9yLkNvbnNvbGVDb21tYW5kUmVzdWx0ID0gZnVuY3Rp
b24ocmVzdWx0LCB3YXNUaHJvd24sIG9yaWdpbmF0aW5nQ29tbWFuZCkKK1dlYkluc3BlY3Rvci5D
b25zb2xlQ29tbWFuZFJlc3VsdCA9IGZ1bmN0aW9uKHJlc3VsdCwgd2FzVGhyb3duLCBvcmlnaW5h
dGluZ0NvbW1hbmQsIGxpbmtpZmllcikKIHsKICAgICB2YXIgbGV2ZWwgPSAod2FzVGhyb3duID8g
V2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VMZXZlbC5FcnJvciA6IFdlYkluc3Bl
Y3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlTGV2ZWwuTG9nKTsKICAgICB0aGlzLm9yaWdpbmF0
aW5nQ29tbWFuZCA9IG9yaWdpbmF0aW5nQ29tbWFuZDsKLSAgICBXZWJJbnNwZWN0b3IuQ29uc29s
ZU1lc3NhZ2VJbXBsLmNhbGwodGhpcywgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3Nh
Z2VTb3VyY2UuSlMsIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlVHlwZS5SZXN1
bHQsIGxldmVsLCAtMSwgbnVsbCwgMSwgbnVsbCwgW3Jlc3VsdF0pOworICAgIFdlYkluc3BlY3Rv
ci5Db25zb2xlTWVzc2FnZUltcGwuY2FsbCh0aGlzLCBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3Nh
Z2UuTWVzc2FnZVNvdXJjZS5KUywgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VU
eXBlLlJlc3VsdCwgbGV2ZWwsIC0xLCBudWxsLCAxLCBudWxsLCBsaW5raWZpZXIsIFtyZXN1bHRd
KTsKIH0KIAogV2ViSW5zcGVjdG9yLkNvbnNvbGVDb21tYW5kUmVzdWx0LnByb3RvdHlwZSA9IHsK
QEAgLTc3NiwzICs3ODAsMTQgQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVHcm91cC5wcm90b3R5cGUg
PSB7CiAgKiBAdHlwZSB7P1dlYkluc3BlY3Rvci5Db25zb2xlVmlld30KICAqLwogV2ViSW5zcGVj
dG9yLmNvbnNvbGVWaWV3ID0gbnVsbDsKKworV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLmNy
ZWF0ZSA9IGZ1bmN0aW9uKHNvdXJjZSwgdHlwZSwgbGV2ZWwsIGxpbmUsIHVybCwgcmVwZWF0Q291
bnQsIG1lc3NhZ2UsIHBhcmFtZXRlcnMsIHN0YWNrVHJhY2UsIHJlcXVlc3QpCit7CisgICAgcmV0
dXJuIG5ldyBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2VJbXBsKHNvdXJjZSwgdHlwZSwgbGV2
ZWwsIGxpbmUsIHVybCwgcmVwZWF0Q291bnQsIG1lc3NhZ2UsIFdlYkluc3BlY3Rvci5jb25zb2xl
Vmlldy5fbGlua2lmaWVyLCBwYXJhbWV0ZXJzLCBzdGFja1RyYWNlLCByZXF1ZXN0KTsKK30KKwor
V2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLmNyZWF0ZVRleHRNZXNzYWdlID0gZnVuY3Rpb24o
dGV4dCwgbGV2ZWwpCit7CisgICAgbGV2ZWwgPSBsZXZlbCB8fCBXZWJJbnNwZWN0b3IuQ29uc29s
ZU1lc3NhZ2UuTWVzc2FnZUxldmVsLkxvZzsKKyAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5D
b25zb2xlTWVzc2FnZUltcGwoV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VTb3Vy
Y2UuQ29uc29sZUFQSSwgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VUeXBlLkxv
ZywgbGV2ZWwsIDAsIG51bGwsIDEsIG51bGwsIFdlYkluc3BlY3Rvci5jb25zb2xlVmlldy5fbGlu
a2lmaWVyLCBbdGV4dF0sIG51bGwpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLmpzIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLmpzCmlu
ZGV4IGRmZTAxMDEzNTZiZTIxNmZlNjlmMThjNWU1ZDJlYWRiOGJhMzY2MjQuLjI1MzAyZDBhMDFi
ZGNiYzhlNzE0NmZjMTY4YWMyYjE0MTAxNTUyZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5qcworKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RlYnVnZ2VyUHJlc2VudGF0aW9uTW9k
ZWwuanMKQEAgLTY3LDMwICs2Nyw5IEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlv
bk1vZGVsLkV2ZW50cyA9IHsKIH0KIAogV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9u
TW9kZWwucHJvdG90eXBlID0gewotICAgIGxpbmtpZnlMb2NhdGlvbjogZnVuY3Rpb24oc291cmNl
VVJMLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGNsYXNzZXMpCisgICAgY3JlYXRlTGlua2lm
aWVyOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICB2YXIgbGlua1RleHQgPSBXZWJJbnNwZWN0
b3IuZm9ybWF0TGlua1RleHQoc291cmNlVVJMLCBsaW5lTnVtYmVyKTsKLSAgICAgICAgdmFyIGFu
Y2hvciA9IFdlYkluc3BlY3Rvci5saW5raWZ5VVJMQXNOb2RlKHNvdXJjZVVSTCwgbGlua1RleHQs
IGNsYXNzZXMsIGZhbHNlKTsKLQotICAgICAgICB2YXIgcmF3U291cmNlQ29kZSA9IHRoaXMuX3Jh
d1NvdXJjZUNvZGVGb3JTY3JpcHRXaXRoVVJMKHNvdXJjZVVSTCk7Ci0gICAgICAgIGlmICghcmF3
U291cmNlQ29kZSkgewotICAgICAgICAgICAgYW5jaG9yLnNldEF0dHJpYnV0ZSgicHJlZmVycmVk
X3BhbmVsIiwgInJlc291cmNlcyIpOwotICAgICAgICAgICAgYW5jaG9yLnNldEF0dHJpYnV0ZSgi
bGluZV9udW1iZXIiLCBsaW5lTnVtYmVyKTsKLSAgICAgICAgICAgIHJldHVybiBhbmNob3I7Ci0g
ICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiB1cGRhdGVBbmNob3IoKQotICAgICAgICB7Ci0g
ICAgICAgICAgICB2YXIgdWlMb2NhdGlvbiA9IHJhd1NvdXJjZUNvZGUuc291cmNlTWFwcGluZy5y
YXdMb2NhdGlvblRvVUlMb2NhdGlvbih7IGxpbmVOdW1iZXI6IGxpbmVOdW1iZXIsIGNvbHVtbk51
bWJlcjogY29sdW1uTnVtYmVyIH0pOwotICAgICAgICAgICAgYW5jaG9yLnRleHRDb250ZW50ID0g
V2ViSW5zcGVjdG9yLmZvcm1hdExpbmtUZXh0KHVpTG9jYXRpb24udWlTb3VyY2VDb2RlLnVybCwg
dWlMb2NhdGlvbi5saW5lTnVtYmVyKTsKLSAgICAgICAgICAgIGFuY2hvci5zZXRBdHRyaWJ1dGUo
InByZWZlcnJlZF9wYW5lbCIsICJzY3JpcHRzIik7Ci0gICAgICAgICAgICBhbmNob3IudWlTb3Vy
Y2VDb2RlID0gdWlMb2NhdGlvbi51aVNvdXJjZUNvZGU7Ci0gICAgICAgICAgICBhbmNob3IubGlu
ZU51bWJlciA9IHVpTG9jYXRpb24ubGluZU51bWJlcjsKLSAgICAgICAgfQotICAgICAgICBpZiAo
cmF3U291cmNlQ29kZS5zb3VyY2VNYXBwaW5nKQotICAgICAgICAgICAgdXBkYXRlQW5jaG9yLmNh
bGwodGhpcyk7Ci0gICAgICAgIHJhd1NvdXJjZUNvZGUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNw
ZWN0b3IuUmF3U291cmNlQ29kZS5FdmVudHMuU291cmNlTWFwcGluZ1VwZGF0ZWQsIHVwZGF0ZUFu
Y2hvciwgdGhpcyk7Ci0gICAgICAgIHJldHVybiBhbmNob3I7CisgICAgICAgIHJldHVybiBuZXcg
V2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuTGlua2lmaWVyKHRoaXMpOwog
ICAgIH0sCiAKICAgICBjcmVhdGVQbGFjYXJkOiBmdW5jdGlvbihjYWxsRnJhbWUpCkBAIC01Nzcs
NiArNTU2LDY3IEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsUmVzb3Vy
Y2VCaW5kaW5nLnByb3RvdHlwZSA9IHsKICAgICB9CiB9CiAKKy8qKgorICogQGNvbnN0cnVjdG9y
CisgKi8KK1dlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLkxpbmtpZmllciA9
IGZ1bmN0aW9uKG1vZGVsKQoreworICAgIHRoaXMuX21vZGVsID0gbW9kZWw7CisgICAgdGhpcy5f
YW5jaG9yc0ZvclJhd1NvdXJjZUNvZGUgPSB7fTsKK30KKworV2ViSW5zcGVjdG9yLkRlYnVnZ2Vy
UHJlc2VudGF0aW9uTW9kZWwuTGlua2lmaWVyLnByb3RvdHlwZSA9IHsKKyAgICBsaW5raWZ5TG9j
YXRpb246IGZ1bmN0aW9uKHNvdXJjZVVSTCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBjbGFz
c2VzKQorICAgIHsKKyAgICAgICAgdmFyIGxpbmtUZXh0ID0gV2ViSW5zcGVjdG9yLmZvcm1hdExp
bmtUZXh0KHNvdXJjZVVSTCwgbGluZU51bWJlcik7CisgICAgICAgIHZhciBhbmNob3IgPSBXZWJJ
bnNwZWN0b3IubGlua2lmeVVSTEFzTm9kZShzb3VyY2VVUkwsIGxpbmtUZXh0LCBjbGFzc2VzLCBm
YWxzZSk7CisgICAgICAgIGFuY2hvci5yYXdMb2NhdGlvbiA9IHsgbGluZU51bWJlcjogbGluZU51
bWJlciwgY29sdW1uTnVtYmVyOiBjb2x1bW5OdW1iZXIgfTsKKworICAgICAgICB2YXIgcmF3U291
cmNlQ29kZSA9IHRoaXMuX21vZGVsLl9yYXdTb3VyY2VDb2RlRm9yU2NyaXB0V2l0aFVSTChzb3Vy
Y2VVUkwpOworICAgICAgICBpZiAoIXJhd1NvdXJjZUNvZGUpIHsKKyAgICAgICAgICAgIGFuY2hv
ci5zZXRBdHRyaWJ1dGUoInByZWZlcnJlZF9wYW5lbCIsICJyZXNvdXJjZXMiKTsKKyAgICAgICAg
ICAgIGFuY2hvci5zZXRBdHRyaWJ1dGUoImxpbmVfbnVtYmVyIiwgbGluZU51bWJlcik7CisgICAg
ICAgICAgICByZXR1cm4gYW5jaG9yOworICAgICAgICB9CisKKyAgICAgICAgdmFyIGFuY2hvcnMg
PSB0aGlzLl9hbmNob3JzRm9yUmF3U291cmNlQ29kZVtyYXdTb3VyY2VDb2RlLmlkXTsKKyAgICAg
ICAgaWYgKCFhbmNob3JzKSB7CisgICAgICAgICAgICBhbmNob3JzID0gW107CisgICAgICAgICAg
ICB0aGlzLl9hbmNob3JzRm9yUmF3U291cmNlQ29kZVtyYXdTb3VyY2VDb2RlLmlkXSA9IGFuY2hv
cnM7CisgICAgICAgICAgICByYXdTb3VyY2VDb2RlLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVj
dG9yLlJhd1NvdXJjZUNvZGUuRXZlbnRzLlNvdXJjZU1hcHBpbmdVcGRhdGVkLCB0aGlzLl91cGRh
dGVTb3VyY2VBbmNob3JzLCB0aGlzKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChyYXdTb3Vy
Y2VDb2RlLnNvdXJjZU1hcHBpbmcpCisgICAgICAgICAgICB0aGlzLl91cGRhdGVBbmNob3IocmF3
U291cmNlQ29kZSwgYW5jaG9yKTsKKyAgICAgICAgYW5jaG9ycy5wdXNoKGFuY2hvcik7CisgICAg
ICAgIHJldHVybiBhbmNob3I7CisgICAgfSwKKworICAgIHJlc2V0OiBmdW5jdGlvbigpCisgICAg
eworICAgICAgICBmb3IgKHZhciBpZCBpbiB0aGlzLl9hbmNob3JzRm9yUmF3U291cmNlQ29kZSkK
KyAgICAgICAgICAgIHRoaXMuX21vZGVsLl9yYXdTb3VyY2VDb2RlW2lkXS5yZW1vdmVFdmVudExp
c3RlbmVyKFdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlLkV2ZW50cy5Tb3VyY2VNYXBwaW5nVXBk
YXRlZCwgdGhpcy5fdXBkYXRlU291cmNlQW5jaG9ycywgdGhpcyk7CisgICAgICAgIHRoaXMuX2Fu
Y2hvcnNGb3JSYXdTb3VyY2VDb2RlID0ge307CisgICAgfSwKKworICAgIF91cGRhdGVTb3VyY2VB
bmNob3JzOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHZhciByYXdTb3VyY2VDb2Rl
ID0gZXZlbnQudGFyZ2V0OworICAgICAgICB2YXIgYW5jaG9ycyA9IHRoaXMuX2FuY2hvcnNGb3JS
YXdTb3VyY2VDb2RlW3Jhd1NvdXJjZUNvZGUuaWRdOworICAgICAgICBmb3IgKHZhciBpID0gMDsg
aSA8IGFuY2hvcnMubGVuZ3RoOyArK2kpCisgICAgICAgICAgICB0aGlzLl91cGRhdGVBbmNob3Io
cmF3U291cmNlQ29kZSwgYW5jaG9yc1tpXSk7CisgICAgfSwKKworICAgIF91cGRhdGVBbmNob3I6
IGZ1bmN0aW9uKHJhd1NvdXJjZUNvZGUsIGFuY2hvcikKKyAgICB7CisgICAgICAgIHZhciB1aUxv
Y2F0aW9uID0gcmF3U291cmNlQ29kZS5zb3VyY2VNYXBwaW5nLnJhd0xvY2F0aW9uVG9VSUxvY2F0
aW9uKGFuY2hvci5yYXdMb2NhdGlvbik7CisgICAgICAgIGFuY2hvci50ZXh0Q29udGVudCA9IFdl
Ykluc3BlY3Rvci5mb3JtYXRMaW5rVGV4dCh1aUxvY2F0aW9uLnVpU291cmNlQ29kZS51cmwsIHVp
TG9jYXRpb24ubGluZU51bWJlcik7CisgICAgICAgIGFuY2hvci5zZXRBdHRyaWJ1dGUoInByZWZl
cnJlZF9wYW5lbCIsICJzY3JpcHRzIik7CisgICAgICAgIGFuY2hvci51aVNvdXJjZUNvZGUgPSB1
aUxvY2F0aW9uLnVpU291cmNlQ29kZTsKKyAgICAgICAgYW5jaG9yLmxpbmVOdW1iZXIgPSB1aUxv
Y2F0aW9uLmxpbmVOdW1iZXI7CisgICAgfQorfQorCiBXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVz
ZW50YXRpb25Nb2RlbFJlc291cmNlQmluZGluZy5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5z
cGVjdG9yLlJlc291cmNlRG9tYWluTW9kZWxCaW5kaW5nLnByb3RvdHlwZTsKIAogLyoqCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0V2ZW50TGlzdGVuZXJz
U2lkZWJhclBhbmUuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0V2ZW50
TGlzdGVuZXJzU2lkZWJhclBhbmUuanMKaW5kZXggMmViODY0OTYwMWJmYzMwNDhmMDVmZTdhZGNi
NTZjYjUyMzhmYzNkZi4uNzk1ZTZiMThkNTEzYzRmMTRlYmJiMmNhNjU4NTE1ZWM5NjBlNDFkYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FdmVudExpc3Rl
bmVyc1NpZGViYXJQYW5lLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvRXZlbnRMaXN0ZW5lcnNTaWRlYmFyUGFuZS5qcwpAQCAtNTYsNiArNTYsOCBAQCBXZWJJbnNw
ZWN0b3IuRXZlbnRMaXN0ZW5lcnNTaWRlYmFyUGFuZSA9IGZ1bmN0aW9uKCkKICAgICB0aGlzLnNl
dHRpbmdzU2VsZWN0RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2UiLCB0aGlzLl9jaGFu
Z2VTZXR0aW5nLmJpbmQodGhpcyksIGZhbHNlKTsKIAogICAgIHRoaXMudGl0bGVFbGVtZW50LmFw
cGVuZENoaWxkKHRoaXMuc2V0dGluZ3NTZWxlY3RFbGVtZW50KTsKKworICAgIHRoaXMuX2xpbmtp
ZmllciA9IFdlYkluc3BlY3Rvci5kZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLmNyZWF0ZUxpbmtp
ZmllcigpOwogfQogCiBXZWJJbnNwZWN0b3IuRXZlbnRMaXN0ZW5lcnNTaWRlYmFyUGFuZS5fb2Jq
ZWN0R3JvdXBOYW1lID0gImV2ZW50LWxpc3RlbmVycy1zaWRlYmFyLXBhbmUiOwpAQCAtNjQsNiAr
NjYsOCBAQCBXZWJJbnNwZWN0b3IuRXZlbnRMaXN0ZW5lcnNTaWRlYmFyUGFuZS5wcm90b3R5cGUg
PSB7CiAgICAgdXBkYXRlOiBmdW5jdGlvbihub2RlKQogICAgIHsKICAgICAgICAgUnVudGltZUFn
ZW50LnJlbGVhc2VPYmplY3RHcm91cChXZWJJbnNwZWN0b3IuRXZlbnRMaXN0ZW5lcnNTaWRlYmFy
UGFuZS5fb2JqZWN0R3JvdXBOYW1lKTsKKyAgICAgICAgdGhpcy5fbGlua2lmaWVyLnJlc2V0KCk7
CisKICAgICAgICAgdmFyIGJvZHkgPSB0aGlzLmJvZHlFbGVtZW50OwogICAgICAgICBib2R5LnJl
bW92ZUNoaWxkcmVuKCk7CiAgICAgICAgIHRoaXMuc2VjdGlvbnMgPSBbXTsKQEAgLTg0LDcgKzg4
LDcgQEAgV2ViSW5zcGVjdG9yLkV2ZW50TGlzdGVuZXJzU2lkZWJhclBhbmUucHJvdG90eXBlID0g
ewogICAgICAgICAgICAgICAgIHZhciB0eXBlID0gZXZlbnRMaXN0ZW5lci50eXBlOwogICAgICAg
ICAgICAgICAgIHZhciBzZWN0aW9uID0gc2VjdGlvbk1hcFt0eXBlXTsKICAgICAgICAgICAgICAg
ICBpZiAoIXNlY3Rpb24pIHsKLSAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiA9IG5ldyBXZWJJ
bnNwZWN0b3IuRXZlbnRMaXN0ZW5lcnNTZWN0aW9uKHR5cGUsIG5vZGUuaWQpOworICAgICAgICAg
ICAgICAgICAgICBzZWN0aW9uID0gbmV3IFdlYkluc3BlY3Rvci5FdmVudExpc3RlbmVyc1NlY3Rp
b24odHlwZSwgbm9kZS5pZCwgc2VsZi5fbGlua2lmaWVyKTsKICAgICAgICAgICAgICAgICAgICAg
c2VjdGlvbk1hcFt0eXBlXSA9IHNlY3Rpb247CiAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb25O
YW1lcy5wdXNoKHR5cGUpOwogICAgICAgICAgICAgICAgICAgICBzZWxmLnNlY3Rpb25zLnB1c2go
c2VjdGlvbik7CkBAIC0xMjQsMTAgKzEyOCwxMSBAQCBXZWJJbnNwZWN0b3IuRXZlbnRMaXN0ZW5l
cnNTaWRlYmFyUGFuZS5wcm90b3R5cGUgPSB7CiAKIFdlYkluc3BlY3Rvci5FdmVudExpc3RlbmVy
c1NpZGViYXJQYW5lLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuU2lkZWJhclBh
bmUucHJvdG90eXBlOwogCi1XZWJJbnNwZWN0b3IuRXZlbnRMaXN0ZW5lcnNTZWN0aW9uID0gZnVu
Y3Rpb24odGl0bGUsIG5vZGVJZCkKK1dlYkluc3BlY3Rvci5FdmVudExpc3RlbmVyc1NlY3Rpb24g
PSBmdW5jdGlvbih0aXRsZSwgbm9kZUlkLCBsaW5raWZpZXIpCiB7CiAgICAgdGhpcy5ldmVudExp
c3RlbmVycyA9IFtdOwogICAgIHRoaXMuX25vZGVJZCA9IG5vZGVJZDsKKyAgICB0aGlzLl9saW5r
aWZpZXIgPSBsaW5raWZpZXI7CiAgICAgV2ViSW5zcGVjdG9yLlByb3BlcnRpZXNTZWN0aW9uLmNh
bGwodGhpcywgdGl0bGUpOwogCiAgICAgLy8gQ2hhbmdlZCBmcm9tIGEgUHJvcGVydGllcyBMaXN0
CkBAIC0xNTgsNyArMTYzLDcgQEAgV2ViSW5zcGVjdG9yLkV2ZW50TGlzdGVuZXJzU2VjdGlvbi5w
cm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBsZW5ndGggPSBmaWx0ZXJlZEV2ZW50TGlzdGVuZXJz
Lmxlbmd0aDsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewogICAg
ICAgICAgICAgdmFyIGV2ZW50TGlzdGVuZXIgPSBmaWx0ZXJlZEV2ZW50TGlzdGVuZXJzW2ldOwot
ICAgICAgICAgICAgdmFyIGV2ZW50TGlzdGVuZXJCYXIgPSBuZXcgV2ViSW5zcGVjdG9yLkV2ZW50
TGlzdGVuZXJCYXIoZXZlbnRMaXN0ZW5lciwgdGhpcy5fbm9kZUlkKTsKKyAgICAgICAgICAgIHZh
ciBldmVudExpc3RlbmVyQmFyID0gbmV3IFdlYkluc3BlY3Rvci5FdmVudExpc3RlbmVyQmFyKGV2
ZW50TGlzdGVuZXIsIHRoaXMuX25vZGVJZCwgdGhpcy5fbGlua2lmaWVyKTsKICAgICAgICAgICAg
IHRoaXMuZXZlbnRCYXJzLmFwcGVuZENoaWxkKGV2ZW50TGlzdGVuZXJCYXIuZWxlbWVudCk7CiAg
ICAgICAgIH0KICAgICB9LApAQCAtMTcxLDEzICsxNzYsMTMgQEAgV2ViSW5zcGVjdG9yLkV2ZW50
TGlzdGVuZXJzU2VjdGlvbi5wcm90b3R5cGUgPSB7CiAKIFdlYkluc3BlY3Rvci5FdmVudExpc3Rl
bmVyc1NlY3Rpb24ucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5Qcm9wZXJ0aWVz
U2VjdGlvbi5wcm90b3R5cGU7CiAKLVdlYkluc3BlY3Rvci5FdmVudExpc3RlbmVyQmFyID0gZnVu
Y3Rpb24oZXZlbnRMaXN0ZW5lciwgbm9kZUlkKQorV2ViSW5zcGVjdG9yLkV2ZW50TGlzdGVuZXJC
YXIgPSBmdW5jdGlvbihldmVudExpc3RlbmVyLCBub2RlSWQsIGxpbmtpZmllcikKIHsKICAgICB0
aGlzLmV2ZW50TGlzdGVuZXIgPSBldmVudExpc3RlbmVyOwogICAgIHRoaXMuX25vZGVJZCA9IG5v
ZGVJZDsKICAgICBXZWJJbnNwZWN0b3IuT2JqZWN0UHJvcGVydGllc1NlY3Rpb24uY2FsbCh0aGlz
KTsKICAgICB0aGlzLl9zZXROb2RlVGl0bGUoKTsKLSAgICB0aGlzLl9zZXRGdW5jdGlvblN1YnRp
dGxlKCk7CisgICAgdGhpcy5fc2V0RnVuY3Rpb25TdWJ0aXRsZShsaW5raWZpZXIpOwogICAgIHRo
aXMuZWRpdGFibGUgPSBmYWxzZTsKICAgICB0aGlzLmVsZW1lbnQuY2xhc3NOYW1lID0gImV2ZW50
LWJhciI7IC8qIENoYW5nZWQgZnJvbSAic2VjdGlvbiIgKi8KICAgICB0aGlzLmhlYWRlckVsZW1l
bnQuYWRkU3R5bGVDbGFzcygic291cmNlLWNvZGUiKTsKQEAgLTIzMSw3ICsyMzYsNyBAQCBXZWJJ
bnNwZWN0b3IuRXZlbnRMaXN0ZW5lckJhci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMudGl0
bGVFbGVtZW50LmFwcGVuZENoaWxkKFdlYkluc3BlY3Rvci5wYW5lbHMuZWxlbWVudHMubGlua2lm
eU5vZGVSZWZlcmVuY2UodGhpcy5ldmVudExpc3RlbmVyLm5vZGUpKTsKICAgICB9LAogCi0gICAg
X3NldEZ1bmN0aW9uU3VidGl0bGU6IGZ1bmN0aW9uKCkKKyAgICBfc2V0RnVuY3Rpb25TdWJ0aXRs
ZTogZnVuY3Rpb24obGlua2lmaWVyKQogICAgIHsKICAgICAgICAgLy8gUmVxdWlyZXMgdGhhdCBG
dW5jdGlvbi50b1N0cmluZygpIHJldHVybiBhdCBsZWFzdCB0aGUgZnVuY3Rpb24ncyBzaWduYXR1
cmUuCiAgICAgICAgIGlmICh0aGlzLmV2ZW50TGlzdGVuZXIubG9jYXRpb24pIHsKQEAgLTI0MCw3
ICsyNDUsNyBAQCBXZWJJbnNwZWN0b3IuRXZlbnRMaXN0ZW5lckJhci5wcm90b3R5cGUgPSB7CiAg
ICAgICAgICAgICB2YXIgdXJsID0gdGhpcy5ldmVudExpc3RlbmVyLmxvY2F0aW9uLnNjcmlwdElk
OwogICAgICAgICAgICAgdmFyIGxpbmVOdW1iZXIgPSB0aGlzLmV2ZW50TGlzdGVuZXIubG9jYXRp
b24ubGluZU51bWJlciAtIDE7CiAgICAgICAgICAgICB2YXIgY29sdW1uTnVtYmVyID0gMDsKLSAg
ICAgICAgICAgIHZhciB1cmxFbGVtZW50ID0gV2ViSW5zcGVjdG9yLmRlYnVnZ2VyUHJlc2VudGF0
aW9uTW9kZWwubGlua2lmeUxvY2F0aW9uKHVybCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyKTsK
KyAgICAgICAgICAgIHZhciB1cmxFbGVtZW50ID0gbGlua2lmaWVyLmxpbmtpZnlMb2NhdGlvbih1
cmwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcik7CiAgICAgICAgICAgICB0aGlzLnN1YnRpdGxl
RWxlbWVudC5hcHBlbmRDaGlsZCh1cmxFbGVtZW50KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgIHZhciBtYXRjaCA9IHRoaXMuZXZlbnRMaXN0ZW5lci5oYW5kbGVyQm9keS5tYXRjaCgv
ZnVuY3Rpb24gKFteXChdKz8pXCgvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvTmV0d29ya1BhbmVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9OZXR3b3JrUGFuZWwuanMKaW5kZXggM2FhMWY3NjQ4ZmVlNjBhMmFiMjVlNTRh
MWZmN2ZkNWNkN2I4MzlkZS4uMjQwZmFjODA0OWQzNjNhNDI0NGU5MjljMjliZmZiMjE4ZTVlOTYw
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3Jr
UGFuZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3Jr
UGFuZWwuanMKQEAgLTU2LDYgKzU2LDcgQEAgV2ViSW5zcGVjdG9yLk5ldHdvcmtMb2dWaWV3ID0g
ZnVuY3Rpb24ocGFyZW50RWxlbWVudCkKIAogICAgIHRoaXMuX2NyZWF0ZVN0YXR1c2JhckJ1dHRv
bnMoKTsKICAgICB0aGlzLl9jcmVhdGVGaWx0ZXJTdGF0dXNCYXJJdGVtcygpOworICAgIHRoaXMu
X2xpbmtpZmllciA9IFdlYkluc3BlY3Rvci5kZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLmNyZWF0
ZUxpbmtpZmllcigpOwogCiAgICAgV2ViSW5zcGVjdG9yLm5ldHdvcmtNYW5hZ2VyLmFkZEV2ZW50
TGlzdGVuZXIoV2ViSW5zcGVjdG9yLk5ldHdvcmtNYW5hZ2VyLkV2ZW50VHlwZXMuUmVzb3VyY2VT
dGFydGVkLCB0aGlzLl9vblJlc291cmNlU3RhcnRlZCwgdGhpcyk7CiAgICAgV2ViSW5zcGVjdG9y
Lm5ldHdvcmtNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLk5ldHdvcmtNYW5h
Z2VyLkV2ZW50VHlwZXMuUmVzb3VyY2VVcGRhdGVkLCB0aGlzLl9vblJlc291cmNlVXBkYXRlZCwg
dGhpcyk7CkBAIC03MzUsNyArNzM2LDcgQEAgV2ViSW5zcGVjdG9yLk5ldHdvcmtMb2dWaWV3LnBy
b3RvdHlwZSA9IHsKIAogICAgICAgICB0aGlzLl9tYWluUmVzb3VyY2VMb2FkVGltZSA9IC0xOwog
ICAgICAgICB0aGlzLl9tYWluUmVzb3VyY2VET01Db250ZW50VGltZSA9IC0xOwotCisgICAgICAg
IHRoaXMuX2xpbmtpZmllci5yZXNldCgpOwogICAgIH0sCiAKICAgICBnZXQgcmVzb3VyY2VzKCkK
QEAgLTIwNDUsNyArMjA0Niw3IEBAIFdlYkluc3BlY3Rvci5OZXR3b3JrRGF0YUdyaWROb2RlLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICB0aGlzLl9pbml0aWF0b3JDZWxsLnRpdGxlID0gdG9wRnJhbWUu
dXJsICsgIjoiICsgdG9wRnJhbWUubGluZU51bWJlcjsKLSAgICAgICAgICAgICAgICB2YXIgdXJs
RWxlbWVudCA9IFdlYkluc3BlY3Rvci5kZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLmxpbmtpZnlM
b2NhdGlvbih0b3BGcmFtZS51cmwsIHRvcEZyYW1lLmxpbmVOdW1iZXIgLSAxLCAwKTsKKyAgICAg
ICAgICAgICAgICB2YXIgdXJsRWxlbWVudCA9IHRoaXMuX3BhcmVudFZpZXcuX2xpbmtpZmllci5s
aW5raWZ5TG9jYXRpb24odG9wRnJhbWUudXJsLCB0b3BGcmFtZS5saW5lTnVtYmVyIC0gMSwgMCk7
CiAgICAgICAgICAgICAgICAgdGhpcy5faW5pdGlhdG9yQ2VsbC5hcHBlbmRDaGlsZCh1cmxFbGVt
ZW50KTsKICAgICAgICAgICAgICAgICB0aGlzLl9hcHBlbmRTdWJ0aXRsZSh0aGlzLl9pbml0aWF0
b3JDZWxsLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNjcmlwdCIpKTsKICAgICAgICAgICAgIH0g
ZWxzZSB7IC8vIGluaXRpYXRvci50eXBlID09PSAicGFyc2VyIgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlRGF0YUdyaWRUcmVlLmpzIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlRGF0YUdyaWRUcmVlLmpzCmlu
ZGV4IDU4NTU2OGMzYWJhMDY5ODFjZWM4NTI5ZjExNDJiOTBmMjY0M2I4N2UuLmNmNDBiYzI2ZTc5
MDkzMDUzZmQ3OTJiMzczNzUyOGIzNDlhZmI0ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvUHJvZmlsZURhdGFHcmlkVHJlZS5qcworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVEYXRhR3JpZFRyZWUuanMKQEAgLTk4
LDcgKzk4LDcgQEAgV2ViSW5zcGVjdG9yLlByb2ZpbGVEYXRhR3JpZE5vZGUucHJvdG90eXBlID0g
ewogICAgICAgICBpZiAodGhpcy5wcm9maWxlTm9kZS51cmwpIHsKICAgICAgICAgICAgIC8vIEZJ
WE1FKDYyNzI1KTogcHJvZmlsZU5vZGUgc2hvdWxkIHJlZmVyZW5jZSBhIGRlYnVnZ2VyIGxvY2F0
aW9uLgogICAgICAgICAgICAgdmFyIGxpbmVOdW1iZXIgPSB0aGlzLnByb2ZpbGVOb2RlLmxpbmVO
dW1iZXIgPyB0aGlzLnByb2ZpbGVOb2RlLmxpbmVOdW1iZXIgLSAxIDogMDsKLSAgICAgICAgICAg
IHZhciB1cmxFbGVtZW50ID0gV2ViSW5zcGVjdG9yLmRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwu
bGlua2lmeUxvY2F0aW9uKHRoaXMucHJvZmlsZU5vZGUudXJsLCBsaW5lTnVtYmVyLCAwLCAicHJv
ZmlsZS1ub2RlLWZpbGUiKTsKKyAgICAgICAgICAgIHZhciB1cmxFbGVtZW50ID0gdGhpcy5wcm9m
aWxlVmlldy5fbGlua2lmaWVyLmxpbmtpZnlMb2NhdGlvbih0aGlzLnByb2ZpbGVOb2RlLnVybCwg
bGluZU51bWJlciwgMCwgInByb2ZpbGUtbm9kZS1maWxlIik7CiAgICAgICAgICAgICB1cmxFbGVt
ZW50LnN0eWxlLm1heFdpZHRoID0gIjc1JSI7CiAgICAgICAgICAgICBjZWxsLmluc2VydEJlZm9y
ZSh1cmxFbGVtZW50LCBjZWxsLmZpcnN0Q2hpbGQpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVWaWV3LmpzIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlVmlldy5qcwppbmRleCAyYTAzZjgz
MDUxZGE1NDFlZmU0MTQwOWMxMWJkZDJhZTg5NDMxY2UyLi4wODZlZmE0ZWNhZDUyNTIwMDk4NTZh
YjBhNjAwYjg5YmM0MWIxZTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1Byb2ZpbGVWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvUHJvZmlsZVZpZXcuanMKQEAgLTk2LDYgKzk2LDggQEAgV2ViSW5zcGVjdG9yLkNQ
VVByb2ZpbGVWaWV3ID0gZnVuY3Rpb24ocHJvZmlsZSkKICAgICAgICAgc2VsZi5fdXBkYXRlUGVy
Y2VudEJ1dHRvbigpOwogICAgIH0KIAorICAgIHRoaXMuX2xpbmtpZmllciA9IFdlYkluc3BlY3Rv
ci5kZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLmNyZWF0ZUxpbmtpZmllcigpOworCiAgICAgUHJv
ZmlsZXJBZ2VudC5nZXRQcm9maWxlKHRoaXMucHJvZmlsZS50eXBlSWQsIHRoaXMucHJvZmlsZS51
aWQsIHByb2ZpbGVDYWxsYmFjayk7CiB9CiAKQEAgLTQ4NSw2ICs0ODcsNyBAQCBXZWJJbnNwZWN0
b3IuQ1BVUHJvZmlsZVZpZXcucHJvdG90eXBlID0gewogICAgIHsKICAgICAgICAgdGhpcy5yZXNl
dEJ1dHRvbi52aXNpYmxlID0gZmFsc2U7CiAgICAgICAgIHRoaXMucHJvZmlsZURhdGFHcmlkVHJl
ZS5yZXN0b3JlKCk7CisgICAgICAgIHRoaXMuX2xpbmtpZmllci5yZXNldCgpOwogICAgICAgICB0
aGlzLnJlZnJlc2goKTsKICAgICAgICAgdGhpcy5yZWZyZXNoVmlzaWJsZURhdGEoKTsKICAgICB9
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGlu
ZVBhbmVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZVBh
bmVsLmpzCmluZGV4IDE1NTE3Y2U2Mzk3ZGY0ZTU1YjY2NTAwNTc2MGUyMzBlM2EwZjM4MzQuLjM2
OTgxYzI4YTUwOTc2OWRlYjk4ODVmOGZkMWY5ZWJlNzYxYTI0YzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVQYW5lbC5qcworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVsaW5lUGFuZWwuanMKQEAgLTEwOSw2
ICsxMDksNyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbCA9IGZ1bmN0aW9uKCkKIAogICAg
IHRoaXMuX3JlZ2lzdGVyU2hvcnRjdXRzKCk7CiAgICAgV2ViSW5zcGVjdG9yLnRpbWVsaW5lTWFu
YWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5UaW1lbGluZU1hbmFnZXIuRXZlbnRU
eXBlcy5UaW1lbGluZUV2ZW50UmVjb3JkZWQsIHRoaXMuX29uVGltZWxpbmVFdmVudFJlY29yZGVk
LCB0aGlzKTsKKyAgICB0aGlzLl9saW5raWZpZXIgPSBXZWJJbnNwZWN0b3IuZGVidWdnZXJQcmVz
ZW50YXRpb25Nb2RlbC5jcmVhdGVMaW5raWZpZXIoKTsKIH0KIAogLy8gRGVmaW5lIHJvdyBoZWln
aHQsIHNob3VsZCBiZSBpbiBzeW5jIHdpdGggc3R5bGVzIGZvciB0aW1lbGluZSBncmFwaHMuCkBA
IC0xMTYsNiArMTE3LDE5IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLnJvd0hlaWdodCA9
IDE4OwogV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwuc2hvcnRSZWNvcmRUaHJlc2hvbGQgPSAw
LjAxNTsKIAogV2ViSW5zcGVjdG9yLlRpbWVsaW5lUGFuZWwucHJvdG90eXBlID0geworICAgIF9s
aW5raWZ5TG9jYXRpb246IGZ1bmN0aW9uKHVybCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyKQor
ICAgIHsKKyAgICAgICAgLy8gRklYTUUoNjI3MjUpOiBzdGFjayB0cmFjZSBsaW5lL2NvbHVtbiBu
dW1iZXJzIGFyZSBvbmUtYmFzZWQuCisgICAgICAgIGxpbmVOdW1iZXIgPSBsaW5lTnVtYmVyID8g
bGluZU51bWJlciAtIDEgOiBsaW5lTnVtYmVyOworICAgICAgICBjb2x1bW5OdW1iZXIgPSBjb2x1
bW5OdW1iZXIgPyBjb2x1bW5OdW1iZXIgLSAxIDogMDsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2xp
bmtpZmllci5saW5raWZ5TG9jYXRpb24odXJsLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsICJ0
aW1lbGluZS1kZXRhaWxzIik7CisgICAgfSwKKworICAgIF9saW5raWZ5Q2FsbEZyYW1lOiBmdW5j
dGlvbihjYWxsRnJhbWUpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fbGlua2lmeUxvY2F0
aW9uKGNhbGxGcmFtZS51cmwsIGNhbGxGcmFtZS5saW5lTnVtYmVyLCBjYWxsRnJhbWUuY29sdW1u
TnVtYmVyKTsKKyAgICB9LAorCiAgICAgX2NyZWF0ZVRvcFBhbmU6IGZ1bmN0aW9uKCkgewogICAg
ICAgICB2YXIgdG9wUGFuZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsK
ICAgICAgICAgdG9wUGFuZUVsZW1lbnQuaWQgPSAidGltZWxpbmUtb3ZlcnZpZXctcGFuZWwiOwpA
QCAtNTI4LDYgKzU0Miw3IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLnByb3RvdHlwZSA9
IHsKICAgICAgICAgdGhpcy5fcmVmcmVzaCgpOwogICAgICAgICB0aGlzLl9jbG9zZVJlY29yZERl
dGFpbHMoKTsKICAgICAgICAgdGhpcy5fbW9kZWwuX3Jlc2V0KCk7CisgICAgICAgIHRoaXMuX2xp
bmtpZmllci5yZXNldCgpOwogICAgIH0sCiAKICAgICBlbGVtZW50c1RvUmVzdG9yZVNjcm9sbFBv
c2l0aW9uc0ZvcjogZnVuY3Rpb24oKQpAQCAtOTYxLDYgKzk3Niw3IEBAIFdlYkluc3BlY3Rvci5U
aW1lbGluZVJlY29yZEdyYXBoUm93LnByb3RvdHlwZSA9IHsKIAogV2ViSW5zcGVjdG9yLlRpbWVs
aW5lUGFuZWwuRm9ybWF0dGVkUmVjb3JkID0gZnVuY3Rpb24ocmVjb3JkLCBwYXJlbnRSZWNvcmQs
IHBhbmVsLCBzY3JpcHREZXRhaWxzKQogeworICAgIHRoaXMuX3BhbmVsID0gcGFuZWw7CiAgICAg
dmFyIHJlY29yZFR5cGVzID0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lQWdlbnQuUmVjb3JkVHlwZTsK
ICAgICB2YXIgc3R5bGUgPSBwYW5lbC5fcmVjb3JkU3R5bGVzW3JlY29yZC50eXBlXTsKICAgICB0
aGlzLnBhcmVudCA9IHBhcmVudFJlY29yZDsKQEAgLTEwNTEsNyArMTA2Nyw3IEBAIFdlYkluc3Bl
Y3Rvci5UaW1lbGluZVBhbmVsLkZvcm1hdHRlZFJlY29yZC5wcm90b3R5cGUgPSB7CiAKICAgICBf
Z2VuZXJhdGVQb3B1cENvbnRlbnQ6IGZ1bmN0aW9uKGNhbGN1bGF0b3IsIGNhdGVnb3JpZXMpCiAg
ICAgewotICAgICAgICB2YXIgY29udGVudEhlbHBlciA9IG5ldyBXZWJJbnNwZWN0b3IuVGltZWxp
bmVQYW5lbC5Qb3B1cENvbnRlbnRIZWxwZXIodGhpcy50aXRsZSk7CisgICAgICAgIHZhciBjb250
ZW50SGVscGVyID0gbmV3IFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLlBvcHVwQ29udGVudEhl
bHBlcih0aGlzLnRpdGxlLCB0aGlzLl9wYW5lbCk7CiAKICAgICAgICAgaWYgKHRoaXMuX2NoaWxk
cmVuICYmIHRoaXMuX2NoaWxkcmVuLmxlbmd0aCkgewogICAgICAgICAgICAgY29udGVudEhlbHBl
ci5fYXBwZW5kVGV4dFJvdyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNlbGYgVGltZSIpLCBOdW1i
ZXIuc2Vjb25kc1RvU3RyaW5nKHRoaXMuX3NlbGZUaW1lICsgMC4wMDAxKSk7CkBAIC0xMTM2LDI2
ICsxMTUyLDI2IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLkZvcm1hdHRlZFJlY29yZC5w
cm90b3R5cGUgPSB7CiAgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5UaW1lbGluZUFnZW50
LlJlY29yZFR5cGUuR0NFdmVudDoKICAgICAgICAgICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCIlcyBjb2xsZWN0ZWQiLCBOdW1iZXIuYnl0ZXNUb1N0cmluZyh0aGlzLmRhdGEu
dXNlZEhlYXBTaXplRGVsdGEpKTsKICAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRpbWVs
aW5lQWdlbnQuUmVjb3JkVHlwZS5UaW1lckZpcmU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRo
aXMuc2NyaXB0TmFtZSA/IHRoaXMuX2xpbmtpZnlMb2NhdGlvbih0aGlzLnNjcmlwdE5hbWUsIHRo
aXMuc2NyaXB0TGluZSwgMCkgOiB0aGlzLmRhdGEudGltZXJJZDsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gdGhpcy5zY3JpcHROYW1lID8gdGhpcy5fcGFuZWwuX2xpbmtpZnlMb2NhdGlvbih0aGlz
LnNjcmlwdE5hbWUsIHRoaXMuc2NyaXB0TGluZSwgMCkgOiB0aGlzLmRhdGEudGltZXJJZDsKICAg
ICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRpbWVsaW5lQWdlbnQuUmVjb3JkVHlwZS5GdW5j
dGlvbkNhbGw6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2NyaXB0TmFtZSA/IHRoaXMu
X2xpbmtpZnlMb2NhdGlvbih0aGlzLnNjcmlwdE5hbWUsIHRoaXMuc2NyaXB0TGluZSwgMCkgOiBu
dWxsOworICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNjcmlwdE5hbWUgPyB0aGlzLl9wYW5l
bC5fbGlua2lmeUxvY2F0aW9uKHRoaXMuc2NyaXB0TmFtZSwgdGhpcy5zY3JpcHRMaW5lLCAwKSA6
IG51bGw7CiAgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5UaW1lbGluZUFnZW50LlJlY29y
ZFR5cGUuRmlyZUFuaW1hdGlvbkZyYW1lRXZlbnQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRo
aXMuc2NyaXB0TmFtZSA/IHRoaXMuX2xpbmtpZnlMb2NhdGlvbih0aGlzLnNjcmlwdE5hbWUsIHRo
aXMuc2NyaXB0TGluZSwgMCkgOiB0aGlzLmRhdGEuaWQ7CisgICAgICAgICAgICAgICAgcmV0dXJu
IHRoaXMuc2NyaXB0TmFtZSA/IHRoaXMuX3BhbmVsLl9saW5raWZ5TG9jYXRpb24odGhpcy5zY3Jp
cHROYW1lLCB0aGlzLnNjcmlwdExpbmUsIDApIDogdGhpcy5kYXRhLmlkOwogICAgICAgICAgICAg
Y2FzZSBXZWJJbnNwZWN0b3IuVGltZWxpbmVBZ2VudC5SZWNvcmRUeXBlLkV2ZW50RGlzcGF0Y2g6
CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGF0YSA/IHRoaXMuZGF0YS50eXBlIDogbnVs
bDsKICAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRpbWVsaW5lQWdlbnQuUmVjb3JkVHlw
ZS5QYWludDoKICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kYXRhLndpZHRoICsgIlx1MjAw
OVx1MDBkN1x1MjAwOSIgKyB0aGlzLmRhdGEuaGVpZ2h0OwogICAgICAgICAgICAgY2FzZSBXZWJJ
bnNwZWN0b3IuVGltZWxpbmVBZ2VudC5SZWNvcmRUeXBlLlRpbWVySW5zdGFsbDoKICAgICAgICAg
ICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRpbWVsaW5lQWdlbnQuUmVjb3JkVHlwZS5UaW1lclJlbW92
ZToKLSAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zdGFja1RyYWNlID8gdGhpcy5fbGlua2lm
eUNhbGxGcmFtZSh0aGlzLnN0YWNrVHJhY2VbMF0pIDogdGhpcy5kYXRhLnRpbWVySWQ7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3RhY2tUcmFjZSA/IHRoaXMuX3BhbmVsLl9saW5raWZ5
Q2FsbEZyYW1lKHRoaXMuc3RhY2tUcmFjZVswXSkgOiB0aGlzLmRhdGEudGltZXJJZDsKICAgICAg
ICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRpbWVsaW5lQWdlbnQuUmVjb3JkVHlwZS5SZWdpc3Rl
ckFuaW1hdGlvbkZyYW1lQ2FsbGJhY2s6CiAgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5U
aW1lbGluZUFnZW50LlJlY29yZFR5cGUuQ2FuY2VsQW5pbWF0aW9uRnJhbWVDYWxsYmFjazoKLSAg
ICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zdGFja1RyYWNlID8gdGhpcy5fbGlua2lmeUNhbGxG
cmFtZSh0aGlzLnN0YWNrVHJhY2VbMF0pIDogdGhpcy5kYXRhLmlkOworICAgICAgICAgICAgICAg
IHJldHVybiB0aGlzLnN0YWNrVHJhY2UgPyB0aGlzLl9wYW5lbC5fbGlua2lmeUNhbGxGcmFtZSh0
aGlzLnN0YWNrVHJhY2VbMF0pIDogdGhpcy5kYXRhLmlkOwogICAgICAgICAgICAgY2FzZSBXZWJJ
bnNwZWN0b3IuVGltZWxpbmVBZ2VudC5SZWNvcmRUeXBlLlBhcnNlSFRNTDoKICAgICAgICAgICAg
IGNhc2UgV2ViSW5zcGVjdG9yLlRpbWVsaW5lQWdlbnQuUmVjb3JkVHlwZS5SZWNhbGN1bGF0ZVN0
eWxlczoKLSAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zdGFja1RyYWNlID8gdGhpcy5fbGlu
a2lmeUNhbGxGcmFtZSh0aGlzLnN0YWNrVHJhY2VbMF0pIDogbnVsbDsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gdGhpcy5zdGFja1RyYWNlID8gdGhpcy5fcGFuZWwuX2xpbmtpZnlDYWxsRnJhbWUo
dGhpcy5zdGFja1RyYWNlWzBdKSA6IG51bGw7CiAgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rv
ci5UaW1lbGluZUFnZW50LlJlY29yZFR5cGUuRXZhbHVhdGVTY3JpcHQ6Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIHRoaXMudXJsID8gdGhpcy5fbGlua2lmeUxvY2F0aW9uKHRoaXMudXJsLCB0aGlz
LmRhdGEubGluZU51bWJlciwgMCkgOiBudWxsOworICAgICAgICAgICAgICAgIHJldHVybiB0aGlz
LnVybCA/IHRoaXMuX3BhbmVsLl9saW5raWZ5TG9jYXRpb24odGhpcy51cmwsIHRoaXMuZGF0YS5s
aW5lTnVtYmVyLCAwKSA6IG51bGw7CiAgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5UaW1l
bGluZUFnZW50LlJlY29yZFR5cGUuWEhSUmVhZHlTdGF0ZUNoYW5nZToKICAgICAgICAgICAgIGNh
c2UgV2ViSW5zcGVjdG9yLlRpbWVsaW5lQWdlbnQuUmVjb3JkVHlwZS5YSFJMb2FkOgogICAgICAg
ICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuVGltZWxpbmVBZ2VudC5SZWNvcmRUeXBlLlNjaGVkdWxl
UmVzb3VyY2VSZXF1ZXN0OgpAQCAtMTE3MSwxOSArMTE4Nyw2IEBAIFdlYkluc3BlY3Rvci5UaW1l
bGluZVBhbmVsLkZvcm1hdHRlZFJlY29yZC5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KICAgICB9
LAogCi0gICAgX2xpbmtpZnlMb2NhdGlvbjogZnVuY3Rpb24odXJsLCBsaW5lTnVtYmVyLCBjb2x1
bW5OdW1iZXIpCi0gICAgewotICAgICAgICAvLyBGSVhNRSg2MjcyNSk6IHN0YWNrIHRyYWNlIGxp
bmUvY29sdW1uIG51bWJlcnMgYXJlIG9uZS1iYXNlZC4KLSAgICAgICAgbGluZU51bWJlciA9IGxp
bmVOdW1iZXIgPyBsaW5lTnVtYmVyIC0gMSA6IGxpbmVOdW1iZXI7Ci0gICAgICAgIGNvbHVtbk51
bWJlciA9IGNvbHVtbk51bWJlciA/IGNvbHVtbk51bWJlciAtIDEgOiAwOwotICAgICAgICByZXR1
cm4gV2ViSW5zcGVjdG9yLmRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwubGlua2lmeUxvY2F0aW9u
KHVybCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCAidGltZWxpbmUtZGV0YWlscyIpOwotICAg
IH0sCi0KLSAgICBfbGlua2lmeUNhbGxGcmFtZTogZnVuY3Rpb24oY2FsbEZyYW1lKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIHRoaXMuX2xpbmtpZnlMb2NhdGlvbihjYWxsRnJhbWUudXJsLCBjYWxs
RnJhbWUubGluZU51bWJlciwgY2FsbEZyYW1lLmNvbHVtbk51bWJlcik7Ci0gICAgfSwKLQogICAg
IF9jYWxjdWxhdGVBZ2dyZWdhdGVkU3RhdHM6IGZ1bmN0aW9uKGNhdGVnb3JpZXMpCiAgICAgewog
ICAgICAgICB0aGlzLl9hZ2dyZWdhdGVkU3RhdHMgPSB7fTsKQEAgLTEyMDQsOCArMTIwNyw5IEBA
IFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLkZvcm1hdHRlZFJlY29yZC5wcm90b3R5cGUgPSB7
CiAgICAgfQogfQogCi1XZWJJbnNwZWN0b3IuVGltZWxpbmVQYW5lbC5Qb3B1cENvbnRlbnRIZWxw
ZXIgPSBmdW5jdGlvbih0aXRsZSkKK1dlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLlBvcHVwQ29u
dGVudEhlbHBlciA9IGZ1bmN0aW9uKHRpdGxlLCBwYW5lbCkKIHsKKyAgICB0aGlzLl9wYW5lbCA9
IHBhbmVsOwogICAgIHRoaXMuX2NvbnRlbnRUYWJsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
InRhYmxlIik7OwogICAgIHZhciB0aXRsZUNlbGwgPSB0aGlzLl9jcmVhdGVDZWxsKFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiJXMgLSBEZXRhaWxzIiwgdGl0bGUpLCAidGltZWxpbmUtZGV0YWlscy10
aXRsZSIpOwogICAgIHRpdGxlQ2VsbC5jb2xTcGFuID0gMjsKQEAgLTEyNTEsNyArMTI1NSw3IEBA
IFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLlBvcHVwQ29udGVudEhlbHBlci5wcm90b3R5cGUg
PSB7CiAKICAgICBfYXBwZW5kTGlua1JvdzogZnVuY3Rpb24odGl0bGUsIHNjcmlwdE5hbWUsIHNj
cmlwdExpbmUpCiAgICAgewotICAgICAgICB2YXIgbGluayA9IFdlYkluc3BlY3Rvci5UaW1lbGlu
ZVBhbmVsLkZvcm1hdHRlZFJlY29yZC5wcm90b3R5cGUuX2xpbmtpZnlMb2NhdGlvbihzY3JpcHRO
YW1lLCBzY3JpcHRMaW5lLCAwLCAidGltZWxpbmUtZGV0YWlscyIpOworICAgICAgICB2YXIgbGlu
ayA9IHRoaXMuX3BhbmVsLl9saW5raWZ5TG9jYXRpb24oc2NyaXB0TmFtZSwgc2NyaXB0TGluZSwg
MCwgInRpbWVsaW5lLWRldGFpbHMiKTsKICAgICAgICAgdGhpcy5fYXBwZW5kRWxlbWVudFJvdyh0
aXRsZSwgbGluayk7CiAgICAgfSwKIApAQCAtMTI2Niw3ICsxMjcwLDcgQEAgV2ViSW5zcGVjdG9y
LlRpbWVsaW5lUGFuZWwuUG9wdXBDb250ZW50SGVscGVyLnByb3RvdHlwZSA9IHsKICAgICAgICAg
ICAgIHJvdy5hcHBlbmRDaGlsZCh0aGlzLl9jcmVhdGVDZWxsKHN0YWNrRnJhbWUuZnVuY3Rpb25O
YW1lID8gc3RhY2tGcmFtZS5mdW5jdGlvbk5hbWUgOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIihh
bm9ueW1vdXMgZnVuY3Rpb24pIiksICJ0aW1lbGluZS1mdW5jdGlvbi1uYW1lIikpOwogICAgICAg
ICAgICAgcm93LmFwcGVuZENoaWxkKHRoaXMuX2NyZWF0ZUNlbGwoIiBAICIpKTsKICAgICAgICAg
ICAgIHZhciBsaW5rQ2VsbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRkIik7Ci0gICAgICAg
ICAgICB2YXIgdXJsRWxlbWVudCA9IFdlYkluc3BlY3Rvci5UaW1lbGluZVBhbmVsLkZvcm1hdHRl
ZFJlY29yZC5wcm90b3R5cGUuX2xpbmtpZnlDYWxsRnJhbWUoc3RhY2tGcmFtZSk7CisgICAgICAg
ICAgICB2YXIgdXJsRWxlbWVudCA9IHRoaXMuX3BhbmVsLl9saW5raWZ5Q2FsbEZyYW1lKHN0YWNr
RnJhbWUpOwogICAgICAgICAgICAgbGlua0NlbGwuYXBwZW5kQ2hpbGQodXJsRWxlbWVudCk7CiAg
ICAgICAgICAgICByb3cuYXBwZW5kQ2hpbGQobGlua0NlbGwpOwogICAgICAgICAgICAgZnJhbWVz
VGFibGUuYXBwZW5kQ2hpbGQocm93KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9pbnNwZWN0b3IuanMKaW5kZXggNmFjZTcxZWNiNTMwYzJlMWYwOWQ1YWNiNmZiYzQ5
MGUxZTE1ODIwNi4uNjgyMDk0MDI2ZDQ1ZmJhMGI5MmZlZGRmZGVjN2YwZWUwZTg5MjVkZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKQEAg
LTUwOSw2ICs1MDksOSBAQCBXZWJJbnNwZWN0b3IuZG9Mb2FkZWREb25lID0gZnVuY3Rpb24oKQog
ICAgIHRoaXMuY29uc29sZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Db25zb2xlTW9k
ZWwuRXZlbnRzLk1lc3NhZ2VBZGRlZCwgdGhpcy5fdXBkYXRlRXJyb3JBbmRXYXJuaW5nQ291bnRz
LCB0aGlzKTsKICAgICB0aGlzLmNvbnNvbGUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3Iu
Q29uc29sZU1vZGVsLkV2ZW50cy5SZXBlYXRDb3VudFVwZGF0ZWQsIHRoaXMuX3VwZGF0ZUVycm9y
QW5kV2FybmluZ0NvdW50cywgdGhpcyk7CiAKKyAgICB0aGlzLmRlYnVnZ2VyTW9kZWwgPSBuZXcg
V2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwoKTsKKyAgICB0aGlzLmRlYnVnZ2VyUHJlc2VudGF0
aW9uTW9kZWwgPSBuZXcgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwoKTsK
KwogICAgIHRoaXMuZHJhd2VyID0gbmV3IFdlYkluc3BlY3Rvci5EcmF3ZXIoKTsKICAgICB0aGlz
LmNvbnNvbGVWaWV3ID0gbmV3IFdlYkluc3BlY3Rvci5Db25zb2xlVmlldyhXZWJJbnNwZWN0b3Iu
V29ya2VyTWFuYWdlci5pc1dvcmtlckZyb250ZW5kKCkpOwogCkBAIC01MjEsOCArNTI0LDYgQEAg
V2ViSW5zcGVjdG9yLmRvTG9hZGVkRG9uZSA9IGZ1bmN0aW9uKCkKICAgICBJbnNwZWN0b3JCYWNr
ZW5kLnJlZ2lzdGVySW5zcGVjdG9yRGlzcGF0Y2hlcih0aGlzKTsKIAogICAgIHRoaXMuY3NzTW9k
ZWwgPSBuZXcgV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwoKTsKLSAgICB0aGlzLmRlYnVnZ2Vy
TW9kZWwgPSBuZXcgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwoKTsKLSAgICB0aGlzLmRlYnVn
Z2VyUHJlc2VudGF0aW9uTW9kZWwgPSBuZXcgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0
aW9uTW9kZWwoKTsKIAogICAgIHRoaXMuc2VhcmNoQ29udHJvbGxlciA9IG5ldyBXZWJJbnNwZWN0
b3IuU2VhcmNoQ29udHJvbGxlcigpOwogCg==
</data>
<flag name="review"
          id="107070"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
      

    </bug>

</bugzilla>