<?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>129898</bug_id>
          
          <creation_ts>2014-03-07 12:24:50 -0800</creation_ts>
          <short_desc>Web Inspector: convert the dashboard toolbar item to support multiple dashboards</short_desc>
          <delta_ts>2014-03-10 11:01:35 -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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>129913</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Blaze Burg">bburg</reporter>
          <assigned_to name="Blaze Burg">bburg</assigned_to>
          <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>988263</commentid>
    <comment_count>0</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2014-03-07 12:24:50 -0800</bug_when>
    <thetext>And fix weird layering problems. Patch soon!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>988337</commentid>
    <comment_count>1</comment_count>
      <attachid>226166</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2014-03-07 13:59:55 -0800</bug_when>
    <thetext>Created attachment 226166
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>988363</commentid>
    <comment_count>2</comment_count>
      <attachid>226166</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2014-03-07 14:37:44 -0800</bug_when>
    <thetext>Comment on attachment 226166
the patch

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

&gt; Source/WebInspectorUI/UserInterface/Controllers/DashboardManager.js:43
&gt; +        return this._containerView.toolbarItem;

The manager holding the view is a layering violation, but this is much better than before.

Main.js should just make the manager and the view separately.

&gt; Source/WebInspectorUI/UserInterface/Views/DashboardContainerView.js:79
&gt; +        // Iterate over all the known content views for the representedObject (if any) and find one that doesn&apos;t
&gt; +        // have a parent container or has this container as its parent.
&gt; +        var dashboardView = null;
&gt; +        for (var i = 0; representedObject.__dashboardViews &amp;&amp; i &lt; representedObject.__dashboardViews.length; ++i) {
&gt; +            var currentDashboardView = representedObject.__dashboardViews[i];
&gt; +            if (!currentDashboardView._parentContainer || currentDashboardView._parentContainer === this) {
&gt; +                dashboardView = currentDashboardView;
&gt; +                break;
&gt; +            }
&gt; +        }

This could be simplified. We don&apos;t plan to support multiple dashboard container views, do we?

&gt; Source/WebInspectorUI/UserInterface/Views/DashboardContainerView.js:96
&gt; +        // Remember this content view for future calls.
&gt; +        if (!representedObject.__dashboardViews)
&gt; +            representedObject.__dashboardViews = [];
&gt; +        representedObject.__dashboardViews.push(dashboardView);

Ditto.

&gt; Source/WebInspectorUI/UserInterface/Views/DashboardView.js:23
&gt; - * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS&apos;&apos;
&gt; - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
&gt; - * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
&gt; - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
&gt; - * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
&gt; - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
&gt; - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
&gt; - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
&gt; - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
&gt; - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
&gt; - * THE POSSIBILITY OF SUCH DAMAGE.
&gt; + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
&gt; + * &quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
&gt; + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
&gt; + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
&gt; + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
&gt; + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
&gt; + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
&gt; + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
&gt; + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
&gt; + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
&gt; + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

This should use the Apple BSD license.

&gt; Source/WebInspectorUI/UserInterface/Views/DefaultDashboardView.js:23
&gt; + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
&gt; + * &quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
&gt; + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
&gt; + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
&gt; + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
&gt; + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
&gt; + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
&gt; + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
&gt; + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
&gt; + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
&gt; + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Ditto.

&gt; Source/WebInspectorUI/UserInterface/Views/DefaultDashboardView.js:153
&gt; +        var iVarName = &quot;_&quot; + itemName;
&gt; +        var previousValue = this[iVarName];
&gt; +        this[iVarName] = newValue;

This isn&apos;t new, but it is gross!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>988416</commentid>
    <comment_count>3</comment_count>
      <attachid>226166</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-03-07 16:22:31 -0800</bug_when>
    <thetext>Comment on attachment 226166
the patch

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

&gt; Source/WebInspectorUI/UserInterface/Controllers/DashboardManager.js:30
&gt; +    this._defaultDashboard = new WebInspector.DefaultDashboard();

Style: No need for the &quot;()&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>988783</commentid>
    <comment_count>4</comment_count>
      <attachid>226273</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2014-03-09 19:43:17 -0700</bug_when>
    <thetext>Created attachment 226273
revised patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>988875</commentid>
    <comment_count>5</comment_count>
      <attachid>226273</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2014-03-10 06:00:49 -0700</bug_when>
    <thetext>Comment on attachment 226273
revised patch

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

Code looks fine but the licenses need fixed.

&gt; Source/WebInspectorUI/UserInterface/Models/DefaultDashboard.js:13
&gt; + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS

Should be the Apple version:
* THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS
etc.

We likely should fix up the other existing files (I see 23 UI files using this version vs 366 using the Apple version). But at minimum, new files should use the Apple version.

&gt; Source/WebInspectorUI/UserInterface/Views/DashboardContainerView.css:13
&gt; + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS

Ditto.

&gt; Source/WebInspectorUI/UserInterface/Views/DashboardContainerView.js:13
&gt; + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS

Ditto.

&gt; Source/WebInspectorUI/UserInterface/Views/DashboardView.js:23
&gt; - * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS&apos;&apos;
&gt; - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
&gt; - * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
&gt; - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
&gt; - * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
&gt; - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
&gt; - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
&gt; - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
&gt; - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
&gt; - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
&gt; - * THE POSSIBILITY OF SUCH DAMAGE.
&gt; + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
&gt; + * &quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
&gt; + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
&gt; + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
&gt; + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
&gt; + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
&gt; + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
&gt; + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
&gt; + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
&gt; + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
&gt; + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

This should still be reverted.

&gt; Source/WebInspectorUI/UserInterface/Views/DefaultDashboardView.css:13
&gt; + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS

Should be the Apple version.

&gt; Source/WebInspectorUI/UserInterface/Views/DefaultDashboardView.js:13
&gt; + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>988949</commentid>
    <comment_count>6</comment_count>
      <attachid>226273</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2014-03-10 10:45:09 -0700</bug_when>
    <thetext>Comment on attachment 226273
revised patch

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

&gt;&gt; Source/WebInspectorUI/UserInterface/Models/DefaultDashboard.js:13
&gt;&gt; + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
&gt; 
&gt; Should be the Apple version:
&gt; * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS
&gt; etc.
&gt; 
&gt; We likely should fix up the other existing files (I see 23 UI files using this version vs 366 using the Apple version). But at minimum, new files should use the Apple version.

I wasn&apos;t aware there was any difference aside from the apple one having less aesthetically pleasing line breaking. will revert.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>988954</commentid>
    <comment_count>7</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2014-03-10 11:01:35 -0700</bug_when>
    <thetext>Committed r165382: &lt;http://trac.webkit.org/changeset/165382&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>226166</attachid>
            <date>2014-03-07 13:59:55 -0800</date>
            <delta_ts>2014-03-09 19:43:15 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>bug-129898-20140307140120.patch</filename>
            <type>text/plain</type>
            <size>66204</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY1Mjc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCAx
