<?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>122546</bug_id>
          
          <creation_ts>2013-10-09 05:15:41 -0700</creation_ts>
          <short_desc>Web Inspector: inspector forgets open navigation sidebar when re-opening</short_desc>
          <delta_ts>2013-10-10 16:19:29 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Brian Burg">burg</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>937883</commentid>
    <comment_count>0</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2013-10-09 05:15:41 -0700</bug_when>
    <thetext>Always restoring through sidebars causes the inspector to lose track of the previously-opened sidebar. The current architecture of save/restore from cookie also makes it awkward to restore view state that is independent of the represented object (i.e., scroll positions or subview selections).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>937884</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2013-10-09 05:16:02 -0700</bug_when>
    <thetext>&lt;rdar://problem/15185630&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>937911</commentid>
    <comment_count>2</comment_count>
      <attachid>213774</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2013-10-09 07:07:23 -0700</bug_when>
    <thetext>Created attachment 213774
v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938079</commentid>
    <comment_count>3</comment_count>
      <attachid>213774</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2013-10-09 14:33:54 -0700</bug_when>
    <thetext>Comment on attachment 213774
v1

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

Looks good. Just fix up the layering violations.

&gt; Source/WebInspectorUI/UserInterface/ApplicationCacheManager.js:115
&gt; +        return (matchOnTypeAlone &amp;&amp; this._applicationCacheObjects.length) ? this._applicationCacheObjects[0] : null;

No need for the ( ).

&gt; Source/WebInspectorUI/UserInterface/ContentBrowser.js:78
&gt; +    // These listeners are for events that could resolve a pending content view cookie.
&gt; +    WebInspector.applicationCacheManager.addEventListener(WebInspector.ApplicationCacheManager.Event.FrameManifestAdded, this._resolveAndShowPendingContentViewCookie, this);
&gt; +    WebInspector.frameResourceManager.addEventListener(WebInspector.FrameResourceManager.Event.MainFrameDidChange, this._resolveAndShowPendingContentViewCookie, this);
&gt; +    WebInspector.storageManager.addEventListener(WebInspector.StorageManager.Event.DatabaseWasAdded, this._resolveAndShowPendingContentViewCookie, this);
&gt; +    WebInspector.storageManager.addEventListener(WebInspector.StorageManager.Event.CookieStorageObjectWasAdded, this._resolveAndShowPendingContentViewCookie, this);
&gt; +    WebInspector.storageManager.addEventListener(WebInspector.StorageManager.Event.DOMStorageObjectWasAdded, this._resolveAndShowPendingContentViewCookie, this);

This is a layering violation. Moving this to Main.js and possibly calling into a public function on ContentBrowser for generic logic would be best.

&gt; Source/WebInspectorUI/UserInterface/ContentBrowser.js:577
&gt; +    _resolveAndShowPendingContentViewCookie: function(matchOnTypeAlone)
&gt; +    {
&gt; +        var cookie = this._pendingContentViewCookie;
&gt; +        if (!cookie)
&gt; +            return false;
&gt; +
&gt; +        var representedObject = null;
&gt; +
&gt; +        if (cookie.type === WebInspector.ContentView.ResourceContentViewCookieType)
&gt; +            representedObject = WebInspector.frameResourceManager.objectForCookie(cookie);
&gt; +
&gt; +        if (cookie.type === WebInspector.ContentView.TimelinesContentViewCookieType)
&gt; +            representedObject = WebInspector.timelineManager.objectForCookie(cookie);
&gt; +
&gt; +        if (cookie.type === WebInspector.ContentView.CookieStorageContentViewCookieType || cookie.type === WebInspector.ContentView.DatabaseContentViewCookieType  || cookie.type === WebInspector.ContentView.DatabaseTableContentViewCookieType || cookie.type === WebInspector.ContentView.DOMStorageContentViewCookieType)
&gt; +            representedObject = WebInspector.storageManager.objectForCookie(this._pendingContentViewCookie, matchOnTypeAlone);
&gt; +
&gt; +        if (cookie.type === WebInspector.ContentView.ApplicationCacheContentViewCookieType)
&gt; +            representedObject = WebInspector.applicationCacheManager.objectForCookie(this._pendingContentViewCookie, matchOnTypeAlone);
&gt; +
&gt; +        if (!representedObject)
&gt; +            return false;
&gt; +
&gt; +        // If we reached this point, then we should be able to create and/or display a content view based on the cookie.
&gt; +        delete this._pendingContentViewCookie;
&gt; +        if (this._lastAttemptCookieCheckingTimeout)
&gt; +            clearTimeout(this._lastAttemptCookieCheckingTimeout);
&gt; +
&gt; +        // Delay this work because other listeners of the originating event might not have fired yet.
&gt; +        // So displaying the content view before those listeners do their work might cause the
&gt; +        // dependent view states (navigation sidebar tree elements, path components) to be wrong.
&gt; +        function delayedWork()
&gt; +        {
&gt; +            this.showContentViewForRepresentedObject(representedObject, cookie);
&gt; +        }
&gt; +        setTimeout(delayedWork.bind(this), 0);
&gt; +        return true;
&gt; +    },

This should also move to Main.js since it touches many high level classes that ContentBrowser should not know about.

&gt; Source/WebInspectorUI/UserInterface/ContentView.js:105
&gt; +WebInspector.ContentView.ApplicationCacheContentViewCookieType = &quot;application-cache&quot;;
&gt; +WebInspector.ContentView.CookieStorageContentViewCookieType = &quot;cookie-storage&quot;;
&gt; +WebInspector.ContentView.DatabaseContentViewCookieType = &quot;database&quot;;
&gt; +WebInspector.ContentView.DatabaseTableContentViewCookieType = &quot;database-table&quot;;
&gt; +WebInspector.ContentView.DOMStorageContentViewCookieType = &quot;dom-storage&quot;;
&gt; +WebInspector.ContentView.TimelinesContentViewCookieType = &quot;timeline&quot;;
&gt; +WebInspector.ContentView.ResourceContentViewCookieType = &quot;resource&quot;; // includes Frame too.

This is also a layering violation. Main.js would be best. Also this format would be better and more like an enum:

WebInspector.ContentVIewCookieType = {
    ApplicationCache: &quot;application-cache&quot;,
    ...
};</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938397</commentid>
    <comment_count>4</comment_count>
      <attachid>213897</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2013-10-10 10:02:27 -0700</bug_when>
    <thetext>Created attachment 213897
v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938447</commentid>
    <comment_count>5</comment_count>
      <attachid>213897</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2013-10-10 11:46:41 -0700</bug_when>
    <thetext>Comment on attachment 213897
v2

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

Looks good. Just some style nits.

&gt; Source/WebInspectorUI/UserInterface/FrameResourceManager.js:86
&gt; +        var representedObject = (cookie.url) ? this.resourceForURL(cookie.url) : this.mainFrame;

No need for ( ).

&gt; Source/WebInspectorUI/UserInterface/StorageManager.js:159
&gt; +            return (matchOnTypeAlone &amp;&amp; array.length) ? array[0] : null;

No need for ( ).

&gt; Source/WebInspectorUI/UserInterface/StorageManager.js:179
&gt; +        if (cookie.type === WebInspector.ContentViewCookieType.DOMStorage)
&gt; +            return findMatchingObjectInArray(this._domStorageObjects, function(object) {
&gt; +                return object.host === cookie.host &amp;&amp; object.isLocalStorage() === cookie.isLocalStorage;
&gt; +            });

This needs { } since it is multi-line.

&gt; Source/WebInspectorUI/UserInterface/StorageManager.js:184
&gt; +        if (cookie.type === WebInspector.ContentViewCookieType.Database)
&gt; +            return findMatchingObjectInArray(this._databaseObjects, function(object) {
&gt; +                return object.host === cookie.host &amp;&amp; object.name === cookie.name;
&gt; +            });

Ditto.

&gt; Source/WebInspectorUI/UserInterface/StorageManager.js:192
&gt; +        if (cookie.type === WebInspector.ContentViewCookieType.DatabaseTable)
&gt; +            return findMatchingObjectInArray(this._databaseObjects, function(object) {
&gt; +                return object.host === cookie.host &amp;&amp; object.database === cookie.name;
&gt; +            });

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938575</commentid>
    <comment_count>6</comment_count>
      <attachid>213935</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2013-10-10 15:36:20 -0700</bug_when>
    <thetext>Created attachment 213935
v2.1 (style nits)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938598</commentid>
    <comment_count>7</comment_count>
      <attachid>213935</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-10 16:19:26 -0700</bug_when>
    <thetext>Comment on attachment 213935
v2.1 (style nits)

Clearing flags on attachment: 213935

Committed r157269: &lt;http://trac.webkit.org/changeset/157269&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938599</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-10 16:19:29 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213774</attachid>
            <date>2013-10-09 07:07:23 -0700</date>
            <delta_ts>2013-10-10 10:02:20 -0700</delta_ts>
            <desc>v1</desc>
            <filename>bug-122546-20131009150720.patch</filename>
            <type>text/plain</type>
            <size>54192</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU2NzkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCA3
ZGRiYTNiODFhY2UwMDc0MDAyY2JmNDFmYWM5MGE1ODE3YmE1ZWI3Li5jNGYzMDQ2N2FlM2UyZDc0
NmYwMDk4OGU2YmZiYzFmZjdlYzgwMWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5MSBAQAorMjAxMy0xMC0wOSAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rv
bi5lZHU+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogY29udGVudCB2aWV3cyBhbmQgbWFuYWdl
cnMgc2hvdWxkIHNhdmUvcmVzdG9yZSB2aWV3IHN0YXRlLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIyNTQ2CisKKyAgICAgICAgVG8gcmVzdG9yZSB0
aGUgc2FtZSBjb250ZW50IHZpZXcgYW5kIHNpZGViYXJzIHdoZW4gcmUtb3BlbmluZyB0aGUKKyAg
ICAgICAgaW5zcGVjdG9yLCBhIGNvb2tpZSBpcyBzYXZlZCB3aGVuZXZlciBhIG5ldyBjb250ZW50
IHZpZXcgaXMgc2hvd24KKyAgICAgICAgaW4gdGhlIG1haW4gY29udGVudCBicm93c2VyLiBQcmV2
aW91c2x5LCB0aGlzIGNvb2tpZSB3YXMgY3JlYXRlZAorICAgICAgICBhbmQgcmVzdG9yZWQgdXNp
bmcgbmF2aWdhdGlvbiBzaWRlYmFyLXNwZWNpZmljIGxvZ2ljLiBUaGlzIGhhcyB0d28KKyAgICAg
ICAgbWFqb3IgZmxhd3M6IG5vbi1kZWZhdWx0IHNpZGViYXJzIGZvciBhIHJlcHJlc2VudGVkIG9i
amVjdCBhcmUgbm90CisgICAgICAgIHJlc3RvcmVkIGNvcnJlY3RseTsgYW5kIGl0IGNlbnRyYWxp
emVzIHN0b3JhZ2Ugb2Ygdmlldy1zcGVjaWZpYworICAgICAgICBzdGF0ZSBzdWNoIGFzIHN1YnZp
ZXcgc2VsZWN0aW9ucy4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgQ29udGVudFZpZXcgbWV0
aG9kcyBmb3Igc2F2aW5nIGEga2V5IGZvciB0aGUKKyAgICAgICAgdmlldydzIHJlcHJlc2VudGVk
IG9iamVjdCwgYW5kIHNhdmluZy9yZXN0b3JpbmcgYW55IHZpZXctc3BlY2lmaWMKKyAgICAgICAg
c3RhdGUgYXMgdGhlIHZpZXcgaXMgc2hvd24uIFRoZSAndHlwZScgZmllbGQgb2YgdGhlIGNvb2tp
ZQorICAgICAgICBzcGVjaWZpZXMgdGhlIG1hbmFnZXIgd2hpY2ggZGVzZXJpYWxpemVzIHRoZSBj
b29raWUgaW50byBhCisgICAgICAgIHJlcHJlc2VudGVkIG9iamVjdC4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQXBwbGlj
YXRpb25DYWNoZUZyYW1lQ29udGVudFZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQXBw
bGljYXRpb25DYWNoZUZyYW1lQ29udGVudFZpZXcucHJvdG90eXBlLnNhdmVUb0Nvb2tpZSk6Cisg
ICAgICAgICogVXNlckludGVyZmFjZS9BcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5qczoKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5wcm90b3R5cGUub2JqZWN0
Rm9yQ29va2llKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0JhY2tGb3J3YXJkRW50cnkuanM6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuQmFja0ZvcndhcmRFbnRyeSk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuQmFja0ZvcndhcmRFbnRyeS5wcm90b3R5cGUuX3Jlc3RvcmVGcm9tQ29va2llKToK
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRlbnRCcm93c2VyLmpzOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkNvbnRlbnRCcm93c2VyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db250ZW50
QnJvd3Nlci5wcm90b3R5cGUuc2hvd0NvbnRlbnRWaWV3Rm9yUmVwcmVzZW50ZWRPYmplY3QpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnRlbnRCcm93c2VyLnByb3RvdHlwZS5zaG93Q29udGVu
dFZpZXdGb3JDb29raWUubGFzdEF0dGVtcHRUb1Jlc3RvcmVGcm9tQ29va2llKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5Db250ZW50QnJvd3Nlci5wcm90b3R5cGUuc2hvd0NvbnRlbnRWaWV3Rm9y
Q29va2llKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db250ZW50QnJvd3Nlci5wcm90b3R5cGUu
c2hvd0NvbnRlbnRWaWV3KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db250ZW50QnJvd3Nlci5w
cm90b3R5cGUuX3Jlc29sdmVBbmRTaG93UGVuZGluZ0NvbnRlbnRWaWV3Q29va2llLmRlbGF5ZWRX
b3JrKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db250ZW50QnJvd3Nlci5wcm90b3R5cGUuX3Jl
c29sdmVBbmRTaG93UGVuZGluZ0NvbnRlbnRWaWV3Q29va2llKToKKyAgICAgICAgKiBVc2VySW50
ZXJmYWNlL0NvbnRlbnRWaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3
LnByb3RvdHlwZS5zYXZlVG9Db29raWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnRlbnRW
aWV3LnByb3RvdHlwZS5yZXN0b3JlRnJvbUNvb2tpZSk6CisgICAgICAgICogVXNlckludGVyZmFj
ZS9Db250ZW50Vmlld0NvbnRhaW5lci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db250ZW50
Vmlld0NvbnRhaW5lci5wcm90b3R5cGUuc2hvd0NvbnRlbnRWaWV3KToKKyAgICAgICAgKiBVc2Vy
SW50ZXJmYWNlL0Nvb2tpZVN0b3JhZ2VDb250ZW50Vmlldy5qczoKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5Db29raWVTdG9yYWdlQ29udGVudFZpZXcucHJvdG90eXBlLnNhdmVUb0Nvb2tpZSk6Cisg
ICAgICAgICogVXNlckludGVyZmFjZS9ET01TdG9yYWdlQ29udGVudFZpZXcuanM6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5zYXZlVG9Db29r
aWUpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvRGF0YWJhc2VDb250ZW50Vmlldy5qczoKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5EYXRhYmFzZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5zYXZlVG9D
b29raWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRhdGFiYXNlQ29udGVudFZpZXcucHJvdG90
eXBlLl9tZXNzYWdlc0NsaWNrZWQpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvRGF0YWJhc2VU
YWJsZUNvbnRlbnRWaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRhdGFiYXNlVGFibGVD
b250ZW50Vmlldy5wcm90b3R5cGUuc2F2ZVRvQ29va2llKToKKyAgICAgICAgKiBVc2VySW50ZXJm
YWNlL0ZyYW1lQ29udGVudFZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRnJhbWVDb250
ZW50Vmlldy5wcm90b3R5cGUuc2F2ZVRvQ29va2llKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5G
cmFtZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5yZXN0b3JlRnJvbUNvb2tpZSk6CisgICAgICAgICog
VXNlckludGVyZmFjZS9GcmFtZVJlc291cmNlTWFuYWdlci5qczoKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5GcmFtZVJlc291cmNlTWFuYWdlci5wcm90b3R5cGUub2JqZWN0Rm9yQ29va2llKToKKyAg
ICAgICAgKiBVc2VySW50ZXJmYWNlL0luc3RydW1lbnRTaWRlYmFyUGFuZWwuanM6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuSW5zdHJ1bWVudFNpZGViYXJQYW5lbCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuSW5zdHJ1bWVudFNpZGViYXJQYW5lbC5wcm90b3R5cGUuc2hvd1RpbWVsaW5lKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5JbnN0cnVtZW50U2lkZWJhclBhbmVsLnByb3RvdHlwZS5zaG93
bik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSW5zdHJ1bWVudFNpZGViYXJQYW5lbC5wcm90b3R5
cGUuX3RpbWVsaW5lc1RyZWVFbGVtZW50U2VsZWN0ZWQpOgorICAgICAgICAqIFVzZXJJbnRlcmZh
Y2UvTWFpbi5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5jb250ZW50TG9hZGVkKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5fdXBkYXRlQ3VycmVudENvbnRlbnRWaWV3Q29va2llKToKKyAgICAg
ICAgKiBVc2VySW50ZXJmYWNlL05hdmlnYXRpb25TaWRlYmFyUGFuZWwuanM6CisgICAgICAgICog
VXNlckludGVyZmFjZS9SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5qczoKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5wcm90b3R5cGUuc2F2ZVRvQ29v
a2llKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5w
cm90b3R5cGUucmVzdG9yZUZyb21Db29raWUpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvUmVz
b3VyY2VTaWRlYmFyUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VTaWRl
YmFyUGFuZWwucHJvdG90eXBlLnNob3dTb3VyY2VDb2RlKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5SZXNvdXJjZVNpZGViYXJQYW5lbC5wcm90b3R5cGUuX21haW5GcmFtZURpZENoYW5nZSk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VTaWRlYmFyUGFuZWwucHJvdG90eXBlLl9kb21T
dG9yYWdlT2JqZWN0V2FzQWRkZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlU2lk
ZWJhclBhbmVsLnByb3RvdHlwZS5fZGF0YWJhc2VXYXNBZGRlZCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuUmVzb3VyY2VTaWRlYmFyUGFuZWwucHJvdG90eXBlLl9jb29raWVTdG9yYWdlT2JqZWN0
V2FzQWRkZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlU2lkZWJhclBhbmVsLnBy
b3RvdHlwZS5fZnJhbWVNYW5pZmVzdEFkZGVkKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Nj
cmlwdENvbnRlbnRWaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdENvbnRlbnRW
aWV3LnByb3RvdHlwZS5zYXZlVG9Db29raWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlw
dENvbnRlbnRWaWV3LnByb3RvdHlwZS5yZXN0b3JlRnJvbUNvb2tpZSk6CisgICAgICAgICogVXNl
ckludGVyZmFjZS9TdG9yYWdlTWFuYWdlci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TdG9y
YWdlTWFuYWdlci5wcm90b3R5cGUuZmluZE1hdGNoaW5nT2JqZWN0SW5BcnJheSk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuU3RvcmFnZU1hbmFnZXIucHJvdG90eXBlLm9iamVjdEZvckNvb2tpZSk6
CisgICAgICAgICogVXNlckludGVyZmFjZS9UaW1lbGluZU1hbmFnZXIuanM6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuVGltZWxpbmVNYW5hZ2VyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1l
bGluZU1hbmFnZXIucHJvdG90eXBlLmdldCB0aW1lbGluZXMpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlRpbWVsaW5lTWFuYWdlci5wcm90b3R5cGUub2JqZWN0Rm9yQ29va2llKToKKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL1RpbWVsaW5lc0NvbnRlbnRWaWV3LmpzOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlRpbWVsaW5lc0NvbnRlbnRWaWV3LnByb3RvdHlwZS5zYXZlVG9Db29raWUpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lc0NvbnRlbnRWaWV3LnByb3RvdHlwZS5yZXN0b3Jl
RnJvbUNvb2tpZSk6CisKIDIwMTMtMTAtMDIgIEJyaWFuIEouIEJ1cmcgIDxidXJnQGNzLndhc2hp
bmd0b24uZWR1PgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IHNhdmUgYW5kIHJlc3RvcmUgc291
cmNlIHBvc2l0aW9ucyBpbiBiYWNrL2ZvcndhcmQgaGlzdG9yeQpAQCAtMTUxLDcgKzIzOSw3IEBA
CiAgICAgICAgIENTUyBwc2V1ZG8tY2xhc3NlcyB3b3JraW5nIHdpdGggRE9NIG9yZGVyLCB0aGUg
YmFja2dyb3VuZCBjb2xvcnMgb2Ygbm9kZXMgaW4gdGhlIExheWVyVHJlZURhdGFHcmlkCiAgICAg
ICAgIGNhbiBiZSBpbmNvcnJlY3QgZGVwZW5kaW5nIG9uIHRoZSBzb3J0IG9yZGVyIGFuZCB0aGUg
bnVtYmVyIG9mIG5vZGVzLiBUbyBmaXggdGhpcywgd2Ugbm93IG1hbnVhbGx5CiAgICAgICAgIHNl
dCAiZXZlbiIgYW5kICJvZGQiIENTUyBjbGFzc2VzIG9uIHRob3NlIG5vZGVzIHdoZW4gdGhleSdy
ZSBzb3J0ZWQgc3VjaCB0aGF0IHdlIGhhdmUgYSBjaGFuY2UKLSAgICAgICAgdG8gc3R5bGUgdGhl
bSBhcyBpbnRlbmRlZC4gCisgICAgICAgIHRvIHN0eWxlIHRoZW0gYXMgaW50ZW5kZWQuCiAKICAg
ICAgICAgKiBVc2VySW50ZXJmYWNlL0xheWVyVHJlZURhdGFHcmlkLmpzOgogICAgICAgICAoV2Vi
SW5zcGVjdG9yLkxheWVyVHJlZURhdGFHcmlkLnByb3RvdHlwZS5fdXBkYXRlQ2hpbGRyZW4pOgpA
QCAtMTcwMiw3ICsxNzkwLDcgQEAKIAogMjAxMy0wNy0yMiAgRGllZ28gUGlubyBHYXJjaWEgIDxk
cGlub0BpZ2FsaWEuY29tPgogCi0gICAgICAgIFdlYiBJbnNwZWN0b3I6IFdoZW4gcmlnaHQtY2xp
Y2tpbmcgb24gYSBEYXRhR3JpZCBjb2x1bW4sIHNob3cgZWRpdGluZyAKKyAgICAgICAgV2ViIElu
c3BlY3RvcjogV2hlbiByaWdodC1jbGlja2luZyBvbiBhIERhdGFHcmlkIGNvbHVtbiwgc2hvdyBl
ZGl0aW5nCiAgICAgICAgIG1lbnUgb3B0aW9uIGFzICJFZGl0IDxjb2x1bW5OYW1lPiIgaW5zdGVh
ZCBvZiBqdXN0ICJFZGl0IgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTE4OTcwCiAKQEAgLTE5NzgsNyArMjA2Niw3IEBACiAKIDIwMTMtMDYtMjcgIEph
bWVzIENyYWlnICA8amFtZXNAY29va2llY3Jvb2suY29tPgogCi0gICAgICAgIFdlYiBJbnNwZWN0
b3I6IEFYOiBBZGQgY29udGFpbmVyIEFSSUEgcm9sZXMgKHRvb2xiYXIsIG1haW4sIGxhYmVsZWQg
cmVnaW9ucywgZXRjLikgCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEFYOiBBZGQgY29udGFpbmVy
IEFSSUEgcm9sZXMgKHRvb2xiYXIsIG1haW4sIGxhYmVsZWQgcmVnaW9ucywgZXRjLikKICAgICAg
ICAgc28gdGhlIGxheW91dCBpcyBtb3JlIGRpc2NvdmVyYWJsZSB0byBzY3JlZW4gcmVhZGVyIHVz
ZXJzCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTgx
MDQKIApAQCAtMjAwOSw3ICsyMDk3LDcgQEAKIAogICAgICAgICBNYWluIGNvbnNvbGUgbG9nIGFy
ZWEgKGRpdi5jb25zb2xlLW1lc3NhZ2VzKSBpcyBub3cgYW4gQVJJQSBsaXZlIHJlZ2lvbiAocm9s
ZT0ibG9nIikKICAgICAgICAgc28gc2NyZWVuIHJlYWRlcnMgc3BlYWsgcGxhaW4gdGV4dCB1cGRh
dGVzLgotICAgICAgICAKKwogICAgICAgICBBbHNvIGFkZGVkIGNvbnRleHR1YWwgbGFiZWxzIChl
LmcuIGlucHV0L291dHB1dCkgYnV0IHNwZWVjaCBvdXRwdXQgdmVyaWZpY2F0aW9uIG9mCiAgICAg
ICAgIHRob3NlIGlzIGN1cnJlbnRseSBibG9ja2VkIGJ5IGh0dHA6Ly93ZWJraXQub3JnL2IvMTE4
MDk2CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Fw
cGxpY2F0aW9uQ2FjaGVGcmFtZUNvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvQXBwbGljYXRpb25DYWNoZUZyYW1lQ29udGVudFZpZXcuanMKaW5kZXgg
ZjE3MmIxYjI0Y2NhY2JiMmIxNWViOTBiYzE1MjU3MTAwNmFiOTU0MC4uYWVlZjhiOWMyMTE1NDNh
MjcxODU3ZTZiMTE3NTU1NTc0MDEwZDdhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvQXBwbGljYXRpb25DYWNoZUZyYW1lQ29udGVudFZpZXcuanMKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQXBwbGljYXRpb25DYWNoZUZy
YW1lQ29udGVudFZpZXcuanMKQEAgLTczLDYgKzczLDEzIEBAIFdlYkluc3BlY3Rvci5BcHBsaWNh
dGlvbkNhY2hlRnJhbWVDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlz
LmRhdGFHcmlkLnVwZGF0ZUxheW91dCgpOwogICAgIH0sCiAKKyAgICBzYXZlVG9Db29raWU6IGZ1
bmN0aW9uKGNvb2tpZSkKKyAgICB7CisgICAgICAgIGNvb2tpZS50eXBlID0gV2ViSW5zcGVjdG9y
LkNvbnRlbnRWaWV3LkFwcGxpY2F0aW9uQ2FjaGVDb250ZW50Vmlld0Nvb2tpZVR5cGU7CisgICAg
ICAgIGNvb2tpZS5mcmFtZSA9IHRoaXMucmVwcmVzZW50ZWRPYmplY3QuZnJhbWUudXJsOworICAg
ICAgICBjb29raWUubWFuaWZlc3QgPSB0aGlzLnJlcHJlc2VudGVkT2JqZWN0Lm1hbmlmZXN0Lm1h
bmlmZXN0VVJMOworICAgIH0sCisKICAgICBnZXQgc2Nyb2xsYWJsZUVsZW1lbnRzKCkKICAgICB7
CiAgICAgICAgIGlmICghdGhpcy5fZGF0YUdyaWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9BcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5qcyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmpz
CmluZGV4IDg1NDEwMDYwNjQ4NzhmMWI4MWRjNGUyZjk0ZmQ4NGEyOTM2YTcwYmMuLjg4ZDVkMjAx
MTQzODJiNzkxZGY5MTYxOTI4Mjk3YTc0NTQ2YzcwNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmpzCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0FwcGxpY2F0aW9uQ2FjaGVNYW5h
Z2VyLmpzCkBAIC0xMDIsNiArMTAyLDE5IEBAIFdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hl
TWFuYWdlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIEFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5nZXRB
cHBsaWNhdGlvbkNhY2hlRm9yRnJhbWUoZnJhbWUuaWQsIGNhbGxiYWNrV3JhcHBlcik7CiAgICAg
fSwKIAorICAgIG9iamVjdEZvckNvb2tpZTogZnVuY3Rpb24oY29va2llLCBtYXRjaE9uVHlwZUFs
b25lKQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoY29va2llLnR5cGUgJiYgY29va2ll
LnR5cGUgPT09IFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5BcHBsaWNhdGlvbkNhY2hlQ29udGVu
dFZpZXdDb29raWVUeXBlKTsKKworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX2Fw
cGxpY2F0aW9uQ2FjaGVPYmplY3RzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICB2YXIgb2Jq
ZWN0ID0gdGhpcy5fYXBwbGljYXRpb25DYWNoZU9iamVjdHNbaV07CisgICAgICAgICAgICBpZiAo
b2JqZWN0LmZyYW1lLnVybCA9PT0gY29va2llLmZyYW1lICYmIG9iamVjdC5tYW5pZmVzdC5tYW5p
ZmVzdFVSTCA9PT0gY29va2llLm1hbmlmZXN0KQorICAgICAgICAgICAgICAgIHJldHVybiBvYmpl
Y3Q7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gKG1hdGNoT25UeXBlQWxvbmUgJiYgdGhp
cy5fYXBwbGljYXRpb25DYWNoZU9iamVjdHMubGVuZ3RoKSA/IHRoaXMuX2FwcGxpY2F0aW9uQ2Fj
aGVPYmplY3RzWzBdIDogbnVsbDsKKyAgICB9LAorCiAgICAgLy8gUHJpdmF0ZQogCiAgICAgX21h
aW5SZXNvdXJjZURpZENoYW5nZTogZnVuY3Rpb24oZXZlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYWNrRm9yd2FyZEVudHJ5LmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFja0ZvcndhcmRFbnRyeS5qcwppbmRleCBm
YWFiMjhhNzRhMjA5MThjN2Q3Njg1YTMyMTg3NTRkMjg2OTA5YjRiLi45NDg5OWJjNDRhNzg4NzBk
M2NmMDNhMWUwMDg4YzBiM2UwOGJkMDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9CYWNrRm9yd2FyZEVudHJ5LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0JhY2tGb3J3YXJkRW50cnkuanMKQEAgLTI0LDE0ICsyNCwx
NSBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuQmFja0ZvcndhcmRFbnRy
eSA9IGZ1bmN0aW9uKGNvbnRlbnRWaWV3LCBjb29raWUsIHJlc3RvcmVDYWxsYmFjaykKK1dlYklu
c3BlY3Rvci5CYWNrRm9yd2FyZEVudHJ5ID0gZnVuY3Rpb24oY29udGVudFZpZXcsIGNvb2tpZSkK
IHsKICAgICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CiAgICAgdGhpcy5fY29udGVu
dFZpZXcgPSBjb250ZW50VmlldzsKICAgICAvLyBDb29raWVzIGFyZSBjb21wYXJlZCB3aXRoIE9i
amVjdC5zaGFsbG93RXF1YWwsIHNvIHNob3VsZCBub3Qgc3RvcmUgb2JqZWN0cyBvciBhcnJheXMu
CiAgICAgdGhpcy5fY29va2llID0gY29va2llIHx8IHt9OwogICAgIHRoaXMuX3Njcm9sbFBvc2l0
aW9ucyA9IFtdOwotICAgIHRoaXMuX3Jlc3RvcmVDYWxsYmFjayA9IHJlc3RvcmVDYWxsYmFjazsK
KworICAgIGNvbnRlbnRWaWV3LnNhdmVUb0Nvb2tpZSh0aGlzLl9jb29raWUpOwogfTsKIAogV2Vi
SW5zcGVjdG9yLkJhY2tGb3J3YXJkRW50cnkucHJvdG90eXBlID0gewpAQCAtNzMsOSArNzQsNyBA
QCBXZWJJbnNwZWN0b3IuQmFja0ZvcndhcmRFbnRyeS5wcm90b3R5cGUgPSB7CiAgICAgX3Jlc3Rv
cmVGcm9tQ29va2llOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICB0aGlzLl9yZXN0b3JlU2Ny
b2xsUG9zaXRpb25zKCk7Ci0KLSAgICAgICAgaWYgKHRoaXMuX3Jlc3RvcmVDYWxsYmFjayAmJiB0
eXBlb2YgdGhpcy5fcmVzdG9yZUNhbGxiYWNrID09PSAiZnVuY3Rpb24iKQotICAgICAgICAgICAg
dGhpcy5fcmVzdG9yZUNhbGxiYWNrLmNhbGwobnVsbCwgdGhpcy5jb250ZW50VmlldywgdGhpcy5j
b29raWUpOworICAgICAgICB0aGlzLmNvbnRlbnRWaWV3LnJlc3RvcmVGcm9tQ29va2llKHRoaXMu
Y29va2llKTsKICAgICB9LAogCiAgICAgX3Jlc3RvcmVTY3JvbGxQb3NpdGlvbnM6IGZ1bmN0aW9u
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRl
bnRCcm93c2VyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udGVu
dEJyb3dzZXIuanMKaW5kZXggZGI5ODdhOGIyMGI0NWIwMTMwNTdmZjI1MzVkY2MyNzRkMGJmYWI3
Mi4uYjhmMDJmOGQ2OWEzYTg1NDgyYjcxNjhhODM1OTY0NzkyODcyNTMzYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udGVudEJyb3dzZXIuanMKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udGVudEJyb3dzZXIuanMK
QEAgLTcwLDYgKzcwLDEzIEBAIFdlYkluc3BlY3Rvci5Db250ZW50QnJvd3NlciA9IGZ1bmN0aW9u
KGVsZW1lbnQsIGRlbGVnYXRlLCBkaXNhYmxlQmFja0ZvcndhcmQpCiAKICAgICB0aGlzLl9uYXZp
Z2F0aW9uQmFyLmFkZE5hdmlnYXRpb25JdGVtKG5ldyBXZWJJbnNwZWN0b3IuRmxleGlibGVTcGFj
ZU5hdmlnYXRpb25JdGVtKTsKIAorICAgIC8vIFRoZXNlIGxpc3RlbmVycyBhcmUgZm9yIGV2ZW50
cyB0aGF0IGNvdWxkIHJlc29sdmUgYSBwZW5kaW5nIGNvbnRlbnQgdmlldyBjb29raWUuCisgICAg
V2ViSW5zcGVjdG9yLmFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2Vi
SW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLkV2ZW50LkZyYW1lTWFuaWZlc3RBZGRl
ZCwgdGhpcy5fcmVzb2x2ZUFuZFNob3dQZW5kaW5nQ29udGVudFZpZXdDb29raWUsIHRoaXMpOwor
ICAgIFdlYkluc3BlY3Rvci5mcmFtZVJlc291cmNlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdl
Ykluc3BlY3Rvci5GcmFtZVJlc291cmNlTWFuYWdlci5FdmVudC5NYWluRnJhbWVEaWRDaGFuZ2Us
IHRoaXMuX3Jlc29sdmVBbmRTaG93UGVuZGluZ0NvbnRlbnRWaWV3Q29va2llLCB0aGlzKTsKKyAg
ICBXZWJJbnNwZWN0b3Iuc3RvcmFnZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0
b3IuU3RvcmFnZU1hbmFnZXIuRXZlbnQuRGF0YWJhc2VXYXNBZGRlZCwgdGhpcy5fcmVzb2x2ZUFu
ZFNob3dQZW5kaW5nQ29udGVudFZpZXdDb29raWUsIHRoaXMpOworICAgIFdlYkluc3BlY3Rvci5z
dG9yYWdlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5TdG9yYWdlTWFuYWdl
ci5FdmVudC5Db29raWVTdG9yYWdlT2JqZWN0V2FzQWRkZWQsIHRoaXMuX3Jlc29sdmVBbmRTaG93
UGVuZGluZ0NvbnRlbnRWaWV3Q29va2llLCB0aGlzKTsKKyAgICBXZWJJbnNwZWN0b3Iuc3RvcmFn
ZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuU3RvcmFnZU1hbmFnZXIuRXZl
bnQuRE9NU3RvcmFnZU9iamVjdFdhc0FkZGVkLCB0aGlzLl9yZXNvbHZlQW5kU2hvd1BlbmRpbmdD
b250ZW50Vmlld0Nvb2tpZSwgdGhpcyk7CisKICAgICBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcu
YWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcuRXZlbnQuU2VsZWN0aW9u
UGF0aENvbXBvbmVudHNEaWRDaGFuZ2UsIHRoaXMuX2NvbnRlbnRWaWV3U2VsZWN0aW9uUGF0aENv
bXBvbmVudERpZENoYW5nZSwgdGhpcyk7CiAgICAgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LmFk
ZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LkV2ZW50LlN1cHBsZW1lbnRh
bFJlcHJlc2VudGVkT2JqZWN0c0RpZENoYW5nZSwgdGhpcy5fY29udGVudFZpZXdTdXBwbGVtZW50
YWxSZXByZXNlbnRlZE9iamVjdHNEaWRDaGFuZ2UsIHRoaXMpOwogICAgIFdlYkluc3BlY3Rvci5D
b250ZW50Vmlldy5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5FdmVu
dC5OdW1iZXJPZlNlYXJjaFJlc3VsdHNEaWRDaGFuZ2UsIHRoaXMuX2NvbnRlbnRWaWV3TnVtYmVy
T2ZTZWFyY2hSZXN1bHRzRGlkQ2hhbmdlLCB0aGlzKTsKQEAgLTE1MiwxNCArMTU5LDQzIEBAIFdl
Ykluc3BlY3Rvci5Db250ZW50QnJvd3Nlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2Nv
bnRlbnRWaWV3Q29udGFpbmVyLnVwZGF0ZUxheW91dCgpOwogICAgIH0sCiAKLSAgICBzaG93Q29u
dGVudFZpZXdGb3JSZXByZXNlbnRlZE9iamVjdDogZnVuY3Rpb24ocmVwcmVzZW50ZWRPYmplY3Qp
CisgICAgc2hvd0NvbnRlbnRWaWV3Rm9yUmVwcmVzZW50ZWRPYmplY3Q6IGZ1bmN0aW9uKHJlcHJl
c2VudGVkT2JqZWN0LCBjb29raWUpCisgICAgeworICAgICAgICB2YXIgY29udGVudFZpZXcgPSB0
aGlzLmNvbnRlbnRWaWV3Rm9yUmVwcmVzZW50ZWRPYmplY3QocmVwcmVzZW50ZWRPYmplY3QpOwor
ICAgICAgICByZXR1cm4gdGhpcy5fY29udGVudFZpZXdDb250YWluZXIuc2hvd0NvbnRlbnRWaWV3
KGNvbnRlbnRWaWV3LCBjb29raWUpOworICAgIH0sCisKKyAgICBzaG93Q29udGVudFZpZXdGb3JD
b29raWU6IGZ1bmN0aW9uKGNvb2tpZSkKICAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9jb250
ZW50Vmlld0NvbnRhaW5lci5zaG93Q29udGVudFZpZXdGb3JSZXByZXNlbnRlZE9iamVjdChyZXBy
ZXNlbnRlZE9iamVjdCk7CisgICAgICAgIGlmICghY29va2llIHx8ICFjb29raWUudHlwZSkKKyAg
ICAgICAgICAgIHJldHVybiBudWxsOworCisgICAgICAgIHRoaXMuX3BlbmRpbmdDb250ZW50Vmll
d0Nvb2tpZSA9IGNvb2tpZTsKKyAgICAgICAgdmFyIHNob3duQ29udGVudFZpZXcgPSB0aGlzLl9y
ZXNvbHZlQW5kU2hvd1BlbmRpbmdDb250ZW50Vmlld0Nvb2tpZSgpOworCisgICAgICAgIC8vIEF0
IHRoaXMgcG9pbnQsIHdlIGFzc3VtZSBubyBzdG9yYWdlIG9iamVjdHMgb3Igdmlld3MgaGF2ZSBi
ZWVuIGNyZWF0ZWQgeWV0LgorICAgICAgICAvLyBJZiB0aGUgY29va2llIHJlcXVlc3RzIHRoZXNl
IHZpZXdzLCB0aGV5IHdpbGwgYmUgc2hvd24gd2hlbiB0aGUgc3RvcmFnZSBvYmplY3QKKyAgICAg
ICAgLy8gaXMgYWRkZWQgKGlmIGl0IG1hdGNoZXMgZXhhY3RseSksIG9yIGFueSB2aWV3IG9mIHRo
ZSBzYW1lIHR5cGUgKGFmdGVyIGEgdGltZW91dCkuCisgICAgICAgIGlmICghc2hvd25Db250ZW50
VmlldykgeworICAgICAgICAgICAgaWYgKHRoaXMuX2xhc3RBdHRlbXB0Q29va2llQ2hlY2tpbmdU
aW1lb3V0KQorICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLl9sYXN0QXR0ZW1wdENv
b2tpZUNoZWNraW5nVGltZW91dCk7CisKKyAgICAgICAgICAgIHZhciBsYXN0QXR0ZW1wdFRvUmVz
dG9yZUZyb21Db29raWUgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBkZWxldGUgdGhp
cy5fbGFzdEF0dGVtcHRDb29raWVDaGVja2luZ1RpbWVvdXQ7CisgICAgICAgICAgICAgICAgdGhp
cy5fcmVzb2x2ZUFuZFNob3dQZW5kaW5nQ29udGVudFZpZXdDb29raWUodHJ1ZSk7CisgICAgICAg
ICAgICB9OworCisgICAgICAgICAgICAvLyBXaGVuIHRoZSBzcGVjaWZpYyBzdG9yYWdlIGl0ZW0g
d2Fzbid0IGZvdW5kIHdlIHdhbnQgdG8gcmVsYXggdGhlIGNoZWNrIHRvIHNob3cgdGhlIGZpcnN0
IGl0ZW0gd2l0aCB0aGUKKyAgICAgICAgICAgIC8vIHNhbWUgdHlwZS4gVGhlcmUgaXMgbm8gZ29v
ZCB0aW1lIHRvIG5hdHVyYWxseSBkZWNsYXJlIHRoZSBjb29raWUgd2Fzbid0IGZvdW5kLCBzbyB3
ZSBkbyB0aGF0IG9uIGEgdGltZW91dC4KKyAgICAgICAgICAgIHRoaXMuX2xhc3RBdHRlbXB0Q29v
a2llQ2hlY2tpbmdUaW1lb3V0ID0gc2V0VGltZW91dChsYXN0QXR0ZW1wdFRvUmVzdG9yZUZyb21D
b29raWUuYmluZCh0aGlzKSwgNTAwKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBzaG93
bkNvbnRlbnRWaWV3OwogICAgIH0sCiAKLSAgICBzaG93Q29udGVudFZpZXc6IGZ1bmN0aW9uKGNv
bnRlbnRWaWV3LCBjb29raWUsIHJlc3RvcmVDYWxsYmFjaykKKyAgICBzaG93Q29udGVudFZpZXc6
IGZ1bmN0aW9uKGNvbnRlbnRWaWV3LCBjb29raWUpCiAgICAgewotICAgICAgICByZXR1cm4gdGhp
cy5fY29udGVudFZpZXdDb250YWluZXIuc2hvd0NvbnRlbnRWaWV3KGNvbnRlbnRWaWV3LCBjb29r
aWUsIHJlc3RvcmVDYWxsYmFjayk7CisgICAgICAgIHJldHVybiB0aGlzLl9jb250ZW50Vmlld0Nv
bnRhaW5lci5zaG93Q29udGVudFZpZXcoY29udGVudFZpZXcsIGNvb2tpZSk7CiAgICAgfSwKIAog
ICAgIGNvbnRlbnRWaWV3Rm9yUmVwcmVzZW50ZWRPYmplY3Q6IGZ1bmN0aW9uKHJlcHJlc2VudGVk
T2JqZWN0LCBvbmx5RXhpc3RpbmcpCkBAIC01MDEsNiArNTM3LDQ1IEBAIFdlYkluc3BlY3Rvci5D
b250ZW50QnJvd3Nlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2Rpc3BhdGNoQ3VycmVu
dFJlcHJlc2VudGVkT2JqZWN0c0RpZENoYW5nZUV2ZW50KCk7CiAgICAgfSwKIAorICAgIF9yZXNv
bHZlQW5kU2hvd1BlbmRpbmdDb250ZW50Vmlld0Nvb2tpZTogZnVuY3Rpb24obWF0Y2hPblR5cGVB
bG9uZSkKKyAgICB7CisgICAgICAgIHZhciBjb29raWUgPSB0aGlzLl9wZW5kaW5nQ29udGVudFZp
ZXdDb29raWU7CisgICAgICAgIGlmICghY29va2llKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgICAgIHZhciByZXByZXNlbnRlZE9iamVjdCA9IG51bGw7CisKKyAgICAgICAgaWYg
KGNvb2tpZS50eXBlID09PSBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcuUmVzb3VyY2VDb250ZW50
Vmlld0Nvb2tpZVR5cGUpCisgICAgICAgICAgICByZXByZXNlbnRlZE9iamVjdCA9IFdlYkluc3Bl
Y3Rvci5mcmFtZVJlc291cmNlTWFuYWdlci5vYmplY3RGb3JDb29raWUoY29va2llKTsKKworICAg
ICAgICBpZiAoY29va2llLnR5cGUgPT09IFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5UaW1lbGlu
ZXNDb250ZW50Vmlld0Nvb2tpZVR5cGUpCisgICAgICAgICAgICByZXByZXNlbnRlZE9iamVjdCA9
IFdlYkluc3BlY3Rvci50aW1lbGluZU1hbmFnZXIub2JqZWN0Rm9yQ29va2llKGNvb2tpZSk7CisK
KyAgICAgICAgaWYgKGNvb2tpZS50eXBlID09PSBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcuQ29v
a2llU3RvcmFnZUNvbnRlbnRWaWV3Q29va2llVHlwZSB8fCBjb29raWUudHlwZSA9PT0gV2ViSW5z
cGVjdG9yLkNvbnRlbnRWaWV3LkRhdGFiYXNlQ29udGVudFZpZXdDb29raWVUeXBlICB8fCBjb29r
aWUudHlwZSA9PT0gV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LkRhdGFiYXNlVGFibGVDb250ZW50
Vmlld0Nvb2tpZVR5cGUgfHwgY29va2llLnR5cGUgPT09IFdlYkluc3BlY3Rvci5Db250ZW50Vmll
dy5ET01TdG9yYWdlQ29udGVudFZpZXdDb29raWVUeXBlKQorICAgICAgICAgICAgcmVwcmVzZW50
ZWRPYmplY3QgPSBXZWJJbnNwZWN0b3Iuc3RvcmFnZU1hbmFnZXIub2JqZWN0Rm9yQ29va2llKHRo
aXMuX3BlbmRpbmdDb250ZW50Vmlld0Nvb2tpZSwgbWF0Y2hPblR5cGVBbG9uZSk7CisKKyAgICAg
ICAgaWYgKGNvb2tpZS50eXBlID09PSBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcuQXBwbGljYXRp
b25DYWNoZUNvbnRlbnRWaWV3Q29va2llVHlwZSkKKyAgICAgICAgICAgIHJlcHJlc2VudGVkT2Jq
ZWN0ID0gV2ViSW5zcGVjdG9yLmFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLm9iamVjdEZvckNvb2tp
ZSh0aGlzLl9wZW5kaW5nQ29udGVudFZpZXdDb29raWUsIG1hdGNoT25UeXBlQWxvbmUpOworCisg
ICAgICAgIGlmICghcmVwcmVzZW50ZWRPYmplY3QpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICAgICAgLy8gSWYgd2UgcmVhY2hlZCB0aGlzIHBvaW50LCB0aGVuIHdlIHNob3VsZCBi
ZSBhYmxlIHRvIGNyZWF0ZSBhbmQvb3IgZGlzcGxheSBhIGNvbnRlbnQgdmlldyBiYXNlZCBvbiB0
aGUgY29va2llLgorICAgICAgICBkZWxldGUgdGhpcy5fcGVuZGluZ0NvbnRlbnRWaWV3Q29va2ll
OworICAgICAgICBpZiAodGhpcy5fbGFzdEF0dGVtcHRDb29raWVDaGVja2luZ1RpbWVvdXQpCisg
ICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5fbGFzdEF0dGVtcHRDb29raWVDaGVja2luZ1Rp
bWVvdXQpOworCisgICAgICAgIC8vIERlbGF5IHRoaXMgd29yayBiZWNhdXNlIG90aGVyIGxpc3Rl
bmVycyBvZiB0aGUgb3JpZ2luYXRpbmcgZXZlbnQgbWlnaHQgbm90IGhhdmUgZmlyZWQgeWV0Lgor
ICAgICAgICAvLyBTbyBkaXNwbGF5aW5nIHRoZSBjb250ZW50IHZpZXcgYmVmb3JlIHRob3NlIGxp
c3RlbmVycyBkbyB0aGVpciB3b3JrIG1pZ2h0IGNhdXNlIHRoZQorICAgICAgICAvLyBkZXBlbmRl
bnQgdmlldyBzdGF0ZXMgKG5hdmlnYXRpb24gc2lkZWJhciB0cmVlIGVsZW1lbnRzLCBwYXRoIGNv
bXBvbmVudHMpIHRvIGJlIHdyb25nLgorICAgICAgICBmdW5jdGlvbiBkZWxheWVkV29yaygpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHRoaXMuc2hvd0NvbnRlbnRWaWV3Rm9yUmVwcmVzZW50ZWRP
YmplY3QocmVwcmVzZW50ZWRPYmplY3QsIGNvb2tpZSk7CisgICAgICAgIH0KKyAgICAgICAgc2V0
VGltZW91dChkZWxheWVkV29yay5iaW5kKHRoaXMpLCAwKTsKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgfSwKKwogICAgIF9jb250ZW50Vmlld05hdmlnYXRpb25JdGVtc0RpZENoYW5nZTogZnVu
Y3Rpb24oZXZlbnQpCiAgICAgewogICAgICAgICBpZiAoZXZlbnQudGFyZ2V0ICE9PSB0aGlzLmN1
cnJlbnRDb250ZW50VmlldykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL0NvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvQ29udGVudFZpZXcuanMKaW5kZXggZjViNmZmM2YzZTBiODI1MDg1MmU2NGI5OTZiYjU3
NmI0NDBmODI1YS4uNTc1Mjg0Mzk1MWRmYmQ4ZTdmODNjYmUwYmFkM2I4MzhmYTYwM2VhMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udGVudFZpZXcu
anMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udGVudFZpZXcu
anMKQEAgLTk2LDYgKzk2LDE0IEBAIFdlYkluc3BlY3Rvci5Db250ZW50VmlldyA9IGZ1bmN0aW9u
KHJlcHJlc2VudGVkT2JqZWN0KQogCiBXZWJJbnNwZWN0b3IuT2JqZWN0LmFkZENvbnN0cnVjdG9y
RnVuY3Rpb25zKFdlYkluc3BlY3Rvci5Db250ZW50Vmlldyk7CiAKK1dlYkluc3BlY3Rvci5Db250
ZW50Vmlldy5BcHBsaWNhdGlvbkNhY2hlQ29udGVudFZpZXdDb29raWVUeXBlID0gImFwcGxpY2F0
aW9uLWNhY2hlIjsKK1dlYkluc3BlY3Rvci5Db250ZW50Vmlldy5Db29raWVTdG9yYWdlQ29udGVu
dFZpZXdDb29raWVUeXBlID0gImNvb2tpZS1zdG9yYWdlIjsKK1dlYkluc3BlY3Rvci5Db250ZW50
Vmlldy5EYXRhYmFzZUNvbnRlbnRWaWV3Q29va2llVHlwZSA9ICJkYXRhYmFzZSI7CitXZWJJbnNw
ZWN0b3IuQ29udGVudFZpZXcuRGF0YWJhc2VUYWJsZUNvbnRlbnRWaWV3Q29va2llVHlwZSA9ICJk
YXRhYmFzZS10YWJsZSI7CitXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcuRE9NU3RvcmFnZUNvbnRl
bnRWaWV3Q29va2llVHlwZSA9ICJkb20tc3RvcmFnZSI7CitXZWJJbnNwZWN0b3IuQ29udGVudFZp
ZXcuVGltZWxpbmVzQ29udGVudFZpZXdDb29raWVUeXBlID0gInRpbWVsaW5lIjsKK1dlYkluc3Bl
Y3Rvci5Db250ZW50Vmlldy5SZXNvdXJjZUNvbnRlbnRWaWV3Q29va2llVHlwZSA9ICJyZXNvdXJj
ZSI7IC8vIGluY2x1ZGVzIEZyYW1lIHRvby4KKwogV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Lmlz
Vmlld2FibGUgPSBmdW5jdGlvbihyZXByZXNlbnRlZE9iamVjdCkKIHsKICAgICBpZiAocmVwcmVz
ZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuRnJhbWUpCkBAIC0yMzMsNiArMjQx
LDE2IEBAIFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIC8v
IEltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMuCiAgICAgfSwKIAorICAgIHNhdmVUb0Nvb2tpZTog
ZnVuY3Rpb24oY29va2llKQorICAgIHsKKyAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViY2xh
c3Nlcy4KKyAgICB9LAorCisgICAgcmVzdG9yZUZyb21Db29raWU6IGZ1bmN0aW9uKGNvb2tpZSkK
KyAgICB7CisgICAgICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMuCisgICAgfSwKKwog
ICAgIGNhbkdvQmFjazogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgLy8gSW1wbGVtZW50ZWQg
Ynkgc3ViY2xhc3Nlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL0NvbnRlbnRWaWV3Q29udGFpbmVyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvQ29udGVudFZpZXdDb250YWluZXIuanMKaW5kZXggODU1MGU2YTEwNTdjMjg3
MDRiNjgzYTc0YTYyMmQ3MmNkMDIwNjMwOS4uYTUzMmMwYjQxNGQzYjEyODMzOGI2MGI1NTFhOGVi
ZTJjNWVjYjliNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvQ29udGVudFZpZXdDb250YWluZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvQ29udGVudFZpZXdDb250YWluZXIuanMKQEAgLTEzMyw3ICsxMzMsNyBAQCBX
ZWJJbnNwZWN0b3IuQ29udGVudFZpZXdDb250YWluZXIucHJvdG90eXBlID0gewogICAgICAgICBy
ZXR1cm4gY29udGVudFZpZXc7CiAgICAgfSwKIAotICAgIHNob3dDb250ZW50VmlldzogZnVuY3Rp
b24oY29udGVudFZpZXcsIGNvb2tpZSwgcmVzdG9yZUNhbGxiYWNrKQorICAgIHNob3dDb250ZW50
VmlldzogZnVuY3Rpb24oY29udGVudFZpZXcsIGNvb2tpZSkKICAgICB7CiAgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KGNvbnRlbnRWaWV3IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3
KTsKICAgICAgICAgaWYgKCEoY29udGVudFZpZXcgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuQ29u
dGVudFZpZXcpKQpAQCAtMTQ2LDcgKzE0Niw3IEBAIFdlYkluc3BlY3Rvci5Db250ZW50Vmlld0Nv
bnRhaW5lci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm4gbnVsbDsKIAogICAgICAg
ICB2YXIgY3VycmVudEVudHJ5ID0gdGhpcy5jdXJyZW50QmFja0ZvcndhcmRFbnRyeTsKLSAgICAg
ICAgdmFyIHByb3Zpc2lvbmFsRW50cnkgPSBuZXcgV2ViSW5zcGVjdG9yLkJhY2tGb3J3YXJkRW50
cnkoY29udGVudFZpZXcsIGNvb2tpZSwgcmVzdG9yZUNhbGxiYWNrKTsKKyAgICAgICAgdmFyIHBy
b3Zpc2lvbmFsRW50cnkgPSBuZXcgV2ViSW5zcGVjdG9yLkJhY2tGb3J3YXJkRW50cnkoY29udGVu
dFZpZXcsIGNvb2tpZSk7CiAgICAgICAgIC8vIERvbid0IGRvIGFueXRoaW5nIGlmIHdlIHdvdWxk
IGhhdmUgYWRkZWQgYW4gaWRlbnRpY2FsIGJhY2svZm9yd2FyZCBsaXN0IGVudHJ5LgogICAgICAg
ICBpZiAoY3VycmVudEVudHJ5ICYmIGN1cnJlbnRFbnRyeS5jb250ZW50VmlldyA9PT0gY29udGVu
dFZpZXcgJiYgT2JqZWN0LnNoYWxsb3dFcXVhbChwcm92aXNpb25hbEVudHJ5LmNvb2tpZSwgY3Vy
cmVudEVudHJ5LmNvb2tpZSkpCiAgICAgICAgICAgICByZXR1cm4gY3VycmVudEVudHJ5LmNvbnRl
bnRWaWV3OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Q29va2llU3RvcmFnZUNvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvQ29va2llU3RvcmFnZUNvbnRlbnRWaWV3LmpzCmluZGV4IDg3YmVlOWYxZjU0ZTE5
MDE2ZDdmNmVlMjUwYmNjNTc3MjcxMWM2ZGMuLjU5ZWE0NmY5YmYzZmNhNzEzYjNmMGRkNTdjYTUy
N2ExNzE4ZjBkMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL0Nvb2tpZVN0b3JhZ2VDb250ZW50Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Db29raWVTdG9yYWdlQ29udGVudFZpZXcuanMKQEAgLTU5LDYgKzU5
LDEyIEBAIFdlYkluc3BlY3Rvci5Db29raWVTdG9yYWdlQ29udGVudFZpZXcucHJvdG90eXBlID0g
ewogICAgICAgICAgICAgdGhpcy5fZGF0YUdyaWQudXBkYXRlTGF5b3V0KCk7CiAgICAgfSwKIAor
ICAgIHNhdmVUb0Nvb2tpZTogZnVuY3Rpb24oY29va2llKQorICAgIHsKKyAgICAgICAgY29va2ll
LnR5cGUgPSBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcuQ29va2llU3RvcmFnZUNvbnRlbnRWaWV3
Q29va2llVHlwZTsKKyAgICAgICAgY29va2llLmhvc3QgPSB0aGlzLnJlcHJlc2VudGVkT2JqZWN0
Lmhvc3Q7CisgICAgfSwKKwogICAgIGdldCBzY3JvbGxhYmxlRWxlbWVudHMoKQogICAgIHsKICAg
ICAgICAgaWYgKCF0aGlzLl9kYXRhR3JpZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL0RPTVN0b3JhZ2VDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0RPTVN0b3JhZ2VDb250ZW50Vmlldy5qcwppbmRleCA3
NWY1NGE5ZTI0ODFjYzU0YTkxNmE5OTYyNDMxNzZlMGU3MDk0ZmE2Li40NmEzOTViMzJlNWRkODg0
ZDBmNjgwYTZlODc2ZDJiN2Q3NmVjMGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9ET01TdG9yYWdlQ29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRE9NU3RvcmFnZUNvbnRlbnRWaWV3LmpzCkBAIC00
NSw2ICs0NSwxMyBAQCBXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZUNvbnRlbnRWaWV3LnByb3RvdHlw
ZSA9IHsKICAgICAgICAgdGhpcy5yZXByZXNlbnRlZE9iamVjdC5nZXRFbnRyaWVzKHRoaXMuX3No
b3dET01TdG9yYWdlRW50cmllcy5iaW5kKHRoaXMpKTsKICAgICB9LAogCisgICAgc2F2ZVRvQ29v
a2llOiBmdW5jdGlvbihjb29raWUpCisgICAgeworICAgICAgICBjb29raWUudHlwZSA9IFdlYklu
c3BlY3Rvci5Db250ZW50Vmlldy5ET01TdG9yYWdlQ29udGVudFZpZXdDb29raWVUeXBlOworICAg
ICAgICBjb29raWUuaXNMb2NhbFN0b3JhZ2UgPSB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmlzTG9j
YWxTdG9yYWdlKCk7CisgICAgICAgIGNvb2tpZS5ob3N0ID0gdGhpcy5yZXByZXNlbnRlZE9iamVj
dC5ob3N0OworICAgIH0sCisKICAgICBpdGVtc0NsZWFyZWQ6IGZ1bmN0aW9uKCkKICAgICB7CiAg
ICAgICAgIHRoaXMuX2RhdGFHcmlkLnJlbW92ZUNoaWxkcmVuKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9EYXRhYmFzZUNvbnRlbnRWaWV3LmpzIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRGF0YWJhc2VDb250ZW50Vmlldy5q
cwppbmRleCA3YmU0OTZlZDkxZjg4YjU0YzBiYzc4ZThkYWM0Y2NmNDg2YTJhYWM1Li4zODk5Y2U1
MzM0ODYyZGUwMjdlMDA2N2Q3ZDg0MGJlMDhmMmIwODQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9EYXRhYmFzZUNvbnRlbnRWaWV3LmpzCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0RhdGFiYXNlQ29udGVudFZpZXcuanMK
QEAgLTUwLDYgKzUwLDggQEAgV2ViSW5zcGVjdG9yLkRhdGFiYXNlQ29udGVudFZpZXcuRXZlbnQg
PSB7CiBXZWJJbnNwZWN0b3IuRGF0YWJhc2VDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAg
Y29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5EYXRhYmFzZUNvbnRlbnRWaWV3LAogCisgICAgLy8g
UHVibGljCisKICAgICBzaG93bjogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgdGhpcy5wcm9t
cHQuc2hvd24oKTsKQEAgLTY3LDExICs2OSwxMyBAQCBXZWJJbnNwZWN0b3IuRGF0YWJhc2VDb250
ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KICAgICB9LAogCi0gICAgX21lc3NhZ2Vz
Q2xpY2tlZDogZnVuY3Rpb24oKQorICAgIHNhdmVUb0Nvb2tpZTogZnVuY3Rpb24oY29va2llKQog
ICAgIHsKLSAgICAgICAgdGhpcy5wcm9tcHQuZm9jdXMoKTsKKyAgICAgICAgY29va2llLnR5cGUg
PSBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcuRGF0YWJhc2VDb250ZW50Vmlld0Nvb2tpZVR5cGU7
CisgICAgICAgIGNvb2tpZS5ob3N0ID0gdGhpcy5yZXByZXNlbnRlZE9iamVjdC5ob3N0OworICAg
ICAgICBjb29raWUubmFtZSA9IHRoaXMucmVwcmVzZW50ZWRPYmplY3QubmFtZTsKICAgICB9LAot
ICAgIAorICAKICAgICBjb25zb2xlUHJvbXB0Q29tcGxldGlvbnNOZWVkZWQ6IGZ1bmN0aW9uKHBy
b21wdCwgZGVmYXVsdENvbXBsZXRpb25zLCBiYXNlLCBwcmVmaXgsIHN1ZmZpeCkKICAgICB7CiAg
ICAgICAgIHZhciByZXN1bHRzID0gW107CkBAIC0xMDMsNiArMTA3LDEzIEBAIFdlYkluc3BlY3Rv
ci5EYXRhYmFzZUNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5kYXRhYmFz
ZS5leGVjdXRlU1FMKHF1ZXJ5LCB0aGlzLl9xdWVyeUZpbmlzaGVkLmJpbmQodGhpcywgcXVlcnkp
LCB0aGlzLl9xdWVyeUVycm9yLmJpbmQodGhpcywgcXVlcnkpKTsKICAgICB9LAogCisgICAgLy8g
UHJpdmF0ZQorCisgICAgX21lc3NhZ2VzQ2xpY2tlZDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAg
ICAgdGhpcy5wcm9tcHQuZm9jdXMoKTsKKyAgICB9LAorCiAgICAgX3F1ZXJ5RmluaXNoZWQ6IGZ1
bmN0aW9uKHF1ZXJ5LCBjb2x1bW5OYW1lcywgdmFsdWVzKQogICAgIHsKICAgICAgICAgdmFyIGRh
dGFHcmlkID0gV2ViSW5zcGVjdG9yLkRhdGFHcmlkLmNyZWF0ZVNvcnRhYmxlRGF0YUdyaWQoY29s
dW1uTmFtZXMsIHZhbHVlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9EYXRhYmFzZVRhYmxlQ29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9EYXRhYmFzZVRhYmxlQ29udGVudFZpZXcuanMKaW5kZXggNGVh
YjcxMjdkMjNmMzU4NmU3MGFkNGFhYzBjNjEzOTdmOTRiYzQ4Yy4uYzU5YTNmOTRlNDM3ZTllNzUz
MDZlYTg0YmMwMGFkYTk3ZGI3MDJmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvRGF0YWJhc2VUYWJsZUNvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0RhdGFiYXNlVGFibGVDb250ZW50Vmlldy5qcwpA
QCAtNTAsNiArNTAsMTQgQEAgV2ViSW5zcGVjdG9yLkRhdGFiYXNlVGFibGVDb250ZW50Vmlldy5w
cm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9kYXRhR3JpZC51cGRhdGVMYXlvdXQoKTsK
ICAgICB9LAogCisgICAgc2F2ZVRvQ29va2llOiBmdW5jdGlvbihjb29raWUpCisgICAgeworICAg
ICAgICBjb29raWUudHlwZSA9IFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5EYXRhYmFzZVRhYmxl
Q29udGVudFZpZXdDb29raWVUeXBlOworICAgICAgICBjb29raWUuaG9zdCA9IHRoaXMucmVwcmVz
ZW50ZWRPYmplY3QuaG9zdDsKKyAgICAgICAgY29va2llLm5hbWUgPSB0aGlzLnJlcHJlc2VudGVk
T2JqZWN0Lm5hbWU7CisgICAgICAgIGNvb2tpZS5kYXRhYmFzZSA9IHRoaXMucmVwcmVzZW50ZWRP
YmplY3QuZGF0YWJhc2UubmFtZTsKKyAgICB9LAorCiAgICAgZ2V0IHNjcm9sbGFibGVFbGVtZW50
cygpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX2RhdGFHcmlkKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRnJhbWVDb250ZW50Vmlldy5qcyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0ZyYW1lQ29udGVudFZpZXcuanMKaW5k
ZXggZDBiYzI4NmM0ZDcyYWZhYmYzODViNjYzOTlhZWNkZWI3ZDg3YWIyZi4uYzZlMGE5OGFlY2Mw
ZGE4NTZiYTg5N2NjNTUwNWZjZWI1OTA1Y2UzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvRnJhbWVDb250ZW50Vmlldy5qcworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9GcmFtZUNvbnRlbnRWaWV3LmpzCkBAIC05NSw2ICs5
NSwyMSBAQCBXZWJJbnNwZWN0b3IuRnJhbWVDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIHRoaXMuX3Nob3duSW5pdGlhbENvbnRlbnQgPSBmYWxzZTsKICAgICB9LAogCisgICAgc2F2
ZVRvQ29va2llOiBmdW5jdGlvbihjb29raWUpCisgICAgeworICAgICAgICBjb29raWUudHlwZSA9
IFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5SZXNvdXJjZUNvbnRlbnRWaWV3Q29va2llVHlwZTsK
KyAgICAgICAgY29va2llLnN1YnZpZXcgPSB0aGlzLl9jdXJyZW50Q29udGVudFZpZXdTZXR0aW5n
LnZhbHVlOworICAgICAgICBpZiAoIXRoaXMucmVwcmVzZW50ZWRPYmplY3QuaXNNYWluRnJhbWUo
KSkKKyAgICAgICAgICAgIGNvb2tpZS51cmwgPSB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LnVybDsK
KyAgICB9LAorCisgICAgcmVzdG9yZUZyb21Db29raWU6IGZ1bmN0aW9uKGNvb2tpZSkKKyAgICB7
CisgICAgICAgIHZhciBzaG93blZpZXcgPSB0aGlzLl9zaG93Q29udGVudFZpZXdGb3JJZGVudGlm
aWVyKGNvb2tpZS5zdWJ2aWV3KTsKKyAgICAgICAgaWYgKCJsaW5lTnVtYmVyIiBpbiBjb29raWUg
JiYgImNvbHVtbk51bWJlciIgaW4gY29va2llKQorICAgICAgICAgICAgdGhpcy5zaG93U291cmNl
Q29kZShuZXcgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVQb3NpdGlvbihjb29raWUubGluZU51bWJl
ciwgY29va2llLmNvbHVtbk51bWJlcikpOworICAgIH0sCisKICAgICBzaG93UmVzb3VyY2U6IGZ1
bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHRoaXMuX3Nob3duSW5pdGlhbENvbnRlbnQgPSB0cnVl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRnJhbWVS
ZXNvdXJjZU1hbmFnZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9G
cmFtZVJlc291cmNlTWFuYWdlci5qcwppbmRleCA4ZWVmZTE3MDA2YjRiZWFmYzg0OTdhOTZhYWE2
MDQ3MDFiNzg4Zjk2Li4zZDE5MDVkZTgwYTg2ZDY2MzRiZDhiY2RhNTcxZmQwOWJmZjc1ZDQ1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9GcmFtZVJlc291
cmNlTWFuYWdlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9G
cmFtZVJlc291cmNlTWFuYWdlci5qcwpAQCAtODAsNiArODAsMjAgQEAgV2ViSW5zcGVjdG9yLkZy
YW1lUmVzb3VyY2VNYW5hZ2VyLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2Zy
YW1lSWRlbnRpZmllck1hcFtmcmFtZUlkXSB8fCBudWxsOwogICAgIH0sCiAKKworICAgIG9iamVj
dEZvckNvb2tpZTogZnVuY3Rpb24oY29va2llKQorICAgIHsKKyAgICAgICAgdmFyIHJlcHJlc2Vu
dGVkT2JqZWN0ID0gKGNvb2tpZS51cmwpID8gdGhpcy5yZXNvdXJjZUZvclVSTChjb29raWUudXJs
KSA6IHRoaXMubWFpbkZyYW1lOworCisgICAgICAgIGlmICghcmVwcmVzZW50ZWRPYmplY3QpCisg
ICAgICAgICAgICByZXByZXNlbnRlZE9iamVjdCA9IHRoaXMubWFpbkZyYW1lOworCisgICAgICAg
IGlmIChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5SZXNvdXJjZSAm
JiByZXByZXNlbnRlZE9iamVjdC5pc01haW5SZXNvdXJjZSgpKQorICAgICAgICAgICAgcmVwcmVz
ZW50ZWRPYmplY3QgPSByZXByZXNlbnRlZE9iamVjdC5wYXJlbnRGcmFtZTsKKworICAgICAgICBy
ZXR1cm4gcmVwcmVzZW50ZWRPYmplY3Q7CisgICAgfSwKKwogICAgIGZyYW1lRGlkTmF2aWdhdGU6
IGZ1bmN0aW9uKGZyYW1lUGF5bG9hZCkKICAgICB7CiAgICAgICAgIC8vIENhbGxlZCBmcm9tIFdl
Ykluc3BlY3Rvci5QYWdlT2JzZXJ2ZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9JbnN0cnVtZW50U2lkZWJhclBhbmVsLmpzIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW5zdHJ1bWVudFNpZGViYXJQYW5lbC5qcwppbmRleCBm
NzhkYjEwNmRlYjA0ODJiZGU4N2NjNmEzZjllMjFlYjlhYWRjMTdjLi5mOGY5YmJjZWU3YmNmNTMz
NzEwZThhMDk2MjM4YjIzOWYxOTU4OGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9JbnN0cnVtZW50U2lkZWJhclBhbmVsLmpzCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0luc3RydW1lbnRTaWRlYmFyUGFuZWwuanMKQEAg
LTU1LDkgKzU1LDcgQEAgV2ViSW5zcGVjdG9yLkluc3RydW1lbnRTaWRlYmFyUGFuZWwgPSBmdW5j
dGlvbigpCiAgICAgdGhpcy5fdGltZWxpbmVzVHJlZU91dGxpbmUgPSBuZXcgVHJlZU91dGxpbmUo
dGltZWxpbmVzVHJlZU91dGxpbmVFbGVtZW50KTsKICAgICB0aGlzLl90aW1lbGluZXNUcmVlT3V0
bGluZS5hbGxvd3NSZXBlYXRTZWxlY3Rpb24gPSB0cnVlOwogCi0gICAgdGhpcy5fdGltZWxpbmVz
T2JqZWN0ID0gbmV3IFdlYkluc3BlY3Rvci5UaW1lbGluZXNPYmplY3Q7Ci0KLSAgICB0aGlzLl90
aW1lbGluZXNUcmVlRWxlbWVudCA9IG5ldyBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50
KFdlYkluc3BlY3Rvci5JbnN0cnVtZW50U2lkZWJhclBhbmVsLlN0b3B3YXRjaEljb25TdHlsZUNs
YXNzLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlRpbWVsaW5lcyIpLCBudWxsLCB0aGlzLl90aW1l
bGluZXNPYmplY3QpOworICAgIHRoaXMuX3RpbWVsaW5lc1RyZWVFbGVtZW50ID0gbmV3IFdlYklu
c3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQoV2ViSW5zcGVjdG9yLkluc3RydW1lbnRTaWRlYmFy
UGFuZWwuU3RvcHdhdGNoSWNvblN0eWxlQ2xhc3MsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiVGlt
ZWxpbmVzIiksIG51bGwsIFdlYkluc3BlY3Rvci50aW1lbGluZU1hbmFnZXIudGltZWxpbmVzKTsK
IAogICAgIHZhciBuZXR3b3JrVGltZWxpbmVUcmVlRWxlbWVudCA9IG5ldyBXZWJJbnNwZWN0b3Iu
R2VuZXJhbFRyZWVFbGVtZW50KFdlYkluc3BlY3Rvci5JbnN0cnVtZW50U2lkZWJhclBhbmVsLk5l
dHdvcmtJY29uU3R5bGVDbGFzcywgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJOZXR3b3JrIFJlcXVl
c3RzIiksIG51bGwsIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZC5UeXBlLk5ldHdvcmspOwog
ICAgIG5ldHdvcmtUaW1lbGluZVRyZWVFbGVtZW50LnNtYWxsID0gdHJ1ZTsKQEAgLTE3NCw3ICsx
NzIsNyBAQCBXZWJJbnNwZWN0b3IuSW5zdHJ1bWVudFNpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7
CiAKICAgICBzaG93VGltZWxpbmU6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIFdlYkluc3Bl
Y3Rvci5jb250ZW50QnJvd3Nlci5zaG93Q29udGVudFZpZXdGb3JSZXByZXNlbnRlZE9iamVjdCh0
aGlzLl90aW1lbGluZXNPYmplY3QpOworICAgICAgICBXZWJJbnNwZWN0b3IuY29udGVudEJyb3dz
ZXIuc2hvd0NvbnRlbnRWaWV3Rm9yUmVwcmVzZW50ZWRPYmplY3QoV2ViSW5zcGVjdG9yLnRpbWVs
aW5lTWFuYWdlci50aW1lbGluZXMpOwogICAgIH0sCiAKICAgICBzaG93VGltZWxpbmVGb3JSZWNv
cmRUeXBlOiBmdW5jdGlvbih0eXBlKQpAQCAtMTg2LDIyICsxODQsNiBAQCBXZWJJbnNwZWN0b3Iu
SW5zdHJ1bWVudFNpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRyZWVFbGVtZW50
VG9TZWxlY3Quc2VsZWN0KHRydWUsIHRydWUpOwogICAgIH0sCiAKLSAgICBjb29raWVGb3JDb250
ZW50VmlldzogZnVuY3Rpb24oY29udGVudFZpZXcpCi0gICAgewotICAgICAgICBpZiAoY29udGVu
dFZpZXcgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuVGltZWxpbmVzQ29udGVudFZpZXcpCi0gICAg
ICAgICAgICByZXR1cm4ge3RpbWVsaW5lOiB0cnVlfTsKLSAgICAgICAgcmV0dXJuIG51bGw7Ci0g
ICAgfSwKLQotICAgIHNob3dDb250ZW50Vmlld0ZvckNvb2tpZTogZnVuY3Rpb24oY29udGVudFZp
ZXdDb29raWUpCi0gICAgewotICAgICAgICBpZiAoIWNvbnRlbnRWaWV3Q29va2llKQotICAgICAg
ICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlmIChjb250ZW50Vmlld0Nvb2tpZS50aW1lbGluZSkK
LSAgICAgICAgICAgIHRoaXMuc2hvd1RpbWVsaW5lKCk7Ci0gICAgfSwKLQogICAgIHNob3dQcm9m
aWxlOiBmdW5jdGlvbih0eXBlLCB0aXRsZSkKICAgICB7CiAgICAgICAgIHZhciBwcm9maWxlVHJl
ZUVsZW1lbnRzID0gdGhpcy5jb250ZW50VHJlZU91dGxpbmUuY2hpbGRyZW47CkBAIC0yMTcsMTEg
KzE5OSw4IEBAIFdlYkluc3BlY3Rvci5JbnN0cnVtZW50U2lkZWJhclBhbmVsLnByb3RvdHlwZSA9
IHsKIAogICAgIHNob3duOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICAvLyBSZXNlbGVjdCB0
aGUgc2VsZWN0ZWQgdHJlZSBlbGVtZW50IHRvIGNhdXNlIHRoZSBjb250ZW50IHZpZXcgdG8gYmUg
c2hvd24gYXMgd2VsbC4gPHJkYXI6Ly9wcm9ibGVtLzEwODU0NzI3PgotICAgICAgICB2YXIgc2Vs
ZWN0ZWRUcmVlRWxlbWVudCA9IHRoaXMuX3RpbWVsaW5lc1RyZWVPdXRsaW5lLnNlbGVjdGVkVHJl
ZUVsZW1lbnQ7Ci0gICAgICAgIGlmIChzZWxlY3RlZFRyZWVFbGVtZW50KQotICAgICAgICAgICAg
c2VsZWN0ZWRUcmVlRWxlbWVudC5zZWxlY3QodHJ1ZSwgdHJ1ZSk7Ci0KKyAgICAgICAgLy8gRGVs
ZWdhdGUgdG8gVGltZWxpbmVzQ29udGVudFZpZXcgdG8gc2VsZWN0IHRoZSBkZWZhdWx0IHJlY29y
ZCB0eXBlLgorICAgICAgICBXZWJJbnNwZWN0b3IuY29udGVudEJyb3dzZXIuc2hvd0NvbnRlbnRW
aWV3Rm9yUmVwcmVzZW50ZWRPYmplY3QoV2ViSW5zcGVjdG9yLnRpbWVsaW5lTWFuYWdlci50aW1l
bGluZXMpOwogICAgICAgICBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbC5wcm90
b3R5cGUuc2hvd24uY2FsbCh0aGlzKTsKICAgICB9LAogCkBAIC0yMzcsNyArMjE2LDcgQEAgV2Vi
SW5zcGVjdG9yLkluc3RydW1lbnRTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICBp
ZiAoc2VsZWN0ZWRUcmVlRWxlbWVudCkKICAgICAgICAgICAgIHNlbGVjdGVkVHJlZUVsZW1lbnQu
ZGVzZWxlY3QoKTsKIAotICAgICAgICB2YXIgY29udGVudFZpZXcgPSBXZWJJbnNwZWN0b3IuY29u
dGVudEJyb3dzZXIuY29udGVudFZpZXdGb3JSZXByZXNlbnRlZE9iamVjdCh0aGlzLl90aW1lbGlu
ZXNPYmplY3QpOworICAgICAgICB2YXIgY29udGVudFZpZXcgPSBXZWJJbnNwZWN0b3IuY29udGVu
dEJyb3dzZXIuY29udGVudFZpZXdGb3JSZXByZXNlbnRlZE9iamVjdChXZWJJbnNwZWN0b3IudGlt
ZWxpbmVNYW5hZ2VyLnRpbWVsaW5lcyk7CiAgICAgICAgIGNvbnRlbnRWaWV3LnNob3dUaW1lbGlu
ZUZvclJlY29yZFR5cGUodHJlZUVsZW1lbnQucmVwcmVzZW50ZWRPYmplY3QpOwogICAgICAgICBX
ZWJJbnNwZWN0b3IuY29udGVudEJyb3dzZXIuc2hvd0NvbnRlbnRWaWV3KGNvbnRlbnRWaWV3KTsK
ICAgICB9LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
TWFpbi5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uanMKaW5k
ZXggN2U3ZWY2MjNiMmM0YTljYjViNDUyOTJmOGY4Yzk4NWViNmViYzE2My4uOTI3MDQzZDFiYmVi
YmU4NzVmM2NmYzUxMDU3MmM3NDhiNGNjMzUzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9NYWluLmpzCkBAIC0yNzcsMTEgKzI3Nyw4IEBAIFdlYkluc3BlY3Rvci5j
b250ZW50TG9hZGVkID0gZnVuY3Rpb24oKQogICAgICAgICBpZiAodGhpcy5fbGFzdENvbnRlbnRD
b29raWVTZXR0aW5nLnZhbHVlID09PSAiY29uc29sZSIpIHsKICAgICAgICAgICAgIC8vIFRoZSBj
b25zb2xlIGRvZXMgbm90IGhhdmUgYSBzaWRlYmFyLCBzbyBoYW5kbGUgaXRzIHNwZWNpYWwgY29v
a2llIGhlcmUuCiAgICAgICAgICAgICB0aGlzLnNob3dGdWxsSGVpZ2h0Q29uc29sZSgpOwotICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgdmFyIHJlc3BvbnNpYmxlU2lkZWJhclBhbmVsID0g
dGhpcy5uYXZpZ2F0aW9uU2lkZWJhci5maW5kU2lkZWJhclBhbmVsKHRoaXMuX2xhc3RDb250ZW50
Vmlld1Jlc3BvbnNpYmxlU2lkZWJhclBhbmVsU2V0dGluZy52YWx1ZSk7Ci0gICAgICAgICAgICBp
ZiAocmVzcG9uc2libGVTaWRlYmFyUGFuZWwpCi0gICAgICAgICAgICAgICAgcmVzcG9uc2libGVT
aWRlYmFyUGFuZWwuc2hvd0NvbnRlbnRWaWV3Rm9yQ29va2llKHRoaXMuX2xhc3RDb250ZW50Q29v
a2llU2V0dGluZy52YWx1ZSk7Ci0gICAgICAgIH0KKyAgICAgICAgfSBlbHNlCisgICAgICAgICAg
ICB0aGlzLmNvbnRlbnRCcm93c2VyLnNob3dDb250ZW50Vmlld0ZvckNvb2tpZSh0aGlzLl9sYXN0
Q29udGVudENvb2tpZVNldHRpbmcudmFsdWUpOwogICAgIH0KIAogICAgIHRoaXMuX3VwZGF0ZVNw
bGl0Q29uc29sZUhlaWdodCh0aGlzLl9zcGxpdENvbnNvbGVIZWlnaHRTZXR0aW5nLnZhbHVlKTsK
QEAgLTk5Niw4ICs5OTMsOCBAQCBXZWJJbnNwZWN0b3IuX3VwZGF0ZUN1cnJlbnRDb250ZW50Vmll
d0Nvb2tpZSA9IGZ1bmN0aW9uKCkKICAgICBpZiAoIXJlc3BvbnNpYmxlU2lkZWJhclBhbmVsKQog
ICAgICAgICByZXR1cm47CiAKLSAgICB2YXIgY29va2llID0gcmVzcG9uc2libGVTaWRlYmFyUGFu
ZWwuY29va2llRm9yQ29udGVudFZpZXcoY3VycmVudENvbnRlbnRWaWV3KTsKLQorICAgIHZhciBj
b29raWUgPSB7fTsKKyAgICBjdXJyZW50Q29udGVudFZpZXcuc2F2ZVRvQ29va2llKGNvb2tpZSk7
CiAgICAgdGhpcy5fbGFzdENvbnRlbnRWaWV3UmVzcG9uc2libGVTaWRlYmFyUGFuZWxTZXR0aW5n
LnZhbHVlID0gcmVzcG9uc2libGVTaWRlYmFyUGFuZWwuaWRlbnRpZmllcjsKICAgICB0aGlzLl9s
YXN0Q29udGVudENvb2tpZVNldHRpbmcudmFsdWUgPSBjb29raWU7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9OYXZpZ2F0aW9uU2lkZWJhclBhbmVs
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTmF2aWdhdGlvblNpZGVi
YXJQYW5lbC5qcwppbmRleCBiODNiMjUwNDczMGVhYTZmZTIzZjkxN2E3NzRjZjlhZWZlMzYwMGIw
Li44YTllNTJjZTViMzQ4ZTExZWM0YTQ1MzFjZjI3YjRiN2MwY2UzN2E0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9OYXZpZ2F0aW9uU2lkZWJhclBhbmVs
LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL05hdmlnYXRpb25T
aWRlYmFyUGFuZWwuanMKQEAgLTE3MSwxNyArMTcxLDYgQEAgV2ViSW5zcGVjdG9yLk5hdmlnYXRp
b25TaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gdGhpcy5fY29udGVu
dFRyZWVPdXRsaW5lLmdldENhY2hlZFRyZWVFbGVtZW50KHJlcHJlc2VudGVkT2JqZWN0KTsKICAg
ICB9LAogCi0gICAgY29va2llRm9yQ29udGVudFZpZXc6IGZ1bmN0aW9uKGNvbnRlbnRWaWV3KQot
ICAgIHsKLSAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViY2xhc3Nlcy4KLSAgICAgICAgcmV0
dXJuIG51bGw7Ci0gICAgfSwKLQotICAgIHNob3dDb250ZW50Vmlld0ZvckNvb2tpZTogZnVuY3Rp
b24oY29udGVudFZpZXdDb29raWUpCi0gICAgewotICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBz
dWJjbGFzc2VzLgotICAgIH0sCi0KICAgICBzaG93Q29udGVudFZpZXdGb3JDdXJyZW50U2VsZWN0
aW9uOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICAvLyBSZXNlbGVjdCB0aGUgc2VsZWN0ZWQg
dHJlZSBlbGVtZW50IHRvIGNhdXNlIHRoZSBjb250ZW50IHZpZXcgdG8gYmUgc2hvd24gYXMgd2Vs
bC4gPHJkYXI6Ly9wcm9ibGVtLzEwODU0NzI3PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvUmVzb3VyY2VDbHVzdGVyQ29udGVudFZpZXcuanMgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmll
dy5qcwppbmRleCAxN2UyMmY1YTljMDA5M2U4ZTU1N2E3MDBlNmUyYjVjNjVlOTgyYzk5Li4xMzA3
N2E0OGM0OGY5NmIxYjE5YzYxYzFmZDQxMWUxMmNiOTVhNDdmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5q
cworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9SZXNvdXJjZUNsdXN0
ZXJDb250ZW50Vmlldy5qcwpAQCAtMTQwLDYgKzE0MCwyMSBAQCBXZWJJbnNwZWN0b3IuUmVzb3Vy
Y2VDbHVzdGVyQ29udGVudFZpZXcucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9zaG93bklu
aXRpYWxDb250ZW50ID0gZmFsc2U7CiAgICAgfSwKIAorICAgIHNhdmVUb0Nvb2tpZTogZnVuY3Rp
b24oY29va2llKQorICAgIHsKKyAgICAgICAgY29va2llLnR5cGUgPSBXZWJJbnNwZWN0b3IuQ29u
dGVudFZpZXcuUmVzb3VyY2VDb250ZW50Vmlld0Nvb2tpZVR5cGU7CisgICAgICAgIGNvb2tpZS51
cmwgPSB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LnVybDsKKyAgICAgICAgY29va2llLnN1YnZpZXcg
PSB0aGlzLl9jdXJyZW50Q29udGVudFZpZXdTZXR0aW5nLnZhbHVlOworICAgIH0sCisKKyAgICBy
ZXN0b3JlRnJvbUNvb2tpZTogZnVuY3Rpb24oY29va2llKQorICAgIHsKKyAgICAgICAgaWYgKCJs
aW5lTnVtYmVyIiBpbiBjb29raWUgJiYgImNvbHVtbk51bWJlciIgaW4gY29va2llKQorICAgICAg
ICAgICAgcmV0dXJuIHRoaXMuc2hvd1Jlc3BvbnNlKG5ldyBXZWJJbnNwZWN0b3IuU291cmNlQ29k
ZVBvc2l0aW9uKGNvb2tpZS5saW5lTnVtYmVyLCBjb29raWUuY29sdW1uTnVtYmVyKSk7CisKKyAg
ICAgICAgdGhpcy5fc2hvd0NvbnRlbnRWaWV3Rm9ySWRlbnRpZmllcihjb29raWUuc3Vidmlldyk7
CisgICAgfSwKKwogICAgIHNob3dSZXF1ZXN0OiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICB0
aGlzLl9zaG93bkluaXRpYWxDb250ZW50ID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Jlc291cmNlU2lkZWJhclBhbmVsLmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUmVzb3VyY2VTaWRlYmFyUGFuZWwuanMKaW5k
ZXggZTY2YWYxYmFiMDhiOGI1NmYxYWJiMTNmY2U3ZDdhOTZiMzQ0ZmM5ZS4uOTdiZjM5ZjdmZDgz
MTNjNTg3MzQzZDUxYWE5MDE3OWM0ZGM1MjcyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvUmVzb3VyY2VTaWRlYmFyUGFuZWwuanMKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUmVzb3VyY2VTaWRlYmFyUGFuZWwuanMKQEAg
LTg4LDEzICs4OCw2IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZVNpZGViYXJQYW5lbCA9IGZ1bmN0
aW9uKCkgewogICAgIHRoaXMuX3Jlc291cmNlc0NvbnRlbnRUcmVlT3V0bGluZS5pbmNsdWRlU291
cmNlTWFwUmVzb3VyY2VDaGlsZHJlbiA9IHRydWU7CiB9OwogCi1XZWJJbnNwZWN0b3IuUmVzb3Vy
Y2VTaWRlYmFyUGFuZWwuUmVzb3VyY2VDb250ZW50Vmlld0Nvb2tpZVR5cGUgPSAicmVzb3VyY2Ui
OwotV2ViSW5zcGVjdG9yLlJlc291cmNlU2lkZWJhclBhbmVsLkNvb2tpZVN0b3JhZ2VDb250ZW50
Vmlld0Nvb2tpZVR5cGUgPSAiY29va2llLXN0b3JhZ2UiOwotV2ViSW5zcGVjdG9yLlJlc291cmNl
U2lkZWJhclBhbmVsLkRhdGFiYXNlQ29udGVudFZpZXdDb29raWVUeXBlID0gImRhdGFiYXNlIjsK
LVdlYkluc3BlY3Rvci5SZXNvdXJjZVNpZGViYXJQYW5lbC5EYXRhYmFzZVRhYmxlQ29udGVudFZp
ZXdDb29raWVUeXBlID0gImRhdGFiYXNlLXRhYmxlIjsKLVdlYkluc3BlY3Rvci5SZXNvdXJjZVNp
ZGViYXJQYW5lbC5ET01TdG9yYWdlQ29udGVudFZpZXdDb29raWVUeXBlID0gImRvbS1zdG9yYWdl
IjsKLVdlYkluc3BlY3Rvci5SZXNvdXJjZVNpZGViYXJQYW5lbC5BcHBsaWNhdGlvbkNhY2hlQ29u
dGVudFZpZXdDb29raWVUeXBlID0gImFwcGxpY2F0aW9uLWNhY2hlIjsKLQogV2ViSW5zcGVjdG9y
LlJlc291cmNlU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICBjb25zdHJ1Y3RvcjogV2Vi
SW5zcGVjdG9yLlJlc291cmNlU2lkZWJhclBhbmVsLAogCkBAIC0xMDUsMTA5ICs5OCw2IEBAIFdl
Ykluc3BlY3Rvci5SZXNvdXJjZVNpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJl
dHVybiB0aGlzLl9zZWFyY2hDb250ZW50VHJlZU91dGxpbmU7CiAgICAgfSwKIAotICAgIGNvb2tp
ZUZvckNvbnRlbnRWaWV3OiBmdW5jdGlvbihjb250ZW50VmlldykKLSAgICB7Ci0gICAgICAgIGNv
bnNvbGUuYXNzZXJ0KGNvbnRlbnRWaWV3IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkZyYW1lQ29u
dGVudFZpZXcgfHwgY29udGVudFZpZXcgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUmVzb3VyY2VD
bHVzdGVyQ29udGVudFZpZXcgfHwgY29udGVudFZpZXcgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3Iu
U2NyaXB0Q29udGVudFZpZXcgfHwgY29udGVudFZpZXcgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3Iu
Q29va2llU3RvcmFnZUNvbnRlbnRWaWV3IHx8IGNvbnRlbnRWaWV3IGluc3RhbmNlb2YgV2ViSW5z
cGVjdG9yLkRPTVN0b3JhZ2VDb250ZW50VmlldyB8fCBjb250ZW50VmlldyBpbnN0YW5jZW9mIFdl
Ykluc3BlY3Rvci5EYXRhYmFzZVRhYmxlQ29udGVudFZpZXcgfHwgY29udGVudFZpZXcgaW5zdGFu
Y2VvZiBXZWJJbnNwZWN0b3IuRGF0YWJhc2VDb250ZW50VmlldyB8fCBjb250ZW50VmlldyBpbnN0
YW5jZW9mIFdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlRnJhbWVDb250ZW50Vmlldyk7Ci0K
LSAgICAgICAgdmFyIHJlcHJlc2VudGVkT2JqZWN0ID0gY29udGVudFZpZXcucmVwcmVzZW50ZWRP
YmplY3Q7Ci0KLSAgICAgICAgLy8gVGhlIG1haW4gZnJhbWUgZG9lcyBub3QgbmVlZCBhIFVSTCwg
YW4gZW1wdHkgY29va2llIGlzIGVub3VnaC4KLSAgICAgICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0
IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkZyYW1lICYmIHJlcHJlc2VudGVkT2JqZWN0LmlzTWFp
bkZyYW1lKCkpCi0gICAgICAgICAgICByZXR1cm4ge3R5cGU6IFdlYkluc3BlY3Rvci5SZXNvdXJj
ZVNpZGViYXJQYW5lbC5SZXNvdXJjZUNvbnRlbnRWaWV3Q29va2llVHlwZX07Ci0KLSAgICAgICAg
Ly8gSWYgaXQgaGFzIGEgVVJMLCByZXR1cm4gYSBjb29raWUgd2l0aCB0aGUgZnJhbWUvcmVzb3Vy
Y2Uvc2NyaXB0IFVSTCByZXByZXNlbnRlZCBieSB0aGUgY29udGVudCB2aWV3LgotICAgICAgICBp
ZiAocmVwcmVzZW50ZWRPYmplY3QudXJsKSB7Ci0gICAgICAgICAgICBjb25zb2xlLmFzc2VydChy
ZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5GcmFtZSB8fCByZXByZXNl
bnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5SZXNvdXJjZSB8fCByZXByZXNlbnRl
ZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5TY3JpcHQpOwotICAgICAgICAgICAgcmV0
dXJuIHt0eXBlOiBXZWJJbnNwZWN0b3IuUmVzb3VyY2VTaWRlYmFyUGFuZWwuUmVzb3VyY2VDb250
ZW50Vmlld0Nvb2tpZVR5cGUsIHVybDogY29udGVudFZpZXcucmVwcmVzZW50ZWRPYmplY3QudXJs
fTsKLSAgICAgICAgfQotCi0gICAgICAgIHZhciBjb29raWUgPSB7fTsKLQotICAgICAgICBpZiAo
cmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuQ29va2llU3RvcmFnZU9i
amVjdCkgewotICAgICAgICAgICAgY29va2llLnR5cGUgPSBXZWJJbnNwZWN0b3IuUmVzb3VyY2VT
aWRlYmFyUGFuZWwuQ29va2llU3RvcmFnZUNvbnRlbnRWaWV3Q29va2llVHlwZTsKLSAgICAgICAg
ICAgIGNvb2tpZS5ob3N0ID0gcmVwcmVzZW50ZWRPYmplY3QuaG9zdDsKLSAgICAgICAgfSBlbHNl
IGlmIChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5EYXRhYmFzZU9i
amVjdCkgewotICAgICAgICAgICAgY29va2llLnR5cGUgPSBXZWJJbnNwZWN0b3IuUmVzb3VyY2VT
aWRlYmFyUGFuZWwuRGF0YWJhc2VDb250ZW50Vmlld0Nvb2tpZVR5cGU7Ci0gICAgICAgICAgICBj
b29raWUuaG9zdCA9IHJlcHJlc2VudGVkT2JqZWN0Lmhvc3Q7Ci0gICAgICAgICAgICBjb29raWUu
bmFtZSA9IHJlcHJlc2VudGVkT2JqZWN0Lm5hbWU7Ci0gICAgICAgIH0gZWxzZSBpZiAocmVwcmVz
ZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuRGF0YWJhc2VUYWJsZU9iamVjdCkg
ewotICAgICAgICAgICAgY29va2llLnR5cGUgPSBXZWJJbnNwZWN0b3IuUmVzb3VyY2VTaWRlYmFy
UGFuZWwuRGF0YWJhc2VUYWJsZUNvbnRlbnRWaWV3Q29va2llVHlwZTsKLSAgICAgICAgICAgIGNv
b2tpZS5ob3N0ID0gcmVwcmVzZW50ZWRPYmplY3QuZGF0YWJhc2UuaG9zdDsKLSAgICAgICAgICAg
IGNvb2tpZS5kYXRhYmFzZSA9IHJlcHJlc2VudGVkT2JqZWN0LmRhdGFiYXNlLm5hbWU7Ci0gICAg
ICAgICAgICBjb29raWUubmFtZSA9IHJlcHJlc2VudGVkT2JqZWN0Lm5hbWU7Ci0gICAgICAgIH0g
ZWxzZSBpZiAocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuRE9NU3Rv
cmFnZU9iamVjdCkgewotICAgICAgICAgICAgY29va2llLnR5cGUgPSBXZWJJbnNwZWN0b3IuUmVz
b3VyY2VTaWRlYmFyUGFuZWwuRE9NU3RvcmFnZUNvbnRlbnRWaWV3Q29va2llVHlwZTsKLSAgICAg
ICAgICAgIGNvb2tpZS5pc0xvY2FsU3RvcmFnZSA9IHJlcHJlc2VudGVkT2JqZWN0LmlzTG9jYWxT
dG9yYWdlKCk7Ci0gICAgICAgICAgICBjb29raWUuaG9zdCA9IHJlcHJlc2VudGVkT2JqZWN0Lmhv
c3Q7Ci0gICAgICAgIH0gZWxzZSBpZiAocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJ
bnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZUZyYW1lKSB7Ci0gICAgICAgICAgICBjb29raWUudHlw
ZSA9IFdlYkluc3BlY3Rvci5SZXNvdXJjZVNpZGViYXJQYW5lbC5BcHBsaWNhdGlvbkNhY2hlQ29u
dGVudFZpZXdDb29raWVUeXBlOwotICAgICAgICAgICAgY29va2llLmZyYW1lID0gcmVwcmVzZW50
ZWRPYmplY3QuZnJhbWUudXJsOwotICAgICAgICAgICAgY29va2llLm1hbmlmZXN0ID0gcmVwcmVz
ZW50ZWRPYmplY3QubWFuaWZlc3QubWFuaWZlc3RVUkw7Ci0gICAgICAgIH0gZWxzZSBpZiAocmVw
cmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuU2NyaXB0KSB7Ci0gICAgICAg
ICAgICAvLyBJZiB0aGUgU2NyaXB0IGRvZXMgbm90IGhhdmUgYSBVUkwsIHRoZW4gdGhlcmUgaXMg
bm90IG11Y2ggbW9yZSB3ZSBjYW4gZG8gdG8gbWFrZSBhIGNvb2tpZS4KLSAgICAgICAgICAgIC8v
IFRoZSBVUkwgY2FzZSBpcyBoYW5kbGVkIGFib3ZlLCBkbyBub3RoaW5nIGhlcmUgdG8gcHJldmVu
dCB0cmlnZ2VyaW5nIHRoZSAiVW5rbm93biIgZXJyb3IgYmVsb3cuCi0gICAgICAgICAgICBjb25z
b2xlLmFzc2VydCghcmVwcmVzZW50ZWRPYmplY3QudXJsKTsKLSAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgIGNvbnNvbGUuZXJyb3IoIlVua25vd24gcmVwcmVzZW50ZWQgb2JqZWN0LiIpOwot
ICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIGNvb2tpZTsKLSAgICB9LAotCi0gICAgc2hvd0Nv
bnRlbnRWaWV3Rm9yQ29va2llOiBmdW5jdGlvbihjb250ZW50Vmlld0Nvb2tpZSkKLSAgICB7Ci0g
ICAgICAgIGlmICghY29udGVudFZpZXdDb29raWUgfHwgIWNvbnRlbnRWaWV3Q29va2llLnR5cGUp
Ci0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdGhpcy5fY29udGVudFZpZXdDb29raWVU
b1Nob3dXaGVuQXZhaWxhYmxlID0gY29udGVudFZpZXdDb29raWU7Ci0KLSAgICAgICAgaWYgKGNv
bnRlbnRWaWV3Q29va2llLnR5cGUgPT09IFdlYkluc3BlY3Rvci5SZXNvdXJjZVNpZGViYXJQYW5l
bC5SZXNvdXJjZUNvbnRlbnRWaWV3Q29va2llVHlwZSkgewotICAgICAgICAgICAgLy8gV2UgY2Fu
J3Qgc2hvdyBhbnl0aGluZyB1bnRpbCB3ZSBoYXZlIHRoZSBtYWluIGZyYW1lIGluIHRoZSBzaWRl
YmFyLiBPdGhlcndpc2UgdGhlIHBhdGggY29tcG9uZW50cyBpbiB0aGUgbmF2aWdhdGlvbiBiYXIg
d291bGQgYmUgbWlzc2luZy4KLSAgICAgICAgICAgIGlmICghdGhpcy5fbWFpbkZyYW1lVHJlZUVs
ZW1lbnQpIHsKLSAgICAgICAgICAgICAgICB0aGlzLl9jb250ZW50Vmlld0Nvb2tpZVRvU2hvd1do
ZW5BdmFpbGFibGUgPSBjb250ZW50Vmlld0Nvb2tpZTsKLSAgICAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHZhciByZXByZXNlbnRlZE9iamVjdCA9IGNv
bnRlbnRWaWV3Q29va2llLnVybCA/IFdlYkluc3BlY3Rvci5mcmFtZVJlc291cmNlTWFuYWdlci5y
ZXNvdXJjZUZvclVSTChjb250ZW50Vmlld0Nvb2tpZS51cmwpIDogV2ViSW5zcGVjdG9yLmZyYW1l
UmVzb3VyY2VNYW5hZ2VyLm1haW5GcmFtZTsKLSAgICAgICAgICAgIGlmICghcmVwcmVzZW50ZWRP
YmplY3QpCi0gICAgICAgICAgICAgICAgcmVwcmVzZW50ZWRPYmplY3QgPSBXZWJJbnNwZWN0b3Iu
ZnJhbWVSZXNvdXJjZU1hbmFnZXIubWFpbkZyYW1lOwotCi0gICAgICAgICAgICBpZiAoIXJlcHJl
c2VudGVkT2JqZWN0KQotICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgaWYg
KHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJlc291cmNlICYmIHJl
cHJlc2VudGVkT2JqZWN0LmlzTWFpblJlc291cmNlKCkpCi0gICAgICAgICAgICAgICAgcmVwcmVz
ZW50ZWRPYmplY3QgPSByZXByZXNlbnRlZE9iamVjdC5wYXJlbnRGcmFtZTsKLQotICAgICAgICAg
ICAgdGhpcy50cmVlRWxlbWVudEZvclJlcHJlc2VudGVkT2JqZWN0KHJlcHJlc2VudGVkT2JqZWN0
KS5yZXZlYWxBbmRTZWxlY3QodHJ1ZSwgdHJ1ZSk7Ci0KLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgfQotCi0gICAgICAgIC8vIEl0IG11c3QgYmUgYSBzdG9yYWdlIGNvb2tpZS4KLQotICAg
ICAgICBmdW5jdGlvbiBmaW5hbGl6ZUNvb2tpZUNoZWNraW5nKCkKLSAgICAgICAgewotICAgICAg
ICAgICAgLy8gV2FsayBhbGwgdGhlIHRyZWUgZWxlbWVudHMgYW5kIG1hdGNoIHRoZW0gYmFzZWQg
b24gdHlwZSBhbG9uZS4gU28gaWYgeW91IHdlcmUgbG9va2luZyBhdCBjb29raWVzCi0gICAgICAg
ICAgICAvLyBvbiBvbmUgc2l0ZSwgYW5kIGxhdGVyIG9wZW4gdGhlIGluc3BlY3RvciBvbiBhbm90
aGVyIHNpdGUsIHRoZSBuZXcgc2l0ZSdzIGNvb2tpZXMgd2lsbCBzaG93LgotICAgICAgICAgICAg
dmFyIGN1cnJlbnRUcmVlRWxlbWVudCA9IHRoaXMuY29udGVudFRyZWVPdXRsaW5lLmNoaWxkcmVu
WzBdOwotICAgICAgICAgICAgd2hpbGUgKGN1cnJlbnRUcmVlRWxlbWVudCAmJiAhY3VycmVudFRy
ZWVFbGVtZW50LnJvb3QpIHsKLSAgICAgICAgICAgICAgICBpZiAodGhpcy5fY2hlY2tTdG9yYWdl
VHJlZUVsZW1lbnRBZ2FpbnN0UGVuZGluZ0NvbnRlbnRWaWV3Q29va2llKGN1cnJlbnRUcmVlRWxl
bWVudCwgdHJ1ZSkpCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAg
IGN1cnJlbnRUcmVlRWxlbWVudCA9IGN1cnJlbnRUcmVlRWxlbWVudC50cmF2ZXJzZU5leHRUcmVl
RWxlbWVudChmYWxzZSwgbnVsbCwgZmFsc2UpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAg
ICBkZWxldGUgdGhpcy5fY29udGVudFZpZXdDb29raWVUb1Nob3dXaGVuQXZhaWxhYmxlOwotICAg
ICAgICAgICAgZGVsZXRlIHRoaXMuX2ZpbmFsaXplQ29va2llQ2hlY2tpbmdUaW1lb3V0OwotICAg
ICAgICB9Ci0KLSAgICAgICAgaWYgKHRoaXMuX2ZpbmFsaXplQ29va2llQ2hlY2tpbmdUaW1lb3V0
KQotICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuX2ZpbmFsaXplQ29va2llQ2hlY2tpbmdU
aW1lb3V0KTsKLQotICAgICAgICAvLyBXaGVuIHRoZSBzcGVjaWZpYyBzdG9yYWdlIGl0ZW0gd2Fz
bid0IGZvdW5kIHdlIHdhbnQgdG8gcmVsYXggdGhlIGNoZWNrIHRvIHNob3cgdGhlIGZpcnN0IGl0
ZW0gd2l0aCB0aGUKLSAgICAgICAgLy8gc2FtZSB0eXBlLiBUaGVyZSBpcyBubyBnb29kIHRpbWUg
dG8gbmF0dXJhbGx5IGRlY2xhcmUgdGhlIGNvb2tpZSB3YXNuJ3QgZm91bmQsIHNvIHdlIGRvIHRo
YXQgb24gYSB0aW1lb3V0LgotICAgICAgICB0aGlzLl9maW5hbGl6ZUNvb2tpZUNoZWNraW5nVGlt
ZW91dCA9IHNldFRpbWVvdXQoZmluYWxpemVDb29raWVDaGVja2luZy5iaW5kKHRoaXMpLCA1MDAp
OwotICAgIH0sCi0KICAgICBzaG93TWFpbkZyYW1lRE9NVHJlZTogZnVuY3Rpb24obm9kZVRvU2Vs
ZWN0LCBwcmV2ZW50Rm9jdXNDaGFuZ2UpCiAgICAgewogICAgICAgICB2YXIgY29udGVudFZpZXcg
PSBXZWJJbnNwZWN0b3IuY29udGVudEJyb3dzZXIuY29udGVudFZpZXdGb3JSZXByZXNlbnRlZE9i
amVjdChXZWJJbnNwZWN0b3IuZnJhbWVSZXNvdXJjZU1hbmFnZXIubWFpbkZyYW1lKTsKQEAgLTI2
MywyMCArMTUzLDcgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlU2lkZWJhclBhbmVsLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgdmFyIG5ld0NvbnRlbnRWaWV3ID0gV2ViSW5zcGVjdG9yLmNvbnRlbnRC
cm93c2VyLmNvbnRlbnRWaWV3Rm9yUmVwcmVzZW50ZWRPYmplY3QocmVwcmVzZW50ZWRPYmplY3Qp
OwogICAgICAgICB2YXIgY29va2llID0ge2xpbmVOdW1iZXI6IHBvc2l0aW9uVG9SZXZlYWwubGlu
ZU51bWJlciwgY29sdW1uTnVtYmVyOiBwb3NpdGlvblRvUmV2ZWFsLmNvbHVtbk51bWJlcn07CiAK
LSAgICAgICAgdmFyIHJlc3RvcmVDYWxsYmFjayA9IGZ1bmN0aW9uKGNvbnRlbnRWaWV3LCBzYXZl
ZENvb2tpZSkgewotICAgICAgICAgICAgdmFyIGxpbmVOdW1iZXIgPSBzYXZlZENvb2tpZS5saW5l
TnVtYmVyOwotICAgICAgICAgICAgdmFyIGNvbHVtbk51bWJlciA9IHNhdmVkQ29va2llLmNvbHVt
bk51bWJlcjsKLSAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IG5ldyBXZWJJbnNwZWN0b3IuU291
cmNlQ29kZVBvc2l0aW9uKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcik7Ci0KLSAgICAgICAgICAg
IGlmIChjb250ZW50VmlldyBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5GcmFtZUNvbnRlbnRWaWV3
KQotICAgICAgICAgICAgICAgIGNvbnRlbnRWaWV3LnNob3dTb3VyY2VDb2RlKHBvc2l0aW9uKQot
ICAgICAgICAgICAgZWxzZSBpZiAoY29udGVudFZpZXcgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3Iu
UmVzb3VyY2VDbHVzdGVyQ29udGVudFZpZXcpCi0gICAgICAgICAgICAgICAgY29udGVudFZpZXcu
c2hvd1Jlc3BvbnNlKHBvc2l0aW9uKQotICAgICAgICAgICAgZWxzZSBpZiAoY29udGVudFZpZXcg
aW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuU2NyaXB0Q29udGVudFZpZXcpCi0gICAgICAgICAgICAg
ICAgY29udGVudFZpZXcucmV2ZWFsUG9zaXRpb24ocG9zaXRpb24pCi0gICAgICAgIH07Ci0KLSAg
ICAgICAgV2ViSW5zcGVjdG9yLmNvbnRlbnRCcm93c2VyLnNob3dDb250ZW50VmlldyhuZXdDb250
ZW50VmlldywgY29va2llLCByZXN0b3JlQ2FsbGJhY2spOworICAgICAgICBXZWJJbnNwZWN0b3Iu
Y29udGVudEJyb3dzZXIuc2hvd0NvbnRlbnRWaWV3KG5ld0NvbnRlbnRWaWV3LCBjb29raWUpOwog
ICAgIH0sCiAKICAgICBzaG93U291cmNlQ29kZUxvY2F0aW9uOiBmdW5jdGlvbihzb3VyY2VDb2Rl
TG9jYXRpb24pCkBAIC02MTgsMTIgKzQ5NSw2IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZVNpZGVi
YXJQYW5lbC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgICAgIGlmICh0aGlzLl9mcmFtZUlkZW50
aWZpZXJUb1Nob3dTb3VyY2VDb2RlV2hlbkF2YWlsYWJsZSkKICAgICAgICAgICAgICAgICB0aGlz
LnNob3dTb3VyY2VDb2RlRm9yRnJhbWUodGhpcy5fZnJhbWVJZGVudGlmaWVyVG9TaG93U291cmNl
Q29kZVdoZW5BdmFpbGFibGUsIHRydWUpOwotICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5fY29u
dGVudFZpZXdDb29raWVUb1Nob3dXaGVuQXZhaWxhYmxlKSB7Ci0gICAgICAgICAgICAgICAgdGhp
cy5zaG93Q29udGVudFZpZXdGb3JDb29raWUodGhpcy5fY29udGVudFZpZXdDb29raWVUb1Nob3dX
aGVuQXZhaWxhYmxlKTsKLQotICAgICAgICAgICAgICAgIC8vIFRoZSBjb29raWUgaXMgb25seSB1
c2VmdWwgdW50aWwgdGhlIG1haW4gZnJhbWUgbG9hZHMuCi0gICAgICAgICAgICAgICAgZGVsZXRl
IHRoaXMuX2NvbnRlbnRWaWV3Q29va2llVG9TaG93V2hlbkF2YWlsYWJsZTsKLSAgICAgICAgICAg
IH0KICAgICAgICAgfQogCiAgICAgICAgIC8vIFdlIG9ubHkgY2FyZSBhYm91dCB0aGUgZmlyc3Qg
dGltZSB0aGUgbWFpbiBmcmFtZSBjaGFuZ2VzLgpAQCAtNzY0LDc1ICs2MzUsNiBAQCBXZWJJbnNw
ZWN0b3IuUmVzb3VyY2VTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLnNo
b3dNYWluRnJhbWVET01UcmVlKGV2ZW50LmRhdGEubm9kZSk7CiAgICAgfSwKIAotICAgIF9jaGVj
a1N0b3JhZ2VUcmVlRWxlbWVudEFnYWluc3RQZW5kaW5nQ29udGVudFZpZXdDb29raWU6IGZ1bmN0
aW9uKHRyZWVFbGVtZW50LCBtYXRjaE9uVHlwZUFsb25lKQotICAgIHsKLSAgICAgICAgdmFyIGNv
bnRlbnRWaWV3Q29va2llID0gdGhpcy5fY29udGVudFZpZXdDb29raWVUb1Nob3dXaGVuQXZhaWxh
YmxlOwotICAgICAgICBpZiAoIWNvbnRlbnRWaWV3Q29va2llIHx8ICFjb250ZW50Vmlld0Nvb2tp
ZS50eXBlKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIGlmIChjb250ZW50
Vmlld0Nvb2tpZS50eXBlID09PSBXZWJJbnNwZWN0b3IuUmVzb3VyY2VTaWRlYmFyUGFuZWwuUmVz
b3VyY2VDb250ZW50Vmlld0Nvb2tpZVR5cGUpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAg
ICAgdmFyIHJlcHJlc2VudGVkT2JqZWN0ID0gdHJlZUVsZW1lbnQucmVwcmVzZW50ZWRPYmplY3Q7
Ci0KLSAgICAgICAgc3dpdGNoIChjb250ZW50Vmlld0Nvb2tpZS50eXBlKSB7Ci0gICAgICAgIGNh
c2UgV2ViSW5zcGVjdG9yLlJlc291cmNlU2lkZWJhclBhbmVsLkNvb2tpZVN0b3JhZ2VDb250ZW50
Vmlld0Nvb2tpZVR5cGU6Ci0gICAgICAgICAgICBpZiAoIShyZXByZXNlbnRlZE9iamVjdCBpbnN0
YW5jZW9mIFdlYkluc3BlY3Rvci5Db29raWVTdG9yYWdlT2JqZWN0KSkKLSAgICAgICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgICAgICBpZiAoIW1hdGNoT25UeXBlQWxvbmUgJiYgcmVwcmVzZW50
ZWRPYmplY3QuaG9zdCAhPT0gY29udGVudFZpZXdDb29raWUuaG9zdCkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIFdlYklu
c3BlY3Rvci5SZXNvdXJjZVNpZGViYXJQYW5lbC5EYXRhYmFzZUNvbnRlbnRWaWV3Q29va2llVHlw
ZToKLSAgICAgICAgICAgIGlmICghKHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5z
cGVjdG9yLkRhdGFiYXNlT2JqZWN0KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgICAgICBpZiAoIW1hdGNoT25UeXBlQWxvbmUgJiYgcmVwcmVzZW50ZWRPYmplY3QuaG9z
dCAhPT0gY29udGVudFZpZXdDb29raWUuaG9zdCkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgICAgICBpZiAoIW1hdGNoT25UeXBlQWxvbmUgJiYgcmVwcmVzZW50ZWRPYmpl
Y3QubmFtZSAhPT0gY29udGVudFZpZXdDb29raWUubmFtZSkKLSAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIFdlYkluc3BlY3Rv
ci5SZXNvdXJjZVNpZGViYXJQYW5lbC5EYXRhYmFzZVRhYmxlQ29udGVudFZpZXdDb29raWVUeXBl
OgotICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgaXNuJ3QgZWFzeSB0byBpbXBsZW1lbnQgbGlr
ZSB0aGUgb3RoZXJzIHNpbmNlIERhdGFiYXNlVHJlZUVsZW1lbnQKLSAgICAgICAgICAgIC8vIHBv
cHVsYXRlcyB0aGUgdGFibGVzIGluc3RlYWQgb2YgUmVzb3VyY2VTaWRlYmFyUGFuZWwuIEp1c3Qg
c2VsZWN0IHRoZSBkYXRhYmFzZS4KLSAgICAgICAgICAgIGlmICghKHJlcHJlc2VudGVkT2JqZWN0
IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkRhdGFiYXNlT2JqZWN0KSkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBpZiAoIW1hdGNoT25UeXBlQWxvbmUgJiYgcmVw
cmVzZW50ZWRPYmplY3QuaG9zdCAhPT0gY29udGVudFZpZXdDb29raWUuaG9zdCkKLSAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBpZiAoIW1hdGNoT25UeXBlQWxvbmUg
JiYgcmVwcmVzZW50ZWRPYmplY3QubmFtZSAhPT0gY29udGVudFZpZXdDb29raWUuZGF0YWJhc2Up
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgcmV0dXJuOwotCi0g
ICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlJlc291cmNlU2lkZWJhclBhbmVsLkRPTVN0b3JhZ2VD
b250ZW50Vmlld0Nvb2tpZVR5cGU6Ci0gICAgICAgICAgICBpZiAoIShyZXByZXNlbnRlZE9iamVj
dCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5ET01TdG9yYWdlT2JqZWN0KSkKLSAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBpZiAoIW1hdGNoT25UeXBlQWxvbmUgJiYg
cmVwcmVzZW50ZWRPYmplY3QuaG9zdCAhPT0gY29udGVudFZpZXdDb29raWUuaG9zdCkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBpZiAoIW1hdGNoT25UeXBlQWxv
bmUgJiYgcmVwcmVzZW50ZWRPYmplY3QuaXNMb2NhbFN0b3JhZ2UoKSAhPT0gY29udGVudFZpZXdD
b29raWUuaXNMb2NhbFN0b3JhZ2UpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuUmVzb3VyY2VTaWRl
YmFyUGFuZWwuQXBwbGljYXRpb25DYWNoZUNvbnRlbnRWaWV3Q29va2llVHlwZToKLSAgICAgICAg
ICAgIGlmICghKHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkFwcGxp
Y2F0aW9uQ2FjaGVGcmFtZSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAg
aWYgKCFtYXRjaE9uVHlwZUFsb25lICYmIHJlcHJlc2VudGVkT2JqZWN0LmZyYW1lLnVybCAhPT0g
Y29udGVudFZpZXdDb29raWUuZnJhbWUpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICAgICAgaWYgKCFtYXRjaE9uVHlwZUFsb25lICYmIHJlcHJlc2VudGVkT2JqZWN0Lm1hbmlmZXN0
Lm1hbmlmZXN0VVJMICE9PSBjb250ZW50Vmlld0Nvb2tpZS5tYW5pZmVzdCkKLSAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBkZWZhdWx0
OgotICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoIlVua25vd24gY29udGVudCB2aWV3IGNvb2tp
ZSB0eXBlLiIpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0KLSAgICAg
ICAgLy8gSWYgd2UgZ290IGhlcmUsIHRoZW4gdGhlIHRyZWUgZWxlbWVudCB3YXMgYSBtYXRjaCB0
byB0aGUgY29udGVudCB2aWV3IGNvb2tpZS4KLSAgICAgICAgLy8gU2VsZWN0aW5nIHRoZSB0cmVl
IGVsZW1lbnQgd2lsbCBjYXVzZSB0aGUgY29udGVudCB2aWV3IHRvIHNob3cuCi0gICAgICAgIHRy
ZWVFbGVtZW50LnJldmVhbEFuZFNlbGVjdCh0cnVlLCB0cnVlKTsKLQotICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICB9LAotCiAgICAgX2RvbVN0b3JhZ2VPYmplY3RXYXNBZGRlZDogZnVuY3Rpb24o
ZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgZG9tU3RvcmFnZSA9IGV2ZW50LmRhdGEuZG9tU3Rv
cmFnZTsKQEAgLTg0Miw4ICs2NDQsNiBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VTaWRlYmFyUGFu
ZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5fbG9jYWxTdG9yYWdlUm9vdFRyZWVF
bGVtZW50ID0gdGhpcy5fYWRkU3RvcmFnZUNoaWxkKHN0b3JhZ2VFbGVtZW50LCB0aGlzLl9sb2Nh
bFN0b3JhZ2VSb290VHJlZUVsZW1lbnQsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiTG9jYWwgU3Rv
cmFnZSIpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgdGhpcy5fc2Vzc2lvblN0b3JhZ2VS
b290VHJlZUVsZW1lbnQgPSB0aGlzLl9hZGRTdG9yYWdlQ2hpbGQoc3RvcmFnZUVsZW1lbnQsIHRo
aXMuX3Nlc3Npb25TdG9yYWdlUm9vdFRyZWVFbGVtZW50LCBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IlNlc3Npb24gU3RvcmFnZSIpKTsKLQotICAgICAgICB0aGlzLl9jaGVja1N0b3JhZ2VUcmVlRWxl
bWVudEFnYWluc3RQZW5kaW5nQ29udGVudFZpZXdDb29raWUoc3RvcmFnZUVsZW1lbnQpOwogICAg
IH0sCiAKICAgICBfZG9tU3RvcmFnZU9iamVjdFdhc0luc3BlY3RlZDogZnVuY3Rpb24oZXZlbnQp
CkBAIC04NjYsOCArNjY2LDYgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlU2lkZWJhclBhbmVsLnBy
b3RvdHlwZSA9IHsKIAogICAgICAgICB2YXIgZGF0YWJhc2VFbGVtZW50ID0gbmV3IFdlYkluc3Bl
Y3Rvci5EYXRhYmFzZVRyZWVFbGVtZW50KGRhdGFiYXNlKTsKICAgICAgICAgdGhpcy5fZGF0YWJh
c2VIb3N0VHJlZUVsZW1lbnRNYXBbZGF0YWJhc2UuaG9zdF0uYXBwZW5kQ2hpbGQoZGF0YWJhc2VF
bGVtZW50KTsKLQotICAgICAgICB0aGlzLl9jaGVja1N0b3JhZ2VUcmVlRWxlbWVudEFnYWluc3RQ
ZW5kaW5nQ29udGVudFZpZXdDb29raWUoZGF0YWJhc2VFbGVtZW50KTsKICAgICB9LAogCiAgICAg
X2RhdGFiYXNlV2FzSW5zcGVjdGVkOiBmdW5jdGlvbihldmVudCkKQEAgLTg4Myw4ICs2ODEsNiBA
QCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogCiAgICAg
ICAgIHZhciBjb29raWVFbGVtZW50ID0gbmV3IFdlYkluc3BlY3Rvci5Db29raWVTdG9yYWdlVHJl
ZUVsZW1lbnQoZXZlbnQuZGF0YS5jb29raWVTdG9yYWdlKTsKICAgICAgICAgdGhpcy5fY29va2ll
U3RvcmFnZVJvb3RUcmVlRWxlbWVudCA9IHRoaXMuX2FkZFN0b3JhZ2VDaGlsZChjb29raWVFbGVt
ZW50LCB0aGlzLl9jb29raWVTdG9yYWdlUm9vdFRyZWVFbGVtZW50LCBXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIkNvb2tpZXMiKSk7Ci0KLSAgICAgICAgdGhpcy5fY2hlY2tTdG9yYWdlVHJlZUVsZW1l
bnRBZ2FpbnN0UGVuZGluZ0NvbnRlbnRWaWV3Q29va2llKGNvb2tpZUVsZW1lbnQpOwogICAgIH0s
CiAKICAgICBfZnJhbWVNYW5pZmVzdEFkZGVkOiBmdW5jdGlvbihldmVudCkKQEAgLTkwMSw4ICs2
OTcsNiBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewog
CiAgICAgICAgIHZhciBmcmFtZUNhY2hlRWxlbWVudCA9IG5ldyBXZWJJbnNwZWN0b3IuQXBwbGlj
YXRpb25DYWNoZUZyYW1lVHJlZUVsZW1lbnQoZnJhbWVNYW5pZmVzdCk7CiAgICAgICAgIHRoaXMu
X2FwcGxpY2F0aW9uQ2FjaGVVUkxUcmVlRWxlbWVudE1hcFttYW5pZmVzdFVSTF0uYXBwZW5kQ2hp
bGQoZnJhbWVDYWNoZUVsZW1lbnQpOwotCi0gICAgICAgIHRoaXMuX2NoZWNrU3RvcmFnZVRyZWVF
bGVtZW50QWdhaW5zdFBlbmRpbmdDb250ZW50Vmlld0Nvb2tpZShmcmFtZUNhY2hlRWxlbWVudCk7
CiAgICAgfSwKIAogICAgIF9mcmFtZU1hbmlmZXN0UmVtb3ZlZDogZnVuY3Rpb24oZXZlbnQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9TY3JpcHRDb250
ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1NjcmlwdENv
bnRlbnRWaWV3LmpzCmluZGV4IGIxNTZkZDQyODZkZWQ4ZDhkZjE1OTAzN2MxMjE3ZjU0ZWYwOWRk
NzQuLmE2YWZhMTFlNjU5YWY4MDI3ZTQyYzg5MjYzNDNjZDZmOWIyOTY5YTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1NjcmlwdENvbnRlbnRWaWV3Lmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1NjcmlwdENvbnRlbnRW
aWV3LmpzCkBAIC0xMDcsNiArMTA3LDE4IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRDb250ZW50Vmll
dy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3RleHRFZGl0b3IuY2xvc2UoKTsKICAgICB9
LAogCisgICAgc2F2ZVRvQ29va2llOiBmdW5jdGlvbihjb29raWUpCisgICAgeworICAgICAgICBj
b29raWUudHlwZSA9IFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5SZXNvdXJjZUNvbnRlbnRWaWV3
Q29va2llVHlwZTsKKyAgICAgICAgY29va2llLnVybCA9IHRoaXMucmVwcmVzZW50ZWRPYmplY3Qu
dXJsOworICAgIH0sCisKKyAgICByZXN0b3JlRnJvbUNvb2tpZTogZnVuY3Rpb24oY29va2llKQor
ICAgIHsKKyAgICAgICAgaWYgKCJsaW5lTnVtYmVyIiBpbiBjb29raWUgJiYgImNvbHVtbk51bWJl
ciIgaW4gY29va2llKQorICAgICAgICAgICAgdGhpcy5yZXZlYWxQb3NpdGlvbihuZXcgV2ViSW5z
cGVjdG9yLlNvdXJjZUNvZGVQb3NpdGlvbihjb29raWUubGluZU51bWJlciwgY29va2llLmNvbHVt
bk51bWJlcikpOworICAgIH0sCisKICAgICBnZXQgc3VwcG9ydHNTYXZlKCkKICAgICB7CiAgICAg
ICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvU3RvcmFnZU1hbmFnZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9TdG9yYWdlTWFuYWdlci5qcwppbmRleCBkYjgzY2UyZjQ4NDE3M2Q3Mzk1MTY2Mzc0
ZjNmYWI5OTM2MzgwYmY4Li41MGIyZWM1NWM4MjhhYTFmYjI3OWRjM2NjMjk5ZWQzNDExY2Q5Nzg1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9TdG9yYWdl
TWFuYWdlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9TdG9y
YWdlTWFuYWdlci5qcwpAQCAtMTQ3LDYgKzE0Nyw1NCBAQCBXZWJJbnNwZWN0b3IuU3RvcmFnZU1h
bmFnZXIucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVy
cyhXZWJJbnNwZWN0b3IuU3RvcmFnZU1hbmFnZXIuRXZlbnQuRE9NU3RvcmFnZU9iamVjdFdhc0lu
c3BlY3RlZCwge2RvbVN0b3JhZ2U6IGRvbVN0b3JhZ2V9KTsKICAgICB9LAogCisgICAgb2JqZWN0
Rm9yQ29va2llOiBmdW5jdGlvbihjb29raWUsIG1hdGNoT25UeXBlQWxvbmUpCisgICAgeworICAg
ICAgICBjb25zb2xlLmFzc2VydChjb29raWUudHlwZSk7CisKKyAgICAgICAgdmFyIGZpbmRNYXRj
aGluZ09iamVjdEluQXJyYXkgPSBmdW5jdGlvbiAoYXJyYXksIG1hdGNoZXNGdW5jdGlvbikgewor
ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7ICsraSkKKyAgICAg
ICAgICAgICAgICBpZiAobWF0Y2hlc0Z1bmN0aW9uLmNhbGwobnVsbCwgYXJyYXlbaV0pKQorICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gYXJyYXlbaV07CisKKyAgICAgICAgICAgIHJldHVybiAo
bWF0Y2hPblR5cGVBbG9uZSAmJiBhcnJheS5sZW5ndGgpID8gYXJyYXlbMF0gOiBudWxsOworICAg
ICAgICB9OworCisgICAgICAgIGlmIChjb29raWUudHlwZSA9PT0gV2ViSW5zcGVjdG9yLkNvbnRl
bnRWaWV3LkNvb2tpZVN0b3JhZ2VDb250ZW50Vmlld0Nvb2tpZVR5cGUpIHsKKyAgICAgICAgICAg
IGlmICh0aGlzLl9jb29raWVTdG9yYWdlT2JqZWN0c1tjb29raWUuaG9zdF0pCisgICAgICAgICAg
ICAgICAgcmV0dXJuIHRoaXMuX2Nvb2tpZVN0b3JhZ2VPYmplY3RzW2Nvb2tpZS5ob3N0XTsKKwor
ICAgICAgICAgICAgaWYgKCFtYXRjaE9uVHlwZUFsb25lKQorICAgICAgICAgICAgICAgIHJldHVy
biBudWxsOworCisgICAgICAgICAgICAvLyBJZiB3ZSBqdXN0IHdhbnQgYW55IGNvb2tpZSBzdG9y
YWdlIG9iamVjdCwgdXNlIHRoZSBmaXJzdCBvbmUuCisgICAgICAgICAgICBmb3IgKHZhciBrZXkg
aW4gdGhpcy5fY29va2llU3RvcmFnZU9iamVjdHMpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRo
aXMuX2Nvb2tpZVN0b3JhZ2VPYmplY3RzW2tleV07CisKKyAgICAgICAgICAgIHJldHVybiBudWxs
OworICAgICAgICB9CisKKyAgICAgICAgaWYgKGNvb2tpZS50eXBlID09PSBXZWJJbnNwZWN0b3Iu
Q29udGVudFZpZXcuRE9NU3RvcmFnZUNvbnRlbnRWaWV3Q29va2llVHlwZSkKKyAgICAgICAgICAg
IHJldHVybiBmaW5kTWF0Y2hpbmdPYmplY3RJbkFycmF5KHRoaXMuX2RvbVN0b3JhZ2VPYmplY3Rz
LCBmdW5jdGlvbihvYmplY3QpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gb2JqZWN0Lmhvc3Qg
PT09IGNvb2tpZS5ob3N0ICYmIG9iamVjdC5pc0xvY2FsU3RvcmFnZSgpID09IGNvb2tpZS5pc0xv
Y2FsU3RvcmFnZTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgIGlmIChjb29raWUudHlwZSA9
PT0gV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LkRhdGFiYXNlQ29udGVudFZpZXdDb29raWVUeXBl
KQorICAgICAgICAgICAgcmV0dXJuIGZpbmRNYXRjaGluZ09iamVjdEluQXJyYXkodGhpcy5fZGF0
YWJhc2VPYmplY3RzLCBmdW5jdGlvbihvYmplY3QpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4g
b2JqZWN0Lmhvc3QgPT09IGNvb2tpZS5ob3N0ICYmIG9iamVjdC5uYW1lID09PSBjb29raWUubmFt
ZTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzbid0IGVhc3kg
dG8gaW1wbGVtZW50IGxpa2UgdGhlIG90aGVycyBzaW5jZSBEYXRhYmFzZVRyZWVFbGVtZW50Cisg
ICAgICAgIC8vIGNyZWF0ZXMgZGF0YWJhc2UgdGFibGUgb2JqZWN0cywgYW5kIHRoZXkgYXJlbid0
IGtub3duIGJ5IFN0b3JhZ2VNYW5hZ2VyLiBKdXN0CisgICAgICAgIC8vIGRpc3BsYXkgdGhlIGRh
dGFiYXNlIGluc3RlYWQuCisgICAgICAgIGlmIChjb29raWUudHlwZSA9PT0gV2ViSW5zcGVjdG9y
LkNvbnRlbnRWaWV3LkRhdGFiYXNlVGFibGVDb250ZW50Vmlld0Nvb2tpZVR5cGUpCisgICAgICAg
ICAgICByZXR1cm4gZmluZE1hdGNoaW5nT2JqZWN0SW5BcnJheSh0aGlzLl9kYXRhYmFzZU9iamVj
dHMsIGZ1bmN0aW9uKG9iamVjdCkgeworICAgICAgICAgICAgICAgIHJldHVybiBvYmplY3QuaG9z
dCA9PT0gY29va2llLmhvc3QgJiYgb2JqZWN0LmRhdGFiYXNlID09PSBjb29raWUubmFtZTsKKyAg
ICAgICAgICAgIH0pOworCisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCJVbmtub3duIGNvbnRlbnQg
dmlldyBjb29raWU6ICIsIGNvb2tpZSk7CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0sCisK
ICAgICAvLyBQcml2YXRlCiAKICAgICBfbWFpblJlc291cmNlRGlkQ2hhbmdlOiBmdW5jdGlvbihl
dmVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rp
bWVsaW5lTWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rp
bWVsaW5lTWFuYWdlci5qcwppbmRleCBlNDNmMTkzZWFjMzg4ZTQzYmUxMTdkYzY2ZTk5MmRjNmRj
YmY5YzMwLi5hMWFkNDZlNDhiMGE1ZjU3MThlOTJlMmEwYjBkNDEzZDgyNWVkNjhiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UaW1lbGluZU1hbmFnZXIu
anMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGltZWxpbmVNYW5h
Z2VyLmpzCkBAIC0zNiw2ICszNiw3IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZU1hbmFnZXIgPSBm
dW5jdGlvbigpCiAgICAgdGhpcy5fdHlwZVJlY29yZHMgPSB7fTsKICAgICB0aGlzLl9sb2FkRXZl
bnRUaW1lID0gTmFOOwogICAgIHRoaXMuX2V2ZW50TWFya2VycyA9IFtdOworICAgIHRoaXMuX3Rp
bWVsaW5lc09iamVjdCA9IG5ldyBXZWJJbnNwZWN0b3IuVGltZWxpbmVzT2JqZWN0OwogfTsKIAog
V2ViSW5zcGVjdG9yLlRpbWVsaW5lTWFuYWdlci5FdmVudCA9IHsKQEAgLTc1LDYgKzc2LDExIEBA
IFdlYkluc3BlY3Rvci5UaW1lbGluZU1hbmFnZXIucHJvdG90eXBlID0gewogICAgICAgICByZXR1
cm4gdGhpcy5fcmVjb3JkczsKICAgICB9LAogCisgICAgZ2V0IHRpbWVsaW5lcygpCisgICAgewor
ICAgICAgICByZXR1cm4gdGhpcy5fdGltZWxpbmVzT2JqZWN0OworICAgIH0sCisKICAgICByZWNv
cmRzV2l0aFR5cGU6IGZ1bmN0aW9uKHR5cGUpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5f
dHlwZVJlY29yZHNbdHlwZV0gfHwgW107CkBAIC0yOTMsNiArMjk5LDExIEBAIFdlYkluc3BlY3Rv
ci5UaW1lbGluZU1hbmFnZXIucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5fbG9hZEV2
ZW50VGltZSA9IHRpbWVzdGFtcDsKICAgICB9LAogCisgICAgb2JqZWN0Rm9yQ29va2llOiBmdW5j
dGlvbihjb29raWUpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy50aW1lbGluZXM7CisgICAg
fSwKKwogICAgIC8vIFByaXZhdGUKIAogICAgIF9jbGVhcjogZnVuY3Rpb24oKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGltZWxpbmVzQ29udGVudFZp
ZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UaW1lbGluZXNDb250
ZW50Vmlldy5qcwppbmRleCA3OTA1YTQ4OTJjNDYxZDM1YjUzM2Q4M2FkNWQ3ODYxMjI0YzY5MTk5
Li40Njk3ZmM1ZWFiY2RjOGI0YTU5NzNjMDRlNGNjM2U0OGM0ZTVlNDYwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UaW1lbGluZXNDb250ZW50Vmlldy5q
cworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UaW1lbGluZXNDb250
ZW50Vmlldy5qcwpAQCAtMzM1LDYgKzMzNSwxNyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVzQ29u
dGVudFZpZXcucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5fY3VycmVudERhdGFHcmlk
LmhpZGRlbigpOwogICAgIH0sCiAKKyAgICBzYXZlVG9Db29raWU6IGZ1bmN0aW9uKGNvb2tpZSkK
KyAgICB7CisgICAgICAgIGNvb2tpZS50eXBlID0gV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LlRp
bWVsaW5lc0NvbnRlbnRWaWV3Q29va2llVHlwZTsKKyAgICAgICAgY29va2llLnRpbWVsaW5lID0g
dGhpcy5fY3VycmVudFJlY29yZFR5cGVTZXR0aW5nLnZhbHVlOworICAgIH0sCisKKyAgICByZXN0
b3JlRnJvbUNvb2tpZTogZnVuY3Rpb24oY29va2llKQorICAgIHsKKyAgICAgICAgdGhpcy5zaG93
VGltZWxpbmVGb3JSZWNvcmRUeXBlKGNvb2tpZS50aW1lbGluZSk7CisgICAgfSwKKwogICAgIHRp
bWVsaW5lT3ZlcnZpZXdSZWNvcmRzV2l0aFR5cGU6IGZ1bmN0aW9uKHR5cGUpCiAgICAgewogICAg
ICAgICByZXR1cm4gdGhpcy5fZmlsdGVyUmVjb3Jkc1dpdGhUeXBlKFdlYkluc3BlY3Rvci50aW1l
bGluZU1hbmFnZXIucmVjb3Jkc1dpdGhUeXBlKHR5cGUpLCB0eXBlKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213897</attachid>
            <date>2013-10-10 10:02:27 -0700</date>
            <delta_ts>2013-10-10 15:36:11 -0700</delta_ts>
            <desc>v2</desc>
            <filename>bug-122546-20131010180229.patch</filename>
            <type>text/plain</type>
            <size>65749</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU2NzkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCA3
ZGRiYTNiODFhY2UwMDc0MDAyY2JmNDFmYWM5MGE1ODE3YmE1ZWI3Li4wNGQ3YWFiYzQzNTdmMTM0
YWNkZGMyY2Q5YzVhOThlZjQwMjhmYzBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMTMgQEAKKzIwMTMtMTAtMTAgIEJyaWFuIEouIEJ1cmcgIDxidXJnQGNzLndhc2hpbmd0
b24uZWR1PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGNvbnRlbnQgdmlld3MgYW5kIG1hbmFn
ZXJzIHNob3VsZCBzYXZlL3Jlc3RvcmUgdmlldyBzdGF0ZS4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMjU0NgorCisgICAgICAgIFRvIHJlc3RvcmUg
dGhlIHNhbWUgY29udGVudCB2aWV3IGFuZCBzaWRlYmFycyB3aGVuIHJlLW9wZW5pbmcgdGhlCisg
ICAgICAgIGluc3BlY3RvciwgYSBjb29raWUgaXMgc2F2ZWQgd2hlbmV2ZXIgYSBuZXcgY29udGVu
dCB2aWV3IGlzIHNob3duCisgICAgICAgIGluIHRoZSBtYWluIGNvbnRlbnQgYnJvd3Nlci4gUHJl
dmlvdXNseSwgdGhpcyBjb29raWUgd2FzIGNyZWF0ZWQKKyAgICAgICAgYW5kIHJlc3RvcmVkIHVz
aW5nIG5hdmlnYXRpb24gc2lkZWJhci1zcGVjaWZpYyBsb2dpYy4gVGhpcyBoYXMgdHdvCisgICAg
ICAgIG1ham9yIGZsYXdzOiBub24tZGVmYXVsdCBzaWRlYmFycyBmb3IgYSByZXByZXNlbnRlZCBv
YmplY3QgYXJlIG5vdAorICAgICAgICByZXN0b3JlZCBjb3JyZWN0bHk7IGFuZCBpdCBjZW50cmFs
aXplcyBzdG9yYWdlIG9mIHZpZXctc3BlY2lmaWMKKyAgICAgICAgc3RhdGUgc3VjaCBhcyBzdWJ2
aWV3IHNlbGVjdGlvbnMuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIENvbnRlbnRWaWV3IG1l
dGhvZHMgZm9yIHNhdmluZyBhIGtleSBmb3IgdGhlCisgICAgICAgIHZpZXcncyByZXByZXNlbnRl
ZCBvYmplY3QsIGFuZCBzYXZpbmcvcmVzdG9yaW5nIGFueSB2aWV3LXNwZWNpZmljCisgICAgICAg
IHN0YXRlIGFzIHRoZSB2aWV3IGlzIHNob3duLiBUaGUgJ3R5cGUnIGZpZWxkIG9mIHRoZSBjb29r
aWUKKyAgICAgICAgc3BlY2lmaWVzIHRoZSBtYW5hZ2VyIHdoaWNoIGRlc2VyaWFsaXplcyB0aGUg
Y29va2llIGludG8gYQorICAgICAgICByZXByZXNlbnRlZCBvYmplY3QuCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0FwcGxp
Y2F0aW9uQ2FjaGVGcmFtZUNvbnRlbnRWaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkFw
cGxpY2F0aW9uQ2FjaGVGcmFtZUNvbnRlbnRWaWV3KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5B
cHBsaWNhdGlvbkNhY2hlRnJhbWVDb250ZW50Vmlldy5wcm90b3R5cGUuc2F2ZVRvQ29va2llKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlRnJhbWVDb250ZW50Vmlldy5w
cm90b3R5cGUuX21heWJlVXBkYXRlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5BcHBsaWNhdGlv
bkNhY2hlRnJhbWVDb250ZW50Vmlldy5wcm90b3R5cGUuX3VwZGF0ZVN0YXR1cyk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZUZyYW1lQ29udGVudFZpZXcucHJvdG90eXBl
LnVwZGF0ZVN0YXR1cyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZUZy
YW1lQ29udGVudFZpZXcucHJvdG90eXBlLl91cGRhdGVDYWxsYmFjayk6CisgICAgICAgICogVXNl
ckludGVyZmFjZS9BcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5qczoKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5BcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5wcm90b3R5cGUubmV0d29ya1N0YXRlVXBkYXRl
ZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZU1hbmFnZXIucHJvdG90
eXBlLmFwcGxpY2F0aW9uQ2FjaGVTdGF0dXNVcGRhdGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5BcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5wcm90b3R5cGUuKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5BcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5wcm90b3R5cGUucmVxdWVzdEFwcGxpY2F0aW9u
Q2FjaGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLnBy
b3RvdHlwZS5vYmplY3RGb3JDb29raWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkFwcGxpY2F0
aW9uQ2FjaGVNYW5hZ2VyLnByb3RvdHlwZS5fbWFuaWZlc3RGb3JGcmFtZUxvYWRlZCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZU1hbmFnZXIucHJvdG90eXBlLl9mcmFt
ZXNXaXRoTWFuaWZlc3RzTG9hZGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5BcHBsaWNhdGlv
bkNhY2hlTWFuYWdlci5wcm90b3R5cGUuX2ZyYW1lTWFuaWZlc3RVcGRhdGVkKToKKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL0JhY2tGb3J3YXJkRW50cnkuanM6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuQmFja0ZvcndhcmRFbnRyeSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQmFja0ZvcndhcmRF
bnRyeS5wcm90b3R5cGUuX3Jlc3RvcmVGcm9tQ29va2llKToKKyAgICAgICAgKiBVc2VySW50ZXJm
YWNlL0NvbnRlbnRCcm93c2VyLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnRlbnRCcm93
c2VyLnByb3RvdHlwZS5zaG93Q29udGVudFZpZXdGb3JSZXByZXNlbnRlZE9iamVjdCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuQ29udGVudEJyb3dzZXIucHJvdG90eXBlLnNob3dDb250ZW50Vmll
dyk6CisgICAgICAgICogVXNlckludGVyZmFjZS9Db250ZW50Vmlldy5qczoKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5Db250ZW50Vmlldy5wcm90b3R5cGUuc2F2ZVRvQ29va2llKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5wcm90b3R5cGUucmVzdG9yZUZyb21Db29raWUpOgor
ICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udGVudFZpZXdDb250YWluZXIuanM6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuQ29udGVudFZpZXdDb250YWluZXIucHJvdG90eXBlLnNob3dDb250ZW50
Vmlldyk6CisgICAgICAgICogVXNlckludGVyZmFjZS9Db29raWVTdG9yYWdlQ29udGVudFZpZXcu
anM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29va2llU3RvcmFnZUNvbnRlbnRWaWV3LnByb3Rv
dHlwZS51cGRhdGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvb2tpZVN0b3JhZ2VDb250ZW50
Vmlldy5wcm90b3R5cGUuc2F2ZVRvQ29va2llKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db29r
aWVTdG9yYWdlQ29udGVudFZpZXcucHJvdG90eXBlLl9yZWJ1aWxkVGFibGUpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkNvb2tpZVN0b3JhZ2VDb250ZW50Vmlldy5wcm90b3R5cGUuX2ZpbHRlckNv
b2tpZXMpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvRE9NU3RvcmFnZUNvbnRlbnRWaWV3Lmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VDb250ZW50Vmlldy5wcm90b3R5cGUu
c2F2ZVRvQ29va2llKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0RhdGFiYXNlQ29udGVudFZp
ZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGF0YWJhc2VDb250ZW50Vmlldy5wcm90b3R5
cGUuc2F2ZVRvQ29va2llKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRhYmFzZUNvbnRlbnRW
aWV3LnByb3RvdHlwZS5fbWVzc2FnZXNDbGlja2VkKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNl
L0RhdGFiYXNlVGFibGVDb250ZW50Vmlldy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRh
YmFzZVRhYmxlQ29udGVudFZpZXcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRhdGFiYXNlVGFi
bGVDb250ZW50Vmlldy5wcm90b3R5cGUuc2F2ZVRvQ29va2llKToKKyAgICAgICAgKiBVc2VySW50
ZXJmYWNlL0ZyYW1lQ29udGVudFZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRnJhbWVD
b250ZW50Vmlldy5wcm90b3R5cGUuc2F2ZVRvQ29va2llKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5GcmFtZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5yZXN0b3JlRnJvbUNvb2tpZSk6CisgICAgICAg
ICogVXNlckludGVyZmFjZS9GcmFtZVJlc291cmNlTWFuYWdlci5qczoKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5GcmFtZVJlc291cmNlTWFuYWdlci5wcm90b3R5cGUub2JqZWN0Rm9yQ29va2llKToK
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0luc3RydW1lbnRTaWRlYmFyUGFuZWwuanM6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuSW5zdHJ1bWVudFNpZGViYXJQYW5lbCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuSW5zdHJ1bWVudFNpZGViYXJQYW5lbC5wcm90b3R5cGUuc2hvd1RpbWVsaW5lKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5JbnN0cnVtZW50U2lkZWJhclBhbmVsLnByb3RvdHlwZS5z
aG93bik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSW5zdHJ1bWVudFNpZGViYXJQYW5lbC5wcm90
b3R5cGUuX3RpbWVsaW5lc1RyZWVFbGVtZW50U2VsZWN0ZWQpOgorICAgICAgICAqIFVzZXJJbnRl
cmZhY2UvTWFpbi5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5sb2FkZWQpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLmNvbnRlbnRMb2FkZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLm9wZW5V
UkwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLl91cGRhdGVDdXJyZW50Q29udGVudFZpZXdDb29r
aWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLl9zaG93Q29udGVudFZpZXdGb3JDb29raWUubGFz
dEF0dGVtcHRUb1Jlc3RvcmVGcm9tQ29va2llKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5fc2hv
d0NvbnRlbnRWaWV3Rm9yQ29va2llKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5fcmVzb2x2ZUFu
ZFNob3dQZW5kaW5nQ29udGVudFZpZXdDb29raWUuZGVsYXllZFdvcmspOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLl9yZXNvbHZlQW5kU2hvd1BlbmRpbmdDb250ZW50Vmlld0Nvb2tpZSk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuZWxlbWVudERyYWdTdGFydCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuZWxlbWVudERyYWdFbmQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLmNyZWF0ZU1lc3NhZ2VU
ZXh0Vmlldyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IubGlua2lmeVN0cmluZ0FzRnJhZ21lbnQp
OgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTmF2aWdhdGlvblNpZGViYXJQYW5lbC5qczoKKyAg
ICAgICAgKiBVc2VySW50ZXJmYWNlL1Jlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3LmpzOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3LnByb3RvdHlwZS5z
YXZlVG9Db29raWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlQ2x1c3RlckNvbnRl
bnRWaWV3LnByb3RvdHlwZS5yZXN0b3JlRnJvbUNvb2tpZSk6CisgICAgICAgICogVXNlckludGVy
ZmFjZS9SZXNvdXJjZVNpZGViYXJQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNv
dXJjZVNpZGViYXJQYW5lbC5wcm90b3R5cGUuc2hvd1NvdXJjZUNvZGUpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlJlc291cmNlU2lkZWJhclBhbmVsLnByb3RvdHlwZS5fbWFpbkZyYW1lRGlkQ2hh
bmdlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZVNpZGViYXJQYW5lbC5wcm90b3R5
cGUuX2RvbVN0b3JhZ2VPYmplY3RXYXNBZGRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVz
b3VyY2VTaWRlYmFyUGFuZWwucHJvdG90eXBlLl9kYXRhYmFzZVdhc0FkZGVkKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5SZXNvdXJjZVNpZGViYXJQYW5lbC5wcm90b3R5cGUuX2Nvb2tpZVN0b3Jh
Z2VPYmplY3RXYXNBZGRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VTaWRlYmFy
UGFuZWwucHJvdG90eXBlLl9mcmFtZU1hbmlmZXN0QWRkZWQpOgorICAgICAgICAqIFVzZXJJbnRl
cmZhY2UvU2NyaXB0Q29udGVudFZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0
Q29udGVudFZpZXcucHJvdG90eXBlLnNhdmVUb0Nvb2tpZSk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuU2NyaXB0Q29udGVudFZpZXcucHJvdG90eXBlLnJlc3RvcmVGcm9tQ29va2llKToKKyAgICAg
ICAgKiBVc2VySW50ZXJmYWNlL1N0b3JhZ2VNYW5hZ2VyLmpzOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlN0b3JhZ2VNYW5hZ2VyLnByb3RvdHlwZS5maW5kTWF0Y2hpbmdPYmplY3RJbkFycmF5KToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5TdG9yYWdlTWFuYWdlci5wcm90b3R5cGUub2JqZWN0Rm9y
Q29va2llKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1RpbWVsaW5lTWFuYWdlci5qczoKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZU1hbmFnZXIpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlRpbWVsaW5lTWFuYWdlci5wcm90b3R5cGUuZ2V0IHRpbWVsaW5lcyk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuVGltZWxpbmVNYW5hZ2VyLnByb3RvdHlwZS5vYmplY3RGb3JDb29raWUpOgor
ICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVGltZWxpbmVzQ29udGVudFZpZXcuanM6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuVGltZWxpbmVzQ29udGVudFZpZXcucHJvdG90eXBlLnNhdmVUb0Nvb2tp
ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVzQ29udGVudFZpZXcucHJvdG90eXBl
LnJlc3RvcmVGcm9tQ29va2llKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZXNDb250
ZW50Vmlldy5wcm90b3R5cGUuX21ha2VDb2x1bW5TY29wZUJhcik6CisKIDIwMTMtMTAtMDIgIEJy
aWFuIEouIEJ1cmcgIDxidXJnQGNzLndhc2hpbmd0b24uZWR1PgogCiAgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IHNhdmUgYW5kIHJlc3RvcmUgc291cmNlIHBvc2l0aW9ucyBpbiBiYWNrL2ZvcndhcmQg
aGlzdG9yeQpAQCAtMTUxLDcgKzI2MSw3IEBACiAgICAgICAgIENTUyBwc2V1ZG8tY2xhc3NlcyB3
b3JraW5nIHdpdGggRE9NIG9yZGVyLCB0aGUgYmFja2dyb3VuZCBjb2xvcnMgb2Ygbm9kZXMgaW4g
dGhlIExheWVyVHJlZURhdGFHcmlkCiAgICAgICAgIGNhbiBiZSBpbmNvcnJlY3QgZGVwZW5kaW5n
IG9uIHRoZSBzb3J0IG9yZGVyIGFuZCB0aGUgbnVtYmVyIG9mIG5vZGVzLiBUbyBmaXggdGhpcywg
d2Ugbm93IG1hbnVhbGx5CiAgICAgICAgIHNldCAiZXZlbiIgYW5kICJvZGQiIENTUyBjbGFzc2Vz
IG9uIHRob3NlIG5vZGVzIHdoZW4gdGhleSdyZSBzb3J0ZWQgc3VjaCB0aGF0IHdlIGhhdmUgYSBj
aGFuY2UKLSAgICAgICAgdG8gc3R5bGUgdGhlbSBhcyBpbnRlbmRlZC4gCisgICAgICAgIHRvIHN0
eWxlIHRoZW0gYXMgaW50ZW5kZWQuCiAKICAgICAgICAgKiBVc2VySW50ZXJmYWNlL0xheWVyVHJl
ZURhdGFHcmlkLmpzOgogICAgICAgICAoV2ViSW5zcGVjdG9yLkxheWVyVHJlZURhdGFHcmlkLnBy
b3RvdHlwZS5fdXBkYXRlQ2hpbGRyZW4pOgpAQCAtMTcwMiw3ICsxODEyLDcgQEAKIAogMjAxMy0w
Ny0yMiAgRGllZ28gUGlubyBHYXJjaWEgIDxkcGlub0BpZ2FsaWEuY29tPgogCi0gICAgICAgIFdl
YiBJbnNwZWN0b3I6IFdoZW4gcmlnaHQtY2xpY2tpbmcgb24gYSBEYXRhR3JpZCBjb2x1bW4sIHNo
b3cgZWRpdGluZyAKKyAgICAgICAgV2ViIEluc3BlY3RvcjogV2hlbiByaWdodC1jbGlja2luZyBv
biBhIERhdGFHcmlkIGNvbHVtbiwgc2hvdyBlZGl0aW5nCiAgICAgICAgIG1lbnUgb3B0aW9uIGFz
ICJFZGl0IDxjb2x1bW5OYW1lPiIgaW5zdGVhZCBvZiBqdXN0ICJFZGl0IgogICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE4OTcwCiAKQEAgLTE5NzgsNyAr
MjA4OCw3IEBACiAKIDIwMTMtMDYtMjcgIEphbWVzIENyYWlnICA8amFtZXNAY29va2llY3Jvb2su
Y29tPgogCi0gICAgICAgIFdlYiBJbnNwZWN0b3I6IEFYOiBBZGQgY29udGFpbmVyIEFSSUEgcm9s
ZXMgKHRvb2xiYXIsIG1haW4sIGxhYmVsZWQgcmVnaW9ucywgZXRjLikgCisgICAgICAgIFdlYiBJ
bnNwZWN0b3I6IEFYOiBBZGQgY29udGFpbmVyIEFSSUEgcm9sZXMgKHRvb2xiYXIsIG1haW4sIGxh
YmVsZWQgcmVnaW9ucywgZXRjLikKICAgICAgICAgc28gdGhlIGxheW91dCBpcyBtb3JlIGRpc2Nv
dmVyYWJsZSB0byBzY3JlZW4gcmVhZGVyIHVzZXJzCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTgxMDQKIApAQCAtMjAwOSw3ICsyMTE5LDcgQEAKIAog
ICAgICAgICBNYWluIGNvbnNvbGUgbG9nIGFyZWEgKGRpdi5jb25zb2xlLW1lc3NhZ2VzKSBpcyBu
b3cgYW4gQVJJQSBsaXZlIHJlZ2lvbiAocm9sZT0ibG9nIikKICAgICAgICAgc28gc2NyZWVuIHJl
YWRlcnMgc3BlYWsgcGxhaW4gdGV4dCB1cGRhdGVzLgotICAgICAgICAKKwogICAgICAgICBBbHNv
IGFkZGVkIGNvbnRleHR1YWwgbGFiZWxzIChlLmcuIGlucHV0L291dHB1dCkgYnV0IHNwZWVjaCBv
dXRwdXQgdmVyaWZpY2F0aW9uIG9mCiAgICAgICAgIHRob3NlIGlzIGN1cnJlbnRseSBibG9ja2Vk
IGJ5IGh0dHA6Ly93ZWJraXQub3JnL2IvMTE4MDk2CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0FwcGxpY2F0aW9uQ2FjaGVGcmFtZUNvbnRlbnRWaWV3
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQXBwbGljYXRpb25DYWNo
ZUZyYW1lQ29udGVudFZpZXcuanMKaW5kZXggZjE3MmIxYjI0Y2NhY2JiMmIxNWViOTBiYzE1MjU3
MTAwNmFiOTU0MC4uZDJkMGU2YzkxZDg3ZDZmNjM0YmVkODY4ZjFlNjgzM2Q5MTViMjI3ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQXBwbGljYXRpb25D
YWNoZUZyYW1lQ29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvQXBwbGljYXRpb25DYWNoZUZyYW1lQ29udGVudFZpZXcuanMKQEAgLTQ1LDcgKzQ1
LDcgQEAgV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVGcmFtZUNvbnRlbnRWaWV3ID0gZnVu
Y3Rpb24ocmVwcmVzZW50ZWRPYmplY3QpCiAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRo
aXMuX2VtcHR5Vmlldyk7CiAKICAgICB0aGlzLl9tYXJrRGlydHkoKTsKLSAgICAKKwogICAgIHZh
ciBzdGF0dXMgPSByZXByZXNlbnRlZE9iamVjdC5zdGF0dXM7CiAgICAgdGhpcy51cGRhdGVTdGF0
dXMoc3RhdHVzKTsKIApAQCAtNzMsNiArNzMsMTMgQEAgV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9u
Q2FjaGVGcmFtZUNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuZGF0
YUdyaWQudXBkYXRlTGF5b3V0KCk7CiAgICAgfSwKIAorICAgIHNhdmVUb0Nvb2tpZTogZnVuY3Rp
b24oY29va2llKQorICAgIHsKKyAgICAgICAgY29va2llLnR5cGUgPSBXZWJJbnNwZWN0b3IuQ29u
dGVudFZpZXdDb29raWVUeXBlLkFwcGxpY2F0aW9uQ2FjaGU7CisgICAgICAgIGNvb2tpZS5mcmFt
ZSA9IHRoaXMucmVwcmVzZW50ZWRPYmplY3QuZnJhbWUudXJsOworICAgICAgICBjb29raWUubWFu
aWZlc3QgPSB0aGlzLnJlcHJlc2VudGVkT2JqZWN0Lm1hbmlmZXN0Lm1hbmlmZXN0VVJMOworICAg
IH0sCisKICAgICBnZXQgc2Nyb2xsYWJsZUVsZW1lbnRzKCkKICAgICB7CiAgICAgICAgIGlmICgh
dGhpcy5fZGF0YUdyaWQpCkBAIC04NCw3ICs5MSw3IEBAIFdlYkluc3BlY3Rvci5BcHBsaWNhdGlv
bkNhY2hlRnJhbWVDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgewogICAgICAgICBpZiAo
IXRoaXMudmlzaWJsZSB8fCAhdGhpcy5fdmlld0RpcnR5KQogICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICAKKwogICAgICAgICB0aGlzLl91cGRhdGUoKTsKICAgICAgICAgdGhpcy5fdmlld0Rp
cnR5ID0gZmFsc2U7CiAgICAgfSwKQEAgLTk5LDkgKzEwNiw5IEBAIFdlYkluc3BlY3Rvci5BcHBs
aWNhdGlvbkNhY2hlRnJhbWVDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBm
cmFtZU1hbmlmZXN0ID0gZXZlbnQuZGF0YS5mcmFtZU1hbmlmZXN0OwogICAgICAgICBpZiAoZnJh
bWVNYW5pZmVzdCAhPT0gdGhpcy5yZXByZXNlbnRlZE9iamVjdCkKICAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgCisKICAgICAgICAgY29uc29sZS5hc3NlcnQoZnJhbWVNYW5pZmVzdCBpbnN0
YW5jZW9mIFdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlRnJhbWUpOwotICAgICAgICAKKwog
ICAgICAgICB0aGlzLnVwZGF0ZVN0YXR1cyhmcmFtZU1hbmlmZXN0LnN0YXR1cyk7CiAgICAgfSwK
IApAQCAtMTEyLDcgKzExOSw3IEBAIFdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlRnJhbWVD
b250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgewogICAgICAgICB2YXIgb2xkU3RhdHVzID0g
dGhpcy5fc3RhdHVzOwogICAgICAgICB0aGlzLl9zdGF0dXMgPSBzdGF0dXM7Ci0gICAgICAgIAor
CiAgICAgICAgIGlmICh0aGlzLnZpc2libGUgJiYgdGhpcy5fc3RhdHVzID09PSBXZWJJbnNwZWN0
b3IuQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuU3RhdHVzLklkbGUgJiYgKG9sZFN0YXR1cyA9PT0g
V2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLlN0YXR1cy5VcGRhdGVSZWFkeSB8
fCAhdGhpcy5fcmVzb3VyY2VzKSkKICAgICAgICAgICAgIHRoaXMuX21hcmtEaXJ0eSgpOwogCkBA
IC0xMzUsOSArMTQyLDkgQEAgV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVGcmFtZUNvbnRl
bnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl91cGRhdGVUaW1l
OwogICAgICAgICAgICAgZGVsZXRlIHRoaXMuX3NpemU7CiAgICAgICAgICAgICBkZWxldGUgdGhp
cy5fcmVzb3VyY2VzOwotICAgICAgICAgICAgCisKICAgICAgICAgICAgIHRoaXMuX2VtcHR5Vmll
dy5jbGFzc0xpc3QucmVtb3ZlKCJoaWRkZW4iKTsKLSAgICAgICAgICAgIAorCiAgICAgICAgICAg
ICBpZiAodGhpcy5fZGF0YUdyaWQpCiAgICAgICAgICAgICAgICAgdGhpcy5fZGF0YUdyaWQuZWxl
bWVudC5jbGFzc0xpc3QuYWRkKCJoaWRkZW4iKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTE1
Niw3ICsxNjMsNyBAQCBXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZUZyYW1lQ29udGVudFZp
ZXcucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9wb3B1bGF0ZURhdGFHcmlkKCk7CiAgICAg
ICAgIHRoaXMuX2RhdGFHcmlkLmF1dG9TaXplQ29sdW1ucygyMCwgODApOwogICAgICAgICB0aGlz
Ll9kYXRhR3JpZC5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoImhpZGRlbiIpOwotICAgICAgICAK
KwogICAgICAgICB0aGlzLl9lbXB0eVZpZXcuY2xhc3NMaXN0LmFkZCgiaGlkZGVuIik7CiAgICAg
fSwKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQXBw
bGljYXRpb25DYWNoZU1hbmFnZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9BcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5qcwppbmRleCA4NTQxMDA2MDY0ODc4ZjFiODFk
YzRlMmY5NGZkODRhMjkzNmE3MGJjLi5jNTU1ODZjN2M4NzQxOWQ2NGQyYjU1N2QxMzk4YzVkZjVl
ZmViOWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9B
cHBsaWNhdGlvbkNhY2hlTWFuYWdlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9BcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5qcwpAQCAtNjksNyArNjksNyBAQCBX
ZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZU1hbmFnZXIucHJvdG90eXBlID0gewogICAgIG5l
dHdvcmtTdGF0ZVVwZGF0ZWQ6IGZ1bmN0aW9uKGlzTm93T25saW5lKQogICAgIHsKICAgICAgICAg
dGhpcy5fb25saW5lID0gaXNOb3dPbmxpbmU7Ci0gICAgICAgIAorCiAgICAgICAgIHRoaXMuZGlz
cGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlTWFuYWdl
ci5FdmVudC5OZXR3b3JrU3RhdGVVcGRhdGVkLCB7b25saW5lOiB0aGlzLl9vbmxpbmV9KTsKICAg
ICB9LAogCkBAIC04Myw3ICs4Myw3IEBAIFdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlTWFu
YWdlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBmcmFtZSA9IFdlYkluc3BlY3Rvci5mcmFt
ZVJlc291cmNlTWFuYWdlci5mcmFtZUZvcklkZW50aWZpZXIoZnJhbWVJZCk7CiAgICAgICAgIGlm
ICghZnJhbWUpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIAorCiAgICAgICAgIHRoaXMu
X2ZyYW1lTWFuaWZlc3RVcGRhdGVkKGZyYW1lLCBtYW5pZmVzdFVSTCwgc3RhdHVzKTsKICAgICB9
LAogCkBAIC05NSwxMyArOTUsMjYgQEAgV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVNYW5h
Z2VyLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICBjYWxsYmFjayhudWxsKTsKICAgICAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAKKwogICAgICAg
ICAgICAgY2FsbGJhY2soYXBwbGljYXRpb25DYWNoZSk7CiAgICAgICAgIH0KLSAgICAgICAgCisK
ICAgICAgICAgQXBwbGljYXRpb25DYWNoZUFnZW50LmdldEFwcGxpY2F0aW9uQ2FjaGVGb3JGcmFt
ZShmcmFtZS5pZCwgY2FsbGJhY2tXcmFwcGVyKTsKICAgICB9LAogCisgICAgb2JqZWN0Rm9yQ29v
a2llOiBmdW5jdGlvbihjb29raWUsIG1hdGNoT25UeXBlQWxvbmUpCisgICAgeworICAgICAgICBj
b25zb2xlLmFzc2VydChjb29raWUudHlwZSAmJiBjb29raWUudHlwZSA9PT0gV2ViSW5zcGVjdG9y
LkNvbnRlbnRWaWV3Q29va2llVHlwZS5BcHBsaWNhdGlvbkNhY2hlKTsKKworICAgICAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IHRoaXMuX2FwcGxpY2F0aW9uQ2FjaGVPYmplY3RzLmxlbmd0aDsgKytp
KSB7CisgICAgICAgICAgICB2YXIgb2JqZWN0ID0gdGhpcy5fYXBwbGljYXRpb25DYWNoZU9iamVj
dHNbaV07CisgICAgICAgICAgICBpZiAob2JqZWN0LmZyYW1lLnVybCA9PT0gY29va2llLmZyYW1l
ICYmIG9iamVjdC5tYW5pZmVzdC5tYW5pZmVzdFVSTCA9PT0gY29va2llLm1hbmlmZXN0KQorICAg
ICAgICAgICAgICAgIHJldHVybiBvYmplY3Q7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4g
bWF0Y2hPblR5cGVBbG9uZSAmJiB0aGlzLl9hcHBsaWNhdGlvbkNhY2hlT2JqZWN0cy5sZW5ndGgg
PyB0aGlzLl9hcHBsaWNhdGlvbkNhY2hlT2JqZWN0c1swXSA6IG51bGw7CisgICAgfSwKKwogICAg
IC8vIFByaXZhdGUKIAogICAgIF9tYWluUmVzb3VyY2VEaWRDaGFuZ2U6IGZ1bmN0aW9uKGV2ZW50
KQpAQCAtMTMzLDE2ICsxNDYsMTYgQEAgV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVNYW5h
Z2VyLnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFyIGZyYW1lID0gV2ViSW5zcGVjdG9yLmZyYW1l
UmVzb3VyY2VNYW5hZ2VyLmZyYW1lRm9ySWRlbnRpZmllcihmcmFtZUlkKTsKICAgICAgICAgaWYg
KCFmcmFtZSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgCisKICAgICAgICAgaWYgKCFt
YW5pZmVzdFVSTCkKICAgICAgICAgICAgIHRoaXMuX2ZyYW1lTWFuaWZlc3RSZW1vdmVkKGZyYW1l
KTsKICAgICB9LAotICAgIAorCiAgICAgX2ZyYW1lc1dpdGhNYW5pZmVzdHNMb2FkZWQ6IGZ1bmN0
aW9uKGVycm9yLCBmcmFtZXNXaXRoTWFuaWZlc3RzKQogICAgIHsKICAgICAgICAgaWYgKGVycm9y
KQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAKKwogICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IGZyYW1lc1dpdGhNYW5pZmVzdHMubGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgIHZh
ciBmcmFtZSA9IFdlYkluc3BlY3Rvci5mcmFtZVJlc291cmNlTWFuYWdlci5mcmFtZUZvcklkZW50
aWZpZXIoZnJhbWVzV2l0aE1hbmlmZXN0c1tpXS5mcmFtZUlkKTsKICAgICAgICAgICAgIGlmICgh
ZnJhbWUpCkBAIC0xNTEsNyArMTY0LDcgQEAgV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVN
YW5hZ2VyLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX2ZyYW1lTWFuaWZlc3RVcGRh
dGVkKGZyYW1lLCBmcmFtZXNXaXRoTWFuaWZlc3RzW2ldLm1hbmlmZXN0VVJMLCBmcmFtZXNXaXRo
TWFuaWZlc3RzW2ldLnN0YXR1cyk7CiAgICAgICAgIH0KICAgICB9LAotICAgIAorCiAgICAgX2Zy
YW1lTWFuaWZlc3RVcGRhdGVkOiBmdW5jdGlvbihmcmFtZSwgbWFuaWZlc3RVUkwsIHN0YXR1cykK
ICAgICB7CiAgICAgICAgIGlmIChzdGF0dXMgPT09IFdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNh
Y2hlTWFuYWdlci5TdGF0dXMuVW5jYWNoZWQpIHsKQEAgLTE3MCwxOCArMTgzLDE4IEBAIFdlYklu
c3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZh
ciBzdGF0dXNDaGFuZ2VkID0gbWFuaWZlc3RGcmFtZSAmJiBzdGF0dXMgIT09IG9sZFN0YXR1czsK
ICAgICAgICAgaWYgKG1hbmlmZXN0RnJhbWUpCiAgICAgICAgICAgICBtYW5pZmVzdEZyYW1lLnN0
YXR1cyA9IHN0YXR1czsKLSAgICAgICAgCisKICAgICAgICAgaWYgKCF0aGlzLl9hcHBsaWNhdGlv
bkNhY2hlT2JqZWN0c1tmcmFtZS5pZF0pIHsKICAgICAgICAgICAgIHZhciBjYWNoZU1hbmlmZXN0
ID0gbmV3IFdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3QobWFuaWZlc3RVUkwp
OwogICAgICAgICAgICAgdGhpcy5fYXBwbGljYXRpb25DYWNoZU9iamVjdHNbZnJhbWUuaWRdID0g
bmV3IFdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlRnJhbWUoZnJhbWUsIGNhY2hlTWFuaWZl
c3QsIHN0YXR1cyk7CiAKICAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJz
KFdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5FdmVudC5GcmFtZU1hbmlmZXN0
QWRkZWQsIHtmcmFtZU1hbmlmZXN0OiB0aGlzLl9hcHBsaWNhdGlvbkNhY2hlT2JqZWN0c1tmcmFt
ZS5pZF19KTsKICAgICAgICAgfQotICAgICAgICAKKwogICAgICAgICBpZiAoc3RhdHVzQ2hhbmdl
ZCkKICAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rv
ci5BcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5FdmVudC5GcmFtZU1hbmlmZXN0U3RhdHVzQ2hhbmdl
ZCwge2ZyYW1lTWFuaWZlc3Q6IHRoaXMuX2FwcGxpY2F0aW9uQ2FjaGVPYmplY3RzW2ZyYW1lLmlk
XX0pOwogICAgIH0sCi0gICAgCisKICAgICBfZnJhbWVNYW5pZmVzdFJlbW92ZWQ6IGZ1bmN0aW9u
KGZyYW1lKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9hcHBsaWNhdGlvbkNhY2hlT2JqZWN0
c1tmcmFtZS5pZF0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9CYWNrRm9yd2FyZEVudHJ5LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvQmFja0ZvcndhcmRFbnRyeS5qcwppbmRleCBmYWFiMjhhNzRhMjA5MThjN2Q3Njg1YTMy
MTg3NTRkMjg2OTA5YjRiLi45NDg5OWJjNDRhNzg4NzBkM2NmMDNhMWUwMDg4YzBiM2UwOGJkMDkw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYWNrRm9y
d2FyZEVudHJ5LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jh
Y2tGb3J3YXJkRW50cnkuanMKQEAgLTI0LDE0ICsyNCwxNSBAQAogICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAq
LwogCi1XZWJJbnNwZWN0b3IuQmFja0ZvcndhcmRFbnRyeSA9IGZ1bmN0aW9uKGNvbnRlbnRWaWV3
LCBjb29raWUsIHJlc3RvcmVDYWxsYmFjaykKK1dlYkluc3BlY3Rvci5CYWNrRm9yd2FyZEVudHJ5
ID0gZnVuY3Rpb24oY29udGVudFZpZXcsIGNvb2tpZSkKIHsKICAgICBXZWJJbnNwZWN0b3IuT2Jq
ZWN0LmNhbGwodGhpcyk7CiAgICAgdGhpcy5fY29udGVudFZpZXcgPSBjb250ZW50VmlldzsKICAg
ICAvLyBDb29raWVzIGFyZSBjb21wYXJlZCB3aXRoIE9iamVjdC5zaGFsbG93RXF1YWwsIHNvIHNo
b3VsZCBub3Qgc3RvcmUgb2JqZWN0cyBvciBhcnJheXMuCiAgICAgdGhpcy5fY29va2llID0gY29v
a2llIHx8IHt9OwogICAgIHRoaXMuX3Njcm9sbFBvc2l0aW9ucyA9IFtdOwotICAgIHRoaXMuX3Jl
c3RvcmVDYWxsYmFjayA9IHJlc3RvcmVDYWxsYmFjazsKKworICAgIGNvbnRlbnRWaWV3LnNhdmVU
b0Nvb2tpZSh0aGlzLl9jb29raWUpOwogfTsKIAogV2ViSW5zcGVjdG9yLkJhY2tGb3J3YXJkRW50
cnkucHJvdG90eXBlID0gewpAQCAtNzMsOSArNzQsNyBAQCBXZWJJbnNwZWN0b3IuQmFja0Zvcndh
cmRFbnRyeS5wcm90b3R5cGUgPSB7CiAgICAgX3Jlc3RvcmVGcm9tQ29va2llOiBmdW5jdGlvbigp
CiAgICAgewogICAgICAgICB0aGlzLl9yZXN0b3JlU2Nyb2xsUG9zaXRpb25zKCk7Ci0KLSAgICAg
ICAgaWYgKHRoaXMuX3Jlc3RvcmVDYWxsYmFjayAmJiB0eXBlb2YgdGhpcy5fcmVzdG9yZUNhbGxi
YWNrID09PSAiZnVuY3Rpb24iKQotICAgICAgICAgICAgdGhpcy5fcmVzdG9yZUNhbGxiYWNrLmNh
bGwobnVsbCwgdGhpcy5jb250ZW50VmlldywgdGhpcy5jb29raWUpOworICAgICAgICB0aGlzLmNv
bnRlbnRWaWV3LnJlc3RvcmVGcm9tQ29va2llKHRoaXMuY29va2llKTsKICAgICB9LAogCiAgICAg
X3Jlc3RvcmVTY3JvbGxQb3NpdGlvbnM6IGZ1bmN0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRlbnRCcm93c2VyLmpzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udGVudEJyb3dzZXIuanMKaW5kZXggZGI5ODdh
OGIyMGI0NWIwMTMwNTdmZjI1MzVkY2MyNzRkMGJmYWI3Mi4uN2Y1ODdhMWM0Mzk4ODY5ZDUwZGE3
MDBiNzI2NWVlNmY3NDM2Yjk3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvQ29udGVudEJyb3dzZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvQ29udGVudEJyb3dzZXIuanMKQEAgLTE1MiwxNCArMTUyLDE1IEBAIFdl
Ykluc3BlY3Rvci5Db250ZW50QnJvd3Nlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2Nv
bnRlbnRWaWV3Q29udGFpbmVyLnVwZGF0ZUxheW91dCgpOwogICAgIH0sCiAKLSAgICBzaG93Q29u
dGVudFZpZXdGb3JSZXByZXNlbnRlZE9iamVjdDogZnVuY3Rpb24ocmVwcmVzZW50ZWRPYmplY3Qp
CisgICAgc2hvd0NvbnRlbnRWaWV3Rm9yUmVwcmVzZW50ZWRPYmplY3Q6IGZ1bmN0aW9uKHJlcHJl
c2VudGVkT2JqZWN0LCBjb29raWUpCiAgICAgewotICAgICAgICByZXR1cm4gdGhpcy5fY29udGVu
dFZpZXdDb250YWluZXIuc2hvd0NvbnRlbnRWaWV3Rm9yUmVwcmVzZW50ZWRPYmplY3QocmVwcmVz
ZW50ZWRPYmplY3QpOworICAgICAgICB2YXIgY29udGVudFZpZXcgPSB0aGlzLmNvbnRlbnRWaWV3
Rm9yUmVwcmVzZW50ZWRPYmplY3QocmVwcmVzZW50ZWRPYmplY3QpOworICAgICAgICByZXR1cm4g
dGhpcy5fY29udGVudFZpZXdDb250YWluZXIuc2hvd0NvbnRlbnRWaWV3KGNvbnRlbnRWaWV3LCBj
b29raWUpOwogICAgIH0sCiAKLSAgICBzaG93Q29udGVudFZpZXc6IGZ1bmN0aW9uKGNvbnRlbnRW
aWV3LCBjb29raWUsIHJlc3RvcmVDYWxsYmFjaykKKyAgICBzaG93Q29udGVudFZpZXc6IGZ1bmN0
aW9uKGNvbnRlbnRWaWV3LCBjb29raWUpCiAgICAgewotICAgICAgICByZXR1cm4gdGhpcy5fY29u
dGVudFZpZXdDb250YWluZXIuc2hvd0NvbnRlbnRWaWV3KGNvbnRlbnRWaWV3LCBjb29raWUsIHJl
c3RvcmVDYWxsYmFjayk7CisgICAgICAgIHJldHVybiB0aGlzLl9jb250ZW50Vmlld0NvbnRhaW5l
ci5zaG93Q29udGVudFZpZXcoY29udGVudFZpZXcsIGNvb2tpZSk7CiAgICAgfSwKIAogICAgIGNv
bnRlbnRWaWV3Rm9yUmVwcmVzZW50ZWRPYmplY3Q6IGZ1bmN0aW9uKHJlcHJlc2VudGVkT2JqZWN0
LCBvbmx5RXhpc3RpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Db250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL0NvbnRlbnRWaWV3LmpzCmluZGV4IGY1YjZmZjNmM2UwYjgyNTA4NTJlNjRiOTk2YmI1NzZi
NDQwZjgyNWEuLjdjNDc1YzJlOWM1MmY5ZmU0MDEwYzY0ZDNhZmJjNjdmNjk0ZDdmYTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRlbnRWaWV3Lmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRlbnRWaWV3Lmpz
CkBAIC0yMzMsNiArMjMzLDE2IEBAIFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5wcm90b3R5cGUg
PSB7CiAgICAgICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMuCiAgICAgfSwKIAorICAg
IHNhdmVUb0Nvb2tpZTogZnVuY3Rpb24oY29va2llKQorICAgIHsKKyAgICAgICAgLy8gSW1wbGVt
ZW50ZWQgYnkgc3ViY2xhc3Nlcy4KKyAgICB9LAorCisgICAgcmVzdG9yZUZyb21Db29raWU6IGZ1
bmN0aW9uKGNvb2tpZSkKKyAgICB7CisgICAgICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1YmNsYXNz
ZXMuCisgICAgfSwKKwogICAgIGNhbkdvQmFjazogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAg
Ly8gSW1wbGVtZW50ZWQgYnkgc3ViY2xhc3Nlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRlbnRWaWV3Q29udGFpbmVyLmpzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udGVudFZpZXdDb250YWluZXIuanMKaW5kZXgg
ODU1MGU2YTEwNTdjMjg3MDRiNjgzYTc0YTYyMmQ3MmNkMDIwNjMwOS4uYTUzMmMwYjQxNGQzYjEy
ODMzOGI2MGI1NTFhOGViZTJjNWVjYjliNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvQ29udGVudFZpZXdDb250YWluZXIuanMKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udGVudFZpZXdDb250YWluZXIuanMKQEAgLTEz
Myw3ICsxMzMsNyBAQCBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXdDb250YWluZXIucHJvdG90eXBl
ID0gewogICAgICAgICByZXR1cm4gY29udGVudFZpZXc7CiAgICAgfSwKIAotICAgIHNob3dDb250
ZW50VmlldzogZnVuY3Rpb24oY29udGVudFZpZXcsIGNvb2tpZSwgcmVzdG9yZUNhbGxiYWNrKQor
ICAgIHNob3dDb250ZW50VmlldzogZnVuY3Rpb24oY29udGVudFZpZXcsIGNvb2tpZSkKICAgICB7
CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGNvbnRlbnRWaWV3IGluc3RhbmNlb2YgV2ViSW5zcGVj
dG9yLkNvbnRlbnRWaWV3KTsKICAgICAgICAgaWYgKCEoY29udGVudFZpZXcgaW5zdGFuY2VvZiBX
ZWJJbnNwZWN0b3IuQ29udGVudFZpZXcpKQpAQCAtMTQ2LDcgKzE0Niw3IEBAIFdlYkluc3BlY3Rv
ci5Db250ZW50Vmlld0NvbnRhaW5lci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm4g
bnVsbDsKIAogICAgICAgICB2YXIgY3VycmVudEVudHJ5ID0gdGhpcy5jdXJyZW50QmFja0Zvcndh
cmRFbnRyeTsKLSAgICAgICAgdmFyIHByb3Zpc2lvbmFsRW50cnkgPSBuZXcgV2ViSW5zcGVjdG9y
LkJhY2tGb3J3YXJkRW50cnkoY29udGVudFZpZXcsIGNvb2tpZSwgcmVzdG9yZUNhbGxiYWNrKTsK
KyAgICAgICAgdmFyIHByb3Zpc2lvbmFsRW50cnkgPSBuZXcgV2ViSW5zcGVjdG9yLkJhY2tGb3J3
YXJkRW50cnkoY29udGVudFZpZXcsIGNvb2tpZSk7CiAgICAgICAgIC8vIERvbid0IGRvIGFueXRo
aW5nIGlmIHdlIHdvdWxkIGhhdmUgYWRkZWQgYW4gaWRlbnRpY2FsIGJhY2svZm9yd2FyZCBsaXN0
IGVudHJ5LgogICAgICAgICBpZiAoY3VycmVudEVudHJ5ICYmIGN1cnJlbnRFbnRyeS5jb250ZW50
VmlldyA9PT0gY29udGVudFZpZXcgJiYgT2JqZWN0LnNoYWxsb3dFcXVhbChwcm92aXNpb25hbEVu
dHJ5LmNvb2tpZSwgY3VycmVudEVudHJ5LmNvb2tpZSkpCiAgICAgICAgICAgICByZXR1cm4gY3Vy
cmVudEVudHJ5LmNvbnRlbnRWaWV3OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvQ29va2llU3RvcmFnZUNvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29va2llU3RvcmFnZUNvbnRlbnRWaWV3LmpzCmluZGV4
IDg3YmVlOWYxZjU0ZTE5MDE2ZDdmNmVlMjUwYmNjNTc3MjcxMWM2ZGMuLjNjYjlkMjdlOTQ4OTM5
ZTE0Y2Q0ZjI0YjdiZTA0OTBhYzk1Nzg1MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL0Nvb2tpZVN0b3JhZ2VDb250ZW50Vmlldy5qcworKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db29raWVTdG9yYWdlQ29udGVudFZpZXcu
anMKQEAgLTQ5LDcgKzQ5LDcgQEAgV2ViSW5zcGVjdG9yLkNvb2tpZVN0b3JhZ2VDb250ZW50Vmll
dy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9jb29raWVzID0gdGhpcy5fZmlsdGVy
Q29va2llcyhjb29raWVzKTsKICAgICAgICAgICAgIHRoaXMuX3JlYnVpbGRUYWJsZSgpOwogICAg
ICAgICB9Ci0gICAgCisKICAgICAgICAgUGFnZUFnZW50LmdldENvb2tpZXMoY2FsbGJhY2suYmlu
ZCh0aGlzKSk7CiAgICAgfSwKIApAQCAtNTksNiArNTksMTIgQEAgV2ViSW5zcGVjdG9yLkNvb2tp
ZVN0b3JhZ2VDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9kYXRh
R3JpZC51cGRhdGVMYXlvdXQoKTsKICAgICB9LAogCisgICAgc2F2ZVRvQ29va2llOiBmdW5jdGlv
bihjb29raWUpCisgICAgeworICAgICAgICBjb29raWUudHlwZSA9IFdlYkluc3BlY3Rvci5Db250
ZW50Vmlld0Nvb2tpZVR5cGUuQ29va2llU3RvcmFnZTsKKyAgICAgICAgY29va2llLmhvc3QgPSB0
aGlzLnJlcHJlc2VudGVkT2JqZWN0Lmhvc3Q7CisgICAgfSwKKwogICAgIGdldCBzY3JvbGxhYmxl
RWxlbWVudHMoKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9kYXRhR3JpZCkKQEAgLTEwOCw3
ICsxMTQsNyBAQCBXZWJJbnNwZWN0b3IuQ29va2llU3RvcmFnZUNvbnRlbnRWaWV3LnByb3RvdHlw
ZSA9IHsKICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9kYXRhR3Jp
ZC5lbGVtZW50KTsKICAgICAgICAgICAgIHRoaXMuX2RhdGFHcmlkLnVwZGF0ZUxheW91dCgpOwog
ICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2RhdGFH
cmlkKTsKICAgICAgICAgdGhpcy5fZGF0YUdyaWQucmVtb3ZlQ2hpbGRyZW4oKTsKIApAQCAtMTM2
LDcgKzE0Miw3IEBAIFdlYkluc3BlY3Rvci5Db29raWVTdG9yYWdlQ29udGVudFZpZXcucHJvdG90
eXBlID0gewogICAgICAgICAgICAgdmFyIG5vZGUgPSBuZXcgV2ViSW5zcGVjdG9yLkRhdGFHcmlk
Tm9kZShkYXRhKTsKICAgICAgICAgICAgIG5vZGUuY29va2llID0gY29va2llOwogICAgICAgICAg
ICAgbm9kZS5zZWxlY3RhYmxlID0gdHJ1ZTsKLSAgICAgICAgICAgIAorCiAgICAgICAgICAgICB0
aGlzLl9kYXRhR3JpZC5hcHBlbmRDaGlsZChub2RlKTsKICAgICAgICAgfQogICAgIH0sCkBAIC0x
NzAsMTAgKzE3NiwxMCBAQCBXZWJJbnNwZWN0b3IuQ29va2llU3RvcmFnZUNvbnRlbnRWaWV3LnBy
b3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
LSAgICAgICAgCisKICAgICAgICAgcmV0dXJuIGZpbHRlcmVkQ29va2llczsKICAgICB9LAotICAg
IAorCiAgICAgX3NvcnRDb29raWVzOiBmdW5jdGlvbihjb29raWVzKQogICAgIHsKICAgICAgICAg
dmFyIHNvcnREaXJlY3Rpb24gPSB0aGlzLl9kYXRhR3JpZC5zb3J0T3JkZXIgPT09ICJhc2NlbmRp
bmciID8gMSA6IC0xOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvRE9NU3RvcmFnZUNvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvRE9NU3RvcmFnZUNvbnRlbnRWaWV3LmpzCmluZGV4IDc1ZjU0YTllMjQ4MWNj
NTRhOTE2YTk5NjI0MzE3NmUwZTcwOTRmYTYuLmQzMWRiOTIzMGRlNzY0M2E2NTFlYzA2ZDBmNjhk
ODdmODQ0OTM2Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL0RPTVN0b3JhZ2VDb250ZW50Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9ET01TdG9yYWdlQ29udGVudFZpZXcuanMKQEAgLTQ1LDYgKzQ1LDEzIEBA
IFdlYkluc3BlY3Rvci5ET01TdG9yYWdlQ29udGVudFZpZXcucHJvdG90eXBlID0gewogICAgICAg
ICB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmdldEVudHJpZXModGhpcy5fc2hvd0RPTVN0b3JhZ2VF
bnRyaWVzLmJpbmQodGhpcykpOwogICAgIH0sCiAKKyAgICBzYXZlVG9Db29raWU6IGZ1bmN0aW9u
KGNvb2tpZSkKKyAgICB7CisgICAgICAgIGNvb2tpZS50eXBlID0gV2ViSW5zcGVjdG9yLkNvbnRl
bnRWaWV3Q29va2llVHlwZS5ET01TdG9yYWdlOworICAgICAgICBjb29raWUuaXNMb2NhbFN0b3Jh
Z2UgPSB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmlzTG9jYWxTdG9yYWdlKCk7CisgICAgICAgIGNv
b2tpZS5ob3N0ID0gdGhpcy5yZXByZXNlbnRlZE9iamVjdC5ob3N0OworICAgIH0sCisKICAgICBp
dGVtc0NsZWFyZWQ6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHRoaXMuX2RhdGFHcmlkLnJl
bW92ZUNoaWxkcmVuKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9EYXRhYmFzZUNvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvRGF0YWJhc2VDb250ZW50Vmlldy5qcwppbmRleCA3YmU0OTZlZDkxZjg4YjU0
YzBiYzc4ZThkYWM0Y2NmNDg2YTJhYWM1Li41OTdkNjE0Y2YxMjc2MzMzODk2ZjZlN2EwYmZmOTdm
NjFjMzMzNmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9EYXRhYmFzZUNvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL0RhdGFiYXNlQ29udGVudFZpZXcuanMKQEAgLTUwLDYgKzUwLDggQEAgV2ViSW5z
cGVjdG9yLkRhdGFiYXNlQ29udGVudFZpZXcuRXZlbnQgPSB7CiBXZWJJbnNwZWN0b3IuRGF0YWJh
c2VDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rv
ci5EYXRhYmFzZUNvbnRlbnRWaWV3LAogCisgICAgLy8gUHVibGljCisKICAgICBzaG93bjogZnVu
Y3Rpb24oKQogICAgIHsKICAgICAgICAgdGhpcy5wcm9tcHQuc2hvd24oKTsKQEAgLTY3LDExICs2
OSwxMyBAQCBXZWJJbnNwZWN0b3IuRGF0YWJhc2VDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIH0KICAgICB9LAogCi0gICAgX21lc3NhZ2VzQ2xpY2tlZDogZnVuY3Rpb24oKQorICAg
IHNhdmVUb0Nvb2tpZTogZnVuY3Rpb24oY29va2llKQogICAgIHsKLSAgICAgICAgdGhpcy5wcm9t
cHQuZm9jdXMoKTsKKyAgICAgICAgY29va2llLnR5cGUgPSBXZWJJbnNwZWN0b3IuQ29udGVudFZp
ZXdDb29raWVUeXBlLkRhdGFiYXNlOworICAgICAgICBjb29raWUuaG9zdCA9IHRoaXMucmVwcmVz
ZW50ZWRPYmplY3QuaG9zdDsKKyAgICAgICAgY29va2llLm5hbWUgPSB0aGlzLnJlcHJlc2VudGVk
T2JqZWN0Lm5hbWU7CiAgICAgfSwKLSAgICAKKwogICAgIGNvbnNvbGVQcm9tcHRDb21wbGV0aW9u
c05lZWRlZDogZnVuY3Rpb24ocHJvbXB0LCBkZWZhdWx0Q29tcGxldGlvbnMsIGJhc2UsIHByZWZp
eCwgc3VmZml4KQogICAgIHsKICAgICAgICAgdmFyIHJlc3VsdHMgPSBbXTsKQEAgLTEwMyw2ICsx
MDcsMTMgQEAgV2ViSW5zcGVjdG9yLkRhdGFiYXNlQ29udGVudFZpZXcucHJvdG90eXBlID0gewog
ICAgICAgICB0aGlzLmRhdGFiYXNlLmV4ZWN1dGVTUUwocXVlcnksIHRoaXMuX3F1ZXJ5RmluaXNo
ZWQuYmluZCh0aGlzLCBxdWVyeSksIHRoaXMuX3F1ZXJ5RXJyb3IuYmluZCh0aGlzLCBxdWVyeSkp
OwogICAgIH0sCiAKKyAgICAvLyBQcml2YXRlCisKKyAgICBfbWVzc2FnZXNDbGlja2VkOiBmdW5j
dGlvbigpCisgICAgeworICAgICAgICB0aGlzLnByb21wdC5mb2N1cygpOworICAgIH0sCisKICAg
ICBfcXVlcnlGaW5pc2hlZDogZnVuY3Rpb24ocXVlcnksIGNvbHVtbk5hbWVzLCB2YWx1ZXMpCiAg
ICAgewogICAgICAgICB2YXIgZGF0YUdyaWQgPSBXZWJJbnNwZWN0b3IuRGF0YUdyaWQuY3JlYXRl
U29ydGFibGVEYXRhR3JpZChjb2x1bW5OYW1lcywgdmFsdWVzKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0RhdGFiYXNlVGFibGVDb250ZW50Vmlldy5q
cyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0RhdGFiYXNlVGFibGVDb250
ZW50Vmlldy5qcwppbmRleCA0ZWFiNzEyN2QyM2YzNTg2ZTcwYWQ0YWFjMGM2MTM5N2Y5NGJjNDhj
Li42OTk5MTdkM2JhYmVmNTFmYjhkN2RlNmU2YzRmMGZlMjA2ODAzNWYxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9EYXRhYmFzZVRhYmxlQ29udGVudFZp
ZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRGF0YWJhc2VU
YWJsZUNvbnRlbnRWaWV3LmpzCkBAIC0yNiw5ICsyNiw5IEBACiBXZWJJbnNwZWN0b3IuRGF0YWJh
c2VUYWJsZUNvbnRlbnRWaWV3ID0gZnVuY3Rpb24ocmVwcmVzZW50ZWRPYmplY3QpCiB7CiAgICAg
V2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LmNhbGwodGhpcywgcmVwcmVzZW50ZWRPYmplY3QpOwot
ICAgIAorCiAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLkRhdGFi
YXNlVGFibGVDb250ZW50Vmlldy5TdHlsZUNsYXNzTmFtZSk7Ci0gICAgCisKICAgICB0aGlzLnVw
ZGF0ZSgpOwogfTsKIApAQCAtNTAsNiArNTAsMTQgQEAgV2ViSW5zcGVjdG9yLkRhdGFiYXNlVGFi
bGVDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9kYXRhR3JpZC51
cGRhdGVMYXlvdXQoKTsKICAgICB9LAogCisgICAgc2F2ZVRvQ29va2llOiBmdW5jdGlvbihjb29r
aWUpCisgICAgeworICAgICAgICBjb29raWUudHlwZSA9IFdlYkluc3BlY3Rvci5Db250ZW50Vmll
d0Nvb2tpZVR5cGUuRGF0YWJhc2VUYWJsZTsKKyAgICAgICAgY29va2llLmhvc3QgPSB0aGlzLnJl
cHJlc2VudGVkT2JqZWN0Lmhvc3Q7CisgICAgICAgIGNvb2tpZS5uYW1lID0gdGhpcy5yZXByZXNl
bnRlZE9iamVjdC5uYW1lOworICAgICAgICBjb29raWUuZGF0YWJhc2UgPSB0aGlzLnJlcHJlc2Vu
dGVkT2JqZWN0LmRhdGFiYXNlLm5hbWU7CisgICAgfSwKKwogICAgIGdldCBzY3JvbGxhYmxlRWxl
bWVudHMoKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9kYXRhR3JpZCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0ZyYW1lQ29udGVudFZpZXcuanMg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9GcmFtZUNvbnRlbnRWaWV3Lmpz
CmluZGV4IGQwYmMyODZjNGQ3MmFmYWJmMzg1YjY2Mzk5YWVjZGViN2Q4N2FiMmYuLjYwYjdmMDA0
MmFjMjZlMTE2YTBmYWUzYTE5ZmEyMmRjYWFlNzRkOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0ZyYW1lQ29udGVudFZpZXcuanMKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRnJhbWVDb250ZW50Vmlldy5qcwpAQCAtOTUs
NiArOTUsMjEgQEAgV2ViSW5zcGVjdG9yLkZyYW1lQ29udGVudFZpZXcucHJvdG90eXBlID0gewog
ICAgICAgICB0aGlzLl9zaG93bkluaXRpYWxDb250ZW50ID0gZmFsc2U7CiAgICAgfSwKIAorICAg
IHNhdmVUb0Nvb2tpZTogZnVuY3Rpb24oY29va2llKQorICAgIHsKKyAgICAgICAgY29va2llLnR5
cGUgPSBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXdDb29raWVUeXBlLlJlc291cmNlOworICAgICAg
ICBjb29raWUuc3VidmlldyA9IHRoaXMuX2N1cnJlbnRDb250ZW50Vmlld1NldHRpbmcudmFsdWU7
CisgICAgICAgIGlmICghdGhpcy5yZXByZXNlbnRlZE9iamVjdC5pc01haW5GcmFtZSgpKQorICAg
ICAgICAgICAgY29va2llLnVybCA9IHRoaXMucmVwcmVzZW50ZWRPYmplY3QudXJsOworICAgIH0s
CisKKyAgICByZXN0b3JlRnJvbUNvb2tpZTogZnVuY3Rpb24oY29va2llKQorICAgIHsKKyAgICAg
ICAgdmFyIHNob3duVmlldyA9IHRoaXMuX3Nob3dDb250ZW50Vmlld0ZvcklkZW50aWZpZXIoY29v
a2llLnN1YnZpZXcpOworICAgICAgICBpZiAoImxpbmVOdW1iZXIiIGluIGNvb2tpZSAmJiAiY29s
dW1uTnVtYmVyIiBpbiBjb29raWUpCisgICAgICAgICAgICB0aGlzLnNob3dTb3VyY2VDb2RlKG5l
dyBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVBvc2l0aW9uKGNvb2tpZS5saW5lTnVtYmVyLCBjb29r
aWUuY29sdW1uTnVtYmVyKSk7CisgICAgfSwKKwogICAgIHNob3dSZXNvdXJjZTogZnVuY3Rpb24o
KQogICAgIHsKICAgICAgICAgdGhpcy5fc2hvd25Jbml0aWFsQ29udGVudCA9IHRydWU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9GcmFtZVJlc291cmNl
TWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0ZyYW1lUmVz
b3VyY2VNYW5hZ2VyLmpzCmluZGV4IDhlZWZlMTcwMDZiNGJlYWZjODQ5N2E5NmFhYTYwNDcwMWI3
ODhmOTYuLjNkMTkwNWRlODBhODZkNjYzNGJkOGJjZGE1NzFmZDA5YmZmNzVkNDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0ZyYW1lUmVzb3VyY2VNYW5h
Z2VyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0ZyYW1lUmVz
b3VyY2VNYW5hZ2VyLmpzCkBAIC04MCw2ICs4MCwyMCBAQCBXZWJJbnNwZWN0b3IuRnJhbWVSZXNv
dXJjZU1hbmFnZXIucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gdGhpcy5fZnJhbWVJZGVu
dGlmaWVyTWFwW2ZyYW1lSWRdIHx8IG51bGw7CiAgICAgfSwKIAorCisgICAgb2JqZWN0Rm9yQ29v
a2llOiBmdW5jdGlvbihjb29raWUpCisgICAgeworICAgICAgICB2YXIgcmVwcmVzZW50ZWRPYmpl
Y3QgPSAoY29va2llLnVybCkgPyB0aGlzLnJlc291cmNlRm9yVVJMKGNvb2tpZS51cmwpIDogdGhp
cy5tYWluRnJhbWU7CisKKyAgICAgICAgaWYgKCFyZXByZXNlbnRlZE9iamVjdCkKKyAgICAgICAg
ICAgIHJlcHJlc2VudGVkT2JqZWN0ID0gdGhpcy5tYWluRnJhbWU7CisKKyAgICAgICAgaWYgKHJl
cHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJlc291cmNlICYmIHJlcHJl
c2VudGVkT2JqZWN0LmlzTWFpblJlc291cmNlKCkpCisgICAgICAgICAgICByZXByZXNlbnRlZE9i
amVjdCA9IHJlcHJlc2VudGVkT2JqZWN0LnBhcmVudEZyYW1lOworCisgICAgICAgIHJldHVybiBy
ZXByZXNlbnRlZE9iamVjdDsKKyAgICB9LAorCiAgICAgZnJhbWVEaWROYXZpZ2F0ZTogZnVuY3Rp
b24oZnJhbWVQYXlsb2FkKQogICAgIHsKICAgICAgICAgLy8gQ2FsbGVkIGZyb20gV2ViSW5zcGVj
dG9yLlBhZ2VPYnNlcnZlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL0luc3RydW1lbnRTaWRlYmFyUGFuZWwuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9JbnN0cnVtZW50U2lkZWJhclBhbmVsLmpzCmluZGV4IGY3OGRiMTA2
ZGViMDQ4MmJkZTg3Y2M2YTNmOWUyMWViOWFhZGMxN2MuLmY4ZjliYmNlZTdiY2Y1MzM3MTBlOGEw
OTYyMzhiMjM5ZjE5NTg4ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL0luc3RydW1lbnRTaWRlYmFyUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvSW5zdHJ1bWVudFNpZGViYXJQYW5lbC5qcwpAQCAtNTUsOSAr
NTUsNyBAQCBXZWJJbnNwZWN0b3IuSW5zdHJ1bWVudFNpZGViYXJQYW5lbCA9IGZ1bmN0aW9uKCkK
ICAgICB0aGlzLl90aW1lbGluZXNUcmVlT3V0bGluZSA9IG5ldyBUcmVlT3V0bGluZSh0aW1lbGlu
ZXNUcmVlT3V0bGluZUVsZW1lbnQpOwogICAgIHRoaXMuX3RpbWVsaW5lc1RyZWVPdXRsaW5lLmFs
bG93c1JlcGVhdFNlbGVjdGlvbiA9IHRydWU7CiAKLSAgICB0aGlzLl90aW1lbGluZXNPYmplY3Qg
PSBuZXcgV2ViSW5zcGVjdG9yLlRpbWVsaW5lc09iamVjdDsKLQotICAgIHRoaXMuX3RpbWVsaW5l
c1RyZWVFbGVtZW50ID0gbmV3IFdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQoV2ViSW5z
cGVjdG9yLkluc3RydW1lbnRTaWRlYmFyUGFuZWwuU3RvcHdhdGNoSWNvblN0eWxlQ2xhc3MsIFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiVGltZWxpbmVzIiksIG51bGwsIHRoaXMuX3RpbWVsaW5lc09i
amVjdCk7CisgICAgdGhpcy5fdGltZWxpbmVzVHJlZUVsZW1lbnQgPSBuZXcgV2ViSW5zcGVjdG9y
LkdlbmVyYWxUcmVlRWxlbWVudChXZWJJbnNwZWN0b3IuSW5zdHJ1bWVudFNpZGViYXJQYW5lbC5T
dG9wd2F0Y2hJY29uU3R5bGVDbGFzcywgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJUaW1lbGluZXMi
KSwgbnVsbCwgV2ViSW5zcGVjdG9yLnRpbWVsaW5lTWFuYWdlci50aW1lbGluZXMpOwogCiAgICAg
dmFyIG5ldHdvcmtUaW1lbGluZVRyZWVFbGVtZW50ID0gbmV3IFdlYkluc3BlY3Rvci5HZW5lcmFs
VHJlZUVsZW1lbnQoV2ViSW5zcGVjdG9yLkluc3RydW1lbnRTaWRlYmFyUGFuZWwuTmV0d29ya0lj
b25TdHlsZUNsYXNzLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk5ldHdvcmsgUmVxdWVzdHMiKSwg
bnVsbCwgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkLlR5cGUuTmV0d29yayk7CiAgICAgbmV0
d29ya1RpbWVsaW5lVHJlZUVsZW1lbnQuc21hbGwgPSB0cnVlOwpAQCAtMTc0LDcgKzE3Miw3IEBA
IFdlYkluc3BlY3Rvci5JbnN0cnVtZW50U2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKIAogICAg
IHNob3dUaW1lbGluZTogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgV2ViSW5zcGVjdG9yLmNv
bnRlbnRCcm93c2VyLnNob3dDb250ZW50Vmlld0ZvclJlcHJlc2VudGVkT2JqZWN0KHRoaXMuX3Rp
bWVsaW5lc09iamVjdCk7CisgICAgICAgIFdlYkluc3BlY3Rvci5jb250ZW50QnJvd3Nlci5zaG93
Q29udGVudFZpZXdGb3JSZXByZXNlbnRlZE9iamVjdChXZWJJbnNwZWN0b3IudGltZWxpbmVNYW5h
Z2VyLnRpbWVsaW5lcyk7CiAgICAgfSwKIAogICAgIHNob3dUaW1lbGluZUZvclJlY29yZFR5cGU6
IGZ1bmN0aW9uKHR5cGUpCkBAIC0xODYsMjIgKzE4NCw2IEBAIFdlYkluc3BlY3Rvci5JbnN0cnVt
ZW50U2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdHJlZUVsZW1lbnRUb1NlbGVj
dC5zZWxlY3QodHJ1ZSwgdHJ1ZSk7CiAgICAgfSwKIAotICAgIGNvb2tpZUZvckNvbnRlbnRWaWV3
OiBmdW5jdGlvbihjb250ZW50VmlldykKLSAgICB7Ci0gICAgICAgIGlmIChjb250ZW50VmlldyBp
bnN0YW5jZW9mIFdlYkluc3BlY3Rvci5UaW1lbGluZXNDb250ZW50VmlldykKLSAgICAgICAgICAg
IHJldHVybiB7dGltZWxpbmU6IHRydWV9OwotICAgICAgICByZXR1cm4gbnVsbDsKLSAgICB9LAot
Ci0gICAgc2hvd0NvbnRlbnRWaWV3Rm9yQ29va2llOiBmdW5jdGlvbihjb250ZW50Vmlld0Nvb2tp
ZSkKLSAgICB7Ci0gICAgICAgIGlmICghY29udGVudFZpZXdDb29raWUpCi0gICAgICAgICAgICBy
ZXR1cm47Ci0KLSAgICAgICAgaWYgKGNvbnRlbnRWaWV3Q29va2llLnRpbWVsaW5lKQotICAgICAg
ICAgICAgdGhpcy5zaG93VGltZWxpbmUoKTsKLSAgICB9LAotCiAgICAgc2hvd1Byb2ZpbGU6IGZ1
bmN0aW9uKHR5cGUsIHRpdGxlKQogICAgIHsKICAgICAgICAgdmFyIHByb2ZpbGVUcmVlRWxlbWVu
dHMgPSB0aGlzLmNvbnRlbnRUcmVlT3V0bGluZS5jaGlsZHJlbjsKQEAgLTIxNywxMSArMTk5LDgg
QEAgV2ViSW5zcGVjdG9yLkluc3RydW1lbnRTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogCiAg
ICAgc2hvd246IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIC8vIFJlc2VsZWN0IHRoZSBzZWxl
Y3RlZCB0cmVlIGVsZW1lbnQgdG8gY2F1c2UgdGhlIGNvbnRlbnQgdmlldyB0byBiZSBzaG93biBh
cyB3ZWxsLiA8cmRhcjovL3Byb2JsZW0vMTA4NTQ3Mjc+Ci0gICAgICAgIHZhciBzZWxlY3RlZFRy
ZWVFbGVtZW50ID0gdGhpcy5fdGltZWxpbmVzVHJlZU91dGxpbmUuc2VsZWN0ZWRUcmVlRWxlbWVu
dDsKLSAgICAgICAgaWYgKHNlbGVjdGVkVHJlZUVsZW1lbnQpCi0gICAgICAgICAgICBzZWxlY3Rl
ZFRyZWVFbGVtZW50LnNlbGVjdCh0cnVlLCB0cnVlKTsKLQorICAgICAgICAvLyBEZWxlZ2F0ZSB0
byBUaW1lbGluZXNDb250ZW50VmlldyB0byBzZWxlY3QgdGhlIGRlZmF1bHQgcmVjb3JkIHR5cGUu
CisgICAgICAgIFdlYkluc3BlY3Rvci5jb250ZW50QnJvd3Nlci5zaG93Q29udGVudFZpZXdGb3JS
ZXByZXNlbnRlZE9iamVjdChXZWJJbnNwZWN0b3IudGltZWxpbmVNYW5hZ2VyLnRpbWVsaW5lcyk7
CiAgICAgICAgIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLnByb3RvdHlwZS5z
aG93bi5jYWxsKHRoaXMpOwogICAgIH0sCiAKQEAgLTIzNyw3ICsyMTYsNyBAQCBXZWJJbnNwZWN0
b3IuSW5zdHJ1bWVudFNpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmIChzZWxl
Y3RlZFRyZWVFbGVtZW50KQogICAgICAgICAgICAgc2VsZWN0ZWRUcmVlRWxlbWVudC5kZXNlbGVj
dCgpOwogCi0gICAgICAgIHZhciBjb250ZW50VmlldyA9IFdlYkluc3BlY3Rvci5jb250ZW50QnJv
d3Nlci5jb250ZW50Vmlld0ZvclJlcHJlc2VudGVkT2JqZWN0KHRoaXMuX3RpbWVsaW5lc09iamVj
dCk7CisgICAgICAgIHZhciBjb250ZW50VmlldyA9IFdlYkluc3BlY3Rvci5jb250ZW50QnJvd3Nl
ci5jb250ZW50Vmlld0ZvclJlcHJlc2VudGVkT2JqZWN0KFdlYkluc3BlY3Rvci50aW1lbGluZU1h
bmFnZXIudGltZWxpbmVzKTsKICAgICAgICAgY29udGVudFZpZXcuc2hvd1RpbWVsaW5lRm9yUmVj
b3JkVHlwZSh0cmVlRWxlbWVudC5yZXByZXNlbnRlZE9iamVjdCk7CiAgICAgICAgIFdlYkluc3Bl
Y3Rvci5jb250ZW50QnJvd3Nlci5zaG93Q29udGVudFZpZXcoY29udGVudFZpZXcpOwogICAgIH0s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmpz
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5qcwppbmRleCA3ZTdl
ZjYyM2IyYzRhOWNiNWI0NTI5MmY4ZjhjOTg1ZWI2ZWJjMTYzLi4xN2U3ZmFiYjI0NmE1ODFjYWEw
MGI2ZWZjNDU2MTJmN2MyYTBkMzMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9NYWluLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL01haW4uanMKQEAgLTI5LDYgKzI5LDE3IEBAIFdlYkluc3BlY3Rvci5Ob3RpZmljYXRp
b24gPSB7CiAgICAgUGFnZUFyY2hpdmVFbmRlZDogInBhZ2UtYXJjaGl2ZS1lbmRlZCIKIH07CiAK
K1dlYkluc3BlY3Rvci5Db250ZW50Vmlld0Nvb2tpZVR5cGUgPSB7CisgICAgQXBwbGljYXRpb25D
YWNoZTogImFwcGxpY2F0aW9uLWNhY2hlIiwKKyAgICBDb29raWVTdG9yYWdlOiAiY29va2llLXN0
b3JhZ2UiLAorICAgIERhdGFiYXNlOiAiZGF0YWJhc2UiLAorICAgIERhdGFiYXNlVGFibGU6ICJk
YXRhYmFzZS10YWJsZSIsCisgICAgRE9NU3RvcmFnZTogImRvbS1zdG9yYWdlIiwKKyAgICBSZXNv
dXJjZTogInJlc291cmNlIiwgLy8gaW5jbHVkZXMgRnJhbWUgdG9vLgorICAgIFRpbWVsaW5lczog
InRpbWVsaW5lcyIsCisKK307CisKIFdlYkluc3BlY3Rvci5sb2FkZWQgPSBmdW5jdGlvbigpCiB7
CiAgICAgLy8gVGVsbCB0aGUgSW5zcGVjdG9yRnJvbnRlbmRIb3N0IHdlIGxvYWRlZCBmaXJzdCB0
byBlc3RhYmxpc2ggY29tbXVuaWNhdGlvbiB3aXRoIEluc3BlY3RvckJhY2tlbmQuCkBAIC05Myw2
ICsxMDQsMTMgQEAgV2ViSW5zcGVjdG9yLmxvYWRlZCA9IGZ1bmN0aW9uKCkKIAogICAgIFdlYklu
c3BlY3Rvci5GcmFtZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5GcmFtZS5FdmVudC5N
YWluUmVzb3VyY2VEaWRDaGFuZ2UsIHRoaXMuX21haW5SZXNvdXJjZURpZENoYW5nZSwgdGhpcyk7
CiAKKyAgICAvLyBUaGVzZSBsaXN0ZW5lcnMgYXJlIGZvciBldmVudHMgdGhhdCBjb3VsZCByZXNv
bHZlIGEgcGVuZGluZyBjb250ZW50IHZpZXcgY29va2llLgorICAgIHRoaXMuYXBwbGljYXRpb25D
YWNoZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNo
ZU1hbmFnZXIuRXZlbnQuRnJhbWVNYW5pZmVzdEFkZGVkLCB0aGlzLl9yZXNvbHZlQW5kU2hvd1Bl
bmRpbmdDb250ZW50Vmlld0Nvb2tpZSwgdGhpcyk7CisgICAgdGhpcy5mcmFtZVJlc291cmNlTWFu
YWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5GcmFtZVJlc291cmNlTWFuYWdlci5F
dmVudC5NYWluRnJhbWVEaWRDaGFuZ2UsIHRoaXMuX3Jlc29sdmVBbmRTaG93UGVuZGluZ0NvbnRl
bnRWaWV3Q29va2llLCB0aGlzKTsKKyAgICB0aGlzLnN0b3JhZ2VNYW5hZ2VyLmFkZEV2ZW50TGlz
dGVuZXIoV2ViSW5zcGVjdG9yLlN0b3JhZ2VNYW5hZ2VyLkV2ZW50LkRhdGFiYXNlV2FzQWRkZWQs
IHRoaXMuX3Jlc29sdmVBbmRTaG93UGVuZGluZ0NvbnRlbnRWaWV3Q29va2llLCB0aGlzKTsKKyAg
ICB0aGlzLnN0b3JhZ2VNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlN0b3Jh
Z2VNYW5hZ2VyLkV2ZW50LkNvb2tpZVN0b3JhZ2VPYmplY3RXYXNBZGRlZCwgdGhpcy5fcmVzb2x2
ZUFuZFNob3dQZW5kaW5nQ29udGVudFZpZXdDb29raWUsIHRoaXMpOworICAgIHRoaXMuc3RvcmFn
ZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuU3RvcmFnZU1hbmFnZXIuRXZl
bnQuRE9NU3RvcmFnZU9iamVjdFdhc0FkZGVkLCB0aGlzLl9yZXNvbHZlQW5kU2hvd1BlbmRpbmdD
b250ZW50Vmlld0Nvb2tpZSwgdGhpcyk7CisKICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVy
KCJET01Db250ZW50TG9hZGVkIiwgdGhpcy5jb250ZW50TG9hZGVkLmJpbmQodGhpcykpOwogCiAg
ICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiYmVmb3JlY29weSIsIHRoaXMuX2JlZm9yZWNv
cHkuYmluZCh0aGlzKSk7CkBAIC0xNDgsNyArMTY2LDcgQEAgV2ViSW5zcGVjdG9yLmNvbnRlbnRM
b2FkZWQgPSBmdW5jdGlvbigpCiAgICAgdGhpcy50b29sYmFyID0gbmV3IFdlYkluc3BlY3Rvci5U
b29sYmFyKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0b29sYmFyIikpOwogICAgIHRoaXMudG9v
bGJhci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Ub29sYmFyLkV2ZW50LkRpc3BsYXlN
b2RlRGlkQ2hhbmdlLCB0aGlzLl90b29sYmFyRGlzcGxheU1vZGVEaWRDaGFuZ2UsIHRoaXMpOwog
ICAgIHRoaXMudG9vbGJhci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Ub29sYmFyLkV2
ZW50LlNpemVNb2RlRGlkQ2hhbmdlLCB0aGlzLl90b29sYmFyU2l6ZU1vZGVEaWRDaGFuZ2UsIHRo
aXMpOwotICAgIAorCiAgICAgdmFyIGNvbnRlbnRFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImNvbnRlbnQiKTsKICAgICBjb250ZW50RWxlbWVudC5zZXRBdHRyaWJ1dGUoInJvbGUi
LCAibWFpbiIpOwogICAgIGNvbnRlbnRFbGVtZW50LnNldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbCIs
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ29udGVudCIpKTsKQEAgLTI3NywxMSArMjk1LDggQEAg
V2ViSW5zcGVjdG9yLmNvbnRlbnRMb2FkZWQgPSBmdW5jdGlvbigpCiAgICAgICAgIGlmICh0aGlz
Ll9sYXN0Q29udGVudENvb2tpZVNldHRpbmcudmFsdWUgPT09ICJjb25zb2xlIikgewogICAgICAg
ICAgICAgLy8gVGhlIGNvbnNvbGUgZG9lcyBub3QgaGF2ZSBhIHNpZGViYXIsIHNvIGhhbmRsZSBp
dHMgc3BlY2lhbCBjb29raWUgaGVyZS4KICAgICAgICAgICAgIHRoaXMuc2hvd0Z1bGxIZWlnaHRD
b25zb2xlKCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICB2YXIgcmVzcG9uc2libGVT
aWRlYmFyUGFuZWwgPSB0aGlzLm5hdmlnYXRpb25TaWRlYmFyLmZpbmRTaWRlYmFyUGFuZWwodGhp
cy5fbGFzdENvbnRlbnRWaWV3UmVzcG9uc2libGVTaWRlYmFyUGFuZWxTZXR0aW5nLnZhbHVlKTsK
LSAgICAgICAgICAgIGlmIChyZXNwb25zaWJsZVNpZGViYXJQYW5lbCkKLSAgICAgICAgICAgICAg
ICByZXNwb25zaWJsZVNpZGViYXJQYW5lbC5zaG93Q29udGVudFZpZXdGb3JDb29raWUodGhpcy5f
bGFzdENvbnRlbnRDb29raWVTZXR0aW5nLnZhbHVlKTsKLSAgICAgICAgfQorICAgICAgICB9IGVs
c2UKKyAgICAgICAgICAgIHRoaXMuX3Nob3dDb250ZW50Vmlld0ZvckNvb2tpZSh0aGlzLl9sYXN0
Q29udGVudENvb2tpZVNldHRpbmcudmFsdWUpOwogICAgIH0KIAogICAgIHRoaXMuX3VwZGF0ZVNw
bGl0Q29uc29sZUhlaWdodCh0aGlzLl9zcGxpdENvbnNvbGVIZWlnaHRTZXR0aW5nLnZhbHVlKTsK
QEAgLTQ4NSwxMyArNTAwLDEzIEBAIFdlYkluc3BlY3Rvci5vcGVuVVJMID0gZnVuY3Rpb24odXJs
LCBmcmFtZSwgYWx3YXlzT3BlbkV4dGVybmFsbHksIGxpbmVOdW1iZXIpCiAgICAgICAgIEluc3Bl
Y3RvckZyb250ZW5kSG9zdC5vcGVuSW5OZXdUYWIodXJsKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KLSAgICAKKwogICAgIHZhciBwYXJzZWRVUkwgPSBwYXJzZVVSTCh1cmwpOwogICAgIGlmIChw
YXJzZWRVUkwuc2NoZW1lID09PSBXZWJJbnNwZWN0b3IuUHJvZmlsZVR5cGUuUHJvZmlsZVNjaGVt
ZSkgewogICAgICAgICB2YXIgcHJvZmlsZVR5cGUgPSBwYXJzZWRVUkwuaG9zdC50b1VwcGVyQ2Fz
ZSgpOwogICAgICAgICB2YXIgcHJvZmlsZVRpdGxlID0gcGFyc2VkVVJMLnBhdGg7Ci0gICAgICAg
IAotICAgICAgICAvLyBUaGUgcGF0aCBvZiBvZiB0aGUgcHJvZmlsZSBVUkwgc3RhcnRzIHdpdGgg
YSBzbGFzaCwgcmVtb3ZlIGl0LCBzbyAKKworICAgICAgICAvLyBUaGUgcGF0aCBvZiBvZiB0aGUg
cHJvZmlsZSBVUkwgc3RhcnRzIHdpdGggYSBzbGFzaCwgcmVtb3ZlIGl0LCBzbwogICAgICAgICAv
LyB3ZSBjYW4gZ2V0IHRoZSBhY3R1YWwgdGl0bGUuCiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHBy
b2ZpbGVUaXRsZVswXSA9PT0gJy8nKTsKICAgICAgICAgcHJvZmlsZVRpdGxlID0gcHJvZmlsZVRp
dGxlLnN1YnN0cmluZygxKTsKQEAgLTk5Niw4ICsxMDExLDggQEAgV2ViSW5zcGVjdG9yLl91cGRh
dGVDdXJyZW50Q29udGVudFZpZXdDb29raWUgPSBmdW5jdGlvbigpCiAgICAgaWYgKCFyZXNwb25z
aWJsZVNpZGViYXJQYW5lbCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgdmFyIGNvb2tpZSA9IHJl
c3BvbnNpYmxlU2lkZWJhclBhbmVsLmNvb2tpZUZvckNvbnRlbnRWaWV3KGN1cnJlbnRDb250ZW50
Vmlldyk7Ci0KKyAgICB2YXIgY29va2llID0ge307CisgICAgY3VycmVudENvbnRlbnRWaWV3LnNh
dmVUb0Nvb2tpZShjb29raWUpOwogICAgIHRoaXMuX2xhc3RDb250ZW50Vmlld1Jlc3BvbnNpYmxl
U2lkZWJhclBhbmVsU2V0dGluZy52YWx1ZSA9IHJlc3BvbnNpYmxlU2lkZWJhclBhbmVsLmlkZW50
aWZpZXI7CiAgICAgdGhpcy5fbGFzdENvbnRlbnRDb29raWVTZXR0aW5nLnZhbHVlID0gY29va2ll
OwogfQpAQCAtMTA5Myw2ICsxMTA4LDczIEBAIFdlYkluc3BlY3Rvci5fY29udGVudEJyb3dzZXJS
ZXByZXNlbnRlZE9iamVjdHNEaWRDaGFuZ2UgPSBmdW5jdGlvbihldmVudCkKICAgICB0aGlzLl91
cGRhdGVDdXJyZW50Q29udGVudFZpZXdDb29raWUoZXZlbnQpOwogfQogCitXZWJJbnNwZWN0b3Iu
X3Nob3dDb250ZW50Vmlld0ZvckNvb2tpZSA9IGZ1bmN0aW9uKGNvb2tpZSkKK3sKKyAgICBpZiAo
IWNvb2tpZSB8fCAhY29va2llLnR5cGUpCisgICAgICAgIHJldHVybiBudWxsOworCisgICAgdGhp
cy5fcGVuZGluZ0NvbnRlbnRWaWV3Q29va2llID0gY29va2llOworICAgIHZhciBzaG93bkNvbnRl
bnRWaWV3ID0gdGhpcy5fcmVzb2x2ZUFuZFNob3dQZW5kaW5nQ29udGVudFZpZXdDb29raWUoKTsK
KworICAgIC8vIEF0IHRoaXMgcG9pbnQsIHdlIGFzc3VtZSBubyBzdG9yYWdlIG9iamVjdHMgb3Ig
dmlld3MgaGF2ZSBiZWVuIGNyZWF0ZWQgeWV0LgorICAgIC8vIElmIHRoZSBjb29raWUgcmVxdWVz
dHMgdGhlc2Ugdmlld3MsIHRoZXkgd2lsbCBiZSBzaG93biB3aGVuIHRoZSBzdG9yYWdlIG9iamVj
dAorICAgIC8vIGlzIGFkZGVkIChpZiBpdCBtYXRjaGVzIGV4YWN0bHkpLCBvciBhbnkgdmlldyBv
ZiB0aGUgc2FtZSB0eXBlIChhZnRlciBhIHRpbWVvdXQpLgorICAgIGlmICghc2hvd25Db250ZW50
VmlldykgeworICAgICAgICBpZiAodGhpcy5fbGFzdEF0dGVtcHRDb29raWVDaGVja2luZ1RpbWVv
dXQpCisgICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5fbGFzdEF0dGVtcHRDb29raWVDaGVj
a2luZ1RpbWVvdXQpOworCisgICAgICAgIHZhciBsYXN0QXR0ZW1wdFRvUmVzdG9yZUZyb21Db29r
aWUgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9sYXN0QXR0ZW1wdENv
b2tpZUNoZWNraW5nVGltZW91dDsKKyAgICAgICAgICAgIHRoaXMuX3Jlc29sdmVBbmRTaG93UGVu
ZGluZ0NvbnRlbnRWaWV3Q29va2llKHRydWUpOworICAgICAgICB9OworCisgICAgICAgIC8vIFdo
ZW4gdGhlIHNwZWNpZmljIHN0b3JhZ2UgaXRlbSB3YXNuJ3QgZm91bmQgd2Ugd2FudCB0byByZWxh
eCB0aGUgY2hlY2sgdG8gc2hvdyB0aGUgZmlyc3QgaXRlbSB3aXRoIHRoZQorICAgICAgICAvLyBz
YW1lIHR5cGUuIFRoZXJlIGlzIG5vIGdvb2QgdGltZSB0byBuYXR1cmFsbHkgZGVjbGFyZSB0aGUg
Y29va2llIHdhc24ndCBmb3VuZCwgc28gd2UgZG8gdGhhdCBvbiBhIHRpbWVvdXQuCisgICAgICAg
IHRoaXMuX2xhc3RBdHRlbXB0Q29va2llQ2hlY2tpbmdUaW1lb3V0ID0gc2V0VGltZW91dChsYXN0
QXR0ZW1wdFRvUmVzdG9yZUZyb21Db29raWUuYmluZCh0aGlzKSwgNTAwKTsKKyAgICB9CisKKyAg
ICByZXR1cm4gc2hvd25Db250ZW50VmlldzsKK30KKworV2ViSW5zcGVjdG9yLl9yZXNvbHZlQW5k
U2hvd1BlbmRpbmdDb250ZW50Vmlld0Nvb2tpZSA9IGZ1bmN0aW9uKG1hdGNoT25UeXBlQWxvbmUp
Cit7CisgICAgdmFyIGNvb2tpZSA9IHRoaXMuX3BlbmRpbmdDb250ZW50Vmlld0Nvb2tpZTsKKyAg
ICBpZiAoIWNvb2tpZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgdmFyIHJlcHJlc2Vu
dGVkT2JqZWN0ID0gbnVsbDsKKworICAgIGlmIChjb29raWUudHlwZSA9PT0gV2ViSW5zcGVjdG9y
LkNvbnRlbnRWaWV3Q29va2llVHlwZS5SZXNvdXJjZSkKKyAgICAgICAgcmVwcmVzZW50ZWRPYmpl
Y3QgPSB0aGlzLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLm9iamVjdEZvckNvb2tpZShjb29raWUpOwor
CisgICAgaWYgKGNvb2tpZS50eXBlID09PSBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXdDb29raWVU
eXBlLlRpbWVsaW5lcykKKyAgICAgICAgcmVwcmVzZW50ZWRPYmplY3QgPSB0aGlzLnRpbWVsaW5l
TWFuYWdlci5vYmplY3RGb3JDb29raWUoY29va2llKTsKKworICAgIGlmIChjb29raWUudHlwZSA9
PT0gV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29va2llVHlwZS5Db29raWVTdG9yYWdlIHx8IGNv
b2tpZS50eXBlID09PSBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXdDb29raWVUeXBlLkRhdGFiYXNl
ICB8fCBjb29raWUudHlwZSA9PT0gV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29va2llVHlwZS5E
YXRhYmFzZVRhYmxlIHx8IGNvb2tpZS50eXBlID09PSBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXdD
b29raWVUeXBlLkRPTVN0b3JhZ2UpCisgICAgICAgIHJlcHJlc2VudGVkT2JqZWN0ID0gdGhpcy5z
dG9yYWdlTWFuYWdlci5vYmplY3RGb3JDb29raWUoY29va2llLCBtYXRjaE9uVHlwZUFsb25lKTsK
KworICAgIGlmIChjb29raWUudHlwZSA9PT0gV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29va2ll
VHlwZS5BcHBsaWNhdGlvbkNhY2hlKQorICAgICAgICByZXByZXNlbnRlZE9iamVjdCA9IHRoaXMu
YXBwbGljYXRpb25DYWNoZU1hbmFnZXIub2JqZWN0Rm9yQ29va2llKGNvb2tpZSwgbWF0Y2hPblR5
cGVBbG9uZSk7CisKKyAgICBpZiAoIXJlcHJlc2VudGVkT2JqZWN0KQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICAvLyBJZiB3ZSByZWFjaGVkIHRoaXMgcG9pbnQsIHRoZW4gd2Ugc2hvdWxk
IGJlIGFibGUgdG8gY3JlYXRlIGFuZC9vciBkaXNwbGF5IGEgY29udGVudCB2aWV3IGJhc2VkIG9u
IHRoZSBjb29raWUuCisgICAgZGVsZXRlIHRoaXMuX3BlbmRpbmdDb250ZW50Vmlld0Nvb2tpZTsK
KyAgICBpZiAodGhpcy5fbGFzdEF0dGVtcHRDb29raWVDaGVja2luZ1RpbWVvdXQpCisgICAgICAg
IGNsZWFyVGltZW91dCh0aGlzLl9sYXN0QXR0ZW1wdENvb2tpZUNoZWNraW5nVGltZW91dCk7CisK
KyAgICAvLyBEZWxheSB0aGlzIHdvcmsgYmVjYXVzZSBvdGhlciBsaXN0ZW5lcnMgb2YgdGhlIG9y
aWdpbmF0aW5nIGV2ZW50IG1pZ2h0IG5vdCBoYXZlIGZpcmVkIHlldC4KKyAgICAvLyBTbyBkaXNw
bGF5aW5nIHRoZSBjb250ZW50IHZpZXcgYmVmb3JlIHRob3NlIGxpc3RlbmVycyBkbyB0aGVpciB3
b3JrIG1pZ2h0IGNhdXNlIHRoZQorICAgIC8vIGRlcGVuZGVudCB2aWV3IHN0YXRlcyAobmF2aWdh
dGlvbiBzaWRlYmFyIHRyZWUgZWxlbWVudHMsIHBhdGggY29tcG9uZW50cykgdG8gYmUgd3Jvbmcu
CisgICAgZnVuY3Rpb24gZGVsYXllZFdvcmsoKQorICAgIHsKKyAgICAgICAgdGhpcy5jb250ZW50
QnJvd3Nlci5zaG93Q29udGVudFZpZXdGb3JSZXByZXNlbnRlZE9iamVjdChyZXByZXNlbnRlZE9i
amVjdCwgY29va2llKTsKKyAgICB9CisgICAgc2V0VGltZW91dChkZWxheWVkV29yay5iaW5kKHRo
aXMpLCAwKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogV2ViSW5zcGVjdG9yLl9pbml0aWFsaXpl
V2ViU29ja2V0SWZOZWVkZWQgPSBmdW5jdGlvbigpCiB7CiAgICAgaWYgKCFJbnNwZWN0b3JGcm9u
dGVuZEhvc3QuaW5pdGlhbGl6ZVdlYlNvY2tldCkKQEAgLTEzNzIsMzAgKzE0NTQsMzAgQEAgV2Vi
SW5zcGVjdG9yLmVsZW1lbnREcmFnU3RhcnQgPSBmdW5jdGlvbihlbGVtZW50LCBkaXZpZGVyRHJh
ZywgZWxlbWVudERyYWdFbmQsIGUKIHsKICAgICBpZiAoV2ViSW5zcGVjdG9yLl9lbGVtZW50RHJh
Z2dpbmdFdmVudExpc3RlbmVyIHx8IFdlYkluc3BlY3Rvci5fZWxlbWVudEVuZERyYWdnaW5nRXZl
bnRMaXN0ZW5lcikKICAgICAgICAgV2ViSW5zcGVjdG9yLmVsZW1lbnREcmFnRW5kKGV2ZW50KTsK
LSAgICAKKwogICAgIGlmIChlbGVtZW50KSB7CiAgICAgICAgIC8vIEluc3RhbGwgZ2xhc3MgcGFu
ZQogICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLl9lbGVtZW50RHJhZ2dpbmdHbGFzc1BhbmUpCiAg
ICAgICAgICAgICBXZWJJbnNwZWN0b3IuX2VsZW1lbnREcmFnZ2luZ0dsYXNzUGFuZS5wYXJlbnRF
bGVtZW50LnJlbW92ZUNoaWxkKFdlYkluc3BlY3Rvci5fZWxlbWVudERyYWdnaW5nR2xhc3NQYW5l
KTsKLSAgICAgICAgCisKICAgICAgICAgdmFyIGdsYXNzUGFuZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImRpdiIpOwogICAgICAgICBnbGFzc1BhbmUuc3R5bGUuY3NzVGV4dCA9ICJwb3NpdGlv
bjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDtvcGFjaXR5OjA7ei1pbmRl
eDoxIjsKICAgICAgICAgZ2xhc3NQYW5lLmlkID0gImdsYXNzLXBhbmUtZm9yLWRyYWciOwogICAg
ICAgICBlbGVtZW50Lm93bmVyRG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChnbGFzc1BhbmUpOwog
ICAgICAgICBXZWJJbnNwZWN0b3IuX2VsZW1lbnREcmFnZ2luZ0dsYXNzUGFuZSA9IGdsYXNzUGFu
ZTsKICAgICB9Ci0gICAgCisKICAgICBXZWJJbnNwZWN0b3IuX2VsZW1lbnREcmFnZ2luZ0V2ZW50
TGlzdGVuZXIgPSBkaXZpZGVyRHJhZzsKICAgICBXZWJJbnNwZWN0b3IuX2VsZW1lbnRFbmREcmFn
Z2luZ0V2ZW50TGlzdGVuZXIgPSBlbGVtZW50RHJhZ0VuZDsKLSAgICAKKwogICAgIHZhciB0YXJn
ZXREb2N1bWVudCA9IGV2ZW50LnRhcmdldC5vd25lckRvY3VtZW50OwogCiAgICAgV2ViSW5zcGVj
dG9yLl9lbGVtZW50RHJhZ2dpbmdFdmVudFRhcmdldCA9IGV2ZW50VGFyZ2V0IHx8IHRhcmdldERv
Y3VtZW50OwogICAgIFdlYkluc3BlY3Rvci5fZWxlbWVudERyYWdnaW5nRXZlbnRUYXJnZXQuYWRk
RXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIiwgZGl2aWRlckRyYWcsIHRydWUpOwogICAgIFdlYklu
c3BlY3Rvci5fZWxlbWVudERyYWdnaW5nRXZlbnRUYXJnZXQuYWRkRXZlbnRMaXN0ZW5lcigibW91
c2V1cCIsIGVsZW1lbnREcmFnRW5kLCB0cnVlKTsKLSAgICAKKwogICAgIHRhcmdldERvY3VtZW50
LmJvZHkuc3R5bGUuY3Vyc29yID0gY3Vyc29yOwotICAgIAorCiAgICAgZXZlbnQucHJldmVudERl
ZmF1bHQoKTsKIH0KIApAQCAtMTQwMywxNyArMTQ4NSwxNyBAQCBXZWJJbnNwZWN0b3IuZWxlbWVu
dERyYWdFbmQgPSBmdW5jdGlvbihldmVudCkKIHsKICAgICBXZWJJbnNwZWN0b3IuX2VsZW1lbnRE
cmFnZ2luZ0V2ZW50VGFyZ2V0LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsIFdlYklu
c3BlY3Rvci5fZWxlbWVudERyYWdnaW5nRXZlbnRMaXN0ZW5lciwgdHJ1ZSk7CiAgICAgV2ViSW5z
cGVjdG9yLl9lbGVtZW50RHJhZ2dpbmdFdmVudFRhcmdldC5yZW1vdmVFdmVudExpc3RlbmVyKCJt
b3VzZXVwIiwgV2ViSW5zcGVjdG9yLl9lbGVtZW50RW5kRHJhZ2dpbmdFdmVudExpc3RlbmVyLCB0
cnVlKTsKLSAgICAKKwogICAgIGV2ZW50LnRhcmdldC5vd25lckRvY3VtZW50LmJvZHkuc3R5bGUu
cmVtb3ZlUHJvcGVydHkoImN1cnNvciIpOwotICAgIAorCiAgICAgaWYgKFdlYkluc3BlY3Rvci5f
ZWxlbWVudERyYWdnaW5nR2xhc3NQYW5lKQogICAgICAgICBXZWJJbnNwZWN0b3IuX2VsZW1lbnRE
cmFnZ2luZ0dsYXNzUGFuZS5wYXJlbnRFbGVtZW50LnJlbW92ZUNoaWxkKFdlYkluc3BlY3Rvci5f
ZWxlbWVudERyYWdnaW5nR2xhc3NQYW5lKTsKLSAgICAKKwogICAgIGRlbGV0ZSBXZWJJbnNwZWN0
b3IuX2VsZW1lbnREcmFnZ2luZ0dsYXNzUGFuZTsKICAgICBkZWxldGUgV2ViSW5zcGVjdG9yLl9l
bGVtZW50RHJhZ2dpbmdFdmVudFRhcmdldDsKICAgICBkZWxldGUgV2ViSW5zcGVjdG9yLl9lbGVt
ZW50RHJhZ2dpbmdFdmVudExpc3RlbmVyOwogICAgIGRlbGV0ZSBXZWJJbnNwZWN0b3IuX2VsZW1l
bnRFbmREcmFnZ2luZ0V2ZW50TGlzdGVuZXI7Ci0gICAgCisKICAgICBldmVudC5wcmV2ZW50RGVm
YXVsdCgpOwogfQogCkBAIC0xNDI1LDcgKzE1MDcsNyBAQCBXZWJJbnNwZWN0b3IuY3JlYXRlTWVz
c2FnZVRleHRWaWV3ID0gZnVuY3Rpb24obWVzc2FnZSwgaXNFcnJvcikKICAgICAgICAgbWVzc2Fn
ZUVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiZXJyb3IiKTsKIAogICAgIG1lc3NhZ2VFbGVtZW50LnRl
eHRDb250ZW50ID0gbWVzc2FnZTsKLSAgICAKKwogICAgIHJldHVybiBtZXNzYWdlRWxlbWVudDsK
IH0KIApAQCAtMTU3Nyw5ICsxNjU5LDkgQEAgV2ViSW5zcGVjdG9yLmxpbmtpZnlTdHJpbmdBc0Zy
YWdtZW50ID0gZnVuY3Rpb24oc3RyaW5nKQogICAgICAgICBpZiAodHlwZW9mKGxpbmVOdW1iZXIp
ICE9PSAidW5kZWZpbmVkIikKICAgICAgICAgICAgIHVybE5vZGUubGluZU51bWJlciA9IGxpbmVO
dW1iZXI7CiAKLSAgICAgICAgcmV0dXJuIHVybE5vZGU7IAorICAgICAgICByZXR1cm4gdXJsTm9k
ZTsKICAgICB9Ci0gICAgCisKICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLmxpbmtpZnlTdHJpbmdB
c0ZyYWdtZW50V2l0aEN1c3RvbUxpbmtpZmllcihzdHJpbmcsIGxpbmtpZmllcik7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL05hdmlnYXRpb25T
aWRlYmFyUGFuZWwuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9OYXZp
Z2F0aW9uU2lkZWJhclBhbmVsLmpzCmluZGV4IGI4M2IyNTA0NzMwZWFhNmZlMjNmOTE3YTc3NGNm
OWFlZmUzNjAwYjAuLjhhOWU1MmNlNWIzNDhlMTFlYzRhNDUzMWNmMjdiNGI3YzBjZTM3YTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL05hdmlnYXRpb25T
aWRlYmFyUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
TmF2aWdhdGlvblNpZGViYXJQYW5lbC5qcwpAQCAtMTcxLDE3ICsxNzEsNiBAQCBXZWJJbnNwZWN0
b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiB0
aGlzLl9jb250ZW50VHJlZU91dGxpbmUuZ2V0Q2FjaGVkVHJlZUVsZW1lbnQocmVwcmVzZW50ZWRP
YmplY3QpOwogICAgIH0sCiAKLSAgICBjb29raWVGb3JDb250ZW50VmlldzogZnVuY3Rpb24oY29u
dGVudFZpZXcpCi0gICAgewotICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzLgot
ICAgICAgICByZXR1cm4gbnVsbDsKLSAgICB9LAotCi0gICAgc2hvd0NvbnRlbnRWaWV3Rm9yQ29v
a2llOiBmdW5jdGlvbihjb250ZW50Vmlld0Nvb2tpZSkKLSAgICB7Ci0gICAgICAgIC8vIEltcGxl
bWVudGVkIGJ5IHN1YmNsYXNzZXMuCi0gICAgfSwKLQogICAgIHNob3dDb250ZW50Vmlld0ZvckN1
cnJlbnRTZWxlY3Rpb246IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIC8vIFJlc2VsZWN0IHRo
ZSBzZWxlY3RlZCB0cmVlIGVsZW1lbnQgdG8gY2F1c2UgdGhlIGNvbnRlbnQgdmlldyB0byBiZSBz
aG93biBhcyB3ZWxsLiA8cmRhcjovL3Byb2JsZW0vMTA4NTQ3Mjc+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmll
dy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Jlc291cmNlQ2x1c3Rl
ckNvbnRlbnRWaWV3LmpzCmluZGV4IDE3ZTIyZjVhOWMwMDkzZThlNTU3YTcwMGU2ZTJiNWM2NWU5
ODJjOTkuLjMyMTkwMGNlZTRkMDJkZTk5MDBlYjA0N2NjOGQwYTc4NmViNTIxYzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Jlc291cmNlQ2x1c3RlckNv
bnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Jl
c291cmNlQ2x1c3RlckNvbnRlbnRWaWV3LmpzCkBAIC0xNDAsNiArMTQwLDIxIEBAIFdlYkluc3Bl
Y3Rvci5SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRo
aXMuX3Nob3duSW5pdGlhbENvbnRlbnQgPSBmYWxzZTsKICAgICB9LAogCisgICAgc2F2ZVRvQ29v
a2llOiBmdW5jdGlvbihjb29raWUpCisgICAgeworICAgICAgICBjb29raWUudHlwZSA9IFdlYklu
c3BlY3Rvci5Db250ZW50Vmlld0Nvb2tpZVR5cGUuUmVzb3VyY2U7CisgICAgICAgIGNvb2tpZS51
cmwgPSB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LnVybDsKKyAgICAgICAgY29va2llLnN1YnZpZXcg
PSB0aGlzLl9jdXJyZW50Q29udGVudFZpZXdTZXR0aW5nLnZhbHVlOworICAgIH0sCisKKyAgICBy
ZXN0b3JlRnJvbUNvb2tpZTogZnVuY3Rpb24oY29va2llKQorICAgIHsKKyAgICAgICAgaWYgKCJs
aW5lTnVtYmVyIiBpbiBjb29raWUgJiYgImNvbHVtbk51bWJlciIgaW4gY29va2llKQorICAgICAg
ICAgICAgcmV0dXJuIHRoaXMuc2hvd1Jlc3BvbnNlKG5ldyBXZWJJbnNwZWN0b3IuU291cmNlQ29k
ZVBvc2l0aW9uKGNvb2tpZS5saW5lTnVtYmVyLCBjb29raWUuY29sdW1uTnVtYmVyKSk7CisKKyAg
ICAgICAgdGhpcy5fc2hvd0NvbnRlbnRWaWV3Rm9ySWRlbnRpZmllcihjb29raWUuc3Vidmlldyk7
CisgICAgfSwKKwogICAgIHNob3dSZXF1ZXN0OiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICB0
aGlzLl9zaG93bkluaXRpYWxDb250ZW50ID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Jlc291cmNlU2lkZWJhclBhbmVsLmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUmVzb3VyY2VTaWRlYmFyUGFuZWwuanMKaW5k
ZXggZTY2YWYxYmFiMDhiOGI1NmYxYWJiMTNmY2U3ZDdhOTZiMzQ0ZmM5ZS4uOTdiZjM5ZjdmZDgz
MTNjNTg3MzQzZDUxYWE5MDE3OWM0ZGM1MjcyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvUmVzb3VyY2VTaWRlYmFyUGFuZWwuanMKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUmVzb3VyY2VTaWRlYmFyUGFuZWwuanMKQEAg
LTg4LDEzICs4OCw2IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZVNpZGViYXJQYW5lbCA9IGZ1bmN0
aW9uKCkgewogICAgIHRoaXMuX3Jlc291cmNlc0NvbnRlbnRUcmVlT3V0bGluZS5pbmNsdWRlU291
cmNlTWFwUmVzb3VyY2VDaGlsZHJlbiA9IHRydWU7CiB9OwogCi1XZWJJbnNwZWN0b3IuUmVzb3Vy
Y2VTaWRlYmFyUGFuZWwuUmVzb3VyY2VDb250ZW50Vmlld0Nvb2tpZVR5cGUgPSAicmVzb3VyY2Ui
OwotV2ViSW5zcGVjdG9yLlJlc291cmNlU2lkZWJhclBhbmVsLkNvb2tpZVN0b3JhZ2VDb250ZW50
Vmlld0Nvb2tpZVR5cGUgPSAiY29va2llLXN0b3JhZ2UiOwotV2ViSW5zcGVjdG9yLlJlc291cmNl
U2lkZWJhclBhbmVsLkRhdGFiYXNlQ29udGVudFZpZXdDb29raWVUeXBlID0gImRhdGFiYXNlIjsK
LVdlYkluc3BlY3Rvci5SZXNvdXJjZVNpZGViYXJQYW5lbC5EYXRhYmFzZVRhYmxlQ29udGVudFZp
ZXdDb29raWVUeXBlID0gImRhdGFiYXNlLXRhYmxlIjsKLVdlYkluc3BlY3Rvci5SZXNvdXJjZVNp
ZGViYXJQYW5lbC5ET01TdG9yYWdlQ29udGVudFZpZXdDb29raWVUeXBlID0gImRvbS1zdG9yYWdl
IjsKLVdlYkluc3BlY3Rvci5SZXNvdXJjZVNpZGViYXJQYW5lbC5BcHBsaWNhdGlvbkNhY2hlQ29u
dGVudFZpZXdDb29raWVUeXBlID0gImFwcGxpY2F0aW9uLWNhY2hlIjsKLQogV2ViSW5zcGVjdG9y
LlJlc291cmNlU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICBjb25zdHJ1Y3RvcjogV2Vi
SW5zcGVjdG9yLlJlc291cmNlU2lkZWJhclBhbmVsLAogCkBAIC0xMDUsMTA5ICs5OCw2IEBAIFdl
Ykluc3BlY3Rvci5SZXNvdXJjZVNpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJl
dHVybiB0aGlzLl9zZWFyY2hDb250ZW50VHJlZU91dGxpbmU7CiAgICAgfSwKIAotICAgIGNvb2tp
ZUZvckNvbnRlbnRWaWV3OiBmdW5jdGlvbihjb250ZW50VmlldykKLSAgICB7Ci0gICAgICAgIGNv
bnNvbGUuYXNzZXJ0KGNvbnRlbnRWaWV3IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkZyYW1lQ29u
dGVudFZpZXcgfHwgY29udGVudFZpZXcgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUmVzb3VyY2VD
bHVzdGVyQ29udGVudFZpZXcgfHwgY29udGVudFZpZXcgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3Iu
U2NyaXB0Q29udGVudFZpZXcgfHwgY29udGVudFZpZXcgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3Iu
Q29va2llU3RvcmFnZUNvbnRlbnRWaWV3IHx8IGNvbnRlbnRWaWV3IGluc3RhbmNlb2YgV2ViSW5z
cGVjdG9yLkRPTVN0b3JhZ2VDb250ZW50VmlldyB8fCBjb250ZW50VmlldyBpbnN0YW5jZW9mIFdl
Ykluc3BlY3Rvci5EYXRhYmFzZVRhYmxlQ29udGVudFZpZXcgfHwgY29udGVudFZpZXcgaW5zdGFu
Y2VvZiBXZWJJbnNwZWN0b3IuRGF0YWJhc2VDb250ZW50VmlldyB8fCBjb250ZW50VmlldyBpbnN0
YW5jZW9mIFdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlRnJhbWVDb250ZW50Vmlldyk7Ci0K
LSAgICAgICAgdmFyIHJlcHJlc2VudGVkT2JqZWN0ID0gY29udGVudFZpZXcucmVwcmVzZW50ZWRP
YmplY3Q7Ci0KLSAgICAgICAgLy8gVGhlIG1haW4gZnJhbWUgZG9lcyBub3QgbmVlZCBhIFVSTCwg
YW4gZW1wdHkgY29va2llIGlzIGVub3VnaC4KLSAgICAgICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0
IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkZyYW1lICYmIHJlcHJlc2VudGVkT2JqZWN0LmlzTWFp
bkZyYW1lKCkpCi0gICAgICAgICAgICByZXR1cm4ge3R5cGU6IFdlYkluc3BlY3Rvci5SZXNvdXJj
ZVNpZGViYXJQYW5lbC5SZXNvdXJjZUNvbnRlbnRWaWV3Q29va2llVHlwZX07Ci0KLSAgICAgICAg
Ly8gSWYgaXQgaGFzIGEgVVJMLCByZXR1cm4gYSBjb29raWUgd2l0aCB0aGUgZnJhbWUvcmVzb3Vy
Y2Uvc2NyaXB0IFVSTCByZXByZXNlbnRlZCBieSB0aGUgY29udGVudCB2aWV3LgotICAgICAgICBp
ZiAocmVwcmVzZW50ZWRPYmplY3QudXJsKSB7Ci0gICAgICAgICAgICBjb25zb2xlLmFzc2VydChy
ZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5GcmFtZSB8fCByZXByZXNl
bnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5SZXNvdXJjZSB8fCByZXByZXNlbnRl
ZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5TY3JpcHQpOwotICAgICAgICAgICAgcmV0
dXJuIHt0eXBlOiBXZWJJbnNwZWN0b3IuUmVzb3VyY2VTaWRlYmFyUGFuZWwuUmVzb3VyY2VDb250
ZW50Vmlld0Nvb2tpZVR5cGUsIHVybDogY29udGVudFZpZXcucmVwcmVzZW50ZWRPYmplY3QudXJs
fTsKLSAgICAgICAgfQotCi0gICAgICAgIHZhciBjb29raWUgPSB7fTsKLQotICAgICAgICBpZiAo
cmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuQ29va2llU3RvcmFnZU9i
amVjdCkgewotICAgICAgICAgICAgY29va2llLnR5cGUgPSBXZWJJbnNwZWN0b3IuUmVzb3VyY2VT
aWRlYmFyUGFuZWwuQ29va2llU3RvcmFnZUNvbnRlbnRWaWV3Q29va2llVHlwZTsKLSAgICAgICAg
ICAgIGNvb2tpZS5ob3N0ID0gcmVwcmVzZW50ZWRPYmplY3QuaG9zdDsKLSAgICAgICAgfSBlbHNl
IGlmIChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5EYXRhYmFzZU9i
amVjdCkgewotICAgICAgICAgICAgY29va2llLnR5cGUgPSBXZWJJbnNwZWN0b3IuUmVzb3VyY2VT
aWRlYmFyUGFuZWwuRGF0YWJhc2VDb250ZW50Vmlld0Nvb2tpZVR5cGU7Ci0gICAgICAgICAgICBj
b29raWUuaG9zdCA9IHJlcHJlc2VudGVkT2JqZWN0Lmhvc3Q7Ci0gICAgICAgICAgICBjb29raWUu
bmFtZSA9IHJlcHJlc2VudGVkT2JqZWN0Lm5hbWU7Ci0gICAgICAgIH0gZWxzZSBpZiAocmVwcmVz
ZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuRGF0YWJhc2VUYWJsZU9iamVjdCkg
ewotICAgICAgICAgICAgY29va2llLnR5cGUgPSBXZWJJbnNwZWN0b3IuUmVzb3VyY2VTaWRlYmFy
UGFuZWwuRGF0YWJhc2VUYWJsZUNvbnRlbnRWaWV3Q29va2llVHlwZTsKLSAgICAgICAgICAgIGNv
b2tpZS5ob3N0ID0gcmVwcmVzZW50ZWRPYmplY3QuZGF0YWJhc2UuaG9zdDsKLSAgICAgICAgICAg
IGNvb2tpZS5kYXRhYmFzZSA9IHJlcHJlc2VudGVkT2JqZWN0LmRhdGFiYXNlLm5hbWU7Ci0gICAg
ICAgICAgICBjb29raWUubmFtZSA9IHJlcHJlc2VudGVkT2JqZWN0Lm5hbWU7Ci0gICAgICAgIH0g
ZWxzZSBpZiAocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuRE9NU3Rv
cmFnZU9iamVjdCkgewotICAgICAgICAgICAgY29va2llLnR5cGUgPSBXZWJJbnNwZWN0b3IuUmVz
b3VyY2VTaWRlYmFyUGFuZWwuRE9NU3RvcmFnZUNvbnRlbnRWaWV3Q29va2llVHlwZTsKLSAgICAg
ICAgICAgIGNvb2tpZS5pc0xvY2FsU3RvcmFnZSA9IHJlcHJlc2VudGVkT2JqZWN0LmlzTG9jYWxT
dG9yYWdlKCk7Ci0gICAgICAgICAgICBjb29raWUuaG9zdCA9IHJlcHJlc2VudGVkT2JqZWN0Lmhv
c3Q7Ci0gICAgICAgIH0gZWxzZSBpZiAocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJ
bnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZUZyYW1lKSB7Ci0gICAgICAgICAgICBjb29raWUudHlw
ZSA9IFdlYkluc3BlY3Rvci5SZXNvdXJjZVNpZGViYXJQYW5lbC5BcHBsaWNhdGlvbkNhY2hlQ29u
dGVudFZpZXdDb29raWVUeXBlOwotICAgICAgICAgICAgY29va2llLmZyYW1lID0gcmVwcmVzZW50
ZWRPYmplY3QuZnJhbWUudXJsOwotICAgICAgICAgICAgY29va2llLm1hbmlmZXN0ID0gcmVwcmVz
ZW50ZWRPYmplY3QubWFuaWZlc3QubWFuaWZlc3RVUkw7Ci0gICAgICAgIH0gZWxzZSBpZiAocmVw
cmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuU2NyaXB0KSB7Ci0gICAgICAg
ICAgICAvLyBJZiB0aGUgU2NyaXB0IGRvZXMgbm90IGhhdmUgYSBVUkwsIHRoZW4gdGhlcmUgaXMg
bm90IG11Y2ggbW9yZSB3ZSBjYW4gZG8gdG8gbWFrZSBhIGNvb2tpZS4KLSAgICAgICAgICAgIC8v
IFRoZSBVUkwgY2FzZSBpcyBoYW5kbGVkIGFib3ZlLCBkbyBub3RoaW5nIGhlcmUgdG8gcHJldmVu
dCB0cmlnZ2VyaW5nIHRoZSAiVW5rbm93biIgZXJyb3IgYmVsb3cuCi0gICAgICAgICAgICBjb25z
b2xlLmFzc2VydCghcmVwcmVzZW50ZWRPYmplY3QudXJsKTsKLSAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgIGNvbnNvbGUuZXJyb3IoIlVua25vd24gcmVwcmVzZW50ZWQgb2JqZWN0LiIpOwot
ICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIGNvb2tpZTsKLSAgICB9LAotCi0gICAgc2hvd0Nv
bnRlbnRWaWV3Rm9yQ29va2llOiBmdW5jdGlvbihjb250ZW50Vmlld0Nvb2tpZSkKLSAgICB7Ci0g
ICAgICAgIGlmICghY29udGVudFZpZXdDb29raWUgfHwgIWNvbnRlbnRWaWV3Q29va2llLnR5cGUp
Ci0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdGhpcy5fY29udGVudFZpZXdDb29raWVU
b1Nob3dXaGVuQXZhaWxhYmxlID0gY29udGVudFZpZXdDb29raWU7Ci0KLSAgICAgICAgaWYgKGNv
bnRlbnRWaWV3Q29va2llLnR5cGUgPT09IFdlYkluc3BlY3Rvci5SZXNvdXJjZVNpZGViYXJQYW5l
bC5SZXNvdXJjZUNvbnRlbnRWaWV3Q29va2llVHlwZSkgewotICAgICAgICAgICAgLy8gV2UgY2Fu
J3Qgc2hvdyBhbnl0aGluZyB1bnRpbCB3ZSBoYXZlIHRoZSBtYWluIGZyYW1lIGluIHRoZSBzaWRl
YmFyLiBPdGhlcndpc2UgdGhlIHBhdGggY29tcG9uZW50cyBpbiB0aGUgbmF2aWdhdGlvbiBiYXIg
d291bGQgYmUgbWlzc2luZy4KLSAgICAgICAgICAgIGlmICghdGhpcy5fbWFpbkZyYW1lVHJlZUVs
ZW1lbnQpIHsKLSAgICAgICAgICAgICAgICB0aGlzLl9jb250ZW50Vmlld0Nvb2tpZVRvU2hvd1do
ZW5BdmFpbGFibGUgPSBjb250ZW50Vmlld0Nvb2tpZTsKLSAgICAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHZhciByZXByZXNlbnRlZE9iamVjdCA9IGNv
bnRlbnRWaWV3Q29va2llLnVybCA/IFdlYkluc3BlY3Rvci5mcmFtZVJlc291cmNlTWFuYWdlci5y
ZXNvdXJjZUZvclVSTChjb250ZW50Vmlld0Nvb2tpZS51cmwpIDogV2ViSW5zcGVjdG9yLmZyYW1l
UmVzb3VyY2VNYW5hZ2VyLm1haW5GcmFtZTsKLSAgICAgICAgICAgIGlmICghcmVwcmVzZW50ZWRP
YmplY3QpCi0gICAgICAgICAgICAgICAgcmVwcmVzZW50ZWRPYmplY3QgPSBXZWJJbnNwZWN0b3Iu
ZnJhbWVSZXNvdXJjZU1hbmFnZXIubWFpbkZyYW1lOwotCi0gICAgICAgICAgICBpZiAoIXJlcHJl
c2VudGVkT2JqZWN0KQotICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgaWYg
KHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJlc291cmNlICYmIHJl
cHJlc2VudGVkT2JqZWN0LmlzTWFpblJlc291cmNlKCkpCi0gICAgICAgICAgICAgICAgcmVwcmVz
ZW50ZWRPYmplY3QgPSByZXByZXNlbnRlZE9iamVjdC5wYXJlbnRGcmFtZTsKLQotICAgICAgICAg
ICAgdGhpcy50cmVlRWxlbWVudEZvclJlcHJlc2VudGVkT2JqZWN0KHJlcHJlc2VudGVkT2JqZWN0
KS5yZXZlYWxBbmRTZWxlY3QodHJ1ZSwgdHJ1ZSk7Ci0KLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgfQotCi0gICAgICAgIC8vIEl0IG11c3QgYmUgYSBzdG9yYWdlIGNvb2tpZS4KLQotICAg
ICAgICBmdW5jdGlvbiBmaW5hbGl6ZUNvb2tpZUNoZWNraW5nKCkKLSAgICAgICAgewotICAgICAg
ICAgICAgLy8gV2FsayBhbGwgdGhlIHRyZWUgZWxlbWVudHMgYW5kIG1hdGNoIHRoZW0gYmFzZWQg
b24gdHlwZSBhbG9uZS4gU28gaWYgeW91IHdlcmUgbG9va2luZyBhdCBjb29raWVzCi0gICAgICAg
ICAgICAvLyBvbiBvbmUgc2l0ZSwgYW5kIGxhdGVyIG9wZW4gdGhlIGluc3BlY3RvciBvbiBhbm90
aGVyIHNpdGUsIHRoZSBuZXcgc2l0ZSdzIGNvb2tpZXMgd2lsbCBzaG93LgotICAgICAgICAgICAg
dmFyIGN1cnJlbnRUcmVlRWxlbWVudCA9IHRoaXMuY29udGVudFRyZWVPdXRsaW5lLmNoaWxkcmVu
WzBdOwotICAgICAgICAgICAgd2hpbGUgKGN1cnJlbnRUcmVlRWxlbWVudCAmJiAhY3VycmVudFRy
ZWVFbGVtZW50LnJvb3QpIHsKLSAgICAgICAgICAgICAgICBpZiAodGhpcy5fY2hlY2tTdG9yYWdl
VHJlZUVsZW1lbnRBZ2FpbnN0UGVuZGluZ0NvbnRlbnRWaWV3Q29va2llKGN1cnJlbnRUcmVlRWxl
bWVudCwgdHJ1ZSkpCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAg
IGN1cnJlbnRUcmVlRWxlbWVudCA9IGN1cnJlbnRUcmVlRWxlbWVudC50cmF2ZXJzZU5leHRUcmVl
RWxlbWVudChmYWxzZSwgbnVsbCwgZmFsc2UpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAg
ICBkZWxldGUgdGhpcy5fY29udGVudFZpZXdDb29raWVUb1Nob3dXaGVuQXZhaWxhYmxlOwotICAg
ICAgICAgICAgZGVsZXRlIHRoaXMuX2ZpbmFsaXplQ29va2llQ2hlY2tpbmdUaW1lb3V0OwotICAg
ICAgICB9Ci0KLSAgICAgICAgaWYgKHRoaXMuX2ZpbmFsaXplQ29va2llQ2hlY2tpbmdUaW1lb3V0
KQotICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuX2ZpbmFsaXplQ29va2llQ2hlY2tpbmdU
aW1lb3V0KTsKLQotICAgICAgICAvLyBXaGVuIHRoZSBzcGVjaWZpYyBzdG9yYWdlIGl0ZW0gd2Fz
bid0IGZvdW5kIHdlIHdhbnQgdG8gcmVsYXggdGhlIGNoZWNrIHRvIHNob3cgdGhlIGZpcnN0IGl0
ZW0gd2l0aCB0aGUKLSAgICAgICAgLy8gc2FtZSB0eXBlLiBUaGVyZSBpcyBubyBnb29kIHRpbWUg
dG8gbmF0dXJhbGx5IGRlY2xhcmUgdGhlIGNvb2tpZSB3YXNuJ3QgZm91bmQsIHNvIHdlIGRvIHRo
YXQgb24gYSB0aW1lb3V0LgotICAgICAgICB0aGlzLl9maW5hbGl6ZUNvb2tpZUNoZWNraW5nVGlt
ZW91dCA9IHNldFRpbWVvdXQoZmluYWxpemVDb29raWVDaGVja2luZy5iaW5kKHRoaXMpLCA1MDAp
OwotICAgIH0sCi0KICAgICBzaG93TWFpbkZyYW1lRE9NVHJlZTogZnVuY3Rpb24obm9kZVRvU2Vs
ZWN0LCBwcmV2ZW50Rm9jdXNDaGFuZ2UpCiAgICAgewogICAgICAgICB2YXIgY29udGVudFZpZXcg
PSBXZWJJbnNwZWN0b3IuY29udGVudEJyb3dzZXIuY29udGVudFZpZXdGb3JSZXByZXNlbnRlZE9i
amVjdChXZWJJbnNwZWN0b3IuZnJhbWVSZXNvdXJjZU1hbmFnZXIubWFpbkZyYW1lKTsKQEAgLTI2
MywyMCArMTUzLDcgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlU2lkZWJhclBhbmVsLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgdmFyIG5ld0NvbnRlbnRWaWV3ID0gV2ViSW5zcGVjdG9yLmNvbnRlbnRC
cm93c2VyLmNvbnRlbnRWaWV3Rm9yUmVwcmVzZW50ZWRPYmplY3QocmVwcmVzZW50ZWRPYmplY3Qp
OwogICAgICAgICB2YXIgY29va2llID0ge2xpbmVOdW1iZXI6IHBvc2l0aW9uVG9SZXZlYWwubGlu
ZU51bWJlciwgY29sdW1uTnVtYmVyOiBwb3NpdGlvblRvUmV2ZWFsLmNvbHVtbk51bWJlcn07CiAK
LSAgICAgICAgdmFyIHJlc3RvcmVDYWxsYmFjayA9IGZ1bmN0aW9uKGNvbnRlbnRWaWV3LCBzYXZl
ZENvb2tpZSkgewotICAgICAgICAgICAgdmFyIGxpbmVOdW1iZXIgPSBzYXZlZENvb2tpZS5saW5l
TnVtYmVyOwotICAgICAgICAgICAgdmFyIGNvbHVtbk51bWJlciA9IHNhdmVkQ29va2llLmNvbHVt
bk51bWJlcjsKLSAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IG5ldyBXZWJJbnNwZWN0b3IuU291
cmNlQ29kZVBvc2l0aW9uKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcik7Ci0KLSAgICAgICAgICAg
IGlmIChjb250ZW50VmlldyBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5GcmFtZUNvbnRlbnRWaWV3
KQotICAgICAgICAgICAgICAgIGNvbnRlbnRWaWV3LnNob3dTb3VyY2VDb2RlKHBvc2l0aW9uKQot
ICAgICAgICAgICAgZWxzZSBpZiAoY29udGVudFZpZXcgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3Iu
UmVzb3VyY2VDbHVzdGVyQ29udGVudFZpZXcpCi0gICAgICAgICAgICAgICAgY29udGVudFZpZXcu
c2hvd1Jlc3BvbnNlKHBvc2l0aW9uKQotICAgICAgICAgICAgZWxzZSBpZiAoY29udGVudFZpZXcg
aW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuU2NyaXB0Q29udGVudFZpZXcpCi0gICAgICAgICAgICAg
ICAgY29udGVudFZpZXcucmV2ZWFsUG9zaXRpb24ocG9zaXRpb24pCi0gICAgICAgIH07Ci0KLSAg
ICAgICAgV2ViSW5zcGVjdG9yLmNvbnRlbnRCcm93c2VyLnNob3dDb250ZW50VmlldyhuZXdDb250
ZW50VmlldywgY29va2llLCByZXN0b3JlQ2FsbGJhY2spOworICAgICAgICBXZWJJbnNwZWN0b3Iu
Y29udGVudEJyb3dzZXIuc2hvd0NvbnRlbnRWaWV3KG5ld0NvbnRlbnRWaWV3LCBjb29raWUpOwog
ICAgIH0sCiAKICAgICBzaG93U291cmNlQ29kZUxvY2F0aW9uOiBmdW5jdGlvbihzb3VyY2VDb2Rl
TG9jYXRpb24pCkBAIC02MTgsMTIgKzQ5NSw2IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZVNpZGVi
YXJQYW5lbC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgICAgIGlmICh0aGlzLl9mcmFtZUlkZW50
aWZpZXJUb1Nob3dTb3VyY2VDb2RlV2hlbkF2YWlsYWJsZSkKICAgICAgICAgICAgICAgICB0aGlz
LnNob3dTb3VyY2VDb2RlRm9yRnJhbWUodGhpcy5fZnJhbWVJZGVudGlmaWVyVG9TaG93U291cmNl
Q29kZVdoZW5BdmFpbGFibGUsIHRydWUpOwotICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5fY29u
dGVudFZpZXdDb29raWVUb1Nob3dXaGVuQXZhaWxhYmxlKSB7Ci0gICAgICAgICAgICAgICAgdGhp
cy5zaG93Q29udGVudFZpZXdGb3JDb29raWUodGhpcy5fY29udGVudFZpZXdDb29raWVUb1Nob3dX
aGVuQXZhaWxhYmxlKTsKLQotICAgICAgICAgICAgICAgIC8vIFRoZSBjb29raWUgaXMgb25seSB1
c2VmdWwgdW50aWwgdGhlIG1haW4gZnJhbWUgbG9hZHMuCi0gICAgICAgICAgICAgICAgZGVsZXRl
IHRoaXMuX2NvbnRlbnRWaWV3Q29va2llVG9TaG93V2hlbkF2YWlsYWJsZTsKLSAgICAgICAgICAg
IH0KICAgICAgICAgfQogCiAgICAgICAgIC8vIFdlIG9ubHkgY2FyZSBhYm91dCB0aGUgZmlyc3Qg
dGltZSB0aGUgbWFpbiBmcmFtZSBjaGFuZ2VzLgpAQCAtNzY0LDc1ICs2MzUsNiBAQCBXZWJJbnNw
ZWN0b3IuUmVzb3VyY2VTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLnNo
b3dNYWluRnJhbWVET01UcmVlKGV2ZW50LmRhdGEubm9kZSk7CiAgICAgfSwKIAotICAgIF9jaGVj
a1N0b3JhZ2VUcmVlRWxlbWVudEFnYWluc3RQZW5kaW5nQ29udGVudFZpZXdDb29raWU6IGZ1bmN0
aW9uKHRyZWVFbGVtZW50LCBtYXRjaE9uVHlwZUFsb25lKQotICAgIHsKLSAgICAgICAgdmFyIGNv
bnRlbnRWaWV3Q29va2llID0gdGhpcy5fY29udGVudFZpZXdDb29raWVUb1Nob3dXaGVuQXZhaWxh
YmxlOwotICAgICAgICBpZiAoIWNvbnRlbnRWaWV3Q29va2llIHx8ICFjb250ZW50Vmlld0Nvb2tp
ZS50eXBlKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIGlmIChjb250ZW50
Vmlld0Nvb2tpZS50eXBlID09PSBXZWJJbnNwZWN0b3IuUmVzb3VyY2VTaWRlYmFyUGFuZWwuUmVz
b3VyY2VDb250ZW50Vmlld0Nvb2tpZVR5cGUpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAg
ICAgdmFyIHJlcHJlc2VudGVkT2JqZWN0ID0gdHJlZUVsZW1lbnQucmVwcmVzZW50ZWRPYmplY3Q7
Ci0KLSAgICAgICAgc3dpdGNoIChjb250ZW50Vmlld0Nvb2tpZS50eXBlKSB7Ci0gICAgICAgIGNh
c2UgV2ViSW5zcGVjdG9yLlJlc291cmNlU2lkZWJhclBhbmVsLkNvb2tpZVN0b3JhZ2VDb250ZW50
Vmlld0Nvb2tpZVR5cGU6Ci0gICAgICAgICAgICBpZiAoIShyZXByZXNlbnRlZE9iamVjdCBpbnN0
YW5jZW9mIFdlYkluc3BlY3Rvci5Db29raWVTdG9yYWdlT2JqZWN0KSkKLSAgICAgICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgICAgICBpZiAoIW1hdGNoT25UeXBlQWxvbmUgJiYgcmVwcmVzZW50
ZWRPYmplY3QuaG9zdCAhPT0gY29udGVudFZpZXdDb29raWUuaG9zdCkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIFdlYklu
c3BlY3Rvci5SZXNvdXJjZVNpZGViYXJQYW5lbC5EYXRhYmFzZUNvbnRlbnRWaWV3Q29va2llVHlw
ZToKLSAgICAgICAgICAgIGlmICghKHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5z
cGVjdG9yLkRhdGFiYXNlT2JqZWN0KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgICAgICBpZiAoIW1hdGNoT25UeXBlQWxvbmUgJiYgcmVwcmVzZW50ZWRPYmplY3QuaG9z
dCAhPT0gY29udGVudFZpZXdDb29raWUuaG9zdCkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgICAgICBpZiAoIW1hdGNoT25UeXBlQWxvbmUgJiYgcmVwcmVzZW50ZWRPYmpl
Y3QubmFtZSAhPT0gY29udGVudFZpZXdDb29raWUubmFtZSkKLSAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIFdlYkluc3BlY3Rv
ci5SZXNvdXJjZVNpZGViYXJQYW5lbC5EYXRhYmFzZVRhYmxlQ29udGVudFZpZXdDb29raWVUeXBl
OgotICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgaXNuJ3QgZWFzeSB0byBpbXBsZW1lbnQgbGlr
ZSB0aGUgb3RoZXJzIHNpbmNlIERhdGFiYXNlVHJlZUVsZW1lbnQKLSAgICAgICAgICAgIC8vIHBv
cHVsYXRlcyB0aGUgdGFibGVzIGluc3RlYWQgb2YgUmVzb3VyY2VTaWRlYmFyUGFuZWwuIEp1c3Qg
c2VsZWN0IHRoZSBkYXRhYmFzZS4KLSAgICAgICAgICAgIGlmICghKHJlcHJlc2VudGVkT2JqZWN0
IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkRhdGFiYXNlT2JqZWN0KSkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBpZiAoIW1hdGNoT25UeXBlQWxvbmUgJiYgcmVw
cmVzZW50ZWRPYmplY3QuaG9zdCAhPT0gY29udGVudFZpZXdDb29raWUuaG9zdCkKLSAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBpZiAoIW1hdGNoT25UeXBlQWxvbmUg
JiYgcmVwcmVzZW50ZWRPYmplY3QubmFtZSAhPT0gY29udGVudFZpZXdDb29raWUuZGF0YWJhc2Up
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgcmV0dXJuOwotCi0g
ICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlJlc291cmNlU2lkZWJhclBhbmVsLkRPTVN0b3JhZ2VD
b250ZW50Vmlld0Nvb2tpZVR5cGU6Ci0gICAgICAgICAgICBpZiAoIShyZXByZXNlbnRlZE9iamVj
dCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5ET01TdG9yYWdlT2JqZWN0KSkKLSAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBpZiAoIW1hdGNoT25UeXBlQWxvbmUgJiYg
cmVwcmVzZW50ZWRPYmplY3QuaG9zdCAhPT0gY29udGVudFZpZXdDb29raWUuaG9zdCkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBpZiAoIW1hdGNoT25UeXBlQWxv
bmUgJiYgcmVwcmVzZW50ZWRPYmplY3QuaXNMb2NhbFN0b3JhZ2UoKSAhPT0gY29udGVudFZpZXdD
b29raWUuaXNMb2NhbFN0b3JhZ2UpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuUmVzb3VyY2VTaWRl
YmFyUGFuZWwuQXBwbGljYXRpb25DYWNoZUNvbnRlbnRWaWV3Q29va2llVHlwZToKLSAgICAgICAg
ICAgIGlmICghKHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkFwcGxp
Y2F0aW9uQ2FjaGVGcmFtZSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAg
aWYgKCFtYXRjaE9uVHlwZUFsb25lICYmIHJlcHJlc2VudGVkT2JqZWN0LmZyYW1lLnVybCAhPT0g
Y29udGVudFZpZXdDb29raWUuZnJhbWUpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICAgICAgaWYgKCFtYXRjaE9uVHlwZUFsb25lICYmIHJlcHJlc2VudGVkT2JqZWN0Lm1hbmlmZXN0
Lm1hbmlmZXN0VVJMICE9PSBjb250ZW50Vmlld0Nvb2tpZS5tYW5pZmVzdCkKLSAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBkZWZhdWx0
OgotICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoIlVua25vd24gY29udGVudCB2aWV3IGNvb2tp
ZSB0eXBlLiIpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0KLSAgICAg
ICAgLy8gSWYgd2UgZ290IGhlcmUsIHRoZW4gdGhlIHRyZWUgZWxlbWVudCB3YXMgYSBtYXRjaCB0
byB0aGUgY29udGVudCB2aWV3IGNvb2tpZS4KLSAgICAgICAgLy8gU2VsZWN0aW5nIHRoZSB0cmVl
IGVsZW1lbnQgd2lsbCBjYXVzZSB0aGUgY29udGVudCB2aWV3IHRvIHNob3cuCi0gICAgICAgIHRy
ZWVFbGVtZW50LnJldmVhbEFuZFNlbGVjdCh0cnVlLCB0cnVlKTsKLQotICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICB9LAotCiAgICAgX2RvbVN0b3JhZ2VPYmplY3RXYXNBZGRlZDogZnVuY3Rpb24o
ZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgZG9tU3RvcmFnZSA9IGV2ZW50LmRhdGEuZG9tU3Rv
cmFnZTsKQEAgLTg0Miw4ICs2NDQsNiBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VTaWRlYmFyUGFu
ZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5fbG9jYWxTdG9yYWdlUm9vdFRyZWVF
bGVtZW50ID0gdGhpcy5fYWRkU3RvcmFnZUNoaWxkKHN0b3JhZ2VFbGVtZW50LCB0aGlzLl9sb2Nh
bFN0b3JhZ2VSb290VHJlZUVsZW1lbnQsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiTG9jYWwgU3Rv
cmFnZSIpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgdGhpcy5fc2Vzc2lvblN0b3JhZ2VS
b290VHJlZUVsZW1lbnQgPSB0aGlzLl9hZGRTdG9yYWdlQ2hpbGQoc3RvcmFnZUVsZW1lbnQsIHRo
aXMuX3Nlc3Npb25TdG9yYWdlUm9vdFRyZWVFbGVtZW50LCBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IlNlc3Npb24gU3RvcmFnZSIpKTsKLQotICAgICAgICB0aGlzLl9jaGVja1N0b3JhZ2VUcmVlRWxl
bWVudEFnYWluc3RQZW5kaW5nQ29udGVudFZpZXdDb29raWUoc3RvcmFnZUVsZW1lbnQpOwogICAg
IH0sCiAKICAgICBfZG9tU3RvcmFnZU9iamVjdFdhc0luc3BlY3RlZDogZnVuY3Rpb24oZXZlbnQp
CkBAIC04NjYsOCArNjY2LDYgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlU2lkZWJhclBhbmVsLnBy
b3RvdHlwZSA9IHsKIAogICAgICAgICB2YXIgZGF0YWJhc2VFbGVtZW50ID0gbmV3IFdlYkluc3Bl
Y3Rvci5EYXRhYmFzZVRyZWVFbGVtZW50KGRhdGFiYXNlKTsKICAgICAgICAgdGhpcy5fZGF0YWJh
c2VIb3N0VHJlZUVsZW1lbnRNYXBbZGF0YWJhc2UuaG9zdF0uYXBwZW5kQ2hpbGQoZGF0YWJhc2VF
bGVtZW50KTsKLQotICAgICAgICB0aGlzLl9jaGVja1N0b3JhZ2VUcmVlRWxlbWVudEFnYWluc3RQ
ZW5kaW5nQ29udGVudFZpZXdDb29raWUoZGF0YWJhc2VFbGVtZW50KTsKICAgICB9LAogCiAgICAg
X2RhdGFiYXNlV2FzSW5zcGVjdGVkOiBmdW5jdGlvbihldmVudCkKQEAgLTg4Myw4ICs2ODEsNiBA
QCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogCiAgICAg
ICAgIHZhciBjb29raWVFbGVtZW50ID0gbmV3IFdlYkluc3BlY3Rvci5Db29raWVTdG9yYWdlVHJl
ZUVsZW1lbnQoZXZlbnQuZGF0YS5jb29raWVTdG9yYWdlKTsKICAgICAgICAgdGhpcy5fY29va2ll
U3RvcmFnZVJvb3RUcmVlRWxlbWVudCA9IHRoaXMuX2FkZFN0b3JhZ2VDaGlsZChjb29raWVFbGVt
ZW50LCB0aGlzLl9jb29raWVTdG9yYWdlUm9vdFRyZWVFbGVtZW50LCBXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIkNvb2tpZXMiKSk7Ci0KLSAgICAgICAgdGhpcy5fY2hlY2tTdG9yYWdlVHJlZUVsZW1l
bnRBZ2FpbnN0UGVuZGluZ0NvbnRlbnRWaWV3Q29va2llKGNvb2tpZUVsZW1lbnQpOwogICAgIH0s
CiAKICAgICBfZnJhbWVNYW5pZmVzdEFkZGVkOiBmdW5jdGlvbihldmVudCkKQEAgLTkwMSw4ICs2
OTcsNiBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewog
CiAgICAgICAgIHZhciBmcmFtZUNhY2hlRWxlbWVudCA9IG5ldyBXZWJJbnNwZWN0b3IuQXBwbGlj
YXRpb25DYWNoZUZyYW1lVHJlZUVsZW1lbnQoZnJhbWVNYW5pZmVzdCk7CiAgICAgICAgIHRoaXMu
X2FwcGxpY2F0aW9uQ2FjaGVVUkxUcmVlRWxlbWVudE1hcFttYW5pZmVzdFVSTF0uYXBwZW5kQ2hp
bGQoZnJhbWVDYWNoZUVsZW1lbnQpOwotCi0gICAgICAgIHRoaXMuX2NoZWNrU3RvcmFnZVRyZWVF
bGVtZW50QWdhaW5zdFBlbmRpbmdDb250ZW50Vmlld0Nvb2tpZShmcmFtZUNhY2hlRWxlbWVudCk7
CiAgICAgfSwKIAogICAgIF9mcmFtZU1hbmlmZXN0UmVtb3ZlZDogZnVuY3Rpb24oZXZlbnQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9TY3JpcHRDb250
ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1NjcmlwdENv
bnRlbnRWaWV3LmpzCmluZGV4IGIxNTZkZDQyODZkZWQ4ZDhkZjE1OTAzN2MxMjE3ZjU0ZWYwOWRk
NzQuLjYzZDBmMDdiZDNiMmY0OThhYzNhZjFkYjQyNjY3YjViM2MxNzQ3YTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1NjcmlwdENvbnRlbnRWaWV3Lmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1NjcmlwdENvbnRlbnRW
aWV3LmpzCkBAIC0xMDcsNiArMTA3LDE4IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRDb250ZW50Vmll
dy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3RleHRFZGl0b3IuY2xvc2UoKTsKICAgICB9
LAogCisgICAgc2F2ZVRvQ29va2llOiBmdW5jdGlvbihjb29raWUpCisgICAgeworICAgICAgICBj
b29raWUudHlwZSA9IFdlYkluc3BlY3Rvci5Db250ZW50Vmlld0Nvb2tpZVR5cGUuUmVzb3VyY2U7
CisgICAgICAgIGNvb2tpZS51cmwgPSB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LnVybDsKKyAgICB9
LAorCisgICAgcmVzdG9yZUZyb21Db29raWU6IGZ1bmN0aW9uKGNvb2tpZSkKKyAgICB7CisgICAg
ICAgIGlmICgibGluZU51bWJlciIgaW4gY29va2llICYmICJjb2x1bW5OdW1iZXIiIGluIGNvb2tp
ZSkKKyAgICAgICAgICAgIHRoaXMucmV2ZWFsUG9zaXRpb24obmV3IFdlYkluc3BlY3Rvci5Tb3Vy
Y2VDb2RlUG9zaXRpb24oY29va2llLmxpbmVOdW1iZXIsIGNvb2tpZS5jb2x1bW5OdW1iZXIpKTsK
KyAgICB9LAorCiAgICAgZ2V0IHN1cHBvcnRzU2F2ZSgpCiAgICAgewogICAgICAgICByZXR1cm4g
dHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1N0
b3JhZ2VNYW5hZ2VyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvU3Rv
cmFnZU1hbmFnZXIuanMKaW5kZXggZGI4M2NlMmY0ODQxNzNkNzM5NTE2NjM3NGYzZmFiOTkzNjM4
MGJmOC4uMWZmZmU1YmIxN2QzMTYzZDgzMjhkNWU0MjAwMWM2YjRjM2NhYjQ3OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvU3RvcmFnZU1hbmFnZXIuanMK
KysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvU3RvcmFnZU1hbmFnZXIu
anMKQEAgLTE0Nyw2ICsxNDcsNTQgQEAgV2ViSW5zcGVjdG9yLlN0b3JhZ2VNYW5hZ2VyLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVj
dG9yLlN0b3JhZ2VNYW5hZ2VyLkV2ZW50LkRPTVN0b3JhZ2VPYmplY3RXYXNJbnNwZWN0ZWQsIHtk
b21TdG9yYWdlOiBkb21TdG9yYWdlfSk7CiAgICAgfSwKIAorICAgIG9iamVjdEZvckNvb2tpZTog
ZnVuY3Rpb24oY29va2llLCBtYXRjaE9uVHlwZUFsb25lKQorICAgIHsKKyAgICAgICAgY29uc29s
ZS5hc3NlcnQoY29va2llLnR5cGUpOworCisgICAgICAgIHZhciBmaW5kTWF0Y2hpbmdPYmplY3RJ
bkFycmF5ID0gZnVuY3Rpb24gKGFycmF5LCBtYXRjaGVzRnVuY3Rpb24pIHsKKyAgICAgICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyArK2kpCisgICAgICAgICAgICAgICAg
aWYgKG1hdGNoZXNGdW5jdGlvbi5jYWxsKG51bGwsIGFycmF5W2ldKSkKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGFycmF5W2ldOworCisgICAgICAgICAgICByZXR1cm4gKG1hdGNoT25UeXBl
QWxvbmUgJiYgYXJyYXkubGVuZ3RoKSA/IGFycmF5WzBdIDogbnVsbDsKKyAgICAgICAgfTsKKwor
ICAgICAgICBpZiAoY29va2llLnR5cGUgPT09IFdlYkluc3BlY3Rvci5Db250ZW50Vmlld0Nvb2tp
ZVR5cGUuQ29va2llU3RvcmFnZSkgeworICAgICAgICAgICAgaWYgKHRoaXMuX2Nvb2tpZVN0b3Jh
Z2VPYmplY3RzW2Nvb2tpZS5ob3N0XSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fY29v
a2llU3RvcmFnZU9iamVjdHNbY29va2llLmhvc3RdOworCisgICAgICAgICAgICBpZiAoIW1hdGNo
T25UeXBlQWxvbmUpCisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CisKKyAgICAgICAgICAg
IC8vIElmIHdlIGp1c3Qgd2FudCBhbnkgY29va2llIHN0b3JhZ2Ugb2JqZWN0LCB1c2UgdGhlIGZp
cnN0IG9uZS4KKyAgICAgICAgICAgIGZvciAodmFyIGtleSBpbiB0aGlzLl9jb29raWVTdG9yYWdl
T2JqZWN0cykKKyAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fY29va2llU3RvcmFnZU9iamVj
dHNba2V5XTsKKworICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0KKworICAgICAg
ICBpZiAoY29va2llLnR5cGUgPT09IFdlYkluc3BlY3Rvci5Db250ZW50Vmlld0Nvb2tpZVR5cGUu
RE9NU3RvcmFnZSkKKyAgICAgICAgICAgIHJldHVybiBmaW5kTWF0Y2hpbmdPYmplY3RJbkFycmF5
KHRoaXMuX2RvbVN0b3JhZ2VPYmplY3RzLCBmdW5jdGlvbihvYmplY3QpIHsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gb2JqZWN0Lmhvc3QgPT09IGNvb2tpZS5ob3N0ICYmIG9iamVjdC5pc0xvY2Fs
U3RvcmFnZSgpID09PSBjb29raWUuaXNMb2NhbFN0b3JhZ2U7CisgICAgICAgICAgICB9KTsKKwor
ICAgICAgICBpZiAoY29va2llLnR5cGUgPT09IFdlYkluc3BlY3Rvci5Db250ZW50Vmlld0Nvb2tp
ZVR5cGUuRGF0YWJhc2UpCisgICAgICAgICAgICByZXR1cm4gZmluZE1hdGNoaW5nT2JqZWN0SW5B
cnJheSh0aGlzLl9kYXRhYmFzZU9iamVjdHMsIGZ1bmN0aW9uKG9iamVjdCkgeworICAgICAgICAg
ICAgICAgIHJldHVybiBvYmplY3QuaG9zdCA9PT0gY29va2llLmhvc3QgJiYgb2JqZWN0Lm5hbWUg
PT09IGNvb2tpZS5uYW1lOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgLy8gRklYTUU6IFRo
aXMgaXNuJ3QgZWFzeSB0byBpbXBsZW1lbnQgbGlrZSB0aGUgb3RoZXJzIHNpbmNlIERhdGFiYXNl
VHJlZUVsZW1lbnQKKyAgICAgICAgLy8gY3JlYXRlcyBkYXRhYmFzZSB0YWJsZSBvYmplY3RzLCBh
bmQgdGhleSBhcmVuJ3Qga25vd24gYnkgU3RvcmFnZU1hbmFnZXIuIEp1c3QKKyAgICAgICAgLy8g
ZGlzcGxheSB0aGUgZGF0YWJhc2UgaW5zdGVhZC4KKyAgICAgICAgaWYgKGNvb2tpZS50eXBlID09
PSBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXdDb29raWVUeXBlLkRhdGFiYXNlVGFibGUpCisgICAg
ICAgICAgICByZXR1cm4gZmluZE1hdGNoaW5nT2JqZWN0SW5BcnJheSh0aGlzLl9kYXRhYmFzZU9i
amVjdHMsIGZ1bmN0aW9uKG9iamVjdCkgeworICAgICAgICAgICAgICAgIHJldHVybiBvYmplY3Qu
aG9zdCA9PT0gY29va2llLmhvc3QgJiYgb2JqZWN0LmRhdGFiYXNlID09PSBjb29raWUubmFtZTsK
KyAgICAgICAgICAgIH0pOworCisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCJVbmtub3duIGNvbnRl
bnQgdmlldyBjb29raWU6ICIsIGNvb2tpZSk7CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0s
CisKICAgICAvLyBQcml2YXRlCiAKICAgICBfbWFpblJlc291cmNlRGlkQ2hhbmdlOiBmdW5jdGlv
bihldmVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1RpbWVsaW5lTWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1RpbWVsaW5lTWFuYWdlci5qcwppbmRleCBlNDNmMTkzZWFjMzg4ZTQzYmUxMTdkYzY2ZTk5MmRj
NmRjYmY5YzMwLi5hMWFkNDZlNDhiMGE1ZjU3MThlOTJlMmEwYjBkNDEzZDgyNWVkNjhiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UaW1lbGluZU1hbmFn
ZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGltZWxpbmVN
YW5hZ2VyLmpzCkBAIC0zNiw2ICszNiw3IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZU1hbmFnZXIg
PSBmdW5jdGlvbigpCiAgICAgdGhpcy5fdHlwZVJlY29yZHMgPSB7fTsKICAgICB0aGlzLl9sb2Fk
RXZlbnRUaW1lID0gTmFOOwogICAgIHRoaXMuX2V2ZW50TWFya2VycyA9IFtdOworICAgIHRoaXMu
X3RpbWVsaW5lc09iamVjdCA9IG5ldyBXZWJJbnNwZWN0b3IuVGltZWxpbmVzT2JqZWN0OwogfTsK
IAogV2ViSW5zcGVjdG9yLlRpbWVsaW5lTWFuYWdlci5FdmVudCA9IHsKQEAgLTc1LDYgKzc2LDEx
IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZU1hbmFnZXIucHJvdG90eXBlID0gewogICAgICAgICBy
ZXR1cm4gdGhpcy5fcmVjb3JkczsKICAgICB9LAogCisgICAgZ2V0IHRpbWVsaW5lcygpCisgICAg
eworICAgICAgICByZXR1cm4gdGhpcy5fdGltZWxpbmVzT2JqZWN0OworICAgIH0sCisKICAgICBy
ZWNvcmRzV2l0aFR5cGU6IGZ1bmN0aW9uKHR5cGUpCiAgICAgewogICAgICAgICByZXR1cm4gdGhp
cy5fdHlwZVJlY29yZHNbdHlwZV0gfHwgW107CkBAIC0yOTMsNiArMjk5LDExIEBAIFdlYkluc3Bl
Y3Rvci5UaW1lbGluZU1hbmFnZXIucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5fbG9h
ZEV2ZW50VGltZSA9IHRpbWVzdGFtcDsKICAgICB9LAogCisgICAgb2JqZWN0Rm9yQ29va2llOiBm
dW5jdGlvbihjb29raWUpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy50aW1lbGluZXM7Cisg
ICAgfSwKKwogICAgIC8vIFByaXZhdGUKIAogICAgIF9jbGVhcjogZnVuY3Rpb24oKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGltZWxpbmVzQ29udGVu
dFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UaW1lbGluZXND
b250ZW50Vmlldy5qcwppbmRleCA3OTA1YTQ4OTJjNDYxZDM1YjUzM2Q4M2FkNWQ3ODYxMjI0YzY5
MTk5Li4xOTg0YWUzNzFmODUzODQ4ZmMwMDQwYWRjMzQ2NTFlODJlZDA2ZDE2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UaW1lbGluZXNDb250ZW50Vmll
dy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UaW1lbGluZXND
b250ZW50Vmlldy5qcwpAQCAtMzM1LDYgKzMzNSwxNyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVz
Q29udGVudFZpZXcucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5fY3VycmVudERhdGFH
cmlkLmhpZGRlbigpOwogICAgIH0sCiAKKyAgICBzYXZlVG9Db29raWU6IGZ1bmN0aW9uKGNvb2tp
ZSkKKyAgICB7CisgICAgICAgIGNvb2tpZS50eXBlID0gV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3
Q29va2llVHlwZS5UaW1lbGluZXM7CisgICAgICAgIGNvb2tpZS50aW1lbGluZSA9IHRoaXMuX2N1
cnJlbnRSZWNvcmRUeXBlU2V0dGluZy52YWx1ZTsKKyAgICB9LAorCisgICAgcmVzdG9yZUZyb21D
b29raWU6IGZ1bmN0aW9uKGNvb2tpZSkKKyAgICB7CisgICAgICAgIHRoaXMuc2hvd1RpbWVsaW5l
Rm9yUmVjb3JkVHlwZShjb29raWUudGltZWxpbmUpOworICAgIH0sCisKICAgICB0aW1lbGluZU92
ZXJ2aWV3UmVjb3Jkc1dpdGhUeXBlOiBmdW5jdGlvbih0eXBlKQogICAgIHsKICAgICAgICAgcmV0
dXJuIHRoaXMuX2ZpbHRlclJlY29yZHNXaXRoVHlwZShXZWJJbnNwZWN0b3IudGltZWxpbmVNYW5h
Z2VyLnJlY29yZHNXaXRoVHlwZSh0eXBlKSwgdHlwZSk7CkBAIC00NDcsNyArNDU4LDcgQEAgV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lc0NvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYg
KGlzU2Nyb2xsZWRUb0xhc3RSb3cpCiAgICAgICAgICAgICB0aGlzLl9jdXJyZW50RGF0YUdyaWQu
c2Nyb2xsVG9MYXN0Um93KCk7CiAgICAgfSwKLSAgICAKKwogICAgIF91cGRhdGVDYWxjdWxhdG9y
Qm91bmRzRm9yUGVuZGluZ1JlY29yZHNBbmRFdmVudE1hcmtlcnM6IGZ1bmN0aW9uKCkKICAgICB7
CiAgICAgICAgIHZhciBjdXJyZW50RGF0YUdyaWQgPSB0aGlzLl9jdXJyZW50RGF0YUdyaWQ7CkBA
IC02ODUsNyArNjk2LDcgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lc0NvbnRlbnRWaWV3LnByb3Rv
dHlwZSA9IHsKICAgICAgICAgfSk7CiAKICAgICAgICAgc2NvcGVCYXJJdGVtcy51bnNoaWZ0KG5l
dyBXZWJJbnNwZWN0b3IuU2NvcGVCYXJJdGVtKHByZWZpeCArICJ0eXBlLWFsbCIsIFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiQWxsIiksIHRydWUpKTsKLSAgICAgICAgCisKICAgICAgICAgcmV0dXJu
IG5ldyBXZWJJbnNwZWN0b3IuU2NvcGVCYXIocHJlZml4ICsgInNjb3BlLWJhciIsIHNjb3BlQmFy
SXRlbXMsIHNjb3BlQmFySXRlbXNbMF0pOwogICAgIH0sCiAKQEAgLTcwNywxNCArNzE4LDE0IEBA
IFdlYkluc3BlY3Rvci5UaW1lbGluZXNDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAg
IHZhciBub2RlcyA9IHJlY29yZHMubWFwKGZ1bmN0aW9uKHJlY29yZCkgewogICAgICAgICAgICAg
cmV0dXJuIHRoaXMuX2NyZWF0ZURhdGFHcmlkTm9kZUZvclJlY29yZChyZWNvcmQpOwogICAgICAg
ICB9LCB0aGlzKTsKLSAgICAgICAgCisKICAgICAgICAgZGF0YUdyaWQucmVtb3ZlQ2hpbGRyZW4o
KTsKICAgICAgICAgbm9kZXMuc29ydCh0aGlzLl9zb3J0Q29tcGFyYXRvci5iaW5kKHRoaXMpKS5m
b3JFYWNoKGZ1bmN0aW9uKG5vZGUpIHsKICAgICAgICAgICAgIGRhdGFHcmlkLmFwcGVuZENoaWxk
KG5vZGUpOwogICAgICAgICB9KTsKIAogICAgICAgICBkZWxldGUgdGhpcy5fcGVuZGluZ1JlZnJl
c2hHcmlkTm9kZXNbcmVjb3JkVHlwZV07Ci0gICAgICAgIAorCiAgICAgICAgIHRoaXMuX3VwZGF0
ZU9mZnNjcmVlblJvd3MoKTsKICAgICB9LAogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213935</attachid>
            <date>2013-10-10 15:36:20 -0700</date>
            <delta_ts>2013-10-10 16:19:26 -0700</delta_ts>
            <desc>v2.1 (style nits)</desc>
            <filename>bug-122546-20131010233622.patch</filename>
            <type>text/plain</type>
            <size>65784</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU2NzkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCA3
ZGRiYTNiODFhY2UwMDc0MDAyY2JmNDFmYWM5MGE1ODE3YmE1ZWI3Li4wNGQ3YWFiYzQzNTdmMTM0
YWNkZGMyY2Q5YzVhOThlZjQwMjhmYzBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMTMgQEAKKzIwMTMtMTAtMTAgIEJyaWFuIEouIEJ1cmcgIDxidXJnQGNzLndhc2hpbmd0
b24uZWR1PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGNvbnRlbnQgdmlld3MgYW5kIG1hbmFn
ZXJzIHNob3VsZCBzYXZlL3Jlc3RvcmUgdmlldyBzdGF0ZS4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMjU0NgorCisgICAgICAgIFRvIHJlc3RvcmUg
dGhlIHNhbWUgY29udGVudCB2aWV3IGFuZCBzaWRlYmFycyB3aGVuIHJlLW9wZW5pbmcgdGhlCisg
ICAgICAgIGluc3BlY3RvciwgYSBjb29raWUgaXMgc2F2ZWQgd2hlbmV2ZXIgYSBuZXcgY29udGVu
dCB2aWV3IGlzIHNob3duCisgICAgICAgIGluIHRoZSBtYWluIGNvbnRlbnQgYnJvd3Nlci4gUHJl
dmlvdXNseSwgdGhpcyBjb29raWUgd2FzIGNyZWF0ZWQKKyAgICAgICAgYW5kIHJlc3RvcmVkIHVz
aW5nIG5hdmlnYXRpb24gc2lkZWJhci1zcGVjaWZpYyBsb2dpYy4gVGhpcyBoYXMgdHdvCisgICAg
ICAgIG1ham9yIGZsYXdzOiBub24tZGVmYXVsdCBzaWRlYmFycyBmb3IgYSByZXByZXNlbnRlZCBv
YmplY3QgYXJlIG5vdAorICAgICAgICByZXN0b3JlZCBjb3JyZWN0bHk7IGFuZCBpdCBjZW50cmFs
aXplcyBzdG9yYWdlIG9mIHZpZXctc3BlY2lmaWMKKyAgICAgICAgc3RhdGUgc3VjaCBhcyBzdWJ2
aWV3IHNlbGVjdGlvbnMuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIENvbnRlbnRWaWV3IG1l
dGhvZHMgZm9yIHNhdmluZyBhIGtleSBmb3IgdGhlCisgICAgICAgIHZpZXcncyByZXByZXNlbnRl
ZCBvYmplY3QsIGFuZCBzYXZpbmcvcmVzdG9yaW5nIGFueSB2aWV3LXNwZWNpZmljCisgICAgICAg
IHN0YXRlIGFzIHRoZSB2aWV3IGlzIHNob3duLiBUaGUgJ3R5cGUnIGZpZWxkIG9mIHRoZSBjb29r
aWUKKyAgICAgICAgc3BlY2lmaWVzIHRoZSBtYW5hZ2VyIHdoaWNoIGRlc2VyaWFsaXplcyB0aGUg
Y29va2llIGludG8gYQorICAgICAgICByZXByZXNlbnRlZCBvYmplY3QuCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0FwcGxp
Y2F0aW9uQ2FjaGVGcmFtZUNvbnRlbnRWaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkFw
cGxpY2F0aW9uQ2FjaGVGcmFtZUNvbnRlbnRWaWV3KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5B
cHBsaWNhdGlvbkNhY2hlRnJhbWVDb250ZW50Vmlldy5wcm90b3R5cGUuc2F2ZVRvQ29va2llKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlRnJhbWVDb250ZW50Vmlldy5w
cm90b3R5cGUuX21heWJlVXBkYXRlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5BcHBsaWNhdGlv
bkNhY2hlRnJhbWVDb250ZW50Vmlldy5wcm90b3R5cGUuX3VwZGF0ZVN0YXR1cyk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZUZyYW1lQ29udGVudFZpZXcucHJvdG90eXBl
LnVwZGF0ZVN0YXR1cyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZUZy
YW1lQ29udGVudFZpZXcucHJvdG90eXBlLl91cGRhdGVDYWxsYmFjayk6CisgICAgICAgICogVXNl
ckludGVyZmFjZS9BcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5qczoKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5BcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5wcm90b3R5cGUubmV0d29ya1N0YXRlVXBkYXRl
ZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZU1hbmFnZXIucHJvdG90
eXBlLmFwcGxpY2F0aW9uQ2FjaGVTdGF0dXNVcGRhdGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5BcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5wcm90b3R5cGUuKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5BcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5wcm90b3R5cGUucmVxdWVzdEFwcGxpY2F0aW9u
Q2FjaGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLnBy
b3RvdHlwZS5vYmplY3RGb3JDb29raWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkFwcGxpY2F0
aW9uQ2FjaGVNYW5hZ2VyLnByb3RvdHlwZS5fbWFuaWZlc3RGb3JGcmFtZUxvYWRlZCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZU1hbmFnZXIucHJvdG90eXBlLl9mcmFt
ZXNXaXRoTWFuaWZlc3RzTG9hZGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5BcHBsaWNhdGlv
bkNhY2hlTWFuYWdlci5wcm90b3R5cGUuX2ZyYW1lTWFuaWZlc3RVcGRhdGVkKToKKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL0JhY2tGb3J3YXJkRW50cnkuanM6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuQmFja0ZvcndhcmRFbnRyeSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQmFja0ZvcndhcmRF
bnRyeS5wcm90b3R5cGUuX3Jlc3RvcmVGcm9tQ29va2llKToKKyAgICAgICAgKiBVc2VySW50ZXJm
YWNlL0NvbnRlbnRCcm93c2VyLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnRlbnRCcm93
c2VyLnByb3RvdHlwZS5zaG93Q29udGVudFZpZXdGb3JSZXByZXNlbnRlZE9iamVjdCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuQ29udGVudEJyb3dzZXIucHJvdG90eXBlLnNob3dDb250ZW50Vmll
dyk6CisgICAgICAgICogVXNlckludGVyZmFjZS9Db250ZW50Vmlldy5qczoKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5Db250ZW50Vmlldy5wcm90b3R5cGUuc2F2ZVRvQ29va2llKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5wcm90b3R5cGUucmVzdG9yZUZyb21Db29raWUpOgor
ICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udGVudFZpZXdDb250YWluZXIuanM6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuQ29udGVudFZpZXdDb250YWluZXIucHJvdG90eXBlLnNob3dDb250ZW50
Vmlldyk6CisgICAgICAgICogVXNlckludGVyZmFjZS9Db29raWVTdG9yYWdlQ29udGVudFZpZXcu
anM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29va2llU3RvcmFnZUNvbnRlbnRWaWV3LnByb3Rv
dHlwZS51cGRhdGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvb2tpZVN0b3JhZ2VDb250ZW50
Vmlldy5wcm90b3R5cGUuc2F2ZVRvQ29va2llKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db29r
aWVTdG9yYWdlQ29udGVudFZpZXcucHJvdG90eXBlLl9yZWJ1aWxkVGFibGUpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkNvb2tpZVN0b3JhZ2VDb250ZW50Vmlldy5wcm90b3R5cGUuX2ZpbHRlckNv
b2tpZXMpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvRE9NU3RvcmFnZUNvbnRlbnRWaWV3Lmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VDb250ZW50Vmlldy5wcm90b3R5cGUu
c2F2ZVRvQ29va2llKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0RhdGFiYXNlQ29udGVudFZp
ZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGF0YWJhc2VDb250ZW50Vmlldy5wcm90b3R5
cGUuc2F2ZVRvQ29va2llKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRhYmFzZUNvbnRlbnRW
aWV3LnByb3RvdHlwZS5fbWVzc2FnZXNDbGlja2VkKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNl
L0RhdGFiYXNlVGFibGVDb250ZW50Vmlldy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRh
YmFzZVRhYmxlQ29udGVudFZpZXcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRhdGFiYXNlVGFi
bGVDb250ZW50Vmlldy5wcm90b3R5cGUuc2F2ZVRvQ29va2llKToKKyAgICAgICAgKiBVc2VySW50
ZXJmYWNlL0ZyYW1lQ29udGVudFZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRnJhbWVD
b250ZW50Vmlldy5wcm90b3R5cGUuc2F2ZVRvQ29va2llKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5GcmFtZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5yZXN0b3JlRnJvbUNvb2tpZSk6CisgICAgICAg
ICogVXNlckludGVyZmFjZS9GcmFtZVJlc291cmNlTWFuYWdlci5qczoKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5GcmFtZVJlc291cmNlTWFuYWdlci5wcm90b3R5cGUub2JqZWN0Rm9yQ29va2llKToK
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0luc3RydW1lbnRTaWRlYmFyUGFuZWwuanM6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuSW5zdHJ1bWVudFNpZGViYXJQYW5lbCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuSW5zdHJ1bWVudFNpZGViYXJQYW5lbC5wcm90b3R5cGUuc2hvd1RpbWVsaW5lKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5JbnN0cnVtZW50U2lkZWJhclBhbmVsLnByb3RvdHlwZS5z
aG93bik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSW5zdHJ1bWVudFNpZGViYXJQYW5lbC5wcm90
b3R5cGUuX3RpbWVsaW5lc1RyZWVFbGVtZW50U2VsZWN0ZWQpOgorICAgICAgICAqIFVzZXJJbnRl
cmZhY2UvTWFpbi5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5sb2FkZWQpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLmNvbnRlbnRMb2FkZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLm9wZW5V
UkwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLl91cGRhdGVDdXJyZW50Q29udGVudFZpZXdDb29r
aWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLl9zaG93Q29udGVudFZpZXdGb3JDb29raWUubGFz
dEF0dGVtcHRUb1Jlc3RvcmVGcm9tQ29va2llKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5fc2hv
d0NvbnRlbnRWaWV3Rm9yQ29va2llKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5fcmVzb2x2ZUFu
ZFNob3dQZW5kaW5nQ29udGVudFZpZXdDb29raWUuZGVsYXllZFdvcmspOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLl9yZXNvbHZlQW5kU2hvd1BlbmRpbmdDb250ZW50Vmlld0Nvb2tpZSk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuZWxlbWVudERyYWdTdGFydCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuZWxlbWVudERyYWdFbmQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLmNyZWF0ZU1lc3NhZ2VU
ZXh0Vmlldyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IubGlua2lmeVN0cmluZ0FzRnJhZ21lbnQp
OgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTmF2aWdhdGlvblNpZGViYXJQYW5lbC5qczoKKyAg
ICAgICAgKiBVc2VySW50ZXJmYWNlL1Jlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3LmpzOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3LnByb3RvdHlwZS5z
YXZlVG9Db29raWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlQ2x1c3RlckNvbnRl
bnRWaWV3LnByb3RvdHlwZS5yZXN0b3JlRnJvbUNvb2tpZSk6CisgICAgICAgICogVXNlckludGVy
ZmFjZS9SZXNvdXJjZVNpZGViYXJQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNv
dXJjZVNpZGViYXJQYW5lbC5wcm90b3R5cGUuc2hvd1NvdXJjZUNvZGUpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlJlc291cmNlU2lkZWJhclBhbmVsLnByb3RvdHlwZS5fbWFpbkZyYW1lRGlkQ2hh
bmdlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZVNpZGViYXJQYW5lbC5wcm90b3R5
cGUuX2RvbVN0b3JhZ2VPYmplY3RXYXNBZGRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVz
b3VyY2VTaWRlYmFyUGFuZWwucHJvdG90eXBlLl9kYXRhYmFzZVdhc0FkZGVkKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5SZXNvdXJjZVNpZGViYXJQYW5lbC5wcm90b3R5cGUuX2Nvb2tpZVN0b3Jh
Z2VPYmplY3RXYXNBZGRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VTaWRlYmFy
UGFuZWwucHJvdG90eXBlLl9mcmFtZU1hbmlmZXN0QWRkZWQpOgorICAgICAgICAqIFVzZXJJbnRl
cmZhY2UvU2NyaXB0Q29udGVudFZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0
Q29udGVudFZpZXcucHJvdG90eXBlLnNhdmVUb0Nvb2tpZSk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuU2NyaXB0Q29udGVudFZpZXcucHJvdG90eXBlLnJlc3RvcmVGcm9tQ29va2llKToKKyAgICAg
ICAgKiBVc2VySW50ZXJmYWNlL1N0b3JhZ2VNYW5hZ2VyLmpzOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlN0b3JhZ2VNYW5hZ2VyLnByb3RvdHlwZS5maW5kTWF0Y2hpbmdPYmplY3RJbkFycmF5KToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5TdG9yYWdlTWFuYWdlci5wcm90b3R5cGUub2JqZWN0Rm9y
Q29va2llKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1RpbWVsaW5lTWFuYWdlci5qczoKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZU1hbmFnZXIpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlRpbWVsaW5lTWFuYWdlci5wcm90b3R5cGUuZ2V0IHRpbWVsaW5lcyk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuVGltZWxpbmVNYW5hZ2VyLnByb3RvdHlwZS5vYmplY3RGb3JDb29raWUpOgor
ICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVGltZWxpbmVzQ29udGVudFZpZXcuanM6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuVGltZWxpbmVzQ29udGVudFZpZXcucHJvdG90eXBlLnNhdmVUb0Nvb2tp
ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVzQ29udGVudFZpZXcucHJvdG90eXBl
LnJlc3RvcmVGcm9tQ29va2llKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZXNDb250
ZW50Vmlldy5wcm90b3R5cGUuX21ha2VDb2x1bW5TY29wZUJhcik6CisKIDIwMTMtMTAtMDIgIEJy
aWFuIEouIEJ1cmcgIDxidXJnQGNzLndhc2hpbmd0b24uZWR1PgogCiAgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IHNhdmUgYW5kIHJlc3RvcmUgc291cmNlIHBvc2l0aW9ucyBpbiBiYWNrL2ZvcndhcmQg
aGlzdG9yeQpAQCAtMTUxLDcgKzI2MSw3IEBACiAgICAgICAgIENTUyBwc2V1ZG8tY2xhc3NlcyB3
b3JraW5nIHdpdGggRE9NIG9yZGVyLCB0aGUgYmFja2dyb3VuZCBjb2xvcnMgb2Ygbm9kZXMgaW4g
dGhlIExheWVyVHJlZURhdGFHcmlkCiAgICAgICAgIGNhbiBiZSBpbmNvcnJlY3QgZGVwZW5kaW5n
IG9uIHRoZSBzb3J0IG9yZGVyIGFuZCB0aGUgbnVtYmVyIG9mIG5vZGVzLiBUbyBmaXggdGhpcywg
d2Ugbm93IG1hbnVhbGx5CiAgICAgICAgIHNldCAiZXZlbiIgYW5kICJvZGQiIENTUyBjbGFzc2Vz
IG9uIHRob3NlIG5vZGVzIHdoZW4gdGhleSdyZSBzb3J0ZWQgc3VjaCB0aGF0IHdlIGhhdmUgYSBj
aGFuY2UKLSAgICAgICAgdG8gc3R5bGUgdGhlbSBhcyBpbnRlbmRlZC4gCisgICAgICAgIHRvIHN0
eWxlIHRoZW0gYXMgaW50ZW5kZWQuCiAKICAgICAgICAgKiBVc2VySW50ZXJmYWNlL0xheWVyVHJl
ZURhdGFHcmlkLmpzOgogICAgICAgICAoV2ViSW5zcGVjdG9yLkxheWVyVHJlZURhdGFHcmlkLnBy
b3RvdHlwZS5fdXBkYXRlQ2hpbGRyZW4pOgpAQCAtMTcwMiw3ICsxODEyLDcgQEAKIAogMjAxMy0w
Ny0yMiAgRGllZ28gUGlubyBHYXJjaWEgIDxkcGlub0BpZ2FsaWEuY29tPgogCi0gICAgICAgIFdl
YiBJbnNwZWN0b3I6IFdoZW4gcmlnaHQtY2xpY2tpbmcgb24gYSBEYXRhR3JpZCBjb2x1bW4sIHNo
b3cgZWRpdGluZyAKKyAgICAgICAgV2ViIEluc3BlY3RvcjogV2hlbiByaWdodC1jbGlja2luZyBv
biBhIERhdGFHcmlkIGNvbHVtbiwgc2hvdyBlZGl0aW5nCiAgICAgICAgIG1lbnUgb3B0aW9uIGFz
ICJFZGl0IDxjb2x1bW5OYW1lPiIgaW5zdGVhZCBvZiBqdXN0ICJFZGl0IgogICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE4OTcwCiAKQEAgLTE5NzgsNyAr
MjA4OCw3IEBACiAKIDIwMTMtMDYtMjcgIEphbWVzIENyYWlnICA8amFtZXNAY29va2llY3Jvb2su
Y29tPgogCi0gICAgICAgIFdlYiBJbnNwZWN0b3I6IEFYOiBBZGQgY29udGFpbmVyIEFSSUEgcm9s
ZXMgKHRvb2xiYXIsIG1haW4sIGxhYmVsZWQgcmVnaW9ucywgZXRjLikgCisgICAgICAgIFdlYiBJ
bnNwZWN0b3I6IEFYOiBBZGQgY29udGFpbmVyIEFSSUEgcm9sZXMgKHRvb2xiYXIsIG1haW4sIGxh
YmVsZWQgcmVnaW9ucywgZXRjLikKICAgICAgICAgc28gdGhlIGxheW91dCBpcyBtb3JlIGRpc2Nv
dmVyYWJsZSB0byBzY3JlZW4gcmVhZGVyIHVzZXJzCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTgxMDQKIApAQCAtMjAwOSw3ICsyMTE5LDcgQEAKIAog
ICAgICAgICBNYWluIGNvbnNvbGUgbG9nIGFyZWEgKGRpdi5jb25zb2xlLW1lc3NhZ2VzKSBpcyBu
b3cgYW4gQVJJQSBsaXZlIHJlZ2lvbiAocm9sZT0ibG9nIikKICAgICAgICAgc28gc2NyZWVuIHJl
YWRlcnMgc3BlYWsgcGxhaW4gdGV4dCB1cGRhdGVzLgotICAgICAgICAKKwogICAgICAgICBBbHNv
IGFkZGVkIGNvbnRleHR1YWwgbGFiZWxzIChlLmcuIGlucHV0L291dHB1dCkgYnV0IHNwZWVjaCBv
dXRwdXQgdmVyaWZpY2F0aW9uIG9mCiAgICAgICAgIHRob3NlIGlzIGN1cnJlbnRseSBibG9ja2Vk
IGJ5IGh0dHA6Ly93ZWJraXQub3JnL2IvMTE4MDk2CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0FwcGxpY2F0aW9uQ2FjaGVGcmFtZUNvbnRlbnRWaWV3
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQXBwbGljYXRpb25DYWNo
ZUZyYW1lQ29udGVudFZpZXcuanMKaW5kZXggZjE3MmIxYjI0Y2NhY2JiMmIxNWViOTBiYzE1MjU3
MTAwNmFiOTU0MC4uZDJkMGU2YzkxZDg3ZDZmNjM0YmVkODY4ZjFlNjgzM2Q5MTViMjI3ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQXBwbGljYXRpb25D
YWNoZUZyYW1lQ29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvQXBwbGljYXRpb25DYWNoZUZyYW1lQ29udGVudFZpZXcuanMKQEAgLTQ1LDcgKzQ1
LDcgQEAgV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVGcmFtZUNvbnRlbnRWaWV3ID0gZnVu
Y3Rpb24ocmVwcmVzZW50ZWRPYmplY3QpCiAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRo
aXMuX2VtcHR5Vmlldyk7CiAKICAgICB0aGlzLl9tYXJrRGlydHkoKTsKLSAgICAKKwogICAgIHZh
ciBzdGF0dXMgPSByZXByZXNlbnRlZE9iamVjdC5zdGF0dXM7CiAgICAgdGhpcy51cGRhdGVTdGF0
dXMoc3RhdHVzKTsKIApAQCAtNzMsNiArNzMsMTMgQEAgV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9u
Q2FjaGVGcmFtZUNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuZGF0
YUdyaWQudXBkYXRlTGF5b3V0KCk7CiAgICAgfSwKIAorICAgIHNhdmVUb0Nvb2tpZTogZnVuY3Rp
b24oY29va2llKQorICAgIHsKKyAgICAgICAgY29va2llLnR5cGUgPSBXZWJJbnNwZWN0b3IuQ29u
dGVudFZpZXdDb29raWVUeXBlLkFwcGxpY2F0aW9uQ2FjaGU7CisgICAgICAgIGNvb2tpZS5mcmFt
ZSA9IHRoaXMucmVwcmVzZW50ZWRPYmplY3QuZnJhbWUudXJsOworICAgICAgICBjb29raWUubWFu
aWZlc3QgPSB0aGlzLnJlcHJlc2VudGVkT2JqZWN0Lm1hbmlmZXN0Lm1hbmlmZXN0VVJMOworICAg
IH0sCisKICAgICBnZXQgc2Nyb2xsYWJsZUVsZW1lbnRzKCkKICAgICB7CiAgICAgICAgIGlmICgh
dGhpcy5fZGF0YUdyaWQpCkBAIC04NCw3ICs5MSw3IEBAIFdlYkluc3BlY3Rvci5BcHBsaWNhdGlv
bkNhY2hlRnJhbWVDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgewogICAgICAgICBpZiAo
IXRoaXMudmlzaWJsZSB8fCAhdGhpcy5fdmlld0RpcnR5KQogICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICAKKwogICAgICAgICB0aGlzLl91cGRhdGUoKTsKICAgICAgICAgdGhpcy5fdmlld0Rp
cnR5ID0gZmFsc2U7CiAgICAgfSwKQEAgLTk5LDkgKzEwNiw5IEBAIFdlYkluc3BlY3Rvci5BcHBs
aWNhdGlvbkNhY2hlRnJhbWVDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBm
cmFtZU1hbmlmZXN0ID0gZXZlbnQuZGF0YS5mcmFtZU1hbmlmZXN0OwogICAgICAgICBpZiAoZnJh
bWVNYW5pZmVzdCAhPT0gdGhpcy5yZXByZXNlbnRlZE9iamVjdCkKICAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgCisKICAgICAgICAgY29uc29sZS5hc3NlcnQoZnJhbWVNYW5pZmVzdCBpbnN0
YW5jZW9mIFdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlRnJhbWUpOwotICAgICAgICAKKwog
ICAgICAgICB0aGlzLnVwZGF0ZVN0YXR1cyhmcmFtZU1hbmlmZXN0LnN0YXR1cyk7CiAgICAgfSwK
IApAQCAtMTEyLDcgKzExOSw3IEBAIFdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlRnJhbWVD
b250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgewogICAgICAgICB2YXIgb2xkU3RhdHVzID0g
dGhpcy5fc3RhdHVzOwogICAgICAgICB0aGlzLl9zdGF0dXMgPSBzdGF0dXM7Ci0gICAgICAgIAor
CiAgICAgICAgIGlmICh0aGlzLnZpc2libGUgJiYgdGhpcy5fc3RhdHVzID09PSBXZWJJbnNwZWN0
b3IuQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuU3RhdHVzLklkbGUgJiYgKG9sZFN0YXR1cyA9PT0g
V2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLlN0YXR1cy5VcGRhdGVSZWFkeSB8
fCAhdGhpcy5fcmVzb3VyY2VzKSkKICAgICAgICAgICAgIHRoaXMuX21hcmtEaXJ0eSgpOwogCkBA
IC0xMzUsOSArMTQyLDkgQEAgV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVGcmFtZUNvbnRl
bnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl91cGRhdGVUaW1l
OwogICAgICAgICAgICAgZGVsZXRlIHRoaXMuX3NpemU7CiAgICAgICAgICAgICBkZWxldGUgdGhp
cy5fcmVzb3VyY2VzOwotICAgICAgICAgICAgCisKICAgICAgICAgICAgIHRoaXMuX2VtcHR5Vmll
dy5jbGFzc0xpc3QucmVtb3ZlKCJoaWRkZW4iKTsKLSAgICAgICAgICAgIAorCiAgICAgICAgICAg
ICBpZiAodGhpcy5fZGF0YUdyaWQpCiAgICAgICAgICAgICAgICAgdGhpcy5fZGF0YUdyaWQuZWxl
bWVudC5jbGFzc0xpc3QuYWRkKCJoaWRkZW4iKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTE1
Niw3ICsxNjMsNyBAQCBXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZUZyYW1lQ29udGVudFZp
ZXcucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9wb3B1bGF0ZURhdGFHcmlkKCk7CiAgICAg
ICAgIHRoaXMuX2RhdGFHcmlkLmF1dG9TaXplQ29sdW1ucygyMCwgODApOwogICAgICAgICB0aGlz
Ll9kYXRhR3JpZC5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoImhpZGRlbiIpOwotICAgICAgICAK
KwogICAgICAgICB0aGlzLl9lbXB0eVZpZXcuY2xhc3NMaXN0LmFkZCgiaGlkZGVuIik7CiAgICAg
fSwKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQXBw
bGljYXRpb25DYWNoZU1hbmFnZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9BcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5qcwppbmRleCA4NTQxMDA2MDY0ODc4ZjFiODFk
YzRlMmY5NGZkODRhMjkzNmE3MGJjLi5jNTU1ODZjN2M4NzQxOWQ2NGQyYjU1N2QxMzk4YzVkZjVl
ZmViOWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9B
cHBsaWNhdGlvbkNhY2hlTWFuYWdlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9BcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5qcwpAQCAtNjksNyArNjksNyBAQCBX
ZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZU1hbmFnZXIucHJvdG90eXBlID0gewogICAgIG5l
dHdvcmtTdGF0ZVVwZGF0ZWQ6IGZ1bmN0aW9uKGlzTm93T25saW5lKQogICAgIHsKICAgICAgICAg
dGhpcy5fb25saW5lID0gaXNOb3dPbmxpbmU7Ci0gICAgICAgIAorCiAgICAgICAgIHRoaXMuZGlz
cGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlTWFuYWdl
ci5FdmVudC5OZXR3b3JrU3RhdGVVcGRhdGVkLCB7b25saW5lOiB0aGlzLl9vbmxpbmV9KTsKICAg
ICB9LAogCkBAIC04Myw3ICs4Myw3IEBAIFdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlTWFu
YWdlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBmcmFtZSA9IFdlYkluc3BlY3Rvci5mcmFt
ZVJlc291cmNlTWFuYWdlci5mcmFtZUZvcklkZW50aWZpZXIoZnJhbWVJZCk7CiAgICAgICAgIGlm
ICghZnJhbWUpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIAorCiAgICAgICAgIHRoaXMu
X2ZyYW1lTWFuaWZlc3RVcGRhdGVkKGZyYW1lLCBtYW5pZmVzdFVSTCwgc3RhdHVzKTsKICAgICB9
LAogCkBAIC05NSwxMyArOTUsMjYgQEAgV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVNYW5h
Z2VyLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICBjYWxsYmFjayhudWxsKTsKICAgICAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAKKwogICAgICAg
ICAgICAgY2FsbGJhY2soYXBwbGljYXRpb25DYWNoZSk7CiAgICAgICAgIH0KLSAgICAgICAgCisK
ICAgICAgICAgQXBwbGljYXRpb25DYWNoZUFnZW50LmdldEFwcGxpY2F0aW9uQ2FjaGVGb3JGcmFt
ZShmcmFtZS5pZCwgY2FsbGJhY2tXcmFwcGVyKTsKICAgICB9LAogCisgICAgb2JqZWN0Rm9yQ29v
a2llOiBmdW5jdGlvbihjb29raWUsIG1hdGNoT25UeXBlQWxvbmUpCisgICAgeworICAgICAgICBj
b25zb2xlLmFzc2VydChjb29raWUudHlwZSAmJiBjb29raWUudHlwZSA9PT0gV2ViSW5zcGVjdG9y
LkNvbnRlbnRWaWV3Q29va2llVHlwZS5BcHBsaWNhdGlvbkNhY2hlKTsKKworICAgICAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IHRoaXMuX2FwcGxpY2F0aW9uQ2FjaGVPYmplY3RzLmxlbmd0aDsgKytp
KSB7CisgICAgICAgICAgICB2YXIgb2JqZWN0ID0gdGhpcy5fYXBwbGljYXRpb25DYWNoZU9iamVj
dHNbaV07CisgICAgICAgICAgICBpZiAob2JqZWN0LmZyYW1lLnVybCA9PT0gY29va2llLmZyYW1l
ICYmIG9iamVjdC5tYW5pZmVzdC5tYW5pZmVzdFVSTCA9PT0gY29va2llLm1hbmlmZXN0KQorICAg
ICAgICAgICAgICAgIHJldHVybiBvYmplY3Q7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4g
bWF0Y2hPblR5cGVBbG9uZSAmJiB0aGlzLl9hcHBsaWNhdGlvbkNhY2hlT2JqZWN0cy5sZW5ndGgg
PyB0aGlzLl9hcHBsaWNhdGlvbkNhY2hlT2JqZWN0c1swXSA6IG51bGw7CisgICAgfSwKKwogICAg
IC8vIFByaXZhdGUKIAogICAgIF9tYWluUmVzb3VyY2VEaWRDaGFuZ2U6IGZ1bmN0aW9uKGV2ZW50
KQpAQCAtMTMzLDE2ICsxNDYsMTYgQEAgV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVNYW5h
Z2VyLnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFyIGZyYW1lID0gV2ViSW5zcGVjdG9yLmZyYW1l
UmVzb3VyY2VNYW5hZ2VyLmZyYW1lRm9ySWRlbnRpZmllcihmcmFtZUlkKTsKICAgICAgICAgaWYg
KCFmcmFtZSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgCisKICAgICAgICAgaWYgKCFt
YW5pZmVzdFVSTCkKICAgICAgICAgICAgIHRoaXMuX2ZyYW1lTWFuaWZlc3RSZW1vdmVkKGZyYW1l
KTsKICAgICB9LAotICAgIAorCiAgICAgX2ZyYW1lc1dpdGhNYW5pZmVzdHNMb2FkZWQ6IGZ1bmN0
aW9uKGVycm9yLCBmcmFtZXNXaXRoTWFuaWZlc3RzKQogICAgIHsKICAgICAgICAgaWYgKGVycm9y
KQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAKKwogICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IGZyYW1lc1dpdGhNYW5pZmVzdHMubGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgIHZh
ciBmcmFtZSA9IFdlYkluc3BlY3Rvci5mcmFtZVJlc291cmNlTWFuYWdlci5mcmFtZUZvcklkZW50
aWZpZXIoZnJhbWVzV2l0aE1hbmlmZXN0c1tpXS5mcmFtZUlkKTsKICAgICAgICAgICAgIGlmICgh
ZnJhbWUpCkBAIC0xNTEsNyArMTY0LDcgQEAgV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVN
YW5hZ2VyLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX2ZyYW1lTWFuaWZlc3RVcGRh
dGVkKGZyYW1lLCBmcmFtZXNXaXRoTWFuaWZlc3RzW2ldLm1hbmlmZXN0VVJMLCBmcmFtZXNXaXRo
TWFuaWZlc3RzW2ldLnN0YXR1cyk7CiAgICAgICAgIH0KICAgICB9LAotICAgIAorCiAgICAgX2Zy
YW1lTWFuaWZlc3RVcGRhdGVkOiBmdW5jdGlvbihmcmFtZSwgbWFuaWZlc3RVUkwsIHN0YXR1cykK
ICAgICB7CiAgICAgICAgIGlmIChzdGF0dXMgPT09IFdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNh
Y2hlTWFuYWdlci5TdGF0dXMuVW5jYWNoZWQpIHsKQEAgLTE3MCwxOCArMTgzLDE4IEBAIFdlYklu
c3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZh
ciBzdGF0dXNDaGFuZ2VkID0gbWFuaWZlc3RGcmFtZSAmJiBzdGF0dXMgIT09IG9sZFN0YXR1czsK
ICAgICAgICAgaWYgKG1hbmlmZXN0RnJhbWUpCiAgICAgICAgICAgICBtYW5pZmVzdEZyYW1lLnN0
YXR1cyA9IHN0YXR1czsKLSAgICAgICAgCisKICAgICAgICAgaWYgKCF0aGlzLl9hcHBsaWNhdGlv
bkNhY2hlT2JqZWN0c1tmcmFtZS5pZF0pIHsKICAgICAgICAgICAgIHZhciBjYWNoZU1hbmlmZXN0
ID0gbmV3IFdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3QobWFuaWZlc3RVUkwp
OwogICAgICAgICAgICAgdGhpcy5fYXBwbGljYXRpb25DYWNoZU9iamVjdHNbZnJhbWUuaWRdID0g
bmV3IFdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlRnJhbWUoZnJhbWUsIGNhY2hlTWFuaWZl
c3QsIHN0YXR1cyk7CiAKICAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJz
KFdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5FdmVudC5GcmFtZU1hbmlmZXN0
QWRkZWQsIHtmcmFtZU1hbmlmZXN0OiB0aGlzLl9hcHBsaWNhdGlvbkNhY2hlT2JqZWN0c1tmcmFt
ZS5pZF19KTsKICAgICAgICAgfQotICAgICAgICAKKwogICAgICAgICBpZiAoc3RhdHVzQ2hhbmdl
ZCkKICAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rv
ci5BcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5FdmVudC5GcmFtZU1hbmlmZXN0U3RhdHVzQ2hhbmdl
ZCwge2ZyYW1lTWFuaWZlc3Q6IHRoaXMuX2FwcGxpY2F0aW9uQ2FjaGVPYmplY3RzW2ZyYW1lLmlk
XX0pOwogICAgIH0sCi0gICAgCisKICAgICBfZnJhbWVNYW5pZmVzdFJlbW92ZWQ6IGZ1bmN0aW9u
KGZyYW1lKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9hcHBsaWNhdGlvbkNhY2hlT2JqZWN0
c1tmcmFtZS5pZF0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9CYWNrRm9yd2FyZEVudHJ5LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvQmFja0ZvcndhcmRFbnRyeS5qcwppbmRleCBmYWFiMjhhNzRhMjA5MThjN2Q3Njg1YTMy
MTg3NTRkMjg2OTA5YjRiLi45NDg5OWJjNDRhNzg4NzBkM2NmMDNhMWUwMDg4YzBiM2UwOGJkMDkw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYWNrRm9y
d2FyZEVudHJ5LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jh
Y2tGb3J3YXJkRW50cnkuanMKQEAgLTI0LDE0ICsyNCwxNSBAQAogICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAq
LwogCi1XZWJJbnNwZWN0b3IuQmFja0ZvcndhcmRFbnRyeSA9IGZ1bmN0aW9uKGNvbnRlbnRWaWV3
LCBjb29raWUsIHJlc3RvcmVDYWxsYmFjaykKK1dlYkluc3BlY3Rvci5CYWNrRm9yd2FyZEVudHJ5
ID0gZnVuY3Rpb24oY29udGVudFZpZXcsIGNvb2tpZSkKIHsKICAgICBXZWJJbnNwZWN0b3IuT2Jq
ZWN0LmNhbGwodGhpcyk7CiAgICAgdGhpcy5fY29udGVudFZpZXcgPSBjb250ZW50VmlldzsKICAg
ICAvLyBDb29raWVzIGFyZSBjb21wYXJlZCB3aXRoIE9iamVjdC5zaGFsbG93RXF1YWwsIHNvIHNo
b3VsZCBub3Qgc3RvcmUgb2JqZWN0cyBvciBhcnJheXMuCiAgICAgdGhpcy5fY29va2llID0gY29v
a2llIHx8IHt9OwogICAgIHRoaXMuX3Njcm9sbFBvc2l0aW9ucyA9IFtdOwotICAgIHRoaXMuX3Jl
c3RvcmVDYWxsYmFjayA9IHJlc3RvcmVDYWxsYmFjazsKKworICAgIGNvbnRlbnRWaWV3LnNhdmVU
b0Nvb2tpZSh0aGlzLl9jb29raWUpOwogfTsKIAogV2ViSW5zcGVjdG9yLkJhY2tGb3J3YXJkRW50
cnkucHJvdG90eXBlID0gewpAQCAtNzMsOSArNzQsNyBAQCBXZWJJbnNwZWN0b3IuQmFja0Zvcndh
cmRFbnRyeS5wcm90b3R5cGUgPSB7CiAgICAgX3Jlc3RvcmVGcm9tQ29va2llOiBmdW5jdGlvbigp
CiAgICAgewogICAgICAgICB0aGlzLl9yZXN0b3JlU2Nyb2xsUG9zaXRpb25zKCk7Ci0KLSAgICAg
ICAgaWYgKHRoaXMuX3Jlc3RvcmVDYWxsYmFjayAmJiB0eXBlb2YgdGhpcy5fcmVzdG9yZUNhbGxi
YWNrID09PSAiZnVuY3Rpb24iKQotICAgICAgICAgICAgdGhpcy5fcmVzdG9yZUNhbGxiYWNrLmNh
bGwobnVsbCwgdGhpcy5jb250ZW50VmlldywgdGhpcy5jb29raWUpOworICAgICAgICB0aGlzLmNv
bnRlbnRWaWV3LnJlc3RvcmVGcm9tQ29va2llKHRoaXMuY29va2llKTsKICAgICB9LAogCiAgICAg
X3Jlc3RvcmVTY3JvbGxQb3NpdGlvbnM6IGZ1bmN0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRlbnRCcm93c2VyLmpzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udGVudEJyb3dzZXIuanMKaW5kZXggZGI5ODdh
OGIyMGI0NWIwMTMwNTdmZjI1MzVkY2MyNzRkMGJmYWI3Mi4uN2Y1ODdhMWM0Mzk4ODY5ZDUwZGE3
MDBiNzI2NWVlNmY3NDM2Yjk3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvQ29udGVudEJyb3dzZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvQ29udGVudEJyb3dzZXIuanMKQEAgLTE1MiwxNCArMTUyLDE1IEBAIFdl
Ykluc3BlY3Rvci5Db250ZW50QnJvd3Nlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2Nv
bnRlbnRWaWV3Q29udGFpbmVyLnVwZGF0ZUxheW91dCgpOwogICAgIH0sCiAKLSAgICBzaG93Q29u
dGVudFZpZXdGb3JSZXByZXNlbnRlZE9iamVjdDogZnVuY3Rpb24ocmVwcmVzZW50ZWRPYmplY3Qp
CisgICAgc2hvd0NvbnRlbnRWaWV3Rm9yUmVwcmVzZW50ZWRPYmplY3Q6IGZ1bmN0aW9uKHJlcHJl
c2VudGVkT2JqZWN0LCBjb29raWUpCiAgICAgewotICAgICAgICByZXR1cm4gdGhpcy5fY29udGVu
dFZpZXdDb250YWluZXIuc2hvd0NvbnRlbnRWaWV3Rm9yUmVwcmVzZW50ZWRPYmplY3QocmVwcmVz
ZW50ZWRPYmplY3QpOworICAgICAgICB2YXIgY29udGVudFZpZXcgPSB0aGlzLmNvbnRlbnRWaWV3
Rm9yUmVwcmVzZW50ZWRPYmplY3QocmVwcmVzZW50ZWRPYmplY3QpOworICAgICAgICByZXR1cm4g
dGhpcy5fY29udGVudFZpZXdDb250YWluZXIuc2hvd0NvbnRlbnRWaWV3KGNvbnRlbnRWaWV3LCBj
b29raWUpOwogICAgIH0sCiAKLSAgICBzaG93Q29udGVudFZpZXc6IGZ1bmN0aW9uKGNvbnRlbnRW
aWV3LCBjb29raWUsIHJlc3RvcmVDYWxsYmFjaykKKyAgICBzaG93Q29udGVudFZpZXc6IGZ1bmN0
aW9uKGNvbnRlbnRWaWV3LCBjb29raWUpCiAgICAgewotICAgICAgICByZXR1cm4gdGhpcy5fY29u
dGVudFZpZXdDb250YWluZXIuc2hvd0NvbnRlbnRWaWV3KGNvbnRlbnRWaWV3LCBjb29raWUsIHJl
c3RvcmVDYWxsYmFjayk7CisgICAgICAgIHJldHVybiB0aGlzLl9jb250ZW50Vmlld0NvbnRhaW5l
ci5zaG93Q29udGVudFZpZXcoY29udGVudFZpZXcsIGNvb2tpZSk7CiAgICAgfSwKIAogICAgIGNv
bnRlbnRWaWV3Rm9yUmVwcmVzZW50ZWRPYmplY3Q6IGZ1bmN0aW9uKHJlcHJlc2VudGVkT2JqZWN0
LCBvbmx5RXhpc3RpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Db250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL0NvbnRlbnRWaWV3LmpzCmluZGV4IGY1YjZmZjNmM2UwYjgyNTA4NTJlNjRiOTk2YmI1NzZi
NDQwZjgyNWEuLjdjNDc1YzJlOWM1MmY5ZmU0MDEwYzY0ZDNhZmJjNjdmNjk0ZDdmYTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRlbnRWaWV3Lmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRlbnRWaWV3Lmpz
CkBAIC0yMzMsNiArMjMzLDE2IEBAIFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5wcm90b3R5cGUg
PSB7CiAgICAgICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMuCiAgICAgfSwKIAorICAg
IHNhdmVUb0Nvb2tpZTogZnVuY3Rpb24oY29va2llKQorICAgIHsKKyAgICAgICAgLy8gSW1wbGVt
ZW50ZWQgYnkgc3ViY2xhc3Nlcy4KKyAgICB9LAorCisgICAgcmVzdG9yZUZyb21Db29raWU6IGZ1
bmN0aW9uKGNvb2tpZSkKKyAgICB7CisgICAgICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1YmNsYXNz
ZXMuCisgICAgfSwKKwogICAgIGNhbkdvQmFjazogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAg
Ly8gSW1wbGVtZW50ZWQgYnkgc3ViY2xhc3Nlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRlbnRWaWV3Q29udGFpbmVyLmpzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udGVudFZpZXdDb250YWluZXIuanMKaW5kZXgg
ODU1MGU2YTEwNTdjMjg3MDRiNjgzYTc0YTYyMmQ3MmNkMDIwNjMwOS4uYTUzMmMwYjQxNGQzYjEy
ODMzOGI2MGI1NTFhOGViZTJjNWVjYjliNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvQ29udGVudFZpZXdDb250YWluZXIuanMKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udGVudFZpZXdDb250YWluZXIuanMKQEAgLTEz
Myw3ICsxMzMsNyBAQCBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXdDb250YWluZXIucHJvdG90eXBl
ID0gewogICAgICAgICByZXR1cm4gY29udGVudFZpZXc7CiAgICAgfSwKIAotICAgIHNob3dDb250
ZW50VmlldzogZnVuY3Rpb24oY29udGVudFZpZXcsIGNvb2tpZSwgcmVzdG9yZUNhbGxiYWNrKQor
ICAgIHNob3dDb250ZW50VmlldzogZnVuY3Rpb24oY29udGVudFZpZXcsIGNvb2tpZSkKICAgICB7
CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGNvbnRlbnRWaWV3IGluc3RhbmNlb2YgV2ViSW5zcGVj
dG9yLkNvbnRlbnRWaWV3KTsKICAgICAgICAgaWYgKCEoY29udGVudFZpZXcgaW5zdGFuY2VvZiBX
ZWJJbnNwZWN0b3IuQ29udGVudFZpZXcpKQpAQCAtMTQ2LDcgKzE0Niw3IEBAIFdlYkluc3BlY3Rv
ci5Db250ZW50Vmlld0NvbnRhaW5lci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm4g
bnVsbDsKIAogICAgICAgICB2YXIgY3VycmVudEVudHJ5ID0gdGhpcy5jdXJyZW50QmFja0Zvcndh
cmRFbnRyeTsKLSAgICAgICAgdmFyIHByb3Zpc2lvbmFsRW50cnkgPSBuZXcgV2ViSW5zcGVjdG9y
LkJhY2tGb3J3YXJkRW50cnkoY29udGVudFZpZXcsIGNvb2tpZSwgcmVzdG9yZUNhbGxiYWNrKTsK
KyAgICAgICAgdmFyIHByb3Zpc2lvbmFsRW50cnkgPSBuZXcgV2ViSW5zcGVjdG9yLkJhY2tGb3J3
YXJkRW50cnkoY29udGVudFZpZXcsIGNvb2tpZSk7CiAgICAgICAgIC8vIERvbid0IGRvIGFueXRo
aW5nIGlmIHdlIHdvdWxkIGhhdmUgYWRkZWQgYW4gaWRlbnRpY2FsIGJhY2svZm9yd2FyZCBsaXN0
IGVudHJ5LgogICAgICAgICBpZiAoY3VycmVudEVudHJ5ICYmIGN1cnJlbnRFbnRyeS5jb250ZW50
VmlldyA9PT0gY29udGVudFZpZXcgJiYgT2JqZWN0LnNoYWxsb3dFcXVhbChwcm92aXNpb25hbEVu
dHJ5LmNvb2tpZSwgY3VycmVudEVudHJ5LmNvb2tpZSkpCiAgICAgICAgICAgICByZXR1cm4gY3Vy
cmVudEVudHJ5LmNvbnRlbnRWaWV3OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvQ29va2llU3RvcmFnZUNvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29va2llU3RvcmFnZUNvbnRlbnRWaWV3LmpzCmluZGV4
IDg3YmVlOWYxZjU0ZTE5MDE2ZDdmNmVlMjUwYmNjNTc3MjcxMWM2ZGMuLjNjYjlkMjdlOTQ4OTM5
ZTE0Y2Q0ZjI0YjdiZTA0OTBhYzk1Nzg1MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL0Nvb2tpZVN0b3JhZ2VDb250ZW50Vmlldy5qcworKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db29raWVTdG9yYWdlQ29udGVudFZpZXcu
anMKQEAgLTQ5LDcgKzQ5LDcgQEAgV2ViSW5zcGVjdG9yLkNvb2tpZVN0b3JhZ2VDb250ZW50Vmll
dy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9jb29raWVzID0gdGhpcy5fZmlsdGVy
Q29va2llcyhjb29raWVzKTsKICAgICAgICAgICAgIHRoaXMuX3JlYnVpbGRUYWJsZSgpOwogICAg
ICAgICB9Ci0gICAgCisKICAgICAgICAgUGFnZUFnZW50LmdldENvb2tpZXMoY2FsbGJhY2suYmlu
ZCh0aGlzKSk7CiAgICAgfSwKIApAQCAtNTksNiArNTksMTIgQEAgV2ViSW5zcGVjdG9yLkNvb2tp
ZVN0b3JhZ2VDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9kYXRh
R3JpZC51cGRhdGVMYXlvdXQoKTsKICAgICB9LAogCisgICAgc2F2ZVRvQ29va2llOiBmdW5jdGlv
bihjb29raWUpCisgICAgeworICAgICAgICBjb29raWUudHlwZSA9IFdlYkluc3BlY3Rvci5Db250
ZW50Vmlld0Nvb2tpZVR5cGUuQ29va2llU3RvcmFnZTsKKyAgICAgICAgY29va2llLmhvc3QgPSB0
aGlzLnJlcHJlc2VudGVkT2JqZWN0Lmhvc3Q7CisgICAgfSwKKwogICAgIGdldCBzY3JvbGxhYmxl
RWxlbWVudHMoKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9kYXRhR3JpZCkKQEAgLTEwOCw3
ICsxMTQsNyBAQCBXZWJJbnNwZWN0b3IuQ29va2llU3RvcmFnZUNvbnRlbnRWaWV3LnByb3RvdHlw
ZSA9IHsKICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9kYXRhR3Jp
ZC5lbGVtZW50KTsKICAgICAgICAgICAgIHRoaXMuX2RhdGFHcmlkLnVwZGF0ZUxheW91dCgpOwog
ICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2RhdGFH
cmlkKTsKICAgICAgICAgdGhpcy5fZGF0YUdyaWQucmVtb3ZlQ2hpbGRyZW4oKTsKIApAQCAtMTM2
LDcgKzE0Miw3IEBAIFdlYkluc3BlY3Rvci5Db29raWVTdG9yYWdlQ29udGVudFZpZXcucHJvdG90
eXBlID0gewogICAgICAgICAgICAgdmFyIG5vZGUgPSBuZXcgV2ViSW5zcGVjdG9yLkRhdGFHcmlk
Tm9kZShkYXRhKTsKICAgICAgICAgICAgIG5vZGUuY29va2llID0gY29va2llOwogICAgICAgICAg
ICAgbm9kZS5zZWxlY3RhYmxlID0gdHJ1ZTsKLSAgICAgICAgICAgIAorCiAgICAgICAgICAgICB0
aGlzLl9kYXRhR3JpZC5hcHBlbmRDaGlsZChub2RlKTsKICAgICAgICAgfQogICAgIH0sCkBAIC0x
NzAsMTAgKzE3NiwxMCBAQCBXZWJJbnNwZWN0b3IuQ29va2llU3RvcmFnZUNvbnRlbnRWaWV3LnBy
b3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
LSAgICAgICAgCisKICAgICAgICAgcmV0dXJuIGZpbHRlcmVkQ29va2llczsKICAgICB9LAotICAg
IAorCiAgICAgX3NvcnRDb29raWVzOiBmdW5jdGlvbihjb29raWVzKQogICAgIHsKICAgICAgICAg
dmFyIHNvcnREaXJlY3Rpb24gPSB0aGlzLl9kYXRhR3JpZC5zb3J0T3JkZXIgPT09ICJhc2NlbmRp
bmciID8gMSA6IC0xOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvRE9NU3RvcmFnZUNvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvRE9NU3RvcmFnZUNvbnRlbnRWaWV3LmpzCmluZGV4IDc1ZjU0YTllMjQ4MWNj
NTRhOTE2YTk5NjI0MzE3NmUwZTcwOTRmYTYuLmQzMWRiOTIzMGRlNzY0M2E2NTFlYzA2ZDBmNjhk
ODdmODQ0OTM2Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL0RPTVN0b3JhZ2VDb250ZW50Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9ET01TdG9yYWdlQ29udGVudFZpZXcuanMKQEAgLTQ1LDYgKzQ1LDEzIEBA
IFdlYkluc3BlY3Rvci5ET01TdG9yYWdlQ29udGVudFZpZXcucHJvdG90eXBlID0gewogICAgICAg
ICB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmdldEVudHJpZXModGhpcy5fc2hvd0RPTVN0b3JhZ2VF
bnRyaWVzLmJpbmQodGhpcykpOwogICAgIH0sCiAKKyAgICBzYXZlVG9Db29raWU6IGZ1bmN0aW9u
KGNvb2tpZSkKKyAgICB7CisgICAgICAgIGNvb2tpZS50eXBlID0gV2ViSW5zcGVjdG9yLkNvbnRl
bnRWaWV3Q29va2llVHlwZS5ET01TdG9yYWdlOworICAgICAgICBjb29raWUuaXNMb2NhbFN0b3Jh
Z2UgPSB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmlzTG9jYWxTdG9yYWdlKCk7CisgICAgICAgIGNv
b2tpZS5ob3N0ID0gdGhpcy5yZXByZXNlbnRlZE9iamVjdC5ob3N0OworICAgIH0sCisKICAgICBp
dGVtc0NsZWFyZWQ6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHRoaXMuX2RhdGFHcmlkLnJl
bW92ZUNoaWxkcmVuKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9EYXRhYmFzZUNvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvRGF0YWJhc2VDb250ZW50Vmlldy5qcwppbmRleCA3YmU0OTZlZDkxZjg4YjU0
YzBiYzc4ZThkYWM0Y2NmNDg2YTJhYWM1Li41OTdkNjE0Y2YxMjc2MzMzODk2ZjZlN2EwYmZmOTdm
NjFjMzMzNmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9EYXRhYmFzZUNvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL0RhdGFiYXNlQ29udGVudFZpZXcuanMKQEAgLTUwLDYgKzUwLDggQEAgV2ViSW5z
cGVjdG9yLkRhdGFiYXNlQ29udGVudFZpZXcuRXZlbnQgPSB7CiBXZWJJbnNwZWN0b3IuRGF0YWJh
c2VDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rv
ci5EYXRhYmFzZUNvbnRlbnRWaWV3LAogCisgICAgLy8gUHVibGljCisKICAgICBzaG93bjogZnVu
Y3Rpb24oKQogICAgIHsKICAgICAgICAgdGhpcy5wcm9tcHQuc2hvd24oKTsKQEAgLTY3LDExICs2
OSwxMyBAQCBXZWJJbnNwZWN0b3IuRGF0YWJhc2VDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIH0KICAgICB9LAogCi0gICAgX21lc3NhZ2VzQ2xpY2tlZDogZnVuY3Rpb24oKQorICAg
IHNhdmVUb0Nvb2tpZTogZnVuY3Rpb24oY29va2llKQogICAgIHsKLSAgICAgICAgdGhpcy5wcm9t
cHQuZm9jdXMoKTsKKyAgICAgICAgY29va2llLnR5cGUgPSBXZWJJbnNwZWN0b3IuQ29udGVudFZp
ZXdDb29raWVUeXBlLkRhdGFiYXNlOworICAgICAgICBjb29raWUuaG9zdCA9IHRoaXMucmVwcmVz
ZW50ZWRPYmplY3QuaG9zdDsKKyAgICAgICAgY29va2llLm5hbWUgPSB0aGlzLnJlcHJlc2VudGVk
T2JqZWN0Lm5hbWU7CiAgICAgfSwKLSAgICAKKwogICAgIGNvbnNvbGVQcm9tcHRDb21wbGV0aW9u
c05lZWRlZDogZnVuY3Rpb24ocHJvbXB0LCBkZWZhdWx0Q29tcGxldGlvbnMsIGJhc2UsIHByZWZp
eCwgc3VmZml4KQogICAgIHsKICAgICAgICAgdmFyIHJlc3VsdHMgPSBbXTsKQEAgLTEwMyw2ICsx
MDcsMTMgQEAgV2ViSW5zcGVjdG9yLkRhdGFiYXNlQ29udGVudFZpZXcucHJvdG90eXBlID0gewog
ICAgICAgICB0aGlzLmRhdGFiYXNlLmV4ZWN1dGVTUUwocXVlcnksIHRoaXMuX3F1ZXJ5RmluaXNo
ZWQuYmluZCh0aGlzLCBxdWVyeSksIHRoaXMuX3F1ZXJ5RXJyb3IuYmluZCh0aGlzLCBxdWVyeSkp
OwogICAgIH0sCiAKKyAgICAvLyBQcml2YXRlCisKKyAgICBfbWVzc2FnZXNDbGlja2VkOiBmdW5j
dGlvbigpCisgICAgeworICAgICAgICB0aGlzLnByb21wdC5mb2N1cygpOworICAgIH0sCisKICAg
ICBfcXVlcnlGaW5pc2hlZDogZnVuY3Rpb24ocXVlcnksIGNvbHVtbk5hbWVzLCB2YWx1ZXMpCiAg
ICAgewogICAgICAgICB2YXIgZGF0YUdyaWQgPSBXZWJJbnNwZWN0b3IuRGF0YUdyaWQuY3JlYXRl
U29ydGFibGVEYXRhR3JpZChjb2x1bW5OYW1lcywgdmFsdWVzKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0RhdGFiYXNlVGFibGVDb250ZW50Vmlldy5q
cyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0RhdGFiYXNlVGFibGVDb250
ZW50Vmlldy5qcwppbmRleCA0ZWFiNzEyN2QyM2YzNTg2ZTcwYWQ0YWFjMGM2MTM5N2Y5NGJjNDhj
Li42OTk5MTdkM2JhYmVmNTFmYjhkN2RlNmU2YzRmMGZlMjA2ODAzNWYxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9EYXRhYmFzZVRhYmxlQ29udGVudFZp
ZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRGF0YWJhc2VU
YWJsZUNvbnRlbnRWaWV3LmpzCkBAIC0yNiw5ICsyNiw5IEBACiBXZWJJbnNwZWN0b3IuRGF0YWJh
c2VUYWJsZUNvbnRlbnRWaWV3ID0gZnVuY3Rpb24ocmVwcmVzZW50ZWRPYmplY3QpCiB7CiAgICAg
V2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LmNhbGwodGhpcywgcmVwcmVzZW50ZWRPYmplY3QpOwot
ICAgIAorCiAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLkRhdGFi
YXNlVGFibGVDb250ZW50Vmlldy5TdHlsZUNsYXNzTmFtZSk7Ci0gICAgCisKICAgICB0aGlzLnVw
ZGF0ZSgpOwogfTsKIApAQCAtNTAsNiArNTAsMTQgQEAgV2ViSW5zcGVjdG9yLkRhdGFiYXNlVGFi
bGVDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9kYXRhR3JpZC51
cGRhdGVMYXlvdXQoKTsKICAgICB9LAogCisgICAgc2F2ZVRvQ29va2llOiBmdW5jdGlvbihjb29r
aWUpCisgICAgeworICAgICAgICBjb29raWUudHlwZSA9IFdlYkluc3BlY3Rvci5Db250ZW50Vmll
d0Nvb2tpZVR5cGUuRGF0YWJhc2VUYWJsZTsKKyAgICAgICAgY29va2llLmhvc3QgPSB0aGlzLnJl
cHJlc2VudGVkT2JqZWN0Lmhvc3Q7CisgICAgICAgIGNvb2tpZS5uYW1lID0gdGhpcy5yZXByZXNl
bnRlZE9iamVjdC5uYW1lOworICAgICAgICBjb29raWUuZGF0YWJhc2UgPSB0aGlzLnJlcHJlc2Vu
dGVkT2JqZWN0LmRhdGFiYXNlLm5hbWU7CisgICAgfSwKKwogICAgIGdldCBzY3JvbGxhYmxlRWxl
bWVudHMoKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9kYXRhR3JpZCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0ZyYW1lQ29udGVudFZpZXcuanMg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9GcmFtZUNvbnRlbnRWaWV3Lmpz
CmluZGV4IGQwYmMyODZjNGQ3MmFmYWJmMzg1YjY2Mzk5YWVjZGViN2Q4N2FiMmYuLjYwYjdmMDA0
MmFjMjZlMTE2YTBmYWUzYTE5ZmEyMmRjYWFlNzRkOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0ZyYW1lQ29udGVudFZpZXcuanMKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRnJhbWVDb250ZW50Vmlldy5qcwpAQCAtOTUs
NiArOTUsMjEgQEAgV2ViSW5zcGVjdG9yLkZyYW1lQ29udGVudFZpZXcucHJvdG90eXBlID0gewog
ICAgICAgICB0aGlzLl9zaG93bkluaXRpYWxDb250ZW50ID0gZmFsc2U7CiAgICAgfSwKIAorICAg
IHNhdmVUb0Nvb2tpZTogZnVuY3Rpb24oY29va2llKQorICAgIHsKKyAgICAgICAgY29va2llLnR5
cGUgPSBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXdDb29raWVUeXBlLlJlc291cmNlOworICAgICAg
ICBjb29raWUuc3VidmlldyA9IHRoaXMuX2N1cnJlbnRDb250ZW50Vmlld1NldHRpbmcudmFsdWU7
CisgICAgICAgIGlmICghdGhpcy5yZXByZXNlbnRlZE9iamVjdC5pc01haW5GcmFtZSgpKQorICAg
ICAgICAgICAgY29va2llLnVybCA9IHRoaXMucmVwcmVzZW50ZWRPYmplY3QudXJsOworICAgIH0s
CisKKyAgICByZXN0b3JlRnJvbUNvb2tpZTogZnVuY3Rpb24oY29va2llKQorICAgIHsKKyAgICAg
ICAgdmFyIHNob3duVmlldyA9IHRoaXMuX3Nob3dDb250ZW50Vmlld0ZvcklkZW50aWZpZXIoY29v
a2llLnN1YnZpZXcpOworICAgICAgICBpZiAoImxpbmVOdW1iZXIiIGluIGNvb2tpZSAmJiAiY29s
dW1uTnVtYmVyIiBpbiBjb29raWUpCisgICAgICAgICAgICB0aGlzLnNob3dTb3VyY2VDb2RlKG5l
dyBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVBvc2l0aW9uKGNvb2tpZS5saW5lTnVtYmVyLCBjb29r
aWUuY29sdW1uTnVtYmVyKSk7CisgICAgfSwKKwogICAgIHNob3dSZXNvdXJjZTogZnVuY3Rpb24o
KQogICAgIHsKICAgICAgICAgdGhpcy5fc2hvd25Jbml0aWFsQ29udGVudCA9IHRydWU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9GcmFtZVJlc291cmNl
TWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0ZyYW1lUmVz
b3VyY2VNYW5hZ2VyLmpzCmluZGV4IDhlZWZlMTcwMDZiNGJlYWZjODQ5N2E5NmFhYTYwNDcwMWI3
ODhmOTYuLjI3M2Q3OWI3NTRiNjc5MzFhMzg0MWJiNjlmZDkyZGFkN2FlZWRjOTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0ZyYW1lUmVzb3VyY2VNYW5h
Z2VyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0ZyYW1lUmVz
b3VyY2VNYW5hZ2VyLmpzCkBAIC04MCw2ICs4MCwyMCBAQCBXZWJJbnNwZWN0b3IuRnJhbWVSZXNv
dXJjZU1hbmFnZXIucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gdGhpcy5fZnJhbWVJZGVu
dGlmaWVyTWFwW2ZyYW1lSWRdIHx8IG51bGw7CiAgICAgfSwKIAorCisgICAgb2JqZWN0Rm9yQ29v
a2llOiBmdW5jdGlvbihjb29raWUpCisgICAgeworICAgICAgICB2YXIgcmVwcmVzZW50ZWRPYmpl
Y3QgPSBjb29raWUudXJsID8gdGhpcy5yZXNvdXJjZUZvclVSTChjb29raWUudXJsKSA6IHRoaXMu
bWFpbkZyYW1lOworCisgICAgICAgIGlmICghcmVwcmVzZW50ZWRPYmplY3QpCisgICAgICAgICAg
ICByZXByZXNlbnRlZE9iamVjdCA9IHRoaXMubWFpbkZyYW1lOworCisgICAgICAgIGlmIChyZXBy
ZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5SZXNvdXJjZSAmJiByZXByZXNl
bnRlZE9iamVjdC5pc01haW5SZXNvdXJjZSgpKQorICAgICAgICAgICAgcmVwcmVzZW50ZWRPYmpl
Y3QgPSByZXByZXNlbnRlZE9iamVjdC5wYXJlbnRGcmFtZTsKKworICAgICAgICByZXR1cm4gcmVw
cmVzZW50ZWRPYmplY3Q7CisgICAgfSwKKwogICAgIGZyYW1lRGlkTmF2aWdhdGU6IGZ1bmN0aW9u
KGZyYW1lUGF5bG9hZCkKICAgICB7CiAgICAgICAgIC8vIENhbGxlZCBmcm9tIFdlYkluc3BlY3Rv
ci5QYWdlT2JzZXJ2ZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9JbnN0cnVtZW50U2lkZWJhclBhbmVsLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvSW5zdHJ1bWVudFNpZGViYXJQYW5lbC5qcwppbmRleCBmNzhkYjEwNmRl
YjA0ODJiZGU4N2NjNmEzZjllMjFlYjlhYWRjMTdjLi5mOGY5YmJjZWU3YmNmNTMzNzEwZThhMDk2
MjM4YjIzOWYxOTU4OGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9JbnN0cnVtZW50U2lkZWJhclBhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL0luc3RydW1lbnRTaWRlYmFyUGFuZWwuanMKQEAgLTU1LDkgKzU1
LDcgQEAgV2ViSW5zcGVjdG9yLkluc3RydW1lbnRTaWRlYmFyUGFuZWwgPSBmdW5jdGlvbigpCiAg
ICAgdGhpcy5fdGltZWxpbmVzVHJlZU91dGxpbmUgPSBuZXcgVHJlZU91dGxpbmUodGltZWxpbmVz
VHJlZU91dGxpbmVFbGVtZW50KTsKICAgICB0aGlzLl90aW1lbGluZXNUcmVlT3V0bGluZS5hbGxv
d3NSZXBlYXRTZWxlY3Rpb24gPSB0cnVlOwogCi0gICAgdGhpcy5fdGltZWxpbmVzT2JqZWN0ID0g
bmV3IFdlYkluc3BlY3Rvci5UaW1lbGluZXNPYmplY3Q7Ci0KLSAgICB0aGlzLl90aW1lbGluZXNU
cmVlRWxlbWVudCA9IG5ldyBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50KFdlYkluc3Bl
Y3Rvci5JbnN0cnVtZW50U2lkZWJhclBhbmVsLlN0b3B3YXRjaEljb25TdHlsZUNsYXNzLCBXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIlRpbWVsaW5lcyIpLCBudWxsLCB0aGlzLl90aW1lbGluZXNPYmpl
Y3QpOworICAgIHRoaXMuX3RpbWVsaW5lc1RyZWVFbGVtZW50ID0gbmV3IFdlYkluc3BlY3Rvci5H
ZW5lcmFsVHJlZUVsZW1lbnQoV2ViSW5zcGVjdG9yLkluc3RydW1lbnRTaWRlYmFyUGFuZWwuU3Rv
cHdhdGNoSWNvblN0eWxlQ2xhc3MsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiVGltZWxpbmVzIiks
IG51bGwsIFdlYkluc3BlY3Rvci50aW1lbGluZU1hbmFnZXIudGltZWxpbmVzKTsKIAogICAgIHZh
ciBuZXR3b3JrVGltZWxpbmVUcmVlRWxlbWVudCA9IG5ldyBXZWJJbnNwZWN0b3IuR2VuZXJhbFRy
ZWVFbGVtZW50KFdlYkluc3BlY3Rvci5JbnN0cnVtZW50U2lkZWJhclBhbmVsLk5ldHdvcmtJY29u
U3R5bGVDbGFzcywgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJOZXR3b3JrIFJlcXVlc3RzIiksIG51
bGwsIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZC5UeXBlLk5ldHdvcmspOwogICAgIG5ldHdv
cmtUaW1lbGluZVRyZWVFbGVtZW50LnNtYWxsID0gdHJ1ZTsKQEAgLTE3NCw3ICsxNzIsNyBAQCBX
ZWJJbnNwZWN0b3IuSW5zdHJ1bWVudFNpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAKICAgICBz
aG93VGltZWxpbmU6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5jb250
ZW50QnJvd3Nlci5zaG93Q29udGVudFZpZXdGb3JSZXByZXNlbnRlZE9iamVjdCh0aGlzLl90aW1l
bGluZXNPYmplY3QpOworICAgICAgICBXZWJJbnNwZWN0b3IuY29udGVudEJyb3dzZXIuc2hvd0Nv
bnRlbnRWaWV3Rm9yUmVwcmVzZW50ZWRPYmplY3QoV2ViSW5zcGVjdG9yLnRpbWVsaW5lTWFuYWdl
ci50aW1lbGluZXMpOwogICAgIH0sCiAKICAgICBzaG93VGltZWxpbmVGb3JSZWNvcmRUeXBlOiBm
dW5jdGlvbih0eXBlKQpAQCAtMTg2LDIyICsxODQsNiBAQCBXZWJJbnNwZWN0b3IuSW5zdHJ1bWVu
dFNpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRyZWVFbGVtZW50VG9TZWxlY3Qu
c2VsZWN0KHRydWUsIHRydWUpOwogICAgIH0sCiAKLSAgICBjb29raWVGb3JDb250ZW50Vmlldzog
ZnVuY3Rpb24oY29udGVudFZpZXcpCi0gICAgewotICAgICAgICBpZiAoY29udGVudFZpZXcgaW5z
dGFuY2VvZiBXZWJJbnNwZWN0b3IuVGltZWxpbmVzQ29udGVudFZpZXcpCi0gICAgICAgICAgICBy
ZXR1cm4ge3RpbWVsaW5lOiB0cnVlfTsKLSAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgfSwKLQot
ICAgIHNob3dDb250ZW50Vmlld0ZvckNvb2tpZTogZnVuY3Rpb24oY29udGVudFZpZXdDb29raWUp
Ci0gICAgewotICAgICAgICBpZiAoIWNvbnRlbnRWaWV3Q29va2llKQotICAgICAgICAgICAgcmV0
dXJuOwotCi0gICAgICAgIGlmIChjb250ZW50Vmlld0Nvb2tpZS50aW1lbGluZSkKLSAgICAgICAg
ICAgIHRoaXMuc2hvd1RpbWVsaW5lKCk7Ci0gICAgfSwKLQogICAgIHNob3dQcm9maWxlOiBmdW5j
dGlvbih0eXBlLCB0aXRsZSkKICAgICB7CiAgICAgICAgIHZhciBwcm9maWxlVHJlZUVsZW1lbnRz
ID0gdGhpcy5jb250ZW50VHJlZU91dGxpbmUuY2hpbGRyZW47CkBAIC0yMTcsMTEgKzE5OSw4IEBA
IFdlYkluc3BlY3Rvci5JbnN0cnVtZW50U2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKIAogICAg
IHNob3duOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICAvLyBSZXNlbGVjdCB0aGUgc2VsZWN0
ZWQgdHJlZSBlbGVtZW50IHRvIGNhdXNlIHRoZSBjb250ZW50IHZpZXcgdG8gYmUgc2hvd24gYXMg
d2VsbC4gPHJkYXI6Ly9wcm9ibGVtLzEwODU0NzI3PgotICAgICAgICB2YXIgc2VsZWN0ZWRUcmVl
RWxlbWVudCA9IHRoaXMuX3RpbWVsaW5lc1RyZWVPdXRsaW5lLnNlbGVjdGVkVHJlZUVsZW1lbnQ7
Ci0gICAgICAgIGlmIChzZWxlY3RlZFRyZWVFbGVtZW50KQotICAgICAgICAgICAgc2VsZWN0ZWRU
cmVlRWxlbWVudC5zZWxlY3QodHJ1ZSwgdHJ1ZSk7Ci0KKyAgICAgICAgLy8gRGVsZWdhdGUgdG8g
VGltZWxpbmVzQ29udGVudFZpZXcgdG8gc2VsZWN0IHRoZSBkZWZhdWx0IHJlY29yZCB0eXBlLgor
ICAgICAgICBXZWJJbnNwZWN0b3IuY29udGVudEJyb3dzZXIuc2hvd0NvbnRlbnRWaWV3Rm9yUmVw
cmVzZW50ZWRPYmplY3QoV2ViSW5zcGVjdG9yLnRpbWVsaW5lTWFuYWdlci50aW1lbGluZXMpOwog
ICAgICAgICBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbC5wcm90b3R5cGUuc2hv
d24uY2FsbCh0aGlzKTsKICAgICB9LAogCkBAIC0yMzcsNyArMjE2LDcgQEAgV2ViSW5zcGVjdG9y
Lkluc3RydW1lbnRTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICBpZiAoc2VsZWN0
ZWRUcmVlRWxlbWVudCkKICAgICAgICAgICAgIHNlbGVjdGVkVHJlZUVsZW1lbnQuZGVzZWxlY3Qo
KTsKIAotICAgICAgICB2YXIgY29udGVudFZpZXcgPSBXZWJJbnNwZWN0b3IuY29udGVudEJyb3dz
ZXIuY29udGVudFZpZXdGb3JSZXByZXNlbnRlZE9iamVjdCh0aGlzLl90aW1lbGluZXNPYmplY3Qp
OworICAgICAgICB2YXIgY29udGVudFZpZXcgPSBXZWJJbnNwZWN0b3IuY29udGVudEJyb3dzZXIu
Y29udGVudFZpZXdGb3JSZXByZXNlbnRlZE9iamVjdChXZWJJbnNwZWN0b3IudGltZWxpbmVNYW5h
Z2VyLnRpbWVsaW5lcyk7CiAgICAgICAgIGNvbnRlbnRWaWV3LnNob3dUaW1lbGluZUZvclJlY29y
ZFR5cGUodHJlZUVsZW1lbnQucmVwcmVzZW50ZWRPYmplY3QpOwogICAgICAgICBXZWJJbnNwZWN0
b3IuY29udGVudEJyb3dzZXIuc2hvd0NvbnRlbnRWaWV3KGNvbnRlbnRWaWV3KTsKICAgICB9LApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5qcyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uanMKaW5kZXggN2U3ZWY2
MjNiMmM0YTljYjViNDUyOTJmOGY4Yzk4NWViNmViYzE2My4uMTdlN2ZhYmIyNDZhNTgxY2FhMDBi
NmVmYzQ1NjEyZjdjMmEwZDMzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvTWFpbi5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9NYWluLmpzCkBAIC0yOSw2ICsyOSwxNyBAQCBXZWJJbnNwZWN0b3IuTm90aWZpY2F0aW9u
ID0gewogICAgIFBhZ2VBcmNoaXZlRW5kZWQ6ICJwYWdlLWFyY2hpdmUtZW5kZWQiCiB9OwogCitX
ZWJJbnNwZWN0b3IuQ29udGVudFZpZXdDb29raWVUeXBlID0geworICAgIEFwcGxpY2F0aW9uQ2Fj
aGU6ICJhcHBsaWNhdGlvbi1jYWNoZSIsCisgICAgQ29va2llU3RvcmFnZTogImNvb2tpZS1zdG9y
YWdlIiwKKyAgICBEYXRhYmFzZTogImRhdGFiYXNlIiwKKyAgICBEYXRhYmFzZVRhYmxlOiAiZGF0
YWJhc2UtdGFibGUiLAorICAgIERPTVN0b3JhZ2U6ICJkb20tc3RvcmFnZSIsCisgICAgUmVzb3Vy
Y2U6ICJyZXNvdXJjZSIsIC8vIGluY2x1ZGVzIEZyYW1lIHRvby4KKyAgICBUaW1lbGluZXM6ICJ0
aW1lbGluZXMiLAorCit9OworCiBXZWJJbnNwZWN0b3IubG9hZGVkID0gZnVuY3Rpb24oKQogewog
ICAgIC8vIFRlbGwgdGhlIEluc3BlY3RvckZyb250ZW5kSG9zdCB3ZSBsb2FkZWQgZmlyc3QgdG8g
ZXN0YWJsaXNoIGNvbW11bmljYXRpb24gd2l0aCBJbnNwZWN0b3JCYWNrZW5kLgpAQCAtOTMsNiAr
MTA0LDEzIEBAIFdlYkluc3BlY3Rvci5sb2FkZWQgPSBmdW5jdGlvbigpCiAKICAgICBXZWJJbnNw
ZWN0b3IuRnJhbWUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRnJhbWUuRXZlbnQuTWFp
blJlc291cmNlRGlkQ2hhbmdlLCB0aGlzLl9tYWluUmVzb3VyY2VEaWRDaGFuZ2UsIHRoaXMpOwog
CisgICAgLy8gVGhlc2UgbGlzdGVuZXJzIGFyZSBmb3IgZXZlbnRzIHRoYXQgY291bGQgcmVzb2x2
ZSBhIHBlbmRpbmcgY29udGVudCB2aWV3IGNvb2tpZS4KKyAgICB0aGlzLmFwcGxpY2F0aW9uQ2Fj
aGVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVN
YW5hZ2VyLkV2ZW50LkZyYW1lTWFuaWZlc3RBZGRlZCwgdGhpcy5fcmVzb2x2ZUFuZFNob3dQZW5k
aW5nQ29udGVudFZpZXdDb29raWUsIHRoaXMpOworICAgIHRoaXMuZnJhbWVSZXNvdXJjZU1hbmFn
ZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRnJhbWVSZXNvdXJjZU1hbmFnZXIuRXZl
bnQuTWFpbkZyYW1lRGlkQ2hhbmdlLCB0aGlzLl9yZXNvbHZlQW5kU2hvd1BlbmRpbmdDb250ZW50
Vmlld0Nvb2tpZSwgdGhpcyk7CisgICAgdGhpcy5zdG9yYWdlTWFuYWdlci5hZGRFdmVudExpc3Rl
bmVyKFdlYkluc3BlY3Rvci5TdG9yYWdlTWFuYWdlci5FdmVudC5EYXRhYmFzZVdhc0FkZGVkLCB0
aGlzLl9yZXNvbHZlQW5kU2hvd1BlbmRpbmdDb250ZW50Vmlld0Nvb2tpZSwgdGhpcyk7CisgICAg
dGhpcy5zdG9yYWdlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5TdG9yYWdl
TWFuYWdlci5FdmVudC5Db29raWVTdG9yYWdlT2JqZWN0V2FzQWRkZWQsIHRoaXMuX3Jlc29sdmVB
bmRTaG93UGVuZGluZ0NvbnRlbnRWaWV3Q29va2llLCB0aGlzKTsKKyAgICB0aGlzLnN0b3JhZ2VN
YW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlN0b3JhZ2VNYW5hZ2VyLkV2ZW50
LkRPTVN0b3JhZ2VPYmplY3RXYXNBZGRlZCwgdGhpcy5fcmVzb2x2ZUFuZFNob3dQZW5kaW5nQ29u
dGVudFZpZXdDb29raWUsIHRoaXMpOworCiAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigi
RE9NQ29udGVudExvYWRlZCIsIHRoaXMuY29udGVudExvYWRlZC5iaW5kKHRoaXMpKTsKIAogICAg
IGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImJlZm9yZWNvcHkiLCB0aGlzLl9iZWZvcmVjb3B5
LmJpbmQodGhpcykpOwpAQCAtMTQ4LDcgKzE2Niw3IEBAIFdlYkluc3BlY3Rvci5jb250ZW50TG9h
ZGVkID0gZnVuY3Rpb24oKQogICAgIHRoaXMudG9vbGJhciA9IG5ldyBXZWJJbnNwZWN0b3IuVG9v
bGJhcihkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidG9vbGJhciIpKTsKICAgICB0aGlzLnRvb2xi
YXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVG9vbGJhci5FdmVudC5EaXNwbGF5TW9k
ZURpZENoYW5nZSwgdGhpcy5fdG9vbGJhckRpc3BsYXlNb2RlRGlkQ2hhbmdlLCB0aGlzKTsKICAg
ICB0aGlzLnRvb2xiYXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVG9vbGJhci5FdmVu
dC5TaXplTW9kZURpZENoYW5nZSwgdGhpcy5fdG9vbGJhclNpemVNb2RlRGlkQ2hhbmdlLCB0aGlz
KTsKLSAgICAKKwogICAgIHZhciBjb250ZW50RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJjb250ZW50Iik7CiAgICAgY29udGVudEVsZW1lbnQuc2V0QXR0cmlidXRlKCJyb2xlIiwg
Im1haW4iKTsKICAgICBjb250ZW50RWxlbWVudC5zZXRBdHRyaWJ1dGUoImFyaWEtbGFiZWwiLCBX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNvbnRlbnQiKSk7CkBAIC0yNzcsMTEgKzI5NSw4IEBAIFdl
Ykluc3BlY3Rvci5jb250ZW50TG9hZGVkID0gZnVuY3Rpb24oKQogICAgICAgICBpZiAodGhpcy5f
bGFzdENvbnRlbnRDb29raWVTZXR0aW5nLnZhbHVlID09PSAiY29uc29sZSIpIHsKICAgICAgICAg
ICAgIC8vIFRoZSBjb25zb2xlIGRvZXMgbm90IGhhdmUgYSBzaWRlYmFyLCBzbyBoYW5kbGUgaXRz
IHNwZWNpYWwgY29va2llIGhlcmUuCiAgICAgICAgICAgICB0aGlzLnNob3dGdWxsSGVpZ2h0Q29u
c29sZSgpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgdmFyIHJlc3BvbnNpYmxlU2lk
ZWJhclBhbmVsID0gdGhpcy5uYXZpZ2F0aW9uU2lkZWJhci5maW5kU2lkZWJhclBhbmVsKHRoaXMu
X2xhc3RDb250ZW50Vmlld1Jlc3BvbnNpYmxlU2lkZWJhclBhbmVsU2V0dGluZy52YWx1ZSk7Ci0g
ICAgICAgICAgICBpZiAocmVzcG9uc2libGVTaWRlYmFyUGFuZWwpCi0gICAgICAgICAgICAgICAg
cmVzcG9uc2libGVTaWRlYmFyUGFuZWwuc2hvd0NvbnRlbnRWaWV3Rm9yQ29va2llKHRoaXMuX2xh
c3RDb250ZW50Q29va2llU2V0dGluZy52YWx1ZSk7Ci0gICAgICAgIH0KKyAgICAgICAgfSBlbHNl
CisgICAgICAgICAgICB0aGlzLl9zaG93Q29udGVudFZpZXdGb3JDb29raWUodGhpcy5fbGFzdENv
bnRlbnRDb29raWVTZXR0aW5nLnZhbHVlKTsKICAgICB9CiAKICAgICB0aGlzLl91cGRhdGVTcGxp
dENvbnNvbGVIZWlnaHQodGhpcy5fc3BsaXRDb25zb2xlSGVpZ2h0U2V0dGluZy52YWx1ZSk7CkBA
IC00ODUsMTMgKzUwMCwxMyBAQCBXZWJJbnNwZWN0b3Iub3BlblVSTCA9IGZ1bmN0aW9uKHVybCwg
ZnJhbWUsIGFsd2F5c09wZW5FeHRlcm5hbGx5LCBsaW5lTnVtYmVyKQogICAgICAgICBJbnNwZWN0
b3JGcm9udGVuZEhvc3Qub3BlbkluTmV3VGFiKHVybCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
Ci0gICAgCisKICAgICB2YXIgcGFyc2VkVVJMID0gcGFyc2VVUkwodXJsKTsKICAgICBpZiAocGFy
c2VkVVJMLnNjaGVtZSA9PT0gV2ViSW5zcGVjdG9yLlByb2ZpbGVUeXBlLlByb2ZpbGVTY2hlbWUp
IHsKICAgICAgICAgdmFyIHByb2ZpbGVUeXBlID0gcGFyc2VkVVJMLmhvc3QudG9VcHBlckNhc2Uo
KTsKICAgICAgICAgdmFyIHByb2ZpbGVUaXRsZSA9IHBhcnNlZFVSTC5wYXRoOwotICAgICAgICAK
LSAgICAgICAgLy8gVGhlIHBhdGggb2Ygb2YgdGhlIHByb2ZpbGUgVVJMIHN0YXJ0cyB3aXRoIGEg
c2xhc2gsIHJlbW92ZSBpdCwgc28gCisKKyAgICAgICAgLy8gVGhlIHBhdGggb2Ygb2YgdGhlIHBy
b2ZpbGUgVVJMIHN0YXJ0cyB3aXRoIGEgc2xhc2gsIHJlbW92ZSBpdCwgc28KICAgICAgICAgLy8g
d2UgY2FuIGdldCB0aGUgYWN0dWFsIHRpdGxlLgogICAgICAgICBjb25zb2xlLmFzc2VydChwcm9m
aWxlVGl0bGVbMF0gPT09ICcvJyk7CiAgICAgICAgIHByb2ZpbGVUaXRsZSA9IHByb2ZpbGVUaXRs
ZS5zdWJzdHJpbmcoMSk7CkBAIC05OTYsOCArMTAxMSw4IEBAIFdlYkluc3BlY3Rvci5fdXBkYXRl
Q3VycmVudENvbnRlbnRWaWV3Q29va2llID0gZnVuY3Rpb24oKQogICAgIGlmICghcmVzcG9uc2li
bGVTaWRlYmFyUGFuZWwpCiAgICAgICAgIHJldHVybjsKIAotICAgIHZhciBjb29raWUgPSByZXNw
b25zaWJsZVNpZGViYXJQYW5lbC5jb29raWVGb3JDb250ZW50VmlldyhjdXJyZW50Q29udGVudFZp
ZXcpOwotCisgICAgdmFyIGNvb2tpZSA9IHt9OworICAgIGN1cnJlbnRDb250ZW50Vmlldy5zYXZl
VG9Db29raWUoY29va2llKTsKICAgICB0aGlzLl9sYXN0Q29udGVudFZpZXdSZXNwb25zaWJsZVNp
ZGViYXJQYW5lbFNldHRpbmcudmFsdWUgPSByZXNwb25zaWJsZVNpZGViYXJQYW5lbC5pZGVudGlm
aWVyOwogICAgIHRoaXMuX2xhc3RDb250ZW50Q29va2llU2V0dGluZy52YWx1ZSA9IGNvb2tpZTsK
IH0KQEAgLTEwOTMsNiArMTEwOCw3MyBAQCBXZWJJbnNwZWN0b3IuX2NvbnRlbnRCcm93c2VyUmVw
cmVzZW50ZWRPYmplY3RzRGlkQ2hhbmdlID0gZnVuY3Rpb24oZXZlbnQpCiAgICAgdGhpcy5fdXBk
YXRlQ3VycmVudENvbnRlbnRWaWV3Q29va2llKGV2ZW50KTsKIH0KIAorV2ViSW5zcGVjdG9yLl9z
aG93Q29udGVudFZpZXdGb3JDb29raWUgPSBmdW5jdGlvbihjb29raWUpCit7CisgICAgaWYgKCFj
b29raWUgfHwgIWNvb2tpZS50eXBlKQorICAgICAgICByZXR1cm4gbnVsbDsKKworICAgIHRoaXMu
X3BlbmRpbmdDb250ZW50Vmlld0Nvb2tpZSA9IGNvb2tpZTsKKyAgICB2YXIgc2hvd25Db250ZW50
VmlldyA9IHRoaXMuX3Jlc29sdmVBbmRTaG93UGVuZGluZ0NvbnRlbnRWaWV3Q29va2llKCk7CisK
KyAgICAvLyBBdCB0aGlzIHBvaW50LCB3ZSBhc3N1bWUgbm8gc3RvcmFnZSBvYmplY3RzIG9yIHZp
ZXdzIGhhdmUgYmVlbiBjcmVhdGVkIHlldC4KKyAgICAvLyBJZiB0aGUgY29va2llIHJlcXVlc3Rz
IHRoZXNlIHZpZXdzLCB0aGV5IHdpbGwgYmUgc2hvd24gd2hlbiB0aGUgc3RvcmFnZSBvYmplY3QK
KyAgICAvLyBpcyBhZGRlZCAoaWYgaXQgbWF0Y2hlcyBleGFjdGx5KSwgb3IgYW55IHZpZXcgb2Yg
dGhlIHNhbWUgdHlwZSAoYWZ0ZXIgYSB0aW1lb3V0KS4KKyAgICBpZiAoIXNob3duQ29udGVudFZp
ZXcpIHsKKyAgICAgICAgaWYgKHRoaXMuX2xhc3RBdHRlbXB0Q29va2llQ2hlY2tpbmdUaW1lb3V0
KQorICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuX2xhc3RBdHRlbXB0Q29va2llQ2hlY2tp
bmdUaW1lb3V0KTsKKworICAgICAgICB2YXIgbGFzdEF0dGVtcHRUb1Jlc3RvcmVGcm9tQ29va2ll
ID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBkZWxldGUgdGhpcy5fbGFzdEF0dGVtcHRDb29r
aWVDaGVja2luZ1RpbWVvdXQ7CisgICAgICAgICAgICB0aGlzLl9yZXNvbHZlQW5kU2hvd1BlbmRp
bmdDb250ZW50Vmlld0Nvb2tpZSh0cnVlKTsKKyAgICAgICAgfTsKKworICAgICAgICAvLyBXaGVu
IHRoZSBzcGVjaWZpYyBzdG9yYWdlIGl0ZW0gd2Fzbid0IGZvdW5kIHdlIHdhbnQgdG8gcmVsYXgg
dGhlIGNoZWNrIHRvIHNob3cgdGhlIGZpcnN0IGl0ZW0gd2l0aCB0aGUKKyAgICAgICAgLy8gc2Ft
ZSB0eXBlLiBUaGVyZSBpcyBubyBnb29kIHRpbWUgdG8gbmF0dXJhbGx5IGRlY2xhcmUgdGhlIGNv
b2tpZSB3YXNuJ3QgZm91bmQsIHNvIHdlIGRvIHRoYXQgb24gYSB0aW1lb3V0LgorICAgICAgICB0
aGlzLl9sYXN0QXR0ZW1wdENvb2tpZUNoZWNraW5nVGltZW91dCA9IHNldFRpbWVvdXQobGFzdEF0
dGVtcHRUb1Jlc3RvcmVGcm9tQ29va2llLmJpbmQodGhpcyksIDUwMCk7CisgICAgfQorCisgICAg
cmV0dXJuIHNob3duQ29udGVudFZpZXc7Cit9CisKK1dlYkluc3BlY3Rvci5fcmVzb2x2ZUFuZFNo
b3dQZW5kaW5nQ29udGVudFZpZXdDb29raWUgPSBmdW5jdGlvbihtYXRjaE9uVHlwZUFsb25lKQor
eworICAgIHZhciBjb29raWUgPSB0aGlzLl9wZW5kaW5nQ29udGVudFZpZXdDb29raWU7CisgICAg
aWYgKCFjb29raWUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHZhciByZXByZXNlbnRl
ZE9iamVjdCA9IG51bGw7CisKKyAgICBpZiAoY29va2llLnR5cGUgPT09IFdlYkluc3BlY3Rvci5D
b250ZW50Vmlld0Nvb2tpZVR5cGUuUmVzb3VyY2UpCisgICAgICAgIHJlcHJlc2VudGVkT2JqZWN0
ID0gdGhpcy5mcmFtZVJlc291cmNlTWFuYWdlci5vYmplY3RGb3JDb29raWUoY29va2llKTsKKwor
ICAgIGlmIChjb29raWUudHlwZSA9PT0gV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29va2llVHlw
ZS5UaW1lbGluZXMpCisgICAgICAgIHJlcHJlc2VudGVkT2JqZWN0ID0gdGhpcy50aW1lbGluZU1h
bmFnZXIub2JqZWN0Rm9yQ29va2llKGNvb2tpZSk7CisKKyAgICBpZiAoY29va2llLnR5cGUgPT09
IFdlYkluc3BlY3Rvci5Db250ZW50Vmlld0Nvb2tpZVR5cGUuQ29va2llU3RvcmFnZSB8fCBjb29r
aWUudHlwZSA9PT0gV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29va2llVHlwZS5EYXRhYmFzZSAg
fHwgY29va2llLnR5cGUgPT09IFdlYkluc3BlY3Rvci5Db250ZW50Vmlld0Nvb2tpZVR5cGUuRGF0
YWJhc2VUYWJsZSB8fCBjb29raWUudHlwZSA9PT0gV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29v
a2llVHlwZS5ET01TdG9yYWdlKQorICAgICAgICByZXByZXNlbnRlZE9iamVjdCA9IHRoaXMuc3Rv
cmFnZU1hbmFnZXIub2JqZWN0Rm9yQ29va2llKGNvb2tpZSwgbWF0Y2hPblR5cGVBbG9uZSk7CisK
KyAgICBpZiAoY29va2llLnR5cGUgPT09IFdlYkluc3BlY3Rvci5Db250ZW50Vmlld0Nvb2tpZVR5
cGUuQXBwbGljYXRpb25DYWNoZSkKKyAgICAgICAgcmVwcmVzZW50ZWRPYmplY3QgPSB0aGlzLmFw
cGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLm9iamVjdEZvckNvb2tpZShjb29raWUsIG1hdGNoT25UeXBl
QWxvbmUpOworCisgICAgaWYgKCFyZXByZXNlbnRlZE9iamVjdCkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgLy8gSWYgd2UgcmVhY2hlZCB0aGlzIHBvaW50LCB0aGVuIHdlIHNob3VsZCBi
ZSBhYmxlIHRvIGNyZWF0ZSBhbmQvb3IgZGlzcGxheSBhIGNvbnRlbnQgdmlldyBiYXNlZCBvbiB0
aGUgY29va2llLgorICAgIGRlbGV0ZSB0aGlzLl9wZW5kaW5nQ29udGVudFZpZXdDb29raWU7Cisg
ICAgaWYgKHRoaXMuX2xhc3RBdHRlbXB0Q29va2llQ2hlY2tpbmdUaW1lb3V0KQorICAgICAgICBj
bGVhclRpbWVvdXQodGhpcy5fbGFzdEF0dGVtcHRDb29raWVDaGVja2luZ1RpbWVvdXQpOworCisg
ICAgLy8gRGVsYXkgdGhpcyB3b3JrIGJlY2F1c2Ugb3RoZXIgbGlzdGVuZXJzIG9mIHRoZSBvcmln
aW5hdGluZyBldmVudCBtaWdodCBub3QgaGF2ZSBmaXJlZCB5ZXQuCisgICAgLy8gU28gZGlzcGxh
eWluZyB0aGUgY29udGVudCB2aWV3IGJlZm9yZSB0aG9zZSBsaXN0ZW5lcnMgZG8gdGhlaXIgd29y
ayBtaWdodCBjYXVzZSB0aGUKKyAgICAvLyBkZXBlbmRlbnQgdmlldyBzdGF0ZXMgKG5hdmlnYXRp
b24gc2lkZWJhciB0cmVlIGVsZW1lbnRzLCBwYXRoIGNvbXBvbmVudHMpIHRvIGJlIHdyb25nLgor
ICAgIGZ1bmN0aW9uIGRlbGF5ZWRXb3JrKCkKKyAgICB7CisgICAgICAgIHRoaXMuY29udGVudEJy
b3dzZXIuc2hvd0NvbnRlbnRWaWV3Rm9yUmVwcmVzZW50ZWRPYmplY3QocmVwcmVzZW50ZWRPYmpl
Y3QsIGNvb2tpZSk7CisgICAgfQorICAgIHNldFRpbWVvdXQoZGVsYXllZFdvcmsuYmluZCh0aGlz
KSwgMCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIFdlYkluc3BlY3Rvci5faW5pdGlhbGl6ZVdl
YlNvY2tldElmTmVlZGVkID0gZnVuY3Rpb24oKQogewogICAgIGlmICghSW5zcGVjdG9yRnJvbnRl
bmRIb3N0LmluaXRpYWxpemVXZWJTb2NrZXQpCkBAIC0xMzcyLDMwICsxNDU0LDMwIEBAIFdlYklu
c3BlY3Rvci5lbGVtZW50RHJhZ1N0YXJ0ID0gZnVuY3Rpb24oZWxlbWVudCwgZGl2aWRlckRyYWcs
IGVsZW1lbnREcmFnRW5kLCBlCiB7CiAgICAgaWYgKFdlYkluc3BlY3Rvci5fZWxlbWVudERyYWdn
aW5nRXZlbnRMaXN0ZW5lciB8fCBXZWJJbnNwZWN0b3IuX2VsZW1lbnRFbmREcmFnZ2luZ0V2ZW50
TGlzdGVuZXIpCiAgICAgICAgIFdlYkluc3BlY3Rvci5lbGVtZW50RHJhZ0VuZChldmVudCk7Ci0g
ICAgCisKICAgICBpZiAoZWxlbWVudCkgewogICAgICAgICAvLyBJbnN0YWxsIGdsYXNzIHBhbmUK
ICAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5fZWxlbWVudERyYWdnaW5nR2xhc3NQYW5lKQogICAg
ICAgICAgICAgV2ViSW5zcGVjdG9yLl9lbGVtZW50RHJhZ2dpbmdHbGFzc1BhbmUucGFyZW50RWxl
bWVudC5yZW1vdmVDaGlsZChXZWJJbnNwZWN0b3IuX2VsZW1lbnREcmFnZ2luZ0dsYXNzUGFuZSk7
Ci0gICAgICAgIAorCiAgICAgICAgIHZhciBnbGFzc1BhbmUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJkaXYiKTsKICAgICAgICAgZ2xhc3NQYW5lLnN0eWxlLmNzc1RleHQgPSAicG9zaXRpb246
YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7b3BhY2l0eTowO3otaW5kZXg6
MSI7CiAgICAgICAgIGdsYXNzUGFuZS5pZCA9ICJnbGFzcy1wYW5lLWZvci1kcmFnIjsKICAgICAg
ICAgZWxlbWVudC5vd25lckRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZ2xhc3NQYW5lKTsKICAg
ICAgICAgV2ViSW5zcGVjdG9yLl9lbGVtZW50RHJhZ2dpbmdHbGFzc1BhbmUgPSBnbGFzc1BhbmU7
CiAgICAgfQotICAgIAorCiAgICAgV2ViSW5zcGVjdG9yLl9lbGVtZW50RHJhZ2dpbmdFdmVudExp
c3RlbmVyID0gZGl2aWRlckRyYWc7CiAgICAgV2ViSW5zcGVjdG9yLl9lbGVtZW50RW5kRHJhZ2dp
bmdFdmVudExpc3RlbmVyID0gZWxlbWVudERyYWdFbmQ7Ci0gICAgCisKICAgICB2YXIgdGFyZ2V0
RG9jdW1lbnQgPSBldmVudC50YXJnZXQub3duZXJEb2N1bWVudDsKIAogICAgIFdlYkluc3BlY3Rv
ci5fZWxlbWVudERyYWdnaW5nRXZlbnRUYXJnZXQgPSBldmVudFRhcmdldCB8fCB0YXJnZXREb2N1
bWVudDsKICAgICBXZWJJbnNwZWN0b3IuX2VsZW1lbnREcmFnZ2luZ0V2ZW50VGFyZ2V0LmFkZEV2
ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsIGRpdmlkZXJEcmFnLCB0cnVlKTsKICAgICBXZWJJbnNw
ZWN0b3IuX2VsZW1lbnREcmFnZ2luZ0V2ZW50VGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNl
dXAiLCBlbGVtZW50RHJhZ0VuZCwgdHJ1ZSk7Ci0gICAgCisKICAgICB0YXJnZXREb2N1bWVudC5i
b2R5LnN0eWxlLmN1cnNvciA9IGN1cnNvcjsKLSAgICAKKwogICAgIGV2ZW50LnByZXZlbnREZWZh
dWx0KCk7CiB9CiAKQEAgLTE0MDMsMTcgKzE0ODUsMTcgQEAgV2ViSW5zcGVjdG9yLmVsZW1lbnRE
cmFnRW5kID0gZnVuY3Rpb24oZXZlbnQpCiB7CiAgICAgV2ViSW5zcGVjdG9yLl9lbGVtZW50RHJh
Z2dpbmdFdmVudFRhcmdldC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLCBXZWJJbnNw
ZWN0b3IuX2VsZW1lbnREcmFnZ2luZ0V2ZW50TGlzdGVuZXIsIHRydWUpOwogICAgIFdlYkluc3Bl
Y3Rvci5fZWxlbWVudERyYWdnaW5nRXZlbnRUYXJnZXQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91
c2V1cCIsIFdlYkluc3BlY3Rvci5fZWxlbWVudEVuZERyYWdnaW5nRXZlbnRMaXN0ZW5lciwgdHJ1
ZSk7Ci0gICAgCisKICAgICBldmVudC50YXJnZXQub3duZXJEb2N1bWVudC5ib2R5LnN0eWxlLnJl
bW92ZVByb3BlcnR5KCJjdXJzb3IiKTsKLSAgICAKKwogICAgIGlmIChXZWJJbnNwZWN0b3IuX2Vs
ZW1lbnREcmFnZ2luZ0dsYXNzUGFuZSkKICAgICAgICAgV2ViSW5zcGVjdG9yLl9lbGVtZW50RHJh
Z2dpbmdHbGFzc1BhbmUucGFyZW50RWxlbWVudC5yZW1vdmVDaGlsZChXZWJJbnNwZWN0b3IuX2Vs
ZW1lbnREcmFnZ2luZ0dsYXNzUGFuZSk7Ci0gICAgCisKICAgICBkZWxldGUgV2ViSW5zcGVjdG9y
Ll9lbGVtZW50RHJhZ2dpbmdHbGFzc1BhbmU7CiAgICAgZGVsZXRlIFdlYkluc3BlY3Rvci5fZWxl
bWVudERyYWdnaW5nRXZlbnRUYXJnZXQ7CiAgICAgZGVsZXRlIFdlYkluc3BlY3Rvci5fZWxlbWVu
dERyYWdnaW5nRXZlbnRMaXN0ZW5lcjsKICAgICBkZWxldGUgV2ViSW5zcGVjdG9yLl9lbGVtZW50
RW5kRHJhZ2dpbmdFdmVudExpc3RlbmVyOwotICAgIAorCiAgICAgZXZlbnQucHJldmVudERlZmF1
bHQoKTsKIH0KIApAQCAtMTQyNSw3ICsxNTA3LDcgQEAgV2ViSW5zcGVjdG9yLmNyZWF0ZU1lc3Nh
Z2VUZXh0VmlldyA9IGZ1bmN0aW9uKG1lc3NhZ2UsIGlzRXJyb3IpCiAgICAgICAgIG1lc3NhZ2VF
bGVtZW50LmNsYXNzTGlzdC5hZGQoImVycm9yIik7CiAKICAgICBtZXNzYWdlRWxlbWVudC50ZXh0
Q29udGVudCA9IG1lc3NhZ2U7Ci0gICAgCisKICAgICByZXR1cm4gbWVzc2FnZUVsZW1lbnQ7CiB9
CiAKQEAgLTE1NzcsOSArMTY1OSw5IEBAIFdlYkluc3BlY3Rvci5saW5raWZ5U3RyaW5nQXNGcmFn
bWVudCA9IGZ1bmN0aW9uKHN0cmluZykKICAgICAgICAgaWYgKHR5cGVvZihsaW5lTnVtYmVyKSAh
PT0gInVuZGVmaW5lZCIpCiAgICAgICAgICAgICB1cmxOb2RlLmxpbmVOdW1iZXIgPSBsaW5lTnVt
YmVyOwogCi0gICAgICAgIHJldHVybiB1cmxOb2RlOyAKKyAgICAgICAgcmV0dXJuIHVybE5vZGU7
CiAgICAgfQotICAgIAorCiAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5saW5raWZ5U3RyaW5nQXNG
cmFnbWVudFdpdGhDdXN0b21MaW5raWZpZXIoc3RyaW5nLCBsaW5raWZpZXIpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9OYXZpZ2F0aW9uU2lk
ZWJhclBhbmVsLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTmF2aWdh
dGlvblNpZGViYXJQYW5lbC5qcwppbmRleCBiODNiMjUwNDczMGVhYTZmZTIzZjkxN2E3NzRjZjlh
ZWZlMzYwMGIwLi44YTllNTJjZTViMzQ4ZTExZWM0YTQ1MzFjZjI3YjRiN2MwY2UzN2E0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9OYXZpZ2F0aW9uU2lk
ZWJhclBhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL05h
dmlnYXRpb25TaWRlYmFyUGFuZWwuanMKQEAgLTE3MSwxNyArMTcxLDYgQEAgV2ViSW5zcGVjdG9y
Lk5hdmlnYXRpb25TaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gdGhp
cy5fY29udGVudFRyZWVPdXRsaW5lLmdldENhY2hlZFRyZWVFbGVtZW50KHJlcHJlc2VudGVkT2Jq
ZWN0KTsKICAgICB9LAogCi0gICAgY29va2llRm9yQ29udGVudFZpZXc6IGZ1bmN0aW9uKGNvbnRl
bnRWaWV3KQotICAgIHsKLSAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViY2xhc3Nlcy4KLSAg
ICAgICAgcmV0dXJuIG51bGw7Ci0gICAgfSwKLQotICAgIHNob3dDb250ZW50Vmlld0ZvckNvb2tp
ZTogZnVuY3Rpb24oY29udGVudFZpZXdDb29raWUpCi0gICAgewotICAgICAgICAvLyBJbXBsZW1l
bnRlZCBieSBzdWJjbGFzc2VzLgotICAgIH0sCi0KICAgICBzaG93Q29udGVudFZpZXdGb3JDdXJy
ZW50U2VsZWN0aW9uOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICAvLyBSZXNlbGVjdCB0aGUg
c2VsZWN0ZWQgdHJlZSBlbGVtZW50IHRvIGNhdXNlIHRoZSBjb250ZW50IHZpZXcgdG8gYmUgc2hv
d24gYXMgd2VsbC4gPHJkYXI6Ly9wcm9ibGVtLzEwODU0NzI3PgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUmVzb3VyY2VDbHVzdGVyQ29udGVudFZpZXcu
anMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9SZXNvdXJjZUNsdXN0ZXJD
b250ZW50Vmlldy5qcwppbmRleCAxN2UyMmY1YTljMDA5M2U4ZTU1N2E3MDBlNmUyYjVjNjVlOTgy
Yzk5Li4zMjE5MDBjZWU0ZDAyZGU5OTAwZWIwNDdjYzhkMGE3ODZlYjUyMWMxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9SZXNvdXJjZUNsdXN0ZXJDb250
ZW50Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9SZXNv
dXJjZUNsdXN0ZXJDb250ZW50Vmlldy5qcwpAQCAtMTQwLDYgKzE0MCwyMSBAQCBXZWJJbnNwZWN0
b3IuUmVzb3VyY2VDbHVzdGVyQ29udGVudFZpZXcucHJvdG90eXBlID0gewogICAgICAgICB0aGlz
Ll9zaG93bkluaXRpYWxDb250ZW50ID0gZmFsc2U7CiAgICAgfSwKIAorICAgIHNhdmVUb0Nvb2tp
ZTogZnVuY3Rpb24oY29va2llKQorICAgIHsKKyAgICAgICAgY29va2llLnR5cGUgPSBXZWJJbnNw
ZWN0b3IuQ29udGVudFZpZXdDb29raWVUeXBlLlJlc291cmNlOworICAgICAgICBjb29raWUudXJs
ID0gdGhpcy5yZXByZXNlbnRlZE9iamVjdC51cmw7CisgICAgICAgIGNvb2tpZS5zdWJ2aWV3ID0g
dGhpcy5fY3VycmVudENvbnRlbnRWaWV3U2V0dGluZy52YWx1ZTsKKyAgICB9LAorCisgICAgcmVz
dG9yZUZyb21Db29raWU6IGZ1bmN0aW9uKGNvb2tpZSkKKyAgICB7CisgICAgICAgIGlmICgibGlu
ZU51bWJlciIgaW4gY29va2llICYmICJjb2x1bW5OdW1iZXIiIGluIGNvb2tpZSkKKyAgICAgICAg
ICAgIHJldHVybiB0aGlzLnNob3dSZXNwb25zZShuZXcgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVQ
b3NpdGlvbihjb29raWUubGluZU51bWJlciwgY29va2llLmNvbHVtbk51bWJlcikpOworCisgICAg
ICAgIHRoaXMuX3Nob3dDb250ZW50Vmlld0ZvcklkZW50aWZpZXIoY29va2llLnN1YnZpZXcpOwor
ICAgIH0sCisKICAgICBzaG93UmVxdWVzdDogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgdGhp
cy5fc2hvd25Jbml0aWFsQ29udGVudCA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9SZXNvdXJjZVNpZGViYXJQYW5lbC5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Jlc291cmNlU2lkZWJhclBhbmVsLmpzCmluZGV4
IGU2NmFmMWJhYjA4YjhiNTZmMWFiYjEzZmNlN2Q3YTk2YjM0NGZjOWUuLjk3YmYzOWY3ZmQ4MzEz
YzU4NzM0M2Q1MWFhOTAxNzljNGRjNTI3MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1Jlc291cmNlU2lkZWJhclBhbmVsLmpzCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Jlc291cmNlU2lkZWJhclBhbmVsLmpzCkBAIC04
OCwxMyArODgsNiBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VTaWRlYmFyUGFuZWwgPSBmdW5jdGlv
bigpIHsKICAgICB0aGlzLl9yZXNvdXJjZXNDb250ZW50VHJlZU91dGxpbmUuaW5jbHVkZVNvdXJj
ZU1hcFJlc291cmNlQ2hpbGRyZW4gPSB0cnVlOwogfTsKIAotV2ViSW5zcGVjdG9yLlJlc291cmNl
U2lkZWJhclBhbmVsLlJlc291cmNlQ29udGVudFZpZXdDb29raWVUeXBlID0gInJlc291cmNlIjsK
LVdlYkluc3BlY3Rvci5SZXNvdXJjZVNpZGViYXJQYW5lbC5Db29raWVTdG9yYWdlQ29udGVudFZp
ZXdDb29raWVUeXBlID0gImNvb2tpZS1zdG9yYWdlIjsKLVdlYkluc3BlY3Rvci5SZXNvdXJjZVNp
ZGViYXJQYW5lbC5EYXRhYmFzZUNvbnRlbnRWaWV3Q29va2llVHlwZSA9ICJkYXRhYmFzZSI7Ci1X
ZWJJbnNwZWN0b3IuUmVzb3VyY2VTaWRlYmFyUGFuZWwuRGF0YWJhc2VUYWJsZUNvbnRlbnRWaWV3
Q29va2llVHlwZSA9ICJkYXRhYmFzZS10YWJsZSI7Ci1XZWJJbnNwZWN0b3IuUmVzb3VyY2VTaWRl
YmFyUGFuZWwuRE9NU3RvcmFnZUNvbnRlbnRWaWV3Q29va2llVHlwZSA9ICJkb20tc3RvcmFnZSI7
Ci1XZWJJbnNwZWN0b3IuUmVzb3VyY2VTaWRlYmFyUGFuZWwuQXBwbGljYXRpb25DYWNoZUNvbnRl
bnRWaWV3Q29va2llVHlwZSA9ICJhcHBsaWNhdGlvbi1jYWNoZSI7Ci0KIFdlYkluc3BlY3Rvci5S
ZXNvdXJjZVNpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgY29uc3RydWN0b3I6IFdlYklu
c3BlY3Rvci5SZXNvdXJjZVNpZGViYXJQYW5lbCwKIApAQCAtMTA1LDEwOSArOTgsNiBAQCBXZWJJ
bnNwZWN0b3IuUmVzb3VyY2VTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICByZXR1
cm4gdGhpcy5fc2VhcmNoQ29udGVudFRyZWVPdXRsaW5lOwogICAgIH0sCiAKLSAgICBjb29raWVG
b3JDb250ZW50VmlldzogZnVuY3Rpb24oY29udGVudFZpZXcpCi0gICAgewotICAgICAgICBjb25z
b2xlLmFzc2VydChjb250ZW50VmlldyBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5GcmFtZUNvbnRl
bnRWaWV3IHx8IGNvbnRlbnRWaWV3IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJlc291cmNlQ2x1
c3RlckNvbnRlbnRWaWV3IHx8IGNvbnRlbnRWaWV3IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlNj
cmlwdENvbnRlbnRWaWV3IHx8IGNvbnRlbnRWaWV3IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkNv
b2tpZVN0b3JhZ2VDb250ZW50VmlldyB8fCBjb250ZW50VmlldyBpbnN0YW5jZW9mIFdlYkluc3Bl
Y3Rvci5ET01TdG9yYWdlQ29udGVudFZpZXcgfHwgY29udGVudFZpZXcgaW5zdGFuY2VvZiBXZWJJ
bnNwZWN0b3IuRGF0YWJhc2VUYWJsZUNvbnRlbnRWaWV3IHx8IGNvbnRlbnRWaWV3IGluc3RhbmNl
b2YgV2ViSW5zcGVjdG9yLkRhdGFiYXNlQ29udGVudFZpZXcgfHwgY29udGVudFZpZXcgaW5zdGFu
Y2VvZiBXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZUZyYW1lQ29udGVudFZpZXcpOwotCi0g
ICAgICAgIHZhciByZXByZXNlbnRlZE9iamVjdCA9IGNvbnRlbnRWaWV3LnJlcHJlc2VudGVkT2Jq
ZWN0OwotCi0gICAgICAgIC8vIFRoZSBtYWluIGZyYW1lIGRvZXMgbm90IG5lZWQgYSBVUkwsIGFu
IGVtcHR5IGNvb2tpZSBpcyBlbm91Z2guCi0gICAgICAgIGlmIChyZXByZXNlbnRlZE9iamVjdCBp
bnN0YW5jZW9mIFdlYkluc3BlY3Rvci5GcmFtZSAmJiByZXByZXNlbnRlZE9iamVjdC5pc01haW5G
cmFtZSgpKQotICAgICAgICAgICAgcmV0dXJuIHt0eXBlOiBXZWJJbnNwZWN0b3IuUmVzb3VyY2VT
aWRlYmFyUGFuZWwuUmVzb3VyY2VDb250ZW50Vmlld0Nvb2tpZVR5cGV9OwotCi0gICAgICAgIC8v
IElmIGl0IGhhcyBhIFVSTCwgcmV0dXJuIGEgY29va2llIHdpdGggdGhlIGZyYW1lL3Jlc291cmNl
L3NjcmlwdCBVUkwgcmVwcmVzZW50ZWQgYnkgdGhlIGNvbnRlbnQgdmlldy4KLSAgICAgICAgaWYg
KHJlcHJlc2VudGVkT2JqZWN0LnVybCkgewotICAgICAgICAgICAgY29uc29sZS5hc3NlcnQocmVw
cmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuRnJhbWUgfHwgcmVwcmVzZW50
ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUmVzb3VyY2UgfHwgcmVwcmVzZW50ZWRP
YmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuU2NyaXB0KTsKLSAgICAgICAgICAgIHJldHVy
biB7dHlwZTogV2ViSW5zcGVjdG9yLlJlc291cmNlU2lkZWJhclBhbmVsLlJlc291cmNlQ29udGVu
dFZpZXdDb29raWVUeXBlLCB1cmw6IGNvbnRlbnRWaWV3LnJlcHJlc2VudGVkT2JqZWN0LnVybH07
Ci0gICAgICAgIH0KLQotICAgICAgICB2YXIgY29va2llID0ge307Ci0KLSAgICAgICAgaWYgKHJl
cHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkNvb2tpZVN0b3JhZ2VPYmpl
Y3QpIHsKLSAgICAgICAgICAgIGNvb2tpZS50eXBlID0gV2ViSW5zcGVjdG9yLlJlc291cmNlU2lk
ZWJhclBhbmVsLkNvb2tpZVN0b3JhZ2VDb250ZW50Vmlld0Nvb2tpZVR5cGU7Ci0gICAgICAgICAg
ICBjb29raWUuaG9zdCA9IHJlcHJlc2VudGVkT2JqZWN0Lmhvc3Q7Ci0gICAgICAgIH0gZWxzZSBp
ZiAocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuRGF0YWJhc2VPYmpl
Y3QpIHsKLSAgICAgICAgICAgIGNvb2tpZS50eXBlID0gV2ViSW5zcGVjdG9yLlJlc291cmNlU2lk
ZWJhclBhbmVsLkRhdGFiYXNlQ29udGVudFZpZXdDb29raWVUeXBlOwotICAgICAgICAgICAgY29v
a2llLmhvc3QgPSByZXByZXNlbnRlZE9iamVjdC5ob3N0OwotICAgICAgICAgICAgY29va2llLm5h
bWUgPSByZXByZXNlbnRlZE9iamVjdC5uYW1lOwotICAgICAgICB9IGVsc2UgaWYgKHJlcHJlc2Vu
dGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkRhdGFiYXNlVGFibGVPYmplY3QpIHsK
LSAgICAgICAgICAgIGNvb2tpZS50eXBlID0gV2ViSW5zcGVjdG9yLlJlc291cmNlU2lkZWJhclBh
bmVsLkRhdGFiYXNlVGFibGVDb250ZW50Vmlld0Nvb2tpZVR5cGU7Ci0gICAgICAgICAgICBjb29r
aWUuaG9zdCA9IHJlcHJlc2VudGVkT2JqZWN0LmRhdGFiYXNlLmhvc3Q7Ci0gICAgICAgICAgICBj
b29raWUuZGF0YWJhc2UgPSByZXByZXNlbnRlZE9iamVjdC5kYXRhYmFzZS5uYW1lOwotICAgICAg
ICAgICAgY29va2llLm5hbWUgPSByZXByZXNlbnRlZE9iamVjdC5uYW1lOwotICAgICAgICB9IGVs
c2UgaWYgKHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkRPTVN0b3Jh
Z2VPYmplY3QpIHsKLSAgICAgICAgICAgIGNvb2tpZS50eXBlID0gV2ViSW5zcGVjdG9yLlJlc291
cmNlU2lkZWJhclBhbmVsLkRPTVN0b3JhZ2VDb250ZW50Vmlld0Nvb2tpZVR5cGU7Ci0gICAgICAg
ICAgICBjb29raWUuaXNMb2NhbFN0b3JhZ2UgPSByZXByZXNlbnRlZE9iamVjdC5pc0xvY2FsU3Rv
cmFnZSgpOwotICAgICAgICAgICAgY29va2llLmhvc3QgPSByZXByZXNlbnRlZE9iamVjdC5ob3N0
OwotICAgICAgICB9IGVsc2UgaWYgKHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5z
cGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVGcmFtZSkgewotICAgICAgICAgICAgY29va2llLnR5cGUg
PSBXZWJJbnNwZWN0b3IuUmVzb3VyY2VTaWRlYmFyUGFuZWwuQXBwbGljYXRpb25DYWNoZUNvbnRl
bnRWaWV3Q29va2llVHlwZTsKLSAgICAgICAgICAgIGNvb2tpZS5mcmFtZSA9IHJlcHJlc2VudGVk
T2JqZWN0LmZyYW1lLnVybDsKLSAgICAgICAgICAgIGNvb2tpZS5tYW5pZmVzdCA9IHJlcHJlc2Vu
dGVkT2JqZWN0Lm1hbmlmZXN0Lm1hbmlmZXN0VVJMOwotICAgICAgICB9IGVsc2UgaWYgKHJlcHJl
c2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlNjcmlwdCkgewotICAgICAgICAg
ICAgLy8gSWYgdGhlIFNjcmlwdCBkb2VzIG5vdCBoYXZlIGEgVVJMLCB0aGVuIHRoZXJlIGlzIG5v
dCBtdWNoIG1vcmUgd2UgY2FuIGRvIHRvIG1ha2UgYSBjb29raWUuCi0gICAgICAgICAgICAvLyBU
aGUgVVJMIGNhc2UgaXMgaGFuZGxlZCBhYm92ZSwgZG8gbm90aGluZyBoZXJlIHRvIHByZXZlbnQg
dHJpZ2dlcmluZyB0aGUgIlVua25vd24iIGVycm9yIGJlbG93LgotICAgICAgICAgICAgY29uc29s
ZS5hc3NlcnQoIXJlcHJlc2VudGVkT2JqZWN0LnVybCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICBjb25zb2xlLmVycm9yKCJVbmtub3duIHJlcHJlc2VudGVkIG9iamVjdC4iKTsKLSAg
ICAgICAgfQotCi0gICAgICAgIHJldHVybiBjb29raWU7Ci0gICAgfSwKLQotICAgIHNob3dDb250
ZW50Vmlld0ZvckNvb2tpZTogZnVuY3Rpb24oY29udGVudFZpZXdDb29raWUpCi0gICAgewotICAg
ICAgICBpZiAoIWNvbnRlbnRWaWV3Q29va2llIHx8ICFjb250ZW50Vmlld0Nvb2tpZS50eXBlKQot
ICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHRoaXMuX2NvbnRlbnRWaWV3Q29va2llVG9T
aG93V2hlbkF2YWlsYWJsZSA9IGNvbnRlbnRWaWV3Q29va2llOwotCi0gICAgICAgIGlmIChjb250
ZW50Vmlld0Nvb2tpZS50eXBlID09PSBXZWJJbnNwZWN0b3IuUmVzb3VyY2VTaWRlYmFyUGFuZWwu
UmVzb3VyY2VDb250ZW50Vmlld0Nvb2tpZVR5cGUpIHsKLSAgICAgICAgICAgIC8vIFdlIGNhbid0
IHNob3cgYW55dGhpbmcgdW50aWwgd2UgaGF2ZSB0aGUgbWFpbiBmcmFtZSBpbiB0aGUgc2lkZWJh
ci4gT3RoZXJ3aXNlIHRoZSBwYXRoIGNvbXBvbmVudHMgaW4gdGhlIG5hdmlnYXRpb24gYmFyIHdv
dWxkIGJlIG1pc3NpbmcuCi0gICAgICAgICAgICBpZiAoIXRoaXMuX21haW5GcmFtZVRyZWVFbGVt
ZW50KSB7Ci0gICAgICAgICAgICAgICAgdGhpcy5fY29udGVudFZpZXdDb29raWVUb1Nob3dXaGVu
QXZhaWxhYmxlID0gY29udGVudFZpZXdDb29raWU7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB2YXIgcmVwcmVzZW50ZWRPYmplY3QgPSBjb250
ZW50Vmlld0Nvb2tpZS51cmwgPyBXZWJJbnNwZWN0b3IuZnJhbWVSZXNvdXJjZU1hbmFnZXIucmVz
b3VyY2VGb3JVUkwoY29udGVudFZpZXdDb29raWUudXJsKSA6IFdlYkluc3BlY3Rvci5mcmFtZVJl
c291cmNlTWFuYWdlci5tYWluRnJhbWU7Ci0gICAgICAgICAgICBpZiAoIXJlcHJlc2VudGVkT2Jq
ZWN0KQotICAgICAgICAgICAgICAgIHJlcHJlc2VudGVkT2JqZWN0ID0gV2ViSW5zcGVjdG9yLmZy
YW1lUmVzb3VyY2VNYW5hZ2VyLm1haW5GcmFtZTsKLQotICAgICAgICAgICAgaWYgKCFyZXByZXNl
bnRlZE9iamVjdCkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgIGlmIChy
ZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5SZXNvdXJjZSAmJiByZXBy
ZXNlbnRlZE9iamVjdC5pc01haW5SZXNvdXJjZSgpKQotICAgICAgICAgICAgICAgIHJlcHJlc2Vu
dGVkT2JqZWN0ID0gcmVwcmVzZW50ZWRPYmplY3QucGFyZW50RnJhbWU7Ci0KLSAgICAgICAgICAg
IHRoaXMudHJlZUVsZW1lbnRGb3JSZXByZXNlbnRlZE9iamVjdChyZXByZXNlbnRlZE9iamVjdCku
cmV2ZWFsQW5kU2VsZWN0KHRydWUsIHRydWUpOwotCi0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIH0KLQotICAgICAgICAvLyBJdCBtdXN0IGJlIGEgc3RvcmFnZSBjb29raWUuCi0KLSAgICAg
ICAgZnVuY3Rpb24gZmluYWxpemVDb29raWVDaGVja2luZygpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIC8vIFdhbGsgYWxsIHRoZSB0cmVlIGVsZW1lbnRzIGFuZCBtYXRjaCB0aGVtIGJhc2VkIG9u
IHR5cGUgYWxvbmUuIFNvIGlmIHlvdSB3ZXJlIGxvb2tpbmcgYXQgY29va2llcwotICAgICAgICAg
ICAgLy8gb24gb25lIHNpdGUsIGFuZCBsYXRlciBvcGVuIHRoZSBpbnNwZWN0b3Igb24gYW5vdGhl
ciBzaXRlLCB0aGUgbmV3IHNpdGUncyBjb29raWVzIHdpbGwgc2hvdy4KLSAgICAgICAgICAgIHZh
ciBjdXJyZW50VHJlZUVsZW1lbnQgPSB0aGlzLmNvbnRlbnRUcmVlT3V0bGluZS5jaGlsZHJlblsw
XTsKLSAgICAgICAgICAgIHdoaWxlIChjdXJyZW50VHJlZUVsZW1lbnQgJiYgIWN1cnJlbnRUcmVl
RWxlbWVudC5yb290KSB7Ci0gICAgICAgICAgICAgICAgaWYgKHRoaXMuX2NoZWNrU3RvcmFnZVRy
ZWVFbGVtZW50QWdhaW5zdFBlbmRpbmdDb250ZW50Vmlld0Nvb2tpZShjdXJyZW50VHJlZUVsZW1l
bnQsIHRydWUpKQotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBj
dXJyZW50VHJlZUVsZW1lbnQgPSBjdXJyZW50VHJlZUVsZW1lbnQudHJhdmVyc2VOZXh0VHJlZUVs
ZW1lbnQoZmFsc2UsIG51bGwsIGZhbHNlKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
ZGVsZXRlIHRoaXMuX2NvbnRlbnRWaWV3Q29va2llVG9TaG93V2hlbkF2YWlsYWJsZTsKLSAgICAg
ICAgICAgIGRlbGV0ZSB0aGlzLl9maW5hbGl6ZUNvb2tpZUNoZWNraW5nVGltZW91dDsKLSAgICAg
ICAgfQotCi0gICAgICAgIGlmICh0aGlzLl9maW5hbGl6ZUNvb2tpZUNoZWNraW5nVGltZW91dCkK
LSAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLl9maW5hbGl6ZUNvb2tpZUNoZWNraW5nVGlt
ZW91dCk7Ci0KLSAgICAgICAgLy8gV2hlbiB0aGUgc3BlY2lmaWMgc3RvcmFnZSBpdGVtIHdhc24n
dCBmb3VuZCB3ZSB3YW50IHRvIHJlbGF4IHRoZSBjaGVjayB0byBzaG93IHRoZSBmaXJzdCBpdGVt
IHdpdGggdGhlCi0gICAgICAgIC8vIHNhbWUgdHlwZS4gVGhlcmUgaXMgbm8gZ29vZCB0aW1lIHRv
IG5hdHVyYWxseSBkZWNsYXJlIHRoZSBjb29raWUgd2Fzbid0IGZvdW5kLCBzbyB3ZSBkbyB0aGF0
IG9uIGEgdGltZW91dC4KLSAgICAgICAgdGhpcy5fZmluYWxpemVDb29raWVDaGVja2luZ1RpbWVv
dXQgPSBzZXRUaW1lb3V0KGZpbmFsaXplQ29va2llQ2hlY2tpbmcuYmluZCh0aGlzKSwgNTAwKTsK
LSAgICB9LAotCiAgICAgc2hvd01haW5GcmFtZURPTVRyZWU6IGZ1bmN0aW9uKG5vZGVUb1NlbGVj
dCwgcHJldmVudEZvY3VzQ2hhbmdlKQogICAgIHsKICAgICAgICAgdmFyIGNvbnRlbnRWaWV3ID0g
V2ViSW5zcGVjdG9yLmNvbnRlbnRCcm93c2VyLmNvbnRlbnRWaWV3Rm9yUmVwcmVzZW50ZWRPYmpl
Y3QoV2ViSW5zcGVjdG9yLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLm1haW5GcmFtZSk7CkBAIC0yNjMs
MjAgKzE1Myw3IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZVNpZGViYXJQYW5lbC5wcm90b3R5cGUg
PSB7CiAgICAgICAgIHZhciBuZXdDb250ZW50VmlldyA9IFdlYkluc3BlY3Rvci5jb250ZW50QnJv
d3Nlci5jb250ZW50Vmlld0ZvclJlcHJlc2VudGVkT2JqZWN0KHJlcHJlc2VudGVkT2JqZWN0KTsK
ICAgICAgICAgdmFyIGNvb2tpZSA9IHtsaW5lTnVtYmVyOiBwb3NpdGlvblRvUmV2ZWFsLmxpbmVO
dW1iZXIsIGNvbHVtbk51bWJlcjogcG9zaXRpb25Ub1JldmVhbC5jb2x1bW5OdW1iZXJ9OwogCi0g
ICAgICAgIHZhciByZXN0b3JlQ2FsbGJhY2sgPSBmdW5jdGlvbihjb250ZW50Vmlldywgc2F2ZWRD
b29raWUpIHsKLSAgICAgICAgICAgIHZhciBsaW5lTnVtYmVyID0gc2F2ZWRDb29raWUubGluZU51
bWJlcjsKLSAgICAgICAgICAgIHZhciBjb2x1bW5OdW1iZXIgPSBzYXZlZENvb2tpZS5jb2x1bW5O
dW1iZXI7Ci0gICAgICAgICAgICB2YXIgcG9zaXRpb24gPSBuZXcgV2ViSW5zcGVjdG9yLlNvdXJj
ZUNvZGVQb3NpdGlvbihsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpOwotCi0gICAgICAgICAgICBp
ZiAoY29udGVudFZpZXcgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuRnJhbWVDb250ZW50VmlldykK
LSAgICAgICAgICAgICAgICBjb250ZW50Vmlldy5zaG93U291cmNlQ29kZShwb3NpdGlvbikKLSAg
ICAgICAgICAgIGVsc2UgaWYgKGNvbnRlbnRWaWV3IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJl
c291cmNlQ2x1c3RlckNvbnRlbnRWaWV3KQotICAgICAgICAgICAgICAgIGNvbnRlbnRWaWV3LnNo
b3dSZXNwb25zZShwb3NpdGlvbikKLSAgICAgICAgICAgIGVsc2UgaWYgKGNvbnRlbnRWaWV3IGlu
c3RhbmNlb2YgV2ViSW5zcGVjdG9yLlNjcmlwdENvbnRlbnRWaWV3KQotICAgICAgICAgICAgICAg
IGNvbnRlbnRWaWV3LnJldmVhbFBvc2l0aW9uKHBvc2l0aW9uKQotICAgICAgICB9OwotCi0gICAg
ICAgIFdlYkluc3BlY3Rvci5jb250ZW50QnJvd3Nlci5zaG93Q29udGVudFZpZXcobmV3Q29udGVu
dFZpZXcsIGNvb2tpZSwgcmVzdG9yZUNhbGxiYWNrKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLmNv
bnRlbnRCcm93c2VyLnNob3dDb250ZW50VmlldyhuZXdDb250ZW50VmlldywgY29va2llKTsKICAg
ICB9LAogCiAgICAgc2hvd1NvdXJjZUNvZGVMb2NhdGlvbjogZnVuY3Rpb24oc291cmNlQ29kZUxv
Y2F0aW9uKQpAQCAtNjE4LDEyICs0OTUsNiBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VTaWRlYmFy
UGFuZWwucHJvdG90eXBlID0gewogCiAgICAgICAgICAgICBpZiAodGhpcy5fZnJhbWVJZGVudGlm
aWVyVG9TaG93U291cmNlQ29kZVdoZW5BdmFpbGFibGUpCiAgICAgICAgICAgICAgICAgdGhpcy5z
aG93U291cmNlQ29kZUZvckZyYW1lKHRoaXMuX2ZyYW1lSWRlbnRpZmllclRvU2hvd1NvdXJjZUNv
ZGVXaGVuQXZhaWxhYmxlLCB0cnVlKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuX2NvbnRl
bnRWaWV3Q29va2llVG9TaG93V2hlbkF2YWlsYWJsZSkgewotICAgICAgICAgICAgICAgIHRoaXMu
c2hvd0NvbnRlbnRWaWV3Rm9yQ29va2llKHRoaXMuX2NvbnRlbnRWaWV3Q29va2llVG9TaG93V2hl
bkF2YWlsYWJsZSk7Ci0KLSAgICAgICAgICAgICAgICAvLyBUaGUgY29va2llIGlzIG9ubHkgdXNl
ZnVsIHVudGlsIHRoZSBtYWluIGZyYW1lIGxvYWRzLgotICAgICAgICAgICAgICAgIGRlbGV0ZSB0
aGlzLl9jb250ZW50Vmlld0Nvb2tpZVRvU2hvd1doZW5BdmFpbGFibGU7Ci0gICAgICAgICAgICB9
CiAgICAgICAgIH0KIAogICAgICAgICAvLyBXZSBvbmx5IGNhcmUgYWJvdXQgdGhlIGZpcnN0IHRp
bWUgdGhlIG1haW4gZnJhbWUgY2hhbmdlcy4KQEAgLTc2NCw3NSArNjM1LDYgQEAgV2ViSW5zcGVj
dG9yLlJlc291cmNlU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5zaG93
TWFpbkZyYW1lRE9NVHJlZShldmVudC5kYXRhLm5vZGUpOwogICAgIH0sCiAKLSAgICBfY2hlY2tT
dG9yYWdlVHJlZUVsZW1lbnRBZ2FpbnN0UGVuZGluZ0NvbnRlbnRWaWV3Q29va2llOiBmdW5jdGlv
bih0cmVlRWxlbWVudCwgbWF0Y2hPblR5cGVBbG9uZSkKLSAgICB7Ci0gICAgICAgIHZhciBjb250
ZW50Vmlld0Nvb2tpZSA9IHRoaXMuX2NvbnRlbnRWaWV3Q29va2llVG9TaG93V2hlbkF2YWlsYWJs
ZTsKLSAgICAgICAgaWYgKCFjb250ZW50Vmlld0Nvb2tpZSB8fCAhY29udGVudFZpZXdDb29raWUu
dHlwZSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICBpZiAoY29udGVudFZp
ZXdDb29raWUudHlwZSA9PT0gV2ViSW5zcGVjdG9yLlJlc291cmNlU2lkZWJhclBhbmVsLlJlc291
cmNlQ29udGVudFZpZXdDb29raWVUeXBlKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAg
IHZhciByZXByZXNlbnRlZE9iamVjdCA9IHRyZWVFbGVtZW50LnJlcHJlc2VudGVkT2JqZWN0Owot
Ci0gICAgICAgIHN3aXRjaCAoY29udGVudFZpZXdDb29raWUudHlwZSkgewotICAgICAgICBjYXNl
IFdlYkluc3BlY3Rvci5SZXNvdXJjZVNpZGViYXJQYW5lbC5Db29raWVTdG9yYWdlQ29udGVudFZp
ZXdDb29raWVUeXBlOgotICAgICAgICAgICAgaWYgKCEocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFu
Y2VvZiBXZWJJbnNwZWN0b3IuQ29va2llU3RvcmFnZU9iamVjdCkpCi0gICAgICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICAgICAgaWYgKCFtYXRjaE9uVHlwZUFsb25lICYmIHJlcHJlc2VudGVk
T2JqZWN0Lmhvc3QgIT09IGNvbnRlbnRWaWV3Q29va2llLmhvc3QpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBXZWJJbnNw
ZWN0b3IuUmVzb3VyY2VTaWRlYmFyUGFuZWwuRGF0YWJhc2VDb250ZW50Vmlld0Nvb2tpZVR5cGU6
Ci0gICAgICAgICAgICBpZiAoIShyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3Bl
Y3Rvci5EYXRhYmFzZU9iamVjdCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgICAgICAgaWYgKCFtYXRjaE9uVHlwZUFsb25lICYmIHJlcHJlc2VudGVkT2JqZWN0Lmhvc3Qg
IT09IGNvbnRlbnRWaWV3Q29va2llLmhvc3QpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgICAgICAgaWYgKCFtYXRjaE9uVHlwZUFsb25lICYmIHJlcHJlc2VudGVkT2JqZWN0
Lm5hbWUgIT09IGNvbnRlbnRWaWV3Q29va2llLm5hbWUpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3Iu
UmVzb3VyY2VTaWRlYmFyUGFuZWwuRGF0YWJhc2VUYWJsZUNvbnRlbnRWaWV3Q29va2llVHlwZToK
LSAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzbid0IGVhc3kgdG8gaW1wbGVtZW50IGxpa2Ug
dGhlIG90aGVycyBzaW5jZSBEYXRhYmFzZVRyZWVFbGVtZW50Ci0gICAgICAgICAgICAvLyBwb3B1
bGF0ZXMgdGhlIHRhYmxlcyBpbnN0ZWFkIG9mIFJlc291cmNlU2lkZWJhclBhbmVsLiBKdXN0IHNl
bGVjdCB0aGUgZGF0YWJhc2UuCi0gICAgICAgICAgICBpZiAoIShyZXByZXNlbnRlZE9iamVjdCBp
bnN0YW5jZW9mIFdlYkluc3BlY3Rvci5EYXRhYmFzZU9iamVjdCkpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgaWYgKCFtYXRjaE9uVHlwZUFsb25lICYmIHJlcHJl
c2VudGVkT2JqZWN0Lmhvc3QgIT09IGNvbnRlbnRWaWV3Q29va2llLmhvc3QpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgaWYgKCFtYXRjaE9uVHlwZUFsb25lICYm
IHJlcHJlc2VudGVkT2JqZWN0Lm5hbWUgIT09IGNvbnRlbnRWaWV3Q29va2llLmRhdGFiYXNlKQot
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIHJldHVybjsKLQotICAg
ICAgICBjYXNlIFdlYkluc3BlY3Rvci5SZXNvdXJjZVNpZGViYXJQYW5lbC5ET01TdG9yYWdlQ29u
dGVudFZpZXdDb29raWVUeXBlOgotICAgICAgICAgICAgaWYgKCEocmVwcmVzZW50ZWRPYmplY3Qg
aW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZU9iamVjdCkpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgaWYgKCFtYXRjaE9uVHlwZUFsb25lICYmIHJl
cHJlc2VudGVkT2JqZWN0Lmhvc3QgIT09IGNvbnRlbnRWaWV3Q29va2llLmhvc3QpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgaWYgKCFtYXRjaE9uVHlwZUFsb25l
ICYmIHJlcHJlc2VudGVkT2JqZWN0LmlzTG9jYWxTdG9yYWdlKCkgIT09IGNvbnRlbnRWaWV3Q29v
a2llLmlzTG9jYWxTdG9yYWdlKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlJlc291cmNlU2lkZWJh
clBhbmVsLkFwcGxpY2F0aW9uQ2FjaGVDb250ZW50Vmlld0Nvb2tpZVR5cGU6Ci0gICAgICAgICAg
ICBpZiAoIShyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5BcHBsaWNh
dGlvbkNhY2hlRnJhbWUpKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIGlm
ICghbWF0Y2hPblR5cGVBbG9uZSAmJiByZXByZXNlbnRlZE9iamVjdC5mcmFtZS51cmwgIT09IGNv
bnRlbnRWaWV3Q29va2llLmZyYW1lKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
ICAgIGlmICghbWF0Y2hPblR5cGVBbG9uZSAmJiByZXByZXNlbnRlZE9iamVjdC5tYW5pZmVzdC5t
YW5pZmVzdFVSTCAhPT0gY29udGVudFZpZXdDb29raWUubWFuaWZlc3QpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgZGVmYXVsdDoK
LSAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCJVbmtub3duIGNvbnRlbnQgdmlldyBjb29raWUg
dHlwZS4iKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotCi0gICAgICAg
IC8vIElmIHdlIGdvdCBoZXJlLCB0aGVuIHRoZSB0cmVlIGVsZW1lbnQgd2FzIGEgbWF0Y2ggdG8g
dGhlIGNvbnRlbnQgdmlldyBjb29raWUuCi0gICAgICAgIC8vIFNlbGVjdGluZyB0aGUgdHJlZSBl
bGVtZW50IHdpbGwgY2F1c2UgdGhlIGNvbnRlbnQgdmlldyB0byBzaG93LgotICAgICAgICB0cmVl
RWxlbWVudC5yZXZlYWxBbmRTZWxlY3QodHJ1ZSwgdHJ1ZSk7Ci0KLSAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgfSwKLQogICAgIF9kb21TdG9yYWdlT2JqZWN0V2FzQWRkZWQ6IGZ1bmN0aW9uKGV2
ZW50KQogICAgIHsKICAgICAgICAgdmFyIGRvbVN0b3JhZ2UgPSBldmVudC5kYXRhLmRvbVN0b3Jh
Z2U7CkBAIC04NDIsOCArNjQ0LDYgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlU2lkZWJhclBhbmVs
LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX2xvY2FsU3RvcmFnZVJvb3RUcmVlRWxl
bWVudCA9IHRoaXMuX2FkZFN0b3JhZ2VDaGlsZChzdG9yYWdlRWxlbWVudCwgdGhpcy5fbG9jYWxT
dG9yYWdlUm9vdFRyZWVFbGVtZW50LCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkxvY2FsIFN0b3Jh
Z2UiKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHRoaXMuX3Nlc3Npb25TdG9yYWdlUm9v
dFRyZWVFbGVtZW50ID0gdGhpcy5fYWRkU3RvcmFnZUNoaWxkKHN0b3JhZ2VFbGVtZW50LCB0aGlz
Ll9zZXNzaW9uU3RvcmFnZVJvb3RUcmVlRWxlbWVudCwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJT
ZXNzaW9uIFN0b3JhZ2UiKSk7Ci0KLSAgICAgICAgdGhpcy5fY2hlY2tTdG9yYWdlVHJlZUVsZW1l
bnRBZ2FpbnN0UGVuZGluZ0NvbnRlbnRWaWV3Q29va2llKHN0b3JhZ2VFbGVtZW50KTsKICAgICB9
LAogCiAgICAgX2RvbVN0b3JhZ2VPYmplY3RXYXNJbnNwZWN0ZWQ6IGZ1bmN0aW9uKGV2ZW50KQpA
QCAtODY2LDggKzY2Niw2IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZVNpZGViYXJQYW5lbC5wcm90
b3R5cGUgPSB7CiAKICAgICAgICAgdmFyIGRhdGFiYXNlRWxlbWVudCA9IG5ldyBXZWJJbnNwZWN0
b3IuRGF0YWJhc2VUcmVlRWxlbWVudChkYXRhYmFzZSk7CiAgICAgICAgIHRoaXMuX2RhdGFiYXNl
SG9zdFRyZWVFbGVtZW50TWFwW2RhdGFiYXNlLmhvc3RdLmFwcGVuZENoaWxkKGRhdGFiYXNlRWxl
bWVudCk7Ci0KLSAgICAgICAgdGhpcy5fY2hlY2tTdG9yYWdlVHJlZUVsZW1lbnRBZ2FpbnN0UGVu
ZGluZ0NvbnRlbnRWaWV3Q29va2llKGRhdGFiYXNlRWxlbWVudCk7CiAgICAgfSwKIAogICAgIF9k
YXRhYmFzZVdhc0luc3BlY3RlZDogZnVuY3Rpb24oZXZlbnQpCkBAIC04ODMsOCArNjgxLDYgQEAg
V2ViSW5zcGVjdG9yLlJlc291cmNlU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKIAogICAgICAg
ICB2YXIgY29va2llRWxlbWVudCA9IG5ldyBXZWJJbnNwZWN0b3IuQ29va2llU3RvcmFnZVRyZWVF
bGVtZW50KGV2ZW50LmRhdGEuY29va2llU3RvcmFnZSk7CiAgICAgICAgIHRoaXMuX2Nvb2tpZVN0
b3JhZ2VSb290VHJlZUVsZW1lbnQgPSB0aGlzLl9hZGRTdG9yYWdlQ2hpbGQoY29va2llRWxlbWVu
dCwgdGhpcy5fY29va2llU3RvcmFnZVJvb3RUcmVlRWxlbWVudCwgV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJDb29raWVzIikpOwotCi0gICAgICAgIHRoaXMuX2NoZWNrU3RvcmFnZVRyZWVFbGVtZW50
QWdhaW5zdFBlbmRpbmdDb250ZW50Vmlld0Nvb2tpZShjb29raWVFbGVtZW50KTsKICAgICB9LAog
CiAgICAgX2ZyYW1lTWFuaWZlc3RBZGRlZDogZnVuY3Rpb24oZXZlbnQpCkBAIC05MDEsOCArNjk3
LDYgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKIAog
ICAgICAgICB2YXIgZnJhbWVDYWNoZUVsZW1lbnQgPSBuZXcgV2ViSW5zcGVjdG9yLkFwcGxpY2F0
aW9uQ2FjaGVGcmFtZVRyZWVFbGVtZW50KGZyYW1lTWFuaWZlc3QpOwogICAgICAgICB0aGlzLl9h
cHBsaWNhdGlvbkNhY2hlVVJMVHJlZUVsZW1lbnRNYXBbbWFuaWZlc3RVUkxdLmFwcGVuZENoaWxk
KGZyYW1lQ2FjaGVFbGVtZW50KTsKLQotICAgICAgICB0aGlzLl9jaGVja1N0b3JhZ2VUcmVlRWxl
bWVudEFnYWluc3RQZW5kaW5nQ29udGVudFZpZXdDb29raWUoZnJhbWVDYWNoZUVsZW1lbnQpOwog
ICAgIH0sCiAKICAgICBfZnJhbWVNYW5pZmVzdFJlbW92ZWQ6IGZ1bmN0aW9uKGV2ZW50KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvU2NyaXB0Q29udGVu
dFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9TY3JpcHRDb250
ZW50Vmlldy5qcwppbmRleCBiMTU2ZGQ0Mjg2ZGVkOGQ4ZGYxNTkwMzdjMTIxN2Y1NGVmMDlkZDc0
Li42M2QwZjA3YmQzYjJmNDk4YWMzYWYxZGI0MjY2N2I1YjNjMTc0N2E4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9TY3JpcHRDb250ZW50Vmlldy5qcwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9TY3JpcHRDb250ZW50Vmll
dy5qcwpAQCAtMTA3LDYgKzEwNywxOCBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0Q29udGVudFZpZXcu
cHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl90ZXh0RWRpdG9yLmNsb3NlKCk7CiAgICAgfSwK
IAorICAgIHNhdmVUb0Nvb2tpZTogZnVuY3Rpb24oY29va2llKQorICAgIHsKKyAgICAgICAgY29v
a2llLnR5cGUgPSBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXdDb29raWVUeXBlLlJlc291cmNlOwor
ICAgICAgICBjb29raWUudXJsID0gdGhpcy5yZXByZXNlbnRlZE9iamVjdC51cmw7CisgICAgfSwK
KworICAgIHJlc3RvcmVGcm9tQ29va2llOiBmdW5jdGlvbihjb29raWUpCisgICAgeworICAgICAg
ICBpZiAoImxpbmVOdW1iZXIiIGluIGNvb2tpZSAmJiAiY29sdW1uTnVtYmVyIiBpbiBjb29raWUp
CisgICAgICAgICAgICB0aGlzLnJldmVhbFBvc2l0aW9uKG5ldyBXZWJJbnNwZWN0b3IuU291cmNl
Q29kZVBvc2l0aW9uKGNvb2tpZS5saW5lTnVtYmVyLCBjb29raWUuY29sdW1uTnVtYmVyKSk7Cisg
ICAgfSwKKwogICAgIGdldCBzdXBwb3J0c1NhdmUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRy
dWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9TdG9y
YWdlTWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1N0b3Jh
Z2VNYW5hZ2VyLmpzCmluZGV4IGRiODNjZTJmNDg0MTczZDczOTUxNjYzNzRmM2ZhYjk5MzYzODBi
ZjguLjg5NWRhMTEzYzZjODVmNzdlZmRhZjA4ZmY2YjM1MDRkNmNkNjU2ODQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1N0b3JhZ2VNYW5hZ2VyLmpzCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1N0b3JhZ2VNYW5hZ2VyLmpz
CkBAIC0xNDcsNiArMTQ3LDU3IEBAIFdlYkluc3BlY3Rvci5TdG9yYWdlTWFuYWdlci5wcm90b3R5
cGUgPSB7CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rv
ci5TdG9yYWdlTWFuYWdlci5FdmVudC5ET01TdG9yYWdlT2JqZWN0V2FzSW5zcGVjdGVkLCB7ZG9t
U3RvcmFnZTogZG9tU3RvcmFnZX0pOwogICAgIH0sCiAKKyAgICBvYmplY3RGb3JDb29raWU6IGZ1
bmN0aW9uKGNvb2tpZSwgbWF0Y2hPblR5cGVBbG9uZSkKKyAgICB7CisgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KGNvb2tpZS50eXBlKTsKKworICAgICAgICB2YXIgZmluZE1hdGNoaW5nT2JqZWN0SW5B
cnJheSA9IGZ1bmN0aW9uIChhcnJheSwgbWF0Y2hlc0Z1bmN0aW9uKSB7CisgICAgICAgICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgKytpKQorICAgICAgICAgICAgICAgIGlm
IChtYXRjaGVzRnVuY3Rpb24uY2FsbChudWxsLCBhcnJheVtpXSkpCisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBhcnJheVtpXTsKKworICAgICAgICAgICAgcmV0dXJuIG1hdGNoT25UeXBlQWxv
bmUgJiYgYXJyYXkubGVuZ3RoID8gYXJyYXlbMF0gOiBudWxsOworICAgICAgICB9OworCisgICAg
ICAgIGlmIChjb29raWUudHlwZSA9PT0gV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29va2llVHlw
ZS5Db29raWVTdG9yYWdlKSB7CisgICAgICAgICAgICBpZiAodGhpcy5fY29va2llU3RvcmFnZU9i
amVjdHNbY29va2llLmhvc3RdKQorICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9jb29raWVT
dG9yYWdlT2JqZWN0c1tjb29raWUuaG9zdF07CisKKyAgICAgICAgICAgIGlmICghbWF0Y2hPblR5
cGVBbG9uZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKKworICAgICAgICAgICAgLy8g
SWYgd2UganVzdCB3YW50IGFueSBjb29raWUgc3RvcmFnZSBvYmplY3QsIHVzZSB0aGUgZmlyc3Qg
b25lLgorICAgICAgICAgICAgZm9yICh2YXIga2V5IGluIHRoaXMuX2Nvb2tpZVN0b3JhZ2VPYmpl
Y3RzKQorICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9jb29raWVTdG9yYWdlT2JqZWN0c1tr
ZXldOworCisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorCisgICAgICAgIGlm
IChjb29raWUudHlwZSA9PT0gV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29va2llVHlwZS5ET01T
dG9yYWdlKSB7CisgICAgICAgICAgICByZXR1cm4gZmluZE1hdGNoaW5nT2JqZWN0SW5BcnJheSh0
aGlzLl9kb21TdG9yYWdlT2JqZWN0cywgZnVuY3Rpb24ob2JqZWN0KSB7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIG9iamVjdC5ob3N0ID09PSBjb29raWUuaG9zdCAmJiBvYmplY3QuaXNMb2NhbFN0
b3JhZ2UoKSA9PT0gY29va2llLmlzTG9jYWxTdG9yYWdlOworICAgICAgICAgICAgfSk7CisgICAg
ICAgIH0KKworICAgICAgICBpZiAoY29va2llLnR5cGUgPT09IFdlYkluc3BlY3Rvci5Db250ZW50
Vmlld0Nvb2tpZVR5cGUuRGF0YWJhc2UpIHsKKyAgICAgICAgICAgIHJldHVybiBmaW5kTWF0Y2hp
bmdPYmplY3RJbkFycmF5KHRoaXMuX2RhdGFiYXNlT2JqZWN0cywgZnVuY3Rpb24ob2JqZWN0KSB7
CisgICAgICAgICAgICAgICAgcmV0dXJuIG9iamVjdC5ob3N0ID09PSBjb29raWUuaG9zdCAmJiBv
YmplY3QubmFtZSA9PT0gY29va2llLm5hbWU7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQor
CisgICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzbid0IGVhc3kgdG8gaW1wbGVtZW50IGxpa2UgdGhl
IG90aGVycyBzaW5jZSBEYXRhYmFzZVRyZWVFbGVtZW50CisgICAgICAgIC8vIGNyZWF0ZXMgZGF0
YWJhc2UgdGFibGUgb2JqZWN0cywgYW5kIHRoZXkgYXJlbid0IGtub3duIGJ5IFN0b3JhZ2VNYW5h
Z2VyLiBKdXN0CisgICAgICAgIC8vIGRpc3BsYXkgdGhlIGRhdGFiYXNlIGluc3RlYWQuCisgICAg
ICAgIGlmIChjb29raWUudHlwZSA9PT0gV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29va2llVHlw
ZS5EYXRhYmFzZVRhYmxlKSB7CisgICAgICAgICAgICByZXR1cm4gZmluZE1hdGNoaW5nT2JqZWN0
SW5BcnJheSh0aGlzLl9kYXRhYmFzZU9iamVjdHMsIGZ1bmN0aW9uKG9iamVjdCkgeworICAgICAg
ICAgICAgICAgIHJldHVybiBvYmplY3QuaG9zdCA9PT0gY29va2llLmhvc3QgJiYgb2JqZWN0LmRh
dGFiYXNlID09PSBjb29raWUubmFtZTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisKKyAg
ICAgICAgY29uc29sZS5hc3NlcnQoIlVua25vd24gY29udGVudCB2aWV3IGNvb2tpZTogIiwgY29v
a2llKTsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfSwKKwogICAgIC8vIFByaXZhdGUKIAog
ICAgIF9tYWluUmVzb3VyY2VEaWRDaGFuZ2U6IGZ1bmN0aW9uKGV2ZW50KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGltZWxpbmVNYW5hZ2VyLmpzIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGltZWxpbmVNYW5hZ2VyLmpzCmlu
ZGV4IGU0M2YxOTNlYWMzODhlNDNiZTExN2RjNjZlOTkyZGM2ZGNiZjljMzAuLmExYWQ0NmU0OGIw
YTVmNTcxOGU5MmUyYTBiMGQ0MTNkODI1ZWQ2OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1RpbWVsaW5lTWFuYWdlci5qcworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UaW1lbGluZU1hbmFnZXIuanMKQEAgLTM2LDYgKzM2
LDcgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lTWFuYWdlciA9IGZ1bmN0aW9uKCkKICAgICB0aGlz
Ll90eXBlUmVjb3JkcyA9IHt9OwogICAgIHRoaXMuX2xvYWRFdmVudFRpbWUgPSBOYU47CiAgICAg
dGhpcy5fZXZlbnRNYXJrZXJzID0gW107CisgICAgdGhpcy5fdGltZWxpbmVzT2JqZWN0ID0gbmV3
IFdlYkluc3BlY3Rvci5UaW1lbGluZXNPYmplY3Q7CiB9OwogCiBXZWJJbnNwZWN0b3IuVGltZWxp
bmVNYW5hZ2VyLkV2ZW50ID0gewpAQCAtNzUsNiArNzYsMTEgQEAgV2ViSW5zcGVjdG9yLlRpbWVs
aW5lTWFuYWdlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiB0aGlzLl9yZWNvcmRzOwog
ICAgIH0sCiAKKyAgICBnZXQgdGltZWxpbmVzKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlz
Ll90aW1lbGluZXNPYmplY3Q7CisgICAgfSwKKwogICAgIHJlY29yZHNXaXRoVHlwZTogZnVuY3Rp
b24odHlwZSkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl90eXBlUmVjb3Jkc1t0eXBlXSB8
fCBbXTsKQEAgLTI5Myw2ICsyOTksMTEgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lTWFuYWdlci5w
cm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9sb2FkRXZlbnRUaW1lID0gdGltZXN0YW1w
OwogICAgIH0sCiAKKyAgICBvYmplY3RGb3JDb29raWU6IGZ1bmN0aW9uKGNvb2tpZSkKKyAgICB7
CisgICAgICAgIHJldHVybiB0aGlzLnRpbWVsaW5lczsKKyAgICB9LAorCiAgICAgLy8gUHJpdmF0
ZQogCiAgICAgX2NsZWFyOiBmdW5jdGlvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9UaW1lbGluZXNDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1RpbWVsaW5lc0NvbnRlbnRWaWV3LmpzCmluZGV4IDc5
MDVhNDg5MmM0NjFkMzViNTMzZDgzYWQ1ZDc4NjEyMjRjNjkxOTkuLjE5ODRhZTM3MWY4NTM4NDhm
YzAwNDBhZGMzNDY1MWU4MmVkMDZkMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1RpbWVsaW5lc0NvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1RpbWVsaW5lc0NvbnRlbnRWaWV3LmpzCkBAIC0zMzUs
NiArMzM1LDE3IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZXNDb250ZW50Vmlldy5wcm90b3R5cGUg
PSB7CiAgICAgICAgICAgICB0aGlzLl9jdXJyZW50RGF0YUdyaWQuaGlkZGVuKCk7CiAgICAgfSwK
IAorICAgIHNhdmVUb0Nvb2tpZTogZnVuY3Rpb24oY29va2llKQorICAgIHsKKyAgICAgICAgY29v
a2llLnR5cGUgPSBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXdDb29raWVUeXBlLlRpbWVsaW5lczsK
KyAgICAgICAgY29va2llLnRpbWVsaW5lID0gdGhpcy5fY3VycmVudFJlY29yZFR5cGVTZXR0aW5n
LnZhbHVlOworICAgIH0sCisKKyAgICByZXN0b3JlRnJvbUNvb2tpZTogZnVuY3Rpb24oY29va2ll
KQorICAgIHsKKyAgICAgICAgdGhpcy5zaG93VGltZWxpbmVGb3JSZWNvcmRUeXBlKGNvb2tpZS50
aW1lbGluZSk7CisgICAgfSwKKwogICAgIHRpbWVsaW5lT3ZlcnZpZXdSZWNvcmRzV2l0aFR5cGU6
IGZ1bmN0aW9uKHR5cGUpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZmlsdGVyUmVjb3Jk
c1dpdGhUeXBlKFdlYkluc3BlY3Rvci50aW1lbGluZU1hbmFnZXIucmVjb3Jkc1dpdGhUeXBlKHR5
cGUpLCB0eXBlKTsKQEAgLTQ0Nyw3ICs0NTgsNyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVzQ29u
dGVudFZpZXcucHJvdG90eXBlID0gewogICAgICAgICBpZiAoaXNTY3JvbGxlZFRvTGFzdFJvdykK
ICAgICAgICAgICAgIHRoaXMuX2N1cnJlbnREYXRhR3JpZC5zY3JvbGxUb0xhc3RSb3coKTsKICAg
ICB9LAotICAgIAorCiAgICAgX3VwZGF0ZUNhbGN1bGF0b3JCb3VuZHNGb3JQZW5kaW5nUmVjb3Jk
c0FuZEV2ZW50TWFya2VyczogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgdmFyIGN1cnJlbnRE
YXRhR3JpZCA9IHRoaXMuX2N1cnJlbnREYXRhR3JpZDsKQEAgLTY4NSw3ICs2OTYsNyBAQCBXZWJJ
bnNwZWN0b3IuVGltZWxpbmVzQ29udGVudFZpZXcucHJvdG90eXBlID0gewogICAgICAgICB9KTsK
IAogICAgICAgICBzY29wZUJhckl0ZW1zLnVuc2hpZnQobmV3IFdlYkluc3BlY3Rvci5TY29wZUJh
ckl0ZW0ocHJlZml4ICsgInR5cGUtYWxsIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJBbGwiKSwg
dHJ1ZSkpOwotICAgICAgICAKKwogICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5TY29w
ZUJhcihwcmVmaXggKyAic2NvcGUtYmFyIiwgc2NvcGVCYXJJdGVtcywgc2NvcGVCYXJJdGVtc1sw
XSk7CiAgICAgfSwKIApAQCAtNzA3LDE0ICs3MTgsMTQgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5l
c0NvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFyIG5vZGVzID0gcmVjb3Jkcy5t
YXAoZnVuY3Rpb24ocmVjb3JkKSB7CiAgICAgICAgICAgICByZXR1cm4gdGhpcy5fY3JlYXRlRGF0
YUdyaWROb2RlRm9yUmVjb3JkKHJlY29yZCk7CiAgICAgICAgIH0sIHRoaXMpOwotICAgICAgICAK
KwogICAgICAgICBkYXRhR3JpZC5yZW1vdmVDaGlsZHJlbigpOwogICAgICAgICBub2Rlcy5zb3J0
KHRoaXMuX3NvcnRDb21wYXJhdG9yLmJpbmQodGhpcykpLmZvckVhY2goZnVuY3Rpb24obm9kZSkg
ewogICAgICAgICAgICAgZGF0YUdyaWQuYXBwZW5kQ2hpbGQobm9kZSk7CiAgICAgICAgIH0pOwog
CiAgICAgICAgIGRlbGV0ZSB0aGlzLl9wZW5kaW5nUmVmcmVzaEdyaWROb2Rlc1tyZWNvcmRUeXBl
XTsKLSAgICAgICAgCisKICAgICAgICAgdGhpcy5fdXBkYXRlT2Zmc2NyZWVuUm93cygpOwogICAg
IH0sCiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>