<?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>191345</bug_id>
          
          <creation_ts>2018-11-06 20:22:30 -0800</creation_ts>
          <short_desc>Web Inspector: Start moving toward better multi-target support</short_desc>
          <delta_ts>2018-11-09 11:25:23 -0800</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</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Joseph Pecoraro">joepeck</reporter>
          <assigned_to name="Joseph Pecoraro">joepeck</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>hi</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>joepeck</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1475853</commentid>
    <comment_count>0</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2018-11-06 20:22:30 -0800</bug_when>
    <thetext>Start moving toward better multi-target support

A world where we do:

    if (PageAgent.foo)
        PageAgent.foo(...);

Is ambiguous in a multi-target world:

  • Which target is the `PageAgent.foo` command going to go to?
  • Which target is the `PageAgent.foo` feature check happening on? Is that important?

Ultimately, the behavior that we would like to have is to always do:

  • target.PageAgent

Then it is clear exactly which target we are operating on.

Another possibility is that we don&apos;t care or have a Target, we just want to &quot;feature check&quot; (common for enums as well)

    if (FooAgent.hasEvent(&quot;someEvent&quot;))
       ... support something else ...

In these cases, we should have an agnostic way to just get the complete list of whatever the backend supports:

    InspectorBackend.domains.Foo.hasEvent(&quot;someEvent&quot;)

The key part being:

    InspectorBackend.domains.&lt;DomainName&gt;

---

For now we have hundreds of places in our code that are using unprefixed or window prefixed agents. As we bring up multi-target support we should start eliminating these. Currently the behavior is they use the &quot;Main Target Connection&quot;. That ends up being fine right now as the main target is limited to being a Page or ServiceWorker debuggable. But as we move toward supporting multiple such targets each unprefixed access to &quot;PageAgent&quot;, &quot;DOMAgent&quot;, &quot;NetworkAgent&quot;, etc will need to be explicit per-target.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1475858</commentid>
    <comment_count>1</comment_count>
      <attachid>354057</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2018-11-06 20:38:37 -0800</bug_when>
    <thetext>Created attachment 354057
[PATCH] Proposed Fix

I assume this won&apos;t apply, but I&apos;ll get it up for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1475892</commentid>
    <comment_count>2</comment_count>
      <attachid>354057</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2018-11-06 22:53:52 -0800</bug_when>
    <thetext>Comment on attachment 354057
[PATCH] Proposed Fix

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

