<?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>205967</bug_id>
          
          <creation_ts>2020-01-08 15:53:57 -0800</creation_ts>
          <short_desc>[Media in GPU process] Extend the GPU process sandbox to allow access to local files when necessary</short_desc>
          <delta_ts>2020-01-10 21:32:33 -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>Media</component>
          <version>Other</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>205123</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>peng.liu6</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1604328</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2020-01-08 15:53:57 -0800</bug_when>
    <thetext>Extend the GPU process sandbox to allow access to local files before opening a file:// url</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604329</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-01-08 15:54:11 -0800</bug_when>
    <thetext>&lt;rdar://problem/58425020&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604339</commentid>
    <comment_count>2</comment_count>
      <attachid>387155</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2020-01-08 16:03:42 -0800</bug_when>
    <thetext>Created attachment 387155
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604383</commentid>
    <comment_count>3</comment_count>
      <attachid>387155</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-01-08 17:12:51 -0800</bug_when>
    <thetext>Comment on attachment 387155
Patch

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

&gt; Source/WebKit/GPUProcess/GPUProcess.cpp:141
&gt; +    for (auto&amp; url : urls) {
&gt; +        auto extension = m_mediaCaptureSandboxExtensions.take(url);

Iterating while taking looks wrong. I think you want a while (!urls.isEmpty()) or something</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604384</commentid>
    <comment_count>4</comment_count>
      <attachid>387155</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-01-08 17:13:10 -0800</bug_when>
    <thetext>Comment on attachment 387155
Patch

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

&gt;&gt; Source/WebKit/GPUProcess/GPUProcess.cpp:141
&gt;&gt; +        auto extension = m_mediaCaptureSandboxExtensions.take(url);
&gt; 
&gt; Iterating while taking looks wrong. I think you want a while (!urls.isEmpty()) or something

Oh wait it&apos;s a different set</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604386</commentid>
    <comment_count>5</comment_count>
      <attachid>387155</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-01-08 17:14:20 -0800</bug_when>
    <thetext>Comment on attachment 387155
Patch

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

&gt; Source/WebKit/GPUProcess/GPUProcess.cpp:121
&gt; +void GPUProcess::issueMediaFileAccessSandboxExtension(URL&amp;&amp; url, SandboxExtension::Handle&amp;&amp; sandboxExtensionHandle)
&gt; +{

Should this be specific to &quot;media&quot; files, or just a generic &quot;please issue/revoke this sandbox extension&quot; for the whole process? You never operate on all of them as a set (which is why I initially thought this made sense)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604387</commentid>
    <comment_count>6</comment_count>
      <attachid>387155</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-01-08 17:15:26 -0800</bug_when>
    <thetext>Comment on attachment 387155
Patch

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

&gt; Source/WebKit/UIProcess/GPU/GPUProcessProxy.cpp:114
&gt; +std::pair&lt;uint64_t&amp;, uint64_t&amp;&gt; GPUProcessProxy::useCountsForURL(WebCore::ProcessIdentifier pid, const URL&amp; url)

This is really icky, returning references to values in a hashMap. It would be way too easy to write code that stores those references, deletes an entry, then assigns a value to the reference.

&gt; Source/WebKit/UIProcess/GPU/GPUProcessProxy.cpp:209
&gt; +    processCount = globalCount = 1;

Like right here; it&apos;s very unclear that this is changing values in the hashmap.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604568</commentid>
    <comment_count>7</comment_count>
      <attachid>387155</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-01-09 03:23:21 -0800</bug_when>
    <thetext>Comment on attachment 387155
Patch

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

&gt; Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:95
&gt; +    m_manager.parentProcess().canLoadRemoteMediaPlayerURL(url, [this, url, contentType, keySystem, weakThis = makeWeakPtr(*this)](bool canLoad) {

We should be able to simplify this approach a bit, for instance by reusing the approach done for local files between WebProcess and NetworkProcess.
In the current model, the WebProcess should have received a sandbox extension that will allow to get access to the file (which probably allows in-process media loading).
This should allow the WebProcess to directly create the sandbox extension for the media file and send it to the GPUProcess as part of this media load request.
A bonus would be to manage the sandbox extension revocation inside MediaPlayerPrivateRemote.

&gt; Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:97
&gt; +            return;

In case the sandbox extension cannot be sent to GPUProcess, we should probably make sure the load fails and WebProcess gets notified of it.
If we generate the sandbox extension in WebProcess and it fails, this could be done inside MediaPlayerPrivateRemote::MediaPlayerPrivateRemote::load.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604816</commentid>
    <comment_count>8</comment_count>
      <attachid>387264</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2020-01-09 13:24:23 -0800</bug_when>
    <thetext>Created attachment 387264
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604821</commentid>
    <comment_count>9</comment_count>
      <attachid>387266</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2020-01-09 13:33:37 -0800</bug_when>
    <thetext>Created attachment 387266
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605022</commentid>
    <comment_count>10</comment_count>
      <attachid>387266</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-01-10 00:40:18 -0800</bug_when>
    <thetext>Comment on attachment 387266
Patch

LGTM.
I think we can improve the handling of mediaCacheDirectory/mediaKeyStorageDirectory here or as follow-up.

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

&gt; Source/WebKit/GPUProcess/GPUProcess.h:87
&gt; +    HashMap&lt;URL, RefPtr&lt;SandboxExtension&gt;&gt; m_mediaCaptureSandboxExtensions;

s/RefPtr/Ref/

&gt; Source/WebKit/GPUProcess/GPUProcessMediaConfiguration.h:44
&gt; +    String mediaKeyStorageDirectory;

I do not see mediaCacheDirectory and mediaKeyStorageDirectory being used, probably because we are sending this information for each remote player.

&gt; Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.cpp:102
&gt; +            return;

Rethinking about it, we might not need to error the load here.
If the sandbox extension cannot be created, the load will ultimately fail, there will be a sandbox violation reported in the console.

&gt; Source/WebKit/UIProcess/GPU/GPUProcessProxy.cpp:131
&gt; +    if (!m_haveExtendedProcessSandbox) {

We cannot really use a boolean since GPUProcess might support more than one sessionID.
I guess for now, I would remove m_haveExtendedProcessSandbox and always send this information.

As follow-up, it seems we should improve the handling of mediaCacheDirectory/mediaKeyStorageDirectory:

We currently send mediaCacheDirectory/mediaKeyStorageDirectory to GPUProcess when creating a remote player.
It would seem more consistent to send both sandbox extensions and directory paths together.
We could send the sandboxes for each remote player but this creates some overhead for each remote player.

I guess it might be best to store in GPUProcess a map SessionID -&gt; MediaCache configuration parameters.
GPUProcessProxy would send IPC messages to add entries in this map and remove an entry when a WebsiteDataStore gets deleted.
When creating a remote player in GPU Process, we would query the map to get the corresponding cache directory paths.

Also, if we are sending the mediaCacheDirectory/mediaKeyStorageDirectory sandboxes from GPUProcessProxy to GPUProcess, we probably do not need to send the same sandbox extensions to WebProcess in that configuration.

&gt; Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:102
&gt; +        Optional&lt;audit_token_t&gt; auditToken = m_manager.gpuProcessConnection().auditToken();

s/Optional&lt;audit_token_t&gt;/auto/

&gt; Source/WebKit/WebProcess/GPU/media/RemoteMediaPlayerManager.cpp:340
&gt; +    return *m_gpuProcessConnection;

Why not just &quot;return WebProcess::singleton().ensureGPUProcessConnection();&quot; and remove m_gpuProcessConnection?

&gt; Source/WebKit/WebProcess/WebProcess.cpp:1303
&gt; +        m_gpuProcessConnection-&gt;setAuditToken(WTFMove(connectionInfo.auditToken));

Should we assert here that auditToken is not null?

&gt; LayoutTests/gpu-process/TestExpectations:220
&gt; +media/video-play-audio-require-user-gesture.html [ Pass ]

Nice!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605242</commentid>
    <comment_count>11</comment_count>
      <attachid>387266</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2020-01-10 12:33:08 -0800</bug_when>
    <thetext>Comment on attachment 387266
Patch

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

&gt;&gt; Source/WebKit/GPUProcess/GPUProcess.h:87
&gt;&gt; +    HashMap&lt;URL, RefPtr&lt;SandboxExtension&gt;&gt; m_mediaCaptureSandboxExtensions;
&gt; 
&gt; s/RefPtr/Ref/

This was cruft left over from an earlier version, removed.

&gt;&gt; Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.cpp:102
&gt;&gt; +            return;
&gt; 
&gt; Rethinking about it, we might not need to error the load here.
&gt; If the sandbox extension cannot be created, the load will ultimately fail, there will be a sandbox violation reported in the console.

Good point, reverted.

&gt;&gt; Source/WebKit/UIProcess/GPU/GPUProcessProxy.cpp:131
&gt;&gt; +    if (!m_haveExtendedProcessSandbox) {
&gt; 
&gt; We cannot really use a boolean since GPUProcess might support more than one sessionID.
&gt; I guess for now, I would remove m_haveExtendedProcessSandbox and always send this information.
&gt; 
&gt; As follow-up, it seems we should improve the handling of mediaCacheDirectory/mediaKeyStorageDirectory:
&gt; 
&gt; We currently send mediaCacheDirectory/mediaKeyStorageDirectory to GPUProcess when creating a remote player.
&gt; It would seem more consistent to send both sandbox extensions and directory paths together.
&gt; We could send the sandboxes for each remote player but this creates some overhead for each remote player.
&gt; 
&gt; I guess it might be best to store in GPUProcess a map SessionID -&gt; MediaCache configuration parameters.
&gt; GPUProcessProxy would send IPC messages to add entries in this map and remove an entry when a WebsiteDataStore gets deleted.
&gt; When creating a remote player in GPU Process, we would query the map to get the corresponding cache directory paths.
&gt; 
&gt; Also, if we are sending the mediaCacheDirectory/mediaKeyStorageDirectory sandboxes from GPUProcessProxy to GPUProcess, we probably do not need to send the same sandbox extensions to WebProcess in that configuration.

Great idea. I implemented your suggestion, but it is a lot of new code so I removed the configuration code and will post a new patch for that change.

&gt;&gt; Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:102
&gt;&gt; +        Optional&lt;audit_token_t&gt; auditToken = m_manager.gpuProcessConnection().auditToken();
&gt; 
&gt; s/Optional&lt;audit_token_t&gt;/auto/

Fixed

&gt;&gt; Source/WebKit/WebProcess/GPU/media/RemoteMediaPlayerManager.cpp:340
&gt;&gt; +    return *m_gpuProcessConnection;
&gt; 
&gt; Why not just &quot;return WebProcess::singleton().ensureGPUProcessConnection();&quot; and remove m_gpuProcessConnection?

This is called a lot, so caching the connection saves two function calls every time.

&gt;&gt; Source/WebKit/WebProcess/WebProcess.cpp:1303
&gt;&gt; +        m_gpuProcessConnection-&gt;setAuditToken(WTFMove(connectionInfo.auditToken));
&gt; 
&gt; Should we assert here that auditToken is not null?

Yes, added.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605249</commentid>
    <comment_count>12</comment_count>
      <attachid>387364</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2020-01-10 12:44:06 -0800</bug_when>
    <thetext>Created attachment 387364
Patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605413</commentid>
    <comment_count>13</comment_count>
      <attachid>387364</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-10 17:07:30 -0800</bug_when>
    <thetext>Comment on attachment 387364
Patch for landing.

Rejecting attachment 387364 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-01&apos;, &apos;validate-changelog&apos;, &apos;--check-oops&apos;, &apos;--non-interactive&apos;, 387364, &apos;--port=mac&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

ChangeLog entry in LayoutTests/ChangeLog contains OOPS!.

Full output: https://webkit-queues.webkit.org/results/13302928</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605479</commentid>
    <comment_count>14</comment_count>
      <attachid>387418</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2020-01-10 20:45:45 -0800</bug_when>
    <thetext>Created attachment 387418
Patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605490</commentid>
    <comment_count>15</comment_count>
      <attachid>387418</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-10 21:32:31 -0800</bug_when>
    <thetext>Comment on attachment 387418
Patch for landing.

Clearing flags on attachment: 387418

Committed r254392: &lt;https://trac.webkit.org/changeset/254392&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605491</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-10 21:32:33 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387155</attachid>
            <date>2020-01-08 16:03:42 -0800</date>
            <delta_ts>2020-01-09 13:24:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205967-20200108160339.patch</filename>
            <type>text/plain</type>
            <size>40896</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0MTUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGFhNjU5YWIyYmY4MDE2MWI2
ZGQ4NzAyNjYzMGI1YTBiMTg4NjAyZWIuLjVkMjgxNDE5ZDMxNGJhNDgzYzU2NDkyMmU3YjY3N2M3
YjYyODVhNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTYgQEAKKzIwMjAtMDEtMDggIEVyaWMgQ2Fy
bHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgW01lZGlhIGluIEdQVSBw
cm9jZXNzXSBFeHRlbmQgdGhlIEdQVSBwcm9jZXNzIHNhbmRib3ggdG8gYWxsb3cgYWNjZXNzIHRv
IGxvY2FsIGZpbGVzIHdoZW4gbmVjZXNzYXJ5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDU5NjcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU4NDI1
MDIwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5v
IG5ldyB0ZXN0cywgdW4tc2tpcHBlZCBleGlzdGluZyB0ZXN0cyB0aGF0IHBhc3MgYmVjYXVzZSBv
ZiB0aGlzIGNoYW5nZS4KKyAgICAgICAgCisgICAgICAgIFRoZSBHUFUgcHJvY2VzcyBzYW5kYm94
IGRvZXMgbm90IGFsbG93IGFjY2VzcyB0byBsb2NhbCBmaWxlcyBzbyBleHRlbmQgaXQgYmVmb3Jl
IAorICAgICAgICBhdHRlbXB0aW5nIHRvIG9wZW4gYSBmaWxlOi8vIHVybCwgYW5kIHJldm9rZSB0
aGUgZXh0ZW5zaW9uIHdoZW4gdGhlIGZpbGUgaXMgY2xvc2VkLgorCisgICAgICAgICogR1BVUHJv
Y2Vzcy9HUFVQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVUHJvY2Vzczo6Y29uZmln
dXJlRm9yTWVkaWFQbGF5YmFjayk6CisgICAgICAgIChXZWJLaXQ6OkdQVVByb2Nlc3M6Omlzc3Vl
TWVkaWFGaWxlQWNjZXNzU2FuZGJveEV4dGVuc2lvbik6CisgICAgICAgIChXZWJLaXQ6OkdQVVBy
b2Nlc3M6OnJldm9rZU1lZGlhRmlsZUFjY2Vzc1NhbmRib3hFeHRlbnNpb24pOgorICAgICAgICAq
IEdQVVByb2Nlc3MvR1BVUHJvY2Vzcy5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvR1BVUHJvY2Vz
cy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVVByb2Nlc3NNZWRpYUNvbmZp
Z3VyYXRpb24uaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkdQVVByb2Nlc3NNZWRpYUNvbmZp
Z3VyYXRpb246OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OkdQVVByb2Nlc3NNZWRp
YUNvbmZpZ3VyYXRpb246OmRlY29kZSk6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9HUFUvR1BV
UHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVUHJvY2Vzc1Byb3h5OjpzdG9w
cGVkVXNpbmdSZW1vdGVNZWRpYVBsYXllclVSTCk6CisgICAgICAgIChXZWJLaXQ6OkdQVVByb2Nl
c3NQcm94eTo6cHJvY2Vzc0RpZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6R1BVUHJvY2Vzc1By
b3h5OjpjYW5Mb2FkUmVtb3RlTWVkaWFQbGF5ZXJVUkwpOgorICAgICAgICAoV2ViS2l0OjpHUFVQ
cm9jZXNzUHJveHk6Om9wZW5HUFVQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6
OkdQVVByb2Nlc3NQcm94eTo6Z3B1UHJvY2Vzc0NyYXNoZWQpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9HUFUvR1BVUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmNhbkxvYWRSZW1vdGVN
ZWRpYVBsYXllclVSTCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzdG9wcGVk
VXNpbmdSZW1vdGVNZWRpYVBsYXllclVSTCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
b29sOjpkaXNjb25uZWN0UHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6Y2FuTG9hZFJlbW90ZU1lZGlhUGxheWVyVVJMKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpzdG9wcGVkVXNpbmdSZW1vdGVNZWRp
YVBsYXllclVSTCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICog
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp+TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlKToKKyAg
ICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6OmxvYWQpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6OmNhbmNlbExvYWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZU1lZGlhUGxheWVyTWFuYWdlci5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXI6OnBhcmVudFByb2Nlc3MgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmNhbkxvYWRSZW1vdGVN
ZWRpYVBsYXllclVSTCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnN0b3BwZWRVc2lu
Z1JlbW90ZU1lZGlhUGxheWVyVVJMKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
aDoKKwogMjAyMC0wMS0wNyAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAg
ICAgICAgRmlyc3QgY2hhcmFjdGVyIGluIGVhY2ggd29yZC13cmFwcGVkIGxpbmUgaGFzIGluY29y
cmVjdCBjaGFyYWN0ZXIgcmVjdCB3aGVuIHJlcXVlc3RlZCByYW5nZSBzcGFucyBtdWx0aXBsZSBs
aW5lcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3MuY3Bw
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3MuY3BwCmluZGV4IDFkZjM1M2Jh
NTdlNWJlNjk2MDQyNjQ2ODUyYWYzNmY0ODU4YTE4ZmYuLjlhZjcxYjhiMWEwMTcwMmFkNjU0YTE4
MGFlZGIzZjcwOWU3MjY3NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9H
UFVQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVUHJvY2Vzcy5j
cHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOS0yMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMzQsNyArMzQsOSBAQAogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiR1BVUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycy5oIgorI2luY2x1ZGUgIkdQVVByb2Nlc3NNZWRpYUNvbmZpZ3VyYXRpb24uaCIK
ICNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgogI2lu
Y2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2xN
ZXNzYWdlcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTG9nSW5pdGlhbGl6YXRpb24uaD4KQEAgLTEw
OSw2ICsxMTEsNDAgQEAgdm9pZCBHUFVQcm9jZXNzOjppbml0aWFsaXplR1BVUHJvY2VzcyhHUFVQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICBzZXRNb2NrQ2FwdHVy
ZURldmljZXNFbmFibGVkKHBhcmFtZXRlcnMudXNlTW9ja0NhcHR1cmVEZXZpY2VzKTsKIH0KIAor
dm9pZCBHUFVQcm9jZXNzOjpjb25maWd1cmVGb3JNZWRpYVBsYXliYWNrKEdQVVByb2Nlc3NNZWRp
YUNvbmZpZ3VyYXRpb24mJiBjb25maWd1cmF0aW9uKQoreworICAgIFNhbmRib3hFeHRlbnNpb246
OmNvbnN1bWVQZXJtYW5lbnRseShjb25maWd1cmF0aW9uLm1lZGlhQ2FjaGVEaXJlY3RvcnlFeHRl
bnNpb25IYW5kbGUpOworICAgIFNhbmRib3hFeHRlbnNpb246OmNvbnN1bWVQZXJtYW5lbnRseShj
b25maWd1cmF0aW9uLm1lZGlhS2V5U3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7Cit9
CisKK3ZvaWQgR1BVUHJvY2Vzczo6aXNzdWVNZWRpYUZpbGVBY2Nlc3NTYW5kYm94RXh0ZW5zaW9u
KFVSTCYmIHVybCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYgc2FuZGJveEV4dGVuc2lvbkhh
bmRsZSkKK3sKKyAgICBhdXRvIGl0ZXIgPSBtX21lZGlhQ2FwdHVyZVNhbmRib3hFeHRlbnNpb25z
LmZpbmQodXJsKTsKKyAgICBpZiAoaXRlciAhPSBtX21lZGlhQ2FwdHVyZVNhbmRib3hFeHRlbnNp
b25zLmVuZCgpKSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgYXV0byBzYW5kYm94RXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lv
bjo6Y3JlYXRlKFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkpOworICAgIGlmICghc2Fu
ZGJveEV4dGVuc2lvbikgeworICAgICAgICBXVEZMb2dBbHdheXMoIlVuYWJsZSB0byBjcmVhdGUg
c2FuZGJveCBleHRlbnNpb24gZm9yIG1lZGlhIHVybC5cbiIpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgc2FuZGJveEV4dGVuc2lvbi0+Y29uc3VtZSgpOworICAgIG1fbWVkaWFDYXB0
dXJlU2FuZGJveEV4dGVuc2lvbnMuYWRkKHVybCwgV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uKSk7
Cit9CisKK3ZvaWQgR1BVUHJvY2Vzczo6cmV2b2tlTWVkaWFGaWxlQWNjZXNzU2FuZGJveEV4dGVu
c2lvbihWZWN0b3I8VVJMPiYmIHVybHMpCit7CisgICAgZm9yIChhdXRvJiB1cmwgOiB1cmxzKSB7
CisgICAgICAgIGF1dG8gZXh0ZW5zaW9uID0gbV9tZWRpYUNhcHR1cmVTYW5kYm94RXh0ZW5zaW9u
cy50YWtlKHVybCk7CisgICAgICAgIEFTU0VSVChleHRlbnNpb24pOworICAgICAgICBpZiAoZXh0
ZW5zaW9uKQorICAgICAgICAgICAgZXh0ZW5zaW9uLT5yZXZva2UoKTsKKyAgICB9Cit9CisKIHZv
aWQgR1BVUHJvY2Vzczo6cHJlcGFyZVRvU3VzcGVuZChib29sIGlzU3VzcGVuc2lvbkltbWluZW50
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAg
UkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICIlcCAtIEdQVVByb2Nlc3M6OnByZXBhcmVU
b1N1c3BlbmQoKSwgaXNTdXNwZW5zaW9uSW1taW5lbnQ6ICVkIiwgdGhpcywgaXNTdXNwZW5zaW9u
SW1taW5lbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nl
c3MuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmgKaW5kZXggYWUyMGJm
OTRhMTE1MzU4ZGE1MWVkYjVhYzMxOWM0MTNhNTlkNTQ4NC4uYzZhOGY3YzE3YjE5NjhlNzdiYzIz
N2RjODE2NTFiMmExMzYyNTAzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L0dQVVByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVUHJvY2Vzcy5o
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTI4LDE2ICsyOCwxOSBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIkF1
eGlsaWFyeVByb2Nlc3MuaCIKKyNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVk
ZSAiV2ViUGFnZVByb3h5SWRlbnRpZmllci5oIgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4K
ICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvTWVtb3J5UHJlc3N1cmVI
YW5kbGVyLmg+CisjaW5jbHVkZSA8d3RmL1VSTEhhc2guaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0
ci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2VzczsKIHN0cnVjdCBHUFVQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOworc3RydWN0IEdQVVBy
b2Nlc3NNZWRpYUNvbmZpZ3VyYXRpb247CiAKIGNsYXNzIEdQVVByb2Nlc3MgOiBwdWJsaWMgQXV4
aWxpYXJ5UHJvY2VzcywgcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEdQVVByb2Nlc3M+LCBw
dWJsaWMgQ2FuTWFrZVdlYWtQdHI8R1BVUHJvY2Vzcz4gewogICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKEdQVVByb2Nlc3MpOwpAQCAtNzIsNiArNzUsMTAgQEAgcHJpdmF0ZToKICAgICAvLyBNZXNz
YWdlIEhhbmRsZXJzCiAgICAgdm9pZCBpbml0aWFsaXplR1BVUHJvY2VzcyhHUFVQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzJiYpOwogICAgIHZvaWQgY3JlYXRlR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8SVBDOjpBdHRhY2htZW50PiYmKT4mJik7CisgICAgdm9p
ZCBjb25maWd1cmVGb3JNZWRpYVBsYXliYWNrKEdQVVByb2Nlc3NNZWRpYUNvbmZpZ3VyYXRpb24m
Jik7CisKKyAgICB2b2lkIGlzc3VlTWVkaWFGaWxlQWNjZXNzU2FuZGJveEV4dGVuc2lvbihVUkwm
JiwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYpOworICAgIHZvaWQgcmV2b2tlTWVkaWFGaWxl
QWNjZXNzU2FuZGJveEV4dGVuc2lvbihWZWN0b3I8VVJMPiYmKTsKIAogICAgIHZvaWQgcHJvY2Vz
c0RpZFRyYW5zaXRpb25Ub0ZvcmVncm91bmQoKTsKICAgICB2b2lkIHByb2Nlc3NEaWRUcmFuc2l0
aW9uVG9CYWNrZ3JvdW5kKCk7CkBAIC03OSw2ICs4Niw4IEBAIHByaXZhdGU6CiAKICAgICAvLyBD
b25uZWN0aW9ucyB0byBXZWJQcm9jZXNzZXMuCiAgICAgSGFzaE1hcDxXZWJDb3JlOjpQcm9jZXNz
SWRlbnRpZmllciwgUmVmPEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+PiBtX3dlYlByb2Nlc3ND
b25uZWN0aW9uczsKKworICAgIEhhc2hNYXA8VVJMLCBSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4+
IG1fbWVkaWFDYXB0dXJlU2FuZGJveEV4dGVuc2lvbnM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3MubWVzc2FnZXMu
aW4KaW5kZXggM2ZjZGYxYmRmMTRhZTkyMGVkYWU2Yzk5OTdmNTA2ZDkyMDBkNjZhZi4uODMwNWE1
YzFlNjNhYzQwOWM3YmViYmIxNWQyYmJjNmJhMGMxNjEyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL0dQVVByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTEsNCArMSw0IEBACi0jIENv
cHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHly
aWdodCAoQykgMjAxOS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjksNiArMjksMTAgQEAgbWVzc2FnZXMgLT4gR1BV
UHJvY2VzcyB7CiAgICAgIyBDcmVhdGVzIGEgY29ubmVjdGlvbiBmb3IgY29tbXVuaWNhdGlvbiB3
aXRoIGEgV2ViUHJvY2VzcwogICAgIENyZWF0ZUdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoV2Vi
Q29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCkgLT4gKE9wdGlvbmFsPElQQzo6QXR0YWNobWVudD4gY29ubmVjdGlvbklkZW50
aWZpZXIpIEFzeW5jCiAKKyAgICBDb25maWd1cmVGb3JNZWRpYVBsYXliYWNrKHN0cnVjdCBXZWJL
aXQ6OkdQVVByb2Nlc3NNZWRpYUNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbikKKyAgICBJc3N1
ZU1lZGlhRmlsZUFjY2Vzc1NhbmRib3hFeHRlbnNpb24oVVJMIHVybCwgV2ViS2l0OjpTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4dGVuc2lvbikKKyAgICBSZXZva2VNZWRpYUZpbGVB
Y2Nlc3NTYW5kYm94RXh0ZW5zaW9uKFZlY3RvcjxVUkw+IHVybHMpCisKICAgICBQcm9jZXNzRGlk
VHJhbnNpdGlvblRvRm9yZWdyb3VuZCgpCiAgICAgUHJvY2Vzc0RpZFRyYW5zaXRpb25Ub0JhY2tn
cm91bmQoKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVUHJvY2Vz
c01lZGlhQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nl
c3NNZWRpYUNvbmZpZ3VyYXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZWJlZjQ3NzdlN2UyZDE4NDBmYWY0
YTdhY2RmZmQ0OGExZTRkM2ZiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL0dQVVByb2Nlc3NNZWRpYUNvbmZpZ3VyYXRpb24uaApAQCAtMCwwICsxLDkwIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisKKyNp
bmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCisKK25hbWVzcGFjZSBJUEMgeworY2xhc3MgRGVj
b2RlcjsKK2NsYXNzIEVuY29kZXI7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdHJ1Y3Qg
R1BVUHJvY2Vzc01lZGlhQ29uZmlndXJhdGlvbiB7CisgICAgR1BVUHJvY2Vzc01lZGlhQ29uZmln
dXJhdGlvbigpID0gZGVmYXVsdDsKKworICAgIFN0cmluZyBtZWRpYUNhY2hlRGlyZWN0b3J5Owor
ICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBtZWRpYUNhY2hlRGlyZWN0b3J5RXh0ZW5zaW9u
SGFuZGxlOworICAgIFN0cmluZyBtZWRpYUtleVN0b3JhZ2VEaXJlY3Rvcnk7CisgICAgU2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlIG1lZGlhS2V5U3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRs
ZTsKKworICAgIGJvb2wgdXNlTW9ja0NhcHR1cmVEZXZpY2VzIHsgZmFsc2UgfTsKKworICAgIHRl
bXBsYXRlPGNsYXNzIEVuY29kZXI+CisgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKKyAgICB7CisgICAgICAgIGVuY29kZXIgPDwgbWVkaWFDYWNoZURpcmVjdG9yeTsKKyAg
ICAgICAgZW5jb2RlciA8PCBtZWRpYUNhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOworICAg
ICAgICBlbmNvZGVyIDw8IG1lZGlhS2V5U3RvcmFnZURpcmVjdG9yeTsKKyAgICAgICAgZW5jb2Rl
ciA8PCBtZWRpYUtleVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CisgICAgfQorCisg
ICAgdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+CisgICAgc3RhdGljIE9wdGlvbmFsPEdQVVByb2Nl
c3NNZWRpYUNvbmZpZ3VyYXRpb24+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorICAgIHsKKyAg
ICAgICAgU3RyaW5nIG1lZGlhQ2FjaGVEaXJlY3Rvcnk7CisgICAgICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUobWVkaWFDYWNoZURpcmVjdG9yeSkpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworCisgICAgICAgIE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gbWVkaWFD
YWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKKyAgICAgICAgZGVjb2RlciA+PiBtZWRpYUNh
Y2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOworICAgICAgICBpZiAoIW1lZGlhQ2FjaGVEaXJl
Y3RvcnlFeHRlbnNpb25IYW5kbGUpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
CisgICAgICAgIFN0cmluZyBtZWRpYUtleVN0b3JhZ2VEaXJlY3Rvcnk7CisgICAgICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUobWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5KSkKKyAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlPiBtZWRpYUtleVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CisgICAgICAg
IGRlY29kZXIgPj4gbWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOworICAg
ICAgICBpZiAoIW1lZGlhS2V5U3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSkKKyAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgcmV0dXJuIHt7CisgICAgICAg
ICAgICBXVEZNb3ZlKG1lZGlhQ2FjaGVEaXJlY3RvcnkpLAorICAgICAgICAgICAgV1RGTW92ZSgq
bWVkaWFDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSksCisgICAgICAgICAgICBXVEZNb3Zl
KG1lZGlhS2V5U3RvcmFnZURpcmVjdG9yeSksCisgICAgICAgICAgICBXVEZNb3ZlKCptZWRpYUtl
eVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpLAorICAgICAgICB9fTsKKyAgICB9Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VT
UykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRp
YVBsYXllck1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmgKaW5kZXggMDRmNmMwOGVlNWEwOWFjYWI1ZGI0
MDNhYzY1OTRiNjllYzVlNzdmNi4uNDNhMTYyNzYwZjE5MDU4YzI4MDE2ODc0MDUxMGZhZTQ5ZWIz
OTk3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmgKQEAgLTMwLDYgKzMwLDcgQEAKICNp
bmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
SWRlbnRpZmllci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIlNh
bmRib3hFeHRlbnNpb24uaCIKICNpbmNsdWRlIDxXZWJDb3JlL01lZGlhUGxheWVyLmg+CiAjaW5j
bHVkZSA8d3RmL0xvZ2dlckhlbHBlci5oPgogCkBAIC0xMTMsNiArMTE0LDkgQEAgcHJpdmF0ZToK
ICAgICBIYXNoTWFwPE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIsIHN0ZDo6dW5p
cXVlX3B0cjxSZW1vdGVNZWRpYVBsYXllclByb3h5Pj4gbV9wcm94aWVzOwogICAgIEdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MmIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzczsKIAorICAgIHZv
aWQgZ3JhbnRGaWxlQWNjZXNzU2FuZGJveEV4dGVuc2lvbnMoY29uc3QgVVJMJiwgU2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlJiYpOworICAgIHZvaWQgcmV2b2tlRmlsZUFjY2Vzc1NhbmRib3hFeHRl
bnNpb25zKGNvbnN0IFVSTCYpOworCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgY29u
c3Qgdm9pZCogbV9sb2dJZGVudGlmaWVyOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuY3BwCmluZGV4IDUwYjRiMWEwNDlmNTNkMjU4ZTAw
ZTljOGRjYTczNDA3MjFmODk5MjYuLjBmNTVlMjMxNTRlNzViMjI2NWMwYjE3Y2YzM2JiZjFmYmMy
MDNhNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNz
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJv
eHkuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJEcmF3aW5nQXJlYVByb3h5LmgiCiAjaW5j
bHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb25JbmZvLmgiCiAjaW5jbHVkZSAiR1BVUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycy5oIgorI2luY2x1ZGUgIkdQVVByb2Nlc3NNZWRpYUNvbmZpZ3VyYXRp
b24uaCIKICNpbmNsdWRlICJHUFVQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJHUFVQcm9j
ZXNzUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKQEAgLTQ3LDcgKzQ4LDcg
QEAKICNpbmNsdWRlIDx3dGYvc3BpL2Rhcndpbi9YUENTUEkuaD4KICNlbmRpZgogCi0jZGVmaW5l
IE1FU1NBR0VfQ0hFQ0soYXNzZXJ0aW9uKSBNRVNTQUdFX0NIRUNLX0JBU0UoYXNzZXJ0aW9uLCBj
b25uZWN0aW9uKCkpCisjZGVmaW5lIE1FU1NBR0VfQ0hFQ0soYXNzZXJ0aW9uKSBNRVNTQUdFX0NI
RUNLX0JBU0UoYXNzZXJ0aW9uLCB0aGlzLT5jb25uZWN0aW9uKCkpCiAKIG5hbWVzcGFjZSBXZWJL
aXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC0xMTAsOSArMTExLDEyOSBAQCB2b2lk
IEdQVVByb2Nlc3NQcm94eTo6Z2V0R1BVUHJvY2Vzc0Nvbm5lY3Rpb24oV2ViUHJvY2Vzc1Byb3h5
JiB3ZWJQcm9jZXNzUHJveHksCiAgICAgb3BlbkdQVVByb2Nlc3NDb25uZWN0aW9uKG1fY29ubmVj
dGlvblJlcXVlc3RJZGVudGlmaWVyLCB3ZWJQcm9jZXNzUHJveHkpOwogfQogCitzdGQ6OnBhaXI8
dWludDY0X3QmLCB1aW50NjRfdCY+IEdQVVByb2Nlc3NQcm94eTo6dXNlQ291bnRzRm9yVVJMKFdl
YkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHBpZCwgY29uc3QgVVJMJiB1cmwpCit7CisgICAgcmV0
dXJuIHsKKyAgICAgICAgbV9wcm9jZXNzVVJMTWFwLmVuc3VyZShwaWQsIFtdIHsKKyAgICAgICAg
ICAgIHJldHVybiBIYXNoTWFwPFVSTCwgdWludDY0X3Q+KCk7CisgICAgICAgIH0pLml0ZXJhdG9y
LT52YWx1ZS5lbnN1cmUodXJsLCBbXSB7IHJldHVybiAwOyB9KS5pdGVyYXRvci0+dmFsdWUsCisK
KyAgICAgICAgbV9nbG9iYWxVUkxNYXAuZW5zdXJlKHVybCwgW10geyByZXR1cm4gMDsgfSkuaXRl
cmF0b3ItPnZhbHVlCisgICAgfTsKK30KKwordm9pZCBHUFVQcm9jZXNzUHJveHk6OnN0b3BwZWRV
c2luZ1JlbW90ZU1lZGlhUGxheWVyVVJMKFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgVVJMJiYg
dXJsKQoreworICAgIGlmICghdXJsLmlzTG9jYWxGaWxlKCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGF1dG8gW3Byb2Nlc3NDb3VudCwgZ2xvYmFsQ291bnRdID0gdXNlQ291bnRzRm9yVVJMKHBy
b2Nlc3MuY29yZVByb2Nlc3NJZGVudGlmaWVyKCksIHVybCk7CisgICAgQVNTRVJUKHByb2Nlc3ND
b3VudCk7CisgICAgQVNTRVJUKGdsb2JhbENvdW50KTsKKyAgICBBU1NFUlQoZ2xvYmFsQ291bnQg
Pj0gcHJvY2Vzc0NvdW50KTsKKworICAgIGlmIChwcm9jZXNzQ291bnQgJiYgIS0tcHJvY2Vzc0Nv
dW50KQorICAgICAgICBtX3Byb2Nlc3NVUkxNYXAuZmluZChwcm9jZXNzLmNvcmVQcm9jZXNzSWRl
bnRpZmllcigpKS0+dmFsdWUucmVtb3ZlKHVybCk7CisKKyAgICBpZiAoZ2xvYmFsQ291bnQgJiYg
IS0tZ2xvYmFsQ291bnQpIHsKKyAgICAgICAgbV9nbG9iYWxVUkxNYXAucmVtb3ZlKHVybCk7Cisg
ICAgICAgIGNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6R1BVUHJvY2Vzczo6UmV2b2tlTWVk
aWFGaWxlQWNjZXNzU2FuZGJveEV4dGVuc2lvbih7IHVybCB9KSwgMCk7CisgICAgfQorfQorCit2
b2lkIEdQVVByb2Nlc3NQcm94eTo6cHJvY2Vzc0RpZENsb3NlKFdlYlByb2Nlc3NQcm94eSYgcHJv
Y2VzcykKK3sKKyAgICBpZiAoIW1fcHJvY2Vzc1VSTE1hcC5jb250YWlucyhwcm9jZXNzLmNvcmVQ
cm9jZXNzSWRlbnRpZmllcigpKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgVmVjdG9yPFVSTD4g
cmVtb3ZlZDsKKyAgICBhdXRvIG1hcCA9IG1fcHJvY2Vzc1VSTE1hcC50YWtlKHByb2Nlc3MuY29y
ZVByb2Nlc3NJZGVudGlmaWVyKCkpOworICAgIGZvciAoYXV0byYgdXJsIDogbWFwLmtleXMoKSkg
eworICAgICAgICBhdXRvJiBwcm9jZXNzQ291bnQgPSBtYXAuZmluZCh1cmwpLT52YWx1ZTsKKyAg
ICAgICAgQVNTRVJUKHByb2Nlc3NDb3VudCk7CisKKyAgICAgICAgYXV0byBpdGVyYXRvciA9IG1f
Z2xvYmFsVVJMTWFwLmZpbmQodXJsKTsKKyAgICAgICAgQVNTRVJUKGl0ZXJhdG9yICE9IG1fZ2xv
YmFsVVJMTWFwLmVuZCgpKTsKKyAgICAgICAgaWYgKGl0ZXJhdG9yID09IG1fZ2xvYmFsVVJMTWFw
LmVuZCgpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgYXV0byYgZ2xvYmFsQ291
bnQgPSBpdGVyYXRvci0+dmFsdWU7CisgICAgICAgIEFTU0VSVChnbG9iYWxDb3VudCk7CisgICAg
ICAgIEFTU0VSVChnbG9iYWxDb3VudCA+PSBwcm9jZXNzQ291bnQpOworCisgICAgICAgIGdsb2Jh
bENvdW50ID0gZ2xvYmFsQ291bnQgPiBwcm9jZXNzQ291bnQgPyBnbG9iYWxDb3VudCAtIHByb2Nl
c3NDb3VudCA6IDA7CisgICAgICAgIGlmICghZ2xvYmFsQ291bnQpIHsKKyAgICAgICAgICAgIG1f
Z2xvYmFsVVJMTWFwLnJlbW92ZSh1cmwpOworICAgICAgICAgICAgcmVtb3ZlZC5hcHBlbmQodXJs
KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6
R1BVUHJvY2Vzczo6UmV2b2tlTWVkaWFGaWxlQWNjZXNzU2FuZGJveEV4dGVuc2lvbihyZW1vdmVk
KSwgMCk7Cit9CisKK3ZvaWQgR1BVUHJvY2Vzc1Byb3h5OjpjYW5Mb2FkUmVtb3RlTWVkaWFQbGF5
ZXJVUkwoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCBVUkwmJiB1cmwsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgaWYgKCF1cmwuaXNM
b2NhbEZpbGUoKSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih0cnVlKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIGF1dG8gW3Byb2Nlc3NDb3VudCwgZ2xvYmFsQ291bnRdID0g
dXNlQ291bnRzRm9yVVJMKHByb2Nlc3MuY29yZVByb2Nlc3NJZGVudGlmaWVyKCksIHVybCk7Cisg
ICAgaWYgKGdsb2JhbENvdW50KSB7CisgICAgICAgIHByb2Nlc3NDb3VudCsrOworICAgICAgICBn
bG9iYWxDb3VudCsrOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih0cnVlKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIGF1dG8gZmlsZVN5c3RlbVBhdGggPSB1cmwuZmlsZVN5c3Rl
bVBhdGgoKTsKKyAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4dGVuc2lvbkhh
bmRsZTsKKyAgICBhdXRvJiBjb25uZWN0aW9uID0gKnRoaXMtPmNvbm5lY3Rpb24oKTsKKyAgICBi
b29sIGNyZWF0ZWRFeHRlbnNpb24gPSBmYWxzZTsKKworI2lmIEhBVkUoU0FOREJPWF9JU1NVRV9S
RUFEX0VYVEVOU0lPTl9UT19QUk9DRVNTX0JZX0FVRElUX1RPS0VOKQorICAgIEFTU0VSVChjb25u
ZWN0aW9uLmdldEF1ZGl0VG9rZW4oKSk7CisKKyAgICBpZiAoY29ubmVjdGlvbi5nZXRBdWRpdFRv
a2VuKCkpCisgICAgICAgIGNyZWF0ZWRFeHRlbnNpb24gPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVh
dGVIYW5kbGVGb3JSZWFkQnlBdWRpdFRva2VuKGZpbGVTeXN0ZW1QYXRoLCAqKGNvbm5lY3Rpb24u
Z2V0QXVkaXRUb2tlbigpKSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7CisgICAgZWxzZQorI2Vu
ZGlmCisgICAgY3JlYXRlZEV4dGVuc2lvbiA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRs
ZShmaWxlU3lzdGVtUGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZE9ubHksIHNhbmRi
b3hFeHRlbnNpb25IYW5kbGUpOworCisgICAgaWYgKCFjcmVhdGVkRXh0ZW5zaW9uKSB7CisgICAg
ICAgIFdURkxvZ0Fsd2F5cygiVW5hYmxlIHRvIGNyZWF0ZSBzYW5kYm94IGV4dGVuc2lvbiBoYW5k
bGUgZm9yIG1lZGlhIHVybC5cbiIpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBwcm9jZXNzQ291bnQgPSBnbG9iYWxDb3Vu
dCA9IDE7CisgICAgY29ubmVjdGlvbi5zZW5kKE1lc3NhZ2VzOjpHUFVQcm9jZXNzOjpJc3N1ZU1l
ZGlhRmlsZUFjY2Vzc1NhbmRib3hFeHRlbnNpb24odXJsLCBXVEZNb3ZlKHNhbmRib3hFeHRlbnNp
b25IYW5kbGUpKSwgMCk7CisgICAgY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7Cit9CisKIHZvaWQg
R1BVUHJvY2Vzc1Byb3h5OjpvcGVuR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oQ29ubmVjdGlvblJlcXVl
c3RJZGVudGlmaWVyIGNvbm5lY3Rpb25SZXF1ZXN0SWRlbnRpZmllciwgV2ViUHJvY2Vzc1Byb3h5
JiB3ZWJQcm9jZXNzUHJveHkpCiB7Ci0gICAgY29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVw
bHkoTWVzc2FnZXM6OkdQVVByb2Nlc3M6OkNyZWF0ZUdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mg
eyB3ZWJQcm9jZXNzUHJveHkuY29yZVByb2Nlc3NJZGVudGlmaWVyKCksIHdlYlByb2Nlc3NQcm94
eS5zZXNzaW9uSUQoKSB9LCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgd2Vi
UHJvY2Vzc1Byb3h5ID0gbWFrZVdlYWtQdHIod2ViUHJvY2Vzc1Byb3h5KSwgY29ubmVjdGlvblJl
cXVlc3RJZGVudGlmaWVyXShhdXRvJiYgY29ubmVjdGlvbklkZW50aWZpZXIpIG11dGFibGUgewor
ICAgIGF1dG8mIGNvbm5lY3Rpb24gPSAqdGhpcy0+Y29ubmVjdGlvbigpOworCisgICAgaWYgKCFt
X2hhdmVFeHRlbmRlZFByb2Nlc3NTYW5kYm94KSB7CisgICAgICAgIG1faGF2ZUV4dGVuZGVkUHJv
Y2Vzc1NhbmRib3ggPSB0cnVlOworCisgICAgICAgIGF1dG8mIHdlYnNpdGVEYXRhU3RvcmUgPSB3
ZWJQcm9jZXNzUHJveHkud2Vic2l0ZURhdGFTdG9yZSgpOworICAgICAgICB3ZWJzaXRlRGF0YVN0
b3JlLnJlc29sdmVEaXJlY3Rvcmllc0lmTmVjZXNzYXJ5KCk7CisKKyAgICAgICAgR1BVUHJvY2Vz
c01lZGlhQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uOworICAgICAgICBjb25maWd1cmF0aW9u
Lm1lZGlhQ2FjaGVEaXJlY3RvcnkgPSB3ZWJzaXRlRGF0YVN0b3JlLnJlc29sdmVkTWVkaWFDYWNo
ZURpcmVjdG9yeSgpOworICAgICAgICBpZiAoIWNvbmZpZ3VyYXRpb24ubWVkaWFDYWNoZURpcmVj
dG9yeS5pc0VtcHR5KCkpCisgICAgICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5k
bGVXaXRob3V0UmVzb2x2aW5nUGF0aChjb25maWd1cmF0aW9uLm1lZGlhQ2FjaGVEaXJlY3Rvcnks
IFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRXcml0ZSwgY29uZmlndXJhdGlvbi5tZWRpYUNh
Y2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKKworICAgICAgICBjb25maWd1cmF0aW9uLm1l
ZGlhS2V5U3RvcmFnZURpcmVjdG9yeSA9IHdlYnNpdGVEYXRhU3RvcmUucmVzb2x2ZWRNZWRpYUtl
eXNEaXJlY3RvcnkoKTsKKyAgICAgICAgaWYgKCFjb25maWd1cmF0aW9uLm1lZGlhS2V5U3RvcmFn
ZURpcmVjdG9yeS5pc0VtcHR5KCkpCisgICAgICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVh
dGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aChjb25maWd1cmF0aW9uLm1lZGlhS2V5U3RvcmFn
ZURpcmVjdG9yeSwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZFdyaXRlLCBjb25maWd1cmF0
aW9uLm1lZGlhS2V5U3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CisKKyAgICAgICAg
Y29ubmVjdGlvbi5zZW5kKE1lc3NhZ2VzOjpHUFVQcm9jZXNzOjpDb25maWd1cmVGb3JNZWRpYVBs
YXliYWNrKGNvbmZpZ3VyYXRpb24pLCAwKTsKKyAgICB9CisKKyAgICBjb25uZWN0aW9uLnNlbmRX
aXRoQXN5bmNSZXBseShNZXNzYWdlczo6R1BVUHJvY2Vzczo6Q3JlYXRlR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyB7IHdlYlByb2Nlc3NQcm94eS5jb3JlUHJvY2Vzc0lkZW50aWZpZXIoKSwgd2Vi
UHJvY2Vzc1Byb3h5LnNlc3Npb25JRCgpIH0sIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRy
KHRoaXMpLCB3ZWJQcm9jZXNzUHJveHkgPSBtYWtlV2Vha1B0cih3ZWJQcm9jZXNzUHJveHkpLCBj
b25uZWN0aW9uUmVxdWVzdElkZW50aWZpZXJdKGF1dG8mJiBjb25uZWN0aW9uSWRlbnRpZmllcikg
bXV0YWJsZSB7CiAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICByZXR1cm47CiAK
QEAgLTEzOCw2ICsyNTksOCBAQCB2b2lkIEdQVVByb2Nlc3NQcm94eTo6b3BlbkdQVVByb2Nlc3ND
b25uZWN0aW9uKENvbm5lY3Rpb25SZXF1ZXN0SWRlbnRpZmllciBjb25uZQogCiB2b2lkIEdQVVBy
b2Nlc3NQcm94eTo6Z3B1UHJvY2Vzc0NyYXNoZWQoKQogeworICAgIG1fZ2xvYmFsVVJMTWFwLmNs
ZWFyKCk7CisgICAgbV9wcm9jZXNzVVJMTWFwLmNsZWFyKCk7CiAgICAgZm9yIChhdXRvJiBwcm9j
ZXNzUG9vbCA6IFdlYlByb2Nlc3NQb29sOjphbGxQcm9jZXNzUG9vbHMoKSkKICAgICAgICAgcHJv
Y2Vzc1Bvb2wtPmdwdVByb2Nlc3NDcmFzaGVkKHByb2Nlc3NJZGVudGlmaWVyKCkpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5oCmluZGV4IDE3MmJh
N2E5Zjk1YmQ5YzFkYzNkZDFkYWZiZTY3MWQ0Zjg5NTZhOGQuLmQ3NGZjMzFhMzUyMmNjMzYyOGMy
MmRjOWY1MWM0OWZhYjkwNDJlYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0dQVS9HUFVQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HUFUv
R1BVUHJvY2Vzc1Byb3h5LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
OS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMzIsMTEgKzMyLDEwIEBACiAjaW5jbHVkZSAiUHJvY2Vzc0xhdW5j
aGVyLmgiCiAjaW5jbHVkZSAiUHJvY2Vzc1Rocm90dGxlci5oIgogI2luY2x1ZGUgIlByb2Nlc3NU
aHJvdHRsZXJDbGllbnQuaCIKLSNpbmNsdWRlICJUcmFuc2FjdGlvbklELmgiCiAjaW5jbHVkZSAi
V2ViUGFnZVByb3h5SWRlbnRpZmllci5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eU1lc3Nh
Z2VzUmVwbGllcy5oIgogI2luY2x1ZGUgPG1lbW9yeT4KLSNpbmNsdWRlIDx3dGYvRGVxdWUuaD4K
KyNpbmNsdWRlIDx3dGYvVVJMSGFzaC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtNTEs
NiArNTAsOSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEdQVVByb2Nlc3NQcm94eSYgc2luZ2xldG9u
KCk7CiAKICAgICB2b2lkIGdldEdQVVByb2Nlc3NDb25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYs
IE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldEdQVVByb2Nlc3NDb25uZWN0aW9uRGVsYXll
ZFJlcGx5JiYpOworICAgIHZvaWQgY2FuTG9hZFJlbW90ZU1lZGlhUGxheWVyVVJMKFdlYlByb2Nl
c3NQcm94eSYsIFVSTCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2
b2lkIHN0b3BwZWRVc2luZ1JlbW90ZU1lZGlhUGxheWVyVVJMKFdlYlByb2Nlc3NQcm94eSYsIFVS
TCYmKTsKKyAgICB2b2lkIHByb2Nlc3NEaWRDbG9zZShXZWJQcm9jZXNzUHJveHkmKTsKIAogICAg
IFByb2Nlc3NUaHJvdHRsZXImIHRocm90dGxlcigpIHsgcmV0dXJuIG1fdGhyb3R0bGVyOyB9CiAg
ICAgdm9pZCB1cGRhdGVQcm9jZXNzQXNzZXJ0aW9uKCk7CkBAIC05MCw4ICs5MiwxNCBAQCBwcml2
YXRlOgogICAgIENvbm5lY3Rpb25SZXF1ZXN0SWRlbnRpZmllciBtX2Nvbm5lY3Rpb25SZXF1ZXN0
SWRlbnRpZmllciB7IDAgfTsKICAgICBIYXNoTWFwPENvbm5lY3Rpb25SZXF1ZXN0SWRlbnRpZmll
ciwgQ29ubmVjdGlvblJlcXVlc3Q+IG1fY29ubmVjdGlvblJlcXVlc3RzOwogCisgICAgc3RkOjpw
YWlyPHVpbnQ2NF90JiwgdWludDY0X3QmPiB1c2VDb3VudHNGb3JVUkwoV2ViQ29yZTo6UHJvY2Vz
c0lkZW50aWZpZXIsIGNvbnN0IFVSTCYpOworCiAgICAgUHJvY2Vzc1Rocm90dGxlciBtX3Rocm90
dGxlcjsKICAgICBQcm9jZXNzVGhyb3R0bGVyOjpBY3Rpdml0eVZhcmlhbnQgbV9hY3Rpdml0eUZy
b21XZWJQcm9jZXNzZXM7CisKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVy
LCBIYXNoTWFwPFVSTCwgdWludDY0X3Q+PiBtX3Byb2Nlc3NVUkxNYXA7CisgICAgSGFzaE1hcDxV
UkwsIHVpbnQ2NF90PiBtX2dsb2JhbFVSTE1hcDsKKyAgICBib29sIG1faGF2ZUV4dGVuZGVkUHJv
Y2Vzc1NhbmRib3ggeyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggYzBhZDNjZTcyYTU2
MzU5NzgwZmQzZDFkY2RhZGUzZmQ0YzAxNzcyMy4uNWNkNWMxNDFiODkyZGNjNWVmNjM3ZjA2OWM4
YjY3Mjg0ZTE0YzFlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTcyMiw2ICs3MjIsMTcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6Z2V0R1BVUHJv
Y2Vzc0Nvbm5lY3Rpb24oV2ViUHJvY2Vzc1Byb3h5JiB3ZWJQcm9jZXNzUHJveHksIE0KIHsKICAg
ICBHUFVQcm9jZXNzUHJveHk6OnNpbmdsZXRvbigpLmdldEdQVVByb2Nlc3NDb25uZWN0aW9uKHdl
YlByb2Nlc3NQcm94eSwgV1RGTW92ZShyZXBseSkpOwogfQorCit2b2lkIFdlYlByb2Nlc3NQb29s
OjpjYW5Mb2FkUmVtb3RlTWVkaWFQbGF5ZXJVUkwoV2ViUHJvY2Vzc1Byb3h5JiB3ZWJQcm9jZXNz
UHJveHksIFVSTCYmIHVybCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3sKKyAgICBtX21heUhhdmVPcGVuZWRSZW1vdGVNZWRpYVBsYXllclVSTHMg
PSB0cnVlOworICAgIEdQVVByb2Nlc3NQcm94eTo6c2luZ2xldG9uKCkuY2FuTG9hZFJlbW90ZU1l
ZGlhUGxheWVyVVJMKHdlYlByb2Nlc3NQcm94eSwgV1RGTW92ZSh1cmwpLCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7Cit9CisKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnN0b3BwZWRVc2luZ1Jl
bW90ZU1lZGlhUGxheWVyVVJMKFdlYlByb2Nlc3NQcm94eSYgd2ViUHJvY2Vzc1Byb3h5LCBVUkwm
JiB1cmwpCit7CisgICAgR1BVUHJvY2Vzc1Byb3h5OjpzaW5nbGV0b24oKS5zdG9wcGVkVXNpbmdS
ZW1vdGVNZWRpYVBsYXllclVSTCh3ZWJQcm9jZXNzUHJveHksIFdURk1vdmUodXJsKSk7Cit9CiAj
ZW5kaWYKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKQEAgLTExNTksNiArMTE3MCwxMSBA
QCB2b2lkIFdlYlByb2Nlc3NQb29sOjpkaXNjb25uZWN0UHJvY2VzcyhXZWJQcm9jZXNzUHJveHkq
IHByb2Nlc3MpCiAKICAgICBzdGF0aWNfY2FzdDxXZWJDb250ZXh0U3VwcGxlbWVudCo+KHN1cHBs
ZW1lbnQ8V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk+KCkpLT5wcm9jZXNzRGlkQ2xvc2UocHJv
Y2Vzcyk7CiAKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisgICAgaWYgKG1fbWF5SGF2ZU9wZW5l
ZFJlbW90ZU1lZGlhUGxheWVyVVJMcykKKyAgICAgICAgR1BVUHJvY2Vzc1Byb3h5OjpzaW5nbGV0
b24oKS5wcm9jZXNzRGlkQ2xvc2UoKnByb2Nlc3MpOworI2VuZGlmCisKICAgICBtX3Byb2Nlc3Nl
cy5yZW1vdmVGaXJzdChwcm9jZXNzKTsKIAogI2lmIEVOQUJMRShHQU1FUEFEKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKaW5kZXggOWIxNTMwYjc0MzlmNjVlOTQ1MmFi
ZTQyNmM3NjdmNzM3NDdkYWE3OC4uZWVlYjQ3ZDVhNWQ3NTYyZThlNTFmZWI0ZDVkNWQ3NDVhMjE1
MjQ2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMC0yMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzg2
LDYgKzM4Niw4IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAgICAgdm9pZCBn
cHVQcm9jZXNzQ3Jhc2hlZChQcm9jZXNzSUQpOwogICAgIHZvaWQgZ2V0R1BVUHJvY2Vzc0Nvbm5l
Y3Rpb24oV2ViUHJvY2Vzc1Byb3h5JiwgTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0R1BV
UHJvY2Vzc0Nvbm5lY3Rpb25EZWxheWVkUmVwbHkmJik7CisgICAgdm9pZCBjYW5Mb2FkUmVtb3Rl
TWVkaWFQbGF5ZXJVUkwoV2ViUHJvY2Vzc1Byb3h5JiwgVVJMJiYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgc3RvcHBlZFVzaW5nUmVtb3RlTWVkaWFQbGF5ZXJV
UkwoV2ViUHJvY2Vzc1Byb3h5JiwgVVJMJiYpOwogI2VuZGlmCiAKICAgICAvLyBOZXR3b3JrIFBy
b2Nlc3MgTWFuYWdlbWVudApAQCAtODAwLDYgKzgwMiwxMCBAQCBwcml2YXRlOgogICAgIGJvb2wg
bV9pc0RlbGF5ZWRXZWJQcm9jZXNzTGF1bmNoRGlzYWJsZWQgeyBmYWxzZSB9OwogI2VuZGlmCiAg
ICAgYm9vbCBtX3VzZVNlcGFyYXRlU2VydmljZVdvcmtlclByb2Nlc3MgeyBmYWxzZSB9OworCisj
aWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorICAgIGJvb2wgbV9tYXlIYXZlT3BlbmVkUmVtb3RlTWVk
aWFQbGF5ZXJVUkxzIHsgZmFsc2UgfTsKKyNlbmRpZgogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUg
VD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IGM0
NGJmN2MzMmU5OTMxMzljMTAzYzQ3ZTUxNjQyNGQ4ZWRjODY1NmYuLmMwZTg0NzU4ODIxYzM4NGMw
MDgyNTA2OGM2OTMwZWJkZjI4ZmQ4MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTAtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTAtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTY5Nyw2ICs2OTcsMjQgQEAgdm9pZCBXZWJQcm9jZXNzUHJv
eHk6OmdldEdQVVByb2Nlc3NDb25uZWN0aW9uKE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6Okdl
dEdQVVAKIHsKICAgICBtX3Byb2Nlc3NQb29sLT5nZXRHUFVQcm9jZXNzQ29ubmVjdGlvbigqdGhp
cywgV1RGTW92ZShyZXBseSkpOwogfQorCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6Y2FuTG9hZFJl
bW90ZU1lZGlhUGxheWVyVVJMKFVSTCYmIHVybCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAoaXNMYXVuY2hpbmcoKSB8fCB3YXNU
ZXJtaW5hdGVkKCkpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgbV9wcm9jZXNzUG9vbC0+Y2FuTG9hZFJlbW90ZU1lZGlh
UGxheWVyVVJMKCp0aGlzLCBXVEZNb3ZlKHVybCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKK30KKwordm9pZCBXZWJQcm9jZXNzUHJveHk6OnN0b3BwZWRVc2luZ1JlbW90ZU1lZGlhUGxh
eWVyVVJMKFVSTCYmIHVybCkKK3sKKyAgICBpZiAod2FzVGVybWluYXRlZCgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBtX3Byb2Nlc3NQb29sLT5zdG9wcGVkVXNpbmdSZW1vdGVNZWRpYVBsYXll
clVSTCgqdGhpcywgV1RGTW92ZSh1cmwpKTsKK30KICNlbmRpZgogCiAjaWYgIVBMQVRGT1JNKENP
Q09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAppbmRleCA5NjVm
YjFjZTAxN2IxOWVjNDhlZThmNGRiNDAxNmQ2YjkxOWI0MjNkLi45NGRkZGNkOTRlYjQ0YTA4YjY1
NzJlN2RhOWQ1YWZhZGM5YTc0N2Q1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAt
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTM5NSw2ICszOTUsOCBAQCBwcml2YXRlOgogCiAjaWYgRU5BQkxFKEdQ
VV9QUk9DRVNTKQogICAgIHZvaWQgZ2V0R1BVUHJvY2Vzc0Nvbm5lY3Rpb24oTWVzc2FnZXM6Oldl
YlByb2Nlc3NQcm94eTo6R2V0R1BVUHJvY2Vzc0Nvbm5lY3Rpb25EZWxheWVkUmVwbHkmJik7Cisg
ICAgdm9pZCBjYW5Mb2FkUmVtb3RlTWVkaWFQbGF5ZXJVUkwoVVJMJiYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgc3RvcHBlZFVzaW5nUmVtb3RlTWVkaWFQbGF5
ZXJVUkwoVVJMJiYpOwogI2VuZGlmCiAKICAgICBib29sIHBsYXRmb3JtSXNCZWluZ0RlYnVnZ2Vk
KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkubWVzc2FnZXMuaW4KaW5kZXggNmUxYTRjNGYyODQ4YzY3ZGE1ZGZmMDI5ZDVmYWNjZWRlZjhh
ZGZhNi4uNGI0ZjUyZjNlMjlhM2IzZmM1NGM3NmZjY2I5MDY2ZTQ2MmVmNGZjMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgpA
QCAtNDAsNiArNDAsOSBAQCBtZXNzYWdlcyAtPiBXZWJQcm9jZXNzUHJveHkgTGVnYWN5UmVjZWl2
ZXIgewogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogICAgIEdldEdQVVByb2Nlc3NDb25uZWN0
aW9uKCkgLT4gKHN0cnVjdCBXZWJLaXQ6OkdQVVByb2Nlc3NDb25uZWN0aW9uSW5mbyBjb25uZWN0
aW9uSW5mbykgU3luY2hyb25vdXMKKyAgICBDYW5Mb2FkUmVtb3RlTWVkaWFQbGF5ZXJVUkwoVVJM
IHVybCkgLT4gKGJvb2wgY2FuTG9hZCkgQXN5bmMKKyAgICBTdG9wcGVkVXNpbmdSZW1vdGVNZWRp
YVBsYXllclVSTChVUkwgdXJsKQorCiAjZW5kaWYKIAogICAgIFNldElzSG9sZGluZ0xvY2tlZEZp
bGVzKGJvb2wgaXNIb2xkaW5nTG9ja2VkRmlsZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA1Nzc4YmE1ODcyMzJjNmU2YTc4MjI0NmI5
YzdjYjMyMGFlOGZjY2VhLi5kZWE3ZTVhMjJkNWQzZWY2YWNhYjU2Yzg0NmE3ZWQ4ZTEwN2Y1ZjBm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTIwNzYsNiArMjA3Niw3IEBACiAJCTA3OTIzMTRFMjM5RDVGNTMwMDk1OThFMiAvKiBNZWRp
YVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMDdBNUVCQjkxQzdCQTQzRTAwQjlDQTY5IC8qIFdLRnJhbWVIYW5kbGVSZWYuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tGcmFtZUhhbmRsZVJlZi5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3QTVFQkJBMUM3QkE0M0UwMEI5Q0E2OSAvKiBX
S0ZyYW1lSGFuZGxlUmVmLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLRnJh
bWVIYW5kbGVSZWYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDdCMjMyRkUyM0M0
MjMwODAwMUI4OThBIC8qIEdQVVByb2Nlc3NNZWRpYUNvbmZpZ3VyYXRpb24uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gR1BVUHJvY2Vzc01lZGlhQ29uZmlndXJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwN0IzQjQ2RjIzQUIyQ0IzMDBCQTVCMTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJT
dGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVNZWRpYVBsYXllclN0YXRlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3QjNCNDc1MjNBRDg5MDQwMEJBNUIxMiAvKiBSZW1vdGVN
ZWRpYVBsYXllclByb3h5Q29uZmlndXJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVNZWRp
YVBsYXllclByb3h5Q29uZmlndXJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwN0I5M0ZGNTIzQUYwQ0I4MDAzNkY4RUEgLyogUmVtb3RlTWVkaWFQbGF5ZXJDb25maWd1cmF0
aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZU1lZGlhUGxheWVyQ29uZmlndXJhdGlvbi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjM5Nyw2ICs2Mzk4LDcgQEAKIAkJCQkyRDlG
QjIwMjIzNzUyMDlEMDA0OUY5MzYgLyogR1BVUHJvY2Vzcy5tZXNzYWdlcy5pbiAqLywKIAkJCQky
RDlGQjIxNDIzNzUyMDlEMDA0OUY5MzYgLyogR1BVUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5j
cHAgKi8sCiAJCQkJMkQ5RkIyMDMyMzc1MjA5RDAwNDlGOTM2IC8qIEdQVVByb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMuaCAqLywKKwkJCQkwN0IyMzJGRTIzQzQyMzA4MDAxQjg5OEEgLyogR1BVUHJv
Y2Vzc01lZGlhQ29uZmlndXJhdGlvbi5oICovLAogCQkJKTsKIAkJCXBhdGggPSBHUFVQcm9jZXNz
OwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNw
cAppbmRleCBjNmU1NjM3ZmY2ZTA3OGQ4OWQ2ZmY5MzA5M2U2YTllZmYwYzc5ODIyLi4yNTlkOGE0
YjNlYzNiNDVhMTVhY2VkNzFiNjdmZDE4M2Q5ZWQwZWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVS
ZW1vdGUuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAi
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkNv
cmVBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlIDxX
ZWJDb3JlL01lZGlhUGxheWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1MYXllci5oPgpAQCAtNzksNiArODAsOCBAQCBN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZShNZWRpYVBs
YXllciogcGxheWVyLCBNZWRpYVBsYQogTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp+TWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlKCkKIHsKICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSKTsKKyAg
ICBpZiAoIW1fc3JjVVJMLmlzRW1wdHkoKSkKKyAgICAgICAgbV9tYW5hZ2VyLnBhcmVudFByb2Nl
c3MoKS5zdG9wcGVkVXNpbmdSZW1vdGVNZWRpYVBsYXllclVSTChtX3NyY1VSTCk7CiAgICAgbV9t
YW5hZ2VyLmRlbGV0ZVJlbW90ZU1lZGlhUGxheWVyKG1faWQpOwogfQogCkBAIC04OSwxNCArOTIs
MjggQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnByZXBhcmVGb3JQbGF5YmFjayhi
b29sIHByaXZhdGVNb2RlLCBNZWRpYVBsYXllcjoKIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bG9hZChjb25zdCBVUkwmIHVybCwgY29u
c3QgQ29udGVudFR5cGUmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSkKIHsK
LSAgICBtX21hbmFnZXIuZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHko
TWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpMb2FkKG1faWQsIHVybCwg
Y29udGVudFR5cGUsIGtleVN5c3RlbSksIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0o
YXV0byYmIGNvbmZpZ3VyYXRpb24pIHsKLSAgICAgICAgaWYgKHdlYWtUaGlzKQotICAgICAgICAg
ICAgd2Vha1RoaXMtPm1fY29uZmlndXJhdGlvbiA9IGNvbmZpZ3VyYXRpb247CisgICAgbV9tYW5h
Z2VyLnBhcmVudFByb2Nlc3MoKS5jYW5Mb2FkUmVtb3RlTWVkaWFQbGF5ZXJVUkwodXJsLCBbdGhp
cywgdXJsLCBjb250ZW50VHlwZSwga2V5U3lzdGVtLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0
aGlzKV0oYm9vbCBjYW5Mb2FkKSB7CisgICAgICAgIGlmICghd2Vha1RoaXMgfHwgIWNhbkxvYWQp
CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKCFtX3NyY1VSTC5pc0VtcHR5KCkp
CisgICAgICAgICAgICBtX21hbmFnZXIucGFyZW50UHJvY2VzcygpLnN0b3BwZWRVc2luZ1JlbW90
ZU1lZGlhUGxheWVyVVJMKG1fc3JjVVJMKTsKKworICAgICAgICBtX3NyY1VSTCA9IHVybDsKKyAg
ICAgICAgbV9tYW5hZ2VyLmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5
KE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6TG9hZChtX2lkLCB1cmws
IGNvbnRlbnRUeXBlLCBrZXlTeXN0ZW0pLCBbd2Vha1RoaXNdKGF1dG8mJiBjb25maWd1cmF0aW9u
KSB7CisgICAgICAgICAgICBpZiAod2Vha1RoaXMpCisgICAgICAgICAgICAgICAgd2Vha1RoaXMt
Pm1fY29uZmlndXJhdGlvbiA9IGNvbmZpZ3VyYXRpb247CisgICAgICAgIH0pOwogICAgIH0pOwog
fQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y2FuY2VsTG9hZCgpCiB7CisgICAg
aWYgKCFtX3NyY1VSTC5pc0VtcHR5KCkpIHsKKyAgICAgICAgbV9tYW5hZ2VyLnBhcmVudFByb2Nl
c3MoKS5zdG9wcGVkVXNpbmdSZW1vdGVNZWRpYVBsYXllclVSTChtX3NyY1VSTCk7CisgICAgICAg
IG1fc3JjVVJMID0geyB9OworICAgIH0KKwogICAgIG1fbWFuYWdlci5ncHVQcm9jZXNzQ29ubmVj
dGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpDYW5j
ZWxMb2FkKG1faWQpLCAwKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmgKaW5kZXggYjY5
MWZlNjQwZGI1OTdjOTZkNTFmOGIzM2JhMzM4YzAzNmI4MzdmNC4uM2ZjYjM4ZjljNjA3ZDI5NTBj
N2M5NjEwZmI5OTkxMTJjMzMzMTk5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMxMiw2
ICszMTIsNyBAQCBwcml2YXRlOgogCiAgICAgSGFzaE1hcDxSZW1vdGVNZWRpYVJlc291cmNlSWRl
bnRpZmllciwgUmVmUHRyPFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZT4+IG1fbWVkaWFS
ZXNvdXJjZXM7CiAKKyAgICBVUkwgbV9zcmNVUkw7CiAgICAgZG91YmxlIG1fdm9sdW1lIHsgMSB9
OwogICAgIGRvdWJsZSBtX3JhdGUgeyAxIH07CiAgICAgbG9uZyBtX3BsYXRmb3JtRXJyb3JDb2Rl
IHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmgKaW5kZXggZjU4ODVjZWUwNWQ5YTVmNjRl
NzM0M2M4YjNkYzgzMWZkZjk4ZjZhZC4uMjU3MDBmZDY0N2NhYTM3NjJiYjRmODgxYWUxZTVhM2I4
ZmY2M2EzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5oCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU0LDYgKzU0LDcgQEAgcHVibGlj
OgogICAgIH5SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIoKTsKIAogICAgIHN0YXRpYyBjb25zdCBj
aGFyKiBzdXBwbGVtZW50TmFtZSgpOworICAgIFdlYlByb2Nlc3MmIHBhcmVudFByb2Nlc3MoKSBj
b25zdCB7IHJldHVybiBtX3Byb2Nlc3M7IH0KIAogICAgIHZvaWQgdXBkYXRlUHJlZmVyZW5jZXMo
Y29uc3QgV2ViQ29yZTo6U2V0dGluZ3MmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuY3BwCmluZGV4IDIwOWMxZGVjNzU0ZWM2YjU2Mjk3YzE5ZjVhZjY4ZGQyZTdlODkxMDMu
LmY3YTgwNjM5NjFkNmViNTI5YjhhYTdkNzgyYWJhYmQzNzQ4ZTQwZDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDA5LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDA5LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMzI1LDYgKzEzMjUsMTYgQEAgTGliV2Vi
UlRDQ29kZWNzJiBXZWJQcm9jZXNzOjpsaWJXZWJSVENDb2RlY3MoKQogfQogI2VuZGlmCiAKK3Zv
aWQgV2ViUHJvY2Vzczo6Y2FuTG9hZFJlbW90ZU1lZGlhUGxheWVyVVJMKGNvbnN0IFVSTCYgdXJs
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorewor
ICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdl
czo6V2ViUHJvY2Vzc1Byb3h5OjpDYW5Mb2FkUmVtb3RlTWVkaWFQbGF5ZXJVUkwodXJsKSwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCit2b2lkIFdlYlByb2Nlc3M6OnN0b3BwZWRV
c2luZ1JlbW90ZU1lZGlhUGxheWVyVVJMKGNvbnN0IFVSTCYgdXJsKQoreworICAgIHBhcmVudFBy
b2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6U3RvcHBl
ZFVzaW5nUmVtb3RlTWVkaWFQbGF5ZXJVUkwodXJsKSwgMCk7Cit9CisKICNlbmRpZiAvLyBFTkFC
TEUoR1BVX1BST0NFU1MpCiAKIHZvaWQgV2ViUHJvY2Vzczo6c2V0RW5oYW5jZWRBY2Nlc3NpYmls
aXR5KGJvb2wgZmxhZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IDcy
ZTA5MGIzMzZkMWExZTc0MDBjOGUxMDI0N2JiMTVmYTM5YTMwNjkuLmFmZmM3MzgxNDI0YmYwMjcx
ODI5NGI3NmRkNTQ3MGEyNDk3ZDcwY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTIxMSw2ICsyMTEsOSBAQCBwdWJsaWM6CiAgICAgR1BVUHJvY2Vzc0Nvbm5lY3Rp
b24mIGVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCk7CiAgICAgdm9pZCBncHVQcm9jZXNzQ29u
bmVjdGlvbkNsb3NlZChHUFVQcm9jZXNzQ29ubmVjdGlvbiopOwogICAgIEdQVVByb2Nlc3NDb25u
ZWN0aW9uKiBleGlzdGluZ0dQVVByb2Nlc3NDb25uZWN0aW9uKCkgeyByZXR1cm4gbV9ncHVQcm9j
ZXNzQ29ubmVjdGlvbi5nZXQoKTsgfQorICAgIHZvaWQgY2FuTG9hZFJlbW90ZU1lZGlhUGxheWVy
VVJMKGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZv
aWQgc3RvcHBlZFVzaW5nUmVtb3RlTWVkaWFQbGF5ZXJVUkwoY29uc3QgVVJMJik7CisKIAogI2lm
IFBMQVRGT1JNKENPQ09BKSAmJiBVU0UoTElCV0VCUlRDKQogICAgIExpYldlYlJUQ0NvZGVjcyYg
bGliV2ViUlRDQ29kZWNzKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMDM0M2FiYzUzOGI1YmJmZThlODE2NTY4YmQ0OTg2
ODhiNDYzNDU5Mi4uZGM5MjBkOWZhMjdhMjQ1Mzc4OGM0MWY2NDFjYjY0ZGNjODUwZDBkNSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDEzIEBACisyMDIwLTAxLTA4ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxz
b25AYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYSBpbiBHUFUgcHJvY2Vzc10gRXh0ZW5kIHRo
ZSBHUFUgcHJvY2VzcyBzYW5kYm94IHRvIGFsbG93IGFjY2VzcyB0byBsb2NhbCBmaWxlcyB3aGVu
IG5lY2Vzc2FyeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjA1OTY3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81ODQyNTAyMD4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGdwdS1wcm9jZXNzL1Rlc3RF
eHBlY3RhdGlvbnM6CisKIDIwMjAtMDEtMDcgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBs
ZS5jb20+CiAKICAgICAgICAgTWFyayB3ZWJleHBvc2VkL2Nzcy1wcm9wZXJ0aWVzLWJlaGluZC1m
bGFncy5odG1sIGFzIGZsYWt5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9ncHUtcHJvY2Vzcy9U
ZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9u
cwppbmRleCBkMDFkNWIxODU2OWZjNDY0NmU0YmQzYmYzNzEwN2UyM2FmY2YwODViLi5kMWUxNmM2
YTA0Y2M4NDkzMDBlMjk1MTJmMzMxM2E3YTg1ODcwYzNjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9ncHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL2dwdS1wcm9j
ZXNzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTE3OSwxNCArMTc5LDQ3IEBAIGxlZ2FjeS1hbmltYXRp
b24tZW5naW5lL2ltcG9ydGVkL2JsaW5rL2NvbXBvc2l0aW5nL3NxdWFzaGluZy9yZW1vdmUtZnJv
bS1ncm91cGVkCiBpbnNwZWN0b3IvbGF5ZXJzL2xheWVycy1jb21wb3NpdGluZy1yZWFzb25zLmh0
bWwgWyBTa2lwIF0KIAogbWVkaWEgWyBTa2lwIF0KLW1lZGlhL2F1ZGlvLXBsYXktd2l0aC12aWRl
by1lbGVtZW50Lmh0bWwgWyBQYXNzIF0KLW1lZGlhL2F1ZGlvLXBsYXkuaHRtbCBbIFBhc3MgXQot
bWVkaWEvbWVkaWEtY2FuLXBsYXktbXBlZy1hdWRpby5odG1sIFsgUGFzcyBdCi1tZWRpYS9tZWRp
YS1jYW4tcGxheS13YXYtYXVkaW8uaHRtbCBbIFBhc3MgXQogbWVkaWEvbWVkaWEtY29udHJvbGxl
ci5odG1sIFsgUGFzcyBdCiBtZWRpYS9tZWRpYS1wcmVsb2FkLW5vLWRlbGF5LWxvYWRldmVudC5o
dG1sIFsgUGFzcyBdCiBtZWRpYS92aWRlby1zcmMuaHRtbCBbIFBhc3MgXQogbWVkaWEvdmlkZW8t
c291cmNlLmh0bWwgWyBQYXNzIF0KK21lZGlhL2F1ZGlvLWFzLXZpZGVvLWZ1bGxzY3JlZW4uaHRt
bCBbIFBhc3MgXSBbIFBhc3MgXQorbWVkaWEvYXVkaW8tYmFja2dyb3VuZC1wbGF5YmFjay1wbGF5
bGlzdC5odG1sIFsgUGFzcyBdCittZWRpYS9hdWRpby1jb25jdXJyZW50LXN1cHBvcnRlZC5odG1s
IFsgUGFzcyBdCittZWRpYS9hdWRpby1jb25zdHJ1Y3Rvci1wcmVsb2FkLmh0bWwgWyBQYXNzIF0K
K21lZGlhL2F1ZGlvLWNvbnN0cnVjdG9yLXNyYy5odG1sIFsgUGFzcyBdCittZWRpYS9hdWRpby1j
b25zdHJ1Y3Rvci5odG1sIFsgUGFzcyBdCittZWRpYS9hdWRpby1jb250cm9scy1kby1ub3QtZmFk
ZS1vdXQuaHRtbCBbIFBhc3MgXQorbWVkaWEvYXVkaW8tY29udHJvbHMtdGltZWxpbmUtaW4tbWVk
aWEtZG9jdW1lbnQuaHRtbCBbIFBhc3MgXQorbWVkaWEvYXVkaW8tZGF0YS11cmwuaHRtbCBbIFBh
c3MgXQorbWVkaWEvYXVkaW8tZGVhbGxvYy1jcmFzaC5odG1sIFsgUGFzcyBdCittZWRpYS9hdWRp
by1kZWxldGUtd2hpbGUtc2xpZGVyLXRodW1iLWNsaWNrZWQuaHRtbCBbIFBhc3MgXQorbWVkaWEv
YXVkaW8tZ2FyYmFnZS1jb2xsZWN0Lmh0bWwgWyBQYXNzIF0KK21lZGlhL2F1ZGlvLW1wZWctc3Vw
cG9ydGVkLmh0bWwgWyBQYXNzIF0KK21lZGlhL2F1ZGlvLW1wZWc0LXN1cHBvcnRlZC5odG1sIFsg
UGFzcyBdCittZWRpYS9hdWRpby1uby1pbnN0YWxsZWQtZW5naW5lcy5odG1sIFsgUGFzcyBdCitt
ZWRpYS9hdWRpby1vbmx5LXZpZGVvLWludHJpbnNpYy1zaXplLmh0bWwgWyBQYXNzIF0KK21lZGlh
L2F1ZGlvLXBsYXktZXZlbnQuaHRtbCBbIFBhc3MgXQorbWVkaWEvYXVkaW8tcGxheS13aXRoLXZp
ZGVvLWVsZW1lbnQuaHRtbCBbIFBhc3MgXQorbWVkaWEvYXVkaW8tcGxheS5odG1sIFsgUGFzcyBd
CittZWRpYS9hdWRpby1wbGF5YmFjay1yZXN0cmljdGlvbi1hdXRvcGxheS5odG1sIFsgUGFzcyBd
CittZWRpYS9hdWRpby1wbGF5YmFjay1yZXN0cmljdGlvbi1wbGF5LW11dGVkLmh0bWwgWyBQYXNz
IF0KK21lZGlhL2F1ZGlvLXBsYXliYWNrLXJlc3RyaWN0aW9uLXBsYXkuaHRtbCBbIFBhc3MgXQor
bWVkaWEvYXVkaW8tcGxheWJhY2stcmVzdHJpY3Rpb24tcmVtb3ZlZC1tdXRlZC5odG1sIFsgUGFz
cyBdCittZWRpYS9hdWRpby1wbGF5YmFjay12b2x1bWUtY2hhbmdlcy13aXRoLXJlc3RyaWN0aW9u
cy1hbmQtdXNlci1nZXN0dXJlcy5odG1sIFsgUGFzcyBdCittZWRpYS9hdWRpby1wbGF5YmFjay12
b2x1bWUtY2hhbmdlcy13aXRoLXJlc3RyaWN0aW9ucy5odG1sIFsgUGFzcyBdCittZWRpYS9kZWFj
dGl2YXRlLWF1ZGlvLXNlc3Npb24uaHRtbCBbIFBhc3MgXQorbWVkaWEvbWVkaWEtY2FuLXBsYXkt
bXBlZy1hdWRpby5odG1sIFsgUGFzcyBdCittZWRpYS9tZWRpYS1jYW4tcGxheS13YXYtYXVkaW8u
aHRtbCBbIFBhc3MgXQorbWVkaWEvbWVkaWEtZG9jdW1lbnQtYXVkaW8tY29udHJvbHMtdmlzaWJs
ZS5odG1sIFsgUGFzcyBdCittZWRpYS9tZWRpYS1kb2N1bWVudC1hdWRpby1yZXBhaW50Lmh0bWwg
WyBQYXNzIF0KK21lZGlhL21lZGlhLWRvY3VtZW50LWF1ZGlvLXNpemUuaHRtbCBbIFBhc3MgXQor
bWVkaWEvbXV0ZWQtdmlkZW8taXMtcGxheWluZy1hdWRpby5odG1sIFsgUGFzcyBdCittZWRpYS9y
ZXN0cmljdGVkLWF1ZGlvLXBsYXliYWNrLXdpdGgtZG9jdW1lbnQtZ2VzdHVyZS5odG1sIFsgUGFz
cyBdCittZWRpYS9yZXN0cmljdGVkLWF1ZGlvLXBsYXliYWNrLXdpdGgtbXVsdGlwbGUtc2V0dGlt
ZW91dHMuaHRtbCBbIFBhc3MgXQorbWVkaWEvdmlkZW8tY29udHJvbHMtdmlzaWJsZS1hdWRpby1v
bmx5Lmh0bWwgWyBQYXNzIF0KK21lZGlhL3ZpZGVvLXBsYXktYXVkaW8tcmVxdWlyZS11c2VyLWdl
c3R1cmUuaHRtbCBbIFBhc3MgXQorCiBhY2Nlc3NpYmlsaXR5L21lZGlhLWVsZW1lbnQuaHRtbCBb
IFNraXAgXQogZmFzdC9ibG9jay9mbG9hdC9saXN0LW1hcmtlci1pcy1mbG9hdC1jcmFzaC5odG1s
IFsgU2tpcCBdCiBmYXN0L2Nzcy9yZWxhdGl2ZS1wb3NpdGlvbi1yZXBsYWNlZC1pbi10YWJsZS1k
aXNwbGF5LWNyYXNoLmh0bWwgWyBTa2lwIF0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387264</attachid>
            <date>2020-01-09 13:24:23 -0800</date>
            <delta_ts>2020-01-09 13:33:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205967-20200109132422.patch</filename>
            <type>text/plain</type>
            <size>56517</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0MTUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGFhNjU5YWIyYmY4MDE2MWI2
ZGQ4NzAyNjYzMGI1YTBiMTg4NjAyZWIuLjY5NDgyM2U2YWNhNGU4ODFlMjM4YjA1NzExZmZmMjgz
MThkMjZhYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODQgQEAKKzIwMjAtMDEtMDkgIEVyaWMgQ2Fy
bHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgW01lZGlhIGluIEdQVSBw
cm9jZXNzXSBFeHRlbmQgdGhlIEdQVSBwcm9jZXNzIHNhbmRib3ggdG8gYWxsb3cgYWNjZXNzIHRv
IGxvY2FsIGZpbGVzIHdoZW4gbmVjZXNzYXJ5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDU5NjcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU4NDI1
MDIwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5v
IG5ldyB0ZXN0cywgdW4tc2tpcHBlZCBleGlzdGluZyB0ZXN0cyB0aGF0IHBhc3MgYmVjYXVzZSBv
ZiB0aGlzIGNoYW5nZS4KKyAgICAgICAgCisgICAgICAgIFRoZSBHUFUgcHJvY2VzcyBzYW5kYm94
IGRvZXMgbm90IGFsbG93IGFjY2VzcyB0byBsb2NhbCBmaWxlcyBzbyBleHRlbmQgaXQgYmVmb3Jl
IAorICAgICAgICBhdHRlbXB0aW5nIHRvIG9wZW4gYSBmaWxlOi8vIHVybCwgYW5kIHJldm9rZSB0
aGUgZXh0ZW5zaW9uIHdoZW4gdGhlIGZpbGUgaXMgY2xvc2VkLgorCisgICAgICAgICogR1BVUHJv
Y2Vzcy9HUFVQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVUHJvY2Vzczo6Y29uZmln
dXJlRm9yTWVkaWFQbGF5YmFjayk6CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmg6
CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAq
IEdQVVByb2Nlc3MvR1BVUHJvY2Vzc01lZGlhQ29uZmlndXJhdGlvbi5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdDo6R1BVUHJvY2Vzc01lZGlhQ29uZmlndXJhdGlvbjo6ZW5jb2RlIGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6R1BVUHJvY2Vzc01lZGlhQ29uZmlndXJhdGlvbjo6ZGVjb2RlKToK
KyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6Omxv
YWQpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
UHJveHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFu
YWdlclByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
TWVkaWFQbGF5ZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVy
UHJveHk6OmludmFsaWRhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllclBy
b3h5Ojpsb2FkKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVy
UHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OkdQVVByb2Nlc3NQcm94eTo6b3BlbkdQVVByb2Nlc3NDb25uZWN0aW9u
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5oOgorICAg
ICAgICAoV2ViS2l0OjpHUFVQcm9jZXNzQ29ubmVjdGlvbjo6c2V0QXVkaXRUb2tlbik6CisgICAg
ICAgIChXZWJLaXQ6OkdQVVByb2Nlc3NDb25uZWN0aW9uOjphdWRpdFRva2VuIGNvbnN0KToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbkluZm8uaDoKKyAgICAg
ICAgKFdlYktpdDo6R1BVUHJvY2Vzc0Nvbm5lY3Rpb25JbmZvOjplbmNvZGUgY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpHUFVQcm9jZXNzQ29ubmVjdGlvbkluZm86OmRlY29kZSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpwcmVwYXJlRm9yUGxheWJh
Y2spOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZTo6bG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZTo6Y2FuY2VsTG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZTo6cHJlcGFyZVRvUGxheSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZTo6cGxheSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZTo6cGF1c2UpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6OnNldFByZXNlcnZlc1BpdGNoKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlOjpzZXRWb2x1bWVEb3VibGUpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXll
clByaXZhdGVSZW1vdGU6OnNldE11dGVkKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlOjpzZXRQcmVsb2FkKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlOjpzZXRQcml2YXRlQnJvd3NpbmdNb2RlKToKKyAgICAgICAgKFdlYktpdDo6
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZWVrKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlOjpzZWVrV2l0aFRvbGVyYW5jZSk6CisgICAgICAgIChXZWJLaXQ6
Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cHJlcGFyZUZvclJlbmRlcmluZyk6CisgICAgICAg
IChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0U2l6ZSk6CisgICAgICAgIChX
ZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0VmlzaWJsZSk6CisgICAgICAgIChX
ZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0U2hvdWxkTWFpbnRhaW5Bc3BlY3RS
YXRpbyk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0Vmlk
ZW9GdWxsc2NyZWVuRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OnNldFZpZGVvRnVsbHNjcmVlbkdyYXZpdHkpOgorICAgICAgICAoV2ViS2l0OjpNZWRp
YVBsYXllclByaXZhdGVSZW1vdGU6OmFjY2VsZXJhdGVkUmVuZGVyaW5nU3RhdGVDaGFuZ2VkKToK
KyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRTaG91bGREaXNh
YmxlU2xlZXApOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnJl
cXVlc3RSZXNvdXJjZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
TWVkaWFQbGF5ZXJNSU1FVHlwZUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVk
aWFQbGF5ZXJNSU1FVHlwZUNhY2hlOjpjYW5EZWNvZGVFeHRlbmRlZFR5cGUpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1JTUVUeXBlQ2FjaGU6OnN1cHBvcnRzVHlwZUFuZENv
ZGVjcyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTUlNRVR5cGVDYWNoZTo6
aW5pdGlhbGl6ZUNhY2hlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXI6OmNyZWF0ZVJlbW90ZU1lZGlhUGxheWVyKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpkZWxldGVSZW1vdGVNZWRpYVBsYXllcik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6Z2V0U3VwcG9ydGVkVHlwZXMpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6Om9yaWdpbnNJbk1lZGlh
Q2FjaGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OmNsZWFy
TWVkaWFDYWNoZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6
Y2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlcjo6Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24gY29uc3QpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5oOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OnBhcmVudFByb2Nlc3MgY29uc3QpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3M6OmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKToKKwogMjAyMC0wMS0wNyAgRGFu
aWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgRmlyc3QgY2hhcmFjdGVy
IGluIGVhY2ggd29yZC13cmFwcGVkIGxpbmUgaGFzIGluY29ycmVjdCBjaGFyYWN0ZXIgcmVjdCB3
aGVuIHJlcXVlc3RlZCByYW5nZSBzcGFucyBtdWx0aXBsZSBsaW5lcwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL0dQVVByb2Nlc3MuY3BwCmluZGV4IDFkZjM1M2JhNTdlNWJlNjk2MDQyNjQ2ODUyYWYz
NmY0ODU4YTE4ZmYuLmZiMDdhNjk1NzBkZTgxMDA1YWExYjY0YmQzOTY4MjQwNDAxODk2NWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVUHJvY2Vzcy5jcHAKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxOS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzQsNyArMzQsOSBAQAogI2lu
Y2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmgiCiAjaW5jbHVkZSAiR1BVUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgorI2luY2x1
ZGUgIkdQVVByb2Nlc3NNZWRpYUNvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJMb2dnaW5nLmgi
CisjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1l
c3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2xNZXNzYWdlcy5oIgogI2luY2x1ZGUg
PFdlYkNvcmUvTG9nSW5pdGlhbGl6YXRpb24uaD4KQEAgLTEwOSw2ICsxMTEsMTIgQEAgdm9pZCBH
UFVQcm9jZXNzOjppbml0aWFsaXplR1BVUHJvY2VzcyhHUFVQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzJiYgcGFyYW1ldGVycykKICAgICBzZXRNb2NrQ2FwdHVyZURldmljZXNFbmFibGVkKHBhcmFt
ZXRlcnMudXNlTW9ja0NhcHR1cmVEZXZpY2VzKTsKIH0KIAordm9pZCBHUFVQcm9jZXNzOjpjb25m
aWd1cmVGb3JNZWRpYVBsYXliYWNrKEdQVVByb2Nlc3NNZWRpYUNvbmZpZ3VyYXRpb24mJiBjb25m
aWd1cmF0aW9uKQoreworICAgIFNhbmRib3hFeHRlbnNpb246OmNvbnN1bWVQZXJtYW5lbnRseShj
b25maWd1cmF0aW9uLm1lZGlhQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOworICAgIFNh
bmRib3hFeHRlbnNpb246OmNvbnN1bWVQZXJtYW5lbnRseShjb25maWd1cmF0aW9uLm1lZGlhS2V5
U3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7Cit9CisKIHZvaWQgR1BVUHJvY2Vzczo6
cHJlcGFyZVRvU3VzcGVuZChib29sIGlzU3VzcGVuc2lvbkltbWluZW50LCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgUkVMRUFTRV9MT0coUHJv
Y2Vzc1N1c3BlbnNpb24sICIlcCAtIEdQVVByb2Nlc3M6OnByZXBhcmVUb1N1c3BlbmQoKSwgaXNT
dXNwZW5zaW9uSW1taW5lbnQ6ICVkIiwgdGhpcywgaXNTdXNwZW5zaW9uSW1taW5lbnQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3MuaCBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmgKaW5kZXggYWUyMGJmOTRhMTE1MzU4ZGE1MWVk
YjVhYzMxOWM0MTNhNTlkNTQ4NC4uZjFmNDE3YWJhYmY1MGEwYTdlODUxNjE0NzliMTYyMGI4NTkx
YjUwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3MuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVUHJvY2Vzcy5oCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDE2ICsyOCwxOSBA
QAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIkF1eGlsaWFyeVByb2Nlc3Mu
aCIKKyNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5
SWRlbnRpZmllci5oIgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYv
RnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmg+CisjaW5j
bHVkZSA8d3RmL1VSTEhhc2guaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAogY2xhc3MgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzczsKIHN0cnVjdCBH
UFVQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOworc3RydWN0IEdQVVByb2Nlc3NNZWRpYUNvbmZp
Z3VyYXRpb247CiAKIGNsYXNzIEdQVVByb2Nlc3MgOiBwdWJsaWMgQXV4aWxpYXJ5UHJvY2Vzcywg
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEdQVVByb2Nlc3M+LCBwdWJsaWMgQ2FuTWFrZVdl
YWtQdHI8R1BVUHJvY2Vzcz4gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEdQVVByb2Nlc3Mp
OwpAQCAtNzIsNiArNzUsNyBAQCBwcml2YXRlOgogICAgIC8vIE1lc3NhZ2UgSGFuZGxlcnMKICAg
ICB2b2lkIGluaXRpYWxpemVHUFVQcm9jZXNzKEdQVVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMm
Jik7CiAgICAgdm9pZCBjcmVhdGVHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKFdlYkNvcmU6OlBy
b2Nlc3NJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChP
cHRpb25hbDxJUEM6OkF0dGFjaG1lbnQ+JiYpPiYmKTsKKyAgICB2b2lkIGNvbmZpZ3VyZUZvck1l
ZGlhUGxheWJhY2soR1BVUHJvY2Vzc01lZGlhQ29uZmlndXJhdGlvbiYmKTsKIAogICAgIHZvaWQg
cHJvY2Vzc0RpZFRyYW5zaXRpb25Ub0ZvcmVncm91bmQoKTsKICAgICB2b2lkIHByb2Nlc3NEaWRU
cmFuc2l0aW9uVG9CYWNrZ3JvdW5kKCk7CkBAIC03OSw2ICs4Myw4IEBAIHByaXZhdGU6CiAKICAg
ICAvLyBDb25uZWN0aW9ucyB0byBXZWJQcm9jZXNzZXMuCiAgICAgSGFzaE1hcDxXZWJDb3JlOjpQ
cm9jZXNzSWRlbnRpZmllciwgUmVmPEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+PiBtX3dlYlBy
b2Nlc3NDb25uZWN0aW9uczsKKworICAgIEhhc2hNYXA8VVJMLCBSZWZQdHI8U2FuZGJveEV4dGVu
c2lvbj4+IG1fbWVkaWFDYXB0dXJlU2FuZGJveEV4dGVuc2lvbnM7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9j
ZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3MubWVz
c2FnZXMuaW4KaW5kZXggM2ZjZGYxYmRmMTRhZTkyMGVkYWU2Yzk5OTdmNTA2ZDkyMDBkNjZhZi4u
NDQ0ZjRjMjg1YTFjYzAwYjQ0MTNjMjEwYjU0NGY0NzcyZmIzOGE4OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTEsNCArMSw0IEBA
Ci0jIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisj
IENvcHlyaWdodCAoQykgMjAxOS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjksNiArMjksOCBAQCBtZXNzYWdlcyAt
PiBHUFVQcm9jZXNzIHsKICAgICAjIENyZWF0ZXMgYSBjb25uZWN0aW9uIGZvciBjb21tdW5pY2F0
aW9uIHdpdGggYSBXZWJQcm9jZXNzCiAgICAgQ3JlYXRlR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBwcm9jZXNzSWRlbnRpZmllciwgUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklEKSAtPiAoT3B0aW9uYWw8SVBDOjpBdHRhY2htZW50PiBjb25uZWN0aW9u
SWRlbnRpZmllcikgQXN5bmMKIAorICAgIENvbmZpZ3VyZUZvck1lZGlhUGxheWJhY2soc3RydWN0
IFdlYktpdDo6R1BVUHJvY2Vzc01lZGlhQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKQorCiAg
ICAgUHJvY2Vzc0RpZFRyYW5zaXRpb25Ub0ZvcmVncm91bmQoKQogICAgIFByb2Nlc3NEaWRUcmFu
c2l0aW9uVG9CYWNrZ3JvdW5kKCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL0dQVVByb2Nlc3NNZWRpYUNvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9HUFVQcm9jZXNzTWVkaWFDb25maWd1cmF0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWViZWY0Nzc3
ZTdlMmQxODQwZmFmNGE3YWNkZmZkNDhhMWU0ZDNmYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzTWVkaWFDb25maWd1cmF0aW9uLmgKQEAgLTAs
MCArMSw5MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9Q
Uk9DRVNTKQorCisjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgorCituYW1lc3BhY2UgSVBD
IHsKK2NsYXNzIERlY29kZXI7CitjbGFzcyBFbmNvZGVyOworfQorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworc3RydWN0IEdQVVByb2Nlc3NNZWRpYUNvbmZpZ3VyYXRpb24geworICAgIEdQVVByb2Nl
c3NNZWRpYUNvbmZpZ3VyYXRpb24oKSA9IGRlZmF1bHQ7CisKKyAgICBTdHJpbmcgbWVkaWFDYWNo
ZURpcmVjdG9yeTsKKyAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgbWVkaWFDYWNoZURpcmVj
dG9yeUV4dGVuc2lvbkhhbmRsZTsKKyAgICBTdHJpbmcgbWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5
OworICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBtZWRpYUtleVN0b3JhZ2VEaXJlY3RvcnlF
eHRlbnNpb25IYW5kbGU7CisKKyAgICBib29sIHVzZU1vY2tDYXB0dXJlRGV2aWNlcyB7IGZhbHNl
IH07CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgorICAgIHZvaWQgZW5jb2RlKEVuY29k
ZXImIGVuY29kZXIpIGNvbnN0CisgICAgeworICAgICAgICBlbmNvZGVyIDw8IG1lZGlhQ2FjaGVE
aXJlY3Rvcnk7CisgICAgICAgIGVuY29kZXIgPDwgbWVkaWFDYWNoZURpcmVjdG9yeUV4dGVuc2lv
bkhhbmRsZTsKKyAgICAgICAgZW5jb2RlciA8PCBtZWRpYUtleVN0b3JhZ2VEaXJlY3Rvcnk7Cisg
ICAgICAgIGVuY29kZXIgPDwgbWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxl
OworICAgIH0KKworICAgIHRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPgorICAgIHN0YXRpYyBPcHRp
b25hbDxHUFVQcm9jZXNzTWVkaWFDb25maWd1cmF0aW9uPiBkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
cikKKyAgICB7CisgICAgICAgIFN0cmluZyBtZWRpYUNhY2hlRGlyZWN0b3J5OworICAgICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKG1lZGlhQ2FjaGVEaXJlY3RvcnkpKQorICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGU+IG1lZGlhQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CisgICAgICAgIGRlY29k
ZXIgPj4gbWVkaWFDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKKyAgICAgICAgaWYgKCFt
ZWRpYUNhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKQorICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKworICAgICAgICBTdHJpbmcgbWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5Owor
ICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG1lZGlhS2V5U3RvcmFnZURpcmVjdG9yeSkpCisg
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIE9wdGlvbmFsPFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZT4gbWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFu
ZGxlOworICAgICAgICBkZWNvZGVyID4+IG1lZGlhS2V5U3RvcmFnZURpcmVjdG9yeUV4dGVuc2lv
bkhhbmRsZTsKKyAgICAgICAgaWYgKCFtZWRpYUtleVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25I
YW5kbGUpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgIHJldHVy
biB7eworICAgICAgICAgICAgV1RGTW92ZShtZWRpYUNhY2hlRGlyZWN0b3J5KSwKKyAgICAgICAg
ICAgIFdURk1vdmUoKm1lZGlhQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpLAorICAgICAg
ICAgICAgV1RGTW92ZShtZWRpYUtleVN0b3JhZ2VEaXJlY3RvcnkpLAorICAgICAgICAgICAgV1RG
TW92ZSgqbWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKSwKKyAgICAgICAg
fX07CisgICAgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFC
TEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcAppbmRleCA5Yjcx
ZWE3NjE1NjViNDUxM2U0ODliODk5YTc5NWVhY2IwZGYwMWJjLi40NzkzMzA5OTBjMzhmMDZjYjg2
MGNjMzhmNTMxY2YzMGUzMGQyZWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHAK
QEAgLTIwMywxMCArMjAzLDEwIEBAIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6
OnByZXBhcmVGb3JQbGF5YmFjayhNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJCiAgICAgICAgIHBs
YXllci0+cHJlcGFyZUZvclBsYXliYWNrKHByaXZhdGVNb2RlLCBwcmVsb2FkLCBwcmVzZXJ2ZXNQ
aXRjaCwgcHJlcGFyZUZvclJlbmRlcmluZyk7CiB9CiAKLXZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyUHJveHk6OmxvYWQoTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZCwg
VVJMJiYgdXJsLCBXZWJDb3JlOjpDb250ZW50VHlwZSYmIGNvbnRlbnRUeXBlLCBTdHJpbmcmJiBr
ZXlTeXN0ZW0sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlTWVkaWFQbGF5ZXJDb25maWd1
cmF0aW9uJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBSZW1vdGVNZWRpYVBsYXllck1h
bmFnZXJQcm94eTo6bG9hZChNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkLCBV
UkwmJiB1cmwsIE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4mJiBzYW5kYm94RXh0
ZW5zaW9uLCBXZWJDb3JlOjpDb250ZW50VHlwZSYmIGNvbnRlbnRUeXBlLCBTdHJpbmcmJiBrZXlT
eXN0ZW0sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlTWVkaWFQbGF5ZXJDb25maWd1cmF0
aW9uJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmIChhdXRvIHBsYXllciA9IG1f
cHJveGllcy5nZXQoaWQpKQotICAgICAgICBwbGF5ZXItPmxvYWQoV1RGTW92ZSh1cmwpLCBXVEZN
b3ZlKGNvbnRlbnRUeXBlKSwgV1RGTW92ZShrZXlTeXN0ZW0pLCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CisgICAgICAgIHBsYXllci0+bG9hZChXVEZNb3ZlKHVybCksIFdURk1vdmUoc2Fu
ZGJveEV4dGVuc2lvbiksIFdURk1vdmUoY29udGVudFR5cGUpLCBXVEZNb3ZlKGtleVN5c3RlbSks
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBSZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXJQcm94eTo6Y2FuY2VsTG9hZChNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlm
aWVyIGlkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuaAppbmRleCAwNGY2YzA4ZWU1YTA5YWNh
YjVkYjQwM2FjNjU5NGI2OWVjNWU3N2Y2Li5kMzdjZjE4YWEzMjc5MjhiNDFmMmQwYTVmM2M4MGYz
MGZmMWUxZjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuaApAQCAtMzAsNiArMzAsNyBA
QAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGVJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVk
ZSAiU2FuZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQbGF5ZXIuaD4K
ICNpbmNsdWRlIDx3dGYvTG9nZ2VySGVscGVyLmg+CiAKQEAgLTgyLDcgKzgzLDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmJiwgVmVjdG9yPFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mJik7CiAgICAgdm9pZCBzdXBwb3J0c0tleVN5c3Rl
bShXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYmLCBjb25zdCBTdHJpbmcmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
Jik7CiAKLSAgICB2b2lkIGxvYWQoTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciwg
VVJMJiYsIFdlYkNvcmU6OkNvbnRlbnRUeXBlJiYsIFN0cmluZyYmLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFJlbW90ZU1lZGlhUGxheWVyQ29uZmlndXJhdGlvbiYmKT4mJik7CisgICAgdm9pZCBs
b2FkKE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIsIFVSTCYmLCBPcHRpb25hbDxT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+JiYsIFdlYkNvcmU6OkNvbnRlbnRUeXBlJiYsIFN0cmlu
ZyYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlbW90ZU1lZGlhUGxheWVyQ29uZmlndXJhdGlv
biYmKT4mJik7CiAgICAgdm9pZCBwcmVwYXJlRm9yUGxheWJhY2soTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlSWRlbnRpZmllciwgYm9vbCBwcml2YXRlTW9kZSwgV2ViQ29yZTo6TWVkaWFQbGF5ZXJF
bnVtczo6UHJlbG9hZCwgYm9vbCBwcmVzZXJ2ZXNQaXRjaCwgYm9vbCBwcmVwYXJlRm9yUmVuZGVy
aW5nKTsKICAgICB2b2lkIGNhbmNlbExvYWQoTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRp
Zmllcik7CiAgICAgdm9pZCBwcmVwYXJlVG9QbGF5KE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlk
ZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmlu
CmluZGV4IGUxMTZiNGUxMjY5MjQxOGQ1NWY4NWRiZWU0MDIwMTM0MzQ3ZDRhNWQuLmIxZTE0MjBi
YTljMTEwODkyZDk4OGM1NjlhZjIwZTdlYWM3NGI5YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5tZXNzYWdl
cy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KQEAgLTM3LDcgKzM3LDcgQEAgbWVzc2FnZXMgLT4g
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkgTm90UmVmQ291bnRlZCB7CiAKICAgICBQcmVw
YXJlRm9yUGxheWJhY2soV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVy
IGlkLCBib29sIHByaXZhdGVNb2RlLCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6TWVkaWFQbGF5ZXJF
bnVtczo6UHJlbG9hZCBwcmVsb2FkLCBib29sIHByZXNlcnZlc1BpdGNoLCBib29sIHByZXBhcmVG
b3JSZW5kZXJpbmcpCiAKLSAgICBMb2FkKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
SWRlbnRpZmllciBpZCwgVVJMIHVybCwgV2ViQ29yZTo6Q29udGVudFR5cGUgY29udGVudFR5cGUs
IFN0cmluZyBrZXlTeXN0ZW0pIC0+IChzdHJ1Y3QgV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllckNv
bmZpZ3VyYXRpb24gcGxheWVyQ29uZmlndXJhdGlvbikgQXN5bmMKKyAgICBMb2FkKFdlYktpdDo6
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZCwgVVJMIHVybCwgT3B0aW9uYWw8
V2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IHNhbmRib3hFeHRlbnNpb24sIFdlYkNv
cmU6OkNvbnRlbnRUeXBlIGNvbnRlbnRUeXBlLCBTdHJpbmcga2V5U3lzdGVtKSAtPiAoc3RydWN0
IFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJDb25maWd1cmF0aW9uIHBsYXllckNvbmZpZ3VyYXRp
b24pIEFzeW5jCiAgICAgQ2FuY2VsTG9hZChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZUlkZW50aWZpZXIgaWQpCiAKICAgICBQcmVwYXJlVG9QbGF5KFdlYktpdDo6TWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlSWRlbnRpZmllciBpZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcAppbmRleCA4MjQzMGZk
NmMyYmFkNzhhNzc1YTliMzNiMzk1YjdjZmI0MGI2MjMxLi4zMTcwM2QyM2I1YTQ2M2VmMTBlNzQ4
YzY1MDMwZjIyMmNmZmExMjc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwCkBAIC02OSw2ICs2OSwxMCBA
QCB2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6OmludmFsaWRhdGUoKQogewogICAgIG1fdXBk
YXRlQ2FjaGVkU3RhdGVNZXNzYWdlVGltZXIuc3RvcCgpOwogICAgIG1fcGxheWVyLT5pbnZhbGlk
YXRlKCk7CisgICAgaWYgKG1fc2FuZGJveEV4dGVuc2lvbikgeworICAgICAgICBtX3NhbmRib3hF
eHRlbnNpb24tPnJldm9rZSgpOworICAgICAgICBtX3NhbmRib3hFeHRlbnNpb24gPSBudWxscHRy
OworICAgIH0KIH0KIAogdm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjpnZXRDb25maWd1cmF0
aW9uKFJlbW90ZU1lZGlhUGxheWVyQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKQEAgLTgy
LDExICs4NiwyNyBAQCB2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6OmdldENvbmZpZ3VyYXRp
b24oUmVtb3RlTWVkaWFQbGF5ZXJDb25maWd1cmF0aW9uJiBjbwogICAgIGNvbmZpZ3VyYXRpb24u
c2hvdWxkSWdub3JlSW50cmluc2ljU2l6ZSA9IG1fcGxheWVyLT5zaG91bGRJZ25vcmVJbnRyaW5z
aWNTaXplKCk7CiB9CiAKLXZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bG9hZChjb25zdCBV
UkwmIHVybCwgY29uc3QgQ29udGVudFR5cGUmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGtl
eVN5c3RlbSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZW1vdGVNZWRpYVBsYXllckNvbmZpZ3Vy
YXRpb24mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJv
eHk6OmxvYWQoY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZT4mJiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBjb25zdCBDb250ZW50VHlwZSYgY29udGVudFR5
cGUsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlbW90
ZU1lZGlhUGxheWVyQ29uZmlndXJhdGlvbiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKKyAg
ICBSZW1vdGVNZWRpYVBsYXllckNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbjsKKworICAgIGlm
IChzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSB7CisgICAgICAgIG1fc2FuZGJveEV4dGVuc2lvbiA9
IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZShXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb25IYW5kbGUu
dmFsdWUoKSkpOworCisgICAgICAgIGlmICghbV9zYW5kYm94RXh0ZW5zaW9uKSB7CisgICAgICAg
ICAgICBXVEZMb2dBbHdheXMoIlVuYWJsZSB0byBjcmVhdGUgc2FuZGJveCBleHRlbnNpb24gZm9y
IG1lZGlhIHVybC5cbiIpOworCisgICAgICAgICAgICBnZXRDb25maWd1cmF0aW9uKGNvbmZpZ3Vy
YXRpb24pOworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb25maWd1cmF0
aW9uKSk7CisgICAgICAgICAgICBtX2NhY2hlZFN0YXRlLm5ldHdvcmtTdGF0ZSA9IE1lZGlhUGxh
eWVyOjpOZXR3b3JrU3RhdGU6OkZvcm1hdEVycm9yOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisKKyAgICAgICAgbV9zYW5kYm94RXh0ZW5zaW9uLT5jb25zdW1lKCk7CisgICAgfQor
CiAgICAgbV9wbGF5ZXItPmxvYWQodXJsLCBjb250ZW50VHlwZSwga2V5U3lzdGVtKTsKIAotICAg
IFJlbW90ZU1lZGlhUGxheWVyQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uOwogICAgIGdldENv
bmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbik7CiAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92
ZShjb25maWd1cmF0aW9uKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaAppbmRleCA1ZTI3NjFiMDFjNTQxZDJk
NmNkMzRiNjI0YzM2ZjM5MDRiOGY0ZTNjLi5mY2MzNjY0YzI0NGUzMjhkNmRjYWRmYWRjMTk4ODJl
MzI2M2ZlYzJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTWVkaWFQbGF5ZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJS
ZW1vdGVNZWRpYVBsYXllclByb3h5Q29uZmlndXJhdGlvbi5oIgogI2luY2x1ZGUgIlJlbW90ZU1l
ZGlhUGxheWVyU3RhdGUuaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVJlc291cmNlSWRlbnRpZmll
ci5oIgorI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Nv
b2tpZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQbGF5ZXIuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1BsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5oPgpAQCAtNjAsNyArNjEsNyBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIHByZXBhcmVGb3JQbGF5YmFjayhib29sIHByaXZhdGVNb2RlLCBXZWJD
b3JlOjpNZWRpYVBsYXllckVudW1zOjpQcmVsb2FkLCBib29sIHByZXNlcnZlc1BpdGNoLCBib29s
IHByZXBhcmVGb3JSZW5kZXJpbmcpOwogCi0gICAgdm9pZCBsb2FkKGNvbnN0IFVSTCYsIGNvbnN0
IFdlYkNvcmU6OkNvbnRlbnRUeXBlJiwgY29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChSZW1vdGVNZWRpYVBsYXllckNvbmZpZ3VyYXRpb24mJik+JiYpOworICAgIHZvaWQgbG9h
ZChjb25zdCBVUkwmLCBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+JiYsIGNvbnN0
IFdlYkNvcmU6OkNvbnRlbnRUeXBlJiwgY29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChSZW1vdGVNZWRpYVBsYXllckNvbmZpZ3VyYXRpb24mJik+JiYpOwogICAgIHZvaWQgY2Fu
Y2VsTG9hZCgpOwogCiAgICAgdm9pZCBwcmVwYXJlVG9QbGF5KCk7CkBAIC0xODYsNiArMTg3LDcg
QEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRp
ZmllciBtX2lkOworICAgIFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiBtX3NhbmRib3hFeHRlbnNp
b247CiAgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV93ZWJQcm9jZXNzQ29ubmVjdGlvbjsKICAg
ICBSZWZQdHI8V2ViQ29yZTo6TWVkaWFQbGF5ZXI+IG1fcGxheWVyOwogICAgIFJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlclByb3h5JiBtX21hbmFnZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuY3BwCmluZGV4IDUwYjRiMWEwNDlmNTNkMjU4ZTAwZTlj
OGRjYTczNDA3MjFmODk5MjYuLjBiMGY1MTMzMjU5MjRiYjZjZDU2M2IzNjQ2NjNiZjg3ZGU2MWNk
NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHku
Y3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJEcmF3aW5nQXJlYVByb3h5LmgiCiAjaW5jbHVk
ZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb25JbmZvLmgiCiAjaW5jbHVkZSAiR1BVUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycy5oIgorI2luY2x1ZGUgIkdQVVByb2Nlc3NNZWRpYUNvbmZpZ3VyYXRpb24u
aCIKICNpbmNsdWRlICJHUFVQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJHUFVQcm9jZXNz
UHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKQEAgLTQ3LDcgKzQ4LDcgQEAK
ICNpbmNsdWRlIDx3dGYvc3BpL2Rhcndpbi9YUENTUEkuaD4KICNlbmRpZgogCi0jZGVmaW5lIE1F
U1NBR0VfQ0hFQ0soYXNzZXJ0aW9uKSBNRVNTQUdFX0NIRUNLX0JBU0UoYXNzZXJ0aW9uLCBjb25u
ZWN0aW9uKCkpCisjZGVmaW5lIE1FU1NBR0VfQ0hFQ0soYXNzZXJ0aW9uKSBNRVNTQUdFX0NIRUNL
X0JBU0UoYXNzZXJ0aW9uLCB0aGlzLT5jb25uZWN0aW9uKCkpCiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC0xMTIsNyArMTEzLDI3IEBAIHZvaWQgR1BV
UHJvY2Vzc1Byb3h5OjpnZXRHUFVQcm9jZXNzQ29ubmVjdGlvbihXZWJQcm9jZXNzUHJveHkmIHdl
YlByb2Nlc3NQcm94eSwKIAogdm9pZCBHUFVQcm9jZXNzUHJveHk6Om9wZW5HUFVQcm9jZXNzQ29u
bmVjdGlvbihDb25uZWN0aW9uUmVxdWVzdElkZW50aWZpZXIgY29ubmVjdGlvblJlcXVlc3RJZGVu
dGlmaWVyLCBXZWJQcm9jZXNzUHJveHkmIHdlYlByb2Nlc3NQcm94eSkKIHsKLSAgICBjb25uZWN0
aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6R1BVUHJvY2Vzczo6Q3JlYXRlR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyB7IHdlYlByb2Nlc3NQcm94eS5jb3JlUHJvY2Vzc0lkZW50
aWZpZXIoKSwgd2ViUHJvY2Vzc1Byb3h5LnNlc3Npb25JRCgpIH0sIFt0aGlzLCB3ZWFrVGhpcyA9
IG1ha2VXZWFrUHRyKHRoaXMpLCB3ZWJQcm9jZXNzUHJveHkgPSBtYWtlV2Vha1B0cih3ZWJQcm9j
ZXNzUHJveHkpLCBjb25uZWN0aW9uUmVxdWVzdElkZW50aWZpZXJdKGF1dG8mJiBjb25uZWN0aW9u
SWRlbnRpZmllcikgbXV0YWJsZSB7CisgICAgYXV0byYgY29ubmVjdGlvbiA9ICp0aGlzLT5jb25u
ZWN0aW9uKCk7CisKKyAgICBpZiAoIW1faGF2ZUV4dGVuZGVkUHJvY2Vzc1NhbmRib3gpIHsKKyAg
ICAgICAgbV9oYXZlRXh0ZW5kZWRQcm9jZXNzU2FuZGJveCA9IHRydWU7CisKKyAgICAgICAgYXV0
byYgd2Vic2l0ZURhdGFTdG9yZSA9IHdlYlByb2Nlc3NQcm94eS53ZWJzaXRlRGF0YVN0b3JlKCk7
CisgICAgICAgIHdlYnNpdGVEYXRhU3RvcmUucmVzb2x2ZURpcmVjdG9yaWVzSWZOZWNlc3Nhcnko
KTsKKworICAgICAgICBHUFVQcm9jZXNzTWVkaWFDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb247
CisgICAgICAgIGNvbmZpZ3VyYXRpb24ubWVkaWFDYWNoZURpcmVjdG9yeSA9IHdlYnNpdGVEYXRh
U3RvcmUucmVzb2x2ZWRNZWRpYUNhY2hlRGlyZWN0b3J5KCk7CisgICAgICAgIGlmICghY29uZmln
dXJhdGlvbi5tZWRpYUNhY2hlRGlyZWN0b3J5LmlzRW1wdHkoKSkKKyAgICAgICAgICAgIFNhbmRi
b3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKGNvbmZpZ3VyYXRp
b24ubWVkaWFDYWNoZURpcmVjdG9yeSwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZFdyaXRl
LCBjb25maWd1cmF0aW9uLm1lZGlhQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOworCisg
ICAgICAgIGNvbmZpZ3VyYXRpb24ubWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5ID0gd2Vic2l0ZURh
dGFTdG9yZS5yZXNvbHZlZE1lZGlhS2V5c0RpcmVjdG9yeSgpOworICAgICAgICBpZiAoIWNvbmZp
Z3VyYXRpb24ubWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5LmlzRW1wdHkoKSkKKyAgICAgICAgICAg
IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKGNvbmZp
Z3VyYXRpb24ubWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5LCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBl
OjpSZWFkV3JpdGUsIGNvbmZpZ3VyYXRpb24ubWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5RXh0ZW5z
aW9uSGFuZGxlKTsKKworICAgICAgICBjb25uZWN0aW9uLnNlbmQoTWVzc2FnZXM6OkdQVVByb2Nl
c3M6OkNvbmZpZ3VyZUZvck1lZGlhUGxheWJhY2soY29uZmlndXJhdGlvbiksIDApOworICAgIH0K
KworICAgIGNvbm5lY3Rpb24uc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpHUFVQcm9jZXNz
OjpDcmVhdGVHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzIHsgd2ViUHJvY2Vzc1Byb3h5LmNvcmVQ
cm9jZXNzSWRlbnRpZmllcigpLCB3ZWJQcm9jZXNzUHJveHkuc2Vzc2lvbklEKCkgfSwgW3RoaXMs
IHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIHdlYlByb2Nlc3NQcm94eSA9IG1ha2VXZWFr
UHRyKHdlYlByb2Nlc3NQcm94eSksIGNvbm5lY3Rpb25SZXF1ZXN0SWRlbnRpZmllcl0oYXV0byYm
IGNvbm5lY3Rpb25JZGVudGlmaWVyKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykK
ICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMTI5LDcgKzE1MCw3IEBAIHZvaWQgR1BVUHJvY2Vz
c1Byb3h5OjpvcGVuR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oQ29ubmVjdGlvblJlcXVlc3RJZGVudGlm
aWVyIGNvbm5lCiAgICAgICAgIHJlcXVlc3QucmVwbHkoR1BVUHJvY2Vzc0Nvbm5lY3Rpb25JbmZv
IHsgV1RGTW92ZSgqY29ubmVjdGlvbklkZW50aWZpZXIpIH0pOwogI2VsaWYgT1MoREFSV0lOKQog
ICAgICAgICBNRVNTQUdFX0NIRUNLKE1BQ0hfUE9SVF9WQUxJRChjb25uZWN0aW9uSWRlbnRpZmll
ci0+cG9ydCgpKSk7Ci0gICAgICAgIHJlcXVlc3QucmVwbHkoR1BVUHJvY2Vzc0Nvbm5lY3Rpb25J
bmZvIHsgSVBDOjpBdHRhY2htZW50IHsgY29ubmVjdGlvbklkZW50aWZpZXItPnBvcnQoKSwgTUFD
SF9NU0dfVFlQRV9NT1ZFX1NFTkQgfSB9KTsKKyAgICAgICAgcmVxdWVzdC5yZXBseShHUFVQcm9j
ZXNzQ29ubmVjdGlvbkluZm8geyBJUEM6OkF0dGFjaG1lbnQgeyBjb25uZWN0aW9uSWRlbnRpZmll
ci0+cG9ydCgpLCBNQUNIX01TR19UWVBFX01PVkVfU0VORCB9LCB0aGlzLT5jb25uZWN0aW9uKCkt
PmdldEF1ZGl0VG9rZW4oKSB9KTsKICNlbHNlCiAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7CiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNz
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuaApp
bmRleCAxNzJiYTdhOWY5NWJkOWMxZGMzZGQxZGFmYmU2NzFkNGY4OTU2YThkLi5mNDY2MTU2Njcz
N2ZiYjFlNGM3OTA0YWI1ZDQ1NjI5ZGUwYTgwOGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTktMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDExICszMiw5IEBACiAjaW5jbHVkZSAiUHJv
Y2Vzc0xhdW5jaGVyLmgiCiAjaW5jbHVkZSAiUHJvY2Vzc1Rocm90dGxlci5oIgogI2luY2x1ZGUg
IlByb2Nlc3NUaHJvdHRsZXJDbGllbnQuaCIKLSNpbmNsdWRlICJUcmFuc2FjdGlvbklELmgiCiAj
aW5jbHVkZSAiV2ViUGFnZVByb3h5SWRlbnRpZmllci5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQ
cm94eU1lc3NhZ2VzUmVwbGllcy5oIgogI2luY2x1ZGUgPG1lbW9yeT4KLSNpbmNsdWRlIDx3dGYv
RGVxdWUuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTkyLDYgKzkwLDcgQEAgcHJpdmF0
ZToKIAogICAgIFByb2Nlc3NUaHJvdHRsZXIgbV90aHJvdHRsZXI7CiAgICAgUHJvY2Vzc1Rocm90
dGxlcjo6QWN0aXZpdHlWYXJpYW50IG1fYWN0aXZpdHlGcm9tV2ViUHJvY2Vzc2VzOworICAgIGJv
b2wgbV9oYXZlRXh0ZW5kZWRQcm9jZXNzU2FuZGJveCB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
Y3BwCmluZGV4IGM0NGJmN2MzMmU5OTMxMzljMTAzYzQ3ZTUxNjQyNGQ4ZWRjODY1NmYuLjExYWUx
OTM4OTNlZGExN2Y4N2EyMmExZWI5N2FiMWQ5Yjk0YTQ4NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTAtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5LmgKaW5kZXggOTY1ZmIxY2UwMTdiMTllYzQ4ZWU4ZjRkYjQwMTZkNmI5MTli
NDIzZC4uZDk2ODZhMTUxNDExMWM4ZWU4Y2FmNmE0ZGM5N2IxNzcxNTJiZjFkYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA1Nzc4YmE1ODcyMzJjNmU2YTc4
MjI0NmI5YzdjYjMyMGFlOGZjY2VhLi5kZWE3ZTVhMjJkNWQzZWY2YWNhYjU2Yzg0NmE3ZWQ4ZTEw
N2Y1ZjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTIwNzYsNiArMjA3Niw3IEBACiAJCTA3OTIzMTRFMjM5RDVGNTMwMDk1OThFMiAv
KiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMDdBNUVCQjkxQzdCQTQzRTAwQjlDQTY5IC8qIFdLRnJhbWVIYW5kbGVSZWYuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tGcmFtZUhhbmRsZVJlZi5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3QTVFQkJBMUM3QkE0M0UwMEI5Q0E2
OSAvKiBXS0ZyYW1lSGFuZGxlUmVmLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdLRnJhbWVIYW5kbGVSZWYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDdCMjMy
RkUyM0M0MjMwODAwMUI4OThBIC8qIEdQVVByb2Nlc3NNZWRpYUNvbmZpZ3VyYXRpb24uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gR1BVUHJvY2Vzc01lZGlhQ29uZmlndXJhdGlvbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwN0IzQjQ2RjIzQUIyQ0IzMDBCQTVCMTIgLyogUmVtb3RlTWVkaWFQ
bGF5ZXJTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVNZWRpYVBsYXllclN0YXRlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3QjNCNDc1MjNBRDg5MDQwMEJBNUIxMiAvKiBS
ZW1vdGVNZWRpYVBsYXllclByb3h5Q29uZmlndXJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1v
dGVNZWRpYVBsYXllclByb3h5Q29uZmlndXJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwN0I5M0ZGNTIzQUYwQ0I4MDAzNkY4RUEgLyogUmVtb3RlTWVkaWFQbGF5ZXJDb25m
aWd1cmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZU1lZGlhUGxheWVyQ29uZmlndXJhdGlv
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjM5Nyw2ICs2Mzk4LDcgQEAKIAkJ
CQkyRDlGQjIwMjIzNzUyMDlEMDA0OUY5MzYgLyogR1BVUHJvY2Vzcy5tZXNzYWdlcy5pbiAqLywK
IAkJCQkyRDlGQjIxNDIzNzUyMDlEMDA0OUY5MzYgLyogR1BVUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycy5jcHAgKi8sCiAJCQkJMkQ5RkIyMDMyMzc1MjA5RDAwNDlGOTM2IC8qIEdQVVByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMuaCAqLywKKwkJCQkwN0IyMzJGRTIzQzQyMzA4MDAxQjg5OEEgLyog
R1BVUHJvY2Vzc01lZGlhQ29uZmlndXJhdGlvbi5oICovLAogCQkJKTsKIAkJCXBhdGggPSBHUFVQ
cm9jZXNzOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaAppbmRleCAzMWM2MTA0NjY5
ZjJmMDJmZmE0NDBmZWI4ODA5MjZjNzRhZTI2YWNmLi5hOGFkNGZlZTg2YjI2NTliNGFmZmI3YzQ4
NGRhMTgxYzNiZWYyN2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L0dQVVByb2Nlc3NDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5oCkBAIC00Nyw2ICs0NywxMSBAQCBwdWJsaWM6CiAgICAg
CiAgICAgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKCkgeyByZXR1cm4gbV9jb25uZWN0aW9u
LmdldCgpOyB9CiAKKyNpZiBIQVZFKEFVRElUX1RPS0VOKQorICAgIHZvaWQgc2V0QXVkaXRUb2tl
bihPcHRpb25hbDxhdWRpdF90b2tlbl90PiBhdWRpdFRva2VuKSB7IG1fYXVkaXRUb2tlbiA9IGF1
ZGl0VG9rZW47IH0KKyAgICBPcHRpb25hbDxhdWRpdF90b2tlbl90PiBhdWRpdFRva2VuKCkgY29u
c3QgeyByZXR1cm4gbV9hdWRpdFRva2VuOyB9CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBHUFVQ
cm9jZXNzQ29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIpOwogCkBAIC01Nyw2
ICs2MiwxMCBAQCBwcml2YXRlOgogCiAgICAgLy8gVGhlIGNvbm5lY3Rpb24gZnJvbSB0aGUgd2Vi
IHByb2Nlc3MgdG8gdGhlIEdQVSBwcm9jZXNzLgogICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1f
Y29ubmVjdGlvbjsKKworI2lmIEhBVkUoQVVESVRfVE9LRU4pCisgICAgT3B0aW9uYWw8YXVkaXRf
dG9rZW5fdD4gbV9hdWRpdFRva2VuOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nv
bm5lY3Rpb25JbmZvLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3ND
b25uZWN0aW9uSW5mby5oCmluZGV4IDEwYTkwNjU4MzY0ZmQ4NjNkN2RmYTE2MmIzNDY4M2YwMzJk
ZTk3MDkuLjFhZDcwNTVmNzUxNTkxYjQwOGEzMWEzYjBjOTE5ZDk1NTM0ODdiZDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb25JbmZv
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlv
bkluZm8uaApAQCAtMzEsNiArMzEsOSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RydWN0IEdQ
VVByb2Nlc3NDb25uZWN0aW9uSW5mbyB7CiAgICAgSVBDOjpBdHRhY2htZW50IGNvbm5lY3Rpb247
CisjaWYgSEFWRShBVURJVF9UT0tFTikKKyAgICBPcHRpb25hbDxhdWRpdF90b2tlbl90PiBhdWRp
dFRva2VuOworI2VuZGlmCiAKICAgICBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgaWRlbnRp
ZmllcigpCiAgICAgewpAQCAtNjAsMTIgKzYzLDE5IEBAIHN0cnVjdCBHUFVQcm9jZXNzQ29ubmVj
dGlvbkluZm8gewogICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QK
ICAgICB7CiAgICAgICAgIGVuY29kZXIgPDwgY29ubmVjdGlvbjsKKyNpZiBIQVZFKEFVRElUX1RP
S0VOKQorICAgICAgICBlbmNvZGVyIDw8IGF1ZGl0VG9rZW47CisjZW5kaWYKICAgICB9CiAgICAg
CiAgICAgc3RhdGljIGJvb2wgZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgR1BVUHJvY2Vz
c0Nvbm5lY3Rpb25JbmZvJiBpbmZvKQogICAgIHsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShpbmZvLmNvbm5lY3Rpb24pKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworI2lmIEhBVkUo
QVVESVRfVE9LRU4pCisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaW5mby5hdWRpdFRva2Vu
KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCmluZGV4IGM2ZTU2Mzdm
ZjZlMDc4ZDg5ZDZmZjkzMDkzZTZhOWVmZjBjNzk4MjIuLjE5NGRhMWE0YjJjNDMwMmRiZjg4Y2Jk
MTAzNmYwN2ZmZjVmZWU5OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOS0yMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzAsNyAr
MzAsOSBAQAogCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlclByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgi
CiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vz
cy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQbGF5ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L05vdEltcGxlbWVudGVkLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybUxheWVyLmg+CkBA
IC04NCwxMiArODYsMzggQEAgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp+TWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlKCkKIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnByZXBhcmVG
b3JQbGF5YmFjayhib29sIHByaXZhdGVNb2RlLCBNZWRpYVBsYXllcjo6UHJlbG9hZCBwcmVsb2Fk
LCBib29sIHByZXNlcnZlc1BpdGNoLCBib29sIHByZXBhcmUpCiB7Ci0gICAgbV9tYW5hZ2VyLmdw
dVByb2Nlc3NDb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyUHJveHk6OlByZXBhcmVGb3JQbGF5YmFjayhtX2lkLCBwcml2YXRlTW9kZSwgcHJlbG9hZCwg
cHJlc2VydmVzUGl0Y2gsIHByZXBhcmUpLCAwKTsKKyAgICBtX21hbmFnZXIuZ3B1UHJvY2Vzc0Nv
bm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyUHJveHk6OlByZXBhcmVGb3JQbGF5YmFjayhtX2lkLCBwcml2YXRlTW9kZSwgcHJlbG9h
ZCwgcHJlc2VydmVzUGl0Y2gsIHByZXBhcmUpLCAwKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGU6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bG9hZChjb25zdCBVUkwmIHVy
bCwgY29uc3QgQ29udGVudFR5cGUmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGtleVN5c3Rl
bSkKIHsKLSAgICBtX21hbmFnZXIuZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5j
UmVwbHkoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpMb2FkKG1faWQs
IHVybCwgY29udGVudFR5cGUsIGtleVN5c3RlbSksIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0
aGlzKV0oYXV0byYmIGNvbmZpZ3VyYXRpb24pIHsKKyAgICBhdXRvJiBjb25uZWN0aW9uID0gbV9t
YW5hZ2VyLmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpOworICAgIE9wdGlvbmFs
PFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gc2FuZGJveEV4dGVuc2lvbkhhbmRsZTsKKyAgICBp
ZiAodXJsLmlzTG9jYWxGaWxlKCkpIHsKKyAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
IGhhbmRsZTsKKyAgICAgICAgYXV0byBmaWxlU3lzdGVtUGF0aCA9IHVybC5maWxlU3lzdGVtUGF0
aCgpOworICAgICAgICBib29sIGNyZWF0ZWRFeHRlbnNpb24gPSBmYWxzZTsKKworI2lmIEhBVkUo
U0FOREJPWF9JU1NVRV9SRUFEX0VYVEVOU0lPTl9UT19QUk9DRVNTX0JZX0FVRElUX1RPS0VOKQor
ICAgICAgICBPcHRpb25hbDxhdWRpdF90b2tlbl90PiBhdWRpdFRva2VuID0gbV9tYW5hZ2VyLmdw
dVByb2Nlc3NDb25uZWN0aW9uKCkuYXVkaXRUb2tlbigpOworICAgICAgICBBU1NFUlQoYXVkaXRU
b2tlbik7CisgICAgICAgIGlmIChhdWRpdFRva2VuKQorICAgICAgICAgICAgY3JlYXRlZEV4dGVu
c2lvbiA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRCeUF1ZGl0VG9rZW4o
ZmlsZVN5c3RlbVBhdGgsIGF1ZGl0VG9rZW4udmFsdWUoKSwgaGFuZGxlKTsKKyAgICAgICAgZWxz
ZQorI2VuZGlmCisgICAgICAgIGNyZWF0ZWRFeHRlbnNpb24gPSBTYW5kYm94RXh0ZW5zaW9uOjpj
cmVhdGVIYW5kbGUoZmlsZVN5c3RlbVBhdGgsIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRP
bmx5LCBoYW5kbGUpOworCisgICAgICAgIGlmICghY3JlYXRlZEV4dGVuc2lvbikgeworICAgICAg
ICAgICAgV1RGTG9nQWx3YXlzKCJVbmFibGUgdG8gY3JlYXRlIHNhbmRib3ggZXh0ZW5zaW9uIGhh
bmRsZSBmb3IgR1BVUHJvY2VzcyB1cmwuXG4iKTsKKyAgICAgICAgICAgIG1fY2FjaGVkU3RhdGUu
bmV0d29ya1N0YXRlID0gTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZTo6Rm9ybWF0RXJyb3I7Cisg
ICAgICAgICAgICBtX3BsYXllci0+bmV0d29ya1N0YXRlQ2hhbmdlZCgpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSA9IFdU
Rk1vdmUoaGFuZGxlKTsKKyAgICB9CisKKyAgICBjb25uZWN0aW9uLnNlbmRXaXRoQXN5bmNSZXBs
eShNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OkxvYWQobV9pZCwgdXJs
LCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBjb250ZW50VHlwZSwga2V5U3lzdGVtKSwgW3dlYWtU
aGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXShhdXRvJiYgY29uZmlndXJhdGlvbikgewogICAgICAg
ICBpZiAod2Vha1RoaXMpCiAgICAgICAgICAgICB3ZWFrVGhpcy0+bV9jb25maWd1cmF0aW9uID0g
Y29uZmlndXJhdGlvbjsKICAgICB9KTsKQEAgLTk3LDQ5ICsxMjUsNDkgQEAgdm9pZCBNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bG9hZChjb25zdCBV
UkwmIHVybCwgY28KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNhbmNlbExvYWQo
KQogewotICAgIG1fbWFuYWdlci5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6
OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpDYW5jZWxMb2FkKG1faWQpLCAwKTsKKyAg
ICBtX21hbmFnZXIuZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNz
YWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OkNhbmNlbExvYWQobV9pZCksIDAp
OwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cHJlcGFyZVRvUGxheSgpCiB7
Ci0gICAgbV9tYW5hZ2VyLmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OlByZXBhcmVUb1BsYXkobV9pZCksIDApOworICAg
IG1fbWFuYWdlci5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6UHJlcGFyZVRvUGxheShtX2lkKSwg
MCk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpwbGF5KCkKIHsKICAgICBt
X2NhY2hlZFN0YXRlLnBhdXNlZCA9IGZhbHNlOwotICAgIG1fbWFuYWdlci5ncHVQcm9jZXNzQ29u
bmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpQ
bGF5KG1faWQpLCAwKTsKKyAgICBtX21hbmFnZXIuZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25u
ZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OlBs
YXkobV9pZCksIDApOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cGF1c2Uo
KQogewogICAgIG1fY2FjaGVkU3RhdGUucGF1c2VkID0gdHJ1ZTsKLSAgICBtX21hbmFnZXIuZ3B1
UHJvY2Vzc0Nvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXJQcm94eTo6UGF1c2UobV9pZCksIDApOworICAgIG1fbWFuYWdlci5ncHVQcm9jZXNzQ29ubmVj
dGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXJQcm94eTo6UGF1c2UobV9pZCksIDApOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZTo6c2V0UHJlc2VydmVzUGl0Y2goYm9vbCBwcmVzZXJ2ZXNQaXRjaCkKIHsKLSAgICBtX21h
bmFnZXIuZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBs
YXllck1hbmFnZXJQcm94eTo6U2V0UHJlc2VydmVzUGl0Y2gobV9pZCwgcHJlc2VydmVzUGl0Y2gp
LCAwKTsKKyAgICBtX21hbmFnZXIuZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCku
c2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OlNldFByZXNlcnZl
c1BpdGNoKG1faWQsIHByZXNlcnZlc1BpdGNoKSwgMCk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlOjpzZXRWb2x1bWVEb3VibGUoZG91YmxlIHZvbHVtZSkKIHsKLSAgICBtX21h
bmFnZXIuZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBs
YXllck1hbmFnZXJQcm94eTo6U2V0Vm9sdW1lKG1faWQsIHZvbHVtZSksIDApOworICAgIG1fbWFu
YWdlci5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6U2V0Vm9sdW1lKG1faWQsIHZvbHVtZSksIDAp
OwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0TXV0ZWQoYm9vbCBtdXRl
ZCkKIHsKLSAgICBtX21hbmFnZXIuZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6U2V0TXV0ZWQobV9pZCwgbXV0ZWQpLCAw
KTsKKyAgICBtX21hbmFnZXIuZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2Vu
ZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OlNldE11dGVkKG1faWQs
IG11dGVkKSwgMCk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRQcmVs
b2FkKE1lZGlhUGxheWVyOjpQcmVsb2FkIHByZWxvYWQpCiB7Ci0gICAgbV9tYW5hZ2VyLmdwdVBy
b2Nlc3NDb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
UHJveHk6OlNldFByZWxvYWQobV9pZCwgcHJlbG9hZCksIDApOworICAgIG1fbWFuYWdlci5ncHVQ
cm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRp
YVBsYXllck1hbmFnZXJQcm94eTo6U2V0UHJlbG9hZChtX2lkLCBwcmVsb2FkKSwgMCk7CiB9CiAK
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRQcml2YXRlQnJvd3NpbmdNb2RlKGJv
b2wgcHJpdmF0ZU1vZGUpCiB7Ci0gICAgbV9tYW5hZ2VyLmdwdVByb2Nlc3NDb25uZWN0aW9uKCku
c2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OlNldFByaXZhdGVC
cm93c2luZ01vZGUobV9pZCwgcHJpdmF0ZU1vZGUpLCAwKTsKKyAgICBtX21hbmFnZXIuZ3B1UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyUHJveHk6OlNldFByaXZhdGVCcm93c2luZ01vZGUobV9pZCwgcHJpdmF0ZU1v
ZGUpLCAwKTsKIH0KIAogTWVkaWFUaW1lIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y3VycmVu
dE1lZGlhVGltZSgpIGNvbnN0CkBAIC0xNTAsMTMgKzE3OCwxMyBAQCBNZWRpYVRpbWUgTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlOjpjdXJyZW50TWVkaWFUaW1lKCkgY29uc3QKIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlOjpzZWVrKGNvbnN0IE1lZGlhVGltZSYgdGltZSkKIHsKICAgICBt
X3NlZWtpbmcgPSB0cnVlOwotICAgIG1fbWFuYWdlci5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLnNl
bmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpTZWVrKG1faWQsIHRp
bWUpLCAwKTsKKyAgICBtX21hbmFnZXIuZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9u
KCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OlNlZWsobV9p
ZCwgdGltZSksIDApOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2Vla1dp
dGhUb2xlcmFuY2UoY29uc3QgTWVkaWFUaW1lJiB0aW1lLCBjb25zdCBNZWRpYVRpbWUmIG5lZ2F0
aXZlVG9sZXJhbmNlLCBjb25zdCBNZWRpYVRpbWUmIHBvc2l0aXZlVG9sZXJhbmNlKQogewogICAg
IG1fc2Vla2luZyA9IHRydWU7Ci0gICAgbV9tYW5hZ2VyLmdwdVByb2Nlc3NDb25uZWN0aW9uKCku
c2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OlNlZWtXaXRoVG9s
ZXJhbmNlKG1faWQsIHRpbWUsIG5lZ2F0aXZlVG9sZXJhbmNlLCBwb3NpdGl2ZVRvbGVyYW5jZSks
IDApOworICAgIG1fbWFuYWdlci5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5z
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6U2Vla1dpdGhUb2xl
cmFuY2UobV9pZCwgdGltZSwgbmVnYXRpdmVUb2xlcmFuY2UsIHBvc2l0aXZlVG9sZXJhbmNlKSwg
MCk7CiB9CiAKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpkaWRMb2FkaW5nUHJvZ3Jl
c3MoKSBjb25zdApAQCAtMzEzLDQyICszNDEsNDIgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OnNob3VsZElnbm9yZUludHJpbnNpY1NpemUoKQogCiB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZTo6cHJlcGFyZUZvclJlbmRlcmluZygpCiB7Ci0gICAgbV9tYW5hZ2VyLmdwdVBy
b2Nlc3NDb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
UHJveHk6OlByZXBhcmVGb3JSZW5kZXJpbmcobV9pZCksIDApOworICAgIG1fbWFuYWdlci5ncHVQ
cm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRp
YVBsYXllck1hbmFnZXJQcm94eTo6UHJlcGFyZUZvclJlbmRlcmluZyhtX2lkKSwgMCk7CiB9CiAK
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRTaXplKGNvbnN0IFdlYkNvcmU6Oklu
dFNpemUmIHNpemUpCiB7Ci0gICAgbV9tYW5hZ2VyLmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuc2Vu
ZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OlNldFNpemUobV9pZCwg
c2l6ZSksIDApOworICAgIG1fbWFuYWdlci5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rp
b24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6U2V0U2l6
ZShtX2lkLCBzaXplKSwgMCk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpz
ZXRWaXNpYmxlKGJvb2wgdmlzaWJsZSkKIHsKLSAgICBtX21hbmFnZXIuZ3B1UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6U2V0
VmlzaWJsZShtX2lkLCB2aXNpYmxlKSwgMCk7CisgICAgbV9tYW5hZ2VyLmdwdVByb2Nlc3NDb25u
ZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFu
YWdlclByb3h5OjpTZXRWaXNpYmxlKG1faWQsIHZpc2libGUpLCAwKTsKIH0KIAogdm9pZCBNZWRp
YVBsYXllclByaXZhdGVSZW1vdGU6OnNldFNob3VsZE1haW50YWluQXNwZWN0UmF0aW8oYm9vbCBt
YWludGFpblJhdGlvKQogewotICAgIG1fbWFuYWdlci5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLnNl
bmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpTZXRTaG91bGRNYWlu
dGFpbkFzcGVjdFJhdGlvKG1faWQsIG1haW50YWluUmF0aW8pLCAwKTsKKyAgICBtX21hbmFnZXIu
Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OlNldFNob3VsZE1haW50YWluQXNwZWN0UmF0aW8obV9p
ZCwgbWFpbnRhaW5SYXRpbyksIDApOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZTo6c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoV2ViQ29yZTo6RmxvYXRSZWN0IHJlY3QpCiB7Ci0g
ICAgbV9tYW5hZ2VyLmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OlNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKG1faWQsIHJl
Y3QpLCAwKTsKKyAgICBtX21hbmFnZXIuZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9u
KCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OlNldFZpZGVv
RnVsbHNjcmVlbkZyYW1lKG1faWQsIHJlY3QpLCAwKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGU6OnNldFZpZGVvRnVsbHNjcmVlbkdyYXZpdHkoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJFbnVtczo6VmlkZW9HcmF2aXR5IGdyYXZpdHkpCiB7Ci0gICAgbV9tYW5hZ2VyLmdwdVByb2Nl
c3NDb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJv
eHk6OlNldFZpZGVvRnVsbHNjcmVlbkdyYXZpdHkobV9pZCwgZ3Jhdml0eSksIDApOworICAgIG1f
bWFuYWdlci5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6U2V0VmlkZW9GdWxsc2NyZWVuR3Jhdml0
eShtX2lkLCBncmF2aXR5KSwgMCk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
OjphY2NlbGVyYXRlZFJlbmRlcmluZ1N0YXRlQ2hhbmdlZCgpCiB7Ci0gICAgbV9tYW5hZ2VyLmdw
dVByb2Nlc3NDb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyUHJveHk6OkFjY2VsZXJhdGVkUmVuZGVyaW5nU3RhdGVDaGFuZ2VkKG1faWQsIG1fcGxheWVy
LT5zdXBwb3J0c0FjY2VsZXJhdGVkUmVuZGVyaW5nKCkpLCAwKTsKKyAgICBtX21hbmFnZXIuZ3B1
UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyUHJveHk6OkFjY2VsZXJhdGVkUmVuZGVyaW5nU3RhdGVDaGFuZ2VkKG1f
aWQsIG1fcGxheWVyLT5zdXBwb3J0c0FjY2VsZXJhdGVkUmVuZGVyaW5nKCkpLCAwKTsKIH0KIAog
dm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFNob3VsZERpc2FibGVTbGVlcChib29s
IGRpc2FibGUpCiB7Ci0gICAgbV9tYW5hZ2VyLmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuc2VuZChN
ZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OlNldFNob3VsZERpc2FibGVT
bGVlcChtX2lkLCBkaXNhYmxlKSwgMCk7CisgICAgbV9tYW5hZ2VyLmdwdVByb2Nlc3NDb25uZWN0
aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdl
clByb3h5OjpTZXRTaG91bGREaXNhYmxlU2xlZXAobV9pZCwgZGlzYWJsZSksIDApOwogfQogCiBG
bG9hdFNpemUgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpuYXR1cmFsU2l6ZSgpIGNvbnN0CkBA
IC04MTMsNyArODQxLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnJlcXVlc3RS
ZXNvdXJjZShSZW1vdGVNZWRpYVJlc291cmNlSWRlbnRpZmllciByZW0KICAgICBBU1NFUlQoIW1f
bWVkaWFSZXNvdXJjZXMuY29udGFpbnMocmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIpKTsK
ICAgICBhdXRvIHJlc291cmNlID0gbV9tZWRpYVJlc291cmNlTG9hZGVyLT5yZXF1ZXN0UmVzb3Vy
Y2UoV1RGTW92ZShyZXF1ZXN0KSwgb3B0aW9ucyk7CiAgICAgLy8gUGxhdGZvcm1NZWRpYVJlc291
cmNlIG93bnMgdGhlIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUNsaWVudAotICAgIHJlc291cmNlLT5z
ZXRDbGllbnQobWFrZVVuaXF1ZTxSZW1vdGVNZWRpYVJlc291cmNlUHJveHk+KG1fbWFuYWdlci5n
cHVQcm9jZXNzQ29ubmVjdGlvbigpLCAqcmVzb3VyY2UsIHJlbW90ZU1lZGlhUmVzb3VyY2VJZGVu
dGlmaWVyKSk7CisgICAgcmVzb3VyY2UtPnNldENsaWVudChtYWtlVW5pcXVlPFJlbW90ZU1lZGlh
UmVzb3VyY2VQcm94eT4obV9tYW5hZ2VyLmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlv
bigpLCAqcmVzb3VyY2UsIHJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyKSk7CiAgICAgbV9t
ZWRpYVJlc291cmNlcy5hZGQocmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIsIFdURk1vdmUo
cmVzb3VyY2UpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmgKaW5kZXggYjY5MWZlNjQw
ZGI1OTdjOTZkNTFmOGIzM2JhMzM4YzAzNmI4MzdmNC4uZGU2MDFkYzEzZDUxZDRhYTVkZjZkMWVk
MTJlMTNjYjVmNDAwMTRmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNSU1FVHlw
ZUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVk
aWFQbGF5ZXJNSU1FVHlwZUNhY2hlLmNwcAppbmRleCA2ZDU3ZmMyMTA3MmY1NTNlNDcwYTE3MmNj
YWYzNjljYzAyZjM3NDU2Li5mZTk0NTViYzY3MjVmODNhOTBjZTRiZmFhYWExZjlkMWIwNjlmZTgx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1l
ZGlhUGxheWVyTUlNRVR5cGVDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1JTUVUeXBlQ2FjaGUuY3BwCkBAIC04Nyw3ICs4
Nyw3IEBAIGJvb2wgUmVtb3RlTWVkaWFQbGF5ZXJNSU1FVHlwZUNhY2hlOjppc1Vuc3VwcG9ydGVk
Q29udGFpbmVyVHlwZShjb25zdCBTdHJpbmcmIHR5CiBib29sIFJlbW90ZU1lZGlhUGxheWVyTUlN
RVR5cGVDYWNoZTo6Y2FuRGVjb2RlRXh0ZW5kZWRUeXBlKGNvbnN0IFdlYkNvcmU6OkNvbnRlbnRU
eXBlJiB0eXBlKQogewogICAgIGJvb2wgcmVzdWx0OwotICAgIGlmICghbV9tYW5hZ2VyLmdwdVBy
b2Nlc3NDb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFu
YWdlclByb3h5OjpDYW5EZWNvZGVFeHRlbmRlZFR5cGUobV9lbmdpbmVJZGVudGlmaWVyLCB0eXBl
LnJhdygpKSwgTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpDYW5EZWNv
ZGVFeHRlbmRlZFR5cGU6OlJlcGx5KHJlc3VsdCksIDApKQorICAgIGlmICghbV9tYW5hZ2VyLmdw
dVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1v
dGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6Q2FuRGVjb2RlRXh0ZW5kZWRUeXBlKG1fZW5naW5l
SWRlbnRpZmllciwgdHlwZS5yYXcoKSksIE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXJQcm94eTo6Q2FuRGVjb2RlRXh0ZW5kZWRUeXBlOjpSZXBseShyZXN1bHQpLCAwKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTEwOCw3ICsxMDgsNyBA
QCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpTdXBwb3J0c1R5cGUgUmVtb3RlTWVkaWFQbGF5
ZXJNSU1FVHlwZUNhY2hlOjpzdXBwb3J0cwogICAgIH0KIAogICAgIE1lZGlhUGxheWVyOjpTdXBw
b3J0c1R5cGUgcmVzdWx0OwotICAgIGlmICghbV9tYW5hZ2VyLmdwdVByb2Nlc3NDb25uZWN0aW9u
KCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpTdXBw
b3J0c1R5cGVBbmRDb2RlY3MobV9lbmdpbmVJZGVudGlmaWVyLCBwYXJhbWV0ZXJzKSwgTWVzc2Fn
ZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpTdXBwb3J0c1R5cGVBbmRDb2RlY3M6
OlJlcGx5KHJlc3VsdCksIDApKQorICAgIGlmICghbV9tYW5hZ2VyLmdwdVByb2Nlc3NDb25uZWN0
aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1h
bmFnZXJQcm94eTo6U3VwcG9ydHNUeXBlQW5kQ29kZWNzKG1fZW5naW5lSWRlbnRpZmllciwgcGFy
YW1ldGVycyksIE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6U3VwcG9y
dHNUeXBlQW5kQ29kZWNzOjpSZXBseShyZXN1bHQpLCAwKSkKICAgICAgICAgcmV0dXJuIE1lZGlh
UGxheWVyOjpTdXBwb3J0c1R5cGU6OklzTm90U3VwcG9ydGVkOwogCiAgICAgaWYgKCFtX3N1cHBv
cnRzVHlwZUFuZENvZGVjc0NhY2hlKQpAQCAtMTI1LDcgKzEyNSw3IEBAIHZvaWQgUmVtb3RlTWVk
aWFQbGF5ZXJNSU1FVHlwZUNhY2hlOjppbml0aWFsaXplQ2FjaGUoSGFzaFNldDxTdHJpbmcsIEFT
Q0lJQ2FzZUluCiAgICAgICAgIHJldHVybjsKIAogICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVzOwot
ICAgIGlmICghbV9tYW5hZ2VyLmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2Fn
ZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpHZXRTdXBwb3J0ZWRUeXBlcyhtX2Vu
Z2luZUlkZW50aWZpZXIpLCBNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6
OkdldFN1cHBvcnRlZFR5cGVzOjpSZXBseSh0eXBlcyksIDApKQorICAgIGlmICghbV9tYW5hZ2Vy
LmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpS
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6R2V0U3VwcG9ydGVkVHlwZXMobV9lbmdpbmVJ
ZGVudGlmaWVyKSwgTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpHZXRT
dXBwb3J0ZWRUeXBlczo6UmVwbHkodHlwZXMpLCAwKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
Zm9yIChhdXRvJiB0eXBlIDogdHlwZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5jcHAKaW5k
ZXggMjVjYzU2M2YzZWJkNTljNTcwYjY2YmU5NDAzYjdjZTcyOTBkMjhkZS4uNmVjYmJlYWJiY2Jj
M2E4NTMxMTIwODRlM2YzMzY3ZjdjNmM1ODQxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
LmNwcApAQCAtMjgsNyArMjgsNiBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCi0jaW5j
bHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJNZWRpYVBsYXllclByaXZh
dGVSZW1vdGUuaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllckNvbmZpZ3VyYXRpb24uaCIK
ICNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllck1JTUVUeXBlQ2FjaGUuaCIKQEAgLTE2NCw3ICsx
NjMsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlPiBSZW1v
dGVNZWRpYVBsYXllck1hbmFnZXI6OmNyZWF0ZVJlbQogICAgIHByb3h5Q29uZmlndXJhdGlvbi5p
c1ZpZGVvID0gcGxheWVyLT5pc1ZpZGVvUGxheWVyKCk7CiAKICAgICBSZW1vdGVNZWRpYVBsYXll
ckNvbmZpZ3VyYXRpb24gcGxheWVyQ29uZmlndXJhdGlvbjsKLSAgICBib29sIHNlbmRTdWNjZWVk
ZWQgPSBncHVQcm9jZXNzQ29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVNZWRp
YVBsYXllck1hbmFnZXJQcm94eTo6Q3JlYXRlTWVkaWFQbGF5ZXIoaWQsIHJlbW90ZUVuZ2luZUlk
ZW50aWZpZXIsIHByb3h5Q29uZmlndXJhdGlvbiksIE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXJQcm94eTo6Q3JlYXRlTWVkaWFQbGF5ZXI6OlJlcGx5KHBsYXllckNvbmZpZ3VyYXRp
b24pLCAwKTsKKyAgICBib29sIHNlbmRTdWNjZWVkZWQgPSBncHVQcm9jZXNzQ29ubmVjdGlvbigp
LmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
UHJveHk6OkNyZWF0ZU1lZGlhUGxheWVyKGlkLCByZW1vdGVFbmdpbmVJZGVudGlmaWVyLCBwcm94
eUNvbmZpZ3VyYXRpb24pLCBNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6
OkNyZWF0ZU1lZGlhUGxheWVyOjpSZXBseShwbGF5ZXJDb25maWd1cmF0aW9uKSwgMCk7CiAgICAg
aWYgKCFzZW5kU3VjY2VlZGVkKSB7CiAgICAgICAgIFdURkxvZ0Fsd2F5cygiRmFpbGVkIHRvIGNy
ZWF0ZSByZW1vdGUgbWVkaWEgcGxheWVyLiIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAg
LTE3OCw3ICsxNzcsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJm
YWNlPiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OmNyZWF0ZVJlbQogdm9pZCBSZW1vdGVNZWRp
YVBsYXllck1hbmFnZXI6OmRlbGV0ZVJlbW90ZU1lZGlhUGxheWVyKE1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZUlkZW50aWZpZXIgaWQpCiB7CiAgICAgbV9wbGF5ZXJzLnRha2UoaWQpOwotICAgIGdw
dVByb2Nlc3NDb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyUHJveHk6OkRlbGV0ZU1lZGlhUGxheWVyKGlkKSwgMCk7CisgICAgZ3B1UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyUHJveHk6OkRlbGV0ZU1lZGlhUGxheWVyKGlkKSwgMCk7CiB9CiAKIHZvaWQgUmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyOjpnZXRTdXBwb3J0ZWRUeXBlcyhNZWRpYVBsYXllckVudW1zOjpNZWRp
YUVuZ2luZUlkZW50aWZpZXIgcmVtb3RlRW5naW5lSWRlbnRpZmllciwgSGFzaFNldDxTdHJpbmcs
IEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHJlc3VsdCkKQEAgLTE5Miw3ICsxOTEsNyBAQCB2
b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6Z2V0U3VwcG9ydGVkVHlwZXMoTWVkaWFQbGF5
ZXJFbnVtczo6TWVkaWFFbmdpbmVJZAogICAgIH0KIAogICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVz
OwotICAgIGlmICghZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OkdldFN1cHBvcnRlZFR5cGVzKHJlbW90ZUVuZ2lu
ZUlkZW50aWZpZXIpLCBNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6Okdl
dFN1cHBvcnRlZFR5cGVzOjpSZXBseSh0eXBlcyksIDApKQorICAgIGlmICghZ3B1UHJvY2Vzc0Nv
bm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlclByb3h5OjpHZXRTdXBwb3J0ZWRUeXBlcyhyZW1vdGVFbmdpbmVJZGVudGlmaWVy
KSwgTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpHZXRTdXBwb3J0ZWRU
eXBlczo6UmVwbHkodHlwZXMpLCAwKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgcmVzdWx0ID0g
SGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4oKTsKQEAgLTIxNCw3ICsy
MTMsNyBAQCBib29sIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6c3VwcG9ydHNLZXlTeXN0ZW0o
TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZAogSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlP
cmlnaW4+PiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6Om9yaWdpbnNJbk1lZGlhQ2FjaGUoTWVk
aWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIHJlbW90ZUVuZ2luZUlkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICBWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRh
PiBvcmlnaW5EYXRhOwotICAgIGlmICghZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5zZW5kU3luYyhN
ZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6Ok9yaWdpbnNJbk1lZGlhQ2Fj
aGUocmVtb3RlRW5naW5lSWRlbnRpZmllciwgcGF0aCksIE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBs
YXllck1hbmFnZXJQcm94eTo6T3JpZ2luc0luTWVkaWFDYWNoZTo6UmVwbHkob3JpZ2luRGF0YSks
IDApKQorICAgIGlmICghZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5
bmMoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpPcmlnaW5zSW5NZWRp
YUNhY2hlKHJlbW90ZUVuZ2luZUlkZW50aWZpZXIsIHBhdGgpLCBNZXNzYWdlczo6UmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyUHJveHk6Ok9yaWdpbnNJbk1lZGlhQ2FjaGU6OlJlcGx5KG9yaWdpbkRh
dGEpLCAwKSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIEhhc2hTZXQ8UmVmUHRyPFNlY3Vy
aXR5T3JpZ2luPj4gb3JpZ2luczsKQEAgLTIyNiw3ICsyMjUsNyBAQCBIYXNoU2V0PFJlZlB0cjxT
ZWN1cml0eU9yaWdpbj4+IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6b3JpZ2luc0luTWVkaWFD
YWNoZShNZQogCiB2b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6Y2xlYXJNZWRpYUNhY2hl
KE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciByZW1vdGVFbmdpbmVJZGVu
dGlmaWVyLCBjb25zdCBTdHJpbmcmIHBhdGgsIFdhbGxUaW1lIG1vZGlmaWVkU2luY2UpCiB7Ci0g
ICAgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXJQcm94eTo6Q2xlYXJNZWRpYUNhY2hlKHJlbW90ZUVuZ2luZUlkZW50aWZpZXIsIHBh
dGgsIG1vZGlmaWVkU2luY2UpLCAwKTsKKyAgICBncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5l
Y3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6Q2xl
YXJNZWRpYUNhY2hlKHJlbW90ZUVuZ2luZUlkZW50aWZpZXIsIHBhdGgsIG1vZGlmaWVkU2luY2Up
LCAwKTsKIH0KIAogdm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OmNsZWFyTWVkaWFDYWNo
ZUZvck9yaWdpbnMoTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIHJlbW90
ZUVuZ2luZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgSGFzaFNldDxSZWZQ
dHI8U2VjdXJpdHlPcmlnaW4+PiYgb3JpZ2lucykKQEAgLTIzNSw3ICsyMzQsNyBAQCB2b2lkIFJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6Y2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyhNZWRpYVBs
YXllckVudW1zOjpNZWRpYQogICAgICAgICByZXR1cm4gb3JpZ2luLT5kYXRhKCk7CiAgICAgfSk7
CiAKLSAgICBncHVQcm9jZXNzQ29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlclByb3h5OjpDbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKHJlbW90ZUVuZ2lu
ZUlkZW50aWZpZXIsIHBhdGgsIG9yaWdpbkRhdGEpLCAwKTsKKyAgICBncHVQcm9jZXNzQ29ubmVj
dGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXJQcm94eTo6Q2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyhyZW1vdGVFbmdpbmVJZGVudGlmaWVy
LCBwYXRoLCBvcmlnaW5EYXRhKSwgMCk7CiB9CiAKIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyOjpuZXR3b3JrU3RhdGVDaGFuZ2VkKE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZp
ZXIgaWQsIFJlbW90ZU1lZGlhUGxheWVyU3RhdGUmJiBzdGF0ZSkKQEAgLTMzMyw5ICszMzIsMTIg
QEAgdm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OnVwZGF0ZUNhY2hlZFN0YXRlKFdlYktp
dDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3QKICAgICAgICAgcGxheWVyLT51cGRhdGVDYWNoZWRT
dGF0ZShXVEZNb3ZlKHN0YXRlKSk7CiB9CiAKLUlQQzo6Q29ubmVjdGlvbiYgUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyOjpncHVQcm9jZXNzQ29ubmVjdGlvbigpIGNvbnN0CitHUFVQcm9jZXNzQ29u
bmVjdGlvbiYgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpncHVQcm9jZXNzQ29ubmVjdGlvbigp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVBy
b2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpOworICAgIGlmICghbV9ncHVQcm9jZXNzQ29u
bmVjdGlvbikKKyAgICAgICAgbV9ncHVQcm9jZXNzQ29ubmVjdGlvbiA9ICZXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpOworCisgICAgcmV0dXJuICpt
X2dwdVByb2Nlc3NDb25uZWN0aW9uOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlci5oCmluZGV4IGY1ODg1Y2VlMDVkOWE1ZjY0ZTczNDNjOGIzZGM4MzFm
ZGY5OGY2YWQuLjQ2ODllMDI4YjY3ZDQ5ZjNmMjc3OTllYThlYWNkNzIyZGZlYjBiODkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVNZWRpYVBsYXllck1hbmFnZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDE5LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoR1BVX1BS
T0NFU1MpCiAKKyNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIk1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVj
ZWl2ZXIuaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllclN0YXRlLmgiCkBAIC01NCwxMCAr
NTUsMTEgQEAgcHVibGljOgogICAgIH5SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIoKTsKIAogICAg
IHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgpOworICAgIFdlYlByb2Nlc3MmIHBh
cmVudFByb2Nlc3MoKSBjb25zdCB7IHJldHVybiBtX3Byb2Nlc3M7IH0KIAogICAgIHZvaWQgdXBk
YXRlUHJlZmVyZW5jZXMoY29uc3QgV2ViQ29yZTo6U2V0dGluZ3MmKTsKIAotICAgIElQQzo6Q29u
bmVjdGlvbiYgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKSBjb25zdDsKKyAgICBHUFVQcm9jZXNzQ29u
bmVjdGlvbiYgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKSBjb25zdDsKIAogICAgIHZvaWQgZGlkUmVj
ZWl2ZU1lc3NhZ2VGcm9tR1BVUHJvY2VzcyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQ
Qzo6RGVjb2RlciYgZGVjb2RlcikgeyBkaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNv
ZGVyKTsgfQogCkBAIC0xMDEsNiArMTAzLDcgQEAgcHJpdmF0ZToKIAogICAgIEhhc2hNYXA8TWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciwgV2Vha1B0cjxNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU+PiBtX3BsYXllcnM7CiAgICAgV2ViUHJvY2VzcyYgbV9wcm9jZXNzOworICAgIG11
dGFibGUgR1BVUHJvY2Vzc0Nvbm5lY3Rpb24qIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24geyBudWxs
cHRyIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmNwcAppbmRleCAyMDljMWRlYzc1NGVjNmI1NjI5N2MxOWY1YWY2OGRkMmU3
ZTg5MTAzLi41NDJhNzgxYzM0YWFiN2IzODcyYWI1Y2EwOTAzZGI2NTMzZTAyY2Y1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwOS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTMwMyw2ICsxMzAzLDkgQEAg
R1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIFdlYlByb2Nlc3M6OmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0
aW9uKCkKICAgICAgICAgICAgIENSQVNIKCk7CiAKICAgICAgICAgbV9ncHVQcm9jZXNzQ29ubmVj
dGlvbiA9IEdQVVByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGUoY29ubmVjdGlvbkluZm8ucmVsZWFz
ZUlkZW50aWZpZXIoKSk7CisjaWYgSEFWRShBVURJVF9UT0tFTikKKyAgICAgICAgbV9ncHVQcm9j
ZXNzQ29ubmVjdGlvbi0+c2V0QXVkaXRUb2tlbihXVEZNb3ZlKGNvbm5lY3Rpb25JbmZvLmF1ZGl0
VG9rZW4pKTsKKyNlbmRpZgogICAgIH0KICAgICAKICAgICByZXR1cm4gKm1fZ3B1UHJvY2Vzc0Nv
bm5lY3Rpb247CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggMDM0M2FiYzUzOGI1YmJmZThlODE2NTY4YmQ0OTg2ODhiNDYzNDU5
Mi4uYWRkYzM3MTNjMDZhNjJkMzdhNTE5OWRhMTYyYTU5ZTg1OTg0ZTcxZiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEzIEBACisyMDIwLTAxLTA5ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUu
Y29tPgorCisgICAgICAgIFtNZWRpYSBpbiBHUFUgcHJvY2Vzc10gRXh0ZW5kIHRoZSBHUFUgcHJv
Y2VzcyBzYW5kYm94IHRvIGFsbG93IGFjY2VzcyB0byBsb2NhbCBmaWxlcyB3aGVuIG5lY2Vzc2Fy
eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1OTY3
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81ODQyNTAyMD4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGdwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlv
bnM6CisKIDIwMjAtMDEtMDcgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAK
ICAgICAgICAgTWFyayB3ZWJleHBvc2VkL2Nzcy1wcm9wZXJ0aWVzLWJlaGluZC1mbGFncy5odG1s
IGFzIGZsYWt5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9ncHUtcHJvY2Vzcy9UZXN0RXhwZWN0
YXRpb25zIGIvTGF5b3V0VGVzdHMvZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBk
MDFkNWIxODU2OWZjNDY0NmU0YmQzYmYzNzEwN2UyM2FmY2YwODViLi5hNTE2MzNmZmFkYjI0MGNi
MjdkYmQxZDY0YTRjMzAwYjUwOGQxZWVlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9ncHUtcHJv
Y2Vzcy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL2dwdS1wcm9jZXNzL1Rlc3RF
eHBlY3RhdGlvbnMKQEAgLTE3OSwxNCArMTc5LDQ2IEBAIGxlZ2FjeS1hbmltYXRpb24tZW5naW5l
L2ltcG9ydGVkL2JsaW5rL2NvbXBvc2l0aW5nL3NxdWFzaGluZy9yZW1vdmUtZnJvbS1ncm91cGVk
CiBpbnNwZWN0b3IvbGF5ZXJzL2xheWVycy1jb21wb3NpdGluZy1yZWFzb25zLmh0bWwgWyBTa2lw
IF0KIAogbWVkaWEgWyBTa2lwIF0KLW1lZGlhL2F1ZGlvLXBsYXktd2l0aC12aWRlby1lbGVtZW50
Lmh0bWwgWyBQYXNzIF0KLW1lZGlhL2F1ZGlvLXBsYXkuaHRtbCBbIFBhc3MgXQotbWVkaWEvbWVk
aWEtY2FuLXBsYXktbXBlZy1hdWRpby5odG1sIFsgUGFzcyBdCi1tZWRpYS9tZWRpYS1jYW4tcGxh
eS13YXYtYXVkaW8uaHRtbCBbIFBhc3MgXQogbWVkaWEvbWVkaWEtY29udHJvbGxlci5odG1sIFsg
UGFzcyBdCiBtZWRpYS9tZWRpYS1wcmVsb2FkLW5vLWRlbGF5LWxvYWRldmVudC5odG1sIFsgUGFz
cyBdCiBtZWRpYS92aWRlby1zcmMuaHRtbCBbIFBhc3MgXQogbWVkaWEvdmlkZW8tc291cmNlLmh0
bWwgWyBQYXNzIF0KK21lZGlhL2F1ZGlvLWFzLXZpZGVvLWZ1bGxzY3JlZW4uaHRtbCBbIFBhc3Mg
XQorbWVkaWEvYXVkaW8tYmFja2dyb3VuZC1wbGF5YmFjay1wbGF5bGlzdC5odG1sIFsgUGFzcyBd
CittZWRpYS9hdWRpby1jb25jdXJyZW50LXN1cHBvcnRlZC5odG1sIFsgUGFzcyBdCittZWRpYS9h
dWRpby1jb25zdHJ1Y3Rvci1wcmVsb2FkLmh0bWwgWyBQYXNzIF0KK21lZGlhL2F1ZGlvLWNvbnN0
cnVjdG9yLXNyYy5odG1sIFsgUGFzcyBdCittZWRpYS9hdWRpby1jb25zdHJ1Y3Rvci5odG1sIFsg
UGFzcyBdCittZWRpYS9hdWRpby1jb250cm9scy1kby1ub3QtZmFkZS1vdXQuaHRtbCBbIFBhc3Mg
XQorbWVkaWEvYXVkaW8tY29udHJvbHMtdGltZWxpbmUtaW4tbWVkaWEtZG9jdW1lbnQuaHRtbCBb
IFBhc3MgXQorbWVkaWEvYXVkaW8tZGVhbGxvYy1jcmFzaC5odG1sIFsgUGFzcyBdCittZWRpYS9h
dWRpby1kZWxldGUtd2hpbGUtc2xpZGVyLXRodW1iLWNsaWNrZWQuaHRtbCBbIFBhc3MgXQorbWVk
aWEvYXVkaW8tZ2FyYmFnZS1jb2xsZWN0Lmh0bWwgWyBQYXNzIF0KK21lZGlhL2F1ZGlvLW1wZWct
c3VwcG9ydGVkLmh0bWwgWyBQYXNzIF0KK21lZGlhL2F1ZGlvLW1wZWc0LXN1cHBvcnRlZC5odG1s
IFsgUGFzcyBdCittZWRpYS9hdWRpby1uby1pbnN0YWxsZWQtZW5naW5lcy5odG1sIFsgUGFzcyBd
CittZWRpYS9hdWRpby1vbmx5LXZpZGVvLWludHJpbnNpYy1zaXplLmh0bWwgWyBQYXNzIF0KK21l
ZGlhL2F1ZGlvLXBsYXktZXZlbnQuaHRtbCBbIFBhc3MgXQorbWVkaWEvYXVkaW8tcGxheS13aXRo
LXZpZGVvLWVsZW1lbnQuaHRtbCBbIFBhc3MgXQorbWVkaWEvYXVkaW8tcGxheS5odG1sIFsgUGFz
cyBdCittZWRpYS9hdWRpby1wbGF5YmFjay1yZXN0cmljdGlvbi1hdXRvcGxheS5odG1sIFsgUGFz
cyBdCittZWRpYS9hdWRpby1wbGF5YmFjay1yZXN0cmljdGlvbi1wbGF5LW11dGVkLmh0bWwgWyBQ
YXNzIF0KK21lZGlhL2F1ZGlvLXBsYXliYWNrLXJlc3RyaWN0aW9uLXBsYXkuaHRtbCBbIFBhc3Mg
XQorbWVkaWEvYXVkaW8tcGxheWJhY2stcmVzdHJpY3Rpb24tcmVtb3ZlZC1tdXRlZC5odG1sIFsg
UGFzcyBdCittZWRpYS9hdWRpby1wbGF5YmFjay12b2x1bWUtY2hhbmdlcy13aXRoLXJlc3RyaWN0
aW9ucy1hbmQtdXNlci1nZXN0dXJlcy5odG1sIFsgUGFzcyBdCittZWRpYS9hdWRpby1wbGF5YmFj
ay12b2x1bWUtY2hhbmdlcy13aXRoLXJlc3RyaWN0aW9ucy5odG1sIFsgUGFzcyBdCittZWRpYS9k
ZWFjdGl2YXRlLWF1ZGlvLXNlc3Npb24uaHRtbCBbIFBhc3MgXQorbWVkaWEvbWVkaWEtY2FuLXBs
YXktbXBlZy1hdWRpby5odG1sIFsgUGFzcyBdCittZWRpYS9tZWRpYS1jYW4tcGxheS13YXYtYXVk
aW8uaHRtbCBbIFBhc3MgXQorbWVkaWEvbWVkaWEtZG9jdW1lbnQtYXVkaW8tY29udHJvbHMtdmlz
aWJsZS5odG1sIFsgUGFzcyBdCittZWRpYS9tZWRpYS1kb2N1bWVudC1hdWRpby1yZXBhaW50Lmh0
bWwgWyBQYXNzIF0KK21lZGlhL21lZGlhLWRvY3VtZW50LWF1ZGlvLXNpemUuaHRtbCBbIFBhc3Mg
XQorbWVkaWEvbXV0ZWQtdmlkZW8taXMtcGxheWluZy1hdWRpby5odG1sIFsgUGFzcyBdCittZWRp
YS9yZXN0cmljdGVkLWF1ZGlvLXBsYXliYWNrLXdpdGgtZG9jdW1lbnQtZ2VzdHVyZS5odG1sIFsg
UGFzcyBdCittZWRpYS9yZXN0cmljdGVkLWF1ZGlvLXBsYXliYWNrLXdpdGgtbXVsdGlwbGUtc2V0
dGltZW91dHMuaHRtbCBbIFBhc3MgXQorbWVkaWEvdmlkZW8tY29udHJvbHMtdmlzaWJsZS1hdWRp
by1vbmx5Lmh0bWwgWyBQYXNzIF0KK21lZGlhL3ZpZGVvLXBsYXktYXVkaW8tcmVxdWlyZS11c2Vy
LWdlc3R1cmUuaHRtbCBbIFBhc3MgXQorCiBhY2Nlc3NpYmlsaXR5L21lZGlhLWVsZW1lbnQuaHRt
bCBbIFNraXAgXQogZmFzdC9ibG9jay9mbG9hdC9saXN0LW1hcmtlci1pcy1mbG9hdC1jcmFzaC5o
dG1sIFsgU2tpcCBdCiBmYXN0L2Nzcy9yZWxhdGl2ZS1wb3NpdGlvbi1yZXBsYWNlZC1pbi10YWJs
ZS1kaXNwbGF5LWNyYXNoLmh0bWwgWyBTa2lwIF0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387266</attachid>
            <date>2020-01-09 13:33:37 -0800</date>
            <delta_ts>2020-01-10 12:43:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205967-20200109133336.patch</filename>
            <type>text/plain</type>
            <size>56557</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0MjkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDkzYzYwMjhhY2YyMjYzNzQw
ZTBmZjYwZDYwYzc1MGZkNTA3NDZhY2YuLjhjMzk0YzcwMjJhMTM4NjlmZDcyNDAwYTlhNWVhZmNi
ZmRkNjEzOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODQgQEAKKzIwMjAtMDEtMDkgIEVyaWMgQ2Fy
bHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgW01lZGlhIGluIEdQVSBw
cm9jZXNzXSBFeHRlbmQgdGhlIEdQVSBwcm9jZXNzIHNhbmRib3ggdG8gYWxsb3cgYWNjZXNzIHRv
IGxvY2FsIGZpbGVzIHdoZW4gbmVjZXNzYXJ5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDU5NjcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU4NDI1
MDIwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5v
IG5ldyB0ZXN0cywgdW4tc2tpcHBlZCBleGlzdGluZyB0ZXN0cyB0aGF0IHBhc3MgYmVjYXVzZSBv
ZiB0aGlzIGNoYW5nZS4KKyAgICAgICAgCisgICAgICAgIFRoZSBHUFUgcHJvY2VzcyBzYW5kYm94
IGRvZXMgbm90IGFsbG93IGFjY2VzcyB0byBsb2NhbCBmaWxlcyBzbyBleHRlbmQgaXQgYmVmb3Jl
IAorICAgICAgICBhdHRlbXB0aW5nIHRvIG9wZW4gYSBmaWxlOi8vIHVybCwgYW5kIHJldm9rZSB0
aGUgZXh0ZW5zaW9uIHdoZW4gdGhlIGZpbGUgaXMgY2xvc2VkLgorCisgICAgICAgICogR1BVUHJv
Y2Vzcy9HUFVQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVUHJvY2Vzczo6Y29uZmln
dXJlRm9yTWVkaWFQbGF5YmFjayk6CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmg6
CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAq
IEdQVVByb2Nlc3MvR1BVUHJvY2Vzc01lZGlhQ29uZmlndXJhdGlvbi5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdDo6R1BVUHJvY2Vzc01lZGlhQ29uZmlndXJhdGlvbjo6ZW5jb2RlIGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6R1BVUHJvY2Vzc01lZGlhQ29uZmlndXJhdGlvbjo6ZGVjb2RlKToK
KyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6Omxv
YWQpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
UHJveHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFu
YWdlclByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
TWVkaWFQbGF5ZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVy
UHJveHk6OmludmFsaWRhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllclBy
b3h5Ojpsb2FkKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVy
UHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OkdQVVByb2Nlc3NQcm94eTo6b3BlbkdQVVByb2Nlc3NDb25uZWN0aW9u
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5oOgorICAg
ICAgICAoV2ViS2l0OjpHUFVQcm9jZXNzQ29ubmVjdGlvbjo6c2V0QXVkaXRUb2tlbik6CisgICAg
ICAgIChXZWJLaXQ6OkdQVVByb2Nlc3NDb25uZWN0aW9uOjphdWRpdFRva2VuIGNvbnN0KToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbkluZm8uaDoKKyAgICAg
ICAgKFdlYktpdDo6R1BVUHJvY2Vzc0Nvbm5lY3Rpb25JbmZvOjplbmNvZGUgY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpHUFVQcm9jZXNzQ29ubmVjdGlvbkluZm86OmRlY29kZSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpwcmVwYXJlRm9yUGxheWJh
Y2spOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZTo6bG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZTo6Y2FuY2VsTG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZTo6cHJlcGFyZVRvUGxheSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZTo6cGxheSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZTo6cGF1c2UpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6OnNldFByZXNlcnZlc1BpdGNoKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlOjpzZXRWb2x1bWVEb3VibGUpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXll
clByaXZhdGVSZW1vdGU6OnNldE11dGVkKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlOjpzZXRQcmVsb2FkKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlOjpzZXRQcml2YXRlQnJvd3NpbmdNb2RlKToKKyAgICAgICAgKFdlYktpdDo6
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZWVrKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlOjpzZWVrV2l0aFRvbGVyYW5jZSk6CisgICAgICAgIChXZWJLaXQ6
Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cHJlcGFyZUZvclJlbmRlcmluZyk6CisgICAgICAg
IChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0U2l6ZSk6CisgICAgICAgIChX
ZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0VmlzaWJsZSk6CisgICAgICAgIChX
ZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0U2hvdWxkTWFpbnRhaW5Bc3BlY3RS
YXRpbyk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0Vmlk
ZW9GdWxsc2NyZWVuRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OnNldFZpZGVvRnVsbHNjcmVlbkdyYXZpdHkpOgorICAgICAgICAoV2ViS2l0OjpNZWRp
YVBsYXllclByaXZhdGVSZW1vdGU6OmFjY2VsZXJhdGVkUmVuZGVyaW5nU3RhdGVDaGFuZ2VkKToK
KyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRTaG91bGREaXNh
YmxlU2xlZXApOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnJl
cXVlc3RSZXNvdXJjZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
TWVkaWFQbGF5ZXJNSU1FVHlwZUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVk
aWFQbGF5ZXJNSU1FVHlwZUNhY2hlOjpjYW5EZWNvZGVFeHRlbmRlZFR5cGUpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1JTUVUeXBlQ2FjaGU6OnN1cHBvcnRzVHlwZUFuZENv
ZGVjcyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTUlNRVR5cGVDYWNoZTo6
aW5pdGlhbGl6ZUNhY2hlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXI6OmNyZWF0ZVJlbW90ZU1lZGlhUGxheWVyKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpkZWxldGVSZW1vdGVNZWRpYVBsYXllcik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6Z2V0U3VwcG9ydGVkVHlwZXMpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6Om9yaWdpbnNJbk1lZGlh
Q2FjaGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OmNsZWFy
TWVkaWFDYWNoZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6
Y2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlcjo6Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24gY29uc3QpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5oOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OnBhcmVudFByb2Nlc3MgY29uc3QpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3M6OmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKToKKwogMjAyMC0wMS0wOSAgTWVn
YW4gR2FyZG5lciAgPG1lZ2FuX2dhcmRuZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFNldCB0aGUg
dGl0bGUgZm9yIGltYWdlcyBzbyBpdCB3aWxsIGJlIGNvcnJlY3RseSBkaXNwbGF5ZWQgaW4gVUlD
b250ZXh0TWVudXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9j
ZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmNwcAppbmRleCAx
ZGYzNTNiYTU3ZTViZTY5NjA0MjY0Njg1MmFmMzZmNDg1OGExOGZmLi5mYjA3YTY5NTcwZGU4MTAw
NWFhMWI2NGJkMzk2ODI0MDQwMTg5NjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvR1BVUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVBy
b2Nlc3MuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTM0LDcgKzM0LDkgQEAKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5j
bHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIkdQVVByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMuaCIKKyNpbmNsdWRlICJHUFVQcm9jZXNzTWVkaWFDb25maWd1cmF0
aW9uLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24u
aCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nl
c3NQb29sTWVzc2FnZXMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0xvZ0luaXRpYWxpemF0aW9uLmg+
CkBAIC0xMDksNiArMTExLDEyIEBAIHZvaWQgR1BVUHJvY2Vzczo6aW5pdGlhbGl6ZUdQVVByb2Nl
c3MoR1BVUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAgICAgc2V0TW9j
a0NhcHR1cmVEZXZpY2VzRW5hYmxlZChwYXJhbWV0ZXJzLnVzZU1vY2tDYXB0dXJlRGV2aWNlcyk7
CiB9CiAKK3ZvaWQgR1BVUHJvY2Vzczo6Y29uZmlndXJlRm9yTWVkaWFQbGF5YmFjayhHUFVQcm9j
ZXNzTWVkaWFDb25maWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbikKK3sKKyAgICBTYW5kYm94RXh0
ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkoY29uZmlndXJhdGlvbi5tZWRpYUNhY2hlRGlyZWN0
b3J5RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFu
ZW50bHkoY29uZmlndXJhdGlvbi5tZWRpYUtleVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5k
bGUpOworfQorCiB2b2lkIEdQVVByb2Nlc3M6OnByZXBhcmVUb1N1c3BlbmQoYm9vbCBpc1N1c3Bl
bnNpb25JbW1pbmVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBHUFVQcm9j
ZXNzOjpwcmVwYXJlVG9TdXNwZW5kKCksIGlzU3VzcGVuc2lvbkltbWluZW50OiAlZCIsIHRoaXMs
IGlzU3VzcGVuc2lvbkltbWluZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9HUFVQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVUHJvY2Vzcy5o
CmluZGV4IGFlMjBiZjk0YTExNTM1OGRhNTFlZGI1YWMzMTljNDEzYTU5ZDU0ODQuLmYxZjQxN2Fi
YWJmNTBhMGE3ZTg1MTYxNDc5YjE2MjBiODU5MWI1MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L0dQVVByb2Nlc3MuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE5LTIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0yOCwxNiArMjgsMTkgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAK
ICNpbmNsdWRlICJBdXhpbGlhcnlQcm9jZXNzLmgiCisjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lv
bi5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eUlkZW50aWZpZXIuaCIKICNpbmNsdWRlIDxwYWwv
U2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL01l
bW9yeVByZXNzdXJlSGFuZGxlci5oPgorI2luY2x1ZGUgPHd0Zi9VUkxIYXNoLmg+CiAjaW5jbHVk
ZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIEdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M7CiBzdHJ1Y3QgR1BVUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczsK
K3N0cnVjdCBHUFVQcm9jZXNzTWVkaWFDb25maWd1cmF0aW9uOwogCiBjbGFzcyBHUFVQcm9jZXNz
IDogcHVibGljIEF1eGlsaWFyeVByb2Nlc3MsIHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxH
UFVQcm9jZXNzPiwgcHVibGljIENhbk1ha2VXZWFrUHRyPEdQVVByb2Nlc3M+IHsKICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShHUFVQcm9jZXNzKTsKQEAgLTcyLDYgKzc1LDcgQEAgcHJpdmF0ZToK
ICAgICAvLyBNZXNzYWdlIEhhbmRsZXJzCiAgICAgdm9pZCBpbml0aWFsaXplR1BVUHJvY2VzcyhH
UFVQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOwogICAgIHZvaWQgY3JlYXRlR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2VzcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciwgUEFMOjpTZXNzaW9u
SUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8SVBDOjpBdHRhY2htZW50PiYmKT4m
Jik7CisgICAgdm9pZCBjb25maWd1cmVGb3JNZWRpYVBsYXliYWNrKEdQVVByb2Nlc3NNZWRpYUNv
bmZpZ3VyYXRpb24mJik7CiAKICAgICB2b2lkIHByb2Nlc3NEaWRUcmFuc2l0aW9uVG9Gb3JlZ3Jv
dW5kKCk7CiAgICAgdm9pZCBwcm9jZXNzRGlkVHJhbnNpdGlvblRvQmFja2dyb3VuZCgpOwpAQCAt
NzksNiArODMsOCBAQCBwcml2YXRlOgogCiAgICAgLy8gQ29ubmVjdGlvbnMgdG8gV2ViUHJvY2Vz
c2VzLgogICAgIEhhc2hNYXA8V2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIsIFJlZjxHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzPj4gbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnM7CisKKyAgICBIYXNo
TWFwPFVSTCwgUmVmUHRyPFNhbmRib3hFeHRlbnNpb24+PiBtX21lZGlhQ2FwdHVyZVNhbmRib3hF
eHRlbnNpb25zOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDNmY2RmMWJkZjE0YWU5
MjBlZGFlNmM5OTk3ZjUwNmQ5MjAwZDY2YWYuLjQ0NGY0YzI4NWExY2MwMGI0NDEzYzIxMGI1NDRm
NDc3MmZiMzhhODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9j
ZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNz
Lm1lc3NhZ2VzLmluCkBAIC0xLDQgKzEsNCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTI5LDYgKzI5LDggQEAgbWVzc2FnZXMgLT4gR1BVUHJvY2VzcyB7CiAgICAgIyBDcmVhdGVz
IGEgY29ubmVjdGlvbiBmb3IgY29tbXVuaWNhdGlvbiB3aXRoIGEgV2ViUHJvY2VzcwogICAgIENy
ZWF0ZUdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIg
cHJvY2Vzc0lkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKE9wdGlvbmFs
PElQQzo6QXR0YWNobWVudD4gY29ubmVjdGlvbklkZW50aWZpZXIpIEFzeW5jCiAKKyAgICBDb25m
aWd1cmVGb3JNZWRpYVBsYXliYWNrKHN0cnVjdCBXZWJLaXQ6OkdQVVByb2Nlc3NNZWRpYUNvbmZp
Z3VyYXRpb24gY29uZmlndXJhdGlvbikKKwogICAgIFByb2Nlc3NEaWRUcmFuc2l0aW9uVG9Gb3Jl
Z3JvdW5kKCkKICAgICBQcm9jZXNzRGlkVHJhbnNpdGlvblRvQmFja2dyb3VuZCgpCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzTWVkaWFDb25maWd1cmF0
aW9uLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVUHJvY2Vzc01lZGlhQ29uZmlndXJh
dGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjVlYmVmNDc3N2U3ZTJkMTg0MGZhZjRhN2FjZGZmZDQ4YTFlNGQz
ZmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVUHJvY2Vz
c01lZGlhQ29uZmlndXJhdGlvbi5oCkBAIC0wLDAgKzEsOTAgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKworI2luY2x1ZGUgIlNhbmRib3hF
eHRlbnNpb24uaCIKKworbmFtZXNwYWNlIElQQyB7CitjbGFzcyBEZWNvZGVyOworY2xhc3MgRW5j
b2RlcjsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0cnVjdCBHUFVQcm9jZXNzTWVkaWFD
b25maWd1cmF0aW9uIHsKKyAgICBHUFVQcm9jZXNzTWVkaWFDb25maWd1cmF0aW9uKCkgPSBkZWZh
dWx0OworCisgICAgU3RyaW5nIG1lZGlhQ2FjaGVEaXJlY3Rvcnk7CisgICAgU2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlIG1lZGlhQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CisgICAgU3Ry
aW5nIG1lZGlhS2V5U3RvcmFnZURpcmVjdG9yeTsKKyAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGUgbWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOworCisgICAgYm9vbCB1
c2VNb2NrQ2FwdHVyZURldmljZXMgeyBmYWxzZSB9OworCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4KKyAgICB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAorICAgIHsKKyAg
ICAgICAgZW5jb2RlciA8PCBtZWRpYUNhY2hlRGlyZWN0b3J5OworICAgICAgICBlbmNvZGVyIDw8
IG1lZGlhQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CisgICAgICAgIGVuY29kZXIgPDwg
bWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5OworICAgICAgICBlbmNvZGVyIDw8IG1lZGlhS2V5U3Rv
cmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8Y2xh
c3MgRGVjb2Rlcj4KKyAgICBzdGF0aWMgT3B0aW9uYWw8R1BVUHJvY2Vzc01lZGlhQ29uZmlndXJh
dGlvbj4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCisgICAgeworICAgICAgICBTdHJpbmcgbWVk
aWFDYWNoZURpcmVjdG9yeTsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShtZWRpYUNhY2hl
RGlyZWN0b3J5KSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAg
T3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBtZWRpYUNhY2hlRGlyZWN0b3J5RXh0
ZW5zaW9uSGFuZGxlOworICAgICAgICBkZWNvZGVyID4+IG1lZGlhQ2FjaGVEaXJlY3RvcnlFeHRl
bnNpb25IYW5kbGU7CisgICAgICAgIGlmICghbWVkaWFDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhh
bmRsZSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgU3RyaW5n
IG1lZGlhS2V5U3RvcmFnZURpcmVjdG9yeTsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSht
ZWRpYUtleVN0b3JhZ2VEaXJlY3RvcnkpKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKworICAgICAgICBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IG1lZGlhS2V5
U3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKKyAgICAgICAgZGVjb2RlciA+PiBtZWRp
YUtleVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CisgICAgICAgIGlmICghbWVkaWFL
ZXlTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKQorICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKworICAgICAgICByZXR1cm4ge3sKKyAgICAgICAgICAgIFdURk1vdmUobWVk
aWFDYWNoZURpcmVjdG9yeSksCisgICAgICAgICAgICBXVEZNb3ZlKCptZWRpYUNhY2hlRGlyZWN0
b3J5RXh0ZW5zaW9uSGFuZGxlKSwKKyAgICAgICAgICAgIFdURk1vdmUobWVkaWFLZXlTdG9yYWdl
RGlyZWN0b3J5KSwKKyAgICAgICAgICAgIFdURk1vdmUoKm1lZGlhS2V5U3RvcmFnZURpcmVjdG9y
eUV4dGVuc2lvbkhhbmRsZSksCisgICAgICAgIH19OworICAgIH0KK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXJQcm94eS5jcHAKaW5kZXggOWI3MWVhNzYxNTY1YjQ1MTNlNDg5Yjg5OWE3OTVlYWNi
MGRmMDFiYy4uNDc5MzMwOTkwYzM4ZjA2Y2I4NjBjYzM4ZjUzMWNmMzBlMzBkMmVlZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFu
YWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3BwCkBAIC0yMDMsMTAgKzIwMywxMCBAQCB2b2lkIFJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpwcmVwYXJlRm9yUGxheWJhY2soTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlSQogICAgICAgICBwbGF5ZXItPnByZXBhcmVGb3JQbGF5YmFjayhwcml2
YXRlTW9kZSwgcHJlbG9hZCwgcHJlc2VydmVzUGl0Y2gsIHByZXBhcmVGb3JSZW5kZXJpbmcpOwog
fQogCi12b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Ojpsb2FkKE1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQsIFVSTCYmIHVybCwgV2ViQ29yZTo6Q29udGVudFR5
cGUmJiBjb250ZW50VHlwZSwgU3RyaW5nJiYga2V5U3lzdGVtLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFJlbW90ZU1lZGlhUGxheWVyQ29uZmlndXJhdGlvbiYmKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OmxvYWQoTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlSWRlbnRpZmllciBpZCwgVVJMJiYgdXJsLCBPcHRpb25hbDxTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGU+JiYgc2FuZGJveEV4dGVuc2lvbiwgV2ViQ29yZTo6Q29udGVudFR5cGUm
JiBjb250ZW50VHlwZSwgU3RyaW5nJiYga2V5U3lzdGVtLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFJlbW90ZU1lZGlhUGxheWVyQ29uZmlndXJhdGlvbiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKICAgICBpZiAoYXV0byBwbGF5ZXIgPSBtX3Byb3hpZXMuZ2V0KGlkKSkKLSAgICAgICAgcGxh
eWVyLT5sb2FkKFdURk1vdmUodXJsKSwgV1RGTW92ZShjb250ZW50VHlwZSksIFdURk1vdmUoa2V5
U3lzdGVtKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICBwbGF5ZXItPmxv
YWQoV1RGTW92ZSh1cmwpLCBXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb24pLCBXVEZNb3ZlKGNvbnRl
bnRUeXBlKSwgV1RGTW92ZShrZXlTeXN0ZW0pLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
CiB9CiAKIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OmNhbmNlbExvYWQoTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclBy
b3h5LmgKaW5kZXggMDRmNmMwOGVlNWEwOWFjYWI1ZGI0MDNhYzY1OTRiNjllYzVlNzdmNi4uZDM3
Y2YxOGFhMzI3OTI4YjQxZjJkMGE1ZjNjODBmMzBmZjFlMWYxZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFu
YWdlclByb3h5LmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAj
aW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllci5oIgogI2luY2x1ZGUg
Ik1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKICNpbmNs
dWRlIDxXZWJDb3JlL01lZGlhUGxheWVyLmg+CiAjaW5jbHVkZSA8d3RmL0xvZ2dlckhlbHBlci5o
PgogCkBAIC04Miw3ICs4Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjbGVhck1lZGlhQ2FjaGVG
b3JPcmlnaW5zKFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiYsIFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiYp
OwogICAgIHZvaWQgc3VwcG9ydHNLZXlTeXN0ZW0oV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6
TWVkaWFFbmdpbmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmJiwgY29uc3QgU3RyaW5nJiYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogCi0gICAgdm9pZCBsb2FkKE1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIsIFVSTCYmLCBXZWJDb3JlOjpDb250ZW50VHlwZSYm
LCBTdHJpbmcmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZW1vdGVNZWRpYVBsYXllckNvbmZp
Z3VyYXRpb24mJik+JiYpOworICAgIHZvaWQgbG9hZChNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJ
ZGVudGlmaWVyLCBVUkwmJiwgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiYmLCBX
ZWJDb3JlOjpDb250ZW50VHlwZSYmLCBTdHJpbmcmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChS
ZW1vdGVNZWRpYVBsYXllckNvbmZpZ3VyYXRpb24mJik+JiYpOwogICAgIHZvaWQgcHJlcGFyZUZv
clBsYXliYWNrKE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIsIGJvb2wgcHJpdmF0
ZU1vZGUsIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OlByZWxvYWQsIGJvb2wgcHJlc2VydmVz
UGl0Y2gsIGJvb2wgcHJlcGFyZUZvclJlbmRlcmluZyk7CiAgICAgdm9pZCBjYW5jZWxMb2FkKE1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIpOwogICAgIHZvaWQgcHJlcGFyZVRvUGxh
eShNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBs
YXllck1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgppbmRleCBlMTE2YjRlMTI2OTI0MThkNTVmODVk
YmVlNDAyMDEzNDM0N2Q0YTVkLi5iMWUxNDIwYmE5YzExMDg5MmQ5ODhjNTY5YWYyMGU3ZWFjNzRi
OWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCkBA
IC0zNyw3ICszNyw3IEBAIG1lc3NhZ2VzIC0+IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5
IE5vdFJlZkNvdW50ZWQgewogCiAgICAgUHJlcGFyZUZvclBsYXliYWNrKFdlYktpdDo6TWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZCwgYm9vbCBwcml2YXRlTW9kZSwgZW51bTp1
aW50OF90IFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OlByZWxvYWQgcHJlbG9hZCwgYm9vbCBw
cmVzZXJ2ZXNQaXRjaCwgYm9vbCBwcmVwYXJlRm9yUmVuZGVyaW5nKQogCi0gICAgTG9hZChXZWJL
aXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQsIFVSTCB1cmwsIFdlYkNv
cmU6OkNvbnRlbnRUeXBlIGNvbnRlbnRUeXBlLCBTdHJpbmcga2V5U3lzdGVtKSAtPiAoc3RydWN0
IFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJDb25maWd1cmF0aW9uIHBsYXllckNvbmZpZ3VyYXRp
b24pIEFzeW5jCisgICAgTG9hZChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50
aWZpZXIgaWQsIFVSTCB1cmwsIE9wdGlvbmFsPFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlPiBzYW5kYm94RXh0ZW5zaW9uLCBXZWJDb3JlOjpDb250ZW50VHlwZSBjb250ZW50VHlwZSwg
U3RyaW5nIGtleVN5c3RlbSkgLT4gKHN0cnVjdCBXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyQ29u
ZmlndXJhdGlvbiBwbGF5ZXJDb25maWd1cmF0aW9uKSBBc3luYwogICAgIENhbmNlbExvYWQoV2Vi
S2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkKQogCiAgICAgUHJlcGFy
ZVRvUGxheShXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5
ZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQ
bGF5ZXJQcm94eS5jcHAKaW5kZXggODI0MzBmZDZjMmJhZDc4YTc3NWE5YjMzYjM5NWI3Y2ZiNDBi
NjIzMS4uMzE3MDNkMjNiNWE0NjNlZjEwZTc0OGM2NTAzMGYyMjJjZmZhMTI3NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXll
clByb3h5LmNwcApAQCAtNjksNiArNjksMTAgQEAgdm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5
OjppbnZhbGlkYXRlKCkKIHsKICAgICBtX3VwZGF0ZUNhY2hlZFN0YXRlTWVzc2FnZVRpbWVyLnN0
b3AoKTsKICAgICBtX3BsYXllci0+aW52YWxpZGF0ZSgpOworICAgIGlmIChtX3NhbmRib3hFeHRl
bnNpb24pIHsKKyAgICAgICAgbV9zYW5kYm94RXh0ZW5zaW9uLT5yZXZva2UoKTsKKyAgICAgICAg
bV9zYW5kYm94RXh0ZW5zaW9uID0gbnVsbHB0cjsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3RlTWVk
aWFQbGF5ZXJQcm94eTo6Z2V0Q29uZmlndXJhdGlvbihSZW1vdGVNZWRpYVBsYXllckNvbmZpZ3Vy
YXRpb24mIGNvbmZpZ3VyYXRpb24pCkBAIC04MiwxMSArODYsMjcgQEAgdm9pZCBSZW1vdGVNZWRp
YVBsYXllclByb3h5OjpnZXRDb25maWd1cmF0aW9uKFJlbW90ZU1lZGlhUGxheWVyQ29uZmlndXJh
dGlvbiYgY28KICAgICBjb25maWd1cmF0aW9uLnNob3VsZElnbm9yZUludHJpbnNpY1NpemUgPSBt
X3BsYXllci0+c2hvdWxkSWdub3JlSW50cmluc2ljU2l6ZSgpOwogfQogCi12b2lkIFJlbW90ZU1l
ZGlhUGxheWVyUHJveHk6OmxvYWQoY29uc3QgVVJMJiB1cmwsIGNvbnN0IENvbnRlbnRUeXBlJiBj
b250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoUmVtb3RlTWVkaWFQbGF5ZXJDb25maWd1cmF0aW9uJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQordm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5Ojpsb2FkKGNvbnN0IFVSTCYgdXJsLCBPcHRp
b25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+JiYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwg
Y29uc3QgQ29udGVudFR5cGUmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChSZW1vdGVNZWRpYVBsYXllckNvbmZpZ3VyYXRpb24mJik+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CisgICAgUmVtb3RlTWVkaWFQbGF5ZXJDb25maWd1cmF0
aW9uIGNvbmZpZ3VyYXRpb247CisKKyAgICBpZiAoc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkgewor
ICAgICAgICBtX3NhbmRib3hFeHRlbnNpb24gPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoV1RG
TW92ZShzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLnZhbHVlKCkpKTsKKworICAgICAgICBpZiAoIW1f
c2FuZGJveEV4dGVuc2lvbikgeworICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCJVbmFibGUgdG8g
Y3JlYXRlIHNhbmRib3ggZXh0ZW5zaW9uIGZvciBtZWRpYSB1cmwuXG4iKTsKKworICAgICAgICAg
ICAgZ2V0Q29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uKTsKKyAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKFdURk1vdmUoY29uZmlndXJhdGlvbikpOworICAgICAgICAgICAgbV9jYWNoZWRT
dGF0ZS5uZXR3b3JrU3RhdGUgPSBNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlOjpGb3JtYXRFcnJv
cjsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIG1fc2FuZGJveEV4
dGVuc2lvbi0+Y29uc3VtZSgpOworICAgIH0KKwogICAgIG1fcGxheWVyLT5sb2FkKHVybCwgY29u
dGVudFR5cGUsIGtleVN5c3RlbSk7CiAKLSAgICBSZW1vdGVNZWRpYVBsYXllckNvbmZpZ3VyYXRp
b24gY29uZmlndXJhdGlvbjsKICAgICBnZXRDb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24pOwog
ICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29uZmlndXJhdGlvbikpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclBy
b3h5LmgKaW5kZXggNWUyNzYxYjAxYzU0MWQyZDZjZDM0YjYyNGMzNmYzOTA0YjhmNGUzYy4uZmNj
MzY2NGMyNDRlMzI4ZDZkY2FkZmFkYzE5ODgyZTMyNjNmZWMyZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oCkBA
IC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJQcm94eUNvbmZpZ3Vy
YXRpb24uaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllclN0YXRlLmgiCiAjaW5jbHVkZSAi
UmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJTYW5kYm94RXh0ZW5z
aW9uLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Db29raWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01l
ZGlhUGxheWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2Fk
ZXIuaD4KQEAgLTYwLDcgKzYxLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBwcmVwYXJlRm9yUGxh
eWJhY2soYm9vbCBwcml2YXRlTW9kZSwgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6UHJlbG9h
ZCwgYm9vbCBwcmVzZXJ2ZXNQaXRjaCwgYm9vbCBwcmVwYXJlRm9yUmVuZGVyaW5nKTsKIAotICAg
IHZvaWQgbG9hZChjb25zdCBVUkwmLCBjb25zdCBXZWJDb3JlOjpDb250ZW50VHlwZSYsIGNvbnN0
IFN0cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlTWVkaWFQbGF5ZXJDb25maWd1
cmF0aW9uJiYpPiYmKTsKKyAgICB2b2lkIGxvYWQoY29uc3QgVVJMJiwgT3B0aW9uYWw8U2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlPiYmLCBjb25zdCBXZWJDb3JlOjpDb250ZW50VHlwZSYsIGNvbnN0
IFN0cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlTWVkaWFQbGF5ZXJDb25maWd1
cmF0aW9uJiYpPiYmKTsKICAgICB2b2lkIGNhbmNlbExvYWQoKTsKIAogICAgIHZvaWQgcHJlcGFy
ZVRvUGxheSgpOwpAQCAtMTg2LDYgKzE4Nyw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIE1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgbV9pZDsKKyAgICBSZWZQdHI8U2FuZGJv
eEV4dGVuc2lvbj4gbV9zYW5kYm94RXh0ZW5zaW9uOwogICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+
IG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb247CiAgICAgUmVmUHRyPFdlYkNvcmU6Ok1lZGlhUGxheWVy
PiBtX3BsYXllcjsKICAgICBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSYgbV9tYW5hZ2Vy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmNwcApp
bmRleCBmMGNiMTc5MTQ5MmZmZmQ4YjMxNjIyN2ZjNGJiOWVmOGVkMDViYTE5Li44NDAwMGVkMGY1
OGQ0ODBjMjU4OTQ1MWZkNjliYjAxZDcxOWE2OWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE5LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAi
RHJhd2luZ0FyZWFQcm94eS5oIgogI2luY2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9uSW5mby5o
IgogI2luY2x1ZGUgIkdQVVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKKyNpbmNsdWRlICJH
UFVQcm9jZXNzTWVkaWFDb25maWd1cmF0aW9uLmgiCiAjaW5jbHVkZSAiR1BVUHJvY2Vzc01lc3Nh
Z2VzLmgiCiAjaW5jbHVkZSAiR1BVUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJM
b2dnaW5nLmgiCkBAIC00Nyw3ICs0OCw3IEBACiAjaW5jbHVkZSA8d3RmL3NwaS9kYXJ3aW4vWFBD
U1BJLmg+CiAjZW5kaWYKIAotI2RlZmluZSBNRVNTQUdFX0NIRUNLKGFzc2VydGlvbikgTUVTU0FH
RV9DSEVDS19CQVNFKGFzc2VydGlvbiwgY29ubmVjdGlvbigpKQorI2RlZmluZSBNRVNTQUdFX0NI
RUNLKGFzc2VydGlvbikgTUVTU0FHRV9DSEVDS19CQVNFKGFzc2VydGlvbiwgdGhpcy0+Y29ubmVj
dGlvbigpKQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpA
QCAtMTI1LDcgKzEyNiwyNyBAQCB2b2lkIEdQVVByb2Nlc3NQcm94eTo6Z2V0R1BVUHJvY2Vzc0Nv
bm5lY3Rpb24oV2ViUHJvY2Vzc1Byb3h5JiB3ZWJQcm9jZXNzUHJveHksCiAKIHZvaWQgR1BVUHJv
Y2Vzc1Byb3h5OjpvcGVuR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oQ29ubmVjdGlvblJlcXVlc3RJZGVu
dGlmaWVyIGNvbm5lY3Rpb25SZXF1ZXN0SWRlbnRpZmllciwgV2ViUHJvY2Vzc1Byb3h5JiB3ZWJQ
cm9jZXNzUHJveHkpCiB7Ci0gICAgY29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVz
c2FnZXM6OkdQVVByb2Nlc3M6OkNyZWF0ZUdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgeyB3ZWJQ
cm9jZXNzUHJveHkuY29yZVByb2Nlc3NJZGVudGlmaWVyKCksIHdlYlByb2Nlc3NQcm94eS5zZXNz
aW9uSUQoKSB9LCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgd2ViUHJvY2Vz
c1Byb3h5ID0gbWFrZVdlYWtQdHIod2ViUHJvY2Vzc1Byb3h5KSwgY29ubmVjdGlvblJlcXVlc3RJ
ZGVudGlmaWVyXShhdXRvJiYgY29ubmVjdGlvbklkZW50aWZpZXIpIG11dGFibGUgeworICAgIGF1
dG8mIGNvbm5lY3Rpb24gPSAqdGhpcy0+Y29ubmVjdGlvbigpOworCisgICAgaWYgKCFtX2hhdmVF
eHRlbmRlZFByb2Nlc3NTYW5kYm94KSB7CisgICAgICAgIG1faGF2ZUV4dGVuZGVkUHJvY2Vzc1Nh
bmRib3ggPSB0cnVlOworCisgICAgICAgIGF1dG8mIHdlYnNpdGVEYXRhU3RvcmUgPSB3ZWJQcm9j
ZXNzUHJveHkud2Vic2l0ZURhdGFTdG9yZSgpOworICAgICAgICB3ZWJzaXRlRGF0YVN0b3JlLnJl
c29sdmVEaXJlY3Rvcmllc0lmTmVjZXNzYXJ5KCk7CisKKyAgICAgICAgR1BVUHJvY2Vzc01lZGlh
Q29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uOworICAgICAgICBjb25maWd1cmF0aW9uLm1lZGlh
Q2FjaGVEaXJlY3RvcnkgPSB3ZWJzaXRlRGF0YVN0b3JlLnJlc29sdmVkTWVkaWFDYWNoZURpcmVj
dG9yeSgpOworICAgICAgICBpZiAoIWNvbmZpZ3VyYXRpb24ubWVkaWFDYWNoZURpcmVjdG9yeS5p
c0VtcHR5KCkpCisgICAgICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVXaXRo
b3V0UmVzb2x2aW5nUGF0aChjb25maWd1cmF0aW9uLm1lZGlhQ2FjaGVEaXJlY3RvcnksIFNhbmRi
b3hFeHRlbnNpb246OlR5cGU6OlJlYWRXcml0ZSwgY29uZmlndXJhdGlvbi5tZWRpYUNhY2hlRGly
ZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKKworICAgICAgICBjb25maWd1cmF0aW9uLm1lZGlhS2V5
U3RvcmFnZURpcmVjdG9yeSA9IHdlYnNpdGVEYXRhU3RvcmUucmVzb2x2ZWRNZWRpYUtleXNEaXJl
Y3RvcnkoKTsKKyAgICAgICAgaWYgKCFjb25maWd1cmF0aW9uLm1lZGlhS2V5U3RvcmFnZURpcmVj
dG9yeS5pc0VtcHR5KCkpCisgICAgICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5k
bGVXaXRob3V0UmVzb2x2aW5nUGF0aChjb25maWd1cmF0aW9uLm1lZGlhS2V5U3RvcmFnZURpcmVj
dG9yeSwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZFdyaXRlLCBjb25maWd1cmF0aW9uLm1l
ZGlhS2V5U3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CisKKyAgICAgICAgY29ubmVj
dGlvbi5zZW5kKE1lc3NhZ2VzOjpHUFVQcm9jZXNzOjpDb25maWd1cmVGb3JNZWRpYVBsYXliYWNr
KGNvbmZpZ3VyYXRpb24pLCAwKTsKKyAgICB9CisKKyAgICBjb25uZWN0aW9uLnNlbmRXaXRoQXN5
bmNSZXBseShNZXNzYWdlczo6R1BVUHJvY2Vzczo6Q3JlYXRlR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyB7IHdlYlByb2Nlc3NQcm94eS5jb3JlUHJvY2Vzc0lkZW50aWZpZXIoKSwgd2ViUHJvY2Vz
c1Byb3h5LnNlc3Npb25JRCgpIH0sIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMp
LCB3ZWJQcm9jZXNzUHJveHkgPSBtYWtlV2Vha1B0cih3ZWJQcm9jZXNzUHJveHkpLCBjb25uZWN0
aW9uUmVxdWVzdElkZW50aWZpZXJdKGF1dG8mJiBjb25uZWN0aW9uSWRlbnRpZmllcikgbXV0YWJs
ZSB7CiAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTE0
Miw3ICsxNjMsNyBAQCB2b2lkIEdQVVByb2Nlc3NQcm94eTo6b3BlbkdQVVByb2Nlc3NDb25uZWN0
aW9uKENvbm5lY3Rpb25SZXF1ZXN0SWRlbnRpZmllciBjb25uZQogICAgICAgICByZXF1ZXN0LnJl
cGx5KEdQVVByb2Nlc3NDb25uZWN0aW9uSW5mbyB7IFdURk1vdmUoKmNvbm5lY3Rpb25JZGVudGlm
aWVyKSB9KTsKICNlbGlmIE9TKERBUldJTikKICAgICAgICAgTUVTU0FHRV9DSEVDSyhNQUNIX1BP
UlRfVkFMSUQoY29ubmVjdGlvbklkZW50aWZpZXItPnBvcnQoKSkpOwotICAgICAgICByZXF1ZXN0
LnJlcGx5KEdQVVByb2Nlc3NDb25uZWN0aW9uSW5mbyB7IElQQzo6QXR0YWNobWVudCB7IGNvbm5l
Y3Rpb25JZGVudGlmaWVyLT5wb3J0KCksIE1BQ0hfTVNHX1RZUEVfTU9WRV9TRU5EIH0gfSk7Cisg
ICAgICAgIHJlcXVlc3QucmVwbHkoR1BVUHJvY2Vzc0Nvbm5lY3Rpb25JbmZvIHsgSVBDOjpBdHRh
Y2htZW50IHsgY29ubmVjdGlvbklkZW50aWZpZXItPnBvcnQoKSwgTUFDSF9NU0dfVFlQRV9NT1ZF
X1NFTkQgfSwgdGhpcy0+Y29ubmVjdGlvbigpLT5nZXRBdWRpdFRva2VuKCkgfSk7CiAjZWxzZQog
ICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmgKaW5kZXggZGE2NGNmZWFlMGIwNTNkNjI2Yjc1ZDli
MjdiNjlmMTZjNjgzMGQ0NS4uNDBlODVhYzk1Yjk1ZDA0ODEyNzg3ZTRhNWYwODE2Y2Y2M2Q1NWUy
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuaApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0z
MiwxMSArMzIsOSBAQAogI2luY2x1ZGUgIlByb2Nlc3NMYXVuY2hlci5oIgogI2luY2x1ZGUgIlBy
b2Nlc3NUaHJvdHRsZXIuaCIKICNpbmNsdWRlICJQcm9jZXNzVGhyb3R0bGVyQ2xpZW50LmgiCi0j
aW5jbHVkZSAiVHJhbnNhY3Rpb25JRC5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eUlkZW50aWZp
ZXIuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHlNZXNzYWdlc1JlcGxpZXMuaCIKICNpbmNs
dWRlIDxtZW1vcnk+Ci0jaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCkBAIC05Niw3ICs5NCw3IEBAIHByaXZhdGU6CiAKICAgICBQcm9jZXNzVGhyb3R0bGVyIG1f
dGhyb3R0bGVyOwogICAgIFByb2Nlc3NUaHJvdHRsZXI6OkFjdGl2aXR5VmFyaWFudCBtX2FjdGl2
aXR5RnJvbVdlYlByb2Nlc3NlczsKLQorICAgIGJvb2wgbV9oYXZlRXh0ZW5kZWRQcm9jZXNzU2Fu
ZGJveCB7IGZhbHNlIH07CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICAgICBib29sIG1fdXNl
TW9ja0NhcHR1cmVEZXZpY2VzIHsgZmFsc2UgfTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggYzQ0YmY3YzMyZTk5MzEzOWMxMDNjNDdl
NTE2NDI0ZDhlZGM4NjU2Zi4uMTFhZTE5Mzg5M2VkYTE3Zjg3YTIyYTFlYjk3YWIxZDliOTRhNDg2
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMC0yMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAppbmRleCA5NjVmYjFjZTAxN2Ix
OWVjNDhlZThmNGRiNDAxNmQ2YjkxOWI0MjNkLi5kOTY4NmExNTE0MTExYzhlZThjYWY2YTRkYzk3
YjE3NzE1MmJmMWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
aApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IGI3MjhiZGMzZjM1NDJhMmJkMTExMDkxYzcxNTBmN2VmZDU0ODkxZmYuLmJjMjdiZTYzMTNh
OTQxM2MxOGYzYzJjNTA0NTIzMTg5ZjYwMzY1Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjA3OCw2ICsyMDc4LDcgQEAKIAkJMDc5
MjMxNEUyMzlENUY1MzAwOTU5OEUyIC8qIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZp
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0E1RUJCOTFDN0JBNDNFMDBCOUNBNjkg
LyogV0tGcmFtZUhhbmRsZVJlZi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXS0ZyYW1lSGFuZGxlUmVmLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MDdBNUVCQkExQzdCQTQzRTAwQjlDQTY5IC8qIFdLRnJhbWVIYW5kbGVSZWYuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tGcmFtZUhhbmRsZVJlZi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwN0IyMzJGRTIzQzQyMzA4MDAxQjg5OEEgLyogR1BVUHJvY2Vzc01l
ZGlhQ29uZmlndXJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHUFVQcm9jZXNzTWVkaWFDb25maWd1
cmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3QjNCNDZGMjNBQjJDQjMw
MEJBNUIxMiAvKiBSZW1vdGVNZWRpYVBsYXllclN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90
ZU1lZGlhUGxheWVyU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdCM0I0
NzUyM0FEODkwNDAwQkE1QjEyIC8qIFJlbW90ZU1lZGlhUGxheWVyUHJveHlDb25maWd1cmF0aW9u
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZU1lZGlhUGxheWVyUHJveHlDb25maWd1cmF0aW9uLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3QjkzRkY1MjNBRjBDQjgwMDM2RjhFQSAv
KiBSZW1vdGVNZWRpYVBsYXllckNvbmZpZ3VyYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3Rl
TWVkaWFQbGF5ZXJDb25maWd1cmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC02NDE4LDYgKzY0MTksNyBAQAogCQkJCTJEOUZCMjAyMjM3NTIwOUQwMDQ5RjkzNiAvKiBHUFVQ
cm9jZXNzLm1lc3NhZ2VzLmluICovLAogCQkJCTJEOUZCMjE0MjM3NTIwOUQwMDQ5RjkzNiAvKiBH
UFVQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCAqLywKIAkJCQkyRDlGQjIwMzIzNzUyMDlE
MDA0OUY5MzYgLyogR1BVUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oICovLAorCQkJCTA3QjIz
MkZFMjNDNDIzMDgwMDFCODk4QSAvKiBHUFVQcm9jZXNzTWVkaWFDb25maWd1cmF0aW9uLmggKi8s
CiAJCQkpOwogCQkJcGF0aCA9IEdQVVByb2Nlc3M7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4i
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29u
bmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVj
dGlvbi5oCmluZGV4IDMxYzYxMDQ2NjlmMmYwMmZmYTQ0MGZlYjg4MDkyNmM3NGFlMjZhY2YuLmE4
YWQ0ZmVlODZiMjY1OWI0YWZmYjdjNDg0ZGExODFjM2JlZjI3ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmgKQEAgLTQ3LDYg
KzQ3LDExIEBAIHB1YmxpYzoKICAgICAKICAgICBJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24o
KSB7IHJldHVybiBtX2Nvbm5lY3Rpb24uZ2V0KCk7IH0KIAorI2lmIEhBVkUoQVVESVRfVE9LRU4p
CisgICAgdm9pZCBzZXRBdWRpdFRva2VuKE9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+IGF1ZGl0VG9r
ZW4pIHsgbV9hdWRpdFRva2VuID0gYXVkaXRUb2tlbjsgfQorICAgIE9wdGlvbmFsPGF1ZGl0X3Rv
a2VuX3Q+IGF1ZGl0VG9rZW4oKSBjb25zdCB7IHJldHVybiBtX2F1ZGl0VG9rZW47IH0KKyNlbmRp
ZgorCiBwcml2YXRlOgogICAgIEdQVVByb2Nlc3NDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbjo6
SWRlbnRpZmllcik7CiAKQEAgLTU3LDYgKzYyLDEwIEBAIHByaXZhdGU6CiAKICAgICAvLyBUaGUg
Y29ubmVjdGlvbiBmcm9tIHRoZSB3ZWIgcHJvY2VzcyB0byB0aGUgR1BVIHByb2Nlc3MuCiAgICAg
UmVmPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOworCisjaWYgSEFWRShBVURJVF9UT0tF
TikKKyAgICBPcHRpb25hbDxhdWRpdF90b2tlbl90PiBtX2F1ZGl0VG9rZW47CisjZW5kaWYKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbkluZm8uaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb25JbmZvLmgKaW5kZXggMTBhOTA2NTgzNjRm
ZDg2M2Q3ZGZhMTYyYjM0NjgzZjAzMmRlOTcwOS4uMWFkNzA1NWY3NTE1OTFiNDA4YTMxYTNiMGM5
MTlkOTU1MzQ4N2JkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9H
UFVQcm9jZXNzQ29ubmVjdGlvbkluZm8uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uSW5mby5oCkBAIC0zMSw2ICszMSw5IEBAIG5hbWVzcGFj
ZSBXZWJLaXQgewogCiBzdHJ1Y3QgR1BVUHJvY2Vzc0Nvbm5lY3Rpb25JbmZvIHsKICAgICBJUEM6
OkF0dGFjaG1lbnQgY29ubmVjdGlvbjsKKyNpZiBIQVZFKEFVRElUX1RPS0VOKQorICAgIE9wdGlv
bmFsPGF1ZGl0X3Rva2VuX3Q+IGF1ZGl0VG9rZW47CisjZW5kaWYKIAogICAgIElQQzo6Q29ubmVj
dGlvbjo6SWRlbnRpZmllciBpZGVudGlmaWVyKCkKICAgICB7CkBAIC02MCwxMiArNjMsMTkgQEAg
c3RydWN0IEdQVVByb2Nlc3NDb25uZWN0aW9uSW5mbyB7CiAgICAgdm9pZCBlbmNvZGUoSVBDOjpF
bmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIHsKICAgICAgICAgZW5jb2RlciA8PCBjb25uZWN0
aW9uOworI2lmIEhBVkUoQVVESVRfVE9LRU4pCisgICAgICAgIGVuY29kZXIgPDwgYXVkaXRUb2tl
bjsKKyNlbmRpZgogICAgIH0KICAgICAKICAgICBzdGF0aWMgYm9vbCBkZWNvZGUoSVBDOjpEZWNv
ZGVyJiBkZWNvZGVyLCBHUFVQcm9jZXNzQ29ubmVjdGlvbkluZm8mIGluZm8pCiAgICAgewogICAg
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGluZm8uY29ubmVjdGlvbikpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisjaWYgSEFWRShBVURJVF9UT0tFTikKKyAgICAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShpbmZvLmF1ZGl0VG9rZW4pKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworI2Vu
ZGlmCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZS5jcHAKaW5kZXggMTY0ZGNiOTFmZWRlNDRmNWVmOWExYWE5MTk2ZjBmYjc2ZGFhNDViMC4u
NTk4MjM1MTcwODQxNzI2ZDY5MDcwNWQyN2VhOGI0MTFjZGVkMjc4ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE5
LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0zMCw3ICszMCw5IEBACiAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAj
aW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIgorI2luY2x1
ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMu
aCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVBsYXll
ci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1BsYXRmb3JtTGF5ZXIuaD4KQEAgLTg0LDEyICs4NiwzOCBAQCBNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6On5NZWRpYVBsYXllclByaXZhdGVSZW1vdGUoKQogCiB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZTo6cHJlcGFyZUZvclBsYXliYWNrKGJvb2wgcHJpdmF0ZU1vZGUsIE1lZGlh
UGxheWVyOjpQcmVsb2FkIHByZWxvYWQsIGJvb2wgcHJlc2VydmVzUGl0Y2gsIGJvb2wgcHJlcGFy
ZSkKIHsKLSAgICBtX21hbmFnZXIuZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6UHJlcGFyZUZvclBsYXliYWNrKG1faWQs
IHByaXZhdGVNb2RlLCBwcmVsb2FkLCBwcmVzZXJ2ZXNQaXRjaCwgcHJlcGFyZSksIDApOworICAg
IG1fbWFuYWdlci5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6UHJlcGFyZUZvclBsYXliYWNrKG1f
aWQsIHByaXZhdGVNb2RlLCBwcmVsb2FkLCBwcmVzZXJ2ZXNQaXRjaCwgcHJlcGFyZSksIDApOwog
fQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6TWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlOjpsb2FkKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBDb250ZW50VHlwZSYgY29udGVudFR5cGUs
IGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKQogewotICAgIG1fbWFuYWdlci5ncHVQcm9jZXNzQ29u
bmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyUHJveHk6OkxvYWQobV9pZCwgdXJsLCBjb250ZW50VHlwZSwga2V5U3lzdGVtKSwgW3dl
YWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXShhdXRvJiYgY29uZmlndXJhdGlvbikgeworICAg
IGF1dG8mIGNvbm5lY3Rpb24gPSBtX21hbmFnZXIuZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25u
ZWN0aW9uKCk7CisgICAgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBzYW5kYm94
RXh0ZW5zaW9uSGFuZGxlOworICAgIGlmICh1cmwuaXNMb2NhbEZpbGUoKSkgeworICAgICAgICBT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgaGFuZGxlOworICAgICAgICBhdXRvIGZpbGVTeXN0ZW1Q
YXRoID0gdXJsLmZpbGVTeXN0ZW1QYXRoKCk7CisgICAgICAgIGJvb2wgY3JlYXRlZEV4dGVuc2lv
biA9IGZhbHNlOworCisjaWYgSEFWRShTQU5EQk9YX0lTU1VFX1JFQURfRVhURU5TSU9OX1RPX1BS
T0NFU1NfQllfQVVESVRfVE9LRU4pCisgICAgICAgIE9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+IGF1
ZGl0VG9rZW4gPSBtX21hbmFnZXIuZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5hdWRpdFRva2VuKCk7
CisgICAgICAgIEFTU0VSVChhdWRpdFRva2VuKTsKKyAgICAgICAgaWYgKGF1ZGl0VG9rZW4pCisg
ICAgICAgICAgICBjcmVhdGVkRXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFu
ZGxlRm9yUmVhZEJ5QXVkaXRUb2tlbihmaWxlU3lzdGVtUGF0aCwgYXVkaXRUb2tlbi52YWx1ZSgp
LCBoYW5kbGUpOworICAgICAgICBlbHNlCisjZW5kaWYKKyAgICAgICAgY3JlYXRlZEV4dGVuc2lv
biA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShmaWxlU3lzdGVtUGF0aCwgU2FuZGJv
eEV4dGVuc2lvbjo6VHlwZTo6UmVhZE9ubHksIGhhbmRsZSk7CisKKyAgICAgICAgaWYgKCFjcmVh
dGVkRXh0ZW5zaW9uKSB7CisgICAgICAgICAgICBXVEZMb2dBbHdheXMoIlVuYWJsZSB0byBjcmVh
dGUgc2FuZGJveCBleHRlbnNpb24gaGFuZGxlIGZvciBHUFVQcm9jZXNzIHVybC5cbiIpOworICAg
ICAgICAgICAgbV9jYWNoZWRTdGF0ZS5uZXR3b3JrU3RhdGUgPSBNZWRpYVBsYXllcjo6TmV0d29y
a1N0YXRlOjpGb3JtYXRFcnJvcjsKKyAgICAgICAgICAgIG1fcGxheWVyLT5uZXR3b3JrU3RhdGVD
aGFuZ2VkKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBzYW5k
Ym94RXh0ZW5zaW9uSGFuZGxlID0gV1RGTW92ZShoYW5kbGUpOworICAgIH0KKworICAgIGNvbm5l
Y3Rpb24uc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXJQcm94eTo6TG9hZChtX2lkLCB1cmwsIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIGNvbnRlbnRU
eXBlLCBrZXlTeXN0ZW0pLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldKGF1dG8mJiBj
b25maWd1cmF0aW9uKSB7CiAgICAgICAgIGlmICh3ZWFrVGhpcykKICAgICAgICAgICAgIHdlYWtU
aGlzLT5tX2NvbmZpZ3VyYXRpb24gPSBjb25maWd1cmF0aW9uOwogICAgIH0pOwpAQCAtOTcsNDkg
KzEyNSw0OSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6TWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlOjpsb2FkKGNvbnN0IFVSTCYgdXJsLCBjbwogCiB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZTo6Y2FuY2VsTG9hZCgpCiB7Ci0gICAgbV9tYW5hZ2VyLmdwdVByb2Nlc3NDb25u
ZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OkNh
bmNlbExvYWQobV9pZCksIDApOworICAgIG1fbWFuYWdlci5ncHVQcm9jZXNzQ29ubmVjdGlvbigp
LmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94
eTo6Q2FuY2VsTG9hZChtX2lkKSwgMCk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlOjpwcmVwYXJlVG9QbGF5KCkKIHsKLSAgICBtX21hbmFnZXIuZ3B1UHJvY2Vzc0Nvbm5lY3Rp
b24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6UHJlcGFy
ZVRvUGxheShtX2lkKSwgMCk7CisgICAgbV9tYW5hZ2VyLmdwdVByb2Nlc3NDb25uZWN0aW9uKCku
Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5
OjpQcmVwYXJlVG9QbGF5KG1faWQpLCAwKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OnBsYXkoKQogewogICAgIG1fY2FjaGVkU3RhdGUucGF1c2VkID0gZmFsc2U7Ci0gICAg
bV9tYW5hZ2VyLmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyUHJveHk6OlBsYXkobV9pZCksIDApOworICAgIG1fbWFuYWdlci5ncHVQ
cm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRp
YVBsYXllck1hbmFnZXJQcm94eTo6UGxheShtX2lkKSwgMCk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjpwYXVzZSgpCiB7CiAgICAgbV9jYWNoZWRTdGF0ZS5wYXVzZWQgPSB0
cnVlOwotICAgIG1fbWFuYWdlci5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6
OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpQYXVzZShtX2lkKSwgMCk7CisgICAgbV9t
YW5hZ2VyLmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6
OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpQYXVzZShtX2lkKSwgMCk7CiB9CiAKIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRQcmVzZXJ2ZXNQaXRjaChib29sIHByZXNl
cnZlc1BpdGNoKQogewotICAgIG1fbWFuYWdlci5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLnNlbmQo
TWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpTZXRQcmVzZXJ2ZXNQaXRj
aChtX2lkLCBwcmVzZXJ2ZXNQaXRjaCksIDApOworICAgIG1fbWFuYWdlci5ncHVQcm9jZXNzQ29u
bmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1h
bmFnZXJQcm94eTo6U2V0UHJlc2VydmVzUGl0Y2gobV9pZCwgcHJlc2VydmVzUGl0Y2gpLCAwKTsK
IH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFZvbHVtZURvdWJsZShkb3Vi
bGUgdm9sdW1lKQogewotICAgIG1fbWFuYWdlci5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLnNlbmQo
TWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpTZXRWb2x1bWUobV9pZCwg
dm9sdW1lKSwgMCk7CisgICAgbV9tYW5hZ2VyLmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVj
dGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpTZXRW
b2x1bWUobV9pZCwgdm9sdW1lKSwgMCk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlOjpzZXRNdXRlZChib29sIG11dGVkKQogewotICAgIG1fbWFuYWdlci5ncHVQcm9jZXNzQ29u
bmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpT
ZXRNdXRlZChtX2lkLCBtdXRlZCksIDApOworICAgIG1fbWFuYWdlci5ncHVQcm9jZXNzQ29ubmVj
dGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXJQcm94eTo6U2V0TXV0ZWQobV9pZCwgbXV0ZWQpLCAwKTsKIH0KIAogdm9pZCBNZWRpYVBsYXll
clByaXZhdGVSZW1vdGU6OnNldFByZWxvYWQoTWVkaWFQbGF5ZXI6OlByZWxvYWQgcHJlbG9hZCkK
IHsKLSAgICBtX21hbmFnZXIuZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6U2V0UHJlbG9hZChtX2lkLCBwcmVsb2FkKSwg
MCk7CisgICAgbV9tYW5hZ2VyLmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNl
bmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpTZXRQcmVsb2FkKG1f
aWQsIHByZWxvYWQpLCAwKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNl
dFByaXZhdGVCcm93c2luZ01vZGUoYm9vbCBwcml2YXRlTW9kZSkKIHsKLSAgICBtX21hbmFnZXIu
Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1h
bmFnZXJQcm94eTo6U2V0UHJpdmF0ZUJyb3dzaW5nTW9kZShtX2lkLCBwcml2YXRlTW9kZSksIDAp
OworICAgIG1fbWFuYWdlci5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5k
KE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6U2V0UHJpdmF0ZUJyb3dz
aW5nTW9kZShtX2lkLCBwcml2YXRlTW9kZSksIDApOwogfQogCiBNZWRpYVRpbWUgTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjpjdXJyZW50TWVkaWFUaW1lKCkgY29uc3QKQEAgLTE1MCwxMyArMTc4
LDEzIEBAIE1lZGlhVGltZSBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmN1cnJlbnRNZWRpYVRp
bWUoKSBjb25zdAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNlZWsoY29uc3QgTWVk
aWFUaW1lJiB0aW1lKQogewogICAgIG1fc2Vla2luZyA9IHRydWU7Ci0gICAgbV9tYW5hZ2VyLmdw
dVByb2Nlc3NDb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyUHJveHk6OlNlZWsobV9pZCwgdGltZSksIDApOworICAgIG1fbWFuYWdlci5ncHVQcm9jZXNz
Q29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXJQcm94eTo6U2VlayhtX2lkLCB0aW1lKSwgMCk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjpzZWVrV2l0aFRvbGVyYW5jZShjb25zdCBNZWRpYVRpbWUmIHRpbWUs
IGNvbnN0IE1lZGlhVGltZSYgbmVnYXRpdmVUb2xlcmFuY2UsIGNvbnN0IE1lZGlhVGltZSYgcG9z
aXRpdmVUb2xlcmFuY2UpCiB7CiAgICAgbV9zZWVraW5nID0gdHJ1ZTsKLSAgICBtX21hbmFnZXIu
Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1h
bmFnZXJQcm94eTo6U2Vla1dpdGhUb2xlcmFuY2UobV9pZCwgdGltZSwgbmVnYXRpdmVUb2xlcmFu
Y2UsIHBvc2l0aXZlVG9sZXJhbmNlKSwgMCk7CisgICAgbV9tYW5hZ2VyLmdwdVByb2Nlc3NDb25u
ZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFu
YWdlclByb3h5OjpTZWVrV2l0aFRvbGVyYW5jZShtX2lkLCB0aW1lLCBuZWdhdGl2ZVRvbGVyYW5j
ZSwgcG9zaXRpdmVUb2xlcmFuY2UpLCAwKTsKIH0KIAogYm9vbCBNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OmRpZExvYWRpbmdQcm9ncmVzcygpIGNvbnN0CkBAIC0zMTMsNDIgKzM0MSw0MiBAQCBi
b29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2hvdWxkSWdub3JlSW50cmluc2ljU2l6ZSgp
CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpwcmVwYXJlRm9yUmVuZGVyaW5nKCkK
IHsKLSAgICBtX21hbmFnZXIuZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6UHJlcGFyZUZvclJlbmRlcmluZyhtX2lkKSwg
MCk7CisgICAgbV9tYW5hZ2VyLmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNl
bmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpQcmVwYXJlRm9yUmVu
ZGVyaW5nKG1faWQpLCAwKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNl
dFNpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSkKIHsKLSAgICBtX21hbmFnZXIuZ3B1
UHJvY2Vzc0Nvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXJQcm94eTo6U2V0U2l6ZShtX2lkLCBzaXplKSwgMCk7CisgICAgbV9tYW5hZ2VyLmdwdVByb2Nl
c3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlclByb3h5OjpTZXRTaXplKG1faWQsIHNpemUpLCAwKTsKIH0KIAogdm9pZCBNZWRp
YVBsYXllclByaXZhdGVSZW1vdGU6OnNldFZpc2libGUoYm9vbCB2aXNpYmxlKQogewotICAgIG1f
bWFuYWdlci5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlclByb3h5OjpTZXRWaXNpYmxlKG1faWQsIHZpc2libGUpLCAwKTsKKyAgICBt
X21hbmFnZXIuZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdl
czo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OlNldFZpc2libGUobV9pZCwgdmlzaWJs
ZSksIDApOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0U2hvdWxkTWFp
bnRhaW5Bc3BlY3RSYXRpbyhib29sIG1haW50YWluUmF0aW8pCiB7Ci0gICAgbV9tYW5hZ2VyLmdw
dVByb2Nlc3NDb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyUHJveHk6OlNldFNob3VsZE1haW50YWluQXNwZWN0UmF0aW8obV9pZCwgbWFpbnRhaW5SYXRp
byksIDApOworICAgIG1fbWFuYWdlci5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24o
KS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6U2V0U2hvdWxk
TWFpbnRhaW5Bc3BlY3RSYXRpbyhtX2lkLCBtYWludGFpblJhdGlvKSwgMCk7CiB9CiAKIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShXZWJDb3Jl
OjpGbG9hdFJlY3QgcmVjdCkKIHsKLSAgICBtX21hbmFnZXIuZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24o
KS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6U2V0VmlkZW9G
dWxsc2NyZWVuRnJhbWUobV9pZCwgcmVjdCksIDApOworICAgIG1fbWFuYWdlci5ncHVQcm9jZXNz
Q29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXJQcm94eTo6U2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUobV9pZCwgcmVjdCksIDApOwog
fQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0VmlkZW9GdWxsc2NyZWVuR3Jh
dml0eShXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpWaWRlb0dyYXZpdHkgZ3Jhdml0eSkKIHsK
LSAgICBtX21hbmFnZXIuZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1v
dGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6U2V0VmlkZW9GdWxsc2NyZWVuR3Jhdml0eShtX2lk
LCBncmF2aXR5KSwgMCk7CisgICAgbV9tYW5hZ2VyLmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29u
bmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpT
ZXRWaWRlb0Z1bGxzY3JlZW5HcmF2aXR5KG1faWQsIGdyYXZpdHkpLCAwKTsKIH0KIAogdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmFjY2VsZXJhdGVkUmVuZGVyaW5nU3RhdGVDaGFuZ2Vk
KCkKIHsKLSAgICBtX21hbmFnZXIuZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6QWNjZWxlcmF0ZWRSZW5kZXJpbmdTdGF0
ZUNoYW5nZWQobV9pZCwgbV9wbGF5ZXItPnN1cHBvcnRzQWNjZWxlcmF0ZWRSZW5kZXJpbmcoKSks
IDApOworICAgIG1fbWFuYWdlci5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5z
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6QWNjZWxlcmF0ZWRS
ZW5kZXJpbmdTdGF0ZUNoYW5nZWQobV9pZCwgbV9wbGF5ZXItPnN1cHBvcnRzQWNjZWxlcmF0ZWRS
ZW5kZXJpbmcoKSksIDApOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0
U2hvdWxkRGlzYWJsZVNsZWVwKGJvb2wgZGlzYWJsZSkKIHsKLSAgICBtX21hbmFnZXIuZ3B1UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQ
cm94eTo6U2V0U2hvdWxkRGlzYWJsZVNsZWVwKG1faWQsIGRpc2FibGUpLCAwKTsKKyAgICBtX21h
bmFnZXIuZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OlNldFNob3VsZERpc2FibGVTbGVlcChtX2lk
LCBkaXNhYmxlKSwgMCk7CiB9CiAKIEZsb2F0U2l6ZSBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6
Om5hdHVyYWxTaXplKCkgY29uc3QKQEAgLTgxMyw3ICs4NDEsNyBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZTo6cmVxdWVzdFJlc291cmNlKFJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlm
aWVyIHJlbQogICAgIEFTU0VSVCghbV9tZWRpYVJlc291cmNlcy5jb250YWlucyhyZW1vdGVNZWRp
YVJlc291cmNlSWRlbnRpZmllcikpOwogICAgIGF1dG8gcmVzb3VyY2UgPSBtX21lZGlhUmVzb3Vy
Y2VMb2FkZXItPnJlcXVlc3RSZXNvdXJjZShXVEZNb3ZlKHJlcXVlc3QpLCBvcHRpb25zKTsKICAg
ICAvLyBQbGF0Zm9ybU1lZGlhUmVzb3VyY2Ugb3ducyB0aGUgUGxhdGZvcm1NZWRpYVJlc291cmNl
Q2xpZW50Ci0gICAgcmVzb3VyY2UtPnNldENsaWVudChtYWtlVW5pcXVlPFJlbW90ZU1lZGlhUmVz
b3VyY2VQcm94eT4obV9tYW5hZ2VyLmdwdVByb2Nlc3NDb25uZWN0aW9uKCksICpyZXNvdXJjZSwg
cmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIpKTsKKyAgICByZXNvdXJjZS0+c2V0Q2xpZW50
KG1ha2VVbmlxdWU8UmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5PihtX21hbmFnZXIuZ3B1UHJvY2Vz
c0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCksICpyZXNvdXJjZSwgcmVtb3RlTWVkaWFSZXNvdXJj
ZUlkZW50aWZpZXIpKTsKICAgICBtX21lZGlhUmVzb3VyY2VzLmFkZChyZW1vdGVNZWRpYVJlc291
cmNlSWRlbnRpZmllciwgV1RGTW92ZShyZXNvdXJjZSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVS
ZW1vdGUuaAppbmRleCA4ZDMzNTg3YjUwMTYxMjdkOTE5NDUzY2E2NmUzOGI0ZWI1ZDhhOTdiLi40
MTk3NWNmNTk0ODk1MDk0YjA2NjQ0NGEzYTRlMTJjZDRhZDJmYWZkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOS0yMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVNZWRpYVBsYXllck1JTUVUeXBlQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1JTUVUeXBlQ2FjaGUuY3BwCmluZGV4IDZk
NTdmYzIxMDcyZjU1M2U0NzBhMTcyY2NhZjM2OWNjMDJmMzc0NTYuLmZlOTQ1NWJjNjcyNWY4M2E5
MGNlNGJmYWFhYTFmOWQxYjA2OWZlODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNSU1FVHlwZUNhY2hlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTUlNRVR5
cGVDYWNoZS5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgYm9vbCBSZW1vdGVNZWRpYVBsYXllck1JTUVU
eXBlQ2FjaGU6OmlzVW5zdXBwb3J0ZWRDb250YWluZXJUeXBlKGNvbnN0IFN0cmluZyYgdHkKIGJv
b2wgUmVtb3RlTWVkaWFQbGF5ZXJNSU1FVHlwZUNhY2hlOjpjYW5EZWNvZGVFeHRlbmRlZFR5cGUo
Y29uc3QgV2ViQ29yZTo6Q29udGVudFR5cGUmIHR5cGUpCiB7CiAgICAgYm9vbCByZXN1bHQ7Ci0g
ICAgaWYgKCFtX21hbmFnZXIuZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdl
czo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OkNhbkRlY29kZUV4dGVuZGVkVHlwZSht
X2VuZ2luZUlkZW50aWZpZXIsIHR5cGUucmF3KCkpLCBNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyUHJveHk6OkNhbkRlY29kZUV4dGVuZGVkVHlwZTo6UmVwbHkocmVzdWx0KSwgMCkp
CisgICAgaWYgKCFtX21hbmFnZXIuZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCku
c2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpDYW5EZWNv
ZGVFeHRlbmRlZFR5cGUobV9lbmdpbmVJZGVudGlmaWVyLCB0eXBlLnJhdygpKSwgTWVzc2FnZXM6
OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpDYW5EZWNvZGVFeHRlbmRlZFR5cGU6OlJl
cGx5KHJlc3VsdCksIDApKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4gcmVz
dWx0OwpAQCAtMTA4LDcgKzEwOCw3IEBAIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OlN1cHBv
cnRzVHlwZSBSZW1vdGVNZWRpYVBsYXllck1JTUVUeXBlQ2FjaGU6OnN1cHBvcnRzCiAgICAgfQog
CiAgICAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSByZXN1bHQ7Ci0gICAgaWYgKCFtX21hbmFn
ZXIuZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyUHJveHk6OlN1cHBvcnRzVHlwZUFuZENvZGVjcyhtX2VuZ2luZUlkZW50aWZp
ZXIsIHBhcmFtZXRlcnMpLCBNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6
OlN1cHBvcnRzVHlwZUFuZENvZGVjczo6UmVwbHkocmVzdWx0KSwgMCkpCisgICAgaWYgKCFtX21h
bmFnZXIuZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2Fn
ZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpTdXBwb3J0c1R5cGVBbmRDb2RlY3Mo
bV9lbmdpbmVJZGVudGlmaWVyLCBwYXJhbWV0ZXJzKSwgTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlclByb3h5OjpTdXBwb3J0c1R5cGVBbmRDb2RlY3M6OlJlcGx5KHJlc3VsdCksIDAp
KQogICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZTo6SXNOb3RTdXBwb3J0
ZWQ7CiAKICAgICBpZiAoIW1fc3VwcG9ydHNUeXBlQW5kQ29kZWNzQ2FjaGUpCkBAIC0xMjUsNyAr
MTI1LDcgQEAgdm9pZCBSZW1vdGVNZWRpYVBsYXllck1JTUVUeXBlQ2FjaGU6OmluaXRpYWxpemVD
YWNoZShIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW4KICAgICAgICAgcmV0dXJuOwogCiAgICAg
VmVjdG9yPFN0cmluZz4gdHlwZXM7Ci0gICAgaWYgKCFtX21hbmFnZXIuZ3B1UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6
OkdldFN1cHBvcnRlZFR5cGVzKG1fZW5naW5lSWRlbnRpZmllciksIE1lc3NhZ2VzOjpSZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXJQcm94eTo6R2V0U3VwcG9ydGVkVHlwZXM6OlJlcGx5KHR5cGVzKSwg
MCkpCisgICAgaWYgKCFtX21hbmFnZXIuZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9u
KCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpHZXRT
dXBwb3J0ZWRUeXBlcyhtX2VuZ2luZUlkZW50aWZpZXIpLCBNZXNzYWdlczo6UmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyUHJveHk6OkdldFN1cHBvcnRlZFR5cGVzOjpSZXBseSh0eXBlcyksIDApKQog
ICAgICAgICByZXR1cm47CiAKICAgICBmb3IgKGF1dG8mIHR5cGUgOiB0eXBlcykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyLmNwcAppbmRleCAyNWNjNTYzZjNlYmQ1OWM1NzBiNjZiZTk0MDNiN2Nl
NzI5MGQyOGRlLi42ZWNiYmVhYmJjYmMzYTg1MzExMjA4NGUzZjMzNjdmN2M2YzU4NDE5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuY3BwCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpZiBFTkFC
TEUoR1BVX1BST0NFU1MpCiAKLSNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2lu
Y2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlh
UGxheWVyQ29uZmlndXJhdGlvbi5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyTUlNRVR5
cGVDYWNoZS5oIgpAQCAtMTY0LDcgKzE2Myw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVBsYXll
clByaXZhdGVJbnRlcmZhY2U+IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6Y3JlYXRlUmVtCiAg
ICAgcHJveHlDb25maWd1cmF0aW9uLmlzVmlkZW8gPSBwbGF5ZXItPmlzVmlkZW9QbGF5ZXIoKTsK
IAogICAgIFJlbW90ZU1lZGlhUGxheWVyQ29uZmlndXJhdGlvbiBwbGF5ZXJDb25maWd1cmF0aW9u
OwotICAgIGJvb2wgc2VuZFN1Y2NlZWRlZCA9IGdwdVByb2Nlc3NDb25uZWN0aW9uKCkuc2VuZFN5
bmMoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpDcmVhdGVNZWRpYVBs
YXllcihpZCwgcmVtb3RlRW5naW5lSWRlbnRpZmllciwgcHJveHlDb25maWd1cmF0aW9uKSwgTWVz
c2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpDcmVhdGVNZWRpYVBsYXllcjo6
UmVwbHkocGxheWVyQ29uZmlndXJhdGlvbiksIDApOworICAgIGJvb2wgc2VuZFN1Y2NlZWRlZCA9
IGdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpS
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6Q3JlYXRlTWVkaWFQbGF5ZXIoaWQsIHJlbW90
ZUVuZ2luZUlkZW50aWZpZXIsIHByb3h5Q29uZmlndXJhdGlvbiksIE1lc3NhZ2VzOjpSZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXJQcm94eTo6Q3JlYXRlTWVkaWFQbGF5ZXI6OlJlcGx5KHBsYXllckNv
bmZpZ3VyYXRpb24pLCAwKTsKICAgICBpZiAoIXNlbmRTdWNjZWVkZWQpIHsKICAgICAgICAgV1RG
TG9nQWx3YXlzKCJGYWlsZWQgdG8gY3JlYXRlIHJlbW90ZSBtZWRpYSBwbGF5ZXIuIik7CiAgICAg
ICAgIHJldHVybiBudWxscHRyOwpAQCAtMTc4LDcgKzE3Nyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxN
ZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U+IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6Y3Jl
YXRlUmVtCiB2b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6ZGVsZXRlUmVtb3RlTWVkaWFQ
bGF5ZXIoTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZCkKIHsKICAgICBtX3Bs
YXllcnMudGFrZShpZCk7Ci0gICAgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6RGVsZXRlTWVkaWFQbGF5ZXIoaWQpLCAw
KTsKKyAgICBncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6RGVsZXRlTWVkaWFQbGF5ZXIoaWQpLCAw
KTsKIH0KIAogdm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OmdldFN1cHBvcnRlZFR5cGVz
KE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciByZW1vdGVFbmdpbmVJZGVu
dGlmaWVyLCBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgcmVzdWx0
KQpAQCAtMTkyLDcgKzE5MSw3IEBAIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpnZXRT
dXBwb3J0ZWRUeXBlcyhNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkCiAgICAgfQogCiAg
ICAgVmVjdG9yPFN0cmluZz4gdHlwZXM7Ci0gICAgaWYgKCFncHVQcm9jZXNzQ29ubmVjdGlvbigp
LnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6R2V0U3Vw
cG9ydGVkVHlwZXMocmVtb3RlRW5naW5lSWRlbnRpZmllciksIE1lc3NhZ2VzOjpSZW1vdGVNZWRp
YVBsYXllck1hbmFnZXJQcm94eTo6R2V0U3VwcG9ydGVkVHlwZXM6OlJlcGx5KHR5cGVzKSwgMCkp
CisgICAgaWYgKCFncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhN
ZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OkdldFN1cHBvcnRlZFR5cGVz
KHJlbW90ZUVuZ2luZUlkZW50aWZpZXIpLCBNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyUHJveHk6OkdldFN1cHBvcnRlZFR5cGVzOjpSZXBseSh0eXBlcyksIDApKQogICAgICAgICBy
ZXR1cm47CiAKICAgICByZXN1bHQgPSBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRp
dmVIYXNoPigpOwpAQCAtMjE0LDcgKzIxMyw3IEBAIGJvb2wgUmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyOjpzdXBwb3J0c0tleVN5c3RlbShNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkCiBI
YXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6
b3JpZ2luc0luTWVkaWFDYWNoZShNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZp
ZXIgcmVtb3RlRW5naW5lSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAgIFZl
Y3RvcjxTZWN1cml0eU9yaWdpbkRhdGE+IG9yaWdpbkRhdGE7Ci0gICAgaWYgKCFncHVQcm9jZXNz
Q29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQ
cm94eTo6T3JpZ2luc0luTWVkaWFDYWNoZShyZW1vdGVFbmdpbmVJZGVudGlmaWVyLCBwYXRoKSwg
TWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpPcmlnaW5zSW5NZWRpYUNh
Y2hlOjpSZXBseShvcmlnaW5EYXRhKSwgMCkpCisgICAgaWYgKCFncHVQcm9jZXNzQ29ubmVjdGlv
bigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyUHJveHk6Ok9yaWdpbnNJbk1lZGlhQ2FjaGUocmVtb3RlRW5naW5lSWRlbnRpZmllciwgcGF0
aCksIE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6T3JpZ2luc0luTWVk
aWFDYWNoZTo6UmVwbHkob3JpZ2luRGF0YSksIDApKQogICAgICAgICByZXR1cm4geyB9OwogCiAg
ICAgSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiBvcmlnaW5zOwpAQCAtMjI2LDcgKzIy
NSw3IEBAIEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4gUmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyOjpvcmlnaW5zSW5NZWRpYUNhY2hlKE1lCiAKIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyOjpjbGVhck1lZGlhQ2FjaGUoTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVu
dGlmaWVyIHJlbW90ZUVuZ2luZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgcGF0aCwgV2FsbFRp
bWUgbW9kaWZpZWRTaW5jZSkKIHsKLSAgICBncHVQcm9jZXNzQ29ubmVjdGlvbigpLnNlbmQoTWVz
c2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpDbGVhck1lZGlhQ2FjaGUocmVt
b3RlRW5naW5lSWRlbnRpZmllciwgcGF0aCwgbW9kaWZpZWRTaW5jZSksIDApOworICAgIGdwdVBy
b2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlclByb3h5OjpDbGVhck1lZGlhQ2FjaGUocmVtb3RlRW5naW5lSWRlbnRpZmll
ciwgcGF0aCwgbW9kaWZpZWRTaW5jZSksIDApOwogfQogCiB2b2lkIFJlbW90ZU1lZGlhUGxheWVy
TWFuYWdlcjo6Y2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyhNZWRpYVBsYXllckVudW1zOjpNZWRp
YUVuZ2luZUlkZW50aWZpZXIgcmVtb3RlRW5naW5lSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBw
YXRoLCBjb25zdCBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+JiBvcmlnaW5zKQpAQCAt
MjM1LDcgKzIzNCw3IEBAIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpjbGVhck1lZGlh
Q2FjaGVGb3JPcmlnaW5zKE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhCiAgICAgICAgIHJldHVybiBv
cmlnaW4tPmRhdGEoKTsKICAgICB9KTsKIAotICAgIGdwdVByb2Nlc3NDb25uZWN0aW9uKCkuc2Vu
ZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OkNsZWFyTWVkaWFDYWNo
ZUZvck9yaWdpbnMocmVtb3RlRW5naW5lSWRlbnRpZmllciwgcGF0aCwgb3JpZ2luRGF0YSksIDAp
OworICAgIGdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6
OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpDbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5z
KHJlbW90ZUVuZ2luZUlkZW50aWZpZXIsIHBhdGgsIG9yaWdpbkRhdGEpLCAwKTsKIH0KIAogdm9p
ZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6Om5ldHdvcmtTdGF0ZUNoYW5nZWQoTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZCwgUmVtb3RlTWVkaWFQbGF5ZXJTdGF0ZSYmIHN0
YXRlKQpAQCAtMzMzLDkgKzMzMiwxMiBAQCB2b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6
dXBkYXRlQ2FjaGVkU3RhdGUoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdAogICAgICAg
ICBwbGF5ZXItPnVwZGF0ZUNhY2hlZFN0YXRlKFdURk1vdmUoc3RhdGUpKTsKIH0KIAotSVBDOjpD
b25uZWN0aW9uJiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OmdwdVByb2Nlc3NDb25uZWN0aW9u
KCkgY29uc3QKK0dQVVByb2Nlc3NDb25uZWN0aW9uJiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6
OmdwdVByb2Nlc3NDb25uZWN0aW9uKCkgY29uc3QKIHsKLSAgICByZXR1cm4gV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCk7Cisg
ICAgaWYgKCFtX2dwdVByb2Nlc3NDb25uZWN0aW9uKQorICAgICAgICBtX2dwdVByb2Nlc3NDb25u
ZWN0aW9uID0gJldlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0
aW9uKCk7CisKKyAgICByZXR1cm4gKm1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb247CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmgKaW5kZXggZjU4ODVjZWUw
NWQ5YTVmNjRlNzM0M2M4YjNkYzgzMWZkZjk4ZjZhZC4uNDY4OWUwMjhiNjdkNDlmM2YyNzc5OWVh
OGVhY2Q3MjJkZmViMGI4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5oCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI3LDYgKzI3LDcg
QEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUgIkdQVVByb2Nlc3NDb25u
ZWN0aW9uLmgiCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllci5o
IgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxh
eWVyU3RhdGUuaCIKQEAgLTU0LDEwICs1NSwxMSBAQCBwdWJsaWM6CiAgICAgflJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlcigpOwogCiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHN1cHBsZW1lbnROYW1l
KCk7CisgICAgV2ViUHJvY2VzcyYgcGFyZW50UHJvY2VzcygpIGNvbnN0IHsgcmV0dXJuIG1fcHJv
Y2VzczsgfQogCiAgICAgdm9pZCB1cGRhdGVQcmVmZXJlbmNlcyhjb25zdCBXZWJDb3JlOjpTZXR0
aW5ncyYpOwogCi0gICAgSVBDOjpDb25uZWN0aW9uJiBncHVQcm9jZXNzQ29ubmVjdGlvbigpIGNv
bnN0OworICAgIEdQVVByb2Nlc3NDb25uZWN0aW9uJiBncHVQcm9jZXNzQ29ubmVjdGlvbigpIGNv
bnN0OwogCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZUZyb21HUFVQcm9jZXNzKElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKSB7IGRpZFJlY2VpdmVN
ZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOyB9CiAKQEAgLTEwMSw2ICsxMDMsNyBAQCBwcml2
YXRlOgogCiAgICAgSGFzaE1hcDxNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyLCBX
ZWFrUHRyPE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZT4+IG1fcGxheWVyczsKICAgICBXZWJQcm9j
ZXNzJiBtX3Byb2Nlc3M7CisgICAgbXV0YWJsZSBHUFVQcm9jZXNzQ29ubmVjdGlvbiogbV9ncHVQ
cm9jZXNzQ29ubmVjdGlvbiB7IG51bGxwdHIgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IGNlZWM5NGUzMzdj
N2EzNDUyNGNlNTZjZDYzNmEzOTJkMjJhMGRiZDUuLjg0YTljODVjMmY5MzdkNDY0NWYwNWQxYzhm
YzFjMzkyNWNhZTIzYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0xMjk5LDYgKzEyOTksOSBAQCBHUFVQcm9jZXNzQ29ubmVjdGlvbiYgV2ViUHJvY2Vzczo6
ZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKQogICAgICAgICAgICAgQ1JBU0goKTsKIAogICAg
ICAgICBtX2dwdVByb2Nlc3NDb25uZWN0aW9uID0gR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0
ZShjb25uZWN0aW9uSW5mby5yZWxlYXNlSWRlbnRpZmllcigpKTsKKyNpZiBIQVZFKEFVRElUX1RP
S0VOKQorICAgICAgICBtX2dwdVByb2Nlc3NDb25uZWN0aW9uLT5zZXRBdWRpdFRva2VuKFdURk1v
dmUoY29ubmVjdGlvbkluZm8uYXVkaXRUb2tlbikpOworI2VuZGlmCiAgICAgfQogICAgIAogICAg
IHJldHVybiAqbV9ncHVQcm9jZXNzQ29ubmVjdGlvbjsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBiYTg2MzE2ODk1NGIxYjhl
YTgyZjQ4ODZhODkyODc0MjA2MTE3MDZiLi40MzNjZjU3ZDVkMjM5YmY1ZTExM2M5NDY4ZjAzYThk
OTRmZTRiNjc1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjAtMDEtMDkgIEVyaWMgQ2FybHNv
biAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgW01lZGlhIGluIEdQVSBwcm9j
ZXNzXSBFeHRlbmQgdGhlIEdQVSBwcm9jZXNzIHNhbmRib3ggdG8gYWxsb3cgYWNjZXNzIHRvIGxv
Y2FsIGZpbGVzIHdoZW4gbmVjZXNzYXJ5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDU5NjcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU4NDI1MDIw
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZ3B1
LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9uczoKKwogMjAyMC0wMS0wOSAgUGFibG8gU2FhdmVkcmEg
IDxwc2FhdmVkcmFAaWdhbGlhLmNvbT4KIAogICAgICAgICBCYWQgYmFzZWxpbmUgZm9yIENhdGFs
aW5hIG9uIHhociB3ZWItcGxhdGZvcm0tdGVzdHMgaW1wb3J0ZWQgaW4gcjI1NDE1NApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRl
c3RzL2dwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggZDAxZDViMTg1NjlmYzQ2NDZl
NGJkM2JmMzcxMDdlMjNhZmNmMDg1Yi4uYTUxNjMzZmZhZGIyNDBjYjI3ZGJkMWQ2NGE0YzMwMGI1
MDhkMWVlZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0
aW9ucworKysgYi9MYXlvdXRUZXN0cy9ncHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25zCkBAIC0x
NzksMTQgKzE3OSw0NiBAQCBsZWdhY3ktYW5pbWF0aW9uLWVuZ2luZS9pbXBvcnRlZC9ibGluay9j
b21wb3NpdGluZy9zcXVhc2hpbmcvcmVtb3ZlLWZyb20tZ3JvdXBlZAogaW5zcGVjdG9yL2xheWVy
cy9sYXllcnMtY29tcG9zaXRpbmctcmVhc29ucy5odG1sIFsgU2tpcCBdCiAKIG1lZGlhIFsgU2tp
cCBdCi1tZWRpYS9hdWRpby1wbGF5LXdpdGgtdmlkZW8tZWxlbWVudC5odG1sIFsgUGFzcyBdCi1t
ZWRpYS9hdWRpby1wbGF5Lmh0bWwgWyBQYXNzIF0KLW1lZGlhL21lZGlhLWNhbi1wbGF5LW1wZWct
YXVkaW8uaHRtbCBbIFBhc3MgXQotbWVkaWEvbWVkaWEtY2FuLXBsYXktd2F2LWF1ZGlvLmh0bWwg
WyBQYXNzIF0KIG1lZGlhL21lZGlhLWNvbnRyb2xsZXIuaHRtbCBbIFBhc3MgXQogbWVkaWEvbWVk
aWEtcHJlbG9hZC1uby1kZWxheS1sb2FkZXZlbnQuaHRtbCBbIFBhc3MgXQogbWVkaWEvdmlkZW8t
c3JjLmh0bWwgWyBQYXNzIF0KIG1lZGlhL3ZpZGVvLXNvdXJjZS5odG1sIFsgUGFzcyBdCittZWRp
YS9hdWRpby1hcy12aWRlby1mdWxsc2NyZWVuLmh0bWwgWyBQYXNzIF0KK21lZGlhL2F1ZGlvLWJh
Y2tncm91bmQtcGxheWJhY2stcGxheWxpc3QuaHRtbCBbIFBhc3MgXQorbWVkaWEvYXVkaW8tY29u
Y3VycmVudC1zdXBwb3J0ZWQuaHRtbCBbIFBhc3MgXQorbWVkaWEvYXVkaW8tY29uc3RydWN0b3It
cHJlbG9hZC5odG1sIFsgUGFzcyBdCittZWRpYS9hdWRpby1jb25zdHJ1Y3Rvci1zcmMuaHRtbCBb
IFBhc3MgXQorbWVkaWEvYXVkaW8tY29uc3RydWN0b3IuaHRtbCBbIFBhc3MgXQorbWVkaWEvYXVk
aW8tY29udHJvbHMtZG8tbm90LWZhZGUtb3V0Lmh0bWwgWyBQYXNzIF0KK21lZGlhL2F1ZGlvLWNv
bnRyb2xzLXRpbWVsaW5lLWluLW1lZGlhLWRvY3VtZW50Lmh0bWwgWyBQYXNzIF0KK21lZGlhL2F1
ZGlvLWRlYWxsb2MtY3Jhc2guaHRtbCBbIFBhc3MgXQorbWVkaWEvYXVkaW8tZGVsZXRlLXdoaWxl
LXNsaWRlci10aHVtYi1jbGlja2VkLmh0bWwgWyBQYXNzIF0KK21lZGlhL2F1ZGlvLWdhcmJhZ2Ut
Y29sbGVjdC5odG1sIFsgUGFzcyBdCittZWRpYS9hdWRpby1tcGVnLXN1cHBvcnRlZC5odG1sIFsg
UGFzcyBdCittZWRpYS9hdWRpby1tcGVnNC1zdXBwb3J0ZWQuaHRtbCBbIFBhc3MgXQorbWVkaWEv
YXVkaW8tbm8taW5zdGFsbGVkLWVuZ2luZXMuaHRtbCBbIFBhc3MgXQorbWVkaWEvYXVkaW8tb25s
eS12aWRlby1pbnRyaW5zaWMtc2l6ZS5odG1sIFsgUGFzcyBdCittZWRpYS9hdWRpby1wbGF5LWV2
ZW50Lmh0bWwgWyBQYXNzIF0KK21lZGlhL2F1ZGlvLXBsYXktd2l0aC12aWRlby1lbGVtZW50Lmh0
bWwgWyBQYXNzIF0KK21lZGlhL2F1ZGlvLXBsYXkuaHRtbCBbIFBhc3MgXQorbWVkaWEvYXVkaW8t
cGxheWJhY2stcmVzdHJpY3Rpb24tYXV0b3BsYXkuaHRtbCBbIFBhc3MgXQorbWVkaWEvYXVkaW8t
cGxheWJhY2stcmVzdHJpY3Rpb24tcGxheS1tdXRlZC5odG1sIFsgUGFzcyBdCittZWRpYS9hdWRp
by1wbGF5YmFjay1yZXN0cmljdGlvbi1wbGF5Lmh0bWwgWyBQYXNzIF0KK21lZGlhL2F1ZGlvLXBs
YXliYWNrLXJlc3RyaWN0aW9uLXJlbW92ZWQtbXV0ZWQuaHRtbCBbIFBhc3MgXQorbWVkaWEvYXVk
aW8tcGxheWJhY2stdm9sdW1lLWNoYW5nZXMtd2l0aC1yZXN0cmljdGlvbnMtYW5kLXVzZXItZ2Vz
dHVyZXMuaHRtbCBbIFBhc3MgXQorbWVkaWEvYXVkaW8tcGxheWJhY2stdm9sdW1lLWNoYW5nZXMt
d2l0aC1yZXN0cmljdGlvbnMuaHRtbCBbIFBhc3MgXQorbWVkaWEvZGVhY3RpdmF0ZS1hdWRpby1z
ZXNzaW9uLmh0bWwgWyBQYXNzIF0KK21lZGlhL21lZGlhLWNhbi1wbGF5LW1wZWctYXVkaW8uaHRt
bCBbIFBhc3MgXQorbWVkaWEvbWVkaWEtY2FuLXBsYXktd2F2LWF1ZGlvLmh0bWwgWyBQYXNzIF0K
K21lZGlhL21lZGlhLWRvY3VtZW50LWF1ZGlvLWNvbnRyb2xzLXZpc2libGUuaHRtbCBbIFBhc3Mg
XQorbWVkaWEvbWVkaWEtZG9jdW1lbnQtYXVkaW8tcmVwYWludC5odG1sIFsgUGFzcyBdCittZWRp
YS9tZWRpYS1kb2N1bWVudC1hdWRpby1zaXplLmh0bWwgWyBQYXNzIF0KK21lZGlhL211dGVkLXZp
ZGVvLWlzLXBsYXlpbmctYXVkaW8uaHRtbCBbIFBhc3MgXQorbWVkaWEvcmVzdHJpY3RlZC1hdWRp
by1wbGF5YmFjay13aXRoLWRvY3VtZW50LWdlc3R1cmUuaHRtbCBbIFBhc3MgXQorbWVkaWEvcmVz
dHJpY3RlZC1hdWRpby1wbGF5YmFjay13aXRoLW11bHRpcGxlLXNldHRpbWVvdXRzLmh0bWwgWyBQ
YXNzIF0KK21lZGlhL3ZpZGVvLWNvbnRyb2xzLXZpc2libGUtYXVkaW8tb25seS5odG1sIFsgUGFz
cyBdCittZWRpYS92aWRlby1wbGF5LWF1ZGlvLXJlcXVpcmUtdXNlci1nZXN0dXJlLmh0bWwgWyBQ
YXNzIF0KKwogYWNjZXNzaWJpbGl0eS9tZWRpYS1lbGVtZW50Lmh0bWwgWyBTa2lwIF0KIGZhc3Qv
YmxvY2svZmxvYXQvbGlzdC1tYXJrZXItaXMtZmxvYXQtY3Jhc2guaHRtbCBbIFNraXAgXQogZmFz
dC9jc3MvcmVsYXRpdmUtcG9zaXRpb24tcmVwbGFjZWQtaW4tdGFibGUtZGlzcGxheS1jcmFzaC5o
dG1sIFsgU2tpcCBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387364</attachid>
            <date>2020-01-10 12:44:06 -0800</date>
            <delta_ts>2020-01-10 20:45:40 -0800</delta_ts>
            <desc>Patch for landing.</desc>
            <filename>bug-205967-20200110124404.patch</filename>
            <type>text/plain</type>
            <size>46208</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0MjkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDkzYzYwMjhhY2YyMjYzNzQw
ZTBmZjYwZDYwYzc1MGZkNTA3NDZhY2YuLjJkZmZmM2QyZmRiY2ViNTIwZDE0NGU5ZjA5ODY5YjE1
N2I2NDEyNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzcgQEAKKzIwMjAtMDEtMDkgIEVyaWMgQ2Fy
bHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgW01lZGlhIGluIEdQVSBw
cm9jZXNzXSBFeHRlbmQgdGhlIEdQVSBwcm9jZXNzIHNhbmRib3ggdG8gYWxsb3cgYWNjZXNzIHRv
IGxvY2FsIGZpbGVzIHdoZW4gbmVjZXNzYXJ5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDU5NjcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU4NDI1
MDIwPgorCisgICAgICAgIFJldmlld2VkIGJ5IHlvdWVubiBmYWJsZXQuCisKKyAgICAgICAgTm8g
bmV3IHRlc3RzLCB1bi1za2lwcGVkIGV4aXN0aW5nIHRlc3RzIHRoYXQgcGFzcyBiZWNhdXNlIG9m
IHRoaXMgY2hhbmdlLgorICAgICAgICAKKyAgICAgICAgVGhlIEdQVSBwcm9jZXNzIHNhbmRib3gg
ZG9lcyBub3QgYWxsb3cgYWNjZXNzIHRvIGxvY2FsIGZpbGVzIHNvIGV4dGVuZCBpdCBiZWZvcmUg
CisgICAgICAgIGF0dGVtcHRpbmcgdG8gb3BlbiBhIGZpbGU6Ly8gdXJsLCBhbmQgcmV2b2tlIHRo
ZSBleHRlbnNpb24gd2hlbiB0aGUgZmlsZSBpcyBjbG9zZWQuCisKKyAgICAgICAgKiBHUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OmxvYWQpOgorICAgICAgICAqIEdQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuaDoKKyAgICAgICAg
KiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lm1lc3NhZ2Vz
LmluOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6OmludmFsaWRhdGUp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5Ojpsb2FkKToKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkdQ
VVByb2Nlc3NQcm94eTo6b3BlbkdQVVByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKyAg
ICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5oOgorICAgICAgICAoV2ViS2l0OjpHUFVQ
cm9jZXNzQ29ubmVjdGlvbjo6c2V0QXVkaXRUb2tlbik6CisgICAgICAgIChXZWJLaXQ6OkdQVVBy
b2Nlc3NDb25uZWN0aW9uOjphdWRpdFRva2VuIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbkluZm8uaDoKKyAgICAgICAgKFdlYktpdDo6R1BVUHJv
Y2Vzc0Nvbm5lY3Rpb25JbmZvOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpHUFVQ
cm9jZXNzQ29ubmVjdGlvbkluZm86OmRlY29kZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpwcmVwYXJlRm9yUGxheWJhY2spOgorICAgICAgICAoV2Vi
S2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6
bG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y2FuY2Vs
TG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cHJlcGFy
ZVRvUGxheSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cGxh
eSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cGF1c2UpOgor
ICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFByZXNlcnZlc1Bp
dGNoKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRWb2x1
bWVEb3VibGUpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNl
dE11dGVkKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRQ
cmVsb2FkKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRQ
cml2YXRlQnJvd3NpbmdNb2RlKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlOjpzZWVrKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
OjpzZWVrV2l0aFRvbGVyYW5jZSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZTo6cHJlcGFyZUZvclJlbmRlcmluZyk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZTo6c2V0U2l6ZSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZTo6c2V0VmlzaWJsZSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZTo6c2V0U2hvdWxkTWFpbnRhaW5Bc3BlY3RSYXRpbyk6CisgICAgICAgIChX
ZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUp
OgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFZpZGVvRnVs
bHNjcmVlbkdyYXZpdHkpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6OmFjY2VsZXJhdGVkUmVuZGVyaW5nU3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRTaG91bGREaXNhYmxlU2xlZXApOgorICAgICAg
ICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnJlcXVlc3RSZXNvdXJjZSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNSU1FVHlw
ZUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNSU1FVHlwZUNh
Y2hlOjpjYW5EZWNvZGVFeHRlbmRlZFR5cGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRp
YVBsYXllck1JTUVUeXBlQ2FjaGU6OnN1cHBvcnRzVHlwZUFuZENvZGVjcyk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTUlNRVR5cGVDYWNoZTo6aW5pdGlhbGl6ZUNhY2hlKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OmNyZWF0ZVJl
bW90ZU1lZGlhUGxheWVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyOjpkZWxldGVSZW1vdGVNZWRpYVBsYXllcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlcjo6Z2V0U3VwcG9ydGVkVHlwZXMpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6Om9yaWdpbnNJbk1lZGlhQ2FjaGUpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OmNsZWFyTWVkaWFDYWNoZSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6Y2xlYXJNZWRpYUNhY2hlRm9y
T3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6Z3B1
UHJvY2Vzc0Nvbm5lY3Rpb24gY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRp
YVBsYXllck1hbmFnZXI6OnBhcmVudFByb2Nlc3MgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmVuc3VyZUdQ
VVByb2Nlc3NDb25uZWN0aW9uKToKKwogMjAyMC0wMS0wOSAgTWVnYW4gR2FyZG5lciAgPG1lZ2Fu
X2dhcmRuZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFNldCB0aGUgdGl0bGUgZm9yIGltYWdlcyBz
byBpdCB3aWxsIGJlIGNvcnJlY3RseSBkaXNwbGF5ZWQgaW4gVUlDb250ZXh0TWVudXMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmNwcAppbmRleCAxZGYzNTNiYTU3ZTViZTY5NjA0
MjY0Njg1MmFmMzZmNDg1OGExOGZmLi41YWM3NDEzMjNiNDlmYWQ5NTNiZDY4ZGVlYjEyMjkwZDNj
YTk4MTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVUHJvY2Vzcy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3MuY3BwCkBAIC0zNSw2
ICszNSw3IEBACiAjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgogI2luY2x1
ZGUgIkdQVVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgi
CisjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1l
c3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2xNZXNzYWdlcy5oIgogI2luY2x1ZGUg
PFdlYkNvcmUvTG9nSW5pdGlhbGl6YXRpb24uaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9HUFVQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL0dQVVByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggM2ZjZGYxYmRmMTRhZTkyMGVkYWU2Yzk5
OTdmNTA2ZDkyMDBkNjZhZi4uZmJhNjdlZDNiMmZhNjBkZTU0MjgwMDNjNGMxMWU4YmJhZTg5Njg2
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3MubWVzc2Fn
ZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3MubWVzc2FnZXMu
aW4KQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxOS0yMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdl
clByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBs
YXllck1hbmFnZXJQcm94eS5jcHAKaW5kZXggOWI3MWVhNzYxNTY1YjQ1MTNlNDg5Yjg5OWE3OTVl
YWNiMGRmMDFiYy4uNDc5MzMwOTkwYzM4ZjA2Y2I4NjBjYzM4ZjUzMWNmMzBlMzBkMmVlZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVy
TWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3BwCkBAIC0yMDMsMTAgKzIwMywxMCBAQCB2b2lk
IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpwcmVwYXJlRm9yUGxheWJhY2soTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlSQogICAgICAgICBwbGF5ZXItPnByZXBhcmVGb3JQbGF5YmFjayhw
cml2YXRlTW9kZSwgcHJlbG9hZCwgcHJlc2VydmVzUGl0Y2gsIHByZXBhcmVGb3JSZW5kZXJpbmcp
OwogfQogCi12b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Ojpsb2FkKE1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQsIFVSTCYmIHVybCwgV2ViQ29yZTo6Q29udGVu
dFR5cGUmJiBjb250ZW50VHlwZSwgU3RyaW5nJiYga2V5U3lzdGVtLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFJlbW90ZU1lZGlhUGxheWVyQ29uZmlndXJhdGlvbiYmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OmxvYWQoTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZCwgVVJMJiYgdXJsLCBPcHRpb25hbDxTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGU+JiYgc2FuZGJveEV4dGVuc2lvbiwgV2ViQ29yZTo6Q29udGVudFR5
cGUmJiBjb250ZW50VHlwZSwgU3RyaW5nJiYga2V5U3lzdGVtLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFJlbW90ZU1lZGlhUGxheWVyQ29uZmlndXJhdGlvbiYmKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKICAgICBpZiAoYXV0byBwbGF5ZXIgPSBtX3Byb3hpZXMuZ2V0KGlkKSkKLSAgICAgICAg
cGxheWVyLT5sb2FkKFdURk1vdmUodXJsKSwgV1RGTW92ZShjb250ZW50VHlwZSksIFdURk1vdmUo
a2V5U3lzdGVtKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICBwbGF5ZXIt
PmxvYWQoV1RGTW92ZSh1cmwpLCBXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb24pLCBXVEZNb3ZlKGNv
bnRlbnRUeXBlKSwgV1RGTW92ZShrZXlTeXN0ZW0pLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CiB9CiAKIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OmNhbmNlbExvYWQo
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5o
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdl
clByb3h5LmgKaW5kZXggMDRmNmMwOGVlNWEwOWFjYWI1ZGI0MDNhYzY1OTRiNjllYzVlNzdmNi4u
ZDM3Y2YxOGFhMzI3OTI4YjQxZjJkMGE1ZjNjODBmMzBmZjFlMWYxZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVy
TWFuYWdlclByb3h5LmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgi
CiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllci5oIgogI2luY2x1
ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKICNp
bmNsdWRlIDxXZWJDb3JlL01lZGlhUGxheWVyLmg+CiAjaW5jbHVkZSA8d3RmL0xvZ2dlckhlbHBl
ci5oPgogCkBAIC04Miw3ICs4Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjbGVhck1lZGlhQ2Fj
aGVGb3JPcmlnaW5zKFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiYsIFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+
JiYpOwogICAgIHZvaWQgc3VwcG9ydHNLZXlTeXN0ZW0oV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVt
czo6TWVkaWFFbmdpbmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmJiwgY29uc3QgU3RyaW5nJiYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogCi0gICAgdm9pZCBsb2FkKE1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIsIFVSTCYmLCBXZWJDb3JlOjpDb250ZW50VHlw
ZSYmLCBTdHJpbmcmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZW1vdGVNZWRpYVBsYXllckNv
bmZpZ3VyYXRpb24mJik+JiYpOworICAgIHZvaWQgbG9hZChNZWRpYVBsYXllclByaXZhdGVSZW1v
dGVJZGVudGlmaWVyLCBVUkwmJiwgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiYm
LCBXZWJDb3JlOjpDb250ZW50VHlwZSYmLCBTdHJpbmcmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChSZW1vdGVNZWRpYVBsYXllckNvbmZpZ3VyYXRpb24mJik+JiYpOwogICAgIHZvaWQgcHJlcGFy
ZUZvclBsYXliYWNrKE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIsIGJvb2wgcHJp
dmF0ZU1vZGUsIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OlByZWxvYWQsIGJvb2wgcHJlc2Vy
dmVzUGl0Y2gsIGJvb2wgcHJlcGFyZUZvclJlbmRlcmluZyk7CiAgICAgdm9pZCBjYW5jZWxMb2Fk
KE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIpOwogICAgIHZvaWQgcHJlcGFyZVRv
UGxheShNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94
eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRp
YVBsYXllck1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgppbmRleCBlMTE2YjRlMTI2OTI0MThkNTVm
ODVkYmVlNDAyMDEzNDM0N2Q0YTVkLi5iMWUxNDIwYmE5YzExMDg5MmQ5ODhjNTY5YWYyMGU3ZWFj
NzRiOWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmlu
CkBAIC0zNyw3ICszNyw3IEBAIG1lc3NhZ2VzIC0+IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclBy
b3h5IE5vdFJlZkNvdW50ZWQgewogCiAgICAgUHJlcGFyZUZvclBsYXliYWNrKFdlYktpdDo6TWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZCwgYm9vbCBwcml2YXRlTW9kZSwgZW51
bTp1aW50OF90IFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OlByZWxvYWQgcHJlbG9hZCwgYm9v
bCBwcmVzZXJ2ZXNQaXRjaCwgYm9vbCBwcmVwYXJlRm9yUmVuZGVyaW5nKQogCi0gICAgTG9hZChX
ZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQsIFVSTCB1cmwsIFdl
YkNvcmU6OkNvbnRlbnRUeXBlIGNvbnRlbnRUeXBlLCBTdHJpbmcga2V5U3lzdGVtKSAtPiAoc3Ry
dWN0IFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJDb25maWd1cmF0aW9uIHBsYXllckNvbmZpZ3Vy
YXRpb24pIEFzeW5jCisgICAgTG9hZChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlk
ZW50aWZpZXIgaWQsIFVSTCB1cmwsIE9wdGlvbmFsPFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlPiBzYW5kYm94RXh0ZW5zaW9uLCBXZWJDb3JlOjpDb250ZW50VHlwZSBjb250ZW50VHlw
ZSwgU3RyaW5nIGtleVN5c3RlbSkgLT4gKHN0cnVjdCBXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVy
Q29uZmlndXJhdGlvbiBwbGF5ZXJDb25maWd1cmF0aW9uKSBBc3luYwogICAgIENhbmNlbExvYWQo
V2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkKQogCiAgICAgUHJl
cGFyZVRvUGxheShXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQ
bGF5ZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVk
aWFQbGF5ZXJQcm94eS5jcHAKaW5kZXggODI0MzBmZDZjMmJhZDc4YTc3NWE5YjMzYjM5NWI3Y2Zi
NDBiNjIzMS4uYTE0MTdhMjhhNjUwYjBkMmZlMWJjNWNhMzJjZGJjZDBjMGI5ZjUxNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBs
YXllclByb3h5LmNwcApAQCAtNjksNiArNjksMTAgQEAgdm9pZCBSZW1vdGVNZWRpYVBsYXllclBy
b3h5OjppbnZhbGlkYXRlKCkKIHsKICAgICBtX3VwZGF0ZUNhY2hlZFN0YXRlTWVzc2FnZVRpbWVy
LnN0b3AoKTsKICAgICBtX3BsYXllci0+aW52YWxpZGF0ZSgpOworICAgIGlmIChtX3NhbmRib3hF
eHRlbnNpb24pIHsKKyAgICAgICAgbV9zYW5kYm94RXh0ZW5zaW9uLT5yZXZva2UoKTsKKyAgICAg
ICAgbV9zYW5kYm94RXh0ZW5zaW9uID0gbnVsbHB0cjsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3Rl
TWVkaWFQbGF5ZXJQcm94eTo6Z2V0Q29uZmlndXJhdGlvbihSZW1vdGVNZWRpYVBsYXllckNvbmZp
Z3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCkBAIC04MiwxMSArODYsMTkgQEAgdm9pZCBSZW1vdGVN
ZWRpYVBsYXllclByb3h5OjpnZXRDb25maWd1cmF0aW9uKFJlbW90ZU1lZGlhUGxheWVyQ29uZmln
dXJhdGlvbiYgY28KICAgICBjb25maWd1cmF0aW9uLnNob3VsZElnbm9yZUludHJpbnNpY1NpemUg
PSBtX3BsYXllci0+c2hvdWxkSWdub3JlSW50cmluc2ljU2l6ZSgpOwogfQogCi12b2lkIFJlbW90
ZU1lZGlhUGxheWVyUHJveHk6OmxvYWQoY29uc3QgVVJMJiB1cmwsIGNvbnN0IENvbnRlbnRUeXBl
JiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoUmVtb3RlTWVkaWFQbGF5ZXJDb25maWd1cmF0aW9uJiYpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQordm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5Ojpsb2FkKGNvbnN0IFVSTCYgdXJsLCBP
cHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+JiYgc2FuZGJveEV4dGVuc2lvbkhhbmRs
ZSwgY29uc3QgQ29udGVudFR5cGUmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGtleVN5c3Rl
bSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZW1vdGVNZWRpYVBsYXllckNvbmZpZ3VyYXRpb24m
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgbV9wbGF5ZXItPmxvYWQodXJsLCBjb250
ZW50VHlwZSwga2V5U3lzdGVtKTsKLQogICAgIFJlbW90ZU1lZGlhUGxheWVyQ29uZmlndXJhdGlv
biBjb25maWd1cmF0aW9uOworCisgICAgaWYgKHNhbmRib3hFeHRlbnNpb25IYW5kbGUpIHsKKyAg
ICAgICAgbV9zYW5kYm94RXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKFdURk1v
dmUoc2FuZGJveEV4dGVuc2lvbkhhbmRsZS52YWx1ZSgpKSk7CisgICAgICAgIGlmIChtX3NhbmRi
b3hFeHRlbnNpb24pCisgICAgICAgICAgICBtX3NhbmRib3hFeHRlbnNpb24tPmNvbnN1bWUoKTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCJVbmFibGUgdG8gY3JlYXRl
IHNhbmRib3ggZXh0ZW5zaW9uIGZvciBtZWRpYSB1cmwuXG4iKTsKKyAgICB9CisKKyAgICBtX3Bs
YXllci0+bG9hZCh1cmwsIGNvbnRlbnRUeXBlLCBrZXlTeXN0ZW0pOwogICAgIGdldENvbmZpZ3Vy
YXRpb24oY29uZmlndXJhdGlvbik7CiAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb25m
aWd1cmF0aW9uKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaAppbmRleCA1ZTI3NjFiMDFjNTQxZDJkNmNkMzRi
NjI0YzM2ZjM5MDRiOGY0ZTNjLi5mY2MzNjY0YzI0NGUzMjhkNmRjYWRmYWRjMTk4ODJlMzI2M2Zl
YzJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVk
aWFQbGF5ZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVNZWRpYVBsYXllclByb3h5LmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJSZW1vdGVN
ZWRpYVBsYXllclByb3h5Q29uZmlndXJhdGlvbi5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxh
eWVyU3RhdGUuaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVJlc291cmNlSWRlbnRpZmllci5oIgor
I2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQbGF5ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Bs
YXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5oPgpAQCAtNjAsNyArNjEsNyBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIHByZXBhcmVGb3JQbGF5YmFjayhib29sIHByaXZhdGVNb2RlLCBXZWJDb3JlOjpN
ZWRpYVBsYXllckVudW1zOjpQcmVsb2FkLCBib29sIHByZXNlcnZlc1BpdGNoLCBib29sIHByZXBh
cmVGb3JSZW5kZXJpbmcpOwogCi0gICAgdm9pZCBsb2FkKGNvbnN0IFVSTCYsIGNvbnN0IFdlYkNv
cmU6OkNvbnRlbnRUeXBlJiwgY29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChS
ZW1vdGVNZWRpYVBsYXllckNvbmZpZ3VyYXRpb24mJik+JiYpOworICAgIHZvaWQgbG9hZChjb25z
dCBVUkwmLCBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+JiYsIGNvbnN0IFdlYkNv
cmU6OkNvbnRlbnRUeXBlJiwgY29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChS
ZW1vdGVNZWRpYVBsYXllckNvbmZpZ3VyYXRpb24mJik+JiYpOwogICAgIHZvaWQgY2FuY2VsTG9h
ZCgpOwogCiAgICAgdm9pZCBwcmVwYXJlVG9QbGF5KCk7CkBAIC0xODYsNiArMTg3LDcgQEAgcHJp
dmF0ZToKICNlbmRpZgogCiAgICAgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBt
X2lkOworICAgIFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiBtX3NhbmRib3hFeHRlbnNpb247CiAg
ICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV93ZWJQcm9jZXNzQ29ubmVjdGlvbjsKICAgICBSZWZQ
dHI8V2ViQ29yZTo6TWVkaWFQbGF5ZXI+IG1fcGxheWVyOwogICAgIFJlbW90ZU1lZGlhUGxheWVy
TWFuYWdlclByb3h5JiBtX21hbmFnZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQ
VS9HUFVQcm9jZXNzUHJveHkuY3BwCmluZGV4IGYwY2IxNzkxNDkyZmZmZDhiMzE2MjI3ZmM0YmI5
ZWY4ZWQwNWJhMTkuLmQ4MDg2ZGY0ZDlhNjE0NjNlZmY5ZThkODE4OTI1NDlhNTE5MzJmOTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuY3BwCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ3
LDcgKzQ3LDcgQEAKICNpbmNsdWRlIDx3dGYvc3BpL2Rhcndpbi9YUENTUEkuaD4KICNlbmRpZgog
Ci0jZGVmaW5lIE1FU1NBR0VfQ0hFQ0soYXNzZXJ0aW9uKSBNRVNTQUdFX0NIRUNLX0JBU0UoYXNz
ZXJ0aW9uLCBjb25uZWN0aW9uKCkpCisjZGVmaW5lIE1FU1NBR0VfQ0hFQ0soYXNzZXJ0aW9uKSBN
RVNTQUdFX0NIRUNLX0JBU0UoYXNzZXJ0aW9uLCB0aGlzLT5jb25uZWN0aW9uKCkpCiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC0xMjUsNyArMTI1LDkg
QEAgdm9pZCBHUFVQcm9jZXNzUHJveHk6OmdldEdQVVByb2Nlc3NDb25uZWN0aW9uKFdlYlByb2Nl
c3NQcm94eSYgd2ViUHJvY2Vzc1Byb3h5LAogCiB2b2lkIEdQVVByb2Nlc3NQcm94eTo6b3BlbkdQ
VVByb2Nlc3NDb25uZWN0aW9uKENvbm5lY3Rpb25SZXF1ZXN0SWRlbnRpZmllciBjb25uZWN0aW9u
UmVxdWVzdElkZW50aWZpZXIsIFdlYlByb2Nlc3NQcm94eSYgd2ViUHJvY2Vzc1Byb3h5KQogewot
ICAgIGNvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpHUFVQcm9jZXNz
OjpDcmVhdGVHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzIHsgd2ViUHJvY2Vzc1Byb3h5LmNvcmVQ
cm9jZXNzSWRlbnRpZmllcigpLCB3ZWJQcm9jZXNzUHJveHkuc2Vzc2lvbklEKCkgfSwgW3RoaXMs
IHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIHdlYlByb2Nlc3NQcm94eSA9IG1ha2VXZWFr
UHRyKHdlYlByb2Nlc3NQcm94eSksIGNvbm5lY3Rpb25SZXF1ZXN0SWRlbnRpZmllcl0oYXV0byYm
IGNvbm5lY3Rpb25JZGVudGlmaWVyKSBtdXRhYmxlIHsKKyAgICBhdXRvJiBjb25uZWN0aW9uID0g
KnRoaXMtPmNvbm5lY3Rpb24oKTsKKworICAgIGNvbm5lY3Rpb24uc2VuZFdpdGhBc3luY1JlcGx5
KE1lc3NhZ2VzOjpHUFVQcm9jZXNzOjpDcmVhdGVHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzIHsg
d2ViUHJvY2Vzc1Byb3h5LmNvcmVQcm9jZXNzSWRlbnRpZmllcigpLCB3ZWJQcm9jZXNzUHJveHku
c2Vzc2lvbklEKCkgfSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIHdlYlBy
b2Nlc3NQcm94eSA9IG1ha2VXZWFrUHRyKHdlYlByb2Nlc3NQcm94eSksIGNvbm5lY3Rpb25SZXF1
ZXN0SWRlbnRpZmllcl0oYXV0byYmIGNvbm5lY3Rpb25JZGVudGlmaWVyKSBtdXRhYmxlIHsKICAg
ICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMTQyLDcgKzE0
NCw3IEBAIHZvaWQgR1BVUHJvY2Vzc1Byb3h5OjpvcGVuR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oQ29u
bmVjdGlvblJlcXVlc3RJZGVudGlmaWVyIGNvbm5lCiAgICAgICAgIHJlcXVlc3QucmVwbHkoR1BV
UHJvY2Vzc0Nvbm5lY3Rpb25JbmZvIHsgV1RGTW92ZSgqY29ubmVjdGlvbklkZW50aWZpZXIpIH0p
OwogI2VsaWYgT1MoREFSV0lOKQogICAgICAgICBNRVNTQUdFX0NIRUNLKE1BQ0hfUE9SVF9WQUxJ
RChjb25uZWN0aW9uSWRlbnRpZmllci0+cG9ydCgpKSk7Ci0gICAgICAgIHJlcXVlc3QucmVwbHko
R1BVUHJvY2Vzc0Nvbm5lY3Rpb25JbmZvIHsgSVBDOjpBdHRhY2htZW50IHsgY29ubmVjdGlvbklk
ZW50aWZpZXItPnBvcnQoKSwgTUFDSF9NU0dfVFlQRV9NT1ZFX1NFTkQgfSB9KTsKKyAgICAgICAg
cmVxdWVzdC5yZXBseShHUFVQcm9jZXNzQ29ubmVjdGlvbkluZm8geyBJUEM6OkF0dGFjaG1lbnQg
eyBjb25uZWN0aW9uSWRlbnRpZmllci0+cG9ydCgpLCBNQUNIX01TR19UWVBFX01PVkVfU0VORCB9
LCB0aGlzLT5jb25uZWN0aW9uKCktPmdldEF1ZGl0VG9rZW4oKSB9KTsKICNlbHNlCiAgICAgICAg
IG5vdEltcGxlbWVudGVkKCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQ
VS9HUFVQcm9jZXNzUHJveHkuaAppbmRleCBkYTY0Y2ZlYWUwYjA1M2Q2MjZiNzVkOWIyN2I2OWYx
NmM2ODMwZDQ1Li45YmQ4NDk5NmEzNzU1YWQ2MTAwMzZiNDFlYmQzNzZkYjdlMjZhZTRlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5oCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDExICsz
Miw5IEBACiAjaW5jbHVkZSAiUHJvY2Vzc0xhdW5jaGVyLmgiCiAjaW5jbHVkZSAiUHJvY2Vzc1Ro
cm90dGxlci5oIgogI2luY2x1ZGUgIlByb2Nlc3NUaHJvdHRsZXJDbGllbnQuaCIKLSNpbmNsdWRl
ICJUcmFuc2FjdGlvbklELmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5SWRlbnRpZmllci5oIgog
I2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eU1lc3NhZ2VzUmVwbGllcy5oIgogI2luY2x1ZGUgPG1l
bW9yeT4KLSNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAg
LTk2LDcgKzk0LDYgQEAgcHJpdmF0ZToKIAogICAgIFByb2Nlc3NUaHJvdHRsZXIgbV90aHJvdHRs
ZXI7CiAgICAgUHJvY2Vzc1Rocm90dGxlcjo6QWN0aXZpdHlWYXJpYW50IG1fYWN0aXZpdHlGcm9t
V2ViUHJvY2Vzc2VzOwotCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICAgICBib29sIG1fdXNl
TW9ja0NhcHR1cmVEZXZpY2VzIHsgZmFsc2UgfTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggYzQ0YmY3YzMyZTk5MzEzOWMxMDNjNDdl
NTE2NDI0ZDhlZGM4NjU2Zi4uMTFhZTE5Mzg5M2VkYTE3Zjg3YTIyYTFlYjk3YWIxZDliOTRhNDg2
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMC0yMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAppbmRleCA5NjVmYjFjZTAxN2Ix
OWVjNDhlZThmNGRiNDAxNmQ2YjkxOWI0MjNkLi5kOTY4NmExNTE0MTExYzhlZThjYWY2YTRkYzk3
YjE3NzE1MmJmMWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
aApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZS5jcHAKaW5kZXggMTk5NTEwZTQyZWQxZTQ4NDEwMTAwMDRkNDI0YTYwODU0
ODE0MmZmZC4uNGY4MGNmNTZlYzZhYmRmOTMyNDgzYzQwZWM4ODNiZjhjZDU3NmYwNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9y
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURh
dGFTdG9yZS5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJBUElXZWJzaXRlRGF0YVJl
Y29yZC5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0b3JNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiRGV2
aWNlSWRIYXNoU2FsdFN0b3JhZ2UuaCIKKyNpbmNsdWRlICJHUFVQcm9jZXNzUHJveHkuaCIKICNp
bmNsdWRlICJNb2NrQXV0aGVudGljYXRvck1hbmFnZXIuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJv
Y2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzLmgi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25u
ZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0
aW9uLmgKaW5kZXggMzFjNjEwNDY2OWYyZjAyZmZhNDQwZmViODgwOTI2Yzc0YWUyNmFjZi4uYThh
ZDRmZWU4NmIyNjU5YjRhZmZiN2M0ODRkYTE4MWMzYmVmMjdkMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaApAQCAtNDcsNiAr
NDcsMTEgQEAgcHVibGljOgogICAgIAogICAgIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbigp
IHsgcmV0dXJuIG1fY29ubmVjdGlvbi5nZXQoKTsgfQogCisjaWYgSEFWRShBVURJVF9UT0tFTikK
KyAgICB2b2lkIHNldEF1ZGl0VG9rZW4oT3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4gYXVkaXRUb2tl
bikgeyBtX2F1ZGl0VG9rZW4gPSBhdWRpdFRva2VuOyB9CisgICAgT3B0aW9uYWw8YXVkaXRfdG9r
ZW5fdD4gYXVkaXRUb2tlbigpIGNvbnN0IHsgcmV0dXJuIG1fYXVkaXRUb2tlbjsgfQorI2VuZGlm
CisKIHByaXZhdGU6CiAgICAgR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uOjpJ
ZGVudGlmaWVyKTsKIApAQCAtNTcsNiArNjIsMTAgQEAgcHJpdmF0ZToKIAogICAgIC8vIFRoZSBj
b25uZWN0aW9uIGZyb20gdGhlIHdlYiBwcm9jZXNzIHRvIHRoZSBHUFUgcHJvY2Vzcy4KICAgICBS
ZWY8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CisKKyNpZiBIQVZFKEFVRElUX1RPS0VO
KQorICAgIE9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+IG1fYXVkaXRUb2tlbjsKKyNlbmRpZgogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uSW5mby5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbkluZm8uaAppbmRleCAxMGE5MDY1ODM2NGZk
ODYzZDdkZmExNjJiMzQ2ODNmMDMyZGU5NzA5Li4xYWQ3MDU1Zjc1MTU5MWI0MDhhMzFhM2IwYzkx
OWQ5NTUzNDg3YmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQ
VVByb2Nlc3NDb25uZWN0aW9uSW5mby5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb25JbmZvLmgKQEAgLTMxLDYgKzMxLDkgQEAgbmFtZXNwYWNl
IFdlYktpdCB7CiAKIHN0cnVjdCBHUFVQcm9jZXNzQ29ubmVjdGlvbkluZm8gewogICAgIElQQzo6
QXR0YWNobWVudCBjb25uZWN0aW9uOworI2lmIEhBVkUoQVVESVRfVE9LRU4pCisgICAgT3B0aW9u
YWw8YXVkaXRfdG9rZW5fdD4gYXVkaXRUb2tlbjsKKyNlbmRpZgogCiAgICAgSVBDOjpDb25uZWN0
aW9uOjpJZGVudGlmaWVyIGlkZW50aWZpZXIoKQogICAgIHsKQEAgLTYwLDEyICs2MywxOSBAQCBz
dHJ1Y3QgR1BVUHJvY2Vzc0Nvbm5lY3Rpb25JbmZvIHsKICAgICB2b2lkIGVuY29kZShJUEM6OkVu
Y29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgewogICAgICAgICBlbmNvZGVyIDw8IGNvbm5lY3Rp
b247CisjaWYgSEFWRShBVURJVF9UT0tFTikKKyAgICAgICAgZW5jb2RlciA8PCBhdWRpdFRva2Vu
OworI2VuZGlmCiAgICAgfQogICAgIAogICAgIHN0YXRpYyBib29sIGRlY29kZShJUEM6OkRlY29k
ZXImIGRlY29kZXIsIEdQVVByb2Nlc3NDb25uZWN0aW9uSW5mbyYgaW5mbykKICAgICB7CiAgICAg
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaW5mby5jb25uZWN0aW9uKSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyNpZiBIQVZFKEFVRElUX1RPS0VOKQorICAgICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKGluZm8uYXVkaXRUb2tlbikpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5k
aWYKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlLmNwcAppbmRleCAxNjRkY2I5MWZlZGU0NGY1ZWY5YTFhYTkxOTZmMGZiNzZkYWE0NWIwLi5j
Yzk4NTczMTQzMTM5YzBhNTM1Mzk5Y2RiYWJjMmZhMjdmYTQ5OTY0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclBy
aXZhdGVSZW1vdGUuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkt
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTMwLDcgKzMwLDkgQEAKIAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNp
bmNsdWRlICJSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVk
ZSAiU2FuZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5o
IgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlIDxXZWJDb3JlL01lZGlhUGxheWVy
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvUGxhdGZvcm1MYXllci5oPgpAQCAtODQsMTIgKzg2LDM4IEBAIE1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZTo6fk1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZSgpCiAKIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlOjpwcmVwYXJlRm9yUGxheWJhY2soYm9vbCBwcml2YXRlTW9kZSwgTWVkaWFQ
bGF5ZXI6OlByZWxvYWQgcHJlbG9hZCwgYm9vbCBwcmVzZXJ2ZXNQaXRjaCwgYm9vbCBwcmVwYXJl
KQogewotICAgIG1fbWFuYWdlci5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6
OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpQcmVwYXJlRm9yUGxheWJhY2sobV9pZCwg
cHJpdmF0ZU1vZGUsIHByZWxvYWQsIHByZXNlcnZlc1BpdGNoLCBwcmVwYXJlKSwgMCk7CisgICAg
bV9tYW5hZ2VyLmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpQcmVwYXJlRm9yUGxheWJhY2sobV9p
ZCwgcHJpdmF0ZU1vZGUsIHByZWxvYWQsIHByZXNlcnZlc1BpdGNoLCBwcmVwYXJlKSwgMCk7CiB9
CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6OmxvYWQoY29uc3QgVVJMJiB1cmwsIGNvbnN0IENvbnRlbnRUeXBlJiBjb250ZW50VHlwZSwg
Y29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pCiB7Ci0gICAgbV9tYW5hZ2VyLmdwdVByb2Nlc3NDb25u
ZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1h
bmFnZXJQcm94eTo6TG9hZChtX2lkLCB1cmwsIGNvbnRlbnRUeXBlLCBrZXlTeXN0ZW0pLCBbd2Vh
a1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldKGF1dG8mJiBjb25maWd1cmF0aW9uKSB7CisgICAg
YXV0byYgY29ubmVjdGlvbiA9IG1fbWFuYWdlci5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5l
Y3Rpb24oKTsKKyAgICBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IHNhbmRib3hF
eHRlbnNpb25IYW5kbGU7CisgICAgaWYgKHVybC5pc0xvY2FsRmlsZSgpKSB7CisgICAgICAgIFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZSBoYW5kbGU7CisgICAgICAgIGF1dG8gZmlsZVN5c3RlbVBh
dGggPSB1cmwuZmlsZVN5c3RlbVBhdGgoKTsKKyAgICAgICAgYm9vbCBjcmVhdGVkRXh0ZW5zaW9u
ID0gZmFsc2U7CisKKyNpZiBIQVZFKFNBTkRCT1hfSVNTVUVfUkVBRF9FWFRFTlNJT05fVE9fUFJP
Q0VTU19CWV9BVURJVF9UT0tFTikKKyAgICAgICAgYXV0byBhdWRpdFRva2VuID0gbV9tYW5hZ2Vy
LmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuYXVkaXRUb2tlbigpOworICAgICAgICBBU1NFUlQoYXVk
aXRUb2tlbik7CisgICAgICAgIGlmIChhdWRpdFRva2VuKQorICAgICAgICAgICAgY3JlYXRlZEV4
dGVuc2lvbiA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRCeUF1ZGl0VG9r
ZW4oZmlsZVN5c3RlbVBhdGgsIGF1ZGl0VG9rZW4udmFsdWUoKSwgaGFuZGxlKTsKKyAgICAgICAg
ZWxzZQorI2VuZGlmCisgICAgICAgIGNyZWF0ZWRFeHRlbnNpb24gPSBTYW5kYm94RXh0ZW5zaW9u
OjpjcmVhdGVIYW5kbGUoZmlsZVN5c3RlbVBhdGgsIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJl
YWRPbmx5LCBoYW5kbGUpOworCisgICAgICAgIGlmICghY3JlYXRlZEV4dGVuc2lvbikgeworICAg
ICAgICAgICAgV1RGTG9nQWx3YXlzKCJVbmFibGUgdG8gY3JlYXRlIHNhbmRib3ggZXh0ZW5zaW9u
IGhhbmRsZSBmb3IgR1BVUHJvY2VzcyB1cmwuXG4iKTsKKyAgICAgICAgICAgIG1fY2FjaGVkU3Rh
dGUubmV0d29ya1N0YXRlID0gTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZTo6Rm9ybWF0RXJyb3I7
CisgICAgICAgICAgICBtX3BsYXllci0+bmV0d29ya1N0YXRlQ2hhbmdlZCgpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSA9
IFdURk1vdmUoaGFuZGxlKTsKKyAgICB9CisKKyAgICBjb25uZWN0aW9uLnNlbmRXaXRoQXN5bmNS
ZXBseShNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OkxvYWQobV9pZCwg
dXJsLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBjb250ZW50VHlwZSwga2V5U3lzdGVtKSwgW3dl
YWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXShhdXRvJiYgY29uZmlndXJhdGlvbikgewogICAg
ICAgICBpZiAod2Vha1RoaXMpCiAgICAgICAgICAgICB3ZWFrVGhpcy0+bV9jb25maWd1cmF0aW9u
ID0gY29uZmlndXJhdGlvbjsKICAgICB9KTsKQEAgLTk3LDQ5ICsxMjUsNDkgQEAgdm9pZCBNZWRp
YVBsYXllclByaXZhdGVSZW1vdGU6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bG9hZChjb25z
dCBVUkwmIHVybCwgY28KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNhbmNlbExv
YWQoKQogewotICAgIG1fbWFuYWdlci5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLnNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpDYW5jZWxMb2FkKG1faWQpLCAwKTsK
KyAgICBtX21hbmFnZXIuZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChN
ZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OkNhbmNlbExvYWQobV9pZCks
IDApOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cHJlcGFyZVRvUGxheSgp
CiB7Ci0gICAgbV9tYW5hZ2VyLmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OlByZXBhcmVUb1BsYXkobV9pZCksIDApOwor
ICAgIG1fbWFuYWdlci5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1l
c3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6UHJlcGFyZVRvUGxheShtX2lk
KSwgMCk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpwbGF5KCkKIHsKICAg
ICBtX2NhY2hlZFN0YXRlLnBhdXNlZCA9IGZhbHNlOwotICAgIG1fbWFuYWdlci5ncHVQcm9jZXNz
Q29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5
OjpQbGF5KG1faWQpLCAwKTsKKyAgICBtX21hbmFnZXIuZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5j
b25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6
OlBsYXkobV9pZCksIDApOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cGF1
c2UoKQogewogICAgIG1fY2FjaGVkU3RhdGUucGF1c2VkID0gdHJ1ZTsKLSAgICBtX21hbmFnZXIu
Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1h
bmFnZXJQcm94eTo6UGF1c2UobV9pZCksIDApOworICAgIG1fbWFuYWdlci5ncHVQcm9jZXNzQ29u
bmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1h
bmFnZXJQcm94eTo6UGF1c2UobV9pZCksIDApOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZTo6c2V0UHJlc2VydmVzUGl0Y2goYm9vbCBwcmVzZXJ2ZXNQaXRjaCkKIHsKLSAgICBt
X21hbmFnZXIuZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRp
YVBsYXllck1hbmFnZXJQcm94eTo6U2V0UHJlc2VydmVzUGl0Y2gobV9pZCwgcHJlc2VydmVzUGl0
Y2gpLCAwKTsKKyAgICBtX21hbmFnZXIuZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9u
KCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OlNldFByZXNl
cnZlc1BpdGNoKG1faWQsIHByZXNlcnZlc1BpdGNoKSwgMCk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjpzZXRWb2x1bWVEb3VibGUoZG91YmxlIHZvbHVtZSkKIHsKLSAgICBt
X21hbmFnZXIuZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRp
YVBsYXllck1hbmFnZXJQcm94eTo6U2V0Vm9sdW1lKG1faWQsIHZvbHVtZSksIDApOworICAgIG1f
bWFuYWdlci5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6U2V0Vm9sdW1lKG1faWQsIHZvbHVtZSks
IDApOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0TXV0ZWQoYm9vbCBt
dXRlZCkKIHsKLSAgICBtX21hbmFnZXIuZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5zZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6U2V0TXV0ZWQobV9pZCwgbXV0ZWQp
LCAwKTsKKyAgICBtX21hbmFnZXIuZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCku
c2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OlNldE11dGVkKG1f
aWQsIG11dGVkKSwgMCk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRQ
cmVsb2FkKE1lZGlhUGxheWVyOjpQcmVsb2FkIHByZWxvYWQpCiB7Ci0gICAgbV9tYW5hZ2VyLmdw
dVByb2Nlc3NDb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyUHJveHk6OlNldFByZWxvYWQobV9pZCwgcHJlbG9hZCksIDApOworICAgIG1fbWFuYWdlci5n
cHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXJQcm94eTo6U2V0UHJlbG9hZChtX2lkLCBwcmVsb2FkKSwgMCk7CiB9
CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRQcml2YXRlQnJvd3NpbmdNb2Rl
KGJvb2wgcHJpdmF0ZU1vZGUpCiB7Ci0gICAgbV9tYW5hZ2VyLmdwdVByb2Nlc3NDb25uZWN0aW9u
KCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OlNldFByaXZh
dGVCcm93c2luZ01vZGUobV9pZCwgcHJpdmF0ZU1vZGUpLCAwKTsKKyAgICBtX21hbmFnZXIuZ3B1
UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyUHJveHk6OlNldFByaXZhdGVCcm93c2luZ01vZGUobV9pZCwgcHJpdmF0
ZU1vZGUpLCAwKTsKIH0KIAogTWVkaWFUaW1lIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y3Vy
cmVudE1lZGlhVGltZSgpIGNvbnN0CkBAIC0xNTAsMTMgKzE3OCwxMyBAQCBNZWRpYVRpbWUgTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjdXJyZW50TWVkaWFUaW1lKCkgY29uc3QKIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZWVrKGNvbnN0IE1lZGlhVGltZSYgdGltZSkKIHsKICAg
ICBtX3NlZWtpbmcgPSB0cnVlOwotICAgIG1fbWFuYWdlci5ncHVQcm9jZXNzQ29ubmVjdGlvbigp
LnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpTZWVrKG1faWQs
IHRpbWUpLCAwKTsKKyAgICBtX21hbmFnZXIuZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0
aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OlNlZWso
bV9pZCwgdGltZSksIDApOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2Vl
a1dpdGhUb2xlcmFuY2UoY29uc3QgTWVkaWFUaW1lJiB0aW1lLCBjb25zdCBNZWRpYVRpbWUmIG5l
Z2F0aXZlVG9sZXJhbmNlLCBjb25zdCBNZWRpYVRpbWUmIHBvc2l0aXZlVG9sZXJhbmNlKQogewog
ICAgIG1fc2Vla2luZyA9IHRydWU7Ci0gICAgbV9tYW5hZ2VyLmdwdVByb2Nlc3NDb25uZWN0aW9u
KCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OlNlZWtXaXRo
VG9sZXJhbmNlKG1faWQsIHRpbWUsIG5lZ2F0aXZlVG9sZXJhbmNlLCBwb3NpdGl2ZVRvbGVyYW5j
ZSksIDApOworICAgIG1fbWFuYWdlci5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24o
KS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6U2Vla1dpdGhU
b2xlcmFuY2UobV9pZCwgdGltZSwgbmVnYXRpdmVUb2xlcmFuY2UsIHBvc2l0aXZlVG9sZXJhbmNl
KSwgMCk7CiB9CiAKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpkaWRMb2FkaW5nUHJv
Z3Jlc3MoKSBjb25zdApAQCAtMzEzLDQyICszNDEsNDIgQEAgYm9vbCBNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6OnNob3VsZElnbm9yZUludHJpbnNpY1NpemUoKQogCiB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZTo6cHJlcGFyZUZvclJlbmRlcmluZygpCiB7Ci0gICAgbV9tYW5hZ2VyLmdw
dVByb2Nlc3NDb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyUHJveHk6OlByZXBhcmVGb3JSZW5kZXJpbmcobV9pZCksIDApOworICAgIG1fbWFuYWdlci5n
cHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXJQcm94eTo6UHJlcGFyZUZvclJlbmRlcmluZyhtX2lkKSwgMCk7CiB9
CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRTaXplKGNvbnN0IFdlYkNvcmU6
OkludFNpemUmIHNpemUpCiB7Ci0gICAgbV9tYW5hZ2VyLmdwdVByb2Nlc3NDb25uZWN0aW9uKCku
c2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OlNldFNpemUobV9p
ZCwgc2l6ZSksIDApOworICAgIG1fbWFuYWdlci5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5l
Y3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6U2V0
U2l6ZShtX2lkLCBzaXplKSwgMCk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
OjpzZXRWaXNpYmxlKGJvb2wgdmlzaWJsZSkKIHsKLSAgICBtX21hbmFnZXIuZ3B1UHJvY2Vzc0Nv
bm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6
U2V0VmlzaWJsZShtX2lkLCB2aXNpYmxlKSwgMCk7CisgICAgbV9tYW5hZ2VyLmdwdVByb2Nlc3ND
b25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVy
TWFuYWdlclByb3h5OjpTZXRWaXNpYmxlKG1faWQsIHZpc2libGUpLCAwKTsKIH0KIAogdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFNob3VsZE1haW50YWluQXNwZWN0UmF0aW8oYm9v
bCBtYWludGFpblJhdGlvKQogewotICAgIG1fbWFuYWdlci5ncHVQcm9jZXNzQ29ubmVjdGlvbigp
LnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpTZXRTaG91bGRN
YWludGFpbkFzcGVjdFJhdGlvKG1faWQsIG1haW50YWluUmF0aW8pLCAwKTsKKyAgICBtX21hbmFn
ZXIuZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OlNldFNob3VsZE1haW50YWluQXNwZWN0UmF0aW8o
bV9pZCwgbWFpbnRhaW5SYXRpbyksIDApOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZTo6c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoV2ViQ29yZTo6RmxvYXRSZWN0IHJlY3QpCiB7
Ci0gICAgbV9tYW5hZ2VyLmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OlNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKG1faWQs
IHJlY3QpLCAwKTsKKyAgICBtX21hbmFnZXIuZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0
aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OlNldFZp
ZGVvRnVsbHNjcmVlbkZyYW1lKG1faWQsIHJlY3QpLCAwKTsKIH0KIAogdm9pZCBNZWRpYVBsYXll
clByaXZhdGVSZW1vdGU6OnNldFZpZGVvRnVsbHNjcmVlbkdyYXZpdHkoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJFbnVtczo6VmlkZW9HcmF2aXR5IGdyYXZpdHkpCiB7Ci0gICAgbV9tYW5hZ2VyLmdwdVBy
b2Nlc3NDb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
UHJveHk6OlNldFZpZGVvRnVsbHNjcmVlbkdyYXZpdHkobV9pZCwgZ3Jhdml0eSksIDApOworICAg
IG1fbWFuYWdlci5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6U2V0VmlkZW9GdWxsc2NyZWVuR3Jh
dml0eShtX2lkLCBncmF2aXR5KSwgMCk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlOjphY2NlbGVyYXRlZFJlbmRlcmluZ1N0YXRlQ2hhbmdlZCgpCiB7Ci0gICAgbV9tYW5hZ2Vy
LmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyUHJveHk6OkFjY2VsZXJhdGVkUmVuZGVyaW5nU3RhdGVDaGFuZ2VkKG1faWQsIG1fcGxh
eWVyLT5zdXBwb3J0c0FjY2VsZXJhdGVkUmVuZGVyaW5nKCkpLCAwKTsKKyAgICBtX21hbmFnZXIu
Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OkFjY2VsZXJhdGVkUmVuZGVyaW5nU3RhdGVDaGFuZ2Vk
KG1faWQsIG1fcGxheWVyLT5zdXBwb3J0c0FjY2VsZXJhdGVkUmVuZGVyaW5nKCkpLCAwKTsKIH0K
IAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFNob3VsZERpc2FibGVTbGVlcChi
b29sIGRpc2FibGUpCiB7Ci0gICAgbV9tYW5hZ2VyLmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuc2Vu
ZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OlNldFNob3VsZERpc2Fi
bGVTbGVlcChtX2lkLCBkaXNhYmxlKSwgMCk7CisgICAgbV9tYW5hZ2VyLmdwdVByb2Nlc3NDb25u
ZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFu
YWdlclByb3h5OjpTZXRTaG91bGREaXNhYmxlU2xlZXAobV9pZCwgZGlzYWJsZSksIDApOwogfQog
CiBGbG9hdFNpemUgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpuYXR1cmFsU2l6ZSgpIGNvbnN0
CkBAIC04MTMsNyArODQxLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnJlcXVl
c3RSZXNvdXJjZShSZW1vdGVNZWRpYVJlc291cmNlSWRlbnRpZmllciByZW0KICAgICBBU1NFUlQo
IW1fbWVkaWFSZXNvdXJjZXMuY29udGFpbnMocmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIp
KTsKICAgICBhdXRvIHJlc291cmNlID0gbV9tZWRpYVJlc291cmNlTG9hZGVyLT5yZXF1ZXN0UmVz
b3VyY2UoV1RGTW92ZShyZXF1ZXN0KSwgb3B0aW9ucyk7CiAgICAgLy8gUGxhdGZvcm1NZWRpYVJl
c291cmNlIG93bnMgdGhlIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUNsaWVudAotICAgIHJlc291cmNl
LT5zZXRDbGllbnQobWFrZVVuaXF1ZTxSZW1vdGVNZWRpYVJlc291cmNlUHJveHk+KG1fbWFuYWdl
ci5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLCAqcmVzb3VyY2UsIHJlbW90ZU1lZGlhUmVzb3VyY2VJ
ZGVudGlmaWVyKSk7CisgICAgcmVzb3VyY2UtPnNldENsaWVudChtYWtlVW5pcXVlPFJlbW90ZU1l
ZGlhUmVzb3VyY2VQcm94eT4obV9tYW5hZ2VyLmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVj
dGlvbigpLCAqcmVzb3VyY2UsIHJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyKSk7CiAgICAg
bV9tZWRpYVJlc291cmNlcy5hZGQocmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIsIFdURk1v
dmUocmVzb3VyY2UpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmgKaW5kZXggOGQzMzU4
N2I1MDE2MTI3ZDkxOTQ1M2NhNjZlMzhiNGViNWQ4YTk3Yi4uNDE5NzVjZjU5NDg5NTA5NGIwNjY0
NDRhM2E0ZTEyY2Q0YWQyZmFmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNSU1F
VHlwZUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
TWVkaWFQbGF5ZXJNSU1FVHlwZUNhY2hlLmNwcAppbmRleCA2ZDU3ZmMyMTA3MmY1NTNlNDcwYTE3
MmNjYWYzNjljYzAyZjM3NDU2Li5mZTk0NTViYzY3MjVmODNhOTBjZTRiZmFhYWExZjlkMWIwNjlm
ZTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZU1lZGlhUGxheWVyTUlNRVR5cGVDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1JTUVUeXBlQ2FjaGUuY3BwCkBAIC04Nyw3
ICs4Nyw3IEBAIGJvb2wgUmVtb3RlTWVkaWFQbGF5ZXJNSU1FVHlwZUNhY2hlOjppc1Vuc3VwcG9y
dGVkQ29udGFpbmVyVHlwZShjb25zdCBTdHJpbmcmIHR5CiBib29sIFJlbW90ZU1lZGlhUGxheWVy
TUlNRVR5cGVDYWNoZTo6Y2FuRGVjb2RlRXh0ZW5kZWRUeXBlKGNvbnN0IFdlYkNvcmU6OkNvbnRl
bnRUeXBlJiB0eXBlKQogewogICAgIGJvb2wgcmVzdWx0OwotICAgIGlmICghbV9tYW5hZ2VyLmdw
dVByb2Nlc3NDb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVy
TWFuYWdlclByb3h5OjpDYW5EZWNvZGVFeHRlbmRlZFR5cGUobV9lbmdpbmVJZGVudGlmaWVyLCB0
eXBlLnJhdygpKSwgTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpDYW5E
ZWNvZGVFeHRlbmRlZFR5cGU6OlJlcGx5KHJlc3VsdCksIDApKQorICAgIGlmICghbV9tYW5hZ2Vy
LmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpS
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6Q2FuRGVjb2RlRXh0ZW5kZWRUeXBlKG1fZW5n
aW5lSWRlbnRpZmllciwgdHlwZS5yYXcoKSksIE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1h
bmFnZXJQcm94eTo6Q2FuRGVjb2RlRXh0ZW5kZWRUeXBlOjpSZXBseShyZXN1bHQpLCAwKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTEwOCw3ICsxMDgs
NyBAQCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpTdXBwb3J0c1R5cGUgUmVtb3RlTWVkaWFQ
bGF5ZXJNSU1FVHlwZUNhY2hlOjpzdXBwb3J0cwogICAgIH0KIAogICAgIE1lZGlhUGxheWVyOjpT
dXBwb3J0c1R5cGUgcmVzdWx0OwotICAgIGlmICghbV9tYW5hZ2VyLmdwdVByb2Nlc3NDb25uZWN0
aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpT
dXBwb3J0c1R5cGVBbmRDb2RlY3MobV9lbmdpbmVJZGVudGlmaWVyLCBwYXJhbWV0ZXJzKSwgTWVz
c2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpTdXBwb3J0c1R5cGVBbmRDb2Rl
Y3M6OlJlcGx5KHJlc3VsdCksIDApKQorICAgIGlmICghbV9tYW5hZ2VyLmdwdVByb2Nlc3NDb25u
ZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXJQcm94eTo6U3VwcG9ydHNUeXBlQW5kQ29kZWNzKG1fZW5naW5lSWRlbnRpZmllciwg
cGFyYW1ldGVycyksIE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6U3Vw
cG9ydHNUeXBlQW5kQ29kZWNzOjpSZXBseShyZXN1bHQpLCAwKSkKICAgICAgICAgcmV0dXJuIE1l
ZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6OklzTm90U3VwcG9ydGVkOwogCiAgICAgaWYgKCFtX3N1
cHBvcnRzVHlwZUFuZENvZGVjc0NhY2hlKQpAQCAtMTI1LDcgKzEyNSw3IEBAIHZvaWQgUmVtb3Rl
TWVkaWFQbGF5ZXJNSU1FVHlwZUNhY2hlOjppbml0aWFsaXplQ2FjaGUoSGFzaFNldDxTdHJpbmcs
IEFTQ0lJQ2FzZUluCiAgICAgICAgIHJldHVybjsKIAogICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVz
OwotICAgIGlmICghbV9tYW5hZ2VyLmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVz
c2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpHZXRTdXBwb3J0ZWRUeXBlcyht
X2VuZ2luZUlkZW50aWZpZXIpLCBNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJv
eHk6OkdldFN1cHBvcnRlZFR5cGVzOjpSZXBseSh0eXBlcyksIDApKQorICAgIGlmICghbV9tYW5h
Z2VyLmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2Vz
OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6R2V0U3VwcG9ydGVkVHlwZXMobV9lbmdp
bmVJZGVudGlmaWVyKSwgTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpH
ZXRTdXBwb3J0ZWRUeXBlczo6UmVwbHkodHlwZXMpLCAwKSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgZm9yIChhdXRvJiB0eXBlIDogdHlwZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5jcHAK
aW5kZXggMjVjYzU2M2YzZWJkNTljNTcwYjY2YmU5NDAzYjdjZTcyOTBkMjhkZS4uNmVjYmJlYWJi
Y2JjM2E4NTMxMTIwODRlM2YzMzY3ZjdjNmM1ODQxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyLmNwcApAQCAtMjgsNyArMjgsNiBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCi0j
aW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGUuaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllckNvbmZpZ3VyYXRpb24u
aCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllck1JTUVUeXBlQ2FjaGUuaCIKQEAgLTE2NCw3
ICsxNjMsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlPiBS
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OmNyZWF0ZVJlbQogICAgIHByb3h5Q29uZmlndXJhdGlv
bi5pc1ZpZGVvID0gcGxheWVyLT5pc1ZpZGVvUGxheWVyKCk7CiAKICAgICBSZW1vdGVNZWRpYVBs
YXllckNvbmZpZ3VyYXRpb24gcGxheWVyQ29uZmlndXJhdGlvbjsKLSAgICBib29sIHNlbmRTdWNj
ZWVkZWQgPSBncHVQcm9jZXNzQ29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXJQcm94eTo6Q3JlYXRlTWVkaWFQbGF5ZXIoaWQsIHJlbW90ZUVuZ2lu
ZUlkZW50aWZpZXIsIHByb3h5Q29uZmlndXJhdGlvbiksIE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBs
YXllck1hbmFnZXJQcm94eTo6Q3JlYXRlTWVkaWFQbGF5ZXI6OlJlcGx5KHBsYXllckNvbmZpZ3Vy
YXRpb24pLCAwKTsKKyAgICBib29sIHNlbmRTdWNjZWVkZWQgPSBncHVQcm9jZXNzQ29ubmVjdGlv
bigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyUHJveHk6OkNyZWF0ZU1lZGlhUGxheWVyKGlkLCByZW1vdGVFbmdpbmVJZGVudGlmaWVyLCBw
cm94eUNvbmZpZ3VyYXRpb24pLCBNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJv
eHk6OkNyZWF0ZU1lZGlhUGxheWVyOjpSZXBseShwbGF5ZXJDb25maWd1cmF0aW9uKSwgMCk7CiAg
ICAgaWYgKCFzZW5kU3VjY2VlZGVkKSB7CiAgICAgICAgIFdURkxvZ0Fsd2F5cygiRmFpbGVkIHRv
IGNyZWF0ZSByZW1vdGUgbWVkaWEgcGxheWVyLiIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
QEAgLTE3OCw3ICsxNzcsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFQbGF5ZXJQcml2YXRlSW50
ZXJmYWNlPiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OmNyZWF0ZVJlbQogdm9pZCBSZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXI6OmRlbGV0ZVJlbW90ZU1lZGlhUGxheWVyKE1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQpCiB7CiAgICAgbV9wbGF5ZXJzLnRha2UoaWQpOwotICAg
IGdwdVByb2Nlc3NDb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyUHJveHk6OkRlbGV0ZU1lZGlhUGxheWVyKGlkKSwgMCk7CisgICAgZ3B1UHJvY2Vzc0Nv
bm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyUHJveHk6OkRlbGV0ZU1lZGlhUGxheWVyKGlkKSwgMCk7CiB9CiAKIHZvaWQgUmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyOjpnZXRTdXBwb3J0ZWRUeXBlcyhNZWRpYVBsYXllckVudW1zOjpN
ZWRpYUVuZ2luZUlkZW50aWZpZXIgcmVtb3RlRW5naW5lSWRlbnRpZmllciwgSGFzaFNldDxTdHJp
bmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHJlc3VsdCkKQEAgLTE5Miw3ICsxOTEsNyBA
QCB2b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6Z2V0U3VwcG9ydGVkVHlwZXMoTWVkaWFQ
bGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZAogICAgIH0KIAogICAgIFZlY3RvcjxTdHJpbmc+IHR5
cGVzOwotICAgIGlmICghZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OkdldFN1cHBvcnRlZFR5cGVzKHJlbW90ZUVu
Z2luZUlkZW50aWZpZXIpLCBNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6
OkdldFN1cHBvcnRlZFR5cGVzOjpSZXBseSh0eXBlcyksIDApKQorICAgIGlmICghZ3B1UHJvY2Vz
c0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlclByb3h5OjpHZXRTdXBwb3J0ZWRUeXBlcyhyZW1vdGVFbmdpbmVJZGVudGlm
aWVyKSwgTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpHZXRTdXBwb3J0
ZWRUeXBlczo6UmVwbHkodHlwZXMpLCAwKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgcmVzdWx0
ID0gSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4oKTsKQEAgLTIxNCw3
ICsyMTMsNyBAQCBib29sIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6c3VwcG9ydHNLZXlTeXN0
ZW0oTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZAogSGFzaFNldDxSZWZQdHI8U2VjdXJp
dHlPcmlnaW4+PiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6Om9yaWdpbnNJbk1lZGlhQ2FjaGUo
TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIHJlbW90ZUVuZ2luZUlkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICBWZWN0b3I8U2VjdXJpdHlPcmlnaW5E
YXRhPiBvcmlnaW5EYXRhOwotICAgIGlmICghZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5zZW5kU3lu
YyhNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6Ok9yaWdpbnNJbk1lZGlh
Q2FjaGUocmVtb3RlRW5naW5lSWRlbnRpZmllciwgcGF0aCksIE1lc3NhZ2VzOjpSZW1vdGVNZWRp
YVBsYXllck1hbmFnZXJQcm94eTo6T3JpZ2luc0luTWVkaWFDYWNoZTo6UmVwbHkob3JpZ2luRGF0
YSksIDApKQorICAgIGlmICghZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2Vu
ZFN5bmMoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpPcmlnaW5zSW5N
ZWRpYUNhY2hlKHJlbW90ZUVuZ2luZUlkZW50aWZpZXIsIHBhdGgpLCBNZXNzYWdlczo6UmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6Ok9yaWdpbnNJbk1lZGlhQ2FjaGU6OlJlcGx5KG9yaWdp
bkRhdGEpLCAwKSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIEhhc2hTZXQ8UmVmUHRyPFNl
Y3VyaXR5T3JpZ2luPj4gb3JpZ2luczsKQEAgLTIyNiw3ICsyMjUsNyBAQCBIYXNoU2V0PFJlZlB0
cjxTZWN1cml0eU9yaWdpbj4+IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6b3JpZ2luc0luTWVk
aWFDYWNoZShNZQogCiB2b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6Y2xlYXJNZWRpYUNh
Y2hlKE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciByZW1vdGVFbmdpbmVJ
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHBhdGgsIFdhbGxUaW1lIG1vZGlmaWVkU2luY2UpCiB7
Ci0gICAgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBs
YXllck1hbmFnZXJQcm94eTo6Q2xlYXJNZWRpYUNhY2hlKHJlbW90ZUVuZ2luZUlkZW50aWZpZXIs
IHBhdGgsIG1vZGlmaWVkU2luY2UpLCAwKTsKKyAgICBncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNv
bm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6
Q2xlYXJNZWRpYUNhY2hlKHJlbW90ZUVuZ2luZUlkZW50aWZpZXIsIHBhdGgsIG1vZGlmaWVkU2lu
Y2UpLCAwKTsKIH0KIAogdm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OmNsZWFyTWVkaWFD
YWNoZUZvck9yaWdpbnMoTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIHJl
bW90ZUVuZ2luZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgSGFzaFNldDxS
ZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiYgb3JpZ2lucykKQEAgLTIzNSw3ICsyMzQsNyBAQCB2b2lk
IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6Y2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyhNZWRp
YVBsYXllckVudW1zOjpNZWRpYQogICAgICAgICByZXR1cm4gb3JpZ2luLT5kYXRhKCk7CiAgICAg
fSk7CiAKLSAgICBncHVQcm9jZXNzQ29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlclByb3h5OjpDbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKHJlbW90ZUVu
Z2luZUlkZW50aWZpZXIsIHBhdGgsIG9yaWdpbkRhdGEpLCAwKTsKKyAgICBncHVQcm9jZXNzQ29u
bmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1h
bmFnZXJQcm94eTo6Q2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyhyZW1vdGVFbmdpbmVJZGVudGlm
aWVyLCBwYXRoLCBvcmlnaW5EYXRhKSwgMCk7CiB9CiAKIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyOjpuZXR3b3JrU3RhdGVDaGFuZ2VkKE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50
aWZpZXIgaWQsIFJlbW90ZU1lZGlhUGxheWVyU3RhdGUmJiBzdGF0ZSkKQEAgLTMzMyw5ICszMzIs
MTIgQEAgdm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OnVwZGF0ZUNhY2hlZFN0YXRlKFdl
YktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3QKICAgICAgICAgcGxheWVyLT51cGRhdGVDYWNo
ZWRTdGF0ZShXVEZNb3ZlKHN0YXRlKSk7CiB9CiAKLUlQQzo6Q29ubmVjdGlvbiYgUmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyOjpncHVQcm9jZXNzQ29ubmVjdGlvbigpIGNvbnN0CitHUFVQcm9jZXNz
Q29ubmVjdGlvbiYgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpncHVQcm9jZXNzQ29ubmVjdGlv
bigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQ
VVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpOworICAgIGlmICghbV9ncHVQcm9jZXNz
Q29ubmVjdGlvbikKKyAgICAgICAgbV9ncHVQcm9jZXNzQ29ubmVjdGlvbiA9ICZXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpOworCisgICAgcmV0dXJu
ICptX2dwdVByb2Nlc3NDb25uZWN0aW9uOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZU1lZGlhUGxheWVyTWFuYWdlci5oCmluZGV4IGY1ODg1Y2VlMDVkOWE1ZjY0ZTczNDNjOGIzZGM4
MzFmZGY5OGY2YWQuLjQ2ODllMDI4YjY3ZDQ5ZjNmMjc3OTllYThlYWNkNzIyZGZlYjBiODkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE5LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoR1BV
X1BST0NFU1MpCiAKKyNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUg
Ik1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJNZXNzYWdl
UmVjZWl2ZXIuaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllclN0YXRlLmgiCkBAIC01NCwx
MCArNTUsMTEgQEAgcHVibGljOgogICAgIH5SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIoKTsKIAog
ICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgpOworICAgIFdlYlByb2Nlc3Mm
IHBhcmVudFByb2Nlc3MoKSBjb25zdCB7IHJldHVybiBtX3Byb2Nlc3M7IH0KIAogICAgIHZvaWQg
dXBkYXRlUHJlZmVyZW5jZXMoY29uc3QgV2ViQ29yZTo6U2V0dGluZ3MmKTsKIAotICAgIElQQzo6
Q29ubmVjdGlvbiYgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKSBjb25zdDsKKyAgICBHUFVQcm9jZXNz
Q29ubmVjdGlvbiYgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKSBjb25zdDsKIAogICAgIHZvaWQgZGlk
UmVjZWl2ZU1lc3NhZ2VGcm9tR1BVUHJvY2VzcyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24s
IElQQzo6RGVjb2RlciYgZGVjb2RlcikgeyBkaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBk
ZWNvZGVyKTsgfQogCkBAIC0xMDEsNiArMTAzLDcgQEAgcHJpdmF0ZToKIAogICAgIEhhc2hNYXA8
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciwgV2Vha1B0cjxNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGU+PiBtX3BsYXllcnM7CiAgICAgV2ViUHJvY2VzcyYgbV9wcm9jZXNzOworICAg
IG11dGFibGUgR1BVUHJvY2Vzc0Nvbm5lY3Rpb24qIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24geyBu
dWxscHRyIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCBjZWVjOTRlMzM3YzdhMzQ1MjRjZTU2Y2Q2MzZhMzky
ZDIyYTBkYmQ1Li5mODE5ZGEwYjVmZTVjOTJhOGQ3ZGYzMjY1NmQ1MDBiYTIxN2I1MDM5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwOS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTI5OSw2ICsxMjk5LDEw
IEBAIEdQVVByb2Nlc3NDb25uZWN0aW9uJiBXZWJQcm9jZXNzOjplbnN1cmVHUFVQcm9jZXNzQ29u
bmVjdGlvbigpCiAgICAgICAgICAgICBDUkFTSCgpOwogCiAgICAgICAgIG1fZ3B1UHJvY2Vzc0Nv
bm5lY3Rpb24gPSBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlKGNvbm5lY3Rpb25JbmZvLnJl
bGVhc2VJZGVudGlmaWVyKCkpOworI2lmIEhBVkUoQVVESVRfVE9LRU4pCisgICAgICAgIEFTU0VS
VChjb25uZWN0aW9uSW5mby5hdWRpdFRva2VuKTsKKyAgICAgICAgbV9ncHVQcm9jZXNzQ29ubmVj
dGlvbi0+c2V0QXVkaXRUb2tlbihXVEZNb3ZlKGNvbm5lY3Rpb25JbmZvLmF1ZGl0VG9rZW4pKTsK
KyNlbmRpZgogICAgIH0KICAgICAKICAgICByZXR1cm4gKm1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb247
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggYmE4NjMxNjg5NTRiMWI4ZWE4MmY0ODg2YTg5Mjg3NDIwNjExNzA2Yi4uNDMzY2Y1
N2Q1ZDIzOWJmNWUxMTNjOTQ2OGYwM2E4ZDk0ZmU0YjY3NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBA
CisyMDIwLTAxLTA5ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisg
ICAgICAgIFtNZWRpYSBpbiBHUFUgcHJvY2Vzc10gRXh0ZW5kIHRoZSBHUFUgcHJvY2VzcyBzYW5k
Ym94IHRvIGFsbG93IGFjY2VzcyB0byBsb2NhbCBmaWxlcyB3aGVuIG5lY2Vzc2FyeQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1OTY3CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS81ODQyNTAyMD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIGdwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIw
MjAtMDEtMDkgIFBhYmxvIFNhYXZlZHJhICA8cHNhYXZlZHJhQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgQmFkIGJhc2VsaW5lIGZvciBDYXRhbGluYSBvbiB4aHIgd2ViLXBsYXRmb3JtLXRlc3RzIGlt
cG9ydGVkIGluIHIyNTQxNTQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2dwdS1wcm9jZXNzL1Rl
c3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9ncHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25z
CmluZGV4IGQwMWQ1YjE4NTY5ZmM0NjQ2ZTRiZDNiZjM3MTA3ZTIzYWZjZjA4NWIuLmE1MTYzM2Zm
YWRiMjQwY2IyN2RiZDFkNjRhNGMzMDBiNTA4ZDFlZWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2dwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvZ3B1LXByb2Nl
c3MvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTc5LDE0ICsxNzksNDYgQEAgbGVnYWN5LWFuaW1hdGlv
bi1lbmdpbmUvaW1wb3J0ZWQvYmxpbmsvY29tcG9zaXRpbmcvc3F1YXNoaW5nL3JlbW92ZS1mcm9t
LWdyb3VwZWQKIGluc3BlY3Rvci9sYXllcnMvbGF5ZXJzLWNvbXBvc2l0aW5nLXJlYXNvbnMuaHRt
bCBbIFNraXAgXQogCiBtZWRpYSBbIFNraXAgXQotbWVkaWEvYXVkaW8tcGxheS13aXRoLXZpZGVv
LWVsZW1lbnQuaHRtbCBbIFBhc3MgXQotbWVkaWEvYXVkaW8tcGxheS5odG1sIFsgUGFzcyBdCi1t
ZWRpYS9tZWRpYS1jYW4tcGxheS1tcGVnLWF1ZGlvLmh0bWwgWyBQYXNzIF0KLW1lZGlhL21lZGlh
LWNhbi1wbGF5LXdhdi1hdWRpby5odG1sIFsgUGFzcyBdCiBtZWRpYS9tZWRpYS1jb250cm9sbGVy
Lmh0bWwgWyBQYXNzIF0KIG1lZGlhL21lZGlhLXByZWxvYWQtbm8tZGVsYXktbG9hZGV2ZW50Lmh0
bWwgWyBQYXNzIF0KIG1lZGlhL3ZpZGVvLXNyYy5odG1sIFsgUGFzcyBdCiBtZWRpYS92aWRlby1z
b3VyY2UuaHRtbCBbIFBhc3MgXQorbWVkaWEvYXVkaW8tYXMtdmlkZW8tZnVsbHNjcmVlbi5odG1s
IFsgUGFzcyBdCittZWRpYS9hdWRpby1iYWNrZ3JvdW5kLXBsYXliYWNrLXBsYXlsaXN0Lmh0bWwg
WyBQYXNzIF0KK21lZGlhL2F1ZGlvLWNvbmN1cnJlbnQtc3VwcG9ydGVkLmh0bWwgWyBQYXNzIF0K
K21lZGlhL2F1ZGlvLWNvbnN0cnVjdG9yLXByZWxvYWQuaHRtbCBbIFBhc3MgXQorbWVkaWEvYXVk
aW8tY29uc3RydWN0b3Itc3JjLmh0bWwgWyBQYXNzIF0KK21lZGlhL2F1ZGlvLWNvbnN0cnVjdG9y
Lmh0bWwgWyBQYXNzIF0KK21lZGlhL2F1ZGlvLWNvbnRyb2xzLWRvLW5vdC1mYWRlLW91dC5odG1s
IFsgUGFzcyBdCittZWRpYS9hdWRpby1jb250cm9scy10aW1lbGluZS1pbi1tZWRpYS1kb2N1bWVu
dC5odG1sIFsgUGFzcyBdCittZWRpYS9hdWRpby1kZWFsbG9jLWNyYXNoLmh0bWwgWyBQYXNzIF0K
K21lZGlhL2F1ZGlvLWRlbGV0ZS13aGlsZS1zbGlkZXItdGh1bWItY2xpY2tlZC5odG1sIFsgUGFz
cyBdCittZWRpYS9hdWRpby1nYXJiYWdlLWNvbGxlY3QuaHRtbCBbIFBhc3MgXQorbWVkaWEvYXVk
aW8tbXBlZy1zdXBwb3J0ZWQuaHRtbCBbIFBhc3MgXQorbWVkaWEvYXVkaW8tbXBlZzQtc3VwcG9y
dGVkLmh0bWwgWyBQYXNzIF0KK21lZGlhL2F1ZGlvLW5vLWluc3RhbGxlZC1lbmdpbmVzLmh0bWwg
WyBQYXNzIF0KK21lZGlhL2F1ZGlvLW9ubHktdmlkZW8taW50cmluc2ljLXNpemUuaHRtbCBbIFBh
c3MgXQorbWVkaWEvYXVkaW8tcGxheS1ldmVudC5odG1sIFsgUGFzcyBdCittZWRpYS9hdWRpby1w
bGF5LXdpdGgtdmlkZW8tZWxlbWVudC5odG1sIFsgUGFzcyBdCittZWRpYS9hdWRpby1wbGF5Lmh0
bWwgWyBQYXNzIF0KK21lZGlhL2F1ZGlvLXBsYXliYWNrLXJlc3RyaWN0aW9uLWF1dG9wbGF5Lmh0
bWwgWyBQYXNzIF0KK21lZGlhL2F1ZGlvLXBsYXliYWNrLXJlc3RyaWN0aW9uLXBsYXktbXV0ZWQu
aHRtbCBbIFBhc3MgXQorbWVkaWEvYXVkaW8tcGxheWJhY2stcmVzdHJpY3Rpb24tcGxheS5odG1s
IFsgUGFzcyBdCittZWRpYS9hdWRpby1wbGF5YmFjay1yZXN0cmljdGlvbi1yZW1vdmVkLW11dGVk
Lmh0bWwgWyBQYXNzIF0KK21lZGlhL2F1ZGlvLXBsYXliYWNrLXZvbHVtZS1jaGFuZ2VzLXdpdGgt
cmVzdHJpY3Rpb25zLWFuZC11c2VyLWdlc3R1cmVzLmh0bWwgWyBQYXNzIF0KK21lZGlhL2F1ZGlv
LXBsYXliYWNrLXZvbHVtZS1jaGFuZ2VzLXdpdGgtcmVzdHJpY3Rpb25zLmh0bWwgWyBQYXNzIF0K
K21lZGlhL2RlYWN0aXZhdGUtYXVkaW8tc2Vzc2lvbi5odG1sIFsgUGFzcyBdCittZWRpYS9tZWRp
YS1jYW4tcGxheS1tcGVnLWF1ZGlvLmh0bWwgWyBQYXNzIF0KK21lZGlhL21lZGlhLWNhbi1wbGF5
LXdhdi1hdWRpby5odG1sIFsgUGFzcyBdCittZWRpYS9tZWRpYS1kb2N1bWVudC1hdWRpby1jb250
cm9scy12aXNpYmxlLmh0bWwgWyBQYXNzIF0KK21lZGlhL21lZGlhLWRvY3VtZW50LWF1ZGlvLXJl
cGFpbnQuaHRtbCBbIFBhc3MgXQorbWVkaWEvbWVkaWEtZG9jdW1lbnQtYXVkaW8tc2l6ZS5odG1s
IFsgUGFzcyBdCittZWRpYS9tdXRlZC12aWRlby1pcy1wbGF5aW5nLWF1ZGlvLmh0bWwgWyBQYXNz
IF0KK21lZGlhL3Jlc3RyaWN0ZWQtYXVkaW8tcGxheWJhY2std2l0aC1kb2N1bWVudC1nZXN0dXJl
Lmh0bWwgWyBQYXNzIF0KK21lZGlhL3Jlc3RyaWN0ZWQtYXVkaW8tcGxheWJhY2std2l0aC1tdWx0
aXBsZS1zZXR0aW1lb3V0cy5odG1sIFsgUGFzcyBdCittZWRpYS92aWRlby1jb250cm9scy12aXNp
YmxlLWF1ZGlvLW9ubHkuaHRtbCBbIFBhc3MgXQorbWVkaWEvdmlkZW8tcGxheS1hdWRpby1yZXF1
aXJlLXVzZXItZ2VzdHVyZS5odG1sIFsgUGFzcyBdCisKIGFjY2Vzc2liaWxpdHkvbWVkaWEtZWxl
bWVudC5odG1sIFsgU2tpcCBdCiBmYXN0L2Jsb2NrL2Zsb2F0L2xpc3QtbWFya2VyLWlzLWZsb2F0
LWNyYXNoLmh0bWwgWyBTa2lwIF0KIGZhc3QvY3NzL3JlbGF0aXZlLXBvc2l0aW9uLXJlcGxhY2Vk
LWluLXRhYmxlLWRpc3BsYXktY3Jhc2guaHRtbCBbIFNraXAgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387418</attachid>
            <date>2020-01-10 20:45:45 -0800</date>
            <delta_ts>2020-01-10 21:32:31 -0800</delta_ts>
            <desc>Patch for landing.</desc>
            <filename>bug-205967-20200110204544.patch</filename>
            <type>text/plain</type>
            <size>46207</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0MjkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDkzYzYwMjhhY2YyMjYzNzQw
ZTBmZjYwZDYwYzc1MGZkNTA3NDZhY2YuLjJkZmZmM2QyZmRiY2ViNTIwZDE0NGU5ZjA5ODY5YjE1
N2I2NDEyNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzcgQEAKKzIwMjAtMDEtMDkgIEVyaWMgQ2Fy
bHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgW01lZGlhIGluIEdQVSBw
cm9jZXNzXSBFeHRlbmQgdGhlIEdQVSBwcm9jZXNzIHNhbmRib3ggdG8gYWxsb3cgYWNjZXNzIHRv
IGxvY2FsIGZpbGVzIHdoZW4gbmVjZXNzYXJ5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDU5NjcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU4NDI1
MDIwPgorCisgICAgICAgIFJldmlld2VkIGJ5IHlvdWVubiBmYWJsZXQuCisKKyAgICAgICAgTm8g
bmV3IHRlc3RzLCB1bi1za2lwcGVkIGV4aXN0aW5nIHRlc3RzIHRoYXQgcGFzcyBiZWNhdXNlIG9m
IHRoaXMgY2hhbmdlLgorICAgICAgICAKKyAgICAgICAgVGhlIEdQVSBwcm9jZXNzIHNhbmRib3gg
ZG9lcyBub3QgYWxsb3cgYWNjZXNzIHRvIGxvY2FsIGZpbGVzIHNvIGV4dGVuZCBpdCBiZWZvcmUg
CisgICAgICAgIGF0dGVtcHRpbmcgdG8gb3BlbiBhIGZpbGU6Ly8gdXJsLCBhbmQgcmV2b2tlIHRo
ZSBleHRlbnNpb24gd2hlbiB0aGUgZmlsZSBpcyBjbG9zZWQuCisKKyAgICAgICAgKiBHUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OmxvYWQpOgorICAgICAgICAqIEdQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuaDoKKyAgICAgICAg
KiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lm1lc3NhZ2Vz
LmluOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6OmludmFsaWRhdGUp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5Ojpsb2FkKToKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkdQ
VVByb2Nlc3NQcm94eTo6b3BlbkdQVVByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKyAg
ICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5oOgorICAgICAgICAoV2ViS2l0OjpHUFVQ
cm9jZXNzQ29ubmVjdGlvbjo6c2V0QXVkaXRUb2tlbik6CisgICAgICAgIChXZWJLaXQ6OkdQVVBy
b2Nlc3NDb25uZWN0aW9uOjphdWRpdFRva2VuIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbkluZm8uaDoKKyAgICAgICAgKFdlYktpdDo6R1BVUHJv
Y2Vzc0Nvbm5lY3Rpb25JbmZvOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpHUFVQ
cm9jZXNzQ29ubmVjdGlvbkluZm86OmRlY29kZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpwcmVwYXJlRm9yUGxheWJhY2spOgorICAgICAgICAoV2Vi
S2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6
bG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y2FuY2Vs
TG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cHJlcGFy
ZVRvUGxheSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cGxh
eSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cGF1c2UpOgor
ICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFByZXNlcnZlc1Bp
dGNoKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRWb2x1
bWVEb3VibGUpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNl
dE11dGVkKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRQ
cmVsb2FkKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRQ
cml2YXRlQnJvd3NpbmdNb2RlKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlOjpzZWVrKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
OjpzZWVrV2l0aFRvbGVyYW5jZSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZTo6cHJlcGFyZUZvclJlbmRlcmluZyk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZTo6c2V0U2l6ZSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZTo6c2V0VmlzaWJsZSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZTo6c2V0U2hvdWxkTWFpbnRhaW5Bc3BlY3RSYXRpbyk6CisgICAgICAgIChX
ZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUp
OgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFZpZGVvRnVs
bHNjcmVlbkdyYXZpdHkpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6OmFjY2VsZXJhdGVkUmVuZGVyaW5nU3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRTaG91bGREaXNhYmxlU2xlZXApOgorICAgICAg
ICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnJlcXVlc3RSZXNvdXJjZSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNSU1FVHlw
ZUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNSU1FVHlwZUNh
Y2hlOjpjYW5EZWNvZGVFeHRlbmRlZFR5cGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRp
YVBsYXllck1JTUVUeXBlQ2FjaGU6OnN1cHBvcnRzVHlwZUFuZENvZGVjcyk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTUlNRVR5cGVDYWNoZTo6aW5pdGlhbGl6ZUNhY2hlKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OmNyZWF0ZVJl
bW90ZU1lZGlhUGxheWVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyOjpkZWxldGVSZW1vdGVNZWRpYVBsYXllcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlcjo6Z2V0U3VwcG9ydGVkVHlwZXMpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6Om9yaWdpbnNJbk1lZGlhQ2FjaGUpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OmNsZWFyTWVkaWFDYWNoZSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6Y2xlYXJNZWRpYUNhY2hlRm9y
T3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6Z3B1
UHJvY2Vzc0Nvbm5lY3Rpb24gY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRp
YVBsYXllck1hbmFnZXI6OnBhcmVudFByb2Nlc3MgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmVuc3VyZUdQ
VVByb2Nlc3NDb25uZWN0aW9uKToKKwogMjAyMC0wMS0wOSAgTWVnYW4gR2FyZG5lciAgPG1lZ2Fu
X2dhcmRuZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFNldCB0aGUgdGl0bGUgZm9yIGltYWdlcyBz
byBpdCB3aWxsIGJlIGNvcnJlY3RseSBkaXNwbGF5ZWQgaW4gVUlDb250ZXh0TWVudXMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9HUFVQcm9jZXNzLmNwcAppbmRleCAxZGYzNTNiYTU3ZTViZTY5NjA0
MjY0Njg1MmFmMzZmNDg1OGExOGZmLi41YWM3NDEzMjNiNDlmYWQ5NTNiZDY4ZGVlYjEyMjkwZDNj
YTk4MTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVUHJvY2Vzcy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3MuY3BwCkBAIC0zNSw2
ICszNSw3IEBACiAjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgogI2luY2x1
ZGUgIkdQVVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgi
CisjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1l
c3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2xNZXNzYWdlcy5oIgogI2luY2x1ZGUg
PFdlYkNvcmUvTG9nSW5pdGlhbGl6YXRpb24uaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9HUFVQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL0dQVVByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggM2ZjZGYxYmRmMTRhZTkyMGVkYWU2Yzk5
OTdmNTA2ZDkyMDBkNjZhZi4uZmJhNjdlZDNiMmZhNjBkZTU0MjgwMDNjNGMxMWU4YmJhZTg5Njg2
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3MubWVzc2Fn
ZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVVByb2Nlc3MubWVzc2FnZXMu
aW4KQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxOS0yMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdl
clByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBs
YXllck1hbmFnZXJQcm94eS5jcHAKaW5kZXggOWI3MWVhNzYxNTY1YjQ1MTNlNDg5Yjg5OWE3OTVl
YWNiMGRmMDFiYy4uNDc5MzMwOTkwYzM4ZjA2Y2I4NjBjYzM4ZjUzMWNmMzBlMzBkMmVlZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVy
TWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3BwCkBAIC0yMDMsMTAgKzIwMywxMCBAQCB2b2lk
IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpwcmVwYXJlRm9yUGxheWJhY2soTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlSQogICAgICAgICBwbGF5ZXItPnByZXBhcmVGb3JQbGF5YmFjayhw
cml2YXRlTW9kZSwgcHJlbG9hZCwgcHJlc2VydmVzUGl0Y2gsIHByZXBhcmVGb3JSZW5kZXJpbmcp
OwogfQogCi12b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Ojpsb2FkKE1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQsIFVSTCYmIHVybCwgV2ViQ29yZTo6Q29udGVu
dFR5cGUmJiBjb250ZW50VHlwZSwgU3RyaW5nJiYga2V5U3lzdGVtLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFJlbW90ZU1lZGlhUGxheWVyQ29uZmlndXJhdGlvbiYmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OmxvYWQoTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZCwgVVJMJiYgdXJsLCBPcHRpb25hbDxTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGU+JiYgc2FuZGJveEV4dGVuc2lvbiwgV2ViQ29yZTo6Q29udGVudFR5
cGUmJiBjb250ZW50VHlwZSwgU3RyaW5nJiYga2V5U3lzdGVtLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFJlbW90ZU1lZGlhUGxheWVyQ29uZmlndXJhdGlvbiYmKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKICAgICBpZiAoYXV0byBwbGF5ZXIgPSBtX3Byb3hpZXMuZ2V0KGlkKSkKLSAgICAgICAg
cGxheWVyLT5sb2FkKFdURk1vdmUodXJsKSwgV1RGTW92ZShjb250ZW50VHlwZSksIFdURk1vdmUo
a2V5U3lzdGVtKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICBwbGF5ZXIt
PmxvYWQoV1RGTW92ZSh1cmwpLCBXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb24pLCBXVEZNb3ZlKGNv
bnRlbnRUeXBlKSwgV1RGTW92ZShrZXlTeXN0ZW0pLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CiB9CiAKIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OmNhbmNlbExvYWQo
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5o
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdl
clByb3h5LmgKaW5kZXggMDRmNmMwOGVlNWEwOWFjYWI1ZGI0MDNhYzY1OTRiNjllYzVlNzdmNi4u
ZDM3Y2YxOGFhMzI3OTI4YjQxZjJkMGE1ZjNjODBmMzBmZjFlMWYxZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVy
TWFuYWdlclByb3h5LmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgi
CiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllci5oIgogI2luY2x1
ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKICNp
bmNsdWRlIDxXZWJDb3JlL01lZGlhUGxheWVyLmg+CiAjaW5jbHVkZSA8d3RmL0xvZ2dlckhlbHBl
ci5oPgogCkBAIC04Miw3ICs4Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjbGVhck1lZGlhQ2Fj
aGVGb3JPcmlnaW5zKFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiYsIFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+
JiYpOwogICAgIHZvaWQgc3VwcG9ydHNLZXlTeXN0ZW0oV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVt
czo6TWVkaWFFbmdpbmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmJiwgY29uc3QgU3RyaW5nJiYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogCi0gICAgdm9pZCBsb2FkKE1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIsIFVSTCYmLCBXZWJDb3JlOjpDb250ZW50VHlw
ZSYmLCBTdHJpbmcmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZW1vdGVNZWRpYVBsYXllckNv
bmZpZ3VyYXRpb24mJik+JiYpOworICAgIHZvaWQgbG9hZChNZWRpYVBsYXllclByaXZhdGVSZW1v
dGVJZGVudGlmaWVyLCBVUkwmJiwgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiYm
LCBXZWJDb3JlOjpDb250ZW50VHlwZSYmLCBTdHJpbmcmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChSZW1vdGVNZWRpYVBsYXllckNvbmZpZ3VyYXRpb24mJik+JiYpOwogICAgIHZvaWQgcHJlcGFy
ZUZvclBsYXliYWNrKE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIsIGJvb2wgcHJp
dmF0ZU1vZGUsIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OlByZWxvYWQsIGJvb2wgcHJlc2Vy
dmVzUGl0Y2gsIGJvb2wgcHJlcGFyZUZvclJlbmRlcmluZyk7CiAgICAgdm9pZCBjYW5jZWxMb2Fk
KE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIpOwogICAgIHZvaWQgcHJlcGFyZVRv
UGxheShNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94
eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRp
YVBsYXllck1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgppbmRleCBlMTE2YjRlMTI2OTI0MThkNTVm
ODVkYmVlNDAyMDEzNDM0N2Q0YTVkLi5iMWUxNDIwYmE5YzExMDg5MmQ5ODhjNTY5YWYyMGU3ZWFj
NzRiOWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmlu
CkBAIC0zNyw3ICszNyw3IEBAIG1lc3NhZ2VzIC0+IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclBy
b3h5IE5vdFJlZkNvdW50ZWQgewogCiAgICAgUHJlcGFyZUZvclBsYXliYWNrKFdlYktpdDo6TWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZCwgYm9vbCBwcml2YXRlTW9kZSwgZW51
bTp1aW50OF90IFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OlByZWxvYWQgcHJlbG9hZCwgYm9v
bCBwcmVzZXJ2ZXNQaXRjaCwgYm9vbCBwcmVwYXJlRm9yUmVuZGVyaW5nKQogCi0gICAgTG9hZChX
ZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQsIFVSTCB1cmwsIFdl
YkNvcmU6OkNvbnRlbnRUeXBlIGNvbnRlbnRUeXBlLCBTdHJpbmcga2V5U3lzdGVtKSAtPiAoc3Ry
dWN0IFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJDb25maWd1cmF0aW9uIHBsYXllckNvbmZpZ3Vy
YXRpb24pIEFzeW5jCisgICAgTG9hZChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlk
ZW50aWZpZXIgaWQsIFVSTCB1cmwsIE9wdGlvbmFsPFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlPiBzYW5kYm94RXh0ZW5zaW9uLCBXZWJDb3JlOjpDb250ZW50VHlwZSBjb250ZW50VHlw
ZSwgU3RyaW5nIGtleVN5c3RlbSkgLT4gKHN0cnVjdCBXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVy
Q29uZmlndXJhdGlvbiBwbGF5ZXJDb25maWd1cmF0aW9uKSBBc3luYwogICAgIENhbmNlbExvYWQo
V2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkKQogCiAgICAgUHJl
cGFyZVRvUGxheShXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQ
bGF5ZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVk
aWFQbGF5ZXJQcm94eS5jcHAKaW5kZXggODI0MzBmZDZjMmJhZDc4YTc3NWE5YjMzYjM5NWI3Y2Zi
NDBiNjIzMS4uYTE0MTdhMjhhNjUwYjBkMmZlMWJjNWNhMzJjZGJjZDBjMGI5ZjUxNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBs
YXllclByb3h5LmNwcApAQCAtNjksNiArNjksMTAgQEAgdm9pZCBSZW1vdGVNZWRpYVBsYXllclBy
b3h5OjppbnZhbGlkYXRlKCkKIHsKICAgICBtX3VwZGF0ZUNhY2hlZFN0YXRlTWVzc2FnZVRpbWVy
LnN0b3AoKTsKICAgICBtX3BsYXllci0+aW52YWxpZGF0ZSgpOworICAgIGlmIChtX3NhbmRib3hF
eHRlbnNpb24pIHsKKyAgICAgICAgbV9zYW5kYm94RXh0ZW5zaW9uLT5yZXZva2UoKTsKKyAgICAg
ICAgbV9zYW5kYm94RXh0ZW5zaW9uID0gbnVsbHB0cjsKKyAgICB9CiB9CiAKIHZvaWQgUmVtb3Rl
TWVkaWFQbGF5ZXJQcm94eTo6Z2V0Q29uZmlndXJhdGlvbihSZW1vdGVNZWRpYVBsYXllckNvbmZp
Z3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCkBAIC04MiwxMSArODYsMTkgQEAgdm9pZCBSZW1vdGVN
ZWRpYVBsYXllclByb3h5OjpnZXRDb25maWd1cmF0aW9uKFJlbW90ZU1lZGlhUGxheWVyQ29uZmln
dXJhdGlvbiYgY28KICAgICBjb25maWd1cmF0aW9uLnNob3VsZElnbm9yZUludHJpbnNpY1NpemUg
PSBtX3BsYXllci0+c2hvdWxkSWdub3JlSW50cmluc2ljU2l6ZSgpOwogfQogCi12b2lkIFJlbW90
ZU1lZGlhUGxheWVyUHJveHk6OmxvYWQoY29uc3QgVVJMJiB1cmwsIGNvbnN0IENvbnRlbnRUeXBl
JiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoUmVtb3RlTWVkaWFQbGF5ZXJDb25maWd1cmF0aW9uJiYpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQordm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5Ojpsb2FkKGNvbnN0IFVSTCYgdXJsLCBP
cHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+JiYgc2FuZGJveEV4dGVuc2lvbkhhbmRs
ZSwgY29uc3QgQ29udGVudFR5cGUmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGtleVN5c3Rl
bSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZW1vdGVNZWRpYVBsYXllckNvbmZpZ3VyYXRpb24m
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgbV9wbGF5ZXItPmxvYWQodXJsLCBjb250
ZW50VHlwZSwga2V5U3lzdGVtKTsKLQogICAgIFJlbW90ZU1lZGlhUGxheWVyQ29uZmlndXJhdGlv
biBjb25maWd1cmF0aW9uOworCisgICAgaWYgKHNhbmRib3hFeHRlbnNpb25IYW5kbGUpIHsKKyAg
ICAgICAgbV9zYW5kYm94RXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKFdURk1v
dmUoc2FuZGJveEV4dGVuc2lvbkhhbmRsZS52YWx1ZSgpKSk7CisgICAgICAgIGlmIChtX3NhbmRi
b3hFeHRlbnNpb24pCisgICAgICAgICAgICBtX3NhbmRib3hFeHRlbnNpb24tPmNvbnN1bWUoKTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCJVbmFibGUgdG8gY3JlYXRl
IHNhbmRib3ggZXh0ZW5zaW9uIGZvciBtZWRpYSB1cmwuXG4iKTsKKyAgICB9CisKKyAgICBtX3Bs
YXllci0+bG9hZCh1cmwsIGNvbnRlbnRUeXBlLCBrZXlTeXN0ZW0pOwogICAgIGdldENvbmZpZ3Vy
YXRpb24oY29uZmlndXJhdGlvbik7CiAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb25m
aWd1cmF0aW9uKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaAppbmRleCA1ZTI3NjFiMDFjNTQxZDJkNmNkMzRi
NjI0YzM2ZjM5MDRiOGY0ZTNjLi5mY2MzNjY0YzI0NGUzMjhkNmRjYWRmYWRjMTk4ODJlMzI2M2Zl
YzJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVk
aWFQbGF5ZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVNZWRpYVBsYXllclByb3h5LmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJSZW1vdGVN
ZWRpYVBsYXllclByb3h5Q29uZmlndXJhdGlvbi5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxh
eWVyU3RhdGUuaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVJlc291cmNlSWRlbnRpZmllci5oIgor
I2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQbGF5ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Bs
YXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5oPgpAQCAtNjAsNyArNjEsNyBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIHByZXBhcmVGb3JQbGF5YmFjayhib29sIHByaXZhdGVNb2RlLCBXZWJDb3JlOjpN
ZWRpYVBsYXllckVudW1zOjpQcmVsb2FkLCBib29sIHByZXNlcnZlc1BpdGNoLCBib29sIHByZXBh
cmVGb3JSZW5kZXJpbmcpOwogCi0gICAgdm9pZCBsb2FkKGNvbnN0IFVSTCYsIGNvbnN0IFdlYkNv
cmU6OkNvbnRlbnRUeXBlJiwgY29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChS
ZW1vdGVNZWRpYVBsYXllckNvbmZpZ3VyYXRpb24mJik+JiYpOworICAgIHZvaWQgbG9hZChjb25z
dCBVUkwmLCBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+JiYsIGNvbnN0IFdlYkNv
cmU6OkNvbnRlbnRUeXBlJiwgY29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChS
ZW1vdGVNZWRpYVBsYXllckNvbmZpZ3VyYXRpb24mJik+JiYpOwogICAgIHZvaWQgY2FuY2VsTG9h
ZCgpOwogCiAgICAgdm9pZCBwcmVwYXJlVG9QbGF5KCk7CkBAIC0xODYsNiArMTg3LDcgQEAgcHJp
dmF0ZToKICNlbmRpZgogCiAgICAgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBt
X2lkOworICAgIFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiBtX3NhbmRib3hFeHRlbnNpb247CiAg
ICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV93ZWJQcm9jZXNzQ29ubmVjdGlvbjsKICAgICBSZWZQ
dHI8V2ViQ29yZTo6TWVkaWFQbGF5ZXI+IG1fcGxheWVyOwogICAgIFJlbW90ZU1lZGlhUGxheWVy
TWFuYWdlclByb3h5JiBtX21hbmFnZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQ
VS9HUFVQcm9jZXNzUHJveHkuY3BwCmluZGV4IGYwY2IxNzkxNDkyZmZmZDhiMzE2MjI3ZmM0YmI5
ZWY4ZWQwNWJhMTkuLmQ4MDg2ZGY0ZDlhNjE0NjNlZmY5ZThkODE4OTI1NDlhNTE5MzJmOTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuY3BwCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ3
LDcgKzQ3LDcgQEAKICNpbmNsdWRlIDx3dGYvc3BpL2Rhcndpbi9YUENTUEkuaD4KICNlbmRpZgog
Ci0jZGVmaW5lIE1FU1NBR0VfQ0hFQ0soYXNzZXJ0aW9uKSBNRVNTQUdFX0NIRUNLX0JBU0UoYXNz
ZXJ0aW9uLCBjb25uZWN0aW9uKCkpCisjZGVmaW5lIE1FU1NBR0VfQ0hFQ0soYXNzZXJ0aW9uKSBN
RVNTQUdFX0NIRUNLX0JBU0UoYXNzZXJ0aW9uLCB0aGlzLT5jb25uZWN0aW9uKCkpCiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC0xMjUsNyArMTI1LDkg
QEAgdm9pZCBHUFVQcm9jZXNzUHJveHk6OmdldEdQVVByb2Nlc3NDb25uZWN0aW9uKFdlYlByb2Nl
c3NQcm94eSYgd2ViUHJvY2Vzc1Byb3h5LAogCiB2b2lkIEdQVVByb2Nlc3NQcm94eTo6b3BlbkdQ
VVByb2Nlc3NDb25uZWN0aW9uKENvbm5lY3Rpb25SZXF1ZXN0SWRlbnRpZmllciBjb25uZWN0aW9u
UmVxdWVzdElkZW50aWZpZXIsIFdlYlByb2Nlc3NQcm94eSYgd2ViUHJvY2Vzc1Byb3h5KQogewot
ICAgIGNvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpHUFVQcm9jZXNz
OjpDcmVhdGVHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzIHsgd2ViUHJvY2Vzc1Byb3h5LmNvcmVQ
cm9jZXNzSWRlbnRpZmllcigpLCB3ZWJQcm9jZXNzUHJveHkuc2Vzc2lvbklEKCkgfSwgW3RoaXMs
IHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIHdlYlByb2Nlc3NQcm94eSA9IG1ha2VXZWFr
UHRyKHdlYlByb2Nlc3NQcm94eSksIGNvbm5lY3Rpb25SZXF1ZXN0SWRlbnRpZmllcl0oYXV0byYm
IGNvbm5lY3Rpb25JZGVudGlmaWVyKSBtdXRhYmxlIHsKKyAgICBhdXRvJiBjb25uZWN0aW9uID0g
KnRoaXMtPmNvbm5lY3Rpb24oKTsKKworICAgIGNvbm5lY3Rpb24uc2VuZFdpdGhBc3luY1JlcGx5
KE1lc3NhZ2VzOjpHUFVQcm9jZXNzOjpDcmVhdGVHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzIHsg
d2ViUHJvY2Vzc1Byb3h5LmNvcmVQcm9jZXNzSWRlbnRpZmllcigpLCB3ZWJQcm9jZXNzUHJveHku
c2Vzc2lvbklEKCkgfSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIHdlYlBy
b2Nlc3NQcm94eSA9IG1ha2VXZWFrUHRyKHdlYlByb2Nlc3NQcm94eSksIGNvbm5lY3Rpb25SZXF1
ZXN0SWRlbnRpZmllcl0oYXV0byYmIGNvbm5lY3Rpb25JZGVudGlmaWVyKSBtdXRhYmxlIHsKICAg
ICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMTQyLDcgKzE0
NCw3IEBAIHZvaWQgR1BVUHJvY2Vzc1Byb3h5OjpvcGVuR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oQ29u
bmVjdGlvblJlcXVlc3RJZGVudGlmaWVyIGNvbm5lCiAgICAgICAgIHJlcXVlc3QucmVwbHkoR1BV
UHJvY2Vzc0Nvbm5lY3Rpb25JbmZvIHsgV1RGTW92ZSgqY29ubmVjdGlvbklkZW50aWZpZXIpIH0p
OwogI2VsaWYgT1MoREFSV0lOKQogICAgICAgICBNRVNTQUdFX0NIRUNLKE1BQ0hfUE9SVF9WQUxJ
RChjb25uZWN0aW9uSWRlbnRpZmllci0+cG9ydCgpKSk7Ci0gICAgICAgIHJlcXVlc3QucmVwbHko
R1BVUHJvY2Vzc0Nvbm5lY3Rpb25JbmZvIHsgSVBDOjpBdHRhY2htZW50IHsgY29ubmVjdGlvbklk
ZW50aWZpZXItPnBvcnQoKSwgTUFDSF9NU0dfVFlQRV9NT1ZFX1NFTkQgfSB9KTsKKyAgICAgICAg
cmVxdWVzdC5yZXBseShHUFVQcm9jZXNzQ29ubmVjdGlvbkluZm8geyBJUEM6OkF0dGFjaG1lbnQg
eyBjb25uZWN0aW9uSWRlbnRpZmllci0+cG9ydCgpLCBNQUNIX01TR19UWVBFX01PVkVfU0VORCB9
LCB0aGlzLT5jb25uZWN0aW9uKCktPmdldEF1ZGl0VG9rZW4oKSB9KTsKICNlbHNlCiAgICAgICAg
IG5vdEltcGxlbWVudGVkKCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQ
VS9HUFVQcm9jZXNzUHJveHkuaAppbmRleCBkYTY0Y2ZlYWUwYjA1M2Q2MjZiNzVkOWIyN2I2OWYx
NmM2ODMwZDQ1Li45YmQ4NDk5NmEzNzU1YWQ2MTAwMzZiNDFlYmQzNzZkYjdlMjZhZTRlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5oCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDExICsz
Miw5IEBACiAjaW5jbHVkZSAiUHJvY2Vzc0xhdW5jaGVyLmgiCiAjaW5jbHVkZSAiUHJvY2Vzc1Ro
cm90dGxlci5oIgogI2luY2x1ZGUgIlByb2Nlc3NUaHJvdHRsZXJDbGllbnQuaCIKLSNpbmNsdWRl
ICJUcmFuc2FjdGlvbklELmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5SWRlbnRpZmllci5oIgog
I2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eU1lc3NhZ2VzUmVwbGllcy5oIgogI2luY2x1ZGUgPG1l
bW9yeT4KLSNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAg
LTk2LDcgKzk0LDYgQEAgcHJpdmF0ZToKIAogICAgIFByb2Nlc3NUaHJvdHRsZXIgbV90aHJvdHRs
ZXI7CiAgICAgUHJvY2Vzc1Rocm90dGxlcjo6QWN0aXZpdHlWYXJpYW50IG1fYWN0aXZpdHlGcm9t
V2ViUHJvY2Vzc2VzOwotCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICAgICBib29sIG1fdXNl
TW9ja0NhcHR1cmVEZXZpY2VzIHsgZmFsc2UgfTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggYzQ0YmY3YzMyZTk5MzEzOWMxMDNjNDdl
NTE2NDI0ZDhlZGM4NjU2Zi4uMTFhZTE5Mzg5M2VkYTE3Zjg3YTIyYTFlYjk3YWIxZDliOTRhNDg2
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMC0yMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAppbmRleCA5NjVmYjFjZTAxN2Ix
OWVjNDhlZThmNGRiNDAxNmQ2YjkxOWI0MjNkLi5kOTY4NmExNTE0MTExYzhlZThjYWY2YTRkYzk3
YjE3NzE1MmJmMWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
aApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZS5jcHAKaW5kZXggMTk5NTEwZTQyZWQxZTQ4NDEwMTAwMDRkNDI0YTYwODU0
ODE0MmZmZC4uNGY4MGNmNTZlYzZhYmRmOTMyNDgzYzQwZWM4ODNiZjhjZDU3NmYwNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9y
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURh
dGFTdG9yZS5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJBUElXZWJzaXRlRGF0YVJl
Y29yZC5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0b3JNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiRGV2
aWNlSWRIYXNoU2FsdFN0b3JhZ2UuaCIKKyNpbmNsdWRlICJHUFVQcm9jZXNzUHJveHkuaCIKICNp
bmNsdWRlICJNb2NrQXV0aGVudGljYXRvck1hbmFnZXIuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJv
Y2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzLmgi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25u
ZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0
aW9uLmgKaW5kZXggMzFjNjEwNDY2OWYyZjAyZmZhNDQwZmViODgwOTI2Yzc0YWUyNmFjZi4uYThh
ZDRmZWU4NmIyNjU5YjRhZmZiN2M0ODRkYTE4MWMzYmVmMjdkMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaApAQCAtNDcsNiAr
NDcsMTEgQEAgcHVibGljOgogICAgIAogICAgIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbigp
IHsgcmV0dXJuIG1fY29ubmVjdGlvbi5nZXQoKTsgfQogCisjaWYgSEFWRShBVURJVF9UT0tFTikK
KyAgICB2b2lkIHNldEF1ZGl0VG9rZW4oT3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4gYXVkaXRUb2tl
bikgeyBtX2F1ZGl0VG9rZW4gPSBhdWRpdFRva2VuOyB9CisgICAgT3B0aW9uYWw8YXVkaXRfdG9r
ZW5fdD4gYXVkaXRUb2tlbigpIGNvbnN0IHsgcmV0dXJuIG1fYXVkaXRUb2tlbjsgfQorI2VuZGlm
CisKIHByaXZhdGU6CiAgICAgR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uOjpJ
ZGVudGlmaWVyKTsKIApAQCAtNTcsNiArNjIsMTAgQEAgcHJpdmF0ZToKIAogICAgIC8vIFRoZSBj
b25uZWN0aW9uIGZyb20gdGhlIHdlYiBwcm9jZXNzIHRvIHRoZSBHUFUgcHJvY2Vzcy4KICAgICBS
ZWY8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CisKKyNpZiBIQVZFKEFVRElUX1RPS0VO
KQorICAgIE9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+IG1fYXVkaXRUb2tlbjsKKyNlbmRpZgogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uSW5mby5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbkluZm8uaAppbmRleCAxMGE5MDY1ODM2NGZk
ODYzZDdkZmExNjJiMzQ2ODNmMDMyZGU5NzA5Li4xYWQ3MDU1Zjc1MTU5MWI0MDhhMzFhM2IwYzkx
OWQ5NTUzNDg3YmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQ
VVByb2Nlc3NDb25uZWN0aW9uSW5mby5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb25JbmZvLmgKQEAgLTMxLDYgKzMxLDkgQEAgbmFtZXNwYWNl
IFdlYktpdCB7CiAKIHN0cnVjdCBHUFVQcm9jZXNzQ29ubmVjdGlvbkluZm8gewogICAgIElQQzo6
QXR0YWNobWVudCBjb25uZWN0aW9uOworI2lmIEhBVkUoQVVESVRfVE9LRU4pCisgICAgT3B0aW9u
YWw8YXVkaXRfdG9rZW5fdD4gYXVkaXRUb2tlbjsKKyNlbmRpZgogCiAgICAgSVBDOjpDb25uZWN0
aW9uOjpJZGVudGlmaWVyIGlkZW50aWZpZXIoKQogICAgIHsKQEAgLTYwLDEyICs2MywxOSBAQCBz
dHJ1Y3QgR1BVUHJvY2Vzc0Nvbm5lY3Rpb25JbmZvIHsKICAgICB2b2lkIGVuY29kZShJUEM6OkVu
Y29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgewogICAgICAgICBlbmNvZGVyIDw8IGNvbm5lY3Rp
b247CisjaWYgSEFWRShBVURJVF9UT0tFTikKKyAgICAgICAgZW5jb2RlciA8PCBhdWRpdFRva2Vu
OworI2VuZGlmCiAgICAgfQogICAgIAogICAgIHN0YXRpYyBib29sIGRlY29kZShJUEM6OkRlY29k
ZXImIGRlY29kZXIsIEdQVVByb2Nlc3NDb25uZWN0aW9uSW5mbyYgaW5mbykKICAgICB7CiAgICAg
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaW5mby5jb25uZWN0aW9uKSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyNpZiBIQVZFKEFVRElUX1RPS0VOKQorICAgICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKGluZm8uYXVkaXRUb2tlbikpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5k
aWYKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlLmNwcAppbmRleCAxNjRkY2I5MWZlZGU0NGY1ZWY5YTFhYTkxOTZmMGZiNzZkYWE0NWIwLi5j
Yzk4NTczMTQzMTM5YzBhNTM1Mzk5Y2RiYWJjMmZhMjdmYTQ5OTY0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclBy
aXZhdGVSZW1vdGUuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkt
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTMwLDcgKzMwLDkgQEAKIAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNp
bmNsdWRlICJSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVk
ZSAiU2FuZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5o
IgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlIDxXZWJDb3JlL01lZGlhUGxheWVy
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvUGxhdGZvcm1MYXllci5oPgpAQCAtODQsMTIgKzg2LDM4IEBAIE1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZTo6fk1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZSgpCiAKIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlOjpwcmVwYXJlRm9yUGxheWJhY2soYm9vbCBwcml2YXRlTW9kZSwgTWVkaWFQ
bGF5ZXI6OlByZWxvYWQgcHJlbG9hZCwgYm9vbCBwcmVzZXJ2ZXNQaXRjaCwgYm9vbCBwcmVwYXJl
KQogewotICAgIG1fbWFuYWdlci5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6
OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpQcmVwYXJlRm9yUGxheWJhY2sobV9pZCwg
cHJpdmF0ZU1vZGUsIHByZWxvYWQsIHByZXNlcnZlc1BpdGNoLCBwcmVwYXJlKSwgMCk7CisgICAg
bV9tYW5hZ2VyLmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpQcmVwYXJlRm9yUGxheWJhY2sobV9p
ZCwgcHJpdmF0ZU1vZGUsIHByZWxvYWQsIHByZXNlcnZlc1BpdGNoLCBwcmVwYXJlKSwgMCk7CiB9
CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6OmxvYWQoY29uc3QgVVJMJiB1cmwsIGNvbnN0IENvbnRlbnRUeXBlJiBjb250ZW50VHlwZSwg
Y29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pCiB7Ci0gICAgbV9tYW5hZ2VyLmdwdVByb2Nlc3NDb25u
ZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1h
bmFnZXJQcm94eTo6TG9hZChtX2lkLCB1cmwsIGNvbnRlbnRUeXBlLCBrZXlTeXN0ZW0pLCBbd2Vh
a1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldKGF1dG8mJiBjb25maWd1cmF0aW9uKSB7CisgICAg
YXV0byYgY29ubmVjdGlvbiA9IG1fbWFuYWdlci5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5l
Y3Rpb24oKTsKKyAgICBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IHNhbmRib3hF
eHRlbnNpb25IYW5kbGU7CisgICAgaWYgKHVybC5pc0xvY2FsRmlsZSgpKSB7CisgICAgICAgIFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZSBoYW5kbGU7CisgICAgICAgIGF1dG8gZmlsZVN5c3RlbVBh
dGggPSB1cmwuZmlsZVN5c3RlbVBhdGgoKTsKKyAgICAgICAgYm9vbCBjcmVhdGVkRXh0ZW5zaW9u
ID0gZmFsc2U7CisKKyNpZiBIQVZFKFNBTkRCT1hfSVNTVUVfUkVBRF9FWFRFTlNJT05fVE9fUFJP
Q0VTU19CWV9BVURJVF9UT0tFTikKKyAgICAgICAgYXV0byBhdWRpdFRva2VuID0gbV9tYW5hZ2Vy
LmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuYXVkaXRUb2tlbigpOworICAgICAgICBBU1NFUlQoYXVk
aXRUb2tlbik7CisgICAgICAgIGlmIChhdWRpdFRva2VuKQorICAgICAgICAgICAgY3JlYXRlZEV4
dGVuc2lvbiA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRCeUF1ZGl0VG9r
ZW4oZmlsZVN5c3RlbVBhdGgsIGF1ZGl0VG9rZW4udmFsdWUoKSwgaGFuZGxlKTsKKyAgICAgICAg
ZWxzZQorI2VuZGlmCisgICAgICAgIGNyZWF0ZWRFeHRlbnNpb24gPSBTYW5kYm94RXh0ZW5zaW9u
OjpjcmVhdGVIYW5kbGUoZmlsZVN5c3RlbVBhdGgsIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJl
YWRPbmx5LCBoYW5kbGUpOworCisgICAgICAgIGlmICghY3JlYXRlZEV4dGVuc2lvbikgeworICAg
ICAgICAgICAgV1RGTG9nQWx3YXlzKCJVbmFibGUgdG8gY3JlYXRlIHNhbmRib3ggZXh0ZW5zaW9u
IGhhbmRsZSBmb3IgR1BVUHJvY2VzcyB1cmwuXG4iKTsKKyAgICAgICAgICAgIG1fY2FjaGVkU3Rh
dGUubmV0d29ya1N0YXRlID0gTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZTo6Rm9ybWF0RXJyb3I7
CisgICAgICAgICAgICBtX3BsYXllci0+bmV0d29ya1N0YXRlQ2hhbmdlZCgpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSA9
IFdURk1vdmUoaGFuZGxlKTsKKyAgICB9CisKKyAgICBjb25uZWN0aW9uLnNlbmRXaXRoQXN5bmNS
ZXBseShNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OkxvYWQobV9pZCwg
dXJsLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBjb250ZW50VHlwZSwga2V5U3lzdGVtKSwgW3dl
YWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXShhdXRvJiYgY29uZmlndXJhdGlvbikgewogICAg
ICAgICBpZiAod2Vha1RoaXMpCiAgICAgICAgICAgICB3ZWFrVGhpcy0+bV9jb25maWd1cmF0aW9u
ID0gY29uZmlndXJhdGlvbjsKICAgICB9KTsKQEAgLTk3LDQ5ICsxMjUsNDkgQEAgdm9pZCBNZWRp
YVBsYXllclByaXZhdGVSZW1vdGU6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bG9hZChjb25z
dCBVUkwmIHVybCwgY28KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNhbmNlbExv
YWQoKQogewotICAgIG1fbWFuYWdlci5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLnNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpDYW5jZWxMb2FkKG1faWQpLCAwKTsK
KyAgICBtX21hbmFnZXIuZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChN
ZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OkNhbmNlbExvYWQobV9pZCks
IDApOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cHJlcGFyZVRvUGxheSgp
CiB7Ci0gICAgbV9tYW5hZ2VyLmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OlByZXBhcmVUb1BsYXkobV9pZCksIDApOwor
ICAgIG1fbWFuYWdlci5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1l
c3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6UHJlcGFyZVRvUGxheShtX2lk
KSwgMCk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpwbGF5KCkKIHsKICAg
ICBtX2NhY2hlZFN0YXRlLnBhdXNlZCA9IGZhbHNlOwotICAgIG1fbWFuYWdlci5ncHVQcm9jZXNz
Q29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5
OjpQbGF5KG1faWQpLCAwKTsKKyAgICBtX21hbmFnZXIuZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5j
b25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6
OlBsYXkobV9pZCksIDApOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cGF1
c2UoKQogewogICAgIG1fY2FjaGVkU3RhdGUucGF1c2VkID0gdHJ1ZTsKLSAgICBtX21hbmFnZXIu
Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1h
bmFnZXJQcm94eTo6UGF1c2UobV9pZCksIDApOworICAgIG1fbWFuYWdlci5ncHVQcm9jZXNzQ29u
bmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1h
bmFnZXJQcm94eTo6UGF1c2UobV9pZCksIDApOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZTo6c2V0UHJlc2VydmVzUGl0Y2goYm9vbCBwcmVzZXJ2ZXNQaXRjaCkKIHsKLSAgICBt
X21hbmFnZXIuZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRp
YVBsYXllck1hbmFnZXJQcm94eTo6U2V0UHJlc2VydmVzUGl0Y2gobV9pZCwgcHJlc2VydmVzUGl0
Y2gpLCAwKTsKKyAgICBtX21hbmFnZXIuZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9u
KCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OlNldFByZXNl
cnZlc1BpdGNoKG1faWQsIHByZXNlcnZlc1BpdGNoKSwgMCk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjpzZXRWb2x1bWVEb3VibGUoZG91YmxlIHZvbHVtZSkKIHsKLSAgICBt
X21hbmFnZXIuZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRp
YVBsYXllck1hbmFnZXJQcm94eTo6U2V0Vm9sdW1lKG1faWQsIHZvbHVtZSksIDApOworICAgIG1f
bWFuYWdlci5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6U2V0Vm9sdW1lKG1faWQsIHZvbHVtZSks
IDApOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0TXV0ZWQoYm9vbCBt
dXRlZCkKIHsKLSAgICBtX21hbmFnZXIuZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5zZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6U2V0TXV0ZWQobV9pZCwgbXV0ZWQp
LCAwKTsKKyAgICBtX21hbmFnZXIuZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCku
c2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OlNldE11dGVkKG1f
aWQsIG11dGVkKSwgMCk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRQ
cmVsb2FkKE1lZGlhUGxheWVyOjpQcmVsb2FkIHByZWxvYWQpCiB7Ci0gICAgbV9tYW5hZ2VyLmdw
dVByb2Nlc3NDb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyUHJveHk6OlNldFByZWxvYWQobV9pZCwgcHJlbG9hZCksIDApOworICAgIG1fbWFuYWdlci5n
cHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXJQcm94eTo6U2V0UHJlbG9hZChtX2lkLCBwcmVsb2FkKSwgMCk7CiB9
CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRQcml2YXRlQnJvd3NpbmdNb2Rl
KGJvb2wgcHJpdmF0ZU1vZGUpCiB7Ci0gICAgbV9tYW5hZ2VyLmdwdVByb2Nlc3NDb25uZWN0aW9u
KCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OlNldFByaXZh
dGVCcm93c2luZ01vZGUobV9pZCwgcHJpdmF0ZU1vZGUpLCAwKTsKKyAgICBtX21hbmFnZXIuZ3B1
UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyUHJveHk6OlNldFByaXZhdGVCcm93c2luZ01vZGUobV9pZCwgcHJpdmF0
ZU1vZGUpLCAwKTsKIH0KIAogTWVkaWFUaW1lIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y3Vy
cmVudE1lZGlhVGltZSgpIGNvbnN0CkBAIC0xNTAsMTMgKzE3OCwxMyBAQCBNZWRpYVRpbWUgTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjdXJyZW50TWVkaWFUaW1lKCkgY29uc3QKIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZWVrKGNvbnN0IE1lZGlhVGltZSYgdGltZSkKIHsKICAg
ICBtX3NlZWtpbmcgPSB0cnVlOwotICAgIG1fbWFuYWdlci5ncHVQcm9jZXNzQ29ubmVjdGlvbigp
LnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpTZWVrKG1faWQs
IHRpbWUpLCAwKTsKKyAgICBtX21hbmFnZXIuZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0
aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OlNlZWso
bV9pZCwgdGltZSksIDApOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2Vl
a1dpdGhUb2xlcmFuY2UoY29uc3QgTWVkaWFUaW1lJiB0aW1lLCBjb25zdCBNZWRpYVRpbWUmIG5l
Z2F0aXZlVG9sZXJhbmNlLCBjb25zdCBNZWRpYVRpbWUmIHBvc2l0aXZlVG9sZXJhbmNlKQogewog
ICAgIG1fc2Vla2luZyA9IHRydWU7Ci0gICAgbV9tYW5hZ2VyLmdwdVByb2Nlc3NDb25uZWN0aW9u
KCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OlNlZWtXaXRo
VG9sZXJhbmNlKG1faWQsIHRpbWUsIG5lZ2F0aXZlVG9sZXJhbmNlLCBwb3NpdGl2ZVRvbGVyYW5j
ZSksIDApOworICAgIG1fbWFuYWdlci5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24o
KS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6U2Vla1dpdGhU
b2xlcmFuY2UobV9pZCwgdGltZSwgbmVnYXRpdmVUb2xlcmFuY2UsIHBvc2l0aXZlVG9sZXJhbmNl
KSwgMCk7CiB9CiAKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpkaWRMb2FkaW5nUHJv
Z3Jlc3MoKSBjb25zdApAQCAtMzEzLDQyICszNDEsNDIgQEAgYm9vbCBNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6OnNob3VsZElnbm9yZUludHJpbnNpY1NpemUoKQogCiB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZTo6cHJlcGFyZUZvclJlbmRlcmluZygpCiB7Ci0gICAgbV9tYW5hZ2VyLmdw
dVByb2Nlc3NDb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyUHJveHk6OlByZXBhcmVGb3JSZW5kZXJpbmcobV9pZCksIDApOworICAgIG1fbWFuYWdlci5n
cHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXJQcm94eTo6UHJlcGFyZUZvclJlbmRlcmluZyhtX2lkKSwgMCk7CiB9
CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRTaXplKGNvbnN0IFdlYkNvcmU6
OkludFNpemUmIHNpemUpCiB7Ci0gICAgbV9tYW5hZ2VyLmdwdVByb2Nlc3NDb25uZWN0aW9uKCku
c2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OlNldFNpemUobV9p
ZCwgc2l6ZSksIDApOworICAgIG1fbWFuYWdlci5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5l
Y3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6U2V0
U2l6ZShtX2lkLCBzaXplKSwgMCk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
OjpzZXRWaXNpYmxlKGJvb2wgdmlzaWJsZSkKIHsKLSAgICBtX21hbmFnZXIuZ3B1UHJvY2Vzc0Nv
bm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6
U2V0VmlzaWJsZShtX2lkLCB2aXNpYmxlKSwgMCk7CisgICAgbV9tYW5hZ2VyLmdwdVByb2Nlc3ND
b25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVy
TWFuYWdlclByb3h5OjpTZXRWaXNpYmxlKG1faWQsIHZpc2libGUpLCAwKTsKIH0KIAogdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFNob3VsZE1haW50YWluQXNwZWN0UmF0aW8oYm9v
bCBtYWludGFpblJhdGlvKQogewotICAgIG1fbWFuYWdlci5ncHVQcm9jZXNzQ29ubmVjdGlvbigp
LnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpTZXRTaG91bGRN
YWludGFpbkFzcGVjdFJhdGlvKG1faWQsIG1haW50YWluUmF0aW8pLCAwKTsKKyAgICBtX21hbmFn
ZXIuZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OlNldFNob3VsZE1haW50YWluQXNwZWN0UmF0aW8o
bV9pZCwgbWFpbnRhaW5SYXRpbyksIDApOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZTo6c2V0VmlkZW9GdWxsc2NyZWVuRnJhbWUoV2ViQ29yZTo6RmxvYXRSZWN0IHJlY3QpCiB7
Ci0gICAgbV9tYW5hZ2VyLmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OlNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKG1faWQs
IHJlY3QpLCAwKTsKKyAgICBtX21hbmFnZXIuZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0
aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OlNldFZp
ZGVvRnVsbHNjcmVlbkZyYW1lKG1faWQsIHJlY3QpLCAwKTsKIH0KIAogdm9pZCBNZWRpYVBsYXll
clByaXZhdGVSZW1vdGU6OnNldFZpZGVvRnVsbHNjcmVlbkdyYXZpdHkoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJFbnVtczo6VmlkZW9HcmF2aXR5IGdyYXZpdHkpCiB7Ci0gICAgbV9tYW5hZ2VyLmdwdVBy
b2Nlc3NDb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
UHJveHk6OlNldFZpZGVvRnVsbHNjcmVlbkdyYXZpdHkobV9pZCwgZ3Jhdml0eSksIDApOworICAg
IG1fbWFuYWdlci5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6U2V0VmlkZW9GdWxsc2NyZWVuR3Jh
dml0eShtX2lkLCBncmF2aXR5KSwgMCk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlOjphY2NlbGVyYXRlZFJlbmRlcmluZ1N0YXRlQ2hhbmdlZCgpCiB7Ci0gICAgbV9tYW5hZ2Vy
LmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyUHJveHk6OkFjY2VsZXJhdGVkUmVuZGVyaW5nU3RhdGVDaGFuZ2VkKG1faWQsIG1fcGxh
eWVyLT5zdXBwb3J0c0FjY2VsZXJhdGVkUmVuZGVyaW5nKCkpLCAwKTsKKyAgICBtX21hbmFnZXIu
Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OkFjY2VsZXJhdGVkUmVuZGVyaW5nU3RhdGVDaGFuZ2Vk
KG1faWQsIG1fcGxheWVyLT5zdXBwb3J0c0FjY2VsZXJhdGVkUmVuZGVyaW5nKCkpLCAwKTsKIH0K
IAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldFNob3VsZERpc2FibGVTbGVlcChi
b29sIGRpc2FibGUpCiB7Ci0gICAgbV9tYW5hZ2VyLmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuc2Vu
ZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OlNldFNob3VsZERpc2Fi
bGVTbGVlcChtX2lkLCBkaXNhYmxlKSwgMCk7CisgICAgbV9tYW5hZ2VyLmdwdVByb2Nlc3NDb25u
ZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFu
YWdlclByb3h5OjpTZXRTaG91bGREaXNhYmxlU2xlZXAobV9pZCwgZGlzYWJsZSksIDApOwogfQog
CiBGbG9hdFNpemUgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpuYXR1cmFsU2l6ZSgpIGNvbnN0
CkBAIC04MTMsNyArODQxLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnJlcXVl
c3RSZXNvdXJjZShSZW1vdGVNZWRpYVJlc291cmNlSWRlbnRpZmllciByZW0KICAgICBBU1NFUlQo
IW1fbWVkaWFSZXNvdXJjZXMuY29udGFpbnMocmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIp
KTsKICAgICBhdXRvIHJlc291cmNlID0gbV9tZWRpYVJlc291cmNlTG9hZGVyLT5yZXF1ZXN0UmVz
b3VyY2UoV1RGTW92ZShyZXF1ZXN0KSwgb3B0aW9ucyk7CiAgICAgLy8gUGxhdGZvcm1NZWRpYVJl
c291cmNlIG93bnMgdGhlIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUNsaWVudAotICAgIHJlc291cmNl
LT5zZXRDbGllbnQobWFrZVVuaXF1ZTxSZW1vdGVNZWRpYVJlc291cmNlUHJveHk+KG1fbWFuYWdl
ci5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLCAqcmVzb3VyY2UsIHJlbW90ZU1lZGlhUmVzb3VyY2VJ
ZGVudGlmaWVyKSk7CisgICAgcmVzb3VyY2UtPnNldENsaWVudChtYWtlVW5pcXVlPFJlbW90ZU1l
ZGlhUmVzb3VyY2VQcm94eT4obV9tYW5hZ2VyLmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVj
dGlvbigpLCAqcmVzb3VyY2UsIHJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyKSk7CiAgICAg
bV9tZWRpYVJlc291cmNlcy5hZGQocmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIsIFdURk1v
dmUocmVzb3VyY2UpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmgKaW5kZXggOGQzMzU4
N2I1MDE2MTI3ZDkxOTQ1M2NhNjZlMzhiNGViNWQ4YTk3Yi4uNDE5NzVjZjU5NDg5NTA5NGIwNjY0
NDRhM2E0ZTEyY2Q0YWQyZmFmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNSU1F
VHlwZUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
TWVkaWFQbGF5ZXJNSU1FVHlwZUNhY2hlLmNwcAppbmRleCA2ZDU3ZmMyMTA3MmY1NTNlNDcwYTE3
MmNjYWYzNjljYzAyZjM3NDU2Li5mZTk0NTViYzY3MjVmODNhOTBjZTRiZmFhYWExZjlkMWIwNjlm
ZTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZU1lZGlhUGxheWVyTUlNRVR5cGVDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1JTUVUeXBlQ2FjaGUuY3BwCkBAIC04Nyw3
ICs4Nyw3IEBAIGJvb2wgUmVtb3RlTWVkaWFQbGF5ZXJNSU1FVHlwZUNhY2hlOjppc1Vuc3VwcG9y
dGVkQ29udGFpbmVyVHlwZShjb25zdCBTdHJpbmcmIHR5CiBib29sIFJlbW90ZU1lZGlhUGxheWVy
TUlNRVR5cGVDYWNoZTo6Y2FuRGVjb2RlRXh0ZW5kZWRUeXBlKGNvbnN0IFdlYkNvcmU6OkNvbnRl
bnRUeXBlJiB0eXBlKQogewogICAgIGJvb2wgcmVzdWx0OwotICAgIGlmICghbV9tYW5hZ2VyLmdw
dVByb2Nlc3NDb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVy
TWFuYWdlclByb3h5OjpDYW5EZWNvZGVFeHRlbmRlZFR5cGUobV9lbmdpbmVJZGVudGlmaWVyLCB0
eXBlLnJhdygpKSwgTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpDYW5E
ZWNvZGVFeHRlbmRlZFR5cGU6OlJlcGx5KHJlc3VsdCksIDApKQorICAgIGlmICghbV9tYW5hZ2Vy
LmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpS
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6Q2FuRGVjb2RlRXh0ZW5kZWRUeXBlKG1fZW5n
aW5lSWRlbnRpZmllciwgdHlwZS5yYXcoKSksIE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1h
bmFnZXJQcm94eTo6Q2FuRGVjb2RlRXh0ZW5kZWRUeXBlOjpSZXBseShyZXN1bHQpLCAwKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTEwOCw3ICsxMDgs
NyBAQCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpTdXBwb3J0c1R5cGUgUmVtb3RlTWVkaWFQ
bGF5ZXJNSU1FVHlwZUNhY2hlOjpzdXBwb3J0cwogICAgIH0KIAogICAgIE1lZGlhUGxheWVyOjpT
dXBwb3J0c1R5cGUgcmVzdWx0OwotICAgIGlmICghbV9tYW5hZ2VyLmdwdVByb2Nlc3NDb25uZWN0
aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpT
dXBwb3J0c1R5cGVBbmRDb2RlY3MobV9lbmdpbmVJZGVudGlmaWVyLCBwYXJhbWV0ZXJzKSwgTWVz
c2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpTdXBwb3J0c1R5cGVBbmRDb2Rl
Y3M6OlJlcGx5KHJlc3VsdCksIDApKQorICAgIGlmICghbV9tYW5hZ2VyLmdwdVByb2Nlc3NDb25u
ZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXJQcm94eTo6U3VwcG9ydHNUeXBlQW5kQ29kZWNzKG1fZW5naW5lSWRlbnRpZmllciwg
cGFyYW1ldGVycyksIE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6U3Vw
cG9ydHNUeXBlQW5kQ29kZWNzOjpSZXBseShyZXN1bHQpLCAwKSkKICAgICAgICAgcmV0dXJuIE1l
ZGlhUGxheWVyOjpTdXBwb3J0c1R5cGU6OklzTm90U3VwcG9ydGVkOwogCiAgICAgaWYgKCFtX3N1
cHBvcnRzVHlwZUFuZENvZGVjc0NhY2hlKQpAQCAtMTI1LDcgKzEyNSw3IEBAIHZvaWQgUmVtb3Rl
TWVkaWFQbGF5ZXJNSU1FVHlwZUNhY2hlOjppbml0aWFsaXplQ2FjaGUoSGFzaFNldDxTdHJpbmcs
IEFTQ0lJQ2FzZUluCiAgICAgICAgIHJldHVybjsKIAogICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVz
OwotICAgIGlmICghbV9tYW5hZ2VyLmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVz
c2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpHZXRTdXBwb3J0ZWRUeXBlcyht
X2VuZ2luZUlkZW50aWZpZXIpLCBNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJv
eHk6OkdldFN1cHBvcnRlZFR5cGVzOjpSZXBseSh0eXBlcyksIDApKQorICAgIGlmICghbV9tYW5h
Z2VyLmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2Vz
OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6R2V0U3VwcG9ydGVkVHlwZXMobV9lbmdp
bmVJZGVudGlmaWVyKSwgTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpH
ZXRTdXBwb3J0ZWRUeXBlczo6UmVwbHkodHlwZXMpLCAwKSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgZm9yIChhdXRvJiB0eXBlIDogdHlwZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5jcHAK
aW5kZXggMjVjYzU2M2YzZWJkNTljNTcwYjY2YmU5NDAzYjdjZTcyOTBkMjhkZS4uNmVjYmJlYWJi
Y2JjM2E4NTMxMTIwODRlM2YzMzY3ZjdjNmM1ODQxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyLmNwcApAQCAtMjgsNyArMjgsNiBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCi0j
aW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGUuaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllckNvbmZpZ3VyYXRpb24u
aCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllck1JTUVUeXBlQ2FjaGUuaCIKQEAgLTE2NCw3
ICsxNjMsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlPiBS
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OmNyZWF0ZVJlbQogICAgIHByb3h5Q29uZmlndXJhdGlv
bi5pc1ZpZGVvID0gcGxheWVyLT5pc1ZpZGVvUGxheWVyKCk7CiAKICAgICBSZW1vdGVNZWRpYVBs
YXllckNvbmZpZ3VyYXRpb24gcGxheWVyQ29uZmlndXJhdGlvbjsKLSAgICBib29sIHNlbmRTdWNj
ZWVkZWQgPSBncHVQcm9jZXNzQ29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXJQcm94eTo6Q3JlYXRlTWVkaWFQbGF5ZXIoaWQsIHJlbW90ZUVuZ2lu
ZUlkZW50aWZpZXIsIHByb3h5Q29uZmlndXJhdGlvbiksIE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBs
YXllck1hbmFnZXJQcm94eTo6Q3JlYXRlTWVkaWFQbGF5ZXI6OlJlcGx5KHBsYXllckNvbmZpZ3Vy
YXRpb24pLCAwKTsKKyAgICBib29sIHNlbmRTdWNjZWVkZWQgPSBncHVQcm9jZXNzQ29ubmVjdGlv
bigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyUHJveHk6OkNyZWF0ZU1lZGlhUGxheWVyKGlkLCByZW1vdGVFbmdpbmVJZGVudGlmaWVyLCBw
cm94eUNvbmZpZ3VyYXRpb24pLCBNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJv
eHk6OkNyZWF0ZU1lZGlhUGxheWVyOjpSZXBseShwbGF5ZXJDb25maWd1cmF0aW9uKSwgMCk7CiAg
ICAgaWYgKCFzZW5kU3VjY2VlZGVkKSB7CiAgICAgICAgIFdURkxvZ0Fsd2F5cygiRmFpbGVkIHRv
IGNyZWF0ZSByZW1vdGUgbWVkaWEgcGxheWVyLiIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
QEAgLTE3OCw3ICsxNzcsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFQbGF5ZXJQcml2YXRlSW50
ZXJmYWNlPiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OmNyZWF0ZVJlbQogdm9pZCBSZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXI6OmRlbGV0ZVJlbW90ZU1lZGlhUGxheWVyKE1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQpCiB7CiAgICAgbV9wbGF5ZXJzLnRha2UoaWQpOwotICAg
IGdwdVByb2Nlc3NDb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyUHJveHk6OkRlbGV0ZU1lZGlhUGxheWVyKGlkKSwgMCk7CisgICAgZ3B1UHJvY2Vzc0Nv
bm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyUHJveHk6OkRlbGV0ZU1lZGlhUGxheWVyKGlkKSwgMCk7CiB9CiAKIHZvaWQgUmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyOjpnZXRTdXBwb3J0ZWRUeXBlcyhNZWRpYVBsYXllckVudW1zOjpN
ZWRpYUVuZ2luZUlkZW50aWZpZXIgcmVtb3RlRW5naW5lSWRlbnRpZmllciwgSGFzaFNldDxTdHJp
bmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHJlc3VsdCkKQEAgLTE5Miw3ICsxOTEsNyBA
QCB2b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6Z2V0U3VwcG9ydGVkVHlwZXMoTWVkaWFQ
bGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZAogICAgIH0KIAogICAgIFZlY3RvcjxTdHJpbmc+IHR5
cGVzOwotICAgIGlmICghZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OkdldFN1cHBvcnRlZFR5cGVzKHJlbW90ZUVu
Z2luZUlkZW50aWZpZXIpLCBNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6
OkdldFN1cHBvcnRlZFR5cGVzOjpSZXBseSh0eXBlcyksIDApKQorICAgIGlmICghZ3B1UHJvY2Vz
c0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlclByb3h5OjpHZXRTdXBwb3J0ZWRUeXBlcyhyZW1vdGVFbmdpbmVJZGVudGlm
aWVyKSwgTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpHZXRTdXBwb3J0
ZWRUeXBlczo6UmVwbHkodHlwZXMpLCAwKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgcmVzdWx0
ID0gSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4oKTsKQEAgLTIxNCw3
ICsyMTMsNyBAQCBib29sIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6c3VwcG9ydHNLZXlTeXN0
ZW0oTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZAogSGFzaFNldDxSZWZQdHI8U2VjdXJp
dHlPcmlnaW4+PiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6Om9yaWdpbnNJbk1lZGlhQ2FjaGUo
TWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIHJlbW90ZUVuZ2luZUlkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICBWZWN0b3I8U2VjdXJpdHlPcmlnaW5E
YXRhPiBvcmlnaW5EYXRhOwotICAgIGlmICghZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5zZW5kU3lu
YyhNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6Ok9yaWdpbnNJbk1lZGlh
Q2FjaGUocmVtb3RlRW5naW5lSWRlbnRpZmllciwgcGF0aCksIE1lc3NhZ2VzOjpSZW1vdGVNZWRp
YVBsYXllck1hbmFnZXJQcm94eTo6T3JpZ2luc0luTWVkaWFDYWNoZTo6UmVwbHkob3JpZ2luRGF0
YSksIDApKQorICAgIGlmICghZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2Vu
ZFN5bmMoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpPcmlnaW5zSW5N
ZWRpYUNhY2hlKHJlbW90ZUVuZ2luZUlkZW50aWZpZXIsIHBhdGgpLCBNZXNzYWdlczo6UmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6Ok9yaWdpbnNJbk1lZGlhQ2FjaGU6OlJlcGx5KG9yaWdp
bkRhdGEpLCAwKSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIEhhc2hTZXQ8UmVmUHRyPFNl
Y3VyaXR5T3JpZ2luPj4gb3JpZ2luczsKQEAgLTIyNiw3ICsyMjUsNyBAQCBIYXNoU2V0PFJlZlB0
cjxTZWN1cml0eU9yaWdpbj4+IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6b3JpZ2luc0luTWVk
aWFDYWNoZShNZQogCiB2b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6Y2xlYXJNZWRpYUNh
Y2hlKE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllciByZW1vdGVFbmdpbmVJ
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHBhdGgsIFdhbGxUaW1lIG1vZGlmaWVkU2luY2UpCiB7
Ci0gICAgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBs
YXllck1hbmFnZXJQcm94eTo6Q2xlYXJNZWRpYUNhY2hlKHJlbW90ZUVuZ2luZUlkZW50aWZpZXIs
IHBhdGgsIG1vZGlmaWVkU2luY2UpLCAwKTsKKyAgICBncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNv
bm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6
Q2xlYXJNZWRpYUNhY2hlKHJlbW90ZUVuZ2luZUlkZW50aWZpZXIsIHBhdGgsIG1vZGlmaWVkU2lu
Y2UpLCAwKTsKIH0KIAogdm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OmNsZWFyTWVkaWFD
YWNoZUZvck9yaWdpbnMoTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyIHJl
bW90ZUVuZ2luZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgSGFzaFNldDxS
ZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiYgb3JpZ2lucykKQEAgLTIzNSw3ICsyMzQsNyBAQCB2b2lk
IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6Y2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyhNZWRp
YVBsYXllckVudW1zOjpNZWRpYQogICAgICAgICByZXR1cm4gb3JpZ2luLT5kYXRhKCk7CiAgICAg
fSk7CiAKLSAgICBncHVQcm9jZXNzQ29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlclByb3h5OjpDbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKHJlbW90ZUVu
Z2luZUlkZW50aWZpZXIsIHBhdGgsIG9yaWdpbkRhdGEpLCAwKTsKKyAgICBncHVQcm9jZXNzQ29u
bmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllck1h
bmFnZXJQcm94eTo6Q2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyhyZW1vdGVFbmdpbmVJZGVudGlm
aWVyLCBwYXRoLCBvcmlnaW5EYXRhKSwgMCk7CiB9CiAKIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyOjpuZXR3b3JrU3RhdGVDaGFuZ2VkKE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50
aWZpZXIgaWQsIFJlbW90ZU1lZGlhUGxheWVyU3RhdGUmJiBzdGF0ZSkKQEAgLTMzMyw5ICszMzIs
MTIgQEAgdm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OnVwZGF0ZUNhY2hlZFN0YXRlKFdl
YktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3QKICAgICAgICAgcGxheWVyLT51cGRhdGVDYWNo
ZWRTdGF0ZShXVEZNb3ZlKHN0YXRlKSk7CiB9CiAKLUlQQzo6Q29ubmVjdGlvbiYgUmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyOjpncHVQcm9jZXNzQ29ubmVjdGlvbigpIGNvbnN0CitHUFVQcm9jZXNz
Q29ubmVjdGlvbiYgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpncHVQcm9jZXNzQ29ubmVjdGlv
bigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQ
VVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpOworICAgIGlmICghbV9ncHVQcm9jZXNz
Q29ubmVjdGlvbikKKyAgICAgICAgbV9ncHVQcm9jZXNzQ29ubmVjdGlvbiA9ICZXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5lbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpOworCisgICAgcmV0dXJu
ICptX2dwdVByb2Nlc3NDb25uZWN0aW9uOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZU1lZGlhUGxheWVyTWFuYWdlci5oCmluZGV4IGY1ODg1Y2VlMDVkOWE1ZjY0ZTczNDNjOGIzZGM4
MzFmZGY5OGY2YWQuLjQ2ODllMDI4YjY3ZDQ5ZjNmMjc3OTllYThlYWNkNzIyZGZlYjBiODkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE5LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoR1BV
X1BST0NFU1MpCiAKKyNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUg
Ik1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJNZXNzYWdl
UmVjZWl2ZXIuaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllclN0YXRlLmgiCkBAIC01NCwx
MCArNTUsMTEgQEAgcHVibGljOgogICAgIH5SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIoKTsKIAog
ICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgpOworICAgIFdlYlByb2Nlc3Mm
IHBhcmVudFByb2Nlc3MoKSBjb25zdCB7IHJldHVybiBtX3Byb2Nlc3M7IH0KIAogICAgIHZvaWQg
dXBkYXRlUHJlZmVyZW5jZXMoY29uc3QgV2ViQ29yZTo6U2V0dGluZ3MmKTsKIAotICAgIElQQzo6
Q29ubmVjdGlvbiYgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKSBjb25zdDsKKyAgICBHUFVQcm9jZXNz
Q29ubmVjdGlvbiYgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKSBjb25zdDsKIAogICAgIHZvaWQgZGlk
UmVjZWl2ZU1lc3NhZ2VGcm9tR1BVUHJvY2VzcyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24s
IElQQzo6RGVjb2RlciYgZGVjb2RlcikgeyBkaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBk
ZWNvZGVyKTsgfQogCkBAIC0xMDEsNiArMTAzLDcgQEAgcHJpdmF0ZToKIAogICAgIEhhc2hNYXA8
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciwgV2Vha1B0cjxNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGU+PiBtX3BsYXllcnM7CiAgICAgV2ViUHJvY2VzcyYgbV9wcm9jZXNzOworICAg
IG11dGFibGUgR1BVUHJvY2Vzc0Nvbm5lY3Rpb24qIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24geyBu
dWxscHRyIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCBjZWVjOTRlMzM3YzdhMzQ1MjRjZTU2Y2Q2MzZhMzky
ZDIyYTBkYmQ1Li5mODE5ZGEwYjVmZTVjOTJhOGQ3ZGYzMjY1NmQ1MDBiYTIxN2I1MDM5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwOS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTI5OSw2ICsxMjk5LDEw
IEBAIEdQVVByb2Nlc3NDb25uZWN0aW9uJiBXZWJQcm9jZXNzOjplbnN1cmVHUFVQcm9jZXNzQ29u
bmVjdGlvbigpCiAgICAgICAgICAgICBDUkFTSCgpOwogCiAgICAgICAgIG1fZ3B1UHJvY2Vzc0Nv
bm5lY3Rpb24gPSBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlKGNvbm5lY3Rpb25JbmZvLnJl
bGVhc2VJZGVudGlmaWVyKCkpOworI2lmIEhBVkUoQVVESVRfVE9LRU4pCisgICAgICAgIEFTU0VS
VChjb25uZWN0aW9uSW5mby5hdWRpdFRva2VuKTsKKyAgICAgICAgbV9ncHVQcm9jZXNzQ29ubmVj
dGlvbi0+c2V0QXVkaXRUb2tlbihXVEZNb3ZlKGNvbm5lY3Rpb25JbmZvLmF1ZGl0VG9rZW4pKTsK
KyNlbmRpZgogICAgIH0KICAgICAKICAgICByZXR1cm4gKm1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb247
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggYmE4NjMxNjg5NTRiMWI4ZWE4MmY0ODg2YTg5Mjg3NDIwNjExNzA2Yi4uNGI2NDEx
MTEwZWIxMmMzNGU3MWM3Mjk0MDExZTBiZGZhNGEwN2MyMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBA
CisyMDIwLTAxLTA5ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisg
ICAgICAgIFtNZWRpYSBpbiBHUFUgcHJvY2Vzc10gRXh0ZW5kIHRoZSBHUFUgcHJvY2VzcyBzYW5k
Ym94IHRvIGFsbG93IGFjY2VzcyB0byBsb2NhbCBmaWxlcyB3aGVuIG5lY2Vzc2FyeQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1OTY3CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS81ODQyNTAyMD4KKworICAgICAgICBSZXZpZXdlZCBieSB5b3Vlbm4g
ZmFibGV0LgorCisgICAgICAgICogZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9uczoKKwogMjAy
MC0wMS0wOSAgUGFibG8gU2FhdmVkcmEgIDxwc2FhdmVkcmFAaWdhbGlhLmNvbT4KIAogICAgICAg
ICBCYWQgYmFzZWxpbmUgZm9yIENhdGFsaW5hIG9uIHhociB3ZWItcGxhdGZvcm0tdGVzdHMgaW1w
b3J0ZWQgaW4gcjI1NDE1NApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZ3B1LXByb2Nlc3MvVGVz
dEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL2dwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnMK
aW5kZXggZDAxZDViMTg1NjlmYzQ2NDZlNGJkM2JmMzcxMDdlMjNhZmNmMDg1Yi4uYTUxNjMzZmZh
ZGIyNDBjYjI3ZGJkMWQ2NGE0YzMwMGI1MDhkMWVlZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
Z3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9ncHUtcHJvY2Vz
cy9UZXN0RXhwZWN0YXRpb25zCkBAIC0xNzksMTQgKzE3OSw0NiBAQCBsZWdhY3ktYW5pbWF0aW9u
LWVuZ2luZS9pbXBvcnRlZC9ibGluay9jb21wb3NpdGluZy9zcXVhc2hpbmcvcmVtb3ZlLWZyb20t
Z3JvdXBlZAogaW5zcGVjdG9yL2xheWVycy9sYXllcnMtY29tcG9zaXRpbmctcmVhc29ucy5odG1s
IFsgU2tpcCBdCiAKIG1lZGlhIFsgU2tpcCBdCi1tZWRpYS9hdWRpby1wbGF5LXdpdGgtdmlkZW8t
ZWxlbWVudC5odG1sIFsgUGFzcyBdCi1tZWRpYS9hdWRpby1wbGF5Lmh0bWwgWyBQYXNzIF0KLW1l
ZGlhL21lZGlhLWNhbi1wbGF5LW1wZWctYXVkaW8uaHRtbCBbIFBhc3MgXQotbWVkaWEvbWVkaWEt
Y2FuLXBsYXktd2F2LWF1ZGlvLmh0bWwgWyBQYXNzIF0KIG1lZGlhL21lZGlhLWNvbnRyb2xsZXIu
aHRtbCBbIFBhc3MgXQogbWVkaWEvbWVkaWEtcHJlbG9hZC1uby1kZWxheS1sb2FkZXZlbnQuaHRt
bCBbIFBhc3MgXQogbWVkaWEvdmlkZW8tc3JjLmh0bWwgWyBQYXNzIF0KIG1lZGlhL3ZpZGVvLXNv
dXJjZS5odG1sIFsgUGFzcyBdCittZWRpYS9hdWRpby1hcy12aWRlby1mdWxsc2NyZWVuLmh0bWwg
WyBQYXNzIF0KK21lZGlhL2F1ZGlvLWJhY2tncm91bmQtcGxheWJhY2stcGxheWxpc3QuaHRtbCBb
IFBhc3MgXQorbWVkaWEvYXVkaW8tY29uY3VycmVudC1zdXBwb3J0ZWQuaHRtbCBbIFBhc3MgXQor
bWVkaWEvYXVkaW8tY29uc3RydWN0b3ItcHJlbG9hZC5odG1sIFsgUGFzcyBdCittZWRpYS9hdWRp
by1jb25zdHJ1Y3Rvci1zcmMuaHRtbCBbIFBhc3MgXQorbWVkaWEvYXVkaW8tY29uc3RydWN0b3Iu
aHRtbCBbIFBhc3MgXQorbWVkaWEvYXVkaW8tY29udHJvbHMtZG8tbm90LWZhZGUtb3V0Lmh0bWwg
WyBQYXNzIF0KK21lZGlhL2F1ZGlvLWNvbnRyb2xzLXRpbWVsaW5lLWluLW1lZGlhLWRvY3VtZW50
Lmh0bWwgWyBQYXNzIF0KK21lZGlhL2F1ZGlvLWRlYWxsb2MtY3Jhc2guaHRtbCBbIFBhc3MgXQor
bWVkaWEvYXVkaW8tZGVsZXRlLXdoaWxlLXNsaWRlci10aHVtYi1jbGlja2VkLmh0bWwgWyBQYXNz
IF0KK21lZGlhL2F1ZGlvLWdhcmJhZ2UtY29sbGVjdC5odG1sIFsgUGFzcyBdCittZWRpYS9hdWRp
by1tcGVnLXN1cHBvcnRlZC5odG1sIFsgUGFzcyBdCittZWRpYS9hdWRpby1tcGVnNC1zdXBwb3J0
ZWQuaHRtbCBbIFBhc3MgXQorbWVkaWEvYXVkaW8tbm8taW5zdGFsbGVkLWVuZ2luZXMuaHRtbCBb
IFBhc3MgXQorbWVkaWEvYXVkaW8tb25seS12aWRlby1pbnRyaW5zaWMtc2l6ZS5odG1sIFsgUGFz
cyBdCittZWRpYS9hdWRpby1wbGF5LWV2ZW50Lmh0bWwgWyBQYXNzIF0KK21lZGlhL2F1ZGlvLXBs
YXktd2l0aC12aWRlby1lbGVtZW50Lmh0bWwgWyBQYXNzIF0KK21lZGlhL2F1ZGlvLXBsYXkuaHRt
bCBbIFBhc3MgXQorbWVkaWEvYXVkaW8tcGxheWJhY2stcmVzdHJpY3Rpb24tYXV0b3BsYXkuaHRt
bCBbIFBhc3MgXQorbWVkaWEvYXVkaW8tcGxheWJhY2stcmVzdHJpY3Rpb24tcGxheS1tdXRlZC5o
dG1sIFsgUGFzcyBdCittZWRpYS9hdWRpby1wbGF5YmFjay1yZXN0cmljdGlvbi1wbGF5Lmh0bWwg
WyBQYXNzIF0KK21lZGlhL2F1ZGlvLXBsYXliYWNrLXJlc3RyaWN0aW9uLXJlbW92ZWQtbXV0ZWQu
aHRtbCBbIFBhc3MgXQorbWVkaWEvYXVkaW8tcGxheWJhY2stdm9sdW1lLWNoYW5nZXMtd2l0aC1y
ZXN0cmljdGlvbnMtYW5kLXVzZXItZ2VzdHVyZXMuaHRtbCBbIFBhc3MgXQorbWVkaWEvYXVkaW8t
cGxheWJhY2stdm9sdW1lLWNoYW5nZXMtd2l0aC1yZXN0cmljdGlvbnMuaHRtbCBbIFBhc3MgXQor
bWVkaWEvZGVhY3RpdmF0ZS1hdWRpby1zZXNzaW9uLmh0bWwgWyBQYXNzIF0KK21lZGlhL21lZGlh
LWNhbi1wbGF5LW1wZWctYXVkaW8uaHRtbCBbIFBhc3MgXQorbWVkaWEvbWVkaWEtY2FuLXBsYXkt
d2F2LWF1ZGlvLmh0bWwgWyBQYXNzIF0KK21lZGlhL21lZGlhLWRvY3VtZW50LWF1ZGlvLWNvbnRy
b2xzLXZpc2libGUuaHRtbCBbIFBhc3MgXQorbWVkaWEvbWVkaWEtZG9jdW1lbnQtYXVkaW8tcmVw
YWludC5odG1sIFsgUGFzcyBdCittZWRpYS9tZWRpYS1kb2N1bWVudC1hdWRpby1zaXplLmh0bWwg
WyBQYXNzIF0KK21lZGlhL211dGVkLXZpZGVvLWlzLXBsYXlpbmctYXVkaW8uaHRtbCBbIFBhc3Mg
XQorbWVkaWEvcmVzdHJpY3RlZC1hdWRpby1wbGF5YmFjay13aXRoLWRvY3VtZW50LWdlc3R1cmUu
aHRtbCBbIFBhc3MgXQorbWVkaWEvcmVzdHJpY3RlZC1hdWRpby1wbGF5YmFjay13aXRoLW11bHRp
cGxlLXNldHRpbWVvdXRzLmh0bWwgWyBQYXNzIF0KK21lZGlhL3ZpZGVvLWNvbnRyb2xzLXZpc2li
bGUtYXVkaW8tb25seS5odG1sIFsgUGFzcyBdCittZWRpYS92aWRlby1wbGF5LWF1ZGlvLXJlcXVp
cmUtdXNlci1nZXN0dXJlLmh0bWwgWyBQYXNzIF0KKwogYWNjZXNzaWJpbGl0eS9tZWRpYS1lbGVt
ZW50Lmh0bWwgWyBTa2lwIF0KIGZhc3QvYmxvY2svZmxvYXQvbGlzdC1tYXJrZXItaXMtZmxvYXQt
Y3Jhc2guaHRtbCBbIFNraXAgXQogZmFzdC9jc3MvcmVsYXRpdmUtcG9zaXRpb24tcmVwbGFjZWQt
aW4tdGFibGUtZGlzcGxheS1jcmFzaC5odG1sIFsgU2tpcCBdCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>