<?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>143198</bug_id>
          
          <creation_ts>2015-03-29 13:11:38 -0700</creation_ts>
          <short_desc>Convert arguments to ScrollingCoordinator functions to references</short_desc>
          <delta_ts>2015-03-29 21:16:02 -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>New Bugs</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>bdakin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>jamesr</cc>
    
    <cc>japhet</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>luiz</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1081031</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-03-29 13:11:38 -0700</bug_when>
    <thetext>Convert arguments to ScrollingCoordinator functions to references</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1081034</commentid>
    <comment_count>1</comment_count>
      <attachid>249694</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-03-29 13:14:25 -0700</bug_when>
    <thetext>Created attachment 249694
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1081036</commentid>
    <comment_count>2</comment_count>
      <attachid>249695</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-03-29 13:29:58 -0700</bug_when>
    <thetext>Created attachment 249695
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1081039</commentid>
    <comment_count>3</comment_count>
      <attachid>249696</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-03-29 13:35:08 -0700</bug_when>
    <thetext>Created attachment 249696
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1081043</commentid>
    <comment_count>4</comment_count>
      <attachid>249697</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-03-29 13:41:40 -0700</bug_when>
    <thetext>Created attachment 249697
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1081047</commentid>
    <comment_count>5</comment_count>
      <attachid>249699</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-03-29 14:08:02 -0700</bug_when>
    <thetext>Created attachment 249699
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1081056</commentid>
    <comment_count>6</comment_count>
      <attachid>249699</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-03-29 16:32:01 -0700</bug_when>
    <thetext>Comment on attachment 249699
Patch

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

Not sure that there is a useful distinction between const FrameView&amp; and FrameView&amp;. While I understand that some functions might not change anything, generally FrameView is a pointer into a massive object graph, not a single object that can be mutated or left alone directly. If I get a FrameView’s document and the operate on it and it turns around and operates on the FrameView is that a const FrameView&amp; thing or not?

&gt; Source/WebCore/page/scrolling/ScrollingCoordinator.h:193
&gt; -        ForcedOnMainThread = 1 &lt;&lt; 0,
&gt; -        HasSlowRepaintObjects = 1 &lt;&lt; 1,
&gt; -        HasViewportConstrainedObjectsWithoutSupportingFixedLayers = 1 &lt;&lt; 2,
&gt; -        HasNonLayerViewportConstrainedObjects = 1 &lt;&lt; 3,
&gt; -        IsImageDocument = 1 &lt;&lt; 4
&gt; +        ForcedOnMainThread                                          = 1 &lt;&lt; 0,
&gt; +        HasSlowRepaintObjects                                       = 1 &lt;&lt; 1,
&gt; +        HasViewportConstrainedObjectsWithoutSupportingFixedLayers   = 1 &lt;&lt; 2,
&gt; +        HasNonLayerViewportConstrainedObjects                       = 1 &lt;&lt; 3,
&gt; +        IsImageDocument                                             = 1 &lt;&lt; 4

We should discuss whether to do this or not, and put it in the coding style guidelines one way or another. If I had seen code like the “after” here, I would have changed it to look like the “before”. My rationale is that I don’t like having to re-line things up when renaming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1081096</commentid>
    <comment_count>7</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-03-29 21:16:02 -0700</bug_when>
    <thetext>https://trac.webkit.org/r182132

(In reply to comment #6)
&gt; Comment on attachment 249699 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=249699&amp;action=review
&gt; 
&gt; Not sure that there is a useful distinction between const FrameView&amp; and
&gt; FrameView&amp;. While I understand that some functions might not change
&gt; anything, generally FrameView is a pointer into a massive object graph, not
&gt; a single object that can be mutated or left alone directly. If I get a
&gt; FrameView’s document and the operate on it and it turns around and operates
&gt; on the FrameView is that a const FrameView&amp; thing or not?

True. I added the const so that a later change which operates on a const ScrollableArea will work.

&gt; &gt; Source/WebCore/page/scrolling/ScrollingCoordinator.h:193
&gt; &gt; -        ForcedOnMainThread = 1 &lt;&lt; 0,
&gt; &gt; -        HasSlowRepaintObjects = 1 &lt;&lt; 1,
&gt; &gt; -        HasViewportConstrainedObjectsWithoutSupportingFixedLayers = 1 &lt;&lt; 2,
&gt; &gt; -        HasNonLayerViewportConstrainedObjects = 1 &lt;&lt; 3,
&gt; &gt; -        IsImageDocument = 1 &lt;&lt; 4
&gt; &gt; +        ForcedOnMainThread                                          = 1 &lt;&lt; 0,
&gt; &gt; +        HasSlowRepaintObjects                                       = 1 &lt;&lt; 1,
&gt; &gt; +        HasViewportConstrainedObjectsWithoutSupportingFixedLayers   = 1 &lt;&lt; 2,
&gt; &gt; +        HasNonLayerViewportConstrainedObjects                       = 1 &lt;&lt; 3,
&gt; &gt; +        IsImageDocument                                             = 1 &lt;&lt; 4
&gt; 
&gt; We should discuss whether to do this or not, and put it in the coding style
&gt; guidelines one way or another. If I had seen code like the “after” here, I
&gt; would have changed it to look like the “before”. My rationale is that I
&gt; don’t like having to re-line things up when renaming.

I&apos;ll start a thread about this on webkit-dev.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249694</attachid>
            <date>2015-03-29 13:14:25 -0700</date>
            <delta_ts>2015-03-29 13:29:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143198-20150329131343.patch</filename>
            <type>text/plain</type>
            <size>68898</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgyMTE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTRhYTRmOGE3Zjk4OTFh
YTY1NDRkZTYzMDNjODgzNzRmYWVkMjJjNS4uMjE3YmY3YmVkYjVhNTdmYjU1YjhjYTU0YjJhYTU5
MGJjOTRmYTE2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk2IEBACisyMDE1LTAzLTI5ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIENvbnZlcnQgYXJn
dW1lbnRzIHRvIFNjcm9sbGluZ0Nvb3JkaW5hdG9yIGZ1bmN0aW9ucyB0byByZWZlcmVuY2VzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDMxOTgKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb252ZXJ0IGFs
bCB0aGUgRnJhbWVWaWV3KiBhbmQgU2Nyb2xsYWJsZUFyZWEqIGFyZ3VtZW50cyB0byBTY3JvbGxp
bmdDb29yZGluYXRvciBmdW5jdGlvbnMgdG8KKyAgICAgICAgcmVmZXJlbmNlcywgYW5kIHVzZSBy
ZWZlcmVuY2VzIGluIGEgZmV3IG90aGVyIHBsYWNlcy4KKworICAgICAgICAqIGRvbS9Eb2N1bWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp3aGVlbEV2ZW50SGFuZGxlckNvdW50Q2hhbmdlZCk6
CisgICAgICAgICogcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbk92ZXJsYXk6OnVwZGF0ZVJlZ2lvbik6CisgICAgICAg
ICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpwcmVw
YXJlRm9yRGV0YWNoKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6YWRkU2xvd1JlcGFp
bnRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpyZW1vdmVTbG93UmVwYWlu
dE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmFkZFZpZXdwb3J0Q29uc3Ry
YWluZWRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpyZW1vdmVWaWV3cG9y
dENvbnN0cmFpbmVkT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6cmVxdWVz
dFNjcm9sbFBvc2l0aW9uVXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6cGVy
Zm9ybVBvc3RMYXlvdXRUYXNrcyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnNjcm9s
bGFibGVBcmVhU2V0Q2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OndoZWVs
RXZlbnQpOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdl
Ojpub25GYXN0U2Nyb2xsYWJsZVJlY3RzKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAg
ICAgKiBwYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZyYW1lVmlld0xheW91dFVw
ZGF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6ZnJh
bWVWaWV3Tm9uRmFzdFNjcm9sbGFibGVSZWdpb25DaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6
OkFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZyYW1lVmlld1Jvb3RMYXllckRpZENoYW5nZSk6
CisgICAgICAgIChXZWJDb3JlOjpBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpyZXF1ZXN0U2Ny
b2xsUG9zaXRpb25VcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNTY3JvbGxpbmdDb29y
ZGluYXRvcjo6dXBkYXRlU2Nyb2xsUG9zaXRpb25BZnRlckFzeW5jU2Nyb2xsKToKKyAgICAgICAg
KFdlYkNvcmU6OkFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNjcm9sbGFibGVBcmVhU2Nyb2xs
YmFyTGF5ZXJEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNTY3JvbGxpbmdDb29y
ZGluYXRvcjo6ZW5zdXJlUm9vdFN0YXRlTm9kZUZvckZyYW1lVmlldyk6CisgICAgICAgIChXZWJD
b3JlOjpBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjp1cGRhdGVNYWluRnJhbWVTY3JvbGxMYXll
clBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6
OnJlY29tcHV0ZVdoZWVsRXZlbnRIYW5kbGVyQ291bnRGb3JGcmFtZVZpZXcpOgorICAgICAgICAq
IHBhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaDoKKyAgICAgICAgKiBw
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxpbmdDb29yZGluYXRvcjo6cGFnZURlc3Ryb3llZCk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxpbmdDb29yZGluYXRvcjo6Y29vcmRpbmF0ZXNTY3JvbGxpbmdGb3JGcmFtZVZpZXcp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmNvbXB1dGVOb25GYXN0
U2Nyb2xsYWJsZVJlZ2lvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRv
cjo6ZnJhbWVWaWV3V2hlZWxFdmVudEhhbmRsZXJDb3VudENoYW5nZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZyYW1lVmlld0hhc1Nsb3dSZXBhaW50T2JqZWN0
c0RpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6ZnJh
bWVWaWV3Rml4ZWRPYmplY3RzRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGlu
Z0Nvb3JkaW5hdG9yOjpzY3JvbGxMYXllckZvclNjcm9sbGFibGVBcmVhKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzY3JvbGxMYXllckZvckZyYW1lVmlldyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6aGVhZGVyTGF5ZXJGb3JGcmFt
ZVZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZvb3Rlckxh
eWVyRm9yRnJhbWVWaWV3KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9y
Ojpjb3VudGVyU2Nyb2xsaW5nTGF5ZXJGb3JGcmFtZVZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsaW5nQ29vcmRpbmF0b3I6Omluc2V0Q2xpcExheWVyRm9yRnJhbWVWaWV3KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpjb250ZW50U2hhZG93TGF5ZXJGb3JG
cmFtZVZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnJvb3RD
b250ZW50TGF5ZXJGb3JGcmFtZVZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29v
cmRpbmF0b3I6OmZyYW1lVmlld1Jvb3RMYXllckRpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxpbmdDb29yZGluYXRvcjo6aGFzVmlzaWJsZVNsb3dSZXBhaW50Vmlld3BvcnRDb25z
dHJhaW5lZE9iamVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6
OnN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxp
bmdDb29yZGluYXRvcjo6dXBkYXRlU3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzZXRGb3JjZVN5bmNocm9ub3VzU2Ny
b2xsTGF5ZXJQb3NpdGlvblVwZGF0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29v
cmRpbmF0b3I6OnNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25TeW5jaHJvbm91c2x5KToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpyZXBsYXlTZXNzaW9uU3Rh
dGVEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnN5
bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29uc0FzVGV4dCk6CisgICAgICAgICogcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaDogQWxpZ24gdGhlIGJpdG1hc2sgZW51bXMgdG8gbWFr
ZSBtaXN0YWtlcworICAgICAgICBlYXNpZXIgdG8gc3BvdC4KKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGluZ0Nvb3JkaW5hdG9yOjpmcmFtZVZpZXdMYXlvdXRVcGRhdGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpmcmFtZVZpZXdOb25GYXN0U2Nyb2xsYWJsZVJl
Z2lvbkNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnJl
cXVlc3RTY3JvbGxQb3NpdGlvblVwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdD
b29yZGluYXRvcjo6aGFuZGxlV2hlZWxFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxp
bmdDb29yZGluYXRvcjo6d2lsbERlc3Ryb3lTY3JvbGxhYmxlQXJlYSk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6c2Nyb2xsYWJsZUFyZWFTY3JvbGxMYXllckRpZENo
YW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6c2Nyb2xsYWJs
ZUFyZWFTY3JvbGxiYXJMYXllckRpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxp
bmdDb29yZGluYXRvcjo6cmVjb21wdXRlV2hlZWxFdmVudEhhbmRsZXJDb3VudEZvckZyYW1lVmll
dyk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ0Nvb3JkaW5hdG9yTWFj
Lmg6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ0Nvb3JkaW5hdG9yTWFj
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWM6OmhhbmRsZVdo
ZWVsRXZlbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMYXllcjo6flJlbmRlckxheWVyKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVy
QmFja2luZzo6dXBkYXRlT3ZlcmZsb3dDb250cm9sc0xheWVycyk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllckNvbXBvc2l0b3I6OnVwZGF0ZUJhY2tpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGF5ZXJDb21wb3NpdG9yOjpoYXNDb29yZGluYXRlZFNjcm9sbGluZyk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnNjcm9sbGluZ0xheWVyRGlkQ2hhbmdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlTGF5ZXJGb3JIZWFk
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVMYXll
ckZvckZvb3Rlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVw
ZGF0ZU92ZXJmbG93Q29udHJvbHNMYXllcnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5
ZXJDb21wb3NpdG9yOjpkZXN0cm95Um9vdExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlU2Nyb2xsQ29vcmRpbmF0aW9uRm9yVGhpc0ZyYW1lKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlU2Nyb2xsQ29v
cmRpbmF0ZWRMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6
OndpbGxSZW1vdmVTY3JvbGxpbmdMYXllcldpdGhCYWNraW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6ZGlkQWRkU2Nyb2xsaW5nTGF5ZXIpOgorICAgICAgICAq
IHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6bm9u
RmFzdFNjcm9sbGFibGVSZWN0cyk6CisKIDIwMTUtMDMtMjggIEVyaWMgQ2FybHNvbiAgPGVyaWMu
Y2FybHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgW01hY10gVXBkYXRlIGZvciBvdXRwdXQgZGV2
aWNlIEFQSSBjaGFuZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBmYTIyZDQ4OGYzYzQ2NWJkY2ExZTFjZjg0NWRl
NzIyMjY1Yjc5MTdiLi5hZGFiNDgyZWY4OTYxNjlmNjU2OTBhNTVlYWI1ZmEzNDBmZTNiODc4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTUtMDMtMjkgIFNpbW9uIEZyYXNlciAgPHNp
bW9uLmZyYXNlckBhcHBsZS5jb20+CisKKyAgICAgICAgQ29udmVydCBhcmd1bWVudHMgdG8gU2Ny
b2xsaW5nQ29vcmRpbmF0b3IgZnVuY3Rpb25zIHRvIHJlZmVyZW5jZXMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzE5OAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENvbnZlcnQgYWxsIHRoZSBGcmFtZVZp
ZXcqIGFuZCBTY3JvbGxhYmxlQXJlYSogYXJndW1lbnRzIHRvIFNjcm9sbGluZ0Nvb3JkaW5hdG9y
IGZ1bmN0aW9ucyB0bworICAgICAgICByZWZlcmVuY2VzLCBhbmQgdXNlIHJlZmVyZW5jZXMgaW4g
YSBmZXcgb3RoZXIgcGxhY2VzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9TY3JvbGxpbmcvUmVt
b3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1Njcm9sbGlu
Zy9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvci5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmNvb3JkaW5hdGVzU2Nyb2xsaW5nRm9yRnJhbWVWaWV3KToK
KwogMjAxNS0wMy0yNyAgR3dhbmcgWW9vbiBId2FuZyAgPHlvb25AaWdhbGlhLmNvbT4KIAogICAg
ICAgICBbVGV4TWFwXSBTZXBlcmF0ZSBCaXRtYXBUZXh0dXJlIHJlbGF0ZWQgY2xhc3NlcyBpbXBs
ZW1lbnRhdGlvbnMgZnJvbSBUZXh0dXJlTWFwcGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRl
eCA0MDRkNTdmOTM2MjMxMDRjYjc5NGYwNjYzZjk5YWE0OWY5ZTFlYTRjLi4zMGNkMmRjN2U2ODEz
OTkwYjRkYjkxMDViYjZhNWIxZWMyN2UzNzhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAg
LTU5OTUsNyArNTk5NSw3IEBAIHN0YXRpYyB2b2lkIHdoZWVsRXZlbnRIYW5kbGVyQ291bnRDaGFu
Z2VkKERvY3VtZW50KiBkb2N1bWVudCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gRklYTUU6
IFdoeSBkb2Vzbid0IHRoaXMgbmVlZCB0byBiZSBjYWxsZWQgaW4gZGlkQmVjb21lQ3VycmVudERv
Y3VtZW50SW5GcmFtZT8KLSAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+ZnJhbWVWaWV3V2hlZWxF
dmVudEhhbmRsZXJDb3VudENoYW5nZWQoZnJhbWVWaWV3KTsKKyAgICBzY3JvbGxpbmdDb29yZGlu
YXRvci0+ZnJhbWVWaWV3V2hlZWxFdmVudEhhbmRsZXJDb3VudENoYW5nZWQoKmZyYW1lVmlldyk7
CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OmRpZEFkZFdoZWVsRXZlbnRIYW5kbGVyKE5vZGUmKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcAppbmRleCAyYmE3ZmVlYzNmODY2
MmIyOTE5NzljNmU5NGVmODdjNWVjZDZlMTMwLi4wZmE3ODRiYWFlZDY3MDMzNWQ1ZWFjMzc4NWRh
NTFkNWNjY2Q5NzM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92
ZXJsYXlzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNw
cApAQCAtMTI3LDcgKzEyNyw3IEBAIGJvb2wgTm9uRmFzdFNjcm9sbGFibGVSZWdpb25PdmVybGF5
Ojp1cGRhdGVSZWdpb24oKQogCiAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLnBhZ2UoKSkg
ewogICAgICAgICBpZiAoU2Nyb2xsaW5nQ29vcmRpbmF0b3IqIHNjcm9sbGluZ0Nvb3JkaW5hdG9y
ID0gcGFnZS0+c2Nyb2xsaW5nQ29vcmRpbmF0b3IoKSkKLSAgICAgICAgICAgICpyZWdpb24gPSBz
Y3JvbGxpbmdDb29yZGluYXRvci0+Y29tcHV0ZU5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uKCZtX2Zy
YW1lLCBJbnRQb2ludCgpKTsKKyAgICAgICAgICAgICpyZWdpb24gPSBzY3JvbGxpbmdDb29yZGlu
YXRvci0+Y29tcHV0ZU5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uKG1fZnJhbWUsIEludFBvaW50KCkp
OwogICAgIH0KIAogICAgIC8vIGNvbXB1dGVOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbigpIGFwcGxp
ZXMgdG9wQ29udGVudEluc2V0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IDljNjU3
YmMyYmU3MjQwOTdhYzkwY2M2YTBjOTFmMmE0MDM0ZDU3NzkuLjdjOWYwNTE0OTc1Mjc4ZmFjODc5
NzAxNjU0YjhjZTQ0ZjRlNDJlMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTM1
OCw3ICszNTgsNyBAQCB2b2lkIEZyYW1lVmlldzo6cHJlcGFyZUZvckRldGFjaCgpCiAKICAgICBp
ZiAoZnJhbWUoKS5wYWdlKCkpIHsKICAgICAgICAgaWYgKFNjcm9sbGluZ0Nvb3JkaW5hdG9yKiBz
Y3JvbGxpbmdDb29yZGluYXRvciA9IGZyYW1lKCkucGFnZSgpLT5zY3JvbGxpbmdDb29yZGluYXRv
cigpKQotICAgICAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPndpbGxEZXN0cm95U2Nyb2xs
YWJsZUFyZWEodGhpcyk7CisgICAgICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+d2lsbERl
c3Ryb3lTY3JvbGxhYmxlQXJlYSgqdGhpcyk7CiAgICAgfQogfQogCkBAIC0xNTQ4LDcgKzE1NDgs
NyBAQCB2b2lkIEZyYW1lVmlldzo6YWRkU2xvd1JlcGFpbnRPYmplY3QoUmVuZGVyRWxlbWVudCog
bykKIAogICAgICAgICBpZiAoUGFnZSogcGFnZSA9IGZyYW1lKCkucGFnZSgpKSB7CiAgICAgICAg
ICAgICBpZiAoU2Nyb2xsaW5nQ29vcmRpbmF0b3IqIHNjcm9sbGluZ0Nvb3JkaW5hdG9yID0gcGFn
ZS0+c2Nyb2xsaW5nQ29vcmRpbmF0b3IoKSkKLSAgICAgICAgICAgICAgICBzY3JvbGxpbmdDb29y
ZGluYXRvci0+ZnJhbWVWaWV3SGFzU2xvd1JlcGFpbnRPYmplY3RzRGlkQ2hhbmdlKHRoaXMpOwor
ICAgICAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5mcmFtZVZpZXdIYXNTbG93UmVw
YWludE9iamVjdHNEaWRDaGFuZ2UoKnRoaXMpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtMTU2
NSw3ICsxNTY1LDcgQEAgdm9pZCBGcmFtZVZpZXc6OnJlbW92ZVNsb3dSZXBhaW50T2JqZWN0KFJl
bmRlckVsZW1lbnQqIG8pCiAKICAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBmcmFtZSgpLnBhZ2Uo
KSkgewogICAgICAgICAgICAgaWYgKFNjcm9sbGluZ0Nvb3JkaW5hdG9yKiBzY3JvbGxpbmdDb29y
ZGluYXRvciA9IHBhZ2UtPnNjcm9sbGluZ0Nvb3JkaW5hdG9yKCkpCi0gICAgICAgICAgICAgICAg
c2Nyb2xsaW5nQ29vcmRpbmF0b3ItPmZyYW1lVmlld0hhc1Nsb3dSZXBhaW50T2JqZWN0c0RpZENo
YW5nZSh0aGlzKTsKKyAgICAgICAgICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+ZnJhbWVW
aWV3SGFzU2xvd1JlcGFpbnRPYmplY3RzRGlkQ2hhbmdlKCp0aGlzKTsKICAgICAgICAgfQogICAg
IH0KIH0KQEAgLTE1ODIsNyArMTU4Miw3IEBAIHZvaWQgRnJhbWVWaWV3OjphZGRWaWV3cG9ydENv
bnN0cmFpbmVkT2JqZWN0KFJlbmRlckVsZW1lbnQqIG9iamVjdCkKIAogICAgICAgICBpZiAoUGFn
ZSogcGFnZSA9IGZyYW1lKCkucGFnZSgpKSB7CiAgICAgICAgICAgICBpZiAoU2Nyb2xsaW5nQ29v
cmRpbmF0b3IqIHNjcm9sbGluZ0Nvb3JkaW5hdG9yID0gcGFnZS0+c2Nyb2xsaW5nQ29vcmRpbmF0
b3IoKSkKLSAgICAgICAgICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+ZnJhbWVWaWV3Rml4
ZWRPYmplY3RzRGlkQ2hhbmdlKHRoaXMpOworICAgICAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3Jk
aW5hdG9yLT5mcmFtZVZpZXdGaXhlZE9iamVjdHNEaWRDaGFuZ2UoKnRoaXMpOwogICAgICAgICB9
CiAgICAgfQogfQpAQCAtMTU5Miw3ICsxNTkyLDcgQEAgdm9pZCBGcmFtZVZpZXc6OnJlbW92ZVZp
ZXdwb3J0Q29uc3RyYWluZWRPYmplY3QoUmVuZGVyRWxlbWVudCogb2JqZWN0KQogICAgIGlmICht
X3ZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RzICYmIG1fdmlld3BvcnRDb25zdHJhaW5lZE9iamVj
dHMtPnJlbW92ZShvYmplY3QpKSB7CiAgICAgICAgIGlmIChQYWdlKiBwYWdlID0gZnJhbWUoKS5w
YWdlKCkpIHsKICAgICAgICAgICAgIGlmIChTY3JvbGxpbmdDb29yZGluYXRvciogc2Nyb2xsaW5n
Q29vcmRpbmF0b3IgPSBwYWdlLT5zY3JvbGxpbmdDb29yZGluYXRvcigpKQotICAgICAgICAgICAg
ICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5mcmFtZVZpZXdGaXhlZE9iamVjdHNEaWRDaGFuZ2Uo
dGhpcyk7CisgICAgICAgICAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPmZyYW1lVmlld0Zp
eGVkT2JqZWN0c0RpZENoYW5nZSgqdGhpcyk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBGSVhN
RTogSW4gYWRkRml4ZWRPYmplY3QoKSB3ZSBvbmx5IGNhbGwgdGhpcyBpZiB0aGVyZSdzIGEgcGxh
dGZvcm0gd2lkZ2V0LApAQCAtMjIzMCw3ICsyMjMwLDcgQEAgYm9vbCBGcmFtZVZpZXc6OnJlcXVl
c3RTY3JvbGxQb3NpdGlvblVwZGF0ZShjb25zdCBJbnRQb2ludCYgcG9zaXRpb24pCiAjaWYgRU5B
QkxFKEFTWU5DX1NDUk9MTElORykgfHwgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCiAgICAgaWYg
KFBhZ2UqIHBhZ2UgPSBmcmFtZSgpLnBhZ2UoKSkgewogICAgICAgICBpZiAoU2Nyb2xsaW5nQ29v
cmRpbmF0b3IqIHNjcm9sbGluZ0Nvb3JkaW5hdG9yID0gcGFnZS0+c2Nyb2xsaW5nQ29vcmRpbmF0
b3IoKSkKLSAgICAgICAgICAgIHJldHVybiBzY3JvbGxpbmdDb29yZGluYXRvci0+cmVxdWVzdFNj
cm9sbFBvc2l0aW9uVXBkYXRlKHRoaXMsIHBvc2l0aW9uKTsKKyAgICAgICAgICAgIHJldHVybiBz
Y3JvbGxpbmdDb29yZGluYXRvci0+cmVxdWVzdFNjcm9sbFBvc2l0aW9uVXBkYXRlKCp0aGlzLCBw
b3NpdGlvbik7CiAgICAgfQogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0ocG9zaXRpb24pOwpAQCAt
Mjk2Myw3ICsyOTYzLDcgQEAgdm9pZCBGcmFtZVZpZXc6OnBlcmZvcm1Qb3N0TGF5b3V0VGFza3Mo
KQogCiAgICAgaWYgKGF1dG8qIHBhZ2UgPSBmcmFtZSgpLnBhZ2UoKSkgewogICAgICAgICBpZiAo
YXV0byogc2Nyb2xsaW5nQ29vcmRpbmF0b3IgPSBwYWdlLT5zY3JvbGxpbmdDb29yZGluYXRvcigp
KQotICAgICAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPmZyYW1lVmlld0xheW91dFVwZGF0
ZWQodGhpcyk7CisgICAgICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+ZnJhbWVWaWV3TGF5
b3V0VXBkYXRlZCgqdGhpcyk7CiAgICAgfQogCiAgICAgaWYgKFJlbmRlclZpZXcqIHJlbmRlclZp
ZXcgPSB0aGlzLT5yZW5kZXJWaWV3KCkpIHsKQEAgLTQzNzcsNyArNDM3Nyw3IEBAIHZvaWQgRnJh
bWVWaWV3OjpzY3JvbGxhYmxlQXJlYVNldENoYW5nZWQoKQogewogICAgIGlmIChhdXRvKiBwYWdl
ID0gZnJhbWUoKS5wYWdlKCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHNjcm9sbGluZ0Nvb3JkaW5h
dG9yID0gcGFnZS0+c2Nyb2xsaW5nQ29vcmRpbmF0b3IoKSkKLSAgICAgICAgICAgIHNjcm9sbGlu
Z0Nvb3JkaW5hdG9yLT5mcmFtZVZpZXdOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbkNoYW5nZWQodGhp
cyk7CisgICAgICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+ZnJhbWVWaWV3Tm9uRmFzdFNj
cm9sbGFibGVSZWdpb25DaGFuZ2VkKCp0aGlzKTsKICAgICB9CiB9CiAKQEAgLTQ0MjksOCArNDQy
OSw4IEBAIGJvb2wgRnJhbWVWaWV3Ojp3aGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVu
dCYgd2hlZWxFdmVudCkKICNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQogICAgIGlmIChQYWdl
KiBwYWdlID0gZnJhbWUoKS5wYWdlKCkpIHsKICAgICAgICAgaWYgKFNjcm9sbGluZ0Nvb3JkaW5h
dG9yKiBzY3JvbGxpbmdDb29yZGluYXRvciA9IHBhZ2UtPnNjcm9sbGluZ0Nvb3JkaW5hdG9yKCkp
IHsKLSAgICAgICAgICAgIGlmIChzY3JvbGxpbmdDb29yZGluYXRvci0+Y29vcmRpbmF0ZXNTY3Jv
bGxpbmdGb3JGcmFtZVZpZXcodGhpcykpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHNjcm9sbGlu
Z0Nvb3JkaW5hdG9yLT5oYW5kbGVXaGVlbEV2ZW50KHRoaXMsIHdoZWVsRXZlbnQpOworICAgICAg
ICAgICAgaWYgKHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5jb29yZGluYXRlc1Njcm9sbGluZ0ZvckZy
YW1lVmlldygqdGhpcykpCisgICAgICAgICAgICAgICAgcmV0dXJuIHNjcm9sbGluZ0Nvb3JkaW5h
dG9yLT5oYW5kbGVXaGVlbEV2ZW50KCp0aGlzLCB3aGVlbEV2ZW50KTsKICAgICAgICAgfQogICAg
IH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggMjIxNTE1NDM5YTQ2MDExZGIyYjkwZjdm
ZDI2ZDU3MWYyMjNlMmI1NC4uYTk2NGI1ODFkNDM5YzI3ZDNlYTAzYzdkODQyYzdiMTI0MWFmOGU2
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0zNjksNyArMzY5LDcgQEAgU3RyaW5nIFBhZ2U6OnN5
bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29uc0FzVGV4dCgpCiAgICAgcmV0dXJuIFN0cmluZygpOwog
fQogCi1SZWY8Q2xpZW50UmVjdExpc3Q+IFBhZ2U6Om5vbkZhc3RTY3JvbGxhYmxlUmVjdHMoY29u
c3QgRnJhbWUqIGZyYW1lKQorUmVmPENsaWVudFJlY3RMaXN0PiBQYWdlOjpub25GYXN0U2Nyb2xs
YWJsZVJlY3RzKGNvbnN0IEZyYW1lJiBmcmFtZSkKIHsKICAgICBpZiAoRG9jdW1lbnQqIGRvY3Vt
ZW50ID0gbV9tYWluRnJhbWUtPmRvY3VtZW50KCkpCiAgICAgICAgIGRvY3VtZW50LT51cGRhdGVM
YXlvdXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5kZXggNmU3MDVmNGRlMTg4NTkyMmJlY2I0YWY2NmEyMWYy
OTMyOWJlN2E0Yi4uYTJhMGY4NDYyOTQ3MWZlMzA0ODg3ZDU0ZWRlZTkyYjNkNjM5MDVkZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmgKQEAgLTE5Myw3ICsxOTMsNyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VY
UE9SVCBTdHJpbmcgc2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0KCk7CiAgICAgV0VCQ09SRV9FWFBP
UlQgU3RyaW5nIHN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29uc0FzVGV4dCgpOwotICAgIFdFQkNP
UkVfRVhQT1JUIFJlZjxDbGllbnRSZWN0TGlzdD4gbm9uRmFzdFNjcm9sbGFibGVSZWN0cyhjb25z
dCBGcmFtZSopOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxDbGllbnRSZWN0TGlzdD4gbm9uRmFz
dFNjcm9sbGFibGVSZWN0cyhjb25zdCBGcmFtZSYpOwogCiAgICAgU2V0dGluZ3MmIHNldHRpbmdz
KCkgY29uc3QgeyByZXR1cm4gKm1fc2V0dGluZ3M7IH0KICAgICBQcm9ncmVzc1RyYWNrZXImIHBy
b2dyZXNzKCkgY29uc3QgeyByZXR1cm4gKm1fcHJvZ3Jlc3M7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5j
cHAKaW5kZXggZTMyMDY1ODIzYzAzMjUxZmE0NDcxNDcwYjgyYzc5ZmY3ZDI4MDI5OS4uOWVkNThh
YTk0Yzc2MmEwZWY1M2MyNWMwZDUzZjMwYzVkZTllMjNhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5j
cHAKQEAgLTczLDcgKzczLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIHNldFN0YXRlU2Nyb2xsaW5n
Tm9kZVNuYXBPZmZzZXRzQXNGbG9hdChTY3JvbGxpbmdTdGF0ZVNjcm9sbGkKICAgICAgICAgbm9k
ZS5zZXRWZXJ0aWNhbFNuYXBPZmZzZXRzKHNuYXBPZmZzZXRzQXNGbG9hdCk7CiB9CiAKLXZvaWQg
QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6ZnJhbWVWaWV3TGF5b3V0VXBkYXRlZChGcmFtZVZp
ZXcqIGZyYW1lVmlldykKK3ZvaWQgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6ZnJhbWVWaWV3
TGF5b3V0VXBkYXRlZChGcmFtZVZpZXcmIGZyYW1lVmlldykKIHsKICAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOwogICAgIEFTU0VSVChtX3BhZ2UpOwpAQCAtODcsNTggKzg3LDU4IEBAIHZvaWQg
QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6ZnJhbWVWaWV3TGF5b3V0VXBkYXRlZChGcmFtZVZp
ZXcqIGZyYW1lVmlldykKICAgICAvLyBmcmFtZSB2aWV3IHdob3NlIGxheW91dCB3YXMgdXBkYXRl
ZCBpcyBub3QgdGhlIG1haW4gZnJhbWUuCiAgICAgLy8gSW4gdGhlIGZ1dHVyZSwgd2UgbWF5IHdh
bnQgdG8gaGF2ZSB0aGUgYWJpbGl0eSB0byBzZXQgbm9uLWZhc3Qgc2Nyb2xsaW5nIHJlZ2lvbnMg
Zm9yIG1vcmUgdGhhbgogICAgIC8vIGp1c3QgdGhlIHJvb3Qgbm9kZS4gQnV0IHJpZ2h0IG5vdywg
dGhpcyBjb25jZXB0IG9ubHkgYXBwbGllcyB0byB0aGUgcm9vdC4KLSAgICBtX3Njcm9sbGluZ1N0
YXRlVHJlZS0+cm9vdFN0YXRlTm9kZSgpLT5zZXROb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbihjb21w
dXRlTm9uRmFzdFNjcm9sbGFibGVSZWdpb24oJm1fcGFnZS0+bWFpbkZyYW1lKCksIEludFBvaW50
KCkpKTsKKyAgICBtX3Njcm9sbGluZ1N0YXRlVHJlZS0+cm9vdFN0YXRlTm9kZSgpLT5zZXROb25G
YXN0U2Nyb2xsYWJsZVJlZ2lvbihjb21wdXRlTm9uRmFzdFNjcm9sbGFibGVSZWdpb24obV9wYWdl
LT5tYWluRnJhbWUoKSwgSW50UG9pbnQoKSkpOwogCiAgICAgaWYgKCFjb29yZGluYXRlc1Njcm9s
bGluZ0ZvckZyYW1lVmlldyhmcmFtZVZpZXcpKQogICAgICAgICByZXR1cm47CiAKLSAgICBTY3Jv
bGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZSogbm9kZSA9IGRvd25jYXN0PFNjcm9sbGluZ1N0
YXRlRnJhbWVTY3JvbGxpbmdOb2RlPihtX3Njcm9sbGluZ1N0YXRlVHJlZS0+c3RhdGVOb2RlRm9y
SUQoZnJhbWVWaWV3LT5zY3JvbGxMYXllcklEKCkpKTsKKyAgICBTY3JvbGxpbmdTdGF0ZUZyYW1l
U2Nyb2xsaW5nTm9kZSogbm9kZSA9IGRvd25jYXN0PFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxp
bmdOb2RlPihtX3Njcm9sbGluZ1N0YXRlVHJlZS0+c3RhdGVOb2RlRm9ySUQoZnJhbWVWaWV3LnNj
cm9sbExheWVySUQoKSkpOwogICAgIGlmICghbm9kZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
U2Nyb2xsYmFyKiB2ZXJ0aWNhbFNjcm9sbGJhciA9IGZyYW1lVmlldy0+dmVydGljYWxTY3JvbGxi
YXIoKTsKLSAgICBTY3JvbGxiYXIqIGhvcml6b250YWxTY3JvbGxiYXIgPSBmcmFtZVZpZXctPmhv
cml6b250YWxTY3JvbGxiYXIoKTsKKyAgICBTY3JvbGxiYXIqIHZlcnRpY2FsU2Nyb2xsYmFyID0g
ZnJhbWVWaWV3LnZlcnRpY2FsU2Nyb2xsYmFyKCk7CisgICAgU2Nyb2xsYmFyKiBob3Jpem9udGFs
U2Nyb2xsYmFyID0gZnJhbWVWaWV3Lmhvcml6b250YWxTY3JvbGxiYXIoKTsKICAgICBub2RlLT5z
ZXRTY3JvbGxiYXJQYWludGVyc0Zyb21TY3JvbGxiYXJzKHZlcnRpY2FsU2Nyb2xsYmFyLCBob3Jp
em9udGFsU2Nyb2xsYmFyKTsKICAgICAKLSAgICBub2RlLT5zZXRGcmFtZVNjYWxlRmFjdG9yKGZy
YW1lVmlldy0+ZnJhbWUoKS5mcmFtZVNjYWxlRmFjdG9yKCkpOwotICAgIG5vZGUtPnNldEhlYWRl
ckhlaWdodChmcmFtZVZpZXctPmhlYWRlckhlaWdodCgpKTsKLSAgICBub2RlLT5zZXRGb290ZXJI
ZWlnaHQoZnJhbWVWaWV3LT5mb290ZXJIZWlnaHQoKSk7Ci0gICAgbm9kZS0+c2V0VG9wQ29udGVu
dEluc2V0KGZyYW1lVmlldy0+dG9wQ29udGVudEluc2V0KCkpOworICAgIG5vZGUtPnNldEZyYW1l
U2NhbGVGYWN0b3IoZnJhbWVWaWV3LmZyYW1lKCkuZnJhbWVTY2FsZUZhY3RvcigpKTsKKyAgICBu
b2RlLT5zZXRIZWFkZXJIZWlnaHQoZnJhbWVWaWV3LmhlYWRlckhlaWdodCgpKTsKKyAgICBub2Rl
LT5zZXRGb290ZXJIZWlnaHQoZnJhbWVWaWV3LmZvb3RlckhlaWdodCgpKTsKKyAgICBub2RlLT5z
ZXRUb3BDb250ZW50SW5zZXQoZnJhbWVWaWV3LnRvcENvbnRlbnRJbnNldCgpKTsKIAotICAgIG5v
ZGUtPnNldFNjcm9sbE9yaWdpbihmcmFtZVZpZXctPnNjcm9sbE9yaWdpbigpKTsKLSAgICBub2Rl
LT5zZXRTY3JvbGxhYmxlQXJlYVNpemUoZnJhbWVWaWV3LT52aXNpYmxlQ29udGVudFJlY3QoKS5z
aXplKCkpOwotICAgIG5vZGUtPnNldFRvdGFsQ29udGVudHNTaXplKGZyYW1lVmlldy0+dG90YWxD
b250ZW50c1NpemUoKSk7Ci0gICAgbm9kZS0+c2V0UmVhY2hhYmxlQ29udGVudHNTaXplKGZyYW1l
Vmlldy0+dG90YWxDb250ZW50c1NpemUoKSk7CisgICAgbm9kZS0+c2V0U2Nyb2xsT3JpZ2luKGZy
YW1lVmlldy5zY3JvbGxPcmlnaW4oKSk7CisgICAgbm9kZS0+c2V0U2Nyb2xsYWJsZUFyZWFTaXpl
KGZyYW1lVmlldy52aXNpYmxlQ29udGVudFJlY3QoKS5zaXplKCkpOworICAgIG5vZGUtPnNldFRv
dGFsQ29udGVudHNTaXplKGZyYW1lVmlldy50b3RhbENvbnRlbnRzU2l6ZSgpKTsKKyAgICBub2Rl
LT5zZXRSZWFjaGFibGVDb250ZW50c1NpemUoZnJhbWVWaWV3LnRvdGFsQ29udGVudHNTaXplKCkp
OwogCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKLSAgICBmcmFtZVZpZXctPnVwZGF0ZVNu
YXBPZmZzZXRzKCk7Ci0gICAgaWYgKGNvbnN0IFZlY3RvcjxMYXlvdXRVbml0PiogaG9yaXpvbnRh
bFNuYXBPZmZzZXRzID0gZnJhbWVWaWV3LT5ob3Jpem9udGFsU25hcE9mZnNldHMoKSkKKyAgICBm
cmFtZVZpZXcudXBkYXRlU25hcE9mZnNldHMoKTsKKyAgICBpZiAoY29uc3QgVmVjdG9yPExheW91
dFVuaXQ+KiBob3Jpem9udGFsU25hcE9mZnNldHMgPSBmcmFtZVZpZXcuaG9yaXpvbnRhbFNuYXBP
ZmZzZXRzKCkpCiAgICAgICAgIHNldFN0YXRlU2Nyb2xsaW5nTm9kZVNuYXBPZmZzZXRzQXNGbG9h
dCgqbm9kZSwgU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsLCAqaG9yaXpvbnRhbFNuYXBPZmZz
ZXRzLCBtX3BhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCkpOwogCi0gICAgaWYgKGNvbnN0IFZlY3Rv
cjxMYXlvdXRVbml0PiogdmVydGljYWxTbmFwT2Zmc2V0cyA9IGZyYW1lVmlldy0+dmVydGljYWxT
bmFwT2Zmc2V0cygpKQorICAgIGlmIChjb25zdCBWZWN0b3I8TGF5b3V0VW5pdD4qIHZlcnRpY2Fs
U25hcE9mZnNldHMgPSBmcmFtZVZpZXcudmVydGljYWxTbmFwT2Zmc2V0cygpKQogICAgICAgICBz
ZXRTdGF0ZVNjcm9sbGluZ05vZGVTbmFwT2Zmc2V0c0FzRmxvYXQoKm5vZGUsIFNjcm9sbEV2ZW50
QXhpczo6VmVydGljYWwsICp2ZXJ0aWNhbFNuYXBPZmZzZXRzLCBtX3BhZ2UtPmRldmljZVNjYWxl
RmFjdG9yKCkpOwogI2VuZGlmCiAKICAgICBTY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMgc2Nyb2xs
UGFyYW1ldGVyczsKLSAgICBzY3JvbGxQYXJhbWV0ZXJzLmhvcml6b250YWxTY3JvbGxFbGFzdGlj
aXR5ID0gZnJhbWVWaWV3LT5ob3Jpem9udGFsU2Nyb2xsRWxhc3RpY2l0eSgpOwotICAgIHNjcm9s
bFBhcmFtZXRlcnMudmVydGljYWxTY3JvbGxFbGFzdGljaXR5ID0gZnJhbWVWaWV3LT52ZXJ0aWNh
bFNjcm9sbEVsYXN0aWNpdHkoKTsKKyAgICBzY3JvbGxQYXJhbWV0ZXJzLmhvcml6b250YWxTY3Jv
bGxFbGFzdGljaXR5ID0gZnJhbWVWaWV3Lmhvcml6b250YWxTY3JvbGxFbGFzdGljaXR5KCk7Cisg
ICAgc2Nyb2xsUGFyYW1ldGVycy52ZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHkgPSBmcmFtZVZpZXcu
dmVydGljYWxTY3JvbGxFbGFzdGljaXR5KCk7CiAgICAgc2Nyb2xsUGFyYW1ldGVycy5oYXNFbmFi
bGVkSG9yaXpvbnRhbFNjcm9sbGJhciA9IGhvcml6b250YWxTY3JvbGxiYXIgJiYgaG9yaXpvbnRh
bFNjcm9sbGJhci0+ZW5hYmxlZCgpOwogICAgIHNjcm9sbFBhcmFtZXRlcnMuaGFzRW5hYmxlZFZl
cnRpY2FsU2Nyb2xsYmFyID0gdmVydGljYWxTY3JvbGxiYXIgJiYgdmVydGljYWxTY3JvbGxiYXIt
PmVuYWJsZWQoKTsKLSAgICBzY3JvbGxQYXJhbWV0ZXJzLmhvcml6b250YWxTY3JvbGxiYXJNb2Rl
ID0gZnJhbWVWaWV3LT5ob3Jpem9udGFsU2Nyb2xsYmFyTW9kZSgpOwotICAgIHNjcm9sbFBhcmFt
ZXRlcnMudmVydGljYWxTY3JvbGxiYXJNb2RlID0gZnJhbWVWaWV3LT52ZXJ0aWNhbFNjcm9sbGJh
ck1vZGUoKTsKKyAgICBzY3JvbGxQYXJhbWV0ZXJzLmhvcml6b250YWxTY3JvbGxiYXJNb2RlID0g
ZnJhbWVWaWV3Lmhvcml6b250YWxTY3JvbGxiYXJNb2RlKCk7CisgICAgc2Nyb2xsUGFyYW1ldGVy
cy52ZXJ0aWNhbFNjcm9sbGJhck1vZGUgPSBmcmFtZVZpZXcudmVydGljYWxTY3JvbGxiYXJNb2Rl
KCk7CiAKICAgICBub2RlLT5zZXRTY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMoc2Nyb2xsUGFyYW1l
dGVycyk7CiB9CiAKLXZvaWQgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6ZnJhbWVWaWV3Tm9u
RmFzdFNjcm9sbGFibGVSZWdpb25DaGFuZ2VkKEZyYW1lVmlldyopCit2b2lkIEFzeW5jU2Nyb2xs
aW5nQ29vcmRpbmF0b3I6OmZyYW1lVmlld05vbkZhc3RTY3JvbGxhYmxlUmVnaW9uQ2hhbmdlZChG
cmFtZVZpZXcmKQogewogICAgIGlmICghbV9zY3JvbGxpbmdTdGF0ZVRyZWUtPnJvb3RTdGF0ZU5v
ZGUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9zY3JvbGxpbmdTdGF0ZVRyZWUtPnJvb3RT
dGF0ZU5vZGUoKS0+c2V0Tm9uRmFzdFNjcm9sbGFibGVSZWdpb24oY29tcHV0ZU5vbkZhc3RTY3Jv
bGxhYmxlUmVnaW9uKCZtX3BhZ2UtPm1haW5GcmFtZSgpLCBJbnRQb2ludCgpKSk7CisgICAgbV9z
Y3JvbGxpbmdTdGF0ZVRyZWUtPnJvb3RTdGF0ZU5vZGUoKS0+c2V0Tm9uRmFzdFNjcm9sbGFibGVS
ZWdpb24oY29tcHV0ZU5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uKG1fcGFnZS0+bWFpbkZyYW1lKCks
IEludFBvaW50KCkpKTsKIH0KIAotdm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpmcmFt
ZVZpZXdSb290TGF5ZXJEaWRDaGFuZ2UoRnJhbWVWaWV3KiBmcmFtZVZpZXcpCit2b2lkIEFzeW5j
U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZyYW1lVmlld1Jvb3RMYXllckRpZENoYW5nZShGcmFtZVZp
ZXcmIGZyYW1lVmlldykKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VS
VChtX3BhZ2UpOwpAQCAtMTQ4LDcgKzE0OCw3IEBAIHZvaWQgQXN5bmNTY3JvbGxpbmdDb29yZGlu
YXRvcjo6ZnJhbWVWaWV3Um9vdExheWVyRGlkQ2hhbmdlKEZyYW1lVmlldyogZnJhbWVWaWV3CiAg
ICAgCiAgICAgLy8gRklYTUU6IEluIHNvbWUgbmF2aWdhdGlvbiBzY2VuYXJpb3MsIHRoZSBGcmFt
ZVZpZXcgaGFzIG5vIFJlbmRlclZpZXcgb3IgdGhhdCBSZW5kZXJWaWV3IGhhcyBub3QgYmVlbiBj
b21wb3NpdGVkLgogICAgIC8vIFRoaXMgbmVlZHMgY2xlYW5pbmcgdXA6IGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzI3MjQKLSAgICBpZiAoIWZyYW1lVmlldy0+c2Ny
b2xsTGF5ZXJJRCgpKQorICAgIGlmICghZnJhbWVWaWV3LnNjcm9sbExheWVySUQoKSkKICAgICAg
ICAgcmV0dXJuOwogICAgIAogICAgIC8vIElmIHRoZSByb290IGxheWVyIGRvZXMgbm90IGhhdmUg
YSBTY3JvbGxpbmdTdGF0ZU5vZGUsIHRoZW4gd2Ugc2hvdWxkIGNyZWF0ZSBvbmUuCkBAIC0xNTcs
NyArMTU3LDcgQEAgdm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpmcmFtZVZpZXdSb290
TGF5ZXJEaWRDaGFuZ2UoRnJhbWVWaWV3KiBmcmFtZVZpZXcKIAogICAgIFNjcm9sbGluZ0Nvb3Jk
aW5hdG9yOjpmcmFtZVZpZXdSb290TGF5ZXJEaWRDaGFuZ2UoZnJhbWVWaWV3KTsKIAotICAgIFNj
cm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlKiBub2RlID0gZG93bmNhc3Q8U2Nyb2xsaW5n
U3RhdGVGcmFtZVNjcm9sbGluZ05vZGU+KG1fc2Nyb2xsaW5nU3RhdGVUcmVlLT5zdGF0ZU5vZGVG
b3JJRChmcmFtZVZpZXctPnNjcm9sbExheWVySUQoKSkpOworICAgIFNjcm9sbGluZ1N0YXRlRnJh
bWVTY3JvbGxpbmdOb2RlKiBub2RlID0gZG93bmNhc3Q8U2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9s
bGluZ05vZGU+KG1fc2Nyb2xsaW5nU3RhdGVUcmVlLT5zdGF0ZU5vZGVGb3JJRChmcmFtZVZpZXcu
c2Nyb2xsTGF5ZXJJRCgpKSk7CiAgICAgbm9kZS0+c2V0TGF5ZXIoc2Nyb2xsTGF5ZXJGb3JGcmFt
ZVZpZXcoZnJhbWVWaWV3KSk7CiAgICAgbm9kZS0+c2V0U2Nyb2xsZWRDb250ZW50c0xheWVyKHJv
b3RDb250ZW50TGF5ZXJGb3JGcmFtZVZpZXcoZnJhbWVWaWV3KSk7CiAgICAgbm9kZS0+c2V0Q291
bnRlclNjcm9sbGluZ0xheWVyKGNvdW50ZXJTY3JvbGxpbmdMYXllckZvckZyYW1lVmlldyhmcmFt
ZVZpZXcpKTsKQEAgLTE2NSwxMCArMTY1LDEwIEBAIHZvaWQgQXN5bmNTY3JvbGxpbmdDb29yZGlu
YXRvcjo6ZnJhbWVWaWV3Um9vdExheWVyRGlkQ2hhbmdlKEZyYW1lVmlldyogZnJhbWVWaWV3CiAg
ICAgbm9kZS0+c2V0Q29udGVudFNoYWRvd0xheWVyKGNvbnRlbnRTaGFkb3dMYXllckZvckZyYW1l
VmlldyhmcmFtZVZpZXcpKTsKICAgICBub2RlLT5zZXRIZWFkZXJMYXllcihoZWFkZXJMYXllckZv
ckZyYW1lVmlldyhmcmFtZVZpZXcpKTsKICAgICBub2RlLT5zZXRGb290ZXJMYXllcihmb290ZXJM
YXllckZvckZyYW1lVmlldyhmcmFtZVZpZXcpKTsKLSAgICBub2RlLT5zZXRTY3JvbGxCZWhhdmlv
ckZvckZpeGVkRWxlbWVudHMoZnJhbWVWaWV3LT5zY3JvbGxCZWhhdmlvckZvckZpeGVkRWxlbWVu
dHMoKSk7CisgICAgbm9kZS0+c2V0U2Nyb2xsQmVoYXZpb3JGb3JGaXhlZEVsZW1lbnRzKGZyYW1l
Vmlldy5zY3JvbGxCZWhhdmlvckZvckZpeGVkRWxlbWVudHMoKSk7CiB9CiAKLWJvb2wgQXN5bmNT
Y3JvbGxpbmdDb29yZGluYXRvcjo6cmVxdWVzdFNjcm9sbFBvc2l0aW9uVXBkYXRlKEZyYW1lVmll
dyogZnJhbWVWaWV3LCBjb25zdCBJbnRQb2ludCYgc2Nyb2xsUG9zaXRpb24pCitib29sIEFzeW5j
U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnJlcXVlc3RTY3JvbGxQb3NpdGlvblVwZGF0ZShGcmFtZVZp
ZXcmIGZyYW1lVmlldywgY29uc3QgSW50UG9pbnQmIHNjcm9sbFBvc2l0aW9uKQogewogICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKG1fcGFnZSk7CkBAIC0xNzYsMTYgKzE3
NiwxNiBAQCBib29sIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnJlcXVlc3RTY3JvbGxQb3Np
dGlvblVwZGF0ZShGcmFtZVZpZXcqIGZyYW1lVmlldwogICAgIGlmICghY29vcmRpbmF0ZXNTY3Jv
bGxpbmdGb3JGcmFtZVZpZXcoZnJhbWVWaWV3KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgYm9vbCBpc1Byb2dyYW1tYXRpY1Njcm9sbCA9IGZyYW1lVmlldy0+aW5Qcm9ncmFtbWF0aWNT
Y3JvbGwoKTsKLSAgICBpZiAoaXNQcm9ncmFtbWF0aWNTY3JvbGwgfHwgZnJhbWVWaWV3LT5mcmFt
ZSgpLmRvY3VtZW50KCktPmluUGFnZUNhY2hlKCkpCi0gICAgICAgIHVwZGF0ZVNjcm9sbFBvc2l0
aW9uQWZ0ZXJBc3luY1Njcm9sbChmcmFtZVZpZXctPnNjcm9sbExheWVySUQoKSwgc2Nyb2xsUG9z
aXRpb24sIGlzUHJvZ3JhbW1hdGljU2Nyb2xsLCBTZXRTY3JvbGxpbmdMYXllclBvc2l0aW9uKTsK
KyAgICBib29sIGlzUHJvZ3JhbW1hdGljU2Nyb2xsID0gZnJhbWVWaWV3LmluUHJvZ3JhbW1hdGlj
U2Nyb2xsKCk7CisgICAgaWYgKGlzUHJvZ3JhbW1hdGljU2Nyb2xsIHx8IGZyYW1lVmlldy5mcmFt
ZSgpLmRvY3VtZW50KCktPmluUGFnZUNhY2hlKCkpCisgICAgICAgIHVwZGF0ZVNjcm9sbFBvc2l0
aW9uQWZ0ZXJBc3luY1Njcm9sbChmcmFtZVZpZXcuc2Nyb2xsTGF5ZXJJRCgpLCBzY3JvbGxQb3Np
dGlvbiwgaXNQcm9ncmFtbWF0aWNTY3JvbGwsIFNldFNjcm9sbGluZ0xheWVyUG9zaXRpb24pOwog
CiAgICAgLy8gSWYgdGhpcyBmcmFtZSB2aWV3J3MgZG9jdW1lbnQgaXMgYmVpbmcgcHV0IGludG8g
dGhlIHBhZ2UgY2FjaGUsIHdlIGRvbid0IHdhbnQgdG8gdXBkYXRlIG91cgogICAgIC8vIG1haW4g
ZnJhbWUgc2Nyb2xsIHBvc2l0aW9uLiBKdXN0IGxldCB0aGUgRnJhbWVWaWV3IHRoaW5rIHRoYXQg
d2UgZGlkLgotICAgIGlmIChmcmFtZVZpZXctPmZyYW1lKCkuZG9jdW1lbnQoKS0+aW5QYWdlQ2Fj
aGUoKSkKKyAgICBpZiAoZnJhbWVWaWV3LmZyYW1lKCkuZG9jdW1lbnQoKS0+aW5QYWdlQ2FjaGUo
KSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05v
ZGUqIHN0YXRlTm9kZSA9IGRvd25jYXN0PFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZT4obV9z
Y3JvbGxpbmdTdGF0ZVRyZWUtPnN0YXRlTm9kZUZvcklEKGZyYW1lVmlldy0+c2Nyb2xsTGF5ZXJJ
RCgpKSk7CisgICAgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlKiBzdGF0ZU5vZGUgPSBkb3du
Y2FzdDxTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU+KG1fc2Nyb2xsaW5nU3RhdGVUcmVlLT5z
dGF0ZU5vZGVGb3JJRChmcmFtZVZpZXcuc2Nyb2xsTGF5ZXJJRCgpKSk7CiAgICAgaWYgKCFzdGF0
ZU5vZGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMjYyLDE5ICsyNjIsMjEgQEAgdm9p
ZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjp1cGRhdGVTY3JvbGxQb3NpdGlvbkFmdGVyQXN5
bmNTY3JvbGwoU2Nyb2xsaW5nTm8KICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBmcmFtZVZpZXdGb3JTY3JvbGxpbmdOb2RlKHNj
cm9sbGluZ05vZGVJRCk7Ci0gICAgaWYgKCFmcmFtZVZpZXcpCisgICAgRnJhbWVWaWV3KiBmcmFt
ZVZpZXdQdHIgPSBmcmFtZVZpZXdGb3JTY3JvbGxpbmdOb2RlKHNjcm9sbGluZ05vZGVJRCk7Cisg
ICAgaWYgKCFmcmFtZVZpZXdQdHIpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChzY3JvbGxp
bmdOb2RlSUQgPT0gZnJhbWVWaWV3LT5zY3JvbGxMYXllcklEKCkpIHsKLSAgICAgICAgYm9vbCBv
bGRQcm9ncmFtbWF0aWNTY3JvbGwgPSBmcmFtZVZpZXctPmluUHJvZ3JhbW1hdGljU2Nyb2xsKCk7
Ci0gICAgICAgIGZyYW1lVmlldy0+c2V0SW5Qcm9ncmFtbWF0aWNTY3JvbGwocHJvZ3JhbW1hdGlj
U2Nyb2xsKTsKKyAgICBGcmFtZVZpZXcmIGZyYW1lVmlldyA9ICpmcmFtZVZpZXdQdHI7CisKKyAg
ICBpZiAoc2Nyb2xsaW5nTm9kZUlEID09IGZyYW1lVmlldy5zY3JvbGxMYXllcklEKCkpIHsKKyAg
ICAgICAgYm9vbCBvbGRQcm9ncmFtbWF0aWNTY3JvbGwgPSBmcmFtZVZpZXcuaW5Qcm9ncmFtbWF0
aWNTY3JvbGwoKTsKKyAgICAgICAgZnJhbWVWaWV3LnNldEluUHJvZ3JhbW1hdGljU2Nyb2xsKHBy
b2dyYW1tYXRpY1Njcm9sbCk7CiAKLSAgICAgICAgZnJhbWVWaWV3LT5zZXRDb25zdHJhaW5zU2Ny
b2xsaW5nVG9Db250ZW50RWRnZShmYWxzZSk7Ci0gICAgICAgIGZyYW1lVmlldy0+bm90aWZ5U2Ny
b2xsUG9zaXRpb25DaGFuZ2VkKHJvdW5kZWRJbnRQb2ludChzY3JvbGxQb3NpdGlvbikpOwotICAg
ICAgICBmcmFtZVZpZXctPnNldENvbnN0cmFpbnNTY3JvbGxpbmdUb0NvbnRlbnRFZGdlKHRydWUp
OworICAgICAgICBmcmFtZVZpZXcuc2V0Q29uc3RyYWluc1Njcm9sbGluZ1RvQ29udGVudEVkZ2Uo
ZmFsc2UpOworICAgICAgICBmcmFtZVZpZXcubm90aWZ5U2Nyb2xsUG9zaXRpb25DaGFuZ2VkKHJv
dW5kZWRJbnRQb2ludChzY3JvbGxQb3NpdGlvbikpOworICAgICAgICBmcmFtZVZpZXcuc2V0Q29u
c3RyYWluc1Njcm9sbGluZ1RvQ29udGVudEVkZ2UodHJ1ZSk7CiAKLSAgICAgICAgZnJhbWVWaWV3
LT5zZXRJblByb2dyYW1tYXRpY1Njcm9sbChvbGRQcm9ncmFtbWF0aWNTY3JvbGwpOworICAgICAg
ICBmcmFtZVZpZXcuc2V0SW5Qcm9ncmFtbWF0aWNTY3JvbGwob2xkUHJvZ3JhbW1hdGljU2Nyb2xs
KTsKIAogICAgICAgICBpZiAoR3JhcGhpY3NMYXllciogc2Nyb2xsTGF5ZXIgPSBzY3JvbGxMYXll
ckZvckZyYW1lVmlldyhmcmFtZVZpZXcpKSB7CiAgICAgICAgICAgICBHcmFwaGljc0xheWVyKiBj
b3VudGVyU2Nyb2xsaW5nTGF5ZXIgPSBjb3VudGVyU2Nyb2xsaW5nTGF5ZXJGb3JGcmFtZVZpZXco
ZnJhbWVWaWV3KTsKQEAgLTI4MywxOCArMjg1LDE4IEBAIHZvaWQgQXN5bmNTY3JvbGxpbmdDb29y
ZGluYXRvcjo6dXBkYXRlU2Nyb2xsUG9zaXRpb25BZnRlckFzeW5jU2Nyb2xsKFNjcm9sbGluZ05v
CiAgICAgICAgICAgICBHcmFwaGljc0xheWVyKiBzY3JvbGxlZENvbnRlbnRzTGF5ZXIgPSByb290
Q29udGVudExheWVyRm9yRnJhbWVWaWV3KGZyYW1lVmlldyk7CiAgICAgICAgICAgICBHcmFwaGlj
c0xheWVyKiBoZWFkZXJMYXllciA9IGhlYWRlckxheWVyRm9yRnJhbWVWaWV3KGZyYW1lVmlldyk7
CiAgICAgICAgICAgICBHcmFwaGljc0xheWVyKiBmb290ZXJMYXllciA9IGZvb3RlckxheWVyRm9y
RnJhbWVWaWV3KGZyYW1lVmlldyk7Ci0gICAgICAgICAgICBMYXlvdXRTaXplIHNjcm9sbE9mZnNl
dEZvckZpeGVkID0gZnJhbWVWaWV3LT5zY3JvbGxPZmZzZXRGb3JGaXhlZFBvc2l0aW9uKCk7Cisg
ICAgICAgICAgICBMYXlvdXRTaXplIHNjcm9sbE9mZnNldEZvckZpeGVkID0gZnJhbWVWaWV3LnNj
cm9sbE9mZnNldEZvckZpeGVkUG9zaXRpb24oKTsKIAotICAgICAgICAgICAgZmxvYXQgdG9wQ29u
dGVudEluc2V0ID0gZnJhbWVWaWV3LT50b3BDb250ZW50SW5zZXQoKTsKKyAgICAgICAgICAgIGZs
b2F0IHRvcENvbnRlbnRJbnNldCA9IGZyYW1lVmlldy50b3BDb250ZW50SW5zZXQoKTsKICAgICAg
ICAgICAgIEZsb2F0UG9pbnQgcG9zaXRpb25Gb3JJbnNldENsaXBMYXllciA9IEZsb2F0UG9pbnQo
MCwgRnJhbWVWaWV3Ojp5UG9zaXRpb25Gb3JJbnNldENsaXBMYXllcihzY3JvbGxQb3NpdGlvbiwg
dG9wQ29udGVudEluc2V0KSk7CiAgICAgICAgICAgICBGbG9hdFBvaW50IHBvc2l0aW9uRm9yQ29u
dGVudHNMYXllciA9IEZsb2F0UG9pbnQoc2Nyb2xsZWRDb250ZW50c0xheWVyLT5wb3NpdGlvbigp
LngoKSwKLSAgICAgICAgICAgICAgICBGcmFtZVZpZXc6OnlQb3NpdGlvbkZvclJvb3RDb250ZW50
TGF5ZXIoc2Nyb2xsUG9zaXRpb24sIHRvcENvbnRlbnRJbnNldCwgZnJhbWVWaWV3LT5oZWFkZXJI
ZWlnaHQoKSkpOworICAgICAgICAgICAgICAgIEZyYW1lVmlldzo6eVBvc2l0aW9uRm9yUm9vdENv
bnRlbnRMYXllcihzY3JvbGxQb3NpdGlvbiwgdG9wQ29udGVudEluc2V0LCBmcmFtZVZpZXcuaGVh
ZGVySGVpZ2h0KCkpKTsKICAgICAgICAgICAgIEZsb2F0UG9pbnQgcG9zaXRpb25Gb3JIZWFkZXJM
YXllciA9IEZsb2F0UG9pbnQoc2Nyb2xsT2Zmc2V0Rm9yRml4ZWQud2lkdGgoKSwgRnJhbWVWaWV3
Ojp5UG9zaXRpb25Gb3JIZWFkZXJMYXllcihzY3JvbGxQb3NpdGlvbiwgdG9wQ29udGVudEluc2V0
KSk7CiAgICAgICAgICAgICBGbG9hdFBvaW50IHBvc2l0aW9uRm9yRm9vdGVyTGF5ZXIgPSBGbG9h
dFBvaW50KHNjcm9sbE9mZnNldEZvckZpeGVkLndpZHRoKCksCi0gICAgICAgICAgICAgICAgRnJh
bWVWaWV3Ojp5UG9zaXRpb25Gb3JGb290ZXJMYXllcihzY3JvbGxQb3NpdGlvbiwgdG9wQ29udGVu
dEluc2V0LCBmcmFtZVZpZXctPnRvdGFsQ29udGVudHNTaXplKCkuaGVpZ2h0KCksIGZyYW1lVmll
dy0+Zm9vdGVySGVpZ2h0KCkpKTsKKyAgICAgICAgICAgICAgICBGcmFtZVZpZXc6OnlQb3NpdGlv
bkZvckZvb3RlckxheWVyKHNjcm9sbFBvc2l0aW9uLCB0b3BDb250ZW50SW5zZXQsIGZyYW1lVmll
dy50b3RhbENvbnRlbnRzU2l6ZSgpLmhlaWdodCgpLCBmcmFtZVZpZXcuZm9vdGVySGVpZ2h0KCkp
KTsKIAogICAgICAgICAgICAgaWYgKHByb2dyYW1tYXRpY1Njcm9sbCB8fCBzY3JvbGxpbmdMYXll
clBvc2l0aW9uQWN0aW9uID09IFNldFNjcm9sbGluZ0xheWVyUG9zaXRpb24pIHsKLSAgICAgICAg
ICAgICAgICBzY3JvbGxMYXllci0+c2V0UG9zaXRpb24oLWZyYW1lVmlldy0+c2Nyb2xsUG9zaXRp
b24oKSk7CisgICAgICAgICAgICAgICAgc2Nyb2xsTGF5ZXItPnNldFBvc2l0aW9uKC1mcmFtZVZp
ZXcuc2Nyb2xsUG9zaXRpb24oKSk7CiAgICAgICAgICAgICAgICAgaWYgKGNvdW50ZXJTY3JvbGxp
bmdMYXllcikKICAgICAgICAgICAgICAgICAgICAgY291bnRlclNjcm9sbGluZ0xheWVyLT5zZXRQ
b3NpdGlvbih0b0xheW91dFBvaW50KHNjcm9sbE9mZnNldEZvckZpeGVkKSk7CiAgICAgICAgICAg
ICAgICAgaWYgKGluc2V0Q2xpcExheWVyKQpAQCAtMzA4LDcgKzMxMCw3IEBAIHZvaWQgQXN5bmNT
Y3JvbGxpbmdDb29yZGluYXRvcjo6dXBkYXRlU2Nyb2xsUG9zaXRpb25BZnRlckFzeW5jU2Nyb2xs
KFNjcm9sbGluZ05vCiAgICAgICAgICAgICAgICAgaWYgKGZvb3RlckxheWVyKQogICAgICAgICAg
ICAgICAgICAgICBmb290ZXJMYXllci0+c2V0UG9zaXRpb24ocG9zaXRpb25Gb3JGb290ZXJMYXll
cik7CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHNjcm9sbExheWVyLT5z
eW5jUG9zaXRpb24oLWZyYW1lVmlldy0+c2Nyb2xsUG9zaXRpb24oKSk7CisgICAgICAgICAgICAg
ICAgc2Nyb2xsTGF5ZXItPnN5bmNQb3NpdGlvbigtZnJhbWVWaWV3LnNjcm9sbFBvc2l0aW9uKCkp
OwogICAgICAgICAgICAgICAgIGlmIChjb3VudGVyU2Nyb2xsaW5nTGF5ZXIpCiAgICAgICAgICAg
ICAgICAgICAgIGNvdW50ZXJTY3JvbGxpbmdMYXllci0+c3luY1Bvc2l0aW9uKHRvTGF5b3V0UG9p
bnQoc2Nyb2xsT2Zmc2V0Rm9yRml4ZWQpKTsKICAgICAgICAgICAgICAgICBpZiAoaW5zZXRDbGlw
TGF5ZXIpCkBAIC0zMjIsNyArMzI0LDcgQEAgdm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9y
Ojp1cGRhdGVTY3JvbGxQb3NpdGlvbkFmdGVyQXN5bmNTY3JvbGwoU2Nyb2xsaW5nTm8KICAgICAg
ICAgICAgICAgICBpZiAoZm9vdGVyTGF5ZXIpCiAgICAgICAgICAgICAgICAgICAgIGZvb3Rlckxh
eWVyLT5zeW5jUG9zaXRpb24ocG9zaXRpb25Gb3JGb290ZXJMYXllcik7CiAKLSAgICAgICAgICAg
ICAgICBMYXlvdXRSZWN0IHZpZXdwb3J0UmVjdCA9IGZyYW1lVmlldy0+dmlld3BvcnRDb25zdHJh
aW5lZFZpc2libGVDb250ZW50UmVjdCgpOworICAgICAgICAgICAgICAgIExheW91dFJlY3Qgdmll
d3BvcnRSZWN0ID0gZnJhbWVWaWV3LnZpZXdwb3J0Q29uc3RyYWluZWRWaXNpYmxlQ29udGVudFJl
Y3QoKTsKICAgICAgICAgICAgICAgICBzeW5jQ2hpbGRQb3NpdGlvbnModmlld3BvcnRSZWN0KTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMzMxLDcgKzMzMyw3IEBAIHZvaWQgQXN5bmNT
Y3JvbGxpbmdDb29yZGluYXRvcjo6dXBkYXRlU2Nyb2xsUG9zaXRpb25BZnRlckFzeW5jU2Nyb2xs
KFNjcm9sbGluZ05vCiAgICAgfQogCiAgICAgLy8gT3ZlcmZsb3ctc2Nyb2xsIGFyZWEuCi0gICAg
aWYgKFNjcm9sbGFibGVBcmVhKiBzY3JvbGxhYmxlQXJlYSA9IGZyYW1lVmlldy0+c2Nyb2xsYWJs
ZUFyZWFGb3JTY3JvbGxMYXllcklEKHNjcm9sbGluZ05vZGVJRCkpIHsKKyAgICBpZiAoU2Nyb2xs
YWJsZUFyZWEqIHNjcm9sbGFibGVBcmVhID0gZnJhbWVWaWV3LnNjcm9sbGFibGVBcmVhRm9yU2Ny
b2xsTGF5ZXJJRChzY3JvbGxpbmdOb2RlSUQpKSB7CiAgICAgICAgIHNjcm9sbGFibGVBcmVhLT5z
ZXRJc1VzZXJTY3JvbGwoc2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbiA9PSBTeW5jU2Nyb2xs
aW5nTGF5ZXJQb3NpdGlvbik7CiAgICAgICAgIHNjcm9sbGFibGVBcmVhLT5zY3JvbGxUb09mZnNl
dFdpdGhvdXRBbmltYXRpb24oc2Nyb2xsUG9zaXRpb24pOwogICAgICAgICBzY3JvbGxhYmxlQXJl
YS0+c2V0SXNVc2VyU2Nyb2xsKGZhbHNlKTsKQEAgLTM0MCwxOCArMzQyLDE4IEBAIHZvaWQgQXN5
bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6dXBkYXRlU2Nyb2xsUG9zaXRpb25BZnRlckFzeW5jU2Ny
b2xsKFNjcm9sbGluZ05vCiAgICAgfQogfQogCi12b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0
b3I6OnNjcm9sbGFibGVBcmVhU2Nyb2xsYmFyTGF5ZXJEaWRDaGFuZ2UoU2Nyb2xsYWJsZUFyZWEq
IHNjcm9sbGFibGVBcmVhLCBTY3JvbGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKK3ZvaWQg
QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6c2Nyb2xsYWJsZUFyZWFTY3JvbGxiYXJMYXllckRp
ZENoYW5nZShTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEsIFNjcm9sbGJhck9yaWVudGF0
aW9uIG9yaWVudGF0aW9uKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgQVNT
RVJUKG1fcGFnZSk7CiAKLSAgICBpZiAoc2Nyb2xsYWJsZUFyZWEgIT0gc3RhdGljX2Nhc3Q8U2Ny
b2xsYWJsZUFyZWEqPihtX3BhZ2UtPm1haW5GcmFtZSgpLnZpZXcoKSkpCisgICAgaWYgKCZzY3Jv
bGxhYmxlQXJlYSAhPSBzdGF0aWNfY2FzdDxTY3JvbGxhYmxlQXJlYSo+KG1fcGFnZS0+bWFpbkZy
YW1lKCkudmlldygpKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG9yaWVudGF0aW9uID09
IFZlcnRpY2FsU2Nyb2xsYmFyKQotICAgICAgICBzY3JvbGxhYmxlQXJlYS0+dmVydGljYWxTY3Jv
bGxiYXJMYXllckRpZENoYW5nZSgpOworICAgICAgICBzY3JvbGxhYmxlQXJlYS52ZXJ0aWNhbFNj
cm9sbGJhckxheWVyRGlkQ2hhbmdlKCk7CiAgICAgZWxzZQotICAgICAgICBzY3JvbGxhYmxlQXJl
YS0+aG9yaXpvbnRhbFNjcm9sbGJhckxheWVyRGlkQ2hhbmdlKCk7CisgICAgICAgIHNjcm9sbGFi
bGVBcmVhLmhvcml6b250YWxTY3JvbGxiYXJMYXllckRpZENoYW5nZSgpOwogfQogCiBTY3JvbGxp
bmdOb2RlSUQgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6YXR0YWNoVG9TdGF0ZVRyZWUoU2Ny
b2xsaW5nTm9kZVR5cGUgbm9kZVR5cGUsIFNjcm9sbGluZ05vZGVJRCBuZXdOb2RlSUQsIFNjcm9s
bGluZ05vZGVJRCBwYXJlbnRJRCkKQEAgLTM4MywxMCArMzg1LDEwIEBAIHZvaWQgQXN5bmNTY3Jv
bGxpbmdDb29yZGluYXRvcjo6c3luY0NoaWxkUG9zaXRpb25zKGNvbnN0IExheW91dFJlY3QmIHZp
ZXdwb3J0UmVjCiAgICAgICAgIGNoaWxkLT5zeW5jTGF5ZXJQb3NpdGlvbkZvclZpZXdwb3J0UmVj
dCh2aWV3cG9ydFJlY3QpOwogfQogCi12b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmVu
c3VyZVJvb3RTdGF0ZU5vZGVGb3JGcmFtZVZpZXcoRnJhbWVWaWV3KiBmcmFtZVZpZXcpCit2b2lk
IEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmVuc3VyZVJvb3RTdGF0ZU5vZGVGb3JGcmFtZVZp
ZXcoRnJhbWVWaWV3JiBmcmFtZVZpZXcpCiB7Ci0gICAgQVNTRVJUKGZyYW1lVmlldy0+c2Nyb2xs
TGF5ZXJJRCgpKTsKLSAgICBhdHRhY2hUb1N0YXRlVHJlZShGcmFtZVNjcm9sbGluZ05vZGUsIGZy
YW1lVmlldy0+c2Nyb2xsTGF5ZXJJRCgpLCAwKTsKKyAgICBBU1NFUlQoZnJhbWVWaWV3LnNjcm9s
bExheWVySUQoKSk7CisgICAgYXR0YWNoVG9TdGF0ZVRyZWUoRnJhbWVTY3JvbGxpbmdOb2RlLCBm
cmFtZVZpZXcuc2Nyb2xsTGF5ZXJJRCgpLCAwKTsKIH0KIAogdm9pZCBBc3luY1Njcm9sbGluZ0Nv
b3JkaW5hdG9yOjp1cGRhdGVGcmFtZVNjcm9sbGluZ05vZGUoU2Nyb2xsaW5nTm9kZUlEIG5vZGVJ
RCwgR3JhcGhpY3NMYXllciogbGF5ZXIsIEdyYXBoaWNzTGF5ZXIqIHNjcm9sbGVkQ29udGVudHNM
YXllciwgR3JhcGhpY3NMYXllciogY291bnRlclNjcm9sbGluZ0xheWVyLCBHcmFwaGljc0xheWVy
KiBpbnNldENsaXBMYXllciwgY29uc3QgU2Nyb2xsaW5nR2VvbWV0cnkqIHNjcm9sbGluZ0dlb21l
dHJ5KQpAQCAtNDgxLDEzICs0ODMsMTMgQEAgdm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9y
Ojp1cGRhdGVNYWluRnJhbWVTY3JvbGxMYXllclBvc2l0aW9uKCkKICAgICBpZiAoIWZyYW1lVmll
dykKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKEdyYXBoaWNzTGF5ZXIqIHNjcm9sbExheWVy
ID0gc2Nyb2xsTGF5ZXJGb3JGcmFtZVZpZXcoZnJhbWVWaWV3KSkKKyAgICBpZiAoR3JhcGhpY3NM
YXllciogc2Nyb2xsTGF5ZXIgPSBzY3JvbGxMYXllckZvckZyYW1lVmlldygqZnJhbWVWaWV3KSkK
ICAgICAgICAgc2Nyb2xsTGF5ZXItPnNldFBvc2l0aW9uKC1mcmFtZVZpZXctPnNjcm9sbFBvc2l0
aW9uKCkpOwogfQogCi12b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnJlY29tcHV0ZVdo
ZWVsRXZlbnRIYW5kbGVyQ291bnRGb3JGcmFtZVZpZXcoRnJhbWVWaWV3KiBmcmFtZVZpZXcpCit2
b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnJlY29tcHV0ZVdoZWVsRXZlbnRIYW5kbGVy
Q291bnRGb3JGcmFtZVZpZXcoRnJhbWVWaWV3JiBmcmFtZVZpZXcpCiB7Ci0gICAgU2Nyb2xsaW5n
U3RhdGVGcmFtZVNjcm9sbGluZ05vZGUqIG5vZGUgPSBkb3duY2FzdDxTY3JvbGxpbmdTdGF0ZUZy
YW1lU2Nyb2xsaW5nTm9kZT4obV9zY3JvbGxpbmdTdGF0ZVRyZWUtPnN0YXRlTm9kZUZvcklEKGZy
YW1lVmlldy0+c2Nyb2xsTGF5ZXJJRCgpKSk7CisgICAgU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9s
bGluZ05vZGUqIG5vZGUgPSBkb3duY2FzdDxTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9k
ZT4obV9zY3JvbGxpbmdTdGF0ZVRyZWUtPnN0YXRlTm9kZUZvcklEKGZyYW1lVmlldy5zY3JvbGxM
YXllcklEKCkpKTsKICAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVybjsKICAgICBub2RlLT5z
ZXRXaGVlbEV2ZW50SGFuZGxlckNvdW50KGNvbXB1dGVDdXJyZW50V2hlZWxFdmVudEhhbmRsZXJD
b3VudCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5j
U2Nyb2xsaW5nQ29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0Fz
eW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaAppbmRleCBlM2EyOTM0NDczMWE0MTIyZmU4MTE2ZjIx
ZmVkNjNkNjZjNzBjYTA0Li5mM2ViYWE0MzE5YWQ2YjY4Y2Q0M2FhNWRkOTgxNTdhODE5Y2NlYzNk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGlu
Z0Nvb3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNT
Y3JvbGxpbmdDb29yZGluYXRvci5oCkBAIC03MywxMyArNzMsMTMgQEAgcHJpdmF0ZToKICAgICB2
aXJ0dWFsIGJvb2wgaXNBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRml4ZWRQb3NpdGlv
bkxheWVycygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGJv
b2wgaGFzVmlzaWJsZVNsb3dSZXBhaW50Vmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHMoRnJhbWVW
aWV3KikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wg
aGFzVmlzaWJsZVNsb3dSZXBhaW50Vmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHMoY29uc3QgRnJh
bWVWaWV3JikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIFdFQkNPUkVf
RVhQT1JUIHZpcnR1YWwgdm9pZCBmcmFtZVZpZXdMYXlvdXRVcGRhdGVkKEZyYW1lVmlldyopIG92
ZXJyaWRlOwotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBmcmFtZVZpZXdSb290TGF5
ZXJEaWRDaGFuZ2UoRnJhbWVWaWV3Kikgb3ZlcnJpZGU7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdmly
dHVhbCB2b2lkIGZyYW1lVmlld05vbkZhc3RTY3JvbGxhYmxlUmVnaW9uQ2hhbmdlZChGcmFtZVZp
ZXcqKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZnJhbWVWaWV3
TGF5b3V0VXBkYXRlZChGcmFtZVZpZXcmKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
aXJ0dWFsIHZvaWQgZnJhbWVWaWV3Um9vdExheWVyRGlkQ2hhbmdlKEZyYW1lVmlldyYpIG92ZXJy
aWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBmcmFtZVZpZXdOb25GYXN0U2Ny
b2xsYWJsZVJlZ2lvbkNoYW5nZWQoRnJhbWVWaWV3Jikgb3ZlcnJpZGU7CiAKLSAgICBXRUJDT1JF
X0VYUE9SVCB2aXJ0dWFsIGJvb2wgcmVxdWVzdFNjcm9sbFBvc2l0aW9uVXBkYXRlKEZyYW1lVmll
dyosIGNvbnN0IEludFBvaW50Jikgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVh
bCBib29sIHJlcXVlc3RTY3JvbGxQb3NpdGlvblVwZGF0ZShGcmFtZVZpZXcmLCBjb25zdCBJbnRQ
b2ludCYpIG92ZXJyaWRlOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBTY3JvbGxpbmdO
b2RlSUQgYXR0YWNoVG9TdGF0ZVRyZWUoU2Nyb2xsaW5nTm9kZVR5cGUsIFNjcm9sbGluZ05vZGVJ
RCBuZXdOb2RlSUQsIFNjcm9sbGluZ05vZGVJRCBwYXJlbnRJRCkgb3ZlcnJpZGU7CiAgICAgV0VC
Q09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGRldGFjaEZyb21TdGF0ZVRyZWUoU2Nyb2xsaW5nTm9k
ZUlEKSBvdmVycmlkZTsKQEAgLTk0LDE0ICs5NCwxNCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwg
dm9pZCBzZXRTY3JvbGxQaW5uaW5nQmVoYXZpb3IoU2Nyb2xsUGlubmluZ0JlaGF2aW9yKSBvdmVy
cmlkZTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBzeW5jQ2hpbGRQb3NpdGlv
bnMoY29uc3QgTGF5b3V0UmVjdCYgdmlld3BvcnRSZWN0KSBvdmVycmlkZTsKLSAgICBXRUJDT1JF
X0VYUE9SVCB2aXJ0dWFsIHZvaWQgc2Nyb2xsYWJsZUFyZWFTY3JvbGxiYXJMYXllckRpZENoYW5n
ZShTY3JvbGxhYmxlQXJlYSosIFNjcm9sbGJhck9yaWVudGF0aW9uKSBvdmVycmlkZTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgc2Nyb2xsYWJsZUFyZWFTY3JvbGxiYXJMYXllckRp
ZENoYW5nZShTY3JvbGxhYmxlQXJlYSYsIFNjcm9sbGJhck9yaWVudGF0aW9uKSBvdmVycmlkZTsK
IAotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCByZWNvbXB1dGVXaGVlbEV2ZW50SGFu
ZGxlckNvdW50Rm9yRnJhbWVWaWV3KEZyYW1lVmlldyopIG92ZXJyaWRlOworICAgIFdFQkNPUkVf
RVhQT1JUIHZpcnR1YWwgdm9pZCByZWNvbXB1dGVXaGVlbEV2ZW50SGFuZGxlckNvdW50Rm9yRnJh
bWVWaWV3KEZyYW1lVmlldyYpIG92ZXJyaWRlOwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwg
dm9pZCBzZXRTeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMoU3luY2hyb25vdXNTY3JvbGxpbmdS
ZWFzb25zKSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZVRyZWVTdGF0ZUNv
bW1pdCgpID0gMDsKIAotICAgIHZvaWQgZW5zdXJlUm9vdFN0YXRlTm9kZUZvckZyYW1lVmlldyhG
cmFtZVZpZXcqKTsKKyAgICB2b2lkIGVuc3VyZVJvb3RTdGF0ZU5vZGVGb3JGcmFtZVZpZXcoRnJh
bWVWaWV3Jik7CiAgICAgdm9pZCB1cGRhdGVNYWluRnJhbWVTY3JvbGxMYXllclBvc2l0aW9uKCk7
CiAKICAgICB2b2lkIHVwZGF0ZVNjcm9sbFBvc2l0aW9uQWZ0ZXJBc3luY1Njcm9sbFRpbWVyRmly
ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z0Nvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z0Nvb3JkaW5hdG9yLmNwcAppbmRleCBiZDNjZWEzMzc5MTFjYjhlZDgzYzE1OTIxNTRlNzEyZTNj
MThlYjdlLi5iMDg3YWQ3Y2RkY2VmZGZmYTY4NjAxZWU4NWNhZWNjODA3M2Q2YTQzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0
b3IuY3BwCkBAIC03OSwxNSArNzksMTUgQEAgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6On5TY3JvbGxp
bmdDb29yZGluYXRvcigpCiB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpwYWdlRGVzdHJveWVk
KCkKIHsKICAgICBBU1NFUlQobV9wYWdlKTsKLSAgICBtX3BhZ2UgPSAwOworICAgIG1fcGFnZSA9
IG51bGxwdHI7CiB9CiAKLWJvb2wgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmNvb3JkaW5hdGVzU2Ny
b2xsaW5nRm9yRnJhbWVWaWV3KEZyYW1lVmlldyogZnJhbWVWaWV3KSBjb25zdAorYm9vbCBTY3Jv
bGxpbmdDb29yZGluYXRvcjo6Y29vcmRpbmF0ZXNTY3JvbGxpbmdGb3JGcmFtZVZpZXcoY29uc3Qg
RnJhbWVWaWV3JiBmcmFtZVZpZXcpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKICAgICBBU1NFUlQobV9wYWdlKTsKIAotICAgIGlmICghZnJhbWVWaWV3LT5mcmFtZSgpLmlz
TWFpbkZyYW1lKCkgJiYgIW1fcGFnZS0+c2V0dGluZ3MoKS5zY3JvbGxpbmdUcmVlSW5jbHVkZXNG
cmFtZXMoKSkKKyAgICBpZiAoIWZyYW1lVmlldy5mcmFtZSgpLmlzTWFpbkZyYW1lKCkgJiYgIW1f
cGFnZS0+c2V0dGluZ3MoKS5zY3JvbGxpbmdUcmVlSW5jbHVkZXNGcmFtZXMoKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgUmVuZGVyVmlldyogcmVuZGVyVmlldyA9IG1fcGFnZS0+bWFp
bkZyYW1lKCkuY29udGVudFJlbmRlcmVyKCk7CkBAIC05Niw3ICs5Niw3IEBAIGJvb2wgU2Nyb2xs
aW5nQ29vcmRpbmF0b3I6OmNvb3JkaW5hdGVzU2Nyb2xsaW5nRm9yRnJhbWVWaWV3KEZyYW1lVmll
dyogZnJhbWVWaWV3CiAgICAgcmV0dXJuIHJlbmRlclZpZXctPnVzZXNDb21wb3NpdGluZygpOwog
fQogCi1SZWdpb24gU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmNvbXB1dGVOb25GYXN0U2Nyb2xsYWJs
ZVJlZ2lvbihjb25zdCBGcmFtZSogZnJhbWUsIGNvbnN0IEludFBvaW50JiBmcmFtZUxvY2F0aW9u
KSBjb25zdAorUmVnaW9uIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpjb21wdXRlTm9uRmFzdFNjcm9s
bGFibGVSZWdpb24oY29uc3QgRnJhbWUmIGZyYW1lLCBjb25zdCBJbnRQb2ludCYgZnJhbWVMb2Nh
dGlvbikgY29uc3QKIHsKICNpZiBFTkFCTEUoSU9TX1RPVUNIX0VWRU5UUykKICAgICAvLyBPbiBp
T1MsIHdlIHVzZSBub25GYXN0U2Nyb2xsYWJsZVJlZ2lvbiB0byByZXByZXNlbnQgdGhlIHJlZ2lv
biBjb3ZlcmVkIGJ5IGVsZW1lbnRzIHdpdGggdG91Y2ggZXZlbnQgaGFuZGxlcnMuCkBAIC0xMTcs
NyArMTE3LDcgQEAgUmVnaW9uIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpjb21wdXRlTm9uRmFzdFNj
cm9sbGFibGVSZWdpb24oY29uc3QgRnJhbWUqIGZyYW1lLAogICAgIHJldHVybiB0b3VjaFJlZ2lv
bjsKICNlbHNlCiAgICAgUmVnaW9uIG5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uOwotICAgIEZyYW1l
VmlldyogZnJhbWVWaWV3ID0gZnJhbWUtPnZpZXcoKTsKKyAgICBGcmFtZVZpZXcqIGZyYW1lVmll
dyA9IGZyYW1lLnZpZXcoKTsKICAgICBpZiAoIWZyYW1lVmlldykKICAgICAgICAgcmV0dXJuIG5v
bkZhc3RTY3JvbGxhYmxlUmVnaW9uOwogCkBAIC0xNDUsOCArMTQ1LDggQEAgUmVnaW9uIFNjcm9s
bGluZ0Nvb3JkaW5hdG9yOjpjb21wdXRlTm9uRmFzdFNjcm9sbGFibGVSZWdpb24oY29uc3QgRnJh
bWUqIGZyYW1lLAogICAgICAgICAgICAgbm9uRmFzdFNjcm9sbGFibGVSZWdpb24udW5pdGUocGx1
Z2luVmlld0Jhc2UuZnJhbWVSZWN0KCkpOwogICAgIH0KIAotICAgIGZvciAoRnJhbWUqIHN1YmZy
YW1lID0gZnJhbWUtPnRyZWUoKS5maXJzdENoaWxkKCk7IHN1YmZyYW1lOyBzdWJmcmFtZSA9IHN1
YmZyYW1lLT50cmVlKCkubmV4dFNpYmxpbmcoKSkKLSAgICAgICAgbm9uRmFzdFNjcm9sbGFibGVS
ZWdpb24udW5pdGUoY29tcHV0ZU5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uKHN1YmZyYW1lLCBvZmZz
ZXQpKTsKKyAgICBmb3IgKEZyYW1lKiBzdWJmcmFtZSA9IGZyYW1lLnRyZWUoKS5maXJzdENoaWxk
KCk7IHN1YmZyYW1lOyBzdWJmcmFtZSA9IHN1YmZyYW1lLT50cmVlKCkubmV4dFNpYmxpbmcoKSkK
KyAgICAgICAgbm9uRmFzdFNjcm9sbGFibGVSZWdpb24udW5pdGUoY29tcHV0ZU5vbkZhc3RTY3Jv
bGxhYmxlUmVnaW9uKCpzdWJmcmFtZSwgb2Zmc2V0KSk7CiAKICAgICByZXR1cm4gbm9uRmFzdFNj
cm9sbGFibGVSZWdpb247CiAjZW5kaWYKQEAgLTE2NCw3ICsxNjQsNyBAQCB1bnNpZ25lZCBTY3Jv
bGxpbmdDb29yZGluYXRvcjo6Y29tcHV0ZUN1cnJlbnRXaGVlbEV2ZW50SGFuZGxlckNvdW50KCkK
ICAgICByZXR1cm4gd2hlZWxFdmVudEhhbmRsZXJDb3VudDsKIH0KIAotdm9pZCBTY3JvbGxpbmdD
b29yZGluYXRvcjo6ZnJhbWVWaWV3V2hlZWxFdmVudEhhbmRsZXJDb3VudENoYW5nZWQoRnJhbWVW
aWV3KiBmcmFtZVZpZXcpCit2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpmcmFtZVZpZXdXaGVl
bEV2ZW50SGFuZGxlckNvdW50Q2hhbmdlZChGcmFtZVZpZXcmIGZyYW1lVmlldykKIHsKICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VSVChtX3BhZ2UpOwpAQCAtMTcyLDcgKzE3
Miw3IEBAIHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZyYW1lVmlld1doZWVsRXZlbnRIYW5k
bGVyQ291bnRDaGFuZ2VkKEZyYW1lVmlldyogZnJhCiAgICAgcmVjb21wdXRlV2hlZWxFdmVudEhh
bmRsZXJDb3VudEZvckZyYW1lVmlldyhmcmFtZVZpZXcpOwogfQogCi12b2lkIFNjcm9sbGluZ0Nv
b3JkaW5hdG9yOjpmcmFtZVZpZXdIYXNTbG93UmVwYWludE9iamVjdHNEaWRDaGFuZ2UoRnJhbWVW
aWV3KiBmcmFtZVZpZXcpCit2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpmcmFtZVZpZXdIYXNT
bG93UmVwYWludE9iamVjdHNEaWRDaGFuZ2UoRnJhbWVWaWV3JiBmcmFtZVZpZXcpCiB7CiAgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlQobV9wYWdlKTsKQEAgLTE4Myw3ICsx
ODMsNyBAQCB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpmcmFtZVZpZXdIYXNTbG93UmVwYWlu
dE9iamVjdHNEaWRDaGFuZ2UoRnJhbWVWaWV3KiBmcgogICAgIHVwZGF0ZVN5bmNocm9ub3VzU2Ny
b2xsaW5nUmVhc29ucyhmcmFtZVZpZXcpOwogfQogCi12b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9y
OjpmcmFtZVZpZXdGaXhlZE9iamVjdHNEaWRDaGFuZ2UoRnJhbWVWaWV3KiBmcmFtZVZpZXcpCit2
b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpmcmFtZVZpZXdGaXhlZE9iamVjdHNEaWRDaGFuZ2Uo
RnJhbWVWaWV3JiBmcmFtZVZpZXcpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAg
ICBBU1NFUlQobV9wYWdlKTsKQEAgLTE5NCwyMiArMTk0LDIyIEBAIHZvaWQgU2Nyb2xsaW5nQ29v
cmRpbmF0b3I6OmZyYW1lVmlld0ZpeGVkT2JqZWN0c0RpZENoYW5nZShGcmFtZVZpZXcqIGZyYW1l
VmlldykKICAgICB1cGRhdGVTeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMoZnJhbWVWaWV3KTsK
IH0KIAotR3JhcGhpY3NMYXllciogU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNjcm9sbExheWVyRm9y
U2Nyb2xsYWJsZUFyZWEoU2Nyb2xsYWJsZUFyZWEqIHNjcm9sbGFibGVBcmVhKQorR3JhcGhpY3NM
YXllciogU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNjcm9sbExheWVyRm9yU2Nyb2xsYWJsZUFyZWEo
U2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFibGVBcmVhKQogewotICAgIHJldHVybiBzY3JvbGxhYmxl
QXJlYS0+bGF5ZXJGb3JTY3JvbGxpbmcoKTsKKyAgICByZXR1cm4gc2Nyb2xsYWJsZUFyZWEubGF5
ZXJGb3JTY3JvbGxpbmcoKTsKIH0KIAotR3JhcGhpY3NMYXllciogU2Nyb2xsaW5nQ29vcmRpbmF0
b3I6OnNjcm9sbExheWVyRm9yRnJhbWVWaWV3KEZyYW1lVmlldyogZnJhbWVWaWV3KQorR3JhcGhp
Y3NMYXllciogU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNjcm9sbExheWVyRm9yRnJhbWVWaWV3KEZy
YW1lVmlldyYgZnJhbWVWaWV3KQogewotICAgIGlmIChSZW5kZXJWaWV3KiByZW5kZXJWaWV3ID0g
ZnJhbWVWaWV3LT5mcmFtZSgpLmNvbnRlbnRSZW5kZXJlcigpKQorICAgIGlmIChSZW5kZXJWaWV3
KiByZW5kZXJWaWV3ID0gZnJhbWVWaWV3LmZyYW1lKCkuY29udGVudFJlbmRlcmVyKCkpCiAgICAg
ICAgIHJldHVybiByZW5kZXJWaWV3LT5jb21wb3NpdG9yKCkuc2Nyb2xsTGF5ZXIoKTsKICAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KIAotR3JhcGhpY3NMYXllciogU2Nyb2xsaW5nQ29vcmRpbmF0b3I6
OmhlYWRlckxheWVyRm9yRnJhbWVWaWV3KEZyYW1lVmlldyogZnJhbWVWaWV3KQorR3JhcGhpY3NM
YXllciogU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmhlYWRlckxheWVyRm9yRnJhbWVWaWV3KEZyYW1l
VmlldyYgZnJhbWVWaWV3KQogewogI2lmIEVOQUJMRShSVUJCRVJfQkFORElORykKLSAgICBpZiAo
UmVuZGVyVmlldyogcmVuZGVyVmlldyA9IGZyYW1lVmlldy0+ZnJhbWUoKS5jb250ZW50UmVuZGVy
ZXIoKSkKKyAgICBpZiAoUmVuZGVyVmlldyogcmVuZGVyVmlldyA9IGZyYW1lVmlldy5mcmFtZSgp
LmNvbnRlbnRSZW5kZXJlcigpKQogICAgICAgICByZXR1cm4gcmVuZGVyVmlldy0+Y29tcG9zaXRv
cigpLmhlYWRlckxheWVyKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiAjZWxzZQpAQCAtMjE4LDEw
ICsyMTgsMTAgQEAgR3JhcGhpY3NMYXllciogU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmhlYWRlckxh
eWVyRm9yRnJhbWVWaWV3KEZyYW1lVmlldyogZnJhbWVWaWUKICNlbmRpZgogfQogCi1HcmFwaGlj
c0xheWVyKiBTY3JvbGxpbmdDb29yZGluYXRvcjo6Zm9vdGVyTGF5ZXJGb3JGcmFtZVZpZXcoRnJh
bWVWaWV3KiBmcmFtZVZpZXcpCitHcmFwaGljc0xheWVyKiBTY3JvbGxpbmdDb29yZGluYXRvcjo6
Zm9vdGVyTGF5ZXJGb3JGcmFtZVZpZXcoRnJhbWVWaWV3JiBmcmFtZVZpZXcpCiB7CiAjaWYgRU5B
QkxFKFJVQkJFUl9CQU5ESU5HKQotICAgIGlmIChSZW5kZXJWaWV3KiByZW5kZXJWaWV3ID0gZnJh
bWVWaWV3LT5mcmFtZSgpLmNvbnRlbnRSZW5kZXJlcigpKQorICAgIGlmIChSZW5kZXJWaWV3KiBy
ZW5kZXJWaWV3ID0gZnJhbWVWaWV3LmZyYW1lKCkuY29udGVudFJlbmRlcmVyKCkpCiAgICAgICAg
IHJldHVybiByZW5kZXJWaWV3LT5jb21wb3NpdG9yKCkuZm9vdGVyTGF5ZXIoKTsKICAgICByZXR1
cm4gbnVsbHB0cjsKICNlbHNlCkBAIC0yMzAsMjQgKzIzMCwyNCBAQCBHcmFwaGljc0xheWVyKiBT
Y3JvbGxpbmdDb29yZGluYXRvcjo6Zm9vdGVyTGF5ZXJGb3JGcmFtZVZpZXcoRnJhbWVWaWV3KiBm
cmFtZVZpZQogI2VuZGlmCiB9CiAKLUdyYXBoaWNzTGF5ZXIqIFNjcm9sbGluZ0Nvb3JkaW5hdG9y
Ojpjb3VudGVyU2Nyb2xsaW5nTGF5ZXJGb3JGcmFtZVZpZXcoRnJhbWVWaWV3KiBmcmFtZVZpZXcp
CitHcmFwaGljc0xheWVyKiBTY3JvbGxpbmdDb29yZGluYXRvcjo6Y291bnRlclNjcm9sbGluZ0xh
eWVyRm9yRnJhbWVWaWV3KEZyYW1lVmlldyYgZnJhbWVWaWV3KQogewotICAgIGlmIChSZW5kZXJW
aWV3KiByZW5kZXJWaWV3ID0gZnJhbWVWaWV3LT5mcmFtZSgpLmNvbnRlbnRSZW5kZXJlcigpKQor
ICAgIGlmIChSZW5kZXJWaWV3KiByZW5kZXJWaWV3ID0gZnJhbWVWaWV3LmZyYW1lKCkuY29udGVu
dFJlbmRlcmVyKCkpCiAgICAgICAgIHJldHVybiByZW5kZXJWaWV3LT5jb21wb3NpdG9yKCkuZml4
ZWRSb290QmFja2dyb3VuZExheWVyKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUdyYXBo
aWNzTGF5ZXIqIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjppbnNldENsaXBMYXllckZvckZyYW1lVmll
dyhGcmFtZVZpZXcqIGZyYW1lVmlldykKK0dyYXBoaWNzTGF5ZXIqIFNjcm9sbGluZ0Nvb3JkaW5h
dG9yOjppbnNldENsaXBMYXllckZvckZyYW1lVmlldyhGcmFtZVZpZXcmIGZyYW1lVmlldykKIHsK
LSAgICBpZiAoUmVuZGVyVmlldyogcmVuZGVyVmlldyA9IGZyYW1lVmlldy0+ZnJhbWUoKS5jb250
ZW50UmVuZGVyZXIoKSkKKyAgICBpZiAoUmVuZGVyVmlldyogcmVuZGVyVmlldyA9IGZyYW1lVmll
dy5mcmFtZSgpLmNvbnRlbnRSZW5kZXJlcigpKQogICAgICAgICByZXR1cm4gcmVuZGVyVmlldy0+
Y29tcG9zaXRvcigpLmNsaXBMYXllcigpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCi1HcmFw
aGljc0xheWVyKiBTY3JvbGxpbmdDb29yZGluYXRvcjo6Y29udGVudFNoYWRvd0xheWVyRm9yRnJh
bWVWaWV3KEZyYW1lVmlldyogZnJhbWVWaWV3KQorR3JhcGhpY3NMYXllciogU2Nyb2xsaW5nQ29v
cmRpbmF0b3I6OmNvbnRlbnRTaGFkb3dMYXllckZvckZyYW1lVmlldyhGcmFtZVZpZXcmIGZyYW1l
VmlldykKIHsKICNpZiBFTkFCTEUoUlVCQkVSX0JBTkRJTkcpCi0gICAgaWYgKFJlbmRlclZpZXcq
IHJlbmRlclZpZXcgPSBmcmFtZVZpZXctPmZyYW1lKCkuY29udGVudFJlbmRlcmVyKCkpCisgICAg
aWYgKFJlbmRlclZpZXcqIHJlbmRlclZpZXcgPSBmcmFtZVZpZXcuZnJhbWUoKS5jb250ZW50UmVu
ZGVyZXIoKSkKICAgICAgICAgcmV0dXJuIHJlbmRlclZpZXctPmNvbXBvc2l0b3IoKS5sYXllckZv
ckNvbnRlbnRTaGFkb3coKTsKICAgICAKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTI1NywxNCAr
MjU3LDE0IEBAIEdyYXBoaWNzTGF5ZXIqIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpjb250ZW50U2hh
ZG93TGF5ZXJGb3JGcmFtZVZpZXcoRnJhbWVWaWV3KiBmCiAjZW5kaWYKIH0KIAotR3JhcGhpY3NM
YXllciogU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnJvb3RDb250ZW50TGF5ZXJGb3JGcmFtZVZpZXco
RnJhbWVWaWV3KiBmcmFtZVZpZXcpCitHcmFwaGljc0xheWVyKiBTY3JvbGxpbmdDb29yZGluYXRv
cjo6cm9vdENvbnRlbnRMYXllckZvckZyYW1lVmlldyhGcmFtZVZpZXcmIGZyYW1lVmlldykKIHsK
LSAgICBpZiAoUmVuZGVyVmlldyogcmVuZGVyVmlldyA9IGZyYW1lVmlldy0+ZnJhbWUoKS5jb250
ZW50UmVuZGVyZXIoKSkKKyAgICBpZiAoUmVuZGVyVmlldyogcmVuZGVyVmlldyA9IGZyYW1lVmll
dy5mcmFtZSgpLmNvbnRlbnRSZW5kZXJlcigpKQogICAgICAgICByZXR1cm4gcmVuZGVyVmlldy0+
Y29tcG9zaXRvcigpLnJvb3RDb250ZW50TGF5ZXIoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0K
IAotdm9pZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6ZnJhbWVWaWV3Um9vdExheWVyRGlkQ2hhbmdl
KEZyYW1lVmlldyogZnJhbWVWaWV3KQordm9pZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6ZnJhbWVW
aWV3Um9vdExheWVyRGlkQ2hhbmdlKEZyYW1lVmlldyYgZnJhbWVWaWV3KQogewogICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKG1fcGFnZSk7CkBAIC0yOTMsOSArMjkzLDkg
QEAgdm9pZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6aGFuZGxlV2hlZWxFdmVudFBoYXNlKFBsYXRm
b3JtV2hlZWxFdmVudFBoYXNlIHBoYXNlKQogfQogI2VuZGlmCiAKLWJvb2wgU2Nyb2xsaW5nQ29v
cmRpbmF0b3I6Omhhc1Zpc2libGVTbG93UmVwYWludFZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3Rz
KEZyYW1lVmlldyogZnJhbWVWaWV3KSBjb25zdAorYm9vbCBTY3JvbGxpbmdDb29yZGluYXRvcjo6
aGFzVmlzaWJsZVNsb3dSZXBhaW50Vmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHMoY29uc3QgRnJh
bWVWaWV3JiBmcmFtZVZpZXcpIGNvbnN0CiB7Ci0gICAgY29uc3QgRnJhbWVWaWV3OjpWaWV3cG9y
dENvbnN0cmFpbmVkT2JqZWN0U2V0KiB2aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0cyA9IGZyYW1l
Vmlldy0+dmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHMoKTsKKyAgICBjb25zdCBGcmFtZVZpZXc6
OlZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RTZXQqIHZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3Rz
ID0gZnJhbWVWaWV3LnZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RzKCk7CiAgICAgaWYgKCF2aWV3
cG9ydENvbnN0cmFpbmVkT2JqZWN0cykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0zMTEs
MTEgKzMxMSw4IEBAIGJvb2wgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6Omhhc1Zpc2libGVTbG93UmVw
YWludFZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RzKEZyYW1lCiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCi1TeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnN5
bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucyhGcmFtZVZpZXcqIGZyYW1lVmlldykgY29uc3QKK1N5
bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucyBTY3JvbGxpbmdDb29yZGluYXRvcjo6c3luY2hyb25v
dXNTY3JvbGxpbmdSZWFzb25zKGNvbnN0IEZyYW1lVmlldyYgZnJhbWVWaWV3KSBjb25zdAogewot
ICAgIGlmICghZnJhbWVWaWV3KQotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U3luY2hyb25v
dXNTY3JvbGxpbmdSZWFzb25zPigwKTsKLQogICAgIFN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29u
cyBzeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMgPSAoU3luY2hyb25vdXNTY3JvbGxpbmdSZWFz
b25zKTA7CiAKICAgICBpZiAobV9mb3JjZVN5bmNocm9ub3VzU2Nyb2xsTGF5ZXJQb3NpdGlvblVw
ZGF0ZXMpCkBAIC0zMjUsMjMgKzMyMiwyMyBAQCBTeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMg
U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucyhGcgogICAg
IGlmIChjdXJzb3IuaXNDYXB0dXJpbmcoKSB8fCBjdXJzb3IuaXNSZXBsYXlpbmcoKSkKICAgICAg
ICAgc3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zIHw9IEZvcmNlZE9uTWFpblRocmVhZDsKICNl
bmRpZgotICAgIGlmIChmcmFtZVZpZXctPmhhc1Nsb3dSZXBhaW50T2JqZWN0cygpKQorICAgIGlm
IChmcmFtZVZpZXcuaGFzU2xvd1JlcGFpbnRPYmplY3RzKCkpCiAgICAgICAgIHN5bmNocm9ub3Vz
U2Nyb2xsaW5nUmVhc29ucyB8PSBIYXNTbG93UmVwYWludE9iamVjdHM7Ci0gICAgaWYgKCFzdXBw
b3J0c0ZpeGVkUG9zaXRpb25MYXllcnMoKSAmJiBmcmFtZVZpZXctPmhhc1ZpZXdwb3J0Q29uc3Ry
YWluZWRPYmplY3RzKCkpCisgICAgaWYgKCFzdXBwb3J0c0ZpeGVkUG9zaXRpb25MYXllcnMoKSAm
JiBmcmFtZVZpZXcuaGFzVmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHMoKSkKICAgICAgICAgc3lu
Y2hyb25vdXNTY3JvbGxpbmdSZWFzb25zIHw9IEhhc1ZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3Rz
V2l0aG91dFN1cHBvcnRpbmdGaXhlZExheWVyczsKICAgICBpZiAoc3VwcG9ydHNGaXhlZFBvc2l0
aW9uTGF5ZXJzKCkgJiYgaGFzVmlzaWJsZVNsb3dSZXBhaW50Vmlld3BvcnRDb25zdHJhaW5lZE9i
amVjdHMoZnJhbWVWaWV3KSkKICAgICAgICAgc3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zIHw9
IEhhc05vbkxheWVyVmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHM7Ci0gICAgaWYgKGZyYW1lVmll
dy0+ZnJhbWUoKS5tYWluRnJhbWUoKS5kb2N1bWVudCgpICYmIGZyYW1lVmlldy0+ZnJhbWUoKS5k
b2N1bWVudCgpLT5pc0ltYWdlRG9jdW1lbnQoKSkKKyAgICBpZiAoZnJhbWVWaWV3LmZyYW1lKCku
bWFpbkZyYW1lKCkuZG9jdW1lbnQoKSAmJiBmcmFtZVZpZXcuZnJhbWUoKS5kb2N1bWVudCgpLT5p
c0ltYWdlRG9jdW1lbnQoKSkKICAgICAgICAgc3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zIHw9
IElzSW1hZ2VEb2N1bWVudDsKIAogICAgIHJldHVybiBzeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNv
bnM7CiB9CiAKLXZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnVwZGF0ZVN5bmNocm9ub3VzU2Ny
b2xsaW5nUmVhc29ucyhGcmFtZVZpZXcqIGZyYW1lVmlldykKK3ZvaWQgU2Nyb2xsaW5nQ29vcmRp
bmF0b3I6OnVwZGF0ZVN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucyhGcmFtZVZpZXcmIGZyYW1l
VmlldykKIHsKICAgICAvLyBGSVhNRTogT25jZSB3ZSBzdXBwb3J0IGFzeW5jIHNjcm9sbGluZyBv
ZiBpZnJhbWVzLCB3ZSdsbCBoYXZlIHRvIHRyYWNrIHRoZSBzeW5jaHJvbm91cyBzY3JvbGxpbmcK
ICAgICAvLyByZWFzb25zIHBlciBmcmFtZSAobWF5YmUgb24gc2Nyb2xsaW5nIHRyZWUgbm9kZXMp
LgotICAgIGlmICghZnJhbWVWaWV3LT5mcmFtZSgpLmlzTWFpbkZyYW1lKCkpCisgICAgaWYgKCFm
cmFtZVZpZXcuZnJhbWUoKS5pc01haW5GcmFtZSgpKQogICAgICAgICByZXR1cm47CiAKICAgICBz
ZXRTeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMoc3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25z
KGZyYW1lVmlldykpOwpAQCAtMzUzLDE5ICszNTAsMjMgQEAgdm9pZCBTY3JvbGxpbmdDb29yZGlu
YXRvcjo6c2V0Rm9yY2VTeW5jaHJvbm91c1Njcm9sbExheWVyUG9zaXRpb25VcGRhdGVzKGJvb2wg
Zm8KICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9mb3JjZVN5bmNocm9ub3VzU2Nyb2xsTGF5ZXJQ
b3NpdGlvblVwZGF0ZXMgPSBmb3JjZVN5bmNocm9ub3VzU2Nyb2xsTGF5ZXJQb3NpdGlvblVwZGF0
ZXM7Ci0gICAgdXBkYXRlU3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zKG1fcGFnZS0+bWFpbkZy
YW1lKCkudmlldygpKTsKKyAgICBpZiAoRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBtX3BhZ2UtPm1h
aW5GcmFtZSgpLnZpZXcoKSkKKyAgICAgICAgdXBkYXRlU3luY2hyb25vdXNTY3JvbGxpbmdSZWFz
b25zKCpmcmFtZVZpZXcpOwogfQogCiBib29sIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzaG91bGRV
cGRhdGVTY3JvbGxMYXllclBvc2l0aW9uU3luY2hyb25vdXNseSgpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIHN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucyhtX3BhZ2UtPm1haW5GcmFtZSgpLnZpZXco
KSk7CisgICAgaWYgKEZyYW1lVmlldyogZnJhbWVWaWV3ID0gbV9wYWdlLT5tYWluRnJhbWUoKS52
aWV3KCkpCisgICAgICAgIHJldHVybiBzeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMoKmZyYW1l
Vmlldyk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKICNpZiBFTkFCTEUoV0VCX1JFUExBWSkKIHZv
aWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnJlcGxheVNlc3Npb25TdGF0ZURpZENoYW5nZSgpCiB7
CiAgICAgLy8gRklYTUU6IE9uY2Ugd2Ugc3VwcG9ydCBhc3luYyBzY3JvbGxpbmcgb2YgaWZyYW1l
cywgdGhpcyBzaG91bGQgZ28gdGhyb3VnaCBhbGwgc3ViZnJhbWVzLgotICAgIHVwZGF0ZVN5bmNo
cm9ub3VzU2Nyb2xsaW5nUmVhc29ucyhtX3BhZ2UtPm1haW5GcmFtZSgpLnZpZXcoKSk7CisgICAg
aWYgKEZyYW1lVmlldyogZnJhbWVWaWV3ID0gbV9wYWdlLT5tYWluRnJhbWUoKS52aWV3KCkpCisg
ICAgICAgIHVwZGF0ZVN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucygqZnJhbWVWaWV3KTsKIH0K
ICNlbmRpZgogCkBAIC00MDIsNyArNDAzLDEwIEBAIFN0cmluZyBTY3JvbGxpbmdDb29yZGluYXRv
cjo6c3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zQXNUZXh0KFN5bmNocm9ub3VzU2Nyb2xsCiAK
IFN0cmluZyBTY3JvbGxpbmdDb29yZGluYXRvcjo6c3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25z
QXNUZXh0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gc3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25z
QXNUZXh0KHN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucyhtX3BhZ2UtPm1haW5GcmFtZSgpLnZp
ZXcoKSkpOworICAgIGlmIChGcmFtZVZpZXcqIGZyYW1lVmlldyA9IG1fcGFnZS0+bWFpbkZyYW1l
KCkudmlldygpKQorICAgICAgICByZXR1cm4gc3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zQXNU
ZXh0KHN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucygqZnJhbWVWaWV3KSk7CisKKyAgICByZXR1
cm4gU3RyaW5nKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5oCmluZGV4IGMw
YzUyN2MxYzBjNGYxMWQ0MzgxMGQxYjg5YWM2M2U2ZDAyODRmOTQuLjk3N2Y5NjI3ZTk4MTFhZWZl
NDczM2VjZTllM2VkODQ3ZjNlNTVkZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaApAQCAtMTE1LDI2ICsxMTUsMjYgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yKCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIC8vIFJldHVybiB3aGV0aGVyIHRoaXMgc2Ny
b2xsaW5nIGNvb3JkaW5hdG9yIGhhbmRsZXMgc2Nyb2xsaW5nIGZvciB0aGUgZ2l2ZW4gZnJhbWUg
dmlldy4KLSAgICB2aXJ0dWFsIGJvb2wgY29vcmRpbmF0ZXNTY3JvbGxpbmdGb3JGcmFtZVZpZXco
RnJhbWVWaWV3KikgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGNvb3JkaW5hdGVzU2Nyb2xsaW5n
Rm9yRnJhbWVWaWV3KGNvbnN0IEZyYW1lVmlldyYpIGNvbnN0OwogCiAgICAgLy8gU2hvdWxkIGJl
IGNhbGxlZCB3aGVuZXZlciB0aGUgZ2l2ZW4gZnJhbWUgdmlldyBoYXMgYmVlbiBsYWlkIG91dC4K
LSAgICB2aXJ0dWFsIHZvaWQgZnJhbWVWaWV3TGF5b3V0VXBkYXRlZChGcmFtZVZpZXcqKSB7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgZnJhbWVWaWV3TGF5b3V0VXBkYXRlZChGcmFtZVZpZXcmKSB7IH0K
IAogICAgIC8vIFNob3VsZCBiZSBjYWxsZWQgd2hlbmV2ZXIgYSB3aGVlbCBldmVudCBoYW5kbGVy
IGlzIGFkZGVkIG9yIHJlbW92ZWQgaW4gdGhlIAogICAgIC8vIGZyYW1lIHZpZXcncyB1bmRlcmx5
aW5nIGRvY3VtZW50LgotICAgIHZvaWQgZnJhbWVWaWV3V2hlZWxFdmVudEhhbmRsZXJDb3VudENo
YW5nZWQoRnJhbWVWaWV3Kik7CisgICAgdm9pZCBmcmFtZVZpZXdXaGVlbEV2ZW50SGFuZGxlckNv
dW50Q2hhbmdlZChGcmFtZVZpZXcmKTsKIAogICAgIC8vIFNob3VsZCBiZSBjYWxsZWQgd2hlbmV2
ZXIgdGhlIHNsb3cgcmVwYWludCBvYmplY3RzIGNvdW50ZXIgY2hhbmdlcyBiZXR3ZWVuIHplcm8g
YW5kIG9uZS4KLSAgICB2b2lkIGZyYW1lVmlld0hhc1Nsb3dSZXBhaW50T2JqZWN0c0RpZENoYW5n
ZShGcmFtZVZpZXcqKTsKKyAgICB2b2lkIGZyYW1lVmlld0hhc1Nsb3dSZXBhaW50T2JqZWN0c0Rp
ZENoYW5nZShGcmFtZVZpZXcmKTsKIAogICAgIC8vIFNob3VsZCBiZSBjYWxsZWQgd2hlbmV2ZXIg
dGhlIHNldCBvZiBmaXhlZCBvYmplY3RzIGNoYW5nZXMuCi0gICAgdm9pZCBmcmFtZVZpZXdGaXhl
ZE9iamVjdHNEaWRDaGFuZ2UoRnJhbWVWaWV3Kik7CisgICAgdm9pZCBmcmFtZVZpZXdGaXhlZE9i
amVjdHNEaWRDaGFuZ2UoRnJhbWVWaWV3Jik7CiAKICAgICAvLyBDYWxsZWQgd2hlbmV2ZXIgdGhl
IG5vbi1mYXN0IHNjcm9sbGFibGUgcmVnaW9uIGNoYW5nZXMgZm9yIHJlYXNvbnMgb3RoZXIgdGhh
biBsYXlvdXQuCi0gICAgdmlydHVhbCB2b2lkIGZyYW1lVmlld05vbkZhc3RTY3JvbGxhYmxlUmVn
aW9uQ2hhbmdlZChGcmFtZVZpZXcqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZnJhbWVWaWV3Tm9u
RmFzdFNjcm9sbGFibGVSZWdpb25DaGFuZ2VkKEZyYW1lVmlldyYpIHsgfQogCiAgICAgLy8gU2hv
dWxkIGJlIGNhbGxlZCB3aGVuZXZlciB0aGUgcm9vdCBsYXllciBmb3IgdGhlIGdpdmVuIGZyYW1l
IHZpZXcgY2hhbmdlcy4KLSAgICB2aXJ0dWFsIHZvaWQgZnJhbWVWaWV3Um9vdExheWVyRGlkQ2hh
bmdlKEZyYW1lVmlldyopOworICAgIHZpcnR1YWwgdm9pZCBmcmFtZVZpZXdSb290TGF5ZXJEaWRD
aGFuZ2UoRnJhbWVWaWV3Jik7CiAKICAgICAvLyBSZXR1cm4gd2hldGhlciB0aGlzIHNjcm9sbGlu
ZyBjb29yZGluYXRvciBjYW4ga2VlcCBmaXhlZCBwb3NpdGlvbiBsYXllcnMgZml4ZWQgdG8gdGhl
aXIKICAgICAvLyBjb250YWluZXJzIHdoaWxlIHNjcm9sbGluZy4KQEAgLTE1Niw4ICsxNTYsOCBA
QCBwdWJsaWM6CiAgICAgLy8gVGhlc2UgdmlydHVhbCBmdW5jdGlvbnMgYXJlIGN1cnJlbnRseSB1
bmlxdWUgdG8gdGhlIHRocmVhZGVkIHNjcm9sbGluZyBhcmNoaXRlY3R1cmUuIAogICAgIC8vIFRo
ZWlyIG1lYW5pbmdmdWwgaW1wbGVtZW50YXRpb25zIGFyZSBpbiBTY3JvbGxpbmdDb29yZGluYXRv
ck1hYy4KICAgICB2aXJ0dWFsIHZvaWQgY29tbWl0VHJlZVN0YXRlSWZOZWVkZWQoKSB7IH0KLSAg
ICB2aXJ0dWFsIGJvb2wgcmVxdWVzdFNjcm9sbFBvc2l0aW9uVXBkYXRlKEZyYW1lVmlldyosIGNv
bnN0IEludFBvaW50JikgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaGFuZGxl
V2hlZWxFdmVudChGcmFtZVZpZXcqLCBjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmKSB7IHJldHVy
biB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIHJlcXVlc3RTY3JvbGxQb3NpdGlvblVwZGF0ZShG
cmFtZVZpZXcmLCBjb25zdCBJbnRQb2ludCYpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVh
bCBib29sIGhhbmRsZVdoZWVsRXZlbnQoRnJhbWVWaWV3JiwgY29uc3QgUGxhdGZvcm1XaGVlbEV2
ZW50JikgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgU2Nyb2xsaW5nTm9kZUlEIGF0dGFj
aFRvU3RhdGVUcmVlKFNjcm9sbGluZ05vZGVUeXBlLCBTY3JvbGxpbmdOb2RlSUQgbmV3Tm9kZUlE
LCBTY3JvbGxpbmdOb2RlSUQgLypwYXJlbnRJRCovKSB7IHJldHVybiBuZXdOb2RlSUQ7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgZGV0YWNoRnJvbVN0YXRlVHJlZShTY3JvbGxpbmdOb2RlSUQpIHsgfQog
ICAgIHZpcnR1YWwgdm9pZCBjbGVhclN0YXRlVHJlZSgpIHsgfQpAQCAtMTg2LDQ3ICsxODYsNDcg
QEAgcHVibGljOgogICAgIFNjcm9sbGluZ05vZGVJRCB1bmlxdWVTY3JvbGxMYXllcklEKCk7CiAK
ICAgICBlbnVtIE1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25GbGFncyB7Ci0gICAgICAgIEZvcmNl
ZE9uTWFpblRocmVhZCA9IDEgPDwgMCwKLSAgICAgICAgSGFzU2xvd1JlcGFpbnRPYmplY3RzID0g
MSA8PCAxLAotICAgICAgICBIYXNWaWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0c1dpdGhvdXRTdXBw
b3J0aW5nRml4ZWRMYXllcnMgPSAxIDw8IDIsCi0gICAgICAgIEhhc05vbkxheWVyVmlld3BvcnRD
b25zdHJhaW5lZE9iamVjdHMgPSAxIDw8IDMsCi0gICAgICAgIElzSW1hZ2VEb2N1bWVudCA9IDEg
PDwgNAorICAgICAgICBGb3JjZWRPbk1haW5UaHJlYWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IDEgPDwgMCwKKyAgICAgICAgSGFzU2xvd1JlcGFpbnRPYmplY3Rz
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxIDw8IDEsCisgICAgICAg
IEhhc1ZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RzV2l0aG91dFN1cHBvcnRpbmdGaXhlZExheWVy
cyAgID0gMSA8PCAyLAorICAgICAgICBIYXNOb25MYXllclZpZXdwb3J0Q29uc3RyYWluZWRPYmpl
Y3RzICAgICAgICAgICAgICAgICAgICAgICA9IDEgPDwgMywKKyAgICAgICAgSXNJbWFnZURvY3Vt
ZW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxIDw8IDQK
ICAgICB9OwogCi0gICAgU3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zIHN5bmNocm9ub3VzU2Ny
b2xsaW5nUmVhc29ucyhGcmFtZVZpZXcqKSBjb25zdDsKKyAgICBTeW5jaHJvbm91c1Njcm9sbGlu
Z1JlYXNvbnMgc3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zKGNvbnN0IEZyYW1lVmlldyYpIGNv
bnN0OwogICAgIGJvb2wgc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvblN5bmNocm9ub3Vz
bHkoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveVNjcm9sbGFibGVBcmVh
KFNjcm9sbGFibGVBcmVhKikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHNjcm9sbGFibGVBcmVhU2Ny
b2xsTGF5ZXJEaWRDaGFuZ2UoU2Nyb2xsYWJsZUFyZWEqKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQg
c2Nyb2xsYWJsZUFyZWFTY3JvbGxiYXJMYXllckRpZENoYW5nZShTY3JvbGxhYmxlQXJlYSosIFNj
cm9sbGJhck9yaWVudGF0aW9uKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lTY3Jv
bGxhYmxlQXJlYShTY3JvbGxhYmxlQXJlYSYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxh
YmxlQXJlYVNjcm9sbExheWVyRGlkQ2hhbmdlKFNjcm9sbGFibGVBcmVhJikgeyB9CisgICAgdmly
dHVhbCB2b2lkIHNjcm9sbGFibGVBcmVhU2Nyb2xsYmFyTGF5ZXJEaWRDaGFuZ2UoU2Nyb2xsYWJs
ZUFyZWEmLCBTY3JvbGxiYXJPcmllbnRhdGlvbikgeyB9CiAKICAgICBzdGF0aWMgU3RyaW5nIHN5
bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29uc0FzVGV4dChTeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNv
bnMpOwogICAgIFN0cmluZyBzeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnNBc1RleHQoKSBjb25z
dDsKIAotICAgIFJlZ2lvbiBjb21wdXRlTm9uRmFzdFNjcm9sbGFibGVSZWdpb24oY29uc3QgRnJh
bWUqLCBjb25zdCBJbnRQb2ludCYgZnJhbWVMb2NhdGlvbikgY29uc3Q7CisgICAgUmVnaW9uIGNv
bXB1dGVOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbihjb25zdCBGcmFtZSYsIGNvbnN0IEludFBvaW50
JiBmcmFtZUxvY2F0aW9uKSBjb25zdDsKIAogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IFNjcm9s
bGluZ0Nvb3JkaW5hdG9yKFBhZ2UqKTsKIAotICAgIHN0YXRpYyBHcmFwaGljc0xheWVyKiBzY3Jv
bGxMYXllckZvclNjcm9sbGFibGVBcmVhKFNjcm9sbGFibGVBcmVhKik7CisgICAgc3RhdGljIEdy
YXBoaWNzTGF5ZXIqIHNjcm9sbExheWVyRm9yU2Nyb2xsYWJsZUFyZWEoU2Nyb2xsYWJsZUFyZWEm
KTsKIAogICAgIHVuc2lnbmVkIGNvbXB1dGVDdXJyZW50V2hlZWxFdmVudEhhbmRsZXJDb3VudCgp
OwotICAgIEdyYXBoaWNzTGF5ZXIqIHNjcm9sbExheWVyRm9yRnJhbWVWaWV3KEZyYW1lVmlldyop
OwotICAgIEdyYXBoaWNzTGF5ZXIqIGNvdW50ZXJTY3JvbGxpbmdMYXllckZvckZyYW1lVmlldyhG
cmFtZVZpZXcqKTsKLSAgICBHcmFwaGljc0xheWVyKiBpbnNldENsaXBMYXllckZvckZyYW1lVmll
dyhGcmFtZVZpZXcqKTsKLSAgICBHcmFwaGljc0xheWVyKiByb290Q29udGVudExheWVyRm9yRnJh
bWVWaWV3KEZyYW1lVmlldyopOwotICAgIEdyYXBoaWNzTGF5ZXIqIGNvbnRlbnRTaGFkb3dMYXll
ckZvckZyYW1lVmlldyhGcmFtZVZpZXcqKTsKLSAgICBHcmFwaGljc0xheWVyKiBoZWFkZXJMYXll
ckZvckZyYW1lVmlldyhGcmFtZVZpZXcqKTsKLSAgICBHcmFwaGljc0xheWVyKiBmb290ZXJMYXll
ckZvckZyYW1lVmlldyhGcmFtZVZpZXcqKTsKKyAgICBHcmFwaGljc0xheWVyKiBzY3JvbGxMYXll
ckZvckZyYW1lVmlldyhGcmFtZVZpZXcmKTsKKyAgICBHcmFwaGljc0xheWVyKiBjb3VudGVyU2Ny
b2xsaW5nTGF5ZXJGb3JGcmFtZVZpZXcoRnJhbWVWaWV3Jik7CisgICAgR3JhcGhpY3NMYXllciog
aW5zZXRDbGlwTGF5ZXJGb3JGcmFtZVZpZXcoRnJhbWVWaWV3Jik7CisgICAgR3JhcGhpY3NMYXll
ciogcm9vdENvbnRlbnRMYXllckZvckZyYW1lVmlldyhGcmFtZVZpZXcmKTsKKyAgICBHcmFwaGlj
c0xheWVyKiBjb250ZW50U2hhZG93TGF5ZXJGb3JGcmFtZVZpZXcoRnJhbWVWaWV3Jik7CisgICAg
R3JhcGhpY3NMYXllciogaGVhZGVyTGF5ZXJGb3JGcmFtZVZpZXcoRnJhbWVWaWV3Jik7CisgICAg
R3JhcGhpY3NMYXllciogZm9vdGVyTGF5ZXJGb3JGcmFtZVZpZXcoRnJhbWVWaWV3Jik7CiAKICAg
ICBQYWdlKiBtX3BhZ2U7IC8vIEZJWE1FOiBpZGVhbGx5IHRoaXMgd291bGQgYmUgYSByZWZlcmVu
Y2UgYnV0IGl0IGdldHMgbnVsbGVkIG9uIGFzeW5jIHRlYXJkb3duLgogCiBwcml2YXRlOgotICAg
IHZpcnR1YWwgdm9pZCByZWNvbXB1dGVXaGVlbEV2ZW50SGFuZGxlckNvdW50Rm9yRnJhbWVWaWV3
KEZyYW1lVmlldyopIHsgfQorICAgIHZpcnR1YWwgdm9pZCByZWNvbXB1dGVXaGVlbEV2ZW50SGFu
ZGxlckNvdW50Rm9yRnJhbWVWaWV3KEZyYW1lVmlldyYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBz
ZXRTeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMoU3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25z
KSB7IH0KIAotICAgIHZpcnR1YWwgYm9vbCBoYXNWaXNpYmxlU2xvd1JlcGFpbnRWaWV3cG9ydENv
bnN0cmFpbmVkT2JqZWN0cyhGcmFtZVZpZXcqKSBjb25zdDsKLSAgICB2b2lkIHVwZGF0ZVN5bmNo
cm9ub3VzU2Nyb2xsaW5nUmVhc29ucyhGcmFtZVZpZXcqKTsKKyAgICB2aXJ0dWFsIGJvb2wgaGFz
VmlzaWJsZVNsb3dSZXBhaW50Vmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHMoY29uc3QgRnJhbWVW
aWV3JikgY29uc3Q7CisgICAgdm9pZCB1cGRhdGVTeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMo
RnJhbWVWaWV3Jik7CiAgICAgCiAgICAgYm9vbCBtX2ZvcmNlU3luY2hyb25vdXNTY3JvbGxMYXll
clBvc2l0aW9uVXBkYXRlczsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9tYWMvU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWMuaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdDb29yZGluYXRvck1hYy5oCmluZGV4IGZjODI5YTRk
NTk4NWU5NmM4NWE3YTExYzU4MTVlYjIzNGJlNjk4MDkuLjg3NjYzZmIwMzNiZGIzOWUyMDY5OTAz
ZWI5Y2U0NmRhNTdhNzAyMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL21hYy9TY3JvbGxpbmdDb29yZGluYXRvck1hYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdDb29yZGluYXRvck1hYy5oCkBAIC00OCw3ICs0OCw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY29tbWl0VHJlZVN0YXRlSWZOZWVkZWQoKSBv
dmVycmlkZTsKIAogICAgIC8vIEhhbmRsZSB0aGUgd2hlZWwgZXZlbnQgb24gdGhlIHNjcm9sbGlu
ZyB0aHJlYWQuIFJldHVybnMgd2hldGhlciB0aGUgZXZlbnQgd2FzIGhhbmRsZWQgb3Igbm90Lgot
ICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVXaGVlbEV2ZW50KEZyYW1lVmlldyosIGNvbnN0IFBsYXRm
b3JtV2hlZWxFdmVudCYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVXaGVlbEV2
ZW50KEZyYW1lVmlldyYsIGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYpIG92ZXJyaWRlOwogCiBw
cml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZVRyZWVTdGF0ZUNvbW1pdCgpIG92ZXJy
aWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9s
bGluZ0Nvb3JkaW5hdG9yTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFj
L1Njcm9sbGluZ0Nvb3JkaW5hdG9yTWFjLm1tCmluZGV4IDY4YTU0MjgxYmJlNjY2NDlkZTYwNDJj
Nzg5MGMwZTYyYWJhYTZlNWEuLmVhMTM5Mjc5OTBiMGJmOWM5ODBkNGIxOGMwMTQ5OGUzN2VmZGMz
MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxp
bmdDb29yZGluYXRvck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9t
YWMvU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWMubW0KQEAgLTg2LDcgKzg2LDcgQEAgdm9pZCBTY3Jv
bGxpbmdDb29yZGluYXRvck1hYzo6Y29tbWl0VHJlZVN0YXRlSWZOZWVkZWQoKQogICAgIG1fc2Ny
b2xsaW5nU3RhdGVUcmVlQ29tbWl0dGVyVGltZXIuc3RvcCgpOwogfQogCi1ib29sIFNjcm9sbGlu
Z0Nvb3JkaW5hdG9yTWFjOjpoYW5kbGVXaGVlbEV2ZW50KEZyYW1lVmlldyosIGNvbnN0IFBsYXRm
b3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCkKK2Jvb2wgU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWM6
OmhhbmRsZVdoZWVsRXZlbnQoRnJhbWVWaWV3JiwgY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3
aGVlbEV2ZW50KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKG1f
cGFnZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCBmNzgy
OGFiZTY3MGY5ODU2ZDQwZTJjMzY2ZDQwZWRhMTRmY2I1Mzk5Li5iZDc3YWYwOTA0MGM4MDA4MTFk
ZjkzMjhkMGRkMjU4YjFlZGY4Y2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllci5jcHAKQEAgLTM2MCw3ICszNjAsNyBAQCBSZW5kZXJMYXllcjo6flJlbmRlckxheWVyKCkK
IAogICAgIGlmIChyZW5kZXJlcigpLmZyYW1lKCkucGFnZSgpKSB7CiAgICAgICAgIGlmIChTY3Jv
bGxpbmdDb29yZGluYXRvciogc2Nyb2xsaW5nQ29vcmRpbmF0b3IgPSByZW5kZXJlcigpLmZyYW1l
KCkucGFnZSgpLT5zY3JvbGxpbmdDb29yZGluYXRvcigpKQotICAgICAgICAgICAgc2Nyb2xsaW5n
Q29vcmRpbmF0b3ItPndpbGxEZXN0cm95U2Nyb2xsYWJsZUFyZWEodGhpcyk7CisgICAgICAgICAg
ICBzY3JvbGxpbmdDb29yZGluYXRvci0+d2lsbERlc3Ryb3lTY3JvbGxhYmxlQXJlYSgqdGhpcyk7
CiAgICAgfQogCiAgICAgaWYgKG1fcmVmbGVjdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKaW5kZXggYTkwYTQ5ZTg3Mjk3NmRkZTA0ZTc0
MmYxOTdmOTllNGVjMTlhZmNjOC4uYWVhZmNjOWY3MzIyZjY0MGJhNGQzM2M0MzExNzkwYzhjNjFk
ZTRmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFj
a2luZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2lu
Zy5jcHAKQEAgLTEyOTUsOSArMTI5NSw5IEBAIGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRh
dGVPdmVyZmxvd0NvbnRyb2xzTGF5ZXJzKGJvb2wgbmVlZHNIb3Jpem9udGFsU2Nyb2xsCiAKICAg
ICBpZiAoU2Nyb2xsaW5nQ29vcmRpbmF0b3IqIHNjcm9sbGluZ0Nvb3JkaW5hdG9yID0gc2Nyb2xs
aW5nQ29vcmRpbmF0b3JGcm9tTGF5ZXIobV9vd25pbmdMYXllcikpIHsKICAgICAgICAgaWYgKGhv
cml6b250YWxTY3JvbGxiYXJMYXllckNoYW5nZWQpCi0gICAgICAgICAgICBzY3JvbGxpbmdDb29y
ZGluYXRvci0+c2Nyb2xsYWJsZUFyZWFTY3JvbGxiYXJMYXllckRpZENoYW5nZSgmbV9vd25pbmdM
YXllciwgSG9yaXpvbnRhbFNjcm9sbGJhcik7CisgICAgICAgICAgICBzY3JvbGxpbmdDb29yZGlu
YXRvci0+c2Nyb2xsYWJsZUFyZWFTY3JvbGxiYXJMYXllckRpZENoYW5nZShtX293bmluZ0xheWVy
LCBIb3Jpem9udGFsU2Nyb2xsYmFyKTsKICAgICAgICAgaWYgKHZlcnRpY2FsU2Nyb2xsYmFyTGF5
ZXJDaGFuZ2VkKQotICAgICAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPnNjcm9sbGFibGVB
cmVhU2Nyb2xsYmFyTGF5ZXJEaWRDaGFuZ2UoJm1fb3duaW5nTGF5ZXIsIFZlcnRpY2FsU2Nyb2xs
YmFyKTsKKyAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5zY3JvbGxhYmxlQXJlYVNj
cm9sbGJhckxheWVyRGlkQ2hhbmdlKG1fb3duaW5nTGF5ZXIsIFZlcnRpY2FsU2Nyb2xsYmFyKTsK
ICAgICB9CiAKICAgICByZXR1cm4gaG9yaXpvbnRhbFNjcm9sbGJhckxheWVyQ2hhbmdlZCB8fCB2
ZXJ0aWNhbFNjcm9sbGJhckxheWVyQ2hhbmdlZCB8fCBzY3JvbGxDb3JuZXJMYXllckNoYW5nZWQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3Np
dG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3Iu
Y3BwCmluZGV4IGU4ZDg1ZGRjMzBlMTY3MjI0YmU3MTJkZDU3Y2U2NmFiYjVhNDY5MGYuLmM3MjI4
N2VkMWUwMGUwMTJhZWZiMjgwZWUzZjcyMDA2NDBkOGMxZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCkBAIC05ODcsNyArOTg3
LDcgQEAgYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZUJhY2tpbmcoUmVuZGVyTGF5
ZXImIGxheWVyLCBDb21wb3NpdGluZ0NoYW5nZVIKICAgICAgICAgICAgIGlmIChsYXllci5pc1Jv
b3RMYXllcigpICYmICFtX3JlbmRlclZpZXcuZG9jdW1lbnQoKS5vd25lckVsZW1lbnQoKSkgewog
ICAgICAgICAgICAgICAgIHVwZGF0ZVNjcm9sbENvb3JkaW5hdGVkU3RhdHVzKGxheWVyKTsKICAg
ICAgICAgICAgICAgICBpZiAoU2Nyb2xsaW5nQ29vcmRpbmF0b3IqIHNjcm9sbGluZ0Nvb3JkaW5h
dG9yID0gdGhpcy0+c2Nyb2xsaW5nQ29vcmRpbmF0b3IoKSkKLSAgICAgICAgICAgICAgICAgICAg
c2Nyb2xsaW5nQ29vcmRpbmF0b3ItPmZyYW1lVmlld1Jvb3RMYXllckRpZENoYW5nZSgmbV9yZW5k
ZXJWaWV3LmZyYW1lVmlldygpKTsKKyAgICAgICAgICAgICAgICAgICAgc2Nyb2xsaW5nQ29vcmRp
bmF0b3ItPmZyYW1lVmlld1Jvb3RMYXllckRpZENoYW5nZShtX3JlbmRlclZpZXcuZnJhbWVWaWV3
KCkpOwogI2lmIEVOQUJMRShSVUJCRVJfQkFORElORykKICAgICAgICAgICAgICAgICBpZiAoUGFn
ZSogcGFnZSA9IHRoaXMtPnBhZ2UoKSkgewogICAgICAgICAgICAgICAgICAgICB1cGRhdGVMYXll
ckZvckhlYWRlcihwYWdlLT5oZWFkZXJIZWlnaHQoKSk7CkBAIC0xMDYxLDcgKzEwNjEsNyBAQCBi
b29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlQmFja2luZyhSZW5kZXJMYXllciYgbGF5
ZXIsIENvbXBvc2l0aW5nQ2hhbmdlUgogICAgICAgICB9CiAgICAgICAgIGlmIChsYXllckNoYW5n
ZWQpIHsKICAgICAgICAgICAgIGlmIChTY3JvbGxpbmdDb29yZGluYXRvciogc2Nyb2xsaW5nQ29v
cmRpbmF0b3IgPSB0aGlzLT5zY3JvbGxpbmdDb29yZGluYXRvcigpKQotICAgICAgICAgICAgICAg
IHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5mcmFtZVZpZXdGaXhlZE9iamVjdHNEaWRDaGFuZ2UoJm1f
cmVuZGVyVmlldy5mcmFtZVZpZXcoKSk7CisgICAgICAgICAgICAgICAgc2Nyb2xsaW5nQ29vcmRp
bmF0b3ItPmZyYW1lVmlld0ZpeGVkT2JqZWN0c0RpZENoYW5nZShtX3JlbmRlclZpZXcuZnJhbWVW
aWV3KCkpOwogICAgICAgICB9CiAgICAgfSBlbHNlCiAgICAgICAgIGxheWVyLnNldFZpZXdwb3J0
Q29uc3RyYWluZWROb3RDb21wb3NpdGVkUmVhc29uKFJlbmRlckxheWVyOjpOb05vdENvbXBvc2l0
ZWRSZWFzb24pOwpAQCAtMTcwNyw3ICsxNzA3LDcgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0
b3I6OmZyYW1lVmlld0RpZENoYW5nZVNpemUoKQogYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6
Omhhc0Nvb3JkaW5hdGVkU2Nyb2xsaW5nKCkgY29uc3QKIHsKICAgICBTY3JvbGxpbmdDb29yZGlu
YXRvciogc2Nyb2xsaW5nQ29vcmRpbmF0b3IgPSB0aGlzLT5zY3JvbGxpbmdDb29yZGluYXRvcigp
OwotICAgIHJldHVybiBzY3JvbGxpbmdDb29yZGluYXRvciAmJiBzY3JvbGxpbmdDb29yZGluYXRv
ci0+Y29vcmRpbmF0ZXNTY3JvbGxpbmdGb3JGcmFtZVZpZXcoJm1fcmVuZGVyVmlldy5mcmFtZVZp
ZXcoKSk7CisgICAgcmV0dXJuIHNjcm9sbGluZ0Nvb3JkaW5hdG9yICYmIHNjcm9sbGluZ0Nvb3Jk
aW5hdG9yLT5jb29yZGluYXRlc1Njcm9sbGluZ0ZvckZyYW1lVmlldyhtX3JlbmRlclZpZXcuZnJh
bWVWaWV3KCkpOwogfQogCiB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlU2Nyb2xs
TGF5ZXJQb3NpdGlvbigpCkBAIC0xNzY2LDcgKzE3NjYsNyBAQCB2b2lkIFJlbmRlckxheWVyQ29t
cG9zaXRvcjo6cm9vdEZpeGVkQmFja2dyb3VuZHNDaGFuZ2VkKCkKIHZvaWQgUmVuZGVyTGF5ZXJD
b21wb3NpdG9yOjpzY3JvbGxpbmdMYXllckRpZENoYW5nZShSZW5kZXJMYXllciYgbGF5ZXIpCiB7
CiAgICAgaWYgKFNjcm9sbGluZ0Nvb3JkaW5hdG9yKiBzY3JvbGxpbmdDb29yZGluYXRvciA9IHRo
aXMtPnNjcm9sbGluZ0Nvb3JkaW5hdG9yKCkpCi0gICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9y
LT5zY3JvbGxhYmxlQXJlYVNjcm9sbExheWVyRGlkQ2hhbmdlKCZsYXllcik7CisgICAgICAgIHNj
cm9sbGluZ0Nvb3JkaW5hdG9yLT5zY3JvbGxhYmxlQXJlYVNjcm9sbExheWVyRGlkQ2hhbmdlKGxh
eWVyKTsKIH0KIAogdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmZpeGVkUm9vdEJhY2tncm91
bmRMYXllckNoYW5nZWQoKQpAQCAtMzExMiw3ICszMTEyLDcgQEAgR3JhcGhpY3NMYXllciogUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVMYXllckZvckhlYWRlcihib29sIHdhbnRzTGF5ZXIp
CiAgICAgICAgICAgICAvLyBUaGUgU2Nyb2xsaW5nVHJlZSBrbm93cyBhYm91dCB0aGUgaGVhZGVy
IGxheWVyLCBhbmQgdGhlIHBvc2l0aW9uIG9mIHRoZSByb290IGxheWVyIGlzIGFmZmVjdGVkCiAg
ICAgICAgICAgICAvLyBieSB0aGUgaGVhZGVyIGxheWVyLCBzbyBpZiB3ZSByZW1vdmUgdGhlIGhl
YWRlciwgd2UgbmVlZCB0byB0ZWxsIHRoZSBzY3JvbGxpbmcgdHJlZS4KICAgICAgICAgICAgIGlm
IChTY3JvbGxpbmdDb29yZGluYXRvciogc2Nyb2xsaW5nQ29vcmRpbmF0b3IgPSB0aGlzLT5zY3Jv
bGxpbmdDb29yZGluYXRvcigpKQotICAgICAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9y
LT5mcmFtZVZpZXdSb290TGF5ZXJEaWRDaGFuZ2UoJm1fcmVuZGVyVmlldy5mcmFtZVZpZXcoKSk7
CisgICAgICAgICAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPmZyYW1lVmlld1Jvb3RMYXll
ckRpZENoYW5nZShtX3JlbmRlclZpZXcuZnJhbWVWaWV3KCkpOwogICAgICAgICB9CiAgICAgICAg
IHJldHVybiAwOwogICAgIH0KQEAgLTMxMzIsNyArMzEzMiw3IEBAIEdyYXBoaWNzTGF5ZXIqIFJl
bmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlTGF5ZXJGb3JIZWFkZXIoYm9vbCB3YW50c0xheWVy
KQogICAgIG1fbGF5ZXJGb3JIZWFkZXItPnNldFNpemUoRmxvYXRTaXplKG1fcmVuZGVyVmlldy5m
cmFtZVZpZXcoKS52aXNpYmxlV2lkdGgoKSwgbV9yZW5kZXJWaWV3LmZyYW1lVmlldygpLmhlYWRl
ckhlaWdodCgpKSk7CiAKICAgICBpZiAoU2Nyb2xsaW5nQ29vcmRpbmF0b3IqIHNjcm9sbGluZ0Nv
b3JkaW5hdG9yID0gdGhpcy0+c2Nyb2xsaW5nQ29vcmRpbmF0b3IoKSkKLSAgICAgICAgc2Nyb2xs
aW5nQ29vcmRpbmF0b3ItPmZyYW1lVmlld1Jvb3RMYXllckRpZENoYW5nZSgmbV9yZW5kZXJWaWV3
LmZyYW1lVmlldygpKTsKKyAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPmZyYW1lVmlld1Jv
b3RMYXllckRpZENoYW5nZShtX3JlbmRlclZpZXcuZnJhbWVWaWV3KCkpOwogCiAgICAgaWYgKFBh
Z2UqIHBhZ2UgPSB0aGlzLT5wYWdlKCkpCiAgICAgICAgIHBhZ2UtPmNocm9tZSgpLmNsaWVudCgp
LmRpZEFkZEhlYWRlckxheWVyKG1fbGF5ZXJGb3JIZWFkZXIuZ2V0KCkpOwpAQCAtMzE1Myw3ICsz
MTUzLDcgQEAgR3JhcGhpY3NMYXllciogUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVMYXll
ckZvckZvb3Rlcihib29sIHdhbnRzTGF5ZXIpCiAgICAgICAgICAgICAvLyBUaGUgU2Nyb2xsaW5n
VHJlZSBrbm93cyBhYm91dCB0aGUgZm9vdGVyIGxheWVyLCBhbmQgdGhlIHRvdGFsIHNjcm9sbGFi
bGUgc2l6ZSBpcyBhZmZlY3RlZAogICAgICAgICAgICAgLy8gYnkgdGhlIGZvb3RlciBsYXllciwg
c28gaWYgd2UgcmVtb3ZlIHRoZSBmb290ZXIsIHdlIG5lZWQgdG8gdGVsbCB0aGUgc2Nyb2xsaW5n
IHRyZWUuCiAgICAgICAgICAgICBpZiAoU2Nyb2xsaW5nQ29vcmRpbmF0b3IqIHNjcm9sbGluZ0Nv
b3JkaW5hdG9yID0gdGhpcy0+c2Nyb2xsaW5nQ29vcmRpbmF0b3IoKSkKLSAgICAgICAgICAgICAg
ICBzY3JvbGxpbmdDb29yZGluYXRvci0+ZnJhbWVWaWV3Um9vdExheWVyRGlkQ2hhbmdlKCZtX3Jl
bmRlclZpZXcuZnJhbWVWaWV3KCkpOworICAgICAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5h
dG9yLT5mcmFtZVZpZXdSb290TGF5ZXJEaWRDaGFuZ2UobV9yZW5kZXJWaWV3LmZyYW1lVmlldygp
KTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gMDsKICAgICB9CkBAIC0zMTczLDcgKzMxNzMs
NyBAQCBHcmFwaGljc0xheWVyKiBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZUxheWVyRm9y
Rm9vdGVyKGJvb2wgd2FudHNMYXllcikKICAgICBtX2xheWVyRm9yRm9vdGVyLT5zZXRTaXplKEZs
b2F0U2l6ZShtX3JlbmRlclZpZXcuZnJhbWVWaWV3KCkudmlzaWJsZVdpZHRoKCksIG1fcmVuZGVy
Vmlldy5mcmFtZVZpZXcoKS5mb290ZXJIZWlnaHQoKSkpOwogCiAgICAgaWYgKFNjcm9sbGluZ0Nv
b3JkaW5hdG9yKiBzY3JvbGxpbmdDb29yZGluYXRvciA9IHRoaXMtPnNjcm9sbGluZ0Nvb3JkaW5h
dG9yKCkpCi0gICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5mcmFtZVZpZXdSb290TGF5ZXJE
aWRDaGFuZ2UoJm1fcmVuZGVyVmlldy5mcmFtZVZpZXcoKSk7CisgICAgICAgIHNjcm9sbGluZ0Nv
b3JkaW5hdG9yLT5mcmFtZVZpZXdSb290TGF5ZXJEaWRDaGFuZ2UobV9yZW5kZXJWaWV3LmZyYW1l
VmlldygpKTsKIAogICAgIGlmIChQYWdlKiBwYWdlID0gdGhpcy0+cGFnZSgpKQogICAgICAgICBw
YWdlLT5jaHJvbWUoKS5jbGllbnQoKS5kaWRBZGRGb290ZXJMYXllcihtX2xheWVyRm9yRm9vdGVy
LmdldCgpKTsKQEAgLTMyODcsMTQgKzMyODcsMTQgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0
b3I6OnVwZGF0ZU92ZXJmbG93Q29udHJvbHNMYXllcnMoKQogICAgICAgICAgICAgbV9vdmVyZmxv
d0NvbnRyb2xzSG9zdExheWVyLT5hZGRDaGlsZChtX2xheWVyRm9ySG9yaXpvbnRhbFNjcm9sbGJh
ci5nZXQoKSk7CiAKICAgICAgICAgICAgIGlmIChTY3JvbGxpbmdDb29yZGluYXRvciogc2Nyb2xs
aW5nQ29vcmRpbmF0b3IgPSB0aGlzLT5zY3JvbGxpbmdDb29yZGluYXRvcigpKQotICAgICAgICAg
ICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5zY3JvbGxhYmxlQXJlYVNjcm9sbGJhckxheWVy
RGlkQ2hhbmdlKCZtX3JlbmRlclZpZXcuZnJhbWVWaWV3KCksIEhvcml6b250YWxTY3JvbGxiYXIp
OworICAgICAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5zY3JvbGxhYmxlQXJlYVNj
cm9sbGJhckxheWVyRGlkQ2hhbmdlKG1fcmVuZGVyVmlldy5mcmFtZVZpZXcoKSwgSG9yaXpvbnRh
bFNjcm9sbGJhcik7CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKG1fbGF5ZXJGb3JIb3Jpem9u
dGFsU2Nyb2xsYmFyKSB7CiAgICAgICAgIG1fbGF5ZXJGb3JIb3Jpem9udGFsU2Nyb2xsYmFyLT5y
ZW1vdmVGcm9tUGFyZW50KCk7CiAgICAgICAgIG1fbGF5ZXJGb3JIb3Jpem9udGFsU2Nyb2xsYmFy
ID0gbnVsbHB0cjsKIAogICAgICAgICBpZiAoU2Nyb2xsaW5nQ29vcmRpbmF0b3IqIHNjcm9sbGlu
Z0Nvb3JkaW5hdG9yID0gdGhpcy0+c2Nyb2xsaW5nQ29vcmRpbmF0b3IoKSkKLSAgICAgICAgICAg
IHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5zY3JvbGxhYmxlQXJlYVNjcm9sbGJhckxheWVyRGlkQ2hh
bmdlKCZtX3JlbmRlclZpZXcuZnJhbWVWaWV3KCksIEhvcml6b250YWxTY3JvbGxiYXIpOworICAg
ICAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPnNjcm9sbGFibGVBcmVhU2Nyb2xsYmFyTGF5
ZXJEaWRDaGFuZ2UobV9yZW5kZXJWaWV3LmZyYW1lVmlldygpLCBIb3Jpem9udGFsU2Nyb2xsYmFy
KTsKICAgICB9CiAKICAgICBpZiAocmVxdWlyZXNWZXJ0aWNhbFNjcm9sbGJhckxheWVyKCkpIHsK
QEAgLTMzMTAsMTQgKzMzMTAsMTQgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0
ZU92ZXJmbG93Q29udHJvbHNMYXllcnMoKQogICAgICAgICAgICAgbV9vdmVyZmxvd0NvbnRyb2xz
SG9zdExheWVyLT5hZGRDaGlsZChtX2xheWVyRm9yVmVydGljYWxTY3JvbGxiYXIuZ2V0KCkpOwog
CiAgICAgICAgICAgICBpZiAoU2Nyb2xsaW5nQ29vcmRpbmF0b3IqIHNjcm9sbGluZ0Nvb3JkaW5h
dG9yID0gdGhpcy0+c2Nyb2xsaW5nQ29vcmRpbmF0b3IoKSkKLSAgICAgICAgICAgICAgICBzY3Jv
bGxpbmdDb29yZGluYXRvci0+c2Nyb2xsYWJsZUFyZWFTY3JvbGxiYXJMYXllckRpZENoYW5nZSgm
bV9yZW5kZXJWaWV3LmZyYW1lVmlldygpLCBWZXJ0aWNhbFNjcm9sbGJhcik7CisgICAgICAgICAg
ICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPnNjcm9sbGFibGVBcmVhU2Nyb2xsYmFyTGF5ZXJE
aWRDaGFuZ2UobV9yZW5kZXJWaWV3LmZyYW1lVmlldygpLCBWZXJ0aWNhbFNjcm9sbGJhcik7CiAg
ICAgICAgIH0KICAgICB9IGVsc2UgaWYgKG1fbGF5ZXJGb3JWZXJ0aWNhbFNjcm9sbGJhcikgewog
ICAgICAgICBtX2xheWVyRm9yVmVydGljYWxTY3JvbGxiYXItPnJlbW92ZUZyb21QYXJlbnQoKTsK
ICAgICAgICAgbV9sYXllckZvclZlcnRpY2FsU2Nyb2xsYmFyID0gbnVsbHB0cjsKIAogICAgICAg
ICBpZiAoU2Nyb2xsaW5nQ29vcmRpbmF0b3IqIHNjcm9sbGluZ0Nvb3JkaW5hdG9yID0gdGhpcy0+
c2Nyb2xsaW5nQ29vcmRpbmF0b3IoKSkKLSAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9y
LT5zY3JvbGxhYmxlQXJlYVNjcm9sbGJhckxheWVyRGlkQ2hhbmdlKCZtX3JlbmRlclZpZXcuZnJh
bWVWaWV3KCksIFZlcnRpY2FsU2Nyb2xsYmFyKTsKKyAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3Jk
aW5hdG9yLT5zY3JvbGxhYmxlQXJlYVNjcm9sbGJhckxheWVyRGlkQ2hhbmdlKG1fcmVuZGVyVmll
dy5mcmFtZVZpZXcoKSwgVmVydGljYWxTY3JvbGxiYXIpOwogICAgIH0KIAogICAgIGlmIChyZXF1
aXJlc1Njcm9sbENvcm5lckxheWVyKCkpIHsKQEAgLTM0MzcsNyArMzQzNyw3IEBAIHZvaWQgUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yOjpkZXN0cm95Um9vdExheWVyKCkKICAgICAgICAgbV9sYXllckZv
ckhvcml6b250YWxTY3JvbGxiYXItPnJlbW92ZUZyb21QYXJlbnQoKTsKICAgICAgICAgbV9sYXll
ckZvckhvcml6b250YWxTY3JvbGxiYXIgPSBudWxscHRyOwogICAgICAgICBpZiAoU2Nyb2xsaW5n
Q29vcmRpbmF0b3IqIHNjcm9sbGluZ0Nvb3JkaW5hdG9yID0gdGhpcy0+c2Nyb2xsaW5nQ29vcmRp
bmF0b3IoKSkKLSAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5zY3JvbGxhYmxlQXJl
YVNjcm9sbGJhckxheWVyRGlkQ2hhbmdlKCZtX3JlbmRlclZpZXcuZnJhbWVWaWV3KCksIEhvcml6
b250YWxTY3JvbGxiYXIpOworICAgICAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPnNjcm9s
bGFibGVBcmVhU2Nyb2xsYmFyTGF5ZXJEaWRDaGFuZ2UobV9yZW5kZXJWaWV3LmZyYW1lVmlldygp
LCBIb3Jpem9udGFsU2Nyb2xsYmFyKTsKICAgICAgICAgaWYgKFNjcm9sbGJhciogaG9yaXpvbnRh
bFNjcm9sbGJhciA9IG1fcmVuZGVyVmlldy5mcmFtZVZpZXcoKS52ZXJ0aWNhbFNjcm9sbGJhcigp
KQogICAgICAgICAgICAgbV9yZW5kZXJWaWV3LmZyYW1lVmlldygpLmludmFsaWRhdGVTY3JvbGxi
YXIoaG9yaXpvbnRhbFNjcm9sbGJhciwgSW50UmVjdChJbnRQb2ludCgwLCAwKSwgaG9yaXpvbnRh
bFNjcm9sbGJhci0+ZnJhbWVSZWN0KCkuc2l6ZSgpKSk7CiAgICAgfQpAQCAtMzQ0Niw3ICszNDQ2
LDcgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmRlc3Ryb3lSb290TGF5ZXIoKQogICAg
ICAgICBtX2xheWVyRm9yVmVydGljYWxTY3JvbGxiYXItPnJlbW92ZUZyb21QYXJlbnQoKTsKICAg
ICAgICAgbV9sYXllckZvclZlcnRpY2FsU2Nyb2xsYmFyID0gbnVsbHB0cjsKICAgICAgICAgaWYg
KFNjcm9sbGluZ0Nvb3JkaW5hdG9yKiBzY3JvbGxpbmdDb29yZGluYXRvciA9IHRoaXMtPnNjcm9s
bGluZ0Nvb3JkaW5hdG9yKCkpCi0gICAgICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+c2Ny
b2xsYWJsZUFyZWFTY3JvbGxiYXJMYXllckRpZENoYW5nZSgmbV9yZW5kZXJWaWV3LmZyYW1lVmll
dygpLCBWZXJ0aWNhbFNjcm9sbGJhcik7CisgICAgICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRv
ci0+c2Nyb2xsYWJsZUFyZWFTY3JvbGxiYXJMYXllckRpZENoYW5nZShtX3JlbmRlclZpZXcuZnJh
bWVWaWV3KCksIFZlcnRpY2FsU2Nyb2xsYmFyKTsKICAgICAgICAgaWYgKFNjcm9sbGJhciogdmVy
dGljYWxTY3JvbGxiYXIgPSBtX3JlbmRlclZpZXcuZnJhbWVWaWV3KCkudmVydGljYWxTY3JvbGxi
YXIoKSkKICAgICAgICAgICAgIG1fcmVuZGVyVmlldy5mcmFtZVZpZXcoKS5pbnZhbGlkYXRlU2Ny
b2xsYmFyKHZlcnRpY2FsU2Nyb2xsYmFyLCBJbnRSZWN0KEludFBvaW50KDAsIDApLCB2ZXJ0aWNh
bFNjcm9sbGJhci0+ZnJhbWVSZWN0KCkuc2l6ZSgpKSk7CiAgICAgfQpAQCAtMzgxNiw3ICszODE2
LDcgQEAgU2Nyb2xsaW5nTm9kZUlEIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6YXR0YWNoU2Nyb2xs
aW5nTm9kZShSZW5kZXJMYXllciYgbGF5ZXIsIFMKIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9y
Ojp1cGRhdGVTY3JvbGxDb29yZGluYXRpb25Gb3JUaGlzRnJhbWUoU2Nyb2xsaW5nTm9kZUlEIHBh
cmVudE5vZGVJRCkKIHsKICAgICBTY3JvbGxpbmdDb29yZGluYXRvciogc2Nyb2xsaW5nQ29vcmRp
bmF0b3IgPSB0aGlzLT5zY3JvbGxpbmdDb29yZGluYXRvcigpOwotICAgIEFTU0VSVChzY3JvbGxp
bmdDb29yZGluYXRvci0+Y29vcmRpbmF0ZXNTY3JvbGxpbmdGb3JGcmFtZVZpZXcoJm1fcmVuZGVy
Vmlldy5mcmFtZVZpZXcoKSkpOworICAgIEFTU0VSVChzY3JvbGxpbmdDb29yZGluYXRvci0+Y29v
cmRpbmF0ZXNTY3JvbGxpbmdGb3JGcmFtZVZpZXcobV9yZW5kZXJWaWV3LmZyYW1lVmlldygpKSk7
CiAKICAgICBTY3JvbGxpbmdOb2RlSUQgbm9kZUlEID0gYXR0YWNoU2Nyb2xsaW5nTm9kZSgqbV9y
ZW5kZXJWaWV3LmxheWVyKCksIEZyYW1lU2Nyb2xsaW5nTm9kZSwgcGFyZW50Tm9kZUlEKTsKICAg
ICBzY3JvbGxpbmdDb29yZGluYXRvci0+dXBkYXRlRnJhbWVTY3JvbGxpbmdOb2RlKG5vZGVJRCwg
bV9zY3JvbGxMYXllci5nZXQoKSwgbV9yb290Q29udGVudExheWVyLmdldCgpLCBmaXhlZFJvb3RC
YWNrZ3JvdW5kTGF5ZXIoKSwgY2xpcExheWVyKCkpOwpAQCAtMzgyNSw3ICszODI1LDcgQEAgdm9p
ZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZVNjcm9sbENvb3JkaW5hdGlvbkZvclRoaXNG
cmFtZShTY3JvbGxpbmdOb2RlSUQKIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVT
Y3JvbGxDb29yZGluYXRlZExheWVyKFJlbmRlckxheWVyJiBsYXllciwgU2Nyb2xsQ29vcmRpbmF0
aW9uUmVhc29ucyByZWFzb25zKQogewogICAgIFNjcm9sbGluZ0Nvb3JkaW5hdG9yKiBzY3JvbGxp
bmdDb29yZGluYXRvciA9IHRoaXMtPnNjcm9sbGluZ0Nvb3JkaW5hdG9yKCk7Ci0gICAgaWYgKCFz
Y3JvbGxpbmdDb29yZGluYXRvciB8fCAhc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPmNvb3JkaW5hdGVz
U2Nyb2xsaW5nRm9yRnJhbWVWaWV3KCZtX3JlbmRlclZpZXcuZnJhbWVWaWV3KCkpKQorICAgIGlm
ICghc2Nyb2xsaW5nQ29vcmRpbmF0b3IgfHwgIXNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5jb29yZGlu
YXRlc1Njcm9sbGluZ0ZvckZyYW1lVmlldyhtX3JlbmRlclZpZXcuZnJhbWVWaWV3KCkpKQogICAg
ICAgICByZXR1cm47CiAKICAgICBib29sIGlzUm9vdExheWVyID0gJmxheWVyID09IG1fcmVuZGVy
Vmlldy5sYXllcigpOwpAQCAtNDAxOSw3ICs0MDE5LDcgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBv
c2l0b3I6OndpbGxSZW1vdmVTY3JvbGxpbmdMYXllcldpdGhCYWNraW5nKFJlbmRlckxheWVyJiBs
YXkKICAgICAgICAgYmFja2luZy5kZXRhY2hGcm9tU2Nyb2xsaW5nQ29vcmRpbmF0b3IoKTsKIAog
ICAgICAgICAvLyBGb3IgQ29vcmRpbmF0ZWQgR3JhcGhpY3MuCi0gICAgICAgIHNjcm9sbGluZ0Nv
b3JkaW5hdG9yLT5zY3JvbGxhYmxlQXJlYVNjcm9sbExheWVyRGlkQ2hhbmdlKCZsYXllcik7Cisg
ICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5zY3JvbGxhYmxlQXJlYVNjcm9sbExheWVyRGlk
Q2hhbmdlKGxheWVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNDA0NCw3ICs0MDQ0
LDcgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmRpZEFkZFNjcm9sbGluZ0xheWVyKFJl
bmRlckxheWVyJiBsYXllcikKIAogICAgIGlmIChTY3JvbGxpbmdDb29yZGluYXRvciogc2Nyb2xs
aW5nQ29vcmRpbmF0b3IgPSB0aGlzLT5zY3JvbGxpbmdDb29yZGluYXRvcigpKSB7CiAgICAgICAg
IC8vIEZvciBDb29yZGluYXRlZCBHcmFwaGljcy4KLSAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0
b3ItPnNjcm9sbGFibGVBcmVhU2Nyb2xsTGF5ZXJEaWRDaGFuZ2UoJmxheWVyKTsKKyAgICAgICAg
c2Nyb2xsaW5nQ29vcmRpbmF0b3ItPnNjcm9sbGFibGVBcmVhU2Nyb2xsTGF5ZXJEaWRDaGFuZ2Uo
bGF5ZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5jcHAKaW5kZXggNzExOGZjN2YwNWJhZTNjM2M0OTA0YmFlN2U1ZDNiZDg0NWEyNTM3MC4u
NGFhMDFlYmUwODliY2VkZDU1OTI2M2YwNzNlYzRmMmNhY2U5ZjMzNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMTc3MSw3ICsxNzcxLDcgQEAgUmVmUHRyPENsaWVudFJl
Y3RMaXN0PiBJbnRlcm5hbHM6Om5vbkZhc3RTY3JvbGxhYmxlUmVjdHMoRXhjZXB0aW9uQ29kZSYg
ZWMpIGNvbnMKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAg
cmV0dXJuIHBhZ2UtPm5vbkZhc3RTY3JvbGxhYmxlUmVjdHMoZG9jdW1lbnQtPmZyYW1lKCkpOwor
ICAgIHJldHVybiBwYWdlLT5ub25GYXN0U2Nyb2xsYWJsZVJlY3RzKCpkb2N1bWVudC0+ZnJhbWUo
KSk7CiB9CiAKIHZvaWQgSW50ZXJuYWxzOjpnYXJiYWdlQ29sbGVjdERvY3VtZW50UmVzb3VyY2Vz
KEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9TY3JvbGxpbmcvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvU2Nyb2xsaW5nL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yLmgK
aW5kZXggNWE1MDFmYzMwNTE4ODY4ZjYxOWI1YTFlYzVlYzFhNmIzODYyZTdlOS4uNjE3MWRkZGEx
ZDYyMTIyNzI5MzAxZTdhMDRiYWM4M2YwMjFiYzE1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9TY3JvbGxpbmcvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Njcm9sbGluZy9SZW1vdGVTY3JvbGxpbmdDb29y
ZGluYXRvci5oCkBAIC02MSw3ICs2MSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGlz
UmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3IoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVl
OyB9CiAgICAgCiAgICAgLy8gU2Nyb2xsaW5nQ29vcmRpbmF0b3IKLSAgICB2aXJ0dWFsIGJvb2wg
Y29vcmRpbmF0ZXNTY3JvbGxpbmdGb3JGcmFtZVZpZXcoV2ViQ29yZTo6RnJhbWVWaWV3KikgY29u
c3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29sIGNvb3JkaW5hdGVzU2Nyb2xsaW5nRm9yRnJh
bWVWaWV3KGNvbnN0IFdlYkNvcmU6OkZyYW1lVmlldyYpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZp
cnR1YWwgdm9pZCBzY2hlZHVsZVRyZWVTdGF0ZUNvbW1pdCgpIG92ZXJyaWRlOwogCiAgICAgdmly
dHVhbCBib29sIGlzUnViYmVyQmFuZEluUHJvZ3Jlc3MoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvU2Nyb2xsaW5nL1JlbW90ZVNjcm9sbGlu
Z0Nvb3JkaW5hdG9yLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9TY3JvbGxpbmcvUmVt
b3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3IubW0KaW5kZXggYTY4MDg4MWMyZGExNzlkMWMxZGNlMzFj
ZTkyNWM5MTRlMDQyZGVkYS4uZjc3NzM5ODI0NzhlZWFmMzA4NzllNjgxM2FkN2U3NzJhZDE0MGVi
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9TY3JvbGxpbmcvUmVtb3Rl
U2Nyb2xsaW5nQ29vcmRpbmF0b3IubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9T
Y3JvbGxpbmcvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3IubW0KQEAgLTY3LDkgKzY3LDkgQEAg
dm9pZCBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvcjo6c2NoZWR1bGVUcmVlU3RhdGVDb21taXQo
KQogICAgIG1fd2ViUGFnZS0+ZHJhd2luZ0FyZWEoKS0+c2NoZWR1bGVDb21wb3NpdGluZ0xheWVy
Rmx1c2goKTsKIH0KIAotYm9vbCBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvcjo6Y29vcmRpbmF0
ZXNTY3JvbGxpbmdGb3JGcmFtZVZpZXcoRnJhbWVWaWV3KiBmcmFtZVZpZXcpIGNvbnN0Citib29s
IFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpjb29yZGluYXRlc1Njcm9sbGluZ0ZvckZyYW1l
Vmlldyhjb25zdCBGcmFtZVZpZXcmIGZyYW1lVmlldykgY29uc3QKIHsKLSAgICBSZW5kZXJWaWV3
KiByZW5kZXJWaWV3ID0gZnJhbWVWaWV3LT5yZW5kZXJWaWV3KCk7CisgICAgUmVuZGVyVmlldyog
cmVuZGVyVmlldyA9IGZyYW1lVmlldy5yZW5kZXJWaWV3KCk7CiAgICAgcmV0dXJuIHJlbmRlclZp
ZXcgJiYgcmVuZGVyVmlldy0+dXNlc0NvbXBvc2l0aW5nKCk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249695</attachid>
            <date>2015-03-29 13:29:58 -0700</date>
            <delta_ts>2015-03-29 13:35:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143198-20150329132915.patch</filename>
            <type>text/plain</type>
            <size>70279</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgyMTE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTRhYTRmOGE3Zjk4OTFh
YTY1NDRkZTYzMDNjODgzNzRmYWVkMjJjNS4uMjE3YmY3YmVkYjVhNTdmYjU1YjhjYTU0YjJhYTU5
MGJjOTRmYTE2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk2IEBACisyMDE1LTAzLTI5ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIENvbnZlcnQgYXJn
dW1lbnRzIHRvIFNjcm9sbGluZ0Nvb3JkaW5hdG9yIGZ1bmN0aW9ucyB0byByZWZlcmVuY2VzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDMxOTgKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb252ZXJ0IGFs
bCB0aGUgRnJhbWVWaWV3KiBhbmQgU2Nyb2xsYWJsZUFyZWEqIGFyZ3VtZW50cyB0byBTY3JvbGxp
bmdDb29yZGluYXRvciBmdW5jdGlvbnMgdG8KKyAgICAgICAgcmVmZXJlbmNlcywgYW5kIHVzZSBy
ZWZlcmVuY2VzIGluIGEgZmV3IG90aGVyIHBsYWNlcy4KKworICAgICAgICAqIGRvbS9Eb2N1bWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp3aGVlbEV2ZW50SGFuZGxlckNvdW50Q2hhbmdlZCk6
CisgICAgICAgICogcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbk92ZXJsYXk6OnVwZGF0ZVJlZ2lvbik6CisgICAgICAg
ICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpwcmVw
YXJlRm9yRGV0YWNoKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6YWRkU2xvd1JlcGFp
bnRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpyZW1vdmVTbG93UmVwYWlu
dE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmFkZFZpZXdwb3J0Q29uc3Ry
YWluZWRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpyZW1vdmVWaWV3cG9y
dENvbnN0cmFpbmVkT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6cmVxdWVz
dFNjcm9sbFBvc2l0aW9uVXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6cGVy
Zm9ybVBvc3RMYXlvdXRUYXNrcyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnNjcm9s
bGFibGVBcmVhU2V0Q2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OndoZWVs
RXZlbnQpOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdl
Ojpub25GYXN0U2Nyb2xsYWJsZVJlY3RzKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAg
ICAgKiBwYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZyYW1lVmlld0xheW91dFVw
ZGF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6ZnJh
bWVWaWV3Tm9uRmFzdFNjcm9sbGFibGVSZWdpb25DaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6
OkFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZyYW1lVmlld1Jvb3RMYXllckRpZENoYW5nZSk6
CisgICAgICAgIChXZWJDb3JlOjpBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpyZXF1ZXN0U2Ny
b2xsUG9zaXRpb25VcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNTY3JvbGxpbmdDb29y
ZGluYXRvcjo6dXBkYXRlU2Nyb2xsUG9zaXRpb25BZnRlckFzeW5jU2Nyb2xsKToKKyAgICAgICAg
KFdlYkNvcmU6OkFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNjcm9sbGFibGVBcmVhU2Nyb2xs
YmFyTGF5ZXJEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNTY3JvbGxpbmdDb29y
ZGluYXRvcjo6ZW5zdXJlUm9vdFN0YXRlTm9kZUZvckZyYW1lVmlldyk6CisgICAgICAgIChXZWJD
b3JlOjpBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjp1cGRhdGVNYWluRnJhbWVTY3JvbGxMYXll
clBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6
OnJlY29tcHV0ZVdoZWVsRXZlbnRIYW5kbGVyQ291bnRGb3JGcmFtZVZpZXcpOgorICAgICAgICAq
IHBhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaDoKKyAgICAgICAgKiBw
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxpbmdDb29yZGluYXRvcjo6cGFnZURlc3Ryb3llZCk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxpbmdDb29yZGluYXRvcjo6Y29vcmRpbmF0ZXNTY3JvbGxpbmdGb3JGcmFtZVZpZXcp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmNvbXB1dGVOb25GYXN0
U2Nyb2xsYWJsZVJlZ2lvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRv
cjo6ZnJhbWVWaWV3V2hlZWxFdmVudEhhbmRsZXJDb3VudENoYW5nZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZyYW1lVmlld0hhc1Nsb3dSZXBhaW50T2JqZWN0
c0RpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6ZnJh
bWVWaWV3Rml4ZWRPYmplY3RzRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGlu
Z0Nvb3JkaW5hdG9yOjpzY3JvbGxMYXllckZvclNjcm9sbGFibGVBcmVhKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzY3JvbGxMYXllckZvckZyYW1lVmlldyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6aGVhZGVyTGF5ZXJGb3JGcmFt
ZVZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZvb3Rlckxh
eWVyRm9yRnJhbWVWaWV3KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9y
Ojpjb3VudGVyU2Nyb2xsaW5nTGF5ZXJGb3JGcmFtZVZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsaW5nQ29vcmRpbmF0b3I6Omluc2V0Q2xpcExheWVyRm9yRnJhbWVWaWV3KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpjb250ZW50U2hhZG93TGF5ZXJGb3JG
cmFtZVZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnJvb3RD
b250ZW50TGF5ZXJGb3JGcmFtZVZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29v
cmRpbmF0b3I6OmZyYW1lVmlld1Jvb3RMYXllckRpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxpbmdDb29yZGluYXRvcjo6aGFzVmlzaWJsZVNsb3dSZXBhaW50Vmlld3BvcnRDb25z
dHJhaW5lZE9iamVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6
OnN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxp
bmdDb29yZGluYXRvcjo6dXBkYXRlU3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzZXRGb3JjZVN5bmNocm9ub3VzU2Ny
b2xsTGF5ZXJQb3NpdGlvblVwZGF0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29v
cmRpbmF0b3I6OnNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25TeW5jaHJvbm91c2x5KToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpyZXBsYXlTZXNzaW9uU3Rh
dGVEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnN5
bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29uc0FzVGV4dCk6CisgICAgICAgICogcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaDogQWxpZ24gdGhlIGJpdG1hc2sgZW51bXMgdG8gbWFr
ZSBtaXN0YWtlcworICAgICAgICBlYXNpZXIgdG8gc3BvdC4KKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGluZ0Nvb3JkaW5hdG9yOjpmcmFtZVZpZXdMYXlvdXRVcGRhdGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpmcmFtZVZpZXdOb25GYXN0U2Nyb2xsYWJsZVJl
Z2lvbkNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnJl
cXVlc3RTY3JvbGxQb3NpdGlvblVwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdD
b29yZGluYXRvcjo6aGFuZGxlV2hlZWxFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxp
bmdDb29yZGluYXRvcjo6d2lsbERlc3Ryb3lTY3JvbGxhYmxlQXJlYSk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6c2Nyb2xsYWJsZUFyZWFTY3JvbGxMYXllckRpZENo
YW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6c2Nyb2xsYWJs
ZUFyZWFTY3JvbGxiYXJMYXllckRpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxp
bmdDb29yZGluYXRvcjo6cmVjb21wdXRlV2hlZWxFdmVudEhhbmRsZXJDb3VudEZvckZyYW1lVmll
dyk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ0Nvb3JkaW5hdG9yTWFj
Lmg6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ0Nvb3JkaW5hdG9yTWFj
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWM6OmhhbmRsZVdo
ZWVsRXZlbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMYXllcjo6flJlbmRlckxheWVyKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVy
QmFja2luZzo6dXBkYXRlT3ZlcmZsb3dDb250cm9sc0xheWVycyk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllckNvbXBvc2l0b3I6OnVwZGF0ZUJhY2tpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGF5ZXJDb21wb3NpdG9yOjpoYXNDb29yZGluYXRlZFNjcm9sbGluZyk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnNjcm9sbGluZ0xheWVyRGlkQ2hhbmdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlTGF5ZXJGb3JIZWFk
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVMYXll
ckZvckZvb3Rlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVw
ZGF0ZU92ZXJmbG93Q29udHJvbHNMYXllcnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5
ZXJDb21wb3NpdG9yOjpkZXN0cm95Um9vdExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlU2Nyb2xsQ29vcmRpbmF0aW9uRm9yVGhpc0ZyYW1lKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlU2Nyb2xsQ29v
cmRpbmF0ZWRMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6
OndpbGxSZW1vdmVTY3JvbGxpbmdMYXllcldpdGhCYWNraW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6ZGlkQWRkU2Nyb2xsaW5nTGF5ZXIpOgorICAgICAgICAq
IHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6bm9u
RmFzdFNjcm9sbGFibGVSZWN0cyk6CisKIDIwMTUtMDMtMjggIEVyaWMgQ2FybHNvbiAgPGVyaWMu
Y2FybHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgW01hY10gVXBkYXRlIGZvciBvdXRwdXQgZGV2
aWNlIEFQSSBjaGFuZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBmYTIyZDQ4OGYzYzQ2NWJkY2ExZTFjZjg0NWRl
NzIyMjY1Yjc5MTdiLi5hZGFiNDgyZWY4OTYxNjlmNjU2OTBhNTVlYWI1ZmEzNDBmZTNiODc4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTUtMDMtMjkgIFNpbW9uIEZyYXNlciAgPHNp
bW9uLmZyYXNlckBhcHBsZS5jb20+CisKKyAgICAgICAgQ29udmVydCBhcmd1bWVudHMgdG8gU2Ny
b2xsaW5nQ29vcmRpbmF0b3IgZnVuY3Rpb25zIHRvIHJlZmVyZW5jZXMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzE5OAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENvbnZlcnQgYWxsIHRoZSBGcmFtZVZp
ZXcqIGFuZCBTY3JvbGxhYmxlQXJlYSogYXJndW1lbnRzIHRvIFNjcm9sbGluZ0Nvb3JkaW5hdG9y
IGZ1bmN0aW9ucyB0bworICAgICAgICByZWZlcmVuY2VzLCBhbmQgdXNlIHJlZmVyZW5jZXMgaW4g
YSBmZXcgb3RoZXIgcGxhY2VzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9TY3JvbGxpbmcvUmVt
b3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1Njcm9sbGlu
Zy9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvci5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmNvb3JkaW5hdGVzU2Nyb2xsaW5nRm9yRnJhbWVWaWV3KToK
KwogMjAxNS0wMy0yNyAgR3dhbmcgWW9vbiBId2FuZyAgPHlvb25AaWdhbGlhLmNvbT4KIAogICAg
ICAgICBbVGV4TWFwXSBTZXBlcmF0ZSBCaXRtYXBUZXh0dXJlIHJlbGF0ZWQgY2xhc3NlcyBpbXBs
ZW1lbnRhdGlvbnMgZnJvbSBUZXh0dXJlTWFwcGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRl
eCA0MDRkNTdmOTM2MjMxMDRjYjc5NGYwNjYzZjk5YWE0OWY5ZTFlYTRjLi4zMGNkMmRjN2U2ODEz
OTkwYjRkYjkxMDViYjZhNWIxZWMyN2UzNzhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAg
LTU5OTUsNyArNTk5NSw3IEBAIHN0YXRpYyB2b2lkIHdoZWVsRXZlbnRIYW5kbGVyQ291bnRDaGFu
Z2VkKERvY3VtZW50KiBkb2N1bWVudCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gRklYTUU6
IFdoeSBkb2Vzbid0IHRoaXMgbmVlZCB0byBiZSBjYWxsZWQgaW4gZGlkQmVjb21lQ3VycmVudERv
Y3VtZW50SW5GcmFtZT8KLSAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+ZnJhbWVWaWV3V2hlZWxF
dmVudEhhbmRsZXJDb3VudENoYW5nZWQoZnJhbWVWaWV3KTsKKyAgICBzY3JvbGxpbmdDb29yZGlu
YXRvci0+ZnJhbWVWaWV3V2hlZWxFdmVudEhhbmRsZXJDb3VudENoYW5nZWQoKmZyYW1lVmlldyk7
CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OmRpZEFkZFdoZWVsRXZlbnRIYW5kbGVyKE5vZGUmKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAKaW5kZXggZDQ2MTBjYWU5
Mjc0NzliZGU2MDE0M2MzZWFhNDBhNzlmNzhhZGI4OC4uNzZhMDk2NDczODY2NzJlMjI3YTA3OTM3
NzI2NTczMzRkNWRkYmY2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3Rv
cnlDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRy
b2xsZXIuY3BwCkBAIC0xMzgsNyArMTM4LDcgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6cmVz
dG9yZVNjcm9sbFBvc2l0aW9uQW5kVmlld1N0YXRlKCkKICAgICAgICAgUGFnZSogcGFnZSA9IG1f
ZnJhbWUucGFnZSgpOwogICAgICAgICBpZiAocGFnZSAmJiBtX2ZyYW1lLmlzTWFpbkZyYW1lKCkp
IHsKICAgICAgICAgICAgIGlmIChTY3JvbGxpbmdDb29yZGluYXRvciogc2Nyb2xsaW5nQ29vcmRp
bmF0b3IgPSBwYWdlLT5zY3JvbGxpbmdDb29yZGluYXRvcigpKQotICAgICAgICAgICAgICAgIHNj
cm9sbGluZ0Nvb3JkaW5hdG9yLT5mcmFtZVZpZXdSb290TGF5ZXJEaWRDaGFuZ2Uodmlldyk7Cisg
ICAgICAgICAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPmZyYW1lVmlld1Jvb3RMYXllckRp
ZENoYW5nZSgqdmlldyk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9E
ZWJ1Z1BhZ2VPdmVybGF5cy5jcHAKaW5kZXggMmJhN2ZlZWMzZjg2NjJiMjkxOTc5YzZlOTRlZjg3
YzVlY2Q2ZTEzMC4uMGZhNzg0YmFhZWQ2NzAzMzVkNWVhYzM3ODVkYTUxZDVjY2NkOTczNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAKQEAgLTEyNyw3ICsxMjcs
NyBAQCBib29sIE5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uT3ZlcmxheTo6dXBkYXRlUmVnaW9uKCkK
IAogICAgIGlmIChQYWdlKiBwYWdlID0gbV9mcmFtZS5wYWdlKCkpIHsKICAgICAgICAgaWYgKFNj
cm9sbGluZ0Nvb3JkaW5hdG9yKiBzY3JvbGxpbmdDb29yZGluYXRvciA9IHBhZ2UtPnNjcm9sbGlu
Z0Nvb3JkaW5hdG9yKCkpCi0gICAgICAgICAgICAqcmVnaW9uID0gc2Nyb2xsaW5nQ29vcmRpbmF0
b3ItPmNvbXB1dGVOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbigmbV9mcmFtZSwgSW50UG9pbnQoKSk7
CisgICAgICAgICAgICAqcmVnaW9uID0gc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPmNvbXB1dGVOb25G
YXN0U2Nyb2xsYWJsZVJlZ2lvbihtX2ZyYW1lLCBJbnRQb2ludCgpKTsKICAgICB9CiAKICAgICAv
LyBjb21wdXRlTm9uRmFzdFNjcm9sbGFibGVSZWdpb24oKSBhcHBsaWVzIHRvcENvbnRlbnRJbnNl
dC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZS5jcHAKaW5kZXggOTg4YWQwNmRjYzk0Y2I4MWZkODA0YjFlMTRiOGY3
ODdiZTJhZWVhZi4uMDE4YjA2ZWViMGFjN2Y3ZjgzMTAxOTExMjc1NzgyMjZiZjhmNjA2YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZS5jcHAKQEAgLTc5MSw3ICs3OTEsNyBAQCB2b2lkIEZyYW1lOjp3aWxsRGV0
YWNoUGFnZSgpCiAgICAgICAgIHBhZ2UoKS0+Zm9jdXNDb250cm9sbGVyKCkuc2V0Rm9jdXNlZEZy
YW1lKDApOwogCiAgICAgaWYgKHBhZ2UoKSAmJiBwYWdlKCktPnNjcm9sbGluZ0Nvb3JkaW5hdG9y
KCkgJiYgbV92aWV3KQotICAgICAgICBwYWdlKCktPnNjcm9sbGluZ0Nvb3JkaW5hdG9yKCktPndp
bGxEZXN0cm95U2Nyb2xsYWJsZUFyZWEobV92aWV3LmdldCgpKTsKKyAgICAgICAgcGFnZSgpLT5z
Y3JvbGxpbmdDb29yZGluYXRvcigpLT53aWxsRGVzdHJveVNjcm9sbGFibGVBcmVhKCptX3ZpZXcp
OwogCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIGlmIChXZWJUaHJlYWRDb3VudE9mT2JzZXJ2ZWRD
b250ZW50TW9kaWZpZXJzKCkgPiAwICYmIG1fcGFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNw
cAppbmRleCA5YzY1N2JjMmJlNzI0MDk3YWM5MGNjNmEwYzkxZjJhNDAzNGQ1Nzc5Li43YzlmMDUx
NDk3NTI3OGZhYzg3OTcwMTY1NGI4Y2U0NGY0ZTQyZTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZp
ZXcuY3BwCkBAIC0zNTgsNyArMzU4LDcgQEAgdm9pZCBGcmFtZVZpZXc6OnByZXBhcmVGb3JEZXRh
Y2goKQogCiAgICAgaWYgKGZyYW1lKCkucGFnZSgpKSB7CiAgICAgICAgIGlmIChTY3JvbGxpbmdD
b29yZGluYXRvciogc2Nyb2xsaW5nQ29vcmRpbmF0b3IgPSBmcmFtZSgpLnBhZ2UoKS0+c2Nyb2xs
aW5nQ29vcmRpbmF0b3IoKSkKLSAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT53aWxs
RGVzdHJveVNjcm9sbGFibGVBcmVhKHRoaXMpOworICAgICAgICAgICAgc2Nyb2xsaW5nQ29vcmRp
bmF0b3ItPndpbGxEZXN0cm95U2Nyb2xsYWJsZUFyZWEoKnRoaXMpOwogICAgIH0KIH0KIApAQCAt
MTU0OCw3ICsxNTQ4LDcgQEAgdm9pZCBGcmFtZVZpZXc6OmFkZFNsb3dSZXBhaW50T2JqZWN0KFJl
bmRlckVsZW1lbnQqIG8pCiAKICAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBmcmFtZSgpLnBhZ2Uo
KSkgewogICAgICAgICAgICAgaWYgKFNjcm9sbGluZ0Nvb3JkaW5hdG9yKiBzY3JvbGxpbmdDb29y
ZGluYXRvciA9IHBhZ2UtPnNjcm9sbGluZ0Nvb3JkaW5hdG9yKCkpCi0gICAgICAgICAgICAgICAg
c2Nyb2xsaW5nQ29vcmRpbmF0b3ItPmZyYW1lVmlld0hhc1Nsb3dSZXBhaW50T2JqZWN0c0RpZENo
YW5nZSh0aGlzKTsKKyAgICAgICAgICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+ZnJhbWVW
aWV3SGFzU2xvd1JlcGFpbnRPYmplY3RzRGlkQ2hhbmdlKCp0aGlzKTsKICAgICAgICAgfQogICAg
IH0KIH0KQEAgLTE1NjUsNyArMTU2NSw3IEBAIHZvaWQgRnJhbWVWaWV3OjpyZW1vdmVTbG93UmVw
YWludE9iamVjdChSZW5kZXJFbGVtZW50KiBvKQogCiAgICAgICAgIGlmIChQYWdlKiBwYWdlID0g
ZnJhbWUoKS5wYWdlKCkpIHsKICAgICAgICAgICAgIGlmIChTY3JvbGxpbmdDb29yZGluYXRvciog
c2Nyb2xsaW5nQ29vcmRpbmF0b3IgPSBwYWdlLT5zY3JvbGxpbmdDb29yZGluYXRvcigpKQotICAg
ICAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5mcmFtZVZpZXdIYXNTbG93UmVwYWlu
dE9iamVjdHNEaWRDaGFuZ2UodGhpcyk7CisgICAgICAgICAgICAgICAgc2Nyb2xsaW5nQ29vcmRp
bmF0b3ItPmZyYW1lVmlld0hhc1Nsb3dSZXBhaW50T2JqZWN0c0RpZENoYW5nZSgqdGhpcyk7CiAg
ICAgICAgIH0KICAgICB9CiB9CkBAIC0xNTgyLDcgKzE1ODIsNyBAQCB2b2lkIEZyYW1lVmlldzo6
YWRkVmlld3BvcnRDb25zdHJhaW5lZE9iamVjdChSZW5kZXJFbGVtZW50KiBvYmplY3QpCiAKICAg
ICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBmcmFtZSgpLnBhZ2UoKSkgewogICAgICAgICAgICAgaWYg
KFNjcm9sbGluZ0Nvb3JkaW5hdG9yKiBzY3JvbGxpbmdDb29yZGluYXRvciA9IHBhZ2UtPnNjcm9s
bGluZ0Nvb3JkaW5hdG9yKCkpCi0gICAgICAgICAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3It
PmZyYW1lVmlld0ZpeGVkT2JqZWN0c0RpZENoYW5nZSh0aGlzKTsKKyAgICAgICAgICAgICAgICBz
Y3JvbGxpbmdDb29yZGluYXRvci0+ZnJhbWVWaWV3Rml4ZWRPYmplY3RzRGlkQ2hhbmdlKCp0aGlz
KTsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTE1OTIsNyArMTU5Miw3IEBAIHZvaWQgRnJhbWVW
aWV3OjpyZW1vdmVWaWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0KFJlbmRlckVsZW1lbnQqIG9iamVj
dCkKICAgICBpZiAobV92aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0cyAmJiBtX3ZpZXdwb3J0Q29u
c3RyYWluZWRPYmplY3RzLT5yZW1vdmUob2JqZWN0KSkgewogICAgICAgICBpZiAoUGFnZSogcGFn
ZSA9IGZyYW1lKCkucGFnZSgpKSB7CiAgICAgICAgICAgICBpZiAoU2Nyb2xsaW5nQ29vcmRpbmF0
b3IqIHNjcm9sbGluZ0Nvb3JkaW5hdG9yID0gcGFnZS0+c2Nyb2xsaW5nQ29vcmRpbmF0b3IoKSkK
LSAgICAgICAgICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+ZnJhbWVWaWV3Rml4ZWRPYmpl
Y3RzRGlkQ2hhbmdlKHRoaXMpOworICAgICAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9y
LT5mcmFtZVZpZXdGaXhlZE9iamVjdHNEaWRDaGFuZ2UoKnRoaXMpOwogICAgICAgICB9CiAKICAg
ICAgICAgLy8gRklYTUU6IEluIGFkZEZpeGVkT2JqZWN0KCkgd2Ugb25seSBjYWxsIHRoaXMgaWYg
dGhlcmUncyBhIHBsYXRmb3JtIHdpZGdldCwKQEAgLTIyMzAsNyArMjIzMCw3IEBAIGJvb2wgRnJh
bWVWaWV3OjpyZXF1ZXN0U2Nyb2xsUG9zaXRpb25VcGRhdGUoY29uc3QgSW50UG9pbnQmIHBvc2l0
aW9uKQogI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpIHx8IFVTRShUSUxFRF9CQUNLSU5HX1NU
T1JFKQogICAgIGlmIChQYWdlKiBwYWdlID0gZnJhbWUoKS5wYWdlKCkpIHsKICAgICAgICAgaWYg
KFNjcm9sbGluZ0Nvb3JkaW5hdG9yKiBzY3JvbGxpbmdDb29yZGluYXRvciA9IHBhZ2UtPnNjcm9s
bGluZ0Nvb3JkaW5hdG9yKCkpCi0gICAgICAgICAgICByZXR1cm4gc2Nyb2xsaW5nQ29vcmRpbmF0
b3ItPnJlcXVlc3RTY3JvbGxQb3NpdGlvblVwZGF0ZSh0aGlzLCBwb3NpdGlvbik7CisgICAgICAg
ICAgICByZXR1cm4gc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPnJlcXVlc3RTY3JvbGxQb3NpdGlvblVw
ZGF0ZSgqdGhpcywgcG9zaXRpb24pOwogICAgIH0KICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHBv
c2l0aW9uKTsKQEAgLTI5NjMsNyArMjk2Myw3IEBAIHZvaWQgRnJhbWVWaWV3OjpwZXJmb3JtUG9z
dExheW91dFRhc2tzKCkKIAogICAgIGlmIChhdXRvKiBwYWdlID0gZnJhbWUoKS5wYWdlKCkpIHsK
ICAgICAgICAgaWYgKGF1dG8qIHNjcm9sbGluZ0Nvb3JkaW5hdG9yID0gcGFnZS0+c2Nyb2xsaW5n
Q29vcmRpbmF0b3IoKSkKLSAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5mcmFtZVZp
ZXdMYXlvdXRVcGRhdGVkKHRoaXMpOworICAgICAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3It
PmZyYW1lVmlld0xheW91dFVwZGF0ZWQoKnRoaXMpOwogICAgIH0KIAogICAgIGlmIChSZW5kZXJW
aWV3KiByZW5kZXJWaWV3ID0gdGhpcy0+cmVuZGVyVmlldygpKSB7CkBAIC00Mzc3LDcgKzQzNzcs
NyBAQCB2b2lkIEZyYW1lVmlldzo6c2Nyb2xsYWJsZUFyZWFTZXRDaGFuZ2VkKCkKIHsKICAgICBp
ZiAoYXV0byogcGFnZSA9IGZyYW1lKCkucGFnZSgpKSB7CiAgICAgICAgIGlmIChhdXRvKiBzY3Jv
bGxpbmdDb29yZGluYXRvciA9IHBhZ2UtPnNjcm9sbGluZ0Nvb3JkaW5hdG9yKCkpCi0gICAgICAg
ICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+ZnJhbWVWaWV3Tm9uRmFzdFNjcm9sbGFibGVSZWdp
b25DaGFuZ2VkKHRoaXMpOworICAgICAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPmZyYW1l
Vmlld05vbkZhc3RTY3JvbGxhYmxlUmVnaW9uQ2hhbmdlZCgqdGhpcyk7CiAgICAgfQogfQogCkBA
IC00NDI5LDggKzQ0MjksOCBAQCBib29sIEZyYW1lVmlldzo6d2hlZWxFdmVudChjb25zdCBQbGF0
Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQpCiAjaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykK
ICAgICBpZiAoUGFnZSogcGFnZSA9IGZyYW1lKCkucGFnZSgpKSB7CiAgICAgICAgIGlmIChTY3Jv
bGxpbmdDb29yZGluYXRvciogc2Nyb2xsaW5nQ29vcmRpbmF0b3IgPSBwYWdlLT5zY3JvbGxpbmdD
b29yZGluYXRvcigpKSB7Ci0gICAgICAgICAgICBpZiAoc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPmNv
b3JkaW5hdGVzU2Nyb2xsaW5nRm9yRnJhbWVWaWV3KHRoaXMpKQotICAgICAgICAgICAgICAgIHJl
dHVybiBzY3JvbGxpbmdDb29yZGluYXRvci0+aGFuZGxlV2hlZWxFdmVudCh0aGlzLCB3aGVlbEV2
ZW50KTsKKyAgICAgICAgICAgIGlmIChzY3JvbGxpbmdDb29yZGluYXRvci0+Y29vcmRpbmF0ZXNT
Y3JvbGxpbmdGb3JGcmFtZVZpZXcoKnRoaXMpKQorICAgICAgICAgICAgICAgIHJldHVybiBzY3Jv
bGxpbmdDb29yZGluYXRvci0+aGFuZGxlV2hlZWxFdmVudCgqdGhpcywgd2hlZWxFdmVudCk7CiAg
ICAgICAgIH0KICAgICB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDIyMTUxNTQzOWE0
NjAxMWRiMmI5MGY3ZmQyNmQ1NzFmMjIzZTJiNTQuLmE5NjRiNTgxZDQzOWMyN2QzZWEwM2M3ZDg0
MmM3YjEyNDFhZjhlNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMzY5LDcgKzM2OSw3IEBAIFN0
cmluZyBQYWdlOjpzeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnNBc1RleHQoKQogICAgIHJldHVy
biBTdHJpbmcoKTsKIH0KIAotUmVmPENsaWVudFJlY3RMaXN0PiBQYWdlOjpub25GYXN0U2Nyb2xs
YWJsZVJlY3RzKGNvbnN0IEZyYW1lKiBmcmFtZSkKK1JlZjxDbGllbnRSZWN0TGlzdD4gUGFnZTo6
bm9uRmFzdFNjcm9sbGFibGVSZWN0cyhjb25zdCBGcmFtZSYgZnJhbWUpCiB7CiAgICAgaWYgKERv
Y3VtZW50KiBkb2N1bWVudCA9IG1fbWFpbkZyYW1lLT5kb2N1bWVudCgpKQogICAgICAgICBkb2N1
bWVudC0+dXBkYXRlTGF5b3V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCmluZGV4IDZlNzA1ZjRkZTE4ODU5MjJi
ZWNiNGFmNjZhMjFmMjkzMjliZTdhNGIuLmEyYTBmODQ2Mjk0NzFmZTMwNDg4N2Q1NGVkZWU5MmIz
ZDYzOTA1ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCkBAIC0xOTMsNyArMTkzLDcgQEAgcHVibGljOgogCiAg
ICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4dCgpOwogICAg
IFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnNBc1RleHQo
KTsKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWY8Q2xpZW50UmVjdExpc3Q+IG5vbkZhc3RTY3JvbGxh
YmxlUmVjdHMoY29uc3QgRnJhbWUqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8Q2xpZW50UmVj
dExpc3Q+IG5vbkZhc3RTY3JvbGxhYmxlUmVjdHMoY29uc3QgRnJhbWUmKTsKIAogICAgIFNldHRp
bmdzJiBzZXR0aW5ncygpIGNvbnN0IHsgcmV0dXJuICptX3NldHRpbmdzOyB9CiAgICAgUHJvZ3Jl
c3NUcmFja2VyJiBwcm9ncmVzcygpIGNvbnN0IHsgcmV0dXJuICptX3Byb2dyZXNzOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5n
Q29vcmRpbmF0b3IuY3BwCmluZGV4IGUzMjA2NTgyM2MwMzI1MWZhNDQ3MTQ3MGI4MmM3OWZmN2Qy
ODAyOTkuLjllZDU4YWE5NGM3NjJhMGVmNTNjMjVjMGQ1M2YzMGM1ZGU5ZTIzYTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5n
Q29vcmRpbmF0b3IuY3BwCkBAIC03Myw3ICs3Myw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBzZXRT
dGF0ZVNjcm9sbGluZ05vZGVTbmFwT2Zmc2V0c0FzRmxvYXQoU2Nyb2xsaW5nU3RhdGVTY3JvbGxp
CiAgICAgICAgIG5vZGUuc2V0VmVydGljYWxTbmFwT2Zmc2V0cyhzbmFwT2Zmc2V0c0FzRmxvYXQp
OwogfQogCi12b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZyYW1lVmlld0xheW91dFVw
ZGF0ZWQoRnJhbWVWaWV3KiBmcmFtZVZpZXcpCit2b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0
b3I6OmZyYW1lVmlld0xheW91dFVwZGF0ZWQoRnJhbWVWaWV3JiBmcmFtZVZpZXcpCiB7CiAgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlQobV9wYWdlKTsKQEAgLTg3LDU4ICs4
Nyw1OCBAQCB2b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZyYW1lVmlld0xheW91dFVw
ZGF0ZWQoRnJhbWVWaWV3KiBmcmFtZVZpZXcpCiAgICAgLy8gZnJhbWUgdmlldyB3aG9zZSBsYXlv
dXQgd2FzIHVwZGF0ZWQgaXMgbm90IHRoZSBtYWluIGZyYW1lLgogICAgIC8vIEluIHRoZSBmdXR1
cmUsIHdlIG1heSB3YW50IHRvIGhhdmUgdGhlIGFiaWxpdHkgdG8gc2V0IG5vbi1mYXN0IHNjcm9s
bGluZyByZWdpb25zIGZvciBtb3JlIHRoYW4KICAgICAvLyBqdXN0IHRoZSByb290IG5vZGUuIEJ1
dCByaWdodCBub3csIHRoaXMgY29uY2VwdCBvbmx5IGFwcGxpZXMgdG8gdGhlIHJvb3QuCi0gICAg
bV9zY3JvbGxpbmdTdGF0ZVRyZWUtPnJvb3RTdGF0ZU5vZGUoKS0+c2V0Tm9uRmFzdFNjcm9sbGFi
bGVSZWdpb24oY29tcHV0ZU5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uKCZtX3BhZ2UtPm1haW5GcmFt
ZSgpLCBJbnRQb2ludCgpKSk7CisgICAgbV9zY3JvbGxpbmdTdGF0ZVRyZWUtPnJvb3RTdGF0ZU5v
ZGUoKS0+c2V0Tm9uRmFzdFNjcm9sbGFibGVSZWdpb24oY29tcHV0ZU5vbkZhc3RTY3JvbGxhYmxl
UmVnaW9uKG1fcGFnZS0+bWFpbkZyYW1lKCksIEludFBvaW50KCkpKTsKIAogICAgIGlmICghY29v
cmRpbmF0ZXNTY3JvbGxpbmdGb3JGcmFtZVZpZXcoZnJhbWVWaWV3KSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGUqIG5vZGUgPSBkb3duY2Fz
dDxTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZT4obV9zY3JvbGxpbmdTdGF0ZVRyZWUt
PnN0YXRlTm9kZUZvcklEKGZyYW1lVmlldy0+c2Nyb2xsTGF5ZXJJRCgpKSk7CisgICAgU2Nyb2xs
aW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGUqIG5vZGUgPSBkb3duY2FzdDxTY3JvbGxpbmdTdGF0
ZUZyYW1lU2Nyb2xsaW5nTm9kZT4obV9zY3JvbGxpbmdTdGF0ZVRyZWUtPnN0YXRlTm9kZUZvcklE
KGZyYW1lVmlldy5zY3JvbGxMYXllcklEKCkpKTsKICAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIFNjcm9sbGJhciogdmVydGljYWxTY3JvbGxiYXIgPSBmcmFtZVZpZXctPnZl
cnRpY2FsU2Nyb2xsYmFyKCk7Ci0gICAgU2Nyb2xsYmFyKiBob3Jpem9udGFsU2Nyb2xsYmFyID0g
ZnJhbWVWaWV3LT5ob3Jpem9udGFsU2Nyb2xsYmFyKCk7CisgICAgU2Nyb2xsYmFyKiB2ZXJ0aWNh
bFNjcm9sbGJhciA9IGZyYW1lVmlldy52ZXJ0aWNhbFNjcm9sbGJhcigpOworICAgIFNjcm9sbGJh
ciogaG9yaXpvbnRhbFNjcm9sbGJhciA9IGZyYW1lVmlldy5ob3Jpem9udGFsU2Nyb2xsYmFyKCk7
CiAgICAgbm9kZS0+c2V0U2Nyb2xsYmFyUGFpbnRlcnNGcm9tU2Nyb2xsYmFycyh2ZXJ0aWNhbFNj
cm9sbGJhciwgaG9yaXpvbnRhbFNjcm9sbGJhcik7CiAgICAgCi0gICAgbm9kZS0+c2V0RnJhbWVT
Y2FsZUZhY3RvcihmcmFtZVZpZXctPmZyYW1lKCkuZnJhbWVTY2FsZUZhY3RvcigpKTsKLSAgICBu
b2RlLT5zZXRIZWFkZXJIZWlnaHQoZnJhbWVWaWV3LT5oZWFkZXJIZWlnaHQoKSk7Ci0gICAgbm9k
ZS0+c2V0Rm9vdGVySGVpZ2h0KGZyYW1lVmlldy0+Zm9vdGVySGVpZ2h0KCkpOwotICAgIG5vZGUt
PnNldFRvcENvbnRlbnRJbnNldChmcmFtZVZpZXctPnRvcENvbnRlbnRJbnNldCgpKTsKKyAgICBu
b2RlLT5zZXRGcmFtZVNjYWxlRmFjdG9yKGZyYW1lVmlldy5mcmFtZSgpLmZyYW1lU2NhbGVGYWN0
b3IoKSk7CisgICAgbm9kZS0+c2V0SGVhZGVySGVpZ2h0KGZyYW1lVmlldy5oZWFkZXJIZWlnaHQo
KSk7CisgICAgbm9kZS0+c2V0Rm9vdGVySGVpZ2h0KGZyYW1lVmlldy5mb290ZXJIZWlnaHQoKSk7
CisgICAgbm9kZS0+c2V0VG9wQ29udGVudEluc2V0KGZyYW1lVmlldy50b3BDb250ZW50SW5zZXQo
KSk7CiAKLSAgICBub2RlLT5zZXRTY3JvbGxPcmlnaW4oZnJhbWVWaWV3LT5zY3JvbGxPcmlnaW4o
KSk7Ci0gICAgbm9kZS0+c2V0U2Nyb2xsYWJsZUFyZWFTaXplKGZyYW1lVmlldy0+dmlzaWJsZUNv
bnRlbnRSZWN0KCkuc2l6ZSgpKTsKLSAgICBub2RlLT5zZXRUb3RhbENvbnRlbnRzU2l6ZShmcmFt
ZVZpZXctPnRvdGFsQ29udGVudHNTaXplKCkpOwotICAgIG5vZGUtPnNldFJlYWNoYWJsZUNvbnRl
bnRzU2l6ZShmcmFtZVZpZXctPnRvdGFsQ29udGVudHNTaXplKCkpOworICAgIG5vZGUtPnNldFNj
cm9sbE9yaWdpbihmcmFtZVZpZXcuc2Nyb2xsT3JpZ2luKCkpOworICAgIG5vZGUtPnNldFNjcm9s
bGFibGVBcmVhU2l6ZShmcmFtZVZpZXcudmlzaWJsZUNvbnRlbnRSZWN0KCkuc2l6ZSgpKTsKKyAg
ICBub2RlLT5zZXRUb3RhbENvbnRlbnRzU2l6ZShmcmFtZVZpZXcudG90YWxDb250ZW50c1NpemUo
KSk7CisgICAgbm9kZS0+c2V0UmVhY2hhYmxlQ29udGVudHNTaXplKGZyYW1lVmlldy50b3RhbENv
bnRlbnRzU2l6ZSgpKTsKIAogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCi0gICAgZnJhbWVW
aWV3LT51cGRhdGVTbmFwT2Zmc2V0cygpOwotICAgIGlmIChjb25zdCBWZWN0b3I8TGF5b3V0VW5p
dD4qIGhvcml6b250YWxTbmFwT2Zmc2V0cyA9IGZyYW1lVmlldy0+aG9yaXpvbnRhbFNuYXBPZmZz
ZXRzKCkpCisgICAgZnJhbWVWaWV3LnVwZGF0ZVNuYXBPZmZzZXRzKCk7CisgICAgaWYgKGNvbnN0
IFZlY3RvcjxMYXlvdXRVbml0PiogaG9yaXpvbnRhbFNuYXBPZmZzZXRzID0gZnJhbWVWaWV3Lmhv
cml6b250YWxTbmFwT2Zmc2V0cygpKQogICAgICAgICBzZXRTdGF0ZVNjcm9sbGluZ05vZGVTbmFw
T2Zmc2V0c0FzRmxvYXQoKm5vZGUsIFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCwgKmhvcml6
b250YWxTbmFwT2Zmc2V0cywgbV9wYWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpKTsKIAotICAgIGlm
IChjb25zdCBWZWN0b3I8TGF5b3V0VW5pdD4qIHZlcnRpY2FsU25hcE9mZnNldHMgPSBmcmFtZVZp
ZXctPnZlcnRpY2FsU25hcE9mZnNldHMoKSkKKyAgICBpZiAoY29uc3QgVmVjdG9yPExheW91dFVu
aXQ+KiB2ZXJ0aWNhbFNuYXBPZmZzZXRzID0gZnJhbWVWaWV3LnZlcnRpY2FsU25hcE9mZnNldHMo
KSkKICAgICAgICAgc2V0U3RhdGVTY3JvbGxpbmdOb2RlU25hcE9mZnNldHNBc0Zsb2F0KCpub2Rl
LCBTY3JvbGxFdmVudEF4aXM6OlZlcnRpY2FsLCAqdmVydGljYWxTbmFwT2Zmc2V0cywgbV9wYWdl
LT5kZXZpY2VTY2FsZUZhY3RvcigpKTsKICNlbmRpZgogCiAgICAgU2Nyb2xsYWJsZUFyZWFQYXJh
bWV0ZXJzIHNjcm9sbFBhcmFtZXRlcnM7Ci0gICAgc2Nyb2xsUGFyYW1ldGVycy5ob3Jpem9udGFs
U2Nyb2xsRWxhc3RpY2l0eSA9IGZyYW1lVmlldy0+aG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHko
KTsKLSAgICBzY3JvbGxQYXJhbWV0ZXJzLnZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eSA9IGZyYW1l
Vmlldy0+dmVydGljYWxTY3JvbGxFbGFzdGljaXR5KCk7CisgICAgc2Nyb2xsUGFyYW1ldGVycy5o
b3Jpem9udGFsU2Nyb2xsRWxhc3RpY2l0eSA9IGZyYW1lVmlldy5ob3Jpem9udGFsU2Nyb2xsRWxh
c3RpY2l0eSgpOworICAgIHNjcm9sbFBhcmFtZXRlcnMudmVydGljYWxTY3JvbGxFbGFzdGljaXR5
ID0gZnJhbWVWaWV3LnZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eSgpOwogICAgIHNjcm9sbFBhcmFt
ZXRlcnMuaGFzRW5hYmxlZEhvcml6b250YWxTY3JvbGxiYXIgPSBob3Jpem9udGFsU2Nyb2xsYmFy
ICYmIGhvcml6b250YWxTY3JvbGxiYXItPmVuYWJsZWQoKTsKICAgICBzY3JvbGxQYXJhbWV0ZXJz
Lmhhc0VuYWJsZWRWZXJ0aWNhbFNjcm9sbGJhciA9IHZlcnRpY2FsU2Nyb2xsYmFyICYmIHZlcnRp
Y2FsU2Nyb2xsYmFyLT5lbmFibGVkKCk7Ci0gICAgc2Nyb2xsUGFyYW1ldGVycy5ob3Jpem9udGFs
U2Nyb2xsYmFyTW9kZSA9IGZyYW1lVmlldy0+aG9yaXpvbnRhbFNjcm9sbGJhck1vZGUoKTsKLSAg
ICBzY3JvbGxQYXJhbWV0ZXJzLnZlcnRpY2FsU2Nyb2xsYmFyTW9kZSA9IGZyYW1lVmlldy0+dmVy
dGljYWxTY3JvbGxiYXJNb2RlKCk7CisgICAgc2Nyb2xsUGFyYW1ldGVycy5ob3Jpem9udGFsU2Ny
b2xsYmFyTW9kZSA9IGZyYW1lVmlldy5ob3Jpem9udGFsU2Nyb2xsYmFyTW9kZSgpOworICAgIHNj
cm9sbFBhcmFtZXRlcnMudmVydGljYWxTY3JvbGxiYXJNb2RlID0gZnJhbWVWaWV3LnZlcnRpY2Fs
U2Nyb2xsYmFyTW9kZSgpOwogCiAgICAgbm9kZS0+c2V0U2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJz
KHNjcm9sbFBhcmFtZXRlcnMpOwogfQogCi12b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6
OmZyYW1lVmlld05vbkZhc3RTY3JvbGxhYmxlUmVnaW9uQ2hhbmdlZChGcmFtZVZpZXcqKQordm9p
ZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpmcmFtZVZpZXdOb25GYXN0U2Nyb2xsYWJsZVJl
Z2lvbkNoYW5nZWQoRnJhbWVWaWV3JikKIHsKICAgICBpZiAoIW1fc2Nyb2xsaW5nU3RhdGVUcmVl
LT5yb290U3RhdGVOb2RlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fc2Nyb2xsaW5nU3Rh
dGVUcmVlLT5yb290U3RhdGVOb2RlKCktPnNldE5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uKGNvbXB1
dGVOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbigmbV9wYWdlLT5tYWluRnJhbWUoKSwgSW50UG9pbnQo
KSkpOworICAgIG1fc2Nyb2xsaW5nU3RhdGVUcmVlLT5yb290U3RhdGVOb2RlKCktPnNldE5vbkZh
c3RTY3JvbGxhYmxlUmVnaW9uKGNvbXB1dGVOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbihtX3BhZ2Ut
Pm1haW5GcmFtZSgpLCBJbnRQb2ludCgpKSk7CiB9CiAKLXZvaWQgQXN5bmNTY3JvbGxpbmdDb29y
ZGluYXRvcjo6ZnJhbWVWaWV3Um9vdExheWVyRGlkQ2hhbmdlKEZyYW1lVmlldyogZnJhbWVWaWV3
KQordm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpmcmFtZVZpZXdSb290TGF5ZXJEaWRD
aGFuZ2UoRnJhbWVWaWV3JiBmcmFtZVZpZXcpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKICAgICBBU1NFUlQobV9wYWdlKTsKQEAgLTE0OCw3ICsxNDgsNyBAQCB2b2lkIEFzeW5jU2Ny
b2xsaW5nQ29vcmRpbmF0b3I6OmZyYW1lVmlld1Jvb3RMYXllckRpZENoYW5nZShGcmFtZVZpZXcq
IGZyYW1lVmlldwogICAgIAogICAgIC8vIEZJWE1FOiBJbiBzb21lIG5hdmlnYXRpb24gc2NlbmFy
aW9zLCB0aGUgRnJhbWVWaWV3IGhhcyBubyBSZW5kZXJWaWV3IG9yIHRoYXQgUmVuZGVyVmlldyBo
YXMgbm90IGJlZW4gY29tcG9zaXRlZC4KICAgICAvLyBUaGlzIG5lZWRzIGNsZWFuaW5nIHVwOiBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMyNzI0Ci0gICAgaWYgKCFm
cmFtZVZpZXctPnNjcm9sbExheWVySUQoKSkKKyAgICBpZiAoIWZyYW1lVmlldy5zY3JvbGxMYXll
cklEKCkpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICAvLyBJZiB0aGUgcm9vdCBsYXllciBk
b2VzIG5vdCBoYXZlIGEgU2Nyb2xsaW5nU3RhdGVOb2RlLCB0aGVuIHdlIHNob3VsZCBjcmVhdGUg
b25lLgpAQCAtMTU3LDcgKzE1Nyw3IEBAIHZvaWQgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6
ZnJhbWVWaWV3Um9vdExheWVyRGlkQ2hhbmdlKEZyYW1lVmlldyogZnJhbWVWaWV3CiAKICAgICBT
Y3JvbGxpbmdDb29yZGluYXRvcjo6ZnJhbWVWaWV3Um9vdExheWVyRGlkQ2hhbmdlKGZyYW1lVmll
dyk7CiAKLSAgICBTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZSogbm9kZSA9IGRvd25j
YXN0PFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlPihtX3Njcm9sbGluZ1N0YXRlVHJl
ZS0+c3RhdGVOb2RlRm9ySUQoZnJhbWVWaWV3LT5zY3JvbGxMYXllcklEKCkpKTsKKyAgICBTY3Jv
bGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZSogbm9kZSA9IGRvd25jYXN0PFNjcm9sbGluZ1N0
YXRlRnJhbWVTY3JvbGxpbmdOb2RlPihtX3Njcm9sbGluZ1N0YXRlVHJlZS0+c3RhdGVOb2RlRm9y
SUQoZnJhbWVWaWV3LnNjcm9sbExheWVySUQoKSkpOwogICAgIG5vZGUtPnNldExheWVyKHNjcm9s
bExheWVyRm9yRnJhbWVWaWV3KGZyYW1lVmlldykpOwogICAgIG5vZGUtPnNldFNjcm9sbGVkQ29u
dGVudHNMYXllcihyb290Q29udGVudExheWVyRm9yRnJhbWVWaWV3KGZyYW1lVmlldykpOwogICAg
IG5vZGUtPnNldENvdW50ZXJTY3JvbGxpbmdMYXllcihjb3VudGVyU2Nyb2xsaW5nTGF5ZXJGb3JG
cmFtZVZpZXcoZnJhbWVWaWV3KSk7CkBAIC0xNjUsMTAgKzE2NSwxMCBAQCB2b2lkIEFzeW5jU2Ny
b2xsaW5nQ29vcmRpbmF0b3I6OmZyYW1lVmlld1Jvb3RMYXllckRpZENoYW5nZShGcmFtZVZpZXcq
IGZyYW1lVmlldwogICAgIG5vZGUtPnNldENvbnRlbnRTaGFkb3dMYXllcihjb250ZW50U2hhZG93
TGF5ZXJGb3JGcmFtZVZpZXcoZnJhbWVWaWV3KSk7CiAgICAgbm9kZS0+c2V0SGVhZGVyTGF5ZXIo
aGVhZGVyTGF5ZXJGb3JGcmFtZVZpZXcoZnJhbWVWaWV3KSk7CiAgICAgbm9kZS0+c2V0Rm9vdGVy
TGF5ZXIoZm9vdGVyTGF5ZXJGb3JGcmFtZVZpZXcoZnJhbWVWaWV3KSk7Ci0gICAgbm9kZS0+c2V0
U2Nyb2xsQmVoYXZpb3JGb3JGaXhlZEVsZW1lbnRzKGZyYW1lVmlldy0+c2Nyb2xsQmVoYXZpb3JG
b3JGaXhlZEVsZW1lbnRzKCkpOworICAgIG5vZGUtPnNldFNjcm9sbEJlaGF2aW9yRm9yRml4ZWRF
bGVtZW50cyhmcmFtZVZpZXcuc2Nyb2xsQmVoYXZpb3JGb3JGaXhlZEVsZW1lbnRzKCkpOwogfQog
Ci1ib29sIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnJlcXVlc3RTY3JvbGxQb3NpdGlvblVw
ZGF0ZShGcmFtZVZpZXcqIGZyYW1lVmlldywgY29uc3QgSW50UG9pbnQmIHNjcm9sbFBvc2l0aW9u
KQorYm9vbCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpyZXF1ZXN0U2Nyb2xsUG9zaXRpb25V
cGRhdGUoRnJhbWVWaWV3JiBmcmFtZVZpZXcsIGNvbnN0IEludFBvaW50JiBzY3JvbGxQb3NpdGlv
bikKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VSVChtX3BhZ2UpOwpA
QCAtMTc2LDE2ICsxNzYsMTYgQEAgYm9vbCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpyZXF1
ZXN0U2Nyb2xsUG9zaXRpb25VcGRhdGUoRnJhbWVWaWV3KiBmcmFtZVZpZXcKICAgICBpZiAoIWNv
b3JkaW5hdGVzU2Nyb2xsaW5nRm9yRnJhbWVWaWV3KGZyYW1lVmlldykpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIGJvb2wgaXNQcm9ncmFtbWF0aWNTY3JvbGwgPSBmcmFtZVZpZXctPmlu
UHJvZ3JhbW1hdGljU2Nyb2xsKCk7Ci0gICAgaWYgKGlzUHJvZ3JhbW1hdGljU2Nyb2xsIHx8IGZy
YW1lVmlldy0+ZnJhbWUoKS5kb2N1bWVudCgpLT5pblBhZ2VDYWNoZSgpKQotICAgICAgICB1cGRh
dGVTY3JvbGxQb3NpdGlvbkFmdGVyQXN5bmNTY3JvbGwoZnJhbWVWaWV3LT5zY3JvbGxMYXllcklE
KCksIHNjcm9sbFBvc2l0aW9uLCBpc1Byb2dyYW1tYXRpY1Njcm9sbCwgU2V0U2Nyb2xsaW5nTGF5
ZXJQb3NpdGlvbik7CisgICAgYm9vbCBpc1Byb2dyYW1tYXRpY1Njcm9sbCA9IGZyYW1lVmlldy5p
blByb2dyYW1tYXRpY1Njcm9sbCgpOworICAgIGlmIChpc1Byb2dyYW1tYXRpY1Njcm9sbCB8fCBm
cmFtZVZpZXcuZnJhbWUoKS5kb2N1bWVudCgpLT5pblBhZ2VDYWNoZSgpKQorICAgICAgICB1cGRh
dGVTY3JvbGxQb3NpdGlvbkFmdGVyQXN5bmNTY3JvbGwoZnJhbWVWaWV3LnNjcm9sbExheWVySUQo
KSwgc2Nyb2xsUG9zaXRpb24sIGlzUHJvZ3JhbW1hdGljU2Nyb2xsLCBTZXRTY3JvbGxpbmdMYXll
clBvc2l0aW9uKTsKIAogICAgIC8vIElmIHRoaXMgZnJhbWUgdmlldydzIGRvY3VtZW50IGlzIGJl
aW5nIHB1dCBpbnRvIHRoZSBwYWdlIGNhY2hlLCB3ZSBkb24ndCB3YW50IHRvIHVwZGF0ZSBvdXIK
ICAgICAvLyBtYWluIGZyYW1lIHNjcm9sbCBwb3NpdGlvbi4gSnVzdCBsZXQgdGhlIEZyYW1lVmll
dyB0aGluayB0aGF0IHdlIGRpZC4KLSAgICBpZiAoZnJhbWVWaWV3LT5mcmFtZSgpLmRvY3VtZW50
KCktPmluUGFnZUNhY2hlKCkpCisgICAgaWYgKGZyYW1lVmlldy5mcmFtZSgpLmRvY3VtZW50KCkt
PmluUGFnZUNhY2hlKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgU2Nyb2xsaW5nU3Rh
dGVTY3JvbGxpbmdOb2RlKiBzdGF0ZU5vZGUgPSBkb3duY2FzdDxTY3JvbGxpbmdTdGF0ZVNjcm9s
bGluZ05vZGU+KG1fc2Nyb2xsaW5nU3RhdGVUcmVlLT5zdGF0ZU5vZGVGb3JJRChmcmFtZVZpZXct
PnNjcm9sbExheWVySUQoKSkpOworICAgIFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZSogc3Rh
dGVOb2RlID0gZG93bmNhc3Q8U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlPihtX3Njcm9sbGlu
Z1N0YXRlVHJlZS0+c3RhdGVOb2RlRm9ySUQoZnJhbWVWaWV3LnNjcm9sbExheWVySUQoKSkpOwog
ICAgIGlmICghc3RhdGVOb2RlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTI2MiwxOSAr
MjYyLDIxIEBAIHZvaWQgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6dXBkYXRlU2Nyb2xsUG9z
aXRpb25BZnRlckFzeW5jU2Nyb2xsKFNjcm9sbGluZ05vCiAgICAgaWYgKCFtX3BhZ2UpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0gZnJhbWVWaWV3Rm9yU2Ny
b2xsaW5nTm9kZShzY3JvbGxpbmdOb2RlSUQpOwotICAgIGlmICghZnJhbWVWaWV3KQorICAgIEZy
YW1lVmlldyogZnJhbWVWaWV3UHRyID0gZnJhbWVWaWV3Rm9yU2Nyb2xsaW5nTm9kZShzY3JvbGxp
bmdOb2RlSUQpOworICAgIGlmICghZnJhbWVWaWV3UHRyKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBpZiAoc2Nyb2xsaW5nTm9kZUlEID09IGZyYW1lVmlldy0+c2Nyb2xsTGF5ZXJJRCgpKSB7Ci0g
ICAgICAgIGJvb2wgb2xkUHJvZ3JhbW1hdGljU2Nyb2xsID0gZnJhbWVWaWV3LT5pblByb2dyYW1t
YXRpY1Njcm9sbCgpOwotICAgICAgICBmcmFtZVZpZXctPnNldEluUHJvZ3JhbW1hdGljU2Nyb2xs
KHByb2dyYW1tYXRpY1Njcm9sbCk7CisgICAgRnJhbWVWaWV3JiBmcmFtZVZpZXcgPSAqZnJhbWVW
aWV3UHRyOworCisgICAgaWYgKHNjcm9sbGluZ05vZGVJRCA9PSBmcmFtZVZpZXcuc2Nyb2xsTGF5
ZXJJRCgpKSB7CisgICAgICAgIGJvb2wgb2xkUHJvZ3JhbW1hdGljU2Nyb2xsID0gZnJhbWVWaWV3
LmluUHJvZ3JhbW1hdGljU2Nyb2xsKCk7CisgICAgICAgIGZyYW1lVmlldy5zZXRJblByb2dyYW1t
YXRpY1Njcm9sbChwcm9ncmFtbWF0aWNTY3JvbGwpOwogCi0gICAgICAgIGZyYW1lVmlldy0+c2V0
Q29uc3RyYWluc1Njcm9sbGluZ1RvQ29udGVudEVkZ2UoZmFsc2UpOwotICAgICAgICBmcmFtZVZp
ZXctPm5vdGlmeVNjcm9sbFBvc2l0aW9uQ2hhbmdlZChyb3VuZGVkSW50UG9pbnQoc2Nyb2xsUG9z
aXRpb24pKTsKLSAgICAgICAgZnJhbWVWaWV3LT5zZXRDb25zdHJhaW5zU2Nyb2xsaW5nVG9Db250
ZW50RWRnZSh0cnVlKTsKKyAgICAgICAgZnJhbWVWaWV3LnNldENvbnN0cmFpbnNTY3JvbGxpbmdU
b0NvbnRlbnRFZGdlKGZhbHNlKTsKKyAgICAgICAgZnJhbWVWaWV3Lm5vdGlmeVNjcm9sbFBvc2l0
aW9uQ2hhbmdlZChyb3VuZGVkSW50UG9pbnQoc2Nyb2xsUG9zaXRpb24pKTsKKyAgICAgICAgZnJh
bWVWaWV3LnNldENvbnN0cmFpbnNTY3JvbGxpbmdUb0NvbnRlbnRFZGdlKHRydWUpOwogCi0gICAg
ICAgIGZyYW1lVmlldy0+c2V0SW5Qcm9ncmFtbWF0aWNTY3JvbGwob2xkUHJvZ3JhbW1hdGljU2Ny
b2xsKTsKKyAgICAgICAgZnJhbWVWaWV3LnNldEluUHJvZ3JhbW1hdGljU2Nyb2xsKG9sZFByb2dy
YW1tYXRpY1Njcm9sbCk7CiAKICAgICAgICAgaWYgKEdyYXBoaWNzTGF5ZXIqIHNjcm9sbExheWVy
ID0gc2Nyb2xsTGF5ZXJGb3JGcmFtZVZpZXcoZnJhbWVWaWV3KSkgewogICAgICAgICAgICAgR3Jh
cGhpY3NMYXllciogY291bnRlclNjcm9sbGluZ0xheWVyID0gY291bnRlclNjcm9sbGluZ0xheWVy
Rm9yRnJhbWVWaWV3KGZyYW1lVmlldyk7CkBAIC0yODMsMTggKzI4NSwxOCBAQCB2b2lkIEFzeW5j
U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnVwZGF0ZVNjcm9sbFBvc2l0aW9uQWZ0ZXJBc3luY1Njcm9s
bChTY3JvbGxpbmdObwogICAgICAgICAgICAgR3JhcGhpY3NMYXllciogc2Nyb2xsZWRDb250ZW50
c0xheWVyID0gcm9vdENvbnRlbnRMYXllckZvckZyYW1lVmlldyhmcmFtZVZpZXcpOwogICAgICAg
ICAgICAgR3JhcGhpY3NMYXllciogaGVhZGVyTGF5ZXIgPSBoZWFkZXJMYXllckZvckZyYW1lVmll
dyhmcmFtZVZpZXcpOwogICAgICAgICAgICAgR3JhcGhpY3NMYXllciogZm9vdGVyTGF5ZXIgPSBm
b290ZXJMYXllckZvckZyYW1lVmlldyhmcmFtZVZpZXcpOwotICAgICAgICAgICAgTGF5b3V0U2l6
ZSBzY3JvbGxPZmZzZXRGb3JGaXhlZCA9IGZyYW1lVmlldy0+c2Nyb2xsT2Zmc2V0Rm9yRml4ZWRQ
b3NpdGlvbigpOworICAgICAgICAgICAgTGF5b3V0U2l6ZSBzY3JvbGxPZmZzZXRGb3JGaXhlZCA9
IGZyYW1lVmlldy5zY3JvbGxPZmZzZXRGb3JGaXhlZFBvc2l0aW9uKCk7CiAKLSAgICAgICAgICAg
IGZsb2F0IHRvcENvbnRlbnRJbnNldCA9IGZyYW1lVmlldy0+dG9wQ29udGVudEluc2V0KCk7Cisg
ICAgICAgICAgICBmbG9hdCB0b3BDb250ZW50SW5zZXQgPSBmcmFtZVZpZXcudG9wQ29udGVudElu
c2V0KCk7CiAgICAgICAgICAgICBGbG9hdFBvaW50IHBvc2l0aW9uRm9ySW5zZXRDbGlwTGF5ZXIg
PSBGbG9hdFBvaW50KDAsIEZyYW1lVmlldzo6eVBvc2l0aW9uRm9ySW5zZXRDbGlwTGF5ZXIoc2Ny
b2xsUG9zaXRpb24sIHRvcENvbnRlbnRJbnNldCkpOwogICAgICAgICAgICAgRmxvYXRQb2ludCBw
b3NpdGlvbkZvckNvbnRlbnRzTGF5ZXIgPSBGbG9hdFBvaW50KHNjcm9sbGVkQ29udGVudHNMYXll
ci0+cG9zaXRpb24oKS54KCksCi0gICAgICAgICAgICAgICAgRnJhbWVWaWV3Ojp5UG9zaXRpb25G
b3JSb290Q29udGVudExheWVyKHNjcm9sbFBvc2l0aW9uLCB0b3BDb250ZW50SW5zZXQsIGZyYW1l
Vmlldy0+aGVhZGVySGVpZ2h0KCkpKTsKKyAgICAgICAgICAgICAgICBGcmFtZVZpZXc6OnlQb3Np
dGlvbkZvclJvb3RDb250ZW50TGF5ZXIoc2Nyb2xsUG9zaXRpb24sIHRvcENvbnRlbnRJbnNldCwg
ZnJhbWVWaWV3LmhlYWRlckhlaWdodCgpKSk7CiAgICAgICAgICAgICBGbG9hdFBvaW50IHBvc2l0
aW9uRm9ySGVhZGVyTGF5ZXIgPSBGbG9hdFBvaW50KHNjcm9sbE9mZnNldEZvckZpeGVkLndpZHRo
KCksIEZyYW1lVmlldzo6eVBvc2l0aW9uRm9ySGVhZGVyTGF5ZXIoc2Nyb2xsUG9zaXRpb24sIHRv
cENvbnRlbnRJbnNldCkpOwogICAgICAgICAgICAgRmxvYXRQb2ludCBwb3NpdGlvbkZvckZvb3Rl
ckxheWVyID0gRmxvYXRQb2ludChzY3JvbGxPZmZzZXRGb3JGaXhlZC53aWR0aCgpLAotICAgICAg
ICAgICAgICAgIEZyYW1lVmlldzo6eVBvc2l0aW9uRm9yRm9vdGVyTGF5ZXIoc2Nyb2xsUG9zaXRp
b24sIHRvcENvbnRlbnRJbnNldCwgZnJhbWVWaWV3LT50b3RhbENvbnRlbnRzU2l6ZSgpLmhlaWdo
dCgpLCBmcmFtZVZpZXctPmZvb3RlckhlaWdodCgpKSk7CisgICAgICAgICAgICAgICAgRnJhbWVW
aWV3Ojp5UG9zaXRpb25Gb3JGb290ZXJMYXllcihzY3JvbGxQb3NpdGlvbiwgdG9wQ29udGVudElu
c2V0LCBmcmFtZVZpZXcudG90YWxDb250ZW50c1NpemUoKS5oZWlnaHQoKSwgZnJhbWVWaWV3LmZv
b3RlckhlaWdodCgpKSk7CiAKICAgICAgICAgICAgIGlmIChwcm9ncmFtbWF0aWNTY3JvbGwgfHwg
c2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbiA9PSBTZXRTY3JvbGxpbmdMYXllclBvc2l0aW9u
KSB7Ci0gICAgICAgICAgICAgICAgc2Nyb2xsTGF5ZXItPnNldFBvc2l0aW9uKC1mcmFtZVZpZXct
PnNjcm9sbFBvc2l0aW9uKCkpOworICAgICAgICAgICAgICAgIHNjcm9sbExheWVyLT5zZXRQb3Np
dGlvbigtZnJhbWVWaWV3LnNjcm9sbFBvc2l0aW9uKCkpOwogICAgICAgICAgICAgICAgIGlmIChj
b3VudGVyU2Nyb2xsaW5nTGF5ZXIpCiAgICAgICAgICAgICAgICAgICAgIGNvdW50ZXJTY3JvbGxp
bmdMYXllci0+c2V0UG9zaXRpb24odG9MYXlvdXRQb2ludChzY3JvbGxPZmZzZXRGb3JGaXhlZCkp
OwogICAgICAgICAgICAgICAgIGlmIChpbnNldENsaXBMYXllcikKQEAgLTMwOCw3ICszMTAsNyBA
QCB2b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnVwZGF0ZVNjcm9sbFBvc2l0aW9uQWZ0
ZXJBc3luY1Njcm9sbChTY3JvbGxpbmdObwogICAgICAgICAgICAgICAgIGlmIChmb290ZXJMYXll
cikKICAgICAgICAgICAgICAgICAgICAgZm9vdGVyTGF5ZXItPnNldFBvc2l0aW9uKHBvc2l0aW9u
Rm9yRm9vdGVyTGF5ZXIpOwogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBz
Y3JvbGxMYXllci0+c3luY1Bvc2l0aW9uKC1mcmFtZVZpZXctPnNjcm9sbFBvc2l0aW9uKCkpOwor
ICAgICAgICAgICAgICAgIHNjcm9sbExheWVyLT5zeW5jUG9zaXRpb24oLWZyYW1lVmlldy5zY3Jv
bGxQb3NpdGlvbigpKTsKICAgICAgICAgICAgICAgICBpZiAoY291bnRlclNjcm9sbGluZ0xheWVy
KQogICAgICAgICAgICAgICAgICAgICBjb3VudGVyU2Nyb2xsaW5nTGF5ZXItPnN5bmNQb3NpdGlv
bih0b0xheW91dFBvaW50KHNjcm9sbE9mZnNldEZvckZpeGVkKSk7CiAgICAgICAgICAgICAgICAg
aWYgKGluc2V0Q2xpcExheWVyKQpAQCAtMzIyLDcgKzMyNCw3IEBAIHZvaWQgQXN5bmNTY3JvbGxp
bmdDb29yZGluYXRvcjo6dXBkYXRlU2Nyb2xsUG9zaXRpb25BZnRlckFzeW5jU2Nyb2xsKFNjcm9s
bGluZ05vCiAgICAgICAgICAgICAgICAgaWYgKGZvb3RlckxheWVyKQogICAgICAgICAgICAgICAg
ICAgICBmb290ZXJMYXllci0+c3luY1Bvc2l0aW9uKHBvc2l0aW9uRm9yRm9vdGVyTGF5ZXIpOwog
Ci0gICAgICAgICAgICAgICAgTGF5b3V0UmVjdCB2aWV3cG9ydFJlY3QgPSBmcmFtZVZpZXctPnZp
ZXdwb3J0Q29uc3RyYWluZWRWaXNpYmxlQ29udGVudFJlY3QoKTsKKyAgICAgICAgICAgICAgICBM
YXlvdXRSZWN0IHZpZXdwb3J0UmVjdCA9IGZyYW1lVmlldy52aWV3cG9ydENvbnN0cmFpbmVkVmlz
aWJsZUNvbnRlbnRSZWN0KCk7CiAgICAgICAgICAgICAgICAgc3luY0NoaWxkUG9zaXRpb25zKHZp
ZXdwb3J0UmVjdCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTMzMSw3ICszMzMsNyBA
QCB2b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnVwZGF0ZVNjcm9sbFBvc2l0aW9uQWZ0
ZXJBc3luY1Njcm9sbChTY3JvbGxpbmdObwogICAgIH0KIAogICAgIC8vIE92ZXJmbG93LXNjcm9s
bCBhcmVhLgotICAgIGlmIChTY3JvbGxhYmxlQXJlYSogc2Nyb2xsYWJsZUFyZWEgPSBmcmFtZVZp
ZXctPnNjcm9sbGFibGVBcmVhRm9yU2Nyb2xsTGF5ZXJJRChzY3JvbGxpbmdOb2RlSUQpKSB7Cisg
ICAgaWYgKFNjcm9sbGFibGVBcmVhKiBzY3JvbGxhYmxlQXJlYSA9IGZyYW1lVmlldy5zY3JvbGxh
YmxlQXJlYUZvclNjcm9sbExheWVySUQoc2Nyb2xsaW5nTm9kZUlEKSkgewogICAgICAgICBzY3Jv
bGxhYmxlQXJlYS0+c2V0SXNVc2VyU2Nyb2xsKHNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb24g
PT0gU3luY1Njcm9sbGluZ0xheWVyUG9zaXRpb24pOwogICAgICAgICBzY3JvbGxhYmxlQXJlYS0+
c2Nyb2xsVG9PZmZzZXRXaXRob3V0QW5pbWF0aW9uKHNjcm9sbFBvc2l0aW9uKTsKICAgICAgICAg
c2Nyb2xsYWJsZUFyZWEtPnNldElzVXNlclNjcm9sbChmYWxzZSk7CkBAIC0zNDAsMTggKzM0Miwx
OCBAQCB2b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnVwZGF0ZVNjcm9sbFBvc2l0aW9u
QWZ0ZXJBc3luY1Njcm9sbChTY3JvbGxpbmdObwogICAgIH0KIH0KIAotdm9pZCBBc3luY1Njcm9s
bGluZ0Nvb3JkaW5hdG9yOjpzY3JvbGxhYmxlQXJlYVNjcm9sbGJhckxheWVyRGlkQ2hhbmdlKFNj
cm9sbGFibGVBcmVhKiBzY3JvbGxhYmxlQXJlYSwgU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50
YXRpb24pCit2b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNjcm9sbGFibGVBcmVhU2Ny
b2xsYmFyTGF5ZXJEaWRDaGFuZ2UoU2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFibGVBcmVhLCBTY3Jv
bGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOwogICAgIEFTU0VSVChtX3BhZ2UpOwogCi0gICAgaWYgKHNjcm9sbGFibGVBcmVhICE9IHN0
YXRpY19jYXN0PFNjcm9sbGFibGVBcmVhKj4obV9wYWdlLT5tYWluRnJhbWUoKS52aWV3KCkpKQor
ICAgIGlmICgmc2Nyb2xsYWJsZUFyZWEgIT0gc3RhdGljX2Nhc3Q8U2Nyb2xsYWJsZUFyZWEqPiht
X3BhZ2UtPm1haW5GcmFtZSgpLnZpZXcoKSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChv
cmllbnRhdGlvbiA9PSBWZXJ0aWNhbFNjcm9sbGJhcikKLSAgICAgICAgc2Nyb2xsYWJsZUFyZWEt
PnZlcnRpY2FsU2Nyb2xsYmFyTGF5ZXJEaWRDaGFuZ2UoKTsKKyAgICAgICAgc2Nyb2xsYWJsZUFy
ZWEudmVydGljYWxTY3JvbGxiYXJMYXllckRpZENoYW5nZSgpOwogICAgIGVsc2UKLSAgICAgICAg
c2Nyb2xsYWJsZUFyZWEtPmhvcml6b250YWxTY3JvbGxiYXJMYXllckRpZENoYW5nZSgpOworICAg
ICAgICBzY3JvbGxhYmxlQXJlYS5ob3Jpem9udGFsU2Nyb2xsYmFyTGF5ZXJEaWRDaGFuZ2UoKTsK
IH0KIAogU2Nyb2xsaW5nTm9kZUlEIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmF0dGFjaFRv
U3RhdGVUcmVlKFNjcm9sbGluZ05vZGVUeXBlIG5vZGVUeXBlLCBTY3JvbGxpbmdOb2RlSUQgbmV3
Tm9kZUlELCBTY3JvbGxpbmdOb2RlSUQgcGFyZW50SUQpCkBAIC0zODMsMTAgKzM4NSwxMCBAQCB2
b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnN5bmNDaGlsZFBvc2l0aW9ucyhjb25zdCBM
YXlvdXRSZWN0JiB2aWV3cG9ydFJlYwogICAgICAgICBjaGlsZC0+c3luY0xheWVyUG9zaXRpb25G
b3JWaWV3cG9ydFJlY3Qodmlld3BvcnRSZWN0KTsKIH0KIAotdm9pZCBBc3luY1Njcm9sbGluZ0Nv
b3JkaW5hdG9yOjplbnN1cmVSb290U3RhdGVOb2RlRm9yRnJhbWVWaWV3KEZyYW1lVmlldyogZnJh
bWVWaWV3KQordm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjplbnN1cmVSb290U3RhdGVO
b2RlRm9yRnJhbWVWaWV3KEZyYW1lVmlldyYgZnJhbWVWaWV3KQogewotICAgIEFTU0VSVChmcmFt
ZVZpZXctPnNjcm9sbExheWVySUQoKSk7Ci0gICAgYXR0YWNoVG9TdGF0ZVRyZWUoRnJhbWVTY3Jv
bGxpbmdOb2RlLCBmcmFtZVZpZXctPnNjcm9sbExheWVySUQoKSwgMCk7CisgICAgQVNTRVJUKGZy
YW1lVmlldy5zY3JvbGxMYXllcklEKCkpOworICAgIGF0dGFjaFRvU3RhdGVUcmVlKEZyYW1lU2Ny
b2xsaW5nTm9kZSwgZnJhbWVWaWV3LnNjcm9sbExheWVySUQoKSwgMCk7CiB9CiAKIHZvaWQgQXN5
bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6dXBkYXRlRnJhbWVTY3JvbGxpbmdOb2RlKFNjcm9sbGlu
Z05vZGVJRCBub2RlSUQsIEdyYXBoaWNzTGF5ZXIqIGxheWVyLCBHcmFwaGljc0xheWVyKiBzY3Jv
bGxlZENvbnRlbnRzTGF5ZXIsIEdyYXBoaWNzTGF5ZXIqIGNvdW50ZXJTY3JvbGxpbmdMYXllciwg
R3JhcGhpY3NMYXllciogaW5zZXRDbGlwTGF5ZXIsIGNvbnN0IFNjcm9sbGluZ0dlb21ldHJ5KiBz
Y3JvbGxpbmdHZW9tZXRyeSkKQEAgLTQ4MSwxMyArNDgzLDEzIEBAIHZvaWQgQXN5bmNTY3JvbGxp
bmdDb29yZGluYXRvcjo6dXBkYXRlTWFpbkZyYW1lU2Nyb2xsTGF5ZXJQb3NpdGlvbigpCiAgICAg
aWYgKCFmcmFtZVZpZXcpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChHcmFwaGljc0xheWVy
KiBzY3JvbGxMYXllciA9IHNjcm9sbExheWVyRm9yRnJhbWVWaWV3KGZyYW1lVmlldykpCisgICAg
aWYgKEdyYXBoaWNzTGF5ZXIqIHNjcm9sbExheWVyID0gc2Nyb2xsTGF5ZXJGb3JGcmFtZVZpZXco
KmZyYW1lVmlldykpCiAgICAgICAgIHNjcm9sbExheWVyLT5zZXRQb3NpdGlvbigtZnJhbWVWaWV3
LT5zY3JvbGxQb3NpdGlvbigpKTsKIH0KIAotdm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9y
OjpyZWNvbXB1dGVXaGVlbEV2ZW50SGFuZGxlckNvdW50Rm9yRnJhbWVWaWV3KEZyYW1lVmlldyog
ZnJhbWVWaWV3KQordm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpyZWNvbXB1dGVXaGVl
bEV2ZW50SGFuZGxlckNvdW50Rm9yRnJhbWVWaWV3KEZyYW1lVmlldyYgZnJhbWVWaWV3KQogewot
ICAgIFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlKiBub2RlID0gZG93bmNhc3Q8U2Ny
b2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU+KG1fc2Nyb2xsaW5nU3RhdGVUcmVlLT5zdGF0
ZU5vZGVGb3JJRChmcmFtZVZpZXctPnNjcm9sbExheWVySUQoKSkpOworICAgIFNjcm9sbGluZ1N0
YXRlRnJhbWVTY3JvbGxpbmdOb2RlKiBub2RlID0gZG93bmNhc3Q8U2Nyb2xsaW5nU3RhdGVGcmFt
ZVNjcm9sbGluZ05vZGU+KG1fc2Nyb2xsaW5nU3RhdGVUcmVlLT5zdGF0ZU5vZGVGb3JJRChmcmFt
ZVZpZXcuc2Nyb2xsTGF5ZXJJRCgpKSk7CiAgICAgaWYgKCFub2RlKQogICAgICAgICByZXR1cm47
CiAgICAgbm9kZS0+c2V0V2hlZWxFdmVudEhhbmRsZXJDb3VudChjb21wdXRlQ3VycmVudFdoZWVs
RXZlbnRIYW5kbGVyQ291bnQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmgKaW5kZXggZTNhMjkzNDQ3MzFh
NDEyMmZlODExNmYyMWZlZDYzZDY2YzcwY2EwNC4uZjNlYmFhNDMxOWFkNmI2OGNkNDNhYTVkZDk4
MTU3YTgxOWNjZWMzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaApAQCAtNzMsMTMgKzczLDEzIEBAIHBy
aXZhdGU6CiAgICAgdmlydHVhbCBib29sIGlzQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcigpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0
c0ZpeGVkUG9zaXRpb25MYXllcnMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0g
ICAgdmlydHVhbCBib29sIGhhc1Zpc2libGVTbG93UmVwYWludFZpZXdwb3J0Q29uc3RyYWluZWRP
YmplY3RzKEZyYW1lVmlldyopIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
dmlydHVhbCBib29sIGhhc1Zpc2libGVTbG93UmVwYWludFZpZXdwb3J0Q29uc3RyYWluZWRPYmpl
Y3RzKGNvbnN0IEZyYW1lVmlldyYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAK
LSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZnJhbWVWaWV3TGF5b3V0VXBkYXRlZChG
cmFtZVZpZXcqKSBvdmVycmlkZTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZnJh
bWVWaWV3Um9vdExheWVyRGlkQ2hhbmdlKEZyYW1lVmlldyopIG92ZXJyaWRlOwotICAgIFdFQkNP
UkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBmcmFtZVZpZXdOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbkNo
YW5nZWQoRnJhbWVWaWV3Kikgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2
b2lkIGZyYW1lVmlld0xheW91dFVwZGF0ZWQoRnJhbWVWaWV3Jikgb3ZlcnJpZGU7CisgICAgV0VC
Q09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGZyYW1lVmlld1Jvb3RMYXllckRpZENoYW5nZShGcmFt
ZVZpZXcmKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZnJhbWVW
aWV3Tm9uRmFzdFNjcm9sbGFibGVSZWdpb25DaGFuZ2VkKEZyYW1lVmlldyYpIG92ZXJyaWRlOwog
Ci0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBib29sIHJlcXVlc3RTY3JvbGxQb3NpdGlvblVw
ZGF0ZShGcmFtZVZpZXcqLCBjb25zdCBJbnRQb2ludCYpIG92ZXJyaWRlOworICAgIFdFQkNPUkVf
RVhQT1JUIHZpcnR1YWwgYm9vbCByZXF1ZXN0U2Nyb2xsUG9zaXRpb25VcGRhdGUoRnJhbWVWaWV3
JiwgY29uc3QgSW50UG9pbnQmKSBvdmVycmlkZTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1
YWwgU2Nyb2xsaW5nTm9kZUlEIGF0dGFjaFRvU3RhdGVUcmVlKFNjcm9sbGluZ05vZGVUeXBlLCBT
Y3JvbGxpbmdOb2RlSUQgbmV3Tm9kZUlELCBTY3JvbGxpbmdOb2RlSUQgcGFyZW50SUQpIG92ZXJy
aWRlOwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBkZXRhY2hGcm9tU3RhdGVUcmVl
KFNjcm9sbGluZ05vZGVJRCkgb3ZlcnJpZGU7CkBAIC05NCwxNCArOTQsMTQgQEAgcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0U2Nyb2xsUGlubmluZ0JlaGF2aW9yKFNjcm9sbFBpbm5pbmdC
ZWhhdmlvcikgb3ZlcnJpZGU7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgc3lu
Y0NoaWxkUG9zaXRpb25zKGNvbnN0IExheW91dFJlY3QmIHZpZXdwb3J0UmVjdCkgb3ZlcnJpZGU7
Ci0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHNjcm9sbGFibGVBcmVhU2Nyb2xsYmFy
TGF5ZXJEaWRDaGFuZ2UoU2Nyb2xsYWJsZUFyZWEqLCBTY3JvbGxiYXJPcmllbnRhdGlvbikgb3Zl
cnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHNjcm9sbGFibGVBcmVhU2Ny
b2xsYmFyTGF5ZXJEaWRDaGFuZ2UoU2Nyb2xsYWJsZUFyZWEmLCBTY3JvbGxiYXJPcmllbnRhdGlv
bikgb3ZlcnJpZGU7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgcmVjb21wdXRl
V2hlZWxFdmVudEhhbmRsZXJDb3VudEZvckZyYW1lVmlldyhGcmFtZVZpZXcqKSBvdmVycmlkZTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgcmVjb21wdXRlV2hlZWxFdmVudEhhbmRs
ZXJDb3VudEZvckZyYW1lVmlldyhGcmFtZVZpZXcmKSBvdmVycmlkZTsKICAgICBXRUJDT1JFX0VY
UE9SVCB2aXJ0dWFsIHZvaWQgc2V0U3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zKFN5bmNocm9u
b3VzU2Nyb2xsaW5nUmVhc29ucykgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1
bGVUcmVlU3RhdGVDb21taXQoKSA9IDA7CiAKLSAgICB2b2lkIGVuc3VyZVJvb3RTdGF0ZU5vZGVG
b3JGcmFtZVZpZXcoRnJhbWVWaWV3Kik7CisgICAgdm9pZCBlbnN1cmVSb290U3RhdGVOb2RlRm9y
RnJhbWVWaWV3KEZyYW1lVmlldyYpOwogICAgIHZvaWQgdXBkYXRlTWFpbkZyYW1lU2Nyb2xsTGF5
ZXJQb3NpdGlvbigpOwogCiAgICAgdm9pZCB1cGRhdGVTY3JvbGxQb3NpdGlvbkFmdGVyQXN5bmNT
Y3JvbGxUaW1lckZpcmVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHAKaW5kZXggYmQzY2VhMzM3OTExY2I4ZWQ4M2Mx
NTkyMTU0ZTcxMmUzYzE4ZWI3ZS4uYjA4N2FkN2NkZGNlZmRmZmE2ODYwMWVlODVjYWVjYzgwNzNk
NmE0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
Q29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bGluZ0Nvb3JkaW5hdG9yLmNwcApAQCAtNzksMTUgKzc5LDE1IEBAIFNjcm9sbGluZ0Nvb3JkaW5h
dG9yOjp+U2Nyb2xsaW5nQ29vcmRpbmF0b3IoKQogdm9pZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6
cGFnZURlc3Ryb3llZCgpCiB7CiAgICAgQVNTRVJUKG1fcGFnZSk7Ci0gICAgbV9wYWdlID0gMDsK
KyAgICBtX3BhZ2UgPSBudWxscHRyOwogfQogCi1ib29sIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpj
b29yZGluYXRlc1Njcm9sbGluZ0ZvckZyYW1lVmlldyhGcmFtZVZpZXcqIGZyYW1lVmlldykgY29u
c3QKK2Jvb2wgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmNvb3JkaW5hdGVzU2Nyb2xsaW5nRm9yRnJh
bWVWaWV3KGNvbnN0IEZyYW1lVmlldyYgZnJhbWVWaWV3KSBjb25zdAogewogICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKG1fcGFnZSk7CiAKLSAgICBpZiAoIWZyYW1lVmll
dy0+ZnJhbWUoKS5pc01haW5GcmFtZSgpICYmICFtX3BhZ2UtPnNldHRpbmdzKCkuc2Nyb2xsaW5n
VHJlZUluY2x1ZGVzRnJhbWVzKCkpCisgICAgaWYgKCFmcmFtZVZpZXcuZnJhbWUoKS5pc01haW5G
cmFtZSgpICYmICFtX3BhZ2UtPnNldHRpbmdzKCkuc2Nyb2xsaW5nVHJlZUluY2x1ZGVzRnJhbWVz
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIFJlbmRlclZpZXcqIHJlbmRlclZpZXcg
PSBtX3BhZ2UtPm1haW5GcmFtZSgpLmNvbnRlbnRSZW5kZXJlcigpOwpAQCAtOTYsNyArOTYsNyBA
QCBib29sIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpjb29yZGluYXRlc1Njcm9sbGluZ0ZvckZyYW1l
VmlldyhGcmFtZVZpZXcqIGZyYW1lVmlldwogICAgIHJldHVybiByZW5kZXJWaWV3LT51c2VzQ29t
cG9zaXRpbmcoKTsKIH0KIAotUmVnaW9uIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpjb21wdXRlTm9u
RmFzdFNjcm9sbGFibGVSZWdpb24oY29uc3QgRnJhbWUqIGZyYW1lLCBjb25zdCBJbnRQb2ludCYg
ZnJhbWVMb2NhdGlvbikgY29uc3QKK1JlZ2lvbiBTY3JvbGxpbmdDb29yZGluYXRvcjo6Y29tcHV0
ZU5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uKGNvbnN0IEZyYW1lJiBmcmFtZSwgY29uc3QgSW50UG9p
bnQmIGZyYW1lTG9jYXRpb24pIGNvbnN0CiB7CiAjaWYgRU5BQkxFKElPU19UT1VDSF9FVkVOVFMp
CiAgICAgLy8gT24gaU9TLCB3ZSB1c2Ugbm9uRmFzdFNjcm9sbGFibGVSZWdpb24gdG8gcmVwcmVz
ZW50IHRoZSByZWdpb24gY292ZXJlZCBieSBlbGVtZW50cyB3aXRoIHRvdWNoIGV2ZW50IGhhbmRs
ZXJzLgpAQCAtMTE3LDcgKzExNyw3IEBAIFJlZ2lvbiBTY3JvbGxpbmdDb29yZGluYXRvcjo6Y29t
cHV0ZU5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uKGNvbnN0IEZyYW1lKiBmcmFtZSwKICAgICByZXR1
cm4gdG91Y2hSZWdpb247CiAjZWxzZQogICAgIFJlZ2lvbiBub25GYXN0U2Nyb2xsYWJsZVJlZ2lv
bjsKLSAgICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IGZyYW1lLT52aWV3KCk7CisgICAgRnJhbWVW
aWV3KiBmcmFtZVZpZXcgPSBmcmFtZS52aWV3KCk7CiAgICAgaWYgKCFmcmFtZVZpZXcpCiAgICAg
ICAgIHJldHVybiBub25GYXN0U2Nyb2xsYWJsZVJlZ2lvbjsKIApAQCAtMTQ1LDggKzE0NSw4IEBA
IFJlZ2lvbiBTY3JvbGxpbmdDb29yZGluYXRvcjo6Y29tcHV0ZU5vbkZhc3RTY3JvbGxhYmxlUmVn
aW9uKGNvbnN0IEZyYW1lKiBmcmFtZSwKICAgICAgICAgICAgIG5vbkZhc3RTY3JvbGxhYmxlUmVn
aW9uLnVuaXRlKHBsdWdpblZpZXdCYXNlLmZyYW1lUmVjdCgpKTsKICAgICB9CiAKLSAgICBmb3Ig
KEZyYW1lKiBzdWJmcmFtZSA9IGZyYW1lLT50cmVlKCkuZmlyc3RDaGlsZCgpOyBzdWJmcmFtZTsg
c3ViZnJhbWUgPSBzdWJmcmFtZS0+dHJlZSgpLm5leHRTaWJsaW5nKCkpCi0gICAgICAgIG5vbkZh
c3RTY3JvbGxhYmxlUmVnaW9uLnVuaXRlKGNvbXB1dGVOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbihz
dWJmcmFtZSwgb2Zmc2V0KSk7CisgICAgZm9yIChGcmFtZSogc3ViZnJhbWUgPSBmcmFtZS50cmVl
KCkuZmlyc3RDaGlsZCgpOyBzdWJmcmFtZTsgc3ViZnJhbWUgPSBzdWJmcmFtZS0+dHJlZSgpLm5l
eHRTaWJsaW5nKCkpCisgICAgICAgIG5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uLnVuaXRlKGNvbXB1
dGVOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbigqc3ViZnJhbWUsIG9mZnNldCkpOwogCiAgICAgcmV0
dXJuIG5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uOwogI2VuZGlmCkBAIC0xNjQsNyArMTY0LDcgQEAg
dW5zaWduZWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmNvbXB1dGVDdXJyZW50V2hlZWxFdmVudEhh
bmRsZXJDb3VudCgpCiAgICAgcmV0dXJuIHdoZWVsRXZlbnRIYW5kbGVyQ291bnQ7CiB9CiAKLXZv
aWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZyYW1lVmlld1doZWVsRXZlbnRIYW5kbGVyQ291bnRD
aGFuZ2VkKEZyYW1lVmlldyogZnJhbWVWaWV3KQordm9pZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6
ZnJhbWVWaWV3V2hlZWxFdmVudEhhbmRsZXJDb3VudENoYW5nZWQoRnJhbWVWaWV3JiBmcmFtZVZp
ZXcpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlQobV9wYWdlKTsK
QEAgLTE3Miw3ICsxNzIsNyBAQCB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpmcmFtZVZpZXdX
aGVlbEV2ZW50SGFuZGxlckNvdW50Q2hhbmdlZChGcmFtZVZpZXcqIGZyYQogICAgIHJlY29tcHV0
ZVdoZWVsRXZlbnRIYW5kbGVyQ291bnRGb3JGcmFtZVZpZXcoZnJhbWVWaWV3KTsKIH0KIAotdm9p
ZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6ZnJhbWVWaWV3SGFzU2xvd1JlcGFpbnRPYmplY3RzRGlk
Q2hhbmdlKEZyYW1lVmlldyogZnJhbWVWaWV3KQordm9pZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6
ZnJhbWVWaWV3SGFzU2xvd1JlcGFpbnRPYmplY3RzRGlkQ2hhbmdlKEZyYW1lVmlldyYgZnJhbWVW
aWV3KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKG1fcGFnZSk7
CkBAIC0xODMsNyArMTgzLDcgQEAgdm9pZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6ZnJhbWVWaWV3
SGFzU2xvd1JlcGFpbnRPYmplY3RzRGlkQ2hhbmdlKEZyYW1lVmlldyogZnIKICAgICB1cGRhdGVT
eW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMoZnJhbWVWaWV3KTsKIH0KIAotdm9pZCBTY3JvbGxp
bmdDb29yZGluYXRvcjo6ZnJhbWVWaWV3Rml4ZWRPYmplY3RzRGlkQ2hhbmdlKEZyYW1lVmlldyog
ZnJhbWVWaWV3KQordm9pZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6ZnJhbWVWaWV3Rml4ZWRPYmpl
Y3RzRGlkQ2hhbmdlKEZyYW1lVmlldyYgZnJhbWVWaWV3KQogewogICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CiAgICAgQVNTRVJUKG1fcGFnZSk7CkBAIC0xOTQsMjIgKzE5NCwyMiBAQCB2b2lk
IFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpmcmFtZVZpZXdGaXhlZE9iamVjdHNEaWRDaGFuZ2UoRnJh
bWVWaWV3KiBmcmFtZVZpZXcpCiAgICAgdXBkYXRlU3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25z
KGZyYW1lVmlldyk7CiB9CiAKLUdyYXBoaWNzTGF5ZXIqIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpz
Y3JvbGxMYXllckZvclNjcm9sbGFibGVBcmVhKFNjcm9sbGFibGVBcmVhKiBzY3JvbGxhYmxlQXJl
YSkKK0dyYXBoaWNzTGF5ZXIqIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzY3JvbGxMYXllckZvclNj
cm9sbGFibGVBcmVhKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSkKIHsKLSAgICByZXR1
cm4gc2Nyb2xsYWJsZUFyZWEtPmxheWVyRm9yU2Nyb2xsaW5nKCk7CisgICAgcmV0dXJuIHNjcm9s
bGFibGVBcmVhLmxheWVyRm9yU2Nyb2xsaW5nKCk7CiB9CiAKLUdyYXBoaWNzTGF5ZXIqIFNjcm9s
bGluZ0Nvb3JkaW5hdG9yOjpzY3JvbGxMYXllckZvckZyYW1lVmlldyhGcmFtZVZpZXcqIGZyYW1l
VmlldykKK0dyYXBoaWNzTGF5ZXIqIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzY3JvbGxMYXllckZv
ckZyYW1lVmlldyhGcmFtZVZpZXcmIGZyYW1lVmlldykKIHsKLSAgICBpZiAoUmVuZGVyVmlldyog
cmVuZGVyVmlldyA9IGZyYW1lVmlldy0+ZnJhbWUoKS5jb250ZW50UmVuZGVyZXIoKSkKKyAgICBp
ZiAoUmVuZGVyVmlldyogcmVuZGVyVmlldyA9IGZyYW1lVmlldy5mcmFtZSgpLmNvbnRlbnRSZW5k
ZXJlcigpKQogICAgICAgICByZXR1cm4gcmVuZGVyVmlldy0+Y29tcG9zaXRvcigpLnNjcm9sbExh
eWVyKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUdyYXBoaWNzTGF5ZXIqIFNjcm9sbGlu
Z0Nvb3JkaW5hdG9yOjpoZWFkZXJMYXllckZvckZyYW1lVmlldyhGcmFtZVZpZXcqIGZyYW1lVmll
dykKK0dyYXBoaWNzTGF5ZXIqIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpoZWFkZXJMYXllckZvckZy
YW1lVmlldyhGcmFtZVZpZXcmIGZyYW1lVmlldykKIHsKICNpZiBFTkFCTEUoUlVCQkVSX0JBTkRJ
TkcpCi0gICAgaWYgKFJlbmRlclZpZXcqIHJlbmRlclZpZXcgPSBmcmFtZVZpZXctPmZyYW1lKCku
Y29udGVudFJlbmRlcmVyKCkpCisgICAgaWYgKFJlbmRlclZpZXcqIHJlbmRlclZpZXcgPSBmcmFt
ZVZpZXcuZnJhbWUoKS5jb250ZW50UmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJuIHJlbmRlclZp
ZXctPmNvbXBvc2l0b3IoKS5oZWFkZXJMYXllcigpOwogICAgIHJldHVybiBudWxscHRyOwogI2Vs
c2UKQEAgLTIxOCwxMCArMjE4LDEwIEBAIEdyYXBoaWNzTGF5ZXIqIFNjcm9sbGluZ0Nvb3JkaW5h
dG9yOjpoZWFkZXJMYXllckZvckZyYW1lVmlldyhGcmFtZVZpZXcqIGZyYW1lVmllCiAjZW5kaWYK
IH0KIAotR3JhcGhpY3NMYXllciogU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZvb3RlckxheWVyRm9y
RnJhbWVWaWV3KEZyYW1lVmlldyogZnJhbWVWaWV3KQorR3JhcGhpY3NMYXllciogU2Nyb2xsaW5n
Q29vcmRpbmF0b3I6OmZvb3RlckxheWVyRm9yRnJhbWVWaWV3KEZyYW1lVmlldyYgZnJhbWVWaWV3
KQogewogI2lmIEVOQUJMRShSVUJCRVJfQkFORElORykKLSAgICBpZiAoUmVuZGVyVmlldyogcmVu
ZGVyVmlldyA9IGZyYW1lVmlldy0+ZnJhbWUoKS5jb250ZW50UmVuZGVyZXIoKSkKKyAgICBpZiAo
UmVuZGVyVmlldyogcmVuZGVyVmlldyA9IGZyYW1lVmlldy5mcmFtZSgpLmNvbnRlbnRSZW5kZXJl
cigpKQogICAgICAgICByZXR1cm4gcmVuZGVyVmlldy0+Y29tcG9zaXRvcigpLmZvb3RlckxheWVy
KCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiAjZWxzZQpAQCAtMjMwLDI0ICsyMzAsMjQgQEAgR3Jh
cGhpY3NMYXllciogU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZvb3RlckxheWVyRm9yRnJhbWVWaWV3
KEZyYW1lVmlldyogZnJhbWVWaWUKICNlbmRpZgogfQogCi1HcmFwaGljc0xheWVyKiBTY3JvbGxp
bmdDb29yZGluYXRvcjo6Y291bnRlclNjcm9sbGluZ0xheWVyRm9yRnJhbWVWaWV3KEZyYW1lVmll
dyogZnJhbWVWaWV3KQorR3JhcGhpY3NMYXllciogU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmNvdW50
ZXJTY3JvbGxpbmdMYXllckZvckZyYW1lVmlldyhGcmFtZVZpZXcmIGZyYW1lVmlldykKIHsKLSAg
ICBpZiAoUmVuZGVyVmlldyogcmVuZGVyVmlldyA9IGZyYW1lVmlldy0+ZnJhbWUoKS5jb250ZW50
UmVuZGVyZXIoKSkKKyAgICBpZiAoUmVuZGVyVmlldyogcmVuZGVyVmlldyA9IGZyYW1lVmlldy5m
cmFtZSgpLmNvbnRlbnRSZW5kZXJlcigpKQogICAgICAgICByZXR1cm4gcmVuZGVyVmlldy0+Y29t
cG9zaXRvcigpLmZpeGVkUm9vdEJhY2tncm91bmRMYXllcigpOwogICAgIHJldHVybiBudWxscHRy
OwogfQogCi1HcmFwaGljc0xheWVyKiBTY3JvbGxpbmdDb29yZGluYXRvcjo6aW5zZXRDbGlwTGF5
ZXJGb3JGcmFtZVZpZXcoRnJhbWVWaWV3KiBmcmFtZVZpZXcpCitHcmFwaGljc0xheWVyKiBTY3Jv
bGxpbmdDb29yZGluYXRvcjo6aW5zZXRDbGlwTGF5ZXJGb3JGcmFtZVZpZXcoRnJhbWVWaWV3JiBm
cmFtZVZpZXcpCiB7Ci0gICAgaWYgKFJlbmRlclZpZXcqIHJlbmRlclZpZXcgPSBmcmFtZVZpZXct
PmZyYW1lKCkuY29udGVudFJlbmRlcmVyKCkpCisgICAgaWYgKFJlbmRlclZpZXcqIHJlbmRlclZp
ZXcgPSBmcmFtZVZpZXcuZnJhbWUoKS5jb250ZW50UmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJu
IHJlbmRlclZpZXctPmNvbXBvc2l0b3IoKS5jbGlwTGF5ZXIoKTsKICAgICByZXR1cm4gbnVsbHB0
cjsKIH0KIAotR3JhcGhpY3NMYXllciogU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmNvbnRlbnRTaGFk
b3dMYXllckZvckZyYW1lVmlldyhGcmFtZVZpZXcqIGZyYW1lVmlldykKK0dyYXBoaWNzTGF5ZXIq
IFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpjb250ZW50U2hhZG93TGF5ZXJGb3JGcmFtZVZpZXcoRnJh
bWVWaWV3JiBmcmFtZVZpZXcpCiB7CiAjaWYgRU5BQkxFKFJVQkJFUl9CQU5ESU5HKQotICAgIGlm
IChSZW5kZXJWaWV3KiByZW5kZXJWaWV3ID0gZnJhbWVWaWV3LT5mcmFtZSgpLmNvbnRlbnRSZW5k
ZXJlcigpKQorICAgIGlmIChSZW5kZXJWaWV3KiByZW5kZXJWaWV3ID0gZnJhbWVWaWV3LmZyYW1l
KCkuY29udGVudFJlbmRlcmVyKCkpCiAgICAgICAgIHJldHVybiByZW5kZXJWaWV3LT5jb21wb3Np
dG9yKCkubGF5ZXJGb3JDb250ZW50U2hhZG93KCk7CiAgICAgCiAgICAgcmV0dXJuIG51bGxwdHI7
CkBAIC0yNTcsMTQgKzI1NywxNCBAQCBHcmFwaGljc0xheWVyKiBTY3JvbGxpbmdDb29yZGluYXRv
cjo6Y29udGVudFNoYWRvd0xheWVyRm9yRnJhbWVWaWV3KEZyYW1lVmlldyogZgogI2VuZGlmCiB9
CiAKLUdyYXBoaWNzTGF5ZXIqIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpyb290Q29udGVudExheWVy
Rm9yRnJhbWVWaWV3KEZyYW1lVmlldyogZnJhbWVWaWV3KQorR3JhcGhpY3NMYXllciogU2Nyb2xs
aW5nQ29vcmRpbmF0b3I6OnJvb3RDb250ZW50TGF5ZXJGb3JGcmFtZVZpZXcoRnJhbWVWaWV3JiBm
cmFtZVZpZXcpCiB7Ci0gICAgaWYgKFJlbmRlclZpZXcqIHJlbmRlclZpZXcgPSBmcmFtZVZpZXct
PmZyYW1lKCkuY29udGVudFJlbmRlcmVyKCkpCisgICAgaWYgKFJlbmRlclZpZXcqIHJlbmRlclZp
ZXcgPSBmcmFtZVZpZXcuZnJhbWUoKS5jb250ZW50UmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJu
IHJlbmRlclZpZXctPmNvbXBvc2l0b3IoKS5yb290Q29udGVudExheWVyKCk7CiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKLXZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZyYW1lVmlld1Jvb3RM
YXllckRpZENoYW5nZShGcmFtZVZpZXcqIGZyYW1lVmlldykKK3ZvaWQgU2Nyb2xsaW5nQ29vcmRp
bmF0b3I6OmZyYW1lVmlld1Jvb3RMYXllckRpZENoYW5nZShGcmFtZVZpZXcmIGZyYW1lVmlldykK
IHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VSVChtX3BhZ2UpOwpAQCAt
MjkzLDkgKzI5Myw5IEBAIHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmhhbmRsZVdoZWVsRXZl
bnRQaGFzZShQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZSBwaGFzZSkKIH0KICNlbmRpZgogCi1ib29s
IFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpoYXNWaXNpYmxlU2xvd1JlcGFpbnRWaWV3cG9ydENvbnN0
cmFpbmVkT2JqZWN0cyhGcmFtZVZpZXcqIGZyYW1lVmlldykgY29uc3QKK2Jvb2wgU2Nyb2xsaW5n
Q29vcmRpbmF0b3I6Omhhc1Zpc2libGVTbG93UmVwYWludFZpZXdwb3J0Q29uc3RyYWluZWRPYmpl
Y3RzKGNvbnN0IEZyYW1lVmlldyYgZnJhbWVWaWV3KSBjb25zdAogewotICAgIGNvbnN0IEZyYW1l
Vmlldzo6Vmlld3BvcnRDb25zdHJhaW5lZE9iamVjdFNldCogdmlld3BvcnRDb25zdHJhaW5lZE9i
amVjdHMgPSBmcmFtZVZpZXctPnZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RzKCk7CisgICAgY29u
c3QgRnJhbWVWaWV3OjpWaWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0U2V0KiB2aWV3cG9ydENvbnN0
cmFpbmVkT2JqZWN0cyA9IGZyYW1lVmlldy52aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0cygpOwog
ICAgIGlmICghdmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHMpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIApAQCAtMzExLDExICszMTEsOCBAQCBib29sIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpoYXNW
aXNpYmxlU2xvd1JlcGFpbnRWaWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0cyhGcmFtZQogICAgIHJl
dHVybiBmYWxzZTsKIH0KIAotU3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zIFNjcm9sbGluZ0Nv
b3JkaW5hdG9yOjpzeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMoRnJhbWVWaWV3KiBmcmFtZVZp
ZXcpIGNvbnN0CitTeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMgU2Nyb2xsaW5nQ29vcmRpbmF0
b3I6OnN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucyhjb25zdCBGcmFtZVZpZXcmIGZyYW1lVmll
dykgY29uc3QKIHsKLSAgICBpZiAoIWZyYW1lVmlldykKLSAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PFN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucz4oMCk7Ci0KICAgICBTeW5jaHJvbm91c1Nj
cm9sbGluZ1JlYXNvbnMgc3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zID0gKFN5bmNocm9ub3Vz
U2Nyb2xsaW5nUmVhc29ucykwOwogCiAgICAgaWYgKG1fZm9yY2VTeW5jaHJvbm91c1Njcm9sbExh
eWVyUG9zaXRpb25VcGRhdGVzKQpAQCAtMzI1LDIzICszMjIsMjMgQEAgU3luY2hyb25vdXNTY3Jv
bGxpbmdSZWFzb25zIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzeW5jaHJvbm91c1Njcm9sbGluZ1Jl
YXNvbnMoRnIKICAgICBpZiAoY3Vyc29yLmlzQ2FwdHVyaW5nKCkgfHwgY3Vyc29yLmlzUmVwbGF5
aW5nKCkpCiAgICAgICAgIHN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucyB8PSBGb3JjZWRPbk1h
aW5UaHJlYWQ7CiAjZW5kaWYKLSAgICBpZiAoZnJhbWVWaWV3LT5oYXNTbG93UmVwYWludE9iamVj
dHMoKSkKKyAgICBpZiAoZnJhbWVWaWV3Lmhhc1Nsb3dSZXBhaW50T2JqZWN0cygpKQogICAgICAg
ICBzeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMgfD0gSGFzU2xvd1JlcGFpbnRPYmplY3RzOwot
ICAgIGlmICghc3VwcG9ydHNGaXhlZFBvc2l0aW9uTGF5ZXJzKCkgJiYgZnJhbWVWaWV3LT5oYXNW
aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0cygpKQorICAgIGlmICghc3VwcG9ydHNGaXhlZFBvc2l0
aW9uTGF5ZXJzKCkgJiYgZnJhbWVWaWV3Lmhhc1ZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RzKCkp
CiAgICAgICAgIHN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucyB8PSBIYXNWaWV3cG9ydENvbnN0
cmFpbmVkT2JqZWN0c1dpdGhvdXRTdXBwb3J0aW5nRml4ZWRMYXllcnM7CiAgICAgaWYgKHN1cHBv
cnRzRml4ZWRQb3NpdGlvbkxheWVycygpICYmIGhhc1Zpc2libGVTbG93UmVwYWludFZpZXdwb3J0
Q29uc3RyYWluZWRPYmplY3RzKGZyYW1lVmlldykpCiAgICAgICAgIHN5bmNocm9ub3VzU2Nyb2xs
aW5nUmVhc29ucyB8PSBIYXNOb25MYXllclZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RzOwotICAg
IGlmIChmcmFtZVZpZXctPmZyYW1lKCkubWFpbkZyYW1lKCkuZG9jdW1lbnQoKSAmJiBmcmFtZVZp
ZXctPmZyYW1lKCkuZG9jdW1lbnQoKS0+aXNJbWFnZURvY3VtZW50KCkpCisgICAgaWYgKGZyYW1l
Vmlldy5mcmFtZSgpLm1haW5GcmFtZSgpLmRvY3VtZW50KCkgJiYgZnJhbWVWaWV3LmZyYW1lKCku
ZG9jdW1lbnQoKS0+aXNJbWFnZURvY3VtZW50KCkpCiAgICAgICAgIHN5bmNocm9ub3VzU2Nyb2xs
aW5nUmVhc29ucyB8PSBJc0ltYWdlRG9jdW1lbnQ7CiAKICAgICByZXR1cm4gc3luY2hyb25vdXNT
Y3JvbGxpbmdSZWFzb25zOwogfQogCi12b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjp1cGRhdGVT
eW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMoRnJhbWVWaWV3KiBmcmFtZVZpZXcpCit2b2lkIFNj
cm9sbGluZ0Nvb3JkaW5hdG9yOjp1cGRhdGVTeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMoRnJh
bWVWaWV3JiBmcmFtZVZpZXcpCiB7CiAgICAgLy8gRklYTUU6IE9uY2Ugd2Ugc3VwcG9ydCBhc3lu
YyBzY3JvbGxpbmcgb2YgaWZyYW1lcywgd2UnbGwgaGF2ZSB0byB0cmFjayB0aGUgc3luY2hyb25v
dXMgc2Nyb2xsaW5nCiAgICAgLy8gcmVhc29ucyBwZXIgZnJhbWUgKG1heWJlIG9uIHNjcm9sbGlu
ZyB0cmVlIG5vZGVzKS4KLSAgICBpZiAoIWZyYW1lVmlldy0+ZnJhbWUoKS5pc01haW5GcmFtZSgp
KQorICAgIGlmICghZnJhbWVWaWV3LmZyYW1lKCkuaXNNYWluRnJhbWUoKSkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgc2V0U3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zKHN5bmNocm9ub3VzU2Ny
b2xsaW5nUmVhc29ucyhmcmFtZVZpZXcpKTsKQEAgLTM1MywxOSArMzUwLDIzIEBAIHZvaWQgU2Ny
b2xsaW5nQ29vcmRpbmF0b3I6OnNldEZvcmNlU3luY2hyb25vdXNTY3JvbGxMYXllclBvc2l0aW9u
VXBkYXRlcyhib29sIGZvCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fZm9yY2VTeW5jaHJvbm91
c1Njcm9sbExheWVyUG9zaXRpb25VcGRhdGVzID0gZm9yY2VTeW5jaHJvbm91c1Njcm9sbExheWVy
UG9zaXRpb25VcGRhdGVzOwotICAgIHVwZGF0ZVN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucyht
X3BhZ2UtPm1haW5GcmFtZSgpLnZpZXcoKSk7CisgICAgaWYgKEZyYW1lVmlldyogZnJhbWVWaWV3
ID0gbV9wYWdlLT5tYWluRnJhbWUoKS52aWV3KCkpCisgICAgICAgIHVwZGF0ZVN5bmNocm9ub3Vz
U2Nyb2xsaW5nUmVhc29ucygqZnJhbWVWaWV3KTsKIH0KIAogYm9vbCBTY3JvbGxpbmdDb29yZGlu
YXRvcjo6c2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvblN5bmNocm9ub3VzbHkoKSBjb25z
dAogewotICAgIHJldHVybiBzeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMobV9wYWdlLT5tYWlu
RnJhbWUoKS52aWV3KCkpOworICAgIGlmIChGcmFtZVZpZXcqIGZyYW1lVmlldyA9IG1fcGFnZS0+
bWFpbkZyYW1lKCkudmlldygpKQorICAgICAgICByZXR1cm4gc3luY2hyb25vdXNTY3JvbGxpbmdS
ZWFzb25zKCpmcmFtZVZpZXcpOworICAgIHJldHVybiB0cnVlOwogfQogCiAjaWYgRU5BQkxFKFdF
Ql9SRVBMQVkpCiB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpyZXBsYXlTZXNzaW9uU3RhdGVE
aWRDaGFuZ2UoKQogewogICAgIC8vIEZJWE1FOiBPbmNlIHdlIHN1cHBvcnQgYXN5bmMgc2Nyb2xs
aW5nIG9mIGlmcmFtZXMsIHRoaXMgc2hvdWxkIGdvIHRocm91Z2ggYWxsIHN1YmZyYW1lcy4KLSAg
ICB1cGRhdGVTeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMobV9wYWdlLT5tYWluRnJhbWUoKS52
aWV3KCkpOworICAgIGlmIChGcmFtZVZpZXcqIGZyYW1lVmlldyA9IG1fcGFnZS0+bWFpbkZyYW1l
KCkudmlldygpKQorICAgICAgICB1cGRhdGVTeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMoKmZy
YW1lVmlldyk7CiB9CiAjZW5kaWYKIApAQCAtNDAyLDcgKzQwMywxMCBAQCBTdHJpbmcgU2Nyb2xs
aW5nQ29vcmRpbmF0b3I6OnN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29uc0FzVGV4dChTeW5jaHJv
bm91c1Njcm9sbAogCiBTdHJpbmcgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnN5bmNocm9ub3VzU2Ny
b2xsaW5nUmVhc29uc0FzVGV4dCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN5bmNocm9ub3VzU2Ny
b2xsaW5nUmVhc29uc0FzVGV4dChzeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMobV9wYWdlLT5t
YWluRnJhbWUoKS52aWV3KCkpKTsKKyAgICBpZiAoRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBtX3Bh
Z2UtPm1haW5GcmFtZSgpLnZpZXcoKSkKKyAgICAgICAgcmV0dXJuIHN5bmNocm9ub3VzU2Nyb2xs
aW5nUmVhc29uc0FzVGV4dChzeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMoKmZyYW1lVmlldykp
OworCisgICAgcmV0dXJuIFN0cmluZygpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGlu
YXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0
b3IuaAppbmRleCBjMGM1MjdjMWMwYzRmMTFkNDM4MTBkMWI4OWFjNjNlNmQwMjg0Zjk0Li45Nzdm
OTYyN2U5ODExYWVmZTQ3MzNlY2U5ZTNlZDg0N2YzZTU1ZGU0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmgKQEAgLTExNSwy
NiArMTE1LDI2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNSZW1vdGVTY3JvbGxpbmdD
b29yZGluYXRvcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICAvLyBSZXR1cm4gd2hl
dGhlciB0aGlzIHNjcm9sbGluZyBjb29yZGluYXRvciBoYW5kbGVzIHNjcm9sbGluZyBmb3IgdGhl
IGdpdmVuIGZyYW1lIHZpZXcuCi0gICAgdmlydHVhbCBib29sIGNvb3JkaW5hdGVzU2Nyb2xsaW5n
Rm9yRnJhbWVWaWV3KEZyYW1lVmlldyopIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBjb29yZGlu
YXRlc1Njcm9sbGluZ0ZvckZyYW1lVmlldyhjb25zdCBGcmFtZVZpZXcmKSBjb25zdDsKIAogICAg
IC8vIFNob3VsZCBiZSBjYWxsZWQgd2hlbmV2ZXIgdGhlIGdpdmVuIGZyYW1lIHZpZXcgaGFzIGJl
ZW4gbGFpZCBvdXQuCi0gICAgdmlydHVhbCB2b2lkIGZyYW1lVmlld0xheW91dFVwZGF0ZWQoRnJh
bWVWaWV3KikgeyB9CisgICAgdmlydHVhbCB2b2lkIGZyYW1lVmlld0xheW91dFVwZGF0ZWQoRnJh
bWVWaWV3JikgeyB9CiAKICAgICAvLyBTaG91bGQgYmUgY2FsbGVkIHdoZW5ldmVyIGEgd2hlZWwg
ZXZlbnQgaGFuZGxlciBpcyBhZGRlZCBvciByZW1vdmVkIGluIHRoZSAKICAgICAvLyBmcmFtZSB2
aWV3J3MgdW5kZXJseWluZyBkb2N1bWVudC4KLSAgICB2b2lkIGZyYW1lVmlld1doZWVsRXZlbnRI
YW5kbGVyQ291bnRDaGFuZ2VkKEZyYW1lVmlldyopOworICAgIHZvaWQgZnJhbWVWaWV3V2hlZWxF
dmVudEhhbmRsZXJDb3VudENoYW5nZWQoRnJhbWVWaWV3Jik7CiAKICAgICAvLyBTaG91bGQgYmUg
Y2FsbGVkIHdoZW5ldmVyIHRoZSBzbG93IHJlcGFpbnQgb2JqZWN0cyBjb3VudGVyIGNoYW5nZXMg
YmV0d2VlbiB6ZXJvIGFuZCBvbmUuCi0gICAgdm9pZCBmcmFtZVZpZXdIYXNTbG93UmVwYWludE9i
amVjdHNEaWRDaGFuZ2UoRnJhbWVWaWV3Kik7CisgICAgdm9pZCBmcmFtZVZpZXdIYXNTbG93UmVw
YWludE9iamVjdHNEaWRDaGFuZ2UoRnJhbWVWaWV3Jik7CiAKICAgICAvLyBTaG91bGQgYmUgY2Fs
bGVkIHdoZW5ldmVyIHRoZSBzZXQgb2YgZml4ZWQgb2JqZWN0cyBjaGFuZ2VzLgotICAgIHZvaWQg
ZnJhbWVWaWV3Rml4ZWRPYmplY3RzRGlkQ2hhbmdlKEZyYW1lVmlldyopOworICAgIHZvaWQgZnJh
bWVWaWV3Rml4ZWRPYmplY3RzRGlkQ2hhbmdlKEZyYW1lVmlldyYpOwogCiAgICAgLy8gQ2FsbGVk
IHdoZW5ldmVyIHRoZSBub24tZmFzdCBzY3JvbGxhYmxlIHJlZ2lvbiBjaGFuZ2VzIGZvciByZWFz
b25zIG90aGVyIHRoYW4gbGF5b3V0LgotICAgIHZpcnR1YWwgdm9pZCBmcmFtZVZpZXdOb25GYXN0
U2Nyb2xsYWJsZVJlZ2lvbkNoYW5nZWQoRnJhbWVWaWV3KikgeyB9CisgICAgdmlydHVhbCB2b2lk
IGZyYW1lVmlld05vbkZhc3RTY3JvbGxhYmxlUmVnaW9uQ2hhbmdlZChGcmFtZVZpZXcmKSB7IH0K
IAogICAgIC8vIFNob3VsZCBiZSBjYWxsZWQgd2hlbmV2ZXIgdGhlIHJvb3QgbGF5ZXIgZm9yIHRo
ZSBnaXZlbiBmcmFtZSB2aWV3IGNoYW5nZXMuCi0gICAgdmlydHVhbCB2b2lkIGZyYW1lVmlld1Jv
b3RMYXllckRpZENoYW5nZShGcmFtZVZpZXcqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZnJhbWVWaWV3
Um9vdExheWVyRGlkQ2hhbmdlKEZyYW1lVmlldyYpOwogCiAgICAgLy8gUmV0dXJuIHdoZXRoZXIg
dGhpcyBzY3JvbGxpbmcgY29vcmRpbmF0b3IgY2FuIGtlZXAgZml4ZWQgcG9zaXRpb24gbGF5ZXJz
IGZpeGVkIHRvIHRoZWlyCiAgICAgLy8gY29udGFpbmVycyB3aGlsZSBzY3JvbGxpbmcuCkBAIC0x
NTYsOCArMTU2LDggQEAgcHVibGljOgogICAgIC8vIFRoZXNlIHZpcnR1YWwgZnVuY3Rpb25zIGFy
ZSBjdXJyZW50bHkgdW5pcXVlIHRvIHRoZSB0aHJlYWRlZCBzY3JvbGxpbmcgYXJjaGl0ZWN0dXJl
LiAKICAgICAvLyBUaGVpciBtZWFuaW5nZnVsIGltcGxlbWVudGF0aW9ucyBhcmUgaW4gU2Nyb2xs
aW5nQ29vcmRpbmF0b3JNYWMuCiAgICAgdmlydHVhbCB2b2lkIGNvbW1pdFRyZWVTdGF0ZUlmTmVl
ZGVkKCkgeyB9Ci0gICAgdmlydHVhbCBib29sIHJlcXVlc3RTY3JvbGxQb3NpdGlvblVwZGF0ZShG
cmFtZVZpZXcqLCBjb25zdCBJbnRQb2ludCYpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVh
bCBib29sIGhhbmRsZVdoZWVsRXZlbnQoRnJhbWVWaWV3KiwgY29uc3QgUGxhdGZvcm1XaGVlbEV2
ZW50JikgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCByZXF1ZXN0U2Nyb2xsUG9z
aXRpb25VcGRhdGUoRnJhbWVWaWV3JiwgY29uc3QgSW50UG9pbnQmKSB7IHJldHVybiBmYWxzZTsg
fQorICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVXaGVlbEV2ZW50KEZyYW1lVmlldyYsIGNvbnN0IFBs
YXRmb3JtV2hlZWxFdmVudCYpIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIFNjcm9sbGlu
Z05vZGVJRCBhdHRhY2hUb1N0YXRlVHJlZShTY3JvbGxpbmdOb2RlVHlwZSwgU2Nyb2xsaW5nTm9k
ZUlEIG5ld05vZGVJRCwgU2Nyb2xsaW5nTm9kZUlEIC8qcGFyZW50SUQqLykgeyByZXR1cm4gbmV3
Tm9kZUlEOyB9CiAgICAgdmlydHVhbCB2b2lkIGRldGFjaEZyb21TdGF0ZVRyZWUoU2Nyb2xsaW5n
Tm9kZUlEKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJTdGF0ZVRyZWUoKSB7IH0KQEAgLTE4
Niw0NyArMTg2LDQ3IEBAIHB1YmxpYzoKICAgICBTY3JvbGxpbmdOb2RlSUQgdW5pcXVlU2Nyb2xs
TGF5ZXJJRCgpOwogCiAgICAgZW51bSBNYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uRmxhZ3Mgewot
ICAgICAgICBGb3JjZWRPbk1haW5UaHJlYWQgPSAxIDw8IDAsCi0gICAgICAgIEhhc1Nsb3dSZXBh
aW50T2JqZWN0cyA9IDEgPDwgMSwKLSAgICAgICAgSGFzVmlld3BvcnRDb25zdHJhaW5lZE9iamVj
dHNXaXRob3V0U3VwcG9ydGluZ0ZpeGVkTGF5ZXJzID0gMSA8PCAyLAotICAgICAgICBIYXNOb25M
YXllclZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RzID0gMSA8PCAzLAotICAgICAgICBJc0ltYWdl
RG9jdW1lbnQgPSAxIDw8IDQKKyAgICAgICAgRm9yY2VkT25NYWluVGhyZWFkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxIDw8IDAsCisgICAgICAgIEhhc1Nsb3dS
ZXBhaW50T2JqZWN0cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMSA8
PCAxLAorICAgICAgICBIYXNWaWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0c1dpdGhvdXRTdXBwb3J0
aW5nRml4ZWRMYXllcnMgICA9IDEgPDwgMiwKKyAgICAgICAgSGFzTm9uTGF5ZXJWaWV3cG9ydENv
bnN0cmFpbmVkT2JqZWN0cyAgICAgICAgICAgICAgICAgICAgICAgPSAxIDw8IDMsCisgICAgICAg
IElzSW1hZ2VEb2N1bWVudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gMSA8PCA0CiAgICAgfTsKIAotICAgIFN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucyBz
eW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMoRnJhbWVWaWV3KikgY29uc3Q7CisgICAgU3luY2hy
b25vdXNTY3JvbGxpbmdSZWFzb25zIHN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucyhjb25zdCBG
cmFtZVZpZXcmKSBjb25zdDsKICAgICBib29sIHNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRp
b25TeW5jaHJvbm91c2x5KCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lT
Y3JvbGxhYmxlQXJlYShTY3JvbGxhYmxlQXJlYSopIHsgfQotICAgIHZpcnR1YWwgdm9pZCBzY3Jv
bGxhYmxlQXJlYVNjcm9sbExheWVyRGlkQ2hhbmdlKFNjcm9sbGFibGVBcmVhKikgeyB9Ci0gICAg
dmlydHVhbCB2b2lkIHNjcm9sbGFibGVBcmVhU2Nyb2xsYmFyTGF5ZXJEaWRDaGFuZ2UoU2Nyb2xs
YWJsZUFyZWEqLCBTY3JvbGxiYXJPcmllbnRhdGlvbikgeyB9CisgICAgdmlydHVhbCB2b2lkIHdp
bGxEZXN0cm95U2Nyb2xsYWJsZUFyZWEoU2Nyb2xsYWJsZUFyZWEmKSB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgc2Nyb2xsYWJsZUFyZWFTY3JvbGxMYXllckRpZENoYW5nZShTY3JvbGxhYmxlQXJlYSYp
IHsgfQorICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxhYmxlQXJlYVNjcm9sbGJhckxheWVyRGlkQ2hh
bmdlKFNjcm9sbGFibGVBcmVhJiwgU2Nyb2xsYmFyT3JpZW50YXRpb24pIHsgfQogCiAgICAgc3Rh
dGljIFN0cmluZyBzeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnNBc1RleHQoU3luY2hyb25vdXNT
Y3JvbGxpbmdSZWFzb25zKTsKICAgICBTdHJpbmcgc3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25z
QXNUZXh0KCkgY29uc3Q7CiAKLSAgICBSZWdpb24gY29tcHV0ZU5vbkZhc3RTY3JvbGxhYmxlUmVn
aW9uKGNvbnN0IEZyYW1lKiwgY29uc3QgSW50UG9pbnQmIGZyYW1lTG9jYXRpb24pIGNvbnN0Owor
ICAgIFJlZ2lvbiBjb21wdXRlTm9uRmFzdFNjcm9sbGFibGVSZWdpb24oY29uc3QgRnJhbWUmLCBj
b25zdCBJbnRQb2ludCYgZnJhbWVMb2NhdGlvbikgY29uc3Q7CiAKIHByb3RlY3RlZDoKICAgICBl
eHBsaWNpdCBTY3JvbGxpbmdDb29yZGluYXRvcihQYWdlKik7CiAKLSAgICBzdGF0aWMgR3JhcGhp
Y3NMYXllciogc2Nyb2xsTGF5ZXJGb3JTY3JvbGxhYmxlQXJlYShTY3JvbGxhYmxlQXJlYSopOwor
ICAgIHN0YXRpYyBHcmFwaGljc0xheWVyKiBzY3JvbGxMYXllckZvclNjcm9sbGFibGVBcmVhKFNj
cm9sbGFibGVBcmVhJik7CiAKICAgICB1bnNpZ25lZCBjb21wdXRlQ3VycmVudFdoZWVsRXZlbnRI
YW5kbGVyQ291bnQoKTsKLSAgICBHcmFwaGljc0xheWVyKiBzY3JvbGxMYXllckZvckZyYW1lVmll
dyhGcmFtZVZpZXcqKTsKLSAgICBHcmFwaGljc0xheWVyKiBjb3VudGVyU2Nyb2xsaW5nTGF5ZXJG
b3JGcmFtZVZpZXcoRnJhbWVWaWV3Kik7Ci0gICAgR3JhcGhpY3NMYXllciogaW5zZXRDbGlwTGF5
ZXJGb3JGcmFtZVZpZXcoRnJhbWVWaWV3Kik7Ci0gICAgR3JhcGhpY3NMYXllciogcm9vdENvbnRl
bnRMYXllckZvckZyYW1lVmlldyhGcmFtZVZpZXcqKTsKLSAgICBHcmFwaGljc0xheWVyKiBjb250
ZW50U2hhZG93TGF5ZXJGb3JGcmFtZVZpZXcoRnJhbWVWaWV3Kik7Ci0gICAgR3JhcGhpY3NMYXll
ciogaGVhZGVyTGF5ZXJGb3JGcmFtZVZpZXcoRnJhbWVWaWV3Kik7Ci0gICAgR3JhcGhpY3NMYXll
ciogZm9vdGVyTGF5ZXJGb3JGcmFtZVZpZXcoRnJhbWVWaWV3Kik7CisgICAgR3JhcGhpY3NMYXll
ciogc2Nyb2xsTGF5ZXJGb3JGcmFtZVZpZXcoRnJhbWVWaWV3Jik7CisgICAgR3JhcGhpY3NMYXll
ciogY291bnRlclNjcm9sbGluZ0xheWVyRm9yRnJhbWVWaWV3KEZyYW1lVmlldyYpOworICAgIEdy
YXBoaWNzTGF5ZXIqIGluc2V0Q2xpcExheWVyRm9yRnJhbWVWaWV3KEZyYW1lVmlldyYpOworICAg
IEdyYXBoaWNzTGF5ZXIqIHJvb3RDb250ZW50TGF5ZXJGb3JGcmFtZVZpZXcoRnJhbWVWaWV3Jik7
CisgICAgR3JhcGhpY3NMYXllciogY29udGVudFNoYWRvd0xheWVyRm9yRnJhbWVWaWV3KEZyYW1l
VmlldyYpOworICAgIEdyYXBoaWNzTGF5ZXIqIGhlYWRlckxheWVyRm9yRnJhbWVWaWV3KEZyYW1l
VmlldyYpOworICAgIEdyYXBoaWNzTGF5ZXIqIGZvb3RlckxheWVyRm9yRnJhbWVWaWV3KEZyYW1l
VmlldyYpOwogCiAgICAgUGFnZSogbV9wYWdlOyAvLyBGSVhNRTogaWRlYWxseSB0aGlzIHdvdWxk
IGJlIGEgcmVmZXJlbmNlIGJ1dCBpdCBnZXRzIG51bGxlZCBvbiBhc3luYyB0ZWFyZG93bi4KIAog
cHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgcmVjb21wdXRlV2hlZWxFdmVudEhhbmRsZXJDb3Vu
dEZvckZyYW1lVmlldyhGcmFtZVZpZXcqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVjb21wdXRl
V2hlZWxFdmVudEhhbmRsZXJDb3VudEZvckZyYW1lVmlldyhGcmFtZVZpZXcmKSB7IH0KICAgICB2
aXJ0dWFsIHZvaWQgc2V0U3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zKFN5bmNocm9ub3VzU2Ny
b2xsaW5nUmVhc29ucykgeyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgaGFzVmlzaWJsZVNsb3dSZXBh
aW50Vmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHMoRnJhbWVWaWV3KikgY29uc3Q7Ci0gICAgdm9p
ZCB1cGRhdGVTeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMoRnJhbWVWaWV3Kik7CisgICAgdmly
dHVhbCBib29sIGhhc1Zpc2libGVTbG93UmVwYWludFZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3Rz
KGNvbnN0IEZyYW1lVmlldyYpIGNvbnN0OworICAgIHZvaWQgdXBkYXRlU3luY2hyb25vdXNTY3Jv
bGxpbmdSZWFzb25zKEZyYW1lVmlldyYpOwogICAgIAogICAgIGJvb2wgbV9mb3JjZVN5bmNocm9u
b3VzU2Nyb2xsTGF5ZXJQb3NpdGlvblVwZGF0ZXM7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ0Nvb3JkaW5hdG9yTWFjLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWMuaApp
bmRleCBmYzgyOWE0ZDU5ODVlOTZjODVhN2ExMWM1ODE1ZWIyMzRiZTY5ODA5Li44NzY2M2ZiMDMz
YmRiMzllMjA2OTkwM2ViOWNlNDZkYTU3YTcwMjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWMuaApA
QCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNvbW1pdFRyZWVTdGF0
ZUlmTmVlZGVkKCkgb3ZlcnJpZGU7CiAKICAgICAvLyBIYW5kbGUgdGhlIHdoZWVsIGV2ZW50IG9u
IHRoZSBzY3JvbGxpbmcgdGhyZWFkLiBSZXR1cm5zIHdoZXRoZXIgdGhlIGV2ZW50IHdhcyBoYW5k
bGVkIG9yIG5vdC4KLSAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlV2hlZWxFdmVudChGcmFtZVZpZXcq
LCBjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wg
aGFuZGxlV2hlZWxFdmVudChGcmFtZVZpZXcmLCBjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmKSBv
dmVycmlkZTsKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVUcmVlU3RhdGVD
b21taXQoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL21hYy9TY3JvbGxpbmdDb29yZGluYXRvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdDb29yZGluYXRvck1hYy5tbQppbmRleCA2OGE1NDI4MWJi
ZTY2NjQ5ZGU2MDQyYzc4OTBjMGU2MmFiYWE2ZTVhLi5lYTEzOTI3OTkwYjBiZjljOTgwZDRiMThj
MDE0OThlMzdlZmRjMzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9tYWMvU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ0Nvb3JkaW5hdG9yTWFjLm1tCkBAIC04Niw3ICs4Niw3
IEBAIHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWM6OmNvbW1pdFRyZWVTdGF0ZUlmTmVlZGVk
KCkKICAgICBtX3Njcm9sbGluZ1N0YXRlVHJlZUNvbW1pdHRlclRpbWVyLnN0b3AoKTsKIH0KIAot
Ym9vbCBTY3JvbGxpbmdDb29yZGluYXRvck1hYzo6aGFuZGxlV2hlZWxFdmVudChGcmFtZVZpZXcq
LCBjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQpCitib29sIFNjcm9sbGluZ0Nv
b3JkaW5hdG9yTWFjOjpoYW5kbGVXaGVlbEV2ZW50KEZyYW1lVmlldyYsIGNvbnN0IFBsYXRmb3Jt
V2hlZWxFdmVudCYgd2hlZWxFdmVudCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwog
ICAgIEFTU0VSVChtX3BhZ2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5j
cHAKaW5kZXggZjc4MjhhYmU2NzBmOTg1NmQ0MGUyYzM2NmQ0MGVkYTE0ZmNiNTM5OS4uYmQ3N2Fm
MDkwNDBjODAwODExZGY5MzI4ZDBkZDI1OGIxZWRmOGNhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC0zNjAsNyArMzYwLDcgQEAgUmVuZGVyTGF5ZXI6On5S
ZW5kZXJMYXllcigpCiAKICAgICBpZiAocmVuZGVyZXIoKS5mcmFtZSgpLnBhZ2UoKSkgewogICAg
ICAgICBpZiAoU2Nyb2xsaW5nQ29vcmRpbmF0b3IqIHNjcm9sbGluZ0Nvb3JkaW5hdG9yID0gcmVu
ZGVyZXIoKS5mcmFtZSgpLnBhZ2UoKS0+c2Nyb2xsaW5nQ29vcmRpbmF0b3IoKSkKLSAgICAgICAg
ICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT53aWxsRGVzdHJveVNjcm9sbGFibGVBcmVhKHRoaXMp
OworICAgICAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPndpbGxEZXN0cm95U2Nyb2xsYWJs
ZUFyZWEoKnRoaXMpOwogICAgIH0KIAogICAgIGlmIChtX3JlZmxlY3Rpb24pCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCmluZGV4IGE5MGE0OWU4
NzI5NzZkZGUwNGU3NDJmMTk3Zjk5ZTRlYzE5YWZjYzguLmFlYWZjYzlmNzMyMmY2NDBiYTRkMzNj
NDMxMTc5MGM4YzYxZGU0ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllckJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckJhY2tpbmcuY3BwCkBAIC0xMjk1LDkgKzEyOTUsOSBAQCBib29sIFJlbmRlckxheWVy
QmFja2luZzo6dXBkYXRlT3ZlcmZsb3dDb250cm9sc0xheWVycyhib29sIG5lZWRzSG9yaXpvbnRh
bFNjcm9sbAogCiAgICAgaWYgKFNjcm9sbGluZ0Nvb3JkaW5hdG9yKiBzY3JvbGxpbmdDb29yZGlu
YXRvciA9IHNjcm9sbGluZ0Nvb3JkaW5hdG9yRnJvbUxheWVyKG1fb3duaW5nTGF5ZXIpKSB7CiAg
ICAgICAgIGlmIChob3Jpem9udGFsU2Nyb2xsYmFyTGF5ZXJDaGFuZ2VkKQotICAgICAgICAgICAg
c2Nyb2xsaW5nQ29vcmRpbmF0b3ItPnNjcm9sbGFibGVBcmVhU2Nyb2xsYmFyTGF5ZXJEaWRDaGFu
Z2UoJm1fb3duaW5nTGF5ZXIsIEhvcml6b250YWxTY3JvbGxiYXIpOworICAgICAgICAgICAgc2Ny
b2xsaW5nQ29vcmRpbmF0b3ItPnNjcm9sbGFibGVBcmVhU2Nyb2xsYmFyTGF5ZXJEaWRDaGFuZ2Uo
bV9vd25pbmdMYXllciwgSG9yaXpvbnRhbFNjcm9sbGJhcik7CiAgICAgICAgIGlmICh2ZXJ0aWNh
bFNjcm9sbGJhckxheWVyQ2hhbmdlZCkKLSAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9y
LT5zY3JvbGxhYmxlQXJlYVNjcm9sbGJhckxheWVyRGlkQ2hhbmdlKCZtX293bmluZ0xheWVyLCBW
ZXJ0aWNhbFNjcm9sbGJhcik7CisgICAgICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+c2Ny
b2xsYWJsZUFyZWFTY3JvbGxiYXJMYXllckRpZENoYW5nZShtX293bmluZ0xheWVyLCBWZXJ0aWNh
bFNjcm9sbGJhcik7CiAgICAgfQogCiAgICAgcmV0dXJuIGhvcml6b250YWxTY3JvbGxiYXJMYXll
ckNoYW5nZWQgfHwgdmVydGljYWxTY3JvbGxiYXJMYXllckNoYW5nZWQgfHwgc2Nyb2xsQ29ybmVy
TGF5ZXJDaGFuZ2VkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJDb21wb3NpdG9yLmNwcAppbmRleCBlOGQ4NWRkYzMwZTE2NzIyNGJlNzEyZGQ1N2NlNjZhYmI1
YTQ2OTBmLi5jNzIyODdlZDFlMDBlMDEyYWVmYjI4MGVlM2Y3MjAwNjQwZDhjMWVmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcApA
QCAtOTg3LDcgKzk4Nyw3IEBAIGJvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVCYWNr
aW5nKFJlbmRlckxheWVyJiBsYXllciwgQ29tcG9zaXRpbmdDaGFuZ2VSCiAgICAgICAgICAgICBp
ZiAobGF5ZXIuaXNSb290TGF5ZXIoKSAmJiAhbV9yZW5kZXJWaWV3LmRvY3VtZW50KCkub3duZXJF
bGVtZW50KCkpIHsKICAgICAgICAgICAgICAgICB1cGRhdGVTY3JvbGxDb29yZGluYXRlZFN0YXR1
cyhsYXllcik7CiAgICAgICAgICAgICAgICAgaWYgKFNjcm9sbGluZ0Nvb3JkaW5hdG9yKiBzY3Jv
bGxpbmdDb29yZGluYXRvciA9IHRoaXMtPnNjcm9sbGluZ0Nvb3JkaW5hdG9yKCkpCi0gICAgICAg
ICAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5mcmFtZVZpZXdSb290TGF5ZXJEaWRD
aGFuZ2UoJm1fcmVuZGVyVmlldy5mcmFtZVZpZXcoKSk7CisgICAgICAgICAgICAgICAgICAgIHNj
cm9sbGluZ0Nvb3JkaW5hdG9yLT5mcmFtZVZpZXdSb290TGF5ZXJEaWRDaGFuZ2UobV9yZW5kZXJW
aWV3LmZyYW1lVmlldygpKTsKICNpZiBFTkFCTEUoUlVCQkVSX0JBTkRJTkcpCiAgICAgICAgICAg
ICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSB0aGlzLT5wYWdlKCkpIHsKICAgICAgICAgICAgICAgICAg
ICAgdXBkYXRlTGF5ZXJGb3JIZWFkZXIocGFnZS0+aGVhZGVySGVpZ2h0KCkpOwpAQCAtMTA2MSw3
ICsxMDYxLDcgQEAgYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZUJhY2tpbmcoUmVu
ZGVyTGF5ZXImIGxheWVyLCBDb21wb3NpdGluZ0NoYW5nZVIKICAgICAgICAgfQogICAgICAgICBp
ZiAobGF5ZXJDaGFuZ2VkKSB7CiAgICAgICAgICAgICBpZiAoU2Nyb2xsaW5nQ29vcmRpbmF0b3Iq
IHNjcm9sbGluZ0Nvb3JkaW5hdG9yID0gdGhpcy0+c2Nyb2xsaW5nQ29vcmRpbmF0b3IoKSkKLSAg
ICAgICAgICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+ZnJhbWVWaWV3Rml4ZWRPYmplY3Rz
RGlkQ2hhbmdlKCZtX3JlbmRlclZpZXcuZnJhbWVWaWV3KCkpOworICAgICAgICAgICAgICAgIHNj
cm9sbGluZ0Nvb3JkaW5hdG9yLT5mcmFtZVZpZXdGaXhlZE9iamVjdHNEaWRDaGFuZ2UobV9yZW5k
ZXJWaWV3LmZyYW1lVmlldygpKTsKICAgICAgICAgfQogICAgIH0gZWxzZQogICAgICAgICBsYXll
ci5zZXRWaWV3cG9ydENvbnN0cmFpbmVkTm90Q29tcG9zaXRlZFJlYXNvbihSZW5kZXJMYXllcjo6
Tm9Ob3RDb21wb3NpdGVkUmVhc29uKTsKQEAgLTE3MDcsNyArMTcwNyw3IEBAIHZvaWQgUmVuZGVy
TGF5ZXJDb21wb3NpdG9yOjpmcmFtZVZpZXdEaWRDaGFuZ2VTaXplKCkKIGJvb2wgUmVuZGVyTGF5
ZXJDb21wb3NpdG9yOjpoYXNDb29yZGluYXRlZFNjcm9sbGluZygpIGNvbnN0CiB7CiAgICAgU2Ny
b2xsaW5nQ29vcmRpbmF0b3IqIHNjcm9sbGluZ0Nvb3JkaW5hdG9yID0gdGhpcy0+c2Nyb2xsaW5n
Q29vcmRpbmF0b3IoKTsKLSAgICByZXR1cm4gc2Nyb2xsaW5nQ29vcmRpbmF0b3IgJiYgc2Nyb2xs
aW5nQ29vcmRpbmF0b3ItPmNvb3JkaW5hdGVzU2Nyb2xsaW5nRm9yRnJhbWVWaWV3KCZtX3JlbmRl
clZpZXcuZnJhbWVWaWV3KCkpOworICAgIHJldHVybiBzY3JvbGxpbmdDb29yZGluYXRvciAmJiBz
Y3JvbGxpbmdDb29yZGluYXRvci0+Y29vcmRpbmF0ZXNTY3JvbGxpbmdGb3JGcmFtZVZpZXcobV9y
ZW5kZXJWaWV3LmZyYW1lVmlldygpKTsKIH0KIAogdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6
OnVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb24oKQpAQCAtMTc2Niw3ICsxNzY2LDcgQEAgdm9pZCBS
ZW5kZXJMYXllckNvbXBvc2l0b3I6OnJvb3RGaXhlZEJhY2tncm91bmRzQ2hhbmdlZCgpCiB2b2lk
IFJlbmRlckxheWVyQ29tcG9zaXRvcjo6c2Nyb2xsaW5nTGF5ZXJEaWRDaGFuZ2UoUmVuZGVyTGF5
ZXImIGxheWVyKQogewogICAgIGlmIChTY3JvbGxpbmdDb29yZGluYXRvciogc2Nyb2xsaW5nQ29v
cmRpbmF0b3IgPSB0aGlzLT5zY3JvbGxpbmdDb29yZGluYXRvcigpKQotICAgICAgICBzY3JvbGxp
bmdDb29yZGluYXRvci0+c2Nyb2xsYWJsZUFyZWFTY3JvbGxMYXllckRpZENoYW5nZSgmbGF5ZXIp
OworICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+c2Nyb2xsYWJsZUFyZWFTY3JvbGxMYXll
ckRpZENoYW5nZShsYXllcik7CiB9CiAKIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpmaXhl
ZFJvb3RCYWNrZ3JvdW5kTGF5ZXJDaGFuZ2VkKCkKQEAgLTMxMTIsNyArMzExMiw3IEBAIEdyYXBo
aWNzTGF5ZXIqIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlTGF5ZXJGb3JIZWFkZXIoYm9v
bCB3YW50c0xheWVyKQogICAgICAgICAgICAgLy8gVGhlIFNjcm9sbGluZ1RyZWUga25vd3MgYWJv
dXQgdGhlIGhlYWRlciBsYXllciwgYW5kIHRoZSBwb3NpdGlvbiBvZiB0aGUgcm9vdCBsYXllciBp
cyBhZmZlY3RlZAogICAgICAgICAgICAgLy8gYnkgdGhlIGhlYWRlciBsYXllciwgc28gaWYgd2Ug
cmVtb3ZlIHRoZSBoZWFkZXIsIHdlIG5lZWQgdG8gdGVsbCB0aGUgc2Nyb2xsaW5nIHRyZWUuCiAg
ICAgICAgICAgICBpZiAoU2Nyb2xsaW5nQ29vcmRpbmF0b3IqIHNjcm9sbGluZ0Nvb3JkaW5hdG9y
ID0gdGhpcy0+c2Nyb2xsaW5nQ29vcmRpbmF0b3IoKSkKLSAgICAgICAgICAgICAgICBzY3JvbGxp
bmdDb29yZGluYXRvci0+ZnJhbWVWaWV3Um9vdExheWVyRGlkQ2hhbmdlKCZtX3JlbmRlclZpZXcu
ZnJhbWVWaWV3KCkpOworICAgICAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5mcmFt
ZVZpZXdSb290TGF5ZXJEaWRDaGFuZ2UobV9yZW5kZXJWaWV3LmZyYW1lVmlldygpKTsKICAgICAg
ICAgfQogICAgICAgICByZXR1cm4gMDsKICAgICB9CkBAIC0zMTMyLDcgKzMxMzIsNyBAQCBHcmFw
aGljc0xheWVyKiBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZUxheWVyRm9ySGVhZGVyKGJv
b2wgd2FudHNMYXllcikKICAgICBtX2xheWVyRm9ySGVhZGVyLT5zZXRTaXplKEZsb2F0U2l6ZSht
X3JlbmRlclZpZXcuZnJhbWVWaWV3KCkudmlzaWJsZVdpZHRoKCksIG1fcmVuZGVyVmlldy5mcmFt
ZVZpZXcoKS5oZWFkZXJIZWlnaHQoKSkpOwogCiAgICAgaWYgKFNjcm9sbGluZ0Nvb3JkaW5hdG9y
KiBzY3JvbGxpbmdDb29yZGluYXRvciA9IHRoaXMtPnNjcm9sbGluZ0Nvb3JkaW5hdG9yKCkpCi0g
ICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5mcmFtZVZpZXdSb290TGF5ZXJEaWRDaGFuZ2Uo
Jm1fcmVuZGVyVmlldy5mcmFtZVZpZXcoKSk7CisgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9y
LT5mcmFtZVZpZXdSb290TGF5ZXJEaWRDaGFuZ2UobV9yZW5kZXJWaWV3LmZyYW1lVmlldygpKTsK
IAogICAgIGlmIChQYWdlKiBwYWdlID0gdGhpcy0+cGFnZSgpKQogICAgICAgICBwYWdlLT5jaHJv
bWUoKS5jbGllbnQoKS5kaWRBZGRIZWFkZXJMYXllcihtX2xheWVyRm9ySGVhZGVyLmdldCgpKTsK
QEAgLTMxNTMsNyArMzE1Myw3IEBAIEdyYXBoaWNzTGF5ZXIqIFJlbmRlckxheWVyQ29tcG9zaXRv
cjo6dXBkYXRlTGF5ZXJGb3JGb290ZXIoYm9vbCB3YW50c0xheWVyKQogICAgICAgICAgICAgLy8g
VGhlIFNjcm9sbGluZ1RyZWUga25vd3MgYWJvdXQgdGhlIGZvb3RlciBsYXllciwgYW5kIHRoZSB0
b3RhbCBzY3JvbGxhYmxlIHNpemUgaXMgYWZmZWN0ZWQKICAgICAgICAgICAgIC8vIGJ5IHRoZSBm
b290ZXIgbGF5ZXIsIHNvIGlmIHdlIHJlbW92ZSB0aGUgZm9vdGVyLCB3ZSBuZWVkIHRvIHRlbGwg
dGhlIHNjcm9sbGluZyB0cmVlLgogICAgICAgICAgICAgaWYgKFNjcm9sbGluZ0Nvb3JkaW5hdG9y
KiBzY3JvbGxpbmdDb29yZGluYXRvciA9IHRoaXMtPnNjcm9sbGluZ0Nvb3JkaW5hdG9yKCkpCi0g
ICAgICAgICAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPmZyYW1lVmlld1Jvb3RMYXllckRp
ZENoYW5nZSgmbV9yZW5kZXJWaWV3LmZyYW1lVmlldygpKTsKKyAgICAgICAgICAgICAgICBzY3Jv
bGxpbmdDb29yZGluYXRvci0+ZnJhbWVWaWV3Um9vdExheWVyRGlkQ2hhbmdlKG1fcmVuZGVyVmll
dy5mcmFtZVZpZXcoKSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQpAQCAt
MzE3Myw3ICszMTczLDcgQEAgR3JhcGhpY3NMYXllciogUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1
cGRhdGVMYXllckZvckZvb3Rlcihib29sIHdhbnRzTGF5ZXIpCiAgICAgbV9sYXllckZvckZvb3Rl
ci0+c2V0U2l6ZShGbG9hdFNpemUobV9yZW5kZXJWaWV3LmZyYW1lVmlldygpLnZpc2libGVXaWR0
aCgpLCBtX3JlbmRlclZpZXcuZnJhbWVWaWV3KCkuZm9vdGVySGVpZ2h0KCkpKTsKIAogICAgIGlm
IChTY3JvbGxpbmdDb29yZGluYXRvciogc2Nyb2xsaW5nQ29vcmRpbmF0b3IgPSB0aGlzLT5zY3Jv
bGxpbmdDb29yZGluYXRvcigpKQotICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+ZnJhbWVW
aWV3Um9vdExheWVyRGlkQ2hhbmdlKCZtX3JlbmRlclZpZXcuZnJhbWVWaWV3KCkpOworICAgICAg
ICBzY3JvbGxpbmdDb29yZGluYXRvci0+ZnJhbWVWaWV3Um9vdExheWVyRGlkQ2hhbmdlKG1fcmVu
ZGVyVmlldy5mcmFtZVZpZXcoKSk7CiAKICAgICBpZiAoUGFnZSogcGFnZSA9IHRoaXMtPnBhZ2Uo
KSkKICAgICAgICAgcGFnZS0+Y2hyb21lKCkuY2xpZW50KCkuZGlkQWRkRm9vdGVyTGF5ZXIobV9s
YXllckZvckZvb3Rlci5nZXQoKSk7CkBAIC0zMjg3LDE0ICszMjg3LDE0IEBAIHZvaWQgUmVuZGVy
TGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVPdmVyZmxvd0NvbnRyb2xzTGF5ZXJzKCkKICAgICAgICAg
ICAgIG1fb3ZlcmZsb3dDb250cm9sc0hvc3RMYXllci0+YWRkQ2hpbGQobV9sYXllckZvckhvcml6
b250YWxTY3JvbGxiYXIuZ2V0KCkpOwogCiAgICAgICAgICAgICBpZiAoU2Nyb2xsaW5nQ29vcmRp
bmF0b3IqIHNjcm9sbGluZ0Nvb3JkaW5hdG9yID0gdGhpcy0+c2Nyb2xsaW5nQ29vcmRpbmF0b3Io
KSkKLSAgICAgICAgICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+c2Nyb2xsYWJsZUFyZWFT
Y3JvbGxiYXJMYXllckRpZENoYW5nZSgmbV9yZW5kZXJWaWV3LmZyYW1lVmlldygpLCBIb3Jpem9u
dGFsU2Nyb2xsYmFyKTsKKyAgICAgICAgICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+c2Ny
b2xsYWJsZUFyZWFTY3JvbGxiYXJMYXllckRpZENoYW5nZShtX3JlbmRlclZpZXcuZnJhbWVWaWV3
KCksIEhvcml6b250YWxTY3JvbGxiYXIpOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChtX2xh
eWVyRm9ySG9yaXpvbnRhbFNjcm9sbGJhcikgewogICAgICAgICBtX2xheWVyRm9ySG9yaXpvbnRh
bFNjcm9sbGJhci0+cmVtb3ZlRnJvbVBhcmVudCgpOwogICAgICAgICBtX2xheWVyRm9ySG9yaXpv
bnRhbFNjcm9sbGJhciA9IG51bGxwdHI7CiAKICAgICAgICAgaWYgKFNjcm9sbGluZ0Nvb3JkaW5h
dG9yKiBzY3JvbGxpbmdDb29yZGluYXRvciA9IHRoaXMtPnNjcm9sbGluZ0Nvb3JkaW5hdG9yKCkp
Ci0gICAgICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+c2Nyb2xsYWJsZUFyZWFTY3JvbGxi
YXJMYXllckRpZENoYW5nZSgmbV9yZW5kZXJWaWV3LmZyYW1lVmlldygpLCBIb3Jpem9udGFsU2Ny
b2xsYmFyKTsKKyAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5zY3JvbGxhYmxlQXJl
YVNjcm9sbGJhckxheWVyRGlkQ2hhbmdlKG1fcmVuZGVyVmlldy5mcmFtZVZpZXcoKSwgSG9yaXpv
bnRhbFNjcm9sbGJhcik7CiAgICAgfQogCiAgICAgaWYgKHJlcXVpcmVzVmVydGljYWxTY3JvbGxi
YXJMYXllcigpKSB7CkBAIC0zMzEwLDE0ICszMzEwLDE0IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21w
b3NpdG9yOjp1cGRhdGVPdmVyZmxvd0NvbnRyb2xzTGF5ZXJzKCkKICAgICAgICAgICAgIG1fb3Zl
cmZsb3dDb250cm9sc0hvc3RMYXllci0+YWRkQ2hpbGQobV9sYXllckZvclZlcnRpY2FsU2Nyb2xs
YmFyLmdldCgpKTsKIAogICAgICAgICAgICAgaWYgKFNjcm9sbGluZ0Nvb3JkaW5hdG9yKiBzY3Jv
bGxpbmdDb29yZGluYXRvciA9IHRoaXMtPnNjcm9sbGluZ0Nvb3JkaW5hdG9yKCkpCi0gICAgICAg
ICAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPnNjcm9sbGFibGVBcmVhU2Nyb2xsYmFyTGF5
ZXJEaWRDaGFuZ2UoJm1fcmVuZGVyVmlldy5mcmFtZVZpZXcoKSwgVmVydGljYWxTY3JvbGxiYXIp
OworICAgICAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5zY3JvbGxhYmxlQXJlYVNj
cm9sbGJhckxheWVyRGlkQ2hhbmdlKG1fcmVuZGVyVmlldy5mcmFtZVZpZXcoKSwgVmVydGljYWxT
Y3JvbGxiYXIpOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChtX2xheWVyRm9yVmVydGljYWxT
Y3JvbGxiYXIpIHsKICAgICAgICAgbV9sYXllckZvclZlcnRpY2FsU2Nyb2xsYmFyLT5yZW1vdmVG
cm9tUGFyZW50KCk7CiAgICAgICAgIG1fbGF5ZXJGb3JWZXJ0aWNhbFNjcm9sbGJhciA9IG51bGxw
dHI7CiAKICAgICAgICAgaWYgKFNjcm9sbGluZ0Nvb3JkaW5hdG9yKiBzY3JvbGxpbmdDb29yZGlu
YXRvciA9IHRoaXMtPnNjcm9sbGluZ0Nvb3JkaW5hdG9yKCkpCi0gICAgICAgICAgICBzY3JvbGxp
bmdDb29yZGluYXRvci0+c2Nyb2xsYWJsZUFyZWFTY3JvbGxiYXJMYXllckRpZENoYW5nZSgmbV9y
ZW5kZXJWaWV3LmZyYW1lVmlldygpLCBWZXJ0aWNhbFNjcm9sbGJhcik7CisgICAgICAgICAgICBz
Y3JvbGxpbmdDb29yZGluYXRvci0+c2Nyb2xsYWJsZUFyZWFTY3JvbGxiYXJMYXllckRpZENoYW5n
ZShtX3JlbmRlclZpZXcuZnJhbWVWaWV3KCksIFZlcnRpY2FsU2Nyb2xsYmFyKTsKICAgICB9CiAK
ICAgICBpZiAocmVxdWlyZXNTY3JvbGxDb3JuZXJMYXllcigpKSB7CkBAIC0zNDM3LDcgKzM0Mzcs
NyBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6ZGVzdHJveVJvb3RMYXllcigpCiAgICAg
ICAgIG1fbGF5ZXJGb3JIb3Jpem9udGFsU2Nyb2xsYmFyLT5yZW1vdmVGcm9tUGFyZW50KCk7CiAg
ICAgICAgIG1fbGF5ZXJGb3JIb3Jpem9udGFsU2Nyb2xsYmFyID0gbnVsbHB0cjsKICAgICAgICAg
aWYgKFNjcm9sbGluZ0Nvb3JkaW5hdG9yKiBzY3JvbGxpbmdDb29yZGluYXRvciA9IHRoaXMtPnNj
cm9sbGluZ0Nvb3JkaW5hdG9yKCkpCi0gICAgICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+
c2Nyb2xsYWJsZUFyZWFTY3JvbGxiYXJMYXllckRpZENoYW5nZSgmbV9yZW5kZXJWaWV3LmZyYW1l
VmlldygpLCBIb3Jpem9udGFsU2Nyb2xsYmFyKTsKKyAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3Jk
aW5hdG9yLT5zY3JvbGxhYmxlQXJlYVNjcm9sbGJhckxheWVyRGlkQ2hhbmdlKG1fcmVuZGVyVmll
dy5mcmFtZVZpZXcoKSwgSG9yaXpvbnRhbFNjcm9sbGJhcik7CiAgICAgICAgIGlmIChTY3JvbGxi
YXIqIGhvcml6b250YWxTY3JvbGxiYXIgPSBtX3JlbmRlclZpZXcuZnJhbWVWaWV3KCkudmVydGlj
YWxTY3JvbGxiYXIoKSkKICAgICAgICAgICAgIG1fcmVuZGVyVmlldy5mcmFtZVZpZXcoKS5pbnZh
bGlkYXRlU2Nyb2xsYmFyKGhvcml6b250YWxTY3JvbGxiYXIsIEludFJlY3QoSW50UG9pbnQoMCwg
MCksIGhvcml6b250YWxTY3JvbGxiYXItPmZyYW1lUmVjdCgpLnNpemUoKSkpOwogICAgIH0KQEAg
LTM0NDYsNyArMzQ0Niw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpkZXN0cm95Um9v
dExheWVyKCkKICAgICAgICAgbV9sYXllckZvclZlcnRpY2FsU2Nyb2xsYmFyLT5yZW1vdmVGcm9t
UGFyZW50KCk7CiAgICAgICAgIG1fbGF5ZXJGb3JWZXJ0aWNhbFNjcm9sbGJhciA9IG51bGxwdHI7
CiAgICAgICAgIGlmIChTY3JvbGxpbmdDb29yZGluYXRvciogc2Nyb2xsaW5nQ29vcmRpbmF0b3Ig
PSB0aGlzLT5zY3JvbGxpbmdDb29yZGluYXRvcigpKQotICAgICAgICAgICAgc2Nyb2xsaW5nQ29v
cmRpbmF0b3ItPnNjcm9sbGFibGVBcmVhU2Nyb2xsYmFyTGF5ZXJEaWRDaGFuZ2UoJm1fcmVuZGVy
Vmlldy5mcmFtZVZpZXcoKSwgVmVydGljYWxTY3JvbGxiYXIpOworICAgICAgICAgICAgc2Nyb2xs
aW5nQ29vcmRpbmF0b3ItPnNjcm9sbGFibGVBcmVhU2Nyb2xsYmFyTGF5ZXJEaWRDaGFuZ2UobV9y
ZW5kZXJWaWV3LmZyYW1lVmlldygpLCBWZXJ0aWNhbFNjcm9sbGJhcik7CiAgICAgICAgIGlmIChT
Y3JvbGxiYXIqIHZlcnRpY2FsU2Nyb2xsYmFyID0gbV9yZW5kZXJWaWV3LmZyYW1lVmlldygpLnZl
cnRpY2FsU2Nyb2xsYmFyKCkpCiAgICAgICAgICAgICBtX3JlbmRlclZpZXcuZnJhbWVWaWV3KCku
aW52YWxpZGF0ZVNjcm9sbGJhcih2ZXJ0aWNhbFNjcm9sbGJhciwgSW50UmVjdChJbnRQb2ludCgw
LCAwKSwgdmVydGljYWxTY3JvbGxiYXItPmZyYW1lUmVjdCgpLnNpemUoKSkpOwogICAgIH0KQEAg
LTM4MTYsNyArMzgxNiw3IEBAIFNjcm9sbGluZ05vZGVJRCBSZW5kZXJMYXllckNvbXBvc2l0b3I6
OmF0dGFjaFNjcm9sbGluZ05vZGUoUmVuZGVyTGF5ZXImIGxheWVyLCBTCiB2b2lkIFJlbmRlckxh
eWVyQ29tcG9zaXRvcjo6dXBkYXRlU2Nyb2xsQ29vcmRpbmF0aW9uRm9yVGhpc0ZyYW1lKFNjcm9s
bGluZ05vZGVJRCBwYXJlbnROb2RlSUQpCiB7CiAgICAgU2Nyb2xsaW5nQ29vcmRpbmF0b3IqIHNj
cm9sbGluZ0Nvb3JkaW5hdG9yID0gdGhpcy0+c2Nyb2xsaW5nQ29vcmRpbmF0b3IoKTsKLSAgICBB
U1NFUlQoc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPmNvb3JkaW5hdGVzU2Nyb2xsaW5nRm9yRnJhbWVW
aWV3KCZtX3JlbmRlclZpZXcuZnJhbWVWaWV3KCkpKTsKKyAgICBBU1NFUlQoc2Nyb2xsaW5nQ29v
cmRpbmF0b3ItPmNvb3JkaW5hdGVzU2Nyb2xsaW5nRm9yRnJhbWVWaWV3KG1fcmVuZGVyVmlldy5m
cmFtZVZpZXcoKSkpOwogCiAgICAgU2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCA9IGF0dGFjaFNjcm9s
bGluZ05vZGUoKm1fcmVuZGVyVmlldy5sYXllcigpLCBGcmFtZVNjcm9sbGluZ05vZGUsIHBhcmVu
dE5vZGVJRCk7CiAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPnVwZGF0ZUZyYW1lU2Nyb2xsaW5n
Tm9kZShub2RlSUQsIG1fc2Nyb2xsTGF5ZXIuZ2V0KCksIG1fcm9vdENvbnRlbnRMYXllci5nZXQo
KSwgZml4ZWRSb290QmFja2dyb3VuZExheWVyKCksIGNsaXBMYXllcigpKTsKQEAgLTM4MjUsNyAr
MzgyNSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVTY3JvbGxDb29yZGlu
YXRpb25Gb3JUaGlzRnJhbWUoU2Nyb2xsaW5nTm9kZUlECiB2b2lkIFJlbmRlckxheWVyQ29tcG9z
aXRvcjo6dXBkYXRlU2Nyb2xsQ29vcmRpbmF0ZWRMYXllcihSZW5kZXJMYXllciYgbGF5ZXIsIFNj
cm9sbENvb3JkaW5hdGlvblJlYXNvbnMgcmVhc29ucykKIHsKICAgICBTY3JvbGxpbmdDb29yZGlu
YXRvciogc2Nyb2xsaW5nQ29vcmRpbmF0b3IgPSB0aGlzLT5zY3JvbGxpbmdDb29yZGluYXRvcigp
OwotICAgIGlmICghc2Nyb2xsaW5nQ29vcmRpbmF0b3IgfHwgIXNjcm9sbGluZ0Nvb3JkaW5hdG9y
LT5jb29yZGluYXRlc1Njcm9sbGluZ0ZvckZyYW1lVmlldygmbV9yZW5kZXJWaWV3LmZyYW1lVmll
dygpKSkKKyAgICBpZiAoIXNjcm9sbGluZ0Nvb3JkaW5hdG9yIHx8ICFzY3JvbGxpbmdDb29yZGlu
YXRvci0+Y29vcmRpbmF0ZXNTY3JvbGxpbmdGb3JGcmFtZVZpZXcobV9yZW5kZXJWaWV3LmZyYW1l
VmlldygpKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYm9vbCBpc1Jvb3RMYXllciA9ICZsYXll
ciA9PSBtX3JlbmRlclZpZXcubGF5ZXIoKTsKQEAgLTQwMTksNyArNDAxOSw3IEBAIHZvaWQgUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yOjp3aWxsUmVtb3ZlU2Nyb2xsaW5nTGF5ZXJXaXRoQmFja2luZyhS
ZW5kZXJMYXllciYgbGF5CiAgICAgICAgIGJhY2tpbmcuZGV0YWNoRnJvbVNjcm9sbGluZ0Nvb3Jk
aW5hdG9yKCk7CiAKICAgICAgICAgLy8gRm9yIENvb3JkaW5hdGVkIEdyYXBoaWNzLgotICAgICAg
ICBzY3JvbGxpbmdDb29yZGluYXRvci0+c2Nyb2xsYWJsZUFyZWFTY3JvbGxMYXllckRpZENoYW5n
ZSgmbGF5ZXIpOworICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+c2Nyb2xsYWJsZUFyZWFT
Y3JvbGxMYXllckRpZENoYW5nZShsYXllcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAg
LTQwNDQsNyArNDA0NCw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpkaWRBZGRTY3Jv
bGxpbmdMYXllcihSZW5kZXJMYXllciYgbGF5ZXIpCiAKICAgICBpZiAoU2Nyb2xsaW5nQ29vcmRp
bmF0b3IqIHNjcm9sbGluZ0Nvb3JkaW5hdG9yID0gdGhpcy0+c2Nyb2xsaW5nQ29vcmRpbmF0b3Io
KSkgewogICAgICAgICAvLyBGb3IgQ29vcmRpbmF0ZWQgR3JhcGhpY3MuCi0gICAgICAgIHNjcm9s
bGluZ0Nvb3JkaW5hdG9yLT5zY3JvbGxhYmxlQXJlYVNjcm9sbExheWVyRGlkQ2hhbmdlKCZsYXll
cik7CisgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5zY3JvbGxhYmxlQXJlYVNjcm9sbExh
eWVyRGlkQ2hhbmdlKGxheWVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDcxMThmYzdmMDViYWUzYzNjNDkwNGJhZTdlNWQz
YmQ4NDVhMjUzNzAuLjRhYTAxZWJlMDg5YmNlZGQ1NTkyNjNmMDczZWM0ZjJjYWNlOWYzMzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTE3NzEsNyArMTc3MSw3IEBAIFJl
ZlB0cjxDbGllbnRSZWN0TGlzdD4gSW50ZXJuYWxzOjpub25GYXN0U2Nyb2xsYWJsZVJlY3RzKEV4
Y2VwdGlvbkNvZGUmIGVjKSBjb25zCiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAotICAgIHJldHVybiBwYWdlLT5ub25GYXN0U2Nyb2xsYWJsZVJlY3RzKGRvY3VtZW50
LT5mcmFtZSgpKTsKKyAgICByZXR1cm4gcGFnZS0+bm9uRmFzdFNjcm9sbGFibGVSZWN0cygqZG9j
dW1lbnQtPmZyYW1lKCkpOwogfQogCiB2b2lkIEludGVybmFsczo6Z2FyYmFnZUNvbGxlY3REb2N1
bWVudFJlc291cmNlcyhFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvU2Nyb2xsaW5nL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9y
LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Njcm9sbGluZy9SZW1vdGVTY3JvbGxpbmdD
b29yZGluYXRvci5oCmluZGV4IDVhNTAxZmMzMDUxODg2OGY2MTliNWExZWM1ZWMxYTZiMzg2MmU3
ZTkuLjYxNzFkZGRhMWQ2MjEyMjcyOTMwMWU3YTA0YmFjODNmMDIxYmMxNTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvU2Nyb2xsaW5nL1JlbW90ZVNjcm9sbGluZ0Nvb3Jk
aW5hdG9yLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9TY3JvbGxpbmcvUmVtb3Rl
U2Nyb2xsaW5nQ29vcmRpbmF0b3IuaApAQCAtNjEsNyArNjEsNyBAQCBwcml2YXRlOgogICAgIHZp
cnR1YWwgYm9vbCBpc1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gdHJ1ZTsgfQogICAgIAogICAgIC8vIFNjcm9sbGluZ0Nvb3JkaW5hdG9yCi0gICAg
dmlydHVhbCBib29sIGNvb3JkaW5hdGVzU2Nyb2xsaW5nRm9yRnJhbWVWaWV3KFdlYkNvcmU6OkZy
YW1lVmlldyopIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCBjb29yZGluYXRlc1Nj
cm9sbGluZ0ZvckZyYW1lVmlldyhjb25zdCBXZWJDb3JlOjpGcmFtZVZpZXcmKSBjb25zdCBvdmVy
cmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVUcmVlU3RhdGVDb21taXQoKSBvdmVycmlk
ZTsKIAogICAgIHZpcnR1YWwgYm9vbCBpc1J1YmJlckJhbmRJblByb2dyZXNzKCkgY29uc3Qgb3Zl
cnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Njcm9sbGluZy9S
ZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvci5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
U2Nyb2xsaW5nL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yLm1tCmluZGV4IGE2ODA4ODFjMmRh
MTc5ZDFjMWRjZTMxY2U5MjVjOTE0ZTA0MmRlZGEuLmY3NzczOTgyNDc4ZWVhZjMwODc5ZTY4MTNh
ZDdlNzcyYWQxNDBlYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvU2Ny
b2xsaW5nL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvU2Nyb2xsaW5nL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yLm1tCkBAIC02
Nyw5ICs2Nyw5IEBAIHZvaWQgUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNjaGVkdWxlVHJl
ZVN0YXRlQ29tbWl0KCkKICAgICBtX3dlYlBhZ2UtPmRyYXdpbmdBcmVhKCktPnNjaGVkdWxlQ29t
cG9zaXRpbmdMYXllckZsdXNoKCk7CiB9CiAKLWJvb2wgUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0
b3I6OmNvb3JkaW5hdGVzU2Nyb2xsaW5nRm9yRnJhbWVWaWV3KEZyYW1lVmlldyogZnJhbWVWaWV3
KSBjb25zdAorYm9vbCBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvcjo6Y29vcmRpbmF0ZXNTY3Jv
bGxpbmdGb3JGcmFtZVZpZXcoY29uc3QgRnJhbWVWaWV3JiBmcmFtZVZpZXcpIGNvbnN0CiB7Ci0g
ICAgUmVuZGVyVmlldyogcmVuZGVyVmlldyA9IGZyYW1lVmlldy0+cmVuZGVyVmlldygpOworICAg
IFJlbmRlclZpZXcqIHJlbmRlclZpZXcgPSBmcmFtZVZpZXcucmVuZGVyVmlldygpOwogICAgIHJl
dHVybiByZW5kZXJWaWV3ICYmIHJlbmRlclZpZXctPnVzZXNDb21wb3NpdGluZygpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249696</attachid>
            <date>2015-03-29 13:35:08 -0700</date>
            <delta_ts>2015-03-29 13:41:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143198-20150329133427.patch</filename>
            <type>text/plain</type>
            <size>73832</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgyMTE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTRhYTRmOGE3Zjk4OTFh
YTY1NDRkZTYzMDNjODgzNzRmYWVkMjJjNS4uMjE3YmY3YmVkYjVhNTdmYjU1YjhjYTU0YjJhYTU5
MGJjOTRmYTE2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk2IEBACisyMDE1LTAzLTI5ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIENvbnZlcnQgYXJn
dW1lbnRzIHRvIFNjcm9sbGluZ0Nvb3JkaW5hdG9yIGZ1bmN0aW9ucyB0byByZWZlcmVuY2VzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDMxOTgKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb252ZXJ0IGFs
bCB0aGUgRnJhbWVWaWV3KiBhbmQgU2Nyb2xsYWJsZUFyZWEqIGFyZ3VtZW50cyB0byBTY3JvbGxp
bmdDb29yZGluYXRvciBmdW5jdGlvbnMgdG8KKyAgICAgICAgcmVmZXJlbmNlcywgYW5kIHVzZSBy
ZWZlcmVuY2VzIGluIGEgZmV3IG90aGVyIHBsYWNlcy4KKworICAgICAgICAqIGRvbS9Eb2N1bWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp3aGVlbEV2ZW50SGFuZGxlckNvdW50Q2hhbmdlZCk6
CisgICAgICAgICogcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbk92ZXJsYXk6OnVwZGF0ZVJlZ2lvbik6CisgICAgICAg
ICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpwcmVw
YXJlRm9yRGV0YWNoKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6YWRkU2xvd1JlcGFp
bnRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpyZW1vdmVTbG93UmVwYWlu
dE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmFkZFZpZXdwb3J0Q29uc3Ry
YWluZWRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpyZW1vdmVWaWV3cG9y
dENvbnN0cmFpbmVkT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6cmVxdWVz
dFNjcm9sbFBvc2l0aW9uVXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6cGVy
Zm9ybVBvc3RMYXlvdXRUYXNrcyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnNjcm9s
bGFibGVBcmVhU2V0Q2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OndoZWVs
RXZlbnQpOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdl
Ojpub25GYXN0U2Nyb2xsYWJsZVJlY3RzKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAg
ICAgKiBwYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZyYW1lVmlld0xheW91dFVw
ZGF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6ZnJh
bWVWaWV3Tm9uRmFzdFNjcm9sbGFibGVSZWdpb25DaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6
OkFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZyYW1lVmlld1Jvb3RMYXllckRpZENoYW5nZSk6
CisgICAgICAgIChXZWJDb3JlOjpBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpyZXF1ZXN0U2Ny
b2xsUG9zaXRpb25VcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNTY3JvbGxpbmdDb29y
ZGluYXRvcjo6dXBkYXRlU2Nyb2xsUG9zaXRpb25BZnRlckFzeW5jU2Nyb2xsKToKKyAgICAgICAg
KFdlYkNvcmU6OkFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNjcm9sbGFibGVBcmVhU2Nyb2xs
YmFyTGF5ZXJEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNTY3JvbGxpbmdDb29y
ZGluYXRvcjo6ZW5zdXJlUm9vdFN0YXRlTm9kZUZvckZyYW1lVmlldyk6CisgICAgICAgIChXZWJD
b3JlOjpBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjp1cGRhdGVNYWluRnJhbWVTY3JvbGxMYXll
clBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6
OnJlY29tcHV0ZVdoZWVsRXZlbnRIYW5kbGVyQ291bnRGb3JGcmFtZVZpZXcpOgorICAgICAgICAq
IHBhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaDoKKyAgICAgICAgKiBw
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxpbmdDb29yZGluYXRvcjo6cGFnZURlc3Ryb3llZCk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxpbmdDb29yZGluYXRvcjo6Y29vcmRpbmF0ZXNTY3JvbGxpbmdGb3JGcmFtZVZpZXcp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmNvbXB1dGVOb25GYXN0
U2Nyb2xsYWJsZVJlZ2lvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRv
cjo6ZnJhbWVWaWV3V2hlZWxFdmVudEhhbmRsZXJDb3VudENoYW5nZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZyYW1lVmlld0hhc1Nsb3dSZXBhaW50T2JqZWN0
c0RpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6ZnJh
bWVWaWV3Rml4ZWRPYmplY3RzRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGlu
Z0Nvb3JkaW5hdG9yOjpzY3JvbGxMYXllckZvclNjcm9sbGFibGVBcmVhKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzY3JvbGxMYXllckZvckZyYW1lVmlldyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6aGVhZGVyTGF5ZXJGb3JGcmFt
ZVZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZvb3Rlckxh
eWVyRm9yRnJhbWVWaWV3KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9y
Ojpjb3VudGVyU2Nyb2xsaW5nTGF5ZXJGb3JGcmFtZVZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsaW5nQ29vcmRpbmF0b3I6Omluc2V0Q2xpcExheWVyRm9yRnJhbWVWaWV3KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpjb250ZW50U2hhZG93TGF5ZXJGb3JG
cmFtZVZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnJvb3RD
b250ZW50TGF5ZXJGb3JGcmFtZVZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29v
cmRpbmF0b3I6OmZyYW1lVmlld1Jvb3RMYXllckRpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxpbmdDb29yZGluYXRvcjo6aGFzVmlzaWJsZVNsb3dSZXBhaW50Vmlld3BvcnRDb25z
dHJhaW5lZE9iamVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6
OnN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxp
bmdDb29yZGluYXRvcjo6dXBkYXRlU3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzZXRGb3JjZVN5bmNocm9ub3VzU2Ny
b2xsTGF5ZXJQb3NpdGlvblVwZGF0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29v
cmRpbmF0b3I6OnNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25TeW5jaHJvbm91c2x5KToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpyZXBsYXlTZXNzaW9uU3Rh
dGVEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnN5
bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29uc0FzVGV4dCk6CisgICAgICAgICogcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaDogQWxpZ24gdGhlIGJpdG1hc2sgZW51bXMgdG8gbWFr
ZSBtaXN0YWtlcworICAgICAgICBlYXNpZXIgdG8gc3BvdC4KKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGluZ0Nvb3JkaW5hdG9yOjpmcmFtZVZpZXdMYXlvdXRVcGRhdGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpmcmFtZVZpZXdOb25GYXN0U2Nyb2xsYWJsZVJl
Z2lvbkNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnJl
cXVlc3RTY3JvbGxQb3NpdGlvblVwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdD
b29yZGluYXRvcjo6aGFuZGxlV2hlZWxFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxp
bmdDb29yZGluYXRvcjo6d2lsbERlc3Ryb3lTY3JvbGxhYmxlQXJlYSk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6c2Nyb2xsYWJsZUFyZWFTY3JvbGxMYXllckRpZENo
YW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6c2Nyb2xsYWJs
ZUFyZWFTY3JvbGxiYXJMYXllckRpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxp
bmdDb29yZGluYXRvcjo6cmVjb21wdXRlV2hlZWxFdmVudEhhbmRsZXJDb3VudEZvckZyYW1lVmll
dyk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ0Nvb3JkaW5hdG9yTWFj
Lmg6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ0Nvb3JkaW5hdG9yTWFj
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWM6OmhhbmRsZVdo
ZWVsRXZlbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMYXllcjo6flJlbmRlckxheWVyKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVy
QmFja2luZzo6dXBkYXRlT3ZlcmZsb3dDb250cm9sc0xheWVycyk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllckNvbXBvc2l0b3I6OnVwZGF0ZUJhY2tpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGF5ZXJDb21wb3NpdG9yOjpoYXNDb29yZGluYXRlZFNjcm9sbGluZyk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnNjcm9sbGluZ0xheWVyRGlkQ2hhbmdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlTGF5ZXJGb3JIZWFk
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVMYXll
ckZvckZvb3Rlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVw
ZGF0ZU92ZXJmbG93Q29udHJvbHNMYXllcnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5
ZXJDb21wb3NpdG9yOjpkZXN0cm95Um9vdExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlU2Nyb2xsQ29vcmRpbmF0aW9uRm9yVGhpc0ZyYW1lKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlU2Nyb2xsQ29v
cmRpbmF0ZWRMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6
OndpbGxSZW1vdmVTY3JvbGxpbmdMYXllcldpdGhCYWNraW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6ZGlkQWRkU2Nyb2xsaW5nTGF5ZXIpOgorICAgICAgICAq
IHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6bm9u
RmFzdFNjcm9sbGFibGVSZWN0cyk6CisKIDIwMTUtMDMtMjggIEVyaWMgQ2FybHNvbiAgPGVyaWMu
Y2FybHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgW01hY10gVXBkYXRlIGZvciBvdXRwdXQgZGV2
aWNlIEFQSSBjaGFuZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBmYTIyZDQ4OGYzYzQ2NWJkY2ExZTFjZjg0NWRl
NzIyMjY1Yjc5MTdiLi5hZGFiNDgyZWY4OTYxNjlmNjU2OTBhNTVlYWI1ZmEzNDBmZTNiODc4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTUtMDMtMjkgIFNpbW9uIEZyYXNlciAgPHNp
bW9uLmZyYXNlckBhcHBsZS5jb20+CisKKyAgICAgICAgQ29udmVydCBhcmd1bWVudHMgdG8gU2Ny
b2xsaW5nQ29vcmRpbmF0b3IgZnVuY3Rpb25zIHRvIHJlZmVyZW5jZXMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzE5OAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENvbnZlcnQgYWxsIHRoZSBGcmFtZVZp
ZXcqIGFuZCBTY3JvbGxhYmxlQXJlYSogYXJndW1lbnRzIHRvIFNjcm9sbGluZ0Nvb3JkaW5hdG9y
IGZ1bmN0aW9ucyB0bworICAgICAgICByZWZlcmVuY2VzLCBhbmQgdXNlIHJlZmVyZW5jZXMgaW4g
YSBmZXcgb3RoZXIgcGxhY2VzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9TY3JvbGxpbmcvUmVt
b3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1Njcm9sbGlu
Zy9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvci5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmNvb3JkaW5hdGVzU2Nyb2xsaW5nRm9yRnJhbWVWaWV3KToK
KwogMjAxNS0wMy0yNyAgR3dhbmcgWW9vbiBId2FuZyAgPHlvb25AaWdhbGlhLmNvbT4KIAogICAg
ICAgICBbVGV4TWFwXSBTZXBlcmF0ZSBCaXRtYXBUZXh0dXJlIHJlbGF0ZWQgY2xhc3NlcyBpbXBs
ZW1lbnRhdGlvbnMgZnJvbSBUZXh0dXJlTWFwcGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRl
eCA0MDRkNTdmOTM2MjMxMDRjYjc5NGYwNjYzZjk5YWE0OWY5ZTFlYTRjLi4zMGNkMmRjN2U2ODEz
OTkwYjRkYjkxMDViYjZhNWIxZWMyN2UzNzhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAg
LTU5OTUsNyArNTk5NSw3IEBAIHN0YXRpYyB2b2lkIHdoZWVsRXZlbnRIYW5kbGVyQ291bnRDaGFu
Z2VkKERvY3VtZW50KiBkb2N1bWVudCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gRklYTUU6
IFdoeSBkb2Vzbid0IHRoaXMgbmVlZCB0byBiZSBjYWxsZWQgaW4gZGlkQmVjb21lQ3VycmVudERv
Y3VtZW50SW5GcmFtZT8KLSAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+ZnJhbWVWaWV3V2hlZWxF
dmVudEhhbmRsZXJDb3VudENoYW5nZWQoZnJhbWVWaWV3KTsKKyAgICBzY3JvbGxpbmdDb29yZGlu
YXRvci0+ZnJhbWVWaWV3V2hlZWxFdmVudEhhbmRsZXJDb3VudENoYW5nZWQoKmZyYW1lVmlldyk7
CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OmRpZEFkZFdoZWVsRXZlbnRIYW5kbGVyKE5vZGUmKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAKaW5kZXggZDQ2MTBjYWU5
Mjc0NzliZGU2MDE0M2MzZWFhNDBhNzlmNzhhZGI4OC4uNzZhMDk2NDczODY2NzJlMjI3YTA3OTM3
NzI2NTczMzRkNWRkYmY2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3Rv
cnlDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRy
b2xsZXIuY3BwCkBAIC0xMzgsNyArMTM4LDcgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6cmVz
dG9yZVNjcm9sbFBvc2l0aW9uQW5kVmlld1N0YXRlKCkKICAgICAgICAgUGFnZSogcGFnZSA9IG1f
ZnJhbWUucGFnZSgpOwogICAgICAgICBpZiAocGFnZSAmJiBtX2ZyYW1lLmlzTWFpbkZyYW1lKCkp
IHsKICAgICAgICAgICAgIGlmIChTY3JvbGxpbmdDb29yZGluYXRvciogc2Nyb2xsaW5nQ29vcmRp
bmF0b3IgPSBwYWdlLT5zY3JvbGxpbmdDb29yZGluYXRvcigpKQotICAgICAgICAgICAgICAgIHNj
cm9sbGluZ0Nvb3JkaW5hdG9yLT5mcmFtZVZpZXdSb290TGF5ZXJEaWRDaGFuZ2Uodmlldyk7Cisg
ICAgICAgICAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPmZyYW1lVmlld1Jvb3RMYXllckRp
ZENoYW5nZSgqdmlldyk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9E
ZWJ1Z1BhZ2VPdmVybGF5cy5jcHAKaW5kZXggMmJhN2ZlZWMzZjg2NjJiMjkxOTc5YzZlOTRlZjg3
YzVlY2Q2ZTEzMC4uMGZhNzg0YmFhZWQ2NzAzMzVkNWVhYzM3ODVkYTUxZDVjY2NkOTczNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAKQEAgLTEyNyw3ICsxMjcs
NyBAQCBib29sIE5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uT3ZlcmxheTo6dXBkYXRlUmVnaW9uKCkK
IAogICAgIGlmIChQYWdlKiBwYWdlID0gbV9mcmFtZS5wYWdlKCkpIHsKICAgICAgICAgaWYgKFNj
cm9sbGluZ0Nvb3JkaW5hdG9yKiBzY3JvbGxpbmdDb29yZGluYXRvciA9IHBhZ2UtPnNjcm9sbGlu
Z0Nvb3JkaW5hdG9yKCkpCi0gICAgICAgICAgICAqcmVnaW9uID0gc2Nyb2xsaW5nQ29vcmRpbmF0
b3ItPmNvbXB1dGVOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbigmbV9mcmFtZSwgSW50UG9pbnQoKSk7
CisgICAgICAgICAgICAqcmVnaW9uID0gc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPmNvbXB1dGVOb25G
YXN0U2Nyb2xsYWJsZVJlZ2lvbihtX2ZyYW1lLCBJbnRQb2ludCgpKTsKICAgICB9CiAKICAgICAv
LyBjb21wdXRlTm9uRmFzdFNjcm9sbGFibGVSZWdpb24oKSBhcHBsaWVzIHRvcENvbnRlbnRJbnNl
dC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZS5jcHAKaW5kZXggOTg4YWQwNmRjYzk0Y2I4MWZkODA0YjFlMTRiOGY3
ODdiZTJhZWVhZi4uMDE4YjA2ZWViMGFjN2Y3ZjgzMTAxOTExMjc1NzgyMjZiZjhmNjA2YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZS5jcHAKQEAgLTc5MSw3ICs3OTEsNyBAQCB2b2lkIEZyYW1lOjp3aWxsRGV0
YWNoUGFnZSgpCiAgICAgICAgIHBhZ2UoKS0+Zm9jdXNDb250cm9sbGVyKCkuc2V0Rm9jdXNlZEZy
YW1lKDApOwogCiAgICAgaWYgKHBhZ2UoKSAmJiBwYWdlKCktPnNjcm9sbGluZ0Nvb3JkaW5hdG9y
KCkgJiYgbV92aWV3KQotICAgICAgICBwYWdlKCktPnNjcm9sbGluZ0Nvb3JkaW5hdG9yKCktPndp
bGxEZXN0cm95U2Nyb2xsYWJsZUFyZWEobV92aWV3LmdldCgpKTsKKyAgICAgICAgcGFnZSgpLT5z
Y3JvbGxpbmdDb29yZGluYXRvcigpLT53aWxsRGVzdHJveVNjcm9sbGFibGVBcmVhKCptX3ZpZXcp
OwogCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIGlmIChXZWJUaHJlYWRDb3VudE9mT2JzZXJ2ZWRD
b250ZW50TW9kaWZpZXJzKCkgPiAwICYmIG1fcGFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNw
cAppbmRleCA5YzY1N2JjMmJlNzI0MDk3YWM5MGNjNmEwYzkxZjJhNDAzNGQ1Nzc5Li43YzlmMDUx
NDk3NTI3OGZhYzg3OTcwMTY1NGI4Y2U0NGY0ZTQyZTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZp
ZXcuY3BwCkBAIC0zNTgsNyArMzU4LDcgQEAgdm9pZCBGcmFtZVZpZXc6OnByZXBhcmVGb3JEZXRh
Y2goKQogCiAgICAgaWYgKGZyYW1lKCkucGFnZSgpKSB7CiAgICAgICAgIGlmIChTY3JvbGxpbmdD
b29yZGluYXRvciogc2Nyb2xsaW5nQ29vcmRpbmF0b3IgPSBmcmFtZSgpLnBhZ2UoKS0+c2Nyb2xs
aW5nQ29vcmRpbmF0b3IoKSkKLSAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT53aWxs
RGVzdHJveVNjcm9sbGFibGVBcmVhKHRoaXMpOworICAgICAgICAgICAgc2Nyb2xsaW5nQ29vcmRp
bmF0b3ItPndpbGxEZXN0cm95U2Nyb2xsYWJsZUFyZWEoKnRoaXMpOwogICAgIH0KIH0KIApAQCAt
MTU0OCw3ICsxNTQ4LDcgQEAgdm9pZCBGcmFtZVZpZXc6OmFkZFNsb3dSZXBhaW50T2JqZWN0KFJl
bmRlckVsZW1lbnQqIG8pCiAKICAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBmcmFtZSgpLnBhZ2Uo
KSkgewogICAgICAgICAgICAgaWYgKFNjcm9sbGluZ0Nvb3JkaW5hdG9yKiBzY3JvbGxpbmdDb29y
ZGluYXRvciA9IHBhZ2UtPnNjcm9sbGluZ0Nvb3JkaW5hdG9yKCkpCi0gICAgICAgICAgICAgICAg
c2Nyb2xsaW5nQ29vcmRpbmF0b3ItPmZyYW1lVmlld0hhc1Nsb3dSZXBhaW50T2JqZWN0c0RpZENo
YW5nZSh0aGlzKTsKKyAgICAgICAgICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+ZnJhbWVW
aWV3SGFzU2xvd1JlcGFpbnRPYmplY3RzRGlkQ2hhbmdlKCp0aGlzKTsKICAgICAgICAgfQogICAg
IH0KIH0KQEAgLTE1NjUsNyArMTU2NSw3IEBAIHZvaWQgRnJhbWVWaWV3OjpyZW1vdmVTbG93UmVw
YWludE9iamVjdChSZW5kZXJFbGVtZW50KiBvKQogCiAgICAgICAgIGlmIChQYWdlKiBwYWdlID0g
ZnJhbWUoKS5wYWdlKCkpIHsKICAgICAgICAgICAgIGlmIChTY3JvbGxpbmdDb29yZGluYXRvciog
c2Nyb2xsaW5nQ29vcmRpbmF0b3IgPSBwYWdlLT5zY3JvbGxpbmdDb29yZGluYXRvcigpKQotICAg
ICAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5mcmFtZVZpZXdIYXNTbG93UmVwYWlu
dE9iamVjdHNEaWRDaGFuZ2UodGhpcyk7CisgICAgICAgICAgICAgICAgc2Nyb2xsaW5nQ29vcmRp
bmF0b3ItPmZyYW1lVmlld0hhc1Nsb3dSZXBhaW50T2JqZWN0c0RpZENoYW5nZSgqdGhpcyk7CiAg
ICAgICAgIH0KICAgICB9CiB9CkBAIC0xNTgyLDcgKzE1ODIsNyBAQCB2b2lkIEZyYW1lVmlldzo6
YWRkVmlld3BvcnRDb25zdHJhaW5lZE9iamVjdChSZW5kZXJFbGVtZW50KiBvYmplY3QpCiAKICAg
ICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBmcmFtZSgpLnBhZ2UoKSkgewogICAgICAgICAgICAgaWYg
KFNjcm9sbGluZ0Nvb3JkaW5hdG9yKiBzY3JvbGxpbmdDb29yZGluYXRvciA9IHBhZ2UtPnNjcm9s
bGluZ0Nvb3JkaW5hdG9yKCkpCi0gICAgICAgICAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3It
PmZyYW1lVmlld0ZpeGVkT2JqZWN0c0RpZENoYW5nZSh0aGlzKTsKKyAgICAgICAgICAgICAgICBz
Y3JvbGxpbmdDb29yZGluYXRvci0+ZnJhbWVWaWV3Rml4ZWRPYmplY3RzRGlkQ2hhbmdlKCp0aGlz
KTsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTE1OTIsNyArMTU5Miw3IEBAIHZvaWQgRnJhbWVW
aWV3OjpyZW1vdmVWaWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0KFJlbmRlckVsZW1lbnQqIG9iamVj
dCkKICAgICBpZiAobV92aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0cyAmJiBtX3ZpZXdwb3J0Q29u
c3RyYWluZWRPYmplY3RzLT5yZW1vdmUob2JqZWN0KSkgewogICAgICAgICBpZiAoUGFnZSogcGFn
ZSA9IGZyYW1lKCkucGFnZSgpKSB7CiAgICAgICAgICAgICBpZiAoU2Nyb2xsaW5nQ29vcmRpbmF0
b3IqIHNjcm9sbGluZ0Nvb3JkaW5hdG9yID0gcGFnZS0+c2Nyb2xsaW5nQ29vcmRpbmF0b3IoKSkK
LSAgICAgICAgICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+ZnJhbWVWaWV3Rml4ZWRPYmpl
Y3RzRGlkQ2hhbmdlKHRoaXMpOworICAgICAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9y
LT5mcmFtZVZpZXdGaXhlZE9iamVjdHNEaWRDaGFuZ2UoKnRoaXMpOwogICAgICAgICB9CiAKICAg
ICAgICAgLy8gRklYTUU6IEluIGFkZEZpeGVkT2JqZWN0KCkgd2Ugb25seSBjYWxsIHRoaXMgaWYg
dGhlcmUncyBhIHBsYXRmb3JtIHdpZGdldCwKQEAgLTIyMzAsNyArMjIzMCw3IEBAIGJvb2wgRnJh
bWVWaWV3OjpyZXF1ZXN0U2Nyb2xsUG9zaXRpb25VcGRhdGUoY29uc3QgSW50UG9pbnQmIHBvc2l0
aW9uKQogI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpIHx8IFVTRShUSUxFRF9CQUNLSU5HX1NU
T1JFKQogICAgIGlmIChQYWdlKiBwYWdlID0gZnJhbWUoKS5wYWdlKCkpIHsKICAgICAgICAgaWYg
KFNjcm9sbGluZ0Nvb3JkaW5hdG9yKiBzY3JvbGxpbmdDb29yZGluYXRvciA9IHBhZ2UtPnNjcm9s
bGluZ0Nvb3JkaW5hdG9yKCkpCi0gICAgICAgICAgICByZXR1cm4gc2Nyb2xsaW5nQ29vcmRpbmF0
b3ItPnJlcXVlc3RTY3JvbGxQb3NpdGlvblVwZGF0ZSh0aGlzLCBwb3NpdGlvbik7CisgICAgICAg
ICAgICByZXR1cm4gc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPnJlcXVlc3RTY3JvbGxQb3NpdGlvblVw
ZGF0ZSgqdGhpcywgcG9zaXRpb24pOwogICAgIH0KICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHBv
c2l0aW9uKTsKQEAgLTI5NjMsNyArMjk2Myw3IEBAIHZvaWQgRnJhbWVWaWV3OjpwZXJmb3JtUG9z
dExheW91dFRhc2tzKCkKIAogICAgIGlmIChhdXRvKiBwYWdlID0gZnJhbWUoKS5wYWdlKCkpIHsK
ICAgICAgICAgaWYgKGF1dG8qIHNjcm9sbGluZ0Nvb3JkaW5hdG9yID0gcGFnZS0+c2Nyb2xsaW5n
Q29vcmRpbmF0b3IoKSkKLSAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5mcmFtZVZp
ZXdMYXlvdXRVcGRhdGVkKHRoaXMpOworICAgICAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3It
PmZyYW1lVmlld0xheW91dFVwZGF0ZWQoKnRoaXMpOwogICAgIH0KIAogICAgIGlmIChSZW5kZXJW
aWV3KiByZW5kZXJWaWV3ID0gdGhpcy0+cmVuZGVyVmlldygpKSB7CkBAIC00Mzc3LDcgKzQzNzcs
NyBAQCB2b2lkIEZyYW1lVmlldzo6c2Nyb2xsYWJsZUFyZWFTZXRDaGFuZ2VkKCkKIHsKICAgICBp
ZiAoYXV0byogcGFnZSA9IGZyYW1lKCkucGFnZSgpKSB7CiAgICAgICAgIGlmIChhdXRvKiBzY3Jv
bGxpbmdDb29yZGluYXRvciA9IHBhZ2UtPnNjcm9sbGluZ0Nvb3JkaW5hdG9yKCkpCi0gICAgICAg
ICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+ZnJhbWVWaWV3Tm9uRmFzdFNjcm9sbGFibGVSZWdp
b25DaGFuZ2VkKHRoaXMpOworICAgICAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPmZyYW1l
Vmlld05vbkZhc3RTY3JvbGxhYmxlUmVnaW9uQ2hhbmdlZCgqdGhpcyk7CiAgICAgfQogfQogCkBA
IC00NDI5LDggKzQ0MjksOCBAQCBib29sIEZyYW1lVmlldzo6d2hlZWxFdmVudChjb25zdCBQbGF0
Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQpCiAjaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykK
ICAgICBpZiAoUGFnZSogcGFnZSA9IGZyYW1lKCkucGFnZSgpKSB7CiAgICAgICAgIGlmIChTY3Jv
bGxpbmdDb29yZGluYXRvciogc2Nyb2xsaW5nQ29vcmRpbmF0b3IgPSBwYWdlLT5zY3JvbGxpbmdD
b29yZGluYXRvcigpKSB7Ci0gICAgICAgICAgICBpZiAoc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPmNv
b3JkaW5hdGVzU2Nyb2xsaW5nRm9yRnJhbWVWaWV3KHRoaXMpKQotICAgICAgICAgICAgICAgIHJl
dHVybiBzY3JvbGxpbmdDb29yZGluYXRvci0+aGFuZGxlV2hlZWxFdmVudCh0aGlzLCB3aGVlbEV2
ZW50KTsKKyAgICAgICAgICAgIGlmIChzY3JvbGxpbmdDb29yZGluYXRvci0+Y29vcmRpbmF0ZXNT
Y3JvbGxpbmdGb3JGcmFtZVZpZXcoKnRoaXMpKQorICAgICAgICAgICAgICAgIHJldHVybiBzY3Jv
bGxpbmdDb29yZGluYXRvci0+aGFuZGxlV2hlZWxFdmVudCgqdGhpcywgd2hlZWxFdmVudCk7CiAg
ICAgICAgIH0KICAgICB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDIyMTUxNTQzOWE0
NjAxMWRiMmI5MGY3ZmQyNmQ1NzFmMjIzZTJiNTQuLmE5NjRiNTgxZDQzOWMyN2QzZWEwM2M3ZDg0
MmM3YjEyNDFhZjhlNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMzY5LDcgKzM2OSw3IEBAIFN0
cmluZyBQYWdlOjpzeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnNBc1RleHQoKQogICAgIHJldHVy
biBTdHJpbmcoKTsKIH0KIAotUmVmPENsaWVudFJlY3RMaXN0PiBQYWdlOjpub25GYXN0U2Nyb2xs
YWJsZVJlY3RzKGNvbnN0IEZyYW1lKiBmcmFtZSkKK1JlZjxDbGllbnRSZWN0TGlzdD4gUGFnZTo6
bm9uRmFzdFNjcm9sbGFibGVSZWN0cyhjb25zdCBGcmFtZSYgZnJhbWUpCiB7CiAgICAgaWYgKERv
Y3VtZW50KiBkb2N1bWVudCA9IG1fbWFpbkZyYW1lLT5kb2N1bWVudCgpKQogICAgICAgICBkb2N1
bWVudC0+dXBkYXRlTGF5b3V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCmluZGV4IDZlNzA1ZjRkZTE4ODU5MjJi
ZWNiNGFmNjZhMjFmMjkzMjliZTdhNGIuLmEyYTBmODQ2Mjk0NzFmZTMwNDg4N2Q1NGVkZWU5MmIz
ZDYzOTA1ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCkBAIC0xOTMsNyArMTkzLDcgQEAgcHVibGljOgogCiAg
ICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4dCgpOwogICAg
IFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnNBc1RleHQo
KTsKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWY8Q2xpZW50UmVjdExpc3Q+IG5vbkZhc3RTY3JvbGxh
YmxlUmVjdHMoY29uc3QgRnJhbWUqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8Q2xpZW50UmVj
dExpc3Q+IG5vbkZhc3RTY3JvbGxhYmxlUmVjdHMoY29uc3QgRnJhbWUmKTsKIAogICAgIFNldHRp
bmdzJiBzZXR0aW5ncygpIGNvbnN0IHsgcmV0dXJuICptX3NldHRpbmdzOyB9CiAgICAgUHJvZ3Jl
c3NUcmFja2VyJiBwcm9ncmVzcygpIGNvbnN0IHsgcmV0dXJuICptX3Byb2dyZXNzOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5n
Q29vcmRpbmF0b3IuY3BwCmluZGV4IGUzMjA2NTgyM2MwMzI1MWZhNDQ3MTQ3MGI4MmM3OWZmN2Qy
ODAyOTkuLjllZDU4YWE5NGM3NjJhMGVmNTNjMjVjMGQ1M2YzMGM1ZGU5ZTIzYTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5n
Q29vcmRpbmF0b3IuY3BwCkBAIC03Myw3ICs3Myw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBzZXRT
dGF0ZVNjcm9sbGluZ05vZGVTbmFwT2Zmc2V0c0FzRmxvYXQoU2Nyb2xsaW5nU3RhdGVTY3JvbGxp
CiAgICAgICAgIG5vZGUuc2V0VmVydGljYWxTbmFwT2Zmc2V0cyhzbmFwT2Zmc2V0c0FzRmxvYXQp
OwogfQogCi12b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZyYW1lVmlld0xheW91dFVw
ZGF0ZWQoRnJhbWVWaWV3KiBmcmFtZVZpZXcpCit2b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0
b3I6OmZyYW1lVmlld0xheW91dFVwZGF0ZWQoRnJhbWVWaWV3JiBmcmFtZVZpZXcpCiB7CiAgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlQobV9wYWdlKTsKQEAgLTg3LDU4ICs4
Nyw1OCBAQCB2b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZyYW1lVmlld0xheW91dFVw
ZGF0ZWQoRnJhbWVWaWV3KiBmcmFtZVZpZXcpCiAgICAgLy8gZnJhbWUgdmlldyB3aG9zZSBsYXlv
dXQgd2FzIHVwZGF0ZWQgaXMgbm90IHRoZSBtYWluIGZyYW1lLgogICAgIC8vIEluIHRoZSBmdXR1
cmUsIHdlIG1heSB3YW50IHRvIGhhdmUgdGhlIGFiaWxpdHkgdG8gc2V0IG5vbi1mYXN0IHNjcm9s
bGluZyByZWdpb25zIGZvciBtb3JlIHRoYW4KICAgICAvLyBqdXN0IHRoZSByb290IG5vZGUuIEJ1
dCByaWdodCBub3csIHRoaXMgY29uY2VwdCBvbmx5IGFwcGxpZXMgdG8gdGhlIHJvb3QuCi0gICAg
bV9zY3JvbGxpbmdTdGF0ZVRyZWUtPnJvb3RTdGF0ZU5vZGUoKS0+c2V0Tm9uRmFzdFNjcm9sbGFi
bGVSZWdpb24oY29tcHV0ZU5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uKCZtX3BhZ2UtPm1haW5GcmFt
ZSgpLCBJbnRQb2ludCgpKSk7CisgICAgbV9zY3JvbGxpbmdTdGF0ZVRyZWUtPnJvb3RTdGF0ZU5v
ZGUoKS0+c2V0Tm9uRmFzdFNjcm9sbGFibGVSZWdpb24oY29tcHV0ZU5vbkZhc3RTY3JvbGxhYmxl
UmVnaW9uKG1fcGFnZS0+bWFpbkZyYW1lKCksIEludFBvaW50KCkpKTsKIAogICAgIGlmICghY29v
cmRpbmF0ZXNTY3JvbGxpbmdGb3JGcmFtZVZpZXcoZnJhbWVWaWV3KSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGUqIG5vZGUgPSBkb3duY2Fz
dDxTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZT4obV9zY3JvbGxpbmdTdGF0ZVRyZWUt
PnN0YXRlTm9kZUZvcklEKGZyYW1lVmlldy0+c2Nyb2xsTGF5ZXJJRCgpKSk7CisgICAgU2Nyb2xs
aW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGUqIG5vZGUgPSBkb3duY2FzdDxTY3JvbGxpbmdTdGF0
ZUZyYW1lU2Nyb2xsaW5nTm9kZT4obV9zY3JvbGxpbmdTdGF0ZVRyZWUtPnN0YXRlTm9kZUZvcklE
KGZyYW1lVmlldy5zY3JvbGxMYXllcklEKCkpKTsKICAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIFNjcm9sbGJhciogdmVydGljYWxTY3JvbGxiYXIgPSBmcmFtZVZpZXctPnZl
cnRpY2FsU2Nyb2xsYmFyKCk7Ci0gICAgU2Nyb2xsYmFyKiBob3Jpem9udGFsU2Nyb2xsYmFyID0g
ZnJhbWVWaWV3LT5ob3Jpem9udGFsU2Nyb2xsYmFyKCk7CisgICAgU2Nyb2xsYmFyKiB2ZXJ0aWNh
bFNjcm9sbGJhciA9IGZyYW1lVmlldy52ZXJ0aWNhbFNjcm9sbGJhcigpOworICAgIFNjcm9sbGJh
ciogaG9yaXpvbnRhbFNjcm9sbGJhciA9IGZyYW1lVmlldy5ob3Jpem9udGFsU2Nyb2xsYmFyKCk7
CiAgICAgbm9kZS0+c2V0U2Nyb2xsYmFyUGFpbnRlcnNGcm9tU2Nyb2xsYmFycyh2ZXJ0aWNhbFNj
cm9sbGJhciwgaG9yaXpvbnRhbFNjcm9sbGJhcik7CiAgICAgCi0gICAgbm9kZS0+c2V0RnJhbWVT
Y2FsZUZhY3RvcihmcmFtZVZpZXctPmZyYW1lKCkuZnJhbWVTY2FsZUZhY3RvcigpKTsKLSAgICBu
b2RlLT5zZXRIZWFkZXJIZWlnaHQoZnJhbWVWaWV3LT5oZWFkZXJIZWlnaHQoKSk7Ci0gICAgbm9k
ZS0+c2V0Rm9vdGVySGVpZ2h0KGZyYW1lVmlldy0+Zm9vdGVySGVpZ2h0KCkpOwotICAgIG5vZGUt
PnNldFRvcENvbnRlbnRJbnNldChmcmFtZVZpZXctPnRvcENvbnRlbnRJbnNldCgpKTsKKyAgICBu
b2RlLT5zZXRGcmFtZVNjYWxlRmFjdG9yKGZyYW1lVmlldy5mcmFtZSgpLmZyYW1lU2NhbGVGYWN0
b3IoKSk7CisgICAgbm9kZS0+c2V0SGVhZGVySGVpZ2h0KGZyYW1lVmlldy5oZWFkZXJIZWlnaHQo
KSk7CisgICAgbm9kZS0+c2V0Rm9vdGVySGVpZ2h0KGZyYW1lVmlldy5mb290ZXJIZWlnaHQoKSk7
CisgICAgbm9kZS0+c2V0VG9wQ29udGVudEluc2V0KGZyYW1lVmlldy50b3BDb250ZW50SW5zZXQo
KSk7CiAKLSAgICBub2RlLT5zZXRTY3JvbGxPcmlnaW4oZnJhbWVWaWV3LT5zY3JvbGxPcmlnaW4o
KSk7Ci0gICAgbm9kZS0+c2V0U2Nyb2xsYWJsZUFyZWFTaXplKGZyYW1lVmlldy0+dmlzaWJsZUNv
bnRlbnRSZWN0KCkuc2l6ZSgpKTsKLSAgICBub2RlLT5zZXRUb3RhbENvbnRlbnRzU2l6ZShmcmFt
ZVZpZXctPnRvdGFsQ29udGVudHNTaXplKCkpOwotICAgIG5vZGUtPnNldFJlYWNoYWJsZUNvbnRl
bnRzU2l6ZShmcmFtZVZpZXctPnRvdGFsQ29udGVudHNTaXplKCkpOworICAgIG5vZGUtPnNldFNj
cm9sbE9yaWdpbihmcmFtZVZpZXcuc2Nyb2xsT3JpZ2luKCkpOworICAgIG5vZGUtPnNldFNjcm9s
bGFibGVBcmVhU2l6ZShmcmFtZVZpZXcudmlzaWJsZUNvbnRlbnRSZWN0KCkuc2l6ZSgpKTsKKyAg
ICBub2RlLT5zZXRUb3RhbENvbnRlbnRzU2l6ZShmcmFtZVZpZXcudG90YWxDb250ZW50c1NpemUo
KSk7CisgICAgbm9kZS0+c2V0UmVhY2hhYmxlQ29udGVudHNTaXplKGZyYW1lVmlldy50b3RhbENv
bnRlbnRzU2l6ZSgpKTsKIAogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCi0gICAgZnJhbWVW
aWV3LT51cGRhdGVTbmFwT2Zmc2V0cygpOwotICAgIGlmIChjb25zdCBWZWN0b3I8TGF5b3V0VW5p
dD4qIGhvcml6b250YWxTbmFwT2Zmc2V0cyA9IGZyYW1lVmlldy0+aG9yaXpvbnRhbFNuYXBPZmZz
ZXRzKCkpCisgICAgZnJhbWVWaWV3LnVwZGF0ZVNuYXBPZmZzZXRzKCk7CisgICAgaWYgKGNvbnN0
IFZlY3RvcjxMYXlvdXRVbml0PiogaG9yaXpvbnRhbFNuYXBPZmZzZXRzID0gZnJhbWVWaWV3Lmhv
cml6b250YWxTbmFwT2Zmc2V0cygpKQogICAgICAgICBzZXRTdGF0ZVNjcm9sbGluZ05vZGVTbmFw
T2Zmc2V0c0FzRmxvYXQoKm5vZGUsIFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCwgKmhvcml6
b250YWxTbmFwT2Zmc2V0cywgbV9wYWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpKTsKIAotICAgIGlm
IChjb25zdCBWZWN0b3I8TGF5b3V0VW5pdD4qIHZlcnRpY2FsU25hcE9mZnNldHMgPSBmcmFtZVZp
ZXctPnZlcnRpY2FsU25hcE9mZnNldHMoKSkKKyAgICBpZiAoY29uc3QgVmVjdG9yPExheW91dFVu
aXQ+KiB2ZXJ0aWNhbFNuYXBPZmZzZXRzID0gZnJhbWVWaWV3LnZlcnRpY2FsU25hcE9mZnNldHMo
KSkKICAgICAgICAgc2V0U3RhdGVTY3JvbGxpbmdOb2RlU25hcE9mZnNldHNBc0Zsb2F0KCpub2Rl
LCBTY3JvbGxFdmVudEF4aXM6OlZlcnRpY2FsLCAqdmVydGljYWxTbmFwT2Zmc2V0cywgbV9wYWdl
LT5kZXZpY2VTY2FsZUZhY3RvcigpKTsKICNlbmRpZgogCiAgICAgU2Nyb2xsYWJsZUFyZWFQYXJh
bWV0ZXJzIHNjcm9sbFBhcmFtZXRlcnM7Ci0gICAgc2Nyb2xsUGFyYW1ldGVycy5ob3Jpem9udGFs
U2Nyb2xsRWxhc3RpY2l0eSA9IGZyYW1lVmlldy0+aG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHko
KTsKLSAgICBzY3JvbGxQYXJhbWV0ZXJzLnZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eSA9IGZyYW1l
Vmlldy0+dmVydGljYWxTY3JvbGxFbGFzdGljaXR5KCk7CisgICAgc2Nyb2xsUGFyYW1ldGVycy5o
b3Jpem9udGFsU2Nyb2xsRWxhc3RpY2l0eSA9IGZyYW1lVmlldy5ob3Jpem9udGFsU2Nyb2xsRWxh
c3RpY2l0eSgpOworICAgIHNjcm9sbFBhcmFtZXRlcnMudmVydGljYWxTY3JvbGxFbGFzdGljaXR5
ID0gZnJhbWVWaWV3LnZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eSgpOwogICAgIHNjcm9sbFBhcmFt
ZXRlcnMuaGFzRW5hYmxlZEhvcml6b250YWxTY3JvbGxiYXIgPSBob3Jpem9udGFsU2Nyb2xsYmFy
ICYmIGhvcml6b250YWxTY3JvbGxiYXItPmVuYWJsZWQoKTsKICAgICBzY3JvbGxQYXJhbWV0ZXJz
Lmhhc0VuYWJsZWRWZXJ0aWNhbFNjcm9sbGJhciA9IHZlcnRpY2FsU2Nyb2xsYmFyICYmIHZlcnRp
Y2FsU2Nyb2xsYmFyLT5lbmFibGVkKCk7Ci0gICAgc2Nyb2xsUGFyYW1ldGVycy5ob3Jpem9udGFs
U2Nyb2xsYmFyTW9kZSA9IGZyYW1lVmlldy0+aG9yaXpvbnRhbFNjcm9sbGJhck1vZGUoKTsKLSAg
ICBzY3JvbGxQYXJhbWV0ZXJzLnZlcnRpY2FsU2Nyb2xsYmFyTW9kZSA9IGZyYW1lVmlldy0+dmVy
dGljYWxTY3JvbGxiYXJNb2RlKCk7CisgICAgc2Nyb2xsUGFyYW1ldGVycy5ob3Jpem9udGFsU2Ny
b2xsYmFyTW9kZSA9IGZyYW1lVmlldy5ob3Jpem9udGFsU2Nyb2xsYmFyTW9kZSgpOworICAgIHNj
cm9sbFBhcmFtZXRlcnMudmVydGljYWxTY3JvbGxiYXJNb2RlID0gZnJhbWVWaWV3LnZlcnRpY2Fs
U2Nyb2xsYmFyTW9kZSgpOwogCiAgICAgbm9kZS0+c2V0U2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJz
KHNjcm9sbFBhcmFtZXRlcnMpOwogfQogCi12b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6
OmZyYW1lVmlld05vbkZhc3RTY3JvbGxhYmxlUmVnaW9uQ2hhbmdlZChGcmFtZVZpZXcqKQordm9p
ZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpmcmFtZVZpZXdOb25GYXN0U2Nyb2xsYWJsZVJl
Z2lvbkNoYW5nZWQoRnJhbWVWaWV3JikKIHsKICAgICBpZiAoIW1fc2Nyb2xsaW5nU3RhdGVUcmVl
LT5yb290U3RhdGVOb2RlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fc2Nyb2xsaW5nU3Rh
dGVUcmVlLT5yb290U3RhdGVOb2RlKCktPnNldE5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uKGNvbXB1
dGVOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbigmbV9wYWdlLT5tYWluRnJhbWUoKSwgSW50UG9pbnQo
KSkpOworICAgIG1fc2Nyb2xsaW5nU3RhdGVUcmVlLT5yb290U3RhdGVOb2RlKCktPnNldE5vbkZh
c3RTY3JvbGxhYmxlUmVnaW9uKGNvbXB1dGVOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbihtX3BhZ2Ut
Pm1haW5GcmFtZSgpLCBJbnRQb2ludCgpKSk7CiB9CiAKLXZvaWQgQXN5bmNTY3JvbGxpbmdDb29y
ZGluYXRvcjo6ZnJhbWVWaWV3Um9vdExheWVyRGlkQ2hhbmdlKEZyYW1lVmlldyogZnJhbWVWaWV3
KQordm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpmcmFtZVZpZXdSb290TGF5ZXJEaWRD
aGFuZ2UoRnJhbWVWaWV3JiBmcmFtZVZpZXcpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKICAgICBBU1NFUlQobV9wYWdlKTsKQEAgLTE0OCw3ICsxNDgsNyBAQCB2b2lkIEFzeW5jU2Ny
b2xsaW5nQ29vcmRpbmF0b3I6OmZyYW1lVmlld1Jvb3RMYXllckRpZENoYW5nZShGcmFtZVZpZXcq
IGZyYW1lVmlldwogICAgIAogICAgIC8vIEZJWE1FOiBJbiBzb21lIG5hdmlnYXRpb24gc2NlbmFy
aW9zLCB0aGUgRnJhbWVWaWV3IGhhcyBubyBSZW5kZXJWaWV3IG9yIHRoYXQgUmVuZGVyVmlldyBo
YXMgbm90IGJlZW4gY29tcG9zaXRlZC4KICAgICAvLyBUaGlzIG5lZWRzIGNsZWFuaW5nIHVwOiBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMyNzI0Ci0gICAgaWYgKCFm
cmFtZVZpZXctPnNjcm9sbExheWVySUQoKSkKKyAgICBpZiAoIWZyYW1lVmlldy5zY3JvbGxMYXll
cklEKCkpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICAvLyBJZiB0aGUgcm9vdCBsYXllciBk
b2VzIG5vdCBoYXZlIGEgU2Nyb2xsaW5nU3RhdGVOb2RlLCB0aGVuIHdlIHNob3VsZCBjcmVhdGUg
b25lLgpAQCAtMTU3LDcgKzE1Nyw3IEBAIHZvaWQgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6
ZnJhbWVWaWV3Um9vdExheWVyRGlkQ2hhbmdlKEZyYW1lVmlldyogZnJhbWVWaWV3CiAKICAgICBT
Y3JvbGxpbmdDb29yZGluYXRvcjo6ZnJhbWVWaWV3Um9vdExheWVyRGlkQ2hhbmdlKGZyYW1lVmll
dyk7CiAKLSAgICBTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZSogbm9kZSA9IGRvd25j
YXN0PFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlPihtX3Njcm9sbGluZ1N0YXRlVHJl
ZS0+c3RhdGVOb2RlRm9ySUQoZnJhbWVWaWV3LT5zY3JvbGxMYXllcklEKCkpKTsKKyAgICBTY3Jv
bGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZSogbm9kZSA9IGRvd25jYXN0PFNjcm9sbGluZ1N0
YXRlRnJhbWVTY3JvbGxpbmdOb2RlPihtX3Njcm9sbGluZ1N0YXRlVHJlZS0+c3RhdGVOb2RlRm9y
SUQoZnJhbWVWaWV3LnNjcm9sbExheWVySUQoKSkpOwogICAgIG5vZGUtPnNldExheWVyKHNjcm9s
bExheWVyRm9yRnJhbWVWaWV3KGZyYW1lVmlldykpOwogICAgIG5vZGUtPnNldFNjcm9sbGVkQ29u
dGVudHNMYXllcihyb290Q29udGVudExheWVyRm9yRnJhbWVWaWV3KGZyYW1lVmlldykpOwogICAg
IG5vZGUtPnNldENvdW50ZXJTY3JvbGxpbmdMYXllcihjb3VudGVyU2Nyb2xsaW5nTGF5ZXJGb3JG
cmFtZVZpZXcoZnJhbWVWaWV3KSk7CkBAIC0xNjUsMTAgKzE2NSwxMCBAQCB2b2lkIEFzeW5jU2Ny
b2xsaW5nQ29vcmRpbmF0b3I6OmZyYW1lVmlld1Jvb3RMYXllckRpZENoYW5nZShGcmFtZVZpZXcq
IGZyYW1lVmlldwogICAgIG5vZGUtPnNldENvbnRlbnRTaGFkb3dMYXllcihjb250ZW50U2hhZG93
TGF5ZXJGb3JGcmFtZVZpZXcoZnJhbWVWaWV3KSk7CiAgICAgbm9kZS0+c2V0SGVhZGVyTGF5ZXIo
aGVhZGVyTGF5ZXJGb3JGcmFtZVZpZXcoZnJhbWVWaWV3KSk7CiAgICAgbm9kZS0+c2V0Rm9vdGVy
TGF5ZXIoZm9vdGVyTGF5ZXJGb3JGcmFtZVZpZXcoZnJhbWVWaWV3KSk7Ci0gICAgbm9kZS0+c2V0
U2Nyb2xsQmVoYXZpb3JGb3JGaXhlZEVsZW1lbnRzKGZyYW1lVmlldy0+c2Nyb2xsQmVoYXZpb3JG
b3JGaXhlZEVsZW1lbnRzKCkpOworICAgIG5vZGUtPnNldFNjcm9sbEJlaGF2aW9yRm9yRml4ZWRF
bGVtZW50cyhmcmFtZVZpZXcuc2Nyb2xsQmVoYXZpb3JGb3JGaXhlZEVsZW1lbnRzKCkpOwogfQog
Ci1ib29sIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnJlcXVlc3RTY3JvbGxQb3NpdGlvblVw
ZGF0ZShGcmFtZVZpZXcqIGZyYW1lVmlldywgY29uc3QgSW50UG9pbnQmIHNjcm9sbFBvc2l0aW9u
KQorYm9vbCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpyZXF1ZXN0U2Nyb2xsUG9zaXRpb25V
cGRhdGUoRnJhbWVWaWV3JiBmcmFtZVZpZXcsIGNvbnN0IEludFBvaW50JiBzY3JvbGxQb3NpdGlv
bikKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VSVChtX3BhZ2UpOwpA
QCAtMTc2LDE2ICsxNzYsMTYgQEAgYm9vbCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpyZXF1
ZXN0U2Nyb2xsUG9zaXRpb25VcGRhdGUoRnJhbWVWaWV3KiBmcmFtZVZpZXcKICAgICBpZiAoIWNv
b3JkaW5hdGVzU2Nyb2xsaW5nRm9yRnJhbWVWaWV3KGZyYW1lVmlldykpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIGJvb2wgaXNQcm9ncmFtbWF0aWNTY3JvbGwgPSBmcmFtZVZpZXctPmlu
UHJvZ3JhbW1hdGljU2Nyb2xsKCk7Ci0gICAgaWYgKGlzUHJvZ3JhbW1hdGljU2Nyb2xsIHx8IGZy
YW1lVmlldy0+ZnJhbWUoKS5kb2N1bWVudCgpLT5pblBhZ2VDYWNoZSgpKQotICAgICAgICB1cGRh
dGVTY3JvbGxQb3NpdGlvbkFmdGVyQXN5bmNTY3JvbGwoZnJhbWVWaWV3LT5zY3JvbGxMYXllcklE
KCksIHNjcm9sbFBvc2l0aW9uLCBpc1Byb2dyYW1tYXRpY1Njcm9sbCwgU2V0U2Nyb2xsaW5nTGF5
ZXJQb3NpdGlvbik7CisgICAgYm9vbCBpc1Byb2dyYW1tYXRpY1Njcm9sbCA9IGZyYW1lVmlldy5p
blByb2dyYW1tYXRpY1Njcm9sbCgpOworICAgIGlmIChpc1Byb2dyYW1tYXRpY1Njcm9sbCB8fCBm
cmFtZVZpZXcuZnJhbWUoKS5kb2N1bWVudCgpLT5pblBhZ2VDYWNoZSgpKQorICAgICAgICB1cGRh
dGVTY3JvbGxQb3NpdGlvbkFmdGVyQXN5bmNTY3JvbGwoZnJhbWVWaWV3LnNjcm9sbExheWVySUQo
KSwgc2Nyb2xsUG9zaXRpb24sIGlzUHJvZ3JhbW1hdGljU2Nyb2xsLCBTZXRTY3JvbGxpbmdMYXll
clBvc2l0aW9uKTsKIAogICAgIC8vIElmIHRoaXMgZnJhbWUgdmlldydzIGRvY3VtZW50IGlzIGJl
aW5nIHB1dCBpbnRvIHRoZSBwYWdlIGNhY2hlLCB3ZSBkb24ndCB3YW50IHRvIHVwZGF0ZSBvdXIK
ICAgICAvLyBtYWluIGZyYW1lIHNjcm9sbCBwb3NpdGlvbi4gSnVzdCBsZXQgdGhlIEZyYW1lVmll
dyB0aGluayB0aGF0IHdlIGRpZC4KLSAgICBpZiAoZnJhbWVWaWV3LT5mcmFtZSgpLmRvY3VtZW50
KCktPmluUGFnZUNhY2hlKCkpCisgICAgaWYgKGZyYW1lVmlldy5mcmFtZSgpLmRvY3VtZW50KCkt
PmluUGFnZUNhY2hlKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgU2Nyb2xsaW5nU3Rh
dGVTY3JvbGxpbmdOb2RlKiBzdGF0ZU5vZGUgPSBkb3duY2FzdDxTY3JvbGxpbmdTdGF0ZVNjcm9s
bGluZ05vZGU+KG1fc2Nyb2xsaW5nU3RhdGVUcmVlLT5zdGF0ZU5vZGVGb3JJRChmcmFtZVZpZXct
PnNjcm9sbExheWVySUQoKSkpOworICAgIFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZSogc3Rh
dGVOb2RlID0gZG93bmNhc3Q8U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlPihtX3Njcm9sbGlu
Z1N0YXRlVHJlZS0+c3RhdGVOb2RlRm9ySUQoZnJhbWVWaWV3LnNjcm9sbExheWVySUQoKSkpOwog
ICAgIGlmICghc3RhdGVOb2RlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTI2MiwxOSAr
MjYyLDIxIEBAIHZvaWQgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6dXBkYXRlU2Nyb2xsUG9z
aXRpb25BZnRlckFzeW5jU2Nyb2xsKFNjcm9sbGluZ05vCiAgICAgaWYgKCFtX3BhZ2UpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0gZnJhbWVWaWV3Rm9yU2Ny
b2xsaW5nTm9kZShzY3JvbGxpbmdOb2RlSUQpOwotICAgIGlmICghZnJhbWVWaWV3KQorICAgIEZy
YW1lVmlldyogZnJhbWVWaWV3UHRyID0gZnJhbWVWaWV3Rm9yU2Nyb2xsaW5nTm9kZShzY3JvbGxp
bmdOb2RlSUQpOworICAgIGlmICghZnJhbWVWaWV3UHRyKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBpZiAoc2Nyb2xsaW5nTm9kZUlEID09IGZyYW1lVmlldy0+c2Nyb2xsTGF5ZXJJRCgpKSB7Ci0g
ICAgICAgIGJvb2wgb2xkUHJvZ3JhbW1hdGljU2Nyb2xsID0gZnJhbWVWaWV3LT5pblByb2dyYW1t
YXRpY1Njcm9sbCgpOwotICAgICAgICBmcmFtZVZpZXctPnNldEluUHJvZ3JhbW1hdGljU2Nyb2xs
KHByb2dyYW1tYXRpY1Njcm9sbCk7CisgICAgRnJhbWVWaWV3JiBmcmFtZVZpZXcgPSAqZnJhbWVW
aWV3UHRyOworCisgICAgaWYgKHNjcm9sbGluZ05vZGVJRCA9PSBmcmFtZVZpZXcuc2Nyb2xsTGF5
ZXJJRCgpKSB7CisgICAgICAgIGJvb2wgb2xkUHJvZ3JhbW1hdGljU2Nyb2xsID0gZnJhbWVWaWV3
LmluUHJvZ3JhbW1hdGljU2Nyb2xsKCk7CisgICAgICAgIGZyYW1lVmlldy5zZXRJblByb2dyYW1t
YXRpY1Njcm9sbChwcm9ncmFtbWF0aWNTY3JvbGwpOwogCi0gICAgICAgIGZyYW1lVmlldy0+c2V0
Q29uc3RyYWluc1Njcm9sbGluZ1RvQ29udGVudEVkZ2UoZmFsc2UpOwotICAgICAgICBmcmFtZVZp
ZXctPm5vdGlmeVNjcm9sbFBvc2l0aW9uQ2hhbmdlZChyb3VuZGVkSW50UG9pbnQoc2Nyb2xsUG9z
aXRpb24pKTsKLSAgICAgICAgZnJhbWVWaWV3LT5zZXRDb25zdHJhaW5zU2Nyb2xsaW5nVG9Db250
ZW50RWRnZSh0cnVlKTsKKyAgICAgICAgZnJhbWVWaWV3LnNldENvbnN0cmFpbnNTY3JvbGxpbmdU
b0NvbnRlbnRFZGdlKGZhbHNlKTsKKyAgICAgICAgZnJhbWVWaWV3Lm5vdGlmeVNjcm9sbFBvc2l0
aW9uQ2hhbmdlZChyb3VuZGVkSW50UG9pbnQoc2Nyb2xsUG9zaXRpb24pKTsKKyAgICAgICAgZnJh
bWVWaWV3LnNldENvbnN0cmFpbnNTY3JvbGxpbmdUb0NvbnRlbnRFZGdlKHRydWUpOwogCi0gICAg
ICAgIGZyYW1lVmlldy0+c2V0SW5Qcm9ncmFtbWF0aWNTY3JvbGwob2xkUHJvZ3JhbW1hdGljU2Ny
b2xsKTsKKyAgICAgICAgZnJhbWVWaWV3LnNldEluUHJvZ3JhbW1hdGljU2Nyb2xsKG9sZFByb2dy
YW1tYXRpY1Njcm9sbCk7CiAKICAgICAgICAgaWYgKEdyYXBoaWNzTGF5ZXIqIHNjcm9sbExheWVy
ID0gc2Nyb2xsTGF5ZXJGb3JGcmFtZVZpZXcoZnJhbWVWaWV3KSkgewogICAgICAgICAgICAgR3Jh
cGhpY3NMYXllciogY291bnRlclNjcm9sbGluZ0xheWVyID0gY291bnRlclNjcm9sbGluZ0xheWVy
Rm9yRnJhbWVWaWV3KGZyYW1lVmlldyk7CkBAIC0yODMsMTggKzI4NSwxOCBAQCB2b2lkIEFzeW5j
U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnVwZGF0ZVNjcm9sbFBvc2l0aW9uQWZ0ZXJBc3luY1Njcm9s
bChTY3JvbGxpbmdObwogICAgICAgICAgICAgR3JhcGhpY3NMYXllciogc2Nyb2xsZWRDb250ZW50
c0xheWVyID0gcm9vdENvbnRlbnRMYXllckZvckZyYW1lVmlldyhmcmFtZVZpZXcpOwogICAgICAg
ICAgICAgR3JhcGhpY3NMYXllciogaGVhZGVyTGF5ZXIgPSBoZWFkZXJMYXllckZvckZyYW1lVmll
dyhmcmFtZVZpZXcpOwogICAgICAgICAgICAgR3JhcGhpY3NMYXllciogZm9vdGVyTGF5ZXIgPSBm
b290ZXJMYXllckZvckZyYW1lVmlldyhmcmFtZVZpZXcpOwotICAgICAgICAgICAgTGF5b3V0U2l6
ZSBzY3JvbGxPZmZzZXRGb3JGaXhlZCA9IGZyYW1lVmlldy0+c2Nyb2xsT2Zmc2V0Rm9yRml4ZWRQ
b3NpdGlvbigpOworICAgICAgICAgICAgTGF5b3V0U2l6ZSBzY3JvbGxPZmZzZXRGb3JGaXhlZCA9
IGZyYW1lVmlldy5zY3JvbGxPZmZzZXRGb3JGaXhlZFBvc2l0aW9uKCk7CiAKLSAgICAgICAgICAg
IGZsb2F0IHRvcENvbnRlbnRJbnNldCA9IGZyYW1lVmlldy0+dG9wQ29udGVudEluc2V0KCk7Cisg
ICAgICAgICAgICBmbG9hdCB0b3BDb250ZW50SW5zZXQgPSBmcmFtZVZpZXcudG9wQ29udGVudElu
c2V0KCk7CiAgICAgICAgICAgICBGbG9hdFBvaW50IHBvc2l0aW9uRm9ySW5zZXRDbGlwTGF5ZXIg
PSBGbG9hdFBvaW50KDAsIEZyYW1lVmlldzo6eVBvc2l0aW9uRm9ySW5zZXRDbGlwTGF5ZXIoc2Ny
b2xsUG9zaXRpb24sIHRvcENvbnRlbnRJbnNldCkpOwogICAgICAgICAgICAgRmxvYXRQb2ludCBw
b3NpdGlvbkZvckNvbnRlbnRzTGF5ZXIgPSBGbG9hdFBvaW50KHNjcm9sbGVkQ29udGVudHNMYXll
ci0+cG9zaXRpb24oKS54KCksCi0gICAgICAgICAgICAgICAgRnJhbWVWaWV3Ojp5UG9zaXRpb25G
b3JSb290Q29udGVudExheWVyKHNjcm9sbFBvc2l0aW9uLCB0b3BDb250ZW50SW5zZXQsIGZyYW1l
Vmlldy0+aGVhZGVySGVpZ2h0KCkpKTsKKyAgICAgICAgICAgICAgICBGcmFtZVZpZXc6OnlQb3Np
dGlvbkZvclJvb3RDb250ZW50TGF5ZXIoc2Nyb2xsUG9zaXRpb24sIHRvcENvbnRlbnRJbnNldCwg
ZnJhbWVWaWV3LmhlYWRlckhlaWdodCgpKSk7CiAgICAgICAgICAgICBGbG9hdFBvaW50IHBvc2l0
aW9uRm9ySGVhZGVyTGF5ZXIgPSBGbG9hdFBvaW50KHNjcm9sbE9mZnNldEZvckZpeGVkLndpZHRo
KCksIEZyYW1lVmlldzo6eVBvc2l0aW9uRm9ySGVhZGVyTGF5ZXIoc2Nyb2xsUG9zaXRpb24sIHRv
cENvbnRlbnRJbnNldCkpOwogICAgICAgICAgICAgRmxvYXRQb2ludCBwb3NpdGlvbkZvckZvb3Rl
ckxheWVyID0gRmxvYXRQb2ludChzY3JvbGxPZmZzZXRGb3JGaXhlZC53aWR0aCgpLAotICAgICAg
ICAgICAgICAgIEZyYW1lVmlldzo6eVBvc2l0aW9uRm9yRm9vdGVyTGF5ZXIoc2Nyb2xsUG9zaXRp
b24sIHRvcENvbnRlbnRJbnNldCwgZnJhbWVWaWV3LT50b3RhbENvbnRlbnRzU2l6ZSgpLmhlaWdo
dCgpLCBmcmFtZVZpZXctPmZvb3RlckhlaWdodCgpKSk7CisgICAgICAgICAgICAgICAgRnJhbWVW
aWV3Ojp5UG9zaXRpb25Gb3JGb290ZXJMYXllcihzY3JvbGxQb3NpdGlvbiwgdG9wQ29udGVudElu
c2V0LCBmcmFtZVZpZXcudG90YWxDb250ZW50c1NpemUoKS5oZWlnaHQoKSwgZnJhbWVWaWV3LmZv
b3RlckhlaWdodCgpKSk7CiAKICAgICAgICAgICAgIGlmIChwcm9ncmFtbWF0aWNTY3JvbGwgfHwg
c2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbiA9PSBTZXRTY3JvbGxpbmdMYXllclBvc2l0aW9u
KSB7Ci0gICAgICAgICAgICAgICAgc2Nyb2xsTGF5ZXItPnNldFBvc2l0aW9uKC1mcmFtZVZpZXct
PnNjcm9sbFBvc2l0aW9uKCkpOworICAgICAgICAgICAgICAgIHNjcm9sbExheWVyLT5zZXRQb3Np
dGlvbigtZnJhbWVWaWV3LnNjcm9sbFBvc2l0aW9uKCkpOwogICAgICAgICAgICAgICAgIGlmIChj
b3VudGVyU2Nyb2xsaW5nTGF5ZXIpCiAgICAgICAgICAgICAgICAgICAgIGNvdW50ZXJTY3JvbGxp
bmdMYXllci0+c2V0UG9zaXRpb24odG9MYXlvdXRQb2ludChzY3JvbGxPZmZzZXRGb3JGaXhlZCkp
OwogICAgICAgICAgICAgICAgIGlmIChpbnNldENsaXBMYXllcikKQEAgLTMwOCw3ICszMTAsNyBA
QCB2b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnVwZGF0ZVNjcm9sbFBvc2l0aW9uQWZ0
ZXJBc3luY1Njcm9sbChTY3JvbGxpbmdObwogICAgICAgICAgICAgICAgIGlmIChmb290ZXJMYXll
cikKICAgICAgICAgICAgICAgICAgICAgZm9vdGVyTGF5ZXItPnNldFBvc2l0aW9uKHBvc2l0aW9u
Rm9yRm9vdGVyTGF5ZXIpOwogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBz
Y3JvbGxMYXllci0+c3luY1Bvc2l0aW9uKC1mcmFtZVZpZXctPnNjcm9sbFBvc2l0aW9uKCkpOwor
ICAgICAgICAgICAgICAgIHNjcm9sbExheWVyLT5zeW5jUG9zaXRpb24oLWZyYW1lVmlldy5zY3Jv
bGxQb3NpdGlvbigpKTsKICAgICAgICAgICAgICAgICBpZiAoY291bnRlclNjcm9sbGluZ0xheWVy
KQogICAgICAgICAgICAgICAgICAgICBjb3VudGVyU2Nyb2xsaW5nTGF5ZXItPnN5bmNQb3NpdGlv
bih0b0xheW91dFBvaW50KHNjcm9sbE9mZnNldEZvckZpeGVkKSk7CiAgICAgICAgICAgICAgICAg
aWYgKGluc2V0Q2xpcExheWVyKQpAQCAtMzIyLDcgKzMyNCw3IEBAIHZvaWQgQXN5bmNTY3JvbGxp
bmdDb29yZGluYXRvcjo6dXBkYXRlU2Nyb2xsUG9zaXRpb25BZnRlckFzeW5jU2Nyb2xsKFNjcm9s
bGluZ05vCiAgICAgICAgICAgICAgICAgaWYgKGZvb3RlckxheWVyKQogICAgICAgICAgICAgICAg
ICAgICBmb290ZXJMYXllci0+c3luY1Bvc2l0aW9uKHBvc2l0aW9uRm9yRm9vdGVyTGF5ZXIpOwog
Ci0gICAgICAgICAgICAgICAgTGF5b3V0UmVjdCB2aWV3cG9ydFJlY3QgPSBmcmFtZVZpZXctPnZp
ZXdwb3J0Q29uc3RyYWluZWRWaXNpYmxlQ29udGVudFJlY3QoKTsKKyAgICAgICAgICAgICAgICBM
YXlvdXRSZWN0IHZpZXdwb3J0UmVjdCA9IGZyYW1lVmlldy52aWV3cG9ydENvbnN0cmFpbmVkVmlz
aWJsZUNvbnRlbnRSZWN0KCk7CiAgICAgICAgICAgICAgICAgc3luY0NoaWxkUG9zaXRpb25zKHZp
ZXdwb3J0UmVjdCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTMzMSw3ICszMzMsNyBA
QCB2b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnVwZGF0ZVNjcm9sbFBvc2l0aW9uQWZ0
ZXJBc3luY1Njcm9sbChTY3JvbGxpbmdObwogICAgIH0KIAogICAgIC8vIE92ZXJmbG93LXNjcm9s
bCBhcmVhLgotICAgIGlmIChTY3JvbGxhYmxlQXJlYSogc2Nyb2xsYWJsZUFyZWEgPSBmcmFtZVZp
ZXctPnNjcm9sbGFibGVBcmVhRm9yU2Nyb2xsTGF5ZXJJRChzY3JvbGxpbmdOb2RlSUQpKSB7Cisg
ICAgaWYgKFNjcm9sbGFibGVBcmVhKiBzY3JvbGxhYmxlQXJlYSA9IGZyYW1lVmlldy5zY3JvbGxh
YmxlQXJlYUZvclNjcm9sbExheWVySUQoc2Nyb2xsaW5nTm9kZUlEKSkgewogICAgICAgICBzY3Jv
bGxhYmxlQXJlYS0+c2V0SXNVc2VyU2Nyb2xsKHNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb24g
PT0gU3luY1Njcm9sbGluZ0xheWVyUG9zaXRpb24pOwogICAgICAgICBzY3JvbGxhYmxlQXJlYS0+
c2Nyb2xsVG9PZmZzZXRXaXRob3V0QW5pbWF0aW9uKHNjcm9sbFBvc2l0aW9uKTsKICAgICAgICAg
c2Nyb2xsYWJsZUFyZWEtPnNldElzVXNlclNjcm9sbChmYWxzZSk7CkBAIC0zNDAsMTggKzM0Miwx
OCBAQCB2b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnVwZGF0ZVNjcm9sbFBvc2l0aW9u
QWZ0ZXJBc3luY1Njcm9sbChTY3JvbGxpbmdObwogICAgIH0KIH0KIAotdm9pZCBBc3luY1Njcm9s
bGluZ0Nvb3JkaW5hdG9yOjpzY3JvbGxhYmxlQXJlYVNjcm9sbGJhckxheWVyRGlkQ2hhbmdlKFNj
cm9sbGFibGVBcmVhKiBzY3JvbGxhYmxlQXJlYSwgU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50
YXRpb24pCit2b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNjcm9sbGFibGVBcmVhU2Ny
b2xsYmFyTGF5ZXJEaWRDaGFuZ2UoU2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFibGVBcmVhLCBTY3Jv
bGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOwogICAgIEFTU0VSVChtX3BhZ2UpOwogCi0gICAgaWYgKHNjcm9sbGFibGVBcmVhICE9IHN0
YXRpY19jYXN0PFNjcm9sbGFibGVBcmVhKj4obV9wYWdlLT5tYWluRnJhbWUoKS52aWV3KCkpKQor
ICAgIGlmICgmc2Nyb2xsYWJsZUFyZWEgIT0gc3RhdGljX2Nhc3Q8U2Nyb2xsYWJsZUFyZWEqPiht
X3BhZ2UtPm1haW5GcmFtZSgpLnZpZXcoKSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChv
cmllbnRhdGlvbiA9PSBWZXJ0aWNhbFNjcm9sbGJhcikKLSAgICAgICAgc2Nyb2xsYWJsZUFyZWEt
PnZlcnRpY2FsU2Nyb2xsYmFyTGF5ZXJEaWRDaGFuZ2UoKTsKKyAgICAgICAgc2Nyb2xsYWJsZUFy
ZWEudmVydGljYWxTY3JvbGxiYXJMYXllckRpZENoYW5nZSgpOwogICAgIGVsc2UKLSAgICAgICAg
c2Nyb2xsYWJsZUFyZWEtPmhvcml6b250YWxTY3JvbGxiYXJMYXllckRpZENoYW5nZSgpOworICAg
ICAgICBzY3JvbGxhYmxlQXJlYS5ob3Jpem9udGFsU2Nyb2xsYmFyTGF5ZXJEaWRDaGFuZ2UoKTsK
IH0KIAogU2Nyb2xsaW5nTm9kZUlEIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmF0dGFjaFRv
U3RhdGVUcmVlKFNjcm9sbGluZ05vZGVUeXBlIG5vZGVUeXBlLCBTY3JvbGxpbmdOb2RlSUQgbmV3
Tm9kZUlELCBTY3JvbGxpbmdOb2RlSUQgcGFyZW50SUQpCkBAIC0zODMsMTAgKzM4NSwxMCBAQCB2
b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnN5bmNDaGlsZFBvc2l0aW9ucyhjb25zdCBM
YXlvdXRSZWN0JiB2aWV3cG9ydFJlYwogICAgICAgICBjaGlsZC0+c3luY0xheWVyUG9zaXRpb25G
b3JWaWV3cG9ydFJlY3Qodmlld3BvcnRSZWN0KTsKIH0KIAotdm9pZCBBc3luY1Njcm9sbGluZ0Nv
b3JkaW5hdG9yOjplbnN1cmVSb290U3RhdGVOb2RlRm9yRnJhbWVWaWV3KEZyYW1lVmlldyogZnJh
bWVWaWV3KQordm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjplbnN1cmVSb290U3RhdGVO
b2RlRm9yRnJhbWVWaWV3KEZyYW1lVmlldyYgZnJhbWVWaWV3KQogewotICAgIEFTU0VSVChmcmFt
ZVZpZXctPnNjcm9sbExheWVySUQoKSk7Ci0gICAgYXR0YWNoVG9TdGF0ZVRyZWUoRnJhbWVTY3Jv
bGxpbmdOb2RlLCBmcmFtZVZpZXctPnNjcm9sbExheWVySUQoKSwgMCk7CisgICAgQVNTRVJUKGZy
YW1lVmlldy5zY3JvbGxMYXllcklEKCkpOworICAgIGF0dGFjaFRvU3RhdGVUcmVlKEZyYW1lU2Ny
b2xsaW5nTm9kZSwgZnJhbWVWaWV3LnNjcm9sbExheWVySUQoKSwgMCk7CiB9CiAKIHZvaWQgQXN5
bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6dXBkYXRlRnJhbWVTY3JvbGxpbmdOb2RlKFNjcm9sbGlu
Z05vZGVJRCBub2RlSUQsIEdyYXBoaWNzTGF5ZXIqIGxheWVyLCBHcmFwaGljc0xheWVyKiBzY3Jv
bGxlZENvbnRlbnRzTGF5ZXIsIEdyYXBoaWNzTGF5ZXIqIGNvdW50ZXJTY3JvbGxpbmdMYXllciwg
R3JhcGhpY3NMYXllciogaW5zZXRDbGlwTGF5ZXIsIGNvbnN0IFNjcm9sbGluZ0dlb21ldHJ5KiBz
Y3JvbGxpbmdHZW9tZXRyeSkKQEAgLTQ4MSwxMyArNDgzLDEzIEBAIHZvaWQgQXN5bmNTY3JvbGxp
bmdDb29yZGluYXRvcjo6dXBkYXRlTWFpbkZyYW1lU2Nyb2xsTGF5ZXJQb3NpdGlvbigpCiAgICAg
aWYgKCFmcmFtZVZpZXcpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChHcmFwaGljc0xheWVy
KiBzY3JvbGxMYXllciA9IHNjcm9sbExheWVyRm9yRnJhbWVWaWV3KGZyYW1lVmlldykpCisgICAg
aWYgKEdyYXBoaWNzTGF5ZXIqIHNjcm9sbExheWVyID0gc2Nyb2xsTGF5ZXJGb3JGcmFtZVZpZXco
KmZyYW1lVmlldykpCiAgICAgICAgIHNjcm9sbExheWVyLT5zZXRQb3NpdGlvbigtZnJhbWVWaWV3
LT5zY3JvbGxQb3NpdGlvbigpKTsKIH0KIAotdm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9y
OjpyZWNvbXB1dGVXaGVlbEV2ZW50SGFuZGxlckNvdW50Rm9yRnJhbWVWaWV3KEZyYW1lVmlldyog
ZnJhbWVWaWV3KQordm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpyZWNvbXB1dGVXaGVl
bEV2ZW50SGFuZGxlckNvdW50Rm9yRnJhbWVWaWV3KEZyYW1lVmlldyYgZnJhbWVWaWV3KQogewot
ICAgIFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlKiBub2RlID0gZG93bmNhc3Q8U2Ny
b2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU+KG1fc2Nyb2xsaW5nU3RhdGVUcmVlLT5zdGF0
ZU5vZGVGb3JJRChmcmFtZVZpZXctPnNjcm9sbExheWVySUQoKSkpOworICAgIFNjcm9sbGluZ1N0
YXRlRnJhbWVTY3JvbGxpbmdOb2RlKiBub2RlID0gZG93bmNhc3Q8U2Nyb2xsaW5nU3RhdGVGcmFt
ZVNjcm9sbGluZ05vZGU+KG1fc2Nyb2xsaW5nU3RhdGVUcmVlLT5zdGF0ZU5vZGVGb3JJRChmcmFt
ZVZpZXcuc2Nyb2xsTGF5ZXJJRCgpKSk7CiAgICAgaWYgKCFub2RlKQogICAgICAgICByZXR1cm47
CiAgICAgbm9kZS0+c2V0V2hlZWxFdmVudEhhbmRsZXJDb3VudChjb21wdXRlQ3VycmVudFdoZWVs
RXZlbnRIYW5kbGVyQ291bnQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmgKaW5kZXggZTNhMjkzNDQ3MzFh
NDEyMmZlODExNmYyMWZlZDYzZDY2YzcwY2EwNC4uZjNlYmFhNDMxOWFkNmI2OGNkNDNhYTVkZDk4
MTU3YTgxOWNjZWMzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaApAQCAtNzMsMTMgKzczLDEzIEBAIHBy
aXZhdGU6CiAgICAgdmlydHVhbCBib29sIGlzQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcigpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0
c0ZpeGVkUG9zaXRpb25MYXllcnMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0g
ICAgdmlydHVhbCBib29sIGhhc1Zpc2libGVTbG93UmVwYWludFZpZXdwb3J0Q29uc3RyYWluZWRP
YmplY3RzKEZyYW1lVmlldyopIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
dmlydHVhbCBib29sIGhhc1Zpc2libGVTbG93UmVwYWludFZpZXdwb3J0Q29uc3RyYWluZWRPYmpl
Y3RzKGNvbnN0IEZyYW1lVmlldyYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAK
LSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZnJhbWVWaWV3TGF5b3V0VXBkYXRlZChG
cmFtZVZpZXcqKSBvdmVycmlkZTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZnJh
bWVWaWV3Um9vdExheWVyRGlkQ2hhbmdlKEZyYW1lVmlldyopIG92ZXJyaWRlOwotICAgIFdFQkNP
UkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBmcmFtZVZpZXdOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbkNo
YW5nZWQoRnJhbWVWaWV3Kikgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2
b2lkIGZyYW1lVmlld0xheW91dFVwZGF0ZWQoRnJhbWVWaWV3Jikgb3ZlcnJpZGU7CisgICAgV0VC
Q09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGZyYW1lVmlld1Jvb3RMYXllckRpZENoYW5nZShGcmFt
ZVZpZXcmKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZnJhbWVW
aWV3Tm9uRmFzdFNjcm9sbGFibGVSZWdpb25DaGFuZ2VkKEZyYW1lVmlldyYpIG92ZXJyaWRlOwog
Ci0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBib29sIHJlcXVlc3RTY3JvbGxQb3NpdGlvblVw
ZGF0ZShGcmFtZVZpZXcqLCBjb25zdCBJbnRQb2ludCYpIG92ZXJyaWRlOworICAgIFdFQkNPUkVf
RVhQT1JUIHZpcnR1YWwgYm9vbCByZXF1ZXN0U2Nyb2xsUG9zaXRpb25VcGRhdGUoRnJhbWVWaWV3
JiwgY29uc3QgSW50UG9pbnQmKSBvdmVycmlkZTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1
YWwgU2Nyb2xsaW5nTm9kZUlEIGF0dGFjaFRvU3RhdGVUcmVlKFNjcm9sbGluZ05vZGVUeXBlLCBT
Y3JvbGxpbmdOb2RlSUQgbmV3Tm9kZUlELCBTY3JvbGxpbmdOb2RlSUQgcGFyZW50SUQpIG92ZXJy
aWRlOwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBkZXRhY2hGcm9tU3RhdGVUcmVl
KFNjcm9sbGluZ05vZGVJRCkgb3ZlcnJpZGU7CkBAIC05NCwxNCArOTQsMTQgQEAgcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0U2Nyb2xsUGlubmluZ0JlaGF2aW9yKFNjcm9sbFBpbm5pbmdC
ZWhhdmlvcikgb3ZlcnJpZGU7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgc3lu
Y0NoaWxkUG9zaXRpb25zKGNvbnN0IExheW91dFJlY3QmIHZpZXdwb3J0UmVjdCkgb3ZlcnJpZGU7
Ci0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHNjcm9sbGFibGVBcmVhU2Nyb2xsYmFy
TGF5ZXJEaWRDaGFuZ2UoU2Nyb2xsYWJsZUFyZWEqLCBTY3JvbGxiYXJPcmllbnRhdGlvbikgb3Zl
cnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHNjcm9sbGFibGVBcmVhU2Ny
b2xsYmFyTGF5ZXJEaWRDaGFuZ2UoU2Nyb2xsYWJsZUFyZWEmLCBTY3JvbGxiYXJPcmllbnRhdGlv
bikgb3ZlcnJpZGU7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgcmVjb21wdXRl
V2hlZWxFdmVudEhhbmRsZXJDb3VudEZvckZyYW1lVmlldyhGcmFtZVZpZXcqKSBvdmVycmlkZTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgcmVjb21wdXRlV2hlZWxFdmVudEhhbmRs
ZXJDb3VudEZvckZyYW1lVmlldyhGcmFtZVZpZXcmKSBvdmVycmlkZTsKICAgICBXRUJDT1JFX0VY
UE9SVCB2aXJ0dWFsIHZvaWQgc2V0U3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zKFN5bmNocm9u
b3VzU2Nyb2xsaW5nUmVhc29ucykgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1
bGVUcmVlU3RhdGVDb21taXQoKSA9IDA7CiAKLSAgICB2b2lkIGVuc3VyZVJvb3RTdGF0ZU5vZGVG
b3JGcmFtZVZpZXcoRnJhbWVWaWV3Kik7CisgICAgdm9pZCBlbnN1cmVSb290U3RhdGVOb2RlRm9y
RnJhbWVWaWV3KEZyYW1lVmlldyYpOwogICAgIHZvaWQgdXBkYXRlTWFpbkZyYW1lU2Nyb2xsTGF5
ZXJQb3NpdGlvbigpOwogCiAgICAgdm9pZCB1cGRhdGVTY3JvbGxQb3NpdGlvbkFmdGVyQXN5bmNT
Y3JvbGxUaW1lckZpcmVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHAKaW5kZXggYmQzY2VhMzM3OTExY2I4ZWQ4M2Mx
NTkyMTU0ZTcxMmUzYzE4ZWI3ZS4uYjA4N2FkN2NkZGNlZmRmZmE2ODYwMWVlODVjYWVjYzgwNzNk
NmE0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
Q29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bGluZ0Nvb3JkaW5hdG9yLmNwcApAQCAtNzksMTUgKzc5LDE1IEBAIFNjcm9sbGluZ0Nvb3JkaW5h
dG9yOjp+U2Nyb2xsaW5nQ29vcmRpbmF0b3IoKQogdm9pZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6
cGFnZURlc3Ryb3llZCgpCiB7CiAgICAgQVNTRVJUKG1fcGFnZSk7Ci0gICAgbV9wYWdlID0gMDsK
KyAgICBtX3BhZ2UgPSBudWxscHRyOwogfQogCi1ib29sIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpj
b29yZGluYXRlc1Njcm9sbGluZ0ZvckZyYW1lVmlldyhGcmFtZVZpZXcqIGZyYW1lVmlldykgY29u
c3QKK2Jvb2wgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmNvb3JkaW5hdGVzU2Nyb2xsaW5nRm9yRnJh
bWVWaWV3KGNvbnN0IEZyYW1lVmlldyYgZnJhbWVWaWV3KSBjb25zdAogewogICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKG1fcGFnZSk7CiAKLSAgICBpZiAoIWZyYW1lVmll
dy0+ZnJhbWUoKS5pc01haW5GcmFtZSgpICYmICFtX3BhZ2UtPnNldHRpbmdzKCkuc2Nyb2xsaW5n
VHJlZUluY2x1ZGVzRnJhbWVzKCkpCisgICAgaWYgKCFmcmFtZVZpZXcuZnJhbWUoKS5pc01haW5G
cmFtZSgpICYmICFtX3BhZ2UtPnNldHRpbmdzKCkuc2Nyb2xsaW5nVHJlZUluY2x1ZGVzRnJhbWVz
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIFJlbmRlclZpZXcqIHJlbmRlclZpZXcg
PSBtX3BhZ2UtPm1haW5GcmFtZSgpLmNvbnRlbnRSZW5kZXJlcigpOwpAQCAtOTYsNyArOTYsNyBA
QCBib29sIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpjb29yZGluYXRlc1Njcm9sbGluZ0ZvckZyYW1l
VmlldyhGcmFtZVZpZXcqIGZyYW1lVmlldwogICAgIHJldHVybiByZW5kZXJWaWV3LT51c2VzQ29t
cG9zaXRpbmcoKTsKIH0KIAotUmVnaW9uIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpjb21wdXRlTm9u
RmFzdFNjcm9sbGFibGVSZWdpb24oY29uc3QgRnJhbWUqIGZyYW1lLCBjb25zdCBJbnRQb2ludCYg
ZnJhbWVMb2NhdGlvbikgY29uc3QKK1JlZ2lvbiBTY3JvbGxpbmdDb29yZGluYXRvcjo6Y29tcHV0
ZU5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uKGNvbnN0IEZyYW1lJiBmcmFtZSwgY29uc3QgSW50UG9p
bnQmIGZyYW1lTG9jYXRpb24pIGNvbnN0CiB7CiAjaWYgRU5BQkxFKElPU19UT1VDSF9FVkVOVFMp
CiAgICAgLy8gT24gaU9TLCB3ZSB1c2Ugbm9uRmFzdFNjcm9sbGFibGVSZWdpb24gdG8gcmVwcmVz
ZW50IHRoZSByZWdpb24gY292ZXJlZCBieSBlbGVtZW50cyB3aXRoIHRvdWNoIGV2ZW50IGhhbmRs
ZXJzLgpAQCAtMTE3LDcgKzExNyw3IEBAIFJlZ2lvbiBTY3JvbGxpbmdDb29yZGluYXRvcjo6Y29t
cHV0ZU5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uKGNvbnN0IEZyYW1lKiBmcmFtZSwKICAgICByZXR1
cm4gdG91Y2hSZWdpb247CiAjZWxzZQogICAgIFJlZ2lvbiBub25GYXN0U2Nyb2xsYWJsZVJlZ2lv
bjsKLSAgICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IGZyYW1lLT52aWV3KCk7CisgICAgRnJhbWVW
aWV3KiBmcmFtZVZpZXcgPSBmcmFtZS52aWV3KCk7CiAgICAgaWYgKCFmcmFtZVZpZXcpCiAgICAg
ICAgIHJldHVybiBub25GYXN0U2Nyb2xsYWJsZVJlZ2lvbjsKIApAQCAtMTQ1LDggKzE0NSw4IEBA
IFJlZ2lvbiBTY3JvbGxpbmdDb29yZGluYXRvcjo6Y29tcHV0ZU5vbkZhc3RTY3JvbGxhYmxlUmVn
aW9uKGNvbnN0IEZyYW1lKiBmcmFtZSwKICAgICAgICAgICAgIG5vbkZhc3RTY3JvbGxhYmxlUmVn
aW9uLnVuaXRlKHBsdWdpblZpZXdCYXNlLmZyYW1lUmVjdCgpKTsKICAgICB9CiAKLSAgICBmb3Ig
KEZyYW1lKiBzdWJmcmFtZSA9IGZyYW1lLT50cmVlKCkuZmlyc3RDaGlsZCgpOyBzdWJmcmFtZTsg
c3ViZnJhbWUgPSBzdWJmcmFtZS0+dHJlZSgpLm5leHRTaWJsaW5nKCkpCi0gICAgICAgIG5vbkZh
c3RTY3JvbGxhYmxlUmVnaW9uLnVuaXRlKGNvbXB1dGVOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbihz
dWJmcmFtZSwgb2Zmc2V0KSk7CisgICAgZm9yIChGcmFtZSogc3ViZnJhbWUgPSBmcmFtZS50cmVl
KCkuZmlyc3RDaGlsZCgpOyBzdWJmcmFtZTsgc3ViZnJhbWUgPSBzdWJmcmFtZS0+dHJlZSgpLm5l
eHRTaWJsaW5nKCkpCisgICAgICAgIG5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uLnVuaXRlKGNvbXB1
dGVOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbigqc3ViZnJhbWUsIG9mZnNldCkpOwogCiAgICAgcmV0
dXJuIG5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uOwogI2VuZGlmCkBAIC0xNjQsNyArMTY0LDcgQEAg
dW5zaWduZWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmNvbXB1dGVDdXJyZW50V2hlZWxFdmVudEhh
bmRsZXJDb3VudCgpCiAgICAgcmV0dXJuIHdoZWVsRXZlbnRIYW5kbGVyQ291bnQ7CiB9CiAKLXZv
aWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZyYW1lVmlld1doZWVsRXZlbnRIYW5kbGVyQ291bnRD
aGFuZ2VkKEZyYW1lVmlldyogZnJhbWVWaWV3KQordm9pZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6
ZnJhbWVWaWV3V2hlZWxFdmVudEhhbmRsZXJDb3VudENoYW5nZWQoRnJhbWVWaWV3JiBmcmFtZVZp
ZXcpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlQobV9wYWdlKTsK
QEAgLTE3Miw3ICsxNzIsNyBAQCB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpmcmFtZVZpZXdX
aGVlbEV2ZW50SGFuZGxlckNvdW50Q2hhbmdlZChGcmFtZVZpZXcqIGZyYQogICAgIHJlY29tcHV0
ZVdoZWVsRXZlbnRIYW5kbGVyQ291bnRGb3JGcmFtZVZpZXcoZnJhbWVWaWV3KTsKIH0KIAotdm9p
ZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6ZnJhbWVWaWV3SGFzU2xvd1JlcGFpbnRPYmplY3RzRGlk
Q2hhbmdlKEZyYW1lVmlldyogZnJhbWVWaWV3KQordm9pZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6
ZnJhbWVWaWV3SGFzU2xvd1JlcGFpbnRPYmplY3RzRGlkQ2hhbmdlKEZyYW1lVmlldyYgZnJhbWVW
aWV3KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKG1fcGFnZSk7
CkBAIC0xODMsNyArMTgzLDcgQEAgdm9pZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6ZnJhbWVWaWV3
SGFzU2xvd1JlcGFpbnRPYmplY3RzRGlkQ2hhbmdlKEZyYW1lVmlldyogZnIKICAgICB1cGRhdGVT
eW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMoZnJhbWVWaWV3KTsKIH0KIAotdm9pZCBTY3JvbGxp
bmdDb29yZGluYXRvcjo6ZnJhbWVWaWV3Rml4ZWRPYmplY3RzRGlkQ2hhbmdlKEZyYW1lVmlldyog
ZnJhbWVWaWV3KQordm9pZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6ZnJhbWVWaWV3Rml4ZWRPYmpl
Y3RzRGlkQ2hhbmdlKEZyYW1lVmlldyYgZnJhbWVWaWV3KQogewogICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CiAgICAgQVNTRVJUKG1fcGFnZSk7CkBAIC0xOTQsMjIgKzE5NCwyMiBAQCB2b2lk
IFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpmcmFtZVZpZXdGaXhlZE9iamVjdHNEaWRDaGFuZ2UoRnJh
bWVWaWV3KiBmcmFtZVZpZXcpCiAgICAgdXBkYXRlU3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25z
KGZyYW1lVmlldyk7CiB9CiAKLUdyYXBoaWNzTGF5ZXIqIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpz
Y3JvbGxMYXllckZvclNjcm9sbGFibGVBcmVhKFNjcm9sbGFibGVBcmVhKiBzY3JvbGxhYmxlQXJl
YSkKK0dyYXBoaWNzTGF5ZXIqIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzY3JvbGxMYXllckZvclNj
cm9sbGFibGVBcmVhKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSkKIHsKLSAgICByZXR1
cm4gc2Nyb2xsYWJsZUFyZWEtPmxheWVyRm9yU2Nyb2xsaW5nKCk7CisgICAgcmV0dXJuIHNjcm9s
bGFibGVBcmVhLmxheWVyRm9yU2Nyb2xsaW5nKCk7CiB9CiAKLUdyYXBoaWNzTGF5ZXIqIFNjcm9s
bGluZ0Nvb3JkaW5hdG9yOjpzY3JvbGxMYXllckZvckZyYW1lVmlldyhGcmFtZVZpZXcqIGZyYW1l
VmlldykKK0dyYXBoaWNzTGF5ZXIqIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzY3JvbGxMYXllckZv
ckZyYW1lVmlldyhGcmFtZVZpZXcmIGZyYW1lVmlldykKIHsKLSAgICBpZiAoUmVuZGVyVmlldyog
cmVuZGVyVmlldyA9IGZyYW1lVmlldy0+ZnJhbWUoKS5jb250ZW50UmVuZGVyZXIoKSkKKyAgICBp
ZiAoUmVuZGVyVmlldyogcmVuZGVyVmlldyA9IGZyYW1lVmlldy5mcmFtZSgpLmNvbnRlbnRSZW5k
ZXJlcigpKQogICAgICAgICByZXR1cm4gcmVuZGVyVmlldy0+Y29tcG9zaXRvcigpLnNjcm9sbExh
eWVyKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUdyYXBoaWNzTGF5ZXIqIFNjcm9sbGlu
Z0Nvb3JkaW5hdG9yOjpoZWFkZXJMYXllckZvckZyYW1lVmlldyhGcmFtZVZpZXcqIGZyYW1lVmll
dykKK0dyYXBoaWNzTGF5ZXIqIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpoZWFkZXJMYXllckZvckZy
YW1lVmlldyhGcmFtZVZpZXcmIGZyYW1lVmlldykKIHsKICNpZiBFTkFCTEUoUlVCQkVSX0JBTkRJ
TkcpCi0gICAgaWYgKFJlbmRlclZpZXcqIHJlbmRlclZpZXcgPSBmcmFtZVZpZXctPmZyYW1lKCku
Y29udGVudFJlbmRlcmVyKCkpCisgICAgaWYgKFJlbmRlclZpZXcqIHJlbmRlclZpZXcgPSBmcmFt
ZVZpZXcuZnJhbWUoKS5jb250ZW50UmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJuIHJlbmRlclZp
ZXctPmNvbXBvc2l0b3IoKS5oZWFkZXJMYXllcigpOwogICAgIHJldHVybiBudWxscHRyOwogI2Vs
c2UKQEAgLTIxOCwxMCArMjE4LDEwIEBAIEdyYXBoaWNzTGF5ZXIqIFNjcm9sbGluZ0Nvb3JkaW5h
dG9yOjpoZWFkZXJMYXllckZvckZyYW1lVmlldyhGcmFtZVZpZXcqIGZyYW1lVmllCiAjZW5kaWYK
IH0KIAotR3JhcGhpY3NMYXllciogU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZvb3RlckxheWVyRm9y
RnJhbWVWaWV3KEZyYW1lVmlldyogZnJhbWVWaWV3KQorR3JhcGhpY3NMYXllciogU2Nyb2xsaW5n
Q29vcmRpbmF0b3I6OmZvb3RlckxheWVyRm9yRnJhbWVWaWV3KEZyYW1lVmlldyYgZnJhbWVWaWV3
KQogewogI2lmIEVOQUJMRShSVUJCRVJfQkFORElORykKLSAgICBpZiAoUmVuZGVyVmlldyogcmVu
ZGVyVmlldyA9IGZyYW1lVmlldy0+ZnJhbWUoKS5jb250ZW50UmVuZGVyZXIoKSkKKyAgICBpZiAo
UmVuZGVyVmlldyogcmVuZGVyVmlldyA9IGZyYW1lVmlldy5mcmFtZSgpLmNvbnRlbnRSZW5kZXJl
cigpKQogICAgICAgICByZXR1cm4gcmVuZGVyVmlldy0+Y29tcG9zaXRvcigpLmZvb3RlckxheWVy
KCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiAjZWxzZQpAQCAtMjMwLDI0ICsyMzAsMjQgQEAgR3Jh
cGhpY3NMYXllciogU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZvb3RlckxheWVyRm9yRnJhbWVWaWV3
KEZyYW1lVmlldyogZnJhbWVWaWUKICNlbmRpZgogfQogCi1HcmFwaGljc0xheWVyKiBTY3JvbGxp
bmdDb29yZGluYXRvcjo6Y291bnRlclNjcm9sbGluZ0xheWVyRm9yRnJhbWVWaWV3KEZyYW1lVmll
dyogZnJhbWVWaWV3KQorR3JhcGhpY3NMYXllciogU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmNvdW50
ZXJTY3JvbGxpbmdMYXllckZvckZyYW1lVmlldyhGcmFtZVZpZXcmIGZyYW1lVmlldykKIHsKLSAg
ICBpZiAoUmVuZGVyVmlldyogcmVuZGVyVmlldyA9IGZyYW1lVmlldy0+ZnJhbWUoKS5jb250ZW50
UmVuZGVyZXIoKSkKKyAgICBpZiAoUmVuZGVyVmlldyogcmVuZGVyVmlldyA9IGZyYW1lVmlldy5m
cmFtZSgpLmNvbnRlbnRSZW5kZXJlcigpKQogICAgICAgICByZXR1cm4gcmVuZGVyVmlldy0+Y29t
cG9zaXRvcigpLmZpeGVkUm9vdEJhY2tncm91bmRMYXllcigpOwogICAgIHJldHVybiBudWxscHRy
OwogfQogCi1HcmFwaGljc0xheWVyKiBTY3JvbGxpbmdDb29yZGluYXRvcjo6aW5zZXRDbGlwTGF5
ZXJGb3JGcmFtZVZpZXcoRnJhbWVWaWV3KiBmcmFtZVZpZXcpCitHcmFwaGljc0xheWVyKiBTY3Jv
bGxpbmdDb29yZGluYXRvcjo6aW5zZXRDbGlwTGF5ZXJGb3JGcmFtZVZpZXcoRnJhbWVWaWV3JiBm
cmFtZVZpZXcpCiB7Ci0gICAgaWYgKFJlbmRlclZpZXcqIHJlbmRlclZpZXcgPSBmcmFtZVZpZXct
PmZyYW1lKCkuY29udGVudFJlbmRlcmVyKCkpCisgICAgaWYgKFJlbmRlclZpZXcqIHJlbmRlclZp
ZXcgPSBmcmFtZVZpZXcuZnJhbWUoKS5jb250ZW50UmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJu
IHJlbmRlclZpZXctPmNvbXBvc2l0b3IoKS5jbGlwTGF5ZXIoKTsKICAgICByZXR1cm4gbnVsbHB0
cjsKIH0KIAotR3JhcGhpY3NMYXllciogU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmNvbnRlbnRTaGFk
b3dMYXllckZvckZyYW1lVmlldyhGcmFtZVZpZXcqIGZyYW1lVmlldykKK0dyYXBoaWNzTGF5ZXIq
IFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpjb250ZW50U2hhZG93TGF5ZXJGb3JGcmFtZVZpZXcoRnJh
bWVWaWV3JiBmcmFtZVZpZXcpCiB7CiAjaWYgRU5BQkxFKFJVQkJFUl9CQU5ESU5HKQotICAgIGlm
IChSZW5kZXJWaWV3KiByZW5kZXJWaWV3ID0gZnJhbWVWaWV3LT5mcmFtZSgpLmNvbnRlbnRSZW5k
ZXJlcigpKQorICAgIGlmIChSZW5kZXJWaWV3KiByZW5kZXJWaWV3ID0gZnJhbWVWaWV3LmZyYW1l
KCkuY29udGVudFJlbmRlcmVyKCkpCiAgICAgICAgIHJldHVybiByZW5kZXJWaWV3LT5jb21wb3Np
dG9yKCkubGF5ZXJGb3JDb250ZW50U2hhZG93KCk7CiAgICAgCiAgICAgcmV0dXJuIG51bGxwdHI7
CkBAIC0yNTcsMTQgKzI1NywxNCBAQCBHcmFwaGljc0xheWVyKiBTY3JvbGxpbmdDb29yZGluYXRv
cjo6Y29udGVudFNoYWRvd0xheWVyRm9yRnJhbWVWaWV3KEZyYW1lVmlldyogZgogI2VuZGlmCiB9
CiAKLUdyYXBoaWNzTGF5ZXIqIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpyb290Q29udGVudExheWVy
Rm9yRnJhbWVWaWV3KEZyYW1lVmlldyogZnJhbWVWaWV3KQorR3JhcGhpY3NMYXllciogU2Nyb2xs
aW5nQ29vcmRpbmF0b3I6OnJvb3RDb250ZW50TGF5ZXJGb3JGcmFtZVZpZXcoRnJhbWVWaWV3JiBm
cmFtZVZpZXcpCiB7Ci0gICAgaWYgKFJlbmRlclZpZXcqIHJlbmRlclZpZXcgPSBmcmFtZVZpZXct
PmZyYW1lKCkuY29udGVudFJlbmRlcmVyKCkpCisgICAgaWYgKFJlbmRlclZpZXcqIHJlbmRlclZp
ZXcgPSBmcmFtZVZpZXcuZnJhbWUoKS5jb250ZW50UmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJu
IHJlbmRlclZpZXctPmNvbXBvc2l0b3IoKS5yb290Q29udGVudExheWVyKCk7CiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKLXZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZyYW1lVmlld1Jvb3RM
YXllckRpZENoYW5nZShGcmFtZVZpZXcqIGZyYW1lVmlldykKK3ZvaWQgU2Nyb2xsaW5nQ29vcmRp
bmF0b3I6OmZyYW1lVmlld1Jvb3RMYXllckRpZENoYW5nZShGcmFtZVZpZXcmIGZyYW1lVmlldykK
IHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VSVChtX3BhZ2UpOwpAQCAt
MjkzLDkgKzI5Myw5IEBAIHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmhhbmRsZVdoZWVsRXZl
bnRQaGFzZShQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZSBwaGFzZSkKIH0KICNlbmRpZgogCi1ib29s
IFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpoYXNWaXNpYmxlU2xvd1JlcGFpbnRWaWV3cG9ydENvbnN0
cmFpbmVkT2JqZWN0cyhGcmFtZVZpZXcqIGZyYW1lVmlldykgY29uc3QKK2Jvb2wgU2Nyb2xsaW5n
Q29vcmRpbmF0b3I6Omhhc1Zpc2libGVTbG93UmVwYWludFZpZXdwb3J0Q29uc3RyYWluZWRPYmpl
Y3RzKGNvbnN0IEZyYW1lVmlldyYgZnJhbWVWaWV3KSBjb25zdAogewotICAgIGNvbnN0IEZyYW1l
Vmlldzo6Vmlld3BvcnRDb25zdHJhaW5lZE9iamVjdFNldCogdmlld3BvcnRDb25zdHJhaW5lZE9i
amVjdHMgPSBmcmFtZVZpZXctPnZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RzKCk7CisgICAgY29u
c3QgRnJhbWVWaWV3OjpWaWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0U2V0KiB2aWV3cG9ydENvbnN0
cmFpbmVkT2JqZWN0cyA9IGZyYW1lVmlldy52aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0cygpOwog
ICAgIGlmICghdmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHMpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIApAQCAtMzExLDExICszMTEsOCBAQCBib29sIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpoYXNW
aXNpYmxlU2xvd1JlcGFpbnRWaWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0cyhGcmFtZQogICAgIHJl
dHVybiBmYWxzZTsKIH0KIAotU3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zIFNjcm9sbGluZ0Nv
b3JkaW5hdG9yOjpzeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMoRnJhbWVWaWV3KiBmcmFtZVZp
ZXcpIGNvbnN0CitTeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMgU2Nyb2xsaW5nQ29vcmRpbmF0
b3I6OnN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucyhjb25zdCBGcmFtZVZpZXcmIGZyYW1lVmll
dykgY29uc3QKIHsKLSAgICBpZiAoIWZyYW1lVmlldykKLSAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PFN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucz4oMCk7Ci0KICAgICBTeW5jaHJvbm91c1Nj
cm9sbGluZ1JlYXNvbnMgc3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zID0gKFN5bmNocm9ub3Vz
U2Nyb2xsaW5nUmVhc29ucykwOwogCiAgICAgaWYgKG1fZm9yY2VTeW5jaHJvbm91c1Njcm9sbExh
eWVyUG9zaXRpb25VcGRhdGVzKQpAQCAtMzI1LDIzICszMjIsMjMgQEAgU3luY2hyb25vdXNTY3Jv
bGxpbmdSZWFzb25zIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzeW5jaHJvbm91c1Njcm9sbGluZ1Jl
YXNvbnMoRnIKICAgICBpZiAoY3Vyc29yLmlzQ2FwdHVyaW5nKCkgfHwgY3Vyc29yLmlzUmVwbGF5
aW5nKCkpCiAgICAgICAgIHN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucyB8PSBGb3JjZWRPbk1h
aW5UaHJlYWQ7CiAjZW5kaWYKLSAgICBpZiAoZnJhbWVWaWV3LT5oYXNTbG93UmVwYWludE9iamVj
dHMoKSkKKyAgICBpZiAoZnJhbWVWaWV3Lmhhc1Nsb3dSZXBhaW50T2JqZWN0cygpKQogICAgICAg
ICBzeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMgfD0gSGFzU2xvd1JlcGFpbnRPYmplY3RzOwot
ICAgIGlmICghc3VwcG9ydHNGaXhlZFBvc2l0aW9uTGF5ZXJzKCkgJiYgZnJhbWVWaWV3LT5oYXNW
aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0cygpKQorICAgIGlmICghc3VwcG9ydHNGaXhlZFBvc2l0
aW9uTGF5ZXJzKCkgJiYgZnJhbWVWaWV3Lmhhc1ZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RzKCkp
CiAgICAgICAgIHN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucyB8PSBIYXNWaWV3cG9ydENvbnN0
cmFpbmVkT2JqZWN0c1dpdGhvdXRTdXBwb3J0aW5nRml4ZWRMYXllcnM7CiAgICAgaWYgKHN1cHBv
cnRzRml4ZWRQb3NpdGlvbkxheWVycygpICYmIGhhc1Zpc2libGVTbG93UmVwYWludFZpZXdwb3J0
Q29uc3RyYWluZWRPYmplY3RzKGZyYW1lVmlldykpCiAgICAgICAgIHN5bmNocm9ub3VzU2Nyb2xs
aW5nUmVhc29ucyB8PSBIYXNOb25MYXllclZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RzOwotICAg
IGlmIChmcmFtZVZpZXctPmZyYW1lKCkubWFpbkZyYW1lKCkuZG9jdW1lbnQoKSAmJiBmcmFtZVZp
ZXctPmZyYW1lKCkuZG9jdW1lbnQoKS0+aXNJbWFnZURvY3VtZW50KCkpCisgICAgaWYgKGZyYW1l
Vmlldy5mcmFtZSgpLm1haW5GcmFtZSgpLmRvY3VtZW50KCkgJiYgZnJhbWVWaWV3LmZyYW1lKCku
ZG9jdW1lbnQoKS0+aXNJbWFnZURvY3VtZW50KCkpCiAgICAgICAgIHN5bmNocm9ub3VzU2Nyb2xs
aW5nUmVhc29ucyB8PSBJc0ltYWdlRG9jdW1lbnQ7CiAKICAgICByZXR1cm4gc3luY2hyb25vdXNT
Y3JvbGxpbmdSZWFzb25zOwogfQogCi12b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjp1cGRhdGVT
eW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMoRnJhbWVWaWV3KiBmcmFtZVZpZXcpCit2b2lkIFNj
cm9sbGluZ0Nvb3JkaW5hdG9yOjp1cGRhdGVTeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMoRnJh
bWVWaWV3JiBmcmFtZVZpZXcpCiB7CiAgICAgLy8gRklYTUU6IE9uY2Ugd2Ugc3VwcG9ydCBhc3lu
YyBzY3JvbGxpbmcgb2YgaWZyYW1lcywgd2UnbGwgaGF2ZSB0byB0cmFjayB0aGUgc3luY2hyb25v
dXMgc2Nyb2xsaW5nCiAgICAgLy8gcmVhc29ucyBwZXIgZnJhbWUgKG1heWJlIG9uIHNjcm9sbGlu
ZyB0cmVlIG5vZGVzKS4KLSAgICBpZiAoIWZyYW1lVmlldy0+ZnJhbWUoKS5pc01haW5GcmFtZSgp
KQorICAgIGlmICghZnJhbWVWaWV3LmZyYW1lKCkuaXNNYWluRnJhbWUoKSkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgc2V0U3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zKHN5bmNocm9ub3VzU2Ny
b2xsaW5nUmVhc29ucyhmcmFtZVZpZXcpKTsKQEAgLTM1MywxOSArMzUwLDIzIEBAIHZvaWQgU2Ny
b2xsaW5nQ29vcmRpbmF0b3I6OnNldEZvcmNlU3luY2hyb25vdXNTY3JvbGxMYXllclBvc2l0aW9u
VXBkYXRlcyhib29sIGZvCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fZm9yY2VTeW5jaHJvbm91
c1Njcm9sbExheWVyUG9zaXRpb25VcGRhdGVzID0gZm9yY2VTeW5jaHJvbm91c1Njcm9sbExheWVy
UG9zaXRpb25VcGRhdGVzOwotICAgIHVwZGF0ZVN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucyht
X3BhZ2UtPm1haW5GcmFtZSgpLnZpZXcoKSk7CisgICAgaWYgKEZyYW1lVmlldyogZnJhbWVWaWV3
ID0gbV9wYWdlLT5tYWluRnJhbWUoKS52aWV3KCkpCisgICAgICAgIHVwZGF0ZVN5bmNocm9ub3Vz
U2Nyb2xsaW5nUmVhc29ucygqZnJhbWVWaWV3KTsKIH0KIAogYm9vbCBTY3JvbGxpbmdDb29yZGlu
YXRvcjo6c2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvblN5bmNocm9ub3VzbHkoKSBjb25z
dAogewotICAgIHJldHVybiBzeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMobV9wYWdlLT5tYWlu
RnJhbWUoKS52aWV3KCkpOworICAgIGlmIChGcmFtZVZpZXcqIGZyYW1lVmlldyA9IG1fcGFnZS0+
bWFpbkZyYW1lKCkudmlldygpKQorICAgICAgICByZXR1cm4gc3luY2hyb25vdXNTY3JvbGxpbmdS
ZWFzb25zKCpmcmFtZVZpZXcpOworICAgIHJldHVybiB0cnVlOwogfQogCiAjaWYgRU5BQkxFKFdF
Ql9SRVBMQVkpCiB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpyZXBsYXlTZXNzaW9uU3RhdGVE
aWRDaGFuZ2UoKQogewogICAgIC8vIEZJWE1FOiBPbmNlIHdlIHN1cHBvcnQgYXN5bmMgc2Nyb2xs
aW5nIG9mIGlmcmFtZXMsIHRoaXMgc2hvdWxkIGdvIHRocm91Z2ggYWxsIHN1YmZyYW1lcy4KLSAg
ICB1cGRhdGVTeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMobV9wYWdlLT5tYWluRnJhbWUoKS52
aWV3KCkpOworICAgIGlmIChGcmFtZVZpZXcqIGZyYW1lVmlldyA9IG1fcGFnZS0+bWFpbkZyYW1l
KCkudmlldygpKQorICAgICAgICB1cGRhdGVTeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMoKmZy
YW1lVmlldyk7CiB9CiAjZW5kaWYKIApAQCAtNDAyLDcgKzQwMywxMCBAQCBTdHJpbmcgU2Nyb2xs
aW5nQ29vcmRpbmF0b3I6OnN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29uc0FzVGV4dChTeW5jaHJv
bm91c1Njcm9sbAogCiBTdHJpbmcgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnN5bmNocm9ub3VzU2Ny
b2xsaW5nUmVhc29uc0FzVGV4dCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN5bmNocm9ub3VzU2Ny
b2xsaW5nUmVhc29uc0FzVGV4dChzeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMobV9wYWdlLT5t
YWluRnJhbWUoKS52aWV3KCkpKTsKKyAgICBpZiAoRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBtX3Bh
Z2UtPm1haW5GcmFtZSgpLnZpZXcoKSkKKyAgICAgICAgcmV0dXJuIHN5bmNocm9ub3VzU2Nyb2xs
aW5nUmVhc29uc0FzVGV4dChzeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMoKmZyYW1lVmlldykp
OworCisgICAgcmV0dXJuIFN0cmluZygpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGlu
YXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0
b3IuaAppbmRleCBjMGM1MjdjMWMwYzRmMTFkNDM4MTBkMWI4OWFjNjNlNmQwMjg0Zjk0Li45Nzdm
OTYyN2U5ODExYWVmZTQ3MzNlY2U5ZTNlZDg0N2YzZTU1ZGU0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmgKQEAgLTExNSwy
NiArMTE1LDI2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNSZW1vdGVTY3JvbGxpbmdD
b29yZGluYXRvcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICAvLyBSZXR1cm4gd2hl
dGhlciB0aGlzIHNjcm9sbGluZyBjb29yZGluYXRvciBoYW5kbGVzIHNjcm9sbGluZyBmb3IgdGhl
IGdpdmVuIGZyYW1lIHZpZXcuCi0gICAgdmlydHVhbCBib29sIGNvb3JkaW5hdGVzU2Nyb2xsaW5n
Rm9yRnJhbWVWaWV3KEZyYW1lVmlldyopIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBjb29yZGlu
YXRlc1Njcm9sbGluZ0ZvckZyYW1lVmlldyhjb25zdCBGcmFtZVZpZXcmKSBjb25zdDsKIAogICAg
IC8vIFNob3VsZCBiZSBjYWxsZWQgd2hlbmV2ZXIgdGhlIGdpdmVuIGZyYW1lIHZpZXcgaGFzIGJl
ZW4gbGFpZCBvdXQuCi0gICAgdmlydHVhbCB2b2lkIGZyYW1lVmlld0xheW91dFVwZGF0ZWQoRnJh
bWVWaWV3KikgeyB9CisgICAgdmlydHVhbCB2b2lkIGZyYW1lVmlld0xheW91dFVwZGF0ZWQoRnJh
bWVWaWV3JikgeyB9CiAKICAgICAvLyBTaG91bGQgYmUgY2FsbGVkIHdoZW5ldmVyIGEgd2hlZWwg
ZXZlbnQgaGFuZGxlciBpcyBhZGRlZCBvciByZW1vdmVkIGluIHRoZSAKICAgICAvLyBmcmFtZSB2
aWV3J3MgdW5kZXJseWluZyBkb2N1bWVudC4KLSAgICB2b2lkIGZyYW1lVmlld1doZWVsRXZlbnRI
YW5kbGVyQ291bnRDaGFuZ2VkKEZyYW1lVmlldyopOworICAgIHZvaWQgZnJhbWVWaWV3V2hlZWxF
dmVudEhhbmRsZXJDb3VudENoYW5nZWQoRnJhbWVWaWV3Jik7CiAKICAgICAvLyBTaG91bGQgYmUg
Y2FsbGVkIHdoZW5ldmVyIHRoZSBzbG93IHJlcGFpbnQgb2JqZWN0cyBjb3VudGVyIGNoYW5nZXMg
YmV0d2VlbiB6ZXJvIGFuZCBvbmUuCi0gICAgdm9pZCBmcmFtZVZpZXdIYXNTbG93UmVwYWludE9i
amVjdHNEaWRDaGFuZ2UoRnJhbWVWaWV3Kik7CisgICAgdm9pZCBmcmFtZVZpZXdIYXNTbG93UmVw
YWludE9iamVjdHNEaWRDaGFuZ2UoRnJhbWVWaWV3Jik7CiAKICAgICAvLyBTaG91bGQgYmUgY2Fs
bGVkIHdoZW5ldmVyIHRoZSBzZXQgb2YgZml4ZWQgb2JqZWN0cyBjaGFuZ2VzLgotICAgIHZvaWQg
ZnJhbWVWaWV3Rml4ZWRPYmplY3RzRGlkQ2hhbmdlKEZyYW1lVmlldyopOworICAgIHZvaWQgZnJh
bWVWaWV3Rml4ZWRPYmplY3RzRGlkQ2hhbmdlKEZyYW1lVmlldyYpOwogCiAgICAgLy8gQ2FsbGVk
IHdoZW5ldmVyIHRoZSBub24tZmFzdCBzY3JvbGxhYmxlIHJlZ2lvbiBjaGFuZ2VzIGZvciByZWFz
b25zIG90aGVyIHRoYW4gbGF5b3V0LgotICAgIHZpcnR1YWwgdm9pZCBmcmFtZVZpZXdOb25GYXN0
U2Nyb2xsYWJsZVJlZ2lvbkNoYW5nZWQoRnJhbWVWaWV3KikgeyB9CisgICAgdmlydHVhbCB2b2lk
IGZyYW1lVmlld05vbkZhc3RTY3JvbGxhYmxlUmVnaW9uQ2hhbmdlZChGcmFtZVZpZXcmKSB7IH0K
IAogICAgIC8vIFNob3VsZCBiZSBjYWxsZWQgd2hlbmV2ZXIgdGhlIHJvb3QgbGF5ZXIgZm9yIHRo
ZSBnaXZlbiBmcmFtZSB2aWV3IGNoYW5nZXMuCi0gICAgdmlydHVhbCB2b2lkIGZyYW1lVmlld1Jv
b3RMYXllckRpZENoYW5nZShGcmFtZVZpZXcqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZnJhbWVWaWV3
Um9vdExheWVyRGlkQ2hhbmdlKEZyYW1lVmlldyYpOwogCiAgICAgLy8gUmV0dXJuIHdoZXRoZXIg
dGhpcyBzY3JvbGxpbmcgY29vcmRpbmF0b3IgY2FuIGtlZXAgZml4ZWQgcG9zaXRpb24gbGF5ZXJz
IGZpeGVkIHRvIHRoZWlyCiAgICAgLy8gY29udGFpbmVycyB3aGlsZSBzY3JvbGxpbmcuCkBAIC0x
NTYsOCArMTU2LDggQEAgcHVibGljOgogICAgIC8vIFRoZXNlIHZpcnR1YWwgZnVuY3Rpb25zIGFy
ZSBjdXJyZW50bHkgdW5pcXVlIHRvIHRoZSB0aHJlYWRlZCBzY3JvbGxpbmcgYXJjaGl0ZWN0dXJl
LiAKICAgICAvLyBUaGVpciBtZWFuaW5nZnVsIGltcGxlbWVudGF0aW9ucyBhcmUgaW4gU2Nyb2xs
aW5nQ29vcmRpbmF0b3JNYWMuCiAgICAgdmlydHVhbCB2b2lkIGNvbW1pdFRyZWVTdGF0ZUlmTmVl
ZGVkKCkgeyB9Ci0gICAgdmlydHVhbCBib29sIHJlcXVlc3RTY3JvbGxQb3NpdGlvblVwZGF0ZShG
cmFtZVZpZXcqLCBjb25zdCBJbnRQb2ludCYpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVh
bCBib29sIGhhbmRsZVdoZWVsRXZlbnQoRnJhbWVWaWV3KiwgY29uc3QgUGxhdGZvcm1XaGVlbEV2
ZW50JikgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCByZXF1ZXN0U2Nyb2xsUG9z
aXRpb25VcGRhdGUoRnJhbWVWaWV3JiwgY29uc3QgSW50UG9pbnQmKSB7IHJldHVybiBmYWxzZTsg
fQorICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVXaGVlbEV2ZW50KEZyYW1lVmlldyYsIGNvbnN0IFBs
YXRmb3JtV2hlZWxFdmVudCYpIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIFNjcm9sbGlu
Z05vZGVJRCBhdHRhY2hUb1N0YXRlVHJlZShTY3JvbGxpbmdOb2RlVHlwZSwgU2Nyb2xsaW5nTm9k
ZUlEIG5ld05vZGVJRCwgU2Nyb2xsaW5nTm9kZUlEIC8qcGFyZW50SUQqLykgeyByZXR1cm4gbmV3
Tm9kZUlEOyB9CiAgICAgdmlydHVhbCB2b2lkIGRldGFjaEZyb21TdGF0ZVRyZWUoU2Nyb2xsaW5n
Tm9kZUlEKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJTdGF0ZVRyZWUoKSB7IH0KQEAgLTE4
Niw0NyArMTg2LDQ3IEBAIHB1YmxpYzoKICAgICBTY3JvbGxpbmdOb2RlSUQgdW5pcXVlU2Nyb2xs
TGF5ZXJJRCgpOwogCiAgICAgZW51bSBNYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uRmxhZ3Mgewot
ICAgICAgICBGb3JjZWRPbk1haW5UaHJlYWQgPSAxIDw8IDAsCi0gICAgICAgIEhhc1Nsb3dSZXBh
aW50T2JqZWN0cyA9IDEgPDwgMSwKLSAgICAgICAgSGFzVmlld3BvcnRDb25zdHJhaW5lZE9iamVj
dHNXaXRob3V0U3VwcG9ydGluZ0ZpeGVkTGF5ZXJzID0gMSA8PCAyLAotICAgICAgICBIYXNOb25M
YXllclZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RzID0gMSA8PCAzLAotICAgICAgICBJc0ltYWdl
RG9jdW1lbnQgPSAxIDw8IDQKKyAgICAgICAgRm9yY2VkT25NYWluVGhyZWFkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxIDw8IDAsCisgICAgICAgIEhhc1Nsb3dS
ZXBhaW50T2JqZWN0cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMSA8
PCAxLAorICAgICAgICBIYXNWaWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0c1dpdGhvdXRTdXBwb3J0
aW5nRml4ZWRMYXllcnMgICA9IDEgPDwgMiwKKyAgICAgICAgSGFzTm9uTGF5ZXJWaWV3cG9ydENv
bnN0cmFpbmVkT2JqZWN0cyAgICAgICAgICAgICAgICAgICAgICAgPSAxIDw8IDMsCisgICAgICAg
IElzSW1hZ2VEb2N1bWVudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gMSA8PCA0CiAgICAgfTsKIAotICAgIFN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucyBz
eW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMoRnJhbWVWaWV3KikgY29uc3Q7CisgICAgU3luY2hy
b25vdXNTY3JvbGxpbmdSZWFzb25zIHN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucyhjb25zdCBG
cmFtZVZpZXcmKSBjb25zdDsKICAgICBib29sIHNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRp
b25TeW5jaHJvbm91c2x5KCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lT
Y3JvbGxhYmxlQXJlYShTY3JvbGxhYmxlQXJlYSopIHsgfQotICAgIHZpcnR1YWwgdm9pZCBzY3Jv
bGxhYmxlQXJlYVNjcm9sbExheWVyRGlkQ2hhbmdlKFNjcm9sbGFibGVBcmVhKikgeyB9Ci0gICAg
dmlydHVhbCB2b2lkIHNjcm9sbGFibGVBcmVhU2Nyb2xsYmFyTGF5ZXJEaWRDaGFuZ2UoU2Nyb2xs
YWJsZUFyZWEqLCBTY3JvbGxiYXJPcmllbnRhdGlvbikgeyB9CisgICAgdmlydHVhbCB2b2lkIHdp
bGxEZXN0cm95U2Nyb2xsYWJsZUFyZWEoU2Nyb2xsYWJsZUFyZWEmKSB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgc2Nyb2xsYWJsZUFyZWFTY3JvbGxMYXllckRpZENoYW5nZShTY3JvbGxhYmxlQXJlYSYp
IHsgfQorICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxhYmxlQXJlYVNjcm9sbGJhckxheWVyRGlkQ2hh
bmdlKFNjcm9sbGFibGVBcmVhJiwgU2Nyb2xsYmFyT3JpZW50YXRpb24pIHsgfQogCiAgICAgc3Rh
dGljIFN0cmluZyBzeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnNBc1RleHQoU3luY2hyb25vdXNT
Y3JvbGxpbmdSZWFzb25zKTsKICAgICBTdHJpbmcgc3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25z
QXNUZXh0KCkgY29uc3Q7CiAKLSAgICBSZWdpb24gY29tcHV0ZU5vbkZhc3RTY3JvbGxhYmxlUmVn
aW9uKGNvbnN0IEZyYW1lKiwgY29uc3QgSW50UG9pbnQmIGZyYW1lTG9jYXRpb24pIGNvbnN0Owor
ICAgIFJlZ2lvbiBjb21wdXRlTm9uRmFzdFNjcm9sbGFibGVSZWdpb24oY29uc3QgRnJhbWUmLCBj
b25zdCBJbnRQb2ludCYgZnJhbWVMb2NhdGlvbikgY29uc3Q7CiAKIHByb3RlY3RlZDoKICAgICBl
eHBsaWNpdCBTY3JvbGxpbmdDb29yZGluYXRvcihQYWdlKik7CiAKLSAgICBzdGF0aWMgR3JhcGhp
Y3NMYXllciogc2Nyb2xsTGF5ZXJGb3JTY3JvbGxhYmxlQXJlYShTY3JvbGxhYmxlQXJlYSopOwor
ICAgIHN0YXRpYyBHcmFwaGljc0xheWVyKiBzY3JvbGxMYXllckZvclNjcm9sbGFibGVBcmVhKFNj
cm9sbGFibGVBcmVhJik7CiAKICAgICB1bnNpZ25lZCBjb21wdXRlQ3VycmVudFdoZWVsRXZlbnRI
YW5kbGVyQ291bnQoKTsKLSAgICBHcmFwaGljc0xheWVyKiBzY3JvbGxMYXllckZvckZyYW1lVmll
dyhGcmFtZVZpZXcqKTsKLSAgICBHcmFwaGljc0xheWVyKiBjb3VudGVyU2Nyb2xsaW5nTGF5ZXJG
b3JGcmFtZVZpZXcoRnJhbWVWaWV3Kik7Ci0gICAgR3JhcGhpY3NMYXllciogaW5zZXRDbGlwTGF5
ZXJGb3JGcmFtZVZpZXcoRnJhbWVWaWV3Kik7Ci0gICAgR3JhcGhpY3NMYXllciogcm9vdENvbnRl
bnRMYXllckZvckZyYW1lVmlldyhGcmFtZVZpZXcqKTsKLSAgICBHcmFwaGljc0xheWVyKiBjb250
ZW50U2hhZG93TGF5ZXJGb3JGcmFtZVZpZXcoRnJhbWVWaWV3Kik7Ci0gICAgR3JhcGhpY3NMYXll
ciogaGVhZGVyTGF5ZXJGb3JGcmFtZVZpZXcoRnJhbWVWaWV3Kik7Ci0gICAgR3JhcGhpY3NMYXll
ciogZm9vdGVyTGF5ZXJGb3JGcmFtZVZpZXcoRnJhbWVWaWV3Kik7CisgICAgR3JhcGhpY3NMYXll
ciogc2Nyb2xsTGF5ZXJGb3JGcmFtZVZpZXcoRnJhbWVWaWV3Jik7CisgICAgR3JhcGhpY3NMYXll
ciogY291bnRlclNjcm9sbGluZ0xheWVyRm9yRnJhbWVWaWV3KEZyYW1lVmlldyYpOworICAgIEdy
YXBoaWNzTGF5ZXIqIGluc2V0Q2xpcExheWVyRm9yRnJhbWVWaWV3KEZyYW1lVmlldyYpOworICAg
IEdyYXBoaWNzTGF5ZXIqIHJvb3RDb250ZW50TGF5ZXJGb3JGcmFtZVZpZXcoRnJhbWVWaWV3Jik7
CisgICAgR3JhcGhpY3NMYXllciogY29udGVudFNoYWRvd0xheWVyRm9yRnJhbWVWaWV3KEZyYW1l
VmlldyYpOworICAgIEdyYXBoaWNzTGF5ZXIqIGhlYWRlckxheWVyRm9yRnJhbWVWaWV3KEZyYW1l
VmlldyYpOworICAgIEdyYXBoaWNzTGF5ZXIqIGZvb3RlckxheWVyRm9yRnJhbWVWaWV3KEZyYW1l
VmlldyYpOwogCiAgICAgUGFnZSogbV9wYWdlOyAvLyBGSVhNRTogaWRlYWxseSB0aGlzIHdvdWxk
IGJlIGEgcmVmZXJlbmNlIGJ1dCBpdCBnZXRzIG51bGxlZCBvbiBhc3luYyB0ZWFyZG93bi4KIAog
cHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgcmVjb21wdXRlV2hlZWxFdmVudEhhbmRsZXJDb3Vu
dEZvckZyYW1lVmlldyhGcmFtZVZpZXcqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVjb21wdXRl
V2hlZWxFdmVudEhhbmRsZXJDb3VudEZvckZyYW1lVmlldyhGcmFtZVZpZXcmKSB7IH0KICAgICB2
aXJ0dWFsIHZvaWQgc2V0U3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zKFN5bmNocm9ub3VzU2Ny
b2xsaW5nUmVhc29ucykgeyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgaGFzVmlzaWJsZVNsb3dSZXBh
aW50Vmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHMoRnJhbWVWaWV3KikgY29uc3Q7Ci0gICAgdm9p
ZCB1cGRhdGVTeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMoRnJhbWVWaWV3Kik7CisgICAgdmly
dHVhbCBib29sIGhhc1Zpc2libGVTbG93UmVwYWludFZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3Rz
KGNvbnN0IEZyYW1lVmlldyYpIGNvbnN0OworICAgIHZvaWQgdXBkYXRlU3luY2hyb25vdXNTY3Jv
bGxpbmdSZWFzb25zKEZyYW1lVmlldyYpOwogICAgIAogICAgIGJvb2wgbV9mb3JjZVN5bmNocm9u
b3VzU2Nyb2xsTGF5ZXJQb3NpdGlvblVwZGF0ZXM7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvY29vcmRpbmF0ZWRncmFwaGljcy9TY3JvbGxpbmdDb29yZGlu
YXRvckNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvY29vcmRpbmF0ZWRncmFwaGljcy9TY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3Jh
cGhpY3MuY3BwCmluZGV4IDI0Njg4NjUxZjdjMDY2NDE0YzliODVkNjU5N2Y1ZWFiYWI1YThjMjUu
LmIwNzg4YTAzZDVjYzJhNzhjZDljN2IxYmExZWIyMDM3OTBjYjc5YmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xsaW5n
Q29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9jb29yZGluYXRlZGdyYXBoaWNzL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ29v
cmRpbmF0ZWRHcmFwaGljcy5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBTY3JvbGxpbmdDb29y
ZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3M6OnVwZGF0ZVZpZXdwb3J0Q29uc3RyYWluZWROb2Rl
KFNjcm8KICAgICB9CiB9CiAKLXZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdy
YXBoaWNzOjpzY3JvbGxhYmxlQXJlYVNjcm9sbExheWVyRGlkQ2hhbmdlKFNjcm9sbGFibGVBcmVh
KiBzY3JvbGxhYmxlQXJlYSkKK3ZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdy
YXBoaWNzOjpzY3JvbGxhYmxlQXJlYVNjcm9sbExheWVyRGlkQ2hhbmdlKFNjcm9sbGFibGVBcmVh
JiBzY3JvbGxhYmxlQXJlYSkKIHsKICAgICBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIqIGxheWVy
ID0gdG9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIoc2Nyb2xsTGF5ZXJGb3JTY3JvbGxhYmxlQXJl
YShzY3JvbGxhYmxlQXJlYSkpOwogICAgIGlmICghbGF5ZXIpCkBAIC0xMDMsNyArMTAzLDcgQEAg
dm9pZCBTY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3M6OnNjcm9sbGFibGVB
cmVhU2Nyb2xsTGF5ZXJEaWRDaGFuZ2UKICAgICBsYXllci0+c2V0U2Nyb2xsYWJsZUFyZWEoc2Ny
b2xsYWJsZUFyZWEpOwogfQogCi12b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRH
cmFwaGljczo6d2lsbERlc3Ryb3lTY3JvbGxhYmxlQXJlYShTY3JvbGxhYmxlQXJlYSogc2Nyb2xs
YWJsZUFyZWEpCit2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljczo6
d2lsbERlc3Ryb3lTY3JvbGxhYmxlQXJlYShTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEp
CiB7CiAgICAgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKiBsYXllciA9IHRvQ29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyKHNjcm9sbExheWVyRm9yU2Nyb2xsYWJsZUFyZWEoc2Nyb2xsYWJsZUFyZWEp
KTsKICAgICBpZiAoIWxheWVyKQpAQCAtMTEyLDEzICsxMTIsMTMgQEAgdm9pZCBTY3JvbGxpbmdD
b29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3M6OndpbGxEZXN0cm95U2Nyb2xsYWJsZUFyZWEo
U2Nyb2xsYWIKICAgICBsYXllci0+c2V0U2Nyb2xsYWJsZUFyZWEoMCk7CiB9CiAKLWJvb2wgU2Ny
b2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzOjpyZXF1ZXN0U2Nyb2xsUG9zaXRp
b25VcGRhdGUoRnJhbWVWaWV3KiBmcmFtZVZpZXcsIGNvbnN0IEludFBvaW50JiBzY3JvbGxQb3Np
dGlvbikKK2Jvb2wgU2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzOjpyZXF1
ZXN0U2Nyb2xsUG9zaXRpb25VcGRhdGUoRnJhbWVWaWV3JiBmcmFtZVZpZXcsIGNvbnN0IEludFBv
aW50JiBzY3JvbGxQb3NpdGlvbikKIHsKLSAgICBpZiAoIWZyYW1lVmlldy0+ZGVsZWdhdGVzU2Ny
b2xsaW5nKCkpCisgICAgaWYgKCFmcmFtZVZpZXcuZGVsZWdhdGVzU2Nyb2xsaW5nKCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIGZyYW1lVmlldy0+c2V0Rml4ZWRWaXNpYmxlQ29udGVu
dFJlY3QoSW50UmVjdChzY3JvbGxQb3NpdGlvbiwgZnJhbWVWaWV3LT52aXNpYmxlQ29udGVudFJl
Y3QoKS5zaXplKCkpKTsKLSAgICBmcmFtZVZpZXctPmhvc3RXaW5kb3coKS0+ZGVsZWdhdGVkU2Ny
b2xsUmVxdWVzdGVkKHNjcm9sbFBvc2l0aW9uKTsKKyAgICBmcmFtZVZpZXcuc2V0Rml4ZWRWaXNp
YmxlQ29udGVudFJlY3QoSW50UmVjdChzY3JvbGxQb3NpdGlvbiwgZnJhbWVWaWV3LnZpc2libGVD
b250ZW50UmVjdCgpLnNpemUoKSkpOworICAgIGZyYW1lVmlldy5ob3N0V2luZG93KCktPmRlbGVn
YXRlZFNjcm9sbFJlcXVlc3RlZChzY3JvbGxQb3NpdGlvbik7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVk
Z3JhcGhpY3MvU2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jb29yZGluYXRlZGdyYXBoaWNzL1Njcm9sbGluZ0Nv
b3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljcy5oCmluZGV4IGVkZWYwYjc1NTYwZDgwY2FiNzQ2
Nzk0OGIyNmQzMDNiNTczYjliOWIuLmExMjAwNzI1ZTM5YjYyYzVjYTIyMzJiZDc5MDI0ZDdhNzYx
YTU3NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5h
dGVkZ3JhcGhpY3MvU2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29vcmRpbmF0ZWRncmFwaGljcy9TY3Jv
bGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3MuaApAQCAtNDcsMTAgKzQ3LDEwIEBA
IHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVWaWV3cG9ydENvbnN0cmFpbmVkTm9k
ZShTY3JvbGxpbmdOb2RlSUQsIGNvbnN0IFZpZXdwb3J0Q29uc3RyYWludHMmLCBHcmFwaGljc0xh
eWVyKikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsYWJsZUFyZWFTY3JvbGxM
YXllckRpZENoYW5nZShTY3JvbGxhYmxlQXJlYSopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9p
ZCB3aWxsRGVzdHJveVNjcm9sbGFibGVBcmVhKFNjcm9sbGFibGVBcmVhKikgb3ZlcnJpZGU7Cisg
ICAgdmlydHVhbCB2b2lkIHNjcm9sbGFibGVBcmVhU2Nyb2xsTGF5ZXJEaWRDaGFuZ2UoU2Nyb2xs
YWJsZUFyZWEmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lTY3JvbGxh
YmxlQXJlYShTY3JvbGxhYmxlQXJlYSYpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBib29sIHJl
cXVlc3RTY3JvbGxQb3NpdGlvblVwZGF0ZShGcmFtZVZpZXcqLCBjb25zdCBJbnRQb2ludCYpIG92
ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCByZXF1ZXN0U2Nyb2xsUG9zaXRpb25VcGRhdGUoRnJh
bWVWaWV3JiwgY29uc3QgSW50UG9pbnQmKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8U2Nyb2xsaW5nU3RhdGVUcmVlPiBtX3Njcm9sbGluZ1N0YXRlVHJlZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdDb29y
ZGluYXRvck1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGlu
Z0Nvb3JkaW5hdG9yTWFjLmgKaW5kZXggZmM4MjlhNGQ1OTg1ZTk2Yzg1YTdhMTFjNTgxNWViMjM0
YmU2OTgwOS4uODc2NjNmYjAzM2JkYjM5ZTIwNjk5MDNlYjljZTQ2ZGE1N2E3MDIxMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ0Nvb3JkaW5h
dG9yTWFjLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGlu
Z0Nvb3JkaW5hdG9yTWFjLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBjb21taXRUcmVlU3RhdGVJZk5lZWRlZCgpIG92ZXJyaWRlOwogCiAgICAgLy8gSGFuZGxl
IHRoZSB3aGVlbCBldmVudCBvbiB0aGUgc2Nyb2xsaW5nIHRocmVhZC4gUmV0dXJucyB3aGV0aGVy
IHRoZSBldmVudCB3YXMgaGFuZGxlZCBvciBub3QuCi0gICAgdmlydHVhbCBib29sIGhhbmRsZVdo
ZWVsRXZlbnQoRnJhbWVWaWV3KiwgY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jikgb3ZlcnJpZGU7
CisgICAgdmlydHVhbCBib29sIGhhbmRsZVdoZWVsRXZlbnQoRnJhbWVWaWV3JiwgY29uc3QgUGxh
dGZvcm1XaGVlbEV2ZW50Jikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lk
IHNjaGVkdWxlVHJlZVN0YXRlQ29tbWl0KCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWMubW0gYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWMu
bW0KaW5kZXggNjhhNTQyODFiYmU2NjY0OWRlNjA0MmM3ODkwYzBlNjJhYmFhNmU1YS4uZWExMzky
Nzk5MGIwYmY5Yzk4MGQ0YjE4YzAxNDk4ZTM3ZWZkYzMwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ0Nvb3JkaW5hdG9yTWFjLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdDb29yZGluYXRvck1h
Yy5tbQpAQCAtODYsNyArODYsNyBAQCB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yTWFjOjpjb21t
aXRUcmVlU3RhdGVJZk5lZWRlZCgpCiAgICAgbV9zY3JvbGxpbmdTdGF0ZVRyZWVDb21taXR0ZXJU
aW1lci5zdG9wKCk7CiB9CiAKLWJvb2wgU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWM6OmhhbmRsZVdo
ZWVsRXZlbnQoRnJhbWVWaWV3KiwgY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50
KQorYm9vbCBTY3JvbGxpbmdDb29yZGluYXRvck1hYzo6aGFuZGxlV2hlZWxFdmVudChGcmFtZVZp
ZXcmLCBjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQpCiB7CiAgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlQobV9wYWdlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IGY3ODI4YWJlNjcwZjk4NTZkNDBlMmMzNjZkNDBl
ZGExNGZjYjUzOTkuLmJkNzdhZjA5MDQwYzgwMDgxMWRmOTMyOGQwZGQyNThiMWVkZjhjYTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAtMzYwLDcgKzM2MCw3
IEBAIFJlbmRlckxheWVyOjp+UmVuZGVyTGF5ZXIoKQogCiAgICAgaWYgKHJlbmRlcmVyKCkuZnJh
bWUoKS5wYWdlKCkpIHsKICAgICAgICAgaWYgKFNjcm9sbGluZ0Nvb3JkaW5hdG9yKiBzY3JvbGxp
bmdDb29yZGluYXRvciA9IHJlbmRlcmVyKCkuZnJhbWUoKS5wYWdlKCktPnNjcm9sbGluZ0Nvb3Jk
aW5hdG9yKCkpCi0gICAgICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+d2lsbERlc3Ryb3lT
Y3JvbGxhYmxlQXJlYSh0aGlzKTsKKyAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT53
aWxsRGVzdHJveVNjcm9sbGFibGVBcmVhKCp0aGlzKTsKICAgICB9CiAKICAgICBpZiAobV9yZWZs
ZWN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
QmFja2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5n
LmNwcAppbmRleCBhOTBhNDllODcyOTc2ZGRlMDRlNzQyZjE5N2Y5OWU0ZWMxOWFmY2M4Li5hZWFm
Y2M5ZjczMjJmNjQwYmE0ZDMzYzQzMTE3OTBjOGM2MWRlNGZmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcApAQCAtMTI5NSw5ICsxMjk1LDkg
QEAgYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZU92ZXJmbG93Q29udHJvbHNMYXllcnMo
Ym9vbCBuZWVkc0hvcml6b250YWxTY3JvbGwKIAogICAgIGlmIChTY3JvbGxpbmdDb29yZGluYXRv
ciogc2Nyb2xsaW5nQ29vcmRpbmF0b3IgPSBzY3JvbGxpbmdDb29yZGluYXRvckZyb21MYXllciht
X293bmluZ0xheWVyKSkgewogICAgICAgICBpZiAoaG9yaXpvbnRhbFNjcm9sbGJhckxheWVyQ2hh
bmdlZCkKLSAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5zY3JvbGxhYmxlQXJlYVNj
cm9sbGJhckxheWVyRGlkQ2hhbmdlKCZtX293bmluZ0xheWVyLCBIb3Jpem9udGFsU2Nyb2xsYmFy
KTsKKyAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5zY3JvbGxhYmxlQXJlYVNjcm9s
bGJhckxheWVyRGlkQ2hhbmdlKG1fb3duaW5nTGF5ZXIsIEhvcml6b250YWxTY3JvbGxiYXIpOwog
ICAgICAgICBpZiAodmVydGljYWxTY3JvbGxiYXJMYXllckNoYW5nZWQpCi0gICAgICAgICAgICBz
Y3JvbGxpbmdDb29yZGluYXRvci0+c2Nyb2xsYWJsZUFyZWFTY3JvbGxiYXJMYXllckRpZENoYW5n
ZSgmbV9vd25pbmdMYXllciwgVmVydGljYWxTY3JvbGxiYXIpOworICAgICAgICAgICAgc2Nyb2xs
aW5nQ29vcmRpbmF0b3ItPnNjcm9sbGFibGVBcmVhU2Nyb2xsYmFyTGF5ZXJEaWRDaGFuZ2UobV9v
d25pbmdMYXllciwgVmVydGljYWxTY3JvbGxiYXIpOwogICAgIH0KIAogICAgIHJldHVybiBob3Jp
em9udGFsU2Nyb2xsYmFyTGF5ZXJDaGFuZ2VkIHx8IHZlcnRpY2FsU2Nyb2xsYmFyTGF5ZXJDaGFu
Z2VkIHx8IHNjcm9sbENvcm5lckxheWVyQ2hhbmdlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKaW5kZXggZThkODVkZGMzMGUxNjcy
MjRiZTcxMmRkNTdjZTY2YWJiNWE0NjkwZi4uYzcyMjg3ZWQxZTAwZTAxMmFlZmIyODBlZTNmNzIw
MDY0MGQ4YzFlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQ29tcG9zaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQ29tcG9zaXRvci5jcHAKQEAgLTk4Nyw3ICs5ODcsNyBAQCBib29sIFJlbmRlckxheWVyQ29t
cG9zaXRvcjo6dXBkYXRlQmFja2luZyhSZW5kZXJMYXllciYgbGF5ZXIsIENvbXBvc2l0aW5nQ2hh
bmdlUgogICAgICAgICAgICAgaWYgKGxheWVyLmlzUm9vdExheWVyKCkgJiYgIW1fcmVuZGVyVmll
dy5kb2N1bWVudCgpLm93bmVyRWxlbWVudCgpKSB7CiAgICAgICAgICAgICAgICAgdXBkYXRlU2Ny
b2xsQ29vcmRpbmF0ZWRTdGF0dXMobGF5ZXIpOwogICAgICAgICAgICAgICAgIGlmIChTY3JvbGxp
bmdDb29yZGluYXRvciogc2Nyb2xsaW5nQ29vcmRpbmF0b3IgPSB0aGlzLT5zY3JvbGxpbmdDb29y
ZGluYXRvcigpKQotICAgICAgICAgICAgICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+ZnJh
bWVWaWV3Um9vdExheWVyRGlkQ2hhbmdlKCZtX3JlbmRlclZpZXcuZnJhbWVWaWV3KCkpOworICAg
ICAgICAgICAgICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+ZnJhbWVWaWV3Um9vdExheWVy
RGlkQ2hhbmdlKG1fcmVuZGVyVmlldy5mcmFtZVZpZXcoKSk7CiAjaWYgRU5BQkxFKFJVQkJFUl9C
QU5ESU5HKQogICAgICAgICAgICAgICAgIGlmIChQYWdlKiBwYWdlID0gdGhpcy0+cGFnZSgpKSB7
CiAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZUxheWVyRm9ySGVhZGVyKHBhZ2UtPmhlYWRlckhl
aWdodCgpKTsKQEAgLTEwNjEsNyArMTA2MSw3IEBAIGJvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9y
Ojp1cGRhdGVCYWNraW5nKFJlbmRlckxheWVyJiBsYXllciwgQ29tcG9zaXRpbmdDaGFuZ2VSCiAg
ICAgICAgIH0KICAgICAgICAgaWYgKGxheWVyQ2hhbmdlZCkgewogICAgICAgICAgICAgaWYgKFNj
cm9sbGluZ0Nvb3JkaW5hdG9yKiBzY3JvbGxpbmdDb29yZGluYXRvciA9IHRoaXMtPnNjcm9sbGlu
Z0Nvb3JkaW5hdG9yKCkpCi0gICAgICAgICAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPmZy
YW1lVmlld0ZpeGVkT2JqZWN0c0RpZENoYW5nZSgmbV9yZW5kZXJWaWV3LmZyYW1lVmlldygpKTsK
KyAgICAgICAgICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+ZnJhbWVWaWV3Rml4ZWRPYmpl
Y3RzRGlkQ2hhbmdlKG1fcmVuZGVyVmlldy5mcmFtZVZpZXcoKSk7CiAgICAgICAgIH0KICAgICB9
IGVsc2UKICAgICAgICAgbGF5ZXIuc2V0Vmlld3BvcnRDb25zdHJhaW5lZE5vdENvbXBvc2l0ZWRS
ZWFzb24oUmVuZGVyTGF5ZXI6Ok5vTm90Q29tcG9zaXRlZFJlYXNvbik7CkBAIC0xNzA3LDcgKzE3
MDcsNyBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6ZnJhbWVWaWV3RGlkQ2hhbmdlU2l6
ZSgpCiBib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6aGFzQ29vcmRpbmF0ZWRTY3JvbGxpbmco
KSBjb25zdAogewogICAgIFNjcm9sbGluZ0Nvb3JkaW5hdG9yKiBzY3JvbGxpbmdDb29yZGluYXRv
ciA9IHRoaXMtPnNjcm9sbGluZ0Nvb3JkaW5hdG9yKCk7Ci0gICAgcmV0dXJuIHNjcm9sbGluZ0Nv
b3JkaW5hdG9yICYmIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5jb29yZGluYXRlc1Njcm9sbGluZ0Zv
ckZyYW1lVmlldygmbV9yZW5kZXJWaWV3LmZyYW1lVmlldygpKTsKKyAgICByZXR1cm4gc2Nyb2xs
aW5nQ29vcmRpbmF0b3IgJiYgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPmNvb3JkaW5hdGVzU2Nyb2xs
aW5nRm9yRnJhbWVWaWV3KG1fcmVuZGVyVmlldy5mcmFtZVZpZXcoKSk7CiB9CiAKIHZvaWQgUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVTY3JvbGxMYXllclBvc2l0aW9uKCkKQEAgLTE3NjYs
NyArMTc2Niw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyb290Rml4ZWRCYWNrZ3Jv
dW5kc0NoYW5nZWQoKQogdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnNjcm9sbGluZ0xheWVy
RGlkQ2hhbmdlKFJlbmRlckxheWVyJiBsYXllcikKIHsKICAgICBpZiAoU2Nyb2xsaW5nQ29vcmRp
bmF0b3IqIHNjcm9sbGluZ0Nvb3JkaW5hdG9yID0gdGhpcy0+c2Nyb2xsaW5nQ29vcmRpbmF0b3Io
KSkKLSAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPnNjcm9sbGFibGVBcmVhU2Nyb2xsTGF5
ZXJEaWRDaGFuZ2UoJmxheWVyKTsKKyAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPnNjcm9s
bGFibGVBcmVhU2Nyb2xsTGF5ZXJEaWRDaGFuZ2UobGF5ZXIpOwogfQogCiB2b2lkIFJlbmRlckxh
eWVyQ29tcG9zaXRvcjo6Zml4ZWRSb290QmFja2dyb3VuZExheWVyQ2hhbmdlZCgpCkBAIC0zMTEy
LDcgKzMxMTIsNyBAQCBHcmFwaGljc0xheWVyKiBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0
ZUxheWVyRm9ySGVhZGVyKGJvb2wgd2FudHNMYXllcikKICAgICAgICAgICAgIC8vIFRoZSBTY3Jv
bGxpbmdUcmVlIGtub3dzIGFib3V0IHRoZSBoZWFkZXIgbGF5ZXIsIGFuZCB0aGUgcG9zaXRpb24g
b2YgdGhlIHJvb3QgbGF5ZXIgaXMgYWZmZWN0ZWQKICAgICAgICAgICAgIC8vIGJ5IHRoZSBoZWFk
ZXIgbGF5ZXIsIHNvIGlmIHdlIHJlbW92ZSB0aGUgaGVhZGVyLCB3ZSBuZWVkIHRvIHRlbGwgdGhl
IHNjcm9sbGluZyB0cmVlLgogICAgICAgICAgICAgaWYgKFNjcm9sbGluZ0Nvb3JkaW5hdG9yKiBz
Y3JvbGxpbmdDb29yZGluYXRvciA9IHRoaXMtPnNjcm9sbGluZ0Nvb3JkaW5hdG9yKCkpCi0gICAg
ICAgICAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPmZyYW1lVmlld1Jvb3RMYXllckRpZENo
YW5nZSgmbV9yZW5kZXJWaWV3LmZyYW1lVmlldygpKTsKKyAgICAgICAgICAgICAgICBzY3JvbGxp
bmdDb29yZGluYXRvci0+ZnJhbWVWaWV3Um9vdExheWVyRGlkQ2hhbmdlKG1fcmVuZGVyVmlldy5m
cmFtZVZpZXcoKSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQpAQCAtMzEz
Miw3ICszMTMyLDcgQEAgR3JhcGhpY3NMYXllciogUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRh
dGVMYXllckZvckhlYWRlcihib29sIHdhbnRzTGF5ZXIpCiAgICAgbV9sYXllckZvckhlYWRlci0+
c2V0U2l6ZShGbG9hdFNpemUobV9yZW5kZXJWaWV3LmZyYW1lVmlldygpLnZpc2libGVXaWR0aCgp
LCBtX3JlbmRlclZpZXcuZnJhbWVWaWV3KCkuaGVhZGVySGVpZ2h0KCkpKTsKIAogICAgIGlmIChT
Y3JvbGxpbmdDb29yZGluYXRvciogc2Nyb2xsaW5nQ29vcmRpbmF0b3IgPSB0aGlzLT5zY3JvbGxp
bmdDb29yZGluYXRvcigpKQotICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+ZnJhbWVWaWV3
Um9vdExheWVyRGlkQ2hhbmdlKCZtX3JlbmRlclZpZXcuZnJhbWVWaWV3KCkpOworICAgICAgICBz
Y3JvbGxpbmdDb29yZGluYXRvci0+ZnJhbWVWaWV3Um9vdExheWVyRGlkQ2hhbmdlKG1fcmVuZGVy
Vmlldy5mcmFtZVZpZXcoKSk7CiAKICAgICBpZiAoUGFnZSogcGFnZSA9IHRoaXMtPnBhZ2UoKSkK
ICAgICAgICAgcGFnZS0+Y2hyb21lKCkuY2xpZW50KCkuZGlkQWRkSGVhZGVyTGF5ZXIobV9sYXll
ckZvckhlYWRlci5nZXQoKSk7CkBAIC0zMTUzLDcgKzMxNTMsNyBAQCBHcmFwaGljc0xheWVyKiBS
ZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZUxheWVyRm9yRm9vdGVyKGJvb2wgd2FudHNMYXll
cikKICAgICAgICAgICAgIC8vIFRoZSBTY3JvbGxpbmdUcmVlIGtub3dzIGFib3V0IHRoZSBmb290
ZXIgbGF5ZXIsIGFuZCB0aGUgdG90YWwgc2Nyb2xsYWJsZSBzaXplIGlzIGFmZmVjdGVkCiAgICAg
ICAgICAgICAvLyBieSB0aGUgZm9vdGVyIGxheWVyLCBzbyBpZiB3ZSByZW1vdmUgdGhlIGZvb3Rl
ciwgd2UgbmVlZCB0byB0ZWxsIHRoZSBzY3JvbGxpbmcgdHJlZS4KICAgICAgICAgICAgIGlmIChT
Y3JvbGxpbmdDb29yZGluYXRvciogc2Nyb2xsaW5nQ29vcmRpbmF0b3IgPSB0aGlzLT5zY3JvbGxp
bmdDb29yZGluYXRvcigpKQotICAgICAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5m
cmFtZVZpZXdSb290TGF5ZXJEaWRDaGFuZ2UoJm1fcmVuZGVyVmlldy5mcmFtZVZpZXcoKSk7Cisg
ICAgICAgICAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPmZyYW1lVmlld1Jvb3RMYXllckRp
ZENoYW5nZShtX3JlbmRlclZpZXcuZnJhbWVWaWV3KCkpOwogICAgICAgICB9CiAgICAgICAgIHJl
dHVybiAwOwogICAgIH0KQEAgLTMxNzMsNyArMzE3Myw3IEBAIEdyYXBoaWNzTGF5ZXIqIFJlbmRl
ckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlTGF5ZXJGb3JGb290ZXIoYm9vbCB3YW50c0xheWVyKQog
ICAgIG1fbGF5ZXJGb3JGb290ZXItPnNldFNpemUoRmxvYXRTaXplKG1fcmVuZGVyVmlldy5mcmFt
ZVZpZXcoKS52aXNpYmxlV2lkdGgoKSwgbV9yZW5kZXJWaWV3LmZyYW1lVmlldygpLmZvb3Rlckhl
aWdodCgpKSk7CiAKICAgICBpZiAoU2Nyb2xsaW5nQ29vcmRpbmF0b3IqIHNjcm9sbGluZ0Nvb3Jk
aW5hdG9yID0gdGhpcy0+c2Nyb2xsaW5nQ29vcmRpbmF0b3IoKSkKLSAgICAgICAgc2Nyb2xsaW5n
Q29vcmRpbmF0b3ItPmZyYW1lVmlld1Jvb3RMYXllckRpZENoYW5nZSgmbV9yZW5kZXJWaWV3LmZy
YW1lVmlldygpKTsKKyAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPmZyYW1lVmlld1Jvb3RM
YXllckRpZENoYW5nZShtX3JlbmRlclZpZXcuZnJhbWVWaWV3KCkpOwogCiAgICAgaWYgKFBhZ2Uq
IHBhZ2UgPSB0aGlzLT5wYWdlKCkpCiAgICAgICAgIHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLmRp
ZEFkZEZvb3RlckxheWVyKG1fbGF5ZXJGb3JGb290ZXIuZ2V0KCkpOwpAQCAtMzI4NywxNCArMzI4
NywxNCBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlT3ZlcmZsb3dDb250cm9s
c0xheWVycygpCiAgICAgICAgICAgICBtX292ZXJmbG93Q29udHJvbHNIb3N0TGF5ZXItPmFkZENo
aWxkKG1fbGF5ZXJGb3JIb3Jpem9udGFsU2Nyb2xsYmFyLmdldCgpKTsKIAogICAgICAgICAgICAg
aWYgKFNjcm9sbGluZ0Nvb3JkaW5hdG9yKiBzY3JvbGxpbmdDb29yZGluYXRvciA9IHRoaXMtPnNj
cm9sbGluZ0Nvb3JkaW5hdG9yKCkpCi0gICAgICAgICAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0
b3ItPnNjcm9sbGFibGVBcmVhU2Nyb2xsYmFyTGF5ZXJEaWRDaGFuZ2UoJm1fcmVuZGVyVmlldy5m
cmFtZVZpZXcoKSwgSG9yaXpvbnRhbFNjcm9sbGJhcik7CisgICAgICAgICAgICAgICAgc2Nyb2xs
aW5nQ29vcmRpbmF0b3ItPnNjcm9sbGFibGVBcmVhU2Nyb2xsYmFyTGF5ZXJEaWRDaGFuZ2UobV9y
ZW5kZXJWaWV3LmZyYW1lVmlldygpLCBIb3Jpem9udGFsU2Nyb2xsYmFyKTsKICAgICAgICAgfQog
ICAgIH0gZWxzZSBpZiAobV9sYXllckZvckhvcml6b250YWxTY3JvbGxiYXIpIHsKICAgICAgICAg
bV9sYXllckZvckhvcml6b250YWxTY3JvbGxiYXItPnJlbW92ZUZyb21QYXJlbnQoKTsKICAgICAg
ICAgbV9sYXllckZvckhvcml6b250YWxTY3JvbGxiYXIgPSBudWxscHRyOwogCiAgICAgICAgIGlm
IChTY3JvbGxpbmdDb29yZGluYXRvciogc2Nyb2xsaW5nQ29vcmRpbmF0b3IgPSB0aGlzLT5zY3Jv
bGxpbmdDb29yZGluYXRvcigpKQotICAgICAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPnNj
cm9sbGFibGVBcmVhU2Nyb2xsYmFyTGF5ZXJEaWRDaGFuZ2UoJm1fcmVuZGVyVmlldy5mcmFtZVZp
ZXcoKSwgSG9yaXpvbnRhbFNjcm9sbGJhcik7CisgICAgICAgICAgICBzY3JvbGxpbmdDb29yZGlu
YXRvci0+c2Nyb2xsYWJsZUFyZWFTY3JvbGxiYXJMYXllckRpZENoYW5nZShtX3JlbmRlclZpZXcu
ZnJhbWVWaWV3KCksIEhvcml6b250YWxTY3JvbGxiYXIpOwogICAgIH0KIAogICAgIGlmIChyZXF1
aXJlc1ZlcnRpY2FsU2Nyb2xsYmFyTGF5ZXIoKSkgewpAQCAtMzMxMCwxNCArMzMxMCwxNCBAQCB2
b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlT3ZlcmZsb3dDb250cm9sc0xheWVycygp
CiAgICAgICAgICAgICBtX292ZXJmbG93Q29udHJvbHNIb3N0TGF5ZXItPmFkZENoaWxkKG1fbGF5
ZXJGb3JWZXJ0aWNhbFNjcm9sbGJhci5nZXQoKSk7CiAKICAgICAgICAgICAgIGlmIChTY3JvbGxp
bmdDb29yZGluYXRvciogc2Nyb2xsaW5nQ29vcmRpbmF0b3IgPSB0aGlzLT5zY3JvbGxpbmdDb29y
ZGluYXRvcigpKQotICAgICAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5zY3JvbGxh
YmxlQXJlYVNjcm9sbGJhckxheWVyRGlkQ2hhbmdlKCZtX3JlbmRlclZpZXcuZnJhbWVWaWV3KCks
IFZlcnRpY2FsU2Nyb2xsYmFyKTsKKyAgICAgICAgICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRv
ci0+c2Nyb2xsYWJsZUFyZWFTY3JvbGxiYXJMYXllckRpZENoYW5nZShtX3JlbmRlclZpZXcuZnJh
bWVWaWV3KCksIFZlcnRpY2FsU2Nyb2xsYmFyKTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAo
bV9sYXllckZvclZlcnRpY2FsU2Nyb2xsYmFyKSB7CiAgICAgICAgIG1fbGF5ZXJGb3JWZXJ0aWNh
bFNjcm9sbGJhci0+cmVtb3ZlRnJvbVBhcmVudCgpOwogICAgICAgICBtX2xheWVyRm9yVmVydGlj
YWxTY3JvbGxiYXIgPSBudWxscHRyOwogCiAgICAgICAgIGlmIChTY3JvbGxpbmdDb29yZGluYXRv
ciogc2Nyb2xsaW5nQ29vcmRpbmF0b3IgPSB0aGlzLT5zY3JvbGxpbmdDb29yZGluYXRvcigpKQot
ICAgICAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPnNjcm9sbGFibGVBcmVhU2Nyb2xsYmFy
TGF5ZXJEaWRDaGFuZ2UoJm1fcmVuZGVyVmlldy5mcmFtZVZpZXcoKSwgVmVydGljYWxTY3JvbGxi
YXIpOworICAgICAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPnNjcm9sbGFibGVBcmVhU2Ny
b2xsYmFyTGF5ZXJEaWRDaGFuZ2UobV9yZW5kZXJWaWV3LmZyYW1lVmlldygpLCBWZXJ0aWNhbFNj
cm9sbGJhcik7CiAgICAgfQogCiAgICAgaWYgKHJlcXVpcmVzU2Nyb2xsQ29ybmVyTGF5ZXIoKSkg
ewpAQCAtMzQzNyw3ICszNDM3LDcgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmRlc3Ry
b3lSb290TGF5ZXIoKQogICAgICAgICBtX2xheWVyRm9ySG9yaXpvbnRhbFNjcm9sbGJhci0+cmVt
b3ZlRnJvbVBhcmVudCgpOwogICAgICAgICBtX2xheWVyRm9ySG9yaXpvbnRhbFNjcm9sbGJhciA9
IG51bGxwdHI7CiAgICAgICAgIGlmIChTY3JvbGxpbmdDb29yZGluYXRvciogc2Nyb2xsaW5nQ29v
cmRpbmF0b3IgPSB0aGlzLT5zY3JvbGxpbmdDb29yZGluYXRvcigpKQotICAgICAgICAgICAgc2Ny
b2xsaW5nQ29vcmRpbmF0b3ItPnNjcm9sbGFibGVBcmVhU2Nyb2xsYmFyTGF5ZXJEaWRDaGFuZ2Uo
Jm1fcmVuZGVyVmlldy5mcmFtZVZpZXcoKSwgSG9yaXpvbnRhbFNjcm9sbGJhcik7CisgICAgICAg
ICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+c2Nyb2xsYWJsZUFyZWFTY3JvbGxiYXJMYXllckRp
ZENoYW5nZShtX3JlbmRlclZpZXcuZnJhbWVWaWV3KCksIEhvcml6b250YWxTY3JvbGxiYXIpOwog
ICAgICAgICBpZiAoU2Nyb2xsYmFyKiBob3Jpem9udGFsU2Nyb2xsYmFyID0gbV9yZW5kZXJWaWV3
LmZyYW1lVmlldygpLnZlcnRpY2FsU2Nyb2xsYmFyKCkpCiAgICAgICAgICAgICBtX3JlbmRlclZp
ZXcuZnJhbWVWaWV3KCkuaW52YWxpZGF0ZVNjcm9sbGJhcihob3Jpem9udGFsU2Nyb2xsYmFyLCBJ
bnRSZWN0KEludFBvaW50KDAsIDApLCBob3Jpem9udGFsU2Nyb2xsYmFyLT5mcmFtZVJlY3QoKS5z
aXplKCkpKTsKICAgICB9CkBAIC0zNDQ2LDcgKzM0NDYsNyBAQCB2b2lkIFJlbmRlckxheWVyQ29t
cG9zaXRvcjo6ZGVzdHJveVJvb3RMYXllcigpCiAgICAgICAgIG1fbGF5ZXJGb3JWZXJ0aWNhbFNj
cm9sbGJhci0+cmVtb3ZlRnJvbVBhcmVudCgpOwogICAgICAgICBtX2xheWVyRm9yVmVydGljYWxT
Y3JvbGxiYXIgPSBudWxscHRyOwogICAgICAgICBpZiAoU2Nyb2xsaW5nQ29vcmRpbmF0b3IqIHNj
cm9sbGluZ0Nvb3JkaW5hdG9yID0gdGhpcy0+c2Nyb2xsaW5nQ29vcmRpbmF0b3IoKSkKLSAgICAg
ICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5zY3JvbGxhYmxlQXJlYVNjcm9sbGJhckxheWVy
RGlkQ2hhbmdlKCZtX3JlbmRlclZpZXcuZnJhbWVWaWV3KCksIFZlcnRpY2FsU2Nyb2xsYmFyKTsK
KyAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5zY3JvbGxhYmxlQXJlYVNjcm9sbGJh
ckxheWVyRGlkQ2hhbmdlKG1fcmVuZGVyVmlldy5mcmFtZVZpZXcoKSwgVmVydGljYWxTY3JvbGxi
YXIpOwogICAgICAgICBpZiAoU2Nyb2xsYmFyKiB2ZXJ0aWNhbFNjcm9sbGJhciA9IG1fcmVuZGVy
Vmlldy5mcmFtZVZpZXcoKS52ZXJ0aWNhbFNjcm9sbGJhcigpKQogICAgICAgICAgICAgbV9yZW5k
ZXJWaWV3LmZyYW1lVmlldygpLmludmFsaWRhdGVTY3JvbGxiYXIodmVydGljYWxTY3JvbGxiYXIs
IEludFJlY3QoSW50UG9pbnQoMCwgMCksIHZlcnRpY2FsU2Nyb2xsYmFyLT5mcmFtZVJlY3QoKS5z
aXplKCkpKTsKICAgICB9CkBAIC0zODE2LDcgKzM4MTYsNyBAQCBTY3JvbGxpbmdOb2RlSUQgUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yOjphdHRhY2hTY3JvbGxpbmdOb2RlKFJlbmRlckxheWVyJiBsYXll
ciwgUwogdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZVNjcm9sbENvb3JkaW5hdGlv
bkZvclRoaXNGcmFtZShTY3JvbGxpbmdOb2RlSUQgcGFyZW50Tm9kZUlEKQogewogICAgIFNjcm9s
bGluZ0Nvb3JkaW5hdG9yKiBzY3JvbGxpbmdDb29yZGluYXRvciA9IHRoaXMtPnNjcm9sbGluZ0Nv
b3JkaW5hdG9yKCk7Ci0gICAgQVNTRVJUKHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5jb29yZGluYXRl
c1Njcm9sbGluZ0ZvckZyYW1lVmlldygmbV9yZW5kZXJWaWV3LmZyYW1lVmlldygpKSk7CisgICAg
QVNTRVJUKHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5jb29yZGluYXRlc1Njcm9sbGluZ0ZvckZyYW1l
VmlldyhtX3JlbmRlclZpZXcuZnJhbWVWaWV3KCkpKTsKIAogICAgIFNjcm9sbGluZ05vZGVJRCBu
b2RlSUQgPSBhdHRhY2hTY3JvbGxpbmdOb2RlKCptX3JlbmRlclZpZXcubGF5ZXIoKSwgRnJhbWVT
Y3JvbGxpbmdOb2RlLCBwYXJlbnROb2RlSUQpOwogICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT51
cGRhdGVGcmFtZVNjcm9sbGluZ05vZGUobm9kZUlELCBtX3Njcm9sbExheWVyLmdldCgpLCBtX3Jv
b3RDb250ZW50TGF5ZXIuZ2V0KCksIGZpeGVkUm9vdEJhY2tncm91bmRMYXllcigpLCBjbGlwTGF5
ZXIoKSk7CkBAIC0zODI1LDcgKzM4MjUsNyBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6
dXBkYXRlU2Nyb2xsQ29vcmRpbmF0aW9uRm9yVGhpc0ZyYW1lKFNjcm9sbGluZ05vZGVJRAogdm9p
ZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZVNjcm9sbENvb3JkaW5hdGVkTGF5ZXIoUmVu
ZGVyTGF5ZXImIGxheWVyLCBTY3JvbGxDb29yZGluYXRpb25SZWFzb25zIHJlYXNvbnMpCiB7CiAg
ICAgU2Nyb2xsaW5nQ29vcmRpbmF0b3IqIHNjcm9sbGluZ0Nvb3JkaW5hdG9yID0gdGhpcy0+c2Ny
b2xsaW5nQ29vcmRpbmF0b3IoKTsKLSAgICBpZiAoIXNjcm9sbGluZ0Nvb3JkaW5hdG9yIHx8ICFz
Y3JvbGxpbmdDb29yZGluYXRvci0+Y29vcmRpbmF0ZXNTY3JvbGxpbmdGb3JGcmFtZVZpZXcoJm1f
cmVuZGVyVmlldy5mcmFtZVZpZXcoKSkpCisgICAgaWYgKCFzY3JvbGxpbmdDb29yZGluYXRvciB8
fCAhc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPmNvb3JkaW5hdGVzU2Nyb2xsaW5nRm9yRnJhbWVWaWV3
KG1fcmVuZGVyVmlldy5mcmFtZVZpZXcoKSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGJvb2wg
aXNSb290TGF5ZXIgPSAmbGF5ZXIgPT0gbV9yZW5kZXJWaWV3LmxheWVyKCk7CkBAIC00MDE5LDcg
KzQwMTksNyBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6d2lsbFJlbW92ZVNjcm9sbGlu
Z0xheWVyV2l0aEJhY2tpbmcoUmVuZGVyTGF5ZXImIGxheQogICAgICAgICBiYWNraW5nLmRldGFj
aEZyb21TY3JvbGxpbmdDb29yZGluYXRvcigpOwogCiAgICAgICAgIC8vIEZvciBDb29yZGluYXRl
ZCBHcmFwaGljcy4KLSAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPnNjcm9sbGFibGVBcmVh
U2Nyb2xsTGF5ZXJEaWRDaGFuZ2UoJmxheWVyKTsKKyAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0
b3ItPnNjcm9sbGFibGVBcmVhU2Nyb2xsTGF5ZXJEaWRDaGFuZ2UobGF5ZXIpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCkBAIC00MDQ0LDcgKzQwNDQsNyBAQCB2b2lkIFJlbmRlckxheWVyQ29t
cG9zaXRvcjo6ZGlkQWRkU2Nyb2xsaW5nTGF5ZXIoUmVuZGVyTGF5ZXImIGxheWVyKQogCiAgICAg
aWYgKFNjcm9sbGluZ0Nvb3JkaW5hdG9yKiBzY3JvbGxpbmdDb29yZGluYXRvciA9IHRoaXMtPnNj
cm9sbGluZ0Nvb3JkaW5hdG9yKCkpIHsKICAgICAgICAgLy8gRm9yIENvb3JkaW5hdGVkIEdyYXBo
aWNzLgotICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+c2Nyb2xsYWJsZUFyZWFTY3JvbGxM
YXllckRpZENoYW5nZSgmbGF5ZXIpOworICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+c2Ny
b2xsYWJsZUFyZWFTY3JvbGxMYXllckRpZENoYW5nZShsYXllcik7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCA3MTE4ZmM3ZjA1
YmFlM2MzYzQ5MDRiYWU3ZTVkM2JkODQ1YTI1MzcwLi40YWEwMWViZTA4OWJjZWRkNTU5MjYzZjA3
M2VjNGYyY2FjZTlmMzM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0x
NzcxLDcgKzE3NzEsNyBAQCBSZWZQdHI8Q2xpZW50UmVjdExpc3Q+IEludGVybmFsczo6bm9uRmFz
dFNjcm9sbGFibGVSZWN0cyhFeGNlcHRpb25Db2RlJiBlYykgY29ucwogICAgIGlmICghcGFnZSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gcGFnZS0+bm9uRmFzdFNjcm9s
bGFibGVSZWN0cyhkb2N1bWVudC0+ZnJhbWUoKSk7CisgICAgcmV0dXJuIHBhZ2UtPm5vbkZhc3RT
Y3JvbGxhYmxlUmVjdHMoKmRvY3VtZW50LT5mcmFtZSgpKTsKIH0KIAogdm9pZCBJbnRlcm5hbHM6
OmdhcmJhZ2VDb2xsZWN0RG9jdW1lbnRSZXNvdXJjZXMoRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Njcm9sbGluZy9SZW1vdGVT
Y3JvbGxpbmdDb29yZGluYXRvci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9TY3JvbGxp
bmcvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaAppbmRleCA1YTUwMWZjMzA1MTg4NjhmNjE5
YjVhMWVjNWVjMWE2YjM4NjJlN2U5Li42MTcxZGRkYTFkNjIxMjI3MjkzMDFlN2EwNGJhYzgzZjAy
MWJjMTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Njcm9sbGluZy9S
ZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvU2Nyb2xsaW5nL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yLmgKQEAgLTYxLDcgKzYxLDcg
QEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgaXNSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRv
cigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICAKICAgICAvLyBTY3JvbGxp
bmdDb29yZGluYXRvcgotICAgIHZpcnR1YWwgYm9vbCBjb29yZGluYXRlc1Njcm9sbGluZ0ZvckZy
YW1lVmlldyhXZWJDb3JlOjpGcmFtZVZpZXcqKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFs
IGJvb2wgY29vcmRpbmF0ZXNTY3JvbGxpbmdGb3JGcmFtZVZpZXcoY29uc3QgV2ViQ29yZTo6RnJh
bWVWaWV3JikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlVHJlZVN0
YXRlQ29tbWl0KCkgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNSdWJiZXJCYW5kSW5Q
cm9ncmVzcygpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9TY3JvbGxpbmcvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3IubW0gYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1Njcm9sbGluZy9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvci5t
bQppbmRleCBhNjgwODgxYzJkYTE3OWQxYzFkY2UzMWNlOTI1YzkxNGUwNDJkZWRhLi5mNzc3Mzk4
MjQ3OGVlYWYzMDg3OWU2ODEzYWQ3ZTc3MmFkMTQwZWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1Njcm9sbGluZy9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvci5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Njcm9sbGluZy9SZW1vdGVTY3JvbGxpbmdD
b29yZGluYXRvci5tbQpAQCAtNjcsOSArNjcsOSBAQCB2b2lkIFJlbW90ZVNjcm9sbGluZ0Nvb3Jk
aW5hdG9yOjpzY2hlZHVsZVRyZWVTdGF0ZUNvbW1pdCgpCiAgICAgbV93ZWJQYWdlLT5kcmF3aW5n
QXJlYSgpLT5zY2hlZHVsZUNvbXBvc2l0aW5nTGF5ZXJGbHVzaCgpOwogfQogCi1ib29sIFJlbW90
ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpjb29yZGluYXRlc1Njcm9sbGluZ0ZvckZyYW1lVmlldyhG
cmFtZVZpZXcqIGZyYW1lVmlldykgY29uc3QKK2Jvb2wgUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0
b3I6OmNvb3JkaW5hdGVzU2Nyb2xsaW5nRm9yRnJhbWVWaWV3KGNvbnN0IEZyYW1lVmlldyYgZnJh
bWVWaWV3KSBjb25zdAogewotICAgIFJlbmRlclZpZXcqIHJlbmRlclZpZXcgPSBmcmFtZVZpZXct
PnJlbmRlclZpZXcoKTsKKyAgICBSZW5kZXJWaWV3KiByZW5kZXJWaWV3ID0gZnJhbWVWaWV3LnJl
bmRlclZpZXcoKTsKICAgICByZXR1cm4gcmVuZGVyVmlldyAmJiByZW5kZXJWaWV3LT51c2VzQ29t
cG9zaXRpbmcoKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249697</attachid>
            <date>2015-03-29 13:41:40 -0700</date>
            <delta_ts>2015-03-29 14:07:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143198-20150329134058.patch</filename>
            <type>text/plain</type>
            <size>73800</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgyMTE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTRhYTRmOGE3Zjk4OTFh
YTY1NDRkZTYzMDNjODgzNzRmYWVkMjJjNS4uMjE3YmY3YmVkYjVhNTdmYjU1YjhjYTU0YjJhYTU5
MGJjOTRmYTE2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk2IEBACisyMDE1LTAzLTI5ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIENvbnZlcnQgYXJn
dW1lbnRzIHRvIFNjcm9sbGluZ0Nvb3JkaW5hdG9yIGZ1bmN0aW9ucyB0byByZWZlcmVuY2VzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDMxOTgKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb252ZXJ0IGFs
bCB0aGUgRnJhbWVWaWV3KiBhbmQgU2Nyb2xsYWJsZUFyZWEqIGFyZ3VtZW50cyB0byBTY3JvbGxp
bmdDb29yZGluYXRvciBmdW5jdGlvbnMgdG8KKyAgICAgICAgcmVmZXJlbmNlcywgYW5kIHVzZSBy
ZWZlcmVuY2VzIGluIGEgZmV3IG90aGVyIHBsYWNlcy4KKworICAgICAgICAqIGRvbS9Eb2N1bWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp3aGVlbEV2ZW50SGFuZGxlckNvdW50Q2hhbmdlZCk6
CisgICAgICAgICogcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbk92ZXJsYXk6OnVwZGF0ZVJlZ2lvbik6CisgICAgICAg
ICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpwcmVw
YXJlRm9yRGV0YWNoKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6YWRkU2xvd1JlcGFp
bnRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpyZW1vdmVTbG93UmVwYWlu
dE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmFkZFZpZXdwb3J0Q29uc3Ry
YWluZWRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpyZW1vdmVWaWV3cG9y
dENvbnN0cmFpbmVkT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6cmVxdWVz
dFNjcm9sbFBvc2l0aW9uVXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6cGVy
Zm9ybVBvc3RMYXlvdXRUYXNrcyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnNjcm9s
bGFibGVBcmVhU2V0Q2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OndoZWVs
RXZlbnQpOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdl
Ojpub25GYXN0U2Nyb2xsYWJsZVJlY3RzKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAg
ICAgKiBwYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZyYW1lVmlld0xheW91dFVw
ZGF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6ZnJh
bWVWaWV3Tm9uRmFzdFNjcm9sbGFibGVSZWdpb25DaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6
OkFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZyYW1lVmlld1Jvb3RMYXllckRpZENoYW5nZSk6
CisgICAgICAgIChXZWJDb3JlOjpBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpyZXF1ZXN0U2Ny
b2xsUG9zaXRpb25VcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNTY3JvbGxpbmdDb29y
ZGluYXRvcjo6dXBkYXRlU2Nyb2xsUG9zaXRpb25BZnRlckFzeW5jU2Nyb2xsKToKKyAgICAgICAg
KFdlYkNvcmU6OkFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNjcm9sbGFibGVBcmVhU2Nyb2xs
YmFyTGF5ZXJEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNTY3JvbGxpbmdDb29y
ZGluYXRvcjo6ZW5zdXJlUm9vdFN0YXRlTm9kZUZvckZyYW1lVmlldyk6CisgICAgICAgIChXZWJD
b3JlOjpBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjp1cGRhdGVNYWluRnJhbWVTY3JvbGxMYXll
clBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6
OnJlY29tcHV0ZVdoZWVsRXZlbnRIYW5kbGVyQ291bnRGb3JGcmFtZVZpZXcpOgorICAgICAgICAq
IHBhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaDoKKyAgICAgICAgKiBw
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxpbmdDb29yZGluYXRvcjo6cGFnZURlc3Ryb3llZCk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxpbmdDb29yZGluYXRvcjo6Y29vcmRpbmF0ZXNTY3JvbGxpbmdGb3JGcmFtZVZpZXcp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmNvbXB1dGVOb25GYXN0
U2Nyb2xsYWJsZVJlZ2lvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRv
cjo6ZnJhbWVWaWV3V2hlZWxFdmVudEhhbmRsZXJDb3VudENoYW5nZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZyYW1lVmlld0hhc1Nsb3dSZXBhaW50T2JqZWN0
c0RpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6ZnJh
bWVWaWV3Rml4ZWRPYmplY3RzRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGlu
Z0Nvb3JkaW5hdG9yOjpzY3JvbGxMYXllckZvclNjcm9sbGFibGVBcmVhKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzY3JvbGxMYXllckZvckZyYW1lVmlldyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6aGVhZGVyTGF5ZXJGb3JGcmFt
ZVZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZvb3Rlckxh
eWVyRm9yRnJhbWVWaWV3KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9y
Ojpjb3VudGVyU2Nyb2xsaW5nTGF5ZXJGb3JGcmFtZVZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsaW5nQ29vcmRpbmF0b3I6Omluc2V0Q2xpcExheWVyRm9yRnJhbWVWaWV3KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpjb250ZW50U2hhZG93TGF5ZXJGb3JG
cmFtZVZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnJvb3RD
b250ZW50TGF5ZXJGb3JGcmFtZVZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29v
cmRpbmF0b3I6OmZyYW1lVmlld1Jvb3RMYXllckRpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxpbmdDb29yZGluYXRvcjo6aGFzVmlzaWJsZVNsb3dSZXBhaW50Vmlld3BvcnRDb25z
dHJhaW5lZE9iamVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6
OnN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxp
bmdDb29yZGluYXRvcjo6dXBkYXRlU3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzZXRGb3JjZVN5bmNocm9ub3VzU2Ny
b2xsTGF5ZXJQb3NpdGlvblVwZGF0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29v
cmRpbmF0b3I6OnNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25TeW5jaHJvbm91c2x5KToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpyZXBsYXlTZXNzaW9uU3Rh
dGVEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnN5
bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29uc0FzVGV4dCk6CisgICAgICAgICogcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaDogQWxpZ24gdGhlIGJpdG1hc2sgZW51bXMgdG8gbWFr
ZSBtaXN0YWtlcworICAgICAgICBlYXNpZXIgdG8gc3BvdC4KKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGluZ0Nvb3JkaW5hdG9yOjpmcmFtZVZpZXdMYXlvdXRVcGRhdGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpmcmFtZVZpZXdOb25GYXN0U2Nyb2xsYWJsZVJl
Z2lvbkNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnJl
cXVlc3RTY3JvbGxQb3NpdGlvblVwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdD
b29yZGluYXRvcjo6aGFuZGxlV2hlZWxFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxp
bmdDb29yZGluYXRvcjo6d2lsbERlc3Ryb3lTY3JvbGxhYmxlQXJlYSk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6c2Nyb2xsYWJsZUFyZWFTY3JvbGxMYXllckRpZENo
YW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6c2Nyb2xsYWJs
ZUFyZWFTY3JvbGxiYXJMYXllckRpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxp
bmdDb29yZGluYXRvcjo6cmVjb21wdXRlV2hlZWxFdmVudEhhbmRsZXJDb3VudEZvckZyYW1lVmll
dyk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ0Nvb3JkaW5hdG9yTWFj
Lmg6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ0Nvb3JkaW5hdG9yTWFj
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWM6OmhhbmRsZVdo
ZWVsRXZlbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMYXllcjo6flJlbmRlckxheWVyKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVy
QmFja2luZzo6dXBkYXRlT3ZlcmZsb3dDb250cm9sc0xheWVycyk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllckNvbXBvc2l0b3I6OnVwZGF0ZUJhY2tpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGF5ZXJDb21wb3NpdG9yOjpoYXNDb29yZGluYXRlZFNjcm9sbGluZyk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnNjcm9sbGluZ0xheWVyRGlkQ2hhbmdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlTGF5ZXJGb3JIZWFk
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVMYXll
ckZvckZvb3Rlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVw
ZGF0ZU92ZXJmbG93Q29udHJvbHNMYXllcnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5
ZXJDb21wb3NpdG9yOjpkZXN0cm95Um9vdExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlU2Nyb2xsQ29vcmRpbmF0aW9uRm9yVGhpc0ZyYW1lKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlU2Nyb2xsQ29v
cmRpbmF0ZWRMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6
OndpbGxSZW1vdmVTY3JvbGxpbmdMYXllcldpdGhCYWNraW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6ZGlkQWRkU2Nyb2xsaW5nTGF5ZXIpOgorICAgICAgICAq
IHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6bm9u
RmFzdFNjcm9sbGFibGVSZWN0cyk6CisKIDIwMTUtMDMtMjggIEVyaWMgQ2FybHNvbiAgPGVyaWMu
Y2FybHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgW01hY10gVXBkYXRlIGZvciBvdXRwdXQgZGV2
aWNlIEFQSSBjaGFuZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBmYTIyZDQ4OGYzYzQ2NWJkY2ExZTFjZjg0NWRl
NzIyMjY1Yjc5MTdiLi5hZGFiNDgyZWY4OTYxNjlmNjU2OTBhNTVlYWI1ZmEzNDBmZTNiODc4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTUtMDMtMjkgIFNpbW9uIEZyYXNlciAgPHNp
bW9uLmZyYXNlckBhcHBsZS5jb20+CisKKyAgICAgICAgQ29udmVydCBhcmd1bWVudHMgdG8gU2Ny
b2xsaW5nQ29vcmRpbmF0b3IgZnVuY3Rpb25zIHRvIHJlZmVyZW5jZXMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzE5OAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENvbnZlcnQgYWxsIHRoZSBGcmFtZVZp
ZXcqIGFuZCBTY3JvbGxhYmxlQXJlYSogYXJndW1lbnRzIHRvIFNjcm9sbGluZ0Nvb3JkaW5hdG9y
IGZ1bmN0aW9ucyB0bworICAgICAgICByZWZlcmVuY2VzLCBhbmQgdXNlIHJlZmVyZW5jZXMgaW4g
YSBmZXcgb3RoZXIgcGxhY2VzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9TY3JvbGxpbmcvUmVt
b3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1Njcm9sbGlu
Zy9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvci5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmNvb3JkaW5hdGVzU2Nyb2xsaW5nRm9yRnJhbWVWaWV3KToK
KwogMjAxNS0wMy0yNyAgR3dhbmcgWW9vbiBId2FuZyAgPHlvb25AaWdhbGlhLmNvbT4KIAogICAg
ICAgICBbVGV4TWFwXSBTZXBlcmF0ZSBCaXRtYXBUZXh0dXJlIHJlbGF0ZWQgY2xhc3NlcyBpbXBs
ZW1lbnRhdGlvbnMgZnJvbSBUZXh0dXJlTWFwcGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRl
eCA0MDRkNTdmOTM2MjMxMDRjYjc5NGYwNjYzZjk5YWE0OWY5ZTFlYTRjLi4zMGNkMmRjN2U2ODEz
OTkwYjRkYjkxMDViYjZhNWIxZWMyN2UzNzhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAg
LTU5OTUsNyArNTk5NSw3IEBAIHN0YXRpYyB2b2lkIHdoZWVsRXZlbnRIYW5kbGVyQ291bnRDaGFu
Z2VkKERvY3VtZW50KiBkb2N1bWVudCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gRklYTUU6
IFdoeSBkb2Vzbid0IHRoaXMgbmVlZCB0byBiZSBjYWxsZWQgaW4gZGlkQmVjb21lQ3VycmVudERv
Y3VtZW50SW5GcmFtZT8KLSAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+ZnJhbWVWaWV3V2hlZWxF
dmVudEhhbmRsZXJDb3VudENoYW5nZWQoZnJhbWVWaWV3KTsKKyAgICBzY3JvbGxpbmdDb29yZGlu
YXRvci0+ZnJhbWVWaWV3V2hlZWxFdmVudEhhbmRsZXJDb3VudENoYW5nZWQoKmZyYW1lVmlldyk7
CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OmRpZEFkZFdoZWVsRXZlbnRIYW5kbGVyKE5vZGUmKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAKaW5kZXggZDQ2MTBjYWU5
Mjc0NzliZGU2MDE0M2MzZWFhNDBhNzlmNzhhZGI4OC4uNzZhMDk2NDczODY2NzJlMjI3YTA3OTM3
NzI2NTczMzRkNWRkYmY2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3Rv
cnlDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRy
b2xsZXIuY3BwCkBAIC0xMzgsNyArMTM4LDcgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6cmVz
dG9yZVNjcm9sbFBvc2l0aW9uQW5kVmlld1N0YXRlKCkKICAgICAgICAgUGFnZSogcGFnZSA9IG1f
ZnJhbWUucGFnZSgpOwogICAgICAgICBpZiAocGFnZSAmJiBtX2ZyYW1lLmlzTWFpbkZyYW1lKCkp
IHsKICAgICAgICAgICAgIGlmIChTY3JvbGxpbmdDb29yZGluYXRvciogc2Nyb2xsaW5nQ29vcmRp
bmF0b3IgPSBwYWdlLT5zY3JvbGxpbmdDb29yZGluYXRvcigpKQotICAgICAgICAgICAgICAgIHNj
cm9sbGluZ0Nvb3JkaW5hdG9yLT5mcmFtZVZpZXdSb290TGF5ZXJEaWRDaGFuZ2Uodmlldyk7Cisg
ICAgICAgICAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPmZyYW1lVmlld1Jvb3RMYXllckRp
ZENoYW5nZSgqdmlldyk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9E
ZWJ1Z1BhZ2VPdmVybGF5cy5jcHAKaW5kZXggMmJhN2ZlZWMzZjg2NjJiMjkxOTc5YzZlOTRlZjg3
YzVlY2Q2ZTEzMC4uMGZhNzg0YmFhZWQ2NzAzMzVkNWVhYzM3ODVkYTUxZDVjY2NkOTczNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAKQEAgLTEyNyw3ICsxMjcs
NyBAQCBib29sIE5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uT3ZlcmxheTo6dXBkYXRlUmVnaW9uKCkK
IAogICAgIGlmIChQYWdlKiBwYWdlID0gbV9mcmFtZS5wYWdlKCkpIHsKICAgICAgICAgaWYgKFNj
cm9sbGluZ0Nvb3JkaW5hdG9yKiBzY3JvbGxpbmdDb29yZGluYXRvciA9IHBhZ2UtPnNjcm9sbGlu
Z0Nvb3JkaW5hdG9yKCkpCi0gICAgICAgICAgICAqcmVnaW9uID0gc2Nyb2xsaW5nQ29vcmRpbmF0
b3ItPmNvbXB1dGVOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbigmbV9mcmFtZSwgSW50UG9pbnQoKSk7
CisgICAgICAgICAgICAqcmVnaW9uID0gc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPmNvbXB1dGVOb25G
YXN0U2Nyb2xsYWJsZVJlZ2lvbihtX2ZyYW1lLCBJbnRQb2ludCgpKTsKICAgICB9CiAKICAgICAv
LyBjb21wdXRlTm9uRmFzdFNjcm9sbGFibGVSZWdpb24oKSBhcHBsaWVzIHRvcENvbnRlbnRJbnNl
dC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZS5jcHAKaW5kZXggOTg4YWQwNmRjYzk0Y2I4MWZkODA0YjFlMTRiOGY3
ODdiZTJhZWVhZi4uMDE4YjA2ZWViMGFjN2Y3ZjgzMTAxOTExMjc1NzgyMjZiZjhmNjA2YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZS5jcHAKQEAgLTc5MSw3ICs3OTEsNyBAQCB2b2lkIEZyYW1lOjp3aWxsRGV0
YWNoUGFnZSgpCiAgICAgICAgIHBhZ2UoKS0+Zm9jdXNDb250cm9sbGVyKCkuc2V0Rm9jdXNlZEZy
YW1lKDApOwogCiAgICAgaWYgKHBhZ2UoKSAmJiBwYWdlKCktPnNjcm9sbGluZ0Nvb3JkaW5hdG9y
KCkgJiYgbV92aWV3KQotICAgICAgICBwYWdlKCktPnNjcm9sbGluZ0Nvb3JkaW5hdG9yKCktPndp
bGxEZXN0cm95U2Nyb2xsYWJsZUFyZWEobV92aWV3LmdldCgpKTsKKyAgICAgICAgcGFnZSgpLT5z
Y3JvbGxpbmdDb29yZGluYXRvcigpLT53aWxsRGVzdHJveVNjcm9sbGFibGVBcmVhKCptX3ZpZXcp
OwogCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIGlmIChXZWJUaHJlYWRDb3VudE9mT2JzZXJ2ZWRD
b250ZW50TW9kaWZpZXJzKCkgPiAwICYmIG1fcGFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNw
cAppbmRleCA5YzY1N2JjMmJlNzI0MDk3YWM5MGNjNmEwYzkxZjJhNDAzNGQ1Nzc5Li43YzlmMDUx
NDk3NTI3OGZhYzg3OTcwMTY1NGI4Y2U0NGY0ZTQyZTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZp
ZXcuY3BwCkBAIC0zNTgsNyArMzU4LDcgQEAgdm9pZCBGcmFtZVZpZXc6OnByZXBhcmVGb3JEZXRh
Y2goKQogCiAgICAgaWYgKGZyYW1lKCkucGFnZSgpKSB7CiAgICAgICAgIGlmIChTY3JvbGxpbmdD
b29yZGluYXRvciogc2Nyb2xsaW5nQ29vcmRpbmF0b3IgPSBmcmFtZSgpLnBhZ2UoKS0+c2Nyb2xs
aW5nQ29vcmRpbmF0b3IoKSkKLSAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT53aWxs
RGVzdHJveVNjcm9sbGFibGVBcmVhKHRoaXMpOworICAgICAgICAgICAgc2Nyb2xsaW5nQ29vcmRp
bmF0b3ItPndpbGxEZXN0cm95U2Nyb2xsYWJsZUFyZWEoKnRoaXMpOwogICAgIH0KIH0KIApAQCAt
MTU0OCw3ICsxNTQ4LDcgQEAgdm9pZCBGcmFtZVZpZXc6OmFkZFNsb3dSZXBhaW50T2JqZWN0KFJl
bmRlckVsZW1lbnQqIG8pCiAKICAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBmcmFtZSgpLnBhZ2Uo
KSkgewogICAgICAgICAgICAgaWYgKFNjcm9sbGluZ0Nvb3JkaW5hdG9yKiBzY3JvbGxpbmdDb29y
ZGluYXRvciA9IHBhZ2UtPnNjcm9sbGluZ0Nvb3JkaW5hdG9yKCkpCi0gICAgICAgICAgICAgICAg
c2Nyb2xsaW5nQ29vcmRpbmF0b3ItPmZyYW1lVmlld0hhc1Nsb3dSZXBhaW50T2JqZWN0c0RpZENo
YW5nZSh0aGlzKTsKKyAgICAgICAgICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+ZnJhbWVW
aWV3SGFzU2xvd1JlcGFpbnRPYmplY3RzRGlkQ2hhbmdlKCp0aGlzKTsKICAgICAgICAgfQogICAg
IH0KIH0KQEAgLTE1NjUsNyArMTU2NSw3IEBAIHZvaWQgRnJhbWVWaWV3OjpyZW1vdmVTbG93UmVw
YWludE9iamVjdChSZW5kZXJFbGVtZW50KiBvKQogCiAgICAgICAgIGlmIChQYWdlKiBwYWdlID0g
ZnJhbWUoKS5wYWdlKCkpIHsKICAgICAgICAgICAgIGlmIChTY3JvbGxpbmdDb29yZGluYXRvciog
c2Nyb2xsaW5nQ29vcmRpbmF0b3IgPSBwYWdlLT5zY3JvbGxpbmdDb29yZGluYXRvcigpKQotICAg
ICAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5mcmFtZVZpZXdIYXNTbG93UmVwYWlu
dE9iamVjdHNEaWRDaGFuZ2UodGhpcyk7CisgICAgICAgICAgICAgICAgc2Nyb2xsaW5nQ29vcmRp
bmF0b3ItPmZyYW1lVmlld0hhc1Nsb3dSZXBhaW50T2JqZWN0c0RpZENoYW5nZSgqdGhpcyk7CiAg
ICAgICAgIH0KICAgICB9CiB9CkBAIC0xNTgyLDcgKzE1ODIsNyBAQCB2b2lkIEZyYW1lVmlldzo6
YWRkVmlld3BvcnRDb25zdHJhaW5lZE9iamVjdChSZW5kZXJFbGVtZW50KiBvYmplY3QpCiAKICAg
ICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBmcmFtZSgpLnBhZ2UoKSkgewogICAgICAgICAgICAgaWYg
KFNjcm9sbGluZ0Nvb3JkaW5hdG9yKiBzY3JvbGxpbmdDb29yZGluYXRvciA9IHBhZ2UtPnNjcm9s
bGluZ0Nvb3JkaW5hdG9yKCkpCi0gICAgICAgICAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3It
PmZyYW1lVmlld0ZpeGVkT2JqZWN0c0RpZENoYW5nZSh0aGlzKTsKKyAgICAgICAgICAgICAgICBz
Y3JvbGxpbmdDb29yZGluYXRvci0+ZnJhbWVWaWV3Rml4ZWRPYmplY3RzRGlkQ2hhbmdlKCp0aGlz
KTsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTE1OTIsNyArMTU5Miw3IEBAIHZvaWQgRnJhbWVW
aWV3OjpyZW1vdmVWaWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0KFJlbmRlckVsZW1lbnQqIG9iamVj
dCkKICAgICBpZiAobV92aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0cyAmJiBtX3ZpZXdwb3J0Q29u
c3RyYWluZWRPYmplY3RzLT5yZW1vdmUob2JqZWN0KSkgewogICAgICAgICBpZiAoUGFnZSogcGFn
ZSA9IGZyYW1lKCkucGFnZSgpKSB7CiAgICAgICAgICAgICBpZiAoU2Nyb2xsaW5nQ29vcmRpbmF0
b3IqIHNjcm9sbGluZ0Nvb3JkaW5hdG9yID0gcGFnZS0+c2Nyb2xsaW5nQ29vcmRpbmF0b3IoKSkK
LSAgICAgICAgICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+ZnJhbWVWaWV3Rml4ZWRPYmpl
Y3RzRGlkQ2hhbmdlKHRoaXMpOworICAgICAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9y
LT5mcmFtZVZpZXdGaXhlZE9iamVjdHNEaWRDaGFuZ2UoKnRoaXMpOwogICAgICAgICB9CiAKICAg
ICAgICAgLy8gRklYTUU6IEluIGFkZEZpeGVkT2JqZWN0KCkgd2Ugb25seSBjYWxsIHRoaXMgaWYg
dGhlcmUncyBhIHBsYXRmb3JtIHdpZGdldCwKQEAgLTIyMzAsNyArMjIzMCw3IEBAIGJvb2wgRnJh
bWVWaWV3OjpyZXF1ZXN0U2Nyb2xsUG9zaXRpb25VcGRhdGUoY29uc3QgSW50UG9pbnQmIHBvc2l0
aW9uKQogI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpIHx8IFVTRShUSUxFRF9CQUNLSU5HX1NU
T1JFKQogICAgIGlmIChQYWdlKiBwYWdlID0gZnJhbWUoKS5wYWdlKCkpIHsKICAgICAgICAgaWYg
KFNjcm9sbGluZ0Nvb3JkaW5hdG9yKiBzY3JvbGxpbmdDb29yZGluYXRvciA9IHBhZ2UtPnNjcm9s
bGluZ0Nvb3JkaW5hdG9yKCkpCi0gICAgICAgICAgICByZXR1cm4gc2Nyb2xsaW5nQ29vcmRpbmF0
b3ItPnJlcXVlc3RTY3JvbGxQb3NpdGlvblVwZGF0ZSh0aGlzLCBwb3NpdGlvbik7CisgICAgICAg
ICAgICByZXR1cm4gc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPnJlcXVlc3RTY3JvbGxQb3NpdGlvblVw
ZGF0ZSgqdGhpcywgcG9zaXRpb24pOwogICAgIH0KICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHBv
c2l0aW9uKTsKQEAgLTI5NjMsNyArMjk2Myw3IEBAIHZvaWQgRnJhbWVWaWV3OjpwZXJmb3JtUG9z
dExheW91dFRhc2tzKCkKIAogICAgIGlmIChhdXRvKiBwYWdlID0gZnJhbWUoKS5wYWdlKCkpIHsK
ICAgICAgICAgaWYgKGF1dG8qIHNjcm9sbGluZ0Nvb3JkaW5hdG9yID0gcGFnZS0+c2Nyb2xsaW5n
Q29vcmRpbmF0b3IoKSkKLSAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5mcmFtZVZp
ZXdMYXlvdXRVcGRhdGVkKHRoaXMpOworICAgICAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3It
PmZyYW1lVmlld0xheW91dFVwZGF0ZWQoKnRoaXMpOwogICAgIH0KIAogICAgIGlmIChSZW5kZXJW
aWV3KiByZW5kZXJWaWV3ID0gdGhpcy0+cmVuZGVyVmlldygpKSB7CkBAIC00Mzc3LDcgKzQzNzcs
NyBAQCB2b2lkIEZyYW1lVmlldzo6c2Nyb2xsYWJsZUFyZWFTZXRDaGFuZ2VkKCkKIHsKICAgICBp
ZiAoYXV0byogcGFnZSA9IGZyYW1lKCkucGFnZSgpKSB7CiAgICAgICAgIGlmIChhdXRvKiBzY3Jv
bGxpbmdDb29yZGluYXRvciA9IHBhZ2UtPnNjcm9sbGluZ0Nvb3JkaW5hdG9yKCkpCi0gICAgICAg
ICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+ZnJhbWVWaWV3Tm9uRmFzdFNjcm9sbGFibGVSZWdp
b25DaGFuZ2VkKHRoaXMpOworICAgICAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPmZyYW1l
Vmlld05vbkZhc3RTY3JvbGxhYmxlUmVnaW9uQ2hhbmdlZCgqdGhpcyk7CiAgICAgfQogfQogCkBA
IC00NDI5LDggKzQ0MjksOCBAQCBib29sIEZyYW1lVmlldzo6d2hlZWxFdmVudChjb25zdCBQbGF0
Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQpCiAjaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykK
ICAgICBpZiAoUGFnZSogcGFnZSA9IGZyYW1lKCkucGFnZSgpKSB7CiAgICAgICAgIGlmIChTY3Jv
bGxpbmdDb29yZGluYXRvciogc2Nyb2xsaW5nQ29vcmRpbmF0b3IgPSBwYWdlLT5zY3JvbGxpbmdD
b29yZGluYXRvcigpKSB7Ci0gICAgICAgICAgICBpZiAoc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPmNv
b3JkaW5hdGVzU2Nyb2xsaW5nRm9yRnJhbWVWaWV3KHRoaXMpKQotICAgICAgICAgICAgICAgIHJl
dHVybiBzY3JvbGxpbmdDb29yZGluYXRvci0+aGFuZGxlV2hlZWxFdmVudCh0aGlzLCB3aGVlbEV2
ZW50KTsKKyAgICAgICAgICAgIGlmIChzY3JvbGxpbmdDb29yZGluYXRvci0+Y29vcmRpbmF0ZXNT
Y3JvbGxpbmdGb3JGcmFtZVZpZXcoKnRoaXMpKQorICAgICAgICAgICAgICAgIHJldHVybiBzY3Jv
bGxpbmdDb29yZGluYXRvci0+aGFuZGxlV2hlZWxFdmVudCgqdGhpcywgd2hlZWxFdmVudCk7CiAg
ICAgICAgIH0KICAgICB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDIyMTUxNTQzOWE0
NjAxMWRiMmI5MGY3ZmQyNmQ1NzFmMjIzZTJiNTQuLmE5NjRiNTgxZDQzOWMyN2QzZWEwM2M3ZDg0
MmM3YjEyNDFhZjhlNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMzY5LDcgKzM2OSw3IEBAIFN0
cmluZyBQYWdlOjpzeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnNBc1RleHQoKQogICAgIHJldHVy
biBTdHJpbmcoKTsKIH0KIAotUmVmPENsaWVudFJlY3RMaXN0PiBQYWdlOjpub25GYXN0U2Nyb2xs
YWJsZVJlY3RzKGNvbnN0IEZyYW1lKiBmcmFtZSkKK1JlZjxDbGllbnRSZWN0TGlzdD4gUGFnZTo6
bm9uRmFzdFNjcm9sbGFibGVSZWN0cyhjb25zdCBGcmFtZSYgZnJhbWUpCiB7CiAgICAgaWYgKERv
Y3VtZW50KiBkb2N1bWVudCA9IG1fbWFpbkZyYW1lLT5kb2N1bWVudCgpKQogICAgICAgICBkb2N1
bWVudC0+dXBkYXRlTGF5b3V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCmluZGV4IDZlNzA1ZjRkZTE4ODU5MjJi
ZWNiNGFmNjZhMjFmMjkzMjliZTdhNGIuLmEyYTBmODQ2Mjk0NzFmZTMwNDg4N2Q1NGVkZWU5MmIz
ZDYzOTA1ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCkBAIC0xOTMsNyArMTkzLDcgQEAgcHVibGljOgogCiAg
ICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4dCgpOwogICAg
IFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnNBc1RleHQo
KTsKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWY8Q2xpZW50UmVjdExpc3Q+IG5vbkZhc3RTY3JvbGxh
YmxlUmVjdHMoY29uc3QgRnJhbWUqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8Q2xpZW50UmVj
dExpc3Q+IG5vbkZhc3RTY3JvbGxhYmxlUmVjdHMoY29uc3QgRnJhbWUmKTsKIAogICAgIFNldHRp
bmdzJiBzZXR0aW5ncygpIGNvbnN0IHsgcmV0dXJuICptX3NldHRpbmdzOyB9CiAgICAgUHJvZ3Jl
c3NUcmFja2VyJiBwcm9ncmVzcygpIGNvbnN0IHsgcmV0dXJuICptX3Byb2dyZXNzOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5n
Q29vcmRpbmF0b3IuY3BwCmluZGV4IGUzMjA2NTgyM2MwMzI1MWZhNDQ3MTQ3MGI4MmM3OWZmN2Qy
ODAyOTkuLjllZDU4YWE5NGM3NjJhMGVmNTNjMjVjMGQ1M2YzMGM1ZGU5ZTIzYTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5n
Q29vcmRpbmF0b3IuY3BwCkBAIC03Myw3ICs3Myw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBzZXRT
dGF0ZVNjcm9sbGluZ05vZGVTbmFwT2Zmc2V0c0FzRmxvYXQoU2Nyb2xsaW5nU3RhdGVTY3JvbGxp
CiAgICAgICAgIG5vZGUuc2V0VmVydGljYWxTbmFwT2Zmc2V0cyhzbmFwT2Zmc2V0c0FzRmxvYXQp
OwogfQogCi12b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZyYW1lVmlld0xheW91dFVw
ZGF0ZWQoRnJhbWVWaWV3KiBmcmFtZVZpZXcpCit2b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0
b3I6OmZyYW1lVmlld0xheW91dFVwZGF0ZWQoRnJhbWVWaWV3JiBmcmFtZVZpZXcpCiB7CiAgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlQobV9wYWdlKTsKQEAgLTg3LDU4ICs4
Nyw1OCBAQCB2b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZyYW1lVmlld0xheW91dFVw
ZGF0ZWQoRnJhbWVWaWV3KiBmcmFtZVZpZXcpCiAgICAgLy8gZnJhbWUgdmlldyB3aG9zZSBsYXlv
dXQgd2FzIHVwZGF0ZWQgaXMgbm90IHRoZSBtYWluIGZyYW1lLgogICAgIC8vIEluIHRoZSBmdXR1
cmUsIHdlIG1heSB3YW50IHRvIGhhdmUgdGhlIGFiaWxpdHkgdG8gc2V0IG5vbi1mYXN0IHNjcm9s
bGluZyByZWdpb25zIGZvciBtb3JlIHRoYW4KICAgICAvLyBqdXN0IHRoZSByb290IG5vZGUuIEJ1
dCByaWdodCBub3csIHRoaXMgY29uY2VwdCBvbmx5IGFwcGxpZXMgdG8gdGhlIHJvb3QuCi0gICAg
bV9zY3JvbGxpbmdTdGF0ZVRyZWUtPnJvb3RTdGF0ZU5vZGUoKS0+c2V0Tm9uRmFzdFNjcm9sbGFi
bGVSZWdpb24oY29tcHV0ZU5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uKCZtX3BhZ2UtPm1haW5GcmFt
ZSgpLCBJbnRQb2ludCgpKSk7CisgICAgbV9zY3JvbGxpbmdTdGF0ZVRyZWUtPnJvb3RTdGF0ZU5v
ZGUoKS0+c2V0Tm9uRmFzdFNjcm9sbGFibGVSZWdpb24oY29tcHV0ZU5vbkZhc3RTY3JvbGxhYmxl
UmVnaW9uKG1fcGFnZS0+bWFpbkZyYW1lKCksIEludFBvaW50KCkpKTsKIAogICAgIGlmICghY29v
cmRpbmF0ZXNTY3JvbGxpbmdGb3JGcmFtZVZpZXcoZnJhbWVWaWV3KSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGUqIG5vZGUgPSBkb3duY2Fz
dDxTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZT4obV9zY3JvbGxpbmdTdGF0ZVRyZWUt
PnN0YXRlTm9kZUZvcklEKGZyYW1lVmlldy0+c2Nyb2xsTGF5ZXJJRCgpKSk7CisgICAgU2Nyb2xs
aW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGUqIG5vZGUgPSBkb3duY2FzdDxTY3JvbGxpbmdTdGF0
ZUZyYW1lU2Nyb2xsaW5nTm9kZT4obV9zY3JvbGxpbmdTdGF0ZVRyZWUtPnN0YXRlTm9kZUZvcklE
KGZyYW1lVmlldy5zY3JvbGxMYXllcklEKCkpKTsKICAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIFNjcm9sbGJhciogdmVydGljYWxTY3JvbGxiYXIgPSBmcmFtZVZpZXctPnZl
cnRpY2FsU2Nyb2xsYmFyKCk7Ci0gICAgU2Nyb2xsYmFyKiBob3Jpem9udGFsU2Nyb2xsYmFyID0g
ZnJhbWVWaWV3LT5ob3Jpem9udGFsU2Nyb2xsYmFyKCk7CisgICAgU2Nyb2xsYmFyKiB2ZXJ0aWNh
bFNjcm9sbGJhciA9IGZyYW1lVmlldy52ZXJ0aWNhbFNjcm9sbGJhcigpOworICAgIFNjcm9sbGJh
ciogaG9yaXpvbnRhbFNjcm9sbGJhciA9IGZyYW1lVmlldy5ob3Jpem9udGFsU2Nyb2xsYmFyKCk7
CiAgICAgbm9kZS0+c2V0U2Nyb2xsYmFyUGFpbnRlcnNGcm9tU2Nyb2xsYmFycyh2ZXJ0aWNhbFNj
cm9sbGJhciwgaG9yaXpvbnRhbFNjcm9sbGJhcik7CiAgICAgCi0gICAgbm9kZS0+c2V0RnJhbWVT
Y2FsZUZhY3RvcihmcmFtZVZpZXctPmZyYW1lKCkuZnJhbWVTY2FsZUZhY3RvcigpKTsKLSAgICBu
b2RlLT5zZXRIZWFkZXJIZWlnaHQoZnJhbWVWaWV3LT5oZWFkZXJIZWlnaHQoKSk7Ci0gICAgbm9k
ZS0+c2V0Rm9vdGVySGVpZ2h0KGZyYW1lVmlldy0+Zm9vdGVySGVpZ2h0KCkpOwotICAgIG5vZGUt
PnNldFRvcENvbnRlbnRJbnNldChmcmFtZVZpZXctPnRvcENvbnRlbnRJbnNldCgpKTsKKyAgICBu
b2RlLT5zZXRGcmFtZVNjYWxlRmFjdG9yKGZyYW1lVmlldy5mcmFtZSgpLmZyYW1lU2NhbGVGYWN0
b3IoKSk7CisgICAgbm9kZS0+c2V0SGVhZGVySGVpZ2h0KGZyYW1lVmlldy5oZWFkZXJIZWlnaHQo
KSk7CisgICAgbm9kZS0+c2V0Rm9vdGVySGVpZ2h0KGZyYW1lVmlldy5mb290ZXJIZWlnaHQoKSk7
CisgICAgbm9kZS0+c2V0VG9wQ29udGVudEluc2V0KGZyYW1lVmlldy50b3BDb250ZW50SW5zZXQo
KSk7CiAKLSAgICBub2RlLT5zZXRTY3JvbGxPcmlnaW4oZnJhbWVWaWV3LT5zY3JvbGxPcmlnaW4o
KSk7Ci0gICAgbm9kZS0+c2V0U2Nyb2xsYWJsZUFyZWFTaXplKGZyYW1lVmlldy0+dmlzaWJsZUNv
bnRlbnRSZWN0KCkuc2l6ZSgpKTsKLSAgICBub2RlLT5zZXRUb3RhbENvbnRlbnRzU2l6ZShmcmFt
ZVZpZXctPnRvdGFsQ29udGVudHNTaXplKCkpOwotICAgIG5vZGUtPnNldFJlYWNoYWJsZUNvbnRl
bnRzU2l6ZShmcmFtZVZpZXctPnRvdGFsQ29udGVudHNTaXplKCkpOworICAgIG5vZGUtPnNldFNj
cm9sbE9yaWdpbihmcmFtZVZpZXcuc2Nyb2xsT3JpZ2luKCkpOworICAgIG5vZGUtPnNldFNjcm9s
bGFibGVBcmVhU2l6ZShmcmFtZVZpZXcudmlzaWJsZUNvbnRlbnRSZWN0KCkuc2l6ZSgpKTsKKyAg
ICBub2RlLT5zZXRUb3RhbENvbnRlbnRzU2l6ZShmcmFtZVZpZXcudG90YWxDb250ZW50c1NpemUo
KSk7CisgICAgbm9kZS0+c2V0UmVhY2hhYmxlQ29udGVudHNTaXplKGZyYW1lVmlldy50b3RhbENv
bnRlbnRzU2l6ZSgpKTsKIAogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCi0gICAgZnJhbWVW
aWV3LT51cGRhdGVTbmFwT2Zmc2V0cygpOwotICAgIGlmIChjb25zdCBWZWN0b3I8TGF5b3V0VW5p
dD4qIGhvcml6b250YWxTbmFwT2Zmc2V0cyA9IGZyYW1lVmlldy0+aG9yaXpvbnRhbFNuYXBPZmZz
ZXRzKCkpCisgICAgZnJhbWVWaWV3LnVwZGF0ZVNuYXBPZmZzZXRzKCk7CisgICAgaWYgKGNvbnN0
IFZlY3RvcjxMYXlvdXRVbml0PiogaG9yaXpvbnRhbFNuYXBPZmZzZXRzID0gZnJhbWVWaWV3Lmhv
cml6b250YWxTbmFwT2Zmc2V0cygpKQogICAgICAgICBzZXRTdGF0ZVNjcm9sbGluZ05vZGVTbmFw
T2Zmc2V0c0FzRmxvYXQoKm5vZGUsIFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCwgKmhvcml6
b250YWxTbmFwT2Zmc2V0cywgbV9wYWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpKTsKIAotICAgIGlm
IChjb25zdCBWZWN0b3I8TGF5b3V0VW5pdD4qIHZlcnRpY2FsU25hcE9mZnNldHMgPSBmcmFtZVZp
ZXctPnZlcnRpY2FsU25hcE9mZnNldHMoKSkKKyAgICBpZiAoY29uc3QgVmVjdG9yPExheW91dFVu
aXQ+KiB2ZXJ0aWNhbFNuYXBPZmZzZXRzID0gZnJhbWVWaWV3LnZlcnRpY2FsU25hcE9mZnNldHMo
KSkKICAgICAgICAgc2V0U3RhdGVTY3JvbGxpbmdOb2RlU25hcE9mZnNldHNBc0Zsb2F0KCpub2Rl
LCBTY3JvbGxFdmVudEF4aXM6OlZlcnRpY2FsLCAqdmVydGljYWxTbmFwT2Zmc2V0cywgbV9wYWdl
LT5kZXZpY2VTY2FsZUZhY3RvcigpKTsKICNlbmRpZgogCiAgICAgU2Nyb2xsYWJsZUFyZWFQYXJh
bWV0ZXJzIHNjcm9sbFBhcmFtZXRlcnM7Ci0gICAgc2Nyb2xsUGFyYW1ldGVycy5ob3Jpem9udGFs
U2Nyb2xsRWxhc3RpY2l0eSA9IGZyYW1lVmlldy0+aG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHko
KTsKLSAgICBzY3JvbGxQYXJhbWV0ZXJzLnZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eSA9IGZyYW1l
Vmlldy0+dmVydGljYWxTY3JvbGxFbGFzdGljaXR5KCk7CisgICAgc2Nyb2xsUGFyYW1ldGVycy5o
b3Jpem9udGFsU2Nyb2xsRWxhc3RpY2l0eSA9IGZyYW1lVmlldy5ob3Jpem9udGFsU2Nyb2xsRWxh
c3RpY2l0eSgpOworICAgIHNjcm9sbFBhcmFtZXRlcnMudmVydGljYWxTY3JvbGxFbGFzdGljaXR5
ID0gZnJhbWVWaWV3LnZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eSgpOwogICAgIHNjcm9sbFBhcmFt
ZXRlcnMuaGFzRW5hYmxlZEhvcml6b250YWxTY3JvbGxiYXIgPSBob3Jpem9udGFsU2Nyb2xsYmFy
ICYmIGhvcml6b250YWxTY3JvbGxiYXItPmVuYWJsZWQoKTsKICAgICBzY3JvbGxQYXJhbWV0ZXJz
Lmhhc0VuYWJsZWRWZXJ0aWNhbFNjcm9sbGJhciA9IHZlcnRpY2FsU2Nyb2xsYmFyICYmIHZlcnRp
Y2FsU2Nyb2xsYmFyLT5lbmFibGVkKCk7Ci0gICAgc2Nyb2xsUGFyYW1ldGVycy5ob3Jpem9udGFs
U2Nyb2xsYmFyTW9kZSA9IGZyYW1lVmlldy0+aG9yaXpvbnRhbFNjcm9sbGJhck1vZGUoKTsKLSAg
ICBzY3JvbGxQYXJhbWV0ZXJzLnZlcnRpY2FsU2Nyb2xsYmFyTW9kZSA9IGZyYW1lVmlldy0+dmVy
dGljYWxTY3JvbGxiYXJNb2RlKCk7CisgICAgc2Nyb2xsUGFyYW1ldGVycy5ob3Jpem9udGFsU2Ny
b2xsYmFyTW9kZSA9IGZyYW1lVmlldy5ob3Jpem9udGFsU2Nyb2xsYmFyTW9kZSgpOworICAgIHNj
cm9sbFBhcmFtZXRlcnMudmVydGljYWxTY3JvbGxiYXJNb2RlID0gZnJhbWVWaWV3LnZlcnRpY2Fs
U2Nyb2xsYmFyTW9kZSgpOwogCiAgICAgbm9kZS0+c2V0U2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJz
KHNjcm9sbFBhcmFtZXRlcnMpOwogfQogCi12b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6
OmZyYW1lVmlld05vbkZhc3RTY3JvbGxhYmxlUmVnaW9uQ2hhbmdlZChGcmFtZVZpZXcqKQordm9p
ZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpmcmFtZVZpZXdOb25GYXN0U2Nyb2xsYWJsZVJl
Z2lvbkNoYW5nZWQoRnJhbWVWaWV3JikKIHsKICAgICBpZiAoIW1fc2Nyb2xsaW5nU3RhdGVUcmVl
LT5yb290U3RhdGVOb2RlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fc2Nyb2xsaW5nU3Rh
dGVUcmVlLT5yb290U3RhdGVOb2RlKCktPnNldE5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uKGNvbXB1
dGVOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbigmbV9wYWdlLT5tYWluRnJhbWUoKSwgSW50UG9pbnQo
KSkpOworICAgIG1fc2Nyb2xsaW5nU3RhdGVUcmVlLT5yb290U3RhdGVOb2RlKCktPnNldE5vbkZh
c3RTY3JvbGxhYmxlUmVnaW9uKGNvbXB1dGVOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbihtX3BhZ2Ut
Pm1haW5GcmFtZSgpLCBJbnRQb2ludCgpKSk7CiB9CiAKLXZvaWQgQXN5bmNTY3JvbGxpbmdDb29y
ZGluYXRvcjo6ZnJhbWVWaWV3Um9vdExheWVyRGlkQ2hhbmdlKEZyYW1lVmlldyogZnJhbWVWaWV3
KQordm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpmcmFtZVZpZXdSb290TGF5ZXJEaWRD
aGFuZ2UoRnJhbWVWaWV3JiBmcmFtZVZpZXcpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKICAgICBBU1NFUlQobV9wYWdlKTsKQEAgLTE0OCw3ICsxNDgsNyBAQCB2b2lkIEFzeW5jU2Ny
b2xsaW5nQ29vcmRpbmF0b3I6OmZyYW1lVmlld1Jvb3RMYXllckRpZENoYW5nZShGcmFtZVZpZXcq
IGZyYW1lVmlldwogICAgIAogICAgIC8vIEZJWE1FOiBJbiBzb21lIG5hdmlnYXRpb24gc2NlbmFy
aW9zLCB0aGUgRnJhbWVWaWV3IGhhcyBubyBSZW5kZXJWaWV3IG9yIHRoYXQgUmVuZGVyVmlldyBo
YXMgbm90IGJlZW4gY29tcG9zaXRlZC4KICAgICAvLyBUaGlzIG5lZWRzIGNsZWFuaW5nIHVwOiBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMyNzI0Ci0gICAgaWYgKCFm
cmFtZVZpZXctPnNjcm9sbExheWVySUQoKSkKKyAgICBpZiAoIWZyYW1lVmlldy5zY3JvbGxMYXll
cklEKCkpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICAvLyBJZiB0aGUgcm9vdCBsYXllciBk
b2VzIG5vdCBoYXZlIGEgU2Nyb2xsaW5nU3RhdGVOb2RlLCB0aGVuIHdlIHNob3VsZCBjcmVhdGUg
b25lLgpAQCAtMTU3LDcgKzE1Nyw3IEBAIHZvaWQgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6
ZnJhbWVWaWV3Um9vdExheWVyRGlkQ2hhbmdlKEZyYW1lVmlldyogZnJhbWVWaWV3CiAKICAgICBT
Y3JvbGxpbmdDb29yZGluYXRvcjo6ZnJhbWVWaWV3Um9vdExheWVyRGlkQ2hhbmdlKGZyYW1lVmll
dyk7CiAKLSAgICBTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZSogbm9kZSA9IGRvd25j
YXN0PFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlPihtX3Njcm9sbGluZ1N0YXRlVHJl
ZS0+c3RhdGVOb2RlRm9ySUQoZnJhbWVWaWV3LT5zY3JvbGxMYXllcklEKCkpKTsKKyAgICBTY3Jv
bGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZSogbm9kZSA9IGRvd25jYXN0PFNjcm9sbGluZ1N0
YXRlRnJhbWVTY3JvbGxpbmdOb2RlPihtX3Njcm9sbGluZ1N0YXRlVHJlZS0+c3RhdGVOb2RlRm9y
SUQoZnJhbWVWaWV3LnNjcm9sbExheWVySUQoKSkpOwogICAgIG5vZGUtPnNldExheWVyKHNjcm9s
bExheWVyRm9yRnJhbWVWaWV3KGZyYW1lVmlldykpOwogICAgIG5vZGUtPnNldFNjcm9sbGVkQ29u
dGVudHNMYXllcihyb290Q29udGVudExheWVyRm9yRnJhbWVWaWV3KGZyYW1lVmlldykpOwogICAg
IG5vZGUtPnNldENvdW50ZXJTY3JvbGxpbmdMYXllcihjb3VudGVyU2Nyb2xsaW5nTGF5ZXJGb3JG
cmFtZVZpZXcoZnJhbWVWaWV3KSk7CkBAIC0xNjUsMTAgKzE2NSwxMCBAQCB2b2lkIEFzeW5jU2Ny
b2xsaW5nQ29vcmRpbmF0b3I6OmZyYW1lVmlld1Jvb3RMYXllckRpZENoYW5nZShGcmFtZVZpZXcq
IGZyYW1lVmlldwogICAgIG5vZGUtPnNldENvbnRlbnRTaGFkb3dMYXllcihjb250ZW50U2hhZG93
TGF5ZXJGb3JGcmFtZVZpZXcoZnJhbWVWaWV3KSk7CiAgICAgbm9kZS0+c2V0SGVhZGVyTGF5ZXIo
aGVhZGVyTGF5ZXJGb3JGcmFtZVZpZXcoZnJhbWVWaWV3KSk7CiAgICAgbm9kZS0+c2V0Rm9vdGVy
TGF5ZXIoZm9vdGVyTGF5ZXJGb3JGcmFtZVZpZXcoZnJhbWVWaWV3KSk7Ci0gICAgbm9kZS0+c2V0
U2Nyb2xsQmVoYXZpb3JGb3JGaXhlZEVsZW1lbnRzKGZyYW1lVmlldy0+c2Nyb2xsQmVoYXZpb3JG
b3JGaXhlZEVsZW1lbnRzKCkpOworICAgIG5vZGUtPnNldFNjcm9sbEJlaGF2aW9yRm9yRml4ZWRF
bGVtZW50cyhmcmFtZVZpZXcuc2Nyb2xsQmVoYXZpb3JGb3JGaXhlZEVsZW1lbnRzKCkpOwogfQog
Ci1ib29sIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnJlcXVlc3RTY3JvbGxQb3NpdGlvblVw
ZGF0ZShGcmFtZVZpZXcqIGZyYW1lVmlldywgY29uc3QgSW50UG9pbnQmIHNjcm9sbFBvc2l0aW9u
KQorYm9vbCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpyZXF1ZXN0U2Nyb2xsUG9zaXRpb25V
cGRhdGUoRnJhbWVWaWV3JiBmcmFtZVZpZXcsIGNvbnN0IEludFBvaW50JiBzY3JvbGxQb3NpdGlv
bikKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VSVChtX3BhZ2UpOwpA
QCAtMTc2LDE2ICsxNzYsMTYgQEAgYm9vbCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpyZXF1
ZXN0U2Nyb2xsUG9zaXRpb25VcGRhdGUoRnJhbWVWaWV3KiBmcmFtZVZpZXcKICAgICBpZiAoIWNv
b3JkaW5hdGVzU2Nyb2xsaW5nRm9yRnJhbWVWaWV3KGZyYW1lVmlldykpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIGJvb2wgaXNQcm9ncmFtbWF0aWNTY3JvbGwgPSBmcmFtZVZpZXctPmlu
UHJvZ3JhbW1hdGljU2Nyb2xsKCk7Ci0gICAgaWYgKGlzUHJvZ3JhbW1hdGljU2Nyb2xsIHx8IGZy
YW1lVmlldy0+ZnJhbWUoKS5kb2N1bWVudCgpLT5pblBhZ2VDYWNoZSgpKQotICAgICAgICB1cGRh
dGVTY3JvbGxQb3NpdGlvbkFmdGVyQXN5bmNTY3JvbGwoZnJhbWVWaWV3LT5zY3JvbGxMYXllcklE
KCksIHNjcm9sbFBvc2l0aW9uLCBpc1Byb2dyYW1tYXRpY1Njcm9sbCwgU2V0U2Nyb2xsaW5nTGF5
ZXJQb3NpdGlvbik7CisgICAgYm9vbCBpc1Byb2dyYW1tYXRpY1Njcm9sbCA9IGZyYW1lVmlldy5p
blByb2dyYW1tYXRpY1Njcm9sbCgpOworICAgIGlmIChpc1Byb2dyYW1tYXRpY1Njcm9sbCB8fCBm
cmFtZVZpZXcuZnJhbWUoKS5kb2N1bWVudCgpLT5pblBhZ2VDYWNoZSgpKQorICAgICAgICB1cGRh
dGVTY3JvbGxQb3NpdGlvbkFmdGVyQXN5bmNTY3JvbGwoZnJhbWVWaWV3LnNjcm9sbExheWVySUQo
KSwgc2Nyb2xsUG9zaXRpb24sIGlzUHJvZ3JhbW1hdGljU2Nyb2xsLCBTZXRTY3JvbGxpbmdMYXll
clBvc2l0aW9uKTsKIAogICAgIC8vIElmIHRoaXMgZnJhbWUgdmlldydzIGRvY3VtZW50IGlzIGJl
aW5nIHB1dCBpbnRvIHRoZSBwYWdlIGNhY2hlLCB3ZSBkb24ndCB3YW50IHRvIHVwZGF0ZSBvdXIK
ICAgICAvLyBtYWluIGZyYW1lIHNjcm9sbCBwb3NpdGlvbi4gSnVzdCBsZXQgdGhlIEZyYW1lVmll
dyB0aGluayB0aGF0IHdlIGRpZC4KLSAgICBpZiAoZnJhbWVWaWV3LT5mcmFtZSgpLmRvY3VtZW50
KCktPmluUGFnZUNhY2hlKCkpCisgICAgaWYgKGZyYW1lVmlldy5mcmFtZSgpLmRvY3VtZW50KCkt
PmluUGFnZUNhY2hlKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgU2Nyb2xsaW5nU3Rh
dGVTY3JvbGxpbmdOb2RlKiBzdGF0ZU5vZGUgPSBkb3duY2FzdDxTY3JvbGxpbmdTdGF0ZVNjcm9s
bGluZ05vZGU+KG1fc2Nyb2xsaW5nU3RhdGVUcmVlLT5zdGF0ZU5vZGVGb3JJRChmcmFtZVZpZXct
PnNjcm9sbExheWVySUQoKSkpOworICAgIFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZSogc3Rh
dGVOb2RlID0gZG93bmNhc3Q8U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlPihtX3Njcm9sbGlu
Z1N0YXRlVHJlZS0+c3RhdGVOb2RlRm9ySUQoZnJhbWVWaWV3LnNjcm9sbExheWVySUQoKSkpOwog
ICAgIGlmICghc3RhdGVOb2RlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTI2MiwxOSAr
MjYyLDIxIEBAIHZvaWQgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6dXBkYXRlU2Nyb2xsUG9z
aXRpb25BZnRlckFzeW5jU2Nyb2xsKFNjcm9sbGluZ05vCiAgICAgaWYgKCFtX3BhZ2UpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0gZnJhbWVWaWV3Rm9yU2Ny
b2xsaW5nTm9kZShzY3JvbGxpbmdOb2RlSUQpOwotICAgIGlmICghZnJhbWVWaWV3KQorICAgIEZy
YW1lVmlldyogZnJhbWVWaWV3UHRyID0gZnJhbWVWaWV3Rm9yU2Nyb2xsaW5nTm9kZShzY3JvbGxp
bmdOb2RlSUQpOworICAgIGlmICghZnJhbWVWaWV3UHRyKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBpZiAoc2Nyb2xsaW5nTm9kZUlEID09IGZyYW1lVmlldy0+c2Nyb2xsTGF5ZXJJRCgpKSB7Ci0g
ICAgICAgIGJvb2wgb2xkUHJvZ3JhbW1hdGljU2Nyb2xsID0gZnJhbWVWaWV3LT5pblByb2dyYW1t
YXRpY1Njcm9sbCgpOwotICAgICAgICBmcmFtZVZpZXctPnNldEluUHJvZ3JhbW1hdGljU2Nyb2xs
KHByb2dyYW1tYXRpY1Njcm9sbCk7CisgICAgRnJhbWVWaWV3JiBmcmFtZVZpZXcgPSAqZnJhbWVW
aWV3UHRyOworCisgICAgaWYgKHNjcm9sbGluZ05vZGVJRCA9PSBmcmFtZVZpZXcuc2Nyb2xsTGF5
ZXJJRCgpKSB7CisgICAgICAgIGJvb2wgb2xkUHJvZ3JhbW1hdGljU2Nyb2xsID0gZnJhbWVWaWV3
LmluUHJvZ3JhbW1hdGljU2Nyb2xsKCk7CisgICAgICAgIGZyYW1lVmlldy5zZXRJblByb2dyYW1t
YXRpY1Njcm9sbChwcm9ncmFtbWF0aWNTY3JvbGwpOwogCi0gICAgICAgIGZyYW1lVmlldy0+c2V0
Q29uc3RyYWluc1Njcm9sbGluZ1RvQ29udGVudEVkZ2UoZmFsc2UpOwotICAgICAgICBmcmFtZVZp
ZXctPm5vdGlmeVNjcm9sbFBvc2l0aW9uQ2hhbmdlZChyb3VuZGVkSW50UG9pbnQoc2Nyb2xsUG9z
aXRpb24pKTsKLSAgICAgICAgZnJhbWVWaWV3LT5zZXRDb25zdHJhaW5zU2Nyb2xsaW5nVG9Db250
ZW50RWRnZSh0cnVlKTsKKyAgICAgICAgZnJhbWVWaWV3LnNldENvbnN0cmFpbnNTY3JvbGxpbmdU
b0NvbnRlbnRFZGdlKGZhbHNlKTsKKyAgICAgICAgZnJhbWVWaWV3Lm5vdGlmeVNjcm9sbFBvc2l0
aW9uQ2hhbmdlZChyb3VuZGVkSW50UG9pbnQoc2Nyb2xsUG9zaXRpb24pKTsKKyAgICAgICAgZnJh
bWVWaWV3LnNldENvbnN0cmFpbnNTY3JvbGxpbmdUb0NvbnRlbnRFZGdlKHRydWUpOwogCi0gICAg
ICAgIGZyYW1lVmlldy0+c2V0SW5Qcm9ncmFtbWF0aWNTY3JvbGwob2xkUHJvZ3JhbW1hdGljU2Ny
b2xsKTsKKyAgICAgICAgZnJhbWVWaWV3LnNldEluUHJvZ3JhbW1hdGljU2Nyb2xsKG9sZFByb2dy
YW1tYXRpY1Njcm9sbCk7CiAKICAgICAgICAgaWYgKEdyYXBoaWNzTGF5ZXIqIHNjcm9sbExheWVy
ID0gc2Nyb2xsTGF5ZXJGb3JGcmFtZVZpZXcoZnJhbWVWaWV3KSkgewogICAgICAgICAgICAgR3Jh
cGhpY3NMYXllciogY291bnRlclNjcm9sbGluZ0xheWVyID0gY291bnRlclNjcm9sbGluZ0xheWVy
Rm9yRnJhbWVWaWV3KGZyYW1lVmlldyk7CkBAIC0yODMsMTggKzI4NSwxOCBAQCB2b2lkIEFzeW5j
U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnVwZGF0ZVNjcm9sbFBvc2l0aW9uQWZ0ZXJBc3luY1Njcm9s
bChTY3JvbGxpbmdObwogICAgICAgICAgICAgR3JhcGhpY3NMYXllciogc2Nyb2xsZWRDb250ZW50
c0xheWVyID0gcm9vdENvbnRlbnRMYXllckZvckZyYW1lVmlldyhmcmFtZVZpZXcpOwogICAgICAg
ICAgICAgR3JhcGhpY3NMYXllciogaGVhZGVyTGF5ZXIgPSBoZWFkZXJMYXllckZvckZyYW1lVmll
dyhmcmFtZVZpZXcpOwogICAgICAgICAgICAgR3JhcGhpY3NMYXllciogZm9vdGVyTGF5ZXIgPSBm
b290ZXJMYXllckZvckZyYW1lVmlldyhmcmFtZVZpZXcpOwotICAgICAgICAgICAgTGF5b3V0U2l6
ZSBzY3JvbGxPZmZzZXRGb3JGaXhlZCA9IGZyYW1lVmlldy0+c2Nyb2xsT2Zmc2V0Rm9yRml4ZWRQ
b3NpdGlvbigpOworICAgICAgICAgICAgTGF5b3V0U2l6ZSBzY3JvbGxPZmZzZXRGb3JGaXhlZCA9
IGZyYW1lVmlldy5zY3JvbGxPZmZzZXRGb3JGaXhlZFBvc2l0aW9uKCk7CiAKLSAgICAgICAgICAg
IGZsb2F0IHRvcENvbnRlbnRJbnNldCA9IGZyYW1lVmlldy0+dG9wQ29udGVudEluc2V0KCk7Cisg
ICAgICAgICAgICBmbG9hdCB0b3BDb250ZW50SW5zZXQgPSBmcmFtZVZpZXcudG9wQ29udGVudElu
c2V0KCk7CiAgICAgICAgICAgICBGbG9hdFBvaW50IHBvc2l0aW9uRm9ySW5zZXRDbGlwTGF5ZXIg
PSBGbG9hdFBvaW50KDAsIEZyYW1lVmlldzo6eVBvc2l0aW9uRm9ySW5zZXRDbGlwTGF5ZXIoc2Ny
b2xsUG9zaXRpb24sIHRvcENvbnRlbnRJbnNldCkpOwogICAgICAgICAgICAgRmxvYXRQb2ludCBw
b3NpdGlvbkZvckNvbnRlbnRzTGF5ZXIgPSBGbG9hdFBvaW50KHNjcm9sbGVkQ29udGVudHNMYXll
ci0+cG9zaXRpb24oKS54KCksCi0gICAgICAgICAgICAgICAgRnJhbWVWaWV3Ojp5UG9zaXRpb25G
b3JSb290Q29udGVudExheWVyKHNjcm9sbFBvc2l0aW9uLCB0b3BDb250ZW50SW5zZXQsIGZyYW1l
Vmlldy0+aGVhZGVySGVpZ2h0KCkpKTsKKyAgICAgICAgICAgICAgICBGcmFtZVZpZXc6OnlQb3Np
dGlvbkZvclJvb3RDb250ZW50TGF5ZXIoc2Nyb2xsUG9zaXRpb24sIHRvcENvbnRlbnRJbnNldCwg
ZnJhbWVWaWV3LmhlYWRlckhlaWdodCgpKSk7CiAgICAgICAgICAgICBGbG9hdFBvaW50IHBvc2l0
aW9uRm9ySGVhZGVyTGF5ZXIgPSBGbG9hdFBvaW50KHNjcm9sbE9mZnNldEZvckZpeGVkLndpZHRo
KCksIEZyYW1lVmlldzo6eVBvc2l0aW9uRm9ySGVhZGVyTGF5ZXIoc2Nyb2xsUG9zaXRpb24sIHRv
cENvbnRlbnRJbnNldCkpOwogICAgICAgICAgICAgRmxvYXRQb2ludCBwb3NpdGlvbkZvckZvb3Rl
ckxheWVyID0gRmxvYXRQb2ludChzY3JvbGxPZmZzZXRGb3JGaXhlZC53aWR0aCgpLAotICAgICAg
ICAgICAgICAgIEZyYW1lVmlldzo6eVBvc2l0aW9uRm9yRm9vdGVyTGF5ZXIoc2Nyb2xsUG9zaXRp
b24sIHRvcENvbnRlbnRJbnNldCwgZnJhbWVWaWV3LT50b3RhbENvbnRlbnRzU2l6ZSgpLmhlaWdo
dCgpLCBmcmFtZVZpZXctPmZvb3RlckhlaWdodCgpKSk7CisgICAgICAgICAgICAgICAgRnJhbWVW
aWV3Ojp5UG9zaXRpb25Gb3JGb290ZXJMYXllcihzY3JvbGxQb3NpdGlvbiwgdG9wQ29udGVudElu
c2V0LCBmcmFtZVZpZXcudG90YWxDb250ZW50c1NpemUoKS5oZWlnaHQoKSwgZnJhbWVWaWV3LmZv
b3RlckhlaWdodCgpKSk7CiAKICAgICAgICAgICAgIGlmIChwcm9ncmFtbWF0aWNTY3JvbGwgfHwg
c2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbiA9PSBTZXRTY3JvbGxpbmdMYXllclBvc2l0aW9u
KSB7Ci0gICAgICAgICAgICAgICAgc2Nyb2xsTGF5ZXItPnNldFBvc2l0aW9uKC1mcmFtZVZpZXct
PnNjcm9sbFBvc2l0aW9uKCkpOworICAgICAgICAgICAgICAgIHNjcm9sbExheWVyLT5zZXRQb3Np
dGlvbigtZnJhbWVWaWV3LnNjcm9sbFBvc2l0aW9uKCkpOwogICAgICAgICAgICAgICAgIGlmIChj
b3VudGVyU2Nyb2xsaW5nTGF5ZXIpCiAgICAgICAgICAgICAgICAgICAgIGNvdW50ZXJTY3JvbGxp
bmdMYXllci0+c2V0UG9zaXRpb24odG9MYXlvdXRQb2ludChzY3JvbGxPZmZzZXRGb3JGaXhlZCkp
OwogICAgICAgICAgICAgICAgIGlmIChpbnNldENsaXBMYXllcikKQEAgLTMwOCw3ICszMTAsNyBA
QCB2b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnVwZGF0ZVNjcm9sbFBvc2l0aW9uQWZ0
ZXJBc3luY1Njcm9sbChTY3JvbGxpbmdObwogICAgICAgICAgICAgICAgIGlmIChmb290ZXJMYXll
cikKICAgICAgICAgICAgICAgICAgICAgZm9vdGVyTGF5ZXItPnNldFBvc2l0aW9uKHBvc2l0aW9u
Rm9yRm9vdGVyTGF5ZXIpOwogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBz
Y3JvbGxMYXllci0+c3luY1Bvc2l0aW9uKC1mcmFtZVZpZXctPnNjcm9sbFBvc2l0aW9uKCkpOwor
ICAgICAgICAgICAgICAgIHNjcm9sbExheWVyLT5zeW5jUG9zaXRpb24oLWZyYW1lVmlldy5zY3Jv
bGxQb3NpdGlvbigpKTsKICAgICAgICAgICAgICAgICBpZiAoY291bnRlclNjcm9sbGluZ0xheWVy
KQogICAgICAgICAgICAgICAgICAgICBjb3VudGVyU2Nyb2xsaW5nTGF5ZXItPnN5bmNQb3NpdGlv
bih0b0xheW91dFBvaW50KHNjcm9sbE9mZnNldEZvckZpeGVkKSk7CiAgICAgICAgICAgICAgICAg
aWYgKGluc2V0Q2xpcExheWVyKQpAQCAtMzIyLDcgKzMyNCw3IEBAIHZvaWQgQXN5bmNTY3JvbGxp
bmdDb29yZGluYXRvcjo6dXBkYXRlU2Nyb2xsUG9zaXRpb25BZnRlckFzeW5jU2Nyb2xsKFNjcm9s
bGluZ05vCiAgICAgICAgICAgICAgICAgaWYgKGZvb3RlckxheWVyKQogICAgICAgICAgICAgICAg
ICAgICBmb290ZXJMYXllci0+c3luY1Bvc2l0aW9uKHBvc2l0aW9uRm9yRm9vdGVyTGF5ZXIpOwog
Ci0gICAgICAgICAgICAgICAgTGF5b3V0UmVjdCB2aWV3cG9ydFJlY3QgPSBmcmFtZVZpZXctPnZp
ZXdwb3J0Q29uc3RyYWluZWRWaXNpYmxlQ29udGVudFJlY3QoKTsKKyAgICAgICAgICAgICAgICBM
YXlvdXRSZWN0IHZpZXdwb3J0UmVjdCA9IGZyYW1lVmlldy52aWV3cG9ydENvbnN0cmFpbmVkVmlz
aWJsZUNvbnRlbnRSZWN0KCk7CiAgICAgICAgICAgICAgICAgc3luY0NoaWxkUG9zaXRpb25zKHZp
ZXdwb3J0UmVjdCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTMzMSw3ICszMzMsNyBA
QCB2b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnVwZGF0ZVNjcm9sbFBvc2l0aW9uQWZ0
ZXJBc3luY1Njcm9sbChTY3JvbGxpbmdObwogICAgIH0KIAogICAgIC8vIE92ZXJmbG93LXNjcm9s
bCBhcmVhLgotICAgIGlmIChTY3JvbGxhYmxlQXJlYSogc2Nyb2xsYWJsZUFyZWEgPSBmcmFtZVZp
ZXctPnNjcm9sbGFibGVBcmVhRm9yU2Nyb2xsTGF5ZXJJRChzY3JvbGxpbmdOb2RlSUQpKSB7Cisg
ICAgaWYgKFNjcm9sbGFibGVBcmVhKiBzY3JvbGxhYmxlQXJlYSA9IGZyYW1lVmlldy5zY3JvbGxh
YmxlQXJlYUZvclNjcm9sbExheWVySUQoc2Nyb2xsaW5nTm9kZUlEKSkgewogICAgICAgICBzY3Jv
bGxhYmxlQXJlYS0+c2V0SXNVc2VyU2Nyb2xsKHNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb24g
PT0gU3luY1Njcm9sbGluZ0xheWVyUG9zaXRpb24pOwogICAgICAgICBzY3JvbGxhYmxlQXJlYS0+
c2Nyb2xsVG9PZmZzZXRXaXRob3V0QW5pbWF0aW9uKHNjcm9sbFBvc2l0aW9uKTsKICAgICAgICAg
c2Nyb2xsYWJsZUFyZWEtPnNldElzVXNlclNjcm9sbChmYWxzZSk7CkBAIC0zNDAsMTggKzM0Miwx
OCBAQCB2b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnVwZGF0ZVNjcm9sbFBvc2l0aW9u
QWZ0ZXJBc3luY1Njcm9sbChTY3JvbGxpbmdObwogICAgIH0KIH0KIAotdm9pZCBBc3luY1Njcm9s
bGluZ0Nvb3JkaW5hdG9yOjpzY3JvbGxhYmxlQXJlYVNjcm9sbGJhckxheWVyRGlkQ2hhbmdlKFNj
cm9sbGFibGVBcmVhKiBzY3JvbGxhYmxlQXJlYSwgU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50
YXRpb24pCit2b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNjcm9sbGFibGVBcmVhU2Ny
b2xsYmFyTGF5ZXJEaWRDaGFuZ2UoU2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFibGVBcmVhLCBTY3Jv
bGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOwogICAgIEFTU0VSVChtX3BhZ2UpOwogCi0gICAgaWYgKHNjcm9sbGFibGVBcmVhICE9IHN0
YXRpY19jYXN0PFNjcm9sbGFibGVBcmVhKj4obV9wYWdlLT5tYWluRnJhbWUoKS52aWV3KCkpKQor
ICAgIGlmICgmc2Nyb2xsYWJsZUFyZWEgIT0gc3RhdGljX2Nhc3Q8U2Nyb2xsYWJsZUFyZWEqPiht
X3BhZ2UtPm1haW5GcmFtZSgpLnZpZXcoKSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChv
cmllbnRhdGlvbiA9PSBWZXJ0aWNhbFNjcm9sbGJhcikKLSAgICAgICAgc2Nyb2xsYWJsZUFyZWEt
PnZlcnRpY2FsU2Nyb2xsYmFyTGF5ZXJEaWRDaGFuZ2UoKTsKKyAgICAgICAgc2Nyb2xsYWJsZUFy
ZWEudmVydGljYWxTY3JvbGxiYXJMYXllckRpZENoYW5nZSgpOwogICAgIGVsc2UKLSAgICAgICAg
c2Nyb2xsYWJsZUFyZWEtPmhvcml6b250YWxTY3JvbGxiYXJMYXllckRpZENoYW5nZSgpOworICAg
ICAgICBzY3JvbGxhYmxlQXJlYS5ob3Jpem9udGFsU2Nyb2xsYmFyTGF5ZXJEaWRDaGFuZ2UoKTsK
IH0KIAogU2Nyb2xsaW5nTm9kZUlEIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmF0dGFjaFRv
U3RhdGVUcmVlKFNjcm9sbGluZ05vZGVUeXBlIG5vZGVUeXBlLCBTY3JvbGxpbmdOb2RlSUQgbmV3
Tm9kZUlELCBTY3JvbGxpbmdOb2RlSUQgcGFyZW50SUQpCkBAIC0zODMsMTAgKzM4NSwxMCBAQCB2
b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnN5bmNDaGlsZFBvc2l0aW9ucyhjb25zdCBM
YXlvdXRSZWN0JiB2aWV3cG9ydFJlYwogICAgICAgICBjaGlsZC0+c3luY0xheWVyUG9zaXRpb25G
b3JWaWV3cG9ydFJlY3Qodmlld3BvcnRSZWN0KTsKIH0KIAotdm9pZCBBc3luY1Njcm9sbGluZ0Nv
b3JkaW5hdG9yOjplbnN1cmVSb290U3RhdGVOb2RlRm9yRnJhbWVWaWV3KEZyYW1lVmlldyogZnJh
bWVWaWV3KQordm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjplbnN1cmVSb290U3RhdGVO
b2RlRm9yRnJhbWVWaWV3KEZyYW1lVmlldyYgZnJhbWVWaWV3KQogewotICAgIEFTU0VSVChmcmFt
ZVZpZXctPnNjcm9sbExheWVySUQoKSk7Ci0gICAgYXR0YWNoVG9TdGF0ZVRyZWUoRnJhbWVTY3Jv
bGxpbmdOb2RlLCBmcmFtZVZpZXctPnNjcm9sbExheWVySUQoKSwgMCk7CisgICAgQVNTRVJUKGZy
YW1lVmlldy5zY3JvbGxMYXllcklEKCkpOworICAgIGF0dGFjaFRvU3RhdGVUcmVlKEZyYW1lU2Ny
b2xsaW5nTm9kZSwgZnJhbWVWaWV3LnNjcm9sbExheWVySUQoKSwgMCk7CiB9CiAKIHZvaWQgQXN5
bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6dXBkYXRlRnJhbWVTY3JvbGxpbmdOb2RlKFNjcm9sbGlu
Z05vZGVJRCBub2RlSUQsIEdyYXBoaWNzTGF5ZXIqIGxheWVyLCBHcmFwaGljc0xheWVyKiBzY3Jv
bGxlZENvbnRlbnRzTGF5ZXIsIEdyYXBoaWNzTGF5ZXIqIGNvdW50ZXJTY3JvbGxpbmdMYXllciwg
R3JhcGhpY3NMYXllciogaW5zZXRDbGlwTGF5ZXIsIGNvbnN0IFNjcm9sbGluZ0dlb21ldHJ5KiBz
Y3JvbGxpbmdHZW9tZXRyeSkKQEAgLTQ4MSwxMyArNDgzLDEzIEBAIHZvaWQgQXN5bmNTY3JvbGxp
bmdDb29yZGluYXRvcjo6dXBkYXRlTWFpbkZyYW1lU2Nyb2xsTGF5ZXJQb3NpdGlvbigpCiAgICAg
aWYgKCFmcmFtZVZpZXcpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChHcmFwaGljc0xheWVy
KiBzY3JvbGxMYXllciA9IHNjcm9sbExheWVyRm9yRnJhbWVWaWV3KGZyYW1lVmlldykpCisgICAg
aWYgKEdyYXBoaWNzTGF5ZXIqIHNjcm9sbExheWVyID0gc2Nyb2xsTGF5ZXJGb3JGcmFtZVZpZXco
KmZyYW1lVmlldykpCiAgICAgICAgIHNjcm9sbExheWVyLT5zZXRQb3NpdGlvbigtZnJhbWVWaWV3
LT5zY3JvbGxQb3NpdGlvbigpKTsKIH0KIAotdm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9y
OjpyZWNvbXB1dGVXaGVlbEV2ZW50SGFuZGxlckNvdW50Rm9yRnJhbWVWaWV3KEZyYW1lVmlldyog
ZnJhbWVWaWV3KQordm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpyZWNvbXB1dGVXaGVl
bEV2ZW50SGFuZGxlckNvdW50Rm9yRnJhbWVWaWV3KEZyYW1lVmlldyYgZnJhbWVWaWV3KQogewot
ICAgIFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlKiBub2RlID0gZG93bmNhc3Q8U2Ny
b2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU+KG1fc2Nyb2xsaW5nU3RhdGVUcmVlLT5zdGF0
ZU5vZGVGb3JJRChmcmFtZVZpZXctPnNjcm9sbExheWVySUQoKSkpOworICAgIFNjcm9sbGluZ1N0
YXRlRnJhbWVTY3JvbGxpbmdOb2RlKiBub2RlID0gZG93bmNhc3Q8U2Nyb2xsaW5nU3RhdGVGcmFt
ZVNjcm9sbGluZ05vZGU+KG1fc2Nyb2xsaW5nU3RhdGVUcmVlLT5zdGF0ZU5vZGVGb3JJRChmcmFt
ZVZpZXcuc2Nyb2xsTGF5ZXJJRCgpKSk7CiAgICAgaWYgKCFub2RlKQogICAgICAgICByZXR1cm47
CiAgICAgbm9kZS0+c2V0V2hlZWxFdmVudEhhbmRsZXJDb3VudChjb21wdXRlQ3VycmVudFdoZWVs
RXZlbnRIYW5kbGVyQ291bnQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmgKaW5kZXggZTNhMjkzNDQ3MzFh
NDEyMmZlODExNmYyMWZlZDYzZDY2YzcwY2EwNC4uZjNlYmFhNDMxOWFkNmI2OGNkNDNhYTVkZDk4
MTU3YTgxOWNjZWMzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaApAQCAtNzMsMTMgKzczLDEzIEBAIHBy
aXZhdGU6CiAgICAgdmlydHVhbCBib29sIGlzQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcigpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0
c0ZpeGVkUG9zaXRpb25MYXllcnMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0g
ICAgdmlydHVhbCBib29sIGhhc1Zpc2libGVTbG93UmVwYWludFZpZXdwb3J0Q29uc3RyYWluZWRP
YmplY3RzKEZyYW1lVmlldyopIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
dmlydHVhbCBib29sIGhhc1Zpc2libGVTbG93UmVwYWludFZpZXdwb3J0Q29uc3RyYWluZWRPYmpl
Y3RzKGNvbnN0IEZyYW1lVmlldyYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAK
LSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZnJhbWVWaWV3TGF5b3V0VXBkYXRlZChG
cmFtZVZpZXcqKSBvdmVycmlkZTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZnJh
bWVWaWV3Um9vdExheWVyRGlkQ2hhbmdlKEZyYW1lVmlldyopIG92ZXJyaWRlOwotICAgIFdFQkNP
UkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBmcmFtZVZpZXdOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbkNo
YW5nZWQoRnJhbWVWaWV3Kikgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2
b2lkIGZyYW1lVmlld0xheW91dFVwZGF0ZWQoRnJhbWVWaWV3Jikgb3ZlcnJpZGU7CisgICAgV0VC
Q09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGZyYW1lVmlld1Jvb3RMYXllckRpZENoYW5nZShGcmFt
ZVZpZXcmKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZnJhbWVW
aWV3Tm9uRmFzdFNjcm9sbGFibGVSZWdpb25DaGFuZ2VkKEZyYW1lVmlldyYpIG92ZXJyaWRlOwog
Ci0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBib29sIHJlcXVlc3RTY3JvbGxQb3NpdGlvblVw
ZGF0ZShGcmFtZVZpZXcqLCBjb25zdCBJbnRQb2ludCYpIG92ZXJyaWRlOworICAgIFdFQkNPUkVf
RVhQT1JUIHZpcnR1YWwgYm9vbCByZXF1ZXN0U2Nyb2xsUG9zaXRpb25VcGRhdGUoRnJhbWVWaWV3
JiwgY29uc3QgSW50UG9pbnQmKSBvdmVycmlkZTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1
YWwgU2Nyb2xsaW5nTm9kZUlEIGF0dGFjaFRvU3RhdGVUcmVlKFNjcm9sbGluZ05vZGVUeXBlLCBT
Y3JvbGxpbmdOb2RlSUQgbmV3Tm9kZUlELCBTY3JvbGxpbmdOb2RlSUQgcGFyZW50SUQpIG92ZXJy
aWRlOwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBkZXRhY2hGcm9tU3RhdGVUcmVl
KFNjcm9sbGluZ05vZGVJRCkgb3ZlcnJpZGU7CkBAIC05NCwxNCArOTQsMTQgQEAgcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0U2Nyb2xsUGlubmluZ0JlaGF2aW9yKFNjcm9sbFBpbm5pbmdC
ZWhhdmlvcikgb3ZlcnJpZGU7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgc3lu
Y0NoaWxkUG9zaXRpb25zKGNvbnN0IExheW91dFJlY3QmIHZpZXdwb3J0UmVjdCkgb3ZlcnJpZGU7
Ci0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHNjcm9sbGFibGVBcmVhU2Nyb2xsYmFy
TGF5ZXJEaWRDaGFuZ2UoU2Nyb2xsYWJsZUFyZWEqLCBTY3JvbGxiYXJPcmllbnRhdGlvbikgb3Zl
cnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHNjcm9sbGFibGVBcmVhU2Ny
b2xsYmFyTGF5ZXJEaWRDaGFuZ2UoU2Nyb2xsYWJsZUFyZWEmLCBTY3JvbGxiYXJPcmllbnRhdGlv
bikgb3ZlcnJpZGU7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgcmVjb21wdXRl
V2hlZWxFdmVudEhhbmRsZXJDb3VudEZvckZyYW1lVmlldyhGcmFtZVZpZXcqKSBvdmVycmlkZTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgcmVjb21wdXRlV2hlZWxFdmVudEhhbmRs
ZXJDb3VudEZvckZyYW1lVmlldyhGcmFtZVZpZXcmKSBvdmVycmlkZTsKICAgICBXRUJDT1JFX0VY
UE9SVCB2aXJ0dWFsIHZvaWQgc2V0U3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zKFN5bmNocm9u
b3VzU2Nyb2xsaW5nUmVhc29ucykgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1
bGVUcmVlU3RhdGVDb21taXQoKSA9IDA7CiAKLSAgICB2b2lkIGVuc3VyZVJvb3RTdGF0ZU5vZGVG
b3JGcmFtZVZpZXcoRnJhbWVWaWV3Kik7CisgICAgdm9pZCBlbnN1cmVSb290U3RhdGVOb2RlRm9y
RnJhbWVWaWV3KEZyYW1lVmlldyYpOwogICAgIHZvaWQgdXBkYXRlTWFpbkZyYW1lU2Nyb2xsTGF5
ZXJQb3NpdGlvbigpOwogCiAgICAgdm9pZCB1cGRhdGVTY3JvbGxQb3NpdGlvbkFmdGVyQXN5bmNT
Y3JvbGxUaW1lckZpcmVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHAKaW5kZXggYmQzY2VhMzM3OTExY2I4ZWQ4M2Mx
NTkyMTU0ZTcxMmUzYzE4ZWI3ZS4uYjA4N2FkN2NkZGNlZmRmZmE2ODYwMWVlODVjYWVjYzgwNzNk
NmE0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
Q29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bGluZ0Nvb3JkaW5hdG9yLmNwcApAQCAtNzksMTUgKzc5LDE1IEBAIFNjcm9sbGluZ0Nvb3JkaW5h
dG9yOjp+U2Nyb2xsaW5nQ29vcmRpbmF0b3IoKQogdm9pZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6
cGFnZURlc3Ryb3llZCgpCiB7CiAgICAgQVNTRVJUKG1fcGFnZSk7Ci0gICAgbV9wYWdlID0gMDsK
KyAgICBtX3BhZ2UgPSBudWxscHRyOwogfQogCi1ib29sIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpj
b29yZGluYXRlc1Njcm9sbGluZ0ZvckZyYW1lVmlldyhGcmFtZVZpZXcqIGZyYW1lVmlldykgY29u
c3QKK2Jvb2wgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmNvb3JkaW5hdGVzU2Nyb2xsaW5nRm9yRnJh
bWVWaWV3KGNvbnN0IEZyYW1lVmlldyYgZnJhbWVWaWV3KSBjb25zdAogewogICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKG1fcGFnZSk7CiAKLSAgICBpZiAoIWZyYW1lVmll
dy0+ZnJhbWUoKS5pc01haW5GcmFtZSgpICYmICFtX3BhZ2UtPnNldHRpbmdzKCkuc2Nyb2xsaW5n
VHJlZUluY2x1ZGVzRnJhbWVzKCkpCisgICAgaWYgKCFmcmFtZVZpZXcuZnJhbWUoKS5pc01haW5G
cmFtZSgpICYmICFtX3BhZ2UtPnNldHRpbmdzKCkuc2Nyb2xsaW5nVHJlZUluY2x1ZGVzRnJhbWVz
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIFJlbmRlclZpZXcqIHJlbmRlclZpZXcg
PSBtX3BhZ2UtPm1haW5GcmFtZSgpLmNvbnRlbnRSZW5kZXJlcigpOwpAQCAtOTYsNyArOTYsNyBA
QCBib29sIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpjb29yZGluYXRlc1Njcm9sbGluZ0ZvckZyYW1l
VmlldyhGcmFtZVZpZXcqIGZyYW1lVmlldwogICAgIHJldHVybiByZW5kZXJWaWV3LT51c2VzQ29t
cG9zaXRpbmcoKTsKIH0KIAotUmVnaW9uIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpjb21wdXRlTm9u
RmFzdFNjcm9sbGFibGVSZWdpb24oY29uc3QgRnJhbWUqIGZyYW1lLCBjb25zdCBJbnRQb2ludCYg
ZnJhbWVMb2NhdGlvbikgY29uc3QKK1JlZ2lvbiBTY3JvbGxpbmdDb29yZGluYXRvcjo6Y29tcHV0
ZU5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uKGNvbnN0IEZyYW1lJiBmcmFtZSwgY29uc3QgSW50UG9p
bnQmIGZyYW1lTG9jYXRpb24pIGNvbnN0CiB7CiAjaWYgRU5BQkxFKElPU19UT1VDSF9FVkVOVFMp
CiAgICAgLy8gT24gaU9TLCB3ZSB1c2Ugbm9uRmFzdFNjcm9sbGFibGVSZWdpb24gdG8gcmVwcmVz
ZW50IHRoZSByZWdpb24gY292ZXJlZCBieSBlbGVtZW50cyB3aXRoIHRvdWNoIGV2ZW50IGhhbmRs
ZXJzLgpAQCAtMTE3LDcgKzExNyw3IEBAIFJlZ2lvbiBTY3JvbGxpbmdDb29yZGluYXRvcjo6Y29t
cHV0ZU5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uKGNvbnN0IEZyYW1lKiBmcmFtZSwKICAgICByZXR1
cm4gdG91Y2hSZWdpb247CiAjZWxzZQogICAgIFJlZ2lvbiBub25GYXN0U2Nyb2xsYWJsZVJlZ2lv
bjsKLSAgICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IGZyYW1lLT52aWV3KCk7CisgICAgRnJhbWVW
aWV3KiBmcmFtZVZpZXcgPSBmcmFtZS52aWV3KCk7CiAgICAgaWYgKCFmcmFtZVZpZXcpCiAgICAg
ICAgIHJldHVybiBub25GYXN0U2Nyb2xsYWJsZVJlZ2lvbjsKIApAQCAtMTQ1LDggKzE0NSw4IEBA
IFJlZ2lvbiBTY3JvbGxpbmdDb29yZGluYXRvcjo6Y29tcHV0ZU5vbkZhc3RTY3JvbGxhYmxlUmVn
aW9uKGNvbnN0IEZyYW1lKiBmcmFtZSwKICAgICAgICAgICAgIG5vbkZhc3RTY3JvbGxhYmxlUmVn
aW9uLnVuaXRlKHBsdWdpblZpZXdCYXNlLmZyYW1lUmVjdCgpKTsKICAgICB9CiAKLSAgICBmb3Ig
KEZyYW1lKiBzdWJmcmFtZSA9IGZyYW1lLT50cmVlKCkuZmlyc3RDaGlsZCgpOyBzdWJmcmFtZTsg
c3ViZnJhbWUgPSBzdWJmcmFtZS0+dHJlZSgpLm5leHRTaWJsaW5nKCkpCi0gICAgICAgIG5vbkZh
c3RTY3JvbGxhYmxlUmVnaW9uLnVuaXRlKGNvbXB1dGVOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbihz
dWJmcmFtZSwgb2Zmc2V0KSk7CisgICAgZm9yIChGcmFtZSogc3ViZnJhbWUgPSBmcmFtZS50cmVl
KCkuZmlyc3RDaGlsZCgpOyBzdWJmcmFtZTsgc3ViZnJhbWUgPSBzdWJmcmFtZS0+dHJlZSgpLm5l
eHRTaWJsaW5nKCkpCisgICAgICAgIG5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uLnVuaXRlKGNvbXB1
dGVOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbigqc3ViZnJhbWUsIG9mZnNldCkpOwogCiAgICAgcmV0
dXJuIG5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uOwogI2VuZGlmCkBAIC0xNjQsNyArMTY0LDcgQEAg
dW5zaWduZWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmNvbXB1dGVDdXJyZW50V2hlZWxFdmVudEhh
bmRsZXJDb3VudCgpCiAgICAgcmV0dXJuIHdoZWVsRXZlbnRIYW5kbGVyQ291bnQ7CiB9CiAKLXZv
aWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZyYW1lVmlld1doZWVsRXZlbnRIYW5kbGVyQ291bnRD
aGFuZ2VkKEZyYW1lVmlldyogZnJhbWVWaWV3KQordm9pZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6
ZnJhbWVWaWV3V2hlZWxFdmVudEhhbmRsZXJDb3VudENoYW5nZWQoRnJhbWVWaWV3JiBmcmFtZVZp
ZXcpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlQobV9wYWdlKTsK
QEAgLTE3Miw3ICsxNzIsNyBAQCB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpmcmFtZVZpZXdX
aGVlbEV2ZW50SGFuZGxlckNvdW50Q2hhbmdlZChGcmFtZVZpZXcqIGZyYQogICAgIHJlY29tcHV0
ZVdoZWVsRXZlbnRIYW5kbGVyQ291bnRGb3JGcmFtZVZpZXcoZnJhbWVWaWV3KTsKIH0KIAotdm9p
ZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6ZnJhbWVWaWV3SGFzU2xvd1JlcGFpbnRPYmplY3RzRGlk
Q2hhbmdlKEZyYW1lVmlldyogZnJhbWVWaWV3KQordm9pZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6
ZnJhbWVWaWV3SGFzU2xvd1JlcGFpbnRPYmplY3RzRGlkQ2hhbmdlKEZyYW1lVmlldyYgZnJhbWVW
aWV3KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKG1fcGFnZSk7
CkBAIC0xODMsNyArMTgzLDcgQEAgdm9pZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6ZnJhbWVWaWV3
SGFzU2xvd1JlcGFpbnRPYmplY3RzRGlkQ2hhbmdlKEZyYW1lVmlldyogZnIKICAgICB1cGRhdGVT
eW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMoZnJhbWVWaWV3KTsKIH0KIAotdm9pZCBTY3JvbGxp
bmdDb29yZGluYXRvcjo6ZnJhbWVWaWV3Rml4ZWRPYmplY3RzRGlkQ2hhbmdlKEZyYW1lVmlldyog
ZnJhbWVWaWV3KQordm9pZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6ZnJhbWVWaWV3Rml4ZWRPYmpl
Y3RzRGlkQ2hhbmdlKEZyYW1lVmlldyYgZnJhbWVWaWV3KQogewogICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CiAgICAgQVNTRVJUKG1fcGFnZSk7CkBAIC0xOTQsMjIgKzE5NCwyMiBAQCB2b2lk
IFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpmcmFtZVZpZXdGaXhlZE9iamVjdHNEaWRDaGFuZ2UoRnJh
bWVWaWV3KiBmcmFtZVZpZXcpCiAgICAgdXBkYXRlU3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25z
KGZyYW1lVmlldyk7CiB9CiAKLUdyYXBoaWNzTGF5ZXIqIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpz
Y3JvbGxMYXllckZvclNjcm9sbGFibGVBcmVhKFNjcm9sbGFibGVBcmVhKiBzY3JvbGxhYmxlQXJl
YSkKK0dyYXBoaWNzTGF5ZXIqIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzY3JvbGxMYXllckZvclNj
cm9sbGFibGVBcmVhKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSkKIHsKLSAgICByZXR1
cm4gc2Nyb2xsYWJsZUFyZWEtPmxheWVyRm9yU2Nyb2xsaW5nKCk7CisgICAgcmV0dXJuIHNjcm9s
bGFibGVBcmVhLmxheWVyRm9yU2Nyb2xsaW5nKCk7CiB9CiAKLUdyYXBoaWNzTGF5ZXIqIFNjcm9s
bGluZ0Nvb3JkaW5hdG9yOjpzY3JvbGxMYXllckZvckZyYW1lVmlldyhGcmFtZVZpZXcqIGZyYW1l
VmlldykKK0dyYXBoaWNzTGF5ZXIqIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzY3JvbGxMYXllckZv
ckZyYW1lVmlldyhGcmFtZVZpZXcmIGZyYW1lVmlldykKIHsKLSAgICBpZiAoUmVuZGVyVmlldyog
cmVuZGVyVmlldyA9IGZyYW1lVmlldy0+ZnJhbWUoKS5jb250ZW50UmVuZGVyZXIoKSkKKyAgICBp
ZiAoUmVuZGVyVmlldyogcmVuZGVyVmlldyA9IGZyYW1lVmlldy5mcmFtZSgpLmNvbnRlbnRSZW5k
ZXJlcigpKQogICAgICAgICByZXR1cm4gcmVuZGVyVmlldy0+Y29tcG9zaXRvcigpLnNjcm9sbExh
eWVyKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUdyYXBoaWNzTGF5ZXIqIFNjcm9sbGlu
Z0Nvb3JkaW5hdG9yOjpoZWFkZXJMYXllckZvckZyYW1lVmlldyhGcmFtZVZpZXcqIGZyYW1lVmll
dykKK0dyYXBoaWNzTGF5ZXIqIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpoZWFkZXJMYXllckZvckZy
YW1lVmlldyhGcmFtZVZpZXcmIGZyYW1lVmlldykKIHsKICNpZiBFTkFCTEUoUlVCQkVSX0JBTkRJ
TkcpCi0gICAgaWYgKFJlbmRlclZpZXcqIHJlbmRlclZpZXcgPSBmcmFtZVZpZXctPmZyYW1lKCku
Y29udGVudFJlbmRlcmVyKCkpCisgICAgaWYgKFJlbmRlclZpZXcqIHJlbmRlclZpZXcgPSBmcmFt
ZVZpZXcuZnJhbWUoKS5jb250ZW50UmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJuIHJlbmRlclZp
ZXctPmNvbXBvc2l0b3IoKS5oZWFkZXJMYXllcigpOwogICAgIHJldHVybiBudWxscHRyOwogI2Vs
c2UKQEAgLTIxOCwxMCArMjE4LDEwIEBAIEdyYXBoaWNzTGF5ZXIqIFNjcm9sbGluZ0Nvb3JkaW5h
dG9yOjpoZWFkZXJMYXllckZvckZyYW1lVmlldyhGcmFtZVZpZXcqIGZyYW1lVmllCiAjZW5kaWYK
IH0KIAotR3JhcGhpY3NMYXllciogU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZvb3RlckxheWVyRm9y
RnJhbWVWaWV3KEZyYW1lVmlldyogZnJhbWVWaWV3KQorR3JhcGhpY3NMYXllciogU2Nyb2xsaW5n
Q29vcmRpbmF0b3I6OmZvb3RlckxheWVyRm9yRnJhbWVWaWV3KEZyYW1lVmlldyYgZnJhbWVWaWV3
KQogewogI2lmIEVOQUJMRShSVUJCRVJfQkFORElORykKLSAgICBpZiAoUmVuZGVyVmlldyogcmVu
ZGVyVmlldyA9IGZyYW1lVmlldy0+ZnJhbWUoKS5jb250ZW50UmVuZGVyZXIoKSkKKyAgICBpZiAo
UmVuZGVyVmlldyogcmVuZGVyVmlldyA9IGZyYW1lVmlldy5mcmFtZSgpLmNvbnRlbnRSZW5kZXJl
cigpKQogICAgICAgICByZXR1cm4gcmVuZGVyVmlldy0+Y29tcG9zaXRvcigpLmZvb3RlckxheWVy
KCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiAjZWxzZQpAQCAtMjMwLDI0ICsyMzAsMjQgQEAgR3Jh
cGhpY3NMYXllciogU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZvb3RlckxheWVyRm9yRnJhbWVWaWV3
KEZyYW1lVmlldyogZnJhbWVWaWUKICNlbmRpZgogfQogCi1HcmFwaGljc0xheWVyKiBTY3JvbGxp
bmdDb29yZGluYXRvcjo6Y291bnRlclNjcm9sbGluZ0xheWVyRm9yRnJhbWVWaWV3KEZyYW1lVmll
dyogZnJhbWVWaWV3KQorR3JhcGhpY3NMYXllciogU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmNvdW50
ZXJTY3JvbGxpbmdMYXllckZvckZyYW1lVmlldyhGcmFtZVZpZXcmIGZyYW1lVmlldykKIHsKLSAg
ICBpZiAoUmVuZGVyVmlldyogcmVuZGVyVmlldyA9IGZyYW1lVmlldy0+ZnJhbWUoKS5jb250ZW50
UmVuZGVyZXIoKSkKKyAgICBpZiAoUmVuZGVyVmlldyogcmVuZGVyVmlldyA9IGZyYW1lVmlldy5m
cmFtZSgpLmNvbnRlbnRSZW5kZXJlcigpKQogICAgICAgICByZXR1cm4gcmVuZGVyVmlldy0+Y29t
cG9zaXRvcigpLmZpeGVkUm9vdEJhY2tncm91bmRMYXllcigpOwogICAgIHJldHVybiBudWxscHRy
OwogfQogCi1HcmFwaGljc0xheWVyKiBTY3JvbGxpbmdDb29yZGluYXRvcjo6aW5zZXRDbGlwTGF5
ZXJGb3JGcmFtZVZpZXcoRnJhbWVWaWV3KiBmcmFtZVZpZXcpCitHcmFwaGljc0xheWVyKiBTY3Jv
bGxpbmdDb29yZGluYXRvcjo6aW5zZXRDbGlwTGF5ZXJGb3JGcmFtZVZpZXcoRnJhbWVWaWV3JiBm
cmFtZVZpZXcpCiB7Ci0gICAgaWYgKFJlbmRlclZpZXcqIHJlbmRlclZpZXcgPSBmcmFtZVZpZXct
PmZyYW1lKCkuY29udGVudFJlbmRlcmVyKCkpCisgICAgaWYgKFJlbmRlclZpZXcqIHJlbmRlclZp
ZXcgPSBmcmFtZVZpZXcuZnJhbWUoKS5jb250ZW50UmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJu
IHJlbmRlclZpZXctPmNvbXBvc2l0b3IoKS5jbGlwTGF5ZXIoKTsKICAgICByZXR1cm4gbnVsbHB0
cjsKIH0KIAotR3JhcGhpY3NMYXllciogU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmNvbnRlbnRTaGFk
b3dMYXllckZvckZyYW1lVmlldyhGcmFtZVZpZXcqIGZyYW1lVmlldykKK0dyYXBoaWNzTGF5ZXIq
IFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpjb250ZW50U2hhZG93TGF5ZXJGb3JGcmFtZVZpZXcoRnJh
bWVWaWV3JiBmcmFtZVZpZXcpCiB7CiAjaWYgRU5BQkxFKFJVQkJFUl9CQU5ESU5HKQotICAgIGlm
IChSZW5kZXJWaWV3KiByZW5kZXJWaWV3ID0gZnJhbWVWaWV3LT5mcmFtZSgpLmNvbnRlbnRSZW5k
ZXJlcigpKQorICAgIGlmIChSZW5kZXJWaWV3KiByZW5kZXJWaWV3ID0gZnJhbWVWaWV3LmZyYW1l
KCkuY29udGVudFJlbmRlcmVyKCkpCiAgICAgICAgIHJldHVybiByZW5kZXJWaWV3LT5jb21wb3Np
dG9yKCkubGF5ZXJGb3JDb250ZW50U2hhZG93KCk7CiAgICAgCiAgICAgcmV0dXJuIG51bGxwdHI7
CkBAIC0yNTcsMTQgKzI1NywxNCBAQCBHcmFwaGljc0xheWVyKiBTY3JvbGxpbmdDb29yZGluYXRv
cjo6Y29udGVudFNoYWRvd0xheWVyRm9yRnJhbWVWaWV3KEZyYW1lVmlldyogZgogI2VuZGlmCiB9
CiAKLUdyYXBoaWNzTGF5ZXIqIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpyb290Q29udGVudExheWVy
Rm9yRnJhbWVWaWV3KEZyYW1lVmlldyogZnJhbWVWaWV3KQorR3JhcGhpY3NMYXllciogU2Nyb2xs
aW5nQ29vcmRpbmF0b3I6OnJvb3RDb250ZW50TGF5ZXJGb3JGcmFtZVZpZXcoRnJhbWVWaWV3JiBm
cmFtZVZpZXcpCiB7Ci0gICAgaWYgKFJlbmRlclZpZXcqIHJlbmRlclZpZXcgPSBmcmFtZVZpZXct
PmZyYW1lKCkuY29udGVudFJlbmRlcmVyKCkpCisgICAgaWYgKFJlbmRlclZpZXcqIHJlbmRlclZp
ZXcgPSBmcmFtZVZpZXcuZnJhbWUoKS5jb250ZW50UmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJu
IHJlbmRlclZpZXctPmNvbXBvc2l0b3IoKS5yb290Q29udGVudExheWVyKCk7CiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKLXZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZyYW1lVmlld1Jvb3RM
YXllckRpZENoYW5nZShGcmFtZVZpZXcqIGZyYW1lVmlldykKK3ZvaWQgU2Nyb2xsaW5nQ29vcmRp
bmF0b3I6OmZyYW1lVmlld1Jvb3RMYXllckRpZENoYW5nZShGcmFtZVZpZXcmIGZyYW1lVmlldykK
IHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VSVChtX3BhZ2UpOwpAQCAt
MjkzLDkgKzI5Myw5IEBAIHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmhhbmRsZVdoZWVsRXZl
bnRQaGFzZShQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZSBwaGFzZSkKIH0KICNlbmRpZgogCi1ib29s
IFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpoYXNWaXNpYmxlU2xvd1JlcGFpbnRWaWV3cG9ydENvbnN0
cmFpbmVkT2JqZWN0cyhGcmFtZVZpZXcqIGZyYW1lVmlldykgY29uc3QKK2Jvb2wgU2Nyb2xsaW5n
Q29vcmRpbmF0b3I6Omhhc1Zpc2libGVTbG93UmVwYWludFZpZXdwb3J0Q29uc3RyYWluZWRPYmpl
Y3RzKGNvbnN0IEZyYW1lVmlldyYgZnJhbWVWaWV3KSBjb25zdAogewotICAgIGNvbnN0IEZyYW1l
Vmlldzo6Vmlld3BvcnRDb25zdHJhaW5lZE9iamVjdFNldCogdmlld3BvcnRDb25zdHJhaW5lZE9i
amVjdHMgPSBmcmFtZVZpZXctPnZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RzKCk7CisgICAgY29u
c3QgRnJhbWVWaWV3OjpWaWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0U2V0KiB2aWV3cG9ydENvbnN0
cmFpbmVkT2JqZWN0cyA9IGZyYW1lVmlldy52aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0cygpOwog
ICAgIGlmICghdmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHMpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIApAQCAtMzExLDExICszMTEsOCBAQCBib29sIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpoYXNW
aXNpYmxlU2xvd1JlcGFpbnRWaWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0cyhGcmFtZQogICAgIHJl
dHVybiBmYWxzZTsKIH0KIAotU3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zIFNjcm9sbGluZ0Nv
b3JkaW5hdG9yOjpzeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMoRnJhbWVWaWV3KiBmcmFtZVZp
ZXcpIGNvbnN0CitTeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMgU2Nyb2xsaW5nQ29vcmRpbmF0
b3I6OnN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucyhjb25zdCBGcmFtZVZpZXcmIGZyYW1lVmll
dykgY29uc3QKIHsKLSAgICBpZiAoIWZyYW1lVmlldykKLSAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PFN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucz4oMCk7Ci0KICAgICBTeW5jaHJvbm91c1Nj
cm9sbGluZ1JlYXNvbnMgc3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zID0gKFN5bmNocm9ub3Vz
U2Nyb2xsaW5nUmVhc29ucykwOwogCiAgICAgaWYgKG1fZm9yY2VTeW5jaHJvbm91c1Njcm9sbExh
eWVyUG9zaXRpb25VcGRhdGVzKQpAQCAtMzI1LDIzICszMjIsMjMgQEAgU3luY2hyb25vdXNTY3Jv
bGxpbmdSZWFzb25zIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzeW5jaHJvbm91c1Njcm9sbGluZ1Jl
YXNvbnMoRnIKICAgICBpZiAoY3Vyc29yLmlzQ2FwdHVyaW5nKCkgfHwgY3Vyc29yLmlzUmVwbGF5
aW5nKCkpCiAgICAgICAgIHN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucyB8PSBGb3JjZWRPbk1h
aW5UaHJlYWQ7CiAjZW5kaWYKLSAgICBpZiAoZnJhbWVWaWV3LT5oYXNTbG93UmVwYWludE9iamVj
dHMoKSkKKyAgICBpZiAoZnJhbWVWaWV3Lmhhc1Nsb3dSZXBhaW50T2JqZWN0cygpKQogICAgICAg
ICBzeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMgfD0gSGFzU2xvd1JlcGFpbnRPYmplY3RzOwot
ICAgIGlmICghc3VwcG9ydHNGaXhlZFBvc2l0aW9uTGF5ZXJzKCkgJiYgZnJhbWVWaWV3LT5oYXNW
aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0cygpKQorICAgIGlmICghc3VwcG9ydHNGaXhlZFBvc2l0
aW9uTGF5ZXJzKCkgJiYgZnJhbWVWaWV3Lmhhc1ZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RzKCkp
CiAgICAgICAgIHN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucyB8PSBIYXNWaWV3cG9ydENvbnN0
cmFpbmVkT2JqZWN0c1dpdGhvdXRTdXBwb3J0aW5nRml4ZWRMYXllcnM7CiAgICAgaWYgKHN1cHBv
cnRzRml4ZWRQb3NpdGlvbkxheWVycygpICYmIGhhc1Zpc2libGVTbG93UmVwYWludFZpZXdwb3J0
Q29uc3RyYWluZWRPYmplY3RzKGZyYW1lVmlldykpCiAgICAgICAgIHN5bmNocm9ub3VzU2Nyb2xs
aW5nUmVhc29ucyB8PSBIYXNOb25MYXllclZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RzOwotICAg
IGlmIChmcmFtZVZpZXctPmZyYW1lKCkubWFpbkZyYW1lKCkuZG9jdW1lbnQoKSAmJiBmcmFtZVZp
ZXctPmZyYW1lKCkuZG9jdW1lbnQoKS0+aXNJbWFnZURvY3VtZW50KCkpCisgICAgaWYgKGZyYW1l
Vmlldy5mcmFtZSgpLm1haW5GcmFtZSgpLmRvY3VtZW50KCkgJiYgZnJhbWVWaWV3LmZyYW1lKCku
ZG9jdW1lbnQoKS0+aXNJbWFnZURvY3VtZW50KCkpCiAgICAgICAgIHN5bmNocm9ub3VzU2Nyb2xs
aW5nUmVhc29ucyB8PSBJc0ltYWdlRG9jdW1lbnQ7CiAKICAgICByZXR1cm4gc3luY2hyb25vdXNT
Y3JvbGxpbmdSZWFzb25zOwogfQogCi12b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjp1cGRhdGVT
eW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMoRnJhbWVWaWV3KiBmcmFtZVZpZXcpCit2b2lkIFNj
cm9sbGluZ0Nvb3JkaW5hdG9yOjp1cGRhdGVTeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMoRnJh
bWVWaWV3JiBmcmFtZVZpZXcpCiB7CiAgICAgLy8gRklYTUU6IE9uY2Ugd2Ugc3VwcG9ydCBhc3lu
YyBzY3JvbGxpbmcgb2YgaWZyYW1lcywgd2UnbGwgaGF2ZSB0byB0cmFjayB0aGUgc3luY2hyb25v
dXMgc2Nyb2xsaW5nCiAgICAgLy8gcmVhc29ucyBwZXIgZnJhbWUgKG1heWJlIG9uIHNjcm9sbGlu
ZyB0cmVlIG5vZGVzKS4KLSAgICBpZiAoIWZyYW1lVmlldy0+ZnJhbWUoKS5pc01haW5GcmFtZSgp
KQorICAgIGlmICghZnJhbWVWaWV3LmZyYW1lKCkuaXNNYWluRnJhbWUoKSkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgc2V0U3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zKHN5bmNocm9ub3VzU2Ny
b2xsaW5nUmVhc29ucyhmcmFtZVZpZXcpKTsKQEAgLTM1MywxOSArMzUwLDIzIEBAIHZvaWQgU2Ny
b2xsaW5nQ29vcmRpbmF0b3I6OnNldEZvcmNlU3luY2hyb25vdXNTY3JvbGxMYXllclBvc2l0aW9u
VXBkYXRlcyhib29sIGZvCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fZm9yY2VTeW5jaHJvbm91
c1Njcm9sbExheWVyUG9zaXRpb25VcGRhdGVzID0gZm9yY2VTeW5jaHJvbm91c1Njcm9sbExheWVy
UG9zaXRpb25VcGRhdGVzOwotICAgIHVwZGF0ZVN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucyht
X3BhZ2UtPm1haW5GcmFtZSgpLnZpZXcoKSk7CisgICAgaWYgKEZyYW1lVmlldyogZnJhbWVWaWV3
ID0gbV9wYWdlLT5tYWluRnJhbWUoKS52aWV3KCkpCisgICAgICAgIHVwZGF0ZVN5bmNocm9ub3Vz
U2Nyb2xsaW5nUmVhc29ucygqZnJhbWVWaWV3KTsKIH0KIAogYm9vbCBTY3JvbGxpbmdDb29yZGlu
YXRvcjo6c2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvblN5bmNocm9ub3VzbHkoKSBjb25z
dAogewotICAgIHJldHVybiBzeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMobV9wYWdlLT5tYWlu
RnJhbWUoKS52aWV3KCkpOworICAgIGlmIChGcmFtZVZpZXcqIGZyYW1lVmlldyA9IG1fcGFnZS0+
bWFpbkZyYW1lKCkudmlldygpKQorICAgICAgICByZXR1cm4gc3luY2hyb25vdXNTY3JvbGxpbmdS
ZWFzb25zKCpmcmFtZVZpZXcpOworICAgIHJldHVybiB0cnVlOwogfQogCiAjaWYgRU5BQkxFKFdF
Ql9SRVBMQVkpCiB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpyZXBsYXlTZXNzaW9uU3RhdGVE
aWRDaGFuZ2UoKQogewogICAgIC8vIEZJWE1FOiBPbmNlIHdlIHN1cHBvcnQgYXN5bmMgc2Nyb2xs
aW5nIG9mIGlmcmFtZXMsIHRoaXMgc2hvdWxkIGdvIHRocm91Z2ggYWxsIHN1YmZyYW1lcy4KLSAg
ICB1cGRhdGVTeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMobV9wYWdlLT5tYWluRnJhbWUoKS52
aWV3KCkpOworICAgIGlmIChGcmFtZVZpZXcqIGZyYW1lVmlldyA9IG1fcGFnZS0+bWFpbkZyYW1l
KCkudmlldygpKQorICAgICAgICB1cGRhdGVTeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMoKmZy
YW1lVmlldyk7CiB9CiAjZW5kaWYKIApAQCAtNDAyLDcgKzQwMywxMCBAQCBTdHJpbmcgU2Nyb2xs
aW5nQ29vcmRpbmF0b3I6OnN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29uc0FzVGV4dChTeW5jaHJv
bm91c1Njcm9sbAogCiBTdHJpbmcgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnN5bmNocm9ub3VzU2Ny
b2xsaW5nUmVhc29uc0FzVGV4dCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN5bmNocm9ub3VzU2Ny
b2xsaW5nUmVhc29uc0FzVGV4dChzeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMobV9wYWdlLT5t
YWluRnJhbWUoKS52aWV3KCkpKTsKKyAgICBpZiAoRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBtX3Bh
Z2UtPm1haW5GcmFtZSgpLnZpZXcoKSkKKyAgICAgICAgcmV0dXJuIHN5bmNocm9ub3VzU2Nyb2xs
aW5nUmVhc29uc0FzVGV4dChzeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMoKmZyYW1lVmlldykp
OworCisgICAgcmV0dXJuIFN0cmluZygpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGlu
YXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0
b3IuaAppbmRleCBjMGM1MjdjMWMwYzRmMTFkNDM4MTBkMWI4OWFjNjNlNmQwMjg0Zjk0Li45Nzdm
OTYyN2U5ODExYWVmZTQ3MzNlY2U5ZTNlZDg0N2YzZTU1ZGU0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmgKQEAgLTExNSwy
NiArMTE1LDI2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNSZW1vdGVTY3JvbGxpbmdD
b29yZGluYXRvcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICAvLyBSZXR1cm4gd2hl
dGhlciB0aGlzIHNjcm9sbGluZyBjb29yZGluYXRvciBoYW5kbGVzIHNjcm9sbGluZyBmb3IgdGhl
IGdpdmVuIGZyYW1lIHZpZXcuCi0gICAgdmlydHVhbCBib29sIGNvb3JkaW5hdGVzU2Nyb2xsaW5n
Rm9yRnJhbWVWaWV3KEZyYW1lVmlldyopIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBjb29yZGlu
YXRlc1Njcm9sbGluZ0ZvckZyYW1lVmlldyhjb25zdCBGcmFtZVZpZXcmKSBjb25zdDsKIAogICAg
IC8vIFNob3VsZCBiZSBjYWxsZWQgd2hlbmV2ZXIgdGhlIGdpdmVuIGZyYW1lIHZpZXcgaGFzIGJl
ZW4gbGFpZCBvdXQuCi0gICAgdmlydHVhbCB2b2lkIGZyYW1lVmlld0xheW91dFVwZGF0ZWQoRnJh
bWVWaWV3KikgeyB9CisgICAgdmlydHVhbCB2b2lkIGZyYW1lVmlld0xheW91dFVwZGF0ZWQoRnJh
bWVWaWV3JikgeyB9CiAKICAgICAvLyBTaG91bGQgYmUgY2FsbGVkIHdoZW5ldmVyIGEgd2hlZWwg
ZXZlbnQgaGFuZGxlciBpcyBhZGRlZCBvciByZW1vdmVkIGluIHRoZSAKICAgICAvLyBmcmFtZSB2
aWV3J3MgdW5kZXJseWluZyBkb2N1bWVudC4KLSAgICB2b2lkIGZyYW1lVmlld1doZWVsRXZlbnRI
YW5kbGVyQ291bnRDaGFuZ2VkKEZyYW1lVmlldyopOworICAgIHZvaWQgZnJhbWVWaWV3V2hlZWxF
dmVudEhhbmRsZXJDb3VudENoYW5nZWQoRnJhbWVWaWV3Jik7CiAKICAgICAvLyBTaG91bGQgYmUg
Y2FsbGVkIHdoZW5ldmVyIHRoZSBzbG93IHJlcGFpbnQgb2JqZWN0cyBjb3VudGVyIGNoYW5nZXMg
YmV0d2VlbiB6ZXJvIGFuZCBvbmUuCi0gICAgdm9pZCBmcmFtZVZpZXdIYXNTbG93UmVwYWludE9i
amVjdHNEaWRDaGFuZ2UoRnJhbWVWaWV3Kik7CisgICAgdm9pZCBmcmFtZVZpZXdIYXNTbG93UmVw
YWludE9iamVjdHNEaWRDaGFuZ2UoRnJhbWVWaWV3Jik7CiAKICAgICAvLyBTaG91bGQgYmUgY2Fs
bGVkIHdoZW5ldmVyIHRoZSBzZXQgb2YgZml4ZWQgb2JqZWN0cyBjaGFuZ2VzLgotICAgIHZvaWQg
ZnJhbWVWaWV3Rml4ZWRPYmplY3RzRGlkQ2hhbmdlKEZyYW1lVmlldyopOworICAgIHZvaWQgZnJh
bWVWaWV3Rml4ZWRPYmplY3RzRGlkQ2hhbmdlKEZyYW1lVmlldyYpOwogCiAgICAgLy8gQ2FsbGVk
IHdoZW5ldmVyIHRoZSBub24tZmFzdCBzY3JvbGxhYmxlIHJlZ2lvbiBjaGFuZ2VzIGZvciByZWFz
b25zIG90aGVyIHRoYW4gbGF5b3V0LgotICAgIHZpcnR1YWwgdm9pZCBmcmFtZVZpZXdOb25GYXN0
U2Nyb2xsYWJsZVJlZ2lvbkNoYW5nZWQoRnJhbWVWaWV3KikgeyB9CisgICAgdmlydHVhbCB2b2lk
IGZyYW1lVmlld05vbkZhc3RTY3JvbGxhYmxlUmVnaW9uQ2hhbmdlZChGcmFtZVZpZXcmKSB7IH0K
IAogICAgIC8vIFNob3VsZCBiZSBjYWxsZWQgd2hlbmV2ZXIgdGhlIHJvb3QgbGF5ZXIgZm9yIHRo
ZSBnaXZlbiBmcmFtZSB2aWV3IGNoYW5nZXMuCi0gICAgdmlydHVhbCB2b2lkIGZyYW1lVmlld1Jv
b3RMYXllckRpZENoYW5nZShGcmFtZVZpZXcqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZnJhbWVWaWV3
Um9vdExheWVyRGlkQ2hhbmdlKEZyYW1lVmlldyYpOwogCiAgICAgLy8gUmV0dXJuIHdoZXRoZXIg
dGhpcyBzY3JvbGxpbmcgY29vcmRpbmF0b3IgY2FuIGtlZXAgZml4ZWQgcG9zaXRpb24gbGF5ZXJz
IGZpeGVkIHRvIHRoZWlyCiAgICAgLy8gY29udGFpbmVycyB3aGlsZSBzY3JvbGxpbmcuCkBAIC0x
NTYsOCArMTU2LDggQEAgcHVibGljOgogICAgIC8vIFRoZXNlIHZpcnR1YWwgZnVuY3Rpb25zIGFy
ZSBjdXJyZW50bHkgdW5pcXVlIHRvIHRoZSB0aHJlYWRlZCBzY3JvbGxpbmcgYXJjaGl0ZWN0dXJl
LiAKICAgICAvLyBUaGVpciBtZWFuaW5nZnVsIGltcGxlbWVudGF0aW9ucyBhcmUgaW4gU2Nyb2xs
aW5nQ29vcmRpbmF0b3JNYWMuCiAgICAgdmlydHVhbCB2b2lkIGNvbW1pdFRyZWVTdGF0ZUlmTmVl
ZGVkKCkgeyB9Ci0gICAgdmlydHVhbCBib29sIHJlcXVlc3RTY3JvbGxQb3NpdGlvblVwZGF0ZShG
cmFtZVZpZXcqLCBjb25zdCBJbnRQb2ludCYpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVh
bCBib29sIGhhbmRsZVdoZWVsRXZlbnQoRnJhbWVWaWV3KiwgY29uc3QgUGxhdGZvcm1XaGVlbEV2
ZW50JikgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCByZXF1ZXN0U2Nyb2xsUG9z
aXRpb25VcGRhdGUoRnJhbWVWaWV3JiwgY29uc3QgSW50UG9pbnQmKSB7IHJldHVybiBmYWxzZTsg
fQorICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVXaGVlbEV2ZW50KEZyYW1lVmlldyYsIGNvbnN0IFBs
YXRmb3JtV2hlZWxFdmVudCYpIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIFNjcm9sbGlu
Z05vZGVJRCBhdHRhY2hUb1N0YXRlVHJlZShTY3JvbGxpbmdOb2RlVHlwZSwgU2Nyb2xsaW5nTm9k
ZUlEIG5ld05vZGVJRCwgU2Nyb2xsaW5nTm9kZUlEIC8qcGFyZW50SUQqLykgeyByZXR1cm4gbmV3
Tm9kZUlEOyB9CiAgICAgdmlydHVhbCB2b2lkIGRldGFjaEZyb21TdGF0ZVRyZWUoU2Nyb2xsaW5n
Tm9kZUlEKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJTdGF0ZVRyZWUoKSB7IH0KQEAgLTE4
Niw0NyArMTg2LDQ3IEBAIHB1YmxpYzoKICAgICBTY3JvbGxpbmdOb2RlSUQgdW5pcXVlU2Nyb2xs
TGF5ZXJJRCgpOwogCiAgICAgZW51bSBNYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uRmxhZ3Mgewot
ICAgICAgICBGb3JjZWRPbk1haW5UaHJlYWQgPSAxIDw8IDAsCi0gICAgICAgIEhhc1Nsb3dSZXBh
aW50T2JqZWN0cyA9IDEgPDwgMSwKLSAgICAgICAgSGFzVmlld3BvcnRDb25zdHJhaW5lZE9iamVj
dHNXaXRob3V0U3VwcG9ydGluZ0ZpeGVkTGF5ZXJzID0gMSA8PCAyLAotICAgICAgICBIYXNOb25M
YXllclZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RzID0gMSA8PCAzLAotICAgICAgICBJc0ltYWdl
RG9jdW1lbnQgPSAxIDw8IDQKKyAgICAgICAgRm9yY2VkT25NYWluVGhyZWFkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxIDw8IDAsCisgICAgICAgIEhhc1Nsb3dS
ZXBhaW50T2JqZWN0cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMSA8
PCAxLAorICAgICAgICBIYXNWaWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0c1dpdGhvdXRTdXBwb3J0
aW5nRml4ZWRMYXllcnMgICA9IDEgPDwgMiwKKyAgICAgICAgSGFzTm9uTGF5ZXJWaWV3cG9ydENv
bnN0cmFpbmVkT2JqZWN0cyAgICAgICAgICAgICAgICAgICAgICAgPSAxIDw8IDMsCisgICAgICAg
IElzSW1hZ2VEb2N1bWVudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gMSA8PCA0CiAgICAgfTsKIAotICAgIFN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucyBz
eW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMoRnJhbWVWaWV3KikgY29uc3Q7CisgICAgU3luY2hy
b25vdXNTY3JvbGxpbmdSZWFzb25zIHN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucyhjb25zdCBG
cmFtZVZpZXcmKSBjb25zdDsKICAgICBib29sIHNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRp
b25TeW5jaHJvbm91c2x5KCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lT
Y3JvbGxhYmxlQXJlYShTY3JvbGxhYmxlQXJlYSopIHsgfQotICAgIHZpcnR1YWwgdm9pZCBzY3Jv
bGxhYmxlQXJlYVNjcm9sbExheWVyRGlkQ2hhbmdlKFNjcm9sbGFibGVBcmVhKikgeyB9Ci0gICAg
dmlydHVhbCB2b2lkIHNjcm9sbGFibGVBcmVhU2Nyb2xsYmFyTGF5ZXJEaWRDaGFuZ2UoU2Nyb2xs
YWJsZUFyZWEqLCBTY3JvbGxiYXJPcmllbnRhdGlvbikgeyB9CisgICAgdmlydHVhbCB2b2lkIHdp
bGxEZXN0cm95U2Nyb2xsYWJsZUFyZWEoU2Nyb2xsYWJsZUFyZWEmKSB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgc2Nyb2xsYWJsZUFyZWFTY3JvbGxMYXllckRpZENoYW5nZShTY3JvbGxhYmxlQXJlYSYp
IHsgfQorICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxhYmxlQXJlYVNjcm9sbGJhckxheWVyRGlkQ2hh
bmdlKFNjcm9sbGFibGVBcmVhJiwgU2Nyb2xsYmFyT3JpZW50YXRpb24pIHsgfQogCiAgICAgc3Rh
dGljIFN0cmluZyBzeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnNBc1RleHQoU3luY2hyb25vdXNT
Y3JvbGxpbmdSZWFzb25zKTsKICAgICBTdHJpbmcgc3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25z
QXNUZXh0KCkgY29uc3Q7CiAKLSAgICBSZWdpb24gY29tcHV0ZU5vbkZhc3RTY3JvbGxhYmxlUmVn
aW9uKGNvbnN0IEZyYW1lKiwgY29uc3QgSW50UG9pbnQmIGZyYW1lTG9jYXRpb24pIGNvbnN0Owor
ICAgIFJlZ2lvbiBjb21wdXRlTm9uRmFzdFNjcm9sbGFibGVSZWdpb24oY29uc3QgRnJhbWUmLCBj
b25zdCBJbnRQb2ludCYgZnJhbWVMb2NhdGlvbikgY29uc3Q7CiAKIHByb3RlY3RlZDoKICAgICBl
eHBsaWNpdCBTY3JvbGxpbmdDb29yZGluYXRvcihQYWdlKik7CiAKLSAgICBzdGF0aWMgR3JhcGhp
Y3NMYXllciogc2Nyb2xsTGF5ZXJGb3JTY3JvbGxhYmxlQXJlYShTY3JvbGxhYmxlQXJlYSopOwor
ICAgIHN0YXRpYyBHcmFwaGljc0xheWVyKiBzY3JvbGxMYXllckZvclNjcm9sbGFibGVBcmVhKFNj
cm9sbGFibGVBcmVhJik7CiAKICAgICB1bnNpZ25lZCBjb21wdXRlQ3VycmVudFdoZWVsRXZlbnRI
YW5kbGVyQ291bnQoKTsKLSAgICBHcmFwaGljc0xheWVyKiBzY3JvbGxMYXllckZvckZyYW1lVmll
dyhGcmFtZVZpZXcqKTsKLSAgICBHcmFwaGljc0xheWVyKiBjb3VudGVyU2Nyb2xsaW5nTGF5ZXJG
b3JGcmFtZVZpZXcoRnJhbWVWaWV3Kik7Ci0gICAgR3JhcGhpY3NMYXllciogaW5zZXRDbGlwTGF5
ZXJGb3JGcmFtZVZpZXcoRnJhbWVWaWV3Kik7Ci0gICAgR3JhcGhpY3NMYXllciogcm9vdENvbnRl
bnRMYXllckZvckZyYW1lVmlldyhGcmFtZVZpZXcqKTsKLSAgICBHcmFwaGljc0xheWVyKiBjb250
ZW50U2hhZG93TGF5ZXJGb3JGcmFtZVZpZXcoRnJhbWVWaWV3Kik7Ci0gICAgR3JhcGhpY3NMYXll
ciogaGVhZGVyTGF5ZXJGb3JGcmFtZVZpZXcoRnJhbWVWaWV3Kik7Ci0gICAgR3JhcGhpY3NMYXll
ciogZm9vdGVyTGF5ZXJGb3JGcmFtZVZpZXcoRnJhbWVWaWV3Kik7CisgICAgR3JhcGhpY3NMYXll
ciogc2Nyb2xsTGF5ZXJGb3JGcmFtZVZpZXcoRnJhbWVWaWV3Jik7CisgICAgR3JhcGhpY3NMYXll
ciogY291bnRlclNjcm9sbGluZ0xheWVyRm9yRnJhbWVWaWV3KEZyYW1lVmlldyYpOworICAgIEdy
YXBoaWNzTGF5ZXIqIGluc2V0Q2xpcExheWVyRm9yRnJhbWVWaWV3KEZyYW1lVmlldyYpOworICAg
IEdyYXBoaWNzTGF5ZXIqIHJvb3RDb250ZW50TGF5ZXJGb3JGcmFtZVZpZXcoRnJhbWVWaWV3Jik7
CisgICAgR3JhcGhpY3NMYXllciogY29udGVudFNoYWRvd0xheWVyRm9yRnJhbWVWaWV3KEZyYW1l
VmlldyYpOworICAgIEdyYXBoaWNzTGF5ZXIqIGhlYWRlckxheWVyRm9yRnJhbWVWaWV3KEZyYW1l
VmlldyYpOworICAgIEdyYXBoaWNzTGF5ZXIqIGZvb3RlckxheWVyRm9yRnJhbWVWaWV3KEZyYW1l
VmlldyYpOwogCiAgICAgUGFnZSogbV9wYWdlOyAvLyBGSVhNRTogaWRlYWxseSB0aGlzIHdvdWxk
IGJlIGEgcmVmZXJlbmNlIGJ1dCBpdCBnZXRzIG51bGxlZCBvbiBhc3luYyB0ZWFyZG93bi4KIAog
cHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgcmVjb21wdXRlV2hlZWxFdmVudEhhbmRsZXJDb3Vu
dEZvckZyYW1lVmlldyhGcmFtZVZpZXcqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVjb21wdXRl
V2hlZWxFdmVudEhhbmRsZXJDb3VudEZvckZyYW1lVmlldyhGcmFtZVZpZXcmKSB7IH0KICAgICB2
aXJ0dWFsIHZvaWQgc2V0U3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zKFN5bmNocm9ub3VzU2Ny
b2xsaW5nUmVhc29ucykgeyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgaGFzVmlzaWJsZVNsb3dSZXBh
aW50Vmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHMoRnJhbWVWaWV3KikgY29uc3Q7Ci0gICAgdm9p
ZCB1cGRhdGVTeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMoRnJhbWVWaWV3Kik7CisgICAgdmly
dHVhbCBib29sIGhhc1Zpc2libGVTbG93UmVwYWludFZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3Rz
KGNvbnN0IEZyYW1lVmlldyYpIGNvbnN0OworICAgIHZvaWQgdXBkYXRlU3luY2hyb25vdXNTY3Jv
bGxpbmdSZWFzb25zKEZyYW1lVmlldyYpOwogICAgIAogICAgIGJvb2wgbV9mb3JjZVN5bmNocm9u
b3VzU2Nyb2xsTGF5ZXJQb3NpdGlvblVwZGF0ZXM7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvY29vcmRpbmF0ZWRncmFwaGljcy9TY3JvbGxpbmdDb29yZGlu
YXRvckNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvY29vcmRpbmF0ZWRncmFwaGljcy9TY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3Jh
cGhpY3MuY3BwCmluZGV4IDI0Njg4NjUxZjdjMDY2NDE0YzliODVkNjU5N2Y1ZWFiYWI1YThjMjUu
LjFkZDA3NTJhZTliYTdiODU0ZWQzZDBmY2FiZmM4Yzc2ZmIwNGJhYmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xsaW5n
Q29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9jb29yZGluYXRlZGdyYXBoaWNzL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ29v
cmRpbmF0ZWRHcmFwaGljcy5jcHAKQEAgLTk0LDE2ICs5NCwxNiBAQCB2b2lkIFNjcm9sbGluZ0Nv
b3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljczo6dXBkYXRlVmlld3BvcnRDb25zdHJhaW5lZE5v
ZGUoU2NybwogICAgIH0KIH0KIAotdm9pZCBTY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVk
R3JhcGhpY3M6OnNjcm9sbGFibGVBcmVhU2Nyb2xsTGF5ZXJEaWRDaGFuZ2UoU2Nyb2xsYWJsZUFy
ZWEqIHNjcm9sbGFibGVBcmVhKQordm9pZCBTY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVk
R3JhcGhpY3M6OnNjcm9sbGFibGVBcmVhU2Nyb2xsTGF5ZXJEaWRDaGFuZ2UoU2Nyb2xsYWJsZUFy
ZWEmIHNjcm9sbGFibGVBcmVhKQogewogICAgIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllciogbGF5
ZXIgPSB0b0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllcihzY3JvbGxMYXllckZvclNjcm9sbGFibGVB
cmVhKHNjcm9sbGFibGVBcmVhKSk7CiAgICAgaWYgKCFsYXllcikKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgbGF5ZXItPnNldFNjcm9sbGFibGVBcmVhKHNjcm9sbGFibGVBcmVhKTsKKyAgICBsYXll
ci0+c2V0U2Nyb2xsYWJsZUFyZWEoJnNjcm9sbGFibGVBcmVhKTsKIH0KIAotdm9pZCBTY3JvbGxp
bmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3M6OndpbGxEZXN0cm95U2Nyb2xsYWJsZUFy
ZWEoU2Nyb2xsYWJsZUFyZWEqIHNjcm9sbGFibGVBcmVhKQordm9pZCBTY3JvbGxpbmdDb29yZGlu
YXRvckNvb3JkaW5hdGVkR3JhcGhpY3M6OndpbGxEZXN0cm95U2Nyb2xsYWJsZUFyZWEoU2Nyb2xs
YWJsZUFyZWEmIHNjcm9sbGFibGVBcmVhKQogewogICAgIENvb3JkaW5hdGVkR3JhcGhpY3NMYXll
ciogbGF5ZXIgPSB0b0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllcihzY3JvbGxMYXllckZvclNjcm9s
bGFibGVBcmVhKHNjcm9sbGFibGVBcmVhKSk7CiAgICAgaWYgKCFsYXllcikKQEAgLTExMiwxMyAr
MTEyLDEzIEBAIHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzOjp3
aWxsRGVzdHJveVNjcm9sbGFibGVBcmVhKFNjcm9sbGFiCiAgICAgbGF5ZXItPnNldFNjcm9sbGFi
bGVBcmVhKDApOwogfQogCi1ib29sIFNjcm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFw
aGljczo6cmVxdWVzdFNjcm9sbFBvc2l0aW9uVXBkYXRlKEZyYW1lVmlldyogZnJhbWVWaWV3LCBj
b25zdCBJbnRQb2ludCYgc2Nyb2xsUG9zaXRpb24pCitib29sIFNjcm9sbGluZ0Nvb3JkaW5hdG9y
Q29vcmRpbmF0ZWRHcmFwaGljczo6cmVxdWVzdFNjcm9sbFBvc2l0aW9uVXBkYXRlKEZyYW1lVmll
dyYgZnJhbWVWaWV3LCBjb25zdCBJbnRQb2ludCYgc2Nyb2xsUG9zaXRpb24pCiB7Ci0gICAgaWYg
KCFmcmFtZVZpZXctPmRlbGVnYXRlc1Njcm9sbGluZygpKQorICAgIGlmICghZnJhbWVWaWV3LmRl
bGVnYXRlc1Njcm9sbGluZygpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBmcmFtZVZp
ZXctPnNldEZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0KEludFJlY3Qoc2Nyb2xsUG9zaXRpb24sIGZy
YW1lVmlldy0+dmlzaWJsZUNvbnRlbnRSZWN0KCkuc2l6ZSgpKSk7Ci0gICAgZnJhbWVWaWV3LT5o
b3N0V2luZG93KCktPmRlbGVnYXRlZFNjcm9sbFJlcXVlc3RlZChzY3JvbGxQb3NpdGlvbik7Cisg
ICAgZnJhbWVWaWV3LnNldEZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0KEludFJlY3Qoc2Nyb2xsUG9z
aXRpb24sIGZyYW1lVmlldy52aXNpYmxlQ29udGVudFJlY3QoKS5zaXplKCkpKTsKKyAgICBmcmFt
ZVZpZXcuaG9zdFdpbmRvdygpLT5kZWxlZ2F0ZWRTY3JvbGxSZXF1ZXN0ZWQoc2Nyb2xsUG9zaXRp
b24pOwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9jb29yZGluYXRlZGdyYXBoaWNzL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ29v
cmRpbmF0ZWRHcmFwaGljcy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29vcmRp
bmF0ZWRncmFwaGljcy9TY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3MuaApp
bmRleCBlZGVmMGI3NTU2MGQ4MGNhYjc0Njc5NDhiMjZkMzAzYjU3M2I5YjliLi5hMTIwMDcyNWUz
OWI2MmM1Y2EyMjMyYmQ3OTAyNGQ3YTc2MWE1NzU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9jb29yZGluYXRlZGdyYXBoaWNzL1Njcm9sbGluZ0Nvb3JkaW5hdG9y
Q29vcmRpbmF0ZWRHcmFwaGljcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBo
aWNzLmgKQEAgLTQ3LDEwICs0NywxMCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgdXBk
YXRlVmlld3BvcnRDb25zdHJhaW5lZE5vZGUoU2Nyb2xsaW5nTm9kZUlELCBjb25zdCBWaWV3cG9y
dENvbnN0cmFpbnRzJiwgR3JhcGhpY3NMYXllciopIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2
b2lkIHNjcm9sbGFibGVBcmVhU2Nyb2xsTGF5ZXJEaWRDaGFuZ2UoU2Nyb2xsYWJsZUFyZWEqKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lTY3JvbGxhYmxlQXJlYShTY3Jv
bGxhYmxlQXJlYSopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxhYmxlQXJlYVNj
cm9sbExheWVyRGlkQ2hhbmdlKFNjcm9sbGFibGVBcmVhJikgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCB2b2lkIHdpbGxEZXN0cm95U2Nyb2xsYWJsZUFyZWEoU2Nyb2xsYWJsZUFyZWEmKSBvdmVycmlk
ZTsKIAotICAgIHZpcnR1YWwgYm9vbCByZXF1ZXN0U2Nyb2xsUG9zaXRpb25VcGRhdGUoRnJhbWVW
aWV3KiwgY29uc3QgSW50UG9pbnQmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgcmVxdWVz
dFNjcm9sbFBvc2l0aW9uVXBkYXRlKEZyYW1lVmlldyYsIGNvbnN0IEludFBvaW50Jikgb3ZlcnJp
ZGU7CiAKIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPFNjcm9sbGluZ1N0YXRlVHJlZT4g
bV9zY3JvbGxpbmdTdGF0ZVRyZWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9tYWMvU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWMuaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdDb29yZGluYXRvck1hYy5oCmluZGV4IGZjODI5YTRk
NTk4NWU5NmM4NWE3YTExYzU4MTVlYjIzNGJlNjk4MDkuLjg3NjYzZmIwMzNiZGIzOWUyMDY5OTAz
ZWI5Y2U0NmRhNTdhNzAyMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL21hYy9TY3JvbGxpbmdDb29yZGluYXRvck1hYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdDb29yZGluYXRvck1hYy5oCkBAIC00OCw3ICs0OCw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY29tbWl0VHJlZVN0YXRlSWZOZWVkZWQoKSBv
dmVycmlkZTsKIAogICAgIC8vIEhhbmRsZSB0aGUgd2hlZWwgZXZlbnQgb24gdGhlIHNjcm9sbGlu
ZyB0aHJlYWQuIFJldHVybnMgd2hldGhlciB0aGUgZXZlbnQgd2FzIGhhbmRsZWQgb3Igbm90Lgot
ICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVXaGVlbEV2ZW50KEZyYW1lVmlldyosIGNvbnN0IFBsYXRm
b3JtV2hlZWxFdmVudCYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVXaGVlbEV2
ZW50KEZyYW1lVmlldyYsIGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYpIG92ZXJyaWRlOwogCiBw
cml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZVRyZWVTdGF0ZUNvbW1pdCgpIG92ZXJy
aWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9s
bGluZ0Nvb3JkaW5hdG9yTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFj
L1Njcm9sbGluZ0Nvb3JkaW5hdG9yTWFjLm1tCmluZGV4IDY4YTU0MjgxYmJlNjY2NDlkZTYwNDJj
Nzg5MGMwZTYyYWJhYTZlNWEuLmVhMTM5Mjc5OTBiMGJmOWM5ODBkNGIxOGMwMTQ5OGUzN2VmZGMz
MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxp
bmdDb29yZGluYXRvck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9t
YWMvU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWMubW0KQEAgLTg2LDcgKzg2LDcgQEAgdm9pZCBTY3Jv
bGxpbmdDb29yZGluYXRvck1hYzo6Y29tbWl0VHJlZVN0YXRlSWZOZWVkZWQoKQogICAgIG1fc2Ny
b2xsaW5nU3RhdGVUcmVlQ29tbWl0dGVyVGltZXIuc3RvcCgpOwogfQogCi1ib29sIFNjcm9sbGlu
Z0Nvb3JkaW5hdG9yTWFjOjpoYW5kbGVXaGVlbEV2ZW50KEZyYW1lVmlldyosIGNvbnN0IFBsYXRm
b3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCkKK2Jvb2wgU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWM6
OmhhbmRsZVdoZWVsRXZlbnQoRnJhbWVWaWV3JiwgY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3
aGVlbEV2ZW50KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKG1f
cGFnZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCBmNzgy
OGFiZTY3MGY5ODU2ZDQwZTJjMzY2ZDQwZWRhMTRmY2I1Mzk5Li5iZDc3YWYwOTA0MGM4MDA4MTFk
ZjkzMjhkMGRkMjU4YjFlZGY4Y2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllci5jcHAKQEAgLTM2MCw3ICszNjAsNyBAQCBSZW5kZXJMYXllcjo6flJlbmRlckxheWVyKCkK
IAogICAgIGlmIChyZW5kZXJlcigpLmZyYW1lKCkucGFnZSgpKSB7CiAgICAgICAgIGlmIChTY3Jv
bGxpbmdDb29yZGluYXRvciogc2Nyb2xsaW5nQ29vcmRpbmF0b3IgPSByZW5kZXJlcigpLmZyYW1l
KCkucGFnZSgpLT5zY3JvbGxpbmdDb29yZGluYXRvcigpKQotICAgICAgICAgICAgc2Nyb2xsaW5n
Q29vcmRpbmF0b3ItPndpbGxEZXN0cm95U2Nyb2xsYWJsZUFyZWEodGhpcyk7CisgICAgICAgICAg
ICBzY3JvbGxpbmdDb29yZGluYXRvci0+d2lsbERlc3Ryb3lTY3JvbGxhYmxlQXJlYSgqdGhpcyk7
CiAgICAgfQogCiAgICAgaWYgKG1fcmVmbGVjdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKaW5kZXggYTkwYTQ5ZTg3Mjk3NmRkZTA0ZTc0
MmYxOTdmOTllNGVjMTlhZmNjOC4uYWVhZmNjOWY3MzIyZjY0MGJhNGQzM2M0MzExNzkwYzhjNjFk
ZTRmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFj
a2luZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2lu
Zy5jcHAKQEAgLTEyOTUsOSArMTI5NSw5IEBAIGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRh
dGVPdmVyZmxvd0NvbnRyb2xzTGF5ZXJzKGJvb2wgbmVlZHNIb3Jpem9udGFsU2Nyb2xsCiAKICAg
ICBpZiAoU2Nyb2xsaW5nQ29vcmRpbmF0b3IqIHNjcm9sbGluZ0Nvb3JkaW5hdG9yID0gc2Nyb2xs
aW5nQ29vcmRpbmF0b3JGcm9tTGF5ZXIobV9vd25pbmdMYXllcikpIHsKICAgICAgICAgaWYgKGhv
cml6b250YWxTY3JvbGxiYXJMYXllckNoYW5nZWQpCi0gICAgICAgICAgICBzY3JvbGxpbmdDb29y
ZGluYXRvci0+c2Nyb2xsYWJsZUFyZWFTY3JvbGxiYXJMYXllckRpZENoYW5nZSgmbV9vd25pbmdM
YXllciwgSG9yaXpvbnRhbFNjcm9sbGJhcik7CisgICAgICAgICAgICBzY3JvbGxpbmdDb29yZGlu
YXRvci0+c2Nyb2xsYWJsZUFyZWFTY3JvbGxiYXJMYXllckRpZENoYW5nZShtX293bmluZ0xheWVy
LCBIb3Jpem9udGFsU2Nyb2xsYmFyKTsKICAgICAgICAgaWYgKHZlcnRpY2FsU2Nyb2xsYmFyTGF5
ZXJDaGFuZ2VkKQotICAgICAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPnNjcm9sbGFibGVB
cmVhU2Nyb2xsYmFyTGF5ZXJEaWRDaGFuZ2UoJm1fb3duaW5nTGF5ZXIsIFZlcnRpY2FsU2Nyb2xs
YmFyKTsKKyAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5zY3JvbGxhYmxlQXJlYVNj
cm9sbGJhckxheWVyRGlkQ2hhbmdlKG1fb3duaW5nTGF5ZXIsIFZlcnRpY2FsU2Nyb2xsYmFyKTsK
ICAgICB9CiAKICAgICByZXR1cm4gaG9yaXpvbnRhbFNjcm9sbGJhckxheWVyQ2hhbmdlZCB8fCB2
ZXJ0aWNhbFNjcm9sbGJhckxheWVyQ2hhbmdlZCB8fCBzY3JvbGxDb3JuZXJMYXllckNoYW5nZWQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3Np
dG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3Iu
Y3BwCmluZGV4IGU4ZDg1ZGRjMzBlMTY3MjI0YmU3MTJkZDU3Y2U2NmFiYjVhNDY5MGYuLmM3MjI4
N2VkMWUwMGUwMTJhZWZiMjgwZWUzZjcyMDA2NDBkOGMxZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCkBAIC05ODcsNyArOTg3
LDcgQEAgYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZUJhY2tpbmcoUmVuZGVyTGF5
ZXImIGxheWVyLCBDb21wb3NpdGluZ0NoYW5nZVIKICAgICAgICAgICAgIGlmIChsYXllci5pc1Jv
b3RMYXllcigpICYmICFtX3JlbmRlclZpZXcuZG9jdW1lbnQoKS5vd25lckVsZW1lbnQoKSkgewog
ICAgICAgICAgICAgICAgIHVwZGF0ZVNjcm9sbENvb3JkaW5hdGVkU3RhdHVzKGxheWVyKTsKICAg
ICAgICAgICAgICAgICBpZiAoU2Nyb2xsaW5nQ29vcmRpbmF0b3IqIHNjcm9sbGluZ0Nvb3JkaW5h
dG9yID0gdGhpcy0+c2Nyb2xsaW5nQ29vcmRpbmF0b3IoKSkKLSAgICAgICAgICAgICAgICAgICAg
c2Nyb2xsaW5nQ29vcmRpbmF0b3ItPmZyYW1lVmlld1Jvb3RMYXllckRpZENoYW5nZSgmbV9yZW5k
ZXJWaWV3LmZyYW1lVmlldygpKTsKKyAgICAgICAgICAgICAgICAgICAgc2Nyb2xsaW5nQ29vcmRp
bmF0b3ItPmZyYW1lVmlld1Jvb3RMYXllckRpZENoYW5nZShtX3JlbmRlclZpZXcuZnJhbWVWaWV3
KCkpOwogI2lmIEVOQUJMRShSVUJCRVJfQkFORElORykKICAgICAgICAgICAgICAgICBpZiAoUGFn
ZSogcGFnZSA9IHRoaXMtPnBhZ2UoKSkgewogICAgICAgICAgICAgICAgICAgICB1cGRhdGVMYXll
ckZvckhlYWRlcihwYWdlLT5oZWFkZXJIZWlnaHQoKSk7CkBAIC0xMDYxLDcgKzEwNjEsNyBAQCBi
b29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlQmFja2luZyhSZW5kZXJMYXllciYgbGF5
ZXIsIENvbXBvc2l0aW5nQ2hhbmdlUgogICAgICAgICB9CiAgICAgICAgIGlmIChsYXllckNoYW5n
ZWQpIHsKICAgICAgICAgICAgIGlmIChTY3JvbGxpbmdDb29yZGluYXRvciogc2Nyb2xsaW5nQ29v
cmRpbmF0b3IgPSB0aGlzLT5zY3JvbGxpbmdDb29yZGluYXRvcigpKQotICAgICAgICAgICAgICAg
IHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5mcmFtZVZpZXdGaXhlZE9iamVjdHNEaWRDaGFuZ2UoJm1f
cmVuZGVyVmlldy5mcmFtZVZpZXcoKSk7CisgICAgICAgICAgICAgICAgc2Nyb2xsaW5nQ29vcmRp
bmF0b3ItPmZyYW1lVmlld0ZpeGVkT2JqZWN0c0RpZENoYW5nZShtX3JlbmRlclZpZXcuZnJhbWVW
aWV3KCkpOwogICAgICAgICB9CiAgICAgfSBlbHNlCiAgICAgICAgIGxheWVyLnNldFZpZXdwb3J0
Q29uc3RyYWluZWROb3RDb21wb3NpdGVkUmVhc29uKFJlbmRlckxheWVyOjpOb05vdENvbXBvc2l0
ZWRSZWFzb24pOwpAQCAtMTcwNyw3ICsxNzA3LDcgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0
b3I6OmZyYW1lVmlld0RpZENoYW5nZVNpemUoKQogYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6
Omhhc0Nvb3JkaW5hdGVkU2Nyb2xsaW5nKCkgY29uc3QKIHsKICAgICBTY3JvbGxpbmdDb29yZGlu
YXRvciogc2Nyb2xsaW5nQ29vcmRpbmF0b3IgPSB0aGlzLT5zY3JvbGxpbmdDb29yZGluYXRvcigp
OwotICAgIHJldHVybiBzY3JvbGxpbmdDb29yZGluYXRvciAmJiBzY3JvbGxpbmdDb29yZGluYXRv
ci0+Y29vcmRpbmF0ZXNTY3JvbGxpbmdGb3JGcmFtZVZpZXcoJm1fcmVuZGVyVmlldy5mcmFtZVZp
ZXcoKSk7CisgICAgcmV0dXJuIHNjcm9sbGluZ0Nvb3JkaW5hdG9yICYmIHNjcm9sbGluZ0Nvb3Jk
aW5hdG9yLT5jb29yZGluYXRlc1Njcm9sbGluZ0ZvckZyYW1lVmlldyhtX3JlbmRlclZpZXcuZnJh
bWVWaWV3KCkpOwogfQogCiB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlU2Nyb2xs
TGF5ZXJQb3NpdGlvbigpCkBAIC0xNzY2LDcgKzE3NjYsNyBAQCB2b2lkIFJlbmRlckxheWVyQ29t
cG9zaXRvcjo6cm9vdEZpeGVkQmFja2dyb3VuZHNDaGFuZ2VkKCkKIHZvaWQgUmVuZGVyTGF5ZXJD
b21wb3NpdG9yOjpzY3JvbGxpbmdMYXllckRpZENoYW5nZShSZW5kZXJMYXllciYgbGF5ZXIpCiB7
CiAgICAgaWYgKFNjcm9sbGluZ0Nvb3JkaW5hdG9yKiBzY3JvbGxpbmdDb29yZGluYXRvciA9IHRo
aXMtPnNjcm9sbGluZ0Nvb3JkaW5hdG9yKCkpCi0gICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9y
LT5zY3JvbGxhYmxlQXJlYVNjcm9sbExheWVyRGlkQ2hhbmdlKCZsYXllcik7CisgICAgICAgIHNj
cm9sbGluZ0Nvb3JkaW5hdG9yLT5zY3JvbGxhYmxlQXJlYVNjcm9sbExheWVyRGlkQ2hhbmdlKGxh
eWVyKTsKIH0KIAogdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmZpeGVkUm9vdEJhY2tncm91
bmRMYXllckNoYW5nZWQoKQpAQCAtMzExMiw3ICszMTEyLDcgQEAgR3JhcGhpY3NMYXllciogUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVMYXllckZvckhlYWRlcihib29sIHdhbnRzTGF5ZXIp
CiAgICAgICAgICAgICAvLyBUaGUgU2Nyb2xsaW5nVHJlZSBrbm93cyBhYm91dCB0aGUgaGVhZGVy
IGxheWVyLCBhbmQgdGhlIHBvc2l0aW9uIG9mIHRoZSByb290IGxheWVyIGlzIGFmZmVjdGVkCiAg
ICAgICAgICAgICAvLyBieSB0aGUgaGVhZGVyIGxheWVyLCBzbyBpZiB3ZSByZW1vdmUgdGhlIGhl
YWRlciwgd2UgbmVlZCB0byB0ZWxsIHRoZSBzY3JvbGxpbmcgdHJlZS4KICAgICAgICAgICAgIGlm
IChTY3JvbGxpbmdDb29yZGluYXRvciogc2Nyb2xsaW5nQ29vcmRpbmF0b3IgPSB0aGlzLT5zY3Jv
bGxpbmdDb29yZGluYXRvcigpKQotICAgICAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9y
LT5mcmFtZVZpZXdSb290TGF5ZXJEaWRDaGFuZ2UoJm1fcmVuZGVyVmlldy5mcmFtZVZpZXcoKSk7
CisgICAgICAgICAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPmZyYW1lVmlld1Jvb3RMYXll
ckRpZENoYW5nZShtX3JlbmRlclZpZXcuZnJhbWVWaWV3KCkpOwogICAgICAgICB9CiAgICAgICAg
IHJldHVybiAwOwogICAgIH0KQEAgLTMxMzIsNyArMzEzMiw3IEBAIEdyYXBoaWNzTGF5ZXIqIFJl
bmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlTGF5ZXJGb3JIZWFkZXIoYm9vbCB3YW50c0xheWVy
KQogICAgIG1fbGF5ZXJGb3JIZWFkZXItPnNldFNpemUoRmxvYXRTaXplKG1fcmVuZGVyVmlldy5m
cmFtZVZpZXcoKS52aXNpYmxlV2lkdGgoKSwgbV9yZW5kZXJWaWV3LmZyYW1lVmlldygpLmhlYWRl
ckhlaWdodCgpKSk7CiAKICAgICBpZiAoU2Nyb2xsaW5nQ29vcmRpbmF0b3IqIHNjcm9sbGluZ0Nv
b3JkaW5hdG9yID0gdGhpcy0+c2Nyb2xsaW5nQ29vcmRpbmF0b3IoKSkKLSAgICAgICAgc2Nyb2xs
aW5nQ29vcmRpbmF0b3ItPmZyYW1lVmlld1Jvb3RMYXllckRpZENoYW5nZSgmbV9yZW5kZXJWaWV3
LmZyYW1lVmlldygpKTsKKyAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPmZyYW1lVmlld1Jv
b3RMYXllckRpZENoYW5nZShtX3JlbmRlclZpZXcuZnJhbWVWaWV3KCkpOwogCiAgICAgaWYgKFBh
Z2UqIHBhZ2UgPSB0aGlzLT5wYWdlKCkpCiAgICAgICAgIHBhZ2UtPmNocm9tZSgpLmNsaWVudCgp
LmRpZEFkZEhlYWRlckxheWVyKG1fbGF5ZXJGb3JIZWFkZXIuZ2V0KCkpOwpAQCAtMzE1Myw3ICsz
MTUzLDcgQEAgR3JhcGhpY3NMYXllciogUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVMYXll
ckZvckZvb3Rlcihib29sIHdhbnRzTGF5ZXIpCiAgICAgICAgICAgICAvLyBUaGUgU2Nyb2xsaW5n
VHJlZSBrbm93cyBhYm91dCB0aGUgZm9vdGVyIGxheWVyLCBhbmQgdGhlIHRvdGFsIHNjcm9sbGFi
bGUgc2l6ZSBpcyBhZmZlY3RlZAogICAgICAgICAgICAgLy8gYnkgdGhlIGZvb3RlciBsYXllciwg
c28gaWYgd2UgcmVtb3ZlIHRoZSBmb290ZXIsIHdlIG5lZWQgdG8gdGVsbCB0aGUgc2Nyb2xsaW5n
IHRyZWUuCiAgICAgICAgICAgICBpZiAoU2Nyb2xsaW5nQ29vcmRpbmF0b3IqIHNjcm9sbGluZ0Nv
b3JkaW5hdG9yID0gdGhpcy0+c2Nyb2xsaW5nQ29vcmRpbmF0b3IoKSkKLSAgICAgICAgICAgICAg
ICBzY3JvbGxpbmdDb29yZGluYXRvci0+ZnJhbWVWaWV3Um9vdExheWVyRGlkQ2hhbmdlKCZtX3Jl
bmRlclZpZXcuZnJhbWVWaWV3KCkpOworICAgICAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5h
dG9yLT5mcmFtZVZpZXdSb290TGF5ZXJEaWRDaGFuZ2UobV9yZW5kZXJWaWV3LmZyYW1lVmlldygp
KTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gMDsKICAgICB9CkBAIC0zMTczLDcgKzMxNzMs
NyBAQCBHcmFwaGljc0xheWVyKiBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZUxheWVyRm9y
Rm9vdGVyKGJvb2wgd2FudHNMYXllcikKICAgICBtX2xheWVyRm9yRm9vdGVyLT5zZXRTaXplKEZs
b2F0U2l6ZShtX3JlbmRlclZpZXcuZnJhbWVWaWV3KCkudmlzaWJsZVdpZHRoKCksIG1fcmVuZGVy
Vmlldy5mcmFtZVZpZXcoKS5mb290ZXJIZWlnaHQoKSkpOwogCiAgICAgaWYgKFNjcm9sbGluZ0Nv
b3JkaW5hdG9yKiBzY3JvbGxpbmdDb29yZGluYXRvciA9IHRoaXMtPnNjcm9sbGluZ0Nvb3JkaW5h
dG9yKCkpCi0gICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5mcmFtZVZpZXdSb290TGF5ZXJE
aWRDaGFuZ2UoJm1fcmVuZGVyVmlldy5mcmFtZVZpZXcoKSk7CisgICAgICAgIHNjcm9sbGluZ0Nv
b3JkaW5hdG9yLT5mcmFtZVZpZXdSb290TGF5ZXJEaWRDaGFuZ2UobV9yZW5kZXJWaWV3LmZyYW1l
VmlldygpKTsKIAogICAgIGlmIChQYWdlKiBwYWdlID0gdGhpcy0+cGFnZSgpKQogICAgICAgICBw
YWdlLT5jaHJvbWUoKS5jbGllbnQoKS5kaWRBZGRGb290ZXJMYXllcihtX2xheWVyRm9yRm9vdGVy
LmdldCgpKTsKQEAgLTMyODcsMTQgKzMyODcsMTQgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0
b3I6OnVwZGF0ZU92ZXJmbG93Q29udHJvbHNMYXllcnMoKQogICAgICAgICAgICAgbV9vdmVyZmxv
d0NvbnRyb2xzSG9zdExheWVyLT5hZGRDaGlsZChtX2xheWVyRm9ySG9yaXpvbnRhbFNjcm9sbGJh
ci5nZXQoKSk7CiAKICAgICAgICAgICAgIGlmIChTY3JvbGxpbmdDb29yZGluYXRvciogc2Nyb2xs
aW5nQ29vcmRpbmF0b3IgPSB0aGlzLT5zY3JvbGxpbmdDb29yZGluYXRvcigpKQotICAgICAgICAg
ICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5zY3JvbGxhYmxlQXJlYVNjcm9sbGJhckxheWVy
RGlkQ2hhbmdlKCZtX3JlbmRlclZpZXcuZnJhbWVWaWV3KCksIEhvcml6b250YWxTY3JvbGxiYXIp
OworICAgICAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5zY3JvbGxhYmxlQXJlYVNj
cm9sbGJhckxheWVyRGlkQ2hhbmdlKG1fcmVuZGVyVmlldy5mcmFtZVZpZXcoKSwgSG9yaXpvbnRh
bFNjcm9sbGJhcik7CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKG1fbGF5ZXJGb3JIb3Jpem9u
dGFsU2Nyb2xsYmFyKSB7CiAgICAgICAgIG1fbGF5ZXJGb3JIb3Jpem9udGFsU2Nyb2xsYmFyLT5y
ZW1vdmVGcm9tUGFyZW50KCk7CiAgICAgICAgIG1fbGF5ZXJGb3JIb3Jpem9udGFsU2Nyb2xsYmFy
ID0gbnVsbHB0cjsKIAogICAgICAgICBpZiAoU2Nyb2xsaW5nQ29vcmRpbmF0b3IqIHNjcm9sbGlu
Z0Nvb3JkaW5hdG9yID0gdGhpcy0+c2Nyb2xsaW5nQ29vcmRpbmF0b3IoKSkKLSAgICAgICAgICAg
IHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5zY3JvbGxhYmxlQXJlYVNjcm9sbGJhckxheWVyRGlkQ2hh
bmdlKCZtX3JlbmRlclZpZXcuZnJhbWVWaWV3KCksIEhvcml6b250YWxTY3JvbGxiYXIpOworICAg
ICAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPnNjcm9sbGFibGVBcmVhU2Nyb2xsYmFyTGF5
ZXJEaWRDaGFuZ2UobV9yZW5kZXJWaWV3LmZyYW1lVmlldygpLCBIb3Jpem9udGFsU2Nyb2xsYmFy
KTsKICAgICB9CiAKICAgICBpZiAocmVxdWlyZXNWZXJ0aWNhbFNjcm9sbGJhckxheWVyKCkpIHsK
QEAgLTMzMTAsMTQgKzMzMTAsMTQgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0
ZU92ZXJmbG93Q29udHJvbHNMYXllcnMoKQogICAgICAgICAgICAgbV9vdmVyZmxvd0NvbnRyb2xz
SG9zdExheWVyLT5hZGRDaGlsZChtX2xheWVyRm9yVmVydGljYWxTY3JvbGxiYXIuZ2V0KCkpOwog
CiAgICAgICAgICAgICBpZiAoU2Nyb2xsaW5nQ29vcmRpbmF0b3IqIHNjcm9sbGluZ0Nvb3JkaW5h
dG9yID0gdGhpcy0+c2Nyb2xsaW5nQ29vcmRpbmF0b3IoKSkKLSAgICAgICAgICAgICAgICBzY3Jv
bGxpbmdDb29yZGluYXRvci0+c2Nyb2xsYWJsZUFyZWFTY3JvbGxiYXJMYXllckRpZENoYW5nZSgm
bV9yZW5kZXJWaWV3LmZyYW1lVmlldygpLCBWZXJ0aWNhbFNjcm9sbGJhcik7CisgICAgICAgICAg
ICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPnNjcm9sbGFibGVBcmVhU2Nyb2xsYmFyTGF5ZXJE
aWRDaGFuZ2UobV9yZW5kZXJWaWV3LmZyYW1lVmlldygpLCBWZXJ0aWNhbFNjcm9sbGJhcik7CiAg
ICAgICAgIH0KICAgICB9IGVsc2UgaWYgKG1fbGF5ZXJGb3JWZXJ0aWNhbFNjcm9sbGJhcikgewog
ICAgICAgICBtX2xheWVyRm9yVmVydGljYWxTY3JvbGxiYXItPnJlbW92ZUZyb21QYXJlbnQoKTsK
ICAgICAgICAgbV9sYXllckZvclZlcnRpY2FsU2Nyb2xsYmFyID0gbnVsbHB0cjsKIAogICAgICAg
ICBpZiAoU2Nyb2xsaW5nQ29vcmRpbmF0b3IqIHNjcm9sbGluZ0Nvb3JkaW5hdG9yID0gdGhpcy0+
c2Nyb2xsaW5nQ29vcmRpbmF0b3IoKSkKLSAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9y
LT5zY3JvbGxhYmxlQXJlYVNjcm9sbGJhckxheWVyRGlkQ2hhbmdlKCZtX3JlbmRlclZpZXcuZnJh
bWVWaWV3KCksIFZlcnRpY2FsU2Nyb2xsYmFyKTsKKyAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3Jk
aW5hdG9yLT5zY3JvbGxhYmxlQXJlYVNjcm9sbGJhckxheWVyRGlkQ2hhbmdlKG1fcmVuZGVyVmll
dy5mcmFtZVZpZXcoKSwgVmVydGljYWxTY3JvbGxiYXIpOwogICAgIH0KIAogICAgIGlmIChyZXF1
aXJlc1Njcm9sbENvcm5lckxheWVyKCkpIHsKQEAgLTM0MzcsNyArMzQzNyw3IEBAIHZvaWQgUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yOjpkZXN0cm95Um9vdExheWVyKCkKICAgICAgICAgbV9sYXllckZv
ckhvcml6b250YWxTY3JvbGxiYXItPnJlbW92ZUZyb21QYXJlbnQoKTsKICAgICAgICAgbV9sYXll
ckZvckhvcml6b250YWxTY3JvbGxiYXIgPSBudWxscHRyOwogICAgICAgICBpZiAoU2Nyb2xsaW5n
Q29vcmRpbmF0b3IqIHNjcm9sbGluZ0Nvb3JkaW5hdG9yID0gdGhpcy0+c2Nyb2xsaW5nQ29vcmRp
bmF0b3IoKSkKLSAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5zY3JvbGxhYmxlQXJl
YVNjcm9sbGJhckxheWVyRGlkQ2hhbmdlKCZtX3JlbmRlclZpZXcuZnJhbWVWaWV3KCksIEhvcml6
b250YWxTY3JvbGxiYXIpOworICAgICAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPnNjcm9s
bGFibGVBcmVhU2Nyb2xsYmFyTGF5ZXJEaWRDaGFuZ2UobV9yZW5kZXJWaWV3LmZyYW1lVmlldygp
LCBIb3Jpem9udGFsU2Nyb2xsYmFyKTsKICAgICAgICAgaWYgKFNjcm9sbGJhciogaG9yaXpvbnRh
bFNjcm9sbGJhciA9IG1fcmVuZGVyVmlldy5mcmFtZVZpZXcoKS52ZXJ0aWNhbFNjcm9sbGJhcigp
KQogICAgICAgICAgICAgbV9yZW5kZXJWaWV3LmZyYW1lVmlldygpLmludmFsaWRhdGVTY3JvbGxi
YXIoaG9yaXpvbnRhbFNjcm9sbGJhciwgSW50UmVjdChJbnRQb2ludCgwLCAwKSwgaG9yaXpvbnRh
bFNjcm9sbGJhci0+ZnJhbWVSZWN0KCkuc2l6ZSgpKSk7CiAgICAgfQpAQCAtMzQ0Niw3ICszNDQ2
LDcgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmRlc3Ryb3lSb290TGF5ZXIoKQogICAg
ICAgICBtX2xheWVyRm9yVmVydGljYWxTY3JvbGxiYXItPnJlbW92ZUZyb21QYXJlbnQoKTsKICAg
ICAgICAgbV9sYXllckZvclZlcnRpY2FsU2Nyb2xsYmFyID0gbnVsbHB0cjsKICAgICAgICAgaWYg
KFNjcm9sbGluZ0Nvb3JkaW5hdG9yKiBzY3JvbGxpbmdDb29yZGluYXRvciA9IHRoaXMtPnNjcm9s
bGluZ0Nvb3JkaW5hdG9yKCkpCi0gICAgICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+c2Ny
b2xsYWJsZUFyZWFTY3JvbGxiYXJMYXllckRpZENoYW5nZSgmbV9yZW5kZXJWaWV3LmZyYW1lVmll
dygpLCBWZXJ0aWNhbFNjcm9sbGJhcik7CisgICAgICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRv
ci0+c2Nyb2xsYWJsZUFyZWFTY3JvbGxiYXJMYXllckRpZENoYW5nZShtX3JlbmRlclZpZXcuZnJh
bWVWaWV3KCksIFZlcnRpY2FsU2Nyb2xsYmFyKTsKICAgICAgICAgaWYgKFNjcm9sbGJhciogdmVy
dGljYWxTY3JvbGxiYXIgPSBtX3JlbmRlclZpZXcuZnJhbWVWaWV3KCkudmVydGljYWxTY3JvbGxi
YXIoKSkKICAgICAgICAgICAgIG1fcmVuZGVyVmlldy5mcmFtZVZpZXcoKS5pbnZhbGlkYXRlU2Ny
b2xsYmFyKHZlcnRpY2FsU2Nyb2xsYmFyLCBJbnRSZWN0KEludFBvaW50KDAsIDApLCB2ZXJ0aWNh
bFNjcm9sbGJhci0+ZnJhbWVSZWN0KCkuc2l6ZSgpKSk7CiAgICAgfQpAQCAtMzgxNiw3ICszODE2
LDcgQEAgU2Nyb2xsaW5nTm9kZUlEIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6YXR0YWNoU2Nyb2xs
aW5nTm9kZShSZW5kZXJMYXllciYgbGF5ZXIsIFMKIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9y
Ojp1cGRhdGVTY3JvbGxDb29yZGluYXRpb25Gb3JUaGlzRnJhbWUoU2Nyb2xsaW5nTm9kZUlEIHBh
cmVudE5vZGVJRCkKIHsKICAgICBTY3JvbGxpbmdDb29yZGluYXRvciogc2Nyb2xsaW5nQ29vcmRp
bmF0b3IgPSB0aGlzLT5zY3JvbGxpbmdDb29yZGluYXRvcigpOwotICAgIEFTU0VSVChzY3JvbGxp
bmdDb29yZGluYXRvci0+Y29vcmRpbmF0ZXNTY3JvbGxpbmdGb3JGcmFtZVZpZXcoJm1fcmVuZGVy
Vmlldy5mcmFtZVZpZXcoKSkpOworICAgIEFTU0VSVChzY3JvbGxpbmdDb29yZGluYXRvci0+Y29v
cmRpbmF0ZXNTY3JvbGxpbmdGb3JGcmFtZVZpZXcobV9yZW5kZXJWaWV3LmZyYW1lVmlldygpKSk7
CiAKICAgICBTY3JvbGxpbmdOb2RlSUQgbm9kZUlEID0gYXR0YWNoU2Nyb2xsaW5nTm9kZSgqbV9y
ZW5kZXJWaWV3LmxheWVyKCksIEZyYW1lU2Nyb2xsaW5nTm9kZSwgcGFyZW50Tm9kZUlEKTsKICAg
ICBzY3JvbGxpbmdDb29yZGluYXRvci0+dXBkYXRlRnJhbWVTY3JvbGxpbmdOb2RlKG5vZGVJRCwg
bV9zY3JvbGxMYXllci5nZXQoKSwgbV9yb290Q29udGVudExheWVyLmdldCgpLCBmaXhlZFJvb3RC
YWNrZ3JvdW5kTGF5ZXIoKSwgY2xpcExheWVyKCkpOwpAQCAtMzgyNSw3ICszODI1LDcgQEAgdm9p
ZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZVNjcm9sbENvb3JkaW5hdGlvbkZvclRoaXNG
cmFtZShTY3JvbGxpbmdOb2RlSUQKIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVT
Y3JvbGxDb29yZGluYXRlZExheWVyKFJlbmRlckxheWVyJiBsYXllciwgU2Nyb2xsQ29vcmRpbmF0
aW9uUmVhc29ucyByZWFzb25zKQogewogICAgIFNjcm9sbGluZ0Nvb3JkaW5hdG9yKiBzY3JvbGxp
bmdDb29yZGluYXRvciA9IHRoaXMtPnNjcm9sbGluZ0Nvb3JkaW5hdG9yKCk7Ci0gICAgaWYgKCFz
Y3JvbGxpbmdDb29yZGluYXRvciB8fCAhc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPmNvb3JkaW5hdGVz
U2Nyb2xsaW5nRm9yRnJhbWVWaWV3KCZtX3JlbmRlclZpZXcuZnJhbWVWaWV3KCkpKQorICAgIGlm
ICghc2Nyb2xsaW5nQ29vcmRpbmF0b3IgfHwgIXNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5jb29yZGlu
YXRlc1Njcm9sbGluZ0ZvckZyYW1lVmlldyhtX3JlbmRlclZpZXcuZnJhbWVWaWV3KCkpKQogICAg
ICAgICByZXR1cm47CiAKICAgICBib29sIGlzUm9vdExheWVyID0gJmxheWVyID09IG1fcmVuZGVy
Vmlldy5sYXllcigpOwpAQCAtNDAxOSw3ICs0MDE5LDcgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBv
c2l0b3I6OndpbGxSZW1vdmVTY3JvbGxpbmdMYXllcldpdGhCYWNraW5nKFJlbmRlckxheWVyJiBs
YXkKICAgICAgICAgYmFja2luZy5kZXRhY2hGcm9tU2Nyb2xsaW5nQ29vcmRpbmF0b3IoKTsKIAog
ICAgICAgICAvLyBGb3IgQ29vcmRpbmF0ZWQgR3JhcGhpY3MuCi0gICAgICAgIHNjcm9sbGluZ0Nv
b3JkaW5hdG9yLT5zY3JvbGxhYmxlQXJlYVNjcm9sbExheWVyRGlkQ2hhbmdlKCZsYXllcik7Cisg
ICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5zY3JvbGxhYmxlQXJlYVNjcm9sbExheWVyRGlk
Q2hhbmdlKGxheWVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNDA0NCw3ICs0MDQ0
LDcgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmRpZEFkZFNjcm9sbGluZ0xheWVyKFJl
bmRlckxheWVyJiBsYXllcikKIAogICAgIGlmIChTY3JvbGxpbmdDb29yZGluYXRvciogc2Nyb2xs
aW5nQ29vcmRpbmF0b3IgPSB0aGlzLT5zY3JvbGxpbmdDb29yZGluYXRvcigpKSB7CiAgICAgICAg
IC8vIEZvciBDb29yZGluYXRlZCBHcmFwaGljcy4KLSAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0
b3ItPnNjcm9sbGFibGVBcmVhU2Nyb2xsTGF5ZXJEaWRDaGFuZ2UoJmxheWVyKTsKKyAgICAgICAg
c2Nyb2xsaW5nQ29vcmRpbmF0b3ItPnNjcm9sbGFibGVBcmVhU2Nyb2xsTGF5ZXJEaWRDaGFuZ2Uo
bGF5ZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5jcHAKaW5kZXggNzExOGZjN2YwNWJhZTNjM2M0OTA0YmFlN2U1ZDNiZDg0NWEyNTM3MC4u
NGFhMDFlYmUwODliY2VkZDU1OTI2M2YwNzNlYzRmMmNhY2U5ZjMzNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMTc3MSw3ICsxNzcxLDcgQEAgUmVmUHRyPENsaWVudFJl
Y3RMaXN0PiBJbnRlcm5hbHM6Om5vbkZhc3RTY3JvbGxhYmxlUmVjdHMoRXhjZXB0aW9uQ29kZSYg
ZWMpIGNvbnMKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAg
cmV0dXJuIHBhZ2UtPm5vbkZhc3RTY3JvbGxhYmxlUmVjdHMoZG9jdW1lbnQtPmZyYW1lKCkpOwor
ICAgIHJldHVybiBwYWdlLT5ub25GYXN0U2Nyb2xsYWJsZVJlY3RzKCpkb2N1bWVudC0+ZnJhbWUo
KSk7CiB9CiAKIHZvaWQgSW50ZXJuYWxzOjpnYXJiYWdlQ29sbGVjdERvY3VtZW50UmVzb3VyY2Vz
KEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9TY3JvbGxpbmcvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvU2Nyb2xsaW5nL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yLmgK
aW5kZXggNWE1MDFmYzMwNTE4ODY4ZjYxOWI1YTFlYzVlYzFhNmIzODYyZTdlOS4uNjE3MWRkZGEx
ZDYyMTIyNzI5MzAxZTdhMDRiYWM4M2YwMjFiYzE1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9TY3JvbGxpbmcvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Njcm9sbGluZy9SZW1vdGVTY3JvbGxpbmdDb29y
ZGluYXRvci5oCkBAIC02MSw3ICs2MSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGlz
UmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3IoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVl
OyB9CiAgICAgCiAgICAgLy8gU2Nyb2xsaW5nQ29vcmRpbmF0b3IKLSAgICB2aXJ0dWFsIGJvb2wg
Y29vcmRpbmF0ZXNTY3JvbGxpbmdGb3JGcmFtZVZpZXcoV2ViQ29yZTo6RnJhbWVWaWV3KikgY29u
c3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29sIGNvb3JkaW5hdGVzU2Nyb2xsaW5nRm9yRnJh
bWVWaWV3KGNvbnN0IFdlYkNvcmU6OkZyYW1lVmlldyYpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZp
cnR1YWwgdm9pZCBzY2hlZHVsZVRyZWVTdGF0ZUNvbW1pdCgpIG92ZXJyaWRlOwogCiAgICAgdmly
dHVhbCBib29sIGlzUnViYmVyQmFuZEluUHJvZ3Jlc3MoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvU2Nyb2xsaW5nL1JlbW90ZVNjcm9sbGlu
Z0Nvb3JkaW5hdG9yLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9TY3JvbGxpbmcvUmVt
b3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3IubW0KaW5kZXggYTY4MDg4MWMyZGExNzlkMWMxZGNlMzFj
ZTkyNWM5MTRlMDQyZGVkYS4uZjc3NzM5ODI0NzhlZWFmMzA4NzllNjgxM2FkN2U3NzJhZDE0MGVi
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9TY3JvbGxpbmcvUmVtb3Rl
U2Nyb2xsaW5nQ29vcmRpbmF0b3IubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9T
Y3JvbGxpbmcvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3IubW0KQEAgLTY3LDkgKzY3LDkgQEAg
dm9pZCBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvcjo6c2NoZWR1bGVUcmVlU3RhdGVDb21taXQo
KQogICAgIG1fd2ViUGFnZS0+ZHJhd2luZ0FyZWEoKS0+c2NoZWR1bGVDb21wb3NpdGluZ0xheWVy
Rmx1c2goKTsKIH0KIAotYm9vbCBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvcjo6Y29vcmRpbmF0
ZXNTY3JvbGxpbmdGb3JGcmFtZVZpZXcoRnJhbWVWaWV3KiBmcmFtZVZpZXcpIGNvbnN0Citib29s
IFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpjb29yZGluYXRlc1Njcm9sbGluZ0ZvckZyYW1l
Vmlldyhjb25zdCBGcmFtZVZpZXcmIGZyYW1lVmlldykgY29uc3QKIHsKLSAgICBSZW5kZXJWaWV3
KiByZW5kZXJWaWV3ID0gZnJhbWVWaWV3LT5yZW5kZXJWaWV3KCk7CisgICAgUmVuZGVyVmlldyog
cmVuZGVyVmlldyA9IGZyYW1lVmlldy5yZW5kZXJWaWV3KCk7CiAgICAgcmV0dXJuIHJlbmRlclZp
ZXcgJiYgcmVuZGVyVmlldy0+dXNlc0NvbXBvc2l0aW5nKCk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249699</attachid>
            <date>2015-03-29 14:08:02 -0700</date>
            <delta_ts>2015-03-29 16:32:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143198-20150329140720.patch</filename>
            <type>text/plain</type>
            <size>75304</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgyMTE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTRhYTRmOGE3Zjk4OTFh
YTY1NDRkZTYzMDNjODgzNzRmYWVkMjJjNS4uNzM1Y2QxZjQwY2E0NWJlNGVkYWM4OWI0MTg5YmE1
MzYzYzI0ZTJjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNSBAQAorMjAxNS0wMy0yOSAgU2lt
b24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBDb252ZXJ0IGFy
Z3VtZW50cyB0byBTY3JvbGxpbmdDb29yZGluYXRvciBmdW5jdGlvbnMgdG8gcmVmZXJlbmNlcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQzMTk4CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ29udmVydCBh
bGwgdGhlIEZyYW1lVmlldyogYW5kIFNjcm9sbGFibGVBcmVhKiBhcmd1bWVudHMgdG8gU2Nyb2xs
aW5nQ29vcmRpbmF0b3IgZnVuY3Rpb25zIHRvCisgICAgICAgIHJlZmVyZW5jZXMsIGFuZCB1c2Ug
cmVmZXJlbmNlcyBpbiBhIGZldyBvdGhlciBwbGFjZXMuCisKKyAgICAgICAgKiBkb20vRG9jdW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6d2hlZWxFdmVudEhhbmRsZXJDb3VudENoYW5nZWQp
OgorICAgICAgICAqIGxvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIaXN0b3J5Q29udHJvbGxlcjo6cmVzdG9yZVNjcm9sbFBvc2l0aW9uQW5kVmlld1N0YXRl
KToKKyAgICAgICAgKiBwYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uT3ZlcmxheTo6dXBkYXRlUmVnaW9uKToKKyAgICAg
ICAgKiBwYWdlL0ZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjp3aWxsRGV0YWNo
UGFnZSk6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVWaWV3OjpwcmVwYXJlRm9yRGV0YWNoKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmll
dzo6YWRkU2xvd1JlcGFpbnRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojpy
ZW1vdmVTbG93UmVwYWludE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmFk
ZFZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3
OjpyZW1vdmVWaWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lVmlldzo6cmVxdWVzdFNjcm9sbFBvc2l0aW9uVXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lVmlldzo6cGVyZm9ybVBvc3RMYXlvdXRUYXNrcyk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZVZpZXc6OnNjcm9sbGFibGVBcmVhU2V0Q2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZVZpZXc6OndoZWVsRXZlbnQpOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpQYWdlOjpub25GYXN0U2Nyb2xsYWJsZVJlY3RzKToKKyAgICAgICAgKiBwYWdl
L1BhZ2UuaDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5h
dG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZy
YW1lVmlld0xheW91dFVwZGF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNTY3JvbGxpbmdD
b29yZGluYXRvcjo6ZnJhbWVWaWV3Tm9uRmFzdFNjcm9sbGFibGVSZWdpb25DaGFuZ2VkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZyYW1lVmlld1Jvb3RM
YXllckRpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpBc3luY1Njcm9sbGluZ0Nvb3JkaW5h
dG9yOjpyZXF1ZXN0U2Nyb2xsUG9zaXRpb25VcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXN5
bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6dXBkYXRlU2Nyb2xsUG9zaXRpb25BZnRlckFzeW5jU2Ny
b2xsKToKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNjcm9s
bGFibGVBcmVhU2Nyb2xsYmFyTGF5ZXJEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6QXN5
bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6ZW5zdXJlUm9vdFN0YXRlTm9kZUZvckZyYW1lVmlldyk6
CisgICAgICAgIChXZWJDb3JlOjpBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjp1cGRhdGVNYWlu
RnJhbWVTY3JvbGxMYXllclBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jU2Nyb2xs
aW5nQ29vcmRpbmF0b3I6OnJlY29tcHV0ZVdoZWVsRXZlbnRIYW5kbGVyQ291bnRGb3JGcmFtZVZp
ZXcpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3Iu
aDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6cGFnZURlc3Ryb3llZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6Y29vcmRpbmF0ZXNTY3JvbGxp
bmdGb3JGcmFtZVZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6
OmNvbXB1dGVOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxpbmdDb29yZGluYXRvcjo6ZnJhbWVWaWV3V2hlZWxFdmVudEhhbmRsZXJDb3VudENoYW5nZWQp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZyYW1lVmlld0hhc1Ns
b3dSZXBhaW50T2JqZWN0c0RpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdD
b29yZGluYXRvcjo6ZnJhbWVWaWV3Rml4ZWRPYmplY3RzRGlkQ2hhbmdlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzY3JvbGxMYXllckZvclNjcm9sbGFibGVBcmVh
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzY3JvbGxMYXllckZv
ckZyYW1lVmlldyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6aGVh
ZGVyTGF5ZXJGb3JGcmFtZVZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRp
bmF0b3I6OmZvb3RlckxheWVyRm9yRnJhbWVWaWV3KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bGluZ0Nvb3JkaW5hdG9yOjpjb3VudGVyU2Nyb2xsaW5nTGF5ZXJGb3JGcmFtZVZpZXcpOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6Omluc2V0Q2xpcExheWVyRm9yRnJh
bWVWaWV3KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpjb250ZW50
U2hhZG93TGF5ZXJGb3JGcmFtZVZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29v
cmRpbmF0b3I6OnJvb3RDb250ZW50TGF5ZXJGb3JGcmFtZVZpZXcpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZyYW1lVmlld1Jvb3RMYXllckRpZENoYW5nZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6aGFzVmlzaWJsZVNsb3dSZXBh
aW50Vmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
aW5nQ29vcmRpbmF0b3I6OnN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucyk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6dXBkYXRlU3luY2hyb25vdXNTY3JvbGxpbmdS
ZWFzb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzZXRGb3Jj
ZVN5bmNocm9ub3VzU2Nyb2xsTGF5ZXJQb3NpdGlvblVwZGF0ZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25T
eW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpy
ZXBsYXlTZXNzaW9uU3RhdGVEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5n
Q29vcmRpbmF0b3I6OnN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29uc0FzVGV4dCk6CisgICAgICAg
ICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaDogQWxpZ24gdGhlIGJpdG1h
c2sgZW51bXMgdG8gbWFrZSBtaXN0YWtlcyBlYXNpZXIgdG8gc3BvdC4KKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpmcmFtZVZpZXdMYXlvdXRVcGRhdGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpmcmFtZVZpZXdOb25GYXN0U2Nyb2xs
YWJsZVJlZ2lvbkNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0
b3I6OnJlcXVlc3RTY3JvbGxQb3NpdGlvblVwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxpbmdDb29yZGluYXRvcjo6aGFuZGxlV2hlZWxFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxpbmdDb29yZGluYXRvcjo6d2lsbERlc3Ryb3lTY3JvbGxhYmxlQXJlYSk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6c2Nyb2xsYWJsZUFyZWFTY3JvbGxMYXll
ckRpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6c2Ny
b2xsYWJsZUFyZWFTY3JvbGxiYXJMYXllckRpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxpbmdDb29yZGluYXRvcjo6cmVjb21wdXRlV2hlZWxFdmVudEhhbmRsZXJDb3VudEZvckZy
YW1lVmlldyk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvY29vcmRpbmF0ZWRncmFwaGljcy9T
Y3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzOjpzY3JvbGxhYmxl
QXJlYVNjcm9sbExheWVyRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nv
b3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljczo6d2lsbERlc3Ryb3lTY3JvbGxhYmxlQXJlYSk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhp
Y3M6OnJlcXVlc3RTY3JvbGxQb3NpdGlvblVwZGF0ZSk6CisgICAgICAgICogcGFnZS9zY3JvbGxp
bmcvY29vcmRpbmF0ZWRncmFwaGljcy9TY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3Jh
cGhpY3MuaDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nQ29vcmRpbmF0
b3JJT1MuaDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nQ29vcmRpbmF0
b3JNYWMuaDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nQ29vcmRpbmF0
b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvck1hYzo6aGFu
ZGxlV2hlZWxFdmVudCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjp+UmVuZGVyTGF5ZXIpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGF5ZXJCYWNraW5nOjp1cGRhdGVPdmVyZmxvd0NvbnRyb2xzTGF5ZXJzKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlQmFja2luZyk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJMYXllckNvbXBvc2l0b3I6Omhhc0Nvb3JkaW5hdGVkU2Nyb2xsaW5nKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6c2Nyb2xsaW5nTGF5ZXJEaWRDaGFuZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVMYXllckZv
ckhlYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0
ZUxheWVyRm9yRm9vdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRv
cjo6dXBkYXRlT3ZlcmZsb3dDb250cm9sc0xheWVycyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMYXllckNvbXBvc2l0b3I6OmRlc3Ryb3lSb290TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVTY3JvbGxDb29yZGluYXRpb25Gb3JUaGlzRnJh
bWUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVTY3Jv
bGxDb29yZGluYXRlZExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9z
aXRvcjo6d2lsbFJlbW92ZVNjcm9sbGluZ0xheWVyV2l0aEJhY2tpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpkaWRBZGRTY3JvbGxpbmdMYXllcik6CisgICAg
ICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxz
Ojpub25GYXN0U2Nyb2xsYWJsZVJlY3RzKToKKwogMjAxNS0wMy0yOCAgRXJpYyBDYXJsc29uICA8
ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWFjXSBVcGRhdGUgZm9yIG91dHB1
dCBkZXZpY2UgQVBJIGNoYW5nZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGZhMjJkNDg4ZjNjNDY1YmRjYTFlMWNm
ODQ1ZGU3MjIyNjViNzkxN2IuLmFkYWI0ODJlZjg5NjE2OWY2NTY5MGE1NWVhYjVmYTM0MGZlM2I4
NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxNS0wMy0yOSAgU2ltb24gRnJhc2Vy
ICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBDb252ZXJ0IGFyZ3VtZW50cyB0
byBTY3JvbGxpbmdDb29yZGluYXRvciBmdW5jdGlvbnMgdG8gcmVmZXJlbmNlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQzMTk4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ29udmVydCBhbGwgdGhlIEZy
YW1lVmlldyogYW5kIFNjcm9sbGFibGVBcmVhKiBhcmd1bWVudHMgdG8gU2Nyb2xsaW5nQ29vcmRp
bmF0b3IgZnVuY3Rpb25zIHRvCisgICAgICAgIHJlZmVyZW5jZXMsIGFuZCB1c2UgcmVmZXJlbmNl
cyBpbiBhIGZldyBvdGhlciBwbGFjZXMuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1Njcm9sbGlu
Zy9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvU2Ny
b2xsaW5nL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yLm1tOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvcjo6Y29vcmRpbmF0ZXNTY3JvbGxpbmdGb3JGcmFtZVZp
ZXcpOgorCiAyMDE1LTAzLTI3ICBHd2FuZyBZb29uIEh3YW5nICA8eW9vbkBpZ2FsaWEuY29tPgog
CiAgICAgICAgIFtUZXhNYXBdIFNlcGVyYXRlIEJpdG1hcFRleHR1cmUgcmVsYXRlZCBjbGFzc2Vz
IGltcGxlbWVudGF0aW9ucyBmcm9tIFRleHR1cmVNYXBwZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
CmluZGV4IDQwNGQ1N2Y5MzYyMzEwNGNiNzk0ZjA2NjNmOTlhYTQ5ZjllMWVhNGMuLjMwY2QyZGM3
ZTY4MTM5OTBiNGRiOTEwNWJiNmE1YjFlYzI3ZTM3OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cApAQCAtNTk5NSw3ICs1OTk1LDcgQEAgc3RhdGljIHZvaWQgd2hlZWxFdmVudEhhbmRsZXJDb3Vu
dENoYW5nZWQoRG9jdW1lbnQqIGRvY3VtZW50KQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBG
SVhNRTogV2h5IGRvZXNuJ3QgdGhpcyBuZWVkIHRvIGJlIGNhbGxlZCBpbiBkaWRCZWNvbWVDdXJy
ZW50RG9jdW1lbnRJbkZyYW1lPwotICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5mcmFtZVZpZXdX
aGVlbEV2ZW50SGFuZGxlckNvdW50Q2hhbmdlZChmcmFtZVZpZXcpOworICAgIHNjcm9sbGluZ0Nv
b3JkaW5hdG9yLT5mcmFtZVZpZXdXaGVlbEV2ZW50SGFuZGxlckNvdW50Q2hhbmdlZCgqZnJhbWVW
aWV3KTsKIH0KIAogdm9pZCBEb2N1bWVudDo6ZGlkQWRkV2hlZWxFdmVudEhhbmRsZXIoTm9kZSYp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcAppbmRleCBkNDYx
MGNhZTkyNzQ3OWJkZTYwMTQzYzNlYWE0MGE3OWY3OGFkYjg4Li43NmEwOTY0NzM4NjY3MmUyMjdh
MDc5Mzc3MjY1NzMzNGQ1ZGRiZjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
SGlzdG9yeUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5
Q29udHJvbGxlci5jcHAKQEAgLTEzOCw3ICsxMzgsNyBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVy
OjpyZXN0b3JlU2Nyb2xsUG9zaXRpb25BbmRWaWV3U3RhdGUoKQogICAgICAgICBQYWdlKiBwYWdl
ID0gbV9mcmFtZS5wYWdlKCk7CiAgICAgICAgIGlmIChwYWdlICYmIG1fZnJhbWUuaXNNYWluRnJh
bWUoKSkgewogICAgICAgICAgICAgaWYgKFNjcm9sbGluZ0Nvb3JkaW5hdG9yKiBzY3JvbGxpbmdD
b29yZGluYXRvciA9IHBhZ2UtPnNjcm9sbGluZ0Nvb3JkaW5hdG9yKCkpCi0gICAgICAgICAgICAg
ICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPmZyYW1lVmlld1Jvb3RMYXllckRpZENoYW5nZSh2aWV3
KTsKKyAgICAgICAgICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+ZnJhbWVWaWV3Um9vdExh
eWVyRGlkQ2hhbmdlKCp2aWV3KTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcAppbmRleCAyYmE3ZmVlYzNmODY2MmIyOTE5NzljNmU5
NGVmODdjNWVjZDZlMTMwLi4wZmE3ODRiYWFlZDY3MDMzNWQ1ZWFjMzc4NWRhNTFkNWNjY2Q5NzM1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcApAQCAtMTI3LDcg
KzEyNyw3IEBAIGJvb2wgTm9uRmFzdFNjcm9sbGFibGVSZWdpb25PdmVybGF5Ojp1cGRhdGVSZWdp
b24oKQogCiAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLnBhZ2UoKSkgewogICAgICAgICBp
ZiAoU2Nyb2xsaW5nQ29vcmRpbmF0b3IqIHNjcm9sbGluZ0Nvb3JkaW5hdG9yID0gcGFnZS0+c2Ny
b2xsaW5nQ29vcmRpbmF0b3IoKSkKLSAgICAgICAgICAgICpyZWdpb24gPSBzY3JvbGxpbmdDb29y
ZGluYXRvci0+Y29tcHV0ZU5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uKCZtX2ZyYW1lLCBJbnRQb2lu
dCgpKTsKKyAgICAgICAgICAgICpyZWdpb24gPSBzY3JvbGxpbmdDb29yZGluYXRvci0+Y29tcHV0
ZU5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uKG1fZnJhbWUsIEludFBvaW50KCkpOwogICAgIH0KIAog
ICAgIC8vIGNvbXB1dGVOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbigpIGFwcGxpZXMgdG9wQ29udGVu
dEluc2V0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAppbmRleCA5ODhhZDA2ZGNjOTRjYjgxZmQ4MDRiMWUx
NGI4Zjc4N2JlMmFlZWFmLi4wMThiMDZlZWIwYWM3ZjdmODMxMDE5MTEyNzU3ODIyNmJmOGY2MDZi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lLmNwcApAQCAtNzkxLDcgKzc5MSw3IEBAIHZvaWQgRnJhbWU6Ondp
bGxEZXRhY2hQYWdlKCkKICAgICAgICAgcGFnZSgpLT5mb2N1c0NvbnRyb2xsZXIoKS5zZXRGb2N1
c2VkRnJhbWUoMCk7CiAKICAgICBpZiAocGFnZSgpICYmIHBhZ2UoKS0+c2Nyb2xsaW5nQ29vcmRp
bmF0b3IoKSAmJiBtX3ZpZXcpCi0gICAgICAgIHBhZ2UoKS0+c2Nyb2xsaW5nQ29vcmRpbmF0b3Io
KS0+d2lsbERlc3Ryb3lTY3JvbGxhYmxlQXJlYShtX3ZpZXcuZ2V0KCkpOworICAgICAgICBwYWdl
KCktPnNjcm9sbGluZ0Nvb3JkaW5hdG9yKCktPndpbGxEZXN0cm95U2Nyb2xsYWJsZUFyZWEoKm1f
dmlldyk7CiAKICNpZiBQTEFURk9STShJT1MpCiAgICAgaWYgKFdlYlRocmVhZENvdW50T2ZPYnNl
cnZlZENvbnRlbnRNb2RpZmllcnMoKSA+IDAgJiYgbV9wYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZp
ZXcuY3BwCmluZGV4IDljNjU3YmMyYmU3MjQwOTdhYzkwY2M2YTBjOTFmMmE0MDM0ZDU3NzkuLjdj
OWYwNTE0OTc1Mjc4ZmFjODc5NzAxNjU0YjhjZTQ0ZjRlNDJlMWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lVmlldy5jcHAKQEAgLTM1OCw3ICszNTgsNyBAQCB2b2lkIEZyYW1lVmlldzo6cHJlcGFyZUZv
ckRldGFjaCgpCiAKICAgICBpZiAoZnJhbWUoKS5wYWdlKCkpIHsKICAgICAgICAgaWYgKFNjcm9s
bGluZ0Nvb3JkaW5hdG9yKiBzY3JvbGxpbmdDb29yZGluYXRvciA9IGZyYW1lKCkucGFnZSgpLT5z
Y3JvbGxpbmdDb29yZGluYXRvcigpKQotICAgICAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3It
PndpbGxEZXN0cm95U2Nyb2xsYWJsZUFyZWEodGhpcyk7CisgICAgICAgICAgICBzY3JvbGxpbmdD
b29yZGluYXRvci0+d2lsbERlc3Ryb3lTY3JvbGxhYmxlQXJlYSgqdGhpcyk7CiAgICAgfQogfQog
CkBAIC0xNTQ4LDcgKzE1NDgsNyBAQCB2b2lkIEZyYW1lVmlldzo6YWRkU2xvd1JlcGFpbnRPYmpl
Y3QoUmVuZGVyRWxlbWVudCogbykKIAogICAgICAgICBpZiAoUGFnZSogcGFnZSA9IGZyYW1lKCku
cGFnZSgpKSB7CiAgICAgICAgICAgICBpZiAoU2Nyb2xsaW5nQ29vcmRpbmF0b3IqIHNjcm9sbGlu
Z0Nvb3JkaW5hdG9yID0gcGFnZS0+c2Nyb2xsaW5nQ29vcmRpbmF0b3IoKSkKLSAgICAgICAgICAg
ICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+ZnJhbWVWaWV3SGFzU2xvd1JlcGFpbnRPYmplY3Rz
RGlkQ2hhbmdlKHRoaXMpOworICAgICAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5m
cmFtZVZpZXdIYXNTbG93UmVwYWludE9iamVjdHNEaWRDaGFuZ2UoKnRoaXMpOwogICAgICAgICB9
CiAgICAgfQogfQpAQCAtMTU2NSw3ICsxNTY1LDcgQEAgdm9pZCBGcmFtZVZpZXc6OnJlbW92ZVNs
b3dSZXBhaW50T2JqZWN0KFJlbmRlckVsZW1lbnQqIG8pCiAKICAgICAgICAgaWYgKFBhZ2UqIHBh
Z2UgPSBmcmFtZSgpLnBhZ2UoKSkgewogICAgICAgICAgICAgaWYgKFNjcm9sbGluZ0Nvb3JkaW5h
dG9yKiBzY3JvbGxpbmdDb29yZGluYXRvciA9IHBhZ2UtPnNjcm9sbGluZ0Nvb3JkaW5hdG9yKCkp
Ci0gICAgICAgICAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPmZyYW1lVmlld0hhc1Nsb3dS
ZXBhaW50T2JqZWN0c0RpZENoYW5nZSh0aGlzKTsKKyAgICAgICAgICAgICAgICBzY3JvbGxpbmdD
b29yZGluYXRvci0+ZnJhbWVWaWV3SGFzU2xvd1JlcGFpbnRPYmplY3RzRGlkQ2hhbmdlKCp0aGlz
KTsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTE1ODIsNyArMTU4Miw3IEBAIHZvaWQgRnJhbWVW
aWV3OjphZGRWaWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0KFJlbmRlckVsZW1lbnQqIG9iamVjdCkK
IAogICAgICAgICBpZiAoUGFnZSogcGFnZSA9IGZyYW1lKCkucGFnZSgpKSB7CiAgICAgICAgICAg
ICBpZiAoU2Nyb2xsaW5nQ29vcmRpbmF0b3IqIHNjcm9sbGluZ0Nvb3JkaW5hdG9yID0gcGFnZS0+
c2Nyb2xsaW5nQ29vcmRpbmF0b3IoKSkKLSAgICAgICAgICAgICAgICBzY3JvbGxpbmdDb29yZGlu
YXRvci0+ZnJhbWVWaWV3Rml4ZWRPYmplY3RzRGlkQ2hhbmdlKHRoaXMpOworICAgICAgICAgICAg
ICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5mcmFtZVZpZXdGaXhlZE9iamVjdHNEaWRDaGFuZ2Uo
KnRoaXMpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtMTU5Miw3ICsxNTkyLDcgQEAgdm9pZCBG
cmFtZVZpZXc6OnJlbW92ZVZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3QoUmVuZGVyRWxlbWVudCog
b2JqZWN0KQogICAgIGlmIChtX3ZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RzICYmIG1fdmlld3Bv
cnRDb25zdHJhaW5lZE9iamVjdHMtPnJlbW92ZShvYmplY3QpKSB7CiAgICAgICAgIGlmIChQYWdl
KiBwYWdlID0gZnJhbWUoKS5wYWdlKCkpIHsKICAgICAgICAgICAgIGlmIChTY3JvbGxpbmdDb29y
ZGluYXRvciogc2Nyb2xsaW5nQ29vcmRpbmF0b3IgPSBwYWdlLT5zY3JvbGxpbmdDb29yZGluYXRv
cigpKQotICAgICAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5mcmFtZVZpZXdGaXhl
ZE9iamVjdHNEaWRDaGFuZ2UodGhpcyk7CisgICAgICAgICAgICAgICAgc2Nyb2xsaW5nQ29vcmRp
bmF0b3ItPmZyYW1lVmlld0ZpeGVkT2JqZWN0c0RpZENoYW5nZSgqdGhpcyk7CiAgICAgICAgIH0K
IAogICAgICAgICAvLyBGSVhNRTogSW4gYWRkRml4ZWRPYmplY3QoKSB3ZSBvbmx5IGNhbGwgdGhp
cyBpZiB0aGVyZSdzIGEgcGxhdGZvcm0gd2lkZ2V0LApAQCAtMjIzMCw3ICsyMjMwLDcgQEAgYm9v
bCBGcmFtZVZpZXc6OnJlcXVlc3RTY3JvbGxQb3NpdGlvblVwZGF0ZShjb25zdCBJbnRQb2ludCYg
cG9zaXRpb24pCiAjaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykgfHwgVVNFKFRJTEVEX0JBQ0tJ
TkdfU1RPUkUpCiAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBmcmFtZSgpLnBhZ2UoKSkgewogICAgICAg
ICBpZiAoU2Nyb2xsaW5nQ29vcmRpbmF0b3IqIHNjcm9sbGluZ0Nvb3JkaW5hdG9yID0gcGFnZS0+
c2Nyb2xsaW5nQ29vcmRpbmF0b3IoKSkKLSAgICAgICAgICAgIHJldHVybiBzY3JvbGxpbmdDb29y
ZGluYXRvci0+cmVxdWVzdFNjcm9sbFBvc2l0aW9uVXBkYXRlKHRoaXMsIHBvc2l0aW9uKTsKKyAg
ICAgICAgICAgIHJldHVybiBzY3JvbGxpbmdDb29yZGluYXRvci0+cmVxdWVzdFNjcm9sbFBvc2l0
aW9uVXBkYXRlKCp0aGlzLCBwb3NpdGlvbik7CiAgICAgfQogI2Vsc2UKICAgICBVTlVTRURfUEFS
QU0ocG9zaXRpb24pOwpAQCAtMjk2Myw3ICsyOTYzLDcgQEAgdm9pZCBGcmFtZVZpZXc6OnBlcmZv
cm1Qb3N0TGF5b3V0VGFza3MoKQogCiAgICAgaWYgKGF1dG8qIHBhZ2UgPSBmcmFtZSgpLnBhZ2Uo
KSkgewogICAgICAgICBpZiAoYXV0byogc2Nyb2xsaW5nQ29vcmRpbmF0b3IgPSBwYWdlLT5zY3Jv
bGxpbmdDb29yZGluYXRvcigpKQotICAgICAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPmZy
YW1lVmlld0xheW91dFVwZGF0ZWQodGhpcyk7CisgICAgICAgICAgICBzY3JvbGxpbmdDb29yZGlu
YXRvci0+ZnJhbWVWaWV3TGF5b3V0VXBkYXRlZCgqdGhpcyk7CiAgICAgfQogCiAgICAgaWYgKFJl
bmRlclZpZXcqIHJlbmRlclZpZXcgPSB0aGlzLT5yZW5kZXJWaWV3KCkpIHsKQEAgLTQzNzcsNyAr
NDM3Nyw3IEBAIHZvaWQgRnJhbWVWaWV3OjpzY3JvbGxhYmxlQXJlYVNldENoYW5nZWQoKQogewog
ICAgIGlmIChhdXRvKiBwYWdlID0gZnJhbWUoKS5wYWdlKCkpIHsKICAgICAgICAgaWYgKGF1dG8q
IHNjcm9sbGluZ0Nvb3JkaW5hdG9yID0gcGFnZS0+c2Nyb2xsaW5nQ29vcmRpbmF0b3IoKSkKLSAg
ICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5mcmFtZVZpZXdOb25GYXN0U2Nyb2xsYWJs
ZVJlZ2lvbkNoYW5nZWQodGhpcyk7CisgICAgICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+
ZnJhbWVWaWV3Tm9uRmFzdFNjcm9sbGFibGVSZWdpb25DaGFuZ2VkKCp0aGlzKTsKICAgICB9CiB9
CiAKQEAgLTQ0MjksOCArNDQyOSw4IEBAIGJvb2wgRnJhbWVWaWV3Ojp3aGVlbEV2ZW50KGNvbnN0
IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCkKICNpZiBFTkFCTEUoQVNZTkNfU0NST0xM
SU5HKQogICAgIGlmIChQYWdlKiBwYWdlID0gZnJhbWUoKS5wYWdlKCkpIHsKICAgICAgICAgaWYg
KFNjcm9sbGluZ0Nvb3JkaW5hdG9yKiBzY3JvbGxpbmdDb29yZGluYXRvciA9IHBhZ2UtPnNjcm9s
bGluZ0Nvb3JkaW5hdG9yKCkpIHsKLSAgICAgICAgICAgIGlmIChzY3JvbGxpbmdDb29yZGluYXRv
ci0+Y29vcmRpbmF0ZXNTY3JvbGxpbmdGb3JGcmFtZVZpZXcodGhpcykpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5oYW5kbGVXaGVlbEV2ZW50KHRoaXMsIHdo
ZWVsRXZlbnQpOworICAgICAgICAgICAgaWYgKHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5jb29yZGlu
YXRlc1Njcm9sbGluZ0ZvckZyYW1lVmlldygqdGhpcykpCisgICAgICAgICAgICAgICAgcmV0dXJu
IHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5oYW5kbGVXaGVlbEV2ZW50KCp0aGlzLCB3aGVlbEV2ZW50
KTsKICAgICAgICAgfQogICAgIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggMjIxNTE1
NDM5YTQ2MDExZGIyYjkwZjdmZDI2ZDU3MWYyMjNlMmI1NC4uYTk2NGI1ODFkNDM5YzI3ZDNlYTAz
YzdkODQyYzdiMTI0MWFmOGU2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0zNjksNyArMzY5LDcg
QEAgU3RyaW5nIFBhZ2U6OnN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29uc0FzVGV4dCgpCiAgICAg
cmV0dXJuIFN0cmluZygpOwogfQogCi1SZWY8Q2xpZW50UmVjdExpc3Q+IFBhZ2U6Om5vbkZhc3RT
Y3JvbGxhYmxlUmVjdHMoY29uc3QgRnJhbWUqIGZyYW1lKQorUmVmPENsaWVudFJlY3RMaXN0PiBQ
YWdlOjpub25GYXN0U2Nyb2xsYWJsZVJlY3RzKGNvbnN0IEZyYW1lJiBmcmFtZSkKIHsKICAgICBp
ZiAoRG9jdW1lbnQqIGRvY3VtZW50ID0gbV9tYWluRnJhbWUtPmRvY3VtZW50KCkpCiAgICAgICAg
IGRvY3VtZW50LT51cGRhdGVMYXlvdXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5kZXggNmU3MDVmNGRlMTg4
NTkyMmJlY2I0YWY2NmEyMWYyOTMyOWJlN2E0Yi4uYTJhMGY4NDYyOTQ3MWZlMzA0ODg3ZDU0ZWRl
ZTkyYjNkNjM5MDVkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAgLTE5Myw3ICsxOTMsNyBAQCBwdWJsaWM6
CiAKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0KCk7
CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29uc0Fz
VGV4dCgpOwotICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxDbGllbnRSZWN0TGlzdD4gbm9uRmFzdFNj
cm9sbGFibGVSZWN0cyhjb25zdCBGcmFtZSopOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxDbGll
bnRSZWN0TGlzdD4gbm9uRmFzdFNjcm9sbGFibGVSZWN0cyhjb25zdCBGcmFtZSYpOwogCiAgICAg
U2V0dGluZ3MmIHNldHRpbmdzKCkgY29uc3QgeyByZXR1cm4gKm1fc2V0dGluZ3M7IH0KICAgICBQ
cm9ncmVzc1RyYWNrZXImIHByb2dyZXNzKCkgY29uc3QgeyByZXR1cm4gKm1fcHJvZ3Jlc3M7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5n
Q29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3Jv
bGxpbmdDb29yZGluYXRvci5jcHAKaW5kZXggZTMyMDY1ODIzYzAzMjUxZmE0NDcxNDcwYjgyYzc5
ZmY3ZDI4MDI5OS4uOWVkNThhYTk0Yzc2MmEwZWY1M2MyNWMwZDUzZjMwYzVkZTllMjNhNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29y
ZGluYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3Jv
bGxpbmdDb29yZGluYXRvci5jcHAKQEAgLTczLDcgKzczLDcgQEAgc3RhdGljIGlubGluZSB2b2lk
IHNldFN0YXRlU2Nyb2xsaW5nTm9kZVNuYXBPZmZzZXRzQXNGbG9hdChTY3JvbGxpbmdTdGF0ZVNj
cm9sbGkKICAgICAgICAgbm9kZS5zZXRWZXJ0aWNhbFNuYXBPZmZzZXRzKHNuYXBPZmZzZXRzQXNG
bG9hdCk7CiB9CiAKLXZvaWQgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6ZnJhbWVWaWV3TGF5
b3V0VXBkYXRlZChGcmFtZVZpZXcqIGZyYW1lVmlldykKK3ZvaWQgQXN5bmNTY3JvbGxpbmdDb29y
ZGluYXRvcjo6ZnJhbWVWaWV3TGF5b3V0VXBkYXRlZChGcmFtZVZpZXcmIGZyYW1lVmlldykKIHsK
ICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VSVChtX3BhZ2UpOwpAQCAtODcs
NTggKzg3LDU4IEBAIHZvaWQgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6ZnJhbWVWaWV3TGF5
b3V0VXBkYXRlZChGcmFtZVZpZXcqIGZyYW1lVmlldykKICAgICAvLyBmcmFtZSB2aWV3IHdob3Nl
IGxheW91dCB3YXMgdXBkYXRlZCBpcyBub3QgdGhlIG1haW4gZnJhbWUuCiAgICAgLy8gSW4gdGhl
IGZ1dHVyZSwgd2UgbWF5IHdhbnQgdG8gaGF2ZSB0aGUgYWJpbGl0eSB0byBzZXQgbm9uLWZhc3Qg
c2Nyb2xsaW5nIHJlZ2lvbnMgZm9yIG1vcmUgdGhhbgogICAgIC8vIGp1c3QgdGhlIHJvb3Qgbm9k
ZS4gQnV0IHJpZ2h0IG5vdywgdGhpcyBjb25jZXB0IG9ubHkgYXBwbGllcyB0byB0aGUgcm9vdC4K
LSAgICBtX3Njcm9sbGluZ1N0YXRlVHJlZS0+cm9vdFN0YXRlTm9kZSgpLT5zZXROb25GYXN0U2Ny
b2xsYWJsZVJlZ2lvbihjb21wdXRlTm9uRmFzdFNjcm9sbGFibGVSZWdpb24oJm1fcGFnZS0+bWFp
bkZyYW1lKCksIEludFBvaW50KCkpKTsKKyAgICBtX3Njcm9sbGluZ1N0YXRlVHJlZS0+cm9vdFN0
YXRlTm9kZSgpLT5zZXROb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbihjb21wdXRlTm9uRmFzdFNjcm9s
bGFibGVSZWdpb24obV9wYWdlLT5tYWluRnJhbWUoKSwgSW50UG9pbnQoKSkpOwogCiAgICAgaWYg
KCFjb29yZGluYXRlc1Njcm9sbGluZ0ZvckZyYW1lVmlldyhmcmFtZVZpZXcpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZSogbm9kZSA9IGRv
d25jYXN0PFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlPihtX3Njcm9sbGluZ1N0YXRl
VHJlZS0+c3RhdGVOb2RlRm9ySUQoZnJhbWVWaWV3LT5zY3JvbGxMYXllcklEKCkpKTsKKyAgICBT
Y3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZSogbm9kZSA9IGRvd25jYXN0PFNjcm9sbGlu
Z1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlPihtX3Njcm9sbGluZ1N0YXRlVHJlZS0+c3RhdGVOb2Rl
Rm9ySUQoZnJhbWVWaWV3LnNjcm9sbExheWVySUQoKSkpOwogICAgIGlmICghbm9kZSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgU2Nyb2xsYmFyKiB2ZXJ0aWNhbFNjcm9sbGJhciA9IGZyYW1lVmll
dy0+dmVydGljYWxTY3JvbGxiYXIoKTsKLSAgICBTY3JvbGxiYXIqIGhvcml6b250YWxTY3JvbGxi
YXIgPSBmcmFtZVZpZXctPmhvcml6b250YWxTY3JvbGxiYXIoKTsKKyAgICBTY3JvbGxiYXIqIHZl
cnRpY2FsU2Nyb2xsYmFyID0gZnJhbWVWaWV3LnZlcnRpY2FsU2Nyb2xsYmFyKCk7CisgICAgU2Ny
b2xsYmFyKiBob3Jpem9udGFsU2Nyb2xsYmFyID0gZnJhbWVWaWV3Lmhvcml6b250YWxTY3JvbGxi
YXIoKTsKICAgICBub2RlLT5zZXRTY3JvbGxiYXJQYWludGVyc0Zyb21TY3JvbGxiYXJzKHZlcnRp
Y2FsU2Nyb2xsYmFyLCBob3Jpem9udGFsU2Nyb2xsYmFyKTsKICAgICAKLSAgICBub2RlLT5zZXRG
cmFtZVNjYWxlRmFjdG9yKGZyYW1lVmlldy0+ZnJhbWUoKS5mcmFtZVNjYWxlRmFjdG9yKCkpOwot
ICAgIG5vZGUtPnNldEhlYWRlckhlaWdodChmcmFtZVZpZXctPmhlYWRlckhlaWdodCgpKTsKLSAg
ICBub2RlLT5zZXRGb290ZXJIZWlnaHQoZnJhbWVWaWV3LT5mb290ZXJIZWlnaHQoKSk7Ci0gICAg
bm9kZS0+c2V0VG9wQ29udGVudEluc2V0KGZyYW1lVmlldy0+dG9wQ29udGVudEluc2V0KCkpOwor
ICAgIG5vZGUtPnNldEZyYW1lU2NhbGVGYWN0b3IoZnJhbWVWaWV3LmZyYW1lKCkuZnJhbWVTY2Fs
ZUZhY3RvcigpKTsKKyAgICBub2RlLT5zZXRIZWFkZXJIZWlnaHQoZnJhbWVWaWV3LmhlYWRlckhl
aWdodCgpKTsKKyAgICBub2RlLT5zZXRGb290ZXJIZWlnaHQoZnJhbWVWaWV3LmZvb3RlckhlaWdo
dCgpKTsKKyAgICBub2RlLT5zZXRUb3BDb250ZW50SW5zZXQoZnJhbWVWaWV3LnRvcENvbnRlbnRJ
bnNldCgpKTsKIAotICAgIG5vZGUtPnNldFNjcm9sbE9yaWdpbihmcmFtZVZpZXctPnNjcm9sbE9y
aWdpbigpKTsKLSAgICBub2RlLT5zZXRTY3JvbGxhYmxlQXJlYVNpemUoZnJhbWVWaWV3LT52aXNp
YmxlQ29udGVudFJlY3QoKS5zaXplKCkpOwotICAgIG5vZGUtPnNldFRvdGFsQ29udGVudHNTaXpl
KGZyYW1lVmlldy0+dG90YWxDb250ZW50c1NpemUoKSk7Ci0gICAgbm9kZS0+c2V0UmVhY2hhYmxl
Q29udGVudHNTaXplKGZyYW1lVmlldy0+dG90YWxDb250ZW50c1NpemUoKSk7CisgICAgbm9kZS0+
c2V0U2Nyb2xsT3JpZ2luKGZyYW1lVmlldy5zY3JvbGxPcmlnaW4oKSk7CisgICAgbm9kZS0+c2V0
U2Nyb2xsYWJsZUFyZWFTaXplKGZyYW1lVmlldy52aXNpYmxlQ29udGVudFJlY3QoKS5zaXplKCkp
OworICAgIG5vZGUtPnNldFRvdGFsQ29udGVudHNTaXplKGZyYW1lVmlldy50b3RhbENvbnRlbnRz
U2l6ZSgpKTsKKyAgICBub2RlLT5zZXRSZWFjaGFibGVDb250ZW50c1NpemUoZnJhbWVWaWV3LnRv
dGFsQ29udGVudHNTaXplKCkpOwogCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKLSAgICBm
cmFtZVZpZXctPnVwZGF0ZVNuYXBPZmZzZXRzKCk7Ci0gICAgaWYgKGNvbnN0IFZlY3RvcjxMYXlv
dXRVbml0PiogaG9yaXpvbnRhbFNuYXBPZmZzZXRzID0gZnJhbWVWaWV3LT5ob3Jpem9udGFsU25h
cE9mZnNldHMoKSkKKyAgICBmcmFtZVZpZXcudXBkYXRlU25hcE9mZnNldHMoKTsKKyAgICBpZiAo
Y29uc3QgVmVjdG9yPExheW91dFVuaXQ+KiBob3Jpem9udGFsU25hcE9mZnNldHMgPSBmcmFtZVZp
ZXcuaG9yaXpvbnRhbFNuYXBPZmZzZXRzKCkpCiAgICAgICAgIHNldFN0YXRlU2Nyb2xsaW5nTm9k
ZVNuYXBPZmZzZXRzQXNGbG9hdCgqbm9kZSwgU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsLCAq
aG9yaXpvbnRhbFNuYXBPZmZzZXRzLCBtX3BhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCkpOwogCi0g
ICAgaWYgKGNvbnN0IFZlY3RvcjxMYXlvdXRVbml0PiogdmVydGljYWxTbmFwT2Zmc2V0cyA9IGZy
YW1lVmlldy0+dmVydGljYWxTbmFwT2Zmc2V0cygpKQorICAgIGlmIChjb25zdCBWZWN0b3I8TGF5
b3V0VW5pdD4qIHZlcnRpY2FsU25hcE9mZnNldHMgPSBmcmFtZVZpZXcudmVydGljYWxTbmFwT2Zm
c2V0cygpKQogICAgICAgICBzZXRTdGF0ZVNjcm9sbGluZ05vZGVTbmFwT2Zmc2V0c0FzRmxvYXQo
Km5vZGUsIFNjcm9sbEV2ZW50QXhpczo6VmVydGljYWwsICp2ZXJ0aWNhbFNuYXBPZmZzZXRzLCBt
X3BhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCkpOwogI2VuZGlmCiAKICAgICBTY3JvbGxhYmxlQXJl
YVBhcmFtZXRlcnMgc2Nyb2xsUGFyYW1ldGVyczsKLSAgICBzY3JvbGxQYXJhbWV0ZXJzLmhvcml6
b250YWxTY3JvbGxFbGFzdGljaXR5ID0gZnJhbWVWaWV3LT5ob3Jpem9udGFsU2Nyb2xsRWxhc3Rp
Y2l0eSgpOwotICAgIHNjcm9sbFBhcmFtZXRlcnMudmVydGljYWxTY3JvbGxFbGFzdGljaXR5ID0g
ZnJhbWVWaWV3LT52ZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHkoKTsKKyAgICBzY3JvbGxQYXJhbWV0
ZXJzLmhvcml6b250YWxTY3JvbGxFbGFzdGljaXR5ID0gZnJhbWVWaWV3Lmhvcml6b250YWxTY3Jv
bGxFbGFzdGljaXR5KCk7CisgICAgc2Nyb2xsUGFyYW1ldGVycy52ZXJ0aWNhbFNjcm9sbEVsYXN0
aWNpdHkgPSBmcmFtZVZpZXcudmVydGljYWxTY3JvbGxFbGFzdGljaXR5KCk7CiAgICAgc2Nyb2xs
UGFyYW1ldGVycy5oYXNFbmFibGVkSG9yaXpvbnRhbFNjcm9sbGJhciA9IGhvcml6b250YWxTY3Jv
bGxiYXIgJiYgaG9yaXpvbnRhbFNjcm9sbGJhci0+ZW5hYmxlZCgpOwogICAgIHNjcm9sbFBhcmFt
ZXRlcnMuaGFzRW5hYmxlZFZlcnRpY2FsU2Nyb2xsYmFyID0gdmVydGljYWxTY3JvbGxiYXIgJiYg
dmVydGljYWxTY3JvbGxiYXItPmVuYWJsZWQoKTsKLSAgICBzY3JvbGxQYXJhbWV0ZXJzLmhvcml6
b250YWxTY3JvbGxiYXJNb2RlID0gZnJhbWVWaWV3LT5ob3Jpem9udGFsU2Nyb2xsYmFyTW9kZSgp
OwotICAgIHNjcm9sbFBhcmFtZXRlcnMudmVydGljYWxTY3JvbGxiYXJNb2RlID0gZnJhbWVWaWV3
LT52ZXJ0aWNhbFNjcm9sbGJhck1vZGUoKTsKKyAgICBzY3JvbGxQYXJhbWV0ZXJzLmhvcml6b250
YWxTY3JvbGxiYXJNb2RlID0gZnJhbWVWaWV3Lmhvcml6b250YWxTY3JvbGxiYXJNb2RlKCk7Cisg
ICAgc2Nyb2xsUGFyYW1ldGVycy52ZXJ0aWNhbFNjcm9sbGJhck1vZGUgPSBmcmFtZVZpZXcudmVy
dGljYWxTY3JvbGxiYXJNb2RlKCk7CiAKICAgICBub2RlLT5zZXRTY3JvbGxhYmxlQXJlYVBhcmFt
ZXRlcnMoc2Nyb2xsUGFyYW1ldGVycyk7CiB9CiAKLXZvaWQgQXN5bmNTY3JvbGxpbmdDb29yZGlu
YXRvcjo6ZnJhbWVWaWV3Tm9uRmFzdFNjcm9sbGFibGVSZWdpb25DaGFuZ2VkKEZyYW1lVmlldyop
Cit2b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZyYW1lVmlld05vbkZhc3RTY3JvbGxh
YmxlUmVnaW9uQ2hhbmdlZChGcmFtZVZpZXcmKQogewogICAgIGlmICghbV9zY3JvbGxpbmdTdGF0
ZVRyZWUtPnJvb3RTdGF0ZU5vZGUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9zY3JvbGxp
bmdTdGF0ZVRyZWUtPnJvb3RTdGF0ZU5vZGUoKS0+c2V0Tm9uRmFzdFNjcm9sbGFibGVSZWdpb24o
Y29tcHV0ZU5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uKCZtX3BhZ2UtPm1haW5GcmFtZSgpLCBJbnRQ
b2ludCgpKSk7CisgICAgbV9zY3JvbGxpbmdTdGF0ZVRyZWUtPnJvb3RTdGF0ZU5vZGUoKS0+c2V0
Tm9uRmFzdFNjcm9sbGFibGVSZWdpb24oY29tcHV0ZU5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uKG1f
cGFnZS0+bWFpbkZyYW1lKCksIEludFBvaW50KCkpKTsKIH0KIAotdm9pZCBBc3luY1Njcm9sbGlu
Z0Nvb3JkaW5hdG9yOjpmcmFtZVZpZXdSb290TGF5ZXJEaWRDaGFuZ2UoRnJhbWVWaWV3KiBmcmFt
ZVZpZXcpCit2b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZyYW1lVmlld1Jvb3RMYXll
ckRpZENoYW5nZShGcmFtZVZpZXcmIGZyYW1lVmlldykKIHsKICAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOwogICAgIEFTU0VSVChtX3BhZ2UpOwpAQCAtMTQ4LDcgKzE0OCw3IEBAIHZvaWQgQXN5
bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6ZnJhbWVWaWV3Um9vdExheWVyRGlkQ2hhbmdlKEZyYW1l
VmlldyogZnJhbWVWaWV3CiAgICAgCiAgICAgLy8gRklYTUU6IEluIHNvbWUgbmF2aWdhdGlvbiBz
Y2VuYXJpb3MsIHRoZSBGcmFtZVZpZXcgaGFzIG5vIFJlbmRlclZpZXcgb3IgdGhhdCBSZW5kZXJW
aWV3IGhhcyBub3QgYmVlbiBjb21wb3NpdGVkLgogICAgIC8vIFRoaXMgbmVlZHMgY2xlYW5pbmcg
dXA6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzI3MjQKLSAgICBp
ZiAoIWZyYW1lVmlldy0+c2Nyb2xsTGF5ZXJJRCgpKQorICAgIGlmICghZnJhbWVWaWV3LnNjcm9s
bExheWVySUQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIC8vIElmIHRoZSByb290IGxh
eWVyIGRvZXMgbm90IGhhdmUgYSBTY3JvbGxpbmdTdGF0ZU5vZGUsIHRoZW4gd2Ugc2hvdWxkIGNy
ZWF0ZSBvbmUuCkBAIC0xNTcsNyArMTU3LDcgQEAgdm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5h
dG9yOjpmcmFtZVZpZXdSb290TGF5ZXJEaWRDaGFuZ2UoRnJhbWVWaWV3KiBmcmFtZVZpZXcKIAog
ICAgIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpmcmFtZVZpZXdSb290TGF5ZXJEaWRDaGFuZ2UoZnJh
bWVWaWV3KTsKIAotICAgIFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlKiBub2RlID0g
ZG93bmNhc3Q8U2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU+KG1fc2Nyb2xsaW5nU3Rh
dGVUcmVlLT5zdGF0ZU5vZGVGb3JJRChmcmFtZVZpZXctPnNjcm9sbExheWVySUQoKSkpOworICAg
IFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlKiBub2RlID0gZG93bmNhc3Q8U2Nyb2xs
aW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU+KG1fc2Nyb2xsaW5nU3RhdGVUcmVlLT5zdGF0ZU5v
ZGVGb3JJRChmcmFtZVZpZXcuc2Nyb2xsTGF5ZXJJRCgpKSk7CiAgICAgbm9kZS0+c2V0TGF5ZXIo
c2Nyb2xsTGF5ZXJGb3JGcmFtZVZpZXcoZnJhbWVWaWV3KSk7CiAgICAgbm9kZS0+c2V0U2Nyb2xs
ZWRDb250ZW50c0xheWVyKHJvb3RDb250ZW50TGF5ZXJGb3JGcmFtZVZpZXcoZnJhbWVWaWV3KSk7
CiAgICAgbm9kZS0+c2V0Q291bnRlclNjcm9sbGluZ0xheWVyKGNvdW50ZXJTY3JvbGxpbmdMYXll
ckZvckZyYW1lVmlldyhmcmFtZVZpZXcpKTsKQEAgLTE2NSwxMCArMTY1LDEwIEBAIHZvaWQgQXN5
bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6ZnJhbWVWaWV3Um9vdExheWVyRGlkQ2hhbmdlKEZyYW1l
VmlldyogZnJhbWVWaWV3CiAgICAgbm9kZS0+c2V0Q29udGVudFNoYWRvd0xheWVyKGNvbnRlbnRT
aGFkb3dMYXllckZvckZyYW1lVmlldyhmcmFtZVZpZXcpKTsKICAgICBub2RlLT5zZXRIZWFkZXJM
YXllcihoZWFkZXJMYXllckZvckZyYW1lVmlldyhmcmFtZVZpZXcpKTsKICAgICBub2RlLT5zZXRG
b290ZXJMYXllcihmb290ZXJMYXllckZvckZyYW1lVmlldyhmcmFtZVZpZXcpKTsKLSAgICBub2Rl
LT5zZXRTY3JvbGxCZWhhdmlvckZvckZpeGVkRWxlbWVudHMoZnJhbWVWaWV3LT5zY3JvbGxCZWhh
dmlvckZvckZpeGVkRWxlbWVudHMoKSk7CisgICAgbm9kZS0+c2V0U2Nyb2xsQmVoYXZpb3JGb3JG
aXhlZEVsZW1lbnRzKGZyYW1lVmlldy5zY3JvbGxCZWhhdmlvckZvckZpeGVkRWxlbWVudHMoKSk7
CiB9CiAKLWJvb2wgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6cmVxdWVzdFNjcm9sbFBvc2l0
aW9uVXBkYXRlKEZyYW1lVmlldyogZnJhbWVWaWV3LCBjb25zdCBJbnRQb2ludCYgc2Nyb2xsUG9z
aXRpb24pCitib29sIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnJlcXVlc3RTY3JvbGxQb3Np
dGlvblVwZGF0ZShGcmFtZVZpZXcmIGZyYW1lVmlldywgY29uc3QgSW50UG9pbnQmIHNjcm9sbFBv
c2l0aW9uKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKG1fcGFn
ZSk7CkBAIC0xNzYsMTYgKzE3NiwxNiBAQCBib29sIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6
OnJlcXVlc3RTY3JvbGxQb3NpdGlvblVwZGF0ZShGcmFtZVZpZXcqIGZyYW1lVmlldwogICAgIGlm
ICghY29vcmRpbmF0ZXNTY3JvbGxpbmdGb3JGcmFtZVZpZXcoZnJhbWVWaWV3KSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgYm9vbCBpc1Byb2dyYW1tYXRpY1Njcm9sbCA9IGZyYW1lVmll
dy0+aW5Qcm9ncmFtbWF0aWNTY3JvbGwoKTsKLSAgICBpZiAoaXNQcm9ncmFtbWF0aWNTY3JvbGwg
fHwgZnJhbWVWaWV3LT5mcmFtZSgpLmRvY3VtZW50KCktPmluUGFnZUNhY2hlKCkpCi0gICAgICAg
IHVwZGF0ZVNjcm9sbFBvc2l0aW9uQWZ0ZXJBc3luY1Njcm9sbChmcmFtZVZpZXctPnNjcm9sbExh
eWVySUQoKSwgc2Nyb2xsUG9zaXRpb24sIGlzUHJvZ3JhbW1hdGljU2Nyb2xsLCBTZXRTY3JvbGxp
bmdMYXllclBvc2l0aW9uKTsKKyAgICBib29sIGlzUHJvZ3JhbW1hdGljU2Nyb2xsID0gZnJhbWVW
aWV3LmluUHJvZ3JhbW1hdGljU2Nyb2xsKCk7CisgICAgaWYgKGlzUHJvZ3JhbW1hdGljU2Nyb2xs
IHx8IGZyYW1lVmlldy5mcmFtZSgpLmRvY3VtZW50KCktPmluUGFnZUNhY2hlKCkpCisgICAgICAg
IHVwZGF0ZVNjcm9sbFBvc2l0aW9uQWZ0ZXJBc3luY1Njcm9sbChmcmFtZVZpZXcuc2Nyb2xsTGF5
ZXJJRCgpLCBzY3JvbGxQb3NpdGlvbiwgaXNQcm9ncmFtbWF0aWNTY3JvbGwsIFNldFNjcm9sbGlu
Z0xheWVyUG9zaXRpb24pOwogCiAgICAgLy8gSWYgdGhpcyBmcmFtZSB2aWV3J3MgZG9jdW1lbnQg
aXMgYmVpbmcgcHV0IGludG8gdGhlIHBhZ2UgY2FjaGUsIHdlIGRvbid0IHdhbnQgdG8gdXBkYXRl
IG91cgogICAgIC8vIG1haW4gZnJhbWUgc2Nyb2xsIHBvc2l0aW9uLiBKdXN0IGxldCB0aGUgRnJh
bWVWaWV3IHRoaW5rIHRoYXQgd2UgZGlkLgotICAgIGlmIChmcmFtZVZpZXctPmZyYW1lKCkuZG9j
dW1lbnQoKS0+aW5QYWdlQ2FjaGUoKSkKKyAgICBpZiAoZnJhbWVWaWV3LmZyYW1lKCkuZG9jdW1l
bnQoKS0+aW5QYWdlQ2FjaGUoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBTY3JvbGxp
bmdTdGF0ZVNjcm9sbGluZ05vZGUqIHN0YXRlTm9kZSA9IGRvd25jYXN0PFNjcm9sbGluZ1N0YXRl
U2Nyb2xsaW5nTm9kZT4obV9zY3JvbGxpbmdTdGF0ZVRyZWUtPnN0YXRlTm9kZUZvcklEKGZyYW1l
Vmlldy0+c2Nyb2xsTGF5ZXJJRCgpKSk7CisgICAgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2Rl
KiBzdGF0ZU5vZGUgPSBkb3duY2FzdDxTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU+KG1fc2Ny
b2xsaW5nU3RhdGVUcmVlLT5zdGF0ZU5vZGVGb3JJRChmcmFtZVZpZXcuc2Nyb2xsTGF5ZXJJRCgp
KSk7CiAgICAgaWYgKCFzdGF0ZU5vZGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMjYy
LDE5ICsyNjIsMjEgQEAgdm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjp1cGRhdGVTY3Jv
bGxQb3NpdGlvbkFmdGVyQXN5bmNTY3JvbGwoU2Nyb2xsaW5nTm8KICAgICBpZiAoIW1fcGFnZSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBmcmFtZVZpZXdG
b3JTY3JvbGxpbmdOb2RlKHNjcm9sbGluZ05vZGVJRCk7Ci0gICAgaWYgKCFmcmFtZVZpZXcpCisg
ICAgRnJhbWVWaWV3KiBmcmFtZVZpZXdQdHIgPSBmcmFtZVZpZXdGb3JTY3JvbGxpbmdOb2RlKHNj
cm9sbGluZ05vZGVJRCk7CisgICAgaWYgKCFmcmFtZVZpZXdQdHIpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGlmIChzY3JvbGxpbmdOb2RlSUQgPT0gZnJhbWVWaWV3LT5zY3JvbGxMYXllcklEKCkp
IHsKLSAgICAgICAgYm9vbCBvbGRQcm9ncmFtbWF0aWNTY3JvbGwgPSBmcmFtZVZpZXctPmluUHJv
Z3JhbW1hdGljU2Nyb2xsKCk7Ci0gICAgICAgIGZyYW1lVmlldy0+c2V0SW5Qcm9ncmFtbWF0aWNT
Y3JvbGwocHJvZ3JhbW1hdGljU2Nyb2xsKTsKKyAgICBGcmFtZVZpZXcmIGZyYW1lVmlldyA9ICpm
cmFtZVZpZXdQdHI7CisKKyAgICBpZiAoc2Nyb2xsaW5nTm9kZUlEID09IGZyYW1lVmlldy5zY3Jv
bGxMYXllcklEKCkpIHsKKyAgICAgICAgYm9vbCBvbGRQcm9ncmFtbWF0aWNTY3JvbGwgPSBmcmFt
ZVZpZXcuaW5Qcm9ncmFtbWF0aWNTY3JvbGwoKTsKKyAgICAgICAgZnJhbWVWaWV3LnNldEluUHJv
Z3JhbW1hdGljU2Nyb2xsKHByb2dyYW1tYXRpY1Njcm9sbCk7CiAKLSAgICAgICAgZnJhbWVWaWV3
LT5zZXRDb25zdHJhaW5zU2Nyb2xsaW5nVG9Db250ZW50RWRnZShmYWxzZSk7Ci0gICAgICAgIGZy
YW1lVmlldy0+bm90aWZ5U2Nyb2xsUG9zaXRpb25DaGFuZ2VkKHJvdW5kZWRJbnRQb2ludChzY3Jv
bGxQb3NpdGlvbikpOwotICAgICAgICBmcmFtZVZpZXctPnNldENvbnN0cmFpbnNTY3JvbGxpbmdU
b0NvbnRlbnRFZGdlKHRydWUpOworICAgICAgICBmcmFtZVZpZXcuc2V0Q29uc3RyYWluc1Njcm9s
bGluZ1RvQ29udGVudEVkZ2UoZmFsc2UpOworICAgICAgICBmcmFtZVZpZXcubm90aWZ5U2Nyb2xs
UG9zaXRpb25DaGFuZ2VkKHJvdW5kZWRJbnRQb2ludChzY3JvbGxQb3NpdGlvbikpOworICAgICAg
ICBmcmFtZVZpZXcuc2V0Q29uc3RyYWluc1Njcm9sbGluZ1RvQ29udGVudEVkZ2UodHJ1ZSk7CiAK
LSAgICAgICAgZnJhbWVWaWV3LT5zZXRJblByb2dyYW1tYXRpY1Njcm9sbChvbGRQcm9ncmFtbWF0
aWNTY3JvbGwpOworICAgICAgICBmcmFtZVZpZXcuc2V0SW5Qcm9ncmFtbWF0aWNTY3JvbGwob2xk
UHJvZ3JhbW1hdGljU2Nyb2xsKTsKIAogICAgICAgICBpZiAoR3JhcGhpY3NMYXllciogc2Nyb2xs
TGF5ZXIgPSBzY3JvbGxMYXllckZvckZyYW1lVmlldyhmcmFtZVZpZXcpKSB7CiAgICAgICAgICAg
ICBHcmFwaGljc0xheWVyKiBjb3VudGVyU2Nyb2xsaW5nTGF5ZXIgPSBjb3VudGVyU2Nyb2xsaW5n
TGF5ZXJGb3JGcmFtZVZpZXcoZnJhbWVWaWV3KTsKQEAgLTI4MywxOCArMjg1LDE4IEBAIHZvaWQg
QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6dXBkYXRlU2Nyb2xsUG9zaXRpb25BZnRlckFzeW5j
U2Nyb2xsKFNjcm9sbGluZ05vCiAgICAgICAgICAgICBHcmFwaGljc0xheWVyKiBzY3JvbGxlZENv
bnRlbnRzTGF5ZXIgPSByb290Q29udGVudExheWVyRm9yRnJhbWVWaWV3KGZyYW1lVmlldyk7CiAg
ICAgICAgICAgICBHcmFwaGljc0xheWVyKiBoZWFkZXJMYXllciA9IGhlYWRlckxheWVyRm9yRnJh
bWVWaWV3KGZyYW1lVmlldyk7CiAgICAgICAgICAgICBHcmFwaGljc0xheWVyKiBmb290ZXJMYXll
ciA9IGZvb3RlckxheWVyRm9yRnJhbWVWaWV3KGZyYW1lVmlldyk7Ci0gICAgICAgICAgICBMYXlv
dXRTaXplIHNjcm9sbE9mZnNldEZvckZpeGVkID0gZnJhbWVWaWV3LT5zY3JvbGxPZmZzZXRGb3JG
aXhlZFBvc2l0aW9uKCk7CisgICAgICAgICAgICBMYXlvdXRTaXplIHNjcm9sbE9mZnNldEZvckZp
eGVkID0gZnJhbWVWaWV3LnNjcm9sbE9mZnNldEZvckZpeGVkUG9zaXRpb24oKTsKIAotICAgICAg
ICAgICAgZmxvYXQgdG9wQ29udGVudEluc2V0ID0gZnJhbWVWaWV3LT50b3BDb250ZW50SW5zZXQo
KTsKKyAgICAgICAgICAgIGZsb2F0IHRvcENvbnRlbnRJbnNldCA9IGZyYW1lVmlldy50b3BDb250
ZW50SW5zZXQoKTsKICAgICAgICAgICAgIEZsb2F0UG9pbnQgcG9zaXRpb25Gb3JJbnNldENsaXBM
YXllciA9IEZsb2F0UG9pbnQoMCwgRnJhbWVWaWV3Ojp5UG9zaXRpb25Gb3JJbnNldENsaXBMYXll
cihzY3JvbGxQb3NpdGlvbiwgdG9wQ29udGVudEluc2V0KSk7CiAgICAgICAgICAgICBGbG9hdFBv
aW50IHBvc2l0aW9uRm9yQ29udGVudHNMYXllciA9IEZsb2F0UG9pbnQoc2Nyb2xsZWRDb250ZW50
c0xheWVyLT5wb3NpdGlvbigpLngoKSwKLSAgICAgICAgICAgICAgICBGcmFtZVZpZXc6OnlQb3Np
dGlvbkZvclJvb3RDb250ZW50TGF5ZXIoc2Nyb2xsUG9zaXRpb24sIHRvcENvbnRlbnRJbnNldCwg
ZnJhbWVWaWV3LT5oZWFkZXJIZWlnaHQoKSkpOworICAgICAgICAgICAgICAgIEZyYW1lVmlldzo6
eVBvc2l0aW9uRm9yUm9vdENvbnRlbnRMYXllcihzY3JvbGxQb3NpdGlvbiwgdG9wQ29udGVudElu
c2V0LCBmcmFtZVZpZXcuaGVhZGVySGVpZ2h0KCkpKTsKICAgICAgICAgICAgIEZsb2F0UG9pbnQg
cG9zaXRpb25Gb3JIZWFkZXJMYXllciA9IEZsb2F0UG9pbnQoc2Nyb2xsT2Zmc2V0Rm9yRml4ZWQu
d2lkdGgoKSwgRnJhbWVWaWV3Ojp5UG9zaXRpb25Gb3JIZWFkZXJMYXllcihzY3JvbGxQb3NpdGlv
biwgdG9wQ29udGVudEluc2V0KSk7CiAgICAgICAgICAgICBGbG9hdFBvaW50IHBvc2l0aW9uRm9y
Rm9vdGVyTGF5ZXIgPSBGbG9hdFBvaW50KHNjcm9sbE9mZnNldEZvckZpeGVkLndpZHRoKCksCi0g
ICAgICAgICAgICAgICAgRnJhbWVWaWV3Ojp5UG9zaXRpb25Gb3JGb290ZXJMYXllcihzY3JvbGxQ
b3NpdGlvbiwgdG9wQ29udGVudEluc2V0LCBmcmFtZVZpZXctPnRvdGFsQ29udGVudHNTaXplKCku
aGVpZ2h0KCksIGZyYW1lVmlldy0+Zm9vdGVySGVpZ2h0KCkpKTsKKyAgICAgICAgICAgICAgICBG
cmFtZVZpZXc6OnlQb3NpdGlvbkZvckZvb3RlckxheWVyKHNjcm9sbFBvc2l0aW9uLCB0b3BDb250
ZW50SW5zZXQsIGZyYW1lVmlldy50b3RhbENvbnRlbnRzU2l6ZSgpLmhlaWdodCgpLCBmcmFtZVZp
ZXcuZm9vdGVySGVpZ2h0KCkpKTsKIAogICAgICAgICAgICAgaWYgKHByb2dyYW1tYXRpY1Njcm9s
bCB8fCBzY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9uID09IFNldFNjcm9sbGluZ0xheWVyUG9z
aXRpb24pIHsKLSAgICAgICAgICAgICAgICBzY3JvbGxMYXllci0+c2V0UG9zaXRpb24oLWZyYW1l
Vmlldy0+c2Nyb2xsUG9zaXRpb24oKSk7CisgICAgICAgICAgICAgICAgc2Nyb2xsTGF5ZXItPnNl
dFBvc2l0aW9uKC1mcmFtZVZpZXcuc2Nyb2xsUG9zaXRpb24oKSk7CiAgICAgICAgICAgICAgICAg
aWYgKGNvdW50ZXJTY3JvbGxpbmdMYXllcikKICAgICAgICAgICAgICAgICAgICAgY291bnRlclNj
cm9sbGluZ0xheWVyLT5zZXRQb3NpdGlvbih0b0xheW91dFBvaW50KHNjcm9sbE9mZnNldEZvckZp
eGVkKSk7CiAgICAgICAgICAgICAgICAgaWYgKGluc2V0Q2xpcExheWVyKQpAQCAtMzA4LDcgKzMx
MCw3IEBAIHZvaWQgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6dXBkYXRlU2Nyb2xsUG9zaXRp
b25BZnRlckFzeW5jU2Nyb2xsKFNjcm9sbGluZ05vCiAgICAgICAgICAgICAgICAgaWYgKGZvb3Rl
ckxheWVyKQogICAgICAgICAgICAgICAgICAgICBmb290ZXJMYXllci0+c2V0UG9zaXRpb24ocG9z
aXRpb25Gb3JGb290ZXJMYXllcik7CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
ICAgIHNjcm9sbExheWVyLT5zeW5jUG9zaXRpb24oLWZyYW1lVmlldy0+c2Nyb2xsUG9zaXRpb24o
KSk7CisgICAgICAgICAgICAgICAgc2Nyb2xsTGF5ZXItPnN5bmNQb3NpdGlvbigtZnJhbWVWaWV3
LnNjcm9sbFBvc2l0aW9uKCkpOwogICAgICAgICAgICAgICAgIGlmIChjb3VudGVyU2Nyb2xsaW5n
TGF5ZXIpCiAgICAgICAgICAgICAgICAgICAgIGNvdW50ZXJTY3JvbGxpbmdMYXllci0+c3luY1Bv
c2l0aW9uKHRvTGF5b3V0UG9pbnQoc2Nyb2xsT2Zmc2V0Rm9yRml4ZWQpKTsKICAgICAgICAgICAg
ICAgICBpZiAoaW5zZXRDbGlwTGF5ZXIpCkBAIC0zMjIsNyArMzI0LDcgQEAgdm9pZCBBc3luY1Nj
cm9sbGluZ0Nvb3JkaW5hdG9yOjp1cGRhdGVTY3JvbGxQb3NpdGlvbkFmdGVyQXN5bmNTY3JvbGwo
U2Nyb2xsaW5nTm8KICAgICAgICAgICAgICAgICBpZiAoZm9vdGVyTGF5ZXIpCiAgICAgICAgICAg
ICAgICAgICAgIGZvb3RlckxheWVyLT5zeW5jUG9zaXRpb24ocG9zaXRpb25Gb3JGb290ZXJMYXll
cik7CiAKLSAgICAgICAgICAgICAgICBMYXlvdXRSZWN0IHZpZXdwb3J0UmVjdCA9IGZyYW1lVmll
dy0+dmlld3BvcnRDb25zdHJhaW5lZFZpc2libGVDb250ZW50UmVjdCgpOworICAgICAgICAgICAg
ICAgIExheW91dFJlY3Qgdmlld3BvcnRSZWN0ID0gZnJhbWVWaWV3LnZpZXdwb3J0Q29uc3RyYWlu
ZWRWaXNpYmxlQ29udGVudFJlY3QoKTsKICAgICAgICAgICAgICAgICBzeW5jQ2hpbGRQb3NpdGlv
bnModmlld3BvcnRSZWN0KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMzMxLDcgKzMz
Myw3IEBAIHZvaWQgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6dXBkYXRlU2Nyb2xsUG9zaXRp
b25BZnRlckFzeW5jU2Nyb2xsKFNjcm9sbGluZ05vCiAgICAgfQogCiAgICAgLy8gT3ZlcmZsb3ct
c2Nyb2xsIGFyZWEuCi0gICAgaWYgKFNjcm9sbGFibGVBcmVhKiBzY3JvbGxhYmxlQXJlYSA9IGZy
YW1lVmlldy0+c2Nyb2xsYWJsZUFyZWFGb3JTY3JvbGxMYXllcklEKHNjcm9sbGluZ05vZGVJRCkp
IHsKKyAgICBpZiAoU2Nyb2xsYWJsZUFyZWEqIHNjcm9sbGFibGVBcmVhID0gZnJhbWVWaWV3LnNj
cm9sbGFibGVBcmVhRm9yU2Nyb2xsTGF5ZXJJRChzY3JvbGxpbmdOb2RlSUQpKSB7CiAgICAgICAg
IHNjcm9sbGFibGVBcmVhLT5zZXRJc1VzZXJTY3JvbGwoc2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFj
dGlvbiA9PSBTeW5jU2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbik7CiAgICAgICAgIHNjcm9sbGFibGVB
cmVhLT5zY3JvbGxUb09mZnNldFdpdGhvdXRBbmltYXRpb24oc2Nyb2xsUG9zaXRpb24pOwogICAg
ICAgICBzY3JvbGxhYmxlQXJlYS0+c2V0SXNVc2VyU2Nyb2xsKGZhbHNlKTsKQEAgLTM0MCwxOCAr
MzQyLDE4IEBAIHZvaWQgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6dXBkYXRlU2Nyb2xsUG9z
aXRpb25BZnRlckFzeW5jU2Nyb2xsKFNjcm9sbGluZ05vCiAgICAgfQogfQogCi12b2lkIEFzeW5j
U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNjcm9sbGFibGVBcmVhU2Nyb2xsYmFyTGF5ZXJEaWRDaGFu
Z2UoU2Nyb2xsYWJsZUFyZWEqIHNjcm9sbGFibGVBcmVhLCBTY3JvbGxiYXJPcmllbnRhdGlvbiBv
cmllbnRhdGlvbikKK3ZvaWQgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6c2Nyb2xsYWJsZUFy
ZWFTY3JvbGxiYXJMYXllckRpZENoYW5nZShTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEs
IFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQogewogICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CiAgICAgQVNTRVJUKG1fcGFnZSk7CiAKLSAgICBpZiAoc2Nyb2xsYWJsZUFyZWEg
IT0gc3RhdGljX2Nhc3Q8U2Nyb2xsYWJsZUFyZWEqPihtX3BhZ2UtPm1haW5GcmFtZSgpLnZpZXco
KSkpCisgICAgaWYgKCZzY3JvbGxhYmxlQXJlYSAhPSBzdGF0aWNfY2FzdDxTY3JvbGxhYmxlQXJl
YSo+KG1fcGFnZS0+bWFpbkZyYW1lKCkudmlldygpKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
aWYgKG9yaWVudGF0aW9uID09IFZlcnRpY2FsU2Nyb2xsYmFyKQotICAgICAgICBzY3JvbGxhYmxl
QXJlYS0+dmVydGljYWxTY3JvbGxiYXJMYXllckRpZENoYW5nZSgpOworICAgICAgICBzY3JvbGxh
YmxlQXJlYS52ZXJ0aWNhbFNjcm9sbGJhckxheWVyRGlkQ2hhbmdlKCk7CiAgICAgZWxzZQotICAg
ICAgICBzY3JvbGxhYmxlQXJlYS0+aG9yaXpvbnRhbFNjcm9sbGJhckxheWVyRGlkQ2hhbmdlKCk7
CisgICAgICAgIHNjcm9sbGFibGVBcmVhLmhvcml6b250YWxTY3JvbGxiYXJMYXllckRpZENoYW5n
ZSgpOwogfQogCiBTY3JvbGxpbmdOb2RlSUQgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6YXR0
YWNoVG9TdGF0ZVRyZWUoU2Nyb2xsaW5nTm9kZVR5cGUgbm9kZVR5cGUsIFNjcm9sbGluZ05vZGVJ
RCBuZXdOb2RlSUQsIFNjcm9sbGluZ05vZGVJRCBwYXJlbnRJRCkKQEAgLTM4MywxMCArMzg1LDEw
IEBAIHZvaWQgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6c3luY0NoaWxkUG9zaXRpb25zKGNv
bnN0IExheW91dFJlY3QmIHZpZXdwb3J0UmVjCiAgICAgICAgIGNoaWxkLT5zeW5jTGF5ZXJQb3Np
dGlvbkZvclZpZXdwb3J0UmVjdCh2aWV3cG9ydFJlY3QpOwogfQogCi12b2lkIEFzeW5jU2Nyb2xs
aW5nQ29vcmRpbmF0b3I6OmVuc3VyZVJvb3RTdGF0ZU5vZGVGb3JGcmFtZVZpZXcoRnJhbWVWaWV3
KiBmcmFtZVZpZXcpCit2b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmVuc3VyZVJvb3RT
dGF0ZU5vZGVGb3JGcmFtZVZpZXcoRnJhbWVWaWV3JiBmcmFtZVZpZXcpCiB7Ci0gICAgQVNTRVJU
KGZyYW1lVmlldy0+c2Nyb2xsTGF5ZXJJRCgpKTsKLSAgICBhdHRhY2hUb1N0YXRlVHJlZShGcmFt
ZVNjcm9sbGluZ05vZGUsIGZyYW1lVmlldy0+c2Nyb2xsTGF5ZXJJRCgpLCAwKTsKKyAgICBBU1NF
UlQoZnJhbWVWaWV3LnNjcm9sbExheWVySUQoKSk7CisgICAgYXR0YWNoVG9TdGF0ZVRyZWUoRnJh
bWVTY3JvbGxpbmdOb2RlLCBmcmFtZVZpZXcuc2Nyb2xsTGF5ZXJJRCgpLCAwKTsKIH0KIAogdm9p
ZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjp1cGRhdGVGcmFtZVNjcm9sbGluZ05vZGUoU2Ny
b2xsaW5nTm9kZUlEIG5vZGVJRCwgR3JhcGhpY3NMYXllciogbGF5ZXIsIEdyYXBoaWNzTGF5ZXIq
IHNjcm9sbGVkQ29udGVudHNMYXllciwgR3JhcGhpY3NMYXllciogY291bnRlclNjcm9sbGluZ0xh
eWVyLCBHcmFwaGljc0xheWVyKiBpbnNldENsaXBMYXllciwgY29uc3QgU2Nyb2xsaW5nR2VvbWV0
cnkqIHNjcm9sbGluZ0dlb21ldHJ5KQpAQCAtNDgxLDEzICs0ODMsMTMgQEAgdm9pZCBBc3luY1Nj
cm9sbGluZ0Nvb3JkaW5hdG9yOjp1cGRhdGVNYWluRnJhbWVTY3JvbGxMYXllclBvc2l0aW9uKCkK
ICAgICBpZiAoIWZyYW1lVmlldykKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKEdyYXBoaWNz
TGF5ZXIqIHNjcm9sbExheWVyID0gc2Nyb2xsTGF5ZXJGb3JGcmFtZVZpZXcoZnJhbWVWaWV3KSkK
KyAgICBpZiAoR3JhcGhpY3NMYXllciogc2Nyb2xsTGF5ZXIgPSBzY3JvbGxMYXllckZvckZyYW1l
VmlldygqZnJhbWVWaWV3KSkKICAgICAgICAgc2Nyb2xsTGF5ZXItPnNldFBvc2l0aW9uKC1mcmFt
ZVZpZXctPnNjcm9sbFBvc2l0aW9uKCkpOwogfQogCi12b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRp
bmF0b3I6OnJlY29tcHV0ZVdoZWVsRXZlbnRIYW5kbGVyQ291bnRGb3JGcmFtZVZpZXcoRnJhbWVW
aWV3KiBmcmFtZVZpZXcpCit2b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnJlY29tcHV0
ZVdoZWVsRXZlbnRIYW5kbGVyQ291bnRGb3JGcmFtZVZpZXcoRnJhbWVWaWV3JiBmcmFtZVZpZXcp
CiB7Ci0gICAgU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGUqIG5vZGUgPSBkb3duY2Fz
dDxTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZT4obV9zY3JvbGxpbmdTdGF0ZVRyZWUt
PnN0YXRlTm9kZUZvcklEKGZyYW1lVmlldy0+c2Nyb2xsTGF5ZXJJRCgpKSk7CisgICAgU2Nyb2xs
aW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGUqIG5vZGUgPSBkb3duY2FzdDxTY3JvbGxpbmdTdGF0
ZUZyYW1lU2Nyb2xsaW5nTm9kZT4obV9zY3JvbGxpbmdTdGF0ZVRyZWUtPnN0YXRlTm9kZUZvcklE
KGZyYW1lVmlldy5zY3JvbGxMYXllcklEKCkpKTsKICAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJl
dHVybjsKICAgICBub2RlLT5zZXRXaGVlbEV2ZW50SGFuZGxlckNvdW50KGNvbXB1dGVDdXJyZW50
V2hlZWxFdmVudEhhbmRsZXJDb3VudCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaAppbmRleCBlM2EyOTM0
NDczMWE0MTIyZmU4MTE2ZjIxZmVkNjNkNjZjNzBjYTA0Li5mM2ViYWE0MzE5YWQ2YjY4Y2Q0M2Fh
NWRkOTgxNTdhODE5Y2NlYzNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5oCkBAIC03MywxMyArNzMsMTMg
QEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgaXNBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9y
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgdmlydHVhbCBib29sIHN1
cHBvcnRzRml4ZWRQb3NpdGlvbkxheWVycygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7
IH0KLSAgICB2aXJ0dWFsIGJvb2wgaGFzVmlzaWJsZVNsb3dSZXBhaW50Vmlld3BvcnRDb25zdHJh
aW5lZE9iamVjdHMoRnJhbWVWaWV3KikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICB2aXJ0dWFsIGJvb2wgaGFzVmlzaWJsZVNsb3dSZXBhaW50Vmlld3BvcnRDb25zdHJhaW5l
ZE9iamVjdHMoY29uc3QgRnJhbWVWaWV3JikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7
IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBmcmFtZVZpZXdMYXlvdXRVcGRh
dGVkKEZyYW1lVmlldyopIG92ZXJyaWRlOwotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9p
ZCBmcmFtZVZpZXdSb290TGF5ZXJEaWRDaGFuZ2UoRnJhbWVWaWV3Kikgb3ZlcnJpZGU7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGZyYW1lVmlld05vbkZhc3RTY3JvbGxhYmxlUmVn
aW9uQ2hhbmdlZChGcmFtZVZpZXcqKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0
dWFsIHZvaWQgZnJhbWVWaWV3TGF5b3V0VXBkYXRlZChGcmFtZVZpZXcmKSBvdmVycmlkZTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZnJhbWVWaWV3Um9vdExheWVyRGlkQ2hhbmdl
KEZyYW1lVmlldyYpIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBm
cmFtZVZpZXdOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbkNoYW5nZWQoRnJhbWVWaWV3Jikgb3ZlcnJp
ZGU7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIGJvb2wgcmVxdWVzdFNjcm9sbFBvc2l0
aW9uVXBkYXRlKEZyYW1lVmlldyosIGNvbnN0IEludFBvaW50Jikgb3ZlcnJpZGU7CisgICAgV0VC
Q09SRV9FWFBPUlQgdmlydHVhbCBib29sIHJlcXVlc3RTY3JvbGxQb3NpdGlvblVwZGF0ZShGcmFt
ZVZpZXcmLCBjb25zdCBJbnRQb2ludCYpIG92ZXJyaWRlOwogCiAgICAgV0VCQ09SRV9FWFBPUlQg
dmlydHVhbCBTY3JvbGxpbmdOb2RlSUQgYXR0YWNoVG9TdGF0ZVRyZWUoU2Nyb2xsaW5nTm9kZVR5
cGUsIFNjcm9sbGluZ05vZGVJRCBuZXdOb2RlSUQsIFNjcm9sbGluZ05vZGVJRCBwYXJlbnRJRCkg
b3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGRldGFjaEZyb21TdGF0
ZVRyZWUoU2Nyb2xsaW5nTm9kZUlEKSBvdmVycmlkZTsKQEAgLTk0LDE0ICs5NCwxNCBAQCBwcml2
YXRlOgogICAgIHZpcnR1YWwgdm9pZCBzZXRTY3JvbGxQaW5uaW5nQmVoYXZpb3IoU2Nyb2xsUGlu
bmluZ0JlaGF2aW9yKSBvdmVycmlkZTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9p
ZCBzeW5jQ2hpbGRQb3NpdGlvbnMoY29uc3QgTGF5b3V0UmVjdCYgdmlld3BvcnRSZWN0KSBvdmVy
cmlkZTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgc2Nyb2xsYWJsZUFyZWFTY3Jv
bGxiYXJMYXllckRpZENoYW5nZShTY3JvbGxhYmxlQXJlYSosIFNjcm9sbGJhck9yaWVudGF0aW9u
KSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgc2Nyb2xsYWJsZUFy
ZWFTY3JvbGxiYXJMYXllckRpZENoYW5nZShTY3JvbGxhYmxlQXJlYSYsIFNjcm9sbGJhck9yaWVu
dGF0aW9uKSBvdmVycmlkZTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCByZWNv
bXB1dGVXaGVlbEV2ZW50SGFuZGxlckNvdW50Rm9yRnJhbWVWaWV3KEZyYW1lVmlldyopIG92ZXJy
aWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCByZWNvbXB1dGVXaGVlbEV2ZW50
SGFuZGxlckNvdW50Rm9yRnJhbWVWaWV3KEZyYW1lVmlldyYpIG92ZXJyaWRlOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBzZXRTeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMoU3lu
Y2hyb25vdXNTY3JvbGxpbmdSZWFzb25zKSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgdm9pZCBz
Y2hlZHVsZVRyZWVTdGF0ZUNvbW1pdCgpID0gMDsKIAotICAgIHZvaWQgZW5zdXJlUm9vdFN0YXRl
Tm9kZUZvckZyYW1lVmlldyhGcmFtZVZpZXcqKTsKKyAgICB2b2lkIGVuc3VyZVJvb3RTdGF0ZU5v
ZGVGb3JGcmFtZVZpZXcoRnJhbWVWaWV3Jik7CiAgICAgdm9pZCB1cGRhdGVNYWluRnJhbWVTY3Jv
bGxMYXllclBvc2l0aW9uKCk7CiAKICAgICB2b2lkIHVwZGF0ZVNjcm9sbFBvc2l0aW9uQWZ0ZXJB
c3luY1Njcm9sbFRpbWVyRmlyZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAppbmRleCBiZDNjZWEzMzc5MTFjYjhl
ZDgzYzE1OTIxNTRlNzEyZTNjMThlYjdlLi5iMDg3YWQ3Y2RkY2VmZGZmYTY4NjAxZWU4NWNhZWNj
ODA3M2Q2YTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdDb29yZGluYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCkBAIC03OSwxNSArNzksMTUgQEAgU2Nyb2xsaW5nQ29v
cmRpbmF0b3I6On5TY3JvbGxpbmdDb29yZGluYXRvcigpCiB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5h
dG9yOjpwYWdlRGVzdHJveWVkKCkKIHsKICAgICBBU1NFUlQobV9wYWdlKTsKLSAgICBtX3BhZ2Ug
PSAwOworICAgIG1fcGFnZSA9IG51bGxwdHI7CiB9CiAKLWJvb2wgU2Nyb2xsaW5nQ29vcmRpbmF0
b3I6OmNvb3JkaW5hdGVzU2Nyb2xsaW5nRm9yRnJhbWVWaWV3KEZyYW1lVmlldyogZnJhbWVWaWV3
KSBjb25zdAorYm9vbCBTY3JvbGxpbmdDb29yZGluYXRvcjo6Y29vcmRpbmF0ZXNTY3JvbGxpbmdG
b3JGcmFtZVZpZXcoY29uc3QgRnJhbWVWaWV3JiBmcmFtZVZpZXcpIGNvbnN0CiB7CiAgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlQobV9wYWdlKTsKIAotICAgIGlmICghZnJh
bWVWaWV3LT5mcmFtZSgpLmlzTWFpbkZyYW1lKCkgJiYgIW1fcGFnZS0+c2V0dGluZ3MoKS5zY3Jv
bGxpbmdUcmVlSW5jbHVkZXNGcmFtZXMoKSkKKyAgICBpZiAoIWZyYW1lVmlldy5mcmFtZSgpLmlz
TWFpbkZyYW1lKCkgJiYgIW1fcGFnZS0+c2V0dGluZ3MoKS5zY3JvbGxpbmdUcmVlSW5jbHVkZXNG
cmFtZXMoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgUmVuZGVyVmlldyogcmVuZGVy
VmlldyA9IG1fcGFnZS0+bWFpbkZyYW1lKCkuY29udGVudFJlbmRlcmVyKCk7CkBAIC05Niw3ICs5
Niw3IEBAIGJvb2wgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmNvb3JkaW5hdGVzU2Nyb2xsaW5nRm9y
RnJhbWVWaWV3KEZyYW1lVmlldyogZnJhbWVWaWV3CiAgICAgcmV0dXJuIHJlbmRlclZpZXctPnVz
ZXNDb21wb3NpdGluZygpOwogfQogCi1SZWdpb24gU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmNvbXB1
dGVOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbihjb25zdCBGcmFtZSogZnJhbWUsIGNvbnN0IEludFBv
aW50JiBmcmFtZUxvY2F0aW9uKSBjb25zdAorUmVnaW9uIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpj
b21wdXRlTm9uRmFzdFNjcm9sbGFibGVSZWdpb24oY29uc3QgRnJhbWUmIGZyYW1lLCBjb25zdCBJ
bnRQb2ludCYgZnJhbWVMb2NhdGlvbikgY29uc3QKIHsKICNpZiBFTkFCTEUoSU9TX1RPVUNIX0VW
RU5UUykKICAgICAvLyBPbiBpT1MsIHdlIHVzZSBub25GYXN0U2Nyb2xsYWJsZVJlZ2lvbiB0byBy
ZXByZXNlbnQgdGhlIHJlZ2lvbiBjb3ZlcmVkIGJ5IGVsZW1lbnRzIHdpdGggdG91Y2ggZXZlbnQg
aGFuZGxlcnMuCkBAIC0xMTcsNyArMTE3LDcgQEAgUmVnaW9uIFNjcm9sbGluZ0Nvb3JkaW5hdG9y
Ojpjb21wdXRlTm9uRmFzdFNjcm9sbGFibGVSZWdpb24oY29uc3QgRnJhbWUqIGZyYW1lLAogICAg
IHJldHVybiB0b3VjaFJlZ2lvbjsKICNlbHNlCiAgICAgUmVnaW9uIG5vbkZhc3RTY3JvbGxhYmxl
UmVnaW9uOwotICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0gZnJhbWUtPnZpZXcoKTsKKyAgICBG
cmFtZVZpZXcqIGZyYW1lVmlldyA9IGZyYW1lLnZpZXcoKTsKICAgICBpZiAoIWZyYW1lVmlldykK
ICAgICAgICAgcmV0dXJuIG5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uOwogCkBAIC0xNDUsOCArMTQ1
LDggQEAgUmVnaW9uIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpjb21wdXRlTm9uRmFzdFNjcm9sbGFi
bGVSZWdpb24oY29uc3QgRnJhbWUqIGZyYW1lLAogICAgICAgICAgICAgbm9uRmFzdFNjcm9sbGFi
bGVSZWdpb24udW5pdGUocGx1Z2luVmlld0Jhc2UuZnJhbWVSZWN0KCkpOwogICAgIH0KIAotICAg
IGZvciAoRnJhbWUqIHN1YmZyYW1lID0gZnJhbWUtPnRyZWUoKS5maXJzdENoaWxkKCk7IHN1YmZy
YW1lOyBzdWJmcmFtZSA9IHN1YmZyYW1lLT50cmVlKCkubmV4dFNpYmxpbmcoKSkKLSAgICAgICAg
bm9uRmFzdFNjcm9sbGFibGVSZWdpb24udW5pdGUoY29tcHV0ZU5vbkZhc3RTY3JvbGxhYmxlUmVn
aW9uKHN1YmZyYW1lLCBvZmZzZXQpKTsKKyAgICBmb3IgKEZyYW1lKiBzdWJmcmFtZSA9IGZyYW1l
LnRyZWUoKS5maXJzdENoaWxkKCk7IHN1YmZyYW1lOyBzdWJmcmFtZSA9IHN1YmZyYW1lLT50cmVl
KCkubmV4dFNpYmxpbmcoKSkKKyAgICAgICAgbm9uRmFzdFNjcm9sbGFibGVSZWdpb24udW5pdGUo
Y29tcHV0ZU5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uKCpzdWJmcmFtZSwgb2Zmc2V0KSk7CiAKICAg
ICByZXR1cm4gbm9uRmFzdFNjcm9sbGFibGVSZWdpb247CiAjZW5kaWYKQEAgLTE2NCw3ICsxNjQs
NyBAQCB1bnNpZ25lZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6Y29tcHV0ZUN1cnJlbnRXaGVlbEV2
ZW50SGFuZGxlckNvdW50KCkKICAgICByZXR1cm4gd2hlZWxFdmVudEhhbmRsZXJDb3VudDsKIH0K
IAotdm9pZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6ZnJhbWVWaWV3V2hlZWxFdmVudEhhbmRsZXJD
b3VudENoYW5nZWQoRnJhbWVWaWV3KiBmcmFtZVZpZXcpCit2b2lkIFNjcm9sbGluZ0Nvb3JkaW5h
dG9yOjpmcmFtZVZpZXdXaGVlbEV2ZW50SGFuZGxlckNvdW50Q2hhbmdlZChGcmFtZVZpZXcmIGZy
YW1lVmlldykKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VSVChtX3Bh
Z2UpOwpAQCAtMTcyLDcgKzE3Miw3IEBAIHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZyYW1l
Vmlld1doZWVsRXZlbnRIYW5kbGVyQ291bnRDaGFuZ2VkKEZyYW1lVmlldyogZnJhCiAgICAgcmVj
b21wdXRlV2hlZWxFdmVudEhhbmRsZXJDb3VudEZvckZyYW1lVmlldyhmcmFtZVZpZXcpOwogfQog
Ci12b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpmcmFtZVZpZXdIYXNTbG93UmVwYWludE9iamVj
dHNEaWRDaGFuZ2UoRnJhbWVWaWV3KiBmcmFtZVZpZXcpCit2b2lkIFNjcm9sbGluZ0Nvb3JkaW5h
dG9yOjpmcmFtZVZpZXdIYXNTbG93UmVwYWludE9iamVjdHNEaWRDaGFuZ2UoRnJhbWVWaWV3JiBm
cmFtZVZpZXcpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlQobV9w
YWdlKTsKQEAgLTE4Myw3ICsxODMsNyBAQCB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpmcmFt
ZVZpZXdIYXNTbG93UmVwYWludE9iamVjdHNEaWRDaGFuZ2UoRnJhbWVWaWV3KiBmcgogICAgIHVw
ZGF0ZVN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucyhmcmFtZVZpZXcpOwogfQogCi12b2lkIFNj
cm9sbGluZ0Nvb3JkaW5hdG9yOjpmcmFtZVZpZXdGaXhlZE9iamVjdHNEaWRDaGFuZ2UoRnJhbWVW
aWV3KiBmcmFtZVZpZXcpCit2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpmcmFtZVZpZXdGaXhl
ZE9iamVjdHNEaWRDaGFuZ2UoRnJhbWVWaWV3JiBmcmFtZVZpZXcpCiB7CiAgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKICAgICBBU1NFUlQobV9wYWdlKTsKQEAgLTE5NCwyMiArMTk0LDIyIEBA
IHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZyYW1lVmlld0ZpeGVkT2JqZWN0c0RpZENoYW5n
ZShGcmFtZVZpZXcqIGZyYW1lVmlldykKICAgICB1cGRhdGVTeW5jaHJvbm91c1Njcm9sbGluZ1Jl
YXNvbnMoZnJhbWVWaWV3KTsKIH0KIAotR3JhcGhpY3NMYXllciogU2Nyb2xsaW5nQ29vcmRpbmF0
b3I6OnNjcm9sbExheWVyRm9yU2Nyb2xsYWJsZUFyZWEoU2Nyb2xsYWJsZUFyZWEqIHNjcm9sbGFi
bGVBcmVhKQorR3JhcGhpY3NMYXllciogU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNjcm9sbExheWVy
Rm9yU2Nyb2xsYWJsZUFyZWEoU2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFibGVBcmVhKQogewotICAg
IHJldHVybiBzY3JvbGxhYmxlQXJlYS0+bGF5ZXJGb3JTY3JvbGxpbmcoKTsKKyAgICByZXR1cm4g
c2Nyb2xsYWJsZUFyZWEubGF5ZXJGb3JTY3JvbGxpbmcoKTsKIH0KIAotR3JhcGhpY3NMYXllciog
U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNjcm9sbExheWVyRm9yRnJhbWVWaWV3KEZyYW1lVmlldyog
ZnJhbWVWaWV3KQorR3JhcGhpY3NMYXllciogU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNjcm9sbExh
eWVyRm9yRnJhbWVWaWV3KEZyYW1lVmlldyYgZnJhbWVWaWV3KQogewotICAgIGlmIChSZW5kZXJW
aWV3KiByZW5kZXJWaWV3ID0gZnJhbWVWaWV3LT5mcmFtZSgpLmNvbnRlbnRSZW5kZXJlcigpKQor
ICAgIGlmIChSZW5kZXJWaWV3KiByZW5kZXJWaWV3ID0gZnJhbWVWaWV3LmZyYW1lKCkuY29udGVu
dFJlbmRlcmVyKCkpCiAgICAgICAgIHJldHVybiByZW5kZXJWaWV3LT5jb21wb3NpdG9yKCkuc2Ny
b2xsTGF5ZXIoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotR3JhcGhpY3NMYXllciogU2Ny
b2xsaW5nQ29vcmRpbmF0b3I6OmhlYWRlckxheWVyRm9yRnJhbWVWaWV3KEZyYW1lVmlldyogZnJh
bWVWaWV3KQorR3JhcGhpY3NMYXllciogU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmhlYWRlckxheWVy
Rm9yRnJhbWVWaWV3KEZyYW1lVmlldyYgZnJhbWVWaWV3KQogewogI2lmIEVOQUJMRShSVUJCRVJf
QkFORElORykKLSAgICBpZiAoUmVuZGVyVmlldyogcmVuZGVyVmlldyA9IGZyYW1lVmlldy0+ZnJh
bWUoKS5jb250ZW50UmVuZGVyZXIoKSkKKyAgICBpZiAoUmVuZGVyVmlldyogcmVuZGVyVmlldyA9
IGZyYW1lVmlldy5mcmFtZSgpLmNvbnRlbnRSZW5kZXJlcigpKQogICAgICAgICByZXR1cm4gcmVu
ZGVyVmlldy0+Y29tcG9zaXRvcigpLmhlYWRlckxheWVyKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7
CiAjZWxzZQpAQCAtMjE4LDEwICsyMTgsMTAgQEAgR3JhcGhpY3NMYXllciogU2Nyb2xsaW5nQ29v
cmRpbmF0b3I6OmhlYWRlckxheWVyRm9yRnJhbWVWaWV3KEZyYW1lVmlldyogZnJhbWVWaWUKICNl
bmRpZgogfQogCi1HcmFwaGljc0xheWVyKiBTY3JvbGxpbmdDb29yZGluYXRvcjo6Zm9vdGVyTGF5
ZXJGb3JGcmFtZVZpZXcoRnJhbWVWaWV3KiBmcmFtZVZpZXcpCitHcmFwaGljc0xheWVyKiBTY3Jv
bGxpbmdDb29yZGluYXRvcjo6Zm9vdGVyTGF5ZXJGb3JGcmFtZVZpZXcoRnJhbWVWaWV3JiBmcmFt
ZVZpZXcpCiB7CiAjaWYgRU5BQkxFKFJVQkJFUl9CQU5ESU5HKQotICAgIGlmIChSZW5kZXJWaWV3
KiByZW5kZXJWaWV3ID0gZnJhbWVWaWV3LT5mcmFtZSgpLmNvbnRlbnRSZW5kZXJlcigpKQorICAg
IGlmIChSZW5kZXJWaWV3KiByZW5kZXJWaWV3ID0gZnJhbWVWaWV3LmZyYW1lKCkuY29udGVudFJl
bmRlcmVyKCkpCiAgICAgICAgIHJldHVybiByZW5kZXJWaWV3LT5jb21wb3NpdG9yKCkuZm9vdGVy
TGF5ZXIoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKICNlbHNlCkBAIC0yMzAsMjQgKzIzMCwyNCBA
QCBHcmFwaGljc0xheWVyKiBTY3JvbGxpbmdDb29yZGluYXRvcjo6Zm9vdGVyTGF5ZXJGb3JGcmFt
ZVZpZXcoRnJhbWVWaWV3KiBmcmFtZVZpZQogI2VuZGlmCiB9CiAKLUdyYXBoaWNzTGF5ZXIqIFNj
cm9sbGluZ0Nvb3JkaW5hdG9yOjpjb3VudGVyU2Nyb2xsaW5nTGF5ZXJGb3JGcmFtZVZpZXcoRnJh
bWVWaWV3KiBmcmFtZVZpZXcpCitHcmFwaGljc0xheWVyKiBTY3JvbGxpbmdDb29yZGluYXRvcjo6
Y291bnRlclNjcm9sbGluZ0xheWVyRm9yRnJhbWVWaWV3KEZyYW1lVmlldyYgZnJhbWVWaWV3KQog
ewotICAgIGlmIChSZW5kZXJWaWV3KiByZW5kZXJWaWV3ID0gZnJhbWVWaWV3LT5mcmFtZSgpLmNv
bnRlbnRSZW5kZXJlcigpKQorICAgIGlmIChSZW5kZXJWaWV3KiByZW5kZXJWaWV3ID0gZnJhbWVW
aWV3LmZyYW1lKCkuY29udGVudFJlbmRlcmVyKCkpCiAgICAgICAgIHJldHVybiByZW5kZXJWaWV3
LT5jb21wb3NpdG9yKCkuZml4ZWRSb290QmFja2dyb3VuZExheWVyKCk7CiAgICAgcmV0dXJuIG51
bGxwdHI7CiB9CiAKLUdyYXBoaWNzTGF5ZXIqIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjppbnNldENs
aXBMYXllckZvckZyYW1lVmlldyhGcmFtZVZpZXcqIGZyYW1lVmlldykKK0dyYXBoaWNzTGF5ZXIq
IFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjppbnNldENsaXBMYXllckZvckZyYW1lVmlldyhGcmFtZVZp
ZXcmIGZyYW1lVmlldykKIHsKLSAgICBpZiAoUmVuZGVyVmlldyogcmVuZGVyVmlldyA9IGZyYW1l
Vmlldy0+ZnJhbWUoKS5jb250ZW50UmVuZGVyZXIoKSkKKyAgICBpZiAoUmVuZGVyVmlldyogcmVu
ZGVyVmlldyA9IGZyYW1lVmlldy5mcmFtZSgpLmNvbnRlbnRSZW5kZXJlcigpKQogICAgICAgICBy
ZXR1cm4gcmVuZGVyVmlldy0+Y29tcG9zaXRvcigpLmNsaXBMYXllcigpOwogICAgIHJldHVybiBu
dWxscHRyOwogfQogCi1HcmFwaGljc0xheWVyKiBTY3JvbGxpbmdDb29yZGluYXRvcjo6Y29udGVu
dFNoYWRvd0xheWVyRm9yRnJhbWVWaWV3KEZyYW1lVmlldyogZnJhbWVWaWV3KQorR3JhcGhpY3NM
YXllciogU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmNvbnRlbnRTaGFkb3dMYXllckZvckZyYW1lVmll
dyhGcmFtZVZpZXcmIGZyYW1lVmlldykKIHsKICNpZiBFTkFCTEUoUlVCQkVSX0JBTkRJTkcpCi0g
ICAgaWYgKFJlbmRlclZpZXcqIHJlbmRlclZpZXcgPSBmcmFtZVZpZXctPmZyYW1lKCkuY29udGVu
dFJlbmRlcmVyKCkpCisgICAgaWYgKFJlbmRlclZpZXcqIHJlbmRlclZpZXcgPSBmcmFtZVZpZXcu
ZnJhbWUoKS5jb250ZW50UmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJuIHJlbmRlclZpZXctPmNv
bXBvc2l0b3IoKS5sYXllckZvckNvbnRlbnRTaGFkb3coKTsKICAgICAKICAgICByZXR1cm4gbnVs
bHB0cjsKQEAgLTI1NywxNCArMjU3LDE0IEBAIEdyYXBoaWNzTGF5ZXIqIFNjcm9sbGluZ0Nvb3Jk
aW5hdG9yOjpjb250ZW50U2hhZG93TGF5ZXJGb3JGcmFtZVZpZXcoRnJhbWVWaWV3KiBmCiAjZW5k
aWYKIH0KIAotR3JhcGhpY3NMYXllciogU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnJvb3RDb250ZW50
TGF5ZXJGb3JGcmFtZVZpZXcoRnJhbWVWaWV3KiBmcmFtZVZpZXcpCitHcmFwaGljc0xheWVyKiBT
Y3JvbGxpbmdDb29yZGluYXRvcjo6cm9vdENvbnRlbnRMYXllckZvckZyYW1lVmlldyhGcmFtZVZp
ZXcmIGZyYW1lVmlldykKIHsKLSAgICBpZiAoUmVuZGVyVmlldyogcmVuZGVyVmlldyA9IGZyYW1l
Vmlldy0+ZnJhbWUoKS5jb250ZW50UmVuZGVyZXIoKSkKKyAgICBpZiAoUmVuZGVyVmlldyogcmVu
ZGVyVmlldyA9IGZyYW1lVmlldy5mcmFtZSgpLmNvbnRlbnRSZW5kZXJlcigpKQogICAgICAgICBy
ZXR1cm4gcmVuZGVyVmlldy0+Y29tcG9zaXRvcigpLnJvb3RDb250ZW50TGF5ZXIoKTsKICAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KIAotdm9pZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6ZnJhbWVWaWV3
Um9vdExheWVyRGlkQ2hhbmdlKEZyYW1lVmlldyogZnJhbWVWaWV3KQordm9pZCBTY3JvbGxpbmdD
b29yZGluYXRvcjo6ZnJhbWVWaWV3Um9vdExheWVyRGlkQ2hhbmdlKEZyYW1lVmlldyYgZnJhbWVW
aWV3KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKG1fcGFnZSk7
CkBAIC0yOTMsOSArMjkzLDkgQEAgdm9pZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6aGFuZGxlV2hl
ZWxFdmVudFBoYXNlKFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlIHBoYXNlKQogfQogI2VuZGlmCiAK
LWJvb2wgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6Omhhc1Zpc2libGVTbG93UmVwYWludFZpZXdwb3J0
Q29uc3RyYWluZWRPYmplY3RzKEZyYW1lVmlldyogZnJhbWVWaWV3KSBjb25zdAorYm9vbCBTY3Jv
bGxpbmdDb29yZGluYXRvcjo6aGFzVmlzaWJsZVNsb3dSZXBhaW50Vmlld3BvcnRDb25zdHJhaW5l
ZE9iamVjdHMoY29uc3QgRnJhbWVWaWV3JiBmcmFtZVZpZXcpIGNvbnN0CiB7Ci0gICAgY29uc3Qg
RnJhbWVWaWV3OjpWaWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0U2V0KiB2aWV3cG9ydENvbnN0cmFp
bmVkT2JqZWN0cyA9IGZyYW1lVmlldy0+dmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHMoKTsKKyAg
ICBjb25zdCBGcmFtZVZpZXc6OlZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RTZXQqIHZpZXdwb3J0
Q29uc3RyYWluZWRPYmplY3RzID0gZnJhbWVWaWV3LnZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3Rz
KCk7CiAgICAgaWYgKCF2aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0cykKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCkBAIC0zMTEsMTEgKzMxMSw4IEBAIGJvb2wgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6
Omhhc1Zpc2libGVTbG93UmVwYWludFZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RzKEZyYW1lCiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCi1TeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMgU2Nyb2xs
aW5nQ29vcmRpbmF0b3I6OnN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucyhGcmFtZVZpZXcqIGZy
YW1lVmlldykgY29uc3QKK1N5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucyBTY3JvbGxpbmdDb29y
ZGluYXRvcjo6c3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zKGNvbnN0IEZyYW1lVmlldyYgZnJh
bWVWaWV3KSBjb25zdAogewotICAgIGlmICghZnJhbWVWaWV3KQotICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8U3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zPigwKTsKLQogICAgIFN5bmNocm9u
b3VzU2Nyb2xsaW5nUmVhc29ucyBzeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMgPSAoU3luY2hy
b25vdXNTY3JvbGxpbmdSZWFzb25zKTA7CiAKICAgICBpZiAobV9mb3JjZVN5bmNocm9ub3VzU2Ny
b2xsTGF5ZXJQb3NpdGlvblVwZGF0ZXMpCkBAIC0zMjUsMjMgKzMyMiwyMyBAQCBTeW5jaHJvbm91
c1Njcm9sbGluZ1JlYXNvbnMgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnN5bmNocm9ub3VzU2Nyb2xs
aW5nUmVhc29ucyhGcgogICAgIGlmIChjdXJzb3IuaXNDYXB0dXJpbmcoKSB8fCBjdXJzb3IuaXNS
ZXBsYXlpbmcoKSkKICAgICAgICAgc3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zIHw9IEZvcmNl
ZE9uTWFpblRocmVhZDsKICNlbmRpZgotICAgIGlmIChmcmFtZVZpZXctPmhhc1Nsb3dSZXBhaW50
T2JqZWN0cygpKQorICAgIGlmIChmcmFtZVZpZXcuaGFzU2xvd1JlcGFpbnRPYmplY3RzKCkpCiAg
ICAgICAgIHN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucyB8PSBIYXNTbG93UmVwYWludE9iamVj
dHM7Ci0gICAgaWYgKCFzdXBwb3J0c0ZpeGVkUG9zaXRpb25MYXllcnMoKSAmJiBmcmFtZVZpZXct
Pmhhc1ZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RzKCkpCisgICAgaWYgKCFzdXBwb3J0c0ZpeGVk
UG9zaXRpb25MYXllcnMoKSAmJiBmcmFtZVZpZXcuaGFzVmlld3BvcnRDb25zdHJhaW5lZE9iamVj
dHMoKSkKICAgICAgICAgc3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zIHw9IEhhc1ZpZXdwb3J0
Q29uc3RyYWluZWRPYmplY3RzV2l0aG91dFN1cHBvcnRpbmdGaXhlZExheWVyczsKICAgICBpZiAo
c3VwcG9ydHNGaXhlZFBvc2l0aW9uTGF5ZXJzKCkgJiYgaGFzVmlzaWJsZVNsb3dSZXBhaW50Vmll
d3BvcnRDb25zdHJhaW5lZE9iamVjdHMoZnJhbWVWaWV3KSkKICAgICAgICAgc3luY2hyb25vdXNT
Y3JvbGxpbmdSZWFzb25zIHw9IEhhc05vbkxheWVyVmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHM7
Ci0gICAgaWYgKGZyYW1lVmlldy0+ZnJhbWUoKS5tYWluRnJhbWUoKS5kb2N1bWVudCgpICYmIGZy
YW1lVmlldy0+ZnJhbWUoKS5kb2N1bWVudCgpLT5pc0ltYWdlRG9jdW1lbnQoKSkKKyAgICBpZiAo
ZnJhbWVWaWV3LmZyYW1lKCkubWFpbkZyYW1lKCkuZG9jdW1lbnQoKSAmJiBmcmFtZVZpZXcuZnJh
bWUoKS5kb2N1bWVudCgpLT5pc0ltYWdlRG9jdW1lbnQoKSkKICAgICAgICAgc3luY2hyb25vdXNT
Y3JvbGxpbmdSZWFzb25zIHw9IElzSW1hZ2VEb2N1bWVudDsKIAogICAgIHJldHVybiBzeW5jaHJv
bm91c1Njcm9sbGluZ1JlYXNvbnM7CiB9CiAKLXZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnVw
ZGF0ZVN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucyhGcmFtZVZpZXcqIGZyYW1lVmlldykKK3Zv
aWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnVwZGF0ZVN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29u
cyhGcmFtZVZpZXcmIGZyYW1lVmlldykKIHsKICAgICAvLyBGSVhNRTogT25jZSB3ZSBzdXBwb3J0
IGFzeW5jIHNjcm9sbGluZyBvZiBpZnJhbWVzLCB3ZSdsbCBoYXZlIHRvIHRyYWNrIHRoZSBzeW5j
aHJvbm91cyBzY3JvbGxpbmcKICAgICAvLyByZWFzb25zIHBlciBmcmFtZSAobWF5YmUgb24gc2Ny
b2xsaW5nIHRyZWUgbm9kZXMpLgotICAgIGlmICghZnJhbWVWaWV3LT5mcmFtZSgpLmlzTWFpbkZy
YW1lKCkpCisgICAgaWYgKCFmcmFtZVZpZXcuZnJhbWUoKS5pc01haW5GcmFtZSgpKQogICAgICAg
ICByZXR1cm47CiAKICAgICBzZXRTeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMoc3luY2hyb25v
dXNTY3JvbGxpbmdSZWFzb25zKGZyYW1lVmlldykpOwpAQCAtMzUzLDE5ICszNTAsMjMgQEAgdm9p
ZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0Rm9yY2VTeW5jaHJvbm91c1Njcm9sbExheWVyUG9z
aXRpb25VcGRhdGVzKGJvb2wgZm8KICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9mb3JjZVN5bmNo
cm9ub3VzU2Nyb2xsTGF5ZXJQb3NpdGlvblVwZGF0ZXMgPSBmb3JjZVN5bmNocm9ub3VzU2Nyb2xs
TGF5ZXJQb3NpdGlvblVwZGF0ZXM7Ci0gICAgdXBkYXRlU3luY2hyb25vdXNTY3JvbGxpbmdSZWFz
b25zKG1fcGFnZS0+bWFpbkZyYW1lKCkudmlldygpKTsKKyAgICBpZiAoRnJhbWVWaWV3KiBmcmFt
ZVZpZXcgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLnZpZXcoKSkKKyAgICAgICAgdXBkYXRlU3luY2hy
b25vdXNTY3JvbGxpbmdSZWFzb25zKCpmcmFtZVZpZXcpOwogfQogCiBib29sIFNjcm9sbGluZ0Nv
b3JkaW5hdG9yOjpzaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uU3luY2hyb25vdXNseSgp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucyhtX3BhZ2Ut
Pm1haW5GcmFtZSgpLnZpZXcoKSk7CisgICAgaWYgKEZyYW1lVmlldyogZnJhbWVWaWV3ID0gbV9w
YWdlLT5tYWluRnJhbWUoKS52aWV3KCkpCisgICAgICAgIHJldHVybiBzeW5jaHJvbm91c1Njcm9s
bGluZ1JlYXNvbnMoKmZyYW1lVmlldyk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKICNpZiBFTkFC
TEUoV0VCX1JFUExBWSkKIHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnJlcGxheVNlc3Npb25T
dGF0ZURpZENoYW5nZSgpCiB7CiAgICAgLy8gRklYTUU6IE9uY2Ugd2Ugc3VwcG9ydCBhc3luYyBz
Y3JvbGxpbmcgb2YgaWZyYW1lcywgdGhpcyBzaG91bGQgZ28gdGhyb3VnaCBhbGwgc3ViZnJhbWVz
LgotICAgIHVwZGF0ZVN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucyhtX3BhZ2UtPm1haW5GcmFt
ZSgpLnZpZXcoKSk7CisgICAgaWYgKEZyYW1lVmlldyogZnJhbWVWaWV3ID0gbV9wYWdlLT5tYWlu
RnJhbWUoKS52aWV3KCkpCisgICAgICAgIHVwZGF0ZVN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29u
cygqZnJhbWVWaWV3KTsKIH0KICNlbmRpZgogCkBAIC00MDIsNyArNDAzLDEwIEBAIFN0cmluZyBT
Y3JvbGxpbmdDb29yZGluYXRvcjo6c3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zQXNUZXh0KFN5
bmNocm9ub3VzU2Nyb2xsCiAKIFN0cmluZyBTY3JvbGxpbmdDb29yZGluYXRvcjo6c3luY2hyb25v
dXNTY3JvbGxpbmdSZWFzb25zQXNUZXh0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gc3luY2hyb25v
dXNTY3JvbGxpbmdSZWFzb25zQXNUZXh0KHN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucyhtX3Bh
Z2UtPm1haW5GcmFtZSgpLnZpZXcoKSkpOworICAgIGlmIChGcmFtZVZpZXcqIGZyYW1lVmlldyA9
IG1fcGFnZS0+bWFpbkZyYW1lKCkudmlldygpKQorICAgICAgICByZXR1cm4gc3luY2hyb25vdXNT
Y3JvbGxpbmdSZWFzb25zQXNUZXh0KHN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucygqZnJhbWVW
aWV3KSk7CisKKyAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nv
b3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29y
ZGluYXRvci5oCmluZGV4IGMwYzUyN2MxYzBjNGYxMWQ0MzgxMGQxYjg5YWM2M2U2ZDAyODRmOTQu
Ljk3N2Y5NjI3ZTk4MTFhZWZlNDczM2VjZTllM2VkODQ3ZjNlNTVkZTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaApAQCAt
MTE1LDI2ICsxMTUsMjYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc1JlbW90ZVNjcm9s
bGluZ0Nvb3JkaW5hdG9yKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIC8vIFJldHVy
biB3aGV0aGVyIHRoaXMgc2Nyb2xsaW5nIGNvb3JkaW5hdG9yIGhhbmRsZXMgc2Nyb2xsaW5nIGZv
ciB0aGUgZ2l2ZW4gZnJhbWUgdmlldy4KLSAgICB2aXJ0dWFsIGJvb2wgY29vcmRpbmF0ZXNTY3Jv
bGxpbmdGb3JGcmFtZVZpZXcoRnJhbWVWaWV3KikgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGNv
b3JkaW5hdGVzU2Nyb2xsaW5nRm9yRnJhbWVWaWV3KGNvbnN0IEZyYW1lVmlldyYpIGNvbnN0Owog
CiAgICAgLy8gU2hvdWxkIGJlIGNhbGxlZCB3aGVuZXZlciB0aGUgZ2l2ZW4gZnJhbWUgdmlldyBo
YXMgYmVlbiBsYWlkIG91dC4KLSAgICB2aXJ0dWFsIHZvaWQgZnJhbWVWaWV3TGF5b3V0VXBkYXRl
ZChGcmFtZVZpZXcqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZnJhbWVWaWV3TGF5b3V0VXBkYXRl
ZChGcmFtZVZpZXcmKSB7IH0KIAogICAgIC8vIFNob3VsZCBiZSBjYWxsZWQgd2hlbmV2ZXIgYSB3
aGVlbCBldmVudCBoYW5kbGVyIGlzIGFkZGVkIG9yIHJlbW92ZWQgaW4gdGhlIAogICAgIC8vIGZy
YW1lIHZpZXcncyB1bmRlcmx5aW5nIGRvY3VtZW50LgotICAgIHZvaWQgZnJhbWVWaWV3V2hlZWxF
dmVudEhhbmRsZXJDb3VudENoYW5nZWQoRnJhbWVWaWV3Kik7CisgICAgdm9pZCBmcmFtZVZpZXdX
aGVlbEV2ZW50SGFuZGxlckNvdW50Q2hhbmdlZChGcmFtZVZpZXcmKTsKIAogICAgIC8vIFNob3Vs
ZCBiZSBjYWxsZWQgd2hlbmV2ZXIgdGhlIHNsb3cgcmVwYWludCBvYmplY3RzIGNvdW50ZXIgY2hh
bmdlcyBiZXR3ZWVuIHplcm8gYW5kIG9uZS4KLSAgICB2b2lkIGZyYW1lVmlld0hhc1Nsb3dSZXBh
aW50T2JqZWN0c0RpZENoYW5nZShGcmFtZVZpZXcqKTsKKyAgICB2b2lkIGZyYW1lVmlld0hhc1Ns
b3dSZXBhaW50T2JqZWN0c0RpZENoYW5nZShGcmFtZVZpZXcmKTsKIAogICAgIC8vIFNob3VsZCBi
ZSBjYWxsZWQgd2hlbmV2ZXIgdGhlIHNldCBvZiBmaXhlZCBvYmplY3RzIGNoYW5nZXMuCi0gICAg
dm9pZCBmcmFtZVZpZXdGaXhlZE9iamVjdHNEaWRDaGFuZ2UoRnJhbWVWaWV3Kik7CisgICAgdm9p
ZCBmcmFtZVZpZXdGaXhlZE9iamVjdHNEaWRDaGFuZ2UoRnJhbWVWaWV3Jik7CiAKICAgICAvLyBD
YWxsZWQgd2hlbmV2ZXIgdGhlIG5vbi1mYXN0IHNjcm9sbGFibGUgcmVnaW9uIGNoYW5nZXMgZm9y
IHJlYXNvbnMgb3RoZXIgdGhhbiBsYXlvdXQuCi0gICAgdmlydHVhbCB2b2lkIGZyYW1lVmlld05v
bkZhc3RTY3JvbGxhYmxlUmVnaW9uQ2hhbmdlZChGcmFtZVZpZXcqKSB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgZnJhbWVWaWV3Tm9uRmFzdFNjcm9sbGFibGVSZWdpb25DaGFuZ2VkKEZyYW1lVmlldyYp
IHsgfQogCiAgICAgLy8gU2hvdWxkIGJlIGNhbGxlZCB3aGVuZXZlciB0aGUgcm9vdCBsYXllciBm
b3IgdGhlIGdpdmVuIGZyYW1lIHZpZXcgY2hhbmdlcy4KLSAgICB2aXJ0dWFsIHZvaWQgZnJhbWVW
aWV3Um9vdExheWVyRGlkQ2hhbmdlKEZyYW1lVmlldyopOworICAgIHZpcnR1YWwgdm9pZCBmcmFt
ZVZpZXdSb290TGF5ZXJEaWRDaGFuZ2UoRnJhbWVWaWV3Jik7CiAKICAgICAvLyBSZXR1cm4gd2hl
dGhlciB0aGlzIHNjcm9sbGluZyBjb29yZGluYXRvciBjYW4ga2VlcCBmaXhlZCBwb3NpdGlvbiBs
YXllcnMgZml4ZWQgdG8gdGhlaXIKICAgICAvLyBjb250YWluZXJzIHdoaWxlIHNjcm9sbGluZy4K
QEAgLTE1Niw4ICsxNTYsOCBAQCBwdWJsaWM6CiAgICAgLy8gVGhlc2UgdmlydHVhbCBmdW5jdGlv
bnMgYXJlIGN1cnJlbnRseSB1bmlxdWUgdG8gdGhlIHRocmVhZGVkIHNjcm9sbGluZyBhcmNoaXRl
Y3R1cmUuIAogICAgIC8vIFRoZWlyIG1lYW5pbmdmdWwgaW1wbGVtZW50YXRpb25zIGFyZSBpbiBT
Y3JvbGxpbmdDb29yZGluYXRvck1hYy4KICAgICB2aXJ0dWFsIHZvaWQgY29tbWl0VHJlZVN0YXRl
SWZOZWVkZWQoKSB7IH0KLSAgICB2aXJ0dWFsIGJvb2wgcmVxdWVzdFNjcm9sbFBvc2l0aW9uVXBk
YXRlKEZyYW1lVmlldyosIGNvbnN0IEludFBvaW50JikgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2
aXJ0dWFsIGJvb2wgaGFuZGxlV2hlZWxFdmVudChGcmFtZVZpZXcqLCBjb25zdCBQbGF0Zm9ybVdo
ZWVsRXZlbnQmKSB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIHJlcXVlc3RTY3Jv
bGxQb3NpdGlvblVwZGF0ZShGcmFtZVZpZXcmLCBjb25zdCBJbnRQb2ludCYpIHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgdmlydHVhbCBib29sIGhhbmRsZVdoZWVsRXZlbnQoRnJhbWVWaWV3JiwgY29u
c3QgUGxhdGZvcm1XaGVlbEV2ZW50JikgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgU2Ny
b2xsaW5nTm9kZUlEIGF0dGFjaFRvU3RhdGVUcmVlKFNjcm9sbGluZ05vZGVUeXBlLCBTY3JvbGxp
bmdOb2RlSUQgbmV3Tm9kZUlELCBTY3JvbGxpbmdOb2RlSUQgLypwYXJlbnRJRCovKSB7IHJldHVy
biBuZXdOb2RlSUQ7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoRnJvbVN0YXRlVHJlZShTY3Jv
bGxpbmdOb2RlSUQpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBjbGVhclN0YXRlVHJlZSgpIHsgfQpA
QCAtMTg2LDQ3ICsxODYsNDcgQEAgcHVibGljOgogICAgIFNjcm9sbGluZ05vZGVJRCB1bmlxdWVT
Y3JvbGxMYXllcklEKCk7CiAKICAgICBlbnVtIE1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25GbGFn
cyB7Ci0gICAgICAgIEZvcmNlZE9uTWFpblRocmVhZCA9IDEgPDwgMCwKLSAgICAgICAgSGFzU2xv
d1JlcGFpbnRPYmplY3RzID0gMSA8PCAxLAotICAgICAgICBIYXNWaWV3cG9ydENvbnN0cmFpbmVk
T2JqZWN0c1dpdGhvdXRTdXBwb3J0aW5nRml4ZWRMYXllcnMgPSAxIDw8IDIsCi0gICAgICAgIEhh
c05vbkxheWVyVmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHMgPSAxIDw8IDMsCi0gICAgICAgIElz
SW1hZ2VEb2N1bWVudCA9IDEgPDwgNAorICAgICAgICBGb3JjZWRPbk1haW5UaHJlYWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDEgPDwgMCwKKyAgICAgICAgSGFz
U2xvd1JlcGFpbnRPYmplY3RzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSAxIDw8IDEsCisgICAgICAgIEhhc1ZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RzV2l0aG91dFN1
cHBvcnRpbmdGaXhlZExheWVycyAgID0gMSA8PCAyLAorICAgICAgICBIYXNOb25MYXllclZpZXdw
b3J0Q29uc3RyYWluZWRPYmplY3RzICAgICAgICAgICAgICAgICAgICAgICA9IDEgPDwgMywKKyAg
ICAgICAgSXNJbWFnZURvY3VtZW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSAxIDw8IDQKICAgICB9OwogCi0gICAgU3luY2hyb25vdXNTY3JvbGxpbmdSZWFz
b25zIHN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucyhGcmFtZVZpZXcqKSBjb25zdDsKKyAgICBT
eW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMgc3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zKGNv
bnN0IEZyYW1lVmlldyYpIGNvbnN0OwogICAgIGJvb2wgc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQ
b3NpdGlvblN5bmNocm9ub3VzbHkoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVz
dHJveVNjcm9sbGFibGVBcmVhKFNjcm9sbGFibGVBcmVhKikgeyB9Ci0gICAgdmlydHVhbCB2b2lk
IHNjcm9sbGFibGVBcmVhU2Nyb2xsTGF5ZXJEaWRDaGFuZ2UoU2Nyb2xsYWJsZUFyZWEqKSB7IH0K
LSAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsYWJsZUFyZWFTY3JvbGxiYXJMYXllckRpZENoYW5nZShT
Y3JvbGxhYmxlQXJlYSosIFNjcm9sbGJhck9yaWVudGF0aW9uKSB7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgd2lsbERlc3Ryb3lTY3JvbGxhYmxlQXJlYShTY3JvbGxhYmxlQXJlYSYpIHsgfQorICAgIHZp
cnR1YWwgdm9pZCBzY3JvbGxhYmxlQXJlYVNjcm9sbExheWVyRGlkQ2hhbmdlKFNjcm9sbGFibGVB
cmVhJikgeyB9CisgICAgdmlydHVhbCB2b2lkIHNjcm9sbGFibGVBcmVhU2Nyb2xsYmFyTGF5ZXJE
aWRDaGFuZ2UoU2Nyb2xsYWJsZUFyZWEmLCBTY3JvbGxiYXJPcmllbnRhdGlvbikgeyB9CiAKICAg
ICBzdGF0aWMgU3RyaW5nIHN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29uc0FzVGV4dChTeW5jaHJv
bm91c1Njcm9sbGluZ1JlYXNvbnMpOwogICAgIFN0cmluZyBzeW5jaHJvbm91c1Njcm9sbGluZ1Jl
YXNvbnNBc1RleHQoKSBjb25zdDsKIAotICAgIFJlZ2lvbiBjb21wdXRlTm9uRmFzdFNjcm9sbGFi
bGVSZWdpb24oY29uc3QgRnJhbWUqLCBjb25zdCBJbnRQb2ludCYgZnJhbWVMb2NhdGlvbikgY29u
c3Q7CisgICAgUmVnaW9uIGNvbXB1dGVOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbihjb25zdCBGcmFt
ZSYsIGNvbnN0IEludFBvaW50JiBmcmFtZUxvY2F0aW9uKSBjb25zdDsKIAogcHJvdGVjdGVkOgog
ICAgIGV4cGxpY2l0IFNjcm9sbGluZ0Nvb3JkaW5hdG9yKFBhZ2UqKTsKIAotICAgIHN0YXRpYyBH
cmFwaGljc0xheWVyKiBzY3JvbGxMYXllckZvclNjcm9sbGFibGVBcmVhKFNjcm9sbGFibGVBcmVh
Kik7CisgICAgc3RhdGljIEdyYXBoaWNzTGF5ZXIqIHNjcm9sbExheWVyRm9yU2Nyb2xsYWJsZUFy
ZWEoU2Nyb2xsYWJsZUFyZWEmKTsKIAogICAgIHVuc2lnbmVkIGNvbXB1dGVDdXJyZW50V2hlZWxF
dmVudEhhbmRsZXJDb3VudCgpOwotICAgIEdyYXBoaWNzTGF5ZXIqIHNjcm9sbExheWVyRm9yRnJh
bWVWaWV3KEZyYW1lVmlldyopOwotICAgIEdyYXBoaWNzTGF5ZXIqIGNvdW50ZXJTY3JvbGxpbmdM
YXllckZvckZyYW1lVmlldyhGcmFtZVZpZXcqKTsKLSAgICBHcmFwaGljc0xheWVyKiBpbnNldENs
aXBMYXllckZvckZyYW1lVmlldyhGcmFtZVZpZXcqKTsKLSAgICBHcmFwaGljc0xheWVyKiByb290
Q29udGVudExheWVyRm9yRnJhbWVWaWV3KEZyYW1lVmlldyopOwotICAgIEdyYXBoaWNzTGF5ZXIq
IGNvbnRlbnRTaGFkb3dMYXllckZvckZyYW1lVmlldyhGcmFtZVZpZXcqKTsKLSAgICBHcmFwaGlj
c0xheWVyKiBoZWFkZXJMYXllckZvckZyYW1lVmlldyhGcmFtZVZpZXcqKTsKLSAgICBHcmFwaGlj
c0xheWVyKiBmb290ZXJMYXllckZvckZyYW1lVmlldyhGcmFtZVZpZXcqKTsKKyAgICBHcmFwaGlj
c0xheWVyKiBzY3JvbGxMYXllckZvckZyYW1lVmlldyhGcmFtZVZpZXcmKTsKKyAgICBHcmFwaGlj
c0xheWVyKiBjb3VudGVyU2Nyb2xsaW5nTGF5ZXJGb3JGcmFtZVZpZXcoRnJhbWVWaWV3Jik7Cisg
ICAgR3JhcGhpY3NMYXllciogaW5zZXRDbGlwTGF5ZXJGb3JGcmFtZVZpZXcoRnJhbWVWaWV3Jik7
CisgICAgR3JhcGhpY3NMYXllciogcm9vdENvbnRlbnRMYXllckZvckZyYW1lVmlldyhGcmFtZVZp
ZXcmKTsKKyAgICBHcmFwaGljc0xheWVyKiBjb250ZW50U2hhZG93TGF5ZXJGb3JGcmFtZVZpZXco
RnJhbWVWaWV3Jik7CisgICAgR3JhcGhpY3NMYXllciogaGVhZGVyTGF5ZXJGb3JGcmFtZVZpZXco
RnJhbWVWaWV3Jik7CisgICAgR3JhcGhpY3NMYXllciogZm9vdGVyTGF5ZXJGb3JGcmFtZVZpZXco
RnJhbWVWaWV3Jik7CiAKICAgICBQYWdlKiBtX3BhZ2U7IC8vIEZJWE1FOiBpZGVhbGx5IHRoaXMg
d291bGQgYmUgYSByZWZlcmVuY2UgYnV0IGl0IGdldHMgbnVsbGVkIG9uIGFzeW5jIHRlYXJkb3du
LgogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgdm9pZCByZWNvbXB1dGVXaGVlbEV2ZW50SGFuZGxl
ckNvdW50Rm9yRnJhbWVWaWV3KEZyYW1lVmlldyopIHsgfQorICAgIHZpcnR1YWwgdm9pZCByZWNv
bXB1dGVXaGVlbEV2ZW50SGFuZGxlckNvdW50Rm9yRnJhbWVWaWV3KEZyYW1lVmlldyYpIHsgfQog
ICAgIHZpcnR1YWwgdm9pZCBzZXRTeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMoU3luY2hyb25v
dXNTY3JvbGxpbmdSZWFzb25zKSB7IH0KIAotICAgIHZpcnR1YWwgYm9vbCBoYXNWaXNpYmxlU2xv
d1JlcGFpbnRWaWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0cyhGcmFtZVZpZXcqKSBjb25zdDsKLSAg
ICB2b2lkIHVwZGF0ZVN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucyhGcmFtZVZpZXcqKTsKKyAg
ICB2aXJ0dWFsIGJvb2wgaGFzVmlzaWJsZVNsb3dSZXBhaW50Vmlld3BvcnRDb25zdHJhaW5lZE9i
amVjdHMoY29uc3QgRnJhbWVWaWV3JikgY29uc3Q7CisgICAgdm9pZCB1cGRhdGVTeW5jaHJvbm91
c1Njcm9sbGluZ1JlYXNvbnMoRnJhbWVWaWV3Jik7CiAgICAgCiAgICAgYm9vbCBtX2ZvcmNlU3lu
Y2hyb25vdXNTY3JvbGxMYXllclBvc2l0aW9uVXBkYXRlczsKIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jb29yZGluYXRlZGdyYXBoaWNzL1Njcm9sbGluZ0Nv
b3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9jb29yZGluYXRlZGdyYXBoaWNzL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRpbmF0
ZWRHcmFwaGljcy5jcHAKaW5kZXggMjQ2ODg2NTFmN2MwNjY0MTRjOWI4NWQ2NTk3ZjVlYWJhYjVh
OGMyNS4uMWRkMDc1MmFlOWJhN2I4NTRlZDNkMGZjYWJmYzhjNzZmYjA0YmFiZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29vcmRpbmF0ZWRncmFwaGljcy9TY3Jv
bGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xsaW5nQ29vcmRpbmF0
b3JDb29yZGluYXRlZEdyYXBoaWNzLmNwcApAQCAtOTQsMTYgKzk0LDE2IEBAIHZvaWQgU2Nyb2xs
aW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzOjp1cGRhdGVWaWV3cG9ydENvbnN0cmFp
bmVkTm9kZShTY3JvCiAgICAgfQogfQogCi12b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRp
bmF0ZWRHcmFwaGljczo6c2Nyb2xsYWJsZUFyZWFTY3JvbGxMYXllckRpZENoYW5nZShTY3JvbGxh
YmxlQXJlYSogc2Nyb2xsYWJsZUFyZWEpCit2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRp
bmF0ZWRHcmFwaGljczo6c2Nyb2xsYWJsZUFyZWFTY3JvbGxMYXllckRpZENoYW5nZShTY3JvbGxh
YmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEpCiB7CiAgICAgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
KiBsYXllciA9IHRvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKHNjcm9sbExheWVyRm9yU2Nyb2xs
YWJsZUFyZWEoc2Nyb2xsYWJsZUFyZWEpKTsKICAgICBpZiAoIWxheWVyKQogICAgICAgICByZXR1
cm47CiAKLSAgICBsYXllci0+c2V0U2Nyb2xsYWJsZUFyZWEoc2Nyb2xsYWJsZUFyZWEpOworICAg
IGxheWVyLT5zZXRTY3JvbGxhYmxlQXJlYSgmc2Nyb2xsYWJsZUFyZWEpOwogfQogCi12b2lkIFNj
cm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljczo6d2lsbERlc3Ryb3lTY3JvbGxh
YmxlQXJlYShTY3JvbGxhYmxlQXJlYSogc2Nyb2xsYWJsZUFyZWEpCit2b2lkIFNjcm9sbGluZ0Nv
b3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljczo6d2lsbERlc3Ryb3lTY3JvbGxhYmxlQXJlYShT
Y3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEpCiB7CiAgICAgQ29vcmRpbmF0ZWRHcmFwaGlj
c0xheWVyKiBsYXllciA9IHRvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKHNjcm9sbExheWVyRm9y
U2Nyb2xsYWJsZUFyZWEoc2Nyb2xsYWJsZUFyZWEpKTsKICAgICBpZiAoIWxheWVyKQpAQCAtMTEy
LDEzICsxMTIsMTMgQEAgdm9pZCBTY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhp
Y3M6OndpbGxEZXN0cm95U2Nyb2xsYWJsZUFyZWEoU2Nyb2xsYWIKICAgICBsYXllci0+c2V0U2Ny
b2xsYWJsZUFyZWEoMCk7CiB9CiAKLWJvb2wgU2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRl
ZEdyYXBoaWNzOjpyZXF1ZXN0U2Nyb2xsUG9zaXRpb25VcGRhdGUoRnJhbWVWaWV3KiBmcmFtZVZp
ZXcsIGNvbnN0IEludFBvaW50JiBzY3JvbGxQb3NpdGlvbikKK2Jvb2wgU2Nyb2xsaW5nQ29vcmRp
bmF0b3JDb29yZGluYXRlZEdyYXBoaWNzOjpyZXF1ZXN0U2Nyb2xsUG9zaXRpb25VcGRhdGUoRnJh
bWVWaWV3JiBmcmFtZVZpZXcsIGNvbnN0IEludFBvaW50JiBzY3JvbGxQb3NpdGlvbikKIHsKLSAg
ICBpZiAoIWZyYW1lVmlldy0+ZGVsZWdhdGVzU2Nyb2xsaW5nKCkpCisgICAgaWYgKCFmcmFtZVZp
ZXcuZGVsZWdhdGVzU2Nyb2xsaW5nKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGZy
YW1lVmlldy0+c2V0Rml4ZWRWaXNpYmxlQ29udGVudFJlY3QoSW50UmVjdChzY3JvbGxQb3NpdGlv
biwgZnJhbWVWaWV3LT52aXNpYmxlQ29udGVudFJlY3QoKS5zaXplKCkpKTsKLSAgICBmcmFtZVZp
ZXctPmhvc3RXaW5kb3coKS0+ZGVsZWdhdGVkU2Nyb2xsUmVxdWVzdGVkKHNjcm9sbFBvc2l0aW9u
KTsKKyAgICBmcmFtZVZpZXcuc2V0Rml4ZWRWaXNpYmxlQ29udGVudFJlY3QoSW50UmVjdChzY3Jv
bGxQb3NpdGlvbiwgZnJhbWVWaWV3LnZpc2libGVDb250ZW50UmVjdCgpLnNpemUoKSkpOworICAg
IGZyYW1lVmlldy5ob3N0V2luZG93KCktPmRlbGVnYXRlZFNjcm9sbFJlcXVlc3RlZChzY3JvbGxQ
b3NpdGlvbik7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xsaW5nQ29vcmRpbmF0
b3JDb29yZGluYXRlZEdyYXBoaWNzLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9j
b29yZGluYXRlZGdyYXBoaWNzL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGlj
cy5oCmluZGV4IGVkZWYwYjc1NTYwZDgwY2FiNzQ2Nzk0OGIyNmQzMDNiNTczYjliOWIuLmExMjAw
NzI1ZTM5YjYyYzVjYTIyMzJiZDc5MDI0ZDdhNzYxYTU3NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xsaW5nQ29vcmRp
bmF0b3JDb29yZGluYXRlZEdyYXBoaWNzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvY29vcmRpbmF0ZWRncmFwaGljcy9TY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVk
R3JhcGhpY3MuaApAQCAtNDcsMTAgKzQ3LDEwIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9p
ZCB1cGRhdGVWaWV3cG9ydENvbnN0cmFpbmVkTm9kZShTY3JvbGxpbmdOb2RlSUQsIGNvbnN0IFZp
ZXdwb3J0Q29uc3RyYWludHMmLCBHcmFwaGljc0xheWVyKikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0
dWFsIHZvaWQgc2Nyb2xsYWJsZUFyZWFTY3JvbGxMYXllckRpZENoYW5nZShTY3JvbGxhYmxlQXJl
YSopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveVNjcm9sbGFibGVBcmVh
KFNjcm9sbGFibGVBcmVhKikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHNjcm9sbGFibGVB
cmVhU2Nyb2xsTGF5ZXJEaWRDaGFuZ2UoU2Nyb2xsYWJsZUFyZWEmKSBvdmVycmlkZTsKKyAgICB2
aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lTY3JvbGxhYmxlQXJlYShTY3JvbGxhYmxlQXJlYSYpIG92
ZXJyaWRlOwogCi0gICAgdmlydHVhbCBib29sIHJlcXVlc3RTY3JvbGxQb3NpdGlvblVwZGF0ZShG
cmFtZVZpZXcqLCBjb25zdCBJbnRQb2ludCYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCBy
ZXF1ZXN0U2Nyb2xsUG9zaXRpb25VcGRhdGUoRnJhbWVWaWV3JiwgY29uc3QgSW50UG9pbnQmKSBv
dmVycmlkZTsKIAogcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsaW5nU3RhdGVU
cmVlPiBtX3Njcm9sbGluZ1N0YXRlVHJlZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdDb29yZGluYXRvcklPUy5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvaW9zL1Njcm9sbGluZ0Nvb3JkaW5hdG9ySU9TLmgKaW5kZXggY2Nj
MTA4MDQ2NGI3MmYxYzkwZWRlOGZhMmJhYTcyYzY4ZjFmNjVhZS4uNTIxYmRlY2E3OGYxNjM5Mjcz
YmU2NjUyMzc3ZTc2OGY3NmZhYjdiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvaW9zL1Njcm9sbGluZ0Nvb3JkaW5hdG9ySU9TLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvaW9zL1Njcm9sbGluZ0Nvb3JkaW5hdG9ySU9TLmgKQEAgLTQ4LDcg
KzQ4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjb21taXRUcmVlU3RhdGVJZk5lZWRl
ZCgpIG92ZXJyaWRlOwogCiAgICAgLy8gSGFuZGxlIHRoZSB3aGVlbCBldmVudCBvbiB0aGUgc2Ny
b2xsaW5nIHRocmVhZC4gUmV0dXJucyB3aGV0aGVyIHRoZSBldmVudCB3YXMgaGFuZGxlZCBvciBu
b3QuCi0gICAgdmlydHVhbCBib29sIGhhbmRsZVdoZWVsRXZlbnQoRnJhbWVWaWV3KiwgY29uc3Qg
UGxhdGZvcm1XaGVlbEV2ZW50Jikgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0
dWFsIGJvb2wgaGFuZGxlV2hlZWxFdmVudChGcmFtZVZpZXcmLCBjb25zdCBQbGF0Zm9ybVdoZWVs
RXZlbnQmKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogCiBwcml2YXRlOgogICAgIHZpcnR1
YWwgdm9pZCBzY2hlZHVsZVRyZWVTdGF0ZUNvbW1pdCgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ0Nvb3JkaW5hdG9yTWFj
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nQ29vcmRpbmF0
b3JNYWMuaAppbmRleCBmYzgyOWE0ZDU5ODVlOTZjODVhN2ExMWM1ODE1ZWIyMzRiZTY5ODA5Li44
NzY2M2ZiMDMzYmRiMzllMjA2OTkwM2ViOWNlNDZkYTU3YTcwMjEzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nQ29vcmRpbmF0
b3JNYWMuaApAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNvbW1p
dFRyZWVTdGF0ZUlmTmVlZGVkKCkgb3ZlcnJpZGU7CiAKICAgICAvLyBIYW5kbGUgdGhlIHdoZWVs
IGV2ZW50IG9uIHRoZSBzY3JvbGxpbmcgdGhyZWFkLiBSZXR1cm5zIHdoZXRoZXIgdGhlIGV2ZW50
IHdhcyBoYW5kbGVkIG9yIG5vdC4KLSAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlV2hlZWxFdmVudChG
cmFtZVZpZXcqLCBjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmKSBvdmVycmlkZTsKKyAgICB2aXJ0
dWFsIGJvb2wgaGFuZGxlV2hlZWxFdmVudChGcmFtZVZpZXcmLCBjb25zdCBQbGF0Zm9ybVdoZWVs
RXZlbnQmKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVU
cmVlU3RhdGVDb21taXQoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdDb29yZGluYXRvck1hYy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdDb29yZGluYXRvck1hYy5tbQppbmRleCA2
OGE1NDI4MWJiZTY2NjQ5ZGU2MDQyYzc4OTBjMGU2MmFiYWE2ZTVhLi5lYTEzOTI3OTkwYjBiZjlj
OTgwZDRiMThjMDE0OThlMzdlZmRjMzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ0Nvb3JkaW5hdG9yTWFjLm1tCkBAIC04
Niw3ICs4Niw3IEBAIHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWM6OmNvbW1pdFRyZWVTdGF0
ZUlmTmVlZGVkKCkKICAgICBtX3Njcm9sbGluZ1N0YXRlVHJlZUNvbW1pdHRlclRpbWVyLnN0b3Ao
KTsKIH0KIAotYm9vbCBTY3JvbGxpbmdDb29yZGluYXRvck1hYzo6aGFuZGxlV2hlZWxFdmVudChG
cmFtZVZpZXcqLCBjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQpCitib29sIFNj
cm9sbGluZ0Nvb3JkaW5hdG9yTWFjOjpoYW5kbGVXaGVlbEV2ZW50KEZyYW1lVmlldyYsIGNvbnN0
IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOwogICAgIEFTU0VSVChtX3BhZ2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllci5jcHAKaW5kZXggZjc4MjhhYmU2NzBmOTg1NmQ0MGUyYzM2NmQ0MGVkYTE0ZmNiNTM5
OS4uYmQ3N2FmMDkwNDBjODAwODExZGY5MzI4ZDBkZDI1OGIxZWRmOGNhMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC0zNjAsNyArMzYwLDcgQEAgUmVuZGVy
TGF5ZXI6On5SZW5kZXJMYXllcigpCiAKICAgICBpZiAocmVuZGVyZXIoKS5mcmFtZSgpLnBhZ2Uo
KSkgewogICAgICAgICBpZiAoU2Nyb2xsaW5nQ29vcmRpbmF0b3IqIHNjcm9sbGluZ0Nvb3JkaW5h
dG9yID0gcmVuZGVyZXIoKS5mcmFtZSgpLnBhZ2UoKS0+c2Nyb2xsaW5nQ29vcmRpbmF0b3IoKSkK
LSAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT53aWxsRGVzdHJveVNjcm9sbGFibGVB
cmVhKHRoaXMpOworICAgICAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPndpbGxEZXN0cm95
U2Nyb2xsYWJsZUFyZWEoKnRoaXMpOwogICAgIH0KIAogICAgIGlmIChtX3JlZmxlY3Rpb24pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCmluZGV4
IGE5MGE0OWU4NzI5NzZkZGUwNGU3NDJmMTk3Zjk5ZTRlYzE5YWZjYzguLmFlYWZjYzlmNzMyMmY2
NDBiYTRkMzNjNDMxMTc5MGM4YzYxZGU0ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCkBAIC0xMjk1LDkgKzEyOTUsOSBAQCBib29sIFJl
bmRlckxheWVyQmFja2luZzo6dXBkYXRlT3ZlcmZsb3dDb250cm9sc0xheWVycyhib29sIG5lZWRz
SG9yaXpvbnRhbFNjcm9sbAogCiAgICAgaWYgKFNjcm9sbGluZ0Nvb3JkaW5hdG9yKiBzY3JvbGxp
bmdDb29yZGluYXRvciA9IHNjcm9sbGluZ0Nvb3JkaW5hdG9yRnJvbUxheWVyKG1fb3duaW5nTGF5
ZXIpKSB7CiAgICAgICAgIGlmIChob3Jpem9udGFsU2Nyb2xsYmFyTGF5ZXJDaGFuZ2VkKQotICAg
ICAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPnNjcm9sbGFibGVBcmVhU2Nyb2xsYmFyTGF5
ZXJEaWRDaGFuZ2UoJm1fb3duaW5nTGF5ZXIsIEhvcml6b250YWxTY3JvbGxiYXIpOworICAgICAg
ICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPnNjcm9sbGFibGVBcmVhU2Nyb2xsYmFyTGF5ZXJE
aWRDaGFuZ2UobV9vd25pbmdMYXllciwgSG9yaXpvbnRhbFNjcm9sbGJhcik7CiAgICAgICAgIGlm
ICh2ZXJ0aWNhbFNjcm9sbGJhckxheWVyQ2hhbmdlZCkKLSAgICAgICAgICAgIHNjcm9sbGluZ0Nv
b3JkaW5hdG9yLT5zY3JvbGxhYmxlQXJlYVNjcm9sbGJhckxheWVyRGlkQ2hhbmdlKCZtX293bmlu
Z0xheWVyLCBWZXJ0aWNhbFNjcm9sbGJhcik7CisgICAgICAgICAgICBzY3JvbGxpbmdDb29yZGlu
YXRvci0+c2Nyb2xsYWJsZUFyZWFTY3JvbGxiYXJMYXllckRpZENoYW5nZShtX293bmluZ0xheWVy
LCBWZXJ0aWNhbFNjcm9sbGJhcik7CiAgICAgfQogCiAgICAgcmV0dXJuIGhvcml6b250YWxTY3Jv
bGxiYXJMYXllckNoYW5nZWQgfHwgdmVydGljYWxTY3JvbGxiYXJMYXllckNoYW5nZWQgfHwgc2Ny
b2xsQ29ybmVyTGF5ZXJDaGFuZ2VkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAppbmRleCBlOGQ4NWRkYzMwZTE2NzIyNGJlNzEyZGQ1
N2NlNjZhYmI1YTQ2OTBmLi5jNzIyODdlZDFlMDBlMDEyYWVmYjI4MGVlM2Y3MjAwNjQwZDhjMWVm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3Np
dG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3Np
dG9yLmNwcApAQCAtOTg3LDcgKzk4Nyw3IEBAIGJvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1
cGRhdGVCYWNraW5nKFJlbmRlckxheWVyJiBsYXllciwgQ29tcG9zaXRpbmdDaGFuZ2VSCiAgICAg
ICAgICAgICBpZiAobGF5ZXIuaXNSb290TGF5ZXIoKSAmJiAhbV9yZW5kZXJWaWV3LmRvY3VtZW50
KCkub3duZXJFbGVtZW50KCkpIHsKICAgICAgICAgICAgICAgICB1cGRhdGVTY3JvbGxDb29yZGlu
YXRlZFN0YXR1cyhsYXllcik7CiAgICAgICAgICAgICAgICAgaWYgKFNjcm9sbGluZ0Nvb3JkaW5h
dG9yKiBzY3JvbGxpbmdDb29yZGluYXRvciA9IHRoaXMtPnNjcm9sbGluZ0Nvb3JkaW5hdG9yKCkp
Ci0gICAgICAgICAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5mcmFtZVZpZXdSb290
TGF5ZXJEaWRDaGFuZ2UoJm1fcmVuZGVyVmlldy5mcmFtZVZpZXcoKSk7CisgICAgICAgICAgICAg
ICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5mcmFtZVZpZXdSb290TGF5ZXJEaWRDaGFuZ2Uo
bV9yZW5kZXJWaWV3LmZyYW1lVmlldygpKTsKICNpZiBFTkFCTEUoUlVCQkVSX0JBTkRJTkcpCiAg
ICAgICAgICAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSB0aGlzLT5wYWdlKCkpIHsKICAgICAgICAg
ICAgICAgICAgICAgdXBkYXRlTGF5ZXJGb3JIZWFkZXIocGFnZS0+aGVhZGVySGVpZ2h0KCkpOwpA
QCAtMTA2MSw3ICsxMDYxLDcgQEAgYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZUJh
Y2tpbmcoUmVuZGVyTGF5ZXImIGxheWVyLCBDb21wb3NpdGluZ0NoYW5nZVIKICAgICAgICAgfQog
ICAgICAgICBpZiAobGF5ZXJDaGFuZ2VkKSB7CiAgICAgICAgICAgICBpZiAoU2Nyb2xsaW5nQ29v
cmRpbmF0b3IqIHNjcm9sbGluZ0Nvb3JkaW5hdG9yID0gdGhpcy0+c2Nyb2xsaW5nQ29vcmRpbmF0
b3IoKSkKLSAgICAgICAgICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+ZnJhbWVWaWV3Rml4
ZWRPYmplY3RzRGlkQ2hhbmdlKCZtX3JlbmRlclZpZXcuZnJhbWVWaWV3KCkpOworICAgICAgICAg
ICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5mcmFtZVZpZXdGaXhlZE9iamVjdHNEaWRDaGFu
Z2UobV9yZW5kZXJWaWV3LmZyYW1lVmlldygpKTsKICAgICAgICAgfQogICAgIH0gZWxzZQogICAg
ICAgICBsYXllci5zZXRWaWV3cG9ydENvbnN0cmFpbmVkTm90Q29tcG9zaXRlZFJlYXNvbihSZW5k
ZXJMYXllcjo6Tm9Ob3RDb21wb3NpdGVkUmVhc29uKTsKQEAgLTE3MDcsNyArMTcwNyw3IEBAIHZv
aWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpmcmFtZVZpZXdEaWRDaGFuZ2VTaXplKCkKIGJvb2wg
UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpoYXNDb29yZGluYXRlZFNjcm9sbGluZygpIGNvbnN0CiB7
CiAgICAgU2Nyb2xsaW5nQ29vcmRpbmF0b3IqIHNjcm9sbGluZ0Nvb3JkaW5hdG9yID0gdGhpcy0+
c2Nyb2xsaW5nQ29vcmRpbmF0b3IoKTsKLSAgICByZXR1cm4gc2Nyb2xsaW5nQ29vcmRpbmF0b3Ig
JiYgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPmNvb3JkaW5hdGVzU2Nyb2xsaW5nRm9yRnJhbWVWaWV3
KCZtX3JlbmRlclZpZXcuZnJhbWVWaWV3KCkpOworICAgIHJldHVybiBzY3JvbGxpbmdDb29yZGlu
YXRvciAmJiBzY3JvbGxpbmdDb29yZGluYXRvci0+Y29vcmRpbmF0ZXNTY3JvbGxpbmdGb3JGcmFt
ZVZpZXcobV9yZW5kZXJWaWV3LmZyYW1lVmlldygpKTsKIH0KIAogdm9pZCBSZW5kZXJMYXllckNv
bXBvc2l0b3I6OnVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb24oKQpAQCAtMTc2Niw3ICsxNzY2LDcg
QEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJvb3RGaXhlZEJhY2tncm91bmRzQ2hhbmdl
ZCgpCiB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6c2Nyb2xsaW5nTGF5ZXJEaWRDaGFuZ2Uo
UmVuZGVyTGF5ZXImIGxheWVyKQogewogICAgIGlmIChTY3JvbGxpbmdDb29yZGluYXRvciogc2Ny
b2xsaW5nQ29vcmRpbmF0b3IgPSB0aGlzLT5zY3JvbGxpbmdDb29yZGluYXRvcigpKQotICAgICAg
ICBzY3JvbGxpbmdDb29yZGluYXRvci0+c2Nyb2xsYWJsZUFyZWFTY3JvbGxMYXllckRpZENoYW5n
ZSgmbGF5ZXIpOworICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+c2Nyb2xsYWJsZUFyZWFT
Y3JvbGxMYXllckRpZENoYW5nZShsYXllcik7CiB9CiAKIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3Np
dG9yOjpmaXhlZFJvb3RCYWNrZ3JvdW5kTGF5ZXJDaGFuZ2VkKCkKQEAgLTMxMTIsNyArMzExMiw3
IEBAIEdyYXBoaWNzTGF5ZXIqIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlTGF5ZXJGb3JI
ZWFkZXIoYm9vbCB3YW50c0xheWVyKQogICAgICAgICAgICAgLy8gVGhlIFNjcm9sbGluZ1RyZWUg
a25vd3MgYWJvdXQgdGhlIGhlYWRlciBsYXllciwgYW5kIHRoZSBwb3NpdGlvbiBvZiB0aGUgcm9v
dCBsYXllciBpcyBhZmZlY3RlZAogICAgICAgICAgICAgLy8gYnkgdGhlIGhlYWRlciBsYXllciwg
c28gaWYgd2UgcmVtb3ZlIHRoZSBoZWFkZXIsIHdlIG5lZWQgdG8gdGVsbCB0aGUgc2Nyb2xsaW5n
IHRyZWUuCiAgICAgICAgICAgICBpZiAoU2Nyb2xsaW5nQ29vcmRpbmF0b3IqIHNjcm9sbGluZ0Nv
b3JkaW5hdG9yID0gdGhpcy0+c2Nyb2xsaW5nQ29vcmRpbmF0b3IoKSkKLSAgICAgICAgICAgICAg
ICBzY3JvbGxpbmdDb29yZGluYXRvci0+ZnJhbWVWaWV3Um9vdExheWVyRGlkQ2hhbmdlKCZtX3Jl
bmRlclZpZXcuZnJhbWVWaWV3KCkpOworICAgICAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5h
dG9yLT5mcmFtZVZpZXdSb290TGF5ZXJEaWRDaGFuZ2UobV9yZW5kZXJWaWV3LmZyYW1lVmlldygp
KTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gMDsKICAgICB9CkBAIC0zMTMyLDcgKzMxMzIs
NyBAQCBHcmFwaGljc0xheWVyKiBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZUxheWVyRm9y
SGVhZGVyKGJvb2wgd2FudHNMYXllcikKICAgICBtX2xheWVyRm9ySGVhZGVyLT5zZXRTaXplKEZs
b2F0U2l6ZShtX3JlbmRlclZpZXcuZnJhbWVWaWV3KCkudmlzaWJsZVdpZHRoKCksIG1fcmVuZGVy
Vmlldy5mcmFtZVZpZXcoKS5oZWFkZXJIZWlnaHQoKSkpOwogCiAgICAgaWYgKFNjcm9sbGluZ0Nv
b3JkaW5hdG9yKiBzY3JvbGxpbmdDb29yZGluYXRvciA9IHRoaXMtPnNjcm9sbGluZ0Nvb3JkaW5h
dG9yKCkpCi0gICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5mcmFtZVZpZXdSb290TGF5ZXJE
aWRDaGFuZ2UoJm1fcmVuZGVyVmlldy5mcmFtZVZpZXcoKSk7CisgICAgICAgIHNjcm9sbGluZ0Nv
b3JkaW5hdG9yLT5mcmFtZVZpZXdSb290TGF5ZXJEaWRDaGFuZ2UobV9yZW5kZXJWaWV3LmZyYW1l
VmlldygpKTsKIAogICAgIGlmIChQYWdlKiBwYWdlID0gdGhpcy0+cGFnZSgpKQogICAgICAgICBw
YWdlLT5jaHJvbWUoKS5jbGllbnQoKS5kaWRBZGRIZWFkZXJMYXllcihtX2xheWVyRm9ySGVhZGVy
LmdldCgpKTsKQEAgLTMxNTMsNyArMzE1Myw3IEBAIEdyYXBoaWNzTGF5ZXIqIFJlbmRlckxheWVy
Q29tcG9zaXRvcjo6dXBkYXRlTGF5ZXJGb3JGb290ZXIoYm9vbCB3YW50c0xheWVyKQogICAgICAg
ICAgICAgLy8gVGhlIFNjcm9sbGluZ1RyZWUga25vd3MgYWJvdXQgdGhlIGZvb3RlciBsYXllciwg
YW5kIHRoZSB0b3RhbCBzY3JvbGxhYmxlIHNpemUgaXMgYWZmZWN0ZWQKICAgICAgICAgICAgIC8v
IGJ5IHRoZSBmb290ZXIgbGF5ZXIsIHNvIGlmIHdlIHJlbW92ZSB0aGUgZm9vdGVyLCB3ZSBuZWVk
IHRvIHRlbGwgdGhlIHNjcm9sbGluZyB0cmVlLgogICAgICAgICAgICAgaWYgKFNjcm9sbGluZ0Nv
b3JkaW5hdG9yKiBzY3JvbGxpbmdDb29yZGluYXRvciA9IHRoaXMtPnNjcm9sbGluZ0Nvb3JkaW5h
dG9yKCkpCi0gICAgICAgICAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPmZyYW1lVmlld1Jv
b3RMYXllckRpZENoYW5nZSgmbV9yZW5kZXJWaWV3LmZyYW1lVmlldygpKTsKKyAgICAgICAgICAg
ICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+ZnJhbWVWaWV3Um9vdExheWVyRGlkQ2hhbmdlKG1f
cmVuZGVyVmlldy5mcmFtZVZpZXcoKSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgfQpAQCAtMzE3Myw3ICszMTczLDcgQEAgR3JhcGhpY3NMYXllciogUmVuZGVyTGF5ZXJDb21w
b3NpdG9yOjp1cGRhdGVMYXllckZvckZvb3Rlcihib29sIHdhbnRzTGF5ZXIpCiAgICAgbV9sYXll
ckZvckZvb3Rlci0+c2V0U2l6ZShGbG9hdFNpemUobV9yZW5kZXJWaWV3LmZyYW1lVmlldygpLnZp
c2libGVXaWR0aCgpLCBtX3JlbmRlclZpZXcuZnJhbWVWaWV3KCkuZm9vdGVySGVpZ2h0KCkpKTsK
IAogICAgIGlmIChTY3JvbGxpbmdDb29yZGluYXRvciogc2Nyb2xsaW5nQ29vcmRpbmF0b3IgPSB0
aGlzLT5zY3JvbGxpbmdDb29yZGluYXRvcigpKQotICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRv
ci0+ZnJhbWVWaWV3Um9vdExheWVyRGlkQ2hhbmdlKCZtX3JlbmRlclZpZXcuZnJhbWVWaWV3KCkp
OworICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+ZnJhbWVWaWV3Um9vdExheWVyRGlkQ2hh
bmdlKG1fcmVuZGVyVmlldy5mcmFtZVZpZXcoKSk7CiAKICAgICBpZiAoUGFnZSogcGFnZSA9IHRo
aXMtPnBhZ2UoKSkKICAgICAgICAgcGFnZS0+Y2hyb21lKCkuY2xpZW50KCkuZGlkQWRkRm9vdGVy
TGF5ZXIobV9sYXllckZvckZvb3Rlci5nZXQoKSk7CkBAIC0zMjg3LDE0ICszMjg3LDE0IEBAIHZv
aWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVPdmVyZmxvd0NvbnRyb2xzTGF5ZXJzKCkK
ICAgICAgICAgICAgIG1fb3ZlcmZsb3dDb250cm9sc0hvc3RMYXllci0+YWRkQ2hpbGQobV9sYXll
ckZvckhvcml6b250YWxTY3JvbGxiYXIuZ2V0KCkpOwogCiAgICAgICAgICAgICBpZiAoU2Nyb2xs
aW5nQ29vcmRpbmF0b3IqIHNjcm9sbGluZ0Nvb3JkaW5hdG9yID0gdGhpcy0+c2Nyb2xsaW5nQ29v
cmRpbmF0b3IoKSkKLSAgICAgICAgICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+c2Nyb2xs
YWJsZUFyZWFTY3JvbGxiYXJMYXllckRpZENoYW5nZSgmbV9yZW5kZXJWaWV3LmZyYW1lVmlldygp
LCBIb3Jpem9udGFsU2Nyb2xsYmFyKTsKKyAgICAgICAgICAgICAgICBzY3JvbGxpbmdDb29yZGlu
YXRvci0+c2Nyb2xsYWJsZUFyZWFTY3JvbGxiYXJMYXllckRpZENoYW5nZShtX3JlbmRlclZpZXcu
ZnJhbWVWaWV3KCksIEhvcml6b250YWxTY3JvbGxiYXIpOwogICAgICAgICB9CiAgICAgfSBlbHNl
IGlmIChtX2xheWVyRm9ySG9yaXpvbnRhbFNjcm9sbGJhcikgewogICAgICAgICBtX2xheWVyRm9y
SG9yaXpvbnRhbFNjcm9sbGJhci0+cmVtb3ZlRnJvbVBhcmVudCgpOwogICAgICAgICBtX2xheWVy
Rm9ySG9yaXpvbnRhbFNjcm9sbGJhciA9IG51bGxwdHI7CiAKICAgICAgICAgaWYgKFNjcm9sbGlu
Z0Nvb3JkaW5hdG9yKiBzY3JvbGxpbmdDb29yZGluYXRvciA9IHRoaXMtPnNjcm9sbGluZ0Nvb3Jk
aW5hdG9yKCkpCi0gICAgICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+c2Nyb2xsYWJsZUFy
ZWFTY3JvbGxiYXJMYXllckRpZENoYW5nZSgmbV9yZW5kZXJWaWV3LmZyYW1lVmlldygpLCBIb3Jp
em9udGFsU2Nyb2xsYmFyKTsKKyAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5zY3Jv
bGxhYmxlQXJlYVNjcm9sbGJhckxheWVyRGlkQ2hhbmdlKG1fcmVuZGVyVmlldy5mcmFtZVZpZXco
KSwgSG9yaXpvbnRhbFNjcm9sbGJhcik7CiAgICAgfQogCiAgICAgaWYgKHJlcXVpcmVzVmVydGlj
YWxTY3JvbGxiYXJMYXllcigpKSB7CkBAIC0zMzEwLDE0ICszMzEwLDE0IEBAIHZvaWQgUmVuZGVy
TGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVPdmVyZmxvd0NvbnRyb2xzTGF5ZXJzKCkKICAgICAgICAg
ICAgIG1fb3ZlcmZsb3dDb250cm9sc0hvc3RMYXllci0+YWRkQ2hpbGQobV9sYXllckZvclZlcnRp
Y2FsU2Nyb2xsYmFyLmdldCgpKTsKIAogICAgICAgICAgICAgaWYgKFNjcm9sbGluZ0Nvb3JkaW5h
dG9yKiBzY3JvbGxpbmdDb29yZGluYXRvciA9IHRoaXMtPnNjcm9sbGluZ0Nvb3JkaW5hdG9yKCkp
Ci0gICAgICAgICAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPnNjcm9sbGFibGVBcmVhU2Ny
b2xsYmFyTGF5ZXJEaWRDaGFuZ2UoJm1fcmVuZGVyVmlldy5mcmFtZVZpZXcoKSwgVmVydGljYWxT
Y3JvbGxiYXIpOworICAgICAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5zY3JvbGxh
YmxlQXJlYVNjcm9sbGJhckxheWVyRGlkQ2hhbmdlKG1fcmVuZGVyVmlldy5mcmFtZVZpZXcoKSwg
VmVydGljYWxTY3JvbGxiYXIpOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChtX2xheWVyRm9y
VmVydGljYWxTY3JvbGxiYXIpIHsKICAgICAgICAgbV9sYXllckZvclZlcnRpY2FsU2Nyb2xsYmFy
LT5yZW1vdmVGcm9tUGFyZW50KCk7CiAgICAgICAgIG1fbGF5ZXJGb3JWZXJ0aWNhbFNjcm9sbGJh
ciA9IG51bGxwdHI7CiAKICAgICAgICAgaWYgKFNjcm9sbGluZ0Nvb3JkaW5hdG9yKiBzY3JvbGxp
bmdDb29yZGluYXRvciA9IHRoaXMtPnNjcm9sbGluZ0Nvb3JkaW5hdG9yKCkpCi0gICAgICAgICAg
ICBzY3JvbGxpbmdDb29yZGluYXRvci0+c2Nyb2xsYWJsZUFyZWFTY3JvbGxiYXJMYXllckRpZENo
YW5nZSgmbV9yZW5kZXJWaWV3LmZyYW1lVmlldygpLCBWZXJ0aWNhbFNjcm9sbGJhcik7CisgICAg
ICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+c2Nyb2xsYWJsZUFyZWFTY3JvbGxiYXJMYXll
ckRpZENoYW5nZShtX3JlbmRlclZpZXcuZnJhbWVWaWV3KCksIFZlcnRpY2FsU2Nyb2xsYmFyKTsK
ICAgICB9CiAKICAgICBpZiAocmVxdWlyZXNTY3JvbGxDb3JuZXJMYXllcigpKSB7CkBAIC0zNDM3
LDcgKzM0MzcsNyBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6ZGVzdHJveVJvb3RMYXll
cigpCiAgICAgICAgIG1fbGF5ZXJGb3JIb3Jpem9udGFsU2Nyb2xsYmFyLT5yZW1vdmVGcm9tUGFy
ZW50KCk7CiAgICAgICAgIG1fbGF5ZXJGb3JIb3Jpem9udGFsU2Nyb2xsYmFyID0gbnVsbHB0cjsK
ICAgICAgICAgaWYgKFNjcm9sbGluZ0Nvb3JkaW5hdG9yKiBzY3JvbGxpbmdDb29yZGluYXRvciA9
IHRoaXMtPnNjcm9sbGluZ0Nvb3JkaW5hdG9yKCkpCi0gICAgICAgICAgICBzY3JvbGxpbmdDb29y
ZGluYXRvci0+c2Nyb2xsYWJsZUFyZWFTY3JvbGxiYXJMYXllckRpZENoYW5nZSgmbV9yZW5kZXJW
aWV3LmZyYW1lVmlldygpLCBIb3Jpem9udGFsU2Nyb2xsYmFyKTsKKyAgICAgICAgICAgIHNjcm9s
bGluZ0Nvb3JkaW5hdG9yLT5zY3JvbGxhYmxlQXJlYVNjcm9sbGJhckxheWVyRGlkQ2hhbmdlKG1f
cmVuZGVyVmlldy5mcmFtZVZpZXcoKSwgSG9yaXpvbnRhbFNjcm9sbGJhcik7CiAgICAgICAgIGlm
IChTY3JvbGxiYXIqIGhvcml6b250YWxTY3JvbGxiYXIgPSBtX3JlbmRlclZpZXcuZnJhbWVWaWV3
KCkudmVydGljYWxTY3JvbGxiYXIoKSkKICAgICAgICAgICAgIG1fcmVuZGVyVmlldy5mcmFtZVZp
ZXcoKS5pbnZhbGlkYXRlU2Nyb2xsYmFyKGhvcml6b250YWxTY3JvbGxiYXIsIEludFJlY3QoSW50
UG9pbnQoMCwgMCksIGhvcml6b250YWxTY3JvbGxiYXItPmZyYW1lUmVjdCgpLnNpemUoKSkpOwog
ICAgIH0KQEAgLTM0NDYsNyArMzQ0Niw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpk
ZXN0cm95Um9vdExheWVyKCkKICAgICAgICAgbV9sYXllckZvclZlcnRpY2FsU2Nyb2xsYmFyLT5y
ZW1vdmVGcm9tUGFyZW50KCk7CiAgICAgICAgIG1fbGF5ZXJGb3JWZXJ0aWNhbFNjcm9sbGJhciA9
IG51bGxwdHI7CiAgICAgICAgIGlmIChTY3JvbGxpbmdDb29yZGluYXRvciogc2Nyb2xsaW5nQ29v
cmRpbmF0b3IgPSB0aGlzLT5zY3JvbGxpbmdDb29yZGluYXRvcigpKQotICAgICAgICAgICAgc2Ny
b2xsaW5nQ29vcmRpbmF0b3ItPnNjcm9sbGFibGVBcmVhU2Nyb2xsYmFyTGF5ZXJEaWRDaGFuZ2Uo
Jm1fcmVuZGVyVmlldy5mcmFtZVZpZXcoKSwgVmVydGljYWxTY3JvbGxiYXIpOworICAgICAgICAg
ICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPnNjcm9sbGFibGVBcmVhU2Nyb2xsYmFyTGF5ZXJEaWRD
aGFuZ2UobV9yZW5kZXJWaWV3LmZyYW1lVmlldygpLCBWZXJ0aWNhbFNjcm9sbGJhcik7CiAgICAg
ICAgIGlmIChTY3JvbGxiYXIqIHZlcnRpY2FsU2Nyb2xsYmFyID0gbV9yZW5kZXJWaWV3LmZyYW1l
VmlldygpLnZlcnRpY2FsU2Nyb2xsYmFyKCkpCiAgICAgICAgICAgICBtX3JlbmRlclZpZXcuZnJh
bWVWaWV3KCkuaW52YWxpZGF0ZVNjcm9sbGJhcih2ZXJ0aWNhbFNjcm9sbGJhciwgSW50UmVjdChJ
bnRQb2ludCgwLCAwKSwgdmVydGljYWxTY3JvbGxiYXItPmZyYW1lUmVjdCgpLnNpemUoKSkpOwog
ICAgIH0KQEAgLTM4MTYsNyArMzgxNiw3IEBAIFNjcm9sbGluZ05vZGVJRCBSZW5kZXJMYXllckNv
bXBvc2l0b3I6OmF0dGFjaFNjcm9sbGluZ05vZGUoUmVuZGVyTGF5ZXImIGxheWVyLCBTCiB2b2lk
IFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlU2Nyb2xsQ29vcmRpbmF0aW9uRm9yVGhpc0Zy
YW1lKFNjcm9sbGluZ05vZGVJRCBwYXJlbnROb2RlSUQpCiB7CiAgICAgU2Nyb2xsaW5nQ29vcmRp
bmF0b3IqIHNjcm9sbGluZ0Nvb3JkaW5hdG9yID0gdGhpcy0+c2Nyb2xsaW5nQ29vcmRpbmF0b3Io
KTsKLSAgICBBU1NFUlQoc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPmNvb3JkaW5hdGVzU2Nyb2xsaW5n
Rm9yRnJhbWVWaWV3KCZtX3JlbmRlclZpZXcuZnJhbWVWaWV3KCkpKTsKKyAgICBBU1NFUlQoc2Ny
b2xsaW5nQ29vcmRpbmF0b3ItPmNvb3JkaW5hdGVzU2Nyb2xsaW5nRm9yRnJhbWVWaWV3KG1fcmVu
ZGVyVmlldy5mcmFtZVZpZXcoKSkpOwogCiAgICAgU2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCA9IGF0
dGFjaFNjcm9sbGluZ05vZGUoKm1fcmVuZGVyVmlldy5sYXllcigpLCBGcmFtZVNjcm9sbGluZ05v
ZGUsIHBhcmVudE5vZGVJRCk7CiAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPnVwZGF0ZUZyYW1l
U2Nyb2xsaW5nTm9kZShub2RlSUQsIG1fc2Nyb2xsTGF5ZXIuZ2V0KCksIG1fcm9vdENvbnRlbnRM
YXllci5nZXQoKSwgZml4ZWRSb290QmFja2dyb3VuZExheWVyKCksIGNsaXBMYXllcigpKTsKQEAg
LTM4MjUsNyArMzgyNSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVTY3Jv
bGxDb29yZGluYXRpb25Gb3JUaGlzRnJhbWUoU2Nyb2xsaW5nTm9kZUlECiB2b2lkIFJlbmRlckxh
eWVyQ29tcG9zaXRvcjo6dXBkYXRlU2Nyb2xsQ29vcmRpbmF0ZWRMYXllcihSZW5kZXJMYXllciYg
bGF5ZXIsIFNjcm9sbENvb3JkaW5hdGlvblJlYXNvbnMgcmVhc29ucykKIHsKICAgICBTY3JvbGxp
bmdDb29yZGluYXRvciogc2Nyb2xsaW5nQ29vcmRpbmF0b3IgPSB0aGlzLT5zY3JvbGxpbmdDb29y
ZGluYXRvcigpOwotICAgIGlmICghc2Nyb2xsaW5nQ29vcmRpbmF0b3IgfHwgIXNjcm9sbGluZ0Nv
b3JkaW5hdG9yLT5jb29yZGluYXRlc1Njcm9sbGluZ0ZvckZyYW1lVmlldygmbV9yZW5kZXJWaWV3
LmZyYW1lVmlldygpKSkKKyAgICBpZiAoIXNjcm9sbGluZ0Nvb3JkaW5hdG9yIHx8ICFzY3JvbGxp
bmdDb29yZGluYXRvci0+Y29vcmRpbmF0ZXNTY3JvbGxpbmdGb3JGcmFtZVZpZXcobV9yZW5kZXJW
aWV3LmZyYW1lVmlldygpKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYm9vbCBpc1Jvb3RMYXll
ciA9ICZsYXllciA9PSBtX3JlbmRlclZpZXcubGF5ZXIoKTsKQEAgLTQwMTksNyArNDAxOSw3IEBA
IHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp3aWxsUmVtb3ZlU2Nyb2xsaW5nTGF5ZXJXaXRo
QmFja2luZyhSZW5kZXJMYXllciYgbGF5CiAgICAgICAgIGJhY2tpbmcuZGV0YWNoRnJvbVNjcm9s
bGluZ0Nvb3JkaW5hdG9yKCk7CiAKICAgICAgICAgLy8gRm9yIENvb3JkaW5hdGVkIEdyYXBoaWNz
LgotICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+c2Nyb2xsYWJsZUFyZWFTY3JvbGxMYXll
ckRpZENoYW5nZSgmbGF5ZXIpOworICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+c2Nyb2xs
YWJsZUFyZWFTY3JvbGxMYXllckRpZENoYW5nZShsYXllcik7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKQEAgLTQwNDQsNyArNDA0NCw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpk
aWRBZGRTY3JvbGxpbmdMYXllcihSZW5kZXJMYXllciYgbGF5ZXIpCiAKICAgICBpZiAoU2Nyb2xs
aW5nQ29vcmRpbmF0b3IqIHNjcm9sbGluZ0Nvb3JkaW5hdG9yID0gdGhpcy0+c2Nyb2xsaW5nQ29v
cmRpbmF0b3IoKSkgewogICAgICAgICAvLyBGb3IgQ29vcmRpbmF0ZWQgR3JhcGhpY3MuCi0gICAg
ICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5zY3JvbGxhYmxlQXJlYVNjcm9sbExheWVyRGlkQ2hh
bmdlKCZsYXllcik7CisgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5zY3JvbGxhYmxlQXJl
YVNjcm9sbExheWVyRGlkQ2hhbmdlKGxheWVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDcxMThmYzdmMDViYWUzYzNjNDkw
NGJhZTdlNWQzYmQ4NDVhMjUzNzAuLjRhYTAxZWJlMDg5YmNlZGQ1NTkyNjNmMDczZWM0ZjJjYWNl
OWYzMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTE3NzEsNyArMTc3
MSw3IEBAIFJlZlB0cjxDbGllbnRSZWN0TGlzdD4gSW50ZXJuYWxzOjpub25GYXN0U2Nyb2xsYWJs
ZVJlY3RzKEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zCiAgICAgaWYgKCFwYWdlKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBwYWdlLT5ub25GYXN0U2Nyb2xsYWJsZVJlY3Rz
KGRvY3VtZW50LT5mcmFtZSgpKTsKKyAgICByZXR1cm4gcGFnZS0+bm9uRmFzdFNjcm9sbGFibGVS
ZWN0cygqZG9jdW1lbnQtPmZyYW1lKCkpOwogfQogCiB2b2lkIEludGVybmFsczo6Z2FyYmFnZUNv
bGxlY3REb2N1bWVudFJlc291cmNlcyhFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvU2Nyb2xsaW5nL1JlbW90ZVNjcm9sbGluZ0Nv
b3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Njcm9sbGluZy9SZW1vdGVT
Y3JvbGxpbmdDb29yZGluYXRvci5oCmluZGV4IDVhNTAxZmMzMDUxODg2OGY2MTliNWExZWM1ZWMx
YTZiMzg2MmU3ZTkuLjYxNzFkZGRhMWQ2MjEyMjcyOTMwMWU3YTA0YmFjODNmMDIxYmMxNTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvU2Nyb2xsaW5nL1JlbW90ZVNjcm9s
bGluZ0Nvb3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9TY3JvbGxp
bmcvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaApAQCAtNjEsNyArNjEsNyBAQCBwcml2YXRl
OgogICAgIHZpcnR1YWwgYm9vbCBpc1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIAogICAgIC8vIFNjcm9sbGluZ0Nvb3JkaW5h
dG9yCi0gICAgdmlydHVhbCBib29sIGNvb3JkaW5hdGVzU2Nyb2xsaW5nRm9yRnJhbWVWaWV3KFdl
YkNvcmU6OkZyYW1lVmlldyopIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCBjb29y
ZGluYXRlc1Njcm9sbGluZ0ZvckZyYW1lVmlldyhjb25zdCBXZWJDb3JlOjpGcmFtZVZpZXcmKSBj
b25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVUcmVlU3RhdGVDb21taXQo
KSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgYm9vbCBpc1J1YmJlckJhbmRJblByb2dyZXNzKCkg
Y29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Nj
cm9sbGluZy9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvci5tbSBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvU2Nyb2xsaW5nL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yLm1tCmluZGV4IGE2
ODA4ODFjMmRhMTc5ZDFjMWRjZTMxY2U5MjVjOTE0ZTA0MmRlZGEuLmY3NzczOTgyNDc4ZWVhZjMw
ODc5ZTY4MTNhZDdlNzcyYWQxNDBlYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvU2Nyb2xsaW5nL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvU2Nyb2xsaW5nL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9y
Lm1tCkBAIC02Nyw5ICs2Nyw5IEBAIHZvaWQgUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNj
aGVkdWxlVHJlZVN0YXRlQ29tbWl0KCkKICAgICBtX3dlYlBhZ2UtPmRyYXdpbmdBcmVhKCktPnNj
aGVkdWxlQ29tcG9zaXRpbmdMYXllckZsdXNoKCk7CiB9CiAKLWJvb2wgUmVtb3RlU2Nyb2xsaW5n
Q29vcmRpbmF0b3I6OmNvb3JkaW5hdGVzU2Nyb2xsaW5nRm9yRnJhbWVWaWV3KEZyYW1lVmlldyog
ZnJhbWVWaWV3KSBjb25zdAorYm9vbCBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvcjo6Y29vcmRp
bmF0ZXNTY3JvbGxpbmdGb3JGcmFtZVZpZXcoY29uc3QgRnJhbWVWaWV3JiBmcmFtZVZpZXcpIGNv
bnN0CiB7Ci0gICAgUmVuZGVyVmlldyogcmVuZGVyVmlldyA9IGZyYW1lVmlldy0+cmVuZGVyVmll
dygpOworICAgIFJlbmRlclZpZXcqIHJlbmRlclZpZXcgPSBmcmFtZVZpZXcucmVuZGVyVmlldygp
OwogICAgIHJldHVybiByZW5kZXJWaWV3ICYmIHJlbmRlclZpZXctPnVzZXNDb21wb3NpdGluZygp
OwogfQogCg==
</data>
<flag name="review"
          id="274530"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>