<?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>193494</bug_id>
          
          <creation_ts>2019-01-16 08:01:14 -0800</creation_ts>
          <short_desc>[iOS] Content offset jumps erratically when autoscrolling near scroll view content inset areas</short_desc>
          <delta_ts>2020-04-01 06:00:30 -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>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>bdakin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>ssk.mohan</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1495070</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-01-16 08:01:14 -0800</bug_when>
    <thetext>&lt;rdar://problem/46859627&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495476</commentid>
    <comment_count>1</comment_count>
      <attachid>359379</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-01-17 08:22:26 -0800</bug_when>
    <thetext>Created attachment 359379
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495640</commentid>
    <comment_count>2</comment_count>
      <attachid>359379</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-01-17 13:45:08 -0800</bug_when>
    <thetext>Comment on attachment 359379
Patch

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

&gt; Source/WebKit/ChangeLog:26
&gt; +        We don&apos;t care about binary compatibility with iOS 10 and below anymore, so we should change these &gt;= iOS 11
&gt; +        target checks to simply `PLATFORM(IOS)`.

This is about source compatibility, not bincompat, right?

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:2979
&gt; +    auto scrollViewOriginIncludingInset = UIEdgeInsetsInsetRect([_scrollView bounds], computedContentInsetUnadjustedForKeyboard).origin;

Should we stash aside [_scrollView bounds] and contentSize to avoid all these messages?

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:2983
&gt; +    if (scrollViewInsets.left &gt; 0 &amp;&amp; scrollViewOriginIncludingInset.x &lt; 0)

This all could probably use a comment. Also I am looking at UIGeometry headers longingly wishing there were a better way to write all this.

&gt; Tools/WebKitTestRunner/TestController.cpp:1270
&gt; +        else if (key == &quot;topContentInset&quot;)
&gt; +            testOptions.topContentInset = std::stod(value);

Please don&apos;t propagate the silly &quot;topContentInset&quot; thing. This will be confusing when getting rid of the Mac notion.

I wonder if we can actually put dots here? like contentInset.top in the key name?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495643</commentid>
    <comment_count>3</comment_count>
      <attachid>359379</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-01-17 13:45:54 -0800</bug_when>
    <thetext>Comment on attachment 359379
Patch

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

&gt; Source/WebCore/rendering/RenderLayer.cpp:2557
&gt; +            // to handle the case where the rect to reveal is outside the content, but within the inset area.

I feel like these words aren&apos;t quite right? the rect to reveal can be inside the content and still be affected by this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495644</commentid>
    <comment_count>4</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-01-17 13:46:09 -0800</bug_when>
    <thetext>Probably want smfr to peek too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495652</commentid>
    <comment_count>5</comment_count>
      <attachid>359379</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-01-17 14:31:18 -0800</bug_when>
    <thetext>Comment on attachment 359379
Patch

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

&gt; Source/WebCore/rendering/RenderLayer.cpp:2558
&gt; +            auto&amp; unobscuredInsets = page().unobscuredContentInsets();

Rather than fetching insets form Page and getting unobscuredContentRect() and doing math, I&apos;d prefer that FrameView have a single function to returned the rect expanded by insets.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495658</commentid>
    <comment_count>6</comment_count>
      <attachid>359379</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-01-17 14:54:43 -0800</bug_when>
    <thetext>Comment on attachment 359379
Patch

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

&gt;&gt; Source/WebKit/ChangeLog:26
&gt;&gt; +        target checks to simply `PLATFORM(IOS)`.
&gt; 
&gt; This is about source compatibility, not bincompat, right?

Oops, right. Fixed!

&gt;&gt; Source/WebCore/rendering/RenderLayer.cpp:2557
&gt;&gt; +            // to handle the case where the rect to reveal is outside the content, but within the inset area.
&gt; 
&gt; I feel like these words aren&apos;t quite right? the rect to reveal can be inside the content and still be affected by this.

Indeed. This is really about allowing this code to scroll into (or keep the scroll position) inside a content inset area, instead of always staying in the content rect. I tweaked the comment here to better reflect this.

&gt;&gt; Source/WebCore/rendering/RenderLayer.cpp:2558
&gt;&gt; +            auto&amp; unobscuredInsets = page().unobscuredContentInsets();
&gt; 
&gt; Rather than fetching insets form Page and getting unobscuredContentRect() and doing math, I&apos;d prefer that FrameView have a single function to returned the rect expanded by insets.

Good call. I&apos;ll abstract this into a helper method (perhaps FrameView::unobscuredContentRectIncludingInsets?)

&gt;&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:2979
&gt;&gt; +    auto scrollViewOriginIncludingInset = UIEdgeInsetsInsetRect([_scrollView bounds], computedContentInsetUnadjustedForKeyboard).origin;
&gt; 
&gt; Should we stash aside [_scrollView bounds] and contentSize to avoid all these messages?

Yes! Fixed.

&gt;&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:2983
&gt;&gt; +    if (scrollViewInsets.left &gt; 0 &amp;&amp; scrollViewOriginIncludingInset.x &lt; 0)
&gt; 
&gt; This all could probably use a comment. Also I am looking at UIGeometry headers longingly wishing there were a better way to write all this.

Yeah... :/

I added a comment here describing the logic.

&gt;&gt; Tools/WebKitTestRunner/TestController.cpp:1270
&gt;&gt; +            testOptions.topContentInset = std::stod(value);
&gt; 
&gt; Please don&apos;t propagate the silly &quot;topContentInset&quot; thing. This will be confusing when getting rid of the Mac notion.
&gt; 
&gt; I wonder if we can actually put dots here? like contentInset.top in the key name?

👍 I&apos;ll use &quot;contentInset.top&quot; and `contentInsetTop`</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495670</commentid>
    <comment_count>7</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-01-17 16:11:41 -0800</bug_when>
    <thetext>Simon also suggested that I rename &quot;unobscuredContentInsets&quot; to just &quot;contentInsets&quot;, and also call the new helper something like &quot;unobscuredContentRectExpandedByContentInsets&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495713</commentid>
    <comment_count>8</comment_count>
      <attachid>359437</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-01-17 17:52:29 -0800</bug_when>
    <thetext>Created attachment 359437
Patch v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495714</commentid>
    <comment_count>9</comment_count>
      <attachid>359437</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-01-17 17:59:55 -0800</bug_when>
    <thetext>Comment on attachment 359437
Patch v2

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

&gt; Source/WebCore/rendering/RenderLayer.cpp:2555
&gt; +            // Even though content insets do not represent content, we consider them as part of the visible rect
&gt; +            // to allow ourselves to scroll into content insets.

I think it would be better to just remove this comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495722</commentid>
    <comment_count>10</comment_count>
      <attachid>359441</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-01-17 19:32:11 -0800</bug_when>
    <thetext>Created attachment 359441
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495723</commentid>
    <comment_count>11</comment_count>
      <attachid>359442</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-01-17 19:36:41 -0800</bug_when>
    <thetext>Created attachment 359442
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495724</commentid>
    <comment_count>12</comment_count>
      <attachid>359442</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-01-17 20:15:31 -0800</bug_when>
    <thetext>Comment on attachment 359442
Patch for landing

Clearing flags on attachment: 359442

Committed r240139: &lt;https://trac.webkit.org/changeset/240139&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636457</commentid>
    <comment_count>13</comment_count>
    <who name="Mohan">ssk.mohan</who>
    <bug_when>2020-04-01 06:00:30 -0700</bug_when>
    <thetext>*** Bug 209821 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>359379</attachid>
            <date>2019-01-17 08:22:26 -0800</date>
            <delta_ts>2019-01-17 16:07:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193494-20190117082225.patch</filename>
            <type>text/plain</type>
            <size>36399</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwMTAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmRkOWQ1MGZlNjM2Mjg4
MTk1ZjQ1OGViNTE4NDg1MTllYzY1YTk5My4uNzU0OTFkZDY2ZjM2NzJkYTJlYjg2NzdiZGMyYzY3
NzY1ZTgyZDgyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDE5LTAxLTE3ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIENvbnRl
bnQgb2Zmc2V0IGp1bXBzIGVycmF0aWNhbGx5IHdoZW4gYXV0b3Njcm9sbGluZyBuZWFyIHNjcm9s
bCB2aWV3IGNvbnRlbnQgaW5zZXQgYXJlYXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE5MzQ5NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDY4NTk2
Mjc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hl
biBjb21wdXRpbmcgdGhlIGNvbnRlbnQgb2Zmc2V0IHRvIHNjcm9sbCB0byB3aGVuIHJldmVhbGlu
ZyBhIGdpdmVuIHJlY3QgaW4gY29udGVudCBjb29yZGluYXRlcywgd2UgY3VycmVudGx5CisgICAg
ICAgIGp1c3QgdXNlIHRoZSB1bm9ic2N1cmVkIGNvbnRlbnQgcmVjdC4gQXMgYSByZXN1bHQsIHdo
ZW4gcmV2ZWFsaW5nIGEgcmVjdCB0aGF0J3MgbG9jYXRlZCBvdXRzaWRlIG9mIHRoZSBjb250ZW50
CisgICAgICAgIGFyZWEsIHdlJ2xsIGNsYW1wIHRoZSBmaW5hbCBzY3JvbGwgcG9zaXRpb24gc3Vj
aCB0aGF0IG9ubHkgY29udGVudCBpcyB2aXNpYmxlLiBGb3IgZXhhbXBsZSwgd2hlbiBhc2tlZCB0
byByZXZlYWwKKyAgICAgICAgdGhlIHJlY3QgYCgwLCAtMTAwLCAxLCAxKWAsIHdlIGFkanVzdCB0
aGUgc2Nyb2xsIHBvc2l0aW9uIHRvIGJlIHRoZSBvcmlnaW4gcmF0aGVyIHRoYW4gYCgwLCAtMTAw
KWAuCisKKyAgICAgICAgSG93ZXZlciwgY29uc2lkZXIgdGhlIGNhc2Ugd2hlcmUgYSBjbGllbnQg
KGUuZy4gTWFpbCBvbiBpT1MpIGhhcyBhZGRlZCBhIGNvbnRlbnQgaW5zZXQgdG8gdGhlIHdlYiB2
aWV3J3Mgc2Nyb2xsCisgICAgICAgIHZpZXcuIElmIHdlJ3JlIGFza2VkIHRvIHJldmVhbCBhIHJl
Y3QgdGhhdCBpcyBvdXRzaWRlIHRoZSBjb250ZW50IGFyZWEgYnV0IHdpdGhpbiBhIGNvbnRlbnQg
aW5zZXQsIHdlIHdpbGwgc3RpbGwKKyAgICAgICAgZW5kIHVwIGNsYW1waW5nIHRoZSBzY3JvbGwg
cG9zaXRpb24gdG8gdGhlIHVub2JzY3VyZWQgcmVjdC4gVGhpcyBtYW5pZmVzdHMgaW4gYSBidWcg
d2hlcmUgc2VsZWN0aW5nIHRleHQgYW5kCisgICAgICAgIGF1dG9zY3JvbGxpbmcgaW4gaU9TIE1h
aWwgY29tcG9zZSB3aGlsZSB0aGUgc2Nyb2xsIHZpZXcgaXMgc2Nyb2xsZWQgYWxsIHRoZSB3YXkg
dG8gdGhlIHRvcCB0byByZXZlYWwgdGhlIFRvL0NjLworICAgICAgICBTdWJqZWN0IGZpZWxkcyBj
YXVzZXMgdGhlIGNvbnRlbnQgb2Zmc2V0IHRvIGp1bXAgdG8gdGhlIG9yaWdpbiwgcmF0aGVyIHRo
YW4gc3RheWluZyBhdCAoMCwgLXRvcENvbnRlbnRJbnNldCkuCisKKyAgICAgICAgVG8gZml4IHRo
aXMsIHdlIHRlYWNoIGBSZW5kZXJMYXllcjo6c2Nyb2xsUmVjdFRvVmlzaWJsZWAgYWJvdXQgdW5v
YnNjdXJlZCBjb250ZW50IGluc2V0cyAoaS5lLiBjb250ZW50IGluc2V0cworICAgICAgICB0aGF0
IGFyZSB2aXNpYmxlKS4gUmF0aGVyIHRoYW4gdXNlIHRoZSBjb250ZW50IHJlY3RzIGFzLWlzLCBl
eHBhbmQgdG8gZW5jb21wYXNzIHVub2JzY3VyZWQgY29udGVudCBpbnNldHMgYXMKKyAgICAgICAg
d2VsbC4gVGhpcyBlbnN1cmVzIHRoYXQgcmV2ZWFsaW5nIGEgcG9zaXRpb24gd2hpY2ggaXMgYWxy
ZWFkeSB2aXNpYmxlIHdvbid0IGNhdXNlIHVzIHRvIHNjcm9sbCBhd2F5IHRoZSBjb250ZW50Cisg
ICAgICAgIGluc2V0IGFyZWEgYW5kIG9ubHkgc2hvdyB0aGUgdW5vYnNjdXJlZCByZWN0LgorCisg
ICAgICAgIFRlc3Q6IGVkaXRpbmcvc2VsZWN0aW9uL2lvcy9hdXRvc2Nyb2xsLXdpdGgtdG9wLWNv
bnRlbnQtaW5zZXQuaHRtbAorCisgICAgICAgICogcGFnZS9QYWdlLmg6CisgICAgICAgIChXZWJD
b3JlOjpQYWdlOjp1bm9ic2N1cmVkQ29udGVudEluc2V0cyBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpQYWdlOjpzZXRVbm9ic2N1cmVkQ29udGVudEluc2V0cyk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpzY3Jv
bGxSZWN0VG9WaXNpYmxlKToKKworICAgICAgICBFeHBhbmQgdGhlIHVub2JzY3VyZWQgY29udGVu
dCByZWN0IHRvIGluY2x1ZGUgc3Vycm91bmRpbmcgdW5vYnNjdXJlZCBpbnNldHMuCisKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpnZXRSZWN0VG9FeHBvc2UgY29uc3QpOgorCiAyMDE5
LTAxLTE2ICBKdXN0aW4gRmFuICA8anVzdGluX2ZhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW1dl
YkdQVV0gVXBkYXRlIHZlcnRleC1idWZmZXItdHJpYW5nbGUtc3RyaXAuaHRtbCB0byBhY3R1YWxs
eSB1c2UgdmVydGV4IGJ1ZmZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBlNDkyZjhhZjI3ZjhlMTg0OTgyNjQ5NWEz
MGY2ODM5M2I4N2ZmMjAwLi4wMDRmZDM0YWYwZTY3YzFjMzhjMzllNzdhZWM1MmQzNDM1OWU2Yjkx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDE5LTAxLTE3ICBXZW5zb24gSHNpZWggIDx3
ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIENvbnRlbnQgb2Zmc2V0IGp1
bXBzIGVycmF0aWNhbGx5IHdoZW4gYXV0b3Njcm9sbGluZyBuZWFyIHNjcm9sbCB2aWV3IGNvbnRl
bnQgaW5zZXQgYXJlYXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5MzQ5NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDY4NTk2Mjc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkcyBgdW5vYnNjdXJl
ZENvbnRlbnRJbnNldHNgIHRvIGBWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZvYC4gVGhpcyBr
ZWVwcyB0cmFjayBvZiB0aGUgdmlzaWJsZSBpbnNldCBhcmVhcworICAgICAgICBzdXJyb3VuZGlu
ZyB0aGUgdW5vYnNjdXJlZCBjb250ZW50IHJlY3QuIFNlZSBXZWJDb3JlIENoYW5nZUxvZyBmb3Ig
bW9yZSBkZXRhaWxzLgorCisgICAgICAgICogU2hhcmVkL1Zpc2libGVDb250ZW50UmVjdFVwZGF0
ZUluZm8uY3BwOgorICAgICAgICAoV2ViS2l0OjpWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZv
OjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpWaXNpYmxlQ29udGVudFJlY3RVcGRh
dGVJbmZvOjpkZWNvZGUpOgorICAgICAgICAoV2ViS2l0OjpvcGVyYXRvcjw8KToKKyAgICAgICAg
KiBTaGFyZWQvVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mby5oOgorICAgICAgICAoV2ViS2l0
OjpWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZvOjpWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVJ
bmZvKToKKyAgICAgICAgKFdlYktpdDo6VmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mbzo6dW5v
YnNjdXJlZENvbnRlbnRJbnNldHMgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpvcGVyYXRvcj09
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAg
KC1bV0tXZWJWaWV3IF9jb21wdXRlZE9ic2N1cmVkSW5zZXRdKToKKyAgICAgICAgKC1bV0tXZWJW
aWV3IF9jb21wdXRlZENvbnRlbnRJbnNldF0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2NvbXB1
dGVkVW5vYnNjdXJlZFNhZmVBcmVhSW5zZXRdKToKKworICAgICAgICBXZSBkb24ndCBjYXJlIGFi
b3V0IGJpbmFyeSBjb21wYXRpYmlsaXR5IHdpdGggaU9TIDEwIGFuZCBiZWxvdyBhbnltb3JlLCBz
byB3ZSBzaG91bGQgY2hhbmdlIHRoZXNlID49IGlPUyAxMQorICAgICAgICB0YXJnZXQgY2hlY2tz
IHRvIHNpbXBseSBgUExBVEZPUk0oSU9TKWAuCisKKyAgICAgICAgKC1bV0tXZWJWaWV3IF91cGRh
dGVWaXNpYmxlQ29udGVudFJlY3RzXSk6CisKKyAgICAgICAgQ29tcHV0ZSB0aGUgdW5vYnNjdXJl
ZCBjb250ZW50IGluc2V0cyBvbiBhbGwgc2lkZXMgb2YgdGhlIHVub2JzY3VyZWQgY29udGVudCBy
ZWN0LiBUaGVzZSB1bm9ic2N1cmVkIGNvbnRlbnQKKyAgICAgICAgaW5zZXRzIGFyZSBzY2FsZWQg
dG8gY29udGVudCBjb29yZGluYXRlcy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbToKKyAg
ICAgICAgKGZsb2F0Qm94RXh0ZW50KToKKworICAgICAgICBBZGQgYSBoZWxwZXIgdG8gY29udmVy
dCBgVUlFZGdlSW5zZXRzYCB0byBgV2ViQ29yZTo6RmxvYXRCb3hFeHRlbnRgLCBhbmQgdXNlIGl0
IGluIGEgZmV3IHBsYWNlcyBiZWxvdy4KKworICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGRpZFVw
ZGF0ZVZpc2libGVSZWN0OnVub2JzY3VyZWRSZWN0OnVub2JzY3VyZWRJbnNldHM6dW5vYnNjdXJl
ZFJlY3RJblNjcm9sbFZpZXdDb29yZGluYXRlczpvYnNjdXJlZEluc2V0czp1bm9ic2N1cmVkU2Fm
ZUFyZWFJbnNldHM6aW5wdXRWaWV3Qm91bmRzOnNjYWxlOm1pbmltdW1TY2FsZTppblN0YWJsZVN0
YXRlOmlzQ2hhbmdpbmdPYnNjdXJlZEluc2V0c0ludGVyYWN0aXZlbHk6ZW5jbG9zZWRJblNjcm9s
bGFibGVBbmNlc3RvclZpZXc6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgZGlkVXBkYXRl
VmlzaWJsZVJlY3Q6dW5vYnNjdXJlZFJlY3Q6dW5vYnNjdXJlZFJlY3RJblNjcm9sbFZpZXdDb29y
ZGluYXRlczpvYnNjdXJlZEluc2V0czp1bm9ic2N1cmVkU2FmZUFyZWFJbnNldHM6aW5wdXRWaWV3
Qm91bmRzOnNjYWxlOm1pbmltdW1TY2FsZTppblN0YWJsZVN0YXRlOmlzQ2hhbmdpbmdPYnNjdXJl
ZEluc2V0c0ludGVyYWN0aXZlbHk6ZW5jbG9zZWRJblNjcm9sbGFibGVBbmNlc3RvclZpZXc6XSk6
IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1t
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVWaXNpYmxlQ29udGVudFJlY3RzKToK
KworICAgICAgICBVcGRhdGUgdGhlIFBhZ2UncyB1bm9ic2N1cmVkIGNvbnRlbnQgaW5zZXRzLgor
CiAyMDE5LTAxLTE2ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAg
ICBBZGQgYSBuZXcgU1BJIGZvciBjb250cm9sbGluZyBnZXRVc2VyTWVkaWEKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgK
aW5kZXggNTIyYmU5ODZjMWJiMTRmOTdhMjhhOGE1ZGRhYWQ4YzI5MzUyZWU5Ni4uOTk1ZWM3OWEw
Njc4ODI2MjZjOTAxN2ZkMjY0OTllY2U3MDc4MTgxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAgLTM0Nyw2
ICszNDcsOSBAQCBwdWJsaWM6CiAgICAgY29uc3QgRmxvYXRCb3hFeHRlbnQmIG9ic2N1cmVkSW5z
ZXRzKCkgY29uc3QgeyByZXR1cm4gbV9vYnNjdXJlZEluc2V0czsgfQogICAgIHZvaWQgc2V0T2Jz
Y3VyZWRJbnNldHMoY29uc3QgRmxvYXRCb3hFeHRlbnQmIG9ic2N1cmVkSW5zZXRzKSB7IG1fb2Jz
Y3VyZWRJbnNldHMgPSBvYnNjdXJlZEluc2V0czsgfQogCisgICAgY29uc3QgRmxvYXRCb3hFeHRl
bnQmIHVub2JzY3VyZWRDb250ZW50SW5zZXRzKCkgY29uc3QgeyByZXR1cm4gbV91bm9ic2N1cmVk
Q29udGVudEluc2V0czsgfTsKKyAgICB2b2lkIHNldFVub2JzY3VyZWRDb250ZW50SW5zZXRzKGNv
bnN0IEZsb2F0Qm94RXh0ZW50JiBpbnNldHMpIHsgbV91bm9ic2N1cmVkQ29udGVudEluc2V0cyA9
IGluc2V0czsgfQorCiAgICAgY29uc3QgRmxvYXRCb3hFeHRlbnQmIHVub2JzY3VyZWRTYWZlQXJl
YUluc2V0cygpIGNvbnN0IHsgcmV0dXJuIG1fdW5vYnNjdXJlZFNhZmVBcmVhSW5zZXRzOyB9CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRVbm9ic2N1cmVkU2FmZUFyZWFJbnNldHMoY29uc3Qg
RmxvYXRCb3hFeHRlbnQmKTsKIApAQCAtNzkxLDYgKzc5NCw3IEBAIHByaXZhdGU6CiAKICAgICBm
bG9hdCBtX3RvcENvbnRlbnRJbnNldCB7IDAgfTsKICAgICBGbG9hdEJveEV4dGVudCBtX29ic2N1
cmVkSW5zZXRzOworICAgIEZsb2F0Qm94RXh0ZW50IG1fdW5vYnNjdXJlZENvbnRlbnRJbnNldHM7
CiAgICAgRmxvYXRCb3hFeHRlbnQgbV91bm9ic2N1cmVkU2FmZUFyZWFJbnNldHM7CiAgICAgRmxv
YXRCb3hFeHRlbnQgbV9mdWxsc2NyZWVuSW5zZXRzOwogICAgIFNlY29uZHMgbV9mdWxsc2NyZWVu
QXV0b0hpZGVEdXJhdGlvbiB7IDBfcyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllci5jcHAKaW5kZXggNmMyYTQyM2I2Nzc2ZmM5OTBmMGE3ZTBmMzQwNjYxYmNjZDBmMjM3ZC4u
ZjIxZmY0MTczMTI2NmQxZWQyODdmZDVkYmUyMmQzN2NkY2ExYTNiYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC0yNTUzLDYgKzI1NTMsMTEgQEAgdm9pZCBS
ZW5kZXJMYXllcjo6c2Nyb2xsUmVjdFRvVmlzaWJsZShjb25zdCBMYXlvdXRSZWN0JiBhYnNvbHV0
ZVJlY3QsIGJvb2wgaW5zaWQKICNlbHNlCiAgICAgICAgICAgICBMYXlvdXRSZWN0IHZpZXdSZWN0
ID0gZnJhbWVWaWV3LnVub2JzY3VyZWRDb250ZW50UmVjdCgpOwogI2VuZGlmCisgICAgICAgICAg
ICAvLyBFdmVuIHRob3VnaCBjb250ZW50IGluc2V0cyBkbyBub3QgcmVwcmVzZW50IGNvbnRlbnQs
IHdlIGNvbnNpZGVyIHRoZW0gYXMgcGFydCBvZiB0aGUgdmlzaWJsZSByZWN0CisgICAgICAgICAg
ICAvLyB0byBoYW5kbGUgdGhlIGNhc2Ugd2hlcmUgdGhlIHJlY3QgdG8gcmV2ZWFsIGlzIG91dHNp
ZGUgdGhlIGNvbnRlbnQsIGJ1dCB3aXRoaW4gdGhlIGluc2V0IGFyZWEuCisgICAgICAgICAgICBh
dXRvJiB1bm9ic2N1cmVkSW5zZXRzID0gcGFnZSgpLnVub2JzY3VyZWRDb250ZW50SW5zZXRzKCk7
CisgICAgICAgICAgICB2aWV3UmVjdC5leHBhbmQoeyB1bm9ic2N1cmVkSW5zZXRzLnRvcCgpLCB1
bm9ic2N1cmVkSW5zZXRzLnJpZ2h0KCksIHVub2JzY3VyZWRJbnNldHMuYm90dG9tKCksIHVub2Jz
Y3VyZWRJbnNldHMubGVmdCgpIH0pOworCiAgICAgICAgICAgICAvLyBNb3ZlIHRoZSB0YXJnZXQg
cmVjdCBpbnRvICJzY3JvbGxWaWV3IGNvbnRlbnRzIiBjb29yZGluYXRlcy4KICAgICAgICAgICAg
IExheW91dFJlY3QgdGFyZ2V0UmVjdCA9IGFic29sdXRlUmVjdDsKICAgICAgICAgICAgIHRhcmdl
dFJlY3QubW92ZSgwLCBmcmFtZVZpZXcuaGVhZGVySGVpZ2h0KCkpOwpAQCAtMjU5MSw3ICsyNTk2
LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlQ29tcG9zaXRpbmdMYXllcnNBZnRlclNjcm9s
bCgpCiAgICAgfQogfQogCi1MYXlvdXRSZWN0IFJlbmRlckxheWVyOjpnZXRSZWN0VG9FeHBvc2Uo
Y29uc3QgTGF5b3V0UmVjdCAmdmlzaWJsZVJlY3QsIGNvbnN0IExheW91dFJlY3QgJmV4cG9zZVJl
Y3QsIGJvb2wgaW5zaWRlRml4ZWQsIGNvbnN0IFNjcm9sbEFsaWdubWVudCYgYWxpZ25YLCBjb25z
dCBTY3JvbGxBbGlnbm1lbnQmIGFsaWduWSkgY29uc3QKK0xheW91dFJlY3QgUmVuZGVyTGF5ZXI6
OmdldFJlY3RUb0V4cG9zZShjb25zdCBMYXlvdXRSZWN0JiB2aXNpYmxlUmVjdCwgY29uc3QgTGF5
b3V0UmVjdCYgZXhwb3NlUmVjdCwgYm9vbCBpbnNpZGVGaXhlZCwgY29uc3QgU2Nyb2xsQWxpZ25t
ZW50JiBhbGlnblgsIGNvbnN0IFNjcm9sbEFsaWdubWVudCYgYWxpZ25ZKSBjb25zdAogewogICAg
IEZyYW1lVmlldyYgZnJhbWVWaWV3ID0gcmVuZGVyZXIoKS52aWV3KCkuZnJhbWVWaWV3KCk7CiAg
ICAgaWYgKHJlbmRlcmVyKCkuaXNSZW5kZXJWaWV3KCkgJiYgaW5zaWRlRml4ZWQpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Zpc2libGVDb250ZW50UmVjdFVwZGF0ZUluZm8u
Y3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mby5j
cHAKaW5kZXggMmVlOGQ5NmM0ZWEwY2MwZDM0YjIyMTYwZmNkYzEwYTA5ZTI2MDQzZS4uY2MyNTE0
ZTVkZThlNWI4OGVhMjAyNWQ1NjI5NDM3NTg4NzY0MThkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mby5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mby5jcHAKQEAgLTM3LDYg
KzM3LDcgQEAgdm9pZCBWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZvOjplbmNvZGUoSVBDOjpF
bmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewogICAgIGVuY29kZXIgPDwgbV9leHBvc2VkQ29udGVu
dFJlY3Q7CiAgICAgZW5jb2RlciA8PCBtX3Vub2JzY3VyZWRDb250ZW50UmVjdDsKKyAgICBlbmNv
ZGVyIDw8IG1fdW5vYnNjdXJlZENvbnRlbnRJbnNldHM7CiAgICAgZW5jb2RlciA8PCBtX3Vub2Jz
Y3VyZWRDb250ZW50UmVjdFJlc3BlY3RpbmdJbnB1dFZpZXdCb3VuZHM7CiAgICAgZW5jb2RlciA8
PCBtX3Vub2JzY3VyZWRSZWN0SW5TY3JvbGxWaWV3Q29vcmRpbmF0ZXM7CiAgICAgZW5jb2RlciA8
PCBtX2N1c3RvbUZpeGVkUG9zaXRpb25SZWN0OwpAQCAtNjEsNiArNjIsOCBAQCBib29sIFZpc2li
bGVDb250ZW50UmVjdFVwZGF0ZUluZm86OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIFZp
c2libGVDb250ZW50UgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShyZXN1bHQubV91bm9ic2N1cmVkQ29udGVudFJlY3QpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQubV91bm9ic2N1cmVkQ29udGVudElu
c2V0cykpCisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJl
c3VsdC5tX3Vub2JzY3VyZWRDb250ZW50UmVjdFJlc3BlY3RpbmdJbnB1dFZpZXdCb3VuZHMpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQubV91
bm9ic2N1cmVkUmVjdEluU2Nyb2xsVmlld0Nvb3JkaW5hdGVzKSkKQEAgLTExNCw2ICsxMTcsNyBA
QCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBWaXNpYmxlQ29u
dGVudFJlY3RVcGRhdGVJbmZvJiBpbmZvKQogCiAgICAgdHMuZHVtcFByb3BlcnR5KCJleHBvc2Vk
Q29udGVudFJlY3QiLCBpbmZvLmV4cG9zZWRDb250ZW50UmVjdCgpKTsKICAgICB0cy5kdW1wUHJv
cGVydHkoInVub2JzY3VyZWRDb250ZW50UmVjdCIsIGluZm8udW5vYnNjdXJlZENvbnRlbnRSZWN0
KCkpOworICAgIHRzLmR1bXBQcm9wZXJ0eSgidW5vYnNjdXJlZENvbnRlbnRJbnNldHMiLCBpbmZv
LnVub2JzY3VyZWRDb250ZW50SW5zZXRzKCkpOwogICAgIHRzLmR1bXBQcm9wZXJ0eSgidW5vYnNj
dXJlZENvbnRlbnRSZWN0UmVzcGVjdGluZ0lucHV0Vmlld0JvdW5kcyIsIGluZm8udW5vYnNjdXJl
ZENvbnRlbnRSZWN0UmVzcGVjdGluZ0lucHV0Vmlld0JvdW5kcygpKTsKICAgICB0cy5kdW1wUHJv
cGVydHkoInVub2JzY3VyZWRSZWN0SW5TY3JvbGxWaWV3Q29vcmRpbmF0ZXMiLCBpbmZvLnVub2Jz
Y3VyZWRSZWN0SW5TY3JvbGxWaWV3Q29vcmRpbmF0ZXMoKSk7CiAgICAgdHMuZHVtcFByb3BlcnR5
KCJjdXN0b21GaXhlZFBvc2l0aW9uUmVjdCIsIGluZm8uY3VzdG9tRml4ZWRQb3NpdGlvblJlY3Qo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9WaXNpYmxlQ29udGVudFJlY3RV
cGRhdGVJbmZvLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9WaXNpYmxlQ29udGVudFJlY3RVcGRh
dGVJbmZvLmgKaW5kZXggOTFjMTgyMmE3NGFjZGVmODkwZmU1NjEyMDVmZDFiYTg3ZDUzM2VjNC4u
NmVkNzkxOTY1NzNhMDVkMjNiMmY4YWNiNjI3YmI2YWIwNDg3YzdhNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mby5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1Zpc2libGVDb250ZW50UmVjdFVwZGF0ZUluZm8uaApAQCAtNDUs
OSArNDUsMTAgQEAgY2xhc3MgVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mbyB7CiBwdWJsaWM6
CiAgICAgVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mbygpID0gZGVmYXVsdDsKIAotICAgIFZp
c2libGVDb250ZW50UmVjdFVwZGF0ZUluZm8oY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBleHBv
c2VkQ29udGVudFJlY3QsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgdW5vYnNjdXJlZENvbnRl
bnRSZWN0LCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHVub2JzY3VyZWRSZWN0SW5TY3JvbGxW
aWV3Q29vcmRpbmF0ZXMsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgdW5vYnNjdXJlZENvbnRl
bnRSZWN0UmVzcGVjdGluZ0lucHV0Vmlld0JvdW5kcywgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0
JiBjdXN0b21GaXhlZFBvc2l0aW9uUmVjdCwgY29uc3QgV2ViQ29yZTo6RmxvYXRCb3hFeHRlbnQm
IG9ic2N1cmVkSW5zZXRzLCBjb25zdCBXZWJDb3JlOjpGbG9hdEJveEV4dGVudCYgdW5vYnNjdXJl
ZFNhZmVBcmVhSW5zZXRzLCBkb3VibGUgc2NhbGUsIGJvb2wgaW5TdGFibGVTdGF0ZSwgYm9vbCBp
c0ZpcnN0VXBkYXRlRm9yTmV3Vmlld1NpemUsIGJvb2wgaXNDaGFuZ2luZ09ic2N1cmVkSW5zZXRz
SW50ZXJhY3RpdmVseSwgYm9vbCBhbGxvd1Nocmlua1RvRml0LCBib29sIGVuY2xvc2VkSW5TY3Jv
bGxhYmxlQW5jZXN0b3JWaWV3LCBNb25vdG9uaWNUaW1lIHRpbWVzdGFtcCwgZG91YmxlIGhvcml6
b250YWxWZWxvY2l0eSwgZG91YmxlIHZlcnRpY2FsVmVsb2NpdHksIGRvdWJsZSBzY2FsZUNoYW5n
ZVJhdGUsIHVpbnQ2NF90IGxhc3RMYXllclRyZWVUcmFuc2FjdGlvbklkKQorICAgIFZpc2libGVD
b250ZW50UmVjdFVwZGF0ZUluZm8oY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBleHBvc2VkQ29u
dGVudFJlY3QsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgdW5vYnNjdXJlZENvbnRlbnRSZWN0
LCBjb25zdCBXZWJDb3JlOjpGbG9hdEJveEV4dGVudCYgdW5vYnNjdXJlZENvbnRlbnRJbnNldHMs
IGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgdW5vYnNjdXJlZFJlY3RJblNjcm9sbFZpZXdDb29y
ZGluYXRlcywgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiB1bm9ic2N1cmVkQ29udGVudFJlY3RS
ZXNwZWN0aW5nSW5wdXRWaWV3Qm91bmRzLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGN1c3Rv
bUZpeGVkUG9zaXRpb25SZWN0LCBjb25zdCBXZWJDb3JlOjpGbG9hdEJveEV4dGVudCYgb2JzY3Vy
ZWRJbnNldHMsIGNvbnN0IFdlYkNvcmU6OkZsb2F0Qm94RXh0ZW50JiB1bm9ic2N1cmVkU2FmZUFy
ZWFJbnNldHMsIGRvdWJsZSBzY2FsZSwgYm9vbCBpblN0YWJsZVN0YXRlLCBib29sIGlzRmlyc3RV
cGRhdGVGb3JOZXdWaWV3U2l6ZSwgYm9vbCBpc0NoYW5naW5nT2JzY3VyZWRJbnNldHNJbnRlcmFj
dGl2ZWx5LCBib29sIGFsbG93U2hyaW5rVG9GaXQsIGJvb2wgZW5jbG9zZWRJblNjcm9sbGFibGVB
bmNlc3RvclZpZXcsIE1vbm90b25pY1RpbWUgdGltZXN0YW1wLCBkb3VibGUgaG9yaXpvbnRhbFZl
bG9jaXR5LCBkb3VibGUgdmVydGljYWxWZWxvY2l0eSwgZG91YmxlIHNjYWxlQ2hhbmdlUmF0ZSwg
dWludDY0X3QgbGFzdExheWVyVHJlZVRyYW5zYWN0aW9uSWQpCiAgICAgICAgIDogbV9leHBvc2Vk
Q29udGVudFJlY3QoZXhwb3NlZENvbnRlbnRSZWN0KQogICAgICAgICAsIG1fdW5vYnNjdXJlZENv
bnRlbnRSZWN0KHVub2JzY3VyZWRDb250ZW50UmVjdCkKKyAgICAgICAgLCBtX3Vub2JzY3VyZWRD
b250ZW50SW5zZXRzKHVub2JzY3VyZWRDb250ZW50SW5zZXRzKQogICAgICAgICAsIG1fdW5vYnNj
dXJlZENvbnRlbnRSZWN0UmVzcGVjdGluZ0lucHV0Vmlld0JvdW5kcyh1bm9ic2N1cmVkQ29udGVu
dFJlY3RSZXNwZWN0aW5nSW5wdXRWaWV3Qm91bmRzKQogICAgICAgICAsIG1fdW5vYnNjdXJlZFJl
Y3RJblNjcm9sbFZpZXdDb29yZGluYXRlcyh1bm9ic2N1cmVkUmVjdEluU2Nyb2xsVmlld0Nvb3Jk
aW5hdGVzKQogICAgICAgICAsIG1fY3VzdG9tRml4ZWRQb3NpdGlvblJlY3QoY3VzdG9tRml4ZWRQ
b3NpdGlvblJlY3QpCkBAIC02OSw2ICs3MCw3IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFdlYkNv
cmU6OkZsb2F0UmVjdCYgZXhwb3NlZENvbnRlbnRSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9leHBv
c2VkQ29udGVudFJlY3Q7IH0KICAgICBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHVub2JzY3Vy
ZWRDb250ZW50UmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fdW5vYnNjdXJlZENvbnRlbnRSZWN0OyB9
CisgICAgY29uc3QgV2ViQ29yZTo6RmxvYXRCb3hFeHRlbnQmIHVub2JzY3VyZWRDb250ZW50SW5z
ZXRzKCkgY29uc3QgeyByZXR1cm4gbV91bm9ic2N1cmVkQ29udGVudEluc2V0czsgfQogICAgIGNv
bnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgdW5vYnNjdXJlZFJlY3RJblNjcm9sbFZpZXdDb29yZGlu
YXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fdW5vYnNjdXJlZFJlY3RJblNjcm9sbFZpZXdDb29yZGlu
YXRlczsgfQogICAgIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgdW5vYnNjdXJlZENvbnRlbnRS
ZWN0UmVzcGVjdGluZ0lucHV0Vmlld0JvdW5kcygpIGNvbnN0IHsgcmV0dXJuIG1fdW5vYnNjdXJl
ZENvbnRlbnRSZWN0UmVzcGVjdGluZ0lucHV0Vmlld0JvdW5kczsgfQogICAgIGNvbnN0IFdlYkNv
cmU6OkZsb2F0UmVjdCYgY3VzdG9tRml4ZWRQb3NpdGlvblJlY3QoKSBjb25zdCB7IHJldHVybiBt
X2N1c3RvbUZpeGVkUG9zaXRpb25SZWN0OyB9CkBAIC05Nyw2ICs5OSw3IEBAIHB1YmxpYzoKIHBy
aXZhdGU6CiAgICAgV2ViQ29yZTo6RmxvYXRSZWN0IG1fZXhwb3NlZENvbnRlbnRSZWN0OwogICAg
IFdlYkNvcmU6OkZsb2F0UmVjdCBtX3Vub2JzY3VyZWRDb250ZW50UmVjdDsKKyAgICBXZWJDb3Jl
OjpGbG9hdEJveEV4dGVudCBtX3Vub2JzY3VyZWRDb250ZW50SW5zZXRzOwogICAgIFdlYkNvcmU6
OkZsb2F0UmVjdCBtX3Vub2JzY3VyZWRDb250ZW50UmVjdFJlc3BlY3RpbmdJbnB1dFZpZXdCb3Vu
ZHM7CiAgICAgV2ViQ29yZTo6RmxvYXRSZWN0IG1fdW5vYnNjdXJlZFJlY3RJblNjcm9sbFZpZXdD
b29yZGluYXRlczsKICAgICBXZWJDb3JlOjpGbG9hdFJlY3QgbV9jdXN0b21GaXhlZFBvc2l0aW9u
UmVjdDsgLy8gV2hlbiB2aXN1YWwgdmlld3BvcnRzIGFyZSBlbmFibGVkLCB0aGlzIGlzIHRoZSBs
YXlvdXQgdmlld3BvcnQuCkBAIC0xMjEsNiArMTI0LDcgQEAgaW5saW5lIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZvJiBhLCBjb25zdCBWaXNpYmxlQ29u
dGUKICAgICByZXR1cm4gYS5zY2FsZSgpID09IGIuc2NhbGUoKQogICAgICAgICAmJiBhLmV4cG9z
ZWRDb250ZW50UmVjdCgpID09IGIuZXhwb3NlZENvbnRlbnRSZWN0KCkKICAgICAgICAgJiYgYS51
bm9ic2N1cmVkQ29udGVudFJlY3QoKSA9PSBiLnVub2JzY3VyZWRDb250ZW50UmVjdCgpCisgICAg
ICAgICYmIGEudW5vYnNjdXJlZENvbnRlbnRJbnNldHMoKSA9PSBiLnVub2JzY3VyZWRDb250ZW50
SW5zZXRzKCkKICAgICAgICAgJiYgYS51bm9ic2N1cmVkQ29udGVudFJlY3RSZXNwZWN0aW5nSW5w
dXRWaWV3Qm91bmRzKCkgPT0gYi51bm9ic2N1cmVkQ29udGVudFJlY3RSZXNwZWN0aW5nSW5wdXRW
aWV3Qm91bmRzKCkKICAgICAgICAgJiYgYS5jdXN0b21GaXhlZFBvc2l0aW9uUmVjdCgpID09IGIu
Y3VzdG9tRml4ZWRQb3NpdGlvblJlY3QoKQogICAgICAgICAmJiBhLm9ic2N1cmVkSW5zZXRzKCkg
PT0gYi5vYnNjdXJlZEluc2V0cygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlldy5tbQppbmRleCA0YTQ0MWIwY2RkOGE2ZDdkMTVkOGYxYTFmM2FlMDVmYzhi
NjFjYjU2Li41ZWI5MDEzZDQ1YTNkYzUzNWY1YmE2ODdmOGE2YTFiZjEwMzlkZjY1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTE3MzQs
NyArMTczNCw3IEBAIC0gKFVJRWRnZUluc2V0cylfY29tcHV0ZWRPYnNjdXJlZEluc2V0CiAgICAg
aWYgKF9oYXZlU2V0T2JzY3VyZWRJbnNldHMpCiAgICAgICAgIHJldHVybiBfb2JzY3VyZWRJbnNl
dHM7CiAKLSNpZiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDAKKyNp
ZiBQTEFURk9STShJT1MpCiAgICAgaWYgKHNlbGYuX3NhZmVBcmVhU2hvdWxkQWZmZWN0T2JzY3Vy
ZWRJbnNldHMpCiAgICAgICAgIHJldHVybiBVSUVkZ2VJbnNldHNBZGQoVUlFZGdlSW5zZXRzWmVy
bywgc2VsZi5fc2Nyb2xsVmlld1N5c3RlbUNvbnRlbnRJbnNldCwgc2VsZi5fZWZmZWN0aXZlT2Jz
Y3VyZWRJbnNldEVkZ2VzQWZmZWN0ZWRCeVNhZmVBcmVhKTsKICNlbmRpZgpAQCAtMTc0OSw3ICsx
NzQ5LDcgQEAgLSAoVUlFZGdlSW5zZXRzKV9jb21wdXRlZENvbnRlbnRJbnNldAogCiAgICAgVUlF
ZGdlSW5zZXRzIGluc2V0cyA9IFtfc2Nyb2xsVmlldyBjb250ZW50SW5zZXRdOwogCi0jaWYgX19J
UEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwCisjaWYgUExBVEZPUk0oSU9T
KQogICAgIGlmIChzZWxmLl9zYWZlQXJlYVNob3VsZEFmZmVjdE9ic2N1cmVkSW5zZXRzKQogICAg
ICAgICBpbnNldHMgPSBVSUVkZ2VJbnNldHNBZGQoaW5zZXRzLCBzZWxmLl9zY3JvbGxWaWV3U3lz
dGVtQ29udGVudEluc2V0LCBzZWxmLl9lZmZlY3RpdmVPYnNjdXJlZEluc2V0RWRnZXNBZmZlY3Rl
ZEJ5U2FmZUFyZWEpOwogI2VuZGlmCkBAIC0xNzYyLDcgKzE3NjIsNyBAQCAtIChVSUVkZ2VJbnNl
dHMpX2NvbXB1dGVkVW5vYnNjdXJlZFNhZmVBcmVhSW5zZXQKICAgICBpZiAoX2hhdmVTZXRVbm9i
c2N1cmVkU2FmZUFyZWFJbnNldHMpCiAgICAgICAgIHJldHVybiBfdW5vYnNjdXJlZFNhZmVBcmVh
SW5zZXRzOwogCi0jaWYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAw
CisjaWYgUExBVEZPUk0oSU9TKQogICAgIGlmICghc2VsZi5fc2FmZUFyZWFTaG91bGRBZmZlY3RP
YnNjdXJlZEluc2V0cykKICAgICAgICAgcmV0dXJuIHNlbGYuc2FmZUFyZWFJbnNldHM7CiAjZW5k
aWYKQEAgLTI5NzUsNiArMjk3NSwyMyBAQCAtICh2b2lkKV91cGRhdGVWaXNpYmxlQ29udGVudFJl
Y3RzCiAgICAgQ0dSZWN0IHVub2JzY3VyZWRSZWN0SW5Db250ZW50Q29vcmRpbmF0ZXMgPSBfZnJv
emVuVW5vYnNjdXJlZENvbnRlbnRSZWN0ID8gX2Zyb3plblVub2JzY3VyZWRDb250ZW50UmVjdC52
YWx1ZSgpIDogW3NlbGYgY29udmVydFJlY3Q6dW5vYnNjdXJlZFJlY3QgdG9WaWV3Ol9jb250ZW50
Vmlldy5nZXQoKV07CiAgICAgdW5vYnNjdXJlZFJlY3RJbkNvbnRlbnRDb29yZGluYXRlcyA9IENH
UmVjdEludGVyc2VjdGlvbih1bm9ic2N1cmVkUmVjdEluQ29udGVudENvb3JkaW5hdGVzLCBbc2Vs
ZiBfY29udGVudEJvdW5kc0V4dGVuZGVkRm9yUnViYmVyYmFuZGluZ1dpdGhTY2FsZTpzY2FsZUZh
Y3Rvcl0pOwogCisgICAgYXV0byBzY3JvbGxWaWV3SW5zZXRzID0gW19zY3JvbGxWaWV3IGNvbnRl
bnRJbnNldF07CisgICAgYXV0byBzY3JvbGxWaWV3T3JpZ2luSW5jbHVkaW5nSW5zZXQgPSBVSUVk
Z2VJbnNldHNJbnNldFJlY3QoW19zY3JvbGxWaWV3IGJvdW5kc10sIGNvbXB1dGVkQ29udGVudElu
c2V0VW5hZGp1c3RlZEZvcktleWJvYXJkKS5vcmlnaW47CisgICAgYXV0byBtYXhpbXVtVmVydGlj
YWxTY3JvbGxFeHRlbnRXaXRob3V0UmV2ZWFsaW5nQm90dG9tQ29udGVudEluc2V0ID0gW19zY3Jv
bGxWaWV3IGNvbnRlbnRTaXplXS5oZWlnaHQgLSBDR1JlY3RHZXRIZWlnaHQoW19zY3JvbGxWaWV3
IGJvdW5kc10pOworICAgIGF1dG8gbWF4aW11bUhvcml6b250YWxTY3JvbGxFeHRlbnRXaXRob3V0
UmV2ZWFsaW5nUmlnaHRDb250ZW50SW5zZXQgPSBbX3Njcm9sbFZpZXcgY29udGVudFNpemVdLndp
ZHRoIC0gQ0dSZWN0R2V0V2lkdGgoW19zY3JvbGxWaWV3IGJvdW5kc10pOworICAgIGF1dG8gdW5v
YnNjdXJlZENvbnRlbnRJbnNldHMgPSBVSUVkZ2VJbnNldHNaZXJvOworICAgIGlmIChzY3JvbGxW
aWV3SW5zZXRzLmxlZnQgPiAwICYmIHNjcm9sbFZpZXdPcmlnaW5JbmNsdWRpbmdJbnNldC54IDwg
MCkKKyAgICAgICAgdW5vYnNjdXJlZENvbnRlbnRJbnNldHMubGVmdCA9IHN0ZDo6bWluKC1zY3Jv
bGxWaWV3T3JpZ2luSW5jbHVkaW5nSW5zZXQueCwgc2Nyb2xsVmlld0luc2V0cy5sZWZ0KSAvIHNj
YWxlRmFjdG9yOworCisgICAgaWYgKHNjcm9sbFZpZXdJbnNldHMudG9wID4gMCAmJiBzY3JvbGxW
aWV3T3JpZ2luSW5jbHVkaW5nSW5zZXQueSA8IDApCisgICAgICAgIHVub2JzY3VyZWRDb250ZW50
SW5zZXRzLnRvcCA9IHN0ZDo6bWluKC1zY3JvbGxWaWV3T3JpZ2luSW5jbHVkaW5nSW5zZXQueSwg
c2Nyb2xsVmlld0luc2V0cy50b3ApIC8gc2NhbGVGYWN0b3I7CisKKyAgICBpZiAoc2Nyb2xsVmll
d0luc2V0cy5yaWdodCA+IDAgJiYgc2Nyb2xsVmlld09yaWdpbkluY2x1ZGluZ0luc2V0LnggPiBt
YXhpbXVtSG9yaXpvbnRhbFNjcm9sbEV4dGVudFdpdGhvdXRSZXZlYWxpbmdSaWdodENvbnRlbnRJ
bnNldCkKKyAgICAgICAgdW5vYnNjdXJlZENvbnRlbnRJbnNldHMucmlnaHQgPSBzdGQ6Om1pbihz
Y3JvbGxWaWV3T3JpZ2luSW5jbHVkaW5nSW5zZXQueCAtIG1heGltdW1Ib3Jpem9udGFsU2Nyb2xs
RXh0ZW50V2l0aG91dFJldmVhbGluZ1JpZ2h0Q29udGVudEluc2V0LCBzY3JvbGxWaWV3SW5zZXRz
LnJpZ2h0KSAvIHNjYWxlRmFjdG9yOworCisgICAgaWYgKHNjcm9sbFZpZXdJbnNldHMuYm90dG9t
ID4gMCAmJiBzY3JvbGxWaWV3T3JpZ2luSW5jbHVkaW5nSW5zZXQueSA+IG1heGltdW1WZXJ0aWNh
bFNjcm9sbEV4dGVudFdpdGhvdXRSZXZlYWxpbmdCb3R0b21Db250ZW50SW5zZXQpCisgICAgICAg
IHVub2JzY3VyZWRDb250ZW50SW5zZXRzLmJvdHRvbSA9IHN0ZDo6bWluKHNjcm9sbFZpZXdPcmln
aW5JbmNsdWRpbmdJbnNldC55IC0gbWF4aW11bVZlcnRpY2FsU2Nyb2xsRXh0ZW50V2l0aG91dFJl
dmVhbGluZ0JvdHRvbUNvbnRlbnRJbnNldCwgc2Nyb2xsVmlld0luc2V0cy5ib3R0b20pIC8gc2Nh
bGVGYWN0b3I7CisKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKSAmJiBFTkFCTEUoQVNZTkNf
U0NST0xMSU5HKQogICAgIGlmIChpblN0YWJsZVN0YXRlKSB7CiAgICAgICAgIFdlYktpdDo6UmVt
b3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eSogY29vcmRpbmF0b3IgPSBfcGFnZS0+c2Nyb2xs
aW5nQ29vcmRpbmF0b3JQcm94eSgpOwpAQCAtMjk5NCw2ICszMDExLDcgQEAgLSAodm9pZClfdXBk
YXRlVmlzaWJsZUNvbnRlbnRSZWN0cwogCiAgICAgW19jb250ZW50VmlldyBkaWRVcGRhdGVWaXNp
YmxlUmVjdDp2aXNpYmxlUmVjdEluQ29udGVudENvb3JkaW5hdGVzCiAgICAgICAgIHVub2JzY3Vy
ZWRSZWN0OnVub2JzY3VyZWRSZWN0SW5Db250ZW50Q29vcmRpbmF0ZXMKKyAgICAgICAgdW5vYnNj
dXJlZEluc2V0czp1bm9ic2N1cmVkQ29udGVudEluc2V0cwogICAgICAgICB1bm9ic2N1cmVkUmVj
dEluU2Nyb2xsVmlld0Nvb3JkaW5hdGVzOnVub2JzY3VyZWRSZWN0CiAgICAgICAgIG9ic2N1cmVk
SW5zZXRzOl9vYnNjdXJlZEluc2V0cwogICAgICAgICB1bm9ic2N1cmVkU2FmZUFyZWFJbnNldHM6
W3NlbGYgX2NvbXB1dGVkVW5vYnNjdXJlZFNhZmVBcmVhSW5zZXRdCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcuaAppbmRleCBhMDYwN2UzZDFhYmM3NTI4OTgxNzk5
MWE0YjJlNjFlZjgyOTJjMTY5Li40NjNhOTI3YmQ4ZjQ3MDY0OTUzYmRkZjdlOTY3YTA1ZjNlMzlk
Mjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmll
dy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3LmgKQEAg
LTcxLDYgKzcxLDcgQEAgY2xhc3MgV2ViUHJvY2Vzc1Bvb2w7CiAKIC0gKHZvaWQpZGlkVXBkYXRl
VmlzaWJsZVJlY3Q6KENHUmVjdCl2aXNpYmxlUmVjdAogICAgIHVub2JzY3VyZWRSZWN0OihDR1Jl
Y3QpdW5vYnNjdXJlZFJlY3QKKyAgICB1bm9ic2N1cmVkSW5zZXRzOihVSUVkZ2VJbnNldHMpdW5v
YnNjdXJlZEluc2V0cwogICAgIHVub2JzY3VyZWRSZWN0SW5TY3JvbGxWaWV3Q29vcmRpbmF0ZXM6
KENHUmVjdCl1bm9ic2N1cmVkUmVjdEluU2Nyb2xsVmlld0Nvb3JkaW5hdGVzCiAgICAgb2JzY3Vy
ZWRJbnNldHM6KFVJRWRnZUluc2V0cylvYnNjdXJlZEluc2V0cwogICAgIHVub2JzY3VyZWRTYWZl
QXJlYUluc2V0czooVUlFZGdlSW5zZXRzKXVub2JzY3VyZWRTYWZlQXJlYUluc2V0cwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbQppbmRleCBjZWQ4NWU4Yzk5
MThhN2I1NjcxNjdkOTdhZTg4ZGI2MGZhZmFmM2E1Li4yMDJhOTcwNGJjM2FmZjc0ZWVhYWRkZWNi
N2ZhMGI0MzAxNDEwOTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V0tDb250ZW50Vmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlldy5tbQpAQCAtMzY1LDYgKzM2NSwxMSBAQCAtICh2b2lkKV9kaWRFeGl0U3RhYmxlU3Rh
dGUKICAgICBbX3RleHRTZWxlY3Rpb25Bc3Npc3RhbnQgZGVhY3RpdmF0ZVNlbGVjdGlvbl07CiB9
CiAKK3N0YXRpYyBXZWJDb3JlOjpGbG9hdEJveEV4dGVudCBmbG9hdEJveEV4dGVudChVSUVkZ2VJ
bnNldHMgaW5zZXRzKQoreworICAgIHJldHVybiBXZWJDb3JlOjpGbG9hdEJveEV4dGVudChpbnNl
dHMudG9wLCBpbnNldHMucmlnaHQsIGluc2V0cy5ib3R0b20sIGluc2V0cy5sZWZ0KTsKK30KKwog
LSAoQ0dSZWN0KV9jb21wdXRlVW5vYnNjdXJlZENvbnRlbnRSZWN0UmVzcGVjdGluZ0lucHV0Vmll
d0JvdW5kczooQ0dSZWN0KXVub2JzY3VyZWRDb250ZW50UmVjdCBpbnB1dFZpZXdCb3VuZHM6KENH
UmVjdClpbnB1dFZpZXdCb3VuZHMKIHsKICAgICAvLyBUaGUgaW5wdXQgdmlldyBib3VuZHMgYXJl
IGluIHdpbmRvdyBjb29yZGluYXRlcywgYnV0IHRoZSB1bm9ic2N1cmVkIHJlY3QgaXMgaW4gY29u
dGVudCBjb29yZGluYXRlcy4gQWNjb3VudCBmb3IgdGhpcyBieSBjb252ZXJ0aW5nIGlucHV0IHZp
ZXcgYm91bmRzIHRvIGNvbnRlbnQgY29vcmRpbmF0ZXMuCkBAIC0zNzYsNiArMzgxLDcgQEAgLSAo
Q0dSZWN0KV9jb21wdXRlVW5vYnNjdXJlZENvbnRlbnRSZWN0UmVzcGVjdGluZ0lucHV0Vmlld0Jv
dW5kczooQ0dSZWN0KXVub2JzY3UKIAogLSAodm9pZClkaWRVcGRhdGVWaXNpYmxlUmVjdDooQ0dS
ZWN0KXZpc2libGVDb250ZW50UmVjdAogICAgIHVub2JzY3VyZWRSZWN0OihDR1JlY3QpdW5vYnNj
dXJlZENvbnRlbnRSZWN0CisgICAgdW5vYnNjdXJlZEluc2V0czooVUlFZGdlSW5zZXRzKXVub2Jz
Y3VyZWRJbnNldHMKICAgICB1bm9ic2N1cmVkUmVjdEluU2Nyb2xsVmlld0Nvb3JkaW5hdGVzOihD
R1JlY3QpdW5vYnNjdXJlZFJlY3RJblNjcm9sbFZpZXdDb29yZGluYXRlcwogICAgIG9ic2N1cmVk
SW5zZXRzOihVSUVkZ2VJbnNldHMpb2JzY3VyZWRJbnNldHMKICAgICB1bm9ic2N1cmVkU2FmZUFy
ZWFJbnNldHM6KFVJRWRnZUluc2V0cyl1bm9ic2N1cmVkU2FmZUFyZWFJbnNldHMKQEAgLTQwNCwx
MSArNDEwLDEyIEBAIC0gKHZvaWQpZGlkVXBkYXRlVmlzaWJsZVJlY3Q6KENHUmVjdCl2aXNpYmxl
Q29udGVudFJlY3QKICAgICBXZWJLaXQ6OlZpc2libGVDb250ZW50UmVjdFVwZGF0ZUluZm8gdmlz
aWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mbygKICAgICAgICAgdmlzaWJsZUNvbnRlbnRSZWN0LAog
ICAgICAgICB1bm9ic2N1cmVkQ29udGVudFJlY3QsCisgICAgICAgIGZsb2F0Qm94RXh0ZW50KHVu
b2JzY3VyZWRJbnNldHMpLAogICAgICAgICB1bm9ic2N1cmVkUmVjdEluU2Nyb2xsVmlld0Nvb3Jk
aW5hdGVzLAogICAgICAgICB1bm9ic2N1cmVkQ29udGVudFJlY3RSZXNwZWN0aW5nSW5wdXRWaWV3
Qm91bmRzLAogICAgICAgICBmaXhlZFBvc2l0aW9uUmVjdEZvckxheW91dCwKLSAgICAgICAgV2Vi
Q29yZTo6RmxvYXRCb3hFeHRlbnQob2JzY3VyZWRJbnNldHMudG9wLCBvYnNjdXJlZEluc2V0cy5y
aWdodCwgb2JzY3VyZWRJbnNldHMuYm90dG9tLCBvYnNjdXJlZEluc2V0cy5sZWZ0KSwKLSAgICAg
ICAgV2ViQ29yZTo6RmxvYXRCb3hFeHRlbnQodW5vYnNjdXJlZFNhZmVBcmVhSW5zZXRzLnRvcCwg
dW5vYnNjdXJlZFNhZmVBcmVhSW5zZXRzLnJpZ2h0LCB1bm9ic2N1cmVkU2FmZUFyZWFJbnNldHMu
Ym90dG9tLCB1bm9ic2N1cmVkU2FmZUFyZWFJbnNldHMubGVmdCksCisgICAgICAgIGZsb2F0Qm94
RXh0ZW50KG9ic2N1cmVkSW5zZXRzKSwKKyAgICAgICAgZmxvYXRCb3hFeHRlbnQodW5vYnNjdXJl
ZFNhZmVBcmVhSW5zZXRzKSwKICAgICAgICAgem9vbVNjYWxlLAogICAgICAgICBpc1N0YWJsZVN0
YXRlLAogICAgICAgICBfc2l6ZUNoYW5nZWRTaW5jZUxhc3RWaXNpYmxlQ29udGVudFJlY3RVcGRh
dGUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2Vi
UGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdl
SU9TLm1tCmluZGV4IDA2Njk2YzA2NWNjNzc0OGMxY2JkZTAwNTQ1ZTM3MzY0ZWE2OTRlNTMuLjU0
MWJjOTk2MGE2NWZkMmQwYzM3ZTUyMDYwNDVjZjE2ZjI1ZWM3MDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC0zMDE2LDYg
KzMwMTYsNyBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVZpc2libGVDb250ZW50UmVjdHMoY29uc3Qg
VmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mbyYgdmlzaQogICAgICAgICB2aWV3cG9ydENvbmZp
Z3VyYXRpb25DaGFuZ2VkKCk7CiAKICAgICBmcmFtZVZpZXcuc2V0VW5vYnNjdXJlZENvbnRlbnRT
aXplKHZpc2libGVDb250ZW50UmVjdFVwZGF0ZUluZm8udW5vYnNjdXJlZENvbnRlbnRSZWN0KCku
c2l6ZSgpKTsKKyAgICBtX3BhZ2UtPnNldFVub2JzY3VyZWRDb250ZW50SW5zZXRzKHZpc2libGVD
b250ZW50UmVjdFVwZGF0ZUluZm8udW5vYnNjdXJlZENvbnRlbnRJbnNldHMoKSk7CiAgICAgbV9w
YWdlLT5zZXRPYnNjdXJlZEluc2V0cyh2aXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZvLm9ic2N1
cmVkSW5zZXRzKCkpOwogICAgIG1fcGFnZS0+c2V0VW5vYnNjdXJlZFNhZmVBcmVhSW5zZXRzKHZp
c2libGVDb250ZW50UmVjdFVwZGF0ZUluZm8udW5vYnNjdXJlZFNhZmVBcmVhSW5zZXRzKCkpOwog
ICAgIG1fcGFnZS0+c2V0RW5jbG9zZWRJblNjcm9sbGFibGVBbmNlc3RvclZpZXcodmlzaWJsZUNv
bnRlbnRSZWN0VXBkYXRlSW5mby5lbmNsb3NlZEluU2Nyb2xsYWJsZUFuY2VzdG9yVmlldygpKTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAwNzdk
MzkzMjk0YjUzYmVlNzhhM2M0OTRlODY1NWQ3NmQ5ODI5MGQ4Li4zNjQ0N2I5ZDM0Y2JjNGUxNGVi
NjQzOTFiZGI2M2IxNTk1NzZkZDY0IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTktMDEtMTcgIFdlbnNvbiBIc2ll
aCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gQ29udGVudCBvZmZz
ZXQganVtcHMgZXJyYXRpY2FsbHkgd2hlbiBhdXRvc2Nyb2xsaW5nIG5lYXIgc2Nyb2xsIHZpZXcg
Y29udGVudCBpbnNldCBhcmVhcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTkzNDk0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80Njg1OTYyNz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBuZXcg
dGVzdCBvcHRpb24gdG8gYWRkIGEgdG9wIGNvbnRlbnQgaW5zZXQgdG8gdGhlIHRlc3QgcnVubmVy
J3MgV0tXZWJWaWV3J3Mgc2Nyb2xsIHZpZXcsIGFuZCBhdXRvbWF0aWNhbGx5CisgICAgICAgIHNj
cm9sbCB0byByZXZlYWwgdGhpcyB0b3AgY29udGVudCBpbnNldCBhcmVhIHdoZW4gYmVnaW5uaW5n
IHRoZSB0ZXN0IChpLmUuLCBzY3JvbGwgdG8gKDAsIC10b3BDb250ZW50SW5zZXQpKS4KKworICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW06CisgICAg
ICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcjo6Y29udGVudE9mZnNldFggY29uc3QpOgorICAg
ICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXI6OmNvbnRlbnRPZmZzZXRZIGNvbnN0KToKKyAg
ICAgICAgKiBUZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9CaW5kaW5ncy9VSVNjcmlw
dENvbnRyb2xsZXIuaWRsOgorICAgICAgICAqIFRlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250
ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJv
bGxlcjo6Y29udGVudE9mZnNldFggY29uc3QpOgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRy
b2xsZXI6OmNvbnRlbnRPZmZzZXRZIGNvbnN0KToKKyAgICAgICAgKiBUZXN0UnVubmVyU2hhcmVk
L1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuaDoKKworICAgICAgICBBbHNvIGFk
ZCBuZXcgVUlTY3JpcHRDb250cm9sbGVyIG1ldGhvZHMgdG8gYXNrIGZvciB0aGUgY29udGVudCBv
ZmZzZXQgb2YgdGhlIHBsYXRmb3JtIHNjcm9sbCB2aWV3LgorCisgICAgICAgICogV2ViS2l0VGVz
dFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OnVwZGF0ZVRlc3RPcHRp
b25zRnJvbVRlc3RIZWFkZXIpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdE9wdGlv
bnMuaDoKKyAgICAgICAgKFdUUjo6VGVzdE9wdGlvbnM6Omhhc1NhbWVJbml0aWFsaXphdGlvbk9w
dGlvbnMgY29uc3QpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvaW9zL1Rlc3RDb250cm9s
bGVySU9TLm1tOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1SZXNldFN0
YXRlVG9Db25zaXN0ZW50VmFsdWVzKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2lvcy9V
SVNjcmlwdENvbnRyb2xsZXJJT1MubW06CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxl
cjo6Y29udGVudE9mZnNldFggY29uc3QpOgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xs
ZXI6OmNvbnRlbnRPZmZzZXRZIGNvbnN0KToKKwogMjAxOS0wMS0xNiAgWW91ZW5uIEZhYmxldCAg
PHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGEgbmV3IFNQSSBmb3IgY29udHJvbGxp
bmcgZ2V0VXNlck1lZGlhCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9pb3MvVUlT
Y3JpcHRDb250cm9sbGVySU9TLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL1VJU2NyaXB0
Q29udHJvbGxlcklPUy5tbQppbmRleCAzOTgwMzRhNGMyMGUzOWFjYWVmMjY5Y2U5NDU4OTQ4NDgy
NGMyYjk2Li44YTExMjVmNGVmOTE5ODQ1MjY2OWUwNDE5YzU4OWE4OTAyZThhNjcwIDEwMDY0NAot
LS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0KQEAg
LTIxMSw2ICsyMTEsMTYgQEAgc3RhdGljIENHUG9pbnQgY29udGVudE9mZnNldEJvdW5kZWRJblZh
bGlkUmFuZ2UoVUlTY3JvbGxWaWV3ICpzY3JvbGxWaWV3LCBDR1BvaW4KICAgICByZXR1cm4gY29u
dGVudE9mZnNldDsKIH0KIAorZG91YmxlIFVJU2NyaXB0Q29udHJvbGxlcjo6Y29udGVudE9mZnNl
dFgoKSBjb25zdAoreworICAgIHJldHVybiBbZ1dlYlNjcm9sbFZpZXcgY29udGVudE9mZnNldF0u
eDsKK30KKworZG91YmxlIFVJU2NyaXB0Q29udHJvbGxlcjo6Y29udGVudE9mZnNldFkoKSBjb25z
dAoreworICAgIHJldHVybiBbZ1dlYlNjcm9sbFZpZXcgY29udGVudE9mZnNldF0ueTsKK30KKwog
dm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OnNjcm9sbFRvT2Zmc2V0KGxvbmcgeCwgbG9uZyB5KQog
ewogICAgIFtnV2ViU2Nyb2xsVmlldyBzZXRDb250ZW50T2Zmc2V0OmNvbnRlbnRPZmZzZXRCb3Vu
ZGVkSW5WYWxpZFJhbmdlKGdXZWJTY3JvbGxWaWV3LCBDR1BvaW50TWFrZSh4LCB5KSkgYW5pbWF0
ZWQ6WUVTXTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250
ZXh0L0JpbmRpbmdzL1VJU2NyaXB0Q29udHJvbGxlci5pZGwgYi9Ub29scy9UZXN0UnVubmVyU2hh
cmVkL1VJU2NyaXB0Q29udGV4dC9CaW5kaW5ncy9VSVNjcmlwdENvbnRyb2xsZXIuaWRsCmluZGV4
IDdkMjA0ZTg1NzI2YTg2ZDNmYThlYzJjMzhiOTc3OGMxM2I3MDY2MjMuLjU0MjRiYThhOGNmYmU0
YWQ4MTRjMGRhYmU2MTE3MzM3ZWVkZjk2N2MgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RSdW5uZXJT
aGFyZWQvVUlTY3JpcHRDb250ZXh0L0JpbmRpbmdzL1VJU2NyaXB0Q29udHJvbGxlci5pZGwKKysr
IGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvQmluZGluZ3MvVUlTY3Jp
cHRDb250cm9sbGVyLmlkbApAQCAtMjMxLDYgKzIzMSw5IEBAIGludGVyZmFjZSBVSVNjcmlwdENv
bnRyb2xsZXIgewogCiAgICAgdm9pZCByZXNpZ25GaXJzdFJlc3BvbmRlcigpOwogCisgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIGRvdWJsZSBjb250ZW50T2Zmc2V0WDsKKyAgICByZWFkb25seSBhdHRy
aWJ1dGUgZG91YmxlIGNvbnRlbnRPZmZzZXRZOworCiAgICAgdm9pZCBzY3JvbGxUb09mZnNldChs
b25nIHgsIGxvbmcgeSk7IC8vIEluaXRpYXRlIGFuIGFuaW1hdGVkIHNjcm9sbCBpbiB0aGUgVUkg
cHJvY2Vzcy4KICAgICBhdHRyaWJ1dGUgb2JqZWN0IGRpZEVuZFNjcm9sbGluZ0NhbGxiYWNrOwog
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNj
cmlwdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRl
eHQvVUlTY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCBjOTU4N2M0MmU5ZjAzZWZhODk5NGQ1NGQz
OTAxOWU3Njc4ZWM2Yjc4Li5hNWJhYTA2Y2Q1MzMyMDA1OTlmM2FmNTY4OTNlMzc1ZjZlMDIzM2Mx
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNj
cmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRD
b250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTMzNiw2ICszMzYsMTYgQEAgSlNSZXRh
aW5QdHI8SlNTdHJpbmdSZWY+IFVJU2NyaXB0Q29udHJvbGxlcjo6Zm9ybUlucHV0TGFiZWwoKSBj
b25zdAogICAgIHJldHVybiBudWxscHRyOwogfQogCitkb3VibGUgVUlTY3JpcHRDb250cm9sbGVy
Ojpjb250ZW50T2Zmc2V0WCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIDA7Cit9CisKK2RvdWJsZSBV
SVNjcmlwdENvbnRyb2xsZXI6OmNvbnRlbnRPZmZzZXRZKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
MDsKK30KKwogdm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OnNjcm9sbFRvT2Zmc2V0KGxvbmcgeCwg
bG9uZyB5KQogewogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlw
dENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmggYi9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJ
U2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuaAppbmRleCBhNjQ4MmM5ZTc5NDBhOWU1
NzQ1ZmIwMjY0MDY0MDhkMGI0ZTM0NThlLi5kM2ZiMWNiYjA5MjUwYTgyNzlkZmNiMjhiYmY4Yzkw
MjdmNzAyMWNiIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29u
dGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuaAorKysgYi9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJ
U2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuaApAQCAtMTEzLDYgKzExMyw5IEBAIHB1
YmxpYzoKICAgICBKU09iamVjdFJlZiBjb250ZW50c09mVXNlckludGVyZmFjZUl0ZW0oSlNTdHJp
bmdSZWYpIGNvbnN0OwogICAgIHZvaWQgb3ZlcnJpZGVQcmVmZXJlbmNlKEpTU3RyaW5nUmVmIHBy
ZWZlcmVuY2UsIEpTU3RyaW5nUmVmIHZhbHVlKTsKICAgICAKKyAgICBkb3VibGUgY29udGVudE9m
ZnNldFgoKSBjb25zdDsKKyAgICBkb3VibGUgY29udGVudE9mZnNldFkoKSBjb25zdDsKKwogICAg
IHZvaWQgc2Nyb2xsVG9PZmZzZXQobG9uZyB4LCBsb25nIHkpOwogCiAgICAgdm9pZCBpbW1lZGlh
dGVTY3JvbGxUb09mZnNldChsb25nIHgsIGxvbmcgeSk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
VGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IDdjODhlMDAyN2YzZDc1MGJlNjE1NjcyMzJhODgxYWRj
ZGZiNGRkYTguLjk2Y2E2ZjU4ZmYzYjQwZDZjOGU1ODA3ZWQzZDIxNzc2YWJlZDllYzAgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCkBAIC0xMjY2LDYgKzEyNjYs
OCBAQCBzdGF0aWMgdm9pZCB1cGRhdGVUZXN0T3B0aW9uc0Zyb21UZXN0SGVhZGVyKFRlc3RPcHRp
b25zJiB0ZXN0T3B0aW9ucywgY29uc3Qgc3RkOgogICAgICAgICAgICAgdGVzdE9wdGlvbnMuZWRp
dGFibGUgPSBwYXJzZUJvb2xlYW5UZXN0SGVhZGVyVmFsdWUodmFsdWUpOwogICAgICAgICBlbHNl
IGlmIChrZXkgPT0gImVuYWJsZVVuZG9NYW5hZ2VyQVBJIikKICAgICAgICAgICAgIHRlc3RPcHRp
b25zLmVuYWJsZVVuZG9NYW5hZ2VyQVBJID0gcGFyc2VCb29sZWFuVGVzdEhlYWRlclZhbHVlKHZh
bHVlKTsKKyAgICAgICAgZWxzZSBpZiAoa2V5ID09ICJ0b3BDb250ZW50SW5zZXQiKQorICAgICAg
ICAgICAgdGVzdE9wdGlvbnMudG9wQ29udGVudEluc2V0ID0gc3RkOjpzdG9kKHZhbHVlKTsKICAg
ICAgICAgcGFpclN0YXJ0ID0gcGFpckVuZCArIDE7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0T3B0aW9ucy5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0T3B0aW9ucy5oCmluZGV4IDEwY2Q0ZTRjMzQ1NzFiMGIxYjhhMDJjYjZkZDQ3OWM2N2Zl
YzczNDAuLmJjMWY2YjAyZmI5OWU3NzJmNTExYjE3ZTA5NGIyZmU5MjVkMWE1MDEgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdE9wdGlvbnMuaAorKysgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RPcHRpb25zLmgKQEAgLTY5LDYgKzY5LDggQEAgc3RydWN0IFRlc3RP
cHRpb25zIHsKICAgICBib29sIGVkaXRhYmxlIHsgZmFsc2UgfTsKICAgICBib29sIGVuYWJsZVVu
ZG9NYW5hZ2VyQVBJIHsgZmFsc2UgfTsKIAorICAgIGRvdWJsZSB0b3BDb250ZW50SW5zZXQgeyAw
IH07CisKICAgICBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciB7IDEgfTsKICAgICBWZWN0b3I8U3Ry
aW5nPiBvdmVycmlkZUxhbmd1YWdlczsKICAgICBzdGQ6OnN0cmluZyBhcHBsaWNhdGlvbk1hbmlm
ZXN0OwpAQCAtMTEzLDcgKzExNSw4IEBAIHN0cnVjdCBUZXN0T3B0aW9ucyB7CiAgICAgICAgICAg
ICB8fCBzaG91bGRJZ25vcmVNZXRhVmlld3BvcnQgIT0gb3B0aW9ucy5zaG91bGRJZ25vcmVNZXRh
Vmlld3BvcnQKICAgICAgICAgICAgIHx8IGVuYWJsZUVkaXRhYmxlSW1hZ2VzICE9IG9wdGlvbnMu
ZW5hYmxlRWRpdGFibGVJbWFnZXMKICAgICAgICAgICAgIHx8IGVkaXRhYmxlICE9IG9wdGlvbnMu
ZWRpdGFibGUKLSAgICAgICAgICAgIHx8IGVuYWJsZVVuZG9NYW5hZ2VyQVBJICE9IG9wdGlvbnMu
ZW5hYmxlVW5kb01hbmFnZXJBUEkpCisgICAgICAgICAgICB8fCBlbmFibGVVbmRvTWFuYWdlckFQ
SSAhPSBvcHRpb25zLmVuYWJsZVVuZG9NYW5hZ2VyQVBJCisgICAgICAgICAgICB8fCB0b3BDb250
ZW50SW5zZXQgIT0gb3B0aW9ucy50b3BDb250ZW50SW5zZXQpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICAgICAgaWYgKGV4cGVyaW1lbnRhbEZlYXR1cmVzICE9IG9wdGlvbnMuZXhw
ZXJpbWVudGFsRmVhdHVyZXMpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lv
cy9UZXN0Q29udHJvbGxlcklPUy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1Rlc3RD
b250cm9sbGVySU9TLm1tCmluZGV4IDRhMTA4MGNhZDQ5ZGYxMGRjMWI0NDQ2NzA1YzA3NmMxZTBh
ZmJiNGQuLjYxMGM5N2ZkNGZlNTY3N2QyNTk1YjI3NDI2ZTkwMjU1YmM1ZTcwMzQgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1Rlc3RDb250cm9sbGVySU9TLm1tCisrKyBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1Rlc3RDb250cm9sbGVySU9TLm1tCkBAIC0xMzIs
NyArMTMyLDggQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1SZXNldFN0YXRlVG9Db25z
aXN0ZW50VmFsdWVzKGNvbnN0IFRlc3RPcHRpb25zJiBvcHQKICAgICAgICAgVUlTY3JvbGxWaWV3
ICpzY3JvbGxWaWV3ID0gd2ViVmlldy5zY3JvbGxWaWV3OwogICAgICAgICBbc2Nyb2xsVmlldyBf
cmVtb3ZlQWxsQW5pbWF0aW9uczpZRVNdOwogICAgICAgICBbc2Nyb2xsVmlldyBzZXRab29tU2Nh
bGU6MSBhbmltYXRlZDpOT107Ci0gICAgICAgIFtzY3JvbGxWaWV3IHNldENvbnRlbnRPZmZzZXQ6
Q0dQb2ludFplcm9dOworICAgICAgICBzY3JvbGxWaWV3LmNvbnRlbnRJbnNldCA9IFVJRWRnZUlu
c2V0c01ha2Uob3B0aW9ucy50b3BDb250ZW50SW5zZXQsIDAsIDAsIDApOworICAgICAgICBzY3Jv
bGxWaWV3LmNvbnRlbnRPZmZzZXQgPSBDR1BvaW50TWFrZSgwLCAtb3B0aW9ucy50b3BDb250ZW50
SW5zZXQpOwogCiAgICAgICAgIGlmICh3ZWJWaWV3LmludGVyYWN0aW5nV2l0aEZvcm1Db250cm9s
KQogICAgICAgICAgICAgc2hvdWxkUmVzdG9yZUZpcnN0UmVzcG9uZGVyID0gW3dlYlZpZXcgcmVz
aWduRmlyc3RSZXNwb25kZXJdOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9p
b3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3Mv
VUlTY3JpcHRDb250cm9sbGVySU9TLm1tCmluZGV4IDllMjA0NzdiMWU4NjgyNjdmNDljNGEwMDky
YjBhZDU4YzNkNDkxODYuLjRhYTk0MjkwNTc4NzQ4Y2Y4MWJjNTM1NTA3NmRmYTI3YThhODFjNWQg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0Q29udHJvbGxl
cklPUy5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9VSVNjcmlwdENvbnRyb2xs
ZXJJT1MubW0KQEAgLTQ4Nyw2ICs0ODcsMTggQEAgc3RhdGljIENHUG9pbnQgY29udGVudE9mZnNl
dEJvdW5kZWRJblZhbGlkUmFuZ2UoVUlTY3JvbGxWaWV3ICpzY3JvbGxWaWV3LCBDR1BvaW4KICAg
ICByZXR1cm4gY29udGVudE9mZnNldDsKIH0KIAorZG91YmxlIFVJU2NyaXB0Q29udHJvbGxlcjo6
Y29udGVudE9mZnNldFgoKSBjb25zdAoreworICAgIFRlc3RSdW5uZXJXS1dlYlZpZXcgKndlYlZp
ZXcgPSBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkubWFpbldlYlZpZXcoKS0+cGxhdGZvcm1W
aWV3KCk7CisgICAgcmV0dXJuIHdlYlZpZXcuc2Nyb2xsVmlldy5jb250ZW50T2Zmc2V0Lng7Cit9
CisKK2RvdWJsZSBVSVNjcmlwdENvbnRyb2xsZXI6OmNvbnRlbnRPZmZzZXRZKCkgY29uc3QKK3sK
KyAgICBUZXN0UnVubmVyV0tXZWJWaWV3ICp3ZWJWaWV3ID0gVGVzdENvbnRyb2xsZXI6OnNpbmds
ZXRvbigpLm1haW5XZWJWaWV3KCktPnBsYXRmb3JtVmlldygpOworICAgIHJldHVybiB3ZWJWaWV3
LnNjcm9sbFZpZXcuY29udGVudE9mZnNldC55OworfQorCiB2b2lkIFVJU2NyaXB0Q29udHJvbGxl
cjo6c2Nyb2xsVG9PZmZzZXQobG9uZyB4LCBsb25nIHkpCiB7CiAgICAgVGVzdFJ1bm5lcldLV2Vi
VmlldyAqd2ViVmlldyA9IFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5tYWluV2ViVmlldygp
LT5wbGF0Zm9ybVZpZXcoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBlODU2MjU0ZjZiNTAwNTUwNWY4YTFkZDNjM2M5NjFl
ODc5MDFkN2MxLi41Y2E2MDBkMTQwMWY5YTI0MmUxM2M5YWNkYTQ5YjViYzI1N2UyNTU1IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjAgQEAKKzIwMTktMDEtMTcgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2ll
aEBhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gQ29udGVudCBvZmZzZXQganVtcHMgZXJyYXRp
Y2FsbHkgd2hlbiBhdXRvc2Nyb2xsaW5nIG5lYXIgc2Nyb2xsIHZpZXcgY29udGVudCBpbnNldCBh
cmVhcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkz
NDk0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80Njg1OTYyNz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBuZXcgdGVzdCB0byB2ZXJpZnkg
dGhhdCBtb3ZpbmcgdGhlIHNlbGVjdGlvbiBieSBhdXRvc2Nyb2xsaW5nIG5lYXIgdGhlIHRvcCBj
b250ZW50IGluc2V0IGFyZWEgZG9lcyBub3QKKyAgICAgICAgY2F1c2UgdGhlIHNjcm9sbCB2aWV3
J3MgY29udGVudCBvZmZzZXQgdG8ganVtcC4KKworICAgICAgICAqIGVkaXRpbmcvc2VsZWN0aW9u
L2lvcy9hdXRvc2Nyb2xsLXdpdGgtdG9wLWNvbnRlbnQtaW5zZXQtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBlZGl0aW5nL3NlbGVjdGlvbi9pb3MvYXV0b3Njcm9sbC13aXRoLXRvcC1j
b250ZW50LWluc2V0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHJlc291cmNlcy91aS1oZWxwZXIu
anM6CisgICAgICAgICh3aW5kb3cuVUlIZWxwZXIuY29udGVudE9mZnNldCk6CisgICAgICAgICh3
aW5kb3cuVUlIZWxwZXIpOgorCiAyMDE5LTAxLTE2ICBBbGljaWEgQm95YSBHYXJjw61hICA8YWJv
eWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIEdUSyBhbmQgV1BFIHRlc3QgZ2Fy
ZGVuaW5nLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vaW9zL2F1
dG9zY3JvbGwtd2l0aC10b3AtY29udGVudC1pbnNldC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9lZGl0aW5nL3NlbGVjdGlvbi9pb3MvYXV0b3Njcm9sbC13aXRoLXRvcC1jb250ZW50LWluc2V0
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZWU1Y2ZmODVhODI2MTVjZDM1MzIxZTEwZmQwYmVl
YjI0Yzc0ZGIyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rp
b24vaW9zL2F1dG9zY3JvbGwtd2l0aC10b3AtY29udGVudC1pbnNldC1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwxMyBAQAorU2VsZWN0IG1lIGFuZCBkcmFnIHVwLgorCitWZXJpZmllcyB0aGF0IHRy
aWdnZXJpbmcgYXV0b3Njcm9sbCBuZWFyIHRoZSB0b3Agb2YgYSB3ZWIgdmlldyB3aXRoIGEgdG9w
IGNvbnRlbnQgaW5zZXQgZG9lcyBub3QgY2F1c2UgdGhlIHNjcm9sbCB2aWV3J3MgY29udGVudCBv
ZmZzZXQgdG8ganVtcCB0byAwLiBUaGlzIHRlc3QgcmVxdWlyZXMgV2ViS2l0VGVzdFJ1bm5lci4g
VG8gdmVyaWZ5IG1hbnVhbGx5LCBsb2FkIHRoaXMgcGFnZSBpbiBhIHdlYiB2aWV3IHRoYXQgaGFz
IGEgc2Nyb2xsIHZpZXcgdG9wIGNvbnRlbnQgaW5zZXQsIGFuZCBzY3JvbGwgc3VjaCB0aGF0IHRo
ZSBmdWxsIHRvcCBjb250ZW50IGluc2V0IGFyZWEgaXMgdmlzaWJsZS4gQ2hlY2sgdGhhdCBzdGFy
dGluZyBhIHRleHQgc2VsZWN0aW9uIGxvdXBlIGdlc3R1cmUgbmVhciB0aGUgdG9wIG9mIHRoZSB0
b3Agb2YgdGhlIGRvY3VtZW50IGFuZCBkcmFnZ2luZyB1cHdhcmRzIGRvZXMgbm90IHRocmFzaCB0
aGUgc2Nyb2xsIHZpZXcncyBjb250ZW50IG9mZnNldC4KKworT24gc3VjY2VzcywgeW91IHdpbGwg
c2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExF
VEUiLgorCisKK1BBU1MgZmluYWxDb250ZW50T2Zmc2V0LnggaXMgMAorUEFTUyB2ZXJ0aWNhbE1v
dmVtZW50RHVyaW5nRHJhZyA8IDEgaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcv
c2VsZWN0aW9uL2lvcy9hdXRvc2Nyb2xsLXdpdGgtdG9wLWNvbnRlbnQtaW5zZXQuaHRtbCBiL0xh
eW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2lvcy9hdXRvc2Nyb2xsLXdpdGgtdG9wLWNvbnRl
bnQtaW5zZXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMjU5Y2EyZGNmOTYyZWEyZmFhOGQyNmM3MWI3ZTIw
OTYzODYxZTkxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rp
b24vaW9zL2F1dG9zY3JvbGwtd2l0aC10b3AtY29udGVudC1pbnNldC5odG1sCkBAIC0wLDAgKzEs
NTEgQEAKKzwhRE9DVFlQRSBodG1sPiA8IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIHVzZUZsZXhp
YmxlVmlld3BvcnQ9dHJ1ZSwgdG9wQ29udGVudEluc2V0PTEwMCBdIC0tPgorPGh0bWw+Cis8bWV0
YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNj
YWxlPTEiPgorPGhlYWQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9iYXNp
Yy1nZXN0dXJlcy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291
cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgPHN0eWxlPgorICAgIGJvZHkgewor
ICAgICAgICBtYXJnaW46IDA7CisgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CisgICAg
ICAgIGJvcmRlcjogcmVkIDFweCBzb2xpZDsKKyAgICB9CisKKyAgICAjdGV4dCB7CisgICAgICAg
IGZvbnQtc2l6ZTogMzBweDsKKyAgICB9CisKKyAgICAjY29uc29sZSB7CisgICAgICAgIG92ZXJm
bG93OiBzY3JvbGw7CisgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgfQorICAgIDwvc3R5bGU+
CisgICAgPHNjcmlwdD4KKyAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgIGFzeW5jIGZ1
bmN0aW9uIHJ1bigpCisgICAgeworICAgICAgICBhd2FpdCBVSUhlbHBlci5hY3RpdmF0ZUFuZFdh
aXRGb3JJbnB1dFNlc3Npb25BdCgxMTAsIDQwKTsKKyAgICAgICAgb3JpZ2luYWxDb250ZW50T2Zm
c2V0ID0gYXdhaXQgVUlIZWxwZXIuY29udGVudE9mZnNldCgpOworICAgICAgICBhd2FpdCBsb25n
UHJlc3NBbmRIb2xkQXRQb2ludCgxMTAsIDQwKTsKKyAgICAgICAgYXdhaXQgdG91Y2hBbmREcmFn
RnJvbVBvaW50VG9Qb2ludCgxMTAsIDQwLCAyMTAsIDQwKTsKKyAgICAgICAgYXdhaXQgbGlmdFVw
QXRQb2ludCgyMTAsIDQwKTsKKyAgICAgICAgZmluYWxDb250ZW50T2Zmc2V0ID0gYXdhaXQgVUlI
ZWxwZXIuY29udGVudE9mZnNldCgpOworICAgICAgICB2ZXJ0aWNhbE1vdmVtZW50RHVyaW5nRHJh
ZyA9IE1hdGguYWJzKGZpbmFsQ29udGVudE9mZnNldC55IC0gb3JpZ2luYWxDb250ZW50T2Zmc2V0
LnkpOworCisgICAgICAgIHNob3VsZEJlKCJmaW5hbENvbnRlbnRPZmZzZXQueCIsICIwIik7Cisg
ICAgICAgIHNob3VsZEJlVHJ1ZSgidmVydGljYWxNb3ZlbWVudER1cmluZ0RyYWcgPCAxIik7Cisg
ICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH0KKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5IGNvbnRlbnRlZGl0YWJsZSBvbmxvYWQ9InJ1bigpIj4KKyAgICA8cCBpZD0idGV4dCI+PHN0
cm9uZz5TZWxlY3QgbWUgYW5kIGRyYWcgdXAuPC9zdHJvbmc+PC9wPgorICAgIDxwIGlkPSJkZXNj
cmlwdGlvbiI+PC9wPgorICAgIDxwIGlkPSJjb25zb2xlIj48L3A+Cis8L2JvZHk+Cis8c2NyaXB0
PgorICAgIGRlc2NyaXB0aW9uKCJWZXJpZmllcyB0aGF0IHRyaWdnZXJpbmcgYXV0b3Njcm9sbCBu
ZWFyIHRoZSB0b3Agb2YgYSB3ZWIgdmlldyB3aXRoIGEgdG9wIGNvbnRlbnQgaW5zZXQgZG9lcyBu
b3QgY2F1c2UgdGhlIHNjcm9sbCB2aWV3J3MgY29udGVudCBvZmZzZXQgdG8ganVtcCB0byAwLiBU
aGlzIHRlc3QgcmVxdWlyZXMgV2ViS2l0VGVzdFJ1bm5lci4gVG8gdmVyaWZ5IG1hbnVhbGx5LCBs
b2FkIHRoaXMgcGFnZSBpbiBhIHdlYiB2aWV3IHRoYXQgaGFzIGEgc2Nyb2xsIHZpZXcgdG9wIGNv
bnRlbnQgaW5zZXQsIGFuZCBzY3JvbGwgc3VjaCB0aGF0IHRoZSBmdWxsIHRvcCBjb250ZW50IGlu
c2V0IGFyZWEgaXMgdmlzaWJsZS4gQ2hlY2sgdGhhdCBzdGFydGluZyBhIHRleHQgc2VsZWN0aW9u
IGxvdXBlIGdlc3R1cmUgbmVhciB0aGUgdG9wIG9mIHRoZSB0b3Agb2YgdGhlIGRvY3VtZW50IGFu
ZCBkcmFnZ2luZyB1cHdhcmRzIGRvZXMgbm90IHRocmFzaCB0aGUgc2Nyb2xsIHZpZXcncyBjb250
ZW50IG9mZnNldC4iKTsKKzwvc2NyaXB0PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcmVzb3VyY2VzL3VpLWhlbHBlci5qcyBiL0xheW91dFRlc3RzL3Jlc291cmNlcy91aS1oZWxw
ZXIuanMKaW5kZXggMmY1NjlhYWNjNTVjNDVjNzAyNWNlMjE2YTcwMzQ1NzI5MjI0YmM2ZS4uZTY1
ZjAzMWQ2NDBkMzIxZjhhYTA5OGMzY2YzYTNlMGU0NmU0NzMwOSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvcmVzb3VyY2VzL3VpLWhlbHBlci5qcworKysgYi9MYXlvdXRUZXN0cy9yZXNvdXJjZXMv
dWktaGVscGVyLmpzCkBAIC01MDQsNCArNTA0LDE2IEBAIHdpbmRvdy5VSUhlbHBlciA9IGNsYXNz
IFVJSGVscGVyIHsKICAgICAgICAgY29uc3QgZXNjYXBlZElkZW50aWZpZXIgPSBpZGVudGlmaWVy
LnJlcGxhY2UoL2AvZywgIlxcYCIpOwogICAgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2
ZSA9PiB0ZXN0UnVubmVyLnJ1blVJU2NyaXB0KGB1aUNvbnRyb2xsZXIuc2V0S2V5Ym9hcmRJbnB1
dE1vZGVJZGVudGlmaWVyKFxgJHtlc2NhcGVkSWRlbnRpZmllcn1cYClgLCByZXNvbHZlKSk7CiAg
ICAgfQorCisgICAgc3RhdGljIGNvbnRlbnRPZmZzZXQoKQorICAgIHsKKyAgICAgICAgaWYgKCF0
aGlzLmlzSU9TKCkpCisgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7CisKKyAg
ICAgICAgY29uc3QgdWlTY3JpcHQgPSAiSlNPTi5zdHJpbmdpZnkoW3VpQ29udHJvbGxlci5jb250
ZW50T2Zmc2V0WCwgdWlDb250cm9sbGVyLmNvbnRlbnRPZmZzZXRZXSkiOworICAgICAgICByZXR1
cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB0ZXN0UnVubmVyLnJ1blVJU2NyaXB0KHVpU2NyaXB0
LCByZXN1bHQgPT4geworICAgICAgICAgICAgY29uc3QgW29mZnNldFgsIG9mZnNldFldID0gSlNP
Ti5wYXJzZShyZXN1bHQpCisgICAgICAgICAgICByZXNvbHZlKHsgeDogb2Zmc2V0WCwgeTogb2Zm
c2V0WSB9KTsKKyAgICAgICAgfSkpOworICAgIH0KIH0K
</data>
<flag name="review"
          id="376151"
          type_id="1"
          status="-"
          setter="simon.fraser"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>359437</attachid>
            <date>2019-01-17 17:52:29 -0800</date>
            <delta_ts>2019-01-17 17:59:55 -0800</delta_ts>
            <desc>Patch v2</desc>
            <filename>bug-193494-20190117175228.patch</filename>
            <type>text/plain</type>
            <size>40887</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwMTAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmRkOWQ1MGZlNjM2Mjg4
MTk1ZjQ1OGViNTE4NDg1MTllYzY1YTk5My4uYmFlNjFjOTI1NTk0ODhkMzZhMGU0ZTlmMjRkMzJi
MDNlOTBiNGYyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDE5LTAxLTE3ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIENvbnRl
bnQgb2Zmc2V0IGp1bXBzIGVycmF0aWNhbGx5IHdoZW4gYXV0b3Njcm9sbGluZyBuZWFyIHNjcm9s
bCB2aWV3IGNvbnRlbnQgaW5zZXQgYXJlYXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE5MzQ5NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDY4NTk2
Mjc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hl
biBjb21wdXRpbmcgdGhlIGNvbnRlbnQgb2Zmc2V0IHRvIHNjcm9sbCB0byB3aGVuIHJldmVhbGlu
ZyBhIGdpdmVuIHJlY3QgaW4gY29udGVudCBjb29yZGluYXRlcywgd2UgY3VycmVudGx5CisgICAg
ICAgIGp1c3QgdXNlIHRoZSB1bm9ic2N1cmVkIGNvbnRlbnQgcmVjdC4gQXMgYSByZXN1bHQsIHdo
ZW4gc2Nyb2xsaW5nIHRvIHJldmVhbCBhIHJlY3QsIHdlJ2xsIGNsYW1wIHRoZSBmaW5hbCBzY3Jv
bGwKKyAgICAgICAgcG9zaXRpb24gc3VjaCB0aGF0IG9ubHkgY29udGVudCBpcyB2aXNpYmxlLiBG
b3IgZXhhbXBsZSwgd2hlbiBhc2tlZCB0byByZXZlYWwgdGhlIHJlY3QgYCgwLCAwLCAxLCAxKWAs
IHdlIGFkanVzdAorICAgICAgICB0aGUgc2Nyb2xsIHBvc2l0aW9uIHRvIGJlIHRoZSBvcmlnaW4u
CisKKyAgICAgICAgSG93ZXZlciwgY29uc2lkZXIgdGhlIGNhc2Ugd2hlcmUgYSBjbGllbnQgKGUu
Zy4gTWFpbCBvbiBpT1MpIGhhcyBhZGRlZCBhIGNvbnRlbnQgaW5zZXQgdG8gdGhlIHdlYiB2aWV3
J3Mgc2Nyb2xsCisgICAgICAgIHZpZXcuIElmIHdlJ3JlIGFza2VkIHRvIHJldmVhbCBhIHJlY3Qg
dGhhdCBpcyBvdXRzaWRlIHRoZSBjb250ZW50IGFyZWEgYnV0IHdpdGhpbiBhIGNvbnRlbnQgaW5z
ZXQsIHdlIHdpbGwgc3RpbGwKKyAgICAgICAgZW5kIHVwIGNsYW1waW5nIHRoZSBzY3JvbGwgcG9z
aXRpb24gdG8gdGhlIHVub2JzY3VyZWQgcmVjdC4gVGhpcyBtYW5pZmVzdHMgaW4gYSBidWcgd2hl
cmUgc2VsZWN0aW5nIHRleHQgYW5kCisgICAgICAgIGF1dG9zY3JvbGxpbmcgaW4gaU9TIE1haWwg
Y29tcG9zZSB3aGlsZSB0aGUgc2Nyb2xsIHZpZXcgaXMgc2Nyb2xsZWQgYWxsIHRoZSB3YXkgdG8g
dGhlIHRvcCB0byByZXZlYWwgdGhlIFRvL0NjLworICAgICAgICBTdWJqZWN0IGZpZWxkcyBjYXVz
ZXMgdGhlIGNvbnRlbnQgb2Zmc2V0IHRvIGp1bXAgdG8gdGhlIG9yaWdpbiwgcmF0aGVyIHRoYW4g
c3RheWluZyBhdCAoMCwgLXRvcENvbnRlbnRJbnNldCkuCisKKyAgICAgICAgVG8gZml4IHRoaXMs
IHdlIHRlYWNoIGBSZW5kZXJMYXllcjo6c2Nyb2xsUmVjdFRvVmlzaWJsZWAgYWJvdXQgY29udGVu
dCBpbnNldHMgdGhhdCBhcmUgdmlzaWJsZS4gUmF0aGVyIHRoYW4gdXNlCisgICAgICAgIHRoZSBj
b250ZW50IHJlY3RzIGFzLWlzLCBleHBhbmQgdG8gZW5jb21wYXNzIHZpc2libGUgY29udGVudCBp
bnNldHMgYXMgd2VsbC4gVGhpcyBlbnN1cmVzIHRoYXQgcmV2ZWFsaW5nIGEKKyAgICAgICAgcG9z
aXRpb24gd2hpY2ggaXMgYWxyZWFkeSB2aXNpYmxlIHdvbid0IGNhdXNlIHVzIHRvIHNjcm9sbCBh
d2F5IHRoZSBjb250ZW50IGluc2V0IGFyZWEgYW5kIG9ubHkgc2hvdyB0aGUKKyAgICAgICAgdW5v
YnNjdXJlZCByZWN0LgorCisgICAgICAgIFRlc3RzOiAgZWRpdGluZy9zZWxlY3Rpb24vaW9zL2F1
dG9zY3JvbGwtd2l0aC10b3AtY29udGVudC1pbnNldC5odG1sCisgICAgICAgICAgICAgICAgZmFz
dC9zY3JvbGxpbmcvaW9zL3Njcm9sbC1pbnRvLXZpZXctd2l0aC10b3AtY29udGVudC1pbnNldC5o
dG1sCisKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZVZpZXc6OnVub2JzY3VyZWRDb250ZW50UmVjdEV4cGFuZGVkQnlDb250ZW50SW5zZXRzIGNv
bnN0KToKKworICAgICAgICBJbnRyb2R1Y2UgYSBoZWxwZXIgbWV0aG9kIHRoYXQgZXhwYW5kcyB0
aGUgdW5vYnNjdXJlZCBjb250ZW50IHJlY3QgdG8gaW5jbHVkZSBzdXJyb3VuZGluZyBjb250ZW50
IGluc2V0cy4KKworICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3Lmg6CisgICAgICAgICogcGFnZS9Q
YWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpjb250ZW50SW5zZXRzIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNldENvbnRlbnRJbnNldHMpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6c2Ny
b2xsUmVjdFRvVmlzaWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6Z2V0UmVj
dFRvRXhwb3NlIGNvbnN0KToKKwogMjAxOS0wMS0xNiAgSnVzdGluIEZhbiAgPGp1c3Rpbl9mYW5A
YXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJHUFVdIFVwZGF0ZSB2ZXJ0ZXgtYnVmZmVyLXRyaWFu
Z2xlLXN0cmlwLmh0bWwgdG8gYWN0dWFsbHkgdXNlIHZlcnRleCBidWZmZXIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXgg
ZTQ5MmY4YWYyN2Y4ZTE4NDk4MjY0OTVhMzBmNjgzOTNiODdmZjIwMC4uZWE4ZTQ0ZTMzMzk5NmQ4
YmJlMWZjMWU4MjNhZmUxOTNkYzA2MThmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OCBAQAorMjAx
OS0wMS0xNyAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAg
ICBbaU9TXSBDb250ZW50IG9mZnNldCBqdW1wcyBlcnJhdGljYWxseSB3aGVuIGF1dG9zY3JvbGxp
bmcgbmVhciBzY3JvbGwgdmlldyBjb250ZW50IGluc2V0IGFyZWFzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTM0OTQKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzQ2ODU5NjI3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFkZHMgYGNvbnRlbnRJbnNldHNgIHRvIGBWaXNpYmxlQ29udGVudFJlY3RVcGRh
dGVJbmZvYC4gVGhpcyBrZWVwcyB0cmFjayBvZiB0aGUgdmlzaWJsZSBjb250ZW50IGluc2V0cwor
ICAgICAgICBzdXJyb3VuZGluZyB0aGUgdW5vYnNjdXJlZCBjb250ZW50IHJlY3QuIFNlZSBXZWJD
b3JlIENoYW5nZUxvZyBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgICAgICogU2hhcmVkL1Zpc2li
bGVDb250ZW50UmVjdFVwZGF0ZUluZm8uY3BwOgorICAgICAgICAoV2ViS2l0OjpWaXNpYmxlQ29u
dGVudFJlY3RVcGRhdGVJbmZvOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpWaXNp
YmxlQ29udGVudFJlY3RVcGRhdGVJbmZvOjpkZWNvZGUpOgorICAgICAgICAoV2ViS2l0OjpvcGVy
YXRvcjw8KToKKyAgICAgICAgKiBTaGFyZWQvVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mby5o
OgorICAgICAgICAoV2ViS2l0OjpWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZvOjpWaXNpYmxl
Q29udGVudFJlY3RVcGRhdGVJbmZvKToKKyAgICAgICAgKFdlYktpdDo6VmlzaWJsZUNvbnRlbnRS
ZWN0VXBkYXRlSW5mbzo6Y29udGVudEluc2V0cyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Om9w
ZXJhdG9yPT0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgor
ICAgICAgICAoLVtXS1dlYlZpZXcgX2NvbXB1dGVkT2JzY3VyZWRJbnNldF0pOgorICAgICAgICAo
LVtXS1dlYlZpZXcgX2NvbXB1dGVkQ29udGVudEluc2V0XSk6CisgICAgICAgICgtW1dLV2ViVmll
dyBfY29tcHV0ZWRVbm9ic2N1cmVkU2FmZUFyZWFJbnNldF0pOgorCisgICAgICAgIFdlIGRvbid0
IGNhcmUgYWJvdXQgc291cmNlIGNvbXBhdGliaWxpdHkgd2l0aCBpT1MgMTAgYW5kIGJlbG93IGFu
eW1vcmUsIHNvIHdlIHNob3VsZCBjaGFuZ2UgdGhlc2UgPj0gaU9TIDExCisgICAgICAgIHRhcmdl
dCBjaGVja3MgdG8gc2ltcGx5IGBQTEFURk9STShJT1MpYC4KKworICAgICAgICAoLVtXS1dlYlZp
ZXcgX3VwZGF0ZVZpc2libGVDb250ZW50UmVjdHNdKToKKworICAgICAgICBDb21wdXRlIHRoZSB2
aXNpYmxlIGNvbnRlbnQgaW5zZXRzIG9uIGFsbCBzaWRlcyBvZiB0aGUgdW5vYnNjdXJlZCBjb250
ZW50IHJlY3QuIFRoZXNlIGluc2V0cyBhcmUgc2NhbGVkIHRvCisgICAgICAgIGNvbnRlbnQgY29v
cmRpbmF0ZXMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW06CisgICAgICAgIChmbG9hdEJv
eEV4dGVudCk6CisKKyAgICAgICAgQWRkIGEgaGVscGVyIHRvIGNvbnZlcnQgYFVJRWRnZUluc2V0
c2AgdG8gYFdlYkNvcmU6OkZsb2F0Qm94RXh0ZW50YCwgYW5kIHVzZSBpdCBpbiBhIGZldyBwbGFj
ZXMgYmVsb3cuCisKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBkaWRVcGRhdGVWaXNpYmxlUmVj
dDp1bm9ic2N1cmVkUmVjdDpjb250ZW50SW5zZXRzOnVub2JzY3VyZWRSZWN0SW5TY3JvbGxWaWV3
Q29vcmRpbmF0ZXM6b2JzY3VyZWRJbnNldHM6dW5vYnNjdXJlZFNhZmVBcmVhSW5zZXRzOmlucHV0
Vmlld0JvdW5kczpzY2FsZTptaW5pbXVtU2NhbGU6aW5TdGFibGVTdGF0ZTppc0NoYW5naW5nT2Jz
Y3VyZWRJbnNldHNJbnRlcmFjdGl2ZWx5OmVuY2xvc2VkSW5TY3JvbGxhYmxlQW5jZXN0b3JWaWV3
Ol0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGRpZFVwZGF0ZVZpc2libGVSZWN0OnVub2Jz
Y3VyZWRSZWN0OnVub2JzY3VyZWRSZWN0SW5TY3JvbGxWaWV3Q29vcmRpbmF0ZXM6b2JzY3VyZWRJ
bnNldHM6dW5vYnNjdXJlZFNhZmVBcmVhSW5zZXRzOmlucHV0Vmlld0JvdW5kczpzY2FsZTptaW5p
bXVtU2NhbGU6aW5TdGFibGVTdGF0ZTppc0NoYW5naW5nT2JzY3VyZWRJbnNldHNJbnRlcmFjdGl2
ZWx5OmVuY2xvc2VkSW5TY3JvbGxhYmxlQW5jZXN0b3JWaWV3Ol0pOiBEZWxldGVkLgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZTo6dXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0cyk6CisKKyAgICAgICAgVXBkYXRl
IHRoZSBQYWdlJ3MgY29udGVudCBpbnNldHMuCisKIDIwMTktMDEtMTYgIFlvdWVubiBGYWJsZXQg
IDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBhIG5ldyBTUEkgZm9yIGNvbnRyb2xs
aW5nIGdldFVzZXJNZWRpYQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZp
ZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IDhkZDkyNGQ3
OTdjMTY3M2JkMDdjYzg0MjY4YmI0OGJlMTU1ZDk0ODcuLjA2Njk4MTU2ZGI0YjVjMjEwZWUwMDg2
OGQxZGM0N2ZhOGMwN2RjNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVW
aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTIwMTQs
NiArMjAxNCwxNCBAQCB2b2lkIEZyYW1lVmlldzo6dmlld3BvcnRDb250ZW50c0NoYW5nZWQoKQog
I2VuZGlmCiB9CiAKK0ludFJlY3QgRnJhbWVWaWV3Ojp1bm9ic2N1cmVkQ29udGVudFJlY3RFeHBh
bmRlZEJ5Q29udGVudEluc2V0cygpIGNvbnN0Cit7CisgICAgRmxvYXRSZWN0IHVub2JzY3VyZWRD
b250ZW50UmVjdCA9IHRoaXMtPnVub2JzY3VyZWRDb250ZW50UmVjdCgpOworICAgIGlmIChhdXRv
KiBwYWdlID0gZnJhbWUoKS5wYWdlKCkpCisgICAgICAgIHVub2JzY3VyZWRDb250ZW50UmVjdC5l
eHBhbmQocGFnZS0+Y29udGVudEluc2V0cygpKTsKKyAgICByZXR1cm4gSW50UmVjdCh1bm9ic2N1
cmVkQ29udGVudFJlY3QpOworfQorCiBib29sIEZyYW1lVmlldzo6Zml4ZWRFbGVtZW50c0xheW91
dFJlbGF0aXZlVG9GcmFtZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGZyYW1lKCkuc2V0dGluZ3Mo
KS5maXhlZEVsZW1lbnRzTGF5b3V0UmVsYXRpdmVUb0ZyYW1lKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZp
ZXcuaAppbmRleCA0NDI5ODQ2Mjc0MmQ1MmRjZDdjNjk4ZDRjOWM4NGI5YmNlOTk3YTdmLi4wYzc4
MWVlNjJhMzYzN2YzN2VlNjdiYWMxZTgzNjE3ODFmYjk1NWFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVW
aWV3LmgKQEAgLTMyNiw2ICszMjYsOCBAQCBwdWJsaWM6CiAgICAgLy8gU3RhdGljIGZ1bmN0aW9u
IGNhbiBiZSBjYWxsZWQgZnJvbSBhbm90aGVyIHRocmVhZC4KICAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgTGF5b3V0UmVjdCByZWN0Rm9yVmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHMoY29uc3Qg
TGF5b3V0UmVjdCYgdmlzaWJsZUNvbnRlbnRSZWN0LCBjb25zdCBMYXlvdXRTaXplJiB0b3RhbENv
bnRlbnRzU2l6ZSwgZmxvYXQgZnJhbWVTY2FsZUZhY3RvciwgYm9vbCBmaXhlZEVsZW1lbnRzTGF5
b3V0UmVsYXRpdmVUb0ZyYW1lLCBTY3JvbGxCZWhhdmlvckZvckZpeGVkRWxlbWVudHMpOwogI2Vu
ZGlmCisKKyAgICBJbnRSZWN0IHVub2JzY3VyZWRDb250ZW50UmVjdEV4cGFuZGVkQnlDb250ZW50
SW5zZXRzKCkgY29uc3Q7CiAgICAgCiAgICAgYm9vbCBmaXhlZEVsZW1lbnRzTGF5b3V0UmVsYXRp
dmVUb0ZyYW1lKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5kZXggNTIyYmU5ODZjMWJiMTRmOTdh
MjhhOGE1ZGRhYWQ4YzI5MzUyZWU5Ni4uYjA2NTMxZjkzMjljNDE4NjZmOTFlMGJjMThlYzkyOTU2
OTNhMDEwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAgLTM0Nyw2ICszNDcsOSBAQCBwdWJsaWM6CiAgICAg
Y29uc3QgRmxvYXRCb3hFeHRlbnQmIG9ic2N1cmVkSW5zZXRzKCkgY29uc3QgeyByZXR1cm4gbV9v
YnNjdXJlZEluc2V0czsgfQogICAgIHZvaWQgc2V0T2JzY3VyZWRJbnNldHMoY29uc3QgRmxvYXRC
b3hFeHRlbnQmIG9ic2N1cmVkSW5zZXRzKSB7IG1fb2JzY3VyZWRJbnNldHMgPSBvYnNjdXJlZElu
c2V0czsgfQogCisgICAgY29uc3QgRmxvYXRCb3hFeHRlbnQmIGNvbnRlbnRJbnNldHMoKSBjb25z
dCB7IHJldHVybiBtX2NvbnRlbnRJbnNldHM7IH0KKyAgICB2b2lkIHNldENvbnRlbnRJbnNldHMo
Y29uc3QgRmxvYXRCb3hFeHRlbnQmIGluc2V0cykgeyBtX2NvbnRlbnRJbnNldHMgPSBpbnNldHM7
IH0KKwogICAgIGNvbnN0IEZsb2F0Qm94RXh0ZW50JiB1bm9ic2N1cmVkU2FmZUFyZWFJbnNldHMo
KSBjb25zdCB7IHJldHVybiBtX3Vub2JzY3VyZWRTYWZlQXJlYUluc2V0czsgfQogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0VW5vYnNjdXJlZFNhZmVBcmVhSW5zZXRzKGNvbnN0IEZsb2F0Qm94
RXh0ZW50Jik7CiAKQEAgLTc5MSw2ICs3OTQsNyBAQCBwcml2YXRlOgogCiAgICAgZmxvYXQgbV90
b3BDb250ZW50SW5zZXQgeyAwIH07CiAgICAgRmxvYXRCb3hFeHRlbnQgbV9vYnNjdXJlZEluc2V0
czsKKyAgICBGbG9hdEJveEV4dGVudCBtX2NvbnRlbnRJbnNldHM7CiAgICAgRmxvYXRCb3hFeHRl
bnQgbV91bm9ic2N1cmVkU2FmZUFyZWFJbnNldHM7CiAgICAgRmxvYXRCb3hFeHRlbnQgbV9mdWxs
c2NyZWVuSW5zZXRzOwogICAgIFNlY29uZHMgbV9mdWxsc2NyZWVuQXV0b0hpZGVEdXJhdGlvbiB7
IDBfcyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggNmMy
YTQyM2I2Nzc2ZmM5OTBmMGE3ZTBmMzQwNjYxYmNjZDBmMjM3ZC4uYmZjNmNlYzUxYTFjYmY5ZjIw
MTFmYzRjMzBmYTYyMmY4YjU4MTYxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXIuY3BwCkBAIC0yNTUxLDggKzI1NTEsMTEgQEAgdm9pZCBSZW5kZXJMYXllcjo6c2Nyb2xs
UmVjdFRvVmlzaWJsZShjb25zdCBMYXlvdXRSZWN0JiBhYnNvbHV0ZVJlY3QsIGJvb2wgaW5zaWQK
ICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgICAgIExheW91dFJlY3Qgdmlld1Jl
Y3QgPSBmcmFtZVZpZXcudmlzaWJsZUNvbnRlbnRSZWN0KCk7CiAjZWxzZQotICAgICAgICAgICAg
TGF5b3V0UmVjdCB2aWV3UmVjdCA9IGZyYW1lVmlldy51bm9ic2N1cmVkQ29udGVudFJlY3QoKTsK
KyAgICAgICAgICAgIC8vIEV2ZW4gdGhvdWdoIGNvbnRlbnQgaW5zZXRzIGRvIG5vdCByZXByZXNl
bnQgY29udGVudCwgd2UgY29uc2lkZXIgdGhlbSBhcyBwYXJ0IG9mIHRoZSB2aXNpYmxlIHJlY3QK
KyAgICAgICAgICAgIC8vIHRvIGFsbG93IG91cnNlbHZlcyB0byBzY3JvbGwgaW50byBjb250ZW50
IGluc2V0cy4KKyAgICAgICAgICAgIExheW91dFJlY3Qgdmlld1JlY3QgPSBmcmFtZVZpZXcudW5v
YnNjdXJlZENvbnRlbnRSZWN0RXhwYW5kZWRCeUNvbnRlbnRJbnNldHMoKTsKICNlbmRpZgorCiAg
ICAgICAgICAgICAvLyBNb3ZlIHRoZSB0YXJnZXQgcmVjdCBpbnRvICJzY3JvbGxWaWV3IGNvbnRl
bnRzIiBjb29yZGluYXRlcy4KICAgICAgICAgICAgIExheW91dFJlY3QgdGFyZ2V0UmVjdCA9IGFi
c29sdXRlUmVjdDsKICAgICAgICAgICAgIHRhcmdldFJlY3QubW92ZSgwLCBmcmFtZVZpZXcuaGVh
ZGVySGVpZ2h0KCkpOwpAQCAtMjU5MSw3ICsyNTk0LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6dXBk
YXRlQ29tcG9zaXRpbmdMYXllcnNBZnRlclNjcm9sbCgpCiAgICAgfQogfQogCi1MYXlvdXRSZWN0
IFJlbmRlckxheWVyOjpnZXRSZWN0VG9FeHBvc2UoY29uc3QgTGF5b3V0UmVjdCAmdmlzaWJsZVJl
Y3QsIGNvbnN0IExheW91dFJlY3QgJmV4cG9zZVJlY3QsIGJvb2wgaW5zaWRlRml4ZWQsIGNvbnN0
IFNjcm9sbEFsaWdubWVudCYgYWxpZ25YLCBjb25zdCBTY3JvbGxBbGlnbm1lbnQmIGFsaWduWSkg
Y29uc3QKK0xheW91dFJlY3QgUmVuZGVyTGF5ZXI6OmdldFJlY3RUb0V4cG9zZShjb25zdCBMYXlv
dXRSZWN0JiB2aXNpYmxlUmVjdCwgY29uc3QgTGF5b3V0UmVjdCYgZXhwb3NlUmVjdCwgYm9vbCBp
bnNpZGVGaXhlZCwgY29uc3QgU2Nyb2xsQWxpZ25tZW50JiBhbGlnblgsIGNvbnN0IFNjcm9sbEFs
aWdubWVudCYgYWxpZ25ZKSBjb25zdAogewogICAgIEZyYW1lVmlldyYgZnJhbWVWaWV3ID0gcmVu
ZGVyZXIoKS52aWV3KCkuZnJhbWVWaWV3KCk7CiAgICAgaWYgKHJlbmRlcmVyKCkuaXNSZW5kZXJW
aWV3KCkgJiYgaW5zaWRlRml4ZWQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1Zpc2libGVDb250ZW50UmVjdFVwZGF0ZUluZm8uY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
VmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mby5jcHAKaW5kZXggMmVlOGQ5NmM0ZWEwY2MwZDM0
YjIyMTYwZmNkYzEwYTA5ZTI2MDQzZS4uZTlhODgzZDI4YmZlNjY3MWNkMjg1NjQ0NjE3NDExNGQz
NzUwZTE2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvVmlzaWJsZUNvbnRlbnRS
ZWN0VXBkYXRlSW5mby5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvVmlzaWJsZUNvbnRl
bnRSZWN0VXBkYXRlSW5mby5jcHAKQEAgLTM3LDYgKzM3LDcgQEAgdm9pZCBWaXNpYmxlQ29udGVu
dFJlY3RVcGRhdGVJbmZvOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewog
ICAgIGVuY29kZXIgPDwgbV9leHBvc2VkQ29udGVudFJlY3Q7CiAgICAgZW5jb2RlciA8PCBtX3Vu
b2JzY3VyZWRDb250ZW50UmVjdDsKKyAgICBlbmNvZGVyIDw8IG1fY29udGVudEluc2V0czsKICAg
ICBlbmNvZGVyIDw8IG1fdW5vYnNjdXJlZENvbnRlbnRSZWN0UmVzcGVjdGluZ0lucHV0Vmlld0Jv
dW5kczsKICAgICBlbmNvZGVyIDw8IG1fdW5vYnNjdXJlZFJlY3RJblNjcm9sbFZpZXdDb29yZGlu
YXRlczsKICAgICBlbmNvZGVyIDw8IG1fY3VzdG9tRml4ZWRQb3NpdGlvblJlY3Q7CkBAIC02MSw2
ICs2Miw4IEBAIGJvb2wgVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mbzo6ZGVjb2RlKElQQzo6
RGVjb2RlciYgZGVjb2RlciwgVmlzaWJsZUNvbnRlbnRSCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tX3Vub2JzY3VyZWRDb250ZW50UmVjdCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5t
X2NvbnRlbnRJbnNldHMpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShyZXN1bHQubV91bm9ic2N1cmVkQ29udGVudFJlY3RSZXNwZWN0aW5nSW5wdXRWaWV3
Qm91bmRzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
cmVzdWx0Lm1fdW5vYnNjdXJlZFJlY3RJblNjcm9sbFZpZXdDb29yZGluYXRlcykpCkBAIC0xMTQs
NiArMTE3LDcgQEAgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3Qg
VmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mbyYgaW5mbykKIAogICAgIHRzLmR1bXBQcm9wZXJ0
eSgiZXhwb3NlZENvbnRlbnRSZWN0IiwgaW5mby5leHBvc2VkQ29udGVudFJlY3QoKSk7CiAgICAg
dHMuZHVtcFByb3BlcnR5KCJ1bm9ic2N1cmVkQ29udGVudFJlY3QiLCBpbmZvLnVub2JzY3VyZWRD
b250ZW50UmVjdCgpKTsKKyAgICB0cy5kdW1wUHJvcGVydHkoImNvbnRlbnRJbnNldHMiLCBpbmZv
LmNvbnRlbnRJbnNldHMoKSk7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJ1bm9ic2N1cmVkQ29udGVu
dFJlY3RSZXNwZWN0aW5nSW5wdXRWaWV3Qm91bmRzIiwgaW5mby51bm9ic2N1cmVkQ29udGVudFJl
Y3RSZXNwZWN0aW5nSW5wdXRWaWV3Qm91bmRzKCkpOwogICAgIHRzLmR1bXBQcm9wZXJ0eSgidW5v
YnNjdXJlZFJlY3RJblNjcm9sbFZpZXdDb29yZGluYXRlcyIsIGluZm8udW5vYnNjdXJlZFJlY3RJ
blNjcm9sbFZpZXdDb29yZGluYXRlcygpKTsKICAgICB0cy5kdW1wUHJvcGVydHkoImN1c3RvbUZp
eGVkUG9zaXRpb25SZWN0IiwgaW5mby5jdXN0b21GaXhlZFBvc2l0aW9uUmVjdCgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Zpc2libGVDb250ZW50UmVjdFVwZGF0ZUluZm8u
aCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Zpc2libGVDb250ZW50UmVjdFVwZGF0ZUluZm8uaApp
bmRleCA5MWMxODIyYTc0YWNkZWY4OTBmZTU2MTIwNWZkMWJhODdkNTMzZWM0Li44MTRjYTU0YzIx
ZDNmNTMzNTY3MmUxY2UyM2I1ZjZjYjhkNWY4ZWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9WaXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZvLmgKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mby5oCkBAIC00NSw5ICs0NSwxMCBA
QCBjbGFzcyBWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZvIHsKIHB1YmxpYzoKICAgICBWaXNp
YmxlQ29udGVudFJlY3RVcGRhdGVJbmZvKCkgPSBkZWZhdWx0OwogCi0gICAgVmlzaWJsZUNvbnRl
bnRSZWN0VXBkYXRlSW5mbyhjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGV4cG9zZWRDb250ZW50
UmVjdCwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiB1bm9ic2N1cmVkQ29udGVudFJlY3QsIGNv
bnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgdW5vYnNjdXJlZFJlY3RJblNjcm9sbFZpZXdDb29yZGlu
YXRlcywgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiB1bm9ic2N1cmVkQ29udGVudFJlY3RSZXNw
ZWN0aW5nSW5wdXRWaWV3Qm91bmRzLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGN1c3RvbUZp
eGVkUG9zaXRpb25SZWN0LCBjb25zdCBXZWJDb3JlOjpGbG9hdEJveEV4dGVudCYgb2JzY3VyZWRJ
bnNldHMsIGNvbnN0IFdlYkNvcmU6OkZsb2F0Qm94RXh0ZW50JiB1bm9ic2N1cmVkU2FmZUFyZWFJ
bnNldHMsIGRvdWJsZSBzY2FsZSwgYm9vbCBpblN0YWJsZVN0YXRlLCBib29sIGlzRmlyc3RVcGRh
dGVGb3JOZXdWaWV3U2l6ZSwgYm9vbCBpc0NoYW5naW5nT2JzY3VyZWRJbnNldHNJbnRlcmFjdGl2
ZWx5LCBib29sIGFsbG93U2hyaW5rVG9GaXQsIGJvb2wgZW5jbG9zZWRJblNjcm9sbGFibGVBbmNl
c3RvclZpZXcsIE1vbm90b25pY1RpbWUgdGltZXN0YW1wLCBkb3VibGUgaG9yaXpvbnRhbFZlbG9j
aXR5LCBkb3VibGUgdmVydGljYWxWZWxvY2l0eSwgZG91YmxlIHNjYWxlQ2hhbmdlUmF0ZSwgdWlu
dDY0X3QgbGFzdExheWVyVHJlZVRyYW5zYWN0aW9uSWQpCisgICAgVmlzaWJsZUNvbnRlbnRSZWN0
VXBkYXRlSW5mbyhjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGV4cG9zZWRDb250ZW50UmVjdCwg
Y29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiB1bm9ic2N1cmVkQ29udGVudFJlY3QsIGNvbnN0IFdl
YkNvcmU6OkZsb2F0Qm94RXh0ZW50JiBjb250ZW50SW5zZXRzLCBjb25zdCBXZWJDb3JlOjpGbG9h
dFJlY3QmIHVub2JzY3VyZWRSZWN0SW5TY3JvbGxWaWV3Q29vcmRpbmF0ZXMsIGNvbnN0IFdlYkNv
cmU6OkZsb2F0UmVjdCYgdW5vYnNjdXJlZENvbnRlbnRSZWN0UmVzcGVjdGluZ0lucHV0Vmlld0Jv
dW5kcywgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBjdXN0b21GaXhlZFBvc2l0aW9uUmVjdCwg
Y29uc3QgV2ViQ29yZTo6RmxvYXRCb3hFeHRlbnQmIG9ic2N1cmVkSW5zZXRzLCBjb25zdCBXZWJD
b3JlOjpGbG9hdEJveEV4dGVudCYgdW5vYnNjdXJlZFNhZmVBcmVhSW5zZXRzLCBkb3VibGUgc2Nh
bGUsIGJvb2wgaW5TdGFibGVTdGF0ZSwgYm9vbCBpc0ZpcnN0VXBkYXRlRm9yTmV3Vmlld1NpemUs
IGJvb2wgaXNDaGFuZ2luZ09ic2N1cmVkSW5zZXRzSW50ZXJhY3RpdmVseSwgYm9vbCBhbGxvd1No
cmlua1RvRml0LCBib29sIGVuY2xvc2VkSW5TY3JvbGxhYmxlQW5jZXN0b3JWaWV3LCBNb25vdG9u
aWNUaW1lIHRpbWVzdGFtcCwgZG91YmxlIGhvcml6b250YWxWZWxvY2l0eSwgZG91YmxlIHZlcnRp
Y2FsVmVsb2NpdHksIGRvdWJsZSBzY2FsZUNoYW5nZVJhdGUsIHVpbnQ2NF90IGxhc3RMYXllclRy
ZWVUcmFuc2FjdGlvbklkKQogICAgICAgICA6IG1fZXhwb3NlZENvbnRlbnRSZWN0KGV4cG9zZWRD
b250ZW50UmVjdCkKICAgICAgICAgLCBtX3Vub2JzY3VyZWRDb250ZW50UmVjdCh1bm9ic2N1cmVk
Q29udGVudFJlY3QpCisgICAgICAgICwgbV9jb250ZW50SW5zZXRzKGNvbnRlbnRJbnNldHMpCiAg
ICAgICAgICwgbV91bm9ic2N1cmVkQ29udGVudFJlY3RSZXNwZWN0aW5nSW5wdXRWaWV3Qm91bmRz
KHVub2JzY3VyZWRDb250ZW50UmVjdFJlc3BlY3RpbmdJbnB1dFZpZXdCb3VuZHMpCiAgICAgICAg
ICwgbV91bm9ic2N1cmVkUmVjdEluU2Nyb2xsVmlld0Nvb3JkaW5hdGVzKHVub2JzY3VyZWRSZWN0
SW5TY3JvbGxWaWV3Q29vcmRpbmF0ZXMpCiAgICAgICAgICwgbV9jdXN0b21GaXhlZFBvc2l0aW9u
UmVjdChjdXN0b21GaXhlZFBvc2l0aW9uUmVjdCkKQEAgLTY5LDYgKzcwLDcgQEAgcHVibGljOgog
CiAgICAgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBleHBvc2VkQ29udGVudFJlY3QoKSBjb25z
dCB7IHJldHVybiBtX2V4cG9zZWRDb250ZW50UmVjdDsgfQogICAgIGNvbnN0IFdlYkNvcmU6OkZs
b2F0UmVjdCYgdW5vYnNjdXJlZENvbnRlbnRSZWN0KCkgY29uc3QgeyByZXR1cm4gbV91bm9ic2N1
cmVkQ29udGVudFJlY3Q7IH0KKyAgICBjb25zdCBXZWJDb3JlOjpGbG9hdEJveEV4dGVudCYgY29u
dGVudEluc2V0cygpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudEluc2V0czsgfQogICAgIGNvbnN0
IFdlYkNvcmU6OkZsb2F0UmVjdCYgdW5vYnNjdXJlZFJlY3RJblNjcm9sbFZpZXdDb29yZGluYXRl
cygpIGNvbnN0IHsgcmV0dXJuIG1fdW5vYnNjdXJlZFJlY3RJblNjcm9sbFZpZXdDb29yZGluYXRl
czsgfQogICAgIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgdW5vYnNjdXJlZENvbnRlbnRSZWN0
UmVzcGVjdGluZ0lucHV0Vmlld0JvdW5kcygpIGNvbnN0IHsgcmV0dXJuIG1fdW5vYnNjdXJlZENv
bnRlbnRSZWN0UmVzcGVjdGluZ0lucHV0Vmlld0JvdW5kczsgfQogICAgIGNvbnN0IFdlYkNvcmU6
OkZsb2F0UmVjdCYgY3VzdG9tRml4ZWRQb3NpdGlvblJlY3QoKSBjb25zdCB7IHJldHVybiBtX2N1
c3RvbUZpeGVkUG9zaXRpb25SZWN0OyB9CkBAIC05Nyw2ICs5OSw3IEBAIHB1YmxpYzoKIHByaXZh
dGU6CiAgICAgV2ViQ29yZTo6RmxvYXRSZWN0IG1fZXhwb3NlZENvbnRlbnRSZWN0OwogICAgIFdl
YkNvcmU6OkZsb2F0UmVjdCBtX3Vub2JzY3VyZWRDb250ZW50UmVjdDsKKyAgICBXZWJDb3JlOjpG
bG9hdEJveEV4dGVudCBtX2NvbnRlbnRJbnNldHM7CiAgICAgV2ViQ29yZTo6RmxvYXRSZWN0IG1f
dW5vYnNjdXJlZENvbnRlbnRSZWN0UmVzcGVjdGluZ0lucHV0Vmlld0JvdW5kczsKICAgICBXZWJD
b3JlOjpGbG9hdFJlY3QgbV91bm9ic2N1cmVkUmVjdEluU2Nyb2xsVmlld0Nvb3JkaW5hdGVzOwog
ICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBtX2N1c3RvbUZpeGVkUG9zaXRpb25SZWN0OyAvLyBXaGVu
IHZpc3VhbCB2aWV3cG9ydHMgYXJlIGVuYWJsZWQsIHRoaXMgaXMgdGhlIGxheW91dCB2aWV3cG9y
dC4KQEAgLTEyMSw2ICsxMjQsNyBAQCBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFZpc2li
bGVDb250ZW50UmVjdFVwZGF0ZUluZm8mIGEsIGNvbnN0IFZpc2libGVDb250ZQogICAgIHJldHVy
biBhLnNjYWxlKCkgPT0gYi5zY2FsZSgpCiAgICAgICAgICYmIGEuZXhwb3NlZENvbnRlbnRSZWN0
KCkgPT0gYi5leHBvc2VkQ29udGVudFJlY3QoKQogICAgICAgICAmJiBhLnVub2JzY3VyZWRDb250
ZW50UmVjdCgpID09IGIudW5vYnNjdXJlZENvbnRlbnRSZWN0KCkKKyAgICAgICAgJiYgYS5jb250
ZW50SW5zZXRzKCkgPT0gYi5jb250ZW50SW5zZXRzKCkKICAgICAgICAgJiYgYS51bm9ic2N1cmVk
Q29udGVudFJlY3RSZXNwZWN0aW5nSW5wdXRWaWV3Qm91bmRzKCkgPT0gYi51bm9ic2N1cmVkQ29u
dGVudFJlY3RSZXNwZWN0aW5nSW5wdXRWaWV3Qm91bmRzKCkKICAgICAgICAgJiYgYS5jdXN0b21G
aXhlZFBvc2l0aW9uUmVjdCgpID09IGIuY3VzdG9tRml4ZWRQb3NpdGlvblJlY3QoKQogICAgICAg
ICAmJiBhLm9ic2N1cmVkSW5zZXRzKCkgPT0gYi5vYnNjdXJlZEluc2V0cygpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCA0YTQ0MWIwY2Rk
OGE2ZDdkMTVkOGYxYTFmM2FlMDVmYzhiNjFjYjU2Li5hZTBlMjUwYjQwZjdlZWJmNzY5MjljMmRm
NDg3ZTU1NGQ0NzRiZmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXcubW0KQEAgLTE3MzQsNyArMTczNCw3IEBAIC0gKFVJRWRnZUluc2V0cylfY29t
cHV0ZWRPYnNjdXJlZEluc2V0CiAgICAgaWYgKF9oYXZlU2V0T2JzY3VyZWRJbnNldHMpCiAgICAg
ICAgIHJldHVybiBfb2JzY3VyZWRJbnNldHM7CiAKLSNpZiBfX0lQSE9ORV9PU19WRVJTSU9OX01J
Tl9SRVFVSVJFRCA+PSAxMTAwMDAKKyNpZiBQTEFURk9STShJT1MpCiAgICAgaWYgKHNlbGYuX3Nh
ZmVBcmVhU2hvdWxkQWZmZWN0T2JzY3VyZWRJbnNldHMpCiAgICAgICAgIHJldHVybiBVSUVkZ2VJ
bnNldHNBZGQoVUlFZGdlSW5zZXRzWmVybywgc2VsZi5fc2Nyb2xsVmlld1N5c3RlbUNvbnRlbnRJ
bnNldCwgc2VsZi5fZWZmZWN0aXZlT2JzY3VyZWRJbnNldEVkZ2VzQWZmZWN0ZWRCeVNhZmVBcmVh
KTsKICNlbmRpZgpAQCAtMTc0OSw3ICsxNzQ5LDcgQEAgLSAoVUlFZGdlSW5zZXRzKV9jb21wdXRl
ZENvbnRlbnRJbnNldAogCiAgICAgVUlFZGdlSW5zZXRzIGluc2V0cyA9IFtfc2Nyb2xsVmlldyBj
b250ZW50SW5zZXRdOwogCi0jaWYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0g
MTEwMDAwCisjaWYgUExBVEZPUk0oSU9TKQogICAgIGlmIChzZWxmLl9zYWZlQXJlYVNob3VsZEFm
ZmVjdE9ic2N1cmVkSW5zZXRzKQogICAgICAgICBpbnNldHMgPSBVSUVkZ2VJbnNldHNBZGQoaW5z
ZXRzLCBzZWxmLl9zY3JvbGxWaWV3U3lzdGVtQ29udGVudEluc2V0LCBzZWxmLl9lZmZlY3RpdmVP
YnNjdXJlZEluc2V0RWRnZXNBZmZlY3RlZEJ5U2FmZUFyZWEpOwogI2VuZGlmCkBAIC0xNzYyLDcg
KzE3NjIsNyBAQCAtIChVSUVkZ2VJbnNldHMpX2NvbXB1dGVkVW5vYnNjdXJlZFNhZmVBcmVhSW5z
ZXQKICAgICBpZiAoX2hhdmVTZXRVbm9ic2N1cmVkU2FmZUFyZWFJbnNldHMpCiAgICAgICAgIHJl
dHVybiBfdW5vYnNjdXJlZFNhZmVBcmVhSW5zZXRzOwogCi0jaWYgX19JUEhPTkVfT1NfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwCisjaWYgUExBVEZPUk0oSU9TKQogICAgIGlmICghc2Vs
Zi5fc2FmZUFyZWFTaG91bGRBZmZlY3RPYnNjdXJlZEluc2V0cykKICAgICAgICAgcmV0dXJuIHNl
bGYuc2FmZUFyZWFJbnNldHM7CiAjZW5kaWYKQEAgLTI5NzUsNiArMjk3NSwyNiBAQCAtICh2b2lk
KV91cGRhdGVWaXNpYmxlQ29udGVudFJlY3RzCiAgICAgQ0dSZWN0IHVub2JzY3VyZWRSZWN0SW5D
b250ZW50Q29vcmRpbmF0ZXMgPSBfZnJvemVuVW5vYnNjdXJlZENvbnRlbnRSZWN0ID8gX2Zyb3pl
blVub2JzY3VyZWRDb250ZW50UmVjdC52YWx1ZSgpIDogW3NlbGYgY29udmVydFJlY3Q6dW5vYnNj
dXJlZFJlY3QgdG9WaWV3Ol9jb250ZW50Vmlldy5nZXQoKV07CiAgICAgdW5vYnNjdXJlZFJlY3RJ
bkNvbnRlbnRDb29yZGluYXRlcyA9IENHUmVjdEludGVyc2VjdGlvbih1bm9ic2N1cmVkUmVjdElu
Q29udGVudENvb3JkaW5hdGVzLCBbc2VsZiBfY29udGVudEJvdW5kc0V4dGVuZGVkRm9yUnViYmVy
YmFuZGluZ1dpdGhTY2FsZTpzY2FsZUZhY3Rvcl0pOwogCisgICAgLy8gVGhlIGZvbGxvd2luZyBs
b2dpYyBjb21wdXRlcyB0aGUgZXh0ZW50IHRvIHdoaWNoIHRoZSBib3R0b20sIHRvcCwgbGVmdCBh
bmQgcmlnaHQgY29udGVudCBpbnNldHMgYXJlIHZpc2libGUuCisgICAgYXV0byBzY3JvbGxWaWV3
SW5zZXRzID0gW19zY3JvbGxWaWV3IGNvbnRlbnRJbnNldF07CisgICAgYXV0byBzY3JvbGxWaWV3
Qm91bmRzID0gW19zY3JvbGxWaWV3IGJvdW5kc107CisgICAgYXV0byBzY3JvbGxWaWV3Q29udGVu
dFNpemUgPSBbX3Njcm9sbFZpZXcgY29udGVudFNpemVdOworICAgIGF1dG8gc2Nyb2xsVmlld09y
aWdpbkluY2x1ZGluZ0luc2V0ID0gVUlFZGdlSW5zZXRzSW5zZXRSZWN0KHNjcm9sbFZpZXdCb3Vu
ZHMsIGNvbXB1dGVkQ29udGVudEluc2V0VW5hZGp1c3RlZEZvcktleWJvYXJkKS5vcmlnaW47Cisg
ICAgYXV0byBtYXhpbXVtVmVydGljYWxTY3JvbGxFeHRlbnRXaXRob3V0UmV2ZWFsaW5nQm90dG9t
Q29udGVudEluc2V0ID0gc2Nyb2xsVmlld0NvbnRlbnRTaXplLmhlaWdodCAtIENHUmVjdEdldEhl
aWdodChzY3JvbGxWaWV3Qm91bmRzKTsKKyAgICBhdXRvIG1heGltdW1Ib3Jpem9udGFsU2Nyb2xs
RXh0ZW50V2l0aG91dFJldmVhbGluZ1JpZ2h0Q29udGVudEluc2V0ID0gc2Nyb2xsVmlld0NvbnRl
bnRTaXplLndpZHRoIC0gQ0dSZWN0R2V0V2lkdGgoc2Nyb2xsVmlld0JvdW5kcyk7CisgICAgYXV0
byBjb250ZW50SW5zZXRzID0gVUlFZGdlSW5zZXRzWmVybzsKKyAgICBpZiAoc2Nyb2xsVmlld0lu
c2V0cy5sZWZ0ID4gMCAmJiBzY3JvbGxWaWV3T3JpZ2luSW5jbHVkaW5nSW5zZXQueCA8IDApCisg
ICAgICAgIGNvbnRlbnRJbnNldHMubGVmdCA9IHN0ZDo6bWluKC1zY3JvbGxWaWV3T3JpZ2luSW5j
bHVkaW5nSW5zZXQueCwgc2Nyb2xsVmlld0luc2V0cy5sZWZ0KSAvIHNjYWxlRmFjdG9yOworCisg
ICAgaWYgKHNjcm9sbFZpZXdJbnNldHMudG9wID4gMCAmJiBzY3JvbGxWaWV3T3JpZ2luSW5jbHVk
aW5nSW5zZXQueSA8IDApCisgICAgICAgIGNvbnRlbnRJbnNldHMudG9wID0gc3RkOjptaW4oLXNj
cm9sbFZpZXdPcmlnaW5JbmNsdWRpbmdJbnNldC55LCBzY3JvbGxWaWV3SW5zZXRzLnRvcCkgLyBz
Y2FsZUZhY3RvcjsKKworICAgIGlmIChzY3JvbGxWaWV3SW5zZXRzLnJpZ2h0ID4gMCAmJiBzY3Jv
bGxWaWV3T3JpZ2luSW5jbHVkaW5nSW5zZXQueCA+IG1heGltdW1Ib3Jpem9udGFsU2Nyb2xsRXh0
ZW50V2l0aG91dFJldmVhbGluZ1JpZ2h0Q29udGVudEluc2V0KQorICAgICAgICBjb250ZW50SW5z
ZXRzLnJpZ2h0ID0gc3RkOjptaW4oc2Nyb2xsVmlld09yaWdpbkluY2x1ZGluZ0luc2V0LnggLSBt
YXhpbXVtSG9yaXpvbnRhbFNjcm9sbEV4dGVudFdpdGhvdXRSZXZlYWxpbmdSaWdodENvbnRlbnRJ
bnNldCwgc2Nyb2xsVmlld0luc2V0cy5yaWdodCkgLyBzY2FsZUZhY3RvcjsKKworICAgIGlmIChz
Y3JvbGxWaWV3SW5zZXRzLmJvdHRvbSA+IDAgJiYgc2Nyb2xsVmlld09yaWdpbkluY2x1ZGluZ0lu
c2V0LnkgPiBtYXhpbXVtVmVydGljYWxTY3JvbGxFeHRlbnRXaXRob3V0UmV2ZWFsaW5nQm90dG9t
Q29udGVudEluc2V0KQorICAgICAgICBjb250ZW50SW5zZXRzLmJvdHRvbSA9IHN0ZDo6bWluKHNj
cm9sbFZpZXdPcmlnaW5JbmNsdWRpbmdJbnNldC55IC0gbWF4aW11bVZlcnRpY2FsU2Nyb2xsRXh0
ZW50V2l0aG91dFJldmVhbGluZ0JvdHRvbUNvbnRlbnRJbnNldCwgc2Nyb2xsVmlld0luc2V0cy5i
b3R0b20pIC8gc2NhbGVGYWN0b3I7CisKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKSAmJiBF
TkFCTEUoQVNZTkNfU0NST0xMSU5HKQogICAgIGlmIChpblN0YWJsZVN0YXRlKSB7CiAgICAgICAg
IFdlYktpdDo6UmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eSogY29vcmRpbmF0b3IgPSBf
cGFnZS0+c2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eSgpOwpAQCAtMjk5NCw2ICszMDE0LDcgQEAg
LSAodm9pZClfdXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0cwogCiAgICAgW19jb250ZW50VmlldyBk
aWRVcGRhdGVWaXNpYmxlUmVjdDp2aXNpYmxlUmVjdEluQ29udGVudENvb3JkaW5hdGVzCiAgICAg
ICAgIHVub2JzY3VyZWRSZWN0OnVub2JzY3VyZWRSZWN0SW5Db250ZW50Q29vcmRpbmF0ZXMKKyAg
ICAgICAgY29udGVudEluc2V0czpjb250ZW50SW5zZXRzCiAgICAgICAgIHVub2JzY3VyZWRSZWN0
SW5TY3JvbGxWaWV3Q29vcmRpbmF0ZXM6dW5vYnNjdXJlZFJlY3QKICAgICAgICAgb2JzY3VyZWRJ
bnNldHM6X29ic2N1cmVkSW5zZXRzCiAgICAgICAgIHVub2JzY3VyZWRTYWZlQXJlYUluc2V0czpb
c2VsZiBfY29tcHV0ZWRVbm9ic2N1cmVkU2FmZUFyZWFJbnNldF0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3LmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5oCmluZGV4IGEwNjA3ZTNkMWFiYzc1Mjg5ODE3OTkx
YTRiMmU2MWVmODI5MmMxNjkuLjUyMmFjYTE5ZDAyYjA4OTY4OGNjODIzMjMzYzllMDFlNjgzZWJj
NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcuaApAQCAt
NzEsNiArNzEsNyBAQCBjbGFzcyBXZWJQcm9jZXNzUG9vbDsKIAogLSAodm9pZClkaWRVcGRhdGVW
aXNpYmxlUmVjdDooQ0dSZWN0KXZpc2libGVSZWN0CiAgICAgdW5vYnNjdXJlZFJlY3Q6KENHUmVj
dCl1bm9ic2N1cmVkUmVjdAorICAgIGNvbnRlbnRJbnNldHM6KFVJRWRnZUluc2V0cyljb250ZW50
SW5zZXRzCiAgICAgdW5vYnNjdXJlZFJlY3RJblNjcm9sbFZpZXdDb29yZGluYXRlczooQ0dSZWN0
KXVub2JzY3VyZWRSZWN0SW5TY3JvbGxWaWV3Q29vcmRpbmF0ZXMKICAgICBvYnNjdXJlZEluc2V0
czooVUlFZGdlSW5zZXRzKW9ic2N1cmVkSW5zZXRzCiAgICAgdW5vYnNjdXJlZFNhZmVBcmVhSW5z
ZXRzOihVSUVkZ2VJbnNldHMpdW5vYnNjdXJlZFNhZmVBcmVhSW5zZXRzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tCmluZGV4IGNlZDg1ZThjOTkxOGE3YjU2
NzE2N2Q5N2FlODhkYjYwZmFmYWYzYTUuLjMwNGMyM2Y0MDFiZmY2NDhlODMyODZkMjNmM2RiNWU1
ZTQyMjU1MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRl
bnRWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3
Lm1tCkBAIC0zNjUsNiArMzY1LDExIEBAIC0gKHZvaWQpX2RpZEV4aXRTdGFibGVTdGF0ZQogICAg
IFtfdGV4dFNlbGVjdGlvbkFzc2lzdGFudCBkZWFjdGl2YXRlU2VsZWN0aW9uXTsKIH0KIAorc3Rh
dGljIFdlYkNvcmU6OkZsb2F0Qm94RXh0ZW50IGZsb2F0Qm94RXh0ZW50KFVJRWRnZUluc2V0cyBp
bnNldHMpCit7CisgICAgcmV0dXJuIFdlYkNvcmU6OkZsb2F0Qm94RXh0ZW50KGluc2V0cy50b3As
IGluc2V0cy5yaWdodCwgaW5zZXRzLmJvdHRvbSwgaW5zZXRzLmxlZnQpOworfQorCiAtIChDR1Jl
Y3QpX2NvbXB1dGVVbm9ic2N1cmVkQ29udGVudFJlY3RSZXNwZWN0aW5nSW5wdXRWaWV3Qm91bmRz
OihDR1JlY3QpdW5vYnNjdXJlZENvbnRlbnRSZWN0IGlucHV0Vmlld0JvdW5kczooQ0dSZWN0KWlu
cHV0Vmlld0JvdW5kcwogewogICAgIC8vIFRoZSBpbnB1dCB2aWV3IGJvdW5kcyBhcmUgaW4gd2lu
ZG93IGNvb3JkaW5hdGVzLCBidXQgdGhlIHVub2JzY3VyZWQgcmVjdCBpcyBpbiBjb250ZW50IGNv
b3JkaW5hdGVzLiBBY2NvdW50IGZvciB0aGlzIGJ5IGNvbnZlcnRpbmcgaW5wdXQgdmlldyBib3Vu
ZHMgdG8gY29udGVudCBjb29yZGluYXRlcy4KQEAgLTM3Niw2ICszODEsNyBAQCAtIChDR1JlY3Qp
X2NvbXB1dGVVbm9ic2N1cmVkQ29udGVudFJlY3RSZXNwZWN0aW5nSW5wdXRWaWV3Qm91bmRzOihD
R1JlY3QpdW5vYnNjdQogCiAtICh2b2lkKWRpZFVwZGF0ZVZpc2libGVSZWN0OihDR1JlY3Qpdmlz
aWJsZUNvbnRlbnRSZWN0CiAgICAgdW5vYnNjdXJlZFJlY3Q6KENHUmVjdCl1bm9ic2N1cmVkQ29u
dGVudFJlY3QKKyAgICBjb250ZW50SW5zZXRzOihVSUVkZ2VJbnNldHMpY29udGVudEluc2V0cwog
ICAgIHVub2JzY3VyZWRSZWN0SW5TY3JvbGxWaWV3Q29vcmRpbmF0ZXM6KENHUmVjdCl1bm9ic2N1
cmVkUmVjdEluU2Nyb2xsVmlld0Nvb3JkaW5hdGVzCiAgICAgb2JzY3VyZWRJbnNldHM6KFVJRWRn
ZUluc2V0cylvYnNjdXJlZEluc2V0cwogICAgIHVub2JzY3VyZWRTYWZlQXJlYUluc2V0czooVUlF
ZGdlSW5zZXRzKXVub2JzY3VyZWRTYWZlQXJlYUluc2V0cwpAQCAtNDA0LDExICs0MTAsMTIgQEAg
LSAodm9pZClkaWRVcGRhdGVWaXNpYmxlUmVjdDooQ0dSZWN0KXZpc2libGVDb250ZW50UmVjdAog
ICAgIFdlYktpdDo6VmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mbyB2aXNpYmxlQ29udGVudFJl
Y3RVcGRhdGVJbmZvKAogICAgICAgICB2aXNpYmxlQ29udGVudFJlY3QsCiAgICAgICAgIHVub2Jz
Y3VyZWRDb250ZW50UmVjdCwKKyAgICAgICAgZmxvYXRCb3hFeHRlbnQoY29udGVudEluc2V0cyks
CiAgICAgICAgIHVub2JzY3VyZWRSZWN0SW5TY3JvbGxWaWV3Q29vcmRpbmF0ZXMsCiAgICAgICAg
IHVub2JzY3VyZWRDb250ZW50UmVjdFJlc3BlY3RpbmdJbnB1dFZpZXdCb3VuZHMsCiAgICAgICAg
IGZpeGVkUG9zaXRpb25SZWN0Rm9yTGF5b3V0LAotICAgICAgICBXZWJDb3JlOjpGbG9hdEJveEV4
dGVudChvYnNjdXJlZEluc2V0cy50b3AsIG9ic2N1cmVkSW5zZXRzLnJpZ2h0LCBvYnNjdXJlZElu
c2V0cy5ib3R0b20sIG9ic2N1cmVkSW5zZXRzLmxlZnQpLAotICAgICAgICBXZWJDb3JlOjpGbG9h
dEJveEV4dGVudCh1bm9ic2N1cmVkU2FmZUFyZWFJbnNldHMudG9wLCB1bm9ic2N1cmVkU2FmZUFy
ZWFJbnNldHMucmlnaHQsIHVub2JzY3VyZWRTYWZlQXJlYUluc2V0cy5ib3R0b20sIHVub2JzY3Vy
ZWRTYWZlQXJlYUluc2V0cy5sZWZ0KSwKKyAgICAgICAgZmxvYXRCb3hFeHRlbnQob2JzY3VyZWRJ
bnNldHMpLAorICAgICAgICBmbG9hdEJveEV4dGVudCh1bm9ic2N1cmVkU2FmZUFyZWFJbnNldHMp
LAogICAgICAgICB6b29tU2NhbGUsCiAgICAgICAgIGlzU3RhYmxlU3RhdGUsCiAgICAgICAgIF9z
aXplQ2hhbmdlZFNpbmNlTGFzdFZpc2libGVDb250ZW50UmVjdFVwZGF0ZSwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggMDY2
OTZjMDY1Y2M3NzQ4YzFjYmRlMDA1NDVlMzczNjRlYTY5NGU1My4uOWIwOWEwYWZjYmIyYWE4Njcw
MGY3ZGEyYjU0ZWE5Nzg3NWNiMGNlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTMwMTYsNiArMzAxNiw3IEBAIHZvaWQg
V2ViUGFnZTo6dXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0cyhjb25zdCBWaXNpYmxlQ29udGVudFJl
Y3RVcGRhdGVJbmZvJiB2aXNpCiAgICAgICAgIHZpZXdwb3J0Q29uZmlndXJhdGlvbkNoYW5nZWQo
KTsKIAogICAgIGZyYW1lVmlldy5zZXRVbm9ic2N1cmVkQ29udGVudFNpemUodmlzaWJsZUNvbnRl
bnRSZWN0VXBkYXRlSW5mby51bm9ic2N1cmVkQ29udGVudFJlY3QoKS5zaXplKCkpOworICAgIG1f
cGFnZS0+c2V0Q29udGVudEluc2V0cyh2aXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZvLmNvbnRl
bnRJbnNldHMoKSk7CiAgICAgbV9wYWdlLT5zZXRPYnNjdXJlZEluc2V0cyh2aXNpYmxlQ29udGVu
dFJlY3RVcGRhdGVJbmZvLm9ic2N1cmVkSW5zZXRzKCkpOwogICAgIG1fcGFnZS0+c2V0VW5vYnNj
dXJlZFNhZmVBcmVhSW5zZXRzKHZpc2libGVDb250ZW50UmVjdFVwZGF0ZUluZm8udW5vYnNjdXJl
ZFNhZmVBcmVhSW5zZXRzKCkpOwogICAgIG1fcGFnZS0+c2V0RW5jbG9zZWRJblNjcm9sbGFibGVB
bmNlc3RvclZpZXcodmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mby5lbmNsb3NlZEluU2Nyb2xs
YWJsZUFuY2VzdG9yVmlldygpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xz
L0NoYW5nZUxvZwppbmRleCAwNzdkMzkzMjk0YjUzYmVlNzhhM2M0OTRlODY1NWQ3NmQ5ODI5MGQ4
Li4zNjQ0N2I5ZDM0Y2JjNGUxNGViNjQzOTFiZGI2M2IxNTk1NzZkZDY0IDEwMDY0NAotLS0gYS9U
b29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIw
MTktMDEtMTcgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAg
ICAgW2lPU10gQ29udGVudCBvZmZzZXQganVtcHMgZXJyYXRpY2FsbHkgd2hlbiBhdXRvc2Nyb2xs
aW5nIG5lYXIgc2Nyb2xsIHZpZXcgY29udGVudCBpbnNldCBhcmVhcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkzNDk0CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS80Njg1OTYyNz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGQgYSBuZXcgdGVzdCBvcHRpb24gdG8gYWRkIGEgdG9wIGNvbnRlbnQgaW5z
ZXQgdG8gdGhlIHRlc3QgcnVubmVyJ3MgV0tXZWJWaWV3J3Mgc2Nyb2xsIHZpZXcsIGFuZCBhdXRv
bWF0aWNhbGx5CisgICAgICAgIHNjcm9sbCB0byByZXZlYWwgdGhpcyB0b3AgY29udGVudCBpbnNl
dCBhcmVhIHdoZW4gYmVnaW5uaW5nIHRoZSB0ZXN0IChpLmUuLCBzY3JvbGwgdG8gKDAsIC10b3BD
b250ZW50SW5zZXQpKS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2lvcy9VSVNjcmlwdENv
bnRyb2xsZXJJT1MubW06CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcjo6Y29udGVu
dE9mZnNldFggY29uc3QpOgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXI6OmNvbnRl
bnRPZmZzZXRZIGNvbnN0KToKKyAgICAgICAgKiBUZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29u
dGV4dC9CaW5kaW5ncy9VSVNjcmlwdENvbnRyb2xsZXIuaWRsOgorICAgICAgICAqIFRlc3RSdW5u
ZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAg
IChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcjo6Y29udGVudE9mZnNldFggY29uc3QpOgorICAgICAg
ICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXI6OmNvbnRlbnRPZmZzZXRZIGNvbnN0KToKKyAgICAg
ICAgKiBUZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIu
aDoKKworICAgICAgICBBbHNvIGFkZCBuZXcgVUlTY3JpcHRDb250cm9sbGVyIG1ldGhvZHMgdG8g
YXNrIGZvciB0aGUgY29udGVudCBvZmZzZXQgb2YgdGhlIHBsYXRmb3JtIHNjcm9sbCB2aWV3Lgor
CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAg
IChXVFI6OnVwZGF0ZVRlc3RPcHRpb25zRnJvbVRlc3RIZWFkZXIpOgorICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvVGVzdE9wdGlvbnMuaDoKKyAgICAgICAgKFdUUjo6VGVzdE9wdGlvbnM6Omhh
c1NhbWVJbml0aWFsaXphdGlvbk9wdGlvbnMgY29uc3QpOgorICAgICAgICAqIFdlYktpdFRlc3RS
dW5uZXIvaW9zL1Rlc3RDb250cm9sbGVySU9TLm1tOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJv
bGxlcjo6cGxhdGZvcm1SZXNldFN0YXRlVG9Db25zaXN0ZW50VmFsdWVzKToKKyAgICAgICAgKiBX
ZWJLaXRUZXN0UnVubmVyL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW06CisgICAgICAgIChX
VFI6OlVJU2NyaXB0Q29udHJvbGxlcjo6Y29udGVudE9mZnNldFggY29uc3QpOgorICAgICAgICAo
V1RSOjpVSVNjcmlwdENvbnRyb2xsZXI6OmNvbnRlbnRPZmZzZXRZIGNvbnN0KToKKwogMjAxOS0w
MS0xNiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGEg
bmV3IFNQSSBmb3IgY29udHJvbGxpbmcgZ2V0VXNlck1lZGlhCmRpZmYgLS1naXQgYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbQppbmRleCAzOTgwMzRhNGMyMGUz
OWFjYWVmMjY5Y2U5NDU4OTQ4NDgyNGMyYjk2Li44YTExMjVmNGVmOTE5ODQ1MjY2OWUwNDE5YzU4
OWE4OTAyZThhNjcwIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9pb3MvVUlTY3Jp
cHRDb250cm9sbGVySU9TLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9VSVNjcmlw
dENvbnRyb2xsZXJJT1MubW0KQEAgLTIxMSw2ICsyMTEsMTYgQEAgc3RhdGljIENHUG9pbnQgY29u
dGVudE9mZnNldEJvdW5kZWRJblZhbGlkUmFuZ2UoVUlTY3JvbGxWaWV3ICpzY3JvbGxWaWV3LCBD
R1BvaW4KICAgICByZXR1cm4gY29udGVudE9mZnNldDsKIH0KIAorZG91YmxlIFVJU2NyaXB0Q29u
dHJvbGxlcjo6Y29udGVudE9mZnNldFgoKSBjb25zdAoreworICAgIHJldHVybiBbZ1dlYlNjcm9s
bFZpZXcgY29udGVudE9mZnNldF0ueDsKK30KKworZG91YmxlIFVJU2NyaXB0Q29udHJvbGxlcjo6
Y29udGVudE9mZnNldFkoKSBjb25zdAoreworICAgIHJldHVybiBbZ1dlYlNjcm9sbFZpZXcgY29u
dGVudE9mZnNldF0ueTsKK30KKwogdm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OnNjcm9sbFRvT2Zm
c2V0KGxvbmcgeCwgbG9uZyB5KQogewogICAgIFtnV2ViU2Nyb2xsVmlldyBzZXRDb250ZW50T2Zm
c2V0OmNvbnRlbnRPZmZzZXRCb3VuZGVkSW5WYWxpZFJhbmdlKGdXZWJTY3JvbGxWaWV3LCBDR1Bv
aW50TWFrZSh4LCB5KSkgYW5pbWF0ZWQ6WUVTXTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RSdW5u
ZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L0JpbmRpbmdzL1VJU2NyaXB0Q29udHJvbGxlci5pZGwg
Yi9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9CaW5kaW5ncy9VSVNjcmlw
dENvbnRyb2xsZXIuaWRsCmluZGV4IDdkMjA0ZTg1NzI2YTg2ZDNmYThlYzJjMzhiOTc3OGMxM2I3
MDY2MjMuLjU0MjRiYThhOGNmYmU0YWQ4MTRjMGRhYmU2MTE3MzM3ZWVkZjk2N2MgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L0JpbmRpbmdzL1VJU2Ny
aXB0Q29udHJvbGxlci5pZGwKKysrIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENv
bnRleHQvQmluZGluZ3MvVUlTY3JpcHRDb250cm9sbGVyLmlkbApAQCAtMjMxLDYgKzIzMSw5IEBA
IGludGVyZmFjZSBVSVNjcmlwdENvbnRyb2xsZXIgewogCiAgICAgdm9pZCByZXNpZ25GaXJzdFJl
c3BvbmRlcigpOwogCisgICAgcmVhZG9ubHkgYXR0cmlidXRlIGRvdWJsZSBjb250ZW50T2Zmc2V0
WDsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgZG91YmxlIGNvbnRlbnRPZmZzZXRZOworCiAgICAg
dm9pZCBzY3JvbGxUb09mZnNldChsb25nIHgsIGxvbmcgeSk7IC8vIEluaXRpYXRlIGFuIGFuaW1h
dGVkIHNjcm9sbCBpbiB0aGUgVUkgcHJvY2Vzcy4KICAgICBhdHRyaWJ1dGUgb2JqZWN0IGRpZEVu
ZFNjcm9sbGluZ0NhbGxiYWNrOwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0UnVubmVyU2hhcmVk
L1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvVGVzdFJ1bm5l
clNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCBjOTU4
N2M0MmU5ZjAzZWZhODk5NGQ1NGQzOTAxOWU3Njc4ZWM2Yjc4Li5hNWJhYTA2Y2Q1MzMyMDA1OTlm
M2FmNTY4OTNlMzc1ZjZlMDIzM2MxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0UnVubmVyU2hhcmVk
L1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RS
dW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTMz
Niw2ICszMzYsMTYgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IFVJU2NyaXB0Q29udHJvbGxl
cjo6Zm9ybUlucHV0TGFiZWwoKSBjb25zdAogICAgIHJldHVybiBudWxscHRyOwogfQogCitkb3Vi
bGUgVUlTY3JpcHRDb250cm9sbGVyOjpjb250ZW50T2Zmc2V0WCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIDA7Cit9CisKK2RvdWJsZSBVSVNjcmlwdENvbnRyb2xsZXI6OmNvbnRlbnRPZmZzZXRZKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gMDsKK30KKwogdm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OnNj
cm9sbFRvT2Zmc2V0KGxvbmcgeCwgbG9uZyB5KQogewogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmggYi9Ub29s
cy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuaApp
bmRleCBhNjQ4MmM5ZTc5NDBhOWU1NzQ1ZmIwMjY0MDY0MDhkMGI0ZTM0NThlLi5kM2ZiMWNiYjA5
MjUwYTgyNzlkZmNiMjhiYmY4YzkwMjdmNzAyMWNiIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0UnVu
bmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuaAorKysgYi9Ub29s
cy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuaApA
QCAtMTEzLDYgKzExMyw5IEBAIHB1YmxpYzoKICAgICBKU09iamVjdFJlZiBjb250ZW50c09mVXNl
ckludGVyZmFjZUl0ZW0oSlNTdHJpbmdSZWYpIGNvbnN0OwogICAgIHZvaWQgb3ZlcnJpZGVQcmVm
ZXJlbmNlKEpTU3RyaW5nUmVmIHByZWZlcmVuY2UsIEpTU3RyaW5nUmVmIHZhbHVlKTsKICAgICAK
KyAgICBkb3VibGUgY29udGVudE9mZnNldFgoKSBjb25zdDsKKyAgICBkb3VibGUgY29udGVudE9m
ZnNldFkoKSBjb25zdDsKKwogICAgIHZvaWQgc2Nyb2xsVG9PZmZzZXQobG9uZyB4LCBsb25nIHkp
OwogCiAgICAgdm9pZCBpbW1lZGlhdGVTY3JvbGxUb09mZnNldChsb25nIHgsIGxvbmcgeSk7CmRp
ZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IDdjODhlMDAyN2Yz
ZDc1MGJlNjE1NjcyMzJhODgxYWRjZGZiNGRkYTguLjkyNjE3N2VmMmM3NzI5YjQ4YTNiYzAzN2E0
MWExYjZmMmM0MzgyZDMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENv
bnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIu
Y3BwCkBAIC0xMjY2LDYgKzEyNjYsOCBAQCBzdGF0aWMgdm9pZCB1cGRhdGVUZXN0T3B0aW9uc0Zy
b21UZXN0SGVhZGVyKFRlc3RPcHRpb25zJiB0ZXN0T3B0aW9ucywgY29uc3Qgc3RkOgogICAgICAg
ICAgICAgdGVzdE9wdGlvbnMuZWRpdGFibGUgPSBwYXJzZUJvb2xlYW5UZXN0SGVhZGVyVmFsdWUo
dmFsdWUpOwogICAgICAgICBlbHNlIGlmIChrZXkgPT0gImVuYWJsZVVuZG9NYW5hZ2VyQVBJIikK
ICAgICAgICAgICAgIHRlc3RPcHRpb25zLmVuYWJsZVVuZG9NYW5hZ2VyQVBJID0gcGFyc2VCb29s
ZWFuVGVzdEhlYWRlclZhbHVlKHZhbHVlKTsKKyAgICAgICAgZWxzZSBpZiAoa2V5ID09ICJjb250
ZW50SW5zZXQudG9wIikKKyAgICAgICAgICAgIHRlc3RPcHRpb25zLmNvbnRlbnRJbnNldFRvcCA9
IHN0ZDo6c3RvZCh2YWx1ZSk7CiAgICAgICAgIHBhaXJTdGFydCA9IHBhaXJFbmQgKyAxOwogICAg
IH0KIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdE9wdGlvbnMuaCBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdE9wdGlvbnMuaAppbmRleCAxMGNkNGU0YzM0NTcx
YjBiMWI4YTAyY2I2ZGQ0NzljNjdmZWM3MzQwLi42MTRjZTdiNTgxODU5N2VhOWE0ODEzYWRjN2Iy
ZTFmYzQ2YTQ2MDc5IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RPcHRp
b25zLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0T3B0aW9ucy5oCkBAIC02OSw2
ICs2OSw4IEBAIHN0cnVjdCBUZXN0T3B0aW9ucyB7CiAgICAgYm9vbCBlZGl0YWJsZSB7IGZhbHNl
IH07CiAgICAgYm9vbCBlbmFibGVVbmRvTWFuYWdlckFQSSB7IGZhbHNlIH07CiAKKyAgICBkb3Vi
bGUgY29udGVudEluc2V0VG9wIHsgMCB9OworCiAgICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3Ig
eyAxIH07CiAgICAgVmVjdG9yPFN0cmluZz4gb3ZlcnJpZGVMYW5ndWFnZXM7CiAgICAgc3RkOjpz
dHJpbmcgYXBwbGljYXRpb25NYW5pZmVzdDsKQEAgLTExMyw3ICsxMTUsOCBAQCBzdHJ1Y3QgVGVz
dE9wdGlvbnMgewogICAgICAgICAgICAgfHwgc2hvdWxkSWdub3JlTWV0YVZpZXdwb3J0ICE9IG9w
dGlvbnMuc2hvdWxkSWdub3JlTWV0YVZpZXdwb3J0CiAgICAgICAgICAgICB8fCBlbmFibGVFZGl0
YWJsZUltYWdlcyAhPSBvcHRpb25zLmVuYWJsZUVkaXRhYmxlSW1hZ2VzCiAgICAgICAgICAgICB8
fCBlZGl0YWJsZSAhPSBvcHRpb25zLmVkaXRhYmxlCi0gICAgICAgICAgICB8fCBlbmFibGVVbmRv
TWFuYWdlckFQSSAhPSBvcHRpb25zLmVuYWJsZVVuZG9NYW5hZ2VyQVBJKQorICAgICAgICAgICAg
fHwgZW5hYmxlVW5kb01hbmFnZXJBUEkgIT0gb3B0aW9ucy5lbmFibGVVbmRvTWFuYWdlckFQSQor
ICAgICAgICAgICAgfHwgY29udGVudEluc2V0VG9wICE9IG9wdGlvbnMuY29udGVudEluc2V0VG9w
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIGlmIChleHBlcmltZW50YWxG
ZWF0dXJlcyAhPSBvcHRpb25zLmV4cGVyaW1lbnRhbEZlYXR1cmVzKQpkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvVGVzdENvbnRyb2xsZXJJT1MubW0gYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL2lvcy9UZXN0Q29udHJvbGxlcklPUy5tbQppbmRleCA0YTEwODBjYWQ0OWRm
MTBkYzFiNDQ0NjcwNWMwNzZjMWUwYWZiYjRkLi44NTVkMmQ1YmM3MDAzNDA0NzRjNDI3MWNjN2I3
YWFhOTUxMDIwMDQzIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9UZXN0
Q29udHJvbGxlcklPUy5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9UZXN0Q29u
dHJvbGxlcklPUy5tbQpAQCAtMTMyLDcgKzEzMiw4IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OnBs
YXRmb3JtUmVzZXRTdGF0ZVRvQ29uc2lzdGVudFZhbHVlcyhjb25zdCBUZXN0T3B0aW9ucyYgb3B0
CiAgICAgICAgIFVJU2Nyb2xsVmlldyAqc2Nyb2xsVmlldyA9IHdlYlZpZXcuc2Nyb2xsVmlldzsK
ICAgICAgICAgW3Njcm9sbFZpZXcgX3JlbW92ZUFsbEFuaW1hdGlvbnM6WUVTXTsKICAgICAgICAg
W3Njcm9sbFZpZXcgc2V0Wm9vbVNjYWxlOjEgYW5pbWF0ZWQ6Tk9dOwotICAgICAgICBbc2Nyb2xs
VmlldyBzZXRDb250ZW50T2Zmc2V0OkNHUG9pbnRaZXJvXTsKKyAgICAgICAgc2Nyb2xsVmlldy5j
b250ZW50SW5zZXQgPSBVSUVkZ2VJbnNldHNNYWtlKG9wdGlvbnMuY29udGVudEluc2V0VG9wLCAw
LCAwLCAwKTsKKyAgICAgICAgc2Nyb2xsVmlldy5jb250ZW50T2Zmc2V0ID0gQ0dQb2ludE1ha2Uo
MCwgLW9wdGlvbnMuY29udGVudEluc2V0VG9wKTsKIAogICAgICAgICBpZiAod2ViVmlldy5pbnRl
cmFjdGluZ1dpdGhGb3JtQ29udHJvbCkKICAgICAgICAgICAgIHNob3VsZFJlc3RvcmVGaXJzdFJl
c3BvbmRlciA9IFt3ZWJWaWV3IHJlc2lnbkZpcnN0UmVzcG9uZGVyXTsKZGlmZiAtLWdpdCBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbSBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbQppbmRleCA5ZTIw
NDc3YjFlODY4MjY3ZjQ5YzRhMDA5MmIwYWQ1OGMzZDQ5MTg2Li40YWE5NDI5MDU3ODc0OGNmODFi
YzUzNTUwNzZkZmEyN2E4YTgxYzVkIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tCkBAIC00ODcsNiArNDg3LDE4IEBAIHN0YXRp
YyBDR1BvaW50IGNvbnRlbnRPZmZzZXRCb3VuZGVkSW5WYWxpZFJhbmdlKFVJU2Nyb2xsVmlldyAq
c2Nyb2xsVmlldywgQ0dQb2luCiAgICAgcmV0dXJuIGNvbnRlbnRPZmZzZXQ7CiB9CiAKK2RvdWJs
ZSBVSVNjcmlwdENvbnRyb2xsZXI6OmNvbnRlbnRPZmZzZXRYKCkgY29uc3QKK3sKKyAgICBUZXN0
UnVubmVyV0tXZWJWaWV3ICp3ZWJWaWV3ID0gVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1h
aW5XZWJWaWV3KCktPnBsYXRmb3JtVmlldygpOworICAgIHJldHVybiB3ZWJWaWV3LnNjcm9sbFZp
ZXcuY29udGVudE9mZnNldC54OworfQorCitkb3VibGUgVUlTY3JpcHRDb250cm9sbGVyOjpjb250
ZW50T2Zmc2V0WSgpIGNvbnN0Cit7CisgICAgVGVzdFJ1bm5lcldLV2ViVmlldyAqd2ViVmlldyA9
IFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5tYWluV2ViVmlldygpLT5wbGF0Zm9ybVZpZXco
KTsKKyAgICByZXR1cm4gd2ViVmlldy5zY3JvbGxWaWV3LmNvbnRlbnRPZmZzZXQueTsKK30KKwog
dm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OnNjcm9sbFRvT2Zmc2V0KGxvbmcgeCwgbG9uZyB5KQog
ewogICAgIFRlc3RSdW5uZXJXS1dlYlZpZXcgKndlYlZpZXcgPSBUZXN0Q29udHJvbGxlcjo6c2lu
Z2xldG9uKCkubWFpbldlYlZpZXcoKS0+cGxhdGZvcm1WaWV3KCk7CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZTg1NjI1NGY2
YjUwMDU1MDVmOGExZGQzYzNjOTYxZTg3OTAxZDdjMS4uZjVjNWE4NzJmOGQwM2Y1MWVkN2IxMDBj
NTM4ZmQ4MWY0MWFmNGY3ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE5LTAxLTE3ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIENvbnRl
bnQgb2Zmc2V0IGp1bXBzIGVycmF0aWNhbGx5IHdoZW4gYXV0b3Njcm9sbGluZyBuZWFyIHNjcm9s
bCB2aWV3IGNvbnRlbnQgaW5zZXQgYXJlYXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE5MzQ5NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDY4NTk2
Mjc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBl
ZGl0aW5nL3NlbGVjdGlvbi9pb3MvYXV0b3Njcm9sbC13aXRoLXRvcC1jb250ZW50LWluc2V0LWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vaW9zL2F1dG9z
Y3JvbGwtd2l0aC10b3AtY29udGVudC1pbnNldC5odG1sOiBBZGRlZC4KKworICAgICAgICBBZGQg
YSBuZXcgdGVzdCB0byB2ZXJpZnkgdGhhdCBtb3ZpbmcgdGhlIHNlbGVjdGlvbiBieSBhdXRvc2Ny
b2xsaW5nIG5lYXIgdGhlIHRvcCBjb250ZW50IGluc2V0IGFyZWEgZG9lcyBub3QKKyAgICAgICAg
Y2F1c2UgdGhlIHNjcm9sbCB2aWV3J3MgY29udGVudCBvZmZzZXQgdG8ganVtcC4KKworICAgICAg
ICAqIGZhc3Qvc2Nyb2xsaW5nL2lvcy9zY3JvbGwtaW50by12aWV3LXdpdGgtdG9wLWNvbnRlbnQt
aW5zZXQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9pb3Mv
c2Nyb2xsLWludG8tdmlldy13aXRoLXRvcC1jb250ZW50LWluc2V0Lmh0bWw6IEFkZGVkLgorCisg
ICAgICAgIEFkZCBhIG5ldyB0ZXN0IHRvIHZlcmlmeSB0aGF0IHByb2dyYW1tYXRpY2FsbHkgc2Ny
b2xsaW5nIGFuIGVsZW1lbnQgdGhhdCdzIGFscmVhZHkgdmlzaWJsZSBpbnRvIHZpZXcgZG9lcyBu
b3QKKyAgICAgICAgc2Nyb2xsIGF3YXkgdGhlIHNjcm9sbCB2aWV3J3MgY29udGVudCBpbnNldC4K
KworICAgICAgICAqIHJlc291cmNlcy91aS1oZWxwZXIuanM6CisgICAgICAgICh3aW5kb3cuVUlI
ZWxwZXIuY29udGVudE9mZnNldCk6CisgICAgICAgICh3aW5kb3cuVUlIZWxwZXIpOgorCiAyMDE5
LTAxLTE2ICBBbGljaWEgQm95YSBHYXJjw61hICA8YWJveWFAaWdhbGlhLmNvbT4KIAogICAgICAg
ICBVbnJldmlld2VkIEdUSyBhbmQgV1BFIHRlc3QgZ2FyZGVuaW5nLgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vaW9zL2F1dG9zY3JvbGwtd2l0aC10b3AtY29udGVu
dC1pbnNldC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9pb3Mv
YXV0b3Njcm9sbC13aXRoLXRvcC1jb250ZW50LWluc2V0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4zZWU1Y2ZmODVhODI2MTVjZDM1MzIxZTEwZmQwYmVlYjI0Yzc0ZGIyCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vaW9zL2F1dG9zY3JvbGwtd2l0aC10
b3AtY29udGVudC1pbnNldC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMyBAQAorU2VsZWN0IG1l
IGFuZCBkcmFnIHVwLgorCitWZXJpZmllcyB0aGF0IHRyaWdnZXJpbmcgYXV0b3Njcm9sbCBuZWFy
IHRoZSB0b3Agb2YgYSB3ZWIgdmlldyB3aXRoIGEgdG9wIGNvbnRlbnQgaW5zZXQgZG9lcyBub3Qg
Y2F1c2UgdGhlIHNjcm9sbCB2aWV3J3MgY29udGVudCBvZmZzZXQgdG8ganVtcCB0byAwLiBUaGlz
IHRlc3QgcmVxdWlyZXMgV2ViS2l0VGVzdFJ1bm5lci4gVG8gdmVyaWZ5IG1hbnVhbGx5LCBsb2Fk
IHRoaXMgcGFnZSBpbiBhIHdlYiB2aWV3IHRoYXQgaGFzIGEgc2Nyb2xsIHZpZXcgdG9wIGNvbnRl
bnQgaW5zZXQsIGFuZCBzY3JvbGwgc3VjaCB0aGF0IHRoZSBmdWxsIHRvcCBjb250ZW50IGluc2V0
IGFyZWEgaXMgdmlzaWJsZS4gQ2hlY2sgdGhhdCBzdGFydGluZyBhIHRleHQgc2VsZWN0aW9uIGxv
dXBlIGdlc3R1cmUgbmVhciB0aGUgdG9wIG9mIHRoZSB0b3Agb2YgdGhlIGRvY3VtZW50IGFuZCBk
cmFnZ2luZyB1cHdhcmRzIGRvZXMgbm90IHRocmFzaCB0aGUgc2Nyb2xsIHZpZXcncyBjb250ZW50
IG9mZnNldC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZmluYWxDb250
ZW50T2Zmc2V0LnggaXMgMAorUEFTUyB2ZXJ0aWNhbE1vdmVtZW50RHVyaW5nRHJhZyA8IDEgaXMg
dHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2lvcy9hdXRvc2Nyb2xs
LXdpdGgtdG9wLWNvbnRlbnQtaW5zZXQuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0
aW9uL2lvcy9hdXRvc2Nyb2xsLXdpdGgtdG9wLWNvbnRlbnQtaW5zZXQuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5mNDMzN2VmMGY0MWQwMzI5NGY5YTg0M2E2ZTJlY2NiMjVlNmVmYzg1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vaW9zL2F1dG9zY3JvbGwtd2l0aC10
b3AtY29udGVudC1pbnNldC5odG1sCkBAIC0wLDAgKzEsNTEgQEAKKzwhRE9DVFlQRSBodG1sPiA8
IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIHVzZUZsZXhpYmxlVmlld3BvcnQ9dHJ1ZSwgY29udGVu
dEluc2V0LnRvcD0xMDAgXSAtLT4KKzxodG1sPgorPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRl
bnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xIj4KKzxoZWFkPgorICAgIDxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvYmFzaWMtZ2VzdHVyZXMuanMiPjwvc2NyaXB0
PgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3Nj
cmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwv
c2NyaXB0PgorICAgIDxzdHlsZT4KKyAgICBib2R5IHsKKyAgICAgICAgbWFyZ2luOiAwOworICAg
ICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OworICAgICAgICBib3JkZXI6IHJlZCAxcHggc29s
aWQ7CisgICAgfQorCisgICAgI3RleHQgeworICAgICAgICBmb250LXNpemU6IDMwcHg7CisgICAg
fQorCisgICAgI2NvbnNvbGUgeworICAgICAgICBvdmVyZmxvdzogc2Nyb2xsOworICAgICAgICBo
ZWlnaHQ6IDEwMHB4OworICAgIH0KKyAgICA8L3N0eWxlPgorICAgIDxzY3JpcHQ+CisgICAganNU
ZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICBhc3luYyBmdW5jdGlvbiBydW4oKQorICAgIHsKKyAg
ICAgICAgYXdhaXQgVUlIZWxwZXIuYWN0aXZhdGVBbmRXYWl0Rm9ySW5wdXRTZXNzaW9uQXQoMTEw
LCA0MCk7CisgICAgICAgIG9yaWdpbmFsQ29udGVudE9mZnNldCA9IGF3YWl0IFVJSGVscGVyLmNv
bnRlbnRPZmZzZXQoKTsKKyAgICAgICAgYXdhaXQgbG9uZ1ByZXNzQW5kSG9sZEF0UG9pbnQoMTEw
LCA0MCk7CisgICAgICAgIGF3YWl0IHRvdWNoQW5kRHJhZ0Zyb21Qb2ludFRvUG9pbnQoMTEwLCA0
MCwgMjEwLCA0MCk7CisgICAgICAgIGF3YWl0IGxpZnRVcEF0UG9pbnQoMjEwLCA0MCk7CisgICAg
ICAgIGZpbmFsQ29udGVudE9mZnNldCA9IGF3YWl0IFVJSGVscGVyLmNvbnRlbnRPZmZzZXQoKTsK
KyAgICAgICAgdmVydGljYWxNb3ZlbWVudER1cmluZ0RyYWcgPSBNYXRoLmFicyhmaW5hbENvbnRl
bnRPZmZzZXQueSAtIG9yaWdpbmFsQ29udGVudE9mZnNldC55KTsKKworICAgICAgICBzaG91bGRC
ZSgiZmluYWxDb250ZW50T2Zmc2V0LngiLCAiMCIpOworICAgICAgICBzaG91bGRCZVRydWUoInZl
cnRpY2FsTW92ZW1lbnREdXJpbmdEcmFnIDwgMSIpOworICAgICAgICBmaW5pc2hKU1Rlc3QoKTsK
KyAgICB9CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBjb250ZW50ZWRpdGFibGUgb25s
b2FkPSJydW4oKSI+CisgICAgPHAgaWQ9InRleHQiPjxzdHJvbmc+U2VsZWN0IG1lIGFuZCBkcmFn
IHVwLjwvc3Ryb25nPjwvcD4KKyAgICA8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKyAgICA8cCBp
ZD0iY29uc29sZSI+PC9wPgorPC9ib2R5PgorPHNjcmlwdD4KKyAgICBkZXNjcmlwdGlvbigiVmVy
aWZpZXMgdGhhdCB0cmlnZ2VyaW5nIGF1dG9zY3JvbGwgbmVhciB0aGUgdG9wIG9mIGEgd2ViIHZp
ZXcgd2l0aCBhIHRvcCBjb250ZW50IGluc2V0IGRvZXMgbm90IGNhdXNlIHRoZSBzY3JvbGwgdmll
dydzIGNvbnRlbnQgb2Zmc2V0IHRvIGp1bXAgdG8gMC4gVGhpcyB0ZXN0IHJlcXVpcmVzIFdlYktp
dFRlc3RSdW5uZXIuIFRvIHZlcmlmeSBtYW51YWxseSwgbG9hZCB0aGlzIHBhZ2UgaW4gYSB3ZWIg
dmlldyB0aGF0IGhhcyBhIHNjcm9sbCB2aWV3IHRvcCBjb250ZW50IGluc2V0LCBhbmQgc2Nyb2xs
IHN1Y2ggdGhhdCB0aGUgZnVsbCB0b3AgY29udGVudCBpbnNldCBhcmVhIGlzIHZpc2libGUuIENo
ZWNrIHRoYXQgc3RhcnRpbmcgYSB0ZXh0IHNlbGVjdGlvbiBsb3VwZSBnZXN0dXJlIG5lYXIgdGhl
IHRvcCBvZiB0aGUgdG9wIG9mIHRoZSBkb2N1bWVudCBhbmQgZHJhZ2dpbmcgdXB3YXJkcyBkb2Vz
IG5vdCB0aHJhc2ggdGhlIHNjcm9sbCB2aWV3J3MgY29udGVudCBvZmZzZXQuIik7Cis8L3Njcmlw
dD4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL2lvcy9z
Y3JvbGwtaW50by12aWV3LXdpdGgtdG9wLWNvbnRlbnQtaW5zZXQtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvaW9zL3Njcm9sbC1pbnRvLXZpZXctd2l0aC10b3AtY29u
dGVudC1pbnNldC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjdmNDc5Yzg1ODNjYzY3NjNhZGU2
ZjdhMjhjNDUxYjkwYjI0NWM0NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
c2Nyb2xsaW5nL2lvcy9zY3JvbGwtaW50by12aWV3LXdpdGgtdG9wLWNvbnRlbnQtaW5zZXQtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTMgQEAKK1ZlcmlmaWVzIHRoYXQgRWxlbWVudC5zY3JvbGxJ
bnRvVmlldygpIGRvZXMgbm90IHNjcm9sbCBhd2F5IHRoZSB0b3AgY29udGVudCBpbnNldCBpZiB0
aGUgZWxlbWVudCBpcyBhbHJlYWR5IHZpc2libGUuIFRoaXMgdGVzdCByZXF1aXJlcyBXZWJLaXRU
ZXN0UnVubmVyLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBvcmlnaW5h
bENvbnRlbnRPZmZzZXQueCBpcyAwCitQQVNTIG9yaWdpbmFsQ29udGVudE9mZnNldC55IGlzIC0x
MDAKK1BBU1MgZmluYWxDb250ZW50T2Zmc2V0LnggaXMgMAorUEFTUyBmaW5hbENvbnRlbnRPZmZz
ZXQueSBpcyAtMTAwCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09N
UExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvaW9zL3Njcm9s
bC1pbnRvLXZpZXctd2l0aC10b3AtY29udGVudC1pbnNldC5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9zY3JvbGxpbmcvaW9zL3Njcm9sbC1pbnRvLXZpZXctd2l0aC10b3AtY29udGVudC1pbnNldC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmZkNzdlZjZmNTEzMGIzYmJhNzVhYjA4ZjZiN2FiMTRlODZjZDllMzkK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9pb3Mvc2Nyb2xs
LWludG8tdmlldy13aXRoLXRvcC1jb250ZW50LWluc2V0Lmh0bWwKQEAgLTAsMCArMSw0NyBAQAor
PCFET0NUWVBFIGh0bWw+IDwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgdXNlRmxleGlibGVWaWV3
cG9ydD10cnVlLCBjb250ZW50SW5zZXQudG9wPTEwMCBdIC0tPgorPGh0bWw+Cis8bWV0YSBuYW1l
PSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEi
PgorPGhlYWQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIu
anMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC5qcyI+PC9zY3JpcHQ+CisgICAgPHN0eWxlPgorICAgIGJvZHkgeworICAgICAgICBtYXJnaW46
IDA7CisgICAgICAgIGJvcmRlcjogcmVkIDFweCBzb2xpZDsKKyAgICB9CisKKyAgICAjdGFyZ2V0
IHsKKyAgICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAgICB3aWR0aDogNHB4OworICAg
ICAgICBoZWlnaHQ6IDRweDsKKyAgICAgICAgdG9wOiAwcHg7CisgICAgICAgIGxlZnQ6IDBweDsK
KyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogc2lsdmVyOworICAgIH0KKyAgICA8L3N0eWxlPgor
ICAgIDxzY3JpcHQ+CisgICAganNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICBhc3luYyBmdW5j
dGlvbiBydW4oKQorICAgIHsKKyAgICAgICAgb3JpZ2luYWxDb250ZW50T2Zmc2V0ID0gYXdhaXQg
VUlIZWxwZXIuY29udGVudE9mZnNldCgpOworICAgICAgICB0YXJnZXQuc2Nyb2xsSW50b1ZpZXco
eyBibG9jazogIm5lYXJlc3QiLCBpbmxpbmU6ICJuZWFyZXN0IiB9KTsKKyAgICAgICAgZmluYWxD
b250ZW50T2Zmc2V0ID0gYXdhaXQgVUlIZWxwZXIuY29udGVudE9mZnNldCgpOworCisgICAgICAg
IHNob3VsZEJlKCJvcmlnaW5hbENvbnRlbnRPZmZzZXQueCIsICIwIik7CisgICAgICAgIHNob3Vs
ZEJlKCJvcmlnaW5hbENvbnRlbnRPZmZzZXQueSIsICItMTAwIik7CisgICAgICAgIHNob3VsZEJl
KCJmaW5hbENvbnRlbnRPZmZzZXQueCIsICIwIik7CisgICAgICAgIHNob3VsZEJlKCJmaW5hbENv
bnRlbnRPZmZzZXQueSIsICItMTAwIik7CisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH0K
KyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IGNvbnRlbnRlZGl0YWJsZSBvbmxvYWQ9InJ1
bigpIj4KKyAgICA8ZGl2IGlkPSJ0YXJnZXQiPjwvZGl2PgorICAgIDxwIGlkPSJkZXNjcmlwdGlv
biI+PC9wPgorICAgIDxwIGlkPSJjb25zb2xlIj48L3A+Cis8L2JvZHk+Cis8c2NyaXB0PgorICAg
IGRlc2NyaXB0aW9uKCJWZXJpZmllcyB0aGF0IEVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoKSBkb2Vz
IG5vdCBzY3JvbGwgYXdheSB0aGUgdG9wIGNvbnRlbnQgaW5zZXQgaWYgdGhlIGVsZW1lbnQgaXMg
YWxyZWFkeSB2aXNpYmxlLiBUaGlzIHRlc3QgcmVxdWlyZXMgV2ViS2l0VGVzdFJ1bm5lci4iKTsK
Kzwvc2NyaXB0PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcmVzb3VyY2VzL3Vp
LWhlbHBlci5qcyBiL0xheW91dFRlc3RzL3Jlc291cmNlcy91aS1oZWxwZXIuanMKaW5kZXggMmY1
NjlhYWNjNTVjNDVjNzAyNWNlMjE2YTcwMzQ1NzI5MjI0YmM2ZS4uZTY1ZjAzMWQ2NDBkMzIxZjhh
YTA5OGMzY2YzYTNlMGU0NmU0NzMwOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcmVzb3VyY2Vz
L3VpLWhlbHBlci5qcworKysgYi9MYXlvdXRUZXN0cy9yZXNvdXJjZXMvdWktaGVscGVyLmpzCkBA
IC01MDQsNCArNTA0LDE2IEBAIHdpbmRvdy5VSUhlbHBlciA9IGNsYXNzIFVJSGVscGVyIHsKICAg
ICAgICAgY29uc3QgZXNjYXBlZElkZW50aWZpZXIgPSBpZGVudGlmaWVyLnJlcGxhY2UoL2AvZywg
IlxcYCIpOwogICAgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB0ZXN0UnVubmVy
LnJ1blVJU2NyaXB0KGB1aUNvbnRyb2xsZXIuc2V0S2V5Ym9hcmRJbnB1dE1vZGVJZGVudGlmaWVy
KFxgJHtlc2NhcGVkSWRlbnRpZmllcn1cYClgLCByZXNvbHZlKSk7CiAgICAgfQorCisgICAgc3Rh
dGljIGNvbnRlbnRPZmZzZXQoKQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLmlzSU9TKCkpCisg
ICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7CisKKyAgICAgICAgY29uc3QgdWlT
Y3JpcHQgPSAiSlNPTi5zdHJpbmdpZnkoW3VpQ29udHJvbGxlci5jb250ZW50T2Zmc2V0WCwgdWlD
b250cm9sbGVyLmNvbnRlbnRPZmZzZXRZXSkiOworICAgICAgICByZXR1cm4gbmV3IFByb21pc2Uo
cmVzb2x2ZSA9PiB0ZXN0UnVubmVyLnJ1blVJU2NyaXB0KHVpU2NyaXB0LCByZXN1bHQgPT4gewor
ICAgICAgICAgICAgY29uc3QgW29mZnNldFgsIG9mZnNldFldID0gSlNPTi5wYXJzZShyZXN1bHQp
CisgICAgICAgICAgICByZXNvbHZlKHsgeDogb2Zmc2V0WCwgeTogb2Zmc2V0WSB9KTsKKyAgICAg
ICAgfSkpOworICAgIH0KIH0K
</data>
<flag name="review"
          id="376198"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>359441</attachid>
            <date>2019-01-17 19:32:11 -0800</date>
            <delta_ts>2019-01-17 19:36:02 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-193494-20190117193211.patch</filename>
            <type>text/plain</type>
            <size>40758</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwMTAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmRkOWQ1MGZlNjM2Mjg4
MTk1ZjQ1OGViNTE4NDg1MTllYzY1YTk5My4uNjNhM2FmODg1ODUxZjk2NTBhNDc1NGE0ZmUxNWY3
ZGYxY2E5MjNiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDE5LTAxLTE3ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIENvbnRl
bnQgb2Zmc2V0IGp1bXBzIGVycmF0aWNhbGx5IHdoZW4gYXV0b3Njcm9sbGluZyBuZWFyIHNjcm9s
bCB2aWV3IGNvbnRlbnQgaW5zZXQgYXJlYXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE5MzQ5NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDY4NTk2
Mjc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyIGFuZCBUaW0gSG9ydG9uLgor
CisgICAgICAgIFdoZW4gY29tcHV0aW5nIHRoZSBjb250ZW50IG9mZnNldCB0byBzY3JvbGwgdG8g
d2hlbiByZXZlYWxpbmcgYSBnaXZlbiByZWN0IGluIGNvbnRlbnQgY29vcmRpbmF0ZXMsIHdlIGN1
cnJlbnRseQorICAgICAgICBqdXN0IHVzZSB0aGUgdW5vYnNjdXJlZCBjb250ZW50IHJlY3QuIEFz
IGEgcmVzdWx0LCB3aGVuIHNjcm9sbGluZyB0byByZXZlYWwgYSByZWN0LCB3ZSdsbCBjbGFtcCB0
aGUgZmluYWwgc2Nyb2xsCisgICAgICAgIHBvc2l0aW9uIHN1Y2ggdGhhdCBvbmx5IGNvbnRlbnQg
aXMgdmlzaWJsZS4gRm9yIGV4YW1wbGUsIHdoZW4gYXNrZWQgdG8gcmV2ZWFsIHRoZSByZWN0IGAo
MCwgMCwgMSwgMSlgLCB3ZSBhZGp1c3QKKyAgICAgICAgdGhlIHNjcm9sbCBwb3NpdGlvbiB0byBi
ZSB0aGUgb3JpZ2luLgorCisgICAgICAgIEhvd2V2ZXIsIGNvbnNpZGVyIHRoZSBjYXNlIHdoZXJl
IGEgY2xpZW50IChlLmcuIE1haWwgb24gaU9TKSBoYXMgYWRkZWQgYSBjb250ZW50IGluc2V0IHRv
IHRoZSB3ZWIgdmlldydzIHNjcm9sbAorICAgICAgICB2aWV3LiBJZiB3ZSdyZSBhc2tlZCB0byBy
ZXZlYWwgYSByZWN0IHRoYXQgaXMgb3V0c2lkZSB0aGUgY29udGVudCBhcmVhIGJ1dCB3aXRoaW4g
YSBjb250ZW50IGluc2V0LCB3ZSB3aWxsIHN0aWxsCisgICAgICAgIGVuZCB1cCBjbGFtcGluZyB0
aGUgc2Nyb2xsIHBvc2l0aW9uIHRvIHRoZSB1bm9ic2N1cmVkIHJlY3QuIFRoaXMgbWFuaWZlc3Rz
IGluIGEgYnVnIHdoZXJlIHNlbGVjdGluZyB0ZXh0IGFuZAorICAgICAgICBhdXRvc2Nyb2xsaW5n
IGluIGlPUyBNYWlsIGNvbXBvc2Ugd2hpbGUgdGhlIHNjcm9sbCB2aWV3IGlzIHNjcm9sbGVkIGFs
bCB0aGUgd2F5IHRvIHRoZSB0b3AgdG8gcmV2ZWFsIHRoZSBUby9DYy8KKyAgICAgICAgU3ViamVj
dCBmaWVsZHMgY2F1c2VzIHRoZSBjb250ZW50IG9mZnNldCB0byBqdW1wIHRvIHRoZSBvcmlnaW4s
IHJhdGhlciB0aGFuIHN0YXlpbmcgYXQgKDAsIC10b3BDb250ZW50SW5zZXQpLgorCisgICAgICAg
IFRvIGZpeCB0aGlzLCB3ZSB0ZWFjaCBgUmVuZGVyTGF5ZXI6OnNjcm9sbFJlY3RUb1Zpc2libGVg
IGFib3V0IGNvbnRlbnQgaW5zZXRzIHRoYXQgYXJlIHZpc2libGUuIFJhdGhlciB0aGFuIHVzZQor
ICAgICAgICB0aGUgY29udGVudCByZWN0cyBhcy1pcywgZXhwYW5kIHRvIGVuY29tcGFzcyB2aXNp
YmxlIGNvbnRlbnQgaW5zZXRzIGFzIHdlbGwuIFRoaXMgZW5zdXJlcyB0aGF0IHJldmVhbGluZyBh
CisgICAgICAgIHBvc2l0aW9uIHdoaWNoIGlzIGFscmVhZHkgdmlzaWJsZSB3b24ndCBjYXVzZSB1
cyB0byBzY3JvbGwgYXdheSB0aGUgY29udGVudCBpbnNldCBhcmVhIGFuZCBvbmx5IHNob3cgdGhl
CisgICAgICAgIHVub2JzY3VyZWQgcmVjdC4KKworICAgICAgICBUZXN0czogIGVkaXRpbmcvc2Vs
ZWN0aW9uL2lvcy9hdXRvc2Nyb2xsLXdpdGgtdG9wLWNvbnRlbnQtaW5zZXQuaHRtbAorICAgICAg
ICAgICAgICAgIGZhc3Qvc2Nyb2xsaW5nL2lvcy9zY3JvbGwtaW50by12aWV3LXdpdGgtdG9wLWNv
bnRlbnQtaW5zZXQuaHRtbAorCisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojp1bm9ic2N1cmVkQ29udGVudFJlY3RFeHBhbmRlZEJ5Q29u
dGVudEluc2V0cyBjb25zdCk6CisKKyAgICAgICAgSW50cm9kdWNlIGEgaGVscGVyIG1ldGhvZCB0
aGF0IGV4cGFuZHMgdGhlIHVub2JzY3VyZWQgY29udGVudCByZWN0IHRvIGluY2x1ZGUgc3Vycm91
bmRpbmcgY29udGVudCBpbnNldHMuCisKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5oOgorICAg
ICAgICAqIHBhZ2UvUGFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6Y29udGVudEluc2V0
cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpzZXRDb250ZW50SW5zZXRzKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTGF5ZXI6OnNjcm9sbFJlY3RUb1Zpc2libGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGF5ZXI6OmdldFJlY3RUb0V4cG9zZSBjb25zdCk6CisKIDIwMTktMDEtMTYgIEp1c3RpbiBGYW4g
IDxqdXN0aW5fZmFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViR1BVXSBVcGRhdGUgdmVydGV4
LWJ1ZmZlci10cmlhbmdsZS1zdHJpcC5odG1sIHRvIGFjdHVhbGx5IHVzZSB2ZXJ0ZXggYnVmZmVy
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCmluZGV4IGU0OTJmOGFmMjdmOGUxODQ5ODI2NDk1YTMwZjY4MzkzYjg3ZmYyMDAuLjk1
NjFmOWYzMWYwZGVkNmNkODE0ZmI1ZGVkODhlNDA3ODAxMWYzZTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNDggQEAKKzIwMTktMDEtMTcgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5j
b20+CisKKyAgICAgICAgW2lPU10gQ29udGVudCBvZmZzZXQganVtcHMgZXJyYXRpY2FsbHkgd2hl
biBhdXRvc2Nyb2xsaW5nIG5lYXIgc2Nyb2xsIHZpZXcgY29udGVudCBpbnNldCBhcmVhcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkzNDk0CisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS80Njg1OTYyNz4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1v
biBGcmFzZXIgYW5kIFRpbSBIb3J0b24uCisKKyAgICAgICAgQWRkcyBgY29udGVudEluc2V0c2Ag
dG8gYFZpc2libGVDb250ZW50UmVjdFVwZGF0ZUluZm9gLiBUaGlzIGtlZXBzIHRyYWNrIG9mIHRo
ZSB2aXNpYmxlIGNvbnRlbnQgaW5zZXRzCisgICAgICAgIHN1cnJvdW5kaW5nIHRoZSB1bm9ic2N1
cmVkIGNvbnRlbnQgcmVjdC4gU2VlIFdlYkNvcmUgQ2hhbmdlTG9nIGZvciBtb3JlIGRldGFpbHMu
CisKKyAgICAgICAgKiBTaGFyZWQvVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mby5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlZpc2libGVDb250ZW50UmVjdFVwZGF0ZUluZm86OmVuY29kZSBjb25z
dCk6CisgICAgICAgIChXZWJLaXQ6OlZpc2libGVDb250ZW50UmVjdFVwZGF0ZUluZm86OmRlY29k
ZSk6CisgICAgICAgIChXZWJLaXQ6Om9wZXJhdG9yPDwpOgorICAgICAgICAqIFNoYXJlZC9WaXNp
YmxlQ29udGVudFJlY3RVcGRhdGVJbmZvLmg6CisgICAgICAgIChXZWJLaXQ6OlZpc2libGVDb250
ZW50UmVjdFVwZGF0ZUluZm86OlZpc2libGVDb250ZW50UmVjdFVwZGF0ZUluZm8pOgorICAgICAg
ICAoV2ViS2l0OjpWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZvOjpjb250ZW50SW5zZXRzIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6b3BlcmF0b3I9PSk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfY29tcHV0ZWRP
YnNjdXJlZEluc2V0XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfY29tcHV0ZWRDb250ZW50SW5z
ZXRdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9jb21wdXRlZFVub2JzY3VyZWRTYWZlQXJlYUlu
c2V0XSk6CisKKyAgICAgICAgV2UgZG9uJ3QgY2FyZSBhYm91dCBzb3VyY2UgY29tcGF0aWJpbGl0
eSB3aXRoIGlPUyAxMCBhbmQgYmVsb3cgYW55bW9yZSwgc28gd2Ugc2hvdWxkIGNoYW5nZSB0aGVz
ZSA+PSBpT1MgMTEKKyAgICAgICAgdGFyZ2V0IGNoZWNrcyB0byBzaW1wbHkgYFBMQVRGT1JNKElP
UylgLgorCisgICAgICAgICgtW1dLV2ViVmlldyBfdXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0c10p
OgorCisgICAgICAgIENvbXB1dGUgdGhlIHZpc2libGUgY29udGVudCBpbnNldHMgb24gYWxsIHNp
ZGVzIG9mIHRoZSB1bm9ic2N1cmVkIGNvbnRlbnQgcmVjdC4gVGhlc2UgaW5zZXRzIGFyZSBzY2Fs
ZWQgdG8KKyAgICAgICAgY29udGVudCBjb29yZGluYXRlcy4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50
Vmlldy5tbToKKyAgICAgICAgKGZsb2F0Qm94RXh0ZW50KToKKworICAgICAgICBBZGQgYSBoZWxw
ZXIgdG8gY29udmVydCBgVUlFZGdlSW5zZXRzYCB0byBgV2ViQ29yZTo6RmxvYXRCb3hFeHRlbnRg
LCBhbmQgdXNlIGl0IGluIGEgZmV3IHBsYWNlcyBiZWxvdy4KKworICAgICAgICAoLVtXS0NvbnRl
bnRWaWV3IGRpZFVwZGF0ZVZpc2libGVSZWN0OnVub2JzY3VyZWRSZWN0OmNvbnRlbnRJbnNldHM6
dW5vYnNjdXJlZFJlY3RJblNjcm9sbFZpZXdDb29yZGluYXRlczpvYnNjdXJlZEluc2V0czp1bm9i
c2N1cmVkU2FmZUFyZWFJbnNldHM6aW5wdXRWaWV3Qm91bmRzOnNjYWxlOm1pbmltdW1TY2FsZTpp
blN0YWJsZVN0YXRlOmlzQ2hhbmdpbmdPYnNjdXJlZEluc2V0c0ludGVyYWN0aXZlbHk6ZW5jbG9z
ZWRJblNjcm9sbGFibGVBbmNlc3RvclZpZXc6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcg
ZGlkVXBkYXRlVmlzaWJsZVJlY3Q6dW5vYnNjdXJlZFJlY3Q6dW5vYnNjdXJlZFJlY3RJblNjcm9s
bFZpZXdDb29yZGluYXRlczpvYnNjdXJlZEluc2V0czp1bm9ic2N1cmVkU2FmZUFyZWFJbnNldHM6
aW5wdXRWaWV3Qm91bmRzOnNjYWxlOm1pbmltdW1TY2FsZTppblN0YWJsZVN0YXRlOmlzQ2hhbmdp
bmdPYnNjdXJlZEluc2V0c0ludGVyYWN0aXZlbHk6ZW5jbG9zZWRJblNjcm9sbGFibGVBbmNlc3Rv
clZpZXc6XSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQ
YWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVWaXNpYmxlQ29udGVu
dFJlY3RzKToKKworICAgICAgICBVcGRhdGUgdGhlIFBhZ2UncyBjb250ZW50IGluc2V0cy4KKwog
MjAxOS0wMS0xNiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAg
QWRkIGEgbmV3IFNQSSBmb3IgY29udHJvbGxpbmcgZ2V0VXNlck1lZGlhCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lVmlldy5jcHAKaW5kZXggOGRkOTI0ZDc5N2MxNjczYmQwN2NjODQyNjhiYjQ4YmUxNTVkOTQ4
Ny4uMDY2OTgxNTZkYjRiNWMyMTBlZTAwODY4ZDFkYzQ3ZmE4YzA3ZGM0MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWVWaWV3LmNwcApAQCAtMjAxNCw2ICsyMDE0LDE0IEBAIHZvaWQgRnJhbWVWaWV3Ojp2
aWV3cG9ydENvbnRlbnRzQ2hhbmdlZCgpCiAjZW5kaWYKIH0KIAorSW50UmVjdCBGcmFtZVZpZXc6
OnVub2JzY3VyZWRDb250ZW50UmVjdEV4cGFuZGVkQnlDb250ZW50SW5zZXRzKCkgY29uc3QKK3sK
KyAgICBGbG9hdFJlY3QgdW5vYnNjdXJlZENvbnRlbnRSZWN0ID0gdGhpcy0+dW5vYnNjdXJlZENv
bnRlbnRSZWN0KCk7CisgICAgaWYgKGF1dG8qIHBhZ2UgPSBmcmFtZSgpLnBhZ2UoKSkKKyAgICAg
ICAgdW5vYnNjdXJlZENvbnRlbnRSZWN0LmV4cGFuZChwYWdlLT5jb250ZW50SW5zZXRzKCkpOwor
ICAgIHJldHVybiBJbnRSZWN0KHVub2JzY3VyZWRDb250ZW50UmVjdCk7Cit9CisKIGJvb2wgRnJh
bWVWaWV3OjpmaXhlZEVsZW1lbnRzTGF5b3V0UmVsYXRpdmVUb0ZyYW1lKCkgY29uc3QKIHsKICAg
ICByZXR1cm4gZnJhbWUoKS5zZXR0aW5ncygpLmZpeGVkRWxlbWVudHNMYXlvdXRSZWxhdGl2ZVRv
RnJhbWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmggYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCmluZGV4IDQ0Mjk4NDYyNzQyZDUyZGNkN2M2
OThkNGM5Yzg0YjliY2U5OTdhN2YuLjBjNzgxZWU2MmEzNjM3ZjM3ZWU2N2JhYzFlODM2MTc4MWZi
OTU1YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaApAQCAtMzI2LDYgKzMyNiw4IEBAIHB1Ymxp
YzoKICAgICAvLyBTdGF0aWMgZnVuY3Rpb24gY2FuIGJlIGNhbGxlZCBmcm9tIGFub3RoZXIgdGhy
ZWFkLgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBMYXlvdXRSZWN0IHJlY3RGb3JWaWV3cG9y
dENvbnN0cmFpbmVkT2JqZWN0cyhjb25zdCBMYXlvdXRSZWN0JiB2aXNpYmxlQ29udGVudFJlY3Qs
IGNvbnN0IExheW91dFNpemUmIHRvdGFsQ29udGVudHNTaXplLCBmbG9hdCBmcmFtZVNjYWxlRmFj
dG9yLCBib29sIGZpeGVkRWxlbWVudHNMYXlvdXRSZWxhdGl2ZVRvRnJhbWUsIFNjcm9sbEJlaGF2
aW9yRm9yRml4ZWRFbGVtZW50cyk7CiAjZW5kaWYKKworICAgIEludFJlY3QgdW5vYnNjdXJlZENv
bnRlbnRSZWN0RXhwYW5kZWRCeUNvbnRlbnRJbnNldHMoKSBjb25zdDsKICAgICAKICAgICBib29s
IGZpeGVkRWxlbWVudHNMYXlvdXRSZWxhdGl2ZVRvRnJhbWUoKSBjb25zdDsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2Uu
aAppbmRleCA1MjJiZTk4NmMxYmIxNGY5N2EyOGE4YTVkZGFhZDhjMjkzNTJlZTk2Li5iMDY1MzFm
OTMyOWM0MTg2NmY5MWUwYmMxOGVjOTI5NTY5M2EwMTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApAQCAtMzQ3
LDYgKzM0Nyw5IEBAIHB1YmxpYzoKICAgICBjb25zdCBGbG9hdEJveEV4dGVudCYgb2JzY3VyZWRJ
bnNldHMoKSBjb25zdCB7IHJldHVybiBtX29ic2N1cmVkSW5zZXRzOyB9CiAgICAgdm9pZCBzZXRP
YnNjdXJlZEluc2V0cyhjb25zdCBGbG9hdEJveEV4dGVudCYgb2JzY3VyZWRJbnNldHMpIHsgbV9v
YnNjdXJlZEluc2V0cyA9IG9ic2N1cmVkSW5zZXRzOyB9CiAKKyAgICBjb25zdCBGbG9hdEJveEV4
dGVudCYgY29udGVudEluc2V0cygpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudEluc2V0czsgfQor
ICAgIHZvaWQgc2V0Q29udGVudEluc2V0cyhjb25zdCBGbG9hdEJveEV4dGVudCYgaW5zZXRzKSB7
IG1fY29udGVudEluc2V0cyA9IGluc2V0czsgfQorCiAgICAgY29uc3QgRmxvYXRCb3hFeHRlbnQm
IHVub2JzY3VyZWRTYWZlQXJlYUluc2V0cygpIGNvbnN0IHsgcmV0dXJuIG1fdW5vYnNjdXJlZFNh
ZmVBcmVhSW5zZXRzOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRVbm9ic2N1cmVkU2Fm
ZUFyZWFJbnNldHMoY29uc3QgRmxvYXRCb3hFeHRlbnQmKTsKIApAQCAtNzkxLDYgKzc5NCw3IEBA
IHByaXZhdGU6CiAKICAgICBmbG9hdCBtX3RvcENvbnRlbnRJbnNldCB7IDAgfTsKICAgICBGbG9h
dEJveEV4dGVudCBtX29ic2N1cmVkSW5zZXRzOworICAgIEZsb2F0Qm94RXh0ZW50IG1fY29udGVu
dEluc2V0czsKICAgICBGbG9hdEJveEV4dGVudCBtX3Vub2JzY3VyZWRTYWZlQXJlYUluc2V0czsK
ICAgICBGbG9hdEJveEV4dGVudCBtX2Z1bGxzY3JlZW5JbnNldHM7CiAgICAgU2Vjb25kcyBtX2Z1
bGxzY3JlZW5BdXRvSGlkZUR1cmF0aW9uIHsgMF9zIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyLmNwcAppbmRleCA2YzJhNDIzYjY3NzZmYzk5MGYwYTdlMGYzNDA2NjFiY2Nk
MGYyMzdkLi5hNjRhNWJkNTA1NzNiNmNiN2I2ZWQzOTM0ZTM3ODNhMzIzNmYxNDA3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTI1NTEsOCArMjU1MSw5IEBA
IHZvaWQgUmVuZGVyTGF5ZXI6OnNjcm9sbFJlY3RUb1Zpc2libGUoY29uc3QgTGF5b3V0UmVjdCYg
YWJzb2x1dGVSZWN0LCBib29sIGluc2lkCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
ICAgICAgICBMYXlvdXRSZWN0IHZpZXdSZWN0ID0gZnJhbWVWaWV3LnZpc2libGVDb250ZW50UmVj
dCgpOwogI2Vsc2UKLSAgICAgICAgICAgIExheW91dFJlY3Qgdmlld1JlY3QgPSBmcmFtZVZpZXcu
dW5vYnNjdXJlZENvbnRlbnRSZWN0KCk7CisgICAgICAgICAgICBMYXlvdXRSZWN0IHZpZXdSZWN0
ID0gZnJhbWVWaWV3LnVub2JzY3VyZWRDb250ZW50UmVjdEV4cGFuZGVkQnlDb250ZW50SW5zZXRz
KCk7CiAjZW5kaWYKKwogICAgICAgICAgICAgLy8gTW92ZSB0aGUgdGFyZ2V0IHJlY3QgaW50byAi
c2Nyb2xsVmlldyBjb250ZW50cyIgY29vcmRpbmF0ZXMuCiAgICAgICAgICAgICBMYXlvdXRSZWN0
IHRhcmdldFJlY3QgPSBhYnNvbHV0ZVJlY3Q7CiAgICAgICAgICAgICB0YXJnZXRSZWN0Lm1vdmUo
MCwgZnJhbWVWaWV3LmhlYWRlckhlaWdodCgpKTsKQEAgLTI1OTEsNyArMjU5Miw3IEBAIHZvaWQg
UmVuZGVyTGF5ZXI6OnVwZGF0ZUNvbXBvc2l0aW5nTGF5ZXJzQWZ0ZXJTY3JvbGwoKQogICAgIH0K
IH0KIAotTGF5b3V0UmVjdCBSZW5kZXJMYXllcjo6Z2V0UmVjdFRvRXhwb3NlKGNvbnN0IExheW91
dFJlY3QgJnZpc2libGVSZWN0LCBjb25zdCBMYXlvdXRSZWN0ICZleHBvc2VSZWN0LCBib29sIGlu
c2lkZUZpeGVkLCBjb25zdCBTY3JvbGxBbGlnbm1lbnQmIGFsaWduWCwgY29uc3QgU2Nyb2xsQWxp
Z25tZW50JiBhbGlnblkpIGNvbnN0CitMYXlvdXRSZWN0IFJlbmRlckxheWVyOjpnZXRSZWN0VG9F
eHBvc2UoY29uc3QgTGF5b3V0UmVjdCYgdmlzaWJsZVJlY3QsIGNvbnN0IExheW91dFJlY3QmIGV4
cG9zZVJlY3QsIGJvb2wgaW5zaWRlRml4ZWQsIGNvbnN0IFNjcm9sbEFsaWdubWVudCYgYWxpZ25Y
LCBjb25zdCBTY3JvbGxBbGlnbm1lbnQmIGFsaWduWSkgY29uc3QKIHsKICAgICBGcmFtZVZpZXcm
IGZyYW1lVmlldyA9IHJlbmRlcmVyKCkudmlldygpLmZyYW1lVmlldygpOwogICAgIGlmIChyZW5k
ZXJlcigpLmlzUmVuZGVyVmlldygpICYmIGluc2lkZUZpeGVkKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9WaXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZvLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1Zpc2libGVDb250ZW50UmVjdFVwZGF0ZUluZm8uY3BwCmluZGV4IDJl
ZThkOTZjNGVhMGNjMGQzNGIyMjE2MGZjZGMxMGEwOWUyNjA0M2UuLmU5YTg4M2QyOGJmZTY2NzFj
ZDI4NTY0NDYxNzQxMTRkMzc1MGUxNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1Zpc2libGVDb250ZW50UmVjdFVwZGF0ZUluZm8uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1Zpc2libGVDb250ZW50UmVjdFVwZGF0ZUluZm8uY3BwCkBAIC0zNyw2ICszNyw3IEBAIHZv
aWQgVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mbzo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5j
b2RlcikgY29uc3QKIHsKICAgICBlbmNvZGVyIDw8IG1fZXhwb3NlZENvbnRlbnRSZWN0OwogICAg
IGVuY29kZXIgPDwgbV91bm9ic2N1cmVkQ29udGVudFJlY3Q7CisgICAgZW5jb2RlciA8PCBtX2Nv
bnRlbnRJbnNldHM7CiAgICAgZW5jb2RlciA8PCBtX3Vub2JzY3VyZWRDb250ZW50UmVjdFJlc3Bl
Y3RpbmdJbnB1dFZpZXdCb3VuZHM7CiAgICAgZW5jb2RlciA8PCBtX3Vub2JzY3VyZWRSZWN0SW5T
Y3JvbGxWaWV3Q29vcmRpbmF0ZXM7CiAgICAgZW5jb2RlciA8PCBtX2N1c3RvbUZpeGVkUG9zaXRp
b25SZWN0OwpAQCAtNjEsNiArNjIsOCBAQCBib29sIFZpc2libGVDb250ZW50UmVjdFVwZGF0ZUlu
Zm86OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIFZpc2libGVDb250ZW50UgogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQubV91bm9ic2N1
cmVkQ29udGVudFJlY3QpKQogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShyZXN1bHQubV9jb250ZW50SW5zZXRzKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm1fdW5vYnNjdXJlZENvbnRlbnRSZWN0UmVz
cGVjdGluZ0lucHV0Vmlld0JvdW5kcykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tX3Vub2JzY3VyZWRSZWN0SW5TY3JvbGxWaWV3Q29vcmRp
bmF0ZXMpKQpAQCAtMTE0LDYgKzExNyw3IEBAIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0
cmVhbSYgdHMsIGNvbnN0IFZpc2libGVDb250ZW50UmVjdFVwZGF0ZUluZm8mIGluZm8pCiAKICAg
ICB0cy5kdW1wUHJvcGVydHkoImV4cG9zZWRDb250ZW50UmVjdCIsIGluZm8uZXhwb3NlZENvbnRl
bnRSZWN0KCkpOwogICAgIHRzLmR1bXBQcm9wZXJ0eSgidW5vYnNjdXJlZENvbnRlbnRSZWN0Iiwg
aW5mby51bm9ic2N1cmVkQ29udGVudFJlY3QoKSk7CisgICAgdHMuZHVtcFByb3BlcnR5KCJjb250
ZW50SW5zZXRzIiwgaW5mby5jb250ZW50SW5zZXRzKCkpOwogICAgIHRzLmR1bXBQcm9wZXJ0eSgi
dW5vYnNjdXJlZENvbnRlbnRSZWN0UmVzcGVjdGluZ0lucHV0Vmlld0JvdW5kcyIsIGluZm8udW5v
YnNjdXJlZENvbnRlbnRSZWN0UmVzcGVjdGluZ0lucHV0Vmlld0JvdW5kcygpKTsKICAgICB0cy5k
dW1wUHJvcGVydHkoInVub2JzY3VyZWRSZWN0SW5TY3JvbGxWaWV3Q29vcmRpbmF0ZXMiLCBpbmZv
LnVub2JzY3VyZWRSZWN0SW5TY3JvbGxWaWV3Q29vcmRpbmF0ZXMoKSk7CiAgICAgdHMuZHVtcFBy
b3BlcnR5KCJjdXN0b21GaXhlZFBvc2l0aW9uUmVjdCIsIGluZm8uY3VzdG9tRml4ZWRQb3NpdGlv
blJlY3QoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9WaXNpYmxlQ29udGVu
dFJlY3RVcGRhdGVJbmZvLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9WaXNpYmxlQ29udGVudFJl
Y3RVcGRhdGVJbmZvLmgKaW5kZXggOTFjMTgyMmE3NGFjZGVmODkwZmU1NjEyMDVmZDFiYTg3ZDUz
M2VjNC4uODE0Y2E1NGMyMWQzZjUzMzU2NzJlMWNlMjNiNWY2Y2I4ZDVmOGVhYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mby5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Zpc2libGVDb250ZW50UmVjdFVwZGF0ZUluZm8uaApA
QCAtNDUsOSArNDUsMTAgQEAgY2xhc3MgVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mbyB7CiBw
dWJsaWM6CiAgICAgVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mbygpID0gZGVmYXVsdDsKIAot
ICAgIFZpc2libGVDb250ZW50UmVjdFVwZGF0ZUluZm8oY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0
JiBleHBvc2VkQ29udGVudFJlY3QsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgdW5vYnNjdXJl
ZENvbnRlbnRSZWN0LCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHVub2JzY3VyZWRSZWN0SW5T
Y3JvbGxWaWV3Q29vcmRpbmF0ZXMsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgdW5vYnNjdXJl
ZENvbnRlbnRSZWN0UmVzcGVjdGluZ0lucHV0Vmlld0JvdW5kcywgY29uc3QgV2ViQ29yZTo6Rmxv
YXRSZWN0JiBjdXN0b21GaXhlZFBvc2l0aW9uUmVjdCwgY29uc3QgV2ViQ29yZTo6RmxvYXRCb3hF
eHRlbnQmIG9ic2N1cmVkSW5zZXRzLCBjb25zdCBXZWJDb3JlOjpGbG9hdEJveEV4dGVudCYgdW5v
YnNjdXJlZFNhZmVBcmVhSW5zZXRzLCBkb3VibGUgc2NhbGUsIGJvb2wgaW5TdGFibGVTdGF0ZSwg
Ym9vbCBpc0ZpcnN0VXBkYXRlRm9yTmV3Vmlld1NpemUsIGJvb2wgaXNDaGFuZ2luZ09ic2N1cmVk
SW5zZXRzSW50ZXJhY3RpdmVseSwgYm9vbCBhbGxvd1Nocmlua1RvRml0LCBib29sIGVuY2xvc2Vk
SW5TY3JvbGxhYmxlQW5jZXN0b3JWaWV3LCBNb25vdG9uaWNUaW1lIHRpbWVzdGFtcCwgZG91Ymxl
IGhvcml6b250YWxWZWxvY2l0eSwgZG91YmxlIHZlcnRpY2FsVmVsb2NpdHksIGRvdWJsZSBzY2Fs
ZUNoYW5nZVJhdGUsIHVpbnQ2NF90IGxhc3RMYXllclRyZWVUcmFuc2FjdGlvbklkKQorICAgIFZp
c2libGVDb250ZW50UmVjdFVwZGF0ZUluZm8oY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBleHBv
c2VkQ29udGVudFJlY3QsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgdW5vYnNjdXJlZENvbnRl
bnRSZWN0LCBjb25zdCBXZWJDb3JlOjpGbG9hdEJveEV4dGVudCYgY29udGVudEluc2V0cywgY29u
c3QgV2ViQ29yZTo6RmxvYXRSZWN0JiB1bm9ic2N1cmVkUmVjdEluU2Nyb2xsVmlld0Nvb3JkaW5h
dGVzLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHVub2JzY3VyZWRDb250ZW50UmVjdFJlc3Bl
Y3RpbmdJbnB1dFZpZXdCb3VuZHMsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgY3VzdG9tRml4
ZWRQb3NpdGlvblJlY3QsIGNvbnN0IFdlYkNvcmU6OkZsb2F0Qm94RXh0ZW50JiBvYnNjdXJlZElu
c2V0cywgY29uc3QgV2ViQ29yZTo6RmxvYXRCb3hFeHRlbnQmIHVub2JzY3VyZWRTYWZlQXJlYUlu
c2V0cywgZG91YmxlIHNjYWxlLCBib29sIGluU3RhYmxlU3RhdGUsIGJvb2wgaXNGaXJzdFVwZGF0
ZUZvck5ld1ZpZXdTaXplLCBib29sIGlzQ2hhbmdpbmdPYnNjdXJlZEluc2V0c0ludGVyYWN0aXZl
bHksIGJvb2wgYWxsb3dTaHJpbmtUb0ZpdCwgYm9vbCBlbmNsb3NlZEluU2Nyb2xsYWJsZUFuY2Vz
dG9yVmlldywgTW9ub3RvbmljVGltZSB0aW1lc3RhbXAsIGRvdWJsZSBob3Jpem9udGFsVmVsb2Np
dHksIGRvdWJsZSB2ZXJ0aWNhbFZlbG9jaXR5LCBkb3VibGUgc2NhbGVDaGFuZ2VSYXRlLCB1aW50
NjRfdCBsYXN0TGF5ZXJUcmVlVHJhbnNhY3Rpb25JZCkKICAgICAgICAgOiBtX2V4cG9zZWRDb250
ZW50UmVjdChleHBvc2VkQ29udGVudFJlY3QpCiAgICAgICAgICwgbV91bm9ic2N1cmVkQ29udGVu
dFJlY3QodW5vYnNjdXJlZENvbnRlbnRSZWN0KQorICAgICAgICAsIG1fY29udGVudEluc2V0cyhj
b250ZW50SW5zZXRzKQogICAgICAgICAsIG1fdW5vYnNjdXJlZENvbnRlbnRSZWN0UmVzcGVjdGlu
Z0lucHV0Vmlld0JvdW5kcyh1bm9ic2N1cmVkQ29udGVudFJlY3RSZXNwZWN0aW5nSW5wdXRWaWV3
Qm91bmRzKQogICAgICAgICAsIG1fdW5vYnNjdXJlZFJlY3RJblNjcm9sbFZpZXdDb29yZGluYXRl
cyh1bm9ic2N1cmVkUmVjdEluU2Nyb2xsVmlld0Nvb3JkaW5hdGVzKQogICAgICAgICAsIG1fY3Vz
dG9tRml4ZWRQb3NpdGlvblJlY3QoY3VzdG9tRml4ZWRQb3NpdGlvblJlY3QpCkBAIC02OSw2ICs3
MCw3IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgZXhwb3NlZENv
bnRlbnRSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9leHBvc2VkQ29udGVudFJlY3Q7IH0KICAgICBj
b25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHVub2JzY3VyZWRDb250ZW50UmVjdCgpIGNvbnN0IHsg
cmV0dXJuIG1fdW5vYnNjdXJlZENvbnRlbnRSZWN0OyB9CisgICAgY29uc3QgV2ViQ29yZTo6Rmxv
YXRCb3hFeHRlbnQmIGNvbnRlbnRJbnNldHMoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRJbnNl
dHM7IH0KICAgICBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHVub2JzY3VyZWRSZWN0SW5TY3Jv
bGxWaWV3Q29vcmRpbmF0ZXMoKSBjb25zdCB7IHJldHVybiBtX3Vub2JzY3VyZWRSZWN0SW5TY3Jv
bGxWaWV3Q29vcmRpbmF0ZXM7IH0KICAgICBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHVub2Jz
Y3VyZWRDb250ZW50UmVjdFJlc3BlY3RpbmdJbnB1dFZpZXdCb3VuZHMoKSBjb25zdCB7IHJldHVy
biBtX3Vub2JzY3VyZWRDb250ZW50UmVjdFJlc3BlY3RpbmdJbnB1dFZpZXdCb3VuZHM7IH0KICAg
ICBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGN1c3RvbUZpeGVkUG9zaXRpb25SZWN0KCkgY29u
c3QgeyByZXR1cm4gbV9jdXN0b21GaXhlZFBvc2l0aW9uUmVjdDsgfQpAQCAtOTcsNiArOTksNyBA
QCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBtX2V4cG9zZWRDb250
ZW50UmVjdDsKICAgICBXZWJDb3JlOjpGbG9hdFJlY3QgbV91bm9ic2N1cmVkQ29udGVudFJlY3Q7
CisgICAgV2ViQ29yZTo6RmxvYXRCb3hFeHRlbnQgbV9jb250ZW50SW5zZXRzOwogICAgIFdlYkNv
cmU6OkZsb2F0UmVjdCBtX3Vub2JzY3VyZWRDb250ZW50UmVjdFJlc3BlY3RpbmdJbnB1dFZpZXdC
b3VuZHM7CiAgICAgV2ViQ29yZTo6RmxvYXRSZWN0IG1fdW5vYnNjdXJlZFJlY3RJblNjcm9sbFZp
ZXdDb29yZGluYXRlczsKICAgICBXZWJDb3JlOjpGbG9hdFJlY3QgbV9jdXN0b21GaXhlZFBvc2l0
aW9uUmVjdDsgLy8gV2hlbiB2aXN1YWwgdmlld3BvcnRzIGFyZSBlbmFibGVkLCB0aGlzIGlzIHRo
ZSBsYXlvdXQgdmlld3BvcnQuCkBAIC0xMjEsNiArMTI0LDcgQEAgaW5saW5lIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZvJiBhLCBjb25zdCBWaXNpYmxl
Q29udGUKICAgICByZXR1cm4gYS5zY2FsZSgpID09IGIuc2NhbGUoKQogICAgICAgICAmJiBhLmV4
cG9zZWRDb250ZW50UmVjdCgpID09IGIuZXhwb3NlZENvbnRlbnRSZWN0KCkKICAgICAgICAgJiYg
YS51bm9ic2N1cmVkQ29udGVudFJlY3QoKSA9PSBiLnVub2JzY3VyZWRDb250ZW50UmVjdCgpCisg
ICAgICAgICYmIGEuY29udGVudEluc2V0cygpID09IGIuY29udGVudEluc2V0cygpCiAgICAgICAg
ICYmIGEudW5vYnNjdXJlZENvbnRlbnRSZWN0UmVzcGVjdGluZ0lucHV0Vmlld0JvdW5kcygpID09
IGIudW5vYnNjdXJlZENvbnRlbnRSZWN0UmVzcGVjdGluZ0lucHV0Vmlld0JvdW5kcygpCiAgICAg
ICAgICYmIGEuY3VzdG9tRml4ZWRQb3NpdGlvblJlY3QoKSA9PSBiLmN1c3RvbUZpeGVkUG9zaXRp
b25SZWN0KCkKICAgICAgICAgJiYgYS5vYnNjdXJlZEluc2V0cygpID09IGIub2JzY3VyZWRJbnNl
dHMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0K
aW5kZXggNGE0NDFiMGNkZDhhNmQ3ZDE1ZDhmMWExZjNhZTA1ZmM4YjYxY2I1Ni4uYWUwZTI1MGI0
MGY3ZWViZjc2OTI5YzJkZjQ4N2U1NTRkNDc0YmZhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC0xNzM0LDcgKzE3MzQsNyBAQCAtIChV
SUVkZ2VJbnNldHMpX2NvbXB1dGVkT2JzY3VyZWRJbnNldAogICAgIGlmIChfaGF2ZVNldE9ic2N1
cmVkSW5zZXRzKQogICAgICAgICByZXR1cm4gX29ic2N1cmVkSW5zZXRzOwogCi0jaWYgX19JUEhP
TkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwCisjaWYgUExBVEZPUk0oSU9TKQog
ICAgIGlmIChzZWxmLl9zYWZlQXJlYVNob3VsZEFmZmVjdE9ic2N1cmVkSW5zZXRzKQogICAgICAg
ICByZXR1cm4gVUlFZGdlSW5zZXRzQWRkKFVJRWRnZUluc2V0c1plcm8sIHNlbGYuX3Njcm9sbFZp
ZXdTeXN0ZW1Db250ZW50SW5zZXQsIHNlbGYuX2VmZmVjdGl2ZU9ic2N1cmVkSW5zZXRFZGdlc0Fm
ZmVjdGVkQnlTYWZlQXJlYSk7CiAjZW5kaWYKQEAgLTE3NDksNyArMTc0OSw3IEBAIC0gKFVJRWRn
ZUluc2V0cylfY29tcHV0ZWRDb250ZW50SW5zZXQKIAogICAgIFVJRWRnZUluc2V0cyBpbnNldHMg
PSBbX3Njcm9sbFZpZXcgY29udGVudEluc2V0XTsKIAotI2lmIF9fSVBIT05FX09TX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IDExMDAwMAorI2lmIFBMQVRGT1JNKElPUykKICAgICBpZiAoc2VsZi5f
c2FmZUFyZWFTaG91bGRBZmZlY3RPYnNjdXJlZEluc2V0cykKICAgICAgICAgaW5zZXRzID0gVUlF
ZGdlSW5zZXRzQWRkKGluc2V0cywgc2VsZi5fc2Nyb2xsVmlld1N5c3RlbUNvbnRlbnRJbnNldCwg
c2VsZi5fZWZmZWN0aXZlT2JzY3VyZWRJbnNldEVkZ2VzQWZmZWN0ZWRCeVNhZmVBcmVhKTsKICNl
bmRpZgpAQCAtMTc2Miw3ICsxNzYyLDcgQEAgLSAoVUlFZGdlSW5zZXRzKV9jb21wdXRlZFVub2Jz
Y3VyZWRTYWZlQXJlYUluc2V0CiAgICAgaWYgKF9oYXZlU2V0VW5vYnNjdXJlZFNhZmVBcmVhSW5z
ZXRzKQogICAgICAgICByZXR1cm4gX3Vub2JzY3VyZWRTYWZlQXJlYUluc2V0czsKIAotI2lmIF9f
SVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMAorI2lmIFBMQVRGT1JNKElP
UykKICAgICBpZiAoIXNlbGYuX3NhZmVBcmVhU2hvdWxkQWZmZWN0T2JzY3VyZWRJbnNldHMpCiAg
ICAgICAgIHJldHVybiBzZWxmLnNhZmVBcmVhSW5zZXRzOwogI2VuZGlmCkBAIC0yOTc1LDYgKzI5
NzUsMjYgQEAgLSAodm9pZClfdXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0cwogICAgIENHUmVjdCB1
bm9ic2N1cmVkUmVjdEluQ29udGVudENvb3JkaW5hdGVzID0gX2Zyb3plblVub2JzY3VyZWRDb250
ZW50UmVjdCA/IF9mcm96ZW5Vbm9ic2N1cmVkQ29udGVudFJlY3QudmFsdWUoKSA6IFtzZWxmIGNv
bnZlcnRSZWN0OnVub2JzY3VyZWRSZWN0IHRvVmlldzpfY29udGVudFZpZXcuZ2V0KCldOwogICAg
IHVub2JzY3VyZWRSZWN0SW5Db250ZW50Q29vcmRpbmF0ZXMgPSBDR1JlY3RJbnRlcnNlY3Rpb24o
dW5vYnNjdXJlZFJlY3RJbkNvbnRlbnRDb29yZGluYXRlcywgW3NlbGYgX2NvbnRlbnRCb3VuZHNF
eHRlbmRlZEZvclJ1YmJlcmJhbmRpbmdXaXRoU2NhbGU6c2NhbGVGYWN0b3JdKTsKIAorICAgIC8v
IFRoZSBmb2xsb3dpbmcgbG9naWMgY29tcHV0ZXMgdGhlIGV4dGVudCB0byB3aGljaCB0aGUgYm90
dG9tLCB0b3AsIGxlZnQgYW5kIHJpZ2h0IGNvbnRlbnQgaW5zZXRzIGFyZSB2aXNpYmxlLgorICAg
IGF1dG8gc2Nyb2xsVmlld0luc2V0cyA9IFtfc2Nyb2xsVmlldyBjb250ZW50SW5zZXRdOworICAg
IGF1dG8gc2Nyb2xsVmlld0JvdW5kcyA9IFtfc2Nyb2xsVmlldyBib3VuZHNdOworICAgIGF1dG8g
c2Nyb2xsVmlld0NvbnRlbnRTaXplID0gW19zY3JvbGxWaWV3IGNvbnRlbnRTaXplXTsKKyAgICBh
dXRvIHNjcm9sbFZpZXdPcmlnaW5JbmNsdWRpbmdJbnNldCA9IFVJRWRnZUluc2V0c0luc2V0UmVj
dChzY3JvbGxWaWV3Qm91bmRzLCBjb21wdXRlZENvbnRlbnRJbnNldFVuYWRqdXN0ZWRGb3JLZXli
b2FyZCkub3JpZ2luOworICAgIGF1dG8gbWF4aW11bVZlcnRpY2FsU2Nyb2xsRXh0ZW50V2l0aG91
dFJldmVhbGluZ0JvdHRvbUNvbnRlbnRJbnNldCA9IHNjcm9sbFZpZXdDb250ZW50U2l6ZS5oZWln
aHQgLSBDR1JlY3RHZXRIZWlnaHQoc2Nyb2xsVmlld0JvdW5kcyk7CisgICAgYXV0byBtYXhpbXVt
SG9yaXpvbnRhbFNjcm9sbEV4dGVudFdpdGhvdXRSZXZlYWxpbmdSaWdodENvbnRlbnRJbnNldCA9
IHNjcm9sbFZpZXdDb250ZW50U2l6ZS53aWR0aCAtIENHUmVjdEdldFdpZHRoKHNjcm9sbFZpZXdC
b3VuZHMpOworICAgIGF1dG8gY29udGVudEluc2V0cyA9IFVJRWRnZUluc2V0c1plcm87CisgICAg
aWYgKHNjcm9sbFZpZXdJbnNldHMubGVmdCA+IDAgJiYgc2Nyb2xsVmlld09yaWdpbkluY2x1ZGlu
Z0luc2V0LnggPCAwKQorICAgICAgICBjb250ZW50SW5zZXRzLmxlZnQgPSBzdGQ6Om1pbigtc2Ny
b2xsVmlld09yaWdpbkluY2x1ZGluZ0luc2V0LngsIHNjcm9sbFZpZXdJbnNldHMubGVmdCkgLyBz
Y2FsZUZhY3RvcjsKKworICAgIGlmIChzY3JvbGxWaWV3SW5zZXRzLnRvcCA+IDAgJiYgc2Nyb2xs
Vmlld09yaWdpbkluY2x1ZGluZ0luc2V0LnkgPCAwKQorICAgICAgICBjb250ZW50SW5zZXRzLnRv
cCA9IHN0ZDo6bWluKC1zY3JvbGxWaWV3T3JpZ2luSW5jbHVkaW5nSW5zZXQueSwgc2Nyb2xsVmll
d0luc2V0cy50b3ApIC8gc2NhbGVGYWN0b3I7CisKKyAgICBpZiAoc2Nyb2xsVmlld0luc2V0cy5y
aWdodCA+IDAgJiYgc2Nyb2xsVmlld09yaWdpbkluY2x1ZGluZ0luc2V0LnggPiBtYXhpbXVtSG9y
aXpvbnRhbFNjcm9sbEV4dGVudFdpdGhvdXRSZXZlYWxpbmdSaWdodENvbnRlbnRJbnNldCkKKyAg
ICAgICAgY29udGVudEluc2V0cy5yaWdodCA9IHN0ZDo6bWluKHNjcm9sbFZpZXdPcmlnaW5JbmNs
dWRpbmdJbnNldC54IC0gbWF4aW11bUhvcml6b250YWxTY3JvbGxFeHRlbnRXaXRob3V0UmV2ZWFs
aW5nUmlnaHRDb250ZW50SW5zZXQsIHNjcm9sbFZpZXdJbnNldHMucmlnaHQpIC8gc2NhbGVGYWN0
b3I7CisKKyAgICBpZiAoc2Nyb2xsVmlld0luc2V0cy5ib3R0b20gPiAwICYmIHNjcm9sbFZpZXdP
cmlnaW5JbmNsdWRpbmdJbnNldC55ID4gbWF4aW11bVZlcnRpY2FsU2Nyb2xsRXh0ZW50V2l0aG91
dFJldmVhbGluZ0JvdHRvbUNvbnRlbnRJbnNldCkKKyAgICAgICAgY29udGVudEluc2V0cy5ib3R0
b20gPSBzdGQ6Om1pbihzY3JvbGxWaWV3T3JpZ2luSW5jbHVkaW5nSW5zZXQueSAtIG1heGltdW1W
ZXJ0aWNhbFNjcm9sbEV4dGVudFdpdGhvdXRSZXZlYWxpbmdCb3R0b21Db250ZW50SW5zZXQsIHNj
cm9sbFZpZXdJbnNldHMuYm90dG9tKSAvIHNjYWxlRmFjdG9yOworCiAjaWYgRU5BQkxFKENTU19T
Q1JPTExfU05BUCkgJiYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykKICAgICBpZiAoaW5TdGFibGVT
dGF0ZSkgewogICAgICAgICBXZWJLaXQ6OlJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkq
IGNvb3JkaW5hdG9yID0gX3BhZ2UtPnNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkoKTsKQEAgLTI5
OTQsNiArMzAxNCw3IEBAIC0gKHZvaWQpX3VwZGF0ZVZpc2libGVDb250ZW50UmVjdHMKIAogICAg
IFtfY29udGVudFZpZXcgZGlkVXBkYXRlVmlzaWJsZVJlY3Q6dmlzaWJsZVJlY3RJbkNvbnRlbnRD
b29yZGluYXRlcwogICAgICAgICB1bm9ic2N1cmVkUmVjdDp1bm9ic2N1cmVkUmVjdEluQ29udGVu
dENvb3JkaW5hdGVzCisgICAgICAgIGNvbnRlbnRJbnNldHM6Y29udGVudEluc2V0cwogICAgICAg
ICB1bm9ic2N1cmVkUmVjdEluU2Nyb2xsVmlld0Nvb3JkaW5hdGVzOnVub2JzY3VyZWRSZWN0CiAg
ICAgICAgIG9ic2N1cmVkSW5zZXRzOl9vYnNjdXJlZEluc2V0cwogICAgICAgICB1bm9ic2N1cmVk
U2FmZUFyZWFJbnNldHM6W3NlbGYgX2NvbXB1dGVkVW5vYnNjdXJlZFNhZmVBcmVhSW5zZXRdCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcuaAppbmRleCBhMDYwN2Uz
ZDFhYmM3NTI4OTgxNzk5MWE0YjJlNjFlZjgyOTJjMTY5Li41MjJhY2ExOWQwMmIwODk2ODhjYzgy
MzIzM2M5ZTAxZTY4M2ViYzU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV0tDb250ZW50Vmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0Nv
bnRlbnRWaWV3LmgKQEAgLTcxLDYgKzcxLDcgQEAgY2xhc3MgV2ViUHJvY2Vzc1Bvb2w7CiAKIC0g
KHZvaWQpZGlkVXBkYXRlVmlzaWJsZVJlY3Q6KENHUmVjdCl2aXNpYmxlUmVjdAogICAgIHVub2Jz
Y3VyZWRSZWN0OihDR1JlY3QpdW5vYnNjdXJlZFJlY3QKKyAgICBjb250ZW50SW5zZXRzOihVSUVk
Z2VJbnNldHMpY29udGVudEluc2V0cwogICAgIHVub2JzY3VyZWRSZWN0SW5TY3JvbGxWaWV3Q29v
cmRpbmF0ZXM6KENHUmVjdCl1bm9ic2N1cmVkUmVjdEluU2Nyb2xsVmlld0Nvb3JkaW5hdGVzCiAg
ICAgb2JzY3VyZWRJbnNldHM6KFVJRWRnZUluc2V0cylvYnNjdXJlZEluc2V0cwogICAgIHVub2Jz
Y3VyZWRTYWZlQXJlYUluc2V0czooVUlFZGdlSW5zZXRzKXVub2JzY3VyZWRTYWZlQXJlYUluc2V0
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbQppbmRleCBj
ZWQ4NWU4Yzk5MThhN2I1NjcxNjdkOTdhZTg4ZGI2MGZhZmFmM2E1Li4zMDRjMjNmNDAxYmZmNjQ4
ZTgzMjg2ZDIzZjNkYjVlNWU0MjI1NTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV0tDb250ZW50Vmlldy5tbQpAQCAtMzY1LDYgKzM2NSwxMSBAQCAtICh2b2lkKV9kaWRFeGl0
U3RhYmxlU3RhdGUKICAgICBbX3RleHRTZWxlY3Rpb25Bc3Npc3RhbnQgZGVhY3RpdmF0ZVNlbGVj
dGlvbl07CiB9CiAKK3N0YXRpYyBXZWJDb3JlOjpGbG9hdEJveEV4dGVudCBmbG9hdEJveEV4dGVu
dChVSUVkZ2VJbnNldHMgaW5zZXRzKQoreworICAgIHJldHVybiBXZWJDb3JlOjpGbG9hdEJveEV4
dGVudChpbnNldHMudG9wLCBpbnNldHMucmlnaHQsIGluc2V0cy5ib3R0b20sIGluc2V0cy5sZWZ0
KTsKK30KKwogLSAoQ0dSZWN0KV9jb21wdXRlVW5vYnNjdXJlZENvbnRlbnRSZWN0UmVzcGVjdGlu
Z0lucHV0Vmlld0JvdW5kczooQ0dSZWN0KXVub2JzY3VyZWRDb250ZW50UmVjdCBpbnB1dFZpZXdC
b3VuZHM6KENHUmVjdClpbnB1dFZpZXdCb3VuZHMKIHsKICAgICAvLyBUaGUgaW5wdXQgdmlldyBi
b3VuZHMgYXJlIGluIHdpbmRvdyBjb29yZGluYXRlcywgYnV0IHRoZSB1bm9ic2N1cmVkIHJlY3Qg
aXMgaW4gY29udGVudCBjb29yZGluYXRlcy4gQWNjb3VudCBmb3IgdGhpcyBieSBjb252ZXJ0aW5n
IGlucHV0IHZpZXcgYm91bmRzIHRvIGNvbnRlbnQgY29vcmRpbmF0ZXMuCkBAIC0zNzYsNiArMzgx
LDcgQEAgLSAoQ0dSZWN0KV9jb21wdXRlVW5vYnNjdXJlZENvbnRlbnRSZWN0UmVzcGVjdGluZ0lu
cHV0Vmlld0JvdW5kczooQ0dSZWN0KXVub2JzY3UKIAogLSAodm9pZClkaWRVcGRhdGVWaXNpYmxl
UmVjdDooQ0dSZWN0KXZpc2libGVDb250ZW50UmVjdAogICAgIHVub2JzY3VyZWRSZWN0OihDR1Jl
Y3QpdW5vYnNjdXJlZENvbnRlbnRSZWN0CisgICAgY29udGVudEluc2V0czooVUlFZGdlSW5zZXRz
KWNvbnRlbnRJbnNldHMKICAgICB1bm9ic2N1cmVkUmVjdEluU2Nyb2xsVmlld0Nvb3JkaW5hdGVz
OihDR1JlY3QpdW5vYnNjdXJlZFJlY3RJblNjcm9sbFZpZXdDb29yZGluYXRlcwogICAgIG9ic2N1
cmVkSW5zZXRzOihVSUVkZ2VJbnNldHMpb2JzY3VyZWRJbnNldHMKICAgICB1bm9ic2N1cmVkU2Fm
ZUFyZWFJbnNldHM6KFVJRWRnZUluc2V0cyl1bm9ic2N1cmVkU2FmZUFyZWFJbnNldHMKQEAgLTQw
NCwxMSArNDEwLDEyIEBAIC0gKHZvaWQpZGlkVXBkYXRlVmlzaWJsZVJlY3Q6KENHUmVjdCl2aXNp
YmxlQ29udGVudFJlY3QKICAgICBXZWJLaXQ6OlZpc2libGVDb250ZW50UmVjdFVwZGF0ZUluZm8g
dmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mbygKICAgICAgICAgdmlzaWJsZUNvbnRlbnRSZWN0
LAogICAgICAgICB1bm9ic2N1cmVkQ29udGVudFJlY3QsCisgICAgICAgIGZsb2F0Qm94RXh0ZW50
KGNvbnRlbnRJbnNldHMpLAogICAgICAgICB1bm9ic2N1cmVkUmVjdEluU2Nyb2xsVmlld0Nvb3Jk
aW5hdGVzLAogICAgICAgICB1bm9ic2N1cmVkQ29udGVudFJlY3RSZXNwZWN0aW5nSW5wdXRWaWV3
Qm91bmRzLAogICAgICAgICBmaXhlZFBvc2l0aW9uUmVjdEZvckxheW91dCwKLSAgICAgICAgV2Vi
Q29yZTo6RmxvYXRCb3hFeHRlbnQob2JzY3VyZWRJbnNldHMudG9wLCBvYnNjdXJlZEluc2V0cy5y
aWdodCwgb2JzY3VyZWRJbnNldHMuYm90dG9tLCBvYnNjdXJlZEluc2V0cy5sZWZ0KSwKLSAgICAg
ICAgV2ViQ29yZTo6RmxvYXRCb3hFeHRlbnQodW5vYnNjdXJlZFNhZmVBcmVhSW5zZXRzLnRvcCwg
dW5vYnNjdXJlZFNhZmVBcmVhSW5zZXRzLnJpZ2h0LCB1bm9ic2N1cmVkU2FmZUFyZWFJbnNldHMu
Ym90dG9tLCB1bm9ic2N1cmVkU2FmZUFyZWFJbnNldHMubGVmdCksCisgICAgICAgIGZsb2F0Qm94
RXh0ZW50KG9ic2N1cmVkSW5zZXRzKSwKKyAgICAgICAgZmxvYXRCb3hFeHRlbnQodW5vYnNjdXJl
ZFNhZmVBcmVhSW5zZXRzKSwKICAgICAgICAgem9vbVNjYWxlLAogICAgICAgICBpc1N0YWJsZVN0
YXRlLAogICAgICAgICBfc2l6ZUNoYW5nZWRTaW5jZUxhc3RWaXNpYmxlQ29udGVudFJlY3RVcGRh
dGUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2Vi
UGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdl
SU9TLm1tCmluZGV4IDA2Njk2YzA2NWNjNzc0OGMxY2JkZTAwNTQ1ZTM3MzY0ZWE2OTRlNTMuLjli
MDlhMGFmY2JiMmFhODY3MDBmN2RhMmI1NGVhOTc4NzVjYjBjZWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC0zMDE2LDYg
KzMwMTYsNyBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVZpc2libGVDb250ZW50UmVjdHMoY29uc3Qg
VmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mbyYgdmlzaQogICAgICAgICB2aWV3cG9ydENvbmZp
Z3VyYXRpb25DaGFuZ2VkKCk7CiAKICAgICBmcmFtZVZpZXcuc2V0VW5vYnNjdXJlZENvbnRlbnRT
aXplKHZpc2libGVDb250ZW50UmVjdFVwZGF0ZUluZm8udW5vYnNjdXJlZENvbnRlbnRSZWN0KCku
c2l6ZSgpKTsKKyAgICBtX3BhZ2UtPnNldENvbnRlbnRJbnNldHModmlzaWJsZUNvbnRlbnRSZWN0
VXBkYXRlSW5mby5jb250ZW50SW5zZXRzKCkpOwogICAgIG1fcGFnZS0+c2V0T2JzY3VyZWRJbnNl
dHModmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mby5vYnNjdXJlZEluc2V0cygpKTsKICAgICBt
X3BhZ2UtPnNldFVub2JzY3VyZWRTYWZlQXJlYUluc2V0cyh2aXNpYmxlQ29udGVudFJlY3RVcGRh
dGVJbmZvLnVub2JzY3VyZWRTYWZlQXJlYUluc2V0cygpKTsKICAgICBtX3BhZ2UtPnNldEVuY2xv
c2VkSW5TY3JvbGxhYmxlQW5jZXN0b3JWaWV3KHZpc2libGVDb250ZW50UmVjdFVwZGF0ZUluZm8u
ZW5jbG9zZWRJblNjcm9sbGFibGVBbmNlc3RvclZpZXcoKSk7CmRpZmYgLS1naXQgYS9Ub29scy9D
aGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMDc3ZDM5MzI5NGI1M2JlZTc4YTNjNDk0
ZTg2NTVkNzZkOTgyOTBkOC4uMThlZGI1Zjk4ZWI4NmNkNzZmOGU0NTE4NTIwM2IwMmFiZWMzZjgz
YSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDM1IEBACisyMDE5LTAxLTE3ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBw
bGUuY29tPgorCisgICAgICAgIFtpT1NdIENvbnRlbnQgb2Zmc2V0IGp1bXBzIGVycmF0aWNhbGx5
IHdoZW4gYXV0b3Njcm9sbGluZyBuZWFyIHNjcm9sbCB2aWV3IGNvbnRlbnQgaW5zZXQgYXJlYXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MzQ5NAor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDY4NTk2Mjc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
U2ltb24gRnJhc2VyIGFuZCBUaW0gSG9ydG9uLgorCisgICAgICAgIEFkZCBhIG5ldyB0ZXN0IG9w
dGlvbiB0byBhZGQgYSB0b3AgY29udGVudCBpbnNldCB0byB0aGUgdGVzdCBydW5uZXIncyBXS1dl
YlZpZXcncyBzY3JvbGwgdmlldywgYW5kIGF1dG9tYXRpY2FsbHkKKyAgICAgICAgc2Nyb2xsIHRv
IHJldmVhbCB0aGlzIHRvcCBjb250ZW50IGluc2V0IGFyZWEgd2hlbiBiZWdpbm5pbmcgdGhlIHRl
c3QgKGkuZS4sIHNjcm9sbCB0byAoMCwgLXRvcENvbnRlbnRJbnNldCkpLgorCisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbToKKyAgICAgICAgKFdU
Ujo6VUlTY3JpcHRDb250cm9sbGVyOjpjb250ZW50T2Zmc2V0WCBjb25zdCk6CisgICAgICAgIChX
VFI6OlVJU2NyaXB0Q29udHJvbGxlcjo6Y29udGVudE9mZnNldFkgY29uc3QpOgorICAgICAgICAq
IFRlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L0JpbmRpbmdzL1VJU2NyaXB0Q29udHJv
bGxlci5pZGw6CisgICAgICAgICogVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlT
Y3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVyOjpj
b250ZW50T2Zmc2V0WCBjb25zdCk6CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcjo6
Y29udGVudE9mZnNldFkgY29uc3QpOgorICAgICAgICAqIFRlc3RSdW5uZXJTaGFyZWQvVUlTY3Jp
cHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5oOgorCisgICAgICAgIEFsc28gYWRkIG5ldyBV
SVNjcmlwdENvbnRyb2xsZXIgbWV0aG9kcyB0byBhc2sgZm9yIHRoZSBjb250ZW50IG9mZnNldCBv
ZiB0aGUgcGxhdGZvcm0gc2Nyb2xsIHZpZXcuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6dXBkYXRlVGVzdE9wdGlvbnNGcm9t
VGVzdEhlYWRlcik6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0T3B0aW9ucy5oOgor
ICAgICAgICAoV1RSOjpUZXN0T3B0aW9uczo6aGFzU2FtZUluaXRpYWxpemF0aW9uT3B0aW9ucyBj
b25zdCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9pb3MvVGVzdENvbnRyb2xsZXJJT1Mu
bW06CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybVJlc2V0U3RhdGVUb0Nv
bnNpc3RlbnRWYWx1ZXMpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0
Q29udHJvbGxlcklPUy5tbToKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVyOjpjb250
ZW50T2Zmc2V0WCBjb25zdCk6CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcjo6Y29u
dGVudE9mZnNldFkgY29uc3QpOgorCiAyMDE5LTAxLTE2ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5u
QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYSBuZXcgU1BJIGZvciBjb250cm9sbGluZyBnZXRV
c2VyTWVkaWEKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9VSVNjcmlwdENv
bnRyb2xsZXJJT1MubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9pb3MvVUlTY3JpcHRDb250cm9s
bGVySU9TLm1tCmluZGV4IDM5ODAzNGE0YzIwZTM5YWNhZWYyNjljZTk0NTg5NDg0ODI0YzJiOTYu
LjhhMTEyNWY0ZWY5MTk4NDUyNjY5ZTA0MTljNTg5YTg5MDJlOGE2NzAgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0KKysrIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbQpAQCAtMjExLDYg
KzIxMSwxNiBAQCBzdGF0aWMgQ0dQb2ludCBjb250ZW50T2Zmc2V0Qm91bmRlZEluVmFsaWRSYW5n
ZShVSVNjcm9sbFZpZXcgKnNjcm9sbFZpZXcsIENHUG9pbgogICAgIHJldHVybiBjb250ZW50T2Zm
c2V0OwogfQogCitkb3VibGUgVUlTY3JpcHRDb250cm9sbGVyOjpjb250ZW50T2Zmc2V0WCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIFtnV2ViU2Nyb2xsVmlldyBjb250ZW50T2Zmc2V0XS54OworfQor
Citkb3VibGUgVUlTY3JpcHRDb250cm9sbGVyOjpjb250ZW50T2Zmc2V0WSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIFtnV2ViU2Nyb2xsVmlldyBjb250ZW50T2Zmc2V0XS55OworfQorCiB2b2lkIFVJ
U2NyaXB0Q29udHJvbGxlcjo6c2Nyb2xsVG9PZmZzZXQobG9uZyB4LCBsb25nIHkpCiB7CiAgICAg
W2dXZWJTY3JvbGxWaWV3IHNldENvbnRlbnRPZmZzZXQ6Y29udGVudE9mZnNldEJvdW5kZWRJblZh
bGlkUmFuZ2UoZ1dlYlNjcm9sbFZpZXcsIENHUG9pbnRNYWtlKHgsIHkpKSBhbmltYXRlZDpZRVNd
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvQmlu
ZGluZ3MvVUlTY3JpcHRDb250cm9sbGVyLmlkbCBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlT
Y3JpcHRDb250ZXh0L0JpbmRpbmdzL1VJU2NyaXB0Q29udHJvbGxlci5pZGwKaW5kZXggN2QyMDRl
ODU3MjZhODZkM2ZhOGVjMmMzOGI5Nzc4YzEzYjcwNjYyMy4uNTQyNGJhOGE4Y2ZiZTRhZDgxNGMw
ZGFiZTYxMTczMzdlZWRmOTY3YyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9V
SVNjcmlwdENvbnRleHQvQmluZGluZ3MvVUlTY3JpcHRDb250cm9sbGVyLmlkbAorKysgYi9Ub29s
cy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9CaW5kaW5ncy9VSVNjcmlwdENvbnRy
b2xsZXIuaWRsCkBAIC0yMzEsNiArMjMxLDkgQEAgaW50ZXJmYWNlIFVJU2NyaXB0Q29udHJvbGxl
ciB7CiAKICAgICB2b2lkIHJlc2lnbkZpcnN0UmVzcG9uZGVyKCk7CiAKKyAgICByZWFkb25seSBh
dHRyaWJ1dGUgZG91YmxlIGNvbnRlbnRPZmZzZXRYOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBk
b3VibGUgY29udGVudE9mZnNldFk7CisKICAgICB2b2lkIHNjcm9sbFRvT2Zmc2V0KGxvbmcgeCwg
bG9uZyB5KTsgLy8gSW5pdGlhdGUgYW4gYW5pbWF0ZWQgc2Nyb2xsIGluIHRoZSBVSSBwcm9jZXNz
LgogICAgIGF0dHJpYnV0ZSBvYmplY3QgZGlkRW5kU2Nyb2xsaW5nQ2FsbGJhY2s7CiAKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29u
dHJvbGxlci5jcHAgYi9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNj
cmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IGM5NTg3YzQyZTlmMDNlZmE4OTk0ZDU0ZDM5MDE5ZTc2
NzhlYzZiNzguLmE1YmFhMDZjZDUzMzIwMDU5OWYzYWY1Njg5M2UzNzVmNmUwMjMzYzEgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29u
dHJvbGxlci5jcHAKKysrIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQv
VUlTY3JpcHRDb250cm9sbGVyLmNwcApAQCAtMzM2LDYgKzMzNiwxNiBAQCBKU1JldGFpblB0cjxK
U1N0cmluZ1JlZj4gVUlTY3JpcHRDb250cm9sbGVyOjpmb3JtSW5wdXRMYWJlbCgpIGNvbnN0CiAg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK2RvdWJsZSBVSVNjcmlwdENvbnRyb2xsZXI6OmNvbnRl
bnRPZmZzZXRYKCkgY29uc3QKK3sKKyAgICByZXR1cm4gMDsKK30KKworZG91YmxlIFVJU2NyaXB0
Q29udHJvbGxlcjo6Y29udGVudE9mZnNldFkoKSBjb25zdAoreworICAgIHJldHVybiAwOworfQor
CiB2b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6c2Nyb2xsVG9PZmZzZXQobG9uZyB4LCBsb25nIHkp
CiB7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4
dC9VSVNjcmlwdENvbnRyb2xsZXIuaCBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRD
b250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5oCmluZGV4IGE2NDgyYzllNzk0MGE5ZTU3NDVmYjAy
NjQwNjQwOGQwYjRlMzQ1OGUuLmQzZmIxY2JiMDkyNTBhODI3OWRmY2IyOGJiZjhjOTAyN2Y3MDIx
Y2IgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJ
U2NyaXB0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRD
b250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5oCkBAIC0xMTMsNiArMTEzLDkgQEAgcHVibGljOgog
ICAgIEpTT2JqZWN0UmVmIGNvbnRlbnRzT2ZVc2VySW50ZXJmYWNlSXRlbShKU1N0cmluZ1JlZikg
Y29uc3Q7CiAgICAgdm9pZCBvdmVycmlkZVByZWZlcmVuY2UoSlNTdHJpbmdSZWYgcHJlZmVyZW5j
ZSwgSlNTdHJpbmdSZWYgdmFsdWUpOwogICAgIAorICAgIGRvdWJsZSBjb250ZW50T2Zmc2V0WCgp
IGNvbnN0OworICAgIGRvdWJsZSBjb250ZW50T2Zmc2V0WSgpIGNvbnN0OworCiAgICAgdm9pZCBz
Y3JvbGxUb09mZnNldChsb25nIHgsIGxvbmcgeSk7CiAKICAgICB2b2lkIGltbWVkaWF0ZVNjcm9s
bFRvT2Zmc2V0KGxvbmcgeCwgbG9uZyB5KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29u
dHJvbGxlci5jcHAKaW5kZXggN2M4OGUwMDI3ZjNkNzUwYmU2MTU2NzIzMmE4ODFhZGNkZmI0ZGRh
OC4uOTI2MTc3ZWYyYzc3MjliNDhhM2JjMDM3YTQxYTFiNmYyYzQzODJkMyAxMDA2NDQKLS0tIGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKQEAgLTEyNjYsNiArMTI2Niw4IEBAIHN0
YXRpYyB2b2lkIHVwZGF0ZVRlc3RPcHRpb25zRnJvbVRlc3RIZWFkZXIoVGVzdE9wdGlvbnMmIHRl
c3RPcHRpb25zLCBjb25zdCBzdGQ6CiAgICAgICAgICAgICB0ZXN0T3B0aW9ucy5lZGl0YWJsZSA9
IHBhcnNlQm9vbGVhblRlc3RIZWFkZXJWYWx1ZSh2YWx1ZSk7CiAgICAgICAgIGVsc2UgaWYgKGtl
eSA9PSAiZW5hYmxlVW5kb01hbmFnZXJBUEkiKQogICAgICAgICAgICAgdGVzdE9wdGlvbnMuZW5h
YmxlVW5kb01hbmFnZXJBUEkgPSBwYXJzZUJvb2xlYW5UZXN0SGVhZGVyVmFsdWUodmFsdWUpOwor
ICAgICAgICBlbHNlIGlmIChrZXkgPT0gImNvbnRlbnRJbnNldC50b3AiKQorICAgICAgICAgICAg
dGVzdE9wdGlvbnMuY29udGVudEluc2V0VG9wID0gc3RkOjpzdG9kKHZhbHVlKTsKICAgICAgICAg
cGFpclN0YXJ0ID0gcGFpckVuZCArIDE7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0T3B0aW9ucy5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0
T3B0aW9ucy5oCmluZGV4IDEwY2Q0ZTRjMzQ1NzFiMGIxYjhhMDJjYjZkZDQ3OWM2N2ZlYzczNDAu
LjYxNGNlN2I1ODE4NTk3ZWE5YTQ4MTNhZGM3YjJlMWZjNDZhNDYwNzkgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdE9wdGlvbnMuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RPcHRpb25zLmgKQEAgLTY5LDYgKzY5LDggQEAgc3RydWN0IFRlc3RPcHRpb25z
IHsKICAgICBib29sIGVkaXRhYmxlIHsgZmFsc2UgfTsKICAgICBib29sIGVuYWJsZVVuZG9NYW5h
Z2VyQVBJIHsgZmFsc2UgfTsKIAorICAgIGRvdWJsZSBjb250ZW50SW5zZXRUb3AgeyAwIH07CisK
ICAgICBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciB7IDEgfTsKICAgICBWZWN0b3I8U3RyaW5nPiBv
dmVycmlkZUxhbmd1YWdlczsKICAgICBzdGQ6OnN0cmluZyBhcHBsaWNhdGlvbk1hbmlmZXN0OwpA
QCAtMTEzLDcgKzExNSw4IEBAIHN0cnVjdCBUZXN0T3B0aW9ucyB7CiAgICAgICAgICAgICB8fCBz
aG91bGRJZ25vcmVNZXRhVmlld3BvcnQgIT0gb3B0aW9ucy5zaG91bGRJZ25vcmVNZXRhVmlld3Bv
cnQKICAgICAgICAgICAgIHx8IGVuYWJsZUVkaXRhYmxlSW1hZ2VzICE9IG9wdGlvbnMuZW5hYmxl
RWRpdGFibGVJbWFnZXMKICAgICAgICAgICAgIHx8IGVkaXRhYmxlICE9IG9wdGlvbnMuZWRpdGFi
bGUKLSAgICAgICAgICAgIHx8IGVuYWJsZVVuZG9NYW5hZ2VyQVBJICE9IG9wdGlvbnMuZW5hYmxl
VW5kb01hbmFnZXJBUEkpCisgICAgICAgICAgICB8fCBlbmFibGVVbmRvTWFuYWdlckFQSSAhPSBv
cHRpb25zLmVuYWJsZVVuZG9NYW5hZ2VyQVBJCisgICAgICAgICAgICB8fCBjb250ZW50SW5zZXRU
b3AgIT0gb3B0aW9ucy5jb250ZW50SW5zZXRUb3ApCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICAgICAgaWYgKGV4cGVyaW1lbnRhbEZlYXR1cmVzICE9IG9wdGlvbnMuZXhwZXJpbWVu
dGFsRmVhdHVyZXMpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9UZXN0
Q29udHJvbGxlcklPUy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1Rlc3RDb250cm9s
bGVySU9TLm1tCmluZGV4IDRhMTA4MGNhZDQ5ZGYxMGRjMWI0NDQ2NzA1YzA3NmMxZTBhZmJiNGQu
Ljg1NWQyZDViYzcwMDM0MDQ3NGM0MjcxY2M3YjdhYWE5NTEwMjAwNDMgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1Rlc3RDb250cm9sbGVySU9TLm1tCisrKyBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvaW9zL1Rlc3RDb250cm9sbGVySU9TLm1tCkBAIC0xMzIsNyArMTMy
LDggQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1SZXNldFN0YXRlVG9Db25zaXN0ZW50
VmFsdWVzKGNvbnN0IFRlc3RPcHRpb25zJiBvcHQKICAgICAgICAgVUlTY3JvbGxWaWV3ICpzY3Jv
bGxWaWV3ID0gd2ViVmlldy5zY3JvbGxWaWV3OwogICAgICAgICBbc2Nyb2xsVmlldyBfcmVtb3Zl
QWxsQW5pbWF0aW9uczpZRVNdOwogICAgICAgICBbc2Nyb2xsVmlldyBzZXRab29tU2NhbGU6MSBh
bmltYXRlZDpOT107Ci0gICAgICAgIFtzY3JvbGxWaWV3IHNldENvbnRlbnRPZmZzZXQ6Q0dQb2lu
dFplcm9dOworICAgICAgICBzY3JvbGxWaWV3LmNvbnRlbnRJbnNldCA9IFVJRWRnZUluc2V0c01h
a2Uob3B0aW9ucy5jb250ZW50SW5zZXRUb3AsIDAsIDAsIDApOworICAgICAgICBzY3JvbGxWaWV3
LmNvbnRlbnRPZmZzZXQgPSBDR1BvaW50TWFrZSgwLCAtb3B0aW9ucy5jb250ZW50SW5zZXRUb3Ap
OwogCiAgICAgICAgIGlmICh3ZWJWaWV3LmludGVyYWN0aW5nV2l0aEZvcm1Db250cm9sKQogICAg
ICAgICAgICAgc2hvdWxkUmVzdG9yZUZpcnN0UmVzcG9uZGVyID0gW3dlYlZpZXcgcmVzaWduRmly
c3RSZXNwb25kZXJdOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvVUlT
Y3JpcHRDb250cm9sbGVySU9TLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvVUlTY3Jp
cHRDb250cm9sbGVySU9TLm1tCmluZGV4IDllMjA0NzdiMWU4NjgyNjdmNDljNGEwMDkyYjBhZDU4
YzNkNDkxODYuLjRhYTk0MjkwNTc4NzQ4Y2Y4MWJjNTM1NTA3NmRmYTI3YThhODFjNWQgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5t
bQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1Mu
bW0KQEAgLTQ4Nyw2ICs0ODcsMTggQEAgc3RhdGljIENHUG9pbnQgY29udGVudE9mZnNldEJvdW5k
ZWRJblZhbGlkUmFuZ2UoVUlTY3JvbGxWaWV3ICpzY3JvbGxWaWV3LCBDR1BvaW4KICAgICByZXR1
cm4gY29udGVudE9mZnNldDsKIH0KIAorZG91YmxlIFVJU2NyaXB0Q29udHJvbGxlcjo6Y29udGVu
dE9mZnNldFgoKSBjb25zdAoreworICAgIFRlc3RSdW5uZXJXS1dlYlZpZXcgKndlYlZpZXcgPSBU
ZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkubWFpbldlYlZpZXcoKS0+cGxhdGZvcm1WaWV3KCk7
CisgICAgcmV0dXJuIHdlYlZpZXcuc2Nyb2xsVmlldy5jb250ZW50T2Zmc2V0Lng7Cit9CisKK2Rv
dWJsZSBVSVNjcmlwdENvbnRyb2xsZXI6OmNvbnRlbnRPZmZzZXRZKCkgY29uc3QKK3sKKyAgICBU
ZXN0UnVubmVyV0tXZWJWaWV3ICp3ZWJWaWV3ID0gVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigp
Lm1haW5XZWJWaWV3KCktPnBsYXRmb3JtVmlldygpOworICAgIHJldHVybiB3ZWJWaWV3LnNjcm9s
bFZpZXcuY29udGVudE9mZnNldC55OworfQorCiB2b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6c2Ny
b2xsVG9PZmZzZXQobG9uZyB4LCBsb25nIHkpCiB7CiAgICAgVGVzdFJ1bm5lcldLV2ViVmlldyAq
d2ViVmlldyA9IFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5tYWluV2ViVmlldygpLT5wbGF0
Zm9ybVZpZXcoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwppbmRleCBlODU2MjU0ZjZiNTAwNTUwNWY4YTFkZDNjM2M5NjFlODc5MDFk
N2MxLi43MzgyNzJjM2ZjOWUzZTk1MDQ5ZTZjOWEzNzAzNDBkNjg4YTU3OGVjIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjcgQEAKKzIwMTktMDEtMTcgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBs
ZS5jb20+CisKKyAgICAgICAgW2lPU10gQ29udGVudCBvZmZzZXQganVtcHMgZXJyYXRpY2FsbHkg
d2hlbiBhdXRvc2Nyb2xsaW5nIG5lYXIgc2Nyb2xsIHZpZXcgY29udGVudCBpbnNldCBhcmVhcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkzNDk0Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS80Njg1OTYyNz4KKworICAgICAgICBSZXZpZXdlZCBieSBT
aW1vbiBGcmFzZXIgYW5kIFRpbSBIb3J0b24uCisKKyAgICAgICAgKiBlZGl0aW5nL3NlbGVjdGlv
bi9pb3MvYXV0b3Njcm9sbC13aXRoLXRvcC1jb250ZW50LWluc2V0LWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vaW9zL2F1dG9zY3JvbGwtd2l0aC10b3At
Y29udGVudC1pbnNldC5odG1sOiBBZGRlZC4KKworICAgICAgICBBZGQgYSBuZXcgdGVzdCB0byB2
ZXJpZnkgdGhhdCBtb3ZpbmcgdGhlIHNlbGVjdGlvbiBieSBhdXRvc2Nyb2xsaW5nIG5lYXIgdGhl
IHRvcCBjb250ZW50IGluc2V0IGFyZWEgZG9lcyBub3QKKyAgICAgICAgY2F1c2UgdGhlIHNjcm9s
bCB2aWV3J3MgY29udGVudCBvZmZzZXQgdG8ganVtcC4KKworICAgICAgICAqIGZhc3Qvc2Nyb2xs
aW5nL2lvcy9zY3JvbGwtaW50by12aWV3LXdpdGgtdG9wLWNvbnRlbnQtaW5zZXQtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9pb3Mvc2Nyb2xsLWludG8tdmll
dy13aXRoLXRvcC1jb250ZW50LWluc2V0Lmh0bWw6IEFkZGVkLgorCisgICAgICAgIEFkZCBhIG5l
dyB0ZXN0IHRvIHZlcmlmeSB0aGF0IHByb2dyYW1tYXRpY2FsbHkgc2Nyb2xsaW5nIGFuIGVsZW1l
bnQgdGhhdCdzIGFscmVhZHkgdmlzaWJsZSBpbnRvIHZpZXcgZG9lcyBub3QKKyAgICAgICAgc2Ny
b2xsIGF3YXkgdGhlIHNjcm9sbCB2aWV3J3MgY29udGVudCBpbnNldC4KKworICAgICAgICAqIHJl
c291cmNlcy91aS1oZWxwZXIuanM6CisgICAgICAgICh3aW5kb3cuVUlIZWxwZXIuY29udGVudE9m
ZnNldCk6CisgICAgICAgICh3aW5kb3cuVUlIZWxwZXIpOgorCiAyMDE5LTAxLTE2ICBBbGljaWEg
Qm95YSBHYXJjw61hICA8YWJveWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIEdU
SyBhbmQgV1BFIHRlc3QgZ2FyZGVuaW5nLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGlu
Zy9zZWxlY3Rpb24vaW9zL2F1dG9zY3JvbGwtd2l0aC10b3AtY29udGVudC1pbnNldC1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9pb3MvYXV0b3Njcm9sbC13aXRo
LXRvcC1jb250ZW50LWluc2V0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZWU1Y2ZmODVhODI2
MTVjZDM1MzIxZTEwZmQwYmVlYjI0Yzc0ZGIyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZWRpdGluZy9zZWxlY3Rpb24vaW9zL2F1dG9zY3JvbGwtd2l0aC10b3AtY29udGVudC1pbnNl
dC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMyBAQAorU2VsZWN0IG1lIGFuZCBkcmFnIHVwLgor
CitWZXJpZmllcyB0aGF0IHRyaWdnZXJpbmcgYXV0b3Njcm9sbCBuZWFyIHRoZSB0b3Agb2YgYSB3
ZWIgdmlldyB3aXRoIGEgdG9wIGNvbnRlbnQgaW5zZXQgZG9lcyBub3QgY2F1c2UgdGhlIHNjcm9s
bCB2aWV3J3MgY29udGVudCBvZmZzZXQgdG8ganVtcCB0byAwLiBUaGlzIHRlc3QgcmVxdWlyZXMg
V2ViS2l0VGVzdFJ1bm5lci4gVG8gdmVyaWZ5IG1hbnVhbGx5LCBsb2FkIHRoaXMgcGFnZSBpbiBh
IHdlYiB2aWV3IHRoYXQgaGFzIGEgc2Nyb2xsIHZpZXcgdG9wIGNvbnRlbnQgaW5zZXQsIGFuZCBz
Y3JvbGwgc3VjaCB0aGF0IHRoZSBmdWxsIHRvcCBjb250ZW50IGluc2V0IGFyZWEgaXMgdmlzaWJs
ZS4gQ2hlY2sgdGhhdCBzdGFydGluZyBhIHRleHQgc2VsZWN0aW9uIGxvdXBlIGdlc3R1cmUgbmVh
ciB0aGUgdG9wIG9mIHRoZSB0b3Agb2YgdGhlIGRvY3VtZW50IGFuZCBkcmFnZ2luZyB1cHdhcmRz
IGRvZXMgbm90IHRocmFzaCB0aGUgc2Nyb2xsIHZpZXcncyBjb250ZW50IG9mZnNldC4KKworT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93
ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZmluYWxDb250ZW50T2Zmc2V0LnggaXMg
MAorUEFTUyB2ZXJ0aWNhbE1vdmVtZW50RHVyaW5nRHJhZyA8IDEgaXMgdHJ1ZQorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2lvcy9hdXRvc2Nyb2xsLXdpdGgtdG9wLWNvbnRl
bnQtaW5zZXQuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2lvcy9hdXRvc2Ny
b2xsLXdpdGgtdG9wLWNvbnRlbnQtaW5zZXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNDMzN2VmMGY0MWQw
MzI5NGY5YTg0M2E2ZTJlY2NiMjVlNmVmYzg1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZWRpdGluZy9zZWxlY3Rpb24vaW9zL2F1dG9zY3JvbGwtd2l0aC10b3AtY29udGVudC1pbnNl
dC5odG1sCkBAIC0wLDAgKzEsNTEgQEAKKzwhRE9DVFlQRSBodG1sPiA8IS0tIHdlYmtpdC10ZXN0
LXJ1bm5lciBbIHVzZUZsZXhpYmxlVmlld3BvcnQ9dHJ1ZSwgY29udGVudEluc2V0LnRvcD0xMDAg
XSAtLT4KKzxodG1sPgorPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmlj
ZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xIj4KKzxoZWFkPgorICAgIDxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9yZXNvdXJjZXMvYmFzaWMtZ2VzdHVyZXMuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKyAgICA8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgIDxz
dHlsZT4KKyAgICBib2R5IHsKKyAgICAgICAgbWFyZ2luOiAwOworICAgICAgICBib3gtc2l6aW5n
OiBib3JkZXItYm94OworICAgICAgICBib3JkZXI6IHJlZCAxcHggc29saWQ7CisgICAgfQorCisg
ICAgI3RleHQgeworICAgICAgICBmb250LXNpemU6IDMwcHg7CisgICAgfQorCisgICAgI2NvbnNv
bGUgeworICAgICAgICBvdmVyZmxvdzogc2Nyb2xsOworICAgICAgICBoZWlnaHQ6IDEwMHB4Owor
ICAgIH0KKyAgICA8L3N0eWxlPgorICAgIDxzY3JpcHQ+CisgICAganNUZXN0SXNBc3luYyA9IHRy
dWU7CisKKyAgICBhc3luYyBmdW5jdGlvbiBydW4oKQorICAgIHsKKyAgICAgICAgYXdhaXQgVUlI
ZWxwZXIuYWN0aXZhdGVBbmRXYWl0Rm9ySW5wdXRTZXNzaW9uQXQoMTEwLCA0MCk7CisgICAgICAg
IG9yaWdpbmFsQ29udGVudE9mZnNldCA9IGF3YWl0IFVJSGVscGVyLmNvbnRlbnRPZmZzZXQoKTsK
KyAgICAgICAgYXdhaXQgbG9uZ1ByZXNzQW5kSG9sZEF0UG9pbnQoMTEwLCA0MCk7CisgICAgICAg
IGF3YWl0IHRvdWNoQW5kRHJhZ0Zyb21Qb2ludFRvUG9pbnQoMTEwLCA0MCwgMjEwLCA0MCk7Cisg
ICAgICAgIGF3YWl0IGxpZnRVcEF0UG9pbnQoMjEwLCA0MCk7CisgICAgICAgIGZpbmFsQ29udGVu
dE9mZnNldCA9IGF3YWl0IFVJSGVscGVyLmNvbnRlbnRPZmZzZXQoKTsKKyAgICAgICAgdmVydGlj
YWxNb3ZlbWVudER1cmluZ0RyYWcgPSBNYXRoLmFicyhmaW5hbENvbnRlbnRPZmZzZXQueSAtIG9y
aWdpbmFsQ29udGVudE9mZnNldC55KTsKKworICAgICAgICBzaG91bGRCZSgiZmluYWxDb250ZW50
T2Zmc2V0LngiLCAiMCIpOworICAgICAgICBzaG91bGRCZVRydWUoInZlcnRpY2FsTW92ZW1lbnRE
dXJpbmdEcmFnIDwgMSIpOworICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICB9CisgICAgPC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBjb250ZW50ZWRpdGFibGUgb25sb2FkPSJydW4oKSI+Cisg
ICAgPHAgaWQ9InRleHQiPjxzdHJvbmc+U2VsZWN0IG1lIGFuZCBkcmFnIHVwLjwvc3Ryb25nPjwv
cD4KKyAgICA8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKyAgICA8cCBpZD0iY29uc29sZSI+PC9w
PgorPC9ib2R5PgorPHNjcmlwdD4KKyAgICBkZXNjcmlwdGlvbigiVmVyaWZpZXMgdGhhdCB0cmln
Z2VyaW5nIGF1dG9zY3JvbGwgbmVhciB0aGUgdG9wIG9mIGEgd2ViIHZpZXcgd2l0aCBhIHRvcCBj
b250ZW50IGluc2V0IGRvZXMgbm90IGNhdXNlIHRoZSBzY3JvbGwgdmlldydzIGNvbnRlbnQgb2Zm
c2V0IHRvIGp1bXAgdG8gMC4gVGhpcyB0ZXN0IHJlcXVpcmVzIFdlYktpdFRlc3RSdW5uZXIuIFRv
IHZlcmlmeSBtYW51YWxseSwgbG9hZCB0aGlzIHBhZ2UgaW4gYSB3ZWIgdmlldyB0aGF0IGhhcyBh
IHNjcm9sbCB2aWV3IHRvcCBjb250ZW50IGluc2V0LCBhbmQgc2Nyb2xsIHN1Y2ggdGhhdCB0aGUg
ZnVsbCB0b3AgY29udGVudCBpbnNldCBhcmVhIGlzIHZpc2libGUuIENoZWNrIHRoYXQgc3RhcnRp
bmcgYSB0ZXh0IHNlbGVjdGlvbiBsb3VwZSBnZXN0dXJlIG5lYXIgdGhlIHRvcCBvZiB0aGUgdG9w
IG9mIHRoZSBkb2N1bWVudCBhbmQgZHJhZ2dpbmcgdXB3YXJkcyBkb2VzIG5vdCB0aHJhc2ggdGhl
IHNjcm9sbCB2aWV3J3MgY29udGVudCBvZmZzZXQuIik7Cis8L3NjcmlwdD4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL2lvcy9zY3JvbGwtaW50by12aWV3
LXdpdGgtdG9wLWNvbnRlbnQtaW5zZXQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9z
Y3JvbGxpbmcvaW9zL3Njcm9sbC1pbnRvLXZpZXctd2l0aC10b3AtY29udGVudC1pbnNldC1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZjdmNDc5Yzg1ODNjYzY3NjNhZGU2ZjdhMjhjNDUxYjkwYjI0
NWM0NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL2lvcy9z
Y3JvbGwtaW50by12aWV3LXdpdGgtdG9wLWNvbnRlbnQtaW5zZXQtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMTMgQEAKK1ZlcmlmaWVzIHRoYXQgRWxlbWVudC5zY3JvbGxJbnRvVmlldygpIGRvZXMg
bm90IHNjcm9sbCBhd2F5IHRoZSB0b3AgY29udGVudCBpbnNldCBpZiB0aGUgZWxlbWVudCBpcyBh
bHJlYWR5IHZpc2libGUuIFRoaXMgdGVzdCByZXF1aXJlcyBXZWJLaXRUZXN0UnVubmVyLgorCitP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBvcmlnaW5hbENvbnRlbnRPZmZzZXQu
eCBpcyAwCitQQVNTIG9yaWdpbmFsQ29udGVudE9mZnNldC55IGlzIC0xMDAKK1BBU1MgZmluYWxD
b250ZW50T2Zmc2V0LnggaXMgMAorUEFTUyBmaW5hbENvbnRlbnRPZmZzZXQueSBpcyAtMTAwCitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvaW9zL3Njcm9sbC1pbnRvLXZpZXctd2l0
aC10b3AtY29udGVudC1pbnNldC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvaW9z
L3Njcm9sbC1pbnRvLXZpZXctd2l0aC10b3AtY29udGVudC1pbnNldC5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmZkNzdlZjZmNTEzMGIzYmJhNzVhYjA4ZjZiN2FiMTRlODZjZDllMzkKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9pb3Mvc2Nyb2xsLWludG8tdmlldy13aXRo
LXRvcC1jb250ZW50LWluc2V0Lmh0bWwKQEAgLTAsMCArMSw0NyBAQAorPCFET0NUWVBFIGh0bWw+
IDwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgdXNlRmxleGlibGVWaWV3cG9ydD10cnVlLCBjb250
ZW50SW5zZXQudG9wPTEwMCBdIC0tPgorPGh0bWw+Cis8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29u
dGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEiPgorPGhlYWQ+CisgICAg
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0Pgor
ICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+
CisgICAgPHN0eWxlPgorICAgIGJvZHkgeworICAgICAgICBtYXJnaW46IDA7CisgICAgICAgIGJv
cmRlcjogcmVkIDFweCBzb2xpZDsKKyAgICB9CisKKyAgICAjdGFyZ2V0IHsKKyAgICAgICAgcG9z
aXRpb246IGFic29sdXRlOworICAgICAgICB3aWR0aDogNHB4OworICAgICAgICBoZWlnaHQ6IDRw
eDsKKyAgICAgICAgdG9wOiAwcHg7CisgICAgICAgIGxlZnQ6IDBweDsKKyAgICAgICAgYmFja2dy
b3VuZC1jb2xvcjogc2lsdmVyOworICAgIH0KKyAgICA8L3N0eWxlPgorICAgIDxzY3JpcHQ+Cisg
ICAganNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICBhc3luYyBmdW5jdGlvbiBydW4oKQorICAg
IHsKKyAgICAgICAgb3JpZ2luYWxDb250ZW50T2Zmc2V0ID0gYXdhaXQgVUlIZWxwZXIuY29udGVu
dE9mZnNldCgpOworICAgICAgICB0YXJnZXQuc2Nyb2xsSW50b1ZpZXcoeyBibG9jazogIm5lYXJl
c3QiLCBpbmxpbmU6ICJuZWFyZXN0IiB9KTsKKyAgICAgICAgZmluYWxDb250ZW50T2Zmc2V0ID0g
YXdhaXQgVUlIZWxwZXIuY29udGVudE9mZnNldCgpOworCisgICAgICAgIHNob3VsZEJlKCJvcmln
aW5hbENvbnRlbnRPZmZzZXQueCIsICIwIik7CisgICAgICAgIHNob3VsZEJlKCJvcmlnaW5hbENv
bnRlbnRPZmZzZXQueSIsICItMTAwIik7CisgICAgICAgIHNob3VsZEJlKCJmaW5hbENvbnRlbnRP
ZmZzZXQueCIsICIwIik7CisgICAgICAgIHNob3VsZEJlKCJmaW5hbENvbnRlbnRPZmZzZXQueSIs
ICItMTAwIik7CisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH0KKyAgICA8L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5IGNvbnRlbnRlZGl0YWJsZSBvbmxvYWQ9InJ1bigpIj4KKyAgICA8ZGl2
IGlkPSJ0YXJnZXQiPjwvZGl2PgorICAgIDxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorICAgIDxw
IGlkPSJjb25zb2xlIj48L3A+Cis8L2JvZHk+Cis8c2NyaXB0PgorICAgIGRlc2NyaXB0aW9uKCJW
ZXJpZmllcyB0aGF0IEVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoKSBkb2VzIG5vdCBzY3JvbGwgYXdh
eSB0aGUgdG9wIGNvbnRlbnQgaW5zZXQgaWYgdGhlIGVsZW1lbnQgaXMgYWxyZWFkeSB2aXNpYmxl
LiBUaGlzIHRlc3QgcmVxdWlyZXMgV2ViS2l0VGVzdFJ1bm5lci4iKTsKKzwvc2NyaXB0PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcmVzb3VyY2VzL3VpLWhlbHBlci5qcyBiL0xh
eW91dFRlc3RzL3Jlc291cmNlcy91aS1oZWxwZXIuanMKaW5kZXggMmY1NjlhYWNjNTVjNDVjNzAy
NWNlMjE2YTcwMzQ1NzI5MjI0YmM2ZS4uZTY1ZjAzMWQ2NDBkMzIxZjhhYTA5OGMzY2YzYTNlMGU0
NmU0NzMwOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcmVzb3VyY2VzL3VpLWhlbHBlci5qcwor
KysgYi9MYXlvdXRUZXN0cy9yZXNvdXJjZXMvdWktaGVscGVyLmpzCkBAIC01MDQsNCArNTA0LDE2
IEBAIHdpbmRvdy5VSUhlbHBlciA9IGNsYXNzIFVJSGVscGVyIHsKICAgICAgICAgY29uc3QgZXNj
YXBlZElkZW50aWZpZXIgPSBpZGVudGlmaWVyLnJlcGxhY2UoL2AvZywgIlxcYCIpOwogICAgICAg
ICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB0ZXN0UnVubmVyLnJ1blVJU2NyaXB0KGB1
aUNvbnRyb2xsZXIuc2V0S2V5Ym9hcmRJbnB1dE1vZGVJZGVudGlmaWVyKFxgJHtlc2NhcGVkSWRl
bnRpZmllcn1cYClgLCByZXNvbHZlKSk7CiAgICAgfQorCisgICAgc3RhdGljIGNvbnRlbnRPZmZz
ZXQoKQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLmlzSU9TKCkpCisgICAgICAgICAgICByZXR1
cm4gUHJvbWlzZS5yZXNvbHZlKCk7CisKKyAgICAgICAgY29uc3QgdWlTY3JpcHQgPSAiSlNPTi5z
dHJpbmdpZnkoW3VpQ29udHJvbGxlci5jb250ZW50T2Zmc2V0WCwgdWlDb250cm9sbGVyLmNvbnRl
bnRPZmZzZXRZXSkiOworICAgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB0ZXN0
UnVubmVyLnJ1blVJU2NyaXB0KHVpU2NyaXB0LCByZXN1bHQgPT4geworICAgICAgICAgICAgY29u
c3QgW29mZnNldFgsIG9mZnNldFldID0gSlNPTi5wYXJzZShyZXN1bHQpCisgICAgICAgICAgICBy
ZXNvbHZlKHsgeDogb2Zmc2V0WCwgeTogb2Zmc2V0WSB9KTsKKyAgICAgICAgfSkpOworICAgIH0K
IH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>359442</attachid>
            <date>2019-01-17 19:36:41 -0800</date>
            <delta_ts>2019-01-17 20:15:31 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-193494-20190117193640.patch</filename>
            <type>text/plain</type>
            <size>40697</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwMTAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmRkOWQ1MGZlNjM2Mjg4
MTk1ZjQ1OGViNTE4NDg1MTllYzY1YTk5My4uNjNhM2FmODg1ODUxZjk2NTBhNDc1NGE0ZmUxNWY3
ZGYxY2E5MjNiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDE5LTAxLTE3ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIENvbnRl
bnQgb2Zmc2V0IGp1bXBzIGVycmF0aWNhbGx5IHdoZW4gYXV0b3Njcm9sbGluZyBuZWFyIHNjcm9s
bCB2aWV3IGNvbnRlbnQgaW5zZXQgYXJlYXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE5MzQ5NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDY4NTk2
Mjc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyIGFuZCBUaW0gSG9ydG9uLgor
CisgICAgICAgIFdoZW4gY29tcHV0aW5nIHRoZSBjb250ZW50IG9mZnNldCB0byBzY3JvbGwgdG8g
d2hlbiByZXZlYWxpbmcgYSBnaXZlbiByZWN0IGluIGNvbnRlbnQgY29vcmRpbmF0ZXMsIHdlIGN1
cnJlbnRseQorICAgICAgICBqdXN0IHVzZSB0aGUgdW5vYnNjdXJlZCBjb250ZW50IHJlY3QuIEFz
IGEgcmVzdWx0LCB3aGVuIHNjcm9sbGluZyB0byByZXZlYWwgYSByZWN0LCB3ZSdsbCBjbGFtcCB0
aGUgZmluYWwgc2Nyb2xsCisgICAgICAgIHBvc2l0aW9uIHN1Y2ggdGhhdCBvbmx5IGNvbnRlbnQg
aXMgdmlzaWJsZS4gRm9yIGV4YW1wbGUsIHdoZW4gYXNrZWQgdG8gcmV2ZWFsIHRoZSByZWN0IGAo
MCwgMCwgMSwgMSlgLCB3ZSBhZGp1c3QKKyAgICAgICAgdGhlIHNjcm9sbCBwb3NpdGlvbiB0byBi
ZSB0aGUgb3JpZ2luLgorCisgICAgICAgIEhvd2V2ZXIsIGNvbnNpZGVyIHRoZSBjYXNlIHdoZXJl
IGEgY2xpZW50IChlLmcuIE1haWwgb24gaU9TKSBoYXMgYWRkZWQgYSBjb250ZW50IGluc2V0IHRv
IHRoZSB3ZWIgdmlldydzIHNjcm9sbAorICAgICAgICB2aWV3LiBJZiB3ZSdyZSBhc2tlZCB0byBy
ZXZlYWwgYSByZWN0IHRoYXQgaXMgb3V0c2lkZSB0aGUgY29udGVudCBhcmVhIGJ1dCB3aXRoaW4g
YSBjb250ZW50IGluc2V0LCB3ZSB3aWxsIHN0aWxsCisgICAgICAgIGVuZCB1cCBjbGFtcGluZyB0
aGUgc2Nyb2xsIHBvc2l0aW9uIHRvIHRoZSB1bm9ic2N1cmVkIHJlY3QuIFRoaXMgbWFuaWZlc3Rz
IGluIGEgYnVnIHdoZXJlIHNlbGVjdGluZyB0ZXh0IGFuZAorICAgICAgICBhdXRvc2Nyb2xsaW5n
IGluIGlPUyBNYWlsIGNvbXBvc2Ugd2hpbGUgdGhlIHNjcm9sbCB2aWV3IGlzIHNjcm9sbGVkIGFs
bCB0aGUgd2F5IHRvIHRoZSB0b3AgdG8gcmV2ZWFsIHRoZSBUby9DYy8KKyAgICAgICAgU3ViamVj
dCBmaWVsZHMgY2F1c2VzIHRoZSBjb250ZW50IG9mZnNldCB0byBqdW1wIHRvIHRoZSBvcmlnaW4s
IHJhdGhlciB0aGFuIHN0YXlpbmcgYXQgKDAsIC10b3BDb250ZW50SW5zZXQpLgorCisgICAgICAg
IFRvIGZpeCB0aGlzLCB3ZSB0ZWFjaCBgUmVuZGVyTGF5ZXI6OnNjcm9sbFJlY3RUb1Zpc2libGVg
IGFib3V0IGNvbnRlbnQgaW5zZXRzIHRoYXQgYXJlIHZpc2libGUuIFJhdGhlciB0aGFuIHVzZQor
ICAgICAgICB0aGUgY29udGVudCByZWN0cyBhcy1pcywgZXhwYW5kIHRvIGVuY29tcGFzcyB2aXNp
YmxlIGNvbnRlbnQgaW5zZXRzIGFzIHdlbGwuIFRoaXMgZW5zdXJlcyB0aGF0IHJldmVhbGluZyBh
CisgICAgICAgIHBvc2l0aW9uIHdoaWNoIGlzIGFscmVhZHkgdmlzaWJsZSB3b24ndCBjYXVzZSB1
cyB0byBzY3JvbGwgYXdheSB0aGUgY29udGVudCBpbnNldCBhcmVhIGFuZCBvbmx5IHNob3cgdGhl
CisgICAgICAgIHVub2JzY3VyZWQgcmVjdC4KKworICAgICAgICBUZXN0czogIGVkaXRpbmcvc2Vs
ZWN0aW9uL2lvcy9hdXRvc2Nyb2xsLXdpdGgtdG9wLWNvbnRlbnQtaW5zZXQuaHRtbAorICAgICAg
ICAgICAgICAgIGZhc3Qvc2Nyb2xsaW5nL2lvcy9zY3JvbGwtaW50by12aWV3LXdpdGgtdG9wLWNv
bnRlbnQtaW5zZXQuaHRtbAorCisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojp1bm9ic2N1cmVkQ29udGVudFJlY3RFeHBhbmRlZEJ5Q29u
dGVudEluc2V0cyBjb25zdCk6CisKKyAgICAgICAgSW50cm9kdWNlIGEgaGVscGVyIG1ldGhvZCB0
aGF0IGV4cGFuZHMgdGhlIHVub2JzY3VyZWQgY29udGVudCByZWN0IHRvIGluY2x1ZGUgc3Vycm91
bmRpbmcgY29udGVudCBpbnNldHMuCisKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5oOgorICAg
ICAgICAqIHBhZ2UvUGFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6Y29udGVudEluc2V0
cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpzZXRDb250ZW50SW5zZXRzKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTGF5ZXI6OnNjcm9sbFJlY3RUb1Zpc2libGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGF5ZXI6OmdldFJlY3RUb0V4cG9zZSBjb25zdCk6CisKIDIwMTktMDEtMTYgIEp1c3RpbiBGYW4g
IDxqdXN0aW5fZmFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViR1BVXSBVcGRhdGUgdmVydGV4
LWJ1ZmZlci10cmlhbmdsZS1zdHJpcC5odG1sIHRvIGFjdHVhbGx5IHVzZSB2ZXJ0ZXggYnVmZmVy
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCmluZGV4IGU0OTJmOGFmMjdmOGUxODQ5ODI2NDk1YTMwZjY4MzkzYjg3ZmYyMDAuLjk1
NjFmOWYzMWYwZGVkNmNkODE0ZmI1ZGVkODhlNDA3ODAxMWYzZTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNDggQEAKKzIwMTktMDEtMTcgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5j
b20+CisKKyAgICAgICAgW2lPU10gQ29udGVudCBvZmZzZXQganVtcHMgZXJyYXRpY2FsbHkgd2hl
biBhdXRvc2Nyb2xsaW5nIG5lYXIgc2Nyb2xsIHZpZXcgY29udGVudCBpbnNldCBhcmVhcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkzNDk0CisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS80Njg1OTYyNz4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1v
biBGcmFzZXIgYW5kIFRpbSBIb3J0b24uCisKKyAgICAgICAgQWRkcyBgY29udGVudEluc2V0c2Ag
dG8gYFZpc2libGVDb250ZW50UmVjdFVwZGF0ZUluZm9gLiBUaGlzIGtlZXBzIHRyYWNrIG9mIHRo
ZSB2aXNpYmxlIGNvbnRlbnQgaW5zZXRzCisgICAgICAgIHN1cnJvdW5kaW5nIHRoZSB1bm9ic2N1
cmVkIGNvbnRlbnQgcmVjdC4gU2VlIFdlYkNvcmUgQ2hhbmdlTG9nIGZvciBtb3JlIGRldGFpbHMu
CisKKyAgICAgICAgKiBTaGFyZWQvVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mby5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlZpc2libGVDb250ZW50UmVjdFVwZGF0ZUluZm86OmVuY29kZSBjb25z
dCk6CisgICAgICAgIChXZWJLaXQ6OlZpc2libGVDb250ZW50UmVjdFVwZGF0ZUluZm86OmRlY29k
ZSk6CisgICAgICAgIChXZWJLaXQ6Om9wZXJhdG9yPDwpOgorICAgICAgICAqIFNoYXJlZC9WaXNp
YmxlQ29udGVudFJlY3RVcGRhdGVJbmZvLmg6CisgICAgICAgIChXZWJLaXQ6OlZpc2libGVDb250
ZW50UmVjdFVwZGF0ZUluZm86OlZpc2libGVDb250ZW50UmVjdFVwZGF0ZUluZm8pOgorICAgICAg
ICAoV2ViS2l0OjpWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZvOjpjb250ZW50SW5zZXRzIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6b3BlcmF0b3I9PSk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfY29tcHV0ZWRP
YnNjdXJlZEluc2V0XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfY29tcHV0ZWRDb250ZW50SW5z
ZXRdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9jb21wdXRlZFVub2JzY3VyZWRTYWZlQXJlYUlu
c2V0XSk6CisKKyAgICAgICAgV2UgZG9uJ3QgY2FyZSBhYm91dCBzb3VyY2UgY29tcGF0aWJpbGl0
eSB3aXRoIGlPUyAxMCBhbmQgYmVsb3cgYW55bW9yZSwgc28gd2Ugc2hvdWxkIGNoYW5nZSB0aGVz
ZSA+PSBpT1MgMTEKKyAgICAgICAgdGFyZ2V0IGNoZWNrcyB0byBzaW1wbHkgYFBMQVRGT1JNKElP
UylgLgorCisgICAgICAgICgtW1dLV2ViVmlldyBfdXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0c10p
OgorCisgICAgICAgIENvbXB1dGUgdGhlIHZpc2libGUgY29udGVudCBpbnNldHMgb24gYWxsIHNp
ZGVzIG9mIHRoZSB1bm9ic2N1cmVkIGNvbnRlbnQgcmVjdC4gVGhlc2UgaW5zZXRzIGFyZSBzY2Fs
ZWQgdG8KKyAgICAgICAgY29udGVudCBjb29yZGluYXRlcy4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50
Vmlldy5tbToKKyAgICAgICAgKGZsb2F0Qm94RXh0ZW50KToKKworICAgICAgICBBZGQgYSBoZWxw
ZXIgdG8gY29udmVydCBgVUlFZGdlSW5zZXRzYCB0byBgV2ViQ29yZTo6RmxvYXRCb3hFeHRlbnRg
LCBhbmQgdXNlIGl0IGluIGEgZmV3IHBsYWNlcyBiZWxvdy4KKworICAgICAgICAoLVtXS0NvbnRl
bnRWaWV3IGRpZFVwZGF0ZVZpc2libGVSZWN0OnVub2JzY3VyZWRSZWN0OmNvbnRlbnRJbnNldHM6
dW5vYnNjdXJlZFJlY3RJblNjcm9sbFZpZXdDb29yZGluYXRlczpvYnNjdXJlZEluc2V0czp1bm9i
c2N1cmVkU2FmZUFyZWFJbnNldHM6aW5wdXRWaWV3Qm91bmRzOnNjYWxlOm1pbmltdW1TY2FsZTpp
blN0YWJsZVN0YXRlOmlzQ2hhbmdpbmdPYnNjdXJlZEluc2V0c0ludGVyYWN0aXZlbHk6ZW5jbG9z
ZWRJblNjcm9sbGFibGVBbmNlc3RvclZpZXc6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcg
ZGlkVXBkYXRlVmlzaWJsZVJlY3Q6dW5vYnNjdXJlZFJlY3Q6dW5vYnNjdXJlZFJlY3RJblNjcm9s
bFZpZXdDb29yZGluYXRlczpvYnNjdXJlZEluc2V0czp1bm9ic2N1cmVkU2FmZUFyZWFJbnNldHM6
aW5wdXRWaWV3Qm91bmRzOnNjYWxlOm1pbmltdW1TY2FsZTppblN0YWJsZVN0YXRlOmlzQ2hhbmdp
bmdPYnNjdXJlZEluc2V0c0ludGVyYWN0aXZlbHk6ZW5jbG9zZWRJblNjcm9sbGFibGVBbmNlc3Rv
clZpZXc6XSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQ
YWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVWaXNpYmxlQ29udGVu
dFJlY3RzKToKKworICAgICAgICBVcGRhdGUgdGhlIFBhZ2UncyBjb250ZW50IGluc2V0cy4KKwog
MjAxOS0wMS0xNiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAg
QWRkIGEgbmV3IFNQSSBmb3IgY29udHJvbGxpbmcgZ2V0VXNlck1lZGlhCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lVmlldy5jcHAKaW5kZXggOGRkOTI0ZDc5N2MxNjczYmQwN2NjODQyNjhiYjQ4YmUxNTVkOTQ4
Ny4uMDY2OTgxNTZkYjRiNWMyMTBlZTAwODY4ZDFkYzQ3ZmE4YzA3ZGM0MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWVWaWV3LmNwcApAQCAtMjAxNCw2ICsyMDE0LDE0IEBAIHZvaWQgRnJhbWVWaWV3Ojp2
aWV3cG9ydENvbnRlbnRzQ2hhbmdlZCgpCiAjZW5kaWYKIH0KIAorSW50UmVjdCBGcmFtZVZpZXc6
OnVub2JzY3VyZWRDb250ZW50UmVjdEV4cGFuZGVkQnlDb250ZW50SW5zZXRzKCkgY29uc3QKK3sK
KyAgICBGbG9hdFJlY3QgdW5vYnNjdXJlZENvbnRlbnRSZWN0ID0gdGhpcy0+dW5vYnNjdXJlZENv
bnRlbnRSZWN0KCk7CisgICAgaWYgKGF1dG8qIHBhZ2UgPSBmcmFtZSgpLnBhZ2UoKSkKKyAgICAg
ICAgdW5vYnNjdXJlZENvbnRlbnRSZWN0LmV4cGFuZChwYWdlLT5jb250ZW50SW5zZXRzKCkpOwor
ICAgIHJldHVybiBJbnRSZWN0KHVub2JzY3VyZWRDb250ZW50UmVjdCk7Cit9CisKIGJvb2wgRnJh
bWVWaWV3OjpmaXhlZEVsZW1lbnRzTGF5b3V0UmVsYXRpdmVUb0ZyYW1lKCkgY29uc3QKIHsKICAg
ICByZXR1cm4gZnJhbWUoKS5zZXR0aW5ncygpLmZpeGVkRWxlbWVudHNMYXlvdXRSZWxhdGl2ZVRv
RnJhbWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmggYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCmluZGV4IDQ0Mjk4NDYyNzQyZDUyZGNkN2M2
OThkNGM5Yzg0YjliY2U5OTdhN2YuLjBjNzgxZWU2MmEzNjM3ZjM3ZWU2N2JhYzFlODM2MTc4MWZi
OTU1YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaApAQCAtMzI2LDYgKzMyNiw4IEBAIHB1Ymxp
YzoKICAgICAvLyBTdGF0aWMgZnVuY3Rpb24gY2FuIGJlIGNhbGxlZCBmcm9tIGFub3RoZXIgdGhy
ZWFkLgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBMYXlvdXRSZWN0IHJlY3RGb3JWaWV3cG9y
dENvbnN0cmFpbmVkT2JqZWN0cyhjb25zdCBMYXlvdXRSZWN0JiB2aXNpYmxlQ29udGVudFJlY3Qs
IGNvbnN0IExheW91dFNpemUmIHRvdGFsQ29udGVudHNTaXplLCBmbG9hdCBmcmFtZVNjYWxlRmFj
dG9yLCBib29sIGZpeGVkRWxlbWVudHNMYXlvdXRSZWxhdGl2ZVRvRnJhbWUsIFNjcm9sbEJlaGF2
aW9yRm9yRml4ZWRFbGVtZW50cyk7CiAjZW5kaWYKKworICAgIEludFJlY3QgdW5vYnNjdXJlZENv
bnRlbnRSZWN0RXhwYW5kZWRCeUNvbnRlbnRJbnNldHMoKSBjb25zdDsKICAgICAKICAgICBib29s
IGZpeGVkRWxlbWVudHNMYXlvdXRSZWxhdGl2ZVRvRnJhbWUoKSBjb25zdDsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2Uu
aAppbmRleCA1MjJiZTk4NmMxYmIxNGY5N2EyOGE4YTVkZGFhZDhjMjkzNTJlZTk2Li5iMDY1MzFm
OTMyOWM0MTg2NmY5MWUwYmMxOGVjOTI5NTY5M2EwMTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApAQCAtMzQ3
LDYgKzM0Nyw5IEBAIHB1YmxpYzoKICAgICBjb25zdCBGbG9hdEJveEV4dGVudCYgb2JzY3VyZWRJ
bnNldHMoKSBjb25zdCB7IHJldHVybiBtX29ic2N1cmVkSW5zZXRzOyB9CiAgICAgdm9pZCBzZXRP
YnNjdXJlZEluc2V0cyhjb25zdCBGbG9hdEJveEV4dGVudCYgb2JzY3VyZWRJbnNldHMpIHsgbV9v
YnNjdXJlZEluc2V0cyA9IG9ic2N1cmVkSW5zZXRzOyB9CiAKKyAgICBjb25zdCBGbG9hdEJveEV4
dGVudCYgY29udGVudEluc2V0cygpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudEluc2V0czsgfQor
ICAgIHZvaWQgc2V0Q29udGVudEluc2V0cyhjb25zdCBGbG9hdEJveEV4dGVudCYgaW5zZXRzKSB7
IG1fY29udGVudEluc2V0cyA9IGluc2V0czsgfQorCiAgICAgY29uc3QgRmxvYXRCb3hFeHRlbnQm
IHVub2JzY3VyZWRTYWZlQXJlYUluc2V0cygpIGNvbnN0IHsgcmV0dXJuIG1fdW5vYnNjdXJlZFNh
ZmVBcmVhSW5zZXRzOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRVbm9ic2N1cmVkU2Fm
ZUFyZWFJbnNldHMoY29uc3QgRmxvYXRCb3hFeHRlbnQmKTsKIApAQCAtNzkxLDYgKzc5NCw3IEBA
IHByaXZhdGU6CiAKICAgICBmbG9hdCBtX3RvcENvbnRlbnRJbnNldCB7IDAgfTsKICAgICBGbG9h
dEJveEV4dGVudCBtX29ic2N1cmVkSW5zZXRzOworICAgIEZsb2F0Qm94RXh0ZW50IG1fY29udGVu
dEluc2V0czsKICAgICBGbG9hdEJveEV4dGVudCBtX3Vub2JzY3VyZWRTYWZlQXJlYUluc2V0czsK
ICAgICBGbG9hdEJveEV4dGVudCBtX2Z1bGxzY3JlZW5JbnNldHM7CiAgICAgU2Vjb25kcyBtX2Z1
bGxzY3JlZW5BdXRvSGlkZUR1cmF0aW9uIHsgMF9zIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyLmNwcAppbmRleCA2YzJhNDIzYjY3NzZmYzk5MGYwYTdlMGYzNDA2NjFiY2Nk
MGYyMzdkLi4yZjI4MTdlMGRkZTk3NWRkM2RlOWZmNGI5Mjk5YWRkZmZlM2QxZjkwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTI1NTEsNyArMjU1MSw3IEBA
IHZvaWQgUmVuZGVyTGF5ZXI6OnNjcm9sbFJlY3RUb1Zpc2libGUoY29uc3QgTGF5b3V0UmVjdCYg
YWJzb2x1dGVSZWN0LCBib29sIGluc2lkCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
ICAgICAgICBMYXlvdXRSZWN0IHZpZXdSZWN0ID0gZnJhbWVWaWV3LnZpc2libGVDb250ZW50UmVj
dCgpOwogI2Vsc2UKLSAgICAgICAgICAgIExheW91dFJlY3Qgdmlld1JlY3QgPSBmcmFtZVZpZXcu
dW5vYnNjdXJlZENvbnRlbnRSZWN0KCk7CisgICAgICAgICAgICBMYXlvdXRSZWN0IHZpZXdSZWN0
ID0gZnJhbWVWaWV3LnVub2JzY3VyZWRDb250ZW50UmVjdEV4cGFuZGVkQnlDb250ZW50SW5zZXRz
KCk7CiAjZW5kaWYKICAgICAgICAgICAgIC8vIE1vdmUgdGhlIHRhcmdldCByZWN0IGludG8gInNj
cm9sbFZpZXcgY29udGVudHMiIGNvb3JkaW5hdGVzLgogICAgICAgICAgICAgTGF5b3V0UmVjdCB0
YXJnZXRSZWN0ID0gYWJzb2x1dGVSZWN0OwpAQCAtMjU5MSw3ICsyNTkxLDcgQEAgdm9pZCBSZW5k
ZXJMYXllcjo6dXBkYXRlQ29tcG9zaXRpbmdMYXllcnNBZnRlclNjcm9sbCgpCiAgICAgfQogfQog
Ci1MYXlvdXRSZWN0IFJlbmRlckxheWVyOjpnZXRSZWN0VG9FeHBvc2UoY29uc3QgTGF5b3V0UmVj
dCAmdmlzaWJsZVJlY3QsIGNvbnN0IExheW91dFJlY3QgJmV4cG9zZVJlY3QsIGJvb2wgaW5zaWRl
Rml4ZWQsIGNvbnN0IFNjcm9sbEFsaWdubWVudCYgYWxpZ25YLCBjb25zdCBTY3JvbGxBbGlnbm1l
bnQmIGFsaWduWSkgY29uc3QKK0xheW91dFJlY3QgUmVuZGVyTGF5ZXI6OmdldFJlY3RUb0V4cG9z
ZShjb25zdCBMYXlvdXRSZWN0JiB2aXNpYmxlUmVjdCwgY29uc3QgTGF5b3V0UmVjdCYgZXhwb3Nl
UmVjdCwgYm9vbCBpbnNpZGVGaXhlZCwgY29uc3QgU2Nyb2xsQWxpZ25tZW50JiBhbGlnblgsIGNv
bnN0IFNjcm9sbEFsaWdubWVudCYgYWxpZ25ZKSBjb25zdAogewogICAgIEZyYW1lVmlldyYgZnJh
bWVWaWV3ID0gcmVuZGVyZXIoKS52aWV3KCkuZnJhbWVWaWV3KCk7CiAgICAgaWYgKHJlbmRlcmVy
KCkuaXNSZW5kZXJWaWV3KCkgJiYgaW5zaWRlRml4ZWQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1Zpc2libGVDb250ZW50UmVjdFVwZGF0ZUluZm8uY3BwIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mby5jcHAKaW5kZXggMmVlOGQ5
NmM0ZWEwY2MwZDM0YjIyMTYwZmNkYzEwYTA5ZTI2MDQzZS4uZTlhODgzZDI4YmZlNjY3MWNkMjg1
NjQ0NjE3NDExNGQzNzUwZTE2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvVmlz
aWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mby5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
VmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mby5jcHAKQEAgLTM3LDYgKzM3LDcgQEAgdm9pZCBW
aXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZvOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVy
KSBjb25zdAogewogICAgIGVuY29kZXIgPDwgbV9leHBvc2VkQ29udGVudFJlY3Q7CiAgICAgZW5j
b2RlciA8PCBtX3Vub2JzY3VyZWRDb250ZW50UmVjdDsKKyAgICBlbmNvZGVyIDw8IG1fY29udGVu
dEluc2V0czsKICAgICBlbmNvZGVyIDw8IG1fdW5vYnNjdXJlZENvbnRlbnRSZWN0UmVzcGVjdGlu
Z0lucHV0Vmlld0JvdW5kczsKICAgICBlbmNvZGVyIDw8IG1fdW5vYnNjdXJlZFJlY3RJblNjcm9s
bFZpZXdDb29yZGluYXRlczsKICAgICBlbmNvZGVyIDw8IG1fY3VzdG9tRml4ZWRQb3NpdGlvblJl
Y3Q7CkBAIC02MSw2ICs2Miw4IEBAIGJvb2wgVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mbzo6
ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgVmlzaWJsZUNvbnRlbnRSCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tX3Vub2JzY3VyZWRD
b250ZW50UmVjdCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHJlc3VsdC5tX2NvbnRlbnRJbnNldHMpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQubV91bm9ic2N1cmVkQ29udGVudFJlY3RSZXNwZWN0
aW5nSW5wdXRWaWV3Qm91bmRzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocmVzdWx0Lm1fdW5vYnNjdXJlZFJlY3RJblNjcm9sbFZpZXdDb29yZGluYXRl
cykpCkBAIC0xMTQsNiArMTE3LDcgQEAgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFt
JiB0cywgY29uc3QgVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mbyYgaW5mbykKIAogICAgIHRz
LmR1bXBQcm9wZXJ0eSgiZXhwb3NlZENvbnRlbnRSZWN0IiwgaW5mby5leHBvc2VkQ29udGVudFJl
Y3QoKSk7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJ1bm9ic2N1cmVkQ29udGVudFJlY3QiLCBpbmZv
LnVub2JzY3VyZWRDb250ZW50UmVjdCgpKTsKKyAgICB0cy5kdW1wUHJvcGVydHkoImNvbnRlbnRJ
bnNldHMiLCBpbmZvLmNvbnRlbnRJbnNldHMoKSk7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJ1bm9i
c2N1cmVkQ29udGVudFJlY3RSZXNwZWN0aW5nSW5wdXRWaWV3Qm91bmRzIiwgaW5mby51bm9ic2N1
cmVkQ29udGVudFJlY3RSZXNwZWN0aW5nSW5wdXRWaWV3Qm91bmRzKCkpOwogICAgIHRzLmR1bXBQ
cm9wZXJ0eSgidW5vYnNjdXJlZFJlY3RJblNjcm9sbFZpZXdDb29yZGluYXRlcyIsIGluZm8udW5v
YnNjdXJlZFJlY3RJblNjcm9sbFZpZXdDb29yZGluYXRlcygpKTsKICAgICB0cy5kdW1wUHJvcGVy
dHkoImN1c3RvbUZpeGVkUG9zaXRpb25SZWN0IiwgaW5mby5jdXN0b21GaXhlZFBvc2l0aW9uUmVj
dCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Zpc2libGVDb250ZW50UmVj
dFVwZGF0ZUluZm8uaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Zpc2libGVDb250ZW50UmVjdFVw
ZGF0ZUluZm8uaAppbmRleCA5MWMxODIyYTc0YWNkZWY4OTBmZTU2MTIwNWZkMWJhODdkNTMzZWM0
Li44MTRjYTU0YzIxZDNmNTMzNTY3MmUxY2UyM2I1ZjZjYjhkNWY4ZWFjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9WaXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZvLmgKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mby5oCkBAIC00
NSw5ICs0NSwxMCBAQCBjbGFzcyBWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZvIHsKIHB1Ymxp
YzoKICAgICBWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZvKCkgPSBkZWZhdWx0OwogCi0gICAg
VmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mbyhjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGV4
cG9zZWRDb250ZW50UmVjdCwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiB1bm9ic2N1cmVkQ29u
dGVudFJlY3QsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgdW5vYnNjdXJlZFJlY3RJblNjcm9s
bFZpZXdDb29yZGluYXRlcywgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiB1bm9ic2N1cmVkQ29u
dGVudFJlY3RSZXNwZWN0aW5nSW5wdXRWaWV3Qm91bmRzLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJl
Y3QmIGN1c3RvbUZpeGVkUG9zaXRpb25SZWN0LCBjb25zdCBXZWJDb3JlOjpGbG9hdEJveEV4dGVu
dCYgb2JzY3VyZWRJbnNldHMsIGNvbnN0IFdlYkNvcmU6OkZsb2F0Qm94RXh0ZW50JiB1bm9ic2N1
cmVkU2FmZUFyZWFJbnNldHMsIGRvdWJsZSBzY2FsZSwgYm9vbCBpblN0YWJsZVN0YXRlLCBib29s
IGlzRmlyc3RVcGRhdGVGb3JOZXdWaWV3U2l6ZSwgYm9vbCBpc0NoYW5naW5nT2JzY3VyZWRJbnNl
dHNJbnRlcmFjdGl2ZWx5LCBib29sIGFsbG93U2hyaW5rVG9GaXQsIGJvb2wgZW5jbG9zZWRJblNj
cm9sbGFibGVBbmNlc3RvclZpZXcsIE1vbm90b25pY1RpbWUgdGltZXN0YW1wLCBkb3VibGUgaG9y
aXpvbnRhbFZlbG9jaXR5LCBkb3VibGUgdmVydGljYWxWZWxvY2l0eSwgZG91YmxlIHNjYWxlQ2hh
bmdlUmF0ZSwgdWludDY0X3QgbGFzdExheWVyVHJlZVRyYW5zYWN0aW9uSWQpCisgICAgVmlzaWJs
ZUNvbnRlbnRSZWN0VXBkYXRlSW5mbyhjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGV4cG9zZWRD
b250ZW50UmVjdCwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiB1bm9ic2N1cmVkQ29udGVudFJl
Y3QsIGNvbnN0IFdlYkNvcmU6OkZsb2F0Qm94RXh0ZW50JiBjb250ZW50SW5zZXRzLCBjb25zdCBX
ZWJDb3JlOjpGbG9hdFJlY3QmIHVub2JzY3VyZWRSZWN0SW5TY3JvbGxWaWV3Q29vcmRpbmF0ZXMs
IGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgdW5vYnNjdXJlZENvbnRlbnRSZWN0UmVzcGVjdGlu
Z0lucHV0Vmlld0JvdW5kcywgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBjdXN0b21GaXhlZFBv
c2l0aW9uUmVjdCwgY29uc3QgV2ViQ29yZTo6RmxvYXRCb3hFeHRlbnQmIG9ic2N1cmVkSW5zZXRz
LCBjb25zdCBXZWJDb3JlOjpGbG9hdEJveEV4dGVudCYgdW5vYnNjdXJlZFNhZmVBcmVhSW5zZXRz
LCBkb3VibGUgc2NhbGUsIGJvb2wgaW5TdGFibGVTdGF0ZSwgYm9vbCBpc0ZpcnN0VXBkYXRlRm9y
TmV3Vmlld1NpemUsIGJvb2wgaXNDaGFuZ2luZ09ic2N1cmVkSW5zZXRzSW50ZXJhY3RpdmVseSwg
Ym9vbCBhbGxvd1Nocmlua1RvRml0LCBib29sIGVuY2xvc2VkSW5TY3JvbGxhYmxlQW5jZXN0b3JW
aWV3LCBNb25vdG9uaWNUaW1lIHRpbWVzdGFtcCwgZG91YmxlIGhvcml6b250YWxWZWxvY2l0eSwg
ZG91YmxlIHZlcnRpY2FsVmVsb2NpdHksIGRvdWJsZSBzY2FsZUNoYW5nZVJhdGUsIHVpbnQ2NF90
IGxhc3RMYXllclRyZWVUcmFuc2FjdGlvbklkKQogICAgICAgICA6IG1fZXhwb3NlZENvbnRlbnRS
ZWN0KGV4cG9zZWRDb250ZW50UmVjdCkKICAgICAgICAgLCBtX3Vub2JzY3VyZWRDb250ZW50UmVj
dCh1bm9ic2N1cmVkQ29udGVudFJlY3QpCisgICAgICAgICwgbV9jb250ZW50SW5zZXRzKGNvbnRl
bnRJbnNldHMpCiAgICAgICAgICwgbV91bm9ic2N1cmVkQ29udGVudFJlY3RSZXNwZWN0aW5nSW5w
dXRWaWV3Qm91bmRzKHVub2JzY3VyZWRDb250ZW50UmVjdFJlc3BlY3RpbmdJbnB1dFZpZXdCb3Vu
ZHMpCiAgICAgICAgICwgbV91bm9ic2N1cmVkUmVjdEluU2Nyb2xsVmlld0Nvb3JkaW5hdGVzKHVu
b2JzY3VyZWRSZWN0SW5TY3JvbGxWaWV3Q29vcmRpbmF0ZXMpCiAgICAgICAgICwgbV9jdXN0b21G
aXhlZFBvc2l0aW9uUmVjdChjdXN0b21GaXhlZFBvc2l0aW9uUmVjdCkKQEAgLTY5LDYgKzcwLDcg
QEAgcHVibGljOgogCiAgICAgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBleHBvc2VkQ29udGVu
dFJlY3QoKSBjb25zdCB7IHJldHVybiBtX2V4cG9zZWRDb250ZW50UmVjdDsgfQogICAgIGNvbnN0
IFdlYkNvcmU6OkZsb2F0UmVjdCYgdW5vYnNjdXJlZENvbnRlbnRSZWN0KCkgY29uc3QgeyByZXR1
cm4gbV91bm9ic2N1cmVkQ29udGVudFJlY3Q7IH0KKyAgICBjb25zdCBXZWJDb3JlOjpGbG9hdEJv
eEV4dGVudCYgY29udGVudEluc2V0cygpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudEluc2V0czsg
fQogICAgIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgdW5vYnNjdXJlZFJlY3RJblNjcm9sbFZp
ZXdDb29yZGluYXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fdW5vYnNjdXJlZFJlY3RJblNjcm9sbFZp
ZXdDb29yZGluYXRlczsgfQogICAgIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgdW5vYnNjdXJl
ZENvbnRlbnRSZWN0UmVzcGVjdGluZ0lucHV0Vmlld0JvdW5kcygpIGNvbnN0IHsgcmV0dXJuIG1f
dW5vYnNjdXJlZENvbnRlbnRSZWN0UmVzcGVjdGluZ0lucHV0Vmlld0JvdW5kczsgfQogICAgIGNv
bnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgY3VzdG9tRml4ZWRQb3NpdGlvblJlY3QoKSBjb25zdCB7
IHJldHVybiBtX2N1c3RvbUZpeGVkUG9zaXRpb25SZWN0OyB9CkBAIC05Nyw2ICs5OSw3IEBAIHB1
YmxpYzoKIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6RmxvYXRSZWN0IG1fZXhwb3NlZENvbnRlbnRS
ZWN0OwogICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBtX3Vub2JzY3VyZWRDb250ZW50UmVjdDsKKyAg
ICBXZWJDb3JlOjpGbG9hdEJveEV4dGVudCBtX2NvbnRlbnRJbnNldHM7CiAgICAgV2ViQ29yZTo6
RmxvYXRSZWN0IG1fdW5vYnNjdXJlZENvbnRlbnRSZWN0UmVzcGVjdGluZ0lucHV0Vmlld0JvdW5k
czsKICAgICBXZWJDb3JlOjpGbG9hdFJlY3QgbV91bm9ic2N1cmVkUmVjdEluU2Nyb2xsVmlld0Nv
b3JkaW5hdGVzOwogICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBtX2N1c3RvbUZpeGVkUG9zaXRpb25S
ZWN0OyAvLyBXaGVuIHZpc3VhbCB2aWV3cG9ydHMgYXJlIGVuYWJsZWQsIHRoaXMgaXMgdGhlIGxh
eW91dCB2aWV3cG9ydC4KQEAgLTEyMSw2ICsxMjQsNyBAQCBpbmxpbmUgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IFZpc2libGVDb250ZW50UmVjdFVwZGF0ZUluZm8mIGEsIGNvbnN0IFZpc2libGVDb250
ZQogICAgIHJldHVybiBhLnNjYWxlKCkgPT0gYi5zY2FsZSgpCiAgICAgICAgICYmIGEuZXhwb3Nl
ZENvbnRlbnRSZWN0KCkgPT0gYi5leHBvc2VkQ29udGVudFJlY3QoKQogICAgICAgICAmJiBhLnVu
b2JzY3VyZWRDb250ZW50UmVjdCgpID09IGIudW5vYnNjdXJlZENvbnRlbnRSZWN0KCkKKyAgICAg
ICAgJiYgYS5jb250ZW50SW5zZXRzKCkgPT0gYi5jb250ZW50SW5zZXRzKCkKICAgICAgICAgJiYg
YS51bm9ic2N1cmVkQ29udGVudFJlY3RSZXNwZWN0aW5nSW5wdXRWaWV3Qm91bmRzKCkgPT0gYi51
bm9ic2N1cmVkQ29udGVudFJlY3RSZXNwZWN0aW5nSW5wdXRWaWV3Qm91bmRzKCkKICAgICAgICAg
JiYgYS5jdXN0b21GaXhlZFBvc2l0aW9uUmVjdCgpID09IGIuY3VzdG9tRml4ZWRQb3NpdGlvblJl
Y3QoKQogICAgICAgICAmJiBhLm9ic2N1cmVkSW5zZXRzKCkgPT0gYi5vYnNjdXJlZEluc2V0cygp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRl
eCA0YTQ0MWIwY2RkOGE2ZDdkMTVkOGYxYTFmM2FlMDVmYzhiNjFjYjU2Li5hZTBlMjUwYjQwZjdl
ZWJmNzY5MjljMmRmNDg3ZTU1NGQ0NzRiZmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTE3MzQsNyArMTczNCw3IEBAIC0gKFVJRWRn
ZUluc2V0cylfY29tcHV0ZWRPYnNjdXJlZEluc2V0CiAgICAgaWYgKF9oYXZlU2V0T2JzY3VyZWRJ
bnNldHMpCiAgICAgICAgIHJldHVybiBfb2JzY3VyZWRJbnNldHM7CiAKLSNpZiBfX0lQSE9ORV9P
U19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDAKKyNpZiBQTEFURk9STShJT1MpCiAgICAg
aWYgKHNlbGYuX3NhZmVBcmVhU2hvdWxkQWZmZWN0T2JzY3VyZWRJbnNldHMpCiAgICAgICAgIHJl
dHVybiBVSUVkZ2VJbnNldHNBZGQoVUlFZGdlSW5zZXRzWmVybywgc2VsZi5fc2Nyb2xsVmlld1N5
c3RlbUNvbnRlbnRJbnNldCwgc2VsZi5fZWZmZWN0aXZlT2JzY3VyZWRJbnNldEVkZ2VzQWZmZWN0
ZWRCeVNhZmVBcmVhKTsKICNlbmRpZgpAQCAtMTc0OSw3ICsxNzQ5LDcgQEAgLSAoVUlFZGdlSW5z
ZXRzKV9jb21wdXRlZENvbnRlbnRJbnNldAogCiAgICAgVUlFZGdlSW5zZXRzIGluc2V0cyA9IFtf
c2Nyb2xsVmlldyBjb250ZW50SW5zZXRdOwogCi0jaWYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPj0gMTEwMDAwCisjaWYgUExBVEZPUk0oSU9TKQogICAgIGlmIChzZWxmLl9zYWZl
QXJlYVNob3VsZEFmZmVjdE9ic2N1cmVkSW5zZXRzKQogICAgICAgICBpbnNldHMgPSBVSUVkZ2VJ
bnNldHNBZGQoaW5zZXRzLCBzZWxmLl9zY3JvbGxWaWV3U3lzdGVtQ29udGVudEluc2V0LCBzZWxm
Ll9lZmZlY3RpdmVPYnNjdXJlZEluc2V0RWRnZXNBZmZlY3RlZEJ5U2FmZUFyZWEpOwogI2VuZGlm
CkBAIC0xNzYyLDcgKzE3NjIsNyBAQCAtIChVSUVkZ2VJbnNldHMpX2NvbXB1dGVkVW5vYnNjdXJl
ZFNhZmVBcmVhSW5zZXQKICAgICBpZiAoX2hhdmVTZXRVbm9ic2N1cmVkU2FmZUFyZWFJbnNldHMp
CiAgICAgICAgIHJldHVybiBfdW5vYnNjdXJlZFNhZmVBcmVhSW5zZXRzOwogCi0jaWYgX19JUEhP
TkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwCisjaWYgUExBVEZPUk0oSU9TKQog
ICAgIGlmICghc2VsZi5fc2FmZUFyZWFTaG91bGRBZmZlY3RPYnNjdXJlZEluc2V0cykKICAgICAg
ICAgcmV0dXJuIHNlbGYuc2FmZUFyZWFJbnNldHM7CiAjZW5kaWYKQEAgLTI5NzUsNiArMjk3NSwy
NiBAQCAtICh2b2lkKV91cGRhdGVWaXNpYmxlQ29udGVudFJlY3RzCiAgICAgQ0dSZWN0IHVub2Jz
Y3VyZWRSZWN0SW5Db250ZW50Q29vcmRpbmF0ZXMgPSBfZnJvemVuVW5vYnNjdXJlZENvbnRlbnRS
ZWN0ID8gX2Zyb3plblVub2JzY3VyZWRDb250ZW50UmVjdC52YWx1ZSgpIDogW3NlbGYgY29udmVy
dFJlY3Q6dW5vYnNjdXJlZFJlY3QgdG9WaWV3Ol9jb250ZW50Vmlldy5nZXQoKV07CiAgICAgdW5v
YnNjdXJlZFJlY3RJbkNvbnRlbnRDb29yZGluYXRlcyA9IENHUmVjdEludGVyc2VjdGlvbih1bm9i
c2N1cmVkUmVjdEluQ29udGVudENvb3JkaW5hdGVzLCBbc2VsZiBfY29udGVudEJvdW5kc0V4dGVu
ZGVkRm9yUnViYmVyYmFuZGluZ1dpdGhTY2FsZTpzY2FsZUZhY3Rvcl0pOwogCisgICAgLy8gVGhl
IGZvbGxvd2luZyBsb2dpYyBjb21wdXRlcyB0aGUgZXh0ZW50IHRvIHdoaWNoIHRoZSBib3R0b20s
IHRvcCwgbGVmdCBhbmQgcmlnaHQgY29udGVudCBpbnNldHMgYXJlIHZpc2libGUuCisgICAgYXV0
byBzY3JvbGxWaWV3SW5zZXRzID0gW19zY3JvbGxWaWV3IGNvbnRlbnRJbnNldF07CisgICAgYXV0
byBzY3JvbGxWaWV3Qm91bmRzID0gW19zY3JvbGxWaWV3IGJvdW5kc107CisgICAgYXV0byBzY3Jv
bGxWaWV3Q29udGVudFNpemUgPSBbX3Njcm9sbFZpZXcgY29udGVudFNpemVdOworICAgIGF1dG8g
c2Nyb2xsVmlld09yaWdpbkluY2x1ZGluZ0luc2V0ID0gVUlFZGdlSW5zZXRzSW5zZXRSZWN0KHNj
cm9sbFZpZXdCb3VuZHMsIGNvbXB1dGVkQ29udGVudEluc2V0VW5hZGp1c3RlZEZvcktleWJvYXJk
KS5vcmlnaW47CisgICAgYXV0byBtYXhpbXVtVmVydGljYWxTY3JvbGxFeHRlbnRXaXRob3V0UmV2
ZWFsaW5nQm90dG9tQ29udGVudEluc2V0ID0gc2Nyb2xsVmlld0NvbnRlbnRTaXplLmhlaWdodCAt
IENHUmVjdEdldEhlaWdodChzY3JvbGxWaWV3Qm91bmRzKTsKKyAgICBhdXRvIG1heGltdW1Ib3Jp
em9udGFsU2Nyb2xsRXh0ZW50V2l0aG91dFJldmVhbGluZ1JpZ2h0Q29udGVudEluc2V0ID0gc2Ny
b2xsVmlld0NvbnRlbnRTaXplLndpZHRoIC0gQ0dSZWN0R2V0V2lkdGgoc2Nyb2xsVmlld0JvdW5k
cyk7CisgICAgYXV0byBjb250ZW50SW5zZXRzID0gVUlFZGdlSW5zZXRzWmVybzsKKyAgICBpZiAo
c2Nyb2xsVmlld0luc2V0cy5sZWZ0ID4gMCAmJiBzY3JvbGxWaWV3T3JpZ2luSW5jbHVkaW5nSW5z
ZXQueCA8IDApCisgICAgICAgIGNvbnRlbnRJbnNldHMubGVmdCA9IHN0ZDo6bWluKC1zY3JvbGxW
aWV3T3JpZ2luSW5jbHVkaW5nSW5zZXQueCwgc2Nyb2xsVmlld0luc2V0cy5sZWZ0KSAvIHNjYWxl
RmFjdG9yOworCisgICAgaWYgKHNjcm9sbFZpZXdJbnNldHMudG9wID4gMCAmJiBzY3JvbGxWaWV3
T3JpZ2luSW5jbHVkaW5nSW5zZXQueSA8IDApCisgICAgICAgIGNvbnRlbnRJbnNldHMudG9wID0g
c3RkOjptaW4oLXNjcm9sbFZpZXdPcmlnaW5JbmNsdWRpbmdJbnNldC55LCBzY3JvbGxWaWV3SW5z
ZXRzLnRvcCkgLyBzY2FsZUZhY3RvcjsKKworICAgIGlmIChzY3JvbGxWaWV3SW5zZXRzLnJpZ2h0
ID4gMCAmJiBzY3JvbGxWaWV3T3JpZ2luSW5jbHVkaW5nSW5zZXQueCA+IG1heGltdW1Ib3Jpem9u
dGFsU2Nyb2xsRXh0ZW50V2l0aG91dFJldmVhbGluZ1JpZ2h0Q29udGVudEluc2V0KQorICAgICAg
ICBjb250ZW50SW5zZXRzLnJpZ2h0ID0gc3RkOjptaW4oc2Nyb2xsVmlld09yaWdpbkluY2x1ZGlu
Z0luc2V0LnggLSBtYXhpbXVtSG9yaXpvbnRhbFNjcm9sbEV4dGVudFdpdGhvdXRSZXZlYWxpbmdS
aWdodENvbnRlbnRJbnNldCwgc2Nyb2xsVmlld0luc2V0cy5yaWdodCkgLyBzY2FsZUZhY3RvcjsK
KworICAgIGlmIChzY3JvbGxWaWV3SW5zZXRzLmJvdHRvbSA+IDAgJiYgc2Nyb2xsVmlld09yaWdp
bkluY2x1ZGluZ0luc2V0LnkgPiBtYXhpbXVtVmVydGljYWxTY3JvbGxFeHRlbnRXaXRob3V0UmV2
ZWFsaW5nQm90dG9tQ29udGVudEluc2V0KQorICAgICAgICBjb250ZW50SW5zZXRzLmJvdHRvbSA9
IHN0ZDo6bWluKHNjcm9sbFZpZXdPcmlnaW5JbmNsdWRpbmdJbnNldC55IC0gbWF4aW11bVZlcnRp
Y2FsU2Nyb2xsRXh0ZW50V2l0aG91dFJldmVhbGluZ0JvdHRvbUNvbnRlbnRJbnNldCwgc2Nyb2xs
Vmlld0luc2V0cy5ib3R0b20pIC8gc2NhbGVGYWN0b3I7CisKICNpZiBFTkFCTEUoQ1NTX1NDUk9M
TF9TTkFQKSAmJiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQogICAgIGlmIChpblN0YWJsZVN0YXRl
KSB7CiAgICAgICAgIFdlYktpdDo6UmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eSogY29v
cmRpbmF0b3IgPSBfcGFnZS0+c2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eSgpOwpAQCAtMjk5NCw2
ICszMDE0LDcgQEAgLSAodm9pZClfdXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0cwogCiAgICAgW19j
b250ZW50VmlldyBkaWRVcGRhdGVWaXNpYmxlUmVjdDp2aXNpYmxlUmVjdEluQ29udGVudENvb3Jk
aW5hdGVzCiAgICAgICAgIHVub2JzY3VyZWRSZWN0OnVub2JzY3VyZWRSZWN0SW5Db250ZW50Q29v
cmRpbmF0ZXMKKyAgICAgICAgY29udGVudEluc2V0czpjb250ZW50SW5zZXRzCiAgICAgICAgIHVu
b2JzY3VyZWRSZWN0SW5TY3JvbGxWaWV3Q29vcmRpbmF0ZXM6dW5vYnNjdXJlZFJlY3QKICAgICAg
ICAgb2JzY3VyZWRJbnNldHM6X29ic2N1cmVkSW5zZXRzCiAgICAgICAgIHVub2JzY3VyZWRTYWZl
QXJlYUluc2V0czpbc2VsZiBfY29tcHV0ZWRVbm9ic2N1cmVkU2FmZUFyZWFJbnNldF0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5oCmluZGV4IGEwNjA3ZTNkMWFi
Yzc1Mjg5ODE3OTkxYTRiMmU2MWVmODI5MmMxNjkuLjUyMmFjYTE5ZDAyYjA4OTY4OGNjODIzMjMz
YzllMDFlNjgzZWJjNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
S0NvbnRlbnRWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVu
dFZpZXcuaApAQCAtNzEsNiArNzEsNyBAQCBjbGFzcyBXZWJQcm9jZXNzUG9vbDsKIAogLSAodm9p
ZClkaWRVcGRhdGVWaXNpYmxlUmVjdDooQ0dSZWN0KXZpc2libGVSZWN0CiAgICAgdW5vYnNjdXJl
ZFJlY3Q6KENHUmVjdCl1bm9ic2N1cmVkUmVjdAorICAgIGNvbnRlbnRJbnNldHM6KFVJRWRnZUlu
c2V0cyljb250ZW50SW5zZXRzCiAgICAgdW5vYnNjdXJlZFJlY3RJblNjcm9sbFZpZXdDb29yZGlu
YXRlczooQ0dSZWN0KXVub2JzY3VyZWRSZWN0SW5TY3JvbGxWaWV3Q29vcmRpbmF0ZXMKICAgICBv
YnNjdXJlZEluc2V0czooVUlFZGdlSW5zZXRzKW9ic2N1cmVkSW5zZXRzCiAgICAgdW5vYnNjdXJl
ZFNhZmVBcmVhSW5zZXRzOihVSUVkZ2VJbnNldHMpdW5vYnNjdXJlZFNhZmVBcmVhSW5zZXRzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tCmluZGV4IGNlZDg1
ZThjOTkxOGE3YjU2NzE2N2Q5N2FlODhkYjYwZmFmYWYzYTUuLjMwNGMyM2Y0MDFiZmY2NDhlODMy
ODZkMjNmM2RiNWU1ZTQyMjU1MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XS0NvbnRlbnRWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
S0NvbnRlbnRWaWV3Lm1tCkBAIC0zNjUsNiArMzY1LDExIEBAIC0gKHZvaWQpX2RpZEV4aXRTdGFi
bGVTdGF0ZQogICAgIFtfdGV4dFNlbGVjdGlvbkFzc2lzdGFudCBkZWFjdGl2YXRlU2VsZWN0aW9u
XTsKIH0KIAorc3RhdGljIFdlYkNvcmU6OkZsb2F0Qm94RXh0ZW50IGZsb2F0Qm94RXh0ZW50KFVJ
RWRnZUluc2V0cyBpbnNldHMpCit7CisgICAgcmV0dXJuIFdlYkNvcmU6OkZsb2F0Qm94RXh0ZW50
KGluc2V0cy50b3AsIGluc2V0cy5yaWdodCwgaW5zZXRzLmJvdHRvbSwgaW5zZXRzLmxlZnQpOwor
fQorCiAtIChDR1JlY3QpX2NvbXB1dGVVbm9ic2N1cmVkQ29udGVudFJlY3RSZXNwZWN0aW5nSW5w
dXRWaWV3Qm91bmRzOihDR1JlY3QpdW5vYnNjdXJlZENvbnRlbnRSZWN0IGlucHV0Vmlld0JvdW5k
czooQ0dSZWN0KWlucHV0Vmlld0JvdW5kcwogewogICAgIC8vIFRoZSBpbnB1dCB2aWV3IGJvdW5k
cyBhcmUgaW4gd2luZG93IGNvb3JkaW5hdGVzLCBidXQgdGhlIHVub2JzY3VyZWQgcmVjdCBpcyBp
biBjb250ZW50IGNvb3JkaW5hdGVzLiBBY2NvdW50IGZvciB0aGlzIGJ5IGNvbnZlcnRpbmcgaW5w
dXQgdmlldyBib3VuZHMgdG8gY29udGVudCBjb29yZGluYXRlcy4KQEAgLTM3Niw2ICszODEsNyBA
QCAtIChDR1JlY3QpX2NvbXB1dGVVbm9ic2N1cmVkQ29udGVudFJlY3RSZXNwZWN0aW5nSW5wdXRW
aWV3Qm91bmRzOihDR1JlY3QpdW5vYnNjdQogCiAtICh2b2lkKWRpZFVwZGF0ZVZpc2libGVSZWN0
OihDR1JlY3QpdmlzaWJsZUNvbnRlbnRSZWN0CiAgICAgdW5vYnNjdXJlZFJlY3Q6KENHUmVjdCl1
bm9ic2N1cmVkQ29udGVudFJlY3QKKyAgICBjb250ZW50SW5zZXRzOihVSUVkZ2VJbnNldHMpY29u
dGVudEluc2V0cwogICAgIHVub2JzY3VyZWRSZWN0SW5TY3JvbGxWaWV3Q29vcmRpbmF0ZXM6KENH
UmVjdCl1bm9ic2N1cmVkUmVjdEluU2Nyb2xsVmlld0Nvb3JkaW5hdGVzCiAgICAgb2JzY3VyZWRJ
bnNldHM6KFVJRWRnZUluc2V0cylvYnNjdXJlZEluc2V0cwogICAgIHVub2JzY3VyZWRTYWZlQXJl
YUluc2V0czooVUlFZGdlSW5zZXRzKXVub2JzY3VyZWRTYWZlQXJlYUluc2V0cwpAQCAtNDA0LDEx
ICs0MTAsMTIgQEAgLSAodm9pZClkaWRVcGRhdGVWaXNpYmxlUmVjdDooQ0dSZWN0KXZpc2libGVD
b250ZW50UmVjdAogICAgIFdlYktpdDo6VmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mbyB2aXNp
YmxlQ29udGVudFJlY3RVcGRhdGVJbmZvKAogICAgICAgICB2aXNpYmxlQ29udGVudFJlY3QsCiAg
ICAgICAgIHVub2JzY3VyZWRDb250ZW50UmVjdCwKKyAgICAgICAgZmxvYXRCb3hFeHRlbnQoY29u
dGVudEluc2V0cyksCiAgICAgICAgIHVub2JzY3VyZWRSZWN0SW5TY3JvbGxWaWV3Q29vcmRpbmF0
ZXMsCiAgICAgICAgIHVub2JzY3VyZWRDb250ZW50UmVjdFJlc3BlY3RpbmdJbnB1dFZpZXdCb3Vu
ZHMsCiAgICAgICAgIGZpeGVkUG9zaXRpb25SZWN0Rm9yTGF5b3V0LAotICAgICAgICBXZWJDb3Jl
OjpGbG9hdEJveEV4dGVudChvYnNjdXJlZEluc2V0cy50b3AsIG9ic2N1cmVkSW5zZXRzLnJpZ2h0
LCBvYnNjdXJlZEluc2V0cy5ib3R0b20sIG9ic2N1cmVkSW5zZXRzLmxlZnQpLAotICAgICAgICBX
ZWJDb3JlOjpGbG9hdEJveEV4dGVudCh1bm9ic2N1cmVkU2FmZUFyZWFJbnNldHMudG9wLCB1bm9i
c2N1cmVkU2FmZUFyZWFJbnNldHMucmlnaHQsIHVub2JzY3VyZWRTYWZlQXJlYUluc2V0cy5ib3R0
b20sIHVub2JzY3VyZWRTYWZlQXJlYUluc2V0cy5sZWZ0KSwKKyAgICAgICAgZmxvYXRCb3hFeHRl
bnQob2JzY3VyZWRJbnNldHMpLAorICAgICAgICBmbG9hdEJveEV4dGVudCh1bm9ic2N1cmVkU2Fm
ZUFyZWFJbnNldHMpLAogICAgICAgICB6b29tU2NhbGUsCiAgICAgICAgIGlzU3RhYmxlU3RhdGUs
CiAgICAgICAgIF9zaXplQ2hhbmdlZFNpbmNlTGFzdFZpc2libGVDb250ZW50UmVjdFVwZGF0ZSwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdl
SU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1Mu
bW0KaW5kZXggMDY2OTZjMDY1Y2M3NzQ4YzFjYmRlMDA1NDVlMzczNjRlYTY5NGU1My4uOWIwOWEw
YWZjYmIyYWE4NjcwMGY3ZGEyYjU0ZWE5Nzg3NWNiMGNlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTMwMTYsNiArMzAx
Niw3IEBAIHZvaWQgV2ViUGFnZTo6dXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0cyhjb25zdCBWaXNp
YmxlQ29udGVudFJlY3RVcGRhdGVJbmZvJiB2aXNpCiAgICAgICAgIHZpZXdwb3J0Q29uZmlndXJh
dGlvbkNoYW5nZWQoKTsKIAogICAgIGZyYW1lVmlldy5zZXRVbm9ic2N1cmVkQ29udGVudFNpemUo
dmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mby51bm9ic2N1cmVkQ29udGVudFJlY3QoKS5zaXpl
KCkpOworICAgIG1fcGFnZS0+c2V0Q29udGVudEluc2V0cyh2aXNpYmxlQ29udGVudFJlY3RVcGRh
dGVJbmZvLmNvbnRlbnRJbnNldHMoKSk7CiAgICAgbV9wYWdlLT5zZXRPYnNjdXJlZEluc2V0cyh2
aXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZvLm9ic2N1cmVkSW5zZXRzKCkpOwogICAgIG1fcGFn
ZS0+c2V0VW5vYnNjdXJlZFNhZmVBcmVhSW5zZXRzKHZpc2libGVDb250ZW50UmVjdFVwZGF0ZUlu
Zm8udW5vYnNjdXJlZFNhZmVBcmVhSW5zZXRzKCkpOwogICAgIG1fcGFnZS0+c2V0RW5jbG9zZWRJ
blNjcm9sbGFibGVBbmNlc3RvclZpZXcodmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mby5lbmNs
b3NlZEluU2Nyb2xsYWJsZUFuY2VzdG9yVmlldygpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5n
ZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAwNzdkMzkzMjk0YjUzYmVlNzhhM2M0OTRlODY1
NWQ3NmQ5ODI5MGQ4Li4xOGVkYjVmOThlYjg2Y2Q3NmY4ZTQ1MTg1MjAzYjAyYWJlYzNmODNhIDEw
MDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMzUgQEAKKzIwMTktMDEtMTcgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5j
b20+CisKKyAgICAgICAgW2lPU10gQ29udGVudCBvZmZzZXQganVtcHMgZXJyYXRpY2FsbHkgd2hl
biBhdXRvc2Nyb2xsaW5nIG5lYXIgc2Nyb2xsIHZpZXcgY29udGVudCBpbnNldCBhcmVhcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkzNDk0CisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS80Njg1OTYyNz4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1v
biBGcmFzZXIgYW5kIFRpbSBIb3J0b24uCisKKyAgICAgICAgQWRkIGEgbmV3IHRlc3Qgb3B0aW9u
IHRvIGFkZCBhIHRvcCBjb250ZW50IGluc2V0IHRvIHRoZSB0ZXN0IHJ1bm5lcidzIFdLV2ViVmll
dydzIHNjcm9sbCB2aWV3LCBhbmQgYXV0b21hdGljYWxseQorICAgICAgICBzY3JvbGwgdG8gcmV2
ZWFsIHRoaXMgdG9wIGNvbnRlbnQgaW5zZXQgYXJlYSB3aGVuIGJlZ2lubmluZyB0aGUgdGVzdCAo
aS5lLiwgc2Nyb2xsIHRvICgwLCAtdG9wQ29udGVudEluc2V0KSkuCisKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tOgorICAgICAgICAoV1RSOjpV
SVNjcmlwdENvbnRyb2xsZXI6OmNvbnRlbnRPZmZzZXRYIGNvbnN0KToKKyAgICAgICAgKFdUUjo6
VUlTY3JpcHRDb250cm9sbGVyOjpjb250ZW50T2Zmc2V0WSBjb25zdCk6CisgICAgICAgICogVGVz
dFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvQmluZGluZ3MvVUlTY3JpcHRDb250cm9sbGVy
LmlkbDoKKyAgICAgICAgKiBUZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlw
dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXI6OmNvbnRl
bnRPZmZzZXRYIGNvbnN0KToKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVyOjpjb250
ZW50T2Zmc2V0WSBjb25zdCk6CisgICAgICAgICogVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENv
bnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmg6CisKKyAgICAgICAgQWxzbyBhZGQgbmV3IFVJU2Ny
aXB0Q29udHJvbGxlciBtZXRob2RzIHRvIGFzayBmb3IgdGhlIGNvbnRlbnQgb2Zmc2V0IG9mIHRo
ZSBwbGF0Zm9ybSBzY3JvbGwgdmlldy4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVz
dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjp1cGRhdGVUZXN0T3B0aW9uc0Zyb21UZXN0
SGVhZGVyKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RPcHRpb25zLmg6CisgICAg
ICAgIChXVFI6OlRlc3RPcHRpb25zOjpoYXNTYW1lSW5pdGlhbGl6YXRpb25PcHRpb25zIGNvbnN0
KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2lvcy9UZXN0Q29udHJvbGxlcklPUy5tbToK
KyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtUmVzZXRTdGF0ZVRvQ29uc2lz
dGVudFZhbHVlcyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9pb3MvVUlTY3JpcHRDb250
cm9sbGVySU9TLm1tOgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXI6OmNvbnRlbnRP
ZmZzZXRYIGNvbnN0KToKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVyOjpjb250ZW50
T2Zmc2V0WSBjb25zdCk6CisKIDIwMTktMDEtMTYgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBw
bGUuY29tPgogCiAgICAgICAgIEFkZCBhIG5ldyBTUEkgZm9yIGNvbnRyb2xsaW5nIGdldFVzZXJN
ZWRpYQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL1VJU2NyaXB0Q29udHJv
bGxlcklPUy5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJ
T1MubW0KaW5kZXggMzk4MDM0YTRjMjBlMzlhY2FlZjI2OWNlOTQ1ODk0ODQ4MjRjMmI5Ni4uOGEx
MTI1ZjRlZjkxOTg0NTI2NjllMDQxOWM1ODlhODkwMmU4YTY3MCAxMDA2NDQKLS0tIGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbQorKysgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tCkBAIC0yMTEsNiArMjEx
LDE2IEBAIHN0YXRpYyBDR1BvaW50IGNvbnRlbnRPZmZzZXRCb3VuZGVkSW5WYWxpZFJhbmdlKFVJ
U2Nyb2xsVmlldyAqc2Nyb2xsVmlldywgQ0dQb2luCiAgICAgcmV0dXJuIGNvbnRlbnRPZmZzZXQ7
CiB9CiAKK2RvdWJsZSBVSVNjcmlwdENvbnRyb2xsZXI6OmNvbnRlbnRPZmZzZXRYKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gW2dXZWJTY3JvbGxWaWV3IGNvbnRlbnRPZmZzZXRdLng7Cit9CisKK2Rv
dWJsZSBVSVNjcmlwdENvbnRyb2xsZXI6OmNvbnRlbnRPZmZzZXRZKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gW2dXZWJTY3JvbGxWaWV3IGNvbnRlbnRPZmZzZXRdLnk7Cit9CisKIHZvaWQgVUlTY3Jp
cHRDb250cm9sbGVyOjpzY3JvbGxUb09mZnNldChsb25nIHgsIGxvbmcgeSkKIHsKICAgICBbZ1dl
YlNjcm9sbFZpZXcgc2V0Q29udGVudE9mZnNldDpjb250ZW50T2Zmc2V0Qm91bmRlZEluVmFsaWRS
YW5nZShnV2ViU2Nyb2xsVmlldywgQ0dQb2ludE1ha2UoeCwgeSkpIGFuaW1hdGVkOllFU107CmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9CaW5kaW5n
cy9VSVNjcmlwdENvbnRyb2xsZXIuaWRsIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlw
dENvbnRleHQvQmluZGluZ3MvVUlTY3JpcHRDb250cm9sbGVyLmlkbAppbmRleCA3ZDIwNGU4NTcy
NmE4NmQzZmE4ZWMyYzM4Yjk3NzhjMTNiNzA2NjIzLi41NDI0YmE4YThjZmJlNGFkODE0YzBkYWJl
NjExNzMzN2VlZGY5NjdjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2Ny
aXB0Q29udGV4dC9CaW5kaW5ncy9VSVNjcmlwdENvbnRyb2xsZXIuaWRsCisrKyBiL1Rvb2xzL1Rl
c3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L0JpbmRpbmdzL1VJU2NyaXB0Q29udHJvbGxl
ci5pZGwKQEAgLTIzMSw2ICsyMzEsOSBAQCBpbnRlcmZhY2UgVUlTY3JpcHRDb250cm9sbGVyIHsK
IAogICAgIHZvaWQgcmVzaWduRmlyc3RSZXNwb25kZXIoKTsKIAorICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBkb3VibGUgY29udGVudE9mZnNldFg7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIGRvdWJs
ZSBjb250ZW50T2Zmc2V0WTsKKwogICAgIHZvaWQgc2Nyb2xsVG9PZmZzZXQobG9uZyB4LCBsb25n
IHkpOyAvLyBJbml0aWF0ZSBhbiBhbmltYXRlZCBzY3JvbGwgaW4gdGhlIFVJIHByb2Nlc3MuCiAg
ICAgYXR0cmlidXRlIG9iamVjdCBkaWRFbmRTY3JvbGxpbmdDYWxsYmFjazsKIApkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250cm9s
bGVyLmNwcCBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0
Q29udHJvbGxlci5jcHAKaW5kZXggYzk1ODdjNDJlOWYwM2VmYTg5OTRkNTRkMzkwMTllNzY3OGVj
NmI3OC4uYTViYWEwNmNkNTMzMjAwNTk5ZjNhZjU2ODkzZTM3NWY2ZTAyMzNjMSAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250cm9s
bGVyLmNwcAorKysgYi9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNj
cmlwdENvbnRyb2xsZXIuY3BwCkBAIC0zMzYsNiArMzM2LDE2IEBAIEpTUmV0YWluUHRyPEpTU3Ry
aW5nUmVmPiBVSVNjcmlwdENvbnRyb2xsZXI6OmZvcm1JbnB1dExhYmVsKCkgY29uc3QKICAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KIAorZG91YmxlIFVJU2NyaXB0Q29udHJvbGxlcjo6Y29udGVudE9m
ZnNldFgoKSBjb25zdAoreworICAgIHJldHVybiAwOworfQorCitkb3VibGUgVUlTY3JpcHRDb250
cm9sbGVyOjpjb250ZW50T2Zmc2V0WSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIDA7Cit9CisKIHZv
aWQgVUlTY3JpcHRDb250cm9sbGVyOjpzY3JvbGxUb09mZnNldChsb25nIHgsIGxvbmcgeSkKIHsK
IH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJ
U2NyaXB0Q29udHJvbGxlci5oIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRl
eHQvVUlTY3JpcHRDb250cm9sbGVyLmgKaW5kZXggYTY0ODJjOWU3OTQwYTllNTc0NWZiMDI2NDA2
NDA4ZDBiNGUzNDU4ZS4uZDNmYjFjYmIwOTI1MGE4Mjc5ZGZjYjI4YmJmOGM5MDI3ZjcwMjFjYiAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3Jp
cHRDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRl
eHQvVUlTY3JpcHRDb250cm9sbGVyLmgKQEAgLTExMyw2ICsxMTMsOSBAQCBwdWJsaWM6CiAgICAg
SlNPYmplY3RSZWYgY29udGVudHNPZlVzZXJJbnRlcmZhY2VJdGVtKEpTU3RyaW5nUmVmKSBjb25z
dDsKICAgICB2b2lkIG92ZXJyaWRlUHJlZmVyZW5jZShKU1N0cmluZ1JlZiBwcmVmZXJlbmNlLCBK
U1N0cmluZ1JlZiB2YWx1ZSk7CiAgICAgCisgICAgZG91YmxlIGNvbnRlbnRPZmZzZXRYKCkgY29u
c3Q7CisgICAgZG91YmxlIGNvbnRlbnRPZmZzZXRZKCkgY29uc3Q7CisKICAgICB2b2lkIHNjcm9s
bFRvT2Zmc2V0KGxvbmcgeCwgbG9uZyB5KTsKIAogICAgIHZvaWQgaW1tZWRpYXRlU2Nyb2xsVG9P
ZmZzZXQobG9uZyB4LCBsb25nIHkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9s
bGVyLmNwcAppbmRleCA3Yzg4ZTAwMjdmM2Q3NTBiZTYxNTY3MjMyYTg4MWFkY2RmYjRkZGE4Li45
MjYxNzdlZjJjNzcyOWI0OGEzYmMwMzdhNDFhMWI2ZjJjNDM4MmQzIDEwMDY0NAotLS0gYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcApAQCAtMTI2Niw2ICsxMjY2LDggQEAgc3RhdGlj
IHZvaWQgdXBkYXRlVGVzdE9wdGlvbnNGcm9tVGVzdEhlYWRlcihUZXN0T3B0aW9ucyYgdGVzdE9w
dGlvbnMsIGNvbnN0IHN0ZDoKICAgICAgICAgICAgIHRlc3RPcHRpb25zLmVkaXRhYmxlID0gcGFy
c2VCb29sZWFuVGVzdEhlYWRlclZhbHVlKHZhbHVlKTsKICAgICAgICAgZWxzZSBpZiAoa2V5ID09
ICJlbmFibGVVbmRvTWFuYWdlckFQSSIpCiAgICAgICAgICAgICB0ZXN0T3B0aW9ucy5lbmFibGVV
bmRvTWFuYWdlckFQSSA9IHBhcnNlQm9vbGVhblRlc3RIZWFkZXJWYWx1ZSh2YWx1ZSk7CisgICAg
ICAgIGVsc2UgaWYgKGtleSA9PSAiY29udGVudEluc2V0LnRvcCIpCisgICAgICAgICAgICB0ZXN0
T3B0aW9ucy5jb250ZW50SW5zZXRUb3AgPSBzdGQ6OnN0b2QodmFsdWUpOwogICAgICAgICBwYWly
U3RhcnQgPSBwYWlyRW5kICsgMTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RPcHRpb25zLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RPcHRp
b25zLmgKaW5kZXggMTBjZDRlNGMzNDU3MWIwYjFiOGEwMmNiNmRkNDc5YzY3ZmVjNzM0MC4uNjE0
Y2U3YjU4MTg1OTdlYTlhNDgxM2FkYzdiMmUxZmM0NmE0NjA3OSAxMDA2NDQKLS0tIGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9UZXN0T3B0aW9ucy5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvVGVzdE9wdGlvbnMuaApAQCAtNjksNiArNjksOCBAQCBzdHJ1Y3QgVGVzdE9wdGlvbnMgewog
ICAgIGJvb2wgZWRpdGFibGUgeyBmYWxzZSB9OwogICAgIGJvb2wgZW5hYmxlVW5kb01hbmFnZXJB
UEkgeyBmYWxzZSB9OwogCisgICAgZG91YmxlIGNvbnRlbnRJbnNldFRvcCB7IDAgfTsKKwogICAg
IGZsb2F0IGRldmljZVNjYWxlRmFjdG9yIHsgMSB9OwogICAgIFZlY3RvcjxTdHJpbmc+IG92ZXJy
aWRlTGFuZ3VhZ2VzOwogICAgIHN0ZDo6c3RyaW5nIGFwcGxpY2F0aW9uTWFuaWZlc3Q7CkBAIC0x
MTMsNyArMTE1LDggQEAgc3RydWN0IFRlc3RPcHRpb25zIHsKICAgICAgICAgICAgIHx8IHNob3Vs
ZElnbm9yZU1ldGFWaWV3cG9ydCAhPSBvcHRpb25zLnNob3VsZElnbm9yZU1ldGFWaWV3cG9ydAog
ICAgICAgICAgICAgfHwgZW5hYmxlRWRpdGFibGVJbWFnZXMgIT0gb3B0aW9ucy5lbmFibGVFZGl0
YWJsZUltYWdlcwogICAgICAgICAgICAgfHwgZWRpdGFibGUgIT0gb3B0aW9ucy5lZGl0YWJsZQot
ICAgICAgICAgICAgfHwgZW5hYmxlVW5kb01hbmFnZXJBUEkgIT0gb3B0aW9ucy5lbmFibGVVbmRv
TWFuYWdlckFQSSkKKyAgICAgICAgICAgIHx8IGVuYWJsZVVuZG9NYW5hZ2VyQVBJICE9IG9wdGlv
bnMuZW5hYmxlVW5kb01hbmFnZXJBUEkKKyAgICAgICAgICAgIHx8IGNvbnRlbnRJbnNldFRvcCAh
PSBvcHRpb25zLmNvbnRlbnRJbnNldFRvcCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgICAgICBpZiAoZXhwZXJpbWVudGFsRmVhdHVyZXMgIT0gb3B0aW9ucy5leHBlcmltZW50YWxG
ZWF0dXJlcykKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1Rlc3RDb250
cm9sbGVySU9TLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvVGVzdENvbnRyb2xsZXJJ
T1MubW0KaW5kZXggNGExMDgwY2FkNDlkZjEwZGMxYjQ0NDY3MDVjMDc2YzFlMGFmYmI0ZC4uODU1
ZDJkNWJjNzAwMzQwNDc0YzQyNzFjYzdiN2FhYTk1MTAyMDA0MyAxMDA2NDQKLS0tIGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9pb3MvVGVzdENvbnRyb2xsZXJJT1MubW0KKysrIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9pb3MvVGVzdENvbnRyb2xsZXJJT1MubW0KQEAgLTEzMiw3ICsxMzIsOCBA
QCB2b2lkIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybVJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1
ZXMoY29uc3QgVGVzdE9wdGlvbnMmIG9wdAogICAgICAgICBVSVNjcm9sbFZpZXcgKnNjcm9sbFZp
ZXcgPSB3ZWJWaWV3LnNjcm9sbFZpZXc7CiAgICAgICAgIFtzY3JvbGxWaWV3IF9yZW1vdmVBbGxB
bmltYXRpb25zOllFU107CiAgICAgICAgIFtzY3JvbGxWaWV3IHNldFpvb21TY2FsZToxIGFuaW1h
dGVkOk5PXTsKLSAgICAgICAgW3Njcm9sbFZpZXcgc2V0Q29udGVudE9mZnNldDpDR1BvaW50WmVy
b107CisgICAgICAgIHNjcm9sbFZpZXcuY29udGVudEluc2V0ID0gVUlFZGdlSW5zZXRzTWFrZShv
cHRpb25zLmNvbnRlbnRJbnNldFRvcCwgMCwgMCwgMCk7CisgICAgICAgIHNjcm9sbFZpZXcuY29u
dGVudE9mZnNldCA9IENHUG9pbnRNYWtlKDAsIC1vcHRpb25zLmNvbnRlbnRJbnNldFRvcCk7CiAK
ICAgICAgICAgaWYgKHdlYlZpZXcuaW50ZXJhY3RpbmdXaXRoRm9ybUNvbnRyb2wpCiAgICAgICAg
ICAgICBzaG91bGRSZXN0b3JlRmlyc3RSZXNwb25kZXIgPSBbd2ViVmlldyByZXNpZ25GaXJzdFJl
c3BvbmRlcl07CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9VSVNjcmlw
dENvbnRyb2xsZXJJT1MubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9VSVNjcmlwdENv
bnRyb2xsZXJJT1MubW0KaW5kZXggOWUyMDQ3N2IxZTg2ODI2N2Y0OWM0YTAwOTJiMGFkNThjM2Q0
OTE4Ni4uNGFhOTQyOTA1Nzg3NDhjZjgxYmM1MzU1MDc2ZGZhMjdhOGE4MWM1ZCAxMDA2NDQKLS0t
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tCisr
KyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbQpA
QCAtNDg3LDYgKzQ4NywxOCBAQCBzdGF0aWMgQ0dQb2ludCBjb250ZW50T2Zmc2V0Qm91bmRlZElu
VmFsaWRSYW5nZShVSVNjcm9sbFZpZXcgKnNjcm9sbFZpZXcsIENHUG9pbgogICAgIHJldHVybiBj
b250ZW50T2Zmc2V0OwogfQogCitkb3VibGUgVUlTY3JpcHRDb250cm9sbGVyOjpjb250ZW50T2Zm
c2V0WCgpIGNvbnN0Cit7CisgICAgVGVzdFJ1bm5lcldLV2ViVmlldyAqd2ViVmlldyA9IFRlc3RD
b250cm9sbGVyOjpzaW5nbGV0b24oKS5tYWluV2ViVmlldygpLT5wbGF0Zm9ybVZpZXcoKTsKKyAg
ICByZXR1cm4gd2ViVmlldy5zY3JvbGxWaWV3LmNvbnRlbnRPZmZzZXQueDsKK30KKworZG91Ymxl
IFVJU2NyaXB0Q29udHJvbGxlcjo6Y29udGVudE9mZnNldFkoKSBjb25zdAoreworICAgIFRlc3RS
dW5uZXJXS1dlYlZpZXcgKndlYlZpZXcgPSBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkubWFp
bldlYlZpZXcoKS0+cGxhdGZvcm1WaWV3KCk7CisgICAgcmV0dXJuIHdlYlZpZXcuc2Nyb2xsVmll
dy5jb250ZW50T2Zmc2V0Lnk7Cit9CisKIHZvaWQgVUlTY3JpcHRDb250cm9sbGVyOjpzY3JvbGxU
b09mZnNldChsb25nIHgsIGxvbmcgeSkKIHsKICAgICBUZXN0UnVubmVyV0tXZWJWaWV3ICp3ZWJW
aWV3ID0gVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1haW5XZWJWaWV3KCktPnBsYXRmb3Jt
VmlldygpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCmluZGV4IGU4NTYyNTRmNmI1MDA1NTA1ZjhhMWRkM2MzYzk2MWU4NzkwMWQ3YzEu
LjczODI3MmMzZmM5ZTNlOTUwNDllNmM5YTM3MDM0MGQ2ODhhNTc4ZWMgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyNyBAQAorMjAxOS0wMS0xNyAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNv
bT4KKworICAgICAgICBbaU9TXSBDb250ZW50IG9mZnNldCBqdW1wcyBlcnJhdGljYWxseSB3aGVu
IGF1dG9zY3JvbGxpbmcgbmVhciBzY3JvbGwgdmlldyBjb250ZW50IGluc2V0IGFyZWFzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTM0OTQKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzQ2ODU5NjI3PgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9u
IEZyYXNlciBhbmQgVGltIEhvcnRvbi4KKworICAgICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL2lv
cy9hdXRvc2Nyb2xsLXdpdGgtdG9wLWNvbnRlbnQtaW5zZXQtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBlZGl0aW5nL3NlbGVjdGlvbi9pb3MvYXV0b3Njcm9sbC13aXRoLXRvcC1jb250
ZW50LWluc2V0Lmh0bWw6IEFkZGVkLgorCisgICAgICAgIEFkZCBhIG5ldyB0ZXN0IHRvIHZlcmlm
eSB0aGF0IG1vdmluZyB0aGUgc2VsZWN0aW9uIGJ5IGF1dG9zY3JvbGxpbmcgbmVhciB0aGUgdG9w
IGNvbnRlbnQgaW5zZXQgYXJlYSBkb2VzIG5vdAorICAgICAgICBjYXVzZSB0aGUgc2Nyb2xsIHZp
ZXcncyBjb250ZW50IG9mZnNldCB0byBqdW1wLgorCisgICAgICAgICogZmFzdC9zY3JvbGxpbmcv
aW9zL3Njcm9sbC1pbnRvLXZpZXctd2l0aC10b3AtY29udGVudC1pbnNldC1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2Nyb2xsaW5nL2lvcy9zY3JvbGwtaW50by12aWV3LXdp
dGgtdG9wLWNvbnRlbnQtaW5zZXQuaHRtbDogQWRkZWQuCisKKyAgICAgICAgQWRkIGEgbmV3IHRl
c3QgdG8gdmVyaWZ5IHRoYXQgcHJvZ3JhbW1hdGljYWxseSBzY3JvbGxpbmcgYW4gZWxlbWVudCB0
aGF0J3MgYWxyZWFkeSB2aXNpYmxlIGludG8gdmlldyBkb2VzIG5vdAorICAgICAgICBzY3JvbGwg
YXdheSB0aGUgc2Nyb2xsIHZpZXcncyBjb250ZW50IGluc2V0LgorCisgICAgICAgICogcmVzb3Vy
Y2VzL3VpLWhlbHBlci5qczoKKyAgICAgICAgKHdpbmRvdy5VSUhlbHBlci5jb250ZW50T2Zmc2V0
KToKKyAgICAgICAgKHdpbmRvdy5VSUhlbHBlcik6CisKIDIwMTktMDEtMTYgIEFsaWNpYSBCb3lh
IEdhcmPDrWEgIDxhYm95YUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgR1RLIGFu
ZCBXUEUgdGVzdCBnYXJkZW5pbmcuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3Nl
bGVjdGlvbi9pb3MvYXV0b3Njcm9sbC13aXRoLXRvcC1jb250ZW50LWluc2V0LWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2lvcy9hdXRvc2Nyb2xsLXdpdGgtdG9w
LWNvbnRlbnQtaW5zZXQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNlZTVjZmY4NWE4MjYxNWNk
MzUzMjFlMTBmZDBiZWViMjRjNzRkYjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9l
ZGl0aW5nL3NlbGVjdGlvbi9pb3MvYXV0b3Njcm9sbC13aXRoLXRvcC1jb250ZW50LWluc2V0LWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDEzIEBACitTZWxlY3QgbWUgYW5kIGRyYWcgdXAuCisKK1Zl
cmlmaWVzIHRoYXQgdHJpZ2dlcmluZyBhdXRvc2Nyb2xsIG5lYXIgdGhlIHRvcCBvZiBhIHdlYiB2
aWV3IHdpdGggYSB0b3AgY29udGVudCBpbnNldCBkb2VzIG5vdCBjYXVzZSB0aGUgc2Nyb2xsIHZp
ZXcncyBjb250ZW50IG9mZnNldCB0byBqdW1wIHRvIDAuIFRoaXMgdGVzdCByZXF1aXJlcyBXZWJL
aXRUZXN0UnVubmVyLiBUbyB2ZXJpZnkgbWFudWFsbHksIGxvYWQgdGhpcyBwYWdlIGluIGEgd2Vi
IHZpZXcgdGhhdCBoYXMgYSBzY3JvbGwgdmlldyB0b3AgY29udGVudCBpbnNldCwgYW5kIHNjcm9s
bCBzdWNoIHRoYXQgdGhlIGZ1bGwgdG9wIGNvbnRlbnQgaW5zZXQgYXJlYSBpcyB2aXNpYmxlLiBD
aGVjayB0aGF0IHN0YXJ0aW5nIGEgdGV4dCBzZWxlY3Rpb24gbG91cGUgZ2VzdHVyZSBuZWFyIHRo
ZSB0b3Agb2YgdGhlIHRvcCBvZiB0aGUgZG9jdW1lbnQgYW5kIGRyYWdnaW5nIHVwd2FyZHMgZG9l
cyBub3QgdGhyYXNoIHRoZSBzY3JvbGwgdmlldydzIGNvbnRlbnQgb2Zmc2V0LgorCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBmaW5hbENvbnRlbnRPZmZzZXQueCBpcyAwCitQ
QVNTIHZlcnRpY2FsTW92ZW1lbnREdXJpbmdEcmFnIDwgMSBpcyB0cnVlCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vaW9zL2F1dG9zY3JvbGwtd2l0aC10b3AtY29udGVudC1p
bnNldC5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vaW9zL2F1dG9zY3JvbGwt
d2l0aC10b3AtY29udGVudC1pbnNldC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY0MzM3ZWYwZjQxZDAzMjk0
ZjlhODQzYTZlMmVjY2IyNWU2ZWZjODUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9l
ZGl0aW5nL3NlbGVjdGlvbi9pb3MvYXV0b3Njcm9sbC13aXRoLXRvcC1jb250ZW50LWluc2V0Lmh0
bWwKQEAgLTAsMCArMSw1MSBAQAorPCFET0NUWVBFIGh0bWw+IDwhLS0gd2Via2l0LXRlc3QtcnVu
bmVyIFsgdXNlRmxleGlibGVWaWV3cG9ydD10cnVlLCBjb250ZW50SW5zZXQudG9wPTEwMCBdIC0t
PgorPGh0bWw+Cis8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdp
ZHRoLCBpbml0aWFsLXNjYWxlPTEiPgorPGhlYWQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L3Jlc291cmNlcy9iYXNpYy1nZXN0dXJlcy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgPHN0eWxl
PgorICAgIGJvZHkgeworICAgICAgICBtYXJnaW46IDA7CisgICAgICAgIGJveC1zaXppbmc6IGJv
cmRlci1ib3g7CisgICAgICAgIGJvcmRlcjogcmVkIDFweCBzb2xpZDsKKyAgICB9CisKKyAgICAj
dGV4dCB7CisgICAgICAgIGZvbnQtc2l6ZTogMzBweDsKKyAgICB9CisKKyAgICAjY29uc29sZSB7
CisgICAgICAgIG92ZXJmbG93OiBzY3JvbGw7CisgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAg
fQorICAgIDwvc3R5bGU+CisgICAgPHNjcmlwdD4KKyAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsK
KworICAgIGFzeW5jIGZ1bmN0aW9uIHJ1bigpCisgICAgeworICAgICAgICBhd2FpdCBVSUhlbHBl
ci5hY3RpdmF0ZUFuZFdhaXRGb3JJbnB1dFNlc3Npb25BdCgxMTAsIDQwKTsKKyAgICAgICAgb3Jp
Z2luYWxDb250ZW50T2Zmc2V0ID0gYXdhaXQgVUlIZWxwZXIuY29udGVudE9mZnNldCgpOworICAg
ICAgICBhd2FpdCBsb25nUHJlc3NBbmRIb2xkQXRQb2ludCgxMTAsIDQwKTsKKyAgICAgICAgYXdh
aXQgdG91Y2hBbmREcmFnRnJvbVBvaW50VG9Qb2ludCgxMTAsIDQwLCAyMTAsIDQwKTsKKyAgICAg
ICAgYXdhaXQgbGlmdFVwQXRQb2ludCgyMTAsIDQwKTsKKyAgICAgICAgZmluYWxDb250ZW50T2Zm
c2V0ID0gYXdhaXQgVUlIZWxwZXIuY29udGVudE9mZnNldCgpOworICAgICAgICB2ZXJ0aWNhbE1v
dmVtZW50RHVyaW5nRHJhZyA9IE1hdGguYWJzKGZpbmFsQ29udGVudE9mZnNldC55IC0gb3JpZ2lu
YWxDb250ZW50T2Zmc2V0LnkpOworCisgICAgICAgIHNob3VsZEJlKCJmaW5hbENvbnRlbnRPZmZz
ZXQueCIsICIwIik7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgidmVydGljYWxNb3ZlbWVudER1cmlu
Z0RyYWcgPCAxIik7CisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH0KKyAgICA8L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5IGNvbnRlbnRlZGl0YWJsZSBvbmxvYWQ9InJ1bigpIj4KKyAgICA8
cCBpZD0idGV4dCI+PHN0cm9uZz5TZWxlY3QgbWUgYW5kIGRyYWcgdXAuPC9zdHJvbmc+PC9wPgor
ICAgIDxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorICAgIDxwIGlkPSJjb25zb2xlIj48L3A+Cis8
L2JvZHk+Cis8c2NyaXB0PgorICAgIGRlc2NyaXB0aW9uKCJWZXJpZmllcyB0aGF0IHRyaWdnZXJp
bmcgYXV0b3Njcm9sbCBuZWFyIHRoZSB0b3Agb2YgYSB3ZWIgdmlldyB3aXRoIGEgdG9wIGNvbnRl
bnQgaW5zZXQgZG9lcyBub3QgY2F1c2UgdGhlIHNjcm9sbCB2aWV3J3MgY29udGVudCBvZmZzZXQg
dG8ganVtcCB0byAwLiBUaGlzIHRlc3QgcmVxdWlyZXMgV2ViS2l0VGVzdFJ1bm5lci4gVG8gdmVy
aWZ5IG1hbnVhbGx5LCBsb2FkIHRoaXMgcGFnZSBpbiBhIHdlYiB2aWV3IHRoYXQgaGFzIGEgc2Ny
b2xsIHZpZXcgdG9wIGNvbnRlbnQgaW5zZXQsIGFuZCBzY3JvbGwgc3VjaCB0aGF0IHRoZSBmdWxs
IHRvcCBjb250ZW50IGluc2V0IGFyZWEgaXMgdmlzaWJsZS4gQ2hlY2sgdGhhdCBzdGFydGluZyBh
IHRleHQgc2VsZWN0aW9uIGxvdXBlIGdlc3R1cmUgbmVhciB0aGUgdG9wIG9mIHRoZSB0b3Agb2Yg
dGhlIGRvY3VtZW50IGFuZCBkcmFnZ2luZyB1cHdhcmRzIGRvZXMgbm90IHRocmFzaCB0aGUgc2Ny
b2xsIHZpZXcncyBjb250ZW50IG9mZnNldC4iKTsKKzwvc2NyaXB0PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvaW9zL3Njcm9sbC1pbnRvLXZpZXctd2l0
aC10b3AtY29udGVudC1pbnNldC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9s
bGluZy9pb3Mvc2Nyb2xsLWludG8tdmlldy13aXRoLXRvcC1jb250ZW50LWluc2V0LWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5mN2Y0NzljODU4M2NjNjc2M2FkZTZmN2EyOGM0NTFiOTBiMjQ1YzQ2
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvaW9zL3Njcm9s
bC1pbnRvLXZpZXctd2l0aC10b3AtY29udGVudC1pbnNldC1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxMyBAQAorVmVyaWZpZXMgdGhhdCBFbGVtZW50LnNjcm9sbEludG9WaWV3KCkgZG9lcyBub3Qg
c2Nyb2xsIGF3YXkgdGhlIHRvcCBjb250ZW50IGluc2V0IGlmIHRoZSBlbGVtZW50IGlzIGFscmVh
ZHkgdmlzaWJsZS4gVGhpcyB0ZXN0IHJlcXVpcmVzIFdlYktpdFRlc3RSdW5uZXIuCisKK09uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIG9yaWdpbmFsQ29udGVudE9mZnNldC54IGlz
IDAKK1BBU1Mgb3JpZ2luYWxDb250ZW50T2Zmc2V0LnkgaXMgLTEwMAorUEFTUyBmaW5hbENvbnRl
bnRPZmZzZXQueCBpcyAwCitQQVNTIGZpbmFsQ29udGVudE9mZnNldC55IGlzIC0xMDAKK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9pb3Mvc2Nyb2xsLWludG8tdmlldy13aXRoLXRv
cC1jb250ZW50LWluc2V0Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9pb3Mvc2Ny
b2xsLWludG8tdmlldy13aXRoLXRvcC1jb250ZW50LWluc2V0Lmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmQ3
N2VmNmY1MTMwYjNiYmE3NWFiMDhmNmI3YWIxNGU4NmNkOWUzOQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL2lvcy9zY3JvbGwtaW50by12aWV3LXdpdGgtdG9w
LWNvbnRlbnQtaW5zZXQuaHRtbApAQCAtMCwwICsxLDQ3IEBACis8IURPQ1RZUEUgaHRtbD4gPCEt
LSB3ZWJraXQtdGVzdC1ydW5uZXIgWyB1c2VGbGV4aWJsZVZpZXdwb3J0PXRydWUsIGNvbnRlbnRJ
bnNldC50b3A9MTAwIF0gLS0+Cis8aHRtbD4KKzxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50
PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MSI+Cis8aGVhZD4KKyAgICA8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+CisgICAg
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAg
ICA8c3R5bGU+CisgICAgYm9keSB7CisgICAgICAgIG1hcmdpbjogMDsKKyAgICAgICAgYm9yZGVy
OiByZWQgMXB4IHNvbGlkOworICAgIH0KKworICAgICN0YXJnZXQgeworICAgICAgICBwb3NpdGlv
bjogYWJzb2x1dGU7CisgICAgICAgIHdpZHRoOiA0cHg7CisgICAgICAgIGhlaWdodDogNHB4Owor
ICAgICAgICB0b3A6IDBweDsKKyAgICAgICAgbGVmdDogMHB4OworICAgICAgICBiYWNrZ3JvdW5k
LWNvbG9yOiBzaWx2ZXI7CisgICAgfQorICAgIDwvc3R5bGU+CisgICAgPHNjcmlwdD4KKyAgICBq
c1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgIGFzeW5jIGZ1bmN0aW9uIHJ1bigpCisgICAgewor
ICAgICAgICBvcmlnaW5hbENvbnRlbnRPZmZzZXQgPSBhd2FpdCBVSUhlbHBlci5jb250ZW50T2Zm
c2V0KCk7CisgICAgICAgIHRhcmdldC5zY3JvbGxJbnRvVmlldyh7IGJsb2NrOiAibmVhcmVzdCIs
IGlubGluZTogIm5lYXJlc3QiIH0pOworICAgICAgICBmaW5hbENvbnRlbnRPZmZzZXQgPSBhd2Fp
dCBVSUhlbHBlci5jb250ZW50T2Zmc2V0KCk7CisKKyAgICAgICAgc2hvdWxkQmUoIm9yaWdpbmFs
Q29udGVudE9mZnNldC54IiwgIjAiKTsKKyAgICAgICAgc2hvdWxkQmUoIm9yaWdpbmFsQ29udGVu
dE9mZnNldC55IiwgIi0xMDAiKTsKKyAgICAgICAgc2hvdWxkQmUoImZpbmFsQ29udGVudE9mZnNl
dC54IiwgIjAiKTsKKyAgICAgICAgc2hvdWxkQmUoImZpbmFsQ29udGVudE9mZnNldC55IiwgIi0x
MDAiKTsKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfQorICAgIDwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHkgY29udGVudGVkaXRhYmxlIG9ubG9hZD0icnVuKCkiPgorICAgIDxkaXYgaWQ9
InRhcmdldCI+PC9kaXY+CisgICAgPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+CisgICAgPHAgaWQ9
ImNvbnNvbGUiPjwvcD4KKzwvYm9keT4KKzxzY3JpcHQ+CisgICAgZGVzY3JpcHRpb24oIlZlcmlm
aWVzIHRoYXQgRWxlbWVudC5zY3JvbGxJbnRvVmlldygpIGRvZXMgbm90IHNjcm9sbCBhd2F5IHRo
ZSB0b3AgY29udGVudCBpbnNldCBpZiB0aGUgZWxlbWVudCBpcyBhbHJlYWR5IHZpc2libGUuIFRo
aXMgdGVzdCByZXF1aXJlcyBXZWJLaXRUZXN0UnVubmVyLiIpOworPC9zY3JpcHQ+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9yZXNvdXJjZXMvdWktaGVscGVyLmpzIGIvTGF5b3V0
VGVzdHMvcmVzb3VyY2VzL3VpLWhlbHBlci5qcwppbmRleCAyZjU2OWFhY2M1NWM0NWM3MDI1Y2Uy
MTZhNzAzNDU3MjkyMjRiYzZlLi5lNjVmMDMxZDY0MGQzMjFmOGFhMDk4YzNjZjNhM2UwZTQ2ZTQ3
MzA5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9yZXNvdXJjZXMvdWktaGVscGVyLmpzCisrKyBi
L0xheW91dFRlc3RzL3Jlc291cmNlcy91aS1oZWxwZXIuanMKQEAgLTUwNCw0ICs1MDQsMTYgQEAg
d2luZG93LlVJSGVscGVyID0gY2xhc3MgVUlIZWxwZXIgewogICAgICAgICBjb25zdCBlc2NhcGVk
SWRlbnRpZmllciA9IGlkZW50aWZpZXIucmVwbGFjZSgvYC9nLCAiXFxgIik7CiAgICAgICAgIHJl
dHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHRlc3RSdW5uZXIucnVuVUlTY3JpcHQoYHVpQ29u
dHJvbGxlci5zZXRLZXlib2FyZElucHV0TW9kZUlkZW50aWZpZXIoXGAke2VzY2FwZWRJZGVudGlm
aWVyfVxgKWAsIHJlc29sdmUpKTsKICAgICB9CisKKyAgICBzdGF0aWMgY29udGVudE9mZnNldCgp
CisgICAgeworICAgICAgICBpZiAoIXRoaXMuaXNJT1MoKSkKKyAgICAgICAgICAgIHJldHVybiBQ
cm9taXNlLnJlc29sdmUoKTsKKworICAgICAgICBjb25zdCB1aVNjcmlwdCA9ICJKU09OLnN0cmlu
Z2lmeShbdWlDb250cm9sbGVyLmNvbnRlbnRPZmZzZXRYLCB1aUNvbnRyb2xsZXIuY29udGVudE9m
ZnNldFldKSI7CisgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHRlc3RSdW5u
ZXIucnVuVUlTY3JpcHQodWlTY3JpcHQsIHJlc3VsdCA9PiB7CisgICAgICAgICAgICBjb25zdCBb
b2Zmc2V0WCwgb2Zmc2V0WV0gPSBKU09OLnBhcnNlKHJlc3VsdCkKKyAgICAgICAgICAgIHJlc29s
dmUoeyB4OiBvZmZzZXRYLCB5OiBvZmZzZXRZIH0pOworICAgICAgICB9KSk7CisgICAgfQogfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>