MWZmNWI4ZGYwODU1MWNjZjY3YmVmNmQyNjI3YmZjZDcwZTI4YWYyLi4zNmIxN2MxMGEzYzFjMzRm
NzY0ODgzZmUxODE5NTUyZjMyNDRmZjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMjAgQEAKKzIwMTQtMDMtMDcgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgV2ViIEluc3BlY3RvcjogY29udmVydCB0aGUgZGFzaGJvYXJkIHRvb2xiYXIgaXRl
bSB0byBzdXBwb3J0IG11bHRpcGxlIGRhc2hib2FyZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyOTg5OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIHdhbnQgdG8gYWJpbGl0eSB0byBzd2FwIGluIGFu
ZCBvdXQgZGlmZmVyZW50IGRhc2hib2FyZCBjb250ZW50cyBkZXBlbmRpbmcgb24KKyAgICAgICAg
Y2lyY3Vtc3RhbmNlcyBzdWNoIGFzIGRlYnVnZ2VyIGFjdGl2aXR5IGFuZCBwYWdlIGxvYWRpbmcu
IFRoaXMgcGF0Y2ggY29udmVydHMgdGhlCisgICAgICAgIGV4aXN0aW5nIGhhcmQtY29kZWQgZGFz
aGJvYXJkIGltcGxlbWVudGF0aW9uIHRvIGZvbGxvdyB0aGUgY29udGFpbmVyLWJhc2VkIGFwcHJv
YWNoCisgICAgICAgIHVzZWQgYnkgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29udGFpbmVyLgor
CisgICAgICAgIEFzIHBhcnQgb2YgdGhlIHJlZmFjdG9yaW5nLCB3ZSBpbnRyb2R1Y2UgZGFzaGJv
YXJkIG1vZGVsIG9iamVjdHMgdG8gc3RvcmUgcGVyc2lzdGVudAorICAgICAgICBkYXNoYm9hcmQg
ZGF0YS4gU29tZSBDU1MgaGFzIGFsc28gYmVlbiBzcGxpdCBiZXR3ZWVuIHRoZSBjb250YWluZXIg
YW5kIHNwZWNpZmljIGRhc2hib2FyZC4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJv
bGxlcnMvRGFzaGJvYXJkTWFuYWdlci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXNoYm9h
cmRNYW5hZ2VyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXNoYm9hcmRNYW5hZ2VyLnByb3Rv
dHlwZS5nZXQgdG9vbGJhckl0ZW0pOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTWFpbi5odG1s
OgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxzL0RlZmF1bHREYXNoYm9hcmQuanM6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJz
L0Rhc2hib2FyZE1hbmFnZXIuanMuCisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVmYXVsdERhc2hi
b2FyZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVmYXVsdERhc2hib2FyZC5wcm90b3R5cGUu
Z2V0IHJlc291cmNlc0NvdW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWZhdWx0RGFzaGJv
YXJkLnByb3RvdHlwZS5zZXQgcmVzb3VyY2VzQ291bnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkRlZmF1bHREYXNoYm9hcmQucHJvdG90eXBlLmdldCByZXNvdXJjZXNTaXplKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5EZWZhdWx0RGFzaGJvYXJkLnByb3RvdHlwZS5zZXQgcmVzb3VyY2VzU2l6
ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVmYXVsdERhc2hib2FyZC5wcm90b3R5cGUuZ2V0
IHRpbWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlZmF1bHREYXNoYm9hcmQucHJvdG90eXBl
LnNldCB0aW1lKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWZhdWx0RGFzaGJvYXJkLnByb3Rv
dHlwZS5nZXQgbG9ncyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVmYXVsdERhc2hib2FyZC5w
cm90b3R5cGUuc2V0IGxvZ3MpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlZmF1bHREYXNoYm9h
cmQucHJvdG90eXBlLmdldCBlcnJvcnMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlZmF1bHRE
YXNoYm9hcmQucHJvdG90eXBlLnNldCBlcnJvcnMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRl
ZmF1bHREYXNoYm9hcmQucHJvdG90eXBlLmdldCBpc3N1ZXMpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkRlZmF1bHREYXNoYm9hcmQucHJvdG90eXBlLnNldCBpc3N1ZXMpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkRlZmF1bHREYXNoYm9hcmQucHJvdG90eXBlLl9kYXRhRGlkQ2hhbmdlKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5EZWZhdWx0RGFzaGJvYXJkLnByb3RvdHlwZS5fbWFpblJlc291
cmNlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWZhdWx0RGFzaGJvYXJkLnBy
b3RvdHlwZS5fcmVjb3JkaW5nU3RvcHBlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVmYXVs
dERhc2hib2FyZC5wcm90b3R5cGUuX3Jlc291cmNlV2FzQWRkZWQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkRlZmF1bHREYXNoYm9hcmQucHJvdG90eXBlLl9mcmFtZVdhc0FkZGVkKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5EZWZhdWx0RGFzaGJvYXJkLnByb3RvdHlwZS5fcmVzb3VyY2VTaXpl
RGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWZhdWx0RGFzaGJvYXJkLnByb3Rv
dHlwZS5fc3RhcnRVcGRhdGluZ1RpbWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlZmF1bHRE
YXNoYm9hcmQucHJvdG90eXBlLl9zdG9wVXBkYXRpbmdUaW1lKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5EZWZhdWx0RGFzaGJvYXJkLnByb3RvdHlwZS5fdXBkYXRlVGltZSk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuRGVmYXVsdERhc2hib2FyZC5wcm90b3R5cGUuX2NvbnNvbGVNZXNzYWdlQWRk
ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlZmF1bHREYXNoYm9hcmQucHJvdG90eXBlLl9j
b25zb2xlTWVzc2FnZVdhc1JlcGVhdGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWZhdWx0
RGFzaGJvYXJkLnByb3RvdHlwZS5faW5jcmVtZW50Q29uc29sZU1lc3NhZ2VUeXBlKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5EZWZhdWx0RGFzaGJvYXJkLnByb3RvdHlwZS5fY29uc29sZVdhc0Ns
ZWFyZWQpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvRGFzaGJvYXJkQ29udGFpbmVy
Vmlldy5jc3M6IEFkZGVkLgorICAgICAgICAoLnRvb2xiYXIgLmRhc2hib2FyZC1jb250YWluZXIp
OgorICAgICAgICAoYm9keS53aW5kb3ctaW5hY3RpdmUgLnRvb2xiYXIgLmRhc2hib2FyZC1jb250
YWluZXIpOgorICAgICAgICAoYm9keS5qYXZhc2NyaXB0IC50b29sYmFyIC5kYXNoYm9hcmQtY29u
dGFpbmVyKToKKyAgICAgICAgKC50b29sYmFyLm5vcm1hbC1zaXplLmljb24tYW5kLWxhYmVsLXZl
cnRpY2FsIC5kYXNoYm9hcmQtY29udGFpbmVyKToKKyAgICAgICAgKC50b29sYmFyLnNtYWxsLXNp
emUuaWNvbi1hbmQtbGFiZWwtaG9yaXpvbnRhbCAuZGFzaGJvYXJkLWNvbnRhaW5lcik6CisgICAg
ICAgICgudG9vbGJhci5ub3JtYWwtc2l6ZS5pY29uLWFuZC1sYWJlbC1ob3Jpem9udGFsIC5kYXNo
Ym9hcmQtY29udGFpbmVyKToKKyAgICAgICAgKC50b29sYmFyIC5kYXNoYm9hcmQpOgorICAgICAg
ICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvRGFzaGJvYXJkQ29udGFpbmVyVmlldy5qczogQWRkZWQu
CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGFzaGJvYXJkQ29udGFpbmVyVmlldyk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuRGFzaGJvYXJkQ29udGFpbmVyVmlldy5wcm90b3R5cGUuZ2V0IHRvb2xi
YXJJdGVtKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXNoYm9hcmRDb250YWluZXJWaWV3LnBy
b3RvdHlwZS5nZXQgY3VycmVudERhc2hib2FyZFZpZXcpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkRhc2hib2FyZENvbnRhaW5lclZpZXcucHJvdG90eXBlLnNob3dEYXNoYm9hcmRWaWV3Rm9yUmVw
cmVzZW50ZWRPYmplY3QpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRhc2hib2FyZENvbnRhaW5l
clZpZXcucHJvdG90eXBlLl9kYXNoYm9hcmRWaWV3Rm9yUmVwcmVzZW50ZWRPYmplY3QpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkRhc2hib2FyZENvbnRhaW5lclZpZXcucHJvdG90eXBlLl9zaG93
RGFzaGJvYXJkVmlldyk6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9EYXNoYm9hcmRW
aWV3LmNzczogUmVtb3ZlZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0Rhc2hib2Fy
ZFZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGFzaGJvYXJkVmlldyk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuRGFzaGJvYXJkVmlldy5wcm90b3R5cGUuZ2V0IGVsZW1lbnQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkRhc2hib2FyZFZpZXcucHJvdG90eXBlLmdldCBwYXJlbnRDb250
YWluZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRhc2hib2FyZFZpZXcucHJvdG90eXBlLmdl
dCByZXByZXNlbnRlZE9iamVjdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGFzaGJvYXJkVmll
dy5wcm90b3R5cGUuc2hvd24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRhc2hib2FyZFZpZXcu
cHJvdG90eXBlLmhpZGRlbik6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9EZWZhdWx0
RGFzaGJvYXJkVmlldy5jc3M6IEFkZGVkLgorICAgICAgICAoYm9keS53ZWIgLnRvb2xiYXIuY29s
bGFwc2VkIC5kYXNoYm9hcmQuZGVmYXVsdCA+IC5sb2dzKToKKyAgICAgICAgKGJvZHkuamF2YXNj
cmlwdCAudG9vbGJhciAuZGFzaGJvYXJkLmRlZmF1bHQgPiAucmVzb3VyY2VzQ291bnQpOgorICAg
ICAgICAoLnRvb2xiYXIgLmRhc2hib2FyZC5kZWZhdWx0KToKKyAgICAgICAgKC50b29sYmFyIC5k
YXNoYm9hcmQuZGVmYXVsdCA+IC5pdGVtKToKKyAgICAgICAgKC50b29sYmFyIC5kYXNoYm9hcmQu
ZGVmYXVsdCA+IC5yZXNvdXJjZXNTaXplKToKKyAgICAgICAgKC50b29sYmFyIC5kYXNoYm9hcmQu
ZGVmYXVsdCA+IC5pdGVtLmVuYWJsZWQ6aG92ZXIpOgorICAgICAgICAoLnRvb2xiYXIgLmRhc2hi
b2FyZC5kZWZhdWx0ID4gLml0ZW0uZW5hYmxlZDphY3RpdmUpOgorICAgICAgICAoLnRvb2xiYXIg
LmRhc2hib2FyZC5kZWZhdWx0ID4gLml0ZW0gPiAqKToKKyAgICAgICAgKC50b29sYmFyIC5kYXNo
Ym9hcmQuZGVmYXVsdCA+IC5pdGVtID4gaW1nKToKKyAgICAgICAgKC50b29sYmFyIC5kYXNoYm9h
cmQuZGVmYXVsdCA+IC5pdGVtLmVuYWJsZWQgPiBpbWcpOgorICAgICAgICAoLnRvb2xiYXIgLmRh
c2hib2FyZC5kZWZhdWx0ID4gLml0ZW0uZW5hYmxlZDpob3ZlciA+IGltZyk6CisgICAgICAgICgu
dG9vbGJhciAuZGFzaGJvYXJkLmRlZmF1bHQgPiAuaXRlbSA+IGRpdik6CisgICAgICAgICgudG9v
bGJhciAuZGFzaGJvYXJkLmRlZmF1bHQgPiAuaXRlbS5lbmFibGVkID4gZGl2KToKKyAgICAgICAg
KC50b29sYmFyIC5kYXNoYm9hcmQuZGVmYXVsdCA+IC5pdGVtLmVuYWJsZWQ6aG92ZXIgPiBkaXYp
OgorICAgICAgICAoLnRvb2xiYXIgLmRhc2hib2FyZC5kZWZhdWx0ID4gLnJlc291cmNlc0NvdW50
ID4gaW1nKToKKyAgICAgICAgKC50b29sYmFyIC5kYXNoYm9hcmQuZGVmYXVsdCA+IC50aW1lID4g
aW1nKToKKyAgICAgICAgKC50b29sYmFyIC5kYXNoYm9hcmQuZGVmYXVsdCA+IC5sb2dzID4gaW1n
KToKKyAgICAgICAgKC50b29sYmFyIC5kYXNoYm9hcmQuZGVmYXVsdCA+IC5yZXNvdXJjZXNTaXpl
ID4gaW1nKToKKyAgICAgICAgKC50b29sYmFyIC5kYXNoYm9hcmQuZGVmYXVsdCA+IC5lcnJvcnMg
PiBpbWcpOgorICAgICAgICAoLnRvb2xiYXIgLmRhc2hib2FyZC5kZWZhdWx0ID4gLmVycm9ycy5l
bmFibGVkID4gaW1nKToKKyAgICAgICAgKC50b29sYmFyIC5kYXNoYm9hcmQuZGVmYXVsdCA+IC5l
cnJvcnMuZW5hYmxlZDpob3ZlciA+IGltZyk6CisgICAgICAgICgudG9vbGJhciAuZGFzaGJvYXJk
LmRlZmF1bHQgPiAuZXJyb3JzLmVuYWJsZWQgPiBkaXYpOgorICAgICAgICAoLnRvb2xiYXIgLmRh
c2hib2FyZC5kZWZhdWx0ID4gLmVycm9ycy5lbmFibGVkOmhvdmVyID4gZGl2KToKKyAgICAgICAg
KC50b29sYmFyIC5kYXNoYm9hcmQuZGVmYXVsdCA+IC5pc3N1ZXMgPiBpbWcpOgorICAgICAgICAo
LnRvb2xiYXIgLmRhc2hib2FyZC5kZWZhdWx0ID4gLmlzc3Vlcy5lbmFibGVkID4gaW1nKToKKyAg
ICAgICAgKC50b29sYmFyIC5kYXNoYm9hcmQuZGVmYXVsdCA+IC5pc3N1ZXMuZW5hYmxlZDpob3Zl
ciA+IGltZyk6CisgICAgICAgICgudG9vbGJhciAuZGFzaGJvYXJkLmRlZmF1bHQgPiAuaXNzdWVz
LmVuYWJsZWQgPiBkaXYpOgorICAgICAgICAoLnRvb2xiYXIgLmRhc2hib2FyZC5kZWZhdWx0ID4g
Lmlzc3Vlcy5lbmFibGVkOmhvdmVyID4gZGl2KToKKyAgICAgICAgKC50b29sYmFyIC5kYXNoYm9h
cmQuZGVmYXVsdCA+IC5pdGVtLnB1bHNpbmcpOgorICAgICAgICAoQC13ZWJraXQta2V5ZnJhbWVz
IGNvbnNvbGUtaXRlbS1wdWxzZSk6CisgICAgICAgICgudG9vbGJhci5zbWFsbC1zaXplLmljb24t
YW5kLWxhYmVsLWhvcml6b250YWwgLmRhc2hib2FyZC5kZWZhdWx0ID4gLml0ZW0pOgorICAgICAg
ICAoLnRvb2xiYXIubm9ybWFsLXNpemUuaWNvbi1hbmQtbGFiZWwtaG9yaXpvbnRhbCAuZGFzaGJv
YXJkLmRlZmF1bHQgPiAuaXRlbSk6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9EZWZh
dWx0RGFzaGJvYXJkVmlldy5qczogQ29waWVkIGZyb20gU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvRGFzaGJvYXJkVmlldy5qcy4KKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5EZWZhdWx0RGFzaGJvYXJkVmlldyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVmYXVsdERh
c2hib2FyZFZpZXcucHJvdG90eXBlLl91cGRhdGVEaXNwbGF5KToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5EZWZhdWx0RGFzaGJvYXJkVmlldy5wcm90b3R5cGUuX2Zvcm1hdFBvc3NpYmxlTGFyZ2VO
dW1iZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlZmF1bHREYXNoYm9hcmRWaWV3LnByb3Rv
dHlwZS5fYXBwZW5kRWxlbWVudEZvck5hbWVkSXRlbS4pOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkRlZmF1bHREYXNoYm9hcmRWaWV3LnByb3RvdHlwZS5fYXBwZW5kRWxlbWVudEZvck5hbWVkSXRl
bS5zZXQgaXRlbSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVmYXVsdERhc2hib2FyZFZpZXcu
cHJvdG90eXBlLl9hcHBlbmRFbGVtZW50Rm9yTmFtZWRJdGVtKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5EZWZhdWx0RGFzaGJvYXJkVmlldy5wcm90b3R5cGUuX2l0ZW1XYXNDbGlja2VkKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5EZWZhdWx0RGFzaGJvYXJkVmlldy5wcm90b3R5cGUuX3Jlc291
cmNlc1dhc0NsaWNrZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlZmF1bHREYXNoYm9hcmRW
aWV3LnByb3RvdHlwZS5fbmV0d29ya0l0ZW1XYXNDbGlja2VkKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5EZWZhdWx0RGFzaGJvYXJkVmlldy5wcm90b3R5cGUuX2NvbnNvbGVJdGVtV2FzQ2xpY2tl
ZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVmYXVsdERhc2hib2FyZFZpZXcucHJvdG90eXBl
LmFuaW1hdGlvbkVuZGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWZhdWx0RGFzaGJvYXJk
Vmlldy5wcm90b3R5cGUuX3NldENvbnNvbGVJdGVtVmFsdWUpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkRlZmF1bHREYXNoYm9hcmRWaWV3LnByb3RvdHlwZS5fc2V0SXRlbUVuYWJsZWQpOgorCiAy
MDE0LTAzLTA0ICBCcmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgogCiAgICAgICAgIEluc3Bl
Y3RvciBkb2VzIG5vdCByZXN0b3JlIGJyZWFrcG9pbnRzIGFmdGVyIGEgcGFnZSByZWxvYWQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJz
L0Rhc2hib2FyZE1hbmFnZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Db250cm9sbGVycy9EYXNoYm9hcmRNYW5hZ2VyLmpzCmluZGV4IGZhZDhiM2QwZDI0YjExYjA2
NTE1YTJiZGNmYjE5Zjg0NGIxZDU3MmUuLmI5YTZiMTBlMThiZTEzOGU3ZjdhYmQyNmNhODVjMGQz
ZmIyNWRmNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L0NvbnRyb2xsZXJzL0Rhc2hib2FyZE1hbmFnZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRGFzaGJvYXJkTWFuYWdlci5qcwpAQCAtMjYs
MTYyICsyNiwyMCBAQAogV2ViSW5zcGVjdG9yLkRhc2hib2FyZE1hbmFnZXIgPSBmdW5jdGlvbigp
IHsKICAgICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CiAKLSAgICB0aGlzLnRvb2xi
YXJJdGVtID0gbmV3IFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uSXRlbSgiZGFzaGJvYXJkIiwgImdy
b3VwIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJBY3Rpdml0eSBWaWV3ZXIiKSk7Ci0gICAgdGhp
cy5fdmlldyA9IG5ldyBXZWJJbnNwZWN0b3IuRGFzaGJvYXJkVmlldyh0aGlzLnRvb2xiYXJJdGVt
LmVsZW1lbnQpOworICAgIHRoaXMuX2Rhc2hib2FyZHMgPSBbXTsKKyAgICB0aGlzLl9kZWZhdWx0
RGFzaGJvYXJkID0gbmV3IFdlYkluc3BlY3Rvci5EZWZhdWx0RGFzaGJvYXJkKCk7CisgICAgdGhp
cy5fZGFzaGJvYXJkcy5wdXNoKHRoaXMuX2RlZmF1bHREYXNoYm9hcmQpOwogCi0gICAgdGhpcy5f
d2FpdGluZ0ZvckZpcnN0TWFpblJlc291cmNlVG9TdGFydFRyYWNraW5nU2l6ZSA9IHRydWU7Ci0K
LSAgICAvLyBOZWNlc3NhcnkgZXZlbnQgcmVxdWlyZWQgdG8gdHJhY2sgcGFnZSBsb2FkIHRpbWUg
YW5kIHJlc291cmNlIHNpemVzLgotICAgIFdlYkluc3BlY3Rvci5GcmFtZS5hZGRFdmVudExpc3Rl
bmVyKFdlYkluc3BlY3Rvci5GcmFtZS5FdmVudC5NYWluUmVzb3VyY2VEaWRDaGFuZ2UsIHRoaXMu
X21haW5SZXNvdXJjZURpZENoYW5nZSwgdGhpcyk7Ci0gICAgV2ViSW5zcGVjdG9yLnRpbWVsaW5l
TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5UaW1lbGluZU1hbmFnZXIuRXZl
bnQuUmVjb3JkaW5nU3RvcHBlZCwgdGhpcy5fcmVjb3JkaW5nU3RvcHBlZCwgdGhpcyk7Ci0KLSAg
ICAvLyBOZWNlc3NhcnkgZXZlbnRzIHJlcXVpcmVkIHRvIHRyYWNrIGxvYWQgb2YgcmVzb3VyY2Vz
LgotICAgIFdlYkluc3BlY3Rvci5GcmFtZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5G
cmFtZS5FdmVudC5SZXNvdXJjZVdhc0FkZGVkLCB0aGlzLl9yZXNvdXJjZVdhc0FkZGVkLCB0aGlz
KTsKLSAgICBXZWJJbnNwZWN0b3IuZnJhbWVSZXNvdXJjZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5l
cihXZWJJbnNwZWN0b3IuRnJhbWVSZXNvdXJjZU1hbmFnZXIuRXZlbnQuRnJhbWVXYXNBZGRlZCwg
dGhpcy5fZnJhbWVXYXNBZGRlZCwgdGhpcyk7Ci0KLSAgICAvLyBOZWNlc3NhcnkgZXZlbnRzIHJl
cXVpcmVkIHRvIHRyYWNrIGNvbnNvbGUgbWVzc2FnZXMuCi0gICAgdmFyIGxvZ01hbmFnZXIgPSBX
ZWJJbnNwZWN0b3IubG9nTWFuYWdlcjsKLSAgICBsb2dNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIo
V2ViSW5zcGVjdG9yLkxvZ01hbmFnZXIuRXZlbnQuQ2xlYXJlZCwgdGhpcy5fY29uc29sZVdhc0Ns
ZWFyZWQsIHRoaXMpOwotICAgIGxvZ01hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0
b3IuTG9nTWFuYWdlci5FdmVudC5BY3RpdmVMb2dDbGVhcmVkLCB0aGlzLl9jb25zb2xlV2FzQ2xl
YXJlZCwgdGhpcyk7Ci0gICAgbG9nTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rv
ci5Mb2dNYW5hZ2VyLkV2ZW50Lk1lc3NhZ2VBZGRlZCwgdGhpcy5fY29uc29sZU1lc3NhZ2VBZGRl
ZCwgdGhpcyk7Ci0gICAgbG9nTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5M
b2dNYW5hZ2VyLkV2ZW50LlByZXZpb3VzTWVzc2FnZVJlcGVhdENvdW50VXBkYXRlZCwgdGhpcy5f
Y29uc29sZU1lc3NhZ2VXYXNSZXBlYXRlZCwgdGhpcyk7CisgICAgdGhpcy5fY29udGFpbmVyVmll
dyA9IG5ldyBXZWJJbnNwZWN0b3IuRGFzaGJvYXJkQ29udGFpbmVyVmlldygpOworICAgIHRoaXMu
X2NvbnRhaW5lclZpZXcuc2hvd0Rhc2hib2FyZFZpZXdGb3JSZXByZXNlbnRlZE9iamVjdCh0aGlz
Ll9kZWZhdWx0RGFzaGJvYXJkKTsKIH07CiAKIFdlYkluc3BlY3Rvci5EYXNoYm9hcmRNYW5hZ2Vy
LnByb3RvdHlwZSA9IHsKICAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkRhc2hib2FyZE1h
bmFnZXIsCisgICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZSwKIAot
ICAgIF9tYWluUmVzb3VyY2VEaWRDaGFuZ2U6IGZ1bmN0aW9uKGV2ZW50KQorICAgIGdldCB0b29s
YmFySXRlbSgpCiAgICAgewotICAgICAgICBjb25zb2xlLmFzc2VydChldmVudC50YXJnZXQgaW5z
dGFuY2VvZiBXZWJJbnNwZWN0b3IuRnJhbWUpOwotCi0gICAgICAgIGlmICghZXZlbnQudGFyZ2V0
LmlzTWFpbkZyYW1lKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdGhpcy5fdmll
dy5yZXNvdXJjZXNDb3VudCA9IDE7Ci0gICAgICAgIHRoaXMuX3ZpZXcucmVzb3VyY2VzU2l6ZSA9
IFdlYkluc3BlY3Rvci5mcmFtZVJlc291cmNlTWFuYWdlci5tYWluRnJhbWUubWFpblJlc291cmNl
LnNpemUgfHwgMDsKLQotICAgICAgICAvLyBPbmx5IHVwZGF0ZSB0aGUgdGltZSBpZiB3ZSBhcmUg
cmVjb3JkaW5nIHRoZSB0aW1lbGluZS4KLSAgICAgICAgaWYgKCFXZWJJbnNwZWN0b3IudGltZWxp
bmVNYW5hZ2VyLnJlY29yZGluZ0VuYWJsZWQpIHsKLSAgICAgICAgICAgIHRoaXMuX3ZpZXcudGlt
ZSA9IDA7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBXZSBz
aG91bGQgb25seSB0cmFjayByZXNvdXJjZSBzaXplcyBvbiBmcmVzaCBsb2Fkcy4KLSAgICAgICAg
aWYgKHRoaXMuX3dhaXRpbmdGb3JGaXJzdE1haW5SZXNvdXJjZVRvU3RhcnRUcmFja2luZ1NpemUp
IHsKLSAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl93YWl0aW5nRm9yRmlyc3RNYWluUmVzb3VyY2VU
b1N0YXJ0VHJhY2tpbmdTaXplOwotICAgICAgICAgICAgV2ViSW5zcGVjdG9yLlJlc291cmNlLmFk
ZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlJlc291cmNlLkV2ZW50LlNpemVEaWRDaGFuZ2Us
IHRoaXMuX3Jlc291cmNlU2l6ZURpZENoYW5nZSwgdGhpcyk7Ci0gICAgICAgIH0KLQotICAgICAg
ICB0aGlzLl9zdGFydFVwZGF0aW5nVGltZSgpOwotICAgIH0sCi0KLSAgICBfcmVjb3JkaW5nU3Rv
cHBlZDogZnVuY3Rpb24oZXZlbnQpCi0gICAgewotICAgICAgICAvLyBJZiByZWNvcmRpbmcgc3Rv
cHMsIHdlIHNob3VsZCBzdG9wIHRoZSB0aW1lciBpZiBpdCBoYXNuJ3Qgc3RvcHBlZCBhbHJlYWR5
LgotICAgICAgICB0aGlzLl9zdG9wVXBkYXRpbmdUaW1lKCk7Ci0gICAgfSwKLQotICAgIF9yZXNv
dXJjZVdhc0FkZGVkOiBmdW5jdGlvbihldmVudCkKLSAgICB7Ci0gICAgICAgICsrdGhpcy5fdmll
dy5yZXNvdXJjZXNDb3VudDsKLSAgICB9LAotCi0gICAgX2ZyYW1lV2FzQWRkZWQ6IGZ1bmN0aW9u
KGV2ZW50KQotICAgIHsKLSAgICAgICAgKyt0aGlzLl92aWV3LnJlc291cmNlc0NvdW50OwotICAg
IH0sCi0KLSAgICBfcmVzb3VyY2VTaXplRGlkQ2hhbmdlOiBmdW5jdGlvbihldmVudCkKLSAgICB7
Ci0gICAgICAgIHRoaXMuX3ZpZXcucmVzb3VyY2VzU2l6ZSArPSBldmVudC50YXJnZXQuc2l6ZSAt
IGV2ZW50LmRhdGEucHJldmlvdXNTaXplOwotICAgIH0sCi0KLSAgICBfc3RhcnRVcGRhdGluZ1Rp
bWU6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX3N0b3BVcGRhdGluZ1RpbWUoKTsK
LQotICAgICAgICB0aGlzLl92aWV3LnRpbWUgPSAwOwotCi0gICAgICAgIHRoaXMuX3RpbWVsaW5l
QmFzZVRpbWUgPSBEYXRlLm5vdygpOwotICAgICAgICB0aGlzLl90aW1lSW50ZXJ2YWxEZWxheSA9
IDUwOwotICAgICAgICB0aGlzLl90aW1lSW50ZXJ2YWxJZGVudGlmaWVyID0gc2V0SW50ZXJ2YWwo
dGhpcy5fdXBkYXRlVGltZS5iaW5kKHRoaXMpLCB0aGlzLl90aW1lSW50ZXJ2YWxEZWxheSk7Ci0g
ICAgfSwKLQotICAgIF9zdG9wVXBkYXRpbmdUaW1lOiBmdW5jdGlvbigpCi0gICAgewotICAgICAg
ICBpZiAoIXRoaXMuX3RpbWVJbnRlcnZhbElkZW50aWZpZXIpCi0gICAgICAgICAgICByZXR1cm47
Ci0KLSAgICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLl90aW1lSW50ZXJ2YWxJZGVudGlmaWVyKTsK
LSAgICAgICAgZGVsZXRlIHRoaXMuX3RpbWVJbnRlcnZhbElkZW50aWZpZXI7Ci0gICAgfSwKLQot
ICAgIF91cGRhdGVUaW1lOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB2YXIgZHVyYXRpb24g
PSBEYXRlLm5vdygpIC0gdGhpcy5fdGltZWxpbmVCYXNlVGltZTsKLQotICAgICAgICB2YXIgdGlt
ZUludGVydmFsRGVsYXkgPSB0aGlzLl90aW1lSW50ZXJ2YWxEZWxheTsKLSAgICAgICAgaWYgKGR1
cmF0aW9uID49IDEwMDApIC8vIDEgc2Vjb25kCi0gICAgICAgICAgICB0aW1lSW50ZXJ2YWxEZWxh
eSA9IDEwMDsKLSAgICAgICAgZWxzZSBpZiAoZHVyYXRpb24gPj0gNjAwMDApIC8vIDYwIHNlY29u
ZHMKLSAgICAgICAgICAgIHRpbWVJbnRlcnZhbERlbGF5ID0gMTAwMDsKLSAgICAgICAgZWxzZSBp
ZiAoZHVyYXRpb24gPj0gMzYwMDAwMCkgLy8gMSBtaW51dGUKLSAgICAgICAgICAgIHRpbWVJbnRl
cnZhbERlbGF5ID0gMTAwMDA7Ci0KLSAgICAgICAgaWYgKHRpbWVJbnRlcnZhbERlbGF5ICE9PSB0
aGlzLl90aW1lSW50ZXJ2YWxEZWxheSkgewotICAgICAgICAgICAgdGhpcy5fdGltZUludGVydmFs
RGVsYXkgPSB0aW1lSW50ZXJ2YWxEZWxheTsKLQotICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0
aGlzLl90aW1lSW50ZXJ2YWxJZGVudGlmaWVyKTsKLSAgICAgICAgICAgIHRoaXMuX3RpbWVJbnRl
cnZhbElkZW50aWZpZXIgPSBzZXRJbnRlcnZhbCh0aGlzLl91cGRhdGVUaW1lLmJpbmQodGhpcyks
IHRoaXMuX3RpbWVJbnRlcnZhbERlbGF5KTsKLSAgICAgICAgfQotCi0gICAgICAgIHZhciBtYWlu
RnJhbWUgPSBXZWJJbnNwZWN0b3IuZnJhbWVSZXNvdXJjZU1hbmFnZXIubWFpbkZyYW1lOwotICAg
ICAgICB2YXIgbWFpbkZyYW1lU3RhcnRUaW1lID0gbWFpbkZyYW1lLm1haW5SZXNvdXJjZS5maXJz
dFRpbWVzdGFtcDsKLSAgICAgICAgdmFyIG1haW5GcmFtZUxvYWRFdmVudFRpbWUgPSBtYWluRnJh
bWUubG9hZEV2ZW50VGltZXN0YW1wOwotCi0gICAgICAgIGlmIChpc05hTihtYWluRnJhbWVTdGFy
dFRpbWUpIHx8IGlzTmFOKG1haW5GcmFtZUxvYWRFdmVudFRpbWUpKSB7Ci0gICAgICAgICAgICB0
aGlzLl92aWV3LnRpbWUgPSBkdXJhdGlvbiAvIDEwMDA7Ci0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIH0KLQotICAgICAgICB0aGlzLl92aWV3LnRpbWUgPSBtYWluRnJhbWVMb2FkRXZlbnRU
aW1lIC0gbWFpbkZyYW1lU3RhcnRUaW1lOwotCi0gICAgICAgIHRoaXMuX3N0b3BVcGRhdGluZ1Rp
bWUoKTsKLSAgICB9LAotCi0gICAgX2NvbnNvbGVNZXNzYWdlQWRkZWQ6IGZ1bmN0aW9uKGV2ZW50
KQotICAgIHsKLSAgICAgICAgdmFyIG1lc3NhZ2UgPSBldmVudC5kYXRhLm1lc3NhZ2U7Ci0gICAg
ICAgIHRoaXMuX2xhc3RDb25zb2xlTWVzc2FnZVR5cGUgPSBtZXNzYWdlLmxldmVsOwotICAgICAg
ICB0aGlzLl9pbmNyZW1lbnRDb25zb2xlTWVzc2FnZVR5cGUobWVzc2FnZS5sZXZlbCwgbWVzc2Fn
ZS50b3RhbFJlcGVhdENvdW50KTsKLSAgICB9LAotCi0gICAgX2NvbnNvbGVNZXNzYWdlV2FzUmVw
ZWF0ZWQ6IGZ1bmN0aW9uKGV2ZW50KQotICAgIHsKLSAgICAgICAgdGhpcy5faW5jcmVtZW50Q29u
c29sZU1lc3NhZ2VUeXBlKHRoaXMuX2xhc3RDb25zb2xlTWVzc2FnZVR5cGUsIDEpOwotICAgIH0s
Ci0KLSAgICBfaW5jcmVtZW50Q29uc29sZU1lc3NhZ2VUeXBlOiBmdW5jdGlvbih0eXBlLCBpbmNy
ZW1lbnQpCi0gICAgewotICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICAgICAgY2FzZSAibG9n
IjoKLSAgICAgICAgICAgIHRoaXMuX3ZpZXcubG9ncyArPSBpbmNyZW1lbnQ7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgY2FzZSAid2FybmluZyI6Ci0gICAgICAgICAgICB0aGlzLl92aWV3
Lmlzc3VlcyArPSBpbmNyZW1lbnQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSAi
ZXJyb3IiOgotICAgICAgICAgICAgdGhpcy5fdmlldy5lcnJvcnMgKz0gaW5jcmVtZW50OwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9LAotCi0gICAgX2NvbnNvbGVXYXNDbGVh
cmVkOiBmdW5jdGlvbihldmVudCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX3ZpZXcubG9ncyA9IDA7
Ci0gICAgICAgIHRoaXMuX3ZpZXcuaXNzdWVzID0gMDsKLSAgICAgICAgdGhpcy5fdmlldy5lcnJv
cnMgPSAwOworICAgICAgICByZXR1cm4gdGhpcy5fY29udGFpbmVyVmlldy50b29sYmFySXRlbTsK
ICAgICB9CiB9OwotCi1XZWJJbnNwZWN0b3IuRGFzaGJvYXJkTWFuYWdlci5wcm90b3R5cGUuX19w
cm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKaW5kZXggZTc5ZmQ4NDZkNmNmMjYxOTFh
MzY0MjUwZDc1YTJkZThkMGRkNWZlYy4uM2Q5MzkxYWI4MjYxOTU2ZmE5OTEzZDVkMDkxZGUyYzg1
NGQxMGRjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
TWFpbi5odG1sCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4u
aHRtbApAQCAtNjEsNyArNjEsOCBAQAogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
Vmlld3MvRE9NVHJlZUNvbnRlbnRWaWV3LmNzcyI+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSJWaWV3cy9ET01UcmVlRGF0YUdyaWQuY3NzIj4KICAgICA8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9IlZpZXdzL0RPTVRyZWVPdXRsaW5lLmNzcyI+Ci0gICAgPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSJWaWV3cy9EYXNoYm9hcmRWaWV3LmNzcyI+CisgICAgPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9EYXNoYm9hcmRDb250YWluZXJWaWV3LmNzcyI+Cisg
ICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9EZWZhdWx0RGFzaGJvYXJkVmll
dy5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvRGF0YUdyaWQu
Y3NzIj4KICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL0RhdGFiYXNlQ29u
dGVudFZpZXcuY3NzIj4KICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL0Rh
dGFiYXNlSWNvbi5jc3MiPgpAQCAtMjE3LDYgKzIxOCw3IEBACiAgICAgPHNjcmlwdCBzcmM9Ik1v
ZGVscy9ET01TZWFyY2hNYXRjaE9iamVjdC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9
Ik1vZGVscy9ET01TdG9yYWdlT2JqZWN0LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0i
TW9kZWxzL0RPTVRyZWUuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvRGVm
YXVsdERhc2hib2FyZC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9EYXRh
YmFzZU9iamVjdC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9EYXRhYmFz
ZVRhYmxlT2JqZWN0LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0V4ZWN1
dGlvbkNvbnRleHQuanMiPjwvc2NyaXB0PgpAQCAtMzM5LDcgKzM0MSw3IEBACiAgICAgPHNjcmlw
dCBzcmM9IlZpZXdzL0RPTVRyZWVFbGVtZW50UGF0aENvbXBvbmVudC5qcyI+PC9zY3JpcHQ+CiAg
ICAgPHNjcmlwdCBzcmM9IlZpZXdzL0RPTVRyZWVPdXRsaW5lLmpzIj48L3NjcmlwdD4KICAgICA8
c2NyaXB0IHNyYz0iVmlld3MvRE9NVHJlZVVwZGF0ZXIuanMiPjwvc2NyaXB0PgotICAgIDxzY3Jp
cHQgc3JjPSJWaWV3cy9EYXNoYm9hcmRWaWV3LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNy
Yz0iVmlld3MvRGFzaGJvYXJkQ29udGFpbmVyVmlldy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlw
dCBzcmM9IlZpZXdzL0RhdGFiYXNlQ29udGVudFZpZXcuanMiPjwvc2NyaXB0PgogICAgIDxzY3Jp
cHQgc3JjPSJWaWV3cy9EYXRhYmFzZUhvc3RUcmVlRWxlbWVudC5qcyI+PC9zY3JpcHQ+CiAgICAg
PHNjcmlwdCBzcmM9IlZpZXdzL0RhdGFiYXNlVGFibGVDb250ZW50Vmlldy5qcyI+PC9zY3JpcHQ+
CkBAIC0zNDcsNiArMzQ5LDggQEAKICAgICA8c2NyaXB0IHNyYz0iVmlld3MvRGF0YWJhc2VUcmVl
RWxlbWVudC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL0RlYnVnZ2VyU2lk
ZWJhclBhbmVsLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvRGV0YWlsc1Nl
Y3Rpb24uanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9EYXNoYm9hcmRWaWV3
LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iVmlld3MvRGVmYXVsdERhc2hib2FyZFZp
ZXcuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9EZXRhaWxzU2VjdGlvbkRh
dGFHcmlkUm93LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvRGV0YWlsc1Nl
Y3Rpb25Hcm91cC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL0RldGFpbHNT
ZWN0aW9uUHJvcGVydGllc1Jvdy5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRGVmYXVsdERhc2hib2FyZC5qcyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9EZWZhdWx0RGFzaGJvYXJk
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjM1N2U4NWRlNjRmYzYwYmY1YWNmMDkzNTMxOTQ0MmM0MjkxZmYyMzQK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9N
b2RlbHMvRGVmYXVsdERhc2hib2FyZC5qcwpAQCAtMCwwICsxLDI3MCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCitXZWJJbnNwZWN0b3IuRGVmYXVsdERhc2hib2FyZCA9IGZ1bmN0aW9u
KCkgeworICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKworICAgIHRoaXMuX3dh
aXRpbmdGb3JGaXJzdE1haW5SZXNvdXJjZVRvU3RhcnRUcmFja2luZ1NpemUgPSB0cnVlOworCisg
ICAgLy8gTmVjZXNzYXJ5IGV2ZW50IHJlcXVpcmVkIHRvIHRyYWNrIHBhZ2UgbG9hZCB0aW1lIGFu
ZCByZXNvdXJjZSBzaXplcy4KKyAgICBXZWJJbnNwZWN0b3IuRnJhbWUuYWRkRXZlbnRMaXN0ZW5l
cihXZWJJbnNwZWN0b3IuRnJhbWUuRXZlbnQuTWFpblJlc291cmNlRGlkQ2hhbmdlLCB0aGlzLl9t
YWluUmVzb3VyY2VEaWRDaGFuZ2UsIHRoaXMpOworICAgIFdlYkluc3BlY3Rvci50aW1lbGluZU1h
bmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGltZWxpbmVNYW5hZ2VyLkV2ZW50
LlJlY29yZGluZ1N0b3BwZWQsIHRoaXMuX3JlY29yZGluZ1N0b3BwZWQsIHRoaXMpOworCisgICAg
Ly8gTmVjZXNzYXJ5IGV2ZW50cyByZXF1aXJlZCB0byB0cmFjayBsb2FkIG9mIHJlc291cmNlcy4K
KyAgICBXZWJJbnNwZWN0b3IuRnJhbWUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRnJh
bWUuRXZlbnQuUmVzb3VyY2VXYXNBZGRlZCwgdGhpcy5fcmVzb3VyY2VXYXNBZGRlZCwgdGhpcyk7
CisgICAgV2ViSW5zcGVjdG9yLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIo
V2ViSW5zcGVjdG9yLkZyYW1lUmVzb3VyY2VNYW5hZ2VyLkV2ZW50LkZyYW1lV2FzQWRkZWQsIHRo
aXMuX2ZyYW1lV2FzQWRkZWQsIHRoaXMpOworCisgICAgLy8gTmVjZXNzYXJ5IGV2ZW50cyByZXF1
aXJlZCB0byB0cmFjayBjb25zb2xlIG1lc3NhZ2VzLgorICAgIHZhciBsb2dNYW5hZ2VyID0gV2Vi
SW5zcGVjdG9yLmxvZ01hbmFnZXI7CisgICAgbG9nTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdl
Ykluc3BlY3Rvci5Mb2dNYW5hZ2VyLkV2ZW50LkNsZWFyZWQsIHRoaXMuX2NvbnNvbGVXYXNDbGVh
cmVkLCB0aGlzKTsKKyAgICBsb2dNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9y
LkxvZ01hbmFnZXIuRXZlbnQuQWN0aXZlTG9nQ2xlYXJlZCwgdGhpcy5fY29uc29sZVdhc0NsZWFy
ZWQsIHRoaXMpOworICAgIGxvZ01hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3Iu
TG9nTWFuYWdlci5FdmVudC5NZXNzYWdlQWRkZWQsIHRoaXMuX2NvbnNvbGVNZXNzYWdlQWRkZWQs
IHRoaXMpOworICAgIGxvZ01hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuTG9n
TWFuYWdlci5FdmVudC5QcmV2aW91c01lc3NhZ2VSZXBlYXRDb3VudFVwZGF0ZWQsIHRoaXMuX2Nv
bnNvbGVNZXNzYWdlV2FzUmVwZWF0ZWQsIHRoaXMpOworCisgICAgdGhpcy5fcmVzb3VyY2VzQ291
bnQgPSAwOworICAgIHRoaXMuX3Jlc291cmNlc1NpemUgPSAwOworICAgIHRoaXMuX3RpbWUgPSAw
OworICAgIHRoaXMuX2xvZ3MgPSAwOworICAgIHRoaXMuX2Vycm9ycyA9IDA7CisgICAgdGhpcy5f
aXNzdWVzID0gMDsKK307CisKK1dlYkluc3BlY3Rvci5EZWZhdWx0RGFzaGJvYXJkLkV2ZW50ID0g
eworICAgIERhdGFEaWRDaGFuZ2U6ICJkZWZhdWx0LWRhc2hib2FyZC1kYXRhLWRpZC1jaGFuZ2Ui
Cit9OworCitXZWJJbnNwZWN0b3IuRGVmYXVsdERhc2hib2FyZC5wcm90b3R5cGUgPSB7CisgICAg
Y29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5EZWZhdWx0RGFzaGJvYXJkLAorICAgIF9fcHJvdG9f
XzogV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGUsCisKKyAgICAvLyBQdWJsaWMKKworICAg
IGdldCByZXNvdXJjZXNDb3VudCgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fcmVzb3Vy
Y2VzQ291bnQ7CisgICAgfSwKKworICAgIHNldCByZXNvdXJjZXNDb3VudCh2YWx1ZSkKKyAgICB7
CisgICAgICAgIHRoaXMuX3Jlc291cmNlc0NvdW50ID0gdmFsdWU7CisgICAgICAgIHRoaXMuX2Rh
dGFEaWRDaGFuZ2UoKTsKKyAgICB9LAorCisgICAgZ2V0IHJlc291cmNlc1NpemUoKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc291cmNlc1NpemU7CisgICAgfSwKKworICAgIHNldCBy
ZXNvdXJjZXNTaXplKHZhbHVlKQorICAgIHsKKyAgICAgICAgdGhpcy5fcmVzb3VyY2VzU2l6ZSA9
IHZhbHVlOworICAgICAgICB0aGlzLl9kYXRhRGlkQ2hhbmdlKCk7CisgICAgfSwKKworICAgIGdl
dCB0aW1lKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl90aW1lOworICAgIH0sCisKKyAg
ICBzZXQgdGltZSh2YWx1ZSkKKyAgICB7CisgICAgICAgIHRoaXMuX3RpbWUgPSB2YWx1ZTsKKyAg
ICAgICAgdGhpcy5fZGF0YURpZENoYW5nZSgpOworICAgIH0sCisKKyAgICBnZXQgbG9ncygpCisg
ICAgeworICAgICAgICByZXR1cm4gdGhpcy5fbG9nczsKKyAgICB9LAorCisgICAgc2V0IGxvZ3Mo
dmFsdWUpCisgICAgeworICAgICAgICB0aGlzLl9sb2dzID0gdmFsdWU7CisgICAgICAgIHRoaXMu
X2RhdGFEaWRDaGFuZ2UoKTsKKyAgICB9LAorCisgICAgZ2V0IGVycm9ycygpCisgICAgeworICAg
ICAgICByZXR1cm4gdGhpcy5fZXJyb3JzOworICAgIH0sCisKKyAgICBzZXQgZXJyb3JzKHZhbHVl
KQorICAgIHsKKyAgICAgICAgdGhpcy5fZXJyb3JzID0gdmFsdWU7CisgICAgICAgIHRoaXMuX2Rh
dGFEaWRDaGFuZ2UoKTsKKyAgICB9LAorCisgICAgZ2V0IGlzc3VlcygpCisgICAgeworICAgICAg
ICByZXR1cm4gdGhpcy5faXNzdWVzOworICAgIH0sCisKKyAgICBzZXQgaXNzdWVzKHZhbHVlKQor
ICAgIHsKKyAgICAgICAgdGhpcy5faXNzdWVzID0gdmFsdWU7CisgICAgICAgIHRoaXMuX2RhdGFE
aWRDaGFuZ2UoKTsKKyAgICB9LAorCisgICAgLy8gUHJpdmF0ZQorCisgICAgX2RhdGFEaWRDaGFu
Z2U6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVu
ZXJzKFdlYkluc3BlY3Rvci5EZWZhdWx0RGFzaGJvYXJkLkV2ZW50LkRhdGFEaWRDaGFuZ2UpOwor
ICAgIH0sCisKKyAgICBfbWFpblJlc291cmNlRGlkQ2hhbmdlOiBmdW5jdGlvbihldmVudCkKKyAg
ICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGV2ZW50LnRhcmdldCBpbnN0YW5jZW9mIFdlYklu
c3BlY3Rvci5GcmFtZSk7CisKKyAgICAgICAgaWYgKCFldmVudC50YXJnZXQuaXNNYWluRnJhbWUo
KSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLl9yZXNvdXJjZXNDb3VudCA9
IDE7CisgICAgICAgIHRoaXMuX3Jlc291cmNlc1NpemUgPSBXZWJJbnNwZWN0b3IuZnJhbWVSZXNv
dXJjZU1hbmFnZXIubWFpbkZyYW1lLm1haW5SZXNvdXJjZS5zaXplIHx8IDA7CisKKyAgICAgICAg
Ly8gT25seSB1cGRhdGUgdGhlIHRpbWUgaWYgd2UgYXJlIHJlY29yZGluZyB0aGUgdGltZWxpbmUu
CisgICAgICAgIGlmICghV2ViSW5zcGVjdG9yLnRpbWVsaW5lTWFuYWdlci5yZWNvcmRpbmdFbmFi
bGVkKSB7CisgICAgICAgICAgICB0aGlzLl90aW1lID0gMDsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorCisgICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IHRyYWNrIHJlc291cmNlIHNp
emVzIG9uIGZyZXNoIGxvYWRzLgorICAgICAgICBpZiAodGhpcy5fd2FpdGluZ0ZvckZpcnN0TWFp
blJlc291cmNlVG9TdGFydFRyYWNraW5nU2l6ZSkgeworICAgICAgICAgICAgZGVsZXRlIHRoaXMu
X3dhaXRpbmdGb3JGaXJzdE1haW5SZXNvdXJjZVRvU3RhcnRUcmFja2luZ1NpemU7CisgICAgICAg
ICAgICBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3Iu
UmVzb3VyY2UuRXZlbnQuU2l6ZURpZENoYW5nZSwgdGhpcy5fcmVzb3VyY2VTaXplRGlkQ2hhbmdl
LCB0aGlzKTsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMuX2RhdGFEaWRDaGFuZ2UoKTsKKyAg
ICAgICAgdGhpcy5fc3RhcnRVcGRhdGluZ1RpbWUoKTsKKyAgICB9LAorCisgICAgX3JlY29yZGlu
Z1N0b3BwZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgLy8gSWYgcmVjb3JkaW5n
IHN0b3BzLCB3ZSBzaG91bGQgc3RvcCB0aGUgdGltZXIgaWYgaXQgaGFzbid0IHN0b3BwZWQgYWxy
ZWFkeS4KKyAgICAgICAgdGhpcy5fc3RvcFVwZGF0aW5nVGltZSgpOworICAgIH0sCisKKyAgICBf
cmVzb3VyY2VXYXNBZGRlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICArK3RoaXMu
cmVzb3VyY2VzQ291bnQ7CisgICAgfSwKKworICAgIF9mcmFtZVdhc0FkZGVkOiBmdW5jdGlvbihl
dmVudCkKKyAgICB7CisgICAgICAgICsrdGhpcy5yZXNvdXJjZXNDb3VudDsKKyAgICB9LAorCisg
ICAgX3Jlc291cmNlU2l6ZURpZENoYW5nZTogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAg
ICB0aGlzLnJlc291cmNlc1NpemUgKz0gZXZlbnQudGFyZ2V0LnNpemUgLSBldmVudC5kYXRhLnBy
ZXZpb3VzU2l6ZTsKKyAgICB9LAorCisgICAgX3N0YXJ0VXBkYXRpbmdUaW1lOiBmdW5jdGlvbigp
CisgICAgeworICAgICAgICB0aGlzLl9zdG9wVXBkYXRpbmdUaW1lKCk7CisKKyAgICAgICAgdGhp
cy50aW1lID0gMDsKKworICAgICAgICB0aGlzLl90aW1lbGluZUJhc2VUaW1lID0gRGF0ZS5ub3co
KTsKKyAgICAgICAgdGhpcy5fdGltZUludGVydmFsRGVsYXkgPSA1MDsKKyAgICAgICAgdGhpcy5f
dGltZUludGVydmFsSWRlbnRpZmllciA9IHNldEludGVydmFsKHRoaXMuX3VwZGF0ZVRpbWUuYmlu
ZCh0aGlzKSwgdGhpcy5fdGltZUludGVydmFsRGVsYXkpOworICAgIH0sCisKKyAgICBfc3RvcFVw
ZGF0aW5nVGltZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLl90aW1lSW50
ZXJ2YWxJZGVudGlmaWVyKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGNsZWFySW50
ZXJ2YWwodGhpcy5fdGltZUludGVydmFsSWRlbnRpZmllcik7CisgICAgICAgIGRlbGV0ZSB0aGlz
Ll90aW1lSW50ZXJ2YWxJZGVudGlmaWVyOworICAgIH0sCisKKyAgICBfdXBkYXRlVGltZTogZnVu
Y3Rpb24oKQorICAgIHsKKyAgICAgICAgdmFyIGR1cmF0aW9uID0gRGF0ZS5ub3coKSAtIHRoaXMu
X3RpbWVsaW5lQmFzZVRpbWU7CisKKyAgICAgICAgdmFyIHRpbWVJbnRlcnZhbERlbGF5ID0gdGhp
cy5fdGltZUludGVydmFsRGVsYXk7CisgICAgICAgIGlmIChkdXJhdGlvbiA+PSAxMDAwKSAvLyAx
IHNlY29uZAorICAgICAgICAgICAgdGltZUludGVydmFsRGVsYXkgPSAxMDA7CisgICAgICAgIGVs
c2UgaWYgKGR1cmF0aW9uID49IDYwMDAwKSAvLyA2MCBzZWNvbmRzCisgICAgICAgICAgICB0aW1l
SW50ZXJ2YWxEZWxheSA9IDEwMDA7CisgICAgICAgIGVsc2UgaWYgKGR1cmF0aW9uID49IDM2MDAw
MDApIC8vIDEgbWludXRlCisgICAgICAgICAgICB0aW1lSW50ZXJ2YWxEZWxheSA9IDEwMDAwOwor
CisgICAgICAgIGlmICh0aW1lSW50ZXJ2YWxEZWxheSAhPT0gdGhpcy5fdGltZUludGVydmFsRGVs
YXkpIHsKKyAgICAgICAgICAgIHRoaXMuX3RpbWVJbnRlcnZhbERlbGF5ID0gdGltZUludGVydmFs
RGVsYXk7CisKKyAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5fdGltZUludGVydmFsSWRl
bnRpZmllcik7CisgICAgICAgICAgICB0aGlzLl90aW1lSW50ZXJ2YWxJZGVudGlmaWVyID0gc2V0
SW50ZXJ2YWwodGhpcy5fdXBkYXRlVGltZS5iaW5kKHRoaXMpLCB0aGlzLl90aW1lSW50ZXJ2YWxE
ZWxheSk7CisgICAgICAgIH0KKworICAgICAgICB2YXIgbWFpbkZyYW1lID0gV2ViSW5zcGVjdG9y
LmZyYW1lUmVzb3VyY2VNYW5hZ2VyLm1haW5GcmFtZTsKKyAgICAgICAgdmFyIG1haW5GcmFtZVN0
YXJ0VGltZSA9IG1haW5GcmFtZS5tYWluUmVzb3VyY2UuZmlyc3RUaW1lc3RhbXA7CisgICAgICAg
IHZhciBtYWluRnJhbWVMb2FkRXZlbnRUaW1lID0gbWFpbkZyYW1lLmxvYWRFdmVudFRpbWVzdGFt
cDsKKworICAgICAgICBpZiAoaXNOYU4obWFpbkZyYW1lU3RhcnRUaW1lKSB8fCBpc05hTihtYWlu
RnJhbWVMb2FkRXZlbnRUaW1lKSkgeworICAgICAgICAgICAgdGhpcy50aW1lID0gZHVyYXRpb24g
LyAxMDAwOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy50
aW1lID0gbWFpbkZyYW1lTG9hZEV2ZW50VGltZSAtIG1haW5GcmFtZVN0YXJ0VGltZTsKKworICAg
ICAgICB0aGlzLl9zdG9wVXBkYXRpbmdUaW1lKCk7CisgICAgfSwKKworICAgIF9jb25zb2xlTWVz
c2FnZUFkZGVkOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHZhciBtZXNzYWdlID0g
ZXZlbnQuZGF0YS5tZXNzYWdlOworICAgICAgICB0aGlzLl9sYXN0Q29uc29sZU1lc3NhZ2VUeXBl
ID0gbWVzc2FnZS5sZXZlbDsKKyAgICAgICAgdGhpcy5faW5jcmVtZW50Q29uc29sZU1lc3NhZ2VU
eXBlKG1lc3NhZ2UubGV2ZWwsIG1lc3NhZ2UudG90YWxSZXBlYXRDb3VudCk7CisgICAgfSwKKwor
ICAgIF9jb25zb2xlTWVzc2FnZVdhc1JlcGVhdGVkOiBmdW5jdGlvbihldmVudCkKKyAgICB7Cisg
ICAgICAgIHRoaXMuX2luY3JlbWVudENvbnNvbGVNZXNzYWdlVHlwZSh0aGlzLl9sYXN0Q29uc29s
ZU1lc3NhZ2VUeXBlLCAxKTsKKyAgICB9LAorCisgICAgX2luY3JlbWVudENvbnNvbGVNZXNzYWdl
VHlwZTogZnVuY3Rpb24odHlwZSwgaW5jcmVtZW50KQorICAgIHsKKyAgICAgICAgc3dpdGNoICh0
eXBlKSB7CisgICAgICAgIGNhc2UgImxvZyI6CisgICAgICAgICAgICB0aGlzLmxvZ3MgKz0gaW5j
cmVtZW50OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgIndhcm5pbmciOgorICAg
ICAgICAgICAgdGhpcy5pc3N1ZXMgKz0gaW5jcmVtZW50OworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgImVycm9yIjoKKyAgICAgICAgICAgIHRoaXMuZXJyb3JzICs9IGluY3JlbWVu
dDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfSwKKworICAgIF9jb25zb2xl
V2FzQ2xlYXJlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICB0aGlzLl9sb2dzID0g
MDsKKyAgICAgICAgdGhpcy5faXNzdWVzID0gMDsKKyAgICAgICAgdGhpcy5fZXJyb3JzID0gMDsK
KyAgICB9Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvRGFzaGJvYXJkQ29udGFpbmVyVmlldy5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9EYXNoYm9hcmRDb250YWluZXJWaWV3LmNzcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi45ZTI0YTMzMzIxZGZjMWFkMDg2M2JhNTg2MDZiY2ZmOGMyNTFiZGM0Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGFzaGJv
YXJkQ29udGFpbmVyVmlldy5jc3MKQEAgLTAsMCArMSw4OSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisudG9vbGJhciAuZGFzaGJvYXJkLWNvbnRhaW5lciB7CisgICAgcG9zaXRpb246
IHJlbGF0aXZlOworCisgICAgd2lkdGg6IDM3NXB4OworCisgICAgYmFja2dyb3VuZC1pbWFnZTog
bGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgcmdiYSgwLCAxMjgsIDI1NSwgMCksIHJnYmEoMCwg
MTI4LCAyNTUsIDAuMDc1KSksCisgICAgICAgIGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdi
YSgwLCAwLCAwLCAwLjA5KSwgdHJhbnNwYXJlbnQsIHJnYmEoMCwgMCwgMCwgMC4wOSkpLAorICAg
ICAgICBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCByZ2IoMjQwLCAyNDQsIDI1MSksIHJnYigy
NTAsIDI1MywgMjU1KSk7CisgICAgYmFja2dyb3VuZC1zaXplOiAxMDAlIDZweCwgYXV0bywgYXV0
bzsKKyAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBib3R0b20sIGNlbnRlciwgY2VudGVyOworICAg
IGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7CisKKyAgICBib3JkZXI6IDFweCBzb2xpZCBy
Z2IoMTYzLCAxNjMsIDE2Myk7CisgICAgYm9yZGVyLXJhZGl1czogNHB4OworCisgICAgYm94LXNo
YWRvdzogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjQ1KSAwIDFweCAwOworCisgICAgbWFyZ2luOiA0
cHggMTBweDsKK30KKworYm9keS53aW5kb3ctaW5hY3RpdmUgLnRvb2xiYXIgLmRhc2hib2FyZC1j
b250YWluZXIgeworICAgIGJvcmRlci1jb2xvcjogcmdiKDE5NiwgMTk2LCAxOTYpOworICAgIGJh
Y2tncm91bmQtaW1hZ2U6IG5vbmU7CisgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDIzOSwgMjM5
LCAyMzkpOworfQorCisudG9vbGJhci5jb2xsYXBzZWQgLmRhc2hib2FyZC1jb250YWluZXIsCiti
b2R5LmphdmFzY3JpcHQgLnRvb2xiYXIgLmRhc2hib2FyZC1jb250YWluZXIgeworICAgIHdpZHRo
OiAxNzVweDsKK30KKworLnRvb2xiYXIuc21hbGwtc2l6ZS5pY29uLWFuZC1sYWJlbC12ZXJ0aWNh
bCAuZGFzaGJvYXJkLWNvbnRhaW5lciwKKy50b29sYmFyLm5vcm1hbC1zaXplLmljb24tYW5kLWxh
YmVsLXZlcnRpY2FsIC5kYXNoYm9hcmQtY29udGFpbmVyIHsKKyAgICBtYXJnaW4tdG9wOiA2cHg7
Cit9CisKKy8qIFN0eWxlcyBmb3IgdGhlIGV4dHJhIHNob3J0IHN0eWxlLCBvbmUgcm93IHdpdGgg
cXVpdGUgYSBzbWFsbCB5LW1hcmdpbiAqLworCisudG9vbGJhci5sYWJlbC1vbmx5IC5kYXNoYm9h
cmQtY29udGFpbmVyLAorLnRvb2xiYXIuc21hbGwtc2l6ZS5pY29uLW9ubHkgLmRhc2hib2FyZC1j
b250YWluZXIsCisudG9vbGJhci5zbWFsbC1zaXplLmljb24tYW5kLWxhYmVsLXZlcnRpY2FsIC5k
YXNoYm9hcmQtY29udGFpbmVyLAorLnRvb2xiYXIuc21hbGwtc2l6ZS5pY29uLWFuZC1sYWJlbC1o
b3Jpem9udGFsIC5kYXNoYm9hcmQtY29udGFpbmVyIHsKKyAgICBoZWlnaHQ6IDIycHg7Cit9CisK
Ky8qIFN0eWxlcyBmb3IgdGhlIGZhaXJseSBzaG9ydCBzdHlsZSwgb25lIHJvdyB3aXRoIHF1aXRl
IGEgYml0IG9mIHktbWFyZ2luICovCisKKy50b29sYmFyLm5vcm1hbC1zaXplLmljb24tb25seSAu
ZGFzaGJvYXJkLWNvbnRhaW5lciwKKy50b29sYmFyLm5vcm1hbC1zaXplLmljb24tYW5kLWxhYmVs
LXZlcnRpY2FsIC5kYXNoYm9hcmQtY29udGFpbmVyLAorLnRvb2xiYXIubm9ybWFsLXNpemUuaWNv
bi1hbmQtbGFiZWwtaG9yaXpvbnRhbCAuZGFzaGJvYXJkLWNvbnRhaW5lciB7CisgICAgaGVpZ2h0
OiAzMHB4OworfQorCisvKiBEZWZhdWx0IHN0eWxlcyBmb3IgZGFzaGJvYXJkcyAqLworCisudG9v
bGJhciAuZGFzaGJvYXJkIHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgdG9wOiAwOwor
ICAgIGJvdHRvbTogMDsKKyAgICBsZWZ0OiAwOworICAgIHJpZ2h0OiAwOworCisgICAgcGFkZGlu
ZzogMCA1cHg7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9EYXNoYm9hcmRDb250YWluZXJWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGFzaGJvYXJkQ29udGFpbmVyVmlldy5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi44OWE3YWE0OTI1YTE4YzhkZTE3YzBhNjIxNmZiODIxZDM1MmI4NzMwCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGFzaGJv
YXJkQ29udGFpbmVyVmlldy5qcwpAQCAtMCwwICsxLDEyNiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCitXZWJJbnNwZWN0b3IuRGFzaGJvYXJkQ29udGFpbmVyVmlldyA9IGZ1bmN0aW9u
KCkgeworICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKworICAgIHRoaXMuX3Rv
b2xiYXJJdGVtID0gbmV3IFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uSXRlbSgiZGFzaGJvYXJkLWNv
bnRhaW5lciIsICJncm91cCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQWN0aXZpdHkgVmlld2Vy
IikpOworCisgICAgdGhpcy5fZGFzaGJvYXJkVmlld3MgPSBbXTsKKyAgICB0aGlzLl9jdXJyZW50
VmlldyA9IG51bGw7Cit9OworCitXZWJJbnNwZWN0b3IuRGFzaGJvYXJkQ29udGFpbmVyVmlldy5w
cm90b3R5cGUgPSB7CisgICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5EYXNoYm9hcmRDb250
YWluZXJWaWV3LAorICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGUs
CisKKyAgICAvLyBQdWJsaWMKKworICAgIGdldCB0b29sYmFySXRlbSgpCisgICAgeworICAgICAg
ICByZXR1cm4gdGhpcy5fdG9vbGJhckl0ZW07CisgICAgfSwKKworICAgIGdldCBjdXJyZW50RGFz
aGJvYXJkVmlldygpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fY3VycmVudFZpZXc7Cisg
ICAgfSwKKworICAgIHNob3dEYXNoYm9hcmRWaWV3Rm9yUmVwcmVzZW50ZWRPYmplY3Q6IGZ1bmN0
aW9uKHJlcHJlc2VudGVkT2JqZWN0KQorICAgIHsKKyAgICAgICAgdmFyIGRhc2hib2FyZFZpZXcg
PSB0aGlzLl9kYXNoYm9hcmRWaWV3Rm9yUmVwcmVzZW50ZWRPYmplY3QocmVwcmVzZW50ZWRPYmpl
Y3QpOworICAgICAgICBpZiAoIWRhc2hib2FyZFZpZXcpCisgICAgICAgICAgICByZXR1cm4gbnVs
bDsKKworICAgICAgICB0aGlzLl9zaG93RGFzaGJvYXJkVmlldyhkYXNoYm9hcmRWaWV3KTsKKwor
ICAgICAgICByZXR1cm4gZGFzaGJvYXJkVmlldzsKKyAgICB9LAorCisgICAgLy8gUHJpdmF0ZQor
CisgICAgX2Rhc2hib2FyZFZpZXdGb3JSZXByZXNlbnRlZE9iamVjdDogZnVuY3Rpb24ocmVwcmVz
ZW50ZWRPYmplY3QpCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydChyZXByZXNlbnRlZE9i
amVjdCk7CisgICAgICAgIGlmICghcmVwcmVzZW50ZWRPYmplY3QpCisgICAgICAgICAgICByZXR1
cm4gbnVsbDsKKworICAgICAgICAvLyBJdGVyYXRlIG92ZXIgYWxsIHRoZSBrbm93biBjb250ZW50
IHZpZXdzIGZvciB0aGUgcmVwcmVzZW50ZWRPYmplY3QgKGlmIGFueSkgYW5kIGZpbmQgb25lIHRo
YXQgZG9lc24ndAorICAgICAgICAvLyBoYXZlIGEgcGFyZW50IGNvbnRhaW5lciBvciBoYXMgdGhp
cyBjb250YWluZXIgYXMgaXRzIHBhcmVudC4KKyAgICAgICAgdmFyIGRhc2hib2FyZFZpZXcgPSBu
dWxsOworICAgICAgICBmb3IgKHZhciBpID0gMDsgcmVwcmVzZW50ZWRPYmplY3QuX19kYXNoYm9h
cmRWaWV3cyAmJiBpIDwgcmVwcmVzZW50ZWRPYmplY3QuX19kYXNoYm9hcmRWaWV3cy5sZW5ndGg7
ICsraSkgeworICAgICAgICAgICAgdmFyIGN1cnJlbnREYXNoYm9hcmRWaWV3ID0gcmVwcmVzZW50
ZWRPYmplY3QuX19kYXNoYm9hcmRWaWV3c1tpXTsKKyAgICAgICAgICAgIGlmICghY3VycmVudERh
c2hib2FyZFZpZXcuX3BhcmVudENvbnRhaW5lciB8fCBjdXJyZW50RGFzaGJvYXJkVmlldy5fcGFy
ZW50Q29udGFpbmVyID09PSB0aGlzKSB7CisgICAgICAgICAgICAgICAgZGFzaGJvYXJkVmlldyA9
IGN1cnJlbnREYXNoYm9hcmRWaWV3OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisKKyAgICAgICAgY29uc29sZS5hc3NlcnQoIWRhc2hib2FyZFZpZXcg
fHwgZGFzaGJvYXJkVmlldyBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5EYXNoYm9hcmRWaWV3KTsK
KyAgICAgICAgaWYgKGRhc2hib2FyZFZpZXcgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuRGFzaGJv
YXJkVmlldykKKyAgICAgICAgICAgIHJldHVybiBkYXNoYm9hcmRWaWV3OworCisgICAgICAgIHRy
eSB7CisgICAgICAgICAgICAvLyBObyBleGlzdGluZyBjb250ZW50IHZpZXcgZm91bmQsIG1ha2Ug
YSBuZXcgb25lLgorICAgICAgICAgICAgZGFzaGJvYXJkVmlldyA9IG5ldyBXZWJJbnNwZWN0b3Iu
RGFzaGJvYXJkVmlldyhyZXByZXNlbnRlZE9iamVjdCk7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsK
KyAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7CisgICAgICAgICAgICByZXR1cm4gbnVsbDsK
KyAgICAgICAgfQorCisgICAgICAgIC8vIFJlbWVtYmVyIHRoaXMgY29udGVudCB2aWV3IGZvciBm
dXR1cmUgY2FsbHMuCisgICAgICAgIGlmICghcmVwcmVzZW50ZWRPYmplY3QuX19kYXNoYm9hcmRW
aWV3cykKKyAgICAgICAgICAgIHJlcHJlc2VudGVkT2JqZWN0Ll9fZGFzaGJvYXJkVmlld3MgPSBb
XTsKKyAgICAgICAgcmVwcmVzZW50ZWRPYmplY3QuX19kYXNoYm9hcmRWaWV3cy5wdXNoKGRhc2hi
b2FyZFZpZXcpOworCisgICAgICAgIHJldHVybiBkYXNoYm9hcmRWaWV3OworICAgIH0sCisKKyAg
ICBfc2hvd0Rhc2hib2FyZFZpZXc6IGZ1bmN0aW9uKGRhc2hib2FyZFZpZXcpCisgICAgeworICAg
ICAgICBjb25zb2xlLmFzc2VydChkYXNoYm9hcmRWaWV3IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9y
LkRhc2hib2FyZFZpZXcpOworICAgICAgICBpZiAoIShkYXNoYm9hcmRWaWV3IGluc3RhbmNlb2Yg
V2ViSW5zcGVjdG9yLkRhc2hib2FyZFZpZXcpKQorICAgICAgICAgICAgcmV0dXJuIG51bGw7CisK
KyAgICAgICAgLy8gVGhlIGRhc2hib2FyZCB2aWV3IHNob3VsZG4ndCBiZSBhc3NvY2lhdGVkIHdp
dGggYW55IG90aGVyIGNvbnRhaW5lci4KKyAgICAgICAgY29uc29sZS5hc3NlcnQoIWRhc2hib2Fy
ZFZpZXcucGFyZW50Q29udGFpbmVyIHx8IGRhc2hib2FyZFZpZXcucGFyZW50Q29udGFpbmVyID09
PSB0aGlzKTsKKyAgICAgICAgaWYgKGRhc2hib2FyZFZpZXcucGFyZW50Q29udGFpbmVyICYmIGRh
c2hib2FyZFZpZXcucGFyZW50Q29udGFpbmVyICE9PSB0aGlzKQorICAgICAgICAgICAgcmV0dXJu
IG51bGw7CisKKyAgICAgICAgLy8gQXNzb2NpYXRlIHdpdGggdGhlIG5ldyBkYXNoYm9hcmQgdmll
dy4KKyAgICAgICAgZGFzaGJvYXJkVmlldy5fcGFyZW50Q29udGFpbmVyID0gdGhpczsKKworICAg
ICAgICBpZiAodGhpcy5fY3VycmVudFZpZXcpIHsKKyAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRW
aWV3LmhpZGRlbigpOworICAgICAgICAgICAgdGhpcy5fY3VycmVudFZpZXcuZWxlbWVudC5wYXJl
bnROb2RlLnJlbW92ZUNoaWxkKHRoaXMuX2N1cnJlbnRWaWV3LmVsZW1lbnQpOworICAgICAgICB9
CisKKyAgICAgICAgdGhpcy5fY3VycmVudFZpZXcgPSBkYXNoYm9hcmRWaWV3OworICAgICAgICB0
aGlzLl90b29sYmFySXRlbS5lbGVtZW50LmFwcGVuZENoaWxkKGRhc2hib2FyZFZpZXcuZWxlbWVu
dCk7CisgICAgICAgIGRhc2hib2FyZFZpZXcuc2hvd24oKTsKKworICAgICAgICByZXR1cm4gZGFz
aGJvYXJkVmlldzsKKyAgICB9Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvRGFzaGJvYXJkVmlldy5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EYXNoYm9hcmRWaWV3LmNzcwpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggYzNiNjQ5OGEwY2YwOTllYTAwY2FhNjhiY2RlZjUxNDkyNmZkNjBl
ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EYXNoYm9hcmRWaWV3LmNzcworKysg
L2Rldi9udWxsCkBAIC0xLDI0MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotLnRvb2xiYXIgLmRhc2hi
b2FyZCB7Ci0gICAgZGlzcGxheTogLXdlYmtpdC1mbGV4OwotICAgIC13ZWJraXQtZmxleC1mbG93
OiByb3cgbm93cmFwOwotCi0gICAgLXdlYmtpdC1qdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdl
ZW47Ci0KLSAgICBtYXJnaW46IDRweCAxMHB4OwotICAgIHBhZGRpbmc6IDAgNXB4OwotCi0gICAg
d2lkdGg6IDM3NXB4OwotCi0gICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRv
IGJvdHRvbSwgcmdiYSgwLCAxMjgsIDI1NSwgMCksIHJnYmEoMCwgMTI4LCAyNTUsIDAuMDc1KSks
Ci0gICAgICAgIGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgwLCAwLCAwLCAwLjA5KSwg
dHJhbnNwYXJlbnQsIHJnYmEoMCwgMCwgMCwgMC4wOSkpLAotICAgICAgICBsaW5lYXItZ3JhZGll
bnQodG8gYm90dG9tLCByZ2IoMjQwLCAyNDQsIDI1MSksIHJnYigyNTAsIDI1MywgMjU1KSk7Ci0g
ICAgYmFja2dyb3VuZC1zaXplOiAxMDAlIDZweCwgYXV0bywgYXV0bzsKLSAgICBiYWNrZ3JvdW5k
LXBvc2l0aW9uOiBib3R0b20sIGNlbnRlciwgY2VudGVyOwotICAgIGJhY2tncm91bmQtcmVwZWF0
OiBuby1yZXBlYXQ7Ci0KLSAgICBib3JkZXI6IDFweCBzb2xpZCByZ2IoMTYzLCAxNjMsIDE2Myk7
Ci0gICAgYm9yZGVyLXJhZGl1czogNHB4OwotCi0gICAgYm94LXNoYWRvdzogcmdiYSgyNTUsIDI1
NSwgMjU1LCAwLjQ1KSAwIDFweCAwOwotfQotCi1ib2R5LndpbmRvdy1pbmFjdGl2ZSAudG9vbGJh
ciAuZGFzaGJvYXJkIHsKLSAgICBib3JkZXItY29sb3I6IHJnYigxOTYsIDE5NiwgMTk2KTsKLSAg
ICBiYWNrZ3JvdW5kLWltYWdlOiBub25lOwotICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigyMzks
IDIzOSwgMjM5KTsKLX0KLQotLnRvb2xiYXIuY29sbGFwc2VkIC5kYXNoYm9hcmQsCi1ib2R5Lmph
dmFzY3JpcHQgLnRvb2xiYXIgLmRhc2hib2FyZCB7Ci0gICAgd2lkdGg6IDE3NXB4OwotfQotCi1i
b2R5LndlYiAudG9vbGJhci5jb2xsYXBzZWQgLmRhc2hib2FyZCA+IC50aW1lLAotYm9keS53ZWIg
LnRvb2xiYXIuY29sbGFwc2VkIC5kYXNoYm9hcmQgPiAucmVzb3VyY2VzU2l6ZSwKLWJvZHkud2Vi
IC50b29sYmFyLmNvbGxhcHNlZCAuZGFzaGJvYXJkID4gLmxvZ3MgewotICAgIGRpc3BsYXk6IG5v
bmU7Ci19Ci0KLWJvZHkuamF2YXNjcmlwdCAudG9vbGJhciAuZGFzaGJvYXJkID4gLnRpbWUsCi1i
b2R5LmphdmFzY3JpcHQgLnRvb2xiYXIgLmRhc2hib2FyZCA+IC5yZXNvdXJjZXNTaXplLAotYm9k
eS5qYXZhc2NyaXB0IC50b29sYmFyIC5kYXNoYm9hcmQgPiAucmVzb3VyY2VzQ291bnQgewotICAg
IGRpc3BsYXk6IG5vbmU7Ci19Ci0KLS50b29sYmFyIC5kYXNoYm9hcmQgPiAuaXRlbSB7Ci0gICAg
Zm9udC1mYW1pbHk6IEhlbHZldGljYSwgc2Fucy1zZXJpZjsKLSAgICBmb250LXdlaWdodDogYm9s
ZDsKLSAgICBmb250LXNpemU6IDExcHg7Ci0gICAgbGluZS1oZWlnaHQ6IDEycHg7Ci0KLSAgICBw
YWRkaW5nOiAwIDVweDsKLQotICAgIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKLQotICAgIG1pbi13
aWR0aDogNDVweDsKLQotICAgIC13ZWJraXQtanVzdGlmeS1jb250ZW50OiBjZW50ZXI7Ci0gICAg
LXdlYmtpdC1hbGlnbi1pdGVtczogY2VudGVyOwotCi0gICAgYm9yZGVyLXJhZGl1czogNHB4Owot
ICAgIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50OwotfQotCi0udG9vbGJhciAuZGFzaGJv
YXJkID4gLnRpbWUsCi0udG9vbGJhciAuZGFzaGJvYXJkID4gLnJlc291cmNlc1NpemUgewotICAg
IG1pbi13aWR0aDogNzBweDsKLX0KLQotLnRvb2xiYXIgLmRhc2hib2FyZCA+IC5pdGVtLmVuYWJs
ZWQ6aG92ZXIgewotICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4xKTsKLX0K
LQotLnRvb2xiYXIgLmRhc2hib2FyZCA+IC5pdGVtLmVuYWJsZWQ6YWN0aXZlIHsKLSAgICBib3Jk
ZXI6IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMik7Ci19Ci0KLS50b29sYmFyIC5kYXNoYm9h
cmQgPiAuaXRlbSA+ICogewotICAgIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKLSAgICAtd2Via2l0
LWFsaWduLWl0ZW1zOiBjZW50ZXI7Ci19Ci0KLS50b29sYmFyIC5kYXNoYm9hcmQgPiAuaXRlbSA+
IGltZyB7Ci0gICAgb3BhY2l0eTogMC4yOwotICAgIHdpZHRoOiAxNnB4OwotICAgIGhlaWdodDog
MTZweDsKLSAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKLX0KLQotLnRvb2xiYXIgLmRhc2hib2Fy
ZCA+IC5pdGVtLmVuYWJsZWQgPiBpbWcgewotICAgIG9wYWNpdHk6IDAuNTsKLX0KLQotLnRvb2xi
YXIgLmRhc2hib2FyZCA+IC5pdGVtLmVuYWJsZWQ6aG92ZXIgPiBpbWcgewotICAgIG9wYWNpdHk6
IDAuNjU7Ci19Ci0KLS50b29sYmFyIC5kYXNoYm9hcmQgPiAuaXRlbSA+IGRpdiB7Ci0gICAgZGlz
cGxheTogLXdlYmtpdC1mbGV4OwotICAgIC13ZWJraXQtZmxleDogMTsKLQotICAgIGNvbG9yOiBy
Z2JhKDAsIDAsIDAsIDAuMik7Ci0gICAgcGFkZGluZy1sZWZ0OiAycHg7Ci19Ci0KLS50b29sYmFy
IC5kYXNoYm9hcmQgPiAuaXRlbS5lbmFibGVkID4gZGl2IHsKLSAgICBjb2xvcjogcmdiYSgwLCAw
LCAwLCAwLjcpOwotfQotCi0udG9vbGJhciAuZGFzaGJvYXJkID4gLml0ZW0uZW5hYmxlZDpob3Zl
ciA+IGRpdiB7Ci0gICAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC44NSk7Ci19Ci0KLS50b29sYmFy
IC5kYXNoYm9hcmQgPiAucmVzb3VyY2VzQ291bnQgPiBpbWcgewotICAgIGNvbnRlbnQ6IHVybCgu
Li9JbWFnZXMvUmVzb3VyY2VzLnN2Zyk7Ci19Ci0KLS50b29sYmFyIC5kYXNoYm9hcmQgPiAudGlt
ZSA+IGltZyB7Ci0gICAgY29udGVudDogdXJsKC4uL0ltYWdlcy9UaW1lLnN2Zyk7Ci19Ci0KLS50
b29sYmFyIC5kYXNoYm9hcmQgPiAubG9ncyA+IGltZyB7Ci0gICAgY29udGVudDogdXJsKC4uL0lt
YWdlcy9Mb2dzLnN2Zyk7Ci19Ci0KLS50b29sYmFyIC5kYXNoYm9hcmQgPiAucmVzb3VyY2VzU2l6
ZSA+IGltZyB7Ci0gICAgY29udGVudDogdXJsKC4uL0ltYWdlcy9XZWlnaHQuc3ZnKTsKLX0KLQot
LnRvb2xiYXIgLmRhc2hib2FyZCA+IC5lcnJvcnMgPiBpbWcgewotICAgIGNvbnRlbnQ6IHVybCgu
Li9JbWFnZXMvRXJyb3JzLnN2Zyk7Ci19Ci0KLS50b29sYmFyIC5kYXNoYm9hcmQgPiAuZXJyb3Jz
LmVuYWJsZWQgPiBpbWcgewotICAgIGNvbnRlbnQ6IHVybCguLi9JbWFnZXMvRXJyb3JzRW5hYmxl
ZC5zdmcpOwotICAgIG9wYWNpdHk6IDAuOTsKLX0KLQotLnRvb2xiYXIgLmRhc2hib2FyZCA+IC5l
cnJvcnMuZW5hYmxlZDpob3ZlciA+IGltZyB7Ci0gICAgb3BhY2l0eTogMTsKLX0KLQotLnRvb2xi
YXIgLmRhc2hib2FyZCA+IC5lcnJvcnMuZW5hYmxlZCA+IGRpdiB7Ci0gICAgY29sb3I6IHJnYmEo
MjAxLCA1NSwgNTcsIDAuOSk7Ci19Ci0KLS50b29sYmFyIC5kYXNoYm9hcmQgPiAuZXJyb3JzLmVu
YWJsZWQ6aG92ZXIgPiBkaXYgewotICAgIGNvbG9yOiByZ2IoMjAxLCA1NSwgNTcpOwotfQotCi0u
dG9vbGJhciAuZGFzaGJvYXJkID4gLmlzc3VlcyA+IGltZyB7Ci0gICAgY29udGVudDogdXJsKC4u
L0ltYWdlcy9Jc3N1ZXMuc3ZnKTsKLX0KLQotLnRvb2xiYXIgLmRhc2hib2FyZCA+IC5pc3N1ZXMu
ZW5hYmxlZCA+IGltZyB7Ci0gICAgY29udGVudDogdXJsKC4uL0ltYWdlcy9Jc3N1ZXNFbmFibGVk
LnN2Zyk7Ci0gICAgb3BhY2l0eTogMC45OwotfQotCi0udG9vbGJhciAuZGFzaGJvYXJkID4gLmlz
c3Vlcy5lbmFibGVkOmhvdmVyID4gaW1nIHsKLSAgICBvcGFjaXR5OiAxOwotfQotCi0udG9vbGJh
ciAuZGFzaGJvYXJkID4gLmlzc3Vlcy5lbmFibGVkID4gZGl2IHsKLSAgICBjb2xvcjogcmdiYSgy
MjQsIDE2NCwgNCwgMC45KTsKLX0KLQotLnRvb2xiYXIgLmRhc2hib2FyZCA+IC5pc3N1ZXMuZW5h
YmxlZDpob3ZlciA+IGRpdiB7Ci0gICAgY29sb3I6IHJnYigyMjQsIDE2NCwgNCk7Ci19Ci0KLS50
b29sYmFyLnNtYWxsLXNpemUuaWNvbi1hbmQtbGFiZWwtdmVydGljYWwgLmRhc2hib2FyZCwKLS50
b29sYmFyLm5vcm1hbC1zaXplLmljb24tYW5kLWxhYmVsLXZlcnRpY2FsIC5kYXNoYm9hcmQgewot
ICAgIG1hcmdpbi10b3A6IDZweDsKLX0KLQotLyogU3R5bGVzIGZvciB0aGUgZXh0cmEgc2hvcnQg
c3R5bGUsIG9uZSByb3cgd2l0aCBxdWl0ZSBhIHNtYWxsIHktbWFyZ2luICovCi0KLS50b29sYmFy
LmxhYmVsLW9ubHkgLmRhc2hib2FyZCwKLS50b29sYmFyLnNtYWxsLXNpemUuaWNvbi1vbmx5IC5k
YXNoYm9hcmQsCi0udG9vbGJhci5zbWFsbC1zaXplLmljb24tYW5kLWxhYmVsLXZlcnRpY2FsIC5k
YXNoYm9hcmQsCi0udG9vbGJhci5zbWFsbC1zaXplLmljb24tYW5kLWxhYmVsLWhvcml6b250YWwg
LmRhc2hib2FyZCB7Ci0gICAgaGVpZ2h0OiAyMnB4OwotfQotCi0udG9vbGJhci5sYWJlbC1vbmx5
IC5kYXNoYm9hcmQgPiAuaXRlbSwKLS50b29sYmFyLnNtYWxsLXNpemUuaWNvbi1vbmx5IC5kYXNo
Ym9hcmQgPiAuaXRlbSwKLS50b29sYmFyLnNtYWxsLXNpemUuaWNvbi1hbmQtbGFiZWwtdmVydGlj
YWwgLmRhc2hib2FyZCA+IC5pdGVtLAotLnRvb2xiYXIuc21hbGwtc2l6ZS5pY29uLWFuZC1sYWJl
bC1ob3Jpem9udGFsIC5kYXNoYm9hcmQgPiAuaXRlbSB7Ci0gICAgbWFyZ2luOiAxcHggMDsKLX0K
LQotLyogU3R5bGVzIGZvciB0aGUgZmFpcmx5IHNob3J0IHN0eWxlLCBvbmUgcm93IHdpdGggcXVp
dGUgYSBiaXQgb2YgeS1tYXJnaW4gKi8KLQotLnRvb2xiYXIubm9ybWFsLXNpemUuaWNvbi1vbmx5
IC5kYXNoYm9hcmQsCi0udG9vbGJhci5ub3JtYWwtc2l6ZS5pY29uLWFuZC1sYWJlbC12ZXJ0aWNh
bCAuZGFzaGJvYXJkLAotLnRvb2xiYXIubm9ybWFsLXNpemUuaWNvbi1hbmQtbGFiZWwtaG9yaXpv
bnRhbCAuZGFzaGJvYXJkIHsKLSAgICBoZWlnaHQ6IDMwcHg7Ci19Ci0KLS50b29sYmFyLm5vcm1h
bC1zaXplLmljb24tb25seSAuZGFzaGJvYXJkID4gLml0ZW0sCi0udG9vbGJhci5ub3JtYWwtc2l6
ZS5pY29uLWFuZC1sYWJlbC12ZXJ0aWNhbCAuZGFzaGJvYXJkID4gLml0ZW0sCi0udG9vbGJhci5u
b3JtYWwtc2l6ZS5pY29uLWFuZC1sYWJlbC1ob3Jpem9udGFsIC5kYXNoYm9hcmQgPiAuaXRlbSB7
Ci0gICAgbWFyZ2luOiA0cHggMDsKLX0KLQotLyogU3R5bGVzIGZvciB0aGUgcHVsc2luZyBhbmlt
YXRlZCBzdGF0ZSBvZiBjb25zb2xlIGl0ZW1zICovCi0KLS50b29sYmFyIC5kYXNoYm9hcmQgPiAu
aXRlbS5wdWxzaW5nIHsKLSAgICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBjb25zb2xlLWl0ZW0t
cHVsc2U7Ci0gICAgLXdlYmtpdC1hbmltYXRpb24tZHVyYXRpb246IDAuNzVzOwotfQotCi1ALXdl
YmtpdC1rZXlmcmFtZXMgY29uc29sZS1pdGVtLXB1bHNlIHsKLSAgICA1MCUgeyBvcGFjaXR5OiAw
LjY7IH0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL0Rhc2hib2FyZFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9EYXNoYm9hcmRWaWV3LmpzCmluZGV4IDk4MjgzOWIyMTMzMTI4YjJiZTBkNTY1
NmNiY2UxZjNlYjU4YzE3MmMuLmE3ZWY3ZTFlNzY3NGQ1NzliZjA5NTZlMWY2YzdkYjRkZjI5M2Vh
NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L0Rhc2hib2FyZFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvRGFzaGJvYXJkVmlldy5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTAsMjM2ICsxMCw3NiBAQAogICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQogICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KICAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5EYXNoYm9hcmRWaWV3ID0g
ZnVuY3Rpb24oZWxlbWVudCkKK1dlYkluc3BlY3Rvci5EYXNoYm9hcmRWaWV3ID0gZnVuY3Rpb24o
cmVwcmVzZW50ZWRPYmplY3QsIGlkZW50aWZpZXIpCiB7Ci0gICAgV2ViSW5zcGVjdG9yLk9iamVj
dC5jYWxsKHRoaXMpOwotCi0gICAgdGhpcy5fZWxlbWVudCA9IGVsZW1lbnQ7Ci0KLSAgICB0aGlz
Ll9pdGVtcyA9IHsKLSAgICAgICAgcmVzb3VyY2VzQ291bnQ6IHsKLSAgICAgICAgICAgIHRvb2x0
aXA6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiVG90YWwgbnVtYmVyIG9mIHJlc291cmNlcywgY2xp
Y2sgdG8gc2hvdyB0aGUgUmVzb3VyY2VzIG5hdmlnYXRpb24gc2lkZWJhciIpLAotICAgICAgICAg
ICAgaGFuZGxlcjogdGhpcy5fcmVzb3VyY2VzV2FzQ2xpY2tlZAotICAgICAgICB9LAotICAgICAg
ICByZXNvdXJjZXNTaXplOiB7Ci0gICAgICAgICAgICB0b29sdGlwOiBXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIlRvdGFsIHNpemUgb2YgYWxsIHJlc291cmNlcywgY2xpY2sgdG8gc2hvdyB0aGUgTmV0
d29yayBSZXF1ZXN0cyB0aW1lbGluZSIpLAotICAgICAgICAgICAgaGFuZGxlcjogdGhpcy5fbmV0
d29ya0l0ZW1XYXNDbGlja2VkCi0gICAgICAgIH0sCi0gICAgICAgIHRpbWU6IHsKLSAgICAgICAg
ICAgIHRvb2x0aXA6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiVGltZSB1bnRpbCB0aGUgbG9hZCBl
dmVudCBmaXJlZCwgY2xpY2sgdG8gc2hvdyB0aGUgTmV0d29yayBSZXF1ZXN0cyB0aW1lbGluZSIp
LAotICAgICAgICAgICAgaGFuZGxlcjogdGhpcy5fbmV0d29ya0l0ZW1XYXNDbGlja2VkCi0gICAg
ICAgIH0sCi0gICAgICAgIGxvZ3M6IHsKLSAgICAgICAgICAgIHRvb2x0aXA6IFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiQ29uc29sZSBsb2dzLCBjbGljayB0byBzaG93IHRoZSBDb25zb2xlIiksCi0g
ICAgICAgICAgICBoYW5kbGVyOiB0aGlzLl9jb25zb2xlSXRlbVdhc0NsaWNrZWQuYmluZCh0aGlz
LCBXZWJJbnNwZWN0b3IuTG9nQ29udGVudFZpZXcuU2NvcGVzLkxvZ3MpCi0gICAgICAgIH0sCi0g
ICAgICAgIGVycm9yczogewotICAgICAgICAgICAgdG9vbHRpcDogV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJDb25zb2xlIGVycm9ycywgY2xpY2sgdG8gc2hvdyB0aGUgQ29uc29sZSIpLAotICAgICAg
ICAgICAgaGFuZGxlcjogdGhpcy5fY29uc29sZUl0ZW1XYXNDbGlja2VkLmJpbmQodGhpcywgV2Vi
SW5zcGVjdG9yLkxvZ0NvbnRlbnRWaWV3LlNjb3Blcy5FcnJvcnMpCi0gICAgICAgIH0sCi0gICAg
ICAgIGlzc3VlczogewotICAgICAgICAgICAgdG9vbHRpcDogV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJDb25zb2xlIHdhcm5pbmdzLCBjbGljayB0byBzaG93IHRoZSBDb25zb2xlIiksCi0gICAgICAg
ICAgICBoYW5kbGVyOiB0aGlzLl9jb25zb2xlSXRlbVdhc0NsaWNrZWQuYmluZCh0aGlzLCBXZWJJ
bnNwZWN0b3IuTG9nQ29udGVudFZpZXcuU2NvcGVzLldhcm5pbmdzKQotICAgICAgICB9Ci0gICAg
fTsKLQotICAgIGZvciAodmFyIG5hbWUgaW4gdGhpcy5faXRlbXMpCi0gICAgICAgIHRoaXMuX2Fw
cGVuZEVsZW1lbnRGb3JOYW1lZEl0ZW0obmFtZSk7Ci0KLSAgICB0aGlzLnJlc291cmNlc0NvdW50
ID0gMDsKLSAgICB0aGlzLnJlc291cmNlc1NpemUgPSAwOwotICAgIHRoaXMudGltZSA9IDA7Ci0g
ICAgdGhpcy5sb2dzID0gMDsKLSAgICB0aGlzLmVycm9ycyA9IDA7Ci0gICAgdGhpcy5pc3N1ZXMg
PSAwOwotfTsKLQotV2ViSW5zcGVjdG9yLkRhc2hib2FyZFZpZXcuRW5hYmxlZFN0eWxlQ2xhc3NO
YW1lID0gImVuYWJsZWQiOwotCi1XZWJJbnNwZWN0b3IuRGFzaGJvYXJkVmlldy5wcm90b3R5cGUg
PSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5EYXNoYm9hcmRWaWV3LAotCi0gICAg
Ly8gUHVibGljCi0KLSAgICBnZXQgbG9ncygpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5f
bG9nczsKLSAgICB9LAotCi0gICAgc2V0IGxvZ3MobG9ncykKLSAgICB7Ci0gICAgICAgIHRoaXMu
X3NldENvbnNvbGVJdGVtVmFsdWUoImxvZ3MiLCBsb2dzKTsKLSAgICB9LAorICAgIC8vIENyZWF0
aW5nIGEgbmV3IERhc2hib2FyZFZpZXcgZGlyZWN0bHkgcmV0dXJucyBhbiBpbnN0YW5jZSBvZiB0
aGUgcHJvcGVyIHN1YmNsYXNzLgorICAgIGlmICh0aGlzLmNvbnN0cnVjdG9yID09PSBXZWJJbnNw
ZWN0b3IuRGFzaGJvYXJkVmlldykgeworICAgICAgICBjb25zb2xlLmFzc2VydChyZXByZXNlbnRl
ZE9iamVjdCk7CiAKLSAgICBnZXQgaXNzdWVzKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlz
Ll9pc3N1ZXM7Ci0gICAgfSwKLQotICAgIHNldCBpc3N1ZXMoaXNzdWVzKQotICAgIHsKLSAgICAg
ICAgdGhpcy5fc2V0Q29uc29sZUl0ZW1WYWx1ZSgiaXNzdWVzIiwgaXNzdWVzKTsKLSAgICB9LAot
Ci0gICAgZ2V0IGVycm9ycygpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fZXJyb3JzOwot
ICAgIH0sCi0KLSAgICBzZXQgZXJyb3JzKGVycm9ycykKLSAgICB7Ci0gICAgICAgIHRoaXMuX3Nl
dENvbnNvbGVJdGVtVmFsdWUoImVycm9ycyIsIGVycm9ycyk7Ci0gICAgfSwKLQotICAgIHNldCB0
aW1lKHRpbWUpCi0gICAgewotICAgICAgICB2YXIgaXRlbSA9IHRoaXMuX2l0ZW1zLnRpbWU7Ci0g
ICAgICAgIGl0ZW0udGV4dCA9IHRpbWUgPyBOdW1iZXIuc2Vjb25kc1RvU3RyaW5nKHRpbWUpIDog
Ilx1MjAxNCI7Ci0gICAgICAgIHRoaXMuX3NldEl0ZW1FbmFibGVkKGl0ZW0sIHRpbWUgPiAwKTsK
LSAgICB9LAorICAgICAgICBpZiAocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNw
ZWN0b3IuRGVmYXVsdERhc2hib2FyZCkKKyAgICAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVj
dG9yLkRlZmF1bHREYXNoYm9hcmRWaWV3KHJlcHJlc2VudGVkT2JqZWN0KTsKIAotICAgIGdldCBy
ZXNvdXJjZXNDb3VudCgpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fcmVzb3VyY2VzQ291
bnQ7Ci0gICAgfSwKLQotICAgIHNldCByZXNvdXJjZXNDb3VudChyZXNvdXJjZXNDb3VudCkKLSAg
ICB7Ci0gICAgICAgIHRoaXMuX3Jlc291cmNlc0NvdW50ID0gcmVzb3VyY2VzQ291bnQ7Ci0KLSAg
ICAgICAgdmFyIGl0ZW0gPSB0aGlzLl9pdGVtcy5yZXNvdXJjZXNDb3VudDsKLSAgICAgICAgaXRl
bS50ZXh0ID0gdGhpcy5fZm9ybWF0UG9zc2libGVMYXJnZU51bWJlcihyZXNvdXJjZXNDb3VudCk7
Ci0gICAgICAgIHRoaXMuX3NldEl0ZW1FbmFibGVkKGl0ZW0sIHJlc291cmNlc0NvdW50ID4gMCk7
Ci0gICAgfSwKLQotICAgIGdldCByZXNvdXJjZXNTaXplKCkKLSAgICB7Ci0gICAgICAgIHJldHVy
biB0aGlzLl9yZXNvdXJjZXNTaXplOwotICAgIH0sCi0KLSAgICBzZXQgcmVzb3VyY2VzU2l6ZShy
ZXNvdXJjZXNTaXplKQotICAgIHsKLSAgICAgICAgdGhpcy5fcmVzb3VyY2VzU2l6ZSA9IHJlc291
cmNlc1NpemU7Ci0KLSAgICAgICAgdmFyIGl0ZW0gPSB0aGlzLl9pdGVtcy5yZXNvdXJjZXNTaXpl
OwotICAgICAgICBpdGVtLnRleHQgPSByZXNvdXJjZXNTaXplID8gTnVtYmVyLmJ5dGVzVG9TdHJp
bmcocmVzb3VyY2VzU2l6ZSwgZmFsc2UpIDogIlx1MjAxNCI7Ci0gICAgICAgIHRoaXMuX3NldEl0
ZW1FbmFibGVkKGl0ZW0sIHJlc291cmNlc1NpemUgPiAwKTsKLSAgICB9LAotCi0gICAgLy8gUHJp
dmF0ZQorICAgICAgICB0aHJvdyAiQ2FuJ3QgbWFrZSBhIERhc2hib2FyZFZpZXcgZm9yIGFuIHVu
a25vd24gcmVwcmVzZW50ZWRPYmplY3QuIjsKKyAgICB9CiAKLSAgICBfZm9ybWF0UG9zc2libGVM
YXJnZU51bWJlcjogZnVuY3Rpb24obnVtYmVyKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG51bWJl
ciA+IDk5OSA/IFdlYkluc3BlY3Rvci5VSVN0cmluZygiOTk5KyIpIDogbnVtYmVyOwotICAgIH0s
CisgICAgLy8gT3RoZXJ3aXNlLCBhIHN1YmNsYXNzIGlzIGNhbGxpbmcgdGhlIGJhc2UgY29uc3Ry
dWN0b3IuCisgICAgY29uc29sZS5hc3NlcnQodGhpcy5jb25zdHJ1Y3RvciAhPT0gV2ViSW5zcGVj
dG9yLkRhc2hib2FyZFZpZXcgJiYgdGhpcyBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5EYXNoYm9h
cmRWaWV3KTsKKyAgICBjb25zb2xlLmFzc2VydChpZGVudGlmaWVyKTsKIAotICAgIF9hcHBlbmRF
bGVtZW50Rm9yTmFtZWRJdGVtOiBmdW5jdGlvbihuYW1lKQotICAgIHsKLSAgICAgICAgdmFyIGl0
ZW0gPSB0aGlzLl9pdGVtc1tuYW1lXTsKLQotICAgICAgICBpdGVtLmNvbnRhaW5lciA9IHRoaXMu
X2VsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpOwotICAg
ICAgICBpdGVtLmNvbnRhaW5lci5jbGFzc05hbWUgPSAiaXRlbSAiICsgbmFtZTsKLSAgICAgICAg
aXRlbS5jb250YWluZXIudGl0bGUgPSBpdGVtLnRvb2x0aXA7CisgICAgV2ViSW5zcGVjdG9yLk9i
amVjdC5jYWxsKHRoaXMpOwogCi0gICAgICAgIGl0ZW0uY29udGFpbmVyLmFwcGVuZENoaWxkKGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImltZyIpKTsKKyAgICB0aGlzLl9yZXByZXNlbnRlZE9iamVj
dCA9IHJlcHJlc2VudGVkT2JqZWN0OwogCi0gICAgICAgIGl0ZW0ub3V0bGV0ID0gaXRlbS5jb250
YWluZXIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpOworICAgIHRo
aXMuX2VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICB0aGlzLl9l
bGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLkRhc2hib2FyZFZpZXcuU3R5bGVDbGFz
c05hbWUpOworICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChpZGVudGlmaWVyKTsKIAot
ICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoaXRlbSwgInRleHQiLAotICAgICAgICB7Ci0g
ICAgICAgICAgICBzZXQ6IGZ1bmN0aW9uKG5ld1RleHQpCi0gICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgaWYgKG5ld1RleHQgPT09IGl0ZW0ub3V0bGV0LnRleHRDb250ZW50KQotICAgICAg
ICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgaXRlbS5vdXRsZXQudGV4dENv
bnRlbnQgPSBuZXdUZXh0OwotICAgICAgICAgICAgfQotICAgICAgICB9KTsKKyAgICB0aGlzLl9w
YXJlbnRDb250YWluZXIgPSBudWxsOworfTsKIAotICAgICAgICBpdGVtLmNvbnRhaW5lci5hZGRF
dmVudExpc3RlbmVyKCJjbGljayIsIGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgICAgICB0aGlz
Ll9pdGVtV2FzQ2xpY2tlZChuYW1lKTsKLSAgICAgICAgfS5iaW5kKHRoaXMpKTsKLSAgICB9LAor
V2ViSW5zcGVjdG9yLkRhc2hib2FyZFZpZXcuU3R5bGVDbGFzc05hbWUgPSAiZGFzaGJvYXJkIjsK
IAotICAgIF9pdGVtV2FzQ2xpY2tlZDogZnVuY3Rpb24obmFtZSkKLSAgICB7Ci0gICAgICAgIHZh
ciBpdGVtID0gdGhpcy5faXRlbXNbbmFtZV07Ci0gICAgICAgIGlmICghaXRlbS5jb250YWluZXIu
Y2xhc3NMaXN0LmNvbnRhaW5zKFdlYkluc3BlY3Rvci5EYXNoYm9hcmRWaWV3LkVuYWJsZWRTdHls
ZUNsYXNzTmFtZSkpCi0gICAgICAgICAgICByZXR1cm47CitXZWJJbnNwZWN0b3IuRGFzaGJvYXJk
Vmlldy5wcm90b3R5cGUgPSB7CisgICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5EYXNoYm9h
cmRWaWV3LAorICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGUsCiAK
LSAgICAgICAgaWYgKGl0ZW0uaGFuZGxlcikKLSAgICAgICAgICAgIGl0ZW0uaGFuZGxlci5jYWxs
KHRoaXMpOwotICAgIH0sCisgICAgLy8gUHVibGljCiAKLSAgICBfcmVzb3VyY2VzV2FzQ2xpY2tl
ZDogZnVuY3Rpb24oKQorICAgIGdldCBlbGVtZW50KCkKICAgICB7Ci0gICAgICAgIFdlYkluc3Bl
Y3Rvci5uYXZpZ2F0aW9uU2lkZWJhci5zZWxlY3RlZFNpZGViYXJQYW5lbCA9IFdlYkluc3BlY3Rv
ci5yZXNvdXJjZVNpZGViYXJQYW5lbDsKLSAgICAgICAgV2ViSW5zcGVjdG9yLm5hdmlnYXRpb25T
aWRlYmFyLmNvbGxhcHNlZCA9IGZhbHNlOworICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudDsK
ICAgICB9LAogCi0gICAgX25ldHdvcmtJdGVtV2FzQ2xpY2tlZDogZnVuY3Rpb24oKQorICAgIGdl
dCBwYXJlbnRDb250YWluZXIoKQogICAgIHsKLSAgICAgICAgV2ViSW5zcGVjdG9yLm5hdmlnYXRp
b25TaWRlYmFyLnNlbGVjdGVkU2lkZWJhclBhbmVsID0gV2ViSW5zcGVjdG9yLnRpbWVsaW5lU2lk
ZWJhclBhbmVsOworICAgICAgICByZXR1cm4gdGhpcy5fcGFyZW50Q29udGFpbmVyOwogICAgIH0s
CiAKLSAgICBfY29uc29sZUl0ZW1XYXNDbGlja2VkOiBmdW5jdGlvbihzY29wZSkKKyAgICBnZXQg
cmVwcmVzZW50ZWRPYmplY3QoKQogICAgIHsKLSAgICAgICAgV2ViSW5zcGVjdG9yLnNob3dDb25z
b2xlVmlldyhzY29wZSk7CisgICAgICAgIHJldHVybiB0aGlzLl9yZXByZXNlbnRlZE9iamVjdDsK
ICAgICB9LAogCi0gICAgX3NldENvbnNvbGVJdGVtVmFsdWU6IGZ1bmN0aW9uKGl0ZW1OYW1lLCBu
ZXdWYWx1ZSkKKyAgICBzaG93bjogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgdmFyIGlWYXJO
YW1lID0gIl8iICsgaXRlbU5hbWU7Ci0gICAgICAgIHZhciBwcmV2aW91c1ZhbHVlID0gdGhpc1tp
VmFyTmFtZV07Ci0gICAgICAgIHRoaXNbaVZhck5hbWVdID0gbmV3VmFsdWU7Ci0KLSAgICAgICAg
dmFyIGl0ZW0gPSB0aGlzLl9pdGVtc1tpdGVtTmFtZV07Ci0gICAgICAgIGl0ZW0udGV4dCA9IHRo
aXMuX2Zvcm1hdFBvc3NpYmxlTGFyZ2VOdW1iZXIobmV3VmFsdWUpOwotICAgICAgICB0aGlzLl9z
ZXRJdGVtRW5hYmxlZChpdGVtLCBuZXdWYWx1ZSA+IDApOwotCi0gICAgICAgIGlmIChuZXdWYWx1
ZSA8PSBwcmV2aW91c1ZhbHVlKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHZhciBj
b250YWluZXIgPSBpdGVtLmNvbnRhaW5lcjsKLQotICAgICAgICBmdW5jdGlvbiBhbmltYXRpb25F
bmRlZChldmVudCkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKGV2ZW50LnRhcmdldCA9PT0g
Y29udGFpbmVyKSB7Ci0gICAgICAgICAgICAgICAgY29udGFpbmVyLmNsYXNzTGlzdC5yZW1vdmUo
InB1bHNpbmciKTsKLSAgICAgICAgICAgICAgICBjb250YWluZXIucmVtb3ZlRXZlbnRMaXN0ZW5l
cigid2Via2l0QW5pbWF0aW9uRW5kIiwgYW5pbWF0aW9uRW5kZWQpOwotICAgICAgICAgICAgfQot
ICAgICAgICB9Ci0KLSAgICAgICAgLy8gV2UgbmVlZCB0byBmb3JjZSBhIHN0eWxlIGludmFsaWRh
dGlvbiBpbiB0aGUgY2FzZSB3aGVyZSB3ZSBhbHJlYWR5Ci0gICAgICAgIC8vIHdlcmUgYW5pbWF0
aW5nIHRoaXMgaXRlbSBhZnRlciB3ZSd2ZSByZW1vdmVkIHRoZSBwdWxzaW5nIENTUyBjbGFzcy4K
LSAgICAgICAgaWYgKGNvbnRhaW5lci5jbGFzc0xpc3QuY29udGFpbnMoInB1bHNpbmciKSkgewot
ICAgICAgICAgICAgY29udGFpbmVyLmNsYXNzTGlzdC5yZW1vdmUoInB1bHNpbmciKTsKLSAgICAg
ICAgICAgIGNvbnRhaW5lci5yZWNhbGN1bGF0ZVN0eWxlcygpOwotICAgICAgICB9IGVsc2UKLSAg
ICAgICAgICAgIGNvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCJ3ZWJraXRBbmltYXRpb25FbmQi
LCBhbmltYXRpb25FbmRlZCk7Ci0gICAgICAgIAotICAgICAgICBjb250YWluZXIuY2xhc3NMaXN0
LmFkZCgicHVsc2luZyIpOworICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzLgog
ICAgIH0sCiAKLSAgICBfc2V0SXRlbUVuYWJsZWQ6IGZ1bmN0aW9uKGl0ZW0sIGVuYWJsZWQpCisg
ICAgaGlkZGVuOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICBpZiAoZW5hYmxlZCkKLSAgICAg
ICAgICAgIGl0ZW0uY29udGFpbmVyLmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLkRhc2hib2Fy
ZFZpZXcuRW5hYmxlZFN0eWxlQ2xhc3NOYW1lKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAg
aXRlbS5jb250YWluZXIuY2xhc3NMaXN0LnJlbW92ZShXZWJJbnNwZWN0b3IuRGFzaGJvYXJkVmll
dy5FbmFibGVkU3R5bGVDbGFzc05hbWUpOworICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWJj
bGFzc2VzLgogICAgIH0KIH07Ci0KLVdlYkluc3BlY3Rvci5EYXNoYm9hcmRWaWV3LnByb3RvdHlw
ZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RlZmF1bHREYXNoYm9h
cmRWaWV3LmNzcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0Rl
ZmF1bHREYXNoYm9hcmRWaWV3LmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMjliYWFjYmQwZTExYzgzZGE5N2Vm
NGY1OTNhMmMwZjMwN2FhMmViCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGVmYXVsdERhc2hib2FyZFZpZXcuY3NzCkBAIC0wLDAg
KzEsMTk3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK2JvZHkud2ViIC50b29sYmFy
LmNvbGxhcHNlZCAuZGFzaGJvYXJkLmRlZmF1bHQgPiAudGltZSwKK2JvZHkud2ViIC50b29sYmFy
LmNvbGxhcHNlZCAuZGFzaGJvYXJkLmRlZmF1bHQgPiAucmVzb3VyY2VzU2l6ZSwKK2JvZHkud2Vi
IC50b29sYmFyLmNvbGxhcHNlZCAuZGFzaGJvYXJkLmRlZmF1bHQgPiAubG9ncyB7CisgICAgZGlz
cGxheTogbm9uZTsKK30KKworYm9keS5qYXZhc2NyaXB0IC50b29sYmFyIC5kYXNoYm9hcmQuZGVm
YXVsdCA+IC50aW1lLAorYm9keS5qYXZhc2NyaXB0IC50b29sYmFyIC5kYXNoYm9hcmQuZGVmYXVs
dCA+IC5yZXNvdXJjZXNTaXplLAorYm9keS5qYXZhc2NyaXB0IC50b29sYmFyIC5kYXNoYm9hcmQu
ZGVmYXVsdCA+IC5yZXNvdXJjZXNDb3VudCB7CisgICAgZGlzcGxheTogbm9uZTsKK30KKworLnRv
b2xiYXIgLmRhc2hib2FyZC5kZWZhdWx0IHsKKyAgICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7Cisg
ICAgLXdlYmtpdC1mbGV4LWZsb3c6IHJvdyBub3dyYXA7CisgICAgLXdlYmtpdC1qdXN0aWZ5LWNv
bnRlbnQ6IHNwYWNlLWJldHdlZW47Cit9CisKKy50b29sYmFyIC5kYXNoYm9hcmQuZGVmYXVsdCA+
IC5pdGVtIHsKKyAgICBmb250LWZhbWlseTogSGVsdmV0aWNhLCBzYW5zLXNlcmlmOworICAgIGZv
bnQtd2VpZ2h0OiBib2xkOworICAgIGZvbnQtc2l6ZTogMTFweDsKKyAgICBsaW5lLWhlaWdodDog
MTJweDsKKworICAgIHBhZGRpbmc6IDAgNXB4OworCisgICAgZGlzcGxheTogLXdlYmtpdC1mbGV4
OworCisgICAgbWluLXdpZHRoOiA0NXB4OworCisgICAgLXdlYmtpdC1qdXN0aWZ5LWNvbnRlbnQ6
IGNlbnRlcjsKKyAgICAtd2Via2l0LWFsaWduLWl0ZW1zOiBjZW50ZXI7CisKKyAgICBib3JkZXIt
cmFkaXVzOiA0cHg7CisgICAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7Cit9CisKKy50
b29sYmFyIC5kYXNoYm9hcmQuZGVmYXVsdCA+IC50aW1lLAorLnRvb2xiYXIgLmRhc2hib2FyZC5k
ZWZhdWx0ID4gLnJlc291cmNlc1NpemUgeworICAgIG1pbi13aWR0aDogNzBweDsKK30KKworLnRv
b2xiYXIgLmRhc2hib2FyZC5kZWZhdWx0ID4gLml0ZW0uZW5hYmxlZDpob3ZlciB7CisgICAgYm9y
ZGVyOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjEpOworfQorCisudG9vbGJhciAuZGFzaGJv
YXJkLmRlZmF1bHQgPiAuaXRlbS5lbmFibGVkOmFjdGl2ZSB7CisgICAgYm9yZGVyOiAxcHggc29s
aWQgcmdiYSgwLCAwLCAwLCAwLjIpOworfQorCisudG9vbGJhciAuZGFzaGJvYXJkLmRlZmF1bHQg
PiAuaXRlbSA+ICogeworICAgIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKKyAgICAtd2Via2l0LWFs
aWduLWl0ZW1zOiBjZW50ZXI7Cit9CisKKy50b29sYmFyIC5kYXNoYm9hcmQuZGVmYXVsdCA+IC5p
dGVtID4gaW1nIHsKKyAgICBvcGFjaXR5OiAwLjI7CisgICAgd2lkdGg6IDE2cHg7CisgICAgaGVp
Z2h0OiAxNnB4OworICAgIHBvaW50ZXItZXZlbnRzOiBub25lOworfQorCisudG9vbGJhciAuZGFz
aGJvYXJkLmRlZmF1bHQgPiAuaXRlbS5lbmFibGVkID4gaW1nIHsKKyAgICBvcGFjaXR5OiAwLjU7
Cit9CisKKy50b29sYmFyIC5kYXNoYm9hcmQuZGVmYXVsdCA+IC5pdGVtLmVuYWJsZWQ6aG92ZXIg
PiBpbWcgeworICAgIG9wYWNpdHk6IDAuNjU7Cit9CisKKy50b29sYmFyIC5kYXNoYm9hcmQuZGVm
YXVsdCA+IC5pdGVtID4gZGl2IHsKKyAgICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CisgICAgLXdl
YmtpdC1mbGV4OiAxOworCisgICAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4yKTsKKyAgICBwYWRk
aW5nLWxlZnQ6IDJweDsKK30KKworLnRvb2xiYXIgLmRhc2hib2FyZC5kZWZhdWx0ID4gLml0ZW0u
ZW5hYmxlZCA+IGRpdiB7CisgICAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC43KTsKK30KKworLnRv
b2xiYXIgLmRhc2hib2FyZC5kZWZhdWx0ID4gLml0ZW0uZW5hYmxlZDpob3ZlciA+IGRpdiB7Cisg
ICAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC44NSk7Cit9CisKKy50b29sYmFyIC5kYXNoYm9hcmQu
ZGVmYXVsdCA+IC5yZXNvdXJjZXNDb3VudCA+IGltZyB7CisgICAgY29udGVudDogdXJsKC4uL0lt
YWdlcy9SZXNvdXJjZXMuc3ZnKTsKK30KKworLnRvb2xiYXIgLmRhc2hib2FyZC5kZWZhdWx0ID4g
LnRpbWUgPiBpbWcgeworICAgIGNvbnRlbnQ6IHVybCguLi9JbWFnZXMvVGltZS5zdmcpOworfQor
CisudG9vbGJhciAuZGFzaGJvYXJkLmRlZmF1bHQgPiAubG9ncyA+IGltZyB7CisgICAgY29udGVu
dDogdXJsKC4uL0ltYWdlcy9Mb2dzLnN2Zyk7Cit9CisKKy50b29sYmFyIC5kYXNoYm9hcmQuZGVm
YXVsdCA+IC5yZXNvdXJjZXNTaXplID4gaW1nIHsKKyAgICBjb250ZW50OiB1cmwoLi4vSW1hZ2Vz
L1dlaWdodC5zdmcpOworfQorCisudG9vbGJhciAuZGFzaGJvYXJkLmRlZmF1bHQgPiAuZXJyb3Jz
ID4gaW1nIHsKKyAgICBjb250ZW50OiB1cmwoLi4vSW1hZ2VzL0Vycm9ycy5zdmcpOworfQorCisu
dG9vbGJhciAuZGFzaGJvYXJkLmRlZmF1bHQgPiAuZXJyb3JzLmVuYWJsZWQgPiBpbWcgeworICAg
IGNvbnRlbnQ6IHVybCguLi9JbWFnZXMvRXJyb3JzRW5hYmxlZC5zdmcpOworICAgIG9wYWNpdHk6
IDAuOTsKK30KKworLnRvb2xiYXIgLmRhc2hib2FyZC5kZWZhdWx0ID4gLmVycm9ycy5lbmFibGVk
OmhvdmVyID4gaW1nIHsKKyAgICBvcGFjaXR5OiAxOworfQorCisudG9vbGJhciAuZGFzaGJvYXJk
LmRlZmF1bHQgPiAuZXJyb3JzLmVuYWJsZWQgPiBkaXYgeworICAgIGNvbG9yOiByZ2JhKDIwMSwg
NTUsIDU3LCAwLjkpOworfQorCisudG9vbGJhciAuZGFzaGJvYXJkLmRlZmF1bHQgPiAuZXJyb3Jz
LmVuYWJsZWQ6aG92ZXIgPiBkaXYgeworICAgIGNvbG9yOiByZ2IoMjAxLCA1NSwgNTcpOworfQor
CisudG9vbGJhciAuZGFzaGJvYXJkLmRlZmF1bHQgPiAuaXNzdWVzID4gaW1nIHsKKyAgICBjb250
ZW50OiB1cmwoLi4vSW1hZ2VzL0lzc3Vlcy5zdmcpOworfQorCisudG9vbGJhciAuZGFzaGJvYXJk
LmRlZmF1bHQgPiAuaXNzdWVzLmVuYWJsZWQgPiBpbWcgeworICAgIGNvbnRlbnQ6IHVybCguLi9J
bWFnZXMvSXNzdWVzRW5hYmxlZC5zdmcpOworICAgIG9wYWNpdHk6IDAuOTsKK30KKworLnRvb2xi
YXIgLmRhc2hib2FyZC5kZWZhdWx0ID4gLmlzc3Vlcy5lbmFibGVkOmhvdmVyID4gaW1nIHsKKyAg
ICBvcGFjaXR5OiAxOworfQorCisudG9vbGJhciAuZGFzaGJvYXJkLmRlZmF1bHQgPiAuaXNzdWVz
LmVuYWJsZWQgPiBkaXYgeworICAgIGNvbG9yOiByZ2JhKDIyNCwgMTY0LCA0LCAwLjkpOworfQor
CisudG9vbGJhciAuZGFzaGJvYXJkLmRlZmF1bHQgPiAuaXNzdWVzLmVuYWJsZWQ6aG92ZXIgPiBk
aXYgeworICAgIGNvbG9yOiByZ2IoMjI0LCAxNjQsIDQpOworfQorCisvKiBTdHlsZXMgZm9yIHRo
ZSBwdWxzaW5nIGFuaW1hdGVkIHN0YXRlIG9mIGNvbnNvbGUgaXRlbXMgKi8KKworLnRvb2xiYXIg
LmRhc2hib2FyZC5kZWZhdWx0ID4gLml0ZW0ucHVsc2luZyB7CisgICAgLXdlYmtpdC1hbmltYXRp
b24tbmFtZTogY29uc29sZS1pdGVtLXB1bHNlOworICAgIC13ZWJraXQtYW5pbWF0aW9uLWR1cmF0
aW9uOiAwLjc1czsKK30KKworQC13ZWJraXQta2V5ZnJhbWVzIGNvbnNvbGUtaXRlbS1wdWxzZSB7
CisgICAgNTAlIHsgb3BhY2l0eTogMC42OyB9Cit9CisKKworLyogU3R5bGVzIGZvciB0aGUgZXh0
cmEgc2hvcnQgc3R5bGUsIG9uZSByb3cgd2l0aCBxdWl0ZSBhIHNtYWxsIHktbWFyZ2luICovCisK
Ky50b29sYmFyLmxhYmVsLW9ubHkgLmRhc2hib2FyZC5kZWZhdWx0ID4gLml0ZW0sCisudG9vbGJh
ci5zbWFsbC1zaXplLmljb24tb25seSAuZGFzaGJvYXJkLmRlZmF1bHQgPiAuaXRlbSwKKy50b29s
YmFyLnNtYWxsLXNpemUuaWNvbi1hbmQtbGFiZWwtdmVydGljYWwgLmRhc2hib2FyZC5kZWZhdWx0
ID4gLml0ZW0sCisudG9vbGJhci5zbWFsbC1zaXplLmljb24tYW5kLWxhYmVsLWhvcml6b250YWwg
LmRhc2hib2FyZC5kZWZhdWx0ID4gLml0ZW0geworICAgIG1hcmdpbjogMXB4IDA7Cit9CisKKy8q
IFN0eWxlcyBmb3IgdGhlIGZhaXJseSBzaG9ydCBzdHlsZSwgb25lIHJvdyB3aXRoIHF1aXRlIGEg
Yml0IG9mIHktbWFyZ2luICovCisKKy50b29sYmFyLm5vcm1hbC1zaXplLmljb24tb25seSAuZGFz
aGJvYXJkLmRlZmF1bHQgPiAuaXRlbSwKKy50b29sYmFyLm5vcm1hbC1zaXplLmljb24tYW5kLWxh
YmVsLXZlcnRpY2FsIC5kYXNoYm9hcmQuZGVmYXVsdCA+IC5pdGVtLAorLnRvb2xiYXIubm9ybWFs
LXNpemUuaWNvbi1hbmQtbGFiZWwtaG9yaXpvbnRhbCAuZGFzaGJvYXJkLmRlZmF1bHQgPiAuaXRl
bSB7CisgICAgbWFyZ2luOiA0cHggMDsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RlZmF1bHREYXNoYm9hcmRWaWV3LmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGVmYXVsdERhc2hib2FyZFZpZXcu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZTYyNDI5MzAzNzE5OTkxMGMwNzJjYTc2MWI2YjYwNjc0ZTc1OTQ5NAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL0RlZmF1bHREYXNoYm9hcmRWaWV3LmpzCkBAIC0wLDAgKzEsMTkwIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKK1dlYkluc3BlY3Rvci5EZWZhdWx0RGFzaGJvYXJkVmlldyA9IGZ1
bmN0aW9uKHJlcHJlc2VudGVkT2JqZWN0KQoreworICAgIFdlYkluc3BlY3Rvci5EYXNoYm9hcmRW
aWV3LmNhbGwodGhpcywgcmVwcmVzZW50ZWRPYmplY3QsICJkZWZhdWx0Iik7CisKKyAgICByZXBy
ZXNlbnRlZE9iamVjdC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5EZWZhdWx0RGFzaGJv
YXJkLkV2ZW50LkRhdGFEaWRDaGFuZ2UsIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUuYmlu
ZChudWxsLCB0aGlzLl91cGRhdGVEaXNwbGF5LmJpbmQodGhpcykpKTsKKworICAgIHRoaXMuX2l0
ZW1zID0geworICAgICAgICByZXNvdXJjZXNDb3VudDogeworICAgICAgICAgICAgdG9vbHRpcDog
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJUb3RhbCBudW1iZXIgb2YgcmVzb3VyY2VzLCBjbGljayB0
byBzaG93IHRoZSBSZXNvdXJjZXMgbmF2aWdhdGlvbiBzaWRlYmFyIiksCisgICAgICAgICAgICBo
YW5kbGVyOiB0aGlzLl9yZXNvdXJjZXNXYXNDbGlja2VkCisgICAgICAgIH0sCisgICAgICAgIHJl
c291cmNlc1NpemU6IHsKKyAgICAgICAgICAgIHRvb2x0aXA6IFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiVG90YWwgc2l6ZSBvZiBhbGwgcmVzb3VyY2VzLCBjbGljayB0byBzaG93IHRoZSBOZXR3b3Jr
IFJlcXVlc3RzIHRpbWVsaW5lIiksCisgICAgICAgICAgICBoYW5kbGVyOiB0aGlzLl9uZXR3b3Jr
SXRlbVdhc0NsaWNrZWQKKyAgICAgICAgfSwKKyAgICAgICAgdGltZTogeworICAgICAgICAgICAg
dG9vbHRpcDogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJUaW1lIHVudGlsIHRoZSBsb2FkIGV2ZW50
IGZpcmVkLCBjbGljayB0byBzaG93IHRoZSBOZXR3b3JrIFJlcXVlc3RzIHRpbWVsaW5lIiksCisg
ICAgICAgICAgICBoYW5kbGVyOiB0aGlzLl9uZXR3b3JrSXRlbVdhc0NsaWNrZWQKKyAgICAgICAg
fSwKKyAgICAgICAgbG9nczogeworICAgICAgICAgICAgdG9vbHRpcDogV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJDb25zb2xlIGxvZ3MsIGNsaWNrIHRvIHNob3cgdGhlIENvbnNvbGUiKSwKKyAgICAg
ICAgICAgIGhhbmRsZXI6IHRoaXMuX2NvbnNvbGVJdGVtV2FzQ2xpY2tlZC5iaW5kKHRoaXMsIFdl
Ykluc3BlY3Rvci5Mb2dDb250ZW50Vmlldy5TY29wZXMuTG9ncykKKyAgICAgICAgfSwKKyAgICAg
ICAgZXJyb3JzOiB7CisgICAgICAgICAgICB0b29sdGlwOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IkNvbnNvbGUgZXJyb3JzLCBjbGljayB0byBzaG93IHRoZSBDb25zb2xlIiksCisgICAgICAgICAg
ICBoYW5kbGVyOiB0aGlzLl9jb25zb2xlSXRlbVdhc0NsaWNrZWQuYmluZCh0aGlzLCBXZWJJbnNw
ZWN0b3IuTG9nQ29udGVudFZpZXcuU2NvcGVzLkVycm9ycykKKyAgICAgICAgfSwKKyAgICAgICAg
aXNzdWVzOiB7CisgICAgICAgICAgICB0b29sdGlwOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNv
bnNvbGUgd2FybmluZ3MsIGNsaWNrIHRvIHNob3cgdGhlIENvbnNvbGUiKSwKKyAgICAgICAgICAg
IGhhbmRsZXI6IHRoaXMuX2NvbnNvbGVJdGVtV2FzQ2xpY2tlZC5iaW5kKHRoaXMsIFdlYkluc3Bl
Y3Rvci5Mb2dDb250ZW50Vmlldy5TY29wZXMuV2FybmluZ3MpCisgICAgICAgIH0KKyAgICB9Owor
CisgICAgZm9yICh2YXIgbmFtZSBpbiB0aGlzLl9pdGVtcykKKyAgICAgICAgdGhpcy5fYXBwZW5k
RWxlbWVudEZvck5hbWVkSXRlbShuYW1lKTsKK307CisKK1dlYkluc3BlY3Rvci5EZWZhdWx0RGFz
aGJvYXJkVmlldy5FbmFibGVkSXRlbVN0eWxlQ2xhc3NOYW1lID0gImVuYWJsZWQiOworCitXZWJJ
bnNwZWN0b3IuRGVmYXVsdERhc2hib2FyZFZpZXcucHJvdG90eXBlID0geworICAgIGNvbnN0cnVj
dG9yOiBXZWJJbnNwZWN0b3IuRGVmYXVsdERhc2hib2FyZFZpZXcsCisgICAgX19wcm90b19fOiBX
ZWJJbnNwZWN0b3IuRGFzaGJvYXJkVmlldy5wcm90b3R5cGUsCisKKyAgICAvLyBQcml2YXRlCisK
KyAgICBfdXBkYXRlRGlzcGxheTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdmFyIGRhc2hi
b2FyZCA9IHRoaXMucmVwcmVzZW50ZWRPYmplY3Q7CisKKyAgICAgICAgZm9yICh2YXIgY2F0ZWdv
cnkgb2YgWyJsb2dzIiwgImlzc3VlcyIsICJlcnJvcnMiXSkKKyAgICAgICAgICAgIHRoaXMuX3Nl
dENvbnNvbGVJdGVtVmFsdWUoY2F0ZWdvcnksIGRhc2hib2FyZFtjYXRlZ29yeV0pOworCisgICAg
ICAgIHZhciB0aW1lSXRlbSA9IHRoaXMuX2l0ZW1zLnRpbWU7CisgICAgICAgIHRpbWVJdGVtLnRl
eHQgPSBkYXNoYm9hcmQudGltZSA/IE51bWJlci5zZWNvbmRzVG9TdHJpbmcoZGFzaGJvYXJkLnRp
bWUpIDogIlx1MjAxNCI7CisgICAgICAgIHRoaXMuX3NldEl0ZW1FbmFibGVkKHRpbWVJdGVtLCBk
YXNoYm9hcmQudGltZSA+IDApOworCisgICAgICAgIHZhciBjb3VudEl0ZW0gPSB0aGlzLl9pdGVt
cy5yZXNvdXJjZXNDb3VudDsKKyAgICAgICAgY291bnRJdGVtLnRleHQgPSB0aGlzLl9mb3JtYXRQ
b3NzaWJsZUxhcmdlTnVtYmVyKGRhc2hib2FyZC5yZXNvdXJjZXNDb3VudCk7CisgICAgICAgIHRo
aXMuX3NldEl0ZW1FbmFibGVkKGNvdW50SXRlbSwgZGFzaGJvYXJkLnJlc291cmNlc0NvdW50ID4g
MCk7CisKKyAgICAgICAgdmFyIHNpemVJdGVtID0gdGhpcy5faXRlbXMucmVzb3VyY2VzU2l6ZTsK
KyAgICAgICAgc2l6ZUl0ZW0udGV4dCA9IGRhc2hib2FyZC5yZXNvdXJjZXNTaXplID8gTnVtYmVy
LmJ5dGVzVG9TdHJpbmcoZGFzaGJvYXJkLnJlc291cmNlc1NpemUsIGZhbHNlKSA6ICJcdTIwMTQi
OworICAgICAgICB0aGlzLl9zZXRJdGVtRW5hYmxlZChzaXplSXRlbSwgZGFzaGJvYXJkLnJlc291
cmNlc1NpemUgPiAwKTsKKyAgICB9LAorCisgICAgX2Zvcm1hdFBvc3NpYmxlTGFyZ2VOdW1iZXI6
IGZ1bmN0aW9uKG51bWJlcikKKyAgICB7CisgICAgICAgIHJldHVybiBudW1iZXIgPiA5OTkgPyBX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIjk5OSsiKSA6IG51bWJlcjsKKyAgICB9LAorCisgICAgX2Fw
cGVuZEVsZW1lbnRGb3JOYW1lZEl0ZW06IGZ1bmN0aW9uKG5hbWUpCisgICAgeworICAgICAgICB2
YXIgaXRlbSA9IHRoaXMuX2l0ZW1zW25hbWVdOworCisgICAgICAgIGl0ZW0uY29udGFpbmVyID0g
dGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSk7
CisgICAgICAgIGl0ZW0uY29udGFpbmVyLmNsYXNzTmFtZSA9ICJpdGVtICIgKyBuYW1lOworICAg
ICAgICBpdGVtLmNvbnRhaW5lci50aXRsZSA9IGl0ZW0udG9vbHRpcDsKKworICAgICAgICBpdGVt
LmNvbnRhaW5lci5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKSk7CisK
KyAgICAgICAgaXRlbS5vdXRsZXQgPSBpdGVtLmNvbnRhaW5lci5hcHBlbmRDaGlsZChkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJkaXYiKSk7CisKKyAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5
KGl0ZW0sICJ0ZXh0IiwKKyAgICAgICAgeworICAgICAgICAgICAgc2V0OiBmdW5jdGlvbihuZXdU
ZXh0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChuZXdUZXh0ID09PSBpdGVt
Lm91dGxldC50ZXh0Q29udGVudCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgICAgIGl0ZW0ub3V0bGV0LnRleHRDb250ZW50ID0gbmV3VGV4dDsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfSk7CisKKyAgICAgICAgaXRlbS5jb250YWluZXIuYWRkRXZlbnRMaXN0ZW5l
cigiY2xpY2siLCBmdW5jdGlvbihldmVudCkgeworICAgICAgICAgICAgdGhpcy5faXRlbVdhc0Ns
aWNrZWQobmFtZSk7CisgICAgICAgIH0uYmluZCh0aGlzKSk7CisgICAgfSwKKworICAgIF9pdGVt
V2FzQ2xpY2tlZDogZnVuY3Rpb24obmFtZSkKKyAgICB7CisgICAgICAgIHZhciBpdGVtID0gdGhp
cy5faXRlbXNbbmFtZV07CisgICAgICAgIGlmICghaXRlbS5jb250YWluZXIuY2xhc3NMaXN0LmNv
bnRhaW5zKFdlYkluc3BlY3Rvci5EZWZhdWx0RGFzaGJvYXJkVmlldy5FbmFibGVkSXRlbVN0eWxl
Q2xhc3NOYW1lKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAoaXRlbS5oYW5k
bGVyKQorICAgICAgICAgICAgaXRlbS5oYW5kbGVyLmNhbGwodGhpcyk7CisgICAgfSwKKworICAg
IF9yZXNvdXJjZXNXYXNDbGlja2VkOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBXZWJJbnNw
ZWN0b3IubmF2aWdhdGlvblNpZGViYXIuc2VsZWN0ZWRTaWRlYmFyUGFuZWwgPSBXZWJJbnNwZWN0
b3IucmVzb3VyY2VTaWRlYmFyUGFuZWw7CisgICAgICAgIFdlYkluc3BlY3Rvci5uYXZpZ2F0aW9u
U2lkZWJhci5jb2xsYXBzZWQgPSBmYWxzZTsKKyAgICB9LAorCisgICAgX25ldHdvcmtJdGVtV2Fz
Q2xpY2tlZDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgV2ViSW5zcGVjdG9yLm5hdmlnYXRp
b25TaWRlYmFyLnNlbGVjdGVkU2lkZWJhclBhbmVsID0gV2ViSW5zcGVjdG9yLnRpbWVsaW5lU2lk
ZWJhclBhbmVsOworICAgIH0sCisKKyAgICBfY29uc29sZUl0ZW1XYXNDbGlja2VkOiBmdW5jdGlv
bihzY29wZSkKKyAgICB7CisgICAgICAgIFdlYkluc3BlY3Rvci5zaG93Q29uc29sZVZpZXcoc2Nv
cGUpOworICAgIH0sCisKKyAgICBfc2V0Q29uc29sZUl0ZW1WYWx1ZTogZnVuY3Rpb24oaXRlbU5h
bWUsIG5ld1ZhbHVlKQorICAgIHsKKyAgICAgICAgdmFyIGlWYXJOYW1lID0gIl8iICsgaXRlbU5h
bWU7CisgICAgICAgIHZhciBwcmV2aW91c1ZhbHVlID0gdGhpc1tpVmFyTmFtZV07CisgICAgICAg
IHRoaXNbaVZhck5hbWVdID0gbmV3VmFsdWU7CisKKyAgICAgICAgdmFyIGl0ZW0gPSB0aGlzLl9p
dGVtc1tpdGVtTmFtZV07CisgICAgICAgIGl0ZW0udGV4dCA9IHRoaXMuX2Zvcm1hdFBvc3NpYmxl
TGFyZ2VOdW1iZXIobmV3VmFsdWUpOworICAgICAgICB0aGlzLl9zZXRJdGVtRW5hYmxlZChpdGVt
LCBuZXdWYWx1ZSA+IDApOworCisgICAgICAgIGlmIChuZXdWYWx1ZSA8PSBwcmV2aW91c1ZhbHVl
KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHZhciBjb250YWluZXIgPSBpdGVtLmNv
bnRhaW5lcjsKKworICAgICAgICBmdW5jdGlvbiBhbmltYXRpb25FbmRlZChldmVudCkKKyAgICAg
ICAgeworICAgICAgICAgICAgaWYgKGV2ZW50LnRhcmdldCA9PT0gY29udGFpbmVyKSB7CisgICAg
ICAgICAgICAgICAgY29udGFpbmVyLmNsYXNzTGlzdC5yZW1vdmUoInB1bHNpbmciKTsKKyAgICAg
ICAgICAgICAgICBjb250YWluZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcigid2Via2l0QW5pbWF0aW9u
RW5kIiwgYW5pbWF0aW9uRW5kZWQpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAg
ICAgLy8gV2UgbmVlZCB0byBmb3JjZSBhIHN0eWxlIGludmFsaWRhdGlvbiBpbiB0aGUgY2FzZSB3
aGVyZSB3ZSBhbHJlYWR5CisgICAgICAgIC8vIHdlcmUgYW5pbWF0aW5nIHRoaXMgaXRlbSBhZnRl
ciB3ZSd2ZSByZW1vdmVkIHRoZSBwdWxzaW5nIENTUyBjbGFzcy4KKyAgICAgICAgaWYgKGNvbnRh
aW5lci5jbGFzc0xpc3QuY29udGFpbnMoInB1bHNpbmciKSkgeworICAgICAgICAgICAgY29udGFp
bmVyLmNsYXNzTGlzdC5yZW1vdmUoInB1bHNpbmciKTsKKyAgICAgICAgICAgIGNvbnRhaW5lci5y
ZWNhbGN1bGF0ZVN0eWxlcygpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGNvbnRhaW5l
ci5hZGRFdmVudExpc3RlbmVyKCJ3ZWJraXRBbmltYXRpb25FbmQiLCBhbmltYXRpb25FbmRlZCk7
CisKKyAgICAgICAgY29udGFpbmVyLmNsYXNzTGlzdC5hZGQoInB1bHNpbmciKTsKKyAgICB9LAor
CisgICAgX3NldEl0ZW1FbmFibGVkOiBmdW5jdGlvbihpdGVtLCBlbmFibGVkKQorICAgIHsKKyAg
ICAgICAgaWYgKGVuYWJsZWQpCisgICAgICAgICAgICBpdGVtLmNvbnRhaW5lci5jbGFzc0xpc3Qu
YWRkKFdlYkluc3BlY3Rvci5EZWZhdWx0RGFzaGJvYXJkVmlldy5FbmFibGVkSXRlbVN0eWxlQ2xh
c3NOYW1lKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgaXRlbS5jb250YWluZXIuY2xhc3NM
aXN0LnJlbW92ZShXZWJJbnNwZWN0b3IuRGVmYXVsdERhc2hib2FyZFZpZXcuRW5hYmxlZEl0ZW1T
dHlsZUNsYXNzTmFtZSk7CisgICAgfQorfTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>226273</attachid>
            <date>2014-03-09 19:43:17 -0700</date>
            <delta_ts>2014-03-10 10:45:09 -0700</delta_ts>
            <desc>revised patch</desc>
            <filename>bug-129898-20140309194622.patch</filename>
            <type>text/plain</type>
            <size>73235</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY1Mjc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCAx
MWZmNWI4ZGYwODU1MWNjZjY3YmVmNmQyNjI3YmZjZDcwZTI4YWYyLi5jMjMxZWMxOWNiYTJmMDRl
N2NjMDBmMTZhN2U4ZTBjODZjOTFhMWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMjkgQEAKKzIwMTQtMDMtMDcgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgV2ViIEluc3BlY3RvcjogY29udmVydCB0aGUgZGFzaGJvYXJkIHRvb2xiYXIgaXRl
bSB0byBzdXBwb3J0IG11bHRpcGxlIGRhc2hib2FyZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyOTg5OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIHdhbnQgdG8gYWJpbGl0eSB0byBzd2FwIGluIGFu
ZCBvdXQgZGlmZmVyZW50IGRhc2hib2FyZCBjb250ZW50cyBkZXBlbmRpbmcgb24KKyAgICAgICAg
Y2lyY3Vtc3RhbmNlcyBzdWNoIGFzIGRlYnVnZ2VyIGFjdGl2aXR5IGFuZCBwYWdlIGxvYWRpbmcu
IFRoaXMgcGF0Y2ggY29udmVydHMgdGhlCisgICAgICAgIGV4aXN0aW5nIGhhcmQtY29kZWQgZGFz
aGJvYXJkIGltcGxlbWVudGF0aW9uIHRvIGZvbGxvdyB0aGUgY29udGFpbmVyLWJhc2VkIGFwcHJv
YWNoCisgICAgICAgIHVzZWQgYnkgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29udGFpbmVyLgor
CisgICAgICAgIEFzIHBhcnQgb2YgdGhlIHJlZmFjdG9yaW5nLCB3ZSBpbnRyb2R1Y2UgZGFzaGJv
YXJkIG1vZGVsIG9iamVjdHMgdG8gc3RvcmUgcGVyc2lzdGVudAorICAgICAgICBkYXNoYm9hcmQg
ZGF0YS4gU29tZSBDU1MgaGFzIGFsc28gYmVlbiBzcGxpdCBiZXR3ZWVuIHRoZSBjb250YWluZXIg
YW5kIHNwZWNpZmljIGRhc2hib2FyZC4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJv
bGxlcnMvRGFzaGJvYXJkTWFuYWdlci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXNoYm9h
cmRNYW5hZ2VyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXNoYm9hcmRNYW5hZ2VyLnByb3Rv
dHlwZS5nZXQgdG9vbGJhckl0ZW0pOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTWFpbi5odG1s
OgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxzL0RlZmF1bHREYXNoYm9hcmQuanM6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJz
L0Rhc2hib2FyZE1hbmFnZXIuanMuCisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVmYXVsdERhc2hi
b2FyZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVmYXVsdERhc2hib2FyZC5wcm90b3R5cGUu
Z2V0IHJlc291cmNlc0NvdW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWZhdWx0RGFzaGJv
YXJkLnByb3RvdHlwZS5zZXQgcmVzb3VyY2VzQ291bnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkRlZmF1bHREYXNoYm9hcmQucHJvdG90eXBlLmdldCByZXNvdXJjZXNTaXplKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5EZWZhdWx0RGFzaGJvYXJkLnByb3RvdHlwZS5zZXQgcmVzb3VyY2VzU2l6
ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVmYXVsdERhc2hib2FyZC5wcm90b3R5cGUuZ2V0
IHRpbWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlZmF1bHREYXNoYm9hcmQucHJvdG90eXBl
LnNldCB0aW1lKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWZhdWx0RGFzaGJvYXJkLnByb3Rv
dHlwZS5nZXQgbG9ncyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVmYXVsdERhc2hib2FyZC5w
cm90b3R5cGUuc2V0IGxvZ3MpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlZmF1bHREYXNoYm9h
cmQucHJvdG90eXBlLmdldCBlcnJvcnMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlZmF1bHRE
YXNoYm9hcmQucHJvdG90eXBlLnNldCBlcnJvcnMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRl
ZmF1bHREYXNoYm9hcmQucHJvdG90eXBlLmdldCBpc3N1ZXMpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkRlZmF1bHREYXNoYm9hcmQucHJvdG90eXBlLnNldCBpc3N1ZXMpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkRlZmF1bHREYXNoYm9hcmQucHJvdG90eXBlLl9kYXRhRGlkQ2hhbmdlKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5EZWZhdWx0RGFzaGJvYXJkLnByb3RvdHlwZS5fbWFpblJlc291
cmNlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWZhdWx0RGFzaGJvYXJkLnBy
b3RvdHlwZS5fcmVjb3JkaW5nU3RvcHBlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVmYXVs
dERhc2hib2FyZC5wcm90b3R5cGUuX3Jlc291cmNlV2FzQWRkZWQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkRlZmF1bHREYXNoYm9hcmQucHJvdG90eXBlLl9mcmFtZVdhc0FkZGVkKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5EZWZhdWx0RGFzaGJvYXJkLnByb3RvdHlwZS5fcmVzb3VyY2VTaXpl
RGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWZhdWx0RGFzaGJvYXJkLnByb3Rv
dHlwZS5fc3RhcnRVcGRhdGluZ1RpbWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlZmF1bHRE
YXNoYm9hcmQucHJvdG90eXBlLl9zdG9wVXBkYXRpbmdUaW1lKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5EZWZhdWx0RGFzaGJvYXJkLnByb3RvdHlwZS5fdXBkYXRlVGltZSk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuRGVmYXVsdERhc2hib2FyZC5wcm90b3R5cGUuX2NvbnNvbGVNZXNzYWdlQWRk
ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlZmF1bHREYXNoYm9hcmQucHJvdG90eXBlLl9j
b25zb2xlTWVzc2FnZVdhc1JlcGVhdGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWZhdWx0
RGFzaGJvYXJkLnByb3RvdHlwZS5faW5jcmVtZW50Q29uc29sZU1lc3NhZ2VUeXBlKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5EZWZhdWx0RGFzaGJvYXJkLnByb3RvdHlwZS5fY29uc29sZVdhc0Ns
ZWFyZWQpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvRGFzaGJvYXJkQ29udGFpbmVy
Vmlldy5jc3M6IEFkZGVkLgorICAgICAgICAoLnRvb2xiYXIgLmRhc2hib2FyZC1jb250YWluZXIp
OgorICAgICAgICAoYm9keS53aW5kb3ctaW5hY3RpdmUgLnRvb2xiYXIgLmRhc2hib2FyZC1jb250
YWluZXIpOgorICAgICAgICAoYm9keS5qYXZhc2NyaXB0IC50b29sYmFyIC5kYXNoYm9hcmQtY29u
dGFpbmVyKToKKyAgICAgICAgKC50b29sYmFyLm5vcm1hbC1zaXplLmljb24tYW5kLWxhYmVsLXZl
cnRpY2FsIC5kYXNoYm9hcmQtY29udGFpbmVyKToKKyAgICAgICAgKC50b29sYmFyLnNtYWxsLXNp
emUuaWNvbi1hbmQtbGFiZWwtaG9yaXpvbnRhbCAuZGFzaGJvYXJkLWNvbnRhaW5lcik6CisgICAg
ICAgICgudG9vbGJhci5ub3JtYWwtc2l6ZS5pY29uLWFuZC1sYWJlbC1ob3Jpem9udGFsIC5kYXNo
Ym9hcmQtY29udGFpbmVyKToKKyAgICAgICAgKC50b29sYmFyIC5kYXNoYm9hcmQtY29udGFpbmVy
KToKKyAgICAgICAgKC50b29sYmFyIC5kYXNoYm9hcmQpOgorICAgICAgICAoLnRvb2xiYXIgLmRh
c2hib2FyZC52aXNpYmxlKToKKyAgICAgICAgKC50b29sYmFyIC5kYXNoYm9hcmQuc2xpZGUtb3V0
LXVwKToKKyAgICAgICAgKC50b29sYmFyIC5kYXNoYm9hcmQuc2xpZGUtb3V0LWRvd24pOgorICAg
ICAgICAoLnRvb2xiYXIgLmRhc2hib2FyZC5zbGlkZS1pbi11cCk6CisgICAgICAgICgudG9vbGJh
ciAuZGFzaGJvYXJkLnNsaWRlLWluLWRvd24pOgorICAgICAgICAoQC13ZWJraXQta2V5ZnJhbWVz
IHNsaWRlLXRvcC1lZGdlKToKKyAgICAgICAgKHRvKToKKyAgICAgICAgKEAtd2Via2l0LWtleWZy
YW1lcyBzbGlkZS1ib3R0b20tZWRnZSk6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9E
YXNoYm9hcmRDb250YWluZXJWaWV3LmpzOiBBZGRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5E
YXNoYm9hcmRDb250YWluZXJWaWV3KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXNoYm9hcmRD
b250YWluZXJWaWV3LnByb3RvdHlwZS5nZXQgdG9vbGJhckl0ZW0pOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkRhc2hib2FyZENvbnRhaW5lclZpZXcucHJvdG90eXBlLmdldCBjdXJyZW50RGFzaGJv
YXJkVmlldyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGFzaGJvYXJkQ29udGFpbmVyVmlldy5w
cm90b3R5cGUuc2hvd0Rhc2hib2FyZFZpZXdGb3JSZXByZXNlbnRlZE9iamVjdCk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuRGFzaGJvYXJkQ29udGFpbmVyVmlldy5wcm90b3R5cGUuX2Rhc2hib2Fy
ZFZpZXdGb3JSZXByZXNlbnRlZE9iamVjdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGFzaGJv
YXJkQ29udGFpbmVyVmlldy5wcm90b3R5cGUuX3Nob3dEYXNoYm9hcmRWaWV3KToKKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL1ZpZXdzL0Rhc2hib2FyZFZpZXcuY3NzOiBSZW1vdmVkLgorICAgICAg
ICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvRGFzaGJvYXJkVmlldy5qczoKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5EYXNoYm9hcmRWaWV3KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXNoYm9hcmRW
aWV3LnByb3RvdHlwZS5nZXQgZWxlbWVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGFzaGJv
YXJkVmlldy5wcm90b3R5cGUuZ2V0IHBhcmVudENvbnRhaW5lcik6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuRGFzaGJvYXJkVmlldy5wcm90b3R5cGUuZ2V0IHJlcHJlc2VudGVkT2JqZWN0KToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5EYXNoYm9hcmRWaWV3LnByb3RvdHlwZS5zaG93bik6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuRGFzaGJvYXJkVmlldy5wcm90b3R5cGUuaGlkZGVuKToKKyAgICAg
ICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0RlZmF1bHREYXNoYm9hcmRWaWV3LmNzczogQWRkZWQu
CisgICAgICAgIChib2R5LndlYiAudG9vbGJhci5jb2xsYXBzZWQgLmRhc2hib2FyZC5kZWZhdWx0
ID4gLmxvZ3MpOgorICAgICAgICAoYm9keS5qYXZhc2NyaXB0IC50b29sYmFyIC5kYXNoYm9hcmQu
ZGVmYXVsdCA+IC5yZXNvdXJjZXNDb3VudCk6CisgICAgICAgICgudG9vbGJhciAuZGFzaGJvYXJk
LmRlZmF1bHQpOgorICAgICAgICAoLnRvb2xiYXIgLmRhc2hib2FyZC5kZWZhdWx0ID4gLml0ZW0p
OgorICAgICAgICAoLnRvb2xiYXIgLmRhc2hib2FyZC5kZWZhdWx0ID4gLnJlc291cmNlc1NpemUp
OgorICAgICAgICAoLnRvb2xiYXIgLmRhc2hib2FyZC5kZWZhdWx0ID4gLml0ZW0uZW5hYmxlZDpo
b3Zlcik6CisgICAgICAgICgudG9vbGJhciAuZGFzaGJvYXJkLmRlZmF1bHQgPiAuaXRlbS5lbmFi
bGVkOmFjdGl2ZSk6CisgICAgICAgICgudG9vbGJhciAuZGFzaGJvYXJkLmRlZmF1bHQgPiAuaXRl
bSA+ICopOgorICAgICAgICAoLnRvb2xiYXIgLmRhc2hib2FyZC5kZWZhdWx0ID4gLml0ZW0gPiBp
bWcpOgorICAgICAgICAoLnRvb2xiYXIgLmRhc2hib2FyZC5kZWZhdWx0ID4gLml0ZW0uZW5hYmxl
ZCA+IGltZyk6CisgICAgICAgICgudG9vbGJhciAuZGFzaGJvYXJkLmRlZmF1bHQgPiAuaXRlbS5l
bmFibGVkOmhvdmVyID4gaW1nKToKKyAgICAgICAgKC50b29sYmFyIC5kYXNoYm9hcmQuZGVmYXVs
dCA+IC5pdGVtID4gZGl2KToKKyAgICAgICAgKC50b29sYmFyIC5kYXNoYm9hcmQuZGVmYXVsdCA+
IC5pdGVtLmVuYWJsZWQgPiBkaXYpOgorICAgICAgICAoLnRvb2xiYXIgLmRhc2hib2FyZC5kZWZh
dWx0ID4gLml0ZW0uZW5hYmxlZDpob3ZlciA+IGRpdik6CisgICAgICAgICgudG9vbGJhciAuZGFz
aGJvYXJkLmRlZmF1bHQgPiAucmVzb3VyY2VzQ291bnQgPiBpbWcpOgorICAgICAgICAoLnRvb2xi
YXIgLmRhc2hib2FyZC5kZWZhdWx0ID4gLnRpbWUgPiBpbWcpOgorICAgICAgICAoLnRvb2xiYXIg
LmRhc2hib2FyZC5kZWZhdWx0ID4gLmxvZ3MgPiBpbWcpOgorICAgICAgICAoLnRvb2xiYXIgLmRh
c2hib2FyZC5kZWZhdWx0ID4gLnJlc291cmNlc1NpemUgPiBpbWcpOgorICAgICAgICAoLnRvb2xi
YXIgLmRhc2hib2FyZC5kZWZhdWx0ID4gLmVycm9ycyA+IGltZyk6CisgICAgICAgICgudG9vbGJh
ciAuZGFzaGJvYXJkLmRlZmF1bHQgPiAuZXJyb3JzLmVuYWJsZWQgPiBpbWcpOgorICAgICAgICAo
LnRvb2xiYXIgLmRhc2hib2FyZC5kZWZhdWx0ID4gLmVycm9ycy5lbmFibGVkOmhvdmVyID4gaW1n
KToKKyAgICAgICAgKC50b29sYmFyIC5kYXNoYm9hcmQuZGVmYXVsdCA+IC5lcnJvcnMuZW5hYmxl
ZCA+IGRpdik6CisgICAgICAgICgudG9vbGJhciAuZGFzaGJvYXJkLmRlZmF1bHQgPiAuZXJyb3Jz
LmVuYWJsZWQ6aG92ZXIgPiBkaXYpOgorICAgICAgICAoLnRvb2xiYXIgLmRhc2hib2FyZC5kZWZh
dWx0ID4gLmlzc3VlcyA+IGltZyk6CisgICAgICAgICgudG9vbGJhciAuZGFzaGJvYXJkLmRlZmF1
bHQgPiAuaXNzdWVzLmVuYWJsZWQgPiBpbWcpOgorICAgICAgICAoLnRvb2xiYXIgLmRhc2hib2Fy
ZC5kZWZhdWx0ID4gLmlzc3Vlcy5lbmFibGVkOmhvdmVyID4gaW1nKToKKyAgICAgICAgKC50b29s
YmFyIC5kYXNoYm9hcmQuZGVmYXVsdCA+IC5pc3N1ZXMuZW5hYmxlZCA+IGRpdik6CisgICAgICAg
ICgudG9vbGJhciAuZGFzaGJvYXJkLmRlZmF1bHQgPiAuaXNzdWVzLmVuYWJsZWQ6aG92ZXIgPiBk
aXYpOgorICAgICAgICAoLnRvb2xiYXIgLmRhc2hib2FyZC5kZWZhdWx0ID4gLml0ZW0ucHVsc2lu
Zyk6CisgICAgICAgIChALXdlYmtpdC1rZXlmcmFtZXMgY29uc29sZS1pdGVtLXB1bHNlKToKKyAg
ICAgICAgKC50b29sYmFyLnNtYWxsLXNpemUuaWNvbi1hbmQtbGFiZWwtaG9yaXpvbnRhbCAuZGFz
aGJvYXJkLmRlZmF1bHQgPiAuaXRlbSk6CisgICAgICAgICgudG9vbGJhci5ub3JtYWwtc2l6ZS5p
Y29uLWFuZC1sYWJlbC1ob3Jpem9udGFsIC5kYXNoYm9hcmQuZGVmYXVsdCA+IC5pdGVtKToKKyAg
ICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0RlZmF1bHREYXNoYm9hcmRWaWV3LmpzOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EYXNoYm9h
cmRWaWV3LmpzLgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlZmF1bHREYXNoYm9hcmRWaWV3KToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWZhdWx0RGFzaGJvYXJkVmlldy5wcm90b3R5cGUuX3Vw
ZGF0ZURpc3BsYXkpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlZmF1bHREYXNoYm9hcmRWaWV3
LnByb3RvdHlwZS5fZm9ybWF0UG9zc2libGVMYXJnZU51bWJlcik6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuRGVmYXVsdERhc2hib2FyZFZpZXcucHJvdG90eXBlLl9hcHBlbmRFbGVtZW50Rm9yTmFt
ZWRJdGVtLik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVmYXVsdERhc2hib2FyZFZpZXcucHJv
dG90eXBlLl9hcHBlbmRFbGVtZW50Rm9yTmFtZWRJdGVtLnNldCBpdGVtKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5EZWZhdWx0RGFzaGJvYXJkVmlldy5wcm90b3R5cGUuX2FwcGVuZEVsZW1lbnRG
b3JOYW1lZEl0ZW0pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlZmF1bHREYXNoYm9hcmRWaWV3
LnByb3RvdHlwZS5faXRlbVdhc0NsaWNrZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlZmF1
bHREYXNoYm9hcmRWaWV3LnByb3RvdHlwZS5fcmVzb3VyY2VzV2FzQ2xpY2tlZCk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuRGVmYXVsdERhc2hib2FyZFZpZXcucHJvdG90eXBlLl9uZXR3b3JrSXRl
bVdhc0NsaWNrZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlZmF1bHREYXNoYm9hcmRWaWV3
LnByb3RvdHlwZS5fY29uc29sZUl0ZW1XYXNDbGlja2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5EZWZhdWx0RGFzaGJvYXJkVmlldy5wcm90b3R5cGUuYW5pbWF0aW9uRW5kZWQpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkRlZmF1bHREYXNoYm9hcmRWaWV3LnByb3RvdHlwZS5fc2V0Q29uc29s
ZUl0ZW1WYWx1ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVmYXVsdERhc2hib2FyZFZpZXcu
cHJvdG90eXBlLl9zZXRJdGVtRW5hYmxlZCk6CisKIDIwMTQtMDMtMDQgIEJyaWFuIEJ1cmcgIDxi
YnVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgSW5zcGVjdG9yIGRvZXMgbm90IHJlc3RvcmUgYnJl
YWtwb2ludHMgYWZ0ZXIgYSBwYWdlIHJlbG9hZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzCmluZGV4IGMyNzA1NWQyYzg4NmJiMzdhNGMwNzgw
YjRmNjIyZWY0Mzg1YzVkYmYuLmFiZjVkZDA2OGQ0ZWNmNmFmNThkMjA2Nzk3MDRhMzM1NTlkZjYx
ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2Uv
TWFpbi5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL01h
aW4uanMKQEAgLTI4MCw3ICsyODAsMTAgQEAgV2ViSW5zcGVjdG9yLmNvbnRlbnRMb2FkZWQgPSBm
dW5jdGlvbigpCiAgICAgdGhpcy5fY29uc29sZVRvb2xiYXJCdXR0b24uYWRkRXZlbnRMaXN0ZW5l
cihXZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uRXZlbnQuQ2xpY2tlZCwgdGhpcy50
b2dnbGVDb25zb2xlVmlldywgdGhpcyk7CiAgICAgdGhpcy50b29sYmFyLmFkZFRvb2xiYXJJdGVt
KHRoaXMuX2NvbnNvbGVUb29sYmFyQnV0dG9uLCBXZWJJbnNwZWN0b3IuVG9vbGJhci5TZWN0aW9u
LkNlbnRlcik7CiAKLSAgICB0aGlzLnRvb2xiYXIuYWRkVG9vbGJhckl0ZW0odGhpcy5kYXNoYm9h
cmRNYW5hZ2VyLnRvb2xiYXJJdGVtLCBXZWJJbnNwZWN0b3IuVG9vbGJhci5TZWN0aW9uLkNlbnRl
cik7CisgICAgdGhpcy5fZGFzaGJvYXJkQ29udGFpbmVyVmlldyA9IG5ldyBXZWJJbnNwZWN0b3Iu
RGFzaGJvYXJkQ29udGFpbmVyVmlldzsKKyAgICB0aGlzLl9kYXNoYm9hcmRDb250YWluZXJWaWV3
LnNob3dEYXNoYm9hcmRWaWV3Rm9yUmVwcmVzZW50ZWRPYmplY3QodGhpcy5kYXNoYm9hcmRNYW5h
Z2VyLmRhc2hib2FyZHMuZGVmYXVsdCk7CisKKyAgICB0aGlzLnRvb2xiYXIuYWRkVG9vbGJhckl0
ZW0odGhpcy5fZGFzaGJvYXJkQ29udGFpbmVyVmlldy50b29sYmFySXRlbSwgV2ViSW5zcGVjdG9y
LlRvb2xiYXIuU2VjdGlvbi5DZW50ZXIpOwogCiAgICAgLy8gVGhlIHRvb2xiYXIgYnV0dG9uIGZv
ciBub2RlIGluc3BlY3Rpb24uCiAgICAgaWYgKHRoaXMuZGVidWdnYWJsZVR5cGUgPT09IFdlYklu
c3BlY3Rvci5EZWJ1Z2dhYmxlVHlwZS5XZWIpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0Rhc2hib2FyZE1hbmFnZXIuanMgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9EYXNoYm9hcmRN
YW5hZ2VyLmpzCmluZGV4IGZhZDhiM2QwZDI0YjExYjA2NTE1YTJiZGNmYjE5Zjg0NGIxZDU3MmUu
LmJjODdmNGFiMzFkNTU0MjM1YmRkN2JkYjUxOTNmOWI1N2ExZjJmOWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0Rhc2hib2FyZE1h
bmFnZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJv
bGxlcnMvRGFzaGJvYXJkTWFuYWdlci5qcwpAQCAtMjYsMTYyICsyNiwxNiBAQAogV2ViSW5zcGVj
dG9yLkRhc2hib2FyZE1hbmFnZXIgPSBmdW5jdGlvbigpIHsKICAgICBXZWJJbnNwZWN0b3IuT2Jq
ZWN0LmNhbGwodGhpcyk7CiAKLSAgICB0aGlzLnRvb2xiYXJJdGVtID0gbmV3IFdlYkluc3BlY3Rv
ci5OYXZpZ2F0aW9uSXRlbSgiZGFzaGJvYXJkIiwgImdyb3VwIiwgV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJBY3Rpdml0eSBWaWV3ZXIiKSk7Ci0gICAgdGhpcy5fdmlldyA9IG5ldyBXZWJJbnNwZWN0
b3IuRGFzaGJvYXJkVmlldyh0aGlzLnRvb2xiYXJJdGVtLmVsZW1lbnQpOwotCi0gICAgdGhpcy5f
d2FpdGluZ0ZvckZpcnN0TWFpblJlc291cmNlVG9TdGFydFRyYWNraW5nU2l6ZSA9IHRydWU7Ci0K
LSAgICAvLyBOZWNlc3NhcnkgZXZlbnQgcmVxdWlyZWQgdG8gdHJhY2sgcGFnZSBsb2FkIHRpbWUg
YW5kIHJlc291cmNlIHNpemVzLgotICAgIFdlYkluc3BlY3Rvci5GcmFtZS5hZGRFdmVudExpc3Rl
bmVyKFdlYkluc3BlY3Rvci5GcmFtZS5FdmVudC5NYWluUmVzb3VyY2VEaWRDaGFuZ2UsIHRoaXMu
X21haW5SZXNvdXJjZURpZENoYW5nZSwgdGhpcyk7Ci0gICAgV2ViSW5zcGVjdG9yLnRpbWVsaW5l
TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5UaW1lbGluZU1hbmFnZXIuRXZl
bnQuUmVjb3JkaW5nU3RvcHBlZCwgdGhpcy5fcmVjb3JkaW5nU3RvcHBlZCwgdGhpcyk7Ci0KLSAg
ICAvLyBOZWNlc3NhcnkgZXZlbnRzIHJlcXVpcmVkIHRvIHRyYWNrIGxvYWQgb2YgcmVzb3VyY2Vz
LgotICAgIFdlYkluc3BlY3Rvci5GcmFtZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5G
cmFtZS5FdmVudC5SZXNvdXJjZVdhc0FkZGVkLCB0aGlzLl9yZXNvdXJjZVdhc0FkZGVkLCB0aGlz
KTsKLSAgICBXZWJJbnNwZWN0b3IuZnJhbWVSZXNvdXJjZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5l
cihXZWJJbnNwZWN0b3IuRnJhbWVSZXNvdXJjZU1hbmFnZXIuRXZlbnQuRnJhbWVXYXNBZGRlZCwg
dGhpcy5fZnJhbWVXYXNBZGRlZCwgdGhpcyk7Ci0KLSAgICAvLyBOZWNlc3NhcnkgZXZlbnRzIHJl
cXVpcmVkIHRvIHRyYWNrIGNvbnNvbGUgbWVzc2FnZXMuCi0gICAgdmFyIGxvZ01hbmFnZXIgPSBX
ZWJJbnNwZWN0b3IubG9nTWFuYWdlcjsKLSAgICBsb2dNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIo
V2ViSW5zcGVjdG9yLkxvZ01hbmFnZXIuRXZlbnQuQ2xlYXJlZCwgdGhpcy5fY29uc29sZVdhc0Ns
ZWFyZWQsIHRoaXMpOwotICAgIGxvZ01hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0
b3IuTG9nTWFuYWdlci5FdmVudC5BY3RpdmVMb2dDbGVhcmVkLCB0aGlzLl9jb25zb2xlV2FzQ2xl
YXJlZCwgdGhpcyk7Ci0gICAgbG9nTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rv
ci5Mb2dNYW5hZ2VyLkV2ZW50Lk1lc3NhZ2VBZGRlZCwgdGhpcy5fY29uc29sZU1lc3NhZ2VBZGRl
ZCwgdGhpcyk7Ci0gICAgbG9nTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5M
b2dNYW5hZ2VyLkV2ZW50LlByZXZpb3VzTWVzc2FnZVJlcGVhdENvdW50VXBkYXRlZCwgdGhpcy5f
Y29uc29sZU1lc3NhZ2VXYXNSZXBlYXRlZCwgdGhpcyk7CisgICAgdGhpcy5fZGFzaGJvYXJkcyA9
IHt9OworICAgIHRoaXMuX2Rhc2hib2FyZHMuZGVmYXVsdCA9IG5ldyBXZWJJbnNwZWN0b3IuRGVm
YXVsdERhc2hib2FyZDsKIH07CiAKIFdlYkluc3BlY3Rvci5EYXNoYm9hcmRNYW5hZ2VyLnByb3Rv
dHlwZSA9IHsKICAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkRhc2hib2FyZE1hbmFnZXIs
CisgICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZSwKIAotICAgIF9t
YWluUmVzb3VyY2VEaWRDaGFuZ2U6IGZ1bmN0aW9uKGV2ZW50KQotICAgIHsKLSAgICAgICAgY29u
c29sZS5hc3NlcnQoZXZlbnQudGFyZ2V0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkZyYW1lKTsK
LQotICAgICAgICBpZiAoIWV2ZW50LnRhcmdldC5pc01haW5GcmFtZSgpKQotICAgICAgICAgICAg
cmV0dXJuOwotCi0gICAgICAgIHRoaXMuX3ZpZXcucmVzb3VyY2VzQ291bnQgPSAxOwotICAgICAg
ICB0aGlzLl92aWV3LnJlc291cmNlc1NpemUgPSBXZWJJbnNwZWN0b3IuZnJhbWVSZXNvdXJjZU1h
bmFnZXIubWFpbkZyYW1lLm1haW5SZXNvdXJjZS5zaXplIHx8IDA7Ci0KLSAgICAgICAgLy8gT25s
eSB1cGRhdGUgdGhlIHRpbWUgaWYgd2UgYXJlIHJlY29yZGluZyB0aGUgdGltZWxpbmUuCi0gICAg
ICAgIGlmICghV2ViSW5zcGVjdG9yLnRpbWVsaW5lTWFuYWdlci5yZWNvcmRpbmdFbmFibGVkKSB7
Ci0gICAgICAgICAgICB0aGlzLl92aWV3LnRpbWUgPSAwOwotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICB9Ci0KLSAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgdHJhY2sgcmVzb3VyY2Ugc2l6
ZXMgb24gZnJlc2ggbG9hZHMuCi0gICAgICAgIGlmICh0aGlzLl93YWl0aW5nRm9yRmlyc3RNYWlu
UmVzb3VyY2VUb1N0YXJ0VHJhY2tpbmdTaXplKSB7Ci0gICAgICAgICAgICBkZWxldGUgdGhpcy5f
d2FpdGluZ0ZvckZpcnN0TWFpblJlc291cmNlVG9TdGFydFRyYWNraW5nU2l6ZTsKLSAgICAgICAg
ICAgIFdlYkluc3BlY3Rvci5SZXNvdXJjZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5S
ZXNvdXJjZS5FdmVudC5TaXplRGlkQ2hhbmdlLCB0aGlzLl9yZXNvdXJjZVNpemVEaWRDaGFuZ2Us
IHRoaXMpOwotICAgICAgICB9Ci0KLSAgICAgICAgdGhpcy5fc3RhcnRVcGRhdGluZ1RpbWUoKTsK
LSAgICB9LAotCi0gICAgX3JlY29yZGluZ1N0b3BwZWQ6IGZ1bmN0aW9uKGV2ZW50KQotICAgIHsK
LSAgICAgICAgLy8gSWYgcmVjb3JkaW5nIHN0b3BzLCB3ZSBzaG91bGQgc3RvcCB0aGUgdGltZXIg
aWYgaXQgaGFzbid0IHN0b3BwZWQgYWxyZWFkeS4KLSAgICAgICAgdGhpcy5fc3RvcFVwZGF0aW5n
VGltZSgpOwotICAgIH0sCi0KLSAgICBfcmVzb3VyY2VXYXNBZGRlZDogZnVuY3Rpb24oZXZlbnQp
Ci0gICAgewotICAgICAgICArK3RoaXMuX3ZpZXcucmVzb3VyY2VzQ291bnQ7Ci0gICAgfSwKLQot
ICAgIF9mcmFtZVdhc0FkZGVkOiBmdW5jdGlvbihldmVudCkKLSAgICB7Ci0gICAgICAgICsrdGhp
cy5fdmlldy5yZXNvdXJjZXNDb3VudDsKLSAgICB9LAotCi0gICAgX3Jlc291cmNlU2l6ZURpZENo
YW5nZTogZnVuY3Rpb24oZXZlbnQpCi0gICAgewotICAgICAgICB0aGlzLl92aWV3LnJlc291cmNl
c1NpemUgKz0gZXZlbnQudGFyZ2V0LnNpemUgLSBldmVudC5kYXRhLnByZXZpb3VzU2l6ZTsKLSAg
ICB9LAotCi0gICAgX3N0YXJ0VXBkYXRpbmdUaW1lOiBmdW5jdGlvbigpCi0gICAgewotICAgICAg
ICB0aGlzLl9zdG9wVXBkYXRpbmdUaW1lKCk7Ci0KLSAgICAgICAgdGhpcy5fdmlldy50aW1lID0g
MDsKLQotICAgICAgICB0aGlzLl90aW1lbGluZUJhc2VUaW1lID0gRGF0ZS5ub3coKTsKLSAgICAg
ICAgdGhpcy5fdGltZUludGVydmFsRGVsYXkgPSA1MDsKLSAgICAgICAgdGhpcy5fdGltZUludGVy
dmFsSWRlbnRpZmllciA9IHNldEludGVydmFsKHRoaXMuX3VwZGF0ZVRpbWUuYmluZCh0aGlzKSwg
dGhpcy5fdGltZUludGVydmFsRGVsYXkpOwotICAgIH0sCi0KLSAgICBfc3RvcFVwZGF0aW5nVGlt
ZTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLl90aW1lSW50ZXJ2YWxJZGVu
dGlmaWVyKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGNsZWFySW50ZXJ2YWwodGhp
cy5fdGltZUludGVydmFsSWRlbnRpZmllcik7Ci0gICAgICAgIGRlbGV0ZSB0aGlzLl90aW1lSW50
ZXJ2YWxJZGVudGlmaWVyOwotICAgIH0sCi0KLSAgICBfdXBkYXRlVGltZTogZnVuY3Rpb24oKQor
ICAgIGdldCBkYXNoYm9hcmRzKCkKICAgICB7Ci0gICAgICAgIHZhciBkdXJhdGlvbiA9IERhdGUu
bm93KCkgLSB0aGlzLl90aW1lbGluZUJhc2VUaW1lOwotCi0gICAgICAgIHZhciB0aW1lSW50ZXJ2
YWxEZWxheSA9IHRoaXMuX3RpbWVJbnRlcnZhbERlbGF5OwotICAgICAgICBpZiAoZHVyYXRpb24g
Pj0gMTAwMCkgLy8gMSBzZWNvbmQKLSAgICAgICAgICAgIHRpbWVJbnRlcnZhbERlbGF5ID0gMTAw
OwotICAgICAgICBlbHNlIGlmIChkdXJhdGlvbiA+PSA2MDAwMCkgLy8gNjAgc2Vjb25kcwotICAg
ICAgICAgICAgdGltZUludGVydmFsRGVsYXkgPSAxMDAwOwotICAgICAgICBlbHNlIGlmIChkdXJh
dGlvbiA+PSAzNjAwMDAwKSAvLyAxIG1pbnV0ZQotICAgICAgICAgICAgdGltZUludGVydmFsRGVs
YXkgPSAxMDAwMDsKLQotICAgICAgICBpZiAodGltZUludGVydmFsRGVsYXkgIT09IHRoaXMuX3Rp
bWVJbnRlcnZhbERlbGF5KSB7Ci0gICAgICAgICAgICB0aGlzLl90aW1lSW50ZXJ2YWxEZWxheSA9
IHRpbWVJbnRlcnZhbERlbGF5OwotCi0gICAgICAgICAgICBjbGVhckludGVydmFsKHRoaXMuX3Rp
bWVJbnRlcnZhbElkZW50aWZpZXIpOwotICAgICAgICAgICAgdGhpcy5fdGltZUludGVydmFsSWRl
bnRpZmllciA9IHNldEludGVydmFsKHRoaXMuX3VwZGF0ZVRpbWUuYmluZCh0aGlzKSwgdGhpcy5f
dGltZUludGVydmFsRGVsYXkpOwotICAgICAgICB9Ci0KLSAgICAgICAgdmFyIG1haW5GcmFtZSA9
IFdlYkluc3BlY3Rvci5mcmFtZVJlc291cmNlTWFuYWdlci5tYWluRnJhbWU7Ci0gICAgICAgIHZh
ciBtYWluRnJhbWVTdGFydFRpbWUgPSBtYWluRnJhbWUubWFpblJlc291cmNlLmZpcnN0VGltZXN0
YW1wOwotICAgICAgICB2YXIgbWFpbkZyYW1lTG9hZEV2ZW50VGltZSA9IG1haW5GcmFtZS5sb2Fk
RXZlbnRUaW1lc3RhbXA7Ci0KLSAgICAgICAgaWYgKGlzTmFOKG1haW5GcmFtZVN0YXJ0VGltZSkg
fHwgaXNOYU4obWFpbkZyYW1lTG9hZEV2ZW50VGltZSkpIHsKLSAgICAgICAgICAgIHRoaXMuX3Zp
ZXcudGltZSA9IGR1cmF0aW9uIC8gMTAwMDsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
fQotCi0gICAgICAgIHRoaXMuX3ZpZXcudGltZSA9IG1haW5GcmFtZUxvYWRFdmVudFRpbWUgLSBt
YWluRnJhbWVTdGFydFRpbWU7Ci0KLSAgICAgICAgdGhpcy5fc3RvcFVwZGF0aW5nVGltZSgpOwot
ICAgIH0sCi0KLSAgICBfY29uc29sZU1lc3NhZ2VBZGRlZDogZnVuY3Rpb24oZXZlbnQpCi0gICAg
ewotICAgICAgICB2YXIgbWVzc2FnZSA9IGV2ZW50LmRhdGEubWVzc2FnZTsKLSAgICAgICAgdGhp
cy5fbGFzdENvbnNvbGVNZXNzYWdlVHlwZSA9IG1lc3NhZ2UubGV2ZWw7Ci0gICAgICAgIHRoaXMu
X2luY3JlbWVudENvbnNvbGVNZXNzYWdlVHlwZShtZXNzYWdlLmxldmVsLCBtZXNzYWdlLnRvdGFs
UmVwZWF0Q291bnQpOwotICAgIH0sCi0KLSAgICBfY29uc29sZU1lc3NhZ2VXYXNSZXBlYXRlZDog
ZnVuY3Rpb24oZXZlbnQpCi0gICAgewotICAgICAgICB0aGlzLl9pbmNyZW1lbnRDb25zb2xlTWVz
c2FnZVR5cGUodGhpcy5fbGFzdENvbnNvbGVNZXNzYWdlVHlwZSwgMSk7Ci0gICAgfSwKLQotICAg
IF9pbmNyZW1lbnRDb25zb2xlTWVzc2FnZVR5cGU6IGZ1bmN0aW9uKHR5cGUsIGluY3JlbWVudCkK
LSAgICB7Ci0gICAgICAgIHN3aXRjaCAodHlwZSkgewotICAgICAgICBjYXNlICJsb2ciOgotICAg
ICAgICAgICAgdGhpcy5fdmlldy5sb2dzICs9IGluY3JlbWVudDsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBjYXNlICJ3YXJuaW5nIjoKLSAgICAgICAgICAgIHRoaXMuX3ZpZXcuaXNzdWVz
ICs9IGluY3JlbWVudDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlICJlcnJvciI6
Ci0gICAgICAgICAgICB0aGlzLl92aWV3LmVycm9ycyArPSBpbmNyZW1lbnQ7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgfQotICAgIH0sCi0KLSAgICBfY29uc29sZVdhc0NsZWFyZWQ6IGZ1
bmN0aW9uKGV2ZW50KQotICAgIHsKLSAgICAgICAgdGhpcy5fdmlldy5sb2dzID0gMDsKLSAgICAg
ICAgdGhpcy5fdmlldy5pc3N1ZXMgPSAwOwotICAgICAgICB0aGlzLl92aWV3LmVycm9ycyA9IDA7
CisgICAgICAgIHJldHVybiB0aGlzLl9kYXNoYm9hcmRzOwogICAgIH0KIH07Ci0KLVdlYkluc3Bl
Y3Rvci5EYXNoYm9hcmRNYW5hZ2VyLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3Iu
T2JqZWN0LnByb3RvdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL01haW4uaHRtbCBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L01haW4uaHRtbAppbmRleCBlNzlmZDg0NmQ2Y2YyNjE5MWEzNjQyNTBkNzVhMmRlOGQwZGQ1ZmVj
Li4zZDkzOTFhYjgyNjE5NTZmYTk5MTNkNWQwOTFkZTJjODU0ZDEwZGM3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCkBAIC02MSw3ICs2MSw4IEBA
CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9ET01UcmVlQ29udGVudFZp
ZXcuY3NzIj4KICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL0RPTVRyZWVE
YXRhR3JpZC5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvRE9N
VHJlZU91dGxpbmUuY3NzIj4KLSAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdz
L0Rhc2hib2FyZFZpZXcuY3NzIj4KKyAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZp
ZXdzL0Rhc2hib2FyZENvbnRhaW5lclZpZXcuY3NzIj4KKyAgICA8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9IlZpZXdzL0RlZmF1bHREYXNoYm9hcmRWaWV3LmNzcyI+CiAgICAgPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9EYXRhR3JpZC5jc3MiPgogICAgIDxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iVmlld3MvRGF0YWJhc2VDb250ZW50Vmlldy5jc3MiPgogICAgIDxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvRGF0YWJhc2VJY29uLmNzcyI+CkBAIC0y
MTcsNiArMjE4LDcgQEAKICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0RPTVNlYXJjaE1hdGNoT2Jq
ZWN0LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0RPTVN0b3JhZ2VPYmpl
Y3QuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvRE9NVHJlZS5qcyI+PC9z
Y3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9EZWZhdWx0RGFzaGJvYXJkLmpzIj48L3Nj
cmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0RhdGFiYXNlT2JqZWN0LmpzIj48L3Njcmlw
dD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0RhdGFiYXNlVGFibGVPYmplY3QuanMiPjwvc2Ny
aXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvRXhlY3V0aW9uQ29udGV4dC5qcyI+PC9zY3Jp
cHQ+CkBAIC0zMzksNyArMzQxLDcgQEAKICAgICA8c2NyaXB0IHNyYz0iVmlld3MvRE9NVHJlZUVs
ZW1lbnRQYXRoQ29tcG9uZW50LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3Mv
RE9NVHJlZU91dGxpbmUuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9ET01U
cmVlVXBkYXRlci5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9IlZpZXdzL0Rhc2hib2Fy
ZFZpZXcuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9EYXNoYm9hcmRDb250
YWluZXJWaWV3LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvRGF0YWJhc2VD
b250ZW50Vmlldy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL0RhdGFiYXNl
SG9zdFRyZWVFbGVtZW50LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvRGF0
YWJhc2VUYWJsZUNvbnRlbnRWaWV3LmpzIj48L3NjcmlwdD4KQEAgLTM0Nyw2ICszNDksOCBAQAog
ICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9EYXRhYmFzZVRyZWVFbGVtZW50LmpzIj48L3NjcmlwdD4K
ICAgICA8c2NyaXB0IHNyYz0iVmlld3MvRGVidWdnZXJTaWRlYmFyUGFuZWwuanMiPjwvc2NyaXB0
PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9EZXRhaWxzU2VjdGlvbi5qcyI+PC9zY3JpcHQ+Cisg
ICAgPHNjcmlwdCBzcmM9IlZpZXdzL0Rhc2hib2FyZFZpZXcuanMiPjwvc2NyaXB0PgorICAgIDxz
Y3JpcHQgc3JjPSJWaWV3cy9EZWZhdWx0RGFzaGJvYXJkVmlldy5qcyI+PC9zY3JpcHQ+CiAgICAg
PHNjcmlwdCBzcmM9IlZpZXdzL0RldGFpbHNTZWN0aW9uRGF0YUdyaWRSb3cuanMiPjwvc2NyaXB0
PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9EZXRhaWxzU2VjdGlvbkdyb3VwLmpzIj48L3Njcmlw
dD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvRGV0YWlsc1NlY3Rpb25Qcm9wZXJ0aWVzUm93Lmpz
Ij48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL01vZGVscy9EZWZhdWx0RGFzaGJvYXJkLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvTW9kZWxzL0RlZmF1bHREYXNoYm9hcmQuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzU3ZTg1
ZGU2NGZjNjBiZjVhY2YwOTM1MzE5NDQyYzQyOTFmZjIzNAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9EZWZhdWx0RGFzaGJvYXJk
LmpzCkBAIC0wLDAgKzEsMjcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1dlYklu
c3BlY3Rvci5EZWZhdWx0RGFzaGJvYXJkID0gZnVuY3Rpb24oKSB7CisgICAgV2ViSW5zcGVjdG9y
Lk9iamVjdC5jYWxsKHRoaXMpOworCisgICAgdGhpcy5fd2FpdGluZ0ZvckZpcnN0TWFpblJlc291
cmNlVG9TdGFydFRyYWNraW5nU2l6ZSA9IHRydWU7CisKKyAgICAvLyBOZWNlc3NhcnkgZXZlbnQg
cmVxdWlyZWQgdG8gdHJhY2sgcGFnZSBsb2FkIHRpbWUgYW5kIHJlc291cmNlIHNpemVzLgorICAg
IFdlYkluc3BlY3Rvci5GcmFtZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5GcmFtZS5F
dmVudC5NYWluUmVzb3VyY2VEaWRDaGFuZ2UsIHRoaXMuX21haW5SZXNvdXJjZURpZENoYW5nZSwg
dGhpcyk7CisgICAgV2ViSW5zcGVjdG9yLnRpbWVsaW5lTWFuYWdlci5hZGRFdmVudExpc3RlbmVy
KFdlYkluc3BlY3Rvci5UaW1lbGluZU1hbmFnZXIuRXZlbnQuUmVjb3JkaW5nU3RvcHBlZCwgdGhp
cy5fcmVjb3JkaW5nU3RvcHBlZCwgdGhpcyk7CisKKyAgICAvLyBOZWNlc3NhcnkgZXZlbnRzIHJl
cXVpcmVkIHRvIHRyYWNrIGxvYWQgb2YgcmVzb3VyY2VzLgorICAgIFdlYkluc3BlY3Rvci5GcmFt
ZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5GcmFtZS5FdmVudC5SZXNvdXJjZVdhc0Fk
ZGVkLCB0aGlzLl9yZXNvdXJjZVdhc0FkZGVkLCB0aGlzKTsKKyAgICBXZWJJbnNwZWN0b3IuZnJh
bWVSZXNvdXJjZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRnJhbWVSZXNv
dXJjZU1hbmFnZXIuRXZlbnQuRnJhbWVXYXNBZGRlZCwgdGhpcy5fZnJhbWVXYXNBZGRlZCwgdGhp
cyk7CisKKyAgICAvLyBOZWNlc3NhcnkgZXZlbnRzIHJlcXVpcmVkIHRvIHRyYWNrIGNvbnNvbGUg
bWVzc2FnZXMuCisgICAgdmFyIGxvZ01hbmFnZXIgPSBXZWJJbnNwZWN0b3IubG9nTWFuYWdlcjsK
KyAgICBsb2dNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkxvZ01hbmFnZXIu
RXZlbnQuQ2xlYXJlZCwgdGhpcy5fY29uc29sZVdhc0NsZWFyZWQsIHRoaXMpOworICAgIGxvZ01h
bmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuTG9nTWFuYWdlci5FdmVudC5BY3Rp
dmVMb2dDbGVhcmVkLCB0aGlzLl9jb25zb2xlV2FzQ2xlYXJlZCwgdGhpcyk7CisgICAgbG9nTWFu
YWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Mb2dNYW5hZ2VyLkV2ZW50Lk1lc3Nh
Z2VBZGRlZCwgdGhpcy5fY29uc29sZU1lc3NhZ2VBZGRlZCwgdGhpcyk7CisgICAgbG9nTWFuYWdl
ci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Mb2dNYW5hZ2VyLkV2ZW50LlByZXZpb3Vz
TWVzc2FnZVJlcGVhdENvdW50VXBkYXRlZCwgdGhpcy5fY29uc29sZU1lc3NhZ2VXYXNSZXBlYXRl
ZCwgdGhpcyk7CisKKyAgICB0aGlzLl9yZXNvdXJjZXNDb3VudCA9IDA7CisgICAgdGhpcy5fcmVz
b3VyY2VzU2l6ZSA9IDA7CisgICAgdGhpcy5fdGltZSA9IDA7CisgICAgdGhpcy5fbG9ncyA9IDA7
CisgICAgdGhpcy5fZXJyb3JzID0gMDsKKyAgICB0aGlzLl9pc3N1ZXMgPSAwOworfTsKKworV2Vi
SW5zcGVjdG9yLkRlZmF1bHREYXNoYm9hcmQuRXZlbnQgPSB7CisgICAgRGF0YURpZENoYW5nZTog
ImRlZmF1bHQtZGFzaGJvYXJkLWRhdGEtZGlkLWNoYW5nZSIKK307CisKK1dlYkluc3BlY3Rvci5E
ZWZhdWx0RGFzaGJvYXJkLnByb3RvdHlwZSA9IHsKKyAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVj
dG9yLkRlZmF1bHREYXNoYm9hcmQsCisgICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuT2JqZWN0
LnByb3RvdHlwZSwKKworICAgIC8vIFB1YmxpYworCisgICAgZ2V0IHJlc291cmNlc0NvdW50KCkK
KyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9yZXNvdXJjZXNDb3VudDsKKyAgICB9LAorCisg
ICAgc2V0IHJlc291cmNlc0NvdW50KHZhbHVlKQorICAgIHsKKyAgICAgICAgdGhpcy5fcmVzb3Vy
Y2VzQ291bnQgPSB2YWx1ZTsKKyAgICAgICAgdGhpcy5fZGF0YURpZENoYW5nZSgpOworICAgIH0s
CisKKyAgICBnZXQgcmVzb3VyY2VzU2l6ZSgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5f
cmVzb3VyY2VzU2l6ZTsKKyAgICB9LAorCisgICAgc2V0IHJlc291cmNlc1NpemUodmFsdWUpCisg
ICAgeworICAgICAgICB0aGlzLl9yZXNvdXJjZXNTaXplID0gdmFsdWU7CisgICAgICAgIHRoaXMu
X2RhdGFEaWRDaGFuZ2UoKTsKKyAgICB9LAorCisgICAgZ2V0IHRpbWUoKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIHRoaXMuX3RpbWU7CisgICAgfSwKKworICAgIHNldCB0aW1lKHZhbHVlKQorICAg
IHsKKyAgICAgICAgdGhpcy5fdGltZSA9IHZhbHVlOworICAgICAgICB0aGlzLl9kYXRhRGlkQ2hh
bmdlKCk7CisgICAgfSwKKworICAgIGdldCBsb2dzKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0
aGlzLl9sb2dzOworICAgIH0sCisKKyAgICBzZXQgbG9ncyh2YWx1ZSkKKyAgICB7CisgICAgICAg
IHRoaXMuX2xvZ3MgPSB2YWx1ZTsKKyAgICAgICAgdGhpcy5fZGF0YURpZENoYW5nZSgpOworICAg
IH0sCisKKyAgICBnZXQgZXJyb3JzKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9lcnJv
cnM7CisgICAgfSwKKworICAgIHNldCBlcnJvcnModmFsdWUpCisgICAgeworICAgICAgICB0aGlz
Ll9lcnJvcnMgPSB2YWx1ZTsKKyAgICAgICAgdGhpcy5fZGF0YURpZENoYW5nZSgpOworICAgIH0s
CisKKyAgICBnZXQgaXNzdWVzKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9pc3N1ZXM7
CisgICAgfSwKKworICAgIHNldCBpc3N1ZXModmFsdWUpCisgICAgeworICAgICAgICB0aGlzLl9p
c3N1ZXMgPSB2YWx1ZTsKKyAgICAgICAgdGhpcy5fZGF0YURpZENoYW5nZSgpOworICAgIH0sCisK
KyAgICAvLyBQcml2YXRlCisKKyAgICBfZGF0YURpZENoYW5nZTogZnVuY3Rpb24oKQorICAgIHsK
KyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkRlZmF1
bHREYXNoYm9hcmQuRXZlbnQuRGF0YURpZENoYW5nZSk7CisgICAgfSwKKworICAgIF9tYWluUmVz
b3VyY2VEaWRDaGFuZ2U6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgY29uc29sZS5h
c3NlcnQoZXZlbnQudGFyZ2V0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkZyYW1lKTsKKworICAg
ICAgICBpZiAoIWV2ZW50LnRhcmdldC5pc01haW5GcmFtZSgpKQorICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgIHRoaXMuX3Jlc291cmNlc0NvdW50ID0gMTsKKyAgICAgICAgdGhpcy5fcmVz
b3VyY2VzU2l6ZSA9IFdlYkluc3BlY3Rvci5mcmFtZVJlc291cmNlTWFuYWdlci5tYWluRnJhbWUu
bWFpblJlc291cmNlLnNpemUgfHwgMDsKKworICAgICAgICAvLyBPbmx5IHVwZGF0ZSB0aGUgdGlt
ZSBpZiB3ZSBhcmUgcmVjb3JkaW5nIHRoZSB0aW1lbGluZS4KKyAgICAgICAgaWYgKCFXZWJJbnNw
ZWN0b3IudGltZWxpbmVNYW5hZ2VyLnJlY29yZGluZ0VuYWJsZWQpIHsKKyAgICAgICAgICAgIHRo
aXMuX3RpbWUgPSAwOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAg
Ly8gV2Ugc2hvdWxkIG9ubHkgdHJhY2sgcmVzb3VyY2Ugc2l6ZXMgb24gZnJlc2ggbG9hZHMuCisg
ICAgICAgIGlmICh0aGlzLl93YWl0aW5nRm9yRmlyc3RNYWluUmVzb3VyY2VUb1N0YXJ0VHJhY2tp
bmdTaXplKSB7CisgICAgICAgICAgICBkZWxldGUgdGhpcy5fd2FpdGluZ0ZvckZpcnN0TWFpblJl
c291cmNlVG9TdGFydFRyYWNraW5nU2l6ZTsKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5SZXNv
dXJjZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5SZXNvdXJjZS5FdmVudC5TaXplRGlk
Q2hhbmdlLCB0aGlzLl9yZXNvdXJjZVNpemVEaWRDaGFuZ2UsIHRoaXMpOworICAgICAgICB9CisK
KyAgICAgICAgdGhpcy5fZGF0YURpZENoYW5nZSgpOworICAgICAgICB0aGlzLl9zdGFydFVwZGF0
aW5nVGltZSgpOworICAgIH0sCisKKyAgICBfcmVjb3JkaW5nU3RvcHBlZDogZnVuY3Rpb24oZXZl
bnQpCisgICAgeworICAgICAgICAvLyBJZiByZWNvcmRpbmcgc3RvcHMsIHdlIHNob3VsZCBzdG9w
IHRoZSB0aW1lciBpZiBpdCBoYXNuJ3Qgc3RvcHBlZCBhbHJlYWR5LgorICAgICAgICB0aGlzLl9z
dG9wVXBkYXRpbmdUaW1lKCk7CisgICAgfSwKKworICAgIF9yZXNvdXJjZVdhc0FkZGVkOiBmdW5j
dGlvbihldmVudCkKKyAgICB7CisgICAgICAgICsrdGhpcy5yZXNvdXJjZXNDb3VudDsKKyAgICB9
LAorCisgICAgX2ZyYW1lV2FzQWRkZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAg
Kyt0aGlzLnJlc291cmNlc0NvdW50OworICAgIH0sCisKKyAgICBfcmVzb3VyY2VTaXplRGlkQ2hh
bmdlOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHRoaXMucmVzb3VyY2VzU2l6ZSAr
PSBldmVudC50YXJnZXQuc2l6ZSAtIGV2ZW50LmRhdGEucHJldmlvdXNTaXplOworICAgIH0sCisK
KyAgICBfc3RhcnRVcGRhdGluZ1RpbWU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMu
X3N0b3BVcGRhdGluZ1RpbWUoKTsKKworICAgICAgICB0aGlzLnRpbWUgPSAwOworCisgICAgICAg
IHRoaXMuX3RpbWVsaW5lQmFzZVRpbWUgPSBEYXRlLm5vdygpOworICAgICAgICB0aGlzLl90aW1l
SW50ZXJ2YWxEZWxheSA9IDUwOworICAgICAgICB0aGlzLl90aW1lSW50ZXJ2YWxJZGVudGlmaWVy
ID0gc2V0SW50ZXJ2YWwodGhpcy5fdXBkYXRlVGltZS5iaW5kKHRoaXMpLCB0aGlzLl90aW1lSW50
ZXJ2YWxEZWxheSk7CisgICAgfSwKKworICAgIF9zdG9wVXBkYXRpbmdUaW1lOiBmdW5jdGlvbigp
CisgICAgeworICAgICAgICBpZiAoIXRoaXMuX3RpbWVJbnRlcnZhbElkZW50aWZpZXIpCisgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLl90aW1lSW50ZXJ2
YWxJZGVudGlmaWVyKTsKKyAgICAgICAgZGVsZXRlIHRoaXMuX3RpbWVJbnRlcnZhbElkZW50aWZp
ZXI7CisgICAgfSwKKworICAgIF91cGRhdGVUaW1lOiBmdW5jdGlvbigpCisgICAgeworICAgICAg
ICB2YXIgZHVyYXRpb24gPSBEYXRlLm5vdygpIC0gdGhpcy5fdGltZWxpbmVCYXNlVGltZTsKKwor
ICAgICAgICB2YXIgdGltZUludGVydmFsRGVsYXkgPSB0aGlzLl90aW1lSW50ZXJ2YWxEZWxheTsK
KyAgICAgICAgaWYgKGR1cmF0aW9uID49IDEwMDApIC8vIDEgc2Vjb25kCisgICAgICAgICAgICB0
aW1lSW50ZXJ2YWxEZWxheSA9IDEwMDsKKyAgICAgICAgZWxzZSBpZiAoZHVyYXRpb24gPj0gNjAw
MDApIC8vIDYwIHNlY29uZHMKKyAgICAgICAgICAgIHRpbWVJbnRlcnZhbERlbGF5ID0gMTAwMDsK
KyAgICAgICAgZWxzZSBpZiAoZHVyYXRpb24gPj0gMzYwMDAwMCkgLy8gMSBtaW51dGUKKyAgICAg
ICAgICAgIHRpbWVJbnRlcnZhbERlbGF5ID0gMTAwMDA7CisKKyAgICAgICAgaWYgKHRpbWVJbnRl
cnZhbERlbGF5ICE9PSB0aGlzLl90aW1lSW50ZXJ2YWxEZWxheSkgeworICAgICAgICAgICAgdGhp
cy5fdGltZUludGVydmFsRGVsYXkgPSB0aW1lSW50ZXJ2YWxEZWxheTsKKworICAgICAgICAgICAg
Y2xlYXJJbnRlcnZhbCh0aGlzLl90aW1lSW50ZXJ2YWxJZGVudGlmaWVyKTsKKyAgICAgICAgICAg
IHRoaXMuX3RpbWVJbnRlcnZhbElkZW50aWZpZXIgPSBzZXRJbnRlcnZhbCh0aGlzLl91cGRhdGVU
aW1lLmJpbmQodGhpcyksIHRoaXMuX3RpbWVJbnRlcnZhbERlbGF5KTsKKyAgICAgICAgfQorCisg
ICAgICAgIHZhciBtYWluRnJhbWUgPSBXZWJJbnNwZWN0b3IuZnJhbWVSZXNvdXJjZU1hbmFnZXIu
bWFpbkZyYW1lOworICAgICAgICB2YXIgbWFpbkZyYW1lU3RhcnRUaW1lID0gbWFpbkZyYW1lLm1h
aW5SZXNvdXJjZS5maXJzdFRpbWVzdGFtcDsKKyAgICAgICAgdmFyIG1haW5GcmFtZUxvYWRFdmVu
dFRpbWUgPSBtYWluRnJhbWUubG9hZEV2ZW50VGltZXN0YW1wOworCisgICAgICAgIGlmIChpc05h
TihtYWluRnJhbWVTdGFydFRpbWUpIHx8IGlzTmFOKG1haW5GcmFtZUxvYWRFdmVudFRpbWUpKSB7
CisgICAgICAgICAgICB0aGlzLnRpbWUgPSBkdXJhdGlvbiAvIDEwMDA7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKworICAgICAgICB0aGlzLnRpbWUgPSBtYWluRnJhbWVMb2FkRXZl
bnRUaW1lIC0gbWFpbkZyYW1lU3RhcnRUaW1lOworCisgICAgICAgIHRoaXMuX3N0b3BVcGRhdGlu
Z1RpbWUoKTsKKyAgICB9LAorCisgICAgX2NvbnNvbGVNZXNzYWdlQWRkZWQ6IGZ1bmN0aW9uKGV2
ZW50KQorICAgIHsKKyAgICAgICAgdmFyIG1lc3NhZ2UgPSBldmVudC5kYXRhLm1lc3NhZ2U7Cisg
ICAgICAgIHRoaXMuX2xhc3RDb25zb2xlTWVzc2FnZVR5cGUgPSBtZXNzYWdlLmxldmVsOworICAg
ICAgICB0aGlzLl9pbmNyZW1lbnRDb25zb2xlTWVzc2FnZVR5cGUobWVzc2FnZS5sZXZlbCwgbWVz
c2FnZS50b3RhbFJlcGVhdENvdW50KTsKKyAgICB9LAorCisgICAgX2NvbnNvbGVNZXNzYWdlV2Fz
UmVwZWF0ZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgdGhpcy5faW5jcmVtZW50
Q29uc29sZU1lc3NhZ2VUeXBlKHRoaXMuX2xhc3RDb25zb2xlTWVzc2FnZVR5cGUsIDEpOworICAg
IH0sCisKKyAgICBfaW5jcmVtZW50Q29uc29sZU1lc3NhZ2VUeXBlOiBmdW5jdGlvbih0eXBlLCBp
bmNyZW1lbnQpCisgICAgeworICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICAgICAgY2FzZSAi
bG9nIjoKKyAgICAgICAgICAgIHRoaXMubG9ncyArPSBpbmNyZW1lbnQ7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSAid2FybmluZyI6CisgICAgICAgICAgICB0aGlzLmlzc3VlcyAr
PSBpbmNyZW1lbnQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAiZXJyb3IiOgor
ICAgICAgICAgICAgdGhpcy5lcnJvcnMgKz0gaW5jcmVtZW50OworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKyAgICB9LAorCisgICAgX2NvbnNvbGVXYXNDbGVhcmVkOiBmdW5jdGlvbihl
dmVudCkKKyAgICB7CisgICAgICAgIHRoaXMuX2xvZ3MgPSAwOworICAgICAgICB0aGlzLl9pc3N1
ZXMgPSAwOworICAgICAgICB0aGlzLl9lcnJvcnMgPSAwOworICAgIH0KK307CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EYXNoYm9hcmRDb250
YWluZXJWaWV3LmNzcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L0Rhc2hib2FyZENvbnRhaW5lclZpZXcuY3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYwMmExNjc5N2E2YmIyMjIy
MWE5ZTIwMTY4NWNlODRkMzJkZGY3MTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EYXNoYm9hcmRDb250YWluZXJWaWV3LmNzcwpA
QCAtMCwwICsxLDEzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisudG9vbGJhciAu
ZGFzaGJvYXJkLWNvbnRhaW5lciB7CisgICAgcG9zaXRpb246IHJlbGF0aXZlOworCisgICAgd2lk
dGg6IDM3NXB4OworCisgICAgYm9yZGVyOiAxcHggc29saWQgcmdiKDE2MywgMTYzLCAxNjMpOwor
ICAgIGJvcmRlci1yYWRpdXM6IDRweDsKKworICAgIGJveC1zaGFkb3c6IHJnYmEoMjU1LCAyNTUs
IDI1NSwgMC40NSkgMCAxcHggMDsKKworICAgIG1hcmdpbjogNHB4IDEwcHg7CisgICAgb3ZlcmZs
b3c6IGhpZGRlbjsKK30KKworYm9keS53aW5kb3ctaW5hY3RpdmUgLnRvb2xiYXIgLmRhc2hib2Fy
ZC1jb250YWluZXIgeworICAgIGJvcmRlci1jb2xvcjogcmdiKDE5NiwgMTk2LCAxOTYpOworICAg
IGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7CisgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDIzOSwg
MjM5LCAyMzkpOworfQorCisudG9vbGJhci5jb2xsYXBzZWQgLmRhc2hib2FyZC1jb250YWluZXIs
Citib2R5LmphdmFzY3JpcHQgLnRvb2xiYXIgLmRhc2hib2FyZC1jb250YWluZXIgeworICAgIHdp
ZHRoOiAxNzVweDsKK30KKworLnRvb2xiYXIuc21hbGwtc2l6ZS5pY29uLWFuZC1sYWJlbC12ZXJ0
aWNhbCAuZGFzaGJvYXJkLWNvbnRhaW5lciwKKy50b29sYmFyLm5vcm1hbC1zaXplLmljb24tYW5k
LWxhYmVsLXZlcnRpY2FsIC5kYXNoYm9hcmQtY29udGFpbmVyIHsKKyAgICBtYXJnaW4tdG9wOiA2
cHg7Cit9CisKKy8qIFN0eWxlcyBmb3IgdGhlIGV4dHJhIHNob3J0IHN0eWxlLCBvbmUgcm93IHdp
dGggcXVpdGUgYSBzbWFsbCB5LW1hcmdpbiAqLworCisudG9vbGJhci5sYWJlbC1vbmx5IC5kYXNo
Ym9hcmQtY29udGFpbmVyLAorLnRvb2xiYXIuc21hbGwtc2l6ZS5pY29uLW9ubHkgLmRhc2hib2Fy
ZC1jb250YWluZXIsCisudG9vbGJhci5zbWFsbC1zaXplLmljb24tYW5kLWxhYmVsLXZlcnRpY2Fs
IC5kYXNoYm9hcmQtY29udGFpbmVyLAorLnRvb2xiYXIuc21hbGwtc2l6ZS5pY29uLWFuZC1sYWJl
bC1ob3Jpem9udGFsIC5kYXNoYm9hcmQtY29udGFpbmVyIHsKKyAgICBoZWlnaHQ6IDIycHg7Cit9
CisKKy8qIFN0eWxlcyBmb3IgdGhlIGZhaXJseSBzaG9ydCBzdHlsZSwgb25lIHJvdyB3aXRoIHF1
aXRlIGEgYml0IG9mIHktbWFyZ2luICovCisKKy50b29sYmFyLm5vcm1hbC1zaXplLmljb24tb25s
eSAuZGFzaGJvYXJkLWNvbnRhaW5lciwKKy50b29sYmFyLm5vcm1hbC1zaXplLmljb24tYW5kLWxh
YmVsLXZlcnRpY2FsIC5kYXNoYm9hcmQtY29udGFpbmVyLAorLnRvb2xiYXIubm9ybWFsLXNpemUu
aWNvbi1hbmQtbGFiZWwtaG9yaXpvbnRhbCAuZGFzaGJvYXJkLWNvbnRhaW5lciB7CisgICAgaGVp
Z2h0OiAzMHB4OworfQorCisvKiBEZWZhdWx0IHN0eWxlcyBmb3IgZGFzaGJvYXJkcyAqLworCisu
dG9vbGJhciAuZGFzaGJvYXJkIHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgdG9wOiAw
OworICAgIGJvdHRvbTogMDsKKyAgICBsZWZ0OiAwOworICAgIHJpZ2h0OiAwOworCisgICAgYmFj
a2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgcmdiYSgwLCAxMjgsIDI1
NSwgMCksIHJnYmEoMCwgMTI4LCAyNTUsIDAuMDc1KSksCisgICAgICAgIGxpbmVhci1ncmFkaWVu
dCh0byByaWdodCwgcmdiYSgwLCAwLCAwLCAwLjA5KSwgdHJhbnNwYXJlbnQsIHJnYmEoMCwgMCwg
MCwgMC4wOSkpLAorICAgICAgICBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCByZ2IoMjQwLCAy
NDQsIDI1MSksIHJnYigyNTAsIDI1MywgMjU1KSk7CisgICAgYmFja2dyb3VuZC1zaXplOiAxMDAl
IDZweCwgYXV0bywgYXV0bzsKKyAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBib3R0b20sIGNlbnRl
ciwgY2VudGVyOworICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7CisKKyAgICBwYWRk
aW5nOiAwIDVweDsKKworICAgIC13ZWJraXQtYW5pbWF0aW9uLWR1cmF0aW9uOiAwLjRzOworfQor
CisudG9vbGJhciAuZGFzaGJvYXJkLnZpc2libGUgeworICAgIHotaW5kZXg6IDEwMDsKK30KKwor
LnRvb2xiYXIgLmRhc2hib2FyZC5zbGlkZS1vdXQtdXAgeworICAgIC13ZWJraXQtYW5pbWF0aW9u
LW5hbWU6IHNsaWRlLXRvcC1lZGdlOworICAgIC13ZWJraXQtYW5pbWF0aW9uLWRpcmVjdGlvbjog
cmV2ZXJzZTsKK30KKworLnRvb2xiYXIgLmRhc2hib2FyZC5zbGlkZS1vdXQtZG93biB7CisgICAg
LXdlYmtpdC1hbmltYXRpb24tbmFtZTogc2xpZGUtYm90dG9tLWVkZ2U7Cit9CisKKy50b29sYmFy
IC5kYXNoYm9hcmQuc2xpZGUtaW4tdXAgeworICAgIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IHNs
aWRlLWJvdHRvbS1lZGdlOworICAgIC13ZWJraXQtYW5pbWF0aW9uLWRpcmVjdGlvbjogcmV2ZXJz
ZTsKK30KKworLnRvb2xiYXIgLmRhc2hib2FyZC5zbGlkZS1pbi1kb3duIHsKKyAgICAtd2Via2l0
LWFuaW1hdGlvbi1uYW1lOiBzbGlkZS10b3AtZWRnZTsKK30KKworQC13ZWJraXQta2V5ZnJhbWVz
IHNsaWRlLXRvcC1lZGdlIHsKKyAgICBmcm9tIHsKKyAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06
IHRyYW5zbGF0ZVkoLTMwcHgpOworICAgIH0KKyAgICB0byB7CisgICAgICAgIC13ZWJraXQtdHJh
bnNmb3JtOiB0cmFuc2xhdGVZKDApOworICAgIH0KK30KKworQC13ZWJraXQta2V5ZnJhbWVzIHNs
aWRlLWJvdHRvbS1lZGdlIHsKKyAgICBmcm9tIHsKKyAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06
IHRyYW5zbGF0ZVkoMCk7CisgICAgfQorICAgIHRvIHsKKyAgICAgICAgLXdlYmtpdC10cmFuc2Zv
cm06IHRyYW5zbGF0ZVkoMzBweCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGFzaGJvYXJkQ29udGFpbmVyVmlldy5qcyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0Rhc2hib2FyZENvbnRh
aW5lclZpZXcuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjczODAyNjM2ZmJjMGQ4ODVhYWY3N2ZkYTMyZTQ2NDAy
ZTQzYTQzOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0Rhc2hib2FyZENvbnRhaW5lclZpZXcuanMKQEAgLTAsMCArMSwyMzUgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworV2ViSW5zcGVjdG9yLkRhc2hib2FyZENvbnRh
aW5lclZpZXcgPSBmdW5jdGlvbigpIHsKKyAgICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhp
cyk7CisKKyAgICB0aGlzLl90b29sYmFySXRlbSA9IG5ldyBXZWJJbnNwZWN0b3IuTmF2aWdhdGlv
bkl0ZW0oImRhc2hib2FyZC1jb250YWluZXIiLCAiZ3JvdXAiLCBXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIkFjdGl2aXR5IFZpZXdlciIpKTsKKworICAgIC8vIFJlcHJlc2VudHMgY3VycmVudGx5IG9w
ZW4gZGFzaGJvYXJkcywgd2l0aCB0aGUgbW9zdCByZWNlbnQgZW50cmllcyBhcHBlbmRlZCB0byB0
aGUgZW5kLgorICAgIHRoaXMuX2Rhc2hib2FyZFN0YWNrID0gW107CisgICAgdGhpcy5fY3VycmVu
dEluZGV4ID0gLTE7Cit9OworCitXZWJJbnNwZWN0b3IuRGFzaGJvYXJkQ29udGFpbmVyVmlldy5W
aXNpYmxlRGFzaGJvYXJkU3R5bGVDbGFzc05hbWUgPSAidmlzaWJsZSI7CisKK1dlYkluc3BlY3Rv
ci5EYXNoYm9hcmRDb250YWluZXJWaWV3LkFkdmFuY2VEaXJlY3Rpb24gPSB7CisgICAgRm9yd2Fy
ZDogImRhc2hib2FyZC1jb250YWluZXItdmlldy1hZHZhbmNlLWRpcmVjdGlvbi1mb3J3YXJkIiwK
KyAgICBCYWNrd2FyZDogImRhc2hib2FyZC1jb250YWluZXItdmlldy1hZHZhbmNlLWRpcmVjdGlv
bi1iYWNrd2FyZCIsCisgICAgTm9uZTogImRhc2hib2FyZC1jb250YWluZXItdmlldy1hZHZhbmNl
LWRpcmVjdGlvbi1ub25lIgorfTsKKworV2ViSW5zcGVjdG9yLkRhc2hib2FyZENvbnRhaW5lclZp
ZXcuRm9yd2FyZEluY29taW5nRGFzaGJvYXJkU3R5bGVDbGFzc05hbWUgPSAic2xpZGUtaW4tZG93
biI7CitXZWJJbnNwZWN0b3IuRGFzaGJvYXJkQ29udGFpbmVyVmlldy5CYWNrd2FyZEluY29taW5n
RGFzaGJvYXJkU3R5bGVDbGFzc05hbWUgPSAic2xpZGUtaW4tdXAiOworV2ViSW5zcGVjdG9yLkRh
c2hib2FyZENvbnRhaW5lclZpZXcuRm9yd2FyZE91dGdvaW5nRGFzaGJvYXJkU3R5bGVDbGFzc05h
bWUgPSAic2xpZGUtb3V0LWRvd24iOworV2ViSW5zcGVjdG9yLkRhc2hib2FyZENvbnRhaW5lclZp
ZXcuQmFja3dhcmRPdXRnb2luZ0Rhc2hib2FyZFN0eWxlQ2xhc3NOYW1lID0gInNsaWRlLW91dC11
cCI7CisKK1dlYkluc3BlY3Rvci5EYXNoYm9hcmRDb250YWluZXJWaWV3LnByb3RvdHlwZSA9IHsK
KyAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkRhc2hib2FyZENvbnRhaW5lclZpZXcsCisg
ICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZSwKKworICAgIC8vIFB1
YmxpYworCisgICAgZ2V0IHRvb2xiYXJJdGVtKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlz
Ll90b29sYmFySXRlbTsKKyAgICB9LAorCisgICAgZ2V0IGN1cnJlbnREYXNoYm9hcmRWaWV3KCkK
KyAgICB7CisgICAgICAgIGlmICh0aGlzLl9jdXJyZW50SW5kZXggPT09IC0xKQorICAgICAgICAg
ICAgcmV0dXJuIG51bGw7CisKKyAgICAgICAgcmV0dXJuIHRoaXMuX2Rhc2hib2FyZFN0YWNrW3Ro
aXMuX2N1cnJlbnRJbmRleF07CisgICAgfSwKKworICAgIHNob3dEYXNoYm9hcmRWaWV3Rm9yUmVw
cmVzZW50ZWRPYmplY3Q6IGZ1bmN0aW9uKHJlcHJlc2VudGVkT2JqZWN0KQorICAgIHsKKyAgICAg
ICAgdmFyIGRhc2hib2FyZFZpZXcgPSB0aGlzLl9kYXNoYm9hcmRWaWV3Rm9yUmVwcmVzZW50ZWRP
YmplY3QocmVwcmVzZW50ZWRPYmplY3QpOworICAgICAgICBpZiAoIWRhc2hib2FyZFZpZXcpCisg
ICAgICAgICAgICByZXR1cm4gbnVsbDsKKworICAgICAgICBpZiAodGhpcy5jdXJyZW50RGFzaGJv
YXJkVmlldyA9PT0gZGFzaGJvYXJkVmlldykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAg
ICB2YXIgaW5kZXggPSB0aGlzLl9kYXNoYm9hcmRTdGFjay5pbmRleE9mKGRhc2hib2FyZFZpZXcp
OworICAgICAgICB0aGlzLl9zaG93RGFzaGJvYXJkQXRJbmRleChpbmRleCk7CisgICAgICAgIHJl
dHVybiBkYXNoYm9hcmRWaWV3OworICAgIH0sCisKKyAgICBoaWRlRGFzaGJvYXJkVmlld0ZvclJl
cHJlc2VudGVkT2JqZWN0OiBmdW5jdGlvbihyZXByZXNlbnRlZE9iamVjdCkKKyAgICB7CisgICAg
ICAgIHZhciBvbmx5UmV0dXJuRXhpc3RpbmdWaWV3cyA9IHRydWU7CisgICAgICAgIHZhciBkYXNo
Ym9hcmRWaWV3ID0gdGhpcy5fZGFzaGJvYXJkVmlld0ZvclJlcHJlc2VudGVkT2JqZWN0KHJlcHJl
c2VudGVkT2JqZWN0LCBvbmx5UmV0dXJuRXhpc3RpbmdWaWV3cyk7CisKKyAgICAgICAgaWYgKHRo
aXMuY3VycmVudERhc2hib2FyZFZpZXcgIT09IGRhc2hib2FyZFZpZXcpCisgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fY3VycmVudEluZGV4ID4gMCk7
CisgICAgICAgIHRoaXMuX3Nob3dEYXNoYm9hcmRBdEluZGV4KHRoaXMuX2N1cnJlbnRJbmRleCAt
IDEpOworICAgIH0sCisKKyAgICBjbG9zZURhc2hib2FyZFZpZXdGb3JSZXByZXNlbnRlZE9iamVj
dDogZnVuY3Rpb24ocmVwcmVzZW50ZWRPYmplY3QpCisgICAgeworICAgICAgICB2YXIgb25seVJl
dHVybkV4aXN0aW5nVmlld3MgPSB0cnVlOworICAgICAgICB2YXIgZGFzaGJvYXJkVmlldyA9IHRo
aXMuX2Rhc2hib2FyZFZpZXdGb3JSZXByZXNlbnRlZE9iamVjdChyZXByZXNlbnRlZE9iamVjdCwg
b25seVJldHVybkV4aXN0aW5nVmlld3MpOworICAgICAgICBpZiAoIWRhc2hib2FyZFZpZXcpCisg
ICAgICAgICAgICByZXR1cm4gbnVsbDsKKworICAgICAgICB0aGlzLl9jbG9zZURhc2hib2FyZFZp
ZXcoZGFzaGJvYXJkVmlldyk7CisgICAgfSwKKworICAgIC8vIFByaXZhdGUKKworICAgIF9kYXNo
Ym9hcmRWaWV3Rm9yUmVwcmVzZW50ZWRPYmplY3Q6IGZ1bmN0aW9uKHJlcHJlc2VudGVkT2JqZWN0
LCBvbmx5UmV0dXJuRXhpc3RpbmdWaWV3cykKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0
KHJlcHJlc2VudGVkT2JqZWN0KTsKKworICAgICAgICAvLyBJdGVyYXRlIG92ZXIgYWxsIGtub3du
IGRhc2hib2FyZCB2aWV3cyBhbmQgc2VlIGlmIGFueSBhcmUgZm9yIHRoaXMgb2JqZWN0LgorICAg
ICAgICBmb3IgKHZhciBkYXNoYm9hcmRWaWV3IG9mIHRoaXMuX2Rhc2hib2FyZFN0YWNrKSB7Cisg
ICAgICAgICAgICBpZiAoZGFzaGJvYXJkVmlldy5yZXByZXNlbnRlZE9iamVjdCA9PT0gcmVwcmVz
ZW50ZWRPYmplY3QpCisgICAgICAgICAgICAgICAgcmV0dXJuIGRhc2hib2FyZFZpZXc7CisgICAg
ICAgIH0KKworICAgICAgICBpZiAob25seVJldHVybkV4aXN0aW5nVmlld3MpCisgICAgICAgICAg
ICByZXR1cm4gbnVsbDsKKworICAgICAgICB0cnkgeworICAgICAgICAgICAgLy8gTm8gZXhpc3Rp
bmcgY29udGVudCB2aWV3IGZvdW5kLCBtYWtlIGEgbmV3IG9uZS4KKyAgICAgICAgICAgIGRhc2hi
b2FyZFZpZXcgPSBuZXcgV2ViSW5zcGVjdG9yLkRhc2hib2FyZFZpZXcocmVwcmVzZW50ZWRPYmpl
Y3QpOworICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICBjb25zb2xlLmVycm9yKGUp
OworICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0KKworICAgICAgICB0aGlzLl9k
YXNoYm9hcmRTdGFjay5wdXNoKGRhc2hib2FyZFZpZXcpOworICAgICAgICB0aGlzLl90b29sYmFy
SXRlbS5lbGVtZW50LmFwcGVuZENoaWxkKGRhc2hib2FyZFZpZXcuZWxlbWVudCk7CisKKyAgICAg
ICAgcmV0dXJuIGRhc2hib2FyZFZpZXc7CisgICAgfSwKKworICAgIF9zaG93RGFzaGJvYXJkQXRJ
bmRleDogZnVuY3Rpb24oaW5kZXgpCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydChpbmRl
eCA+PSAwICYmIGluZGV4IDw9IHRoaXMuX2Rhc2hib2FyZFN0YWNrLmxlbmd0aCAtIDEpOworCisg
ICAgICAgIGlmICh0aGlzLl9jdXJyZW50SW5kZXggPT09IGluZGV4KQorICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgIHZhciBhZHZhbmNlRGlyZWN0aW9uID0gV2ViSW5zcGVjdG9yLkRhc2hi
b2FyZENvbnRhaW5lclZpZXcuQWR2YW5jZURpcmVjdGlvbi5Gb3J3YXJkOworICAgICAgICB2YXIg
aW5pdGlhbERpcmVjdGlvbiA9IFdlYkluc3BlY3Rvci5EYXNoYm9hcmRDb250YWluZXJWaWV3LkFk
dmFuY2VEaXJlY3Rpb24uTm9uZTsKKyAgICAgICAgdmFyIGlzRmlyc3REYXNoYm9hcmQgPSB0aGlz
Ll9jdXJyZW50SW5kZXggPT09IC0xOworICAgICAgICBpZiAoIWlzRmlyc3REYXNoYm9hcmQpCisg
ICAgICAgICAgICB0aGlzLl9oaWRlRGFzaGJvYXJkVmlldyh0aGlzLmN1cnJlbnREYXNoYm9hcmRW
aWV3LCBhZHZhbmNlRGlyZWN0aW9uKTsKKworICAgICAgICB0aGlzLl9jdXJyZW50SW5kZXggPSBp
bmRleDsKKyAgICAgICAgdGhpcy5fc2hvd0Rhc2hib2FyZFZpZXcodGhpcy5jdXJyZW50RGFzaGJv
YXJkVmlldywgaXNGaXJzdERhc2hib2FyZCA/IGluaXRpYWxEaXJlY3Rpb24gOiBhZHZhbmNlRGly
ZWN0aW9uKTsKKyAgICB9LAorCisgICAgX3Nob3dEYXNoYm9hcmRWaWV3OiBmdW5jdGlvbihkYXNo
Ym9hcmRWaWV3LCBhZHZhbmNlRGlyZWN0aW9uKQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3Nl
cnQoZGFzaGJvYXJkVmlldyBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5EYXNoYm9hcmRWaWV3KTsK
KworICAgICAgICBkYXNoYm9hcmRWaWV3LnNob3duKCk7CisKKyAgICAgICAgdmFyIGFuaW1hdGlv
bkNsYXNzID0gbnVsbDsKKyAgICAgICAgaWYgKGFkdmFuY2VEaXJlY3Rpb24gPT09IFdlYkluc3Bl
Y3Rvci5EYXNoYm9hcmRDb250YWluZXJWaWV3LkFkdmFuY2VEaXJlY3Rpb24uRm9yd2FyZCkKKyAg
ICAgICAgICAgIGFuaW1hdGlvbkNsYXNzID0gV2ViSW5zcGVjdG9yLkRhc2hib2FyZENvbnRhaW5l
clZpZXcuRm9yd2FyZEluY29taW5nRGFzaGJvYXJkU3R5bGVDbGFzc05hbWU7CisgICAgICAgIGlm
IChhZHZhbmNlRGlyZWN0aW9uID09PSBXZWJJbnNwZWN0b3IuRGFzaGJvYXJkQ29udGFpbmVyVmll
dy5BZHZhbmNlRGlyZWN0aW9uLkJhY2t3YXJkKQorICAgICAgICAgICAgYW5pbWF0aW9uQ2xhc3Mg
PSBXZWJJbnNwZWN0b3IuRGFzaGJvYXJkQ29udGFpbmVyVmlldy5CYWNrd2FyZEluY29taW5nRGFz
aGJvYXJkU3R5bGVDbGFzc05hbWU7CisKKyAgICAgICAgaWYgKGFuaW1hdGlvbkNsYXNzKSB7Cisg
ICAgICAgICAgICBmdW5jdGlvbiBhbmltYXRpb25FbmRlZChldmVudCkgeworICAgICAgICAgICAg
ICAgIGlmIChldmVudC50YXJnZXQgIT09IGRhc2hib2FyZFZpZXcuZWxlbWVudCkKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAgICAgZGFzaGJvYXJkVmlldy5lbGVt
ZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIndlYmtpdEFuaW1hdGlvbkVuZCIsIGFuaW1hdGlvbkVu
ZGVkKTsKKyAgICAgICAgICAgICAgICBkYXNoYm9hcmRWaWV3LmVsZW1lbnQuY2xhc3NMaXN0LnJl
bW92ZShhbmltYXRpb25DbGFzcyk7CisgICAgICAgICAgICAgICAgZGFzaGJvYXJkVmlldy5lbGVt
ZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLkRhc2hib2FyZENvbnRhaW5lclZpZXcuVmlz
aWJsZURhc2hib2FyZFN0eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGRhc2hib2FyZFZpZXcuZWxlbWVudC5jbGFzc0xpc3QuYWRkKGFuaW1hdGlvbkNsYXNzKTsKKyAg
ICAgICAgICAgIGRhc2hib2FyZFZpZXcuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJ3ZWJraXRB
bmltYXRpb25FbmQiLCBhbmltYXRpb25FbmRlZCk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAg
ICAgZGFzaGJvYXJkVmlldy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLkRhc2hi
b2FyZENvbnRhaW5lclZpZXcuVmlzaWJsZURhc2hib2FyZFN0eWxlQ2xhc3NOYW1lKTsKKworICAg
ICAgICByZXR1cm4gZGFzaGJvYXJkVmlldzsKKyAgICB9LAorCisgICAgX2hpZGVEYXNoYm9hcmRW
aWV3OiBmdW5jdGlvbihkYXNoYm9hcmRWaWV3LCBhZHZhbmNlRGlyZWN0aW9uLCBjYWxsYmFjaykK
KyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGRhc2hib2FyZFZpZXcgaW5zdGFuY2VvZiBX
ZWJJbnNwZWN0b3IuRGFzaGJvYXJkVmlldyk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMu
Y3VycmVudERhc2hib2FyZFZpZXcgPT09IGRhc2hib2FyZFZpZXcpOworCisgICAgICAgIGRhc2hi
b2FyZFZpZXcuaGlkZGVuKCk7CisKKyAgICAgICAgdmFyIGFuaW1hdGlvbkNsYXNzID0gbnVsbDsK
KyAgICAgICAgaWYgKGFkdmFuY2VEaXJlY3Rpb24gPT09IFdlYkluc3BlY3Rvci5EYXNoYm9hcmRD
b250YWluZXJWaWV3LkFkdmFuY2VEaXJlY3Rpb24uRm9yd2FyZCkKKyAgICAgICAgICAgIGFuaW1h
dGlvbkNsYXNzID0gV2ViSW5zcGVjdG9yLkRhc2hib2FyZENvbnRhaW5lclZpZXcuRm9yd2FyZE91
dGdvaW5nRGFzaGJvYXJkU3R5bGVDbGFzc05hbWU7CisgICAgICAgIGlmIChhZHZhbmNlRGlyZWN0
aW9uID09PSBXZWJJbnNwZWN0b3IuRGFzaGJvYXJkQ29udGFpbmVyVmlldy5BZHZhbmNlRGlyZWN0
aW9uLkJhY2t3YXJkKQorICAgICAgICAgICAgYW5pbWF0aW9uQ2xhc3MgPSBXZWJJbnNwZWN0b3Iu
RGFzaGJvYXJkQ29udGFpbmVyVmlldy5CYWNrd2FyZE91dGdvaW5nRGFzaGJvYXJkU3R5bGVDbGFz
c05hbWU7CisKKyAgICAgICAgaWYgKGFuaW1hdGlvbkNsYXNzKSB7CisgICAgICAgICAgICBmdW5j
dGlvbiBhbmltYXRpb25FbmRlZChldmVudCkgeworICAgICAgICAgICAgICAgIGlmIChldmVudC50
YXJnZXQgIT09IGRhc2hib2FyZFZpZXcuZWxlbWVudCkKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgICAgICAgICAgZGFzaGJvYXJkVmlldy5lbGVtZW50LnJlbW92ZUV2ZW50
TGlzdGVuZXIoIndlYmtpdEFuaW1hdGlvbkVuZCIsIGFuaW1hdGlvbkVuZGVkKTsKKyAgICAgICAg
ICAgICAgICBkYXNoYm9hcmRWaWV3LmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShhbmltYXRpb25D
bGFzcyk7CisgICAgICAgICAgICAgICAgZGFzaGJvYXJkVmlldy5lbGVtZW50LmNsYXNzTGlzdC5y
ZW1vdmUoV2ViSW5zcGVjdG9yLkRhc2hib2FyZENvbnRhaW5lclZpZXcuVmlzaWJsZURhc2hib2Fy
ZFN0eWxlQ2xhc3NOYW1lKTsKKworICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgY2FsbGJhY2sg
PT09ICJmdW5jdGlvbiIpCisgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBkYXNoYm9hcmRWaWV3LmVsZW1lbnQuY2xhc3NMaXN0LmFkZChh
bmltYXRpb25DbGFzcyk7CisgICAgICAgICAgICBkYXNoYm9hcmRWaWV3LmVsZW1lbnQuYWRkRXZl
bnRMaXN0ZW5lcigid2Via2l0QW5pbWF0aW9uRW5kIiwgYW5pbWF0aW9uRW5kZWQpOworICAgICAg
ICB9IGVsc2UKKyAgICAgICAgICAgIGRhc2hib2FyZFZpZXcuZWxlbWVudC5jbGFzc0xpc3QucmVt
b3ZlKFdlYkluc3BlY3Rvci5EYXNoYm9hcmRDb250YWluZXJWaWV3LlZpc2libGVEYXNoYm9hcmRT
dHlsZUNsYXNzTmFtZSk7CisgICAgfSwKKworICAgIF9jbG9zZURhc2hib2FyZFZpZXc6IGZ1bmN0
aW9uKGRhc2hib2FyZFZpZXcpCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydChkYXNoYm9h
cmRWaWV3IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkRhc2hib2FyZFZpZXcpOworCisgICAgICAg
IGZ1bmN0aW9uIGRpc3NvY2lhdGVEYXNoYm9hcmRWaWV3KCkgeworICAgICAgICAgICAgZGFzaGJv
YXJkVmlldy5jbG9zZWQoKTsKKyAgICAgICAgICAgIGRhc2hib2FyZFZpZXcuZWxlbWVudC5wYXJl
bnROb2RlLnJlbW92ZUNoaWxkKGRhc2hib2FyZFZpZXcuZWxlbWVudCk7CisgICAgICAgIH0KKwor
ICAgICAgICB2YXIgaW5kZXggPSB0aGlzLl9kYXNoYm9hcmRTdGFjay5pbmRleE9mKGRhc2hib2Fy
ZFZpZXcpOworCisgICAgICAgIGlmICh0aGlzLmN1cnJlbnREYXNoYm9hcmRWaWV3ID09PSBkYXNo
Ym9hcmRWaWV3KSB7CisgICAgICAgICAgICB2YXIgZGlyZWN0aW9uID0gV2ViSW5zcGVjdG9yLkRh
c2hib2FyZENvbnRhaW5lclZpZXcuQWR2YW5jZURpcmVjdGlvbi5CYWNrd2FyZDsKKyAgICAgICAg
ICAgIHRoaXMuX2hpZGVEYXNoYm9hcmRWaWV3KHRoaXMuY3VycmVudERhc2hib2FyZFZpZXcsIGRp
cmVjdGlvbiwgZGlzc29jaWF0ZURhc2hib2FyZFZpZXcpOworICAgICAgICAgICAgdGhpcy5fZGFz
aGJvYXJkU3RhY2suc3BsaWNlKGluZGV4LCAxKTsKKyAgICAgICAgICAgIC0tdGhpcy5fY3VycmVu
dEluZGV4OworICAgICAgICAgICAgdGhpcy5fc2hvd0Rhc2hib2FyZFZpZXcodGhpcy5jdXJyZW50
RGFzaGJvYXJkVmlldywgZGlyZWN0aW9uKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorCisgICAgICAgIHRoaXMuX2Rhc2hib2FyZFN0YWNrLnNwbGljZShpbmRleCwgMSk7CisgICAg
ICAgIGlmICh0aGlzLl9jdXJyZW50SW5kZXggPiBpbmRleCkKKyAgICAgICAgICAgIC0tdGhpcy5f
Y3VycmVudEluZGV4OworICAgICAgICBkaXNzb2NpYXRlRGFzaGJvYXJkVmlldy5jYWxsKHRoaXMp
OworICAgIH0KK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9EYXNoYm9hcmRWaWV3LmNzcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0Rhc2hib2FyZFZpZXcuY3NzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBjM2I2NDk4YTBjZjA5OWVhMDBjYWE2OGJjZGVmNTE0OTI2ZmQ2MGVlLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0Rhc2hib2FyZFZpZXcuY3NzCisrKyAvZGV2L251bGwK
QEAgLTEsMjQzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0udG9vbGJhciAuZGFzaGJvYXJkIHsKLSAg
ICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7Ci0gICAgLXdlYmtpdC1mbGV4LWZsb3c6IHJvdyBub3dy
YXA7Ci0KLSAgICAtd2Via2l0LWp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKLQotICAg
IG1hcmdpbjogNHB4IDEwcHg7Ci0gICAgcGFkZGluZzogMCA1cHg7Ci0KLSAgICB3aWR0aDogMzc1
cHg7Ci0KLSAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCBy
Z2JhKDAsIDEyOCwgMjU1LCAwKSwgcmdiYSgwLCAxMjgsIDI1NSwgMC4wNzUpKSwKLSAgICAgICAg
bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDAsIDAsIDAsIDAuMDkpLCB0cmFuc3BhcmVu
dCwgcmdiYSgwLCAwLCAwLCAwLjA5KSksCi0gICAgICAgIGxpbmVhci1ncmFkaWVudCh0byBib3R0
b20sIHJnYigyNDAsIDI0NCwgMjUxKSwgcmdiKDI1MCwgMjUzLCAyNTUpKTsKLSAgICBiYWNrZ3Jv
dW5kLXNpemU6IDEwMCUgNnB4LCBhdXRvLCBhdXRvOwotICAgIGJhY2tncm91bmQtcG9zaXRpb246
IGJvdHRvbSwgY2VudGVyLCBjZW50ZXI7Ci0gICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVh
dDsKLQotICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYigxNjMsIDE2MywgMTYzKTsKLSAgICBib3Jk
ZXItcmFkaXVzOiA0cHg7Ci0KLSAgICBib3gtc2hhZG93OiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAu
NDUpIDAgMXB4IDA7Ci19Ci0KLWJvZHkud2luZG93LWluYWN0aXZlIC50b29sYmFyIC5kYXNoYm9h
cmQgewotICAgIGJvcmRlci1jb2xvcjogcmdiKDE5NiwgMTk2LCAxOTYpOwotICAgIGJhY2tncm91
bmQtaW1hZ2U6IG5vbmU7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDIzOSwgMjM5LCAyMzkp
OwotfQotCi0udG9vbGJhci5jb2xsYXBzZWQgLmRhc2hib2FyZCwKLWJvZHkuamF2YXNjcmlwdCAu
dG9vbGJhciAuZGFzaGJvYXJkIHsKLSAgICB3aWR0aDogMTc1cHg7Ci19Ci0KLWJvZHkud2ViIC50
b29sYmFyLmNvbGxhcHNlZCAuZGFzaGJvYXJkID4gLnRpbWUsCi1ib2R5LndlYiAudG9vbGJhci5j
b2xsYXBzZWQgLmRhc2hib2FyZCA+IC5yZXNvdXJjZXNTaXplLAotYm9keS53ZWIgLnRvb2xiYXIu
Y29sbGFwc2VkIC5kYXNoYm9hcmQgPiAubG9ncyB7Ci0gICAgZGlzcGxheTogbm9uZTsKLX0KLQot
Ym9keS5qYXZhc2NyaXB0IC50b29sYmFyIC5kYXNoYm9hcmQgPiAudGltZSwKLWJvZHkuamF2YXNj
cmlwdCAudG9vbGJhciAuZGFzaGJvYXJkID4gLnJlc291cmNlc1NpemUsCi1ib2R5LmphdmFzY3Jp
cHQgLnRvb2xiYXIgLmRhc2hib2FyZCA+IC5yZXNvdXJjZXNDb3VudCB7Ci0gICAgZGlzcGxheTog
bm9uZTsKLX0KLQotLnRvb2xiYXIgLmRhc2hib2FyZCA+IC5pdGVtIHsKLSAgICBmb250LWZhbWls
eTogSGVsdmV0aWNhLCBzYW5zLXNlcmlmOwotICAgIGZvbnQtd2VpZ2h0OiBib2xkOwotICAgIGZv
bnQtc2l6ZTogMTFweDsKLSAgICBsaW5lLWhlaWdodDogMTJweDsKLQotICAgIHBhZGRpbmc6IDAg
NXB4OwotCi0gICAgZGlzcGxheTogLXdlYmtpdC1mbGV4OwotCi0gICAgbWluLXdpZHRoOiA0NXB4
OwotCi0gICAgLXdlYmtpdC1qdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKLSAgICAtd2Via2l0LWFs
aWduLWl0ZW1zOiBjZW50ZXI7Ci0KLSAgICBib3JkZXItcmFkaXVzOiA0cHg7Ci0gICAgYm9yZGVy
OiAxcHggc29saWQgdHJhbnNwYXJlbnQ7Ci19Ci0KLS50b29sYmFyIC5kYXNoYm9hcmQgPiAudGlt
ZSwKLS50b29sYmFyIC5kYXNoYm9hcmQgPiAucmVzb3VyY2VzU2l6ZSB7Ci0gICAgbWluLXdpZHRo
OiA3MHB4OwotfQotCi0udG9vbGJhciAuZGFzaGJvYXJkID4gLml0ZW0uZW5hYmxlZDpob3ZlciB7
Ci0gICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjEpOwotfQotCi0udG9vbGJh
ciAuZGFzaGJvYXJkID4gLml0ZW0uZW5hYmxlZDphY3RpdmUgewotICAgIGJvcmRlcjogMXB4IHNv
bGlkIHJnYmEoMCwgMCwgMCwgMC4yKTsKLX0KLQotLnRvb2xiYXIgLmRhc2hib2FyZCA+IC5pdGVt
ID4gKiB7Ci0gICAgZGlzcGxheTogLXdlYmtpdC1mbGV4OwotICAgIC13ZWJraXQtYWxpZ24taXRl
bXM6IGNlbnRlcjsKLX0KLQotLnRvb2xiYXIgLmRhc2hib2FyZCA+IC5pdGVtID4gaW1nIHsKLSAg
ICBvcGFjaXR5OiAwLjI7Ci0gICAgd2lkdGg6IDE2cHg7Ci0gICAgaGVpZ2h0OiAxNnB4OwotICAg
IHBvaW50ZXItZXZlbnRzOiBub25lOwotfQotCi0udG9vbGJhciAuZGFzaGJvYXJkID4gLml0ZW0u
ZW5hYmxlZCA+IGltZyB7Ci0gICAgb3BhY2l0eTogMC41OwotfQotCi0udG9vbGJhciAuZGFzaGJv
YXJkID4gLml0ZW0uZW5hYmxlZDpob3ZlciA+IGltZyB7Ci0gICAgb3BhY2l0eTogMC42NTsKLX0K
LQotLnRvb2xiYXIgLmRhc2hib2FyZCA+IC5pdGVtID4gZGl2IHsKLSAgICBkaXNwbGF5OiAtd2Vi
a2l0LWZsZXg7Ci0gICAgLXdlYmtpdC1mbGV4OiAxOwotCi0gICAgY29sb3I6IHJnYmEoMCwgMCwg
MCwgMC4yKTsKLSAgICBwYWRkaW5nLWxlZnQ6IDJweDsKLX0KLQotLnRvb2xiYXIgLmRhc2hib2Fy
ZCA+IC5pdGVtLmVuYWJsZWQgPiBkaXYgewotICAgIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNyk7
Ci19Ci0KLS50b29sYmFyIC5kYXNoYm9hcmQgPiAuaXRlbS5lbmFibGVkOmhvdmVyID4gZGl2IHsK
LSAgICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjg1KTsKLX0KLQotLnRvb2xiYXIgLmRhc2hib2Fy
ZCA+IC5yZXNvdXJjZXNDb3VudCA+IGltZyB7Ci0gICAgY29udGVudDogdXJsKC4uL0ltYWdlcy9S
ZXNvdXJjZXMuc3ZnKTsKLX0KLQotLnRvb2xiYXIgLmRhc2hib2FyZCA+IC50aW1lID4gaW1nIHsK
LSAgICBjb250ZW50OiB1cmwoLi4vSW1hZ2VzL1RpbWUuc3ZnKTsKLX0KLQotLnRvb2xiYXIgLmRh
c2hib2FyZCA+IC5sb2dzID4gaW1nIHsKLSAgICBjb250ZW50OiB1cmwoLi4vSW1hZ2VzL0xvZ3Mu
c3ZnKTsKLX0KLQotLnRvb2xiYXIgLmRhc2hib2FyZCA+IC5yZXNvdXJjZXNTaXplID4gaW1nIHsK
LSAgICBjb250ZW50OiB1cmwoLi4vSW1hZ2VzL1dlaWdodC5zdmcpOwotfQotCi0udG9vbGJhciAu
ZGFzaGJvYXJkID4gLmVycm9ycyA+IGltZyB7Ci0gICAgY29udGVudDogdXJsKC4uL0ltYWdlcy9F
cnJvcnMuc3ZnKTsKLX0KLQotLnRvb2xiYXIgLmRhc2hib2FyZCA+IC5lcnJvcnMuZW5hYmxlZCA+
IGltZyB7Ci0gICAgY29udGVudDogdXJsKC4uL0ltYWdlcy9FcnJvcnNFbmFibGVkLnN2Zyk7Ci0g
ICAgb3BhY2l0eTogMC45OwotfQotCi0udG9vbGJhciAuZGFzaGJvYXJkID4gLmVycm9ycy5lbmFi
bGVkOmhvdmVyID4gaW1nIHsKLSAgICBvcGFjaXR5OiAxOwotfQotCi0udG9vbGJhciAuZGFzaGJv
YXJkID4gLmVycm9ycy5lbmFibGVkID4gZGl2IHsKLSAgICBjb2xvcjogcmdiYSgyMDEsIDU1LCA1
NywgMC45KTsKLX0KLQotLnRvb2xiYXIgLmRhc2hib2FyZCA+IC5lcnJvcnMuZW5hYmxlZDpob3Zl
ciA+IGRpdiB7Ci0gICAgY29sb3I6IHJnYigyMDEsIDU1LCA1Nyk7Ci19Ci0KLS50b29sYmFyIC5k
YXNoYm9hcmQgPiAuaXNzdWVzID4gaW1nIHsKLSAgICBjb250ZW50OiB1cmwoLi4vSW1hZ2VzL0lz
c3Vlcy5zdmcpOwotfQotCi0udG9vbGJhciAuZGFzaGJvYXJkID4gLmlzc3Vlcy5lbmFibGVkID4g
aW1nIHsKLSAgICBjb250ZW50OiB1cmwoLi4vSW1hZ2VzL0lzc3Vlc0VuYWJsZWQuc3ZnKTsKLSAg
ICBvcGFjaXR5OiAwLjk7Ci19Ci0KLS50b29sYmFyIC5kYXNoYm9hcmQgPiAuaXNzdWVzLmVuYWJs
ZWQ6aG92ZXIgPiBpbWcgewotICAgIG9wYWNpdHk6IDE7Ci19Ci0KLS50b29sYmFyIC5kYXNoYm9h
cmQgPiAuaXNzdWVzLmVuYWJsZWQgPiBkaXYgewotICAgIGNvbG9yOiByZ2JhKDIyNCwgMTY0LCA0
LCAwLjkpOwotfQotCi0udG9vbGJhciAuZGFzaGJvYXJkID4gLmlzc3Vlcy5lbmFibGVkOmhvdmVy
ID4gZGl2IHsKLSAgICBjb2xvcjogcmdiKDIyNCwgMTY0LCA0KTsKLX0KLQotLnRvb2xiYXIuc21h
bGwtc2l6ZS5pY29uLWFuZC1sYWJlbC12ZXJ0aWNhbCAuZGFzaGJvYXJkLAotLnRvb2xiYXIubm9y
bWFsLXNpemUuaWNvbi1hbmQtbGFiZWwtdmVydGljYWwgLmRhc2hib2FyZCB7Ci0gICAgbWFyZ2lu
LXRvcDogNnB4OwotfQotCi0vKiBTdHlsZXMgZm9yIHRoZSBleHRyYSBzaG9ydCBzdHlsZSwgb25l
IHJvdyB3aXRoIHF1aXRlIGEgc21hbGwgeS1tYXJnaW4gKi8KLQotLnRvb2xiYXIubGFiZWwtb25s
eSAuZGFzaGJvYXJkLAotLnRvb2xiYXIuc21hbGwtc2l6ZS5pY29uLW9ubHkgLmRhc2hib2FyZCwK
LS50b29sYmFyLnNtYWxsLXNpemUuaWNvbi1hbmQtbGFiZWwtdmVydGljYWwgLmRhc2hib2FyZCwK
LS50b29sYmFyLnNtYWxsLXNpemUuaWNvbi1hbmQtbGFiZWwtaG9yaXpvbnRhbCAuZGFzaGJvYXJk
IHsKLSAgICBoZWlnaHQ6IDIycHg7Ci19Ci0KLS50b29sYmFyLmxhYmVsLW9ubHkgLmRhc2hib2Fy
ZCA+IC5pdGVtLAotLnRvb2xiYXIuc21hbGwtc2l6ZS5pY29uLW9ubHkgLmRhc2hib2FyZCA+IC5p
dGVtLAotLnRvb2xiYXIuc21hbGwtc2l6ZS5pY29uLWFuZC1sYWJlbC12ZXJ0aWNhbCAuZGFzaGJv
YXJkID4gLml0ZW0sCi0udG9vbGJhci5zbWFsbC1zaXplLmljb24tYW5kLWxhYmVsLWhvcml6b250
YWwgLmRhc2hib2FyZCA+IC5pdGVtIHsKLSAgICBtYXJnaW46IDFweCAwOwotfQotCi0vKiBTdHls
ZXMgZm9yIHRoZSBmYWlybHkgc2hvcnQgc3R5bGUsIG9uZSByb3cgd2l0aCBxdWl0ZSBhIGJpdCBv
ZiB5LW1hcmdpbiAqLwotCi0udG9vbGJhci5ub3JtYWwtc2l6ZS5pY29uLW9ubHkgLmRhc2hib2Fy
ZCwKLS50b29sYmFyLm5vcm1hbC1zaXplLmljb24tYW5kLWxhYmVsLXZlcnRpY2FsIC5kYXNoYm9h
cmQsCi0udG9vbGJhci5ub3JtYWwtc2l6ZS5pY29uLWFuZC1sYWJlbC1ob3Jpem9udGFsIC5kYXNo
Ym9hcmQgewotICAgIGhlaWdodDogMzBweDsKLX0KLQotLnRvb2xiYXIubm9ybWFsLXNpemUuaWNv
bi1vbmx5IC5kYXNoYm9hcmQgPiAuaXRlbSwKLS50b29sYmFyLm5vcm1hbC1zaXplLmljb24tYW5k
LWxhYmVsLXZlcnRpY2FsIC5kYXNoYm9hcmQgPiAuaXRlbSwKLS50b29sYmFyLm5vcm1hbC1zaXpl
Lmljb24tYW5kLWxhYmVsLWhvcml6b250YWwgLmRhc2hib2FyZCA+IC5pdGVtIHsKLSAgICBtYXJn
aW46IDRweCAwOwotfQotCi0vKiBTdHlsZXMgZm9yIHRoZSBwdWxzaW5nIGFuaW1hdGVkIHN0YXRl
IG9mIGNvbnNvbGUgaXRlbXMgKi8KLQotLnRvb2xiYXIgLmRhc2hib2FyZCA+IC5pdGVtLnB1bHNp
bmcgewotICAgIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IGNvbnNvbGUtaXRlbS1wdWxzZTsKLSAg
ICAtd2Via2l0LWFuaW1hdGlvbi1kdXJhdGlvbjogMC43NXM7Ci19Ci0KLUAtd2Via2l0LWtleWZy
YW1lcyBjb25zb2xlLWl0ZW0tcHVsc2UgewotICAgIDUwJSB7IG9wYWNpdHk6IDAuNjsgfQotfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGFz
aGJvYXJkVmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L0Rhc2hib2FyZFZpZXcuanMKaW5kZXggOTgyODM5YjIxMzMxMjhiMmJlMGQ1NjU2Y2JjZTFmM2Vi
NThjMTcyYy4uNDk4MWM1OWJlNGNiNjdiMTRiMTg5OWJkYjk5MDZkNDcxZDRiMDM5OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGFzaGJvYXJk
Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9E
YXNoYm9hcmRWaWV3LmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMs
IDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0xMCwyMzYgKzEwLDc0IEBACiAgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCiAgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgogICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkRhc2hib2FyZFZpZXcgPSBmdW5jdGlvbihl
bGVtZW50KQorV2ViSW5zcGVjdG9yLkRhc2hib2FyZFZpZXcgPSBmdW5jdGlvbihyZXByZXNlbnRl
ZE9iamVjdCwgaWRlbnRpZmllcikKIHsKLSAgICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhp
cyk7CisgICAgLy8gQ3JlYXRpbmcgYSBuZXcgRGFzaGJvYXJkVmlldyBkaXJlY3RseSByZXR1cm5z
IGFuIGluc3RhbmNlIG9mIHRoZSBwcm9wZXIgc3ViY2xhc3MuCisgICAgaWYgKHRoaXMuY29uc3Ry
dWN0b3IgPT09IFdlYkluc3BlY3Rvci5EYXNoYm9hcmRWaWV3KSB7CisgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KHJlcHJlc2VudGVkT2JqZWN0KTsKKworICAgICAgICBpZiAocmVwcmVzZW50ZWRPYmpl
Y3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuRGVmYXVsdERhc2hib2FyZCkKKyAgICAgICAgICAg
IHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkRlZmF1bHREYXNoYm9hcmRWaWV3KHJlcHJlc2VudGVk
T2JqZWN0KTsKKworICAgICAgICB0aHJvdyAiQ2FuJ3QgbWFrZSBhIERhc2hib2FyZFZpZXcgZm9y
IGFuIHVua25vd24gcmVwcmVzZW50ZWRPYmplY3QuIjsKKyAgICB9CiAKLSAgICB0aGlzLl9lbGVt
ZW50ID0gZWxlbWVudDsKKyAgICAvLyBPdGhlcndpc2UsIGEgc3ViY2xhc3MgaXMgY2FsbGluZyB0
aGUgYmFzZSBjb25zdHJ1Y3Rvci4KKyAgICBjb25zb2xlLmFzc2VydCh0aGlzLmNvbnN0cnVjdG9y
ICE9PSBXZWJJbnNwZWN0b3IuRGFzaGJvYXJkVmlldyAmJiB0aGlzIGluc3RhbmNlb2YgV2ViSW5z
cGVjdG9yLkRhc2hib2FyZFZpZXcpOworICAgIGNvbnNvbGUuYXNzZXJ0KGlkZW50aWZpZXIpOwog
Ci0gICAgdGhpcy5faXRlbXMgPSB7Ci0gICAgICAgIHJlc291cmNlc0NvdW50OiB7Ci0gICAgICAg
ICAgICB0b29sdGlwOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlRvdGFsIG51bWJlciBvZiByZXNv
dXJjZXMsIGNsaWNrIHRvIHNob3cgdGhlIFJlc291cmNlcyBuYXZpZ2F0aW9uIHNpZGViYXIiKSwK
LSAgICAgICAgICAgIGhhbmRsZXI6IHRoaXMuX3Jlc291cmNlc1dhc0NsaWNrZWQKLSAgICAgICAg
fSwKLSAgICAgICAgcmVzb3VyY2VzU2l6ZTogewotICAgICAgICAgICAgdG9vbHRpcDogV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJUb3RhbCBzaXplIG9mIGFsbCByZXNvdXJjZXMsIGNsaWNrIHRvIHNo
b3cgdGhlIE5ldHdvcmsgUmVxdWVzdHMgdGltZWxpbmUiKSwKLSAgICAgICAgICAgIGhhbmRsZXI6
IHRoaXMuX25ldHdvcmtJdGVtV2FzQ2xpY2tlZAotICAgICAgICB9LAotICAgICAgICB0aW1lOiB7
Ci0gICAgICAgICAgICB0b29sdGlwOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlRpbWUgdW50aWwg
dGhlIGxvYWQgZXZlbnQgZmlyZWQsIGNsaWNrIHRvIHNob3cgdGhlIE5ldHdvcmsgUmVxdWVzdHMg
dGltZWxpbmUiKSwKLSAgICAgICAgICAgIGhhbmRsZXI6IHRoaXMuX25ldHdvcmtJdGVtV2FzQ2xp
Y2tlZAotICAgICAgICB9LAotICAgICAgICBsb2dzOiB7Ci0gICAgICAgICAgICB0b29sdGlwOiBX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNvbnNvbGUgbG9ncywgY2xpY2sgdG8gc2hvdyB0aGUgQ29u
c29sZSIpLAotICAgICAgICAgICAgaGFuZGxlcjogdGhpcy5fY29uc29sZUl0ZW1XYXNDbGlja2Vk
LmJpbmQodGhpcywgV2ViSW5zcGVjdG9yLkxvZ0NvbnRlbnRWaWV3LlNjb3Blcy5Mb2dzKQotICAg
ICAgICB9LAotICAgICAgICBlcnJvcnM6IHsKLSAgICAgICAgICAgIHRvb2x0aXA6IFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiQ29uc29sZSBlcnJvcnMsIGNsaWNrIHRvIHNob3cgdGhlIENvbnNvbGUi
KSwKLSAgICAgICAgICAgIGhhbmRsZXI6IHRoaXMuX2NvbnNvbGVJdGVtV2FzQ2xpY2tlZC5iaW5k
KHRoaXMsIFdlYkluc3BlY3Rvci5Mb2dDb250ZW50Vmlldy5TY29wZXMuRXJyb3JzKQotICAgICAg
ICB9LAotICAgICAgICBpc3N1ZXM6IHsKLSAgICAgICAgICAgIHRvb2x0aXA6IFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiQ29uc29sZSB3YXJuaW5ncywgY2xpY2sgdG8gc2hvdyB0aGUgQ29uc29sZSIp
LAotICAgICAgICAgICAgaGFuZGxlcjogdGhpcy5fY29uc29sZUl0ZW1XYXNDbGlja2VkLmJpbmQo
dGhpcywgV2ViSW5zcGVjdG9yLkxvZ0NvbnRlbnRWaWV3LlNjb3Blcy5XYXJuaW5ncykKLSAgICAg
ICAgfQotICAgIH07CisgICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwogCi0gICAg
Zm9yICh2YXIgbmFtZSBpbiB0aGlzLl9pdGVtcykKLSAgICAgICAgdGhpcy5fYXBwZW5kRWxlbWVu
dEZvck5hbWVkSXRlbShuYW1lKTsKKyAgICB0aGlzLl9yZXByZXNlbnRlZE9iamVjdCA9IHJlcHJl
c2VudGVkT2JqZWN0OwogCi0gICAgdGhpcy5yZXNvdXJjZXNDb3VudCA9IDA7Ci0gICAgdGhpcy5y
ZXNvdXJjZXNTaXplID0gMDsKLSAgICB0aGlzLnRpbWUgPSAwOwotICAgIHRoaXMubG9ncyA9IDA7
Ci0gICAgdGhpcy5lcnJvcnMgPSAwOwotICAgIHRoaXMuaXNzdWVzID0gMDsKKyAgICB0aGlzLl9l
bGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgdGhpcy5fZWxlbWVu
dC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5EYXNoYm9hcmRWaWV3LlN0eWxlQ2xhc3NOYW1l
KTsKKyAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoaWRlbnRpZmllcik7CiB9OwogCi1X
ZWJJbnNwZWN0b3IuRGFzaGJvYXJkVmlldy5FbmFibGVkU3R5bGVDbGFzc05hbWUgPSAiZW5hYmxl
ZCI7CitXZWJJbnNwZWN0b3IuRGFzaGJvYXJkVmlldy5TdHlsZUNsYXNzTmFtZSA9ICJkYXNoYm9h
cmQiOwogCiBXZWJJbnNwZWN0b3IuRGFzaGJvYXJkVmlldy5wcm90b3R5cGUgPSB7CiAgICAgY29u
c3RydWN0b3I6IFdlYkluc3BlY3Rvci5EYXNoYm9hcmRWaWV3LAorICAgIF9fcHJvdG9fXzogV2Vi
SW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGUsCiAKICAgICAvLyBQdWJsaWMKIAotICAgIGdldCBs
b2dzKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9sb2dzOwotICAgIH0sCi0KLSAgICBz
ZXQgbG9ncyhsb2dzKQotICAgIHsKLSAgICAgICAgdGhpcy5fc2V0Q29uc29sZUl0ZW1WYWx1ZSgi
bG9ncyIsIGxvZ3MpOwotICAgIH0sCi0KLSAgICBnZXQgaXNzdWVzKCkKLSAgICB7Ci0gICAgICAg
IHJldHVybiB0aGlzLl9pc3N1ZXM7Ci0gICAgfSwKLQotICAgIHNldCBpc3N1ZXMoaXNzdWVzKQot
ICAgIHsKLSAgICAgICAgdGhpcy5fc2V0Q29uc29sZUl0ZW1WYWx1ZSgiaXNzdWVzIiwgaXNzdWVz
KTsKLSAgICB9LAotCi0gICAgZ2V0IGVycm9ycygpCi0gICAgewotICAgICAgICByZXR1cm4gdGhp
cy5fZXJyb3JzOwotICAgIH0sCi0KLSAgICBzZXQgZXJyb3JzKGVycm9ycykKLSAgICB7Ci0gICAg
ICAgIHRoaXMuX3NldENvbnNvbGVJdGVtVmFsdWUoImVycm9ycyIsIGVycm9ycyk7Ci0gICAgfSwK
LQotICAgIHNldCB0aW1lKHRpbWUpCi0gICAgewotICAgICAgICB2YXIgaXRlbSA9IHRoaXMuX2l0
ZW1zLnRpbWU7Ci0gICAgICAgIGl0ZW0udGV4dCA9IHRpbWUgPyBOdW1iZXIuc2Vjb25kc1RvU3Ry
aW5nKHRpbWUpIDogIlx1MjAxNCI7Ci0gICAgICAgIHRoaXMuX3NldEl0ZW1FbmFibGVkKGl0ZW0s
IHRpbWUgPiAwKTsKLSAgICB9LAotCi0gICAgZ2V0IHJlc291cmNlc0NvdW50KCkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiB0aGlzLl9yZXNvdXJjZXNDb3VudDsKLSAgICB9LAotCi0gICAgc2V0IHJl
c291cmNlc0NvdW50KHJlc291cmNlc0NvdW50KQotICAgIHsKLSAgICAgICAgdGhpcy5fcmVzb3Vy
Y2VzQ291bnQgPSByZXNvdXJjZXNDb3VudDsKLQotICAgICAgICB2YXIgaXRlbSA9IHRoaXMuX2l0
ZW1zLnJlc291cmNlc0NvdW50OwotICAgICAgICBpdGVtLnRleHQgPSB0aGlzLl9mb3JtYXRQb3Nz
aWJsZUxhcmdlTnVtYmVyKHJlc291cmNlc0NvdW50KTsKLSAgICAgICAgdGhpcy5fc2V0SXRlbUVu
YWJsZWQoaXRlbSwgcmVzb3VyY2VzQ291bnQgPiAwKTsKLSAgICB9LAotCi0gICAgZ2V0IHJlc291
cmNlc1NpemUoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc291cmNlc1NpemU7Ci0g
ICAgfSwKLQotICAgIHNldCByZXNvdXJjZXNTaXplKHJlc291cmNlc1NpemUpCi0gICAgewotICAg
ICAgICB0aGlzLl9yZXNvdXJjZXNTaXplID0gcmVzb3VyY2VzU2l6ZTsKLQotICAgICAgICB2YXIg
aXRlbSA9IHRoaXMuX2l0ZW1zLnJlc291cmNlc1NpemU7Ci0gICAgICAgIGl0ZW0udGV4dCA9IHJl
c291cmNlc1NpemUgPyBOdW1iZXIuYnl0ZXNUb1N0cmluZyhyZXNvdXJjZXNTaXplLCBmYWxzZSkg
OiAiXHUyMDE0IjsKLSAgICAgICAgdGhpcy5fc2V0SXRlbUVuYWJsZWQoaXRlbSwgcmVzb3VyY2Vz
U2l6ZSA+IDApOwotICAgIH0sCi0KLSAgICAvLyBQcml2YXRlCi0KLSAgICBfZm9ybWF0UG9zc2li
bGVMYXJnZU51bWJlcjogZnVuY3Rpb24obnVtYmVyKQorICAgIGdldCBlbGVtZW50KCkKICAgICB7
Ci0gICAgICAgIHJldHVybiBudW1iZXIgPiA5OTkgPyBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIjk5
OSsiKSA6IG51bWJlcjsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQ7CiAgICAgfSwKIAot
ICAgIF9hcHBlbmRFbGVtZW50Rm9yTmFtZWRJdGVtOiBmdW5jdGlvbihuYW1lKQorICAgIGdldCBy
ZXByZXNlbnRlZE9iamVjdCgpCiAgICAgewotICAgICAgICB2YXIgaXRlbSA9IHRoaXMuX2l0ZW1z
W25hbWVdOwotCi0gICAgICAgIGl0ZW0uY29udGFpbmVyID0gdGhpcy5fZWxlbWVudC5hcHBlbmRD
aGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSk7Ci0gICAgICAgIGl0ZW0uY29udGFp
bmVyLmNsYXNzTmFtZSA9ICJpdGVtICIgKyBuYW1lOwotICAgICAgICBpdGVtLmNvbnRhaW5lci50
aXRsZSA9IGl0ZW0udG9vbHRpcDsKLQotICAgICAgICBpdGVtLmNvbnRhaW5lci5hcHBlbmRDaGls
ZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKSk7Ci0KLSAgICAgICAgaXRlbS5vdXRsZXQg
PSBpdGVtLmNvbnRhaW5lci5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYi
KSk7Ci0KLSAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGl0ZW0sICJ0ZXh0IiwKLSAgICAg
ICAgewotICAgICAgICAgICAgc2V0OiBmdW5jdGlvbihuZXdUZXh0KQotICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgIGlmIChuZXdUZXh0ID09PSBpdGVtLm91dGxldC50ZXh0Q29udGVudCkK
LSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIGl0ZW0ub3V0bGV0
LnRleHRDb250ZW50ID0gbmV3VGV4dDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSk7Ci0KLSAg
ICAgICAgaXRlbS5jb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBmdW5jdGlvbihl
dmVudCkgewotICAgICAgICAgICAgdGhpcy5faXRlbVdhc0NsaWNrZWQobmFtZSk7Ci0gICAgICAg
IH0uYmluZCh0aGlzKSk7CisgICAgICAgIHJldHVybiB0aGlzLl9yZXByZXNlbnRlZE9iamVjdDsK
ICAgICB9LAogCi0gICAgX2l0ZW1XYXNDbGlja2VkOiBmdW5jdGlvbihuYW1lKQorICAgIHNob3du
OiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICB2YXIgaXRlbSA9IHRoaXMuX2l0ZW1zW25hbWVd
OwotICAgICAgICBpZiAoIWl0ZW0uY29udGFpbmVyLmNsYXNzTGlzdC5jb250YWlucyhXZWJJbnNw
ZWN0b3IuRGFzaGJvYXJkVmlldy5FbmFibGVkU3R5bGVDbGFzc05hbWUpKQotICAgICAgICAgICAg
cmV0dXJuOwotCi0gICAgICAgIGlmIChpdGVtLmhhbmRsZXIpCi0gICAgICAgICAgICBpdGVtLmhh
bmRsZXIuY2FsbCh0aGlzKTsKKyAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViY2xhc3Nlcy4K
ICAgICB9LAogCi0gICAgX3Jlc291cmNlc1dhc0NsaWNrZWQ6IGZ1bmN0aW9uKCkKKyAgICBoaWRk
ZW46IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5uYXZpZ2F0aW9uU2lk
ZWJhci5zZWxlY3RlZFNpZGViYXJQYW5lbCA9IFdlYkluc3BlY3Rvci5yZXNvdXJjZVNpZGViYXJQ
YW5lbDsKLSAgICAgICAgV2ViSW5zcGVjdG9yLm5hdmlnYXRpb25TaWRlYmFyLmNvbGxhcHNlZCA9
IGZhbHNlOworICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzLgogICAgIH0sCiAK
LSAgICBfbmV0d29ya0l0ZW1XYXNDbGlja2VkOiBmdW5jdGlvbigpCisgICAgY2xvc2VkOiBmdW5j
dGlvbigpCiAgICAgewotICAgICAgICBXZWJJbnNwZWN0b3IubmF2aWdhdGlvblNpZGViYXIuc2Vs
ZWN0ZWRTaWRlYmFyUGFuZWwgPSBXZWJJbnNwZWN0b3IudGltZWxpbmVTaWRlYmFyUGFuZWw7Ci0g
ICAgfSwKLQotICAgIF9jb25zb2xlSXRlbVdhc0NsaWNrZWQ6IGZ1bmN0aW9uKHNjb3BlKQotICAg
IHsKLSAgICAgICAgV2ViSW5zcGVjdG9yLnNob3dDb25zb2xlVmlldyhzY29wZSk7Ci0gICAgfSwK
LQotICAgIF9zZXRDb25zb2xlSXRlbVZhbHVlOiBmdW5jdGlvbihpdGVtTmFtZSwgbmV3VmFsdWUp
Ci0gICAgewotICAgICAgICB2YXIgaVZhck5hbWUgPSAiXyIgKyBpdGVtTmFtZTsKLSAgICAgICAg
dmFyIHByZXZpb3VzVmFsdWUgPSB0aGlzW2lWYXJOYW1lXTsKLSAgICAgICAgdGhpc1tpVmFyTmFt
ZV0gPSBuZXdWYWx1ZTsKLQotICAgICAgICB2YXIgaXRlbSA9IHRoaXMuX2l0ZW1zW2l0ZW1OYW1l
XTsKLSAgICAgICAgaXRlbS50ZXh0ID0gdGhpcy5fZm9ybWF0UG9zc2libGVMYXJnZU51bWJlcihu
ZXdWYWx1ZSk7Ci0gICAgICAgIHRoaXMuX3NldEl0ZW1FbmFibGVkKGl0ZW0sIG5ld1ZhbHVlID4g
MCk7Ci0KLSAgICAgICAgaWYgKG5ld1ZhbHVlIDw9IHByZXZpb3VzVmFsdWUpCi0gICAgICAgICAg
ICByZXR1cm47Ci0KLSAgICAgICAgdmFyIGNvbnRhaW5lciA9IGl0ZW0uY29udGFpbmVyOwotCi0g
ICAgICAgIGZ1bmN0aW9uIGFuaW1hdGlvbkVuZGVkKGV2ZW50KQotICAgICAgICB7Ci0gICAgICAg
ICAgICBpZiAoZXZlbnQudGFyZ2V0ID09PSBjb250YWluZXIpIHsKLSAgICAgICAgICAgICAgICBj
b250YWluZXIuY2xhc3NMaXN0LnJlbW92ZSgicHVsc2luZyIpOwotICAgICAgICAgICAgICAgIGNv
bnRhaW5lci5yZW1vdmVFdmVudExpc3RlbmVyKCJ3ZWJraXRBbmltYXRpb25FbmQiLCBhbmltYXRp
b25FbmRlZCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBXZSBuZWVk
IHRvIGZvcmNlIGEgc3R5bGUgaW52YWxpZGF0aW9uIGluIHRoZSBjYXNlIHdoZXJlIHdlIGFscmVh
ZHkKLSAgICAgICAgLy8gd2VyZSBhbmltYXRpbmcgdGhpcyBpdGVtIGFmdGVyIHdlJ3ZlIHJlbW92
ZWQgdGhlIHB1bHNpbmcgQ1NTIGNsYXNzLgotICAgICAgICBpZiAoY29udGFpbmVyLmNsYXNzTGlz
dC5jb250YWlucygicHVsc2luZyIpKSB7Ci0gICAgICAgICAgICBjb250YWluZXIuY2xhc3NMaXN0
LnJlbW92ZSgicHVsc2luZyIpOwotICAgICAgICAgICAgY29udGFpbmVyLnJlY2FsY3VsYXRlU3R5
bGVzKCk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgY29udGFpbmVyLmFkZEV2ZW50TGlz
dGVuZXIoIndlYmtpdEFuaW1hdGlvbkVuZCIsIGFuaW1hdGlvbkVuZGVkKTsKLSAgICAgICAgCi0g
ICAgICAgIGNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCJwdWxzaW5nIik7Ci0gICAgfSwKLQotICAg
IF9zZXRJdGVtRW5hYmxlZDogZnVuY3Rpb24oaXRlbSwgZW5hYmxlZCkKLSAgICB7Ci0gICAgICAg
IGlmIChlbmFibGVkKQotICAgICAgICAgICAgaXRlbS5jb250YWluZXIuY2xhc3NMaXN0LmFkZChX
ZWJJbnNwZWN0b3IuRGFzaGJvYXJkVmlldy5FbmFibGVkU3R5bGVDbGFzc05hbWUpOwotICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBpdGVtLmNvbnRhaW5lci5jbGFzc0xpc3QucmVtb3ZlKFdlYklu
c3BlY3Rvci5EYXNoYm9hcmRWaWV3LkVuYWJsZWRTdHlsZUNsYXNzTmFtZSk7CisgICAgICAgIC8v
IEltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMuCiAgICAgfQogfTsKLQotV2ViSW5zcGVjdG9yLkRh
c2hib2FyZFZpZXcucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3QucHJv
dG90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvRGVmYXVsdERhc2hib2FyZFZpZXcuY3NzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvRGVmYXVsdERhc2hib2FyZFZpZXcuY3NzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEy
OWJhYWNiZDBlMTFjODNkYTk3ZWY0ZjU5M2EyYzBmMzA3YWEyZWIKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EZWZhdWx0RGFzaGJv
YXJkVmlldy5jc3MKQEAgLTAsMCArMSwxOTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMs
IDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisg
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworYm9keS53ZWIgLnRvb2xiYXIuY29sbGFwc2VkIC5kYXNoYm9hcmQuZGVmYXVsdCA+IC50aW1l
LAorYm9keS53ZWIgLnRvb2xiYXIuY29sbGFwc2VkIC5kYXNoYm9hcmQuZGVmYXVsdCA+IC5yZXNv
dXJjZXNTaXplLAorYm9keS53ZWIgLnRvb2xiYXIuY29sbGFwc2VkIC5kYXNoYm9hcmQuZGVmYXVs
dCA+IC5sb2dzIHsKKyAgICBkaXNwbGF5OiBub25lOworfQorCitib2R5LmphdmFzY3JpcHQgLnRv
b2xiYXIgLmRhc2hib2FyZC5kZWZhdWx0ID4gLnRpbWUsCitib2R5LmphdmFzY3JpcHQgLnRvb2xi
YXIgLmRhc2hib2FyZC5kZWZhdWx0ID4gLnJlc291cmNlc1NpemUsCitib2R5LmphdmFzY3JpcHQg
LnRvb2xiYXIgLmRhc2hib2FyZC5kZWZhdWx0ID4gLnJlc291cmNlc0NvdW50IHsKKyAgICBkaXNw
bGF5OiBub25lOworfQorCisudG9vbGJhciAuZGFzaGJvYXJkLmRlZmF1bHQgeworICAgIGRpc3Bs
YXk6IC13ZWJraXQtZmxleDsKKyAgICAtd2Via2l0LWZsZXgtZmxvdzogcm93IG5vd3JhcDsKKyAg
ICAtd2Via2l0LWp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKK30KKworLnRvb2xiYXIg
LmRhc2hib2FyZC5kZWZhdWx0ID4gLml0ZW0geworICAgIGZvbnQtZmFtaWx5OiBIZWx2ZXRpY2Es
IHNhbnMtc2VyaWY7CisgICAgZm9udC13ZWlnaHQ6IGJvbGQ7CisgICAgZm9udC1zaXplOiAxMXB4
OworICAgIGxpbmUtaGVpZ2h0OiAxMnB4OworCisgICAgcGFkZGluZzogMCA1cHg7CisKKyAgICBk
aXNwbGF5OiAtd2Via2l0LWZsZXg7CisKKyAgICBtaW4td2lkdGg6IDQ1cHg7CisKKyAgICAtd2Vi
a2l0LWp1c3RpZnktY29udGVudDogY2VudGVyOworICAgIC13ZWJraXQtYWxpZ24taXRlbXM6IGNl
bnRlcjsKKworICAgIGJvcmRlci1yYWRpdXM6IDRweDsKKyAgICBib3JkZXI6IDFweCBzb2xpZCB0
cmFuc3BhcmVudDsKK30KKworLnRvb2xiYXIgLmRhc2hib2FyZC5kZWZhdWx0ID4gLnRpbWUsCisu
dG9vbGJhciAuZGFzaGJvYXJkLmRlZmF1bHQgPiAucmVzb3VyY2VzU2l6ZSB7CisgICAgbWluLXdp
ZHRoOiA3MHB4OworfQorCisudG9vbGJhciAuZGFzaGJvYXJkLmRlZmF1bHQgPiAuaXRlbS5lbmFi
bGVkOmhvdmVyIHsKKyAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMSk7Cit9
CisKKy50b29sYmFyIC5kYXNoYm9hcmQuZGVmYXVsdCA+IC5pdGVtLmVuYWJsZWQ6YWN0aXZlIHsK
KyAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMik7Cit9CisKKy50b29sYmFy
IC5kYXNoYm9hcmQuZGVmYXVsdCA+IC5pdGVtID4gKiB7CisgICAgZGlzcGxheTogLXdlYmtpdC1m
bGV4OworICAgIC13ZWJraXQtYWxpZ24taXRlbXM6IGNlbnRlcjsKK30KKworLnRvb2xiYXIgLmRh
c2hib2FyZC5kZWZhdWx0ID4gLml0ZW0gPiBpbWcgeworICAgIG9wYWNpdHk6IDAuMjsKKyAgICB3
aWR0aDogMTZweDsKKyAgICBoZWlnaHQ6IDE2cHg7CisgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7
Cit9CisKKy50b29sYmFyIC5kYXNoYm9hcmQuZGVmYXVsdCA+IC5pdGVtLmVuYWJsZWQgPiBpbWcg
eworICAgIG9wYWNpdHk6IDAuNTsKK30KKworLnRvb2xiYXIgLmRhc2hib2FyZC5kZWZhdWx0ID4g
Lml0ZW0uZW5hYmxlZDpob3ZlciA+IGltZyB7CisgICAgb3BhY2l0eTogMC42NTsKK30KKworLnRv
b2xiYXIgLmRhc2hib2FyZC5kZWZhdWx0ID4gLml0ZW0gPiBkaXYgeworICAgIGRpc3BsYXk6IC13
ZWJraXQtZmxleDsKKyAgICAtd2Via2l0LWZsZXg6IDE7CisKKyAgICBjb2xvcjogcmdiYSgwLCAw
LCAwLCAwLjIpOworICAgIHBhZGRpbmctbGVmdDogMnB4OworfQorCisudG9vbGJhciAuZGFzaGJv
YXJkLmRlZmF1bHQgPiAuaXRlbS5lbmFibGVkID4gZGl2IHsKKyAgICBjb2xvcjogcmdiYSgwLCAw
LCAwLCAwLjcpOworfQorCisudG9vbGJhciAuZGFzaGJvYXJkLmRlZmF1bHQgPiAuaXRlbS5lbmFi
bGVkOmhvdmVyID4gZGl2IHsKKyAgICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjg1KTsKK30KKwor
LnRvb2xiYXIgLmRhc2hib2FyZC5kZWZhdWx0ID4gLnJlc291cmNlc0NvdW50ID4gaW1nIHsKKyAg
ICBjb250ZW50OiB1cmwoLi4vSW1hZ2VzL1Jlc291cmNlcy5zdmcpOworfQorCisudG9vbGJhciAu
ZGFzaGJvYXJkLmRlZmF1bHQgPiAudGltZSA+IGltZyB7CisgICAgY29udGVudDogdXJsKC4uL0lt
YWdlcy9UaW1lLnN2Zyk7Cit9CisKKy50b29sYmFyIC5kYXNoYm9hcmQuZGVmYXVsdCA+IC5sb2dz
ID4gaW1nIHsKKyAgICBjb250ZW50OiB1cmwoLi4vSW1hZ2VzL0xvZ3Muc3ZnKTsKK30KKworLnRv
b2xiYXIgLmRhc2hib2FyZC5kZWZhdWx0ID4gLnJlc291cmNlc1NpemUgPiBpbWcgeworICAgIGNv
bnRlbnQ6IHVybCguLi9JbWFnZXMvV2VpZ2h0LnN2Zyk7Cit9CisKKy50b29sYmFyIC5kYXNoYm9h
cmQuZGVmYXVsdCA+IC5lcnJvcnMgPiBpbWcgeworICAgIGNvbnRlbnQ6IHVybCguLi9JbWFnZXMv
RXJyb3JzLnN2Zyk7Cit9CisKKy50b29sYmFyIC5kYXNoYm9hcmQuZGVmYXVsdCA+IC5lcnJvcnMu
ZW5hYmxlZCA+IGltZyB7CisgICAgY29udGVudDogdXJsKC4uL0ltYWdlcy9FcnJvcnNFbmFibGVk
LnN2Zyk7CisgICAgb3BhY2l0eTogMC45OworfQorCisudG9vbGJhciAuZGFzaGJvYXJkLmRlZmF1
bHQgPiAuZXJyb3JzLmVuYWJsZWQ6aG92ZXIgPiBpbWcgeworICAgIG9wYWNpdHk6IDE7Cit9CisK
Ky50b29sYmFyIC5kYXNoYm9hcmQuZGVmYXVsdCA+IC5lcnJvcnMuZW5hYmxlZCA+IGRpdiB7Cisg
ICAgY29sb3I6IHJnYmEoMjAxLCA1NSwgNTcsIDAuOSk7Cit9CisKKy50b29sYmFyIC5kYXNoYm9h
cmQuZGVmYXVsdCA+IC5lcnJvcnMuZW5hYmxlZDpob3ZlciA+IGRpdiB7CisgICAgY29sb3I6IHJn
YigyMDEsIDU1LCA1Nyk7Cit9CisKKy50b29sYmFyIC5kYXNoYm9hcmQuZGVmYXVsdCA+IC5pc3N1
ZXMgPiBpbWcgeworICAgIGNvbnRlbnQ6IHVybCguLi9JbWFnZXMvSXNzdWVzLnN2Zyk7Cit9CisK
Ky50b29sYmFyIC5kYXNoYm9hcmQuZGVmYXVsdCA+IC5pc3N1ZXMuZW5hYmxlZCA+IGltZyB7Cisg
ICAgY29udGVudDogdXJsKC4uL0ltYWdlcy9Jc3N1ZXNFbmFibGVkLnN2Zyk7CisgICAgb3BhY2l0
eTogMC45OworfQorCisudG9vbGJhciAuZGFzaGJvYXJkLmRlZmF1bHQgPiAuaXNzdWVzLmVuYWJs
ZWQ6aG92ZXIgPiBpbWcgeworICAgIG9wYWNpdHk6IDE7Cit9CisKKy50b29sYmFyIC5kYXNoYm9h
cmQuZGVmYXVsdCA+IC5pc3N1ZXMuZW5hYmxlZCA+IGRpdiB7CisgICAgY29sb3I6IHJnYmEoMjI0
LCAxNjQsIDQsIDAuOSk7Cit9CisKKy50b29sYmFyIC5kYXNoYm9hcmQuZGVmYXVsdCA+IC5pc3N1
ZXMuZW5hYmxlZDpob3ZlciA+IGRpdiB7CisgICAgY29sb3I6IHJnYigyMjQsIDE2NCwgNCk7Cit9
CisKKy8qIFN0eWxlcyBmb3IgdGhlIHB1bHNpbmcgYW5pbWF0ZWQgc3RhdGUgb2YgY29uc29sZSBp
dGVtcyAqLworCisudG9vbGJhciAuZGFzaGJvYXJkLmRlZmF1bHQgPiAuaXRlbS5wdWxzaW5nIHsK
KyAgICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBjb25zb2xlLWl0ZW0tcHVsc2U7CisgICAgLXdl
YmtpdC1hbmltYXRpb24tZHVyYXRpb246IDAuNzVzOworfQorCitALXdlYmtpdC1rZXlmcmFtZXMg
Y29uc29sZS1pdGVtLXB1bHNlIHsKKyAgICA1MCUgeyBvcGFjaXR5OiAwLjY7IH0KK30KKworCisv
KiBTdHlsZXMgZm9yIHRoZSBleHRyYSBzaG9ydCBzdHlsZSwgb25lIHJvdyB3aXRoIHF1aXRlIGEg
c21hbGwgeS1tYXJnaW4gKi8KKworLnRvb2xiYXIubGFiZWwtb25seSAuZGFzaGJvYXJkLmRlZmF1
bHQgPiAuaXRlbSwKKy50b29sYmFyLnNtYWxsLXNpemUuaWNvbi1vbmx5IC5kYXNoYm9hcmQuZGVm
YXVsdCA+IC5pdGVtLAorLnRvb2xiYXIuc21hbGwtc2l6ZS5pY29uLWFuZC1sYWJlbC12ZXJ0aWNh
bCAuZGFzaGJvYXJkLmRlZmF1bHQgPiAuaXRlbSwKKy50b29sYmFyLnNtYWxsLXNpemUuaWNvbi1h
bmQtbGFiZWwtaG9yaXpvbnRhbCAuZGFzaGJvYXJkLmRlZmF1bHQgPiAuaXRlbSB7CisgICAgbWFy
Z2luOiAxcHggMDsKK30KKworLyogU3R5bGVzIGZvciB0aGUgZmFpcmx5IHNob3J0IHN0eWxlLCBv
bmUgcm93IHdpdGggcXVpdGUgYSBiaXQgb2YgeS1tYXJnaW4gKi8KKworLnRvb2xiYXIubm9ybWFs
LXNpemUuaWNvbi1vbmx5IC5kYXNoYm9hcmQuZGVmYXVsdCA+IC5pdGVtLAorLnRvb2xiYXIubm9y
bWFsLXNpemUuaWNvbi1hbmQtbGFiZWwtdmVydGljYWwgLmRhc2hib2FyZC5kZWZhdWx0ID4gLml0
ZW0sCisudG9vbGJhci5ub3JtYWwtc2l6ZS5pY29uLWFuZC1sYWJlbC1ob3Jpem9udGFsIC5kYXNo
Ym9hcmQuZGVmYXVsdCA+IC5pdGVtIHsKKyAgICBtYXJnaW46IDRweCAwOworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGVmYXVsdERhc2hi
b2FyZFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9E
ZWZhdWx0RGFzaGJvYXJkVmlldy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNjI0MjkzMDM3MTk5OTEwYzA3MmNh
NzYxYjZiNjA2NzRlNzU5NDk0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGVmYXVsdERhc2hib2FyZFZpZXcuanMKQEAgLTAsMCAr
MSwxOTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworV2ViSW5zcGVjdG9yLkRlZmF1
bHREYXNoYm9hcmRWaWV3ID0gZnVuY3Rpb24ocmVwcmVzZW50ZWRPYmplY3QpCit7CisgICAgV2Vi
SW5zcGVjdG9yLkRhc2hib2FyZFZpZXcuY2FsbCh0aGlzLCByZXByZXNlbnRlZE9iamVjdCwgImRl
ZmF1bHQiKTsKKworICAgIHJlcHJlc2VudGVkT2JqZWN0LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5z
cGVjdG9yLkRlZmF1bHREYXNoYm9hcmQuRXZlbnQuRGF0YURpZENoYW5nZSwgd2luZG93LnJlcXVl
c3RBbmltYXRpb25GcmFtZS5iaW5kKG51bGwsIHRoaXMuX3VwZGF0ZURpc3BsYXkuYmluZCh0aGlz
KSkpOworCisgICAgdGhpcy5faXRlbXMgPSB7CisgICAgICAgIHJlc291cmNlc0NvdW50OiB7Cisg
ICAgICAgICAgICB0b29sdGlwOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlRvdGFsIG51bWJlciBv
ZiByZXNvdXJjZXMsIGNsaWNrIHRvIHNob3cgdGhlIFJlc291cmNlcyBuYXZpZ2F0aW9uIHNpZGVi
YXIiKSwKKyAgICAgICAgICAgIGhhbmRsZXI6IHRoaXMuX3Jlc291cmNlc1dhc0NsaWNrZWQKKyAg
ICAgICAgfSwKKyAgICAgICAgcmVzb3VyY2VzU2l6ZTogeworICAgICAgICAgICAgdG9vbHRpcDog
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJUb3RhbCBzaXplIG9mIGFsbCByZXNvdXJjZXMsIGNsaWNr
IHRvIHNob3cgdGhlIE5ldHdvcmsgUmVxdWVzdHMgdGltZWxpbmUiKSwKKyAgICAgICAgICAgIGhh
bmRsZXI6IHRoaXMuX25ldHdvcmtJdGVtV2FzQ2xpY2tlZAorICAgICAgICB9LAorICAgICAgICB0
aW1lOiB7CisgICAgICAgICAgICB0b29sdGlwOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlRpbWUg
dW50aWwgdGhlIGxvYWQgZXZlbnQgZmlyZWQsIGNsaWNrIHRvIHNob3cgdGhlIE5ldHdvcmsgUmVx
dWVzdHMgdGltZWxpbmUiKSwKKyAgICAgICAgICAgIGhhbmRsZXI6IHRoaXMuX25ldHdvcmtJdGVt
V2FzQ2xpY2tlZAorICAgICAgICB9LAorICAgICAgICBsb2dzOiB7CisgICAgICAgICAgICB0b29s
dGlwOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNvbnNvbGUgbG9ncywgY2xpY2sgdG8gc2hvdyB0
aGUgQ29uc29sZSIpLAorICAgICAgICAgICAgaGFuZGxlcjogdGhpcy5fY29uc29sZUl0ZW1XYXND
bGlja2VkLmJpbmQodGhpcywgV2ViSW5zcGVjdG9yLkxvZ0NvbnRlbnRWaWV3LlNjb3Blcy5Mb2dz
KQorICAgICAgICB9LAorICAgICAgICBlcnJvcnM6IHsKKyAgICAgICAgICAgIHRvb2x0aXA6IFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiQ29uc29sZSBlcnJvcnMsIGNsaWNrIHRvIHNob3cgdGhlIENv
bnNvbGUiKSwKKyAgICAgICAgICAgIGhhbmRsZXI6IHRoaXMuX2NvbnNvbGVJdGVtV2FzQ2xpY2tl
ZC5iaW5kKHRoaXMsIFdlYkluc3BlY3Rvci5Mb2dDb250ZW50Vmlldy5TY29wZXMuRXJyb3JzKQor
ICAgICAgICB9LAorICAgICAgICBpc3N1ZXM6IHsKKyAgICAgICAgICAgIHRvb2x0aXA6IFdlYklu
c3BlY3Rvci5VSVN0cmluZygiQ29uc29sZSB3YXJuaW5ncywgY2xpY2sgdG8gc2hvdyB0aGUgQ29u
c29sZSIpLAorICAgICAgICAgICAgaGFuZGxlcjogdGhpcy5fY29uc29sZUl0ZW1XYXNDbGlja2Vk
LmJpbmQodGhpcywgV2ViSW5zcGVjdG9yLkxvZ0NvbnRlbnRWaWV3LlNjb3Blcy5XYXJuaW5ncykK
KyAgICAgICAgfQorICAgIH07CisKKyAgICBmb3IgKHZhciBuYW1lIGluIHRoaXMuX2l0ZW1zKQor
ICAgICAgICB0aGlzLl9hcHBlbmRFbGVtZW50Rm9yTmFtZWRJdGVtKG5hbWUpOworfTsKKworV2Vi
SW5zcGVjdG9yLkRlZmF1bHREYXNoYm9hcmRWaWV3LkVuYWJsZWRJdGVtU3R5bGVDbGFzc05hbWUg
PSAiZW5hYmxlZCI7CisKK1dlYkluc3BlY3Rvci5EZWZhdWx0RGFzaGJvYXJkVmlldy5wcm90b3R5
cGUgPSB7CisgICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5EZWZhdWx0RGFzaGJvYXJkVmll
dywKKyAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5EYXNoYm9hcmRWaWV3LnByb3RvdHlwZSwK
KworICAgIC8vIFByaXZhdGUKKworICAgIF91cGRhdGVEaXNwbGF5OiBmdW5jdGlvbigpCisgICAg
eworICAgICAgICB2YXIgZGFzaGJvYXJkID0gdGhpcy5yZXByZXNlbnRlZE9iamVjdDsKKworICAg
ICAgICBmb3IgKHZhciBjYXRlZ29yeSBvZiBbImxvZ3MiLCAiaXNzdWVzIiwgImVycm9ycyJdKQor
ICAgICAgICAgICAgdGhpcy5fc2V0Q29uc29sZUl0ZW1WYWx1ZShjYXRlZ29yeSwgZGFzaGJvYXJk
W2NhdGVnb3J5XSk7CisKKyAgICAgICAgdmFyIHRpbWVJdGVtID0gdGhpcy5faXRlbXMudGltZTsK
KyAgICAgICAgdGltZUl0ZW0udGV4dCA9IGRhc2hib2FyZC50aW1lID8gTnVtYmVyLnNlY29uZHNU
b1N0cmluZyhkYXNoYm9hcmQudGltZSkgOiAiXHUyMDE0IjsKKyAgICAgICAgdGhpcy5fc2V0SXRl
bUVuYWJsZWQodGltZUl0ZW0sIGRhc2hib2FyZC50aW1lID4gMCk7CisKKyAgICAgICAgdmFyIGNv
dW50SXRlbSA9IHRoaXMuX2l0ZW1zLnJlc291cmNlc0NvdW50OworICAgICAgICBjb3VudEl0ZW0u
dGV4dCA9IHRoaXMuX2Zvcm1hdFBvc3NpYmxlTGFyZ2VOdW1iZXIoZGFzaGJvYXJkLnJlc291cmNl
c0NvdW50KTsKKyAgICAgICAgdGhpcy5fc2V0SXRlbUVuYWJsZWQoY291bnRJdGVtLCBkYXNoYm9h
cmQucmVzb3VyY2VzQ291bnQgPiAwKTsKKworICAgICAgICB2YXIgc2l6ZUl0ZW0gPSB0aGlzLl9p
dGVtcy5yZXNvdXJjZXNTaXplOworICAgICAgICBzaXplSXRlbS50ZXh0ID0gZGFzaGJvYXJkLnJl
c291cmNlc1NpemUgPyBOdW1iZXIuYnl0ZXNUb1N0cmluZyhkYXNoYm9hcmQucmVzb3VyY2VzU2l6
ZSwgZmFsc2UpIDogIlx1MjAxNCI7CisgICAgICAgIHRoaXMuX3NldEl0ZW1FbmFibGVkKHNpemVJ
dGVtLCBkYXNoYm9hcmQucmVzb3VyY2VzU2l6ZSA+IDApOworICAgIH0sCisKKyAgICBfZm9ybWF0
UG9zc2libGVMYXJnZU51bWJlcjogZnVuY3Rpb24obnVtYmVyKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIG51bWJlciA+IDk5OSA/IFdlYkluc3BlY3Rvci5VSVN0cmluZygiOTk5KyIpIDogbnVtYmVy
OworICAgIH0sCisKKyAgICBfYXBwZW5kRWxlbWVudEZvck5hbWVkSXRlbTogZnVuY3Rpb24obmFt
ZSkKKyAgICB7CisgICAgICAgIHZhciBpdGVtID0gdGhpcy5faXRlbXNbbmFtZV07CisKKyAgICAg
ICAgaXRlbS5jb250YWluZXIgPSB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImRpdiIpKTsKKyAgICAgICAgaXRlbS5jb250YWluZXIuY2xhc3NOYW1lID0g
Iml0ZW0gIiArIG5hbWU7CisgICAgICAgIGl0ZW0uY29udGFpbmVyLnRpdGxlID0gaXRlbS50b29s
dGlwOworCisgICAgICAgIGl0ZW0uY29udGFpbmVyLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImltZyIpKTsKKworICAgICAgICBpdGVtLm91dGxldCA9IGl0ZW0uY29udGFpbmVy
LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKTsKKworICAgICAgICBP
YmplY3QuZGVmaW5lUHJvcGVydHkoaXRlbSwgInRleHQiLAorICAgICAgICB7CisgICAgICAgICAg
ICBzZXQ6IGZ1bmN0aW9uKG5ld1RleHQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
aWYgKG5ld1RleHQgPT09IGl0ZW0ub3V0bGV0LnRleHRDb250ZW50KQorICAgICAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgaXRlbS5vdXRsZXQudGV4dENvbnRlbnQgPSBu
ZXdUZXh0OworICAgICAgICAgICAgfQorICAgICAgICB9KTsKKworICAgICAgICBpdGVtLmNvbnRh
aW5lci5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAg
ICAgICB0aGlzLl9pdGVtV2FzQ2xpY2tlZChuYW1lKTsKKyAgICAgICAgfS5iaW5kKHRoaXMpKTsK
KyAgICB9LAorCisgICAgX2l0ZW1XYXNDbGlja2VkOiBmdW5jdGlvbihuYW1lKQorICAgIHsKKyAg
ICAgICAgdmFyIGl0ZW0gPSB0aGlzLl9pdGVtc1tuYW1lXTsKKyAgICAgICAgaWYgKCFpdGVtLmNv
bnRhaW5lci5jbGFzc0xpc3QuY29udGFpbnMoV2ViSW5zcGVjdG9yLkRlZmF1bHREYXNoYm9hcmRW
aWV3LkVuYWJsZWRJdGVtU3R5bGVDbGFzc05hbWUpKQorICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgIGlmIChpdGVtLmhhbmRsZXIpCisgICAgICAgICAgICBpdGVtLmhhbmRsZXIuY2FsbCh0
aGlzKTsKKyAgICB9LAorCisgICAgX3Jlc291cmNlc1dhc0NsaWNrZWQ6IGZ1bmN0aW9uKCkKKyAg
ICB7CisgICAgICAgIFdlYkluc3BlY3Rvci5uYXZpZ2F0aW9uU2lkZWJhci5zZWxlY3RlZFNpZGVi
YXJQYW5lbCA9IFdlYkluc3BlY3Rvci5yZXNvdXJjZVNpZGViYXJQYW5lbDsKKyAgICAgICAgV2Vi
SW5zcGVjdG9yLm5hdmlnYXRpb25TaWRlYmFyLmNvbGxhcHNlZCA9IGZhbHNlOworICAgIH0sCisK
KyAgICBfbmV0d29ya0l0ZW1XYXNDbGlja2VkOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBX
ZWJJbnNwZWN0b3IubmF2aWdhdGlvblNpZGViYXIuc2VsZWN0ZWRTaWRlYmFyUGFuZWwgPSBXZWJJ
bnNwZWN0b3IudGltZWxpbmVTaWRlYmFyUGFuZWw7CisgICAgfSwKKworICAgIF9jb25zb2xlSXRl
bVdhc0NsaWNrZWQ6IGZ1bmN0aW9uKHNjb3BlKQorICAgIHsKKyAgICAgICAgV2ViSW5zcGVjdG9y
LnNob3dDb25zb2xlVmlldyhzY29wZSk7CisgICAgfSwKKworICAgIF9zZXRDb25zb2xlSXRlbVZh
bHVlOiBmdW5jdGlvbihpdGVtTmFtZSwgbmV3VmFsdWUpCisgICAgeworICAgICAgICB2YXIgaVZh
ck5hbWUgPSAiXyIgKyBpdGVtTmFtZTsKKyAgICAgICAgdmFyIHByZXZpb3VzVmFsdWUgPSB0aGlz
W2lWYXJOYW1lXTsKKyAgICAgICAgdGhpc1tpVmFyTmFtZV0gPSBuZXdWYWx1ZTsKKworICAgICAg
ICB2YXIgaXRlbSA9IHRoaXMuX2l0ZW1zW2l0ZW1OYW1lXTsKKyAgICAgICAgaXRlbS50ZXh0ID0g
dGhpcy5fZm9ybWF0UG9zc2libGVMYXJnZU51bWJlcihuZXdWYWx1ZSk7CisgICAgICAgIHRoaXMu
X3NldEl0ZW1FbmFibGVkKGl0ZW0sIG5ld1ZhbHVlID4gMCk7CisKKyAgICAgICAgaWYgKG5ld1Zh
bHVlIDw9IHByZXZpb3VzVmFsdWUpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdmFy
IGNvbnRhaW5lciA9IGl0ZW0uY29udGFpbmVyOworCisgICAgICAgIGZ1bmN0aW9uIGFuaW1hdGlv
bkVuZGVkKGV2ZW50KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoZXZlbnQudGFyZ2V0ID09
PSBjb250YWluZXIpIHsKKyAgICAgICAgICAgICAgICBjb250YWluZXIuY2xhc3NMaXN0LnJlbW92
ZSgicHVsc2luZyIpOworICAgICAgICAgICAgICAgIGNvbnRhaW5lci5yZW1vdmVFdmVudExpc3Rl
bmVyKCJ3ZWJraXRBbmltYXRpb25FbmQiLCBhbmltYXRpb25FbmRlZCk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKworICAgICAgICAvLyBXZSBuZWVkIHRvIGZvcmNlIGEgc3R5bGUgaW52YWxp
ZGF0aW9uIGluIHRoZSBjYXNlIHdoZXJlIHdlIGFscmVhZHkKKyAgICAgICAgLy8gd2VyZSBhbmlt
YXRpbmcgdGhpcyBpdGVtIGFmdGVyIHdlJ3ZlIHJlbW92ZWQgdGhlIHB1bHNpbmcgQ1NTIGNsYXNz
LgorICAgICAgICBpZiAoY29udGFpbmVyLmNsYXNzTGlzdC5jb250YWlucygicHVsc2luZyIpKSB7
CisgICAgICAgICAgICBjb250YWluZXIuY2xhc3NMaXN0LnJlbW92ZSgicHVsc2luZyIpOworICAg
ICAgICAgICAgY29udGFpbmVyLnJlY2FsY3VsYXRlU3R5bGVzKCk7CisgICAgICAgIH0gZWxzZQor
ICAgICAgICAgICAgY29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoIndlYmtpdEFuaW1hdGlvbkVu
ZCIsIGFuaW1hdGlvbkVuZGVkKTsKKworICAgICAgICBjb250YWluZXIuY2xhc3NMaXN0LmFkZCgi
cHVsc2luZyIpOworICAgIH0sCisKKyAgICBfc2V0SXRlbUVuYWJsZWQ6IGZ1bmN0aW9uKGl0ZW0s
IGVuYWJsZWQpCisgICAgeworICAgICAgICBpZiAoZW5hYmxlZCkKKyAgICAgICAgICAgIGl0ZW0u
Y29udGFpbmVyLmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLkRlZmF1bHREYXNoYm9hcmRWaWV3
LkVuYWJsZWRJdGVtU3R5bGVDbGFzc05hbWUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBp
dGVtLmNvbnRhaW5lci5jbGFzc0xpc3QucmVtb3ZlKFdlYkluc3BlY3Rvci5EZWZhdWx0RGFzaGJv
YXJkVmlldy5FbmFibGVkSXRlbVN0eWxlQ2xhc3NOYW1lKTsKKyAgICB9Cit9Owo=
</data>
<flag name="review"
          id="250487"
          type_id="1"
          status="+"
          setter="timothy"
    />
          </attachment>
      

    </bug>

</bugzilla>