<?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>191982</bug_id>
          
          <creation_ts>2018-11-26 14:58:45 -0800</creation_ts>
          <short_desc>Restore MESSAGE_CHECK_URL() security check on sourceURL in didPerformClientRedirect()</short_desc>
          <delta_ts>2018-12-12 08:01:10 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>191828</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>ap</cc>
    
    <cc>beidson</cc>
    
    <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>koivisto</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1481708</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-11-26 14:58:45 -0800</bug_when>
    <thetext>Restore MESSAGE_CHECK_URL() security check on sourceURL in didPerformClientRedirect().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1481710</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-11-26 14:59:25 -0800</bug_when>
    <thetext>&lt;rdar://problem/46258054&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1481760</commentid>
    <comment_count>2</comment_count>
      <attachid>355694</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-11-26 16:35:05 -0800</bug_when>
    <thetext>Created attachment 355694
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1481836</commentid>
    <comment_count>3</comment_count>
      <attachid>355694</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-11-26 22:41:24 -0800</bug_when>
    <thetext>Comment on attachment 355694
Patch

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

&gt; Source/WebKit/ChangeLog:11
&gt; +        on navigation. To support this, some of the data that is currently on WebProcessProxy is now
&gt; +        also on the WebPageProxy: m_mayHaveUniversalFileReadSandboxExtension /

Do we need it in both places still?

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:4462
&gt; +    MESSAGE_CHECK_URL(sourceURLString); // In case of process-swap, the source URL may have been loaded by this page in a previous WebProcess.

I don&apos;t think we need this comment.

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:8285
&gt; +    WTFLogAlways(&quot;CHRIS: WebPageProxy::assumeReadAccessToBaseURL(%s)&quot;, path.utf8().data());