&gt; Source/WebInspectorUI/UserInterface/Controllers/DebuggerManager.js:692
&gt; +        if (!InspectorBackend.domains.Debugger.setPauseOnAssertions) {

Why not use `target.DebuggerAgent` here?

&gt; Source/WebInspectorUI/UserInterface/Controllers/NetworkManager.js:65
&gt; +            if (target.NetworkAgent.setResourceCachingDisabled &amp;&amp; WI.settings.resourceCachingDisabled &amp;&amp; WI.settings.resourceCachingDisabled.value)

The second check for `WI.settings.resourceCachingDisabled` is unnecessary as it always exists

&gt; Source/WebInspectorUI/UserInterface/Controllers/NetworkManager.js:66
&gt; +                target.NetworkAgent.setResourceCachingDisabled(true);

You could just call this function with the `WI.Setting`&apos;s value instead of using `true`:

    if (target.NetworkAgent.setResourceCachingDisabled)
        target.NetworkAgent.setResourceCachingDisabled(WI.settings.resourceCachingDisabled.value);

&gt; Source/WebInspectorUI/UserInterface/Controllers/RuntimeManager.js:44
&gt; +        if (target.RuntimeAgent.enableTypeProfiler &amp;&amp; WI.settings.showJavaScriptTypeInformation &amp;&amp; WI.settings.showJavaScriptTypeInformation.value)

Ditto (NetworkManager.js:65)

&gt; Source/WebInspectorUI/UserInterface/Controllers/RuntimeManager.js:48
&gt; +        if (target.RuntimeAgent.enableControlFlowProfiler &amp;&amp; WI.settings.enableControlFlowProfiler &amp;&amp; WI.settings.enableControlFlowProfiler.value)

Ditto (NetworkManager.js:65)

&gt; Source/WebInspectorUI/UserInterface/Controllers/RuntimeManager.js:135
&gt; +        let executionContextId = this._activeExecutionContext.id;

Considering that this is only used in one place, I&apos;d be fine just inlining it there

&gt; Source/WebInspectorUI/UserInterface/Controllers/TimelineManager.js:726
&gt; +        if (!window.TimelineAgent)

Shouldn&apos;t this follow the `domains` approach?

    if (!InspectorBackend.domains.Timeline)

&gt; Source/WebInspectorUI/UserInterface/Controllers/TimelineManager.js:1095
&gt; +            target.TimelineAgent.setInstruments([...instrumentSet]);

`Array.from` should be faster/simpler than constructing an array using spread
&lt;https://jsperf.com/set-iterator-vs-foreach/4&gt;

&gt; Source/WebInspectorUI/UserInterface/Models/ScriptSyntaxTree.js:178
&gt; +        if (!InspectorBackend.domains.DOM.hasEvent(&quot;pseudoElementAdded&quot;))

While we&apos;re doing this change, is there no other protocol check we can perform for iOS9?  Something in one of the &quot;always available&quot; domains?  Perhaps that `RuntimeAgent.enableTypeProfiler` exists?

&gt; Source/WebInspectorUI/UserInterface/Protocol/Target.js:75
&gt; +            if (this.PageAgent.setShowPaintRects &amp;&amp; WI.settings.showPaintRects.value)

Ditto (NetworkManager.js:65)

&gt; Source/WebInspectorUI/UserInterface/Views/ContextMenuUtilities.js:176
&gt; +                    result.release();

Shouldn&apos;t we still release in the case that the `result.type !== &quot;function&quot;`?

&gt; Source/WebInspectorUI/UserInterface/Views/DOMTreeContentView.js:104
&gt; +        if (window.PageAgent &amp;&amp; PageAgent.setShowRulers)

Ditto (TimelineManager.js:726)

    if (InspectorBackend.domains.Page.setShowRulers)

&gt; Source/WebInspectorUI/UserInterface/Views/LogContentView.js:131
&gt; +        if (window.HeapAgent &amp;&amp; HeapAgent.gc)

Ditto (TimelineManager.js:726)

    if (InspectorBackend.domains.Heap.gc)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1476130</commentid>
    <comment_count>3</comment_count>
      <attachid>354057</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2018-11-07 12:39:20 -0800</bug_when>
    <thetext>Comment on attachment 354057
[PATCH] Proposed Fix

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

&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/DebuggerManager.js:692
&gt;&gt; +        if (!InspectorBackend.domains.Debugger.setPauseOnAssertions) {
&gt; 
&gt; Why not use `target.DebuggerAgent` here?

This is using `setPauseOnAssertions` as an agnostic feature check for &quot;we are after iOS 10 or not&quot;. I think its more of an agnostic feature check then a per-target check. But I&apos;ll still switch to the target version here.

&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/NetworkManager.js:66
&gt;&gt; +                target.NetworkAgent.setResourceCachingDisabled(true);
&gt; 
&gt; You could just call this function with the `WI.Setting`&apos;s value instead of using `true`:
&gt; 
&gt;     if (target.NetworkAgent.setResourceCachingDisabled)
&gt;         target.NetworkAgent.setResourceCachingDisabled(WI.settings.resourceCachingDisabled.value);

Done. Some of these we probably just wanted to avoid a message to the backend if we know we were matching the default value, like sending false when the backend should be false.

&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/TimelineManager.js:726
&gt;&gt; +        if (!window.TimelineAgent)
&gt; 
&gt; Shouldn&apos;t this follow the `domains` approach?
&gt; 
&gt;     if (!InspectorBackend.domains.Timeline)

Ultimately for multi-target support this code will need to attempt to enable auto capture on one or more targets. So this will have to be revisited later. So I used `window.TargetAgent` to make it clear that we should revisit it.

&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/TimelineManager.js:1095
&gt;&gt; +            target.TimelineAgent.setInstruments([...instrumentSet]);
&gt; 
&gt; `Array.from` should be faster/simpler than constructing an array using spread
&gt; &lt;https://jsperf.com/set-iterator-vs-foreach/4&gt;

Done.

&gt;&gt; Source/WebInspectorUI/UserInterface/Models/ScriptSyntaxTree.js:178
&gt;&gt; +        if (!InspectorBackend.domains.DOM.hasEvent(&quot;pseudoElementAdded&quot;))
&gt; 
&gt; While we&apos;re doing this change, is there no other protocol check we can perform for iOS9?  Something in one of the &quot;always available&quot; domains?  Perhaps that `RuntimeAgent.enableTypeProfiler` exists?

This is a difference between 9.0 and 9.3 and later... So our options are limited (none in the big 3 Runtime/Debugger/Console). I&apos;m going to keep this because it was the most accurate at the time.

&gt;&gt; Source/WebInspectorUI/UserInterface/Protocol/Target.js:75
&gt;&gt; +            if (this.PageAgent.setShowPaintRects &amp;&amp; WI.settings.showPaintRects.value)
&gt; 
&gt; Ditto (NetworkManager.js:65)

I think here we are avoiding sending `false` to the backend when we know the backend should already be starting out `false`.

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/ContextMenuUtilities.js:176
&gt;&gt; +                    result.release();
&gt; 
&gt; Shouldn&apos;t we still release in the case that the `result.type !== &quot;function&quot;`?

Agreed, I cleaned this up to:

    remoteObject.getProperty(&quot;constructor&quot;, (error, result, wasThrown) =&gt; {
        if (error)
            return;
        if (result.type === &quot;function&quot;)
            remoteObject.target.DebuggerAgent.getFunctionDetails(result.objectId, didGetFunctionDetails);
        result.release();
    });

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/DOMTreeContentView.js:104
&gt;&gt; +        if (window.PageAgent &amp;&amp; PageAgent.setShowRulers)
&gt; 
&gt; Ditto (TimelineManager.js:726)
&gt; 
&gt;     if (InspectorBackend.domains.Page.setShowRulers)

Same thing, regarding multi-target support.

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/LogContentView.js:131
&gt;&gt; +        if (window.HeapAgent &amp;&amp; HeapAgent.gc)
&gt; 
&gt; Ditto (TimelineManager.js:726)
&gt; 
&gt;     if (InspectorBackend.domains.Heap.gc)

Same thing regarding multi-target support.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1476620</commentid>
    <comment_count>4</comment_count>
      <attachid>354261</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2018-11-08 12:29:28 -0800</bug_when>
    <thetext>Created attachment 354261
[PATCH] Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1476813</commentid>
    <comment_count>5</comment_count>
      <attachid>354261</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2018-11-08 22:55:36 -0800</bug_when>
    <thetext>Comment on attachment 354261
[PATCH] Proposed Fix

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1476814</commentid>
    <comment_count>6</comment_count>
      <attachid>354261</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-11-08 22:57:31 -0800</bug_when>
    <thetext>Comment on attachment 354261
[PATCH] Proposed Fix

Rejecting attachment 354261 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-01&apos;, &apos;validate-changelog&apos;, &apos;--check-oops&apos;, &apos;--non-interactive&apos;, 354261, &apos;--port=mac&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

ChangeLog entry in Source/WebInspectorUI/ChangeLog is not at the top of the file.

Full output: https://webkit-queues.webkit.org/results/9920061</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477007</commentid>
    <comment_count>7</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2018-11-09 11:24:37 -0800</bug_when>
    <thetext>https://trac.webkit.org/changeset/238048/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477008</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-11-09 11:25:23 -0800</bug_when>
    <thetext>&lt;rdar://problem/45950197&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>354057</attachid>
            <date>2018-11-06 20:38:37 -0800</date>
            <delta_ts>2018-11-08 12:29:28 -0800</delta_ts>
            <desc>[PATCH] Proposed Fix</desc>
            <filename>multi-target-1.patch</filename>
            <type>text/plain</type>
            <size>38126</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDI1NjYwNmIyYWUxLi5hNzU5NDIxMWVhMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTA0IEBACisyMDE4LTExLTA2ICBKb3Nl
cGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3Rv
cjogU3RhcnQgbW92aW5nIHRvd2FyZCBiZXR0ZXIgbXVsdGktdGFyZ2V0IHN1cHBvcnQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTM0NQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGNv
bnRpbnVlcyB0aGUgbW92ZSB0b3dhcmQgYmV0dGVyIG11bHRpLXRhcmdldCBzdXBwb3J0CisgICAg
ICAgIGJ5IGV4cGxpY2l0bHkgdXNpbmcgZXhwbGljaXQgdGFyZ2V0IGFnZW50cyBpbiBtb3JlIHBs
YWNlcywgYW5kCisgICAgICAgIGNvbnZlcnRpbmcgZ2VuZXJhbGl6ZWQgZmVhdHVyZSBjaGVja3Mg
aW50byB0YXJnZXQgYWdub3N0aWMgdmVyc2lvbnMKKyAgICAgICAgdGhhdCB1c2UgdGhlIG5ldyBJ
bnNwZWN0b3JCYWNrZW5kLmRvbWFpbnMsIHdoaWNoIGRvZXMgbm90IHZhcnkgYmFzZWQKKyAgICAg
ICAgb24gdGhlIGNvbm5lY3RlZCB0YXJnZXRzIC8gZGVidWdnYWJsZSB0eXBlLgorCisgICAgICAg
IEkgYWxzbyBhdWRpdGVkIHVzZXMgb2YgUnVudGltZUFnZW50LCBDb25zb2xlQWdlbnQsIGFuZCBE
ZWJ1Z2dlckFnZW50CisgICAgICAgIGZvciBiZXR0ZXIgbXVsdGktdGFyZ2V0IHN1cHBvcnQgc2lu
Y2UgdGhlc2UgYWdlbnRzIHNob3VsZCBhbHJlYWR5CisgICAgICAgIGhhdmUgY29tcGxldGUgbXVs
dGktdGFyZ2V0IHN1cHBvcnQuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Byb3RvY29sL1Rh
cmdldC5qczoKKyAgICAgICAgKFdJLlRhcmdldC5wcm90b3R5cGUuaW5pdGlhbGl6ZSk6CisgICAg
ICAgIE1vdmUgZXhwbGljaXRseSB0byB0YXJnZXQuQWdlbnQgZmVhdHVyZSBjaGVja3Mgd2l0aCBh
IGtub3duIHRhcmdldC4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRGVi
dWdnZXJNYW5hZ2VyLmpzOgorICAgICAgICAoV0kuRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5p
bml0aWFsaXplVGFyZ2V0KToKKyAgICAgICAgKFdJLkRlYnVnZ2VyTWFuYWdlci5wcm90b3R5cGUu
X3BhdXNlRm9ySW50ZXJuYWxTY3JpcHRzRGlkQ2hhbmdlKToKKyAgICAgICAgTW92ZSBleHBsaWNp
dGx5IHRvIHRhcmdldC5EZWJ1Z2dlckFnZW50IGZvciBmZWF0dXJlIGNoZWNrcyB3aXRoIGEga25v
d24gdGFyZ2V0LgorCisgICAgICAgICogVXNlckludGVyZmFjZS9Db250cm9sbGVycy9OZXR3b3Jr
TWFuYWdlci5qczoKKyAgICAgICAgKFdJLk5ldHdvcmtNYW5hZ2VyLnByb3RvdHlwZS5pbml0aWFs
aXplVGFyZ2V0KToKKyAgICAgICAgTW92ZSBleHBsaWNpdGx5IHRvIHRhcmdldC5OZXR3b3JrQWdl
bnQgZm9yIGZlYXR1cmUgY2hlY2tzIHdpdGggYSBrbm93biB0YXJnZXQuCisKKyAgICAgICAgKiBV
c2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1J1bnRpbWVNYW5hZ2VyLmpzOgorICAgICAgICAoV0ku
UnVudGltZU1hbmFnZXIucHJvdG90eXBlLmluaXRpYWxpemVUYXJnZXQpOgorICAgICAgICAoV0ku
UnVudGltZU1hbmFnZXIucHJvdG90eXBlLnNhdmVSZXN1bHQpOgorICAgICAgICAqIFVzZXJJbnRl
cmZhY2UvUHJvdG9jb2wvUmVtb3RlT2JqZWN0LmpzOgorICAgICAgICAoV0kuUmVtb3RlT2JqZWN0
LnByb3RvdHlwZS51cGRhdGVQcmV2aWV3KToKKyAgICAgICAgKFdJLlJlbW90ZU9iamVjdC5wcm90
b3R5cGUuZ2V0RGlzcGxheWFibGVQcm9wZXJ0eURlc2NyaXB0b3JzKToKKyAgICAgICAgKFdJLlJl
bW90ZU9iamVjdC5wcm90b3R5cGUuZGVwcmVjYXRlZEdldERpc3BsYXlhYmxlUHJvcGVydGllcyk6
CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9Tb3VyY2VDb2RlVGV4dEVkaXRvci5qczoK
KyAgICAgICAgKFdJLlNvdXJjZUNvZGVUZXh0RWRpdG9yLnByb3RvdHlwZS5fY3JlYXRlVHlwZVRv
a2VuQW5ub3RhdG9yKToKKyAgICAgICAgKFdJLlNvdXJjZUNvZGVUZXh0RWRpdG9yLnByb3RvdHlw
ZS5fY3JlYXRlQmFzaWNCbG9ja0Fubm90YXRvcik6CisgICAgICAgIE1vdmUgZXhwbGljaXRseSB0
byB0YXJnZXQuUnVudGltZUFnZW50IGZvciBmZWF0dXJlIGNoZWNrcyB3aXRoIGEga25vd24gdGFy
Z2V0LgorCisgICAgICAgICogVXNlckludGVyZmFjZS9Nb2RlbHMvQ1NTQ29tcGxldGlvbnMuanM6
CisgICAgICAgIChXSS5DU1NDb21wbGV0aW9ucy5pbml0aWFsaXplQ1NTQ29tcGxldGlvbnMpOgor
ICAgICAgICBNb3ZlIGV4cGxpY2l0bHkgdG8gdGFyZ2V0LkNTU0FnZW50IGZvciBmZWF0dXJlIGNo
ZWNrcyB3aXRoIGEga25vd24gdGFyZ2V0LgorCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3
cy9Db250ZXh0TWVudVV0aWxpdGllcy5qczoKKyAgICAgICAgVXNlIHRoZSBEZWJ1Z2dlckFnZW50
IGZyb20gdGhlIHRhcmdldCBhc3NvY2lhdGVkIHdpdGggdGhlIERPTU5vZGUncworICAgICAgICBy
ZW1vdGUgb2JqZWN0IGluc3RlYWQgb2YgYXNzdW1pbmcgdGhlIG1haW4gdGFyZ2V0LgorCisgICAg
ICAgICogVXNlckludGVyZmFjZS9WaWV3cy9TZXR0aW5nc1RhYkNvbnRlbnRWaWV3LmpzOgorICAg
ICAgICAoV0kuU2V0dGluZ3NUYWJDb250ZW50Vmlldy5wcm90b3R5cGUuX2NyZWF0ZUdlbmVyYWxT
ZXR0aW5nc1ZpZXcpOgorICAgICAgICBVcGRhdGUgdGhlIENvbnNvbGVBZ2VudCBzZXR0aW5nIG9u
IGFsbCB0YXJnZXRzIHRoYXQgc3VwcG9ydCBpdC4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2Uv
Vmlld3MvQnJlYWtwb2ludEFjdGlvblZpZXcuanM6CisgICAgICAgIChXSS5CcmVha3BvaW50QWN0
aW9uVmlldyk6CisgICAgICAgIEFsbCBiYWNrZW5kcyBzdXBwb3J0IEJyZWFrcG9pbnRBY3Rpb25U
eXBlLCB0aGUgYXNzZXJ0aW9uIGNhbiBnbyBhd2F5LgorCisgICAgICAgICogVXNlckludGVyZmFj
ZS9WaWV3cy9Mb2dDb250ZW50Vmlldy5qczoKKyAgICAgICAgKFdJLkxvZ0NvbnRlbnRWaWV3LnBy
b3RvdHlwZS5nZXQgbmF2aWdhdGlvbkl0ZW1zKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Zp
ZXdzL0RPTVRyZWVDb250ZW50Vmlldy5qczoKKyAgICAgICAgKFdJLkRPTVRyZWVDb250ZW50Vmll
dy5wcm90b3R5cGUuZ2V0IG5hdmlnYXRpb25JdGVtcyk6CisgICAgICAgIEluY2x1ZGUgYWRkaXRp
b25hbCBgd2luZG93LkZvb0FnZW50YCBjaGVja3MgZm9yIHRoZXNlIHNpbmNlIHRoZXkgd2lsbCBu
ZWVkCisgICAgICAgIHRvIGJlIHJldmlzaXRlZCBpbiB0aGUgZnV0dXJlLgorCisgICAgICAgICog
VXNlckludGVyZmFjZS9Qcm90b2NvbC9JbnNwZWN0b3JCYWNrZW5kLmpzOgorICAgICAgICAoSW5z
cGVjdG9yQmFja2VuZENsYXNzLnByb3RvdHlwZS5nZXQgZG9tYWlucyk6CisgICAgICAgIChJbnNw
ZWN0b3JCYWNrZW5kQ2xhc3MucHJvdG90eXBlLmFjdGl2YXRlRG9tYWluKToKKyAgICAgICAgRXhw
b3NlIEluc3BlY3RvckJhY2tlbmQuZG9tYWlucy48RG9tYWluPiBmb3IgZmVhdHVyZSBjaGVja2lu
Zy4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQnJlYWtwb2ludFBvcG92
ZXJDb250cm9sbGVyLmpzOgorICAgICAgICAoV0kuQnJlYWtwb2ludFBvcG92ZXJDb250cm9sbGVy
LnByb3RvdHlwZS5fY3JlYXRlUG9wb3ZlckNvbnRlbnQpOgorICAgICAgICAqIFVzZXJJbnRlcmZh
Y2UvQ29udHJvbGxlcnMvQ1NTTWFuYWdlci5qczoKKyAgICAgICAgKFdJLkNTU01hbmFnZXIpOgor
ICAgICAgICAoV0kuQ1NTTWFuYWdlci5wcm90b3R5cGUuX21haW5SZXNvdXJjZURpZENoYW5nZSk6
CisgICAgICAgICogVXNlckludGVyZmFjZS9Db250cm9sbGVycy9UaW1lbGluZU1hbmFnZXIuanM6
CisgICAgICAgIChXSS5UaW1lbGluZU1hbmFnZXIucHJvdG90eXBlLl9hdHRlbXB0QXV0b0NhcHR1
cmluZ0ZvckZyYW1lKToKKyAgICAgICAgKFdJLlRpbWVsaW5lTWFuYWdlci5wcm90b3R5cGUuX3Vw
ZGF0ZUF1dG9DYXB0dXJlSW5zdHJ1bWVudHMpOgorICAgICAgICAoV0kuVGltZWxpbmVNYW5hZ2Vy
KToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01vZGVscy9DYW52YXMuanM6CisgICAgICAgIChX
SS5DYW52YXMucHJvdG90eXBlLnN0YXJ0UmVjb3JkaW5nKToKKyAgICAgICAgKFdJLkNhbnZhcy5w
cm90b3R5cGUucmVjb3JkaW5nRmluaXNoZWQpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTW9k
ZWxzL1NjcmlwdFN5bnRheFRyZWUuanM6CisgICAgICAgIChXSS5TY3JpcHRTeW50YXhUcmVlLmZ1
bmN0aW9uUmV0dXJuRGl2b3QpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvUHJvdG9jb2wvRGVi
dWdnZXJPYnNlcnZlci5qczoKKyAgICAgICAgKFdJLkRlYnVnZ2VyT2JzZXJ2ZXIpOgorICAgICAg
ICAqIFVzZXJJbnRlcmZhY2UvUHJvdG9jb2wvTmV0d29ya09ic2VydmVyLmpzOgorICAgICAgICAo
V0kuTmV0d29ya09ic2VydmVyLnByb3RvdHlwZS5yZXF1ZXN0V2lsbEJlU2VudCk6CisgICAgICAg
ICogVXNlckludGVyZmFjZS9WaWV3cy9EZWJ1Z2dlclNpZGViYXJQYW5lbC5qczoKKyAgICAgICAg
KFdJLkRlYnVnZ2VyU2lkZWJhclBhbmVsKToKKyAgICAgICAgKFdJLkRlYnVnZ2VyU2lkZWJhclBh
bmVsLnByb3RvdHlwZS5faGFuZGxlQ3JlYXRlQnJlYWtwb2ludENsaWNrZWQpOgorICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvVmlld3MvTmV0d29ya1RpbWVsaW5lVmlldy5qczoKKyAgICAgICAgKFdJ
Lk5ldHdvcmtUaW1lbGluZVZpZXcpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvUmVz
b3VyY2VEZXRhaWxzU2lkZWJhclBhbmVsLmpzOgorICAgICAgICAoV0kuUmVzb3VyY2VEZXRhaWxz
U2lkZWJhclBhbmVsLnByb3RvdHlwZS5fcmVmcmVzaFJlcXVlc3RBbmRSZXNwb25zZSk6CisgICAg
ICAgICogVXNlckludGVyZmFjZS9WaWV3cy9XZWJTb2NrZXRDb250ZW50Vmlldy5qczoKKyAgICAg
ICAgKFdJLldlYlNvY2tldENvbnRlbnRWaWV3KToKKyAgICAgICAgKFdJLk5ldHdvcmtNYW5hZ2Vy
LnByb3RvdHlwZS53ZWJTb2NrZXRXaWxsU2VuZEhhbmRzaGFrZVJlcXVlc3QpOgorICAgICAgICAo
V0kuRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5kZWJ1Z2dlckRpZFJlc3VtZSk6CisgICAgICAg
IEZlYXR1cmUgY2hlY2sgaW4gYSB0YXJnZXQgYWdub3N0aWMgd2F5LgorCiAyMDE4LTExLTA2ICBK
b3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3Bl
Y3RvcjogUmVzdHJpY3QgZG9tYWlucyBhdCB0aGUgdGFyZ2V0IGxldmVsIGluc3RlYWQgb2Ygb25s
eSBhdCB0aGUgd2luZG93IGxldmVsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Db250cm9sbGVycy9CcmVha3BvaW50UG9wb3ZlckNvbnRyb2xsZXIuanMg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9CcmVha3Bv
aW50UG9wb3ZlckNvbnRyb2xsZXIuanMKaW5kZXggYTg2NTg1ZTM2ZDMuLmVhZTY3YWFjNjBiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVy
cy9CcmVha3BvaW50UG9wb3ZlckNvbnRyb2xsZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQnJlYWtwb2ludFBvcG92ZXJDb250cm9sbGVy
LmpzCkBAIC0xNzMsNyArMTczLDcgQEAgV0kuQnJlYWtwb2ludFBvcG92ZXJDb250cm9sbGVyID0g
Y2xhc3MgQnJlYWtwb2ludFBvcG92ZXJDb250cm9sbGVyIGV4dGVuZHMgV0kuT2IKICAgICAgICAg
Ly8gQ09NUEFUSUJJTElUWSAoaU9TIDkpOiBMZWdhY3kgYmFja2VuZHMgZG9uJ3Qgc3VwcG9ydCBi
cmVha3BvaW50IGlnbm9yZSBjb3VudC4gU2luY2Ugc3VwcG9ydAogICAgICAgICAvLyBjYW4ndCBi
ZSB0ZXN0ZWQgZGlyZWN0bHksIGNoZWNrIGZvciBDU1MuZ2V0U3VwcG9ydGVkU3lzdGVtRm9udEZh
bWlseU5hbWVzLgogICAgICAgICAvLyBGSVhNRTogVXNlIGV4cGxpY2l0IHZlcnNpb24gY2hlY2tp
bmcgb25jZSBodHRwczovL3dlYmtpdC5vcmcvYi8xNDg2ODAgaXMgZml4ZWQuCi0gICAgICAgIGlm
IChDU1NBZ2VudC5nZXRTdXBwb3J0ZWRTeXN0ZW1Gb250RmFtaWx5TmFtZXMpIHsKKyAgICAgICAg
aWYgKEluc3BlY3RvckJhY2tlbmQuZG9tYWlucy5DU1MuZ2V0U3VwcG9ydGVkU3lzdGVtRm9udEZh
bWlseU5hbWVzKSB7CiAgICAgICAgICAgICBsZXQgaWdub3JlQ291bnRSb3cgPSB0YWJsZS5hcHBl
bmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ciIpKTsKICAgICAgICAgICAgIGxldCBp
Z25vcmVDb3VudEhlYWRlciA9IGlnbm9yZUNvdW50Um93LmFwcGVuZENoaWxkKGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoInRoIikpOwogICAgICAgICAgICAgbGV0IGlnbm9yZUNvdW50TGFiZWwgPSBp
Z25vcmVDb3VudEhlYWRlci5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsYWJl
bCIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Nv
bnRyb2xsZXJzL0NTU01hbmFnZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Db250cm9sbGVycy9DU1NNYW5hZ2VyLmpzCmluZGV4IGIyOGI0NDIwYWQwLi40ODkwNjdi
OWU4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29u
dHJvbGxlcnMvQ1NTTWFuYWdlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Db250cm9sbGVycy9DU1NNYW5hZ2VyLmpzCkBAIC00OCw3ICs0OCw3IEBAIFdJLkNT
U01hbmFnZXIgPSBjbGFzcyBDU1NNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICAgICAg
Ly8gQ09NUEFUSUJJTElUWSAoaU9TIDkpOiBMZWdhY3kgYmFja2VuZHMgZGlkIG5vdCBzZW5kIHN0
eWxlc2hlZXQKICAgICAgICAgLy8gYWRkZWQvcmVtb3ZlZCBldmVudHMgYW5kIG11c3QgYmUgZmV0
Y2hlZCBtYW51YWxseS4KLSAgICAgICAgdGhpcy5fZmV0Y2hlZEluaXRpYWxTdHlsZVNoZWV0cyA9
IHdpbmRvdy5DU1NBZ2VudCAmJiB3aW5kb3cuQ1NTQWdlbnQuaGFzRXZlbnQoInN0eWxlU2hlZXRB
ZGRlZCIpOworICAgICAgICB0aGlzLl9mZXRjaGVkSW5pdGlhbFN0eWxlU2hlZXRzID0gSW5zcGVj
dG9yQmFja2VuZC5kb21haW5zLkNTUy5oYXNFdmVudCgic3R5bGVTaGVldEFkZGVkIik7CiAgICAg
fQogCiAgICAgLy8gVGFyZ2V0CkBAIC0zNjMsNyArMzYzLDcgQEAgV0kuQ1NTTWFuYWdlciA9IGNs
YXNzIENTU01hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgICAgICAvLyBDbGVhciBvdXIg
bWFwcyB3aGVuIHRoZSBtYWluIGZyYW1lIG5hdmlnYXRlcy4KIAotICAgICAgICB0aGlzLl9mZXRj
aGVkSW5pdGlhbFN0eWxlU2hlZXRzID0gd2luZG93LkNTU0FnZW50ICYmIHdpbmRvdy5DU1NBZ2Vu
dC5oYXNFdmVudCgic3R5bGVTaGVldEFkZGVkIik7CisgICAgICAgIHRoaXMuX2ZldGNoZWRJbml0
aWFsU3R5bGVTaGVldHMgPSBJbnNwZWN0b3JCYWNrZW5kLmRvbWFpbnMuQ1NTLmhhc0V2ZW50KCJz
dHlsZVNoZWV0QWRkZWQiKTsKICAgICAgICAgdGhpcy5fc3R5bGVTaGVldElkZW50aWZpZXJNYXAu
Y2xlYXIoKTsKICAgICAgICAgdGhpcy5fc3R5bGVTaGVldEZyYW1lVVJMTWFwLmNsZWFyKCk7CiAg
ICAgICAgIHRoaXMuX25vZGVTdHlsZXNNYXAgPSB7fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0RlYnVnZ2VyTWFuYWdlci5qcyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0RlYnVnZ2Vy
TWFuYWdlci5qcwppbmRleCBhNWMzZmFmYzRmZi4uYmZkYmI1YTBlYTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0RlYnVnZ2VyTWFu
YWdlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9s
bGVycy9EZWJ1Z2dlck1hbmFnZXIuanMKQEAgLTExOCwxNSArMTE4LDE1IEBAIFdJLkRlYnVnZ2Vy
TWFuYWdlciA9IGNsYXNzIERlYnVnZ2VyTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAg
ICB0YXJnZXQuRGVidWdnZXJBZ2VudC5zZXRQYXVzZU9uRXhjZXB0aW9ucyh0aGlzLl9icmVha09u
RXhjZXB0aW9uc1N0YXRlKTsKIAogICAgICAgICAvLyBDT01QQVRJQklMSVRZIChpT1MgMTApOiBE
ZWJ1Z2dlckFnZW50LnNldFBhdXNlT25Bc3NlcnRpb25zIGRpZCBub3QgZXhpc3QgeWV0LgotICAg
ICAgICBpZiAoRGVidWdnZXJBZ2VudC5zZXRQYXVzZU9uQXNzZXJ0aW9ucykKKyAgICAgICAgaWYg
KHRhcmdldC5EZWJ1Z2dlckFnZW50LnNldFBhdXNlT25Bc3NlcnRpb25zKQogICAgICAgICAgICAg
dGFyZ2V0LkRlYnVnZ2VyQWdlbnQuc2V0UGF1c2VPbkFzc2VydGlvbnModGhpcy5fYXNzZXJ0aW9u
RmFpbHVyZXNCcmVha3BvaW50RW5hYmxlZFNldHRpbmcudmFsdWUpOwogCiAgICAgICAgIC8vIENP
TVBBVElCSUxJVFkgKGlPUyAxMCk6IERlYnVnZ2VyLnNldEFzeW5jU3RhY2tUcmFjZURlcHRoIGRp
ZCBub3QgZXhpc3QgeWV0LgotICAgICAgICBpZiAoRGVidWdnZXJBZ2VudC5zZXRBc3luY1N0YWNr
VHJhY2VEZXB0aCkKKyAgICAgICAgaWYgKHRhcmdldC5EZWJ1Z2dlckFnZW50LnNldEFzeW5jU3Rh
Y2tUcmFjZURlcHRoKQogICAgICAgICAgICAgdGFyZ2V0LkRlYnVnZ2VyQWdlbnQuc2V0QXN5bmNT
dGFja1RyYWNlRGVwdGgodGhpcy5fYXN5bmNTdGFja1RyYWNlRGVwdGhTZXR0aW5nLnZhbHVlKTsK
IAogICAgICAgICAvLyBDT01QQVRJQklMSVRZIChpT1MgMTIpOiBEZWJ1Z2dlckFnZW50LnNldFBh
dXNlRm9ySW50ZXJuYWxTY3JpcHRzIGRpZCBub3QgZXhpc3QgeWV0LgotICAgICAgICBpZiAoRGVi
dWdnZXJBZ2VudC5zZXRQYXVzZUZvckludGVybmFsU2NyaXB0cykKKyAgICAgICAgaWYgKHRhcmdl
dC5EZWJ1Z2dlckFnZW50LnNldFBhdXNlRm9ySW50ZXJuYWxTY3JpcHRzKQogICAgICAgICAgICAg
dGFyZ2V0LkRlYnVnZ2VyQWdlbnQuc2V0UGF1c2VGb3JJbnRlcm5hbFNjcmlwdHMoV0kuc2V0dGlu
Z3MucGF1c2VGb3JJbnRlcm5hbFNjcmlwdHMudmFsdWUpOwogCiAgICAgICAgIGlmICh0aGlzLnBh
dXNlZCkKQEAgLTY4OSw3ICs2ODksNyBAQCBXSS5EZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBEZWJ1
Z2dlck1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgLy8gNTBtcywgYW5kIHRyZWF0
IGl0IGFzIGEgcmVhbCByZXN1bWUgaWYgd2UgaGF2ZW4ndCBwYXVzZWQgaW4gdGhhdCB0aW1lIGZy
YW1lLgogICAgICAgICAvLyBUaGlzIGRlbGF5IGVuc3VyZXMgdGhlIHVzZXIgaW50ZXJmYWNlIGRv
ZXMgbm90IGZsYXNoIGJldHdlZW4gYnJpZWYgc3RlcHMKICAgICAgICAgLy8gb3Igc3VjY2Vzc2l2
ZSBicmVha3BvaW50cy4KLSAgICAgICAgaWYgKCFEZWJ1Z2dlckFnZW50LnNldFBhdXNlT25Bc3Nl
cnRpb25zKSB7CisgICAgICAgIGlmICghSW5zcGVjdG9yQmFja2VuZC5kb21haW5zLkRlYnVnZ2Vy
LnNldFBhdXNlT25Bc3NlcnRpb25zKSB7CiAgICAgICAgICAgICB0aGlzLl9kZWxheWVkUmVzdW1l
VGltZW91dCA9IHNldFRpbWVvdXQodGhpcy5fZGlkUmVzdW1lSW50ZXJuYWwuYmluZCh0aGlzLCB0
YXJnZXQpLCA1MCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTExNTYsMTEg
KzExNTYsMTAgQEAgV0kuRGVidWdnZXJNYW5hZ2VyID0gY2xhc3MgRGVidWdnZXJNYW5hZ2VyIGV4
dGVuZHMgV0kuT2JqZWN0CiAKICAgICBfcGF1c2VGb3JJbnRlcm5hbFNjcmlwdHNEaWRDaGFuZ2Uo
ZXZlbnQpCiAgICAgewotICAgICAgICAvLyBDT01QQVRJQklMSVRZIChpT1MgMTIpOiBEZWJ1Z2dl
ckFnZW50LnNldFBhdXNlRm9ySW50ZXJuYWxTY3JpcHRzIGRpZCBub3QgZXhpc3QgeWV0LgotICAg
ICAgICBjb25zb2xlLmFzc2VydChEZWJ1Z2dlckFnZW50LnNldFBhdXNlRm9ySW50ZXJuYWxTY3Jp
cHRzKTsKLQotICAgICAgICBmb3IgKGxldCB0YXJnZXQgb2YgV0kudGFyZ2V0cykKLSAgICAgICAg
ICAgIHRhcmdldC5EZWJ1Z2dlckFnZW50LnNldFBhdXNlRm9ySW50ZXJuYWxTY3JpcHRzKFdJLnNl
dHRpbmdzLnBhdXNlRm9ySW50ZXJuYWxTY3JpcHRzLnZhbHVlKTsKKyAgICAgICAgZm9yIChsZXQg
dGFyZ2V0IG9mIFdJLnRhcmdldHMpIHsKKyAgICAgICAgICAgIGlmICh0YXJnZXQuRGVidWdnZXJB
Z2VudC5zZXRQYXVzZUZvckludGVybmFsU2NyaXB0cykKKyAgICAgICAgICAgICAgICB0YXJnZXQu
RGVidWdnZXJBZ2VudC5zZXRQYXVzZUZvckludGVybmFsU2NyaXB0cyhXSS5zZXR0aW5ncy5wYXVz
ZUZvckludGVybmFsU2NyaXB0cy52YWx1ZSk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBfbWFp
blJlc291cmNlRGlkQ2hhbmdlKGV2ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvTmV0d29ya01hbmFnZXIuanMgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9OZXR3b3JrTWFuYWdlci5q
cwppbmRleCBkNmNlZWE5OTdiMi4uNWNiOTI0MjlmOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL05ldHdvcmtNYW5hZ2VyLmpzCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL05ldHdv
cmtNYW5hZ2VyLmpzCkBAIC02MiwxMCArNjIsOCBAQCBXSS5OZXR3b3JrTWFuYWdlciA9IGNsYXNz
IE5ldHdvcmtNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgICAgICB0YXJnZXQuTmV0
d29ya0FnZW50LmVuYWJsZSgpOwogCiAgICAgICAgICAgICAvLyBDT01QQVRJQklMSVRZIChpT1Mg
MTAuMyk6IE5ldHdvcmsuc2V0RGlzYWJsZVJlc291cmNlQ2FjaGluZyBkaWQgbm90IGV4aXN0Lgot
ICAgICAgICAgICAgaWYgKE5ldHdvcmtBZ2VudC5zZXRSZXNvdXJjZUNhY2hpbmdEaXNhYmxlZCkg
ewotICAgICAgICAgICAgICAgIGlmIChXSS5zZXR0aW5ncy5yZXNvdXJjZUNhY2hpbmdEaXNhYmxl
ZCAmJiBXSS5zZXR0aW5ncy5yZXNvdXJjZUNhY2hpbmdEaXNhYmxlZC52YWx1ZSkKLSAgICAgICAg
ICAgICAgICAgICAgdGFyZ2V0Lk5ldHdvcmtBZ2VudC5zZXRSZXNvdXJjZUNhY2hpbmdEaXNhYmxl
ZCh0cnVlKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICh0YXJnZXQuTmV0d29ya0Fn
ZW50LnNldFJlc291cmNlQ2FjaGluZ0Rpc2FibGVkICYmIFdJLnNldHRpbmdzLnJlc291cmNlQ2Fj
aGluZ0Rpc2FibGVkICYmIFdJLnNldHRpbmdzLnJlc291cmNlQ2FjaGluZ0Rpc2FibGVkLnZhbHVl
KQorICAgICAgICAgICAgICAgIHRhcmdldC5OZXR3b3JrQWdlbnQuc2V0UmVzb3VyY2VDYWNoaW5n
RGlzYWJsZWQodHJ1ZSk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAodGFyZ2V0LnR5cGUgPT09
IFdJLlRhcmdldC5UeXBlLldvcmtlcikKQEAgLTI5Niw3ICsyOTQsNyBAQCBXSS5OZXR3b3JrTWFu
YWdlciA9IGNsYXNzIE5ldHdvcmtNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgICAg
ICByZXR1cm47CiAKICAgICAgICAgLy8gQ09NUEFUSUJJTElUWShpT1MgMTAuMyk6IGB3YWxsdGlt
ZWAgZGlkIG5vdCBleGlzdCBpbiAxMC4zIGFuZCBlYXJsaWVyLgotICAgICAgICBpZiAoIU5ldHdv
cmtBZ2VudC5oYXNFdmVudFBhcmFtZXRlcigid2ViU29ja2V0V2lsbFNlbmRIYW5kc2hha2VSZXF1
ZXN0IiwgIndhbGx0aW1lIikpIHsKKyAgICAgICAgaWYgKCFJbnNwZWN0b3JCYWNrZW5kLmRvbWFp
bnMuTmV0d29yay5oYXNFdmVudFBhcmFtZXRlcigid2ViU29ja2V0V2lsbFNlbmRIYW5kc2hha2VS
ZXF1ZXN0IiwgIndhbGx0aW1lIikpIHsKICAgICAgICAgICAgIHJlcXVlc3QgPSBhcmd1bWVudHNb
Ml07CiAgICAgICAgICAgICB3YWxsdGltZSA9IE5hTjsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvUnVudGltZU1h
bmFnZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVy
cy9SdW50aW1lTWFuYWdlci5qcwppbmRleCA1OWRmMTVkNWIwZS4uNzgzNTVjODYxMGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1J1
bnRpbWVNYW5hZ2VyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L0NvbnRyb2xsZXJzL1J1bnRpbWVNYW5hZ2VyLmpzCkBAIC00MSwxMSArNDEsMTEgQEAgV0kuUnVu
dGltZU1hbmFnZXIgPSBjbGFzcyBSdW50aW1lTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAg
ICAgICB0YXJnZXQuUnVudGltZUFnZW50LmVuYWJsZSgpOwogCiAgICAgICAgIC8vIENPTVBBVElC
SUxJVFkgKGlPUyA4KTogUnVudGltZS5lbmFibGVUeXBlUHJvZmlsZXIgZGlkIG5vdCBleGlzdC4K
LSAgICAgICAgaWYgKFdJLnNldHRpbmdzLnNob3dKYXZhU2NyaXB0VHlwZUluZm9ybWF0aW9uICYm
IFdJLnNldHRpbmdzLnNob3dKYXZhU2NyaXB0VHlwZUluZm9ybWF0aW9uLnZhbHVlICYmIFJ1bnRp
bWVBZ2VudC5lbmFibGVUeXBlUHJvZmlsZXIpCisgICAgICAgIGlmICh0YXJnZXQuUnVudGltZUFn
ZW50LmVuYWJsZVR5cGVQcm9maWxlciAmJiBXSS5zZXR0aW5ncy5zaG93SmF2YVNjcmlwdFR5cGVJ
bmZvcm1hdGlvbiAmJiBXSS5zZXR0aW5ncy5zaG93SmF2YVNjcmlwdFR5cGVJbmZvcm1hdGlvbi52
YWx1ZSkKICAgICAgICAgICAgIHRhcmdldC5SdW50aW1lQWdlbnQuZW5hYmxlVHlwZVByb2ZpbGVy
KCk7CiAKICAgICAgICAgLy8gQ09NUEFUSUJJTElUWSAoaU9TIDEwKTogUnVudGltZS5lbmFibGVD
b250cm9sRmxvd1Byb2ZpbGVyIGRpZCBub3QgZXhpc3QKLSAgICAgICAgaWYgKFdJLnNldHRpbmdz
LmVuYWJsZUNvbnRyb2xGbG93UHJvZmlsZXIgJiYgV0kuc2V0dGluZ3MuZW5hYmxlQ29udHJvbEZs
b3dQcm9maWxlci52YWx1ZSAmJiBSdW50aW1lQWdlbnQuZW5hYmxlQ29udHJvbEZsb3dQcm9maWxl
cikKKyAgICAgICAgaWYgKHRhcmdldC5SdW50aW1lQWdlbnQuZW5hYmxlQ29udHJvbEZsb3dQcm9m
aWxlciAmJiBXSS5zZXR0aW5ncy5lbmFibGVDb250cm9sRmxvd1Byb2ZpbGVyICYmIFdJLnNldHRp
bmdzLmVuYWJsZUNvbnRyb2xGbG93UHJvZmlsZXIudmFsdWUpCiAgICAgICAgICAgICB0YXJnZXQu
UnVudGltZUFnZW50LmVuYWJsZUNvbnRyb2xGbG93UHJvZmlsZXIoKTsKICAgICB9CiAKQEAgLTEz
MSw4ICsxMzEsMTEgQEAgV0kuUnVudGltZU1hbmFnZXIgPSBjbGFzcyBSdW50aW1lTWFuYWdlciBl
eHRlbmRzIFdJLk9iamVjdAogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQocmVtb3RlT2Jq
ZWN0IGluc3RhbmNlb2YgV0kuUmVtb3RlT2JqZWN0KTsKIAorICAgICAgICBsZXQgdGFyZ2V0ID0g
dGhpcy5fYWN0aXZlRXhlY3V0aW9uQ29udGV4dC50YXJnZXQ7CisgICAgICAgIGxldCBleGVjdXRp
b25Db250ZXh0SWQgPSB0aGlzLl9hY3RpdmVFeGVjdXRpb25Db250ZXh0LmlkOworCiAgICAgICAg
IC8vIENPTVBBVElCSUxJVFkgKGlPUyA4KTogUnVudGltZS5zYXZlUmVzdWx0IGRpZCBub3QgZXhp
c3QuCi0gICAgICAgIGlmICghUnVudGltZUFnZW50LnNhdmVSZXN1bHQpIHsKKyAgICAgICAgaWYg
KCF0YXJnZXQuUnVudGltZUFnZW50LnNhdmVSZXN1bHQpIHsKICAgICAgICAgICAgIGNhbGxiYWNr
KHVuZGVmaW5lZCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTE0Miw5ICsx
NDUsNiBAQCBXSS5SdW50aW1lTWFuYWdlciA9IGNsYXNzIFJ1bnRpbWVNYW5hZ2VyIGV4dGVuZHMg
V0kuT2JqZWN0CiAgICAgICAgICAgICBjYWxsYmFjayhzYXZlZFJlc3VsdEluZGV4KTsKICAgICAg
ICAgfQogCi0gICAgICAgIGxldCB0YXJnZXQgPSB0aGlzLl9hY3RpdmVFeGVjdXRpb25Db250ZXh0
LnRhcmdldDsKLSAgICAgICAgbGV0IGV4ZWN1dGlvbkNvbnRleHRJZCA9IHRoaXMuX2FjdGl2ZUV4
ZWN1dGlvbkNvbnRleHQuaWQ7Ci0KICAgICAgICAgaWYgKHJlbW90ZU9iamVjdC5vYmplY3RJZCkK
ICAgICAgICAgICAgIHRhcmdldC5SdW50aW1lQWdlbnQuc2F2ZVJlc3VsdChyZW1vdGVPYmplY3Qu
YXNDYWxsQXJndW1lbnQoKSwgbXljYWxsYmFjayk7CiAgICAgICAgIGVsc2UKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1RpbWVsaW5l
TWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xs
ZXJzL1RpbWVsaW5lTWFuYWdlci5qcwppbmRleCA5ZWFlNDViNmIyZi4uZTAwMjU1N2Y1ZTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJz
L1RpbWVsaW5lTWFuYWdlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Db250cm9sbGVycy9UaW1lbGluZU1hbmFnZXIuanMKQEAgLTcyMyw2ICs3MjMsOCBAQCBX
SS5UaW1lbGluZU1hbmFnZXIgPSBjbGFzcyBUaW1lbGluZU1hbmFnZXIgZXh0ZW5kcyBXSS5PYmpl
Y3QKIAogICAgICAgICAvLyBDT01QQVRJQklMSVRZIChpT1MgOSk6IFRpbWVsaW5lLnNldEF1dG9D
YXB0dXJlRW5hYmxlZCBkaWQgbm90IGV4aXN0LgogICAgICAgICAvLyBQZXJmb3JtIGF1dG8gY2Fw
dHVyZSBpbiB0aGUgZnJvbnRlbmQuCisgICAgICAgIGlmICghd2luZG93LlRpbWVsaW5lQWdlbnQp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGlmICghVGltZWxpbmVBZ2VudC5z
ZXRBdXRvQ2FwdHVyZUVuYWJsZWQpCiAgICAgICAgICAgICByZXR1cm4gdGhpcy5fbGVnYWN5QXR0
ZW1wdFN0YXJ0QXV0b0NhcHR1cmluZ0ZvckZyYW1lKGZyYW1lKTsKIApAQCAtMTA2MiwzNCArMTA2
NCwzNSBAQCBXSS5UaW1lbGluZU1hbmFnZXIgPSBjbGFzcyBUaW1lbGluZU1hbmFnZXIgZXh0ZW5k
cyBXSS5PYmplY3QKIAogICAgIF91cGRhdGVBdXRvQ2FwdHVyZUluc3RydW1lbnRzKHRhcmdldHMp
CiAgICAgewotICAgICAgICBpZiAoIVRpbWVsaW5lQWdlbnQuc2V0SW5zdHJ1bWVudHMpCi0gICAg
ICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgbGV0IGluc3RydW1lbnRTZXQgPSBuZXcgU2V0Owog
ICAgICAgICBsZXQgZW5hYmxlZFRpbWVsaW5lVHlwZXMgPSB0aGlzLl9lbmFibGVkVGltZWxpbmVU
eXBlc1NldHRpbmcudmFsdWU7CiAKLSAgICAgICAgZm9yIChsZXQgdGltZWxpbmVUeXBlIG9mIGVu
YWJsZWRUaW1lbGluZVR5cGVzKSB7Ci0gICAgICAgICAgICBzd2l0Y2ggKHRpbWVsaW5lVHlwZSkg
ewotICAgICAgICAgICAgY2FzZSBXSS5UaW1lbGluZVJlY29yZC5UeXBlLlNjcmlwdDoKLSAgICAg
ICAgICAgICAgICBpbnN0cnVtZW50U2V0LmFkZChUaW1lbGluZUFnZW50Lkluc3RydW1lbnQuU2Ny
aXB0UHJvZmlsZXIpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBX
SS5UaW1lbGluZVJlY29yZC5UeXBlLkhlYXBBbGxvY2F0aW9uczoKLSAgICAgICAgICAgICAgICBp
bnN0cnVtZW50U2V0LmFkZChUaW1lbGluZUFnZW50Lkluc3RydW1lbnQuSGVhcCk7Ci0gICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFdJLlRpbWVsaW5lUmVjb3JkLlR5cGUu
TmV0d29yazoKLSAgICAgICAgICAgIGNhc2UgV0kuVGltZWxpbmVSZWNvcmQuVHlwZS5SZW5kZXJp
bmdGcmFtZToKLSAgICAgICAgICAgIGNhc2UgV0kuVGltZWxpbmVSZWNvcmQuVHlwZS5MYXlvdXQ6
Ci0gICAgICAgICAgICAgICAgaW5zdHJ1bWVudFNldC5hZGQoVGltZWxpbmVBZ2VudC5JbnN0cnVt
ZW50LlRpbWVsaW5lKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2Ug
V0kuVGltZWxpbmVSZWNvcmQuVHlwZS5NZW1vcnk6Ci0gICAgICAgICAgICAgICAgaW5zdHJ1bWVu
dFNldC5hZGQoVGltZWxpbmVBZ2VudC5JbnN0cnVtZW50Lk1lbW9yeSk7Ci0gICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQogICAgICAgICBmb3IgKGxldCB0
YXJnZXQgb2YgdGFyZ2V0cykgewotICAgICAgICAgICAgaWYgKHRhcmdldC5UaW1lbGluZUFnZW50
KQotICAgICAgICAgICAgICAgIHRhcmdldC5UaW1lbGluZUFnZW50LnNldEluc3RydW1lbnRzKFsu
Li5pbnN0cnVtZW50U2V0XSk7CisgICAgICAgICAgICBpZiAoIXRhcmdldC5UaW1lbGluZUFnZW50
KQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgaWYgKCF0YXJnZXQuVGlt
ZWxpbmVBZ2VudC5zZXRJbnN0cnVtZW50cykKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKwor
ICAgICAgICAgICAgbGV0IGluc3RydW1lbnRTZXQgPSBuZXcgU2V0OworICAgICAgICAgICAgZm9y
IChsZXQgdGltZWxpbmVUeXBlIG9mIGVuYWJsZWRUaW1lbGluZVR5cGVzKSB7CisgICAgICAgICAg
ICAgICAgc3dpdGNoICh0aW1lbGluZVR5cGUpIHsKKyAgICAgICAgICAgICAgICBjYXNlIFdJLlRp
bWVsaW5lUmVjb3JkLlR5cGUuU2NyaXB0OgorICAgICAgICAgICAgICAgICAgICBpbnN0cnVtZW50
U2V0LmFkZCh0YXJnZXQuVGltZWxpbmVBZ2VudC5JbnN0cnVtZW50LlNjcmlwdFByb2ZpbGVyKTsK
KyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBXSS5UaW1l
bGluZVJlY29yZC5UeXBlLkhlYXBBbGxvY2F0aW9uczoKKyAgICAgICAgICAgICAgICAgICAgaW5z
dHJ1bWVudFNldC5hZGQodGFyZ2V0LlRpbWVsaW5lQWdlbnQuSW5zdHJ1bWVudC5IZWFwKTsKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBXSS5UaW1lbGlu
ZVJlY29yZC5UeXBlLk5ldHdvcms6CisgICAgICAgICAgICAgICAgY2FzZSBXSS5UaW1lbGluZVJl
Y29yZC5UeXBlLlJlbmRlcmluZ0ZyYW1lOgorICAgICAgICAgICAgICAgIGNhc2UgV0kuVGltZWxp
bmVSZWNvcmQuVHlwZS5MYXlvdXQ6CisgICAgICAgICAgICAgICAgICAgIGluc3RydW1lbnRTZXQu
YWRkKHRhcmdldC5UaW1lbGluZUFnZW50Lkluc3RydW1lbnQuVGltZWxpbmUpOworICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIFdJLlRpbWVsaW5lUmVjb3Jk
LlR5cGUuTWVtb3J5OgorICAgICAgICAgICAgICAgICAgICBpbnN0cnVtZW50U2V0LmFkZCh0YXJn
ZXQuVGltZWxpbmVBZ2VudC5JbnN0cnVtZW50Lk1lbW9yeSk7CisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
dGFyZ2V0LlRpbWVsaW5lQWdlbnQuc2V0SW5zdHJ1bWVudHMoWy4uLmluc3RydW1lbnRTZXRdKTsK
ICAgICAgICAgfQogICAgIH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Nb2RlbHMvQ1NTQ29tcGxldGlvbnMuanMgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQ1NTQ29tcGxldGlvbnMuanMKaW5kZXggMDVmYjRm
ZDI4OGUuLjA5ZDYxMDQ4NDIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Nb2RlbHMvQ1NTQ29tcGxldGlvbnMuanMKKysrIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NTU0NvbXBsZXRpb25zLmpzCkBAIC0xNjcsNyAr
MTY3LDcgQEAgV0kuQ1NTQ29tcGxldGlvbnMgPSBjbGFzcyBDU1NDb21wbGV0aW9ucwogICAgICAg
ICB0YXJnZXQuQ1NTQWdlbnQuZ2V0U3VwcG9ydGVkQ1NTUHJvcGVydGllcyhwcm9wZXJ0eU5hbWVz
Q2FsbGJhY2spOwogCiAgICAgICAgIC8vIENPTVBBVElCSUxJVFkgKGlPUyA5KTogQ1NTLmdldFN1
cHBvcnRlZFN5c3RlbUZvbnRGYW1pbHlOYW1lcyBkaWQgbm90IGV4aXN0LgotICAgICAgICBpZiAo
Q1NTQWdlbnQuZ2V0U3VwcG9ydGVkU3lzdGVtRm9udEZhbWlseU5hbWVzKQorICAgICAgICBpZiAo
dGFyZ2V0LkNTU0FnZW50LmdldFN1cHBvcnRlZFN5c3RlbUZvbnRGYW1pbHlOYW1lcykKICAgICAg
ICAgICAgIHRhcmdldC5DU1NBZ2VudC5nZXRTdXBwb3J0ZWRTeXN0ZW1Gb250RmFtaWx5TmFtZXMo
Zm9udEZhbWlseU5hbWVzQ2FsbGJhY2spOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NhbnZhcy5qcyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9DYW52YXMuanMKaW5kZXggNTZjMjYxYzlj
NDIuLmZlZmMxMTI5NmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Nb2RlbHMvQ2FudmFzLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL01vZGVscy9DYW52YXMuanMKQEAgLTI3OSw3ICsyNzksNyBAQCBXSS5DYW52YXMg
PSBjbGFzcyBDYW52YXMgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgICAgIHRoaXMuX3JlY29y
ZGluZ1N0YXRlID0gV0kuQ2FudmFzLlJlY29yZGluZ1N0YXRlLkFjdGl2ZUZyb250ZW5kOwogCiAg
ICAgICAgICAgICAvLyBDT01QQVRJQklMSVRZIChpT1MgMTIuMSk6IENhbnZhcy5ldmVudC5yZWNv
cmRpbmdTdGFydGVkIGRpZCBub3QgZXhpc3QgeWV0Ci0gICAgICAgICAgICBpZiAoQ2FudmFzQWdl
bnQuaGFzRXZlbnQoInJlY29yZGluZ1N0YXJ0ZWQiKSkKKyAgICAgICAgICAgIGlmIChJbnNwZWN0
b3JCYWNrZW5kLmRvbWFpbnMuQ2FudmFzLmhhc0V2ZW50KCJyZWNvcmRpbmdTdGFydGVkIikpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICB0aGlzLl9yZWNvcmRpbmdGcmFt
ZXMgPSBbXTsKQEAgLTI4OSw3ICsyODksNyBAQCBXSS5DYW52YXMgPSBjbGFzcyBDYW52YXMgZXh0
ZW5kcyBXSS5PYmplY3QKICAgICAgICAgfTsKIAogICAgICAgICAvLyBDT01QQVRJQklMSVRZIChp
T1MgMTIuMSk6IGBmcmFtZUNvdW50YCBkaWQgbm90IGV4aXN0IHlldC4KLSAgICAgICAgaWYgKENh
bnZhc0FnZW50LnN0YXJ0UmVjb3JkaW5nLnN1cHBvcnRzKCJzaW5nbGVGcmFtZSIpKSB7CisgICAg
ICAgIGlmIChJbnNwZWN0b3JCYWNrZW5kLmRvbWFpbnMuQ2FudmFzLnN0YXJ0UmVjb3JkaW5nLnN1
cHBvcnRzKCJzaW5nbGVGcmFtZSIpKSB7CiAgICAgICAgICAgICBDYW52YXNBZ2VudC5zdGFydFJl
Y29yZGluZyh0aGlzLl9pZGVudGlmaWVyLCBzaW5nbGVGcmFtZSwgaGFuZGxlU3RhcnRSZWNvcmRp
bmcpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0zNzYsNyArMzc2LDcgQEAg
V0kuQ2FudmFzID0gY2xhc3MgQ2FudmFzIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIGxldCBp
bml0aWF0ZWRCeVVzZXIgPSB0aGlzLl9yZWNvcmRpbmdTdGF0ZSA9PT0gV0kuQ2FudmFzLlJlY29y
ZGluZ1N0YXRlLkFjdGl2ZUZyb250ZW5kOwogCiAgICAgICAgIC8vIENPTVBBVElCSUxJVFkgKGlP
UyAxMi4xKTogQ2FudmFzLmV2ZW50LnJlY29yZGluZ1N0YXJ0ZWQgZGlkIG5vdCBleGlzdCB5ZXQK
LSAgICAgICAgaWYgKCFpbml0aWF0ZWRCeVVzZXIgJiYgIUNhbnZhc0FnZW50Lmhhc0V2ZW50KCJy
ZWNvcmRpbmdTdGFydGVkIikpCisgICAgICAgIGlmICghaW5pdGlhdGVkQnlVc2VyICYmICFJbnNw
ZWN0b3JCYWNrZW5kLmRvbWFpbnMuQ2FudmFzLmhhc0V2ZW50KCJyZWNvcmRpbmdTdGFydGVkIikp
CiAgICAgICAgICAgICBpbml0aWF0ZWRCeVVzZXIgPSAhIXRoaXMucmVjb3JkaW5nQWN0aXZlOwog
CiAgICAgICAgIGxldCByZWNvcmRpbmcgPSByZWNvcmRpbmdQYXlsb2FkID8gV0kuUmVjb3JkaW5n
LmZyb21QYXlsb2FkKHJlY29yZGluZ1BheWxvYWQsIHRoaXMuX3JlY29yZGluZ0ZyYW1lcykgOiBu
dWxsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9k
ZWxzL1NjcmlwdFN5bnRheFRyZWUuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Nb2RlbHMvU2NyaXB0U3ludGF4VHJlZS5qcwppbmRleCA4Yjc3YzNhNzYyNC4uYTMxZWVj
NTI1YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01v
ZGVscy9TY3JpcHRTeW50YXhUcmVlLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL01vZGVscy9TY3JpcHRTeW50YXhUcmVlLmpzCkBAIC0xNzQsOSArMTc0LDggQEAg
V0kuU2NyaXB0U3ludGF4VHJlZSA9IGNsYXNzIFNjcmlwdFN5bnRheFRyZWUKIAogICAgICAgICAv
LyBDT01QQVRJQklMSVRZIChpT1MgOSk6IExlZ2FjeSBCYWNrZW5kcyB2aWV3IHRoZSByZXR1cm4g
dHlwZSBhcyBiZWluZyB0aGUgb3BlbmluZyAieyIgb2YgdGhlIGZ1bmN0aW9uIGJvZHkuCiAgICAg
ICAgIC8vIEFmdGVyIGlPUyA5LCB0aGlzIGlzIHRvIG1vdmUgdG8gdGhlIHN0YXJ0IG9mIHRoZSBm
dW5jdGlvbiBzdGF0ZW1lbnQvZXhwcmVzc2lvbi4gU2VlIGJlbG93OgotICAgICAgICAvLyBGSVhN
RTogTmVlZCBhIGJldHRlciB3YXkgdG8gZGV0ZXJtaW5lIGJhY2tlbmQgdmVyc2lvbnMuIFVzaW5n
IERPTS5wc2V1ZG9FbGVtZW50IGJlY2F1c2UgdGhhdCB3YXMgYWRkZWQgYWZ0ZXIgaU9TIDkuCi0g
ICAgICAgIC8vIEZJWE1FOiBUaGlzIHdvdWxkbid0IHdvcmsgZm9yIGRlYnVnZ2luZyBhbiBpT1Mg
OSBvciBlYXJsaWVyIEpTQ29udGV4dCB0YXJnZXQuCi0gICAgICAgIGlmICh3aW5kb3cuRE9NQWdl
bnQgJiYgIURPTUFnZW50Lmhhc0V2ZW50KCJwc2V1ZG9FbGVtZW50QWRkZWQiKSkKKyAgICAgICAg
Ly8gVXNpbmcgRE9NLnBzZXVkb0VsZW1lbnQgYmVjYXVzZSB0aGF0IHdhcyBhZGRlZCBhZnRlciBp
T1MgOS4KKyAgICAgICAgaWYgKCFJbnNwZWN0b3JCYWNrZW5kLmRvbWFpbnMuRE9NLmhhc0V2ZW50
KCJwc2V1ZG9FbGVtZW50QWRkZWQiKSkKICAgICAgICAgICAgIHJldHVybiBub2RlLmJvZHkucmFu
Z2VbMF07CiAKICAgICAgICAgLy8gImYiIGluICJmdW5jdGlvbiIuICJzIiBpbiAic2V0Ii4gImci
IGluICJnZXQiLiBGaXJzdCBsZXR0ZXIgaW4gYW55IG1ldGhvZCBuYW1lIGZvciBjbGFzc2VzIGFu
ZCBvYmplY3QgbGl0ZXJhbHMuCkBAIC0xODYsNyArMTg1LDcgQEAgV0kuU2NyaXB0U3ludGF4VHJl
ZSA9IGNsYXNzIFNjcmlwdFN5bnRheFRyZWUKIAogICAgIHVwZGF0ZVR5cGVzKG5vZGVzVG9VcGRh
dGUsIGNhbGxiYWNrKQogICAgIHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoUnVudGltZUFnZW50
LmdldFJ1bnRpbWVUeXBlc0ZvclZhcmlhYmxlc0F0T2Zmc2V0cyk7CisgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KHRoaXMuX3NjcmlwdC50YXJnZXQuUnVudGltZUFnZW50LmdldFJ1bnRpbWVUeXBlc0Zv
clZhcmlhYmxlc0F0T2Zmc2V0cyk7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KEFycmF5LmlzQXJy
YXkobm9kZXNUb1VwZGF0ZSkgJiYgdGhpcy5fcGFyc2VkU3VjY2Vzc2Z1bGx5KTsKIAogICAgICAg
ICBpZiAoIXRoaXMuX3BhcnNlZFN1Y2Nlc3NmdWxseSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0RlYnVnZ2VyT2JzZXJ2ZXIuanMgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9EZWJ1Z2dlck9ic2Vy
dmVyLmpzCmluZGV4IDYwMDI3MzgyZjZiLi4zZjViYzhiNDA2NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvRGVidWdnZXJPYnNlcnZlci5q
cworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9EZWJ1
Z2dlck9ic2VydmVyLmpzCkBAIC0yNyw3ICsyNyw3IEBAIFdJLkRlYnVnZ2VyT2JzZXJ2ZXIgPSBj
bGFzcyBEZWJ1Z2dlck9ic2VydmVyCiB7CiAgICAgY29uc3RydWN0b3IoKQogICAgIHsKLSAgICAg
ICAgdGhpcy5fbGVnYWN5U2NyaXB0UGFyc2VkID0gRGVidWdnZXJBZ2VudC5oYXNFdmVudFBhcmFt
ZXRlcigic2NyaXB0UGFyc2VkIiwgImhhc1NvdXJjZVVSTCIpOworICAgICAgICB0aGlzLl9sZWdh
Y3lTY3JpcHRQYXJzZWQgPSBJbnNwZWN0b3JCYWNrZW5kLmRvbWFpbnMuRGVidWdnZXIuaGFzRXZl
bnRQYXJhbWV0ZXIoInNjcmlwdFBhcnNlZCIsICJoYXNTb3VyY2VVUkwiKTsKICAgICB9CiAKICAg
ICAvLyBFdmVudHMgZGVmaW5lZCBieSB0aGUgIkRlYnVnZ2VyIiBkb21haW4uCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9JbnNwZWN0b3JC
YWNrZW5kLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wv
SW5zcGVjdG9yQmFja2VuZC5qcwppbmRleCA1Zjg0OGY1Zjk1MC4uYWQ5OTZjY2I0ZGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0luc3Bl
Y3RvckJhY2tlbmQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
UHJvdG9jb2wvSW5zcGVjdG9yQmFja2VuZC5qcwpAQCAtNTgsNiArNTgsMTMgQEAgSW5zcGVjdG9y
QmFja2VuZENsYXNzID0gY2xhc3MgSW5zcGVjdG9yQmFja2VuZENsYXNzCiAKICAgICAvLyBQdWJs
aWMKIAorICAgIC8vIFRoaXMgc2hvdWxkIGJlIHVzZWQgZm9yIGZlYXR1cmUgY2hlY2tpbmcgaWYg
c29tZXRoaW5nIGV4aXN0cyBpbiB0aGUgcHJvdG9jb2wKKyAgICAvLyByZWdhcmRsZXNzIG9mIHdo
ZXRoZXIgb3Igbm90IHRoZSBkb21haW4gaXMgYWN0aXZlIGZvciBhIHNwZWNpZmljIHRhcmdldC4K
KyAgICBnZXQgZG9tYWlucygpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fYWdlbnRzOwor
ICAgIH0KKwogICAgIC8vIEl0J3Mgc3RpbGwgcG9zc2libGUgdG8gc2V0IHRoaXMgZmxhZyBvbiBJ
bnNwZWN0b3JCYWNrZW5kIHRvIGp1c3QKICAgICAvLyBkdW1wIHByb3RvY29sIHRyYWZmaWMgYXMg
aXQgaGFwcGVucy4gRm9yIG1vcmUgY29tcGxleCB1c2VzIG9mCiAgICAgLy8gcHJvdG9jb2wgZGF0
YSwgaW5zdGFsbCBhIHN1YmNsYXNzIG9mIFdJLlByb3RvY29sVHJhY2VyLgpAQCAtMTY1LDYgKzE3
MiwxMCBAQCBJbnNwZWN0b3JCYWNrZW5kQ2xhc3MgPSBjbGFzcyBJbnNwZWN0b3JCYWNrZW5kQ2xh
c3MKICAgICAgICAgZm9yIChsZXQgZGVidWdnYWJsZVR5cGUgb2Ygc3VwcG9ydGVkRGVidWdnYWJs
ZVR5cGVzKQogICAgICAgICAgICAgdGhpcy5fc3VwcG9ydGVkRG9tYWluc0ZvckRlYnVnZ2FibGVU
eXBlLmdldChkZWJ1Z2dhYmxlVHlwZSkucHVzaChkb21haW5OYW1lKTsKIAorICAgICAgICAvLyBG
SVhNRTogRm9yIHByb3BlciBtdWx0aS10YXJnZXQgc3VwcG9ydCB3ZSBzaG91bGQgZWxpbWluYXRl
IGFsbCB1c2VzIG9mCisgICAgICAgIC8vIGB3aW5kb3cuRm9vQWdlbnRgIGFuZCBgdW5wcmVmaXhl
ZCBGb29BZ2VudGAgaW4gZmF2b3Igb2YgZWl0aGVyOgorICAgICAgICAvLyAgIC0gUGVyLXRhcmdl
dDogYHRhcmdldC5Gb29BZ2VudGAKKyAgICAgICAgLy8gICAtIEdsb2JhbCBmZWF0dXJlIGNoZWNr
OiBgSW5zcGVjdG9yQmFja2VuZC5kb21haW5zLkZvb2AKICAgICAgICAgaWYgKCFhY3RpdmF0aW9u
RGVidWdnYWJsZVR5cGVzIHx8IGFjdGl2YXRpb25EZWJ1Z2dhYmxlVHlwZXMuaW5jbHVkZXMoSW5z
cGVjdG9yRnJvbnRlbmRIb3N0LmRlYnVnZ2FibGVUeXBlKCkpKSB7CiAgICAgICAgICAgICBsZXQg
YWdlbnQgPSB0aGlzLl9hZ2VudHNbZG9tYWluTmFtZV07CiAgICAgICAgICAgICBhZ2VudC5hY3Rp
dmF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
UHJvdG9jb2wvTmV0d29ya09ic2VydmVyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvUHJvdG9jb2wvTmV0d29ya09ic2VydmVyLmpzCmluZGV4IGEzYzg2OTZhMjhlLi5l
OTI3ODg4MTU0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvUHJvdG9jb2wvTmV0d29ya09ic2VydmVyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL05ldHdvcmtPYnNlcnZlci5qcwpAQCAtMzAsNyArMzAs
NyBAQCBXSS5OZXR3b3JrT2JzZXJ2ZXIgPSBjbGFzcyBOZXR3b3JrT2JzZXJ2ZXIKICAgICByZXF1
ZXN0V2lsbEJlU2VudChyZXF1ZXN0SWQsIGZyYW1lSWQsIGxvYWRlcklkLCBkb2N1bWVudFVSTCwg
cmVxdWVzdCwgdGltZXN0YW1wLCB3YWxsdGltZSwgaW5pdGlhdG9yLCByZWRpcmVjdFJlc3BvbnNl
LCB0eXBlLCB0YXJnZXRJZCkKICAgICB7CiAgICAgICAgIC8vIENPTVBBVElCSUxJVFkoaU9TIDEx
LjApOiBgd2FsbHRpbWVgIGRpZCBub3QgZXhpc3QgaW4gMTEuMCBhbmQgZWFybGllci4KLSAgICAg
ICAgaWYgKCFOZXR3b3JrQWdlbnQuaGFzRXZlbnRQYXJhbWV0ZXIoInJlcXVlc3RXaWxsQmVTZW50
IiwgIndhbGx0aW1lIikpIHsKKyAgICAgICAgaWYgKCFJbnNwZWN0b3JCYWNrZW5kLmRvbWFpbnMu
TmV0d29yay5oYXNFdmVudFBhcmFtZXRlcigicmVxdWVzdFdpbGxCZVNlbnQiLCAid2FsbHRpbWUi
KSkgewogICAgICAgICAgICAgd2FsbHRpbWUgPSB1bmRlZmluZWQ7CiAgICAgICAgICAgICBpbml0
aWF0b3IgPSBhcmd1bWVudHNbNl07CiAgICAgICAgICAgICByZWRpcmVjdFJlc3BvbnNlID0gYXJn
dW1lbnRzWzddOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvUHJvdG9jb2wvUmVtb3RlT2JqZWN0LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvUHJvdG9jb2wvUmVtb3RlT2JqZWN0LmpzCmluZGV4IDFjOGRhYzc3ZDBmLi4xNjBj
YzdlYjIzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
UHJvdG9jb2wvUmVtb3RlT2JqZWN0LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1Byb3RvY29sL1JlbW90ZU9iamVjdC5qcwpAQCAtMjQ1LDcgKzI0NSw3IEBAIFdJ
LlJlbW90ZU9iamVjdCA9IGNsYXNzIFJlbW90ZU9iamVjdAogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKLSAgICAgICAgaWYgKCFSdW50aW1lQWdlbnQuZ2V0UHJldmlldykgeworICAg
ICAgICBpZiAoIXRoaXMuX3RhcmdldC5SdW50aW1lQWdlbnQuZ2V0UHJldmlldykgewogICAgICAg
ICAgICAgdGhpcy5fZmFpbGVkVG9Mb2FkUHJldmlldyA9IHRydWU7CiAgICAgICAgICAgICBjYWxs
YmFjayhudWxsKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTI4Miw3ICsyODIsNyBAQCBXSS5S
ZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1vdGVPYmplY3QKIAogICAgICAgICAvLyBDT01QQVRJQklM
SVRZIChpT1MgOCk6IFJ1bnRpbWVBZ2VudC5nZXREaXNwbGF5YWJsZVByb3BlcnRpZXMgZGlkIG5v
dCBleGlzdC4KICAgICAgICAgLy8gSGVyZSB3ZSBkbyBvdXIgYmVzdCB0byByZWltcGxlbWVudCBp
dCBieSBnZXR0aW5nIGFsbCBwcm9wZXJ0aWVzIGFuZCByZWR1Y2luZyB0aGVtIGRvd24uCi0gICAg
ICAgIGlmICghUnVudGltZUFnZW50LmdldERpc3BsYXlhYmxlUHJvcGVydGllcykgeworICAgICAg
ICBpZiAoIXRoaXMuX3RhcmdldC5SdW50aW1lQWdlbnQuZ2V0RGlzcGxheWFibGVQcm9wZXJ0aWVz
KSB7CiAgICAgICAgICAgICB0aGlzLl90YXJnZXQuUnVudGltZUFnZW50LmdldFByb3BlcnRpZXMo
dGhpcy5fb2JqZWN0SWQsIGZ1bmN0aW9uKGVycm9yLCBhbGxQcm9wZXJ0aWVzKSB7CiAgICAgICAg
ICAgICAgICAgdmFyIG93bk9yR2V0dGVyUHJvcGVydGllc0xpc3QgPSBbXTsKICAgICAgICAgICAg
ICAgICBpZiAoYWxsUHJvcGVydGllcykgewpAQCAtMzI5LDcgKzMyOSw3IEBAIFdJLlJlbW90ZU9i
amVjdCA9IGNsYXNzIFJlbW90ZU9iamVjdAogCiAgICAgICAgIC8vIENPTVBBVElCSUxJVFkgKGlP
UyA4KTogUnVudGltZUFnZW50LmdldFByb3BlcnRpZXMgZGlkIG5vdCBzdXBwb3J0IG93bmVyQW5k
R2V0dGVyUHJvcGVydGllcy4KICAgICAgICAgLy8gSGVyZSB3ZSBkbyBvdXIgYmVzdCB0byByZWlt
cGxlbWVudCBpdCBieSBnZXR0aW5nIGFsbCBwcm9wZXJ0aWVzIGFuZCByZWR1Y2luZyB0aGVtIGRv
d24uCi0gICAgICAgIGlmICghUnVudGltZUFnZW50LmdldERpc3BsYXlhYmxlUHJvcGVydGllcykg
eworICAgICAgICBpZiAoIXRoaXMuX3RhcmdldC5SdW50aW1lQWdlbnQuZ2V0RGlzcGxheWFibGVQ
cm9wZXJ0aWVzKSB7CiAgICAgICAgICAgICB0aGlzLl90YXJnZXQuUnVudGltZUFnZW50LmdldFBy
b3BlcnRpZXModGhpcy5fb2JqZWN0SWQsIGZ1bmN0aW9uKGVycm9yLCBhbGxQcm9wZXJ0aWVzKSB7
CiAgICAgICAgICAgICAgICAgdmFyIG93bk9yR2V0dGVyUHJvcGVydGllc0xpc3QgPSBbXTsKICAg
ICAgICAgICAgICAgICBpZiAoYWxsUHJvcGVydGllcykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvVGFyZ2V0LmpzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvVGFyZ2V0LmpzCmluZGV4IDU2ZTFk
MjM3ZDhhLi4yYzkwM2EzN2U0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvUHJvdG9jb2wvVGFyZ2V0LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL1RhcmdldC5qcwpAQCAtNzIsNyArNzIsNyBAQCBXSS5U
YXJnZXQgPSBjbGFzcyBUYXJnZXQgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgLy8gTm9uLW1h
bmFnZXIgc3BlY2lmaWMgaW5pdGlhbGl6YXRpb24uCiAgICAgICAgIC8vIENPTVBBVElCSUxJVFkg
KGlPUyA4KTogUGFnZS5zZXRTaG93UGFpbnRSZWN0cyBkaWQgbm90IGV4aXN0LgogICAgICAgICBp
ZiAodGhpcy5QYWdlQWdlbnQpIHsKLSAgICAgICAgICAgIGlmIChQYWdlQWdlbnQuc2V0U2hvd1Bh
aW50UmVjdHMgJiYgV0kuc2V0dGluZ3Muc2hvd1BhaW50UmVjdHMudmFsdWUpCisgICAgICAgICAg
ICBpZiAodGhpcy5QYWdlQWdlbnQuc2V0U2hvd1BhaW50UmVjdHMgJiYgV0kuc2V0dGluZ3Muc2hv
d1BhaW50UmVjdHMudmFsdWUpCiAgICAgICAgICAgICAgICAgdGhpcy5QYWdlQWdlbnQuc2V0U2hv
d1BhaW50UmVjdHModHJ1ZSk7CiAgICAgICAgIH0KIApAQCAtOTIsNyArOTIsNyBAQCBXSS5UYXJn
ZXQgPSBjbGFzcyBUYXJnZXQgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgICAgIC8vIFRoaXMg
YWxsb3dzIGFuIGF1dG9tYXRpY2FsbHkgcGF1c2VkIGJhY2tlbmQgdG8gcmVzdW1lIGV4ZWN1dGlv
biwgYnV0IHdlIHdhbnQgdG8gZW5zdXJlCiAgICAgICAgICAgICAvLyBvdXIgYnJlYWtwb2ludHMg
d2VyZSBhbHJlYWR5IHNlbnQgdG8gdGhhdCBiYWNrZW5kLgogICAgICAgICAgICAgLy8gQ09NUEFU
SUJJTElUWSAoaU9TIDgpOiBJbnNwZWN0b3IuaW5pdGlhbGl6ZWQgZGlkIG5vdCBleGlzdCB5ZXQu
Ci0gICAgICAgICAgICBpZiAodGhpcy5JbnNwZWN0b3JBZ2VudCAmJiBJbnNwZWN0b3JBZ2VudC5p
bml0aWFsaXplZCkKKyAgICAgICAgICAgIGlmICh0aGlzLkluc3BlY3RvckFnZW50ICYmIHRoaXMu
SW5zcGVjdG9yQWdlbnQuaW5pdGlhbGl6ZWQpCiAgICAgICAgICAgICAgICAgdGhpcy5JbnNwZWN0
b3JBZ2VudC5pbml0aWFsaXplZCgpOwogICAgICAgICB9KTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9CcmVha3BvaW50QWN0aW9u
Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0JyZWFr
cG9pbnRBY3Rpb25WaWV3LmpzCmluZGV4IDkzYWEwOGE3ZGY5Li44NmUyNjBhNDkzNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQnJlYWtwb2lu
dEFjdGlvblZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvQnJlYWtwb2ludEFjdGlvblZpZXcuanMKQEAgLTMxLDcgKzMxLDYgQEAgV0kuQnJlYWtw
b2ludEFjdGlvblZpZXcgPSBjbGFzcyBCcmVha3BvaW50QWN0aW9uVmlldyBleHRlbmRzIFdJLk9i
amVjdAogCiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGFjdGlvbik7CiAgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KGRlbGVnYXRlKTsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoRGVidWdnZXJBZ2VudC5C
cmVha3BvaW50QWN0aW9uVHlwZSk7CiAKICAgICAgICAgdGhpcy5fYWN0aW9uID0gYWN0aW9uOwog
ICAgICAgICB0aGlzLl9kZWxlZ2F0ZSA9IGRlbGVnYXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGV4dE1lbnVVdGlsaXRpZXMuanMg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250ZXh0TWVudVV0
aWxpdGllcy5qcwppbmRleCAwNTAwZjUxNGFhYi4uOTBhM2IxYTVjMWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRleHRNZW51VXRpbGl0
aWVzLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0Nv
bnRleHRNZW51VXRpbGl0aWVzLmpzCkBAIC0xNjgsMTYgKzE2OCwxMyBAQCBXSS5hcHBlbmRDb250
ZXh0TWVudUl0ZW1zRm9yRE9NTm9kZSA9IGZ1bmN0aW9uKGNvbnRleHRNZW51LCBkb21Ob2RlLCBv
cHRpb25zID0gewogICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgfQogCi0gICAgICAg
ICAgICBmdW5jdGlvbiBkaWRHZXRQcm9wZXJ0eShlcnJvciwgcmVzdWx0LCB3YXNUaHJvd24pIHsK
LSAgICAgICAgICAgICAgICBpZiAoZXJyb3IgfHwgcmVzdWx0LnR5cGUgIT09ICJmdW5jdGlvbiIp
Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgICAgIERlYnVnZ2Vy
QWdlbnQuZ2V0RnVuY3Rpb25EZXRhaWxzKHJlc3VsdC5vYmplY3RJZCwgZGlkR2V0RnVuY3Rpb25E
ZXRhaWxzKTsKLSAgICAgICAgICAgICAgICByZXN1bHQucmVsZWFzZSgpOwotICAgICAgICAgICAg
fQotCiAgICAgICAgICAgICBXSS5SZW1vdGVPYmplY3QucmVzb2x2ZU5vZGUoZG9tTm9kZSkudGhl
bigocmVtb3RlT2JqZWN0KSA9PiB7Ci0gICAgICAgICAgICAgICAgcmVtb3RlT2JqZWN0LmdldFBy
b3BlcnR5KCJjb25zdHJ1Y3RvciIsIGRpZEdldFByb3BlcnR5KTsKKyAgICAgICAgICAgICAgICBy
ZW1vdGVPYmplY3QuZ2V0UHJvcGVydHkoImNvbnN0cnVjdG9yIiwgKGVycm9yLCByZXN1bHQsIHdh
c1Rocm93bikgPT4geworICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3IgfHwgcmVzdWx0LnR5
cGUgIT09ICJmdW5jdGlvbiIpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICAgICAgICAgIHJlbW90ZU9iamVjdC50YXJnZXQuRGVidWdnZXJBZ2VudC5nZXRGdW5j
dGlvbkRldGFpbHMocmVzdWx0Lm9iamVjdElkLCBkaWRHZXRGdW5jdGlvbkRldGFpbHMpOworICAg
ICAgICAgICAgICAgICAgICByZXN1bHQucmVsZWFzZSgpOworICAgICAgICAgICAgICAgIH0pOwog
ICAgICAgICAgICAgICAgIHJlbW90ZU9iamVjdC5yZWxlYXNlKCk7CiAgICAgICAgICAgICB9KTsK
ICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9ET01UcmVlQ29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlQ29udGVudFZpZXcuanMKaW5kZXggMTUyOTJmMjUw
OWYuLjJkZDkxOTQ2ZWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9ET01UcmVlQ29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZUNvbnRlbnRWaWV3LmpzCkBAIC0xMDEs
NyArMTAxLDcgQEAgV0kuRE9NVHJlZUNvbnRlbnRWaWV3ID0gY2xhc3MgRE9NVHJlZUNvbnRlbnRW
aWV3IGV4dGVuZHMgV0kuQ29udGVudFZpZXcKICAgICAgICAgbGV0IGl0ZW1zID0gW3RoaXMuX3No
b3dQcmludFN0eWxlc0J1dHRvbk5hdmlnYXRpb25JdGVtLCB0aGlzLl9zaG93c1NoYWRvd0RPTUJ1
dHRvbk5hdmlnYXRpb25JdGVtXTsKIAogICAgICAgICAvLyBDT01QQVRJQklMSVRZIChpT1MgMTEu
MykKLSAgICAgICAgaWYgKFBhZ2VBZ2VudC5zZXRTaG93UnVsZXJzKQorICAgICAgICBpZiAod2lu
ZG93LlBhZ2VBZ2VudCAmJiBQYWdlQWdlbnQuc2V0U2hvd1J1bGVycykKICAgICAgICAgICAgIGl0
ZW1zLnVuc2hpZnQodGhpcy5fc2hvd1J1bGVyc0J1dHRvbk5hdmlnYXRpb25JdGVtKTsKIAogICAg
ICAgICBpZiAoIVdJLnNldHRpbmdzLmV4cGVyaW1lbnRhbEVuYWJsZUxheWVyc1RhYi52YWx1ZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0Rl
YnVnZ2VyU2lkZWJhclBhbmVsLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvRGVidWdnZXJTaWRlYmFyUGFuZWwuanMKaW5kZXggNDM4MGRjZjllZTMuLmZkYmU4
Yjg3M2IzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9EZWJ1Z2dlclNpZGViYXJQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9EZWJ1Z2dlclNpZGViYXJQYW5lbC5qcwpAQCAtMjEyLDcgKzIx
Miw3IEBAIFdJLkRlYnVnZ2VyU2lkZWJhclBhbmVsID0gY2xhc3MgRGVidWdnZXJTaWRlYmFyUGFu
ZWwgZXh0ZW5kcyBXSS5OYXZpZ2F0aW9uU2lkZWJhCiAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdl
ci5hZGRCcmVha3BvaW50KFdJLmRlYnVnZ2VyTWFuYWdlci51bmNhdWdodEV4Y2VwdGlvbnNCcmVh
a3BvaW50KTsKIAogICAgICAgICAvLyBDT01QQVRJQklMSVRZIChpT1MgMTApOiBEZWJ1Z2dlckFn
ZW50LnNldFBhdXNlT25Bc3NlcnRpb25zIGRpZCBub3QgZXhpc3QgeWV0LgotICAgICAgICBpZiAo
RGVidWdnZXJBZ2VudC5zZXRQYXVzZU9uQXNzZXJ0aW9ucyAmJiBXSS5zZXR0aW5ncy5zaG93QXNz
ZXJ0aW9uRmFpbHVyZXNCcmVha3BvaW50LnZhbHVlKQorICAgICAgICBpZiAoSW5zcGVjdG9yQmFj
a2VuZC5kb21haW5zLkRlYnVnZ2VyLnNldFBhdXNlT25Bc3NlcnRpb25zICYmIFdJLnNldHRpbmdz
LnNob3dBc3NlcnRpb25GYWlsdXJlc0JyZWFrcG9pbnQudmFsdWUpCiAgICAgICAgICAgICBXSS5k
ZWJ1Z2dlck1hbmFnZXIuYWRkQnJlYWtwb2ludChXSS5kZWJ1Z2dlck1hbmFnZXIuYXNzZXJ0aW9u
RmFpbHVyZXNCcmVha3BvaW50KTsKIAogICAgICAgICBpZiAoV0kubmV0d29ya01hbmFnZXIubWFp
bkZyYW1lKQpAQCAtMTM3Nyw3ICsxMzc3LDcgQEAgV0kuRGVidWdnZXJTaWRlYmFyUGFuZWwgPSBj
bGFzcyBEZWJ1Z2dlclNpZGViYXJQYW5lbCBleHRlbmRzIFdJLk5hdmlnYXRpb25TaWRlYmEKICAg
ICAgICAgbGV0IGNvbnRleHRNZW51ID0gV0kuQ29udGV4dE1lbnUuY3JlYXRlRnJvbUV2ZW50KGV2
ZW50LmRhdGEubmF0aXZlRXZlbnQpOwogCiAgICAgICAgIC8vIENPTVBBVElCSUxJVFkgKGlPUyAx
MCk6IERlYnVnZ2VyQWdlbnQuc2V0UGF1c2VPbkFzc2VydGlvbnMgZGlkIG5vdCBleGlzdCB5ZXQu
Ci0gICAgICAgIGlmIChEZWJ1Z2dlckFnZW50LnNldFBhdXNlT25Bc3NlcnRpb25zKSB7CisgICAg
ICAgIGlmIChJbnNwZWN0b3JCYWNrZW5kLmRvbWFpbnMuRGVidWdnZXIuc2V0UGF1c2VPbkFzc2Vy
dGlvbnMpIHsKICAgICAgICAgICAgIGxldCBhc3NlcnRpb25GYWlsdXJlc0JyZWFrcG9pbnRTaG93
biA9IFdJLnNldHRpbmdzLnNob3dBc3NlcnRpb25GYWlsdXJlc0JyZWFrcG9pbnQudmFsdWU7CiAK
ICAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZENoZWNrYm94SXRlbShXSS5VSVN0cmluZygi
QXNzZXJ0aW9uIEZhaWx1cmVzIiksICgpID0+IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0xvZ0NvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTG9nQ29udGVudFZpZXcuanMKaW5kZXgg
MTM3MmZmMTcxOTUuLjY0ODA4MTg2MTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9Mb2dDb250ZW50Vmlldy5qcworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Mb2dDb250ZW50Vmlldy5qcwpAQCAtMTI4
LDcgKzEyOCw3IEBAIFdJLkxvZ0NvbnRlbnRWaWV3ID0gY2xhc3MgTG9nQ29udGVudFZpZXcgZXh0
ZW5kcyBXSS5Db250ZW50VmlldwogICAgICAgICBpZiAodGhpcy5faGFzTm9uRGVmYXVsdExvZ0No
YW5uZWxNZXNzYWdlICYmIHRoaXMuX21lc3NhZ2VTb3VyY2VCYXIpCiAgICAgICAgICAgICBuYXZp
Z2F0aW9uSXRlbXMucHVzaCh0aGlzLl9tZXNzYWdlU291cmNlQmFyLCBuZXcgV0kuRGl2aWRlck5h
dmlnYXRpb25JdGVtKTsKIAotICAgICAgICBpZiAoSGVhcEFnZW50LmdjKQorICAgICAgICBpZiAo
d2luZG93LkhlYXBBZ2VudCAmJiBIZWFwQWdlbnQuZ2MpCiAgICAgICAgICAgICBuYXZpZ2F0aW9u
SXRlbXMucHVzaCh0aGlzLl9nYXJiYWdlQ29sbGVjdE5hdmlnYXRpb25JdGVtKTsKIAogICAgICAg
ICBuYXZpZ2F0aW9uSXRlbXMucHVzaCh0aGlzLl9jbGVhckxvZ05hdmlnYXRpb25JdGVtKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05ldHdv
cmtUaW1lbGluZVZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9OZXR3b3JrVGltZWxpbmVWaWV3LmpzCmluZGV4IDJiY2U3NmUwZjRmLi5mNjVhNDk1Y2Zi
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
TmV0d29ya1RpbWVsaW5lVmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9OZXR3b3JrVGltZWxpbmVWaWV3LmpzCkBAIC0xMTQsNyArMTE0LDcgQEAg
V0kuTmV0d29ya1RpbWVsaW5lVmlldyA9IGNsYXNzIE5ldHdvcmtUaW1lbGluZVZpZXcgZXh0ZW5k
cyBXSS5UaW1lbGluZVZpZXcKICAgICAgICAgY29sdW1ucy5ncmFwaC5zb3J0YWJsZSA9IGZhbHNl
OwogCiAgICAgICAgIC8vIENPTVBBVElCSUxJVFkoaU9TIDEwLjMpOiBOZXR3b3JrIGxvYWQgbWV0
cmljcyB3ZXJlIG5vdCBwcmV2aW91c2x5IGF2YWlsYWJsZS4KLSAgICAgICAgaWYgKCFOZXR3b3Jr
QWdlbnQuaGFzRXZlbnRQYXJhbWV0ZXIoImxvYWRpbmdGaW5pc2hlZCIsICJtZXRyaWNzIikpIHsK
KyAgICAgICAgaWYgKCFJbnNwZWN0b3JCYWNrZW5kLmRvbWFpbnMuTmV0d29yay5oYXNFdmVudFBh
cmFtZXRlcigibG9hZGluZ0ZpbmlzaGVkIiwgIm1ldHJpY3MiKSkgewogICAgICAgICAgICAgZGVs
ZXRlIGNvbHVtbnMucHJvdG9jb2w7CiAgICAgICAgICAgICBkZWxldGUgY29sdW1ucy5wcmlvcml0
eTsKICAgICAgICAgICAgIGRlbGV0ZSBjb2x1bW5zLnJlbW90ZUFkZHJlc3M7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZURldGFp
bHNTaWRlYmFyUGFuZWwuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9SZXNvdXJjZURldGFpbHNTaWRlYmFyUGFuZWwuanMKaW5kZXggYzdmZGQ4YTRkM2YuLmQ2
YWVjZjQ3Yzk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9SZXNvdXJjZURldGFpbHNTaWRlYmFyUGFuZWwuanMKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VEZXRhaWxzU2lkZWJhclBhbmVs
LmpzCkBAIC0zNTYsNyArMzU2LDcgQEAgV0kuUmVzb3VyY2VEZXRhaWxzU2lkZWJhclBhbmVsID0g
Y2xhc3MgUmVzb3VyY2VEZXRhaWxzU2lkZWJhclBhbmVsIGV4dGVuZHMgV0kuRGUKICAgICAgICAg
dGhpcy5fcmVxdWVzdE1ldGhvZFJvdy52YWx1ZSA9IHRoaXMuX3Jlc291cmNlLnJlcXVlc3RNZXRo
b2QgfHwgZW1EYXNoOwogCiAgICAgICAgIC8vIENPTVBBVElCSUxJVFkoaU9TIDEwLjMpOiBOZXR3
b3JrIGxvYWQgbWV0cmljcyB3ZXJlIG5vdCBwcmV2aW91c2x5IGF2YWlsYWJsZS4KLSAgICAgICAg
aWYgKHdpbmRvdy5OZXR3b3JrQWdlbnQgJiYgTmV0d29ya0FnZW50Lmhhc0V2ZW50UGFyYW1ldGVy
KCJsb2FkaW5nRmluaXNoZWQiLCAibWV0cmljcyIpKSB7CisgICAgICAgIGlmIChJbnNwZWN0b3JC
YWNrZW5kLmRvbWFpbnMuTmV0d29yay5oYXNFdmVudFBhcmFtZXRlcigibG9hZGluZ0ZpbmlzaGVk
IiwgIm1ldHJpY3MiKSkgewogICAgICAgICAgICAgbGV0IHByb3RvY29sRGlzcGxheU5hbWUgPSBX
SS5SZXNvdXJjZS5kaXNwbGF5TmFtZUZvclByb3RvY29sKHRoaXMuX3Jlc291cmNlLnByb3RvY29s
KTsKICAgICAgICAgICAgIHRoaXMuX3Byb3RvY29sUm93LnZhbHVlID0gcHJvdG9jb2xEaXNwbGF5
TmFtZSB8fCBlbURhc2g7CiAgICAgICAgICAgICB0aGlzLl9wcm90b2NvbFJvdy50b29sdGlwID0g
cHJvdG9jb2xEaXNwbGF5TmFtZSA/IHRoaXMuX3Jlc291cmNlLnByb3RvY29sIDogIiI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TZXR0aW5n
c1RhYkNvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvU2V0dGluZ3NUYWJDb250ZW50Vmlldy5qcwppbmRleCA1NGIyYTllNjc2ZS4uMjg3Y2Q3
NjUyODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1NldHRpbmdzVGFiQ29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvU2V0dGluZ3NUYWJDb250ZW50Vmlldy5qcwpAQCAtMjI1LDcg
KzIyNSwxMCBAQCBXSS5TZXR0aW5nc1RhYkNvbnRlbnRWaWV3ID0gY2xhc3MgU2V0dGluZ3NUYWJD
b250ZW50VmlldyBleHRlbmRzIFdJLlRhYkNvbnRlbnRWaQogICAgICAgICAgICAgZm9yIChsZXQg
Y2hhbm5lbCBvZiBjaGFubmVscykgewogICAgICAgICAgICAgICAgIGxldCBsb2dFZGl0b3IgPSBn
ZW5lcmFsU2V0dGluZ3NWaWV3LmFkZEdyb3VwV2l0aEN1c3RvbVNldHRpbmcoZWRpdG9yTGFiZWxz
W2NoYW5uZWwuc291cmNlXSwgV0kuU2V0dGluZ0VkaXRvci5UeXBlLlNlbGVjdCwge3ZhbHVlczog
bG9nTGV2ZWxzfSk7CiAgICAgICAgICAgICAgICAgbG9nRWRpdG9yLnZhbHVlID0gY2hhbm5lbC5s
ZXZlbDsKLSAgICAgICAgICAgICAgICBsb2dFZGl0b3IuYWRkRXZlbnRMaXN0ZW5lcihXSS5TZXR0
aW5nRWRpdG9yLkV2ZW50LlZhbHVlRGlkQ2hhbmdlLCAoKSA9PiB7IENvbnNvbGVBZ2VudC5zZXRM
b2dnaW5nQ2hhbm5lbExldmVsKGNoYW5uZWwuc291cmNlLCBsb2dFZGl0b3IudmFsdWUpOyB9KTsK
KyAgICAgICAgICAgICAgICBsb2dFZGl0b3IuYWRkRXZlbnRMaXN0ZW5lcihXSS5TZXR0aW5nRWRp
dG9yLkV2ZW50LlZhbHVlRGlkQ2hhbmdlLCAoKSA9PiB7CisgICAgICAgICAgICAgICAgICAgIGZv
ciAobGV0IHRhcmdldCBvZiBXSS50YXJnZXRzKQorICAgICAgICAgICAgICAgICAgICAgICAgdGFy
Z2V0LkNvbnNvbGVBZ2VudC5zZXRMb2dnaW5nQ2hhbm5lbExldmVsKGNoYW5uZWwuc291cmNlLCBs
b2dFZGl0b3IudmFsdWUpOworICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgfQogICAg
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL1NvdXJjZUNvZGVUZXh0RWRpdG9yLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvU291cmNlQ29kZVRleHRFZGl0b3IuanMKaW5kZXggODdkZWM5YTIz
NjkuLmYzNmRkMDYxY2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9Tb3VyY2VDb2RlVGV4dEVkaXRvci5qcworKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Tb3VyY2VDb2RlVGV4dEVkaXRvci5qcwpAQCAt
MjE1NCw3ICsyMTU0LDcgQEAgV0kuU291cmNlQ29kZVRleHRFZGl0b3IgPSBjbGFzcyBTb3VyY2VD
b2RlVGV4dEVkaXRvciBleHRlbmRzIFdJLlRleHRFZGl0b3IKICAgICBfY3JlYXRlVHlwZVRva2Vu
QW5ub3RhdG9yKCkKICAgICB7CiAgICAgICAgIC8vIENPTVBBVElCSUxJVFkgKGlPUyA4KTogUnVu
dGltZS5nZXRSdW50aW1lVHlwZXNGb3JWYXJpYWJsZXNBdE9mZnNldHMgZGlkIG5vdCBleGlzdCB5
ZXQuCi0gICAgICAgIGlmICghUnVudGltZUFnZW50LmdldFJ1bnRpbWVUeXBlc0ZvclZhcmlhYmxl
c0F0T2Zmc2V0cykKKyAgICAgICAgaWYgKCF0aGlzLnRhcmdldC5SdW50aW1lQWdlbnQuZ2V0UnVu
dGltZVR5cGVzRm9yVmFyaWFibGVzQXRPZmZzZXRzKQogICAgICAgICAgICAgcmV0dXJuOwogCiAg
ICAgICAgIHZhciBzY3JpcHQgPSB0aGlzLl9nZXRBc3NvY2lhdGVkU2NyaXB0KCk7CkBAIC0yMTY3
LDcgKzIxNjcsNyBAQCBXSS5Tb3VyY2VDb2RlVGV4dEVkaXRvciA9IGNsYXNzIFNvdXJjZUNvZGVU
ZXh0RWRpdG9yIGV4dGVuZHMgV0kuVGV4dEVkaXRvcgogICAgIF9jcmVhdGVCYXNpY0Jsb2NrQW5u
b3RhdG9yKCkKICAgICB7CiAgICAgICAgIC8vIENPTVBBVElCSUxJVFkgKGlPUyA4KTogUnVudGlt
ZS5nZXRCYXNpY0Jsb2NrcyBkaWQgbm90IGV4aXN0IHlldC4KLSAgICAgICAgaWYgKCFSdW50aW1l
QWdlbnQuZ2V0QmFzaWNCbG9ja3MpCisgICAgICAgIGlmICghdGhpcy50YXJnZXQuUnVudGltZUFn
ZW50LmdldEJhc2ljQmxvY2tzKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHZhciBz
Y3JpcHQgPSB0aGlzLl9nZXRBc3NvY2lhdGVkU2NyaXB0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9XZWJTb2NrZXRDb250ZW50Vmlldy5q
cyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1dlYlNvY2tldENv
bnRlbnRWaWV3LmpzCmluZGV4IDlkZWMxNjgxZjNkLi4zYmYwZDY0NjNjNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvV2ViU29ja2V0Q29udGVu
dFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
V2ViU29ja2V0Q29udGVudFZpZXcuanMKQEAgLTM2LDcgKzM2LDcgQEAgV0kuV2ViU29ja2V0Q29u
dGVudFZpZXcgPSBjbGFzcyBXZWJTb2NrZXRDb250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRlbnRW
aWV3CiAgICAgICAgIHRoaXMuX2xhc3RSZW5kZXJlZFJlYWR5U3RhdGUgPSBudWxsOwogCiAgICAg
ICAgIC8vIENPTVBBVElCSUxJVFkgKGlPUyAxMC4zKTogYHdhbGx0aW1lYCBkaWQgbm90IGV4aXN0
IGluIDEwLjMgYW5kIGVhcmxpZXIuCi0gICAgICAgIHRoaXMuX3Nob3dUaW1lQ29sdW1uID0gTmV0
d29ya0FnZW50Lmhhc0V2ZW50UGFyYW1ldGVyKCJ3ZWJTb2NrZXRXaWxsU2VuZEhhbmRzaGFrZVJl
cXVlc3QiLCAid2FsbHRpbWUiKTsKKyAgICAgICAgdGhpcy5fc2hvd1RpbWVDb2x1bW4gPSBJbnNw
ZWN0b3JCYWNrZW5kLmRvbWFpbnMuTmV0d29yay5oYXNFdmVudFBhcmFtZXRlcigid2ViU29ja2V0
V2lsbFNlbmRIYW5kc2hha2VSZXF1ZXN0IiwgIndhbGx0aW1lIik7CiAKICAgICAgICAgdGhpcy5l
bGVtZW50LmNsYXNzTGlzdC5hZGQoIndlYi1zb2NrZXQiLCAicmVzb3VyY2UiKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>354261</attachid>
            <date>2018-11-08 12:29:28 -0800</date>
            <delta_ts>2018-11-08 22:57:31 -0800</delta_ts>
            <desc>[PATCH] Proposed Fix</desc>
            <filename>multi-2.patch</filename>
            <type>text/plain</type>
            <size>38241</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">Y29tbWl0IGNiMTJlOWZjMmE2MmE2YWU5ODFiMzBmMTk5YjU1MjkwYWQyZjdhZjMKQXV0aG9yOiBK
b3NlcGggUGVjb3Jhcm8gPHBlY29yYXJvQGFwcGxlLmNvbT4KRGF0ZTogICBUdWUgTm92IDYgMjA6
NDE6MDYgMjAxOCAtMDgwMAoKICAgIExPQ0FMOiBJbnNwZWN0b3JCYWNrZW5kLmRvbWFpbnMKCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCA1ODA2YWYzZDQzZi4uZjY0MWEyYTAzOTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDEwNiBAQAogMjAxOC0xMS0wOCAgSm9zZXBo
IFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCisgICAgICAgIFdlYiBJbnNwZWN0b3I6
IFN0YXJ0IG1vdmluZyB0b3dhcmQgYmV0dGVyIG11bHRpLXRhcmdldCBzdXBwb3J0CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTEzNDUKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGNoYW5nZSBjb250
aW51ZXMgdGhlIG1vdmUgdG93YXJkIGJldHRlciBtdWx0aS10YXJnZXQgc3VwcG9ydAorICAgICAg
ICBieSBleHBsaWNpdGx5IHVzaW5nIGV4cGxpY2l0IHRhcmdldCBhZ2VudHMgaW4gbW9yZSBwbGFj
ZXMsIGFuZAorICAgICAgICBjb252ZXJ0aW5nIGdlbmVyYWxpemVkIGZlYXR1cmUgY2hlY2tzIGlu
dG8gdGFyZ2V0IGFnbm9zdGljIHZlcnNpb25zCisgICAgICAgIHRoYXQgdXNlIHRoZSBuZXcgSW5z
cGVjdG9yQmFja2VuZC5kb21haW5zLCB3aGljaCBkb2VzIG5vdCB2YXJ5IGJhc2VkCisgICAgICAg
IG9uIHRoZSBjb25uZWN0ZWQgdGFyZ2V0cyAvIGRlYnVnZ2FibGUgdHlwZS4KKworICAgICAgICBJ
IGFsc28gYXVkaXRlZCB1c2VzIG9mIFJ1bnRpbWVBZ2VudCwgQ29uc29sZUFnZW50LCBhbmQgRGVi
dWdnZXJBZ2VudAorICAgICAgICBmb3IgYmV0dGVyIG11bHRpLXRhcmdldCBzdXBwb3J0IHNpbmNl
IHRoZXNlIGFnZW50cyBzaG91bGQgYWxyZWFkeQorICAgICAgICBoYXZlIGNvbXBsZXRlIG11bHRp
LXRhcmdldCBzdXBwb3J0LgorCisgICAgICAgICogVXNlckludGVyZmFjZS9Qcm90b2NvbC9UYXJn
ZXQuanM6CisgICAgICAgIChXSS5UYXJnZXQucHJvdG90eXBlLmluaXRpYWxpemUpOgorICAgICAg
ICBNb3ZlIGV4cGxpY2l0bHkgdG8gdGFyZ2V0LkFnZW50IGZlYXR1cmUgY2hlY2tzIHdpdGggYSBr
bm93biB0YXJnZXQuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0RlYnVn
Z2VyTWFuYWdlci5qczoKKyAgICAgICAgKFdJLkRlYnVnZ2VyTWFuYWdlci5wcm90b3R5cGUuaW5p
dGlhbGl6ZVRhcmdldCk6CisgICAgICAgIChXSS5EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLl9w
YXVzZUZvckludGVybmFsU2NyaXB0c0RpZENoYW5nZSk6CisgICAgICAgIE1vdmUgZXhwbGljaXRs
eSB0byB0YXJnZXQuRGVidWdnZXJBZ2VudCBmb3IgZmVhdHVyZSBjaGVja3Mgd2l0aCBhIGtub3du
IHRhcmdldC4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvTmV0d29ya01h
bmFnZXIuanM6CisgICAgICAgIChXSS5OZXR3b3JrTWFuYWdlci5wcm90b3R5cGUuaW5pdGlhbGl6
ZVRhcmdldCk6CisgICAgICAgIE1vdmUgZXhwbGljaXRseSB0byB0YXJnZXQuTmV0d29ya0FnZW50
IGZvciBmZWF0dXJlIGNoZWNrcyB3aXRoIGEga25vd24gdGFyZ2V0LgorCisgICAgICAgICogVXNl
ckludGVyZmFjZS9Db250cm9sbGVycy9SdW50aW1lTWFuYWdlci5qczoKKyAgICAgICAgKFdJLlJ1
bnRpbWVNYW5hZ2VyLnByb3RvdHlwZS5pbml0aWFsaXplVGFyZ2V0KToKKyAgICAgICAgKFdJLlJ1
bnRpbWVNYW5hZ2VyLnByb3RvdHlwZS5zYXZlUmVzdWx0KToKKyAgICAgICAgKiBVc2VySW50ZXJm
YWNlL1Byb3RvY29sL1JlbW90ZU9iamVjdC5qczoKKyAgICAgICAgKFdJLlJlbW90ZU9iamVjdC5w
cm90b3R5cGUudXBkYXRlUHJldmlldyk6CisgICAgICAgIChXSS5SZW1vdGVPYmplY3QucHJvdG90
eXBlLmdldERpc3BsYXlhYmxlUHJvcGVydHlEZXNjcmlwdG9ycyk6CisgICAgICAgIChXSS5SZW1v
dGVPYmplY3QucHJvdG90eXBlLmRlcHJlY2F0ZWRHZXREaXNwbGF5YWJsZVByb3BlcnRpZXMpOgor
ICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvU291cmNlQ29kZVRleHRFZGl0b3IuanM6Cisg
ICAgICAgIChXSS5Tb3VyY2VDb2RlVGV4dEVkaXRvci5wcm90b3R5cGUuX2NyZWF0ZVR5cGVUb2tl
bkFubm90YXRvcik6CisgICAgICAgIChXSS5Tb3VyY2VDb2RlVGV4dEVkaXRvci5wcm90b3R5cGUu
X2NyZWF0ZUJhc2ljQmxvY2tBbm5vdGF0b3IpOgorICAgICAgICBNb3ZlIGV4cGxpY2l0bHkgdG8g
dGFyZ2V0LlJ1bnRpbWVBZ2VudCBmb3IgZmVhdHVyZSBjaGVja3Mgd2l0aCBhIGtub3duIHRhcmdl
dC4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxzL0NTU0NvbXBsZXRpb25zLmpzOgor
ICAgICAgICAoV0kuQ1NTQ29tcGxldGlvbnMuaW5pdGlhbGl6ZUNTU0NvbXBsZXRpb25zKToKKyAg
ICAgICAgTW92ZSBleHBsaWNpdGx5IHRvIHRhcmdldC5DU1NBZ2VudCBmb3IgZmVhdHVyZSBjaGVj
a3Mgd2l0aCBhIGtub3duIHRhcmdldC4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3Mv
Q29udGV4dE1lbnVVdGlsaXRpZXMuanM6CisgICAgICAgIFVzZSB0aGUgRGVidWdnZXJBZ2VudCBm
cm9tIHRoZSB0YXJnZXQgYXNzb2NpYXRlZCB3aXRoIHRoZSBET01Ob2RlJ3MKKyAgICAgICAgcmVt
b3RlIG9iamVjdCBpbnN0ZWFkIG9mIGFzc3VtaW5nIHRoZSBtYWluIHRhcmdldC4KKworICAgICAg
ICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvU2V0dGluZ3NUYWJDb250ZW50Vmlldy5qczoKKyAgICAg
ICAgKFdJLlNldHRpbmdzVGFiQ29udGVudFZpZXcucHJvdG90eXBlLl9jcmVhdGVHZW5lcmFsU2V0
dGluZ3NWaWV3KToKKyAgICAgICAgVXBkYXRlIHRoZSBDb25zb2xlQWdlbnQgc2V0dGluZyBvbiBh
bGwgdGFyZ2V0cyB0aGF0IHN1cHBvcnQgaXQuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Zp
ZXdzL0JyZWFrcG9pbnRBY3Rpb25WaWV3LmpzOgorICAgICAgICAoV0kuQnJlYWtwb2ludEFjdGlv
blZpZXcpOgorICAgICAgICBBbGwgYmFja2VuZHMgc3VwcG9ydCBCcmVha3BvaW50QWN0aW9uVHlw
ZSwgdGhlIGFzc2VydGlvbiBjYW4gZ28gYXdheS4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2Uv
Vmlld3MvTG9nQ29udGVudFZpZXcuanM6CisgICAgICAgIChXSS5Mb2dDb250ZW50Vmlldy5wcm90
b3R5cGUuZ2V0IG5hdmlnYXRpb25JdGVtcyk6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3
cy9ET01UcmVlQ29udGVudFZpZXcuanM6CisgICAgICAgIChXSS5ET01UcmVlQ29udGVudFZpZXcu
cHJvdG90eXBlLmdldCBuYXZpZ2F0aW9uSXRlbXMpOgorICAgICAgICBJbmNsdWRlIGFkZGl0aW9u
YWwgYHdpbmRvdy5Gb29BZ2VudGAgY2hlY2tzIGZvciB0aGVzZSBzaW5jZSB0aGV5IHdpbGwgbmVl
ZAorICAgICAgICB0byBiZSByZXZpc2l0ZWQgaW4gdGhlIGZ1dHVyZS4KKworICAgICAgICAqIFVz
ZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5zcGVjdG9yQmFja2VuZC5qczoKKyAgICAgICAgKEluc3Bl
Y3RvckJhY2tlbmRDbGFzcy5wcm90b3R5cGUuZ2V0IGRvbWFpbnMpOgorICAgICAgICAoSW5zcGVj
dG9yQmFja2VuZENsYXNzLnByb3RvdHlwZS5hY3RpdmF0ZURvbWFpbik6CisgICAgICAgIEV4cG9z
ZSBJbnNwZWN0b3JCYWNrZW5kLmRvbWFpbnMuPERvbWFpbj4gZm9yIGZlYXR1cmUgY2hlY2tpbmcu
CisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0JyZWFrcG9pbnRQb3BvdmVy
Q29udHJvbGxlci5qczoKKyAgICAgICAgKFdJLkJyZWFrcG9pbnRQb3BvdmVyQ29udHJvbGxlci5w
cm90b3R5cGUuX2NyZWF0ZVBvcG92ZXJDb250ZW50KToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNl
L0NvbnRyb2xsZXJzL0NTU01hbmFnZXIuanM6CisgICAgICAgIChXSS5DU1NNYW5hZ2VyKToKKyAg
ICAgICAgKFdJLkNTU01hbmFnZXIucHJvdG90eXBlLl9tYWluUmVzb3VyY2VEaWRDaGFuZ2UpOgor
ICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvVGltZWxpbmVNYW5hZ2VyLmpzOgor
ICAgICAgICAoV0kuVGltZWxpbmVNYW5hZ2VyLnByb3RvdHlwZS5fYXR0ZW1wdEF1dG9DYXB0dXJp
bmdGb3JGcmFtZSk6CisgICAgICAgIChXSS5UaW1lbGluZU1hbmFnZXIucHJvdG90eXBlLl91cGRh
dGVBdXRvQ2FwdHVyZUluc3RydW1lbnRzKToKKyAgICAgICAgKFdJLlRpbWVsaW5lTWFuYWdlcik6
CisgICAgICAgICogVXNlckludGVyZmFjZS9Nb2RlbHMvQ2FudmFzLmpzOgorICAgICAgICAoV0ku
Q2FudmFzLnByb3RvdHlwZS5zdGFydFJlY29yZGluZyk6CisgICAgICAgIChXSS5DYW52YXMucHJv
dG90eXBlLnJlY29yZGluZ0ZpbmlzaGVkKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01vZGVs
cy9TY3JpcHRTeW50YXhUcmVlLmpzOgorICAgICAgICAoV0kuU2NyaXB0U3ludGF4VHJlZS5mdW5j
dGlvblJldHVybkRpdm90KToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Byb3RvY29sL0RlYnVn
Z2VyT2JzZXJ2ZXIuanM6CisgICAgICAgIChXSS5EZWJ1Z2dlck9ic2VydmVyKToKKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL1Byb3RvY29sL05ldHdvcmtPYnNlcnZlci5qczoKKyAgICAgICAgKFdJ
Lk5ldHdvcmtPYnNlcnZlci5wcm90b3R5cGUucmVxdWVzdFdpbGxCZVNlbnQpOgorICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvVmlld3MvRGVidWdnZXJTaWRlYmFyUGFuZWwuanM6CisgICAgICAgIChX
SS5EZWJ1Z2dlclNpZGViYXJQYW5lbCk6CisgICAgICAgIChXSS5EZWJ1Z2dlclNpZGViYXJQYW5l
bC5wcm90b3R5cGUuX2hhbmRsZUNyZWF0ZUJyZWFrcG9pbnRDbGlja2VkKToKKyAgICAgICAgKiBV
c2VySW50ZXJmYWNlL1ZpZXdzL05ldHdvcmtUaW1lbGluZVZpZXcuanM6CisgICAgICAgIChXSS5O
ZXR3b3JrVGltZWxpbmVWaWV3KToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291
cmNlRGV0YWlsc1NpZGViYXJQYW5lbC5qczoKKyAgICAgICAgKFdJLlJlc291cmNlRGV0YWlsc1Np
ZGViYXJQYW5lbC5wcm90b3R5cGUuX3JlZnJlc2hSZXF1ZXN0QW5kUmVzcG9uc2UpOgorICAgICAg
ICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvV2ViU29ja2V0Q29udGVudFZpZXcuanM6CisgICAgICAg
IChXSS5XZWJTb2NrZXRDb250ZW50Vmlldyk6CisgICAgICAgIChXSS5OZXR3b3JrTWFuYWdlci5w
cm90b3R5cGUud2ViU29ja2V0V2lsbFNlbmRIYW5kc2hha2VSZXF1ZXN0KToKKyAgICAgICAgKFdJ
LkRlYnVnZ2VyTWFuYWdlci5wcm90b3R5cGUuZGVidWdnZXJEaWRSZXN1bWUpOgorICAgICAgICBG
ZWF0dXJlIGNoZWNrIGluIGEgdGFyZ2V0IGFnbm9zdGljIHdheS4KKworMjAxOC0xMS0wNiAgSm9z
ZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCiAgICAgICAgIFdlYiBJbnNwZWN0
b3I6IFJlc3RyaWN0IGRvbWFpbnMgYXQgdGhlIHRhcmdldCBsZXZlbCBpbnN0ZWFkIG9mIG9ubHkg
YXQgdGhlIHdpbmRvdyBsZXZlbAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTkxMzQ0CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0JyZWFrcG9pbnRQb3BvdmVyQ29udHJvbGxlci5qcyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0JyZWFrcG9p
bnRQb3BvdmVyQ29udHJvbGxlci5qcwppbmRleCBhODY1ODVlMzZkMy4uZWFlNjdhYWM2MGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJz
L0JyZWFrcG9pbnRQb3BvdmVyQ29udHJvbGxlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9CcmVha3BvaW50UG9wb3ZlckNvbnRyb2xsZXIu
anMKQEAgLTE3Myw3ICsxNzMsNyBAQCBXSS5CcmVha3BvaW50UG9wb3ZlckNvbnRyb2xsZXIgPSBj
bGFzcyBCcmVha3BvaW50UG9wb3ZlckNvbnRyb2xsZXIgZXh0ZW5kcyBXSS5PYgogICAgICAgICAv
LyBDT01QQVRJQklMSVRZIChpT1MgOSk6IExlZ2FjeSBiYWNrZW5kcyBkb24ndCBzdXBwb3J0IGJy
ZWFrcG9pbnQgaWdub3JlIGNvdW50LiBTaW5jZSBzdXBwb3J0CiAgICAgICAgIC8vIGNhbid0IGJl
IHRlc3RlZCBkaXJlY3RseSwgY2hlY2sgZm9yIENTUy5nZXRTdXBwb3J0ZWRTeXN0ZW1Gb250RmFt
aWx5TmFtZXMuCiAgICAgICAgIC8vIEZJWE1FOiBVc2UgZXhwbGljaXQgdmVyc2lvbiBjaGVja2lu
ZyBvbmNlIGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE0ODY4MCBpcyBmaXhlZC4KLSAgICAgICAgaWYg
KENTU0FnZW50LmdldFN1cHBvcnRlZFN5c3RlbUZvbnRGYW1pbHlOYW1lcykgeworICAgICAgICBp
ZiAoSW5zcGVjdG9yQmFja2VuZC5kb21haW5zLkNTUy5nZXRTdXBwb3J0ZWRTeXN0ZW1Gb250RmFt
aWx5TmFtZXMpIHsKICAgICAgICAgICAgIGxldCBpZ25vcmVDb3VudFJvdyA9IHRhYmxlLmFwcGVu
ZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRyIikpOwogICAgICAgICAgICAgbGV0IGln
bm9yZUNvdW50SGVhZGVyID0gaWdub3JlQ291bnRSb3cuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgidGgiKSk7CiAgICAgICAgICAgICBsZXQgaWdub3JlQ291bnRMYWJlbCA9IGln
bm9yZUNvdW50SGVhZGVyLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxhYmVs
IikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29u
dHJvbGxlcnMvQ1NTTWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL0NvbnRyb2xsZXJzL0NTU01hbmFnZXIuanMKaW5kZXggYjI4YjQ0MjBhZDAuLjQ4OTA2N2I5
ZThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250
cm9sbGVycy9DU1NNYW5hZ2VyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL0NvbnRyb2xsZXJzL0NTU01hbmFnZXIuanMKQEAgLTQ4LDcgKzQ4LDcgQEAgV0kuQ1NT
TWFuYWdlciA9IGNsYXNzIENTU01hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgICAgICAv
LyBDT01QQVRJQklMSVRZIChpT1MgOSk6IExlZ2FjeSBiYWNrZW5kcyBkaWQgbm90IHNlbmQgc3R5
bGVzaGVldAogICAgICAgICAvLyBhZGRlZC9yZW1vdmVkIGV2ZW50cyBhbmQgbXVzdCBiZSBmZXRj
aGVkIG1hbnVhbGx5LgotICAgICAgICB0aGlzLl9mZXRjaGVkSW5pdGlhbFN0eWxlU2hlZXRzID0g
d2luZG93LkNTU0FnZW50ICYmIHdpbmRvdy5DU1NBZ2VudC5oYXNFdmVudCgic3R5bGVTaGVldEFk
ZGVkIik7CisgICAgICAgIHRoaXMuX2ZldGNoZWRJbml0aWFsU3R5bGVTaGVldHMgPSBJbnNwZWN0
b3JCYWNrZW5kLmRvbWFpbnMuQ1NTLmhhc0V2ZW50KCJzdHlsZVNoZWV0QWRkZWQiKTsKICAgICB9
CiAKICAgICAvLyBUYXJnZXQKQEAgLTM2Myw3ICszNjMsNyBAQCBXSS5DU1NNYW5hZ2VyID0gY2xh
c3MgQ1NTTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogCiAgICAgICAgIC8vIENsZWFyIG91ciBt
YXBzIHdoZW4gdGhlIG1haW4gZnJhbWUgbmF2aWdhdGVzLgogCi0gICAgICAgIHRoaXMuX2ZldGNo
ZWRJbml0aWFsU3R5bGVTaGVldHMgPSB3aW5kb3cuQ1NTQWdlbnQgJiYgd2luZG93LkNTU0FnZW50
Lmhhc0V2ZW50KCJzdHlsZVNoZWV0QWRkZWQiKTsKKyAgICAgICAgdGhpcy5fZmV0Y2hlZEluaXRp
YWxTdHlsZVNoZWV0cyA9IEluc3BlY3RvckJhY2tlbmQuZG9tYWlucy5DU1MuaGFzRXZlbnQoInN0
eWxlU2hlZXRBZGRlZCIpOwogICAgICAgICB0aGlzLl9zdHlsZVNoZWV0SWRlbnRpZmllck1hcC5j
bGVhcigpOwogICAgICAgICB0aGlzLl9zdHlsZVNoZWV0RnJhbWVVUkxNYXAuY2xlYXIoKTsKICAg
ICAgICAgdGhpcy5fbm9kZVN0eWxlc01hcCA9IHt9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRGVidWdnZXJNYW5hZ2VyLmpzIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRGVidWdnZXJN
YW5hZ2VyLmpzCmluZGV4IGE1YzNmYWZjNGZmLi5lOTk0NTU2MTI4ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRGVidWdnZXJNYW5h
Z2VyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xs
ZXJzL0RlYnVnZ2VyTWFuYWdlci5qcwpAQCAtMTE4LDE1ICsxMTgsMTUgQEAgV0kuRGVidWdnZXJN
YW5hZ2VyID0gY2xhc3MgRGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAg
IHRhcmdldC5EZWJ1Z2dlckFnZW50LnNldFBhdXNlT25FeGNlcHRpb25zKHRoaXMuX2JyZWFrT25F
eGNlcHRpb25zU3RhdGUpOwogCiAgICAgICAgIC8vIENPTVBBVElCSUxJVFkgKGlPUyAxMCk6IERl
YnVnZ2VyQWdlbnQuc2V0UGF1c2VPbkFzc2VydGlvbnMgZGlkIG5vdCBleGlzdCB5ZXQuCi0gICAg
ICAgIGlmIChEZWJ1Z2dlckFnZW50LnNldFBhdXNlT25Bc3NlcnRpb25zKQorICAgICAgICBpZiAo
dGFyZ2V0LkRlYnVnZ2VyQWdlbnQuc2V0UGF1c2VPbkFzc2VydGlvbnMpCiAgICAgICAgICAgICB0
YXJnZXQuRGVidWdnZXJBZ2VudC5zZXRQYXVzZU9uQXNzZXJ0aW9ucyh0aGlzLl9hc3NlcnRpb25G
YWlsdXJlc0JyZWFrcG9pbnRFbmFibGVkU2V0dGluZy52YWx1ZSk7CiAKICAgICAgICAgLy8gQ09N
UEFUSUJJTElUWSAoaU9TIDEwKTogRGVidWdnZXIuc2V0QXN5bmNTdGFja1RyYWNlRGVwdGggZGlk
IG5vdCBleGlzdCB5ZXQuCi0gICAgICAgIGlmIChEZWJ1Z2dlckFnZW50LnNldEFzeW5jU3RhY2tU
cmFjZURlcHRoKQorICAgICAgICBpZiAodGFyZ2V0LkRlYnVnZ2VyQWdlbnQuc2V0QXN5bmNTdGFj
a1RyYWNlRGVwdGgpCiAgICAgICAgICAgICB0YXJnZXQuRGVidWdnZXJBZ2VudC5zZXRBc3luY1N0
YWNrVHJhY2VEZXB0aCh0aGlzLl9hc3luY1N0YWNrVHJhY2VEZXB0aFNldHRpbmcudmFsdWUpOwog
CiAgICAgICAgIC8vIENPTVBBVElCSUxJVFkgKGlPUyAxMik6IERlYnVnZ2VyQWdlbnQuc2V0UGF1
c2VGb3JJbnRlcm5hbFNjcmlwdHMgZGlkIG5vdCBleGlzdCB5ZXQuCi0gICAgICAgIGlmIChEZWJ1
Z2dlckFnZW50LnNldFBhdXNlRm9ySW50ZXJuYWxTY3JpcHRzKQorICAgICAgICBpZiAodGFyZ2V0
LkRlYnVnZ2VyQWdlbnQuc2V0UGF1c2VGb3JJbnRlcm5hbFNjcmlwdHMpCiAgICAgICAgICAgICB0
YXJnZXQuRGVidWdnZXJBZ2VudC5zZXRQYXVzZUZvckludGVybmFsU2NyaXB0cyhXSS5zZXR0aW5n
cy5wYXVzZUZvckludGVybmFsU2NyaXB0cy52YWx1ZSk7CiAKICAgICAgICAgaWYgKHRoaXMucGF1
c2VkKQpAQCAtNjg5LDcgKzY4OSw3IEBAIFdJLkRlYnVnZ2VyTWFuYWdlciA9IGNsYXNzIERlYnVn
Z2VyTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICAvLyA1MG1zLCBhbmQgdHJlYXQg
aXQgYXMgYSByZWFsIHJlc3VtZSBpZiB3ZSBoYXZlbid0IHBhdXNlZCBpbiB0aGF0IHRpbWUgZnJh
bWUuCiAgICAgICAgIC8vIFRoaXMgZGVsYXkgZW5zdXJlcyB0aGUgdXNlciBpbnRlcmZhY2UgZG9l
cyBub3QgZmxhc2ggYmV0d2VlbiBicmllZiBzdGVwcwogICAgICAgICAvLyBvciBzdWNjZXNzaXZl
IGJyZWFrcG9pbnRzLgotICAgICAgICBpZiAoIURlYnVnZ2VyQWdlbnQuc2V0UGF1c2VPbkFzc2Vy
dGlvbnMpIHsKKyAgICAgICAgaWYgKCF0YXJnZXQuRGVidWdnZXJBZ2VudC5zZXRQYXVzZU9uQXNz
ZXJ0aW9ucykgewogICAgICAgICAgICAgdGhpcy5fZGVsYXllZFJlc3VtZVRpbWVvdXQgPSBzZXRU
aW1lb3V0KHRoaXMuX2RpZFJlc3VtZUludGVybmFsLmJpbmQodGhpcywgdGFyZ2V0KSwgNTApOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0xMTU2LDExICsxMTU2LDEwIEBAIFdJ
LkRlYnVnZ2VyTWFuYWdlciA9IGNsYXNzIERlYnVnZ2VyTWFuYWdlciBleHRlbmRzIFdJLk9iamVj
dAogCiAgICAgX3BhdXNlRm9ySW50ZXJuYWxTY3JpcHRzRGlkQ2hhbmdlKGV2ZW50KQogICAgIHsK
LSAgICAgICAgLy8gQ09NUEFUSUJJTElUWSAoaU9TIDEyKTogRGVidWdnZXJBZ2VudC5zZXRQYXVz
ZUZvckludGVybmFsU2NyaXB0cyBkaWQgbm90IGV4aXN0IHlldC4KLSAgICAgICAgY29uc29sZS5h
c3NlcnQoRGVidWdnZXJBZ2VudC5zZXRQYXVzZUZvckludGVybmFsU2NyaXB0cyk7Ci0KLSAgICAg
ICAgZm9yIChsZXQgdGFyZ2V0IG9mIFdJLnRhcmdldHMpCi0gICAgICAgICAgICB0YXJnZXQuRGVi
dWdnZXJBZ2VudC5zZXRQYXVzZUZvckludGVybmFsU2NyaXB0cyhXSS5zZXR0aW5ncy5wYXVzZUZv
ckludGVybmFsU2NyaXB0cy52YWx1ZSk7CisgICAgICAgIGZvciAobGV0IHRhcmdldCBvZiBXSS50
YXJnZXRzKSB7CisgICAgICAgICAgICBpZiAodGFyZ2V0LkRlYnVnZ2VyQWdlbnQuc2V0UGF1c2VG
b3JJbnRlcm5hbFNjcmlwdHMpCisgICAgICAgICAgICAgICAgdGFyZ2V0LkRlYnVnZ2VyQWdlbnQu
c2V0UGF1c2VGb3JJbnRlcm5hbFNjcmlwdHMoV0kuc2V0dGluZ3MucGF1c2VGb3JJbnRlcm5hbFNj
cmlwdHMudmFsdWUpOworICAgICAgICB9CiAgICAgfQogCiAgICAgX21haW5SZXNvdXJjZURpZENo
YW5nZShldmVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL0NvbnRyb2xsZXJzL05ldHdvcmtNYW5hZ2VyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvTmV0d29ya01hbmFnZXIuanMKaW5kZXggZDZjZWVh
OTk3YjIuLjk0ZDg5YzdmNjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Db250cm9sbGVycy9OZXR3b3JrTWFuYWdlci5qcworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9OZXR3b3JrTWFuYWdlci5qcwpA
QCAtNjIsMTAgKzYyLDggQEAgV0kuTmV0d29ya01hbmFnZXIgPSBjbGFzcyBOZXR3b3JrTWFuYWdl
ciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICAgICAgdGFyZ2V0Lk5ldHdvcmtBZ2VudC5lbmFi
bGUoKTsKIAogICAgICAgICAgICAgLy8gQ09NUEFUSUJJTElUWSAoaU9TIDEwLjMpOiBOZXR3b3Jr
LnNldERpc2FibGVSZXNvdXJjZUNhY2hpbmcgZGlkIG5vdCBleGlzdC4KLSAgICAgICAgICAgIGlm
IChOZXR3b3JrQWdlbnQuc2V0UmVzb3VyY2VDYWNoaW5nRGlzYWJsZWQpIHsKLSAgICAgICAgICAg
ICAgICBpZiAoV0kuc2V0dGluZ3MucmVzb3VyY2VDYWNoaW5nRGlzYWJsZWQgJiYgV0kuc2V0dGlu
Z3MucmVzb3VyY2VDYWNoaW5nRGlzYWJsZWQudmFsdWUpCi0gICAgICAgICAgICAgICAgICAgIHRh
cmdldC5OZXR3b3JrQWdlbnQuc2V0UmVzb3VyY2VDYWNoaW5nRGlzYWJsZWQodHJ1ZSk7Ci0gICAg
ICAgICAgICB9CisgICAgICAgICAgICBpZiAodGFyZ2V0Lk5ldHdvcmtBZ2VudC5zZXRSZXNvdXJj
ZUNhY2hpbmdEaXNhYmxlZCkKKyAgICAgICAgICAgICAgICB0YXJnZXQuTmV0d29ya0FnZW50LnNl
dFJlc291cmNlQ2FjaGluZ0Rpc2FibGVkKFdJLnNldHRpbmdzLnJlc291cmNlQ2FjaGluZ0Rpc2Fi
bGVkLnZhbHVlKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmICh0YXJnZXQudHlwZSA9PT0gV0ku
VGFyZ2V0LlR5cGUuV29ya2VyKQpAQCAtMjk2LDcgKzI5NCw3IEBAIFdJLk5ldHdvcmtNYW5hZ2Vy
ID0gY2xhc3MgTmV0d29ya01hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgICAgIHJl
dHVybjsKIAogICAgICAgICAvLyBDT01QQVRJQklMSVRZKGlPUyAxMC4zKTogYHdhbGx0aW1lYCBk
aWQgbm90IGV4aXN0IGluIDEwLjMgYW5kIGVhcmxpZXIuCi0gICAgICAgIGlmICghTmV0d29ya0Fn
ZW50Lmhhc0V2ZW50UGFyYW1ldGVyKCJ3ZWJTb2NrZXRXaWxsU2VuZEhhbmRzaGFrZVJlcXVlc3Qi
LCAid2FsbHRpbWUiKSkgeworICAgICAgICBpZiAoIUluc3BlY3RvckJhY2tlbmQuZG9tYWlucy5O
ZXR3b3JrLmhhc0V2ZW50UGFyYW1ldGVyKCJ3ZWJTb2NrZXRXaWxsU2VuZEhhbmRzaGFrZVJlcXVl
c3QiLCAid2FsbHRpbWUiKSkgewogICAgICAgICAgICAgcmVxdWVzdCA9IGFyZ3VtZW50c1syXTsK
ICAgICAgICAgICAgIHdhbGx0aW1lID0gTmFOOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9SdW50aW1lTWFuYWdl
ci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1J1
bnRpbWVNYW5hZ2VyLmpzCmluZGV4IDU5ZGYxNWQ1YjBlLi40N2M2NTU4ZjJmMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvUnVudGlt
ZU1hbmFnZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29u
dHJvbGxlcnMvUnVudGltZU1hbmFnZXIuanMKQEAgLTQxLDExICs0MSwxMSBAQCBXSS5SdW50aW1l
TWFuYWdlciA9IGNsYXNzIFJ1bnRpbWVNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAg
IHRhcmdldC5SdW50aW1lQWdlbnQuZW5hYmxlKCk7CiAKICAgICAgICAgLy8gQ09NUEFUSUJJTElU
WSAoaU9TIDgpOiBSdW50aW1lLmVuYWJsZVR5cGVQcm9maWxlciBkaWQgbm90IGV4aXN0LgotICAg
ICAgICBpZiAoV0kuc2V0dGluZ3Muc2hvd0phdmFTY3JpcHRUeXBlSW5mb3JtYXRpb24gJiYgV0ku
c2V0dGluZ3Muc2hvd0phdmFTY3JpcHRUeXBlSW5mb3JtYXRpb24udmFsdWUgJiYgUnVudGltZUFn
ZW50LmVuYWJsZVR5cGVQcm9maWxlcikKKyAgICAgICAgaWYgKHRhcmdldC5SdW50aW1lQWdlbnQu
ZW5hYmxlVHlwZVByb2ZpbGVyICYmIFdJLnNldHRpbmdzLnNob3dKYXZhU2NyaXB0VHlwZUluZm9y
bWF0aW9uLnZhbHVlKQogICAgICAgICAgICAgdGFyZ2V0LlJ1bnRpbWVBZ2VudC5lbmFibGVUeXBl
UHJvZmlsZXIoKTsKIAogICAgICAgICAvLyBDT01QQVRJQklMSVRZIChpT1MgMTApOiBSdW50aW1l
LmVuYWJsZUNvbnRyb2xGbG93UHJvZmlsZXIgZGlkIG5vdCBleGlzdAotICAgICAgICBpZiAoV0ku
c2V0dGluZ3MuZW5hYmxlQ29udHJvbEZsb3dQcm9maWxlciAmJiBXSS5zZXR0aW5ncy5lbmFibGVD
b250cm9sRmxvd1Byb2ZpbGVyLnZhbHVlICYmIFJ1bnRpbWVBZ2VudC5lbmFibGVDb250cm9sRmxv
d1Byb2ZpbGVyKQorICAgICAgICBpZiAodGFyZ2V0LlJ1bnRpbWVBZ2VudC5lbmFibGVDb250cm9s
Rmxvd1Byb2ZpbGVyICYmIFdJLnNldHRpbmdzLmVuYWJsZUNvbnRyb2xGbG93UHJvZmlsZXIudmFs
dWUpCiAgICAgICAgICAgICB0YXJnZXQuUnVudGltZUFnZW50LmVuYWJsZUNvbnRyb2xGbG93UHJv
ZmlsZXIoKTsKICAgICB9CiAKQEAgLTEzMSw4ICsxMzEsMTEgQEAgV0kuUnVudGltZU1hbmFnZXIg
PSBjbGFzcyBSdW50aW1lTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgIHsKICAgICAgICAg
Y29uc29sZS5hc3NlcnQocmVtb3RlT2JqZWN0IGluc3RhbmNlb2YgV0kuUmVtb3RlT2JqZWN0KTsK
IAorICAgICAgICBsZXQgdGFyZ2V0ID0gdGhpcy5fYWN0aXZlRXhlY3V0aW9uQ29udGV4dC50YXJn
ZXQ7CisgICAgICAgIGxldCBleGVjdXRpb25Db250ZXh0SWQgPSB0aGlzLl9hY3RpdmVFeGVjdXRp
b25Db250ZXh0LmlkOworCiAgICAgICAgIC8vIENPTVBBVElCSUxJVFkgKGlPUyA4KTogUnVudGlt
ZS5zYXZlUmVzdWx0IGRpZCBub3QgZXhpc3QuCi0gICAgICAgIGlmICghUnVudGltZUFnZW50LnNh
dmVSZXN1bHQpIHsKKyAgICAgICAgaWYgKCF0YXJnZXQuUnVudGltZUFnZW50LnNhdmVSZXN1bHQp
IHsKICAgICAgICAgICAgIGNhbGxiYWNrKHVuZGVmaW5lZCk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KQEAgLTE0Miw5ICsxNDUsNiBAQCBXSS5SdW50aW1lTWFuYWdlciA9IGNsYXNz
IFJ1bnRpbWVNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgICAgICBjYWxsYmFjayhz
YXZlZFJlc3VsdEluZGV4KTsKICAgICAgICAgfQogCi0gICAgICAgIGxldCB0YXJnZXQgPSB0aGlz
Ll9hY3RpdmVFeGVjdXRpb25Db250ZXh0LnRhcmdldDsKLSAgICAgICAgbGV0IGV4ZWN1dGlvbkNv
bnRleHRJZCA9IHRoaXMuX2FjdGl2ZUV4ZWN1dGlvbkNvbnRleHQuaWQ7Ci0KICAgICAgICAgaWYg
KHJlbW90ZU9iamVjdC5vYmplY3RJZCkKICAgICAgICAgICAgIHRhcmdldC5SdW50aW1lQWdlbnQu
c2F2ZVJlc3VsdChyZW1vdGVPYmplY3QuYXNDYWxsQXJndW1lbnQoKSwgbXljYWxsYmFjayk7CiAg
ICAgICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL0NvbnRyb2xsZXJzL1RpbWVsaW5lTWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1RpbWVsaW5lTWFuYWdlci5qcwppbmRleCA5ZWFl
NDViNmIyZi4uMzI4Y2QzZWUyZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1RpbWVsaW5lTWFuYWdlci5qcworKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9UaW1lbGluZU1hbmFnZXIu
anMKQEAgLTcyMyw2ICs3MjMsOCBAQCBXSS5UaW1lbGluZU1hbmFnZXIgPSBjbGFzcyBUaW1lbGlu
ZU1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgICAgICAvLyBDT01QQVRJQklMSVRZIChp
T1MgOSk6IFRpbWVsaW5lLnNldEF1dG9DYXB0dXJlRW5hYmxlZCBkaWQgbm90IGV4aXN0LgogICAg
ICAgICAvLyBQZXJmb3JtIGF1dG8gY2FwdHVyZSBpbiB0aGUgZnJvbnRlbmQuCisgICAgICAgIGlm
ICghd2luZG93LlRpbWVsaW5lQWdlbnQpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgIGlmICghVGltZWxpbmVBZ2VudC5zZXRBdXRvQ2FwdHVyZUVuYWJsZWQpCiAgICAgICAgICAg
ICByZXR1cm4gdGhpcy5fbGVnYWN5QXR0ZW1wdFN0YXJ0QXV0b0NhcHR1cmluZ0ZvckZyYW1lKGZy
YW1lKTsKIApAQCAtMTA2MiwzNCArMTA2NCwzNSBAQCBXSS5UaW1lbGluZU1hbmFnZXIgPSBjbGFz
cyBUaW1lbGluZU1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgIF91cGRhdGVBdXRvQ2Fw
dHVyZUluc3RydW1lbnRzKHRhcmdldHMpCiAgICAgewotICAgICAgICBpZiAoIVRpbWVsaW5lQWdl
bnQuc2V0SW5zdHJ1bWVudHMpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgbGV0IGlu
c3RydW1lbnRTZXQgPSBuZXcgU2V0OwogICAgICAgICBsZXQgZW5hYmxlZFRpbWVsaW5lVHlwZXMg
PSB0aGlzLl9lbmFibGVkVGltZWxpbmVUeXBlc1NldHRpbmcudmFsdWU7CiAKLSAgICAgICAgZm9y
IChsZXQgdGltZWxpbmVUeXBlIG9mIGVuYWJsZWRUaW1lbGluZVR5cGVzKSB7Ci0gICAgICAgICAg
ICBzd2l0Y2ggKHRpbWVsaW5lVHlwZSkgewotICAgICAgICAgICAgY2FzZSBXSS5UaW1lbGluZVJl
Y29yZC5UeXBlLlNjcmlwdDoKLSAgICAgICAgICAgICAgICBpbnN0cnVtZW50U2V0LmFkZChUaW1l
bGluZUFnZW50Lkluc3RydW1lbnQuU2NyaXB0UHJvZmlsZXIpOwotICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgY2FzZSBXSS5UaW1lbGluZVJlY29yZC5UeXBlLkhlYXBBbGxvY2F0
aW9uczoKLSAgICAgICAgICAgICAgICBpbnN0cnVtZW50U2V0LmFkZChUaW1lbGluZUFnZW50Lklu
c3RydW1lbnQuSGVhcCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNl
IFdJLlRpbWVsaW5lUmVjb3JkLlR5cGUuTmV0d29yazoKLSAgICAgICAgICAgIGNhc2UgV0kuVGlt
ZWxpbmVSZWNvcmQuVHlwZS5SZW5kZXJpbmdGcmFtZToKLSAgICAgICAgICAgIGNhc2UgV0kuVGlt
ZWxpbmVSZWNvcmQuVHlwZS5MYXlvdXQ6Ci0gICAgICAgICAgICAgICAgaW5zdHJ1bWVudFNldC5h
ZGQoVGltZWxpbmVBZ2VudC5JbnN0cnVtZW50LlRpbWVsaW5lKTsKLSAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgIGNhc2UgV0kuVGltZWxpbmVSZWNvcmQuVHlwZS5NZW1vcnk6Ci0g
ICAgICAgICAgICAgICAgaW5zdHJ1bWVudFNldC5hZGQoVGltZWxpbmVBZ2VudC5JbnN0cnVtZW50
Lk1lbW9yeSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0KLQogICAgICAgICBmb3IgKGxldCB0YXJnZXQgb2YgdGFyZ2V0cykgewotICAgICAgICAgICAg
aWYgKHRhcmdldC5UaW1lbGluZUFnZW50KQotICAgICAgICAgICAgICAgIHRhcmdldC5UaW1lbGlu
ZUFnZW50LnNldEluc3RydW1lbnRzKFsuLi5pbnN0cnVtZW50U2V0XSk7CisgICAgICAgICAgICBp
ZiAoIXRhcmdldC5UaW1lbGluZUFnZW50KQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICAgICAgaWYgKCF0YXJnZXQuVGltZWxpbmVBZ2VudC5zZXRJbnN0cnVtZW50cykKKyAgICAg
ICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgbGV0IGluc3RydW1lbnRTZXQgPSBu
ZXcgU2V0OworICAgICAgICAgICAgZm9yIChsZXQgdGltZWxpbmVUeXBlIG9mIGVuYWJsZWRUaW1l
bGluZVR5cGVzKSB7CisgICAgICAgICAgICAgICAgc3dpdGNoICh0aW1lbGluZVR5cGUpIHsKKyAg
ICAgICAgICAgICAgICBjYXNlIFdJLlRpbWVsaW5lUmVjb3JkLlR5cGUuU2NyaXB0OgorICAgICAg
ICAgICAgICAgICAgICBpbnN0cnVtZW50U2V0LmFkZCh0YXJnZXQuVGltZWxpbmVBZ2VudC5JbnN0
cnVtZW50LlNjcmlwdFByb2ZpbGVyKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgY2FzZSBXSS5UaW1lbGluZVJlY29yZC5UeXBlLkhlYXBBbGxvY2F0aW9uczoK
KyAgICAgICAgICAgICAgICAgICAgaW5zdHJ1bWVudFNldC5hZGQodGFyZ2V0LlRpbWVsaW5lQWdl
bnQuSW5zdHJ1bWVudC5IZWFwKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgY2FzZSBXSS5UaW1lbGluZVJlY29yZC5UeXBlLk5ldHdvcms6CisgICAgICAgICAg
ICAgICAgY2FzZSBXSS5UaW1lbGluZVJlY29yZC5UeXBlLlJlbmRlcmluZ0ZyYW1lOgorICAgICAg
ICAgICAgICAgIGNhc2UgV0kuVGltZWxpbmVSZWNvcmQuVHlwZS5MYXlvdXQ6CisgICAgICAgICAg
ICAgICAgICAgIGluc3RydW1lbnRTZXQuYWRkKHRhcmdldC5UaW1lbGluZUFnZW50Lkluc3RydW1l
bnQuVGltZWxpbmUpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICBjYXNlIFdJLlRpbWVsaW5lUmVjb3JkLlR5cGUuTWVtb3J5OgorICAgICAgICAgICAgICAgICAg
ICBpbnN0cnVtZW50U2V0LmFkZCh0YXJnZXQuVGltZWxpbmVBZ2VudC5JbnN0cnVtZW50Lk1lbW9y
eSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgdGFyZ2V0LlRpbWVsaW5lQWdlbnQuc2V0SW5zdHJ1bWVu
dHMoQXJyYXkuZnJvbShpbnN0cnVtZW50U2V0KSk7CiAgICAgICAgIH0KICAgICB9CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NTU0Nv
bXBsZXRpb25zLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxz
L0NTU0NvbXBsZXRpb25zLmpzCmluZGV4IDA1ZmI0ZmQyODhlLi4wOWQ2MTA0ODQyMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NTU0NvbXBs
ZXRpb25zLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVs
cy9DU1NDb21wbGV0aW9ucy5qcwpAQCAtMTY3LDcgKzE2Nyw3IEBAIFdJLkNTU0NvbXBsZXRpb25z
ID0gY2xhc3MgQ1NTQ29tcGxldGlvbnMKICAgICAgICAgdGFyZ2V0LkNTU0FnZW50LmdldFN1cHBv
cnRlZENTU1Byb3BlcnRpZXMocHJvcGVydHlOYW1lc0NhbGxiYWNrKTsKIAogICAgICAgICAvLyBD
T01QQVRJQklMSVRZIChpT1MgOSk6IENTUy5nZXRTdXBwb3J0ZWRTeXN0ZW1Gb250RmFtaWx5TmFt
ZXMgZGlkIG5vdCBleGlzdC4KLSAgICAgICAgaWYgKENTU0FnZW50LmdldFN1cHBvcnRlZFN5c3Rl
bUZvbnRGYW1pbHlOYW1lcykKKyAgICAgICAgaWYgKHRhcmdldC5DU1NBZ2VudC5nZXRTdXBwb3J0
ZWRTeXN0ZW1Gb250RmFtaWx5TmFtZXMpCiAgICAgICAgICAgICB0YXJnZXQuQ1NTQWdlbnQuZ2V0
U3VwcG9ydGVkU3lzdGVtRm9udEZhbWlseU5hbWVzKGZvbnRGYW1pbHlOYW1lc0NhbGxiYWNrKTsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L01vZGVscy9DYW52YXMuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9N
b2RlbHMvQ2FudmFzLmpzCmluZGV4IDU2YzI2MWM5YzQyLi5mZWZjMTEyOTZjYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NhbnZhcy5qcwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQ2FudmFzLmpz
CkBAIC0yNzksNyArMjc5LDcgQEAgV0kuQ2FudmFzID0gY2xhc3MgQ2FudmFzIGV4dGVuZHMgV0ku
T2JqZWN0CiAgICAgICAgICAgICB0aGlzLl9yZWNvcmRpbmdTdGF0ZSA9IFdJLkNhbnZhcy5SZWNv
cmRpbmdTdGF0ZS5BY3RpdmVGcm9udGVuZDsKIAogICAgICAgICAgICAgLy8gQ09NUEFUSUJJTElU
WSAoaU9TIDEyLjEpOiBDYW52YXMuZXZlbnQucmVjb3JkaW5nU3RhcnRlZCBkaWQgbm90IGV4aXN0
IHlldAotICAgICAgICAgICAgaWYgKENhbnZhc0FnZW50Lmhhc0V2ZW50KCJyZWNvcmRpbmdTdGFy
dGVkIikpCisgICAgICAgICAgICBpZiAoSW5zcGVjdG9yQmFja2VuZC5kb21haW5zLkNhbnZhcy5o
YXNFdmVudCgicmVjb3JkaW5nU3RhcnRlZCIpKQogICAgICAgICAgICAgICAgIHJldHVybjsKIAog
ICAgICAgICAgICAgdGhpcy5fcmVjb3JkaW5nRnJhbWVzID0gW107CkBAIC0yODksNyArMjg5LDcg
QEAgV0kuQ2FudmFzID0gY2xhc3MgQ2FudmFzIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIH07
CiAKICAgICAgICAgLy8gQ09NUEFUSUJJTElUWSAoaU9TIDEyLjEpOiBgZnJhbWVDb3VudGAgZGlk
IG5vdCBleGlzdCB5ZXQuCi0gICAgICAgIGlmIChDYW52YXNBZ2VudC5zdGFydFJlY29yZGluZy5z
dXBwb3J0cygic2luZ2xlRnJhbWUiKSkgeworICAgICAgICBpZiAoSW5zcGVjdG9yQmFja2VuZC5k
b21haW5zLkNhbnZhcy5zdGFydFJlY29yZGluZy5zdXBwb3J0cygic2luZ2xlRnJhbWUiKSkgewog
ICAgICAgICAgICAgQ2FudmFzQWdlbnQuc3RhcnRSZWNvcmRpbmcodGhpcy5faWRlbnRpZmllciwg
c2luZ2xlRnJhbWUsIGhhbmRsZVN0YXJ0UmVjb3JkaW5nKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQpAQCAtMzc2LDcgKzM3Niw3IEBAIFdJLkNhbnZhcyA9IGNsYXNzIENhbnZhcyBl
eHRlbmRzIFdJLk9iamVjdAogICAgICAgICBsZXQgaW5pdGlhdGVkQnlVc2VyID0gdGhpcy5fcmVj
b3JkaW5nU3RhdGUgPT09IFdJLkNhbnZhcy5SZWNvcmRpbmdTdGF0ZS5BY3RpdmVGcm9udGVuZDsK
IAogICAgICAgICAvLyBDT01QQVRJQklMSVRZIChpT1MgMTIuMSk6IENhbnZhcy5ldmVudC5yZWNv
cmRpbmdTdGFydGVkIGRpZCBub3QgZXhpc3QgeWV0Ci0gICAgICAgIGlmICghaW5pdGlhdGVkQnlV
c2VyICYmICFDYW52YXNBZ2VudC5oYXNFdmVudCgicmVjb3JkaW5nU3RhcnRlZCIpKQorICAgICAg
ICBpZiAoIWluaXRpYXRlZEJ5VXNlciAmJiAhSW5zcGVjdG9yQmFja2VuZC5kb21haW5zLkNhbnZh
cy5oYXNFdmVudCgicmVjb3JkaW5nU3RhcnRlZCIpKQogICAgICAgICAgICAgaW5pdGlhdGVkQnlV
c2VyID0gISF0aGlzLnJlY29yZGluZ0FjdGl2ZTsKIAogICAgICAgICBsZXQgcmVjb3JkaW5nID0g
cmVjb3JkaW5nUGF5bG9hZCA/IFdJLlJlY29yZGluZy5mcm9tUGF5bG9hZChyZWNvcmRpbmdQYXls
b2FkLCB0aGlzLl9yZWNvcmRpbmdGcmFtZXMpIDogbnVsbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9TY3JpcHRTeW50YXhUcmVlLmpzIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1NjcmlwdFN5bnRheFRy
ZWUuanMKaW5kZXggOGI3N2MzYTc2MjQuLmEzMWVlYzUyNWFlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvU2NyaXB0U3ludGF4VHJlZS5qcwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvU2NyaXB0U3lu
dGF4VHJlZS5qcwpAQCAtMTc0LDkgKzE3NCw4IEBAIFdJLlNjcmlwdFN5bnRheFRyZWUgPSBjbGFz
cyBTY3JpcHRTeW50YXhUcmVlCiAKICAgICAgICAgLy8gQ09NUEFUSUJJTElUWSAoaU9TIDkpOiBM
ZWdhY3kgQmFja2VuZHMgdmlldyB0aGUgcmV0dXJuIHR5cGUgYXMgYmVpbmcgdGhlIG9wZW5pbmcg
InsiIG9mIHRoZSBmdW5jdGlvbiBib2R5LgogICAgICAgICAvLyBBZnRlciBpT1MgOSwgdGhpcyBp
cyB0byBtb3ZlIHRvIHRoZSBzdGFydCBvZiB0aGUgZnVuY3Rpb24gc3RhdGVtZW50L2V4cHJlc3Np
b24uIFNlZSBiZWxvdzoKLSAgICAgICAgLy8gRklYTUU6IE5lZWQgYSBiZXR0ZXIgd2F5IHRvIGRl
dGVybWluZSBiYWNrZW5kIHZlcnNpb25zLiBVc2luZyBET00ucHNldWRvRWxlbWVudCBiZWNhdXNl
IHRoYXQgd2FzIGFkZGVkIGFmdGVyIGlPUyA5LgotICAgICAgICAvLyBGSVhNRTogVGhpcyB3b3Vs
ZG4ndCB3b3JrIGZvciBkZWJ1Z2dpbmcgYW4gaU9TIDkgb3IgZWFybGllciBKU0NvbnRleHQgdGFy
Z2V0LgotICAgICAgICBpZiAod2luZG93LkRPTUFnZW50ICYmICFET01BZ2VudC5oYXNFdmVudCgi
cHNldWRvRWxlbWVudEFkZGVkIikpCisgICAgICAgIC8vIFVzaW5nIERPTS5wc2V1ZG9FbGVtZW50
IGJlY2F1c2UgdGhhdCB3YXMgYWRkZWQgYWZ0ZXIgaU9TIDkuCisgICAgICAgIGlmICghSW5zcGVj
dG9yQmFja2VuZC5kb21haW5zLkRPTS5oYXNFdmVudCgicHNldWRvRWxlbWVudEFkZGVkIikpCiAg
ICAgICAgICAgICByZXR1cm4gbm9kZS5ib2R5LnJhbmdlWzBdOwogCiAgICAgICAgIC8vICJmIiBp
biAiZnVuY3Rpb24iLiAicyIgaW4gInNldCIuICJnIiBpbiAiZ2V0Ii4gRmlyc3QgbGV0dGVyIGlu
IGFueSBtZXRob2QgbmFtZSBmb3IgY2xhc3NlcyBhbmQgb2JqZWN0IGxpdGVyYWxzLgpAQCAtMTg2
LDcgKzE4NSw3IEBAIFdJLlNjcmlwdFN5bnRheFRyZWUgPSBjbGFzcyBTY3JpcHRTeW50YXhUcmVl
CiAKICAgICB1cGRhdGVUeXBlcyhub2Rlc1RvVXBkYXRlLCBjYWxsYmFjaykKICAgICB7Ci0gICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KFJ1bnRpbWVBZ2VudC5nZXRSdW50aW1lVHlwZXNGb3JWYXJpYWJs
ZXNBdE9mZnNldHMpOworICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9zY3JpcHQudGFyZ2V0
LlJ1bnRpbWVBZ2VudC5nZXRSdW50aW1lVHlwZXNGb3JWYXJpYWJsZXNBdE9mZnNldHMpOwogICAg
ICAgICBjb25zb2xlLmFzc2VydChBcnJheS5pc0FycmF5KG5vZGVzVG9VcGRhdGUpICYmIHRoaXMu
X3BhcnNlZFN1Y2Nlc3NmdWxseSk7CiAKICAgICAgICAgaWYgKCF0aGlzLl9wYXJzZWRTdWNjZXNz
ZnVsbHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Q
cm90b2NvbC9EZWJ1Z2dlck9ic2VydmVyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvUHJvdG9jb2wvRGVidWdnZXJPYnNlcnZlci5qcwppbmRleCA2MDAyNzM4MmY2Yi4u
M2Y1YmM4YjQwNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1Byb3RvY29sL0RlYnVnZ2VyT2JzZXJ2ZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvRGVidWdnZXJPYnNlcnZlci5qcwpAQCAtMjcsNyAr
MjcsNyBAQCBXSS5EZWJ1Z2dlck9ic2VydmVyID0gY2xhc3MgRGVidWdnZXJPYnNlcnZlcgogewog
ICAgIGNvbnN0cnVjdG9yKCkKICAgICB7Ci0gICAgICAgIHRoaXMuX2xlZ2FjeVNjcmlwdFBhcnNl
ZCA9IERlYnVnZ2VyQWdlbnQuaGFzRXZlbnRQYXJhbWV0ZXIoInNjcmlwdFBhcnNlZCIsICJoYXNT
b3VyY2VVUkwiKTsKKyAgICAgICAgdGhpcy5fbGVnYWN5U2NyaXB0UGFyc2VkID0gSW5zcGVjdG9y
QmFja2VuZC5kb21haW5zLkRlYnVnZ2VyLmhhc0V2ZW50UGFyYW1ldGVyKCJzY3JpcHRQYXJzZWQi
LCAiaGFzU291cmNlVVJMIik7CiAgICAgfQogCiAgICAgLy8gRXZlbnRzIGRlZmluZWQgYnkgdGhl
ICJEZWJ1Z2dlciIgZG9tYWluLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5zcGVjdG9yQmFja2VuZC5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0luc3BlY3RvckJhY2tlbmQuanMKaW5kZXgg
NzljYThlZDAwNTkuLjQ5ZWM5YjcxM2MyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9JbnNwZWN0b3JCYWNrZW5kLmpzCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0luc3BlY3RvckJhY2tlbmQu
anMKQEAgLTU4LDYgKzU4LDEzIEBAIEluc3BlY3RvckJhY2tlbmRDbGFzcyA9IGNsYXNzIEluc3Bl
Y3RvckJhY2tlbmRDbGFzcwogCiAgICAgLy8gUHVibGljCiAKKyAgICAvLyBUaGlzIHNob3VsZCBi
ZSB1c2VkIGZvciBmZWF0dXJlIGNoZWNraW5nIGlmIHNvbWV0aGluZyBleGlzdHMgaW4gdGhlIHBy
b3RvY29sCisgICAgLy8gcmVnYXJkbGVzcyBvZiB3aGV0aGVyIG9yIG5vdCB0aGUgZG9tYWluIGlz
IGFjdGl2ZSBmb3IgYSBzcGVjaWZpYyB0YXJnZXQuCisgICAgZ2V0IGRvbWFpbnMoKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIHRoaXMuX2FnZW50czsKKyAgICB9CisKICAgICAvLyBJdCdzIHN0aWxs
IHBvc3NpYmxlIHRvIHNldCB0aGlzIGZsYWcgb24gSW5zcGVjdG9yQmFja2VuZCB0byBqdXN0CiAg
ICAgLy8gZHVtcCBwcm90b2NvbCB0cmFmZmljIGFzIGl0IGhhcHBlbnMuIEZvciBtb3JlIGNvbXBs
ZXggdXNlcyBvZgogICAgIC8vIHByb3RvY29sIGRhdGEsIGluc3RhbGwgYSBzdWJjbGFzcyBvZiBX
SS5Qcm90b2NvbFRyYWNlci4KQEAgLTE2NSw2ICsxNzIsMTAgQEAgSW5zcGVjdG9yQmFja2VuZENs
YXNzID0gY2xhc3MgSW5zcGVjdG9yQmFja2VuZENsYXNzCiAgICAgICAgIGZvciAobGV0IGRlYnVn
Z2FibGVUeXBlIG9mIHN1cHBvcnRlZERlYnVnZ2FibGVUeXBlcykKICAgICAgICAgICAgIHRoaXMu
X3N1cHBvcnRlZERvbWFpbnNGb3JEZWJ1Z2dhYmxlVHlwZS5nZXQoZGVidWdnYWJsZVR5cGUpLnB1
c2goZG9tYWluTmFtZSk7CiAKKyAgICAgICAgLy8gRklYTUU6IEZvciBwcm9wZXIgbXVsdGktdGFy
Z2V0IHN1cHBvcnQgd2Ugc2hvdWxkIGVsaW1pbmF0ZSBhbGwgdXNlcyBvZgorICAgICAgICAvLyBg
d2luZG93LkZvb0FnZW50YCBhbmQgYHVucHJlZml4ZWQgRm9vQWdlbnRgIGluIGZhdm9yIG9mIGVp
dGhlcjoKKyAgICAgICAgLy8gICAtIFBlci10YXJnZXQ6IGB0YXJnZXQuRm9vQWdlbnRgCisgICAg
ICAgIC8vICAgLSBHbG9iYWwgZmVhdHVyZSBjaGVjazogYEluc3BlY3RvckJhY2tlbmQuZG9tYWlu
cy5Gb29gCiAgICAgICAgIGlmICghYWN0aXZhdGlvbkRlYnVnZ2FibGVUeXBlcyB8fCBhY3RpdmF0
aW9uRGVidWdnYWJsZVR5cGVzLmluY2x1ZGVzKEluc3BlY3RvckZyb250ZW5kSG9zdC5kZWJ1Z2dh
YmxlVHlwZSgpKSkgewogICAgICAgICAgICAgbGV0IGFnZW50ID0gdGhpcy5fYWdlbnRzW2RvbWFp
bk5hbWVdOwogICAgICAgICAgICAgYWdlbnQuYWN0aXZhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL05ldHdvcmtPYnNlcnZlci5q
cyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL05ldHdvcmtP
YnNlcnZlci5qcwppbmRleCBhM2M4Njk2YTI4ZS4uZTkyNzg4ODE1NDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL05ldHdvcmtPYnNlcnZl
ci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9O
ZXR3b3JrT2JzZXJ2ZXIuanMKQEAgLTMwLDcgKzMwLDcgQEAgV0kuTmV0d29ya09ic2VydmVyID0g
Y2xhc3MgTmV0d29ya09ic2VydmVyCiAgICAgcmVxdWVzdFdpbGxCZVNlbnQocmVxdWVzdElkLCBm
cmFtZUlkLCBsb2FkZXJJZCwgZG9jdW1lbnRVUkwsIHJlcXVlc3QsIHRpbWVzdGFtcCwgd2FsbHRp
bWUsIGluaXRpYXRvciwgcmVkaXJlY3RSZXNwb25zZSwgdHlwZSwgdGFyZ2V0SWQpCiAgICAgewog
ICAgICAgICAvLyBDT01QQVRJQklMSVRZKGlPUyAxMS4wKTogYHdhbGx0aW1lYCBkaWQgbm90IGV4
aXN0IGluIDExLjAgYW5kIGVhcmxpZXIuCi0gICAgICAgIGlmICghTmV0d29ya0FnZW50Lmhhc0V2
ZW50UGFyYW1ldGVyKCJyZXF1ZXN0V2lsbEJlU2VudCIsICJ3YWxsdGltZSIpKSB7CisgICAgICAg
IGlmICghSW5zcGVjdG9yQmFja2VuZC5kb21haW5zLk5ldHdvcmsuaGFzRXZlbnRQYXJhbWV0ZXIo
InJlcXVlc3RXaWxsQmVTZW50IiwgIndhbGx0aW1lIikpIHsKICAgICAgICAgICAgIHdhbGx0aW1l
ID0gdW5kZWZpbmVkOwogICAgICAgICAgICAgaW5pdGlhdG9yID0gYXJndW1lbnRzWzZdOwogICAg
ICAgICAgICAgcmVkaXJlY3RSZXNwb25zZSA9IGFyZ3VtZW50c1s3XTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL1JlbW90ZU9iamVjdC5q
cyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL1JlbW90ZU9i
amVjdC5qcwppbmRleCAxYzhkYWM3N2QwZi4uMTYwY2M3ZWIyMzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL1JlbW90ZU9iamVjdC5qcwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9SZW1vdGVP
YmplY3QuanMKQEAgLTI0NSw3ICsyNDUsNyBAQCBXSS5SZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1v
dGVPYmplY3QKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGlmICgh
UnVudGltZUFnZW50LmdldFByZXZpZXcpIHsKKyAgICAgICAgaWYgKCF0aGlzLl90YXJnZXQuUnVu
dGltZUFnZW50LmdldFByZXZpZXcpIHsKICAgICAgICAgICAgIHRoaXMuX2ZhaWxlZFRvTG9hZFBy
ZXZpZXcgPSB0cnVlOwogICAgICAgICAgICAgY2FsbGJhY2sobnVsbCk7CiAgICAgICAgICAgICBy
ZXR1cm47CkBAIC0yODIsNyArMjgyLDcgQEAgV0kuUmVtb3RlT2JqZWN0ID0gY2xhc3MgUmVtb3Rl
T2JqZWN0CiAKICAgICAgICAgLy8gQ09NUEFUSUJJTElUWSAoaU9TIDgpOiBSdW50aW1lQWdlbnQu
Z2V0RGlzcGxheWFibGVQcm9wZXJ0aWVzIGRpZCBub3QgZXhpc3QuCiAgICAgICAgIC8vIEhlcmUg
d2UgZG8gb3VyIGJlc3QgdG8gcmVpbXBsZW1lbnQgaXQgYnkgZ2V0dGluZyBhbGwgcHJvcGVydGll
cyBhbmQgcmVkdWNpbmcgdGhlbSBkb3duLgotICAgICAgICBpZiAoIVJ1bnRpbWVBZ2VudC5nZXRE
aXNwbGF5YWJsZVByb3BlcnRpZXMpIHsKKyAgICAgICAgaWYgKCF0aGlzLl90YXJnZXQuUnVudGlt
ZUFnZW50LmdldERpc3BsYXlhYmxlUHJvcGVydGllcykgewogICAgICAgICAgICAgdGhpcy5fdGFy
Z2V0LlJ1bnRpbWVBZ2VudC5nZXRQcm9wZXJ0aWVzKHRoaXMuX29iamVjdElkLCBmdW5jdGlvbihl
cnJvciwgYWxsUHJvcGVydGllcykgewogICAgICAgICAgICAgICAgIHZhciBvd25PckdldHRlclBy
b3BlcnRpZXNMaXN0ID0gW107CiAgICAgICAgICAgICAgICAgaWYgKGFsbFByb3BlcnRpZXMpIHsK
QEAgLTMyOSw3ICszMjksNyBAQCBXSS5SZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1vdGVPYmplY3QK
IAogICAgICAgICAvLyBDT01QQVRJQklMSVRZIChpT1MgOCk6IFJ1bnRpbWVBZ2VudC5nZXRQcm9w
ZXJ0aWVzIGRpZCBub3Qgc3VwcG9ydCBvd25lckFuZEdldHRlclByb3BlcnRpZXMuCiAgICAgICAg
IC8vIEhlcmUgd2UgZG8gb3VyIGJlc3QgdG8gcmVpbXBsZW1lbnQgaXQgYnkgZ2V0dGluZyBhbGwg
cHJvcGVydGllcyBhbmQgcmVkdWNpbmcgdGhlbSBkb3duLgotICAgICAgICBpZiAoIVJ1bnRpbWVB
Z2VudC5nZXREaXNwbGF5YWJsZVByb3BlcnRpZXMpIHsKKyAgICAgICAgaWYgKCF0aGlzLl90YXJn
ZXQuUnVudGltZUFnZW50LmdldERpc3BsYXlhYmxlUHJvcGVydGllcykgewogICAgICAgICAgICAg
dGhpcy5fdGFyZ2V0LlJ1bnRpbWVBZ2VudC5nZXRQcm9wZXJ0aWVzKHRoaXMuX29iamVjdElkLCBm
dW5jdGlvbihlcnJvciwgYWxsUHJvcGVydGllcykgewogICAgICAgICAgICAgICAgIHZhciBvd25P
ckdldHRlclByb3BlcnRpZXNMaXN0ID0gW107CiAgICAgICAgICAgICAgICAgaWYgKGFsbFByb3Bl
cnRpZXMpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1Byb3RvY29sL1RhcmdldC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1Byb3RvY29sL1RhcmdldC5qcwppbmRleCBiZDllOTY4NDc2NS4uMzM4MmM2M2I1YmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL1Rhcmdl
dC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9U
YXJnZXQuanMKQEAgLTcyLDcgKzcyLDcgQEAgV0kuVGFyZ2V0ID0gY2xhc3MgVGFyZ2V0IGV4dGVu
ZHMgV0kuT2JqZWN0CiAgICAgICAgIC8vIE5vbi1tYW5hZ2VyIHNwZWNpZmljIGluaXRpYWxpemF0
aW9uLgogICAgICAgICAvLyBDT01QQVRJQklMSVRZIChpT1MgOCk6IFBhZ2Uuc2V0U2hvd1BhaW50
UmVjdHMgZGlkIG5vdCBleGlzdC4KICAgICAgICAgaWYgKHRoaXMuUGFnZUFnZW50KSB7Ci0gICAg
ICAgICAgICBpZiAoUGFnZUFnZW50LnNldFNob3dQYWludFJlY3RzICYmIFdJLnNldHRpbmdzLnNo
b3dQYWludFJlY3RzLnZhbHVlKQorICAgICAgICAgICAgaWYgKHRoaXMuUGFnZUFnZW50LnNldFNo
b3dQYWludFJlY3RzICYmIFdJLnNldHRpbmdzLnNob3dQYWludFJlY3RzLnZhbHVlKQogICAgICAg
ICAgICAgICAgIHRoaXMuUGFnZUFnZW50LnNldFNob3dQYWludFJlY3RzKHRydWUpOwogICAgICAg
ICB9CiAKQEAgLTkyLDcgKzkyLDcgQEAgV0kuVGFyZ2V0ID0gY2xhc3MgVGFyZ2V0IGV4dGVuZHMg
V0kuT2JqZWN0CiAgICAgICAgICAgICAvLyBUaGlzIGFsbG93cyBhbiBhdXRvbWF0aWNhbGx5IHBh
dXNlZCBiYWNrZW5kIHRvIHJlc3VtZSBleGVjdXRpb24sIGJ1dCB3ZSB3YW50IHRvIGVuc3VyZQog
ICAgICAgICAgICAgLy8gb3VyIGJyZWFrcG9pbnRzIHdlcmUgYWxyZWFkeSBzZW50IHRvIHRoYXQg
YmFja2VuZC4KICAgICAgICAgICAgIC8vIENPTVBBVElCSUxJVFkgKGlPUyA4KTogSW5zcGVjdG9y
LmluaXRpYWxpemVkIGRpZCBub3QgZXhpc3QgeWV0LgotICAgICAgICAgICAgaWYgKHRoaXMuSW5z
cGVjdG9yQWdlbnQgJiYgSW5zcGVjdG9yQWdlbnQuaW5pdGlhbGl6ZWQpCisgICAgICAgICAgICBp
ZiAodGhpcy5JbnNwZWN0b3JBZ2VudCAmJiB0aGlzLkluc3BlY3RvckFnZW50LmluaXRpYWxpemVk
KQogICAgICAgICAgICAgICAgIHRoaXMuSW5zcGVjdG9yQWdlbnQuaW5pdGlhbGl6ZWQoKTsKICAg
ICAgICAgfSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvQnJlYWtwb2ludEFjdGlvblZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9CcmVha3BvaW50QWN0aW9uVmlldy5qcwppbmRleCA5
M2FhMDhhN2RmOS4uODZlMjYwYTQ5MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0JyZWFrcG9pbnRBY3Rpb25WaWV3LmpzCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0JyZWFrcG9pbnRBY3Rpb25WaWV3
LmpzCkBAIC0zMSw3ICszMSw2IEBAIFdJLkJyZWFrcG9pbnRBY3Rpb25WaWV3ID0gY2xhc3MgQnJl
YWtwb2ludEFjdGlvblZpZXcgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgICAgICBjb25zb2xlLmFz
c2VydChhY3Rpb24pOwogICAgICAgICBjb25zb2xlLmFzc2VydChkZWxlZ2F0ZSk7Ci0gICAgICAg
IGNvbnNvbGUuYXNzZXJ0KERlYnVnZ2VyQWdlbnQuQnJlYWtwb2ludEFjdGlvblR5cGUpOwogCiAg
ICAgICAgIHRoaXMuX2FjdGlvbiA9IGFjdGlvbjsKICAgICAgICAgdGhpcy5fZGVsZWdhdGUgPSBk
ZWxlZ2F0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL0NvbnRleHRNZW51VXRpbGl0aWVzLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvQ29udGV4dE1lbnVVdGlsaXRpZXMuanMKaW5kZXggMDUwMGY1MTRh
YWIuLmQzNjZhNzZhMWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9Db250ZXh0TWVudVV0aWxpdGllcy5qcworKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250ZXh0TWVudVV0aWxpdGllcy5qcwpAQCAt
MTY4LDE2ICsxNjgsMTQgQEAgV0kuYXBwZW5kQ29udGV4dE1lbnVJdGVtc0ZvckRPTU5vZGUgPSBm
dW5jdGlvbihjb250ZXh0TWVudSwgZG9tTm9kZSwgb3B0aW9ucyA9IHsKICAgICAgICAgICAgICAg
ICB9KTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgZnVuY3Rpb24gZGlkR2V0UHJvcGVy
dHkoZXJyb3IsIHJlc3VsdCwgd2FzVGhyb3duKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGVycm9y
IHx8IHJlc3VsdC50eXBlICE9PSAiZnVuY3Rpb24iKQotICAgICAgICAgICAgICAgICAgICByZXR1
cm47Ci0KLSAgICAgICAgICAgICAgICBEZWJ1Z2dlckFnZW50LmdldEZ1bmN0aW9uRGV0YWlscyhy
ZXN1bHQub2JqZWN0SWQsIGRpZEdldEZ1bmN0aW9uRGV0YWlscyk7Ci0gICAgICAgICAgICAgICAg
cmVzdWx0LnJlbGVhc2UoKTsKLSAgICAgICAgICAgIH0KLQogICAgICAgICAgICAgV0kuUmVtb3Rl
T2JqZWN0LnJlc29sdmVOb2RlKGRvbU5vZGUpLnRoZW4oKHJlbW90ZU9iamVjdCkgPT4gewotICAg
ICAgICAgICAgICAgIHJlbW90ZU9iamVjdC5nZXRQcm9wZXJ0eSgiY29uc3RydWN0b3IiLCBkaWRH
ZXRQcm9wZXJ0eSk7CisgICAgICAgICAgICAgICAgcmVtb3RlT2JqZWN0LmdldFByb3BlcnR5KCJj
b25zdHJ1Y3RvciIsIChlcnJvciwgcmVzdWx0LCB3YXNUaHJvd24pID0+IHsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKGVycm9yKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgICAgICAgICBpZiAocmVzdWx0LnR5cGUgPT09ICJmdW5jdGlvbiIpCisgICAgICAg
ICAgICAgICAgICAgICAgICByZW1vdGVPYmplY3QudGFyZ2V0LkRlYnVnZ2VyQWdlbnQuZ2V0RnVu
Y3Rpb25EZXRhaWxzKHJlc3VsdC5vYmplY3RJZCwgZGlkR2V0RnVuY3Rpb25EZXRhaWxzKTsKKyAg
ICAgICAgICAgICAgICAgICAgcmVzdWx0LnJlbGVhc2UoKTsKKyAgICAgICAgICAgICAgICB9KTsK
ICAgICAgICAgICAgICAgICByZW1vdGVPYmplY3QucmVsZWFzZSgpOwogICAgICAgICAgICAgfSk7
CiAgICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvRE9NVHJlZUNvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZUNvbnRlbnRWaWV3LmpzCmluZGV4IDE1MjkyZjI1
MDlmLi4yZGQ5MTk0NmVhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvRE9NVHJlZUNvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVDb250ZW50Vmlldy5qcwpAQCAtMTAx
LDcgKzEwMSw3IEBAIFdJLkRPTVRyZWVDb250ZW50VmlldyA9IGNsYXNzIERPTVRyZWVDb250ZW50
VmlldyBleHRlbmRzIFdJLkNvbnRlbnRWaWV3CiAgICAgICAgIGxldCBpdGVtcyA9IFt0aGlzLl9z
aG93UHJpbnRTdHlsZXNCdXR0b25OYXZpZ2F0aW9uSXRlbSwgdGhpcy5fc2hvd3NTaGFkb3dET01C
dXR0b25OYXZpZ2F0aW9uSXRlbV07CiAKICAgICAgICAgLy8gQ09NUEFUSUJJTElUWSAoaU9TIDEx
LjMpCi0gICAgICAgIGlmIChQYWdlQWdlbnQuc2V0U2hvd1J1bGVycykKKyAgICAgICAgaWYgKHdp
bmRvdy5QYWdlQWdlbnQgJiYgUGFnZUFnZW50LnNldFNob3dSdWxlcnMpCiAgICAgICAgICAgICBp
dGVtcy51bnNoaWZ0KHRoaXMuX3Nob3dSdWxlcnNCdXR0b25OYXZpZ2F0aW9uSXRlbSk7CiAKICAg
ICAgICAgaWYgKCFXSS5zZXR0aW5ncy5leHBlcmltZW50YWxFbmFibGVMYXllcnNUYWIudmFsdWUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9E
ZWJ1Z2dlclNpZGViYXJQYW5lbC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0RlYnVnZ2VyU2lkZWJhclBhbmVsLmpzCmluZGV4IDQzODBkY2Y5ZWUzLi5mZGJl
OGI4NzNiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvRGVidWdnZXJTaWRlYmFyUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvRGVidWdnZXJTaWRlYmFyUGFuZWwuanMKQEAgLTIxMiw3ICsy
MTIsNyBAQCBXSS5EZWJ1Z2dlclNpZGViYXJQYW5lbCA9IGNsYXNzIERlYnVnZ2VyU2lkZWJhclBh
bmVsIGV4dGVuZHMgV0kuTmF2aWdhdGlvblNpZGViYQogICAgICAgICBXSS5kZWJ1Z2dlck1hbmFn
ZXIuYWRkQnJlYWtwb2ludChXSS5kZWJ1Z2dlck1hbmFnZXIudW5jYXVnaHRFeGNlcHRpb25zQnJl
YWtwb2ludCk7CiAKICAgICAgICAgLy8gQ09NUEFUSUJJTElUWSAoaU9TIDEwKTogRGVidWdnZXJB
Z2VudC5zZXRQYXVzZU9uQXNzZXJ0aW9ucyBkaWQgbm90IGV4aXN0IHlldC4KLSAgICAgICAgaWYg
KERlYnVnZ2VyQWdlbnQuc2V0UGF1c2VPbkFzc2VydGlvbnMgJiYgV0kuc2V0dGluZ3Muc2hvd0Fz
c2VydGlvbkZhaWx1cmVzQnJlYWtwb2ludC52YWx1ZSkKKyAgICAgICAgaWYgKEluc3BlY3RvckJh
Y2tlbmQuZG9tYWlucy5EZWJ1Z2dlci5zZXRQYXVzZU9uQXNzZXJ0aW9ucyAmJiBXSS5zZXR0aW5n
cy5zaG93QXNzZXJ0aW9uRmFpbHVyZXNCcmVha3BvaW50LnZhbHVlKQogICAgICAgICAgICAgV0ku
ZGVidWdnZXJNYW5hZ2VyLmFkZEJyZWFrcG9pbnQoV0kuZGVidWdnZXJNYW5hZ2VyLmFzc2VydGlv
bkZhaWx1cmVzQnJlYWtwb2ludCk7CiAKICAgICAgICAgaWYgKFdJLm5ldHdvcmtNYW5hZ2VyLm1h
aW5GcmFtZSkKQEAgLTEzNzcsNyArMTM3Nyw3IEBAIFdJLkRlYnVnZ2VyU2lkZWJhclBhbmVsID0g
Y2xhc3MgRGVidWdnZXJTaWRlYmFyUGFuZWwgZXh0ZW5kcyBXSS5OYXZpZ2F0aW9uU2lkZWJhCiAg
ICAgICAgIGxldCBjb250ZXh0TWVudSA9IFdJLkNvbnRleHRNZW51LmNyZWF0ZUZyb21FdmVudChl
dmVudC5kYXRhLm5hdGl2ZUV2ZW50KTsKIAogICAgICAgICAvLyBDT01QQVRJQklMSVRZIChpT1Mg
MTApOiBEZWJ1Z2dlckFnZW50LnNldFBhdXNlT25Bc3NlcnRpb25zIGRpZCBub3QgZXhpc3QgeWV0
LgotICAgICAgICBpZiAoRGVidWdnZXJBZ2VudC5zZXRQYXVzZU9uQXNzZXJ0aW9ucykgeworICAg
ICAgICBpZiAoSW5zcGVjdG9yQmFja2VuZC5kb21haW5zLkRlYnVnZ2VyLnNldFBhdXNlT25Bc3Nl
cnRpb25zKSB7CiAgICAgICAgICAgICBsZXQgYXNzZXJ0aW9uRmFpbHVyZXNCcmVha3BvaW50U2hv
d24gPSBXSS5zZXR0aW5ncy5zaG93QXNzZXJ0aW9uRmFpbHVyZXNCcmVha3BvaW50LnZhbHVlOwog
CiAgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRDaGVja2JveEl0ZW0oV0kuVUlTdHJpbmco
IkFzc2VydGlvbiBGYWlsdXJlcyIpLCAoKSA9PiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Mb2dDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0xvZ0NvbnRlbnRWaWV3LmpzCmluZGV4
IDEzNzJmZjE3MTk1Li42NDgwODE4NjEyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTG9nQ29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTG9nQ29udGVudFZpZXcuanMKQEAgLTEy
OCw3ICsxMjgsNyBAQCBXSS5Mb2dDb250ZW50VmlldyA9IGNsYXNzIExvZ0NvbnRlbnRWaWV3IGV4
dGVuZHMgV0kuQ29udGVudFZpZXcKICAgICAgICAgaWYgKHRoaXMuX2hhc05vbkRlZmF1bHRMb2dD
aGFubmVsTWVzc2FnZSAmJiB0aGlzLl9tZXNzYWdlU291cmNlQmFyKQogICAgICAgICAgICAgbmF2
aWdhdGlvbkl0ZW1zLnB1c2godGhpcy5fbWVzc2FnZVNvdXJjZUJhciwgbmV3IFdJLkRpdmlkZXJO
YXZpZ2F0aW9uSXRlbSk7CiAKLSAgICAgICAgaWYgKEhlYXBBZ2VudC5nYykKKyAgICAgICAgaWYg
KHdpbmRvdy5IZWFwQWdlbnQgJiYgSGVhcEFnZW50LmdjKQogICAgICAgICAgICAgbmF2aWdhdGlv
bkl0ZW1zLnB1c2godGhpcy5fZ2FyYmFnZUNvbGxlY3ROYXZpZ2F0aW9uSXRlbSk7CiAKICAgICAg
ICAgbmF2aWdhdGlvbkl0ZW1zLnB1c2godGhpcy5fY2xlYXJMb2dOYXZpZ2F0aW9uSXRlbSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9OZXR3
b3JrVGltZWxpbmVWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvTmV0d29ya1RpbWVsaW5lVmlldy5qcwppbmRleCAyYmNlNzZlMGY0Zi4uZjY1YTQ5NWNm
YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L05ldHdvcmtUaW1lbGluZVZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvTmV0d29ya1RpbWVsaW5lVmlldy5qcwpAQCAtMTE0LDcgKzExNCw3IEBA
IFdJLk5ldHdvcmtUaW1lbGluZVZpZXcgPSBjbGFzcyBOZXR3b3JrVGltZWxpbmVWaWV3IGV4dGVu
ZHMgV0kuVGltZWxpbmVWaWV3CiAgICAgICAgIGNvbHVtbnMuZ3JhcGguc29ydGFibGUgPSBmYWxz
ZTsKIAogICAgICAgICAvLyBDT01QQVRJQklMSVRZKGlPUyAxMC4zKTogTmV0d29yayBsb2FkIG1l
dHJpY3Mgd2VyZSBub3QgcHJldmlvdXNseSBhdmFpbGFibGUuCi0gICAgICAgIGlmICghTmV0d29y
a0FnZW50Lmhhc0V2ZW50UGFyYW1ldGVyKCJsb2FkaW5nRmluaXNoZWQiLCAibWV0cmljcyIpKSB7
CisgICAgICAgIGlmICghSW5zcGVjdG9yQmFja2VuZC5kb21haW5zLk5ldHdvcmsuaGFzRXZlbnRQ
YXJhbWV0ZXIoImxvYWRpbmdGaW5pc2hlZCIsICJtZXRyaWNzIikpIHsKICAgICAgICAgICAgIGRl
bGV0ZSBjb2x1bW5zLnByb3RvY29sOwogICAgICAgICAgICAgZGVsZXRlIGNvbHVtbnMucHJpb3Jp
dHk7CiAgICAgICAgICAgICBkZWxldGUgY29sdW1ucy5yZW1vdGVBZGRyZXNzOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VEZXRh
aWxzU2lkZWJhclBhbmVsLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvUmVzb3VyY2VEZXRhaWxzU2lkZWJhclBhbmVsLmpzCmluZGV4IGM3ZmRkOGE0ZDNmLi5k
NmFlY2Y0N2M5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvUmVzb3VyY2VEZXRhaWxzU2lkZWJhclBhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlRGV0YWlsc1NpZGViYXJQYW5l
bC5qcwpAQCAtMzU2LDcgKzM1Niw3IEBAIFdJLlJlc291cmNlRGV0YWlsc1NpZGViYXJQYW5lbCA9
IGNsYXNzIFJlc291cmNlRGV0YWlsc1NpZGViYXJQYW5lbCBleHRlbmRzIFdJLkRlCiAgICAgICAg
IHRoaXMuX3JlcXVlc3RNZXRob2RSb3cudmFsdWUgPSB0aGlzLl9yZXNvdXJjZS5yZXF1ZXN0TWV0
aG9kIHx8IGVtRGFzaDsKIAogICAgICAgICAvLyBDT01QQVRJQklMSVRZKGlPUyAxMC4zKTogTmV0
d29yayBsb2FkIG1ldHJpY3Mgd2VyZSBub3QgcHJldmlvdXNseSBhdmFpbGFibGUuCi0gICAgICAg
IGlmICh3aW5kb3cuTmV0d29ya0FnZW50ICYmIE5ldHdvcmtBZ2VudC5oYXNFdmVudFBhcmFtZXRl
cigibG9hZGluZ0ZpbmlzaGVkIiwgIm1ldHJpY3MiKSkgeworICAgICAgICBpZiAoSW5zcGVjdG9y
QmFja2VuZC5kb21haW5zLk5ldHdvcmsuaGFzRXZlbnRQYXJhbWV0ZXIoImxvYWRpbmdGaW5pc2hl
ZCIsICJtZXRyaWNzIikpIHsKICAgICAgICAgICAgIGxldCBwcm90b2NvbERpc3BsYXlOYW1lID0g
V0kuUmVzb3VyY2UuZGlzcGxheU5hbWVGb3JQcm90b2NvbCh0aGlzLl9yZXNvdXJjZS5wcm90b2Nv
bCk7CiAgICAgICAgICAgICB0aGlzLl9wcm90b2NvbFJvdy52YWx1ZSA9IHByb3RvY29sRGlzcGxh
eU5hbWUgfHwgZW1EYXNoOwogICAgICAgICAgICAgdGhpcy5fcHJvdG9jb2xSb3cudG9vbHRpcCA9
IHByb3RvY29sRGlzcGxheU5hbWUgPyB0aGlzLl9yZXNvdXJjZS5wcm90b2NvbCA6ICIiOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2V0dGlu
Z3NUYWJDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL1NldHRpbmdzVGFiQ29udGVudFZpZXcuanMKaW5kZXggNTRiMmE5ZTY3NmUuLjI4N2Nk
NzY1MjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9TZXR0aW5nc1RhYkNvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NldHRpbmdzVGFiQ29udGVudFZpZXcuanMKQEAgLTIyNSw3
ICsyMjUsMTAgQEAgV0kuU2V0dGluZ3NUYWJDb250ZW50VmlldyA9IGNsYXNzIFNldHRpbmdzVGFi
Q29udGVudFZpZXcgZXh0ZW5kcyBXSS5UYWJDb250ZW50VmkKICAgICAgICAgICAgIGZvciAobGV0
IGNoYW5uZWwgb2YgY2hhbm5lbHMpIHsKICAgICAgICAgICAgICAgICBsZXQgbG9nRWRpdG9yID0g
Z2VuZXJhbFNldHRpbmdzVmlldy5hZGRHcm91cFdpdGhDdXN0b21TZXR0aW5nKGVkaXRvckxhYmVs
c1tjaGFubmVsLnNvdXJjZV0sIFdJLlNldHRpbmdFZGl0b3IuVHlwZS5TZWxlY3QsIHt2YWx1ZXM6
IGxvZ0xldmVsc30pOwogICAgICAgICAgICAgICAgIGxvZ0VkaXRvci52YWx1ZSA9IGNoYW5uZWwu
bGV2ZWw7Ci0gICAgICAgICAgICAgICAgbG9nRWRpdG9yLmFkZEV2ZW50TGlzdGVuZXIoV0kuU2V0
dGluZ0VkaXRvci5FdmVudC5WYWx1ZURpZENoYW5nZSwgKCkgPT4geyBDb25zb2xlQWdlbnQuc2V0
TG9nZ2luZ0NoYW5uZWxMZXZlbChjaGFubmVsLnNvdXJjZSwgbG9nRWRpdG9yLnZhbHVlKTsgfSk7
CisgICAgICAgICAgICAgICAgbG9nRWRpdG9yLmFkZEV2ZW50TGlzdGVuZXIoV0kuU2V0dGluZ0Vk
aXRvci5FdmVudC5WYWx1ZURpZENoYW5nZSwgKCkgPT4geworICAgICAgICAgICAgICAgICAgICBm
b3IgKGxldCB0YXJnZXQgb2YgV0kudGFyZ2V0cykKKyAgICAgICAgICAgICAgICAgICAgICAgIHRh
cmdldC5Db25zb2xlQWdlbnQuc2V0TG9nZ2luZ0NoYW5uZWxMZXZlbChjaGFubmVsLnNvdXJjZSwg
bG9nRWRpdG9yLnZhbHVlKTsKKyAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9Tb3VyY2VDb2RlVGV4dEVkaXRvci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZUNvZGVUZXh0RWRpdG9yLmpzCmluZGV4IDNlZGJjMWM4
NmEwLi5jNWYwMjIzNTRlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvU291cmNlQ29kZVRleHRFZGl0b3IuanMKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU291cmNlQ29kZVRleHRFZGl0b3IuanMKQEAg
LTIxNTMsNyArMjE1Myw3IEBAIFdJLlNvdXJjZUNvZGVUZXh0RWRpdG9yID0gY2xhc3MgU291cmNl
Q29kZVRleHRFZGl0b3IgZXh0ZW5kcyBXSS5UZXh0RWRpdG9yCiAgICAgX2NyZWF0ZVR5cGVUb2tl
bkFubm90YXRvcigpCiAgICAgewogICAgICAgICAvLyBDT01QQVRJQklMSVRZIChpT1MgOCk6IFJ1
bnRpbWUuZ2V0UnVudGltZVR5cGVzRm9yVmFyaWFibGVzQXRPZmZzZXRzIGRpZCBub3QgZXhpc3Qg
eWV0LgotICAgICAgICBpZiAoIVJ1bnRpbWVBZ2VudC5nZXRSdW50aW1lVHlwZXNGb3JWYXJpYWJs
ZXNBdE9mZnNldHMpCisgICAgICAgIGlmICghdGhpcy50YXJnZXQuUnVudGltZUFnZW50LmdldFJ1
bnRpbWVUeXBlc0ZvclZhcmlhYmxlc0F0T2Zmc2V0cykKICAgICAgICAgICAgIHJldHVybjsKIAog
ICAgICAgICB2YXIgc2NyaXB0ID0gdGhpcy5fZ2V0QXNzb2NpYXRlZFNjcmlwdCgpOwpAQCAtMjE2
Niw3ICsyMTY2LDcgQEAgV0kuU291cmNlQ29kZVRleHRFZGl0b3IgPSBjbGFzcyBTb3VyY2VDb2Rl
VGV4dEVkaXRvciBleHRlbmRzIFdJLlRleHRFZGl0b3IKICAgICBfY3JlYXRlQmFzaWNCbG9ja0Fu
bm90YXRvcigpCiAgICAgewogICAgICAgICAvLyBDT01QQVRJQklMSVRZIChpT1MgOCk6IFJ1bnRp
bWUuZ2V0QmFzaWNCbG9ja3MgZGlkIG5vdCBleGlzdCB5ZXQuCi0gICAgICAgIGlmICghUnVudGlt
ZUFnZW50LmdldEJhc2ljQmxvY2tzKQorICAgICAgICBpZiAoIXRoaXMudGFyZ2V0LlJ1bnRpbWVB
Z2VudC5nZXRCYXNpY0Jsb2NrcykKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICB2YXIg
c2NyaXB0ID0gdGhpcy5fZ2V0QXNzb2NpYXRlZFNjcmlwdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvV2ViU29ja2V0Q29udGVudFZpZXcu
anMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9XZWJTb2NrZXRD
b250ZW50Vmlldy5qcwppbmRleCA5ZGVjMTY4MWYzZC4uM2JmMGQ2NDYzYzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1dlYlNvY2tldENvbnRl
bnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L1dlYlNvY2tldENvbnRlbnRWaWV3LmpzCkBAIC0zNiw3ICszNiw3IEBAIFdJLldlYlNvY2tldENv
bnRlbnRWaWV3ID0gY2xhc3MgV2ViU29ja2V0Q29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50
VmlldwogICAgICAgICB0aGlzLl9sYXN0UmVuZGVyZWRSZWFkeVN0YXRlID0gbnVsbDsKIAogICAg
ICAgICAvLyBDT01QQVRJQklMSVRZIChpT1MgMTAuMyk6IGB3YWxsdGltZWAgZGlkIG5vdCBleGlz
dCBpbiAxMC4zIGFuZCBlYXJsaWVyLgotICAgICAgICB0aGlzLl9zaG93VGltZUNvbHVtbiA9IE5l
dHdvcmtBZ2VudC5oYXNFdmVudFBhcmFtZXRlcigid2ViU29ja2V0V2lsbFNlbmRIYW5kc2hha2VS
ZXF1ZXN0IiwgIndhbGx0aW1lIik7CisgICAgICAgIHRoaXMuX3Nob3dUaW1lQ29sdW1uID0gSW5z
cGVjdG9yQmFja2VuZC5kb21haW5zLk5ldHdvcmsuaGFzRXZlbnRQYXJhbWV0ZXIoIndlYlNvY2tl
dFdpbGxTZW5kSGFuZHNoYWtlUmVxdWVzdCIsICJ3YWxsdGltZSIpOwogCiAgICAgICAgIHRoaXMu
ZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJ3ZWItc29ja2V0IiwgInJlc291cmNlIik7CiAK
</data>
<flag name="review"
          id="371456"
          type_id="1"
          status="+"
          setter="hi"
    />
    <flag name="commit-queue"
          id="371457"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
      

    </bug>

</bugzilla>