<?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>208402</bug_id>
          
          <creation_ts>2020-02-28 17:15:48 -0800</creation_ts>
          <short_desc>[GPUP] Implement Legacy EME API in the GPU Process</short_desc>
          <delta_ts>2020-03-10 15:06:38 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jer Noble">jer.noble</reporter>
          <assigned_to name="Jer Noble">jer.noble</assigned_to>
          <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jonlee</cc>
    
    <cc>mkwst</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1624193</commentid>
    <comment_count>0</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-02-28 17:15:48 -0800</bug_when>
    <thetext>[GPUP] Implement Legacy EME API in the GPU Process</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1624198</commentid>
    <comment_count>1</comment_count>
      <attachid>392036</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-02-28 17:26:18 -0800</bug_when>
    <thetext>Created attachment 392036
Part 1: WebCore</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1624200</commentid>
    <comment_count>2</comment_count>
      <attachid>392038</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-02-28 17:30:52 -0800</bug_when>
    <thetext>Created attachment 392038
Part 2: WebKit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1624359</commentid>
    <comment_count>3</comment_count>
      <attachid>392087</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-02-29 19:39:26 -0800</bug_when>
    <thetext>Created attachment 392087
Part 1: WebCore</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1624360</commentid>
    <comment_count>4</comment_count>
      <attachid>392088</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-02-29 19:40:02 -0800</bug_when>
    <thetext>Created attachment 392088
Part 2: WebKit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626531</commentid>
    <comment_count>5</comment_count>
      <attachid>392683</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-03-05 23:00:33 -0800</bug_when>
    <thetext>Created attachment 392683
Part 1: WebCore</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626532</commentid>
    <comment_count>6</comment_count>
      <attachid>392684</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-03-05 23:13:40 -0800</bug_when>
    <thetext>Created attachment 392684
Part 2: WebKit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626960</commentid>
    <comment_count>7</comment_count>
      <attachid>392800</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-03-06 16:28:29 -0800</bug_when>
    <thetext>Created attachment 392800
Part 1: WebCore</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627051</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-03-06 18:02:11 -0800</bug_when>
    <thetext>&lt;rdar://problem/60178488&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627461</commentid>
    <comment_count>9</comment_count>
      <attachid>392800</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-03-07 21:13:15 -0800</bug_when>
    <thetext>Comment on attachment 392800
Part 1: WebCore

Clearing flags on attachment: 392800

Committed r258100: &lt;https://trac.webkit.org/changeset/258100&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627530</commentid>
    <comment_count>10</comment_count>
      <attachid>392684</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2020-03-08 11:37:13 -0700</bug_when>
    <thetext>Comment on attachment 392684
Part 2: WebKit

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

&gt; Source/WebKit/WebProcess/GPU/media/RemoteLegacyCDMFactory.cpp:82
&gt; +    gpuProcessConnection().connection().sendSync(Messages::RemoteLegacyCDMFactoryProxy::SupportsKeySystem(keySystem, WTF::nullopt), Messages::RemoteLegacyCDMFactoryProxy::SupportsKeySystem::Reply(supported), { });

It would be good to cache results so we only need to make one sync IPC per key system

&gt; Source/WebKit/WebProcess/GPU/media/RemoteLegacyCDMFactory.cpp:89
&gt; +    gpuProcessConnection().connection().sendSync(Messages::RemoteLegacyCDMFactoryProxy::SupportsKeySystem(keySystem, mimeType), Messages::RemoteLegacyCDMFactoryProxy::SupportsKeySystem::Reply(supported), { });

Ditto for key system + MIME type

&gt; Source/WebKit/WebProcess/GPU/media/RemoteLegacyCDMFactory.cpp:141
&gt; +
&gt; +

Nit: two blanks

&gt; Source/WebKit/WebProcess/GPU/media/RemoteLegacyCDMSession.cpp:72
&gt; +    return { SharedBuffer::create((const char*)array-&gt;data(), array-&gt;byteLength()) };

Is the cast necessary (you don&apos;t have one in convertToOptionalDataReference)?

&gt; Source/WebKit/WebProcess/GPU/media/RemoteLegacyCDMSession.cpp:131
&gt; +    m_factory-&gt;gpuProcessConnection().connection().sendSync(Messages::RemoteLegacyCDMSessionProxy::CachedKeyForKeyID(keyId), Messages::RemoteLegacyCDMSessionProxy::CachedKeyForKeyID::Reply(ipcKey), m_identifier);

Can these be cached here so we only need to make one sync IPC per cached key ID?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627532</commentid>
    <comment_count>11</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-03-08 11:49:39 -0700</bug_when>
    <thetext>(In reply to Eric Carlson from comment #10)
&gt; Comment on attachment 392684 [details]
&gt; Part 2: WebKit
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=392684&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/WebProcess/GPU/media/RemoteLegacyCDMFactory.cpp:82
&gt; &gt; +    gpuProcessConnection().connection().sendSync(Messages::RemoteLegacyCDMFactoryProxy::SupportsKeySystem(keySystem, WTF::nullopt), Messages::RemoteLegacyCDMFactoryProxy::SupportsKeySystem::Reply(supported), { });
&gt; 
&gt; It would be good to cache results so we only need to make one sync IPC per
&gt; key system
&gt; 
&gt; &gt; Source/WebKit/WebProcess/GPU/media/RemoteLegacyCDMFactory.cpp:89
&gt; &gt; +    gpuProcessConnection().connection().sendSync(Messages::RemoteLegacyCDMFactoryProxy::SupportsKeySystem(keySystem, mimeType), Messages::RemoteLegacyCDMFactoryProxy::SupportsKeySystem::Reply(supported), { });
&gt; 
&gt; Ditto for key system + MIME type

Okay, will do for both.

&gt; &gt; Source/WebKit/WebProcess/GPU/media/RemoteLegacyCDMFactory.cpp:141
&gt; &gt; +
&gt; &gt; +
&gt; 
&gt; Nit: two blanks

Removed.

&gt; &gt; Source/WebKit/WebProcess/GPU/media/RemoteLegacyCDMSession.cpp:72
&gt; &gt; +    return { SharedBuffer::create((const char*)array-&gt;data(), array-&gt;byteLength()) };
&gt; 
&gt; Is the cast necessary (you don&apos;t have one in convertToOptionalDataReference)?

Looks like it&apos;s not necessary. Removed.

&gt; &gt; Source/WebKit/WebProcess/GPU/media/RemoteLegacyCDMSession.cpp:131
&gt; &gt; +    m_factory-&gt;gpuProcessConnection().connection().sendSync(Messages::RemoteLegacyCDMSessionProxy::CachedKeyForKeyID(keyId), Messages::RemoteLegacyCDMSessionProxy::CachedKeyForKeyID::Reply(ipcKey), m_identifier);
&gt; 
&gt; Can these be cached here so we only need to make one sync IPC per cached key
&gt; ID?

This one is harder than the other two, since it&apos;s expected that the cached key will change. We&apos;d need to add invalidation messages when the cached key changes, but I guess we could. Let me try.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627536</commentid>
    <comment_count>12</comment_count>
      <attachid>392967</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-03-08 12:03:45 -0700</bug_when>
    <thetext>Created attachment 392967
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627543</commentid>
    <comment_count>13</comment_count>
      <attachid>392970</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-03-08 12:21:21 -0700</bug_when>
    <thetext>Created attachment 392970
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627546</commentid>
    <comment_count>14</comment_count>
      <attachid>392971</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-03-08 12:24:23 -0700</bug_when>
    <thetext>Created attachment 392971
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627550</commentid>
    <comment_count>15</comment_count>
      <attachid>392974</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-03-08 12:33:20 -0700</bug_when>
    <thetext>Created attachment 392974
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627625</commentid>
    <comment_count>16</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-03-08 17:34:53 -0700</bug_when>
    <thetext>Committed r258122: &lt;https://trac.webkit.org/changeset/258122&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627628</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-03-08 17:35:51 -0700</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 392974:

editing/spelling/spellcheck-async-remove-frame.html bug 160571 (authors: morrita@google.com, rniwa@webkit.org, and tony@chromium.org)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627858</commentid>
    <comment_count>18</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-03-09 11:31:17 -0700</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627859</commentid>
    <comment_count>19</comment_count>
      <attachid>393057</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-03-09 11:31:18 -0700</bug_when>
    <thetext>Created attachment 393057
Follow up fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627860</commentid>
    <comment_count>20</comment_count>
      <attachid>392974</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-03-09 11:32:31 -0700</bug_when>
    <thetext>Comment on attachment 392974
Patch for landing

Rejecting attachment 392974 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-03&apos;, &apos;apply-attachment&apos;, &apos;--no-update&apos;, &apos;--non-interactive&apos;, 392974, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 5000 characters of output:
hing file Source/WebKit/GPUProcess/media/RemoteLegacyCDMSessionProxy.cpp
patching file Source/WebKit/GPUProcess/media/RemoteLegacyCDMSessionProxy.h
patching file Source/WebKit/GPUProcess/media/RemoteLegacyCDMSessionProxy.messages.in
patching file Source/WebKit/GPUProcess/media/RemoteMediaPlayerManagerProxy.cpp
Hunk #1 succeeded at 212 with fuzz 1 (offset 8 lines).
patching file Source/WebKit/GPUProcess/media/RemoteMediaPlayerManagerProxy.h
Hunk #1 succeeded at 70 with fuzz 2 (offset 2 lines).
patching file Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.cpp
Hunk #1 FAILED at 33.
Hunk #2 FAILED at 525.
Hunk #3 FAILED at 729.
3 out of 3 hunks FAILED -- saving rejects to file Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.cpp.rej
patching file Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.h
Hunk #1 FAILED at 30.
Hunk #2 FAILED at 145.
Hunk #3 succeeded at 181 with fuzz 2 (offset 4 lines).
Hunk #4 FAILED at 301.
3 out of 4 hunks FAILED -- saving rejects to file Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.h.rej
patching file Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.messages.in
Hunk #1 FAILED at 80.
1 out of 1 hunk FAILED -- saving rejects to file Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.messages.in.rej
patching file Source/WebKit/GPUProcess/media/RemoteTextTrackProxy.cpp
Hunk #1 FAILED at 29.
1 out of 1 hunk FAILED -- saving rejects to file Source/WebKit/GPUProcess/media/RemoteTextTrackProxy.cpp.rej
patching file Source/WebKit/GPUProcess/media/RemoteTextTrackProxy.h
Hunk #1 FAILED at 32.
Hunk #2 FAILED at 57.
Hunk #3 FAILED at 74.
Hunk #4 FAILED at 88.
4 out of 4 hunks FAILED -- saving rejects to file Source/WebKit/GPUProcess/media/RemoteTextTrackProxy.h.rej
patching file Source/WebKit/Scripts/webkit/messages.py
Hunk #1 FAILED at 238.
Hunk #2 FAILED at 586.
2 out of 2 hunks FAILED -- saving rejects to file Source/WebKit/Scripts/webkit/messages.py.rej
patching file Source/WebKit/Sources.txt
Hunk #1 FAILED at 33.
Hunk #2 FAILED at 558.
2 out of 2 hunks FAILED -- saving rejects to file Source/WebKit/Sources.txt.rej
patching file Source/WebKit/WebKit.xcodeproj/project.pbxproj
Hunk #1 FAILED at 1747.
Hunk #2 FAILED at 5144.
Hunk #3 FAILED at 5476.
Hunk #4 FAILED at 5534.
Hunk #5 FAILED at 9987.
Hunk #6 FAILED at 12665.
6 out of 6 hunks FAILED -- saving rejects to file Source/WebKit/WebKit.xcodeproj/project.pbxproj.rej
patching file Source/WebKit/WebProcess/GPU/GPUProcessConnection.cpp
Hunk #1 FAILED at 35.
Hunk #2 succeeded at 89 with fuzz 2 (offset 6 lines).
Hunk #3 succeeded at 108 (offset 13 lines).
1 out of 3 hunks FAILED -- saving rejects to file Source/WebKit/WebProcess/GPU/GPUProcessConnection.cpp.rej
patching file Source/WebKit/WebProcess/GPU/GPUProcessConnection.h
Hunk #1 FAILED at 41.
Hunk #2 FAILED at 63.
2 out of 2 hunks FAILED -- saving rejects to file Source/WebKit/WebProcess/GPU/GPUProcessConnection.h.rej
patching file Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp
Hunk #1 FAILED at 30.
Hunk #2 FAILED at 41.
Hunk #3 succeeded at 67 with fuzz 1 (offset 9 lines).
Hunk #4 FAILED at 928.
3 out of 4 hunks FAILED -- saving rejects to file Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp.rej
patching file Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.h
Hunk #1 FAILED at 305.
1 out of 1 hunk FAILED -- saving rejects to file Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.h.rej
patching file Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.messages.in
Hunk #1 succeeded at 82 with fuzz 1 (offset 4 lines).
patching file Source/WebKit/WebProcess/GPU/media/RemoteLegacyCDM.cpp
patching file Source/WebKit/WebProcess/GPU/media/RemoteLegacyCDM.h
patching file Source/WebKit/WebProcess/GPU/media/RemoteLegacyCDMFactory.cpp
patching file Source/WebKit/WebProcess/GPU/media/RemoteLegacyCDMFactory.h
patching file Source/WebKit/WebProcess/GPU/media/RemoteLegacyCDMIdentifier.h
patching file Source/WebKit/WebProcess/GPU/media/RemoteLegacyCDMSession.cpp
patching file Source/WebKit/WebProcess/GPU/media/RemoteLegacyCDMSession.h
patching file Source/WebKit/WebProcess/GPU/media/RemoteLegacyCDMSession.messages.in
patching file Source/WebKit/WebProcess/GPU/media/RemoteLegacyCDMSessionIdentifier.h
patching file Source/WebKit/WebProcess/GPU/media/RemoteMediaPlayerManager.cpp
Hunk #1 succeeded at 194 with fuzz 2 (offset 11 lines).
patching file Source/WebKit/WebProcess/GPU/media/RemoteMediaPlayerManager.h
Hunk #1 succeeded at 71 with fuzz 2 (offset 2 lines).
patching file Source/WebKit/WebProcess/WebPage/WebPage.cpp
Hunk #1 succeeded at 330 with fuzz 2 (offset 4 lines).
patching file Source/WebKit/WebProcess/WebProcess.cpp
Hunk #1 FAILED at 43.
Hunk #2 succeeded at 2034 with fuzz 2 (offset 8 lines).
1 out of 2 hunks FAILED -- saving rejects to file Source/WebKit/WebProcess/WebProcess.cpp.rej

Failed to run &quot;[u&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Full output: https://webkit-queues.webkit.org/results/13337172</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627934</commentid>
    <comment_count>21</comment_count>
      <attachid>393057</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-03-09 13:23:50 -0700</bug_when>
    <thetext>Comment on attachment 393057
Follow up fix

Clearing flags on attachment: 393057

Committed r258160: &lt;https://trac.webkit.org/changeset/258160&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392036</attachid>
            <date>2020-02-28 17:26:18 -0800</date>
            <delta_ts>2020-02-29 19:39:24 -0800</delta_ts>
            <desc>Part 1: WebCore</desc>
            <filename>bug-208402-20200228172617.patch</filename>
            <type>text/plain</type>
            <size>23482</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3NjU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWVmNjg1ZTVkODQ4ZGE1
Y2E3NTI3NDAyM2NhOTkyNThmNGU5Y2EyZS4uZTYyMGQ0Mzg0MDFmYmJlZjlhYzcxZjEwMDE0OWI3
OTg5ZjA0OTBhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDIwLTAyLTI4ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFVQXSBJbXBsZW1lbnQg
TGVnYWN5IEVNRSBBUEkgaW4gdGhlIEdQVSBQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg0MDIKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQcmVwYXJlIGZvciBydW5uaW5nIHRoZSBMZWdhY3lD
RE0gZXQuIGFsLiBpbiB0aGUgR1BVIHByb2Nlc3MuCisKKyAgICAgICAgU2xpZ2h0bHkgbW9kZXJu
aXplIExlZ2FjeUNETSB0byBtYWtlIHRoZSBzdHJ1Y3QgcmVwcmVzZW50aW5nIGEgTGVnYWN5Q0RN
RmFjdG9yeSBwdWJsaWMuIFRoaXMKKyAgICAgICAgYWxsb3dzIFBsYXRmb3JtU3RyYXRlZ2llcyB0
byBpbml0aWFsaXplIHRoZSBsaXN0IG9mIHN1cHBvcnRlZCBmYWN0b3JpZXMgd2l0aCBpdHMgb3du
IGxpc3Qgd2hlbgorICAgICAgICB0aGUgR1BVUHJvY2VzcyBpcyBlbmFibGVkLgorCisgICAgICAg
IFByZXZpb3VzbHksIExlZ2FjeUNETSByZXF1aXJlZCBhIExlZ2FjeUNETVNlc3Npb25DbGllbnQg
YXQgc2Vzc2lvbiBjcmVhdGlvbiB0aW1lLiBNYWtlIHRoaXMgb3B0aW9uYWwKKyAgICAgICAgYnkg
cHJvdmlkaW5nIGEgc2VwYXJhdGUgY3JlYXRlKCkgbWV0aG9kIHdoaWNoIGRvZXMgbm90IHRha2Ug
YSBjbGllbnQgcmVmZXJlbmNlLiAoVGhlIGNsaWVudCBjYW4gYmUpCisgICAgICAgIHByb3ZpZGVk
IHBvc3QtY3JlYXRpb24uCisKKyAgICAgICAgTW9kaWZ5IFdlYktpdE1lZGlhS2V5cyB0byBub3Rp
ZnkgdGhlIE1lZGlhUGxheWVyIHdoZW4gdGhlIGtleXMgb2JqZWN0IGlzIGFkZGVkIHRvIGEgSFRN
TE1lZGlhRWxlbWVudC4KKworICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5
L0xlZ2FjeUNETS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lDRE06OnBsYXRmb3JtUmVn
aXN0ZXJGYWN0b3JpZXMpOgorICAgICAgICAoV2ViQ29yZTo6aW5zdGFsbGVkQ0RNRmFjdG9yaWVz
KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUNETTo6cmVnaXN0ZXJDRE1GYWN0b3J5KToKKyAg
ICAgICAgKFdlYkNvcmU6OkxlZ2FjeUNETUZhY3RvcnlGb3JLZXlTeXN0ZW0pOgorICAgICAgICAo
V2ViQ29yZTo6TGVnYWN5Q0RNOjpzdXBwb3J0c0tleVN5c3RlbSk6CisgICAgICAgIChXZWJDb3Jl
OjpMZWdhY3lDRE06OmtleVN5c3RlbVN1cHBvcnRzTWltZVR5cGUpOgorICAgICAgICAoV2ViQ29y
ZTo6TGVnYWN5Q0RNOjpMZWdhY3lDRE0pOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5Q0RNOjpj
cmVhdGVTZXNzaW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9M
ZWdhY3lDRE0uaDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJL
aXRNZWRpYUtleXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0TWVkaWFLZXlzOjpzZXRN
ZWRpYUVsZW1lbnQpOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFFbmdpbmVXYXNVcGRhdGVkKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9NZWRpYVN0cmF0ZWd5Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTGVn
YWN5Q0RNU2Vzc2lvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpzZXRDRE0pOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVJbnRlcmZhY2U6OnNldENETSk6CisKIDIwMjAtMDItMjEgIEplciBOb2JsZSAgPGpl
ci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgW0dQVVBdIEltcGxlbWVudCBNb2Rlcm4gRU1F
IEFQSSBpbiB0aGUgR1BVIFByb2Nlc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZDRlNjdlMzg1ZTljNmM1NTI3NmQ5
MTA2MjdhMjk4NGNhZTI5ODUwYS4uMThmZGJiNzQ3YTkwMTQ2OTY5MzFmNTlhYzhkMWJiYjEyMGJl
NzkzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMC0wMi0yOCAgSmVyIE5vYmxlICA8
amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVUF0gSW1wbGVtZW50IExlZ2FjeSBF
TUUgQVBJIGluIHRoZSBHUFUgUHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjA4NDAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRvcHQgTGVnYWN5IEVNRSBNZWRpYVN0cmF0ZWd5LgorCisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvV2ViTWVkaWFTdHJhdGVneS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYk1lZGlhU3RyYXRlZ3k6OnJlZ2lzdGVyTGVnYWN5Q0RNRmFjdG9yaWVzKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9XZWJNZWRpYVN0cmF0ZWd5Lmg6CisKIDIw
MjAtMDItMjMgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgW0dQ
VVBdIEltcGxlbWVudCBNb2Rlcm4gRU1FIEFQSSBpbiB0aGUgR1BVIFByb2Nlc3MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0NoYW5nZUxvZwppbmRleCAxOTU5ZWRkMjNkYmIwZWRlZjA5ODg4YTRhN2Q5MGE3MzFi
MGVjMjBjLi43YzQzODViMTM0Njg3MGM1NjFhNDk5OTFmOTUzNThjZDMzODllNWVhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjAtMDItMjggIEplciBO
b2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVVBdIEltcGxlbWVudCBM
ZWdhY3kgRU1FIEFQSSBpbiB0aGUgR1BVIFByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODQwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkb3B0IExlZ2FjeSBFTUUgTWVkaWFTdHJhdGVneS4K
KworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbToKKwog
MjAyMC0wMi0yOCAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBb
R1BVUF0gSW1wbGVtZW50IE1vZGVybiBFTUUgQVBJIGluIHRoZSBHUFUgUHJvY2VzcwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5
Q0RNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xl
Z2FjeUNETS5jcHAKaW5kZXggODM3ZGYxMjNhZTU5NmYzNTM3YzkxNTI3MDNlM2QyNzFiMzQ2ZWI1
MS4uYWNkNWMzNjlhMjIwODlhYTAyZWM3YjNlMzg5MDQxMjM3ZjNiYzQ3ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdh
Y3lDRE0uY3BwCkBAIC0zMyw2ICszMyw4IEBACiAjaW5jbHVkZSAiTGVnYWN5Q0RNUHJpdmF0ZU1l
ZGlhUGxheWVyLmgiCiAjaW5jbHVkZSAiTGVnYWN5Q0RNU2Vzc2lvbi5oIgogI2luY2x1ZGUgIk1l
ZGlhUGxheWVyLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJhdGVneS5oIgorI2luY2x1ZGUgIlBsYXRm
b3JtU3RyYXRlZ2llcy5oIgogI2luY2x1ZGUgIldlYktpdE1lZGlhS2V5cy5oIgogI2luY2x1ZGUg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpA
QCAtNDMsNjEgKzQ1LDQ5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RydWN0IENETUZh
Y3RvcnkgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENETUZhY3RvcnkpOyBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBDRE1GYWN0b3J5KENyZWF0ZUNETSYmIGNvbnN0
cnVjdG9yLCBDRE1TdXBwb3J0c0tleVN5c3RlbSBzdXBwb3J0c0tleVN5c3RlbSwgQ0RNU3VwcG9y
dHNLZXlTeXN0ZW1BbmRNaW1lVHlwZSBzdXBwb3J0c0tleVN5c3RlbUFuZE1pbWVUeXBlKQotICAg
ICAgICA6IGNvbnN0cnVjdG9yKFdURk1vdmUoY29uc3RydWN0b3IpKQotICAgICAgICAsIHN1cHBv
cnRzS2V5U3lzdGVtKHN1cHBvcnRzS2V5U3lzdGVtKQotICAgICAgICAsIHN1cHBvcnRzS2V5U3lz
dGVtQW5kTWltZVR5cGUoc3VwcG9ydHNLZXlTeXN0ZW1BbmRNaW1lVHlwZSkKLSAgICB7Ci0gICAg
fQotCi0gICAgQ3JlYXRlQ0RNIGNvbnN0cnVjdG9yOwotICAgIENETVN1cHBvcnRzS2V5U3lzdGVt
IHN1cHBvcnRzS2V5U3lzdGVtOwotICAgIENETVN1cHBvcnRzS2V5U3lzdGVtQW5kTWltZVR5cGUg
c3VwcG9ydHNLZXlTeXN0ZW1BbmRNaW1lVHlwZTsKLX07Ci0KLXN0YXRpYyBWZWN0b3I8Q0RNRmFj
dG9yeSo+JiBpbnN0YWxsZWRDRE1GYWN0b3JpZXMoKQordm9pZCBMZWdhY3lDRE06OnBsYXRmb3Jt
UmVnaXN0ZXJGYWN0b3JpZXMoVmVjdG9yPExlZ2FjeUNETUZhY3Rvcnk+JiBmYWN0b3JpZXMpCiB7
Ci0gICAgc3RhdGljIGF1dG8gY2RtcyA9IG1ha2VOZXZlckRlc3Ryb3llZChWZWN0b3I8Q0RNRmFj
dG9yeSo+IHsKLSAgICAgICAgbmV3IENETUZhY3RvcnkoW10oTGVnYWN5Q0RNKiBjZG0pIHsgcmV0
dXJuIG1ha2VVbmlxdWU8TGVnYWN5Q0RNUHJpdmF0ZUNsZWFyS2V5PihjZG0pOyB9LAotICAgICAg
ICAgICAgTGVnYWN5Q0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0c0tleVN5c3RlbSwgTGVnYWN5
Q0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0c0tleVN5c3RlbUFuZE1pbWVUeXBlKSwKLQotICAg
ICAgICAvLyBGSVhNRTogaW5pdGlhbGl6ZSBzcGVjaWZpYyBVQSBDRE1zLiBodHRwOi8vd2Via2l0
Lm9yZy9iLzEwOTMxOCwgaHR0cDovL3dlYmtpdC5vcmcvYi8xMDkzMjAKLSAgICAgICAgbmV3IENE
TUZhY3RvcnkoW10oTGVnYWN5Q0RNKiBjZG0pIHsgcmV0dXJuIG1ha2VVbmlxdWU8Q0RNUHJpdmF0
ZU1lZGlhUGxheWVyPihjZG0pOyB9LAotICAgICAgICAgICAgQ0RNUHJpdmF0ZU1lZGlhUGxheWVy
OjpzdXBwb3J0c0tleVN5c3RlbSwgQ0RNUHJpdmF0ZU1lZGlhUGxheWVyOjpzdXBwb3J0c0tleVN5
c3RlbUFuZE1pbWVUeXBlKSwKLQorICAgIExlZ2FjeUNETUZhY3RvcnkgY2xlYXJLZXlGYWN0b3J5
ID0ge3sgW10oTGVnYWN5Q0RNKiBjZG0pIHsgcmV0dXJuIG1ha2VVbmlxdWU8TGVnYWN5Q0RNUHJp
dmF0ZUNsZWFyS2V5PihjZG0pOyB9IH0sIExlZ2FjeUNETVByaXZhdGVDbGVhcktleTo6c3VwcG9y
dHNLZXlTeXN0ZW0sIExlZ2FjeUNETVByaXZhdGVDbGVhcktleTo6c3VwcG9ydHNLZXlTeXN0ZW1B
bmRNaW1lVHlwZSB9OworICAgIC8vIEZJWE1FOiBpbml0aWFsaXplIHNwZWNpZmljIFVBIENETXMu
IGh0dHA6Ly93ZWJraXQub3JnL2IvMTA5MzE4LCBodHRwOi8vd2Via2l0Lm9yZy9iLzEwOTMyMAor
ICAgIGZhY3Rvcmllcy5hcHBlbmQoV1RGTW92ZShjbGVhcktleUZhY3RvcnkpKTsKKyAgICBmYWN0
b3JpZXMuYXBwZW5kKHsgW10oTGVnYWN5Q0RNKiBjZG0pIHsgcmV0dXJuIG1ha2VVbmlxdWU8Q0RN
UHJpdmF0ZU1lZGlhUGxheWVyPihjZG0pOyB9LCBDRE1Qcml2YXRlTWVkaWFQbGF5ZXI6OnN1cHBv
cnRzS2V5U3lzdGVtLCBDRE1Qcml2YXRlTWVkaWFQbGF5ZXI6OnN1cHBvcnRzS2V5U3lzdGVtQW5k
TWltZVR5cGUgfSk7CiAjaWYgKEhBVkUoQVZDT05URU5US0VZU0VTU0lPTikgfHwgSEFWRShBVlNU
UkVBTVNFU1NJT04pKSAmJiBFTkFCTEUoTUVESUFfU09VUkNFKQotICAgICAgICBuZXcgQ0RNRmFj
dG9yeShbXShMZWdhY3lDRE0qIGNkbSkgeyByZXR1cm4gbWFrZVVuaXF1ZTxDRE1Qcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDPihjZG0pOyB9LAotICAgICAgICAgICAgQ0RNUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQzo6c3VwcG9ydHNLZXlTeXN0ZW0sIENETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akM6OnN1cHBvcnRzS2V5U3lzdGVtQW5kTWltZVR5cGUpLAorICAgIGZhY3Rvcmllcy5hcHBlbmQo
eyBbXShMZWdhY3lDRE0qIGNkbSkgeyByZXR1cm4gbWFrZVVuaXF1ZTxDRE1Qcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDPihjZG0pOyB9LCBDRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzdXBw
b3J0c0tleVN5c3RlbSwgQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c3VwcG9ydHNLZXlT
eXN0ZW1BbmRNaW1lVHlwZSB9KTsKICNlbmRpZgorfQorCitzdGF0aWMgVmVjdG9yPExlZ2FjeUNE
TUZhY3Rvcnk+JiBpbnN0YWxsZWRDRE1GYWN0b3JpZXMoKQoreworICAgIHN0YXRpYyBhdXRvIGNk
bXMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQ8VmVjdG9yPExlZ2FjeUNETUZhY3Rvcnk+Pih7IH0pOwor
ICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyByZWdpc3RlckRlZmF1bHRzOworICAgIHN0ZDo6Y2Fs
bF9vbmNlKHJlZ2lzdGVyRGVmYXVsdHMsIFsmXSB7CisgICAgICAgIHBsYXRmb3JtU3RyYXRlZ2ll
cygpLT5tZWRpYVN0cmF0ZWd5KCkucmVnaXN0ZXJMZWdhY3lDRE1GYWN0b3JpZXMoY2Rtcyk7CiAg
ICAgfSk7CiAgICAgcmV0dXJuIGNkbXM7CiB9CiAKLXZvaWQgTGVnYWN5Q0RNOjpyZWdpc3RlckNE
TUZhY3RvcnkoQ3JlYXRlQ0RNJiYgY29uc3RydWN0b3IsIENETVN1cHBvcnRzS2V5U3lzdGVtIHN1
cHBvcnRzS2V5U3lzdGVtLCBDRE1TdXBwb3J0c0tleVN5c3RlbUFuZE1pbWVUeXBlIHN1cHBvcnRz
S2V5U3lzdGVtQW5kTWltZVR5cGUpCit2b2lkIExlZ2FjeUNETTo6cmVnaXN0ZXJDRE1GYWN0b3J5
KENyZWF0ZUNETSYmIGNvbnN0cnVjdG9yLCBDRE1TdXBwb3J0c0tleVN5c3RlbSYmIHN1cHBvcnRz
S2V5U3lzdGVtLCBDRE1TdXBwb3J0c0tleVN5c3RlbUFuZE1pbWVUeXBlJiYgc3VwcG9ydHNLZXlT
eXN0ZW1BbmRNaW1lVHlwZSkKIHsKLSAgICBpbnN0YWxsZWRDRE1GYWN0b3JpZXMoKS5hcHBlbmQo
bmV3IENETUZhY3RvcnkoV1RGTW92ZShjb25zdHJ1Y3RvciksIHN1cHBvcnRzS2V5U3lzdGVtLCBz
dXBwb3J0c0tleVN5c3RlbUFuZE1pbWVUeXBlKSk7CisgICAgaW5zdGFsbGVkQ0RNRmFjdG9yaWVz
KCkuYXBwZW5kKHsgV1RGTW92ZShjb25zdHJ1Y3RvciksIFdURk1vdmUoc3VwcG9ydHNLZXlTeXN0
ZW0pLCBXVEZNb3ZlKHN1cHBvcnRzS2V5U3lzdGVtQW5kTWltZVR5cGUpIH0pOwogfQogCi1zdGF0
aWMgQ0RNRmFjdG9yeSogQ0RNRmFjdG9yeUZvcktleVN5c3RlbShjb25zdCBTdHJpbmcmIGtleVN5
c3RlbSkKK3N0YXRpYyBMZWdhY3lDRE1GYWN0b3J5KiBMZWdhY3lDRE1GYWN0b3J5Rm9yS2V5U3lz
dGVtKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKQogewogICAgIGZvciAoYXV0byYgZmFjdG9yeSA6
IGluc3RhbGxlZENETUZhY3RvcmllcygpKSB7Ci0gICAgICAgIGlmIChmYWN0b3J5LT5zdXBwb3J0
c0tleVN5c3RlbShrZXlTeXN0ZW0pKQotICAgICAgICAgICAgcmV0dXJuIGZhY3Rvcnk7CisgICAg
ICAgIGlmIChmYWN0b3J5LnN1cHBvcnRzS2V5U3lzdGVtKGtleVN5c3RlbSkpCisgICAgICAgICAg
ICByZXR1cm4gJmZhY3Rvcnk7CiAgICAgfQogICAgIHJldHVybiBudWxscHRyOwogfQogCiBib29s
IExlZ2FjeUNETTo6c3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pCiB7
Ci0gICAgcmV0dXJuIENETUZhY3RvcnlGb3JLZXlTeXN0ZW0oa2V5U3lzdGVtKTsKKyAgICByZXR1
cm4gTGVnYWN5Q0RNRmFjdG9yeUZvcktleVN5c3RlbShrZXlTeXN0ZW0pOwogfQogCiBib29sIExl
Z2FjeUNETTo6a2V5U3lzdGVtU3VwcG9ydHNNaW1lVHlwZShjb25zdCBTdHJpbmcmIGtleVN5c3Rl
bSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIHsKLSAgICBpZiAoQ0RNRmFjdG9yeSogZmFjdG9y
eSA9IENETUZhY3RvcnlGb3JLZXlTeXN0ZW0oa2V5U3lzdGVtKSkKKyAgICBpZiAoTGVnYWN5Q0RN
RmFjdG9yeSogZmFjdG9yeSA9IExlZ2FjeUNETUZhY3RvcnlGb3JLZXlTeXN0ZW0oa2V5U3lzdGVt
KSkKICAgICAgICAgcmV0dXJuIGZhY3RvcnktPnN1cHBvcnRzS2V5U3lzdGVtQW5kTWltZVR5cGUo
a2V5U3lzdGVtLCBtaW1lVHlwZSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQpAQCAtMTE0LDcgKzEw
NCw3IEBAIExlZ2FjeUNETTo6TGVnYWN5Q0RNKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKQogICAg
IDogbV9rZXlTeXN0ZW0oa2V5U3lzdGVtKQogICAgICwgbV9jbGllbnQobnVsbHB0cikKIHsKLSAg
ICBtX3ByaXZhdGUgPSBDRE1GYWN0b3J5Rm9yS2V5U3lzdGVtKGtleVN5c3RlbSktPmNvbnN0cnVj
dG9yKHRoaXMpOworICAgIG1fcHJpdmF0ZSA9IExlZ2FjeUNETUZhY3RvcnlGb3JLZXlTeXN0ZW0o
a2V5U3lzdGVtKS0+Y29uc3RydWN0b3IodGhpcyk7CiB9CiAKIExlZ2FjeUNETTo6fkxlZ2FjeUNE
TSgpID0gZGVmYXVsdDsKQEAgLTEzMiw2ICsxMjIsMTQgQEAgc3RkOjp1bmlxdWVfcHRyPExlZ2Fj
eUNETVNlc3Npb24+IExlZ2FjeUNETTo6Y3JlYXRlU2Vzc2lvbihMZWdhY3lDRE1TZXNzaW9uQ2xp
ZW4KICAgICByZXR1cm4gc2Vzc2lvbjsKIH0KIAorc3RkOjp1bmlxdWVfcHRyPExlZ2FjeUNETVNl
c3Npb24+IExlZ2FjeUNETTo6Y3JlYXRlU2Vzc2lvbigpCit7CisgICAgYXV0byBzZXNzaW9uID0g
bV9wcml2YXRlLT5jcmVhdGVTZXNzaW9uKG51bGxwdHIpOworICAgIGlmIChtZWRpYVBsYXllcigp
KQorICAgICAgICBtZWRpYVBsYXllcigpLT5zZXRDRE1TZXNzaW9uKHNlc3Npb24uZ2V0KCkpOwor
ICAgIHJldHVybiBzZXNzaW9uOworfQorCiBSZWZQdHI8TWVkaWFQbGF5ZXI+IExlZ2FjeUNETTo6
bWVkaWFQbGF5ZXIoKSBjb25zdAogewogICAgIGlmICghbV9jbGllbnQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE0uaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETS5o
CmluZGV4IGZiNWRhMWYxNmRhMDJlYzg0YzM0NzdkMzU1ZmUwYTVlODk2NDA2YTkuLjI1NjJlYmQ1
N2QyMTI5MTUwMTY2NzI1NDE1YjU3MjI3YzUxYTNkMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETS5oCkBAIC0z
OSw5ICszOSwxNiBAQCBjbGFzcyBMZWdhY3lDRE07CiBjbGFzcyBDRE1Qcml2YXRlSW50ZXJmYWNl
OwogY2xhc3MgTWVkaWFQbGF5ZXI7CiAKLXVzaW5nIENyZWF0ZUNETSA9IFdURjo6RnVuY3Rpb248
c3RkOjp1bmlxdWVfcHRyPENETVByaXZhdGVJbnRlcmZhY2U+IChMZWdhY3lDRE0qKT47Ci10eXBl
ZGVmIGJvb2wgKCpDRE1TdXBwb3J0c0tleVN5c3RlbSkoY29uc3QgU3RyaW5nJik7Ci10eXBlZGVm
IGJvb2wgKCpDRE1TdXBwb3J0c0tleVN5c3RlbUFuZE1pbWVUeXBlKShjb25zdCBTdHJpbmcmLCBj
b25zdCBTdHJpbmcmKTsKK3VzaW5nIENyZWF0ZUNETSA9IFdURjo6RnVuY3Rpb248c3RkOjp1bmlx
dWVfcHRyPENETVByaXZhdGVJbnRlcmZhY2U+KExlZ2FjeUNETSopPjsKK3VzaW5nIENETVN1cHBv
cnRzS2V5U3lzdGVtID0gV1RGOjpGdW5jdGlvbjxib29sKGNvbnN0IFN0cmluZyYpPjsKK3VzaW5n
IENETVN1cHBvcnRzS2V5U3lzdGVtQW5kTWltZVR5cGUgPSBXVEY6OkZ1bmN0aW9uPGJvb2woY29u
c3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJik+OworCitzdHJ1Y3QgTGVnYWN5Q0RNRmFjdG9yeSB7
CisgICAgQ3JlYXRlQ0RNIGNvbnN0cnVjdG9yOworICAgIENETVN1cHBvcnRzS2V5U3lzdGVtIHN1
cHBvcnRzS2V5U3lzdGVtOworICAgIENETVN1cHBvcnRzS2V5U3lzdGVtQW5kTWltZVR5cGUgc3Vw
cG9ydHNLZXlTeXN0ZW1BbmRNaW1lVHlwZTsKK307CisKIAogY2xhc3MgTGVnYWN5Q0RNQ2xpZW50
IHsKIHB1YmxpYzoKQEAgLTUwLDcgKzU3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUmVmUHRy
PE1lZGlhUGxheWVyPiBjZG1NZWRpYVBsYXllcihjb25zdCBMZWdhY3lDRE0qKSBjb25zdCA9IDA7
CiB9OwogCi1jbGFzcyBMZWdhY3lDRE0gZmluYWwgeworY2xhc3MgV0VCQ09SRV9FWFBPUlQgTGVn
YWN5Q0RNIGZpbmFsIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBleHBsaWNpdCBMZWdhY3lDRE0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pOwpAQCAtNTksMTEg
KzY2LDE2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0tleVN5c3RlbShjb25z
dCBTdHJpbmcmKTsKICAgICBzdGF0aWMgYm9vbCBrZXlTeXN0ZW1TdXBwb3J0c01pbWVUeXBlKGNv
bnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKICAgICBzdGF0
aWMgc3RkOjp1bmlxdWVfcHRyPExlZ2FjeUNETT4gY3JlYXRlKGNvbnN0IFN0cmluZyYga2V5U3lz
dGVtKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCByZWdpc3RlckNETUZhY3Rvcnko
Q3JlYXRlQ0RNJiYsIENETVN1cHBvcnRzS2V5U3lzdGVtLCBDRE1TdXBwb3J0c0tleVN5c3RlbUFu
ZE1pbWVUeXBlKTsKKyAgICBzdGF0aWMgdm9pZCByZWdpc3RlckNETUZhY3RvcnkoQ3JlYXRlQ0RN
JiYsIENETVN1cHBvcnRzS2V5U3lzdGVtJiYsIENETVN1cHBvcnRzS2V5U3lzdGVtQW5kTWltZVR5
cGUmJik7CiAgICAgfkxlZ2FjeUNETSgpOwogCisgICAgLy8gUGxhdGZvcm0tc3BlY2lmaWMgZnVu
Y3Rpb24gdGhhdCdzIGNhbGxlZCB3aGVuIHRoZSBsaXN0IG9mCisgICAgLy8gcmVnaXN0ZXJlZCBD
RE1GYWN0b3J5IG9iamVjdHMgaXMgcXVlcmllZCBmb3IgdGhlIGZpcnN0IHRpbWUuCisgICAgc3Rh
dGljIHZvaWQgcGxhdGZvcm1SZWdpc3RlckZhY3RvcmllcyhWZWN0b3I8TGVnYWN5Q0RNRmFjdG9y
eT4mKTsKKwogICAgIGJvb2wgc3VwcG9ydHNNSU1FVHlwZShjb25zdCBTdHJpbmcmKSBjb25zdDsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8TGVnYWN5Q0RNU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbihMZWdh
Y3lDRE1TZXNzaW9uQ2xpZW50Jik7CisgICAgc3RkOjp1bmlxdWVfcHRyPExlZ2FjeUNETVNlc3Np
b24+IGNyZWF0ZVNlc3Npb24oKTsKIAogICAgIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKCkgY29u
c3QgeyByZXR1cm4gbV9rZXlTeXN0ZW07IH0KIApAQCAtNzEsNiArODMsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXRDbGllbnQoTGVnYWN5Q0RNQ2xpZW50KiBjbGllbnQpIHsgbV9jbGllbnQgPSBj
bGllbnQ7IH0KIAogICAgIFJlZlB0cjxNZWRpYVBsYXllcj4gbWVkaWFQbGF5ZXIoKSBjb25zdDsK
KyAgICBDRE1Qcml2YXRlSW50ZXJmYWNlKiBjZG1Qcml2YXRlKCkgY29uc3QgeyByZXR1cm4gbV9w
cml2YXRlLmdldCgpOyB9CiAKIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fa2V5U3lzdGVtOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2Vi
S2l0TWVkaWFLZXlzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
bGVnYWN5L1dlYktpdE1lZGlhS2V5cy5jcHAKaW5kZXggZTUzN2U2MGY3MjhiMzBjMGU0YWY1MjFj
MzJhYTdiMzk1YWQ2NjRjMy4uYmY2NDZkZWNkZTczYzJlYzY1YzQ2YThiNDkxMjI5YjdmYTFiMzNh
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdh
Y3kvV2ViS2l0TWVkaWFLZXlzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleXMuY3BwCkBAIC0xMjgsMTMgKzEyOCwxOCBA
QCBib29sIFdlYktpdE1lZGlhS2V5czo6aXNUeXBlU3VwcG9ydGVkKGNvbnN0IFN0cmluZyYga2V5
U3lzdGVtLCBjb25zdCBTdHJpbmcmIG1pbQogCiB2b2lkIFdlYktpdE1lZGlhS2V5czo6c2V0TWVk
aWFFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqIGVsZW1lbnQpCiB7Ci0gICAgaWYgKG1fbWVkaWFF
bGVtZW50ICYmIG1fbWVkaWFFbGVtZW50LT5wbGF5ZXIoKSkKKyAgICBpZiAobV9tZWRpYUVsZW1l
bnQgJiYgbV9tZWRpYUVsZW1lbnQtPnBsYXllcigpKSB7CiAgICAgICAgIG1fbWVkaWFFbGVtZW50
LT5wbGF5ZXIoKS0+c2V0Q0RNU2Vzc2lvbihudWxscHRyKTsKKyAgICAgICAgbV9tZWRpYUVsZW1l
bnQtPnBsYXllcigpLT5zZXRDRE0obnVsbHB0cik7CisgICAgfQogCiAgICAgbV9tZWRpYUVsZW1l
bnQgPSBtYWtlV2Vha1B0cihlbGVtZW50KTsKIAotICAgIGlmIChtX21lZGlhRWxlbWVudCAmJiBt
X21lZGlhRWxlbWVudC0+cGxheWVyKCkgJiYgIW1fc2Vzc2lvbnMuaXNFbXB0eSgpKQotICAgICAg
ICBtX21lZGlhRWxlbWVudC0+cGxheWVyKCktPnNldENETVNlc3Npb24obV9zZXNzaW9ucy5sYXN0
KCktPnNlc3Npb24oKSk7CisgICAgaWYgKG1fbWVkaWFFbGVtZW50ICYmIG1fbWVkaWFFbGVtZW50
LT5wbGF5ZXIoKSkgeworICAgICAgICBtX21lZGlhRWxlbWVudC0+cGxheWVyKCktPnNldENETSht
X2NkbS5nZXQoKSk7CisgICAgICAgIGlmICghbV9zZXNzaW9ucy5pc0VtcHR5KCkpCisgICAgICAg
ICAgICBtX21lZGlhRWxlbWVudC0+cGxheWVyKCktPnNldENETVNlc3Npb24obV9zZXNzaW9ucy5s
YXN0KCktPnNlc3Npb24oKSk7CisgICAgfQogfQogCiBSZWZQdHI8TWVkaWFQbGF5ZXI+IFdlYktp
dE1lZGlhS2V5czo6Y2RtTWVkaWFQbGF5ZXIoY29uc3QgTGVnYWN5Q0RNKikgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2
NGFlMTU1ZmQ5OWE0ZmExNGZjOWZlYWVjZmYwZWM2NjE2ODc2ZTQ0Li41NTI4NmNjODJmZWZlYTAz
YzBjNDFhM2UwZjM2OTdkZjQ2MWEyNjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00MTg5LDYgKzQxODksOCBAQAogCQlDREUz
QTg1NDE3RjVGQ0U2MDBDNUJFMjAgLyogQXVkaW9UcmFja1ByaXZhdGVBVkYuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERTNBODUyMTdGNUZDRTYwMEM1
QkUyMCAvKiBBdWRpb1RyYWNrUHJpdmF0ZUFWRi5oICovOyB9OwogCQlDREUzQTg1NzE3RjYwMjA0
MDBDNUJFMjAgLyogQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFM0E4NTUxN0Y2MDIwNDAwQzVCRTIwIC8q
IEF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQy5tbSAqLzsgfTsKIAkJQ0RFM0E4NTgxN0Y2MDIwNDAw
QzVCRTIwIC8qIEF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFM0E4NTYxN0Y2MDIwNDAwQzVCRTIwIC8qIEF1
ZGlvVHJhY2tQcml2YXRlQVZGT2JqQy5oICovOyB9OworCQlDREU1NTUyNDI0MDVDQ0YyMDA4QTNE
REIgLyogTGVnYWN5Q0RNLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDREE5OEUwQTE2MDNDRDU5MDBGRUEzQjEgLyogTGVnYWN5Q0RNLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0RFNTU1MjUyNDA1Q0NG
MjAwOEEzRERCIC8qIExlZ2FjeUNETVByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTk4RTBDMTYwM0NGM0MwMEZFQTNCMSAvKiBMZWdhY3lD
RE1Qcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJQ0RFNTk1OTUxQkYxNkRGMzAwQTFDQkU4IC8qIENETVNlc3Npb25BVkNvbnRlbnRLZXlT
ZXNzaW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0RFNTk1OTMxQkYxNjZBRDAwQTFDQkU4IC8qIENETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9u
Lm1tICovOyB9OwogCQlDREU1OTU5NzFCRjI2RTIxMDBBMUNCRTggLyogQ0RNU2Vzc2lvbk1lZGlh
U291cmNlQVZGT2JqQy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0RFNTk1OTYxQkYyNkUyMTAwQTFDQkU4IC8qIENETVNlc3Npb25NZWRpYVNvdXJjZUFW
Rk9iakMuaCAqLzsgfTsKIAkJQ0RFNTk1OUQxQkYyNzU3MTAwQTFDQkU4IC8qIENETVNlc3Npb25N
ZWRpYVNvdXJjZUFWRk9iakMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDREU1OTU5QzFCRjI3NTcxMDBBMUNCRTggLyogQ0RNU2Vzc2lvbk1lZGlhU291
cmNlQVZGT2JqQy5tbSAqLzsgfTsKQEAgLTMxMzY2LDYgKzMxMzY4LDggQEAKIAkJCQkxMTMxMENG
MjIwQkE0QTMyMDA2NUE4RDAgLyogTGF5b3V0VHJlZUJ1aWxkZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTE0MURDMDQ4MTY0ODM0OEYwMDM3MUU1QSAvKiBMYXlvdXRVbml0LmggaW4gSGVhZGVycyAq
LywKIAkJCQlFNDUxQzYzMTIzOTQwMjc5MDA5OTMxOTAgLyogTGF5b3V0VW5pdHMuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUNERTU1NTI0MjQwNUNDRjIwMDhBM0REQiAvKiBMZWdhY3lDRE0uaCBpbiBI
ZWFkZXJzICovLAorCQkJCUNERTU1NTI1MjQwNUNDRjIwMDhBM0REQiAvKiBMZWdhY3lDRE1Qcml2
YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREU4QjVFRDFBNjk3NzczMDBCNEI2NkEgLyogTGVn
YWN5Q0RNUHJpdmF0ZUNsZWFyS2V5LmggaW4gSGVhZGVycyAqLywKIAkJCQlDREY0QjcxMjFFMDA4
N0FFMDBFMjM1QTIgLyogTGVnYWN5Q0RNU2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RF
OEI1RjExQTY5Nzc4QjAwQjRCNjZBIC8qIExlZ2FjeUNETVNlc3Npb25DbGVhcktleS5oIGluIEhl
YWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCAy
MTU4NDlhYjljODAzZDAxZDNhMzM2NDI3N2VmZDgyMmY2YzQzOTZjLi45ZGVjMDVhZTVmNGZlNDk0
MjUyZGY0MjBmYWIzNmU5M2ZkZmYzNjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAKQEAgLTUxMjYsNiArNTEyNiwxMSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
Om1lZGlhRW5naW5lV2FzVXBkYXRlZCgpCiAgICAgICAgIG1fcGxheWVyLT5jZG1JbnN0YW5jZUF0
dGFjaGVkKG1fbWVkaWFLZXlzLT5jZG1JbnN0YW5jZSgpKTsKICNlbmRpZgogCisjaWYgRU5BQkxF
KExFR0FDWV9FTkNSWVBURURfTUVESUEpCisgICAgaWYgKG1fcGxheWVyICYmIG1fd2ViS2l0TWVk
aWFLZXlzKQorICAgICAgICBtX3BsYXllci0+c2V0Q0RNKCZtX3dlYktpdE1lZGlhS2V5cy0+Y2Rt
KCkpOworI2VuZGlmCisKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKSB8fCAoUExBVEZPUk0oTUFD
KSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQogICAgIGlmICghbV9wbGF5ZXIp
CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01l
ZGlhU3RyYXRlZ3kuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhU3RyYXRlZ3kuaApp
bmRleCA2MGE1ODQ3YzhjZWMxMGI3OWI3NDlhNmZhZjg1MDNkMTZhMTk5Yjk1Li5kN2ZiOTk5OTgw
NDRjNGUxOWI0NmMwZjIyNTA5ZjZkNTYwN2FhNTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9NZWRpYVN0cmF0ZWd5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
TWVkaWFTdHJhdGVneS5oCkBAIC0zMiw2ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIEF1ZGlvRGVzdGluYXRpb247CiBjbGFzcyBBdWRpb0lPQ2FsbGJhY2s7CiBjbGFzcyBDRE1G
YWN0b3J5Oworc3RydWN0IExlZ2FjeUNETUZhY3Rvcnk7CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JU
IE1lZGlhU3RyYXRlZ3kgewogcHVibGljOgpAQCAtNDIsNiArNDMsOSBAQCBwdWJsaWM6CiAjaWYg
RU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJDRE1GYWN0
b3JpZXMoVmVjdG9yPENETUZhY3RvcnkqPiYpID0gMDsKICNlbmRpZgorI2lmIEVOQUJMRShMRUdB
Q1lfRU5DUllQVEVEX01FRElBKQorICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckxlZ2FjeUNETUZh
Y3RvcmllcyhWZWN0b3I8TGVnYWN5Q0RNRmFjdG9yeT4mKSA9IDA7CisjZW5kaWYKIHByb3RlY3Rl
ZDoKICAgICB2aXJ0dWFsIH5NZWRpYVN0cmF0ZWd5KCkgPSBkZWZhdWx0OwogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xlZ2FjeUNETVNlc3Npb24uaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xlZ2FjeUNETVNlc3Npb24uaAppbmRl
eCAyNWU3OWE2ZGMwYTViMjE5M2E3MmEyMjdhYWNhMTc3M2E3ZTNjMjhjLi4yNDM0OTY4ZWFlOTg2
MDBkOGZiYWViNTFhMDU1YjExZjRjZDM0N2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9MZWdhY3lDRE1TZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTGVnYWN5Q0RNU2Vzc2lvbi5oCkBAIC0zOCw3ICszOCw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIH5MZWdhY3lDRE1TZXNzaW9uQ2xpZW50KCkgPSBkZWZhdWx0Owog
ICAgIHZpcnR1YWwgdm9pZCBzZW5kTWVzc2FnZShVaW50OEFycmF5KiwgU3RyaW5nIGRlc3RpbmF0
aW9uVVJMKSA9IDA7CiAKLSAgICBlbnVtIHsKKyAgICBlbnVtIDogdWludDhfdCB7CiAgICAgICAg
IE1lZGlhS2V5RXJyb3JVbmtub3duID0gMSwKICAgICAgICAgTWVkaWFLZXlFcnJvckNsaWVudCwK
ICAgICAgICAgTWVkaWFLZXlFcnJvclNlcnZpY2UsCkBAIC01OCw5ICs1OCwxMCBAQCBlbnVtIExl
Z2FjeUNETVNlc3Npb25UeXBlIHsKICAgICBDRE1TZXNzaW9uVHlwZUFWRm91bmRhdGlvbk9iakMs
CiAgICAgQ0RNU2Vzc2lvblR5cGVBVlN0cmVhbVNlc3Npb24sCiAgICAgQ0RNU2Vzc2lvblR5cGVB
VkNvbnRlbnRLZXlTZXNzaW9uLAorICAgIENETVNlc3Npb25UeXBlUmVtb3RlLAogfTsKIAotY2xh
c3MgTGVnYWN5Q0RNU2Vzc2lvbiB7CitjbGFzcyBXRUJDT1JFX0VYUE9SVCBMZWdhY3lDRE1TZXNz
aW9uIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5MZWdhY3lDRE1TZXNzaW9uKCkgPSBkZWZhdWx0
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5j
cHAKaW5kZXggYTNlYjFjYjliZTBhOGEzMTA2MzAyNWFkMTlhNWJjMDI1YTc3OTgyZC4uODQ4MTU1
NDljYWNhOTc5YTBiZTg3ODJhNmFmY2U1Y2E5NDk1ZWNmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcApAQCAtNjI2LDYgKzYyNiwxMSBA
QCBzdGQ6OnVuaXF1ZV9wdHI8TGVnYWN5Q0RNU2Vzc2lvbj4gTWVkaWFQbGF5ZXI6OmNyZWF0ZVNl
c3Npb24oY29uc3QgU3RyaW5nJiBrZXlTeQogICAgIHJldHVybiBtX3ByaXZhdGUtPmNyZWF0ZVNl
c3Npb24oa2V5U3lzdGVtLCBjbGllbnQpOwogfQogCit2b2lkIE1lZGlhUGxheWVyOjpzZXRDRE0o
TGVnYWN5Q0RNKiBjZG0pCit7CisgICAgbV9wcml2YXRlLT5zZXRDRE0oY2RtKTsKK30KKwogdm9p
ZCBNZWRpYVBsYXllcjo6c2V0Q0RNU2Vzc2lvbihMZWdhY3lDRE1TZXNzaW9uKiBzZXNzaW9uKQog
ewogICAgIG1fcHJpdmF0ZS0+c2V0Q0RNU2Vzc2lvbihzZXNzaW9uKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCmluZGV4IDFmZGQ1YmFkNjg4OWEw
OTI5MzIzNGQyYzU0ZGI0MjdhYjM3Mzc4Y2YuLjk0YjIyODA1YTEzMTFmMWZkMzY1NzIzMTg1NzMy
NmU3OWMyZTVjYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXIuaApAQCAtNjQsNiArNjQsNyBAQCBjbGFzcyBDYWNoZWRSZXNvdXJjZUxvYWRlcjsK
IGNsYXNzIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0Owog
Y2xhc3MgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTsKK2NsYXNzIExlZ2FjeUNETTsKIGNsYXNzIExl
Z2FjeUNETVNlc3Npb25DbGllbnQ7CiBjbGFzcyBNZWRpYVBsYXliYWNrVGFyZ2V0OwogY2xhc3Mg
TWVkaWFQbGF5ZXI7CkBAIC0zNTYsNiArMzU3LDcgQEAgcHVibGljOgogICAgIGVudW0gTWVkaWFL
ZXlFeGNlcHRpb24geyBOb0Vycm9yLCBJbnZhbGlkUGxheWVyU3RhdGUsIEtleVN5c3RlbU5vdFN1
cHBvcnRlZCB9OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPExlZ2FjeUNETVNlc3Npb24+IGNyZWF0
ZVNlc3Npb24oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIExlZ2FjeUNETVNlc3Npb25DbGllbnQq
KTsKKyAgICB2b2lkIHNldENETShMZWdhY3lDRE0qKTsKICAgICB2b2lkIHNldENETVNlc3Npb24o
TGVnYWN5Q0RNU2Vzc2lvbiopOwogICAgIHZvaWQga2V5QWRkZWQoKTsKICNlbmRpZgpAQCAtNjI1
LDYgKzYyNyw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdp
bnMoY29uc3QgU3RyaW5nJiBkZXRhaWxzLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBNZWRp
YVBsYXllclJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnNDYWxsYmFjayYgY2FsbGJhY2spIHsg
Y2xpZW50KCkucmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2lucyhkZXRhaWxzLCBkZXNjcmlwdGlv
biwgY2FsbGJhY2spOyB9CiAjZW5kaWYKIAorICAgIGNvbnN0IE1lZGlhUGxheWVyUHJpdmF0ZUlu
dGVyZmFjZSogcGxheWVyUHJpdmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpdmF0ZS5nZXQoKTsg
fQorCiBwcml2YXRlOgogICAgIE1lZGlhUGxheWVyKE1lZGlhUGxheWVyQ2xpZW50Jik7CiAgICAg
TWVkaWFQbGF5ZXIoTWVkaWFQbGF5ZXJDbGllbnQmLCBNZWRpYVBsYXllckVudW1zOjpNZWRpYUVu
Z2luZUlkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllclByaXZhdGUuaAppbmRleCBlZDYxODVkYTc3MjBmYjQ3YTE2NTQ4MWRi
ODIxNDBkNDFjMGE4YWE1Li5jYmViY2NmY2M4ZTE5MTU3MzNmNThkNjM2Y2M2ZjVhNzc3OTVhMTYx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
clByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXllclByaXZhdGUuaApAQCAtMjIzLDYgKzIyMyw3IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShM
RUdBQ1lfRU5DUllQVEVEX01FRElBKQogICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPExlZ2Fj
eUNETVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oY29uc3QgU3RyaW5nJiwgTGVnYWN5Q0RNU2Vzc2lv
bkNsaWVudCopIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q0RNKExl
Z2FjeUNETSopIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRDRE1TZXNzaW9uKExlZ2FjeUNETVNl
c3Npb24qKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQga2V5QWRkZWQoKSB7IH0KICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9XZWJNZWRpYVN0cmF0
ZWd5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvV2ViTWVkaWFTdHJh
dGVneS5jcHAKaW5kZXggNWQ3YThiOGQxMTI0YjJhNTI4YWQ3M2JkYzk2ZDlhOTc4MGRjMjA0Yy4u
MWZmMDk4MTMyMTg3NWNjNWZjYjFiYWMxZTg3NTU2YTQyYzk1ODU5ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9XZWJNZWRpYVN0cmF0ZWd5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1dlYk1lZGlhU3RyYXRlZ3kuY3Bw
CkBAIC0yOSwxMCArMjksMTIgQEAKICNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbi5oIgog
I2luY2x1ZGUgIlJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5oIgogI2luY2x1ZGUgIlJlbW90
ZUNETUZhY3RvcnkuaCIKKyNpbmNsdWRlICJSZW1vdGVMZWdhY3lDRE1GYWN0b3J5LmgiCiAjaW5j
bHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9EZXN0aW5hdGlvbi5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9JT0NhbGxiYWNrLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9DRE1GYWN0b3J5Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9MZWdhY3lDRE0uaD4KIAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKQEAgLTYyLDUgKzY0LDExIEBAIHZvaWQgV2ViTWVkaWFTdHJhdGVneTo6
cmVnaXN0ZXJDRE1GYWN0b3JpZXMoVmVjdG9yPFdlYkNvcmU6OkNETUZhY3RvcnkqPiYgZmFjdG9y
CiAgICAgV2ViQ29yZTo6Q0RNRmFjdG9yeTo6cGxhdGZvcm1SZWdpc3RlckZhY3RvcmllcyhmYWN0
b3JpZXMpOwogfQogI2VuZGlmCisjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCit2
b2lkIFdlYk1lZGlhU3RyYXRlZ3k6OnJlZ2lzdGVyTGVnYWN5Q0RNRmFjdG9yaWVzKFZlY3RvcjxM
ZWdhY3lDRE1GYWN0b3J5PiYgZmFjdG9yaWVzKQoreworICAgIFdlYkNvcmU6OkxlZ2FjeUNETTo6
cGxhdGZvcm1SZWdpc3RlckZhY3RvcmllcyhmYWN0b3JpZXMpOworfQorI2VuZGlmCiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9XZWJNZWRpYVN0cmF0ZWd5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1dlYk1lZGlhU3RyYXRlZ3kuaAppbmRleCA0ZmFiMGU5NDRmYzE0ZTY4NDM3OWUzMDA4
MTYzYmUxNjJkZDg5YjRkLi41MmZjOGFlODU0MmY4ZmIxMTIyYWY2YmRiZDYyOWFiMmQzNzBiZDVh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1dlYk1lZGlh
U3RyYXRlZ3kuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1dlYk1l
ZGlhU3RyYXRlZ3kuaApAQCAtNDUsNiArNDUsOSBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShFTkNS
WVBURURfTUVESUEpCiAgICAgdm9pZCByZWdpc3RlckNETUZhY3RvcmllcyhWZWN0b3I8V2ViQ29y
ZTo6Q0RNRmFjdG9yeSo+Jikgb3ZlcnJpZGU7CiAjZW5kaWYKKyNpZiBFTkFCTEUoTEVHQUNZX0VO
Q1JZUFRFRF9NRURJQSkKKyAgICB2b2lkIHJlZ2lzdGVyTGVnYWN5Q0RNRmFjdG9yaWVzKFZlY3Rv
cjxXZWJDb3JlOjpMZWdhY3lDRE1GYWN0b3J5PiYpIG92ZXJyaWRlOworI2VuZGlmCiAKICNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpCiAgICAgYm9vbCBtX3VzZUdQVVByb2Nlc3MgeyBmYWxzZSB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxh
dGZvcm1TdHJhdGVnaWVzLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCmluZGV4IGI5MDllY2M0MzliY2QzYzZmNmRhODA0
MWM2ZWYyOTNmZjM0NjY5NmYuLjk3NDI2ZjM5OTE0NzAxZTY3ODI4NDQ5ZjI3MjY5YmMyN2RkNTY5
OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YlBsYXRmb3JtU3RyYXRlZ2llcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KQEAgLTMzLDYgKzMzLDcgQEAKICNp
bXBvcnQgPFdlYkNvcmUvQ0RNRmFjdG9yeS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Db2xvci5oPgog
I2ltcG9ydCA8V2ViQ29yZS9GcmFtZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9MZWdhY3lDRE0uaD4K
ICNpbXBvcnQgPFdlYkNvcmUvTWVkaWFTdHJhdGVneS5oPgogI2ltcG9ydCA8V2ViQ29yZS9OZXR3
b3JrU3RvcmFnZVNlc3Npb24uaD4KICNpbXBvcnQgPFdlYkNvcmUvUGFzdGVib2FyZEl0ZW1JbmZv
Lmg+CkBAIC04MCw2ICs4MSwxMiBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gV2ViQ29yZTo6
Q0RNRmFjdG9yeTo6cGxhdGZvcm1SZWdpc3RlckZhY3RvcmllcyhmYWN0b3JpZXMpOwogICAgIH0K
ICNlbmRpZgorI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQorICAgIHZvaWQgcmVn
aXN0ZXJMZWdhY3lDRE1GYWN0b3JpZXMoVmVjdG9yPExlZ2FjeUNETUZhY3Rvcnk+JiBmYWN0b3Jp
ZXMpIG92ZXJyaWRlCisgICAgeworICAgICAgICBXZWJDb3JlOjpMZWdhY3lDRE06OnBsYXRmb3Jt
UmVnaXN0ZXJGYWN0b3JpZXMoZmFjdG9yaWVzKTsKKyAgICB9CisjZW5kaWYKIH07CiAKIE1lZGlh
U3RyYXRlZ3kqIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y3JlYXRlTWVkaWFTdHJhdGVneSgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392038</attachid>
            <date>2020-02-28 17:30:52 -0800</date>
            <delta_ts>2020-02-29 19:39:25 -0800</delta_ts>
            <desc>Part 2: WebKit</desc>
            <filename>bug-208402-20200228173050.patch</filename>
            <type>text/plain</type>
            <size>122495</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3NjU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDE4ZmRiYjc0N2E5MDE0Njk2
OTMxZjU5YWM4ZDFiYmIxMjBiZTc5MzMuLjRmMGI5ZjRlZTA2MTZhYTA3ZDI5NjMwYjI3NzZkOTk5
NTgwMGE1MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTM0IEBACisyMDIwLTAyLTI4ICBKZXIgTm9i
bGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFVQXSBJbXBsZW1lbnQgTGVn
YWN5IEVNRSBBUEkgaW4gdGhlIEdQVSBQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg0MDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgUmVtb3RlTGVnYWN5Q0RNRmFj
dG9yeSwgUmVtYXRlTGVnYWN5Q0RNLFJlbW90ZUxlZ2FjeUNETVNlc3Npb24sIGFuZCBhbGwKKyAg
ICAgICAgb2YgdGhlaXIgYXNzb2NpYXRlZCBQcm94eSBvYmplY3RzLgorCisgICAgICAgICogRGVy
aXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1v
dXRwdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAg
ICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmxlZ2FjeUNkbUZhY3RvcnlQcm94eSk6
CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpc3BhdGNoTWVz
c2FnZSk6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpc3Bh
dGNoU3luY01lc3NhZ2UpOgorICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFj
dG9yeVByb3h5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETUZh
Y3RvcnlQcm94eTo6UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5KToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5OjpjcmVhdGVDRE0pOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk6OnN1cHBvcnRzS2V5U3lzdGVtKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5OjpkaWRSZWNlaXZlQ0RN
TWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eTo6
ZGlkUmVjZWl2ZUNETVNlc3Npb25NZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVn
YWN5Q0RNRmFjdG9yeVByb3h5OjpkaWRSZWNlaXZlU3luY0NETU1lc3NhZ2UpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk6OmRpZFJlY2VpdmVTeW5jQ0RNU2Vz
c2lvbk1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJv
eHk6OmFkZFByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVBy
b3h5OjpyZW1vdmVQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETUZhY3Rv
cnlQcm94eTo6YWRkU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETUZh
Y3RvcnlQcm94eTo6cmVtb3ZlU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2Fj
eUNETUZhY3RvcnlQcm94eTo6Z2V0U2Vzc2lvbiBjb25zdCk6CisgICAgICAgICogR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkuaDogQWRkZWQuCisgICAgICAgICog
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkubWVzc2FnZXMuaW46
IEFkZGVkLgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHku
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNUHJveHk6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETVByb3h5OjpSZW1vdGVMZWdhY3lD
RE1Qcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETVByb3h5OjpzdXBwb3J0
c01JTUVUeXBlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNUHJveHk6OmNyZWF0
ZVNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1Qcm94eTo6c2V0UGxh
eWVySWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1Qcm94eTo6Y2RtTWVkaWFQ
bGF5ZXIgY29uc3QpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RN
UHJveHkuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETVByb3h5Ojpm
YWN0b3J5IGNvbnN0KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNE
TVByb3h5Lm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5KToK
KyAgICAgICAgKFdlYktpdDo6Y29udmVydFRvVWludDhBcnJheSk6CisgICAgICAgIChXZWJLaXQ6
OmNvbnZlcnRUb09wdGlvbmFsRGF0YVJlZmVyZW5jZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6Z2VuZXJhdGVLZXlSZXF1ZXN0KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpyZWxlYXNlS2V5cyk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6dXBkYXRlKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpnZXRDYWNoZWRLZXlGb3JLZXlJ
ZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6Y2FjaGVk
S2V5Rm9yS2V5SUQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJv
eHk6OnNlbmRNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lv
blByb3h5OjpzZW5kRXJyb3IpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1TZXNz
aW9uUHJveHk6Om1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkgY29uc3QpOgorICAgICAgICAqIEdQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5Lmg6IEFkZGVkLgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OmZhY3RvcnkgY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OnNlc3Npb24g
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OnNl
dFBsYXllcik6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNz
aW9uUHJveHkubWVzc2FnZXMuaW46IEFkZGVkLgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6Z2V0UHJveHkpOgorICAgICAgICAqIEdQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBHUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjptZWRpYVBsYXllckNhY2hlZEtleUZvcktleUlkIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5
ZXJLZXlOZWVkZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5Ojpz
ZXRMZWdhY3lDRE1TZXNzaW9uKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1l
ZGlhUGxheWVyUHJveHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlh
UGxheWVyUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVUZXh0VHJhY2tQcm94eS5jcHA6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVU
ZXh0VHJhY2tQcm94eS5oOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5Ogor
ICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9u
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVUHJvY2Vzc0Nvbm5lY3Rpb246Om1lZGlhUGxheWVy
TWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6OkdQVVByb2Nlc3NDb25uZWN0aW9uOjpsZWdhY3lD
RE1GYWN0b3J5KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlv
bi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0
Q0RNKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRDRE1T
ZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjptZWRp
YVBsYXllcktleU5lZWRlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVMZWdhY3lDRE06OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNE
TTo6UmVtb3RlTGVnYWN5Q0RNKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNOjpz
dXBwb3J0c01JTUVUeXBlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNOjpjcmVh
dGVTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNOjpzZXRQbGF5ZXJJ
ZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNLmg6IEFk
ZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3Rv
cnkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeTo6
UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNE
TUZhY3Rvcnk6OnJlZ2lzdGVyRmFjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2Fj
eUNETUZhY3Rvcnk6OnN1cHBsZW1lbnROYW1lKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVn
YWN5Q0RNRmFjdG9yeTo6Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVMZWdhY3lDRE1GYWN0b3J5OjpzdXBwb3J0c0tleVN5c3RlbSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUxlZ2FjeUNETUZhY3Rvcnk6OnN1cHBvcnRzS2V5U3lzdGVtQW5kTWltZVR5cGUp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1GYWN0b3J5OjpjcmVhdGVDRE0pOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1GYWN0b3J5OjphZGRTZXNzaW9uKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeTo6cmVtb3ZlU2Vzc2lvbik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETUZhY3Rvcnk6OmZpbmRDRE0gY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1GYWN0b3J5OjpkaWRSZWNlaXZlU2Vzc2lv
bk1lc3NhZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNE
TUZhY3RvcnkuaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
TGVnYWN5Q0RNSWRlbnRpZmllci5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6
OmNvbnZlcnRUb0FycmF5QnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6Y29udmVydFRvVWludDhB
cnJheSk6CisgICAgICAgIChXZWJLaXQ6OmNvbnZlcnRUb09wdGlvbmFsRGF0YVJlZmVyZW5jZSk6
CisgICAgICAgIChXZWJLaXQ6OmNvbnZlcnRUb0RhdGFSZWZlcmVuY2UpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVMZWdhY3lDRE1TZXNzaW9uOjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbjo6Z2VuZXJhdGVLZXlSZXF1ZXN0KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbjo6cmVsZWFzZUtleXMpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uOjp1cGRhdGUpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uOjpjYWNoZWRLZXlGb3JLZXlJRCBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb246OnNlbmRNZXNzYWdlKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbjo6c2VuZEVycm9yKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmg6IEFk
ZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Np
b24ubWVzc2FnZXMuaW46IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6ZmluZFJlbW90ZVBsYXllcklkKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9XZWJNZWRpYVN0cmF0ZWd5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViTWVkaWFTdHJhdGVneTo6cmVnaXN0ZXJMZWdhY3lDRE1GYWN0b3Jp
ZXMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZTo6dXBkYXRlUHJlZmVyZW5jZXMpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5jcHA6CisKIDIwMjAtMDItMjggIEplciBOb2JsZSAgPGplci5ub2JsZUBh
cHBsZS5jb20+CiAKICAgICAgICAgW0dQVVBdIEltcGxlbWVudCBMZWdhY3kgRU1FIEFQSSBpbiB0
aGUgR1BVIFByb2Nlc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMt
aW5wdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNm
aWxlbGlzdAppbmRleCA5Zjk0NmY4NDk3YWYyM2I0YWZhNTFiNzkxODQxODUxODg2MGFjNWI5Li4y
NDc2ZDU1M2MxMTY3ZTNmMWU3NjY1MWYxNWY0ZDM2ZTljYzI5ZjhjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dl
YktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CkBAIC0yMiw2ICsyMiw5IEBAICQo
UFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5Lm1lc3Nh
Z2VzLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNl
UHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkubWVzc2FnZXMuaW4KKyQoUFJPSkVDVF9ESVIpL0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5Lm1lc3NhZ2VzLmluCisk
KFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5Lm1lc3Nh
Z2VzLmluCiskKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNl
c3Npb25Qcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Lm1lc3NhZ2VzLmluCiAkKFBS
T0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLm1l
c3NhZ2VzLmluCkBAIC0xMTcsNiArMTIwLDcgQEAgJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbgogJChQUk9KRUNU
X0RJUikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLm1lc3Nh
Z2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5tZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJ
UikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5tZXNzYWdlcy5p
bgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9tZWRpYS9U
ZXh0VHJhY2tQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9j
ZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLm1lc3NhZ2VzLmluCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dl
YktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRleCBhOTZjMmNmZGRkNDZi
MzU5MjM4ZTk2MjM0M2E5OTIyMTA0ZWVhNTliLi40ZDBkZDU3MjkwYzY4ZTNiNWM2MjFjNjU0MzA1
NTIyODk0OTkzMjczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91
dHB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0
LnhjZmlsZWxpc3QKQEAgLTE1NSw2ICsxNTUsMTggQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQ0RNUHJveHlNZXNzYWdlc1JlcGxpZXMuaAogJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlN
ZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9S
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUxlZ2FjeUNETUZhY3Rv
cnlQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQyL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eU1lc3NhZ2VzLmgKKyQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUxlZ2FjeUNE
TUZhY3RvcnlQcm94eU1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVMZWdhY3lDRE1Qcm94eU1lc3NhZ2VSZWNlaXZlci5j
cHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUxl
Z2FjeUNETVByb3h5TWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYktpdDIvUmVtb3RlTGVnYWN5Q0RNUHJveHlNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTGVnYWN5Q0RNU2Vz
c2lvbk1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJLaXQyL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25NZXNzYWdlcy5oCiskKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVMZWdhY3lDRE1TZXNzaW9u
TWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJLaXQyL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKKyQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUxlZ2FjeUNE
TVNlc3Npb25Qcm94eU1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJLaXQyL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eU1lc3NhZ2VzUmVwbGllcy5o
CiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVNZWRp
YVBsYXllck1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJNZXNzYWdlcy5o
CiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVNZWRp
YVBsYXllck1hbmFnZXJNZXNzYWdlc1JlcGxpZXMuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtl
CmluZGV4IDQ1ZWUzZGI3ZWQ3ZTEzMzcyYzhhNzVhZDU1NWExNjU4N2Y2N2QwOGEuLmY0Y2NhMTYx
M2M1ZTU0ODE0OGU2MzMyM2Y4NzMxMjNhMDUyZTg4YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2Vz
Lm1ha2UKQEAgLTE1Niw2ICsxNTYsMTAgQEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAgICAgUmVt
b3RlQ0RNSW5zdGFuY2VQcm94eSBcCiAgICAgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uIFwKICAg
ICBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eSBcCisgICAgUmVtb3RlTGVnYWN5Q0RNUHJv
eHkgXAorICAgIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eSBcCisgICAgUmVtb3RlTGVnYWN5
Q0RNU2Vzc2lvbiBcCisgICAgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5IFwKICAgICBSZW1v
dGVNZWRpYVBsYXllck1hbmFnZXIgXAogICAgIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5
IFwKICAgICBSZW1vdGVNZWRpYVBsYXllclByb3h5IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCA2Y2YxYzMw
YjNlMzMwMTI3NzQ2NmQ5MmVlMjkzMzI0NjA3ZTU5Y2MxLi5hOGNjMTcyYzYxMzgxZWIxZThlNTNh
ZDIxM2U0MDk0ODA3MDZmNTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC03MSw2ICs3MSwxMiBAQAogI2lu
Y2x1ZGUgIlJlbW90ZUNETVByb3h5TWVzc2FnZXMuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKExF
R0FDWV9FTkNSWVBURURfTUVESUEpCisjaW5jbHVkZSAiUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVBy
b3h5LmgiCisjaW5jbHVkZSAiUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5TWVzc2FnZXMuaCIK
KyNpbmNsdWRlICJSZW1vdGVMZWdhY3lDRE1Qcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVt
b3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5TWVzc2FnZXMuaCIKKyNlbmRpZgogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtMjMxLDYgKzIzNywxNiBAQCB2
b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlbGVhc2VSZW5kZXJpbmdCYWNrZW5kKFJl
bmRlcmluZ0JhY2tlbmRJZGVudGlmaQogICAgIEFTU0VSVF9VTlVTRUQoZm91bmQsIGZvdW5kKTsK
IH0KIAorI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQorUmVtb3RlTGVnYWN5Q0RN
RmFjdG9yeVByb3h5JiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpsZWdhY3lDZG1GYWN0b3J5
UHJveHkoKQoreworICAgIGlmICghbV9sZWdhY3lDZG1GYWN0b3J5UHJveHkpCisgICAgICAgIG1f
bGVnYWN5Q2RtRmFjdG9yeVByb3h5ID0gbWFrZVVuaXF1ZTxSZW1vdGVMZWdhY3lDRE1GYWN0b3J5
UHJveHk+KCp0aGlzKTsKKworICAgIHJldHVybiAqbV9sZWdhY3lDZG1GYWN0b3J5UHJveHk7Cit9
CisjZW5kaWYKKwogYm9vbCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaXNwYXRjaE1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpCiB7
CiAgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpSZW1v
dGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CkBAIC0z
MDgsNiArMzI0LDIyIEBAIGJvb2wgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlzcGF0Y2hN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDCiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KICNlbmRpZgorI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQor
ICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6UmVtb3Rl
TGVnYWN5Q0RNRmFjdG9yeVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAg
bGVnYWN5Q2RtRmFjdG9yeVByb3h5KCkuZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tV2ViUHJvY2Vzcyhj
b25uZWN0aW9uLCBkZWNvZGVyKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAg
aWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpSZW1vdGVMZWdh
Y3lDRE1Qcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIGxlZ2FjeUNkbUZh
Y3RvcnlQcm94eSgpLmRpZFJlY2VpdmVDRE1NZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVj
ZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIGxlZ2FjeUNkbUZhY3RvcnlQcm94eSgpLmRp
ZFJlY2VpdmVDRE1TZXNzaW9uTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgfQorI2VuZGlmCiAKICAgICByZXR1cm4gbWVzc2FnZVJlY2VpdmVy
TWFwKCkuZGlzcGF0Y2hNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwogfQpAQCAtMzU1LDYg
KzM4NywyMiBAQCBib29sIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpc3BhdGNoU3luY01l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLAogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CiAjZW5kaWYKKyNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKKyAgICBp
ZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlJlbW90ZUxlZ2Fj
eUNETUZhY3RvcnlQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIGxlZ2Fj
eUNkbUZhY3RvcnlQcm94eSgpLmRpZFJlY2VpdmVTeW5jTWVzc2FnZUZyb21XZWJQcm9jZXNzKGNv
bm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKworICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdl
czo6UmVtb3RlTGVnYWN5Q0RNUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAg
ICBsZWdhY3lDZG1GYWN0b3J5UHJveHkoKS5kaWRSZWNlaXZlU3luY0NETU1lc3NhZ2UoY29ubmVj
dGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
fQorCisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpS
ZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAg
ICAgICBsZWdhY3lDZG1GYWN0b3J5UHJveHkoKS5kaWRSZWNlaXZlU3luY0NETVNlc3Npb25NZXNz
YWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7CisgICAgICAgIHJldHVybiB0
cnVlOworICAgIH0KKyNlbmRpZgogCiAgICAgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck1hcCgpLmRp
c3BhdGNoU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5oCmluZGV4IGEzZWNhNWM4ZmFkNjkxODM4MGZkOTMzYmY2MzBkZDRjZmY3MzBkOTYuLmFl
Mzk5ODYzNDVjYjJlNTZiZDVhMzdkMWJmZGRkOGVhYmQ0MzQ3ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtNDks
NiArNDksNyBAQCBjbGFzcyBMaWJXZWJSVENDb2RlY3NQcm94eTsKIGNsYXNzIFJlbW90ZUF1ZGlv
RGVzdGluYXRpb25NYW5hZ2VyOwogY2xhc3MgUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXJNYW5hZ2VyOwogY2xhc3MgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OworY2xhc3MgUmVtb3Rl
TGVnYWN5Q0RNRmFjdG9yeVByb3h5OwogY2xhc3MgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJv
eHk7CiBjbGFzcyBSZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlcjsKIGNsYXNzIFJlbW90ZU1lZGlh
UmVzb3VyY2VNYW5hZ2VyOwpAQCAtODksMTIgKzkwLDE2IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUo
RU5DUllQVEVEX01FRElBKQogICAgIFJlbW90ZUNETUZhY3RvcnlQcm94eSYgY2RtRmFjdG9yeVBy
b3h5KCk7CiAjZW5kaWYKKyNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKKyAgICBS
ZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkmIGxlZ2FjeUNkbUZhY3RvcnlQcm94eSgpOworI2Vu
ZGlmCisKKyAgICBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSYgcmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyUHJveHkoKTsKIAogcHJpdmF0ZToKICAgICBHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzKEdQVVByb2Nlc3MmLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciwgSVBDOjpDb25uZWN0
aW9uOjpJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCk7CiAKICAgICBSZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uTWFuYWdlciYgcmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIoKTsKLSAgICBSZW1v
dGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSYgcmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHko
KTsKICNpZiBQTEFURk9STShDT0NPQSkgJiYgVVNFKExJQldFQlJUQykKICAgICBMaWJXZWJSVEND
b2RlY3NQcm94eSYgbGliV2ViUlRDQ29kZWNzUHJveHkoKTsKICNlbmRpZgpAQCAtMTQ3LDYgKzE1
Miw5IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8UmVtb3RlQ0RNRmFjdG9yeVByb3h5PiBtX2NkbUZhY3RvcnlQcm94eTsKICNlbmRp
ZgorI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQorICAgIHN0ZDo6dW5pcXVlX3B0
cjxSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk+IG1fbGVnYWN5Q2RtRmFjdG9yeVByb3h5Owor
I2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94
eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZWQ5ZjViNWE0NDNmNWNmOTg2YmE0ZmNhMWM2ZTc4NTU3MWRlZjNi
MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVMZWdhY3lDRE1GYWN0b3J5UHJveHkuY3BwCkBAIC0wLDAgKzEsMTMyIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQ
cm94eS5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01F
RElBKQorCisjaW5jbHVkZSAiUmVtb3RlTGVnYWN5Q0RNUHJveHkuaCIKKyNpbmNsdWRlICJSZW1v
dGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0xlZ2FjeUNETS5o
PgorI2luY2x1ZGUgPHd0Zi9BbGdvcml0aG1zLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5OjpS
ZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29u
bmVjdGlvbikKKyAgICA6IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcyhjb25uZWN0aW9uKQor
eworfQorCitSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk6On5SZW1vdGVMZWdhY3lDRE1GYWN0
b3J5UHJveHkoKSA9IGRlZmF1bHQ7CisKK3ZvaWQgUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5
OjpjcmVhdGVDRE0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIE9wdGlvbmFsPE1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZUlkZW50aWZpZXI+JiYgb3B0aW9uYWxQbGF5ZXJJZCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChSZW1vdGVMZWdhY3lDRE1JZGVudGlmaWVyJiYpPiYmIGNvbXBsZXRpb24pCit7
CisgICAgYXV0byBwcml2YXRlQ0RNID0gTGVnYWN5Q0RNOjpjcmVhdGUoa2V5U3lzdGVtKTsKKyAg
ICBpZiAoIXByaXZhdGVDRE0pIHsKKyAgICAgICAgY29tcGxldGlvbih7IH0pOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBw
bGF5ZXJJZDsKKyAgICBpZiAob3B0aW9uYWxQbGF5ZXJJZCkKKyAgICAgICAgcGxheWVySWQgPSBX
VEZNb3ZlKG9wdGlvbmFsUGxheWVySWQudmFsdWUoKSk7CisKKyAgICBhdXRvIHByb3h5ID0gUmVt
b3RlTGVnYWN5Q0RNUHJveHk6OmNyZWF0ZShtYWtlV2Vha1B0cih0aGlzKSwgV1RGTW92ZShwbGF5
ZXJJZCksIFdURk1vdmUocHJpdmF0ZUNETSkpOworICAgIGF1dG8gaWRlbnRpZmllciA9IFJlbW90
ZUxlZ2FjeUNETUlkZW50aWZpZXI6OmdlbmVyYXRlKCk7CisgICAgYWRkUHJveHkoaWRlbnRpZmll
ciwgV1RGTW92ZShwcm94eSkpOworICAgIGNvbXBsZXRpb24oV1RGTW92ZShpZGVudGlmaWVyKSk7
Cit9CisKK3ZvaWQgUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5OjpzdXBwb3J0c0tleVN5c3Rl
bShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgT3B0aW9uYWw8U3RyaW5nPiBtaW1lVHlwZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uKQoreworICAgIGlmIChtaW1l
VHlwZSkKKyAgICAgICAgY29tcGxldGlvbihMZWdhY3lDRE06OmtleVN5c3RlbVN1cHBvcnRzTWlt
ZVR5cGUoa2V5U3lzdGVtLCAqbWltZVR5cGUpKTsKKyAgICBlbHNlCisgICAgICAgIGNvbXBsZXRp
b24oTGVnYWN5Q0RNOjpzdXBwb3J0c0tleVN5c3RlbShrZXlTeXN0ZW0pKTsKK30KKwordm9pZCBS
ZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk6OmRpZFJlY2VpdmVDRE1NZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIGlmIChh
dXRvKiBwcm94eSA9IG1fcHJveGllcy5nZXQobWFrZU9iamVjdElkZW50aWZpZXI8UmVtb3RlTGVn
YWN5Q0RNSWRlbnRpZmllclR5cGU+KGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkpCisgICAgICAg
IHByb3h5LT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKK30KKwordm9p
ZCBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk6OmRpZFJlY2VpdmVDRE1TZXNzaW9uTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3sK
KyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG1fc2Vzc2lvbnMuZ2V0KG1ha2VPYmplY3RJZGVudGlm
aWVyPFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyVHlwZT4oZGVjb2Rlci5kZXN0aW5h
dGlvbklEKCkpKSkKKyAgICAgICAgc2Vzc2lvbi0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlv
biwgZGVjb2Rlcik7Cit9CisKK3ZvaWQgUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5OjpkaWRS
ZWNlaXZlU3luY0NETU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRl
Y29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiBlbmNvZGVyKQor
eworICAgIGlmIChhdXRvKiBwcm94eSA9IG1fcHJveGllcy5nZXQobWFrZU9iamVjdElkZW50aWZp
ZXI8UmVtb3RlTGVnYWN5Q0RNSWRlbnRpZmllclR5cGU+KGRlY29kZXIuZGVzdGluYXRpb25JRCgp
KSkpCisgICAgICAgIHByb3h5LT5kaWRSZWNlaXZlU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVj
b2RlciwgZW5jb2Rlcik7Cit9CisKK3ZvaWQgUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5Ojpk
aWRSZWNlaXZlU3luY0NETVNlc3Npb25NZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
biwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYg
ZW5jb2RlcikKK3sKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG1fc2Vzc2lvbnMuZ2V0KG1ha2VP
YmplY3RJZGVudGlmaWVyPFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyVHlwZT4oZGVj
b2Rlci5kZXN0aW5hdGlvbklEKCkpKSkKKyAgICAgICAgc2Vzc2lvbi0+ZGlkUmVjZWl2ZVN5bmNN
ZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIGVuY29kZXIpOworfQorCit2b2lkIFJlbW90ZUxl
Z2FjeUNETUZhY3RvcnlQcm94eTo6YWRkUHJveHkoUmVtb3RlTGVnYWN5Q0RNSWRlbnRpZmllciBp
ZCwgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxlZ2FjeUNETVByb3h5PiYmIHByb3h5KQoreworICAg
IEFTU0VSVCghbV9wcm94aWVzLmNvbnRhaW5zKGlkKSk7CisgICAgbV9wcm94aWVzLnNldChpZCwg
V1RGTW92ZShwcm94eSkpOworfQorCit2b2lkIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eTo6
cmVtb3ZlUHJveHkoUmVtb3RlTGVnYWN5Q0RNSWRlbnRpZmllciBpZCkKK3sKKyAgICBBU1NFUlQo
bV9wcm94aWVzLmNvbnRhaW5zKGlkKSk7CisgICAgbV9wcm94aWVzLnJlbW92ZShpZCk7Cit9CisK
K3ZvaWQgUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5OjphZGRTZXNzaW9uKFJlbW90ZUxlZ2Fj
eUNETVNlc3Npb25JZGVudGlmaWVyIGlkLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGVnYWN5Q0RN
U2Vzc2lvblByb3h5PiYmIHNlc3Npb24pCit7CisgICAgQVNTRVJUKCFtX3Nlc3Npb25zLmNvbnRh
aW5zKGlkKSk7CisgICAgbV9zZXNzaW9ucy5zZXQoaWQsIFdURk1vdmUoc2Vzc2lvbikpOworfQor
Cit2b2lkIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eTo6cmVtb3ZlU2Vzc2lvbihSZW1vdGVM
ZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllciBpZCkKK3sKKyAgICBBU1NFUlQobV9zZXNzaW9ucy5j
b250YWlucyhpZCkpOworICAgIG1fc2Vzc2lvbnMucmVtb3ZlKGlkKTsKK30KKworUmVtb3RlTGVn
YWN5Q0RNU2Vzc2lvblByb3h5KiBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk6OmdldFNlc3Np
b24oY29uc3QgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXImIGlkKSBjb25zdAorewor
ICAgIGF1dG8gcmVzdWx0cyA9IG1fc2Vzc2lvbnMuZmluZChpZCk7CisgICAgaWYgKHJlc3VsdHMg
IT0gbV9zZXNzaW9ucy5lbmQoKSkKKyAgICAgICAgcmV0dXJuIHJlc3VsdHMtPnZhbHVlLmdldCgp
OworICAgIHJldHVybiBudWxscHRyOworfQorCisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9y
eVByb3h5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNTM1NTM4NDg4NjU5OTgxZDhmODgzYjRjYTFlY2NhYzIzNWEz
OWZlZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkuaApAQCAtMCwwICsxLDg0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShMRUdB
Q1lfRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUg
Ik1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJNZXNzYWdl
UmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVMZWdhY3lDRE1JZGVudGlmaWVyLmgiCisjaW5j
bHVkZSAiUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDx3dGYv
VW5pcXVlUmVmLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK2NsYXNzIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CitjbGFzcyBSZW1vdGVMZWdh
Y3lDRE1TZXNzaW9uUHJveHk7CitjbGFzcyBSZW1vdGVMZWdhY3lDRE1Qcm94eTsKK3N0cnVjdCBS
ZW1vdGVMZWdhY3lDRE1Db25maWd1cmF0aW9uOworCitjbGFzcyBSZW1vdGVMZWdhY3lDRE1GYWN0
b3J5UHJveHkgZmluYWwgOiBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyLCBwdWJsaWMgQ2Fu
TWFrZVdlYWtQdHI8UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5PiB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5
KEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmKTsKKyAgICB2aXJ0dWFsIH5SZW1vdGVMZWdhY3lD
RE1GYWN0b3J5UHJveHkoKTsKKworICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tV2ViUHJv
Y2VzcyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rlcikg
eyBkaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsgfQorICAgIHZvaWQgZGlk
UmVjZWl2ZVN5bmNNZXNzYWdlRnJvbVdlYlByb2Nlc3MoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+
JiBlbmNvZGVyKSB7IGRpZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCBl
bmNvZGVyKTsgfQorICAgIHZvaWQgZGlkUmVjZWl2ZUNETU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiwgSVBDOjpEZWNvZGVyJik7CisgICAgdm9pZCBkaWRSZWNlaXZlQ0RNU2Vzc2lvbk1lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CisgICAgdm9pZCBkaWRSZWNlaXZlU3lu
Y0NETU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVf
cHRyPElQQzo6RW5jb2Rlcj4mKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVTeW5jQ0RNU2Vzc2lvbk1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQ
Qzo6RW5jb2Rlcj4mKTsKKworICAgIHZvaWQgYWRkUHJveHkoUmVtb3RlTGVnYWN5Q0RNSWRlbnRp
Zmllciwgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxlZ2FjeUNETVByb3h5PiYmKTsKKyAgICB2b2lk
IHJlbW92ZVByb3h5KFJlbW90ZUxlZ2FjeUNETUlkZW50aWZpZXIpOworCisgICAgdm9pZCBhZGRT
ZXNzaW9uKFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8
UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5PiYmKTsKKyAgICB2b2lkIHJlbW92ZVNlc3Npb24o
UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXIpOworICAgIFJlbW90ZUxlZ2FjeUNETVNl
c3Npb25Qcm94eSogZ2V0U2Vzc2lvbihjb25zdCBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRp
ZmllciYpIGNvbnN0OworCisgICAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVj
dGlvblRvV2ViUHJvY2VzcygpIGNvbnN0IHsgcmV0dXJuIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJv
Y2VzczsgfQorCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBHUFVQcm9jZXNzQ29ubmVjdGlv
bjsKKyAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgorICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWwgeyB9CisgICAgdm9pZCBk
aWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3Rk
Ojp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBmaW5hbDsKKworICAgIC8vIE1lc3NhZ2VzCisg
ICAgdm9pZCBjcmVhdGVDRE0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIE9wdGlvbmFsPE1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXI+JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
UmVtb3RlTGVnYWN5Q0RNSWRlbnRpZmllciYmKT4mJik7CisgICAgdm9pZCBzdXBwb3J0c0tleVN5
c3RlbShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgT3B0aW9uYWw8U3RyaW5nPiBtaW1lVHlwZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisKKyAgICBHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzJiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CisgICAgSGFzaE1hcDxSZW1v
dGVMZWdhY3lDRE1JZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGVnYWN5Q0RNUHJv
eHk+PiBtX3Byb3hpZXM7CisgICAgSGFzaE1hcDxSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRp
Zmllciwgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eT4+IG1fc2Vz
c2lvbnM7Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHku
bWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDA3NDRmYmZkNGQwMmMxZjljM2Q3OWEwMGY1MDQ5Zjkx
NTNiN2Y0OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwzMSBA
QAorIyBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
IworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
IworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI2lmIEVOQUJMRShHUFVf
UFJPQ0VTUykgJiYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCisKK21lc3NhZ2VzIC0+
IFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eSBOb3RSZWZDb3VudGVkIHsKKyAgICBDcmVhdGVD
RE0oU3RyaW5nIGtleVN5c3RlbSwgT3B0aW9uYWw8V2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGVJZGVudGlmaWVyPiBwbGF5ZXJJZCkgLT4gKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNSWRl
bnRpZmllciBpZCkgU3luY2hyb25vdXMKKyAgICBTdXBwb3J0c0tleVN5c3RlbShTdHJpbmcga2V5
U3lzdGVtLCBPcHRpb25hbDxTdHJpbmc+IG1pbWVUeXBlKSAtPiAoYm9vbCByZXN1bHQpIFN5bmNo
cm9ub3VzCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmQxN2E4OTFhYWIx
MWVkZTZkYmVkN2MwZmQwMmQyODUyNzFlODM2MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5jcHAKQEAgLTAsMCAr
MSw5OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1v
dGVMZWdhY3lDRE1Qcm94eS5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUo
TEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuaCIKKyNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oIgorI2lu
Y2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyUHJveHkuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGVnYWN5
Q0RNUHJveHk+IFJlbW90ZUxlZ2FjeUNETVByb3h5OjpjcmVhdGUoV2Vha1B0cjxSZW1vdGVMZWdh
Y3lDRE1GYWN0b3J5UHJveHk+IGZhY3RvcnksIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50
aWZpZXImJiBwbGF5ZXJJZCwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkxlZ2FjeUNETT4mJiBj
ZG0pCit7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMZWdhY3lDRE1Qcm94eT4o
bmV3IFJlbW90ZUxlZ2FjeUNETVByb3h5KFdURk1vdmUoZmFjdG9yeSksIFdURk1vdmUocGxheWVy
SWQpLCBXVEZNb3ZlKGNkbSkpKTsKK30KKworUmVtb3RlTGVnYWN5Q0RNUHJveHk6OlJlbW90ZUxl
Z2FjeUNETVByb3h5KFdlYWtQdHI8UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5PiYmIGZhY3Rv
cnksIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXImJiBwbGF5ZXJJZCwgc3RkOjp1
bmlxdWVfcHRyPFdlYkNvcmU6OkxlZ2FjeUNETT4mJiBjZG0pCisgICAgOiBtX2ZhY3RvcnkoV1RG
TW92ZShmYWN0b3J5KSkKKyAgICAsIG1fcGxheWVySWQoV1RGTW92ZShwbGF5ZXJJZCkpCisgICAg
LCBtX2NkbShXVEZNb3ZlKGNkbSkpCit7CisgICAgbV9jZG0tPnNldENsaWVudCh0aGlzKTsKK30K
KworUmVtb3RlTGVnYWN5Q0RNUHJveHk6On5SZW1vdGVMZWdhY3lDRE1Qcm94eSgpID0gZGVmYXVs
dDsKKwordm9pZCBSZW1vdGVMZWdhY3lDRE1Qcm94eTo6c3VwcG9ydHNNSU1FVHlwZShjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBTdXBwb3J0c01JTUVUeXBlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sK
KyAgICBpZiAoIW1fY2RtKSB7CisgICAgICAgIGNhbGxiYWNrKGZhbHNlKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIGNhbGxiYWNrKG1fY2RtLT5zdXBwb3J0c01JTUVUeXBlKG1pbWVU
eXBlKSk7Cit9CisKK3ZvaWQgUmVtb3RlTGVnYWN5Q0RNUHJveHk6OmNyZWF0ZVNlc3Npb24oY29u
c3QgU3RyaW5nJiBrZXlTeXN0ZW0sIENyZWF0ZVNlc3Npb25DYWxsYmFjayYmIGNhbGxiYWNrKQor
eworICAgIGlmICghbV9jZG0gfHwgIW1fZmFjdG9yeSkgeworICAgICAgICBjYWxsYmFjayh7IH0p
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byBpZGVudGlmaWVyID0gUmVtb3Rl
TGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXI6OmdlbmVyYXRlKCk7CisgICAgYXV0byBzZXNzaW9u
ID0gUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpjcmVhdGUobWFrZVdlYWtQdHIobV9mYWN0
b3J5LmdldCgpKSwgaWRlbnRpZmllciwgKm1fY2RtKTsKKyAgICBtX2ZhY3RvcnktPmFkZFNlc3Np
b24oaWRlbnRpZmllciwgV1RGTW92ZShzZXNzaW9uKSk7CisgICAgY2FsbGJhY2soV1RGTW92ZShp
ZGVudGlmaWVyKSk7Cit9CisKK3ZvaWQgUmVtb3RlTGVnYWN5Q0RNUHJveHk6OnNldFBsYXllcklk
KE9wdGlvbmFsPE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXI+JiYgcGxheWVySWQp
Cit7CisgICAgaWYgKCFwbGF5ZXJJZCkKKyAgICAgICAgbV9wbGF5ZXJJZCA9IHsgfTsKKyAgICBt
X3BsYXllcklkID0gV1RGTW92ZSgqcGxheWVySWQpOworfQorCitSZWZQdHI8TWVkaWFQbGF5ZXI+
IFJlbW90ZUxlZ2FjeUNETVByb3h5OjpjZG1NZWRpYVBsYXllcihjb25zdCBMZWdhY3lDRE0qKSBj
b25zdAoreworICAgIGlmICghbV9wbGF5ZXJJZCB8fCAhbV9mYWN0b3J5KQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKworICAgIGF1dG8gcHJveHkgPSBtX2ZhY3RvcnktPmdwdUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MoKS5yZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSgpLmdldFByb3h5KG1f
cGxheWVySWQpOworICAgIGlmICghcHJveHkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisg
ICAgcmV0dXJuIHByb3h5LT5tZWRpYVBsYXllcigpOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHku
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yYjZkMTdhOWE0NTcxZTM0ODg0Y2ZmOGNhOWJlZWMzMzMxZjgyMDZlCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxl
Z2FjeUNETVByb3h5LmgKQEAgLTAsMCArMSw4MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9N
RURJQSkKKworI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIlJlbW90ZUxl
Z2FjeUNETUZhY3RvcnlQcm94eS5oIgorI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETUlkZW50aWZp
ZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0xlZ2FjeUNETS5oPgorI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRy
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKK30KKworbmFt
ZXNwYWNlIElQQyB7CitjbGFzcyBEYXRhUmVmZXJlbmNlOworfQorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworY2xhc3MgUmVtb3RlTGVnYWN5Q0RNUHJveHkKKyAgICA6IHByaXZhdGUgSVBDOjpNZXNz
YWdlUmVjZWl2ZXIKKyAgICAsIHB1YmxpYyBXZWJDb3JlOjpMZWdhY3lDRE1DbGllbnQKKyAgICAs
IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxSZW1vdGVMZWdhY3lDRE1Qcm94eT4geworcHVibGljOgor
ICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGVnYWN5Q0RNUHJveHk+IGNyZWF0ZShX
ZWFrUHRyPFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eT4sIE1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZUlkZW50aWZpZXImJiwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkxlZ2FjeUNETT4mJik7
CisgICAgflJlbW90ZUxlZ2FjeUNETVByb3h5KCk7CisKKyAgICBSZW1vdGVMZWdhY3lDRE1GYWN0
b3J5UHJveHkqIGZhY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2ZhY3RvcnkuZ2V0KCk7IH0KKwor
cHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5Owor
ICAgIFJlbW90ZUxlZ2FjeUNETVByb3h5KFdlYWtQdHI8UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVBy
b3h5PiYmLCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyJiYsIHN0ZDo6dW5pcXVl
X3B0cjxXZWJDb3JlOjpMZWdhY3lDRE0+JiYpOworCisgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2
ZXIKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVj
b2RlciYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JikgZmlu
YWw7CisKKyAgICAvLyBNZXNzYWdlcworICAgIHVzaW5nIFN1cHBvcnRzTUlNRVR5cGVDYWxsYmFj
ayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+OworICAgIHZvaWQgc3VwcG9ydHNNSU1F
VHlwZShjb25zdCBTdHJpbmcmLCBTdXBwb3J0c01JTUVUeXBlQ2FsbGJhY2smJik7CisgICAgdXNp
bmcgQ3JlYXRlU2Vzc2lvbkNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZW1vdGVM
ZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllciYmKT47CisgICAgdm9pZCBjcmVhdGVTZXNzaW9uKGNv
bnN0IFN0cmluZyYsIENyZWF0ZVNlc3Npb25DYWxsYmFjayYmKTsKKyAgICB2b2lkIHNldFBsYXll
cklkKE9wdGlvbmFsPE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXI+JiYpOworCisg
ICAgLy8gTGVnYWN5Q0RNQ2xpZW50CisgICAgUmVmUHRyPFdlYkNvcmU6Ok1lZGlhUGxheWVyPiBj
ZG1NZWRpYVBsYXllcihjb25zdCBXZWJDb3JlOjpMZWdhY3lDRE0qKSBjb25zdCBmaW5hbDsKKwor
ICAgIFdlYWtQdHI8UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5PiBtX2ZhY3Rvcnk7CisgICAg
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBtX3BsYXllcklkOworICAgIHN0ZDo6
dW5pcXVlX3B0cjxXZWJDb3JlOjpMZWdhY3lDRE0+IG1fY2RtOworfTsKKworfQorCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lD
RE1Qcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVMZWdhY3lDRE1Qcm94eS5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NzFiYThiZDg3ZTdkOTI3
MDdjYzA5ZDhmM2NjNDBkNmY0OGRmY2IzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0w
LDAgKzEsMzIgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
IyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQorCitt
ZXNzYWdlcyAtPiBSZW1vdGVMZWdhY3lDRE1Qcm94eSBOb3RSZWZDb3VudGVkIHsKKyAgICBTdXBw
b3J0c01JTUVUeXBlKFN0cmluZyBtaW1lVHlwZSkgLT4gKGJvb2wgc3VwcG9ydHMpIFN5bmNocm9u
b3VzCisgICAgQ3JlYXRlU2Vzc2lvbihTdHJpbmcgbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSkg
LT4gKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXIgaWQpIFN5bmNocm9u
b3VzCisgICAgU2V0UGxheWVySWQoT3B0aW9uYWw8V2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGVJZGVudGlmaWVyPiBwbGF5ZXJJZCkKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9u
UHJveHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBhMGUzM2ZjNmI0NDRkMzExZTY2MDJmOGE3NTVlMzM0MjAy
ZWMxNTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNwcApAQCAtMCwwICsxLDE0OCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVMZWdhY3lDRE1TZXNz
aW9uUHJveHkuaCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKExFR0FDWV9F
TkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgi
CisjaW5jbHVkZSAiUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5LmgiCisjaW5jbHVkZSAiUmVt
b3RlTGVnYWN5Q0RNU2Vzc2lvbk1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyRGF0
YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworc3RkOjp1bmlxdWVf
cHRyPFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eT4gUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblBy
b3h5OjpjcmVhdGUoV2Vha1B0cjxSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk+JiYgZmFjdG9y
eSwgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6
TGVnYWN5Q0RNJiBjZG0pCit7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMZWdh
Y3lDRE1TZXNzaW9uUHJveHk+KG5ldyBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkoV1RGTW92
ZShmYWN0b3J5KSwgaWRlbnRpZmllciwgY2RtKSk7Cit9CisKK1JlbW90ZUxlZ2FjeUNETVNlc3Np
b25Qcm94eTo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5KFdlYWtQdHI8UmVtb3RlTGVnYWN5
Q0RNRmFjdG9yeVByb3h5PiYmIGZhY3RvcnksIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlm
aWVyIGlkZW50aWZpZXIsIFdlYkNvcmU6OkxlZ2FjeUNETSYgY2RtKQorICAgIDogbV9mYWN0b3J5
KFdURk1vdmUoZmFjdG9yeSkpCisgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKKyAgICAs
IG1fc2Vzc2lvbihjZG0uY3JlYXRlU2Vzc2lvbigqdGhpcykpCit7Cit9CisKK1JlbW90ZUxlZ2Fj
eUNETVNlc3Npb25Qcm94eTo6flJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eSgpID0gZGVmYXVs
dDsKKworc3RhdGljIFJlZlB0cjxVaW50OEFycmF5PiBjb252ZXJ0VG9VaW50OEFycmF5KElQQzo6
U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYmIGJ1ZmZlcikKK3sKKyAgICBpZiAoIWJ1ZmZlci5i
dWZmZXIoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBzaXplX3Qgc2l6ZUluQnl0
ZXMgPSBidWZmZXIuc2l6ZSgpOworICAgIGF1dG8gYXJyYXlCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6
Y3JlYXRlKGJ1ZmZlci5kYXRhKCksIHNpemVJbkJ5dGVzKTsKKyAgICByZXR1cm4gVWludDhBcnJh
eTo6Y3JlYXRlKFdURk1vdmUoYXJyYXlCdWZmZXIpLCAwLCBzaXplSW5CeXRlcyk7Cit9CisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBUPgorc3RhdGljIE9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0
YVJlZmVyZW5jZT4gY29udmVydFRvT3B0aW9uYWxEYXRhUmVmZXJlbmNlKFQgYXJyYXkpCit7Cisg
ICAgaWYgKCFhcnJheSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4g
eyBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgoY29uc3QgY2hhciopYXJyYXktPmRhdGEoKSwgYXJyYXkt
PmJ5dGVMZW5ndGgoKSkgfTsKK30KKwordm9pZCBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6
OmdlbmVyYXRlS2V5UmVxdWVzdChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBJUEM6OlNoYXJlZEJ1
ZmZlckRhdGFSZWZlcmVuY2UmJiBpbml0RGF0YSwgR2VuZXJhdGVLZXlDYWxsYmFjayYmIGNvbXBs
ZXRpb24pCit7CisgICAgYXV0byBpbml0RGF0YUFycmF5ID0gY29udmVydFRvVWludDhBcnJheShX
VEZNb3ZlKGluaXREYXRhKSk7CisgICAgaWYgKCFpbml0RGF0YUFycmF5KSB7CisgICAgICAgIGNv
bXBsZXRpb24oeyB9LCBlbXB0eVN0cmluZygpLCAwLCAwKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIFN0cmluZyBkZXN0aW5hdGlvblVSTDsKKyAgICB1bnNpZ25lZCBzaG9ydCBlcnJv
ckNvZGUgeyAwIH07CisgICAgdWludDMyX3Qgc3lzdGVtQ29kZSB7IDAgfTsKKworICAgIGF1dG8g
a2V5UmVxdWVzdCA9IG1fc2Vzc2lvbi0+Z2VuZXJhdGVLZXlSZXF1ZXN0KG1pbWVUeXBlLCBpbml0
RGF0YUFycmF5LmdldCgpLCBkZXN0aW5hdGlvblVSTCwgZXJyb3JDb2RlLCBzeXN0ZW1Db2RlKTsK
KworICAgIGRlc3RpbmF0aW9uVVJMID0gInRoaXMgaXMgYSB0ZXN0IHN0cmluZyJfczsKKworICAg
IGNvbXBsZXRpb24oY29udmVydFRvT3B0aW9uYWxEYXRhUmVmZXJlbmNlKGtleVJlcXVlc3QpLCBk
ZXN0aW5hdGlvblVSTCwgZXJyb3JDb2RlLCBzeXN0ZW1Db2RlKTsKK30KKwordm9pZCBSZW1vdGVM
ZWdhY3lDRE1TZXNzaW9uUHJveHk6OnJlbGVhc2VLZXlzKCkKK3sKKyAgICBtX3Nlc3Npb24tPnJl
bGVhc2VLZXlzKCk7Cit9CisKK3ZvaWQgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5Ojp1cGRh
dGUoSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiYgdXBkYXRlLCBVcGRhdGVDYWxsYmFj
ayYmIGNvbXBsZXRpb24pCit7CisgICAgYXV0byB1cGRhdGVBcnJheSA9IGNvbnZlcnRUb1VpbnQ4
QXJyYXkoV1RGTW92ZSh1cGRhdGUpKTsKKyAgICBpZiAoIXVwZGF0ZUFycmF5KSB7CisgICAgICAg
IGNvbXBsZXRpb24oZmFsc2UsIFdURjo6bnVsbG9wdCwgMCwgMCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBSZWZQdHI8VWludDhBcnJheT4gbmV4dE1lc3NhZ2U7CisgICAgdW5zaWdu
ZWQgc2hvcnQgZXJyb3JDb2RlIHsgMCB9OworICAgIHVpbnQzMl90IHN5c3RlbUNvZGUgeyAwIH07
CisKKyAgICBib29sIHN1Y2NlZWRlZCA9IG1fc2Vzc2lvbi0+dXBkYXRlKHVwZGF0ZUFycmF5Lmdl
dCgpLCBuZXh0TWVzc2FnZSwgZXJyb3JDb2RlLCBzeXN0ZW1Db2RlKTsKKworICAgIGNvbXBsZXRp
b24oc3VjY2VlZGVkLCBjb252ZXJ0VG9PcHRpb25hbERhdGFSZWZlcmVuY2UobmV4dE1lc3NhZ2Up
LCBlcnJvckNvZGUsIHN5c3RlbUNvZGUpOworfQorCitSZWZQdHI8QXJyYXlCdWZmZXI+IFJlbW90
ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6Z2V0Q2FjaGVkS2V5Rm9yS2V5SWQoY29uc3QgU3RyaW5n
JiBrZXlJZCkKK3sKKyAgICByZXR1cm4gbV9zZXNzaW9uLT5jYWNoZWRLZXlGb3JLZXlJRChrZXlJ
ZCk7Cit9CisKK3ZvaWQgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpjYWNoZWRLZXlGb3JL
ZXlJRChTdHJpbmcga2V5SWQsIENhY2hlZEtleUZvcktleUlEQ2FsbGJhY2smJiBjb21wbGV0aW9u
KQoreworICAgIGNvbXBsZXRpb24oY29udmVydFRvT3B0aW9uYWxEYXRhUmVmZXJlbmNlKGdldENh
Y2hlZEtleUZvcktleUlkKGtleUlkKSkpOworfQorCit2b2lkIFJlbW90ZUxlZ2FjeUNETVNlc3Np
b25Qcm94eTo6c2VuZE1lc3NhZ2UoVWludDhBcnJheSogbWVzc2FnZSwgU3RyaW5nIGRlc3RpbmF0
aW9uVVJMKQoreworICAgIGlmICghbV9mYWN0b3J5KQorICAgICAgICByZXR1cm47CisKKyAgICBt
X2ZhY3RvcnktPmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKS5jb25uZWN0aW9uKCkuc2VuZChN
ZXNzYWdlczo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbjo6U2VuZE1lc3NhZ2UoY29udmVydFRvT3B0
aW9uYWxEYXRhUmVmZXJlbmNlKG1lc3NhZ2UpLCBkZXN0aW5hdGlvblVSTCksIG1faWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpzZW5kRXJyb3IoTWVk
aWFLZXlFcnJvckNvZGUgZXJyb3JDb2RlLCB1aW50MzJfdCBzeXN0ZW1Db2RlKQoreworICAgIGlm
IChtX2ZhY3RvcnkpCisgICAgICAgIG1fZmFjdG9yeS0+Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vz
cygpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uOjpT
ZW5kRXJyb3IoZXJyb3JDb2RlLCBzeXN0ZW1Db2RlKSwgbV9pZGVudGlmaWVyKTsKK30KKworU3Ry
aW5nIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6bWVkaWFLZXlzU3RvcmFnZURpcmVjdG9y
eSgpIGNvbnN0Cit7CisgICAgaWYgKG1fZmFjdG9yeSkKKyAgICAgICAgcmV0dXJuIG1fZmFjdG9y
eS0+Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpLm1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rvcnko
KTsKKyAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKK30KKworCit9CisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Np
b25Qcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNE
TVNlc3Npb25Qcm94eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE5M2VjODIxOGQ1MDdjZTRmZjlkMDk0ZGI0YjAy
ZjI2N2MzNzExZjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmgKQEAgLTAsMCArMSw5NyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisj
aW5jbHVkZSAiUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5LmgiCisjaW5jbHVkZSAiUmVtb3Rl
TGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0xlZ2FjeUNE
TVNlc3Npb24uaD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9Vbmlx
dWVSZWYuaD4KKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKExFR0FDWV9FTkNS
WVBURURfTUVESUEpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIExlZ2FjeUNETTsKK2Ns
YXNzIExlZ2FjeUNETVNlc3Npb247CitjbGFzcyBTaGFyZWRCdWZmZXI7Cit9CisKK25hbWVzcGFj
ZSBJUEMgeworY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZTsKK30KKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK2NsYXNzIFJlbW90ZUxlZ2FjeUNETVByb3h5OworY2xhc3MgUmVtb3RlTWVk
aWFQbGF5ZXJQcm94eTsKKworY2xhc3MgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5CisgICAg
OiBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyCisgICAgLCBwdWJsaWMgV2ViQ29yZTo6TGVn
YWN5Q0RNU2Vzc2lvbkNsaWVudAorICAgICwgcHVibGljIENhbk1ha2VXZWFrUHRyPFJlbW90ZUxl
Z2FjeUNETVNlc3Npb25Qcm94eT4geworcHVibGljOgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5PiBjcmVhdGUoV2Vha1B0cjxSZW1vdGVMZWdh
Y3lDRE1GYWN0b3J5UHJveHk+JiYsIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyLCBX
ZWJDb3JlOjpMZWdhY3lDRE0mKTsKKyAgICB+UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5KCk7
CisKKyAgICBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkqIGZhY3RvcnkoKSBjb25zdCB7IHJl
dHVybiBtX2ZhY3RvcnkuZ2V0KCk7IH0KKyAgICBXZWJDb3JlOjpMZWdhY3lDRE1TZXNzaW9uKiBz
ZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9uLmdldCgpOyB9CisKKyAgICB2b2lkIHNl
dFBsYXllcihXZWFrUHRyPFJlbW90ZU1lZGlhUGxheWVyUHJveHk+IHBsYXllcikgeyBtX3BsYXll
ciA9IFdURk1vdmUocGxheWVyKTsgfQorCisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBnZXRDYWNo
ZWRLZXlGb3JLZXlJZChjb25zdCBTdHJpbmcmKTsKKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xh
c3MgUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5OworICAgIFJlbW90ZUxlZ2FjeUNETVNlc3Np
b25Qcm94eShXZWFrUHRyPFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eT4mJiwgUmVtb3RlTGVn
YWN5Q0RNU2Vzc2lvbklkZW50aWZpZXIsIFdlYkNvcmU6OkxlZ2FjeUNETSYpOworCisgICAgLy8g
SVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJ
UEM6OkVuY29kZXI+JikgZmluYWw7CisKKyAgICAvLyBMZWdhY3lDRE1TZXNzaW9uQ2xpZW50Cisg
ICAgdm9pZCBzZW5kTWVzc2FnZShVaW50OEFycmF5KiwgU3RyaW5nIGRlc3RpbmF0aW9uVVJMKSBm
aW5hbDsKKyAgICB2b2lkIHNlbmRFcnJvcihNZWRpYUtleUVycm9yQ29kZSwgdWludDMyX3Qgc3lz
dGVtQ29kZSkgZmluYWw7CisgICAgU3RyaW5nIG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSBj
b25zdCBmaW5hbDsKKworICAgIC8vIE1lc3NhZ2VzCisgICAgdXNpbmcgR2VuZXJhdGVLZXlDYWxs
YmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJE
YXRhUmVmZXJlbmNlPiYmLCBjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCBzaG9ydCwgdWludDMyX3Qp
PjsKKyAgICB2b2lkIGdlbmVyYXRlS2V5UmVxdWVzdChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBJ
UEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmJiBpbml0RGF0YSwgR2VuZXJhdGVLZXlDYWxs
YmFjayYmKTsKKyAgICB2b2lkIHJlbGVhc2VLZXlzKCk7CisgICAgdXNpbmcgVXBkYXRlQ2FsbGJh
Y2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wsIE9wdGlvbmFsPElQQzo6U2hhcmVkQnVm
ZmVyRGF0YVJlZmVyZW5jZT4mJiwgdW5zaWduZWQgc2hvcnQsIHVpbnQzMl90KT47CisgICAgdm9p
ZCB1cGRhdGUoSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiYgdXBkYXRlLCBVcGRhdGVD
YWxsYmFjayYmKTsKKyAgICB1c2luZyBDYWNoZWRLZXlGb3JLZXlJRENhbGxiYWNrID0gQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U+
JiYpPjsKKyAgICB2b2lkIGNhY2hlZEtleUZvcktleUlEKFN0cmluZyBrZXlJZCwgQ2FjaGVkS2V5
Rm9yS2V5SURDYWxsYmFjayYmKTsKKworICAgIFdlYWtQdHI8UmVtb3RlTGVnYWN5Q0RNRmFjdG9y
eVByb3h5PiBtX2ZhY3Rvcnk7CisgICAgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXIg
bV9pZGVudGlmaWVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpMZWdhY3lDRE1TZXNz
aW9uPiBtX3Nlc3Npb247CisgICAgV2Vha1B0cjxSZW1vdGVNZWRpYVBsYXllclByb3h5PiBtX3Bs
YXllcjsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5t
ZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNDk2MmNlOTFkZjU1OTVmYzdhY2UyYzA1MDc3YjA1MWVh
MGRlMzcwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDMzIEBA
CisjIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisj
CisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisj
CisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaWYgRU5BQkxFKEdQVV9Q
Uk9DRVNTKSAmJiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKKworbWVzc2FnZXMgLT4g
UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5IE5vdFJlZkNvdW50ZWQgeworICAgIEdlbmVyYXRl
S2V5UmVxdWVzdChTdHJpbmcgbWltZVR5cGUsIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5j
ZSBpbml0RGF0YSkgLT4gKE9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZT4g
bmV4dE1lc3NhZ2UsIFN0cmluZyBkZXN0aW5hdGlvblVSTCwgdW5zaWduZWQgc2hvcnQgZXJyb3JD
b2RlLCB1aW50MzJfdCBzeXN0ZW1Db2RlKSBTeW5jaHJvbm91cworICAgIFJlbGVhc2VLZXlzKCkK
KyAgICBVcGRhdGUoSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIHVwZGF0ZSkgLT4gKGJv
b2wgc3VjY2VlZGVkLCBPcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U+IG5l
eHRNZXNzYWdlLCB1bnNpZ25lZCBzaG9ydCBlcnJvckNvZGUsIHVpbnQzMl90IHN5c3RlbUNvZGUp
IFN5bmNocm9ub3VzCisgICAgQ2FjaGVkS2V5Rm9yS2V5SUQoU3RyaW5nIGtleUlkKSAtPiAoT3B0
aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlPiBrZXkpIFN5bmNocm9ub3VzCit9
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHAKaW5kZXggNWE0Mjg5ZTg2
YjIyYTc5MzU4ODc2OTBiYWY3MTcyZTdjMmRkNDhjZS4uZjNlMzBmNzQ0YzNjMzU3N2M0ODc3MjI3
ZDQ2MTRjZDA1NGNkMTdjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3BwCkBAIC0y
NTgsNiArMjU4LDE0IEBAIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OmRpZFJl
Y2VpdmVQbGF5ZXJNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29uCiAgICAgICAgIHBsYXllci0+
ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CiB9CiAKK1JlbW90ZU1lZGlh
UGxheWVyUHJveHkqIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpnZXRQcm94eShjb25z
dCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyJiBpZCkKK3sKKyAgICBhdXRvIHJl
c3VsdHMgPSBtX3Byb3hpZXMuZmluZChpZCk7CisgICAgaWYgKHJlc3VsdHMgIT0gbV9wcm94aWVz
LmVuZCgpKQorICAgICAgICByZXR1cm4gcmVzdWx0cy0+dmFsdWUuZ2V0KCk7CisgICAgcmV0dXJu
IG51bGxwdHI7Cit9CisKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKIGNvbnN0IExvZ2dlciYg
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OmxvZ2dlcigpIGNvbnN0CiB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBs
YXllck1hbmFnZXJQcm94eS5oCmluZGV4IGYzODk3MWM3YjgzN2E5ODUwNTc4MmZkYWMzMDgxNWE5
YzMxNDA3MWIuLmVlNGQ4MDQzZDUzMDA3ZTNhMTcxODI4ZWM4NTA5MmRlODA1OTU1ZjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1h
bmFnZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXJQcm94eS5oCkBAIC02Nyw2ICs2Nyw4IEBAIHB1YmxpYzoKICAgICBX
VEZMb2dDaGFubmVsJiBsb2dDaGFubmVsKCkgY29uc3QgZmluYWw7CiAjZW5kaWYKIAorICAgIFJl
bW90ZU1lZGlhUGxheWVyUHJveHkqIGdldFByb3h5KGNvbnN0IE1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZUlkZW50aWZpZXImKTsKKwogcHJpdmF0ZToKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZl
cgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAKaW5kZXggYTdlM2MzMTdkZTNmNjliZDAyMWFj
ZjVmMDRiMjk0NzZlNGQ0ZjQxOC4uMDFjYmNjYmM0ZjY4YTk2NDUyNDUzNmMwNjlmZjRkMzU3YjQ5
YjFhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1l
ZGlhUGxheWVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcApAQCAtNTIxLDE1ICs1MjEsMTkgQEAgdm9pZCBSZW1v
dGVNZWRpYVBsYXllclByb3h5OjptZWRpYVBsYXllckFjdGl2ZVNvdXJjZUJ1ZmZlcnNDaGFuZ2Vk
KCkKIH0KIAogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQotUmVmUHRyPEFycmF5
QnVmZmVyPiBSZW1vdGVNZWRpYVBsYXllclByb3h5OjptZWRpYVBsYXllckNhY2hlZEtleUZvcktl
eUlkKGNvbnN0IFN0cmluZyYpIGNvbnN0CitSZWZQdHI8QXJyYXlCdWZmZXI+IFJlbW90ZU1lZGlh
UGxheWVyUHJveHk6Om1lZGlhUGxheWVyQ2FjaGVkS2V5Rm9yS2V5SWQoY29uc3QgU3RyaW5nJiBr
ZXlJZCkgY29uc3QKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGlmIChhdXRvIGNkbVNl
c3Npb24gPSBtX21hbmFnZXIuZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpLmxlZ2FjeUNkbUZh
Y3RvcnlQcm94eSgpLmdldFNlc3Npb24obV9sZWdhY3lTZXNzaW9uKSkKKyAgICAgICAgcmV0dXJu
IGNkbVNlc3Npb24tPmdldENhY2hlZEtleUZvcktleUlkKGtleUlkKTsKICAgICByZXR1cm4gbnVs
bHB0cjsKIH0KIAotdm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjptZWRpYVBsYXllcktleU5l
ZWRlZChVaW50OEFycmF5KikKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5
ZXJLZXlOZWVkZWQoVWludDhBcnJheSogbWVzc2FnZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIElQQzo6RGF0YVJlZmVyZW5jZSBtZXNzYWdlUmVmZXJlbmNlOworICAgIGlmIChtZXNz
YWdlKQorICAgICAgICBtZXNzYWdlUmVmZXJlbmNlID0geyBtZXNzYWdlLT5kYXRhKCksIG1lc3Nh
Z2UtPmJ5dGVMZW5ndGgoKSB9OworICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb24tPnNlbmQoTWVz
c2FnZXM6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6TWVkaWFQbGF5ZXJLZXlOZWVkZWQoV1RG
TW92ZShtZXNzYWdlUmVmZXJlbmNlKSksIG1faWQpOwogfQogI2VuZGlmCiAKQEAgLTcxMiw2ICs3
MTYsMjggQEAgdm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjpzZW5kQ2FjaGVkU3RhdGUoKQog
fQogCiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCit2b2lkIFJlbW90ZU1lZGlh
UGxheWVyUHJveHk6OnNldExlZ2FjeUNETVNlc3Npb24oUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklk
ZW50aWZpZXImJiBpbnN0YW5jZUlkKQoreworICAgIGlmIChtX2xlZ2FjeVNlc3Npb24gPT0gaW5z
dGFuY2VJZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fbGVnYWN5U2Vzc2lvbikgewor
ICAgICAgICBpZiAoYXV0byBjZG1TZXNzaW9uID0gbV9tYW5hZ2VyLmdwdUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MoKS5sZWdhY3lDZG1GYWN0b3J5UHJveHkoKS5nZXRTZXNzaW9uKG1fbGVnYWN5U2Vz
c2lvbikpIHsKKyAgICAgICAgICAgIG1fcGxheWVyLT5zZXRDRE1TZXNzaW9uKG51bGxwdHIpOwor
ICAgICAgICAgICAgY2RtU2Vzc2lvbi0+c2V0UGxheWVyKG51bGxwdHIpOworICAgICAgICB9Cisg
ICAgfQorCisgICAgbV9sZWdhY3lTZXNzaW9uID0gaW5zdGFuY2VJZDsKKworICAgIGlmIChtX2xl
Z2FjeVNlc3Npb24pIHsKKyAgICAgICAgaWYgKGF1dG8gY2RtU2Vzc2lvbiA9IG1fbWFuYWdlci5n
cHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkubGVnYWN5Q2RtRmFjdG9yeVByb3h5KCkuZ2V0U2Vz
c2lvbihtX2xlZ2FjeVNlc3Npb24pKSB7CisgICAgICAgICAgICBtX3BsYXllci0+c2V0Q0RNU2Vz
c2lvbihjZG1TZXNzaW9uLT5zZXNzaW9uKCkpOworICAgICAgICAgICAgY2RtU2Vzc2lvbi0+c2V0
UGxheWVyKG1ha2VXZWFrUHRyKHRoaXMpKTsKKyAgICAgICAgfQorICAgIH0KK30KKwogdm9pZCBS
ZW1vdGVNZWRpYVBsYXllclByb3h5OjprZXlBZGRlZCgpCiB7CiAgICAgbV9wbGF5ZXItPmtleUFk
ZGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
TWVkaWFQbGF5ZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZU1lZGlhUGxheWVyUHJveHkuaAppbmRleCBkOTRiZjIxOWIyN2Y2ZTlhOWJkOTE4YThkNGNmNWEx
MjMyMzQ4YzA0Li45NWNiNWFlMmNmODZjNzkzOWY3YWFhMzlmNzI5M2VlOGQ2OWEwZjQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBs
YXllclByb3h5LmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAj
aW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllci5oIgogI2luY2x1ZGUg
Ik1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVu
dGlmaWVyLmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJDb25maWd1cmF0aW9uLmgiCiAj
aW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJQcm94eUNvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRl
ICJSZW1vdGVNZWRpYVBsYXllclN0YXRlLmgiCkBAIC0xNDAsNiArMTQxLDcgQEAgcHVibGljOgog
I2VuZGlmCiAKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKKyAgICB2b2lkIHNl
dExlZ2FjeUNETVNlc3Npb24oUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXImJiBpbnN0
YW5jZUlkKTsKICAgICB2b2lkIGtleUFkZGVkKCk7CiAjZW5kaWYKIApAQCAtMTY0LDYgKzE2Niw4
IEBAIHB1YmxpYzoKICAgICBSZWY8V2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlPiByZXF1
ZXN0UmVzb3VyY2UoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlBsYXRmb3Jt
TWVkaWFSZXNvdXJjZUxvYWRlcjo6TG9hZE9wdGlvbnMpOwogICAgIHZvaWQgcmVtb3ZlUmVzb3Vy
Y2UoUmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIpOwogCisgICAgUmVmUHRyPFdlYkNvcmU6
Ok1lZGlhUGxheWVyPiBtZWRpYVBsYXllcigpIHsgcmV0dXJuIG1fcGxheWVyOyB9CisKIHByaXZh
dGU6CiAgICAgLy8gTWVkaWFQbGF5ZXJDbGllbnQKICAgICB2b2lkIG1lZGlhUGxheWVyTmV0d29y
a1N0YXRlQ2hhbmdlZCgpIGZpbmFsOwpAQCAtMjgxLDYgKzI4NSw3IEBAIHByaXZhdGU6CiAKICNp
ZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJ
QSkKICAgICBib29sIG1fc2hvdWxkQ29udGludWVBZnRlcktleU5lZWRlZCB7IGZhbHNlIH07Cisg
ICAgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXIgbV9sZWdhY3lTZXNzaW9uOwogI2Vu
ZGlmCiAKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Lm1lc3NhZ2VzLmluIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkubWVz
c2FnZXMuaW4KaW5kZXggNWNkY2M4MmM0MDFiOTdmZDVkN2E4ZWM4ZGVkZTAwNDc3NDc0ODBhOS4u
MmZlOGVhY2Y5Zjc5YmYyYzhlMGI3YWY1YTZjNDI3MTQ3M2RiZDc1OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkubWVzc2Fn
ZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxh
eWVyUHJveHkubWVzc2FnZXMuaW4KQEAgLTc3LDcgKzc3LDcgQEAgbWVzc2FnZXMgLT4gUmVtb3Rl
TWVkaWFQbGF5ZXJQcm94eSBOb3RSZWZDb3VudGVkIHsKICNlbmRpZgogCiAjaWYgRU5BQkxFKExF
R0FDWV9FTkNSWVBURURfTUVESUEpCi0gICAgIyBTZXRDRE1TZXNzaW9uCisgICAgU2V0TGVnYWN5
Q0RNU2Vzc2lvbihXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyIGluc3Rh
bmNlSWQpCiAgICAgS2V5QWRkZWQoKQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVUZXh0VHJhY2tQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVGV4dFRyYWNrUHJveHkuY3BwCmluZGV4IGFmNjRj
ODJiOTAyM2FkMjM0MTQyM2NmODVkYjQ5NWE3NmM0YzZiNGEuLjYwZmE2YzgxMWJmZDA3NjJiYmVj
ZDFlMTgwY2MwY2E1MjI2YjI0ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVUZXh0VHJhY2tQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZVRleHRUcmFja1Byb3h5LmNwcApAQCAtMjksMTUgKzI5LDE5IEBA
CiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgi
CiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlTWVzc2FnZXMuaCIKICNpbmNsdWRl
ICJSZW1vdGVNZWRpYVBsYXllclByb3h5LmgiCiAjaW5jbHVkZSAiVGV4dFRyYWNrUHJpdmF0ZVJl
bW90ZUNvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJUZXh0VHJhY2tQcml2YXRlUmVtb3RlTWVz
c2FnZXMuaCIKKyNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlIDxX
ZWJDb3JlL0lTT1ZUVEN1ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4K
IAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCiBSZW1v
dGVUZXh0VHJhY2tQcm94eTo6UmVtb3RlVGV4dFRyYWNrUHJveHkoUmVtb3RlTWVkaWFQbGF5ZXJQ
cm94eSYgcGxheWVyLCBUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkLCBSZWY8SVBDOjpD
b25uZWN0aW9uPiYmIGNvbm5lY3Rpb24sIEluYmFuZFRleHRUcmFja1ByaXZhdGUmIHRyYWNrUHJp
dmF0ZSkKICAgICA6IG1fcGxheWVyKHBsYXllcikKICAgICAsIG1faWRlbnRpZmllcihpZCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVUZXh0VHJhY2tQ
cm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVRleHRUcmFja1By
b3h5LmgKaW5kZXggMGJlMTU0NTFkOWFiODQ5YjlhYTQ5YjU0YzMxNTk0NGNkNmY4ZjcxYi4uNDU1
NTBiZjk1MzhkMzBiZTk2ZWNjYTM0YzlhMDEyZWM1ZDE4YzBmOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVRleHRUcmFja1Byb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVRleHRUcmFja1Byb3h5LmgKQEAgLTMy
LDE1ICszMiwyMiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvVHJhY2tCYXNlLmg+CiAKK25hbWVzcGFjZSBJUEMgeworCitj
bGFzcyBDb25uZWN0aW9uOworCit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCitjbGFzcyBSZW1v
dGVNZWRpYVBsYXllclByb3h5Owogc3RydWN0IFRleHRUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1
cmF0aW9uOwogCiBjbGFzcyBSZW1vdGVUZXh0VHJhY2tQcm94eSBmaW5hbAogICAgIDogcHVibGlj
IFRocmVhZFNhZmVSZWZDb3VudGVkPFJlbW90ZVRleHRUcmFja1Byb3h5LCBXVEY6OkRlc3RydWN0
aW9uVGhyZWFkOjpNYWluPgogICAgICwgcHJpdmF0ZSBXZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2tQ
cml2YXRlQ2xpZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFJlbW90ZVRleHRUcmFja1By
b3h5PiBjcmVhdGUoUmVtb3RlTWVkaWFQbGF5ZXJQcm94eSYgcGxheWVyLCBUcmFja1ByaXZhdGVS
ZW1vdGVJZGVudGlmaWVyIGlkLCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24sIElu
YmFuZFRleHRUcmFja1ByaXZhdGUmIHRyYWNrUHJpdmF0ZSkKKyAgICBzdGF0aWMgUmVmPFJlbW90
ZVRleHRUcmFja1Byb3h5PiBjcmVhdGUoUmVtb3RlTWVkaWFQbGF5ZXJQcm94eSYgcGxheWVyLCBU
cmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkLCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNv
bm5lY3Rpb24sIFdlYkNvcmU6OkluYmFuZFRleHRUcmFja1ByaXZhdGUmIHRyYWNrUHJpdmF0ZSkK
ICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVRleHRUcmFja1Byb3h5
KHBsYXllciwgaWQsIFdURk1vdmUoY29ubmVjdGlvbiksIHRyYWNrUHJpdmF0ZSkpOwogICAgIH0K
QEAgLTUwLDE1ICs1NywxNSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRNb2RlKFdlYkNvcmU6Oklu
YmFuZFRleHRUcmFja1ByaXZhdGU6Ok1vZGUgbW9kZSkgeyBtX3RyYWNrUHJpdmF0ZS0+c2V0TW9k
ZShtb2RlKTsgfQogCiBwcml2YXRlOgotICAgIFJlbW90ZVRleHRUcmFja1Byb3h5KFJlbW90ZU1l
ZGlhUGxheWVyUHJveHkmLCBUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyLCBSZWY8SVBDOjpD
b25uZWN0aW9uPiYmLCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlJik7CisgICAgUmVtb3RlVGV4dFRy
YWNrUHJveHkoUmVtb3RlTWVkaWFQbGF5ZXJQcm94eSYsIFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50
aWZpZXIsIFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYsIFdlYkNvcmU6OkluYmFuZFRleHRUcmFja1By
aXZhdGUmKTsKIAogICAgIC8vIEluYmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQKICAgICB2aXJ0
dWFsIHZvaWQgYWRkRGF0YUN1ZShjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRp
bWUmIGVuZCwgY29uc3Qgdm9pZCosIHVuc2lnbmVkKTsKIAogI2lmIEVOQUJMRShEQVRBQ1VFX1ZB
TFVFKQotICAgIHZpcnR1YWwgdm9pZCBhZGREYXRhQ3VlKGNvbnN0IE1lZGlhVGltZSYgc3RhcnQs
IGNvbnN0IE1lZGlhVGltZSYgZW5kLCBSZWY8U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZT4mJiwg
Y29uc3QgU3RyaW5nJik7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZURhdGFDdWUoY29uc3QgTWVk
aWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1lJiBlbmQsIFNlcmlhbGl6ZWRQbGF0Zm9ybURh
dGFDdWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRGF0YUN1ZShjb25zdCBNZWRpYVRpbWUm
IHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCwgU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZSYp
OworICAgIHZpcnR1YWwgdm9pZCBhZGREYXRhQ3VlKGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNv
bnN0IE1lZGlhVGltZSYgZW5kLCBSZWY8V2ViQ29yZTo6U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1
ZT4mJiwgY29uc3QgU3RyaW5nJik7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZURhdGFDdWUoY29u
c3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1lJiBlbmQsIFdlYkNvcmU6OlNlcmlh
bGl6ZWRQbGF0Zm9ybURhdGFDdWUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRGF0YUN1ZShj
b25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCwgV2ViQ29yZTo6U2Vy
aWFsaXplZFBsYXRmb3JtRGF0YUN1ZSYpOwogI2VuZGlmCiAKICAgICB2aXJ0dWFsIHZvaWQgYWRk
R2VuZXJpY0N1ZShJbmJhbmRHZW5lcmljQ3VlJik7CkBAIC02Nyw3ICs3NCw3IEBAIHByaXZhdGU6
CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VXZWJWVFRGaWxlSGVhZGVyKFN0cmluZyYmKTsKICAg
ICB2aXJ0dWFsIHZvaWQgcGFyc2VXZWJWVFRDdWVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHVuc2ln
bmVkIGxlbmd0aCk7Ci0gICAgdmlydHVhbCB2b2lkIHBhcnNlV2ViVlRUQ3VlRGF0YShJU09XZWJW
VFRDdWUmJik7CisgICAgdmlydHVhbCB2b2lkIHBhcnNlV2ViVlRUQ3VlRGF0YShXZWJDb3JlOjpJ
U09XZWJWVFRDdWUmJik7CiAKICAgICAvLyBUcmFja1ByaXZhdGVCYXNlQ2xpZW50CiAgICAgdm9p
ZCBpZENoYW5nZWQoY29uc3QgQXRvbVN0cmluZyYpIGZpbmFsOwpAQCAtODEsNyArODgsNyBAQCBw
cml2YXRlOgogICAgIFJlbW90ZU1lZGlhUGxheWVyUHJveHkmIG1fcGxheWVyOwogICAgIFRyYWNr
UHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogICAgIFJlZjxJUEM6OkNvbm5l
Y3Rpb24+IG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb247Ci0gICAgUmVmPEluYmFuZFRleHRUcmFja1By
aXZhdGU+IG1fdHJhY2tQcml2YXRlOworICAgIFJlZjxXZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2tQ
cml2YXRlPiBtX3RyYWNrUHJpdmF0ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggMjVmMDg5MGU3MTVlMmU3
ZmFiNmU3Njg4ZmEyODYwN2M4YWY5MDljYS4uYzRiYWZlM2U3MTUxMjc5NjlkY2IzNjI5YWJjMGU2
NWJjMjg0Yzg3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNz
YWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBA
IC0yMzUsNiArMjM1LDggQEAgZGVmIHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFy
ZWQoKToKICAgICAgICAgJ1dlYktpdDo6UmVtb3RlQ0RNSWRlbnRpZmllcicsCiAgICAgICAgICdX
ZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6OlJl
bW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXInLAorICAgICAgICAnV2ViS2l0OjpSZW1v
dGVMZWdhY3lDRE1JZGVudGlmaWVyJywKKyAgICAgICAgJ1dlYktpdDo6UmVtb3RlTGVnYWN5Q0RN
U2Vzc2lvbklkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpSZW1vdGVNZWRpYVJlc291cmNl
SWRlbnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6OlJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVy
JywKICAgICAgICAgJ1dlYktpdDo6UlRDRGVjb2RlcklkZW50aWZpZXInLApAQCAtNTgxLDYgKzU4
Myw3IEBAIGRlZiBoZWFkZXJzX2Zvcl90eXBlKHR5cGUpOgogICAgICAgICAnV2ViQ29yZTo6SW5w
dXRNb2RlJzogWyc8V2ViQ29yZS9JbnB1dE1vZGUuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6Oktl
eWZyYW1lVmFsdWVMaXN0JzogWyc8V2ViQ29yZS9HcmFwaGljc0xheWVyLmg+J10sCiAgICAgICAg
ICdXZWJDb3JlOjpLZXlwcmVzc0NvbW1hbmQnOiBbJzxXZWJDb3JlL0tleWJvYXJkRXZlbnQuaD4n
XSwKKyAgICAgICAgJ1dlYkNvcmU6OkxlZ2FjeUNETVNlc3Npb25DbGllbnQ6Ok1lZGlhS2V5RXJy
b3JDb2RlJzogWyc8V2ViQ29yZS9MZWdhY3lDRE1TZXNzaW9uLmg+J10sCiAgICAgICAgICdXZWJD
b3JlOjpMb2NrQmFja0ZvcndhcmRMaXN0JzogWyc8V2ViQ29yZS9GcmFtZUxvYWRlclR5cGVzLmg+
J10sCiAgICAgICAgICdXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6SGFzQWN0
aXZpdHknOiBbJzxXZWJDb3JlL01lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmg+J10sCiAgICAg
ICAgICdXZWJDb3JlOjpOZXR3b3JrVHJhbnNhY3Rpb25JbmZvcm1hdGlvbic6IFsnPFdlYkNvcmUv
TmV0d29ya0xvYWRJbmZvcm1hdGlvbi5oPiddLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
b3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKaW5kZXggMDQ4ZjZhOGYyNzg0
MTA1NjhmZTMwNzBhMTlkZGJkYzIzYzNmZTRiYi4uNjhlN2E3YmFlYWE2NDRhYjI4MmNlNmY0MmVj
MjdiMzI1MTNlOTMzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC0zMCw2ICszMCw5IEBAIEdQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVD
RE1JbnN0YW5jZVByb3h5LmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb25Qcm94eS5jcHAKIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuY3BwCitHUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5jcHAKK0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuY3BwCitHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxl
Z2FjeUNETVNlc3Npb25Qcm94eS5jcHAKIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyUHJveHkuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJv
eHkuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuY3BwCkBAIC01NDgs
NiArNTUxLDkgQEAgV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmNwcAogV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeS5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUNETUluc3RhbmNlLmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uLmNwcAorV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNLmNwcAor
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeS5jcHAKK1dlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24uY3BwCiBXZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuY3BwCiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVNZWRpYVBsYXllck1JTUVUeXBlQ2FjaGUuY3BwIEBuby11bmlmeQogV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5LmNwcApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMzkzZDEwMWM3MjczNjZjOWFh
NTFjNDA1ZjZiMjIyMmU1ZTU3MmI0Yi4uYWViNThmMTBlNDhjYzRhNTgzMjJhZGYxYjVlYmY5OWFl
MzE4OTZjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0xNzQ1LDYgKzE3NDUsMTAgQEAKIAkJQ0RBQzIwRkEyM0ZDNzI2QzAwMjFERUUz
IC8qIFJlbW90ZUNETVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQUMyMEVGMjNGQzM4MzkwMDIxREVFMyAvKiBS
ZW1vdGVDRE1Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCUNEQzI4MzFEMjAxQkQ3
OUQwMEU2RTc0NSAvKiBXS0Z1bGxzY3JlZW5TdGFja1ZpZXcuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQzI4MzFCMjAxQkQ3OUQwMEU2RTc0NSAvKiBX
S0Z1bGxzY3JlZW5TdGFja1ZpZXcuaCAqLzsgfTsKIAkJQ0RDQTg1QzkxMzJBQkE0RTAwRTk2MURG
IC8qIFdLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQ0E4NUM3MTMyQUJBNEUwMEU5NjFERiAvKiBXS0Z1
bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLmggKi87IH07CisJCUNERTU1NTMyMjQwNkVCOEMwMDhB
M0REQiAvKiBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFNTU1MjkyNDA2
Qjg5NjAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eU1lc3NhZ2VSZWNlaXZl
ci5jcHAgKi87IH07CisJCUNERTU1NTMzMjQwNkVCOEMwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lD
RE1Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDREU1NTUyQTI0MDZCODk2MDA4QTNEREIgLyogUmVtb3RlTGVnYWN5
Q0RNUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OworCQlDREU1NTUzNDI0MDZFQjhDMDA4
QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbk1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREU1NTUyRTI0MDZCODk3
MDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi87
IH07CisJCUNERTU1NTM1MjQwNkVCOEMwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1TZXNzaW9u
UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0RFNTU1MzEyNDA2Qjg5NzAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNE
TVNlc3Npb25Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCUNFMTFBRDUyMUNCQzQ4
MkYwMDY4MUVFNSAvKiBDb2RlU2lnbmluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0UxMUFENTExQ0JDNDgyRjAwNjgxRUU1IC8qIENvZGVTaWduaW5n
LmggKi87IH07CiAJCUNFMUEwQkQyMUE0OEU2QzYwMDU0RUY3NCAvKiBBc3NlcnRpb25TZXJ2aWNl
c1NQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Ux
QTBCQ0MxQTQ4RTZDNjAwNTRFRjc0IC8qIEFzc2VydGlvblNlcnZpY2VzU1BJLmggKi87IH07CiAJ
CUNFMUEwQkQ2MUE0OEU2QzYwMDU0RUY3NCAvKiBUQ0NTUEkuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMUEwQkQwMUE0OEU2QzYwMDU0RUY3NCAvKiBU
Q0NTUEkuaCAqLzsgfTsKQEAgLTUwOTEsNiArNTA5NSwzNiBAQAogCQlDRENBODVDNjEzMkFCQTRF
MDBFOTYxREYgLyogV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEQ0E4NUM3MTMyQUJBNEUwMEU5NjFE
RiAvKiBXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQ0RDQTg1RDQxMzJBQzJCMzAwRTk2MURGIC8qIElPS2l0LmZyYW1l
d29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdy
YXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gSU9LaXQuZnJhbWV3b3JrOyBwYXRoID0gL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvSU9LaXQuZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0
ZT4iOyB9OworCQlDREU1NTRFMjI0MDU4MTE0MDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNRmFj
dG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUNERTU1NEUzMjQwNTgxMTQwMDhBM0REQiAvKiBSZW1vdGVM
ZWdhY3lDRE1GYWN0b3J5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUxlZ2FjeUNETUZh
Y3RvcnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREU1NTRFQTI0MDU4MTgz
MDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUxlZ2Fj
eUNETS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREU1NTRFQjI0MDU4MTgzMDA4
QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUxl
Z2FjeUNETS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNERTU1NEVFMjQwNTgx
QTMwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJl
bW90ZUxlZ2FjeUNETVNlc3Npb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RF
NTU0RUYyNDA1ODFBMzAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETVNlc3Npb24uY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUNERTU1NEY4MjQwNTgyMDgwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lD
RE1TZXNzaW9uUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblBy
b3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNERTU1NEY5MjQwNTgyMDgwMDhB
M0REQiAvKiBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQ0RFNTU1MDAyNDA1ODI4NDAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETVNlc3Np
b25Qcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSZW1vdGVMZWdhY3lD
RE1TZXNzaW9uUHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUNERTU1NTA1MjQwNTgzMjQwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uLm1lc3Nh
Z2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IFJlbW90ZUxlZ2FjeUNETVNlc3Npb24ubWVzc2FnZXMuaW47IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUNERTU1NTA3MjQwNTg4QjgwMDhBM0REQiAvKiBSZW1vdGVM
ZWdhY3lDRE1JZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUxlZ2FjeUNETUlkZW50
aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RFNTU1MDkyNDA1ODhDQjAw
OEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUNERTU1NTFCMjQwNUEzQjcwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1G
YWN0b3J5UHJveHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5
Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREU1NTUxQzI0MDVB
M0I3MDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlDREU1NTUxRDI0MDVBM0I3MDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNRmFjdG9y
eVByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94
eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNERTU1NTFFMjQwNUEzREYwMDhB
M0REQiAvKiBSZW1vdGVMZWdhY3lDRE1Qcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSZW1vdGVMZWdh
Y3lDRE1Qcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RF
NTU1MUYyNDA1QTNERjAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETVByb3h5LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJlbW90ZUxlZ2FjeUNETVByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUNERTU1NTIwMjQwNUEzREYwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1Qcm94eS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVMZWdhY3lDRE1Qcm94eS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUNERTU1NTI2MjQwNkI4OTUwMDhBM0REQiAvKiBSZW1vdGVMZWdh
Y3lDRE1TZXNzaW9uUHJveHlNZXNzYWdlc1JlcGxpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3Rl
TGVnYWN5Q0RNU2Vzc2lvblByb3h5TWVzc2FnZXNSZXBsaWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUNERTU1NTI3MjQwNkI4OTUwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1T
ZXNzaW9uTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbk1l
c3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNERTU1NTI4MjQwNkI4OTYw
MDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1Qcm94eU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJlbW90ZUxlZ2FjeUNETVByb3h5TWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQ0RFNTU1MjkyNDA2Qjg5NjAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQ
cm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVMZWdhY3lD
RE1GYWN0b3J5UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlDREU1NTUyQTI0MDZCODk2MDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNUHJveHlN
ZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlTGVnYWN5Q0RNUHJv
eHlNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREU1
NTUyQjI0MDZCODk2MDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNUHJveHlNZXNzYWdlc1JlcGxp
ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlTGVnYWN5Q0RNUHJveHlNZXNzYWdlc1JlcGxpZXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RFNTU1MkMyNDA2Qjg5NjAwOEEzRERC
IC8qIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eU1lc3NhZ2VzUmVwbGllcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHlNZXNzYWdlc1JlcGxpZXMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RFNTU1MkQyNDA2Qjg5NzAwOEEzRERCIC8qIFJl
bW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90
ZUxlZ2FjeUNETUZhY3RvcnlQcm94eU1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUNERTU1NTJFMjQwNkI4OTcwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1TZXNzaW9u
TWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUxlZ2FjeUNETVNl
c3Npb25NZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlD
REU1NTUyRjI0MDZCODk3MDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5TWVz
c2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5TWVzc2Fn
ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RFNTU1MzAyNDA2Qjg5NzAwOEEz
RERCIC8qIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25NZXNzYWdlc1JlcGxpZXMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbk1lc3NhZ2VzUmVwbGllcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlDREU1NTUzMTI0MDZCODk3MDA4QTNEREIgLyogUmVtb3RlTGVn
YWN5Q0RNU2Vzc2lvblByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFMTFBRDRGMUNCQzQ3RjgwMDY4MUVFNSAvKiBDb2RlU2ln
bmluZy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IENvZGVTaWdu
aW5nLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTExQUQ1MTFDQkM0ODJGMDA2
ODFFRTUgLyogQ29kZVNpZ25pbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Q29kZVNpZ25pbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0UxQTBCQ0MxQTQ4
RTZDNjAwNTRFRjc0IC8qIEFzc2VydGlvblNlcnZpY2VzU1BJLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEFzc2VydGlvblNlcnZpY2VzU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC01MzgyLDYgKzU0MTYsMTUgQEAKIAkJCQlDREFDMjBCRDIzRkMyRjc0MDAy
MURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmggKi8sCiAJCQkJQ0Q0NjYxN0YyNDAx
MDQ1ODAwNDdDQTM1IC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5tZXNzYWdlcy5pbiAqLywK
IAkJCQlDREFDMjBCQzIzRkMyRjc0MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
SWRlbnRpZmllci5oICovLAorCQkJCUNERTU1NEVCMjQwNTgxODMwMDhBM0REQiAvKiBSZW1vdGVM
ZWdhY3lDRE0uY3BwICovLAorCQkJCUNERTU1NEVBMjQwNTgxODMwMDhBM0REQiAvKiBSZW1vdGVM
ZWdhY3lDRE0uaCAqLywKKwkJCQlDREU1NTRFMzI0MDU4MTE0MDA4QTNEREIgLyogUmVtb3RlTGVn
YWN5Q0RNRmFjdG9yeS5jcHAgKi8sCisJCQkJQ0RFNTU0RTIyNDA1ODExNDAwOEEzRERCIC8qIFJl
bW90ZUxlZ2FjeUNETUZhY3RvcnkuaCAqLywKKwkJCQlDREU1NTUwNzI0MDU4OEI4MDA4QTNEREIg
LyogUmVtb3RlTGVnYWN5Q0RNSWRlbnRpZmllci5oICovLAorCQkJCUNERTU1NEVGMjQwNTgxQTMw
MDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmNwcCAqLywKKwkJCQlDREU1NTRFRTI0
MDU4MUEzMDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5oICovLAorCQkJCUNERTU1
NTA1MjQwNTgzMjQwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uLm1lc3NhZ2VzLmlu
ICovLAorCQkJCUNERTU1NTA5MjQwNTg4Q0IwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1TZXNz
aW9uSWRlbnRpZmllci5oICovLAogCQkJCTA3QjkzRkY1MjNBRjBDQjgwMDM2RjhFQSAvKiBSZW1v
dGVNZWRpYVBsYXllckNvbmZpZ3VyYXRpb24uaCAqLywKIAkJCQkwNzkyMzEzMDIzOUIzQjBDMDA5
NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmNwcCAqLywKIAkJCQkwNzkyMzEzNDIz
OUIzQjBDMDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmggKi8sCkBAIC01NDI0
LDYgKzU0NjcsMTUgQEAKIAkJCQlDREFDMjA4MzIzRkIyMTM0MDAyMURFRTMgLyogUmVtb3RlQ0RN
UHJveHkuY3BwICovLAogCQkJCUNEQUMyMDgyMjNGQjIxMzQwMDIxREVFMyAvKiBSZW1vdGVDRE1Q
cm94eS5oICovLAogCQkJCUNEQUMyMDg2MjNGQjIxNTgwMDIxREVFMyAvKiBSZW1vdGVDRE1Qcm94
eS5tZXNzYWdlcy5pbiAqLywKKwkJCQlDREU1NTUxRDI0MDVBM0I3MDA4QTNEREIgLyogUmVtb3Rl
TGVnYWN5Q0RNRmFjdG9yeVByb3h5LmNwcCAqLywKKwkJCQlDREU1NTUxQzI0MDVBM0I3MDA4QTNE
REIgLyogUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5LmggKi8sCisJCQkJQ0RFNTU1MUIyNDA1
QTNCNzAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5tZXNzYWdlcy5pbiAq
LywKKwkJCQlDREU1NTUyMDI0MDVBM0RGMDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNUHJveHku
Y3BwICovLAorCQkJCUNERTU1NTFGMjQwNUEzREYwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1Q
cm94eS5oICovLAorCQkJCUNERTU1NTFFMjQwNUEzREYwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lD
RE1Qcm94eS5tZXNzYWdlcy5pbiAqLywKKwkJCQlDREU1NTRGOTI0MDU4MjA4MDA4QTNEREIgLyog
UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNwcCAqLywKKwkJCQlDREU1NTRGODI0MDU4MjA4
MDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmggKi8sCisJCQkJQ0RFNTU1
MDAyNDA1ODI4NDAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5tZXNzYWdl
cy5pbiAqLywKIAkJCQkwNzI1RUZBRDIzOUIwMjQ1MDBBNTM4QTkgLyogUmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyUHJveHkuY3BwICovLAogCQkJCTA3MjVFRkFDMjM5QUUzODUwMEE1MzhBOSAvKiBS
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oICovLAogCQkJCTA3MjVFRkFCMjM5QUUzODQw
MEE1MzhBOSAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbiAqLywK
QEAgLTk4MjMsNiArOTg3NSwxOCBAQAogCQkJCUNEQUMyMEVDMjNGQzM4MzgwMDIxREVFMyAvKiBS
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJ
Q0RBQzIwRUQyM0ZDMzgzODAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5
TWVzc2FnZXMuaCAqLywKIAkJCQlDREFDMjBGMTIzRkMzODNBMDAyMURFRTMgLyogUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uUHJveHlNZXNzYWdlc1JlcGxpZXMuaCAqLywKKwkJCQlDREU1NTUyOTI0
MDZCODk2MDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5TWVzc2FnZVJlY2Vp
dmVyLmNwcCAqLywKKwkJCQlDREU1NTUyRDI0MDZCODk3MDA4QTNEREIgLyogUmVtb3RlTGVnYWN5
Q0RNRmFjdG9yeVByb3h5TWVzc2FnZXMuaCAqLywKKwkJCQlDREU1NTUyQzI0MDZCODk2MDA4QTNE
REIgLyogUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5TWVzc2FnZXNSZXBsaWVzLmggKi8sCisJ
CQkJQ0RFNTU1MkEyNDA2Qjg5NjAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETVByb3h5TWVzc2Fn
ZVJlY2VpdmVyLmNwcCAqLywKKwkJCQlDREU1NTUyODI0MDZCODk2MDA4QTNEREIgLyogUmVtb3Rl
TGVnYWN5Q0RNUHJveHlNZXNzYWdlcy5oICovLAorCQkJCUNERTU1NTJCMjQwNkI4OTYwMDhBM0RE
QiAvKiBSZW1vdGVMZWdhY3lDRE1Qcm94eU1lc3NhZ2VzUmVwbGllcy5oICovLAorCQkJCUNERTU1
NTJFMjQwNkI4OTcwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uTWVzc2FnZVJlY2Vp
dmVyLmNwcCAqLywKKwkJCQlDREU1NTUyNzI0MDZCODk1MDA4QTNEREIgLyogUmVtb3RlTGVnYWN5
Q0RNU2Vzc2lvbk1lc3NhZ2VzLmggKi8sCisJCQkJQ0RFNTU1MzAyNDA2Qjg5NzAwOEEzRERCIC8q
IFJlbW90ZUxlZ2FjeUNETVNlc3Npb25NZXNzYWdlc1JlcGxpZXMuaCAqLywKKwkJCQlDREU1NTUz
MTI0MDZCODk3MDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5TWVzc2FnZVJl
Y2VpdmVyLmNwcCAqLywKKwkJCQlDREU1NTUyRjI0MDZCODk3MDA4QTNEREIgLyogUmVtb3RlTGVn
YWN5Q0RNU2Vzc2lvblByb3h5TWVzc2FnZXMuaCAqLywKKwkJCQlDREU1NTUyNjI0MDZCODk1MDA4
QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5TWVzc2FnZXNSZXBsaWVzLmggKi8s
CiAJCQkJQ0RBQzIwRUYyM0ZDMzgzOTAwMjFERUUzIC8qIFJlbW90ZUNETVByb3h5TWVzc2FnZVJl
Y2VpdmVyLmNwcCAqLywKIAkJCQlDREFDMjBGNDIzRkMzODNBMDAyMURFRTMgLyogUmVtb3RlQ0RN
UHJveHlNZXNzYWdlcy5oICovLAogCQkJCUNEQUMyMEYwMjNGQzM4MzkwMDIxREVFMyAvKiBSZW1v
dGVDRE1Qcm94eU1lc3NhZ2VzUmVwbGllcy5oICovLApAQCAtMTIzNTgsNiArMTI0MjIsNyBAQAog
CQkJCTJEOTJBNzg0MjEyQjZBQjEwMEY0OTNGRCAvKiBBY3Rpdml0eUFzc2VydGlvbi5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkyRDkyQTc3QjIxMkI2QTcxMDBGNDkzRkQgLyogQXJndW1lbnRDb2Rl
cnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkRFQjFEMkUyMTI3NDczNjAwOTMzOTA2IC8qIEFy
Z3VtZW50Q29kZXJzQ0YuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0RFNTU1MzIyNDA2RUI4QzAw
OEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkyRDkyQTc3QzIxMkI2QTcxMDBGNDkzRkQgLyogQXR0YWNobWVu
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTJGNThBMjEyQTg4M0FEMDA2Mjk1MzAgLyogQXV0
aGVudGljYXRpb25NYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTk5NTVBNkY0MUM3OTg2REMwMEVCNkE5MyAvKiBBdXRvbWF0aW9uQmFja2VuZERpc3BhdGNoZXJz
LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMTI1MTIsNiArMTI1NzcsNyBAQAogCQkJCTJEMTFCNzdD
MjEyNkEyODMwMDZGODg3OCAvKiBVbmlmaWVkU291cmNlMjIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMkQxMUI3N0IyMTI2QTI4MzAwNkY4ODc4IC8qIFVuaWZpZWRTb3VyY2UyMi1tbS5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTJEMTFCNzdFMjEyNkEyODMwMDZGODg3OCAvKiBVbmlmaWVkU291cmNl
MjMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0RFNTU1MzQyNDA2RUI4QzAwOEEzRERCIC8qIFJl
bW90ZUxlZ2FjeUNETVNlc3Npb25NZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMkQxMUI3N0QyMTI2QTI4MzAwNkY4ODc4IC8qIFVuaWZpZWRTb3VyY2UyMy1tbS5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTJEMTFCNzdGMjEyNkEyODMwMDZGODg3OCAvKiBVbmlmaWVkU291cmNl
MjQtbW0ubW0gaW4gU291cmNlcyAqLywKIAkJCQkyRDExQjc4MDIxMjZBMjgzMDA2Rjg4NzggLyog
VW5pZmllZFNvdXJjZTI0LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMTI2NjYsNiArMTI3MzIsNyBA
QAogCQkJCTMzMDkzNDQ3MTMxNUI5MjIwMDk3QTdCQyAvKiBXZWJDb29raWVNYW5hZ2VyTWVzc2Fn
ZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMzMDkzNDQ5MTMxNUI5MjIwMDk3QTdC
QyAvKiBXZWJDb29raWVNYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMkQ5MkE3ODgyMTJCNkFCMTAwRjQ5M0ZEIC8qIFdlYkNvcmVBcmd1bWVudENvZGVy
cy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDREU1NTUzNTI0MDZFQjhDMDA4QTNEREIgLyogUmVt
b3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUUzOTYyOERFMjM5NjBDQzYwMDY1OEVDRCAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVw
ZGF0ZVByb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUzODY2QjBCMjM5OUEyREQwMEY4
OEZFOSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyTWVzc2FnZVJlY2VpdmVy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUzODY2QUU1MjM5NzQwMDQwMEY4OEZFOSAvKiBXZWJE
ZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJveHkubW0gaW4gU291cmNlcyAqLywKQEAg
LTEyNjgwLDYgKzEyNzQ3LDcgQEAKIAkJCQlGRURCRENENjFFNjhEMjAwMDBBNTlGOEYgLyogV2Vi
SW5zcGVjdG9ySW50ZXJydXB0RGlzcGF0Y2hlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxQzhFMkEzNTEyNzc4NTI0MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yTWVzc2Fn
ZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFDQThCOTQ1MTI3Qzg4MkEwMDU3NkMy
QiAvKiBXZWJJbnNwZWN0b3JQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQlDREU1NTUzMzI0MDZFQjhDMDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNUHJveHlNZXNz
YWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUNCQkU0QTAxOUI2NkM1MzAwNkI3
RDgxIC8qIFdlYkluc3BlY3RvclVJTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTJEOTJBNzhBMjEyQjZBQjEwMEY0OTNGRCAvKiBXZWJLZXlib2FyZEV2ZW50LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTFBNjI4MEYzMTkxOTk4MkEwMDZBRDlGOSAvKiBXZWJLaXQubSBpbiBT
b3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQ
cm9jZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVBy
b2Nlc3NDb25uZWN0aW9uLmNwcAppbmRleCBmOWI5NzAxODE3MmRhNTJiMWM3MDU0OTM5NTkzYzIx
MWRmZWQwMTEwLi41MTJiY2U3MzM3NGQwODhkNGJlODViOWUyNWIyMDU1ZTM1ZjFkOWRmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0
aW9uLmNwcApAQCAtODEsNiArODEsMTEgQEAgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdl
ciYgR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OnNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck0KIH0KICNl
bmRpZgogCitSZW1vdGVNZWRpYVBsYXllck1hbmFnZXImIEdQVVByb2Nlc3NDb25uZWN0aW9uOjpt
ZWRpYVBsYXllck1hbmFnZXIoKQoreworICAgIHJldHVybiAqV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkuc3VwcGxlbWVudDxSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI+KCk7Cit9CisKICNpZiBFTkFC
TEUoRU5DUllQVEVEX01FRElBKQogUmVtb3RlQ0RNRmFjdG9yeSYgR1BVUHJvY2Vzc0Nvbm5lY3Rp
b246OmNkbUZhY3RvcnkoKQogewpAQCAtODgsNiArOTMsMTMgQEAgUmVtb3RlQ0RNRmFjdG9yeSYg
R1BVUHJvY2Vzc0Nvbm5lY3Rpb246OmNkbUZhY3RvcnkoKQogfQogI2VuZGlmCiAKKyNpZiBFTkFC
TEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKK1JlbW90ZUxlZ2FjeUNETUZhY3RvcnkmIEdQVVBy
b2Nlc3NDb25uZWN0aW9uOjpsZWdhY3lDRE1GYWN0b3J5KCkKK3sKKyAgICByZXR1cm4gKldlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLnN1cHBsZW1lbnQ8UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeT4oKTsK
K30KKyNlbmRpZgorCiBib29sIEdQVVByb2Nlc3NDb25uZWN0aW9uOjpkaXNwYXRjaE1lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpCiB7CiAg
ICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5oCmluZGV4IDJi
NTcyYzFiYWNiZmE2YjZiMjZmMzU2MGMyNjJhOWE0MWIwYzc1YWYuLjNmNDFhZWFiMTBlZDIyNjA4
NzA3NjkwZDhiNjA1ODU3MTY4ZmE1MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmgKQEAgLTQwLDYgKzQwLDggQEAgY2xhc3Mg
RGF0YVJlZmVyZW5jZTsKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBSZW1vdGVDRE1GYWN0
b3J5OworY2xhc3MgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOworY2xhc3MgUmVtb3RlTGVnYWN5
Q0RNRmFjdG9yeTsKIAogY2xhc3MgR1BVUHJvY2Vzc0Nvbm5lY3Rpb24gOiBwdWJsaWMgUmVmQ291
bnRlZDxHUFVQcm9jZXNzQ29ubmVjdGlvbj4sIElQQzo6Q29ubmVjdGlvbjo6Q2xpZW50IHsKIHB1
YmxpYzoKQEAgLTYwLDEwICs2MiwxNiBAQCBwdWJsaWM6CiAgICAgU2FtcGxlQnVmZmVyRGlzcGxh
eUxheWVyTWFuYWdlciYgc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcigpOwogI2VuZGlm
CiAKKyAgICBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXImIG1lZGlhUGxheWVyTWFuYWdlcigpOwor
CiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKICAgICBSZW1vdGVDRE1GYWN0b3J5JiBjZG1G
YWN0b3J5KCk7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQor
ICAgIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnkmIGxlZ2FjeUNETUZhY3RvcnkoKTsKKyNlbmRpZgor
CiBwcml2YXRlOgogICAgIEdQVVByb2Nlc3NDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbjo6SWRl
bnRpZmllcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcAppbmRleCA2YzQ3ODM5ODdh
ZjU2N2QzM2U0ODIxNWYxMWFmOGY1YzM4NWYwMGM0Li5jNzczYjkxNTkyY2M0MmEwNTM0N2U4NGFm
MDBkMWEwNGEyNzM5NmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCkBAIC0zMCw2
ICszMCw5IEBACiAKICNpbmNsdWRlICJBdWRpb1RyYWNrUHJpdmF0ZVJlbW90ZS5oIgogI2luY2x1
ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJSZW1vdGVMZWdhY3lDRE0uaCIKKyNpbmNsdWRlICJS
ZW1vdGVMZWdhY3lDRE1GYWN0b3J5LmgiCisjaW5jbHVkZSAiUmVtb3RlTGVnYWN5Q0RNU2Vzc2lv
bi5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5TWVzc2FnZXMuaCIK
ICNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllclByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJT
YW5kYm94RXh0ZW5zaW9uLmgiCkBAIC0zOCw2ICs0MSw4IEBACiAjaW5jbHVkZSAiVmlkZW9UcmFj
a1ByaXZhdGVSZW1vdGUuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNp
bmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvR2VuZXJpY1R5
cGVkQXJyYXlWaWV3SW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1R5cGVkQXJy
YXlUeXBlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVBsYXllci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtTGF5ZXIu
aD4KQEAgLTUzLDYgKzU4LDEwIEBACiAjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2UuaCIKICNl
bmRpZgogCisjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCisjaW5jbHVkZSA8V2Vi
Q29yZS9MZWdhY3lDRE0uaD4KKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjaWYgIVJF
TEVBU0VfTE9HX0RJU0FCTEVECiBleHRlcm4gV1RGTG9nQ2hhbm5lbCBMb2dNZWRpYTsKQEAgLTkw
MiwxNSArOTExLDM4IEBAIHN0ZDo6dW5pcXVlX3B0cjxMZWdhY3lDRE1TZXNzaW9uPiBNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6OmNyZWF0ZVNlc3Npb24oY29uc3QKICAgICByZXR1cm4gbnVsbHB0
cjsKIH0KIAotdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldENETVNlc3Npb24oTGVn
YWN5Q0RNU2Vzc2lvbiopCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0Q0RNKExl
Z2FjeUNETSogY2RtKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgaWYgKCFjZG0pCisg
ICAgICAgIHJldHVybjsKKworICAgIGF1dG8gcmVtb3RlQ0RNID0gbV9tYW5hZ2VyLmdwdVByb2Nl
c3NDb25uZWN0aW9uKCkubGVnYWN5Q0RNRmFjdG9yeSgpLmZpbmRDRE0oY2RtLT5jZG1Qcml2YXRl
KCkpOworICAgIGlmICghcmVtb3RlQ0RNKQorICAgICAgICByZXR1cm47CisKKyAgICByZW1vdGVD
RE0tPnNldFBsYXllcklkKG1faWQpOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZTo6c2V0Q0RNU2Vzc2lvbihMZWdhY3lDRE1TZXNzaW9uKiBzZXNzaW9uKQoreworICAgIGlmICgh
c2Vzc2lvbiB8fCBzZXNzaW9uLT50eXBlKCkgIT0gQ0RNU2Vzc2lvblR5cGVSZW1vdGUpIHsKKyAg
ICAgICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6
OlNldExlZ2FjeUNETVNlc3Npb24oeyB9KSwgbV9pZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBhdXRvIHJlbW90ZVNlc3Npb24gPSBzdGF0aWNfY2FzdDxSZW1vdGVMZWdhY3lDRE1T
ZXNzaW9uKj4oc2Vzc2lvbik7CisgICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90
ZU1lZGlhUGxheWVyUHJveHk6OlNldExlZ2FjeUNETVNlc3Npb24ocmVtb3RlU2Vzc2lvbi0+aWRl
bnRpZmllcigpKSwgbV9pZCk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpr
ZXlBZGRlZCgpCiB7CiAgICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlh
UGxheWVyUHJveHk6OktleUFkZGVkKCksIG1faWQpOwogfQorCit2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZTo6bWVkaWFQbGF5ZXJLZXlOZWVkZWQoSVBDOjpEYXRhUmVmZXJlbmNlJiYgbWVz
c2FnZSkKK3sKKyAgICBtX3BsYXllci0+a2V5TmVlZGVkKFVpbnQ4QXJyYXk6OmNyZWF0ZShtZXNz
YWdlLmRhdGEoKSwgbWVzc2FnZS5zaXplKCkpLnB0cigpKTsKK30KICNlbmRpZgogCiAjaWYgRU5B
QkxFKEVOQ1JZUFRFRF9NRURJQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oCmluZGV4IDM3ZjNl
OTRlZjM4MzU2Y2JlMzhlZmVmZDhlNTMxYTllMWYwOTM4YzAuLmNlMDY3ODFiNmIzZWIxYmM0YzE3
NDdkMWEzOTU5YWUxYTIxN2VhNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaApAQCAtMzAz
LDggKzMwMywxMCBAQCBwcml2YXRlOgogCiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVE
SUEpCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkxlZ2FjeUNETVNlc3Npb24+IGNyZWF0
ZVNlc3Npb24oY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6TGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCop
IGZpbmFsOworICAgIHZvaWQgc2V0Q0RNKFdlYkNvcmU6OkxlZ2FjeUNETSopIGZpbmFsOwogICAg
IHZvaWQgc2V0Q0RNU2Vzc2lvbihXZWJDb3JlOjpMZWdhY3lDRE1TZXNzaW9uKikgZmluYWw7CiAg
ICAgdm9pZCBrZXlBZGRlZCgpIGZpbmFsOworICAgIHZvaWQgbWVkaWFQbGF5ZXJLZXlOZWVkZWQo
SVBDOjpEYXRhUmVmZXJlbmNlJiYpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoRU5DUllQVEVEX01F
RElBKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRp
YVBsYXllclByaXZhdGVSZW1vdGUubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5pbgppbmRleCA2
YWUwZGIzMWZhYmVlOWE0NDRkNTI4M2RkYmEwOGZiMzBjNjA5ODlkLi5mNGMzYTZjMTc5ZTQ3OGYy
ZDM0YmVlMDU1MmJjOTJlNzAyOTc1OTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZS5tZXNzYWdlcy5pbgpAQCAtNzgsNiArNzgsMTAgQEAgbWVzc2FnZXMgLT4gTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlIE5vdFJlZkNvdW50ZWQgewogICAgIEluaXRpYWxpemF0aW9uRGF0YUVu
Y291bnRlcmVkKFN0cmluZyBpbml0RGF0YVR5cGUsIElQQzo6RGF0YVJlZmVyZW5jZSBpbml0RGF0
YSkKICNlbmRpZgogCisjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCisgICAgTWVk
aWFQbGF5ZXJLZXlOZWVkZWQoSVBDOjpEYXRhUmVmZXJlbmNlIG1lc3NhZ2UpCisjZW5kaWYKKwog
I2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCiAgICAgQ3VycmVudFBsYXliYWNr
VGFyZ2V0SXNXaXJlbGVzc0NoYW5nZWQoYm9vbCBpc0N1cnJlbnRQbGF5YmFja1RhcmdldFdpcmVs
ZXNzKQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUxlZ2FjeUNETS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUxlZ2FjeUNETS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjQwNjY4ZTliYmVjYmU5MDJhMjE5
N2RhMTFmZDYxNDgyY2VkNWFhZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNLmNwcApAQCAtMCwwICsxLDg5IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNE
TS5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRF
RF9NRURJQSkKKworI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETUZhY3RvcnkuaCIKKyNpbmNsdWRl
ICJSZW1vdGVMZWdhY3lDRE1Qcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlTGVnYWN5
Q0RNU2Vzc2lvbi5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CisKK3N0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMZWdhY3lDRE0+IFJlbW90ZUxlZ2FjeUNE
TTo6Y3JlYXRlKFdlYWtQdHI8UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeT4mJiBmYWN0b3J5LCBSZW1v
dGVMZWdhY3lDRE1JZGVudGlmaWVyIGlkKQoreworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8
UmVtb3RlTGVnYWN5Q0RNPihuZXcgUmVtb3RlTGVnYWN5Q0RNKFdURk1vdmUoZmFjdG9yeSksIFdU
Rk1vdmUoaWQpKSk7Cit9CisKK1JlbW90ZUxlZ2FjeUNETTo6UmVtb3RlTGVnYWN5Q0RNKFdlYWtQ
dHI8UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeT4mJiBmYWN0b3J5LCBSZW1vdGVMZWdhY3lDRE1JZGVu
dGlmaWVyJiYgaWQpCisgICAgOiBtX2ZhY3RvcnkoV1RGTW92ZShmYWN0b3J5KSkKKyAgICAsIG1f
aWRlbnRpZmllcihXVEZNb3ZlKGlkKSkKK3sKK30KKworUmVtb3RlTGVnYWN5Q0RNOjp+UmVtb3Rl
TGVnYWN5Q0RNKCkgPSBkZWZhdWx0OworCitib29sIFJlbW90ZUxlZ2FjeUNETTo6c3VwcG9ydHNN
SU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQoreworICAgIGlmICghbV9mYWN0b3J5KQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBib29sIHN1cHBvcnRlZCA9IGZhbHNlOworICAg
IG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMo
TWVzc2FnZXM6OlJlbW90ZUxlZ2FjeUNETVByb3h5OjpTdXBwb3J0c01JTUVUeXBlKG1pbWVUeXBl
KSwgTWVzc2FnZXM6OlJlbW90ZUxlZ2FjeUNETVByb3h5OjpTdXBwb3J0c01JTUVUeXBlOjpSZXBs
eShzdXBwb3J0ZWQpLCBtX2lkZW50aWZpZXIpOworICAgIHJldHVybiBzdXBwb3J0ZWQ7Cit9CisK
K3N0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpMZWdhY3lDRE1TZXNzaW9uPiBSZW1vdGVMZWdhY3lD
RE06OmNyZWF0ZVNlc3Npb24oV2ViQ29yZTo6TGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCogY2xpZW50
KQoreworICAgIGlmICghbV9mYWN0b3J5KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAg
IFN0cmluZyBzdG9yYWdlRGlyZWN0b3J5ID0gY2xpZW50ID8gY2xpZW50LT5tZWRpYUtleXNTdG9y
YWdlRGlyZWN0b3J5KCkgOiBlbXB0eVN0cmluZygpOworCisgICAgUmVtb3RlTGVnYWN5Q0RNU2Vz
c2lvbklkZW50aWZpZXIgaWQ7CisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigp
LmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlTGVnYWN5Q0RNUHJveHk6OkNy
ZWF0ZVNlc3Npb24oc3RvcmFnZURpcmVjdG9yeSksIE1lc3NhZ2VzOjpSZW1vdGVMZWdhY3lDRE1Q
cm94eTo6Q3JlYXRlU2Vzc2lvbjo6UmVwbHkoaWQpLCBtX2lkZW50aWZpZXIpOworICAgIGlmICgh
aWQpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBSZW1vdGVMZWdhY3lDRE1T
ZXNzaW9uOjpjcmVhdGUobV9mYWN0b3J5LCBXVEZNb3ZlKGlkKSk7Cit9CisKK3ZvaWQgUmVtb3Rl
TGVnYWN5Q0RNOjpzZXRQbGF5ZXJJZChNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVy
IGlkKQoreworICAgIGlmICghbV9mYWN0b3J5KQorICAgICAgICByZXR1cm47CisKKyAgICBPcHRp
b25hbDxNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyPiBvcHRpb25hbElkOworICAg
IGlmIChpZCkKKyAgICAgICAgb3B0aW9uYWxJZCA9IGlkOworICAgIG1fZmFjdG9yeS0+Z3B1UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTGVnYWN5
Q0RNUHJveHk6OlNldFBsYXllcklkKG9wdGlvbmFsSWQpLCBtX2lkZW50aWZpZXIpOworfQorCit9
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVMZWdhY3lDRE0uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlTGVnYWN5Q0RNLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjU0Y2QzY2M0Mjk0MTcxNjYxOWY1MDNiNjNm
OTczYjExYTFlMjI0MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNLmgKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTEVH
QUNZX0VOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVMZWdhY3lDRE1JZGVudGlmaWVyLmgiCisj
aW5jbHVkZSA8V2ViQ29yZS9MZWdhY3lDRE1Qcml2YXRlLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQ
dHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgU2V0dGluZ3M7Cit9CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitjbGFzcyBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5OworY2xhc3MgUmVt
b3RlTGVnYWN5Q0RNU2Vzc2lvbjsKKworCitjbGFzcyBSZW1vdGVMZWdhY3lDRE0gZmluYWwKKyAg
ICA6IHB1YmxpYyBXZWJDb3JlOjpDRE1Qcml2YXRlSW50ZXJmYWNlCisgICAgLCBwdWJsaWMgQ2Fu
TWFrZVdlYWtQdHI8UmVtb3RlTGVnYWN5Q0RNPiB7CitwdWJsaWM6CisgICAgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxSZW1vdGVMZWdhY3lDRE0+IGNyZWF0ZShXZWFrUHRyPFJlbW90ZUxlZ2FjeUNE
TUZhY3Rvcnk+JiYsIFJlbW90ZUxlZ2FjeUNETUlkZW50aWZpZXIpOworICAgIHZpcnR1YWwgflJl
bW90ZUxlZ2FjeUNETSgpOworCisgICAgYm9vbCBzdXBwb3J0c01JTUVUeXBlKGNvbnN0IFN0cmlu
ZyYpIGZpbmFsOworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpMZWdhY3lDRE1TZXNzaW9u
PiBjcmVhdGVTZXNzaW9uKFdlYkNvcmU6OkxlZ2FjeUNETVNlc3Npb25DbGllbnQqKSBmaW5hbDsK
KyAgICB2b2lkIHNldFBsYXllcklkKE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIp
OworCitwcml2YXRlOgorICAgIFJlbW90ZUxlZ2FjeUNETShXZWFrUHRyPFJlbW90ZUxlZ2FjeUNE
TUZhY3Rvcnk+JiYsIFJlbW90ZUxlZ2FjeUNETUlkZW50aWZpZXImJik7CisKKyAgICBXZWFrUHRy
PFJlbW90ZUxlZ2FjeUNETUZhY3Rvcnk+IG1fZmFjdG9yeTsKKyAgICBSZW1vdGVMZWdhY3lDRE1J
ZGVudGlmaWVyIG1faWRlbnRpZmllcjsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3Rvcnku
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1G
YWN0b3J5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MDUyZjI0ZmIzZjNkNDMwNGE5N2M4ZWMyZDRmODhmZTM1
Zjg5YjAwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5LmNwcApAQCAtMCwwICsxLDE0MyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVMZWdhY3lDRE1GYWN0
b3J5LmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShMRUdBQ1lfRU5DUllQ
VEVEX01FRElBKQorCisjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKKyNpbmNsdWRl
ICJNZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaCIKKyNpbmNsdWRlICJSZW1vdGVMZWdhY3lDRE0u
aCIKKyNpbmNsdWRlICJSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHlNZXNzYWdlcy5oIgorI2lu
Y2x1ZGUgIlJlbW90ZUxlZ2FjeUNETVNlc3Npb24uaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgi
CisjaW5jbHVkZSA8V2ViQ29yZS9MZWdhY3lDRE0uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NldHRp
bmdzLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
KworUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeTo6UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeShXZWJQcm9j
ZXNzJiBwcm9jZXNzKQorICAgIDogbV9wcm9jZXNzKHByb2Nlc3MpCit7Cit9CisKK1JlbW90ZUxl
Z2FjeUNETUZhY3Rvcnk6On5SZW1vdGVMZWdhY3lDRE1GYWN0b3J5KCkgPSBkZWZhdWx0OworCit2
b2lkIFJlbW90ZUxlZ2FjeUNETUZhY3Rvcnk6OnJlZ2lzdGVyRmFjdG9yeShWZWN0b3I8TGVnYWN5
Q0RNRmFjdG9yeT4mIGZhY3RvcmllcykKK3sKKyAgICBmYWN0b3JpZXMuYXBwZW5kKHsKKyAgICAg
ICAgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldIChMZWdhY3lDRE0qIHByaXZhdGVDRE0p
IC0+IHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpDRE1Qcml2YXRlSW50ZXJmYWNlPiB7CisgICAg
ICAgICAgICBpZiAod2Vha1RoaXMpCisgICAgICAgICAgICAgICAgcmV0dXJuIHdlYWtUaGlzLT5j
cmVhdGVDRE0ocHJpdmF0ZUNETSk7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAg
ICAgfSwKKyAgICAgICAgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldIChjb25zdCBTdHJp
bmcmIGtleVN5c3RlbSkgeworICAgICAgICAgICAgcmV0dXJuIHdlYWtUaGlzID8gd2Vha1RoaXMt
PnN1cHBvcnRzS2V5U3lzdGVtKGtleVN5c3RlbSkgOiBmYWxzZTsKKyAgICAgICAgfSwKKyAgICAg
ICAgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldIChjb25zdCBTdHJpbmcmIGtleVN5c3Rl
bSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgeworICAgICAgICAgICAgcmV0dXJuIHdlYWtUaGlz
ID8gd2Vha1RoaXMtPnN1cHBvcnRzS2V5U3lzdGVtQW5kTWltZVR5cGUoa2V5U3lzdGVtLCBtaW1l
VHlwZSkgOiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0pOworfQorCitjb25zdCBjaGFyKiBSZW1v
dGVMZWdhY3lDRE1GYWN0b3J5OjpzdXBwbGVtZW50TmFtZSgpCit7CisgICAgcmV0dXJuICJSZW1v
dGVMZWdhY3lDRE1GYWN0b3J5IjsKK30KKworR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIFJlbW90ZUxl
Z2FjeUNETUZhY3Rvcnk6OmdwdVByb2Nlc3NDb25uZWN0aW9uKCkKK3sKKyAgICByZXR1cm4gbV9w
cm9jZXNzLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCk7Cit9CisKK2Jvb2wgUmVtb3RlTGVn
YWN5Q0RNRmFjdG9yeTo6c3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0p
Cit7CisgICAgYm9vbCBzdXBwb3J0ZWQgPSBmYWxzZTsKKyAgICBncHVQcm9jZXNzQ29ubmVjdGlv
bigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlTGVnYWN5Q0RNRmFjdG9y
eVByb3h5OjpTdXBwb3J0c0tleVN5c3RlbShrZXlTeXN0ZW0sIFdURjo6bnVsbG9wdCksIE1lc3Nh
Z2VzOjpSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk6OlN1cHBvcnRzS2V5U3lzdGVtOjpSZXBs
eShzdXBwb3J0ZWQpLCB7IH0pOworICAgIHJldHVybiBzdXBwb3J0ZWQ7Cit9CisKK2Jvb2wgUmVt
b3RlTGVnYWN5Q0RNRmFjdG9yeTo6c3VwcG9ydHNLZXlTeXN0ZW1BbmRNaW1lVHlwZShjb25zdCBT
dHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKK3sKKyAgICBib29sIHN1
cHBvcnRlZCA9IGZhbHNlOworICAgIGdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigp
LnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk6OlN1cHBvcnRz
S2V5U3lzdGVtKGtleVN5c3RlbSwgbWltZVR5cGUpLCBNZXNzYWdlczo6UmVtb3RlTGVnYWN5Q0RN
RmFjdG9yeVByb3h5OjpTdXBwb3J0c0tleVN5c3RlbTo6UmVwbHkoc3VwcG9ydGVkKSwgeyB9KTsK
KyAgICByZXR1cm4gc3VwcG9ydGVkOworfQorCitzdGQ6OnVuaXF1ZV9wdHI8Q0RNUHJpdmF0ZUlu
dGVyZmFjZT4gUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeTo6Y3JlYXRlQ0RNKFdlYkNvcmU6OkxlZ2Fj
eUNETSogY2RtKQoreworICAgIGlmICghY2RtKSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKworICAgIE9wdGlvbmFsPE1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXI+IHBsYXllcklkOworICAgIGlmIChhdXRv
IHBsYXllciA9IGNkbS0+bWVkaWFQbGF5ZXIoKSkKKyAgICAgICAgcGxheWVySWQgPSBncHVQcm9j
ZXNzQ29ubmVjdGlvbigpLm1lZGlhUGxheWVyTWFuYWdlcigpLmZpbmRSZW1vdGVQbGF5ZXJJZChw
bGF5ZXItPnBsYXllclByaXZhdGUoKSk7CisKKyAgICBSZW1vdGVMZWdhY3lDRE1JZGVudGlmaWVy
IGlkOworICAgIGdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1l
c3NhZ2VzOjpSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk6OkNyZWF0ZUNETShjZG0tPmtleVN5
c3RlbSgpLCBXVEZNb3ZlKHBsYXllcklkKSksIE1lc3NhZ2VzOjpSZW1vdGVMZWdhY3lDRE1GYWN0
b3J5UHJveHk6OkNyZWF0ZUNETTo6UmVwbHkoaWQpLCB7IH0pOworICAgIGlmICghaWQpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIGF1dG8gcmVtb3RlQ0RNID0gUmVtb3RlTGVnYWN5Q0RN
OjpjcmVhdGUobWFrZVdlYWtQdHIodGhpcyksIGlkKTsKKyAgICBtX2NkbXMuc2V0KGlkLCBtYWtl
V2Vha1B0cihyZW1vdGVDRE0uZ2V0KCkpKTsKKyAgICByZXR1cm4gcmVtb3RlQ0RNOworfQorCit2
b2lkIFJlbW90ZUxlZ2FjeUNETUZhY3Rvcnk6OmFkZFNlc3Npb24oUmVtb3RlTGVnYWN5Q0RNU2Vz
c2lvbklkZW50aWZpZXIgaWQsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMZWdhY3lDRE1TZXNzaW9u
PiYmIHNlc3Npb24pCit7CisgICAgQVNTRVJUKCFtX3Nlc3Npb25zLmNvbnRhaW5zKGlkKSk7Cisg
ICAgbV9zZXNzaW9ucy5zZXQoaWQsIFdURk1vdmUoc2Vzc2lvbikpOworfQorCit2b2lkIFJlbW90
ZUxlZ2FjeUNETUZhY3Rvcnk6OnJlbW92ZVNlc3Npb24oUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklk
ZW50aWZpZXIgaWQpCit7CisgICAgQVNTRVJUKG1fc2Vzc2lvbnMuY29udGFpbnMoaWQpKTsKKyAg
ICBtX3Nlc3Npb25zLnJlbW92ZShpZCk7Cit9CisKK1JlbW90ZUxlZ2FjeUNETSogUmVtb3RlTGVn
YWN5Q0RNRmFjdG9yeTo6ZmluZENETShDRE1Qcml2YXRlSW50ZXJmYWNlKiBwcml2YXRlSW50ZXJm
YWNlKSBjb25zdAoreworICAgIGZvciAoYXV0byYgY2RtIDogbV9jZG1zLnZhbHVlcygpKSB7Cisg
ICAgICAgIGlmIChwcml2YXRlSW50ZXJmYWNlID09IGNkbS5nZXQoKSkKKyAgICAgICAgICAgIHJl
dHVybiBjZG0uZ2V0KCk7CisgICAgfQorICAgIHJldHVybiBudWxscHRyOworfQorCit2b2lkIFJl
bW90ZUxlZ2FjeUNETUZhY3Rvcnk6OmRpZFJlY2VpdmVTZXNzaW9uTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBpZiAoYXV0
byogc2Vzc2lvbiA9IG1fc2Vzc2lvbnMuZ2V0KG1ha2VPYmplY3RJZGVudGlmaWVyPFJlbW90ZUxl
Z2FjeUNETVNlc3Npb25JZGVudGlmaWVyVHlwZT4oZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpKSkK
KyAgICAgICAgc2Vzc2lvbi0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7
Cit9CisKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeS5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5LmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTBm
ZDRiZTJmMjZhNTdkZmYzOWUwMzhmOTAwOTBlMGZhN2IyODgyZgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9y
eS5oCkBAIC0wLDAgKzEsODggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVO
QUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCisKKyNp
bmNsdWRlICJSZW1vdGVMZWdhY3lDRE1JZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiUmVtb3RlTGVn
YWN5Q0RNU2Vzc2lvbklkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzU3VwcGxlbWVu
dC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvTGVnYWN5Q0RNLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7Citj
bGFzcyBTZXR0aW5nczsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ0RNUHJpdmF0
ZUludGVyZmFjZTsKK2NsYXNzIExlZ2FjeUNETTsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K2NsYXNzIEdQVVByb2Nlc3NDb25uZWN0aW9uOworY2xhc3MgUmVtb3RlTGVnYWN5Q0RNOworY2xh
c3MgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbjsKK2NsYXNzIFdlYlByb2Nlc3M7CisKKworY2xhc3Mg
UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeSBmaW5hbAorICAgIDogcHVibGljIFdlYlByb2Nlc3NTdXBw
bGVtZW50CisgICAgLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UmVtb3RlTGVnYWN5Q0RNRmFjdG9y
eT4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIGV4cGxpY2l0
IFJlbW90ZUxlZ2FjeUNETUZhY3RvcnkoV2ViUHJvY2VzcyYpOworICAgIHZpcnR1YWwgflJlbW90
ZUxlZ2FjeUNETUZhY3RvcnkoKTsKKworICAgIHZvaWQgcmVnaXN0ZXJGYWN0b3J5KFZlY3RvcjxX
ZWJDb3JlOjpMZWdhY3lDRE1GYWN0b3J5PiYpOworCisgICAgc3RhdGljIGNvbnN0IGNoYXIqIHN1
cHBsZW1lbnROYW1lKCk7CisgICAgV2ViUHJvY2VzcyYgcHJvY2VzcygpIGNvbnN0IHsgcmV0dXJu
IG1fcHJvY2VzczsgfQorCisgICAgR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIGdwdVByb2Nlc3NDb25u
ZWN0aW9uKCk7CisKKyAgICB2b2lkIGRpZFJlY2VpdmVTZXNzaW9uTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mLCBJUEM6OkRlY29kZXImKTsKKworICAgIHZvaWQgYWRkU2Vzc2lvbihSZW1vdGVMZWdh
Y3lDRE1TZXNzaW9uSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxlZ2FjeUNETVNl
c3Npb24+JiYpOworICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbihSZW1vdGVMZWdhY3lDRE1TZXNzaW9u
SWRlbnRpZmllcik7CisKKyAgICBSZW1vdGVMZWdhY3lDRE0qIGZpbmRDRE0oV2ViQ29yZTo6Q0RN
UHJpdmF0ZUludGVyZmFjZSopIGNvbnN0OworCitwcml2YXRlOgorICAgIGJvb2wgc3VwcG9ydHNL
ZXlTeXN0ZW0oY29uc3QgU3RyaW5nJik7CisgICAgYm9vbCBzdXBwb3J0c0tleVN5c3RlbUFuZE1p
bWVUeXBlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOworICAgIHN0ZDo6dW5pcXVlX3B0
cjxXZWJDb3JlOjpDRE1Qcml2YXRlSW50ZXJmYWNlPiBjcmVhdGVDRE0oV2ViQ29yZTo6TGVnYWN5
Q0RNKik7CisKKyAgICBIYXNoTWFwPFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyLCBz
dGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbj4+IG1fc2Vzc2lvbnM7CisgICAg
SGFzaE1hcDxSZW1vdGVMZWdhY3lDRE1JZGVudGlmaWVyLCBXZWFrUHRyPFJlbW90ZUxlZ2FjeUNE
TT4+IG1fY2RtczsKKyAgICBXZWJQcm9jZXNzJiBtX3Byb2Nlc3M7Cit9OworCit9CisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVM
ZWdhY3lDRE1JZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUxlZ2FjeUNETUlkZW50aWZpZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZmI5YjdhMmYwZDYyYjE5
ZGE5OWJjMzVhY2NkYzZhMTA3NzdlZmViCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1JZGVudGlmaWVyLmgKQEAgLTAs
MCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9Q
Uk9DRVNTKSAmJiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgPHd0
Zi9PYmplY3RJZGVudGlmaWVyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitlbnVtIFJlbW90
ZUxlZ2FjeUNETUlkZW50aWZpZXJUeXBlIHsgfTsKK3VzaW5nIFJlbW90ZUxlZ2FjeUNETUlkZW50
aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPFJlbW90ZUxlZ2FjeUNETUlkZW50aWZpZXJUeXBlPjsK
KworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOTIzNTE3NDIwNWFmMTEzM2VjNWExYzEzYWZiYjYxNjM5NmI3MmY3NQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlTGVnYWN5Q0RNU2Vzc2lvbi5jcHAKQEAgLTAsMCArMSwxNjAgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5oIgor
CisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJ
QSkKKworI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJSZW1vdGVMZWdhY3lD
RE1GYWN0b3J5LmgiCisjaW5jbHVkZSAiUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5TWVzc2Fn
ZXMuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9HZW5lcmljVHlwZWRBcnJheVZpZXdJbmxp
bmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJ
bmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvVHlwZWRBcnJheVR5cGUuaD4KKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitzdGF0aWMg
UmVmUHRyPEFycmF5QnVmZmVyPiBjb252ZXJ0VG9BcnJheUJ1ZmZlcihJUEM6OlNoYXJlZEJ1ZmZl
ckRhdGFSZWZlcmVuY2UmJiBidWZmZXIpCit7CisgICAgaWYgKGJ1ZmZlci5idWZmZXIoKSkKKyAg
ICAgICAgcmV0dXJuIEFycmF5QnVmZmVyOjpjcmVhdGUoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNp
emUoKSk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3N0YXRpYyBSZWZQdHI8VWludDhBcnJh
eT4gY29udmVydFRvVWludDhBcnJheShJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmJiBi
dWZmZXIpCit7CisgICAgYXV0byBhcnJheUJ1ZmZlciA9IGNvbnZlcnRUb0FycmF5QnVmZmVyKFdU
Rk1vdmUoYnVmZmVyKSk7CisgICAgaWYgKCFhcnJheUJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisKKyAgICBzaXplX3Qgc2l6ZUluQnl0ZXMgPSBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0
aCgpOworICAgIHJldHVybiBVaW50OEFycmF5OjpjcmVhdGUoV1RGTW92ZShhcnJheUJ1ZmZlciks
IDAsIHNpemVJbkJ5dGVzKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdGF0aWMgT3B0
aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlPiBjb252ZXJ0VG9PcHRpb25hbERh
dGFSZWZlcmVuY2UoVCBhcnJheSkKK3sKKyAgICBpZiAoIWFycmF5KQorICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgIHJldHVybiB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFycmF5LT5k
YXRhKCksIGFycmF5LT5ieXRlTGVuZ3RoKCkpIH07Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBU
Pgorc3RhdGljIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBjb252ZXJ0VG9EYXRhUmVm
ZXJlbmNlKFQgYXJyYXkpCit7CisgICAgaWYgKCFhcnJheSkKKyAgICAgICAgcmV0dXJuIHsgfTsK
KyAgICByZXR1cm4geyBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgoY29uc3QgY2hhciopYXJyYXktPmRh
dGEoKSwgYXJyYXktPmJ5dGVMZW5ndGgoKSkgfTsKK30KKworc3RkOjp1bmlxdWVfcHRyPFJlbW90
ZUxlZ2FjeUNETVNlc3Npb24+IFJlbW90ZUxlZ2FjeUNETVNlc3Npb246OmNyZWF0ZShXZWFrUHRy
PFJlbW90ZUxlZ2FjeUNETUZhY3Rvcnk+IGZhY3RvcnksIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25J
ZGVudGlmaWVyJiYgaWQpCit7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMZWdh
Y3lDRE1TZXNzaW9uPihuZXcgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbihXVEZNb3ZlKGZhY3Rvcnkp
LCBXVEZNb3ZlKGlkKSkpOworfQorCitSZW1vdGVMZWdhY3lDRE1TZXNzaW9uOjpSZW1vdGVMZWdh
Y3lDRE1TZXNzaW9uKFdlYWtQdHI8UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeT4gZmFjdG9yeSwgUmVt
b3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXImJiBpZCkKKyAgICA6IG1fZmFjdG9yeShXVEZN
b3ZlKGZhY3RvcnkpKQorICAgICwgbV9pZGVudGlmaWVyKFdURk1vdmUoaWQpKQoreworfQorCitS
ZWZQdHI8VWludDhBcnJheT4gUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbjo6Z2VuZXJhdGVLZXlSZXF1
ZXN0KGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFVpbnQ4QXJyYXkqIGluaXREYXRhLCBTdHJpbmcm
IGRlc3RpbmF0aW9uVVJMLCB1bnNpZ25lZCBzaG9ydCYgZXJyb3JDb2RlLCB1aW50MzJfdCYgc3lz
dGVtQ29kZSkKK3sKKyAgICBpZiAoIW1fZmFjdG9yeSB8fCAhaW5pdERhdGEpCisgICAgICAgIHJl
dHVybiBudWxscHRyOworCisgICAgYXV0byBpcGNJbml0RGF0YSA9IGNvbnZlcnRUb0RhdGFSZWZl
cmVuY2UoaW5pdERhdGEpOworICAgIE9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVy
ZW5jZT4gaXBjTmV4dE1lc3NhZ2U7CisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlv
bigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lv
blByb3h5OjpHZW5lcmF0ZUtleVJlcXVlc3QobWltZVR5cGUsIGlwY0luaXREYXRhKSwgTWVzc2Fn
ZXM6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6R2VuZXJhdGVLZXlSZXF1ZXN0OjpSZXBs
eShpcGNOZXh0TWVzc2FnZSwgZGVzdGluYXRpb25VUkwsIGVycm9yQ29kZSwgc3lzdGVtQ29kZSks
IG1faWRlbnRpZmllcik7CisKKyAgICBpZiAoIWlwY05leHRNZXNzYWdlKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBjb252ZXJ0VG9VaW50OEFycmF5KFdURk1vdmUoKmlw
Y05leHRNZXNzYWdlKSk7Cit9CisKK3ZvaWQgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbjo6cmVsZWFz
ZUtleXMoKQoreworICAgIGlmICghbV9mYWN0b3J5KQorICAgICAgICByZXR1cm47CisKKyAgICBt
X2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6UmVsZWFzZUtleXMoKSwgbV9pZGVudGlm
aWVyKTsKK30KKworYm9vbCBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uOjp1cGRhdGUoVWludDhBcnJh
eSoga2V5RGF0YSwgUmVmUHRyPFVpbnQ4QXJyYXk+JiBuZXh0TWVzc2FnZSwgdW5zaWduZWQgc2hv
cnQmIGVycm9yQ29kZSwgdWludDMyX3QmIHN5c3RlbUNvZGUpCit7CisgICAgaWYgKCFtX2ZhY3Rv
cnkgfHwgIWtleURhdGEpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1dG8gaXBjS2V5
RGF0YSA9IGNvbnZlcnRUb0RhdGFSZWZlcmVuY2UoV1RGTW92ZShrZXlEYXRhKSk7CisgICAgYm9v
bCBzdWNjZWVkZWQgeyBmYWxzZSB9OworICAgIE9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0
YVJlZmVyZW5jZT4gaXBjTmV4dE1lc3NhZ2U7CisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29u
bmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlTGVnYWN5Q0RN
U2Vzc2lvblByb3h5OjpVcGRhdGUoaXBjS2V5RGF0YSksIE1lc3NhZ2VzOjpSZW1vdGVMZWdhY3lD
RE1TZXNzaW9uUHJveHk6OlVwZGF0ZTo6UmVwbHkoc3VjY2VlZGVkLCBpcGNOZXh0TWVzc2FnZSwg
ZXJyb3JDb2RlLCBzeXN0ZW1Db2RlKSwgbV9pZGVudGlmaWVyKTsKKworICAgIGlmIChpcGNOZXh0
TWVzc2FnZSkKKyAgICAgICAgbmV4dE1lc3NhZ2UgPSBjb252ZXJ0VG9VaW50OEFycmF5KFdURk1v
dmUoKmlwY05leHRNZXNzYWdlKSk7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK1JlZlB0cjxB
cnJheUJ1ZmZlcj4gUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbjo6Y2FjaGVkS2V5Rm9yS2V5SUQoY29u
c3QgU3RyaW5nJiBrZXlJZCkgY29uc3QKK3sKKyAgICBpZiAoIW1fZmFjdG9yeSkKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisKKyAgICBPcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZl
cmVuY2U+IGlwY0tleTsKKyAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29u
bmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6
OkNhY2hlZEtleUZvcktleUlEKGtleUlkKSwgTWVzc2FnZXM6OlJlbW90ZUxlZ2FjeUNETVNlc3Np
b25Qcm94eTo6Q2FjaGVkS2V5Rm9yS2V5SUQ6OlJlcGx5KGlwY0tleSksIG1faWRlbnRpZmllcik7
CisKKyAgICBpZiAoIWlwY0tleSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1
cm4gY29udmVydFRvQXJyYXlCdWZmZXIoV1RGTW92ZSgqaXBjS2V5KSk7Cit9CisKK3ZvaWQgUmVt
b3RlTGVnYWN5Q0RNU2Vzc2lvbjo6c2VuZE1lc3NhZ2UoT3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZm
ZXJEYXRhUmVmZXJlbmNlPiYmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25VUkwp
Cit7CisgICAgaWYgKCFtX2NsaWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFtZXNz
YWdlKSB7CisgICAgICAgIG1fY2xpZW50LT5zZW5kTWVzc2FnZShudWxscHRyLCBkZXN0aW5hdGlv
blVSTCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2NsaWVudC0+c2VuZE1lc3Nh
Z2UoY29udmVydFRvVWludDhBcnJheShXVEZNb3ZlKCptZXNzYWdlKSkuZ2V0KCksIGRlc3RpbmF0
aW9uVVJMKTsKK30KKwordm9pZCBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uOjpzZW5kRXJyb3IoV2Vi
Q29yZTo6TGVnYWN5Q0RNU2Vzc2lvbkNsaWVudDo6TWVkaWFLZXlFcnJvckNvZGUgZXJyb3JDb2Rl
LCB1aW50MzJfdCBzeXN0ZW1Db2RlKQoreworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9j
bGllbnQtPnNlbmRFcnJvcihlcnJvckNvZGUsIHN5c3RlbUNvZGUpOworfQorCit9CisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVM
ZWdhY3lDRE1TZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUxlZ2FjeUNETVNlc3Npb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MzNhYzkzNTUxZWQ5NWQyMzg4MmM3
ZDdjOWZjZjgxODE5OWI5YzI0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmgKQEAgLTAsMCArMSw3OCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAm
JiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgIk1lc3NhZ2VSZWNl
aXZlci5oIgorI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyLmgiCisj
aW5jbHVkZSA8V2ViQ29yZS9MZWdhY3lDRE1TZXNzaW9uLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQ
dHIuaD4KKworbmFtZXNwYWNlIElQQyB7CitjbGFzcyBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNl
OworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgUmVtb3RlTGVnYWN5Q0RNRmFjdG9y
eTsKKworY2xhc3MgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbiBmaW5hbAorICAgIDogcHVibGljIFdl
YkNvcmU6OkxlZ2FjeUNETVNlc3Npb24KKyAgICAsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZl
ciB7CitwdWJsaWM6CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMZWdhY3lDRE1T
ZXNzaW9uPiBjcmVhdGUoV2Vha1B0cjxSZW1vdGVMZWdhY3lDRE1GYWN0b3J5PiwgUmVtb3RlTGVn
YWN5Q0RNU2Vzc2lvbklkZW50aWZpZXImJik7CisKKyAgICAvLyBNZXNzYWdlUmVjZWl2ZXIKKyAg
ICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYp
IGZpbmFsOworCisgICAgY29uc3QgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXImIGlk
ZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KKworcHJpdmF0ZToKKyAg
ICBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uKFdlYWtQdHI8UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeT4s
IFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyJiYpOworCisgICAgLy8gTGVnYWN5Q0RN
U2Vzc2lvbgorICAgIFdlYkNvcmU6OkxlZ2FjeUNETVNlc3Npb25UeXBlIHR5cGUoKSBmaW5hbCB7
IHJldHVybiBXZWJDb3JlOjpDRE1TZXNzaW9uVHlwZVJlbW90ZTsgfQorICAgIHZvaWQgc2V0Q2xp
ZW50KFdlYkNvcmU6OkxlZ2FjeUNETVNlc3Npb25DbGllbnQqIGNsaWVudCkgZmluYWwgeyBtX2Ns
aWVudCA9IGNsaWVudDsgfQorICAgIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gbV9zZXNzaW9uSWQ7IH0KKyAgICBSZWZQdHI8VWludDhBcnJheT4gZ2VuZXJh
dGVLZXlSZXF1ZXN0KGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFVpbnQ4QXJyYXkqIGluaXREYXRh
LCBTdHJpbmcmIGRlc3RpbmF0aW9uVVJMLCB1bnNpZ25lZCBzaG9ydCYgZXJyb3JDb2RlLCB1aW50
MzJfdCYgc3lzdGVtQ29kZSkgZmluYWw7CisgICAgdm9pZCByZWxlYXNlS2V5cygpIGZpbmFsOwor
ICAgIGJvb2wgdXBkYXRlKFVpbnQ4QXJyYXkqLCBSZWZQdHI8VWludDhBcnJheT4mIG5leHRNZXNz
YWdlLCB1bnNpZ25lZCBzaG9ydCYgZXJyb3JDb2RlLCB1aW50MzJfdCYgc3lzdGVtQ29kZSkgZmlu
YWw7CisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBjYWNoZWRLZXlGb3JLZXlJRChjb25zdCBTdHJp
bmcmKSBjb25zdCBmaW5hbDsKKworICAgIC8vIE1lc3NhZ2VzCisgICAgdm9pZCBzZW5kTWVzc2Fn
ZShPcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U+JiYgbWVzc2FnZSwgY29u
c3QgU3RyaW5nJiBkZXN0aW5hdGlvblVSTCk7CisgICAgdm9pZCBzZW5kRXJyb3IoV2ViQ29yZTo6
TGVnYWN5Q0RNU2Vzc2lvbkNsaWVudDo6TWVkaWFLZXlFcnJvckNvZGUsIHVpbnQzMl90IHN5c3Rl
bUNvZGUpOworCisgICAgV2Vha1B0cjxSZW1vdGVMZWdhY3lDRE1GYWN0b3J5PiBtX2ZhY3Rvcnk7
CisgICAgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXIgbV9pZGVudGlmaWVyOworICAg
IFdlYkNvcmU6OkxlZ2FjeUNETVNlc3Npb25DbGllbnQqIG1fY2xpZW50OworICAgIFN0cmluZyBt
X3Nlc3Npb25JZDsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24ubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Np
b24ubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODQ3YWY2MDQwMWY5MWUzNDEwYzJmZTRkNGU0NDcx
NTI2MTNhMTI4NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDMx
IEBACisjIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaWYgRU5BQkxFKEdQ
VV9QUk9DRVNTKSAmJiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKKworbWVzc2FnZXMg
LT4gUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbiBOb3RSZWZDb3VudGVkIHsKKyAgICBTZW5kTWVzc2Fn
ZShPcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U+IG1lc3NhZ2UsIFN0cmlu
ZyBkZXN0aW5hdGlvblVSTCkKKyAgICBTZW5kRXJyb3IoZW51bTp1aW50OF90IFdlYkNvcmU6Okxl
Z2FjeUNETVNlc3Npb25DbGllbnQ6Ok1lZGlhS2V5RXJyb3JDb2RlIGVycm9yQ29kZSwgdWludDMy
X3Qgc3lzdGVtQ29kZSkKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25J
ZGVudGlmaWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGYwOGFkYTgzMTRmZGJkM2ZmOGM3ZWI3MDQ3OTRlMTg1
YmUxOWYyMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXIuaApAQCAtMCwwICsxLDM5IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYm
IEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSA8d3RmL09iamVjdElk
ZW50aWZpZXIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2VudW0gUmVtb3RlTGVnYWN5Q0RN
U2Vzc2lvbklkZW50aWZpZXJUeXBlIHsgfTsKK3VzaW5nIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25J
ZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRp
ZmllclR5cGU+OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFu
YWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlh
UGxheWVyTWFuYWdlci5jcHAKaW5kZXggMzhhNTNhMGNiY2ZmODlkNDVlYmNkNDFlN2U2YzM1ODNi
ZDI3ZDNhYS4uYjcxNjA4YjkzOGFiZjJiYzljNjYyODI0Y2UzMmYxZTAwM2ExZWY5ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmNwcApAQCAtMTgwLDYgKzE4MCwxNyBAQCB2b2lkIFJlbW90
ZU1lZGlhUGxheWVyTWFuYWdlcjo6ZGVsZXRlUmVtb3RlTWVkaWFQbGF5ZXIoTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlSQogICAgIGdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNl
bmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpEZWxldGVNZWRpYVBs
YXllcihpZCksIDApOwogfQogCitNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIFJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6ZmluZFJlbW90ZVBsYXllcklkKGNvbnN0IE1lZGlhUGxh
eWVyUHJpdmF0ZUludGVyZmFjZSogcGxheWVyKQoreworICAgIGZvciAoYXV0byBwYWlyIDogbV9w
bGF5ZXJzKSB7CisgICAgICAgIGlmIChwYWlyLnZhbHVlID09IHBsYXllcikKKyAgICAgICAgICAg
IHJldHVybiBwYWlyLmtleTsKKyAgICB9CisKKyAgICByZXR1cm4geyB9OworfQorCisKIHZvaWQg
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpnZXRTdXBwb3J0ZWRUeXBlcyhNZWRpYVBsYXllckVu
dW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgcmVtb3RlRW5naW5lSWRlbnRpZmllciwgSGFzaFNl
dDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHJlc3VsdCkKIHsKICAgICBhdXRv
JiBjYWNoZSA9IHR5cGVDYWNoZShyZW1vdGVFbmdpbmVJZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlci5oCmluZGV4IDMyMGVjMzAxODlkNmZjNTYyZjJhZWJmZjUxYzkwZjc0ZWRmOGRh
MDEuLmJlZWNiMzdlZmY3OGQ5OWU4YmNmOGU5NDNjM2QyMTYwZTk3NDlhYTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRp
YVBsYXllck1hbmFnZXIuaApAQCAtNjksNiArNjksOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGRl
bGV0ZVJlbW90ZU1lZGlhUGxheWVyKE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIp
OwogCisgICAgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBmaW5kUmVtb3RlUGxh
eWVySWQoY29uc3QgV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlKik7CisKIHBy
aXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUlu
dGVyZmFjZT4gY3JlYXRlUmVtb3RlTWVkaWFQbGF5ZXIoV2ViQ29yZTo6TWVkaWFQbGF5ZXIqLCBX
ZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1dlYk1lZGlhU3RyYXRl
Z3kuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9XZWJNZWRpYVN0cmF0
ZWd5LmNwcAppbmRleCAxZmYwOTgxMzIxODc1Y2M1ZmNiMWJhYzFlODc1NTZhNDJjOTU4NTlmLi4z
MWY3MzJhMTBhZjU2ZDEzZWE5ZTk5NTJjMThhNjE4MDFlN2QxYmY0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1dlYk1lZGlhU3RyYXRlZ3kuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvV2ViTWVkaWFTdHJhdGVneS5jcHAK
QEAgLTY3LDYgKzY3LDEyIEBAIHZvaWQgV2ViTWVkaWFTdHJhdGVneTo6cmVnaXN0ZXJDRE1GYWN0
b3JpZXMoVmVjdG9yPFdlYkNvcmU6OkNETUZhY3RvcnkqPiYgZmFjdG9yCiAjaWYgRU5BQkxFKExF
R0FDWV9FTkNSWVBURURfTUVESUEpCiB2b2lkIFdlYk1lZGlhU3RyYXRlZ3k6OnJlZ2lzdGVyTGVn
YWN5Q0RNRmFjdG9yaWVzKFZlY3RvcjxMZWdhY3lDRE1GYWN0b3J5PiYgZmFjdG9yaWVzKQogewor
I2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKyAgICBpZiAobV91c2VHUFVQcm9jZXNzKSB7CisgICAg
ICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCku
bGVnYWN5Q0RNRmFjdG9yeSgpLnJlZ2lzdGVyRmFjdG9yeShmYWN0b3JpZXMpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorI2VuZGlmCiAgICAgV2ViQ29yZTo6TGVnYWN5Q0RNOjpwbGF0Zm9ybVJl
Z2lzdGVyRmFjdG9yaWVzKGZhY3Rvcmllcyk7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggY2M1Yjg4ZTAzMGMzZDBlNDRlZDAw
MDM4ZDk2NWVmYmU3ZTNjOGVkYi4uMWQ1MmQyNjg5M2E1ZWYzMzk3OWM5N2I0NDNmMGU0MjdiNWJj
N2MzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
QEAgLTMyNSw2ICszMjUsOSBAQAogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiAjaW5jbHVk
ZSAiUmVtb3RlQ0RNRmFjdG9yeS5oIgogI2VuZGlmCisjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBU
RURfTUVESUEpCisjaW5jbHVkZSAiUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeS5oIgorI2VuZGlmCiAj
ZW5kaWYKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0zNzA1LDkgKzM3MDgsNiBAQCB2b2lkIFdl
YlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3Jl
KQogICAgIC8vIEZJWE1FOiB1c2VHUFVQcm9jZXNzRm9yTWVkaWEgc2hvdWxkIGJlIGEgUnVudGlt
ZUVuYWJsZWRGZWF0dXJlIHNpbmNlIGl0J3MgZ2xvYmFsLgogICAgIHN0YXRpY19jYXN0PFdlYk1l
ZGlhU3RyYXRlZ3kmPihwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bWVkaWFTdHJhdGVneSgpKS5zZXRV
c2VHUFVQcm9jZXNzKHNldHRpbmdzLnVzZUdQVVByb2Nlc3NGb3JNZWRpYSgpKTsKICAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5zdXBwbGVtZW50PFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcj4o
KS0+dXBkYXRlUHJlZmVyZW5jZXMoc2V0dGluZ3MpOwotI2lmIEVOQUJMRShFTkNSWVBURURfTUVE
SUEpCi0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc3VwcGxlbWVudDxSZW1vdGVDRE1GYWN0
b3J5PigpLT51cGRhdGVQcmVmZXJlbmNlcyhzZXR0aW5ncyk7Ci0jZW5kaWYKICNlbmRpZgogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggOGNmZGExZjMxMGU1
YWUwZTkzZmE4YzEwOTRiNzU2MTdlNmM5YjlmMS4uNzYwNjE5ZTJkM2RiM2ExMWQzZTNlYTNiNDFi
NTkwZGFkYjYyZWI2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApA
QCAtMTc4LDYgKzE3OCwxMCBAQAogI2luY2x1ZGUgIlJlbW90ZUNETUZhY3RvcnkuaCIKICNlbmRp
ZgogCisjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCisjaW5jbHVkZSAiUmVtb3Rl
TGVnYWN5Q0RNRmFjdG9yeS5oIgorI2VuZGlmCisKICNkZWZpbmUgUkVMRUFTRV9MT0dfU0VTU0lP
Tl9JRCAobV9zZXNzaW9uSUQgPyBtX3Nlc3Npb25JRC0+dG9VSW50NjQoKSA6IDApCiAjZGVmaW5l
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoY2hhbm5lbCwgZm10LCAuLi4pIFJFTEVBU0VfTE9HX0lG
KGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBjaGFubmVsLCAiJXAgLSBbc2Vzc2lvbklEPSUi
IFBSSXU2NCAiXSBXZWJQcm9jZXNzOjoiIGZtdCwgdGhpcywgUkVMRUFTRV9MT0dfU0VTU0lPTl9J
RCwgIyNfX1ZBX0FSR1NfXykKIApAQCAtMjQ4LDYgKzI1MiwxMCBAQCBXZWJQcm9jZXNzOjpXZWJQ
cm9jZXNzKCkKICAgICBhZGRTdXBwbGVtZW50PFJlbW90ZUNETUZhY3Rvcnk+KCk7CiAjZW5kaWYK
IAorI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVE
SUEpCisgICAgYWRkU3VwcGxlbWVudDxSZW1vdGVMZWdhY3lDRE1GYWN0b3J5PigpOworI2VuZGlm
CisKICAgICBHaWdhY2FnZTo6Zm9yYmlkRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2UoKTsKIH0K
IAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392087</attachid>
            <date>2020-02-29 19:39:26 -0800</date>
            <delta_ts>2020-03-05 23:00:31 -0800</delta_ts>
            <desc>Part 1: WebCore</desc>
            <filename>bug-208402-20200229193925.patch</filename>
            <type>text/plain</type>
            <size>23482</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3Njg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGMyZDg1NzVhMWI2ZWZh
MzgyYjVlZjFkMzgwYTJmZmUzODQwYWE1Zi4uMTMzMmExMDYxZWE2MDAzNGE0YmEwYTNmZWE4N2Jj
ZDE2OTRhYjM2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDIwLTAyLTI4ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFVQXSBJbXBsZW1lbnQg
TGVnYWN5IEVNRSBBUEkgaW4gdGhlIEdQVSBQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg0MDIKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQcmVwYXJlIGZvciBydW5uaW5nIHRoZSBMZWdhY3lD
RE0gZXQuIGFsLiBpbiB0aGUgR1BVIHByb2Nlc3MuCisKKyAgICAgICAgU2xpZ2h0bHkgbW9kZXJu
aXplIExlZ2FjeUNETSB0byBtYWtlIHRoZSBzdHJ1Y3QgcmVwcmVzZW50aW5nIGEgTGVnYWN5Q0RN
RmFjdG9yeSBwdWJsaWMuIFRoaXMKKyAgICAgICAgYWxsb3dzIFBsYXRmb3JtU3RyYXRlZ2llcyB0
byBpbml0aWFsaXplIHRoZSBsaXN0IG9mIHN1cHBvcnRlZCBmYWN0b3JpZXMgd2l0aCBpdHMgb3du
IGxpc3Qgd2hlbgorICAgICAgICB0aGUgR1BVUHJvY2VzcyBpcyBlbmFibGVkLgorCisgICAgICAg
IFByZXZpb3VzbHksIExlZ2FjeUNETSByZXF1aXJlZCBhIExlZ2FjeUNETVNlc3Npb25DbGllbnQg
YXQgc2Vzc2lvbiBjcmVhdGlvbiB0aW1lLiBNYWtlIHRoaXMgb3B0aW9uYWwKKyAgICAgICAgYnkg
cHJvdmlkaW5nIGEgc2VwYXJhdGUgY3JlYXRlKCkgbWV0aG9kIHdoaWNoIGRvZXMgbm90IHRha2Ug
YSBjbGllbnQgcmVmZXJlbmNlLiAoVGhlIGNsaWVudCBjYW4gYmUpCisgICAgICAgIHByb3ZpZGVk
IHBvc3QtY3JlYXRpb24uCisKKyAgICAgICAgTW9kaWZ5IFdlYktpdE1lZGlhS2V5cyB0byBub3Rp
ZnkgdGhlIE1lZGlhUGxheWVyIHdoZW4gdGhlIGtleXMgb2JqZWN0IGlzIGFkZGVkIHRvIGEgSFRN
TE1lZGlhRWxlbWVudC4KKworICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5
L0xlZ2FjeUNETS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lDRE06OnBsYXRmb3JtUmVn
aXN0ZXJGYWN0b3JpZXMpOgorICAgICAgICAoV2ViQ29yZTo6aW5zdGFsbGVkQ0RNRmFjdG9yaWVz
KToKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUNETTo6cmVnaXN0ZXJDRE1GYWN0b3J5KToKKyAg
ICAgICAgKFdlYkNvcmU6OkxlZ2FjeUNETUZhY3RvcnlGb3JLZXlTeXN0ZW0pOgorICAgICAgICAo
V2ViQ29yZTo6TGVnYWN5Q0RNOjpzdXBwb3J0c0tleVN5c3RlbSk6CisgICAgICAgIChXZWJDb3Jl
OjpMZWdhY3lDRE06OmtleVN5c3RlbVN1cHBvcnRzTWltZVR5cGUpOgorICAgICAgICAoV2ViQ29y
ZTo6TGVnYWN5Q0RNOjpMZWdhY3lDRE0pOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5Q0RNOjpj
cmVhdGVTZXNzaW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9M
ZWdhY3lDRE0uaDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJL
aXRNZWRpYUtleXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0TWVkaWFLZXlzOjpzZXRN
ZWRpYUVsZW1lbnQpOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFFbmdpbmVXYXNVcGRhdGVkKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9NZWRpYVN0cmF0ZWd5Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTGVn
YWN5Q0RNU2Vzc2lvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpzZXRDRE0pOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVJbnRlcmZhY2U6OnNldENETSk6CisKIDIwMjAtMDItMjggIEplciBOb2JsZSAgPGpl
ci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgW0dQVVBdIEltcGxlbWVudCBNb2Rlcm4gRU1F
IEFQSSBpbiB0aGUgR1BVIFByb2Nlc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggODNlMDJiMmIwYTk4NjhjYzgxZWU2
YTRmZGE4YzRiN2VjNjU3ZTY3Zi4uOTIxN2Y2ZjdiMTE1ZWFiNDQ0ZTFiNDdhYWIwNDM3MzA5Mzhl
ZmZlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMC0wMi0yOCAgSmVyIE5vYmxlICA8
amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVUF0gSW1wbGVtZW50IExlZ2FjeSBF
TUUgQVBJIGluIHRoZSBHUFUgUHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjA4NDAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRvcHQgTGVnYWN5IEVNRSBNZWRpYVN0cmF0ZWd5LgorCisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvV2ViTWVkaWFTdHJhdGVneS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYk1lZGlhU3RyYXRlZ3k6OnJlZ2lzdGVyTGVnYWN5Q0RNRmFjdG9yaWVzKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9XZWJNZWRpYVN0cmF0ZWd5Lmg6CisKIDIw
MjAtMDItMjMgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgW0dQ
VVBdIEltcGxlbWVudCBNb2Rlcm4gRU1FIEFQSSBpbiB0aGUgR1BVIFByb2Nlc3MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0NoYW5nZUxvZwppbmRleCAxOTU5ZWRkMjNkYmIwZWRlZjA5ODg4YTRhN2Q5MGE3MzFi
MGVjMjBjLi43YzQzODViMTM0Njg3MGM1NjFhNDk5OTFmOTUzNThjZDMzODllNWVhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjAtMDItMjggIEplciBO
b2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVVBdIEltcGxlbWVudCBM
ZWdhY3kgRU1FIEFQSSBpbiB0aGUgR1BVIFByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODQwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkb3B0IExlZ2FjeSBFTUUgTWVkaWFTdHJhdGVneS4K
KworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbToKKwog
MjAyMC0wMi0yOCAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBb
R1BVUF0gSW1wbGVtZW50IE1vZGVybiBFTUUgQVBJIGluIHRoZSBHUFUgUHJvY2VzcwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5
Q0RNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xl
Z2FjeUNETS5jcHAKaW5kZXggODM3ZGYxMjNhZTU5NmYzNTM3YzkxNTI3MDNlM2QyNzFiMzQ2ZWI1
MS4uYWNkNWMzNjlhMjIwODlhYTAyZWM3YjNlMzg5MDQxMjM3ZjNiYzQ3ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdh
Y3lDRE0uY3BwCkBAIC0zMyw2ICszMyw4IEBACiAjaW5jbHVkZSAiTGVnYWN5Q0RNUHJpdmF0ZU1l
ZGlhUGxheWVyLmgiCiAjaW5jbHVkZSAiTGVnYWN5Q0RNU2Vzc2lvbi5oIgogI2luY2x1ZGUgIk1l
ZGlhUGxheWVyLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJhdGVneS5oIgorI2luY2x1ZGUgIlBsYXRm
b3JtU3RyYXRlZ2llcy5oIgogI2luY2x1ZGUgIldlYktpdE1lZGlhS2V5cy5oIgogI2luY2x1ZGUg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpA
QCAtNDMsNjEgKzQ1LDQ5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RydWN0IENETUZh
Y3RvcnkgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENETUZhY3RvcnkpOyBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBDRE1GYWN0b3J5KENyZWF0ZUNETSYmIGNvbnN0
cnVjdG9yLCBDRE1TdXBwb3J0c0tleVN5c3RlbSBzdXBwb3J0c0tleVN5c3RlbSwgQ0RNU3VwcG9y
dHNLZXlTeXN0ZW1BbmRNaW1lVHlwZSBzdXBwb3J0c0tleVN5c3RlbUFuZE1pbWVUeXBlKQotICAg
ICAgICA6IGNvbnN0cnVjdG9yKFdURk1vdmUoY29uc3RydWN0b3IpKQotICAgICAgICAsIHN1cHBv
cnRzS2V5U3lzdGVtKHN1cHBvcnRzS2V5U3lzdGVtKQotICAgICAgICAsIHN1cHBvcnRzS2V5U3lz
dGVtQW5kTWltZVR5cGUoc3VwcG9ydHNLZXlTeXN0ZW1BbmRNaW1lVHlwZSkKLSAgICB7Ci0gICAg
fQotCi0gICAgQ3JlYXRlQ0RNIGNvbnN0cnVjdG9yOwotICAgIENETVN1cHBvcnRzS2V5U3lzdGVt
IHN1cHBvcnRzS2V5U3lzdGVtOwotICAgIENETVN1cHBvcnRzS2V5U3lzdGVtQW5kTWltZVR5cGUg
c3VwcG9ydHNLZXlTeXN0ZW1BbmRNaW1lVHlwZTsKLX07Ci0KLXN0YXRpYyBWZWN0b3I8Q0RNRmFj
dG9yeSo+JiBpbnN0YWxsZWRDRE1GYWN0b3JpZXMoKQordm9pZCBMZWdhY3lDRE06OnBsYXRmb3Jt
UmVnaXN0ZXJGYWN0b3JpZXMoVmVjdG9yPExlZ2FjeUNETUZhY3Rvcnk+JiBmYWN0b3JpZXMpCiB7
Ci0gICAgc3RhdGljIGF1dG8gY2RtcyA9IG1ha2VOZXZlckRlc3Ryb3llZChWZWN0b3I8Q0RNRmFj
dG9yeSo+IHsKLSAgICAgICAgbmV3IENETUZhY3RvcnkoW10oTGVnYWN5Q0RNKiBjZG0pIHsgcmV0
dXJuIG1ha2VVbmlxdWU8TGVnYWN5Q0RNUHJpdmF0ZUNsZWFyS2V5PihjZG0pOyB9LAotICAgICAg
ICAgICAgTGVnYWN5Q0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0c0tleVN5c3RlbSwgTGVnYWN5
Q0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0c0tleVN5c3RlbUFuZE1pbWVUeXBlKSwKLQotICAg
ICAgICAvLyBGSVhNRTogaW5pdGlhbGl6ZSBzcGVjaWZpYyBVQSBDRE1zLiBodHRwOi8vd2Via2l0
Lm9yZy9iLzEwOTMxOCwgaHR0cDovL3dlYmtpdC5vcmcvYi8xMDkzMjAKLSAgICAgICAgbmV3IENE
TUZhY3RvcnkoW10oTGVnYWN5Q0RNKiBjZG0pIHsgcmV0dXJuIG1ha2VVbmlxdWU8Q0RNUHJpdmF0
ZU1lZGlhUGxheWVyPihjZG0pOyB9LAotICAgICAgICAgICAgQ0RNUHJpdmF0ZU1lZGlhUGxheWVy
OjpzdXBwb3J0c0tleVN5c3RlbSwgQ0RNUHJpdmF0ZU1lZGlhUGxheWVyOjpzdXBwb3J0c0tleVN5
c3RlbUFuZE1pbWVUeXBlKSwKLQorICAgIExlZ2FjeUNETUZhY3RvcnkgY2xlYXJLZXlGYWN0b3J5
ID0ge3sgW10oTGVnYWN5Q0RNKiBjZG0pIHsgcmV0dXJuIG1ha2VVbmlxdWU8TGVnYWN5Q0RNUHJp
dmF0ZUNsZWFyS2V5PihjZG0pOyB9IH0sIExlZ2FjeUNETVByaXZhdGVDbGVhcktleTo6c3VwcG9y
dHNLZXlTeXN0ZW0sIExlZ2FjeUNETVByaXZhdGVDbGVhcktleTo6c3VwcG9ydHNLZXlTeXN0ZW1B
bmRNaW1lVHlwZSB9OworICAgIC8vIEZJWE1FOiBpbml0aWFsaXplIHNwZWNpZmljIFVBIENETXMu
IGh0dHA6Ly93ZWJraXQub3JnL2IvMTA5MzE4LCBodHRwOi8vd2Via2l0Lm9yZy9iLzEwOTMyMAor
ICAgIGZhY3Rvcmllcy5hcHBlbmQoV1RGTW92ZShjbGVhcktleUZhY3RvcnkpKTsKKyAgICBmYWN0
b3JpZXMuYXBwZW5kKHsgW10oTGVnYWN5Q0RNKiBjZG0pIHsgcmV0dXJuIG1ha2VVbmlxdWU8Q0RN
UHJpdmF0ZU1lZGlhUGxheWVyPihjZG0pOyB9LCBDRE1Qcml2YXRlTWVkaWFQbGF5ZXI6OnN1cHBv
cnRzS2V5U3lzdGVtLCBDRE1Qcml2YXRlTWVkaWFQbGF5ZXI6OnN1cHBvcnRzS2V5U3lzdGVtQW5k
TWltZVR5cGUgfSk7CiAjaWYgKEhBVkUoQVZDT05URU5US0VZU0VTU0lPTikgfHwgSEFWRShBVlNU
UkVBTVNFU1NJT04pKSAmJiBFTkFCTEUoTUVESUFfU09VUkNFKQotICAgICAgICBuZXcgQ0RNRmFj
dG9yeShbXShMZWdhY3lDRE0qIGNkbSkgeyByZXR1cm4gbWFrZVVuaXF1ZTxDRE1Qcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDPihjZG0pOyB9LAotICAgICAgICAgICAgQ0RNUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQzo6c3VwcG9ydHNLZXlTeXN0ZW0sIENETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akM6OnN1cHBvcnRzS2V5U3lzdGVtQW5kTWltZVR5cGUpLAorICAgIGZhY3Rvcmllcy5hcHBlbmQo
eyBbXShMZWdhY3lDRE0qIGNkbSkgeyByZXR1cm4gbWFrZVVuaXF1ZTxDRE1Qcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDPihjZG0pOyB9LCBDRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzdXBw
b3J0c0tleVN5c3RlbSwgQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c3VwcG9ydHNLZXlT
eXN0ZW1BbmRNaW1lVHlwZSB9KTsKICNlbmRpZgorfQorCitzdGF0aWMgVmVjdG9yPExlZ2FjeUNE
TUZhY3Rvcnk+JiBpbnN0YWxsZWRDRE1GYWN0b3JpZXMoKQoreworICAgIHN0YXRpYyBhdXRvIGNk
bXMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQ8VmVjdG9yPExlZ2FjeUNETUZhY3Rvcnk+Pih7IH0pOwor
ICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyByZWdpc3RlckRlZmF1bHRzOworICAgIHN0ZDo6Y2Fs
bF9vbmNlKHJlZ2lzdGVyRGVmYXVsdHMsIFsmXSB7CisgICAgICAgIHBsYXRmb3JtU3RyYXRlZ2ll
cygpLT5tZWRpYVN0cmF0ZWd5KCkucmVnaXN0ZXJMZWdhY3lDRE1GYWN0b3JpZXMoY2Rtcyk7CiAg
ICAgfSk7CiAgICAgcmV0dXJuIGNkbXM7CiB9CiAKLXZvaWQgTGVnYWN5Q0RNOjpyZWdpc3RlckNE
TUZhY3RvcnkoQ3JlYXRlQ0RNJiYgY29uc3RydWN0b3IsIENETVN1cHBvcnRzS2V5U3lzdGVtIHN1
cHBvcnRzS2V5U3lzdGVtLCBDRE1TdXBwb3J0c0tleVN5c3RlbUFuZE1pbWVUeXBlIHN1cHBvcnRz
S2V5U3lzdGVtQW5kTWltZVR5cGUpCit2b2lkIExlZ2FjeUNETTo6cmVnaXN0ZXJDRE1GYWN0b3J5
KENyZWF0ZUNETSYmIGNvbnN0cnVjdG9yLCBDRE1TdXBwb3J0c0tleVN5c3RlbSYmIHN1cHBvcnRz
S2V5U3lzdGVtLCBDRE1TdXBwb3J0c0tleVN5c3RlbUFuZE1pbWVUeXBlJiYgc3VwcG9ydHNLZXlT
eXN0ZW1BbmRNaW1lVHlwZSkKIHsKLSAgICBpbnN0YWxsZWRDRE1GYWN0b3JpZXMoKS5hcHBlbmQo
bmV3IENETUZhY3RvcnkoV1RGTW92ZShjb25zdHJ1Y3RvciksIHN1cHBvcnRzS2V5U3lzdGVtLCBz
dXBwb3J0c0tleVN5c3RlbUFuZE1pbWVUeXBlKSk7CisgICAgaW5zdGFsbGVkQ0RNRmFjdG9yaWVz
KCkuYXBwZW5kKHsgV1RGTW92ZShjb25zdHJ1Y3RvciksIFdURk1vdmUoc3VwcG9ydHNLZXlTeXN0
ZW0pLCBXVEZNb3ZlKHN1cHBvcnRzS2V5U3lzdGVtQW5kTWltZVR5cGUpIH0pOwogfQogCi1zdGF0
aWMgQ0RNRmFjdG9yeSogQ0RNRmFjdG9yeUZvcktleVN5c3RlbShjb25zdCBTdHJpbmcmIGtleVN5
c3RlbSkKK3N0YXRpYyBMZWdhY3lDRE1GYWN0b3J5KiBMZWdhY3lDRE1GYWN0b3J5Rm9yS2V5U3lz
dGVtKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKQogewogICAgIGZvciAoYXV0byYgZmFjdG9yeSA6
IGluc3RhbGxlZENETUZhY3RvcmllcygpKSB7Ci0gICAgICAgIGlmIChmYWN0b3J5LT5zdXBwb3J0
c0tleVN5c3RlbShrZXlTeXN0ZW0pKQotICAgICAgICAgICAgcmV0dXJuIGZhY3Rvcnk7CisgICAg
ICAgIGlmIChmYWN0b3J5LnN1cHBvcnRzS2V5U3lzdGVtKGtleVN5c3RlbSkpCisgICAgICAgICAg
ICByZXR1cm4gJmZhY3Rvcnk7CiAgICAgfQogICAgIHJldHVybiBudWxscHRyOwogfQogCiBib29s
IExlZ2FjeUNETTo6c3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pCiB7
Ci0gICAgcmV0dXJuIENETUZhY3RvcnlGb3JLZXlTeXN0ZW0oa2V5U3lzdGVtKTsKKyAgICByZXR1
cm4gTGVnYWN5Q0RNRmFjdG9yeUZvcktleVN5c3RlbShrZXlTeXN0ZW0pOwogfQogCiBib29sIExl
Z2FjeUNETTo6a2V5U3lzdGVtU3VwcG9ydHNNaW1lVHlwZShjb25zdCBTdHJpbmcmIGtleVN5c3Rl
bSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIHsKLSAgICBpZiAoQ0RNRmFjdG9yeSogZmFjdG9y
eSA9IENETUZhY3RvcnlGb3JLZXlTeXN0ZW0oa2V5U3lzdGVtKSkKKyAgICBpZiAoTGVnYWN5Q0RN
RmFjdG9yeSogZmFjdG9yeSA9IExlZ2FjeUNETUZhY3RvcnlGb3JLZXlTeXN0ZW0oa2V5U3lzdGVt
KSkKICAgICAgICAgcmV0dXJuIGZhY3RvcnktPnN1cHBvcnRzS2V5U3lzdGVtQW5kTWltZVR5cGUo
a2V5U3lzdGVtLCBtaW1lVHlwZSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQpAQCAtMTE0LDcgKzEw
NCw3IEBAIExlZ2FjeUNETTo6TGVnYWN5Q0RNKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKQogICAg
IDogbV9rZXlTeXN0ZW0oa2V5U3lzdGVtKQogICAgICwgbV9jbGllbnQobnVsbHB0cikKIHsKLSAg
ICBtX3ByaXZhdGUgPSBDRE1GYWN0b3J5Rm9yS2V5U3lzdGVtKGtleVN5c3RlbSktPmNvbnN0cnVj
dG9yKHRoaXMpOworICAgIG1fcHJpdmF0ZSA9IExlZ2FjeUNETUZhY3RvcnlGb3JLZXlTeXN0ZW0o
a2V5U3lzdGVtKS0+Y29uc3RydWN0b3IodGhpcyk7CiB9CiAKIExlZ2FjeUNETTo6fkxlZ2FjeUNE
TSgpID0gZGVmYXVsdDsKQEAgLTEzMiw2ICsxMjIsMTQgQEAgc3RkOjp1bmlxdWVfcHRyPExlZ2Fj
eUNETVNlc3Npb24+IExlZ2FjeUNETTo6Y3JlYXRlU2Vzc2lvbihMZWdhY3lDRE1TZXNzaW9uQ2xp
ZW4KICAgICByZXR1cm4gc2Vzc2lvbjsKIH0KIAorc3RkOjp1bmlxdWVfcHRyPExlZ2FjeUNETVNl
c3Npb24+IExlZ2FjeUNETTo6Y3JlYXRlU2Vzc2lvbigpCit7CisgICAgYXV0byBzZXNzaW9uID0g
bV9wcml2YXRlLT5jcmVhdGVTZXNzaW9uKG51bGxwdHIpOworICAgIGlmIChtZWRpYVBsYXllcigp
KQorICAgICAgICBtZWRpYVBsYXllcigpLT5zZXRDRE1TZXNzaW9uKHNlc3Npb24uZ2V0KCkpOwor
ICAgIHJldHVybiBzZXNzaW9uOworfQorCiBSZWZQdHI8TWVkaWFQbGF5ZXI+IExlZ2FjeUNETTo6
bWVkaWFQbGF5ZXIoKSBjb25zdAogewogICAgIGlmICghbV9jbGllbnQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE0uaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETS5o
CmluZGV4IGZiNWRhMWYxNmRhMDJlYzg0YzM0NzdkMzU1ZmUwYTVlODk2NDA2YTkuLjI1NjJlYmQ1
N2QyMTI5MTUwMTY2NzI1NDE1YjU3MjI3YzUxYTNkMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETS5oCkBAIC0z
OSw5ICszOSwxNiBAQCBjbGFzcyBMZWdhY3lDRE07CiBjbGFzcyBDRE1Qcml2YXRlSW50ZXJmYWNl
OwogY2xhc3MgTWVkaWFQbGF5ZXI7CiAKLXVzaW5nIENyZWF0ZUNETSA9IFdURjo6RnVuY3Rpb248
c3RkOjp1bmlxdWVfcHRyPENETVByaXZhdGVJbnRlcmZhY2U+IChMZWdhY3lDRE0qKT47Ci10eXBl
ZGVmIGJvb2wgKCpDRE1TdXBwb3J0c0tleVN5c3RlbSkoY29uc3QgU3RyaW5nJik7Ci10eXBlZGVm
IGJvb2wgKCpDRE1TdXBwb3J0c0tleVN5c3RlbUFuZE1pbWVUeXBlKShjb25zdCBTdHJpbmcmLCBj
b25zdCBTdHJpbmcmKTsKK3VzaW5nIENyZWF0ZUNETSA9IFdURjo6RnVuY3Rpb248c3RkOjp1bmlx
dWVfcHRyPENETVByaXZhdGVJbnRlcmZhY2U+KExlZ2FjeUNETSopPjsKK3VzaW5nIENETVN1cHBv
cnRzS2V5U3lzdGVtID0gV1RGOjpGdW5jdGlvbjxib29sKGNvbnN0IFN0cmluZyYpPjsKK3VzaW5n
IENETVN1cHBvcnRzS2V5U3lzdGVtQW5kTWltZVR5cGUgPSBXVEY6OkZ1bmN0aW9uPGJvb2woY29u
c3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJik+OworCitzdHJ1Y3QgTGVnYWN5Q0RNRmFjdG9yeSB7
CisgICAgQ3JlYXRlQ0RNIGNvbnN0cnVjdG9yOworICAgIENETVN1cHBvcnRzS2V5U3lzdGVtIHN1
cHBvcnRzS2V5U3lzdGVtOworICAgIENETVN1cHBvcnRzS2V5U3lzdGVtQW5kTWltZVR5cGUgc3Vw
cG9ydHNLZXlTeXN0ZW1BbmRNaW1lVHlwZTsKK307CisKIAogY2xhc3MgTGVnYWN5Q0RNQ2xpZW50
IHsKIHB1YmxpYzoKQEAgLTUwLDcgKzU3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUmVmUHRy
PE1lZGlhUGxheWVyPiBjZG1NZWRpYVBsYXllcihjb25zdCBMZWdhY3lDRE0qKSBjb25zdCA9IDA7
CiB9OwogCi1jbGFzcyBMZWdhY3lDRE0gZmluYWwgeworY2xhc3MgV0VCQ09SRV9FWFBPUlQgTGVn
YWN5Q0RNIGZpbmFsIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBleHBsaWNpdCBMZWdhY3lDRE0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pOwpAQCAtNTksMTEg
KzY2LDE2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0tleVN5c3RlbShjb25z
dCBTdHJpbmcmKTsKICAgICBzdGF0aWMgYm9vbCBrZXlTeXN0ZW1TdXBwb3J0c01pbWVUeXBlKGNv
bnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKICAgICBzdGF0
aWMgc3RkOjp1bmlxdWVfcHRyPExlZ2FjeUNETT4gY3JlYXRlKGNvbnN0IFN0cmluZyYga2V5U3lz
dGVtKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCByZWdpc3RlckNETUZhY3Rvcnko
Q3JlYXRlQ0RNJiYsIENETVN1cHBvcnRzS2V5U3lzdGVtLCBDRE1TdXBwb3J0c0tleVN5c3RlbUFu
ZE1pbWVUeXBlKTsKKyAgICBzdGF0aWMgdm9pZCByZWdpc3RlckNETUZhY3RvcnkoQ3JlYXRlQ0RN
JiYsIENETVN1cHBvcnRzS2V5U3lzdGVtJiYsIENETVN1cHBvcnRzS2V5U3lzdGVtQW5kTWltZVR5
cGUmJik7CiAgICAgfkxlZ2FjeUNETSgpOwogCisgICAgLy8gUGxhdGZvcm0tc3BlY2lmaWMgZnVu
Y3Rpb24gdGhhdCdzIGNhbGxlZCB3aGVuIHRoZSBsaXN0IG9mCisgICAgLy8gcmVnaXN0ZXJlZCBD
RE1GYWN0b3J5IG9iamVjdHMgaXMgcXVlcmllZCBmb3IgdGhlIGZpcnN0IHRpbWUuCisgICAgc3Rh
dGljIHZvaWQgcGxhdGZvcm1SZWdpc3RlckZhY3RvcmllcyhWZWN0b3I8TGVnYWN5Q0RNRmFjdG9y
eT4mKTsKKwogICAgIGJvb2wgc3VwcG9ydHNNSU1FVHlwZShjb25zdCBTdHJpbmcmKSBjb25zdDsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8TGVnYWN5Q0RNU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbihMZWdh
Y3lDRE1TZXNzaW9uQ2xpZW50Jik7CisgICAgc3RkOjp1bmlxdWVfcHRyPExlZ2FjeUNETVNlc3Np
b24+IGNyZWF0ZVNlc3Npb24oKTsKIAogICAgIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKCkgY29u
c3QgeyByZXR1cm4gbV9rZXlTeXN0ZW07IH0KIApAQCAtNzEsNiArODMsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXRDbGllbnQoTGVnYWN5Q0RNQ2xpZW50KiBjbGllbnQpIHsgbV9jbGllbnQgPSBj
bGllbnQ7IH0KIAogICAgIFJlZlB0cjxNZWRpYVBsYXllcj4gbWVkaWFQbGF5ZXIoKSBjb25zdDsK
KyAgICBDRE1Qcml2YXRlSW50ZXJmYWNlKiBjZG1Qcml2YXRlKCkgY29uc3QgeyByZXR1cm4gbV9w
cml2YXRlLmdldCgpOyB9CiAKIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fa2V5U3lzdGVtOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2Vi
S2l0TWVkaWFLZXlzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
bGVnYWN5L1dlYktpdE1lZGlhS2V5cy5jcHAKaW5kZXggZTUzN2U2MGY3MjhiMzBjMGU0YWY1MjFj
MzJhYTdiMzk1YWQ2NjRjMy4uYmY2NDZkZWNkZTczYzJlYzY1YzQ2YThiNDkxMjI5YjdmYTFiMzNh
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdh
Y3kvV2ViS2l0TWVkaWFLZXlzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleXMuY3BwCkBAIC0xMjgsMTMgKzEyOCwxOCBA
QCBib29sIFdlYktpdE1lZGlhS2V5czo6aXNUeXBlU3VwcG9ydGVkKGNvbnN0IFN0cmluZyYga2V5
U3lzdGVtLCBjb25zdCBTdHJpbmcmIG1pbQogCiB2b2lkIFdlYktpdE1lZGlhS2V5czo6c2V0TWVk
aWFFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqIGVsZW1lbnQpCiB7Ci0gICAgaWYgKG1fbWVkaWFF
bGVtZW50ICYmIG1fbWVkaWFFbGVtZW50LT5wbGF5ZXIoKSkKKyAgICBpZiAobV9tZWRpYUVsZW1l
bnQgJiYgbV9tZWRpYUVsZW1lbnQtPnBsYXllcigpKSB7CiAgICAgICAgIG1fbWVkaWFFbGVtZW50
LT5wbGF5ZXIoKS0+c2V0Q0RNU2Vzc2lvbihudWxscHRyKTsKKyAgICAgICAgbV9tZWRpYUVsZW1l
bnQtPnBsYXllcigpLT5zZXRDRE0obnVsbHB0cik7CisgICAgfQogCiAgICAgbV9tZWRpYUVsZW1l
bnQgPSBtYWtlV2Vha1B0cihlbGVtZW50KTsKIAotICAgIGlmIChtX21lZGlhRWxlbWVudCAmJiBt
X21lZGlhRWxlbWVudC0+cGxheWVyKCkgJiYgIW1fc2Vzc2lvbnMuaXNFbXB0eSgpKQotICAgICAg
ICBtX21lZGlhRWxlbWVudC0+cGxheWVyKCktPnNldENETVNlc3Npb24obV9zZXNzaW9ucy5sYXN0
KCktPnNlc3Npb24oKSk7CisgICAgaWYgKG1fbWVkaWFFbGVtZW50ICYmIG1fbWVkaWFFbGVtZW50
LT5wbGF5ZXIoKSkgeworICAgICAgICBtX21lZGlhRWxlbWVudC0+cGxheWVyKCktPnNldENETSht
X2NkbS5nZXQoKSk7CisgICAgICAgIGlmICghbV9zZXNzaW9ucy5pc0VtcHR5KCkpCisgICAgICAg
ICAgICBtX21lZGlhRWxlbWVudC0+cGxheWVyKCktPnNldENETVNlc3Npb24obV9zZXNzaW9ucy5s
YXN0KCktPnNlc3Npb24oKSk7CisgICAgfQogfQogCiBSZWZQdHI8TWVkaWFQbGF5ZXI+IFdlYktp
dE1lZGlhS2V5czo6Y2RtTWVkaWFQbGF5ZXIoY29uc3QgTGVnYWN5Q0RNKikgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2
NGFlMTU1ZmQ5OWE0ZmExNGZjOWZlYWVjZmYwZWM2NjE2ODc2ZTQ0Li41NTI4NmNjODJmZWZlYTAz
YzBjNDFhM2UwZjM2OTdkZjQ2MWEyNjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00MTg5LDYgKzQxODksOCBAQAogCQlDREUz
QTg1NDE3RjVGQ0U2MDBDNUJFMjAgLyogQXVkaW9UcmFja1ByaXZhdGVBVkYuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERTNBODUyMTdGNUZDRTYwMEM1
QkUyMCAvKiBBdWRpb1RyYWNrUHJpdmF0ZUFWRi5oICovOyB9OwogCQlDREUzQTg1NzE3RjYwMjA0
MDBDNUJFMjAgLyogQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFM0E4NTUxN0Y2MDIwNDAwQzVCRTIwIC8q
IEF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQy5tbSAqLzsgfTsKIAkJQ0RFM0E4NTgxN0Y2MDIwNDAw
QzVCRTIwIC8qIEF1ZGlvVHJhY2tQcml2YXRlQVZGT2JqQy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFM0E4NTYxN0Y2MDIwNDAwQzVCRTIwIC8qIEF1
ZGlvVHJhY2tQcml2YXRlQVZGT2JqQy5oICovOyB9OworCQlDREU1NTUyNDI0MDVDQ0YyMDA4QTNE
REIgLyogTGVnYWN5Q0RNLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDREE5OEUwQTE2MDNDRDU5MDBGRUEzQjEgLyogTGVnYWN5Q0RNLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0RFNTU1MjUyNDA1Q0NG
MjAwOEEzRERCIC8qIExlZ2FjeUNETVByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTk4RTBDMTYwM0NGM0MwMEZFQTNCMSAvKiBMZWdhY3lD
RE1Qcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJQ0RFNTk1OTUxQkYxNkRGMzAwQTFDQkU4IC8qIENETVNlc3Npb25BVkNvbnRlbnRLZXlT
ZXNzaW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0RFNTk1OTMxQkYxNjZBRDAwQTFDQkU4IC8qIENETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9u
Lm1tICovOyB9OwogCQlDREU1OTU5NzFCRjI2RTIxMDBBMUNCRTggLyogQ0RNU2Vzc2lvbk1lZGlh
U291cmNlQVZGT2JqQy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0RFNTk1OTYxQkYyNkUyMTAwQTFDQkU4IC8qIENETVNlc3Npb25NZWRpYVNvdXJjZUFW
Rk9iakMuaCAqLzsgfTsKIAkJQ0RFNTk1OUQxQkYyNzU3MTAwQTFDQkU4IC8qIENETVNlc3Npb25N
ZWRpYVNvdXJjZUFWRk9iakMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDREU1OTU5QzFCRjI3NTcxMDBBMUNCRTggLyogQ0RNU2Vzc2lvbk1lZGlhU291
cmNlQVZGT2JqQy5tbSAqLzsgfTsKQEAgLTMxMzY2LDYgKzMxMzY4LDggQEAKIAkJCQkxMTMxMENG
MjIwQkE0QTMyMDA2NUE4RDAgLyogTGF5b3V0VHJlZUJ1aWxkZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTE0MURDMDQ4MTY0ODM0OEYwMDM3MUU1QSAvKiBMYXlvdXRVbml0LmggaW4gSGVhZGVycyAq
LywKIAkJCQlFNDUxQzYzMTIzOTQwMjc5MDA5OTMxOTAgLyogTGF5b3V0VW5pdHMuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUNERTU1NTI0MjQwNUNDRjIwMDhBM0REQiAvKiBMZWdhY3lDRE0uaCBpbiBI
ZWFkZXJzICovLAorCQkJCUNERTU1NTI1MjQwNUNDRjIwMDhBM0REQiAvKiBMZWdhY3lDRE1Qcml2
YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREU4QjVFRDFBNjk3NzczMDBCNEI2NkEgLyogTGVn
YWN5Q0RNUHJpdmF0ZUNsZWFyS2V5LmggaW4gSGVhZGVycyAqLywKIAkJCQlDREY0QjcxMjFFMDA4
N0FFMDBFMjM1QTIgLyogTGVnYWN5Q0RNU2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RF
OEI1RjExQTY5Nzc4QjAwQjRCNjZBIC8qIExlZ2FjeUNETVNlc3Npb25DbGVhcktleS5oIGluIEhl
YWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCBm
ZGM3MjhhYjY4NjczMjRmYTE3MGU3ZWEwMDBjMTM3N2E3ODFjOTUzLi5iNGEwNTc0YWMzMjM4Njlj
ZDgwNmU3MDg3YjBkYTcyYjZkNmE1ODdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAKQEAgLTUxMjYsNiArNTEyNiwxMSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
Om1lZGlhRW5naW5lV2FzVXBkYXRlZCgpCiAgICAgICAgIG1fcGxheWVyLT5jZG1JbnN0YW5jZUF0
dGFjaGVkKG1fbWVkaWFLZXlzLT5jZG1JbnN0YW5jZSgpKTsKICNlbmRpZgogCisjaWYgRU5BQkxF
KExFR0FDWV9FTkNSWVBURURfTUVESUEpCisgICAgaWYgKG1fcGxheWVyICYmIG1fd2ViS2l0TWVk
aWFLZXlzKQorICAgICAgICBtX3BsYXllci0+c2V0Q0RNKCZtX3dlYktpdE1lZGlhS2V5cy0+Y2Rt
KCkpOworI2VuZGlmCisKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKSB8fCAoUExBVEZPUk0oTUFD
KSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQogICAgIGlmICghbV9wbGF5ZXIp
CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01l
ZGlhU3RyYXRlZ3kuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhU3RyYXRlZ3kuaApp
bmRleCA2MGE1ODQ3YzhjZWMxMGI3OWI3NDlhNmZhZjg1MDNkMTZhMTk5Yjk1Li5kN2ZiOTk5OTgw
NDRjNGUxOWI0NmMwZjIyNTA5ZjZkNTYwN2FhNTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9NZWRpYVN0cmF0ZWd5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
TWVkaWFTdHJhdGVneS5oCkBAIC0zMiw2ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIEF1ZGlvRGVzdGluYXRpb247CiBjbGFzcyBBdWRpb0lPQ2FsbGJhY2s7CiBjbGFzcyBDRE1G
YWN0b3J5Oworc3RydWN0IExlZ2FjeUNETUZhY3Rvcnk7CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JU
IE1lZGlhU3RyYXRlZ3kgewogcHVibGljOgpAQCAtNDIsNiArNDMsOSBAQCBwdWJsaWM6CiAjaWYg
RU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJDRE1GYWN0
b3JpZXMoVmVjdG9yPENETUZhY3RvcnkqPiYpID0gMDsKICNlbmRpZgorI2lmIEVOQUJMRShMRUdB
Q1lfRU5DUllQVEVEX01FRElBKQorICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckxlZ2FjeUNETUZh
Y3RvcmllcyhWZWN0b3I8TGVnYWN5Q0RNRmFjdG9yeT4mKSA9IDA7CisjZW5kaWYKIHByb3RlY3Rl
ZDoKICAgICB2aXJ0dWFsIH5NZWRpYVN0cmF0ZWd5KCkgPSBkZWZhdWx0OwogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xlZ2FjeUNETVNlc3Npb24uaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xlZ2FjeUNETVNlc3Npb24uaAppbmRl
eCAyNWU3OWE2ZGMwYTViMjE5M2E3MmEyMjdhYWNhMTc3M2E3ZTNjMjhjLi4yNDM0OTY4ZWFlOTg2
MDBkOGZiYWViNTFhMDU1YjExZjRjZDM0N2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9MZWdhY3lDRE1TZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTGVnYWN5Q0RNU2Vzc2lvbi5oCkBAIC0zOCw3ICszOCw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIH5MZWdhY3lDRE1TZXNzaW9uQ2xpZW50KCkgPSBkZWZhdWx0Owog
ICAgIHZpcnR1YWwgdm9pZCBzZW5kTWVzc2FnZShVaW50OEFycmF5KiwgU3RyaW5nIGRlc3RpbmF0
aW9uVVJMKSA9IDA7CiAKLSAgICBlbnVtIHsKKyAgICBlbnVtIDogdWludDhfdCB7CiAgICAgICAg
IE1lZGlhS2V5RXJyb3JVbmtub3duID0gMSwKICAgICAgICAgTWVkaWFLZXlFcnJvckNsaWVudCwK
ICAgICAgICAgTWVkaWFLZXlFcnJvclNlcnZpY2UsCkBAIC01OCw5ICs1OCwxMCBAQCBlbnVtIExl
Z2FjeUNETVNlc3Npb25UeXBlIHsKICAgICBDRE1TZXNzaW9uVHlwZUFWRm91bmRhdGlvbk9iakMs
CiAgICAgQ0RNU2Vzc2lvblR5cGVBVlN0cmVhbVNlc3Npb24sCiAgICAgQ0RNU2Vzc2lvblR5cGVB
VkNvbnRlbnRLZXlTZXNzaW9uLAorICAgIENETVNlc3Npb25UeXBlUmVtb3RlLAogfTsKIAotY2xh
c3MgTGVnYWN5Q0RNU2Vzc2lvbiB7CitjbGFzcyBXRUJDT1JFX0VYUE9SVCBMZWdhY3lDRE1TZXNz
aW9uIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5MZWdhY3lDRE1TZXNzaW9uKCkgPSBkZWZhdWx0
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5j
cHAKaW5kZXggODZiNDczZDM4YTBjYjVhODBlMDI2MGZjY2RhMGM4ZTg3YzRhZTM2Yy4uMzkwMmNh
Zjc2OGI1NDJmOGI3OTZhMTE5ZjE2ODk4ZTk1MTgyODg2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcApAQCAtNjI2LDYgKzYyNiwxMSBA
QCBzdGQ6OnVuaXF1ZV9wdHI8TGVnYWN5Q0RNU2Vzc2lvbj4gTWVkaWFQbGF5ZXI6OmNyZWF0ZVNl
c3Npb24oY29uc3QgU3RyaW5nJiBrZXlTeQogICAgIHJldHVybiBtX3ByaXZhdGUtPmNyZWF0ZVNl
c3Npb24oa2V5U3lzdGVtLCBjbGllbnQpOwogfQogCit2b2lkIE1lZGlhUGxheWVyOjpzZXRDRE0o
TGVnYWN5Q0RNKiBjZG0pCit7CisgICAgbV9wcml2YXRlLT5zZXRDRE0oY2RtKTsKK30KKwogdm9p
ZCBNZWRpYVBsYXllcjo6c2V0Q0RNU2Vzc2lvbihMZWdhY3lDRE1TZXNzaW9uKiBzZXNzaW9uKQog
ewogICAgIG1fcHJpdmF0ZS0+c2V0Q0RNU2Vzc2lvbihzZXNzaW9uKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCmluZGV4IGE3NWFhY2ExZWJlMzhm
ZDcxZDA4ODg2NWM4MWQwMzU0ZmNhZTNhNjkuLjYzZTJjNTIxMzE4Y2ZiMzAxZmUwZjA0ZWVlOTVh
YzJhYmU2YzJmNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXIuaApAQCAtNjQsNiArNjQsNyBAQCBjbGFzcyBDYWNoZWRSZXNvdXJjZUxvYWRlcjsK
IGNsYXNzIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0Owog
Y2xhc3MgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTsKK2NsYXNzIExlZ2FjeUNETTsKIGNsYXNzIExl
Z2FjeUNETVNlc3Npb25DbGllbnQ7CiBjbGFzcyBNZWRpYVBsYXliYWNrVGFyZ2V0OwogY2xhc3Mg
TWVkaWFQbGF5ZXI7CkBAIC0zNTcsNiArMzU4LDcgQEAgcHVibGljOgogICAgIGVudW0gTWVkaWFL
ZXlFeGNlcHRpb24geyBOb0Vycm9yLCBJbnZhbGlkUGxheWVyU3RhdGUsIEtleVN5c3RlbU5vdFN1
cHBvcnRlZCB9OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPExlZ2FjeUNETVNlc3Npb24+IGNyZWF0
ZVNlc3Npb24oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIExlZ2FjeUNETVNlc3Npb25DbGllbnQq
KTsKKyAgICB2b2lkIHNldENETShMZWdhY3lDRE0qKTsKICAgICB2b2lkIHNldENETVNlc3Npb24o
TGVnYWN5Q0RNU2Vzc2lvbiopOwogICAgIHZvaWQga2V5QWRkZWQoKTsKICNlbmRpZgpAQCAtNjI2
LDYgKzYyOCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdp
bnMoY29uc3QgU3RyaW5nJiBkZXRhaWxzLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBNZWRp
YVBsYXllclJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnNDYWxsYmFjayYgY2FsbGJhY2spIHsg
Y2xpZW50KCkucmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2lucyhkZXRhaWxzLCBkZXNjcmlwdGlv
biwgY2FsbGJhY2spOyB9CiAjZW5kaWYKIAorICAgIGNvbnN0IE1lZGlhUGxheWVyUHJpdmF0ZUlu
dGVyZmFjZSogcGxheWVyUHJpdmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpdmF0ZS5nZXQoKTsg
fQorCiBwcml2YXRlOgogICAgIE1lZGlhUGxheWVyKE1lZGlhUGxheWVyQ2xpZW50Jik7CiAgICAg
TWVkaWFQbGF5ZXIoTWVkaWFQbGF5ZXJDbGllbnQmLCBNZWRpYVBsYXllckVudW1zOjpNZWRpYUVu
Z2luZUlkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllclByaXZhdGUuaAppbmRleCAxYmQ0MDk1YTA5NjM4Y2M5MTc2YTA0ZDM0
ZmJjMTEyZmMyNWYzMmRjLi43MjQzMTNiMmM3NWM2NWQzNjc1ZmM2YzY2OTFkMGI2ZmIyZmY5NWU5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
clByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXllclByaXZhdGUuaApAQCAtMjI0LDYgKzIyNCw3IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShM
RUdBQ1lfRU5DUllQVEVEX01FRElBKQogICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPExlZ2Fj
eUNETVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oY29uc3QgU3RyaW5nJiwgTGVnYWN5Q0RNU2Vzc2lv
bkNsaWVudCopIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q0RNKExl
Z2FjeUNETSopIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRDRE1TZXNzaW9uKExlZ2FjeUNETVNl
c3Npb24qKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQga2V5QWRkZWQoKSB7IH0KICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9XZWJNZWRpYVN0cmF0
ZWd5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvV2ViTWVkaWFTdHJh
dGVneS5jcHAKaW5kZXggNWQ3YThiOGQxMTI0YjJhNTI4YWQ3M2JkYzk2ZDlhOTc4MGRjMjA0Yy4u
MWZmMDk4MTMyMTg3NWNjNWZjYjFiYWMxZTg3NTU2YTQyYzk1ODU5ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9XZWJNZWRpYVN0cmF0ZWd5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1dlYk1lZGlhU3RyYXRlZ3kuY3Bw
CkBAIC0yOSwxMCArMjksMTIgQEAKICNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbi5oIgog
I2luY2x1ZGUgIlJlbW90ZUF1ZGlvRGVzdGluYXRpb25Qcm94eS5oIgogI2luY2x1ZGUgIlJlbW90
ZUNETUZhY3RvcnkuaCIKKyNpbmNsdWRlICJSZW1vdGVMZWdhY3lDRE1GYWN0b3J5LmgiCiAjaW5j
bHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9EZXN0aW5hdGlvbi5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvQXVkaW9JT0NhbGxiYWNrLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9DRE1GYWN0b3J5Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9MZWdhY3lDRE0uaD4KIAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKQEAgLTYyLDUgKzY0LDExIEBAIHZvaWQgV2ViTWVkaWFTdHJhdGVneTo6
cmVnaXN0ZXJDRE1GYWN0b3JpZXMoVmVjdG9yPFdlYkNvcmU6OkNETUZhY3RvcnkqPiYgZmFjdG9y
CiAgICAgV2ViQ29yZTo6Q0RNRmFjdG9yeTo6cGxhdGZvcm1SZWdpc3RlckZhY3RvcmllcyhmYWN0
b3JpZXMpOwogfQogI2VuZGlmCisjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCit2
b2lkIFdlYk1lZGlhU3RyYXRlZ3k6OnJlZ2lzdGVyTGVnYWN5Q0RNRmFjdG9yaWVzKFZlY3RvcjxM
ZWdhY3lDRE1GYWN0b3J5PiYgZmFjdG9yaWVzKQoreworICAgIFdlYkNvcmU6OkxlZ2FjeUNETTo6
cGxhdGZvcm1SZWdpc3RlckZhY3RvcmllcyhmYWN0b3JpZXMpOworfQorI2VuZGlmCiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9XZWJNZWRpYVN0cmF0ZWd5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1dlYk1lZGlhU3RyYXRlZ3kuaAppbmRleCA0ZmFiMGU5NDRmYzE0ZTY4NDM3OWUzMDA4
MTYzYmUxNjJkZDg5YjRkLi41MmZjOGFlODU0MmY4ZmIxMTIyYWY2YmRiZDYyOWFiMmQzNzBiZDVh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1dlYk1lZGlh
U3RyYXRlZ3kuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1dlYk1l
ZGlhU3RyYXRlZ3kuaApAQCAtNDUsNiArNDUsOSBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShFTkNS
WVBURURfTUVESUEpCiAgICAgdm9pZCByZWdpc3RlckNETUZhY3RvcmllcyhWZWN0b3I8V2ViQ29y
ZTo6Q0RNRmFjdG9yeSo+Jikgb3ZlcnJpZGU7CiAjZW5kaWYKKyNpZiBFTkFCTEUoTEVHQUNZX0VO
Q1JZUFRFRF9NRURJQSkKKyAgICB2b2lkIHJlZ2lzdGVyTGVnYWN5Q0RNRmFjdG9yaWVzKFZlY3Rv
cjxXZWJDb3JlOjpMZWdhY3lDRE1GYWN0b3J5PiYpIG92ZXJyaWRlOworI2VuZGlmCiAKICNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpCiAgICAgYm9vbCBtX3VzZUdQVVByb2Nlc3MgeyBmYWxzZSB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxh
dGZvcm1TdHJhdGVnaWVzLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCmluZGV4IGI5MDllY2M0MzliY2QzYzZmNmRhODA0
MWM2ZWYyOTNmZjM0NjY5NmYuLjk3NDI2ZjM5OTE0NzAxZTY3ODI4NDQ5ZjI3MjY5YmMyN2RkNTY5
OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YlBsYXRmb3JtU3RyYXRlZ2llcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KQEAgLTMzLDYgKzMzLDcgQEAKICNp
bXBvcnQgPFdlYkNvcmUvQ0RNRmFjdG9yeS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Db2xvci5oPgog
I2ltcG9ydCA8V2ViQ29yZS9GcmFtZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9MZWdhY3lDRE0uaD4K
ICNpbXBvcnQgPFdlYkNvcmUvTWVkaWFTdHJhdGVneS5oPgogI2ltcG9ydCA8V2ViQ29yZS9OZXR3
b3JrU3RvcmFnZVNlc3Npb24uaD4KICNpbXBvcnQgPFdlYkNvcmUvUGFzdGVib2FyZEl0ZW1JbmZv
Lmg+CkBAIC04MCw2ICs4MSwxMiBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gV2ViQ29yZTo6
Q0RNRmFjdG9yeTo6cGxhdGZvcm1SZWdpc3RlckZhY3RvcmllcyhmYWN0b3JpZXMpOwogICAgIH0K
ICNlbmRpZgorI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQorICAgIHZvaWQgcmVn
aXN0ZXJMZWdhY3lDRE1GYWN0b3JpZXMoVmVjdG9yPExlZ2FjeUNETUZhY3Rvcnk+JiBmYWN0b3Jp
ZXMpIG92ZXJyaWRlCisgICAgeworICAgICAgICBXZWJDb3JlOjpMZWdhY3lDRE06OnBsYXRmb3Jt
UmVnaXN0ZXJGYWN0b3JpZXMoZmFjdG9yaWVzKTsKKyAgICB9CisjZW5kaWYKIH07CiAKIE1lZGlh
U3RyYXRlZ3kqIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y3JlYXRlTWVkaWFTdHJhdGVneSgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392088</attachid>
            <date>2020-02-29 19:40:02 -0800</date>
            <delta_ts>2020-03-05 23:00:32 -0800</delta_ts>
            <desc>Part 2: WebKit</desc>
            <filename>bug-208402-20200229194001.patch</filename>
            <type>text/plain</type>
            <size>120569</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3Njg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDkyMTdmNmY3YjExNWVhYjQ0
NGUxYjQ3YWFiMDQzNzMwOTM4ZWZmZWMuLmRhMzZlYTdmNjNhZTQwY2U1NjY5ODc3YTVhZWEyNzUy
OWY1OTE1NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTM0IEBACisyMDIwLTAyLTI4ICBKZXIgTm9i
bGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFVQXSBJbXBsZW1lbnQgTGVn
YWN5IEVNRSBBUEkgaW4gdGhlIEdQVSBQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg0MDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgUmVtb3RlTGVnYWN5Q0RNRmFj
dG9yeSwgUmVtYXRlTGVnYWN5Q0RNLFJlbW90ZUxlZ2FjeUNETVNlc3Npb24sIGFuZCBhbGwKKyAg
ICAgICAgb2YgdGhlaXIgYXNzb2NpYXRlZCBQcm94eSBvYmplY3RzLgorCisgICAgICAgICogRGVy
aXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1v
dXRwdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAg
ICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmxlZ2FjeUNkbUZhY3RvcnlQcm94eSk6
CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpc3BhdGNoTWVz
c2FnZSk6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpc3Bh
dGNoU3luY01lc3NhZ2UpOgorICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFj
dG9yeVByb3h5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETUZh
Y3RvcnlQcm94eTo6UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5KToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5OjpjcmVhdGVDRE0pOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk6OnN1cHBvcnRzS2V5U3lzdGVtKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5OjpkaWRSZWNlaXZlQ0RN
TWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eTo6
ZGlkUmVjZWl2ZUNETVNlc3Npb25NZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVn
YWN5Q0RNRmFjdG9yeVByb3h5OjpkaWRSZWNlaXZlU3luY0NETU1lc3NhZ2UpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk6OmRpZFJlY2VpdmVTeW5jQ0RNU2Vz
c2lvbk1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJv
eHk6OmFkZFByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVBy
b3h5OjpyZW1vdmVQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETUZhY3Rv
cnlQcm94eTo6YWRkU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETUZh
Y3RvcnlQcm94eTo6cmVtb3ZlU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2Fj
eUNETUZhY3RvcnlQcm94eTo6Z2V0U2Vzc2lvbiBjb25zdCk6CisgICAgICAgICogR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkuaDogQWRkZWQuCisgICAgICAgICog
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkubWVzc2FnZXMuaW46
IEFkZGVkLgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHku
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNUHJveHk6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETVByb3h5OjpSZW1vdGVMZWdhY3lD
RE1Qcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETVByb3h5OjpzdXBwb3J0
c01JTUVUeXBlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNUHJveHk6OmNyZWF0
ZVNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1Qcm94eTo6c2V0UGxh
eWVySWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1Qcm94eTo6Y2RtTWVkaWFQ
bGF5ZXIgY29uc3QpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RN
UHJveHkuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETVByb3h5Ojpm
YWN0b3J5IGNvbnN0KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNE
TVByb3h5Lm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5KToK
KyAgICAgICAgKFdlYktpdDo6Y29udmVydFRvVWludDhBcnJheSk6CisgICAgICAgIChXZWJLaXQ6
OmNvbnZlcnRUb09wdGlvbmFsRGF0YVJlZmVyZW5jZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6Z2VuZXJhdGVLZXlSZXF1ZXN0KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpyZWxlYXNlS2V5cyk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6dXBkYXRlKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpnZXRDYWNoZWRLZXlGb3JLZXlJ
ZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6Y2FjaGVk
S2V5Rm9yS2V5SUQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJv
eHk6OnNlbmRNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lv
blByb3h5OjpzZW5kRXJyb3IpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1TZXNz
aW9uUHJveHk6Om1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkgY29uc3QpOgorICAgICAgICAqIEdQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5Lmg6IEFkZGVkLgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OmZhY3RvcnkgY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OnNlc3Npb24g
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OnNl
dFBsYXllcik6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNz
aW9uUHJveHkubWVzc2FnZXMuaW46IEFkZGVkLgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6Z2V0UHJveHkpOgorICAgICAgICAqIEdQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBHUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjptZWRpYVBsYXllckNhY2hlZEtleUZvcktleUlkIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5
ZXJLZXlOZWVkZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5Ojpz
ZXRMZWdhY3lDRE1TZXNzaW9uKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1l
ZGlhUGxheWVyUHJveHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlh
UGxheWVyUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVUZXh0VHJhY2tQcm94eS5jcHA6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVU
ZXh0VHJhY2tQcm94eS5oOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5Ogor
ICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9u
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVUHJvY2Vzc0Nvbm5lY3Rpb246Om1lZGlhUGxheWVy
TWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6OkdQVVByb2Nlc3NDb25uZWN0aW9uOjpsZWdhY3lD
RE1GYWN0b3J5KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlv
bi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0
Q0RNKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRDRE1T
ZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjptZWRp
YVBsYXllcktleU5lZWRlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVMZWdhY3lDRE06OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNE
TTo6UmVtb3RlTGVnYWN5Q0RNKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNOjpz
dXBwb3J0c01JTUVUeXBlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNOjpjcmVh
dGVTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNOjpzZXRQbGF5ZXJJ
ZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNLmg6IEFk
ZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3Rv
cnkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeTo6
UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNE
TUZhY3Rvcnk6OnJlZ2lzdGVyRmFjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2Fj
eUNETUZhY3Rvcnk6OnN1cHBsZW1lbnROYW1lKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVn
YWN5Q0RNRmFjdG9yeTo6Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVMZWdhY3lDRE1GYWN0b3J5OjpzdXBwb3J0c0tleVN5c3RlbSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUxlZ2FjeUNETUZhY3Rvcnk6OnN1cHBvcnRzS2V5U3lzdGVtQW5kTWltZVR5cGUp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1GYWN0b3J5OjpjcmVhdGVDRE0pOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1GYWN0b3J5OjphZGRTZXNzaW9uKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeTo6cmVtb3ZlU2Vzc2lvbik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETUZhY3Rvcnk6OmZpbmRDRE0gY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1GYWN0b3J5OjpkaWRSZWNlaXZlU2Vzc2lv
bk1lc3NhZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNE
TUZhY3RvcnkuaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
TGVnYWN5Q0RNSWRlbnRpZmllci5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6
OmNvbnZlcnRUb0FycmF5QnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6Y29udmVydFRvVWludDhB
cnJheSk6CisgICAgICAgIChXZWJLaXQ6OmNvbnZlcnRUb09wdGlvbmFsRGF0YVJlZmVyZW5jZSk6
CisgICAgICAgIChXZWJLaXQ6OmNvbnZlcnRUb0RhdGFSZWZlcmVuY2UpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVMZWdhY3lDRE1TZXNzaW9uOjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbjo6Z2VuZXJhdGVLZXlSZXF1ZXN0KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbjo6cmVsZWFzZUtleXMpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uOjp1cGRhdGUpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uOjpjYWNoZWRLZXlGb3JLZXlJRCBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb246OnNlbmRNZXNzYWdlKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbjo6c2VuZEVycm9yKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmg6IEFk
ZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Np
b24ubWVzc2FnZXMuaW46IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6ZmluZFJlbW90ZVBsYXllcklkKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9XZWJNZWRpYVN0cmF0ZWd5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViTWVkaWFTdHJhdGVneTo6cmVnaXN0ZXJMZWdhY3lDRE1GYWN0b3Jp
ZXMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZTo6dXBkYXRlUHJlZmVyZW5jZXMpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5jcHA6CisKIDIwMjAtMDItMjggIEplciBOb2JsZSAgPGplci5ub2JsZUBh
cHBsZS5jb20+CiAKICAgICAgICAgW0dQVVBdIEltcGxlbWVudCBMZWdhY3kgRU1FIEFQSSBpbiB0
aGUgR1BVIFByb2Nlc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMt
aW5wdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNm
aWxlbGlzdAppbmRleCA5Zjk0NmY4NDk3YWYyM2I0YWZhNTFiNzkxODQxODUxODg2MGFjNWI5Li4y
NDc2ZDU1M2MxMTY3ZTNmMWU3NjY1MWYxNWY0ZDM2ZTljYzI5ZjhjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dl
YktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CkBAIC0yMiw2ICsyMiw5IEBAICQo
UFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5Lm1lc3Nh
Z2VzLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNl
UHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkubWVzc2FnZXMuaW4KKyQoUFJPSkVDVF9ESVIpL0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5Lm1lc3NhZ2VzLmluCisk
KFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5Lm1lc3Nh
Z2VzLmluCiskKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNl
c3Npb25Qcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Lm1lc3NhZ2VzLmluCiAkKFBS
T0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLm1l
c3NhZ2VzLmluCkBAIC0xMTcsNiArMTIwLDcgQEAgJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbgogJChQUk9KRUNU
X0RJUikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLm1lc3Nh
Z2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rl
c3RpbmF0aW9uUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5tZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJ
UikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5tZXNzYWdlcy5p
bgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9tZWRpYS9U
ZXh0VHJhY2tQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9j
ZXNzL0dQVS93ZWJydGMvTGliV2ViUlRDQ29kZWNzLm1lc3NhZ2VzLmluCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dl
YktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRleCBhOTZjMmNmZGRkNDZi
MzU5MjM4ZTk2MjM0M2E5OTIyMTA0ZWVhNTliLi40ZDBkZDU3MjkwYzY4ZTNiNWM2MjFjNjU0MzA1
NTIyODk0OTkzMjczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91
dHB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0
LnhjZmlsZWxpc3QKQEAgLTE1NSw2ICsxNTUsMTggQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQ0RNUHJveHlNZXNzYWdlc1JlcGxpZXMuaAogJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlN
ZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9S
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUxlZ2FjeUNETUZhY3Rv
cnlQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQyL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eU1lc3NhZ2VzLmgKKyQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUxlZ2FjeUNE
TUZhY3RvcnlQcm94eU1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVMZWdhY3lDRE1Qcm94eU1lc3NhZ2VSZWNlaXZlci5j
cHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUxl
Z2FjeUNETVByb3h5TWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYktpdDIvUmVtb3RlTGVnYWN5Q0RNUHJveHlNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTGVnYWN5Q0RNU2Vz
c2lvbk1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJLaXQyL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25NZXNzYWdlcy5oCiskKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVMZWdhY3lDRE1TZXNzaW9u
TWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJLaXQyL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKKyQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUxlZ2FjeUNE
TVNlc3Npb25Qcm94eU1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJLaXQyL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eU1lc3NhZ2VzUmVwbGllcy5o
CiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVNZWRp
YVBsYXllck1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJNZXNzYWdlcy5o
CiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVNZWRp
YVBsYXllck1hbmFnZXJNZXNzYWdlc1JlcGxpZXMuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtl
CmluZGV4IDQ1ZWUzZGI3ZWQ3ZTEzMzcyYzhhNzVhZDU1NWExNjU4N2Y2N2QwOGEuLmY0Y2NhMTYx
M2M1ZTU0ODE0OGU2MzMyM2Y4NzMxMjNhMDUyZTg4YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2Vz
Lm1ha2UKQEAgLTE1Niw2ICsxNTYsMTAgQEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAgICAgUmVt
b3RlQ0RNSW5zdGFuY2VQcm94eSBcCiAgICAgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uIFwKICAg
ICBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eSBcCisgICAgUmVtb3RlTGVnYWN5Q0RNUHJv
eHkgXAorICAgIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eSBcCisgICAgUmVtb3RlTGVnYWN5
Q0RNU2Vzc2lvbiBcCisgICAgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5IFwKICAgICBSZW1v
dGVNZWRpYVBsYXllck1hbmFnZXIgXAogICAgIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5
IFwKICAgICBSZW1vdGVNZWRpYVBsYXllclByb3h5IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCA2Y2YxYzMw
YjNlMzMwMTI3NzQ2NmQ5MmVlMjkzMzI0NjA3ZTU5Y2MxLi5hOGNjMTcyYzYxMzgxZWIxZThlNTNh
ZDIxM2U0MDk0ODA3MDZmNTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC03MSw2ICs3MSwxMiBAQAogI2lu
Y2x1ZGUgIlJlbW90ZUNETVByb3h5TWVzc2FnZXMuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKExF
R0FDWV9FTkNSWVBURURfTUVESUEpCisjaW5jbHVkZSAiUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVBy
b3h5LmgiCisjaW5jbHVkZSAiUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5TWVzc2FnZXMuaCIK
KyNpbmNsdWRlICJSZW1vdGVMZWdhY3lDRE1Qcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVt
b3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5TWVzc2FnZXMuaCIKKyNlbmRpZgogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtMjMxLDYgKzIzNywxNiBAQCB2
b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlbGVhc2VSZW5kZXJpbmdCYWNrZW5kKFJl
bmRlcmluZ0JhY2tlbmRJZGVudGlmaQogICAgIEFTU0VSVF9VTlVTRUQoZm91bmQsIGZvdW5kKTsK
IH0KIAorI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQorUmVtb3RlTGVnYWN5Q0RN
RmFjdG9yeVByb3h5JiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpsZWdhY3lDZG1GYWN0b3J5
UHJveHkoKQoreworICAgIGlmICghbV9sZWdhY3lDZG1GYWN0b3J5UHJveHkpCisgICAgICAgIG1f
bGVnYWN5Q2RtRmFjdG9yeVByb3h5ID0gbWFrZVVuaXF1ZTxSZW1vdGVMZWdhY3lDRE1GYWN0b3J5
UHJveHk+KCp0aGlzKTsKKworICAgIHJldHVybiAqbV9sZWdhY3lDZG1GYWN0b3J5UHJveHk7Cit9
CisjZW5kaWYKKwogYm9vbCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaXNwYXRjaE1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpCiB7
CiAgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpSZW1v
dGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CkBAIC0z
MDgsNiArMzI0LDIyIEBAIGJvb2wgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlzcGF0Y2hN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDCiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KICNlbmRpZgorI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQor
ICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6UmVtb3Rl
TGVnYWN5Q0RNRmFjdG9yeVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAg
bGVnYWN5Q2RtRmFjdG9yeVByb3h5KCkuZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tV2ViUHJvY2Vzcyhj
b25uZWN0aW9uLCBkZWNvZGVyKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAg
aWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpSZW1vdGVMZWdh
Y3lDRE1Qcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIGxlZ2FjeUNkbUZh
Y3RvcnlQcm94eSgpLmRpZFJlY2VpdmVDRE1NZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVj
ZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIGxlZ2FjeUNkbUZhY3RvcnlQcm94eSgpLmRp
ZFJlY2VpdmVDRE1TZXNzaW9uTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgfQorI2VuZGlmCiAKICAgICByZXR1cm4gbWVzc2FnZVJlY2VpdmVy
TWFwKCkuZGlzcGF0Y2hNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwogfQpAQCAtMzU1LDYg
KzM4NywyMiBAQCBib29sIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpc3BhdGNoU3luY01l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLAogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CiAjZW5kaWYKKyNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKKyAgICBp
ZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlJlbW90ZUxlZ2Fj
eUNETUZhY3RvcnlQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIGxlZ2Fj
eUNkbUZhY3RvcnlQcm94eSgpLmRpZFJlY2VpdmVTeW5jTWVzc2FnZUZyb21XZWJQcm9jZXNzKGNv
bm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKworICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdl
czo6UmVtb3RlTGVnYWN5Q0RNUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAg
ICBsZWdhY3lDZG1GYWN0b3J5UHJveHkoKS5kaWRSZWNlaXZlU3luY0NETU1lc3NhZ2UoY29ubmVj
dGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
fQorCisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpS
ZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAg
ICAgICBsZWdhY3lDZG1GYWN0b3J5UHJveHkoKS5kaWRSZWNlaXZlU3luY0NETVNlc3Npb25NZXNz
YWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7CisgICAgICAgIHJldHVybiB0
cnVlOworICAgIH0KKyNlbmRpZgogCiAgICAgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck1hcCgpLmRp
c3BhdGNoU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5oCmluZGV4IGEzZWNhNWM4ZmFkNjkxODM4MGZkOTMzYmY2MzBkZDRjZmY3MzBkOTYuLmFl
Mzk5ODYzNDVjYjJlNTZiZDVhMzdkMWJmZGRkOGVhYmQ0MzQ3ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtNDks
NiArNDksNyBAQCBjbGFzcyBMaWJXZWJSVENDb2RlY3NQcm94eTsKIGNsYXNzIFJlbW90ZUF1ZGlv
RGVzdGluYXRpb25NYW5hZ2VyOwogY2xhc3MgUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVu
ZGVyZXJNYW5hZ2VyOwogY2xhc3MgUmVtb3RlQ0RNRmFjdG9yeVByb3h5OworY2xhc3MgUmVtb3Rl
TGVnYWN5Q0RNRmFjdG9yeVByb3h5OwogY2xhc3MgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJv
eHk7CiBjbGFzcyBSZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlcjsKIGNsYXNzIFJlbW90ZU1lZGlh
UmVzb3VyY2VNYW5hZ2VyOwpAQCAtODksMTIgKzkwLDE2IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUo
RU5DUllQVEVEX01FRElBKQogICAgIFJlbW90ZUNETUZhY3RvcnlQcm94eSYgY2RtRmFjdG9yeVBy
b3h5KCk7CiAjZW5kaWYKKyNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKKyAgICBS
ZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkmIGxlZ2FjeUNkbUZhY3RvcnlQcm94eSgpOworI2Vu
ZGlmCisKKyAgICBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSYgcmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyUHJveHkoKTsKIAogcHJpdmF0ZToKICAgICBHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzKEdQVVByb2Nlc3MmLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciwgSVBDOjpDb25uZWN0
aW9uOjpJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCk7CiAKICAgICBSZW1vdGVBdWRpb0Rlc3Rp
bmF0aW9uTWFuYWdlciYgcmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIoKTsKLSAgICBSZW1v
dGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSYgcmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHko
KTsKICNpZiBQTEFURk9STShDT0NPQSkgJiYgVVNFKExJQldFQlJUQykKICAgICBMaWJXZWJSVEND
b2RlY3NQcm94eSYgbGliV2ViUlRDQ29kZWNzUHJveHkoKTsKICNlbmRpZgpAQCAtMTQ3LDYgKzE1
Miw5IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8UmVtb3RlQ0RNRmFjdG9yeVByb3h5PiBtX2NkbUZhY3RvcnlQcm94eTsKICNlbmRp
ZgorI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQorICAgIHN0ZDo6dW5pcXVlX3B0
cjxSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk+IG1fbGVnYWN5Q2RtRmFjdG9yeVByb3h5Owor
I2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94
eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZWQ5ZjViNWE0NDNmNWNmOTg2YmE0ZmNhMWM2ZTc4NTU3MWRlZjNi
MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVMZWdhY3lDRE1GYWN0b3J5UHJveHkuY3BwCkBAIC0wLDAgKzEsMTMyIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQ
cm94eS5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQVEVEX01F
RElBKQorCisjaW5jbHVkZSAiUmVtb3RlTGVnYWN5Q0RNUHJveHkuaCIKKyNpbmNsdWRlICJSZW1v
dGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0xlZ2FjeUNETS5o
PgorI2luY2x1ZGUgPHd0Zi9BbGdvcml0aG1zLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5OjpS
ZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29u
bmVjdGlvbikKKyAgICA6IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcyhjb25uZWN0aW9uKQor
eworfQorCitSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk6On5SZW1vdGVMZWdhY3lDRE1GYWN0
b3J5UHJveHkoKSA9IGRlZmF1bHQ7CisKK3ZvaWQgUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5
OjpjcmVhdGVDRE0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIE9wdGlvbmFsPE1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZUlkZW50aWZpZXI+JiYgb3B0aW9uYWxQbGF5ZXJJZCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChSZW1vdGVMZWdhY3lDRE1JZGVudGlmaWVyJiYpPiYmIGNvbXBsZXRpb24pCit7
CisgICAgYXV0byBwcml2YXRlQ0RNID0gTGVnYWN5Q0RNOjpjcmVhdGUoa2V5U3lzdGVtKTsKKyAg
ICBpZiAoIXByaXZhdGVDRE0pIHsKKyAgICAgICAgY29tcGxldGlvbih7IH0pOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBw
bGF5ZXJJZDsKKyAgICBpZiAob3B0aW9uYWxQbGF5ZXJJZCkKKyAgICAgICAgcGxheWVySWQgPSBX
VEZNb3ZlKG9wdGlvbmFsUGxheWVySWQudmFsdWUoKSk7CisKKyAgICBhdXRvIHByb3h5ID0gUmVt
b3RlTGVnYWN5Q0RNUHJveHk6OmNyZWF0ZShtYWtlV2Vha1B0cih0aGlzKSwgV1RGTW92ZShwbGF5
ZXJJZCksIFdURk1vdmUocHJpdmF0ZUNETSkpOworICAgIGF1dG8gaWRlbnRpZmllciA9IFJlbW90
ZUxlZ2FjeUNETUlkZW50aWZpZXI6OmdlbmVyYXRlKCk7CisgICAgYWRkUHJveHkoaWRlbnRpZmll
ciwgV1RGTW92ZShwcm94eSkpOworICAgIGNvbXBsZXRpb24oV1RGTW92ZShpZGVudGlmaWVyKSk7
Cit9CisKK3ZvaWQgUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5OjpzdXBwb3J0c0tleVN5c3Rl
bShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgT3B0aW9uYWw8U3RyaW5nPiBtaW1lVHlwZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uKQoreworICAgIGlmIChtaW1l
VHlwZSkKKyAgICAgICAgY29tcGxldGlvbihMZWdhY3lDRE06OmtleVN5c3RlbVN1cHBvcnRzTWlt
ZVR5cGUoa2V5U3lzdGVtLCAqbWltZVR5cGUpKTsKKyAgICBlbHNlCisgICAgICAgIGNvbXBsZXRp
b24oTGVnYWN5Q0RNOjpzdXBwb3J0c0tleVN5c3RlbShrZXlTeXN0ZW0pKTsKK30KKwordm9pZCBS
ZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk6OmRpZFJlY2VpdmVDRE1NZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIGlmIChh
dXRvKiBwcm94eSA9IG1fcHJveGllcy5nZXQobWFrZU9iamVjdElkZW50aWZpZXI8UmVtb3RlTGVn
YWN5Q0RNSWRlbnRpZmllclR5cGU+KGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkpCisgICAgICAg
IHByb3h5LT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKK30KKwordm9p
ZCBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk6OmRpZFJlY2VpdmVDRE1TZXNzaW9uTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3sK
KyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG1fc2Vzc2lvbnMuZ2V0KG1ha2VPYmplY3RJZGVudGlm
aWVyPFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyVHlwZT4oZGVjb2Rlci5kZXN0aW5h
dGlvbklEKCkpKSkKKyAgICAgICAgc2Vzc2lvbi0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlv
biwgZGVjb2Rlcik7Cit9CisKK3ZvaWQgUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5OjpkaWRS
ZWNlaXZlU3luY0NETU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRl
Y29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiBlbmNvZGVyKQor
eworICAgIGlmIChhdXRvKiBwcm94eSA9IG1fcHJveGllcy5nZXQobWFrZU9iamVjdElkZW50aWZp
ZXI8UmVtb3RlTGVnYWN5Q0RNSWRlbnRpZmllclR5cGU+KGRlY29kZXIuZGVzdGluYXRpb25JRCgp
KSkpCisgICAgICAgIHByb3h5LT5kaWRSZWNlaXZlU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVj
b2RlciwgZW5jb2Rlcik7Cit9CisKK3ZvaWQgUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5Ojpk
aWRSZWNlaXZlU3luY0NETVNlc3Npb25NZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
biwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYg
ZW5jb2RlcikKK3sKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG1fc2Vzc2lvbnMuZ2V0KG1ha2VP
YmplY3RJZGVudGlmaWVyPFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyVHlwZT4oZGVj
b2Rlci5kZXN0aW5hdGlvbklEKCkpKSkKKyAgICAgICAgc2Vzc2lvbi0+ZGlkUmVjZWl2ZVN5bmNN
ZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIGVuY29kZXIpOworfQorCit2b2lkIFJlbW90ZUxl
Z2FjeUNETUZhY3RvcnlQcm94eTo6YWRkUHJveHkoUmVtb3RlTGVnYWN5Q0RNSWRlbnRpZmllciBp
ZCwgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxlZ2FjeUNETVByb3h5PiYmIHByb3h5KQoreworICAg
IEFTU0VSVCghbV9wcm94aWVzLmNvbnRhaW5zKGlkKSk7CisgICAgbV9wcm94aWVzLnNldChpZCwg
V1RGTW92ZShwcm94eSkpOworfQorCit2b2lkIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eTo6
cmVtb3ZlUHJveHkoUmVtb3RlTGVnYWN5Q0RNSWRlbnRpZmllciBpZCkKK3sKKyAgICBBU1NFUlQo
bV9wcm94aWVzLmNvbnRhaW5zKGlkKSk7CisgICAgbV9wcm94aWVzLnJlbW92ZShpZCk7Cit9CisK
K3ZvaWQgUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5OjphZGRTZXNzaW9uKFJlbW90ZUxlZ2Fj
eUNETVNlc3Npb25JZGVudGlmaWVyIGlkLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGVnYWN5Q0RN
U2Vzc2lvblByb3h5PiYmIHNlc3Npb24pCit7CisgICAgQVNTRVJUKCFtX3Nlc3Npb25zLmNvbnRh
aW5zKGlkKSk7CisgICAgbV9zZXNzaW9ucy5zZXQoaWQsIFdURk1vdmUoc2Vzc2lvbikpOworfQor
Cit2b2lkIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eTo6cmVtb3ZlU2Vzc2lvbihSZW1vdGVM
ZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllciBpZCkKK3sKKyAgICBBU1NFUlQobV9zZXNzaW9ucy5j
b250YWlucyhpZCkpOworICAgIG1fc2Vzc2lvbnMucmVtb3ZlKGlkKTsKK30KKworUmVtb3RlTGVn
YWN5Q0RNU2Vzc2lvblByb3h5KiBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk6OmdldFNlc3Np
b24oY29uc3QgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXImIGlkKSBjb25zdAorewor
ICAgIGF1dG8gcmVzdWx0cyA9IG1fc2Vzc2lvbnMuZmluZChpZCk7CisgICAgaWYgKHJlc3VsdHMg
IT0gbV9zZXNzaW9ucy5lbmQoKSkKKyAgICAgICAgcmV0dXJuIHJlc3VsdHMtPnZhbHVlLmdldCgp
OworICAgIHJldHVybiBudWxscHRyOworfQorCisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9y
eVByb3h5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNTM1NTM4NDg4NjU5OTgxZDhmODgzYjRjYTFlY2NhYzIzNWEz
OWZlZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkuaApAQCAtMCwwICsxLDg0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShMRUdB
Q1lfRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUg
Ik1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJNZXNzYWdl
UmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVMZWdhY3lDRE1JZGVudGlmaWVyLmgiCisjaW5j
bHVkZSAiUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDx3dGYv
VW5pcXVlUmVmLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK2NsYXNzIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CitjbGFzcyBSZW1vdGVMZWdh
Y3lDRE1TZXNzaW9uUHJveHk7CitjbGFzcyBSZW1vdGVMZWdhY3lDRE1Qcm94eTsKK3N0cnVjdCBS
ZW1vdGVMZWdhY3lDRE1Db25maWd1cmF0aW9uOworCitjbGFzcyBSZW1vdGVMZWdhY3lDRE1GYWN0
b3J5UHJveHkgZmluYWwgOiBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyLCBwdWJsaWMgQ2Fu
TWFrZVdlYWtQdHI8UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5PiB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5
KEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmKTsKKyAgICB2aXJ0dWFsIH5SZW1vdGVMZWdhY3lD
RE1GYWN0b3J5UHJveHkoKTsKKworICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tV2ViUHJv
Y2VzcyhJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rlcikg
eyBkaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsgfQorICAgIHZvaWQgZGlk
UmVjZWl2ZVN5bmNNZXNzYWdlRnJvbVdlYlByb2Nlc3MoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+
JiBlbmNvZGVyKSB7IGRpZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCBl
bmNvZGVyKTsgfQorICAgIHZvaWQgZGlkUmVjZWl2ZUNETU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiwgSVBDOjpEZWNvZGVyJik7CisgICAgdm9pZCBkaWRSZWNlaXZlQ0RNU2Vzc2lvbk1lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CisgICAgdm9pZCBkaWRSZWNlaXZlU3lu
Y0NETU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVf
cHRyPElQQzo6RW5jb2Rlcj4mKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVTeW5jQ0RNU2Vzc2lvbk1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQ
Qzo6RW5jb2Rlcj4mKTsKKworICAgIHZvaWQgYWRkUHJveHkoUmVtb3RlTGVnYWN5Q0RNSWRlbnRp
Zmllciwgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxlZ2FjeUNETVByb3h5PiYmKTsKKyAgICB2b2lk
IHJlbW92ZVByb3h5KFJlbW90ZUxlZ2FjeUNETUlkZW50aWZpZXIpOworCisgICAgdm9pZCBhZGRT
ZXNzaW9uKFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8
UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5PiYmKTsKKyAgICB2b2lkIHJlbW92ZVNlc3Npb24o
UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXIpOworICAgIFJlbW90ZUxlZ2FjeUNETVNl
c3Npb25Qcm94eSogZ2V0U2Vzc2lvbihjb25zdCBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRp
ZmllciYpIGNvbnN0OworCisgICAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgZ3B1Q29ubmVj
dGlvblRvV2ViUHJvY2VzcygpIGNvbnN0IHsgcmV0dXJuIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJv
Y2VzczsgfQorCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBHUFVQcm9jZXNzQ29ubmVjdGlv
bjsKKyAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgorICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWwgeyB9CisgICAgdm9pZCBk
aWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3Rk
Ojp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBmaW5hbDsKKworICAgIC8vIE1lc3NhZ2VzCisg
ICAgdm9pZCBjcmVhdGVDRE0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIE9wdGlvbmFsPE1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXI+JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
UmVtb3RlTGVnYWN5Q0RNSWRlbnRpZmllciYmKT4mJik7CisgICAgdm9pZCBzdXBwb3J0c0tleVN5
c3RlbShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgT3B0aW9uYWw8U3RyaW5nPiBtaW1lVHlwZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisKKyAgICBHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzJiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CisgICAgSGFzaE1hcDxSZW1v
dGVMZWdhY3lDRE1JZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGVnYWN5Q0RNUHJv
eHk+PiBtX3Byb3hpZXM7CisgICAgSGFzaE1hcDxSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRp
Zmllciwgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eT4+IG1fc2Vz
c2lvbnM7Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHku
bWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDA3NDRmYmZkNGQwMmMxZjljM2Q3OWEwMGY1MDQ5Zjkx
NTNiN2Y0OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwzMSBA
QAorIyBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
IworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
IworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI2lmIEVOQUJMRShHUFVf
UFJPQ0VTUykgJiYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCisKK21lc3NhZ2VzIC0+
IFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eSBOb3RSZWZDb3VudGVkIHsKKyAgICBDcmVhdGVD
RE0oU3RyaW5nIGtleVN5c3RlbSwgT3B0aW9uYWw8V2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGVJZGVudGlmaWVyPiBwbGF5ZXJJZCkgLT4gKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNSWRl
bnRpZmllciBpZCkgU3luY2hyb25vdXMKKyAgICBTdXBwb3J0c0tleVN5c3RlbShTdHJpbmcga2V5
U3lzdGVtLCBPcHRpb25hbDxTdHJpbmc+IG1pbWVUeXBlKSAtPiAoYm9vbCByZXN1bHQpIFN5bmNo
cm9ub3VzCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmQxN2E4OTFhYWIx
MWVkZTZkYmVkN2MwZmQwMmQyODUyNzFlODM2MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5jcHAKQEAgLTAsMCAr
MSw5OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1v
dGVMZWdhY3lDRE1Qcm94eS5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUo
TEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuaCIKKyNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oIgorI2lu
Y2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyUHJveHkuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGVnYWN5
Q0RNUHJveHk+IFJlbW90ZUxlZ2FjeUNETVByb3h5OjpjcmVhdGUoV2Vha1B0cjxSZW1vdGVMZWdh
Y3lDRE1GYWN0b3J5UHJveHk+IGZhY3RvcnksIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50
aWZpZXImJiBwbGF5ZXJJZCwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkxlZ2FjeUNETT4mJiBj
ZG0pCit7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMZWdhY3lDRE1Qcm94eT4o
bmV3IFJlbW90ZUxlZ2FjeUNETVByb3h5KFdURk1vdmUoZmFjdG9yeSksIFdURk1vdmUocGxheWVy
SWQpLCBXVEZNb3ZlKGNkbSkpKTsKK30KKworUmVtb3RlTGVnYWN5Q0RNUHJveHk6OlJlbW90ZUxl
Z2FjeUNETVByb3h5KFdlYWtQdHI8UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5PiYmIGZhY3Rv
cnksIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXImJiBwbGF5ZXJJZCwgc3RkOjp1
bmlxdWVfcHRyPFdlYkNvcmU6OkxlZ2FjeUNETT4mJiBjZG0pCisgICAgOiBtX2ZhY3RvcnkoV1RG
TW92ZShmYWN0b3J5KSkKKyAgICAsIG1fcGxheWVySWQoV1RGTW92ZShwbGF5ZXJJZCkpCisgICAg
LCBtX2NkbShXVEZNb3ZlKGNkbSkpCit7CisgICAgbV9jZG0tPnNldENsaWVudCh0aGlzKTsKK30K
KworUmVtb3RlTGVnYWN5Q0RNUHJveHk6On5SZW1vdGVMZWdhY3lDRE1Qcm94eSgpID0gZGVmYXVs
dDsKKwordm9pZCBSZW1vdGVMZWdhY3lDRE1Qcm94eTo6c3VwcG9ydHNNSU1FVHlwZShjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBTdXBwb3J0c01JTUVUeXBlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sK
KyAgICBpZiAoIW1fY2RtKSB7CisgICAgICAgIGNhbGxiYWNrKGZhbHNlKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIGNhbGxiYWNrKG1fY2RtLT5zdXBwb3J0c01JTUVUeXBlKG1pbWVU
eXBlKSk7Cit9CisKK3ZvaWQgUmVtb3RlTGVnYWN5Q0RNUHJveHk6OmNyZWF0ZVNlc3Npb24oY29u
c3QgU3RyaW5nJiBrZXlTeXN0ZW0sIENyZWF0ZVNlc3Npb25DYWxsYmFjayYmIGNhbGxiYWNrKQor
eworICAgIGlmICghbV9jZG0gfHwgIW1fZmFjdG9yeSkgeworICAgICAgICBjYWxsYmFjayh7IH0p
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byBpZGVudGlmaWVyID0gUmVtb3Rl
TGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXI6OmdlbmVyYXRlKCk7CisgICAgYXV0byBzZXNzaW9u
ID0gUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpjcmVhdGUobWFrZVdlYWtQdHIobV9mYWN0
b3J5LmdldCgpKSwgaWRlbnRpZmllciwgKm1fY2RtKTsKKyAgICBtX2ZhY3RvcnktPmFkZFNlc3Np
b24oaWRlbnRpZmllciwgV1RGTW92ZShzZXNzaW9uKSk7CisgICAgY2FsbGJhY2soV1RGTW92ZShp
ZGVudGlmaWVyKSk7Cit9CisKK3ZvaWQgUmVtb3RlTGVnYWN5Q0RNUHJveHk6OnNldFBsYXllcklk
KE9wdGlvbmFsPE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXI+JiYgcGxheWVySWQp
Cit7CisgICAgaWYgKCFwbGF5ZXJJZCkKKyAgICAgICAgbV9wbGF5ZXJJZCA9IHsgfTsKKyAgICBt
X3BsYXllcklkID0gV1RGTW92ZSgqcGxheWVySWQpOworfQorCitSZWZQdHI8TWVkaWFQbGF5ZXI+
IFJlbW90ZUxlZ2FjeUNETVByb3h5OjpjZG1NZWRpYVBsYXllcihjb25zdCBMZWdhY3lDRE0qKSBj
b25zdAoreworICAgIGlmICghbV9wbGF5ZXJJZCB8fCAhbV9mYWN0b3J5KQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKworICAgIGF1dG8gcHJveHkgPSBtX2ZhY3RvcnktPmdwdUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MoKS5yZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSgpLmdldFByb3h5KG1f
cGxheWVySWQpOworICAgIGlmICghcHJveHkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisg
ICAgcmV0dXJuIHByb3h5LT5tZWRpYVBsYXllcigpOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHku
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yYjZkMTdhOWE0NTcxZTM0ODg0Y2ZmOGNhOWJlZWMzMzMxZjgyMDZlCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxl
Z2FjeUNETVByb3h5LmgKQEAgLTAsMCArMSw4MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9N
RURJQSkKKworI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIlJlbW90ZUxl
Z2FjeUNETUZhY3RvcnlQcm94eS5oIgorI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETUlkZW50aWZp
ZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0xlZ2FjeUNETS5oPgorI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRy
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKK30KKworbmFt
ZXNwYWNlIElQQyB7CitjbGFzcyBEYXRhUmVmZXJlbmNlOworfQorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworY2xhc3MgUmVtb3RlTGVnYWN5Q0RNUHJveHkKKyAgICA6IHByaXZhdGUgSVBDOjpNZXNz
YWdlUmVjZWl2ZXIKKyAgICAsIHB1YmxpYyBXZWJDb3JlOjpMZWdhY3lDRE1DbGllbnQKKyAgICAs
IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxSZW1vdGVMZWdhY3lDRE1Qcm94eT4geworcHVibGljOgor
ICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGVnYWN5Q0RNUHJveHk+IGNyZWF0ZShX
ZWFrUHRyPFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eT4sIE1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZUlkZW50aWZpZXImJiwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkxlZ2FjeUNETT4mJik7
CisgICAgflJlbW90ZUxlZ2FjeUNETVByb3h5KCk7CisKKyAgICBSZW1vdGVMZWdhY3lDRE1GYWN0
b3J5UHJveHkqIGZhY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2ZhY3RvcnkuZ2V0KCk7IH0KKwor
cHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5Owor
ICAgIFJlbW90ZUxlZ2FjeUNETVByb3h5KFdlYWtQdHI8UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVBy
b3h5PiYmLCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyJiYsIHN0ZDo6dW5pcXVl
X3B0cjxXZWJDb3JlOjpMZWdhY3lDRE0+JiYpOworCisgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2
ZXIKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVj
b2RlciYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JikgZmlu
YWw7CisKKyAgICAvLyBNZXNzYWdlcworICAgIHVzaW5nIFN1cHBvcnRzTUlNRVR5cGVDYWxsYmFj
ayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+OworICAgIHZvaWQgc3VwcG9ydHNNSU1F
VHlwZShjb25zdCBTdHJpbmcmLCBTdXBwb3J0c01JTUVUeXBlQ2FsbGJhY2smJik7CisgICAgdXNp
bmcgQ3JlYXRlU2Vzc2lvbkNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZW1vdGVM
ZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllciYmKT47CisgICAgdm9pZCBjcmVhdGVTZXNzaW9uKGNv
bnN0IFN0cmluZyYsIENyZWF0ZVNlc3Npb25DYWxsYmFjayYmKTsKKyAgICB2b2lkIHNldFBsYXll
cklkKE9wdGlvbmFsPE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXI+JiYpOworCisg
ICAgLy8gTGVnYWN5Q0RNQ2xpZW50CisgICAgUmVmUHRyPFdlYkNvcmU6Ok1lZGlhUGxheWVyPiBj
ZG1NZWRpYVBsYXllcihjb25zdCBXZWJDb3JlOjpMZWdhY3lDRE0qKSBjb25zdCBmaW5hbDsKKwor
ICAgIFdlYWtQdHI8UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5PiBtX2ZhY3Rvcnk7CisgICAg
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBtX3BsYXllcklkOworICAgIHN0ZDo6
dW5pcXVlX3B0cjxXZWJDb3JlOjpMZWdhY3lDRE0+IG1fY2RtOworfTsKKworfQorCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lD
RE1Qcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVMZWdhY3lDRE1Qcm94eS5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NzFiYThiZDg3ZTdkOTI3
MDdjYzA5ZDhmM2NjNDBkNmY0OGRmY2IzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0w
LDAgKzEsMzIgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
IyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQorCitt
ZXNzYWdlcyAtPiBSZW1vdGVMZWdhY3lDRE1Qcm94eSBOb3RSZWZDb3VudGVkIHsKKyAgICBTdXBw
b3J0c01JTUVUeXBlKFN0cmluZyBtaW1lVHlwZSkgLT4gKGJvb2wgc3VwcG9ydHMpIFN5bmNocm9u
b3VzCisgICAgQ3JlYXRlU2Vzc2lvbihTdHJpbmcgbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSkg
LT4gKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXIgaWQpIFN5bmNocm9u
b3VzCisgICAgU2V0UGxheWVySWQoT3B0aW9uYWw8V2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGVJZGVudGlmaWVyPiBwbGF5ZXJJZCkKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9u
UHJveHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBhMGUzM2ZjNmI0NDRkMzExZTY2MDJmOGE3NTVlMzM0MjAy
ZWMxNTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNwcApAQCAtMCwwICsxLDE0OCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVMZWdhY3lDRE1TZXNz
aW9uUHJveHkuaCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKExFR0FDWV9F
TkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgi
CisjaW5jbHVkZSAiUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5LmgiCisjaW5jbHVkZSAiUmVt
b3RlTGVnYWN5Q0RNU2Vzc2lvbk1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyRGF0
YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworc3RkOjp1bmlxdWVf
cHRyPFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eT4gUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblBy
b3h5OjpjcmVhdGUoV2Vha1B0cjxSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk+JiYgZmFjdG9y
eSwgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6
TGVnYWN5Q0RNJiBjZG0pCit7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMZWdh
Y3lDRE1TZXNzaW9uUHJveHk+KG5ldyBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkoV1RGTW92
ZShmYWN0b3J5KSwgaWRlbnRpZmllciwgY2RtKSk7Cit9CisKK1JlbW90ZUxlZ2FjeUNETVNlc3Np
b25Qcm94eTo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5KFdlYWtQdHI8UmVtb3RlTGVnYWN5
Q0RNRmFjdG9yeVByb3h5PiYmIGZhY3RvcnksIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlm
aWVyIGlkZW50aWZpZXIsIFdlYkNvcmU6OkxlZ2FjeUNETSYgY2RtKQorICAgIDogbV9mYWN0b3J5
KFdURk1vdmUoZmFjdG9yeSkpCisgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKKyAgICAs
IG1fc2Vzc2lvbihjZG0uY3JlYXRlU2Vzc2lvbigqdGhpcykpCit7Cit9CisKK1JlbW90ZUxlZ2Fj
eUNETVNlc3Npb25Qcm94eTo6flJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eSgpID0gZGVmYXVs
dDsKKworc3RhdGljIFJlZlB0cjxVaW50OEFycmF5PiBjb252ZXJ0VG9VaW50OEFycmF5KElQQzo6
U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYmIGJ1ZmZlcikKK3sKKyAgICBpZiAoIWJ1ZmZlci5i
dWZmZXIoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBzaXplX3Qgc2l6ZUluQnl0
ZXMgPSBidWZmZXIuc2l6ZSgpOworICAgIGF1dG8gYXJyYXlCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6
Y3JlYXRlKGJ1ZmZlci5kYXRhKCksIHNpemVJbkJ5dGVzKTsKKyAgICByZXR1cm4gVWludDhBcnJh
eTo6Y3JlYXRlKFdURk1vdmUoYXJyYXlCdWZmZXIpLCAwLCBzaXplSW5CeXRlcyk7Cit9CisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBUPgorc3RhdGljIE9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0
YVJlZmVyZW5jZT4gY29udmVydFRvT3B0aW9uYWxEYXRhUmVmZXJlbmNlKFQgYXJyYXkpCit7Cisg
ICAgaWYgKCFhcnJheSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4g
eyBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgoY29uc3QgY2hhciopYXJyYXktPmRhdGEoKSwgYXJyYXkt
PmJ5dGVMZW5ndGgoKSkgfTsKK30KKwordm9pZCBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6
OmdlbmVyYXRlS2V5UmVxdWVzdChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBJUEM6OlNoYXJlZEJ1
ZmZlckRhdGFSZWZlcmVuY2UmJiBpbml0RGF0YSwgR2VuZXJhdGVLZXlDYWxsYmFjayYmIGNvbXBs
ZXRpb24pCit7CisgICAgYXV0byBpbml0RGF0YUFycmF5ID0gY29udmVydFRvVWludDhBcnJheShX
VEZNb3ZlKGluaXREYXRhKSk7CisgICAgaWYgKCFpbml0RGF0YUFycmF5KSB7CisgICAgICAgIGNv
bXBsZXRpb24oeyB9LCBlbXB0eVN0cmluZygpLCAwLCAwKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIFN0cmluZyBkZXN0aW5hdGlvblVSTDsKKyAgICB1bnNpZ25lZCBzaG9ydCBlcnJv
ckNvZGUgeyAwIH07CisgICAgdWludDMyX3Qgc3lzdGVtQ29kZSB7IDAgfTsKKworICAgIGF1dG8g
a2V5UmVxdWVzdCA9IG1fc2Vzc2lvbi0+Z2VuZXJhdGVLZXlSZXF1ZXN0KG1pbWVUeXBlLCBpbml0
RGF0YUFycmF5LmdldCgpLCBkZXN0aW5hdGlvblVSTCwgZXJyb3JDb2RlLCBzeXN0ZW1Db2RlKTsK
KworICAgIGRlc3RpbmF0aW9uVVJMID0gInRoaXMgaXMgYSB0ZXN0IHN0cmluZyJfczsKKworICAg
IGNvbXBsZXRpb24oY29udmVydFRvT3B0aW9uYWxEYXRhUmVmZXJlbmNlKGtleVJlcXVlc3QpLCBk
ZXN0aW5hdGlvblVSTCwgZXJyb3JDb2RlLCBzeXN0ZW1Db2RlKTsKK30KKwordm9pZCBSZW1vdGVM
ZWdhY3lDRE1TZXNzaW9uUHJveHk6OnJlbGVhc2VLZXlzKCkKK3sKKyAgICBtX3Nlc3Npb24tPnJl
bGVhc2VLZXlzKCk7Cit9CisKK3ZvaWQgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5Ojp1cGRh
dGUoSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiYgdXBkYXRlLCBVcGRhdGVDYWxsYmFj
ayYmIGNvbXBsZXRpb24pCit7CisgICAgYXV0byB1cGRhdGVBcnJheSA9IGNvbnZlcnRUb1VpbnQ4
QXJyYXkoV1RGTW92ZSh1cGRhdGUpKTsKKyAgICBpZiAoIXVwZGF0ZUFycmF5KSB7CisgICAgICAg
IGNvbXBsZXRpb24oZmFsc2UsIFdURjo6bnVsbG9wdCwgMCwgMCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBSZWZQdHI8VWludDhBcnJheT4gbmV4dE1lc3NhZ2U7CisgICAgdW5zaWdu
ZWQgc2hvcnQgZXJyb3JDb2RlIHsgMCB9OworICAgIHVpbnQzMl90IHN5c3RlbUNvZGUgeyAwIH07
CisKKyAgICBib29sIHN1Y2NlZWRlZCA9IG1fc2Vzc2lvbi0+dXBkYXRlKHVwZGF0ZUFycmF5Lmdl
dCgpLCBuZXh0TWVzc2FnZSwgZXJyb3JDb2RlLCBzeXN0ZW1Db2RlKTsKKworICAgIGNvbXBsZXRp
b24oc3VjY2VlZGVkLCBjb252ZXJ0VG9PcHRpb25hbERhdGFSZWZlcmVuY2UobmV4dE1lc3NhZ2Up
LCBlcnJvckNvZGUsIHN5c3RlbUNvZGUpOworfQorCitSZWZQdHI8QXJyYXlCdWZmZXI+IFJlbW90
ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6Z2V0Q2FjaGVkS2V5Rm9yS2V5SWQoY29uc3QgU3RyaW5n
JiBrZXlJZCkKK3sKKyAgICByZXR1cm4gbV9zZXNzaW9uLT5jYWNoZWRLZXlGb3JLZXlJRChrZXlJ
ZCk7Cit9CisKK3ZvaWQgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpjYWNoZWRLZXlGb3JL
ZXlJRChTdHJpbmcga2V5SWQsIENhY2hlZEtleUZvcktleUlEQ2FsbGJhY2smJiBjb21wbGV0aW9u
KQoreworICAgIGNvbXBsZXRpb24oY29udmVydFRvT3B0aW9uYWxEYXRhUmVmZXJlbmNlKGdldENh
Y2hlZEtleUZvcktleUlkKGtleUlkKSkpOworfQorCit2b2lkIFJlbW90ZUxlZ2FjeUNETVNlc3Np
b25Qcm94eTo6c2VuZE1lc3NhZ2UoVWludDhBcnJheSogbWVzc2FnZSwgU3RyaW5nIGRlc3RpbmF0
aW9uVVJMKQoreworICAgIGlmICghbV9mYWN0b3J5KQorICAgICAgICByZXR1cm47CisKKyAgICBt
X2ZhY3RvcnktPmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKS5jb25uZWN0aW9uKCkuc2VuZChN
ZXNzYWdlczo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbjo6U2VuZE1lc3NhZ2UoY29udmVydFRvT3B0
aW9uYWxEYXRhUmVmZXJlbmNlKG1lc3NhZ2UpLCBkZXN0aW5hdGlvblVSTCksIG1faWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpzZW5kRXJyb3IoTWVk
aWFLZXlFcnJvckNvZGUgZXJyb3JDb2RlLCB1aW50MzJfdCBzeXN0ZW1Db2RlKQoreworICAgIGlm
IChtX2ZhY3RvcnkpCisgICAgICAgIG1fZmFjdG9yeS0+Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vz
cygpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uOjpT
ZW5kRXJyb3IoZXJyb3JDb2RlLCBzeXN0ZW1Db2RlKSwgbV9pZGVudGlmaWVyKTsKK30KKworU3Ry
aW5nIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6bWVkaWFLZXlzU3RvcmFnZURpcmVjdG9y
eSgpIGNvbnN0Cit7CisgICAgaWYgKG1fZmFjdG9yeSkKKyAgICAgICAgcmV0dXJuIG1fZmFjdG9y
eS0+Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpLm1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rvcnko
KTsKKyAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKK30KKworCit9CisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Np
b25Qcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNE
TVNlc3Npb25Qcm94eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE5M2VjODIxOGQ1MDdjZTRmZjlkMDk0ZGI0YjAy
ZjI2N2MzNzExZjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmgKQEAgLTAsMCArMSw5NyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisj
aW5jbHVkZSAiUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5LmgiCisjaW5jbHVkZSAiUmVtb3Rl
TGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0xlZ2FjeUNE
TVNlc3Npb24uaD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9Vbmlx
dWVSZWYuaD4KKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKExFR0FDWV9FTkNS
WVBURURfTUVESUEpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIExlZ2FjeUNETTsKK2Ns
YXNzIExlZ2FjeUNETVNlc3Npb247CitjbGFzcyBTaGFyZWRCdWZmZXI7Cit9CisKK25hbWVzcGFj
ZSBJUEMgeworY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZTsKK30KKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK2NsYXNzIFJlbW90ZUxlZ2FjeUNETVByb3h5OworY2xhc3MgUmVtb3RlTWVk
aWFQbGF5ZXJQcm94eTsKKworY2xhc3MgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5CisgICAg
OiBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyCisgICAgLCBwdWJsaWMgV2ViQ29yZTo6TGVn
YWN5Q0RNU2Vzc2lvbkNsaWVudAorICAgICwgcHVibGljIENhbk1ha2VXZWFrUHRyPFJlbW90ZUxl
Z2FjeUNETVNlc3Npb25Qcm94eT4geworcHVibGljOgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5PiBjcmVhdGUoV2Vha1B0cjxSZW1vdGVMZWdh
Y3lDRE1GYWN0b3J5UHJveHk+JiYsIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyLCBX
ZWJDb3JlOjpMZWdhY3lDRE0mKTsKKyAgICB+UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5KCk7
CisKKyAgICBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkqIGZhY3RvcnkoKSBjb25zdCB7IHJl
dHVybiBtX2ZhY3RvcnkuZ2V0KCk7IH0KKyAgICBXZWJDb3JlOjpMZWdhY3lDRE1TZXNzaW9uKiBz
ZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9uLmdldCgpOyB9CisKKyAgICB2b2lkIHNl
dFBsYXllcihXZWFrUHRyPFJlbW90ZU1lZGlhUGxheWVyUHJveHk+IHBsYXllcikgeyBtX3BsYXll
ciA9IFdURk1vdmUocGxheWVyKTsgfQorCisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBnZXRDYWNo
ZWRLZXlGb3JLZXlJZChjb25zdCBTdHJpbmcmKTsKKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xh
c3MgUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5OworICAgIFJlbW90ZUxlZ2FjeUNETVNlc3Np
b25Qcm94eShXZWFrUHRyPFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eT4mJiwgUmVtb3RlTGVn
YWN5Q0RNU2Vzc2lvbklkZW50aWZpZXIsIFdlYkNvcmU6OkxlZ2FjeUNETSYpOworCisgICAgLy8g
SVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJ
UEM6OkVuY29kZXI+JikgZmluYWw7CisKKyAgICAvLyBMZWdhY3lDRE1TZXNzaW9uQ2xpZW50Cisg
ICAgdm9pZCBzZW5kTWVzc2FnZShVaW50OEFycmF5KiwgU3RyaW5nIGRlc3RpbmF0aW9uVVJMKSBm
aW5hbDsKKyAgICB2b2lkIHNlbmRFcnJvcihNZWRpYUtleUVycm9yQ29kZSwgdWludDMyX3Qgc3lz
dGVtQ29kZSkgZmluYWw7CisgICAgU3RyaW5nIG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSBj
b25zdCBmaW5hbDsKKworICAgIC8vIE1lc3NhZ2VzCisgICAgdXNpbmcgR2VuZXJhdGVLZXlDYWxs
YmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJE
YXRhUmVmZXJlbmNlPiYmLCBjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCBzaG9ydCwgdWludDMyX3Qp
PjsKKyAgICB2b2lkIGdlbmVyYXRlS2V5UmVxdWVzdChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBJ
UEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmJiBpbml0RGF0YSwgR2VuZXJhdGVLZXlDYWxs
YmFjayYmKTsKKyAgICB2b2lkIHJlbGVhc2VLZXlzKCk7CisgICAgdXNpbmcgVXBkYXRlQ2FsbGJh
Y2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wsIE9wdGlvbmFsPElQQzo6U2hhcmVkQnVm
ZmVyRGF0YVJlZmVyZW5jZT4mJiwgdW5zaWduZWQgc2hvcnQsIHVpbnQzMl90KT47CisgICAgdm9p
ZCB1cGRhdGUoSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiYgdXBkYXRlLCBVcGRhdGVD
YWxsYmFjayYmKTsKKyAgICB1c2luZyBDYWNoZWRLZXlGb3JLZXlJRENhbGxiYWNrID0gQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U+
JiYpPjsKKyAgICB2b2lkIGNhY2hlZEtleUZvcktleUlEKFN0cmluZyBrZXlJZCwgQ2FjaGVkS2V5
Rm9yS2V5SURDYWxsYmFjayYmKTsKKworICAgIFdlYWtQdHI8UmVtb3RlTGVnYWN5Q0RNRmFjdG9y
eVByb3h5PiBtX2ZhY3Rvcnk7CisgICAgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXIg
bV9pZGVudGlmaWVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpMZWdhY3lDRE1TZXNz
aW9uPiBtX3Nlc3Npb247CisgICAgV2Vha1B0cjxSZW1vdGVNZWRpYVBsYXllclByb3h5PiBtX3Bs
YXllcjsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5t
ZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNDk2MmNlOTFkZjU1OTVmYzdhY2UyYzA1MDc3YjA1MWVh
MGRlMzcwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDMzIEBA
CisjIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisj
CisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisj
CisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaWYgRU5BQkxFKEdQVV9Q
Uk9DRVNTKSAmJiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKKworbWVzc2FnZXMgLT4g
UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5IE5vdFJlZkNvdW50ZWQgeworICAgIEdlbmVyYXRl
S2V5UmVxdWVzdChTdHJpbmcgbWltZVR5cGUsIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5j
ZSBpbml0RGF0YSkgLT4gKE9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZT4g
bmV4dE1lc3NhZ2UsIFN0cmluZyBkZXN0aW5hdGlvblVSTCwgdW5zaWduZWQgc2hvcnQgZXJyb3JD
b2RlLCB1aW50MzJfdCBzeXN0ZW1Db2RlKSBTeW5jaHJvbm91cworICAgIFJlbGVhc2VLZXlzKCkK
KyAgICBVcGRhdGUoSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIHVwZGF0ZSkgLT4gKGJv
b2wgc3VjY2VlZGVkLCBPcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U+IG5l
eHRNZXNzYWdlLCB1bnNpZ25lZCBzaG9ydCBlcnJvckNvZGUsIHVpbnQzMl90IHN5c3RlbUNvZGUp
IFN5bmNocm9ub3VzCisgICAgQ2FjaGVkS2V5Rm9yS2V5SUQoU3RyaW5nIGtleUlkKSAtPiAoT3B0
aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlPiBrZXkpIFN5bmNocm9ub3VzCit9
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHAKaW5kZXggOTE0ODkwZmY2
NGJhMzIzNThmNmQwYmJiYzY1ZGU1NGM1MGFmY2E2Ni4uMzFhMWY1ZDhkYzExODZhMWQxOWEwM2Fj
OTE0ZDg5MDMxNmFmN2IwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3BwCkBAIC0y
MTYsNiArMjE2LDE0IEBAIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OmRpZFJl
Y2VpdmVQbGF5ZXJNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29uCiAgICAgICAgIHBsYXllci0+
ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CiB9CiAKK1JlbW90ZU1lZGlh
UGxheWVyUHJveHkqIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpnZXRQcm94eShjb25z
dCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyJiBpZCkKK3sKKyAgICBhdXRvIHJl
c3VsdHMgPSBtX3Byb3hpZXMuZmluZChpZCk7CisgICAgaWYgKHJlc3VsdHMgIT0gbV9wcm94aWVz
LmVuZCgpKQorICAgICAgICByZXR1cm4gcmVzdWx0cy0+dmFsdWUuZ2V0KCk7CisgICAgcmV0dXJu
IG51bGxwdHI7Cit9CisKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKIGNvbnN0IExvZ2dlciYg
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OmxvZ2dlcigpIGNvbnN0CiB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBs
YXllck1hbmFnZXJQcm94eS5oCmluZGV4IDI5ZGRjMjA0NTAyNTdiNDZkOTE2MDMxMGQ2ODM2NTQ4
ZWNiZjE4YjEuLmZmYWU2NWRhNGU1ZGE0ZDQ3Zjg3ZjYyOWNkN2U4NjRhNjdkMDhiODMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1h
bmFnZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXJQcm94eS5oCkBAIC02Nyw2ICs2Nyw4IEBAIHB1YmxpYzoKICAgICBX
VEZMb2dDaGFubmVsJiBsb2dDaGFubmVsKCkgY29uc3QgZmluYWw7CiAjZW5kaWYKIAorICAgIFJl
bW90ZU1lZGlhUGxheWVyUHJveHkqIGdldFByb3h5KGNvbnN0IE1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZUlkZW50aWZpZXImKTsKKwogcHJpdmF0ZToKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZl
cgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAKaW5kZXggNjUwMmQyZGVmY2VhZDk3MjljZjI1
MDdhOTJkODEyZWFiZGI5ZjI0YS4uN2U2ZDMxZjc5ZjJiNmUxYzVmYmYxOTkzNTdkY2EyODQ0N2M3
OTk2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1l
ZGlhUGxheWVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcApAQCAtNDkzLDE1ICs0OTMsMTkgQEAgdm9pZCBSZW1v
dGVNZWRpYVBsYXllclByb3h5OjptZWRpYVBsYXllckFjdGl2ZVNvdXJjZUJ1ZmZlcnNDaGFuZ2Vk
KCkKIH0KIAogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQotUmVmUHRyPEFycmF5
QnVmZmVyPiBSZW1vdGVNZWRpYVBsYXllclByb3h5OjptZWRpYVBsYXllckNhY2hlZEtleUZvcktl
eUlkKGNvbnN0IFN0cmluZyYpIGNvbnN0CitSZWZQdHI8QXJyYXlCdWZmZXI+IFJlbW90ZU1lZGlh
UGxheWVyUHJveHk6Om1lZGlhUGxheWVyQ2FjaGVkS2V5Rm9yS2V5SWQoY29uc3QgU3RyaW5nJiBr
ZXlJZCkgY29uc3QKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGlmIChhdXRvIGNkbVNl
c3Npb24gPSBtX21hbmFnZXIuZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpLmxlZ2FjeUNkbUZh
Y3RvcnlQcm94eSgpLmdldFNlc3Npb24obV9sZWdhY3lTZXNzaW9uKSkKKyAgICAgICAgcmV0dXJu
IGNkbVNlc3Npb24tPmdldENhY2hlZEtleUZvcktleUlkKGtleUlkKTsKICAgICByZXR1cm4gbnVs
bHB0cjsKIH0KIAotdm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjptZWRpYVBsYXllcktleU5l
ZWRlZChVaW50OEFycmF5KikKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5
ZXJLZXlOZWVkZWQoVWludDhBcnJheSogbWVzc2FnZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIElQQzo6RGF0YVJlZmVyZW5jZSBtZXNzYWdlUmVmZXJlbmNlOworICAgIGlmIChtZXNz
YWdlKQorICAgICAgICBtZXNzYWdlUmVmZXJlbmNlID0geyBtZXNzYWdlLT5kYXRhKCksIG1lc3Nh
Z2UtPmJ5dGVMZW5ndGgoKSB9OworICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb24tPnNlbmQoTWVz
c2FnZXM6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6TWVkaWFQbGF5ZXJLZXlOZWVkZWQoV1RG
TW92ZShtZXNzYWdlUmVmZXJlbmNlKSksIG1faWQpOwogfQogI2VuZGlmCiAKQEAgLTY4NCw2ICs2
ODgsMjggQEAgdm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjpzZW5kQ2FjaGVkU3RhdGUoKQog
fQogCiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCit2b2lkIFJlbW90ZU1lZGlh
UGxheWVyUHJveHk6OnNldExlZ2FjeUNETVNlc3Npb24oUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklk
ZW50aWZpZXImJiBpbnN0YW5jZUlkKQoreworICAgIGlmIChtX2xlZ2FjeVNlc3Npb24gPT0gaW5z
dGFuY2VJZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fbGVnYWN5U2Vzc2lvbikgewor
ICAgICAgICBpZiAoYXV0byBjZG1TZXNzaW9uID0gbV9tYW5hZ2VyLmdwdUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MoKS5sZWdhY3lDZG1GYWN0b3J5UHJveHkoKS5nZXRTZXNzaW9uKG1fbGVnYWN5U2Vz
c2lvbikpIHsKKyAgICAgICAgICAgIG1fcGxheWVyLT5zZXRDRE1TZXNzaW9uKG51bGxwdHIpOwor
ICAgICAgICAgICAgY2RtU2Vzc2lvbi0+c2V0UGxheWVyKG51bGxwdHIpOworICAgICAgICB9Cisg
ICAgfQorCisgICAgbV9sZWdhY3lTZXNzaW9uID0gaW5zdGFuY2VJZDsKKworICAgIGlmIChtX2xl
Z2FjeVNlc3Npb24pIHsKKyAgICAgICAgaWYgKGF1dG8gY2RtU2Vzc2lvbiA9IG1fbWFuYWdlci5n
cHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkubGVnYWN5Q2RtRmFjdG9yeVByb3h5KCkuZ2V0U2Vz
c2lvbihtX2xlZ2FjeVNlc3Npb24pKSB7CisgICAgICAgICAgICBtX3BsYXllci0+c2V0Q0RNU2Vz
c2lvbihjZG1TZXNzaW9uLT5zZXNzaW9uKCkpOworICAgICAgICAgICAgY2RtU2Vzc2lvbi0+c2V0
UGxheWVyKG1ha2VXZWFrUHRyKHRoaXMpKTsKKyAgICAgICAgfQorICAgIH0KK30KKwogdm9pZCBS
ZW1vdGVNZWRpYVBsYXllclByb3h5OjprZXlBZGRlZCgpCiB7CiAgICAgbV9wbGF5ZXItPmtleUFk
ZGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
TWVkaWFQbGF5ZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZU1lZGlhUGxheWVyUHJveHkuaAppbmRleCBmMGIzNDNmNWM4NGYzYWU3ZGNlOTUwZThkMWQzNWQw
NWU3YTg1ZTU5Li4wMTljMDI2YTFjMmIzMmNmMjY5MjlmMmZlZTk1Njk1ZTU2ZWE0NTY2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBs
YXllclByb3h5LmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAj
aW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllci5oIgogI2luY2x1ZGUg
Ik1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVu
dGlmaWVyLmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJDb25maWd1cmF0aW9uLmgiCiAj
aW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJQcm94eUNvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRl
ICJSZW1vdGVNZWRpYVBsYXllclN0YXRlLmgiCkBAIC0xNDIsNiArMTQzLDcgQEAgcHVibGljOgog
I2VuZGlmCiAKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKKyAgICB2b2lkIHNl
dExlZ2FjeUNETVNlc3Npb24oUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXImJiBpbnN0
YW5jZUlkKTsKICAgICB2b2lkIGtleUFkZGVkKCk7CiAjZW5kaWYKIApAQCAtMTY2LDYgKzE2OCw4
IEBAIHB1YmxpYzoKICAgICBSZWY8V2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlPiByZXF1
ZXN0UmVzb3VyY2UoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlBsYXRmb3Jt
TWVkaWFSZXNvdXJjZUxvYWRlcjo6TG9hZE9wdGlvbnMpOwogICAgIHZvaWQgcmVtb3ZlUmVzb3Vy
Y2UoUmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIpOwogCisgICAgUmVmUHRyPFdlYkNvcmU6
Ok1lZGlhUGxheWVyPiBtZWRpYVBsYXllcigpIHsgcmV0dXJuIG1fcGxheWVyOyB9CisKIHByaXZh
dGU6CiAgICAgLy8gTWVkaWFQbGF5ZXJDbGllbnQKICAgICB2b2lkIG1lZGlhUGxheWVyTmV0d29y
a1N0YXRlQ2hhbmdlZCgpIGZpbmFsOwpAQCAtMjg0LDYgKzI4OCw3IEBAIHByaXZhdGU6CiAKICNp
ZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJ
QSkKICAgICBib29sIG1fc2hvdWxkQ29udGludWVBZnRlcktleU5lZWRlZCB7IGZhbHNlIH07Cisg
ICAgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXIgbV9sZWdhY3lTZXNzaW9uOwogI2Vu
ZGlmCiAKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Lm1lc3NhZ2VzLmluIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkubWVz
c2FnZXMuaW4KaW5kZXggNDI1ZGEyMzJmODM2ZTg3ZTgyNTZjMzgzNTU2NGVhZWExNjM0ZWNiMS4u
ODIzYjZhNGVkNTg3ZWY2OTMyMTVhNzkxNDY3MjQzYjJjZjg4ZTRiZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkubWVzc2Fn
ZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxh
eWVyUHJveHkubWVzc2FnZXMuaW4KQEAgLTgwLDcgKzgwLDcgQEAgbWVzc2FnZXMgLT4gUmVtb3Rl
TWVkaWFQbGF5ZXJQcm94eSBOb3RSZWZDb3VudGVkIHsKICNlbmRpZgogCiAjaWYgRU5BQkxFKExF
R0FDWV9FTkNSWVBURURfTUVESUEpCi0gICAgIyBTZXRDRE1TZXNzaW9uCisgICAgU2V0TGVnYWN5
Q0RNU2Vzc2lvbihXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyIGluc3Rh
bmNlSWQpCiAgICAgS2V5QWRkZWQoKQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVUZXh0VHJhY2tQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVGV4dFRyYWNrUHJveHkuY3BwCmluZGV4IGFmNjRj
ODJiOTAyM2FkMjM0MTQyM2NmODVkYjQ5NWE3NmM0YzZiNGEuLjYwZmE2YzgxMWJmZDA3NjJiYmVj
ZDFlMTgwY2MwY2E1MjI2YjI0ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVUZXh0VHJhY2tQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZVRleHRUcmFja1Byb3h5LmNwcApAQCAtMjksMTUgKzI5LDE5IEBA
CiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgi
CiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlTWVzc2FnZXMuaCIKICNpbmNsdWRl
ICJSZW1vdGVNZWRpYVBsYXllclByb3h5LmgiCiAjaW5jbHVkZSAiVGV4dFRyYWNrUHJpdmF0ZVJl
bW90ZUNvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJUZXh0VHJhY2tQcml2YXRlUmVtb3RlTWVz
c2FnZXMuaCIKKyNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlIDxX
ZWJDb3JlL0lTT1ZUVEN1ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4K
IAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCiBSZW1v
dGVUZXh0VHJhY2tQcm94eTo6UmVtb3RlVGV4dFRyYWNrUHJveHkoUmVtb3RlTWVkaWFQbGF5ZXJQ
cm94eSYgcGxheWVyLCBUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkLCBSZWY8SVBDOjpD
b25uZWN0aW9uPiYmIGNvbm5lY3Rpb24sIEluYmFuZFRleHRUcmFja1ByaXZhdGUmIHRyYWNrUHJp
dmF0ZSkKICAgICA6IG1fcGxheWVyKHBsYXllcikKICAgICAsIG1faWRlbnRpZmllcihpZCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVUZXh0VHJhY2tQ
cm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVRleHRUcmFja1By
b3h5LmgKaW5kZXggMGJlMTU0NTFkOWFiODQ5YjlhYTQ5YjU0YzMxNTk0NGNkNmY4ZjcxYi4uNDU1
NTBiZjk1MzhkMzBiZTk2ZWNjYTM0YzlhMDEyZWM1ZDE4YzBmOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVRleHRUcmFja1Byb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVRleHRUcmFja1Byb3h5LmgKQEAgLTMy
LDE1ICszMiwyMiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvVHJhY2tCYXNlLmg+CiAKK25hbWVzcGFjZSBJUEMgeworCitj
bGFzcyBDb25uZWN0aW9uOworCit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCitjbGFzcyBSZW1v
dGVNZWRpYVBsYXllclByb3h5Owogc3RydWN0IFRleHRUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1
cmF0aW9uOwogCiBjbGFzcyBSZW1vdGVUZXh0VHJhY2tQcm94eSBmaW5hbAogICAgIDogcHVibGlj
IFRocmVhZFNhZmVSZWZDb3VudGVkPFJlbW90ZVRleHRUcmFja1Byb3h5LCBXVEY6OkRlc3RydWN0
aW9uVGhyZWFkOjpNYWluPgogICAgICwgcHJpdmF0ZSBXZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2tQ
cml2YXRlQ2xpZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFJlbW90ZVRleHRUcmFja1By
b3h5PiBjcmVhdGUoUmVtb3RlTWVkaWFQbGF5ZXJQcm94eSYgcGxheWVyLCBUcmFja1ByaXZhdGVS
ZW1vdGVJZGVudGlmaWVyIGlkLCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24sIElu
YmFuZFRleHRUcmFja1ByaXZhdGUmIHRyYWNrUHJpdmF0ZSkKKyAgICBzdGF0aWMgUmVmPFJlbW90
ZVRleHRUcmFja1Byb3h5PiBjcmVhdGUoUmVtb3RlTWVkaWFQbGF5ZXJQcm94eSYgcGxheWVyLCBU
cmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkLCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNv
bm5lY3Rpb24sIFdlYkNvcmU6OkluYmFuZFRleHRUcmFja1ByaXZhdGUmIHRyYWNrUHJpdmF0ZSkK
ICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVRleHRUcmFja1Byb3h5
KHBsYXllciwgaWQsIFdURk1vdmUoY29ubmVjdGlvbiksIHRyYWNrUHJpdmF0ZSkpOwogICAgIH0K
QEAgLTUwLDE1ICs1NywxNSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRNb2RlKFdlYkNvcmU6Oklu
YmFuZFRleHRUcmFja1ByaXZhdGU6Ok1vZGUgbW9kZSkgeyBtX3RyYWNrUHJpdmF0ZS0+c2V0TW9k
ZShtb2RlKTsgfQogCiBwcml2YXRlOgotICAgIFJlbW90ZVRleHRUcmFja1Byb3h5KFJlbW90ZU1l
ZGlhUGxheWVyUHJveHkmLCBUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyLCBSZWY8SVBDOjpD
b25uZWN0aW9uPiYmLCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlJik7CisgICAgUmVtb3RlVGV4dFRy
YWNrUHJveHkoUmVtb3RlTWVkaWFQbGF5ZXJQcm94eSYsIFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50
aWZpZXIsIFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYsIFdlYkNvcmU6OkluYmFuZFRleHRUcmFja1By
aXZhdGUmKTsKIAogICAgIC8vIEluYmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQKICAgICB2aXJ0
dWFsIHZvaWQgYWRkRGF0YUN1ZShjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRp
bWUmIGVuZCwgY29uc3Qgdm9pZCosIHVuc2lnbmVkKTsKIAogI2lmIEVOQUJMRShEQVRBQ1VFX1ZB
TFVFKQotICAgIHZpcnR1YWwgdm9pZCBhZGREYXRhQ3VlKGNvbnN0IE1lZGlhVGltZSYgc3RhcnQs
IGNvbnN0IE1lZGlhVGltZSYgZW5kLCBSZWY8U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZT4mJiwg
Y29uc3QgU3RyaW5nJik7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZURhdGFDdWUoY29uc3QgTWVk
aWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1lJiBlbmQsIFNlcmlhbGl6ZWRQbGF0Zm9ybURh
dGFDdWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRGF0YUN1ZShjb25zdCBNZWRpYVRpbWUm
IHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCwgU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZSYp
OworICAgIHZpcnR1YWwgdm9pZCBhZGREYXRhQ3VlKGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNv
bnN0IE1lZGlhVGltZSYgZW5kLCBSZWY8V2ViQ29yZTo6U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1
ZT4mJiwgY29uc3QgU3RyaW5nJik7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZURhdGFDdWUoY29u
c3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1lJiBlbmQsIFdlYkNvcmU6OlNlcmlh
bGl6ZWRQbGF0Zm9ybURhdGFDdWUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRGF0YUN1ZShj
b25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCwgV2ViQ29yZTo6U2Vy
aWFsaXplZFBsYXRmb3JtRGF0YUN1ZSYpOwogI2VuZGlmCiAKICAgICB2aXJ0dWFsIHZvaWQgYWRk
R2VuZXJpY0N1ZShJbmJhbmRHZW5lcmljQ3VlJik7CkBAIC02Nyw3ICs3NCw3IEBAIHByaXZhdGU6
CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VXZWJWVFRGaWxlSGVhZGVyKFN0cmluZyYmKTsKICAg
ICB2aXJ0dWFsIHZvaWQgcGFyc2VXZWJWVFRDdWVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHVuc2ln
bmVkIGxlbmd0aCk7Ci0gICAgdmlydHVhbCB2b2lkIHBhcnNlV2ViVlRUQ3VlRGF0YShJU09XZWJW
VFRDdWUmJik7CisgICAgdmlydHVhbCB2b2lkIHBhcnNlV2ViVlRUQ3VlRGF0YShXZWJDb3JlOjpJ
U09XZWJWVFRDdWUmJik7CiAKICAgICAvLyBUcmFja1ByaXZhdGVCYXNlQ2xpZW50CiAgICAgdm9p
ZCBpZENoYW5nZWQoY29uc3QgQXRvbVN0cmluZyYpIGZpbmFsOwpAQCAtODEsNyArODgsNyBAQCBw
cml2YXRlOgogICAgIFJlbW90ZU1lZGlhUGxheWVyUHJveHkmIG1fcGxheWVyOwogICAgIFRyYWNr
UHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogICAgIFJlZjxJUEM6OkNvbm5l
Y3Rpb24+IG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb247Ci0gICAgUmVmPEluYmFuZFRleHRUcmFja1By
aXZhdGU+IG1fdHJhY2tQcml2YXRlOworICAgIFJlZjxXZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2tQ
cml2YXRlPiBtX3RyYWNrUHJpdmF0ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggMjVmMDg5MGU3MTVlMmU3
ZmFiNmU3Njg4ZmEyODYwN2M4YWY5MDljYS4uYzRiYWZlM2U3MTUxMjc5NjlkY2IzNjI5YWJjMGU2
NWJjMjg0Yzg3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNz
YWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBA
IC0yMzUsNiArMjM1LDggQEAgZGVmIHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFy
ZWQoKToKICAgICAgICAgJ1dlYktpdDo6UmVtb3RlQ0RNSWRlbnRpZmllcicsCiAgICAgICAgICdX
ZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6OlJl
bW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXInLAorICAgICAgICAnV2ViS2l0OjpSZW1v
dGVMZWdhY3lDRE1JZGVudGlmaWVyJywKKyAgICAgICAgJ1dlYktpdDo6UmVtb3RlTGVnYWN5Q0RN
U2Vzc2lvbklkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpSZW1vdGVNZWRpYVJlc291cmNl
SWRlbnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6OlJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVy
JywKICAgICAgICAgJ1dlYktpdDo6UlRDRGVjb2RlcklkZW50aWZpZXInLApAQCAtNTgxLDYgKzU4
Myw3IEBAIGRlZiBoZWFkZXJzX2Zvcl90eXBlKHR5cGUpOgogICAgICAgICAnV2ViQ29yZTo6SW5w
dXRNb2RlJzogWyc8V2ViQ29yZS9JbnB1dE1vZGUuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6Oktl
eWZyYW1lVmFsdWVMaXN0JzogWyc8V2ViQ29yZS9HcmFwaGljc0xheWVyLmg+J10sCiAgICAgICAg
ICdXZWJDb3JlOjpLZXlwcmVzc0NvbW1hbmQnOiBbJzxXZWJDb3JlL0tleWJvYXJkRXZlbnQuaD4n
XSwKKyAgICAgICAgJ1dlYkNvcmU6OkxlZ2FjeUNETVNlc3Npb25DbGllbnQ6Ok1lZGlhS2V5RXJy
b3JDb2RlJzogWyc8V2ViQ29yZS9MZWdhY3lDRE1TZXNzaW9uLmg+J10sCiAgICAgICAgICdXZWJD
b3JlOjpMb2NrQmFja0ZvcndhcmRMaXN0JzogWyc8V2ViQ29yZS9GcmFtZUxvYWRlclR5cGVzLmg+
J10sCiAgICAgICAgICdXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6SGFzQWN0
aXZpdHknOiBbJzxXZWJDb3JlL01lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmg+J10sCiAgICAg
ICAgICdXZWJDb3JlOjpOZXR3b3JrVHJhbnNhY3Rpb25JbmZvcm1hdGlvbic6IFsnPFdlYkNvcmUv
TmV0d29ya0xvYWRJbmZvcm1hdGlvbi5oPiddLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
b3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKaW5kZXggMDQ4ZjZhOGYyNzg0
MTA1NjhmZTMwNzBhMTlkZGJkYzIzYzNmZTRiYi4uNjhlN2E3YmFlYWE2NDRhYjI4MmNlNmY0MmVj
MjdiMzI1MTNlOTMzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC0zMCw2ICszMCw5IEBAIEdQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5LmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVD
RE1JbnN0YW5jZVByb3h5LmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb25Qcm94eS5jcHAKIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuY3BwCitHUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5jcHAKK0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuY3BwCitHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxl
Z2FjeUNETVNlc3Npb25Qcm94eS5jcHAKIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyUHJveHkuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJv
eHkuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuY3BwCkBAIC01NDgs
NiArNTUxLDkgQEAgV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmNwcAogV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeS5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUNETUluc3RhbmNlLmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uLmNwcAorV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNLmNwcAor
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeS5jcHAKK1dlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24uY3BwCiBXZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuY3BwCiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVNZWRpYVBsYXllck1JTUVUeXBlQ2FjaGUuY3BwIEBuby11bmlmeQogV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5LmNwcApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNmQxYTk2MjM5ZTg4NmM2OWM2
YzY2NzljZGFiZDc4Nzc4YWVlNzJkZi4uYjE0YzBjYTgzYzcwNjMxOGNjZWNkNjg5MTdmZjMzY2Y2
YmI1Mzg0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0xNzQ1LDYgKzE3NDUsMTAgQEAKIAkJQ0RBQzIwRkEyM0ZDNzI2QzAwMjFERUUz
IC8qIFJlbW90ZUNETVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQUMyMEVGMjNGQzM4MzkwMDIxREVFMyAvKiBS
ZW1vdGVDRE1Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCUNEQzI4MzFEMjAxQkQ3
OUQwMEU2RTc0NSAvKiBXS0Z1bGxzY3JlZW5TdGFja1ZpZXcuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQzI4MzFCMjAxQkQ3OUQwMEU2RTc0NSAvKiBX
S0Z1bGxzY3JlZW5TdGFja1ZpZXcuaCAqLzsgfTsKIAkJQ0RDQTg1QzkxMzJBQkE0RTAwRTk2MURG
IC8qIFdLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQ0E4NUM3MTMyQUJBNEUwMEU5NjFERiAvKiBXS0Z1
bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLmggKi87IH07CisJCUNERTU1NTMyMjQwNkVCOEMwMDhB
M0REQiAvKiBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFNTU1MjkyNDA2
Qjg5NjAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eU1lc3NhZ2VSZWNlaXZl
ci5jcHAgKi87IH07CisJCUNERTU1NTMzMjQwNkVCOEMwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lD
RE1Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDREU1NTUyQTI0MDZCODk2MDA4QTNEREIgLyogUmVtb3RlTGVnYWN5
Q0RNUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OworCQlDREU1NTUzNDI0MDZFQjhDMDA4
QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbk1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREU1NTUyRTI0MDZCODk3
MDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi87
IH07CisJCUNERTU1NTM1MjQwNkVCOEMwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1TZXNzaW9u
UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0RFNTU1MzEyNDA2Qjg5NzAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNE
TVNlc3Npb25Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCUNFMTFBRDUyMUNCQzQ4
MkYwMDY4MUVFNSAvKiBDb2RlU2lnbmluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0UxMUFENTExQ0JDNDgyRjAwNjgxRUU1IC8qIENvZGVTaWduaW5n
LmggKi87IH07CiAJCUNFMUEwQkQyMUE0OEU2QzYwMDU0RUY3NCAvKiBBc3NlcnRpb25TZXJ2aWNl
c1NQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Ux
QTBCQ0MxQTQ4RTZDNjAwNTRFRjc0IC8qIEFzc2VydGlvblNlcnZpY2VzU1BJLmggKi87IH07CiAJ
CUNFMUEwQkQ2MUE0OEU2QzYwMDU0RUY3NCAvKiBUQ0NTUEkuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMUEwQkQwMUE0OEU2QzYwMDU0RUY3NCAvKiBU
Q0NTUEkuaCAqLzsgfTsKQEAgLTUwOTIsNiArNTA5NiwzNiBAQAogCQlDRENBODVDNjEzMkFCQTRF
MDBFOTYxREYgLyogV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEQ0E4NUM3MTMyQUJBNEUwMEU5NjFE
RiAvKiBXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQ0RDQTg1RDQxMzJBQzJCMzAwRTk2MURGIC8qIElPS2l0LmZyYW1l
d29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdy
YXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gSU9LaXQuZnJhbWV3b3JrOyBwYXRoID0gL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvSU9LaXQuZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0
ZT4iOyB9OworCQlDREU1NTRFMjI0MDU4MTE0MDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNRmFj
dG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUNERTU1NEUzMjQwNTgxMTQwMDhBM0REQiAvKiBSZW1vdGVM
ZWdhY3lDRE1GYWN0b3J5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUxlZ2FjeUNETUZh
Y3RvcnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREU1NTRFQTI0MDU4MTgz
MDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUxlZ2Fj
eUNETS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREU1NTRFQjI0MDU4MTgzMDA4
QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUxl
Z2FjeUNETS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNERTU1NEVFMjQwNTgx
QTMwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJl
bW90ZUxlZ2FjeUNETVNlc3Npb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RF
NTU0RUYyNDA1ODFBMzAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETVNlc3Npb24uY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUNERTU1NEY4MjQwNTgyMDgwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lD
RE1TZXNzaW9uUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblBy
b3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNERTU1NEY5MjQwNTgyMDgwMDhB
M0REQiAvKiBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQ0RFNTU1MDAyNDA1ODI4NDAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETVNlc3Np
b25Qcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSZW1vdGVMZWdhY3lD
RE1TZXNzaW9uUHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUNERTU1NTA1MjQwNTgzMjQwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uLm1lc3Nh
Z2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IFJlbW90ZUxlZ2FjeUNETVNlc3Npb24ubWVzc2FnZXMuaW47IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUNERTU1NTA3MjQwNTg4QjgwMDhBM0REQiAvKiBSZW1vdGVM
ZWdhY3lDRE1JZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUxlZ2FjeUNETUlkZW50
aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RFNTU1MDkyNDA1ODhDQjAw
OEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUNERTU1NTFCMjQwNUEzQjcwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1G
YWN0b3J5UHJveHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5
Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREU1NTUxQzI0MDVB
M0I3MDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlDREU1NTUxRDI0MDVBM0I3MDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNRmFjdG9y
eVByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94
eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNERTU1NTFFMjQwNUEzREYwMDhB
M0REQiAvKiBSZW1vdGVMZWdhY3lDRE1Qcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSZW1vdGVMZWdh
Y3lDRE1Qcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RF
NTU1MUYyNDA1QTNERjAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETVByb3h5LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJlbW90ZUxlZ2FjeUNETVByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUNERTU1NTIwMjQwNUEzREYwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1Qcm94eS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVMZWdhY3lDRE1Qcm94eS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUNERTU1NTI2MjQwNkI4OTUwMDhBM0REQiAvKiBSZW1vdGVMZWdh
Y3lDRE1TZXNzaW9uUHJveHlNZXNzYWdlc1JlcGxpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3Rl
TGVnYWN5Q0RNU2Vzc2lvblByb3h5TWVzc2FnZXNSZXBsaWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUNERTU1NTI3MjQwNkI4OTUwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1T
ZXNzaW9uTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbk1l
c3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNERTU1NTI4MjQwNkI4OTYw
MDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1Qcm94eU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJlbW90ZUxlZ2FjeUNETVByb3h5TWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQ0RFNTU1MjkyNDA2Qjg5NjAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQ
cm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVMZWdhY3lD
RE1GYWN0b3J5UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlDREU1NTUyQTI0MDZCODk2MDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNUHJveHlN
ZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlTGVnYWN5Q0RNUHJv
eHlNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREU1
NTUyQjI0MDZCODk2MDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNUHJveHlNZXNzYWdlc1JlcGxp
ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlTGVnYWN5Q0RNUHJveHlNZXNzYWdlc1JlcGxpZXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RFNTU1MkMyNDA2Qjg5NjAwOEEzRERC
IC8qIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eU1lc3NhZ2VzUmVwbGllcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHlNZXNzYWdlc1JlcGxpZXMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RFNTU1MkQyNDA2Qjg5NzAwOEEzRERCIC8qIFJl
bW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90
ZUxlZ2FjeUNETUZhY3RvcnlQcm94eU1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUNERTU1NTJFMjQwNkI4OTcwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1TZXNzaW9u
TWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUxlZ2FjeUNETVNl
c3Npb25NZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlD
REU1NTUyRjI0MDZCODk3MDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5TWVz
c2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5TWVzc2Fn
ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RFNTU1MzAyNDA2Qjg5NzAwOEEz
RERCIC8qIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25NZXNzYWdlc1JlcGxpZXMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbk1lc3NhZ2VzUmVwbGllcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlDREU1NTUzMTI0MDZCODk3MDA4QTNEREIgLyogUmVtb3RlTGVn
YWN5Q0RNU2Vzc2lvblByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFMTFBRDRGMUNCQzQ3RjgwMDY4MUVFNSAvKiBDb2RlU2ln
bmluZy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IENvZGVTaWdu
aW5nLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTExQUQ1MTFDQkM0ODJGMDA2
ODFFRTUgLyogQ29kZVNpZ25pbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Q29kZVNpZ25pbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0UxQTBCQ0MxQTQ4
RTZDNjAwNTRFRjc0IC8qIEFzc2VydGlvblNlcnZpY2VzU1BJLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEFzc2VydGlvblNlcnZpY2VzU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC01MzgzLDYgKzU0MTcsMTUgQEAKIAkJCQlDREFDMjBCRDIzRkMyRjc0MDAy
MURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmggKi8sCiAJCQkJQ0Q0NjYxN0YyNDAx
MDQ1ODAwNDdDQTM1IC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5tZXNzYWdlcy5pbiAqLywK
IAkJCQlDREFDMjBCQzIzRkMyRjc0MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
SWRlbnRpZmllci5oICovLAorCQkJCUNERTU1NEVCMjQwNTgxODMwMDhBM0REQiAvKiBSZW1vdGVM
ZWdhY3lDRE0uY3BwICovLAorCQkJCUNERTU1NEVBMjQwNTgxODMwMDhBM0REQiAvKiBSZW1vdGVM
ZWdhY3lDRE0uaCAqLywKKwkJCQlDREU1NTRFMzI0MDU4MTE0MDA4QTNEREIgLyogUmVtb3RlTGVn
YWN5Q0RNRmFjdG9yeS5jcHAgKi8sCisJCQkJQ0RFNTU0RTIyNDA1ODExNDAwOEEzRERCIC8qIFJl
bW90ZUxlZ2FjeUNETUZhY3RvcnkuaCAqLywKKwkJCQlDREU1NTUwNzI0MDU4OEI4MDA4QTNEREIg
LyogUmVtb3RlTGVnYWN5Q0RNSWRlbnRpZmllci5oICovLAorCQkJCUNERTU1NEVGMjQwNTgxQTMw
MDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmNwcCAqLywKKwkJCQlDREU1NTRFRTI0
MDU4MUEzMDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5oICovLAorCQkJCUNERTU1
NTA1MjQwNTgzMjQwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uLm1lc3NhZ2VzLmlu
ICovLAorCQkJCUNERTU1NTA5MjQwNTg4Q0IwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1TZXNz
aW9uSWRlbnRpZmllci5oICovLAogCQkJCTA3QjkzRkY1MjNBRjBDQjgwMDM2RjhFQSAvKiBSZW1v
dGVNZWRpYVBsYXllckNvbmZpZ3VyYXRpb24uaCAqLywKIAkJCQkwNzkyMzEzMDIzOUIzQjBDMDA5
NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmNwcCAqLywKIAkJCQkwNzkyMzEzNDIz
OUIzQjBDMDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmggKi8sCkBAIC01NDI1
LDYgKzU0NjgsMTUgQEAKIAkJCQlDREFDMjA4MzIzRkIyMTM0MDAyMURFRTMgLyogUmVtb3RlQ0RN
UHJveHkuY3BwICovLAogCQkJCUNEQUMyMDgyMjNGQjIxMzQwMDIxREVFMyAvKiBSZW1vdGVDRE1Q
cm94eS5oICovLAogCQkJCUNEQUMyMDg2MjNGQjIxNTgwMDIxREVFMyAvKiBSZW1vdGVDRE1Qcm94
eS5tZXNzYWdlcy5pbiAqLywKKwkJCQlDREU1NTUxRDI0MDVBM0I3MDA4QTNEREIgLyogUmVtb3Rl
TGVnYWN5Q0RNRmFjdG9yeVByb3h5LmNwcCAqLywKKwkJCQlDREU1NTUxQzI0MDVBM0I3MDA4QTNE
REIgLyogUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5LmggKi8sCisJCQkJQ0RFNTU1MUIyNDA1
QTNCNzAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5tZXNzYWdlcy5pbiAq
LywKKwkJCQlDREU1NTUyMDI0MDVBM0RGMDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNUHJveHku
Y3BwICovLAorCQkJCUNERTU1NTFGMjQwNUEzREYwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1Q
cm94eS5oICovLAorCQkJCUNERTU1NTFFMjQwNUEzREYwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lD
RE1Qcm94eS5tZXNzYWdlcy5pbiAqLywKKwkJCQlDREU1NTRGOTI0MDU4MjA4MDA4QTNEREIgLyog
UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNwcCAqLywKKwkJCQlDREU1NTRGODI0MDU4MjA4
MDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmggKi8sCisJCQkJQ0RFNTU1
MDAyNDA1ODI4NDAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5tZXNzYWdl
cy5pbiAqLywKIAkJCQkwNzI1RUZBRDIzOUIwMjQ1MDBBNTM4QTkgLyogUmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyUHJveHkuY3BwICovLAogCQkJCTA3MjVFRkFDMjM5QUUzODUwMEE1MzhBOSAvKiBS
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oICovLAogCQkJCTA3MjVFRkFCMjM5QUUzODQw
MEE1MzhBOSAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbiAqLywK
QEAgLTk4MzAsNiArOTg4MiwxOCBAQAogCQkJCUNEQUMyMEYwMjNGQzM4MzkwMDIxREVFMyAvKiBS
ZW1vdGVDRE1Qcm94eU1lc3NhZ2VzUmVwbGllcy5oICovLAogCQkJCTBGRjI0QTJCMTg3OUU0QkMw
MDNBQkYwQyAvKiBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZVJlY2VpdmVy
LmNwcCAqLywKIAkJCQkwRkYyNEEyQzE4NzlFNEJDMDAzQUJGMEMgLyogUmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VzLmggKi8sCisJCQkJQ0RFNTU1MjkyNDA2Qjg5NjAwOEEz
RERCIC8qIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8s
CisJCQkJQ0RFNTU1MkQyNDA2Qjg5NzAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQ
cm94eU1lc3NhZ2VzLmggKi8sCisJCQkJQ0RFNTU1MkMyNDA2Qjg5NjAwOEEzRERCIC8qIFJlbW90
ZUxlZ2FjeUNETUZhY3RvcnlQcm94eU1lc3NhZ2VzUmVwbGllcy5oICovLAorCQkJCUNERTU1NTJB
MjQwNkI4OTYwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1Qcm94eU1lc3NhZ2VSZWNlaXZlci5j
cHAgKi8sCisJCQkJQ0RFNTU1MjgyNDA2Qjg5NjAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETVBy
b3h5TWVzc2FnZXMuaCAqLywKKwkJCQlDREU1NTUyQjI0MDZCODk2MDA4QTNEREIgLyogUmVtb3Rl
TGVnYWN5Q0RNUHJveHlNZXNzYWdlc1JlcGxpZXMuaCAqLywKKwkJCQlDREU1NTUyRTI0MDZCODk3
MDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi8s
CisJCQkJQ0RFNTU1MjcyNDA2Qjg5NTAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25N
ZXNzYWdlcy5oICovLAorCQkJCUNERTU1NTMwMjQwNkI4OTcwMDhBM0REQiAvKiBSZW1vdGVMZWdh
Y3lDRE1TZXNzaW9uTWVzc2FnZXNSZXBsaWVzLmggKi8sCisJCQkJQ0RFNTU1MzEyNDA2Qjg5NzAw
OEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAg
Ki8sCisJCQkJQ0RFNTU1MkYyNDA2Qjg5NzAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETVNlc3Np
b25Qcm94eU1lc3NhZ2VzLmggKi8sCisJCQkJQ0RFNTU1MjYyNDA2Qjg5NTAwOEEzRERCIC8qIFJl
bW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eU1lc3NhZ2VzUmVwbGllcy5oICovLAogCQkJCTA3OTIz
MTQzMjM5Q0JDQjYwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJNZXNzYWdlUmVj
ZWl2ZXIuY3BwICovLAogCQkJCTA3OTIzMTQ3MjM5Q0JDQjcwMDk1OThFMiAvKiBSZW1vdGVNZWRp
YVBsYXllck1hbmFnZXJNZXNzYWdlcy5oICovLAogCQkJCTA3OTIzMTQ0MjM5Q0JDQjYwMDk1OThF
MiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJNZXNzYWdlc1JlcGxpZXMuaCAqLywKQEAgLTEy
NDUxLDYgKzEyNTE1LDEwIEBACiAJCQkJMkQ3MkExRkEyMTJCRjQ2RTAwNTE3QTIwIC8qIFJlbW90
ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGMjRBMkQxODc5
RTRCQzAwM0FCRjBDIC8qIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdlUmVj
ZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkRDMThGQjQyMThBNkU5RTAwMjVBODhEIC8q
IFJlbW90ZUxheWVyVHJlZVZpZXdzLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQ0RFNTU1MzIyNDA2
RUI4QzAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eU1lc3NhZ2VSZWNlaXZl
ci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDREU1NTUzMzI0MDZFQjhDMDA4QTNEREIgLyogUmVt
b3RlTGVnYWN5Q0RNUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
Q0RFNTU1MzQyNDA2RUI4QzAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25NZXNzYWdl
UmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0RFNTU1MzUyNDA2RUI4QzAwOEEzRERC
IC8qIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkwNzkyMzE0OTIzOUNCQ0I4MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3OTIzMTRC
MjM5Q0JDQjgwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eU1lc3NhZ2VS
ZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzAxNzg5RTIzQkU5Q0ZDMDA1RjBGQUEg
LyogUmVtb3RlTWVkaWFQbGF5ZXJNSU1FVHlwZUNhY2hlLmNwcCBpbiBTb3VyY2VzICovLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9u
LmNwcAppbmRleCBmOWI5NzAxODE3MmRhNTJiMWM3MDU0OTM5NTkzYzIxMWRmZWQwMTEwLi41MTJi
Y2U3MzM3NGQwODhkNGJlODViOWUyNWIyMDU1ZTM1ZjFkOWRmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtODEs
NiArODEsMTEgQEAgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlciYgR1BVUHJvY2Vzc0Nv
bm5lY3Rpb246OnNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck0KIH0KICNlbmRpZgogCitSZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXImIEdQVVByb2Nlc3NDb25uZWN0aW9uOjptZWRpYVBsYXllck1hbmFn
ZXIoKQoreworICAgIHJldHVybiAqV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc3VwcGxlbWVudDxS
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXI+KCk7Cit9CisKICNpZiBFTkFCTEUoRU5DUllQVEVEX01F
RElBKQogUmVtb3RlQ0RNRmFjdG9yeSYgR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OmNkbUZhY3Rvcnko
KQogewpAQCAtODgsNiArOTMsMTMgQEAgUmVtb3RlQ0RNRmFjdG9yeSYgR1BVUHJvY2Vzc0Nvbm5l
Y3Rpb246OmNkbUZhY3RvcnkoKQogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZ
UFRFRF9NRURJQSkKK1JlbW90ZUxlZ2FjeUNETUZhY3RvcnkmIEdQVVByb2Nlc3NDb25uZWN0aW9u
OjpsZWdhY3lDRE1GYWN0b3J5KCkKK3sKKyAgICByZXR1cm4gKldlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLnN1cHBsZW1lbnQ8UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeT4oKTsKK30KKyNlbmRpZgorCiBi
b29sIEdQVVByb2Nlc3NDb25uZWN0aW9uOjpkaXNwYXRjaE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpCiB7CiAgICAgaWYgKGRlY29kZXIu
bWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5oCmluZGV4IDJiNTcyYzFiYWNiZmE2YjZi
MjZmMzU2MGMyNjJhOWE0MWIwYzc1YWYuLjNmNDFhZWFiMTBlZDIyNjA4NzA3NjkwZDhiNjA1ODU3
MTY4ZmE1MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJv
Y2Vzc0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVBy
b2Nlc3NDb25uZWN0aW9uLmgKQEAgLTQwLDYgKzQwLDggQEAgY2xhc3MgRGF0YVJlZmVyZW5jZTsK
IG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBSZW1vdGVDRE1GYWN0b3J5OworY2xhc3MgUmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOworY2xhc3MgUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeTsKIAog
Y2xhc3MgR1BVUHJvY2Vzc0Nvbm5lY3Rpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxHUFVQcm9jZXNz
Q29ubmVjdGlvbj4sIElQQzo6Q29ubmVjdGlvbjo6Q2xpZW50IHsKIHB1YmxpYzoKQEAgLTYwLDEw
ICs2MiwxNiBAQCBwdWJsaWM6CiAgICAgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlciYg
c2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcigpOwogI2VuZGlmCiAKKyAgICBSZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXImIG1lZGlhUGxheWVyTWFuYWdlcigpOworCiAjaWYgRU5BQkxFKEVO
Q1JZUFRFRF9NRURJQSkKICAgICBSZW1vdGVDRE1GYWN0b3J5JiBjZG1GYWN0b3J5KCk7CiAjZW5k
aWYKIAorI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQorICAgIFJlbW90ZUxlZ2Fj
eUNETUZhY3RvcnkmIGxlZ2FjeUNETUZhY3RvcnkoKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAg
IEdQVVByb2Nlc3NDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcik7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcAppbmRleCAwMTBjNzFlMmExMDlkOWE5NzllMGQ3Mjhm
MDVmZTljNDE0ZDc1N2UyLi5mMDc1NzFjZWI1Mjk4NzhkMTdjNzYwMDcyYjgyYzdiMDljYzM4YzBl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCkBAIC0zMCw2ICszMCw5IEBACiAKICNp
bmNsdWRlICJBdWRpb1RyYWNrUHJpdmF0ZVJlbW90ZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
KyNpbmNsdWRlICJSZW1vdGVMZWdhY3lDRE0uaCIKKyNpbmNsdWRlICJSZW1vdGVMZWdhY3lDRE1G
YWN0b3J5LmgiCisjaW5jbHVkZSAiUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5oIgogI2luY2x1ZGUg
IlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJSZW1v
dGVNZWRpYVBsYXllclByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9u
LmgiCkBAIC0zOCw2ICs0MSw4IEBACiAjaW5jbHVkZSAiVmlkZW9UcmFja1ByaXZhdGVSZW1vdGUu
aCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJQcm9j
ZXNzLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5s
aW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1R5cGVkQXJyYXlUeXBlLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9NZWRpYVBsYXllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVt
ZW50ZWQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtTGF5ZXIuaD4KQEAgLTUzLDYgKzU4
LDEwIEBACiAjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2UuaCIKICNlbmRpZgogCisjaWYgRU5B
QkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCisjaW5jbHVkZSA8V2ViQ29yZS9MZWdhY3lDRE0u
aD4KKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FC
TEVECiBleHRlcm4gV1RGTG9nQ2hhbm5lbCBMb2dNZWRpYTsKQEAgLTkxMSwxNSArOTIwLDM4IEBA
IHN0ZDo6dW5pcXVlX3B0cjxMZWdhY3lDRE1TZXNzaW9uPiBNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6OmNyZWF0ZVNlc3Npb24oY29uc3QKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldENETVNlc3Npb24oTGVnYWN5Q0RNU2Vzc2lvbiop
Cit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0Q0RNKExlZ2FjeUNETSogY2RtKQog
ewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgaWYgKCFjZG0pCisgICAgICAgIHJldHVybjsK
KworICAgIGF1dG8gcmVtb3RlQ0RNID0gbV9tYW5hZ2VyLmdwdVByb2Nlc3NDb25uZWN0aW9uKCku
bGVnYWN5Q0RNRmFjdG9yeSgpLmZpbmRDRE0oY2RtLT5jZG1Qcml2YXRlKCkpOworICAgIGlmICgh
cmVtb3RlQ0RNKQorICAgICAgICByZXR1cm47CisKKyAgICByZW1vdGVDRE0tPnNldFBsYXllcklk
KG1faWQpOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0Q0RNU2Vzc2lv
bihMZWdhY3lDRE1TZXNzaW9uKiBzZXNzaW9uKQoreworICAgIGlmICghc2Vzc2lvbiB8fCBzZXNz
aW9uLT50eXBlKCkgIT0gQ0RNU2Vzc2lvblR5cGVSZW1vdGUpIHsKKyAgICAgICAgY29ubmVjdGlv
bigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6OlNldExlZ2FjeUNETVNl
c3Npb24oeyB9KSwgbV9pZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIHJl
bW90ZVNlc3Npb24gPSBzdGF0aWNfY2FzdDxSZW1vdGVMZWdhY3lDRE1TZXNzaW9uKj4oc2Vzc2lv
bik7CisgICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyUHJv
eHk6OlNldExlZ2FjeUNETVNlc3Npb24ocmVtb3RlU2Vzc2lvbi0+aWRlbnRpZmllcigpKSwgbV9p
ZCk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjprZXlBZGRlZCgpCiB7CiAg
ICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6Oktl
eUFkZGVkKCksIG1faWQpOwogfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bWVk
aWFQbGF5ZXJLZXlOZWVkZWQoSVBDOjpEYXRhUmVmZXJlbmNlJiYgbWVzc2FnZSkKK3sKKyAgICBt
X3BsYXllci0+a2V5TmVlZGVkKFVpbnQ4QXJyYXk6OmNyZWF0ZShtZXNzYWdlLmRhdGEoKSwgbWVz
c2FnZS5zaXplKCkpLnB0cigpKTsKK30KICNlbmRpZgogCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9N
RURJQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oCmluZGV4IGU0MmMyNTc0MzBkODI5ZTYzYmU1
YmI0Mjc0ZGMwM2E4ODhjMWMyMzAuLjUyNzdlOTRiMDVhZGFhNzM1ZmY4NmFhYzkxMTFlYTk2YjAy
MWZlNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaApAQCAtMzA2LDggKzMwNiwxMCBAQCBw
cml2YXRlOgogCiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCiAgICAgc3RkOjp1
bmlxdWVfcHRyPFdlYkNvcmU6OkxlZ2FjeUNETVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oY29uc3Qg
U3RyaW5nJiwgV2ViQ29yZTo6TGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCopIGZpbmFsOworICAgIHZv
aWQgc2V0Q0RNKFdlYkNvcmU6OkxlZ2FjeUNETSopIGZpbmFsOwogICAgIHZvaWQgc2V0Q0RNU2Vz
c2lvbihXZWJDb3JlOjpMZWdhY3lDRE1TZXNzaW9uKikgZmluYWw7CiAgICAgdm9pZCBrZXlBZGRl
ZCgpIGZpbmFsOworICAgIHZvaWQgbWVkaWFQbGF5ZXJLZXlOZWVkZWQoSVBDOjpEYXRhUmVmZXJl
bmNlJiYpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVS
ZW1vdGUubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5pbgppbmRleCA2YWUwZGIzMWZhYmVlOWE0
NDRkNTI4M2RkYmEwOGZiMzBjNjA5ODlkLi5mNGMzYTZjMTc5ZTQ3OGYyZDM0YmVlMDU1MmJjOTJl
NzAyOTc1OTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5p
bgpAQCAtNzgsNiArNzgsMTAgQEAgbWVzc2FnZXMgLT4gTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
IE5vdFJlZkNvdW50ZWQgewogICAgIEluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKFN0cmlu
ZyBpbml0RGF0YVR5cGUsIElQQzo6RGF0YVJlZmVyZW5jZSBpbml0RGF0YSkKICNlbmRpZgogCisj
aWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCisgICAgTWVkaWFQbGF5ZXJLZXlOZWVk
ZWQoSVBDOjpEYXRhUmVmZXJlbmNlIG1lc3NhZ2UpCisjZW5kaWYKKwogI2lmIEVOQUJMRShXSVJF
TEVTU19QTEFZQkFDS19UQVJHRVQpCiAgICAgQ3VycmVudFBsYXliYWNrVGFyZ2V0SXNXaXJlbGVz
c0NoYW5nZWQoYm9vbCBpc0N1cnJlbnRQbGF5YmFja1RhcmdldFdpcmVsZXNzKQogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2Fj
eUNETS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2Fj
eUNETS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMjQwNjY4ZTliYmVjYmU5MDJhMjE5N2RhMTFmZDYxNDgyY2Vk
NWFhZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlTGVnYWN5Q0RNLmNwcApAQCAtMCwwICsxLDg5IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETS5oIgorCisjaWYgRU5B
QkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKKworI2lu
Y2x1ZGUgIlJlbW90ZUxlZ2FjeUNETUZhY3RvcnkuaCIKKyNpbmNsdWRlICJSZW1vdGVMZWdhY3lD
RE1Qcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5oIgor
CituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK3N0ZDo6
dW5pcXVlX3B0cjxSZW1vdGVMZWdhY3lDRE0+IFJlbW90ZUxlZ2FjeUNETTo6Y3JlYXRlKFdlYWtQ
dHI8UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeT4mJiBmYWN0b3J5LCBSZW1vdGVMZWdhY3lDRE1JZGVu
dGlmaWVyIGlkKQoreworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGVnYWN5Q0RN
PihuZXcgUmVtb3RlTGVnYWN5Q0RNKFdURk1vdmUoZmFjdG9yeSksIFdURk1vdmUoaWQpKSk7Cit9
CisKK1JlbW90ZUxlZ2FjeUNETTo6UmVtb3RlTGVnYWN5Q0RNKFdlYWtQdHI8UmVtb3RlTGVnYWN5
Q0RNRmFjdG9yeT4mJiBmYWN0b3J5LCBSZW1vdGVMZWdhY3lDRE1JZGVudGlmaWVyJiYgaWQpCisg
ICAgOiBtX2ZhY3RvcnkoV1RGTW92ZShmYWN0b3J5KSkKKyAgICAsIG1faWRlbnRpZmllcihXVEZN
b3ZlKGlkKSkKK3sKK30KKworUmVtb3RlTGVnYWN5Q0RNOjp+UmVtb3RlTGVnYWN5Q0RNKCkgPSBk
ZWZhdWx0OworCitib29sIFJlbW90ZUxlZ2FjeUNETTo6c3VwcG9ydHNNSU1FVHlwZShjb25zdCBT
dHJpbmcmIG1pbWVUeXBlKQoreworICAgIGlmICghbV9mYWN0b3J5KQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBib29sIHN1cHBvcnRlZCA9IGZhbHNlOworICAgIG1fZmFjdG9yeS0+Z3B1
UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90
ZUxlZ2FjeUNETVByb3h5OjpTdXBwb3J0c01JTUVUeXBlKG1pbWVUeXBlKSwgTWVzc2FnZXM6OlJl
bW90ZUxlZ2FjeUNETVByb3h5OjpTdXBwb3J0c01JTUVUeXBlOjpSZXBseShzdXBwb3J0ZWQpLCBt
X2lkZW50aWZpZXIpOworICAgIHJldHVybiBzdXBwb3J0ZWQ7Cit9CisKK3N0ZDo6dW5pcXVlX3B0
cjxXZWJDb3JlOjpMZWdhY3lDRE1TZXNzaW9uPiBSZW1vdGVMZWdhY3lDRE06OmNyZWF0ZVNlc3Np
b24oV2ViQ29yZTo6TGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCogY2xpZW50KQoreworICAgIGlmICgh
bV9mYWN0b3J5KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIFN0cmluZyBzdG9yYWdl
RGlyZWN0b3J5ID0gY2xpZW50ID8gY2xpZW50LT5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkg
OiBlbXB0eVN0cmluZygpOworCisgICAgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXIg
aWQ7CisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5z
ZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlTGVnYWN5Q0RNUHJveHk6OkNyZWF0ZVNlc3Npb24oc3Rv
cmFnZURpcmVjdG9yeSksIE1lc3NhZ2VzOjpSZW1vdGVMZWdhY3lDRE1Qcm94eTo6Q3JlYXRlU2Vz
c2lvbjo6UmVwbHkoaWQpLCBtX2lkZW50aWZpZXIpOworICAgIGlmICghaWQpCisgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgIHJldHVybiBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uOjpjcmVhdGUo
bV9mYWN0b3J5LCBXVEZNb3ZlKGlkKSk7Cit9CisKK3ZvaWQgUmVtb3RlTGVnYWN5Q0RNOjpzZXRQ
bGF5ZXJJZChNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkKQoreworICAgIGlm
ICghbV9mYWN0b3J5KQorICAgICAgICByZXR1cm47CisKKyAgICBPcHRpb25hbDxNZWRpYVBsYXll
clByaXZhdGVSZW1vdGVJZGVudGlmaWVyPiBvcHRpb25hbElkOworICAgIGlmIChpZCkKKyAgICAg
ICAgb3B0aW9uYWxJZCA9IGlkOworICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24o
KS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTGVnYWN5Q0RNUHJveHk6OlNldFBs
YXllcklkKG9wdGlvbmFsSWQpLCBtX2lkZW50aWZpZXIpOworfQorCit9CisKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lD
RE0uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RN
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZjU0Y2QzY2M0Mjk0MTcxNjYxOWY1MDNiNjNmOTczYjExYTFlMjI0MAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlTGVnYWN5Q0RNLmgKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9N
RURJQSkKKworI2luY2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIuaCIK
KyNpbmNsdWRlICJSZW1vdGVMZWdhY3lDRE1JZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8V2ViQ29y
ZS9MZWdhY3lDRE1Qcml2YXRlLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworY2xhc3MgU2V0dGluZ3M7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitjbGFzcyBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5OworY2xhc3MgUmVtb3RlTGVnYWN5Q0RNU2Vz
c2lvbjsKKworCitjbGFzcyBSZW1vdGVMZWdhY3lDRE0gZmluYWwKKyAgICA6IHB1YmxpYyBXZWJD
b3JlOjpDRE1Qcml2YXRlSW50ZXJmYWNlCisgICAgLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UmVt
b3RlTGVnYWN5Q0RNPiB7CitwdWJsaWM6CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1v
dGVMZWdhY3lDRE0+IGNyZWF0ZShXZWFrUHRyPFJlbW90ZUxlZ2FjeUNETUZhY3Rvcnk+JiYsIFJl
bW90ZUxlZ2FjeUNETUlkZW50aWZpZXIpOworICAgIHZpcnR1YWwgflJlbW90ZUxlZ2FjeUNETSgp
OworCisgICAgYm9vbCBzdXBwb3J0c01JTUVUeXBlKGNvbnN0IFN0cmluZyYpIGZpbmFsOworICAg
IHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpMZWdhY3lDRE1TZXNzaW9uPiBjcmVhdGVTZXNzaW9u
KFdlYkNvcmU6OkxlZ2FjeUNETVNlc3Npb25DbGllbnQqKSBmaW5hbDsKKyAgICB2b2lkIHNldFBs
YXllcklkKE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIpOworCitwcml2YXRlOgor
ICAgIFJlbW90ZUxlZ2FjeUNETShXZWFrUHRyPFJlbW90ZUxlZ2FjeUNETUZhY3Rvcnk+JiYsIFJl
bW90ZUxlZ2FjeUNETUlkZW50aWZpZXImJik7CisKKyAgICBXZWFrUHRyPFJlbW90ZUxlZ2FjeUNE
TUZhY3Rvcnk+IG1fZmFjdG9yeTsKKyAgICBSZW1vdGVMZWdhY3lDRE1JZGVudGlmaWVyIG1faWRl
bnRpZmllcjsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnkuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5LmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi41MDUyZjI0ZmIzZjNkNDMwNGE5N2M4ZWMyZDRmODhmZTM1Zjg5YjAwCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdh
Y3lDRE1GYWN0b3J5LmNwcApAQCAtMCwwICsxLDE0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVMZWdhY3lDRE1GYWN0b3J5LmgiCisKKyNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQorCisj
aW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGUuaCIKKyNpbmNsdWRlICJSZW1vdGVMZWdhY3lDRE0uaCIKKyNpbmNsdWRlICJS
ZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlJlbW90ZUxl
Z2FjeUNETVNlc3Npb24uaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSA8V2Vi
Q29yZS9MZWdhY3lDRE0uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NldHRpbmdzLmg+CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworUmVtb3RlTGVnYWN5
Q0RNRmFjdG9yeTo6UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeShXZWJQcm9jZXNzJiBwcm9jZXNzKQor
ICAgIDogbV9wcm9jZXNzKHByb2Nlc3MpCit7Cit9CisKK1JlbW90ZUxlZ2FjeUNETUZhY3Rvcnk6
On5SZW1vdGVMZWdhY3lDRE1GYWN0b3J5KCkgPSBkZWZhdWx0OworCit2b2lkIFJlbW90ZUxlZ2Fj
eUNETUZhY3Rvcnk6OnJlZ2lzdGVyRmFjdG9yeShWZWN0b3I8TGVnYWN5Q0RNRmFjdG9yeT4mIGZh
Y3RvcmllcykKK3sKKyAgICBmYWN0b3JpZXMuYXBwZW5kKHsKKyAgICAgICAgW3dlYWtUaGlzID0g
bWFrZVdlYWtQdHIodGhpcyldIChMZWdhY3lDRE0qIHByaXZhdGVDRE0pIC0+IHN0ZDo6dW5pcXVl
X3B0cjxXZWJDb3JlOjpDRE1Qcml2YXRlSW50ZXJmYWNlPiB7CisgICAgICAgICAgICBpZiAod2Vh
a1RoaXMpCisgICAgICAgICAgICAgICAgcmV0dXJuIHdlYWtUaGlzLT5jcmVhdGVDRE0ocHJpdmF0
ZUNETSk7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgfSwKKyAgICAgICAg
W3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldIChjb25zdCBTdHJpbmcmIGtleVN5c3RlbSkg
eworICAgICAgICAgICAgcmV0dXJuIHdlYWtUaGlzID8gd2Vha1RoaXMtPnN1cHBvcnRzS2V5U3lz
dGVtKGtleVN5c3RlbSkgOiBmYWxzZTsKKyAgICAgICAgfSwKKyAgICAgICAgW3dlYWtUaGlzID0g
bWFrZVdlYWtQdHIodGhpcyldIChjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSkgeworICAgICAgICAgICAgcmV0dXJuIHdlYWtUaGlzID8gd2Vha1RoaXMtPnN1
cHBvcnRzS2V5U3lzdGVtQW5kTWltZVR5cGUoa2V5U3lzdGVtLCBtaW1lVHlwZSkgOiBmYWxzZTsK
KyAgICAgICAgfQorICAgIH0pOworfQorCitjb25zdCBjaGFyKiBSZW1vdGVMZWdhY3lDRE1GYWN0
b3J5OjpzdXBwbGVtZW50TmFtZSgpCit7CisgICAgcmV0dXJuICJSZW1vdGVMZWdhY3lDRE1GYWN0
b3J5IjsKK30KKworR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIFJlbW90ZUxlZ2FjeUNETUZhY3Rvcnk6
OmdwdVByb2Nlc3NDb25uZWN0aW9uKCkKK3sKKyAgICByZXR1cm4gbV9wcm9jZXNzLmVuc3VyZUdQ
VVByb2Nlc3NDb25uZWN0aW9uKCk7Cit9CisKK2Jvb2wgUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeTo6
c3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pCit7CisgICAgYm9vbCBz
dXBwb3J0ZWQgPSBmYWxzZTsKKyAgICBncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24o
KS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5OjpTdXBwb3J0
c0tleVN5c3RlbShrZXlTeXN0ZW0sIFdURjo6bnVsbG9wdCksIE1lc3NhZ2VzOjpSZW1vdGVMZWdh
Y3lDRE1GYWN0b3J5UHJveHk6OlN1cHBvcnRzS2V5U3lzdGVtOjpSZXBseShzdXBwb3J0ZWQpLCB7
IH0pOworICAgIHJldHVybiBzdXBwb3J0ZWQ7Cit9CisKK2Jvb2wgUmVtb3RlTGVnYWN5Q0RNRmFj
dG9yeTo6c3VwcG9ydHNLZXlTeXN0ZW1BbmRNaW1lVHlwZShjb25zdCBTdHJpbmcmIGtleVN5c3Rl
bSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKK3sKKyAgICBib29sIHN1cHBvcnRlZCA9IGZhbHNl
OworICAgIGdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3Nh
Z2VzOjpSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk6OlN1cHBvcnRzS2V5U3lzdGVtKGtleVN5
c3RlbSwgbWltZVR5cGUpLCBNZXNzYWdlczo6UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5OjpT
dXBwb3J0c0tleVN5c3RlbTo6UmVwbHkoc3VwcG9ydGVkKSwgeyB9KTsKKyAgICByZXR1cm4gc3Vw
cG9ydGVkOworfQorCitzdGQ6OnVuaXF1ZV9wdHI8Q0RNUHJpdmF0ZUludGVyZmFjZT4gUmVtb3Rl
TGVnYWN5Q0RNRmFjdG9yeTo6Y3JlYXRlQ0RNKFdlYkNvcmU6OkxlZ2FjeUNETSogY2RtKQorewor
ICAgIGlmICghY2RtKSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKworICAgIE9wdGlvbmFsPE1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZUlkZW50aWZpZXI+IHBsYXllcklkOworICAgIGlmIChhdXRvIHBsYXllciA9IGNkbS0+
bWVkaWFQbGF5ZXIoKSkKKyAgICAgICAgcGxheWVySWQgPSBncHVQcm9jZXNzQ29ubmVjdGlvbigp
Lm1lZGlhUGxheWVyTWFuYWdlcigpLmZpbmRSZW1vdGVQbGF5ZXJJZChwbGF5ZXItPnBsYXllclBy
aXZhdGUoKSk7CisKKyAgICBSZW1vdGVMZWdhY3lDRE1JZGVudGlmaWVyIGlkOworICAgIGdwdVBy
b2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVM
ZWdhY3lDRE1GYWN0b3J5UHJveHk6OkNyZWF0ZUNETShjZG0tPmtleVN5c3RlbSgpLCBXVEZNb3Zl
KHBsYXllcklkKSksIE1lc3NhZ2VzOjpSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk6OkNyZWF0
ZUNETTo6UmVwbHkoaWQpLCB7IH0pOworICAgIGlmICghaWQpCisgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgIGF1dG8gcmVtb3RlQ0RNID0gUmVtb3RlTGVnYWN5Q0RNOjpjcmVhdGUobWFrZVdl
YWtQdHIodGhpcyksIGlkKTsKKyAgICBtX2NkbXMuc2V0KGlkLCBtYWtlV2Vha1B0cihyZW1vdGVD
RE0uZ2V0KCkpKTsKKyAgICByZXR1cm4gcmVtb3RlQ0RNOworfQorCit2b2lkIFJlbW90ZUxlZ2Fj
eUNETUZhY3Rvcnk6OmFkZFNlc3Npb24oUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXIg
aWQsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMZWdhY3lDRE1TZXNzaW9uPiYmIHNlc3Npb24pCit7
CisgICAgQVNTRVJUKCFtX3Nlc3Npb25zLmNvbnRhaW5zKGlkKSk7CisgICAgbV9zZXNzaW9ucy5z
ZXQoaWQsIFdURk1vdmUoc2Vzc2lvbikpOworfQorCit2b2lkIFJlbW90ZUxlZ2FjeUNETUZhY3Rv
cnk6OnJlbW92ZVNlc3Npb24oUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXIgaWQpCit7
CisgICAgQVNTRVJUKG1fc2Vzc2lvbnMuY29udGFpbnMoaWQpKTsKKyAgICBtX3Nlc3Npb25zLnJl
bW92ZShpZCk7Cit9CisKK1JlbW90ZUxlZ2FjeUNETSogUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeTo6
ZmluZENETShDRE1Qcml2YXRlSW50ZXJmYWNlKiBwcml2YXRlSW50ZXJmYWNlKSBjb25zdAorewor
ICAgIGZvciAoYXV0byYgY2RtIDogbV9jZG1zLnZhbHVlcygpKSB7CisgICAgICAgIGlmIChwcml2
YXRlSW50ZXJmYWNlID09IGNkbS5nZXQoKSkKKyAgICAgICAgICAgIHJldHVybiBjZG0uZ2V0KCk7
CisgICAgfQorICAgIHJldHVybiBudWxscHRyOworfQorCit2b2lkIFJlbW90ZUxlZ2FjeUNETUZh
Y3Rvcnk6OmRpZFJlY2VpdmVTZXNzaW9uTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG1f
c2Vzc2lvbnMuZ2V0KG1ha2VPYmplY3RJZGVudGlmaWVyPFJlbW90ZUxlZ2FjeUNETVNlc3Npb25J
ZGVudGlmaWVyVHlwZT4oZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpKSkKKyAgICAgICAgc2Vzc2lv
bi0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7Cit9CisKKworfQorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlTGVnYWN5Q0RNRmFjdG9yeS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTBmZDRiZTJmMjZhNTdkZmYz
OWUwMzhmOTAwOTBlMGZhN2IyODgyZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeS5oCkBAIC0wLDAgKzEs
ODggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VT
UykgJiYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRlICJSZW1vdGVM
ZWdhY3lDRE1JZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklk
ZW50aWZpZXIuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzU3VwcGxlbWVudC5oIgorI2luY2x1ZGUg
PFdlYkNvcmUvTGVnYWN5Q0RNLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRl
IDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBTZXR0aW5nczsK
K30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ0RNUHJpdmF0ZUludGVyZmFjZTsKK2Ns
YXNzIExlZ2FjeUNETTsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIEdQVVByb2Nl
c3NDb25uZWN0aW9uOworY2xhc3MgUmVtb3RlTGVnYWN5Q0RNOworY2xhc3MgUmVtb3RlTGVnYWN5
Q0RNU2Vzc2lvbjsKK2NsYXNzIFdlYlByb2Nlc3M7CisKKworY2xhc3MgUmVtb3RlTGVnYWN5Q0RN
RmFjdG9yeSBmaW5hbAorICAgIDogcHVibGljIFdlYlByb2Nlc3NTdXBwbGVtZW50CisgICAgLCBw
dWJsaWMgQ2FuTWFrZVdlYWtQdHI8UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeT4geworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIGV4cGxpY2l0IFJlbW90ZUxlZ2FjeUNE
TUZhY3RvcnkoV2ViUHJvY2VzcyYpOworICAgIHZpcnR1YWwgflJlbW90ZUxlZ2FjeUNETUZhY3Rv
cnkoKTsKKworICAgIHZvaWQgcmVnaXN0ZXJGYWN0b3J5KFZlY3RvcjxXZWJDb3JlOjpMZWdhY3lD
RE1GYWN0b3J5PiYpOworCisgICAgc3RhdGljIGNvbnN0IGNoYXIqIHN1cHBsZW1lbnROYW1lKCk7
CisgICAgV2ViUHJvY2VzcyYgcHJvY2VzcygpIGNvbnN0IHsgcmV0dXJuIG1fcHJvY2VzczsgfQor
CisgICAgR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIGdwdVByb2Nlc3NDb25uZWN0aW9uKCk7CisKKyAg
ICB2b2lkIGRpZFJlY2VpdmVTZXNzaW9uTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRl
Y29kZXImKTsKKworICAgIHZvaWQgYWRkU2Vzc2lvbihSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRl
bnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxlZ2FjeUNETVNlc3Npb24+JiYpOworICAg
IHZvaWQgcmVtb3ZlU2Vzc2lvbihSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllcik7CisK
KyAgICBSZW1vdGVMZWdhY3lDRE0qIGZpbmRDRE0oV2ViQ29yZTo6Q0RNUHJpdmF0ZUludGVyZmFj
ZSopIGNvbnN0OworCitwcml2YXRlOgorICAgIGJvb2wgc3VwcG9ydHNLZXlTeXN0ZW0oY29uc3Qg
U3RyaW5nJik7CisgICAgYm9vbCBzdXBwb3J0c0tleVN5c3RlbUFuZE1pbWVUeXBlKGNvbnN0IFN0
cmluZyYsIGNvbnN0IFN0cmluZyYpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpDRE1Q
cml2YXRlSW50ZXJmYWNlPiBjcmVhdGVDRE0oV2ViQ29yZTo6TGVnYWN5Q0RNKik7CisKKyAgICBI
YXNoTWFwPFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8
UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbj4+IG1fc2Vzc2lvbnM7CisgICAgSGFzaE1hcDxSZW1vdGVM
ZWdhY3lDRE1JZGVudGlmaWVyLCBXZWFrUHRyPFJlbW90ZUxlZ2FjeUNETT4+IG1fY2RtczsKKyAg
ICBXZWJQcm9jZXNzJiBtX3Byb2Nlc3M7Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1JZGVudGlm
aWVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNE
TUlkZW50aWZpZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZmI5YjdhMmYwZDYyYjE5ZGE5OWJjMzVhY2NkYzZh
MTA3NzdlZmViCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1JZGVudGlmaWVyLmgKQEAgLTAsMCArMSwzOSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFC
TEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlm
aWVyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitlbnVtIFJlbW90ZUxlZ2FjeUNETUlkZW50
aWZpZXJUeXBlIHsgfTsKK3VzaW5nIFJlbW90ZUxlZ2FjeUNETUlkZW50aWZpZXIgPSBPYmplY3RJ
ZGVudGlmaWVyPFJlbW90ZUxlZ2FjeUNETUlkZW50aWZpZXJUeXBlPjsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OTIzNTE3NDIwNWFmMTEzM2VjNWExYzEzYWZiYjYxNjM5NmI3MmY3NQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vz
c2lvbi5jcHAKQEAgLTAsMCArMSwxNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5oIgorCisjaWYgRU5BQkxFKEdQ
VV9QUk9DRVNTKSAmJiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUg
IkRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJSZW1vdGVMZWdhY3lDRE1GYWN0b3J5LmgiCisj
aW5jbHVkZSAiUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9HZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg+CisjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg+CisjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvVHlwZWRBcnJheVR5cGUuaD4KKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitzdGF0aWMgUmVmUHRyPEFycmF5QnVm
ZmVyPiBjb252ZXJ0VG9BcnJheUJ1ZmZlcihJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2Um
JiBidWZmZXIpCit7CisgICAgaWYgKGJ1ZmZlci5idWZmZXIoKSkKKyAgICAgICAgcmV0dXJuIEFy
cmF5QnVmZmVyOjpjcmVhdGUoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CisgICAgcmV0
dXJuIG51bGxwdHI7Cit9CisKK3N0YXRpYyBSZWZQdHI8VWludDhBcnJheT4gY29udmVydFRvVWlu
dDhBcnJheShJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmJiBidWZmZXIpCit7CisgICAg
YXV0byBhcnJheUJ1ZmZlciA9IGNvbnZlcnRUb0FycmF5QnVmZmVyKFdURk1vdmUoYnVmZmVyKSk7
CisgICAgaWYgKCFhcnJheUJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBz
aXplX3Qgc2l6ZUluQnl0ZXMgPSBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpOworICAgIHJldHVy
biBVaW50OEFycmF5OjpjcmVhdGUoV1RGTW92ZShhcnJheUJ1ZmZlciksIDAsIHNpemVJbkJ5dGVz
KTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdGF0aWMgT3B0aW9uYWw8SVBDOjpTaGFy
ZWRCdWZmZXJEYXRhUmVmZXJlbmNlPiBjb252ZXJ0VG9PcHRpb25hbERhdGFSZWZlcmVuY2UoVCBh
cnJheSkKK3sKKyAgICBpZiAoIWFycmF5KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgIHJldHVybiB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGFycmF5LT5kYXRhKCksIGFycmF5LT5i
eXRlTGVuZ3RoKCkpIH07Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RhdGljIElQQzo6
U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBjb252ZXJ0VG9EYXRhUmVmZXJlbmNlKFQgYXJyYXkp
Cit7CisgICAgaWYgKCFhcnJheSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICByZXR1cm4geyBT
aGFyZWRCdWZmZXI6OmNyZWF0ZSgoY29uc3QgY2hhciopYXJyYXktPmRhdGEoKSwgYXJyYXktPmJ5
dGVMZW5ndGgoKSkgfTsKK30KKworc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxlZ2FjeUNETVNlc3Np
b24+IFJlbW90ZUxlZ2FjeUNETVNlc3Npb246OmNyZWF0ZShXZWFrUHRyPFJlbW90ZUxlZ2FjeUNE
TUZhY3Rvcnk+IGZhY3RvcnksIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyJiYgaWQp
Cit7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMZWdhY3lDRE1TZXNzaW9uPihu
ZXcgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbihXVEZNb3ZlKGZhY3RvcnkpLCBXVEZNb3ZlKGlkKSkp
OworfQorCitSZW1vdGVMZWdhY3lDRE1TZXNzaW9uOjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uKFdl
YWtQdHI8UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeT4gZmFjdG9yeSwgUmVtb3RlTGVnYWN5Q0RNU2Vz
c2lvbklkZW50aWZpZXImJiBpZCkKKyAgICA6IG1fZmFjdG9yeShXVEZNb3ZlKGZhY3RvcnkpKQor
ICAgICwgbV9pZGVudGlmaWVyKFdURk1vdmUoaWQpKQoreworfQorCitSZWZQdHI8VWludDhBcnJh
eT4gUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbjo6Z2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIFVpbnQ4QXJyYXkqIGluaXREYXRhLCBTdHJpbmcmIGRlc3RpbmF0aW9uVVJM
LCB1bnNpZ25lZCBzaG9ydCYgZXJyb3JDb2RlLCB1aW50MzJfdCYgc3lzdGVtQ29kZSkKK3sKKyAg
ICBpZiAoIW1fZmFjdG9yeSB8fCAhaW5pdERhdGEpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
CisgICAgYXV0byBpcGNJbml0RGF0YSA9IGNvbnZlcnRUb0RhdGFSZWZlcmVuY2UoaW5pdERhdGEp
OworICAgIE9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZT4gaXBjTmV4dE1l
c3NhZ2U7CisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24o
KS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpHZW5lcmF0
ZUtleVJlcXVlc3QobWltZVR5cGUsIGlwY0luaXREYXRhKSwgTWVzc2FnZXM6OlJlbW90ZUxlZ2Fj
eUNETVNlc3Npb25Qcm94eTo6R2VuZXJhdGVLZXlSZXF1ZXN0OjpSZXBseShpcGNOZXh0TWVzc2Fn
ZSwgZGVzdGluYXRpb25VUkwsIGVycm9yQ29kZSwgc3lzdGVtQ29kZSksIG1faWRlbnRpZmllcik7
CisKKyAgICBpZiAoIWlwY05leHRNZXNzYWdlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwor
ICAgIHJldHVybiBjb252ZXJ0VG9VaW50OEFycmF5KFdURk1vdmUoKmlwY05leHRNZXNzYWdlKSk7
Cit9CisKK3ZvaWQgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbjo6cmVsZWFzZUtleXMoKQoreworICAg
IGlmICghbV9mYWN0b3J5KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2ZhY3RvcnktPmdwdVBy
b2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZUxlZ2Fj
eUNETVNlc3Npb25Qcm94eTo6UmVsZWFzZUtleXMoKSwgbV9pZGVudGlmaWVyKTsKK30KKworYm9v
bCBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uOjp1cGRhdGUoVWludDhBcnJheSoga2V5RGF0YSwgUmVm
UHRyPFVpbnQ4QXJyYXk+JiBuZXh0TWVzc2FnZSwgdW5zaWduZWQgc2hvcnQmIGVycm9yQ29kZSwg
dWludDMyX3QmIHN5c3RlbUNvZGUpCit7CisgICAgaWYgKCFtX2ZhY3RvcnkgfHwgIWtleURhdGEp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1dG8gaXBjS2V5RGF0YSA9IGNvbnZlcnRU
b0RhdGFSZWZlcmVuY2UoV1RGTW92ZShrZXlEYXRhKSk7CisgICAgYm9vbCBzdWNjZWVkZWQgeyBm
YWxzZSB9OworICAgIE9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZT4gaXBj
TmV4dE1lc3NhZ2U7CisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5l
Y3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpV
cGRhdGUoaXBjS2V5RGF0YSksIE1lc3NhZ2VzOjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6
OlVwZGF0ZTo6UmVwbHkoc3VjY2VlZGVkLCBpcGNOZXh0TWVzc2FnZSwgZXJyb3JDb2RlLCBzeXN0
ZW1Db2RlKSwgbV9pZGVudGlmaWVyKTsKKworICAgIGlmIChpcGNOZXh0TWVzc2FnZSkKKyAgICAg
ICAgbmV4dE1lc3NhZ2UgPSBjb252ZXJ0VG9VaW50OEFycmF5KFdURk1vdmUoKmlwY05leHRNZXNz
YWdlKSk7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK1JlZlB0cjxBcnJheUJ1ZmZlcj4gUmVt
b3RlTGVnYWN5Q0RNU2Vzc2lvbjo6Y2FjaGVkS2V5Rm9yS2V5SUQoY29uc3QgU3RyaW5nJiBrZXlJ
ZCkgY29uc3QKK3sKKyAgICBpZiAoIW1fZmFjdG9yeSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisKKyAgICBPcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U+IGlwY0tleTsK
KyAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRT
eW5jKE1lc3NhZ2VzOjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OkNhY2hlZEtleUZvcktl
eUlEKGtleUlkKSwgTWVzc2FnZXM6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6Q2FjaGVk
S2V5Rm9yS2V5SUQ6OlJlcGx5KGlwY0tleSksIG1faWRlbnRpZmllcik7CisKKyAgICBpZiAoIWlw
Y0tleSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gY29udmVydFRvQXJy
YXlCdWZmZXIoV1RGTW92ZSgqaXBjS2V5KSk7Cit9CisKK3ZvaWQgUmVtb3RlTGVnYWN5Q0RNU2Vz
c2lvbjo6c2VuZE1lc3NhZ2UoT3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNl
PiYmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25VUkwpCit7CisgICAgaWYgKCFt
X2NsaWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFtZXNzYWdlKSB7CisgICAgICAg
IG1fY2xpZW50LT5zZW5kTWVzc2FnZShudWxscHRyLCBkZXN0aW5hdGlvblVSTCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBtX2NsaWVudC0+c2VuZE1lc3NhZ2UoY29udmVydFRvVWlu
dDhBcnJheShXVEZNb3ZlKCptZXNzYWdlKSkuZ2V0KCksIGRlc3RpbmF0aW9uVVJMKTsKK30KKwor
dm9pZCBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uOjpzZW5kRXJyb3IoV2ViQ29yZTo6TGVnYWN5Q0RN
U2Vzc2lvbkNsaWVudDo6TWVkaWFLZXlFcnJvckNvZGUgZXJyb3JDb2RlLCB1aW50MzJfdCBzeXN0
ZW1Db2RlKQoreworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPnNlbmRFcnJv
cihlcnJvckNvZGUsIHN5c3RlbUNvZGUpOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9u
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNl
c3Npb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi41MzNhYzkzNTUxZWQ5NWQyMzg4MmM3ZDdjOWZjZjgxODE5OWI5
YzI0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmgKQEAgLTAsMCArMSw3OCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTEVHQUNZ
X0VOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1
ZGUgIlJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8V2ViQ29y
ZS9MZWdhY3lDRE1TZXNzaW9uLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNw
YWNlIElQQyB7CitjbGFzcyBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlOworfQorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworY2xhc3MgUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeTsKKworY2xhc3MgUmVt
b3RlTGVnYWN5Q0RNU2Vzc2lvbiBmaW5hbAorICAgIDogcHVibGljIFdlYkNvcmU6OkxlZ2FjeUNE
TVNlc3Npb24KKyAgICAsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CitwdWJsaWM6Cisg
ICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMZWdhY3lDRE1TZXNzaW9uPiBjcmVhdGUo
V2Vha1B0cjxSZW1vdGVMZWdhY3lDRE1GYWN0b3J5PiwgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklk
ZW50aWZpZXImJik7CisKKyAgICAvLyBNZXNzYWdlUmVjZWl2ZXIKKyAgICB2b2lkIGRpZFJlY2Vp
dmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOworCisgICAg
Y29uc3QgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXImIGlkZW50aWZpZXIoKSBjb25z
dCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KKworcHJpdmF0ZToKKyAgICBSZW1vdGVMZWdhY3lD
RE1TZXNzaW9uKFdlYWtQdHI8UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeT4sIFJlbW90ZUxlZ2FjeUNE
TVNlc3Npb25JZGVudGlmaWVyJiYpOworCisgICAgLy8gTGVnYWN5Q0RNU2Vzc2lvbgorICAgIFdl
YkNvcmU6OkxlZ2FjeUNETVNlc3Npb25UeXBlIHR5cGUoKSBmaW5hbCB7IHJldHVybiBXZWJDb3Jl
OjpDRE1TZXNzaW9uVHlwZVJlbW90ZTsgfQorICAgIHZvaWQgc2V0Q2xpZW50KFdlYkNvcmU6Okxl
Z2FjeUNETVNlc3Npb25DbGllbnQqIGNsaWVudCkgZmluYWwgeyBtX2NsaWVudCA9IGNsaWVudDsg
fQorICAgIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9z
ZXNzaW9uSWQ7IH0KKyAgICBSZWZQdHI8VWludDhBcnJheT4gZ2VuZXJhdGVLZXlSZXF1ZXN0KGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIFVpbnQ4QXJyYXkqIGluaXREYXRhLCBTdHJpbmcmIGRlc3Rp
bmF0aW9uVVJMLCB1bnNpZ25lZCBzaG9ydCYgZXJyb3JDb2RlLCB1aW50MzJfdCYgc3lzdGVtQ29k
ZSkgZmluYWw7CisgICAgdm9pZCByZWxlYXNlS2V5cygpIGZpbmFsOworICAgIGJvb2wgdXBkYXRl
KFVpbnQ4QXJyYXkqLCBSZWZQdHI8VWludDhBcnJheT4mIG5leHRNZXNzYWdlLCB1bnNpZ25lZCBz
aG9ydCYgZXJyb3JDb2RlLCB1aW50MzJfdCYgc3lzdGVtQ29kZSkgZmluYWw7CisgICAgUmVmUHRy
PEFycmF5QnVmZmVyPiBjYWNoZWRLZXlGb3JLZXlJRChjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5h
bDsKKworICAgIC8vIE1lc3NhZ2VzCisgICAgdm9pZCBzZW5kTWVzc2FnZShPcHRpb25hbDxJUEM6
OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U+JiYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXN0
aW5hdGlvblVSTCk7CisgICAgdm9pZCBzZW5kRXJyb3IoV2ViQ29yZTo6TGVnYWN5Q0RNU2Vzc2lv
bkNsaWVudDo6TWVkaWFLZXlFcnJvckNvZGUsIHVpbnQzMl90IHN5c3RlbUNvZGUpOworCisgICAg
V2Vha1B0cjxSZW1vdGVMZWdhY3lDRE1GYWN0b3J5PiBtX2ZhY3Rvcnk7CisgICAgUmVtb3RlTGVn
YWN5Q0RNU2Vzc2lvbklkZW50aWZpZXIgbV9pZGVudGlmaWVyOworICAgIFdlYkNvcmU6OkxlZ2Fj
eUNETVNlc3Npb25DbGllbnQqIG1fY2xpZW50OworICAgIFN0cmluZyBtX3Nlc3Npb25JZDsKK307
CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24ubWVzc2FnZXMuaW4K
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uODQ3YWY2MDQwMWY5MWUzNDEwYzJmZTRkNGU0NDcxNTI2MTNhMTI4NgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
TGVnYWN5Q0RNU2Vzc2lvbi5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDMxIEBACisjIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBF
TkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKKworbWVzc2FnZXMgLT4gUmVtb3RlTGVnYWN5
Q0RNU2Vzc2lvbiBOb3RSZWZDb3VudGVkIHsKKyAgICBTZW5kTWVzc2FnZShPcHRpb25hbDxJUEM6
OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U+IG1lc3NhZ2UsIFN0cmluZyBkZXN0aW5hdGlvblVS
TCkKKyAgICBTZW5kRXJyb3IoZW51bTp1aW50OF90IFdlYkNvcmU6OkxlZ2FjeUNETVNlc3Npb25D
bGllbnQ6Ok1lZGlhS2V5RXJyb3JDb2RlIGVycm9yQ29kZSwgdWludDMyX3Qgc3lzdGVtQ29kZSkK
K30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGYwOGFkYTgzMTRmZGJkM2ZmOGM3ZWI3MDQ3OTRlMTg1YmUxOWYyMgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVn
YWN5Q0RNU2Vzc2lvbklkZW50aWZpZXIuaApAQCAtMCwwICsxLDM5IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShMRUdBQ1lf
RU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4KKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK2VudW0gUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZp
ZXJUeXBlIHsgfTsKK3VzaW5nIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyID0gT2Jq
ZWN0SWRlbnRpZmllcjxSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllclR5cGU+OworCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5j
cHAKaW5kZXggMzhhNTNhMGNiY2ZmODlkNDVlYmNkNDFlN2U2YzM1ODNiZDI3ZDNhYS4uYjcxNjA4
YjkzOGFiZjJiYzljNjYyODI0Y2UzMmYxZTAwM2ExZWY5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyLmNwcApAQCAtMTgwLDYgKzE4MCwxNyBAQCB2b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFu
YWdlcjo6ZGVsZXRlUmVtb3RlTWVkaWFQbGF5ZXIoTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSQog
ICAgIGdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpEZWxldGVNZWRpYVBsYXllcihpZCksIDApOwog
fQogCitNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIFJlbW90ZU1lZGlhUGxheWVy
TWFuYWdlcjo6ZmluZFJlbW90ZVBsYXllcklkKGNvbnN0IE1lZGlhUGxheWVyUHJpdmF0ZUludGVy
ZmFjZSogcGxheWVyKQoreworICAgIGZvciAoYXV0byBwYWlyIDogbV9wbGF5ZXJzKSB7CisgICAg
ICAgIGlmIChwYWlyLnZhbHVlID09IHBsYXllcikKKyAgICAgICAgICAgIHJldHVybiBwYWlyLmtl
eTsKKyAgICB9CisKKyAgICByZXR1cm4geyB9OworfQorCisKIHZvaWQgUmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyOjpnZXRTdXBwb3J0ZWRUeXBlcyhNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2lu
ZUlkZW50aWZpZXIgcmVtb3RlRW5naW5lSWRlbnRpZmllciwgSGFzaFNldDxTdHJpbmcsIEFTQ0lJ
Q2FzZUluc2Vuc2l0aXZlSGFzaD4mIHJlc3VsdCkKIHsKICAgICBhdXRvJiBjYWNoZSA9IHR5cGVD
YWNoZShyZW1vdGVFbmdpbmVJZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5oCmlu
ZGV4IDMyMGVjMzAxODlkNmZjNTYyZjJhZWJmZjUxYzkwZjc0ZWRmOGRhMDEuLmJlZWNiMzdlZmY3
OGQ5OWU4YmNmOGU5NDNjM2QyMTYwZTk3NDlhYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIu
aApAQCAtNjksNiArNjksOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGRlbGV0ZVJlbW90ZU1lZGlh
UGxheWVyKE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIpOwogCisgICAgTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBmaW5kUmVtb3RlUGxheWVySWQoY29uc3QgV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlKik7CisKIHByaXZhdGU6CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZT4gY3JlYXRl
UmVtb3RlTWVkaWFQbGF5ZXIoV2ViQ29yZTo6TWVkaWFQbGF5ZXIqLCBXZWJDb3JlOjpNZWRpYVBs
YXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1dlYk1lZGlhU3RyYXRlZ3kuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9XZWJNZWRpYVN0cmF0ZWd5LmNwcAppbmRleCAx
ZmYwOTgxMzIxODc1Y2M1ZmNiMWJhYzFlODc1NTZhNDJjOTU4NTlmLi4zMWY3MzJhMTBhZjU2ZDEz
ZWE5ZTk5NTJjMThhNjE4MDFlN2QxYmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1dlYk1lZGlhU3RyYXRlZ3kuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvV2ViTWVkaWFTdHJhdGVneS5jcHAKQEAgLTY3LDYgKzY3LDEy
IEBAIHZvaWQgV2ViTWVkaWFTdHJhdGVneTo6cmVnaXN0ZXJDRE1GYWN0b3JpZXMoVmVjdG9yPFdl
YkNvcmU6OkNETUZhY3RvcnkqPiYgZmFjdG9yCiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURf
TUVESUEpCiB2b2lkIFdlYk1lZGlhU3RyYXRlZ3k6OnJlZ2lzdGVyTGVnYWN5Q0RNRmFjdG9yaWVz
KFZlY3RvcjxMZWdhY3lDRE1GYWN0b3J5PiYgZmFjdG9yaWVzKQogeworI2lmIEVOQUJMRShHUFVf
UFJPQ0VTUykKKyAgICBpZiAobV91c2VHUFVQcm9jZXNzKSB7CisgICAgICAgIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLmVuc3VyZUdQVVByb2Nlc3NDb25uZWN0aW9uKCkubGVnYWN5Q0RNRmFjdG9y
eSgpLnJlZ2lzdGVyRmFjdG9yeShmYWN0b3JpZXMpOworICAgICAgICByZXR1cm47CisgICAgfQor
I2VuZGlmCiAgICAgV2ViQ29yZTo6TGVnYWN5Q0RNOjpwbGF0Zm9ybVJlZ2lzdGVyRmFjdG9yaWVz
KGZhY3Rvcmllcyk7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKaW5kZXggZjVjYmQ1Y2RjMjZhYWUwMTRkNTBhMzk0MTE3ZGMwYzVkYmE1
NmE4MS4uZDVjZTdmNDFhOTQwNGIxNjY2MmRhNzBkMjA3NDBkNzc4ODg0OGZkNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTMyNSw2ICszMjUs
OSBAQAogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiAjaW5jbHVkZSAiUmVtb3RlQ0RNRmFj
dG9yeS5oIgogI2VuZGlmCisjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCisjaW5j
bHVkZSAiUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeS5oIgorI2VuZGlmCiAjZW5kaWYKIAogbmFtZXNw
YWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXgg
OGNmZGExZjMxMGU1YWUwZTkzZmE4YzEwOTRiNzU2MTdlNmM5YjlmMS4uNzYwNjE5ZTJkM2RiM2Ex
MWQzZTNlYTNiNDFiNTkwZGFkYjYyZWI2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcApAQCAtMTc4LDYgKzE3OCwxMCBAQAogI2luY2x1ZGUgIlJlbW90ZUNETUZhY3Rv
cnkuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCisjaW5j
bHVkZSAiUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeS5oIgorI2VuZGlmCisKICNkZWZpbmUgUkVMRUFT
RV9MT0dfU0VTU0lPTl9JRCAobV9zZXNzaW9uSUQgPyBtX3Nlc3Npb25JRC0+dG9VSW50NjQoKSA6
IDApCiAjZGVmaW5lIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoY2hhbm5lbCwgZm10LCAuLi4pIFJF
TEVBU0VfTE9HX0lGKGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBjaGFubmVsLCAiJXAgLSBb
c2Vzc2lvbklEPSUiIFBSSXU2NCAiXSBXZWJQcm9jZXNzOjoiIGZtdCwgdGhpcywgUkVMRUFTRV9M
T0dfU0VTU0lPTl9JRCwgIyNfX1ZBX0FSR1NfXykKIApAQCAtMjQ4LDYgKzI1MiwxMCBAQCBXZWJQ
cm9jZXNzOjpXZWJQcm9jZXNzKCkKICAgICBhZGRTdXBwbGVtZW50PFJlbW90ZUNETUZhY3Rvcnk+
KCk7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKExFR0FDWV9F
TkNSWVBURURfTUVESUEpCisgICAgYWRkU3VwcGxlbWVudDxSZW1vdGVMZWdhY3lDRE1GYWN0b3J5
PigpOworI2VuZGlmCisKICAgICBHaWdhY2FnZTo6Zm9yYmlkRGlzYWJsaW5nUHJpbWl0aXZlR2ln
YWNhZ2UoKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392683</attachid>
            <date>2020-03-05 23:00:33 -0800</date>
            <delta_ts>2020-03-06 16:28:18 -0800</delta_ts>
            <desc>Part 1: WebCore</desc>
            <filename>bug-208402-20200305230032.patch</filename>
            <type>text/plain</type>
            <size>16296</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3OTE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmUxYWJmYTlmOThhOWY2
YjMyMjE2NWYzMWU1NGYyZDc1OTUyMDA4ZS4uNWZmNmE1YzdjZjYyMWZhODBkMzUyMzI3ODYzZDkw
NGEyN2NhYjVlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDIwLTAyLTI4ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFVQXSBJbXBsZW1lbnQg
TGVnYWN5IEVNRSBBUEkgaW4gdGhlIEdQVSBQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg0MDIKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQcmVwYXJlIGZvciBydW5uaW5nIHRoZSBMZWdhY3lD
RE0gZXQuIGFsLiBpbiB0aGUgR1BVIHByb2Nlc3MuCisKKyAgICAgICAgU2xpZ2h0bHkgbW9kZXJu
aXplIExlZ2FjeUNETSB0byBhbGxvdyBhbGwgbWV0aG9kcyByZXByZXNlbnRhaW5nIGEgTGVnYWN5
Q0RNRmFjdG9yeSB0byBiZSBXVEY6OkZ1bmN0aW9ucy4KKworICAgICAgICBBbGxvdyB0aGUgbGlz
dCBvZiByZWdpc3RlcmVkIGZhY3RvcmllcyB0byBiZSBjbGVhcmVkIGFuZCByZXNldCBhdCBydW50
aW1lLgorCisgICAgICAgIE1vZGlmeSBXZWJLaXRNZWRpYUtleXMgdG8gbm90aWZ5IHRoZSBNZWRp
YVBsYXllciB3aGVuIHRoZSBrZXlzIG9iamVjdCBpcyBhZGRlZCB0byBhIEhUTUxNZWRpYUVsZW1l
bnQuCisKKyAgICAgICAgRXhwb3NlIHRoZSBwb2ludGVyIHRvIHRoZSBpbnRlcm5hbCBDRE1Qcml2
YXRlSW50ZXJmYWNlIGZvciB1c2UgaW4gV2ViS2l0LgorCisgICAgICAgICogTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2Fj
eUNETTo6cGxhdGZvcm1SZWdpc3RlckZhY3Rvcmllcyk6CisgICAgICAgIChXZWJDb3JlOjppbnN0
YWxsZWRDRE1GYWN0b3JpZXMpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5Q0RNOjpyZWdpc3Rl
ckNETUZhY3RvcnkpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5Q0RNRmFjdG9yeUZvcktleVN5
c3RlbSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lDRE06OnN1cHBvcnRzS2V5U3lzdGVtKToK
KyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUNETTo6a2V5U3lzdGVtU3VwcG9ydHNNaW1lVHlwZSk6
CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lDRE06OkxlZ2FjeUNETSk6CisgICAgICAgIChXZWJD
b3JlOjpMZWdhY3lDRE06OmNyZWF0ZVNlc3Npb24pOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETS5oOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJL
aXRNZWRpYUtleXM6OnNldE1lZGlhRWxlbWVudCk6CisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYUVuZ2luZVdhc1VwZGF0
ZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0xlZ2FjeUNETVNlc3Npb24uaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllcjo6c2V0Q0RNKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJp
dmF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlOjpz
ZXRDRE0pOgorCiAyMDIwLTAzLTA1ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgog
CiAgICAgICAgIFtHUFVQXSBDb252ZXJ0IENETUZhY3RvcnkgYXdheSBmcm9tIHBsYXRmb3JtU3Ry
YXRlZ2llcygpIGFuZCB1c2UgV2ViUHJvY2VzcyBzZXR0aW5ncyBpbnN0ZWFkCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE0u
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5
Q0RNLmNwcAppbmRleCA4MzdkZjEyM2FlNTk2ZjM1MzdjOTE1MjcwM2UzZDI3MWIzNDZlYjUxLi4w
NGQ5ODU0YjQwNzAxY2M2NWE0NTNiMmI3NzMyYmEzNmIyNzM2ZTNlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE0uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNE
TS5jcHAKQEAgLTQ0LDQ4ICs0NCw1MiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3Qg
Q0RNRmFjdG9yeSB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ0RNRmFjdG9yeSk7IFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIENETUZhY3RvcnkoQ3JlYXRlQ0RNJiYg
Y29uc3RydWN0b3IsIENETVN1cHBvcnRzS2V5U3lzdGVtIHN1cHBvcnRzS2V5U3lzdGVtLCBDRE1T
dXBwb3J0c0tleVN5c3RlbUFuZE1pbWVUeXBlIHN1cHBvcnRzS2V5U3lzdGVtQW5kTWltZVR5cGUp
Ci0gICAgICAgIDogY29uc3RydWN0b3IoV1RGTW92ZShjb25zdHJ1Y3RvcikpCi0gICAgICAgICwg
c3VwcG9ydHNLZXlTeXN0ZW0oc3VwcG9ydHNLZXlTeXN0ZW0pCi0gICAgICAgICwgc3VwcG9ydHNL
ZXlTeXN0ZW1BbmRNaW1lVHlwZShzdXBwb3J0c0tleVN5c3RlbUFuZE1pbWVUeXBlKQotICAgIHsK
LSAgICB9Ci0KICAgICBDcmVhdGVDRE0gY29uc3RydWN0b3I7CiAgICAgQ0RNU3VwcG9ydHNLZXlT
eXN0ZW0gc3VwcG9ydHNLZXlTeXN0ZW07CiAgICAgQ0RNU3VwcG9ydHNLZXlTeXN0ZW1BbmRNaW1l
VHlwZSBzdXBwb3J0c0tleVN5c3RlbUFuZE1pbWVUeXBlOwogfTsKIAotc3RhdGljIFZlY3RvcjxD
RE1GYWN0b3J5Kj4mIGluc3RhbGxlZENETUZhY3RvcmllcygpCitzdGF0aWMgdm9pZCBwbGF0Zm9y
bVJlZ2lzdGVyRmFjdG9yaWVzKFZlY3RvcjxDRE1GYWN0b3J5PiYgZmFjdG9yaWVzKQogewotICAg
IHN0YXRpYyBhdXRvIGNkbXMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoVmVjdG9yPENETUZhY3Rvcnkq
PiB7Ci0gICAgICAgIG5ldyBDRE1GYWN0b3J5KFtdKExlZ2FjeUNETSogY2RtKSB7IHJldHVybiBt
YWtlVW5pcXVlPExlZ2FjeUNETVByaXZhdGVDbGVhcktleT4oY2RtKTsgfSwKLSAgICAgICAgICAg
IExlZ2FjeUNETVByaXZhdGVDbGVhcktleTo6c3VwcG9ydHNLZXlTeXN0ZW0sIExlZ2FjeUNETVBy
aXZhdGVDbGVhcktleTo6c3VwcG9ydHNLZXlTeXN0ZW1BbmRNaW1lVHlwZSksCi0KLSAgICAgICAg
Ly8gRklYTUU6IGluaXRpYWxpemUgc3BlY2lmaWMgVUEgQ0RNcy4gaHR0cDovL3dlYmtpdC5vcmcv
Yi8xMDkzMTgsIGh0dHA6Ly93ZWJraXQub3JnL2IvMTA5MzIwCi0gICAgICAgIG5ldyBDRE1GYWN0
b3J5KFtdKExlZ2FjeUNETSogY2RtKSB7IHJldHVybiBtYWtlVW5pcXVlPENETVByaXZhdGVNZWRp
YVBsYXllcj4oY2RtKTsgfSwKLSAgICAgICAgICAgIENETVByaXZhdGVNZWRpYVBsYXllcjo6c3Vw
cG9ydHNLZXlTeXN0ZW0sIENETVByaXZhdGVNZWRpYVBsYXllcjo6c3VwcG9ydHNLZXlTeXN0ZW1B
bmRNaW1lVHlwZSksCi0KKyAgICBmYWN0b3JpZXMuYXBwZW5kKHsgW10oTGVnYWN5Q0RNKiBjZG0p
IHsgcmV0dXJuIG1ha2VVbmlxdWU8TGVnYWN5Q0RNUHJpdmF0ZUNsZWFyS2V5PihjZG0pOyB9LCBM
ZWdhY3lDRE1Qcml2YXRlQ2xlYXJLZXk6OnN1cHBvcnRzS2V5U3lzdGVtLCBMZWdhY3lDRE1Qcml2
YXRlQ2xlYXJLZXk6OnN1cHBvcnRzS2V5U3lzdGVtQW5kTWltZVR5cGUgfSk7CisgICAgLy8gRklY
TUU6IGluaXRpYWxpemUgc3BlY2lmaWMgVUEgQ0RNcy4gaHR0cDovL3dlYmtpdC5vcmcvYi8xMDkz
MTgsIGh0dHA6Ly93ZWJraXQub3JnL2IvMTA5MzIwCisgICAgZmFjdG9yaWVzLmFwcGVuZCh7IFtd
KExlZ2FjeUNETSogY2RtKSB7IHJldHVybiBtYWtlVW5pcXVlPENETVByaXZhdGVNZWRpYVBsYXll
cj4oY2RtKTsgfSwgQ0RNUHJpdmF0ZU1lZGlhUGxheWVyOjpzdXBwb3J0c0tleVN5c3RlbSwgQ0RN
UHJpdmF0ZU1lZGlhUGxheWVyOjpzdXBwb3J0c0tleVN5c3RlbUFuZE1pbWVUeXBlIH0pOwogI2lm
IChIQVZFKEFWQ09OVEVOVEtFWVNFU1NJT04pIHx8IEhBVkUoQVZTVFJFQU1TRVNTSU9OKSkgJiYg
RU5BQkxFKE1FRElBX1NPVVJDRSkKLSAgICAgICAgbmV3IENETUZhY3RvcnkoW10oTGVnYWN5Q0RN
KiBjZG0pIHsgcmV0dXJuIG1ha2VVbmlxdWU8Q0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQz4o
Y2RtKTsgfSwKLSAgICAgICAgICAgIENETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnN1cHBv
cnRzS2V5U3lzdGVtLCBDRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzdXBwb3J0c0tleVN5
c3RlbUFuZE1pbWVUeXBlKSwKKyAgICBmYWN0b3JpZXMuYXBwZW5kKHsgW10oTGVnYWN5Q0RNKiBj
ZG0pIHsgcmV0dXJuIG1ha2VVbmlxdWU8Q0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQz4oY2Rt
KTsgfSwgQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c3VwcG9ydHNLZXlTeXN0ZW0sIENE
TVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnN1cHBvcnRzS2V5U3lzdGVtQW5kTWltZVR5cGUg
fSk7CiAjZW5kaWYKK30KKworc3RhdGljIFZlY3RvcjxDRE1GYWN0b3J5PiYgaW5zdGFsbGVkQ0RN
RmFjdG9yaWVzKCkKK3sKKyAgICBzdGF0aWMgYXV0byBjZG1zID0gbWFrZU5ldmVyRGVzdHJveWVk
PFZlY3RvcjxDRE1GYWN0b3J5Pj4oeyB9KTsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgcmVn
aXN0ZXJEZWZhdWx0czsKKyAgICBzdGQ6OmNhbGxfb25jZShyZWdpc3RlckRlZmF1bHRzLCBbJl0g
eworICAgICAgICBwbGF0Zm9ybVJlZ2lzdGVyRmFjdG9yaWVzKGNkbXMpOwogICAgIH0pOwogICAg
IHJldHVybiBjZG1zOwogfQogCi12b2lkIExlZ2FjeUNETTo6cmVnaXN0ZXJDRE1GYWN0b3J5KENy
ZWF0ZUNETSYmIGNvbnN0cnVjdG9yLCBDRE1TdXBwb3J0c0tleVN5c3RlbSBzdXBwb3J0c0tleVN5
c3RlbSwgQ0RNU3VwcG9ydHNLZXlTeXN0ZW1BbmRNaW1lVHlwZSBzdXBwb3J0c0tleVN5c3RlbUFu
ZE1pbWVUeXBlKQordm9pZCBMZWdhY3lDRE06OnJlc2V0RmFjdG9yaWVzKCkKK3sKKyAgICBjbGVh
ckZhY3RvcmllcygpOworICAgIHBsYXRmb3JtUmVnaXN0ZXJGYWN0b3JpZXMoaW5zdGFsbGVkQ0RN
RmFjdG9yaWVzKCkpOworfQorCit2b2lkIExlZ2FjeUNETTo6Y2xlYXJGYWN0b3JpZXMoKQorewor
ICAgIGluc3RhbGxlZENETUZhY3RvcmllcygpLmNsZWFyKCk7Cit9CisKK3ZvaWQgTGVnYWN5Q0RN
OjpyZWdpc3RlckNETUZhY3RvcnkoQ3JlYXRlQ0RNJiYgY29uc3RydWN0b3IsIENETVN1cHBvcnRz
S2V5U3lzdGVtJiYgc3VwcG9ydHNLZXlTeXN0ZW0sIENETVN1cHBvcnRzS2V5U3lzdGVtQW5kTWlt
ZVR5cGUmJiBzdXBwb3J0c0tleVN5c3RlbUFuZE1pbWVUeXBlKQogewotICAgIGluc3RhbGxlZENE
TUZhY3RvcmllcygpLmFwcGVuZChuZXcgQ0RNRmFjdG9yeShXVEZNb3ZlKGNvbnN0cnVjdG9yKSwg
c3VwcG9ydHNLZXlTeXN0ZW0sIHN1cHBvcnRzS2V5U3lzdGVtQW5kTWltZVR5cGUpKTsKKyAgICBp
bnN0YWxsZWRDRE1GYWN0b3JpZXMoKS5hcHBlbmQoeyBXVEZNb3ZlKGNvbnN0cnVjdG9yKSwgV1RG
TW92ZShzdXBwb3J0c0tleVN5c3RlbSksIFdURk1vdmUoc3VwcG9ydHNLZXlTeXN0ZW1BbmRNaW1l
VHlwZSkgfSk7CiB9CiAKIHN0YXRpYyBDRE1GYWN0b3J5KiBDRE1GYWN0b3J5Rm9yS2V5U3lzdGVt
KGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKQogewogICAgIGZvciAoYXV0byYgZmFjdG9yeSA6IGlu
c3RhbGxlZENETUZhY3RvcmllcygpKSB7Ci0gICAgICAgIGlmIChmYWN0b3J5LT5zdXBwb3J0c0tl
eVN5c3RlbShrZXlTeXN0ZW0pKQotICAgICAgICAgICAgcmV0dXJuIGZhY3Rvcnk7CisgICAgICAg
IGlmIChmYWN0b3J5LnN1cHBvcnRzS2V5U3lzdGVtKGtleVN5c3RlbSkpCisgICAgICAgICAgICBy
ZXR1cm4gJmZhY3Rvcnk7CiAgICAgfQogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RN
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lD
RE0uaAppbmRleCBmYjVkYTFmMTZkYTAyZWM4NGMzNDc3ZDM1NWZlMGE1ZTg5NjQwNmE5Li4xMTA3
MWQ1ZmE0ZjkzODljY2VkZWJiMTgyMjM4ODIxMGI4YmRhNWIyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE0uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE0uaApA
QCAtMzksOSArMzksOSBAQCBjbGFzcyBMZWdhY3lDRE07CiBjbGFzcyBDRE1Qcml2YXRlSW50ZXJm
YWNlOwogY2xhc3MgTWVkaWFQbGF5ZXI7CiAKLXVzaW5nIENyZWF0ZUNETSA9IFdURjo6RnVuY3Rp
b248c3RkOjp1bmlxdWVfcHRyPENETVByaXZhdGVJbnRlcmZhY2U+IChMZWdhY3lDRE0qKT47Ci10
eXBlZGVmIGJvb2wgKCpDRE1TdXBwb3J0c0tleVN5c3RlbSkoY29uc3QgU3RyaW5nJik7Ci10eXBl
ZGVmIGJvb2wgKCpDRE1TdXBwb3J0c0tleVN5c3RlbUFuZE1pbWVUeXBlKShjb25zdCBTdHJpbmcm
LCBjb25zdCBTdHJpbmcmKTsKK3VzaW5nIENyZWF0ZUNETSA9IFdURjo6RnVuY3Rpb248c3RkOjp1
bmlxdWVfcHRyPENETVByaXZhdGVJbnRlcmZhY2U+KExlZ2FjeUNETSopPjsKK3VzaW5nIENETVN1
cHBvcnRzS2V5U3lzdGVtID0gV1RGOjpGdW5jdGlvbjxib29sKGNvbnN0IFN0cmluZyYpPjsKK3Vz
aW5nIENETVN1cHBvcnRzS2V5U3lzdGVtQW5kTWltZVR5cGUgPSBXVEY6OkZ1bmN0aW9uPGJvb2wo
Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJik+OwogCiBjbGFzcyBMZWdhY3lDRE1DbGllbnQg
ewogcHVibGljOgpAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBSZWZQdHI8
TWVkaWFQbGF5ZXI+IGNkbU1lZGlhUGxheWVyKGNvbnN0IExlZ2FjeUNETSopIGNvbnN0ID0gMDsK
IH07CiAKLWNsYXNzIExlZ2FjeUNETSBmaW5hbCB7CitjbGFzcyBXRUJDT1JFX0VYUE9SVCBMZWdh
Y3lDRE0gZmluYWwgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IGV4cGxpY2l0IExlZ2FjeUNETShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSk7CkBAIC01OSw5ICs1
OSwxMiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNLZXlTeXN0ZW0oY29uc3Qg
U3RyaW5nJik7CiAgICAgc3RhdGljIGJvb2wga2V5U3lzdGVtU3VwcG9ydHNNaW1lVHlwZShjb25z
dCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CiAgICAgc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxMZWdhY3lDRE0+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGtleVN5c3Rl
bSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgcmVnaXN0ZXJDRE1GYWN0b3J5KENy
ZWF0ZUNETSYmLCBDRE1TdXBwb3J0c0tleVN5c3RlbSwgQ0RNU3VwcG9ydHNLZXlTeXN0ZW1BbmRN
aW1lVHlwZSk7CisgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJDRE1GYWN0b3J5KENyZWF0ZUNETSYm
LCBDRE1TdXBwb3J0c0tleVN5c3RlbSYmLCBDRE1TdXBwb3J0c0tleVN5c3RlbUFuZE1pbWVUeXBl
JiYpOwogICAgIH5MZWdhY3lDRE0oKTsKIAorICAgIHN0YXRpYyB2b2lkIHJlc2V0RmFjdG9yaWVz
KCk7CisgICAgc3RhdGljIHZvaWQgY2xlYXJGYWN0b3JpZXMoKTsKKwogICAgIGJvb2wgc3VwcG9y
dHNNSU1FVHlwZShjb25zdCBTdHJpbmcmKSBjb25zdDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TGVn
YWN5Q0RNU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbihMZWdhY3lDRE1TZXNzaW9uQ2xpZW50Jik7CiAK
QEAgLTcxLDYgKzc0LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Q2xpZW50KExlZ2FjeUNETUNs
aWVudCogY2xpZW50KSB7IG1fY2xpZW50ID0gY2xpZW50OyB9CiAKICAgICBSZWZQdHI8TWVkaWFQ
bGF5ZXI+IG1lZGlhUGxheWVyKCkgY29uc3Q7CisgICAgQ0RNUHJpdmF0ZUludGVyZmFjZSogY2Rt
UHJpdmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpdmF0ZS5nZXQoKTsgfQogCiBwcml2YXRlOgog
ICAgIFN0cmluZyBtX2tleVN5c3RlbTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5cy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleXMuY3BwCmlu
ZGV4IGU1MzdlNjBmNzI4YjMwYzBlNGFmNTIxYzMyYWE3YjM5NWFkNjY0YzMuLmJmNjQ2ZGVjZGU3
M2MyZWM2NWM0NmE4YjQ5MTIyOWI3ZmExYjMzYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5cy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFL
ZXlzLmNwcApAQCAtMTI4LDEzICsxMjgsMTggQEAgYm9vbCBXZWJLaXRNZWRpYUtleXM6OmlzVHlw
ZVN1cHBvcnRlZChjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBtaW0KIAog
dm9pZCBXZWJLaXRNZWRpYUtleXM6OnNldE1lZGlhRWxlbWVudChIVE1MTWVkaWFFbGVtZW50KiBl
bGVtZW50KQogewotICAgIGlmIChtX21lZGlhRWxlbWVudCAmJiBtX21lZGlhRWxlbWVudC0+cGxh
eWVyKCkpCisgICAgaWYgKG1fbWVkaWFFbGVtZW50ICYmIG1fbWVkaWFFbGVtZW50LT5wbGF5ZXIo
KSkgewogICAgICAgICBtX21lZGlhRWxlbWVudC0+cGxheWVyKCktPnNldENETVNlc3Npb24obnVs
bHB0cik7CisgICAgICAgIG1fbWVkaWFFbGVtZW50LT5wbGF5ZXIoKS0+c2V0Q0RNKG51bGxwdHIp
OworICAgIH0KIAogICAgIG1fbWVkaWFFbGVtZW50ID0gbWFrZVdlYWtQdHIoZWxlbWVudCk7CiAK
LSAgICBpZiAobV9tZWRpYUVsZW1lbnQgJiYgbV9tZWRpYUVsZW1lbnQtPnBsYXllcigpICYmICFt
X3Nlc3Npb25zLmlzRW1wdHkoKSkKLSAgICAgICAgbV9tZWRpYUVsZW1lbnQtPnBsYXllcigpLT5z
ZXRDRE1TZXNzaW9uKG1fc2Vzc2lvbnMubGFzdCgpLT5zZXNzaW9uKCkpOworICAgIGlmIChtX21l
ZGlhRWxlbWVudCAmJiBtX21lZGlhRWxlbWVudC0+cGxheWVyKCkpIHsKKyAgICAgICAgbV9tZWRp
YUVsZW1lbnQtPnBsYXllcigpLT5zZXRDRE0obV9jZG0uZ2V0KCkpOworICAgICAgICBpZiAoIW1f
c2Vzc2lvbnMuaXNFbXB0eSgpKQorICAgICAgICAgICAgbV9tZWRpYUVsZW1lbnQtPnBsYXllcigp
LT5zZXRDRE1TZXNzaW9uKG1fc2Vzc2lvbnMubGFzdCgpLT5zZXNzaW9uKCkpOworICAgIH0KIH0K
IAogUmVmUHRyPE1lZGlhUGxheWVyPiBXZWJLaXRNZWRpYUtleXM6OmNkbU1lZGlhUGxheWVyKGNv
bnN0IExlZ2FjeUNETSopIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZmE4OWVjNWZhNmYzN2JmOTI1ZWQzMmMxODY0OWMz
YWE5MzMxZTU1Mi4uN2MxMDY5YjA0YmNjZTM4NDZhM2UxMzA3NWU2OTRkZDQ3ZmUyYjI4NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtNDE5Myw2ICs0MTkzLDggQEAKIAkJQ0RFM0E4NTQxN0Y1RkNFNjAwQzVCRTIwIC8qIEF1ZGlv
VHJhY2tQcml2YXRlQVZGLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDREUzQTg1MjE3RjVGQ0U2MDBDNUJFMjAgLyogQXVkaW9UcmFja1ByaXZhdGVBVkYu
aCAqLzsgfTsKIAkJQ0RFM0E4NTcxN0Y2MDIwNDAwQzVCRTIwIC8qIEF1ZGlvVHJhY2tQcml2YXRl
QVZGT2JqQy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IENERTNBODU1MTdGNjAyMDQwMEM1QkUyMCAvKiBBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakMubW0g
Ki87IH07CiAJCUNERTNBODU4MTdGNjAyMDQwMEM1QkUyMCAvKiBBdWRpb1RyYWNrUHJpdmF0ZUFW
Rk9iakMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENE
RTNBODU2MTdGNjAyMDQwMEM1QkUyMCAvKiBBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakMuaCAqLzsg
fTsKKwkJQ0RFNTU1MjQyNDA1Q0NGMjAwOEEzRERCIC8qIExlZ2FjeUNETS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBOThFMEExNjAzQ0Q1OTAwRkVB
M0IxIC8qIExlZ2FjeUNETS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCUNERTU1NTI1MjQwNUNDRjIwMDhBM0REQiAvKiBMZWdhY3lDRE1Qcml2YXRl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREE5OEUw
QzE2MDNDRjNDMDBGRUEzQjEgLyogTGVnYWN5Q0RNUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNERTU5NTk1MUJGMTZERjMwMEExQ0JF
OCAvKiBDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbi5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERTU5NTkzMUJGMTY2QUQwMEExQ0JFOCAvKiBD
RE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbi5tbSAqLzsgfTsKIAkJQ0RFNTk1OTcxQkYyNkUy
MTAwQTFDQkU4IC8qIENETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERTU5NTk2MUJGMjZFMjEwMEExQ0JF
OCAvKiBDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDLmggKi87IH07CiAJCUNERTU5NTlEMUJG
Mjc1NzEwMEExQ0JFOCAvKiBDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFNTk1OUMxQkYyNzU3MTAw
QTFDQkU4IC8qIENETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakMubW0gKi87IH07CkBAIC0zMTM3
Myw2ICszMTM3NSw4IEBACiAJCQkJMTEzMTBDRjIyMEJBNEEzMjAwNjVBOEQwIC8qIExheW91dFRy
ZWVCdWlsZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDFEQzA0ODE2NDgzNDhGMDAzNzFFNUEg
LyogTGF5b3V0VW5pdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ1MUM2MzEyMzk0MDI3OTAwOTkz
MTkwIC8qIExheW91dFVuaXRzLmggaW4gSGVhZGVycyAqLywKKwkJCQlDREU1NTUyNDI0MDVDQ0Yy
MDA4QTNEREIgLyogTGVnYWN5Q0RNLmggaW4gSGVhZGVycyAqLywKKwkJCQlDREU1NTUyNTI0MDVD
Q0YyMDA4QTNEREIgLyogTGVnYWN5Q0RNUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RF
OEI1RUQxQTY5Nzc3MzAwQjRCNjZBIC8qIExlZ2FjeUNETVByaXZhdGVDbGVhcktleS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQ0RGNEI3MTIxRTAwODdBRTAwRTIzNUEyIC8qIExlZ2FjeUNETVNlc3Np
b24uaCBpbiBIZWFkZXJzICovLAogCQkJCUNERThCNUYxMUE2OTc3OEIwMEI0QjY2QSAvKiBMZWdh
Y3lDRE1TZXNzaW9uQ2xlYXJLZXkuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggODMzMmJjNTc2MDQyYjQ2YTczMDU5MWJlNWQ0YzAx
YTMyNmRmYTVkMi4uYTEzMDFjN2FkNmE4Nzk1OWM4MzZiNjIzZjc1Yzg4MDFlOTExMDI5YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC01MTI2LDYgKzUxMjYs
MTEgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYUVuZ2luZVdhc1VwZGF0ZWQoKQogICAg
ICAgICBtX3BsYXllci0+Y2RtSW5zdGFuY2VBdHRhY2hlZChtX21lZGlhS2V5cy0+Y2RtSW5zdGFu
Y2UoKSk7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQorICAg
IGlmIChtX3BsYXllciAmJiBtX3dlYktpdE1lZGlhS2V5cykKKyAgICAgICAgbV9wbGF5ZXItPnNl
dENETSgmbV93ZWJLaXRNZWRpYUtleXMtPmNkbSgpKTsKKyNlbmRpZgorCiAjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElP
Tl9NT0RFKSkKICAgICBpZiAoIW1fcGxheWVyKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MZWdhY3lDRE1TZXNzaW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MZWdhY3lDRE1TZXNzaW9uLmgKaW5kZXgg
MjVlNzlhNmRjMGE1YjIxOTNhNzJhMjI3YWFjYTE3NzNhN2UzYzI4Yy4uMjQzNDk2OGVhZTk4NjAw
ZDhmYmFlYjUxYTA1NWIxMWY0Y2QzNDdkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTGVnYWN5Q0RNU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0xlZ2FjeUNETVNlc3Npb24uaApAQCAtMzgsNyArMzgsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB+TGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCgpID0gZGVmYXVsdDsKICAg
ICB2aXJ0dWFsIHZvaWQgc2VuZE1lc3NhZ2UoVWludDhBcnJheSosIFN0cmluZyBkZXN0aW5hdGlv
blVSTCkgPSAwOwogCi0gICAgZW51bSB7CisgICAgZW51bSA6IHVpbnQ4X3QgewogICAgICAgICBN
ZWRpYUtleUVycm9yVW5rbm93biA9IDEsCiAgICAgICAgIE1lZGlhS2V5RXJyb3JDbGllbnQsCiAg
ICAgICAgIE1lZGlhS2V5RXJyb3JTZXJ2aWNlLApAQCAtNTgsOSArNTgsMTAgQEAgZW51bSBMZWdh
Y3lDRE1TZXNzaW9uVHlwZSB7CiAgICAgQ0RNU2Vzc2lvblR5cGVBVkZvdW5kYXRpb25PYmpDLAog
ICAgIENETVNlc3Npb25UeXBlQVZTdHJlYW1TZXNzaW9uLAogICAgIENETVNlc3Npb25UeXBlQVZD
b250ZW50S2V5U2Vzc2lvbiwKKyAgICBDRE1TZXNzaW9uVHlwZVJlbW90ZSwKIH07CiAKLWNsYXNz
IExlZ2FjeUNETVNlc3Npb24geworY2xhc3MgV0VCQ09SRV9FWFBPUlQgTGVnYWN5Q0RNU2Vzc2lv
biB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+TGVnYWN5Q0RNU2Vzc2lvbigpID0gZGVmYXVsdDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3Bw
CmluZGV4IDYxOWQ2ZTEwMTZlYzA0ZTQ3MTQxZjkyYjg4YTlmYWU5ZjM4Y2MzMTYuLjAxMTMyZjNl
YTZjOTU1N2ZhNDdhY2JkYzc3NGIzZTQyMDZiMjBlNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTYyNiw2ICs2MjYsMTEgQEAg
c3RkOjp1bmlxdWVfcHRyPExlZ2FjeUNETVNlc3Npb24+IE1lZGlhUGxheWVyOjpjcmVhdGVTZXNz
aW9uKGNvbnN0IFN0cmluZyYga2V5U3kKICAgICByZXR1cm4gbV9wcml2YXRlLT5jcmVhdGVTZXNz
aW9uKGtleVN5c3RlbSwgY2xpZW50KTsKIH0KIAordm9pZCBNZWRpYVBsYXllcjo6c2V0Q0RNKExl
Z2FjeUNETSogY2RtKQoreworICAgIG1fcHJpdmF0ZS0+c2V0Q0RNKGNkbSk7Cit9CisKIHZvaWQg
TWVkaWFQbGF5ZXI6OnNldENETVNlc3Npb24oTGVnYWN5Q0RNU2Vzc2lvbiogc2Vzc2lvbikKIHsK
ICAgICBtX3ByaXZhdGUtPnNldENETVNlc3Npb24oc2Vzc2lvbik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAppbmRleCBkZjE1NzM0YzdiZDA5YTZm
NGUzMTZkY2ZhMjBjNDdlYWE4OWJjYjU2Li4zMWZiNzlhNTEwZWI0YTVhYjlmNTBjZDc1M2QwNGQ0
ZjdjNTAyYzc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlh
UGxheWVyLmgKQEAgLTY0LDYgKzY0LDcgQEAgY2xhc3MgQ2FjaGVkUmVzb3VyY2VMb2FkZXI7CiBj
bGFzcyBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIGNs
YXNzIEluYmFuZFRleHRUcmFja1ByaXZhdGU7CitjbGFzcyBMZWdhY3lDRE07CiBjbGFzcyBMZWdh
Y3lDRE1TZXNzaW9uQ2xpZW50OwogY2xhc3MgTWVkaWFQbGF5YmFja1RhcmdldDsKIGNsYXNzIE1l
ZGlhUGxheWVyOwpAQCAtMzU1LDYgKzM1Niw3IEBAIHB1YmxpYzoKICAgICBlbnVtIE1lZGlhS2V5
RXhjZXB0aW9uIHsgTm9FcnJvciwgSW52YWxpZFBsYXllclN0YXRlLCBLZXlTeXN0ZW1Ob3RTdXBw
b3J0ZWQgfTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxMZWdhY3lDRE1TZXNzaW9uPiBjcmVhdGVT
ZXNzaW9uKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBMZWdhY3lDRE1TZXNzaW9uQ2xpZW50Kik7
CisgICAgdm9pZCBzZXRDRE0oTGVnYWN5Q0RNKik7CiAgICAgdm9pZCBzZXRDRE1TZXNzaW9uKExl
Z2FjeUNETVNlc3Npb24qKTsKICAgICB2b2lkIGtleUFkZGVkKCk7CiAjZW5kaWYKQEAgLTYyMyw2
ICs2MjUsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5z
KGNvbnN0IFN0cmluZyYgZGV0YWlscywgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgTWVkaWFQ
bGF5ZXJSZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zQ2FsbGJhY2smIGNhbGxiYWNrKSB7IGNs
aWVudCgpLnJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnMoZGV0YWlscywgZGVzY3JpcHRpb24s
IGNhbGxiYWNrKTsgfQogI2VuZGlmCiAKKyAgICBjb25zdCBNZWRpYVBsYXllclByaXZhdGVJbnRl
cmZhY2UqIHBsYXllclByaXZhdGUoKSBjb25zdCB7IHJldHVybiBtX3ByaXZhdGUuZ2V0KCk7IH0K
KwogcHJpdmF0ZToKICAgICBNZWRpYVBsYXllcihNZWRpYVBsYXllckNsaWVudCYpOwogICAgIE1l
ZGlhUGxheWVyKE1lZGlhUGxheWVyQ2xpZW50JiwgTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdp
bmVJZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKaW5kZXggMTcwNzU5M2QyMjkzNDYyYTkxNTY3M2JiOTJk
MGUxZDYzZWZmOTgzMi4uMjljOWE4YjZkZjBlZGQ5OTcxYjVkZGMzODhjMGI3YWI3Njk2YWE0MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQ
cml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXJQcml2YXRlLmgKQEAgLTIyMyw2ICsyMjMsNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoTEVH
QUNZX0VOQ1JZUFRFRF9NRURJQSkKICAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxMZWdhY3lD
RE1TZXNzaW9uPiBjcmVhdGVTZXNzaW9uKGNvbnN0IFN0cmluZyYsIExlZ2FjeUNETVNlc3Npb25D
bGllbnQqKSB7IHJldHVybiBudWxscHRyOyB9CisgICAgdmlydHVhbCB2b2lkIHNldENETShMZWdh
Y3lDRE0qKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0Q0RNU2Vzc2lvbihMZWdhY3lDRE1TZXNz
aW9uKikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGtleUFkZGVkKCkgeyB9CiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392684</attachid>
            <date>2020-03-05 23:13:40 -0800</date>
            <delta_ts>2020-03-08 11:37:13 -0700</delta_ts>
            <desc>Part 2: WebKit</desc>
            <filename>bug-208402-20200305231339.patch</filename>
            <type>text/plain</type>
            <size>120190</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3OTE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGQzMGYwYTNkOGJjMjk1OGJm
ZmRjOWM3OThjOTdmODQyZGI0YWRlZjQuLjBhZTUyNDU2ZmY1YmM0ZmJkYmE0MWRkMjA3ZTE0NTQw
MzQwZGE4ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTM0IEBACisyMDIwLTAyLTI4ICBKZXIgTm9i
bGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFVQXSBJbXBsZW1lbnQgTGVn
YWN5IEVNRSBBUEkgaW4gdGhlIEdQVSBQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg0MDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgUmVtb3RlTGVnYWN5Q0RNRmFj
dG9yeSwgUmVtYXRlTGVnYWN5Q0RNLFJlbW90ZUxlZ2FjeUNETVNlc3Npb24sIGFuZCBhbGwKKyAg
ICAgICAgb2YgdGhlaXIgYXNzb2NpYXRlZCBQcm94eSBvYmplY3RzLgorCisgICAgICAgICogRGVy
aXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1v
dXRwdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAg
ICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmxlZ2FjeUNkbUZhY3RvcnlQcm94eSk6
CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpc3BhdGNoTWVz
c2FnZSk6CisgICAgICAgIChXZWJLaXQ6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpc3Bh
dGNoU3luY01lc3NhZ2UpOgorICAgICAgICAqIEdQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFj
dG9yeVByb3h5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETUZh
Y3RvcnlQcm94eTo6UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5KToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5OjpjcmVhdGVDRE0pOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk6OnN1cHBvcnRzS2V5U3lzdGVtKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5OjpkaWRSZWNlaXZlQ0RN
TWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eTo6
ZGlkUmVjZWl2ZUNETVNlc3Npb25NZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVn
YWN5Q0RNRmFjdG9yeVByb3h5OjpkaWRSZWNlaXZlU3luY0NETU1lc3NhZ2UpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk6OmRpZFJlY2VpdmVTeW5jQ0RNU2Vz
c2lvbk1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJv
eHk6OmFkZFByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVBy
b3h5OjpyZW1vdmVQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETUZhY3Rv
cnlQcm94eTo6YWRkU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETUZh
Y3RvcnlQcm94eTo6cmVtb3ZlU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2Fj
eUNETUZhY3RvcnlQcm94eTo6Z2V0U2Vzc2lvbiBjb25zdCk6CisgICAgICAgICogR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkuaDogQWRkZWQuCisgICAgICAgICog
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkubWVzc2FnZXMuaW46
IEFkZGVkLgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHku
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNUHJveHk6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETVByb3h5OjpSZW1vdGVMZWdhY3lD
RE1Qcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETVByb3h5OjpzdXBwb3J0
c01JTUVUeXBlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNUHJveHk6OmNyZWF0
ZVNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1Qcm94eTo6c2V0UGxh
eWVySWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1Qcm94eTo6Y2RtTWVkaWFQ
bGF5ZXIgY29uc3QpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RN
UHJveHkuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETVByb3h5Ojpm
YWN0b3J5IGNvbnN0KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNE
TVByb3h5Lm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5KToK
KyAgICAgICAgKFdlYktpdDo6Y29udmVydFRvVWludDhBcnJheSk6CisgICAgICAgIChXZWJLaXQ6
OmNvbnZlcnRUb09wdGlvbmFsRGF0YVJlZmVyZW5jZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6Z2VuZXJhdGVLZXlSZXF1ZXN0KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpyZWxlYXNlS2V5cyk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6dXBkYXRlKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpnZXRDYWNoZWRLZXlGb3JLZXlJ
ZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6Y2FjaGVk
S2V5Rm9yS2V5SUQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJv
eHk6OnNlbmRNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lv
blByb3h5OjpzZW5kRXJyb3IpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1TZXNz
aW9uUHJveHk6Om1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkgY29uc3QpOgorICAgICAgICAqIEdQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5Lmg6IEFkZGVkLgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OmZhY3RvcnkgY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OnNlc3Npb24g
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OnNl
dFBsYXllcik6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNz
aW9uUHJveHkubWVzc2FnZXMuaW46IEFkZGVkLgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6Z2V0UHJveHkpOgorICAgICAgICAqIEdQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBHUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjptZWRpYVBsYXllckNhY2hlZEtleUZvcktleUlkIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5
ZXJLZXlOZWVkZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5Ojpz
ZXRMZWdhY3lDRE1TZXNzaW9uKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1l
ZGlhUGxheWVyUHJveHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlh
UGxheWVyUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVUZXh0VHJhY2tQcm94eS5jcHA6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVU
ZXh0VHJhY2tQcm94eS5oOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5Ogor
ICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9u
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVUHJvY2Vzc0Nvbm5lY3Rpb246Om1lZGlhUGxheWVy
TWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6OkdQVVByb2Nlc3NDb25uZWN0aW9uOjpsZWdhY3lD
RE1GYWN0b3J5KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlv
bi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0
Q0RNKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRDRE1T
ZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjptZWRp
YVBsYXllcktleU5lZWRlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVMZWdhY3lDRE06OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNE
TTo6UmVtb3RlTGVnYWN5Q0RNKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNOjpz
dXBwb3J0c01JTUVUeXBlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNOjpjcmVh
dGVTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNOjpzZXRQbGF5ZXJJ
ZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNLmg6IEFk
ZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3Rv
cnkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeTo6
UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNE
TUZhY3Rvcnk6OnJlZ2lzdGVyRmFjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2Fj
eUNETUZhY3Rvcnk6OnN1cHBsZW1lbnROYW1lKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVn
YWN5Q0RNRmFjdG9yeTo6Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVMZWdhY3lDRE1GYWN0b3J5OjpzdXBwb3J0c0tleVN5c3RlbSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUxlZ2FjeUNETUZhY3Rvcnk6OnN1cHBvcnRzS2V5U3lzdGVtQW5kTWltZVR5cGUp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1GYWN0b3J5OjpjcmVhdGVDRE0pOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1GYWN0b3J5OjphZGRTZXNzaW9uKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeTo6cmVtb3ZlU2Vzc2lvbik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETUZhY3Rvcnk6OmZpbmRDRE0gY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1GYWN0b3J5OjpkaWRSZWNlaXZlU2Vzc2lv
bk1lc3NhZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNE
TUZhY3RvcnkuaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
TGVnYWN5Q0RNSWRlbnRpZmllci5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6
OmNvbnZlcnRUb0FycmF5QnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6Y29udmVydFRvVWludDhB
cnJheSk6CisgICAgICAgIChXZWJLaXQ6OmNvbnZlcnRUb09wdGlvbmFsRGF0YVJlZmVyZW5jZSk6
CisgICAgICAgIChXZWJLaXQ6OmNvbnZlcnRUb0RhdGFSZWZlcmVuY2UpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVMZWdhY3lDRE1TZXNzaW9uOjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbjo6Z2VuZXJhdGVLZXlSZXF1ZXN0KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbjo6cmVsZWFzZUtleXMpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uOjp1cGRhdGUpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uOjpjYWNoZWRLZXlGb3JLZXlJRCBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb246OnNlbmRNZXNzYWdlKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbjo6c2VuZEVycm9yKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmg6IEFk
ZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Np
b24ubWVzc2FnZXMuaW46IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6ZmluZFJlbW90ZVBsYXllcklkKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9XZWJNZWRpYVN0cmF0ZWd5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViTWVkaWFTdHJhdGVneTo6cmVnaXN0ZXJMZWdhY3lDRE1GYWN0b3Jp
ZXMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZTo6dXBkYXRlUHJlZmVyZW5jZXMpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5jcHA6CisKIDIwMjAtMDMtMDUgIEplciBOb2JsZSAgPGplci5ub2JsZUBh
cHBsZS5jb20+CiAKICAgICAgICAgW0dQVVBdIENvbnZlcnQgQ0RNRmFjdG9yeSBhd2F5IGZyb20g
cGxhdGZvcm1TdHJhdGVnaWVzKCkgYW5kIHVzZSBXZWJQcm9jZXNzIHNldHRpbmdzIGluc3RlYWQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlz
dCBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAppbmRleCBk
NzQ5YjJkYjA5Yjk2NzQ2ZjRhMGYxZTM0YzIxNzQyZWRmNTNlNDZiLi44OTY0ZmJjYzdhYjgzNWQ0
OGM5ZTdmY2Q4OTA5ZTkwOGFhNWRmMGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2
ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291
cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CkBAIC0yNCw2ICsyNCw5IEBAICQoUFJPSkVDVF9ESVIpL0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNRmFjdG9yeVByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pF
Q1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkubWVzc2FnZXMu
aW4KICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlQ0RNUHJveHkubWVzc2FnZXMuaW4KKyQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5Lm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5Lm1lc3NhZ2VzLmluCiskKFBST0pF
Q1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5tZXNz
YWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVNZWRpYVBsYXllclByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC0x
MjAsNiArMTIzLDcgQEAgJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uUHJveHkubWVzc2FnZXMuaW4KICQoUFJP
SkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUF1ZGlvU2Vzc2lvbi5tZXNzYWdl
cy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uLm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIubWVzc2FnZXMuaW4KICQo
UFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL21lZGlhL1RleHRUcmFja1ByaXZhdGVSZW1vdGUu
bWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9MaWJXZWJS
VENDb2RlY3MubWVzc2FnZXMuaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNv
dXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91
dHB1dC54Y2ZpbGVsaXN0CmluZGV4IDk5NTAzNTEyYmE1NThiMmI0MTAwOGY1YjE2NjUwNDYwYTk1
NDE0NTYuLmNhYTI5ODA4MjFiYTAxNzBiMTQ2YmY3NjNjNzk3YzA4Zjk1YjIyODggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIv
U291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAtMTY0LDYg
KzE2NCwxOCBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9S
ZW1vdGVDRE1Qcm94eU1lc3NhZ2VzUmVwbGllcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2Fn
ZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktp
dDIvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VzLmgKICQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhUHJveHlNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYktpdDIvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5TWVzc2FnZVJlY2VpdmVy
LmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3Rl
TGVnYWN5Q0RNRmFjdG9yeVByb3h5TWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5TWVzc2FnZXNS
ZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1Jl
bW90ZUxlZ2FjeUNETVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTGVnYWN5Q0RNUHJveHlNZXNzYWdlcy5o
CiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVMZWdh
Y3lDRE1Qcm94eU1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uTWVzc2FnZVJlY2VpdmVyLmNw
cAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTGVn
YWN5Q0RNU2Vzc2lvbk1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJLaXQyL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25NZXNzYWdlc1JlcGxpZXMuaAorJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTGVnYWN5Q0RN
U2Vzc2lvblByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5TWVzc2FnZXMu
aAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTGVn
YWN5Q0RNU2Vzc2lvblByb3h5TWVzc2FnZXNSZXBsaWVzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlck1lc3NhZ2VS
ZWNlaXZlci5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQy
L1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlck1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlck1lc3NhZ2Vz
UmVwbGllcy5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2Ug
Yi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggMWMzZDFhMjBlZWEzYjcz
ODAwMTAyZTFkMzE5ODM3OTAzYWE2Y2QwYS4uNDA0OWQ4YWFjYzdkMjI0NDU2NDFiOTc3NzY0N2Fl
NzJkZDEyNTAwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtl
CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMTU4LDYgKzE1OCwx
MCBAQCBNRVNTQUdFX1JFQ0VJVkVSUyA9IFwKICAgICBSZW1vdGVDRE1JbnN0YW5jZVByb3h5IFwK
ICAgICBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24gXAogICAgIFJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvblByb3h5IFwKKyAgICBSZW1vdGVMZWdhY3lDRE1Qcm94eSBcCisgICAgUmVtb3RlTGVnYWN5
Q0RNRmFjdG9yeVByb3h5IFwKKyAgICBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uIFwKKyAgICBSZW1v
dGVMZWdhY3lDRE1TZXNzaW9uUHJveHkgXAogICAgIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlciBc
CiAgICAgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkgXAogICAgIFJlbW90ZU1lZGlhUGxh
eWVyUHJveHkgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IGNiNTc5MjhlY2YyZTI5Y2FiOWQzNmU0ZDBhZGE4
MGI5NzJlY2ZhMDMuLjNhMTQwZWQyYjJkYzViYWFlZTc3Y2FlNjUwNjI1NjYzMjFjNmU1MDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jcHAKQEAgLTgyLDYgKzgyLDEzIEBACiAjaW5jbHVkZSAiUmVtb3RlQXVkaW9TZXNz
aW9uUHJveHlNZXNzYWdlcy5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRF
RF9NRURJQSkKKyNpbmNsdWRlICJSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkuaCIKKyNpbmNs
dWRlICJSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlJl
bW90ZUxlZ2FjeUNETVByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVMZWdhY3lDRE1T
ZXNzaW9uUHJveHlNZXNzYWdlcy5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTI4NCw2ICsyOTEsMTYgQEAgdm9pZCBHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjplbnN1cmVBdWRpb1Nlc3Npb24oRW5zdXJlQXVkaW9TZXNzaW9u
Q29tcGxldGlvbiYKIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVE
SUEpCitSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkmIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmxlZ2FjeUNkbUZhY3RvcnlQcm94eSgpCit7CisgICAgaWYgKCFtX2xlZ2FjeUNkbUZhY3Rv
cnlQcm94eSkKKyAgICAgICAgbV9sZWdhY3lDZG1GYWN0b3J5UHJveHkgPSBtYWtlVW5pcXVlPFJl
bW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eT4oKnRoaXMpOworCisgICAgcmV0dXJuICptX2xlZ2Fj
eUNkbUZhY3RvcnlQcm94eTsKK30KKyNlbmRpZgorCiBib29sIEdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OmRpc3BhdGNoTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6
RGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1l
KCkgPT0gTWVzc2FnZXM6OlJlbW90ZUF1ZGlvRGVzdGluYXRpb25NYW5hZ2VyOjptZXNzYWdlUmVj
ZWl2ZXJOYW1lKCkpIHsKQEAgLTM2Nyw2ICszODQsMjIgQEAgYm9vbCBHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpkaXNwYXRjaE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJ
UEMKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogI2VuZGlmCisjaWYgRU5BQkxFKExFR0FD
WV9FTkNSWVBURURfTUVESUEpCisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgp
ID09IE1lc3NhZ2VzOjpSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk6Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSkgeworICAgICAgICBsZWdhY3lDZG1GYWN0b3J5UHJveHkoKS5kaWRSZWNlaXZlTWVz
c2FnZUZyb21XZWJQcm9jZXNzKGNvbm5lY3Rpb24sIGRlY29kZXIpOworICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9CisKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0g
TWVzc2FnZXM6OlJlbW90ZUxlZ2FjeUNETVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsK
KyAgICAgICAgbGVnYWN5Q2RtRmFjdG9yeVByb3h5KCkuZGlkUmVjZWl2ZUNETU1lc3NhZ2UoY29u
bmVjdGlvbiwgZGVjb2Rlcik7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIGlm
IChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6UmVtb3RlTGVnYWN5
Q0RNU2Vzc2lvblByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAgbGVnYWN5
Q2RtRmFjdG9yeVByb3h5KCkuZGlkUmVjZWl2ZUNETVNlc3Npb25NZXNzYWdlKGNvbm5lY3Rpb24s
IGRlY29kZXIpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisjZW5kaWYKIAogICAgIHJl
dHVybiBtZXNzYWdlUmVjZWl2ZXJNYXAoKS5kaXNwYXRjaE1lc3NhZ2UoY29ubmVjdGlvbiwgZGVj
b2Rlcik7CiB9CkBAIC00MjAsNiArNDUzLDIyIEBAIGJvb2wgR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6ZGlzcGF0Y2hTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sCiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICNlbmRpZgorI2lmIEVOQUJMRShMRUdBQ1lfRU5D
UllQVEVEX01FRElBKQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBN
ZXNzYWdlczo6UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1l
KCkpIHsKKyAgICAgICAgbGVnYWN5Q2RtRmFjdG9yeVByb3h5KCkuZGlkUmVjZWl2ZVN5bmNNZXNz
YWdlRnJvbVdlYlByb2Nlc3MoY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2Vp
dmVyTmFtZSgpID09IE1lc3NhZ2VzOjpSZW1vdGVMZWdhY3lDRE1Qcm94eTo6bWVzc2FnZVJlY2Vp
dmVyTmFtZSgpKSB7CisgICAgICAgIGxlZ2FjeUNkbUZhY3RvcnlQcm94eSgpLmRpZFJlY2VpdmVT
eW5jQ0RNTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIpOworICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJO
YW1lKCkgPT0gTWVzc2FnZXM6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6bWVzc2FnZVJl
Y2VpdmVyTmFtZSgpKSB7CisgICAgICAgIGxlZ2FjeUNkbUZhY3RvcnlQcm94eSgpLmRpZFJlY2Vp
dmVTeW5jQ0RNU2Vzc2lvbk1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVy
KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorI2VuZGlmCiAKICAgICByZXR1cm4gbWVz
c2FnZVJlY2VpdmVyTWFwKCkuZGlzcGF0Y2hTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVy
LCByZXBseUVuY29kZXIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9H
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggYjAwNzFjYzY1MjY2ZmU3YTkyYWJjMDRm
M2JmZDhjNWE0MjNkNjg3Yi4uOWFkY2JhY2M1M2UyNDBiMGFmZWQ0Yjc5YTc0NDIyNGRlYjBmZTRl
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5oCkBAIC01Miw2ICs1Miw3IEBAIGNsYXNzIFJlbW90ZUF1ZGlvTWVkaWFTdHJl
YW1UcmFja1JlbmRlcmVyTWFuYWdlcjsKIGNsYXNzIFJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5Owog
Y2xhc3MgUmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNYW5hZ2VyOwogY2xhc3MgUmVtb3RlQ0RNRmFj
dG9yeVByb3h5OworY2xhc3MgUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5OwogY2xhc3MgUmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk7CiBjbGFzcyBSZW1vdGVNZWRpYVJlY29yZGVyTWFu
YWdlcjsKIGNsYXNzIFJlbW90ZU1lZGlhUmVzb3VyY2VNYW5hZ2VyOwpAQCAtOTEsOCArOTIsMTIg
QEAgcHVibGljOgogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiAgICAgUmVtb3RlQ0RNRmFj
dG9yeVByb3h5JiBjZG1GYWN0b3J5UHJveHkoKTsKICNlbmRpZgorI2lmIEVOQUJMRShMRUdBQ1lf
RU5DUllQVEVEX01FRElBKQorICAgIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eSYgbGVnYWN5
Q2RtRmFjdG9yeVByb3h5KCk7CisjZW5kaWYKIAogICAgIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdl
clByb3h5JiByZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSgpOworCiAjaWYgRU5BQkxFKEdQ
VV9QUk9DRVNTKSAmJiBVU0UoQVVESU9fU0VTU0lPTikKICAgICBSZW1vdGVBdWRpb1Nlc3Npb25Q
cm94eU1hbmFnZXImIGF1ZGlvU2Vzc2lvbk1hbmFnZXIoKTsKICNlbmRpZgpAQCAtMTcwLDYgKzE3
NSw5IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBVU0UoQVVESU9fU0VT
U0lPTikKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlQXVkaW9TZXNzaW9uUHJveHk+IG1fYXVk
aW9TZXNzaW9uUHJveHk7CiAjZW5kaWYKKyNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJ
QSkKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5PiBtX2xl
Z2FjeUNkbUZhY3RvcnlQcm94eTsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5
Q0RNRmFjdG9yeVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVMZWdhY3lDRE1GYWN0b3J5UHJveHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVkOWY1YjVhNDQzZjVjZjk4
NmJhNGZjYTFjNmU3ODU1NzFkZWYzYjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5LmNwcApAQCAtMCww
ICsxLDEzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJS
ZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkuaCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykg
JiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETVBy
b3h5LmgiCisjaW5jbHVkZSAiUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmgiCisjaW5jbHVk
ZSA8V2ViQ29yZS9MZWdhY3lDRE0uaD4KKyNpbmNsdWRlIDx3dGYvQWxnb3JpdGhtcy5oPgorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK1JlbW90ZUxl
Z2FjeUNETUZhY3RvcnlQcm94eTo6UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5KEdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24pCisgICAgOiBtX2dwdUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MoY29ubmVjdGlvbikKK3sKK30KKworUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5
Ojp+UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5KCkgPSBkZWZhdWx0OworCit2b2lkIFJlbW90
ZUxlZ2FjeUNETUZhY3RvcnlQcm94eTo6Y3JlYXRlQ0RNKGNvbnN0IFN0cmluZyYga2V5U3lzdGVt
LCBPcHRpb25hbDxNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyPiYmIG9wdGlvbmFs
UGxheWVySWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlTGVnYWN5Q0RNSWRlbnRpZmll
ciYmKT4mJiBjb21wbGV0aW9uKQoreworICAgIGF1dG8gcHJpdmF0ZUNETSA9IExlZ2FjeUNETTo6
Y3JlYXRlKGtleVN5c3RlbSk7CisgICAgaWYgKCFwcml2YXRlQ0RNKSB7CisgICAgICAgIGNvbXBs
ZXRpb24oeyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIE1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZUlkZW50aWZpZXIgcGxheWVySWQ7CisgICAgaWYgKG9wdGlvbmFsUGxheWVySWQp
CisgICAgICAgIHBsYXllcklkID0gV1RGTW92ZShvcHRpb25hbFBsYXllcklkLnZhbHVlKCkpOwor
CisgICAgYXV0byBwcm94eSA9IFJlbW90ZUxlZ2FjeUNETVByb3h5OjpjcmVhdGUobWFrZVdlYWtQ
dHIodGhpcyksIFdURk1vdmUocGxheWVySWQpLCBXVEZNb3ZlKHByaXZhdGVDRE0pKTsKKyAgICBh
dXRvIGlkZW50aWZpZXIgPSBSZW1vdGVMZWdhY3lDRE1JZGVudGlmaWVyOjpnZW5lcmF0ZSgpOwor
ICAgIGFkZFByb3h5KGlkZW50aWZpZXIsIFdURk1vdmUocHJveHkpKTsKKyAgICBjb21wbGV0aW9u
KFdURk1vdmUoaWRlbnRpZmllcikpOworfQorCit2b2lkIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQ
cm94eTo6c3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIE9wdGlvbmFs
PFN0cmluZz4gbWltZVR5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxl
dGlvbikKK3sKKyAgICBpZiAobWltZVR5cGUpCisgICAgICAgIGNvbXBsZXRpb24oTGVnYWN5Q0RN
OjprZXlTeXN0ZW1TdXBwb3J0c01pbWVUeXBlKGtleVN5c3RlbSwgKm1pbWVUeXBlKSk7CisgICAg
ZWxzZQorICAgICAgICBjb21wbGV0aW9uKExlZ2FjeUNETTo6c3VwcG9ydHNLZXlTeXN0ZW0oa2V5
U3lzdGVtKSk7Cit9CisKK3ZvaWQgUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5OjpkaWRSZWNl
aXZlQ0RNTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYg
ZGVjb2RlcikKK3sKKyAgICBpZiAoYXV0byogcHJveHkgPSBtX3Byb3hpZXMuZ2V0KG1ha2VPYmpl
Y3RJZGVudGlmaWVyPFJlbW90ZUxlZ2FjeUNETUlkZW50aWZpZXJUeXBlPihkZWNvZGVyLmRlc3Rp
bmF0aW9uSUQoKSkpKQorICAgICAgICBwcm94eS0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlv
biwgZGVjb2Rlcik7Cit9CisKK3ZvaWQgUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5OjpkaWRS
ZWNlaXZlQ0RNU2Vzc2lvbk1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6
OkRlY29kZXImIGRlY29kZXIpCit7CisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBtX3Nlc3Npb25z
LmdldChtYWtlT2JqZWN0SWRlbnRpZmllcjxSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmll
clR5cGU+KGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkpCisgICAgICAgIHNlc3Npb24tPmRpZFJl
Y2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworfQorCit2b2lkIFJlbW90ZUxlZ2Fj
eUNETUZhY3RvcnlQcm94eTo6ZGlkUmVjZWl2ZVN5bmNDRE1NZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBD
OjpFbmNvZGVyPiYgZW5jb2RlcikKK3sKKyAgICBpZiAoYXV0byogcHJveHkgPSBtX3Byb3hpZXMu
Z2V0KG1ha2VPYmplY3RJZGVudGlmaWVyPFJlbW90ZUxlZ2FjeUNETUlkZW50aWZpZXJUeXBlPihk
ZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSkpKQorICAgICAgICBwcm94eS0+ZGlkUmVjZWl2ZVN5bmNN
ZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIGVuY29kZXIpOworfQorCit2b2lkIFJlbW90ZUxl
Z2FjeUNETUZhY3RvcnlQcm94eTo6ZGlkUmVjZWl2ZVN5bmNDRE1TZXNzaW9uTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rlciwgc3RkOjp1bmlx
dWVfcHRyPElQQzo6RW5jb2Rlcj4mIGVuY29kZXIpCit7CisgICAgaWYgKGF1dG8qIHNlc3Npb24g
PSBtX3Nlc3Npb25zLmdldChtYWtlT2JqZWN0SWRlbnRpZmllcjxSZW1vdGVMZWdhY3lDRE1TZXNz
aW9uSWRlbnRpZmllclR5cGU+KGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkpCisgICAgICAgIHNl
c3Npb24tPmRpZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCBlbmNvZGVy
KTsKK30KKwordm9pZCBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk6OmFkZFByb3h5KFJlbW90
ZUxlZ2FjeUNETUlkZW50aWZpZXIgaWQsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMZWdhY3lDRE1Q
cm94eT4mJiBwcm94eSkKK3sKKyAgICBBU1NFUlQoIW1fcHJveGllcy5jb250YWlucyhpZCkpOwor
ICAgIG1fcHJveGllcy5zZXQoaWQsIFdURk1vdmUocHJveHkpKTsKK30KKwordm9pZCBSZW1vdGVM
ZWdhY3lDRE1GYWN0b3J5UHJveHk6OnJlbW92ZVByb3h5KFJlbW90ZUxlZ2FjeUNETUlkZW50aWZp
ZXIgaWQpCit7CisgICAgQVNTRVJUKG1fcHJveGllcy5jb250YWlucyhpZCkpOworICAgIG1fcHJv
eGllcy5yZW1vdmUoaWQpOworfQorCit2b2lkIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eTo6
YWRkU2Vzc2lvbihSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllciBpZCwgc3RkOjp1bmlx
dWVfcHRyPFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eT4mJiBzZXNzaW9uKQoreworICAgIEFT
U0VSVCghbV9zZXNzaW9ucy5jb250YWlucyhpZCkpOworICAgIG1fc2Vzc2lvbnMuc2V0KGlkLCBX
VEZNb3ZlKHNlc3Npb24pKTsKK30KKwordm9pZCBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk6
OnJlbW92ZVNlc3Npb24oUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXIgaWQpCit7Cisg
ICAgQVNTRVJUKG1fc2Vzc2lvbnMuY29udGFpbnMoaWQpKTsKKyAgICBtX3Nlc3Npb25zLnJlbW92
ZShpZCk7Cit9CisKK1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eSogUmVtb3RlTGVnYWN5Q0RN
RmFjdG9yeVByb3h5OjpnZXRTZXNzaW9uKGNvbnN0IFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVu
dGlmaWVyJiBpZCkgY29uc3QKK3sKKyAgICBhdXRvIHJlc3VsdHMgPSBtX3Nlc3Npb25zLmZpbmQo
aWQpOworICAgIGlmIChyZXN1bHRzICE9IG1fc2Vzc2lvbnMuZW5kKCkpCisgICAgICAgIHJldHVy
biByZXN1bHRzLT52YWx1ZS5nZXQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworCit9CisK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUzNTUzODQ4ODY1OTk4
MWQ4Zjg4M2I0Y2ExZWNjYWMyMzVhMzlmZWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5LmgKQEAgLTAs
MCArMSw4NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9Q
Uk9DRVNTKSAmJiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgIkNv
bm5lY3Rpb24uaCIKKyNpbmNsdWRlICJNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVy
LmgiCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiUmVtb3RlTGVnYWN5
Q0RNSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlm
aWVyLmgiCisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRy
Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOworY2xhc3MgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OworY2xhc3MgUmVtb3RlTGVn
YWN5Q0RNUHJveHk7CitzdHJ1Y3QgUmVtb3RlTGVnYWN5Q0RNQ29uZmlndXJhdGlvbjsKKworY2xh
c3MgUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5IGZpbmFsIDogcHJpdmF0ZSBJUEM6Ok1lc3Nh
Z2VSZWNlaXZlciwgcHVibGljIENhbk1ha2VXZWFrUHRyPFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQ
cm94eT4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIFJlbW90
ZUxlZ2FjeUNETUZhY3RvcnlQcm94eShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJik7CisgICAg
dmlydHVhbCB+UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5KCk7CisKKyAgICB2b2lkIGRpZFJl
Y2VpdmVNZXNzYWdlRnJvbVdlYlByb2Nlc3MoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJ
UEM6OkRlY29kZXImIGRlY29kZXIpIHsgZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVj
b2Rlcik7IH0KKyAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZUZyb21XZWJQcm9jZXNzKElQ
Qzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVu
aXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYgZW5jb2RlcikgeyBkaWRSZWNlaXZlU3luY01lc3NhZ2Uo
Y29ubmVjdGlvbiwgZGVjb2RlciwgZW5jb2Rlcik7IH0KKyAgICB2b2lkIGRpZFJlY2VpdmVDRE1N
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOworICAgIHZvaWQgZGlkUmVj
ZWl2ZUNETVNlc3Npb25NZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwor
ICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNDRE1NZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6
RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jik7CisgICAgdm9pZCBkaWRS
ZWNlaXZlU3luY0NETVNlc3Npb25NZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2Rl
ciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jik7CisKKyAgICB2b2lkIGFkZFByb3h5
KFJlbW90ZUxlZ2FjeUNETUlkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMZWdhY3lD
RE1Qcm94eT4mJik7CisgICAgdm9pZCByZW1vdmVQcm94eShSZW1vdGVMZWdhY3lDRE1JZGVudGlm
aWVyKTsKKworICAgIHZvaWQgYWRkU2Vzc2lvbihSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRp
Zmllciwgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eT4mJik7Cisg
ICAgdm9pZCByZW1vdmVTZXNzaW9uKFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyKTsK
KyAgICBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkqIGdldFNlc3Npb24oY29uc3QgUmVtb3Rl
TGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXImKSBjb25zdDsKKworICAgIEdQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKSBjb25zdCB7IHJldHVybiBt
X2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7IH0KKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xh
c3MgR1BVUHJvY2Vzc0Nvbm5lY3Rpb247CisgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAg
ICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYp
IGZpbmFsIHsgfQorICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JikgZmluYWw7
CisKKyAgICAvLyBNZXNzYWdlcworICAgIHZvaWQgY3JlYXRlQ0RNKGNvbnN0IFN0cmluZyYga2V5
U3lzdGVtLCBPcHRpb25hbDxNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyPiYmLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlbW90ZUxlZ2FjeUNETUlkZW50aWZpZXImJik+JiYpOwor
ICAgIHZvaWQgc3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIE9wdGlv
bmFsPFN0cmluZz4gbWltZVR5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwor
CisgICAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOworICAgIEhhc2hNYXA8UmVtb3RlTGVnYWN5Q0RNSWRlbnRpZmllciwgc3RkOjp1bmlxdWVf
cHRyPFJlbW90ZUxlZ2FjeUNETVByb3h5Pj4gbV9wcm94aWVzOworICAgIEhhc2hNYXA8UmVtb3Rl
TGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMZWdhY3lD
RE1TZXNzaW9uUHJveHk+PiBtX3Nlc3Npb25zOworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5
UHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
TGVnYWN5Q0RNRmFjdG9yeVByb3h5Lm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAwNzQ0ZmJmZDRk
MDJjMWY5YzNkNzlhMDBmNTA0OWY5MTUzYjdmNDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5Lm1lc3Nh
Z2VzLmluCkBAIC0wLDAgKzEsMzEgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUg
bWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVE
X01FRElBKQorCittZXNzYWdlcyAtPiBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkgTm90UmVm
Q291bnRlZCB7CisgICAgQ3JlYXRlQ0RNKFN0cmluZyBrZXlTeXN0ZW0sIE9wdGlvbmFsPFdlYktp
dDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllcj4gcGxheWVySWQpIC0+IChXZWJL
aXQ6OlJlbW90ZUxlZ2FjeUNETUlkZW50aWZpZXIgaWQpIFN5bmNocm9ub3VzCisgICAgU3VwcG9y
dHNLZXlTeXN0ZW0oU3RyaW5nIGtleVN5c3RlbSwgT3B0aW9uYWw8U3RyaW5nPiBtaW1lVHlwZSkg
LT4gKGJvb2wgcmVzdWx0KSBTeW5jaHJvbm91cworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjJkMTdhODkxYWFiMTFlZGU2ZGJlZDdjMGZkMDJkMjg1MjcxZTgzNjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5
Q0RNUHJveHkuY3BwCkBAIC0wLDAgKzEsOTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlTGVnYWN5Q0RNUHJveHkuaCIKKworI2lmIEVOQUJMRShH
UFVfUFJPQ0VTUykgJiYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRl
ICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyUHJveHkuaCIKKyNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllclByb3h5LmgiCisK
K25hbWVzcGFjZSBXZWJLaXQgeworCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworc3RkOjp1
bmlxdWVfcHRyPFJlbW90ZUxlZ2FjeUNETVByb3h5PiBSZW1vdGVMZWdhY3lDRE1Qcm94eTo6Y3Jl
YXRlKFdlYWtQdHI8UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5PiBmYWN0b3J5LCBNZWRpYVBs
YXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyJiYgcGxheWVySWQsIHN0ZDo6dW5pcXVlX3B0cjxX
ZWJDb3JlOjpMZWdhY3lDRE0+JiYgY2RtKQoreworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8
UmVtb3RlTGVnYWN5Q0RNUHJveHk+KG5ldyBSZW1vdGVMZWdhY3lDRE1Qcm94eShXVEZNb3ZlKGZh
Y3RvcnkpLCBXVEZNb3ZlKHBsYXllcklkKSwgV1RGTW92ZShjZG0pKSk7Cit9CisKK1JlbW90ZUxl
Z2FjeUNETVByb3h5OjpSZW1vdGVMZWdhY3lDRE1Qcm94eShXZWFrUHRyPFJlbW90ZUxlZ2FjeUNE
TUZhY3RvcnlQcm94eT4mJiBmYWN0b3J5LCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlm
aWVyJiYgcGxheWVySWQsIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpMZWdhY3lDRE0+JiYgY2Rt
KQorICAgIDogbV9mYWN0b3J5KFdURk1vdmUoZmFjdG9yeSkpCisgICAgLCBtX3BsYXllcklkKFdU
Rk1vdmUocGxheWVySWQpKQorICAgICwgbV9jZG0oV1RGTW92ZShjZG0pKQoreworICAgIG1fY2Rt
LT5zZXRDbGllbnQodGhpcyk7Cit9CisKK1JlbW90ZUxlZ2FjeUNETVByb3h5Ojp+UmVtb3RlTGVn
YWN5Q0RNUHJveHkoKSA9IGRlZmF1bHQ7CisKK3ZvaWQgUmVtb3RlTGVnYWN5Q0RNUHJveHk6OnN1
cHBvcnRzTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgU3VwcG9ydHNNSU1FVHlwZUNh
bGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgaWYgKCFtX2NkbSkgeworICAgICAgICBjYWxsYmFj
ayhmYWxzZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjYWxsYmFjayhtX2NkbS0+
c3VwcG9ydHNNSU1FVHlwZShtaW1lVHlwZSkpOworfQorCit2b2lkIFJlbW90ZUxlZ2FjeUNETVBy
b3h5OjpjcmVhdGVTZXNzaW9uKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBDcmVhdGVTZXNzaW9u
Q2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICBpZiAoIW1fY2RtIHx8ICFtX2ZhY3RvcnkpIHsK
KyAgICAgICAgY2FsbGJhY2soeyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1
dG8gaWRlbnRpZmllciA9IFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyOjpnZW5lcmF0
ZSgpOworICAgIGF1dG8gc2Vzc2lvbiA9IFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6Y3Jl
YXRlKG1ha2VXZWFrUHRyKG1fZmFjdG9yeS5nZXQoKSksIGlkZW50aWZpZXIsICptX2NkbSk7Cisg
ICAgbV9mYWN0b3J5LT5hZGRTZXNzaW9uKGlkZW50aWZpZXIsIFdURk1vdmUoc2Vzc2lvbikpOwor
ICAgIGNhbGxiYWNrKFdURk1vdmUoaWRlbnRpZmllcikpOworfQorCit2b2lkIFJlbW90ZUxlZ2Fj
eUNETVByb3h5OjpzZXRQbGF5ZXJJZChPcHRpb25hbDxNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJ
ZGVudGlmaWVyPiYmIHBsYXllcklkKQoreworICAgIGlmICghcGxheWVySWQpCisgICAgICAgIG1f
cGxheWVySWQgPSB7IH07CisgICAgbV9wbGF5ZXJJZCA9IFdURk1vdmUoKnBsYXllcklkKTsKK30K
KworUmVmUHRyPE1lZGlhUGxheWVyPiBSZW1vdGVMZWdhY3lDRE1Qcm94eTo6Y2RtTWVkaWFQbGF5
ZXIoY29uc3QgTGVnYWN5Q0RNKikgY29uc3QKK3sKKyAgICBpZiAoIW1fcGxheWVySWQgfHwgIW1f
ZmFjdG9yeSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvIHByb3h5ID0gbV9m
YWN0b3J5LT5ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkucmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyUHJveHkoKS5nZXRQcm94eShtX3BsYXllcklkKTsKKyAgICBpZiAoIXByb3h5KQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBwcm94eS0+bWVkaWFQbGF5ZXIoKTsKK30K
KworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUxlZ2FjeUNETVByb3h5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmI2ZDE3YTlhNDU3MWUzNDg4NGNm
ZjhjYTliZWVjMzMzMWY4MjA2ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5oCkBAIC0wLDAgKzEsODMgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5B
QkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIu
aCIKKyNpbmNsdWRlICJSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkuaCIKKyNpbmNsdWRlICJS
ZW1vdGVMZWdhY3lDRE1JZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9MZWdhY3lDRE0u
aD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4K
KyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBT
aGFyZWRCdWZmZXI7Cit9CisKK25hbWVzcGFjZSBJUEMgeworY2xhc3MgRGF0YVJlZmVyZW5jZTsK
K30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFJlbW90ZUxlZ2FjeUNETVByb3h5Cisg
ICAgOiBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyCisgICAgLCBwdWJsaWMgV2ViQ29yZTo6
TGVnYWN5Q0RNQ2xpZW50CisgICAgLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UmVtb3RlTGVnYWN5
Q0RNUHJveHk+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxl
Z2FjeUNETVByb3h5PiBjcmVhdGUoV2Vha1B0cjxSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk+
LCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyJiYsIHN0ZDo6dW5pcXVlX3B0cjxX
ZWJDb3JlOjpMZWdhY3lDRE0+JiYpOworICAgIH5SZW1vdGVMZWdhY3lDRE1Qcm94eSgpOworCisg
ICAgUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5KiBmYWN0b3J5KCkgY29uc3QgeyByZXR1cm4g
bV9mYWN0b3J5LmdldCgpOyB9CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIFJlbW90ZUxl
Z2FjeUNETUZhY3RvcnlQcm94eTsKKyAgICBSZW1vdGVMZWdhY3lDRE1Qcm94eShXZWFrUHRyPFJl
bW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eT4mJiwgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRl
bnRpZmllciYmLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6TGVnYWN5Q0RNPiYmKTsKKworICAg
IC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVT
eW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9w
dHI8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOworCisgICAgLy8gTWVzc2FnZXMKKyAgICB1c2luZyBT
dXBwb3J0c01JTUVUeXBlQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPjsK
KyAgICB2b2lkIHN1cHBvcnRzTUlNRVR5cGUoY29uc3QgU3RyaW5nJiwgU3VwcG9ydHNNSU1FVHlw
ZUNhbGxiYWNrJiYpOworICAgIHVzaW5nIENyZWF0ZVNlc3Npb25DYWxsYmFjayA9IENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXImJik+OworICAg
IHZvaWQgY3JlYXRlU2Vzc2lvbihjb25zdCBTdHJpbmcmLCBDcmVhdGVTZXNzaW9uQ2FsbGJhY2sm
Jik7CisgICAgdm9pZCBzZXRQbGF5ZXJJZChPcHRpb25hbDxNZWRpYVBsYXllclByaXZhdGVSZW1v
dGVJZGVudGlmaWVyPiYmKTsKKworICAgIC8vIExlZ2FjeUNETUNsaWVudAorICAgIFJlZlB0cjxX
ZWJDb3JlOjpNZWRpYVBsYXllcj4gY2RtTWVkaWFQbGF5ZXIoY29uc3QgV2ViQ29yZTo6TGVnYWN5
Q0RNKikgY29uc3QgZmluYWw7CisKKyAgICBXZWFrUHRyPFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQ
cm94eT4gbV9mYWN0b3J5OworICAgIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIg
bV9wbGF5ZXJJZDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6TGVnYWN5Q0RNPiBtX2Nk
bTsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkubWVzc2FnZXMuaW4KbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uODcxYmE4YmQ4N2U3ZDkyNzA3Y2MwOWQ4ZjNjYzQwZDZmNDhkZmNiMwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Q
cm94eS5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDMyIEBACisjIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTEVHQUNZ
X0VOQ1JZUFRFRF9NRURJQSkKKworbWVzc2FnZXMgLT4gUmVtb3RlTGVnYWN5Q0RNUHJveHkgTm90
UmVmQ291bnRlZCB7CisgICAgU3VwcG9ydHNNSU1FVHlwZShTdHJpbmcgbWltZVR5cGUpIC0+IChi
b29sIHN1cHBvcnRzKSBTeW5jaHJvbm91cworICAgIENyZWF0ZVNlc3Npb24oU3RyaW5nIG1lZGlh
S2V5c1N0b3JhZ2VEaXJlY3RvcnkpIC0+IChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25J
ZGVudGlmaWVyIGlkKSBTeW5jaHJvbm91cworICAgIFNldFBsYXllcklkKE9wdGlvbmFsPFdlYktp
dDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllcj4gcGxheWVySWQpCit9CisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxl
Z2FjeUNETVNlc3Npb25Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYTBlMzNmYzZiNDQ0
ZDMxMWU2NjAyZjhhNzU1ZTMzNDIwMmVjMTUyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5jcHAKQEAg
LTAsMCArMSwxNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpICYmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSAiR1BVQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQ
cm94eS5oIgorI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETVNlc3Npb25NZXNzYWdlcy5oIgorI2lu
Y2x1ZGUgIlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1No
YXJlZEJ1ZmZlci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CisKK3N0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk+IFJl
bW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6Y3JlYXRlKFdlYWtQdHI8UmVtb3RlTGVnYWN5Q0RN
RmFjdG9yeVByb3h5PiYmIGZhY3RvcnksIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVy
IGlkZW50aWZpZXIsIFdlYkNvcmU6OkxlZ2FjeUNETSYgY2RtKQoreworICAgIHJldHVybiBzdGQ6
OnVuaXF1ZV9wdHI8UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5PihuZXcgUmVtb3RlTGVnYWN5
Q0RNU2Vzc2lvblByb3h5KFdURk1vdmUoZmFjdG9yeSksIGlkZW50aWZpZXIsIGNkbSkpOworfQor
CitSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94
eShXZWFrUHRyPFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eT4mJiBmYWN0b3J5LCBSZW1vdGVM
ZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJDb3JlOjpMZWdhY3lDRE0m
IGNkbSkKKyAgICA6IG1fZmFjdG9yeShXVEZNb3ZlKGZhY3RvcnkpKQorICAgICwgbV9pZGVudGlm
aWVyKGlkZW50aWZpZXIpCisgICAgLCBtX3Nlc3Npb24oY2RtLmNyZWF0ZVNlc3Npb24oKnRoaXMp
KQoreworfQorCitSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6On5SZW1vdGVMZWdhY3lDRE1T
ZXNzaW9uUHJveHkoKSA9IGRlZmF1bHQ7CisKK3N0YXRpYyBSZWZQdHI8VWludDhBcnJheT4gY29u
dmVydFRvVWludDhBcnJheShJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmJiBidWZmZXIp
Cit7CisgICAgaWYgKCFidWZmZXIuYnVmZmVyKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
CisgICAgc2l6ZV90IHNpemVJbkJ5dGVzID0gYnVmZmVyLnNpemUoKTsKKyAgICBhdXRvIGFycmF5
QnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShidWZmZXIuZGF0YSgpLCBzaXplSW5CeXRlcyk7
CisgICAgcmV0dXJuIFVpbnQ4QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKGFycmF5QnVmZmVyKSwgMCwg
c2l6ZUluQnl0ZXMpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0YXRpYyBPcHRpb25h
bDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U+IGNvbnZlcnRUb09wdGlvbmFsRGF0YVJl
ZmVyZW5jZShUIGFycmF5KQoreworICAgIGlmICghYXJyYXkpCisgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgcmV0dXJuIHsgU2hhcmVkQnVmZmVyOjpjcmVhdGUoKGNvbnN0IGNoYXIq
KWFycmF5LT5kYXRhKCksIGFycmF5LT5ieXRlTGVuZ3RoKCkpIH07Cit9CisKK3ZvaWQgUmVtb3Rl
TGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpnZW5lcmF0ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiYgaW5pdERhdGEsIEdlbmVy
YXRlS2V5Q2FsbGJhY2smJiBjb21wbGV0aW9uKQoreworICAgIGF1dG8gaW5pdERhdGFBcnJheSA9
IGNvbnZlcnRUb1VpbnQ4QXJyYXkoV1RGTW92ZShpbml0RGF0YSkpOworICAgIGlmICghaW5pdERh
dGFBcnJheSkgeworICAgICAgICBjb21wbGV0aW9uKHsgfSwgZW1wdHlTdHJpbmcoKSwgMCwgMCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBTdHJpbmcgZGVzdGluYXRpb25VUkw7Cisg
ICAgdW5zaWduZWQgc2hvcnQgZXJyb3JDb2RlIHsgMCB9OworICAgIHVpbnQzMl90IHN5c3RlbUNv
ZGUgeyAwIH07CisKKyAgICBhdXRvIGtleVJlcXVlc3QgPSBtX3Nlc3Npb24tPmdlbmVyYXRlS2V5
UmVxdWVzdChtaW1lVHlwZSwgaW5pdERhdGFBcnJheS5nZXQoKSwgZGVzdGluYXRpb25VUkwsIGVy
cm9yQ29kZSwgc3lzdGVtQ29kZSk7CisKKyAgICBkZXN0aW5hdGlvblVSTCA9ICJ0aGlzIGlzIGEg
dGVzdCBzdHJpbmciX3M7CisKKyAgICBjb21wbGV0aW9uKGNvbnZlcnRUb09wdGlvbmFsRGF0YVJl
ZmVyZW5jZShrZXlSZXF1ZXN0KSwgZGVzdGluYXRpb25VUkwsIGVycm9yQ29kZSwgc3lzdGVtQ29k
ZSk7Cit9CisKK3ZvaWQgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpyZWxlYXNlS2V5cygp
Cit7CisgICAgbV9zZXNzaW9uLT5yZWxlYXNlS2V5cygpOworfQorCit2b2lkIFJlbW90ZUxlZ2Fj
eUNETVNlc3Npb25Qcm94eTo6dXBkYXRlKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYm
IHVwZGF0ZSwgVXBkYXRlQ2FsbGJhY2smJiBjb21wbGV0aW9uKQoreworICAgIGF1dG8gdXBkYXRl
QXJyYXkgPSBjb252ZXJ0VG9VaW50OEFycmF5KFdURk1vdmUodXBkYXRlKSk7CisgICAgaWYgKCF1
cGRhdGVBcnJheSkgeworICAgICAgICBjb21wbGV0aW9uKGZhbHNlLCBXVEY6Om51bGxvcHQsIDAs
IDApOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgUmVmUHRyPFVpbnQ4QXJyYXk+IG5l
eHRNZXNzYWdlOworICAgIHVuc2lnbmVkIHNob3J0IGVycm9yQ29kZSB7IDAgfTsKKyAgICB1aW50
MzJfdCBzeXN0ZW1Db2RlIHsgMCB9OworCisgICAgYm9vbCBzdWNjZWVkZWQgPSBtX3Nlc3Npb24t
PnVwZGF0ZSh1cGRhdGVBcnJheS5nZXQoKSwgbmV4dE1lc3NhZ2UsIGVycm9yQ29kZSwgc3lzdGVt
Q29kZSk7CisKKyAgICBjb21wbGV0aW9uKHN1Y2NlZWRlZCwgY29udmVydFRvT3B0aW9uYWxEYXRh
UmVmZXJlbmNlKG5leHRNZXNzYWdlKSwgZXJyb3JDb2RlLCBzeXN0ZW1Db2RlKTsKK30KKworUmVm
UHRyPEFycmF5QnVmZmVyPiBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OmdldENhY2hlZEtl
eUZvcktleUlkKGNvbnN0IFN0cmluZyYga2V5SWQpCit7CisgICAgcmV0dXJuIG1fc2Vzc2lvbi0+
Y2FjaGVkS2V5Rm9yS2V5SUQoa2V5SWQpOworfQorCit2b2lkIFJlbW90ZUxlZ2FjeUNETVNlc3Np
b25Qcm94eTo6Y2FjaGVkS2V5Rm9yS2V5SUQoU3RyaW5nIGtleUlkLCBDYWNoZWRLZXlGb3JLZXlJ
RENhbGxiYWNrJiYgY29tcGxldGlvbikKK3sKKyAgICBjb21wbGV0aW9uKGNvbnZlcnRUb09wdGlv
bmFsRGF0YVJlZmVyZW5jZShnZXRDYWNoZWRLZXlGb3JLZXlJZChrZXlJZCkpKTsKK30KKwordm9p
ZCBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OnNlbmRNZXNzYWdlKFVpbnQ4QXJyYXkqIG1l
c3NhZ2UsIFN0cmluZyBkZXN0aW5hdGlvblVSTCkKK3sKKyAgICBpZiAoIW1fZmFjdG9yeSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgbV9mYWN0b3J5LT5ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
KCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb246OlNl
bmRNZXNzYWdlKGNvbnZlcnRUb09wdGlvbmFsRGF0YVJlZmVyZW5jZShtZXNzYWdlKSwgZGVzdGlu
YXRpb25VUkwpLCBtX2lkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUxlZ2FjeUNETVNlc3Np
b25Qcm94eTo6c2VuZEVycm9yKE1lZGlhS2V5RXJyb3JDb2RlIGVycm9yQ29kZSwgdWludDMyX3Qg
c3lzdGVtQ29kZSkKK3sKKyAgICBpZiAobV9mYWN0b3J5KQorICAgICAgICBtX2ZhY3RvcnktPmdw
dUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVt
b3RlTGVnYWN5Q0RNU2Vzc2lvbjo6U2VuZEVycm9yKGVycm9yQ29kZSwgc3lzdGVtQ29kZSksIG1f
aWRlbnRpZmllcik7Cit9CisKK1N0cmluZyBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6Om1l
ZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdAoreworICAgIGlmIChtX2ZhY3RvcnkpCisg
ICAgICAgIHJldHVybiBtX2ZhY3RvcnktPmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKS5tZWRp
YUtleXNTdG9yYWdlRGlyZWN0b3J5KCk7CisgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7Cit9CisK
KworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hOTNlYzgy
MThkNTA3Y2U0ZmY5ZDA5NGRiNGIwMmYyNjdjMzcxMWYyCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5o
CkBAIC0wLDAgKzEsOTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUg
Ik1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94
eS5oIgorI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyLmgiCisjaW5j
bHVkZSA8V2ViQ29yZS9MZWdhY3lDRE1TZXNzaW9uLmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1Mp
ICYmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQorCituYW1lc3BhY2UgV2ViQ29yZSB7
CitjbGFzcyBMZWdhY3lDRE07CitjbGFzcyBMZWdhY3lDRE1TZXNzaW9uOworY2xhc3MgU2hhcmVk
QnVmZmVyOworfQorCituYW1lc3BhY2UgSVBDIHsKK2NsYXNzIFNoYXJlZEJ1ZmZlckRhdGFSZWZl
cmVuY2U7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBSZW1vdGVMZWdhY3lDRE1Q
cm94eTsKK2NsYXNzIFJlbW90ZU1lZGlhUGxheWVyUHJveHk7CisKK2NsYXNzIFJlbW90ZUxlZ2Fj
eUNETVNlc3Npb25Qcm94eQorICAgIDogcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgorICAg
ICwgcHVibGljIFdlYkNvcmU6OkxlZ2FjeUNETVNlc3Npb25DbGllbnQKKyAgICAsIHB1YmxpYyBD
YW5NYWtlV2Vha1B0cjxSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk+IHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eT4gY3Jl
YXRlKFdlYWtQdHI8UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5PiYmLCBSZW1vdGVMZWdhY3lD
RE1TZXNzaW9uSWRlbnRpZmllciwgV2ViQ29yZTo6TGVnYWN5Q0RNJik7CisgICAgflJlbW90ZUxl
Z2FjeUNETVNlc3Npb25Qcm94eSgpOworCisgICAgUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5
KiBmYWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9mYWN0b3J5LmdldCgpOyB9CisgICAgV2ViQ29y
ZTo6TGVnYWN5Q0RNU2Vzc2lvbiogc2Vzc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fc2Vzc2lvbi5n
ZXQoKTsgfQorCisgICAgdm9pZCBzZXRQbGF5ZXIoV2Vha1B0cjxSZW1vdGVNZWRpYVBsYXllclBy
b3h5PiBwbGF5ZXIpIHsgbV9wbGF5ZXIgPSBXVEZNb3ZlKHBsYXllcik7IH0KKworICAgIFJlZlB0
cjxBcnJheUJ1ZmZlcj4gZ2V0Q2FjaGVkS2V5Rm9yS2V5SWQoY29uc3QgU3RyaW5nJik7CisKK3By
aXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eTsKKyAg
ICBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkoV2Vha1B0cjxSZW1vdGVMZWdhY3lDRE1GYWN0
b3J5UHJveHk+JiYsIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyLCBXZWJDb3JlOjpM
ZWdhY3lDRE0mKTsKKworICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCisgICAgdm9pZCBkaWRS
ZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKKyAg
ICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29k
ZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOworCisgICAgLy8gTGVn
YWN5Q0RNU2Vzc2lvbkNsaWVudAorICAgIHZvaWQgc2VuZE1lc3NhZ2UoVWludDhBcnJheSosIFN0
cmluZyBkZXN0aW5hdGlvblVSTCkgZmluYWw7CisgICAgdm9pZCBzZW5kRXJyb3IoTWVkaWFLZXlF
cnJvckNvZGUsIHVpbnQzMl90IHN5c3RlbUNvZGUpIGZpbmFsOworICAgIFN0cmluZyBtZWRpYUtl
eXNTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QgZmluYWw7CisKKyAgICAvLyBNZXNzYWdlcworICAg
IHVzaW5nIEdlbmVyYXRlS2V5Q2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlv
bmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZT4mJiwgY29uc3QgU3RyaW5nJiwgdW5z
aWduZWQgc2hvcnQsIHVpbnQzMl90KT47CisgICAgdm9pZCBnZW5lcmF0ZUtleVJlcXVlc3QoY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiYgaW5p
dERhdGEsIEdlbmVyYXRlS2V5Q2FsbGJhY2smJik7CisgICAgdm9pZCByZWxlYXNlS2V5cygpOwor
ICAgIHVzaW5nIFVwZGF0ZUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sLCBP
cHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U+JiYsIHVuc2lnbmVkIHNob3J0
LCB1aW50MzJfdCk+OworICAgIHZvaWQgdXBkYXRlKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVy
ZW5jZSYmIHVwZGF0ZSwgVXBkYXRlQ2FsbGJhY2smJik7CisgICAgdXNpbmcgQ2FjaGVkS2V5Rm9y
S2V5SURDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8SVBDOjpTaGFy
ZWRCdWZmZXJEYXRhUmVmZXJlbmNlPiYmKT47CisgICAgdm9pZCBjYWNoZWRLZXlGb3JLZXlJRChT
dHJpbmcga2V5SWQsIENhY2hlZEtleUZvcktleUlEQ2FsbGJhY2smJik7CisKKyAgICBXZWFrUHRy
PFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eT4gbV9mYWN0b3J5OworICAgIFJlbW90ZUxlZ2Fj
eUNETVNlc3Npb25JZGVudGlmaWVyIG1faWRlbnRpZmllcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
V2ViQ29yZTo6TGVnYWN5Q0RNU2Vzc2lvbj4gbV9zZXNzaW9uOworICAgIFdlYWtQdHI8UmVtb3Rl
TWVkaWFQbGF5ZXJQcm94eT4gbV9wbGF5ZXI7Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Q
cm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVM
ZWdhY3lDRE1TZXNzaW9uUHJveHkubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTQ5NjJjZTkxZGY1
NTk1ZmM3YWNlMmMwNTA3N2IwNTFlYTBkZTM3MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkubWVzc2Fn
ZXMuaW4KQEAgLTAsMCArMSwzMyBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBt
ZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
IyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURf
TUVESUEpCisKK21lc3NhZ2VzIC0+IFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eSBOb3RSZWZD
b3VudGVkIHsKKyAgICBHZW5lcmF0ZUtleVJlcXVlc3QoU3RyaW5nIG1pbWVUeXBlLCBJUEM6OlNo
YXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgaW5pdERhdGEpIC0+IChPcHRpb25hbDxJUEM6OlNoYXJl
ZEJ1ZmZlckRhdGFSZWZlcmVuY2U+IG5leHRNZXNzYWdlLCBTdHJpbmcgZGVzdGluYXRpb25VUkws
IHVuc2lnbmVkIHNob3J0IGVycm9yQ29kZSwgdWludDMyX3Qgc3lzdGVtQ29kZSkgU3luY2hyb25v
dXMKKyAgICBSZWxlYXNlS2V5cygpCisgICAgVXBkYXRlKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJl
ZmVyZW5jZSB1cGRhdGUpIC0+IChib29sIHN1Y2NlZWRlZCwgT3B0aW9uYWw8SVBDOjpTaGFyZWRC
dWZmZXJEYXRhUmVmZXJlbmNlPiBuZXh0TWVzc2FnZSwgdW5zaWduZWQgc2hvcnQgZXJyb3JDb2Rl
LCB1aW50MzJfdCBzeXN0ZW1Db2RlKSBTeW5jaHJvbm91cworICAgIENhY2hlZEtleUZvcktleUlE
KFN0cmluZyBrZXlJZCkgLT4gKE9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5j
ZT4ga2V5KSBTeW5jaHJvbm91cworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJv
eHkuY3BwCmluZGV4IDgyNjRmM2M3NjAyYmI1NmY0ZGU3YzgxYWVmYTNiYjE2ZGY4MjI2YTAuLmU4
OGQyYmNiNjUwOTIzNmNkZjE4NTgxOGU1MTAxOGE3MGUxZmRkZjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVy
TWFuYWdlclByb3h5LmNwcApAQCAtMTk4LDYgKzE5OCwxNCBAQCB2b2lkIFJlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlclByb3h5OjpkaWRSZWNlaXZlUGxheWVyTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
IGNvbgogICAgICAgICBwbGF5ZXItPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29k
ZXIpOwogfQogCitSZW1vdGVNZWRpYVBsYXllclByb3h5KiBSZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXJQcm94eTo6Z2V0UHJveHkoY29uc3QgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmll
ciYgaWQpCit7CisgICAgYXV0byByZXN1bHRzID0gbV9wcm94aWVzLmZpbmQoaWQpOworICAgIGlm
IChyZXN1bHRzICE9IG1fcHJveGllcy5lbmQoKSkKKyAgICAgICAgcmV0dXJuIHJlc3VsdHMtPnZh
bHVlLmdldCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCiAjaWYgIVJFTEVBU0VfTE9HX0RJ
U0FCTEVECiBjb25zdCBMb2dnZXImIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Ojpsb2dn
ZXIoKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuaAppbmRleCBhZTMyOGNiN2Qw
OTM2MjZhYjJiMzI3Y2Q1YTYzMzQ2MGZkNzA0MTQ1Li5kYzQ2YTEwN2MxZTVmY2EwNTM5YzBjY2Nl
MzYzODEwNjg2NzQzODczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuaApAQCAtNjcsNiAr
NjcsOCBAQCBwdWJsaWM6CiAgICAgV1RGTG9nQ2hhbm5lbCYgbG9nQ2hhbm5lbCgpIGNvbnN0IGZp
bmFsOwogI2VuZGlmCiAKKyAgICBSZW1vdGVNZWRpYVBsYXllclByb3h5KiBnZXRQcm94eShjb25z
dCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyJik7CisKIHByaXZhdGU6CiAgICAg
Ly8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwCmluZGV4
IGUyOTAzNGI0ZjMxNWMxZGU2M2ExNzJhNGQzYWQ0YWZjMzUwMjUyNjYuLjc5NDUwZmQxOWFkZjBk
NTdkMDA4NzVjOWViYjMzMjVhNmJlN2E1MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAKQEAgLTMzLDYg
KzMzLDggQEAKICNpbmNsdWRlICJMYXllckhvc3RpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlTWVzc2FnZXMuaCIKICNpbmNsdWRlICJSZW1vdGVBdWRpb1Ry
YWNrUHJveHkuaCIKKyNpbmNsdWRlICJSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkuaCIKKyNp
bmNsdWRlICJSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuaCIKICNpbmNsdWRlICJSZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyUHJv
eHlDb25maWd1cmF0aW9uLmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJTdGF0ZS5oIgpA
QCAtNTE1LDE1ICs1MTcsMTkgQEAgdm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjptZWRpYVBs
YXllckFjdGl2ZVNvdXJjZUJ1ZmZlcnNDaGFuZ2VkKCkKIH0KIAogI2lmIEVOQUJMRShMRUdBQ1lf
RU5DUllQVEVEX01FRElBKQotUmVmUHRyPEFycmF5QnVmZmVyPiBSZW1vdGVNZWRpYVBsYXllclBy
b3h5OjptZWRpYVBsYXllckNhY2hlZEtleUZvcktleUlkKGNvbnN0IFN0cmluZyYpIGNvbnN0CitS
ZWZQdHI8QXJyYXlCdWZmZXI+IFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVyQ2Fj
aGVkS2V5Rm9yS2V5SWQoY29uc3QgU3RyaW5nJiBrZXlJZCkgY29uc3QKIHsKLSAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgIGlmIChhdXRvIGNkbVNlc3Npb24gPSBtX21hbmFnZXIuZ3B1Q29ubmVj
dGlvblRvV2ViUHJvY2VzcygpLmxlZ2FjeUNkbUZhY3RvcnlQcm94eSgpLmdldFNlc3Npb24obV9s
ZWdhY3lTZXNzaW9uKSkKKyAgICAgICAgcmV0dXJuIGNkbVNlc3Npb24tPmdldENhY2hlZEtleUZv
cktleUlkKGtleUlkKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotdm9pZCBSZW1vdGVNZWRp
YVBsYXllclByb3h5OjptZWRpYVBsYXllcktleU5lZWRlZChVaW50OEFycmF5KikKK3ZvaWQgUmVt
b3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJLZXlOZWVkZWQoVWludDhBcnJheSogbWVz
c2FnZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIElQQzo6RGF0YVJlZmVyZW5jZSBt
ZXNzYWdlUmVmZXJlbmNlOworICAgIGlmIChtZXNzYWdlKQorICAgICAgICBtZXNzYWdlUmVmZXJl
bmNlID0geyBtZXNzYWdlLT5kYXRhKCksIG1lc3NhZ2UtPmJ5dGVMZW5ndGgoKSB9OworICAgIG1f
d2ViUHJvY2Vzc0Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6Ok1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZTo6TWVkaWFQbGF5ZXJLZXlOZWVkZWQoV1RGTW92ZShtZXNzYWdlUmVmZXJlbmNlKSksIG1f
aWQpOwogfQogI2VuZGlmCiAKQEAgLTY5NSw2ICs3MDEsMjggQEAgdm9pZCBSZW1vdGVNZWRpYVBs
YXllclByb3h5OjpzZW5kQ2FjaGVkU3RhdGUoKQogfQogCiAjaWYgRU5BQkxFKExFR0FDWV9FTkNS
WVBURURfTUVESUEpCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6OnNldExlZ2FjeUNETVNl
c3Npb24oUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXImJiBpbnN0YW5jZUlkKQorewor
ICAgIGlmIChtX2xlZ2FjeVNlc3Npb24gPT0gaW5zdGFuY2VJZCkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgaWYgKG1fbGVnYWN5U2Vzc2lvbikgeworICAgICAgICBpZiAoYXV0byBjZG1TZXNzaW9u
ID0gbV9tYW5hZ2VyLmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKS5sZWdhY3lDZG1GYWN0b3J5
UHJveHkoKS5nZXRTZXNzaW9uKG1fbGVnYWN5U2Vzc2lvbikpIHsKKyAgICAgICAgICAgIG1fcGxh
eWVyLT5zZXRDRE1TZXNzaW9uKG51bGxwdHIpOworICAgICAgICAgICAgY2RtU2Vzc2lvbi0+c2V0
UGxheWVyKG51bGxwdHIpOworICAgICAgICB9CisgICAgfQorCisgICAgbV9sZWdhY3lTZXNzaW9u
ID0gaW5zdGFuY2VJZDsKKworICAgIGlmIChtX2xlZ2FjeVNlc3Npb24pIHsKKyAgICAgICAgaWYg
KGF1dG8gY2RtU2Vzc2lvbiA9IG1fbWFuYWdlci5ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCku
bGVnYWN5Q2RtRmFjdG9yeVByb3h5KCkuZ2V0U2Vzc2lvbihtX2xlZ2FjeVNlc3Npb24pKSB7Cisg
ICAgICAgICAgICBtX3BsYXllci0+c2V0Q0RNU2Vzc2lvbihjZG1TZXNzaW9uLT5zZXNzaW9uKCkp
OworICAgICAgICAgICAgY2RtU2Vzc2lvbi0+c2V0UGxheWVyKG1ha2VXZWFrUHRyKHRoaXMpKTsK
KyAgICAgICAgfQorICAgIH0KK30KKwogdm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjprZXlB
ZGRlZCgpCiB7CiAgICAgbV9wbGF5ZXItPmtleUFkZGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaAppbmRleCA4
YjM3YzA0MjBkYWFmM2EyOWIwNzYzMDk2ZmEwMDQwYWRlZGNjYjIzLi5kOTg4MDkwYzgwZDBlZjhj
OTliMjc4ZTM5ODk1YTFlYTIzZGJjNTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmgKQEAgLTMwLDYgKzMwLDcg
QEAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1
ZGUgIlJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUmVtb3Rl
TWVkaWFQbGF5ZXJDb25maWd1cmF0aW9uLmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJQ
cm94eUNvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllclN0YXRlLmgi
CkBAIC0xNDMsNiArMTQ0LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoTEVHQUNZ
X0VOQ1JZUFRFRF9NRURJQSkKKyAgICB2b2lkIHNldExlZ2FjeUNETVNlc3Npb24oUmVtb3RlTGVn
YWN5Q0RNU2Vzc2lvbklkZW50aWZpZXImJiBpbnN0YW5jZUlkKTsKICAgICB2b2lkIGtleUFkZGVk
KCk7CiAjZW5kaWYKIApAQCAtMTcxLDYgKzE3Myw4IEBAIHB1YmxpYzoKICAgICBSZWY8V2ViQ29y
ZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlPiByZXF1ZXN0UmVzb3VyY2UoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlcjo6TG9hZE9w
dGlvbnMpOwogICAgIHZvaWQgcmVtb3ZlUmVzb3VyY2UoUmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50
aWZpZXIpOwogCisgICAgUmVmUHRyPFdlYkNvcmU6Ok1lZGlhUGxheWVyPiBtZWRpYVBsYXllcigp
IHsgcmV0dXJuIG1fcGxheWVyOyB9CisKIHByaXZhdGU6CiAgICAgLy8gTWVkaWFQbGF5ZXJDbGll
bnQKICAgICB2b2lkIG1lZGlhUGxheWVyTmV0d29ya1N0YXRlQ2hhbmdlZCgpIGZpbmFsOwpAQCAt
Mjg2LDYgKzI5MCw3IEBAIHByaXZhdGU6CiAKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9N
RURJQSkgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKICAgICBib29sIG1fc2hvdWxkQ29udGlu
dWVBZnRlcktleU5lZWRlZCB7IGZhbHNlIH07CisgICAgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklk
ZW50aWZpZXIgbV9sZWdhY3lTZXNzaW9uOwogI2VuZGlmCiAKICNpZiAhUkVMRUFTRV9MT0dfRElT
QUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVBsYXllclByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkubWVzc2FnZXMuaW4KaW5kZXggMzRkMjQxOGNjZjhh
YmJmY2NmNWRjNDE4MjE0MDhhNjgwZWJhN2M1NS4uYjhhZWRiNDk0M2ZiNDZiZmQxZDIzNGNhODM4
ZDUxNjRiZWU0ZWJkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZU1lZGlhUGxheWVyUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkubWVzc2FnZXMuaW4KQEAgLTgw
LDcgKzgwLDcgQEAgbWVzc2FnZXMgLT4gUmVtb3RlTWVkaWFQbGF5ZXJQcm94eSBOb3RSZWZDb3Vu
dGVkIHsKICNlbmRpZgogCiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCi0gICAg
IyBTZXRDRE1TZXNzaW9uCisgICAgU2V0TGVnYWN5Q0RNU2Vzc2lvbihXZWJLaXQ6OlJlbW90ZUxl
Z2FjeUNETVNlc3Npb25JZGVudGlmaWVyIGluc3RhbmNlSWQpCiAgICAgS2V5QWRkZWQoKQogI2Vu
ZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVU
ZXh0VHJhY2tQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
VGV4dFRyYWNrUHJveHkuY3BwCmluZGV4IGFmNjRjODJiOTAyM2FkMjM0MTQyM2NmODVkYjQ5NWE3
NmM0YzZiNGEuLjYwZmE2YzgxMWJmZDA3NjJiYmVjZDFlMTgwY2MwY2E1MjI2YjI0ODYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVUZXh0VHJhY2tQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVRleHRUcmFj
a1Byb3h5LmNwcApAQCAtMjksMTUgKzI5LDE5IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1Mp
CiAKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlTWVzc2FnZXMuaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllclByb3h5Lmgi
CiAjaW5jbHVkZSAiVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24uaCIKICNpbmNs
dWRlICJUZXh0VHJhY2tQcml2YXRlUmVtb3RlTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJDb3Jl
QXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0lTT1ZUVEN1ZS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK3Vz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCiBSZW1vdGVUZXh0VHJhY2tQcm94eTo6UmVtb3RlVGV4
dFRyYWNrUHJveHkoUmVtb3RlTWVkaWFQbGF5ZXJQcm94eSYgcGxheWVyLCBUcmFja1ByaXZhdGVS
ZW1vdGVJZGVudGlmaWVyIGlkLCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24sIElu
YmFuZFRleHRUcmFja1ByaXZhdGUmIHRyYWNrUHJpdmF0ZSkKICAgICA6IG1fcGxheWVyKHBsYXll
cikKICAgICAsIG1faWRlbnRpZmllcihpZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVUZXh0VHJhY2tQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZVRleHRUcmFja1Byb3h5LmgKaW5kZXggNGY0OWYzYTM4N2QwZWEx
MGYxNjFlNWFkNzlmOGQ3ODU1MDNkMTcyYS4uOTcxZTdmNjQ4OWIzM2E1Mzg4YmVjZjkxODlhYjll
NzljYTczMjJlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZVRleHRUcmFja1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZVRleHRUcmFja1Byb3h5LmgKQEAgLTMyLDE1ICszMiwyMiBAQAogI2luY2x1ZGUgPFdl
YkNvcmUvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVHJhY2tC
YXNlLmg+CiAKK25hbWVzcGFjZSBJUEMgeworCitjbGFzcyBDb25uZWN0aW9uOworCit9CisKIG5h
bWVzcGFjZSBXZWJLaXQgewogCitjbGFzcyBSZW1vdGVNZWRpYVBsYXllclByb3h5Owogc3RydWN0
IFRleHRUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uOwogCiBjbGFzcyBSZW1vdGVUZXh0
VHJhY2tQcm94eSBmaW5hbAogICAgIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFJlbW90
ZVRleHRUcmFja1Byb3h5LCBXVEY6OkRlc3RydWN0aW9uVGhyZWFkOjpNYWluPgogICAgICwgcHJp
dmF0ZSBXZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xpZW50IHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUmVmPFJlbW90ZVRleHRUcmFja1Byb3h5PiBjcmVhdGUoUmVtb3RlTWVkaWFQbGF5
ZXJQcm94eSYgcGxheWVyLCBUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkLCBSZWY8SVBD
OjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24sIEluYmFuZFRleHRUcmFja1ByaXZhdGUmIHRyYWNr
UHJpdmF0ZSkKKyAgICBzdGF0aWMgUmVmPFJlbW90ZVRleHRUcmFja1Byb3h5PiBjcmVhdGUoUmVt
b3RlTWVkaWFQbGF5ZXJQcm94eSYgcGxheWVyLCBUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVy
IGlkLCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24sIFdlYkNvcmU6OkluYmFuZFRl
eHRUcmFja1ByaXZhdGUmIHRyYWNrUHJpdmF0ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFJlbW90ZVRleHRUcmFja1Byb3h5KHBsYXllciwgaWQsIFdURk1vdmUoY29ubmVj
dGlvbiksIHRyYWNrUHJpdmF0ZSkpOwogICAgIH0KQEAgLTUwLDE1ICs1NywxNSBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXRNb2RlKFdlYkNvcmU6OkluYmFuZFRleHRUcmFja1ByaXZhdGU6Ok1vZGUg
bW9kZSkgeyBtX3RyYWNrUHJpdmF0ZS0+c2V0TW9kZShtb2RlKTsgfQogCiBwcml2YXRlOgotICAg
IFJlbW90ZVRleHRUcmFja1Byb3h5KFJlbW90ZU1lZGlhUGxheWVyUHJveHkmLCBUcmFja1ByaXZh
dGVSZW1vdGVJZGVudGlmaWVyLCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmLCBJbmJhbmRUZXh0VHJh
Y2tQcml2YXRlJik7CisgICAgUmVtb3RlVGV4dFRyYWNrUHJveHkoUmVtb3RlTWVkaWFQbGF5ZXJQ
cm94eSYsIFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIsIFJlZjxJUEM6OkNvbm5lY3Rpb24+
JiYsIFdlYkNvcmU6OkluYmFuZFRleHRUcmFja1ByaXZhdGUmKTsKIAogICAgIC8vIEluYmFuZFRl
eHRUcmFja1ByaXZhdGVDbGllbnQKICAgICB2aXJ0dWFsIHZvaWQgYWRkRGF0YUN1ZShjb25zdCBN
ZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCwgY29uc3Qgdm9pZCosIHVuc2ln
bmVkKTsKIAogI2lmIEVOQUJMRShEQVRBQ1VFX1ZBTFVFKQotICAgIHZpcnR1YWwgdm9pZCBhZGRE
YXRhQ3VlKGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBSZWY8
U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZT4mJiwgY29uc3QgU3RyaW5nJik7Ci0gICAgdmlydHVh
bCB2b2lkIHVwZGF0ZURhdGFDdWUoY29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFU
aW1lJiBlbmQsIFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQg
cmVtb3ZlRGF0YUN1ZShjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVu
ZCwgU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZSYpOworICAgIHZpcnR1YWwgdm9pZCBhZGREYXRh
Q3VlKGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBSZWY8V2Vi
Q29yZTo6U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZT4mJiwgY29uc3QgU3RyaW5nJik7CisgICAg
dmlydHVhbCB2b2lkIHVwZGF0ZURhdGFDdWUoY29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3Qg
TWVkaWFUaW1lJiBlbmQsIFdlYkNvcmU6OlNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWUmKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRGF0YUN1ZShjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25z
dCBNZWRpYVRpbWUmIGVuZCwgV2ViQ29yZTo6U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZSYpOwog
I2VuZGlmCiAKICAgICB2aXJ0dWFsIHZvaWQgYWRkR2VuZXJpY0N1ZShXZWJDb3JlOjpJbmJhbmRH
ZW5lcmljQ3VlJik7CkBAIC02Nyw3ICs3NCw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIHZv
aWQgcGFyc2VXZWJWVFRGaWxlSGVhZGVyKFN0cmluZyYmKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFy
c2VXZWJWVFRDdWVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAg
dmlydHVhbCB2b2lkIHBhcnNlV2ViVlRUQ3VlRGF0YShJU09XZWJWVFRDdWUmJik7CisgICAgdmly
dHVhbCB2b2lkIHBhcnNlV2ViVlRUQ3VlRGF0YShXZWJDb3JlOjpJU09XZWJWVFRDdWUmJik7CiAK
ICAgICAvLyBUcmFja1ByaXZhdGVCYXNlQ2xpZW50CiAgICAgdm9pZCBpZENoYW5nZWQoY29uc3Qg
QXRvbVN0cmluZyYpIGZpbmFsOwpAQCAtODEsNyArODgsNyBAQCBwcml2YXRlOgogICAgIFJlbW90
ZU1lZGlhUGxheWVyUHJveHkmIG1fcGxheWVyOwogICAgIFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50
aWZpZXIgbV9pZGVudGlmaWVyOwogICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fd2ViUHJvY2Vz
c0Nvbm5lY3Rpb247Ci0gICAgUmVmPEluYmFuZFRleHRUcmFja1ByaXZhdGU+IG1fdHJhY2tQcml2
YXRlOworICAgIFJlZjxXZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2tQcml2YXRlPiBtX3RyYWNrUHJp
dmF0ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93
ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggNGJhMTRkYmFmMjRiMjQxZTU5ZGIwYTdmMjA4MGQwMmQw
MjdjM2IwNC4uNjY1ZjVhMjIxMDhlMWI2NjkxYTAzNTY5N2M5OWIxNDZkZTAzMzBiOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC0yMzgsNiArMjM4LDggQEAg
ZGVmIHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQoKToKICAgICAgICAgJ1dl
YktpdDo6UmVtb3RlQ0RNSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6OlJlbW90ZUNETUlu
c3RhbmNlSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvbklkZW50aWZpZXInLAorICAgICAgICAnV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1JZGVudGlm
aWVyJywKKyAgICAgICAgJ1dlYktpdDo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXIn
LAogICAgICAgICAnV2ViS2l0OjpSZW1vdGVNZWRpYVJlc291cmNlSWRlbnRpZmllcicsCiAgICAg
ICAgICdXZWJLaXQ6OlJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktp
dDo6UlRDRGVjb2RlcklkZW50aWZpZXInLApAQCAtNTg0LDYgKzU4Niw3IEBAIGRlZiBoZWFkZXJz
X2Zvcl90eXBlKHR5cGUpOgogICAgICAgICAnV2ViQ29yZTo6SW5wdXRNb2RlJzogWyc8V2ViQ29y
ZS9JbnB1dE1vZGUuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OktleWZyYW1lVmFsdWVMaXN0Jzog
Wyc8V2ViQ29yZS9HcmFwaGljc0xheWVyLmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpLZXlwcmVz
c0NvbW1hbmQnOiBbJzxXZWJDb3JlL0tleWJvYXJkRXZlbnQuaD4nXSwKKyAgICAgICAgJ1dlYkNv
cmU6OkxlZ2FjeUNETVNlc3Npb25DbGllbnQ6Ok1lZGlhS2V5RXJyb3JDb2RlJzogWyc8V2ViQ29y
ZS9MZWdhY3lDRE1TZXNzaW9uLmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpMb2NrQmFja0Zvcndh
cmRMaXN0JzogWyc8V2ViQ29yZS9GcmFtZUxvYWRlclR5cGVzLmg+J10sCiAgICAgICAgICdXZWJD
b3JlOjpNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6SGFzQWN0aXZpdHknOiBbJzxXZWJDb3Jl
L01lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpOZXR3
b3JrVHJhbnNhY3Rpb25JbmZvcm1hdGlvbic6IFsnPFdlYkNvcmUvTmV0d29ya0xvYWRJbmZvcm1h
dGlvbi5oPiddLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJj
ZS9XZWJLaXQvU291cmNlcy50eHQKaW5kZXggMTA1NmI5ZWRlNTRiYWFhZTJiMjlhMDU2N2E4NWY2
YTE5NDg4YmZkZC4uMDNlM2NiMzlhZjc2ZGI0OTIyZmVkZmNkMGFiZjkwMjFjNzBkNTlkYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1Nv
dXJjZXMudHh0CkBAIC0zMyw2ICszMyw5IEBAIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNRmFj
dG9yeVByb3h5LmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmNw
cAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5jcHAKIEdQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuY3BwCitHUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5jcHAKK0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5
Q0RNUHJveHkuY3BwCitHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94
eS5jcHAKIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3Bw
CiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwCiBHUFVQcm9jZXNz
L21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuY3BwCkBAIC01NTQsNiArNTU3LDkgQEAgV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
Q0RNRmFjdG9yeS5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmNw
cAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNwcAorV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNLmNwcAorV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeS5jcHAKK1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUxlZ2FjeUNETVNlc3Npb24uY3BwCiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBs
YXllck1hbmFnZXIuY3BwCiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1J
TUVUeXBlQ2FjaGUuY3BwIEBuby11bmlmeQogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVk
aWFSZXNvdXJjZVByb3h5LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggNjIxZmIxYzllZTA5MzJkNTJiNGYxZDUyZDJiNWIwZjNlMzA2
Mzc2Ny4uNzhhZDA2ZmZjYzliYWIxOWUyMmE1NmYyNGI5NGQ1YzczODBiNTgxYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNzQ4LDYg
KzE3NDgsMTAgQEAKIAkJQ0RCQjQ5RkQyNDBEOUE3MjAwMTdDMjkyIC8qIFJlbW90ZUF1ZGlvU2Vz
c2lvbkNvbmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IENEQkI0OUZDMjQwRDlBNzIwMDE3QzI5MiAvKiBSZW1vdGVBdWRpb1Nlc3Npb25D
b25maWd1cmF0aW9uLmggKi87IH07CiAJCUNEQzI4MzFEMjAxQkQ3OUQwMEU2RTc0NSAvKiBXS0Z1
bGxzY3JlZW5TdGFja1ZpZXcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IENEQzI4MzFCMjAxQkQ3OUQwMEU2RTc0NSAvKiBXS0Z1bGxzY3JlZW5TdGFja1Zp
ZXcuaCAqLzsgfTsKIAkJQ0RDQTg1QzkxMzJBQkE0RTAwRTk2MURGIC8qIFdLRnVsbFNjcmVlbldp
bmRvd0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENEQ0E4NUM3MTMyQUJBNEUwMEU5NjFERiAvKiBXS0Z1bGxTY3JlZW5XaW5kb3dDb250
cm9sbGVyLmggKi87IH07CisJCUNERTU1NTMyMjQwNkVCOEMwMDhBM0REQiAvKiBSZW1vdGVMZWdh
Y3lDRE1GYWN0b3J5UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFNTU1MjkyNDA2Qjg5NjAwOEEzRERCIC8qIFJl
bW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CisJCUNE
RTU1NTMzMjQwNkVCOEMwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1Qcm94eU1lc3NhZ2VSZWNl
aXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
REU1NTUyQTI0MDZCODk2MDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNUHJveHlNZXNzYWdlUmVj
ZWl2ZXIuY3BwICovOyB9OworCQlDREU1NTUzNDI0MDZFQjhDMDA4QTNEREIgLyogUmVtb3RlTGVn
YWN5Q0RNU2Vzc2lvbk1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREU1NTUyRTI0MDZCODk3MDA4QTNEREIgLyogUmVtb3Rl
TGVnYWN5Q0RNU2Vzc2lvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CisJCUNERTU1NTM1MjQw
NkVCOEMwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHlNZXNzYWdlUmVjZWl2
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RF
NTU1MzEyNDA2Qjg5NzAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eU1lc3Nh
Z2VSZWNlaXZlci5jcHAgKi87IH07CiAJCUNFMTFBRDUyMUNCQzQ4MkYwMDY4MUVFNSAvKiBDb2Rl
U2lnbmluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0UxMUFENTExQ0JDNDgyRjAwNjgxRUU1IC8qIENvZGVTaWduaW5nLmggKi87IH07CiAJCUNFMUEw
QkQyMUE0OEU2QzYwMDU0RUY3NCAvKiBBc3NlcnRpb25TZXJ2aWNlc1NQSS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UxQTBCQ0MxQTQ4RTZDNjAwNTRF
Rjc0IC8qIEFzc2VydGlvblNlcnZpY2VzU1BJLmggKi87IH07CiAJCUNFMUEwQkQ2MUE0OEU2QzYw
MDU0RUY3NCAvKiBUQ0NTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IENFMUEwQkQwMUE0OEU2QzYwMDU0RUY3NCAvKiBUQ0NTUEkuaCAqLzsgfTsKQEAg
LTUxMzEsNiArNTEzNSwzNiBAQAogCQlDREQ1MzU3NzI0MERERTA3MDBGN0I4QzQgLyogUmVtb3Rl
QXVkaW9TZXNzaW9uUHJveHlNZXNzYWdlc1JlcGxpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3Rl
QXVkaW9TZXNzaW9uUHJveHlNZXNzYWdlc1JlcGxpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQ0RENTM1NzgyNDBEREUwODAwRjdCOEM0IC8qIFJlbW90ZUF1ZGlvU2Vzc2lvblBy
b3h5TWFuYWdlck1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUF1ZGlvU2Vzc2lvblBy
b3h5TWFuYWdlck1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNERDUz
NTc5MjQwRERFMDgwMEY3QjhDNCAvKiBSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFnZXJNZXNz
YWdlc1JlcGxpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQXVkaW9TZXNzaW9uUHJveHlNYW5h
Z2VyTWVzc2FnZXNSZXBsaWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNERTU1
NEUyMjQwNTgxMTQwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJlbW90ZUxlZ2FjeUNETUZhY3RvcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQ0RFNTU0RTMyNDA1ODExNDAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETUZhY3Rvcnku
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNERTU1NEVBMjQwNTgxODMwMDhBM0REQiAvKiBSZW1v
dGVMZWdhY3lDRE0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlTGVnYWN5Q0RNLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUNERTU1NEVCMjQwNTgxODMwMDhBM0REQiAvKiBSZW1vdGVM
ZWdhY3lDRE0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlTGVnYWN5Q0RNLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RFNTU0RUUyNDA1ODFBMzAwOEEzRERCIC8qIFJl
bW90ZUxlZ2FjeUNETVNlc3Npb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlTGVnYWN5Q0RNU2Vz
c2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREU1NTRFRjI0MDU4MUEzMDA4
QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBS
ZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
Q0RFNTU0RjgyNDA1ODIwODAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RFNTU0RjkyNDA1ODIwODAwOEEzRERCIC8qIFJlbW90ZUxl
Z2FjeUNETVNlc3Npb25Qcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVMZWdhY3lD
RE1TZXNzaW9uUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREU1NTUw
MDI0MDU4Mjg0MDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5Lm1lc3NhZ2Vz
LmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5t
ZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RFNTU1MDUyNDA1ODMy
NDAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETVNlc3Npb24ubWVzc2FnZXMuaW4gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVt
b3RlTGVnYWN5Q0RNU2Vzc2lvbi5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQ0RFNTU1MDcyNDA1ODhCODAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETUlkZW50aWZp
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlTGVnYWN5Q0RNSWRlbnRpZmllci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlDREU1NTUwOTI0MDU4OENCMDA4QTNEREIgLyogUmVtb3Rl
TGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlTGVnYWN5
Q0RNU2Vzc2lvbklkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RF
NTU1MUIyNDA1QTNCNzAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5tZXNz
YWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkubWVzc2FnZXMuaW47IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNERTU1NTFDMjQwNUEzQjcwMDhBM0REQiAvKiBS
ZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlTGVnYWN5
Q0RNRmFjdG9yeVByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNERTU1NTFE
MjQwNUEzQjcwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RFNTU1MUUyNDA1QTNERjAwOEEzRERCIC8qIFJlbW90ZUxl
Z2FjeUNETVByb3h5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlbW90ZUxlZ2FjeUNETVByb3h5Lm1lc3Nh
Z2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREU1NTUxRjI0MDVBM0RGMDA4
QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlTGVn
YWN5Q0RNUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RFNTU1MjAyNDA1
QTNERjAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETVByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFJlbW90ZUxlZ2FjeUNETVByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQ0RFNTU1MjYyNDA2Qjg5NTAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94
eU1lc3NhZ2VzUmVwbGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVMZWdhY3lDRE1TZXNzaW9u
UHJveHlNZXNzYWdlc1JlcGxpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RF
NTU1MjcyNDA2Qjg5NTAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25NZXNzYWdlcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uTWVzc2FnZXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RFNTU1MjgyNDA2Qjg5NjAwOEEzRERCIC8qIFJlbW90
ZUxlZ2FjeUNETVByb3h5TWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlTGVnYWN5Q0RN
UHJveHlNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREU1NTUyOTI0
MDZCODk2MDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5TWVzc2FnZVJlY2Vp
dmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eU1l
c3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNERTU1NTJB
MjQwNkI4OTYwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1Qcm94eU1lc3NhZ2VSZWNlaXZlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVMZWdhY3lDRE1Qcm94eU1lc3NhZ2VSZWNlaXZl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNERTU1NTJCMjQwNkI4OTYwMDhB
M0REQiAvKiBSZW1vdGVMZWdhY3lDRE1Qcm94eU1lc3NhZ2VzUmVwbGllcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBSZW1vdGVMZWdhY3lDRE1Qcm94eU1lc3NhZ2VzUmVwbGllcy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlDREU1NTUyQzI0MDZCODk2MDA4QTNEREIgLyogUmVtb3RlTGVnYWN5
Q0RNRmFjdG9yeVByb3h5TWVzc2FnZXNSZXBsaWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUxl
Z2FjeUNETUZhY3RvcnlQcm94eU1lc3NhZ2VzUmVwbGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlDREU1NTUyRDI0MDZCODk3MDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNRmFj
dG9yeVByb3h5TWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlTGVnYWN5Q0RNRmFjdG9y
eVByb3h5TWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RFNTU1MkUy
NDA2Qjg5NzAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25NZXNzYWdlUmVjZWl2ZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbk1lc3NhZ2VSZWNl
aXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNERTU1NTJGMjQwNkI4OTcw
MDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHlNZXNzYWdlcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHlNZXNzYWdlcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlDREU1NTUzMDI0MDZCODk3MDA4QTNEREIgLyogUmVtb3RlTGVn
YWN5Q0RNU2Vzc2lvbk1lc3NhZ2VzUmVwbGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVMZWdh
Y3lDRE1TZXNzaW9uTWVzc2FnZXNSZXBsaWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUNERTU1NTMxMjQwNkI4OTcwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJv
eHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlTGVnYWN5Q0RN
U2Vzc2lvblByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQ0UxMUFENEYxQ0JDNDdGODAwNjgxRUU1IC8qIENvZGVTaWduaW5nLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQ29kZVNpZ25pbmcubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFMTFBRDUxMUNCQzQ4MkYwMDY4MUVFNSAvKiBDb2RlU2ln
bmluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb2RlU2lnbmluZy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTFBMEJDQzFBNDhFNkM2MDA1NEVGNzQgLyog
QXNzZXJ0aW9uU2VydmljZXNTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
QXNzZXJ0aW9uU2VydmljZXNTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU0
MjksNiArNTQ2MywxNSBAQAogCQkJCUNEQUMyMEJEMjNGQzJGNzQwMDIxREVFMyAvKiBSZW1vdGVD
RE1JbnN0YW5jZVNlc3Npb24uaCAqLywKIAkJCQlDRDQ2NjE3RjI0MDEwNDU4MDA0N0NBMzUgLyog
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLm1lc3NhZ2VzLmluICovLAogCQkJCUNEQUMyMEJDMjNG
QzJGNzQwMDIxREVFMyAvKiBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyLmggKi8s
CisJCQkJQ0RFNTU0RUIyNDA1ODE4MzAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETS5jcHAgKi8s
CisJCQkJQ0RFNTU0RUEyNDA1ODE4MzAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETS5oICovLAor
CQkJCUNERTU1NEUzMjQwNTgxMTQwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5LmNw
cCAqLywKKwkJCQlDREU1NTRFMjI0MDU4MTE0MDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNRmFj
dG9yeS5oICovLAorCQkJCUNERTU1NTA3MjQwNTg4QjgwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lD
RE1JZGVudGlmaWVyLmggKi8sCisJCQkJQ0RFNTU0RUYyNDA1ODFBMzAwOEEzRERCIC8qIFJlbW90
ZUxlZ2FjeUNETVNlc3Npb24uY3BwICovLAorCQkJCUNERTU1NEVFMjQwNTgxQTMwMDhBM0REQiAv
KiBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmggKi8sCisJCQkJQ0RFNTU1MDUyNDA1ODMyNDAwOEEz
RERCIC8qIFJlbW90ZUxlZ2FjeUNETVNlc3Npb24ubWVzc2FnZXMuaW4gKi8sCisJCQkJQ0RFNTU1
MDkyNDA1ODhDQjAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyLmgg
Ki8sCiAJCQkJMDdCOTNGRjUyM0FGMENCODAwMzZGOEVBIC8qIFJlbW90ZU1lZGlhUGxheWVyQ29u
ZmlndXJhdGlvbi5oICovLAogCQkJCTA3OTIzMTMwMjM5QjNCMEMwMDk1OThFMiAvKiBSZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXIuY3BwICovLAogCQkJCTA3OTIzMTM0MjM5QjNCMEMwMDk1OThFMiAv
KiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuaCAqLywKQEAgLTU0NzcsNiArNTUyMCwxNSBAQAog
CQkJCUNEQUMyMDgzMjNGQjIxMzQwMDIxREVFMyAvKiBSZW1vdGVDRE1Qcm94eS5jcHAgKi8sCiAJ
CQkJQ0RBQzIwODIyM0ZCMjEzNDAwMjFERUUzIC8qIFJlbW90ZUNETVByb3h5LmggKi8sCiAJCQkJ
Q0RBQzIwODYyM0ZCMjE1ODAwMjFERUUzIC8qIFJlbW90ZUNETVByb3h5Lm1lc3NhZ2VzLmluICov
LAorCQkJCUNERTU1NTFEMjQwNUEzQjcwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5
UHJveHkuY3BwICovLAorCQkJCUNERTU1NTFDMjQwNUEzQjcwMDhBM0REQiAvKiBSZW1vdGVMZWdh
Y3lDRE1GYWN0b3J5UHJveHkuaCAqLywKKwkJCQlDREU1NTUxQjI0MDVBM0I3MDA4QTNEREIgLyog
UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5Lm1lc3NhZ2VzLmluICovLAorCQkJCUNERTU1NTIw
MjQwNUEzREYwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1Qcm94eS5jcHAgKi8sCisJCQkJQ0RF
NTU1MUYyNDA1QTNERjAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETVByb3h5LmggKi8sCisJCQkJ
Q0RFNTU1MUUyNDA1QTNERjAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETVByb3h5Lm1lc3NhZ2Vz
LmluICovLAorCQkJCUNERTU1NEY5MjQwNTgyMDgwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1T
ZXNzaW9uUHJveHkuY3BwICovLAorCQkJCUNERTU1NEY4MjQwNTgyMDgwMDhBM0REQiAvKiBSZW1v
dGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuaCAqLywKKwkJCQlDREU1NTUwMDI0MDU4Mjg0MDA4QTNE
REIgLyogUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluICovLAogCQkJCTA3
MjVFRkFEMjM5QjAyNDUwMEE1MzhBOSAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5j
cHAgKi8sCiAJCQkJMDcyNUVGQUMyMzlBRTM4NTAwQTUzOEE5IC8qIFJlbW90ZU1lZGlhUGxheWVy
TWFuYWdlclByb3h5LmggKi8sCiAJCQkJMDcyNUVGQUIyMzlBRTM4NDAwQTUzOEE5IC8qIFJlbW90
ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluICovLApAQCAtOTkwOCw2ICs5OTYw
LDE4IEBACiAJCQkJQ0RBQzIwRjAyM0ZDMzgzOTAwMjFERUUzIC8qIFJlbW90ZUNETVByb3h5TWVz
c2FnZXNSZXBsaWVzLmggKi8sCiAJCQkJMEZGMjRBMkIxODc5RTRCQzAwM0FCRjBDIC8qIFJlbW90
ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCTBG
RjI0QTJDMTg3OUU0QkMwMDNBQkYwQyAvKiBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5
TWVzc2FnZXMuaCAqLywKKwkJCQlDREU1NTUyOTI0MDZCODk2MDA4QTNEREIgLyogUmVtb3RlTGVn
YWN5Q0RNRmFjdG9yeVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKKwkJCQlDREU1NTUyRDI0
MDZCODk3MDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5TWVzc2FnZXMuaCAq
LywKKwkJCQlDREU1NTUyQzI0MDZCODk2MDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNRmFjdG9y
eVByb3h5TWVzc2FnZXNSZXBsaWVzLmggKi8sCisJCQkJQ0RFNTU1MkEyNDA2Qjg5NjAwOEEzRERC
IC8qIFJlbW90ZUxlZ2FjeUNETVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKKwkJCQlDREU1
NTUyODI0MDZCODk2MDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNUHJveHlNZXNzYWdlcy5oICov
LAorCQkJCUNERTU1NTJCMjQwNkI4OTYwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1Qcm94eU1l
c3NhZ2VzUmVwbGllcy5oICovLAorCQkJCUNERTU1NTJFMjQwNkI4OTcwMDhBM0REQiAvKiBSZW1v
dGVMZWdhY3lDRE1TZXNzaW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKKwkJCQlDREU1NTUyNzI0
MDZCODk1MDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbk1lc3NhZ2VzLmggKi8sCisJ
CQkJQ0RFNTU1MzAyNDA2Qjg5NzAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25NZXNz
YWdlc1JlcGxpZXMuaCAqLywKKwkJCQlDREU1NTUzMTI0MDZCODk3MDA4QTNEREIgLyogUmVtb3Rl
TGVnYWN5Q0RNU2Vzc2lvblByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKKwkJCQlDREU1NTUy
RjI0MDZCODk3MDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5TWVzc2FnZXMu
aCAqLywKKwkJCQlDREU1NTUyNjI0MDZCODk1MDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNU2Vz
c2lvblByb3h5TWVzc2FnZXNSZXBsaWVzLmggKi8sCiAJCQkJMDc5MjMxNDMyMzlDQkNCNjAwOTU5
OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJ
CQkJMDc5MjMxNDcyMzlDQkNCNzAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlck1l
c3NhZ2VzLmggKi8sCiAJCQkJMDc5MjMxNDQyMzlDQkNCNjAwOTU5OEUyIC8qIFJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlck1lc3NhZ2VzUmVwbGllcy5oICovLApAQCAtMTI1MzMsNiArMTI1OTcsMTAg
QEAKIAkJCQkyRDcyQTFGQTIxMkJGNDZFMDA1MTdBMjAgLyogUmVtb3RlTGF5ZXJUcmVlRHJhd2lu
Z0FyZWEubW0gaW4gU291cmNlcyAqLywKIAkJCQkwRkYyNEEyRDE4NzlFNEJDMDAzQUJGMEMgLyog
UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkyREMxOEZCNDIxOEE2RTlFMDAyNUE4OEQgLyogUmVtb3RlTGF5ZXJUcmVl
Vmlld3MubW0gaW4gU291cmNlcyAqLywKKwkJCQlDREU1NTUzMjI0MDZFQjhDMDA4QTNEREIgLyog
UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCUNERTU1NTMzMjQwNkVCOEMwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1Qcm94
eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDREU1NTUzNDI0MDZFQjhD
MDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbk1lc3NhZ2VSZWNlaXZlci5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQlDREU1NTUzNTI0MDZFQjhDMDA4QTNEREIgLyogUmVtb3RlTGVnYWN5
Q0RNU2Vzc2lvblByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3
OTIzMTQ5MjM5Q0JDQjgwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJNZXNzYWdl
UmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDc5MjMxNEIyMzlDQkNCODAwOTU5OEUy
IC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTA3MDE3ODlFMjNCRTlDRkMwMDVGMEZBQSAvKiBSZW1vdGVNZWRpYVBs
YXllck1JTUVUeXBlQ2FjaGUuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IGY5Yjk3
MDE4MTcyZGE1MmIxYzcwNTQ5Mzk1OTNjMjExZGZlZDAxMTAuLjQ5ZjU0ZmQwYjY2YTFiN2VhNTk0
ODcwMGI4NDFjNjA2OGFlMzQzNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5j
bHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlTWVzc2FnZXMuaCIKICNpbmNsdWRlICJSZW1v
dGVDRE1GYWN0b3J5LmgiCiAjaW5jbHVkZSAiUmVtb3RlQ0RNUHJveHkuaCIKKyNpbmNsdWRlICJS
ZW1vdGVMZWdhY3lDRE1GYWN0b3J5LmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyLmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyTWVzc2FnZXMuaCIKICNp
bmNsdWRlICJTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNZXNzYWdlcy5oIgpAQCAtODEsNiArODIs
MTEgQEAgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlciYgR1BVUHJvY2Vzc0Nvbm5lY3Rp
b246OnNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck0KIH0KICNlbmRpZgogCitSZW1vdGVNZWRpYVBs
YXllck1hbmFnZXImIEdQVVByb2Nlc3NDb25uZWN0aW9uOjptZWRpYVBsYXllck1hbmFnZXIoKQor
eworICAgIHJldHVybiAqV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc3VwcGxlbWVudDxSZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXI+KCk7Cit9CisKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQog
UmVtb3RlQ0RNRmFjdG9yeSYgR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OmNkbUZhY3RvcnkoKQogewpA
QCAtODgsNiArOTQsMTMgQEAgUmVtb3RlQ0RNRmFjdG9yeSYgR1BVUHJvY2Vzc0Nvbm5lY3Rpb246
OmNkbUZhY3RvcnkoKQogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9N
RURJQSkKK1JlbW90ZUxlZ2FjeUNETUZhY3RvcnkmIEdQVVByb2Nlc3NDb25uZWN0aW9uOjpsZWdh
Y3lDRE1GYWN0b3J5KCkKK3sKKyAgICByZXR1cm4gKldlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnN1
cHBsZW1lbnQ8UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeT4oKTsKK30KKyNlbmRpZgorCiBib29sIEdQ
VVByb2Nlc3NDb25uZWN0aW9uOjpkaXNwYXRjaE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25u
ZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpCiB7CiAgICAgaWYgKGRlY29kZXIubWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om1l
c3NhZ2VSZWNlaXZlck5hbWUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5oCmluZGV4IDJiNTcyYzFiYWNiZmE2YjZiMjZmMzU2
MGMyNjJhOWE0MWIwYzc1YWYuLjNmNDFhZWFiMTBlZDIyNjA4NzA3NjkwZDhiNjA1ODU3MTY4ZmE1
MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nv
bm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3ND
b25uZWN0aW9uLmgKQEAgLTQwLDYgKzQwLDggQEAgY2xhc3MgRGF0YVJlZmVyZW5jZTsKIG5hbWVz
cGFjZSBXZWJLaXQgewogCiBjbGFzcyBSZW1vdGVDRE1GYWN0b3J5OworY2xhc3MgUmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyOworY2xhc3MgUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeTsKIAogY2xhc3Mg
R1BVUHJvY2Vzc0Nvbm5lY3Rpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxHUFVQcm9jZXNzQ29ubmVj
dGlvbj4sIElQQzo6Q29ubmVjdGlvbjo6Q2xpZW50IHsKIHB1YmxpYzoKQEAgLTYwLDEwICs2Miwx
NiBAQCBwdWJsaWM6CiAgICAgU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlciYgc2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyTWFuYWdlcigpOwogI2VuZGlmCiAKKyAgICBSZW1vdGVNZWRpYVBs
YXllck1hbmFnZXImIG1lZGlhUGxheWVyTWFuYWdlcigpOworCiAjaWYgRU5BQkxFKEVOQ1JZUFRF
RF9NRURJQSkKICAgICBSZW1vdGVDRE1GYWN0b3J5JiBjZG1GYWN0b3J5KCk7CiAjZW5kaWYKIAor
I2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQorICAgIFJlbW90ZUxlZ2FjeUNETUZh
Y3RvcnkmIGxlZ2FjeUNETUZhY3RvcnkoKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIEdQVVBy
b2Nlc3NDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcik7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlLmNwcAppbmRleCA5NWU3M2E2NTA5YTJhMzI5MzBlYzk0Zjk1YWMxMzZj
NmYwODBmNGI1Li4zYjMwODY3MGZlNWUxNDMwNTBhZDk2Nzc2Y2NjNmEzYjU0Yzg0N2EwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9N
ZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCkBAIC0zMCw2ICszMCw5IEBACiAKICNpbmNsdWRl
ICJBdWRpb1RyYWNrUHJpdmF0ZVJlbW90ZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNs
dWRlICJSZW1vdGVMZWdhY3lDRE0uaCIKKyNpbmNsdWRlICJSZW1vdGVMZWdhY3lDRE1GYWN0b3J5
LmgiCisjaW5jbHVkZSAiUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5oIgogI2luY2x1ZGUgIlJlbW90
ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJSZW1vdGVNZWRp
YVBsYXllclByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCkBA
IC0zOCw2ICs0MSw4IEBACiAjaW5jbHVkZSAiVmlkZW9UcmFja1ByaXZhdGVSZW1vdGUuaCIKICNp
bmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgi
CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5o
PgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1R5cGVkQXJyYXlUeXBlLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9NZWRpYVBsYXllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtTGF5ZXIuaD4KQEAgLTUzLDYgKzU4LDEwIEBA
CiAjaW5jbHVkZSAiUmVtb3RlQ0RNSW5zdGFuY2UuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKExF
R0FDWV9FTkNSWVBURURfTUVESUEpCisjaW5jbHVkZSA8V2ViQ29yZS9MZWdhY3lDRE0uaD4KKyNl
bmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiBl
eHRlcm4gV1RGTG9nQ2hhbm5lbCBMb2dNZWRpYTsKQEAgLTkwNCwxNSArOTEzLDM4IEBAIHN0ZDo6
dW5pcXVlX3B0cjxMZWdhY3lDRE1TZXNzaW9uPiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNy
ZWF0ZVNlc3Npb24oY29uc3QKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotdm9pZCBNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6OnNldENETVNlc3Npb24oTGVnYWN5Q0RNU2Vzc2lvbiopCit2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0Q0RNKExlZ2FjeUNETSogY2RtKQogewotICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgaWYgKCFjZG0pCisgICAgICAgIHJldHVybjsKKworICAg
IGF1dG8gcmVtb3RlQ0RNID0gbV9tYW5hZ2VyLmdwdVByb2Nlc3NDb25uZWN0aW9uKCkubGVnYWN5
Q0RNRmFjdG9yeSgpLmZpbmRDRE0oY2RtLT5jZG1Qcml2YXRlKCkpOworICAgIGlmICghcmVtb3Rl
Q0RNKQorICAgICAgICByZXR1cm47CisKKyAgICByZW1vdGVDRE0tPnNldFBsYXllcklkKG1faWQp
OworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0Q0RNU2Vzc2lvbihMZWdh
Y3lDRE1TZXNzaW9uKiBzZXNzaW9uKQoreworICAgIGlmICghc2Vzc2lvbiB8fCBzZXNzaW9uLT50
eXBlKCkgIT0gQ0RNU2Vzc2lvblR5cGVSZW1vdGUpIHsKKyAgICAgICAgY29ubmVjdGlvbigpLnNl
bmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6OlNldExlZ2FjeUNETVNlc3Npb24o
eyB9KSwgbV9pZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIHJlbW90ZVNl
c3Npb24gPSBzdGF0aWNfY2FzdDxSZW1vdGVMZWdhY3lDRE1TZXNzaW9uKj4oc2Vzc2lvbik7Cisg
ICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6OlNl
dExlZ2FjeUNETVNlc3Npb24ocmVtb3RlU2Vzc2lvbi0+aWRlbnRpZmllcigpKSwgbV9pZCk7CiB9
CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjprZXlBZGRlZCgpCiB7CiAgICAgY29u
bmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6OktleUFkZGVk
KCksIG1faWQpOwogfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bWVkaWFQbGF5
ZXJLZXlOZWVkZWQoSVBDOjpEYXRhUmVmZXJlbmNlJiYgbWVzc2FnZSkKK3sKKyAgICBtX3BsYXll
ci0+a2V5TmVlZGVkKFVpbnQ4QXJyYXk6OmNyZWF0ZShtZXNzYWdlLmRhdGEoKSwgbWVzc2FnZS5z
aXplKCkpLnB0cigpKTsKK30KICNlbmRpZgogCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oCmluZGV4IDdhYjY2NTI5YTUxOTczNTgzMWNmYmNjODk5
MThiYmE3NzdhYzVjZmUuLjgyZWEzY2MzMGMzZWQwZDAwZTU5OThlMDFlNmYzYzAzMzAxYmZiMDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaApAQCAtMzA1LDggKzMwNSwxMCBAQCBwcml2YXRl
OgogCiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCiAgICAgc3RkOjp1bmlxdWVf
cHRyPFdlYkNvcmU6OkxlZ2FjeUNETVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oY29uc3QgU3RyaW5n
JiwgV2ViQ29yZTo6TGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCopIGZpbmFsOworICAgIHZvaWQgc2V0
Q0RNKFdlYkNvcmU6OkxlZ2FjeUNETSopIGZpbmFsOwogICAgIHZvaWQgc2V0Q0RNU2Vzc2lvbihX
ZWJDb3JlOjpMZWdhY3lDRE1TZXNzaW9uKikgZmluYWw7CiAgICAgdm9pZCBrZXlBZGRlZCgpIGZp
bmFsOworICAgIHZvaWQgbWVkaWFQbGF5ZXJLZXlOZWVkZWQoSVBDOjpEYXRhUmVmZXJlbmNlJiYp
OwogI2VuZGlmCiAKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUu
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5pbgppbmRleCA5NDQ4ZGUwMmYxYWM5ZTQ2NDM4MzNj
MmQ1NTM3NTljOTgzMGI4MTU3Li5lN2Q4NmM3ZjRjM2RjZThiMGI5OGVmNjYwYTEyNjhmZGQ5YWUx
YzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5pbgpAQCAt
NzgsNiArNzgsMTAgQEAgbWVzc2FnZXMgLT4gTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlIE5vdFJl
ZkNvdW50ZWQgewogICAgIEluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKFN0cmluZyBpbml0
RGF0YVR5cGUsIElQQzo6RGF0YVJlZmVyZW5jZSBpbml0RGF0YSkKICNlbmRpZgogCisjaWYgRU5B
QkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCisgICAgTWVkaWFQbGF5ZXJLZXlOZWVkZWQoSVBD
OjpEYXRhUmVmZXJlbmNlIG1lc3NhZ2UpCisjZW5kaWYKKwogI2lmIEVOQUJMRShXSVJFTEVTU19Q
TEFZQkFDS19UQVJHRVQpCiAgICAgQ3VycmVudFBsYXliYWNrVGFyZ2V0SXNXaXJlbGVzc0NoYW5n
ZWQoYm9vbCBpc0N1cnJlbnRQbGF5YmFja1RhcmdldFdpcmVsZXNzKQogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETS5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMjQwNjY4ZTliYmVjYmU5MDJhMjE5N2RhMTFmZDYxNDgyY2VkNWFhZgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlTGVnYWN5Q0RNLmNwcApAQCAtMCwwICsxLDg5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETS5oIgorCisjaWYgRU5BQkxFKEdQ
VV9QUk9DRVNTKSAmJiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUg
IlJlbW90ZUxlZ2FjeUNETUZhY3RvcnkuaCIKKyNpbmNsdWRlICJSZW1vdGVMZWdhY3lDRE1Qcm94
eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5oIgorCituYW1l
c3BhY2UgV2ViS2l0IHsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK3N0ZDo6dW5pcXVl
X3B0cjxSZW1vdGVMZWdhY3lDRE0+IFJlbW90ZUxlZ2FjeUNETTo6Y3JlYXRlKFdlYWtQdHI8UmVt
b3RlTGVnYWN5Q0RNRmFjdG9yeT4mJiBmYWN0b3J5LCBSZW1vdGVMZWdhY3lDRE1JZGVudGlmaWVy
IGlkKQoreworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGVnYWN5Q0RNPihuZXcg
UmVtb3RlTGVnYWN5Q0RNKFdURk1vdmUoZmFjdG9yeSksIFdURk1vdmUoaWQpKSk7Cit9CisKK1Jl
bW90ZUxlZ2FjeUNETTo6UmVtb3RlTGVnYWN5Q0RNKFdlYWtQdHI8UmVtb3RlTGVnYWN5Q0RNRmFj
dG9yeT4mJiBmYWN0b3J5LCBSZW1vdGVMZWdhY3lDRE1JZGVudGlmaWVyJiYgaWQpCisgICAgOiBt
X2ZhY3RvcnkoV1RGTW92ZShmYWN0b3J5KSkKKyAgICAsIG1faWRlbnRpZmllcihXVEZNb3ZlKGlk
KSkKK3sKK30KKworUmVtb3RlTGVnYWN5Q0RNOjp+UmVtb3RlTGVnYWN5Q0RNKCkgPSBkZWZhdWx0
OworCitib29sIFJlbW90ZUxlZ2FjeUNETTo6c3VwcG9ydHNNSU1FVHlwZShjb25zdCBTdHJpbmcm
IG1pbWVUeXBlKQoreworICAgIGlmICghbV9mYWN0b3J5KQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBib29sIHN1cHBvcnRlZCA9IGZhbHNlOworICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vz
c0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUxlZ2Fj
eUNETVByb3h5OjpTdXBwb3J0c01JTUVUeXBlKG1pbWVUeXBlKSwgTWVzc2FnZXM6OlJlbW90ZUxl
Z2FjeUNETVByb3h5OjpTdXBwb3J0c01JTUVUeXBlOjpSZXBseShzdXBwb3J0ZWQpLCBtX2lkZW50
aWZpZXIpOworICAgIHJldHVybiBzdXBwb3J0ZWQ7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxXZWJD
b3JlOjpMZWdhY3lDRE1TZXNzaW9uPiBSZW1vdGVMZWdhY3lDRE06OmNyZWF0ZVNlc3Npb24oV2Vi
Q29yZTo6TGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCogY2xpZW50KQoreworICAgIGlmICghbV9mYWN0
b3J5KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIFN0cmluZyBzdG9yYWdlRGlyZWN0
b3J5ID0gY2xpZW50ID8gY2xpZW50LT5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkgOiBlbXB0
eVN0cmluZygpOworCisgICAgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXIgaWQ7Cisg
ICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3lu
YyhNZXNzYWdlczo6UmVtb3RlTGVnYWN5Q0RNUHJveHk6OkNyZWF0ZVNlc3Npb24oc3RvcmFnZURp
cmVjdG9yeSksIE1lc3NhZ2VzOjpSZW1vdGVMZWdhY3lDRE1Qcm94eTo6Q3JlYXRlU2Vzc2lvbjo6
UmVwbHkoaWQpLCBtX2lkZW50aWZpZXIpOworICAgIGlmICghaWQpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIHJldHVybiBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uOjpjcmVhdGUobV9mYWN0
b3J5LCBXVEZNb3ZlKGlkKSk7Cit9CisKK3ZvaWQgUmVtb3RlTGVnYWN5Q0RNOjpzZXRQbGF5ZXJJ
ZChNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIGlkKQoreworICAgIGlmICghbV9m
YWN0b3J5KQorICAgICAgICByZXR1cm47CisKKyAgICBPcHRpb25hbDxNZWRpYVBsYXllclByaXZh
dGVSZW1vdGVJZGVudGlmaWVyPiBvcHRpb25hbElkOworICAgIGlmIChpZCkKKyAgICAgICAgb3B0
aW9uYWxJZCA9IGlkOworICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25u
ZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTGVnYWN5Q0RNUHJveHk6OlNldFBsYXllcklk
KG9wdGlvbmFsSWQpLCBtX2lkZW50aWZpZXIpOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE0uaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZjU0Y2QzY2M0Mjk0MTcxNjYxOWY1MDNiNjNmOTczYjExYTFlMjI0MAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVn
YWN5Q0RNLmgKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkK
KworI2luY2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIuaCIKKyNpbmNs
dWRlICJSZW1vdGVMZWdhY3lDRE1JZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9MZWdh
Y3lDRE1Qcml2YXRlLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworY2xhc3MgU2V0dGluZ3M7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFz
cyBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5OworY2xhc3MgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbjsK
KworCitjbGFzcyBSZW1vdGVMZWdhY3lDRE0gZmluYWwKKyAgICA6IHB1YmxpYyBXZWJDb3JlOjpD
RE1Qcml2YXRlSW50ZXJmYWNlCisgICAgLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UmVtb3RlTGVn
YWN5Q0RNPiB7CitwdWJsaWM6CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMZWdh
Y3lDRE0+IGNyZWF0ZShXZWFrUHRyPFJlbW90ZUxlZ2FjeUNETUZhY3Rvcnk+JiYsIFJlbW90ZUxl
Z2FjeUNETUlkZW50aWZpZXIpOworICAgIHZpcnR1YWwgflJlbW90ZUxlZ2FjeUNETSgpOworCisg
ICAgYm9vbCBzdXBwb3J0c01JTUVUeXBlKGNvbnN0IFN0cmluZyYpIGZpbmFsOworICAgIHN0ZDo6
dW5pcXVlX3B0cjxXZWJDb3JlOjpMZWdhY3lDRE1TZXNzaW9uPiBjcmVhdGVTZXNzaW9uKFdlYkNv
cmU6OkxlZ2FjeUNETVNlc3Npb25DbGllbnQqKSBmaW5hbDsKKyAgICB2b2lkIHNldFBsYXllcklk
KE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIpOworCitwcml2YXRlOgorICAgIFJl
bW90ZUxlZ2FjeUNETShXZWFrUHRyPFJlbW90ZUxlZ2FjeUNETUZhY3Rvcnk+JiYsIFJlbW90ZUxl
Z2FjeUNETUlkZW50aWZpZXImJik7CisKKyAgICBXZWFrUHRyPFJlbW90ZUxlZ2FjeUNETUZhY3Rv
cnk+IG1fZmFjdG9yeTsKKyAgICBSZW1vdGVMZWdhY3lDRE1JZGVudGlmaWVyIG1faWRlbnRpZmll
cjsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnkuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5LmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42NDYwYmNlNDI4Mjg4OWI1NTI4MTM0YjAzYjkyOGQ2M2EyYmYzYjFiCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1G
YWN0b3J5LmNwcApAQCAtMCwwICsxLDE0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJSZW1vdGVMZWdhY3lDRE1GYWN0b3J5LmgiCisKKyNpZiBFTkFCTEUo
R1BVX1BST0NFU1MpICYmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVk
ZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGUuaCIKKyNpbmNsdWRlICJSZW1vdGVMZWdhY3lDRE0uaCIKKyNpbmNsdWRlICJSZW1vdGVM
ZWdhY3lDRE1GYWN0b3J5UHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNE
TVNlc3Npb24uaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9M
ZWdhY3lDRE0uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NldHRpbmdzLmg+CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworUmVtb3RlTGVnYWN5Q0RNRmFj
dG9yeTo6UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeShXZWJQcm9jZXNzJiBwcm9jZXNzKQorICAgIDog
bV9wcm9jZXNzKHByb2Nlc3MpCit7Cit9CisKK1JlbW90ZUxlZ2FjeUNETUZhY3Rvcnk6On5SZW1v
dGVMZWdhY3lDRE1GYWN0b3J5KCkgPSBkZWZhdWx0OworCit2b2lkIFJlbW90ZUxlZ2FjeUNETUZh
Y3Rvcnk6OnJlZ2lzdGVyRmFjdG9yeSgpCit7CisgICAgTGVnYWN5Q0RNOjpjbGVhckZhY3Rvcmll
cygpOworICAgIExlZ2FjeUNETTo6cmVnaXN0ZXJDRE1GYWN0b3J5KAorICAgICAgICBbd2Vha1Ro
aXMgPSBtYWtlV2Vha1B0cih0aGlzKV0gKExlZ2FjeUNETSogcHJpdmF0ZUNETSkgLT4gc3RkOjp1
bmlxdWVfcHRyPFdlYkNvcmU6OkNETVByaXZhdGVJbnRlcmZhY2U+IHsKKyAgICAgICAgICAgIGlm
ICh3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICByZXR1cm4gd2Vha1RoaXMtPmNyZWF0ZUNETShw
cml2YXRlQ0RNKTsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9LAorICAg
ICAgICBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0gKGNvbnN0IFN0cmluZyYga2V5U3lz
dGVtKSB7CisgICAgICAgICAgICByZXR1cm4gd2Vha1RoaXMgPyB3ZWFrVGhpcy0+c3VwcG9ydHNL
ZXlTeXN0ZW0oa2V5U3lzdGVtKSA6IGZhbHNlOworICAgICAgICB9LAorICAgICAgICBbd2Vha1Ro
aXMgPSBtYWtlV2Vha1B0cih0aGlzKV0gKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlKSB7CisgICAgICAgICAgICByZXR1cm4gd2Vha1RoaXMgPyB3ZWFrVGhp
cy0+c3VwcG9ydHNLZXlTeXN0ZW1BbmRNaW1lVHlwZShrZXlTeXN0ZW0sIG1pbWVUeXBlKSA6IGZh
bHNlOworICAgICAgICB9CisgICAgKTsKK30KKworY29uc3QgY2hhciogUmVtb3RlTGVnYWN5Q0RN
RmFjdG9yeTo6c3VwcGxlbWVudE5hbWUoKQoreworICAgIHJldHVybiAiUmVtb3RlTGVnYWN5Q0RN
RmFjdG9yeSI7Cit9CisKK0dQVVByb2Nlc3NDb25uZWN0aW9uJiBSZW1vdGVMZWdhY3lDRE1GYWN0
b3J5OjpncHVQcm9jZXNzQ29ubmVjdGlvbigpCit7CisgICAgcmV0dXJuIG1fcHJvY2Vzcy5lbnN1
cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpOworfQorCitib29sIFJlbW90ZUxlZ2FjeUNETUZhY3Rv
cnk6OnN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKQoreworICAgIGJv
b2wgc3VwcG9ydGVkID0gZmFsc2U7CisgICAgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0
aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eTo6U3Vw
cG9ydHNLZXlTeXN0ZW0oa2V5U3lzdGVtLCBXVEY6Om51bGxvcHQpLCBNZXNzYWdlczo6UmVtb3Rl
TGVnYWN5Q0RNRmFjdG9yeVByb3h5OjpTdXBwb3J0c0tleVN5c3RlbTo6UmVwbHkoc3VwcG9ydGVk
KSwgeyB9KTsKKyAgICByZXR1cm4gc3VwcG9ydGVkOworfQorCitib29sIFJlbW90ZUxlZ2FjeUNE
TUZhY3Rvcnk6OnN1cHBvcnRzS2V5U3lzdGVtQW5kTWltZVR5cGUoY29uc3QgU3RyaW5nJiBrZXlT
eXN0ZW0sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCit7CisgICAgYm9vbCBzdXBwb3J0ZWQgPSBm
YWxzZTsKKyAgICBncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhN
ZXNzYWdlczo6UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5OjpTdXBwb3J0c0tleVN5c3RlbShr
ZXlTeXN0ZW0sIG1pbWVUeXBlKSwgTWVzc2FnZXM6OlJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94
eTo6U3VwcG9ydHNLZXlTeXN0ZW06OlJlcGx5KHN1cHBvcnRlZCksIHsgfSk7CisgICAgcmV0dXJu
IHN1cHBvcnRlZDsKK30KKworc3RkOjp1bmlxdWVfcHRyPENETVByaXZhdGVJbnRlcmZhY2U+IFJl
bW90ZUxlZ2FjeUNETUZhY3Rvcnk6OmNyZWF0ZUNETShXZWJDb3JlOjpMZWdhY3lDRE0qIGNkbSkK
K3sKKyAgICBpZiAoIWNkbSkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisKKyAgICBPcHRpb25hbDxNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGVJZGVudGlmaWVyPiBwbGF5ZXJJZDsKKyAgICBpZiAoYXV0byBwbGF5ZXIgPSBj
ZG0tPm1lZGlhUGxheWVyKCkpCisgICAgICAgIHBsYXllcklkID0gZ3B1UHJvY2Vzc0Nvbm5lY3Rp
b24oKS5tZWRpYVBsYXllck1hbmFnZXIoKS5maW5kUmVtb3RlUGxheWVySWQocGxheWVyLT5wbGF5
ZXJQcml2YXRlKCkpOworCisgICAgUmVtb3RlTGVnYWN5Q0RNSWRlbnRpZmllciBpZDsKKyAgICBn
cHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVt
b3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5OjpDcmVhdGVDRE0oY2RtLT5rZXlTeXN0ZW0oKSwgV1RG
TW92ZShwbGF5ZXJJZCkpLCBNZXNzYWdlczo6UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5OjpD
cmVhdGVDRE06OlJlcGx5KGlkKSwgeyB9KTsKKyAgICBpZiAoIWlkKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICBhdXRvIHJlbW90ZUNETSA9IFJlbW90ZUxlZ2FjeUNETTo6Y3JlYXRlKG1h
a2VXZWFrUHRyKHRoaXMpLCBpZCk7CisgICAgbV9jZG1zLnNldChpZCwgbWFrZVdlYWtQdHIocmVt
b3RlQ0RNLmdldCgpKSk7CisgICAgcmV0dXJuIHJlbW90ZUNETTsKK30KKwordm9pZCBSZW1vdGVM
ZWdhY3lDRE1GYWN0b3J5OjphZGRTZXNzaW9uKFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlm
aWVyIGlkLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbj4mJiBzZXNzaW9u
KQoreworICAgIEFTU0VSVCghbV9zZXNzaW9ucy5jb250YWlucyhpZCkpOworICAgIG1fc2Vzc2lv
bnMuc2V0KGlkLCBXVEZNb3ZlKHNlc3Npb24pKTsKK30KKwordm9pZCBSZW1vdGVMZWdhY3lDRE1G
YWN0b3J5OjpyZW1vdmVTZXNzaW9uKFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyIGlk
KQoreworICAgIEFTU0VSVChtX3Nlc3Npb25zLmNvbnRhaW5zKGlkKSk7CisgICAgbV9zZXNzaW9u
cy5yZW1vdmUoaWQpOworfQorCitSZW1vdGVMZWdhY3lDRE0qIFJlbW90ZUxlZ2FjeUNETUZhY3Rv
cnk6OmZpbmRDRE0oQ0RNUHJpdmF0ZUludGVyZmFjZSogcHJpdmF0ZUludGVyZmFjZSkgY29uc3QK
K3sKKyAgICBmb3IgKGF1dG8mIGNkbSA6IG1fY2Rtcy52YWx1ZXMoKSkgeworICAgICAgICBpZiAo
cHJpdmF0ZUludGVyZmFjZSA9PSBjZG0uZ2V0KCkpCisgICAgICAgICAgICByZXR1cm4gY2RtLmdl
dCgpOworICAgIH0KKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwordm9pZCBSZW1vdGVMZWdhY3lD
RE1GYWN0b3J5OjpkaWRSZWNlaXZlU2Vzc2lvbk1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25u
ZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpCit7CisgICAgaWYgKGF1dG8qIHNlc3Npb24g
PSBtX3Nlc3Npb25zLmdldChtYWtlT2JqZWN0SWRlbnRpZmllcjxSZW1vdGVMZWdhY3lDRE1TZXNz
aW9uSWRlbnRpZmllclR5cGU+KGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkpCisgICAgICAgIHNl
c3Npb24tPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworfQorCisKK30K
KworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUxlZ2FjeUNETUZhY3RvcnkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYxZTVhZmY0ZTY0ZGQ2
ZTY4OTEzZDMyYmMxMTU5YzMxZjFjNGQ2MGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnkuaApAQCAtMCww
ICsxLDkzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BS
T0NFU1MpICYmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSAiUmVt
b3RlTGVnYWN5Q0RNSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETVNlc3Np
b25JZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc1N1cHBsZW1lbnQuaCIKKyNpbmNs
dWRlIDxXZWJDb3JlL0xlZ2FjeUNETS5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5j
bHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNwYWNlIElQQyB7CitjbGFzcyBDb25uZWN0aW9u
OworY2xhc3MgRGVjb2RlcjsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgU2V0dGlu
Z3M7Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIENETVByaXZhdGVJbnRlcmZhY2U7
CitjbGFzcyBMZWdhY3lDRE07Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBHUFVQ
cm9jZXNzQ29ubmVjdGlvbjsKK2NsYXNzIFJlbW90ZUxlZ2FjeUNETTsKK2NsYXNzIFJlbW90ZUxl
Z2FjeUNETVNlc3Npb247CitjbGFzcyBXZWJQcm9jZXNzOworCisKK2NsYXNzIFJlbW90ZUxlZ2Fj
eUNETUZhY3RvcnkgZmluYWwKKyAgICA6IHB1YmxpYyBXZWJQcm9jZXNzU3VwcGxlbWVudAorICAg
ICwgcHVibGljIENhbk1ha2VXZWFrUHRyPFJlbW90ZUxlZ2FjeUNETUZhY3Rvcnk+IHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBSZW1vdGVMZWdh
Y3lDRE1GYWN0b3J5KFdlYlByb2Nlc3MmKTsKKyAgICB2aXJ0dWFsIH5SZW1vdGVMZWdhY3lDRE1G
YWN0b3J5KCk7CisKKyAgICB2b2lkIHJlZ2lzdGVyRmFjdG9yeSgpOworCisgICAgc3RhdGljIGNv
bnN0IGNoYXIqIHN1cHBsZW1lbnROYW1lKCk7CisgICAgV2ViUHJvY2VzcyYgcHJvY2VzcygpIGNv
bnN0IHsgcmV0dXJuIG1fcHJvY2VzczsgfQorCisgICAgR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIGdw
dVByb2Nlc3NDb25uZWN0aW9uKCk7CisKKyAgICB2b2lkIGRpZFJlY2VpdmVTZXNzaW9uTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKKworICAgIHZvaWQgYWRkU2Vzc2lv
bihSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFJlbW90
ZUxlZ2FjeUNETVNlc3Npb24+JiYpOworICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbihSZW1vdGVMZWdh
Y3lDRE1TZXNzaW9uSWRlbnRpZmllcik7CisKKyAgICBSZW1vdGVMZWdhY3lDRE0qIGZpbmRDRE0o
V2ViQ29yZTo6Q0RNUHJpdmF0ZUludGVyZmFjZSopIGNvbnN0OworCitwcml2YXRlOgorICAgIGJv
b2wgc3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJik7CisgICAgYm9vbCBzdXBwb3J0c0tl
eVN5c3RlbUFuZE1pbWVUeXBlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOworICAgIHN0
ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpDRE1Qcml2YXRlSW50ZXJmYWNlPiBjcmVhdGVDRE0oV2Vi
Q29yZTo6TGVnYWN5Q0RNKik7CisKKyAgICBIYXNoTWFwPFJlbW90ZUxlZ2FjeUNETVNlc3Npb25J
ZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbj4+IG1fc2Vz
c2lvbnM7CisgICAgSGFzaE1hcDxSZW1vdGVMZWdhY3lDRE1JZGVudGlmaWVyLCBXZWFrUHRyPFJl
bW90ZUxlZ2FjeUNETT4+IG1fY2RtczsKKyAgICBXZWJQcm9jZXNzJiBtX3Byb2Nlc3M7Cit9Owor
Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVMZWdhY3lDRE1JZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETUlkZW50aWZpZXIuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZmI5
YjdhMmYwZDYyYjE5ZGE5OWJjMzVhY2NkYzZhMTA3NzdlZmViCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1JZGVudGlm
aWVyLmgKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYg
RU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKKwor
I2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitlbnVtIFJlbW90ZUxlZ2FjeUNETUlkZW50aWZpZXJUeXBlIHsgfTsKK3VzaW5nIFJlbW90ZUxl
Z2FjeUNETUlkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPFJlbW90ZUxlZ2FjeUNETUlkZW50
aWZpZXJUeXBlPjsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNz
aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5
Q0RNU2Vzc2lvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTIzNTE3NDIwNWFmMTEzM2VjNWExYzEzYWZiYjYx
NjM5NmI3MmY3NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5jcHAKQEAgLTAsMCArMSwxNjAgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlTGVnYWN5Q0RN
U2Vzc2lvbi5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTEVHQUNZX0VO
Q1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJS
ZW1vdGVMZWdhY3lDRE1GYWN0b3J5LmgiCisjaW5jbHVkZSAiUmVtb3RlTGVnYWN5Q0RNU2Vzc2lv
blByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9HZW5lcmljVHlwZWRB
cnJheVZpZXdJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXdJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvVHlwZWRBcnJh
eVR5cGUuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OworCitzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiBjb252ZXJ0VG9BcnJheUJ1ZmZlcihJUEM6
OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmJiBidWZmZXIpCit7CisgICAgaWYgKGJ1ZmZlci5i
dWZmZXIoKSkKKyAgICAgICAgcmV0dXJuIEFycmF5QnVmZmVyOjpjcmVhdGUoYnVmZmVyLmRhdGEo
KSwgYnVmZmVyLnNpemUoKSk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3N0YXRpYyBSZWZQ
dHI8VWludDhBcnJheT4gY29udmVydFRvVWludDhBcnJheShJUEM6OlNoYXJlZEJ1ZmZlckRhdGFS
ZWZlcmVuY2UmJiBidWZmZXIpCit7CisgICAgYXV0byBhcnJheUJ1ZmZlciA9IGNvbnZlcnRUb0Fy
cmF5QnVmZmVyKFdURk1vdmUoYnVmZmVyKSk7CisgICAgaWYgKCFhcnJheUJ1ZmZlcikKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBzaXplX3Qgc2l6ZUluQnl0ZXMgPSBhcnJheUJ1ZmZl
ci0+Ynl0ZUxlbmd0aCgpOworICAgIHJldHVybiBVaW50OEFycmF5OjpjcmVhdGUoV1RGTW92ZShh
cnJheUJ1ZmZlciksIDAsIHNpemVJbkJ5dGVzKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+
CitzdGF0aWMgT3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlPiBjb252ZXJ0
VG9PcHRpb25hbERhdGFSZWZlcmVuY2UoVCBhcnJheSkKK3sKKyAgICBpZiAoIWFycmF5KQorICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiB7IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGFycmF5LT5kYXRhKCksIGFycmF5LT5ieXRlTGVuZ3RoKCkpIH07Cit9CisKK3RlbXBsYXRl
IDx0eXBlbmFtZSBUPgorc3RhdGljIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBjb252
ZXJ0VG9EYXRhUmVmZXJlbmNlKFQgYXJyYXkpCit7CisgICAgaWYgKCFhcnJheSkKKyAgICAgICAg
cmV0dXJuIHsgfTsKKyAgICByZXR1cm4geyBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgoY29uc3QgY2hh
ciopYXJyYXktPmRhdGEoKSwgYXJyYXktPmJ5dGVMZW5ndGgoKSkgfTsKK30KKworc3RkOjp1bmlx
dWVfcHRyPFJlbW90ZUxlZ2FjeUNETVNlc3Npb24+IFJlbW90ZUxlZ2FjeUNETVNlc3Npb246OmNy
ZWF0ZShXZWFrUHRyPFJlbW90ZUxlZ2FjeUNETUZhY3Rvcnk+IGZhY3RvcnksIFJlbW90ZUxlZ2Fj
eUNETVNlc3Npb25JZGVudGlmaWVyJiYgaWQpCit7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0
cjxSZW1vdGVMZWdhY3lDRE1TZXNzaW9uPihuZXcgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbihXVEZN
b3ZlKGZhY3RvcnkpLCBXVEZNb3ZlKGlkKSkpOworfQorCitSZW1vdGVMZWdhY3lDRE1TZXNzaW9u
OjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uKFdlYWtQdHI8UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeT4g
ZmFjdG9yeSwgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXImJiBpZCkKKyAgICA6IG1f
ZmFjdG9yeShXVEZNb3ZlKGZhY3RvcnkpKQorICAgICwgbV9pZGVudGlmaWVyKFdURk1vdmUoaWQp
KQoreworfQorCitSZWZQdHI8VWludDhBcnJheT4gUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbjo6Z2Vu
ZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFVpbnQ4QXJyYXkqIGluaXRE
YXRhLCBTdHJpbmcmIGRlc3RpbmF0aW9uVVJMLCB1bnNpZ25lZCBzaG9ydCYgZXJyb3JDb2RlLCB1
aW50MzJfdCYgc3lzdGVtQ29kZSkKK3sKKyAgICBpZiAoIW1fZmFjdG9yeSB8fCAhaW5pdERhdGEp
CisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYXV0byBpcGNJbml0RGF0YSA9IGNvbnZl
cnRUb0RhdGFSZWZlcmVuY2UoaW5pdERhdGEpOworICAgIE9wdGlvbmFsPElQQzo6U2hhcmVkQnVm
ZmVyRGF0YVJlZmVyZW5jZT4gaXBjTmV4dE1lc3NhZ2U7CisgICAgbV9mYWN0b3J5LT5ncHVQcm9j
ZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlTGVn
YWN5Q0RNU2Vzc2lvblByb3h5OjpHZW5lcmF0ZUtleVJlcXVlc3QobWltZVR5cGUsIGlwY0luaXRE
YXRhKSwgTWVzc2FnZXM6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6R2VuZXJhdGVLZXlS
ZXF1ZXN0OjpSZXBseShpcGNOZXh0TWVzc2FnZSwgZGVzdGluYXRpb25VUkwsIGVycm9yQ29kZSwg
c3lzdGVtQ29kZSksIG1faWRlbnRpZmllcik7CisKKyAgICBpZiAoIWlwY05leHRNZXNzYWdlKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBjb252ZXJ0VG9VaW50OEFycmF5
KFdURk1vdmUoKmlwY05leHRNZXNzYWdlKSk7Cit9CisKK3ZvaWQgUmVtb3RlTGVnYWN5Q0RNU2Vz
c2lvbjo6cmVsZWFzZUtleXMoKQoreworICAgIGlmICghbV9mYWN0b3J5KQorICAgICAgICByZXR1
cm47CisKKyAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigp
LnNlbmQoTWVzc2FnZXM6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6UmVsZWFzZUtleXMo
KSwgbV9pZGVudGlmaWVyKTsKK30KKworYm9vbCBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uOjp1cGRh
dGUoVWludDhBcnJheSoga2V5RGF0YSwgUmVmUHRyPFVpbnQ4QXJyYXk+JiBuZXh0TWVzc2FnZSwg
dW5zaWduZWQgc2hvcnQmIGVycm9yQ29kZSwgdWludDMyX3QmIHN5c3RlbUNvZGUpCit7CisgICAg
aWYgKCFtX2ZhY3RvcnkgfHwgIWtleURhdGEpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IGF1dG8gaXBjS2V5RGF0YSA9IGNvbnZlcnRUb0RhdGFSZWZlcmVuY2UoV1RGTW92ZShrZXlEYXRh
KSk7CisgICAgYm9vbCBzdWNjZWVkZWQgeyBmYWxzZSB9OworICAgIE9wdGlvbmFsPElQQzo6U2hh
cmVkQnVmZmVyRGF0YVJlZmVyZW5jZT4gaXBjTmV4dE1lc3NhZ2U7CisgICAgbV9mYWN0b3J5LT5n
cHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVt
b3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpVcGRhdGUoaXBjS2V5RGF0YSksIE1lc3NhZ2VzOjpS
ZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OlVwZGF0ZTo6UmVwbHkoc3VjY2VlZGVkLCBpcGNO
ZXh0TWVzc2FnZSwgZXJyb3JDb2RlLCBzeXN0ZW1Db2RlKSwgbV9pZGVudGlmaWVyKTsKKworICAg
IGlmIChpcGNOZXh0TWVzc2FnZSkKKyAgICAgICAgbmV4dE1lc3NhZ2UgPSBjb252ZXJ0VG9VaW50
OEFycmF5KFdURk1vdmUoKmlwY05leHRNZXNzYWdlKSk7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK1JlZlB0cjxBcnJheUJ1ZmZlcj4gUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbjo6Y2FjaGVkS2V5
Rm9yS2V5SUQoY29uc3QgU3RyaW5nJiBrZXlJZCkgY29uc3QKK3sKKyAgICBpZiAoIW1fZmFjdG9y
eSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBPcHRpb25hbDxJUEM6OlNoYXJlZEJ1
ZmZlckRhdGFSZWZlcmVuY2U+IGlwY0tleTsKKyAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25u
ZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVMZWdhY3lDRE1T
ZXNzaW9uUHJveHk6OkNhY2hlZEtleUZvcktleUlEKGtleUlkKSwgTWVzc2FnZXM6OlJlbW90ZUxl
Z2FjeUNETVNlc3Npb25Qcm94eTo6Q2FjaGVkS2V5Rm9yS2V5SUQ6OlJlcGx5KGlwY0tleSksIG1f
aWRlbnRpZmllcik7CisKKyAgICBpZiAoIWlwY0tleSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisKKyAgICByZXR1cm4gY29udmVydFRvQXJyYXlCdWZmZXIoV1RGTW92ZSgqaXBjS2V5KSk7Cit9
CisKK3ZvaWQgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbjo6c2VuZE1lc3NhZ2UoT3B0aW9uYWw8SVBD
OjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlPiYmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVz
dGluYXRpb25VUkwpCit7CisgICAgaWYgKCFtX2NsaWVudCkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgaWYgKCFtZXNzYWdlKSB7CisgICAgICAgIG1fY2xpZW50LT5zZW5kTWVzc2FnZShudWxscHRy
LCBkZXN0aW5hdGlvblVSTCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2NsaWVu
dC0+c2VuZE1lc3NhZ2UoY29udmVydFRvVWludDhBcnJheShXVEZNb3ZlKCptZXNzYWdlKSkuZ2V0
KCksIGRlc3RpbmF0aW9uVVJMKTsKK30KKwordm9pZCBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uOjpz
ZW5kRXJyb3IoV2ViQ29yZTo6TGVnYWN5Q0RNU2Vzc2lvbkNsaWVudDo6TWVkaWFLZXlFcnJvckNv
ZGUgZXJyb3JDb2RlLCB1aW50MzJfdCBzeXN0ZW1Db2RlKQoreworICAgIGlmIChtX2NsaWVudCkK
KyAgICAgICAgbV9jbGllbnQtPnNlbmRFcnJvcihlcnJvckNvZGUsIHN5c3RlbUNvZGUpOworfQor
Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MzNhYzkzNTUx
ZWQ5NWQyMzg4MmM3ZDdjOWZjZjgxODE5OWI5YzI0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmgKQEAg
LTAsMCArMSw3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQ
VV9QUk9DRVNTKSAmJiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUg
Ik1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVu
dGlmaWVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9MZWdhY3lDRE1TZXNzaW9uLmg+CisjaW5jbHVk
ZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNwYWNlIElQQyB7CitjbGFzcyBTaGFyZWRCdWZmZXJE
YXRhUmVmZXJlbmNlOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgUmVtb3RlTGVn
YWN5Q0RNRmFjdG9yeTsKKworY2xhc3MgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbiBmaW5hbAorICAg
IDogcHVibGljIFdlYkNvcmU6OkxlZ2FjeUNETVNlc3Npb24KKyAgICAsIHB1YmxpYyBJUEM6Ok1l
c3NhZ2VSZWNlaXZlciB7CitwdWJsaWM6CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1v
dGVMZWdhY3lDRE1TZXNzaW9uPiBjcmVhdGUoV2Vha1B0cjxSZW1vdGVMZWdhY3lDRE1GYWN0b3J5
PiwgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXImJik7CisKKyAgICAvLyBNZXNzYWdl
UmVjZWl2ZXIKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQ
Qzo6RGVjb2RlciYpIGZpbmFsOworCisgICAgY29uc3QgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklk
ZW50aWZpZXImIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KKwor
cHJpdmF0ZToKKyAgICBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uKFdlYWtQdHI8UmVtb3RlTGVnYWN5
Q0RNRmFjdG9yeT4sIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyJiYpOworCisgICAg
Ly8gTGVnYWN5Q0RNU2Vzc2lvbgorICAgIFdlYkNvcmU6OkxlZ2FjeUNETVNlc3Npb25UeXBlIHR5
cGUoKSBmaW5hbCB7IHJldHVybiBXZWJDb3JlOjpDRE1TZXNzaW9uVHlwZVJlbW90ZTsgfQorICAg
IHZvaWQgc2V0Q2xpZW50KFdlYkNvcmU6OkxlZ2FjeUNETVNlc3Npb25DbGllbnQqIGNsaWVudCkg
ZmluYWwgeyBtX2NsaWVudCA9IGNsaWVudDsgfQorICAgIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklk
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zZXNzaW9uSWQ7IH0KKyAgICBSZWZQdHI8VWludDhB
cnJheT4gZ2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFVpbnQ4QXJy
YXkqIGluaXREYXRhLCBTdHJpbmcmIGRlc3RpbmF0aW9uVVJMLCB1bnNpZ25lZCBzaG9ydCYgZXJy
b3JDb2RlLCB1aW50MzJfdCYgc3lzdGVtQ29kZSkgZmluYWw7CisgICAgdm9pZCByZWxlYXNlS2V5
cygpIGZpbmFsOworICAgIGJvb2wgdXBkYXRlKFVpbnQ4QXJyYXkqLCBSZWZQdHI8VWludDhBcnJh
eT4mIG5leHRNZXNzYWdlLCB1bnNpZ25lZCBzaG9ydCYgZXJyb3JDb2RlLCB1aW50MzJfdCYgc3lz
dGVtQ29kZSkgZmluYWw7CisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBjYWNoZWRLZXlGb3JLZXlJ
RChjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKKworICAgIC8vIE1lc3NhZ2VzCisgICAgdm9p
ZCBzZW5kTWVzc2FnZShPcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U+JiYg
bWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblVSTCk7CisgICAgdm9pZCBzZW5kRXJy
b3IoV2ViQ29yZTo6TGVnYWN5Q0RNU2Vzc2lvbkNsaWVudDo6TWVkaWFLZXlFcnJvckNvZGUsIHVp
bnQzMl90IHN5c3RlbUNvZGUpOworCisgICAgV2Vha1B0cjxSZW1vdGVMZWdhY3lDRE1GYWN0b3J5
PiBtX2ZhY3Rvcnk7CisgICAgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXIgbV9pZGVu
dGlmaWVyOworICAgIFdlYkNvcmU6OkxlZ2FjeUNETVNlc3Npb25DbGllbnQqIG1fY2xpZW50Owor
ICAgIFN0cmluZyBtX3Nlc3Npb25JZDsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24u
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxl
Z2FjeUNETVNlc3Npb24ubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODQ3YWY2MDQwMWY5MWUzNDEw
YzJmZTRkNGU0NDcxNTI2MTNhMTI4NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5tZXNzYWdlcy5pbgpA
QCAtMCwwICsxLDMxIEBACisjIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMg
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisj
aWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkK
KworbWVzc2FnZXMgLT4gUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbiBOb3RSZWZDb3VudGVkIHsKKyAg
ICBTZW5kTWVzc2FnZShPcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U+IG1l
c3NhZ2UsIFN0cmluZyBkZXN0aW5hdGlvblVSTCkKKyAgICBTZW5kRXJyb3IoZW51bTp1aW50OF90
IFdlYkNvcmU6OkxlZ2FjeUNETVNlc3Npb25DbGllbnQ6Ok1lZGlhS2V5RXJyb3JDb2RlIGVycm9y
Q29kZSwgdWludDMyX3Qgc3lzdGVtQ29kZSkKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVu
dGlmaWVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2Fj
eUNETVNlc3Npb25JZGVudGlmaWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGYwOGFkYTgzMTRmZGJkM2ZmOGM3
ZWI3MDQ3OTRlMTg1YmUxOWYyMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXIuaApAQCAt
MCwwICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BV
X1BST0NFU1MpICYmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSA8
d3RmL09iamVjdElkZW50aWZpZXIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2VudW0gUmVt
b3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXJUeXBlIHsgfTsKK3VzaW5nIFJlbW90ZUxlZ2Fj
eUNETVNlc3Npb25JZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxSZW1vdGVMZWdhY3lDRE1T
ZXNzaW9uSWRlbnRpZmllclR5cGU+OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5jcHAKaW5kZXggZGRkZDUzNDc0M2IxNTY4Y2YwNTky
NmY1YmMyNjc2ZWFkY2ViNGVlZC4uZGU3ZWI1MzlkY2UwMTViM2EwMzBkYTVkNjc4OGRlNzUxODkx
MTMwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVNZWRpYVBsYXllck1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmNwcApAQCAtMTc4LDYgKzE3OCwxNyBA
QCB2b2lkIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6ZGVsZXRlUmVtb3RlTWVkaWFQbGF5ZXIo
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSQogICAgIGdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29u
bmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpE
ZWxldGVNZWRpYVBsYXllcihpZCksIDApOwogfQogCitNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJ
ZGVudGlmaWVyIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6ZmluZFJlbW90ZVBsYXllcklkKGNv
bnN0IE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZSogcGxheWVyKQoreworICAgIGZvciAoYXV0
byBwYWlyIDogbV9wbGF5ZXJzKSB7CisgICAgICAgIGlmIChwYWlyLnZhbHVlID09IHBsYXllcikK
KyAgICAgICAgICAgIHJldHVybiBwYWlyLmtleTsKKyAgICB9CisKKyAgICByZXR1cm4geyB9Owor
fQorCisKIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpnZXRTdXBwb3J0ZWRUeXBlcyhN
ZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgcmVtb3RlRW5naW5lSWRlbnRp
ZmllciwgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHJlc3VsdCkK
IHsKICAgICBhdXRvJiBjYWNoZSA9IHR5cGVDYWNoZShyZW1vdGVFbmdpbmVJZGVudGlmaWVyKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZU1lZGlhUGxheWVyTWFuYWdlci5oCmluZGV4IDMyMGVjMzAxODlkNmZjNTYyZjJhZWJmZjUx
YzkwZjc0ZWRmOGRhMDEuLmJlZWNiMzdlZmY3OGQ5OWU4YmNmOGU5NDNjM2QyMTYwZTk3NDlhYTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuaApAQCAtNjksNiArNjksOCBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIGRlbGV0ZVJlbW90ZU1lZGlhUGxheWVyKE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZUlkZW50aWZpZXIpOwogCisgICAgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBm
aW5kUmVtb3RlUGxheWVySWQoY29uc3QgV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJm
YWNlKik7CisKIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZUludGVyZmFjZT4gY3JlYXRlUmVtb3RlTWVkaWFQbGF5ZXIoV2ViQ29yZTo6TWVk
aWFQbGF5ZXIqLCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZp
ZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmlu
ZGV4IDMwY2NjZjY3YWQwODNmMWYwNGQwMzI4Zjc5ZDJkZDc3YTVmODM3M2EuLjVmY2UxYmQwZWVh
YTcxYTU3ZGRmOTc1ZDNlMjhhM2RlMjhiYWIyZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0zMjYsNiArMzI2LDkgQEAKICNpZiBFTkFCTEUo
RU5DUllQVEVEX01FRElBKQogI2luY2x1ZGUgIlJlbW90ZUNETUZhY3RvcnkuaCIKICNlbmRpZgor
I2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQorI2luY2x1ZGUgIlJlbW90ZUxlZ2Fj
eUNETUZhY3RvcnkuaCIKKyNlbmRpZgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJLaXQgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IDk4NDU3ZGRmZTBiNTUxNWI2
NzY0YzNiZjM2MWU0ZDEzMGViNWUwZGQuLjQ2Zjg3ZTA5MDdkZTFlMjQ3YjY0MzI4YWM1MmRlYTdi
YTA4NGIxMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTQz
LDYgKzQzLDcgQEAKICNpbmNsdWRlICJOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5o
IgogI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5oIgogI2luY2x1ZGUg
IlJlbW90ZUF1ZGlvU2Vzc2lvbi5oIgorI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETUZhY3Rvcnku
aCIKICNpbmNsdWRlICJTdGF0aXN0aWNzRGF0YS5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBcmVhTWFw
LmgiCiAjaW5jbHVkZSAiVXNlckRhdGEuaCIKQEAgLTIwMjEsNiArMjAyMiwxMyBAQCB2b2lkIFdl
YlByb2Nlc3M6OnNldFVzZUdQVVByb2Nlc3NGb3JNZWRpYShib29sIHVzZUdQVVByb2Nlc3NGb3JN
ZWRpYSkKICAgICBlbHNlCiAgICAgICAgIEF1ZGlvU2Vzc2lvbjo6c2V0U2hhcmVkU2Vzc2lvbihB
dWRpb1Nlc3Npb246OmNyZWF0ZSgpKTsKICNlbmRpZgorCisjaWYgRU5BQkxFKExFR0FDWV9FTkNS
WVBURURfTUVESUEpCisgICAgaWYgKHVzZUdQVVByb2Nlc3NGb3JNZWRpYSkKKyAgICAgICAgZW5z
dXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5sZWdhY3lDRE1GYWN0b3J5KCkucmVnaXN0ZXJGYWN0
b3J5KCk7CisgICAgZWxzZQorICAgICAgICBMZWdhY3lDRE06OnJlc2V0RmFjdG9yaWVzKCk7Cisj
ZW5kaWYKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>
<flag name="review"
          id="408081"
          type_id="1"
          status="+"
          setter="eric.carlson"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392800</attachid>
            <date>2020-03-06 16:28:29 -0800</date>
            <delta_ts>2020-03-08 10:42:54 -0700</delta_ts>
            <desc>Part 1: WebCore</desc>
            <filename>bug-208402-20200306162828.patch</filename>
            <type>text/plain</type>
            <size>16828</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4MDMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGE4NmMyNTQ4ZDYwMjU3
MzM3MzBhOTBiZDcyNTRmZjdjYzQxZTc0Yi4uYzJkNDFkMmJiNTI4ZTI3ODU2MmFlNTI2YzJhYzcw
Y2NmMmQ0ZTk2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDIwLTAyLTI4ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFVQXSBJbXBsZW1lbnQg
TGVnYWN5IEVNRSBBUEkgaW4gdGhlIEdQVSBQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg0MDIKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQcmVwYXJlIGZvciBydW5uaW5nIHRoZSBMZWdhY3lD
RE0gZXQuIGFsLiBpbiB0aGUgR1BVIHByb2Nlc3MuCisKKyAgICAgICAgU2xpZ2h0bHkgbW9kZXJu
aXplIExlZ2FjeUNETSB0byBhbGxvdyBhbGwgbWV0aG9kcyByZXByZXNlbnRhaW5nIGEgTGVnYWN5
Q0RNRmFjdG9yeSB0byBiZSBXVEY6OkZ1bmN0aW9ucy4KKworICAgICAgICBBbGxvdyB0aGUgbGlz
dCBvZiByZWdpc3RlcmVkIGZhY3RvcmllcyB0byBiZSBjbGVhcmVkIGFuZCByZXNldCBhdCBydW50
aW1lLgorCisgICAgICAgIE1vZGlmeSBXZWJLaXRNZWRpYUtleXMgdG8gbm90aWZ5IHRoZSBNZWRp
YVBsYXllciB3aGVuIHRoZSBrZXlzIG9iamVjdCBpcyBhZGRlZCB0byBhIEhUTUxNZWRpYUVsZW1l
bnQuCisKKyAgICAgICAgRXhwb3NlIHRoZSBwb2ludGVyIHRvIHRoZSBpbnRlcm5hbCBDRE1Qcml2
YXRlSW50ZXJmYWNlIGZvciB1c2UgaW4gV2ViS2l0LgorCisgICAgICAgICogTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2Fj
eUNETTo6cGxhdGZvcm1SZWdpc3RlckZhY3Rvcmllcyk6CisgICAgICAgIChXZWJDb3JlOjppbnN0
YWxsZWRDRE1GYWN0b3JpZXMpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5Q0RNOjpyZWdpc3Rl
ckNETUZhY3RvcnkpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5Q0RNRmFjdG9yeUZvcktleVN5
c3RlbSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lDRE06OnN1cHBvcnRzS2V5U3lzdGVtKToK
KyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeUNETTo6a2V5U3lzdGVtU3VwcG9ydHNNaW1lVHlwZSk6
CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lDRE06OkxlZ2FjeUNETSk6CisgICAgICAgIChXZWJD
b3JlOjpMZWdhY3lDRE06OmNyZWF0ZVNlc3Npb24pOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETS5oOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJL
aXRNZWRpYUtleXM6OnNldE1lZGlhRWxlbWVudCk6CisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYUVuZ2luZVdhc1VwZGF0
ZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0xlZ2FjeUNETVNlc3Npb24uaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllcjo6c2V0Q0RNKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJp
dmF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlOjpz
ZXRDRE0pOgorCiAyMDIwLTAzLTA1ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgog
CiAgICAgICAgIFtHUFVQXSBDb252ZXJ0IENETUZhY3RvcnkgYXdheSBmcm9tIHBsYXRmb3JtU3Ry
YXRlZ2llcygpIGFuZCB1c2UgV2ViUHJvY2VzcyBzZXR0aW5ncyBpbnN0ZWFkCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE0u
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5
Q0RNLmNwcAppbmRleCA4MzdkZjEyM2FlNTk2ZjM1MzdjOTE1MjcwM2UzZDI3MWIzNDZlYjUxLi4y
OTgyMzc1MWQ0YzU5NDI2NzA4YWI4NjRhYjRhY2ExZTk0Njk1MDJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE0uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNE
TS5jcHAKQEAgLTQzLDQ5ICs0Myw1MyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0cnVj
dCBDRE1GYWN0b3J5IHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDRE1GYWN0b3J5KTsgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgQ0RNRmFjdG9yeShDcmVhdGVDRE0m
JiBjb25zdHJ1Y3RvciwgQ0RNU3VwcG9ydHNLZXlTeXN0ZW0gc3VwcG9ydHNLZXlTeXN0ZW0sIENE
TVN1cHBvcnRzS2V5U3lzdGVtQW5kTWltZVR5cGUgc3VwcG9ydHNLZXlTeXN0ZW1BbmRNaW1lVHlw
ZSkKLSAgICAgICAgOiBjb25zdHJ1Y3RvcihXVEZNb3ZlKGNvbnN0cnVjdG9yKSkKLSAgICAgICAg
LCBzdXBwb3J0c0tleVN5c3RlbShzdXBwb3J0c0tleVN5c3RlbSkKLSAgICAgICAgLCBzdXBwb3J0
c0tleVN5c3RlbUFuZE1pbWVUeXBlKHN1cHBvcnRzS2V5U3lzdGVtQW5kTWltZVR5cGUpCi0gICAg
ewotICAgIH0KLQorc3RydWN0IExlZ2FjeUNETUZhY3RvcnkgewogICAgIENyZWF0ZUNETSBjb25z
dHJ1Y3RvcjsKICAgICBDRE1TdXBwb3J0c0tleVN5c3RlbSBzdXBwb3J0c0tleVN5c3RlbTsKICAg
ICBDRE1TdXBwb3J0c0tleVN5c3RlbUFuZE1pbWVUeXBlIHN1cHBvcnRzS2V5U3lzdGVtQW5kTWlt
ZVR5cGU7CiB9OwogCi1zdGF0aWMgVmVjdG9yPENETUZhY3RvcnkqPiYgaW5zdGFsbGVkQ0RNRmFj
dG9yaWVzKCkKK3N0YXRpYyB2b2lkIHBsYXRmb3JtUmVnaXN0ZXJGYWN0b3JpZXMoVmVjdG9yPExl
Z2FjeUNETUZhY3Rvcnk+JiBmYWN0b3JpZXMpCiB7Ci0gICAgc3RhdGljIGF1dG8gY2RtcyA9IG1h
a2VOZXZlckRlc3Ryb3llZChWZWN0b3I8Q0RNRmFjdG9yeSo+IHsKLSAgICAgICAgbmV3IENETUZh
Y3RvcnkoW10oTGVnYWN5Q0RNKiBjZG0pIHsgcmV0dXJuIG1ha2VVbmlxdWU8TGVnYWN5Q0RNUHJp
dmF0ZUNsZWFyS2V5PihjZG0pOyB9LAotICAgICAgICAgICAgTGVnYWN5Q0RNUHJpdmF0ZUNsZWFy
S2V5OjpzdXBwb3J0c0tleVN5c3RlbSwgTGVnYWN5Q0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0
c0tleVN5c3RlbUFuZE1pbWVUeXBlKSwKLQotICAgICAgICAvLyBGSVhNRTogaW5pdGlhbGl6ZSBz
cGVjaWZpYyBVQSBDRE1zLiBodHRwOi8vd2Via2l0Lm9yZy9iLzEwOTMxOCwgaHR0cDovL3dlYmtp
dC5vcmcvYi8xMDkzMjAKLSAgICAgICAgbmV3IENETUZhY3RvcnkoW10oTGVnYWN5Q0RNKiBjZG0p
IHsgcmV0dXJuIG1ha2VVbmlxdWU8Q0RNUHJpdmF0ZU1lZGlhUGxheWVyPihjZG0pOyB9LAotICAg
ICAgICAgICAgQ0RNUHJpdmF0ZU1lZGlhUGxheWVyOjpzdXBwb3J0c0tleVN5c3RlbSwgQ0RNUHJp
dmF0ZU1lZGlhUGxheWVyOjpzdXBwb3J0c0tleVN5c3RlbUFuZE1pbWVUeXBlKSwKLQorICAgIGZh
Y3Rvcmllcy5hcHBlbmQoeyBbXShMZWdhY3lDRE0qIGNkbSkgeyByZXR1cm4gbWFrZVVuaXF1ZTxM
ZWdhY3lDRE1Qcml2YXRlQ2xlYXJLZXk+KGNkbSk7IH0sIExlZ2FjeUNETVByaXZhdGVDbGVhcktl
eTo6c3VwcG9ydHNLZXlTeXN0ZW0sIExlZ2FjeUNETVByaXZhdGVDbGVhcktleTo6c3VwcG9ydHNL
ZXlTeXN0ZW1BbmRNaW1lVHlwZSB9KTsKKyAgICAvLyBGSVhNRTogaW5pdGlhbGl6ZSBzcGVjaWZp
YyBVQSBDRE1zLiBodHRwOi8vd2Via2l0Lm9yZy9iLzEwOTMxOCwgaHR0cDovL3dlYmtpdC5vcmcv
Yi8xMDkzMjAKKyAgICBmYWN0b3JpZXMuYXBwZW5kKHsgW10oTGVnYWN5Q0RNKiBjZG0pIHsgcmV0
dXJuIG1ha2VVbmlxdWU8Q0RNUHJpdmF0ZU1lZGlhUGxheWVyPihjZG0pOyB9LCBDRE1Qcml2YXRl
TWVkaWFQbGF5ZXI6OnN1cHBvcnRzS2V5U3lzdGVtLCBDRE1Qcml2YXRlTWVkaWFQbGF5ZXI6OnN1
cHBvcnRzS2V5U3lzdGVtQW5kTWltZVR5cGUgfSk7CiAjaWYgKEhBVkUoQVZDT05URU5US0VZU0VT
U0lPTikgfHwgSEFWRShBVlNUUkVBTVNFU1NJT04pKSAmJiBFTkFCTEUoTUVESUFfU09VUkNFKQot
ICAgICAgICBuZXcgQ0RNRmFjdG9yeShbXShMZWdhY3lDRE0qIGNkbSkgeyByZXR1cm4gbWFrZVVu
aXF1ZTxDRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDPihjZG0pOyB9LAotICAgICAgICAgICAg
Q0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c3VwcG9ydHNLZXlTeXN0ZW0sIENETVByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakM6OnN1cHBvcnRzS2V5U3lzdGVtQW5kTWltZVR5cGUpLAorICAg
IGZhY3Rvcmllcy5hcHBlbmQoeyBbXShMZWdhY3lDRE0qIGNkbSkgeyByZXR1cm4gbWFrZVVuaXF1
ZTxDRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDPihjZG0pOyB9LCBDRE1Qcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDOjpzdXBwb3J0c0tleVN5c3RlbSwgQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQzo6c3VwcG9ydHNLZXlTeXN0ZW1BbmRNaW1lVHlwZSB9KTsKICNlbmRpZgorfQorCitzdGF0
aWMgVmVjdG9yPExlZ2FjeUNETUZhY3Rvcnk+JiBpbnN0YWxsZWRDRE1GYWN0b3JpZXMoKQorewor
ICAgIHN0YXRpYyBhdXRvIGNkbXMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQ8VmVjdG9yPExlZ2FjeUNE
TUZhY3Rvcnk+Pih7IH0pOworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyByZWdpc3RlckRlZmF1
bHRzOworICAgIHN0ZDo6Y2FsbF9vbmNlKHJlZ2lzdGVyRGVmYXVsdHMsIFsmXSB7CisgICAgICAg
IHBsYXRmb3JtUmVnaXN0ZXJGYWN0b3JpZXMoY2Rtcyk7CiAgICAgfSk7CiAgICAgcmV0dXJuIGNk
bXM7CiB9CiAKLXZvaWQgTGVnYWN5Q0RNOjpyZWdpc3RlckNETUZhY3RvcnkoQ3JlYXRlQ0RNJiYg
Y29uc3RydWN0b3IsIENETVN1cHBvcnRzS2V5U3lzdGVtIHN1cHBvcnRzS2V5U3lzdGVtLCBDRE1T
dXBwb3J0c0tleVN5c3RlbUFuZE1pbWVUeXBlIHN1cHBvcnRzS2V5U3lzdGVtQW5kTWltZVR5cGUp
Cit2b2lkIExlZ2FjeUNETTo6cmVzZXRGYWN0b3JpZXMoKQoreworICAgIGNsZWFyRmFjdG9yaWVz
KCk7CisgICAgcGxhdGZvcm1SZWdpc3RlckZhY3RvcmllcyhpbnN0YWxsZWRDRE1GYWN0b3JpZXMo
KSk7Cit9CisKK3ZvaWQgTGVnYWN5Q0RNOjpjbGVhckZhY3RvcmllcygpCit7CisgICAgaW5zdGFs
bGVkQ0RNRmFjdG9yaWVzKCkuY2xlYXIoKTsKK30KKwordm9pZCBMZWdhY3lDRE06OnJlZ2lzdGVy
Q0RNRmFjdG9yeShDcmVhdGVDRE0mJiBjb25zdHJ1Y3RvciwgQ0RNU3VwcG9ydHNLZXlTeXN0ZW0m
JiBzdXBwb3J0c0tleVN5c3RlbSwgQ0RNU3VwcG9ydHNLZXlTeXN0ZW1BbmRNaW1lVHlwZSYmIHN1
cHBvcnRzS2V5U3lzdGVtQW5kTWltZVR5cGUpCiB7Ci0gICAgaW5zdGFsbGVkQ0RNRmFjdG9yaWVz
KCkuYXBwZW5kKG5ldyBDRE1GYWN0b3J5KFdURk1vdmUoY29uc3RydWN0b3IpLCBzdXBwb3J0c0tl
eVN5c3RlbSwgc3VwcG9ydHNLZXlTeXN0ZW1BbmRNaW1lVHlwZSkpOworICAgIGluc3RhbGxlZENE
TUZhY3RvcmllcygpLmFwcGVuZCh7IFdURk1vdmUoY29uc3RydWN0b3IpLCBXVEZNb3ZlKHN1cHBv
cnRzS2V5U3lzdGVtKSwgV1RGTW92ZShzdXBwb3J0c0tleVN5c3RlbUFuZE1pbWVUeXBlKSB9KTsK
IH0KIAotc3RhdGljIENETUZhY3RvcnkqIENETUZhY3RvcnlGb3JLZXlTeXN0ZW0oY29uc3QgU3Ry
aW5nJiBrZXlTeXN0ZW0pCitzdGF0aWMgTGVnYWN5Q0RNRmFjdG9yeSogQ0RNRmFjdG9yeUZvcktl
eVN5c3RlbShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSkKIHsKICAgICBmb3IgKGF1dG8mIGZhY3Rv
cnkgOiBpbnN0YWxsZWRDRE1GYWN0b3JpZXMoKSkgewotICAgICAgICBpZiAoZmFjdG9yeS0+c3Vw
cG9ydHNLZXlTeXN0ZW0oa2V5U3lzdGVtKSkKLSAgICAgICAgICAgIHJldHVybiBmYWN0b3J5Owor
ICAgICAgICBpZiAoZmFjdG9yeS5zdXBwb3J0c0tleVN5c3RlbShrZXlTeXN0ZW0pKQorICAgICAg
ICAgICAgcmV0dXJuICZmYWN0b3J5OwogICAgIH0KICAgICByZXR1cm4gbnVsbHB0cjsKIH0KQEAg
LTk3LDcgKzEwMSw3IEBAIGJvb2wgTGVnYWN5Q0RNOjpzdXBwb3J0c0tleVN5c3RlbShjb25zdCBT
dHJpbmcmIGtleVN5c3RlbSkKIAogYm9vbCBMZWdhY3lDRE06OmtleVN5c3RlbVN1cHBvcnRzTWlt
ZVR5cGUoY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiB7
Ci0gICAgaWYgKENETUZhY3RvcnkqIGZhY3RvcnkgPSBDRE1GYWN0b3J5Rm9yS2V5U3lzdGVtKGtl
eVN5c3RlbSkpCisgICAgaWYgKExlZ2FjeUNETUZhY3RvcnkqIGZhY3RvcnkgPSBDRE1GYWN0b3J5
Rm9yS2V5U3lzdGVtKGtleVN5c3RlbSkpCiAgICAgICAgIHJldHVybiBmYWN0b3J5LT5zdXBwb3J0
c0tleVN5c3RlbUFuZE1pbWVUeXBlKGtleVN5c3RlbSwgbWltZVR5cGUpOwogICAgIHJldHVybiBm
YWxzZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvbGVnYWN5L0xlZ2FjeUNETS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9sZWdhY3kvTGVnYWN5Q0RNLmgKaW5kZXggZmI1ZGExZjE2ZGEwMmVjODRjMzQ3N2QzNTVm
ZTBhNWU4OTY0MDZhOS4uMTEwNzFkNWZhNGY5Mzg5Y2NlZGViYjE4MjIzODgyMTBiOGJkYTViMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kv
TGVnYWN5Q0RNLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9s
ZWdhY3kvTGVnYWN5Q0RNLmgKQEAgLTM5LDkgKzM5LDkgQEAgY2xhc3MgTGVnYWN5Q0RNOwogY2xh
c3MgQ0RNUHJpdmF0ZUludGVyZmFjZTsKIGNsYXNzIE1lZGlhUGxheWVyOwogCi11c2luZyBDcmVh
dGVDRE0gPSBXVEY6OkZ1bmN0aW9uPHN0ZDo6dW5pcXVlX3B0cjxDRE1Qcml2YXRlSW50ZXJmYWNl
PiAoTGVnYWN5Q0RNKik+OwotdHlwZWRlZiBib29sICgqQ0RNU3VwcG9ydHNLZXlTeXN0ZW0pKGNv
bnN0IFN0cmluZyYpOwotdHlwZWRlZiBib29sICgqQ0RNU3VwcG9ydHNLZXlTeXN0ZW1BbmRNaW1l
VHlwZSkoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJik7Cit1c2luZyBDcmVhdGVDRE0gPSBX
VEY6OkZ1bmN0aW9uPHN0ZDo6dW5pcXVlX3B0cjxDRE1Qcml2YXRlSW50ZXJmYWNlPihMZWdhY3lD
RE0qKT47Cit1c2luZyBDRE1TdXBwb3J0c0tleVN5c3RlbSA9IFdURjo6RnVuY3Rpb248Ym9vbChj
b25zdCBTdHJpbmcmKT47Cit1c2luZyBDRE1TdXBwb3J0c0tleVN5c3RlbUFuZE1pbWVUeXBlID0g
V1RGOjpGdW5jdGlvbjxib29sKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpPjsKIAogY2xh
c3MgTGVnYWN5Q0RNQ2xpZW50IHsKIHB1YmxpYzoKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgUmVmUHRyPE1lZGlhUGxheWVyPiBjZG1NZWRpYVBsYXllcihjb25zdCBMZWdh
Y3lDRE0qKSBjb25zdCA9IDA7CiB9OwogCi1jbGFzcyBMZWdhY3lDRE0gZmluYWwgeworY2xhc3Mg
V0VCQ09SRV9FWFBPUlQgTGVnYWN5Q0RNIGZpbmFsIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBMZWdhY3lDRE0oY29uc3QgU3RyaW5nJiBrZXlT
eXN0ZW0pOwpAQCAtNTksOSArNTksMTIgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIHN1cHBv
cnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYpOwogICAgIHN0YXRpYyBib29sIGtleVN5c3RlbVN1
cHBvcnRzTWltZVR5cGUoY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUpOwogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TGVnYWN5Q0RNPiBjcmVhdGUoY29u
c3QgU3RyaW5nJiBrZXlTeXN0ZW0pOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHJl
Z2lzdGVyQ0RNRmFjdG9yeShDcmVhdGVDRE0mJiwgQ0RNU3VwcG9ydHNLZXlTeXN0ZW0sIENETVN1
cHBvcnRzS2V5U3lzdGVtQW5kTWltZVR5cGUpOworICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQ0RN
RmFjdG9yeShDcmVhdGVDRE0mJiwgQ0RNU3VwcG9ydHNLZXlTeXN0ZW0mJiwgQ0RNU3VwcG9ydHNL
ZXlTeXN0ZW1BbmRNaW1lVHlwZSYmKTsKICAgICB+TGVnYWN5Q0RNKCk7CiAKKyAgICBzdGF0aWMg
dm9pZCByZXNldEZhY3RvcmllcygpOworICAgIHN0YXRpYyB2b2lkIGNsZWFyRmFjdG9yaWVzKCk7
CisKICAgICBib29sIHN1cHBvcnRzTUlNRVR5cGUoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAgICAg
c3RkOjp1bmlxdWVfcHRyPExlZ2FjeUNETVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oTGVnYWN5Q0RN
U2Vzc2lvbkNsaWVudCYpOwogCkBAIC03MSw2ICs3NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dENsaWVudChMZWdhY3lDRE1DbGllbnQqIGNsaWVudCkgeyBtX2NsaWVudCA9IGNsaWVudDsgfQog
CiAgICAgUmVmUHRyPE1lZGlhUGxheWVyPiBtZWRpYVBsYXllcigpIGNvbnN0OworICAgIENETVBy
aXZhdGVJbnRlcmZhY2UqIGNkbVByaXZhdGUoKSBjb25zdCB7IHJldHVybiBtX3ByaXZhdGUuZ2V0
KCk7IH0KIAogcHJpdmF0ZToKICAgICBTdHJpbmcgbV9rZXlTeXN0ZW07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtl
eXMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2Vi
S2l0TWVkaWFLZXlzLmNwcAppbmRleCBlNTM3ZTYwZjcyOGIzMGMwZTRhZjUyMWMzMmFhN2IzOTVh
ZDY2NGMzLi5iZjY0NmRlY2RlNzNjMmVjNjVjNDZhOGI0OTEyMjliN2ZhMWIzM2ExIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRN
ZWRpYUtleXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
bGVnYWN5L1dlYktpdE1lZGlhS2V5cy5jcHAKQEAgLTEyOCwxMyArMTI4LDE4IEBAIGJvb2wgV2Vi
S2l0TWVkaWFLZXlzOjppc1R5cGVTdXBwb3J0ZWQoY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNv
bnN0IFN0cmluZyYgbWltCiAKIHZvaWQgV2ViS2l0TWVkaWFLZXlzOjpzZXRNZWRpYUVsZW1lbnQo
SFRNTE1lZGlhRWxlbWVudCogZWxlbWVudCkKIHsKLSAgICBpZiAobV9tZWRpYUVsZW1lbnQgJiYg
bV9tZWRpYUVsZW1lbnQtPnBsYXllcigpKQorICAgIGlmIChtX21lZGlhRWxlbWVudCAmJiBtX21l
ZGlhRWxlbWVudC0+cGxheWVyKCkpIHsKICAgICAgICAgbV9tZWRpYUVsZW1lbnQtPnBsYXllcigp
LT5zZXRDRE1TZXNzaW9uKG51bGxwdHIpOworICAgICAgICBtX21lZGlhRWxlbWVudC0+cGxheWVy
KCktPnNldENETShudWxscHRyKTsKKyAgICB9CiAKICAgICBtX21lZGlhRWxlbWVudCA9IG1ha2VX
ZWFrUHRyKGVsZW1lbnQpOwogCi0gICAgaWYgKG1fbWVkaWFFbGVtZW50ICYmIG1fbWVkaWFFbGVt
ZW50LT5wbGF5ZXIoKSAmJiAhbV9zZXNzaW9ucy5pc0VtcHR5KCkpCi0gICAgICAgIG1fbWVkaWFF
bGVtZW50LT5wbGF5ZXIoKS0+c2V0Q0RNU2Vzc2lvbihtX3Nlc3Npb25zLmxhc3QoKS0+c2Vzc2lv
bigpKTsKKyAgICBpZiAobV9tZWRpYUVsZW1lbnQgJiYgbV9tZWRpYUVsZW1lbnQtPnBsYXllcigp
KSB7CisgICAgICAgIG1fbWVkaWFFbGVtZW50LT5wbGF5ZXIoKS0+c2V0Q0RNKG1fY2RtLmdldCgp
KTsKKyAgICAgICAgaWYgKCFtX3Nlc3Npb25zLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIG1fbWVk
aWFFbGVtZW50LT5wbGF5ZXIoKS0+c2V0Q0RNU2Vzc2lvbihtX3Nlc3Npb25zLmxhc3QoKS0+c2Vz
c2lvbigpKTsKKyAgICB9CiB9CiAKIFJlZlB0cjxNZWRpYVBsYXllcj4gV2ViS2l0TWVkaWFLZXlz
OjpjZG1NZWRpYVBsYXllcihjb25zdCBMZWdhY3lDRE0qKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDBhYTVkMDYzZGU1
NzJiZDdiOTJlYmQ2OTI5MjdiNjlkOTE0ZDA0NGUuLjQ4ZWM5MzY5NThkZjM5ZTRjMGVjOTgzNjQ0
Y2EyOGZhZTRjN2EzNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTQxOTcsNiArNDE5Nyw4IEBACiAJCUNERTNBODU0MTdGNUZD
RTYwMEM1QkUyMCAvKiBBdWRpb1RyYWNrUHJpdmF0ZUFWRi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFM0E4NTIxN0Y1RkNFNjAwQzVCRTIwIC8qIEF1
ZGlvVHJhY2tQcml2YXRlQVZGLmggKi87IH07CiAJCUNERTNBODU3MTdGNjAyMDQwMEM1QkUyMCAv
KiBBdWRpb1RyYWNrUHJpdmF0ZUFWRk9iakMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDREUzQTg1NTE3RjYwMjA0MDBDNUJFMjAgLyogQXVkaW9UcmFj
a1ByaXZhdGVBVkZPYmpDLm1tICovOyB9OwogCQlDREUzQTg1ODE3RjYwMjA0MDBDNUJFMjAgLyog
QXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDREUzQTg1NjE3RjYwMjA0MDBDNUJFMjAgLyogQXVkaW9UcmFja1By
aXZhdGVBVkZPYmpDLmggKi87IH07CisJCUNERTU1NTI0MjQwNUNDRjIwMDhBM0REQiAvKiBMZWdh
Y3lDRE0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENE
QTk4RTBBMTYwM0NENTkwMEZFQTNCMSAvKiBMZWdhY3lDRE0uaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDREU1NTUyNTI0MDVDQ0YyMDA4QTNEREIg
LyogTGVnYWN5Q0RNUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0RBOThFMEMxNjAzQ0YzQzAwRkVBM0IxIC8qIExlZ2FjeUNETVByaXZhdGUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDREU1
OTU5NTFCRjE2REYzMDBBMUNCRTggLyogQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24ubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREU1OTU5MzFC
RjE2NkFEMDBBMUNCRTggLyogQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24ubW0gKi87IH07
CiAJCUNERTU5NTk3MUJGMjZFMjEwMEExQ0JFOCAvKiBDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZP
YmpDLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREU1
OTU5NjFCRjI2RTIxMDBBMUNCRTggLyogQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQy5oICov
OyB9OwogCQlDREU1OTU5RDFCRjI3NTcxMDBBMUNCRTggLyogQ0RNU2Vzc2lvbk1lZGlhU291cmNl
QVZGT2JqQy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IENERTU5NTlDMUJGMjc1NzEwMEExQ0JFOCAvKiBDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpD
Lm1tICovOyB9OwpAQCAtMzEzODcsNiArMzEzODksOCBAQAogCQkJCTExMzEwQ0YyMjBCQTRBMzIw
MDY1QThEMCAvKiBMYXlvdXRUcmVlQnVpbGRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQxREMw
NDgxNjQ4MzQ4RjAwMzcxRTVBIC8qIExheW91dFVuaXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0
NTFDNjMxMjM5NDAyNzkwMDk5MzE5MCAvKiBMYXlvdXRVbml0cy5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJQ0RFNTU1MjQyNDA1Q0NGMjAwOEEzRERCIC8qIExlZ2FjeUNETS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJQ0RFNTU1MjUyNDA1Q0NGMjAwOEEzRERCIC8qIExlZ2FjeUNETVByaXZhdGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUNERThCNUVEMUE2OTc3NzMwMEI0QjY2QSAvKiBMZWdhY3lDRE1Qcml2
YXRlQ2xlYXJLZXkuaCBpbiBIZWFkZXJzICovLAogCQkJCUNERjRCNzEyMUUwMDg3QUUwMEUyMzVB
MiAvKiBMZWdhY3lDRE1TZXNzaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREU4QjVGMTFBNjk3
NzhCMDBCNEI2NkEgLyogTGVnYWN5Q0RNU2Vzc2lvbkNsZWFyS2V5LmggaW4gSGVhZGVycyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDQ2ZTY3YjgyMzYy
YWVjNmE2ZjAxYWM3MDI2YmY3MjhlOWYwNDQwMjQuLjZkNDE1NzEzMjgyMWRkNDgyOTM2NDg0ZTMw
YThmY2VhMmQwOWYwMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cApAQCAtNTEyOCw2ICs1MTI4LDExIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFFbmdp
bmVXYXNVcGRhdGVkKCkKICAgICAgICAgbV9wbGF5ZXItPmNkbUluc3RhbmNlQXR0YWNoZWQobV9t
ZWRpYUtleXMtPmNkbUluc3RhbmNlKCkpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTEVHQUNZX0VO
Q1JZUFRFRF9NRURJQSkKKyAgICBpZiAobV9wbGF5ZXIgJiYgbV93ZWJLaXRNZWRpYUtleXMpCisg
ICAgICAgIG1fcGxheWVyLT5zZXRDRE0oJm1fd2ViS2l0TWVkaWFLZXlzLT5jZG0oKSk7CisjZW5k
aWYKKwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJM
RShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCiAgICAgaWYgKCFtX3BsYXllcikKICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTGVn
YWN5Q0RNU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTGVnYWN5
Q0RNU2Vzc2lvbi5oCmluZGV4IDI1ZTc5YTZkYzBhNWIyMTkzYTcyYTIyN2FhY2ExNzczYTdlM2My
OGMuLjI0MzQ5NjhlYWU5ODYwMGQ4ZmJhZWI1MWEwNTViMTFmNGNkMzQ3ZDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xlZ2FjeUNETVNlc3Npb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MZWdhY3lDRE1TZXNzaW9uLmgKQEAg
LTM4LDcgKzM4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkxlZ2FjeUNETVNlc3Npb25DbGll
bnQoKSA9IGRlZmF1bHQ7CiAgICAgdmlydHVhbCB2b2lkIHNlbmRNZXNzYWdlKFVpbnQ4QXJyYXkq
LCBTdHJpbmcgZGVzdGluYXRpb25VUkwpID0gMDsKIAotICAgIGVudW0geworICAgIGVudW0gOiB1
aW50OF90IHsKICAgICAgICAgTWVkaWFLZXlFcnJvclVua25vd24gPSAxLAogICAgICAgICBNZWRp
YUtleUVycm9yQ2xpZW50LAogICAgICAgICBNZWRpYUtleUVycm9yU2VydmljZSwKQEAgLTU4LDkg
KzU4LDEwIEBAIGVudW0gTGVnYWN5Q0RNU2Vzc2lvblR5cGUgewogICAgIENETVNlc3Npb25UeXBl
QVZGb3VuZGF0aW9uT2JqQywKICAgICBDRE1TZXNzaW9uVHlwZUFWU3RyZWFtU2Vzc2lvbiwKICAg
ICBDRE1TZXNzaW9uVHlwZUFWQ29udGVudEtleVNlc3Npb24sCisgICAgQ0RNU2Vzc2lvblR5cGVS
ZW1vdGUsCiB9OwogCi1jbGFzcyBMZWdhY3lDRE1TZXNzaW9uIHsKK2NsYXNzIFdFQkNPUkVfRVhQ
T1JUIExlZ2FjeUNETVNlc3Npb24gewogcHVibGljOgogICAgIHZpcnR1YWwgfkxlZ2FjeUNETVNl
c3Npb24oKSA9IGRlZmF1bHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL01lZGlhUGxheWVyLmNwcAppbmRleCA2MTlkNmUxMDE2ZWMwNGU0NzE0MWY5MmI4OGE5ZmFl
OWYzOGNjMzE2Li4wMTEzMmYzZWE2Yzk1NTdmYTQ3YWNiZGM3NzRiM2U0MjA2YjIwZTYxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCkBA
IC02MjYsNiArNjI2LDExIEBAIHN0ZDo6dW5pcXVlX3B0cjxMZWdhY3lDRE1TZXNzaW9uPiBNZWRp
YVBsYXllcjo6Y3JlYXRlU2Vzc2lvbihjb25zdCBTdHJpbmcmIGtleVN5CiAgICAgcmV0dXJuIG1f
cHJpdmF0ZS0+Y3JlYXRlU2Vzc2lvbihrZXlTeXN0ZW0sIGNsaWVudCk7CiB9CiAKK3ZvaWQgTWVk
aWFQbGF5ZXI6OnNldENETShMZWdhY3lDRE0qIGNkbSkKK3sKKyAgICBtX3ByaXZhdGUtPnNldENE
TShjZG0pOworfQorCiB2b2lkIE1lZGlhUGxheWVyOjpzZXRDRE1TZXNzaW9uKExlZ2FjeUNETVNl
c3Npb24qIHNlc3Npb24pCiB7CiAgICAgbV9wcml2YXRlLT5zZXRDRE1TZXNzaW9uKHNlc3Npb24p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKaW5k
ZXggZGYxNTczNGM3YmQwOWE2ZjRlMzE2ZGNmYTIwYzQ3ZWFhODliY2I1Ni4uMzFmYjc5YTUxMGVi
NGE1YWI5ZjUwY2Q3NTNkMDRkNGY3YzUwMmM3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCkBAIC02NCw2ICs2NCw3IEBAIGNsYXNzIENhY2hl
ZFJlc291cmNlTG9hZGVyOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w7CiBjbGFzcyBH
cmFwaGljc0NvbnRleHQ7CiBjbGFzcyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlOworY2xhc3MgTGVn
YWN5Q0RNOwogY2xhc3MgTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudDsKIGNsYXNzIE1lZGlhUGxheWJh
Y2tUYXJnZXQ7CiBjbGFzcyBNZWRpYVBsYXllcjsKQEAgLTM1NSw2ICszNTYsNyBAQCBwdWJsaWM6
CiAgICAgZW51bSBNZWRpYUtleUV4Y2VwdGlvbiB7IE5vRXJyb3IsIEludmFsaWRQbGF5ZXJTdGF0
ZSwgS2V5U3lzdGVtTm90U3VwcG9ydGVkIH07CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TGVnYWN5
Q0RNU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbihjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgTGVnYWN5
Q0RNU2Vzc2lvbkNsaWVudCopOworICAgIHZvaWQgc2V0Q0RNKExlZ2FjeUNETSopOwogICAgIHZv
aWQgc2V0Q0RNU2Vzc2lvbihMZWdhY3lDRE1TZXNzaW9uKik7CiAgICAgdm9pZCBrZXlBZGRlZCgp
OwogI2VuZGlmCkBAIC02MjMsNiArNjI1LDggQEAgcHVibGljOgogICAgIHZvaWQgcmVxdWVzdElu
c3RhbGxNaXNzaW5nUGx1Z2lucyhjb25zdCBTdHJpbmcmIGRldGFpbHMsIGNvbnN0IFN0cmluZyYg
ZGVzY3JpcHRpb24sIE1lZGlhUGxheWVyUmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2luc0NhbGxi
YWNrJiBjYWxsYmFjaykgeyBjbGllbnQoKS5yZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zKGRl
dGFpbHMsIGRlc2NyaXB0aW9uLCBjYWxsYmFjayk7IH0KICNlbmRpZgogCisgICAgY29uc3QgTWVk
aWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlKiBwbGF5ZXJQcml2YXRlKCkgY29uc3QgeyByZXR1cm4g
bV9wcml2YXRlLmdldCgpOyB9CisKIHByaXZhdGU6CiAgICAgTWVkaWFQbGF5ZXIoTWVkaWFQbGF5
ZXJDbGllbnQmKTsKICAgICBNZWRpYVBsYXllcihNZWRpYVBsYXllckNsaWVudCYsIE1lZGlhUGxh
eWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCmluZGV4IDE3MDc1OTNk
MjI5MzQ2MmE5MTU2NzNiYjkyZDBlMWQ2M2VmZjk4MzIuLjI5YzlhOGI2ZGYwZWRkOTk3MWI1ZGRj
Mzg4YzBiN2FiNzY5NmFhNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCkBAIC0yMjMsNiArMjIzLDcgQEAgcHVibGlj
OgogCiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCiAgICAgdmlydHVhbCBzdGQ6
OnVuaXF1ZV9wdHI8TGVnYWN5Q0RNU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbihjb25zdCBTdHJpbmcm
LCBMZWdhY3lDRE1TZXNzaW9uQ2xpZW50KikgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIHZpcnR1
YWwgdm9pZCBzZXRDRE0oTGVnYWN5Q0RNKikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNldENETVNl
c3Npb24oTGVnYWN5Q0RNU2Vzc2lvbiopIHsgfQogICAgIHZpcnR1YWwgdm9pZCBrZXlBZGRlZCgp
IHsgfQogI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392967</attachid>
            <date>2020-03-08 12:03:45 -0700</date>
            <delta_ts>2020-03-08 12:21:05 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-208402-20200308120344.patch</filename>
            <type>text/plain</type>
            <size>121063</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4MTA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGE4OGZkNjVlZGIwOTA1NTY1
NTkwMGZkZGQxOTFiNmMyOGI3MjU5Y2UuLmY2ZTNmOGQyNTRmYzgzOTA4OWY5YjkxOTcwNDU1ZGQx
ODEyMjM0M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTM0IEBACisyMDIwLTAyLTI4ICBKZXIgTm9i
bGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFVQXSBJbXBsZW1lbnQgTGVn
YWN5IEVNRSBBUEkgaW4gdGhlIEdQVSBQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg0MDIKKworICAgICAgICBSZXZpZXdlZCBieSBFcmlj
IENhcmxzb24uCisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIFJlbW90ZUxlZ2FjeUNETUZhY3Rv
cnksIFJlbWF0ZUxlZ2FjeUNETSxSZW1vdGVMZWdhY3lDRE1TZXNzaW9uLCBhbmQgYWxsCisgICAg
ICAgIG9mIHRoZWlyIGFzc29jaWF0ZWQgUHJveHkgb2JqZWN0cy4KKworICAgICAgICAqIERlcml2
ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtb3V0
cHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAg
KiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpsZWdhY3lDZG1GYWN0b3J5UHJveHkpOgor
ICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaXNwYXRjaE1lc3Nh
Z2UpOgorICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaXNwYXRj
aFN5bmNNZXNzYWdlKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3Rv
cnlQcm94eS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1GYWN0
b3J5UHJveHk6OlJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eSk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eTo6Y3JlYXRlQ0RNKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5OjpzdXBwb3J0c0tleVN5c3RlbSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eTo6ZGlkUmVjZWl2ZUNETU1l
c3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk6OmRp
ZFJlY2VpdmVDRE1TZXNzaW9uTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2Fj
eUNETUZhY3RvcnlQcm94eTo6ZGlkUmVjZWl2ZVN5bmNDRE1NZXNzYWdlKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5OjpkaWRSZWNlaXZlU3luY0NETVNlc3Np
b25NZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5
OjphZGRQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94
eTo6cmVtb3ZlUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1GYWN0b3J5
UHJveHk6OmFkZFNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1GYWN0
b3J5UHJveHk6OnJlbW92ZVNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lD
RE1GYWN0b3J5UHJveHk6OmdldFNlc3Npb24gY29uc3QpOgorICAgICAgICAqIEdQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5Lmg6IEFkZGVkLgorICAgICAgICAqIEdQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5Lm1lc3NhZ2VzLmluOiBB
ZGRlZC4KKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5LmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETVByb3h5OjpjcmVhdGUp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1Qcm94eTo6UmVtb3RlTGVnYWN5Q0RN
UHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1Qcm94eTo6c3VwcG9ydHNN
SU1FVHlwZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETVByb3h5OjpjcmVhdGVT
ZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNUHJveHk6OnNldFBsYXll
cklkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNUHJveHk6OmNkbU1lZGlhUGxh
eWVyIGNvbnN0KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVBy
b3h5Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1Qcm94eTo6ZmFj
dG9yeSBjb25zdCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Q
cm94eS5tZXNzYWdlcy5pbjogQWRkZWQuCisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eSk6Cisg
ICAgICAgIChXZWJLaXQ6OmNvbnZlcnRUb1VpbnQ4QXJyYXkpOgorICAgICAgICAoV2ViS2l0Ojpj
b252ZXJ0VG9PcHRpb25hbERhdGFSZWZlcmVuY2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVM
ZWdhY3lDRE1TZXNzaW9uUHJveHk6OmdlbmVyYXRlS2V5UmVxdWVzdCk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6cmVsZWFzZUtleXMpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OnVwZGF0ZSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6Z2V0Q2FjaGVkS2V5Rm9yS2V5SWQp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OmNhY2hlZEtl
eUZvcktleUlEKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5
OjpzZW5kTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Q
cm94eTo6c2VuZEVycm9yKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lv
blByb3h5OjptZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5IGNvbnN0KToKKyAgICAgICAgKiBHUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpmYWN0b3J5IGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpzZXNzaW9uIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpzZXRQ
bGF5ZXIpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lv
blByb3h5Lm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OmdldFByb3h5KToKKyAgICAgICAgKiBHUFVQcm9jZXNz
L21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lmg6CisgICAgICAgICogR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJDYWNoZWRLZXlGb3JLZXlJZCBjb25z
dCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVy
S2V5TmVlZGVkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6c2V0
TGVnYWN5Q0RNU2Vzc2lvbik6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRp
YVBsYXllclByb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBs
YXllclByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
VGV4dFRyYWNrUHJveHkuY3BwOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVGV4
dFRyYWNrUHJveHkuaDoKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAg
ICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkdQVVByb2Nlc3NDb25uZWN0aW9uOjptZWRpYVBsYXllck1h
bmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpHUFVQcm9jZXNzQ29ubmVjdGlvbjo6bGVnYWN5Q0RN
RmFjdG9yeSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24u
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1v
dGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldENE
TSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0Q0RNU2Vz
c2lvbik6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bWVkaWFQ
bGF5ZXJLZXlOZWVkZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVMZWdhY3lDRE0uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlTGVnYWN5Q0RNOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE06
OlJlbW90ZUxlZ2FjeUNETSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETTo6c3Vw
cG9ydHNNSU1FVHlwZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETTo6Y3JlYXRl
U2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETTo6c2V0UGxheWVySWQp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETS5oOiBBZGRl
ZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETUZhY3Rvcnk6OlJl
bW90ZUxlZ2FjeUNETUZhY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1G
YWN0b3J5OjpyZWdpc3RlckZhY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lD
RE1GYWN0b3J5OjpzdXBwbGVtZW50TmFtZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2Fj
eUNETUZhY3Rvcnk6OmdwdVByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlTGVnYWN5Q0RNRmFjdG9yeTo6c3VwcG9ydHNLZXlTeXN0ZW0pOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVMZWdhY3lDRE1GYWN0b3J5OjpzdXBwb3J0c0tleVN5c3RlbUFuZE1pbWVUeXBlKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeTo6Y3JlYXRlQ0RNKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeTo6YWRkU2Vzc2lvbik6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETUZhY3Rvcnk6OnJlbW92ZVNlc3Npb24pOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1GYWN0b3J5OjpmaW5kQ0RNIGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeTo6ZGlkUmVjZWl2ZVNlc3Npb25N
ZXNzYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1G
YWN0b3J5Lmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxl
Z2FjeUNETUlkZW50aWZpZXIuaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0Ojpj
b252ZXJ0VG9BcnJheUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OmNvbnZlcnRUb1VpbnQ4QXJy
YXkpOgorICAgICAgICAoV2ViS2l0Ojpjb252ZXJ0VG9PcHRpb25hbERhdGFSZWZlcmVuY2UpOgor
ICAgICAgICAoV2ViS2l0Ojpjb252ZXJ0VG9EYXRhUmVmZXJlbmNlKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlTGVnYWN5Q0RNU2Vzc2lvbjo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbik6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb246OmdlbmVyYXRlS2V5UmVxdWVzdCk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb246OnJlbGVhc2VLZXlzKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbjo6dXBkYXRlKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbjo6Y2FjaGVkS2V5Rm9yS2V5SUQgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uOjpzZW5kTWVzc2FnZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb246OnNlbmRFcnJvcik6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5oOiBBZGRl
ZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9u
Lm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllci5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OmZpbmRSZW1vdGVQbGF5ZXJJZCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvV2ViTWVkaWFTdHJhdGVneS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYk1lZGlhU3RyYXRlZ3k6OnJlZ2lzdGVyTGVnYWN5Q0RNRmFjdG9yaWVz
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlByb2Nlc3MuY3BwOgorCiAyMDIwLTAzLTA2ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBw
bGUuY29tPgogCiAgICAgICAgIFtHUFVQXSBNb3ZlIEFWU3lzdGVtQ29udHJvbGxlciBjb2RlIGlu
dG8gdGhlIEdQVSBwcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3Vy
Y2VzLWlucHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0
LnhjZmlsZWxpc3QKaW5kZXggZWUwNDBiMTJhYzIwN2ZjMjM0ZjM1MzU4NjEzMmYyMmFiOTU2YjI5
My4uNmNmNjJhNmMyZWQ4ZTg2NWVhYzJkNzRjMmU4ZWYxMTA4OGE2ZmU5NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJj
ZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtMjQsNiArMjQsOSBA
QCAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94eS5t
ZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0
YW5jZVByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5Lm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElS
KS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5tZXNzYWdlcy5p
bgorJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5t
ZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lD
RE1TZXNzaW9uUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9E
SVIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5tZXNzYWdlcy5pbgog
JChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdl
ci5tZXNzYWdlcy5pbgpAQCAtMTIxLDYgKzEyNCw3IEBAICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nl
c3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5pbgogJChQUk9K
RUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5
Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVB
dWRpb1Nlc3Npb24ubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5tZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJUikv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5tZXNzYWdlcy5pbgog
JChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9tZWRpYS9UZXh0
VHJhY2tQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyLm1lc3NhZ2VzLmluCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIv
U291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRleCAwYjg1
NzM2NDgxZTA3NTVmODZkOTI1ZTMwNjJlNWRjM2UyMzY4MzRjLi45MDkzYTgyYzliMWQ1MjUwOTU5
NDY4NTBhOGQ2ZjgwYmQzNTEyZDVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRT
b3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJj
ZXMtb3V0cHV0LnhjZmlsZWxpc3QKQEAgLTE2NCw2ICsxNjQsMTggQEAgJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQ0RNUHJveHlNZXNzYWdlc1JlcGxp
ZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3Rl
TGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKICQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhUHJveHlNZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViS2l0Mi9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXNSZXBsaWVzLmgK
KyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUxlZ2Fj
eUNETUZhY3RvcnlQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eU1lc3Nh
Z2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90
ZUxlZ2FjeUNETUZhY3RvcnlQcm94eU1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVMZWdhY3lDRE1Qcm94eU1lc3NhZ2VS
ZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQy
L1JlbW90ZUxlZ2FjeUNETVByb3h5TWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTGVnYWN5Q0RNUHJveHlNZXNzYWdlc1JlcGxpZXMu
aAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTGVn
YWN5Q0RNU2Vzc2lvbk1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25NZXNzYWdlcy5oCisk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVMZWdhY3lD
RE1TZXNzaW9uTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQyL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eU1lc3NhZ2VSZWNlaXZl
ci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90
ZUxlZ2FjeUNETVNlc3Npb25Qcm94eU1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eU1lc3NhZ2Vz
UmVwbGllcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9S
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJN
ZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9S
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJNZXNzYWdlc1JlcGxpZXMuaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291
cmNlcy5tYWtlCmluZGV4IGNiNzE1MmZhMzE0Njk1MjUxMDE4ZmFlYTA1YWYxMDYzNmUwYjQ3N2Eu
LmViYTBmZjFiN2M2ODI0ZjE3YjczZTYwNzhhNzUyYTJkNWI4NGJjZjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2
ZWRTb3VyY2VzLm1ha2UKQEAgLTE2MCw2ICsxNjAsMTAgQEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBc
CiAgICAgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eSBcCiAgICAgUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uIFwKICAgICBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eSBcCisgICAgUmVtb3RlTGVn
YWN5Q0RNUHJveHkgXAorICAgIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eSBcCisgICAgUmVt
b3RlTGVnYWN5Q0RNU2Vzc2lvbiBcCisgICAgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5IFwK
ICAgICBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIgXAogICAgIFJlbW90ZU1lZGlhUGxheWVyTWFu
YWdlclByb3h5IFwKICAgICBSZW1vdGVNZWRpYVBsYXllclByb3h5IFwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRl
eCBkZjU2NzgxZTZlNWU3ZjM2NmM2ODM3ODk4ZGMwMTlkZDhmZWQ0MzA4Li4xYzZiMDBlYmVmNjlm
ZmE0YjU2YWNkYjgyNjcxNTQzOGE0NDRiMDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC04Nyw2ICs4Nywx
MyBAQAogI2luY2x1ZGUgIlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5LmgiCiAjZW5kaWYK
IAorI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQorI2luY2x1ZGUgIlJlbW90ZUxl
Z2FjeUNETUZhY3RvcnlQcm94eS5oIgorI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQ
cm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlTGVnYWN5Q0RNUHJveHlNZXNzYWdlcy5o
IgorI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eU1lc3NhZ2VzLmgiCisjZW5k
aWYKKwogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAt
MzAwLDExICszMDcsMjEgQEAgUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHkmIEdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6Om1lZGlhU2Vzc2lvbkhlbHBlclByb3gKICAgICAgICAgbV9tZWRp
YVNlc3Npb25IZWxwZXJQcm94eSA9IG1ha2VVbmlxdWU8UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVy
UHJveHk+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fbWVkaWFTZXNzaW9uSGVscGVyUHJveHk7CiB9
CisjZW5kaWYKIAogdm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjplbnN1cmVNZWRpYVNl
c3Npb25IZWxwZXIoKQogewogICAgIG1lZGlhU2Vzc2lvbkhlbHBlclByb3h5KCk7CiB9CisKKyNp
ZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKK1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQ
cm94eSYgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6bGVnYWN5Q2RtRmFjdG9yeVByb3h5KCkK
K3sKKyAgICBpZiAoIW1fbGVnYWN5Q2RtRmFjdG9yeVByb3h5KQorICAgICAgICBtX2xlZ2FjeUNk
bUZhY3RvcnlQcm94eSA9IG1ha2VVbmlxdWU8UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5Pigq
dGhpcyk7CisKKyAgICByZXR1cm4gKm1fbGVnYWN5Q2RtRmFjdG9yeVByb3h5OworfQogI2VuZGlm
CiAKIGJvb2wgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlzcGF0Y2hNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQpAQCAtMzkwLDYg
KzQwNywxMiBAQCBib29sIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpc3BhdGNoTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQwogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CiAjZW5kaWYKKyNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKKyAgICBp
ZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlJlbW90ZUxlZ2Fj
eUNETUZhY3RvcnlQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIGxlZ2Fj
eUNkbUZhY3RvcnlQcm94eSgpLmRpZFJlY2VpdmVNZXNzYWdlRnJvbVdlYlByb2Nlc3MoY29ubmVj
dGlvbiwgZGVjb2Rlcik7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyNlbmRpZgogCiAg
ICAgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck1hcCgpLmRpc3BhdGNoTWVzc2FnZShjb25uZWN0aW9u
LCBkZWNvZGVyKTsKIH0KQEAgLTQ0Nyw2ICs0NzAsMTIgQEAgYm9vbCBHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpkaXNwYXRjaFN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
biwKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogI2VuZGlmCisjaWYgRU5BQkxFKExFR0FD
WV9FTkNSWVBURURfTUVESUEpCisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgp
ID09IE1lc3NhZ2VzOjpSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk6Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSkgeworICAgICAgICBsZWdhY3lDZG1GYWN0b3J5UHJveHkoKS5kaWRSZWNlaXZlU3lu
Y01lc3NhZ2VGcm9tV2ViUHJvY2Vzcyhjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIp
OworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisjZW5kaWYKIAogICAgIHJldHVybiBtZXNz
YWdlUmVjZWl2ZXJNYXAoKS5kaXNwYXRjaFN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIs
IHJlcGx5RW5jb2Rlcik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCAzNjhiMGJmNjZiYjg1YTllNGNhZmEyY2I1
YTgyZTY3MmNjYzA1NzRiLi4yZWM4Y2Q1NmQyYzMxNjY1ZWFjY2RlYjllMTgyNjU3OGE4MTVhNWE4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmgKQEAgLTQ4LDYgKzQ4LDcgQEAgY2xhc3MgUmVtb3RlQXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXJNYW5hZ2VyOwogY2xhc3MgUmVtb3RlQXVkaW9TZXNzaW9uUHJveHk7CiBj
bGFzcyBSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFnZXI7CiBjbGFzcyBSZW1vdGVDRE1GYWN0
b3J5UHJveHk7CitjbGFzcyBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk7CiBjbGFzcyBSZW1v
dGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTsKIGNsYXNzIFJlbW90ZU1lZGlhUmVjb3JkZXJNYW5h
Z2VyOwogY2xhc3MgUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI7CkBAIC05MCw4ICs5MSwxMiBA
QCBwdWJsaWM6CiAjZW5kaWYKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFJlbW90ZU1l
ZGlhU2Vzc2lvbkhlbHBlclByb3h5JiBtZWRpYVNlc3Npb25IZWxwZXJQcm94eSgpOworI2VuZGlm
CisjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCisgICAgUmVtb3RlTGVnYWN5Q0RN
RmFjdG9yeVByb3h5JiBsZWdhY3lDZG1GYWN0b3J5UHJveHkoKTsKICNlbmRpZgogICAgIFJlbW90
ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5JiByZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSgp
OworCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBVU0UoQVVESU9fU0VTU0lPTikKICAgICBS
ZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFnZXImIGF1ZGlvU2Vzc2lvbk1hbmFnZXIoKTsKICNl
bmRpZgpAQCAtMTc3LDYgKzE4Miw5IEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHk+IG1f
bWVkaWFTZXNzaW9uSGVscGVyUHJveHk7CiAjZW5kaWYKKyNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZ
UFRFRF9NRURJQSkKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVBy
b3h5PiBtX2xlZ2FjeUNkbUZhY3RvcnlQcm94eTsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAxMmZlNGQ5
YmVlNDY0YTU4Njc2YjIwNzVhN2Q2NzkxNzhiZGMwYWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5LmNw
cApAQCAtMCwwICsxLDE0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkuaCIKKworI2lmIEVOQUJMRShHUFVf
UFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgIlJlbW90ZUxl
Z2FjeUNETVByb3h5LmgiCisjaW5jbHVkZSAiUmVtb3RlTGVnYWN5Q0RNUHJveHlNZXNzYWdlcy5o
IgorI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5oIgorI2luY2x1ZGUgIlJl
bW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9M
ZWdhY3lDRE0uaD4KKyNpbmNsdWRlIDx3dGYvQWxnb3JpdGhtcy5oPgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK1JlbW90ZUxlZ2FjeUNETUZhY3Rv
cnlQcm94eTo6UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5KEdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MmIGNvbm5lY3Rpb24pCisgICAgOiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoY29u
bmVjdGlvbikKK3sKK30KKworUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5Ojp+UmVtb3RlTGVn
YWN5Q0RNRmFjdG9yeVByb3h5KCkgPSBkZWZhdWx0OworCit2b2lkIFJlbW90ZUxlZ2FjeUNETUZh
Y3RvcnlQcm94eTo6Y3JlYXRlQ0RNKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBPcHRpb25hbDxN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyPiYmIG9wdGlvbmFsUGxheWVySWQsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlTGVnYWN5Q0RNSWRlbnRpZmllciYmKT4mJiBjb21w
bGV0aW9uKQoreworICAgIGF1dG8gcHJpdmF0ZUNETSA9IExlZ2FjeUNETTo6Y3JlYXRlKGtleVN5
c3RlbSk7CisgICAgaWYgKCFwcml2YXRlQ0RNKSB7CisgICAgICAgIGNvbXBsZXRpb24oeyB9KTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlk
ZW50aWZpZXIgcGxheWVySWQ7CisgICAgaWYgKG9wdGlvbmFsUGxheWVySWQpCisgICAgICAgIHBs
YXllcklkID0gV1RGTW92ZShvcHRpb25hbFBsYXllcklkLnZhbHVlKCkpOworCisgICAgYXV0byBw
cm94eSA9IFJlbW90ZUxlZ2FjeUNETVByb3h5OjpjcmVhdGUobWFrZVdlYWtQdHIodGhpcyksIFdU
Rk1vdmUocGxheWVySWQpLCBXVEZNb3ZlKHByaXZhdGVDRE0pKTsKKyAgICBhdXRvIGlkZW50aWZp
ZXIgPSBSZW1vdGVMZWdhY3lDRE1JZGVudGlmaWVyOjpnZW5lcmF0ZSgpOworICAgIGFkZFByb3h5
KGlkZW50aWZpZXIsIFdURk1vdmUocHJveHkpKTsKKyAgICBjb21wbGV0aW9uKFdURk1vdmUoaWRl
bnRpZmllcikpOworfQorCit2b2lkIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eTo6c3VwcG9y
dHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIE9wdGlvbmFsPFN0cmluZz4gbWlt
ZVR5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbikKK3sKKyAg
ICBpZiAobWltZVR5cGUpCisgICAgICAgIGNvbXBsZXRpb24oTGVnYWN5Q0RNOjprZXlTeXN0ZW1T
dXBwb3J0c01pbWVUeXBlKGtleVN5c3RlbSwgKm1pbWVUeXBlKSk7CisgICAgZWxzZQorICAgICAg
ICBjb21wbGV0aW9uKExlZ2FjeUNETTo6c3VwcG9ydHNLZXlTeXN0ZW0oa2V5U3lzdGVtKSk7Cit9
CisKK3ZvaWQgUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5OjpkaWRSZWNlaXZlQ0RNTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3sK
KyAgICBpZiAoYXV0byogcHJveHkgPSBtX3Byb3hpZXMuZ2V0KG1ha2VPYmplY3RJZGVudGlmaWVy
PFJlbW90ZUxlZ2FjeUNETUlkZW50aWZpZXJUeXBlPihkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSkp
KQorICAgICAgICBwcm94eS0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7
Cit9CisKK3ZvaWQgUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5OjpkaWRSZWNlaXZlQ0RNU2Vz
c2lvbk1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRl
Y29kZXIpCit7CisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBtX3Nlc3Npb25zLmdldChtYWtlT2Jq
ZWN0SWRlbnRpZmllcjxSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllclR5cGU+KGRlY29k
ZXIuZGVzdGluYXRpb25JRCgpKSkpCisgICAgICAgIHNlc3Npb24tPmRpZFJlY2VpdmVNZXNzYWdl
KGNvbm5lY3Rpb24sIGRlY29kZXIpOworfQorCit2b2lkIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQ
cm94eTo6ZGlkUmVjZWl2ZVN5bmNDRE1NZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
biwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYg
ZW5jb2RlcikKK3sKKyAgICBpZiAoYXV0byogcHJveHkgPSBtX3Byb3hpZXMuZ2V0KG1ha2VPYmpl
Y3RJZGVudGlmaWVyPFJlbW90ZUxlZ2FjeUNETUlkZW50aWZpZXJUeXBlPihkZWNvZGVyLmRlc3Rp
bmF0aW9uSUQoKSkpKQorICAgICAgICBwcm94eS0+ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKGNvbm5l
Y3Rpb24sIGRlY29kZXIsIGVuY29kZXIpOworfQorCit2b2lkIFJlbW90ZUxlZ2FjeUNETUZhY3Rv
cnlQcm94eTo6ZGlkUmVjZWl2ZVN5bmNDRE1TZXNzaW9uTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
IGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rlciwgc3RkOjp1bmlxdWVfcHRyPElQQzo6
RW5jb2Rlcj4mIGVuY29kZXIpCit7CisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBtX3Nlc3Npb25z
LmdldChtYWtlT2JqZWN0SWRlbnRpZmllcjxSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmll
clR5cGU+KGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkpCisgICAgICAgIHNlc3Npb24tPmRpZFJl
Y2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCBlbmNvZGVyKTsKK30KKwordm9p
ZCBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk6OmFkZFByb3h5KFJlbW90ZUxlZ2FjeUNETUlk
ZW50aWZpZXIgaWQsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMZWdhY3lDRE1Qcm94eT4mJiBwcm94
eSkKK3sKKyAgICBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkubWVzc2FnZVJlY2VpdmVyTWFw
KCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVMZWdhY3lDRE1Qcm94eTo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpLCBpZC50b1VJbnQ2NCgpLCAqcHJveHkpOworCisgICAgQVNTRVJU
KCFtX3Byb3hpZXMuY29udGFpbnMoaWQpKTsKKyAgICBtX3Byb3hpZXMuc2V0KGlkLCBXVEZNb3Zl
KHByb3h5KSk7Cit9CisKK3ZvaWQgUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5OjpyZW1vdmVQ
cm94eShSZW1vdGVMZWdhY3lDRE1JZGVudGlmaWVyIGlkKQoreworICAgIGdwdUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MoKS5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIo
TWVzc2FnZXM6OlJlbW90ZUxlZ2FjeUNETVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIGlk
LnRvVUludDY0KCkpOworCisgICAgQVNTRVJUKG1fcHJveGllcy5jb250YWlucyhpZCkpOworICAg
IG1fcHJveGllcy5yZW1vdmUoaWQpOworfQorCit2b2lkIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQ
cm94eTo6YWRkU2Vzc2lvbihSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllciBpZCwgc3Rk
Ojp1bmlxdWVfcHRyPFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eT4mJiBzZXNzaW9uKQorewor
ICAgIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKS5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5hZGRN
ZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpLCBpZC50b1VJbnQ2NCgpLCAqc2Vzc2lvbik7CisKKyAgICBBU1NF
UlQoIW1fc2Vzc2lvbnMuY29udGFpbnMoaWQpKTsKKyAgICBtX3Nlc3Npb25zLnNldChpZCwgV1RG
TW92ZShzZXNzaW9uKSk7Cit9CisKK3ZvaWQgUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5Ojpy
ZW1vdmVTZXNzaW9uKFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyIGlkKQoreworICAg
IGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKS5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5yZW1vdmVN
ZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpLCBpZC50b1VJbnQ2NCgpKTsKKworICAgIEFTU0VSVChtX3Nlc3Np
b25zLmNvbnRhaW5zKGlkKSk7CisgICAgbV9zZXNzaW9ucy5yZW1vdmUoaWQpOworfQorCitSZW1v
dGVMZWdhY3lDRE1TZXNzaW9uUHJveHkqIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eTo6Z2V0
U2Vzc2lvbihjb25zdCBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllciYgaWQpIGNvbnN0
Cit7CisgICAgYXV0byByZXN1bHRzID0gbV9zZXNzaW9ucy5maW5kKGlkKTsKKyAgICBpZiAocmVz
dWx0cyAhPSBtX3Nlc3Npb25zLmVuZCgpKQorICAgICAgICByZXR1cm4gcmVzdWx0cy0+dmFsdWUu
Z2V0KCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKKworfQorCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1G
YWN0b3J5UHJveHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MzU1Mzg0ODg2NTk5ODFkOGY4ODNiNGNhMWVjY2Fj
MjM1YTM5ZmVkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5oCkBAIC0wLDAgKzEsODQgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxF
KExFR0FDWV9FTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5j
bHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIk1l
c3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETUlkZW50aWZpZXIuaCIK
KyNpbmNsdWRlICJSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllci5oIgorI2luY2x1ZGUg
PHd0Zi9VbmlxdWVSZWYuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworY2xhc3MgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzczsKK2NsYXNzIFJlbW90
ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTsKK2NsYXNzIFJlbW90ZUxlZ2FjeUNETVByb3h5Oworc3Ry
dWN0IFJlbW90ZUxlZ2FjeUNETUNvbmZpZ3VyYXRpb247CisKK2NsYXNzIFJlbW90ZUxlZ2FjeUNE
TUZhY3RvcnlQcm94eSBmaW5hbCA6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHB1Ymxp
YyBDYW5NYWtlV2Vha1B0cjxSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk+IHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5
UHJveHkoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYpOworICAgIHZpcnR1YWwgflJlbW90ZUxl
Z2FjeUNETUZhY3RvcnlQcm94eSgpOworCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZUZyb21X
ZWJQcm9jZXNzKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNv
ZGVyKSB7IGRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOyB9CisgICAgdm9p
ZCBkaWRSZWNlaXZlU3luY01lc3NhZ2VGcm9tV2ViUHJvY2VzcyhJUEM6OkNvbm5lY3Rpb24mIGNv
bm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rlciwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5j
b2Rlcj4mIGVuY29kZXIpIHsgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29k
ZXIsIGVuY29kZXIpOyB9CisgICAgdm9pZCBkaWRSZWNlaXZlQ0RNTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mLCBJUEM6OkRlY29kZXImKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVDRE1TZXNzaW9uTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKKyAgICB2b2lkIGRpZFJlY2Vp
dmVTeW5jQ0RNTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVu
aXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpOworICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNDRE1TZXNz
aW9uTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9w
dHI8SVBDOjpFbmNvZGVyPiYpOworCisgICAgdm9pZCBhZGRQcm94eShSZW1vdGVMZWdhY3lDRE1J
ZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGVnYWN5Q0RNUHJveHk+JiYpOworICAg
IHZvaWQgcmVtb3ZlUHJveHkoUmVtb3RlTGVnYWN5Q0RNSWRlbnRpZmllcik7CisKKyAgICB2b2lk
IGFkZFNlc3Npb24oUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXIsIHN0ZDo6dW5pcXVl
X3B0cjxSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk+JiYpOworICAgIHZvaWQgcmVtb3ZlU2Vz
c2lvbihSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllcik7CisgICAgUmVtb3RlTGVnYWN5
Q0RNU2Vzc2lvblByb3h5KiBnZXRTZXNzaW9uKGNvbnN0IFJlbW90ZUxlZ2FjeUNETVNlc3Npb25J
ZGVudGlmaWVyJikgY29uc3Q7CisKKyAgICBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzKCkgY29uc3QgeyByZXR1cm4gbV9ncHVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOyB9CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIEdQVVByb2Nlc3NDb25u
ZWN0aW9uOworICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCisgICAgdm9pZCBkaWRSZWNlaXZl
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbCB7IH0KKyAgICB2
b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXIm
LCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOworCisgICAgLy8gTWVzc2Fn
ZXMKKyAgICB2b2lkIGNyZWF0ZUNETShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgT3B0aW9uYWw8
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllcj4mJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChSZW1vdGVMZWdhY3lDRE1JZGVudGlmaWVyJiYpPiYmKTsKKyAgICB2b2lkIHN1cHBvcnRz
S2V5U3lzdGVtKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBPcHRpb25hbDxTdHJpbmc+IG1pbWVU
eXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKworICAgIEdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MmIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzczsKKyAgICBIYXNoTWFw
PFJlbW90ZUxlZ2FjeUNETUlkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMZWdhY3lD
RE1Qcm94eT4+IG1fcHJveGllczsKKyAgICBIYXNoTWFwPFJlbW90ZUxlZ2FjeUNETVNlc3Npb25J
ZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5Pj4g
bV9zZXNzaW9uczsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5Lm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQ
cm94eS5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMDc0NGZiZmQ0ZDAyYzFmOWMzZDc5YTAwZjUw
NDlmOTE1M2I3ZjQ5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5tZXNzYWdlcy5pbgpAQCAtMCwwICsx
LDMxIEBACisjIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaWYgRU5BQkxF
KEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKKworbWVzc2Fn
ZXMgLT4gUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5IE5vdFJlZkNvdW50ZWQgeworICAgIENy
ZWF0ZUNETShTdHJpbmcga2V5U3lzdGVtLCBPcHRpb25hbDxXZWJLaXQ6Ok1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZUlkZW50aWZpZXI+IHBsYXllcklkKSAtPiAoV2ViS2l0OjpSZW1vdGVMZWdhY3lD
RE1JZGVudGlmaWVyIGlkKSBTeW5jaHJvbm91cworICAgIFN1cHBvcnRzS2V5U3lzdGVtKFN0cmlu
ZyBrZXlTeXN0ZW0sIE9wdGlvbmFsPFN0cmluZz4gbWltZVR5cGUpIC0+IChib29sIHJlc3VsdCkg
U3luY2hyb25vdXMKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZDE3YTg5
MWFhYjExZWRlNmRiZWQ3YzBmZDAyZDI4NTI3MWU4MzYxCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5LmNwcApAQCAt
MCwwICsxLDk4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IlJlbW90ZUxlZ2FjeUNETVByb3h5LmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVO
QUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lmgi
CisjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oIgorCituYW1lc3BhY2UgV2ViS2l0
IHsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK3N0ZDo6dW5pcXVlX3B0cjxSZW1vdGVM
ZWdhY3lDRE1Qcm94eT4gUmVtb3RlTGVnYWN5Q0RNUHJveHk6OmNyZWF0ZShXZWFrUHRyPFJlbW90
ZUxlZ2FjeUNETUZhY3RvcnlQcm94eT4gZmFjdG9yeSwgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
SWRlbnRpZmllciYmIHBsYXllcklkLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6TGVnYWN5Q0RN
PiYmIGNkbSkKK3sKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxlZ2FjeUNETVBy
b3h5PihuZXcgUmVtb3RlTGVnYWN5Q0RNUHJveHkoV1RGTW92ZShmYWN0b3J5KSwgV1RGTW92ZShw
bGF5ZXJJZCksIFdURk1vdmUoY2RtKSkpOworfQorCitSZW1vdGVMZWdhY3lDRE1Qcm94eTo6UmVt
b3RlTGVnYWN5Q0RNUHJveHkoV2Vha1B0cjxSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk+JiYg
ZmFjdG9yeSwgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciYmIHBsYXllcklkLCBz
dGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6TGVnYWN5Q0RNPiYmIGNkbSkKKyAgICA6IG1fZmFjdG9y
eShXVEZNb3ZlKGZhY3RvcnkpKQorICAgICwgbV9wbGF5ZXJJZChXVEZNb3ZlKHBsYXllcklkKSkK
KyAgICAsIG1fY2RtKFdURk1vdmUoY2RtKSkKK3sKKyAgICBtX2NkbS0+c2V0Q2xpZW50KHRoaXMp
OworfQorCitSZW1vdGVMZWdhY3lDRE1Qcm94eTo6flJlbW90ZUxlZ2FjeUNETVByb3h5KCkgPSBk
ZWZhdWx0OworCit2b2lkIFJlbW90ZUxlZ2FjeUNETVByb3h5OjpzdXBwb3J0c01JTUVUeXBlKGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIFN1cHBvcnRzTUlNRVR5cGVDYWxsYmFjayYmIGNhbGxiYWNr
KQoreworICAgIGlmICghbV9jZG0pIHsKKyAgICAgICAgY2FsbGJhY2soZmFsc2UpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgY2FsbGJhY2sobV9jZG0tPnN1cHBvcnRzTUlNRVR5cGUo
bWltZVR5cGUpKTsKK30KKwordm9pZCBSZW1vdGVMZWdhY3lDRE1Qcm94eTo6Y3JlYXRlU2Vzc2lv
bihjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgQ3JlYXRlU2Vzc2lvbkNhbGxiYWNrJiYgY2FsbGJh
Y2spCit7CisgICAgaWYgKCFtX2NkbSB8fCAhbV9mYWN0b3J5KSB7CisgICAgICAgIGNhbGxiYWNr
KHsgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBS
ZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKKyAgICBhdXRvIHNl
c3Npb24gPSBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OmNyZWF0ZShtYWtlV2Vha1B0ciht
X2ZhY3RvcnkuZ2V0KCkpLCBpZGVudGlmaWVyLCAqbV9jZG0pOworICAgIG1fZmFjdG9yeS0+YWRk
U2Vzc2lvbihpZGVudGlmaWVyLCBXVEZNb3ZlKHNlc3Npb24pKTsKKyAgICBjYWxsYmFjayhXVEZN
b3ZlKGlkZW50aWZpZXIpKTsKK30KKwordm9pZCBSZW1vdGVMZWdhY3lDRE1Qcm94eTo6c2V0UGxh
eWVySWQoT3B0aW9uYWw8TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllcj4mJiBwbGF5
ZXJJZCkKK3sKKyAgICBpZiAoIXBsYXllcklkKQorICAgICAgICBtX3BsYXllcklkID0geyB9Owor
ICAgIG1fcGxheWVySWQgPSBXVEZNb3ZlKCpwbGF5ZXJJZCk7Cit9CisKK1JlZlB0cjxNZWRpYVBs
YXllcj4gUmVtb3RlTGVnYWN5Q0RNUHJveHk6OmNkbU1lZGlhUGxheWVyKGNvbnN0IExlZ2FjeUNE
TSopIGNvbnN0Cit7CisgICAgaWYgKCFtX3BsYXllcklkIHx8ICFtX2ZhY3RvcnkpCisgICAgICAg
IHJldHVybiBudWxscHRyOworCisgICAgYXV0byBwcm94eSA9IG1fZmFjdG9yeS0+Z3B1Q29ubmVj
dGlvblRvV2ViUHJvY2VzcygpLnJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5KCkuZ2V0UHJv
eHkobV9wbGF5ZXJJZCk7CisgICAgaWYgKCFwcm94eSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisKKyAgICByZXR1cm4gcHJveHktPm1lZGlhUGxheWVyKCk7Cit9CisKK30KKworI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RN
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Q
cm94eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjJiNmQxN2E5YTQ1NzFlMzQ4ODRjZmY4Y2E5YmVlYzMzMzFmODIw
NmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTGVnYWN5Q0RNUHJveHkuaApAQCAtMCwwICsxLDgzIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShMRUdBQ1lfRU5DUllQ
VEVEX01FRElBKQorCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiUmVt
b3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5LmgiCisjaW5jbHVkZSAiUmVtb3RlTGVnYWN5Q0RNSWRl
bnRpZmllci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvTGVnYWN5Q0RNLmg+CisjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CisjaW5jbHVkZSA8d3RmL1dl
YWtQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgU2hhcmVkQnVmZmVyOworfQor
CituYW1lc3BhY2UgSVBDIHsKK2NsYXNzIERhdGFSZWZlcmVuY2U7Cit9CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitjbGFzcyBSZW1vdGVMZWdhY3lDRE1Qcm94eQorICAgIDogcHJpdmF0ZSBJUEM6
Ok1lc3NhZ2VSZWNlaXZlcgorICAgICwgcHVibGljIFdlYkNvcmU6OkxlZ2FjeUNETUNsaWVudAor
ICAgICwgcHVibGljIENhbk1ha2VXZWFrUHRyPFJlbW90ZUxlZ2FjeUNETVByb3h5PiB7CitwdWJs
aWM6CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMZWdhY3lDRE1Qcm94eT4gY3Jl
YXRlKFdlYWtQdHI8UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5PiwgTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlSWRlbnRpZmllciYmLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6TGVnYWN5Q0RN
PiYmKTsKKyAgICB+UmVtb3RlTGVnYWN5Q0RNUHJveHkoKTsKKworICAgIFJlbW90ZUxlZ2FjeUNE
TUZhY3RvcnlQcm94eSogZmFjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fZmFjdG9yeS5nZXQoKTsg
fQorCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJv
eHk7CisgICAgUmVtb3RlTGVnYWN5Q0RNUHJveHkoV2Vha1B0cjxSZW1vdGVMZWdhY3lDRE1GYWN0
b3J5UHJveHk+JiYsIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXImJiwgc3RkOjp1
bmlxdWVfcHRyPFdlYkNvcmU6OkxlZ2FjeUNETT4mJik7CisKKyAgICAvLyBJUEM6Ok1lc3NhZ2VS
ZWNlaXZlcgorICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBD
OjpEZWNvZGVyJikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4m
KSBmaW5hbDsKKworICAgIC8vIE1lc3NhZ2VzCisgICAgdXNpbmcgU3VwcG9ydHNNSU1FVHlwZUNh
bGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT47CisgICAgdm9pZCBzdXBwb3J0
c01JTUVUeXBlKGNvbnN0IFN0cmluZyYsIFN1cHBvcnRzTUlNRVR5cGVDYWxsYmFjayYmKTsKKyAg
ICB1c2luZyBDcmVhdGVTZXNzaW9uQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJl
bW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyJiYpPjsKKyAgICB2b2lkIGNyZWF0ZVNlc3Np
b24oY29uc3QgU3RyaW5nJiwgQ3JlYXRlU2Vzc2lvbkNhbGxiYWNrJiYpOworICAgIHZvaWQgc2V0
UGxheWVySWQoT3B0aW9uYWw8TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllcj4mJik7
CisKKyAgICAvLyBMZWdhY3lDRE1DbGllbnQKKyAgICBSZWZQdHI8V2ViQ29yZTo6TWVkaWFQbGF5
ZXI+IGNkbU1lZGlhUGxheWVyKGNvbnN0IFdlYkNvcmU6OkxlZ2FjeUNETSopIGNvbnN0IGZpbmFs
OworCisgICAgV2Vha1B0cjxSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk+IG1fZmFjdG9yeTsK
KyAgICBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIG1fcGxheWVySWQ7CisgICAg
c3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkxlZ2FjeUNETT4gbV9jZG07Cit9OworCit9CisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxl
Z2FjeUNETVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUxlZ2FjeUNETVByb3h5Lm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg3MWJhOGJkODdl
N2Q5MjcwN2NjMDlkOGYzY2M0MGQ2ZjQ4ZGZjYjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkubWVzc2FnZXMuaW4K
QEAgLTAsMCArMSwzMiBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6Cisj
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKwor
I2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEp
CisKK21lc3NhZ2VzIC0+IFJlbW90ZUxlZ2FjeUNETVByb3h5IE5vdFJlZkNvdW50ZWQgeworICAg
IFN1cHBvcnRzTUlNRVR5cGUoU3RyaW5nIG1pbWVUeXBlKSAtPiAoYm9vbCBzdXBwb3J0cykgU3lu
Y2hyb25vdXMKKyAgICBDcmVhdGVTZXNzaW9uKFN0cmluZyBtZWRpYUtleXNTdG9yYWdlRGlyZWN0
b3J5KSAtPiAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllciBpZCkgU3lu
Y2hyb25vdXMKKyAgICBTZXRQbGF5ZXJJZChPcHRpb25hbDxXZWJLaXQ6Ok1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZUlkZW50aWZpZXI+IHBsYXllcklkKQorfQorCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNl
c3Npb25Qcm94eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGEwZTMzZmM2YjQ0NGQzMTFlNjYwMmY4YTc1NWUz
MzQyMDJlYzE1MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuY3BwCkBAIC0wLDAgKzEsMTQ4IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNE
TVNlc3Npb25Qcm94eS5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTEVH
QUNZX0VOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuaCIKKyNpbmNsdWRlICJSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkuaCIKKyNpbmNsdWRl
ICJSZW1vdGVMZWdhY3lDRE1TZXNzaW9uTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZm
ZXJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitzdGQ6OnVu
aXF1ZV9wdHI8UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5PiBSZW1vdGVMZWdhY3lDRE1TZXNz
aW9uUHJveHk6OmNyZWF0ZShXZWFrUHRyPFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eT4mJiBm
YWN0b3J5LCBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJD
b3JlOjpMZWdhY3lDRE0mIGNkbSkKK3sKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFJlbW90
ZUxlZ2FjeUNETVNlc3Npb25Qcm94eT4obmV3IFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eShX
VEZNb3ZlKGZhY3RvcnkpLCBpZGVudGlmaWVyLCBjZG0pKTsKK30KKworUmVtb3RlTGVnYWN5Q0RN
U2Vzc2lvblByb3h5OjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkoV2Vha1B0cjxSZW1vdGVM
ZWdhY3lDRE1GYWN0b3J5UHJveHk+JiYgZmFjdG9yeSwgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklk
ZW50aWZpZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6TGVnYWN5Q0RNJiBjZG0pCisgICAgOiBtX2Zh
Y3RvcnkoV1RGTW92ZShmYWN0b3J5KSkKKyAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQor
ICAgICwgbV9zZXNzaW9uKGNkbS5jcmVhdGVTZXNzaW9uKCp0aGlzKSkKK3sKK30KKworUmVtb3Rl
TGVnYWN5Q0RNU2Vzc2lvblByb3h5Ojp+UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5KCkgPSBk
ZWZhdWx0OworCitzdGF0aWMgUmVmUHRyPFVpbnQ4QXJyYXk+IGNvbnZlcnRUb1VpbnQ4QXJyYXko
SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiYgYnVmZmVyKQoreworICAgIGlmICghYnVm
ZmVyLmJ1ZmZlcigpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHNpemVfdCBzaXpl
SW5CeXRlcyA9IGJ1ZmZlci5zaXplKCk7CisgICAgYXV0byBhcnJheUJ1ZmZlciA9IEFycmF5QnVm
ZmVyOjpjcmVhdGUoYnVmZmVyLmRhdGEoKSwgc2l6ZUluQnl0ZXMpOworICAgIHJldHVybiBVaW50
OEFycmF5OjpjcmVhdGUoV1RGTW92ZShhcnJheUJ1ZmZlciksIDAsIHNpemVJbkJ5dGVzKTsKK30K
KwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdGF0aWMgT3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZm
ZXJEYXRhUmVmZXJlbmNlPiBjb252ZXJ0VG9PcHRpb25hbERhdGFSZWZlcmVuY2UoVCBhcnJheSkK
K3sKKyAgICBpZiAoIWFycmF5KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJl
dHVybiB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKChjb25zdCBjaGFyKilhcnJheS0+ZGF0YSgpLCBh
cnJheS0+Ynl0ZUxlbmd0aCgpKSB9OworfQorCit2b2lkIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Q
cm94eTo6Z2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIElQQzo6U2hh
cmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYmIGluaXREYXRhLCBHZW5lcmF0ZUtleUNhbGxiYWNrJiYg
Y29tcGxldGlvbikKK3sKKyAgICBhdXRvIGluaXREYXRhQXJyYXkgPSBjb252ZXJ0VG9VaW50OEFy
cmF5KFdURk1vdmUoaW5pdERhdGEpKTsKKyAgICBpZiAoIWluaXREYXRhQXJyYXkpIHsKKyAgICAg
ICAgY29tcGxldGlvbih7IH0sIGVtcHR5U3RyaW5nKCksIDAsIDApOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgU3RyaW5nIGRlc3RpbmF0aW9uVVJMOworICAgIHVuc2lnbmVkIHNob3J0
IGVycm9yQ29kZSB7IDAgfTsKKyAgICB1aW50MzJfdCBzeXN0ZW1Db2RlIHsgMCB9OworCisgICAg
YXV0byBrZXlSZXF1ZXN0ID0gbV9zZXNzaW9uLT5nZW5lcmF0ZUtleVJlcXVlc3QobWltZVR5cGUs
IGluaXREYXRhQXJyYXkuZ2V0KCksIGRlc3RpbmF0aW9uVVJMLCBlcnJvckNvZGUsIHN5c3RlbUNv
ZGUpOworCisgICAgZGVzdGluYXRpb25VUkwgPSAidGhpcyBpcyBhIHRlc3Qgc3RyaW5nIl9zOwor
CisgICAgY29tcGxldGlvbihjb252ZXJ0VG9PcHRpb25hbERhdGFSZWZlcmVuY2Uoa2V5UmVxdWVz
dCksIGRlc3RpbmF0aW9uVVJMLCBlcnJvckNvZGUsIHN5c3RlbUNvZGUpOworfQorCit2b2lkIFJl
bW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6cmVsZWFzZUtleXMoKQoreworICAgIG1fc2Vzc2lv
bi0+cmVsZWFzZUtleXMoKTsKK30KKwordm9pZCBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6
OnVwZGF0ZShJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmJiB1cGRhdGUsIFVwZGF0ZUNh
bGxiYWNrJiYgY29tcGxldGlvbikKK3sKKyAgICBhdXRvIHVwZGF0ZUFycmF5ID0gY29udmVydFRv
VWludDhBcnJheShXVEZNb3ZlKHVwZGF0ZSkpOworICAgIGlmICghdXBkYXRlQXJyYXkpIHsKKyAg
ICAgICAgY29tcGxldGlvbihmYWxzZSwgV1RGOjpudWxsb3B0LCAwLCAwKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIFJlZlB0cjxVaW50OEFycmF5PiBuZXh0TWVzc2FnZTsKKyAgICB1
bnNpZ25lZCBzaG9ydCBlcnJvckNvZGUgeyAwIH07CisgICAgdWludDMyX3Qgc3lzdGVtQ29kZSB7
IDAgfTsKKworICAgIGJvb2wgc3VjY2VlZGVkID0gbV9zZXNzaW9uLT51cGRhdGUodXBkYXRlQXJy
YXkuZ2V0KCksIG5leHRNZXNzYWdlLCBlcnJvckNvZGUsIHN5c3RlbUNvZGUpOworCisgICAgY29t
cGxldGlvbihzdWNjZWVkZWQsIGNvbnZlcnRUb09wdGlvbmFsRGF0YVJlZmVyZW5jZShuZXh0TWVz
c2FnZSksIGVycm9yQ29kZSwgc3lzdGVtQ29kZSk7Cit9CisKK1JlZlB0cjxBcnJheUJ1ZmZlcj4g
UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpnZXRDYWNoZWRLZXlGb3JLZXlJZChjb25zdCBT
dHJpbmcmIGtleUlkKQoreworICAgIHJldHVybiBtX3Nlc3Npb24tPmNhY2hlZEtleUZvcktleUlE
KGtleUlkKTsKK30KKwordm9pZCBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OmNhY2hlZEtl
eUZvcktleUlEKFN0cmluZyBrZXlJZCwgQ2FjaGVkS2V5Rm9yS2V5SURDYWxsYmFjayYmIGNvbXBs
ZXRpb24pCit7CisgICAgY29tcGxldGlvbihjb252ZXJ0VG9PcHRpb25hbERhdGFSZWZlcmVuY2Uo
Z2V0Q2FjaGVkS2V5Rm9yS2V5SWQoa2V5SWQpKSk7Cit9CisKK3ZvaWQgUmVtb3RlTGVnYWN5Q0RN
U2Vzc2lvblByb3h5OjpzZW5kTWVzc2FnZShVaW50OEFycmF5KiBtZXNzYWdlLCBTdHJpbmcgZGVz
dGluYXRpb25VUkwpCit7CisgICAgaWYgKCFtX2ZhY3RvcnkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIG1fZmFjdG9yeS0+Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpLmNvbm5lY3Rpb24oKS5z
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uOjpTZW5kTWVzc2FnZShjb252ZXJ0
VG9PcHRpb25hbERhdGFSZWZlcmVuY2UobWVzc2FnZSksIGRlc3RpbmF0aW9uVVJMKSwgbV9pZGVu
dGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OnNlbmRFcnJv
cihNZWRpYUtleUVycm9yQ29kZSBlcnJvckNvZGUsIHVpbnQzMl90IHN5c3RlbUNvZGUpCit7Cisg
ICAgaWYgKG1fZmFjdG9yeSkKKyAgICAgICAgbV9mYWN0b3J5LT5ncHVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZUxlZ2FjeUNETVNlc3Np
b246OlNlbmRFcnJvcihlcnJvckNvZGUsIHN5c3RlbUNvZGUpLCBtX2lkZW50aWZpZXIpOworfQor
CitTdHJpbmcgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjptZWRpYUtleXNTdG9yYWdlRGly
ZWN0b3J5KCkgY29uc3QKK3sKKyAgICBpZiAobV9mYWN0b3J5KQorICAgICAgICByZXR1cm4gbV9m
YWN0b3J5LT5ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkubWVkaWFLZXlzU3RvcmFnZURpcmVj
dG9yeSgpOworICAgIHJldHVybiBlbXB0eVN0cmluZygpOworfQorCisKK30KKworI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RN
U2Vzc2lvblByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVn
YWN5Q0RNU2Vzc2lvblByb3h5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTkzZWM4MjE4ZDUwN2NlNGZmOWQwOTRk
YjRiMDJmMjY3YzM3MTFmMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuaApAQCAtMCwwICsxLDk3IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIu
aCIKKyNpbmNsdWRlICJSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkuaCIKKyNpbmNsdWRlICJS
ZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvTGVn
YWN5Q0RNU2Vzc2lvbi5oPgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3Rm
L1VuaXF1ZVJlZi5oPgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTEVHQUNZ
X0VOQ1JZUFRFRF9NRURJQSkKKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgTGVnYWN5Q0RN
OworY2xhc3MgTGVnYWN5Q0RNU2Vzc2lvbjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKK30KKworbmFt
ZXNwYWNlIElQQyB7CitjbGFzcyBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlOworfQorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworY2xhc3MgUmVtb3RlTGVnYWN5Q0RNUHJveHk7CitjbGFzcyBSZW1v
dGVNZWRpYVBsYXllclByb3h5OworCitjbGFzcyBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkK
KyAgICA6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAgICAsIHB1YmxpYyBXZWJDb3Jl
OjpMZWdhY3lDRE1TZXNzaW9uQ2xpZW50CisgICAgLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UmVt
b3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5PiB7CitwdWJsaWM6CisgICAgc3RhdGljIHN0ZDo6dW5p
cXVlX3B0cjxSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk+IGNyZWF0ZShXZWFrUHRyPFJlbW90
ZUxlZ2FjeUNETUZhY3RvcnlQcm94eT4mJiwgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZp
ZXIsIFdlYkNvcmU6OkxlZ2FjeUNETSYpOworICAgIH5SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJv
eHkoKTsKKworICAgIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eSogZmFjdG9yeSgpIGNvbnN0
IHsgcmV0dXJuIG1fZmFjdG9yeS5nZXQoKTsgfQorICAgIFdlYkNvcmU6OkxlZ2FjeUNETVNlc3Np
b24qIHNlc3Npb24oKSBjb25zdCB7IHJldHVybiBtX3Nlc3Npb24uZ2V0KCk7IH0KKworICAgIHZv
aWQgc2V0UGxheWVyKFdlYWtQdHI8UmVtb3RlTWVkaWFQbGF5ZXJQcm94eT4gcGxheWVyKSB7IG1f
cGxheWVyID0gV1RGTW92ZShwbGF5ZXIpOyB9CisKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGdl
dENhY2hlZEtleUZvcktleUlkKGNvbnN0IFN0cmluZyYpOworCitwcml2YXRlOgorICAgIGZyaWVu
ZCBjbGFzcyBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk7CisgICAgUmVtb3RlTGVnYWN5Q0RN
U2Vzc2lvblByb3h5KFdlYWtQdHI8UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5PiYmLCBSZW1v
dGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllciwgV2ViQ29yZTo6TGVnYWN5Q0RNJik7CisKKyAg
ICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgorICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZl
U3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVf
cHRyPElQQzo6RW5jb2Rlcj4mKSBmaW5hbDsKKworICAgIC8vIExlZ2FjeUNETVNlc3Npb25DbGll
bnQKKyAgICB2b2lkIHNlbmRNZXNzYWdlKFVpbnQ4QXJyYXkqLCBTdHJpbmcgZGVzdGluYXRpb25V
UkwpIGZpbmFsOworICAgIHZvaWQgc2VuZEVycm9yKE1lZGlhS2V5RXJyb3JDb2RlLCB1aW50MzJf
dCBzeXN0ZW1Db2RlKSBmaW5hbDsKKyAgICBTdHJpbmcgbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9y
eSgpIGNvbnN0IGZpbmFsOworCisgICAgLy8gTWVzc2FnZXMKKyAgICB1c2luZyBHZW5lcmF0ZUtl
eUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxJUEM6OlNoYXJlZEJ1
ZmZlckRhdGFSZWZlcmVuY2U+JiYsIGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkIHNob3J0LCB1aW50
MzJfdCk+OworICAgIHZvaWQgZ2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0cmluZyYgbWltZVR5
cGUsIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYmIGluaXREYXRhLCBHZW5lcmF0ZUtl
eUNhbGxiYWNrJiYpOworICAgIHZvaWQgcmVsZWFzZUtleXMoKTsKKyAgICB1c2luZyBVcGRhdGVD
YWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCwgT3B0aW9uYWw8SVBDOjpTaGFy
ZWRCdWZmZXJEYXRhUmVmZXJlbmNlPiYmLCB1bnNpZ25lZCBzaG9ydCwgdWludDMyX3QpPjsKKyAg
ICB2b2lkIHVwZGF0ZShJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmJiB1cGRhdGUsIFVw
ZGF0ZUNhbGxiYWNrJiYpOworICAgIHVzaW5nIENhY2hlZEtleUZvcktleUlEQ2FsbGJhY2sgPSBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVy
ZW5jZT4mJik+OworICAgIHZvaWQgY2FjaGVkS2V5Rm9yS2V5SUQoU3RyaW5nIGtleUlkLCBDYWNo
ZWRLZXlGb3JLZXlJRENhbGxiYWNrJiYpOworCisgICAgV2Vha1B0cjxSZW1vdGVMZWdhY3lDRE1G
YWN0b3J5UHJveHk+IG1fZmFjdG9yeTsKKyAgICBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRp
ZmllciBtX2lkZW50aWZpZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkxlZ2FjeUNE
TVNlc3Npb24+IG1fc2Vzc2lvbjsKKyAgICBXZWFrUHRyPFJlbW90ZU1lZGlhUGxheWVyUHJveHk+
IG1fcGxheWVyOworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblBy
b3h5Lm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE0OTYyY2U5MWRmNTU5NWZjN2FjZTJjMDUwNzdi
MDUxZWEwZGUzNzAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEs
MzMgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
IyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
IyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpZiBFTkFCTEUo
R1BVX1BST0NFU1MpICYmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQorCittZXNzYWdl
cyAtPiBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkgTm90UmVmQ291bnRlZCB7CisgICAgR2Vu
ZXJhdGVLZXlSZXF1ZXN0KFN0cmluZyBtaW1lVHlwZSwgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVm
ZXJlbmNlIGluaXREYXRhKSAtPiAoT3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJl
bmNlPiBuZXh0TWVzc2FnZSwgU3RyaW5nIGRlc3RpbmF0aW9uVVJMLCB1bnNpZ25lZCBzaG9ydCBl
cnJvckNvZGUsIHVpbnQzMl90IHN5c3RlbUNvZGUpIFN5bmNocm9ub3VzCisgICAgUmVsZWFzZUtl
eXMoKQorICAgIFVwZGF0ZShJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgdXBkYXRlKSAt
PiAoYm9vbCBzdWNjZWVkZWQsIE9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5j
ZT4gbmV4dE1lc3NhZ2UsIHVuc2lnbmVkIHNob3J0IGVycm9yQ29kZSwgdWludDMyX3Qgc3lzdGVt
Q29kZSkgU3luY2hyb25vdXMKKyAgICBDYWNoZWRLZXlGb3JLZXlJRChTdHJpbmcga2V5SWQpIC0+
IChPcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U+IGtleSkgU3luY2hyb25v
dXMKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcAppbmRleCBiYzRk
YmUzOWM0ZWFhM2MxODY1ODIxY2Q1ZGJlNTEzMWZkZGJmNDcwLi5lYjE1MGNiMzBhZTE4N2FlOTQ5
NDg2YmI0YTJhZTFjMTVjYzQ1ZjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHAK
QEAgLTIwNCw2ICsyMDQsMTQgQEAgdm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6
ZGlkUmVjZWl2ZVN5bmNQbGF5ZXJNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYKICAgICAgICAgcGxh
eWVyLT5kaWRSZWNlaXZlU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgZW5jb2Rlcik7
CiB9CiAKK1JlbW90ZU1lZGlhUGxheWVyUHJveHkqIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclBy
b3h5OjpnZXRQcm94eShjb25zdCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyJiBp
ZCkKK3sKKyAgICBhdXRvIHJlc3VsdHMgPSBtX3Byb3hpZXMuZmluZChpZCk7CisgICAgaWYgKHJl
c3VsdHMgIT0gbV9wcm94aWVzLmVuZCgpKQorICAgICAgICByZXR1cm4gcmVzdWx0cy0+dmFsdWUu
Z2V0KCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJM
RUQKIGNvbnN0IExvZ2dlciYgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OmxvZ2dlcigp
IGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oCmluZGV4IGUwN2Q2ZTZhODM1YWY0
ZWNmY2FmZDg2NThkMDUyYzRjYzc1MjIzYmUuLjUxZTcxZTc3NzM3OGI4ZGFmYjljN2M2MjcwMmI5
MWE2NzVmYTFlYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oCkBAIC02OCw2ICs2OCw4
IEBAIHB1YmxpYzoKICAgICBXVEZMb2dDaGFubmVsJiBsb2dDaGFubmVsKCkgY29uc3QgZmluYWw7
CiAjZW5kaWYKIAorICAgIFJlbW90ZU1lZGlhUGxheWVyUHJveHkqIGdldFByb3h5KGNvbnN0IE1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXImKTsKKwogcHJpdmF0ZToKICAgICAvLyBJ
UEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAKaW5kZXggYzFi
NDM5NmIwMWJjYjlkNDBjZDllZmQwODI4ZDY3ZjY3NGUyODM5Mi4uNzg0ZDI0MDljODNlOWE3ZjYw
ODZjNzAyMjgxZTFkMjk1YzkzNWM0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcApAQCAtMzMsNiArMzMs
OCBAQAogI2luY2x1ZGUgIkxheWVySG9zdGluZ0NvbnRleHQuaCIKICNpbmNsdWRlICJNZWRpYVBs
YXllclByaXZhdGVSZW1vdGVNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZUF1ZGlvVHJhY2tQ
cm94eS5oIgorI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5oIgorI2luY2x1
ZGUgIlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlclByb3h5LmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJQcm94eUNv
bmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllclN0YXRlLmgiCkBAIC01
MjMsMTUgKzUyNSwxOSBAQCB2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVy
QWN0aXZlU291cmNlQnVmZmVyc0NoYW5nZWQoKQogfQogCiAjaWYgRU5BQkxFKExFR0FDWV9FTkNS
WVBURURfTUVESUEpCi1SZWZQdHI8QXJyYXlCdWZmZXI+IFJlbW90ZU1lZGlhUGxheWVyUHJveHk6
Om1lZGlhUGxheWVyQ2FjaGVkS2V5Rm9yS2V5SWQoY29uc3QgU3RyaW5nJikgY29uc3QKK1JlZlB0
cjxBcnJheUJ1ZmZlcj4gUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJDYWNoZWRL
ZXlGb3JLZXlJZChjb25zdCBTdHJpbmcmIGtleUlkKSBjb25zdAogewotICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgaWYgKGF1dG8gY2RtU2Vzc2lvbiA9IG1fbWFuYWdlci5ncHVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzKCkubGVnYWN5Q2RtRmFjdG9yeVByb3h5KCkuZ2V0U2Vzc2lvbihtX2xlZ2Fj
eVNlc3Npb24pKQorICAgICAgICByZXR1cm4gY2RtU2Vzc2lvbi0+Z2V0Q2FjaGVkS2V5Rm9yS2V5
SWQoa2V5SWQpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCi12b2lkIFJlbW90ZU1lZGlhUGxh
eWVyUHJveHk6Om1lZGlhUGxheWVyS2V5TmVlZGVkKFVpbnQ4QXJyYXkqKQordm9pZCBSZW1vdGVN
ZWRpYVBsYXllclByb3h5OjptZWRpYVBsYXllcktleU5lZWRlZChVaW50OEFycmF5KiBtZXNzYWdl
KQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgSVBDOjpEYXRhUmVmZXJlbmNlIG1lc3Nh
Z2VSZWZlcmVuY2U7CisgICAgaWYgKG1lc3NhZ2UpCisgICAgICAgIG1lc3NhZ2VSZWZlcmVuY2Ug
PSB7IG1lc3NhZ2UtPmRhdGEoKSwgbWVzc2FnZS0+Ynl0ZUxlbmd0aCgpIH07CisgICAgbV93ZWJQ
cm9jZXNzQ29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
OjpNZWRpYVBsYXllcktleU5lZWRlZChXVEZNb3ZlKG1lc3NhZ2VSZWZlcmVuY2UpKSwgbV9pZCk7
CiB9CiAjZW5kaWYKIApAQCAtNzIzLDYgKzcyOSwyOCBAQCB2b2lkIFJlbW90ZU1lZGlhUGxheWVy
UHJveHk6OnNlbmRDYWNoZWRTdGF0ZSgpCiB9CiAKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRF
RF9NRURJQSkKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6c2V0TGVnYWN5Q0RNU2Vzc2lv
bihSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllciYmIGluc3RhbmNlSWQpCit7CisgICAg
aWYgKG1fbGVnYWN5U2Vzc2lvbiA9PSBpbnN0YW5jZUlkKQorICAgICAgICByZXR1cm47CisKKyAg
ICBpZiAobV9sZWdhY3lTZXNzaW9uKSB7CisgICAgICAgIGlmIChhdXRvIGNkbVNlc3Npb24gPSBt
X21hbmFnZXIuZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpLmxlZ2FjeUNkbUZhY3RvcnlQcm94
eSgpLmdldFNlc3Npb24obV9sZWdhY3lTZXNzaW9uKSkgeworICAgICAgICAgICAgbV9wbGF5ZXIt
PnNldENETVNlc3Npb24obnVsbHB0cik7CisgICAgICAgICAgICBjZG1TZXNzaW9uLT5zZXRQbGF5
ZXIobnVsbHB0cik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBtX2xlZ2FjeVNlc3Npb24gPSBp
bnN0YW5jZUlkOworCisgICAgaWYgKG1fbGVnYWN5U2Vzc2lvbikgeworICAgICAgICBpZiAoYXV0
byBjZG1TZXNzaW9uID0gbV9tYW5hZ2VyLmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKS5sZWdh
Y3lDZG1GYWN0b3J5UHJveHkoKS5nZXRTZXNzaW9uKG1fbGVnYWN5U2Vzc2lvbikpIHsKKyAgICAg
ICAgICAgIG1fcGxheWVyLT5zZXRDRE1TZXNzaW9uKGNkbVNlc3Npb24tPnNlc3Npb24oKSk7Cisg
ICAgICAgICAgICBjZG1TZXNzaW9uLT5zZXRQbGF5ZXIobWFrZVdlYWtQdHIodGhpcykpOworICAg
ICAgICB9CisgICAgfQorfQorCiB2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6OmtleUFkZGVk
KCkKIHsKICAgICBtX3BsYXllci0+a2V5QWRkZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oCmluZGV4IDE0M2Jj
NTU5ZWQ5NTFjM2Q3MTQ2NTU5OGEwNTgzNzk5MWJmZGI3M2UuLjg2MDE4NTRkODI4NjZkYjU0MDk2
ZmZjNzEwY2U1NjVkMTE0MDVjMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaApAQCAtMzAsNiArMzAsNyBAQAog
I2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJNZWRpYVBsYXllclByaXZhdGVSZW1v
dGVJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAi
UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJSZW1vdGVNZWRp
YVBsYXllckNvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllclByb3h5
Q29uZmlndXJhdGlvbi5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyU3RhdGUuaCIKQEAg
LTE0NCw2ICsxNDUsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShMRUdBQ1lfRU5D
UllQVEVEX01FRElBKQorICAgIHZvaWQgc2V0TGVnYWN5Q0RNU2Vzc2lvbihSZW1vdGVMZWdhY3lD
RE1TZXNzaW9uSWRlbnRpZmllciYmIGluc3RhbmNlSWQpOwogICAgIHZvaWQga2V5QWRkZWQoKTsK
ICNlbmRpZgogCkBAIC0xNzUsNiArMTc3LDggQEAgcHVibGljOgogICAgIFJlZjxXZWJDb3JlOjpQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2U+IHJlcXVlc3RSZXNvdXJjZShXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiwgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyOjpMb2FkT3B0aW9u
cyk7CiAgICAgdm9pZCByZW1vdmVSZXNvdXJjZShSZW1vdGVNZWRpYVJlc291cmNlSWRlbnRpZmll
cik7CiAKKyAgICBSZWZQdHI8V2ViQ29yZTo6TWVkaWFQbGF5ZXI+IG1lZGlhUGxheWVyKCkgeyBy
ZXR1cm4gbV9wbGF5ZXI7IH0KKwogcHJpdmF0ZToKICAgICAvLyBNZWRpYVBsYXllckNsaWVudAog
ICAgIHZvaWQgbWVkaWFQbGF5ZXJOZXR3b3JrU3RhdGVDaGFuZ2VkKCkgZmluYWw7CkBAIC0yOTMs
NiArMjk3LDcgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElB
KSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogICAgIGJvb2wgbV9zaG91bGRDb250aW51ZUFm
dGVyS2V5TmVlZGVkIHsgZmFsc2UgfTsKKyAgICBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRp
ZmllciBtX2xlZ2FjeVNlc3Npb247CiAjZW5kaWYKIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxF
RApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlh
UGxheWVyUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5tZXNzYWdlcy5pbgppbmRleCAyNzk1MTI2ZDI5YmJlMWI4
ODliMjdmMDhkNTcwYzYyZjRlMDRlMDUxLi5jZWI2OGFlYjA3N2UwODExYTNhMmIyZDJhMDRkYzkz
NGYwZjVhODYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTWVkaWFQbGF5ZXJQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5tZXNzYWdlcy5pbgpAQCAtODAsNyAr
ODAsNyBAQCBtZXNzYWdlcyAtPiBSZW1vdGVNZWRpYVBsYXllclByb3h5IE5vdFJlZkNvdW50ZWQg
ewogI2VuZGlmCiAKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKLSAgICAjIFNl
dENETVNlc3Npb24KKyAgICBTZXRMZWdhY3lDRE1TZXNzaW9uKFdlYktpdDo6UmVtb3RlTGVnYWN5
Q0RNU2Vzc2lvbklkZW50aWZpZXIgaW5zdGFuY2VJZCkKICAgICBLZXlBZGRlZCgpCiAjZW5kaWYK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVRleHRU
cmFja1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVUZXh0
VHJhY2tQcm94eS5jcHAKaW5kZXggYWY2NGM4MmI5MDIzYWQyMzQxNDIzY2Y4NWRiNDk1YTc2YzRj
NmI0YS4uNjBmYTZjODExYmZkMDc2MmJiZWNkMWUxODBjYzBjYTUyMjZiMjQ4NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVRleHRUcmFja1Byb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVGV4dFRyYWNrUHJv
eHkuY3BwCkBAIC0yOSwxNSArMjksMTkgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAor
I2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGVNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyUHJveHkuaCIKICNp
bmNsdWRlICJUZXh0VHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbi5oIgogI2luY2x1ZGUg
IlRleHRUcmFja1ByaXZhdGVSZW1vdGVNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYkNvcmVBcmd1
bWVudENvZGVycy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvSVNPVlRUQ3VlLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAordXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CisKIFJlbW90ZVRleHRUcmFja1Byb3h5OjpSZW1vdGVUZXh0VHJh
Y2tQcm94eShSZW1vdGVNZWRpYVBsYXllclByb3h5JiBwbGF5ZXIsIFRyYWNrUHJpdmF0ZVJlbW90
ZUlkZW50aWZpZXIgaWQsIFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZSYgdHJhY2tQcml2YXRlKQogICAgIDogbV9wbGF5ZXIocGxheWVyKQog
ICAgICwgbV9pZGVudGlmaWVyKGlkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZVRleHRUcmFja1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlVGV4dFRyYWNrUHJveHkuaAppbmRleCA0ZjQ5ZjNhMzg3ZDBlYTEwZjE2
MWU1YWQ3OWY4ZDc4NTUwM2QxNzJhLi45NzFlN2Y2NDg5YjMzYTUzODhiZWNmOTE4OWFiOWU3OWNh
NzMyMmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
VGV4dFRyYWNrUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlVGV4dFRyYWNrUHJveHkuaApAQCAtMzIsMTUgKzMyLDIyIEBACiAjaW5jbHVkZSA8V2ViQ29y
ZS9JbmJhbmRUZXh0VHJhY2tQcml2YXRlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UcmFja0Jhc2Uu
aD4KIAorbmFtZXNwYWNlIElQQyB7CisKK2NsYXNzIENvbm5lY3Rpb247CisKK30KKwogbmFtZXNw
YWNlIFdlYktpdCB7CiAKK2NsYXNzIFJlbW90ZU1lZGlhUGxheWVyUHJveHk7CiBzdHJ1Y3QgVGV4
dFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb247CiAKIGNsYXNzIFJlbW90ZVRleHRUcmFj
a1Byb3h5IGZpbmFsCiAgICAgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8UmVtb3RlVGV4
dFRyYWNrUHJveHksIFdURjo6RGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1haW4+CiAgICAgLCBwcml2YXRl
IFdlYkNvcmU6OkluYmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQgewogcHVibGljOgotICAgIHN0
YXRpYyBSZWY8UmVtb3RlVGV4dFRyYWNrUHJveHk+IGNyZWF0ZShSZW1vdGVNZWRpYVBsYXllclBy
b3h5JiBwbGF5ZXIsIFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQsIFJlZjxJUEM6OkNv
bm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSYgdHJhY2tQcml2
YXRlKQorICAgIHN0YXRpYyBSZWY8UmVtb3RlVGV4dFRyYWNrUHJveHk+IGNyZWF0ZShSZW1vdGVN
ZWRpYVBsYXllclByb3h5JiBwbGF5ZXIsIFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQs
IFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgV2ViQ29yZTo6SW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZSYgdHJhY2tQcml2YXRlKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgUmVtb3RlVGV4dFRyYWNrUHJveHkocGxheWVyLCBpZCwgV1RGTW92ZShjb25uZWN0aW9u
KSwgdHJhY2tQcml2YXRlKSk7CiAgICAgfQpAQCAtNTAsMTUgKzU3LDE1IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldE1vZGUoV2ViQ29yZTo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6TW9kZSBtb2Rl
KSB7IG1fdHJhY2tQcml2YXRlLT5zZXRNb2RlKG1vZGUpOyB9CiAKIHByaXZhdGU6Ci0gICAgUmVt
b3RlVGV4dFRyYWNrUHJveHkoUmVtb3RlTWVkaWFQbGF5ZXJQcm94eSYsIFRyYWNrUHJpdmF0ZVJl
bW90ZUlkZW50aWZpZXIsIFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYsIEluYmFuZFRleHRUcmFja1By
aXZhdGUmKTsKKyAgICBSZW1vdGVUZXh0VHJhY2tQcm94eShSZW1vdGVNZWRpYVBsYXllclByb3h5
JiwgVHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJiwg
V2ViQ29yZTo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSYpOwogCiAgICAgLy8gSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUNsaWVudAogICAgIHZpcnR1YWwgdm9pZCBhZGREYXRhQ3VlKGNvbnN0IE1lZGlh
VGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBjb25zdCB2b2lkKiwgdW5zaWduZWQp
OwogCiAjaWYgRU5BQkxFKERBVEFDVUVfVkFMVUUpCi0gICAgdmlydHVhbCB2b2lkIGFkZERhdGFD
dWUoY29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1lJiBlbmQsIFJlZjxTZXJp
YWxpemVkUGxhdGZvcm1EYXRhQ3VlPiYmLCBjb25zdCBTdHJpbmcmKTsKLSAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlRGF0YUN1ZShjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUm
IGVuZCwgU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZSYpOwotICAgIHZpcnR1YWwgdm9pZCByZW1v
dmVEYXRhQ3VlKGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBT
ZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlJik7CisgICAgdmlydHVhbCB2b2lkIGFkZERhdGFDdWUo
Y29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1lJiBlbmQsIFJlZjxXZWJDb3Jl
OjpTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlPiYmLCBjb25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlRGF0YUN1ZShjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRp
YVRpbWUmIGVuZCwgV2ViQ29yZTo6U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZSYpOworICAgIHZp
cnR1YWwgdm9pZCByZW1vdmVEYXRhQ3VlKGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1l
ZGlhVGltZSYgZW5kLCBXZWJDb3JlOjpTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlJik7CiAjZW5k
aWYKIAogICAgIHZpcnR1YWwgdm9pZCBhZGRHZW5lcmljQ3VlKFdlYkNvcmU6OkluYmFuZEdlbmVy
aWNDdWUmKTsKQEAgLTY3LDcgKzc0LDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCBw
YXJzZVdlYlZUVEZpbGVIZWFkZXIoU3RyaW5nJiYpOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZVdl
YlZUVEN1ZURhdGEoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICB2aXJ0
dWFsIHZvaWQgcGFyc2VXZWJWVFRDdWVEYXRhKElTT1dlYlZUVEN1ZSYmKTsKKyAgICB2aXJ0dWFs
IHZvaWQgcGFyc2VXZWJWVFRDdWVEYXRhKFdlYkNvcmU6OklTT1dlYlZUVEN1ZSYmKTsKIAogICAg
IC8vIFRyYWNrUHJpdmF0ZUJhc2VDbGllbnQKICAgICB2b2lkIGlkQ2hhbmdlZChjb25zdCBBdG9t
U3RyaW5nJikgZmluYWw7CkBAIC04MSw3ICs4OCw3IEBAIHByaXZhdGU6CiAgICAgUmVtb3RlTWVk
aWFQbGF5ZXJQcm94eSYgbV9wbGF5ZXI7CiAgICAgVHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmll
ciBtX2lkZW50aWZpZXI7CiAgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV93ZWJQcm9jZXNzQ29u
bmVjdGlvbjsKLSAgICBSZWY8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZT4gbV90cmFja1ByaXZhdGU7
CisgICAgUmVmPFdlYkNvcmU6OkluYmFuZFRleHRUcmFja1ByaXZhdGU+IG1fdHJhY2tQcml2YXRl
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtp
dC9tZXNzYWdlcy5weQppbmRleCA0YmExNGRiYWYyNGIyNDFlNTlkYjBhN2YyMDgwZDAyZDAyN2Mz
YjA0Li42NjVmNWEyMjEwOGUxYjY2OTFhMDM1Njk3Yzk5YjE0NmRlMDMzMGI4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTIzOCw2ICsyMzgsOCBAQCBkZWYg
dHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJlZCgpOgogICAgICAgICAnV2ViS2l0
OjpSZW1vdGVDRE1JZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6UmVtb3RlQ0RNSW5zdGFu
Y2VJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
SWRlbnRpZmllcicsCisgICAgICAgICdXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETUlkZW50aWZpZXIn
LAorICAgICAgICAnV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllcicsCiAg
ICAgICAgICdXZWJLaXQ6OlJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyJywKICAgICAgICAg
J1dlYktpdDo6UmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpS
VENEZWNvZGVySWRlbnRpZmllcicsCkBAIC01ODQsNiArNTg2LDcgQEAgZGVmIGhlYWRlcnNfZm9y
X3R5cGUodHlwZSk6CiAgICAgICAgICdXZWJDb3JlOjpJbnB1dE1vZGUnOiBbJzxXZWJDb3JlL0lu
cHV0TW9kZS5oPiddLAogICAgICAgICAnV2ViQ29yZTo6S2V5ZnJhbWVWYWx1ZUxpc3QnOiBbJzxX
ZWJDb3JlL0dyYXBoaWNzTGF5ZXIuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OktleXByZXNzQ29t
bWFuZCc6IFsnPFdlYkNvcmUvS2V5Ym9hcmRFdmVudC5oPiddLAorICAgICAgICAnV2ViQ29yZTo6
TGVnYWN5Q0RNU2Vzc2lvbkNsaWVudDo6TWVkaWFLZXlFcnJvckNvZGUnOiBbJzxXZWJDb3JlL0xl
Z2FjeUNETVNlc3Npb24uaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OkxvY2tCYWNrRm9yd2FyZExp
c3QnOiBbJzxXZWJDb3JlL0ZyYW1lTG9hZGVyVHlwZXMuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6
Ok1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpIYXNBY3Rpdml0eSc6IFsnPFdlYkNvcmUvTWVz
c2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6Ok5ldHdvcmtU
cmFuc2FjdGlvbkluZm9ybWF0aW9uJzogWyc8V2ViQ29yZS9OZXR3b3JrTG9hZEluZm9ybWF0aW9u
Lmg+J10sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dl
YktpdC9Tb3VyY2VzLnR4dAppbmRleCAxYzkyNDVlMGI5ZjRiYmMyYjgwZDdlM2NjMDRlZmQyMDNk
OGUwNGNmLi42ZGRkZGY1MjNmZDI3NDFmNmNmNjMzMDlhN2E4MjlkYTIxMzI3YThjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNl
cy50eHQKQEAgLTMzLDYgKzMzLDkgQEAgR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5
UHJveHkuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuY3BwCiBH
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmNwcAogR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5jcHAKK0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVn
YWN5Q0RNRmFjdG9yeVByb3h5LmNwcAorR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Q
cm94eS5jcHAKK0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNw
cAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHAKIEdQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAKIEdQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5jcHAKQEAgLTU1NSw2ICs1NTgsOSBAQCBXZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVDRE0uY3BwCiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1G
YWN0b3J5LmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3BwCiBX
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uY3BwCitXZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE0uY3BwCitXZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVMZWdhY3lDRE1GYWN0b3J5LmNwcAorV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVn
YWN5Q0RNU2Vzc2lvbi5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVy
TWFuYWdlci5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTUlNRVR5
cGVDYWNoZS5jcHAgQG5vLXVuaWZ5CiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVJl
c291cmNlUHJveHkuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCAwZTMyNjg0NGQ4ZDA1ZGQ3MDVkMDcwZmU0MmIyNDFmZjI3ZDA1ZDYy
Li5hZjQ4MzdlMWU0NjhjZGI1YWU1MDBiZTQ1ZWE5MThkNmViYTMxOGU3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE3NDcsNiArMTc0
NywxMCBAQAogCQlDREJCNDlGRDI0MEQ5QTcyMDAxN0MyOTIgLyogUmVtb3RlQXVkaW9TZXNzaW9u
Q29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0RCQjQ5RkMyNDBEOUE3MjAwMTdDMjkyIC8qIFJlbW90ZUF1ZGlvU2Vzc2lvbkNvbmZp
Z3VyYXRpb24uaCAqLzsgfTsKIAkJQ0RDMjgzMUQyMDFCRDc5RDAwRTZFNzQ1IC8qIFdLRnVsbHNj
cmVlblN0YWNrVmlldy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0RDMjgzMUIyMDFCRDc5RDAwRTZFNzQ1IC8qIFdLRnVsbHNjcmVlblN0YWNrVmlldy5o
ICovOyB9OwogCQlDRENBODVDOTEzMkFCQTRFMDBFOTYxREYgLyogV0tGdWxsU2NyZWVuV2luZG93
Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0RDQTg1QzcxMzJBQkE0RTAwRTk2MURGIC8qIFdLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xs
ZXIuaCAqLzsgfTsKKwkJQ0RFNTU1MzIyNDA2RUI4QzAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNE
TUZhY3RvcnlQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREU1NTUyOTI0MDZCODk2MDA4QTNEREIgLyogUmVtb3Rl
TGVnYWN5Q0RNRmFjdG9yeVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKKwkJQ0RFNTU1
MzMyNDA2RUI4QzAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETVByb3h5TWVzc2FnZVJlY2VpdmVy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERTU1
NTJBMjQwNkI4OTYwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1Qcm94eU1lc3NhZ2VSZWNlaXZl
ci5jcHAgKi87IH07CisJCUNERTU1NTM0MjQwNkVCOEMwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lD
RE1TZXNzaW9uTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENERTU1NTJFMjQwNkI4OTcwMDhBM0REQiAvKiBSZW1vdGVMZWdh
Y3lDRE1TZXNzaW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKKwkJQ0RFNTU1MzUyNDA2RUI4
QzAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eU1lc3NhZ2VSZWNlaXZlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREU1NTUz
MTI0MDZCODk3MDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5TWVzc2FnZVJl
Y2VpdmVyLmNwcCAqLzsgfTsKIAkJQ0UxMUFENTIxQ0JDNDgyRjAwNjgxRUU1IC8qIENvZGVTaWdu
aW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTEx
QUQ1MTFDQkM0ODJGMDA2ODFFRTUgLyogQ29kZVNpZ25pbmcuaCAqLzsgfTsKIAkJQ0UxQTBCRDIx
QTQ4RTZDNjAwNTRFRjc0IC8qIEFzc2VydGlvblNlcnZpY2VzU1BJLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTFBMEJDQzFBNDhFNkM2MDA1NEVGNzQg
LyogQXNzZXJ0aW9uU2VydmljZXNTUEkuaCAqLzsgfTsKIAkJQ0UxQTBCRDYxQTQ4RTZDNjAwNTRF
Rjc0IC8qIFRDQ1NQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0UxQTBCRDAxQTQ4RTZDNjAwNTRFRjc0IC8qIFRDQ1NQSS5oICovOyB9OwpAQCAtNTE0
MCw2ICs1MTQ0LDM2IEBACiAJCUNERDUzNTc3MjQwRERFMDcwMEY3QjhDNCAvKiBSZW1vdGVBdWRp
b1Nlc3Npb25Qcm94eU1lc3NhZ2VzUmVwbGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVBdWRp
b1Nlc3Npb25Qcm94eU1lc3NhZ2VzUmVwbGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlDREQ1MzU3ODI0MERERTA4MDBGN0I4QzQgLyogUmVtb3RlQXVkaW9TZXNzaW9uUHJveHlN
YW5hZ2VyTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQXVkaW9TZXNzaW9uUHJveHlN
YW5hZ2VyTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RENTM1Nzky
NDBEREUwODAwRjdCOEM0IC8qIFJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5TWFuYWdlck1lc3NhZ2Vz
UmVwbGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFnZXJN
ZXNzYWdlc1JlcGxpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RFNTU0RTIy
NDA1ODExNDAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnkuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlDREU1NTRFMzI0MDU4MTE0MDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RFNTU0RUEyNDA1ODE4MzAwOEEzRERCIC8qIFJlbW90ZUxl
Z2FjeUNETS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVMZWdhY3lDRE0uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQ0RFNTU0RUIyNDA1ODE4MzAwOEEzRERCIC8qIFJlbW90ZUxlZ2Fj
eUNETS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVMZWdhY3lDRE0uY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlDREU1NTRFRTI0MDU4MUEzMDA4QTNEREIgLyogUmVtb3Rl
TGVnYWN5Q0RNU2Vzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVMZWdhY3lDRE1TZXNzaW9u
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNERTU1NEVGMjQwNTgxQTMwMDhBM0RE
QiAvKiBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90
ZUxlZ2FjeUNETVNlc3Npb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREU1
NTRGODI0MDU4MjA4MDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlDREU1NTRGOTI0MDU4MjA4MDA4QTNEREIgLyogUmVtb3RlTGVnYWN5
Q0RNU2Vzc2lvblByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUxlZ2FjeUNETVNl
c3Npb25Qcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNERTU1NTAwMjQw
NTgyODQwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkubWVzc2FnZXMuaW4g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5Lm1lc3Nh
Z2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREU1NTUwNTI0MDU4MzI0MDA4
QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSZW1vdGVM
ZWdhY3lDRE1TZXNzaW9uLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlDREU1NTUwNzI0MDU4OEI4MDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNSWRlbnRpZmllci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSZW1vdGVMZWdhY3lDRE1JZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUNERTU1NTA5MjQwNTg4Q0IwMDhBM0REQiAvKiBSZW1vdGVMZWdh
Y3lDRE1TZXNzaW9uSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVMZWdhY3lDRE1T
ZXNzaW9uSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREU1NTUx
QjI0MDVBM0I3MDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5Lm1lc3NhZ2Vz
LmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5tZXNzYWdlcy5pbjsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RFNTU1MUMyNDA1QTNCNzAwOEEzRERCIC8qIFJlbW90
ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVMZWdhY3lDRE1G
YWN0b3J5UHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RFNTU1MUQyNDA1
QTNCNzAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlDREU1NTUxRTI0MDVBM0RGMDA4QTNEREIgLyogUmVtb3RlTGVnYWN5
Q0RNUHJveHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVtb3RlTGVnYWN5Q0RNUHJveHkubWVzc2FnZXMu
aW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNERTU1NTFGMjQwNUEzREYwMDhBM0RE
QiAvKiBSZW1vdGVMZWdhY3lDRE1Qcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVMZWdhY3lD
RE1Qcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREU1NTUyMDI0MDVBM0RG
MDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
UmVtb3RlTGVnYWN5Q0RNUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlD
REU1NTUyNjI0MDZCODk1MDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5TWVz
c2FnZXNSZXBsaWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94
eU1lc3NhZ2VzUmVwbGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREU1NTUy
NzI0MDZCODk1MDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbk1lc3NhZ2VzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFJlbW90ZUxlZ2FjeUNETVNlc3Npb25NZXNzYWdlcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlDREU1NTUyODI0MDZCODk2MDA4QTNEREIgLyogUmVtb3RlTGVn
YWN5Q0RNUHJveHlNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVMZWdhY3lDRE1Qcm94
eU1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNERTU1NTI5MjQwNkI4
OTYwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHlNZXNzYWdlUmVjZWl2ZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5TWVzc2Fn
ZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RFNTU1MkEyNDA2
Qjg5NjAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUxlZ2FjeUNETVByb3h5TWVzc2FnZVJlY2VpdmVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RFNTU1MkIyNDA2Qjg5NjAwOEEzRERC
IC8qIFJlbW90ZUxlZ2FjeUNETVByb3h5TWVzc2FnZXNSZXBsaWVzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJlbW90ZUxlZ2FjeUNETVByb3h5TWVzc2FnZXNSZXBsaWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUNERTU1NTJDMjQwNkI4OTYwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1G
YWN0b3J5UHJveHlNZXNzYWdlc1JlcGxpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlTGVnYWN5
Q0RNRmFjdG9yeVByb3h5TWVzc2FnZXNSZXBsaWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUNERTU1NTJEMjQwNkI4OTcwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5
UHJveHlNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJv
eHlNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREU1NTUyRTI0MDZC
ODk3MDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbk1lc3NhZ2VSZWNlaXZlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uTWVzc2FnZVJlY2VpdmVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RFNTU1MkYyNDA2Qjg5NzAwOEEz
RERCIC8qIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eU1lc3NhZ2VzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eU1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUNERTU1NTMwMjQwNkI4OTcwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lD
RE1TZXNzaW9uTWVzc2FnZXNSZXBsaWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUxlZ2FjeUNE
TVNlc3Npb25NZXNzYWdlc1JlcGxpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
Q0RFNTU1MzEyNDA2Qjg5NzAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eU1l
c3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVMZWdhY3lDRE1TZXNz
aW9uUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDRTExQUQ0RjFDQkM0N0Y4MDA2ODFFRTUgLyogQ29kZVNpZ25pbmcubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDb2RlU2lnbmluZy5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQ0UxMUFENTExQ0JDNDgyRjAwNjgxRUU1IC8qIENvZGVTaWduaW5n
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvZGVTaWduaW5nLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFMUEwQkNDMUE0OEU2QzYwMDU0RUY3NCAvKiBBc3Nl
cnRpb25TZXJ2aWNlc1NQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBc3Nl
cnRpb25TZXJ2aWNlc1NQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTQ0Miw2
ICs1NDc2LDE1IEBACiAJCQkJQ0RBQzIwQkQyM0ZDMkY3NDAwMjFERUUzIC8qIFJlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvbi5oICovLAogCQkJCUNENDY2MTdGMjQwMTA0NTgwMDQ3Q0EzNSAvKiBSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb24ubWVzc2FnZXMuaW4gKi8sCiAJCQkJQ0RBQzIwQkMyM0ZDMkY3
NDAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIuaCAqLywKKwkJ
CQlDREU1NTRFQjI0MDU4MTgzMDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNLmNwcCAqLywKKwkJ
CQlDREU1NTRFQTI0MDU4MTgzMDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNLmggKi8sCisJCQkJ
Q0RFNTU0RTMyNDA1ODExNDAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnkuY3BwICov
LAorCQkJCUNERTU1NEUyMjQwNTgxMTQwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5
LmggKi8sCisJCQkJQ0RFNTU1MDcyNDA1ODhCODAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETUlk
ZW50aWZpZXIuaCAqLywKKwkJCQlDREU1NTRFRjI0MDU4MUEzMDA4QTNEREIgLyogUmVtb3RlTGVn
YWN5Q0RNU2Vzc2lvbi5jcHAgKi8sCisJCQkJQ0RFNTU0RUUyNDA1ODFBMzAwOEEzRERCIC8qIFJl
bW90ZUxlZ2FjeUNETVNlc3Npb24uaCAqLywKKwkJCQlDREU1NTUwNTI0MDU4MzI0MDA4QTNEREIg
LyogUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5tZXNzYWdlcy5pbiAqLywKKwkJCQlDREU1NTUwOTI0
MDU4OENCMDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXIuaCAqLywK
IAkJCQkwN0I5M0ZGNTIzQUYwQ0I4MDAzNkY4RUEgLyogUmVtb3RlTWVkaWFQbGF5ZXJDb25maWd1
cmF0aW9uLmggKi8sCiAJCQkJMDc5MjMxMzAyMzlCM0IwQzAwOTU5OEUyIC8qIFJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlci5jcHAgKi8sCiAJCQkJMDc5MjMxMzQyMzlCM0IwQzAwOTU5OEUyIC8qIFJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlci5oICovLApAQCAtNTQ5MSw2ICs1NTM0LDE1IEBACiAJCQkJ
Q0RBQzIwODMyM0ZCMjEzNDAwMjFERUUzIC8qIFJlbW90ZUNETVByb3h5LmNwcCAqLywKIAkJCQlD
REFDMjA4MjIzRkIyMTM0MDAyMURFRTMgLyogUmVtb3RlQ0RNUHJveHkuaCAqLywKIAkJCQlDREFD
MjA4NjIzRkIyMTU4MDAyMURFRTMgLyogUmVtb3RlQ0RNUHJveHkubWVzc2FnZXMuaW4gKi8sCisJ
CQkJQ0RFNTU1MUQyNDA1QTNCNzAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94
eS5jcHAgKi8sCisJCQkJQ0RFNTU1MUMyNDA1QTNCNzAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNE
TUZhY3RvcnlQcm94eS5oICovLAorCQkJCUNERTU1NTFCMjQwNUEzQjcwMDhBM0REQiAvKiBSZW1v
dGVMZWdhY3lDRE1GYWN0b3J5UHJveHkubWVzc2FnZXMuaW4gKi8sCisJCQkJQ0RFNTU1MjAyNDA1
QTNERjAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETVByb3h5LmNwcCAqLywKKwkJCQlDREU1NTUx
RjI0MDVBM0RGMDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNUHJveHkuaCAqLywKKwkJCQlDREU1
NTUxRTI0MDVBM0RGMDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNUHJveHkubWVzc2FnZXMuaW4g
Ki8sCisJCQkJQ0RFNTU0RjkyNDA1ODIwODAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETVNlc3Np
b25Qcm94eS5jcHAgKi8sCisJCQkJQ0RFNTU0RjgyNDA1ODIwODAwOEEzRERCIC8qIFJlbW90ZUxl
Z2FjeUNETVNlc3Npb25Qcm94eS5oICovLAorCQkJCUNERTU1NTAwMjQwNTgyODQwMDhBM0REQiAv
KiBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkubWVzc2FnZXMuaW4gKi8sCiAJCQkJMDcyNUVG
QUQyMzlCMDI0NTAwQTUzOEE5IC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcCAq
LywKIAkJCQkwNzI1RUZBQzIzOUFFMzg1MDBBNTM4QTkgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyUHJveHkuaCAqLywKIAkJCQkwNzI1RUZBQjIzOUFFMzg0MDBBNTM4QTkgLyogUmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4gKi8sCkBAIC05OTM1LDYgKzk5ODcsMTgg
QEAKIAkJCQlDREFDMjBGMDIzRkMzODM5MDAyMURFRTMgLyogUmVtb3RlQ0RNUHJveHlNZXNzYWdl
c1JlcGxpZXMuaCAqLywKIAkJCQkwRkYyNEEyQjE4NzlFNEJDMDAzQUJGMEMgLyogUmVtb3RlTGF5
ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJMEZGMjRB
MkMxODc5RTRCQzAwM0FCRjBDIC8qIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNz
YWdlcy5oICovLAorCQkJCUNERTU1NTI5MjQwNkI4OTYwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lD
RE1GYWN0b3J5UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAorCQkJCUNERTU1NTJEMjQwNkI4
OTcwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHlNZXNzYWdlcy5oICovLAor
CQkJCUNERTU1NTJDMjQwNkI4OTYwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJv
eHlNZXNzYWdlc1JlcGxpZXMuaCAqLywKKwkJCQlDREU1NTUyQTI0MDZCODk2MDA4QTNEREIgLyog
UmVtb3RlTGVnYWN5Q0RNUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAorCQkJCUNERTU1NTI4
MjQwNkI4OTYwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1Qcm94eU1lc3NhZ2VzLmggKi8sCisJ
CQkJQ0RFNTU1MkIyNDA2Qjg5NjAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETVByb3h5TWVzc2Fn
ZXNSZXBsaWVzLmggKi8sCisJCQkJQ0RFNTU1MkUyNDA2Qjg5NzAwOEEzRERCIC8qIFJlbW90ZUxl
Z2FjeUNETVNlc3Npb25NZXNzYWdlUmVjZWl2ZXIuY3BwICovLAorCQkJCUNERTU1NTI3MjQwNkI4
OTUwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uTWVzc2FnZXMuaCAqLywKKwkJCQlD
REU1NTUzMDI0MDZCODk3MDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbk1lc3NhZ2Vz
UmVwbGllcy5oICovLAorCQkJCUNERTU1NTMxMjQwNkI4OTcwMDhBM0REQiAvKiBSZW1vdGVMZWdh
Y3lDRE1TZXNzaW9uUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAorCQkJCUNERTU1NTJGMjQw
NkI4OTcwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHlNZXNzYWdlcy5oICov
LAorCQkJCUNERTU1NTI2MjQwNkI4OTUwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1TZXNzaW9u
UHJveHlNZXNzYWdlc1JlcGxpZXMuaCAqLywKIAkJCQkwNzkyMzE0MzIzOUNCQ0I2MDA5NTk4RTIg
LyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQkw
NzkyMzE0NzIzOUNCQ0I3MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyTWVzc2Fn
ZXMuaCAqLywKIAkJCQkwNzkyMzE0NDIzOUNCQ0I2MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyTWVzc2FnZXNSZXBsaWVzLmggKi8sCkBAIC0xMjYwMSw2ICsxMjY2NSwxMCBAQAog
CQkJCTJENzJBMUZBMjEyQkY0NkUwMDUxN0EyMCAvKiBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJl
YS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTBGRjI0QTJEMTg3OUU0QkMwMDNBQkYwQyAvKiBSZW1v
dGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTJEQzE4RkI0MjE4QTZFOUUwMDI1QTg4RCAvKiBSZW1vdGVMYXllclRyZWVWaWV3
cy5tbSBpbiBTb3VyY2VzICovLAorCQkJCUNERTU1NTMyMjQwNkVCOEMwMDhBM0REQiAvKiBSZW1v
dGVMZWdhY3lDRE1GYWN0b3J5UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJQ0RFNTU1MzMyNDA2RUI4QzAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETVByb3h5TWVz
c2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUNERTU1NTM0MjQwNkVCOEMwMDhB
M0REQiAvKiBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCUNERTU1NTM1MjQwNkVCOEMwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1T
ZXNzaW9uUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDc5MjMx
NDkyMzlDQkNCODAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlck1lc3NhZ2VSZWNl
aXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzkyMzE0QjIzOUNCQ0I4MDA5NTk4RTIgLyog
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMDcwMTc4OUUyM0JFOUNGQzAwNUYwRkFBIC8qIFJlbW90ZU1lZGlhUGxheWVy
TUlNRVR5cGVDYWNoZS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5jcHAKaW5kZXggZWY4MjQ5MzQy
NDU1NTExMjcwMzIzODY0NzliNzE3MWNkMjg1ZDJlNi4uMTg0NDE5YmUzYzI1MmNlMzYxOTM3OTkz
NmMxZDRjZjUzNzUzOWI2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRl
ICJNZWRpYVBsYXllclByaXZhdGVSZW1vdGVNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZUNE
TUZhY3RvcnkuaCIKICNpbmNsdWRlICJSZW1vdGVDRE1Qcm94eS5oIgorI2luY2x1ZGUgIlJlbW90
ZUxlZ2FjeUNETUZhY3RvcnkuaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIu
aCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1
ZGUgIlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1lc3NhZ2VzLmgiCkBAIC04Miw2ICs4MywxMSBA
QCBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyJiBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6
c2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTQogfQogI2VuZGlmCiAKK1JlbW90ZU1lZGlhUGxheWVy
TWFuYWdlciYgR1BVUHJvY2Vzc0Nvbm5lY3Rpb246Om1lZGlhUGxheWVyTWFuYWdlcigpCit7Cisg
ICAgcmV0dXJuICpXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zdXBwbGVtZW50PFJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlcj4oKTsKK30KKwogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiBSZW1v
dGVDRE1GYWN0b3J5JiBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6Y2RtRmFjdG9yeSgpCiB7CkBAIC04
OSw2ICs5NSwxMyBAQCBSZW1vdGVDRE1GYWN0b3J5JiBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6Y2Rt
RmFjdG9yeSgpCiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElB
KQorUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeSYgR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OmxlZ2FjeUNE
TUZhY3RvcnkoKQoreworICAgIHJldHVybiAqV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc3VwcGxl
bWVudDxSZW1vdGVMZWdhY3lDRE1GYWN0b3J5PigpOworfQorI2VuZGlmCisKIGJvb2wgR1BVUHJv
Y2Vzc0Nvbm5lY3Rpb246OmRpc3BhdGNoTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVj
ZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L0dQVVByb2Nlc3NDb25uZWN0aW9uLmgKaW5kZXggZjBjMzk1ODhiYzI0ZmJlNWQ0Nzc0ZjhiMGVh
OTJlYTE1MmY3M2I3MS4uMzRlYTFjNmE3Y2I0M2Q4ZDljYmMxZmZiYmU3NDhjMDYyZTcwZTYwZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVj
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5l
Y3Rpb24uaApAQCAtNDEsNiArNDEsOCBAQCBjbGFzcyBEYXRhUmVmZXJlbmNlOwogbmFtZXNwYWNl
IFdlYktpdCB7CiAKIGNsYXNzIFJlbW90ZUNETUZhY3Rvcnk7CitjbGFzcyBSZW1vdGVNZWRpYVBs
YXllck1hbmFnZXI7CitjbGFzcyBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5OwogCiBjbGFzcyBHUFVQ
cm9jZXNzQ29ubmVjdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPEdQVVByb2Nlc3NDb25uZWN0aW9u
PiwgSVBDOjpDb25uZWN0aW9uOjpDbGllbnQgewogcHVibGljOgpAQCAtNjEsMTAgKzYzLDE2IEBA
IHB1YmxpYzoKICAgICBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyJiBzYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyKCk7CiAjZW5kaWYKIAorICAgIFJlbW90ZU1lZGlhUGxheWVy
TWFuYWdlciYgbWVkaWFQbGF5ZXJNYW5hZ2VyKCk7CisKICNpZiBFTkFCTEUoRU5DUllQVEVEX01F
RElBKQogICAgIFJlbW90ZUNETUZhY3RvcnkmIGNkbUZhY3RvcnkoKTsKICNlbmRpZgogCisjaWYg
RU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCisgICAgUmVtb3RlTGVnYWN5Q0RNRmFjdG9y
eSYgbGVnYWN5Q0RNRmFjdG9yeSgpOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgR1BVUHJvY2Vz
c0Nvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1v
dGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclBy
aXZhdGVSZW1vdGUuY3BwCmluZGV4IDJmMTQwMTAzZjhhYzk0NzM3ZDk3YjYxZjI5Y2UyMGM2YmRj
MDdhNjYuLjg2ZjJiMWJkMGU4NGMwZTAyZGYyNzI1YjAzNDU5NTRlY2U5MTdmNmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKQEAgLTMwLDYgKzMwLDkgQEAKIAogI2luY2x1ZGUgIkF1
ZGlvVHJhY2tQcml2YXRlUmVtb3RlLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUg
IlJlbW90ZUxlZ2FjeUNETS5oIgorI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETUZhY3RvcnkuaCIK
KyNpbmNsdWRlICJSZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxh
eWVyUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKQEAgLTM4
LDYgKzQxLDggQEAKICNpbmNsdWRlICJWaWRlb1RyYWNrUHJpdmF0ZVJlbW90ZS5oIgogI2luY2x1
ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9HZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg+Cisj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvVHlwZWRBcnJheVR5cGUuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL01lZGlhUGxheWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1MYXllci5oPgpAQCAtNTMsNiArNTgsMTAgQEAKICNp
bmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZS5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTEVHQUNZ
X0VOQ1JZUFRFRF9NRURJQSkKKyNpbmNsdWRlIDxXZWJDb3JlL0xlZ2FjeUNETS5oPgorI2VuZGlm
CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKIGV4dGVy
biBXVEZMb2dDaGFubmVsIExvZ01lZGlhOwpAQCAtOTEwLDE1ICs5MTksMzggQEAgc3RkOjp1bmlx
dWVfcHRyPExlZ2FjeUNETVNlc3Npb24+IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y3JlYXRl
U2Vzc2lvbihjb25zdAogICAgIHJldHVybiBudWxscHRyOwogfQogCi12b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZTo6c2V0Q0RNU2Vzc2lvbihMZWdhY3lDRE1TZXNzaW9uKikKK3ZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRDRE0oTGVnYWN5Q0RNKiBjZG0pCiB7Ci0gICAgbm90
SW1wbGVtZW50ZWQoKTsKKyAgICBpZiAoIWNkbSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0
byByZW1vdGVDRE0gPSBtX21hbmFnZXIuZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5sZWdhY3lDRE1G
YWN0b3J5KCkuZmluZENETShjZG0tPmNkbVByaXZhdGUoKSk7CisgICAgaWYgKCFyZW1vdGVDRE0p
CisgICAgICAgIHJldHVybjsKKworICAgIHJlbW90ZUNETS0+c2V0UGxheWVySWQobV9pZCk7Cit9
CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRDRE1TZXNzaW9uKExlZ2FjeUNE
TVNlc3Npb24qIHNlc3Npb24pCit7CisgICAgaWYgKCFzZXNzaW9uIHx8IHNlc3Npb24tPnR5cGUo
KSAhPSBDRE1TZXNzaW9uVHlwZVJlbW90ZSkgeworICAgICAgICBjb25uZWN0aW9uKCkuc2VuZChN
ZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6U2V0TGVnYWN5Q0RNU2Vzc2lvbih7IH0p
LCBtX2lkKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gcmVtb3RlU2Vzc2lv
biA9IHN0YXRpY19jYXN0PFJlbW90ZUxlZ2FjeUNETVNlc3Npb24qPihzZXNzaW9uKTsKKyAgICBj
b25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6U2V0TGVn
YWN5Q0RNU2Vzc2lvbihyZW1vdGVTZXNzaW9uLT5pZGVudGlmaWVyKCkpLCBtX2lkKTsKIH0KIAog
dm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmtleUFkZGVkKCkKIHsKICAgICBjb25uZWN0
aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6S2V5QWRkZWQoKSwg
bV9pZCk7CiB9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjptZWRpYVBsYXllcktl
eU5lZWRlZChJUEM6OkRhdGFSZWZlcmVuY2UmJiBtZXNzYWdlKQoreworICAgIG1fcGxheWVyLT5r
ZXlOZWVkZWQoVWludDhBcnJheTo6Y3JlYXRlKG1lc3NhZ2UuZGF0YSgpLCBtZXNzYWdlLnNpemUo
KSkucHRyKCkpOworfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclBy
aXZhdGVSZW1vdGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlLmgKaW5kZXggNTBiNTk3ZDliNzkzNDRhZmQ0MWVkNmUzMmM1YTc4
OWQzOTAzM2UzYi4uNmM1NjZhODNkMmU0MWUxYjRhZTUyMzMyOWNhY2IxMzAyZDI2ZDY1NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclBy
aXZhdGVSZW1vdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oCkBAIC0zMDUsOCArMzA1LDEwIEBAIHByaXZhdGU6CiAK
ICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
V2ViQ29yZTo6TGVnYWN5Q0RNU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbihjb25zdCBTdHJpbmcmLCBX
ZWJDb3JlOjpMZWdhY3lDRE1TZXNzaW9uQ2xpZW50KikgZmluYWw7CisgICAgdm9pZCBzZXRDRE0o
V2ViQ29yZTo6TGVnYWN5Q0RNKikgZmluYWw7CiAgICAgdm9pZCBzZXRDRE1TZXNzaW9uKFdlYkNv
cmU6OkxlZ2FjeUNETVNlc3Npb24qKSBmaW5hbDsKICAgICB2b2lkIGtleUFkZGVkKCkgZmluYWw7
CisgICAgdm9pZCBtZWRpYVBsYXllcktleU5lZWRlZChJUEM6OkRhdGFSZWZlcmVuY2UmJik7CiAj
ZW5kaWYKIAogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluCmluZGV4IDk0NDhkZTAyZjFhYzllNDY0MzgzM2MyZDU1
Mzc1OWM5ODMwYjgxNTcuLmU3ZDg2YzdmNGMzZGNlOGIwYjk4ZWY2NjBhMTI2OGZkZDlhZTFjM2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluCkBAIC03OCw2
ICs3OCwxMCBAQCBtZXNzYWdlcyAtPiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGUgTm90UmVmQ291
bnRlZCB7CiAgICAgSW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQoU3RyaW5nIGluaXREYXRh
VHlwZSwgSVBDOjpEYXRhUmVmZXJlbmNlIGluaXREYXRhKQogI2VuZGlmCiAKKyNpZiBFTkFCTEUo
TEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKKyAgICBNZWRpYVBsYXllcktleU5lZWRlZChJUEM6OkRh
dGFSZWZlcmVuY2UgbWVzc2FnZSkKKyNlbmRpZgorCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlC
QUNLX1RBUkdFVCkKICAgICBDdXJyZW50UGxheWJhY2tUYXJnZXRJc1dpcmVsZXNzQ2hhbmdlZChi
b29sIGlzQ3VycmVudFBsYXliYWNrVGFyZ2V0V2lyZWxlc3MpCiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4yNDA2NjhlOWJiZWNiZTkwMmEyMTk3ZGExMWZkNjE0ODJjZWQ1YWFmCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVM
ZWdhY3lDRE0uY3BwCkBAIC0wLDAgKzEsODkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlTGVnYWN5Q0RNLmgiCisKKyNpZiBFTkFCTEUoR1BVX1BS
T0NFU1MpICYmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSAiUmVt
b3RlTGVnYWN5Q0RNRmFjdG9yeS5oIgorI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETVByb3h5TWVz
c2FnZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmgiCisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworc3RkOjp1bmlxdWVfcHRy
PFJlbW90ZUxlZ2FjeUNETT4gUmVtb3RlTGVnYWN5Q0RNOjpjcmVhdGUoV2Vha1B0cjxSZW1vdGVM
ZWdhY3lDRE1GYWN0b3J5PiYmIGZhY3RvcnksIFJlbW90ZUxlZ2FjeUNETUlkZW50aWZpZXIgaWQp
Cit7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMZWdhY3lDRE0+KG5ldyBSZW1v
dGVMZWdhY3lDRE0oV1RGTW92ZShmYWN0b3J5KSwgV1RGTW92ZShpZCkpKTsKK30KKworUmVtb3Rl
TGVnYWN5Q0RNOjpSZW1vdGVMZWdhY3lDRE0oV2Vha1B0cjxSZW1vdGVMZWdhY3lDRE1GYWN0b3J5
PiYmIGZhY3RvcnksIFJlbW90ZUxlZ2FjeUNETUlkZW50aWZpZXImJiBpZCkKKyAgICA6IG1fZmFj
dG9yeShXVEZNb3ZlKGZhY3RvcnkpKQorICAgICwgbV9pZGVudGlmaWVyKFdURk1vdmUoaWQpKQor
eworfQorCitSZW1vdGVMZWdhY3lDRE06On5SZW1vdGVMZWdhY3lDRE0oKSA9IGRlZmF1bHQ7CisK
K2Jvb2wgUmVtb3RlTGVnYWN5Q0RNOjpzdXBwb3J0c01JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUpCit7CisgICAgaWYgKCFtX2ZhY3RvcnkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIGJvb2wgc3VwcG9ydGVkID0gZmFsc2U7CisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29u
bmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlTGVnYWN5Q0RN
UHJveHk6OlN1cHBvcnRzTUlNRVR5cGUobWltZVR5cGUpLCBNZXNzYWdlczo6UmVtb3RlTGVnYWN5
Q0RNUHJveHk6OlN1cHBvcnRzTUlNRVR5cGU6OlJlcGx5KHN1cHBvcnRlZCksIG1faWRlbnRpZmll
cik7CisgICAgcmV0dXJuIHN1cHBvcnRlZDsKK30KKworc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6
OkxlZ2FjeUNETVNlc3Npb24+IFJlbW90ZUxlZ2FjeUNETTo6Y3JlYXRlU2Vzc2lvbihXZWJDb3Jl
OjpMZWdhY3lDRE1TZXNzaW9uQ2xpZW50KiBjbGllbnQpCit7CisgICAgaWYgKCFtX2ZhY3Rvcnkp
CisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgU3RyaW5nIHN0b3JhZ2VEaXJlY3Rvcnkg
PSBjbGllbnQgPyBjbGllbnQtPm1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSA6IGVtcHR5U3Ry
aW5nKCk7CisKKyAgICBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllciBpZDsKKyAgICBt
X2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1l
c3NhZ2VzOjpSZW1vdGVMZWdhY3lDRE1Qcm94eTo6Q3JlYXRlU2Vzc2lvbihzdG9yYWdlRGlyZWN0
b3J5KSwgTWVzc2FnZXM6OlJlbW90ZUxlZ2FjeUNETVByb3h5OjpDcmVhdGVTZXNzaW9uOjpSZXBs
eShpZCksIG1faWRlbnRpZmllcik7CisgICAgaWYgKCFpZCkKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgcmV0dXJuIFJlbW90ZUxlZ2FjeUNETVNlc3Npb246OmNyZWF0ZShtX2ZhY3Rvcnks
IFdURk1vdmUoaWQpKTsKK30KKwordm9pZCBSZW1vdGVMZWdhY3lDRE06OnNldFBsYXllcklkKE1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQpCit7CisgICAgaWYgKCFtX2ZhY3Rv
cnkpCisgICAgICAgIHJldHVybjsKKworICAgIE9wdGlvbmFsPE1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZUlkZW50aWZpZXI+IG9wdGlvbmFsSWQ7CisgICAgaWYgKGlkKQorICAgICAgICBvcHRpb25h
bElkID0gaWQ7CisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rp
b24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVMZWdhY3lDRE1Qcm94eTo6U2V0UGxheWVySWQob3B0
aW9uYWxJZCksIG1faWRlbnRpZmllcik7Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETS5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE0uaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5mNTRjZDNjYzQyOTQxNzE2NjE5ZjUwM2I2M2Y5NzNiMTFhMWUyMjQwCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lD
RE0uaApAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQorCisj
aW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllci5oIgorI2luY2x1ZGUg
IlJlbW90ZUxlZ2FjeUNETUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0xlZ2FjeUNE
TVByaXZhdGUuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CitjbGFzcyBTZXR0aW5nczsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFJl
bW90ZUxlZ2FjeUNETUZhY3Rvcnk7CitjbGFzcyBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uOworCisK
K2NsYXNzIFJlbW90ZUxlZ2FjeUNETSBmaW5hbAorICAgIDogcHVibGljIFdlYkNvcmU6OkNETVBy
aXZhdGVJbnRlcmZhY2UKKyAgICAsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxSZW1vdGVMZWdhY3lD
RE0+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxlZ2FjeUNE
TT4gY3JlYXRlKFdlYWtQdHI8UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeT4mJiwgUmVtb3RlTGVnYWN5
Q0RNSWRlbnRpZmllcik7CisgICAgdmlydHVhbCB+UmVtb3RlTGVnYWN5Q0RNKCk7CisKKyAgICBi
b29sIHN1cHBvcnRzTUlNRVR5cGUoY29uc3QgU3RyaW5nJikgZmluYWw7CisgICAgc3RkOjp1bmlx
dWVfcHRyPFdlYkNvcmU6OkxlZ2FjeUNETVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oV2ViQ29yZTo6
TGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCopIGZpbmFsOworICAgIHZvaWQgc2V0UGxheWVySWQoTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllcik7CisKK3ByaXZhdGU6CisgICAgUmVtb3Rl
TGVnYWN5Q0RNKFdlYWtQdHI8UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeT4mJiwgUmVtb3RlTGVnYWN5
Q0RNSWRlbnRpZmllciYmKTsKKworICAgIFdlYWtQdHI8UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeT4g
bV9mYWN0b3J5OworICAgIFJlbW90ZUxlZ2FjeUNETUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwor
fTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnkuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk4
ZmFhMzIyNzIzM2MwZjExZDA2NmU5YTgzN2FkOWNjNjg0OTE2YjYKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3Rv
cnkuY3BwCkBAIC0wLDAgKzEsMTU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETUZhY3RvcnkuaCIKKworI2lmIEVOQUJMRShHUFVf
UFJPQ0VTUykgJiYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRlICJH
UFVQcm9jZXNzQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZS5oIgorI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETS5oIgorI2luY2x1ZGUgIlJlbW90ZUxlZ2Fj
eUNETUZhY3RvcnlQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlTGVnYWN5Q0RNU2Vz
c2lvbi5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0xlZ2Fj
eUNETS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3MuaD4KKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitSZW1vdGVMZWdhY3lDRE1GYWN0b3J5
OjpSZW1vdGVMZWdhY3lDRE1GYWN0b3J5KFdlYlByb2Nlc3MmIHByb2Nlc3MpCisgICAgOiBtX3By
b2Nlc3MocHJvY2VzcykKK3sKK30KKworUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeTo6flJlbW90ZUxl
Z2FjeUNETUZhY3RvcnkoKSA9IGRlZmF1bHQ7CisKK3ZvaWQgUmVtb3RlTGVnYWN5Q0RNRmFjdG9y
eTo6cmVnaXN0ZXJGYWN0b3J5KCkKK3sKKyAgICBMZWdhY3lDRE06OmNsZWFyRmFjdG9yaWVzKCk7
CisgICAgTGVnYWN5Q0RNOjpyZWdpc3RlckNETUZhY3RvcnkoCisgICAgICAgIFt3ZWFrVGhpcyA9
IG1ha2VXZWFrUHRyKHRoaXMpXSAoTGVnYWN5Q0RNKiBwcml2YXRlQ0RNKSAtPiBzdGQ6OnVuaXF1
ZV9wdHI8V2ViQ29yZTo6Q0RNUHJpdmF0ZUludGVyZmFjZT4geworICAgICAgICAgICAgaWYgKHdl
YWtUaGlzKQorICAgICAgICAgICAgICAgIHJldHVybiB3ZWFrVGhpcy0+Y3JlYXRlQ0RNKHByaXZh
dGVDRE0pOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0sCisgICAgICAg
IFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXSAoY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0p
IHsKKyAgICAgICAgICAgIHJldHVybiB3ZWFrVGhpcyA/IHdlYWtUaGlzLT5zdXBwb3J0c0tleVN5
c3RlbShrZXlTeXN0ZW0pIDogZmFsc2U7CisgICAgICAgIH0sCisgICAgICAgIFt3ZWFrVGhpcyA9
IG1ha2VXZWFrUHRyKHRoaXMpXSAoY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUpIHsKKyAgICAgICAgICAgIHJldHVybiB3ZWFrVGhpcyA/IHdlYWtUaGlzLT5z
dXBwb3J0c0tleVN5c3RlbUFuZE1pbWVUeXBlKGtleVN5c3RlbSwgbWltZVR5cGUpIDogZmFsc2U7
CisgICAgICAgIH0KKyAgICApOworfQorCitjb25zdCBjaGFyKiBSZW1vdGVMZWdhY3lDRE1GYWN0
b3J5OjpzdXBwbGVtZW50TmFtZSgpCit7CisgICAgcmV0dXJuICJSZW1vdGVMZWdhY3lDRE1GYWN0
b3J5IjsKK30KKworR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIFJlbW90ZUxlZ2FjeUNETUZhY3Rvcnk6
OmdwdVByb2Nlc3NDb25uZWN0aW9uKCkKK3sKKyAgICByZXR1cm4gbV9wcm9jZXNzLmVuc3VyZUdQ
VVByb2Nlc3NDb25uZWN0aW9uKCk7Cit9CisKK2Jvb2wgUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeTo6
c3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pCit7CisgICAgYXV0byBm
b3VuZEluQ2FjaGUgPSBtX3N1cHBvcnRzS2V5U3lzdGVtQ2FjaGUuZmluZChrZXlTeXN0ZW0pOwor
ICAgIGlmIChmb3VuZEluQ2FjaGUgIT0gbV9zdXBwb3J0c0tleVN5c3RlbUNhY2hlLmVuZCgpKQor
ICAgICAgICByZXR1cm4gZm91bmRJbkNhY2hlLT52YWx1ZTsKKworICAgIGJvb2wgc3VwcG9ydGVk
ID0gZmFsc2U7CisgICAgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5
bmMoTWVzc2FnZXM6OlJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eTo6U3VwcG9ydHNLZXlTeXN0
ZW0oa2V5U3lzdGVtLCBXVEY6Om51bGxvcHQpLCBNZXNzYWdlczo6UmVtb3RlTGVnYWN5Q0RNRmFj
dG9yeVByb3h5OjpTdXBwb3J0c0tleVN5c3RlbTo6UmVwbHkoc3VwcG9ydGVkKSwgeyB9KTsKKyAg
ICBtX3N1cHBvcnRzS2V5U3lzdGVtQ2FjaGUuc2V0KGtleVN5c3RlbSwgc3VwcG9ydGVkKTsKKyAg
ICByZXR1cm4gc3VwcG9ydGVkOworfQorCitib29sIFJlbW90ZUxlZ2FjeUNETUZhY3Rvcnk6OnN1
cHBvcnRzS2V5U3lzdGVtQW5kTWltZVR5cGUoY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUpCit7CisgICAgYXV0byBrZXkgPSBzdGQ6Om1ha2VfcGFpcihrZXlT
eXN0ZW0sIG1pbWVUeXBlKTsKKyAgICBhdXRvIGZvdW5kSW5DYWNoZSA9IG1fc3VwcG9ydHNLZXlT
eXN0ZW1BbmRNaW1lVHlwZUNhY2hlLmZpbmQoa2V5KTsKKyAgICBpZiAoZm91bmRJbkNhY2hlICE9
IG1fc3VwcG9ydHNLZXlTeXN0ZW1BbmRNaW1lVHlwZUNhY2hlLmVuZCgpKQorICAgICAgICByZXR1
cm4gZm91bmRJbkNhY2hlLT52YWx1ZTsKKworICAgIGJvb2wgc3VwcG9ydGVkID0gZmFsc2U7Cisg
ICAgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6
OlJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eTo6U3VwcG9ydHNLZXlTeXN0ZW0oa2V5U3lzdGVt
LCBtaW1lVHlwZSksIE1lc3NhZ2VzOjpSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk6OlN1cHBv
cnRzS2V5U3lzdGVtOjpSZXBseShzdXBwb3J0ZWQpLCB7IH0pOworICAgIG1fc3VwcG9ydHNLZXlT
eXN0ZW1BbmRNaW1lVHlwZUNhY2hlLnNldChrZXksIHN1cHBvcnRlZCk7CisgICAgcmV0dXJuIHN1
cHBvcnRlZDsKK30KKworc3RkOjp1bmlxdWVfcHRyPENETVByaXZhdGVJbnRlcmZhY2U+IFJlbW90
ZUxlZ2FjeUNETUZhY3Rvcnk6OmNyZWF0ZUNETShXZWJDb3JlOjpMZWdhY3lDRE0qIGNkbSkKK3sK
KyAgICBpZiAoIWNkbSkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgT3B0aW9uYWw8TWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlSWRlbnRpZmllcj4gcGxheWVySWQ7CisgICAgaWYgKGF1dG8gcGxheWVyID0gY2RtLT5t
ZWRpYVBsYXllcigpKQorICAgICAgICBwbGF5ZXJJZCA9IGdwdVByb2Nlc3NDb25uZWN0aW9uKCku
bWVkaWFQbGF5ZXJNYW5hZ2VyKCkuZmluZFJlbW90ZVBsYXllcklkKHBsYXllci0+cGxheWVyUHJp
dmF0ZSgpKTsKKworICAgIFJlbW90ZUxlZ2FjeUNETUlkZW50aWZpZXIgaWQ7CisgICAgZ3B1UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUxl
Z2FjeUNETUZhY3RvcnlQcm94eTo6Q3JlYXRlQ0RNKGNkbS0+a2V5U3lzdGVtKCksIFdURk1vdmUo
cGxheWVySWQpKSwgTWVzc2FnZXM6OlJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eTo6Q3JlYXRl
Q0RNOjpSZXBseShpZCksIHsgfSk7CisgICAgaWYgKCFpZCkKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgYXV0byByZW1vdGVDRE0gPSBSZW1vdGVMZWdhY3lDRE06OmNyZWF0ZShtYWtlV2Vh
a1B0cih0aGlzKSwgaWQpOworICAgIG1fY2Rtcy5zZXQoaWQsIG1ha2VXZWFrUHRyKHJlbW90ZUNE
TS5nZXQoKSkpOworICAgIHJldHVybiByZW1vdGVDRE07Cit9CisKK3ZvaWQgUmVtb3RlTGVnYWN5
Q0RNRmFjdG9yeTo6YWRkU2Vzc2lvbihSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllciBp
ZCwgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxlZ2FjeUNETVNlc3Npb24+JiYgc2Vzc2lvbikKK3sK
KyAgICBBU1NFUlQoIW1fc2Vzc2lvbnMuY29udGFpbnMoaWQpKTsKKyAgICBtX3Nlc3Npb25zLnNl
dChpZCwgV1RGTW92ZShzZXNzaW9uKSk7Cit9CisKK3ZvaWQgUmVtb3RlTGVnYWN5Q0RNRmFjdG9y
eTo6cmVtb3ZlU2Vzc2lvbihSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllciBpZCkKK3sK
KyAgICBBU1NFUlQobV9zZXNzaW9ucy5jb250YWlucyhpZCkpOworICAgIG1fc2Vzc2lvbnMucmVt
b3ZlKGlkKTsKK30KKworUmVtb3RlTGVnYWN5Q0RNKiBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5Ojpm
aW5kQ0RNKENETVByaXZhdGVJbnRlcmZhY2UqIHByaXZhdGVJbnRlcmZhY2UpIGNvbnN0Cit7Cisg
ICAgZm9yIChhdXRvJiBjZG0gOiBtX2NkbXMudmFsdWVzKCkpIHsKKyAgICAgICAgaWYgKHByaXZh
dGVJbnRlcmZhY2UgPT0gY2RtLmdldCgpKQorICAgICAgICAgICAgcmV0dXJuIGNkbS5nZXQoKTsK
KyAgICB9CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3ZvaWQgUmVtb3RlTGVnYWN5Q0RNRmFj
dG9yeTo6ZGlkUmVjZWl2ZVNlc3Npb25NZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
biwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbV9z
ZXNzaW9ucy5nZXQobWFrZU9iamVjdElkZW50aWZpZXI8UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklk
ZW50aWZpZXJUeXBlPihkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSkpKQorICAgICAgICBzZXNzaW9u
LT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKK30KKworCit9CisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVMZWdhY3lDRE1GYWN0b3J5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUxlZ2FjeUNETUZhY3RvcnkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZGMwOWJmOTA0OTI2OTRmZmI0
OWYwODE4M2ZkNmIyZWExZjQ3MGRhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5LmgKQEAgLTAsMCArMSw5
NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNT
KSAmJiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgIlJlbW90ZUxl
Z2FjeUNETUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRl
bnRpZmllci5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3NTdXBwbGVtZW50LmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9MZWdhY3lDRE0uaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUg
PHd0Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFjZSBJUEMgeworY2xhc3MgQ29ubmVjdGlvbjsKK2Ns
YXNzIERlY29kZXI7Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFNldHRpbmdzOwor
fQorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBDRE1Qcml2YXRlSW50ZXJmYWNlOworY2xh
c3MgTGVnYWN5Q0RNOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgR1BVUHJvY2Vz
c0Nvbm5lY3Rpb247CitjbGFzcyBSZW1vdGVMZWdhY3lDRE07CitjbGFzcyBSZW1vdGVMZWdhY3lD
RE1TZXNzaW9uOworY2xhc3MgV2ViUHJvY2VzczsKKworCitjbGFzcyBSZW1vdGVMZWdhY3lDRE1G
YWN0b3J5IGZpbmFsCisgICAgOiBwdWJsaWMgV2ViUHJvY2Vzc1N1cHBsZW1lbnQKKyAgICAsIHB1
YmxpYyBDYW5NYWtlV2Vha1B0cjxSZW1vdGVMZWdhY3lDRE1GYWN0b3J5PiB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgZXhwbGljaXQgUmVtb3RlTGVnYWN5Q0RN
RmFjdG9yeShXZWJQcm9jZXNzJik7CisgICAgdmlydHVhbCB+UmVtb3RlTGVnYWN5Q0RNRmFjdG9y
eSgpOworCisgICAgdm9pZCByZWdpc3RlckZhY3RvcnkoKTsKKworICAgIHN0YXRpYyBjb25zdCBj
aGFyKiBzdXBwbGVtZW50TmFtZSgpOworICAgIFdlYlByb2Nlc3MmIHByb2Nlc3MoKSBjb25zdCB7
IHJldHVybiBtX3Byb2Nlc3M7IH0KKworICAgIEdQVVByb2Nlc3NDb25uZWN0aW9uJiBncHVQcm9j
ZXNzQ29ubmVjdGlvbigpOworCisgICAgdm9pZCBkaWRSZWNlaXZlU2Vzc2lvbk1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CisKKyAgICB2b2lkIGFkZFNlc3Npb24oUmVt
b3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMZWdh
Y3lDRE1TZXNzaW9uPiYmKTsKKyAgICB2b2lkIHJlbW92ZVNlc3Npb24oUmVtb3RlTGVnYWN5Q0RN
U2Vzc2lvbklkZW50aWZpZXIpOworCisgICAgUmVtb3RlTGVnYWN5Q0RNKiBmaW5kQ0RNKFdlYkNv
cmU6OkNETVByaXZhdGVJbnRlcmZhY2UqKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBib29sIHN1
cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYpOworICAgIGJvb2wgc3VwcG9ydHNLZXlTeXN0
ZW1BbmRNaW1lVHlwZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8V2ViQ29yZTo6Q0RNUHJpdmF0ZUludGVyZmFjZT4gY3JlYXRlQ0RNKFdlYkNvcmU6
OkxlZ2FjeUNETSopOworCisgICAgSGFzaE1hcDxSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRp
Zmllciwgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxlZ2FjeUNETVNlc3Npb24+PiBtX3Nlc3Npb25z
OworICAgIEhhc2hNYXA8UmVtb3RlTGVnYWN5Q0RNSWRlbnRpZmllciwgV2Vha1B0cjxSZW1vdGVM
ZWdhY3lDRE0+PiBtX2NkbXM7CisgICAgSGFzaE1hcDxTdHJpbmcsIGJvb2w+IG1fc3VwcG9ydHNL
ZXlTeXN0ZW1DYWNoZTsKKyAgICBIYXNoTWFwPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4sIGJv
b2w+IG1fc3VwcG9ydHNLZXlTeXN0ZW1BbmRNaW1lVHlwZUNhY2hlOworICAgIFdlYlByb2Nlc3Mm
IG1fcHJvY2VzczsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETUlkZW50aWZpZXIuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNSWRlbnRpZmllci5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjdmYjliN2EyZjBkNjJiMTlkYTk5YmMzNWFjY2RjNmExMDc3N2VmZWIKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUxlZ2FjeUNETUlkZW50aWZpZXIuaApAQCAtMCwwICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShMRUdBQ1lfRU5D
UllQVEVEX01FRElBKQorCisjaW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4KKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK2VudW0gUmVtb3RlTGVnYWN5Q0RNSWRlbnRpZmllclR5cGUgeyB9
OwordXNpbmcgUmVtb3RlTGVnYWN5Q0RNSWRlbnRpZmllciA9IE9iamVjdElkZW50aWZpZXI8UmVt
b3RlTGVnYWN5Q0RNSWRlbnRpZmllclR5cGU+OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUxlZ2FjeUNETVNlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MTg0MzgzMjg5Nzdk
YjdmZThlODMyM2JhODNhMjRjNWNjNzY0NjFkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmNwcApAQCAt
MCwwICsxLDE2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJSZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYm
IEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5j
ZS5oIgorI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETUZhY3RvcnkuaCIKKyNpbmNsdWRlICJSZW1v
dGVMZWdhY3lDRE1TZXNzaW9uUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9UeXBlZEFycmF5VHlwZS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CisKK3N0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IGNvbnZlcnRU
b0FycmF5QnVmZmVyKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYmIGJ1ZmZlcikKK3sK
KyAgICBpZiAoYnVmZmVyLmJ1ZmZlcigpKQorICAgICAgICByZXR1cm4gQXJyYXlCdWZmZXI6OmNy
ZWF0ZShidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICByZXR1cm4gbnVsbHB0cjsK
K30KKworc3RhdGljIFJlZlB0cjxVaW50OEFycmF5PiBjb252ZXJ0VG9VaW50OEFycmF5KElQQzo6
U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYmIGJ1ZmZlcikKK3sKKyAgICBhdXRvIGFycmF5QnVm
ZmVyID0gY29udmVydFRvQXJyYXlCdWZmZXIoV1RGTW92ZShidWZmZXIpKTsKKyAgICBpZiAoIWFy
cmF5QnVmZmVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHNpemVfdCBzaXplSW5C
eXRlcyA9IGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCk7CisgICAgcmV0dXJuIFVpbnQ4QXJyYXk6
OmNyZWF0ZShXVEZNb3ZlKGFycmF5QnVmZmVyKSwgMCwgc2l6ZUluQnl0ZXMpOworfQorCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KK3N0YXRpYyBPcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFS
ZWZlcmVuY2U+IGNvbnZlcnRUb09wdGlvbmFsRGF0YVJlZmVyZW5jZShUIGFycmF5KQoreworICAg
IGlmICghYXJyYXkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHsg
U2hhcmVkQnVmZmVyOjpjcmVhdGUoYXJyYXktPmRhdGEoKSwgYXJyYXktPmJ5dGVMZW5ndGgoKSkg
fTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdGF0aWMgSVBDOjpTaGFyZWRCdWZmZXJE
YXRhUmVmZXJlbmNlIGNvbnZlcnRUb0RhdGFSZWZlcmVuY2UoVCBhcnJheSkKK3sKKyAgICBpZiAo
IWFycmF5KQorICAgICAgICByZXR1cm4geyB9OworICAgIHJldHVybiB7IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGFycmF5LT5kYXRhKCksIGFycmF5LT5ieXRlTGVuZ3RoKCkpIH07Cit9CisKK3N0ZDo6
dW5pcXVlX3B0cjxSZW1vdGVMZWdhY3lDRE1TZXNzaW9uPiBSZW1vdGVMZWdhY3lDRE1TZXNzaW9u
OjpjcmVhdGUoV2Vha1B0cjxSZW1vdGVMZWdhY3lDRE1GYWN0b3J5PiBmYWN0b3J5LCBSZW1vdGVM
ZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllciYmIGlkKQoreworICAgIHJldHVybiBzdGQ6OnVuaXF1
ZV9wdHI8UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbj4obmV3IFJlbW90ZUxlZ2FjeUNETVNlc3Npb24o
V1RGTW92ZShmYWN0b3J5KSwgV1RGTW92ZShpZCkpKTsKK30KKworUmVtb3RlTGVnYWN5Q0RNU2Vz
c2lvbjo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbihXZWFrUHRyPFJlbW90ZUxlZ2FjeUNETUZhY3Rv
cnk+IGZhY3RvcnksIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyJiYgaWQpCisgICAg
OiBtX2ZhY3RvcnkoV1RGTW92ZShmYWN0b3J5KSkKKyAgICAsIG1faWRlbnRpZmllcihXVEZNb3Zl
KGlkKSkKK3sKK30KKworUmVmUHRyPFVpbnQ4QXJyYXk+IFJlbW90ZUxlZ2FjeUNETVNlc3Npb246
OmdlbmVyYXRlS2V5UmVxdWVzdChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBVaW50OEFycmF5KiBp
bml0RGF0YSwgU3RyaW5nJiBkZXN0aW5hdGlvblVSTCwgdW5zaWduZWQgc2hvcnQmIGVycm9yQ29k
ZSwgdWludDMyX3QmIHN5c3RlbUNvZGUpCit7CisgICAgaWYgKCFtX2ZhY3RvcnkgfHwgIWluaXRE
YXRhKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8gaXBjSW5pdERhdGEgPSBj
b252ZXJ0VG9EYXRhUmVmZXJlbmNlKGluaXREYXRhKTsKKyAgICBPcHRpb25hbDxJUEM6OlNoYXJl
ZEJ1ZmZlckRhdGFSZWZlcmVuY2U+IGlwY05leHRNZXNzYWdlOworICAgIG1fZmFjdG9yeS0+Z3B1
UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90
ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6R2VuZXJhdGVLZXlSZXF1ZXN0KG1pbWVUeXBlLCBpcGNJ
bml0RGF0YSksIE1lc3NhZ2VzOjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OkdlbmVyYXRl
S2V5UmVxdWVzdDo6UmVwbHkoaXBjTmV4dE1lc3NhZ2UsIGRlc3RpbmF0aW9uVVJMLCBlcnJvckNv
ZGUsIHN5c3RlbUNvZGUpLCBtX2lkZW50aWZpZXIpOworCisgICAgaWYgKCFpcGNOZXh0TWVzc2Fn
ZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gY29udmVydFRvVWludDhB
cnJheShXVEZNb3ZlKCppcGNOZXh0TWVzc2FnZSkpOworfQorCit2b2lkIFJlbW90ZUxlZ2FjeUNE
TVNlc3Npb246OnJlbGVhc2VLZXlzKCkKK3sKKyAgICBpZiAoIW1fZmFjdG9yeSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rp
b24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OlJlbGVhc2VL
ZXlzKCksIG1faWRlbnRpZmllcik7CisgICAgbV9jYWNoZWRLZXlDYWNoZS5jbGVhcigpOworfQor
Citib29sIFJlbW90ZUxlZ2FjeUNETVNlc3Npb246OnVwZGF0ZShVaW50OEFycmF5KiBrZXlEYXRh
LCBSZWZQdHI8VWludDhBcnJheT4mIG5leHRNZXNzYWdlLCB1bnNpZ25lZCBzaG9ydCYgZXJyb3JD
b2RlLCB1aW50MzJfdCYgc3lzdGVtQ29kZSkKK3sKKyAgICBpZiAoIW1fZmFjdG9yeSB8fCAha2V5
RGF0YSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0byBpcGNLZXlEYXRhID0gY29u
dmVydFRvRGF0YVJlZmVyZW5jZShXVEZNb3ZlKGtleURhdGEpKTsKKyAgICBib29sIHN1Y2NlZWRl
ZCB7IGZhbHNlIH07CisgICAgT3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNl
PiBpcGNOZXh0TWVzc2FnZTsKKyAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCku
Y29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJv
eHk6OlVwZGF0ZShpcGNLZXlEYXRhKSwgTWVzc2FnZXM6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Q
cm94eTo6VXBkYXRlOjpSZXBseShzdWNjZWVkZWQsIGlwY05leHRNZXNzYWdlLCBlcnJvckNvZGUs
IHN5c3RlbUNvZGUpLCBtX2lkZW50aWZpZXIpOworCisgICAgaWYgKGlwY05leHRNZXNzYWdlKQor
ICAgICAgICBuZXh0TWVzc2FnZSA9IGNvbnZlcnRUb1VpbnQ4QXJyYXkoV1RGTW92ZSgqaXBjTmV4
dE1lc3NhZ2UpKTsKKworICAgIHJldHVybiBmYWxzZTsKK30KKworUmVmUHRyPEFycmF5QnVmZmVy
PiBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uOjpjYWNoZWRLZXlGb3JLZXlJRChjb25zdCBTdHJpbmcm
IGtleUlkKSBjb25zdAoreworICAgIGlmICghbV9mYWN0b3J5KQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKworICAgIGF1dG8gZm91bmRJbkNhY2hlID0gbV9jYWNoZWRLZXlDYWNoZS5maW5kKGtl
eUlkKTsKKyAgICBpZiAoZm91bmRJbkNhY2hlICE9IG1fY2FjaGVkS2V5Q2FjaGUuZW5kKCkpCisg
ICAgICAgIHJldHVybiBmb3VuZEluQ2FjaGUtPnZhbHVlOworCisgICAgT3B0aW9uYWw8SVBDOjpT
aGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlPiBpcGNLZXk7CisgICAgbV9mYWN0b3J5LT5ncHVQcm9j
ZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlTGVn
YWN5Q0RNU2Vzc2lvblByb3h5OjpDYWNoZWRLZXlGb3JLZXlJRChrZXlJZCksIE1lc3NhZ2VzOjpS
ZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OkNhY2hlZEtleUZvcktleUlEOjpSZXBseShpcGNL
ZXkpLCBtX2lkZW50aWZpZXIpOworCisgICAgaWYgKCFpcGNLZXkpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworCisgICAgYXV0byBpcGNLZXlCdWZmZXIgPSBjb252ZXJ0VG9BcnJheUJ1ZmZlcihX
VEZNb3ZlKCppcGNLZXkpKTsKKyAgICBtX2NhY2hlZEtleUNhY2hlLnNldChrZXlJZCwgaXBjS2V5
QnVmZmVyKTsKKyAgICByZXR1cm4gaXBjS2V5QnVmZmVyOworfQorCit2b2lkIFJlbW90ZUxlZ2Fj
eUNETVNlc3Npb246OnNlbmRNZXNzYWdlKE9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0YVJl
ZmVyZW5jZT4mJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uVVJMKQoreworICAg
IGlmICghbV9jbGllbnQpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghbWVzc2FnZSkgewor
ICAgICAgICBtX2NsaWVudC0+c2VuZE1lc3NhZ2UobnVsbHB0ciwgZGVzdGluYXRpb25VUkwpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9jbGllbnQtPnNlbmRNZXNzYWdlKGNvbnZl
cnRUb1VpbnQ4QXJyYXkoV1RGTW92ZSgqbWVzc2FnZSkpLmdldCgpLCBkZXN0aW5hdGlvblVSTCk7
Cit9CisKK3ZvaWQgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbjo6c2VuZEVycm9yKFdlYkNvcmU6Okxl
Z2FjeUNETVNlc3Npb25DbGllbnQ6Ok1lZGlhS2V5RXJyb3JDb2RlIGVycm9yQ29kZSwgdWludDMy
X3Qgc3lzdGVtQ29kZSkKK3sKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5z
ZW5kRXJyb3IoZXJyb3JDb2RlLCBzeXN0ZW1Db2RlKTsKK30KKworfQorCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RN
U2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdh
Y3lDRE1TZXNzaW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzhhOTcxOWViNmIyY2YwNjYwNDY3ZDA3MjY4ODI0
ODdlNTJkYjJmYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5oCkBAIC0wLDAgKzEsNzkgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxF
KExFR0FDWV9FTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIK
KyNpbmNsdWRlICJSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllci5oIgorI2luY2x1ZGUg
PFdlYkNvcmUvTGVnYWN5Q0RNU2Vzc2lvbi5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisK
K25hbWVzcGFjZSBJUEMgeworY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZTsKK30KKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFJlbW90ZUxlZ2FjeUNETUZhY3Rvcnk7CisKK2Ns
YXNzIFJlbW90ZUxlZ2FjeUNETVNlc3Npb24gZmluYWwKKyAgICA6IHB1YmxpYyBXZWJDb3JlOjpM
ZWdhY3lDRE1TZXNzaW9uCisgICAgLCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworcHVi
bGljOgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbj4g
Y3JlYXRlKFdlYWtQdHI8UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeT4sIFJlbW90ZUxlZ2FjeUNETVNl
c3Npb25JZGVudGlmaWVyJiYpOworCisgICAgLy8gTWVzc2FnZVJlY2VpdmVyCisgICAgdm9pZCBk
aWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsK
KworICAgIGNvbnN0IFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyJiBpZGVudGlmaWVy
KCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CisKK3ByaXZhdGU6CisgICAgUmVtb3Rl
TGVnYWN5Q0RNU2Vzc2lvbihXZWFrUHRyPFJlbW90ZUxlZ2FjeUNETUZhY3Rvcnk+LCBSZW1vdGVM
ZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllciYmKTsKKworICAgIC8vIExlZ2FjeUNETVNlc3Npb24K
KyAgICBXZWJDb3JlOjpMZWdhY3lDRE1TZXNzaW9uVHlwZSB0eXBlKCkgZmluYWwgeyByZXR1cm4g
V2ViQ29yZTo6Q0RNU2Vzc2lvblR5cGVSZW1vdGU7IH0KKyAgICB2b2lkIHNldENsaWVudChXZWJD
b3JlOjpMZWdhY3lDRE1TZXNzaW9uQ2xpZW50KiBjbGllbnQpIGZpbmFsIHsgbV9jbGllbnQgPSBj
bGllbnQ7IH0KKyAgICBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1fc2Vzc2lvbklkOyB9CisgICAgUmVmUHRyPFVpbnQ4QXJyYXk+IGdlbmVyYXRlS2V5UmVx
dWVzdChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBVaW50OEFycmF5KiBpbml0RGF0YSwgU3RyaW5n
JiBkZXN0aW5hdGlvblVSTCwgdW5zaWduZWQgc2hvcnQmIGVycm9yQ29kZSwgdWludDMyX3QmIHN5
c3RlbUNvZGUpIGZpbmFsOworICAgIHZvaWQgcmVsZWFzZUtleXMoKSBmaW5hbDsKKyAgICBib29s
IHVwZGF0ZShVaW50OEFycmF5KiwgUmVmUHRyPFVpbnQ4QXJyYXk+JiBuZXh0TWVzc2FnZSwgdW5z
aWduZWQgc2hvcnQmIGVycm9yQ29kZSwgdWludDMyX3QmIHN5c3RlbUNvZGUpIGZpbmFsOworICAg
IFJlZlB0cjxBcnJheUJ1ZmZlcj4gY2FjaGVkS2V5Rm9yS2V5SUQoY29uc3QgU3RyaW5nJikgY29u
c3QgZmluYWw7CisKKyAgICAvLyBNZXNzYWdlcworICAgIHZvaWQgc2VuZE1lc3NhZ2UoT3B0aW9u
YWw8SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlPiYmIG1lc3NhZ2UsIGNvbnN0IFN0cmlu
ZyYgZGVzdGluYXRpb25VUkwpOworICAgIHZvaWQgc2VuZEVycm9yKFdlYkNvcmU6OkxlZ2FjeUNE
TVNlc3Npb25DbGllbnQ6Ok1lZGlhS2V5RXJyb3JDb2RlLCB1aW50MzJfdCBzeXN0ZW1Db2RlKTsK
KworICAgIFdlYWtQdHI8UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeT4gbV9mYWN0b3J5OworICAgIFJl
bW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyIG1faWRlbnRpZmllcjsKKyAgICBXZWJDb3Jl
OjpMZWdhY3lDRE1TZXNzaW9uQ2xpZW50KiBtX2NsaWVudDsKKyAgICBTdHJpbmcgbV9zZXNzaW9u
SWQ7CisgICAgbXV0YWJsZSBIYXNoTWFwPFN0cmluZywgUmVmUHRyPEFycmF5QnVmZmVyPj4gbV9j
YWNoZWRLZXlDYWNoZTsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24ubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNl
c3Npb24ubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODQ3YWY2MDQwMWY5MWUzNDEwYzJmZTRkNGU0
NDcxNTI2MTNhMTI4NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5tZXNzYWdlcy5pbgpAQCAtMCwwICsx
LDMxIEBACisjIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaWYgRU5BQkxF
KEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKKworbWVzc2Fn
ZXMgLT4gUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbiBOb3RSZWZDb3VudGVkIHsKKyAgICBTZW5kTWVz
c2FnZShPcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U+IG1lc3NhZ2UsIFN0
cmluZyBkZXN0aW5hdGlvblVSTCkKKyAgICBTZW5kRXJyb3IoZW51bTp1aW50OF90IFdlYkNvcmU6
OkxlZ2FjeUNETVNlc3Npb25DbGllbnQ6Ok1lZGlhS2V5RXJyb3JDb2RlIGVycm9yQ29kZSwgdWlu
dDMyX3Qgc3lzdGVtQ29kZSkKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Np
b25JZGVudGlmaWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGYwOGFkYTgzMTRmZGJkM2ZmOGM3ZWI3MDQ3OTRl
MTg1YmUxOWYyMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXIuaApAQCAtMCwwICsxLDM5
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1Mp
ICYmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSA8d3RmL09iamVj
dElkZW50aWZpZXIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2VudW0gUmVtb3RlTGVnYWN5
Q0RNU2Vzc2lvbklkZW50aWZpZXJUeXBlIHsgfTsKK3VzaW5nIFJlbW90ZUxlZ2FjeUNETVNlc3Np
b25JZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRl
bnRpZmllclR5cGU+OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVy
TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlci5jcHAKaW5kZXggZTlmZjI0ZDE2NzYxMGExYmY3ZjEzNjg1NmZmZmM3
MTRhZTE2NDFjNy4uODc2NTIxZDhjMDYxZDFmNDJkNTY2MDQxMzljMGQ4NjRjMjYwOTBjNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBs
YXllck1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmNwcApAQCAtMTgzLDYgKzE4MywxNyBAQCB2b2lkIFJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6ZGVsZXRlUmVtb3RlTWVkaWFQbGF5ZXIoTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlSQogICAgIGdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigp
LnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpEZWxldGVNZWRp
YVBsYXllcihpZCksIDApOwogfQogCitNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVy
IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6ZmluZFJlbW90ZVBsYXllcklkKGNvbnN0IE1lZGlh
UGxheWVyUHJpdmF0ZUludGVyZmFjZSogcGxheWVyKQoreworICAgIGZvciAoYXV0byBwYWlyIDog
bV9wbGF5ZXJzKSB7CisgICAgICAgIGlmIChwYWlyLnZhbHVlID09IHBsYXllcikKKyAgICAgICAg
ICAgIHJldHVybiBwYWlyLmtleTsKKyAgICB9CisKKyAgICByZXR1cm4geyB9OworfQorCisKIHZv
aWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpnZXRTdXBwb3J0ZWRUeXBlcyhNZWRpYVBsYXll
ckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgcmVtb3RlRW5naW5lSWRlbnRpZmllciwgSGFz
aFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHJlc3VsdCkKIHsKICAgICBh
dXRvJiBjYWNoZSA9IHR5cGVDYWNoZShyZW1vdGVFbmdpbmVJZGVudGlmaWVyKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlh
UGxheWVyTWFuYWdlci5oCmluZGV4IDMyMGVjMzAxODlkNmZjNTYyZjJhZWJmZjUxYzkwZjc0ZWRm
OGRhMDEuLmJlZWNiMzdlZmY3OGQ5OWU4YmNmOGU5NDNjM2QyMTYwZTk3NDlhYTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXIuaApAQCAtNjksNiArNjksOCBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IGRlbGV0ZVJlbW90ZU1lZGlhUGxheWVyKE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZp
ZXIpOwogCisgICAgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBmaW5kUmVtb3Rl
UGxheWVySWQoY29uc3QgV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlKik7CisK
IHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZUludGVyZmFjZT4gY3JlYXRlUmVtb3RlTWVkaWFQbGF5ZXIoV2ViQ29yZTo6TWVkaWFQbGF5ZXIq
LCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDMyZmMy
NDViZTZlMjYwMDNmNmNhY2ZhZTBlMGY4NWUwODQwOWVlOGUuLjIwNjEwMDVhYmJjYWIwYmVhNzcz
ZWE3YzU3NmM2ZmUzM2YwZDFmMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCkBAIC0zMjYsNiArMzI2LDkgQEAKICNpZiBFTkFCTEUoRU5DUllQVEVE
X01FRElBKQogI2luY2x1ZGUgIlJlbW90ZUNETUZhY3RvcnkuaCIKICNlbmRpZgorI2lmIEVOQUJM
RShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQorI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETUZhY3Rv
cnkuaCIKKyNlbmRpZgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJLaXQgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IGRkMTJkMDE5ZGQxY2E0N2Y1N2UzNmE1NGIy
NzdhMGYyOGQ4MDZjNTEuLjMwM2I2NmY4YTViODQ2YTM0ZTc5ODdiZjJhODMwM2Q1MjRmODg1NzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTQzLDYgKzQzLDcg
QEAKICNpbmNsdWRlICJOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1
ZGUgIlBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5oIgogI2luY2x1ZGUgIlJlbW90ZUF1
ZGlvU2Vzc2lvbi5oIgorI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETUZhY3RvcnkuaCIKICNpbmNs
dWRlICJTdGF0aXN0aWNzRGF0YS5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBcmVhTWFwLmgiCiAjaW5j
bHVkZSAiVXNlckRhdGEuaCIKQEAgLTIwMjUsNiArMjAyNiwxMyBAQCB2b2lkIFdlYlByb2Nlc3M6
OnNldFVzZUdQVVByb2Nlc3NGb3JNZWRpYShib29sIHVzZUdQVVByb2Nlc3NGb3JNZWRpYSkKICAg
ICBlbHNlCiAgICAgICAgIE1lZGlhU2Vzc2lvbkhlbHBlcjo6cmVzZXRTaGFyZWRIZWxwZXIoKTsK
ICNlbmRpZgorCisjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCisgICAgaWYgKHVz
ZUdQVVByb2Nlc3NGb3JNZWRpYSkKKyAgICAgICAgZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24o
KS5sZWdhY3lDRE1GYWN0b3J5KCkucmVnaXN0ZXJGYWN0b3J5KCk7CisgICAgZWxzZQorICAgICAg
ICBMZWdhY3lDRE06OnJlc2V0RmFjdG9yaWVzKCk7CisjZW5kaWYKIH0KICNlbmRpZgogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392970</attachid>
            <date>2020-03-08 12:21:21 -0700</date>
            <delta_ts>2020-03-08 12:25:32 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-208402-20200308122120.patch</filename>
            <type>text/plain</type>
            <size>121063</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4MTA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGE4OGZkNjVlZGIwOTA1NTY1
NTkwMGZkZGQxOTFiNmMyOGI3MjU5Y2UuLmY2ZTNmOGQyNTRmYzgzOTA4OWY5YjkxOTcwNDU1ZGQx
ODEyMjM0M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTM0IEBACisyMDIwLTAyLTI4ICBKZXIgTm9i
bGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFVQXSBJbXBsZW1lbnQgTGVn
YWN5IEVNRSBBUEkgaW4gdGhlIEdQVSBQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg0MDIKKworICAgICAgICBSZXZpZXdlZCBieSBFcmlj
IENhcmxzb24uCisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIFJlbW90ZUxlZ2FjeUNETUZhY3Rv
cnksIFJlbWF0ZUxlZ2FjeUNETSxSZW1vdGVMZWdhY3lDRE1TZXNzaW9uLCBhbmQgYWxsCisgICAg
ICAgIG9mIHRoZWlyIGFzc29jaWF0ZWQgUHJveHkgb2JqZWN0cy4KKworICAgICAgICAqIERlcml2
ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtb3V0
cHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAg
KiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpsZWdhY3lDZG1GYWN0b3J5UHJveHkpOgor
ICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaXNwYXRjaE1lc3Nh
Z2UpOgorICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaXNwYXRj
aFN5bmNNZXNzYWdlKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3Rv
cnlQcm94eS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1GYWN0
b3J5UHJveHk6OlJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eSk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eTo6Y3JlYXRlQ0RNKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5OjpzdXBwb3J0c0tleVN5c3RlbSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eTo6ZGlkUmVjZWl2ZUNETU1l
c3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk6OmRp
ZFJlY2VpdmVDRE1TZXNzaW9uTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2Fj
eUNETUZhY3RvcnlQcm94eTo6ZGlkUmVjZWl2ZVN5bmNDRE1NZXNzYWdlKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5OjpkaWRSZWNlaXZlU3luY0NETVNlc3Np
b25NZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5
OjphZGRQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94
eTo6cmVtb3ZlUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1GYWN0b3J5
UHJveHk6OmFkZFNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1GYWN0
b3J5UHJveHk6OnJlbW92ZVNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lD
RE1GYWN0b3J5UHJveHk6OmdldFNlc3Npb24gY29uc3QpOgorICAgICAgICAqIEdQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5Lmg6IEFkZGVkLgorICAgICAgICAqIEdQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5Lm1lc3NhZ2VzLmluOiBB
ZGRlZC4KKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5LmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETVByb3h5OjpjcmVhdGUp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1Qcm94eTo6UmVtb3RlTGVnYWN5Q0RN
UHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1Qcm94eTo6c3VwcG9ydHNN
SU1FVHlwZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETVByb3h5OjpjcmVhdGVT
ZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNUHJveHk6OnNldFBsYXll
cklkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNUHJveHk6OmNkbU1lZGlhUGxh
eWVyIGNvbnN0KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVBy
b3h5Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1Qcm94eTo6ZmFj
dG9yeSBjb25zdCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Q
cm94eS5tZXNzYWdlcy5pbjogQWRkZWQuCisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eSk6Cisg
ICAgICAgIChXZWJLaXQ6OmNvbnZlcnRUb1VpbnQ4QXJyYXkpOgorICAgICAgICAoV2ViS2l0Ojpj
b252ZXJ0VG9PcHRpb25hbERhdGFSZWZlcmVuY2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVM
ZWdhY3lDRE1TZXNzaW9uUHJveHk6OmdlbmVyYXRlS2V5UmVxdWVzdCk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6cmVsZWFzZUtleXMpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OnVwZGF0ZSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6Z2V0Q2FjaGVkS2V5Rm9yS2V5SWQp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OmNhY2hlZEtl
eUZvcktleUlEKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5
OjpzZW5kTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Q
cm94eTo6c2VuZEVycm9yKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lv
blByb3h5OjptZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5IGNvbnN0KToKKyAgICAgICAgKiBHUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpmYWN0b3J5IGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpzZXNzaW9uIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpzZXRQ
bGF5ZXIpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lv
blByb3h5Lm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OmdldFByb3h5KToKKyAgICAgICAgKiBHUFVQcm9jZXNz
L21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lmg6CisgICAgICAgICogR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJDYWNoZWRLZXlGb3JLZXlJZCBjb25z
dCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVy
S2V5TmVlZGVkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6c2V0
TGVnYWN5Q0RNU2Vzc2lvbik6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRp
YVBsYXllclByb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBs
YXllclByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
VGV4dFRyYWNrUHJveHkuY3BwOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVGV4
dFRyYWNrUHJveHkuaDoKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAg
ICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkdQVVByb2Nlc3NDb25uZWN0aW9uOjptZWRpYVBsYXllck1h
bmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpHUFVQcm9jZXNzQ29ubmVjdGlvbjo6bGVnYWN5Q0RN
RmFjdG9yeSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24u
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1v
dGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldENE
TSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0Q0RNU2Vz
c2lvbik6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bWVkaWFQ
bGF5ZXJLZXlOZWVkZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVMZWdhY3lDRE0uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlTGVnYWN5Q0RNOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE06
OlJlbW90ZUxlZ2FjeUNETSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETTo6c3Vw
cG9ydHNNSU1FVHlwZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETTo6Y3JlYXRl
U2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETTo6c2V0UGxheWVySWQp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETS5oOiBBZGRl
ZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETUZhY3Rvcnk6OlJl
bW90ZUxlZ2FjeUNETUZhY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1G
YWN0b3J5OjpyZWdpc3RlckZhY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lD
RE1GYWN0b3J5OjpzdXBwbGVtZW50TmFtZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2Fj
eUNETUZhY3Rvcnk6OmdwdVByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlTGVnYWN5Q0RNRmFjdG9yeTo6c3VwcG9ydHNLZXlTeXN0ZW0pOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVMZWdhY3lDRE1GYWN0b3J5OjpzdXBwb3J0c0tleVN5c3RlbUFuZE1pbWVUeXBlKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeTo6Y3JlYXRlQ0RNKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeTo6YWRkU2Vzc2lvbik6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETUZhY3Rvcnk6OnJlbW92ZVNlc3Npb24pOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1GYWN0b3J5OjpmaW5kQ0RNIGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeTo6ZGlkUmVjZWl2ZVNlc3Npb25N
ZXNzYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1G
YWN0b3J5Lmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxl
Z2FjeUNETUlkZW50aWZpZXIuaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0Ojpj
b252ZXJ0VG9BcnJheUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OmNvbnZlcnRUb1VpbnQ4QXJy
YXkpOgorICAgICAgICAoV2ViS2l0Ojpjb252ZXJ0VG9PcHRpb25hbERhdGFSZWZlcmVuY2UpOgor
ICAgICAgICAoV2ViS2l0Ojpjb252ZXJ0VG9EYXRhUmVmZXJlbmNlKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlTGVnYWN5Q0RNU2Vzc2lvbjo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbik6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb246OmdlbmVyYXRlS2V5UmVxdWVzdCk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb246OnJlbGVhc2VLZXlzKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbjo6dXBkYXRlKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbjo6Y2FjaGVkS2V5Rm9yS2V5SUQgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uOjpzZW5kTWVzc2FnZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb246OnNlbmRFcnJvcik6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5oOiBBZGRl
ZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9u
Lm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllci5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OmZpbmRSZW1vdGVQbGF5ZXJJZCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvV2ViTWVkaWFTdHJhdGVneS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYk1lZGlhU3RyYXRlZ3k6OnJlZ2lzdGVyTGVnYWN5Q0RNRmFjdG9yaWVz
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlByb2Nlc3MuY3BwOgorCiAyMDIwLTAzLTA2ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBw
bGUuY29tPgogCiAgICAgICAgIFtHUFVQXSBNb3ZlIEFWU3lzdGVtQ29udHJvbGxlciBjb2RlIGlu
dG8gdGhlIEdQVSBwcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3Vy
Y2VzLWlucHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0
LnhjZmlsZWxpc3QKaW5kZXggZWUwNDBiMTJhYzIwN2ZjMjM0ZjM1MzU4NjEzMmYyMmFiOTU2YjI5
My4uNmNmNjJhNmMyZWQ4ZTg2NWVhYzJkNzRjMmU4ZWYxMTA4OGE2ZmU5NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJj
ZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtMjQsNiArMjQsOSBA
QCAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94eS5t
ZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0
YW5jZVByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5Lm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElS
KS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5tZXNzYWdlcy5p
bgorJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5t
ZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lD
RE1TZXNzaW9uUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9E
SVIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5tZXNzYWdlcy5pbgog
JChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdl
ci5tZXNzYWdlcy5pbgpAQCAtMTIxLDYgKzEyNCw3IEBAICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nl
c3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5pbgogJChQUk9K
RUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5
Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVB
dWRpb1Nlc3Npb24ubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5tZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJUikv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5tZXNzYWdlcy5pbgog
JChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9tZWRpYS9UZXh0
VHJhY2tQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyLm1lc3NhZ2VzLmluCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIv
U291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRleCAwYjg1
NzM2NDgxZTA3NTVmODZkOTI1ZTMwNjJlNWRjM2UyMzY4MzRjLi45MDkzYTgyYzliMWQ1MjUwOTU5
NDY4NTBhOGQ2ZjgwYmQzNTEyZDVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRT
b3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJj
ZXMtb3V0cHV0LnhjZmlsZWxpc3QKQEAgLTE2NCw2ICsxNjQsMTggQEAgJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQ0RNUHJveHlNZXNzYWdlc1JlcGxp
ZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3Rl
TGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKICQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhUHJveHlNZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViS2l0Mi9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXNSZXBsaWVzLmgK
KyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUxlZ2Fj
eUNETUZhY3RvcnlQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eU1lc3Nh
Z2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90
ZUxlZ2FjeUNETUZhY3RvcnlQcm94eU1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVMZWdhY3lDRE1Qcm94eU1lc3NhZ2VS
ZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQy
L1JlbW90ZUxlZ2FjeUNETVByb3h5TWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTGVnYWN5Q0RNUHJveHlNZXNzYWdlc1JlcGxpZXMu
aAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTGVn
YWN5Q0RNU2Vzc2lvbk1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25NZXNzYWdlcy5oCisk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVMZWdhY3lD
RE1TZXNzaW9uTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQyL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eU1lc3NhZ2VSZWNlaXZl
ci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90
ZUxlZ2FjeUNETVNlc3Npb25Qcm94eU1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eU1lc3NhZ2Vz
UmVwbGllcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9S
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJN
ZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9S
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJNZXNzYWdlc1JlcGxpZXMuaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291
cmNlcy5tYWtlCmluZGV4IGNiNzE1MmZhMzE0Njk1MjUxMDE4ZmFlYTA1YWYxMDYzNmUwYjQ3N2Eu
LmViYTBmZjFiN2M2ODI0ZjE3YjczZTYwNzhhNzUyYTJkNWI4NGJjZjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2
ZWRTb3VyY2VzLm1ha2UKQEAgLTE2MCw2ICsxNjAsMTAgQEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBc
CiAgICAgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eSBcCiAgICAgUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uIFwKICAgICBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eSBcCisgICAgUmVtb3RlTGVn
YWN5Q0RNUHJveHkgXAorICAgIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eSBcCisgICAgUmVt
b3RlTGVnYWN5Q0RNU2Vzc2lvbiBcCisgICAgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5IFwK
ICAgICBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIgXAogICAgIFJlbW90ZU1lZGlhUGxheWVyTWFu
YWdlclByb3h5IFwKICAgICBSZW1vdGVNZWRpYVBsYXllclByb3h5IFwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRl
eCBkZjU2NzgxZTZlNWU3ZjM2NmM2ODM3ODk4ZGMwMTlkZDhmZWQ0MzA4Li4xYzZiMDBlYmVmNjlm
ZmE0YjU2YWNkYjgyNjcxNTQzOGE0NDRiMDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC04Nyw2ICs4Nywx
MyBAQAogI2luY2x1ZGUgIlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5LmgiCiAjZW5kaWYK
IAorI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQorI2luY2x1ZGUgIlJlbW90ZUxl
Z2FjeUNETUZhY3RvcnlQcm94eS5oIgorI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQ
cm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlTGVnYWN5Q0RNUHJveHlNZXNzYWdlcy5o
IgorI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eU1lc3NhZ2VzLmgiCisjZW5k
aWYKKwogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAt
MzAwLDExICszMDcsMjEgQEAgUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHkmIEdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6Om1lZGlhU2Vzc2lvbkhlbHBlclByb3gKICAgICAgICAgbV9tZWRp
YVNlc3Npb25IZWxwZXJQcm94eSA9IG1ha2VVbmlxdWU8UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVy
UHJveHk+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fbWVkaWFTZXNzaW9uSGVscGVyUHJveHk7CiB9
CisjZW5kaWYKIAogdm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjplbnN1cmVNZWRpYVNl
c3Npb25IZWxwZXIoKQogewogICAgIG1lZGlhU2Vzc2lvbkhlbHBlclByb3h5KCk7CiB9CisKKyNp
ZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKK1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQ
cm94eSYgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6bGVnYWN5Q2RtRmFjdG9yeVByb3h5KCkK
K3sKKyAgICBpZiAoIW1fbGVnYWN5Q2RtRmFjdG9yeVByb3h5KQorICAgICAgICBtX2xlZ2FjeUNk
bUZhY3RvcnlQcm94eSA9IG1ha2VVbmlxdWU8UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5Pigq
dGhpcyk7CisKKyAgICByZXR1cm4gKm1fbGVnYWN5Q2RtRmFjdG9yeVByb3h5OworfQogI2VuZGlm
CiAKIGJvb2wgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlzcGF0Y2hNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQpAQCAtMzkwLDYg
KzQwNywxMiBAQCBib29sIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpc3BhdGNoTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQwogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CiAjZW5kaWYKKyNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKKyAgICBp
ZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlJlbW90ZUxlZ2Fj
eUNETUZhY3RvcnlQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIGxlZ2Fj
eUNkbUZhY3RvcnlQcm94eSgpLmRpZFJlY2VpdmVNZXNzYWdlRnJvbVdlYlByb2Nlc3MoY29ubmVj
dGlvbiwgZGVjb2Rlcik7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyNlbmRpZgogCiAg
ICAgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck1hcCgpLmRpc3BhdGNoTWVzc2FnZShjb25uZWN0aW9u
LCBkZWNvZGVyKTsKIH0KQEAgLTQ0Nyw2ICs0NzAsMTIgQEAgYm9vbCBHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpkaXNwYXRjaFN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
biwKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogI2VuZGlmCisjaWYgRU5BQkxFKExFR0FD
WV9FTkNSWVBURURfTUVESUEpCisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgp
ID09IE1lc3NhZ2VzOjpSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk6Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSkgeworICAgICAgICBsZWdhY3lDZG1GYWN0b3J5UHJveHkoKS5kaWRSZWNlaXZlU3lu
Y01lc3NhZ2VGcm9tV2ViUHJvY2Vzcyhjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIp
OworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisjZW5kaWYKIAogICAgIHJldHVybiBtZXNz
YWdlUmVjZWl2ZXJNYXAoKS5kaXNwYXRjaFN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIs
IHJlcGx5RW5jb2Rlcik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCAzNjhiMGJmNjZiYjg1YTllNGNhZmEyY2I1
YTgyZTY3MmNjYzA1NzRiLi4yZWM4Y2Q1NmQyYzMxNjY1ZWFjY2RlYjllMTgyNjU3OGE4MTVhNWE4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmgKQEAgLTQ4LDYgKzQ4LDcgQEAgY2xhc3MgUmVtb3RlQXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXJNYW5hZ2VyOwogY2xhc3MgUmVtb3RlQXVkaW9TZXNzaW9uUHJveHk7CiBj
bGFzcyBSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFnZXI7CiBjbGFzcyBSZW1vdGVDRE1GYWN0
b3J5UHJveHk7CitjbGFzcyBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk7CiBjbGFzcyBSZW1v
dGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTsKIGNsYXNzIFJlbW90ZU1lZGlhUmVjb3JkZXJNYW5h
Z2VyOwogY2xhc3MgUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI7CkBAIC05MCw4ICs5MSwxMiBA
QCBwdWJsaWM6CiAjZW5kaWYKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFJlbW90ZU1l
ZGlhU2Vzc2lvbkhlbHBlclByb3h5JiBtZWRpYVNlc3Npb25IZWxwZXJQcm94eSgpOworI2VuZGlm
CisjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCisgICAgUmVtb3RlTGVnYWN5Q0RN
RmFjdG9yeVByb3h5JiBsZWdhY3lDZG1GYWN0b3J5UHJveHkoKTsKICNlbmRpZgogICAgIFJlbW90
ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5JiByZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSgp
OworCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBVU0UoQVVESU9fU0VTU0lPTikKICAgICBS
ZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFnZXImIGF1ZGlvU2Vzc2lvbk1hbmFnZXIoKTsKICNl
bmRpZgpAQCAtMTc3LDYgKzE4Miw5IEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHk+IG1f
bWVkaWFTZXNzaW9uSGVscGVyUHJveHk7CiAjZW5kaWYKKyNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZ
UFRFRF9NRURJQSkKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVBy
b3h5PiBtX2xlZ2FjeUNkbUZhY3RvcnlQcm94eTsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAxMmZlNGQ5
YmVlNDY0YTU4Njc2YjIwNzVhN2Q2NzkxNzhiZGMwYWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5LmNw
cApAQCAtMCwwICsxLDE0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkuaCIKKworI2lmIEVOQUJMRShHUFVf
UFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgIlJlbW90ZUxl
Z2FjeUNETVByb3h5LmgiCisjaW5jbHVkZSAiUmVtb3RlTGVnYWN5Q0RNUHJveHlNZXNzYWdlcy5o
IgorI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5oIgorI2luY2x1ZGUgIlJl
bW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9M
ZWdhY3lDRE0uaD4KKyNpbmNsdWRlIDx3dGYvQWxnb3JpdGhtcy5oPgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK1JlbW90ZUxlZ2FjeUNETUZhY3Rv
cnlQcm94eTo6UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5KEdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MmIGNvbm5lY3Rpb24pCisgICAgOiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoY29u
bmVjdGlvbikKK3sKK30KKworUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5Ojp+UmVtb3RlTGVn
YWN5Q0RNRmFjdG9yeVByb3h5KCkgPSBkZWZhdWx0OworCit2b2lkIFJlbW90ZUxlZ2FjeUNETUZh
Y3RvcnlQcm94eTo6Y3JlYXRlQ0RNKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBPcHRpb25hbDxN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyPiYmIG9wdGlvbmFsUGxheWVySWQsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlTGVnYWN5Q0RNSWRlbnRpZmllciYmKT4mJiBjb21w
bGV0aW9uKQoreworICAgIGF1dG8gcHJpdmF0ZUNETSA9IExlZ2FjeUNETTo6Y3JlYXRlKGtleVN5
c3RlbSk7CisgICAgaWYgKCFwcml2YXRlQ0RNKSB7CisgICAgICAgIGNvbXBsZXRpb24oeyB9KTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlk
ZW50aWZpZXIgcGxheWVySWQ7CisgICAgaWYgKG9wdGlvbmFsUGxheWVySWQpCisgICAgICAgIHBs
YXllcklkID0gV1RGTW92ZShvcHRpb25hbFBsYXllcklkLnZhbHVlKCkpOworCisgICAgYXV0byBw
cm94eSA9IFJlbW90ZUxlZ2FjeUNETVByb3h5OjpjcmVhdGUobWFrZVdlYWtQdHIodGhpcyksIFdU
Rk1vdmUocGxheWVySWQpLCBXVEZNb3ZlKHByaXZhdGVDRE0pKTsKKyAgICBhdXRvIGlkZW50aWZp
ZXIgPSBSZW1vdGVMZWdhY3lDRE1JZGVudGlmaWVyOjpnZW5lcmF0ZSgpOworICAgIGFkZFByb3h5
KGlkZW50aWZpZXIsIFdURk1vdmUocHJveHkpKTsKKyAgICBjb21wbGV0aW9uKFdURk1vdmUoaWRl
bnRpZmllcikpOworfQorCit2b2lkIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eTo6c3VwcG9y
dHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIE9wdGlvbmFsPFN0cmluZz4gbWlt
ZVR5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbikKK3sKKyAg
ICBpZiAobWltZVR5cGUpCisgICAgICAgIGNvbXBsZXRpb24oTGVnYWN5Q0RNOjprZXlTeXN0ZW1T
dXBwb3J0c01pbWVUeXBlKGtleVN5c3RlbSwgKm1pbWVUeXBlKSk7CisgICAgZWxzZQorICAgICAg
ICBjb21wbGV0aW9uKExlZ2FjeUNETTo6c3VwcG9ydHNLZXlTeXN0ZW0oa2V5U3lzdGVtKSk7Cit9
CisKK3ZvaWQgUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5OjpkaWRSZWNlaXZlQ0RNTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3sK
KyAgICBpZiAoYXV0byogcHJveHkgPSBtX3Byb3hpZXMuZ2V0KG1ha2VPYmplY3RJZGVudGlmaWVy
PFJlbW90ZUxlZ2FjeUNETUlkZW50aWZpZXJUeXBlPihkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSkp
KQorICAgICAgICBwcm94eS0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7
Cit9CisKK3ZvaWQgUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5OjpkaWRSZWNlaXZlQ0RNU2Vz
c2lvbk1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRl
Y29kZXIpCit7CisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBtX3Nlc3Npb25zLmdldChtYWtlT2Jq
ZWN0SWRlbnRpZmllcjxSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllclR5cGU+KGRlY29k
ZXIuZGVzdGluYXRpb25JRCgpKSkpCisgICAgICAgIHNlc3Npb24tPmRpZFJlY2VpdmVNZXNzYWdl
KGNvbm5lY3Rpb24sIGRlY29kZXIpOworfQorCit2b2lkIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQ
cm94eTo6ZGlkUmVjZWl2ZVN5bmNDRE1NZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
biwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYg
ZW5jb2RlcikKK3sKKyAgICBpZiAoYXV0byogcHJveHkgPSBtX3Byb3hpZXMuZ2V0KG1ha2VPYmpl
Y3RJZGVudGlmaWVyPFJlbW90ZUxlZ2FjeUNETUlkZW50aWZpZXJUeXBlPihkZWNvZGVyLmRlc3Rp
bmF0aW9uSUQoKSkpKQorICAgICAgICBwcm94eS0+ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKGNvbm5l
Y3Rpb24sIGRlY29kZXIsIGVuY29kZXIpOworfQorCit2b2lkIFJlbW90ZUxlZ2FjeUNETUZhY3Rv
cnlQcm94eTo6ZGlkUmVjZWl2ZVN5bmNDRE1TZXNzaW9uTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
IGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rlciwgc3RkOjp1bmlxdWVfcHRyPElQQzo6
RW5jb2Rlcj4mIGVuY29kZXIpCit7CisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBtX3Nlc3Npb25z
LmdldChtYWtlT2JqZWN0SWRlbnRpZmllcjxSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmll
clR5cGU+KGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkpCisgICAgICAgIHNlc3Npb24tPmRpZFJl
Y2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCBlbmNvZGVyKTsKK30KKwordm9p
ZCBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk6OmFkZFByb3h5KFJlbW90ZUxlZ2FjeUNETUlk
ZW50aWZpZXIgaWQsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMZWdhY3lDRE1Qcm94eT4mJiBwcm94
eSkKK3sKKyAgICBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkubWVzc2FnZVJlY2VpdmVyTWFw
KCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVMZWdhY3lDRE1Qcm94eTo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpLCBpZC50b1VJbnQ2NCgpLCAqcHJveHkpOworCisgICAgQVNTRVJU
KCFtX3Byb3hpZXMuY29udGFpbnMoaWQpKTsKKyAgICBtX3Byb3hpZXMuc2V0KGlkLCBXVEZNb3Zl
KHByb3h5KSk7Cit9CisKK3ZvaWQgUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5OjpyZW1vdmVQ
cm94eShSZW1vdGVMZWdhY3lDRE1JZGVudGlmaWVyIGlkKQoreworICAgIGdwdUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MoKS5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIo
TWVzc2FnZXM6OlJlbW90ZUxlZ2FjeUNETVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIGlk
LnRvVUludDY0KCkpOworCisgICAgQVNTRVJUKG1fcHJveGllcy5jb250YWlucyhpZCkpOworICAg
IG1fcHJveGllcy5yZW1vdmUoaWQpOworfQorCit2b2lkIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQ
cm94eTo6YWRkU2Vzc2lvbihSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllciBpZCwgc3Rk
Ojp1bmlxdWVfcHRyPFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eT4mJiBzZXNzaW9uKQorewor
ICAgIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKS5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5hZGRN
ZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpLCBpZC50b1VJbnQ2NCgpLCAqc2Vzc2lvbik7CisKKyAgICBBU1NF
UlQoIW1fc2Vzc2lvbnMuY29udGFpbnMoaWQpKTsKKyAgICBtX3Nlc3Npb25zLnNldChpZCwgV1RG
TW92ZShzZXNzaW9uKSk7Cit9CisKK3ZvaWQgUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5Ojpy
ZW1vdmVTZXNzaW9uKFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyIGlkKQoreworICAg
IGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKS5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5yZW1vdmVN
ZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpLCBpZC50b1VJbnQ2NCgpKTsKKworICAgIEFTU0VSVChtX3Nlc3Np
b25zLmNvbnRhaW5zKGlkKSk7CisgICAgbV9zZXNzaW9ucy5yZW1vdmUoaWQpOworfQorCitSZW1v
dGVMZWdhY3lDRE1TZXNzaW9uUHJveHkqIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eTo6Z2V0
U2Vzc2lvbihjb25zdCBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllciYgaWQpIGNvbnN0
Cit7CisgICAgYXV0byByZXN1bHRzID0gbV9zZXNzaW9ucy5maW5kKGlkKTsKKyAgICBpZiAocmVz
dWx0cyAhPSBtX3Nlc3Npb25zLmVuZCgpKQorICAgICAgICByZXR1cm4gcmVzdWx0cy0+dmFsdWUu
Z2V0KCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKKworfQorCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1G
YWN0b3J5UHJveHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MzU1Mzg0ODg2NTk5ODFkOGY4ODNiNGNhMWVjY2Fj
MjM1YTM5ZmVkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5oCkBAIC0wLDAgKzEsODQgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxF
KExFR0FDWV9FTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5j
bHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIk1l
c3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETUlkZW50aWZpZXIuaCIK
KyNpbmNsdWRlICJSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllci5oIgorI2luY2x1ZGUg
PHd0Zi9VbmlxdWVSZWYuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworY2xhc3MgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzczsKK2NsYXNzIFJlbW90
ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTsKK2NsYXNzIFJlbW90ZUxlZ2FjeUNETVByb3h5Oworc3Ry
dWN0IFJlbW90ZUxlZ2FjeUNETUNvbmZpZ3VyYXRpb247CisKK2NsYXNzIFJlbW90ZUxlZ2FjeUNE
TUZhY3RvcnlQcm94eSBmaW5hbCA6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHB1Ymxp
YyBDYW5NYWtlV2Vha1B0cjxSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk+IHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5
UHJveHkoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYpOworICAgIHZpcnR1YWwgflJlbW90ZUxl
Z2FjeUNETUZhY3RvcnlQcm94eSgpOworCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZUZyb21X
ZWJQcm9jZXNzKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNv
ZGVyKSB7IGRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOyB9CisgICAgdm9p
ZCBkaWRSZWNlaXZlU3luY01lc3NhZ2VGcm9tV2ViUHJvY2VzcyhJUEM6OkNvbm5lY3Rpb24mIGNv
bm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rlciwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5j
b2Rlcj4mIGVuY29kZXIpIHsgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29k
ZXIsIGVuY29kZXIpOyB9CisgICAgdm9pZCBkaWRSZWNlaXZlQ0RNTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mLCBJUEM6OkRlY29kZXImKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVDRE1TZXNzaW9uTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKKyAgICB2b2lkIGRpZFJlY2Vp
dmVTeW5jQ0RNTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVu
aXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpOworICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNDRE1TZXNz
aW9uTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9w
dHI8SVBDOjpFbmNvZGVyPiYpOworCisgICAgdm9pZCBhZGRQcm94eShSZW1vdGVMZWdhY3lDRE1J
ZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGVnYWN5Q0RNUHJveHk+JiYpOworICAg
IHZvaWQgcmVtb3ZlUHJveHkoUmVtb3RlTGVnYWN5Q0RNSWRlbnRpZmllcik7CisKKyAgICB2b2lk
IGFkZFNlc3Npb24oUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXIsIHN0ZDo6dW5pcXVl
X3B0cjxSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk+JiYpOworICAgIHZvaWQgcmVtb3ZlU2Vz
c2lvbihSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllcik7CisgICAgUmVtb3RlTGVnYWN5
Q0RNU2Vzc2lvblByb3h5KiBnZXRTZXNzaW9uKGNvbnN0IFJlbW90ZUxlZ2FjeUNETVNlc3Npb25J
ZGVudGlmaWVyJikgY29uc3Q7CisKKyAgICBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzKCkgY29uc3QgeyByZXR1cm4gbV9ncHVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOyB9CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIEdQVVByb2Nlc3NDb25u
ZWN0aW9uOworICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCisgICAgdm9pZCBkaWRSZWNlaXZl
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbCB7IH0KKyAgICB2
b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXIm
LCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOworCisgICAgLy8gTWVzc2Fn
ZXMKKyAgICB2b2lkIGNyZWF0ZUNETShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgT3B0aW9uYWw8
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllcj4mJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChSZW1vdGVMZWdhY3lDRE1JZGVudGlmaWVyJiYpPiYmKTsKKyAgICB2b2lkIHN1cHBvcnRz
S2V5U3lzdGVtKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBPcHRpb25hbDxTdHJpbmc+IG1pbWVU
eXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKworICAgIEdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MmIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzczsKKyAgICBIYXNoTWFw
PFJlbW90ZUxlZ2FjeUNETUlkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMZWdhY3lD
RE1Qcm94eT4+IG1fcHJveGllczsKKyAgICBIYXNoTWFwPFJlbW90ZUxlZ2FjeUNETVNlc3Npb25J
ZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5Pj4g
bV9zZXNzaW9uczsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5Lm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQ
cm94eS5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMDc0NGZiZmQ0ZDAyYzFmOWMzZDc5YTAwZjUw
NDlmOTE1M2I3ZjQ5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5tZXNzYWdlcy5pbgpAQCAtMCwwICsx
LDMxIEBACisjIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaWYgRU5BQkxF
KEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKKworbWVzc2Fn
ZXMgLT4gUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5IE5vdFJlZkNvdW50ZWQgeworICAgIENy
ZWF0ZUNETShTdHJpbmcga2V5U3lzdGVtLCBPcHRpb25hbDxXZWJLaXQ6Ok1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZUlkZW50aWZpZXI+IHBsYXllcklkKSAtPiAoV2ViS2l0OjpSZW1vdGVMZWdhY3lD
RE1JZGVudGlmaWVyIGlkKSBTeW5jaHJvbm91cworICAgIFN1cHBvcnRzS2V5U3lzdGVtKFN0cmlu
ZyBrZXlTeXN0ZW0sIE9wdGlvbmFsPFN0cmluZz4gbWltZVR5cGUpIC0+IChib29sIHJlc3VsdCkg
U3luY2hyb25vdXMKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZDE3YTg5
MWFhYjExZWRlNmRiZWQ3YzBmZDAyZDI4NTI3MWU4MzYxCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5LmNwcApAQCAt
MCwwICsxLDk4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IlJlbW90ZUxlZ2FjeUNETVByb3h5LmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVO
QUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lmgi
CisjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oIgorCituYW1lc3BhY2UgV2ViS2l0
IHsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK3N0ZDo6dW5pcXVlX3B0cjxSZW1vdGVM
ZWdhY3lDRE1Qcm94eT4gUmVtb3RlTGVnYWN5Q0RNUHJveHk6OmNyZWF0ZShXZWFrUHRyPFJlbW90
ZUxlZ2FjeUNETUZhY3RvcnlQcm94eT4gZmFjdG9yeSwgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
SWRlbnRpZmllciYmIHBsYXllcklkLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6TGVnYWN5Q0RN
PiYmIGNkbSkKK3sKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxlZ2FjeUNETVBy
b3h5PihuZXcgUmVtb3RlTGVnYWN5Q0RNUHJveHkoV1RGTW92ZShmYWN0b3J5KSwgV1RGTW92ZShw
bGF5ZXJJZCksIFdURk1vdmUoY2RtKSkpOworfQorCitSZW1vdGVMZWdhY3lDRE1Qcm94eTo6UmVt
b3RlTGVnYWN5Q0RNUHJveHkoV2Vha1B0cjxSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk+JiYg
ZmFjdG9yeSwgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciYmIHBsYXllcklkLCBz
dGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6TGVnYWN5Q0RNPiYmIGNkbSkKKyAgICA6IG1fZmFjdG9y
eShXVEZNb3ZlKGZhY3RvcnkpKQorICAgICwgbV9wbGF5ZXJJZChXVEZNb3ZlKHBsYXllcklkKSkK
KyAgICAsIG1fY2RtKFdURk1vdmUoY2RtKSkKK3sKKyAgICBtX2NkbS0+c2V0Q2xpZW50KHRoaXMp
OworfQorCitSZW1vdGVMZWdhY3lDRE1Qcm94eTo6flJlbW90ZUxlZ2FjeUNETVByb3h5KCkgPSBk
ZWZhdWx0OworCit2b2lkIFJlbW90ZUxlZ2FjeUNETVByb3h5OjpzdXBwb3J0c01JTUVUeXBlKGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIFN1cHBvcnRzTUlNRVR5cGVDYWxsYmFjayYmIGNhbGxiYWNr
KQoreworICAgIGlmICghbV9jZG0pIHsKKyAgICAgICAgY2FsbGJhY2soZmFsc2UpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgY2FsbGJhY2sobV9jZG0tPnN1cHBvcnRzTUlNRVR5cGUo
bWltZVR5cGUpKTsKK30KKwordm9pZCBSZW1vdGVMZWdhY3lDRE1Qcm94eTo6Y3JlYXRlU2Vzc2lv
bihjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgQ3JlYXRlU2Vzc2lvbkNhbGxiYWNrJiYgY2FsbGJh
Y2spCit7CisgICAgaWYgKCFtX2NkbSB8fCAhbV9mYWN0b3J5KSB7CisgICAgICAgIGNhbGxiYWNr
KHsgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBS
ZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKKyAgICBhdXRvIHNl
c3Npb24gPSBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OmNyZWF0ZShtYWtlV2Vha1B0ciht
X2ZhY3RvcnkuZ2V0KCkpLCBpZGVudGlmaWVyLCAqbV9jZG0pOworICAgIG1fZmFjdG9yeS0+YWRk
U2Vzc2lvbihpZGVudGlmaWVyLCBXVEZNb3ZlKHNlc3Npb24pKTsKKyAgICBjYWxsYmFjayhXVEZN
b3ZlKGlkZW50aWZpZXIpKTsKK30KKwordm9pZCBSZW1vdGVMZWdhY3lDRE1Qcm94eTo6c2V0UGxh
eWVySWQoT3B0aW9uYWw8TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllcj4mJiBwbGF5
ZXJJZCkKK3sKKyAgICBpZiAoIXBsYXllcklkKQorICAgICAgICBtX3BsYXllcklkID0geyB9Owor
ICAgIG1fcGxheWVySWQgPSBXVEZNb3ZlKCpwbGF5ZXJJZCk7Cit9CisKK1JlZlB0cjxNZWRpYVBs
YXllcj4gUmVtb3RlTGVnYWN5Q0RNUHJveHk6OmNkbU1lZGlhUGxheWVyKGNvbnN0IExlZ2FjeUNE
TSopIGNvbnN0Cit7CisgICAgaWYgKCFtX3BsYXllcklkIHx8ICFtX2ZhY3RvcnkpCisgICAgICAg
IHJldHVybiBudWxscHRyOworCisgICAgYXV0byBwcm94eSA9IG1fZmFjdG9yeS0+Z3B1Q29ubmVj
dGlvblRvV2ViUHJvY2VzcygpLnJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5KCkuZ2V0UHJv
eHkobV9wbGF5ZXJJZCk7CisgICAgaWYgKCFwcm94eSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisKKyAgICByZXR1cm4gcHJveHktPm1lZGlhUGxheWVyKCk7Cit9CisKK30KKworI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RN
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Q
cm94eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjJiNmQxN2E5YTQ1NzFlMzQ4ODRjZmY4Y2E5YmVlYzMzMzFmODIw
NmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTGVnYWN5Q0RNUHJveHkuaApAQCAtMCwwICsxLDgzIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShMRUdBQ1lfRU5DUllQ
VEVEX01FRElBKQorCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiUmVt
b3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5LmgiCisjaW5jbHVkZSAiUmVtb3RlTGVnYWN5Q0RNSWRl
bnRpZmllci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvTGVnYWN5Q0RNLmg+CisjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CisjaW5jbHVkZSA8d3RmL1dl
YWtQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgU2hhcmVkQnVmZmVyOworfQor
CituYW1lc3BhY2UgSVBDIHsKK2NsYXNzIERhdGFSZWZlcmVuY2U7Cit9CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitjbGFzcyBSZW1vdGVMZWdhY3lDRE1Qcm94eQorICAgIDogcHJpdmF0ZSBJUEM6
Ok1lc3NhZ2VSZWNlaXZlcgorICAgICwgcHVibGljIFdlYkNvcmU6OkxlZ2FjeUNETUNsaWVudAor
ICAgICwgcHVibGljIENhbk1ha2VXZWFrUHRyPFJlbW90ZUxlZ2FjeUNETVByb3h5PiB7CitwdWJs
aWM6CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMZWdhY3lDRE1Qcm94eT4gY3Jl
YXRlKFdlYWtQdHI8UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5PiwgTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlSWRlbnRpZmllciYmLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6TGVnYWN5Q0RN
PiYmKTsKKyAgICB+UmVtb3RlTGVnYWN5Q0RNUHJveHkoKTsKKworICAgIFJlbW90ZUxlZ2FjeUNE
TUZhY3RvcnlQcm94eSogZmFjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fZmFjdG9yeS5nZXQoKTsg
fQorCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJv
eHk7CisgICAgUmVtb3RlTGVnYWN5Q0RNUHJveHkoV2Vha1B0cjxSZW1vdGVMZWdhY3lDRE1GYWN0
b3J5UHJveHk+JiYsIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXImJiwgc3RkOjp1
bmlxdWVfcHRyPFdlYkNvcmU6OkxlZ2FjeUNETT4mJik7CisKKyAgICAvLyBJUEM6Ok1lc3NhZ2VS
ZWNlaXZlcgorICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBD
OjpEZWNvZGVyJikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4m
KSBmaW5hbDsKKworICAgIC8vIE1lc3NhZ2VzCisgICAgdXNpbmcgU3VwcG9ydHNNSU1FVHlwZUNh
bGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT47CisgICAgdm9pZCBzdXBwb3J0
c01JTUVUeXBlKGNvbnN0IFN0cmluZyYsIFN1cHBvcnRzTUlNRVR5cGVDYWxsYmFjayYmKTsKKyAg
ICB1c2luZyBDcmVhdGVTZXNzaW9uQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJl
bW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyJiYpPjsKKyAgICB2b2lkIGNyZWF0ZVNlc3Np
b24oY29uc3QgU3RyaW5nJiwgQ3JlYXRlU2Vzc2lvbkNhbGxiYWNrJiYpOworICAgIHZvaWQgc2V0
UGxheWVySWQoT3B0aW9uYWw8TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllcj4mJik7
CisKKyAgICAvLyBMZWdhY3lDRE1DbGllbnQKKyAgICBSZWZQdHI8V2ViQ29yZTo6TWVkaWFQbGF5
ZXI+IGNkbU1lZGlhUGxheWVyKGNvbnN0IFdlYkNvcmU6OkxlZ2FjeUNETSopIGNvbnN0IGZpbmFs
OworCisgICAgV2Vha1B0cjxSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk+IG1fZmFjdG9yeTsK
KyAgICBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIG1fcGxheWVySWQ7CisgICAg
c3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkxlZ2FjeUNETT4gbV9jZG07Cit9OworCit9CisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxl
Z2FjeUNETVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUxlZ2FjeUNETVByb3h5Lm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg3MWJhOGJkODdl
N2Q5MjcwN2NjMDlkOGYzY2M0MGQ2ZjQ4ZGZjYjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkubWVzc2FnZXMuaW4K
QEAgLTAsMCArMSwzMiBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6Cisj
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKwor
I2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEp
CisKK21lc3NhZ2VzIC0+IFJlbW90ZUxlZ2FjeUNETVByb3h5IE5vdFJlZkNvdW50ZWQgeworICAg
IFN1cHBvcnRzTUlNRVR5cGUoU3RyaW5nIG1pbWVUeXBlKSAtPiAoYm9vbCBzdXBwb3J0cykgU3lu
Y2hyb25vdXMKKyAgICBDcmVhdGVTZXNzaW9uKFN0cmluZyBtZWRpYUtleXNTdG9yYWdlRGlyZWN0
b3J5KSAtPiAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllciBpZCkgU3lu
Y2hyb25vdXMKKyAgICBTZXRQbGF5ZXJJZChPcHRpb25hbDxXZWJLaXQ6Ok1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZUlkZW50aWZpZXI+IHBsYXllcklkKQorfQorCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNl
c3Npb25Qcm94eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGEwZTMzZmM2YjQ0NGQzMTFlNjYwMmY4YTc1NWUz
MzQyMDJlYzE1MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuY3BwCkBAIC0wLDAgKzEsMTQ4IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNE
TVNlc3Npb25Qcm94eS5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTEVH
QUNZX0VOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuaCIKKyNpbmNsdWRlICJSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkuaCIKKyNpbmNsdWRl
ICJSZW1vdGVMZWdhY3lDRE1TZXNzaW9uTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZm
ZXJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitzdGQ6OnVu
aXF1ZV9wdHI8UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5PiBSZW1vdGVMZWdhY3lDRE1TZXNz
aW9uUHJveHk6OmNyZWF0ZShXZWFrUHRyPFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eT4mJiBm
YWN0b3J5LCBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJD
b3JlOjpMZWdhY3lDRE0mIGNkbSkKK3sKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFJlbW90
ZUxlZ2FjeUNETVNlc3Npb25Qcm94eT4obmV3IFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eShX
VEZNb3ZlKGZhY3RvcnkpLCBpZGVudGlmaWVyLCBjZG0pKTsKK30KKworUmVtb3RlTGVnYWN5Q0RN
U2Vzc2lvblByb3h5OjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkoV2Vha1B0cjxSZW1vdGVM
ZWdhY3lDRE1GYWN0b3J5UHJveHk+JiYgZmFjdG9yeSwgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklk
ZW50aWZpZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6TGVnYWN5Q0RNJiBjZG0pCisgICAgOiBtX2Zh
Y3RvcnkoV1RGTW92ZShmYWN0b3J5KSkKKyAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQor
ICAgICwgbV9zZXNzaW9uKGNkbS5jcmVhdGVTZXNzaW9uKCp0aGlzKSkKK3sKK30KKworUmVtb3Rl
TGVnYWN5Q0RNU2Vzc2lvblByb3h5Ojp+UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5KCkgPSBk
ZWZhdWx0OworCitzdGF0aWMgUmVmUHRyPFVpbnQ4QXJyYXk+IGNvbnZlcnRUb1VpbnQ4QXJyYXko
SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiYgYnVmZmVyKQoreworICAgIGlmICghYnVm
ZmVyLmJ1ZmZlcigpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHNpemVfdCBzaXpl
SW5CeXRlcyA9IGJ1ZmZlci5zaXplKCk7CisgICAgYXV0byBhcnJheUJ1ZmZlciA9IEFycmF5QnVm
ZmVyOjpjcmVhdGUoYnVmZmVyLmRhdGEoKSwgc2l6ZUluQnl0ZXMpOworICAgIHJldHVybiBVaW50
OEFycmF5OjpjcmVhdGUoV1RGTW92ZShhcnJheUJ1ZmZlciksIDAsIHNpemVJbkJ5dGVzKTsKK30K
KwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdGF0aWMgT3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZm
ZXJEYXRhUmVmZXJlbmNlPiBjb252ZXJ0VG9PcHRpb25hbERhdGFSZWZlcmVuY2UoVCBhcnJheSkK
K3sKKyAgICBpZiAoIWFycmF5KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJl
dHVybiB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKChjb25zdCBjaGFyKilhcnJheS0+ZGF0YSgpLCBh
cnJheS0+Ynl0ZUxlbmd0aCgpKSB9OworfQorCit2b2lkIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Q
cm94eTo6Z2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIElQQzo6U2hh
cmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYmIGluaXREYXRhLCBHZW5lcmF0ZUtleUNhbGxiYWNrJiYg
Y29tcGxldGlvbikKK3sKKyAgICBhdXRvIGluaXREYXRhQXJyYXkgPSBjb252ZXJ0VG9VaW50OEFy
cmF5KFdURk1vdmUoaW5pdERhdGEpKTsKKyAgICBpZiAoIWluaXREYXRhQXJyYXkpIHsKKyAgICAg
ICAgY29tcGxldGlvbih7IH0sIGVtcHR5U3RyaW5nKCksIDAsIDApOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgU3RyaW5nIGRlc3RpbmF0aW9uVVJMOworICAgIHVuc2lnbmVkIHNob3J0
IGVycm9yQ29kZSB7IDAgfTsKKyAgICB1aW50MzJfdCBzeXN0ZW1Db2RlIHsgMCB9OworCisgICAg
YXV0byBrZXlSZXF1ZXN0ID0gbV9zZXNzaW9uLT5nZW5lcmF0ZUtleVJlcXVlc3QobWltZVR5cGUs
IGluaXREYXRhQXJyYXkuZ2V0KCksIGRlc3RpbmF0aW9uVVJMLCBlcnJvckNvZGUsIHN5c3RlbUNv
ZGUpOworCisgICAgZGVzdGluYXRpb25VUkwgPSAidGhpcyBpcyBhIHRlc3Qgc3RyaW5nIl9zOwor
CisgICAgY29tcGxldGlvbihjb252ZXJ0VG9PcHRpb25hbERhdGFSZWZlcmVuY2Uoa2V5UmVxdWVz
dCksIGRlc3RpbmF0aW9uVVJMLCBlcnJvckNvZGUsIHN5c3RlbUNvZGUpOworfQorCit2b2lkIFJl
bW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6cmVsZWFzZUtleXMoKQoreworICAgIG1fc2Vzc2lv
bi0+cmVsZWFzZUtleXMoKTsKK30KKwordm9pZCBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6
OnVwZGF0ZShJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmJiB1cGRhdGUsIFVwZGF0ZUNh
bGxiYWNrJiYgY29tcGxldGlvbikKK3sKKyAgICBhdXRvIHVwZGF0ZUFycmF5ID0gY29udmVydFRv
VWludDhBcnJheShXVEZNb3ZlKHVwZGF0ZSkpOworICAgIGlmICghdXBkYXRlQXJyYXkpIHsKKyAg
ICAgICAgY29tcGxldGlvbihmYWxzZSwgV1RGOjpudWxsb3B0LCAwLCAwKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIFJlZlB0cjxVaW50OEFycmF5PiBuZXh0TWVzc2FnZTsKKyAgICB1
bnNpZ25lZCBzaG9ydCBlcnJvckNvZGUgeyAwIH07CisgICAgdWludDMyX3Qgc3lzdGVtQ29kZSB7
IDAgfTsKKworICAgIGJvb2wgc3VjY2VlZGVkID0gbV9zZXNzaW9uLT51cGRhdGUodXBkYXRlQXJy
YXkuZ2V0KCksIG5leHRNZXNzYWdlLCBlcnJvckNvZGUsIHN5c3RlbUNvZGUpOworCisgICAgY29t
cGxldGlvbihzdWNjZWVkZWQsIGNvbnZlcnRUb09wdGlvbmFsRGF0YVJlZmVyZW5jZShuZXh0TWVz
c2FnZSksIGVycm9yQ29kZSwgc3lzdGVtQ29kZSk7Cit9CisKK1JlZlB0cjxBcnJheUJ1ZmZlcj4g
UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpnZXRDYWNoZWRLZXlGb3JLZXlJZChjb25zdCBT
dHJpbmcmIGtleUlkKQoreworICAgIHJldHVybiBtX3Nlc3Npb24tPmNhY2hlZEtleUZvcktleUlE
KGtleUlkKTsKK30KKwordm9pZCBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OmNhY2hlZEtl
eUZvcktleUlEKFN0cmluZyBrZXlJZCwgQ2FjaGVkS2V5Rm9yS2V5SURDYWxsYmFjayYmIGNvbXBs
ZXRpb24pCit7CisgICAgY29tcGxldGlvbihjb252ZXJ0VG9PcHRpb25hbERhdGFSZWZlcmVuY2Uo
Z2V0Q2FjaGVkS2V5Rm9yS2V5SWQoa2V5SWQpKSk7Cit9CisKK3ZvaWQgUmVtb3RlTGVnYWN5Q0RN
U2Vzc2lvblByb3h5OjpzZW5kTWVzc2FnZShVaW50OEFycmF5KiBtZXNzYWdlLCBTdHJpbmcgZGVz
dGluYXRpb25VUkwpCit7CisgICAgaWYgKCFtX2ZhY3RvcnkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIG1fZmFjdG9yeS0+Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpLmNvbm5lY3Rpb24oKS5z
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uOjpTZW5kTWVzc2FnZShjb252ZXJ0
VG9PcHRpb25hbERhdGFSZWZlcmVuY2UobWVzc2FnZSksIGRlc3RpbmF0aW9uVVJMKSwgbV9pZGVu
dGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OnNlbmRFcnJv
cihNZWRpYUtleUVycm9yQ29kZSBlcnJvckNvZGUsIHVpbnQzMl90IHN5c3RlbUNvZGUpCit7Cisg
ICAgaWYgKG1fZmFjdG9yeSkKKyAgICAgICAgbV9mYWN0b3J5LT5ncHVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZUxlZ2FjeUNETVNlc3Np
b246OlNlbmRFcnJvcihlcnJvckNvZGUsIHN5c3RlbUNvZGUpLCBtX2lkZW50aWZpZXIpOworfQor
CitTdHJpbmcgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjptZWRpYUtleXNTdG9yYWdlRGly
ZWN0b3J5KCkgY29uc3QKK3sKKyAgICBpZiAobV9mYWN0b3J5KQorICAgICAgICByZXR1cm4gbV9m
YWN0b3J5LT5ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkubWVkaWFLZXlzU3RvcmFnZURpcmVj
dG9yeSgpOworICAgIHJldHVybiBlbXB0eVN0cmluZygpOworfQorCisKK30KKworI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RN
U2Vzc2lvblByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVn
YWN5Q0RNU2Vzc2lvblByb3h5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTkzZWM4MjE4ZDUwN2NlNGZmOWQwOTRk
YjRiMDJmMjY3YzM3MTFmMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuaApAQCAtMCwwICsxLDk3IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIu
aCIKKyNpbmNsdWRlICJSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkuaCIKKyNpbmNsdWRlICJS
ZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvTGVn
YWN5Q0RNU2Vzc2lvbi5oPgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3Rm
L1VuaXF1ZVJlZi5oPgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTEVHQUNZ
X0VOQ1JZUFRFRF9NRURJQSkKKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgTGVnYWN5Q0RN
OworY2xhc3MgTGVnYWN5Q0RNU2Vzc2lvbjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKK30KKworbmFt
ZXNwYWNlIElQQyB7CitjbGFzcyBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlOworfQorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworY2xhc3MgUmVtb3RlTGVnYWN5Q0RNUHJveHk7CitjbGFzcyBSZW1v
dGVNZWRpYVBsYXllclByb3h5OworCitjbGFzcyBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkK
KyAgICA6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAgICAsIHB1YmxpYyBXZWJDb3Jl
OjpMZWdhY3lDRE1TZXNzaW9uQ2xpZW50CisgICAgLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UmVt
b3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5PiB7CitwdWJsaWM6CisgICAgc3RhdGljIHN0ZDo6dW5p
cXVlX3B0cjxSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk+IGNyZWF0ZShXZWFrUHRyPFJlbW90
ZUxlZ2FjeUNETUZhY3RvcnlQcm94eT4mJiwgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZp
ZXIsIFdlYkNvcmU6OkxlZ2FjeUNETSYpOworICAgIH5SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJv
eHkoKTsKKworICAgIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eSogZmFjdG9yeSgpIGNvbnN0
IHsgcmV0dXJuIG1fZmFjdG9yeS5nZXQoKTsgfQorICAgIFdlYkNvcmU6OkxlZ2FjeUNETVNlc3Np
b24qIHNlc3Npb24oKSBjb25zdCB7IHJldHVybiBtX3Nlc3Npb24uZ2V0KCk7IH0KKworICAgIHZv
aWQgc2V0UGxheWVyKFdlYWtQdHI8UmVtb3RlTWVkaWFQbGF5ZXJQcm94eT4gcGxheWVyKSB7IG1f
cGxheWVyID0gV1RGTW92ZShwbGF5ZXIpOyB9CisKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGdl
dENhY2hlZEtleUZvcktleUlkKGNvbnN0IFN0cmluZyYpOworCitwcml2YXRlOgorICAgIGZyaWVu
ZCBjbGFzcyBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk7CisgICAgUmVtb3RlTGVnYWN5Q0RN
U2Vzc2lvblByb3h5KFdlYWtQdHI8UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5PiYmLCBSZW1v
dGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllciwgV2ViQ29yZTo6TGVnYWN5Q0RNJik7CisKKyAg
ICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgorICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZl
U3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVf
cHRyPElQQzo6RW5jb2Rlcj4mKSBmaW5hbDsKKworICAgIC8vIExlZ2FjeUNETVNlc3Npb25DbGll
bnQKKyAgICB2b2lkIHNlbmRNZXNzYWdlKFVpbnQ4QXJyYXkqLCBTdHJpbmcgZGVzdGluYXRpb25V
UkwpIGZpbmFsOworICAgIHZvaWQgc2VuZEVycm9yKE1lZGlhS2V5RXJyb3JDb2RlLCB1aW50MzJf
dCBzeXN0ZW1Db2RlKSBmaW5hbDsKKyAgICBTdHJpbmcgbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9y
eSgpIGNvbnN0IGZpbmFsOworCisgICAgLy8gTWVzc2FnZXMKKyAgICB1c2luZyBHZW5lcmF0ZUtl
eUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxJUEM6OlNoYXJlZEJ1
ZmZlckRhdGFSZWZlcmVuY2U+JiYsIGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkIHNob3J0LCB1aW50
MzJfdCk+OworICAgIHZvaWQgZ2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0cmluZyYgbWltZVR5
cGUsIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYmIGluaXREYXRhLCBHZW5lcmF0ZUtl
eUNhbGxiYWNrJiYpOworICAgIHZvaWQgcmVsZWFzZUtleXMoKTsKKyAgICB1c2luZyBVcGRhdGVD
YWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCwgT3B0aW9uYWw8SVBDOjpTaGFy
ZWRCdWZmZXJEYXRhUmVmZXJlbmNlPiYmLCB1bnNpZ25lZCBzaG9ydCwgdWludDMyX3QpPjsKKyAg
ICB2b2lkIHVwZGF0ZShJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmJiB1cGRhdGUsIFVw
ZGF0ZUNhbGxiYWNrJiYpOworICAgIHVzaW5nIENhY2hlZEtleUZvcktleUlEQ2FsbGJhY2sgPSBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVy
ZW5jZT4mJik+OworICAgIHZvaWQgY2FjaGVkS2V5Rm9yS2V5SUQoU3RyaW5nIGtleUlkLCBDYWNo
ZWRLZXlGb3JLZXlJRENhbGxiYWNrJiYpOworCisgICAgV2Vha1B0cjxSZW1vdGVMZWdhY3lDRE1G
YWN0b3J5UHJveHk+IG1fZmFjdG9yeTsKKyAgICBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRp
ZmllciBtX2lkZW50aWZpZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkxlZ2FjeUNE
TVNlc3Npb24+IG1fc2Vzc2lvbjsKKyAgICBXZWFrUHRyPFJlbW90ZU1lZGlhUGxheWVyUHJveHk+
IG1fcGxheWVyOworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblBy
b3h5Lm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE0OTYyY2U5MWRmNTU5NWZjN2FjZTJjMDUwNzdi
MDUxZWEwZGUzNzAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEs
MzMgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
IyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
IyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpZiBFTkFCTEUo
R1BVX1BST0NFU1MpICYmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQorCittZXNzYWdl
cyAtPiBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkgTm90UmVmQ291bnRlZCB7CisgICAgR2Vu
ZXJhdGVLZXlSZXF1ZXN0KFN0cmluZyBtaW1lVHlwZSwgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVm
ZXJlbmNlIGluaXREYXRhKSAtPiAoT3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJl
bmNlPiBuZXh0TWVzc2FnZSwgU3RyaW5nIGRlc3RpbmF0aW9uVVJMLCB1bnNpZ25lZCBzaG9ydCBl
cnJvckNvZGUsIHVpbnQzMl90IHN5c3RlbUNvZGUpIFN5bmNocm9ub3VzCisgICAgUmVsZWFzZUtl
eXMoKQorICAgIFVwZGF0ZShJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgdXBkYXRlKSAt
PiAoYm9vbCBzdWNjZWVkZWQsIE9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5j
ZT4gbmV4dE1lc3NhZ2UsIHVuc2lnbmVkIHNob3J0IGVycm9yQ29kZSwgdWludDMyX3Qgc3lzdGVt
Q29kZSkgU3luY2hyb25vdXMKKyAgICBDYWNoZWRLZXlGb3JLZXlJRChTdHJpbmcga2V5SWQpIC0+
IChPcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U+IGtleSkgU3luY2hyb25v
dXMKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcAppbmRleCBiYzRk
YmUzOWM0ZWFhM2MxODY1ODIxY2Q1ZGJlNTEzMWZkZGJmNDcwLi5lYjE1MGNiMzBhZTE4N2FlOTQ5
NDg2YmI0YTJhZTFjMTVjYzQ1ZjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHAK
QEAgLTIwNCw2ICsyMDQsMTQgQEAgdm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6
ZGlkUmVjZWl2ZVN5bmNQbGF5ZXJNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYKICAgICAgICAgcGxh
eWVyLT5kaWRSZWNlaXZlU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgZW5jb2Rlcik7
CiB9CiAKK1JlbW90ZU1lZGlhUGxheWVyUHJveHkqIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclBy
b3h5OjpnZXRQcm94eShjb25zdCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyJiBp
ZCkKK3sKKyAgICBhdXRvIHJlc3VsdHMgPSBtX3Byb3hpZXMuZmluZChpZCk7CisgICAgaWYgKHJl
c3VsdHMgIT0gbV9wcm94aWVzLmVuZCgpKQorICAgICAgICByZXR1cm4gcmVzdWx0cy0+dmFsdWUu
Z2V0KCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJM
RUQKIGNvbnN0IExvZ2dlciYgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OmxvZ2dlcigp
IGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oCmluZGV4IGUwN2Q2ZTZhODM1YWY0
ZWNmY2FmZDg2NThkMDUyYzRjYzc1MjIzYmUuLjUxZTcxZTc3NzM3OGI4ZGFmYjljN2M2MjcwMmI5
MWE2NzVmYTFlYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oCkBAIC02OCw2ICs2OCw4
IEBAIHB1YmxpYzoKICAgICBXVEZMb2dDaGFubmVsJiBsb2dDaGFubmVsKCkgY29uc3QgZmluYWw7
CiAjZW5kaWYKIAorICAgIFJlbW90ZU1lZGlhUGxheWVyUHJveHkqIGdldFByb3h5KGNvbnN0IE1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXImKTsKKwogcHJpdmF0ZToKICAgICAvLyBJ
UEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAKaW5kZXggYzFi
NDM5NmIwMWJjYjlkNDBjZDllZmQwODI4ZDY3ZjY3NGUyODM5Mi4uNzg0ZDI0MDljODNlOWE3ZjYw
ODZjNzAyMjgxZTFkMjk1YzkzNWM0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcApAQCAtMzMsNiArMzMs
OCBAQAogI2luY2x1ZGUgIkxheWVySG9zdGluZ0NvbnRleHQuaCIKICNpbmNsdWRlICJNZWRpYVBs
YXllclByaXZhdGVSZW1vdGVNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZUF1ZGlvVHJhY2tQ
cm94eS5oIgorI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5oIgorI2luY2x1
ZGUgIlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlclByb3h5LmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJQcm94eUNv
bmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllclN0YXRlLmgiCkBAIC01
MjMsMTUgKzUyNSwxOSBAQCB2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVy
QWN0aXZlU291cmNlQnVmZmVyc0NoYW5nZWQoKQogfQogCiAjaWYgRU5BQkxFKExFR0FDWV9FTkNS
WVBURURfTUVESUEpCi1SZWZQdHI8QXJyYXlCdWZmZXI+IFJlbW90ZU1lZGlhUGxheWVyUHJveHk6
Om1lZGlhUGxheWVyQ2FjaGVkS2V5Rm9yS2V5SWQoY29uc3QgU3RyaW5nJikgY29uc3QKK1JlZlB0
cjxBcnJheUJ1ZmZlcj4gUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJDYWNoZWRL
ZXlGb3JLZXlJZChjb25zdCBTdHJpbmcmIGtleUlkKSBjb25zdAogewotICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgaWYgKGF1dG8gY2RtU2Vzc2lvbiA9IG1fbWFuYWdlci5ncHVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzKCkubGVnYWN5Q2RtRmFjdG9yeVByb3h5KCkuZ2V0U2Vzc2lvbihtX2xlZ2Fj
eVNlc3Npb24pKQorICAgICAgICByZXR1cm4gY2RtU2Vzc2lvbi0+Z2V0Q2FjaGVkS2V5Rm9yS2V5
SWQoa2V5SWQpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCi12b2lkIFJlbW90ZU1lZGlhUGxh
eWVyUHJveHk6Om1lZGlhUGxheWVyS2V5TmVlZGVkKFVpbnQ4QXJyYXkqKQordm9pZCBSZW1vdGVN
ZWRpYVBsYXllclByb3h5OjptZWRpYVBsYXllcktleU5lZWRlZChVaW50OEFycmF5KiBtZXNzYWdl
KQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgSVBDOjpEYXRhUmVmZXJlbmNlIG1lc3Nh
Z2VSZWZlcmVuY2U7CisgICAgaWYgKG1lc3NhZ2UpCisgICAgICAgIG1lc3NhZ2VSZWZlcmVuY2Ug
PSB7IG1lc3NhZ2UtPmRhdGEoKSwgbWVzc2FnZS0+Ynl0ZUxlbmd0aCgpIH07CisgICAgbV93ZWJQ
cm9jZXNzQ29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
OjpNZWRpYVBsYXllcktleU5lZWRlZChXVEZNb3ZlKG1lc3NhZ2VSZWZlcmVuY2UpKSwgbV9pZCk7
CiB9CiAjZW5kaWYKIApAQCAtNzIzLDYgKzcyOSwyOCBAQCB2b2lkIFJlbW90ZU1lZGlhUGxheWVy
UHJveHk6OnNlbmRDYWNoZWRTdGF0ZSgpCiB9CiAKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRF
RF9NRURJQSkKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6c2V0TGVnYWN5Q0RNU2Vzc2lv
bihSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllciYmIGluc3RhbmNlSWQpCit7CisgICAg
aWYgKG1fbGVnYWN5U2Vzc2lvbiA9PSBpbnN0YW5jZUlkKQorICAgICAgICByZXR1cm47CisKKyAg
ICBpZiAobV9sZWdhY3lTZXNzaW9uKSB7CisgICAgICAgIGlmIChhdXRvIGNkbVNlc3Npb24gPSBt
X21hbmFnZXIuZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpLmxlZ2FjeUNkbUZhY3RvcnlQcm94
eSgpLmdldFNlc3Npb24obV9sZWdhY3lTZXNzaW9uKSkgeworICAgICAgICAgICAgbV9wbGF5ZXIt
PnNldENETVNlc3Npb24obnVsbHB0cik7CisgICAgICAgICAgICBjZG1TZXNzaW9uLT5zZXRQbGF5
ZXIobnVsbHB0cik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBtX2xlZ2FjeVNlc3Npb24gPSBp
bnN0YW5jZUlkOworCisgICAgaWYgKG1fbGVnYWN5U2Vzc2lvbikgeworICAgICAgICBpZiAoYXV0
byBjZG1TZXNzaW9uID0gbV9tYW5hZ2VyLmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKS5sZWdh
Y3lDZG1GYWN0b3J5UHJveHkoKS5nZXRTZXNzaW9uKG1fbGVnYWN5U2Vzc2lvbikpIHsKKyAgICAg
ICAgICAgIG1fcGxheWVyLT5zZXRDRE1TZXNzaW9uKGNkbVNlc3Npb24tPnNlc3Npb24oKSk7Cisg
ICAgICAgICAgICBjZG1TZXNzaW9uLT5zZXRQbGF5ZXIobWFrZVdlYWtQdHIodGhpcykpOworICAg
ICAgICB9CisgICAgfQorfQorCiB2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6OmtleUFkZGVk
KCkKIHsKICAgICBtX3BsYXllci0+a2V5QWRkZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oCmluZGV4IDE0M2Jj
NTU5ZWQ5NTFjM2Q3MTQ2NTU5OGEwNTgzNzk5MWJmZGI3M2UuLjg2MDE4NTRkODI4NjZkYjU0MDk2
ZmZjNzEwY2U1NjVkMTE0MDVjMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaApAQCAtMzAsNiArMzAsNyBAQAog
I2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJNZWRpYVBsYXllclByaXZhdGVSZW1v
dGVJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAi
UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJSZW1vdGVNZWRp
YVBsYXllckNvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllclByb3h5
Q29uZmlndXJhdGlvbi5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyU3RhdGUuaCIKQEAg
LTE0NCw2ICsxNDUsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShMRUdBQ1lfRU5D
UllQVEVEX01FRElBKQorICAgIHZvaWQgc2V0TGVnYWN5Q0RNU2Vzc2lvbihSZW1vdGVMZWdhY3lD
RE1TZXNzaW9uSWRlbnRpZmllciYmIGluc3RhbmNlSWQpOwogICAgIHZvaWQga2V5QWRkZWQoKTsK
ICNlbmRpZgogCkBAIC0xNzUsNiArMTc3LDggQEAgcHVibGljOgogICAgIFJlZjxXZWJDb3JlOjpQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2U+IHJlcXVlc3RSZXNvdXJjZShXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiwgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyOjpMb2FkT3B0aW9u
cyk7CiAgICAgdm9pZCByZW1vdmVSZXNvdXJjZShSZW1vdGVNZWRpYVJlc291cmNlSWRlbnRpZmll
cik7CiAKKyAgICBSZWZQdHI8V2ViQ29yZTo6TWVkaWFQbGF5ZXI+IG1lZGlhUGxheWVyKCkgeyBy
ZXR1cm4gbV9wbGF5ZXI7IH0KKwogcHJpdmF0ZToKICAgICAvLyBNZWRpYVBsYXllckNsaWVudAog
ICAgIHZvaWQgbWVkaWFQbGF5ZXJOZXR3b3JrU3RhdGVDaGFuZ2VkKCkgZmluYWw7CkBAIC0yOTMs
NiArMjk3LDcgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElB
KSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogICAgIGJvb2wgbV9zaG91bGRDb250aW51ZUFm
dGVyS2V5TmVlZGVkIHsgZmFsc2UgfTsKKyAgICBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRp
ZmllciBtX2xlZ2FjeVNlc3Npb247CiAjZW5kaWYKIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxF
RApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlh
UGxheWVyUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5tZXNzYWdlcy5pbgppbmRleCAyNzk1MTI2ZDI5YmJlMWI4
ODliMjdmMDhkNTcwYzYyZjRlMDRlMDUxLi5jZWI2OGFlYjA3N2UwODExYTNhMmIyZDJhMDRkYzkz
NGYwZjVhODYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTWVkaWFQbGF5ZXJQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5tZXNzYWdlcy5pbgpAQCAtODAsNyAr
ODAsNyBAQCBtZXNzYWdlcyAtPiBSZW1vdGVNZWRpYVBsYXllclByb3h5IE5vdFJlZkNvdW50ZWQg
ewogI2VuZGlmCiAKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKLSAgICAjIFNl
dENETVNlc3Npb24KKyAgICBTZXRMZWdhY3lDRE1TZXNzaW9uKFdlYktpdDo6UmVtb3RlTGVnYWN5
Q0RNU2Vzc2lvbklkZW50aWZpZXIgaW5zdGFuY2VJZCkKICAgICBLZXlBZGRlZCgpCiAjZW5kaWYK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVRleHRU
cmFja1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVUZXh0
VHJhY2tQcm94eS5jcHAKaW5kZXggYWY2NGM4MmI5MDIzYWQyMzQxNDIzY2Y4NWRiNDk1YTc2YzRj
NmI0YS4uNjBmYTZjODExYmZkMDc2MmJiZWNkMWUxODBjYzBjYTUyMjZiMjQ4NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVRleHRUcmFja1Byb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVGV4dFRyYWNrUHJv
eHkuY3BwCkBAIC0yOSwxNSArMjksMTkgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAor
I2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGVNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyUHJveHkuaCIKICNp
bmNsdWRlICJUZXh0VHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbi5oIgogI2luY2x1ZGUg
IlRleHRUcmFja1ByaXZhdGVSZW1vdGVNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYkNvcmVBcmd1
bWVudENvZGVycy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvSVNPVlRUQ3VlLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAordXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CisKIFJlbW90ZVRleHRUcmFja1Byb3h5OjpSZW1vdGVUZXh0VHJh
Y2tQcm94eShSZW1vdGVNZWRpYVBsYXllclByb3h5JiBwbGF5ZXIsIFRyYWNrUHJpdmF0ZVJlbW90
ZUlkZW50aWZpZXIgaWQsIFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZSYgdHJhY2tQcml2YXRlKQogICAgIDogbV9wbGF5ZXIocGxheWVyKQog
ICAgICwgbV9pZGVudGlmaWVyKGlkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZVRleHRUcmFja1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlVGV4dFRyYWNrUHJveHkuaAppbmRleCA0ZjQ5ZjNhMzg3ZDBlYTEwZjE2
MWU1YWQ3OWY4ZDc4NTUwM2QxNzJhLi45NzFlN2Y2NDg5YjMzYTUzODhiZWNmOTE4OWFiOWU3OWNh
NzMyMmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
VGV4dFRyYWNrUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlVGV4dFRyYWNrUHJveHkuaApAQCAtMzIsMTUgKzMyLDIyIEBACiAjaW5jbHVkZSA8V2ViQ29y
ZS9JbmJhbmRUZXh0VHJhY2tQcml2YXRlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UcmFja0Jhc2Uu
aD4KIAorbmFtZXNwYWNlIElQQyB7CisKK2NsYXNzIENvbm5lY3Rpb247CisKK30KKwogbmFtZXNw
YWNlIFdlYktpdCB7CiAKK2NsYXNzIFJlbW90ZU1lZGlhUGxheWVyUHJveHk7CiBzdHJ1Y3QgVGV4
dFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb247CiAKIGNsYXNzIFJlbW90ZVRleHRUcmFj
a1Byb3h5IGZpbmFsCiAgICAgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8UmVtb3RlVGV4
dFRyYWNrUHJveHksIFdURjo6RGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1haW4+CiAgICAgLCBwcml2YXRl
IFdlYkNvcmU6OkluYmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQgewogcHVibGljOgotICAgIHN0
YXRpYyBSZWY8UmVtb3RlVGV4dFRyYWNrUHJveHk+IGNyZWF0ZShSZW1vdGVNZWRpYVBsYXllclBy
b3h5JiBwbGF5ZXIsIFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQsIFJlZjxJUEM6OkNv
bm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSYgdHJhY2tQcml2
YXRlKQorICAgIHN0YXRpYyBSZWY8UmVtb3RlVGV4dFRyYWNrUHJveHk+IGNyZWF0ZShSZW1vdGVN
ZWRpYVBsYXllclByb3h5JiBwbGF5ZXIsIFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQs
IFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgV2ViQ29yZTo6SW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZSYgdHJhY2tQcml2YXRlKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgUmVtb3RlVGV4dFRyYWNrUHJveHkocGxheWVyLCBpZCwgV1RGTW92ZShjb25uZWN0aW9u
KSwgdHJhY2tQcml2YXRlKSk7CiAgICAgfQpAQCAtNTAsMTUgKzU3LDE1IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldE1vZGUoV2ViQ29yZTo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6TW9kZSBtb2Rl
KSB7IG1fdHJhY2tQcml2YXRlLT5zZXRNb2RlKG1vZGUpOyB9CiAKIHByaXZhdGU6Ci0gICAgUmVt
b3RlVGV4dFRyYWNrUHJveHkoUmVtb3RlTWVkaWFQbGF5ZXJQcm94eSYsIFRyYWNrUHJpdmF0ZVJl
bW90ZUlkZW50aWZpZXIsIFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYsIEluYmFuZFRleHRUcmFja1By
aXZhdGUmKTsKKyAgICBSZW1vdGVUZXh0VHJhY2tQcm94eShSZW1vdGVNZWRpYVBsYXllclByb3h5
JiwgVHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJiwg
V2ViQ29yZTo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSYpOwogCiAgICAgLy8gSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUNsaWVudAogICAgIHZpcnR1YWwgdm9pZCBhZGREYXRhQ3VlKGNvbnN0IE1lZGlh
VGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBjb25zdCB2b2lkKiwgdW5zaWduZWQp
OwogCiAjaWYgRU5BQkxFKERBVEFDVUVfVkFMVUUpCi0gICAgdmlydHVhbCB2b2lkIGFkZERhdGFD
dWUoY29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1lJiBlbmQsIFJlZjxTZXJp
YWxpemVkUGxhdGZvcm1EYXRhQ3VlPiYmLCBjb25zdCBTdHJpbmcmKTsKLSAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlRGF0YUN1ZShjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUm
IGVuZCwgU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZSYpOwotICAgIHZpcnR1YWwgdm9pZCByZW1v
dmVEYXRhQ3VlKGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBT
ZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlJik7CisgICAgdmlydHVhbCB2b2lkIGFkZERhdGFDdWUo
Y29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1lJiBlbmQsIFJlZjxXZWJDb3Jl
OjpTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlPiYmLCBjb25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlRGF0YUN1ZShjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRp
YVRpbWUmIGVuZCwgV2ViQ29yZTo6U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZSYpOworICAgIHZp
cnR1YWwgdm9pZCByZW1vdmVEYXRhQ3VlKGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1l
ZGlhVGltZSYgZW5kLCBXZWJDb3JlOjpTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlJik7CiAjZW5k
aWYKIAogICAgIHZpcnR1YWwgdm9pZCBhZGRHZW5lcmljQ3VlKFdlYkNvcmU6OkluYmFuZEdlbmVy
aWNDdWUmKTsKQEAgLTY3LDcgKzc0LDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCBw
YXJzZVdlYlZUVEZpbGVIZWFkZXIoU3RyaW5nJiYpOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZVdl
YlZUVEN1ZURhdGEoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICB2aXJ0
dWFsIHZvaWQgcGFyc2VXZWJWVFRDdWVEYXRhKElTT1dlYlZUVEN1ZSYmKTsKKyAgICB2aXJ0dWFs
IHZvaWQgcGFyc2VXZWJWVFRDdWVEYXRhKFdlYkNvcmU6OklTT1dlYlZUVEN1ZSYmKTsKIAogICAg
IC8vIFRyYWNrUHJpdmF0ZUJhc2VDbGllbnQKICAgICB2b2lkIGlkQ2hhbmdlZChjb25zdCBBdG9t
U3RyaW5nJikgZmluYWw7CkBAIC04MSw3ICs4OCw3IEBAIHByaXZhdGU6CiAgICAgUmVtb3RlTWVk
aWFQbGF5ZXJQcm94eSYgbV9wbGF5ZXI7CiAgICAgVHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmll
ciBtX2lkZW50aWZpZXI7CiAgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV93ZWJQcm9jZXNzQ29u
bmVjdGlvbjsKLSAgICBSZWY8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZT4gbV90cmFja1ByaXZhdGU7
CisgICAgUmVmPFdlYkNvcmU6OkluYmFuZFRleHRUcmFja1ByaXZhdGU+IG1fdHJhY2tQcml2YXRl
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtp
dC9tZXNzYWdlcy5weQppbmRleCA0YmExNGRiYWYyNGIyNDFlNTlkYjBhN2YyMDgwZDAyZDAyN2Mz
YjA0Li42NjVmNWEyMjEwOGUxYjY2OTFhMDM1Njk3Yzk5YjE0NmRlMDMzMGI4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTIzOCw2ICsyMzgsOCBAQCBkZWYg
dHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJlZCgpOgogICAgICAgICAnV2ViS2l0
OjpSZW1vdGVDRE1JZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6UmVtb3RlQ0RNSW5zdGFu
Y2VJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
SWRlbnRpZmllcicsCisgICAgICAgICdXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETUlkZW50aWZpZXIn
LAorICAgICAgICAnV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllcicsCiAg
ICAgICAgICdXZWJLaXQ6OlJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyJywKICAgICAgICAg
J1dlYktpdDo6UmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpS
VENEZWNvZGVySWRlbnRpZmllcicsCkBAIC01ODQsNiArNTg2LDcgQEAgZGVmIGhlYWRlcnNfZm9y
X3R5cGUodHlwZSk6CiAgICAgICAgICdXZWJDb3JlOjpJbnB1dE1vZGUnOiBbJzxXZWJDb3JlL0lu
cHV0TW9kZS5oPiddLAogICAgICAgICAnV2ViQ29yZTo6S2V5ZnJhbWVWYWx1ZUxpc3QnOiBbJzxX
ZWJDb3JlL0dyYXBoaWNzTGF5ZXIuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OktleXByZXNzQ29t
bWFuZCc6IFsnPFdlYkNvcmUvS2V5Ym9hcmRFdmVudC5oPiddLAorICAgICAgICAnV2ViQ29yZTo6
TGVnYWN5Q0RNU2Vzc2lvbkNsaWVudDo6TWVkaWFLZXlFcnJvckNvZGUnOiBbJzxXZWJDb3JlL0xl
Z2FjeUNETVNlc3Npb24uaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OkxvY2tCYWNrRm9yd2FyZExp
c3QnOiBbJzxXZWJDb3JlL0ZyYW1lTG9hZGVyVHlwZXMuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6
Ok1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpIYXNBY3Rpdml0eSc6IFsnPFdlYkNvcmUvTWVz
c2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6Ok5ldHdvcmtU
cmFuc2FjdGlvbkluZm9ybWF0aW9uJzogWyc8V2ViQ29yZS9OZXR3b3JrTG9hZEluZm9ybWF0aW9u
Lmg+J10sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dl
YktpdC9Tb3VyY2VzLnR4dAppbmRleCAxYzkyNDVlMGI5ZjRiYmMyYjgwZDdlM2NjMDRlZmQyMDNk
OGUwNGNmLi42ZGRkZGY1MjNmZDI3NDFmNmNmNjMzMDlhN2E4MjlkYTIxMzI3YThjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNl
cy50eHQKQEAgLTMzLDYgKzMzLDkgQEAgR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5
UHJveHkuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuY3BwCiBH
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmNwcAogR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5jcHAKK0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVn
YWN5Q0RNRmFjdG9yeVByb3h5LmNwcAorR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Q
cm94eS5jcHAKK0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNw
cAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHAKIEdQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAKIEdQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5jcHAKQEAgLTU1NSw2ICs1NTgsOSBAQCBXZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVDRE0uY3BwCiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1G
YWN0b3J5LmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3BwCiBX
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uY3BwCitXZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE0uY3BwCitXZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVMZWdhY3lDRE1GYWN0b3J5LmNwcAorV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVn
YWN5Q0RNU2Vzc2lvbi5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVy
TWFuYWdlci5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTUlNRVR5
cGVDYWNoZS5jcHAgQG5vLXVuaWZ5CiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVJl
c291cmNlUHJveHkuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCAwZTMyNjg0NGQ4ZDA1ZGQ3MDVkMDcwZmU0MmIyNDFmZjI3ZDA1ZDYy
Li5hZjQ4MzdlMWU0NjhjZGI1YWU1MDBiZTQ1ZWE5MThkNmViYTMxOGU3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE3NDcsNiArMTc0
NywxMCBAQAogCQlDREJCNDlGRDI0MEQ5QTcyMDAxN0MyOTIgLyogUmVtb3RlQXVkaW9TZXNzaW9u
Q29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0RCQjQ5RkMyNDBEOUE3MjAwMTdDMjkyIC8qIFJlbW90ZUF1ZGlvU2Vzc2lvbkNvbmZp
Z3VyYXRpb24uaCAqLzsgfTsKIAkJQ0RDMjgzMUQyMDFCRDc5RDAwRTZFNzQ1IC8qIFdLRnVsbHNj
cmVlblN0YWNrVmlldy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0RDMjgzMUIyMDFCRDc5RDAwRTZFNzQ1IC8qIFdLRnVsbHNjcmVlblN0YWNrVmlldy5o
ICovOyB9OwogCQlDRENBODVDOTEzMkFCQTRFMDBFOTYxREYgLyogV0tGdWxsU2NyZWVuV2luZG93
Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0RDQTg1QzcxMzJBQkE0RTAwRTk2MURGIC8qIFdLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xs
ZXIuaCAqLzsgfTsKKwkJQ0RFNTU1MzIyNDA2RUI4QzAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNE
TUZhY3RvcnlQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREU1NTUyOTI0MDZCODk2MDA4QTNEREIgLyogUmVtb3Rl
TGVnYWN5Q0RNRmFjdG9yeVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKKwkJQ0RFNTU1
MzMyNDA2RUI4QzAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETVByb3h5TWVzc2FnZVJlY2VpdmVy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERTU1
NTJBMjQwNkI4OTYwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1Qcm94eU1lc3NhZ2VSZWNlaXZl
ci5jcHAgKi87IH07CisJCUNERTU1NTM0MjQwNkVCOEMwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lD
RE1TZXNzaW9uTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENERTU1NTJFMjQwNkI4OTcwMDhBM0REQiAvKiBSZW1vdGVMZWdh
Y3lDRE1TZXNzaW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKKwkJQ0RFNTU1MzUyNDA2RUI4
QzAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eU1lc3NhZ2VSZWNlaXZlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREU1NTUz
MTI0MDZCODk3MDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5TWVzc2FnZVJl
Y2VpdmVyLmNwcCAqLzsgfTsKIAkJQ0UxMUFENTIxQ0JDNDgyRjAwNjgxRUU1IC8qIENvZGVTaWdu
aW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTEx
QUQ1MTFDQkM0ODJGMDA2ODFFRTUgLyogQ29kZVNpZ25pbmcuaCAqLzsgfTsKIAkJQ0UxQTBCRDIx
QTQ4RTZDNjAwNTRFRjc0IC8qIEFzc2VydGlvblNlcnZpY2VzU1BJLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTFBMEJDQzFBNDhFNkM2MDA1NEVGNzQg
LyogQXNzZXJ0aW9uU2VydmljZXNTUEkuaCAqLzsgfTsKIAkJQ0UxQTBCRDYxQTQ4RTZDNjAwNTRF
Rjc0IC8qIFRDQ1NQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0UxQTBCRDAxQTQ4RTZDNjAwNTRFRjc0IC8qIFRDQ1NQSS5oICovOyB9OwpAQCAtNTE0
MCw2ICs1MTQ0LDM2IEBACiAJCUNERDUzNTc3MjQwRERFMDcwMEY3QjhDNCAvKiBSZW1vdGVBdWRp
b1Nlc3Npb25Qcm94eU1lc3NhZ2VzUmVwbGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVBdWRp
b1Nlc3Npb25Qcm94eU1lc3NhZ2VzUmVwbGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlDREQ1MzU3ODI0MERERTA4MDBGN0I4QzQgLyogUmVtb3RlQXVkaW9TZXNzaW9uUHJveHlN
YW5hZ2VyTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQXVkaW9TZXNzaW9uUHJveHlN
YW5hZ2VyTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RENTM1Nzky
NDBEREUwODAwRjdCOEM0IC8qIFJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5TWFuYWdlck1lc3NhZ2Vz
UmVwbGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFnZXJN
ZXNzYWdlc1JlcGxpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RFNTU0RTIy
NDA1ODExNDAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnkuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlDREU1NTRFMzI0MDU4MTE0MDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RFNTU0RUEyNDA1ODE4MzAwOEEzRERCIC8qIFJlbW90ZUxl
Z2FjeUNETS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVMZWdhY3lDRE0uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQ0RFNTU0RUIyNDA1ODE4MzAwOEEzRERCIC8qIFJlbW90ZUxlZ2Fj
eUNETS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVMZWdhY3lDRE0uY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlDREU1NTRFRTI0MDU4MUEzMDA4QTNEREIgLyogUmVtb3Rl
TGVnYWN5Q0RNU2Vzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVMZWdhY3lDRE1TZXNzaW9u
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNERTU1NEVGMjQwNTgxQTMwMDhBM0RE
QiAvKiBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90
ZUxlZ2FjeUNETVNlc3Npb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREU1
NTRGODI0MDU4MjA4MDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlDREU1NTRGOTI0MDU4MjA4MDA4QTNEREIgLyogUmVtb3RlTGVnYWN5
Q0RNU2Vzc2lvblByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUxlZ2FjeUNETVNl
c3Npb25Qcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNERTU1NTAwMjQw
NTgyODQwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkubWVzc2FnZXMuaW4g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5Lm1lc3Nh
Z2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREU1NTUwNTI0MDU4MzI0MDA4
QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSZW1vdGVM
ZWdhY3lDRE1TZXNzaW9uLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlDREU1NTUwNzI0MDU4OEI4MDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNSWRlbnRpZmllci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSZW1vdGVMZWdhY3lDRE1JZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUNERTU1NTA5MjQwNTg4Q0IwMDhBM0REQiAvKiBSZW1vdGVMZWdh
Y3lDRE1TZXNzaW9uSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVMZWdhY3lDRE1T
ZXNzaW9uSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREU1NTUx
QjI0MDVBM0I3MDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5Lm1lc3NhZ2Vz
LmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5tZXNzYWdlcy5pbjsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RFNTU1MUMyNDA1QTNCNzAwOEEzRERCIC8qIFJlbW90
ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVMZWdhY3lDRE1G
YWN0b3J5UHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RFNTU1MUQyNDA1
QTNCNzAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlDREU1NTUxRTI0MDVBM0RGMDA4QTNEREIgLyogUmVtb3RlTGVnYWN5
Q0RNUHJveHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVtb3RlTGVnYWN5Q0RNUHJveHkubWVzc2FnZXMu
aW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNERTU1NTFGMjQwNUEzREYwMDhBM0RE
QiAvKiBSZW1vdGVMZWdhY3lDRE1Qcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVMZWdhY3lD
RE1Qcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREU1NTUyMDI0MDVBM0RG
MDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
UmVtb3RlTGVnYWN5Q0RNUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlD
REU1NTUyNjI0MDZCODk1MDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5TWVz
c2FnZXNSZXBsaWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94
eU1lc3NhZ2VzUmVwbGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREU1NTUy
NzI0MDZCODk1MDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbk1lc3NhZ2VzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFJlbW90ZUxlZ2FjeUNETVNlc3Npb25NZXNzYWdlcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlDREU1NTUyODI0MDZCODk2MDA4QTNEREIgLyogUmVtb3RlTGVn
YWN5Q0RNUHJveHlNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVMZWdhY3lDRE1Qcm94
eU1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNERTU1NTI5MjQwNkI4
OTYwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHlNZXNzYWdlUmVjZWl2ZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5TWVzc2Fn
ZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RFNTU1MkEyNDA2
Qjg5NjAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUxlZ2FjeUNETVByb3h5TWVzc2FnZVJlY2VpdmVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RFNTU1MkIyNDA2Qjg5NjAwOEEzRERC
IC8qIFJlbW90ZUxlZ2FjeUNETVByb3h5TWVzc2FnZXNSZXBsaWVzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJlbW90ZUxlZ2FjeUNETVByb3h5TWVzc2FnZXNSZXBsaWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUNERTU1NTJDMjQwNkI4OTYwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1G
YWN0b3J5UHJveHlNZXNzYWdlc1JlcGxpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlTGVnYWN5
Q0RNRmFjdG9yeVByb3h5TWVzc2FnZXNSZXBsaWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUNERTU1NTJEMjQwNkI4OTcwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5
UHJveHlNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJv
eHlNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREU1NTUyRTI0MDZC
ODk3MDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbk1lc3NhZ2VSZWNlaXZlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uTWVzc2FnZVJlY2VpdmVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RFNTU1MkYyNDA2Qjg5NzAwOEEz
RERCIC8qIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eU1lc3NhZ2VzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eU1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUNERTU1NTMwMjQwNkI4OTcwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lD
RE1TZXNzaW9uTWVzc2FnZXNSZXBsaWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUxlZ2FjeUNE
TVNlc3Npb25NZXNzYWdlc1JlcGxpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
Q0RFNTU1MzEyNDA2Qjg5NzAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eU1l
c3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVMZWdhY3lDRE1TZXNz
aW9uUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDRTExQUQ0RjFDQkM0N0Y4MDA2ODFFRTUgLyogQ29kZVNpZ25pbmcubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDb2RlU2lnbmluZy5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQ0UxMUFENTExQ0JDNDgyRjAwNjgxRUU1IC8qIENvZGVTaWduaW5n
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvZGVTaWduaW5nLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFMUEwQkNDMUE0OEU2QzYwMDU0RUY3NCAvKiBBc3Nl
cnRpb25TZXJ2aWNlc1NQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBc3Nl
cnRpb25TZXJ2aWNlc1NQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTQ0Miw2
ICs1NDc2LDE1IEBACiAJCQkJQ0RBQzIwQkQyM0ZDMkY3NDAwMjFERUUzIC8qIFJlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvbi5oICovLAogCQkJCUNENDY2MTdGMjQwMTA0NTgwMDQ3Q0EzNSAvKiBSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb24ubWVzc2FnZXMuaW4gKi8sCiAJCQkJQ0RBQzIwQkMyM0ZDMkY3
NDAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIuaCAqLywKKwkJ
CQlDREU1NTRFQjI0MDU4MTgzMDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNLmNwcCAqLywKKwkJ
CQlDREU1NTRFQTI0MDU4MTgzMDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNLmggKi8sCisJCQkJ
Q0RFNTU0RTMyNDA1ODExNDAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnkuY3BwICov
LAorCQkJCUNERTU1NEUyMjQwNTgxMTQwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5
LmggKi8sCisJCQkJQ0RFNTU1MDcyNDA1ODhCODAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETUlk
ZW50aWZpZXIuaCAqLywKKwkJCQlDREU1NTRFRjI0MDU4MUEzMDA4QTNEREIgLyogUmVtb3RlTGVn
YWN5Q0RNU2Vzc2lvbi5jcHAgKi8sCisJCQkJQ0RFNTU0RUUyNDA1ODFBMzAwOEEzRERCIC8qIFJl
bW90ZUxlZ2FjeUNETVNlc3Npb24uaCAqLywKKwkJCQlDREU1NTUwNTI0MDU4MzI0MDA4QTNEREIg
LyogUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5tZXNzYWdlcy5pbiAqLywKKwkJCQlDREU1NTUwOTI0
MDU4OENCMDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXIuaCAqLywK
IAkJCQkwN0I5M0ZGNTIzQUYwQ0I4MDAzNkY4RUEgLyogUmVtb3RlTWVkaWFQbGF5ZXJDb25maWd1
cmF0aW9uLmggKi8sCiAJCQkJMDc5MjMxMzAyMzlCM0IwQzAwOTU5OEUyIC8qIFJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlci5jcHAgKi8sCiAJCQkJMDc5MjMxMzQyMzlCM0IwQzAwOTU5OEUyIC8qIFJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlci5oICovLApAQCAtNTQ5MSw2ICs1NTM0LDE1IEBACiAJCQkJ
Q0RBQzIwODMyM0ZCMjEzNDAwMjFERUUzIC8qIFJlbW90ZUNETVByb3h5LmNwcCAqLywKIAkJCQlD
REFDMjA4MjIzRkIyMTM0MDAyMURFRTMgLyogUmVtb3RlQ0RNUHJveHkuaCAqLywKIAkJCQlDREFD
MjA4NjIzRkIyMTU4MDAyMURFRTMgLyogUmVtb3RlQ0RNUHJveHkubWVzc2FnZXMuaW4gKi8sCisJ
CQkJQ0RFNTU1MUQyNDA1QTNCNzAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94
eS5jcHAgKi8sCisJCQkJQ0RFNTU1MUMyNDA1QTNCNzAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNE
TUZhY3RvcnlQcm94eS5oICovLAorCQkJCUNERTU1NTFCMjQwNUEzQjcwMDhBM0REQiAvKiBSZW1v
dGVMZWdhY3lDRE1GYWN0b3J5UHJveHkubWVzc2FnZXMuaW4gKi8sCisJCQkJQ0RFNTU1MjAyNDA1
QTNERjAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETVByb3h5LmNwcCAqLywKKwkJCQlDREU1NTUx
RjI0MDVBM0RGMDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNUHJveHkuaCAqLywKKwkJCQlDREU1
NTUxRTI0MDVBM0RGMDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNUHJveHkubWVzc2FnZXMuaW4g
Ki8sCisJCQkJQ0RFNTU0RjkyNDA1ODIwODAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETVNlc3Np
b25Qcm94eS5jcHAgKi8sCisJCQkJQ0RFNTU0RjgyNDA1ODIwODAwOEEzRERCIC8qIFJlbW90ZUxl
Z2FjeUNETVNlc3Npb25Qcm94eS5oICovLAorCQkJCUNERTU1NTAwMjQwNTgyODQwMDhBM0REQiAv
KiBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkubWVzc2FnZXMuaW4gKi8sCiAJCQkJMDcyNUVG
QUQyMzlCMDI0NTAwQTUzOEE5IC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcCAq
LywKIAkJCQkwNzI1RUZBQzIzOUFFMzg1MDBBNTM4QTkgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyUHJveHkuaCAqLywKIAkJCQkwNzI1RUZBQjIzOUFFMzg0MDBBNTM4QTkgLyogUmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4gKi8sCkBAIC05OTM1LDYgKzk5ODcsMTgg
QEAKIAkJCQlDREFDMjBGMDIzRkMzODM5MDAyMURFRTMgLyogUmVtb3RlQ0RNUHJveHlNZXNzYWdl
c1JlcGxpZXMuaCAqLywKIAkJCQkwRkYyNEEyQjE4NzlFNEJDMDAzQUJGMEMgLyogUmVtb3RlTGF5
ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJMEZGMjRB
MkMxODc5RTRCQzAwM0FCRjBDIC8qIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNz
YWdlcy5oICovLAorCQkJCUNERTU1NTI5MjQwNkI4OTYwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lD
RE1GYWN0b3J5UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAorCQkJCUNERTU1NTJEMjQwNkI4
OTcwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHlNZXNzYWdlcy5oICovLAor
CQkJCUNERTU1NTJDMjQwNkI4OTYwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJv
eHlNZXNzYWdlc1JlcGxpZXMuaCAqLywKKwkJCQlDREU1NTUyQTI0MDZCODk2MDA4QTNEREIgLyog
UmVtb3RlTGVnYWN5Q0RNUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAorCQkJCUNERTU1NTI4
MjQwNkI4OTYwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1Qcm94eU1lc3NhZ2VzLmggKi8sCisJ
CQkJQ0RFNTU1MkIyNDA2Qjg5NjAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETVByb3h5TWVzc2Fn
ZXNSZXBsaWVzLmggKi8sCisJCQkJQ0RFNTU1MkUyNDA2Qjg5NzAwOEEzRERCIC8qIFJlbW90ZUxl
Z2FjeUNETVNlc3Npb25NZXNzYWdlUmVjZWl2ZXIuY3BwICovLAorCQkJCUNERTU1NTI3MjQwNkI4
OTUwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uTWVzc2FnZXMuaCAqLywKKwkJCQlD
REU1NTUzMDI0MDZCODk3MDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbk1lc3NhZ2Vz
UmVwbGllcy5oICovLAorCQkJCUNERTU1NTMxMjQwNkI4OTcwMDhBM0REQiAvKiBSZW1vdGVMZWdh
Y3lDRE1TZXNzaW9uUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAorCQkJCUNERTU1NTJGMjQw
NkI4OTcwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHlNZXNzYWdlcy5oICov
LAorCQkJCUNERTU1NTI2MjQwNkI4OTUwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1TZXNzaW9u
UHJveHlNZXNzYWdlc1JlcGxpZXMuaCAqLywKIAkJCQkwNzkyMzE0MzIzOUNCQ0I2MDA5NTk4RTIg
LyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQkw
NzkyMzE0NzIzOUNCQ0I3MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyTWVzc2Fn
ZXMuaCAqLywKIAkJCQkwNzkyMzE0NDIzOUNCQ0I2MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyTWVzc2FnZXNSZXBsaWVzLmggKi8sCkBAIC0xMjYwMSw2ICsxMjY2NSwxMCBAQAog
CQkJCTJENzJBMUZBMjEyQkY0NkUwMDUxN0EyMCAvKiBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJl
YS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTBGRjI0QTJEMTg3OUU0QkMwMDNBQkYwQyAvKiBSZW1v
dGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTJEQzE4RkI0MjE4QTZFOUUwMDI1QTg4RCAvKiBSZW1vdGVMYXllclRyZWVWaWV3
cy5tbSBpbiBTb3VyY2VzICovLAorCQkJCUNERTU1NTMyMjQwNkVCOEMwMDhBM0REQiAvKiBSZW1v
dGVMZWdhY3lDRE1GYWN0b3J5UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJQ0RFNTU1MzMyNDA2RUI4QzAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETVByb3h5TWVz
c2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUNERTU1NTM0MjQwNkVCOEMwMDhB
M0REQiAvKiBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCUNERTU1NTM1MjQwNkVCOEMwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1T
ZXNzaW9uUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDc5MjMx
NDkyMzlDQkNCODAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlck1lc3NhZ2VSZWNl
aXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzkyMzE0QjIzOUNCQ0I4MDA5NTk4RTIgLyog
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMDcwMTc4OUUyM0JFOUNGQzAwNUYwRkFBIC8qIFJlbW90ZU1lZGlhUGxheWVy
TUlNRVR5cGVDYWNoZS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5jcHAKaW5kZXggZWY4MjQ5MzQy
NDU1NTExMjcwMzIzODY0NzliNzE3MWNkMjg1ZDJlNi4uMTg0NDE5YmUzYzI1MmNlMzYxOTM3OTkz
NmMxZDRjZjUzNzUzOWI2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRl
ICJNZWRpYVBsYXllclByaXZhdGVSZW1vdGVNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZUNE
TUZhY3RvcnkuaCIKICNpbmNsdWRlICJSZW1vdGVDRE1Qcm94eS5oIgorI2luY2x1ZGUgIlJlbW90
ZUxlZ2FjeUNETUZhY3RvcnkuaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIu
aCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1
ZGUgIlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1lc3NhZ2VzLmgiCkBAIC04Miw2ICs4MywxMSBA
QCBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyJiBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6
c2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTQogfQogI2VuZGlmCiAKK1JlbW90ZU1lZGlhUGxheWVy
TWFuYWdlciYgR1BVUHJvY2Vzc0Nvbm5lY3Rpb246Om1lZGlhUGxheWVyTWFuYWdlcigpCit7Cisg
ICAgcmV0dXJuICpXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zdXBwbGVtZW50PFJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlcj4oKTsKK30KKwogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiBSZW1v
dGVDRE1GYWN0b3J5JiBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6Y2RtRmFjdG9yeSgpCiB7CkBAIC04
OSw2ICs5NSwxMyBAQCBSZW1vdGVDRE1GYWN0b3J5JiBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6Y2Rt
RmFjdG9yeSgpCiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElB
KQorUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeSYgR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OmxlZ2FjeUNE
TUZhY3RvcnkoKQoreworICAgIHJldHVybiAqV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc3VwcGxl
bWVudDxSZW1vdGVMZWdhY3lDRE1GYWN0b3J5PigpOworfQorI2VuZGlmCisKIGJvb2wgR1BVUHJv
Y2Vzc0Nvbm5lY3Rpb246OmRpc3BhdGNoTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVj
ZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L0dQVVByb2Nlc3NDb25uZWN0aW9uLmgKaW5kZXggZjBjMzk1ODhiYzI0ZmJlNWQ0Nzc0ZjhiMGVh
OTJlYTE1MmY3M2I3MS4uMzRlYTFjNmE3Y2I0M2Q4ZDljYmMxZmZiYmU3NDhjMDYyZTcwZTYwZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVj
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5l
Y3Rpb24uaApAQCAtNDEsNiArNDEsOCBAQCBjbGFzcyBEYXRhUmVmZXJlbmNlOwogbmFtZXNwYWNl
IFdlYktpdCB7CiAKIGNsYXNzIFJlbW90ZUNETUZhY3Rvcnk7CitjbGFzcyBSZW1vdGVNZWRpYVBs
YXllck1hbmFnZXI7CitjbGFzcyBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5OwogCiBjbGFzcyBHUFVQ
cm9jZXNzQ29ubmVjdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPEdQVVByb2Nlc3NDb25uZWN0aW9u
PiwgSVBDOjpDb25uZWN0aW9uOjpDbGllbnQgewogcHVibGljOgpAQCAtNjEsMTAgKzYzLDE2IEBA
IHB1YmxpYzoKICAgICBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyJiBzYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyKCk7CiAjZW5kaWYKIAorICAgIFJlbW90ZU1lZGlhUGxheWVy
TWFuYWdlciYgbWVkaWFQbGF5ZXJNYW5hZ2VyKCk7CisKICNpZiBFTkFCTEUoRU5DUllQVEVEX01F
RElBKQogICAgIFJlbW90ZUNETUZhY3RvcnkmIGNkbUZhY3RvcnkoKTsKICNlbmRpZgogCisjaWYg
RU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCisgICAgUmVtb3RlTGVnYWN5Q0RNRmFjdG9y
eSYgbGVnYWN5Q0RNRmFjdG9yeSgpOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgR1BVUHJvY2Vz
c0Nvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1v
dGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclBy
aXZhdGVSZW1vdGUuY3BwCmluZGV4IDJmMTQwMTAzZjhhYzk0NzM3ZDk3YjYxZjI5Y2UyMGM2YmRj
MDdhNjYuLjg2ZjJiMWJkMGU4NGMwZTAyZGYyNzI1YjAzNDU5NTRlY2U5MTdmNmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKQEAgLTMwLDYgKzMwLDkgQEAKIAogI2luY2x1ZGUgIkF1
ZGlvVHJhY2tQcml2YXRlUmVtb3RlLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUg
IlJlbW90ZUxlZ2FjeUNETS5oIgorI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETUZhY3RvcnkuaCIK
KyNpbmNsdWRlICJSZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxh
eWVyUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKQEAgLTM4
LDYgKzQxLDggQEAKICNpbmNsdWRlICJWaWRlb1RyYWNrUHJpdmF0ZVJlbW90ZS5oIgogI2luY2x1
ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9HZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg+Cisj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvVHlwZWRBcnJheVR5cGUuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL01lZGlhUGxheWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1MYXllci5oPgpAQCAtNTMsNiArNTgsMTAgQEAKICNp
bmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZS5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTEVHQUNZ
X0VOQ1JZUFRFRF9NRURJQSkKKyNpbmNsdWRlIDxXZWJDb3JlL0xlZ2FjeUNETS5oPgorI2VuZGlm
CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKIGV4dGVy
biBXVEZMb2dDaGFubmVsIExvZ01lZGlhOwpAQCAtOTEwLDE1ICs5MTksMzggQEAgc3RkOjp1bmlx
dWVfcHRyPExlZ2FjeUNETVNlc3Npb24+IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y3JlYXRl
U2Vzc2lvbihjb25zdAogICAgIHJldHVybiBudWxscHRyOwogfQogCi12b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZTo6c2V0Q0RNU2Vzc2lvbihMZWdhY3lDRE1TZXNzaW9uKikKK3ZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRDRE0oTGVnYWN5Q0RNKiBjZG0pCiB7Ci0gICAgbm90
SW1wbGVtZW50ZWQoKTsKKyAgICBpZiAoIWNkbSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0
byByZW1vdGVDRE0gPSBtX21hbmFnZXIuZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5sZWdhY3lDRE1G
YWN0b3J5KCkuZmluZENETShjZG0tPmNkbVByaXZhdGUoKSk7CisgICAgaWYgKCFyZW1vdGVDRE0p
CisgICAgICAgIHJldHVybjsKKworICAgIHJlbW90ZUNETS0+c2V0UGxheWVySWQobV9pZCk7Cit9
CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRDRE1TZXNzaW9uKExlZ2FjeUNE
TVNlc3Npb24qIHNlc3Npb24pCit7CisgICAgaWYgKCFzZXNzaW9uIHx8IHNlc3Npb24tPnR5cGUo
KSAhPSBDRE1TZXNzaW9uVHlwZVJlbW90ZSkgeworICAgICAgICBjb25uZWN0aW9uKCkuc2VuZChN
ZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6U2V0TGVnYWN5Q0RNU2Vzc2lvbih7IH0p
LCBtX2lkKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gcmVtb3RlU2Vzc2lv
biA9IHN0YXRpY19jYXN0PFJlbW90ZUxlZ2FjeUNETVNlc3Npb24qPihzZXNzaW9uKTsKKyAgICBj
b25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6U2V0TGVn
YWN5Q0RNU2Vzc2lvbihyZW1vdGVTZXNzaW9uLT5pZGVudGlmaWVyKCkpLCBtX2lkKTsKIH0KIAog
dm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmtleUFkZGVkKCkKIHsKICAgICBjb25uZWN0
aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6S2V5QWRkZWQoKSwg
bV9pZCk7CiB9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjptZWRpYVBsYXllcktl
eU5lZWRlZChJUEM6OkRhdGFSZWZlcmVuY2UmJiBtZXNzYWdlKQoreworICAgIG1fcGxheWVyLT5r
ZXlOZWVkZWQoVWludDhBcnJheTo6Y3JlYXRlKG1lc3NhZ2UuZGF0YSgpLCBtZXNzYWdlLnNpemUo
KSkucHRyKCkpOworfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclBy
aXZhdGVSZW1vdGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlLmgKaW5kZXggNTBiNTk3ZDliNzkzNDRhZmQ0MWVkNmUzMmM1YTc4
OWQzOTAzM2UzYi4uNmM1NjZhODNkMmU0MWUxYjRhZTUyMzMyOWNhY2IxMzAyZDI2ZDY1NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclBy
aXZhdGVSZW1vdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oCkBAIC0zMDUsOCArMzA1LDEwIEBAIHByaXZhdGU6CiAK
ICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
V2ViQ29yZTo6TGVnYWN5Q0RNU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbihjb25zdCBTdHJpbmcmLCBX
ZWJDb3JlOjpMZWdhY3lDRE1TZXNzaW9uQ2xpZW50KikgZmluYWw7CisgICAgdm9pZCBzZXRDRE0o
V2ViQ29yZTo6TGVnYWN5Q0RNKikgZmluYWw7CiAgICAgdm9pZCBzZXRDRE1TZXNzaW9uKFdlYkNv
cmU6OkxlZ2FjeUNETVNlc3Npb24qKSBmaW5hbDsKICAgICB2b2lkIGtleUFkZGVkKCkgZmluYWw7
CisgICAgdm9pZCBtZWRpYVBsYXllcktleU5lZWRlZChJUEM6OkRhdGFSZWZlcmVuY2UmJik7CiAj
ZW5kaWYKIAogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluCmluZGV4IDk0NDhkZTAyZjFhYzllNDY0MzgzM2MyZDU1
Mzc1OWM5ODMwYjgxNTcuLmU3ZDg2YzdmNGMzZGNlOGIwYjk4ZWY2NjBhMTI2OGZkZDlhZTFjM2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluCkBAIC03OCw2
ICs3OCwxMCBAQCBtZXNzYWdlcyAtPiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGUgTm90UmVmQ291
bnRlZCB7CiAgICAgSW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQoU3RyaW5nIGluaXREYXRh
VHlwZSwgSVBDOjpEYXRhUmVmZXJlbmNlIGluaXREYXRhKQogI2VuZGlmCiAKKyNpZiBFTkFCTEUo
TEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKKyAgICBNZWRpYVBsYXllcktleU5lZWRlZChJUEM6OkRh
dGFSZWZlcmVuY2UgbWVzc2FnZSkKKyNlbmRpZgorCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlC
QUNLX1RBUkdFVCkKICAgICBDdXJyZW50UGxheWJhY2tUYXJnZXRJc1dpcmVsZXNzQ2hhbmdlZChi
b29sIGlzQ3VycmVudFBsYXliYWNrVGFyZ2V0V2lyZWxlc3MpCiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4yNDA2NjhlOWJiZWNiZTkwMmEyMTk3ZGExMWZkNjE0ODJjZWQ1YWFmCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVM
ZWdhY3lDRE0uY3BwCkBAIC0wLDAgKzEsODkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlTGVnYWN5Q0RNLmgiCisKKyNpZiBFTkFCTEUoR1BVX1BS
T0NFU1MpICYmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSAiUmVt
b3RlTGVnYWN5Q0RNRmFjdG9yeS5oIgorI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETVByb3h5TWVz
c2FnZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmgiCisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworc3RkOjp1bmlxdWVfcHRy
PFJlbW90ZUxlZ2FjeUNETT4gUmVtb3RlTGVnYWN5Q0RNOjpjcmVhdGUoV2Vha1B0cjxSZW1vdGVM
ZWdhY3lDRE1GYWN0b3J5PiYmIGZhY3RvcnksIFJlbW90ZUxlZ2FjeUNETUlkZW50aWZpZXIgaWQp
Cit7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMZWdhY3lDRE0+KG5ldyBSZW1v
dGVMZWdhY3lDRE0oV1RGTW92ZShmYWN0b3J5KSwgV1RGTW92ZShpZCkpKTsKK30KKworUmVtb3Rl
TGVnYWN5Q0RNOjpSZW1vdGVMZWdhY3lDRE0oV2Vha1B0cjxSZW1vdGVMZWdhY3lDRE1GYWN0b3J5
PiYmIGZhY3RvcnksIFJlbW90ZUxlZ2FjeUNETUlkZW50aWZpZXImJiBpZCkKKyAgICA6IG1fZmFj
dG9yeShXVEZNb3ZlKGZhY3RvcnkpKQorICAgICwgbV9pZGVudGlmaWVyKFdURk1vdmUoaWQpKQor
eworfQorCitSZW1vdGVMZWdhY3lDRE06On5SZW1vdGVMZWdhY3lDRE0oKSA9IGRlZmF1bHQ7CisK
K2Jvb2wgUmVtb3RlTGVnYWN5Q0RNOjpzdXBwb3J0c01JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUpCit7CisgICAgaWYgKCFtX2ZhY3RvcnkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIGJvb2wgc3VwcG9ydGVkID0gZmFsc2U7CisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29u
bmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlTGVnYWN5Q0RN
UHJveHk6OlN1cHBvcnRzTUlNRVR5cGUobWltZVR5cGUpLCBNZXNzYWdlczo6UmVtb3RlTGVnYWN5
Q0RNUHJveHk6OlN1cHBvcnRzTUlNRVR5cGU6OlJlcGx5KHN1cHBvcnRlZCksIG1faWRlbnRpZmll
cik7CisgICAgcmV0dXJuIHN1cHBvcnRlZDsKK30KKworc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6
OkxlZ2FjeUNETVNlc3Npb24+IFJlbW90ZUxlZ2FjeUNETTo6Y3JlYXRlU2Vzc2lvbihXZWJDb3Jl
OjpMZWdhY3lDRE1TZXNzaW9uQ2xpZW50KiBjbGllbnQpCit7CisgICAgaWYgKCFtX2ZhY3Rvcnkp
CisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgU3RyaW5nIHN0b3JhZ2VEaXJlY3Rvcnkg
PSBjbGllbnQgPyBjbGllbnQtPm1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSA6IGVtcHR5U3Ry
aW5nKCk7CisKKyAgICBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllciBpZDsKKyAgICBt
X2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1l
c3NhZ2VzOjpSZW1vdGVMZWdhY3lDRE1Qcm94eTo6Q3JlYXRlU2Vzc2lvbihzdG9yYWdlRGlyZWN0
b3J5KSwgTWVzc2FnZXM6OlJlbW90ZUxlZ2FjeUNETVByb3h5OjpDcmVhdGVTZXNzaW9uOjpSZXBs
eShpZCksIG1faWRlbnRpZmllcik7CisgICAgaWYgKCFpZCkKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgcmV0dXJuIFJlbW90ZUxlZ2FjeUNETVNlc3Npb246OmNyZWF0ZShtX2ZhY3Rvcnks
IFdURk1vdmUoaWQpKTsKK30KKwordm9pZCBSZW1vdGVMZWdhY3lDRE06OnNldFBsYXllcklkKE1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQpCit7CisgICAgaWYgKCFtX2ZhY3Rv
cnkpCisgICAgICAgIHJldHVybjsKKworICAgIE9wdGlvbmFsPE1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZUlkZW50aWZpZXI+IG9wdGlvbmFsSWQ7CisgICAgaWYgKGlkKQorICAgICAgICBvcHRpb25h
bElkID0gaWQ7CisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rp
b24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVMZWdhY3lDRE1Qcm94eTo6U2V0UGxheWVySWQob3B0
aW9uYWxJZCksIG1faWRlbnRpZmllcik7Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETS5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE0uaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5mNTRjZDNjYzQyOTQxNzE2NjE5ZjUwM2I2M2Y5NzNiMTFhMWUyMjQwCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lD
RE0uaApAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQorCisj
aW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllci5oIgorI2luY2x1ZGUg
IlJlbW90ZUxlZ2FjeUNETUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0xlZ2FjeUNE
TVByaXZhdGUuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CitjbGFzcyBTZXR0aW5nczsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFJl
bW90ZUxlZ2FjeUNETUZhY3Rvcnk7CitjbGFzcyBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uOworCisK
K2NsYXNzIFJlbW90ZUxlZ2FjeUNETSBmaW5hbAorICAgIDogcHVibGljIFdlYkNvcmU6OkNETVBy
aXZhdGVJbnRlcmZhY2UKKyAgICAsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxSZW1vdGVMZWdhY3lD
RE0+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxlZ2FjeUNE
TT4gY3JlYXRlKFdlYWtQdHI8UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeT4mJiwgUmVtb3RlTGVnYWN5
Q0RNSWRlbnRpZmllcik7CisgICAgdmlydHVhbCB+UmVtb3RlTGVnYWN5Q0RNKCk7CisKKyAgICBi
b29sIHN1cHBvcnRzTUlNRVR5cGUoY29uc3QgU3RyaW5nJikgZmluYWw7CisgICAgc3RkOjp1bmlx
dWVfcHRyPFdlYkNvcmU6OkxlZ2FjeUNETVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oV2ViQ29yZTo6
TGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCopIGZpbmFsOworICAgIHZvaWQgc2V0UGxheWVySWQoTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllcik7CisKK3ByaXZhdGU6CisgICAgUmVtb3Rl
TGVnYWN5Q0RNKFdlYWtQdHI8UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeT4mJiwgUmVtb3RlTGVnYWN5
Q0RNSWRlbnRpZmllciYmKTsKKworICAgIFdlYWtQdHI8UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeT4g
bV9mYWN0b3J5OworICAgIFJlbW90ZUxlZ2FjeUNETUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwor
fTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnkuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk4
ZmFhMzIyNzIzM2MwZjExZDA2NmU5YTgzN2FkOWNjNjg0OTE2YjYKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3Rv
cnkuY3BwCkBAIC0wLDAgKzEsMTU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETUZhY3RvcnkuaCIKKworI2lmIEVOQUJMRShHUFVf
UFJPQ0VTUykgJiYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRlICJH
UFVQcm9jZXNzQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZS5oIgorI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETS5oIgorI2luY2x1ZGUgIlJlbW90ZUxlZ2Fj
eUNETUZhY3RvcnlQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlTGVnYWN5Q0RNU2Vz
c2lvbi5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0xlZ2Fj
eUNETS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3MuaD4KKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitSZW1vdGVMZWdhY3lDRE1GYWN0b3J5
OjpSZW1vdGVMZWdhY3lDRE1GYWN0b3J5KFdlYlByb2Nlc3MmIHByb2Nlc3MpCisgICAgOiBtX3By
b2Nlc3MocHJvY2VzcykKK3sKK30KKworUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeTo6flJlbW90ZUxl
Z2FjeUNETUZhY3RvcnkoKSA9IGRlZmF1bHQ7CisKK3ZvaWQgUmVtb3RlTGVnYWN5Q0RNRmFjdG9y
eTo6cmVnaXN0ZXJGYWN0b3J5KCkKK3sKKyAgICBMZWdhY3lDRE06OmNsZWFyRmFjdG9yaWVzKCk7
CisgICAgTGVnYWN5Q0RNOjpyZWdpc3RlckNETUZhY3RvcnkoCisgICAgICAgIFt3ZWFrVGhpcyA9
IG1ha2VXZWFrUHRyKHRoaXMpXSAoTGVnYWN5Q0RNKiBwcml2YXRlQ0RNKSAtPiBzdGQ6OnVuaXF1
ZV9wdHI8V2ViQ29yZTo6Q0RNUHJpdmF0ZUludGVyZmFjZT4geworICAgICAgICAgICAgaWYgKHdl
YWtUaGlzKQorICAgICAgICAgICAgICAgIHJldHVybiB3ZWFrVGhpcy0+Y3JlYXRlQ0RNKHByaXZh
dGVDRE0pOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0sCisgICAgICAg
IFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXSAoY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0p
IHsKKyAgICAgICAgICAgIHJldHVybiB3ZWFrVGhpcyA/IHdlYWtUaGlzLT5zdXBwb3J0c0tleVN5
c3RlbShrZXlTeXN0ZW0pIDogZmFsc2U7CisgICAgICAgIH0sCisgICAgICAgIFt3ZWFrVGhpcyA9
IG1ha2VXZWFrUHRyKHRoaXMpXSAoY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUpIHsKKyAgICAgICAgICAgIHJldHVybiB3ZWFrVGhpcyA/IHdlYWtUaGlzLT5z
dXBwb3J0c0tleVN5c3RlbUFuZE1pbWVUeXBlKGtleVN5c3RlbSwgbWltZVR5cGUpIDogZmFsc2U7
CisgICAgICAgIH0KKyAgICApOworfQorCitjb25zdCBjaGFyKiBSZW1vdGVMZWdhY3lDRE1GYWN0
b3J5OjpzdXBwbGVtZW50TmFtZSgpCit7CisgICAgcmV0dXJuICJSZW1vdGVMZWdhY3lDRE1GYWN0
b3J5IjsKK30KKworR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIFJlbW90ZUxlZ2FjeUNETUZhY3Rvcnk6
OmdwdVByb2Nlc3NDb25uZWN0aW9uKCkKK3sKKyAgICByZXR1cm4gbV9wcm9jZXNzLmVuc3VyZUdQ
VVByb2Nlc3NDb25uZWN0aW9uKCk7Cit9CisKK2Jvb2wgUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeTo6
c3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pCit7CisgICAgYXV0byBm
b3VuZEluQ2FjaGUgPSBtX3N1cHBvcnRzS2V5U3lzdGVtQ2FjaGUuZmluZChrZXlTeXN0ZW0pOwor
ICAgIGlmIChmb3VuZEluQ2FjaGUgIT0gbV9zdXBwb3J0c0tleVN5c3RlbUNhY2hlLmVuZCgpKQor
ICAgICAgICByZXR1cm4gZm91bmRJbkNhY2hlLT52YWx1ZTsKKworICAgIGJvb2wgc3VwcG9ydGVk
ID0gZmFsc2U7CisgICAgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5
bmMoTWVzc2FnZXM6OlJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eTo6U3VwcG9ydHNLZXlTeXN0
ZW0oa2V5U3lzdGVtLCBXVEY6Om51bGxvcHQpLCBNZXNzYWdlczo6UmVtb3RlTGVnYWN5Q0RNRmFj
dG9yeVByb3h5OjpTdXBwb3J0c0tleVN5c3RlbTo6UmVwbHkoc3VwcG9ydGVkKSwgeyB9KTsKKyAg
ICBtX3N1cHBvcnRzS2V5U3lzdGVtQ2FjaGUuc2V0KGtleVN5c3RlbSwgc3VwcG9ydGVkKTsKKyAg
ICByZXR1cm4gc3VwcG9ydGVkOworfQorCitib29sIFJlbW90ZUxlZ2FjeUNETUZhY3Rvcnk6OnN1
cHBvcnRzS2V5U3lzdGVtQW5kTWltZVR5cGUoY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUpCit7CisgICAgYXV0byBrZXkgPSBzdGQ6Om1ha2VfcGFpcihrZXlT
eXN0ZW0sIG1pbWVUeXBlKTsKKyAgICBhdXRvIGZvdW5kSW5DYWNoZSA9IG1fc3VwcG9ydHNLZXlT
eXN0ZW1BbmRNaW1lVHlwZUNhY2hlLmZpbmQoa2V5KTsKKyAgICBpZiAoZm91bmRJbkNhY2hlICE9
IG1fc3VwcG9ydHNLZXlTeXN0ZW1BbmRNaW1lVHlwZUNhY2hlLmVuZCgpKQorICAgICAgICByZXR1
cm4gZm91bmRJbkNhY2hlLT52YWx1ZTsKKworICAgIGJvb2wgc3VwcG9ydGVkID0gZmFsc2U7Cisg
ICAgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6
OlJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eTo6U3VwcG9ydHNLZXlTeXN0ZW0oa2V5U3lzdGVt
LCBtaW1lVHlwZSksIE1lc3NhZ2VzOjpSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk6OlN1cHBv
cnRzS2V5U3lzdGVtOjpSZXBseShzdXBwb3J0ZWQpLCB7IH0pOworICAgIG1fc3VwcG9ydHNLZXlT
eXN0ZW1BbmRNaW1lVHlwZUNhY2hlLnNldChrZXksIHN1cHBvcnRlZCk7CisgICAgcmV0dXJuIHN1
cHBvcnRlZDsKK30KKworc3RkOjp1bmlxdWVfcHRyPENETVByaXZhdGVJbnRlcmZhY2U+IFJlbW90
ZUxlZ2FjeUNETUZhY3Rvcnk6OmNyZWF0ZUNETShXZWJDb3JlOjpMZWdhY3lDRE0qIGNkbSkKK3sK
KyAgICBpZiAoIWNkbSkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgT3B0aW9uYWw8TWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlSWRlbnRpZmllcj4gcGxheWVySWQ7CisgICAgaWYgKGF1dG8gcGxheWVyID0gY2RtLT5t
ZWRpYVBsYXllcigpKQorICAgICAgICBwbGF5ZXJJZCA9IGdwdVByb2Nlc3NDb25uZWN0aW9uKCku
bWVkaWFQbGF5ZXJNYW5hZ2VyKCkuZmluZFJlbW90ZVBsYXllcklkKHBsYXllci0+cGxheWVyUHJp
dmF0ZSgpKTsKKworICAgIFJlbW90ZUxlZ2FjeUNETUlkZW50aWZpZXIgaWQ7CisgICAgZ3B1UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUxl
Z2FjeUNETUZhY3RvcnlQcm94eTo6Q3JlYXRlQ0RNKGNkbS0+a2V5U3lzdGVtKCksIFdURk1vdmUo
cGxheWVySWQpKSwgTWVzc2FnZXM6OlJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eTo6Q3JlYXRl
Q0RNOjpSZXBseShpZCksIHsgfSk7CisgICAgaWYgKCFpZCkKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgYXV0byByZW1vdGVDRE0gPSBSZW1vdGVMZWdhY3lDRE06OmNyZWF0ZShtYWtlV2Vh
a1B0cih0aGlzKSwgaWQpOworICAgIG1fY2Rtcy5zZXQoaWQsIG1ha2VXZWFrUHRyKHJlbW90ZUNE
TS5nZXQoKSkpOworICAgIHJldHVybiByZW1vdGVDRE07Cit9CisKK3ZvaWQgUmVtb3RlTGVnYWN5
Q0RNRmFjdG9yeTo6YWRkU2Vzc2lvbihSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllciBp
ZCwgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxlZ2FjeUNETVNlc3Npb24+JiYgc2Vzc2lvbikKK3sK
KyAgICBBU1NFUlQoIW1fc2Vzc2lvbnMuY29udGFpbnMoaWQpKTsKKyAgICBtX3Nlc3Npb25zLnNl
dChpZCwgV1RGTW92ZShzZXNzaW9uKSk7Cit9CisKK3ZvaWQgUmVtb3RlTGVnYWN5Q0RNRmFjdG9y
eTo6cmVtb3ZlU2Vzc2lvbihSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllciBpZCkKK3sK
KyAgICBBU1NFUlQobV9zZXNzaW9ucy5jb250YWlucyhpZCkpOworICAgIG1fc2Vzc2lvbnMucmVt
b3ZlKGlkKTsKK30KKworUmVtb3RlTGVnYWN5Q0RNKiBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5Ojpm
aW5kQ0RNKENETVByaXZhdGVJbnRlcmZhY2UqIHByaXZhdGVJbnRlcmZhY2UpIGNvbnN0Cit7Cisg
ICAgZm9yIChhdXRvJiBjZG0gOiBtX2NkbXMudmFsdWVzKCkpIHsKKyAgICAgICAgaWYgKHByaXZh
dGVJbnRlcmZhY2UgPT0gY2RtLmdldCgpKQorICAgICAgICAgICAgcmV0dXJuIGNkbS5nZXQoKTsK
KyAgICB9CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3ZvaWQgUmVtb3RlTGVnYWN5Q0RNRmFj
dG9yeTo6ZGlkUmVjZWl2ZVNlc3Npb25NZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
biwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbV9z
ZXNzaW9ucy5nZXQobWFrZU9iamVjdElkZW50aWZpZXI8UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklk
ZW50aWZpZXJUeXBlPihkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSkpKQorICAgICAgICBzZXNzaW9u
LT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKK30KKworCit9CisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVMZWdhY3lDRE1GYWN0b3J5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUxlZ2FjeUNETUZhY3RvcnkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZGMwOWJmOTA0OTI2OTRmZmI0
OWYwODE4M2ZkNmIyZWExZjQ3MGRhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5LmgKQEAgLTAsMCArMSw5
NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNT
KSAmJiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgIlJlbW90ZUxl
Z2FjeUNETUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRl
bnRpZmllci5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3NTdXBwbGVtZW50LmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9MZWdhY3lDRE0uaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUg
PHd0Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFjZSBJUEMgeworY2xhc3MgQ29ubmVjdGlvbjsKK2Ns
YXNzIERlY29kZXI7Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFNldHRpbmdzOwor
fQorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBDRE1Qcml2YXRlSW50ZXJmYWNlOworY2xh
c3MgTGVnYWN5Q0RNOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgR1BVUHJvY2Vz
c0Nvbm5lY3Rpb247CitjbGFzcyBSZW1vdGVMZWdhY3lDRE07CitjbGFzcyBSZW1vdGVMZWdhY3lD
RE1TZXNzaW9uOworY2xhc3MgV2ViUHJvY2VzczsKKworCitjbGFzcyBSZW1vdGVMZWdhY3lDRE1G
YWN0b3J5IGZpbmFsCisgICAgOiBwdWJsaWMgV2ViUHJvY2Vzc1N1cHBsZW1lbnQKKyAgICAsIHB1
YmxpYyBDYW5NYWtlV2Vha1B0cjxSZW1vdGVMZWdhY3lDRE1GYWN0b3J5PiB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgZXhwbGljaXQgUmVtb3RlTGVnYWN5Q0RN
RmFjdG9yeShXZWJQcm9jZXNzJik7CisgICAgdmlydHVhbCB+UmVtb3RlTGVnYWN5Q0RNRmFjdG9y
eSgpOworCisgICAgdm9pZCByZWdpc3RlckZhY3RvcnkoKTsKKworICAgIHN0YXRpYyBjb25zdCBj
aGFyKiBzdXBwbGVtZW50TmFtZSgpOworICAgIFdlYlByb2Nlc3MmIHByb2Nlc3MoKSBjb25zdCB7
IHJldHVybiBtX3Byb2Nlc3M7IH0KKworICAgIEdQVVByb2Nlc3NDb25uZWN0aW9uJiBncHVQcm9j
ZXNzQ29ubmVjdGlvbigpOworCisgICAgdm9pZCBkaWRSZWNlaXZlU2Vzc2lvbk1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CisKKyAgICB2b2lkIGFkZFNlc3Npb24oUmVt
b3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMZWdh
Y3lDRE1TZXNzaW9uPiYmKTsKKyAgICB2b2lkIHJlbW92ZVNlc3Npb24oUmVtb3RlTGVnYWN5Q0RN
U2Vzc2lvbklkZW50aWZpZXIpOworCisgICAgUmVtb3RlTGVnYWN5Q0RNKiBmaW5kQ0RNKFdlYkNv
cmU6OkNETVByaXZhdGVJbnRlcmZhY2UqKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBib29sIHN1
cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYpOworICAgIGJvb2wgc3VwcG9ydHNLZXlTeXN0
ZW1BbmRNaW1lVHlwZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8V2ViQ29yZTo6Q0RNUHJpdmF0ZUludGVyZmFjZT4gY3JlYXRlQ0RNKFdlYkNvcmU6
OkxlZ2FjeUNETSopOworCisgICAgSGFzaE1hcDxSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRp
Zmllciwgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxlZ2FjeUNETVNlc3Npb24+PiBtX3Nlc3Npb25z
OworICAgIEhhc2hNYXA8UmVtb3RlTGVnYWN5Q0RNSWRlbnRpZmllciwgV2Vha1B0cjxSZW1vdGVM
ZWdhY3lDRE0+PiBtX2NkbXM7CisgICAgSGFzaE1hcDxTdHJpbmcsIGJvb2w+IG1fc3VwcG9ydHNL
ZXlTeXN0ZW1DYWNoZTsKKyAgICBIYXNoTWFwPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4sIGJv
b2w+IG1fc3VwcG9ydHNLZXlTeXN0ZW1BbmRNaW1lVHlwZUNhY2hlOworICAgIFdlYlByb2Nlc3Mm
IG1fcHJvY2VzczsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETUlkZW50aWZpZXIuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNSWRlbnRpZmllci5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjdmYjliN2EyZjBkNjJiMTlkYTk5YmMzNWFjY2RjNmExMDc3N2VmZWIKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUxlZ2FjeUNETUlkZW50aWZpZXIuaApAQCAtMCwwICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShMRUdBQ1lfRU5D
UllQVEVEX01FRElBKQorCisjaW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4KKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK2VudW0gUmVtb3RlTGVnYWN5Q0RNSWRlbnRpZmllclR5cGUgeyB9
OwordXNpbmcgUmVtb3RlTGVnYWN5Q0RNSWRlbnRpZmllciA9IE9iamVjdElkZW50aWZpZXI8UmVt
b3RlTGVnYWN5Q0RNSWRlbnRpZmllclR5cGU+OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUxlZ2FjeUNETVNlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MTg0MzgzMjg5Nzdk
YjdmZThlODMyM2JhODNhMjRjNWNjNzY0NjFkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmNwcApAQCAt
MCwwICsxLDE2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJSZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYm
IEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5j
ZS5oIgorI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETUZhY3RvcnkuaCIKKyNpbmNsdWRlICJSZW1v
dGVMZWdhY3lDRE1TZXNzaW9uUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9UeXBlZEFycmF5VHlwZS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CisKK3N0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IGNvbnZlcnRU
b0FycmF5QnVmZmVyKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYmIGJ1ZmZlcikKK3sK
KyAgICBpZiAoYnVmZmVyLmJ1ZmZlcigpKQorICAgICAgICByZXR1cm4gQXJyYXlCdWZmZXI6OmNy
ZWF0ZShidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICByZXR1cm4gbnVsbHB0cjsK
K30KKworc3RhdGljIFJlZlB0cjxVaW50OEFycmF5PiBjb252ZXJ0VG9VaW50OEFycmF5KElQQzo6
U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYmIGJ1ZmZlcikKK3sKKyAgICBhdXRvIGFycmF5QnVm
ZmVyID0gY29udmVydFRvQXJyYXlCdWZmZXIoV1RGTW92ZShidWZmZXIpKTsKKyAgICBpZiAoIWFy
cmF5QnVmZmVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHNpemVfdCBzaXplSW5C
eXRlcyA9IGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCk7CisgICAgcmV0dXJuIFVpbnQ4QXJyYXk6
OmNyZWF0ZShXVEZNb3ZlKGFycmF5QnVmZmVyKSwgMCwgc2l6ZUluQnl0ZXMpOworfQorCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KK3N0YXRpYyBPcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFS
ZWZlcmVuY2U+IGNvbnZlcnRUb09wdGlvbmFsRGF0YVJlZmVyZW5jZShUIGFycmF5KQoreworICAg
IGlmICghYXJyYXkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHsg
U2hhcmVkQnVmZmVyOjpjcmVhdGUoYXJyYXktPmRhdGEoKSwgYXJyYXktPmJ5dGVMZW5ndGgoKSkg
fTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdGF0aWMgSVBDOjpTaGFyZWRCdWZmZXJE
YXRhUmVmZXJlbmNlIGNvbnZlcnRUb0RhdGFSZWZlcmVuY2UoVCBhcnJheSkKK3sKKyAgICBpZiAo
IWFycmF5KQorICAgICAgICByZXR1cm4geyB9OworICAgIHJldHVybiB7IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGFycmF5LT5kYXRhKCksIGFycmF5LT5ieXRlTGVuZ3RoKCkpIH07Cit9CisKK3N0ZDo6
dW5pcXVlX3B0cjxSZW1vdGVMZWdhY3lDRE1TZXNzaW9uPiBSZW1vdGVMZWdhY3lDRE1TZXNzaW9u
OjpjcmVhdGUoV2Vha1B0cjxSZW1vdGVMZWdhY3lDRE1GYWN0b3J5PiBmYWN0b3J5LCBSZW1vdGVM
ZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllciYmIGlkKQoreworICAgIHJldHVybiBzdGQ6OnVuaXF1
ZV9wdHI8UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbj4obmV3IFJlbW90ZUxlZ2FjeUNETVNlc3Npb24o
V1RGTW92ZShmYWN0b3J5KSwgV1RGTW92ZShpZCkpKTsKK30KKworUmVtb3RlTGVnYWN5Q0RNU2Vz
c2lvbjo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbihXZWFrUHRyPFJlbW90ZUxlZ2FjeUNETUZhY3Rv
cnk+IGZhY3RvcnksIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyJiYgaWQpCisgICAg
OiBtX2ZhY3RvcnkoV1RGTW92ZShmYWN0b3J5KSkKKyAgICAsIG1faWRlbnRpZmllcihXVEZNb3Zl
KGlkKSkKK3sKK30KKworUmVmUHRyPFVpbnQ4QXJyYXk+IFJlbW90ZUxlZ2FjeUNETVNlc3Npb246
OmdlbmVyYXRlS2V5UmVxdWVzdChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBVaW50OEFycmF5KiBp
bml0RGF0YSwgU3RyaW5nJiBkZXN0aW5hdGlvblVSTCwgdW5zaWduZWQgc2hvcnQmIGVycm9yQ29k
ZSwgdWludDMyX3QmIHN5c3RlbUNvZGUpCit7CisgICAgaWYgKCFtX2ZhY3RvcnkgfHwgIWluaXRE
YXRhKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8gaXBjSW5pdERhdGEgPSBj
b252ZXJ0VG9EYXRhUmVmZXJlbmNlKGluaXREYXRhKTsKKyAgICBPcHRpb25hbDxJUEM6OlNoYXJl
ZEJ1ZmZlckRhdGFSZWZlcmVuY2U+IGlwY05leHRNZXNzYWdlOworICAgIG1fZmFjdG9yeS0+Z3B1
UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90
ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6R2VuZXJhdGVLZXlSZXF1ZXN0KG1pbWVUeXBlLCBpcGNJ
bml0RGF0YSksIE1lc3NhZ2VzOjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OkdlbmVyYXRl
S2V5UmVxdWVzdDo6UmVwbHkoaXBjTmV4dE1lc3NhZ2UsIGRlc3RpbmF0aW9uVVJMLCBlcnJvckNv
ZGUsIHN5c3RlbUNvZGUpLCBtX2lkZW50aWZpZXIpOworCisgICAgaWYgKCFpcGNOZXh0TWVzc2Fn
ZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gY29udmVydFRvVWludDhB
cnJheShXVEZNb3ZlKCppcGNOZXh0TWVzc2FnZSkpOworfQorCit2b2lkIFJlbW90ZUxlZ2FjeUNE
TVNlc3Npb246OnJlbGVhc2VLZXlzKCkKK3sKKyAgICBpZiAoIW1fZmFjdG9yeSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rp
b24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OlJlbGVhc2VL
ZXlzKCksIG1faWRlbnRpZmllcik7CisgICAgbV9jYWNoZWRLZXlDYWNoZS5jbGVhcigpOworfQor
Citib29sIFJlbW90ZUxlZ2FjeUNETVNlc3Npb246OnVwZGF0ZShVaW50OEFycmF5KiBrZXlEYXRh
LCBSZWZQdHI8VWludDhBcnJheT4mIG5leHRNZXNzYWdlLCB1bnNpZ25lZCBzaG9ydCYgZXJyb3JD
b2RlLCB1aW50MzJfdCYgc3lzdGVtQ29kZSkKK3sKKyAgICBpZiAoIW1fZmFjdG9yeSB8fCAha2V5
RGF0YSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0byBpcGNLZXlEYXRhID0gY29u
dmVydFRvRGF0YVJlZmVyZW5jZShXVEZNb3ZlKGtleURhdGEpKTsKKyAgICBib29sIHN1Y2NlZWRl
ZCB7IGZhbHNlIH07CisgICAgT3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNl
PiBpcGNOZXh0TWVzc2FnZTsKKyAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCku
Y29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJv
eHk6OlVwZGF0ZShpcGNLZXlEYXRhKSwgTWVzc2FnZXM6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Q
cm94eTo6VXBkYXRlOjpSZXBseShzdWNjZWVkZWQsIGlwY05leHRNZXNzYWdlLCBlcnJvckNvZGUs
IHN5c3RlbUNvZGUpLCBtX2lkZW50aWZpZXIpOworCisgICAgaWYgKGlwY05leHRNZXNzYWdlKQor
ICAgICAgICBuZXh0TWVzc2FnZSA9IGNvbnZlcnRUb1VpbnQ4QXJyYXkoV1RGTW92ZSgqaXBjTmV4
dE1lc3NhZ2UpKTsKKworICAgIHJldHVybiBmYWxzZTsKK30KKworUmVmUHRyPEFycmF5QnVmZmVy
PiBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uOjpjYWNoZWRLZXlGb3JLZXlJRChjb25zdCBTdHJpbmcm
IGtleUlkKSBjb25zdAoreworICAgIGlmICghbV9mYWN0b3J5KQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKworICAgIGF1dG8gZm91bmRJbkNhY2hlID0gbV9jYWNoZWRLZXlDYWNoZS5maW5kKGtl
eUlkKTsKKyAgICBpZiAoZm91bmRJbkNhY2hlICE9IG1fY2FjaGVkS2V5Q2FjaGUuZW5kKCkpCisg
ICAgICAgIHJldHVybiBmb3VuZEluQ2FjaGUtPnZhbHVlOworCisgICAgT3B0aW9uYWw8SVBDOjpT
aGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlPiBpcGNLZXk7CisgICAgbV9mYWN0b3J5LT5ncHVQcm9j
ZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlTGVn
YWN5Q0RNU2Vzc2lvblByb3h5OjpDYWNoZWRLZXlGb3JLZXlJRChrZXlJZCksIE1lc3NhZ2VzOjpS
ZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OkNhY2hlZEtleUZvcktleUlEOjpSZXBseShpcGNL
ZXkpLCBtX2lkZW50aWZpZXIpOworCisgICAgaWYgKCFpcGNLZXkpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworCisgICAgYXV0byBpcGNLZXlCdWZmZXIgPSBjb252ZXJ0VG9BcnJheUJ1ZmZlcihX
VEZNb3ZlKCppcGNLZXkpKTsKKyAgICBtX2NhY2hlZEtleUNhY2hlLnNldChrZXlJZCwgaXBjS2V5
QnVmZmVyKTsKKyAgICByZXR1cm4gaXBjS2V5QnVmZmVyOworfQorCit2b2lkIFJlbW90ZUxlZ2Fj
eUNETVNlc3Npb246OnNlbmRNZXNzYWdlKE9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0YVJl
ZmVyZW5jZT4mJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uVVJMKQoreworICAg
IGlmICghbV9jbGllbnQpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghbWVzc2FnZSkgewor
ICAgICAgICBtX2NsaWVudC0+c2VuZE1lc3NhZ2UobnVsbHB0ciwgZGVzdGluYXRpb25VUkwpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9jbGllbnQtPnNlbmRNZXNzYWdlKGNvbnZl
cnRUb1VpbnQ4QXJyYXkoV1RGTW92ZSgqbWVzc2FnZSkpLmdldCgpLCBkZXN0aW5hdGlvblVSTCk7
Cit9CisKK3ZvaWQgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbjo6c2VuZEVycm9yKFdlYkNvcmU6Okxl
Z2FjeUNETVNlc3Npb25DbGllbnQ6Ok1lZGlhS2V5RXJyb3JDb2RlIGVycm9yQ29kZSwgdWludDMy
X3Qgc3lzdGVtQ29kZSkKK3sKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5z
ZW5kRXJyb3IoZXJyb3JDb2RlLCBzeXN0ZW1Db2RlKTsKK30KKworfQorCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RN
U2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdh
Y3lDRE1TZXNzaW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzhhOTcxOWViNmIyY2YwNjYwNDY3ZDA3MjY4ODI0
ODdlNTJkYjJmYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5oCkBAIC0wLDAgKzEsNzkgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxF
KExFR0FDWV9FTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIK
KyNpbmNsdWRlICJSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllci5oIgorI2luY2x1ZGUg
PFdlYkNvcmUvTGVnYWN5Q0RNU2Vzc2lvbi5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisK
K25hbWVzcGFjZSBJUEMgeworY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZTsKK30KKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFJlbW90ZUxlZ2FjeUNETUZhY3Rvcnk7CisKK2Ns
YXNzIFJlbW90ZUxlZ2FjeUNETVNlc3Npb24gZmluYWwKKyAgICA6IHB1YmxpYyBXZWJDb3JlOjpM
ZWdhY3lDRE1TZXNzaW9uCisgICAgLCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworcHVi
bGljOgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbj4g
Y3JlYXRlKFdlYWtQdHI8UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeT4sIFJlbW90ZUxlZ2FjeUNETVNl
c3Npb25JZGVudGlmaWVyJiYpOworCisgICAgLy8gTWVzc2FnZVJlY2VpdmVyCisgICAgdm9pZCBk
aWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsK
KworICAgIGNvbnN0IFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyJiBpZGVudGlmaWVy
KCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CisKK3ByaXZhdGU6CisgICAgUmVtb3Rl
TGVnYWN5Q0RNU2Vzc2lvbihXZWFrUHRyPFJlbW90ZUxlZ2FjeUNETUZhY3Rvcnk+LCBSZW1vdGVM
ZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllciYmKTsKKworICAgIC8vIExlZ2FjeUNETVNlc3Npb24K
KyAgICBXZWJDb3JlOjpMZWdhY3lDRE1TZXNzaW9uVHlwZSB0eXBlKCkgZmluYWwgeyByZXR1cm4g
V2ViQ29yZTo6Q0RNU2Vzc2lvblR5cGVSZW1vdGU7IH0KKyAgICB2b2lkIHNldENsaWVudChXZWJD
b3JlOjpMZWdhY3lDRE1TZXNzaW9uQ2xpZW50KiBjbGllbnQpIGZpbmFsIHsgbV9jbGllbnQgPSBj
bGllbnQ7IH0KKyAgICBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1fc2Vzc2lvbklkOyB9CisgICAgUmVmUHRyPFVpbnQ4QXJyYXk+IGdlbmVyYXRlS2V5UmVx
dWVzdChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBVaW50OEFycmF5KiBpbml0RGF0YSwgU3RyaW5n
JiBkZXN0aW5hdGlvblVSTCwgdW5zaWduZWQgc2hvcnQmIGVycm9yQ29kZSwgdWludDMyX3QmIHN5
c3RlbUNvZGUpIGZpbmFsOworICAgIHZvaWQgcmVsZWFzZUtleXMoKSBmaW5hbDsKKyAgICBib29s
IHVwZGF0ZShVaW50OEFycmF5KiwgUmVmUHRyPFVpbnQ4QXJyYXk+JiBuZXh0TWVzc2FnZSwgdW5z
aWduZWQgc2hvcnQmIGVycm9yQ29kZSwgdWludDMyX3QmIHN5c3RlbUNvZGUpIGZpbmFsOworICAg
IFJlZlB0cjxBcnJheUJ1ZmZlcj4gY2FjaGVkS2V5Rm9yS2V5SUQoY29uc3QgU3RyaW5nJikgY29u
c3QgZmluYWw7CisKKyAgICAvLyBNZXNzYWdlcworICAgIHZvaWQgc2VuZE1lc3NhZ2UoT3B0aW9u
YWw8SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlPiYmIG1lc3NhZ2UsIGNvbnN0IFN0cmlu
ZyYgZGVzdGluYXRpb25VUkwpOworICAgIHZvaWQgc2VuZEVycm9yKFdlYkNvcmU6OkxlZ2FjeUNE
TVNlc3Npb25DbGllbnQ6Ok1lZGlhS2V5RXJyb3JDb2RlLCB1aW50MzJfdCBzeXN0ZW1Db2RlKTsK
KworICAgIFdlYWtQdHI8UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeT4gbV9mYWN0b3J5OworICAgIFJl
bW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyIG1faWRlbnRpZmllcjsKKyAgICBXZWJDb3Jl
OjpMZWdhY3lDRE1TZXNzaW9uQ2xpZW50KiBtX2NsaWVudDsKKyAgICBTdHJpbmcgbV9zZXNzaW9u
SWQ7CisgICAgbXV0YWJsZSBIYXNoTWFwPFN0cmluZywgUmVmUHRyPEFycmF5QnVmZmVyPj4gbV9j
YWNoZWRLZXlDYWNoZTsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24ubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNl
c3Npb24ubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODQ3YWY2MDQwMWY5MWUzNDEwYzJmZTRkNGU0
NDcxNTI2MTNhMTI4NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5tZXNzYWdlcy5pbgpAQCAtMCwwICsx
LDMxIEBACisjIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaWYgRU5BQkxF
KEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKKworbWVzc2Fn
ZXMgLT4gUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbiBOb3RSZWZDb3VudGVkIHsKKyAgICBTZW5kTWVz
c2FnZShPcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U+IG1lc3NhZ2UsIFN0
cmluZyBkZXN0aW5hdGlvblVSTCkKKyAgICBTZW5kRXJyb3IoZW51bTp1aW50OF90IFdlYkNvcmU6
OkxlZ2FjeUNETVNlc3Npb25DbGllbnQ6Ok1lZGlhS2V5RXJyb3JDb2RlIGVycm9yQ29kZSwgdWlu
dDMyX3Qgc3lzdGVtQ29kZSkKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Np
b25JZGVudGlmaWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGYwOGFkYTgzMTRmZGJkM2ZmOGM3ZWI3MDQ3OTRl
MTg1YmUxOWYyMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXIuaApAQCAtMCwwICsxLDM5
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1Mp
ICYmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSA8d3RmL09iamVj
dElkZW50aWZpZXIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2VudW0gUmVtb3RlTGVnYWN5
Q0RNU2Vzc2lvbklkZW50aWZpZXJUeXBlIHsgfTsKK3VzaW5nIFJlbW90ZUxlZ2FjeUNETVNlc3Np
b25JZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRl
bnRpZmllclR5cGU+OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVy
TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlci5jcHAKaW5kZXggZTlmZjI0ZDE2NzYxMGExYmY3ZjEzNjg1NmZmZmM3
MTRhZTE2NDFjNy4uODc2NTIxZDhjMDYxZDFmNDJkNTY2MDQxMzljMGQ4NjRjMjYwOTBjNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBs
YXllck1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmNwcApAQCAtMTgzLDYgKzE4MywxNyBAQCB2b2lkIFJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6ZGVsZXRlUmVtb3RlTWVkaWFQbGF5ZXIoTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlSQogICAgIGdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigp
LnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpEZWxldGVNZWRp
YVBsYXllcihpZCksIDApOwogfQogCitNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVy
IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6ZmluZFJlbW90ZVBsYXllcklkKGNvbnN0IE1lZGlh
UGxheWVyUHJpdmF0ZUludGVyZmFjZSogcGxheWVyKQoreworICAgIGZvciAoYXV0byBwYWlyIDog
bV9wbGF5ZXJzKSB7CisgICAgICAgIGlmIChwYWlyLnZhbHVlID09IHBsYXllcikKKyAgICAgICAg
ICAgIHJldHVybiBwYWlyLmtleTsKKyAgICB9CisKKyAgICByZXR1cm4geyB9OworfQorCisKIHZv
aWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpnZXRTdXBwb3J0ZWRUeXBlcyhNZWRpYVBsYXll
ckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgcmVtb3RlRW5naW5lSWRlbnRpZmllciwgSGFz
aFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHJlc3VsdCkKIHsKICAgICBh
dXRvJiBjYWNoZSA9IHR5cGVDYWNoZShyZW1vdGVFbmdpbmVJZGVudGlmaWVyKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlh
UGxheWVyTWFuYWdlci5oCmluZGV4IDMyMGVjMzAxODlkNmZjNTYyZjJhZWJmZjUxYzkwZjc0ZWRm
OGRhMDEuLmJlZWNiMzdlZmY3OGQ5OWU4YmNmOGU5NDNjM2QyMTYwZTk3NDlhYTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXIuaApAQCAtNjksNiArNjksOCBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IGRlbGV0ZVJlbW90ZU1lZGlhUGxheWVyKE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZp
ZXIpOwogCisgICAgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBmaW5kUmVtb3Rl
UGxheWVySWQoY29uc3QgV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlKik7CisK
IHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZUludGVyZmFjZT4gY3JlYXRlUmVtb3RlTWVkaWFQbGF5ZXIoV2ViQ29yZTo6TWVkaWFQbGF5ZXIq
LCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDMyZmMy
NDViZTZlMjYwMDNmNmNhY2ZhZTBlMGY4NWUwODQwOWVlOGUuLjIwNjEwMDVhYmJjYWIwYmVhNzcz
ZWE3YzU3NmM2ZmUzM2YwZDFmMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCkBAIC0zMjYsNiArMzI2LDkgQEAKICNpZiBFTkFCTEUoRU5DUllQVEVE
X01FRElBKQogI2luY2x1ZGUgIlJlbW90ZUNETUZhY3RvcnkuaCIKICNlbmRpZgorI2lmIEVOQUJM
RShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQorI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETUZhY3Rv
cnkuaCIKKyNlbmRpZgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJLaXQgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IGRkMTJkMDE5ZGQxY2E0N2Y1N2UzNmE1NGIy
NzdhMGYyOGQ4MDZjNTEuLjMwM2I2NmY4YTViODQ2YTM0ZTc5ODdiZjJhODMwM2Q1MjRmODg1NzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTQzLDYgKzQzLDcg
QEAKICNpbmNsdWRlICJOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1
ZGUgIlBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5oIgogI2luY2x1ZGUgIlJlbW90ZUF1
ZGlvU2Vzc2lvbi5oIgorI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETUZhY3RvcnkuaCIKICNpbmNs
dWRlICJTdGF0aXN0aWNzRGF0YS5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBcmVhTWFwLmgiCiAjaW5j
bHVkZSAiVXNlckRhdGEuaCIKQEAgLTIwMjUsNiArMjAyNiwxMyBAQCB2b2lkIFdlYlByb2Nlc3M6
OnNldFVzZUdQVVByb2Nlc3NGb3JNZWRpYShib29sIHVzZUdQVVByb2Nlc3NGb3JNZWRpYSkKICAg
ICBlbHNlCiAgICAgICAgIE1lZGlhU2Vzc2lvbkhlbHBlcjo6cmVzZXRTaGFyZWRIZWxwZXIoKTsK
ICNlbmRpZgorCisjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCisgICAgaWYgKHVz
ZUdQVVByb2Nlc3NGb3JNZWRpYSkKKyAgICAgICAgZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24o
KS5sZWdhY3lDRE1GYWN0b3J5KCkucmVnaXN0ZXJGYWN0b3J5KCk7CisgICAgZWxzZQorICAgICAg
ICBMZWdhY3lDRE06OnJlc2V0RmFjdG9yaWVzKCk7CisjZW5kaWYKIH0KICNlbmRpZgogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392971</attachid>
            <date>2020-03-08 12:24:23 -0700</date>
            <delta_ts>2020-03-08 12:33:12 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-208402-20200308122422.patch</filename>
            <type>text/plain</type>
            <size>121063</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4MTA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGE4OGZkNjVlZGIwOTA1NTY1
NTkwMGZkZGQxOTFiNmMyOGI3MjU5Y2UuLmY2ZTNmOGQyNTRmYzgzOTA4OWY5YjkxOTcwNDU1ZGQx
ODEyMjM0M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTM0IEBACisyMDIwLTAyLTI4ICBKZXIgTm9i
bGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFVQXSBJbXBsZW1lbnQgTGVn
YWN5IEVNRSBBUEkgaW4gdGhlIEdQVSBQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg0MDIKKworICAgICAgICBSZXZpZXdlZCBieSBFcmlj
IENhcmxzb24uCisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIFJlbW90ZUxlZ2FjeUNETUZhY3Rv
cnksIFJlbWF0ZUxlZ2FjeUNETSxSZW1vdGVMZWdhY3lDRE1TZXNzaW9uLCBhbmQgYWxsCisgICAg
ICAgIG9mIHRoZWlyIGFzc29jaWF0ZWQgUHJveHkgb2JqZWN0cy4KKworICAgICAgICAqIERlcml2
ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtb3V0
cHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAg
KiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpsZWdhY3lDZG1GYWN0b3J5UHJveHkpOgor
ICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaXNwYXRjaE1lc3Nh
Z2UpOgorICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaXNwYXRj
aFN5bmNNZXNzYWdlKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3Rv
cnlQcm94eS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1GYWN0
b3J5UHJveHk6OlJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eSk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eTo6Y3JlYXRlQ0RNKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5OjpzdXBwb3J0c0tleVN5c3RlbSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eTo6ZGlkUmVjZWl2ZUNETU1l
c3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk6OmRp
ZFJlY2VpdmVDRE1TZXNzaW9uTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2Fj
eUNETUZhY3RvcnlQcm94eTo6ZGlkUmVjZWl2ZVN5bmNDRE1NZXNzYWdlKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5OjpkaWRSZWNlaXZlU3luY0NETVNlc3Np
b25NZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5
OjphZGRQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94
eTo6cmVtb3ZlUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1GYWN0b3J5
UHJveHk6OmFkZFNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1GYWN0
b3J5UHJveHk6OnJlbW92ZVNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lD
RE1GYWN0b3J5UHJveHk6OmdldFNlc3Npb24gY29uc3QpOgorICAgICAgICAqIEdQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5Lmg6IEFkZGVkLgorICAgICAgICAqIEdQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5Lm1lc3NhZ2VzLmluOiBB
ZGRlZC4KKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5LmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETVByb3h5OjpjcmVhdGUp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1Qcm94eTo6UmVtb3RlTGVnYWN5Q0RN
UHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1Qcm94eTo6c3VwcG9ydHNN
SU1FVHlwZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETVByb3h5OjpjcmVhdGVT
ZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNUHJveHk6OnNldFBsYXll
cklkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNUHJveHk6OmNkbU1lZGlhUGxh
eWVyIGNvbnN0KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVBy
b3h5Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1Qcm94eTo6ZmFj
dG9yeSBjb25zdCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Q
cm94eS5tZXNzYWdlcy5pbjogQWRkZWQuCisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eSk6Cisg
ICAgICAgIChXZWJLaXQ6OmNvbnZlcnRUb1VpbnQ4QXJyYXkpOgorICAgICAgICAoV2ViS2l0Ojpj
b252ZXJ0VG9PcHRpb25hbERhdGFSZWZlcmVuY2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVM
ZWdhY3lDRE1TZXNzaW9uUHJveHk6OmdlbmVyYXRlS2V5UmVxdWVzdCk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6cmVsZWFzZUtleXMpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OnVwZGF0ZSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6Z2V0Q2FjaGVkS2V5Rm9yS2V5SWQp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OmNhY2hlZEtl
eUZvcktleUlEKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5
OjpzZW5kTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Q
cm94eTo6c2VuZEVycm9yKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lv
blByb3h5OjptZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5IGNvbnN0KToKKyAgICAgICAgKiBHUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpmYWN0b3J5IGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpzZXNzaW9uIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpzZXRQ
bGF5ZXIpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lv
blByb3h5Lm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OmdldFByb3h5KToKKyAgICAgICAgKiBHUFVQcm9jZXNz
L21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lmg6CisgICAgICAgICogR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJDYWNoZWRLZXlGb3JLZXlJZCBjb25z
dCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVy
S2V5TmVlZGVkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6c2V0
TGVnYWN5Q0RNU2Vzc2lvbik6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRp
YVBsYXllclByb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBs
YXllclByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
VGV4dFRyYWNrUHJveHkuY3BwOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVGV4
dFRyYWNrUHJveHkuaDoKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAg
ICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkdQVVByb2Nlc3NDb25uZWN0aW9uOjptZWRpYVBsYXllck1h
bmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpHUFVQcm9jZXNzQ29ubmVjdGlvbjo6bGVnYWN5Q0RN
RmFjdG9yeSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24u
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1v
dGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldENE
TSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0Q0RNU2Vz
c2lvbik6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bWVkaWFQ
bGF5ZXJLZXlOZWVkZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVMZWdhY3lDRE0uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlTGVnYWN5Q0RNOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE06
OlJlbW90ZUxlZ2FjeUNETSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETTo6c3Vw
cG9ydHNNSU1FVHlwZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETTo6Y3JlYXRl
U2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETTo6c2V0UGxheWVySWQp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETS5oOiBBZGRl
ZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETUZhY3Rvcnk6OlJl
bW90ZUxlZ2FjeUNETUZhY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1G
YWN0b3J5OjpyZWdpc3RlckZhY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lD
RE1GYWN0b3J5OjpzdXBwbGVtZW50TmFtZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2Fj
eUNETUZhY3Rvcnk6OmdwdVByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlTGVnYWN5Q0RNRmFjdG9yeTo6c3VwcG9ydHNLZXlTeXN0ZW0pOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVMZWdhY3lDRE1GYWN0b3J5OjpzdXBwb3J0c0tleVN5c3RlbUFuZE1pbWVUeXBlKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeTo6Y3JlYXRlQ0RNKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeTo6YWRkU2Vzc2lvbik6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETUZhY3Rvcnk6OnJlbW92ZVNlc3Npb24pOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1GYWN0b3J5OjpmaW5kQ0RNIGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeTo6ZGlkUmVjZWl2ZVNlc3Npb25N
ZXNzYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1G
YWN0b3J5Lmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxl
Z2FjeUNETUlkZW50aWZpZXIuaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0Ojpj
b252ZXJ0VG9BcnJheUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OmNvbnZlcnRUb1VpbnQ4QXJy
YXkpOgorICAgICAgICAoV2ViS2l0Ojpjb252ZXJ0VG9PcHRpb25hbERhdGFSZWZlcmVuY2UpOgor
ICAgICAgICAoV2ViS2l0Ojpjb252ZXJ0VG9EYXRhUmVmZXJlbmNlKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlTGVnYWN5Q0RNU2Vzc2lvbjo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbik6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb246OmdlbmVyYXRlS2V5UmVxdWVzdCk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb246OnJlbGVhc2VLZXlzKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbjo6dXBkYXRlKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbjo6Y2FjaGVkS2V5Rm9yS2V5SUQgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uOjpzZW5kTWVzc2FnZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb246OnNlbmRFcnJvcik6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5oOiBBZGRl
ZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9u
Lm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllci5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OmZpbmRSZW1vdGVQbGF5ZXJJZCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvV2ViTWVkaWFTdHJhdGVneS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYk1lZGlhU3RyYXRlZ3k6OnJlZ2lzdGVyTGVnYWN5Q0RNRmFjdG9yaWVz
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlByb2Nlc3MuY3BwOgorCiAyMDIwLTAzLTA2ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBw
bGUuY29tPgogCiAgICAgICAgIFtHUFVQXSBNb3ZlIEFWU3lzdGVtQ29udHJvbGxlciBjb2RlIGlu
dG8gdGhlIEdQVSBwcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3Vy
Y2VzLWlucHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0
LnhjZmlsZWxpc3QKaW5kZXggZWUwNDBiMTJhYzIwN2ZjMjM0ZjM1MzU4NjEzMmYyMmFiOTU2YjI5
My4uNmNmNjJhNmMyZWQ4ZTg2NWVhYzJkNzRjMmU4ZWYxMTA4OGE2ZmU5NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJj
ZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtMjQsNiArMjQsOSBA
QCAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94eS5t
ZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0
YW5jZVByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5Lm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElS
KS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5tZXNzYWdlcy5p
bgorJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5t
ZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lD
RE1TZXNzaW9uUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9E
SVIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5tZXNzYWdlcy5pbgog
JChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdl
ci5tZXNzYWdlcy5pbgpAQCAtMTIxLDYgKzEyNCw3IEBAICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nl
c3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5pbgogJChQUk9K
RUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5
Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVB
dWRpb1Nlc3Npb24ubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5tZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJUikv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5tZXNzYWdlcy5pbgog
JChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9tZWRpYS9UZXh0
VHJhY2tQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyLm1lc3NhZ2VzLmluCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIv
U291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRleCAwYjg1
NzM2NDgxZTA3NTVmODZkOTI1ZTMwNjJlNWRjM2UyMzY4MzRjLi45MDkzYTgyYzliMWQ1MjUwOTU5
NDY4NTBhOGQ2ZjgwYmQzNTEyZDVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRT
b3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJj
ZXMtb3V0cHV0LnhjZmlsZWxpc3QKQEAgLTE2NCw2ICsxNjQsMTggQEAgJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQ0RNUHJveHlNZXNzYWdlc1JlcGxp
ZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3Rl
TGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKICQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhUHJveHlNZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViS2l0Mi9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXNSZXBsaWVzLmgK
KyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUxlZ2Fj
eUNETUZhY3RvcnlQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eU1lc3Nh
Z2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90
ZUxlZ2FjeUNETUZhY3RvcnlQcm94eU1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVMZWdhY3lDRE1Qcm94eU1lc3NhZ2VS
ZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQy
L1JlbW90ZUxlZ2FjeUNETVByb3h5TWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTGVnYWN5Q0RNUHJveHlNZXNzYWdlc1JlcGxpZXMu
aAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTGVn
YWN5Q0RNU2Vzc2lvbk1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25NZXNzYWdlcy5oCisk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVMZWdhY3lD
RE1TZXNzaW9uTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQyL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eU1lc3NhZ2VSZWNlaXZl
ci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90
ZUxlZ2FjeUNETVNlc3Npb25Qcm94eU1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eU1lc3NhZ2Vz
UmVwbGllcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9S
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJN
ZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9S
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJNZXNzYWdlc1JlcGxpZXMuaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291
cmNlcy5tYWtlCmluZGV4IGNiNzE1MmZhMzE0Njk1MjUxMDE4ZmFlYTA1YWYxMDYzNmUwYjQ3N2Eu
LmViYTBmZjFiN2M2ODI0ZjE3YjczZTYwNzhhNzUyYTJkNWI4NGJjZjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2
ZWRTb3VyY2VzLm1ha2UKQEAgLTE2MCw2ICsxNjAsMTAgQEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBc
CiAgICAgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eSBcCiAgICAgUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uIFwKICAgICBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eSBcCisgICAgUmVtb3RlTGVn
YWN5Q0RNUHJveHkgXAorICAgIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eSBcCisgICAgUmVt
b3RlTGVnYWN5Q0RNU2Vzc2lvbiBcCisgICAgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5IFwK
ICAgICBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIgXAogICAgIFJlbW90ZU1lZGlhUGxheWVyTWFu
YWdlclByb3h5IFwKICAgICBSZW1vdGVNZWRpYVBsYXllclByb3h5IFwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRl
eCBkZjU2NzgxZTZlNWU3ZjM2NmM2ODM3ODk4ZGMwMTlkZDhmZWQ0MzA4Li4xYzZiMDBlYmVmNjlm
ZmE0YjU2YWNkYjgyNjcxNTQzOGE0NDRiMDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC04Nyw2ICs4Nywx
MyBAQAogI2luY2x1ZGUgIlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5LmgiCiAjZW5kaWYK
IAorI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQorI2luY2x1ZGUgIlJlbW90ZUxl
Z2FjeUNETUZhY3RvcnlQcm94eS5oIgorI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQ
cm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlTGVnYWN5Q0RNUHJveHlNZXNzYWdlcy5o
IgorI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eU1lc3NhZ2VzLmgiCisjZW5k
aWYKKwogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAt
MzAwLDExICszMDcsMjEgQEAgUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHkmIEdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6Om1lZGlhU2Vzc2lvbkhlbHBlclByb3gKICAgICAgICAgbV9tZWRp
YVNlc3Npb25IZWxwZXJQcm94eSA9IG1ha2VVbmlxdWU8UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVy
UHJveHk+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fbWVkaWFTZXNzaW9uSGVscGVyUHJveHk7CiB9
CisjZW5kaWYKIAogdm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjplbnN1cmVNZWRpYVNl
c3Npb25IZWxwZXIoKQogewogICAgIG1lZGlhU2Vzc2lvbkhlbHBlclByb3h5KCk7CiB9CisKKyNp
ZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKK1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQ
cm94eSYgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6bGVnYWN5Q2RtRmFjdG9yeVByb3h5KCkK
K3sKKyAgICBpZiAoIW1fbGVnYWN5Q2RtRmFjdG9yeVByb3h5KQorICAgICAgICBtX2xlZ2FjeUNk
bUZhY3RvcnlQcm94eSA9IG1ha2VVbmlxdWU8UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5Pigq
dGhpcyk7CisKKyAgICByZXR1cm4gKm1fbGVnYWN5Q2RtRmFjdG9yeVByb3h5OworfQogI2VuZGlm
CiAKIGJvb2wgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlzcGF0Y2hNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQpAQCAtMzkwLDYg
KzQwNywxMiBAQCBib29sIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpc3BhdGNoTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQwogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CiAjZW5kaWYKKyNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKKyAgICBp
ZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlJlbW90ZUxlZ2Fj
eUNETUZhY3RvcnlQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIGxlZ2Fj
eUNkbUZhY3RvcnlQcm94eSgpLmRpZFJlY2VpdmVNZXNzYWdlRnJvbVdlYlByb2Nlc3MoY29ubmVj
dGlvbiwgZGVjb2Rlcik7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyNlbmRpZgogCiAg
ICAgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck1hcCgpLmRpc3BhdGNoTWVzc2FnZShjb25uZWN0aW9u
LCBkZWNvZGVyKTsKIH0KQEAgLTQ0Nyw2ICs0NzAsMTIgQEAgYm9vbCBHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpkaXNwYXRjaFN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
biwKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogI2VuZGlmCisjaWYgRU5BQkxFKExFR0FD
WV9FTkNSWVBURURfTUVESUEpCisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgp
ID09IE1lc3NhZ2VzOjpSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk6Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSkgeworICAgICAgICBsZWdhY3lDZG1GYWN0b3J5UHJveHkoKS5kaWRSZWNlaXZlU3lu
Y01lc3NhZ2VGcm9tV2ViUHJvY2Vzcyhjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIp
OworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisjZW5kaWYKIAogICAgIHJldHVybiBtZXNz
YWdlUmVjZWl2ZXJNYXAoKS5kaXNwYXRjaFN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIs
IHJlcGx5RW5jb2Rlcik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCAzNjhiMGJmNjZiYjg1YTllNGNhZmEyY2I1
YTgyZTY3MmNjYzA1NzRiLi4yZWM4Y2Q1NmQyYzMxNjY1ZWFjY2RlYjllMTgyNjU3OGE4MTVhNWE4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmgKQEAgLTQ4LDYgKzQ4LDcgQEAgY2xhc3MgUmVtb3RlQXVkaW9NZWRpYVN0cmVh
bVRyYWNrUmVuZGVyZXJNYW5hZ2VyOwogY2xhc3MgUmVtb3RlQXVkaW9TZXNzaW9uUHJveHk7CiBj
bGFzcyBSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFnZXI7CiBjbGFzcyBSZW1vdGVDRE1GYWN0
b3J5UHJveHk7CitjbGFzcyBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk7CiBjbGFzcyBSZW1v
dGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTsKIGNsYXNzIFJlbW90ZU1lZGlhUmVjb3JkZXJNYW5h
Z2VyOwogY2xhc3MgUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI7CkBAIC05MCw4ICs5MSwxMiBA
QCBwdWJsaWM6CiAjZW5kaWYKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFJlbW90ZU1l
ZGlhU2Vzc2lvbkhlbHBlclByb3h5JiBtZWRpYVNlc3Npb25IZWxwZXJQcm94eSgpOworI2VuZGlm
CisjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCisgICAgUmVtb3RlTGVnYWN5Q0RN
RmFjdG9yeVByb3h5JiBsZWdhY3lDZG1GYWN0b3J5UHJveHkoKTsKICNlbmRpZgogICAgIFJlbW90
ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5JiByZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSgp
OworCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBVU0UoQVVESU9fU0VTU0lPTikKICAgICBS
ZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFnZXImIGF1ZGlvU2Vzc2lvbk1hbmFnZXIoKTsKICNl
bmRpZgpAQCAtMTc3LDYgKzE4Miw5IEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHk+IG1f
bWVkaWFTZXNzaW9uSGVscGVyUHJveHk7CiAjZW5kaWYKKyNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZ
UFRFRF9NRURJQSkKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVBy
b3h5PiBtX2xlZ2FjeUNkbUZhY3RvcnlQcm94eTsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAxMmZlNGQ5
YmVlNDY0YTU4Njc2YjIwNzVhN2Q2NzkxNzhiZGMwYWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5LmNw
cApAQCAtMCwwICsxLDE0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkuaCIKKworI2lmIEVOQUJMRShHUFVf
UFJPQ0VTUykgJiYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgIlJlbW90ZUxl
Z2FjeUNETVByb3h5LmgiCisjaW5jbHVkZSAiUmVtb3RlTGVnYWN5Q0RNUHJveHlNZXNzYWdlcy5o
IgorI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5oIgorI2luY2x1ZGUgIlJl
bW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9M
ZWdhY3lDRE0uaD4KKyNpbmNsdWRlIDx3dGYvQWxnb3JpdGhtcy5oPgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK1JlbW90ZUxlZ2FjeUNETUZhY3Rv
cnlQcm94eTo6UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5KEdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MmIGNvbm5lY3Rpb24pCisgICAgOiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoY29u
bmVjdGlvbikKK3sKK30KKworUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5Ojp+UmVtb3RlTGVn
YWN5Q0RNRmFjdG9yeVByb3h5KCkgPSBkZWZhdWx0OworCit2b2lkIFJlbW90ZUxlZ2FjeUNETUZh
Y3RvcnlQcm94eTo6Y3JlYXRlQ0RNKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBPcHRpb25hbDxN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyPiYmIG9wdGlvbmFsUGxheWVySWQsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlTGVnYWN5Q0RNSWRlbnRpZmllciYmKT4mJiBjb21w
bGV0aW9uKQoreworICAgIGF1dG8gcHJpdmF0ZUNETSA9IExlZ2FjeUNETTo6Y3JlYXRlKGtleVN5
c3RlbSk7CisgICAgaWYgKCFwcml2YXRlQ0RNKSB7CisgICAgICAgIGNvbXBsZXRpb24oeyB9KTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlk
ZW50aWZpZXIgcGxheWVySWQ7CisgICAgaWYgKG9wdGlvbmFsUGxheWVySWQpCisgICAgICAgIHBs
YXllcklkID0gV1RGTW92ZShvcHRpb25hbFBsYXllcklkLnZhbHVlKCkpOworCisgICAgYXV0byBw
cm94eSA9IFJlbW90ZUxlZ2FjeUNETVByb3h5OjpjcmVhdGUobWFrZVdlYWtQdHIodGhpcyksIFdU
Rk1vdmUocGxheWVySWQpLCBXVEZNb3ZlKHByaXZhdGVDRE0pKTsKKyAgICBhdXRvIGlkZW50aWZp
ZXIgPSBSZW1vdGVMZWdhY3lDRE1JZGVudGlmaWVyOjpnZW5lcmF0ZSgpOworICAgIGFkZFByb3h5
KGlkZW50aWZpZXIsIFdURk1vdmUocHJveHkpKTsKKyAgICBjb21wbGV0aW9uKFdURk1vdmUoaWRl
bnRpZmllcikpOworfQorCit2b2lkIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eTo6c3VwcG9y
dHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIE9wdGlvbmFsPFN0cmluZz4gbWlt
ZVR5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbikKK3sKKyAg
ICBpZiAobWltZVR5cGUpCisgICAgICAgIGNvbXBsZXRpb24oTGVnYWN5Q0RNOjprZXlTeXN0ZW1T
dXBwb3J0c01pbWVUeXBlKGtleVN5c3RlbSwgKm1pbWVUeXBlKSk7CisgICAgZWxzZQorICAgICAg
ICBjb21wbGV0aW9uKExlZ2FjeUNETTo6c3VwcG9ydHNLZXlTeXN0ZW0oa2V5U3lzdGVtKSk7Cit9
CisKK3ZvaWQgUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5OjpkaWRSZWNlaXZlQ0RNTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3sK
KyAgICBpZiAoYXV0byogcHJveHkgPSBtX3Byb3hpZXMuZ2V0KG1ha2VPYmplY3RJZGVudGlmaWVy
PFJlbW90ZUxlZ2FjeUNETUlkZW50aWZpZXJUeXBlPihkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSkp
KQorICAgICAgICBwcm94eS0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7
Cit9CisKK3ZvaWQgUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5OjpkaWRSZWNlaXZlQ0RNU2Vz
c2lvbk1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRl
Y29kZXIpCit7CisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBtX3Nlc3Npb25zLmdldChtYWtlT2Jq
ZWN0SWRlbnRpZmllcjxSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllclR5cGU+KGRlY29k
ZXIuZGVzdGluYXRpb25JRCgpKSkpCisgICAgICAgIHNlc3Npb24tPmRpZFJlY2VpdmVNZXNzYWdl
KGNvbm5lY3Rpb24sIGRlY29kZXIpOworfQorCit2b2lkIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQ
cm94eTo6ZGlkUmVjZWl2ZVN5bmNDRE1NZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
biwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYg
ZW5jb2RlcikKK3sKKyAgICBpZiAoYXV0byogcHJveHkgPSBtX3Byb3hpZXMuZ2V0KG1ha2VPYmpl
Y3RJZGVudGlmaWVyPFJlbW90ZUxlZ2FjeUNETUlkZW50aWZpZXJUeXBlPihkZWNvZGVyLmRlc3Rp
bmF0aW9uSUQoKSkpKQorICAgICAgICBwcm94eS0+ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKGNvbm5l
Y3Rpb24sIGRlY29kZXIsIGVuY29kZXIpOworfQorCit2b2lkIFJlbW90ZUxlZ2FjeUNETUZhY3Rv
cnlQcm94eTo6ZGlkUmVjZWl2ZVN5bmNDRE1TZXNzaW9uTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
IGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rlciwgc3RkOjp1bmlxdWVfcHRyPElQQzo6
RW5jb2Rlcj4mIGVuY29kZXIpCit7CisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBtX3Nlc3Npb25z
LmdldChtYWtlT2JqZWN0SWRlbnRpZmllcjxSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmll
clR5cGU+KGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkpCisgICAgICAgIHNlc3Npb24tPmRpZFJl
Y2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCBlbmNvZGVyKTsKK30KKwordm9p
ZCBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk6OmFkZFByb3h5KFJlbW90ZUxlZ2FjeUNETUlk
ZW50aWZpZXIgaWQsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMZWdhY3lDRE1Qcm94eT4mJiBwcm94
eSkKK3sKKyAgICBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkubWVzc2FnZVJlY2VpdmVyTWFw
KCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVMZWdhY3lDRE1Qcm94eTo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpLCBpZC50b1VJbnQ2NCgpLCAqcHJveHkpOworCisgICAgQVNTRVJU
KCFtX3Byb3hpZXMuY29udGFpbnMoaWQpKTsKKyAgICBtX3Byb3hpZXMuc2V0KGlkLCBXVEZNb3Zl
KHByb3h5KSk7Cit9CisKK3ZvaWQgUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5OjpyZW1vdmVQ
cm94eShSZW1vdGVMZWdhY3lDRE1JZGVudGlmaWVyIGlkKQoreworICAgIGdwdUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MoKS5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIo
TWVzc2FnZXM6OlJlbW90ZUxlZ2FjeUNETVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIGlk
LnRvVUludDY0KCkpOworCisgICAgQVNTRVJUKG1fcHJveGllcy5jb250YWlucyhpZCkpOworICAg
IG1fcHJveGllcy5yZW1vdmUoaWQpOworfQorCit2b2lkIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQ
cm94eTo6YWRkU2Vzc2lvbihSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllciBpZCwgc3Rk
Ojp1bmlxdWVfcHRyPFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eT4mJiBzZXNzaW9uKQorewor
ICAgIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKS5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5hZGRN
ZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpLCBpZC50b1VJbnQ2NCgpLCAqc2Vzc2lvbik7CisKKyAgICBBU1NF
UlQoIW1fc2Vzc2lvbnMuY29udGFpbnMoaWQpKTsKKyAgICBtX3Nlc3Npb25zLnNldChpZCwgV1RG
TW92ZShzZXNzaW9uKSk7Cit9CisKK3ZvaWQgUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5Ojpy
ZW1vdmVTZXNzaW9uKFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyIGlkKQoreworICAg
IGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKS5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5yZW1vdmVN
ZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpLCBpZC50b1VJbnQ2NCgpKTsKKworICAgIEFTU0VSVChtX3Nlc3Np
b25zLmNvbnRhaW5zKGlkKSk7CisgICAgbV9zZXNzaW9ucy5yZW1vdmUoaWQpOworfQorCitSZW1v
dGVMZWdhY3lDRE1TZXNzaW9uUHJveHkqIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eTo6Z2V0
U2Vzc2lvbihjb25zdCBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllciYgaWQpIGNvbnN0
Cit7CisgICAgYXV0byByZXN1bHRzID0gbV9zZXNzaW9ucy5maW5kKGlkKTsKKyAgICBpZiAocmVz
dWx0cyAhPSBtX3Nlc3Npb25zLmVuZCgpKQorICAgICAgICByZXR1cm4gcmVzdWx0cy0+dmFsdWUu
Z2V0KCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKKworfQorCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1G
YWN0b3J5UHJveHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MzU1Mzg0ODg2NTk5ODFkOGY4ODNiNGNhMWVjY2Fj
MjM1YTM5ZmVkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5oCkBAIC0wLDAgKzEsODQgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxF
KExFR0FDWV9FTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5j
bHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIk1l
c3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETUlkZW50aWZpZXIuaCIK
KyNpbmNsdWRlICJSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllci5oIgorI2luY2x1ZGUg
PHd0Zi9VbmlxdWVSZWYuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworY2xhc3MgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzczsKK2NsYXNzIFJlbW90
ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTsKK2NsYXNzIFJlbW90ZUxlZ2FjeUNETVByb3h5Oworc3Ry
dWN0IFJlbW90ZUxlZ2FjeUNETUNvbmZpZ3VyYXRpb247CisKK2NsYXNzIFJlbW90ZUxlZ2FjeUNE
TUZhY3RvcnlQcm94eSBmaW5hbCA6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHB1Ymxp
YyBDYW5NYWtlV2Vha1B0cjxSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk+IHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5
UHJveHkoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYpOworICAgIHZpcnR1YWwgflJlbW90ZUxl
Z2FjeUNETUZhY3RvcnlQcm94eSgpOworCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZUZyb21X
ZWJQcm9jZXNzKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNv
ZGVyKSB7IGRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOyB9CisgICAgdm9p
ZCBkaWRSZWNlaXZlU3luY01lc3NhZ2VGcm9tV2ViUHJvY2VzcyhJUEM6OkNvbm5lY3Rpb24mIGNv
bm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rlciwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5j
b2Rlcj4mIGVuY29kZXIpIHsgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29k
ZXIsIGVuY29kZXIpOyB9CisgICAgdm9pZCBkaWRSZWNlaXZlQ0RNTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mLCBJUEM6OkRlY29kZXImKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVDRE1TZXNzaW9uTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKKyAgICB2b2lkIGRpZFJlY2Vp
dmVTeW5jQ0RNTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVu
aXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpOworICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNDRE1TZXNz
aW9uTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9w
dHI8SVBDOjpFbmNvZGVyPiYpOworCisgICAgdm9pZCBhZGRQcm94eShSZW1vdGVMZWdhY3lDRE1J
ZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGVnYWN5Q0RNUHJveHk+JiYpOworICAg
IHZvaWQgcmVtb3ZlUHJveHkoUmVtb3RlTGVnYWN5Q0RNSWRlbnRpZmllcik7CisKKyAgICB2b2lk
IGFkZFNlc3Npb24oUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXIsIHN0ZDo6dW5pcXVl
X3B0cjxSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk+JiYpOworICAgIHZvaWQgcmVtb3ZlU2Vz
c2lvbihSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllcik7CisgICAgUmVtb3RlTGVnYWN5
Q0RNU2Vzc2lvblByb3h5KiBnZXRTZXNzaW9uKGNvbnN0IFJlbW90ZUxlZ2FjeUNETVNlc3Npb25J
ZGVudGlmaWVyJikgY29uc3Q7CisKKyAgICBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzKCkgY29uc3QgeyByZXR1cm4gbV9ncHVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOyB9CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIEdQVVByb2Nlc3NDb25u
ZWN0aW9uOworICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCisgICAgdm9pZCBkaWRSZWNlaXZl
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbCB7IH0KKyAgICB2
b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXIm
LCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOworCisgICAgLy8gTWVzc2Fn
ZXMKKyAgICB2b2lkIGNyZWF0ZUNETShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgT3B0aW9uYWw8
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllcj4mJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChSZW1vdGVMZWdhY3lDRE1JZGVudGlmaWVyJiYpPiYmKTsKKyAgICB2b2lkIHN1cHBvcnRz
S2V5U3lzdGVtKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBPcHRpb25hbDxTdHJpbmc+IG1pbWVU
eXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKworICAgIEdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MmIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzczsKKyAgICBIYXNoTWFw
PFJlbW90ZUxlZ2FjeUNETUlkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMZWdhY3lD
RE1Qcm94eT4+IG1fcHJveGllczsKKyAgICBIYXNoTWFwPFJlbW90ZUxlZ2FjeUNETVNlc3Npb25J
ZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5Pj4g
bV9zZXNzaW9uczsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5Lm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQ
cm94eS5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMDc0NGZiZmQ0ZDAyYzFmOWMzZDc5YTAwZjUw
NDlmOTE1M2I3ZjQ5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5tZXNzYWdlcy5pbgpAQCAtMCwwICsx
LDMxIEBACisjIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaWYgRU5BQkxF
KEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKKworbWVzc2Fn
ZXMgLT4gUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5IE5vdFJlZkNvdW50ZWQgeworICAgIENy
ZWF0ZUNETShTdHJpbmcga2V5U3lzdGVtLCBPcHRpb25hbDxXZWJLaXQ6Ok1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZUlkZW50aWZpZXI+IHBsYXllcklkKSAtPiAoV2ViS2l0OjpSZW1vdGVMZWdhY3lD
RE1JZGVudGlmaWVyIGlkKSBTeW5jaHJvbm91cworICAgIFN1cHBvcnRzS2V5U3lzdGVtKFN0cmlu
ZyBrZXlTeXN0ZW0sIE9wdGlvbmFsPFN0cmluZz4gbWltZVR5cGUpIC0+IChib29sIHJlc3VsdCkg
U3luY2hyb25vdXMKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZDE3YTg5
MWFhYjExZWRlNmRiZWQ3YzBmZDAyZDI4NTI3MWU4MzYxCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5LmNwcApAQCAt
MCwwICsxLDk4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IlJlbW90ZUxlZ2FjeUNETVByb3h5LmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVO
QUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lmgi
CisjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oIgorCituYW1lc3BhY2UgV2ViS2l0
IHsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK3N0ZDo6dW5pcXVlX3B0cjxSZW1vdGVM
ZWdhY3lDRE1Qcm94eT4gUmVtb3RlTGVnYWN5Q0RNUHJveHk6OmNyZWF0ZShXZWFrUHRyPFJlbW90
ZUxlZ2FjeUNETUZhY3RvcnlQcm94eT4gZmFjdG9yeSwgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
SWRlbnRpZmllciYmIHBsYXllcklkLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6TGVnYWN5Q0RN
PiYmIGNkbSkKK3sKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxlZ2FjeUNETVBy
b3h5PihuZXcgUmVtb3RlTGVnYWN5Q0RNUHJveHkoV1RGTW92ZShmYWN0b3J5KSwgV1RGTW92ZShw
bGF5ZXJJZCksIFdURk1vdmUoY2RtKSkpOworfQorCitSZW1vdGVMZWdhY3lDRE1Qcm94eTo6UmVt
b3RlTGVnYWN5Q0RNUHJveHkoV2Vha1B0cjxSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk+JiYg
ZmFjdG9yeSwgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciYmIHBsYXllcklkLCBz
dGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6TGVnYWN5Q0RNPiYmIGNkbSkKKyAgICA6IG1fZmFjdG9y
eShXVEZNb3ZlKGZhY3RvcnkpKQorICAgICwgbV9wbGF5ZXJJZChXVEZNb3ZlKHBsYXllcklkKSkK
KyAgICAsIG1fY2RtKFdURk1vdmUoY2RtKSkKK3sKKyAgICBtX2NkbS0+c2V0Q2xpZW50KHRoaXMp
OworfQorCitSZW1vdGVMZWdhY3lDRE1Qcm94eTo6flJlbW90ZUxlZ2FjeUNETVByb3h5KCkgPSBk
ZWZhdWx0OworCit2b2lkIFJlbW90ZUxlZ2FjeUNETVByb3h5OjpzdXBwb3J0c01JTUVUeXBlKGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIFN1cHBvcnRzTUlNRVR5cGVDYWxsYmFjayYmIGNhbGxiYWNr
KQoreworICAgIGlmICghbV9jZG0pIHsKKyAgICAgICAgY2FsbGJhY2soZmFsc2UpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgY2FsbGJhY2sobV9jZG0tPnN1cHBvcnRzTUlNRVR5cGUo
bWltZVR5cGUpKTsKK30KKwordm9pZCBSZW1vdGVMZWdhY3lDRE1Qcm94eTo6Y3JlYXRlU2Vzc2lv
bihjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgQ3JlYXRlU2Vzc2lvbkNhbGxiYWNrJiYgY2FsbGJh
Y2spCit7CisgICAgaWYgKCFtX2NkbSB8fCAhbV9mYWN0b3J5KSB7CisgICAgICAgIGNhbGxiYWNr
KHsgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBS
ZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKKyAgICBhdXRvIHNl
c3Npb24gPSBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OmNyZWF0ZShtYWtlV2Vha1B0ciht
X2ZhY3RvcnkuZ2V0KCkpLCBpZGVudGlmaWVyLCAqbV9jZG0pOworICAgIG1fZmFjdG9yeS0+YWRk
U2Vzc2lvbihpZGVudGlmaWVyLCBXVEZNb3ZlKHNlc3Npb24pKTsKKyAgICBjYWxsYmFjayhXVEZN
b3ZlKGlkZW50aWZpZXIpKTsKK30KKwordm9pZCBSZW1vdGVMZWdhY3lDRE1Qcm94eTo6c2V0UGxh
eWVySWQoT3B0aW9uYWw8TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllcj4mJiBwbGF5
ZXJJZCkKK3sKKyAgICBpZiAoIXBsYXllcklkKQorICAgICAgICBtX3BsYXllcklkID0geyB9Owor
ICAgIG1fcGxheWVySWQgPSBXVEZNb3ZlKCpwbGF5ZXJJZCk7Cit9CisKK1JlZlB0cjxNZWRpYVBs
YXllcj4gUmVtb3RlTGVnYWN5Q0RNUHJveHk6OmNkbU1lZGlhUGxheWVyKGNvbnN0IExlZ2FjeUNE
TSopIGNvbnN0Cit7CisgICAgaWYgKCFtX3BsYXllcklkIHx8ICFtX2ZhY3RvcnkpCisgICAgICAg
IHJldHVybiBudWxscHRyOworCisgICAgYXV0byBwcm94eSA9IG1fZmFjdG9yeS0+Z3B1Q29ubmVj
dGlvblRvV2ViUHJvY2VzcygpLnJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5KCkuZ2V0UHJv
eHkobV9wbGF5ZXJJZCk7CisgICAgaWYgKCFwcm94eSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisKKyAgICByZXR1cm4gcHJveHktPm1lZGlhUGxheWVyKCk7Cit9CisKK30KKworI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RN
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Q
cm94eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjJiNmQxN2E5YTQ1NzFlMzQ4ODRjZmY4Y2E5YmVlYzMzMzFmODIw
NmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTGVnYWN5Q0RNUHJveHkuaApAQCAtMCwwICsxLDgzIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShMRUdBQ1lfRU5DUllQ
VEVEX01FRElBKQorCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiUmVt
b3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5LmgiCisjaW5jbHVkZSAiUmVtb3RlTGVnYWN5Q0RNSWRl
bnRpZmllci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvTGVnYWN5Q0RNLmg+CisjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CisjaW5jbHVkZSA8d3RmL1dl
YWtQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgU2hhcmVkQnVmZmVyOworfQor
CituYW1lc3BhY2UgSVBDIHsKK2NsYXNzIERhdGFSZWZlcmVuY2U7Cit9CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitjbGFzcyBSZW1vdGVMZWdhY3lDRE1Qcm94eQorICAgIDogcHJpdmF0ZSBJUEM6
Ok1lc3NhZ2VSZWNlaXZlcgorICAgICwgcHVibGljIFdlYkNvcmU6OkxlZ2FjeUNETUNsaWVudAor
ICAgICwgcHVibGljIENhbk1ha2VXZWFrUHRyPFJlbW90ZUxlZ2FjeUNETVByb3h5PiB7CitwdWJs
aWM6CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMZWdhY3lDRE1Qcm94eT4gY3Jl
YXRlKFdlYWtQdHI8UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5PiwgTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlSWRlbnRpZmllciYmLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6TGVnYWN5Q0RN
PiYmKTsKKyAgICB+UmVtb3RlTGVnYWN5Q0RNUHJveHkoKTsKKworICAgIFJlbW90ZUxlZ2FjeUNE
TUZhY3RvcnlQcm94eSogZmFjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fZmFjdG9yeS5nZXQoKTsg
fQorCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJv
eHk7CisgICAgUmVtb3RlTGVnYWN5Q0RNUHJveHkoV2Vha1B0cjxSZW1vdGVMZWdhY3lDRE1GYWN0
b3J5UHJveHk+JiYsIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXImJiwgc3RkOjp1
bmlxdWVfcHRyPFdlYkNvcmU6OkxlZ2FjeUNETT4mJik7CisKKyAgICAvLyBJUEM6Ok1lc3NhZ2VS
ZWNlaXZlcgorICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBD
OjpEZWNvZGVyJikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4m
KSBmaW5hbDsKKworICAgIC8vIE1lc3NhZ2VzCisgICAgdXNpbmcgU3VwcG9ydHNNSU1FVHlwZUNh
bGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT47CisgICAgdm9pZCBzdXBwb3J0
c01JTUVUeXBlKGNvbnN0IFN0cmluZyYsIFN1cHBvcnRzTUlNRVR5cGVDYWxsYmFjayYmKTsKKyAg
ICB1c2luZyBDcmVhdGVTZXNzaW9uQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJl
bW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyJiYpPjsKKyAgICB2b2lkIGNyZWF0ZVNlc3Np
b24oY29uc3QgU3RyaW5nJiwgQ3JlYXRlU2Vzc2lvbkNhbGxiYWNrJiYpOworICAgIHZvaWQgc2V0
UGxheWVySWQoT3B0aW9uYWw8TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllcj4mJik7
CisKKyAgICAvLyBMZWdhY3lDRE1DbGllbnQKKyAgICBSZWZQdHI8V2ViQ29yZTo6TWVkaWFQbGF5
ZXI+IGNkbU1lZGlhUGxheWVyKGNvbnN0IFdlYkNvcmU6OkxlZ2FjeUNETSopIGNvbnN0IGZpbmFs
OworCisgICAgV2Vha1B0cjxSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk+IG1fZmFjdG9yeTsK
KyAgICBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyIG1fcGxheWVySWQ7CisgICAg
c3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkxlZ2FjeUNETT4gbV9jZG07Cit9OworCit9CisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxl
Z2FjeUNETVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUxlZ2FjeUNETVByb3h5Lm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg3MWJhOGJkODdl
N2Q5MjcwN2NjMDlkOGYzY2M0MGQ2ZjQ4ZGZjYjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkubWVzc2FnZXMuaW4K
QEAgLTAsMCArMSwzMiBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6Cisj
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKwor
I2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEp
CisKK21lc3NhZ2VzIC0+IFJlbW90ZUxlZ2FjeUNETVByb3h5IE5vdFJlZkNvdW50ZWQgeworICAg
IFN1cHBvcnRzTUlNRVR5cGUoU3RyaW5nIG1pbWVUeXBlKSAtPiAoYm9vbCBzdXBwb3J0cykgU3lu
Y2hyb25vdXMKKyAgICBDcmVhdGVTZXNzaW9uKFN0cmluZyBtZWRpYUtleXNTdG9yYWdlRGlyZWN0
b3J5KSAtPiAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllciBpZCkgU3lu
Y2hyb25vdXMKKyAgICBTZXRQbGF5ZXJJZChPcHRpb25hbDxXZWJLaXQ6Ok1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZUlkZW50aWZpZXI+IHBsYXllcklkKQorfQorCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNl
c3Npb25Qcm94eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGEwZTMzZmM2YjQ0NGQzMTFlNjYwMmY4YTc1NWUz
MzQyMDJlYzE1MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuY3BwCkBAIC0wLDAgKzEsMTQ4IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNE
TVNlc3Npb25Qcm94eS5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTEVH
QUNZX0VOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuaCIKKyNpbmNsdWRlICJSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkuaCIKKyNpbmNsdWRl
ICJSZW1vdGVMZWdhY3lDRE1TZXNzaW9uTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZm
ZXJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitzdGQ6OnVu
aXF1ZV9wdHI8UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5PiBSZW1vdGVMZWdhY3lDRE1TZXNz
aW9uUHJveHk6OmNyZWF0ZShXZWFrUHRyPFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eT4mJiBm
YWN0b3J5LCBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJD
b3JlOjpMZWdhY3lDRE0mIGNkbSkKK3sKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFJlbW90
ZUxlZ2FjeUNETVNlc3Npb25Qcm94eT4obmV3IFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eShX
VEZNb3ZlKGZhY3RvcnkpLCBpZGVudGlmaWVyLCBjZG0pKTsKK30KKworUmVtb3RlTGVnYWN5Q0RN
U2Vzc2lvblByb3h5OjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkoV2Vha1B0cjxSZW1vdGVM
ZWdhY3lDRE1GYWN0b3J5UHJveHk+JiYgZmFjdG9yeSwgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklk
ZW50aWZpZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6TGVnYWN5Q0RNJiBjZG0pCisgICAgOiBtX2Zh
Y3RvcnkoV1RGTW92ZShmYWN0b3J5KSkKKyAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQor
ICAgICwgbV9zZXNzaW9uKGNkbS5jcmVhdGVTZXNzaW9uKCp0aGlzKSkKK3sKK30KKworUmVtb3Rl
TGVnYWN5Q0RNU2Vzc2lvblByb3h5Ojp+UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5KCkgPSBk
ZWZhdWx0OworCitzdGF0aWMgUmVmUHRyPFVpbnQ4QXJyYXk+IGNvbnZlcnRUb1VpbnQ4QXJyYXko
SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiYgYnVmZmVyKQoreworICAgIGlmICghYnVm
ZmVyLmJ1ZmZlcigpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHNpemVfdCBzaXpl
SW5CeXRlcyA9IGJ1ZmZlci5zaXplKCk7CisgICAgYXV0byBhcnJheUJ1ZmZlciA9IEFycmF5QnVm
ZmVyOjpjcmVhdGUoYnVmZmVyLmRhdGEoKSwgc2l6ZUluQnl0ZXMpOworICAgIHJldHVybiBVaW50
OEFycmF5OjpjcmVhdGUoV1RGTW92ZShhcnJheUJ1ZmZlciksIDAsIHNpemVJbkJ5dGVzKTsKK30K
KwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdGF0aWMgT3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZm
ZXJEYXRhUmVmZXJlbmNlPiBjb252ZXJ0VG9PcHRpb25hbERhdGFSZWZlcmVuY2UoVCBhcnJheSkK
K3sKKyAgICBpZiAoIWFycmF5KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJl
dHVybiB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKChjb25zdCBjaGFyKilhcnJheS0+ZGF0YSgpLCBh
cnJheS0+Ynl0ZUxlbmd0aCgpKSB9OworfQorCit2b2lkIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Q
cm94eTo6Z2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIElQQzo6U2hh
cmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYmIGluaXREYXRhLCBHZW5lcmF0ZUtleUNhbGxiYWNrJiYg
Y29tcGxldGlvbikKK3sKKyAgICBhdXRvIGluaXREYXRhQXJyYXkgPSBjb252ZXJ0VG9VaW50OEFy
cmF5KFdURk1vdmUoaW5pdERhdGEpKTsKKyAgICBpZiAoIWluaXREYXRhQXJyYXkpIHsKKyAgICAg
ICAgY29tcGxldGlvbih7IH0sIGVtcHR5U3RyaW5nKCksIDAsIDApOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgU3RyaW5nIGRlc3RpbmF0aW9uVVJMOworICAgIHVuc2lnbmVkIHNob3J0
IGVycm9yQ29kZSB7IDAgfTsKKyAgICB1aW50MzJfdCBzeXN0ZW1Db2RlIHsgMCB9OworCisgICAg
YXV0byBrZXlSZXF1ZXN0ID0gbV9zZXNzaW9uLT5nZW5lcmF0ZUtleVJlcXVlc3QobWltZVR5cGUs
IGluaXREYXRhQXJyYXkuZ2V0KCksIGRlc3RpbmF0aW9uVVJMLCBlcnJvckNvZGUsIHN5c3RlbUNv
ZGUpOworCisgICAgZGVzdGluYXRpb25VUkwgPSAidGhpcyBpcyBhIHRlc3Qgc3RyaW5nIl9zOwor
CisgICAgY29tcGxldGlvbihjb252ZXJ0VG9PcHRpb25hbERhdGFSZWZlcmVuY2Uoa2V5UmVxdWVz
dCksIGRlc3RpbmF0aW9uVVJMLCBlcnJvckNvZGUsIHN5c3RlbUNvZGUpOworfQorCit2b2lkIFJl
bW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6cmVsZWFzZUtleXMoKQoreworICAgIG1fc2Vzc2lv
bi0+cmVsZWFzZUtleXMoKTsKK30KKwordm9pZCBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6
OnVwZGF0ZShJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmJiB1cGRhdGUsIFVwZGF0ZUNh
bGxiYWNrJiYgY29tcGxldGlvbikKK3sKKyAgICBhdXRvIHVwZGF0ZUFycmF5ID0gY29udmVydFRv
VWludDhBcnJheShXVEZNb3ZlKHVwZGF0ZSkpOworICAgIGlmICghdXBkYXRlQXJyYXkpIHsKKyAg
ICAgICAgY29tcGxldGlvbihmYWxzZSwgV1RGOjpudWxsb3B0LCAwLCAwKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIFJlZlB0cjxVaW50OEFycmF5PiBuZXh0TWVzc2FnZTsKKyAgICB1
bnNpZ25lZCBzaG9ydCBlcnJvckNvZGUgeyAwIH07CisgICAgdWludDMyX3Qgc3lzdGVtQ29kZSB7
IDAgfTsKKworICAgIGJvb2wgc3VjY2VlZGVkID0gbV9zZXNzaW9uLT51cGRhdGUodXBkYXRlQXJy
YXkuZ2V0KCksIG5leHRNZXNzYWdlLCBlcnJvckNvZGUsIHN5c3RlbUNvZGUpOworCisgICAgY29t
cGxldGlvbihzdWNjZWVkZWQsIGNvbnZlcnRUb09wdGlvbmFsRGF0YVJlZmVyZW5jZShuZXh0TWVz
c2FnZSksIGVycm9yQ29kZSwgc3lzdGVtQ29kZSk7Cit9CisKK1JlZlB0cjxBcnJheUJ1ZmZlcj4g
UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpnZXRDYWNoZWRLZXlGb3JLZXlJZChjb25zdCBT
dHJpbmcmIGtleUlkKQoreworICAgIHJldHVybiBtX3Nlc3Npb24tPmNhY2hlZEtleUZvcktleUlE
KGtleUlkKTsKK30KKwordm9pZCBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OmNhY2hlZEtl
eUZvcktleUlEKFN0cmluZyBrZXlJZCwgQ2FjaGVkS2V5Rm9yS2V5SURDYWxsYmFjayYmIGNvbXBs
ZXRpb24pCit7CisgICAgY29tcGxldGlvbihjb252ZXJ0VG9PcHRpb25hbERhdGFSZWZlcmVuY2Uo
Z2V0Q2FjaGVkS2V5Rm9yS2V5SWQoa2V5SWQpKSk7Cit9CisKK3ZvaWQgUmVtb3RlTGVnYWN5Q0RN
U2Vzc2lvblByb3h5OjpzZW5kTWVzc2FnZShVaW50OEFycmF5KiBtZXNzYWdlLCBTdHJpbmcgZGVz
dGluYXRpb25VUkwpCit7CisgICAgaWYgKCFtX2ZhY3RvcnkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIG1fZmFjdG9yeS0+Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpLmNvbm5lY3Rpb24oKS5z
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uOjpTZW5kTWVzc2FnZShjb252ZXJ0
VG9PcHRpb25hbERhdGFSZWZlcmVuY2UobWVzc2FnZSksIGRlc3RpbmF0aW9uVVJMKSwgbV9pZGVu
dGlmaWVyKTsKK30KKwordm9pZCBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OnNlbmRFcnJv
cihNZWRpYUtleUVycm9yQ29kZSBlcnJvckNvZGUsIHVpbnQzMl90IHN5c3RlbUNvZGUpCit7Cisg
ICAgaWYgKG1fZmFjdG9yeSkKKyAgICAgICAgbV9mYWN0b3J5LT5ncHVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZUxlZ2FjeUNETVNlc3Np
b246OlNlbmRFcnJvcihlcnJvckNvZGUsIHN5c3RlbUNvZGUpLCBtX2lkZW50aWZpZXIpOworfQor
CitTdHJpbmcgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjptZWRpYUtleXNTdG9yYWdlRGly
ZWN0b3J5KCkgY29uc3QKK3sKKyAgICBpZiAobV9mYWN0b3J5KQorICAgICAgICByZXR1cm4gbV9m
YWN0b3J5LT5ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkubWVkaWFLZXlzU3RvcmFnZURpcmVj
dG9yeSgpOworICAgIHJldHVybiBlbXB0eVN0cmluZygpOworfQorCisKK30KKworI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RN
U2Vzc2lvblByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVn
YWN5Q0RNU2Vzc2lvblByb3h5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTkzZWM4MjE4ZDUwN2NlNGZmOWQwOTRk
YjRiMDJmMjY3YzM3MTFmMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuaApAQCAtMCwwICsxLDk3IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIu
aCIKKyNpbmNsdWRlICJSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkuaCIKKyNpbmNsdWRlICJS
ZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvTGVn
YWN5Q0RNU2Vzc2lvbi5oPgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3Rm
L1VuaXF1ZVJlZi5oPgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTEVHQUNZ
X0VOQ1JZUFRFRF9NRURJQSkKKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgTGVnYWN5Q0RN
OworY2xhc3MgTGVnYWN5Q0RNU2Vzc2lvbjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKK30KKworbmFt
ZXNwYWNlIElQQyB7CitjbGFzcyBTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlOworfQorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworY2xhc3MgUmVtb3RlTGVnYWN5Q0RNUHJveHk7CitjbGFzcyBSZW1v
dGVNZWRpYVBsYXllclByb3h5OworCitjbGFzcyBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkK
KyAgICA6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAgICAsIHB1YmxpYyBXZWJDb3Jl
OjpMZWdhY3lDRE1TZXNzaW9uQ2xpZW50CisgICAgLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UmVt
b3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5PiB7CitwdWJsaWM6CisgICAgc3RhdGljIHN0ZDo6dW5p
cXVlX3B0cjxSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk+IGNyZWF0ZShXZWFrUHRyPFJlbW90
ZUxlZ2FjeUNETUZhY3RvcnlQcm94eT4mJiwgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZp
ZXIsIFdlYkNvcmU6OkxlZ2FjeUNETSYpOworICAgIH5SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJv
eHkoKTsKKworICAgIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eSogZmFjdG9yeSgpIGNvbnN0
IHsgcmV0dXJuIG1fZmFjdG9yeS5nZXQoKTsgfQorICAgIFdlYkNvcmU6OkxlZ2FjeUNETVNlc3Np
b24qIHNlc3Npb24oKSBjb25zdCB7IHJldHVybiBtX3Nlc3Npb24uZ2V0KCk7IH0KKworICAgIHZv
aWQgc2V0UGxheWVyKFdlYWtQdHI8UmVtb3RlTWVkaWFQbGF5ZXJQcm94eT4gcGxheWVyKSB7IG1f
cGxheWVyID0gV1RGTW92ZShwbGF5ZXIpOyB9CisKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGdl
dENhY2hlZEtleUZvcktleUlkKGNvbnN0IFN0cmluZyYpOworCitwcml2YXRlOgorICAgIGZyaWVu
ZCBjbGFzcyBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk7CisgICAgUmVtb3RlTGVnYWN5Q0RN
U2Vzc2lvblByb3h5KFdlYWtQdHI8UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5PiYmLCBSZW1v
dGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllciwgV2ViQ29yZTo6TGVnYWN5Q0RNJik7CisKKyAg
ICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgorICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZl
U3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVf
cHRyPElQQzo6RW5jb2Rlcj4mKSBmaW5hbDsKKworICAgIC8vIExlZ2FjeUNETVNlc3Npb25DbGll
bnQKKyAgICB2b2lkIHNlbmRNZXNzYWdlKFVpbnQ4QXJyYXkqLCBTdHJpbmcgZGVzdGluYXRpb25V
UkwpIGZpbmFsOworICAgIHZvaWQgc2VuZEVycm9yKE1lZGlhS2V5RXJyb3JDb2RlLCB1aW50MzJf
dCBzeXN0ZW1Db2RlKSBmaW5hbDsKKyAgICBTdHJpbmcgbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9y
eSgpIGNvbnN0IGZpbmFsOworCisgICAgLy8gTWVzc2FnZXMKKyAgICB1c2luZyBHZW5lcmF0ZUtl
eUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxJUEM6OlNoYXJlZEJ1
ZmZlckRhdGFSZWZlcmVuY2U+JiYsIGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkIHNob3J0LCB1aW50
MzJfdCk+OworICAgIHZvaWQgZ2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0cmluZyYgbWltZVR5
cGUsIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYmIGluaXREYXRhLCBHZW5lcmF0ZUtl
eUNhbGxiYWNrJiYpOworICAgIHZvaWQgcmVsZWFzZUtleXMoKTsKKyAgICB1c2luZyBVcGRhdGVD
YWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCwgT3B0aW9uYWw8SVBDOjpTaGFy
ZWRCdWZmZXJEYXRhUmVmZXJlbmNlPiYmLCB1bnNpZ25lZCBzaG9ydCwgdWludDMyX3QpPjsKKyAg
ICB2b2lkIHVwZGF0ZShJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UmJiB1cGRhdGUsIFVw
ZGF0ZUNhbGxiYWNrJiYpOworICAgIHVzaW5nIENhY2hlZEtleUZvcktleUlEQ2FsbGJhY2sgPSBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVy
ZW5jZT4mJik+OworICAgIHZvaWQgY2FjaGVkS2V5Rm9yS2V5SUQoU3RyaW5nIGtleUlkLCBDYWNo
ZWRLZXlGb3JLZXlJRENhbGxiYWNrJiYpOworCisgICAgV2Vha1B0cjxSZW1vdGVMZWdhY3lDRE1G
YWN0b3J5UHJveHk+IG1fZmFjdG9yeTsKKyAgICBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRp
ZmllciBtX2lkZW50aWZpZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkxlZ2FjeUNE
TVNlc3Npb24+IG1fc2Vzc2lvbjsKKyAgICBXZWFrUHRyPFJlbW90ZU1lZGlhUGxheWVyUHJveHk+
IG1fcGxheWVyOworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblBy
b3h5Lm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE0OTYyY2U5MWRmNTU5NWZjN2FjZTJjMDUwNzdi
MDUxZWEwZGUzNzAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEs
MzMgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
IyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
IyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpZiBFTkFCTEUo
R1BVX1BST0NFU1MpICYmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQorCittZXNzYWdl
cyAtPiBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkgTm90UmVmQ291bnRlZCB7CisgICAgR2Vu
ZXJhdGVLZXlSZXF1ZXN0KFN0cmluZyBtaW1lVHlwZSwgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVm
ZXJlbmNlIGluaXREYXRhKSAtPiAoT3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJl
bmNlPiBuZXh0TWVzc2FnZSwgU3RyaW5nIGRlc3RpbmF0aW9uVVJMLCB1bnNpZ25lZCBzaG9ydCBl
cnJvckNvZGUsIHVpbnQzMl90IHN5c3RlbUNvZGUpIFN5bmNocm9ub3VzCisgICAgUmVsZWFzZUtl
eXMoKQorICAgIFVwZGF0ZShJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgdXBkYXRlKSAt
PiAoYm9vbCBzdWNjZWVkZWQsIE9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5j
ZT4gbmV4dE1lc3NhZ2UsIHVuc2lnbmVkIHNob3J0IGVycm9yQ29kZSwgdWludDMyX3Qgc3lzdGVt
Q29kZSkgU3luY2hyb25vdXMKKyAgICBDYWNoZWRLZXlGb3JLZXlJRChTdHJpbmcga2V5SWQpIC0+
IChPcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U+IGtleSkgU3luY2hyb25v
dXMKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcAppbmRleCBiYzRk
YmUzOWM0ZWFhM2MxODY1ODIxY2Q1ZGJlNTEzMWZkZGJmNDcwLi5lYjE1MGNiMzBhZTE4N2FlOTQ5
NDg2YmI0YTJhZTFjMTVjYzQ1ZjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHAK
QEAgLTIwNCw2ICsyMDQsMTQgQEAgdm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eTo6
ZGlkUmVjZWl2ZVN5bmNQbGF5ZXJNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYKICAgICAgICAgcGxh
eWVyLT5kaWRSZWNlaXZlU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgZW5jb2Rlcik7
CiB9CiAKK1JlbW90ZU1lZGlhUGxheWVyUHJveHkqIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclBy
b3h5OjpnZXRQcm94eShjb25zdCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyJiBp
ZCkKK3sKKyAgICBhdXRvIHJlc3VsdHMgPSBtX3Byb3hpZXMuZmluZChpZCk7CisgICAgaWYgKHJl
c3VsdHMgIT0gbV9wcm94aWVzLmVuZCgpKQorICAgICAgICByZXR1cm4gcmVzdWx0cy0+dmFsdWUu
Z2V0KCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJM
RUQKIGNvbnN0IExvZ2dlciYgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OmxvZ2dlcigp
IGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oCmluZGV4IGUwN2Q2ZTZhODM1YWY0
ZWNmY2FmZDg2NThkMDUyYzRjYzc1MjIzYmUuLjUxZTcxZTc3NzM3OGI4ZGFmYjljN2M2MjcwMmI5
MWE2NzVmYTFlYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oCkBAIC02OCw2ICs2OCw4
IEBAIHB1YmxpYzoKICAgICBXVEZMb2dDaGFubmVsJiBsb2dDaGFubmVsKCkgY29uc3QgZmluYWw7
CiAjZW5kaWYKIAorICAgIFJlbW90ZU1lZGlhUGxheWVyUHJveHkqIGdldFByb3h5KGNvbnN0IE1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXImKTsKKwogcHJpdmF0ZToKICAgICAvLyBJ
UEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAKaW5kZXggYzFi
NDM5NmIwMWJjYjlkNDBjZDllZmQwODI4ZDY3ZjY3NGUyODM5Mi4uNzg0ZDI0MDljODNlOWE3ZjYw
ODZjNzAyMjgxZTFkMjk1YzkzNWM0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcApAQCAtMzMsNiArMzMs
OCBAQAogI2luY2x1ZGUgIkxheWVySG9zdGluZ0NvbnRleHQuaCIKICNpbmNsdWRlICJNZWRpYVBs
YXllclByaXZhdGVSZW1vdGVNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZUF1ZGlvVHJhY2tQ
cm94eS5oIgorI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5oIgorI2luY2x1
ZGUgIlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlclByb3h5LmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJQcm94eUNv
bmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllclN0YXRlLmgiCkBAIC01
MjMsMTUgKzUyNSwxOSBAQCB2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVy
QWN0aXZlU291cmNlQnVmZmVyc0NoYW5nZWQoKQogfQogCiAjaWYgRU5BQkxFKExFR0FDWV9FTkNS
WVBURURfTUVESUEpCi1SZWZQdHI8QXJyYXlCdWZmZXI+IFJlbW90ZU1lZGlhUGxheWVyUHJveHk6
Om1lZGlhUGxheWVyQ2FjaGVkS2V5Rm9yS2V5SWQoY29uc3QgU3RyaW5nJikgY29uc3QKK1JlZlB0
cjxBcnJheUJ1ZmZlcj4gUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJDYWNoZWRL
ZXlGb3JLZXlJZChjb25zdCBTdHJpbmcmIGtleUlkKSBjb25zdAogewotICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgaWYgKGF1dG8gY2RtU2Vzc2lvbiA9IG1fbWFuYWdlci5ncHVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzKCkubGVnYWN5Q2RtRmFjdG9yeVByb3h5KCkuZ2V0U2Vzc2lvbihtX2xlZ2Fj
eVNlc3Npb24pKQorICAgICAgICByZXR1cm4gY2RtU2Vzc2lvbi0+Z2V0Q2FjaGVkS2V5Rm9yS2V5
SWQoa2V5SWQpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCi12b2lkIFJlbW90ZU1lZGlhUGxh
eWVyUHJveHk6Om1lZGlhUGxheWVyS2V5TmVlZGVkKFVpbnQ4QXJyYXkqKQordm9pZCBSZW1vdGVN
ZWRpYVBsYXllclByb3h5OjptZWRpYVBsYXllcktleU5lZWRlZChVaW50OEFycmF5KiBtZXNzYWdl
KQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgSVBDOjpEYXRhUmVmZXJlbmNlIG1lc3Nh
Z2VSZWZlcmVuY2U7CisgICAgaWYgKG1lc3NhZ2UpCisgICAgICAgIG1lc3NhZ2VSZWZlcmVuY2Ug
PSB7IG1lc3NhZ2UtPmRhdGEoKSwgbWVzc2FnZS0+Ynl0ZUxlbmd0aCgpIH07CisgICAgbV93ZWJQ
cm9jZXNzQ29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
OjpNZWRpYVBsYXllcktleU5lZWRlZChXVEZNb3ZlKG1lc3NhZ2VSZWZlcmVuY2UpKSwgbV9pZCk7
CiB9CiAjZW5kaWYKIApAQCAtNzIzLDYgKzcyOSwyOCBAQCB2b2lkIFJlbW90ZU1lZGlhUGxheWVy
UHJveHk6OnNlbmRDYWNoZWRTdGF0ZSgpCiB9CiAKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRF
RF9NRURJQSkKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6c2V0TGVnYWN5Q0RNU2Vzc2lv
bihSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllciYmIGluc3RhbmNlSWQpCit7CisgICAg
aWYgKG1fbGVnYWN5U2Vzc2lvbiA9PSBpbnN0YW5jZUlkKQorICAgICAgICByZXR1cm47CisKKyAg
ICBpZiAobV9sZWdhY3lTZXNzaW9uKSB7CisgICAgICAgIGlmIChhdXRvIGNkbVNlc3Npb24gPSBt
X21hbmFnZXIuZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpLmxlZ2FjeUNkbUZhY3RvcnlQcm94
eSgpLmdldFNlc3Npb24obV9sZWdhY3lTZXNzaW9uKSkgeworICAgICAgICAgICAgbV9wbGF5ZXIt
PnNldENETVNlc3Npb24obnVsbHB0cik7CisgICAgICAgICAgICBjZG1TZXNzaW9uLT5zZXRQbGF5
ZXIobnVsbHB0cik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBtX2xlZ2FjeVNlc3Npb24gPSBp
bnN0YW5jZUlkOworCisgICAgaWYgKG1fbGVnYWN5U2Vzc2lvbikgeworICAgICAgICBpZiAoYXV0
byBjZG1TZXNzaW9uID0gbV9tYW5hZ2VyLmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKS5sZWdh
Y3lDZG1GYWN0b3J5UHJveHkoKS5nZXRTZXNzaW9uKG1fbGVnYWN5U2Vzc2lvbikpIHsKKyAgICAg
ICAgICAgIG1fcGxheWVyLT5zZXRDRE1TZXNzaW9uKGNkbVNlc3Npb24tPnNlc3Npb24oKSk7Cisg
ICAgICAgICAgICBjZG1TZXNzaW9uLT5zZXRQbGF5ZXIobWFrZVdlYWtQdHIodGhpcykpOworICAg
ICAgICB9CisgICAgfQorfQorCiB2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6OmtleUFkZGVk
KCkKIHsKICAgICBtX3BsYXllci0+a2V5QWRkZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oCmluZGV4IDE0M2Jj
NTU5ZWQ5NTFjM2Q3MTQ2NTU5OGEwNTgzNzk5MWJmZGI3M2UuLjg2MDE4NTRkODI4NjZkYjU0MDk2
ZmZjNzEwY2U1NjVkMTE0MDVjMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaApAQCAtMzAsNiArMzAsNyBAQAog
I2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJNZWRpYVBsYXllclByaXZhdGVSZW1v
dGVJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAi
UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJSZW1vdGVNZWRp
YVBsYXllckNvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllclByb3h5
Q29uZmlndXJhdGlvbi5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyU3RhdGUuaCIKQEAg
LTE0NCw2ICsxNDUsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShMRUdBQ1lfRU5D
UllQVEVEX01FRElBKQorICAgIHZvaWQgc2V0TGVnYWN5Q0RNU2Vzc2lvbihSZW1vdGVMZWdhY3lD
RE1TZXNzaW9uSWRlbnRpZmllciYmIGluc3RhbmNlSWQpOwogICAgIHZvaWQga2V5QWRkZWQoKTsK
ICNlbmRpZgogCkBAIC0xNzUsNiArMTc3LDggQEAgcHVibGljOgogICAgIFJlZjxXZWJDb3JlOjpQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2U+IHJlcXVlc3RSZXNvdXJjZShXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiwgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyOjpMb2FkT3B0aW9u
cyk7CiAgICAgdm9pZCByZW1vdmVSZXNvdXJjZShSZW1vdGVNZWRpYVJlc291cmNlSWRlbnRpZmll
cik7CiAKKyAgICBSZWZQdHI8V2ViQ29yZTo6TWVkaWFQbGF5ZXI+IG1lZGlhUGxheWVyKCkgeyBy
ZXR1cm4gbV9wbGF5ZXI7IH0KKwogcHJpdmF0ZToKICAgICAvLyBNZWRpYVBsYXllckNsaWVudAog
ICAgIHZvaWQgbWVkaWFQbGF5ZXJOZXR3b3JrU3RhdGVDaGFuZ2VkKCkgZmluYWw7CkBAIC0yOTMs
NiArMjk3LDcgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElB
KSAmJiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogICAgIGJvb2wgbV9zaG91bGRDb250aW51ZUFm
dGVyS2V5TmVlZGVkIHsgZmFsc2UgfTsKKyAgICBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRp
ZmllciBtX2xlZ2FjeVNlc3Npb247CiAjZW5kaWYKIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxF
RApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlh
UGxheWVyUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5tZXNzYWdlcy5pbgppbmRleCAyNzk1MTI2ZDI5YmJlMWI4
ODliMjdmMDhkNTcwYzYyZjRlMDRlMDUxLi5jZWI2OGFlYjA3N2UwODExYTNhMmIyZDJhMDRkYzkz
NGYwZjVhODYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTWVkaWFQbGF5ZXJQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5tZXNzYWdlcy5pbgpAQCAtODAsNyAr
ODAsNyBAQCBtZXNzYWdlcyAtPiBSZW1vdGVNZWRpYVBsYXllclByb3h5IE5vdFJlZkNvdW50ZWQg
ewogI2VuZGlmCiAKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKLSAgICAjIFNl
dENETVNlc3Npb24KKyAgICBTZXRMZWdhY3lDRE1TZXNzaW9uKFdlYktpdDo6UmVtb3RlTGVnYWN5
Q0RNU2Vzc2lvbklkZW50aWZpZXIgaW5zdGFuY2VJZCkKICAgICBLZXlBZGRlZCgpCiAjZW5kaWYK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVRleHRU
cmFja1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVUZXh0
VHJhY2tQcm94eS5jcHAKaW5kZXggYWY2NGM4MmI5MDIzYWQyMzQxNDIzY2Y4NWRiNDk1YTc2YzRj
NmI0YS4uNjBmYTZjODExYmZkMDc2MmJiZWNkMWUxODBjYzBjYTUyMjZiMjQ4NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVRleHRUcmFja1Byb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVGV4dFRyYWNrUHJv
eHkuY3BwCkBAIC0yOSwxNSArMjksMTkgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAor
I2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGVNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyUHJveHkuaCIKICNp
bmNsdWRlICJUZXh0VHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbi5oIgogI2luY2x1ZGUg
IlRleHRUcmFja1ByaXZhdGVSZW1vdGVNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYkNvcmVBcmd1
bWVudENvZGVycy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvSVNPVlRUQ3VlLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAordXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CisKIFJlbW90ZVRleHRUcmFja1Byb3h5OjpSZW1vdGVUZXh0VHJh
Y2tQcm94eShSZW1vdGVNZWRpYVBsYXllclByb3h5JiBwbGF5ZXIsIFRyYWNrUHJpdmF0ZVJlbW90
ZUlkZW50aWZpZXIgaWQsIFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZSYgdHJhY2tQcml2YXRlKQogICAgIDogbV9wbGF5ZXIocGxheWVyKQog
ICAgICwgbV9pZGVudGlmaWVyKGlkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZVRleHRUcmFja1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlVGV4dFRyYWNrUHJveHkuaAppbmRleCA0ZjQ5ZjNhMzg3ZDBlYTEwZjE2
MWU1YWQ3OWY4ZDc4NTUwM2QxNzJhLi45NzFlN2Y2NDg5YjMzYTUzODhiZWNmOTE4OWFiOWU3OWNh
NzMyMmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
VGV4dFRyYWNrUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlVGV4dFRyYWNrUHJveHkuaApAQCAtMzIsMTUgKzMyLDIyIEBACiAjaW5jbHVkZSA8V2ViQ29y
ZS9JbmJhbmRUZXh0VHJhY2tQcml2YXRlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UcmFja0Jhc2Uu
aD4KIAorbmFtZXNwYWNlIElQQyB7CisKK2NsYXNzIENvbm5lY3Rpb247CisKK30KKwogbmFtZXNw
YWNlIFdlYktpdCB7CiAKK2NsYXNzIFJlbW90ZU1lZGlhUGxheWVyUHJveHk7CiBzdHJ1Y3QgVGV4
dFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb247CiAKIGNsYXNzIFJlbW90ZVRleHRUcmFj
a1Byb3h5IGZpbmFsCiAgICAgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8UmVtb3RlVGV4
dFRyYWNrUHJveHksIFdURjo6RGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1haW4+CiAgICAgLCBwcml2YXRl
IFdlYkNvcmU6OkluYmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQgewogcHVibGljOgotICAgIHN0
YXRpYyBSZWY8UmVtb3RlVGV4dFRyYWNrUHJveHk+IGNyZWF0ZShSZW1vdGVNZWRpYVBsYXllclBy
b3h5JiBwbGF5ZXIsIFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQsIFJlZjxJUEM6OkNv
bm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSYgdHJhY2tQcml2
YXRlKQorICAgIHN0YXRpYyBSZWY8UmVtb3RlVGV4dFRyYWNrUHJveHk+IGNyZWF0ZShSZW1vdGVN
ZWRpYVBsYXllclByb3h5JiBwbGF5ZXIsIFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQs
IFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgV2ViQ29yZTo6SW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZSYgdHJhY2tQcml2YXRlKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgUmVtb3RlVGV4dFRyYWNrUHJveHkocGxheWVyLCBpZCwgV1RGTW92ZShjb25uZWN0aW9u
KSwgdHJhY2tQcml2YXRlKSk7CiAgICAgfQpAQCAtNTAsMTUgKzU3LDE1IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldE1vZGUoV2ViQ29yZTo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6TW9kZSBtb2Rl
KSB7IG1fdHJhY2tQcml2YXRlLT5zZXRNb2RlKG1vZGUpOyB9CiAKIHByaXZhdGU6Ci0gICAgUmVt
b3RlVGV4dFRyYWNrUHJveHkoUmVtb3RlTWVkaWFQbGF5ZXJQcm94eSYsIFRyYWNrUHJpdmF0ZVJl
bW90ZUlkZW50aWZpZXIsIFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYsIEluYmFuZFRleHRUcmFja1By
aXZhdGUmKTsKKyAgICBSZW1vdGVUZXh0VHJhY2tQcm94eShSZW1vdGVNZWRpYVBsYXllclByb3h5
JiwgVHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJiwg
V2ViQ29yZTo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSYpOwogCiAgICAgLy8gSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUNsaWVudAogICAgIHZpcnR1YWwgdm9pZCBhZGREYXRhQ3VlKGNvbnN0IE1lZGlh
VGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBjb25zdCB2b2lkKiwgdW5zaWduZWQp
OwogCiAjaWYgRU5BQkxFKERBVEFDVUVfVkFMVUUpCi0gICAgdmlydHVhbCB2b2lkIGFkZERhdGFD
dWUoY29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1lJiBlbmQsIFJlZjxTZXJp
YWxpemVkUGxhdGZvcm1EYXRhQ3VlPiYmLCBjb25zdCBTdHJpbmcmKTsKLSAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlRGF0YUN1ZShjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUm
IGVuZCwgU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZSYpOwotICAgIHZpcnR1YWwgdm9pZCByZW1v
dmVEYXRhQ3VlKGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBT
ZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlJik7CisgICAgdmlydHVhbCB2b2lkIGFkZERhdGFDdWUo
Y29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1lJiBlbmQsIFJlZjxXZWJDb3Jl
OjpTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlPiYmLCBjb25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlRGF0YUN1ZShjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRp
YVRpbWUmIGVuZCwgV2ViQ29yZTo6U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZSYpOworICAgIHZp
cnR1YWwgdm9pZCByZW1vdmVEYXRhQ3VlKGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1l
ZGlhVGltZSYgZW5kLCBXZWJDb3JlOjpTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlJik7CiAjZW5k
aWYKIAogICAgIHZpcnR1YWwgdm9pZCBhZGRHZW5lcmljQ3VlKFdlYkNvcmU6OkluYmFuZEdlbmVy
aWNDdWUmKTsKQEAgLTY3LDcgKzc0LDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCBw
YXJzZVdlYlZUVEZpbGVIZWFkZXIoU3RyaW5nJiYpOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZVdl
YlZUVEN1ZURhdGEoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICB2aXJ0
dWFsIHZvaWQgcGFyc2VXZWJWVFRDdWVEYXRhKElTT1dlYlZUVEN1ZSYmKTsKKyAgICB2aXJ0dWFs
IHZvaWQgcGFyc2VXZWJWVFRDdWVEYXRhKFdlYkNvcmU6OklTT1dlYlZUVEN1ZSYmKTsKIAogICAg
IC8vIFRyYWNrUHJpdmF0ZUJhc2VDbGllbnQKICAgICB2b2lkIGlkQ2hhbmdlZChjb25zdCBBdG9t
U3RyaW5nJikgZmluYWw7CkBAIC04MSw3ICs4OCw3IEBAIHByaXZhdGU6CiAgICAgUmVtb3RlTWVk
aWFQbGF5ZXJQcm94eSYgbV9wbGF5ZXI7CiAgICAgVHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmll
ciBtX2lkZW50aWZpZXI7CiAgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV93ZWJQcm9jZXNzQ29u
bmVjdGlvbjsKLSAgICBSZWY8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZT4gbV90cmFja1ByaXZhdGU7
CisgICAgUmVmPFdlYkNvcmU6OkluYmFuZFRleHRUcmFja1ByaXZhdGU+IG1fdHJhY2tQcml2YXRl
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtp
dC9tZXNzYWdlcy5weQppbmRleCA0YmExNGRiYWYyNGIyNDFlNTlkYjBhN2YyMDgwZDAyZDAyN2Mz
YjA0Li42NjVmNWEyMjEwOGUxYjY2OTFhMDM1Njk3Yzk5YjE0NmRlMDMzMGI4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTIzOCw2ICsyMzgsOCBAQCBkZWYg
dHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJlZCgpOgogICAgICAgICAnV2ViS2l0
OjpSZW1vdGVDRE1JZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6UmVtb3RlQ0RNSW5zdGFu
Y2VJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
SWRlbnRpZmllcicsCisgICAgICAgICdXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETUlkZW50aWZpZXIn
LAorICAgICAgICAnV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllcicsCiAg
ICAgICAgICdXZWJLaXQ6OlJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyJywKICAgICAgICAg
J1dlYktpdDo6UmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpS
VENEZWNvZGVySWRlbnRpZmllcicsCkBAIC01ODQsNiArNTg2LDcgQEAgZGVmIGhlYWRlcnNfZm9y
X3R5cGUodHlwZSk6CiAgICAgICAgICdXZWJDb3JlOjpJbnB1dE1vZGUnOiBbJzxXZWJDb3JlL0lu
cHV0TW9kZS5oPiddLAogICAgICAgICAnV2ViQ29yZTo6S2V5ZnJhbWVWYWx1ZUxpc3QnOiBbJzxX
ZWJDb3JlL0dyYXBoaWNzTGF5ZXIuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OktleXByZXNzQ29t
bWFuZCc6IFsnPFdlYkNvcmUvS2V5Ym9hcmRFdmVudC5oPiddLAorICAgICAgICAnV2ViQ29yZTo6
TGVnYWN5Q0RNU2Vzc2lvbkNsaWVudDo6TWVkaWFLZXlFcnJvckNvZGUnOiBbJzxXZWJDb3JlL0xl
Z2FjeUNETVNlc3Npb24uaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OkxvY2tCYWNrRm9yd2FyZExp
c3QnOiBbJzxXZWJDb3JlL0ZyYW1lTG9hZGVyVHlwZXMuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6
Ok1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpIYXNBY3Rpdml0eSc6IFsnPFdlYkNvcmUvTWVz
c2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6Ok5ldHdvcmtU
cmFuc2FjdGlvbkluZm9ybWF0aW9uJzogWyc8V2ViQ29yZS9OZXR3b3JrTG9hZEluZm9ybWF0aW9u
Lmg+J10sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dl
YktpdC9Tb3VyY2VzLnR4dAppbmRleCAxYzkyNDVlMGI5ZjRiYmMyYjgwZDdlM2NjMDRlZmQyMDNk
OGUwNGNmLi42ZGRkZGY1MjNmZDI3NDFmNmNmNjMzMDlhN2E4MjlkYTIxMzI3YThjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNl
cy50eHQKQEAgLTMzLDYgKzMzLDkgQEAgR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1GYWN0b3J5
UHJveHkuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuY3BwCiBH
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmNwcAogR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5jcHAKK0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVn
YWN5Q0RNRmFjdG9yeVByb3h5LmNwcAorR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Q
cm94eS5jcHAKK0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNw
cAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5jcHAKIEdQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAKIEdQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5jcHAKQEAgLTU1NSw2ICs1NTgsOSBAQCBXZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVDRE0uY3BwCiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1G
YWN0b3J5LmNwcAogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3BwCiBX
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uY3BwCitXZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE0uY3BwCitXZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVMZWdhY3lDRE1GYWN0b3J5LmNwcAorV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVn
YWN5Q0RNU2Vzc2lvbi5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVy
TWFuYWdlci5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTUlNRVR5
cGVDYWNoZS5jcHAgQG5vLXVuaWZ5CiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVJl
c291cmNlUHJveHkuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCAwZTMyNjg0NGQ4ZDA1ZGQ3MDVkMDcwZmU0MmIyNDFmZjI3ZDA1ZDYy
Li5hZjQ4MzdlMWU0NjhjZGI1YWU1MDBiZTQ1ZWE5MThkNmViYTMxOGU3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE3NDcsNiArMTc0
NywxMCBAQAogCQlDREJCNDlGRDI0MEQ5QTcyMDAxN0MyOTIgLyogUmVtb3RlQXVkaW9TZXNzaW9u
Q29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0RCQjQ5RkMyNDBEOUE3MjAwMTdDMjkyIC8qIFJlbW90ZUF1ZGlvU2Vzc2lvbkNvbmZp
Z3VyYXRpb24uaCAqLzsgfTsKIAkJQ0RDMjgzMUQyMDFCRDc5RDAwRTZFNzQ1IC8qIFdLRnVsbHNj
cmVlblN0YWNrVmlldy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0RDMjgzMUIyMDFCRDc5RDAwRTZFNzQ1IC8qIFdLRnVsbHNjcmVlblN0YWNrVmlldy5o
ICovOyB9OwogCQlDRENBODVDOTEzMkFCQTRFMDBFOTYxREYgLyogV0tGdWxsU2NyZWVuV2luZG93
Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0RDQTg1QzcxMzJBQkE0RTAwRTk2MURGIC8qIFdLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xs
ZXIuaCAqLzsgfTsKKwkJQ0RFNTU1MzIyNDA2RUI4QzAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNE
TUZhY3RvcnlQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREU1NTUyOTI0MDZCODk2MDA4QTNEREIgLyogUmVtb3Rl
TGVnYWN5Q0RNRmFjdG9yeVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKKwkJQ0RFNTU1
MzMyNDA2RUI4QzAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETVByb3h5TWVzc2FnZVJlY2VpdmVy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERTU1
NTJBMjQwNkI4OTYwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1Qcm94eU1lc3NhZ2VSZWNlaXZl
ci5jcHAgKi87IH07CisJCUNERTU1NTM0MjQwNkVCOEMwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lD
RE1TZXNzaW9uTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENERTU1NTJFMjQwNkI4OTcwMDhBM0REQiAvKiBSZW1vdGVMZWdh
Y3lDRE1TZXNzaW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKKwkJQ0RFNTU1MzUyNDA2RUI4
QzAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eU1lc3NhZ2VSZWNlaXZlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREU1NTUz
MTI0MDZCODk3MDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5TWVzc2FnZVJl
Y2VpdmVyLmNwcCAqLzsgfTsKIAkJQ0UxMUFENTIxQ0JDNDgyRjAwNjgxRUU1IC8qIENvZGVTaWdu
aW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTEx
QUQ1MTFDQkM0ODJGMDA2ODFFRTUgLyogQ29kZVNpZ25pbmcuaCAqLzsgfTsKIAkJQ0UxQTBCRDIx
QTQ4RTZDNjAwNTRFRjc0IC8qIEFzc2VydGlvblNlcnZpY2VzU1BJLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTFBMEJDQzFBNDhFNkM2MDA1NEVGNzQg
LyogQXNzZXJ0aW9uU2VydmljZXNTUEkuaCAqLzsgfTsKIAkJQ0UxQTBCRDYxQTQ4RTZDNjAwNTRF
Rjc0IC8qIFRDQ1NQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0UxQTBCRDAxQTQ4RTZDNjAwNTRFRjc0IC8qIFRDQ1NQSS5oICovOyB9OwpAQCAtNTE0
MCw2ICs1MTQ0LDM2IEBACiAJCUNERDUzNTc3MjQwRERFMDcwMEY3QjhDNCAvKiBSZW1vdGVBdWRp
b1Nlc3Npb25Qcm94eU1lc3NhZ2VzUmVwbGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVBdWRp
b1Nlc3Npb25Qcm94eU1lc3NhZ2VzUmVwbGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlDREQ1MzU3ODI0MERERTA4MDBGN0I4QzQgLyogUmVtb3RlQXVkaW9TZXNzaW9uUHJveHlN
YW5hZ2VyTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlQXVkaW9TZXNzaW9uUHJveHlN
YW5hZ2VyTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RENTM1Nzky
NDBEREUwODAwRjdCOEM0IC8qIFJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5TWFuYWdlck1lc3NhZ2Vz
UmVwbGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFnZXJN
ZXNzYWdlc1JlcGxpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RFNTU0RTIy
NDA1ODExNDAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnkuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlDREU1NTRFMzI0MDU4MTE0MDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RFNTU0RUEyNDA1ODE4MzAwOEEzRERCIC8qIFJlbW90ZUxl
Z2FjeUNETS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVMZWdhY3lDRE0uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQ0RFNTU0RUIyNDA1ODE4MzAwOEEzRERCIC8qIFJlbW90ZUxlZ2Fj
eUNETS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVMZWdhY3lDRE0uY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlDREU1NTRFRTI0MDU4MUEzMDA4QTNEREIgLyogUmVtb3Rl
TGVnYWN5Q0RNU2Vzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVMZWdhY3lDRE1TZXNzaW9u
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNERTU1NEVGMjQwNTgxQTMwMDhBM0RE
QiAvKiBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90
ZUxlZ2FjeUNETVNlc3Npb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREU1
NTRGODI0MDU4MjA4MDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlDREU1NTRGOTI0MDU4MjA4MDA4QTNEREIgLyogUmVtb3RlTGVnYWN5
Q0RNU2Vzc2lvblByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUxlZ2FjeUNETVNl
c3Npb25Qcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNERTU1NTAwMjQw
NTgyODQwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkubWVzc2FnZXMuaW4g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5Lm1lc3Nh
Z2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREU1NTUwNTI0MDU4MzI0MDA4
QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSZW1vdGVM
ZWdhY3lDRE1TZXNzaW9uLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlDREU1NTUwNzI0MDU4OEI4MDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNSWRlbnRpZmllci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSZW1vdGVMZWdhY3lDRE1JZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUNERTU1NTA5MjQwNTg4Q0IwMDhBM0REQiAvKiBSZW1vdGVMZWdh
Y3lDRE1TZXNzaW9uSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVMZWdhY3lDRE1T
ZXNzaW9uSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREU1NTUx
QjI0MDVBM0I3MDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5Lm1lc3NhZ2Vz
LmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5tZXNzYWdlcy5pbjsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RFNTU1MUMyNDA1QTNCNzAwOEEzRERCIC8qIFJlbW90
ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVMZWdhY3lDRE1G
YWN0b3J5UHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RFNTU1MUQyNDA1
QTNCNzAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlDREU1NTUxRTI0MDVBM0RGMDA4QTNEREIgLyogUmVtb3RlTGVnYWN5
Q0RNUHJveHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVtb3RlTGVnYWN5Q0RNUHJveHkubWVzc2FnZXMu
aW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNERTU1NTFGMjQwNUEzREYwMDhBM0RE
QiAvKiBSZW1vdGVMZWdhY3lDRE1Qcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVMZWdhY3lD
RE1Qcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREU1NTUyMDI0MDVBM0RG
MDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
UmVtb3RlTGVnYWN5Q0RNUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlD
REU1NTUyNjI0MDZCODk1MDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5TWVz
c2FnZXNSZXBsaWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94
eU1lc3NhZ2VzUmVwbGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREU1NTUy
NzI0MDZCODk1MDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbk1lc3NhZ2VzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFJlbW90ZUxlZ2FjeUNETVNlc3Npb25NZXNzYWdlcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlDREU1NTUyODI0MDZCODk2MDA4QTNEREIgLyogUmVtb3RlTGVn
YWN5Q0RNUHJveHlNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVMZWdhY3lDRE1Qcm94
eU1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNERTU1NTI5MjQwNkI4
OTYwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHlNZXNzYWdlUmVjZWl2ZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5TWVzc2Fn
ZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RFNTU1MkEyNDA2
Qjg5NjAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUxlZ2FjeUNETVByb3h5TWVzc2FnZVJlY2VpdmVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RFNTU1MkIyNDA2Qjg5NjAwOEEzRERC
IC8qIFJlbW90ZUxlZ2FjeUNETVByb3h5TWVzc2FnZXNSZXBsaWVzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJlbW90ZUxlZ2FjeUNETVByb3h5TWVzc2FnZXNSZXBsaWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUNERTU1NTJDMjQwNkI4OTYwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1G
YWN0b3J5UHJveHlNZXNzYWdlc1JlcGxpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlTGVnYWN5
Q0RNRmFjdG9yeVByb3h5TWVzc2FnZXNSZXBsaWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUNERTU1NTJEMjQwNkI4OTcwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5
UHJveHlNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJv
eHlNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREU1NTUyRTI0MDZC
ODk3MDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbk1lc3NhZ2VSZWNlaXZlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uTWVzc2FnZVJlY2VpdmVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RFNTU1MkYyNDA2Qjg5NzAwOEEz
RERCIC8qIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eU1lc3NhZ2VzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eU1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUNERTU1NTMwMjQwNkI4OTcwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lD
RE1TZXNzaW9uTWVzc2FnZXNSZXBsaWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUxlZ2FjeUNE
TVNlc3Npb25NZXNzYWdlc1JlcGxpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
Q0RFNTU1MzEyNDA2Qjg5NzAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eU1l
c3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVMZWdhY3lDRE1TZXNz
aW9uUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDRTExQUQ0RjFDQkM0N0Y4MDA2ODFFRTUgLyogQ29kZVNpZ25pbmcubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDb2RlU2lnbmluZy5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQ0UxMUFENTExQ0JDNDgyRjAwNjgxRUU1IC8qIENvZGVTaWduaW5n
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvZGVTaWduaW5nLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFMUEwQkNDMUE0OEU2QzYwMDU0RUY3NCAvKiBBc3Nl
cnRpb25TZXJ2aWNlc1NQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBc3Nl
cnRpb25TZXJ2aWNlc1NQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTQ0Miw2
ICs1NDc2LDE1IEBACiAJCQkJQ0RBQzIwQkQyM0ZDMkY3NDAwMjFERUUzIC8qIFJlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvbi5oICovLAogCQkJCUNENDY2MTdGMjQwMTA0NTgwMDQ3Q0EzNSAvKiBSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb24ubWVzc2FnZXMuaW4gKi8sCiAJCQkJQ0RBQzIwQkMyM0ZDMkY3
NDAwMjFERUUzIC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbklkZW50aWZpZXIuaCAqLywKKwkJ
CQlDREU1NTRFQjI0MDU4MTgzMDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNLmNwcCAqLywKKwkJ
CQlDREU1NTRFQTI0MDU4MTgzMDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNLmggKi8sCisJCQkJ
Q0RFNTU0RTMyNDA1ODExNDAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnkuY3BwICov
LAorCQkJCUNERTU1NEUyMjQwNTgxMTQwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5
LmggKi8sCisJCQkJQ0RFNTU1MDcyNDA1ODhCODAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETUlk
ZW50aWZpZXIuaCAqLywKKwkJCQlDREU1NTRFRjI0MDU4MUEzMDA4QTNEREIgLyogUmVtb3RlTGVn
YWN5Q0RNU2Vzc2lvbi5jcHAgKi8sCisJCQkJQ0RFNTU0RUUyNDA1ODFBMzAwOEEzRERCIC8qIFJl
bW90ZUxlZ2FjeUNETVNlc3Npb24uaCAqLywKKwkJCQlDREU1NTUwNTI0MDU4MzI0MDA4QTNEREIg
LyogUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5tZXNzYWdlcy5pbiAqLywKKwkJCQlDREU1NTUwOTI0
MDU4OENCMDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXIuaCAqLywK
IAkJCQkwN0I5M0ZGNTIzQUYwQ0I4MDAzNkY4RUEgLyogUmVtb3RlTWVkaWFQbGF5ZXJDb25maWd1
cmF0aW9uLmggKi8sCiAJCQkJMDc5MjMxMzAyMzlCM0IwQzAwOTU5OEUyIC8qIFJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlci5jcHAgKi8sCiAJCQkJMDc5MjMxMzQyMzlCM0IwQzAwOTU5OEUyIC8qIFJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlci5oICovLApAQCAtNTQ5MSw2ICs1NTM0LDE1IEBACiAJCQkJ
Q0RBQzIwODMyM0ZCMjEzNDAwMjFERUUzIC8qIFJlbW90ZUNETVByb3h5LmNwcCAqLywKIAkJCQlD
REFDMjA4MjIzRkIyMTM0MDAyMURFRTMgLyogUmVtb3RlQ0RNUHJveHkuaCAqLywKIAkJCQlDREFD
MjA4NjIzRkIyMTU4MDAyMURFRTMgLyogUmVtb3RlQ0RNUHJveHkubWVzc2FnZXMuaW4gKi8sCisJ
CQkJQ0RFNTU1MUQyNDA1QTNCNzAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94
eS5jcHAgKi8sCisJCQkJQ0RFNTU1MUMyNDA1QTNCNzAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNE
TUZhY3RvcnlQcm94eS5oICovLAorCQkJCUNERTU1NTFCMjQwNUEzQjcwMDhBM0REQiAvKiBSZW1v
dGVMZWdhY3lDRE1GYWN0b3J5UHJveHkubWVzc2FnZXMuaW4gKi8sCisJCQkJQ0RFNTU1MjAyNDA1
QTNERjAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETVByb3h5LmNwcCAqLywKKwkJCQlDREU1NTUx
RjI0MDVBM0RGMDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNUHJveHkuaCAqLywKKwkJCQlDREU1
NTUxRTI0MDVBM0RGMDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNUHJveHkubWVzc2FnZXMuaW4g
Ki8sCisJCQkJQ0RFNTU0RjkyNDA1ODIwODAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETVNlc3Np
b25Qcm94eS5jcHAgKi8sCisJCQkJQ0RFNTU0RjgyNDA1ODIwODAwOEEzRERCIC8qIFJlbW90ZUxl
Z2FjeUNETVNlc3Npb25Qcm94eS5oICovLAorCQkJCUNERTU1NTAwMjQwNTgyODQwMDhBM0REQiAv
KiBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkubWVzc2FnZXMuaW4gKi8sCiAJCQkJMDcyNUVG
QUQyMzlCMDI0NTAwQTUzOEE5IC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcCAq
LywKIAkJCQkwNzI1RUZBQzIzOUFFMzg1MDBBNTM4QTkgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyUHJveHkuaCAqLywKIAkJCQkwNzI1RUZBQjIzOUFFMzg0MDBBNTM4QTkgLyogUmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4gKi8sCkBAIC05OTM1LDYgKzk5ODcsMTgg
QEAKIAkJCQlDREFDMjBGMDIzRkMzODM5MDAyMURFRTMgLyogUmVtb3RlQ0RNUHJveHlNZXNzYWdl
c1JlcGxpZXMuaCAqLywKIAkJCQkwRkYyNEEyQjE4NzlFNEJDMDAzQUJGMEMgLyogUmVtb3RlTGF5
ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJMEZGMjRB
MkMxODc5RTRCQzAwM0FCRjBDIC8qIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHlNZXNz
YWdlcy5oICovLAorCQkJCUNERTU1NTI5MjQwNkI4OTYwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lD
RE1GYWN0b3J5UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAorCQkJCUNERTU1NTJEMjQwNkI4
OTcwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHlNZXNzYWdlcy5oICovLAor
CQkJCUNERTU1NTJDMjQwNkI4OTYwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJv
eHlNZXNzYWdlc1JlcGxpZXMuaCAqLywKKwkJCQlDREU1NTUyQTI0MDZCODk2MDA4QTNEREIgLyog
UmVtb3RlTGVnYWN5Q0RNUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAorCQkJCUNERTU1NTI4
MjQwNkI4OTYwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1Qcm94eU1lc3NhZ2VzLmggKi8sCisJ
CQkJQ0RFNTU1MkIyNDA2Qjg5NjAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETVByb3h5TWVzc2Fn
ZXNSZXBsaWVzLmggKi8sCisJCQkJQ0RFNTU1MkUyNDA2Qjg5NzAwOEEzRERCIC8qIFJlbW90ZUxl
Z2FjeUNETVNlc3Npb25NZXNzYWdlUmVjZWl2ZXIuY3BwICovLAorCQkJCUNERTU1NTI3MjQwNkI4
OTUwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uTWVzc2FnZXMuaCAqLywKKwkJCQlD
REU1NTUzMDI0MDZCODk3MDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbk1lc3NhZ2Vz
UmVwbGllcy5oICovLAorCQkJCUNERTU1NTMxMjQwNkI4OTcwMDhBM0REQiAvKiBSZW1vdGVMZWdh
Y3lDRE1TZXNzaW9uUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAorCQkJCUNERTU1NTJGMjQw
NkI4OTcwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHlNZXNzYWdlcy5oICov
LAorCQkJCUNERTU1NTI2MjQwNkI4OTUwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1TZXNzaW9u
UHJveHlNZXNzYWdlc1JlcGxpZXMuaCAqLywKIAkJCQkwNzkyMzE0MzIzOUNCQ0I2MDA5NTk4RTIg
LyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQkw
NzkyMzE0NzIzOUNCQ0I3MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyTWVzc2Fn
ZXMuaCAqLywKIAkJCQkwNzkyMzE0NDIzOUNCQ0I2MDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5
ZXJNYW5hZ2VyTWVzc2FnZXNSZXBsaWVzLmggKi8sCkBAIC0xMjYwMSw2ICsxMjY2NSwxMCBAQAog
CQkJCTJENzJBMUZBMjEyQkY0NkUwMDUxN0EyMCAvKiBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJl
YS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTBGRjI0QTJEMTg3OUU0QkMwMDNBQkYwQyAvKiBSZW1v
dGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTJEQzE4RkI0MjE4QTZFOUUwMDI1QTg4RCAvKiBSZW1vdGVMYXllclRyZWVWaWV3
cy5tbSBpbiBTb3VyY2VzICovLAorCQkJCUNERTU1NTMyMjQwNkVCOEMwMDhBM0REQiAvKiBSZW1v
dGVMZWdhY3lDRE1GYWN0b3J5UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJQ0RFNTU1MzMyNDA2RUI4QzAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETVByb3h5TWVz
c2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUNERTU1NTM0MjQwNkVCOEMwMDhB
M0REQiAvKiBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCUNERTU1NTM1MjQwNkVCOEMwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1T
ZXNzaW9uUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDc5MjMx
NDkyMzlDQkNCODAwOTU5OEUyIC8qIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlck1lc3NhZ2VSZWNl
aXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzkyMzE0QjIzOUNCQ0I4MDA5NTk4RTIgLyog
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMDcwMTc4OUUyM0JFOUNGQzAwNUYwRkFBIC8qIFJlbW90ZU1lZGlhUGxheWVy
TUlNRVR5cGVDYWNoZS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5jcHAKaW5kZXggZWY4MjQ5MzQy
NDU1NTExMjcwMzIzODY0NzliNzE3MWNkMjg1ZDJlNi4uMTg0NDE5YmUzYzI1MmNlMzYxOTM3OTkz
NmMxZDRjZjUzNzUzOWI2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRl
ICJNZWRpYVBsYXllclByaXZhdGVSZW1vdGVNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZUNE
TUZhY3RvcnkuaCIKICNpbmNsdWRlICJSZW1vdGVDRE1Qcm94eS5oIgorI2luY2x1ZGUgIlJlbW90
ZUxlZ2FjeUNETUZhY3RvcnkuaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIu
aCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1
ZGUgIlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1lc3NhZ2VzLmgiCkBAIC04Miw2ICs4MywxMSBA
QCBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyJiBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6
c2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTQogfQogI2VuZGlmCiAKK1JlbW90ZU1lZGlhUGxheWVy
TWFuYWdlciYgR1BVUHJvY2Vzc0Nvbm5lY3Rpb246Om1lZGlhUGxheWVyTWFuYWdlcigpCit7Cisg
ICAgcmV0dXJuICpXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zdXBwbGVtZW50PFJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlcj4oKTsKK30KKwogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiBSZW1v
dGVDRE1GYWN0b3J5JiBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6Y2RtRmFjdG9yeSgpCiB7CkBAIC04
OSw2ICs5NSwxMyBAQCBSZW1vdGVDRE1GYWN0b3J5JiBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6Y2Rt
RmFjdG9yeSgpCiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElB
KQorUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeSYgR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OmxlZ2FjeUNE
TUZhY3RvcnkoKQoreworICAgIHJldHVybiAqV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc3VwcGxl
bWVudDxSZW1vdGVMZWdhY3lDRE1GYWN0b3J5PigpOworfQorI2VuZGlmCisKIGJvb2wgR1BVUHJv
Y2Vzc0Nvbm5lY3Rpb246OmRpc3BhdGNoTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVj
ZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L0dQVVByb2Nlc3NDb25uZWN0aW9uLmgKaW5kZXggZjBjMzk1ODhiYzI0ZmJlNWQ0Nzc0ZjhiMGVh
OTJlYTE1MmY3M2I3MS4uMzRlYTFjNmE3Y2I0M2Q4ZDljYmMxZmZiYmU3NDhjMDYyZTcwZTYwZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVj
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5l
Y3Rpb24uaApAQCAtNDEsNiArNDEsOCBAQCBjbGFzcyBEYXRhUmVmZXJlbmNlOwogbmFtZXNwYWNl
IFdlYktpdCB7CiAKIGNsYXNzIFJlbW90ZUNETUZhY3Rvcnk7CitjbGFzcyBSZW1vdGVNZWRpYVBs
YXllck1hbmFnZXI7CitjbGFzcyBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5OwogCiBjbGFzcyBHUFVQ
cm9jZXNzQ29ubmVjdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPEdQVVByb2Nlc3NDb25uZWN0aW9u
PiwgSVBDOjpDb25uZWN0aW9uOjpDbGllbnQgewogcHVibGljOgpAQCAtNjEsMTAgKzYzLDE2IEBA
IHB1YmxpYzoKICAgICBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyJiBzYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXJNYW5hZ2VyKCk7CiAjZW5kaWYKIAorICAgIFJlbW90ZU1lZGlhUGxheWVy
TWFuYWdlciYgbWVkaWFQbGF5ZXJNYW5hZ2VyKCk7CisKICNpZiBFTkFCTEUoRU5DUllQVEVEX01F
RElBKQogICAgIFJlbW90ZUNETUZhY3RvcnkmIGNkbUZhY3RvcnkoKTsKICNlbmRpZgogCisjaWYg
RU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCisgICAgUmVtb3RlTGVnYWN5Q0RNRmFjdG9y
eSYgbGVnYWN5Q0RNRmFjdG9yeSgpOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgR1BVUHJvY2Vz
c0Nvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1v
dGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclBy
aXZhdGVSZW1vdGUuY3BwCmluZGV4IDJmMTQwMTAzZjhhYzk0NzM3ZDk3YjYxZjI5Y2UyMGM2YmRj
MDdhNjYuLjg2ZjJiMWJkMGU4NGMwZTAyZGYyNzI1YjAzNDU5NTRlY2U5MTdmNmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKQEAgLTMwLDYgKzMwLDkgQEAKIAogI2luY2x1ZGUgIkF1
ZGlvVHJhY2tQcml2YXRlUmVtb3RlLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUg
IlJlbW90ZUxlZ2FjeUNETS5oIgorI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETUZhY3RvcnkuaCIK
KyNpbmNsdWRlICJSZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxh
eWVyUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKQEAgLTM4
LDYgKzQxLDggQEAKICNpbmNsdWRlICJWaWRlb1RyYWNrUHJpdmF0ZVJlbW90ZS5oIgogI2luY2x1
ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9HZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg+Cisj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvVHlwZWRBcnJheVR5cGUuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL01lZGlhUGxheWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1MYXllci5oPgpAQCAtNTMsNiArNTgsMTAgQEAKICNp
bmNsdWRlICJSZW1vdGVDRE1JbnN0YW5jZS5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTEVHQUNZ
X0VOQ1JZUFRFRF9NRURJQSkKKyNpbmNsdWRlIDxXZWJDb3JlL0xlZ2FjeUNETS5oPgorI2VuZGlm
CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKIGV4dGVy
biBXVEZMb2dDaGFubmVsIExvZ01lZGlhOwpAQCAtOTEwLDE1ICs5MTksMzggQEAgc3RkOjp1bmlx
dWVfcHRyPExlZ2FjeUNETVNlc3Npb24+IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y3JlYXRl
U2Vzc2lvbihjb25zdAogICAgIHJldHVybiBudWxscHRyOwogfQogCi12b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZTo6c2V0Q0RNU2Vzc2lvbihMZWdhY3lDRE1TZXNzaW9uKikKK3ZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRDRE0oTGVnYWN5Q0RNKiBjZG0pCiB7Ci0gICAgbm90
SW1wbGVtZW50ZWQoKTsKKyAgICBpZiAoIWNkbSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0
byByZW1vdGVDRE0gPSBtX21hbmFnZXIuZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5sZWdhY3lDRE1G
YWN0b3J5KCkuZmluZENETShjZG0tPmNkbVByaXZhdGUoKSk7CisgICAgaWYgKCFyZW1vdGVDRE0p
CisgICAgICAgIHJldHVybjsKKworICAgIHJlbW90ZUNETS0+c2V0UGxheWVySWQobV9pZCk7Cit9
CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRDRE1TZXNzaW9uKExlZ2FjeUNE
TVNlc3Npb24qIHNlc3Npb24pCit7CisgICAgaWYgKCFzZXNzaW9uIHx8IHNlc3Npb24tPnR5cGUo
KSAhPSBDRE1TZXNzaW9uVHlwZVJlbW90ZSkgeworICAgICAgICBjb25uZWN0aW9uKCkuc2VuZChN
ZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6U2V0TGVnYWN5Q0RNU2Vzc2lvbih7IH0p
LCBtX2lkKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gcmVtb3RlU2Vzc2lv
biA9IHN0YXRpY19jYXN0PFJlbW90ZUxlZ2FjeUNETVNlc3Npb24qPihzZXNzaW9uKTsKKyAgICBj
b25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6U2V0TGVn
YWN5Q0RNU2Vzc2lvbihyZW1vdGVTZXNzaW9uLT5pZGVudGlmaWVyKCkpLCBtX2lkKTsKIH0KIAog
dm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmtleUFkZGVkKCkKIHsKICAgICBjb25uZWN0
aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6S2V5QWRkZWQoKSwg
bV9pZCk7CiB9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjptZWRpYVBsYXllcktl
eU5lZWRlZChJUEM6OkRhdGFSZWZlcmVuY2UmJiBtZXNzYWdlKQoreworICAgIG1fcGxheWVyLT5r
ZXlOZWVkZWQoVWludDhBcnJheTo6Y3JlYXRlKG1lc3NhZ2UuZGF0YSgpLCBtZXNzYWdlLnNpemUo
KSkucHRyKCkpOworfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclBy
aXZhdGVSZW1vdGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlLmgKaW5kZXggNTBiNTk3ZDliNzkzNDRhZmQ0MWVkNmUzMmM1YTc4
OWQzOTAzM2UzYi4uNmM1NjZhODNkMmU0MWUxYjRhZTUyMzMyOWNhY2IxMzAyZDI2ZDY1NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclBy
aXZhdGVSZW1vdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oCkBAIC0zMDUsOCArMzA1LDEwIEBAIHByaXZhdGU6CiAK
ICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
V2ViQ29yZTo6TGVnYWN5Q0RNU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbihjb25zdCBTdHJpbmcmLCBX
ZWJDb3JlOjpMZWdhY3lDRE1TZXNzaW9uQ2xpZW50KikgZmluYWw7CisgICAgdm9pZCBzZXRDRE0o
V2ViQ29yZTo6TGVnYWN5Q0RNKikgZmluYWw7CiAgICAgdm9pZCBzZXRDRE1TZXNzaW9uKFdlYkNv
cmU6OkxlZ2FjeUNETVNlc3Npb24qKSBmaW5hbDsKICAgICB2b2lkIGtleUFkZGVkKCkgZmluYWw7
CisgICAgdm9pZCBtZWRpYVBsYXllcktleU5lZWRlZChJUEM6OkRhdGFSZWZlcmVuY2UmJik7CiAj
ZW5kaWYKIAogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluCmluZGV4IDk0NDhkZTAyZjFhYzllNDY0MzgzM2MyZDU1
Mzc1OWM5ODMwYjgxNTcuLmU3ZDg2YzdmNGMzZGNlOGIwYjk4ZWY2NjBhMTI2OGZkZDlhZTFjM2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluCkBAIC03OCw2
ICs3OCwxMCBAQCBtZXNzYWdlcyAtPiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGUgTm90UmVmQ291
bnRlZCB7CiAgICAgSW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQoU3RyaW5nIGluaXREYXRh
VHlwZSwgSVBDOjpEYXRhUmVmZXJlbmNlIGluaXREYXRhKQogI2VuZGlmCiAKKyNpZiBFTkFCTEUo
TEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKKyAgICBNZWRpYVBsYXllcktleU5lZWRlZChJUEM6OkRh
dGFSZWZlcmVuY2UgbWVzc2FnZSkKKyNlbmRpZgorCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlC
QUNLX1RBUkdFVCkKICAgICBDdXJyZW50UGxheWJhY2tUYXJnZXRJc1dpcmVsZXNzQ2hhbmdlZChi
b29sIGlzQ3VycmVudFBsYXliYWNrVGFyZ2V0V2lyZWxlc3MpCiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4yNDA2NjhlOWJiZWNiZTkwMmEyMTk3ZGExMWZkNjE0ODJjZWQ1YWFmCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVM
ZWdhY3lDRE0uY3BwCkBAIC0wLDAgKzEsODkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlTGVnYWN5Q0RNLmgiCisKKyNpZiBFTkFCTEUoR1BVX1BS
T0NFU1MpICYmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSAiUmVt
b3RlTGVnYWN5Q0RNRmFjdG9yeS5oIgorI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETVByb3h5TWVz
c2FnZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmgiCisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworc3RkOjp1bmlxdWVfcHRy
PFJlbW90ZUxlZ2FjeUNETT4gUmVtb3RlTGVnYWN5Q0RNOjpjcmVhdGUoV2Vha1B0cjxSZW1vdGVM
ZWdhY3lDRE1GYWN0b3J5PiYmIGZhY3RvcnksIFJlbW90ZUxlZ2FjeUNETUlkZW50aWZpZXIgaWQp
Cit7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMZWdhY3lDRE0+KG5ldyBSZW1v
dGVMZWdhY3lDRE0oV1RGTW92ZShmYWN0b3J5KSwgV1RGTW92ZShpZCkpKTsKK30KKworUmVtb3Rl
TGVnYWN5Q0RNOjpSZW1vdGVMZWdhY3lDRE0oV2Vha1B0cjxSZW1vdGVMZWdhY3lDRE1GYWN0b3J5
PiYmIGZhY3RvcnksIFJlbW90ZUxlZ2FjeUNETUlkZW50aWZpZXImJiBpZCkKKyAgICA6IG1fZmFj
dG9yeShXVEZNb3ZlKGZhY3RvcnkpKQorICAgICwgbV9pZGVudGlmaWVyKFdURk1vdmUoaWQpKQor
eworfQorCitSZW1vdGVMZWdhY3lDRE06On5SZW1vdGVMZWdhY3lDRE0oKSA9IGRlZmF1bHQ7CisK
K2Jvb2wgUmVtb3RlTGVnYWN5Q0RNOjpzdXBwb3J0c01JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUpCit7CisgICAgaWYgKCFtX2ZhY3RvcnkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIGJvb2wgc3VwcG9ydGVkID0gZmFsc2U7CisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29u
bmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlTGVnYWN5Q0RN
UHJveHk6OlN1cHBvcnRzTUlNRVR5cGUobWltZVR5cGUpLCBNZXNzYWdlczo6UmVtb3RlTGVnYWN5
Q0RNUHJveHk6OlN1cHBvcnRzTUlNRVR5cGU6OlJlcGx5KHN1cHBvcnRlZCksIG1faWRlbnRpZmll
cik7CisgICAgcmV0dXJuIHN1cHBvcnRlZDsKK30KKworc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6
OkxlZ2FjeUNETVNlc3Npb24+IFJlbW90ZUxlZ2FjeUNETTo6Y3JlYXRlU2Vzc2lvbihXZWJDb3Jl
OjpMZWdhY3lDRE1TZXNzaW9uQ2xpZW50KiBjbGllbnQpCit7CisgICAgaWYgKCFtX2ZhY3Rvcnkp
CisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgU3RyaW5nIHN0b3JhZ2VEaXJlY3Rvcnkg
PSBjbGllbnQgPyBjbGllbnQtPm1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSA6IGVtcHR5U3Ry
aW5nKCk7CisKKyAgICBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllciBpZDsKKyAgICBt
X2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1l
c3NhZ2VzOjpSZW1vdGVMZWdhY3lDRE1Qcm94eTo6Q3JlYXRlU2Vzc2lvbihzdG9yYWdlRGlyZWN0
b3J5KSwgTWVzc2FnZXM6OlJlbW90ZUxlZ2FjeUNETVByb3h5OjpDcmVhdGVTZXNzaW9uOjpSZXBs
eShpZCksIG1faWRlbnRpZmllcik7CisgICAgaWYgKCFpZCkKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgcmV0dXJuIFJlbW90ZUxlZ2FjeUNETVNlc3Npb246OmNyZWF0ZShtX2ZhY3Rvcnks
IFdURk1vdmUoaWQpKTsKK30KKwordm9pZCBSZW1vdGVMZWdhY3lDRE06OnNldFBsYXllcklkKE1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgaWQpCit7CisgICAgaWYgKCFtX2ZhY3Rv
cnkpCisgICAgICAgIHJldHVybjsKKworICAgIE9wdGlvbmFsPE1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZUlkZW50aWZpZXI+IG9wdGlvbmFsSWQ7CisgICAgaWYgKGlkKQorICAgICAgICBvcHRpb25h
bElkID0gaWQ7CisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rp
b24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVMZWdhY3lDRE1Qcm94eTo6U2V0UGxheWVySWQob3B0
aW9uYWxJZCksIG1faWRlbnRpZmllcik7Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETS5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE0uaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5mNTRjZDNjYzQyOTQxNzE2NjE5ZjUwM2I2M2Y5NzNiMTFhMWUyMjQwCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lD
RE0uaApAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQorCisj
aW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllci5oIgorI2luY2x1ZGUg
IlJlbW90ZUxlZ2FjeUNETUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0xlZ2FjeUNE
TVByaXZhdGUuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CitjbGFzcyBTZXR0aW5nczsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFJl
bW90ZUxlZ2FjeUNETUZhY3Rvcnk7CitjbGFzcyBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uOworCisK
K2NsYXNzIFJlbW90ZUxlZ2FjeUNETSBmaW5hbAorICAgIDogcHVibGljIFdlYkNvcmU6OkNETVBy
aXZhdGVJbnRlcmZhY2UKKyAgICAsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxSZW1vdGVMZWdhY3lD
RE0+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxlZ2FjeUNE
TT4gY3JlYXRlKFdlYWtQdHI8UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeT4mJiwgUmVtb3RlTGVnYWN5
Q0RNSWRlbnRpZmllcik7CisgICAgdmlydHVhbCB+UmVtb3RlTGVnYWN5Q0RNKCk7CisKKyAgICBi
b29sIHN1cHBvcnRzTUlNRVR5cGUoY29uc3QgU3RyaW5nJikgZmluYWw7CisgICAgc3RkOjp1bmlx
dWVfcHRyPFdlYkNvcmU6OkxlZ2FjeUNETVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oV2ViQ29yZTo6
TGVnYWN5Q0RNU2Vzc2lvbkNsaWVudCopIGZpbmFsOworICAgIHZvaWQgc2V0UGxheWVySWQoTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllcik7CisKK3ByaXZhdGU6CisgICAgUmVtb3Rl
TGVnYWN5Q0RNKFdlYWtQdHI8UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeT4mJiwgUmVtb3RlTGVnYWN5
Q0RNSWRlbnRpZmllciYmKTsKKworICAgIFdlYWtQdHI8UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeT4g
bV9mYWN0b3J5OworICAgIFJlbW90ZUxlZ2FjeUNETUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwor
fTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnkuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk4
ZmFhMzIyNzIzM2MwZjExZDA2NmU5YTgzN2FkOWNjNjg0OTE2YjYKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3Rv
cnkuY3BwCkBAIC0wLDAgKzEsMTU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETUZhY3RvcnkuaCIKKworI2lmIEVOQUJMRShHUFVf
UFJPQ0VTUykgJiYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRlICJH
UFVQcm9jZXNzQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZS5oIgorI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETS5oIgorI2luY2x1ZGUgIlJlbW90ZUxlZ2Fj
eUNETUZhY3RvcnlQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlTGVnYWN5Q0RNU2Vz
c2lvbi5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0xlZ2Fj
eUNETS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3MuaD4KKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitSZW1vdGVMZWdhY3lDRE1GYWN0b3J5
OjpSZW1vdGVMZWdhY3lDRE1GYWN0b3J5KFdlYlByb2Nlc3MmIHByb2Nlc3MpCisgICAgOiBtX3By
b2Nlc3MocHJvY2VzcykKK3sKK30KKworUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeTo6flJlbW90ZUxl
Z2FjeUNETUZhY3RvcnkoKSA9IGRlZmF1bHQ7CisKK3ZvaWQgUmVtb3RlTGVnYWN5Q0RNRmFjdG9y
eTo6cmVnaXN0ZXJGYWN0b3J5KCkKK3sKKyAgICBMZWdhY3lDRE06OmNsZWFyRmFjdG9yaWVzKCk7
CisgICAgTGVnYWN5Q0RNOjpyZWdpc3RlckNETUZhY3RvcnkoCisgICAgICAgIFt3ZWFrVGhpcyA9
IG1ha2VXZWFrUHRyKHRoaXMpXSAoTGVnYWN5Q0RNKiBwcml2YXRlQ0RNKSAtPiBzdGQ6OnVuaXF1
ZV9wdHI8V2ViQ29yZTo6Q0RNUHJpdmF0ZUludGVyZmFjZT4geworICAgICAgICAgICAgaWYgKHdl
YWtUaGlzKQorICAgICAgICAgICAgICAgIHJldHVybiB3ZWFrVGhpcy0+Y3JlYXRlQ0RNKHByaXZh
dGVDRE0pOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0sCisgICAgICAg
IFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXSAoY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0p
IHsKKyAgICAgICAgICAgIHJldHVybiB3ZWFrVGhpcyA/IHdlYWtUaGlzLT5zdXBwb3J0c0tleVN5
c3RlbShrZXlTeXN0ZW0pIDogZmFsc2U7CisgICAgICAgIH0sCisgICAgICAgIFt3ZWFrVGhpcyA9
IG1ha2VXZWFrUHRyKHRoaXMpXSAoY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUpIHsKKyAgICAgICAgICAgIHJldHVybiB3ZWFrVGhpcyA/IHdlYWtUaGlzLT5z
dXBwb3J0c0tleVN5c3RlbUFuZE1pbWVUeXBlKGtleVN5c3RlbSwgbWltZVR5cGUpIDogZmFsc2U7
CisgICAgICAgIH0KKyAgICApOworfQorCitjb25zdCBjaGFyKiBSZW1vdGVMZWdhY3lDRE1GYWN0
b3J5OjpzdXBwbGVtZW50TmFtZSgpCit7CisgICAgcmV0dXJuICJSZW1vdGVMZWdhY3lDRE1GYWN0
b3J5IjsKK30KKworR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIFJlbW90ZUxlZ2FjeUNETUZhY3Rvcnk6
OmdwdVByb2Nlc3NDb25uZWN0aW9uKCkKK3sKKyAgICByZXR1cm4gbV9wcm9jZXNzLmVuc3VyZUdQ
VVByb2Nlc3NDb25uZWN0aW9uKCk7Cit9CisKK2Jvb2wgUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeTo6
c3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pCit7CisgICAgYXV0byBm
b3VuZEluQ2FjaGUgPSBtX3N1cHBvcnRzS2V5U3lzdGVtQ2FjaGUuZmluZChrZXlTeXN0ZW0pOwor
ICAgIGlmIChmb3VuZEluQ2FjaGUgIT0gbV9zdXBwb3J0c0tleVN5c3RlbUNhY2hlLmVuZCgpKQor
ICAgICAgICByZXR1cm4gZm91bmRJbkNhY2hlLT52YWx1ZTsKKworICAgIGJvb2wgc3VwcG9ydGVk
ID0gZmFsc2U7CisgICAgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5
bmMoTWVzc2FnZXM6OlJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eTo6U3VwcG9ydHNLZXlTeXN0
ZW0oa2V5U3lzdGVtLCBXVEY6Om51bGxvcHQpLCBNZXNzYWdlczo6UmVtb3RlTGVnYWN5Q0RNRmFj
dG9yeVByb3h5OjpTdXBwb3J0c0tleVN5c3RlbTo6UmVwbHkoc3VwcG9ydGVkKSwgeyB9KTsKKyAg
ICBtX3N1cHBvcnRzS2V5U3lzdGVtQ2FjaGUuc2V0KGtleVN5c3RlbSwgc3VwcG9ydGVkKTsKKyAg
ICByZXR1cm4gc3VwcG9ydGVkOworfQorCitib29sIFJlbW90ZUxlZ2FjeUNETUZhY3Rvcnk6OnN1
cHBvcnRzS2V5U3lzdGVtQW5kTWltZVR5cGUoY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUpCit7CisgICAgYXV0byBrZXkgPSBzdGQ6Om1ha2VfcGFpcihrZXlT
eXN0ZW0sIG1pbWVUeXBlKTsKKyAgICBhdXRvIGZvdW5kSW5DYWNoZSA9IG1fc3VwcG9ydHNLZXlT
eXN0ZW1BbmRNaW1lVHlwZUNhY2hlLmZpbmQoa2V5KTsKKyAgICBpZiAoZm91bmRJbkNhY2hlICE9
IG1fc3VwcG9ydHNLZXlTeXN0ZW1BbmRNaW1lVHlwZUNhY2hlLmVuZCgpKQorICAgICAgICByZXR1
cm4gZm91bmRJbkNhY2hlLT52YWx1ZTsKKworICAgIGJvb2wgc3VwcG9ydGVkID0gZmFsc2U7Cisg
ICAgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6
OlJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eTo6U3VwcG9ydHNLZXlTeXN0ZW0oa2V5U3lzdGVt
LCBtaW1lVHlwZSksIE1lc3NhZ2VzOjpSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk6OlN1cHBv
cnRzS2V5U3lzdGVtOjpSZXBseShzdXBwb3J0ZWQpLCB7IH0pOworICAgIG1fc3VwcG9ydHNLZXlT
eXN0ZW1BbmRNaW1lVHlwZUNhY2hlLnNldChrZXksIHN1cHBvcnRlZCk7CisgICAgcmV0dXJuIHN1
cHBvcnRlZDsKK30KKworc3RkOjp1bmlxdWVfcHRyPENETVByaXZhdGVJbnRlcmZhY2U+IFJlbW90
ZUxlZ2FjeUNETUZhY3Rvcnk6OmNyZWF0ZUNETShXZWJDb3JlOjpMZWdhY3lDRE0qIGNkbSkKK3sK
KyAgICBpZiAoIWNkbSkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgT3B0aW9uYWw8TWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlSWRlbnRpZmllcj4gcGxheWVySWQ7CisgICAgaWYgKGF1dG8gcGxheWVyID0gY2RtLT5t
ZWRpYVBsYXllcigpKQorICAgICAgICBwbGF5ZXJJZCA9IGdwdVByb2Nlc3NDb25uZWN0aW9uKCku
bWVkaWFQbGF5ZXJNYW5hZ2VyKCkuZmluZFJlbW90ZVBsYXllcklkKHBsYXllci0+cGxheWVyUHJp
dmF0ZSgpKTsKKworICAgIFJlbW90ZUxlZ2FjeUNETUlkZW50aWZpZXIgaWQ7CisgICAgZ3B1UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUxl
Z2FjeUNETUZhY3RvcnlQcm94eTo6Q3JlYXRlQ0RNKGNkbS0+a2V5U3lzdGVtKCksIFdURk1vdmUo
cGxheWVySWQpKSwgTWVzc2FnZXM6OlJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eTo6Q3JlYXRl
Q0RNOjpSZXBseShpZCksIHsgfSk7CisgICAgaWYgKCFpZCkKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgYXV0byByZW1vdGVDRE0gPSBSZW1vdGVMZWdhY3lDRE06OmNyZWF0ZShtYWtlV2Vh
a1B0cih0aGlzKSwgaWQpOworICAgIG1fY2Rtcy5zZXQoaWQsIG1ha2VXZWFrUHRyKHJlbW90ZUNE
TS5nZXQoKSkpOworICAgIHJldHVybiByZW1vdGVDRE07Cit9CisKK3ZvaWQgUmVtb3RlTGVnYWN5
Q0RNRmFjdG9yeTo6YWRkU2Vzc2lvbihSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllciBp
ZCwgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxlZ2FjeUNETVNlc3Npb24+JiYgc2Vzc2lvbikKK3sK
KyAgICBBU1NFUlQoIW1fc2Vzc2lvbnMuY29udGFpbnMoaWQpKTsKKyAgICBtX3Nlc3Npb25zLnNl
dChpZCwgV1RGTW92ZShzZXNzaW9uKSk7Cit9CisKK3ZvaWQgUmVtb3RlTGVnYWN5Q0RNRmFjdG9y
eTo6cmVtb3ZlU2Vzc2lvbihSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllciBpZCkKK3sK
KyAgICBBU1NFUlQobV9zZXNzaW9ucy5jb250YWlucyhpZCkpOworICAgIG1fc2Vzc2lvbnMucmVt
b3ZlKGlkKTsKK30KKworUmVtb3RlTGVnYWN5Q0RNKiBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5Ojpm
aW5kQ0RNKENETVByaXZhdGVJbnRlcmZhY2UqIHByaXZhdGVJbnRlcmZhY2UpIGNvbnN0Cit7Cisg
ICAgZm9yIChhdXRvJiBjZG0gOiBtX2NkbXMudmFsdWVzKCkpIHsKKyAgICAgICAgaWYgKHByaXZh
dGVJbnRlcmZhY2UgPT0gY2RtLmdldCgpKQorICAgICAgICAgICAgcmV0dXJuIGNkbS5nZXQoKTsK
KyAgICB9CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3ZvaWQgUmVtb3RlTGVnYWN5Q0RNRmFj
dG9yeTo6ZGlkUmVjZWl2ZVNlc3Npb25NZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
biwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbV9z
ZXNzaW9ucy5nZXQobWFrZU9iamVjdElkZW50aWZpZXI8UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklk
ZW50aWZpZXJUeXBlPihkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSkpKQorICAgICAgICBzZXNzaW9u
LT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKK30KKworCit9CisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVMZWdhY3lDRE1GYWN0b3J5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUxlZ2FjeUNETUZhY3RvcnkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZGMwOWJmOTA0OTI2OTRmZmI0
OWYwODE4M2ZkNmIyZWExZjQ3MGRhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5LmgKQEAgLTAsMCArMSw5
NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNT
KSAmJiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgIlJlbW90ZUxl
Z2FjeUNETUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRl
bnRpZmllci5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3NTdXBwbGVtZW50LmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9MZWdhY3lDRE0uaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUg
PHd0Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFjZSBJUEMgeworY2xhc3MgQ29ubmVjdGlvbjsKK2Ns
YXNzIERlY29kZXI7Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFNldHRpbmdzOwor
fQorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBDRE1Qcml2YXRlSW50ZXJmYWNlOworY2xh
c3MgTGVnYWN5Q0RNOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgR1BVUHJvY2Vz
c0Nvbm5lY3Rpb247CitjbGFzcyBSZW1vdGVMZWdhY3lDRE07CitjbGFzcyBSZW1vdGVMZWdhY3lD
RE1TZXNzaW9uOworY2xhc3MgV2ViUHJvY2VzczsKKworCitjbGFzcyBSZW1vdGVMZWdhY3lDRE1G
YWN0b3J5IGZpbmFsCisgICAgOiBwdWJsaWMgV2ViUHJvY2Vzc1N1cHBsZW1lbnQKKyAgICAsIHB1
YmxpYyBDYW5NYWtlV2Vha1B0cjxSZW1vdGVMZWdhY3lDRE1GYWN0b3J5PiB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgZXhwbGljaXQgUmVtb3RlTGVnYWN5Q0RN
RmFjdG9yeShXZWJQcm9jZXNzJik7CisgICAgdmlydHVhbCB+UmVtb3RlTGVnYWN5Q0RNRmFjdG9y
eSgpOworCisgICAgdm9pZCByZWdpc3RlckZhY3RvcnkoKTsKKworICAgIHN0YXRpYyBjb25zdCBj
aGFyKiBzdXBwbGVtZW50TmFtZSgpOworICAgIFdlYlByb2Nlc3MmIHByb2Nlc3MoKSBjb25zdCB7
IHJldHVybiBtX3Byb2Nlc3M7IH0KKworICAgIEdQVVByb2Nlc3NDb25uZWN0aW9uJiBncHVQcm9j
ZXNzQ29ubmVjdGlvbigpOworCisgICAgdm9pZCBkaWRSZWNlaXZlU2Vzc2lvbk1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CisKKyAgICB2b2lkIGFkZFNlc3Npb24oUmVt
b3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMZWdh
Y3lDRE1TZXNzaW9uPiYmKTsKKyAgICB2b2lkIHJlbW92ZVNlc3Npb24oUmVtb3RlTGVnYWN5Q0RN
U2Vzc2lvbklkZW50aWZpZXIpOworCisgICAgUmVtb3RlTGVnYWN5Q0RNKiBmaW5kQ0RNKFdlYkNv
cmU6OkNETVByaXZhdGVJbnRlcmZhY2UqKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBib29sIHN1
cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYpOworICAgIGJvb2wgc3VwcG9ydHNLZXlTeXN0
ZW1BbmRNaW1lVHlwZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8V2ViQ29yZTo6Q0RNUHJpdmF0ZUludGVyZmFjZT4gY3JlYXRlQ0RNKFdlYkNvcmU6
OkxlZ2FjeUNETSopOworCisgICAgSGFzaE1hcDxSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRp
Zmllciwgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxlZ2FjeUNETVNlc3Npb24+PiBtX3Nlc3Npb25z
OworICAgIEhhc2hNYXA8UmVtb3RlTGVnYWN5Q0RNSWRlbnRpZmllciwgV2Vha1B0cjxSZW1vdGVM
ZWdhY3lDRE0+PiBtX2NkbXM7CisgICAgSGFzaE1hcDxTdHJpbmcsIGJvb2w+IG1fc3VwcG9ydHNL
ZXlTeXN0ZW1DYWNoZTsKKyAgICBIYXNoTWFwPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4sIGJv
b2w+IG1fc3VwcG9ydHNLZXlTeXN0ZW1BbmRNaW1lVHlwZUNhY2hlOworICAgIFdlYlByb2Nlc3Mm
IG1fcHJvY2VzczsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETUlkZW50aWZpZXIuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNSWRlbnRpZmllci5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjdmYjliN2EyZjBkNjJiMTlkYTk5YmMzNWFjY2RjNmExMDc3N2VmZWIKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUxlZ2FjeUNETUlkZW50aWZpZXIuaApAQCAtMCwwICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShMRUdBQ1lfRU5D
UllQVEVEX01FRElBKQorCisjaW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4KKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK2VudW0gUmVtb3RlTGVnYWN5Q0RNSWRlbnRpZmllclR5cGUgeyB9
OwordXNpbmcgUmVtb3RlTGVnYWN5Q0RNSWRlbnRpZmllciA9IE9iamVjdElkZW50aWZpZXI8UmVt
b3RlTGVnYWN5Q0RNSWRlbnRpZmllclR5cGU+OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUxlZ2FjeUNETVNlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MTg0MzgzMjg5Nzdk
YjdmZThlODMyM2JhODNhMjRjNWNjNzY0NjFkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmNwcApAQCAt
MCwwICsxLDE2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJSZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmgiCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYm
IEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5j
ZS5oIgorI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETUZhY3RvcnkuaCIKKyNpbmNsdWRlICJSZW1v
dGVMZWdhY3lDRE1TZXNzaW9uUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9UeXBlZEFycmF5VHlwZS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CisKK3N0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXI+IGNvbnZlcnRU
b0FycmF5QnVmZmVyKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYmIGJ1ZmZlcikKK3sK
KyAgICBpZiAoYnVmZmVyLmJ1ZmZlcigpKQorICAgICAgICByZXR1cm4gQXJyYXlCdWZmZXI6OmNy
ZWF0ZShidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICByZXR1cm4gbnVsbHB0cjsK
K30KKworc3RhdGljIFJlZlB0cjxVaW50OEFycmF5PiBjb252ZXJ0VG9VaW50OEFycmF5KElQQzo6
U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSYmIGJ1ZmZlcikKK3sKKyAgICBhdXRvIGFycmF5QnVm
ZmVyID0gY29udmVydFRvQXJyYXlCdWZmZXIoV1RGTW92ZShidWZmZXIpKTsKKyAgICBpZiAoIWFy
cmF5QnVmZmVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHNpemVfdCBzaXplSW5C
eXRlcyA9IGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCk7CisgICAgcmV0dXJuIFVpbnQ4QXJyYXk6
OmNyZWF0ZShXVEZNb3ZlKGFycmF5QnVmZmVyKSwgMCwgc2l6ZUluQnl0ZXMpOworfQorCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KK3N0YXRpYyBPcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFS
ZWZlcmVuY2U+IGNvbnZlcnRUb09wdGlvbmFsRGF0YVJlZmVyZW5jZShUIGFycmF5KQoreworICAg
IGlmICghYXJyYXkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHsg
U2hhcmVkQnVmZmVyOjpjcmVhdGUoYXJyYXktPmRhdGEoKSwgYXJyYXktPmJ5dGVMZW5ndGgoKSkg
fTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdGF0aWMgSVBDOjpTaGFyZWRCdWZmZXJE
YXRhUmVmZXJlbmNlIGNvbnZlcnRUb0RhdGFSZWZlcmVuY2UoVCBhcnJheSkKK3sKKyAgICBpZiAo
IWFycmF5KQorICAgICAgICByZXR1cm4geyB9OworICAgIHJldHVybiB7IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGFycmF5LT5kYXRhKCksIGFycmF5LT5ieXRlTGVuZ3RoKCkpIH07Cit9CisKK3N0ZDo6
dW5pcXVlX3B0cjxSZW1vdGVMZWdhY3lDRE1TZXNzaW9uPiBSZW1vdGVMZWdhY3lDRE1TZXNzaW9u
OjpjcmVhdGUoV2Vha1B0cjxSZW1vdGVMZWdhY3lDRE1GYWN0b3J5PiBmYWN0b3J5LCBSZW1vdGVM
ZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllciYmIGlkKQoreworICAgIHJldHVybiBzdGQ6OnVuaXF1
ZV9wdHI8UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbj4obmV3IFJlbW90ZUxlZ2FjeUNETVNlc3Npb24o
V1RGTW92ZShmYWN0b3J5KSwgV1RGTW92ZShpZCkpKTsKK30KKworUmVtb3RlTGVnYWN5Q0RNU2Vz
c2lvbjo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbihXZWFrUHRyPFJlbW90ZUxlZ2FjeUNETUZhY3Rv
cnk+IGZhY3RvcnksIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyJiYgaWQpCisgICAg
OiBtX2ZhY3RvcnkoV1RGTW92ZShmYWN0b3J5KSkKKyAgICAsIG1faWRlbnRpZmllcihXVEZNb3Zl
KGlkKSkKK3sKK30KKworUmVmUHRyPFVpbnQ4QXJyYXk+IFJlbW90ZUxlZ2FjeUNETVNlc3Npb246
OmdlbmVyYXRlS2V5UmVxdWVzdChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBVaW50OEFycmF5KiBp
bml0RGF0YSwgU3RyaW5nJiBkZXN0aW5hdGlvblVSTCwgdW5zaWduZWQgc2hvcnQmIGVycm9yQ29k
ZSwgdWludDMyX3QmIHN5c3RlbUNvZGUpCit7CisgICAgaWYgKCFtX2ZhY3RvcnkgfHwgIWluaXRE
YXRhKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8gaXBjSW5pdERhdGEgPSBj
b252ZXJ0VG9EYXRhUmVmZXJlbmNlKGluaXREYXRhKTsKKyAgICBPcHRpb25hbDxJUEM6OlNoYXJl
ZEJ1ZmZlckRhdGFSZWZlcmVuY2U+IGlwY05leHRNZXNzYWdlOworICAgIG1fZmFjdG9yeS0+Z3B1
UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90
ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6R2VuZXJhdGVLZXlSZXF1ZXN0KG1pbWVUeXBlLCBpcGNJ
bml0RGF0YSksIE1lc3NhZ2VzOjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OkdlbmVyYXRl
S2V5UmVxdWVzdDo6UmVwbHkoaXBjTmV4dE1lc3NhZ2UsIGRlc3RpbmF0aW9uVVJMLCBlcnJvckNv
ZGUsIHN5c3RlbUNvZGUpLCBtX2lkZW50aWZpZXIpOworCisgICAgaWYgKCFpcGNOZXh0TWVzc2Fn
ZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gY29udmVydFRvVWludDhB
cnJheShXVEZNb3ZlKCppcGNOZXh0TWVzc2FnZSkpOworfQorCit2b2lkIFJlbW90ZUxlZ2FjeUNE
TVNlc3Npb246OnJlbGVhc2VLZXlzKCkKK3sKKyAgICBpZiAoIW1fZmFjdG9yeSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rp
b24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OlJlbGVhc2VL
ZXlzKCksIG1faWRlbnRpZmllcik7CisgICAgbV9jYWNoZWRLZXlDYWNoZS5jbGVhcigpOworfQor
Citib29sIFJlbW90ZUxlZ2FjeUNETVNlc3Npb246OnVwZGF0ZShVaW50OEFycmF5KiBrZXlEYXRh
LCBSZWZQdHI8VWludDhBcnJheT4mIG5leHRNZXNzYWdlLCB1bnNpZ25lZCBzaG9ydCYgZXJyb3JD
b2RlLCB1aW50MzJfdCYgc3lzdGVtQ29kZSkKK3sKKyAgICBpZiAoIW1fZmFjdG9yeSB8fCAha2V5
RGF0YSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0byBpcGNLZXlEYXRhID0gY29u
dmVydFRvRGF0YVJlZmVyZW5jZShXVEZNb3ZlKGtleURhdGEpKTsKKyAgICBib29sIHN1Y2NlZWRl
ZCB7IGZhbHNlIH07CisgICAgT3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNl
PiBpcGNOZXh0TWVzc2FnZTsKKyAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCku
Y29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJv
eHk6OlVwZGF0ZShpcGNLZXlEYXRhKSwgTWVzc2FnZXM6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Q
cm94eTo6VXBkYXRlOjpSZXBseShzdWNjZWVkZWQsIGlwY05leHRNZXNzYWdlLCBlcnJvckNvZGUs
IHN5c3RlbUNvZGUpLCBtX2lkZW50aWZpZXIpOworCisgICAgaWYgKGlwY05leHRNZXNzYWdlKQor
ICAgICAgICBuZXh0TWVzc2FnZSA9IGNvbnZlcnRUb1VpbnQ4QXJyYXkoV1RGTW92ZSgqaXBjTmV4
dE1lc3NhZ2UpKTsKKworICAgIHJldHVybiBmYWxzZTsKK30KKworUmVmUHRyPEFycmF5QnVmZmVy
PiBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uOjpjYWNoZWRLZXlGb3JLZXlJRChjb25zdCBTdHJpbmcm
IGtleUlkKSBjb25zdAoreworICAgIGlmICghbV9mYWN0b3J5KQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKworICAgIGF1dG8gZm91bmRJbkNhY2hlID0gbV9jYWNoZWRLZXlDYWNoZS5maW5kKGtl
eUlkKTsKKyAgICBpZiAoZm91bmRJbkNhY2hlICE9IG1fY2FjaGVkS2V5Q2FjaGUuZW5kKCkpCisg
ICAgICAgIHJldHVybiBmb3VuZEluQ2FjaGUtPnZhbHVlOworCisgICAgT3B0aW9uYWw8SVBDOjpT
aGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlPiBpcGNLZXk7CisgICAgbV9mYWN0b3J5LT5ncHVQcm9j
ZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlTGVn
YWN5Q0RNU2Vzc2lvblByb3h5OjpDYWNoZWRLZXlGb3JLZXlJRChrZXlJZCksIE1lc3NhZ2VzOjpS
ZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OkNhY2hlZEtleUZvcktleUlEOjpSZXBseShpcGNL
ZXkpLCBtX2lkZW50aWZpZXIpOworCisgICAgaWYgKCFpcGNLZXkpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworCisgICAgYXV0byBpcGNLZXlCdWZmZXIgPSBjb252ZXJ0VG9BcnJheUJ1ZmZlcihX
VEZNb3ZlKCppcGNLZXkpKTsKKyAgICBtX2NhY2hlZEtleUNhY2hlLnNldChrZXlJZCwgaXBjS2V5
QnVmZmVyKTsKKyAgICByZXR1cm4gaXBjS2V5QnVmZmVyOworfQorCit2b2lkIFJlbW90ZUxlZ2Fj
eUNETVNlc3Npb246OnNlbmRNZXNzYWdlKE9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0YVJl
ZmVyZW5jZT4mJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uVVJMKQoreworICAg
IGlmICghbV9jbGllbnQpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghbWVzc2FnZSkgewor
ICAgICAgICBtX2NsaWVudC0+c2VuZE1lc3NhZ2UobnVsbHB0ciwgZGVzdGluYXRpb25VUkwpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9jbGllbnQtPnNlbmRNZXNzYWdlKGNvbnZl
cnRUb1VpbnQ4QXJyYXkoV1RGTW92ZSgqbWVzc2FnZSkpLmdldCgpLCBkZXN0aW5hdGlvblVSTCk7
Cit9CisKK3ZvaWQgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbjo6c2VuZEVycm9yKFdlYkNvcmU6Okxl
Z2FjeUNETVNlc3Npb25DbGllbnQ6Ok1lZGlhS2V5RXJyb3JDb2RlIGVycm9yQ29kZSwgdWludDMy
X3Qgc3lzdGVtQ29kZSkKK3sKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5z
ZW5kRXJyb3IoZXJyb3JDb2RlLCBzeXN0ZW1Db2RlKTsKK30KKworfQorCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RN
U2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdh
Y3lDRE1TZXNzaW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzhhOTcxOWViNmIyY2YwNjYwNDY3ZDA3MjY4ODI0
ODdlNTJkYjJmYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5oCkBAIC0wLDAgKzEsNzkgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxF
KExFR0FDWV9FTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIK
KyNpbmNsdWRlICJSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllci5oIgorI2luY2x1ZGUg
PFdlYkNvcmUvTGVnYWN5Q0RNU2Vzc2lvbi5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisK
K25hbWVzcGFjZSBJUEMgeworY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZTsKK30KKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFJlbW90ZUxlZ2FjeUNETUZhY3Rvcnk7CisKK2Ns
YXNzIFJlbW90ZUxlZ2FjeUNETVNlc3Npb24gZmluYWwKKyAgICA6IHB1YmxpYyBXZWJDb3JlOjpM
ZWdhY3lDRE1TZXNzaW9uCisgICAgLCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworcHVi
bGljOgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbj4g
Y3JlYXRlKFdlYWtQdHI8UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeT4sIFJlbW90ZUxlZ2FjeUNETVNl
c3Npb25JZGVudGlmaWVyJiYpOworCisgICAgLy8gTWVzc2FnZVJlY2VpdmVyCisgICAgdm9pZCBk
aWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsK
KworICAgIGNvbnN0IFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyJiBpZGVudGlmaWVy
KCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CisKK3ByaXZhdGU6CisgICAgUmVtb3Rl
TGVnYWN5Q0RNU2Vzc2lvbihXZWFrUHRyPFJlbW90ZUxlZ2FjeUNETUZhY3Rvcnk+LCBSZW1vdGVM
ZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllciYmKTsKKworICAgIC8vIExlZ2FjeUNETVNlc3Npb24K
KyAgICBXZWJDb3JlOjpMZWdhY3lDRE1TZXNzaW9uVHlwZSB0eXBlKCkgZmluYWwgeyByZXR1cm4g
V2ViQ29yZTo6Q0RNU2Vzc2lvblR5cGVSZW1vdGU7IH0KKyAgICB2b2lkIHNldENsaWVudChXZWJD
b3JlOjpMZWdhY3lDRE1TZXNzaW9uQ2xpZW50KiBjbGllbnQpIGZpbmFsIHsgbV9jbGllbnQgPSBj
bGllbnQ7IH0KKyAgICBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1fc2Vzc2lvbklkOyB9CisgICAgUmVmUHRyPFVpbnQ4QXJyYXk+IGdlbmVyYXRlS2V5UmVx
dWVzdChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBVaW50OEFycmF5KiBpbml0RGF0YSwgU3RyaW5n
JiBkZXN0aW5hdGlvblVSTCwgdW5zaWduZWQgc2hvcnQmIGVycm9yQ29kZSwgdWludDMyX3QmIHN5
c3RlbUNvZGUpIGZpbmFsOworICAgIHZvaWQgcmVsZWFzZUtleXMoKSBmaW5hbDsKKyAgICBib29s
IHVwZGF0ZShVaW50OEFycmF5KiwgUmVmUHRyPFVpbnQ4QXJyYXk+JiBuZXh0TWVzc2FnZSwgdW5z
aWduZWQgc2hvcnQmIGVycm9yQ29kZSwgdWludDMyX3QmIHN5c3RlbUNvZGUpIGZpbmFsOworICAg
IFJlZlB0cjxBcnJheUJ1ZmZlcj4gY2FjaGVkS2V5Rm9yS2V5SUQoY29uc3QgU3RyaW5nJikgY29u
c3QgZmluYWw7CisKKyAgICAvLyBNZXNzYWdlcworICAgIHZvaWQgc2VuZE1lc3NhZ2UoT3B0aW9u
YWw8SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlPiYmIG1lc3NhZ2UsIGNvbnN0IFN0cmlu
ZyYgZGVzdGluYXRpb25VUkwpOworICAgIHZvaWQgc2VuZEVycm9yKFdlYkNvcmU6OkxlZ2FjeUNE
TVNlc3Npb25DbGllbnQ6Ok1lZGlhS2V5RXJyb3JDb2RlLCB1aW50MzJfdCBzeXN0ZW1Db2RlKTsK
KworICAgIFdlYWtQdHI8UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeT4gbV9mYWN0b3J5OworICAgIFJl
bW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyIG1faWRlbnRpZmllcjsKKyAgICBXZWJDb3Jl
OjpMZWdhY3lDRE1TZXNzaW9uQ2xpZW50KiBtX2NsaWVudDsKKyAgICBTdHJpbmcgbV9zZXNzaW9u
SWQ7CisgICAgbXV0YWJsZSBIYXNoTWFwPFN0cmluZywgUmVmUHRyPEFycmF5QnVmZmVyPj4gbV9j
YWNoZWRLZXlDYWNoZTsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24ubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNl
c3Npb24ubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODQ3YWY2MDQwMWY5MWUzNDEwYzJmZTRkNGU0
NDcxNTI2MTNhMTI4NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5tZXNzYWdlcy5pbgpAQCAtMCwwICsx
LDMxIEBACisjIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaWYgRU5BQkxF
KEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKKworbWVzc2Fn
ZXMgLT4gUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbiBOb3RSZWZDb3VudGVkIHsKKyAgICBTZW5kTWVz
c2FnZShPcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U+IG1lc3NhZ2UsIFN0
cmluZyBkZXN0aW5hdGlvblVSTCkKKyAgICBTZW5kRXJyb3IoZW51bTp1aW50OF90IFdlYkNvcmU6
OkxlZ2FjeUNETVNlc3Npb25DbGllbnQ6Ok1lZGlhS2V5RXJyb3JDb2RlIGVycm9yQ29kZSwgdWlu
dDMyX3Qgc3lzdGVtQ29kZSkKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Np
b25JZGVudGlmaWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGYwOGFkYTgzMTRmZGJkM2ZmOGM3ZWI3MDQ3OTRl
MTg1YmUxOWYyMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXIuaApAQCAtMCwwICsxLDM5
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1Mp
ICYmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSA8d3RmL09iamVj
dElkZW50aWZpZXIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2VudW0gUmVtb3RlTGVnYWN5
Q0RNU2Vzc2lvbklkZW50aWZpZXJUeXBlIHsgfTsKK3VzaW5nIFJlbW90ZUxlZ2FjeUNETVNlc3Np
b25JZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRl
bnRpZmllclR5cGU+OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVy
TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1l
ZGlhUGxheWVyTWFuYWdlci5jcHAKaW5kZXggZTlmZjI0ZDE2NzYxMGExYmY3ZjEzNjg1NmZmZmM3
MTRhZTE2NDFjNy4uODc2NTIxZDhjMDYxZDFmNDJkNTY2MDQxMzljMGQ4NjRjMjYwOTBjNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBs
YXllck1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmNwcApAQCAtMTgzLDYgKzE4MywxNyBAQCB2b2lkIFJl
bW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6ZGVsZXRlUmVtb3RlTWVkaWFQbGF5ZXIoTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlSQogICAgIGdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigp
LnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpEZWxldGVNZWRp
YVBsYXllcihpZCksIDApOwogfQogCitNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVy
IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjo6ZmluZFJlbW90ZVBsYXllcklkKGNvbnN0IE1lZGlh
UGxheWVyUHJpdmF0ZUludGVyZmFjZSogcGxheWVyKQoreworICAgIGZvciAoYXV0byBwYWlyIDog
bV9wbGF5ZXJzKSB7CisgICAgICAgIGlmIChwYWlyLnZhbHVlID09IHBsYXllcikKKyAgICAgICAg
ICAgIHJldHVybiBwYWlyLmtleTsKKyAgICB9CisKKyAgICByZXR1cm4geyB9OworfQorCisKIHZv
aWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpnZXRTdXBwb3J0ZWRUeXBlcyhNZWRpYVBsYXll
ckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIgcmVtb3RlRW5naW5lSWRlbnRpZmllciwgSGFz
aFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHJlc3VsdCkKIHsKICAgICBh
dXRvJiBjYWNoZSA9IHR5cGVDYWNoZShyZW1vdGVFbmdpbmVJZGVudGlmaWVyKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlh
UGxheWVyTWFuYWdlci5oCmluZGV4IDMyMGVjMzAxODlkNmZjNTYyZjJhZWJmZjUxYzkwZjc0ZWRm
OGRhMDEuLmJlZWNiMzdlZmY3OGQ5OWU4YmNmOGU5NDNjM2QyMTYwZTk3NDlhYTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJN
YW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXIuaApAQCAtNjksNiArNjksOCBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IGRlbGV0ZVJlbW90ZU1lZGlhUGxheWVyKE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZp
ZXIpOwogCisgICAgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBmaW5kUmVtb3Rl
UGxheWVySWQoY29uc3QgV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlKik7CisK
IHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZUludGVyZmFjZT4gY3JlYXRlUmVtb3RlTWVkaWFQbGF5ZXIoV2ViQ29yZTo6TWVkaWFQbGF5ZXIq
LCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXIpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDMyZmMy
NDViZTZlMjYwMDNmNmNhY2ZhZTBlMGY4NWUwODQwOWVlOGUuLjIwNjEwMDVhYmJjYWIwYmVhNzcz
ZWE3YzU3NmM2ZmUzM2YwZDFmMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCkBAIC0zMjYsNiArMzI2LDkgQEAKICNpZiBFTkFCTEUoRU5DUllQVEVE
X01FRElBKQogI2luY2x1ZGUgIlJlbW90ZUNETUZhY3RvcnkuaCIKICNlbmRpZgorI2lmIEVOQUJM
RShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQorI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETUZhY3Rv
cnkuaCIKKyNlbmRpZgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJLaXQgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IGRkMTJkMDE5ZGQxY2E0N2Y1N2UzNmE1NGIy
NzdhMGYyOGQ4MDZjNTEuLjMwM2I2NmY4YTViODQ2YTM0ZTc5ODdiZjJhODMwM2Q1MjRmODg1NzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTQzLDYgKzQzLDcg
QEAKICNpbmNsdWRlICJOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1
ZGUgIlBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5oIgogI2luY2x1ZGUgIlJlbW90ZUF1
ZGlvU2Vzc2lvbi5oIgorI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETUZhY3RvcnkuaCIKICNpbmNs
dWRlICJTdGF0aXN0aWNzRGF0YS5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBcmVhTWFwLmgiCiAjaW5j
bHVkZSAiVXNlckRhdGEuaCIKQEAgLTIwMjUsNiArMjAyNiwxMyBAQCB2b2lkIFdlYlByb2Nlc3M6
OnNldFVzZUdQVVByb2Nlc3NGb3JNZWRpYShib29sIHVzZUdQVVByb2Nlc3NGb3JNZWRpYSkKICAg
ICBlbHNlCiAgICAgICAgIE1lZGlhU2Vzc2lvbkhlbHBlcjo6cmVzZXRTaGFyZWRIZWxwZXIoKTsK
ICNlbmRpZgorCisjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCisgICAgaWYgKHVz
ZUdQVVByb2Nlc3NGb3JNZWRpYSkKKyAgICAgICAgZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24o
KS5sZWdhY3lDRE1GYWN0b3J5KCkucmVnaXN0ZXJGYWN0b3J5KCk7CisgICAgZWxzZQorICAgICAg
ICBMZWdhY3lDRE06OnJlc2V0RmFjdG9yaWVzKCk7CisjZW5kaWYKIH0KICNlbmRpZgogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392974</attachid>
            <date>2020-03-08 12:33:20 -0700</date>
            <delta_ts>2020-03-09 11:32:31 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-208402-20200308123319.patch</filename>
            <type>text/plain</type>
            <size>120924</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4MTA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGE4OGZkNjVlZGIwOTA1NTY1
NTkwMGZkZGQxOTFiNmMyOGI3MjU5Y2UuLmY2ZTNmOGQyNTRmYzgzOTA4OWY5YjkxOTcwNDU1ZGQx
ODEyMjM0M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTM0IEBACisyMDIwLTAyLTI4ICBKZXIgTm9i
bGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFVQXSBJbXBsZW1lbnQgTGVn
YWN5IEVNRSBBUEkgaW4gdGhlIEdQVSBQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg0MDIKKworICAgICAgICBSZXZpZXdlZCBieSBFcmlj
IENhcmxzb24uCisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIFJlbW90ZUxlZ2FjeUNETUZhY3Rv
cnksIFJlbWF0ZUxlZ2FjeUNETSxSZW1vdGVMZWdhY3lDRE1TZXNzaW9uLCBhbmQgYWxsCisgICAg
ICAgIG9mIHRoZWlyIGFzc29jaWF0ZWQgUHJveHkgb2JqZWN0cy4KKworICAgICAgICAqIERlcml2
ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtb3V0
cHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAg
KiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpsZWdhY3lDZG1GYWN0b3J5UHJveHkpOgor
ICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaXNwYXRjaE1lc3Nh
Z2UpOgorICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaXNwYXRj
aFN5bmNNZXNzYWdlKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3Rv
cnlQcm94eS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1GYWN0
b3J5UHJveHk6OlJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eSk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eTo6Y3JlYXRlQ0RNKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5OjpzdXBwb3J0c0tleVN5c3RlbSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eTo6ZGlkUmVjZWl2ZUNETU1l
c3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk6OmRp
ZFJlY2VpdmVDRE1TZXNzaW9uTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2Fj
eUNETUZhY3RvcnlQcm94eTo6ZGlkUmVjZWl2ZVN5bmNDRE1NZXNzYWdlKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5OjpkaWRSZWNlaXZlU3luY0NETVNlc3Np
b25NZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5
OjphZGRQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94
eTo6cmVtb3ZlUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1GYWN0b3J5
UHJveHk6OmFkZFNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1GYWN0
b3J5UHJveHk6OnJlbW92ZVNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lD
RE1GYWN0b3J5UHJveHk6OmdldFNlc3Npb24gY29uc3QpOgorICAgICAgICAqIEdQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5Lmg6IEFkZGVkLgorICAgICAgICAqIEdQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5Lm1lc3NhZ2VzLmluOiBB
ZGRlZC4KKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5LmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETVByb3h5OjpjcmVhdGUp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1Qcm94eTo6UmVtb3RlTGVnYWN5Q0RN
UHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1Qcm94eTo6c3VwcG9ydHNN
SU1FVHlwZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETVByb3h5OjpjcmVhdGVT
ZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNUHJveHk6OnNldFBsYXll
cklkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNUHJveHk6OmNkbU1lZGlhUGxh
eWVyIGNvbnN0KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVBy
b3h5Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1Qcm94eTo6ZmFj
dG9yeSBjb25zdCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Q
cm94eS5tZXNzYWdlcy5pbjogQWRkZWQuCisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eSk6Cisg
ICAgICAgIChXZWJLaXQ6OmNvbnZlcnRUb1VpbnQ4QXJyYXkpOgorICAgICAgICAoV2ViS2l0Ojpj
b252ZXJ0VG9PcHRpb25hbERhdGFSZWZlcmVuY2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVM
ZWdhY3lDRE1TZXNzaW9uUHJveHk6OmdlbmVyYXRlS2V5UmVxdWVzdCk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6cmVsZWFzZUtleXMpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OnVwZGF0ZSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6Z2V0Q2FjaGVkS2V5Rm9yS2V5SWQp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OmNhY2hlZEtl
eUZvcktleUlEKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5
OjpzZW5kTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Q
cm94eTo6c2VuZEVycm9yKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lv
blByb3h5OjptZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5IGNvbnN0KToKKyAgICAgICAgKiBHUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpmYWN0b3J5IGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpzZXNzaW9uIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpzZXRQ
bGF5ZXIpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lv
blByb3h5Lm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OmdldFByb3h5KToKKyAgICAgICAgKiBHUFVQcm9jZXNz
L21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5Lmg6CisgICAgICAgICogR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJDYWNoZWRLZXlGb3JLZXlJZCBjb25z
dCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVy
S2V5TmVlZGVkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6c2V0
TGVnYWN5Q0RNU2Vzc2lvbik6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRp
YVBsYXllclByb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBs
YXllclByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
VGV4dFRyYWNrUHJveHkuY3BwOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVGV4
dFRyYWNrUHJveHkuaDoKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAg
ICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkdQVVByb2Nlc3NDb25uZWN0aW9uOjptZWRpYVBsYXllck1h
bmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpHUFVQcm9jZXNzQ29ubmVjdGlvbjo6bGVnYWN5Q0RN
RmFjdG9yeSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24u
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1v
dGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNldENE
TSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6c2V0Q0RNU2Vz
c2lvbik6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bWVkaWFQ
bGF5ZXJLZXlOZWVkZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVMZWdhY3lDRE0uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlTGVnYWN5Q0RNOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE06
OlJlbW90ZUxlZ2FjeUNETSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETTo6c3Vw
cG9ydHNNSU1FVHlwZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETTo6Y3JlYXRl
U2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETTo6c2V0UGxheWVySWQp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETS5oOiBBZGRl
ZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETUZhY3Rvcnk6OlJl
bW90ZUxlZ2FjeUNETUZhY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1G
YWN0b3J5OjpyZWdpc3RlckZhY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lD
RE1GYWN0b3J5OjpzdXBwbGVtZW50TmFtZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2Fj
eUNETUZhY3Rvcnk6OmdwdVByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlTGVnYWN5Q0RNRmFjdG9yeTo6c3VwcG9ydHNLZXlTeXN0ZW0pOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVMZWdhY3lDRE1GYWN0b3J5OjpzdXBwb3J0c0tleVN5c3RlbUFuZE1pbWVUeXBlKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeTo6Y3JlYXRlQ0RNKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeTo6YWRkU2Vzc2lvbik6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETUZhY3Rvcnk6OnJlbW92ZVNlc3Npb24pOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1GYWN0b3J5OjpmaW5kQ0RNIGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeTo6ZGlkUmVjZWl2ZVNlc3Npb25N
ZXNzYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1G
YWN0b3J5Lmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxl
Z2FjeUNETUlkZW50aWZpZXIuaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0Ojpj
b252ZXJ0VG9BcnJheUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OmNvbnZlcnRUb1VpbnQ4QXJy
YXkpOgorICAgICAgICAoV2ViS2l0Ojpjb252ZXJ0VG9PcHRpb25hbERhdGFSZWZlcmVuY2UpOgor
ICAgICAgICAoV2ViS2l0Ojpjb252ZXJ0VG9EYXRhUmVmZXJlbmNlKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlTGVnYWN5Q0RNU2Vzc2lvbjo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbik6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb246OmdlbmVyYXRlS2V5UmVxdWVzdCk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb246OnJlbGVhc2VLZXlzKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbjo6dXBkYXRlKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbjo6Y2FjaGVkS2V5Rm9yS2V5SUQgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uOjpzZW5kTWVzc2FnZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb246OnNlbmRFcnJvcik6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5oOiBBZGRl
ZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9u
Lm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllci5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVNZWRpYVBsYXllck1hbmFnZXI6OmZpbmRSZW1vdGVQbGF5ZXJJZCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvV2ViTWVkaWFTdHJhdGVneS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYk1lZGlhU3RyYXRlZ3k6OnJlZ2lzdGVyTGVnYWN5Q0RNRmFjdG9yaWVz
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlByb2Nlc3MuY3BwOgorCiAyMDIwLTAzLTA2ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBw
bGUuY29tPgogCiAgICAgICAgIFtHUFVQXSBNb3ZlIEFWU3lzdGVtQ29udHJvbGxlciBjb2RlIGlu
dG8gdGhlIEdQVSBwcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3Vy
Y2VzLWlucHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0
LnhjZmlsZWxpc3QKaW5kZXggZWUwNDBiMTJhYzIwN2ZjMjM0ZjM1MzU4NjEzMmYyMmFiOTU2YjI5
My4uNmNmNjJhNmMyZWQ4ZTg2NWVhYzJkNzRjMmU4ZWYxMTA4OGE2ZmU5NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJj
ZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtMjQsNiArMjQsOSBA
QCAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94eS5t
ZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0
YW5jZVByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5Lm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElS
KS9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5tZXNzYWdlcy5p
bgorJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5t
ZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lD
RE1TZXNzaW9uUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9E
SVIpL0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5tZXNzYWdlcy5pbgog
JChQUk9KRUNUX0RJUikvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlTWFuYWdl
ci5tZXNzYWdlcy5pbgpAQCAtMTIxLDYgKzEyNCw3IEBAICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nl
c3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5pbgogJChQUk9K
RUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvblByb3h5
Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVB
dWRpb1Nlc3Npb24ubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5tZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJUikv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5tZXNzYWdlcy5pbgog
JChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS9tZWRpYS9UZXh0
VHJhY2tQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9pb3MvUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyLm1lc3NhZ2VzLmluCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIv
U291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRleCAwYjg1
NzM2NDgxZTA3NTVmODZkOTI1ZTMwNjJlNWRjM2UyMzY4MzRjLi45MDkzYTgyYzliMWQ1MjUwOTU5
NDY4NTBhOGQ2ZjgwYmQzNTEyZDVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRT
b3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJj
ZXMtb3V0cHV0LnhjZmlsZWxpc3QKQEAgLTE2NCw2ICsxNjQsMTggQEAgJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlQ0RNUHJveHlNZXNzYWdlc1JlcGxp
ZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3Rl
TGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKICQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhUHJveHlNZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViS2l0Mi9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXNSZXBsaWVzLmgK
KyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUxlZ2Fj
eUNETUZhY3RvcnlQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eU1lc3Nh
Z2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90
ZUxlZ2FjeUNETUZhY3RvcnlQcm94eU1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVMZWdhY3lDRE1Qcm94eU1lc3NhZ2VS
ZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQy
L1JlbW90ZUxlZ2FjeUNETVByb3h5TWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTGVnYWN5Q0RNUHJveHlNZXNzYWdlc1JlcGxpZXMu
aAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlTGVn
YWN5Q0RNU2Vzc2lvbk1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25NZXNzYWdlcy5oCisk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVMZWdhY3lD
RE1TZXNzaW9uTWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJLaXQyL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eU1lc3NhZ2VSZWNlaXZl
ci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90
ZUxlZ2FjeUNETVNlc3Npb25Qcm94eU1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eU1lc3NhZ2Vz
UmVwbGllcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9S
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJN
ZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9S
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJNZXNzYWdlc1JlcGxpZXMuaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291
cmNlcy5tYWtlCmluZGV4IGNiNzE1MmZhMzE0Njk1MjUxMDE4ZmFlYTA1YWYxMDYzNmUwYjQ3N2Eu
LmViYTBmZjFiN2M2ODI0ZjE3YjczZTYwNzhhNzUyYTJkNWI4NGJjZjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2
ZWRTb3VyY2VzLm1ha2UKQEAgLTE2MCw2ICsxNjAsMTAgQEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBc
CiAgICAgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eSBcCiAgICAgUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uIFwKICAgICBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eSBcCisgICAgUmVtb3RlTGVn
YWN5Q0RNUHJveHkgXAorICAgIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eSBcCisgICAgUmVt
b3RlTGVnYWN5Q0RNU2Vzc2lvbiBcCisgICAgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5IFwK
ICAgICBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXIgXAogICAgIFJlbW90ZU1lZGlhUGxheWVyTWFu
YWdlclByb3h5IFwKICAgICBSZW1vdGVNZWRpYVBsYXllclByb3h5IFwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRl
eCBkZjU2NzgxZTZlNWU3ZjM2NmM2ODM3ODk4ZGMwMTlkZDhmZWQ0MzA4Li5iZDdkMDdmMGQzNTY5
YzlmMDNhZWVlYTU2NjYyOTI4ZjI2YjAwNjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC04Nyw2ICs4Nywx
MyBAQAogI2luY2x1ZGUgIlJlbW90ZU1lZGlhU2Vzc2lvbkhlbHBlclByb3h5LmgiCiAjZW5kaWYK
IAorI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQorI2luY2x1ZGUgIlJlbW90ZUxl
Z2FjeUNETUZhY3RvcnlQcm94eS5oIgorI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQ
cm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlTGVnYWN5Q0RNUHJveHlNZXNzYWdlcy5o
IgorI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eU1lc3NhZ2VzLmgiCisjZW5k
aWYKKwogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAt
MzA3LDYgKzMxNCwxNiBAQCB2b2lkIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVuc3VyZU1l
ZGlhU2Vzc2lvbkhlbHBlcigpCiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQ
VEVEX01FRElBKQorUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5JiBHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpsZWdhY3lDZG1GYWN0b3J5UHJveHkoKQoreworICAgIGlmICghbV9sZWdhY3lD
ZG1GYWN0b3J5UHJveHkpCisgICAgICAgIG1fbGVnYWN5Q2RtRmFjdG9yeVByb3h5ID0gbWFrZVVu
aXF1ZTxSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk+KCp0aGlzKTsKKworICAgIHJldHVybiAq
bV9sZWdhY3lDZG1GYWN0b3J5UHJveHk7Cit9CisjZW5kaWYKKwogYm9vbCBHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpkaXNwYXRjaE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9u
LCBJUEM6OkRlY29kZXImIGRlY29kZXIpCiB7CiAgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2Vp
dmVyTmFtZSgpID09IE1lc3NhZ2VzOjpSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdlcjo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpKSB7CkBAIC0zOTAsNiArNDA3LDEyIEBAIGJvb2wgR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6ZGlzcGF0Y2hNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVj
dGlvbiwgSVBDCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICNlbmRpZgorI2lmIEVOQUJM
RShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQorICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSA9PSBNZXNzYWdlczo6UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5OjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAgbGVnYWN5Q2RtRmFjdG9yeVByb3h5KCkuZGlkUmVj
ZWl2ZU1lc3NhZ2VGcm9tV2ViUHJvY2Vzcyhjb25uZWN0aW9uLCBkZWNvZGVyKTsKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgfQorI2VuZGlmCiAKICAgICByZXR1cm4gbWVzc2FnZVJlY2VpdmVy
TWFwKCkuZGlzcGF0Y2hNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwogfQpAQCAtNDQ3LDYg
KzQ3MCwxMiBAQCBib29sIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpc3BhdGNoU3luY01l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLAogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CiAjZW5kaWYKKyNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKKyAgICBp
ZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlJlbW90ZUxlZ2Fj
eUNETUZhY3RvcnlQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIGxlZ2Fj
eUNkbUZhY3RvcnlQcm94eSgpLmRpZFJlY2VpdmVTeW5jTWVzc2FnZUZyb21XZWJQcm9jZXNzKGNv
bm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKyNlbmRpZgogCiAgICAgcmV0dXJuIG1lc3NhZ2VSZWNlaXZlck1hcCgpLmRpc3BhdGNo
U3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5o
CmluZGV4IDM2OGIwYmY2NmJiODVhOWU0Y2FmYTJjYjVhODJlNjcyY2NjMDU3NGIuLjJlYzhjZDU2
ZDJjMzE2NjVlYWNjZGViOWUxODI2NTc4YTgxNWE1YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtNDgsNiArNDgs
NyBAQCBjbGFzcyBSZW1vdGVBdWRpb01lZGlhU3RyZWFtVHJhY2tSZW5kZXJlck1hbmFnZXI7CiBj
bGFzcyBSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eTsKIGNsYXNzIFJlbW90ZUF1ZGlvU2Vzc2lvblBy
b3h5TWFuYWdlcjsKIGNsYXNzIFJlbW90ZUNETUZhY3RvcnlQcm94eTsKK2NsYXNzIFJlbW90ZUxl
Z2FjeUNETUZhY3RvcnlQcm94eTsKIGNsYXNzIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5
OwogY2xhc3MgUmVtb3RlTWVkaWFSZWNvcmRlck1hbmFnZXI7CiBjbGFzcyBSZW1vdGVNZWRpYVJl
c291cmNlTWFuYWdlcjsKQEAgLTkwLDggKzkxLDEyIEBAIHB1YmxpYzoKICNlbmRpZgogI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAgICAgUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVyUHJveHkmIG1l
ZGlhU2Vzc2lvbkhlbHBlclByb3h5KCk7CisjZW5kaWYKKyNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZ
UFRFRF9NRURJQSkKKyAgICBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkmIGxlZ2FjeUNkbUZh
Y3RvcnlQcm94eSgpOwogI2VuZGlmCiAgICAgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkm
IHJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5KCk7CisKICNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpICYmIFVTRShBVURJT19TRVNTSU9OKQogICAgIFJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5TWFu
YWdlciYgYXVkaW9TZXNzaW9uTWFuYWdlcigpOwogI2VuZGlmCkBAIC0xNzcsNiArMTgyLDkgQEAg
cHJpdmF0ZToKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxS
ZW1vdGVNZWRpYVNlc3Npb25IZWxwZXJQcm94eT4gbV9tZWRpYVNlc3Npb25IZWxwZXJQcm94eTsK
ICNlbmRpZgorI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQorICAgIHN0ZDo6dW5p
cXVlX3B0cjxSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk+IG1fbGVnYWN5Q2RtRmFjdG9yeVBy
b3h5OworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3Rv
cnlQcm94eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDEyZmU0ZDliZWU0NjRhNTg2NzZiMjA3NWE3ZDY3OTE3
OGJkYzBhZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkuY3BwCkBAIC0wLDAgKzEsMTQyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETUZh
Y3RvcnlQcm94eS5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoRU5DUllQ
VEVEX01FRElBKQorCisjaW5jbHVkZSAiUmVtb3RlTGVnYWN5Q0RNUHJveHkuaCIKKyNpbmNsdWRl
ICJSZW1vdGVMZWdhY3lDRE1Qcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlTGVnYWN5
Q0RNU2Vzc2lvblByb3h5LmgiCisjaW5jbHVkZSAiUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5
TWVzc2FnZXMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0xlZ2FjeUNETS5oPgorI2luY2x1ZGUgPHd0
Zi9BbGdvcml0aG1zLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKKworUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5OjpSZW1vdGVMZWdhY3lDRE1G
YWN0b3J5UHJveHkoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbikKKyAgICA6
IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcyhjb25uZWN0aW9uKQoreworfQorCitSZW1vdGVM
ZWdhY3lDRE1GYWN0b3J5UHJveHk6On5SZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkoKSA9IGRl
ZmF1bHQ7CisKK3ZvaWQgUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5OjpjcmVhdGVDRE0oY29u
c3QgU3RyaW5nJiBrZXlTeXN0ZW0sIE9wdGlvbmFsPE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlk
ZW50aWZpZXI+JiYgb3B0aW9uYWxQbGF5ZXJJZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZW1v
dGVMZWdhY3lDRE1JZGVudGlmaWVyJiYpPiYmIGNvbXBsZXRpb24pCit7CisgICAgYXV0byBwcml2
YXRlQ0RNID0gTGVnYWN5Q0RNOjpjcmVhdGUoa2V5U3lzdGVtKTsKKyAgICBpZiAoIXByaXZhdGVD
RE0pIHsKKyAgICAgICAgY29tcGxldGlvbih7IH0pOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllciBwbGF5ZXJJZDsKKyAgICBp
ZiAob3B0aW9uYWxQbGF5ZXJJZCkKKyAgICAgICAgcGxheWVySWQgPSBXVEZNb3ZlKG9wdGlvbmFs
UGxheWVySWQudmFsdWUoKSk7CisKKyAgICBhdXRvIHByb3h5ID0gUmVtb3RlTGVnYWN5Q0RNUHJv
eHk6OmNyZWF0ZShtYWtlV2Vha1B0cih0aGlzKSwgV1RGTW92ZShwbGF5ZXJJZCksIFdURk1vdmUo
cHJpdmF0ZUNETSkpOworICAgIGF1dG8gaWRlbnRpZmllciA9IFJlbW90ZUxlZ2FjeUNETUlkZW50
aWZpZXI6OmdlbmVyYXRlKCk7CisgICAgYWRkUHJveHkoaWRlbnRpZmllciwgV1RGTW92ZShwcm94
eSkpOworICAgIGNvbXBsZXRpb24oV1RGTW92ZShpZGVudGlmaWVyKSk7Cit9CisKK3ZvaWQgUmVt
b3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5OjpzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcm
IGtleVN5c3RlbSwgT3B0aW9uYWw8U3RyaW5nPiBtaW1lVHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJiBjb21wbGV0aW9uKQoreworICAgIGlmIChtaW1lVHlwZSkKKyAgICAgICAg
Y29tcGxldGlvbihMZWdhY3lDRE06OmtleVN5c3RlbVN1cHBvcnRzTWltZVR5cGUoa2V5U3lzdGVt
LCAqbWltZVR5cGUpKTsKKyAgICBlbHNlCisgICAgICAgIGNvbXBsZXRpb24oTGVnYWN5Q0RNOjpz
dXBwb3J0c0tleVN5c3RlbShrZXlTeXN0ZW0pKTsKK30KKwordm9pZCBSZW1vdGVMZWdhY3lDRE1G
YWN0b3J5UHJveHk6OmRpZFJlY2VpdmVDRE1NZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVj
dGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIGlmIChhdXRvKiBwcm94eSA9IG1f
cHJveGllcy5nZXQobWFrZU9iamVjdElkZW50aWZpZXI8UmVtb3RlTGVnYWN5Q0RNSWRlbnRpZmll
clR5cGU+KGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkpCisgICAgICAgIHByb3h5LT5kaWRSZWNl
aXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKK30KKwordm9pZCBSZW1vdGVMZWdhY3lD
RE1GYWN0b3J5UHJveHk6OmRpZFJlY2VpdmVDRE1TZXNzaW9uTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBpZiAoYXV0byog
c2Vzc2lvbiA9IG1fc2Vzc2lvbnMuZ2V0KG1ha2VPYmplY3RJZGVudGlmaWVyPFJlbW90ZUxlZ2Fj
eUNETVNlc3Npb25JZGVudGlmaWVyVHlwZT4oZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpKSkKKyAg
ICAgICAgc2Vzc2lvbi0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7Cit9
CisKK3ZvaWQgUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5OjpkaWRSZWNlaXZlU3luY0NETU1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIs
IHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JiBlbmNvZGVyKQoreworICAgIGlmIChhdXRv
KiBwcm94eSA9IG1fcHJveGllcy5nZXQobWFrZU9iamVjdElkZW50aWZpZXI8UmVtb3RlTGVnYWN5
Q0RNSWRlbnRpZmllclR5cGU+KGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkpCisgICAgICAgIHBy
b3h5LT5kaWRSZWNlaXZlU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgZW5jb2Rlcik7
Cit9CisKK3ZvaWQgUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5OjpkaWRSZWNlaXZlU3luY0NE
TVNlc3Npb25NZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVy
JiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYgZW5jb2RlcikKK3sKKyAg
ICBpZiAoYXV0byogc2Vzc2lvbiA9IG1fc2Vzc2lvbnMuZ2V0KG1ha2VPYmplY3RJZGVudGlmaWVy
PFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyVHlwZT4oZGVjb2Rlci5kZXN0aW5hdGlv
bklEKCkpKSkKKyAgICAgICAgc2Vzc2lvbi0+ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKGNvbm5lY3Rp
b24sIGRlY29kZXIsIGVuY29kZXIpOworfQorCit2b2lkIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQ
cm94eTo6YWRkUHJveHkoUmVtb3RlTGVnYWN5Q0RNSWRlbnRpZmllciBpZCwgc3RkOjp1bmlxdWVf
cHRyPFJlbW90ZUxlZ2FjeUNETVByb3h5PiYmIHByb3h5KQoreworICAgIGdwdUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MoKS5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVz
c2FnZXM6OlJlbW90ZUxlZ2FjeUNETVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIGlkLnRv
VUludDY0KCksICpwcm94eSk7CisKKyAgICBBU1NFUlQoIW1fcHJveGllcy5jb250YWlucyhpZCkp
OworICAgIG1fcHJveGllcy5zZXQoaWQsIFdURk1vdmUocHJveHkpKTsKK30KKwordm9pZCBSZW1v
dGVMZWdhY3lDRE1GYWN0b3J5UHJveHk6OnJlbW92ZVByb3h5KFJlbW90ZUxlZ2FjeUNETUlkZW50
aWZpZXIgaWQpCit7CisgICAgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpLm1lc3NhZ2VSZWNl
aXZlck1hcCgpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlTGVnYWN5Q0RN
UHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgaWQudG9VSW50NjQoKSk7CisKKyAgICBBU1NF
UlQobV9wcm94aWVzLmNvbnRhaW5zKGlkKSk7CisgICAgbV9wcm94aWVzLnJlbW92ZShpZCk7Cit9
CisKK3ZvaWQgUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5OjphZGRTZXNzaW9uKFJlbW90ZUxl
Z2FjeUNETVNlc3Npb25JZGVudGlmaWVyIGlkLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGVnYWN5
Q0RNU2Vzc2lvblByb3h5PiYmIHNlc3Npb24pCit7CisgICAgZ3B1Q29ubmVjdGlvblRvV2ViUHJv
Y2VzcygpLm1lc3NhZ2VSZWNlaXZlck1hcCgpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6
UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIGlkLnRv
VUludDY0KCksICpzZXNzaW9uKTsKKworICAgIEFTU0VSVCghbV9zZXNzaW9ucy5jb250YWlucyhp
ZCkpOworICAgIG1fc2Vzc2lvbnMuc2V0KGlkLCBXVEZNb3ZlKHNlc3Npb24pKTsKK30KKwordm9p
ZCBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk6OnJlbW92ZVNlc3Npb24oUmVtb3RlTGVnYWN5
Q0RNU2Vzc2lvbklkZW50aWZpZXIgaWQpCit7CisgICAgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vz
cygpLm1lc3NhZ2VSZWNlaXZlck1hcCgpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6
UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIGlkLnRv
VUludDY0KCkpOworCisgICAgQVNTRVJUKG1fc2Vzc2lvbnMuY29udGFpbnMoaWQpKTsKKyAgICBt
X3Nlc3Npb25zLnJlbW92ZShpZCk7Cit9CisKK1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eSog
UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5OjpnZXRTZXNzaW9uKGNvbnN0IFJlbW90ZUxlZ2Fj
eUNETVNlc3Npb25JZGVudGlmaWVyJiBpZCkgY29uc3QKK3sKKyAgICBhdXRvIHJlc3VsdHMgPSBt
X3Nlc3Npb25zLmZpbmQoaWQpOworICAgIGlmIChyZXN1bHRzICE9IG1fc2Vzc2lvbnMuZW5kKCkp
CisgICAgICAgIHJldHVybiByZXN1bHRzLT52YWx1ZS5nZXQoKTsKKyAgICByZXR1cm4gbnVsbHB0
cjsKK30KKworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5oIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjUzNTUzODQ4ODY1OTk4MWQ4Zjg4M2I0Y2ExZWNjYWMyMzVhMzlmZWQKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9y
eVByb3h5LmgKQEAgLTAsMCArMSw4NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkK
KworI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGVJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVk
ZSAiUmVtb3RlTGVnYWN5Q0RNSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNE
TVNlc3Npb25JZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgorI2luY2x1
ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOworY2xhc3MgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5Owor
Y2xhc3MgUmVtb3RlTGVnYWN5Q0RNUHJveHk7CitzdHJ1Y3QgUmVtb3RlTGVnYWN5Q0RNQ29uZmln
dXJhdGlvbjsKKworY2xhc3MgUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5IGZpbmFsIDogcHJp
dmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwgcHVibGljIENhbk1ha2VXZWFrUHRyPFJlbW90ZUxl
Z2FjeUNETUZhY3RvcnlQcm94eT4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVi
bGljOgorICAgIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eShHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzJik7CisgICAgdmlydHVhbCB+UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5KCk7CisK
KyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlRnJvbVdlYlByb2Nlc3MoSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpIHsgZGlkUmVjZWl2ZU1lc3NhZ2Uo
Y29ubmVjdGlvbiwgZGVjb2Rlcik7IH0KKyAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZUZy
b21XZWJQcm9jZXNzKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBk
ZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYgZW5jb2RlcikgeyBkaWRSZWNl
aXZlU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgZW5jb2Rlcik7IH0KKyAgICB2b2lk
IGRpZFJlY2VpdmVDRE1NZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwor
ICAgIHZvaWQgZGlkUmVjZWl2ZUNETVNlc3Npb25NZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQ
Qzo6RGVjb2RlciYpOworICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNDRE1NZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jik7
CisgICAgdm9pZCBkaWRSZWNlaXZlU3luY0NETVNlc3Npb25NZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jik7CisKKyAg
ICB2b2lkIGFkZFByb3h5KFJlbW90ZUxlZ2FjeUNETUlkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0
cjxSZW1vdGVMZWdhY3lDRE1Qcm94eT4mJik7CisgICAgdm9pZCByZW1vdmVQcm94eShSZW1vdGVM
ZWdhY3lDRE1JZGVudGlmaWVyKTsKKworICAgIHZvaWQgYWRkU2Vzc2lvbihSZW1vdGVMZWdhY3lD
RE1TZXNzaW9uSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxlZ2FjeUNETVNlc3Np
b25Qcm94eT4mJik7CisgICAgdm9pZCByZW1vdmVTZXNzaW9uKFJlbW90ZUxlZ2FjeUNETVNlc3Np
b25JZGVudGlmaWVyKTsKKyAgICBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkqIGdldFNlc3Np
b24oY29uc3QgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXImKSBjb25zdDsKKworICAg
IEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKSBj
b25zdCB7IHJldHVybiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7IH0KKworcHJpdmF0ZToK
KyAgICBmcmllbmQgY2xhc3MgR1BVUHJvY2Vzc0Nvbm5lY3Rpb247CisgICAgLy8gSVBDOjpNZXNz
YWdlUmVjZWl2ZXIKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYs
IElQQzo6RGVjb2RlciYpIGZpbmFsIHsgfQorICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVu
Y29kZXI+JikgZmluYWw7CisKKyAgICAvLyBNZXNzYWdlcworICAgIHZvaWQgY3JlYXRlQ0RNKGNv
bnN0IFN0cmluZyYga2V5U3lzdGVtLCBPcHRpb25hbDxNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJ
ZGVudGlmaWVyPiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlbW90ZUxlZ2FjeUNETUlkZW50
aWZpZXImJik+JiYpOworICAgIHZvaWQgc3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBr
ZXlTeXN0ZW0sIE9wdGlvbmFsPFN0cmluZz4gbWltZVR5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYpOworCisgICAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgbV9ncHVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOworICAgIEhhc2hNYXA8UmVtb3RlTGVnYWN5Q0RNSWRlbnRpZmll
ciwgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxlZ2FjeUNETVByb3h5Pj4gbV9wcm94aWVzOworICAg
IEhhc2hNYXA8UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0
cjxSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk+PiBtX3Nlc3Npb25zOworfTsKKworfQorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVM
ZWdhY3lDRE1GYWN0b3J5UHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5Lm1lc3NhZ2VzLmluCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjAwNzQ0ZmJmZDRkMDJjMWY5YzNkNzlhMDBmNTA0OWY5MTUzYjdmNDkKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFj
dG9yeVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMzEgQEAKKyMgQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
IyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShM
RUdBQ1lfRU5DUllQVEVEX01FRElBKQorCittZXNzYWdlcyAtPiBSZW1vdGVMZWdhY3lDRE1GYWN0
b3J5UHJveHkgTm90UmVmQ291bnRlZCB7CisgICAgQ3JlYXRlQ0RNKFN0cmluZyBrZXlTeXN0ZW0s
IE9wdGlvbmFsPFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllcj4gcGxh
eWVySWQpIC0+IChXZWJLaXQ6OlJlbW90ZUxlZ2FjeUNETUlkZW50aWZpZXIgaWQpIFN5bmNocm9u
b3VzCisgICAgU3VwcG9ydHNLZXlTeXN0ZW0oU3RyaW5nIGtleVN5c3RlbSwgT3B0aW9uYWw8U3Ry
aW5nPiBtaW1lVHlwZSkgLT4gKGJvb2wgcmVzdWx0KSBTeW5jaHJvbm91cworfQorCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lD
RE1Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5
Q0RNUHJveHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJkMTdhODkxYWFiMTFlZGU2ZGJlZDdjMGZkMDJkMjg1
MjcxZTgzNjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkuY3BwCkBAIC0wLDAgKzEsOTggQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlTGVnYWN5Q0RNUHJveHkuaCIK
KworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVE
SUEpCisKKyNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAi
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuaCIKKyNpbmNsdWRlICJSZW1vdGVNZWRpYVBs
YXllclByb3h5LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCit1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKKworc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxlZ2FjeUNETVByb3h5PiBSZW1vdGVMZWdh
Y3lDRE1Qcm94eTo6Y3JlYXRlKFdlYWtQdHI8UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5PiBm
YWN0b3J5LCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyJiYgcGxheWVySWQsIHN0
ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpMZWdhY3lDRE0+JiYgY2RtKQoreworICAgIHJldHVybiBz
dGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGVnYWN5Q0RNUHJveHk+KG5ldyBSZW1vdGVMZWdhY3lDRE1Q
cm94eShXVEZNb3ZlKGZhY3RvcnkpLCBXVEZNb3ZlKHBsYXllcklkKSwgV1RGTW92ZShjZG0pKSk7
Cit9CisKK1JlbW90ZUxlZ2FjeUNETVByb3h5OjpSZW1vdGVMZWdhY3lDRE1Qcm94eShXZWFrUHRy
PFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eT4mJiBmYWN0b3J5LCBNZWRpYVBsYXllclByaXZh
dGVSZW1vdGVJZGVudGlmaWVyJiYgcGxheWVySWQsIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpM
ZWdhY3lDRE0+JiYgY2RtKQorICAgIDogbV9mYWN0b3J5KFdURk1vdmUoZmFjdG9yeSkpCisgICAg
LCBtX3BsYXllcklkKFdURk1vdmUocGxheWVySWQpKQorICAgICwgbV9jZG0oV1RGTW92ZShjZG0p
KQoreworICAgIG1fY2RtLT5zZXRDbGllbnQodGhpcyk7Cit9CisKK1JlbW90ZUxlZ2FjeUNETVBy
b3h5Ojp+UmVtb3RlTGVnYWN5Q0RNUHJveHkoKSA9IGRlZmF1bHQ7CisKK3ZvaWQgUmVtb3RlTGVn
YWN5Q0RNUHJveHk6OnN1cHBvcnRzTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgU3Vw
cG9ydHNNSU1FVHlwZUNhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgaWYgKCFtX2NkbSkgewor
ICAgICAgICBjYWxsYmFjayhmYWxzZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBj
YWxsYmFjayhtX2NkbS0+c3VwcG9ydHNNSU1FVHlwZShtaW1lVHlwZSkpOworfQorCit2b2lkIFJl
bW90ZUxlZ2FjeUNETVByb3h5OjpjcmVhdGVTZXNzaW9uKGNvbnN0IFN0cmluZyYga2V5U3lzdGVt
LCBDcmVhdGVTZXNzaW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICBpZiAoIW1fY2RtIHx8
ICFtX2ZhY3RvcnkpIHsKKyAgICAgICAgY2FsbGJhY2soeyB9KTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIGF1dG8gaWRlbnRpZmllciA9IFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVu
dGlmaWVyOjpnZW5lcmF0ZSgpOworICAgIGF1dG8gc2Vzc2lvbiA9IFJlbW90ZUxlZ2FjeUNETVNl
c3Npb25Qcm94eTo6Y3JlYXRlKG1ha2VXZWFrUHRyKG1fZmFjdG9yeS5nZXQoKSksIGlkZW50aWZp
ZXIsICptX2NkbSk7CisgICAgbV9mYWN0b3J5LT5hZGRTZXNzaW9uKGlkZW50aWZpZXIsIFdURk1v
dmUoc2Vzc2lvbikpOworICAgIGNhbGxiYWNrKFdURk1vdmUoaWRlbnRpZmllcikpOworfQorCit2
b2lkIFJlbW90ZUxlZ2FjeUNETVByb3h5OjpzZXRQbGF5ZXJJZChPcHRpb25hbDxNZWRpYVBsYXll
clByaXZhdGVSZW1vdGVJZGVudGlmaWVyPiYmIHBsYXllcklkKQoreworICAgIGlmICghcGxheWVy
SWQpCisgICAgICAgIG1fcGxheWVySWQgPSB7IH07CisgICAgbV9wbGF5ZXJJZCA9IFdURk1vdmUo
KnBsYXllcklkKTsKK30KKworUmVmUHRyPE1lZGlhUGxheWVyPiBSZW1vdGVMZWdhY3lDRE1Qcm94
eTo6Y2RtTWVkaWFQbGF5ZXIoY29uc3QgTGVnYWN5Q0RNKikgY29uc3QKK3sKKyAgICBpZiAoIW1f
cGxheWVySWQgfHwgIW1fZmFjdG9yeSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBh
dXRvIHByb3h5ID0gbV9mYWN0b3J5LT5ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkucmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkoKS5nZXRQcm94eShtX3BsYXllcklkKTsKKyAgICBpZiAo
IXByb3h5KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBwcm94eS0+bWVk
aWFQbGF5ZXIoKTsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5oIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5LmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmI2ZDE3
YTlhNDU3MWUzNDg4NGNmZjhjYTliZWVjMzMzMWY4MjA2ZQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1Qcm94eS5oCkBAIC0w
LDAgKzEsODMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVf
UFJPQ0VTUykgJiYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRlICJN
ZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHku
aCIKKyNpbmNsdWRlICJSZW1vdGVMZWdhY3lDRE1JZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8V2Vi
Q29yZS9MZWdhY3lDRE0uaD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0
Zi9VbmlxdWVSZWYuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CitjbGFzcyBTaGFyZWRCdWZmZXI7Cit9CisKK25hbWVzcGFjZSBJUEMgeworY2xhc3Mg
RGF0YVJlZmVyZW5jZTsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFJlbW90ZUxl
Z2FjeUNETVByb3h5CisgICAgOiBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyCisgICAgLCBw
dWJsaWMgV2ViQ29yZTo6TGVnYWN5Q0RNQ2xpZW50CisgICAgLCBwdWJsaWMgQ2FuTWFrZVdlYWtQ
dHI8UmVtb3RlTGVnYWN5Q0RNUHJveHk+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPFJlbW90ZUxlZ2FjeUNETVByb3h5PiBjcmVhdGUoV2Vha1B0cjxSZW1vdGVMZWdhY3lD
RE1GYWN0b3J5UHJveHk+LCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyJiYsIHN0
ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpMZWdhY3lDRE0+JiYpOworICAgIH5SZW1vdGVMZWdhY3lD
RE1Qcm94eSgpOworCisgICAgUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5KiBmYWN0b3J5KCkg
Y29uc3QgeyByZXR1cm4gbV9mYWN0b3J5LmdldCgpOyB9CisKK3ByaXZhdGU6CisgICAgZnJpZW5k
IGNsYXNzIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eTsKKyAgICBSZW1vdGVMZWdhY3lDRE1Q
cm94eShXZWFrUHRyPFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eT4mJiwgTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlSWRlbnRpZmllciYmLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6TGVnYWN5
Q0RNPiYmKTsKKworICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCisgICAgdm9pZCBkaWRSZWNl
aXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKKyAgICB2
b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXIm
LCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOworCisgICAgLy8gTWVzc2Fn
ZXMKKyAgICB1c2luZyBTdXBwb3J0c01JTUVUeXBlQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPjsKKyAgICB2b2lkIHN1cHBvcnRzTUlNRVR5cGUoY29uc3QgU3RyaW5nJiwg
U3VwcG9ydHNNSU1FVHlwZUNhbGxiYWNrJiYpOworICAgIHVzaW5nIENyZWF0ZVNlc3Npb25DYWxs
YmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50
aWZpZXImJik+OworICAgIHZvaWQgY3JlYXRlU2Vzc2lvbihjb25zdCBTdHJpbmcmLCBDcmVhdGVT
ZXNzaW9uQ2FsbGJhY2smJik7CisgICAgdm9pZCBzZXRQbGF5ZXJJZChPcHRpb25hbDxNZWRpYVBs
YXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyPiYmKTsKKworICAgIC8vIExlZ2FjeUNETUNsaWVu
dAorICAgIFJlZlB0cjxXZWJDb3JlOjpNZWRpYVBsYXllcj4gY2RtTWVkaWFQbGF5ZXIoY29uc3Qg
V2ViQ29yZTo6TGVnYWN5Q0RNKikgY29uc3QgZmluYWw7CisKKyAgICBXZWFrUHRyPFJlbW90ZUxl
Z2FjeUNETUZhY3RvcnlQcm94eT4gbV9mYWN0b3J5OworICAgIE1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZUlkZW50aWZpZXIgbV9wbGF5ZXJJZDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6
TGVnYWN5Q0RNPiBtX2NkbTsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNUHJveHkubWVz
c2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uODcxYmE4YmQ4N2U3ZDkyNzA3Y2MwOWQ4ZjNjYzQwZDZmNDhk
ZmNiMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVMZWdhY3lDRE1Qcm94eS5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDMyIEBACisjIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisj
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAm
JiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKKworbWVzc2FnZXMgLT4gUmVtb3RlTGVn
YWN5Q0RNUHJveHkgTm90UmVmQ291bnRlZCB7CisgICAgU3VwcG9ydHNNSU1FVHlwZShTdHJpbmcg
bWltZVR5cGUpIC0+IChib29sIHN1cHBvcnRzKSBTeW5jaHJvbm91cworICAgIENyZWF0ZVNlc3Np
b24oU3RyaW5nIG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkpIC0+IChXZWJLaXQ6OlJlbW90ZUxl
Z2FjeUNETVNlc3Npb25JZGVudGlmaWVyIGlkKSBTeW5jaHJvbm91cworICAgIFNldFBsYXllcklk
KE9wdGlvbmFsPFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllcj4gcGxh
eWVySWQpCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4wYTBlMzNmYzZiNDQ0ZDMxMWU2NjAyZjhhNzU1ZTMzNDIwMmVjMTUyCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Np
b25Qcm94eS5jcHAKQEAgLTAsMCArMSwxNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmgiCisKKyNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQorCisj
aW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIlJlbW90ZUxl
Z2FjeUNETUZhY3RvcnlQcm94eS5oIgorI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETVNlc3Npb25N
ZXNzYWdlcy5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIKKyNpbmNs
dWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK3N0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMZWdhY3lDRE1T
ZXNzaW9uUHJveHk+IFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6Y3JlYXRlKFdlYWtQdHI8
UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5PiYmIGZhY3RvcnksIFJlbW90ZUxlZ2FjeUNETVNl
c3Npb25JZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYkNvcmU6OkxlZ2FjeUNETSYgY2RtKQorewor
ICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5Pihu
ZXcgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5KFdURk1vdmUoZmFjdG9yeSksIGlkZW50aWZp
ZXIsIGNkbSkpOworfQorCitSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OlJlbW90ZUxlZ2Fj
eUNETVNlc3Npb25Qcm94eShXZWFrUHRyPFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eT4mJiBm
YWN0b3J5LCBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJD
b3JlOjpMZWdhY3lDRE0mIGNkbSkKKyAgICA6IG1fZmFjdG9yeShXVEZNb3ZlKGZhY3RvcnkpKQor
ICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCisgICAgLCBtX3Nlc3Npb24oY2RtLmNyZWF0
ZVNlc3Npb24oKnRoaXMpKQoreworfQorCitSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6On5S
ZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkoKSA9IGRlZmF1bHQ7CisKK3N0YXRpYyBSZWZQdHI8
VWludDhBcnJheT4gY29udmVydFRvVWludDhBcnJheShJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZl
cmVuY2UmJiBidWZmZXIpCit7CisgICAgaWYgKCFidWZmZXIuYnVmZmVyKCkpCisgICAgICAgIHJl
dHVybiBudWxscHRyOworCisgICAgc2l6ZV90IHNpemVJbkJ5dGVzID0gYnVmZmVyLnNpemUoKTsK
KyAgICBhdXRvIGFycmF5QnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShidWZmZXIuZGF0YSgp
LCBzaXplSW5CeXRlcyk7CisgICAgcmV0dXJuIFVpbnQ4QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKGFy
cmF5QnVmZmVyKSwgMCwgc2l6ZUluQnl0ZXMpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
K3N0YXRpYyBPcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U+IGNvbnZlcnRU
b09wdGlvbmFsRGF0YVJlZmVyZW5jZShUIGFycmF5KQoreworICAgIGlmICghYXJyYXkpCisgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHsgU2hhcmVkQnVmZmVyOjpjcmVh
dGUoKGNvbnN0IGNoYXIqKWFycmF5LT5kYXRhKCksIGFycmF5LT5ieXRlTGVuZ3RoKCkpIH07Cit9
CisKK3ZvaWQgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpnZW5lcmF0ZUtleVJlcXVlc3Qo
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlJiYg
aW5pdERhdGEsIEdlbmVyYXRlS2V5Q2FsbGJhY2smJiBjb21wbGV0aW9uKQoreworICAgIGF1dG8g
aW5pdERhdGFBcnJheSA9IGNvbnZlcnRUb1VpbnQ4QXJyYXkoV1RGTW92ZShpbml0RGF0YSkpOwor
ICAgIGlmICghaW5pdERhdGFBcnJheSkgeworICAgICAgICBjb21wbGV0aW9uKHsgfSwgZW1wdHlT
dHJpbmcoKSwgMCwgMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBTdHJpbmcgZGVz
dGluYXRpb25VUkw7CisgICAgdW5zaWduZWQgc2hvcnQgZXJyb3JDb2RlIHsgMCB9OworICAgIHVp
bnQzMl90IHN5c3RlbUNvZGUgeyAwIH07CisKKyAgICBhdXRvIGtleVJlcXVlc3QgPSBtX3Nlc3Np
b24tPmdlbmVyYXRlS2V5UmVxdWVzdChtaW1lVHlwZSwgaW5pdERhdGFBcnJheS5nZXQoKSwgZGVz
dGluYXRpb25VUkwsIGVycm9yQ29kZSwgc3lzdGVtQ29kZSk7CisKKyAgICBkZXN0aW5hdGlvblVS
TCA9ICJ0aGlzIGlzIGEgdGVzdCBzdHJpbmciX3M7CisKKyAgICBjb21wbGV0aW9uKGNvbnZlcnRU
b09wdGlvbmFsRGF0YVJlZmVyZW5jZShrZXlSZXF1ZXN0KSwgZGVzdGluYXRpb25VUkwsIGVycm9y
Q29kZSwgc3lzdGVtQ29kZSk7Cit9CisKK3ZvaWQgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5
OjpyZWxlYXNlS2V5cygpCit7CisgICAgbV9zZXNzaW9uLT5yZWxlYXNlS2V5cygpOworfQorCit2
b2lkIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6dXBkYXRlKElQQzo6U2hhcmVkQnVmZmVy
RGF0YVJlZmVyZW5jZSYmIHVwZGF0ZSwgVXBkYXRlQ2FsbGJhY2smJiBjb21wbGV0aW9uKQorewor
ICAgIGF1dG8gdXBkYXRlQXJyYXkgPSBjb252ZXJ0VG9VaW50OEFycmF5KFdURk1vdmUodXBkYXRl
KSk7CisgICAgaWYgKCF1cGRhdGVBcnJheSkgeworICAgICAgICBjb21wbGV0aW9uKGZhbHNlLCBX
VEY6Om51bGxvcHQsIDAsIDApOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgUmVmUHRy
PFVpbnQ4QXJyYXk+IG5leHRNZXNzYWdlOworICAgIHVuc2lnbmVkIHNob3J0IGVycm9yQ29kZSB7
IDAgfTsKKyAgICB1aW50MzJfdCBzeXN0ZW1Db2RlIHsgMCB9OworCisgICAgYm9vbCBzdWNjZWVk
ZWQgPSBtX3Nlc3Npb24tPnVwZGF0ZSh1cGRhdGVBcnJheS5nZXQoKSwgbmV4dE1lc3NhZ2UsIGVy
cm9yQ29kZSwgc3lzdGVtQ29kZSk7CisKKyAgICBjb21wbGV0aW9uKHN1Y2NlZWRlZCwgY29udmVy
dFRvT3B0aW9uYWxEYXRhUmVmZXJlbmNlKG5leHRNZXNzYWdlKSwgZXJyb3JDb2RlLCBzeXN0ZW1D
b2RlKTsKK30KKworUmVmUHRyPEFycmF5QnVmZmVyPiBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJv
eHk6OmdldENhY2hlZEtleUZvcktleUlkKGNvbnN0IFN0cmluZyYga2V5SWQpCit7CisgICAgcmV0
dXJuIG1fc2Vzc2lvbi0+Y2FjaGVkS2V5Rm9yS2V5SUQoa2V5SWQpOworfQorCit2b2lkIFJlbW90
ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6Y2FjaGVkS2V5Rm9yS2V5SUQoU3RyaW5nIGtleUlkLCBD
YWNoZWRLZXlGb3JLZXlJRENhbGxiYWNrJiYgY29tcGxldGlvbikKK3sKKyAgICBjb21wbGV0aW9u
KGNvbnZlcnRUb09wdGlvbmFsRGF0YVJlZmVyZW5jZShnZXRDYWNoZWRLZXlGb3JLZXlJZChrZXlJ
ZCkpKTsKK30KKwordm9pZCBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OnNlbmRNZXNzYWdl
KFVpbnQ4QXJyYXkqIG1lc3NhZ2UsIFN0cmluZyBkZXN0aW5hdGlvblVSTCkKK3sKKyAgICBpZiAo
IW1fZmFjdG9yeSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9mYWN0b3J5LT5ncHVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZUxlZ2Fj
eUNETVNlc3Npb246OlNlbmRNZXNzYWdlKGNvbnZlcnRUb09wdGlvbmFsRGF0YVJlZmVyZW5jZSht
ZXNzYWdlKSwgZGVzdGluYXRpb25VUkwpLCBtX2lkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90
ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6c2VuZEVycm9yKE1lZGlhS2V5RXJyb3JDb2RlIGVycm9y
Q29kZSwgdWludDMyX3Qgc3lzdGVtQ29kZSkKK3sKKyAgICBpZiAobV9mYWN0b3J5KQorICAgICAg
ICBtX2ZhY3RvcnktPmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKS5jb25uZWN0aW9uKCkuc2Vu
ZChNZXNzYWdlczo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbjo6U2VuZEVycm9yKGVycm9yQ29kZSwg
c3lzdGVtQ29kZSksIG1faWRlbnRpZmllcik7Cit9CisKK1N0cmluZyBSZW1vdGVMZWdhY3lDRE1T
ZXNzaW9uUHJveHk6Om1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdAoreworICAgIGlm
IChtX2ZhY3RvcnkpCisgICAgICAgIHJldHVybiBtX2ZhY3RvcnktPmdwdUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MoKS5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCk7CisgICAgcmV0dXJuIGVtcHR5
U3RyaW5nKCk7Cit9CisKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5hOTNlYzgyMThkNTA3Y2U0ZmY5ZDA5NGRiNGIwMmYyNjdjMzcxMWYyCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNE
TVNlc3Npb25Qcm94eS5oCkBAIC0wLDAgKzEsOTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIlJlbW90ZUxlZ2Fj
eUNETUZhY3RvcnlQcm94eS5oIgorI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVu
dGlmaWVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9MZWdhY3lDRE1TZXNzaW9uLmg+CisjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CisKKyNpZiBFTkFC
TEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQorCituYW1l
c3BhY2UgV2ViQ29yZSB7CitjbGFzcyBMZWdhY3lDRE07CitjbGFzcyBMZWdhY3lDRE1TZXNzaW9u
OworY2xhc3MgU2hhcmVkQnVmZmVyOworfQorCituYW1lc3BhY2UgSVBDIHsKK2NsYXNzIFNoYXJl
ZEJ1ZmZlckRhdGFSZWZlcmVuY2U7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBS
ZW1vdGVMZWdhY3lDRE1Qcm94eTsKK2NsYXNzIFJlbW90ZU1lZGlhUGxheWVyUHJveHk7CisKK2Ns
YXNzIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eQorICAgIDogcHJpdmF0ZSBJUEM6Ok1lc3Nh
Z2VSZWNlaXZlcgorICAgICwgcHVibGljIFdlYkNvcmU6OkxlZ2FjeUNETVNlc3Npb25DbGllbnQK
KyAgICAsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk+
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxlZ2FjeUNETVNl
c3Npb25Qcm94eT4gY3JlYXRlKFdlYWtQdHI8UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5PiYm
LCBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllciwgV2ViQ29yZTo6TGVnYWN5Q0RNJik7
CisgICAgflJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eSgpOworCisgICAgUmVtb3RlTGVnYWN5
Q0RNRmFjdG9yeVByb3h5KiBmYWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9mYWN0b3J5LmdldCgp
OyB9CisgICAgV2ViQ29yZTo6TGVnYWN5Q0RNU2Vzc2lvbiogc2Vzc2lvbigpIGNvbnN0IHsgcmV0
dXJuIG1fc2Vzc2lvbi5nZXQoKTsgfQorCisgICAgdm9pZCBzZXRQbGF5ZXIoV2Vha1B0cjxSZW1v
dGVNZWRpYVBsYXllclByb3h5PiBwbGF5ZXIpIHsgbV9wbGF5ZXIgPSBXVEZNb3ZlKHBsYXllcik7
IH0KKworICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gZ2V0Q2FjaGVkS2V5Rm9yS2V5SWQoY29uc3Qg
U3RyaW5nJik7CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIFJlbW90ZUxlZ2FjeUNETUZh
Y3RvcnlQcm94eTsKKyAgICBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkoV2Vha1B0cjxSZW1v
dGVMZWdhY3lDRE1GYWN0b3J5UHJveHk+JiYsIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlm
aWVyLCBXZWJDb3JlOjpMZWdhY3lDRE0mKTsKKworICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVy
CisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29k
ZXImKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIGZpbmFs
OworCisgICAgLy8gTGVnYWN5Q0RNU2Vzc2lvbkNsaWVudAorICAgIHZvaWQgc2VuZE1lc3NhZ2Uo
VWludDhBcnJheSosIFN0cmluZyBkZXN0aW5hdGlvblVSTCkgZmluYWw7CisgICAgdm9pZCBzZW5k
RXJyb3IoTWVkaWFLZXlFcnJvckNvZGUsIHVpbnQzMl90IHN5c3RlbUNvZGUpIGZpbmFsOworICAg
IFN0cmluZyBtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QgZmluYWw7CisKKyAgICAv
LyBNZXNzYWdlcworICAgIHVzaW5nIEdlbmVyYXRlS2V5Q2FsbGJhY2sgPSBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKE9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZT4mJiwgY29u
c3QgU3RyaW5nJiwgdW5zaWduZWQgc2hvcnQsIHVpbnQzMl90KT47CisgICAgdm9pZCBnZW5lcmF0
ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgSVBDOjpTaGFyZWRCdWZmZXJEYXRh
UmVmZXJlbmNlJiYgaW5pdERhdGEsIEdlbmVyYXRlS2V5Q2FsbGJhY2smJik7CisgICAgdm9pZCBy
ZWxlYXNlS2V5cygpOworICAgIHVzaW5nIFVwZGF0ZUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sLCBPcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U+JiYs
IHVuc2lnbmVkIHNob3J0LCB1aW50MzJfdCk+OworICAgIHZvaWQgdXBkYXRlKElQQzo6U2hhcmVk
QnVmZmVyRGF0YVJlZmVyZW5jZSYmIHVwZGF0ZSwgVXBkYXRlQ2FsbGJhY2smJik7CisgICAgdXNp
bmcgQ2FjaGVkS2V5Rm9yS2V5SURDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0
aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlPiYmKT47CisgICAgdm9pZCBjYWNo
ZWRLZXlGb3JLZXlJRChTdHJpbmcga2V5SWQsIENhY2hlZEtleUZvcktleUlEQ2FsbGJhY2smJik7
CisKKyAgICBXZWFrUHRyPFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eT4gbV9mYWN0b3J5Owor
ICAgIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyIG1faWRlbnRpZmllcjsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6TGVnYWN5Q0RNU2Vzc2lvbj4gbV9zZXNzaW9uOworICAg
IFdlYWtQdHI8UmVtb3RlTWVkaWFQbGF5ZXJQcm94eT4gbV9wbGF5ZXI7Cit9OworCit9CisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUxl
Z2FjeUNETVNlc3Npb25Qcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkubWVzc2FnZXMuaW4KbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMTQ5NjJjZTkxZGY1NTk1ZmM3YWNlMmMwNTA3N2IwNTFlYTBkZTM3MAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNz
aW9uUHJveHkubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwzMyBAQAorIyBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisj
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKExF
R0FDWV9FTkNSWVBURURfTUVESUEpCisKK21lc3NhZ2VzIC0+IFJlbW90ZUxlZ2FjeUNETVNlc3Np
b25Qcm94eSBOb3RSZWZDb3VudGVkIHsKKyAgICBHZW5lcmF0ZUtleVJlcXVlc3QoU3RyaW5nIG1p
bWVUeXBlLCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgaW5pdERhdGEpIC0+IChPcHRp
b25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U+IG5leHRNZXNzYWdlLCBTdHJpbmcg
ZGVzdGluYXRpb25VUkwsIHVuc2lnbmVkIHNob3J0IGVycm9yQ29kZSwgdWludDMyX3Qgc3lzdGVt
Q29kZSkgU3luY2hyb25vdXMKKyAgICBSZWxlYXNlS2V5cygpCisgICAgVXBkYXRlKElQQzo6U2hh
cmVkQnVmZmVyRGF0YVJlZmVyZW5jZSB1cGRhdGUpIC0+IChib29sIHN1Y2NlZWRlZCwgT3B0aW9u
YWw8SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlPiBuZXh0TWVzc2FnZSwgdW5zaWduZWQg
c2hvcnQgZXJyb3JDb2RlLCB1aW50MzJfdCBzeXN0ZW1Db2RlKSBTeW5jaHJvbm91cworICAgIENh
Y2hlZEtleUZvcktleUlEKFN0cmluZyBrZXlJZCkgLT4gKE9wdGlvbmFsPElQQzo6U2hhcmVkQnVm
ZmVyRGF0YVJlZmVyZW5jZT4ga2V5KSBTeW5jaHJvbm91cworfQorCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyUHJveHkuY3BwCmluZGV4IGJjNGRiZTM5YzRlYWEzYzE4NjU4MjFjZDVkYmU1
MTMxZmRkYmY0NzAuLmViMTUwY2IzMGFlMTg3YWU5NDk0ODZiYjRhMmFlMWMxNWNjNDVmNWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcApAQCAtMjA0LDYgKzIwNCwxNCBAQCB2b2lk
IFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5OjpkaWRSZWNlaXZlU3luY1BsYXllck1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJgogICAgICAgICBwbGF5ZXItPmRpZFJlY2VpdmVTeW5jTWVzc2Fn
ZShjb25uZWN0aW9uLCBkZWNvZGVyLCBlbmNvZGVyKTsKIH0KIAorUmVtb3RlTWVkaWFQbGF5ZXJQ
cm94eSogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHk6OmdldFByb3h5KGNvbnN0IE1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXImIGlkKQoreworICAgIGF1dG8gcmVzdWx0cyA9
IG1fcHJveGllcy5maW5kKGlkKTsKKyAgICBpZiAocmVzdWx0cyAhPSBtX3Byb3hpZXMuZW5kKCkp
CisgICAgICAgIHJldHVybiByZXN1bHRzLT52YWx1ZS5nZXQoKTsKKyAgICByZXR1cm4gbnVsbHB0
cjsKK30KKwogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogY29uc3QgTG9nZ2VyJiBSZW1vdGVN
ZWRpYVBsYXllck1hbmFnZXJQcm94eTo6bG9nZ2VyKCkgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94
eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFu
YWdlclByb3h5LmgKaW5kZXggZTA3ZDZlNmE4MzVhZjRlY2ZjYWZkODY1OGQwNTJjNGNjNzUyMjNi
ZS4uNTFlNzFlNzc3Mzc4YjhkYWZiOWM3YzYyNzAyYjkxYTY3NWZhMWViZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlclBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxh
eWVyTWFuYWdlclByb3h5LmgKQEAgLTY4LDYgKzY4LDggQEAgcHVibGljOgogICAgIFdURkxvZ0No
YW5uZWwmIGxvZ0NoYW5uZWwoKSBjb25zdCBmaW5hbDsKICNlbmRpZgogCisgICAgUmVtb3RlTWVk
aWFQbGF5ZXJQcm94eSogZ2V0UHJveHkoY29uc3QgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRl
bnRpZmllciYpOworCiBwcml2YXRlOgogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAg
dm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBm
aW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVBsYXllclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVNZWRpYVBsYXllclByb3h5LmNwcAppbmRleCBjMWI0Mzk2YjAxYmNiOWQ0MGNkOWVmZDA4Mjhk
NjdmNjc0ZTI4MzkyLi43ODRkMjQwOWM4M2U5YTdmNjA4NmM3MDIyODFlMWQyOTVjOTM1YzRlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5
ZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1l
ZGlhUGxheWVyUHJveHkuY3BwCkBAIC0zMyw2ICszMyw4IEBACiAjaW5jbHVkZSAiTGF5ZXJIb3N0
aW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZU1lc3NhZ2Vz
LmgiCiAjaW5jbHVkZSAiUmVtb3RlQXVkaW9UcmFja1Byb3h5LmgiCisjaW5jbHVkZSAiUmVtb3Rl
TGVnYWN5Q0RNRmFjdG9yeVByb3h5LmgiCisjaW5jbHVkZSAiUmVtb3RlTGVnYWN5Q0RNU2Vzc2lv
blByb3h5LmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuaCIKICNp
bmNsdWRlICJSZW1vdGVNZWRpYVBsYXllclByb3h5Q29uZmlndXJhdGlvbi5oIgogI2luY2x1ZGUg
IlJlbW90ZU1lZGlhUGxheWVyU3RhdGUuaCIKQEAgLTUyMywxNSArNTI1LDE5IEBAIHZvaWQgUmVt
b3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJBY3RpdmVTb3VyY2VCdWZmZXJzQ2hhbmdl
ZCgpCiB9CiAKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKLVJlZlB0cjxBcnJh
eUJ1ZmZlcj4gUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJDYWNoZWRLZXlGb3JL
ZXlJZChjb25zdCBTdHJpbmcmKSBjb25zdAorUmVmUHRyPEFycmF5QnVmZmVyPiBSZW1vdGVNZWRp
YVBsYXllclByb3h5OjptZWRpYVBsYXllckNhY2hlZEtleUZvcktleUlkKGNvbnN0IFN0cmluZyYg
a2V5SWQpIGNvbnN0CiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBpZiAoYXV0byBjZG1T
ZXNzaW9uID0gbV9tYW5hZ2VyLmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKS5sZWdhY3lDZG1G
YWN0b3J5UHJveHkoKS5nZXRTZXNzaW9uKG1fbGVnYWN5U2Vzc2lvbikpCisgICAgICAgIHJldHVy
biBjZG1TZXNzaW9uLT5nZXRDYWNoZWRLZXlGb3JLZXlJZChrZXlJZCk7CiAgICAgcmV0dXJuIG51
bGxwdHI7CiB9CiAKLXZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJLZXlO
ZWVkZWQoVWludDhBcnJheSopCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxh
eWVyS2V5TmVlZGVkKFVpbnQ4QXJyYXkqIG1lc3NhZ2UpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICBJUEM6OkRhdGFSZWZlcmVuY2UgbWVzc2FnZVJlZmVyZW5jZTsKKyAgICBpZiAobWVz
c2FnZSkKKyAgICAgICAgbWVzc2FnZVJlZmVyZW5jZSA9IHsgbWVzc2FnZS0+ZGF0YSgpLCBtZXNz
YWdlLT5ieXRlTGVuZ3RoKCkgfTsKKyAgICBtX3dlYlByb2Nlc3NDb25uZWN0aW9uLT5zZW5kKE1l
c3NhZ2VzOjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Ok1lZGlhUGxheWVyS2V5TmVlZGVkKFdU
Rk1vdmUobWVzc2FnZVJlZmVyZW5jZSkpLCBtX2lkKTsKIH0KICNlbmRpZgogCkBAIC03MjMsNiAr
NzI5LDI4IEBAIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6c2VuZENhY2hlZFN0YXRlKCkK
IH0KIAogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQordm9pZCBSZW1vdGVNZWRp
YVBsYXllclByb3h5OjpzZXRMZWdhY3lDRE1TZXNzaW9uKFJlbW90ZUxlZ2FjeUNETVNlc3Npb25J
ZGVudGlmaWVyJiYgaW5zdGFuY2VJZCkKK3sKKyAgICBpZiAobV9sZWdhY3lTZXNzaW9uID09IGlu
c3RhbmNlSWQpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChtX2xlZ2FjeVNlc3Npb24pIHsK
KyAgICAgICAgaWYgKGF1dG8gY2RtU2Vzc2lvbiA9IG1fbWFuYWdlci5ncHVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzKCkubGVnYWN5Q2RtRmFjdG9yeVByb3h5KCkuZ2V0U2Vzc2lvbihtX2xlZ2FjeVNl
c3Npb24pKSB7CisgICAgICAgICAgICBtX3BsYXllci0+c2V0Q0RNU2Vzc2lvbihudWxscHRyKTsK
KyAgICAgICAgICAgIGNkbVNlc3Npb24tPnNldFBsYXllcihudWxscHRyKTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIG1fbGVnYWN5U2Vzc2lvbiA9IGluc3RhbmNlSWQ7CisKKyAgICBpZiAobV9s
ZWdhY3lTZXNzaW9uKSB7CisgICAgICAgIGlmIChhdXRvIGNkbVNlc3Npb24gPSBtX21hbmFnZXIu
Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpLmxlZ2FjeUNkbUZhY3RvcnlQcm94eSgpLmdldFNl
c3Npb24obV9sZWdhY3lTZXNzaW9uKSkgeworICAgICAgICAgICAgbV9wbGF5ZXItPnNldENETVNl
c3Npb24oY2RtU2Vzc2lvbi0+c2Vzc2lvbigpKTsKKyAgICAgICAgICAgIGNkbVNlc3Npb24tPnNl
dFBsYXllcihtYWtlV2Vha1B0cih0aGlzKSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKIHZvaWQg
UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6a2V5QWRkZWQoKQogewogICAgIG1fcGxheWVyLT5rZXlB
ZGRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZU1lZGlhUGxheWVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVNZWRpYVBsYXllclByb3h5LmgKaW5kZXggMTQzYmM1NTllZDk1MWMzZDcxNDY1NTk4YTA1ODM3
OTkxYmZkYjczZS4uODYwMTg1NGQ4Mjg2NmRiNTQwOTZmZmM3MTBjZTU2NWQxMTQwNWMyOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVy
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQ
bGF5ZXJQcm94eS5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgog
I2luY2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIuaCIKICNpbmNsdWRl
ICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRl
bnRpZmllci5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyQ29uZmlndXJhdGlvbi5oIgog
I2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyUHJveHlDb25maWd1cmF0aW9uLmgiCiAjaW5jbHVk
ZSAiUmVtb3RlTWVkaWFQbGF5ZXJTdGF0ZS5oIgpAQCAtMTQ0LDYgKzE0NSw3IEBAIHB1YmxpYzoK
ICNlbmRpZgogCiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCisgICAgdm9pZCBz
ZXRMZWdhY3lDRE1TZXNzaW9uKFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyJiYgaW5z
dGFuY2VJZCk7CiAgICAgdm9pZCBrZXlBZGRlZCgpOwogI2VuZGlmCiAKQEAgLTE3NSw2ICsxNzcs
OCBAQCBwdWJsaWM6CiAgICAgUmVmPFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZT4gcmVx
dWVzdFJlc291cmNlKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpQbGF0Zm9y
bU1lZGlhUmVzb3VyY2VMb2FkZXI6OkxvYWRPcHRpb25zKTsKICAgICB2b2lkIHJlbW92ZVJlc291
cmNlKFJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyKTsKIAorICAgIFJlZlB0cjxXZWJDb3Jl
OjpNZWRpYVBsYXllcj4gbWVkaWFQbGF5ZXIoKSB7IHJldHVybiBtX3BsYXllcjsgfQorCiBwcml2
YXRlOgogICAgIC8vIE1lZGlhUGxheWVyQ2xpZW50CiAgICAgdm9pZCBtZWRpYVBsYXllck5ldHdv
cmtTdGF0ZUNoYW5nZWQoKSBmaW5hbDsKQEAgLTI5Myw2ICsyOTcsNyBAQCBwcml2YXRlOgogCiAj
aWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpICYmIEVOQUJMRShFTkNSWVBURURfTUVE
SUEpCiAgICAgYm9vbCBtX3Nob3VsZENvbnRpbnVlQWZ0ZXJLZXlOZWVkZWQgeyBmYWxzZSB9Owor
ICAgIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyIG1fbGVnYWN5U2Vzc2lvbjsKICNl
bmRpZgogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Lm1l
c3NhZ2VzLmluCmluZGV4IDI3OTUxMjZkMjliYmUxYjg4OWIyN2YwOGQ1NzBjNjJmNGUwNGUwNTEu
LmNlYjY4YWViMDc3ZTA4MTFhM2EyYjJkMmEwNGRjOTM0ZjBmNWE4NjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Lm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBs
YXllclByb3h5Lm1lc3NhZ2VzLmluCkBAIC04MCw3ICs4MCw3IEBAIG1lc3NhZ2VzIC0+IFJlbW90
ZU1lZGlhUGxheWVyUHJveHkgTm90UmVmQ291bnRlZCB7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShM
RUdBQ1lfRU5DUllQVEVEX01FRElBKQotICAgICMgU2V0Q0RNU2Vzc2lvbgorICAgIFNldExlZ2Fj
eUNETVNlc3Npb24oV2ViS2l0OjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllciBpbnN0
YW5jZUlkKQogICAgIEtleUFkZGVkKCkKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVGV4dFRyYWNrUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVRleHRUcmFja1Byb3h5LmNwcAppbmRleCBhZjY0
YzgyYjkwMjNhZDIzNDE0MjNjZjg1ZGI0OTVhNzZjNGM2YjRhLi42MGZhNmM4MTFiZmQwNzYyYmJl
Y2QxZTE4MGNjMGNhNTIyNmIyNDg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlVGV4dFRyYWNrUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVUZXh0VHJhY2tQcm94eS5jcHAKQEAgLTI5LDE1ICsyOSwxOSBA
QAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5o
IgogI2luY2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZU1lc3NhZ2VzLmgiCiAjaW5jbHVk
ZSAiUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oIgogI2luY2x1ZGUgIlRleHRUcmFja1ByaXZhdGVS
ZW1vdGVDb25maWd1cmF0aW9uLmgiCiAjaW5jbHVkZSAiVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZU1l
c3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSA8
V2ViQ29yZS9JU09WVFRDdWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKwogUmVt
b3RlVGV4dFRyYWNrUHJveHk6OlJlbW90ZVRleHRUcmFja1Byb3h5KFJlbW90ZU1lZGlhUGxheWVy
UHJveHkmIHBsYXllciwgVHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZCwgUmVmPElQQzo6
Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uLCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlJiB0cmFja1By
aXZhdGUpCiAgICAgOiBtX3BsYXllcihwbGF5ZXIpCiAgICAgLCBtX2lkZW50aWZpZXIoaWQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVGV4dFRyYWNr
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVUZXh0VHJhY2tQ
cm94eS5oCmluZGV4IDRmNDlmM2EzODdkMGVhMTBmMTYxZTVhZDc5ZjhkNzg1NTAzZDE3MmEuLjk3
MWU3ZjY0ODliMzNhNTM4OGJlY2Y5MTg5YWI5ZTc5Y2E3MzIyZTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVUZXh0VHJhY2tQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVUZXh0VHJhY2tQcm94eS5oCkBAIC0z
MiwxNSArMzIsMjIgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0luYmFuZFRleHRUcmFja1ByaXZhdGUu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1RyYWNrQmFzZS5oPgogCituYW1lc3BhY2UgSVBDIHsKKwor
Y2xhc3MgQ29ubmVjdGlvbjsKKworfQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgUmVt
b3RlTWVkaWFQbGF5ZXJQcm94eTsKIHN0cnVjdCBUZXh0VHJhY2tQcml2YXRlUmVtb3RlQ29uZmln
dXJhdGlvbjsKIAogY2xhc3MgUmVtb3RlVGV4dFRyYWNrUHJveHkgZmluYWwKICAgICA6IHB1Ymxp
YyBUaHJlYWRTYWZlUmVmQ291bnRlZDxSZW1vdGVUZXh0VHJhY2tQcm94eSwgV1RGOjpEZXN0cnVj
dGlvblRocmVhZDo6TWFpbj4KICAgICAsIHByaXZhdGUgV2ViQ29yZTo6SW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZUNsaWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxSZW1vdGVUZXh0VHJhY2tQ
cm94eT4gY3JlYXRlKFJlbW90ZU1lZGlhUGxheWVyUHJveHkmIHBsYXllciwgVHJhY2tQcml2YXRl
UmVtb3RlSWRlbnRpZmllciBpZCwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uLCBJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlJiB0cmFja1ByaXZhdGUpCisgICAgc3RhdGljIFJlZjxSZW1v
dGVUZXh0VHJhY2tQcm94eT4gY3JlYXRlKFJlbW90ZU1lZGlhUGxheWVyUHJveHkmIHBsYXllciwg
VHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpZCwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBj
b25uZWN0aW9uLCBXZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2tQcml2YXRlJiB0cmFja1ByaXZhdGUp
CiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVUZXh0VHJhY2tQcm94
eShwbGF5ZXIsIGlkLCBXVEZNb3ZlKGNvbm5lY3Rpb24pLCB0cmFja1ByaXZhdGUpKTsKICAgICB9
CkBAIC01MCwxNSArNTcsMTUgQEAgcHVibGljOgogICAgIHZvaWQgc2V0TW9kZShXZWJDb3JlOjpJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlOjpNb2RlIG1vZGUpIHsgbV90cmFja1ByaXZhdGUtPnNldE1v
ZGUobW9kZSk7IH0KIAogcHJpdmF0ZToKLSAgICBSZW1vdGVUZXh0VHJhY2tQcm94eShSZW1vdGVN
ZWRpYVBsYXllclByb3h5JiwgVHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciwgUmVmPElQQzo6
Q29ubmVjdGlvbj4mJiwgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSYpOworICAgIFJlbW90ZVRleHRU
cmFja1Byb3h5KFJlbW90ZU1lZGlhUGxheWVyUHJveHkmLCBUcmFja1ByaXZhdGVSZW1vdGVJZGVu
dGlmaWVyLCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmLCBXZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2tQ
cml2YXRlJik7CiAKICAgICAvLyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xpZW50CiAgICAgdmly
dHVhbCB2b2lkIGFkZERhdGFDdWUoY29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFU
aW1lJiBlbmQsIGNvbnN0IHZvaWQqLCB1bnNpZ25lZCk7CiAKICNpZiBFTkFCTEUoREFUQUNVRV9W
QUxVRSkKLSAgICB2aXJ0dWFsIHZvaWQgYWRkRGF0YUN1ZShjb25zdCBNZWRpYVRpbWUmIHN0YXJ0
LCBjb25zdCBNZWRpYVRpbWUmIGVuZCwgUmVmPFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWU+JiYs
IGNvbnN0IFN0cmluZyYpOwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVEYXRhQ3VlKGNvbnN0IE1l
ZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBTZXJpYWxpemVkUGxhdGZvcm1E
YXRhQ3VlJik7Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZURhdGFDdWUoY29uc3QgTWVkaWFUaW1l
JiBzdGFydCwgY29uc3QgTWVkaWFUaW1lJiBlbmQsIFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWUm
KTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkRGF0YUN1ZShjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBj
b25zdCBNZWRpYVRpbWUmIGVuZCwgUmVmPFdlYkNvcmU6OlNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFD
dWU+JiYsIGNvbnN0IFN0cmluZyYpOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVEYXRhQ3VlKGNv
bnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBXZWJDb3JlOjpTZXJp
YWxpemVkUGxhdGZvcm1EYXRhQ3VlJik7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZURhdGFDdWUo
Y29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1lJiBlbmQsIFdlYkNvcmU6OlNl
cmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWUmKTsKICNlbmRpZgogCiAgICAgdmlydHVhbCB2b2lkIGFk
ZEdlbmVyaWNDdWUoV2ViQ29yZTo6SW5iYW5kR2VuZXJpY0N1ZSYpOwpAQCAtNjcsNyArNzQsNyBA
QCBwcml2YXRlOgogCiAgICAgdmlydHVhbCB2b2lkIHBhcnNlV2ViVlRURmlsZUhlYWRlcihTdHJp
bmcmJik7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlV2ViVlRUQ3VlRGF0YShjb25zdCBjaGFyKiBk
YXRhLCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHZpcnR1YWwgdm9pZCBwYXJzZVdlYlZUVEN1ZURh
dGEoSVNPV2ViVlRUQ3VlJiYpOworICAgIHZpcnR1YWwgdm9pZCBwYXJzZVdlYlZUVEN1ZURhdGEo
V2ViQ29yZTo6SVNPV2ViVlRUQ3VlJiYpOwogCiAgICAgLy8gVHJhY2tQcml2YXRlQmFzZUNsaWVu
dAogICAgIHZvaWQgaWRDaGFuZ2VkKGNvbnN0IEF0b21TdHJpbmcmKSBmaW5hbDsKQEAgLTgxLDcg
Kzg4LDcgQEAgcHJpdmF0ZToKICAgICBSZW1vdGVNZWRpYVBsYXllclByb3h5JiBtX3BsYXllcjsK
ICAgICBUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKICAgICBSZWY8
SVBDOjpDb25uZWN0aW9uPiBtX3dlYlByb2Nlc3NDb25uZWN0aW9uOwotICAgIFJlZjxJbmJhbmRU
ZXh0VHJhY2tQcml2YXRlPiBtX3RyYWNrUHJpdmF0ZTsKKyAgICBSZWY8V2ViQ29yZTo6SW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZT4gbV90cmFja1ByaXZhdGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMu
cHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IDRiYTE0
ZGJhZjI0YjI0MWU1OWRiMGE3ZjIwODBkMDJkMDI3YzNiMDQuLjY2NWY1YTIyMTA4ZTFiNjY5MWEw
MzU2OTdjOTliMTQ2ZGUwMzMwYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93
ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNz
YWdlcy5weQpAQCAtMjM4LDYgKzIzOCw4IEBAIGRlZiB0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3
YXJkX2RlY2xhcmVkKCk6CiAgICAgICAgICdXZWJLaXQ6OlJlbW90ZUNETUlkZW50aWZpZXInLAog
ICAgICAgICAnV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZUlkZW50aWZpZXInLAogICAgICAgICAn
V2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25JZGVudGlmaWVyJywKKyAgICAgICAgJ1dl
YktpdDo6UmVtb3RlTGVnYWN5Q0RNSWRlbnRpZmllcicsCisgICAgICAgICdXZWJLaXQ6OlJlbW90
ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyJywKICAgICAgICAgJ1dlYktpdDo6UmVtb3RlTWVk
aWFSZXNvdXJjZUlkZW50aWZpZXInLAogICAgICAgICAnV2ViS2l0OjpSZW5kZXJpbmdCYWNrZW5k
SWRlbnRpZmllcicsCiAgICAgICAgICdXZWJLaXQ6OlJUQ0RlY29kZXJJZGVudGlmaWVyJywKQEAg
LTU4NCw2ICs1ODYsNyBAQCBkZWYgaGVhZGVyc19mb3JfdHlwZSh0eXBlKToKICAgICAgICAgJ1dl
YkNvcmU6OklucHV0TW9kZSc6IFsnPFdlYkNvcmUvSW5wdXRNb2RlLmg+J10sCiAgICAgICAgICdX
ZWJDb3JlOjpLZXlmcmFtZVZhbHVlTGlzdCc6IFsnPFdlYkNvcmUvR3JhcGhpY3NMYXllci5oPidd
LAogICAgICAgICAnV2ViQ29yZTo6S2V5cHJlc3NDb21tYW5kJzogWyc8V2ViQ29yZS9LZXlib2Fy
ZEV2ZW50Lmg+J10sCisgICAgICAgICdXZWJDb3JlOjpMZWdhY3lDRE1TZXNzaW9uQ2xpZW50OjpN
ZWRpYUtleUVycm9yQ29kZSc6IFsnPFdlYkNvcmUvTGVnYWN5Q0RNU2Vzc2lvbi5oPiddLAogICAg
ICAgICAnV2ViQ29yZTo6TG9ja0JhY2tGb3J3YXJkTGlzdCc6IFsnPFdlYkNvcmUvRnJhbWVMb2Fk
ZXJUeXBlcy5oPiddLAogICAgICAgICAnV2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFubmVsUHJvdmlk
ZXI6Okhhc0FjdGl2aXR5JzogWyc8V2ViQ29yZS9NZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5o
PiddLAogICAgICAgICAnV2ViQ29yZTo6TmV0d29ya1RyYW5zYWN0aW9uSW5mb3JtYXRpb24nOiBb
JzxXZWJDb3JlL05ldHdvcmtMb2FkSW5mb3JtYXRpb24uaD4nXSwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IDFj
OTI0NWUwYjlmNGJiYzJiODBkN2UzY2MwNGVmZDIwM2Q4ZTA0Y2YuLjZkZGRkZjUyM2ZkMjc0MWY2
Y2Y2MzMwOWE3YTgyOWRhMjEzMjdhOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNl
cy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtMzMsNiArMzMsOSBAQCBH
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUZhY3RvcnlQcm94eS5jcHAKIEdQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5jcHAKIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uUHJveHkuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5
LmNwcAorR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkuY3BwCitH
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUxlZ2FjeUNETVByb3h5LmNwcAorR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuY3BwCiBHUFVQcm9jZXNzL21lZGlhL1JlbW90
ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRp
YVBsYXllclByb3h5LmNwcAogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmNw
cApAQCAtNTU1LDYgKzU1OCw5IEBAIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5jcHAK
IFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUZhY3RvcnkuY3BwCiBXZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5jcHAKIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUNETUluc3RhbmNlU2Vzc2lvbi5jcHAKK1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2Fj
eUNETS5jcHAKK1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnkuY3Bw
CitXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmNwcAogV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmNwcAogV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNSU1FVHlwZUNhY2hlLmNwcCBAbm8tdW5pZnkKIFdl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VQcm94eS5jcHAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDBlMzI2ODQ0
ZDhkMDVkZDcwNWQwNzBmZTQyYjI0MWZmMjdkMDVkNjIuLmFmNDgzN2UxZTQ2OGNkYjVhZTUwMGJl
NDVlYTkxOGQ2ZWJhMzE4ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtMTc0Nyw2ICsxNzQ3LDEwIEBACiAJCUNEQkI0OUZEMjQwRDlB
NzIwMDE3QzI5MiAvKiBSZW1vdGVBdWRpb1Nlc3Npb25Db25maWd1cmF0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREJCNDlGQzI0MEQ5QTcyMDAx
N0MyOTIgLyogUmVtb3RlQXVkaW9TZXNzaW9uQ29uZmlndXJhdGlvbi5oICovOyB9OwogCQlDREMy
ODMxRDIwMUJENzlEMDBFNkU3NDUgLyogV0tGdWxsc2NyZWVuU3RhY2tWaWV3LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREMyODMxQjIwMUJENzlEMDBF
NkU3NDUgLyogV0tGdWxsc2NyZWVuU3RhY2tWaWV3LmggKi87IH07CiAJCUNEQ0E4NUM5MTMyQUJB
NEUwMEU5NjFERiAvKiBXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRENBODVDNzEzMkFCQTRFMDBFOTYx
REYgLyogV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5oICovOyB9OworCQlDREU1NTUzMjI0
MDZFQjhDMDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5TWVzc2FnZVJlY2Vp
dmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENE
RTU1NTI5MjQwNkI4OTYwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHlNZXNz
YWdlUmVjZWl2ZXIuY3BwICovOyB9OworCQlDREU1NTUzMzI0MDZFQjhDMDA4QTNEREIgLyogUmVt
b3RlTGVnYWN5Q0RNUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFNTU1MkEyNDA2Qjg5NjAwOEEzRERCIC8qIFJl
bW90ZUxlZ2FjeUNETVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKKwkJQ0RFNTU1MzQy
NDA2RUI4QzAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25NZXNzYWdlUmVjZWl2ZXIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFNTU1
MkUyNDA2Qjg5NzAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25NZXNzYWdlUmVjZWl2
ZXIuY3BwICovOyB9OworCQlDREU1NTUzNTI0MDZFQjhDMDA4QTNEREIgLyogUmVtb3RlTGVnYWN5
Q0RNU2Vzc2lvblByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERTU1NTMxMjQwNkI4OTcwMDhBM0REQiAvKiBSZW1v
dGVMZWdhY3lDRE1TZXNzaW9uUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwogCQlDRTEx
QUQ1MjFDQkM0ODJGMDA2ODFFRTUgLyogQ29kZVNpZ25pbmcuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMTFBRDUxMUNCQzQ4MkYwMDY4MUVFNSAvKiBD
b2RlU2lnbmluZy5oICovOyB9OwogCQlDRTFBMEJEMjFBNDhFNkM2MDA1NEVGNzQgLyogQXNzZXJ0
aW9uU2VydmljZXNTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENFMUEwQkNDMUE0OEU2QzYwMDU0RUY3NCAvKiBBc3NlcnRpb25TZXJ2aWNlc1NQSS5o
ICovOyB9OwogCQlDRTFBMEJENjFBNDhFNkM2MDA1NEVGNzQgLyogVENDU1BJLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTFBMEJEMDFBNDhFNkM2MDA1
NEVGNzQgLyogVENDU1BJLmggKi87IH07CkBAIC01MTQwLDYgKzUxNDQsMzYgQEAKIAkJQ0RENTM1
NzcyNDBEREUwNzAwRjdCOEM0IC8qIFJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5TWVzc2FnZXNSZXBs
aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5TWVzc2FnZXNSZXBs
aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNERDUzNTc4MjQwRERFMDgwMEY3
QjhDNCAvKiBSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFnZXJNZXNzYWdlcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBSZW1vdGVBdWRpb1Nlc3Npb25Qcm94eU1hbmFnZXJNZXNzYWdlcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlDREQ1MzU3OTI0MERERTA4MDBGN0I4QzQgLyogUmVtb3Rl
QXVkaW9TZXNzaW9uUHJveHlNYW5hZ2VyTWVzc2FnZXNSZXBsaWVzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJlbW90ZUF1ZGlvU2Vzc2lvblByb3h5TWFuYWdlck1lc3NhZ2VzUmVwbGllcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlDREU1NTRFMjI0MDU4MTE0MDA4QTNEREIgLyogUmVtb3Rl
TGVnYWN5Q0RNRmFjdG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNERTU1NEUzMjQwNTgxMTQwMDhBM0RE
QiAvKiBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90
ZUxlZ2FjeUNETUZhY3RvcnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREU1
NTRFQTI0MDU4MTgzMDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJlbW90ZUxlZ2FjeUNETS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREU1NTRF
QjI0MDU4MTgzMDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFJlbW90ZUxlZ2FjeUNETS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNE
RTU1NEVFMjQwNTgxQTMwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJlbW90ZUxlZ2FjeUNETVNlc3Npb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQ0RFNTU0RUYyNDA1ODFBMzAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETVNlc3Np
b24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNERTU1NEY4MjQwNTgyMDgwMDhBM0REQiAvKiBS
ZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlTGVnYWN5
Q0RNU2Vzc2lvblByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNERTU1NEY5
MjQwNTgyMDgwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RFNTU1MDAyNDA1ODI4NDAwOEEzRERCIC8qIFJlbW90ZUxl
Z2FjeUNETVNlc3Npb25Qcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBS
ZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUNERTU1NTA1MjQwNTgzMjQwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1T
ZXNzaW9uLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlbW90ZUxlZ2FjeUNETVNlc3Npb24ubWVzc2FnZXMu
aW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNERTU1NTA3MjQwNTg4QjgwMDhBM0RE
QiAvKiBSZW1vdGVMZWdhY3lDRE1JZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUxl
Z2FjeUNETUlkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RFNTU1
MDkyNDA1ODhDQjAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNERTU1NTFCMjQwNUEzQjcwMDhBM0REQiAvKiBSZW1v
dGVMZWdhY3lDRE1GYWN0b3J5UHJveHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVtb3RlTGVnYWN5Q0RN
RmFjdG9yeVByb3h5Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlD
REU1NTUxQzI0MDVBM0I3MDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlDREU1NTUxRDI0MDVBM0I3MDA4QTNEREIgLyogUmVtb3RlTGVn
YWN5Q0RNRmFjdG9yeVByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUxlZ2FjeUNE
TUZhY3RvcnlQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNERTU1NTFF
MjQwNUEzREYwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1Qcm94eS5tZXNzYWdlcy5pbiAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBSZW1vdGVMZWdhY3lDRE1Qcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQ0RFNTU1MUYyNDA1QTNERjAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETVByb3h5
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUxlZ2FjeUNETVByb3h5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUNERTU1NTIwMjQwNUEzREYwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lD
RE1Qcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVMZWdhY3lDRE1Qcm94eS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNERTU1NTI2MjQwNkI4OTUwMDhBM0REQiAv
KiBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHlNZXNzYWdlc1JlcGxpZXMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5TWVzc2FnZXNSZXBsaWVzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNERTU1NTI3MjQwNkI4OTUwMDhBM0REQiAvKiBSZW1v
dGVMZWdhY3lDRE1TZXNzaW9uTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlTGVnYWN5
Q0RNU2Vzc2lvbk1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNERTU1
NTI4MjQwNkI4OTYwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1Qcm94eU1lc3NhZ2VzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFJlbW90ZUxlZ2FjeUNETVByb3h5TWVzc2FnZXMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQ0RFNTU1MjkyNDA2Qjg5NjAwOEEzRERCIC8qIFJlbW90ZUxlZ2Fj
eUNETUZhY3RvcnlQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBS
ZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlDREU1NTUyQTI0MDZCODk2MDA4QTNEREIgLyogUmVtb3RlTGVn
YWN5Q0RNUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3Rl
TGVnYWN5Q0RNUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlDREU1NTUyQjI0MDZCODk2MDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNUHJveHlN
ZXNzYWdlc1JlcGxpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlTGVnYWN5Q0RNUHJveHlNZXNz
YWdlc1JlcGxpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RFNTU1MkMyNDA2
Qjg5NjAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eU1lc3NhZ2VzUmVwbGll
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHlNZXNzYWdlc1Jl
cGxpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RFNTU1MkQyNDA2Qjg5NzAw
OEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eU1lc3NhZ2VzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eU1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUNERTU1NTJFMjQwNkI4OTcwMDhBM0REQiAvKiBSZW1vdGVMZWdh
Y3lDRE1TZXNzaW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90
ZUxlZ2FjeUNETVNlc3Npb25NZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlDREU1NTUyRjI0MDZCODk3MDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNU2Vz
c2lvblByb3h5TWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlTGVnYWN5Q0RNU2Vzc2lv
blByb3h5TWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RFNTU1MzAy
NDA2Qjg5NzAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25NZXNzYWdlc1JlcGxpZXMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbk1lc3NhZ2VzUmVwbGllcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREU1NTUzMTI0MDZCODk3MDA4QTNEREIg
LyogUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eU1lc3NhZ2VSZWNlaXZlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFMTFBRDRGMUNCQzQ3RjgwMDY4MUVF
NSAvKiBDb2RlU2lnbmluZy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IENvZGVTaWduaW5nLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTExQUQ1
MTFDQkM0ODJGMDA2ODFFRTUgLyogQ29kZVNpZ25pbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQ29kZVNpZ25pbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
Q0UxQTBCQ0MxQTQ4RTZDNjAwNTRFRjc0IC8qIEFzc2VydGlvblNlcnZpY2VzU1BJLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFzc2VydGlvblNlcnZpY2VzU1BJLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01NDQyLDYgKzU0NzYsMTUgQEAKIAkJCQlDREFDMjBC
RDIzRkMyRjc0MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmggKi8sCiAJCQkJ
Q0Q0NjYxN0YyNDAxMDQ1ODAwNDdDQTM1IC8qIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5tZXNz
YWdlcy5pbiAqLywKIAkJCQlDREFDMjBCQzIzRkMyRjc0MDAyMURFRTMgLyogUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uSWRlbnRpZmllci5oICovLAorCQkJCUNERTU1NEVCMjQwNTgxODMwMDhBM0RE
QiAvKiBSZW1vdGVMZWdhY3lDRE0uY3BwICovLAorCQkJCUNERTU1NEVBMjQwNTgxODMwMDhBM0RE
QiAvKiBSZW1vdGVMZWdhY3lDRE0uaCAqLywKKwkJCQlDREU1NTRFMzI0MDU4MTE0MDA4QTNEREIg
LyogUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeS5jcHAgKi8sCisJCQkJQ0RFNTU0RTIyNDA1ODExNDAw
OEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnkuaCAqLywKKwkJCQlDREU1NTUwNzI0MDU4
OEI4MDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNSWRlbnRpZmllci5oICovLAorCQkJCUNERTU1
NEVGMjQwNTgxQTMwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmNwcCAqLywKKwkJ
CQlDREU1NTRFRTI0MDU4MUEzMDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5oICov
LAorCQkJCUNERTU1NTA1MjQwNTgzMjQwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1TZXNzaW9u
Lm1lc3NhZ2VzLmluICovLAorCQkJCUNERTU1NTA5MjQwNTg4Q0IwMDhBM0REQiAvKiBSZW1vdGVM
ZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllci5oICovLAogCQkJCTA3QjkzRkY1MjNBRjBDQjgwMDM2
RjhFQSAvKiBSZW1vdGVNZWRpYVBsYXllckNvbmZpZ3VyYXRpb24uaCAqLywKIAkJCQkwNzkyMzEz
MDIzOUIzQjBDMDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmNwcCAqLywKIAkJ
CQkwNzkyMzEzNDIzOUIzQjBDMDA5NTk4RTIgLyogUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmgg
Ki8sCkBAIC01NDkxLDYgKzU1MzQsMTUgQEAKIAkJCQlDREFDMjA4MzIzRkIyMTM0MDAyMURFRTMg
LyogUmVtb3RlQ0RNUHJveHkuY3BwICovLAogCQkJCUNEQUMyMDgyMjNGQjIxMzQwMDIxREVFMyAv
KiBSZW1vdGVDRE1Qcm94eS5oICovLAogCQkJCUNEQUMyMDg2MjNGQjIxNTgwMDIxREVFMyAvKiBS
ZW1vdGVDRE1Qcm94eS5tZXNzYWdlcy5pbiAqLywKKwkJCQlDREU1NTUxRDI0MDVBM0I3MDA4QTNE
REIgLyogUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5LmNwcCAqLywKKwkJCQlDREU1NTUxQzI0
MDVBM0I3MDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5LmggKi8sCisJCQkJ
Q0RFNTU1MUIyNDA1QTNCNzAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5t
ZXNzYWdlcy5pbiAqLywKKwkJCQlDREU1NTUyMDI0MDVBM0RGMDA4QTNEREIgLyogUmVtb3RlTGVn
YWN5Q0RNUHJveHkuY3BwICovLAorCQkJCUNERTU1NTFGMjQwNUEzREYwMDhBM0REQiAvKiBSZW1v
dGVMZWdhY3lDRE1Qcm94eS5oICovLAorCQkJCUNERTU1NTFFMjQwNUEzREYwMDhBM0REQiAvKiBS
ZW1vdGVMZWdhY3lDRE1Qcm94eS5tZXNzYWdlcy5pbiAqLywKKwkJCQlDREU1NTRGOTI0MDU4MjA4
MDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmNwcCAqLywKKwkJCQlDREU1
NTRGODI0MDU4MjA4MDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmggKi8s
CisJCQkJQ0RFNTU1MDAyNDA1ODI4NDAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Q
cm94eS5tZXNzYWdlcy5pbiAqLywKIAkJCQkwNzI1RUZBRDIzOUIwMjQ1MDBBNTM4QTkgLyogUmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuY3BwICovLAogCQkJCTA3MjVFRkFDMjM5QUUzODUw
MEE1MzhBOSAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5oICovLAogCQkJCTA3MjVF
RkFCMjM5QUUzODQwMEE1MzhBOSAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eS5tZXNz
YWdlcy5pbiAqLywKQEAgLTk5MzUsNiArOTk4NywxOCBAQAogCQkJCUNEQUMyMEYwMjNGQzM4Mzkw
MDIxREVFMyAvKiBSZW1vdGVDRE1Qcm94eU1lc3NhZ2VzUmVwbGllcy5oICovLAogCQkJCTBGRjI0
QTJCMTg3OUU0QkMwMDNBQkYwQyAvKiBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVz
c2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQkwRkYyNEEyQzE4NzlFNEJDMDAzQUJGMEMgLyogUmVt
b3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VzLmggKi8sCisJCQkJQ0RFNTU1Mjky
NDA2Qjg5NjAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eU1lc3NhZ2VSZWNl
aXZlci5jcHAgKi8sCisJCQkJQ0RFNTU1MkQyNDA2Qjg5NzAwOEEzRERCIC8qIFJlbW90ZUxlZ2Fj
eUNETUZhY3RvcnlQcm94eU1lc3NhZ2VzLmggKi8sCisJCQkJQ0RFNTU1MkMyNDA2Qjg5NjAwOEEz
RERCIC8qIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eU1lc3NhZ2VzUmVwbGllcy5oICovLAor
CQkJCUNERTU1NTJBMjQwNkI4OTYwMDhBM0REQiAvKiBSZW1vdGVMZWdhY3lDRE1Qcm94eU1lc3Nh
Z2VSZWNlaXZlci5jcHAgKi8sCisJCQkJQ0RFNTU1MjgyNDA2Qjg5NjAwOEEzRERCIC8qIFJlbW90
ZUxlZ2FjeUNETVByb3h5TWVzc2FnZXMuaCAqLywKKwkJCQlDREU1NTUyQjI0MDZCODk2MDA4QTNE
REIgLyogUmVtb3RlTGVnYWN5Q0RNUHJveHlNZXNzYWdlc1JlcGxpZXMuaCAqLywKKwkJCQlDREU1
NTUyRTI0MDZCODk3MDA4QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbk1lc3NhZ2VSZWNl
aXZlci5jcHAgKi8sCisJCQkJQ0RFNTU1MjcyNDA2Qjg5NTAwOEEzRERCIC8qIFJlbW90ZUxlZ2Fj
eUNETVNlc3Npb25NZXNzYWdlcy5oICovLAorCQkJCUNERTU1NTMwMjQwNkI4OTcwMDhBM0REQiAv
KiBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uTWVzc2FnZXNSZXBsaWVzLmggKi8sCisJCQkJQ0RFNTU1
MzEyNDA2Qjg5NzAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eU1lc3NhZ2VS
ZWNlaXZlci5jcHAgKi8sCisJCQkJQ0RFNTU1MkYyNDA2Qjg5NzAwOEEzRERCIC8qIFJlbW90ZUxl
Z2FjeUNETVNlc3Npb25Qcm94eU1lc3NhZ2VzLmggKi8sCisJCQkJQ0RFNTU1MjYyNDA2Qjg5NTAw
OEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eU1lc3NhZ2VzUmVwbGllcy5oICov
LAogCQkJCTA3OTIzMTQzMjM5Q0JDQjYwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCTA3OTIzMTQ3MjM5Q0JDQjcwMDk1OThFMiAv
KiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJNZXNzYWdlcy5oICovLAogCQkJCTA3OTIzMTQ0MjM5
Q0JDQjYwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJNZXNzYWdlc1JlcGxpZXMu
aCAqLywKQEAgLTEyNjAxLDYgKzEyNjY1LDEwIEBACiAJCQkJMkQ3MkExRkEyMTJCRjQ2RTAwNTE3
QTIwIC8qIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MEZGMjRBMkQxODc5RTRCQzAwM0FCRjBDIC8qIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJv
eHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkRDMThGQjQyMThBNkU5
RTAwMjVBODhEIC8qIFJlbW90ZUxheWVyVHJlZVZpZXdzLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJ
Q0RFNTU1MzIyNDA2RUI4QzAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eU1l
c3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDREU1NTUzMzI0MDZFQjhDMDA4
QTNEREIgLyogUmVtb3RlTGVnYWN5Q0RNUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJQ0RFNTU1MzQyNDA2RUI4QzAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETVNl
c3Npb25NZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0RFNTU1MzUyNDA2
RUI4QzAwOEEzRERCIC8qIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eU1lc3NhZ2VSZWNlaXZl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzkyMzE0OTIzOUNCQ0I4MDA5NTk4RTIgLyogUmVt
b3RlTWVkaWFQbGF5ZXJNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTA3OTIzMTRCMjM5Q0JDQjgwMDk1OThFMiAvKiBSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQ
cm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzAxNzg5RTIzQkU5
Q0ZDMDA1RjBGQUEgLyogUmVtb3RlTWVkaWFQbGF5ZXJNSU1FVHlwZUNhY2hlLmNwcCBpbiBTb3Vy
Y2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9j
ZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nl
c3NDb25uZWN0aW9uLmNwcAppbmRleCBlZjgyNDkzNDI0NTU1MTEyNzAzMjM4NjQ3OWI3MTcxY2Qy
ODVkMmU2Li4xODQ0MTliZTNjMjUyY2UzNjE5Mzc5OTM2YzFkNGNmNTM3NTM5YjYwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9u
LmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUmVtb3RlQ0RNRmFjdG9yeS5oIgogI2luY2x1ZGUgIlJl
bW90ZUNETVByb3h5LmgiCisjaW5jbHVkZSAiUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeS5oIgogI2lu
Y2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyTWVzc2FnZXMuaCIKQEAgLTgyLDYgKzgzLDExIEBAIFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
ck1hbmFnZXImIEdQVVByb2Nlc3NDb25uZWN0aW9uOjpzYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJN
CiB9CiAjZW5kaWYKIAorUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyJiBHUFVQcm9jZXNzQ29ubmVj
dGlvbjo6bWVkaWFQbGF5ZXJNYW5hZ2VyKCkKK3sKKyAgICByZXR1cm4gKldlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLnN1cHBsZW1lbnQ8UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyPigpOworfQorCiAj
aWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKIFJlbW90ZUNETUZhY3RvcnkmIEdQVVByb2Nlc3ND
b25uZWN0aW9uOjpjZG1GYWN0b3J5KCkKIHsKQEAgLTg5LDYgKzk1LDEzIEBAIFJlbW90ZUNETUZh
Y3RvcnkmIEdQVVByb2Nlc3NDb25uZWN0aW9uOjpjZG1GYWN0b3J5KCkKIH0KICNlbmRpZgogCisj
aWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCitSZW1vdGVMZWdhY3lDRE1GYWN0b3J5
JiBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6bGVnYWN5Q0RNRmFjdG9yeSgpCit7CisgICAgcmV0dXJu
ICpXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zdXBwbGVtZW50PFJlbW90ZUxlZ2FjeUNETUZhY3Rv
cnk+KCk7Cit9CisjZW5kaWYKKwogYm9vbCBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6ZGlzcGF0Y2hN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVy
KQogewogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24u
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaApp
bmRleCBmMGMzOTU4OGJjMjRmYmU1ZDQ3NzRmOGIwZWE5MmVhMTUyZjczYjcxLi4zNGVhMWM2YTdj
YjQzZDhkOWNiYzFmZmJiZTc0OGMwNjJlNzBlNjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5oCkBAIC00MSw2ICs0MSw4IEBA
IGNsYXNzIERhdGFSZWZlcmVuY2U7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgUmVtb3Rl
Q0RNRmFjdG9yeTsKK2NsYXNzIFJlbW90ZU1lZGlhUGxheWVyTWFuYWdlcjsKK2NsYXNzIFJlbW90
ZUxlZ2FjeUNETUZhY3Rvcnk7CiAKIGNsYXNzIEdQVVByb2Nlc3NDb25uZWN0aW9uIDogcHVibGlj
IFJlZkNvdW50ZWQ8R1BVUHJvY2Vzc0Nvbm5lY3Rpb24+LCBJUEM6OkNvbm5lY3Rpb246OkNsaWVu
dCB7CiBwdWJsaWM6CkBAIC02MSwxMCArNjMsMTYgQEAgcHVibGljOgogICAgIFNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllck1hbmFnZXImIHNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllck1hbmFnZXIoKTsK
ICNlbmRpZgogCisgICAgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyJiBtZWRpYVBsYXllck1hbmFn
ZXIoKTsKKwogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiAgICAgUmVtb3RlQ0RNRmFjdG9y
eSYgY2RtRmFjdG9yeSgpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9N
RURJQSkKKyAgICBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5JiBsZWdhY3lDRE1GYWN0b3J5KCk7Cisj
ZW5kaWYKKwogcHJpdmF0ZToKICAgICBHUFVQcm9jZXNzQ29ubmVjdGlvbihJUEM6OkNvbm5lY3Rp
b246OklkZW50aWZpZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKaW5kZXggMmYx
NDAxMDNmOGFjOTQ3MzdkOTdiNjFmMjljZTIwYzZiZGMwN2E2Ni4uODZmMmIxYmQwZTg0YzBlMDJk
ZjI3MjViMDM0NTk1NGVjZTkxN2Y2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcApA
QCAtMzAsNiArMzAsOSBAQAogCiAjaW5jbHVkZSAiQXVkaW9UcmFja1ByaXZhdGVSZW1vdGUuaCIK
ICNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiUmVtb3RlTGVnYWN5Q0RNLmgiCisjaW5j
bHVkZSAiUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeS5oIgorI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNE
TVNlc3Npb24uaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eU1lc3Nh
Z2VzLmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJQcm94eU1lc3NhZ2VzLmgiCiAjaW5j
bHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgpAQCAtMzgsNiArNDEsOCBAQAogI2luY2x1ZGUgIlZp
ZGVvVHJhY2tQcml2YXRlUmVtb3RlLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0dl
bmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9U
eXBlZEFycmF5VHlwZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQbGF5ZXIuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9y
bUxheWVyLmg+CkBAIC01Myw2ICs1OCwxMCBAQAogI2luY2x1ZGUgIlJlbW90ZUNETUluc3RhbmNl
LmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQorI2luY2x1
ZGUgPFdlYkNvcmUvTGVnYWN5Q0RNLmg+CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewog
I2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogZXh0ZXJuIFdURkxvZ0NoYW5uZWwgTG9nTWVkaWE7
CkBAIC05MTAsMTUgKzkxOSwzOCBAQCBzdGQ6OnVuaXF1ZV9wdHI8TGVnYWN5Q0RNU2Vzc2lvbj4g
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjcmVhdGVTZXNzaW9uKGNvbnN0CiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRDRE1TZXNz
aW9uKExlZ2FjeUNETVNlc3Npb24qKQordm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNl
dENETShMZWdhY3lDRE0qIGNkbSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGlmICgh
Y2RtKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIHJlbW90ZUNETSA9IG1fbWFuYWdlci5n
cHVQcm9jZXNzQ29ubmVjdGlvbigpLmxlZ2FjeUNETUZhY3RvcnkoKS5maW5kQ0RNKGNkbS0+Y2Rt
UHJpdmF0ZSgpKTsKKyAgICBpZiAoIXJlbW90ZUNETSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
cmVtb3RlQ0RNLT5zZXRQbGF5ZXJJZChtX2lkKTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6OnNldENETVNlc3Npb24oTGVnYWN5Q0RNU2Vzc2lvbiogc2Vzc2lvbikKK3sKKyAg
ICBpZiAoIXNlc3Npb24gfHwgc2Vzc2lvbi0+dHlwZSgpICE9IENETVNlc3Npb25UeXBlUmVtb3Rl
KSB7CisgICAgICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXll
clByb3h5OjpTZXRMZWdhY3lDRE1TZXNzaW9uKHsgfSksIG1faWQpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgYXV0byByZW1vdGVTZXNzaW9uID0gc3RhdGljX2Nhc3Q8UmVtb3RlTGVn
YWN5Q0RNU2Vzc2lvbio+KHNlc3Npb24pOworICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjpTZXRMZWdhY3lDRE1TZXNzaW9uKHJlbW90ZVNlc3Np
b24tPmlkZW50aWZpZXIoKSksIG1faWQpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZTo6a2V5QWRkZWQoKQogewogICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1v
dGVNZWRpYVBsYXllclByb3h5OjpLZXlBZGRlZCgpLCBtX2lkKTsKIH0KKwordm9pZCBNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6Om1lZGlhUGxheWVyS2V5TmVlZGVkKElQQzo6RGF0YVJlZmVyZW5j
ZSYmIG1lc3NhZ2UpCit7CisgICAgbV9wbGF5ZXItPmtleU5lZWRlZChVaW50OEFycmF5OjpjcmVh
dGUobWVzc2FnZS5kYXRhKCksIG1lc3NhZ2Uuc2l6ZSgpKS5wdHIoKSk7Cit9CiAjZW5kaWYKIAog
I2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaAppbmRl
eCA1MGI1OTdkOWI3OTM0NGFmZDQxZWQ2ZTMyYzVhNzg5ZDM5MDMzZTNiLi42YzU2NmE4M2QyZTQx
ZTFiNGFlNTIzMzI5Y2FjYjEzMDJkMjZkNjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmgK
QEAgLTMwNSw4ICszMDUsMTAgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQ
VEVEX01FRElBKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpMZWdhY3lDRE1TZXNzaW9u
PiBjcmVhdGVTZXNzaW9uKGNvbnN0IFN0cmluZyYsIFdlYkNvcmU6OkxlZ2FjeUNETVNlc3Npb25D
bGllbnQqKSBmaW5hbDsKKyAgICB2b2lkIHNldENETShXZWJDb3JlOjpMZWdhY3lDRE0qKSBmaW5h
bDsKICAgICB2b2lkIHNldENETVNlc3Npb24oV2ViQ29yZTo6TGVnYWN5Q0RNU2Vzc2lvbiopIGZp
bmFsOwogICAgIHZvaWQga2V5QWRkZWQoKSBmaW5hbDsKKyAgICB2b2lkIG1lZGlhUGxheWVyS2V5
TmVlZGVkKElQQzo6RGF0YVJlZmVyZW5jZSYmKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKEVOQ1JZ
UFRFRF9NRURJQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUubWVzc2FnZXMuaW4K
aW5kZXggOTQ0OGRlMDJmMWFjOWU0NjQzODMzYzJkNTUzNzU5Yzk4MzBiODE1Ny4uZTdkODZjN2Y0
YzNkY2U4YjBiOThlZjY2MGExMjY4ZmRkOWFlMWMzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUubWVzc2FnZXMu
aW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclBy
aXZhdGVSZW1vdGUubWVzc2FnZXMuaW4KQEAgLTc4LDYgKzc4LDEwIEBAIG1lc3NhZ2VzIC0+IE1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZSBOb3RSZWZDb3VudGVkIHsKICAgICBJbml0aWFsaXphdGlv
bkRhdGFFbmNvdW50ZXJlZChTdHJpbmcgaW5pdERhdGFUeXBlLCBJUEM6OkRhdGFSZWZlcmVuY2Ug
aW5pdERhdGEpCiAjZW5kaWYKIAorI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQor
ICAgIE1lZGlhUGxheWVyS2V5TmVlZGVkKElQQzo6RGF0YVJlZmVyZW5jZSBtZXNzYWdlKQorI2Vu
ZGlmCisKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogICAgIEN1cnJlbnRQ
bGF5YmFja1RhcmdldElzV2lyZWxlc3NDaGFuZ2VkKGJvb2wgaXNDdXJyZW50UGxheWJhY2tUYXJn
ZXRXaXJlbGVzcykKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE0uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE0uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI0MDY2OGU5YmJlY2Jl
OTAyYTIxOTdkYTExZmQ2MTQ4MmNlZDVhYWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETS5jcHAKQEAgLTAsMCArMSw4
OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW1vdGVM
ZWdhY3lDRE0uaCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKExFR0FDWV9F
TkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRlICJSZW1vdGVMZWdhY3lDRE1GYWN0b3J5LmgiCisj
aW5jbHVkZSAiUmVtb3RlTGVnYWN5Q0RNUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlJlbW90
ZUxlZ2FjeUNETVNlc3Npb24uaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3VzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOworCitzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGVnYWN5Q0RNPiBSZW1vdGVM
ZWdhY3lDRE06OmNyZWF0ZShXZWFrUHRyPFJlbW90ZUxlZ2FjeUNETUZhY3Rvcnk+JiYgZmFjdG9y
eSwgUmVtb3RlTGVnYWN5Q0RNSWRlbnRpZmllciBpZCkKK3sKKyAgICByZXR1cm4gc3RkOjp1bmlx
dWVfcHRyPFJlbW90ZUxlZ2FjeUNETT4obmV3IFJlbW90ZUxlZ2FjeUNETShXVEZNb3ZlKGZhY3Rv
cnkpLCBXVEZNb3ZlKGlkKSkpOworfQorCitSZW1vdGVMZWdhY3lDRE06OlJlbW90ZUxlZ2FjeUNE
TShXZWFrUHRyPFJlbW90ZUxlZ2FjeUNETUZhY3Rvcnk+JiYgZmFjdG9yeSwgUmVtb3RlTGVnYWN5
Q0RNSWRlbnRpZmllciYmIGlkKQorICAgIDogbV9mYWN0b3J5KFdURk1vdmUoZmFjdG9yeSkpCisg
ICAgLCBtX2lkZW50aWZpZXIoV1RGTW92ZShpZCkpCit7Cit9CisKK1JlbW90ZUxlZ2FjeUNETTo6
flJlbW90ZUxlZ2FjeUNETSgpID0gZGVmYXVsdDsKKworYm9vbCBSZW1vdGVMZWdhY3lDRE06OnN1
cHBvcnRzTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKK3sKKyAgICBpZiAoIW1fZmFj
dG9yeSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYm9vbCBzdXBwb3J0ZWQgPSBmYWxz
ZTsKKyAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNl
bmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVMZWdhY3lDRE1Qcm94eTo6U3VwcG9ydHNNSU1FVHlwZSht
aW1lVHlwZSksIE1lc3NhZ2VzOjpSZW1vdGVMZWdhY3lDRE1Qcm94eTo6U3VwcG9ydHNNSU1FVHlw
ZTo6UmVwbHkoc3VwcG9ydGVkKSwgbV9pZGVudGlmaWVyKTsKKyAgICByZXR1cm4gc3VwcG9ydGVk
OworfQorCitzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6TGVnYWN5Q0RNU2Vzc2lvbj4gUmVtb3Rl
TGVnYWN5Q0RNOjpjcmVhdGVTZXNzaW9uKFdlYkNvcmU6OkxlZ2FjeUNETVNlc3Npb25DbGllbnQq
IGNsaWVudCkKK3sKKyAgICBpZiAoIW1fZmFjdG9yeSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisKKyAgICBTdHJpbmcgc3RvcmFnZURpcmVjdG9yeSA9IGNsaWVudCA/IGNsaWVudC0+bWVkaWFL
ZXlzU3RvcmFnZURpcmVjdG9yeSgpIDogZW1wdHlTdHJpbmcoKTsKKworICAgIFJlbW90ZUxlZ2Fj
eUNETVNlc3Npb25JZGVudGlmaWVyIGlkOworICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUxlZ2FjeUNETVBy
b3h5OjpDcmVhdGVTZXNzaW9uKHN0b3JhZ2VEaXJlY3RvcnkpLCBNZXNzYWdlczo6UmVtb3RlTGVn
YWN5Q0RNUHJveHk6OkNyZWF0ZVNlc3Npb246OlJlcGx5KGlkKSwgbV9pZGVudGlmaWVyKTsKKyAg
ICBpZiAoIWlkKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gUmVtb3RlTGVn
YWN5Q0RNU2Vzc2lvbjo6Y3JlYXRlKG1fZmFjdG9yeSwgV1RGTW92ZShpZCkpOworfQorCit2b2lk
IFJlbW90ZUxlZ2FjeUNETTo6c2V0UGxheWVySWQoTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRl
bnRpZmllciBpZCkKK3sKKyAgICBpZiAoIW1fZmFjdG9yeSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgT3B0aW9uYWw8TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllcj4gb3B0aW9uYWxJ
ZDsKKyAgICBpZiAoaWQpCisgICAgICAgIG9wdGlvbmFsSWQgPSBpZDsKKyAgICBtX2ZhY3Rvcnkt
PmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90
ZUxlZ2FjeUNETVByb3h5OjpTZXRQbGF5ZXJJZChvcHRpb25hbElkKSwgbV9pZGVudGlmaWVyKTsK
K30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUxlZ2FjeUNETS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY1NGNkM2NjNDI5NDE3MTY2MTlm
NTAzYjYzZjk3M2IxMWExZTIyNDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETS5oCkBAIC0wLDAgKzEsNjUgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5B
QkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRlICJNZWRpYVBsYXllclByaXZh
dGVSZW1vdGVJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiUmVtb3RlTGVnYWN5Q0RNSWRlbnRpZmll
ci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvTGVnYWN5Q0RNUHJpdmF0ZS5oPgorI2luY2x1ZGUgPHd0
Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFNldHRpbmdzOworfQor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeTsKK2Ns
YXNzIFJlbW90ZUxlZ2FjeUNETVNlc3Npb247CisKKworY2xhc3MgUmVtb3RlTGVnYWN5Q0RNIGZp
bmFsCisgICAgOiBwdWJsaWMgV2ViQ29yZTo6Q0RNUHJpdmF0ZUludGVyZmFjZQorICAgICwgcHVi
bGljIENhbk1ha2VXZWFrUHRyPFJlbW90ZUxlZ2FjeUNETT4geworcHVibGljOgorICAgIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGVnYWN5Q0RNPiBjcmVhdGUoV2Vha1B0cjxSZW1vdGVM
ZWdhY3lDRE1GYWN0b3J5PiYmLCBSZW1vdGVMZWdhY3lDRE1JZGVudGlmaWVyKTsKKyAgICB2aXJ0
dWFsIH5SZW1vdGVMZWdhY3lDRE0oKTsKKworICAgIGJvb2wgc3VwcG9ydHNNSU1FVHlwZShjb25z
dCBTdHJpbmcmKSBmaW5hbDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6TGVnYWN5Q0RN
U2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbihXZWJDb3JlOjpMZWdhY3lDRE1TZXNzaW9uQ2xpZW50Kikg
ZmluYWw7CisgICAgdm9pZCBzZXRQbGF5ZXJJZChNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVu
dGlmaWVyKTsKKworcHJpdmF0ZToKKyAgICBSZW1vdGVMZWdhY3lDRE0oV2Vha1B0cjxSZW1vdGVM
ZWdhY3lDRE1GYWN0b3J5PiYmLCBSZW1vdGVMZWdhY3lDRE1JZGVudGlmaWVyJiYpOworCisgICAg
V2Vha1B0cjxSZW1vdGVMZWdhY3lDRE1GYWN0b3J5PiBtX2ZhY3Rvcnk7CisgICAgUmVtb3RlTGVn
YWN5Q0RNSWRlbnRpZmllciBtX2lkZW50aWZpZXI7Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1G
YWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVn
YWN5Q0RNRmFjdG9yeS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOThmYWEzMjI3MjMzYzBmMTFkMDY2ZTlhODM3
YWQ5Y2M2ODQ5MTZiNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeS5jcHAKQEAgLTAsMCArMSwxNTQgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlTGVnYWN5
Q0RNRmFjdG9yeS5oIgorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTEVHQUNZ
X0VOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9uLmgiCisj
aW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmgiCisjaW5jbHVkZSAiUmVtb3RlTGVn
YWN5Q0RNLmgiCisjaW5jbHVkZSAiUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5TWVzc2FnZXMu
aCIKKyNpbmNsdWRlICJSZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmgiCisjaW5jbHVkZSAiV2ViUHJv
Y2Vzcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvTGVnYWN5Q0RNLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9TZXR0aW5ncy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CisKK1JlbW90ZUxlZ2FjeUNETUZhY3Rvcnk6OlJlbW90ZUxlZ2FjeUNETUZhY3Rvcnko
V2ViUHJvY2VzcyYgcHJvY2VzcykKKyAgICA6IG1fcHJvY2Vzcyhwcm9jZXNzKQoreworfQorCitS
ZW1vdGVMZWdhY3lDRE1GYWN0b3J5Ojp+UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeSgpID0gZGVmYXVs
dDsKKwordm9pZCBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5OjpyZWdpc3RlckZhY3RvcnkoKQorewor
ICAgIExlZ2FjeUNETTo6Y2xlYXJGYWN0b3JpZXMoKTsKKyAgICBMZWdhY3lDRE06OnJlZ2lzdGVy
Q0RNRmFjdG9yeSgKKyAgICAgICAgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldIChMZWdh
Y3lDRE0qIHByaXZhdGVDRE0pIC0+IHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpDRE1Qcml2YXRl
SW50ZXJmYWNlPiB7CisgICAgICAgICAgICBpZiAod2Vha1RoaXMpCisgICAgICAgICAgICAgICAg
cmV0dXJuIHdlYWtUaGlzLT5jcmVhdGVDRE0ocHJpdmF0ZUNETSk7CisgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICAgICAgfSwKKyAgICAgICAgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIo
dGhpcyldIChjb25zdCBTdHJpbmcmIGtleVN5c3RlbSkgeworICAgICAgICAgICAgcmV0dXJuIHdl
YWtUaGlzID8gd2Vha1RoaXMtPnN1cHBvcnRzS2V5U3lzdGVtKGtleVN5c3RlbSkgOiBmYWxzZTsK
KyAgICAgICAgfSwKKyAgICAgICAgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldIChjb25z
dCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgeworICAgICAgICAg
ICAgcmV0dXJuIHdlYWtUaGlzID8gd2Vha1RoaXMtPnN1cHBvcnRzS2V5U3lzdGVtQW5kTWltZVR5
cGUoa2V5U3lzdGVtLCBtaW1lVHlwZSkgOiBmYWxzZTsKKyAgICAgICAgfQorICAgICk7Cit9CisK
K2NvbnN0IGNoYXIqIFJlbW90ZUxlZ2FjeUNETUZhY3Rvcnk6OnN1cHBsZW1lbnROYW1lKCkKK3sK
KyAgICByZXR1cm4gIlJlbW90ZUxlZ2FjeUNETUZhY3RvcnkiOworfQorCitHUFVQcm9jZXNzQ29u
bmVjdGlvbiYgUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeTo6Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKQor
eworICAgIHJldHVybiBtX3Byb2Nlc3MuZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKK30K
KworYm9vbCBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5OjpzdXBwb3J0c0tleVN5c3RlbShjb25zdCBT
dHJpbmcmIGtleVN5c3RlbSkKK3sKKyAgICBhdXRvIGZvdW5kSW5DYWNoZSA9IG1fc3VwcG9ydHNL
ZXlTeXN0ZW1DYWNoZS5maW5kKGtleVN5c3RlbSk7CisgICAgaWYgKGZvdW5kSW5DYWNoZSAhPSBt
X3N1cHBvcnRzS2V5U3lzdGVtQ2FjaGUuZW5kKCkpCisgICAgICAgIHJldHVybiBmb3VuZEluQ2Fj
aGUtPnZhbHVlOworCisgICAgYm9vbCBzdXBwb3J0ZWQgPSBmYWxzZTsKKyAgICBncHVQcm9jZXNz
Q29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlTGVnYWN5
Q0RNRmFjdG9yeVByb3h5OjpTdXBwb3J0c0tleVN5c3RlbShrZXlTeXN0ZW0sIFdURjo6bnVsbG9w
dCksIE1lc3NhZ2VzOjpSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHk6OlN1cHBvcnRzS2V5U3lz
dGVtOjpSZXBseShzdXBwb3J0ZWQpLCB7IH0pOworICAgIG1fc3VwcG9ydHNLZXlTeXN0ZW1DYWNo
ZS5zZXQoa2V5U3lzdGVtLCBzdXBwb3J0ZWQpOworICAgIHJldHVybiBzdXBwb3J0ZWQ7Cit9CisK
K2Jvb2wgUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeTo6c3VwcG9ydHNLZXlTeXN0ZW1BbmRNaW1lVHlw
ZShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKK3sKKyAg
ICBhdXRvIGtleSA9IHN0ZDo6bWFrZV9wYWlyKGtleVN5c3RlbSwgbWltZVR5cGUpOworICAgIGF1
dG8gZm91bmRJbkNhY2hlID0gbV9zdXBwb3J0c0tleVN5c3RlbUFuZE1pbWVUeXBlQ2FjaGUuZmlu
ZChrZXkpOworICAgIGlmIChmb3VuZEluQ2FjaGUgIT0gbV9zdXBwb3J0c0tleVN5c3RlbUFuZE1p
bWVUeXBlQ2FjaGUuZW5kKCkpCisgICAgICAgIHJldHVybiBmb3VuZEluQ2FjaGUtPnZhbHVlOwor
CisgICAgYm9vbCBzdXBwb3J0ZWQgPSBmYWxzZTsKKyAgICBncHVQcm9jZXNzQ29ubmVjdGlvbigp
LmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVBy
b3h5OjpTdXBwb3J0c0tleVN5c3RlbShrZXlTeXN0ZW0sIG1pbWVUeXBlKSwgTWVzc2FnZXM6OlJl
bW90ZUxlZ2FjeUNETUZhY3RvcnlQcm94eTo6U3VwcG9ydHNLZXlTeXN0ZW06OlJlcGx5KHN1cHBv
cnRlZCksIHsgfSk7CisgICAgbV9zdXBwb3J0c0tleVN5c3RlbUFuZE1pbWVUeXBlQ2FjaGUuc2V0
KGtleSwgc3VwcG9ydGVkKTsKKyAgICByZXR1cm4gc3VwcG9ydGVkOworfQorCitzdGQ6OnVuaXF1
ZV9wdHI8Q0RNUHJpdmF0ZUludGVyZmFjZT4gUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeTo6Y3JlYXRl
Q0RNKFdlYkNvcmU6OkxlZ2FjeUNETSogY2RtKQoreworICAgIGlmICghY2RtKSB7CisgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisK
KyAgICBPcHRpb25hbDxNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJZGVudGlmaWVyPiBwbGF5ZXJJ
ZDsKKyAgICBpZiAoYXV0byBwbGF5ZXIgPSBjZG0tPm1lZGlhUGxheWVyKCkpCisgICAgICAgIHBs
YXllcklkID0gZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5tZWRpYVBsYXllck1hbmFnZXIoKS5maW5k
UmVtb3RlUGxheWVySWQocGxheWVyLT5wbGF5ZXJQcml2YXRlKCkpOworCisgICAgUmVtb3RlTGVn
YWN5Q0RNSWRlbnRpZmllciBpZDsKKyAgICBncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rp
b24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5OjpDcmVh
dGVDRE0oY2RtLT5rZXlTeXN0ZW0oKSwgV1RGTW92ZShwbGF5ZXJJZCkpLCBNZXNzYWdlczo6UmVt
b3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5OjpDcmVhdGVDRE06OlJlcGx5KGlkKSwgeyB9KTsKKyAg
ICBpZiAoIWlkKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBhdXRvIHJlbW90ZUNETSA9
IFJlbW90ZUxlZ2FjeUNETTo6Y3JlYXRlKG1ha2VXZWFrUHRyKHRoaXMpLCBpZCk7CisgICAgbV9j
ZG1zLnNldChpZCwgbWFrZVdlYWtQdHIocmVtb3RlQ0RNLmdldCgpKSk7CisgICAgcmV0dXJuIHJl
bW90ZUNETTsKK30KKwordm9pZCBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5OjphZGRTZXNzaW9uKFJl
bW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyIGlkLCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3Rl
TGVnYWN5Q0RNU2Vzc2lvbj4mJiBzZXNzaW9uKQoreworICAgIEFTU0VSVCghbV9zZXNzaW9ucy5j
b250YWlucyhpZCkpOworICAgIG1fc2Vzc2lvbnMuc2V0KGlkLCBXVEZNb3ZlKHNlc3Npb24pKTsK
K30KKwordm9pZCBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5OjpyZW1vdmVTZXNzaW9uKFJlbW90ZUxl
Z2FjeUNETVNlc3Npb25JZGVudGlmaWVyIGlkKQoreworICAgIEFTU0VSVChtX3Nlc3Npb25zLmNv
bnRhaW5zKGlkKSk7CisgICAgbV9zZXNzaW9ucy5yZW1vdmUoaWQpOworfQorCitSZW1vdGVMZWdh
Y3lDRE0qIFJlbW90ZUxlZ2FjeUNETUZhY3Rvcnk6OmZpbmRDRE0oQ0RNUHJpdmF0ZUludGVyZmFj
ZSogcHJpdmF0ZUludGVyZmFjZSkgY29uc3QKK3sKKyAgICBmb3IgKGF1dG8mIGNkbSA6IG1fY2Rt
cy52YWx1ZXMoKSkgeworICAgICAgICBpZiAocHJpdmF0ZUludGVyZmFjZSA9PSBjZG0uZ2V0KCkp
CisgICAgICAgICAgICByZXR1cm4gY2RtLmdldCgpOworICAgIH0KKyAgICByZXR1cm4gbnVsbHB0
cjsKK30KKwordm9pZCBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5OjpkaWRSZWNlaXZlU2Vzc2lvbk1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIp
Cit7CisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBtX3Nlc3Npb25zLmdldChtYWtlT2JqZWN0SWRl
bnRpZmllcjxSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllclR5cGU+KGRlY29kZXIuZGVz
dGluYXRpb25JRCgpKSkpCisgICAgICAgIHNlc3Npb24tPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5l
Y3Rpb24sIGRlY29kZXIpOworfQorCisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETUZhY3RvcnkuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjFkYzA5YmY5MDQ5MjY5NGZmYjQ5ZjA4MTgzZmQ2YjJlYTFmNDcwZGEKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUxlZ2FjeUNETUZhY3RvcnkuaApAQCAtMCwwICsxLDk1IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShMRUdBQ1lfRU5DUllQ
VEVEX01FRElBKQorCisjaW5jbHVkZSAiUmVtb3RlTGVnYWN5Q0RNSWRlbnRpZmllci5oIgorI2lu
Y2x1ZGUgIlJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiV2Vi
UHJvY2Vzc1N1cHBsZW1lbnQuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0xlZ2FjeUNETS5oPgorI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNw
YWNlIElQQyB7CitjbGFzcyBDb25uZWN0aW9uOworY2xhc3MgRGVjb2RlcjsKK30KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworY2xhc3MgU2V0dGluZ3M7Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
K2NsYXNzIENETVByaXZhdGVJbnRlcmZhY2U7CitjbGFzcyBMZWdhY3lDRE07Cit9CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitjbGFzcyBHUFVQcm9jZXNzQ29ubmVjdGlvbjsKK2NsYXNzIFJlbW90
ZUxlZ2FjeUNETTsKK2NsYXNzIFJlbW90ZUxlZ2FjeUNETVNlc3Npb247CitjbGFzcyBXZWJQcm9j
ZXNzOworCisKK2NsYXNzIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnkgZmluYWwKKyAgICA6IHB1Ymxp
YyBXZWJQcm9jZXNzU3VwcGxlbWVudAorICAgICwgcHVibGljIENhbk1ha2VXZWFrUHRyPFJlbW90
ZUxlZ2FjeUNETUZhY3Rvcnk+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1Ymxp
YzoKKyAgICBleHBsaWNpdCBSZW1vdGVMZWdhY3lDRE1GYWN0b3J5KFdlYlByb2Nlc3MmKTsKKyAg
ICB2aXJ0dWFsIH5SZW1vdGVMZWdhY3lDRE1GYWN0b3J5KCk7CisKKyAgICB2b2lkIHJlZ2lzdGVy
RmFjdG9yeSgpOworCisgICAgc3RhdGljIGNvbnN0IGNoYXIqIHN1cHBsZW1lbnROYW1lKCk7Cisg
ICAgV2ViUHJvY2VzcyYgcHJvY2VzcygpIGNvbnN0IHsgcmV0dXJuIG1fcHJvY2VzczsgfQorCisg
ICAgR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIGdwdVByb2Nlc3NDb25uZWN0aW9uKCk7CisKKyAgICB2
b2lkIGRpZFJlY2VpdmVTZXNzaW9uTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29k
ZXImKTsKKworICAgIHZvaWQgYWRkU2Vzc2lvbihSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRp
Zmllciwgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxlZ2FjeUNETVNlc3Npb24+JiYpOworICAgIHZv
aWQgcmVtb3ZlU2Vzc2lvbihSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllcik7CisKKyAg
ICBSZW1vdGVMZWdhY3lDRE0qIGZpbmRDRE0oV2ViQ29yZTo6Q0RNUHJpdmF0ZUludGVyZmFjZSop
IGNvbnN0OworCitwcml2YXRlOgorICAgIGJvb2wgc3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3Ry
aW5nJik7CisgICAgYm9vbCBzdXBwb3J0c0tleVN5c3RlbUFuZE1pbWVUeXBlKGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IFN0cmluZyYpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpDRE1Qcml2
YXRlSW50ZXJmYWNlPiBjcmVhdGVDRE0oV2ViQ29yZTo6TGVnYWN5Q0RNKik7CisKKyAgICBIYXNo
TWFwPFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UmVt
b3RlTGVnYWN5Q0RNU2Vzc2lvbj4+IG1fc2Vzc2lvbnM7CisgICAgSGFzaE1hcDxSZW1vdGVMZWdh
Y3lDRE1JZGVudGlmaWVyLCBXZWFrUHRyPFJlbW90ZUxlZ2FjeUNETT4+IG1fY2RtczsKKyAgICBI
YXNoTWFwPFN0cmluZywgYm9vbD4gbV9zdXBwb3J0c0tleVN5c3RlbUNhY2hlOworICAgIEhhc2hN
YXA8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPiwgYm9vbD4gbV9zdXBwb3J0c0tleVN5c3RlbUFu
ZE1pbWVUeXBlQ2FjaGU7CisgICAgV2ViUHJvY2VzcyYgbV9wcm9jZXNzOworfTsKKworfQorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlTGVnYWN5Q0RNSWRlbnRpZmllci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVMZWdhY3lDRE1JZGVudGlmaWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2ZiOWI3YTJmMGQ2
MmIxOWRhOTliYzM1YWNjZGM2YTEwNzc3ZWZlYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNSWRlbnRpZmllci5oCkBA
IC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShH
UFVfUFJPQ0VTUykgJiYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRl
IDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworZW51bSBS
ZW1vdGVMZWdhY3lDRE1JZGVudGlmaWVyVHlwZSB7IH07Cit1c2luZyBSZW1vdGVMZWdhY3lDRE1J
ZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxSZW1vdGVMZWdhY3lDRE1JZGVudGlmaWVyVHlw
ZT47CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Np
b24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjYxODQzODMyODk3N2RiN2ZlOGU4MzIzYmE4M2EyNGM1Y2M3NjQ2
MWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUxlZ2FjeUNETVNlc3Npb24uY3BwCkBAIC0wLDAgKzEsMTY3IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETVNlc3Npb24u
aCIKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURf
TUVESUEpCisKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSAiUmVtb3RlTGVn
YWN5Q0RNRmFjdG9yeS5oIgorI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eU1l
c3NhZ2VzLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3
SW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3SW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1R5cGVkQXJyYXlUeXBlLmg+
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworc3Rh
dGljIFJlZlB0cjxBcnJheUJ1ZmZlcj4gY29udmVydFRvQXJyYXlCdWZmZXIoSVBDOjpTaGFyZWRC
dWZmZXJEYXRhUmVmZXJlbmNlJiYgYnVmZmVyKQoreworICAgIGlmIChidWZmZXIuYnVmZmVyKCkp
CisgICAgICAgIHJldHVybiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGJ1ZmZlci5kYXRhKCksIGJ1ZmZl
ci5zaXplKCkpOworICAgIHJldHVybiBudWxscHRyOworfQorCitzdGF0aWMgUmVmUHRyPFVpbnQ4
QXJyYXk+IGNvbnZlcnRUb1VpbnQ4QXJyYXkoSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNl
JiYgYnVmZmVyKQoreworICAgIGF1dG8gYXJyYXlCdWZmZXIgPSBjb252ZXJ0VG9BcnJheUJ1ZmZl
cihXVEZNb3ZlKGJ1ZmZlcikpOworICAgIGlmICghYXJyYXlCdWZmZXIpCisgICAgICAgIHJldHVy
biBudWxscHRyOworCisgICAgc2l6ZV90IHNpemVJbkJ5dGVzID0gYXJyYXlCdWZmZXItPmJ5dGVM
ZW5ndGgoKTsKKyAgICByZXR1cm4gVWludDhBcnJheTo6Y3JlYXRlKFdURk1vdmUoYXJyYXlCdWZm
ZXIpLCAwLCBzaXplSW5CeXRlcyk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RhdGlj
IE9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZT4gY29udmVydFRvT3B0aW9u
YWxEYXRhUmVmZXJlbmNlKFQgYXJyYXkpCit7CisgICAgaWYgKCFhcnJheSkKKyAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4geyBTaGFyZWRCdWZmZXI6OmNyZWF0ZShhcnJh
eS0+ZGF0YSgpLCBhcnJheS0+Ynl0ZUxlbmd0aCgpKSB9OworfQorCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KK3N0YXRpYyBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgY29udmVydFRvRGF0
YVJlZmVyZW5jZShUIGFycmF5KQoreworICAgIGlmICghYXJyYXkpCisgICAgICAgIHJldHVybiB7
IH07CisgICAgcmV0dXJuIHsgU2hhcmVkQnVmZmVyOjpjcmVhdGUoYXJyYXktPmRhdGEoKSwgYXJy
YXktPmJ5dGVMZW5ndGgoKSkgfTsKK30KKworc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxlZ2FjeUNE
TVNlc3Npb24+IFJlbW90ZUxlZ2FjeUNETVNlc3Npb246OmNyZWF0ZShXZWFrUHRyPFJlbW90ZUxl
Z2FjeUNETUZhY3Rvcnk+IGZhY3RvcnksIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVy
JiYgaWQpCit7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMZWdhY3lDRE1TZXNz
aW9uPihuZXcgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbihXVEZNb3ZlKGZhY3RvcnkpLCBXVEZNb3Zl
KGlkKSkpOworfQorCitSZW1vdGVMZWdhY3lDRE1TZXNzaW9uOjpSZW1vdGVMZWdhY3lDRE1TZXNz
aW9uKFdlYWtQdHI8UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeT4gZmFjdG9yeSwgUmVtb3RlTGVnYWN5
Q0RNU2Vzc2lvbklkZW50aWZpZXImJiBpZCkKKyAgICA6IG1fZmFjdG9yeShXVEZNb3ZlKGZhY3Rv
cnkpKQorICAgICwgbV9pZGVudGlmaWVyKFdURk1vdmUoaWQpKQoreworfQorCitSZWZQdHI8VWlu
dDhBcnJheT4gUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbjo6Z2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIFVpbnQ4QXJyYXkqIGluaXREYXRhLCBTdHJpbmcmIGRlc3RpbmF0
aW9uVVJMLCB1bnNpZ25lZCBzaG9ydCYgZXJyb3JDb2RlLCB1aW50MzJfdCYgc3lzdGVtQ29kZSkK
K3sKKyAgICBpZiAoIW1fZmFjdG9yeSB8fCAhaW5pdERhdGEpCisgICAgICAgIHJldHVybiBudWxs
cHRyOworCisgICAgYXV0byBpcGNJbml0RGF0YSA9IGNvbnZlcnRUb0RhdGFSZWZlcmVuY2UoaW5p
dERhdGEpOworICAgIE9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZT4gaXBj
TmV4dE1lc3NhZ2U7CisgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5l
Y3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpH
ZW5lcmF0ZUtleVJlcXVlc3QobWltZVR5cGUsIGlwY0luaXREYXRhKSwgTWVzc2FnZXM6OlJlbW90
ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6R2VuZXJhdGVLZXlSZXF1ZXN0OjpSZXBseShpcGNOZXh0
TWVzc2FnZSwgZGVzdGluYXRpb25VUkwsIGVycm9yQ29kZSwgc3lzdGVtQ29kZSksIG1faWRlbnRp
Zmllcik7CisKKyAgICBpZiAoIWlwY05leHRNZXNzYWdlKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKworICAgIHJldHVybiBjb252ZXJ0VG9VaW50OEFycmF5KFdURk1vdmUoKmlwY05leHRNZXNz
YWdlKSk7Cit9CisKK3ZvaWQgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbjo6cmVsZWFzZUtleXMoKQor
eworICAgIGlmICghbV9mYWN0b3J5KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2ZhY3Rvcnkt
PmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90
ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6UmVsZWFzZUtleXMoKSwgbV9pZGVudGlmaWVyKTsKKyAg
ICBtX2NhY2hlZEtleUNhY2hlLmNsZWFyKCk7Cit9CisKK2Jvb2wgUmVtb3RlTGVnYWN5Q0RNU2Vz
c2lvbjo6dXBkYXRlKFVpbnQ4QXJyYXkqIGtleURhdGEsIFJlZlB0cjxVaW50OEFycmF5PiYgbmV4
dE1lc3NhZ2UsIHVuc2lnbmVkIHNob3J0JiBlcnJvckNvZGUsIHVpbnQzMl90JiBzeXN0ZW1Db2Rl
KQoreworICAgIGlmICghbV9mYWN0b3J5IHx8ICFrZXlEYXRhKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBhdXRvIGlwY0tleURhdGEgPSBjb252ZXJ0VG9EYXRhUmVmZXJlbmNlKFdURk1v
dmUoa2V5RGF0YSkpOworICAgIGJvb2wgc3VjY2VlZGVkIHsgZmFsc2UgfTsKKyAgICBPcHRpb25h
bDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U+IGlwY05leHRNZXNzYWdlOworICAgIG1f
ZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVz
c2FnZXM6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94eTo6VXBkYXRlKGlwY0tleURhdGEpLCBN
ZXNzYWdlczo6UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5OjpVcGRhdGU6OlJlcGx5KHN1Y2Nl
ZWRlZCwgaXBjTmV4dE1lc3NhZ2UsIGVycm9yQ29kZSwgc3lzdGVtQ29kZSksIG1faWRlbnRpZmll
cik7CisKKyAgICBpZiAoaXBjTmV4dE1lc3NhZ2UpCisgICAgICAgIG5leHRNZXNzYWdlID0gY29u
dmVydFRvVWludDhBcnJheShXVEZNb3ZlKCppcGNOZXh0TWVzc2FnZSkpOworCisgICAgcmV0dXJu
IGZhbHNlOworfQorCitSZWZQdHI8QXJyYXlCdWZmZXI+IFJlbW90ZUxlZ2FjeUNETVNlc3Npb246
OmNhY2hlZEtleUZvcktleUlEKGNvbnN0IFN0cmluZyYga2V5SWQpIGNvbnN0Cit7CisgICAgaWYg
KCFtX2ZhY3RvcnkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYXV0byBmb3VuZElu
Q2FjaGUgPSBtX2NhY2hlZEtleUNhY2hlLmZpbmQoa2V5SWQpOworICAgIGlmIChmb3VuZEluQ2Fj
aGUgIT0gbV9jYWNoZWRLZXlDYWNoZS5lbmQoKSkKKyAgICAgICAgcmV0dXJuIGZvdW5kSW5DYWNo
ZS0+dmFsdWU7CisKKyAgICBPcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2U+
IGlwY0tleTsKKyAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlv
bigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHk6OkNhY2hl
ZEtleUZvcktleUlEKGtleUlkKSwgTWVzc2FnZXM6OlJlbW90ZUxlZ2FjeUNETVNlc3Npb25Qcm94
eTo6Q2FjaGVkS2V5Rm9yS2V5SUQ6OlJlcGx5KGlwY0tleSksIG1faWRlbnRpZmllcik7CisKKyAg
ICBpZiAoIWlwY0tleSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvIGlwY0tl
eUJ1ZmZlciA9IGNvbnZlcnRUb0FycmF5QnVmZmVyKFdURk1vdmUoKmlwY0tleSkpOworICAgIG1f
Y2FjaGVkS2V5Q2FjaGUuc2V0KGtleUlkLCBpcGNLZXlCdWZmZXIpOworICAgIHJldHVybiBpcGNL
ZXlCdWZmZXI7Cit9CisKK3ZvaWQgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbjo6c2VuZE1lc3NhZ2Uo
T3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlPiYmIG1lc3NhZ2UsIGNvbnN0
IFN0cmluZyYgZGVzdGluYXRpb25VUkwpCit7CisgICAgaWYgKCFtX2NsaWVudCkKKyAgICAgICAg
cmV0dXJuOworCisgICAgaWYgKCFtZXNzYWdlKSB7CisgICAgICAgIG1fY2xpZW50LT5zZW5kTWVz
c2FnZShudWxscHRyLCBkZXN0aW5hdGlvblVSTCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBtX2NsaWVudC0+c2VuZE1lc3NhZ2UoY29udmVydFRvVWludDhBcnJheShXVEZNb3ZlKCpt
ZXNzYWdlKSkuZ2V0KCksIGRlc3RpbmF0aW9uVVJMKTsKK30KKwordm9pZCBSZW1vdGVMZWdhY3lD
RE1TZXNzaW9uOjpzZW5kRXJyb3IoV2ViQ29yZTo6TGVnYWN5Q0RNU2Vzc2lvbkNsaWVudDo6TWVk
aWFLZXlFcnJvckNvZGUgZXJyb3JDb2RlLCB1aW50MzJfdCBzeXN0ZW1Db2RlKQoreworICAgIGlm
IChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPnNlbmRFcnJvcihlcnJvckNvZGUsIHN5c3Rl
bUNvZGUpOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUxlZ2FjeUNETVNlc3Npb24uaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5jOGE5NzE5ZWI2YjJjZjA2NjA0NjdkMDcyNjg4MjQ4N2U1MmRiMmZhCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1T
ZXNzaW9uLmgKQEAgLTAsMCArMSw3OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkK
KworI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNE
TVNlc3Npb25JZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9MZWdhY3lDRE1TZXNzaW9u
Lmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNwYWNlIElQQyB7CitjbGFzcyBT
aGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xh
c3MgUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeTsKKworY2xhc3MgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lv
biBmaW5hbAorICAgIDogcHVibGljIFdlYkNvcmU6OkxlZ2FjeUNETVNlc3Npb24KKyAgICAsIHB1
YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CitwdWJsaWM6CisgICAgc3RhdGljIHN0ZDo6dW5p
cXVlX3B0cjxSZW1vdGVMZWdhY3lDRE1TZXNzaW9uPiBjcmVhdGUoV2Vha1B0cjxSZW1vdGVMZWdh
Y3lDRE1GYWN0b3J5PiwgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXImJik7CisKKyAg
ICAvLyBNZXNzYWdlUmVjZWl2ZXIKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOworCisgICAgY29uc3QgUmVtb3RlTGVnYWN5
Q0RNU2Vzc2lvbklkZW50aWZpZXImIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50
aWZpZXI7IH0KKworcHJpdmF0ZToKKyAgICBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uKFdlYWtQdHI8
UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeT4sIFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVy
JiYpOworCisgICAgLy8gTGVnYWN5Q0RNU2Vzc2lvbgorICAgIFdlYkNvcmU6OkxlZ2FjeUNETVNl
c3Npb25UeXBlIHR5cGUoKSBmaW5hbCB7IHJldHVybiBXZWJDb3JlOjpDRE1TZXNzaW9uVHlwZVJl
bW90ZTsgfQorICAgIHZvaWQgc2V0Q2xpZW50KFdlYkNvcmU6OkxlZ2FjeUNETVNlc3Npb25DbGll
bnQqIGNsaWVudCkgZmluYWwgeyBtX2NsaWVudCA9IGNsaWVudDsgfQorICAgIGNvbnN0IFN0cmlu
ZyYgc2Vzc2lvbklkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zZXNzaW9uSWQ7IH0KKyAgICBS
ZWZQdHI8VWludDhBcnJheT4gZ2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0cmluZyYgbWltZVR5
cGUsIFVpbnQ4QXJyYXkqIGluaXREYXRhLCBTdHJpbmcmIGRlc3RpbmF0aW9uVVJMLCB1bnNpZ25l
ZCBzaG9ydCYgZXJyb3JDb2RlLCB1aW50MzJfdCYgc3lzdGVtQ29kZSkgZmluYWw7CisgICAgdm9p
ZCByZWxlYXNlS2V5cygpIGZpbmFsOworICAgIGJvb2wgdXBkYXRlKFVpbnQ4QXJyYXkqLCBSZWZQ
dHI8VWludDhBcnJheT4mIG5leHRNZXNzYWdlLCB1bnNpZ25lZCBzaG9ydCYgZXJyb3JDb2RlLCB1
aW50MzJfdCYgc3lzdGVtQ29kZSkgZmluYWw7CisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBjYWNo
ZWRLZXlGb3JLZXlJRChjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKKworICAgIC8vIE1lc3Nh
Z2VzCisgICAgdm9pZCBzZW5kTWVzc2FnZShPcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckRhdGFS
ZWZlcmVuY2U+JiYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblVSTCk7CisgICAg
dm9pZCBzZW5kRXJyb3IoV2ViQ29yZTo6TGVnYWN5Q0RNU2Vzc2lvbkNsaWVudDo6TWVkaWFLZXlF
cnJvckNvZGUsIHVpbnQzMl90IHN5c3RlbUNvZGUpOworCisgICAgV2Vha1B0cjxSZW1vdGVMZWdh
Y3lDRE1GYWN0b3J5PiBtX2ZhY3Rvcnk7CisgICAgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50
aWZpZXIgbV9pZGVudGlmaWVyOworICAgIFdlYkNvcmU6OkxlZ2FjeUNETVNlc3Npb25DbGllbnQq
IG1fY2xpZW50OworICAgIFN0cmluZyBtX3Nlc3Npb25JZDsKKyAgICBtdXRhYmxlIEhhc2hNYXA8
U3RyaW5nLCBSZWZQdHI8QXJyYXlCdWZmZXI+PiBtX2NhY2hlZEtleUNhY2hlOworfTsKKworfQor
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbi5tZXNzYWdlcy5pbgpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi44NDdhZjYwNDAxZjkxZTM0MTBjMmZlNGQ0ZTQ0NzE1MjYxM2ExMjg2Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lD
RE1TZXNzaW9uLm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMzEgQEAKKyMgQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
IyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShM
RUdBQ1lfRU5DUllQVEVEX01FRElBKQorCittZXNzYWdlcyAtPiBSZW1vdGVMZWdhY3lDRE1TZXNz
aW9uIE5vdFJlZkNvdW50ZWQgeworICAgIFNlbmRNZXNzYWdlKE9wdGlvbmFsPElQQzo6U2hhcmVk
QnVmZmVyRGF0YVJlZmVyZW5jZT4gbWVzc2FnZSwgU3RyaW5nIGRlc3RpbmF0aW9uVVJMKQorICAg
IFNlbmRFcnJvcihlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6TGVnYWN5Q0RNU2Vzc2lvbkNsaWVudDo6
TWVkaWFLZXlFcnJvckNvZGUgZXJyb3JDb2RlLCB1aW50MzJfdCBzeXN0ZW1Db2RlKQorfQorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXIuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZjA4YWRhODMxNGZkYmQzZmY4YzdlYjcwNDc5NGUxODViZTE5ZjIyCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVMZWdhY3lDRE1T
ZXNzaW9uSWRlbnRpZmllci5oCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKExFR0FDWV9FTkNSWVBU
RURfTUVESUEpCisKKyNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworZW51bSBSZW1vdGVMZWdhY3lDRE1TZXNzaW9uSWRlbnRpZmllclR5cGUg
eyB9OwordXNpbmcgUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvbklkZW50aWZpZXIgPSBPYmplY3RJZGVu
dGlmaWVyPFJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVyVHlwZT47CisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmNwcAppbmRl
eCBlOWZmMjRkMTY3NjEwYTFiZjdmMTM2ODU2ZmZmYzcxNGFlMTY0MWM3Li44NzY1MjFkOGMwNjFk
MWY0MmQ1NjYwNDEzOWMwZDg2NGMyNjA5MGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIu
Y3BwCkBAIC0xODMsNiArMTgzLDE3IEBAIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyOjpk
ZWxldGVSZW1vdGVNZWRpYVBsYXllcihNZWRpYVBsYXllclByaXZhdGVSZW1vdGVJCiAgICAgZ3B1
UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyUHJveHk6OkRlbGV0ZU1lZGlhUGxheWVyKGlkKSwgMCk7CiB9CiAKK01l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2Vy
OjpmaW5kUmVtb3RlUGxheWVySWQoY29uc3QgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlKiBw
bGF5ZXIpCit7CisgICAgZm9yIChhdXRvIHBhaXIgOiBtX3BsYXllcnMpIHsKKyAgICAgICAgaWYg
KHBhaXIudmFsdWUgPT0gcGxheWVyKQorICAgICAgICAgICAgcmV0dXJuIHBhaXIua2V5OworICAg
IH0KKworICAgIHJldHVybiB7IH07Cit9CisKKwogdm9pZCBSZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXI6OmdldFN1cHBvcnRlZFR5cGVzKE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRp
ZmllciByZW1vdGVFbmdpbmVJZGVudGlmaWVyLCBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5z
ZW5zaXRpdmVIYXNoPiYgcmVzdWx0KQogewogICAgIGF1dG8mIGNhY2hlID0gdHlwZUNhY2hlKHJl
bW90ZUVuZ2luZUlkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmgKaW5kZXggMzIw
ZWMzMDE4OWQ2ZmM1NjJmMmFlYmZmNTFjOTBmNzRlZGY4ZGEwMS4uYmVlY2IzN2VmZjc4ZDk5ZThi
Y2Y4ZTk0M2MzZDIxNjBlOTc0OWFhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVBsYXllck1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyTWFuYWdlci5oCkBAIC02
OSw2ICs2OSw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZGVsZXRlUmVtb3RlTWVkaWFQbGF5ZXIo
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlSWRlbnRpZmllcik7CiAKKyAgICBNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGVJZGVudGlmaWVyIGZpbmRSZW1vdGVQbGF5ZXJJZChjb25zdCBXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2UqKTsKKwogcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlPiBjcmVhdGVSZW1vdGVN
ZWRpYVBsYXllcihXZWJDb3JlOjpNZWRpYVBsYXllciosIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51
bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggMzJmYzI0NWJlNmUyNjAwM2Y2Y2FjZmFlMGUwZjg1
ZTA4NDA5ZWU4ZS4uMjA2MTAwNWFiYmNhYjBiZWE3NzNlYTdjNTc2YzZmZTMzZjBkMWYwMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTMyNiw2
ICszMjYsOSBAQAogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiAjaW5jbHVkZSAiUmVtb3Rl
Q0RNRmFjdG9yeS5oIgogI2VuZGlmCisjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEp
CisjaW5jbHVkZSAiUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeS5oIgorI2VuZGlmCiAjZW5kaWYKIAog
bmFtZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAK
aW5kZXggZGQxMmQwMTlkZDFjYTQ3ZjU3ZTM2YTU0YjI3N2EwZjI4ZDgwNmM1MS4uMzAzYjY2Zjhh
NWI4NDZhMzRlNzk4N2JmMmE4MzAzZDUyNGY4ODU3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmNwcApAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtTZXNz
aW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rp
b25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiUmVtb3RlQXVkaW9TZXNzaW9uLmgiCisjaW5jbHVkZSAi
UmVtb3RlTGVnYWN5Q0RNRmFjdG9yeS5oIgogI2luY2x1ZGUgIlN0YXRpc3RpY3NEYXRhLmgiCiAj
aW5jbHVkZSAiU3RvcmFnZUFyZWFNYXAuaCIKICNpbmNsdWRlICJVc2VyRGF0YS5oIgpAQCAtMjAy
NSw2ICsyMDI2LDEzIEBAIHZvaWQgV2ViUHJvY2Vzczo6c2V0VXNlR1BVUHJvY2Vzc0Zvck1lZGlh
KGJvb2wgdXNlR1BVUHJvY2Vzc0Zvck1lZGlhKQogICAgIGVsc2UKICAgICAgICAgTWVkaWFTZXNz
aW9uSGVscGVyOjpyZXNldFNoYXJlZEhlbHBlcigpOwogI2VuZGlmCisKKyNpZiBFTkFCTEUoTEVH
QUNZX0VOQ1JZUFRFRF9NRURJQSkKKyAgICBpZiAodXNlR1BVUHJvY2Vzc0Zvck1lZGlhKQorICAg
ICAgICBlbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLmxlZ2FjeUNETUZhY3RvcnkoKS5yZWdp
c3RlckZhY3RvcnkoKTsKKyAgICBlbHNlCisgICAgICAgIExlZ2FjeUNETTo6cmVzZXRGYWN0b3Jp
ZXMoKTsKKyNlbmRpZgogfQogI2VuZGlmCiAK
</data>
<flag name="commit-queue"
          id="408377"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>393057</attachid>
            <date>2020-03-09 11:31:18 -0700</date>
            <delta_ts>2020-03-09 13:23:50 -0700</delta_ts>
            <desc>Follow up fix</desc>
            <filename>bug-208402-20200309113117.patch</filename>
            <type>text/plain</type>
            <size>1392</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4MTM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGM4NjM3MDlmMGNhNjQ4ZTAy
NjAxYjc3ZWE3MGNkYzc2MzQ4NWE4M2EuLjRmYTkzODE5YTg3YjI2OTY5NWE3YTJmMjE0YWQwNGFi
NTQxYjczYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjAtMDMtMDkgIEplciBOb2Js
ZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVVBdIEltcGxlbWVudCBMZWdh
Y3kgRU1FIEFQSSBpbiB0aGUgR1BVIFByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODQwMgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjAx
Nzg0ODg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
Rm9sbG93LXVwOiBhZGRpbmcgdGhlIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnkgYXMgYSBzdXBwbGlt
ZW50IGdvdCBkcm9wcGVkIGZyb20gdGhlIGluaXRpYWwgcGF0Y2ggYnkKKyAgICAgICAgYSBtZXJn
ZS9yZWJhc2UgbWlzdGFrZS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6
CisKIDIwMjAtMDMtMDkgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCBidWlsZCBmaXggYWZ0ZXIgcjI1ODEyOTogaW5jbHVkZSBXZWJDb3JlL1Np
bXBsZVJhbmdlLmggd2hlcmUgVmlzaWJsZVNlbGVjdGlvbiBpcyB1c2VkLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IDMwM2I2NmY4YTViODQ2YTM0ZTc5ODdiZjJh
ODMwM2Q1MjRmODg1NzAuLjNmMDlkNWJhMWU5ZWIxMmRjMmEzMGE4NmZhYzhmYjBhMGVhMTA2ZmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTI1NCw2ICsyNTQs
MTAgQEAgV2ViUHJvY2Vzczo6V2ViUHJvY2VzcygpCiAgICAgYWRkU3VwcGxlbWVudDxSZW1vdGVD
RE1GYWN0b3J5PigpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJM
RShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQorICAgIGFkZFN1cHBsZW1lbnQ8UmVtb3RlTGVnYWN5
Q0RNRmFjdG9yeT4oKTsKKyNlbmRpZgorCiAgICAgR2lnYWNhZ2U6OmZvcmJpZERpc2FibGluZ1By
aW1pdGl2ZUdpZ2FjYWdlKCk7CiB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>