:(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1481920</commentid>
    <comment_count>4</comment_count>
      <attachid>355736</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-11-27 08:46:36 -0800</bug_when>
    <thetext>Created attachment 355736
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1481922</commentid>
    <comment_count>5</comment_count>
      <attachid>355694</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-11-27 08:51:08 -0800</bug_when>
    <thetext>Comment on attachment 355694
Patch

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

&gt;&gt; Source/WebKit/ChangeLog:11
&gt;&gt; +        also on the WebPageProxy: m_mayHaveUniversalFileReadSandboxExtension /
&gt; 
&gt; Do we need it in both places still?

I believe so, for 2 reasons:
1. The code in the WebProcessProxy is used to determine if we need to issue a sandbox extension for a given path or not (because the process already has access). The code on the WebPageProxy would not work for this as extensions issued to a previously associated WebProcess do not mean the currently associated WebProcess has access.
2. Note that if we only checked the URLs seen by the WebPageProxy, and not by the whole WebProcess, then the new checks would be stricter. In particular, I am worried it could cause issues with related pages (pages sharing the same process due to opener relationship for e.g.).

&gt;&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:4462
&gt;&gt; +    MESSAGE_CHECK_URL(sourceURLString); // In case of process-swap, the source URL may have been loaded by this page in a previous WebProcess.
&gt; 
&gt; I don&apos;t think we need this comment.

Oh yes, I used to have a different macro and it made sense at the time, but not anymore.

&gt;&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:8285
&gt;&gt; +    WTFLogAlways(&quot;CHRIS: WebPageProxy::assumeReadAccessToBaseURL(%s)&quot;, path.utf8().data());
&gt; 
&gt; :(

Oops, missed one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1481940</commentid>
    <comment_count>6</comment_count>
      <attachid>355743</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-11-27 09:33:41 -0800</bug_when>
    <thetext>Created attachment 355743
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1486198</commentid>
    <comment_count>7</comment_count>
      <attachid>356848</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-12-07 15:54:41 -0800</bug_when>
    <thetext>Created attachment 356848
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1486199</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-12-07 15:55:06 -0800</bug_when>
    <thetext>I tried to simplify the code a little bit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1486597</commentid>
    <comment_count>9</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-12-10 09:37:56 -0800</bug_when>
    <thetext>ping review?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1486780</commentid>
    <comment_count>10</comment_count>
      <attachid>356848</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-12-10 15:51:31 -0800</bug_when>
    <thetext>Comment on attachment 356848
Patch

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

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:8302
&gt; +bool WebPageProxy::checkURLReceivedFromCurrentOrPreviousWebProcess(const URL&amp; url)

This feels like it may be duplicate code.  Is it based on something?

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:8329
&gt; +    m_mayHaveUniversalFileReadSandboxExtension = true;

It seems like this makes the UIProcess less safe.  Once it is set, the WebProcess can send whatever it wants and the UIProcess will always think it&apos;s good.

&gt; Source/WebKit/UIProcess/WebPageProxy.h:2294
&gt; +    HashSet&lt;String&gt; m_previouslyVisitedPaths;

This is only added to.  Will it grow forever?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1486934</commentid>
    <comment_count>11</comment_count>
      <attachid>356848</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-12-11 08:46:40 -0800</bug_when>
    <thetext>Comment on attachment 356848
Patch

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

&gt;&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:8302
&gt;&gt; +bool WebPageProxy::checkURLReceivedFromCurrentOrPreviousWebProcess(const URL&amp; url)
&gt; 
&gt; This feels like it may be duplicate code.  Is it based on something?

It is not really duplicated but it is similar to what their WebProcessProxy equivalent does in:
- WebProcessProxy::checkURLReceivedFromWebProcess()
and
- WebProcessProxy::hasAssumedReadAccessToURL()

This is actually simpler though.

&gt;&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:8329
&gt;&gt; +    m_mayHaveUniversalFileReadSandboxExtension = true;
&gt; 
&gt; It seems like this makes the UIProcess less safe.  Once it is set, the WebProcess can send whatever it wants and the UIProcess will always think it&apos;s good.

Well I am not disagreeing with you but this is not new to this patch. The intent of this patch is to teach the MESSSAGE_CHECK_URL() checks about process-swapping, not to make them safer.
Note that there is already a m_mayHaveUniversalFileReadSandboxExtension on WebProcessProxy which causes WebProcessProxy::checkURLReceivedFromWebProcess() to return true when set. All this patch does is extending the checks done in the WebProcessProxy to the WebPageProxy so that it works in case of process-swap for the purpose of Message Checks.

&gt;&gt; Source/WebKit/UIProcess/WebPageProxy.h:2294
&gt;&gt; +    HashSet&lt;String&gt; m_previouslyVisitedPaths;
&gt; 
&gt; This is only added to.  Will it grow forever?

Yes, but again, this is the pattern used for the WebProcessProxy equivalent: WebProcessProxy::m_localPathsWithAssumedReadAccess. In practice, this does not really grow because this only contains unique directories from file URLs. File URLs are not common and they usually point to the same directories.
I do not think there is currently a point in time when we can safely remove paths from this set and not cause MESSAGE_CHECK_URL() to hit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487198</commentid>
    <comment_count>12</comment_count>
      <attachid>356848</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-12-12 08:01:08 -0800</bug_when>
    <thetext>Comment on attachment 356848
Patch

Clearing flags on attachment: 356848

Committed r239104: &lt;https://trac.webkit.org/changeset/239104&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487199</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-12-12 08:01:10 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>355694</attachid>
            <date>2018-11-26 16:35:05 -0800</date>
            <delta_ts>2018-11-27 08:46:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191982-20181126163504.patch</filename>
            <type>text/plain</type>
            <size>18778</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4NDk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDA3MTQ0OGQ3YzJlZDlkNmVi
MDdlZWE3ODNlZDkwYTgxOTIzNzFiYWEuLjA4OTRlODQ2YmNiYzFkYzkxYTYzNDc2NTQyYWU2YzY3
MjQ3NzNiMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDcgQEAKKzIwMTgtMTEtMjYgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBSZXN0b3JlIE1FU1NBR0VfQ0hFQ0tf
VVJMKCkgc2VjdXJpdHkgY2hlY2sgb24gc291cmNlVVJMIGluIGRpZFBlcmZvcm1DbGllbnRSZWRp
cmVjdCgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTE5ODIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ2MjU4MDU0PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBNRVNTQUdFX0NIRUNLX1VS
TCgpIG1hY3JvIGluIFdlYlBhZ2VQcm94eSBzbyB0aGF0IGl0IGJlY29tZXMgYXdhcmUgb2YgcHJv
Y2Vzcy1zd2FwcGluZworICAgICAgICBvbiBuYXZpZ2F0aW9uLiBUbyBzdXBwb3J0IHRoaXMsIHNv
bWUgb2YgdGhlIGRhdGEgdGhhdCBpcyBjdXJyZW50bHkgb24gV2ViUHJvY2Vzc1Byb3h5IGlzIG5v
dworICAgICAgICBhbHNvIG9uIHRoZSBXZWJQYWdlUHJveHk6IG1fbWF5SGF2ZVVuaXZlcnNhbEZp
bGVSZWFkU2FuZGJveEV4dGVuc2lvbiAvCisgICAgICAgIG1fbG9jYWxQYXRoc1dpdGhBc3N1bWVk
UmVhZEFjY2Vzcy4gV2UgZmlyc3QgY2hlY2sgdGhlIGRhdGEgb24gdGhlIFdlYlBhZ2VQcm94eSBh
bmQgdGhlbgorICAgICAgICBmYWxsYmFjayB0byBjaGVja2luZyB0aGUgZGF0YSBvbiB0aGUgV2Vi
UHJvY2Vzc1Byb3h5IGN1cnJlbnRseSBhc3NvY2lhdGVkIHdpdGggdGhlIHBhZ2UuCisKKyAgICAg
ICAgQWRkIGJhY2sgTUVTU0FHRV9DSEVDS19VUkwoKSBzZWN1cml0eSBjaGVjayBvbiBzb3VyY2VV
UkwgaW4gZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0KCkKKyAgICAgICAgd2hpY2ggd2FzIGRyb3Bw
ZWQgaW4gcjIzODM2OCBkdWUgdG8gbGFjayBvZiBQU09OIHN1cHBvcnQuCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6Y3JlYXRlU2FuZGJveEV4dGVuc2lvbnNJZk5lZWRlZCk6CisgICAgICAgICog
VUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OnNldFBhc3RlYm9hcmRVUkwpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVdlYkluc3BlY3RvclByb3h5OjpjcmVhdGVGcm9udGVuZFBhZ2VBbmRXaW5kb3cpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYkluc3BlY3RvclByb3h5OjpjcmVhdGVGcm9udGVuZFBhZ2UpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Ondp
bGxBY3F1aXJlVW5pdmVyc2FsRmlsZVJlYWRTYW5kYm94RXh0ZW5zaW9uKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5Ojpsb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5Ojpsb2FkRmlsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6bG9hZERhdGFXaXRoTmF2aWdhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6bG9hZEFsdGVybmF0ZUhUTUwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OnJlbG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybUNs
aWVudFJlZGlyZWN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpiYWNrRm9yd2Fy
ZEdvVG9JdGVtKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjaGVja1VSTFJlY2Vp
dmVkRnJvbVdlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmFzc3Vt
ZVJlYWRBY2Nlc3NUb0Jhc2VVUkwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Byb3h5OjphZGRsb2NhbFBhdGhXaXRoQXNzdW1lZFJlYWRBY2Nlc3Mp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6Omhhc0Fzc3VtZWRSZWFkQWNjZXNz
VG9VUkwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6Omhhc0Fzc3VtZWRSZWFk
QWNjZXNzVG9VUkwgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbToKKwogMjAxOC0x
MS0yNiAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgQ2xlYW4g
dXAgbGF5ZXIgdHJlZSBmcmVlemluZyBsb2dpYyBpbiBXZWJQYWdlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCmluZGV4IGY1Njg3NWRm
ZjNhMWNjNDVlYmVlNjE3MjE1Y2U5NTcyM2Y1M2RlNGUuLmY3ODA5YTQ1YzEyMzVkMDU4MzdjNjZl
ZmIwZDYyZTI2MWJjOTM4NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCkBAIC0xMjAsNyArMTIwLDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmNyZWF0ZVNhbmRib3hFeHRlbnNpb25zSWZOZWVkZWQoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGZpbGVzLAogICAgICAgICBCT09MIGlzRGlyZWN0b3J5OwogICAgICAgICBpZiAoW1tOU0Zp
bGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOmZpbGVzWzBdIGlzRGly
ZWN0b3J5OiZpc0RpcmVjdG9yeV0gJiYgIWlzRGlyZWN0b3J5KSB7CiAgICAgICAgICAgICBTYW5k
Ym94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUoIi8iLCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpS
ZWFkT25seSwgZmlsZVJlYWRIYW5kbGUpOwotICAgICAgICAgICAgcHJvY2VzcygpLndpbGxBY3F1
aXJlVW5pdmVyc2FsRmlsZVJlYWRTYW5kYm94RXh0ZW5zaW9uKCk7CisgICAgICAgICAgICB3aWxs
QWNxdWlyZVVuaXZlcnNhbEZpbGVSZWFkU2FuZGJveEV4dGVuc2lvbigpOwogICAgICAgICB9CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0
ZWJvYXJkUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBh
c3RlYm9hcmRQcm94eUNvY29hLm1tCmluZGV4IDU1MmExMmJjMjcxNGY3MjFjZjdhODY3NWMxZTgz
MmMzNjBiMDBiNGMuLjhhMmQwM2MzYmMyM2MwMzIxZGQ1OWZkYTZiNjE1OTJiODMyMjRmNDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94
eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9h
cmRQcm94eUNvY29hLm1tCkBAIC0xMzEsNyArMTMxLDcgQEAgdm9pZCBXZWJQYXN0ZWJvYXJkUHJv
eHk6OnNldFBhc3RlYm9hcmRVUkwoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBQ
YXMKICAgICAgICAgaWYgKCF3ZWJQcm9jZXNzUHJveHktPmhhc0Nvbm5lY3Rpb24oY29ubmVjdGlv
bikpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBpZiAoIXdlYlByb2Nlc3NQcm94
eS0+Y2hlY2tVUkxSZWNlaXZlZEZyb21XZWJQcm9jZXNzKHBhc3RlYm9hcmRVUkwudXJsLnN0cmlu
ZygpKSkgeworICAgICAgICBpZiAoIXdlYlByb2Nlc3NQcm94eS0+Y2hlY2tVUkxSZWNlaXZlZEZy
b21XZWJQcm9jZXNzKHBhc3RlYm9hcmRVUkwudXJsKSkgewogICAgICAgICAgICAgbmV3Q2hhbmdl
Q291bnQgPSAwOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5jcHAKaW5kZXggOTI3
ZGExYjYzOWUyMTFjMTkwNmM2NWUxMjUzMGNlNDdjMTcxNWIwNi4uMzgwYjEzYzkwOWUzZWVkNmNi
NGFkOTUyOGRhZDAzZmIxYzRjNTBhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1JlbW90ZVdlYkluc3BlY3RvclByb3h5LmNwcApAQCAtMTQ4LDcgKzE0OCw3IEBAIHZvaWQg
UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OmNyZWF0ZUZyb250ZW5kUGFnZUFuZFdpbmRvdygpCiAg
ICAgdHJhY2tJbnNwZWN0b3JQYWdlKG1faW5zcGVjdG9yUGFnZSk7CiAKICAgICBtX2luc3BlY3Rv
clBhZ2UtPnByb2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZVdlYklu
c3BlY3RvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faW5zcGVjdG9yUGFnZS0+cGFn
ZUlEKCksICp0aGlzKTsKLSAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5hc3N1bWVSZWFk
QWNjZXNzVG9CYXNlVVJMKFdlYkluc3BlY3RvclByb3h5OjppbnNwZWN0b3JCYXNlVVJMKCkpOwor
ICAgIG1faW5zcGVjdG9yUGFnZS0+YXNzdW1lUmVhZEFjY2Vzc1RvQmFzZVVSTChXZWJJbnNwZWN0
b3JQcm94eTo6aW5zcGVjdG9yQmFzZVVSTCgpKTsKIH0KIAogdm9pZCBSZW1vdGVXZWJJbnNwZWN0
b3JQcm94eTo6Y2xvc2VGcm9udGVuZFBhZ2VBbmRXaW5kb3coKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuY3BwCmluZGV4IDU4OWJiY2U3NjYyYzhiYzUyZDZm
ZWQyYmZiNzZiY2M1ODViYTJkZGIuLmI1MTc2OTc1Y2U1MDQ1YWMyZGJhYjhkMzk0NTExMTQxMGFl
ZWQ1NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkluc3BlY3RvclBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5j
cHAKQEAgLTM3Niw3ICszNzYsNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpjcmVhdGVGcm9u
dGVuZFBhZ2UoKQogICAgIHRyYWNrSW5zcGVjdG9yUGFnZShtX2luc3BlY3RvclBhZ2UpOwogCiAg
ICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2Vz
OjpXZWJJbnNwZWN0b3JQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2luc3BlY3RlZFBh
Z2UtPnBhZ2VJRCgpLCAqdGhpcyk7Ci0gICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuYXNz
dW1lUmVhZEFjY2Vzc1RvQmFzZVVSTChXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdG9yQmFzZVVS
TCgpKTsKKyAgICBtX2luc3BlY3RvclBhZ2UtPmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwoV2Vi
SW5zcGVjdG9yUHJveHk6Omluc3BlY3RvckJhc2VVUkwoKSk7CiB9CiAKIHZvaWQgV2ViSW5zcGVj
dG9yUHJveHk6Om9wZW5Mb2NhbEluc3BlY3RvckZyb250ZW5kKGJvb2wgY2FuQXR0YWNoLCBib29s
IHVuZGVyVGVzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4
IDMwMmI0ZTExMzJlMTljNWEwMjgyY2YxMzE1MDRkYjhiNjI5MTBkZTMuLmE0MjYzZjVlMjYwNTAy
ODJmMGVmYTI1ZmZlOTg1MDdlMzlhZGU5YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcApAQCAtMjM3LDcgKzIzNyw3IEBACiAjZGVmaW5lIE1FUkdFX1dIRUVMX0VW
RU5UUyAxCiAKICNkZWZpbmUgTUVTU0FHRV9DSEVDSyhhc3NlcnRpb24pIE1FU1NBR0VfQ0hFQ0tf
QkFTRShhc3NlcnRpb24sIG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigpKQotI2RlZmluZSBNRVNTQUdF
X0NIRUNLX1VSTCh1cmwpIE1FU1NBR0VfQ0hFQ0tfQkFTRShtX3Byb2Nlc3MtPmNoZWNrVVJMUmVj
ZWl2ZWRGcm9tV2ViUHJvY2Vzcyh1cmwpLCBtX3Byb2Nlc3MtPmNvbm5lY3Rpb24oKSkKKyNkZWZp
bmUgTUVTU0FHRV9DSEVDS19VUkwodXJsKSBNRVNTQUdFX0NIRUNLX0JBU0UoY2hlY2tVUkxSZWNl
aXZlZEZyb21XZWJQcm9jZXNzKHVybCksIG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigpKQogCiAjZGVm
aW5lIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoY2hhbm5lbCwgLi4uKSBSRUxFQVNFX0xPR19JRihp
c0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgY2hhbm5lbCwgX19WQV9BUkdTX18pCiAKQEAgLTEw
MjYsNiArMTAyNiwxMiBAQCBib29sIFdlYlBhZ2VQcm94eTo6bWF5YmVJbml0aWFsaXplU2FuZGJv
eEV4dGVuc2lvbkhhbmRsZShjb25zdCBVUkwmIHVybCwgU2FuZGJveAogICAgIHJldHVybiB0cnVl
OwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6d2lsbEFjcXVpcmVVbml2ZXJzYWxGaWxlUmVhZFNh
bmRib3hFeHRlbnNpb24oKQoreworICAgIG1fbWF5SGF2ZVVuaXZlcnNhbEZpbGVSZWFkU2FuZGJv
eEV4dGVuc2lvbiA9IHRydWU7CisgICAgbV9wcm9jZXNzLT53aWxsQWNxdWlyZVVuaXZlcnNhbEZp
bGVSZWFkU2FuZGJveEV4dGVuc2lvbigpOworfQorCiAjaWYgIVBMQVRGT1JNKENPQ09BKQogdm9p
ZCBXZWJQYWdlUHJveHk6OmFkZFBsYXRmb3JtTG9hZFBhcmFtZXRlcnMoTG9hZFBhcmFtZXRlcnMm
KQogewpAQCAtMTA2NSw3ICsxMDcxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmxvYWRSZXF1ZXN0
V2l0aE5hdmlnYXRpb24oQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBSZXNvdXIKICAgICBs
b2FkUGFyYW1ldGVycy5jbGllbnRSZWRpcmVjdFNvdXJjZUZvckhpc3RvcnkgPSBuYXZpZ2F0aW9u
LmNsaWVudFJlZGlyZWN0U291cmNlRm9ySGlzdG9yeSgpOwogICAgIGJvb2wgY3JlYXRlZEV4dGVu
c2lvbiA9IG1heWJlSW5pdGlhbGl6ZVNhbmRib3hFeHRlbnNpb25IYW5kbGUodXJsLCBsb2FkUGFy
YW1ldGVycy5zYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsKICAgICBpZiAoY3JlYXRlZEV4dGVuc2lv
bikKLSAgICAgICAgbV9wcm9jZXNzLT53aWxsQWNxdWlyZVVuaXZlcnNhbEZpbGVSZWFkU2FuZGJv
eEV4dGVuc2lvbigpOworICAgICAgICB3aWxsQWNxdWlyZVVuaXZlcnNhbEZpbGVSZWFkU2FuZGJv
eEV4dGVuc2lvbigpOwogICAgIGFkZFBsYXRmb3JtTG9hZFBhcmFtZXRlcnMobG9hZFBhcmFtZXRl
cnMpOwogCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkUmVxdWVz
dChsb2FkUGFyYW1ldGVycyksIG1fcGFnZUlEKTsKQEAgLTExMDksNyArMTExNSw3IEBAIFJlZlB0
cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9hZEZpbGUoY29uc3QgU3RyaW5nJiBm
aWxlVVJMU3RyaW5nLCBjb25zCiAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKHJl
c291cmNlRGlyZWN0b3J5UGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZE9ubHksIGxv
YWRQYXJhbWV0ZXJzLnNhbmRib3hFeHRlbnNpb25IYW5kbGUpOwogICAgIGFkZFBsYXRmb3JtTG9h
ZFBhcmFtZXRlcnMobG9hZFBhcmFtZXRlcnMpOwogCi0gICAgbV9wcm9jZXNzLT5hc3N1bWVSZWFk
QWNjZXNzVG9CYXNlVVJMKHJlc291cmNlRGlyZWN0b3J5VVJMKTsKKyAgICBhc3N1bWVSZWFkQWNj
ZXNzVG9CYXNlVVJMKHJlc291cmNlRGlyZWN0b3J5VVJMKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRSZXF1ZXN0KGxvYWRQYXJhbWV0ZXJzKSwgbV9wYWdlSUQp
OwogICAgIG1fcHJvY2Vzcy0+cmVzcG9uc2l2ZW5lc3NUaW1lcigpLnN0YXJ0KCk7CiAKQEAgLTEx
NDYsNyArMTE1Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkRGF0YVdpdGhOYXZpZ2F0aW9u
KEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgY29uc3QgSVBDCiAgICAgbG9hZFBhcmFtZXRl
cnMudXNlckRhdGEgPSBVc2VyRGF0YShwcm9jZXNzKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxl
cyh1c2VyRGF0YSkuZ2V0KCkpOwogICAgIGFkZFBsYXRmb3JtTG9hZFBhcmFtZXRlcnMobG9hZFBh
cmFtZXRlcnMpOwogCi0gICAgbV9wcm9jZXNzLT5hc3N1bWVSZWFkQWNjZXNzVG9CYXNlVVJMKGJh
c2VVUkwpOworICAgIGFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwoYmFzZVVSTCk7CiAgICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkRGF0YShsb2FkUGFyYW1ldGVycyks
IG1fcGFnZUlEKTsKICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS5zdGFydCgp
OwogfQpAQCAtMTE4NSw4ICsxMTkxLDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OmxvYWRBbHRlcm5h
dGVIVE1MKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgaHRtbERhdGEsIGNvbnN0IFMKICAgICBs
b2FkUGFyYW1ldGVycy5mb3JTYWZlQnJvd3NpbmcgPSBmb3JTYWZlQnJvd3Npbmc7CiAgICAgYWRk
UGxhdGZvcm1Mb2FkUGFyYW1ldGVycyhsb2FkUGFyYW1ldGVycyk7CiAKLSAgICBtX3Byb2Nlc3Mt
PmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwoYmFzZVVSTCk7Ci0gICAgbV9wcm9jZXNzLT5hc3N1
bWVSZWFkQWNjZXNzVG9CYXNlVVJMKHVucmVhY2hhYmxlVVJMKTsKKyAgICBhc3N1bWVSZWFkQWNj
ZXNzVG9CYXNlVVJMKGJhc2VVUkwpOworICAgIGFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwodW5y
ZWFjaGFibGVVUkwpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TG9h
ZEFsdGVybmF0ZUhUTUwobG9hZFBhcmFtZXRlcnMpLCBtX3BhZ2VJRCk7CiAgICAgbV9wcm9jZXNz
LT5yZXNwb25zaXZlbmVzc1RpbWVyKCkuc3RhcnQoKTsKIH0KQEAgLTEyNTAsNyArMTI1Niw3IEBA
IFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6cmVsb2FkKE9wdGlvblNldDxX
ZWJDb3JlOjpSZWxvYWRPcHRpb24+IG9wCiAgICAgICAgIC8vIFdlIG1heSBub3QgaGF2ZSBhbiBl
eHRlbnNpb24geWV0IGlmIGJhY2svZm9yd2FyZCBsaXN0IHdhcyByZWluc3RhdGVkIGFmdGVyIGEg
V2ViUHJvY2VzcyBjcmFzaCBvciBhIGJyb3dzZXIgcmVsYXVuY2gKICAgICAgICAgYm9vbCBjcmVh
dGVkRXh0ZW5zaW9uID0gbWF5YmVJbml0aWFsaXplU2FuZGJveEV4dGVuc2lvbkhhbmRsZShVUkwo
VVJMKCksIHVybCksIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpOwogICAgICAgICBpZiAoY3JlYXRl
ZEV4dGVuc2lvbikKLSAgICAgICAgICAgIG1fcHJvY2Vzcy0+d2lsbEFjcXVpcmVVbml2ZXJzYWxG
aWxlUmVhZFNhbmRib3hFeHRlbnNpb24oKTsKKyAgICAgICAgICAgIHdpbGxBY3F1aXJlVW5pdmVy
c2FsRmlsZVJlYWRTYW5kYm94RXh0ZW5zaW9uKCk7CiAgICAgfQogCiAgICAgaWYgKCFpc1ZhbGlk
KCkpCkBAIC00NDUzLDYgKzQ0NTksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybUNs
aWVudFJlZGlyZWN0KGNvbnN0IFN0cmluZyYgc291cmNlVVJMU3RyaW5nLCBjb25zdAogICAgIFdl
YkZyYW1lUHJveHkqIGZyYW1lID0gbV9wcm9jZXNzLT53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBN
RVNTQUdFX0NIRUNLKGZyYW1lKTsKICAgICBNRVNTQUdFX0NIRUNLKGZyYW1lLT5wYWdlKCkgPT0g
dGhpcyk7CisgICAgTUVTU0FHRV9DSEVDS19VUkwoc291cmNlVVJMU3RyaW5nKTsgLy8gSW4gY2Fz
ZSBvZiBwcm9jZXNzLXN3YXAsIHRoZSBzb3VyY2UgVVJMIG1heSBoYXZlIGJlZW4gbG9hZGVkIGJ5
IHRoaXMgcGFnZSBpbiBhIHByZXZpb3VzIFdlYlByb2Nlc3MuCiAgICAgTUVTU0FHRV9DSEVDS19V
UkwoZGVzdGluYXRpb25VUkxTdHJpbmcpOwogCiAgICAgaWYgKGZyYW1lLT5pc01haW5GcmFtZSgp
KSB7CkBAIC01MTM3LDcgKzUxNDQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6YmFja0ZvcndhcmRH
b1RvSXRlbShjb25zdCBCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyJiBpdGVtSUQsCiAKICAgICBi
b29sIGNyZWF0ZWRFeHRlbnNpb24gPSBtYXliZUluaXRpYWxpemVTYW5kYm94RXh0ZW5zaW9uSGFu
ZGxlKFVSTChVUkwoKSwgaXRlbS0+dXJsKCkpLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsKICAg
ICBpZiAoY3JlYXRlZEV4dGVuc2lvbikKLSAgICAgICAgbV9wcm9jZXNzLT53aWxsQWNxdWlyZVVu
aXZlcnNhbEZpbGVSZWFkU2FuZGJveEV4dGVuc2lvbigpOworICAgICAgICB3aWxsQWNxdWlyZVVu
aXZlcnNhbEZpbGVSZWFkU2FuZGJveEV4dGVuc2lvbigpOwogICAgIG1fYmFja0ZvcndhcmRMaXN0
LT5nb1RvSXRlbSgqaXRlbSk7CiB9CiAKQEAgLTgyNDMsNiArODI1MCw0NSBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6dXBkYXRlQ3VycmVudE1vZGlmaWVyU3RhdGUoKQogI2VuZGlmCiB9CiAKK2Jvb2wg
V2ViUGFnZVByb3h5OjpjaGVja1VSTFJlY2VpdmVkRnJvbVdlYlByb2Nlc3MoY29uc3QgU3RyaW5n
JiB1cmxTdHJpbmcpCit7CisgICAgcmV0dXJuIGNoZWNrVVJMUmVjZWl2ZWRGcm9tV2ViUHJvY2Vz
cyhVUkwoVVJMKCksIHVybFN0cmluZykpOworfQorCitib29sIFdlYlBhZ2VQcm94eTo6Y2hlY2tV
UkxSZWNlaXZlZEZyb21XZWJQcm9jZXNzKGNvbnN0IFVSTCYgdXJsKQoreworICAgIC8vIEFueSBm
aWxlIFVSTCBpcyBhbHNvIE9LIGlmIHdlJ3ZlIGxvYWRlZCBhIGZpbGUgVVJMIHRocm91Z2ggQVBJ
IGJlZm9yZSwgZ3JhbnRpbmcgdW5pdmVyc2FsIHJlYWQgYWNjZXNzLgorICAgIGlmIChtX21heUhh
dmVVbml2ZXJzYWxGaWxlUmVhZFNhbmRib3hFeHRlbnNpb24pCisgICAgICAgIHJldHVybiB0cnVl
OworCisgICAgLy8gSW4gY2FzZSBvZiBwcm9jZXNzLXN3YXAsIHRoZSB1cmwgbWF5IGhhdmUgYmVl
biBsb2FkZWQgaW4gYSBwcmV2aW91c2x5IGFzc29jaWF0ZWQgV2ViUHJvY2Vzcy4KKyAgICBpZiAo
V2ViUHJvY2Vzc1Byb3h5OjpoYXNBc3N1bWVkUmVhZEFjY2Vzc1RvVVJMKG1fbG9jYWxQYXRoc1dp
dGhBc3N1bWVkUmVhZEFjY2VzcywgdXJsKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAv
LyBJZiB3ZSBsb2FkZWQgYSBzdHJpbmcgd2l0aCBhIGZpbGUgYmFzZSBVUkwgYmVmb3JlLCBsb2Fk
aW5nIHJlc291cmNlcyBmcm9tIHRoYXQgc3ViZGlyZWN0b3J5IGlzIGZpbmUuCisgICAgcmV0dXJu
IG1fcHJvY2Vzcy0+Y2hlY2tVUkxSZWNlaXZlZEZyb21XZWJQcm9jZXNzKHVybCk7Cit9CisKK3Zv
aWQgV2ViUGFnZVByb3h5Ojphc3N1bWVSZWFkQWNjZXNzVG9CYXNlVVJMKGNvbnN0IFN0cmluZyYg
dXJsU3RyaW5nKQoreworICAgIFVSTCB1cmwoVVJMKCksIHVybFN0cmluZyk7CisgICAgaWYgKCF1
cmwuaXNMb2NhbEZpbGUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gVGhlcmUncyBhIGNo
YW5jZSB0aGF0IHVybFN0cmluZyBkb2VzIG5vdCBwb2ludCB0byBhIGRpcmVjdG9yeS4KKyAgICAv
LyBHZXQgdXJsJ3MgYmFzZSBVUkwgdG8gYWRkIHRvIG1fbG9jYWxQYXRoc1dpdGhBc3N1bWVkUmVh
ZEFjY2Vzcy4KKyAgICBVUkwgYmFzZVVSTChVUkwoKSwgdXJsLmJhc2VBc1N0cmluZygpKTsKKyAg
ICBTdHJpbmcgcGF0aCA9IGJhc2VVUkwuZmlsZVN5c3RlbVBhdGgoKTsKKyAgICBpZiAocGF0aC5p
c051bGwoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgV1RGTG9nQWx3YXlzKCJDSFJJUzogV2Vi
UGFnZVByb3h5Ojphc3N1bWVSZWFkQWNjZXNzVG9CYXNlVVJMKCVzKSIsIHBhdGgudXRmOCgpLmRh
dGEoKSk7CisgICAgLy8gQ2xpZW50IGxvYWRzIGFuIGFsdGVybmF0ZSBzdHJpbmcuIFRoaXMgZG9l
c24ndCBncmFudCB1bml2ZXJzYWwgZmlsZSByZWFkLCBidXQgdGhlIHdlYiBwcm9jZXNzIGlzIGFz
c3VtZWQKKyAgICAvLyB0byBoYXZlIHJlYWQgYWNjZXNzIHRvIHRoaXMgZGlyZWN0b3J5IGFscmVh
ZHkuCisgICAgbV9sb2NhbFBhdGhzV2l0aEFzc3VtZWRSZWFkQWNjZXNzLmFkZChwYXRoKTsKKyAg
ICBtX3Byb2Nlc3MtPmFkZGxvY2FsUGF0aFdpdGhBc3N1bWVkUmVhZEFjY2VzcyhwYXRoKTsKK30K
KwogI2lmIEVOQUJMRShEQVRBX0RFVEVDVElPTikKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRldGVj
dERhdGFJbkFsbEZyYW1lcyhXZWJDb3JlOjpEYXRhRGV0ZWN0b3JUeXBlcyB0eXBlcywgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBEYXRhRGV0ZWN0aW9uUmVzdWx0Jik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDE5NTFi
MmU4NzE1YTJjMjMzZGUwMjUxOWNiMDQ1YTMwMjFmNGEwMjQuLmZmMjZlMDkwZDU0M2Q2M2ZiMjc3
ZDQzZDRkMWFmZWVhOWZlYThkYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCkBAIC0xMzg5LDYgKzEzODksOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHVwZGF0ZUN1cnJl
bnRNb2RpZmllclN0YXRlKCk7CiAKKyAgICB2b2lkIGFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwo
Y29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpOworCiBwcml2YXRlOgogICAgIFdlYlBhZ2VQcm94eShQ
YWdlQ2xpZW50JiwgV2ViUHJvY2Vzc1Byb3h5JiwgdWludDY0X3QgcGFnZUlELCBSZWY8QVBJOjpQ
YWdlQ29uZmlndXJhdGlvbj4mJik7CiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemUoKTsKQEAg
LTE3MTYsNiArMTcxOCw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIGJvb2wgbWF5YmVJbml0
aWFsaXplU2FuZGJveEV4dGVuc2lvbkhhbmRsZShjb25zdCBXZWJDb3JlOjpVUkwmLCBTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGUmKTsKKyAgICB2b2lkIHdpbGxBY3F1aXJlVW5pdmVyc2FsRmlsZVJl
YWRTYW5kYm94RXh0ZW5zaW9uKCk7CiAKICNpZiBVU0UoQVVUT01BVElDX1RFWFRfUkVQTEFDRU1F
TlQpCiAgICAgdm9pZCB0b2dnbGVTbWFydEluc2VydERlbGV0ZSgpOwpAQCAtMTg3MSw2ICsxODc0
LDkgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNz
KEFQSTo6TmF2aWdhdGlvbiYsIFJlZjxXZWJQcm9jZXNzUHJveHk+JiYpOwogCisgICAgYm9vbCBj
aGVja1VSTFJlY2VpdmVkRnJvbVdlYlByb2Nlc3MoY29uc3QgU3RyaW5nJiB1cmwpOworICAgIGJv
b2wgY2hlY2tVUkxSZWNlaXZlZEZyb21XZWJQcm9jZXNzKGNvbnN0IFdlYkNvcmU6OlVSTCYpOwor
CiAgICAgdm9pZCBzZXROZWVkc0ZvbnRBdHRyaWJ1dGVzKGJvb2wpOwogICAgIHZvaWQgdXBkYXRl
Rm9udEF0dHJpYnV0ZXNBZnRlckVkaXRvclN0YXRlQ2hhbmdlKCk7CiAKQEAgLTIyNzUsMTEgKzIy
ODEsMTMgQEAgcHJpdmF0ZToKICAgICBzdGQ6Om9wdGlvbmFsPFNwZWxsRG9jdW1lbnRUYWc+IG1f
c3BlbGxEb2N1bWVudFRhZzsKIAogICAgIHN0ZDo6b3B0aW9uYWw8TW9ub3RvbmljVGltZT4gbV9w
YWdlTG9hZFN0YXJ0OworICAgIEhhc2hTZXQ8U3RyaW5nPiBtX2xvY2FsUGF0aHNXaXRoQXNzdW1l
ZFJlYWRBY2Nlc3M7CiAKICAgICBSdW5Mb29wOjpUaW1lcjxXZWJQYWdlUHJveHk+IG1fcmVzZXRS
ZWNlbnRDcmFzaENvdW50VGltZXI7CiAgICAgdW5zaWduZWQgbV9yZWNlbnRDcmFzaENvdW50IHsg
MCB9OwogCiAgICAgYm9vbCBtX25lZWRzRm9udEF0dHJpYnV0ZXMgeyBmYWxzZSB9OworICAgIGJv
b2wgbV9tYXlIYXZlVW5pdmVyc2FsRmlsZVJlYWRTYW5kYm94RXh0ZW5zaW9uIHsgZmFsc2UgfTsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5jcHAKaW5kZXggN2I2MWVmMjUyM2QyYzliMTIwYWNjNjFjNWU0OWJhMTk1
NTQzYTQyYS4uMWI5NjRjOTRjN2IyZDllYjU2NDgwYzZkYjY2ZjY4ZGRiNjYzYjFkNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBAIC03OSw3ICs3OSw2
IEBACiAjZW5kaWYKIAogI2RlZmluZSBNRVNTQUdFX0NIRUNLKGFzc2VydGlvbikgTUVTU0FHRV9D
SEVDS19CQVNFKGFzc2VydGlvbiwgY29ubmVjdGlvbigpKQotI2RlZmluZSBNRVNTQUdFX0NIRUNL
X1VSTCh1cmwpIE1FU1NBR0VfQ0hFQ0tfQkFTRShjaGVja1VSTFJlY2VpdmVkRnJvbVdlYlByb2Nl
c3ModXJsKSwgY29ubmVjdGlvbigpKQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwpAQCAtNDk1LDI1ICs0OTQsMTIgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6
OmRpZERlc3Ryb3lXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eShXZWJVc2VyQ29udGVudENv
bnQKICAgICBtX3dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3hpZXMucmVtb3ZlKCZwcm94eSk7
CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojphc3N1bWVSZWFkQWNjZXNzVG9CYXNlVVJMKGNv
bnN0IFN0cmluZyYgdXJsU3RyaW5nKQordm9pZCBXZWJQcm9jZXNzUHJveHk6OmFkZGxvY2FsUGF0
aFdpdGhBc3N1bWVkUmVhZEFjY2Vzcyhjb25zdCBTdHJpbmcmIHBhdGgpCiB7Ci0gICAgVVJMIHVy
bChVUkwoKSwgdXJsU3RyaW5nKTsKLSAgICBpZiAoIXVybC5pc0xvY2FsRmlsZSgpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICAvLyBUaGVyZSdzIGEgY2hhbmNlIHRoYXQgdXJsU3RyaW5nIGRvZXMg
bm90IHBvaW50IHRvIGEgZGlyZWN0b3J5LgotICAgIC8vIEdldCB1cmwncyBiYXNlIFVSTCB0byBh
ZGQgdG8gbV9sb2NhbFBhdGhzV2l0aEFzc3VtZWRSZWFkQWNjZXNzLgotICAgIFVSTCBiYXNlVVJM
KFVSTCgpLCB1cmwuYmFzZUFzU3RyaW5nKCkpOwotICAgIFN0cmluZyBwYXRoID0gYmFzZVVSTC5m
aWxlU3lzdGVtUGF0aCgpOwotICAgIGlmIChwYXRoLmlzTnVsbCgpKQotICAgICAgICByZXR1cm47
Ci0gICAgCi0gICAgLy8gQ2xpZW50IGxvYWRzIGFuIGFsdGVybmF0ZSBzdHJpbmcuIFRoaXMgZG9l
c24ndCBncmFudCB1bml2ZXJzYWwgZmlsZSByZWFkLCBidXQgdGhlIHdlYiBwcm9jZXNzIGlzIGFz
c3VtZWQKLSAgICAvLyB0byBoYXZlIHJlYWQgYWNjZXNzIHRvIHRoaXMgZGlyZWN0b3J5IGFscmVh
ZHkuCiAgICAgbV9sb2NhbFBhdGhzV2l0aEFzc3VtZWRSZWFkQWNjZXNzLmFkZChwYXRoKTsKIH0K
IAotYm9vbCBXZWJQcm9jZXNzUHJveHk6Omhhc0Fzc3VtZWRSZWFkQWNjZXNzVG9VUkwoY29uc3Qg
VVJMJiB1cmwpIGNvbnN0Citib29sIFdlYlByb2Nlc3NQcm94eTo6aGFzQXNzdW1lZFJlYWRBY2Nl
c3NUb1VSTChjb25zdCBIYXNoU2V0PFN0cmluZz4mIGxvY2FsUGF0aHNXaXRoQXNzdW1lZFJlYWRB
Y2Nlc3MsIGNvbnN0IFVSTCYgdXJsKQogewogICAgIGlmICghdXJsLmlzTG9jYWxGaWxlKCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTUyOSwxNiArNTE1LDE2IEBAIGJvb2wgV2ViUHJvY2Vz
c1Byb3h5OjpoYXNBc3N1bWVkUmVhZEFjY2Vzc1RvVVJMKGNvbnN0IFVSTCYgdXJsKSBjb25zdAog
ICAgIGlmIChzdGQ6OmZpbmRfaWYocGxhdGZvcm1QYXRocy5iZWdpbigpLCBwbGF0Zm9ybVBhdGhz
RW5kLCBzdGFydHNXaXRoVVJMUGF0aCkgIT0gcGxhdGZvcm1QYXRoc0VuZCkKICAgICAgICAgcmV0
dXJuIHRydWU7CiAKLSAgICBhdXRvIGxvY2FsUGF0aHNFbmQgPSBtX2xvY2FsUGF0aHNXaXRoQXNz
dW1lZFJlYWRBY2Nlc3MuZW5kKCk7Ci0gICAgaWYgKHN0ZDo6ZmluZF9pZihtX2xvY2FsUGF0aHNX
aXRoQXNzdW1lZFJlYWRBY2Nlc3MuYmVnaW4oKSwgbG9jYWxQYXRoc0VuZCwgc3RhcnRzV2l0aFVS
TFBhdGgpICE9IGxvY2FsUGF0aHNFbmQpCisgICAgYXV0byBsb2NhbFBhdGhzRW5kID0gbG9jYWxQ
YXRoc1dpdGhBc3N1bWVkUmVhZEFjY2Vzcy5lbmQoKTsKKyAgICBpZiAoc3RkOjpmaW5kX2lmKGxv
Y2FsUGF0aHNXaXRoQXNzdW1lZFJlYWRBY2Nlc3MuYmVnaW4oKSwgbG9jYWxQYXRoc0VuZCwgc3Rh
cnRzV2l0aFVSTFBhdGgpICE9IGxvY2FsUGF0aHNFbmQpCiAgICAgICAgIHJldHVybiB0cnVlOwog
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFdlYlByb2Nlc3NQcm94eTo6Y2hlY2tVUkxS
ZWNlaXZlZEZyb21XZWJQcm9jZXNzKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKQorYm9vbCBXZWJQ
cm9jZXNzUHJveHk6Omhhc0Fzc3VtZWRSZWFkQWNjZXNzVG9VUkwoY29uc3QgVVJMJiB1cmwpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIGNoZWNrVVJMUmVjZWl2ZWRGcm9tV2ViUHJvY2VzcyhVUkwoVVJM
KCksIHVybFN0cmluZykpOworICAgIHJldHVybiBXZWJQcm9jZXNzUHJveHk6Omhhc0Fzc3VtZWRS
ZWFkQWNjZXNzVG9VUkwobV9sb2NhbFBhdGhzV2l0aEFzc3VtZWRSZWFkQWNjZXNzLCB1cmwpOwog
fQogCiBib29sIFdlYlByb2Nlc3NQcm94eTo6Y2hlY2tVUkxSZWNlaXZlZEZyb21XZWJQcm9jZXNz
KGNvbnN0IFVSTCYgdXJsKQpAQCAtMTQ0Niw0ICsxNDMyLDMgQEAgdm9pZCBXZWJQcm9jZXNzUHJv
eHk6OnJlbGVhc2VCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbkZvckZ1bGxzY3JlZW5JbnB1dCgpCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI3VuZGVmIE1FU1NBR0VfQ0hFQ0sKLSN1bmRlZiBNRVNT
QUdFX0NIRUNLX1VSTApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaApp
bmRleCBkYmMyMmE1YTljOWEyMWJhYzNkZGMyZmEyZjRiZjhjMDBkNGJiNWQxLi45MWIwMjZkMjNl
ZTgzMzUzOTYwYzhlNGNhMjgwYjI3NWVmMmNiMmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkuaApAQCAtMTUwLDEwICsxNTAsMTAgQEAgcHVibGljOgogICAgIHZv
aWQgdXBkYXRlVGV4dENoZWNrZXJTdGF0ZSgpOwogCiAgICAgdm9pZCB3aWxsQWNxdWlyZVVuaXZl
cnNhbEZpbGVSZWFkU2FuZGJveEV4dGVuc2lvbigpIHsgbV9tYXlIYXZlVW5pdmVyc2FsRmlsZVJl
YWRTYW5kYm94RXh0ZW5zaW9uID0gdHJ1ZTsgfQotICAgIHZvaWQgYXNzdW1lUmVhZEFjY2Vzc1Rv
QmFzZVVSTChjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIGFkZGxvY2FsUGF0aFdpdGhBc3N1bWVk
UmVhZEFjY2Vzcyhjb25zdCBTdHJpbmcmKTsKICAgICBib29sIGhhc0Fzc3VtZWRSZWFkQWNjZXNz
VG9VUkwoY29uc3QgV2ViQ29yZTo6VVJMJikgY29uc3Q7CisgICAgc3RhdGljIGJvb2wgaGFzQXNz
dW1lZFJlYWRBY2Nlc3NUb1VSTChjb25zdCBIYXNoU2V0PFN0cmluZz4mIGxvY2FsUGF0aHNXaXRo
QXNzdW1lZFJlYWRBY2Nlc3MsIGNvbnN0IFdlYkNvcmU6OlVSTCYpOwogCi0gICAgYm9vbCBjaGVj
a1VSTFJlY2VpdmVkRnJvbVdlYlByb2Nlc3MoY29uc3QgU3RyaW5nJik7CiAgICAgYm9vbCBjaGVj
a1VSTFJlY2VpdmVkRnJvbVdlYlByb2Nlc3MoY29uc3QgV2ViQ29yZTo6VVJMJik7CiAKICAgICBz
dGF0aWMgYm9vbCBmdWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVkKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQppbmRleCBmZmZjNWUwOGExNjcwYTBj
YWYxNTNlYzcwZmE3MjAyMTcyMGU1YjdhLi5iNjhiOWM3OTA0MTYxYjRjYmVlNDEwMTIwNDgzYTlm
N2MwN2ZiNTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFn
ZVByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJv
eHlNYWMubW0KQEAgLTY1LDcgKzY1LDcgQEAKICNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0NvbmNh
dGVuYXRlLmg+CiAKICNkZWZpbmUgTUVTU0FHRV9DSEVDSyhhc3NlcnRpb24pIE1FU1NBR0VfQ0hF
Q0tfQkFTRShhc3NlcnRpb24sIHByb2Nlc3MoKS5jb25uZWN0aW9uKCkpCi0jZGVmaW5lIE1FU1NB
R0VfQ0hFQ0tfVVJMKHVybCkgTUVTU0FHRV9DSEVDS19CQVNFKG1fcHJvY2Vzcy0+Y2hlY2tVUkxS
ZWNlaXZlZEZyb21XZWJQcm9jZXNzKHVybCksIG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigpKQorI2Rl
ZmluZSBNRVNTQUdFX0NIRUNLX1VSTCh1cmwpIE1FU1NBR0VfQ0hFQ0tfQkFTRShjaGVja1VSTFJl
Y2VpdmVkRnJvbVdlYlByb2Nlc3ModXJsKSwgbV9wcm9jZXNzLT5jb25uZWN0aW9uKCkpCiAKIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>355736</attachid>
            <date>2018-11-27 08:46:36 -0800</date>
            <delta_ts>2018-11-27 09:33:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191982-20181127084634.patch</filename>
            <type>text/plain</type>
            <size>18739</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4NTUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDY1NWRmNjVhZjY5MTA4ODI4
N2VmOTI5ODUxODdmNjFkNTM0Y2E4OGMuLjRmNmNkYTAyMjAxYTY2OWNiMzg4YzI1NjNiMjYxYjQ5
NjBjNmZjZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDcgQEAKKzIwMTgtMTEtMjcgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBSZXN0b3JlIE1FU1NBR0VfQ0hFQ0tf
VVJMKCkgc2VjdXJpdHkgY2hlY2sgb24gc291cmNlVVJMIGluIGRpZFBlcmZvcm1DbGllbnRSZWRp
cmVjdCgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTE5ODIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ2MjU4MDU0PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBNRVNTQUdFX0NIRUNLX1VS
TCgpIG1hY3JvIGluIFdlYlBhZ2VQcm94eSBzbyB0aGF0IGl0IGJlY29tZXMgYXdhcmUgb2YgcHJv
Y2Vzcy1zd2FwcGluZworICAgICAgICBvbiBuYXZpZ2F0aW9uLiBUbyBzdXBwb3J0IHRoaXMsIHNv
bWUgb2YgdGhlIGRhdGEgdGhhdCBpcyBjdXJyZW50bHkgb24gV2ViUHJvY2Vzc1Byb3h5IGlzIG5v
dworICAgICAgICBhbHNvIG9uIHRoZSBXZWJQYWdlUHJveHk6IG1fbWF5SGF2ZVVuaXZlcnNhbEZp
bGVSZWFkU2FuZGJveEV4dGVuc2lvbiAvCisgICAgICAgIG1fbG9jYWxQYXRoc1dpdGhBc3N1bWVk
UmVhZEFjY2Vzcy4gV2UgZmlyc3QgY2hlY2sgdGhlIGRhdGEgb24gdGhlIFdlYlBhZ2VQcm94eSBh
bmQgdGhlbgorICAgICAgICBmYWxsYmFjayB0byBjaGVja2luZyB0aGUgZGF0YSBvbiB0aGUgV2Vi
UHJvY2Vzc1Byb3h5IGN1cnJlbnRseSBhc3NvY2lhdGVkIHdpdGggdGhlIHBhZ2UuCisKKyAgICAg
ICAgQWRkIGJhY2sgTUVTU0FHRV9DSEVDS19VUkwoKSBzZWN1cml0eSBjaGVjayBvbiBzb3VyY2VV
UkwgaW4gZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0KCkKKyAgICAgICAgd2hpY2ggd2FzIGRyb3Bw
ZWQgaW4gcjIzODM2OCBkdWUgdG8gbGFjayBvZiBQU09OIHN1cHBvcnQuCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6Y3JlYXRlU2FuZGJveEV4dGVuc2lvbnNJZk5lZWRlZCk6CisgICAgICAgICog
VUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OnNldFBhc3RlYm9hcmRVUkwpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVdlYkluc3BlY3RvclByb3h5OjpjcmVhdGVGcm9udGVuZFBhZ2VBbmRXaW5kb3cpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYkluc3BlY3RvclByb3h5OjpjcmVhdGVGcm9udGVuZFBhZ2UpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Ondp
bGxBY3F1aXJlVW5pdmVyc2FsRmlsZVJlYWRTYW5kYm94RXh0ZW5zaW9uKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5Ojpsb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5Ojpsb2FkRmlsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6bG9hZERhdGFXaXRoTmF2aWdhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6bG9hZEFsdGVybmF0ZUhUTUwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OnJlbG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybUNs
aWVudFJlZGlyZWN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpiYWNrRm9yd2Fy
ZEdvVG9JdGVtKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjaGVja1VSTFJlY2Vp
dmVkRnJvbVdlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmFzc3Vt
ZVJlYWRBY2Nlc3NUb0Jhc2VVUkwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Byb3h5OjphZGRsb2NhbFBhdGhXaXRoQXNzdW1lZFJlYWRBY2Nlc3Mp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6Omhhc0Fzc3VtZWRSZWFkQWNjZXNz
VG9VUkwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6Omhhc0Fzc3VtZWRSZWFk
QWNjZXNzVG9VUkwgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbToKKwogMjAxOC0x
MS0yNyAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBX
ZWJLaXQuQWRkQW5kUmVtb3ZlRGF0YURldGVjdG9ycyBoaXRzIGEgZGVidWcgYXNzZXJ0aW9uIGFm
dGVyIHIyMzg1MTUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dl
YlBhZ2VQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFn
ZVByb3h5Q29jb2EubW0KaW5kZXggZjU2ODc1ZGZmM2ExY2M0NWViZWU2MTcyMTVjZTk1NzIzZjUz
ZGU0ZS4uZjc4MDlhNDVjMTIzNWQwNTgzN2M2NmVmYjBkNjJlMjYxYmM5Mzg3NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KQEAg
LTEyMCw3ICsxMjAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y3JlYXRlU2FuZGJveEV4dGVuc2lv
bnNJZk5lZWRlZChjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZXMsCiAgICAgICAgIEJPT0wgaXNE
aXJlY3Rvcnk7CiAgICAgICAgIGlmIChbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZp
bGVFeGlzdHNBdFBhdGg6ZmlsZXNbMF0gaXNEaXJlY3Rvcnk6JmlzRGlyZWN0b3J5XSAmJiAhaXNE
aXJlY3RvcnkpIHsKICAgICAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZSgi
LyIsIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRPbmx5LCBmaWxlUmVhZEhhbmRsZSk7Ci0g
ICAgICAgICAgICBwcm9jZXNzKCkud2lsbEFjcXVpcmVVbml2ZXJzYWxGaWxlUmVhZFNhbmRib3hF
eHRlbnNpb24oKTsKKyAgICAgICAgICAgIHdpbGxBY3F1aXJlVW5pdmVyc2FsRmlsZVJlYWRTYW5k
Ym94RXh0ZW5zaW9uKCk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0KaW5kZXgg
NTUyYTEyYmMyNzE0ZjcyMWNmN2E4Njc1YzFlODMyYzM2MGIwMGI0Yy4uOGEyZDAzYzNiYzIzYzAz
MjFkZDU5ZmRhNmI2MTU5MmI4MzIyNGY0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0KQEAgLTEzMSw3ICsx
MzEsNyBAQCB2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6c2V0UGFzdGVib2FyZFVSTChJUEM6OkNv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFBhcwogICAgICAgICBpZiAoIXdlYlByb2Nlc3NQ
cm94eS0+aGFzQ29ubmVjdGlvbihjb25uZWN0aW9uKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwog
Ci0gICAgICAgIGlmICghd2ViUHJvY2Vzc1Byb3h5LT5jaGVja1VSTFJlY2VpdmVkRnJvbVdlYlBy
b2Nlc3MocGFzdGVib2FyZFVSTC51cmwuc3RyaW5nKCkpKSB7CisgICAgICAgIGlmICghd2ViUHJv
Y2Vzc1Byb3h5LT5jaGVja1VSTFJlY2VpdmVkRnJvbVdlYlByb2Nlc3MocGFzdGVib2FyZFVSTC51
cmwpKSB7CiAgICAgICAgICAgICBuZXdDaGFuZ2VDb3VudCA9IDA7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90
ZVdlYkluc3BlY3RvclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZVdl
Ykluc3BlY3RvclByb3h5LmNwcAppbmRleCA5MjdkYTFiNjM5ZTIxMWMxOTA2YzY1ZTEyNTMwY2U0
N2MxNzE1YjA2Li4zODBiMTNjOTA5ZTNlZWQ2Y2I0YWQ5NTI4ZGFkMDNmYjFjNGM1MGE0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHku
Y3BwCkBAIC0xNDgsNyArMTQ4LDcgQEAgdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6Y3Jl
YXRlRnJvbnRlbmRQYWdlQW5kV2luZG93KCkKICAgICB0cmFja0luc3BlY3RvclBhZ2UobV9pbnNw
ZWN0b3JQYWdlKTsKIAogICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLmFkZE1lc3NhZ2VS
ZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSwgKnRoaXMpOwotICAgIG1faW5zcGVj
dG9yUGFnZS0+cHJvY2VzcygpLmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwoV2ViSW5zcGVjdG9y
UHJveHk6Omluc3BlY3RvckJhc2VVUkwoKSk7CisgICAgbV9pbnNwZWN0b3JQYWdlLT5hc3N1bWVS
ZWFkQWNjZXNzVG9CYXNlVVJMKFdlYkluc3BlY3RvclByb3h5OjppbnNwZWN0b3JCYXNlVVJMKCkp
OwogfQogCiB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpjbG9zZUZyb250ZW5kUGFnZUFu
ZFdpbmRvdygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJJbnNwZWN0
b3JQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5j
cHAKaW5kZXggNTg5YmJjZTc2NjJjOGJjNTJkNmZlZDJiZmI3NmJjYzU4NWJhMmRkYi4uYjUxNzY5
NzVjZTUwNDVhYzJkYmFiOGQzOTQ1MTExNDEwYWVlZDU2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNwcApAQCAtMzc2LDcgKzM3Niw3IEBAIHZvaWQg
V2ViSW5zcGVjdG9yUHJveHk6OmNyZWF0ZUZyb250ZW5kUGFnZSgpCiAgICAgdHJhY2tJbnNwZWN0
b3JQYWdlKG1faW5zcGVjdG9yUGFnZSk7CiAKICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3Mo
KS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCksICp0aGlzKTsKLSAgICBt
X2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5hc3N1bWVSZWFkQWNjZXNzVG9CYXNlVVJMKFdlYklu
c3BlY3RvclByb3h5OjppbnNwZWN0b3JCYXNlVVJMKCkpOworICAgIG1faW5zcGVjdG9yUGFnZS0+
YXNzdW1lUmVhZEFjY2Vzc1RvQmFzZVVSTChXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdG9yQmFz
ZVVSTCgpKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6b3BlbkxvY2FsSW5zcGVjdG9y
RnJvbnRlbmQoYm9vbCBjYW5BdHRhY2gsIGJvb2wgdW5kZXJUZXN0KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggMDgyN2IwMjI3M2Y5MDZlNzNjN2VmZTE5OTk3
NWJhYTlkYzZjYzZmMC4uOTMwMzBhY2FmOGEwODQ3MDJjMjc5N2MyMjQ0ZDdjMzZhOWNlMDllYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0yNDEsNyArMjQx
LDcgQEAKICNkZWZpbmUgTUVSR0VfV0hFRUxfRVZFTlRTIDEKIAogI2RlZmluZSBNRVNTQUdFX0NI
RUNLKGFzc2VydGlvbikgTUVTU0FHRV9DSEVDS19CQVNFKGFzc2VydGlvbiwgbV9wcm9jZXNzLT5j
b25uZWN0aW9uKCkpCi0jZGVmaW5lIE1FU1NBR0VfQ0hFQ0tfVVJMKHVybCkgTUVTU0FHRV9DSEVD
S19CQVNFKG1fcHJvY2Vzcy0+Y2hlY2tVUkxSZWNlaXZlZEZyb21XZWJQcm9jZXNzKHVybCksIG1f
cHJvY2Vzcy0+Y29ubmVjdGlvbigpKQorI2RlZmluZSBNRVNTQUdFX0NIRUNLX1VSTCh1cmwpIE1F
U1NBR0VfQ0hFQ0tfQkFTRShjaGVja1VSTFJlY2VpdmVkRnJvbVdlYlByb2Nlc3ModXJsKSwgbV9w
cm9jZXNzLT5jb25uZWN0aW9uKCkpCiAKICNkZWZpbmUgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChj
aGFubmVsLCAuLi4pIFJFTEVBU0VfTE9HX0lGKGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBj
aGFubmVsLCBfX1ZBX0FSR1NfXykKIApAQCAtMTAzMyw2ICsxMDMzLDEyIEBAIGJvb2wgV2ViUGFn
ZVByb3h5OjptYXliZUluaXRpYWxpemVTYW5kYm94RXh0ZW5zaW9uSGFuZGxlKGNvbnN0IFVSTCYg
dXJsLCBTYW5kYm94CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5Ojp3
aWxsQWNxdWlyZVVuaXZlcnNhbEZpbGVSZWFkU2FuZGJveEV4dGVuc2lvbigpCit7CisgICAgbV9t
YXlIYXZlVW5pdmVyc2FsRmlsZVJlYWRTYW5kYm94RXh0ZW5zaW9uID0gdHJ1ZTsKKyAgICBtX3By
b2Nlc3MtPndpbGxBY3F1aXJlVW5pdmVyc2FsRmlsZVJlYWRTYW5kYm94RXh0ZW5zaW9uKCk7Cit9
CisKICNpZiAhUExBVEZPUk0oQ09DT0EpCiB2b2lkIFdlYlBhZ2VQcm94eTo6YWRkUGxhdGZvcm1M
b2FkUGFyYW1ldGVycyhMb2FkUGFyYW1ldGVycyYpCiB7CkBAIC0xMDcyLDcgKzEwNzgsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6bG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvbihBUEk6Ok5hdmlnYXRp
b24mIG5hdmlnYXRpb24sIFJlc291cgogICAgIGxvYWRQYXJhbWV0ZXJzLmNsaWVudFJlZGlyZWN0
U291cmNlRm9ySGlzdG9yeSA9IG5hdmlnYXRpb24uY2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0
b3J5KCk7CiAgICAgYm9vbCBjcmVhdGVkRXh0ZW5zaW9uID0gbWF5YmVJbml0aWFsaXplU2FuZGJv
eEV4dGVuc2lvbkhhbmRsZSh1cmwsIGxvYWRQYXJhbWV0ZXJzLnNhbmRib3hFeHRlbnNpb25IYW5k
bGUpOwogICAgIGlmIChjcmVhdGVkRXh0ZW5zaW9uKQotICAgICAgICBtX3Byb2Nlc3MtPndpbGxB
Y3F1aXJlVW5pdmVyc2FsRmlsZVJlYWRTYW5kYm94RXh0ZW5zaW9uKCk7CisgICAgICAgIHdpbGxB
Y3F1aXJlVW5pdmVyc2FsRmlsZVJlYWRTYW5kYm94RXh0ZW5zaW9uKCk7CiAgICAgYWRkUGxhdGZv
cm1Mb2FkUGFyYW1ldGVycyhsb2FkUGFyYW1ldGVycyk7CiAKICAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRSZXF1ZXN0KGxvYWRQYXJhbWV0ZXJzKSwgbV9wYWdlSUQp
OwpAQCAtMTExNiw3ICsxMTIyLDcgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVBy
b3h5Ojpsb2FkRmlsZShjb25zdCBTdHJpbmcmIGZpbGVVUkxTdHJpbmcsIGNvbnMKICAgICBTYW5k
Ym94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUocmVzb3VyY2VEaXJlY3RvcnlQYXRoLCBTYW5kYm94
RXh0ZW5zaW9uOjpUeXBlOjpSZWFkT25seSwgbG9hZFBhcmFtZXRlcnMuc2FuZGJveEV4dGVuc2lv
bkhhbmRsZSk7CiAgICAgYWRkUGxhdGZvcm1Mb2FkUGFyYW1ldGVycyhsb2FkUGFyYW1ldGVycyk7
CiAKLSAgICBtX3Byb2Nlc3MtPmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwocmVzb3VyY2VEaXJl
Y3RvcnlVUkwpOworICAgIGFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwocmVzb3VyY2VEaXJlY3Rv
cnlVUkwpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFJlcXVl
c3QobG9hZFBhcmFtZXRlcnMpLCBtX3BhZ2VJRCk7CiAgICAgbV9wcm9jZXNzLT5yZXNwb25zaXZl
bmVzc1RpbWVyKCkuc3RhcnQoKTsKIApAQCAtMTE1Myw3ICsxMTU5LDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmxvYWREYXRhV2l0aE5hdmlnYXRpb24oQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9u
LCBjb25zdCBJUEMKICAgICBsb2FkUGFyYW1ldGVycy51c2VyRGF0YSA9IFVzZXJEYXRhKHByb2Nl
c3MoKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhKS5nZXQoKSk7CiAgICAgYWRk
UGxhdGZvcm1Mb2FkUGFyYW1ldGVycyhsb2FkUGFyYW1ldGVycyk7CiAKLSAgICBtX3Byb2Nlc3Mt
PmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwoYmFzZVVSTCk7CisgICAgYXNzdW1lUmVhZEFjY2Vz
c1RvQmFzZVVSTChiYXNlVVJMKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkxvYWREYXRhKGxvYWRQYXJhbWV0ZXJzKSwgbV9wYWdlSUQpOwogICAgIG1fcHJvY2Vzcy0+
cmVzcG9uc2l2ZW5lc3NUaW1lcigpLnN0YXJ0KCk7CiB9CkBAIC0xMTkyLDggKzExOTgsOCBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6bG9hZEFsdGVybmF0ZUhUTUwoY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJiBodG1sRGF0YSwgY29uc3QgUwogICAgIGxvYWRQYXJhbWV0ZXJzLmZvclNhZmVCcm93c2lu
ZyA9IGZvclNhZmVCcm93c2luZzsKICAgICBhZGRQbGF0Zm9ybUxvYWRQYXJhbWV0ZXJzKGxvYWRQ
YXJhbWV0ZXJzKTsKIAotICAgIG1fcHJvY2Vzcy0+YXNzdW1lUmVhZEFjY2Vzc1RvQmFzZVVSTChi
YXNlVVJMKTsKLSAgICBtX3Byb2Nlc3MtPmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwodW5yZWFj
aGFibGVVUkwpOworICAgIGFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwoYmFzZVVSTCk7CisgICAg
YXNzdW1lUmVhZEFjY2Vzc1RvQmFzZVVSTCh1bnJlYWNoYWJsZVVSTCk7CiAgICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkQWx0ZXJuYXRlSFRNTChsb2FkUGFyYW1ldGVy
cyksIG1fcGFnZUlEKTsKICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS5zdGFy
dCgpOwogfQpAQCAtMTI1Nyw3ICsxMjYzLDcgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2Vi
UGFnZVByb3h5OjpyZWxvYWQoT3B0aW9uU2V0PFdlYkNvcmU6OlJlbG9hZE9wdGlvbj4gb3AKICAg
ICAgICAgLy8gV2UgbWF5IG5vdCBoYXZlIGFuIGV4dGVuc2lvbiB5ZXQgaWYgYmFjay9mb3J3YXJk
IGxpc3Qgd2FzIHJlaW5zdGF0ZWQgYWZ0ZXIgYSBXZWJQcm9jZXNzIGNyYXNoIG9yIGEgYnJvd3Nl
ciByZWxhdW5jaAogICAgICAgICBib29sIGNyZWF0ZWRFeHRlbnNpb24gPSBtYXliZUluaXRpYWxp
emVTYW5kYm94RXh0ZW5zaW9uSGFuZGxlKFVSTChVUkwoKSwgdXJsKSwgc2FuZGJveEV4dGVuc2lv
bkhhbmRsZSk7CiAgICAgICAgIGlmIChjcmVhdGVkRXh0ZW5zaW9uKQotICAgICAgICAgICAgbV9w
cm9jZXNzLT53aWxsQWNxdWlyZVVuaXZlcnNhbEZpbGVSZWFkU2FuZGJveEV4dGVuc2lvbigpOwor
ICAgICAgICAgICAgd2lsbEFjcXVpcmVVbml2ZXJzYWxGaWxlUmVhZFNhbmRib3hFeHRlbnNpb24o
KTsKICAgICB9CiAKICAgICBpZiAoIWlzVmFsaWQoKSkKQEAgLTQ0NjAsNiArNDQ2Niw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpkaWRQZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgU3RyaW5nJiBz
b3VyY2VVUkxTdHJpbmcsIGNvbnN0CiAgICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBtX3Byb2Nl
c3MtPndlYkZyYW1lKGZyYW1lSUQpOwogICAgIE1FU1NBR0VfQ0hFQ0soZnJhbWUpOwogICAgIE1F
U1NBR0VfQ0hFQ0soZnJhbWUtPnBhZ2UoKSA9PSB0aGlzKTsKKyAgICBNRVNTQUdFX0NIRUNLX1VS
TChzb3VyY2VVUkxTdHJpbmcpOwogICAgIE1FU1NBR0VfQ0hFQ0tfVVJMKGRlc3RpbmF0aW9uVVJM
U3RyaW5nKTsKIAogICAgIGlmIChmcmFtZS0+aXNNYWluRnJhbWUoKSkgewpAQCAtNTE0NCw3ICs1
MTUxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmJhY2tGb3J3YXJkR29Ub0l0ZW0oY29uc3QgQmFj
a0ZvcndhcmRJdGVtSWRlbnRpZmllciYgaXRlbUlELAogCiAgICAgYm9vbCBjcmVhdGVkRXh0ZW5z
aW9uID0gbWF5YmVJbml0aWFsaXplU2FuZGJveEV4dGVuc2lvbkhhbmRsZShVUkwoVVJMKCksIGl0
ZW0tPnVybCgpKSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7CiAgICAgaWYgKGNyZWF0ZWRFeHRl
bnNpb24pCi0gICAgICAgIG1fcHJvY2Vzcy0+d2lsbEFjcXVpcmVVbml2ZXJzYWxGaWxlUmVhZFNh
bmRib3hFeHRlbnNpb24oKTsKKyAgICAgICAgd2lsbEFjcXVpcmVVbml2ZXJzYWxGaWxlUmVhZFNh
bmRib3hFeHRlbnNpb24oKTsKICAgICBtX2JhY2tGb3J3YXJkTGlzdC0+Z29Ub0l0ZW0oKml0ZW0p
OwogfQogCkBAIC04MjUwLDYgKzgyNTcsNDQgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZUN1
cnJlbnRNb2RpZmllclN0YXRlKCkKICNlbmRpZgogfQogCitib29sIFdlYlBhZ2VQcm94eTo6Y2hl
Y2tVUkxSZWNlaXZlZEZyb21XZWJQcm9jZXNzKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKQorewor
ICAgIHJldHVybiBjaGVja1VSTFJlY2VpdmVkRnJvbVdlYlByb2Nlc3MoVVJMKFVSTCgpLCB1cmxT
dHJpbmcpKTsKK30KKworYm9vbCBXZWJQYWdlUHJveHk6OmNoZWNrVVJMUmVjZWl2ZWRGcm9tV2Vi
UHJvY2Vzcyhjb25zdCBVUkwmIHVybCkKK3sKKyAgICAvLyBBbnkgZmlsZSBVUkwgaXMgYWxzbyBP
SyBpZiB3ZSd2ZSBsb2FkZWQgYSBmaWxlIFVSTCB0aHJvdWdoIEFQSSBiZWZvcmUsIGdyYW50aW5n
IHVuaXZlcnNhbCByZWFkIGFjY2Vzcy4KKyAgICBpZiAobV9tYXlIYXZlVW5pdmVyc2FsRmlsZVJl
YWRTYW5kYm94RXh0ZW5zaW9uKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIC8vIEluIGNh
c2Ugb2YgcHJvY2Vzcy1zd2FwLCB0aGUgdXJsIG1heSBoYXZlIGJlZW4gbG9hZGVkIGluIGEgcHJl
dmlvdXNseSBhc3NvY2lhdGVkIFdlYlByb2Nlc3MuCisgICAgaWYgKFdlYlByb2Nlc3NQcm94eTo6
aGFzQXNzdW1lZFJlYWRBY2Nlc3NUb1VSTChtX2xvY2FsUGF0aHNXaXRoQXNzdW1lZFJlYWRBY2Nl
c3MsIHVybCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgLy8gSWYgd2UgbG9hZGVkIGEg
c3RyaW5nIHdpdGggYSBmaWxlIGJhc2UgVVJMIGJlZm9yZSwgbG9hZGluZyByZXNvdXJjZXMgZnJv
bSB0aGF0IHN1YmRpcmVjdG9yeSBpcyBmaW5lLgorICAgIHJldHVybiBtX3Byb2Nlc3MtPmNoZWNr
VVJMUmVjZWl2ZWRGcm9tV2ViUHJvY2Vzcyh1cmwpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6
YXNzdW1lUmVhZEFjY2Vzc1RvQmFzZVVSTChjb25zdCBTdHJpbmcmIHVybFN0cmluZykKK3sKKyAg
ICBVUkwgdXJsKFVSTCgpLCB1cmxTdHJpbmcpOworICAgIGlmICghdXJsLmlzTG9jYWxGaWxlKCkp
CisgICAgICAgIHJldHVybjsKKworICAgIC8vIFRoZXJlJ3MgYSBjaGFuY2UgdGhhdCB1cmxTdHJp
bmcgZG9lcyBub3QgcG9pbnQgdG8gYSBkaXJlY3RvcnkuCisgICAgLy8gR2V0IHVybCdzIGJhc2Ug
VVJMIHRvIGFkZCB0byBtX2xvY2FsUGF0aHNXaXRoQXNzdW1lZFJlYWRBY2Nlc3MuCisgICAgVVJM
IGJhc2VVUkwoVVJMKCksIHVybC5iYXNlQXNTdHJpbmcoKSk7CisgICAgU3RyaW5nIHBhdGggPSBi
YXNlVVJMLmZpbGVTeXN0ZW1QYXRoKCk7CisgICAgaWYgKHBhdGguaXNOdWxsKCkpCisgICAgICAg
IHJldHVybjsKKworICAgIC8vIENsaWVudCBsb2FkcyBhbiBhbHRlcm5hdGUgc3RyaW5nLiBUaGlz
IGRvZXNuJ3QgZ3JhbnQgdW5pdmVyc2FsIGZpbGUgcmVhZCwgYnV0IHRoZSB3ZWIgcHJvY2VzcyBp
cyBhc3N1bWVkCisgICAgLy8gdG8gaGF2ZSByZWFkIGFjY2VzcyB0byB0aGlzIGRpcmVjdG9yeSBh
bHJlYWR5LgorICAgIG1fbG9jYWxQYXRoc1dpdGhBc3N1bWVkUmVhZEFjY2Vzcy5hZGQocGF0aCk7
CisgICAgbV9wcm9jZXNzLT5hZGRsb2NhbFBhdGhXaXRoQXNzdW1lZFJlYWRBY2Nlc3MocGF0aCk7
Cit9CisKICNpZiBFTkFCTEUoREFUQV9ERVRFQ1RJT04pCiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpk
ZXRlY3REYXRhSW5BbGxGcmFtZXMoV2ViQ29yZTo6RGF0YURldGVjdG9yVHlwZXMgdHlwZXMsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgRGF0YURldGVjdGlvblJlc3VsdCYpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBj
MTIyYWY1M2Y1MDMyZmExNWFhMWNiNTdjNDcwZmE5MzcxNDI3Y2JjLi5lNzk5ZWJiNGM3M2I1MGU1
YWZhYmIyOWQ4NTAwMjJlMWI5Y2RlNGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaApAQCAtMTM5NSw2ICsxMzk1LDggQEAgcHVibGljOgogICAgIEVkaXRhYmxlSW1hZ2VD
b250cm9sbGVyJiBlZGl0YWJsZUltYWdlQ29udHJvbGxlcigpIHsgcmV0dXJuICptX2VkaXRhYmxl
SW1hZ2VDb250cm9sbGVyOyB9CiAjZW5kaWYKIAorICAgIHZvaWQgYXNzdW1lUmVhZEFjY2Vzc1Rv
QmFzZVVSTChjb25zdCBTdHJpbmcmIHVybFN0cmluZyk7CisKIHByaXZhdGU6CiAgICAgV2ViUGFn
ZVByb3h5KFBhZ2VDbGllbnQmLCBXZWJQcm9jZXNzUHJveHkmLCB1aW50NjRfdCBwYWdlSUQsIFJl
ZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmKTsKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6
ZSgpOwpAQCAtMTcyMiw2ICsxNzI0LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgYm9vbCBt
YXliZUluaXRpYWxpemVTYW5kYm94RXh0ZW5zaW9uSGFuZGxlKGNvbnN0IFdlYkNvcmU6OlVSTCYs
IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYpOworICAgIHZvaWQgd2lsbEFjcXVpcmVVbml2ZXJz
YWxGaWxlUmVhZFNhbmRib3hFeHRlbnNpb24oKTsKIAogI2lmIFVTRShBVVRPTUFUSUNfVEVYVF9S
RVBMQUNFTUVOVCkKICAgICB2b2lkIHRvZ2dsZVNtYXJ0SW5zZXJ0RGVsZXRlKCk7CkBAIC0xODc2
LDYgKzE4NzksOSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBjb250aW51ZU5hdmlnYXRpb25Jbk5l
d1Byb2Nlc3MoQVBJOjpOYXZpZ2F0aW9uJiwgUmVmPFdlYlByb2Nlc3NQcm94eT4mJik7CiAKKyAg
ICBib29sIGNoZWNrVVJMUmVjZWl2ZWRGcm9tV2ViUHJvY2Vzcyhjb25zdCBTdHJpbmcmIHVybCk7
CisgICAgYm9vbCBjaGVja1VSTFJlY2VpdmVkRnJvbVdlYlByb2Nlc3MoY29uc3QgV2ViQ29yZTo6
VVJMJik7CisKICAgICB2b2lkIHNldE5lZWRzRm9udEF0dHJpYnV0ZXMoYm9vbCk7CiAgICAgdm9p
ZCB1cGRhdGVGb250QXR0cmlidXRlc0FmdGVyRWRpdG9yU3RhdGVDaGFuZ2UoKTsKIApAQCAtMjI4
MCwxMSArMjI4NiwxMyBAQCBwcml2YXRlOgogICAgIHN0ZDo6b3B0aW9uYWw8U3BlbGxEb2N1bWVu
dFRhZz4gbV9zcGVsbERvY3VtZW50VGFnOwogCiAgICAgc3RkOjpvcHRpb25hbDxNb25vdG9uaWNU
aW1lPiBtX3BhZ2VMb2FkU3RhcnQ7CisgICAgSGFzaFNldDxTdHJpbmc+IG1fbG9jYWxQYXRoc1dp
dGhBc3N1bWVkUmVhZEFjY2VzczsKIAogICAgIFJ1bkxvb3A6OlRpbWVyPFdlYlBhZ2VQcm94eT4g
bV9yZXNldFJlY2VudENyYXNoQ291bnRUaW1lcjsKICAgICB1bnNpZ25lZCBtX3JlY2VudENyYXNo
Q291bnQgeyAwIH07CiAKICAgICBib29sIG1fbmVlZHNGb250QXR0cmlidXRlcyB7IGZhbHNlIH07
CisgICAgYm9vbCBtX21heUhhdmVVbml2ZXJzYWxGaWxlUmVhZFNhbmRib3hFeHRlbnNpb24geyBm
YWxzZSB9OwogCiAjaWYgSEFWRShQRU5DSUxLSVQpCiAgICAgc3RkOjp1bmlxdWVfcHRyPEVkaXRh
YmxlSW1hZ2VDb250cm9sbGVyPiBtX2VkaXRhYmxlSW1hZ2VDb250cm9sbGVyOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggN2I2MWVmMjUyM2QyYzli
MTIwYWNjNjFjNWU0OWJhMTk1NTQzYTQyYS4uMWI5NjRjOTRjN2IyZDllYjU2NDgwYzZkYjY2ZjY4
ZGRiNjYzYjFkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
Y3BwCkBAIC03OSw3ICs3OSw2IEBACiAjZW5kaWYKIAogI2RlZmluZSBNRVNTQUdFX0NIRUNLKGFz
c2VydGlvbikgTUVTU0FHRV9DSEVDS19CQVNFKGFzc2VydGlvbiwgY29ubmVjdGlvbigpKQotI2Rl
ZmluZSBNRVNTQUdFX0NIRUNLX1VSTCh1cmwpIE1FU1NBR0VfQ0hFQ0tfQkFTRShjaGVja1VSTFJl
Y2VpdmVkRnJvbVdlYlByb2Nlc3ModXJsKSwgY29ubmVjdGlvbigpKQogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtNDk1LDI1ICs0OTQsMTIgQEAgdm9p
ZCBXZWJQcm9jZXNzUHJveHk6OmRpZERlc3Ryb3lXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94
eShXZWJVc2VyQ29udGVudENvbnQKICAgICBtX3dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3hp
ZXMucmVtb3ZlKCZwcm94eSk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojphc3N1bWVSZWFk
QWNjZXNzVG9CYXNlVVJMKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKQordm9pZCBXZWJQcm9jZXNz
UHJveHk6OmFkZGxvY2FsUGF0aFdpdGhBc3N1bWVkUmVhZEFjY2Vzcyhjb25zdCBTdHJpbmcmIHBh
dGgpCiB7Ci0gICAgVVJMIHVybChVUkwoKSwgdXJsU3RyaW5nKTsKLSAgICBpZiAoIXVybC5pc0xv
Y2FsRmlsZSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBUaGVyZSdzIGEgY2hhbmNlIHRo
YXQgdXJsU3RyaW5nIGRvZXMgbm90IHBvaW50IHRvIGEgZGlyZWN0b3J5LgotICAgIC8vIEdldCB1
cmwncyBiYXNlIFVSTCB0byBhZGQgdG8gbV9sb2NhbFBhdGhzV2l0aEFzc3VtZWRSZWFkQWNjZXNz
LgotICAgIFVSTCBiYXNlVVJMKFVSTCgpLCB1cmwuYmFzZUFzU3RyaW5nKCkpOwotICAgIFN0cmlu
ZyBwYXRoID0gYmFzZVVSTC5maWxlU3lzdGVtUGF0aCgpOwotICAgIGlmIChwYXRoLmlzTnVsbCgp
KQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgLy8gQ2xpZW50IGxvYWRzIGFuIGFsdGVybmF0
ZSBzdHJpbmcuIFRoaXMgZG9lc24ndCBncmFudCB1bml2ZXJzYWwgZmlsZSByZWFkLCBidXQgdGhl
IHdlYiBwcm9jZXNzIGlzIGFzc3VtZWQKLSAgICAvLyB0byBoYXZlIHJlYWQgYWNjZXNzIHRvIHRo
aXMgZGlyZWN0b3J5IGFscmVhZHkuCiAgICAgbV9sb2NhbFBhdGhzV2l0aEFzc3VtZWRSZWFkQWNj
ZXNzLmFkZChwYXRoKTsKIH0KIAotYm9vbCBXZWJQcm9jZXNzUHJveHk6Omhhc0Fzc3VtZWRSZWFk
QWNjZXNzVG9VUkwoY29uc3QgVVJMJiB1cmwpIGNvbnN0Citib29sIFdlYlByb2Nlc3NQcm94eTo6
aGFzQXNzdW1lZFJlYWRBY2Nlc3NUb1VSTChjb25zdCBIYXNoU2V0PFN0cmluZz4mIGxvY2FsUGF0
aHNXaXRoQXNzdW1lZFJlYWRBY2Nlc3MsIGNvbnN0IFVSTCYgdXJsKQogewogICAgIGlmICghdXJs
LmlzTG9jYWxGaWxlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTUyOSwxNiArNTE1LDE2
IEBAIGJvb2wgV2ViUHJvY2Vzc1Byb3h5OjpoYXNBc3N1bWVkUmVhZEFjY2Vzc1RvVVJMKGNvbnN0
IFVSTCYgdXJsKSBjb25zdAogICAgIGlmIChzdGQ6OmZpbmRfaWYocGxhdGZvcm1QYXRocy5iZWdp
bigpLCBwbGF0Zm9ybVBhdGhzRW5kLCBzdGFydHNXaXRoVVJMUGF0aCkgIT0gcGxhdGZvcm1QYXRo
c0VuZCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBhdXRvIGxvY2FsUGF0aHNFbmQgPSBt
X2xvY2FsUGF0aHNXaXRoQXNzdW1lZFJlYWRBY2Nlc3MuZW5kKCk7Ci0gICAgaWYgKHN0ZDo6Zmlu
ZF9pZihtX2xvY2FsUGF0aHNXaXRoQXNzdW1lZFJlYWRBY2Nlc3MuYmVnaW4oKSwgbG9jYWxQYXRo
c0VuZCwgc3RhcnRzV2l0aFVSTFBhdGgpICE9IGxvY2FsUGF0aHNFbmQpCisgICAgYXV0byBsb2Nh
bFBhdGhzRW5kID0gbG9jYWxQYXRoc1dpdGhBc3N1bWVkUmVhZEFjY2Vzcy5lbmQoKTsKKyAgICBp
ZiAoc3RkOjpmaW5kX2lmKGxvY2FsUGF0aHNXaXRoQXNzdW1lZFJlYWRBY2Nlc3MuYmVnaW4oKSwg
bG9jYWxQYXRoc0VuZCwgc3RhcnRzV2l0aFVSTFBhdGgpICE9IGxvY2FsUGF0aHNFbmQpCiAgICAg
ICAgIHJldHVybiB0cnVlOwogCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFdlYlByb2Nl
c3NQcm94eTo6Y2hlY2tVUkxSZWNlaXZlZEZyb21XZWJQcm9jZXNzKGNvbnN0IFN0cmluZyYgdXJs
U3RyaW5nKQorYm9vbCBXZWJQcm9jZXNzUHJveHk6Omhhc0Fzc3VtZWRSZWFkQWNjZXNzVG9VUkwo
Y29uc3QgVVJMJiB1cmwpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGNoZWNrVVJMUmVjZWl2ZWRGcm9t
V2ViUHJvY2VzcyhVUkwoVVJMKCksIHVybFN0cmluZykpOworICAgIHJldHVybiBXZWJQcm9jZXNz
UHJveHk6Omhhc0Fzc3VtZWRSZWFkQWNjZXNzVG9VUkwobV9sb2NhbFBhdGhzV2l0aEFzc3VtZWRS
ZWFkQWNjZXNzLCB1cmwpOwogfQogCiBib29sIFdlYlByb2Nlc3NQcm94eTo6Y2hlY2tVUkxSZWNl
aXZlZEZyb21XZWJQcm9jZXNzKGNvbnN0IFVSTCYgdXJsKQpAQCAtMTQ0Niw0ICsxNDMyLDMgQEAg
dm9pZCBXZWJQcm9jZXNzUHJveHk6OnJlbGVhc2VCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbkZvckZ1
bGxzY3JlZW5JbnB1dCgpCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI3VuZGVmIE1FU1NBR0Vf
Q0hFQ0sKLSN1bmRlZiBNRVNTQUdFX0NIRUNLX1VSTApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkuaAppbmRleCBkYmMyMmE1YTljOWEyMWJhYzNkZGMyZmEyZjRiZjhjMDBk
NGJiNWQxLi45MWIwMjZkMjNlZTgzMzUzOTYwYzhlNGNhMjgwYjI3NWVmMmNiMmE3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaApAQCAtMTUwLDEwICsxNTAsMTAg
QEAgcHVibGljOgogICAgIHZvaWQgdXBkYXRlVGV4dENoZWNrZXJTdGF0ZSgpOwogCiAgICAgdm9p
ZCB3aWxsQWNxdWlyZVVuaXZlcnNhbEZpbGVSZWFkU2FuZGJveEV4dGVuc2lvbigpIHsgbV9tYXlI
YXZlVW5pdmVyc2FsRmlsZVJlYWRTYW5kYm94RXh0ZW5zaW9uID0gdHJ1ZTsgfQotICAgIHZvaWQg
YXNzdW1lUmVhZEFjY2Vzc1RvQmFzZVVSTChjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIGFkZGxv
Y2FsUGF0aFdpdGhBc3N1bWVkUmVhZEFjY2Vzcyhjb25zdCBTdHJpbmcmKTsKICAgICBib29sIGhh
c0Fzc3VtZWRSZWFkQWNjZXNzVG9VUkwoY29uc3QgV2ViQ29yZTo6VVJMJikgY29uc3Q7CisgICAg
c3RhdGljIGJvb2wgaGFzQXNzdW1lZFJlYWRBY2Nlc3NUb1VSTChjb25zdCBIYXNoU2V0PFN0cmlu
Zz4mIGxvY2FsUGF0aHNXaXRoQXNzdW1lZFJlYWRBY2Nlc3MsIGNvbnN0IFdlYkNvcmU6OlVSTCYp
OwogCi0gICAgYm9vbCBjaGVja1VSTFJlY2VpdmVkRnJvbVdlYlByb2Nlc3MoY29uc3QgU3RyaW5n
Jik7CiAgICAgYm9vbCBjaGVja1VSTFJlY2VpdmVkRnJvbVdlYlByb2Nlc3MoY29uc3QgV2ViQ29y
ZTo6VVJMJik7CiAKICAgICBzdGF0aWMgYm9vbCBmdWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVkKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFj
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQppbmRl
eCBmZmZjNWUwOGExNjcwYTBjYWYxNTNlYzcwZmE3MjAyMTcyMGU1YjdhLi5iNjhiOWM3OTA0MTYx
YjRjYmVlNDEwMTIwNDgzYTlmN2MwN2ZiNTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KQEAgLTY1LDcgKzY1LDcgQEAKICNpbXBvcnQgPHd0
Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+CiAKICNkZWZpbmUgTUVTU0FHRV9DSEVDSyhhc3Nl
cnRpb24pIE1FU1NBR0VfQ0hFQ0tfQkFTRShhc3NlcnRpb24sIHByb2Nlc3MoKS5jb25uZWN0aW9u
KCkpCi0jZGVmaW5lIE1FU1NBR0VfQ0hFQ0tfVVJMKHVybCkgTUVTU0FHRV9DSEVDS19CQVNFKG1f
cHJvY2Vzcy0+Y2hlY2tVUkxSZWNlaXZlZEZyb21XZWJQcm9jZXNzKHVybCksIG1fcHJvY2Vzcy0+
Y29ubmVjdGlvbigpKQorI2RlZmluZSBNRVNTQUdFX0NIRUNLX1VSTCh1cmwpIE1FU1NBR0VfQ0hF
Q0tfQkFTRShjaGVja1VSTFJlY2VpdmVkRnJvbVdlYlByb2Nlc3ModXJsKSwgbV9wcm9jZXNzLT5j
b25uZWN0aW9uKCkpCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>355743</attachid>
            <date>2018-11-27 09:33:41 -0800</date>
            <delta_ts>2018-12-07 15:54:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>191982_MessageCheckURL.patch</filename>
            <type>text/plain</type>
            <size>18489</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggNjU1ZGY2NWFmNjkuLjRmNmNkYTAyMjAxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDQ3IEBACisyMDE4LTExLTI3ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAg
ICAgICAgUmVzdG9yZSBNRVNTQUdFX0NIRUNLX1VSTCgpIHNlY3VyaXR5IGNoZWNrIG9uIHNvdXJj
ZVVSTCBpbiBkaWRQZXJmb3JtQ2xpZW50UmVkaXJlY3QoKQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxOTgyCisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS80NjI1ODA1ND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBVcGRhdGUgTUVTU0FHRV9DSEVDS19VUkwoKSBtYWNybyBpbiBXZWJQYWdlUHJveHkgc28g
dGhhdCBpdCBiZWNvbWVzIGF3YXJlIG9mIHByb2Nlc3Mtc3dhcHBpbmcKKyAgICAgICAgb24gbmF2
aWdhdGlvbi4gVG8gc3VwcG9ydCB0aGlzLCBzb21lIG9mIHRoZSBkYXRhIHRoYXQgaXMgY3VycmVu
dGx5IG9uIFdlYlByb2Nlc3NQcm94eSBpcyBub3cKKyAgICAgICAgYWxzbyBvbiB0aGUgV2ViUGFn
ZVByb3h5OiBtX21heUhhdmVVbml2ZXJzYWxGaWxlUmVhZFNhbmRib3hFeHRlbnNpb24gLworICAg
ICAgICBtX2xvY2FsUGF0aHNXaXRoQXNzdW1lZFJlYWRBY2Nlc3MuIFdlIGZpcnN0IGNoZWNrIHRo
ZSBkYXRhIG9uIHRoZSBXZWJQYWdlUHJveHkgYW5kIHRoZW4KKyAgICAgICAgZmFsbGJhY2sgdG8g
Y2hlY2tpbmcgdGhlIGRhdGEgb24gdGhlIFdlYlByb2Nlc3NQcm94eSBjdXJyZW50bHkgYXNzb2Np
YXRlZCB3aXRoIHRoZSBwYWdlLgorCisgICAgICAgIEFkZCBiYWNrIE1FU1NBR0VfQ0hFQ0tfVVJM
KCkgc2VjdXJpdHkgY2hlY2sgb24gc291cmNlVVJMIGluIGRpZFBlcmZvcm1DbGllbnRSZWRpcmVj
dCgpCisgICAgICAgIHdoaWNoIHdhcyBkcm9wcGVkIGluIHIyMzgzNjggZHVlIHRvIGxhY2sgb2Yg
UFNPTiBzdXBwb3J0LgorCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNv
Y29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNyZWF0ZVNhbmRib3hFeHRl
bnNpb25zSWZOZWVkZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJk
UHJveHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5OjpzZXRQ
YXN0ZWJvYXJkVVJMKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlV2ViSW5zcGVjdG9yUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6Y3JlYXRl
RnJvbnRlbmRQYWdlQW5kV2luZG93KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViSW5zcGVjdG9y
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6Y3JlYXRlRnJv
bnRlbmRQYWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp3aWxsQWNxdWlyZVVuaXZlcnNhbEZpbGVSZWFkU2Fu
ZGJveEV4dGVuc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZFJlcXVl
c3RXaXRoTmF2aWdhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZEZp
bGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmxvYWREYXRhV2l0aE5hdmlnYXRp
b24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmxvYWRBbHRlcm5hdGVIVE1MKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZWxvYWQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6YmFja0ZvcndhcmRHb1RvSXRlbSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6Y2hlY2tVUkxSZWNlaXZlZEZyb21XZWJQcm9jZXNzKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5Ojphc3N1bWVSZWFkQWNjZXNzVG9CYXNlVVJMKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6YWRkbG9j
YWxQYXRoV2l0aEFzc3VtZWRSZWFkQWNjZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Byb3h5OjpoYXNBc3N1bWVkUmVhZEFjY2Vzc1RvVVJMKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzc1Byb3h5OjpoYXNBc3N1bWVkUmVhZEFjY2Vzc1RvVVJMIGNvbnN0KToKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9X
ZWJQYWdlUHJveHlNYWMubW06CisKIDIwMTgtMTEtMjcgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9o
c2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViS2l0LkFkZEFuZFJlbW92ZURhdGFEZXRlY3Rv
cnMgaGl0cyBhIGRlYnVnIGFzc2VydGlvbiBhZnRlciByMjM4NTE1CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCmluZGV4IGY1Njg3NWRm
ZjNhLi5mNzgwOWE0NWMxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvV2ViUGFnZVByb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvV2ViUGFnZVByb3h5Q29jb2EubW0KQEAgLTEyMCw3ICsxMjAsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6Y3JlYXRlU2FuZGJveEV4dGVuc2lvbnNJZk5lZWRlZChjb25zdCBWZWN0b3I8U3RyaW5n
PiYgZmlsZXMsCiAgICAgICAgIEJPT0wgaXNEaXJlY3Rvcnk7CiAgICAgICAgIGlmIChbW05TRmls
ZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6ZmlsZXNbMF0gaXNEaXJl
Y3Rvcnk6JmlzRGlyZWN0b3J5XSAmJiAhaXNEaXJlY3RvcnkpIHsKICAgICAgICAgICAgIFNhbmRi
b3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZSgiLyIsIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJl
YWRPbmx5LCBmaWxlUmVhZEhhbmRsZSk7Ci0gICAgICAgICAgICBwcm9jZXNzKCkud2lsbEFjcXVp
cmVVbml2ZXJzYWxGaWxlUmVhZFNhbmRib3hFeHRlbnNpb24oKTsKKyAgICAgICAgICAgIHdpbGxB
Y3F1aXJlVW5pdmVyc2FsRmlsZVJlYWRTYW5kYm94RXh0ZW5zaW9uKCk7CiAgICAgICAgIH0KICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhc3Rl
Ym9hcmRQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFz
dGVib2FyZFByb3h5Q29jb2EubW0KaW5kZXggNTUyYTEyYmMyNzEuLjhhMmQwM2MzYmMyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlD
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJk
UHJveHlDb2NvYS5tbQpAQCAtMTMxLDcgKzEzMSw3IEBAIHZvaWQgV2ViUGFzdGVib2FyZFByb3h5
OjpzZXRQYXN0ZWJvYXJkVVJMKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgUGFz
CiAgICAgICAgIGlmICghd2ViUHJvY2Vzc1Byb3h5LT5oYXNDb25uZWN0aW9uKGNvbm5lY3Rpb24p
KQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgaWYgKCF3ZWJQcm9jZXNzUHJveHkt
PmNoZWNrVVJMUmVjZWl2ZWRGcm9tV2ViUHJvY2VzcyhwYXN0ZWJvYXJkVVJMLnVybC5zdHJpbmco
KSkpIHsKKyAgICAgICAgaWYgKCF3ZWJQcm9jZXNzUHJveHktPmNoZWNrVVJMUmVjZWl2ZWRGcm9t
V2ViUHJvY2VzcyhwYXN0ZWJvYXJkVVJMLnVybCkpIHsKICAgICAgICAgICAgIG5ld0NoYW5nZUNv
dW50ID0gMDsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkuY3BwCmluZGV4IDkyN2Rh
MWI2MzllLi4zODBiMTNjOTA5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UmVtb3RlV2ViSW5zcGVjdG9yUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1JlbW90ZVdlYkluc3BlY3RvclByb3h5LmNwcApAQCAtMTQ4LDcgKzE0OCw3IEBAIHZvaWQgUmVt
b3RlV2ViSW5zcGVjdG9yUHJveHk6OmNyZWF0ZUZyb250ZW5kUGFnZUFuZFdpbmRvdygpCiAgICAg
dHJhY2tJbnNwZWN0b3JQYWdlKG1faW5zcGVjdG9yUGFnZSk7CiAKICAgICBtX2luc3BlY3RvclBh
Z2UtPnByb2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZVdlYkluc3Bl
Y3RvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlE
KCksICp0aGlzKTsKLSAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5hc3N1bWVSZWFkQWNj
ZXNzVG9CYXNlVVJMKFdlYkluc3BlY3RvclByb3h5OjppbnNwZWN0b3JCYXNlVVJMKCkpOworICAg
IG1faW5zcGVjdG9yUGFnZS0+YXNzdW1lUmVhZEFjY2Vzc1RvQmFzZVVSTChXZWJJbnNwZWN0b3JQ
cm94eTo6aW5zcGVjdG9yQmFzZVVSTCgpKTsKIH0KIAogdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JQ
cm94eTo6Y2xvc2VGcm9udGVuZFBhZ2VBbmRXaW5kb3coKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuY3BwCmluZGV4IDU4OWJiY2U3NjYyLi5iNTE3Njk3NWNl
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNwcApA
QCAtMzc2LDcgKzM3Niw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmNyZWF0ZUZyb250ZW5k
UGFnZSgpCiAgICAgdHJhY2tJbnNwZWN0b3JQYWdlKG1faW5zcGVjdG9yUGFnZSk7CiAKICAgICBt
X2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6Oldl
Ykluc3BlY3RvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faW5zcGVjdGVkUGFnZS0+
cGFnZUlEKCksICp0aGlzKTsKLSAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5hc3N1bWVS
ZWFkQWNjZXNzVG9CYXNlVVJMKFdlYkluc3BlY3RvclByb3h5OjppbnNwZWN0b3JCYXNlVVJMKCkp
OworICAgIG1faW5zcGVjdG9yUGFnZS0+YXNzdW1lUmVhZEFjY2Vzc1RvQmFzZVVSTChXZWJJbnNw
ZWN0b3JQcm94eTo6aW5zcGVjdG9yQmFzZVVSTCgpKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JQ
cm94eTo6b3BlbkxvY2FsSW5zcGVjdG9yRnJvbnRlbmQoYm9vbCBjYW5BdHRhY2gsIGJvb2wgdW5k
ZXJUZXN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggMDgy
N2IwMjI3M2YuLjBmMjU3NDQ4ZmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAKQEAgLTI0MSw3ICsyNDEsNyBAQAogI2RlZmluZSBNRVJHRV9XSEVFTF9FVkVOVFMg
MQogCiAjZGVmaW5lIE1FU1NBR0VfQ0hFQ0soYXNzZXJ0aW9uKSBNRVNTQUdFX0NIRUNLX0JBU0Uo
YXNzZXJ0aW9uLCBtX3Byb2Nlc3MtPmNvbm5lY3Rpb24oKSkKLSNkZWZpbmUgTUVTU0FHRV9DSEVD
S19VUkwodXJsKSBNRVNTQUdFX0NIRUNLX0JBU0UobV9wcm9jZXNzLT5jaGVja1VSTFJlY2VpdmVk
RnJvbVdlYlByb2Nlc3ModXJsKSwgbV9wcm9jZXNzLT5jb25uZWN0aW9uKCkpCisjZGVmaW5lIE1F
U1NBR0VfQ0hFQ0tfVVJMKHVybCkgTUVTU0FHRV9DSEVDS19CQVNFKGNoZWNrVVJMUmVjZWl2ZWRG
cm9tV2ViUHJvY2Vzcyh1cmwpLCBtX3Byb2Nlc3MtPmNvbm5lY3Rpb24oKSkKIAogI2RlZmluZSBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKGNoYW5uZWwsIC4uLikgUkVMRUFTRV9MT0dfSUYoaXNBbHdh
eXNPbkxvZ2dpbmdBbGxvd2VkKCksIGNoYW5uZWwsIF9fVkFfQVJHU19fKQogCkBAIC0xMDMzLDYg
KzEwMzMsMTIgQEAgYm9vbCBXZWJQYWdlUHJveHk6Om1heWJlSW5pdGlhbGl6ZVNhbmRib3hFeHRl
bnNpb25IYW5kbGUoY29uc3QgVVJMJiB1cmwsIFNhbmRib3gKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAordm9pZCBXZWJQYWdlUHJveHk6OndpbGxBY3F1aXJlVW5pdmVyc2FsRmlsZVJlYWRTYW5kYm94
RXh0ZW5zaW9uKCkKK3sKKyAgICBtX21heUhhdmVVbml2ZXJzYWxGaWxlUmVhZFNhbmRib3hFeHRl
bnNpb24gPSB0cnVlOworICAgIG1fcHJvY2Vzcy0+d2lsbEFjcXVpcmVVbml2ZXJzYWxGaWxlUmVh
ZFNhbmRib3hFeHRlbnNpb24oKTsKK30KKwogI2lmICFQTEFURk9STShDT0NPQSkKIHZvaWQgV2Vi
UGFnZVByb3h5OjphZGRQbGF0Zm9ybUxvYWRQYXJhbWV0ZXJzKExvYWRQYXJhbWV0ZXJzJikKIHsK
QEAgLTEwNzIsNyArMTA3OCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkUmVxdWVzdFdpdGhO
YXZpZ2F0aW9uKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgUmVzb3VyCiAgICAgbG9hZFBh
cmFtZXRlcnMuY2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5ID0gbmF2aWdhdGlvbi5jbGll
bnRSZWRpcmVjdFNvdXJjZUZvckhpc3RvcnkoKTsKICAgICBib29sIGNyZWF0ZWRFeHRlbnNpb24g
PSBtYXliZUluaXRpYWxpemVTYW5kYm94RXh0ZW5zaW9uSGFuZGxlKHVybCwgbG9hZFBhcmFtZXRl
cnMuc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7CiAgICAgaWYgKGNyZWF0ZWRFeHRlbnNpb24pCi0g
ICAgICAgIG1fcHJvY2Vzcy0+d2lsbEFjcXVpcmVVbml2ZXJzYWxGaWxlUmVhZFNhbmRib3hFeHRl
bnNpb24oKTsKKyAgICAgICAgd2lsbEFjcXVpcmVVbml2ZXJzYWxGaWxlUmVhZFNhbmRib3hFeHRl
bnNpb24oKTsKICAgICBhZGRQbGF0Zm9ybUxvYWRQYXJhbWV0ZXJzKGxvYWRQYXJhbWV0ZXJzKTsK
IAogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFJlcXVlc3QobG9h
ZFBhcmFtZXRlcnMpLCBtX3BhZ2VJRCk7CkBAIC0xMTE2LDcgKzExMjIsNyBAQCBSZWZQdHI8QVBJ
OjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWRGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVVS
TFN0cmluZywgY29ucwogICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShyZXNvdXJj
ZURpcmVjdG9yeVBhdGgsIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRPbmx5LCBsb2FkUGFy
YW1ldGVycy5zYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsKICAgICBhZGRQbGF0Zm9ybUxvYWRQYXJh
bWV0ZXJzKGxvYWRQYXJhbWV0ZXJzKTsKIAotICAgIG1fcHJvY2Vzcy0+YXNzdW1lUmVhZEFjY2Vz
c1RvQmFzZVVSTChyZXNvdXJjZURpcmVjdG9yeVVSTCk7CisgICAgYXNzdW1lUmVhZEFjY2Vzc1Rv
QmFzZVVSTChyZXNvdXJjZURpcmVjdG9yeVVSTCk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpMb2FkUmVxdWVzdChsb2FkUGFyYW1ldGVycyksIG1fcGFnZUlEKTsKICAg
ICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS5zdGFydCgpOwogCkBAIC0xMTUzLDcg
KzExNTksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZERhdGFXaXRoTmF2aWdhdGlvbihBUEk6
Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIGNvbnN0IElQQwogICAgIGxvYWRQYXJhbWV0ZXJzLnVz
ZXJEYXRhID0gVXNlckRhdGEocHJvY2VzcygpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNl
ckRhdGEpLmdldCgpKTsKICAgICBhZGRQbGF0Zm9ybUxvYWRQYXJhbWV0ZXJzKGxvYWRQYXJhbWV0
ZXJzKTsKIAotICAgIG1fcHJvY2Vzcy0+YXNzdW1lUmVhZEFjY2Vzc1RvQmFzZVVSTChiYXNlVVJM
KTsKKyAgICBhc3N1bWVSZWFkQWNjZXNzVG9CYXNlVVJMKGJhc2VVUkwpOwogICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZERhdGEobG9hZFBhcmFtZXRlcnMpLCBtX3Bh
Z2VJRCk7CiAgICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCkuc3RhcnQoKTsKIH0K
QEAgLTExOTIsOCArMTE5OCw4IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkQWx0ZXJuYXRlSFRN
TChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGh0bWxEYXRhLCBjb25zdCBTCiAgICAgbG9hZFBh
cmFtZXRlcnMuZm9yU2FmZUJyb3dzaW5nID0gZm9yU2FmZUJyb3dzaW5nOwogICAgIGFkZFBsYXRm
b3JtTG9hZFBhcmFtZXRlcnMobG9hZFBhcmFtZXRlcnMpOwogCi0gICAgbV9wcm9jZXNzLT5hc3N1
bWVSZWFkQWNjZXNzVG9CYXNlVVJMKGJhc2VVUkwpOwotICAgIG1fcHJvY2Vzcy0+YXNzdW1lUmVh
ZEFjY2Vzc1RvQmFzZVVSTCh1bnJlYWNoYWJsZVVSTCk7CisgICAgYXNzdW1lUmVhZEFjY2Vzc1Rv
QmFzZVVSTChiYXNlVVJMKTsKKyAgICBhc3N1bWVSZWFkQWNjZXNzVG9CYXNlVVJMKHVucmVhY2hh
YmxlVVJMKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRBbHRl
cm5hdGVIVE1MKGxvYWRQYXJhbWV0ZXJzKSwgbV9wYWdlSUQpOwogICAgIG1fcHJvY2Vzcy0+cmVz
cG9uc2l2ZW5lc3NUaW1lcigpLnN0YXJ0KCk7CiB9CkBAIC0xMjU3LDcgKzEyNjMsNyBAQCBSZWZQ
dHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OnJlbG9hZChPcHRpb25TZXQ8V2ViQ29y
ZTo6UmVsb2FkT3B0aW9uPiBvcAogICAgICAgICAvLyBXZSBtYXkgbm90IGhhdmUgYW4gZXh0ZW5z
aW9uIHlldCBpZiBiYWNrL2ZvcndhcmQgbGlzdCB3YXMgcmVpbnN0YXRlZCBhZnRlciBhIFdlYlBy
b2Nlc3MgY3Jhc2ggb3IgYSBicm93c2VyIHJlbGF1bmNoCiAgICAgICAgIGJvb2wgY3JlYXRlZEV4
dGVuc2lvbiA9IG1heWJlSW5pdGlhbGl6ZVNhbmRib3hFeHRlbnNpb25IYW5kbGUoVVJMKFVSTCgp
LCB1cmwpLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsKICAgICAgICAgaWYgKGNyZWF0ZWRFeHRl
bnNpb24pCi0gICAgICAgICAgICBtX3Byb2Nlc3MtPndpbGxBY3F1aXJlVW5pdmVyc2FsRmlsZVJl
YWRTYW5kYm94RXh0ZW5zaW9uKCk7CisgICAgICAgICAgICB3aWxsQWNxdWlyZVVuaXZlcnNhbEZp
bGVSZWFkU2FuZGJveEV4dGVuc2lvbigpOwogICAgIH0KIAogICAgIGlmICghaXNWYWxpZCgpKQpA
QCAtMjAwNyw3ICsyMDEzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnBlcmZvcm1EcmFnQ29udHJv
bGxlckFjdGlvbihEcmFnQ29udHJvbGxlckFjdGlvbiBhY3Rpb24sIERyYWcKIAogICAgIFN0cmlu
ZyB1cmwgPSBkcmFnRGF0YS5hc1VSTCgpOwogICAgIGlmICghdXJsLmlzRW1wdHkoKSkKLSAgICAg
ICAgbV9wcm9jZXNzLT5hc3N1bWVSZWFkQWNjZXNzVG9CYXNlVVJMKHVybCk7CisgICAgICAgIGFz
c3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwodXJsKTsKIAogICAgIEFTU0VSVChkcmFnRGF0YS5wbGF0
Zm9ybURhdGEoKSk7CiAgICAgV2ViU2VsZWN0aW9uRGF0YSBzZWxlY3Rpb24oKmRyYWdEYXRhLnBs
YXRmb3JtRGF0YSgpKTsKQEAgLTQ0NjAsNiArNDQ2Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpk
aWRQZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgU3RyaW5nJiBzb3VyY2VVUkxTdHJpbmcsIGNv
bnN0CiAgICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1lKGZyYW1l
SUQpOwogICAgIE1FU1NBR0VfQ0hFQ0soZnJhbWUpOwogICAgIE1FU1NBR0VfQ0hFQ0soZnJhbWUt
PnBhZ2UoKSA9PSB0aGlzKTsKKyAgICBNRVNTQUdFX0NIRUNLX1VSTChzb3VyY2VVUkxTdHJpbmcp
OwogICAgIE1FU1NBR0VfQ0hFQ0tfVVJMKGRlc3RpbmF0aW9uVVJMU3RyaW5nKTsKIAogICAgIGlm
IChmcmFtZS0+aXNNYWluRnJhbWUoKSkgewpAQCAtNTE0NCw3ICs1MTUxLDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmJhY2tGb3J3YXJkR29Ub0l0ZW0oY29uc3QgQmFja0ZvcndhcmRJdGVtSWRlbnRp
ZmllciYgaXRlbUlELAogCiAgICAgYm9vbCBjcmVhdGVkRXh0ZW5zaW9uID0gbWF5YmVJbml0aWFs
aXplU2FuZGJveEV4dGVuc2lvbkhhbmRsZShVUkwoVVJMKCksIGl0ZW0tPnVybCgpKSwgc2FuZGJv
eEV4dGVuc2lvbkhhbmRsZSk7CiAgICAgaWYgKGNyZWF0ZWRFeHRlbnNpb24pCi0gICAgICAgIG1f
cHJvY2Vzcy0+d2lsbEFjcXVpcmVVbml2ZXJzYWxGaWxlUmVhZFNhbmRib3hFeHRlbnNpb24oKTsK
KyAgICAgICAgd2lsbEFjcXVpcmVVbml2ZXJzYWxGaWxlUmVhZFNhbmRib3hFeHRlbnNpb24oKTsK
ICAgICBtX2JhY2tGb3J3YXJkTGlzdC0+Z29Ub0l0ZW0oKml0ZW0pOwogfQogCkBAIC04MjUwLDYg
KzgyNTcsNDQgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZUN1cnJlbnRNb2RpZmllclN0YXRl
KCkKICNlbmRpZgogfQogCitib29sIFdlYlBhZ2VQcm94eTo6Y2hlY2tVUkxSZWNlaXZlZEZyb21X
ZWJQcm9jZXNzKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKQoreworICAgIHJldHVybiBjaGVja1VS
TFJlY2VpdmVkRnJvbVdlYlByb2Nlc3MoVVJMKFVSTCgpLCB1cmxTdHJpbmcpKTsKK30KKworYm9v
bCBXZWJQYWdlUHJveHk6OmNoZWNrVVJMUmVjZWl2ZWRGcm9tV2ViUHJvY2Vzcyhjb25zdCBVUkwm
IHVybCkKK3sKKyAgICAvLyBBbnkgZmlsZSBVUkwgaXMgYWxzbyBPSyBpZiB3ZSd2ZSBsb2FkZWQg
YSBmaWxlIFVSTCB0aHJvdWdoIEFQSSBiZWZvcmUsIGdyYW50aW5nIHVuaXZlcnNhbCByZWFkIGFj
Y2Vzcy4KKyAgICBpZiAobV9tYXlIYXZlVW5pdmVyc2FsRmlsZVJlYWRTYW5kYm94RXh0ZW5zaW9u
KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIC8vIEluIGNhc2Ugb2YgcHJvY2Vzcy1zd2Fw
LCB0aGUgdXJsIG1heSBoYXZlIGJlZW4gbG9hZGVkIGluIGEgcHJldmlvdXNseSBhc3NvY2lhdGVk
IFdlYlByb2Nlc3MuCisgICAgaWYgKFdlYlByb2Nlc3NQcm94eTo6aGFzQXNzdW1lZFJlYWRBY2Nl
c3NUb1VSTChtX2xvY2FsUGF0aHNXaXRoQXNzdW1lZFJlYWRBY2Nlc3MsIHVybCkpCisgICAgICAg
IHJldHVybiB0cnVlOworCisgICAgLy8gSWYgd2UgbG9hZGVkIGEgc3RyaW5nIHdpdGggYSBmaWxl
IGJhc2UgVVJMIGJlZm9yZSwgbG9hZGluZyByZXNvdXJjZXMgZnJvbSB0aGF0IHN1YmRpcmVjdG9y
eSBpcyBmaW5lLgorICAgIHJldHVybiBtX3Byb2Nlc3MtPmNoZWNrVVJMUmVjZWl2ZWRGcm9tV2Vi
UHJvY2Vzcyh1cmwpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6YXNzdW1lUmVhZEFjY2Vzc1Rv
QmFzZVVSTChjb25zdCBTdHJpbmcmIHVybFN0cmluZykKK3sKKyAgICBVUkwgdXJsKFVSTCgpLCB1
cmxTdHJpbmcpOworICAgIGlmICghdXJsLmlzTG9jYWxGaWxlKCkpCisgICAgICAgIHJldHVybjsK
KworICAgIC8vIFRoZXJlJ3MgYSBjaGFuY2UgdGhhdCB1cmxTdHJpbmcgZG9lcyBub3QgcG9pbnQg
dG8gYSBkaXJlY3RvcnkuCisgICAgLy8gR2V0IHVybCdzIGJhc2UgVVJMIHRvIGFkZCB0byBtX2xv
Y2FsUGF0aHNXaXRoQXNzdW1lZFJlYWRBY2Nlc3MuCisgICAgVVJMIGJhc2VVUkwoVVJMKCksIHVy
bC5iYXNlQXNTdHJpbmcoKSk7CisgICAgU3RyaW5nIHBhdGggPSBiYXNlVVJMLmZpbGVTeXN0ZW1Q
YXRoKCk7CisgICAgaWYgKHBhdGguaXNOdWxsKCkpCisgICAgICAgIHJldHVybjsKKworICAgIC8v
IENsaWVudCBsb2FkcyBhbiBhbHRlcm5hdGUgc3RyaW5nLiBUaGlzIGRvZXNuJ3QgZ3JhbnQgdW5p
dmVyc2FsIGZpbGUgcmVhZCwgYnV0IHRoZSB3ZWIgcHJvY2VzcyBpcyBhc3N1bWVkCisgICAgLy8g
dG8gaGF2ZSByZWFkIGFjY2VzcyB0byB0aGlzIGRpcmVjdG9yeSBhbHJlYWR5LgorICAgIG1fbG9j
YWxQYXRoc1dpdGhBc3N1bWVkUmVhZEFjY2Vzcy5hZGQocGF0aCk7CisgICAgbV9wcm9jZXNzLT5h
ZGRsb2NhbFBhdGhXaXRoQXNzdW1lZFJlYWRBY2Nlc3MocGF0aCk7Cit9CisKICNpZiBFTkFCTEUo
REFUQV9ERVRFQ1RJT04pCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkZXRlY3REYXRhSW5BbGxGcmFt
ZXMoV2ViQ29yZTo6RGF0YURldGVjdG9yVHlwZXMgdHlwZXMsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgRGF0YURldGVjdGlvblJlc3VsdCYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBjMTIyYWY1M2Y1MC4uZTc5OWVi
YjRjNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xMzk1LDYg
KzEzOTUsOCBAQCBwdWJsaWM6CiAgICAgRWRpdGFibGVJbWFnZUNvbnRyb2xsZXImIGVkaXRhYmxl
SW1hZ2VDb250cm9sbGVyKCkgeyByZXR1cm4gKm1fZWRpdGFibGVJbWFnZUNvbnRyb2xsZXI7IH0K
ICNlbmRpZgogCisgICAgdm9pZCBhc3N1bWVSZWFkQWNjZXNzVG9CYXNlVVJMKGNvbnN0IFN0cmlu
ZyYgdXJsU3RyaW5nKTsKKwogcHJpdmF0ZToKICAgICBXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYs
IFdlYlByb2Nlc3NQcm94eSYsIHVpbnQ2NF90IHBhZ2VJRCwgUmVmPEFQSTo6UGFnZUNvbmZpZ3Vy
YXRpb24+JiYpOwogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKCk7CkBAIC0xNzIyLDYgKzE3
MjQsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICBib29sIG1heWJlSW5pdGlhbGl6ZVNhbmRi
b3hFeHRlbnNpb25IYW5kbGUoY29uc3QgV2ViQ29yZTo6VVJMJiwgU2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlJik7CisgICAgdm9pZCB3aWxsQWNxdWlyZVVuaXZlcnNhbEZpbGVSZWFkU2FuZGJveEV4
dGVuc2lvbigpOwogCiAjaWYgVVNFKEFVVE9NQVRJQ19URVhUX1JFUExBQ0VNRU5UKQogICAgIHZv
aWQgdG9nZ2xlU21hcnRJbnNlcnREZWxldGUoKTsKQEAgLTE4NzYsNiArMTg3OSw5IEBAIHByaXZh
dGU6CiAKICAgICB2b2lkIGNvbnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2VzcyhBUEk6Ok5hdmln
YXRpb24mLCBSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmKTsKIAorICAgIGJvb2wgY2hlY2tVUkxSZWNl
aXZlZEZyb21XZWJQcm9jZXNzKGNvbnN0IFN0cmluZyYgdXJsKTsKKyAgICBib29sIGNoZWNrVVJM
UmVjZWl2ZWRGcm9tV2ViUHJvY2Vzcyhjb25zdCBXZWJDb3JlOjpVUkwmKTsKKwogICAgIHZvaWQg
c2V0TmVlZHNGb250QXR0cmlidXRlcyhib29sKTsKICAgICB2b2lkIHVwZGF0ZUZvbnRBdHRyaWJ1
dGVzQWZ0ZXJFZGl0b3JTdGF0ZUNoYW5nZSgpOwogCkBAIC0yMjgwLDExICsyMjg2LDEzIEBAIHBy
aXZhdGU6CiAgICAgc3RkOjpvcHRpb25hbDxTcGVsbERvY3VtZW50VGFnPiBtX3NwZWxsRG9jdW1l
bnRUYWc7CiAKICAgICBzdGQ6Om9wdGlvbmFsPE1vbm90b25pY1RpbWU+IG1fcGFnZUxvYWRTdGFy
dDsKKyAgICBIYXNoU2V0PFN0cmluZz4gbV9sb2NhbFBhdGhzV2l0aEFzc3VtZWRSZWFkQWNjZXNz
OwogCiAgICAgUnVuTG9vcDo6VGltZXI8V2ViUGFnZVByb3h5PiBtX3Jlc2V0UmVjZW50Q3Jhc2hD
b3VudFRpbWVyOwogICAgIHVuc2lnbmVkIG1fcmVjZW50Q3Jhc2hDb3VudCB7IDAgfTsKIAogICAg
IGJvb2wgbV9uZWVkc0ZvbnRBdHRyaWJ1dGVzIHsgZmFsc2UgfTsKKyAgICBib29sIG1fbWF5SGF2
ZVVuaXZlcnNhbEZpbGVSZWFkU2FuZGJveEV4dGVuc2lvbiB7IGZhbHNlIH07CiAKICNpZiBIQVZF
KFBFTkNJTEtJVCkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RWRpdGFibGVJbWFnZUNvbnRyb2xsZXI+
IG1fZWRpdGFibGVJbWFnZUNvbnRyb2xsZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5LmNwcAppbmRleCA3YjYxZWYyNTIzZC4uMWI5NjRjOTRjN2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtNzksNyArNzksNiBA
QAogI2VuZGlmCiAKICNkZWZpbmUgTUVTU0FHRV9DSEVDSyhhc3NlcnRpb24pIE1FU1NBR0VfQ0hF
Q0tfQkFTRShhc3NlcnRpb24sIGNvbm5lY3Rpb24oKSkKLSNkZWZpbmUgTUVTU0FHRV9DSEVDS19V
UkwodXJsKSBNRVNTQUdFX0NIRUNLX0JBU0UoY2hlY2tVUkxSZWNlaXZlZEZyb21XZWJQcm9jZXNz
KHVybCksIGNvbm5lY3Rpb24oKSkKIAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKQEAgLTQ5NSwyNSArNDk0LDEyIEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojpk
aWREZXN0cm95V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkoV2ViVXNlckNvbnRlbnRDb250
CiAgICAgbV93ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94aWVzLnJlbW92ZSgmcHJveHkpOwog
fQogCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6YXNzdW1lUmVhZEFjY2Vzc1RvQmFzZVVSTChjb25z
dCBTdHJpbmcmIHVybFN0cmluZykKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5OjphZGRsb2NhbFBhdGhX
aXRoQXNzdW1lZFJlYWRBY2Nlc3MoY29uc3QgU3RyaW5nJiBwYXRoKQogewotICAgIFVSTCB1cmwo
VVJMKCksIHVybFN0cmluZyk7Ci0gICAgaWYgKCF1cmwuaXNMb2NhbEZpbGUoKSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgLy8gVGhlcmUncyBhIGNoYW5jZSB0aGF0IHVybFN0cmluZyBkb2VzIG5v
dCBwb2ludCB0byBhIGRpcmVjdG9yeS4KLSAgICAvLyBHZXQgdXJsJ3MgYmFzZSBVUkwgdG8gYWRk
IHRvIG1fbG9jYWxQYXRoc1dpdGhBc3N1bWVkUmVhZEFjY2Vzcy4KLSAgICBVUkwgYmFzZVVSTChV
UkwoKSwgdXJsLmJhc2VBc1N0cmluZygpKTsKLSAgICBTdHJpbmcgcGF0aCA9IGJhc2VVUkwuZmls
ZVN5c3RlbVBhdGgoKTsKLSAgICBpZiAocGF0aC5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuOwot
ICAgIAotICAgIC8vIENsaWVudCBsb2FkcyBhbiBhbHRlcm5hdGUgc3RyaW5nLiBUaGlzIGRvZXNu
J3QgZ3JhbnQgdW5pdmVyc2FsIGZpbGUgcmVhZCwgYnV0IHRoZSB3ZWIgcHJvY2VzcyBpcyBhc3N1
bWVkCi0gICAgLy8gdG8gaGF2ZSByZWFkIGFjY2VzcyB0byB0aGlzIGRpcmVjdG9yeSBhbHJlYWR5
LgogICAgIG1fbG9jYWxQYXRoc1dpdGhBc3N1bWVkUmVhZEFjY2Vzcy5hZGQocGF0aCk7CiB9CiAK
LWJvb2wgV2ViUHJvY2Vzc1Byb3h5OjpoYXNBc3N1bWVkUmVhZEFjY2Vzc1RvVVJMKGNvbnN0IFVS
TCYgdXJsKSBjb25zdAorYm9vbCBXZWJQcm9jZXNzUHJveHk6Omhhc0Fzc3VtZWRSZWFkQWNjZXNz
VG9VUkwoY29uc3QgSGFzaFNldDxTdHJpbmc+JiBsb2NhbFBhdGhzV2l0aEFzc3VtZWRSZWFkQWNj
ZXNzLCBjb25zdCBVUkwmIHVybCkKIHsKICAgICBpZiAoIXVybC5pc0xvY2FsRmlsZSgpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CkBAIC01MjksMTYgKzUxNSwxNiBAQCBib29sIFdlYlByb2Nlc3NQ
cm94eTo6aGFzQXNzdW1lZFJlYWRBY2Nlc3NUb1VSTChjb25zdCBVUkwmIHVybCkgY29uc3QKICAg
ICBpZiAoc3RkOjpmaW5kX2lmKHBsYXRmb3JtUGF0aHMuYmVnaW4oKSwgcGxhdGZvcm1QYXRoc0Vu
ZCwgc3RhcnRzV2l0aFVSTFBhdGgpICE9IHBsYXRmb3JtUGF0aHNFbmQpCiAgICAgICAgIHJldHVy
biB0cnVlOwogCi0gICAgYXV0byBsb2NhbFBhdGhzRW5kID0gbV9sb2NhbFBhdGhzV2l0aEFzc3Vt
ZWRSZWFkQWNjZXNzLmVuZCgpOwotICAgIGlmIChzdGQ6OmZpbmRfaWYobV9sb2NhbFBhdGhzV2l0
aEFzc3VtZWRSZWFkQWNjZXNzLmJlZ2luKCksIGxvY2FsUGF0aHNFbmQsIHN0YXJ0c1dpdGhVUkxQ
YXRoKSAhPSBsb2NhbFBhdGhzRW5kKQorICAgIGF1dG8gbG9jYWxQYXRoc0VuZCA9IGxvY2FsUGF0
aHNXaXRoQXNzdW1lZFJlYWRBY2Nlc3MuZW5kKCk7CisgICAgaWYgKHN0ZDo6ZmluZF9pZihsb2Nh
bFBhdGhzV2l0aEFzc3VtZWRSZWFkQWNjZXNzLmJlZ2luKCksIGxvY2FsUGF0aHNFbmQsIHN0YXJ0
c1dpdGhVUkxQYXRoKSAhPSBsb2NhbFBhdGhzRW5kKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBXZWJQcm9jZXNzUHJveHk6OmNoZWNrVVJMUmVj
ZWl2ZWRGcm9tV2ViUHJvY2Vzcyhjb25zdCBTdHJpbmcmIHVybFN0cmluZykKK2Jvb2wgV2ViUHJv
Y2Vzc1Byb3h5OjpoYXNBc3N1bWVkUmVhZEFjY2Vzc1RvVVJMKGNvbnN0IFVSTCYgdXJsKSBjb25z
dAogewotICAgIHJldHVybiBjaGVja1VSTFJlY2VpdmVkRnJvbVdlYlByb2Nlc3MoVVJMKFVSTCgp
LCB1cmxTdHJpbmcpKTsKKyAgICByZXR1cm4gV2ViUHJvY2Vzc1Byb3h5OjpoYXNBc3N1bWVkUmVh
ZEFjY2Vzc1RvVVJMKG1fbG9jYWxQYXRoc1dpdGhBc3N1bWVkUmVhZEFjY2VzcywgdXJsKTsKIH0K
IAogYm9vbCBXZWJQcm9jZXNzUHJveHk6OmNoZWNrVVJMUmVjZWl2ZWRGcm9tV2ViUHJvY2Vzcyhj
b25zdCBVUkwmIHVybCkKQEAgLTE0NDYsNCArMTQzMiwzIEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5
OjpyZWxlYXNlQmFja2dyb3VuZEFjdGl2aXR5VG9rZW5Gb3JGdWxsc2NyZWVuSW5wdXQoKQogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CiAKICN1bmRlZiBNRVNTQUdFX0NIRUNLCi0jdW5kZWYgTUVTU0FH
RV9DSEVDS19VUkwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKaW5k
ZXggZGJjMjJhNWE5YzkuLjkxYjAyNmQyM2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkuaApAQCAtMTUwLDEwICsxNTAsMTAgQEAgcHVibGljOgogICAgIHZvaWQg
dXBkYXRlVGV4dENoZWNrZXJTdGF0ZSgpOwogCiAgICAgdm9pZCB3aWxsQWNxdWlyZVVuaXZlcnNh
bEZpbGVSZWFkU2FuZGJveEV4dGVuc2lvbigpIHsgbV9tYXlIYXZlVW5pdmVyc2FsRmlsZVJlYWRT
YW5kYm94RXh0ZW5zaW9uID0gdHJ1ZTsgfQotICAgIHZvaWQgYXNzdW1lUmVhZEFjY2Vzc1RvQmFz
ZVVSTChjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIGFkZGxvY2FsUGF0aFdpdGhBc3N1bWVkUmVh
ZEFjY2Vzcyhjb25zdCBTdHJpbmcmKTsKICAgICBib29sIGhhc0Fzc3VtZWRSZWFkQWNjZXNzVG9V
UkwoY29uc3QgV2ViQ29yZTo6VVJMJikgY29uc3Q7CisgICAgc3RhdGljIGJvb2wgaGFzQXNzdW1l
ZFJlYWRBY2Nlc3NUb1VSTChjb25zdCBIYXNoU2V0PFN0cmluZz4mIGxvY2FsUGF0aHNXaXRoQXNz
dW1lZFJlYWRBY2Nlc3MsIGNvbnN0IFdlYkNvcmU6OlVSTCYpOwogCi0gICAgYm9vbCBjaGVja1VS
TFJlY2VpdmVkRnJvbVdlYlByb2Nlc3MoY29uc3QgU3RyaW5nJik7CiAgICAgYm9vbCBjaGVja1VS
TFJlY2VpdmVkRnJvbVdlYlByb2Nlc3MoY29uc3QgV2ViQ29yZTo6VVJMJik7CiAKICAgICBzdGF0
aWMgYm9vbCBmdWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQppbmRleCBmZmZjNWUwOGExNi4uYjY4Yjlj
NzkwNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJv
eHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1h
Yy5tbQpAQCAtNjUsNyArNjUsNyBAQAogI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5h
dGUuaD4KIAogI2RlZmluZSBNRVNTQUdFX0NIRUNLKGFzc2VydGlvbikgTUVTU0FHRV9DSEVDS19C
QVNFKGFzc2VydGlvbiwgcHJvY2VzcygpLmNvbm5lY3Rpb24oKSkKLSNkZWZpbmUgTUVTU0FHRV9D
SEVDS19VUkwodXJsKSBNRVNTQUdFX0NIRUNLX0JBU0UobV9wcm9jZXNzLT5jaGVja1VSTFJlY2Vp
dmVkRnJvbVdlYlByb2Nlc3ModXJsKSwgbV9wcm9jZXNzLT5jb25uZWN0aW9uKCkpCisjZGVmaW5l
IE1FU1NBR0VfQ0hFQ0tfVVJMKHVybCkgTUVTU0FHRV9DSEVDS19CQVNFKGNoZWNrVVJMUmVjZWl2
ZWRGcm9tV2ViUHJvY2Vzcyh1cmwpLCBtX3Byb2Nlc3MtPmNvbm5lY3Rpb24oKSkKIAogdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>356848</attachid>
            <date>2018-12-07 15:54:41 -0800</date>
            <delta_ts>2018-12-12 08:01:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191982-20181207155440.patch</filename>
            <type>text/plain</type>
            <size>14807</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4OTExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDYxMzFmNmI3YzVlMjQwN2Fl
YzVhYTA1ZTY0NDdjNTI3NmEyMTBmNDkuLmY1M2ViNmJlNDc4NjVlYjZjN2I3OTQyMGMxYjIwZDE2
NjJkZjQ5ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTgtMTItMDcgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBSZXN0b3JlIE1FU1NBR0VfQ0hFQ0tf
VVJMKCkgc2VjdXJpdHkgY2hlY2sgb24gc291cmNlVVJMIGluIGRpZFBlcmZvcm1DbGllbnRSZWRp
cmVjdCgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTE5ODIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ2MjU4MDU0PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEhhdmUgdGhlIFdlYlBhZ2VQcm94eSBy
ZW1lbWJlciB0aGUgbG9jYWwgcGF0aHMgaXQgcHJldmlvdXNseSB2aXNpdGVkIHNvIHRoYXQgdGhl
CisgICAgICAgIE1FU1NBR0VfQ0hFQ0tfVVJMKCkgY2hlY2tzIHN0aWxsIHdvcmsgd2hlbiBwcm9j
ZXNzLXN3YXAgb24gbmF2aWdhdGlvbiBpcyBlbmFibGVkLgorCisgICAgICAgIEFkZCBiYWNrIE1F
U1NBR0VfQ0hFQ0tfVVJMKCkgb24gc291cmNlVVJMIGluIGRpZFBlcmZvcm1DbGllbnRSZWRpcmVj
dCgpLgorCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNyZWF0ZVNhbmRib3hFeHRlbnNpb25zSWZO
ZWVkZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpjcmVhdGVGcm9udGVu
ZFBhZ2VBbmRXaW5kb3cpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpjcmVhdGVGcm9udGVuZFBh
Z2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OmxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb24pOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmxvYWRGaWxlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5Ojpsb2FkRGF0YVdpdGhOYXZpZ2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5Ojpsb2FkQWx0ZXJuYXRlSFRNTCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6cmVsb2FkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRQZXJmb3JtQ2xp
ZW50UmVkaXJlY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmJhY2tGb3J3YXJk
R29Ub0l0ZW0pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNoZWNrVVJMUmVjZWl2
ZWRGcm9tQ3VycmVudE9yUHJldmlvdXNXZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjphZGRQcmV2aW91c2x5VmlzaXRlZFBhdGgpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OndpbGxBY3F1aXJlVW5pdmVyc2FsRmlsZVJlYWRTYW5kYm94RXh0ZW5zaW9u
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94
eTo6YXNzdW1lUmVhZEFjY2Vzc1RvQmFzZVVSTCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1t
OgorCiAyMDE4LTEyLTA2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAg
ICAgUFNPTiBsb2dpYyBnZXRzIGNvbmZ1c2VkIGJ5IGNvbmN1cnJlbnQgZGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbiByZXF1ZXN0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQppbmRleCA2NWFlY2Q5MjE5MmZlNjY2MWYxYmFh
NDJkMzQwNzg2Y2U0ZDFkNTMyLi5mMzg3YjQ1MmNjZmE0Y2YzM2M4ZDc2M2VmOTBlY2FhZTZjOTU2
MWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJv
eHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJv
eHlDb2NvYS5tbQpAQCAtMTIxLDcgKzEyMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjcmVhdGVT
YW5kYm94RXh0ZW5zaW9uc0lmTmVlZGVkKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlcywKICAg
ICAgICAgQk9PTCBpc0RpcmVjdG9yeTsKICAgICAgICAgaWYgKFtbTlNGaWxlTWFuYWdlciBkZWZh
dWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpmaWxlc1swXSBpc0RpcmVjdG9yeTomaXNEaXJl
Y3RvcnldICYmICFpc0RpcmVjdG9yeSkgewogICAgICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6
Y3JlYXRlSGFuZGxlKCIvIiwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZE9ubHksIGZpbGVS
ZWFkSGFuZGxlKTsKLSAgICAgICAgICAgIHByb2Nlc3MoKS53aWxsQWNxdWlyZVVuaXZlcnNhbEZp
bGVSZWFkU2FuZGJveEV4dGVuc2lvbigpOworICAgICAgICAgICAgd2lsbEFjcXVpcmVVbml2ZXJz
YWxGaWxlUmVhZFNhbmRib3hFeHRlbnNpb24oKTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkuY3BwCmlu
ZGV4IDkyN2RhMWI2MzllMjExYzE5MDZjNjVlMTI1MzBjZTQ3YzE3MTViMDYuLjNjOWRhNTNkODVi
YzlhYzJiMjM1MTEzYzgwNjkxNzcyNzkxMDIzMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1JlbW90ZVdlYkluc3BlY3RvclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5jcHAKQEAgLTE0OCw3ICsxNDgsNyBA
QCB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpjcmVhdGVGcm9udGVuZFBhZ2VBbmRXaW5k
b3coKQogICAgIHRyYWNrSW5zcGVjdG9yUGFnZShtX2luc3BlY3RvclBhZ2UpOwogCiAgICAgbV9p
bnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1v
dGVXZWJJbnNwZWN0b3JQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2luc3BlY3RvclBh
Z2UtPnBhZ2VJRCgpLCAqdGhpcyk7Ci0gICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuYXNz
dW1lUmVhZEFjY2Vzc1RvQmFzZVVSTChXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdG9yQmFzZVVS
TCgpKTsKKyAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5hc3N1bWVSZWFkQWNjZXNzVG9C
YXNlVVJMKCptX2luc3BlY3RvclBhZ2UsIFdlYkluc3BlY3RvclByb3h5OjppbnNwZWN0b3JCYXNl
VVJMKCkpOwogfQogCiB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpjbG9zZUZyb250ZW5k
UGFnZUFuZFdpbmRvdygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJJ
bnNwZWN0b3JQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQ
cm94eS5jcHAKaW5kZXggYmVjNTAyYmQ1OGJjNzIwNGNiYjIxY2VkNmI5NDBjOGFlYzEyYmUzNi4u
MzA4YzUwNGMxMjhjYjA1YTE2YTEyYTQ4OTdiNDdjNTg2YzQ4NDUzZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNwcApAQCAtMzg1LDcgKzM4NSw3IEBA
IHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmNyZWF0ZUZyb250ZW5kUGFnZSgpCiAgICAgdHJhY2tJ
bnNwZWN0b3JQYWdlKG1faW5zcGVjdG9yUGFnZSk7CiAKICAgICBtX2luc3BlY3RvclBhZ2UtPnBy
b2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5Ojpt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCksICp0aGlzKTsK
LSAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5hc3N1bWVSZWFkQWNjZXNzVG9CYXNlVVJM
KFdlYkluc3BlY3RvclByb3h5OjppbnNwZWN0b3JCYXNlVVJMKCkpOworICAgIG1faW5zcGVjdG9y
UGFnZS0+cHJvY2VzcygpLmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwoKm1faW5zcGVjdG9yUGFn
ZSwgV2ViSW5zcGVjdG9yUHJveHk6Omluc3BlY3RvckJhc2VVUkwoKSk7CiB9CiAKIHZvaWQgV2Vi
SW5zcGVjdG9yUHJveHk6Om9wZW5Mb2NhbEluc3BlY3RvckZyb250ZW5kKGJvb2wgY2FuQXR0YWNo
LCBib29sIHVuZGVyVGVzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CmluZGV4IGNjZmE4Njk0N2ZlMDFlMWVmMGMzZGRjMGFkOTg2ZWUwYjg0YTRmYjkuLmY4NGU5Y2Rj
OGUwNzVlODNjY2ZkMGNiMmQ2MTFmMzFiMzJlYTI0NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMjQwLDcgKzI0MCw3IEBACiAjZGVmaW5lIE1FUkdFX1dI
RUVMX0VWRU5UUyAxCiAKICNkZWZpbmUgTUVTU0FHRV9DSEVDSyhhc3NlcnRpb24pIE1FU1NBR0Vf
Q0hFQ0tfQkFTRShhc3NlcnRpb24sIG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigpKQotI2RlZmluZSBN
RVNTQUdFX0NIRUNLX1VSTCh1cmwpIE1FU1NBR0VfQ0hFQ0tfQkFTRShtX3Byb2Nlc3MtPmNoZWNr
VVJMUmVjZWl2ZWRGcm9tV2ViUHJvY2Vzcyh1cmwpLCBtX3Byb2Nlc3MtPmNvbm5lY3Rpb24oKSkK
KyNkZWZpbmUgTUVTU0FHRV9DSEVDS19VUkwodXJsKSBNRVNTQUdFX0NIRUNLX0JBU0UoY2hlY2tV
UkxSZWNlaXZlZEZyb21DdXJyZW50T3JQcmV2aW91c1dlYlByb2Nlc3ModXJsKSwgbV9wcm9jZXNz
LT5jb25uZWN0aW9uKCkpCiAKICNkZWZpbmUgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChjaGFubmVs
LCAuLi4pIFJFTEVBU0VfTE9HX0lGKGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBjaGFubmVs
LCBfX1ZBX0FSR1NfXykKIApAQCAtMTA2NSw3ICsxMDY1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb24oQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBS
ZXNvdXIKICAgICBsb2FkUGFyYW1ldGVycy5jbGllbnRSZWRpcmVjdFNvdXJjZUZvckhpc3Rvcnkg
PSBuYXZpZ2F0aW9uLmNsaWVudFJlZGlyZWN0U291cmNlRm9ySGlzdG9yeSgpOwogICAgIGJvb2wg
Y3JlYXRlZEV4dGVuc2lvbiA9IG1heWJlSW5pdGlhbGl6ZVNhbmRib3hFeHRlbnNpb25IYW5kbGUo
dXJsLCBsb2FkUGFyYW1ldGVycy5zYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsKICAgICBpZiAoY3Jl
YXRlZEV4dGVuc2lvbikKLSAgICAgICAgbV9wcm9jZXNzLT53aWxsQWNxdWlyZVVuaXZlcnNhbEZp
bGVSZWFkU2FuZGJveEV4dGVuc2lvbigpOworICAgICAgICB3aWxsQWNxdWlyZVVuaXZlcnNhbEZp
bGVSZWFkU2FuZGJveEV4dGVuc2lvbigpOwogICAgIGFkZFBsYXRmb3JtTG9hZFBhcmFtZXRlcnMo
bG9hZFBhcmFtZXRlcnMpOwogCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpMb2FkUmVxdWVzdChsb2FkUGFyYW1ldGVycyksIG1fcGFnZUlEKTsKQEAgLTExMDksNyArMTEw
OSw3IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9hZEZpbGUoY29u
c3QgU3RyaW5nJiBmaWxlVVJMU3RyaW5nLCBjb25zCiAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3Jl
YXRlSGFuZGxlKHJlc291cmNlRGlyZWN0b3J5UGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6
UmVhZE9ubHksIGxvYWRQYXJhbWV0ZXJzLnNhbmRib3hFeHRlbnNpb25IYW5kbGUpOwogICAgIGFk
ZFBsYXRmb3JtTG9hZFBhcmFtZXRlcnMobG9hZFBhcmFtZXRlcnMpOwogCi0gICAgbV9wcm9jZXNz
LT5hc3N1bWVSZWFkQWNjZXNzVG9CYXNlVVJMKHJlc291cmNlRGlyZWN0b3J5VVJMKTsKKyAgICBt
X3Byb2Nlc3MtPmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwoKnRoaXMsIHJlc291cmNlRGlyZWN0
b3J5VVJMKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRSZXF1
ZXN0KGxvYWRQYXJhbWV0ZXJzKSwgbV9wYWdlSUQpOwogICAgIG1fcHJvY2Vzcy0+cmVzcG9uc2l2
ZW5lc3NUaW1lcigpLnN0YXJ0KCk7CiAKQEAgLTExNDYsNyArMTE0Niw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5Ojpsb2FkRGF0YVdpdGhOYXZpZ2F0aW9uKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlv
biwgY29uc3QgSVBDCiAgICAgbG9hZFBhcmFtZXRlcnMudXNlckRhdGEgPSBVc2VyRGF0YShwcm9j
ZXNzKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YSkuZ2V0KCkpOwogICAgIGFk
ZFBsYXRmb3JtTG9hZFBhcmFtZXRlcnMobG9hZFBhcmFtZXRlcnMpOwogCi0gICAgbV9wcm9jZXNz
LT5hc3N1bWVSZWFkQWNjZXNzVG9CYXNlVVJMKGJhc2VVUkwpOworICAgIG1fcHJvY2Vzcy0+YXNz
dW1lUmVhZEFjY2Vzc1RvQmFzZVVSTCgqdGhpcywgYmFzZVVSTCk7CiAgICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkRGF0YShsb2FkUGFyYW1ldGVycyksIG1fcGFnZUlE
KTsKICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS5zdGFydCgpOwogfQpAQCAt
MTE4NCw4ICsxMTg0LDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OmxvYWRBbHRlcm5hdGVIVE1MKGNv
bnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgaHRtbERhdGEsIGNvbnN0IFMKICAgICBsb2FkUGFyYW1l
dGVycy51c2VyRGF0YSA9IFVzZXJEYXRhKHByb2Nlc3MoKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5k
bGVzKHVzZXJEYXRhKS5nZXQoKSk7CiAgICAgYWRkUGxhdGZvcm1Mb2FkUGFyYW1ldGVycyhsb2Fk
UGFyYW1ldGVycyk7CiAKLSAgICBtX3Byb2Nlc3MtPmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwo
YmFzZVVSTCk7Ci0gICAgbV9wcm9jZXNzLT5hc3N1bWVSZWFkQWNjZXNzVG9CYXNlVVJMKHVucmVh
Y2hhYmxlVVJMKTsKKyAgICBtX3Byb2Nlc3MtPmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwoKnRo
aXMsIGJhc2VVUkwpOworICAgIG1fcHJvY2Vzcy0+YXNzdW1lUmVhZEFjY2Vzc1RvQmFzZVVSTCgq
dGhpcywgdW5yZWFjaGFibGVVUkwpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6TG9hZEFsdGVybmF0ZUhUTUwobG9hZFBhcmFtZXRlcnMpLCBtX3BhZ2VJRCk7CiAgICAg
bV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCkuc3RhcnQoKTsKIH0KQEAgLTEyNDksNyAr
MTI0OSw3IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6cmVsb2FkKE9w
dGlvblNldDxXZWJDb3JlOjpSZWxvYWRPcHRpb24+IG9wCiAgICAgICAgIC8vIFdlIG1heSBub3Qg
aGF2ZSBhbiBleHRlbnNpb24geWV0IGlmIGJhY2svZm9yd2FyZCBsaXN0IHdhcyByZWluc3RhdGVk
IGFmdGVyIGEgV2ViUHJvY2VzcyBjcmFzaCBvciBhIGJyb3dzZXIgcmVsYXVuY2gKICAgICAgICAg
Ym9vbCBjcmVhdGVkRXh0ZW5zaW9uID0gbWF5YmVJbml0aWFsaXplU2FuZGJveEV4dGVuc2lvbkhh
bmRsZShVUkwoVVJMKCksIHVybCksIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpOwogICAgICAgICBp
ZiAoY3JlYXRlZEV4dGVuc2lvbikKLSAgICAgICAgICAgIG1fcHJvY2Vzcy0+d2lsbEFjcXVpcmVV
bml2ZXJzYWxGaWxlUmVhZFNhbmRib3hFeHRlbnNpb24oKTsKKyAgICAgICAgICAgIHdpbGxBY3F1
aXJlVW5pdmVyc2FsRmlsZVJlYWRTYW5kYm94RXh0ZW5zaW9uKCk7CiAgICAgfQogCiAgICAgaWYg
KCFpc1ZhbGlkKCkpCkBAIC00NDgxLDYgKzQ0ODEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlk
UGVyZm9ybUNsaWVudFJlZGlyZWN0KGNvbnN0IFN0cmluZyYgc291cmNlVVJMU3RyaW5nLCBjb25z
dAogICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gbV9wcm9jZXNzLT53ZWJGcmFtZShmcmFtZUlE
KTsKICAgICBNRVNTQUdFX0NIRUNLKGZyYW1lKTsKICAgICBNRVNTQUdFX0NIRUNLKGZyYW1lLT5w
YWdlKCkgPT0gdGhpcyk7CisgICAgTUVTU0FHRV9DSEVDS19VUkwoc291cmNlVVJMU3RyaW5nKTsK
ICAgICBNRVNTQUdFX0NIRUNLX1VSTChkZXN0aW5hdGlvblVSTFN0cmluZyk7CiAKICAgICBpZiAo
ZnJhbWUtPmlzTWFpbkZyYW1lKCkpIHsKQEAgLTUxNjUsNyArNTE2Niw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpiYWNrRm9yd2FyZEdvVG9JdGVtKGNvbnN0IEJhY2tGb3J3YXJkSXRlbUlkZW50aWZp
ZXImIGl0ZW1JRCwKIAogICAgIGJvb2wgY3JlYXRlZEV4dGVuc2lvbiA9IG1heWJlSW5pdGlhbGl6
ZVNhbmRib3hFeHRlbnNpb25IYW5kbGUoVVJMKFVSTCgpLCBpdGVtLT51cmwoKSksIHNhbmRib3hF
eHRlbnNpb25IYW5kbGUpOwogICAgIGlmIChjcmVhdGVkRXh0ZW5zaW9uKQotICAgICAgICBtX3By
b2Nlc3MtPndpbGxBY3F1aXJlVW5pdmVyc2FsRmlsZVJlYWRTYW5kYm94RXh0ZW5zaW9uKCk7Cisg
ICAgICAgIHdpbGxBY3F1aXJlVW5pdmVyc2FsRmlsZVJlYWRTYW5kYm94RXh0ZW5zaW9uKCk7CiAg
ICAgbV9iYWNrRm9yd2FyZExpc3QtPmdvVG9JdGVtKCppdGVtKTsKIH0KIApAQCAtODI5Myw2ICs4
Mjk0LDQyIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVDdXJyZW50TW9kaWZpZXJTdGF0ZSgp
CiAjZW5kaWYKIH0KIAorYm9vbCBXZWJQYWdlUHJveHk6OmNoZWNrVVJMUmVjZWl2ZWRGcm9tQ3Vy
cmVudE9yUHJldmlvdXNXZWJQcm9jZXNzKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKQoreworICAg
IHJldHVybiBjaGVja1VSTFJlY2VpdmVkRnJvbUN1cnJlbnRPclByZXZpb3VzV2ViUHJvY2VzcyhV
UkwoVVJMKCksIHVybFN0cmluZykpOworfQorCitib29sIFdlYlBhZ2VQcm94eTo6Y2hlY2tVUkxS
ZWNlaXZlZEZyb21DdXJyZW50T3JQcmV2aW91c1dlYlByb2Nlc3MoY29uc3QgVVJMJiB1cmwpCit7
CisgICAgaWYgKCF1cmwuaXNMb2NhbEZpbGUoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAg
ICBpZiAobV9tYXlIYXZlVW5pdmVyc2FsRmlsZVJlYWRTYW5kYm94RXh0ZW5zaW9uKQorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKworICAgIFN0cmluZyBwYXRoID0gdXJsLmZpbGVTeXN0ZW1QYXRoKCk7
CisgICAgYXV0byBzdGFydHNXaXRoVVJMUGF0aCA9IFsmcGF0aF0oY29uc3QgU3RyaW5nJiB2aXNp
dGVkUGF0aCkgeworICAgICAgICByZXR1cm4gcGF0aC5zdGFydHNXaXRoKHZpc2l0ZWRQYXRoKTsK
KyAgICB9OworCisgICAgYXV0byBsb2NhbFBhdGhzRW5kID0gbV9wcmV2aW91c2x5VmlzaXRlZFBh
dGhzLmVuZCgpOworICAgIGlmIChzdGQ6OmZpbmRfaWYobV9wcmV2aW91c2x5VmlzaXRlZFBhdGhz
LmJlZ2luKCksIGxvY2FsUGF0aHNFbmQsIHN0YXJ0c1dpdGhVUkxQYXRoKSAhPSBsb2NhbFBhdGhz
RW5kKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIHJldHVybiBtX3Byb2Nlc3MtPmNoZWNr
VVJMUmVjZWl2ZWRGcm9tV2ViUHJvY2Vzcyh1cmwpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6
YWRkUHJldmlvdXNseVZpc2l0ZWRQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBtX3By
ZXZpb3VzbHlWaXNpdGVkUGF0aHMuYWRkKHBhdGgpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6
d2lsbEFjcXVpcmVVbml2ZXJzYWxGaWxlUmVhZFNhbmRib3hFeHRlbnNpb24oKQoreworICAgIG1f
bWF5SGF2ZVVuaXZlcnNhbEZpbGVSZWFkU2FuZGJveEV4dGVuc2lvbiA9IHRydWU7CisgICAgcHJv
Y2VzcygpLndpbGxBY3F1aXJlVW5pdmVyc2FsRmlsZVJlYWRTYW5kYm94RXh0ZW5zaW9uKCk7Cit9
CisKICNpZiBFTkFCTEUoREFUQV9ERVRFQ1RJT04pCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkZXRl
Y3REYXRhSW5BbGxGcmFtZXMoV2ViQ29yZTo6RGF0YURldGVjdG9yVHlwZXMgdHlwZXMsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgRGF0YURldGVjdGlvblJlc3VsdCYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA1ZWQ2
MDcwYjliMzJmODhjMmY0OWJjZTRmM2MxMzlmYzU1NmU0NTYyLi40NmVjNTE2YjcwNjE1OGZiYzJl
Y2M1MjBmOTQ2OGVjOWEyYWRhMjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaApAQCAtMzYxLDYgKzM2MSw4IEBAIHB1YmxpYzoKICAgICBXZWJzaXRlRGF0YVN0b3JlJiB3
ZWJzaXRlRGF0YVN0b3JlKCkgeyByZXR1cm4gbV93ZWJzaXRlRGF0YVN0b3JlOyB9CiAgICAgdm9p
ZCBjaGFuZ2VXZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmUmKTsKIAorICAgIHZvaWQg
YWRkUHJldmlvdXNseVZpc2l0ZWRQYXRoKGNvbnN0IFN0cmluZyYpOworCiAjaWYgRU5BQkxFKERB
VEFfREVURUNUSU9OKQogICAgIE5TQXJyYXkgKmRhdGFEZXRlY3Rpb25SZXN1bHRzKCkgeyByZXR1
cm4gbV9kYXRhRGV0ZWN0aW9uUmVzdWx0cy5nZXQoKTsgfQogICAgIHZvaWQgZGV0ZWN0RGF0YUlu
QWxsRnJhbWVzKFdlYkNvcmU6OkRhdGFEZXRlY3RvclR5cGVzLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IERhdGFEZXRlY3Rpb25SZXN1bHQmKT4mJik7CkBAIC0xODQ0LDYgKzE4NDYsMTAg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHN0b3BVUkxTY2hlbWVUYXNrKHVpbnQ2NF90IGhhbmRsZXJJ
ZGVudGlmaWVyLCB1aW50NjRfdCB0YXNrSWRlbnRpZmllcik7CiAgICAgdm9pZCBsb2FkU3luY2hy
b25vdXNVUkxTY2hlbWVUYXNrKFVSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzJiYsIE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkxvYWRTeW5jaHJvbm91c1VSTFNjaGVtZVRhc2s6OkRlbGF5ZWRSZXBseSYm
KTsKIAorICAgIGJvb2wgY2hlY2tVUkxSZWNlaXZlZEZyb21DdXJyZW50T3JQcmV2aW91c1dlYlBy
b2Nlc3MoY29uc3QgU3RyaW5nJik7CisgICAgYm9vbCBjaGVja1VSTFJlY2VpdmVkRnJvbUN1cnJl
bnRPclByZXZpb3VzV2ViUHJvY2Vzcyhjb25zdCBVUkwmKTsKKyAgICB2b2lkIHdpbGxBY3F1aXJl
VW5pdmVyc2FsRmlsZVJlYWRTYW5kYm94RXh0ZW5zaW9uKCk7CisKICAgICB2b2lkIGhhbmRsZUF1
dG9GaWxsQnV0dG9uQ2xpY2soY29uc3QgVXNlckRhdGEmKTsKIAogICAgIHZvaWQgZGlkUmVzaWdu
SW5wdXRFbGVtZW50U3Ryb25nUGFzc3dvcmRBcHBlYXJhbmNlKGNvbnN0IFVzZXJEYXRhJik7CkBA
IC0yMjg1LDExICsyMjkxLDEzIEBAIHByaXZhdGU6CiAgICAgc3RkOjpvcHRpb25hbDxTcGVsbERv
Y3VtZW50VGFnPiBtX3NwZWxsRG9jdW1lbnRUYWc7CiAKICAgICBzdGQ6Om9wdGlvbmFsPE1vbm90
b25pY1RpbWU+IG1fcGFnZUxvYWRTdGFydDsKKyAgICBIYXNoU2V0PFN0cmluZz4gbV9wcmV2aW91
c2x5VmlzaXRlZFBhdGhzOwogCiAgICAgUnVuTG9vcDo6VGltZXI8V2ViUGFnZVByb3h5PiBtX3Jl
c2V0UmVjZW50Q3Jhc2hDb3VudFRpbWVyOwogICAgIHVuc2lnbmVkIG1fcmVjZW50Q3Jhc2hDb3Vu
dCB7IDAgfTsKIAogICAgIGJvb2wgbV9uZWVkc0ZvbnRBdHRyaWJ1dGVzIHsgZmFsc2UgfTsKKyAg
ICBib29sIG1fbWF5SGF2ZVVuaXZlcnNhbEZpbGVSZWFkU2FuZGJveEV4dGVuc2lvbiB7IGZhbHNl
IH07CiAKICNpZiBIQVZFKFBFTkNJTEtJVCkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RWRpdGFibGVJ
bWFnZUNvbnRyb2xsZXI+IG1fZWRpdGFibGVJbWFnZUNvbnRyb2xsZXI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCAzZTUzMjgxMTRjMzE0NTIwMGQ2
ZWJmNTdlOGEzMjk3Y2Y0NGIyZWQxLi5kZDU2N2Y4YjczY2MwNjRmMzZjYWM2MmQ2ZDQ3YWRlM2M5
MzY4NGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAK
QEAgLTQ5Nyw3ICs0OTcsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkRGVzdHJveVdlYlVz
ZXJDb250ZW50Q29udHJvbGxlclByb3h5KFdlYlVzZXJDb250ZW50Q29udAogICAgIG1fd2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveGllcy5yZW1vdmUoJnByb3h5KTsKIH0KIAotdm9pZCBXZWJQ
cm9jZXNzUHJveHk6OmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwoY29uc3QgU3RyaW5nJiB1cmxT
dHJpbmcpCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6YXNzdW1lUmVhZEFjY2Vzc1RvQmFzZVVSTChX
ZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKQogewogICAgIFVSTCB1
cmwoVVJMKCksIHVybFN0cmluZyk7CiAgICAgaWYgKCF1cmwuaXNMb2NhbEZpbGUoKSkKQEAgLTUx
Myw2ICs1MTMsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6YXNzdW1lUmVhZEFjY2Vzc1RvQmFz
ZVVSTChjb25zdCBTdHJpbmcmIHVybFN0cmluZykKICAgICAvLyBDbGllbnQgbG9hZHMgYW4gYWx0
ZXJuYXRlIHN0cmluZy4gVGhpcyBkb2Vzbid0IGdyYW50IHVuaXZlcnNhbCBmaWxlIHJlYWQsIGJ1
dCB0aGUgd2ViIHByb2Nlc3MgaXMgYXNzdW1lZAogICAgIC8vIHRvIGhhdmUgcmVhZCBhY2Nlc3Mg
dG8gdGhpcyBkaXJlY3RvcnkgYWxyZWFkeS4KICAgICBtX2xvY2FsUGF0aHNXaXRoQXNzdW1lZFJl
YWRBY2Nlc3MuYWRkKHBhdGgpOworICAgIHBhZ2UuYWRkUHJldmlvdXNseVZpc2l0ZWRQYXRoKHBh
dGgpOwogfQogCiBib29sIFdlYlByb2Nlc3NQcm94eTo6aGFzQXNzdW1lZFJlYWRBY2Nlc3NUb1VS
TChjb25zdCBVUkwmIHVybCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5LmgKaW5kZXggNmY3OWE4MzI2NDIxNjFlMGM0MTBjODA1MDFkYWRmNDY5ZTQwNTg2Ni4u
MjM2MWFlNzczYTc3ZWZlY2JmYTU2NDlhZWU3NjJlNTk2ZTdiZGE5NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKQEAgLTE1Myw3ICsxNTMsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCB1cGRhdGVUZXh0Q2hlY2tlclN0YXRlKCk7CiAKICAgICB2b2lkIHdpbGxBY3F1
aXJlVW5pdmVyc2FsRmlsZVJlYWRTYW5kYm94RXh0ZW5zaW9uKCkgeyBtX21heUhhdmVVbml2ZXJz
YWxGaWxlUmVhZFNhbmRib3hFeHRlbnNpb24gPSB0cnVlOyB9Ci0gICAgdm9pZCBhc3N1bWVSZWFk
QWNjZXNzVG9CYXNlVVJMKGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgYXNzdW1lUmVhZEFjY2Vz
c1RvQmFzZVVSTChXZWJQYWdlUHJveHkmLCBjb25zdCBTdHJpbmcmKTsKICAgICBib29sIGhhc0Fz
c3VtZWRSZWFkQWNjZXNzVG9VUkwoY29uc3QgVVJMJikgY29uc3Q7CiAKICAgICBib29sIGNoZWNr
VVJMUmVjZWl2ZWRGcm9tV2ViUHJvY2Vzcyhjb25zdCBTdHJpbmcmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCmluZGV4IGUyYWIyOWMyYjVjNjcx
NzU4NDYzN2IzYjdhZWNjMjA4Yjc2MzY4NjQuLmQxYWUwOWFiM2E2YWEyMjU1YWIyYTllODRhYTIy
YTYyNmRhMzRiYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQ
YWdlUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQ
cm94eU1hYy5tbQpAQCAtNjUsNyArNjUsNyBAQAogI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nQ29u
Y2F0ZW5hdGUuaD4KIAogI2RlZmluZSBNRVNTQUdFX0NIRUNLKGFzc2VydGlvbikgTUVTU0FHRV9D
SEVDS19CQVNFKGFzc2VydGlvbiwgcHJvY2VzcygpLmNvbm5lY3Rpb24oKSkKLSNkZWZpbmUgTUVT
U0FHRV9DSEVDS19VUkwodXJsKSBNRVNTQUdFX0NIRUNLX0JBU0UobV9wcm9jZXNzLT5jaGVja1VS
TFJlY2VpdmVkRnJvbVdlYlByb2Nlc3ModXJsKSwgbV9wcm9jZXNzLT5jb25uZWN0aW9uKCkpCisj
ZGVmaW5lIE1FU1NBR0VfQ0hFQ0tfVVJMKHVybCkgTUVTU0FHRV9DSEVDS19CQVNFKGNoZWNrVVJM
UmVjZWl2ZWRGcm9tQ3VycmVudE9yUHJldmlvdXNXZWJQcm9jZXNzKHVybCksIG1fcHJvY2Vzcy0+
Y29ubmVjdGlvbigpKQogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>