<?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>238892</bug_id>
          
          <creation_ts>2022-04-06 14:34:16 -0700</creation_ts>
          <short_desc>WebProcessProxy should not hold WebsiteDataStore alive when there is no page</short_desc>
          <delta_ts>2022-06-06 16:13:29 -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>
          
          <blocked>241353</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Sihui Liu">sihui_liu</reporter>
          <assigned_to name="Sihui Liu">sihui_liu</assigned_to>
          <cc>achristensen</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>pgriffis</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1859020</commentid>
    <comment_count>0</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-04-06 14:34:16 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859022</commentid>
    <comment_count>1</comment_count>
      <attachid>456860</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-04-06 14:36:36 -0700</bug_when>
    <thetext>Created attachment 456860
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859042</commentid>
    <comment_count>2</comment_count>
      <attachid>456869</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-04-06 15:04:29 -0700</bug_when>
    <thetext>Created attachment 456869
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859136</commentid>
    <comment_count>3</comment_count>
      <attachid>456887</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-04-06 21:19:42 -0700</bug_when>
    <thetext>Created attachment 456887
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859789</commentid>
    <comment_count>4</comment_count>
      <attachid>457092</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-04-08 10:46:49 -0700</bug_when>
    <thetext>Created attachment 457092
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859841</commentid>
    <comment_count>5</comment_count>
      <attachid>457110</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-04-08 12:39:08 -0700</bug_when>
    <thetext>Created attachment 457110
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859877</commentid>
    <comment_count>6</comment_count>
      <attachid>457115</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-04-08 13:51:59 -0700</bug_when>
    <thetext>Created attachment 457115
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1860967</commentid>
    <comment_count>7</comment_count>
      <attachid>457489</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-04-12 16:22:37 -0700</bug_when>
    <thetext>Created attachment 457489
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1861259</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-04-13 14:35:14 -0700</bug_when>
    <thetext>&lt;rdar://problem/91715517&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862469</commentid>
    <comment_count>9</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2022-04-19 02:28:13 -0700</bug_when>
    <thetext>The problem is a crash when trying to add a web process to the cache in WebProcessCache::CachedProcess::CachedProcess(Ref&lt;WebProcessProxy&gt;&amp;&amp; process) because we hit RELEASE_ASSERT(dataStore). In current code, the process proxy keeps a reference of the data store, so when added to the cache it still has the data sore, but now the data store is destroyed before the process is added to the cache. This happens in the tests because every test case is creating a new web context (WebProcessPool) with a new website data store. When the test case finishes the web context is destroyed and the data store too. Since WebPageProxy::close() sends the close message in the following run loop iteration, WebProcessProxy::maybeShutDown() (which adds the process to the cache) is called when the new data store has already been removed. We should make WebProcessCache::canCacheProcess() return false if the process session ID doesn&apos;t have a valid data store.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862471</commentid>
    <comment_count>10</comment_count>
      <attachid>457489</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2022-04-19 02:31:19 -0700</bug_when>
    <thetext>Comment on attachment 457489
Patch

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

&gt; Source/WebKit/UIProcess/WebProcessCache.cpp:83
&gt; -    auto sessionID = process.websiteDataStore().sessionID();
&gt; -    if (sessionID.isEphemeral() &amp;&amp; !process.processPool().hasPagesUsingWebsiteDataStore(process.websiteDataStore())) {
&gt; +    auto sessionID = process.sessionID();
&gt; +    if (sessionID.isEphemeral() &amp;&amp; !process.processPool().hasPagesUsingWebsiteDataStore(process.sessionID())) {
&gt;          WEBPROCESSCACHE_RELEASE_LOG(&quot;canCacheProcess: Not caching process because this session has been destroyed&quot;, process.processIdentifier());
&gt;          return false;
&gt;      }

Why are we doing this only for ephemeral sessions? With this patch I think we can do:

if (!WebsiteDataStore::existingDataStoreForSessionID(process.sessionID())

if there isn&apos;t a data store for the process session ID is because the session has been destroyed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1863327</commentid>
    <comment_count>11</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-04-21 10:03:57 -0700</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #10)
&gt; Comment on attachment 457489 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=457489&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/UIProcess/WebProcessCache.cpp:83
&gt; &gt; -    auto sessionID = process.websiteDataStore().sessionID();
&gt; &gt; -    if (sessionID.isEphemeral() &amp;&amp; !process.processPool().hasPagesUsingWebsiteDataStore(process.websiteDataStore())) {
&gt; &gt; +    auto sessionID = process.sessionID();
&gt; &gt; +    if (sessionID.isEphemeral() &amp;&amp; !process.processPool().hasPagesUsingWebsiteDataStore(process.sessionID())) {
&gt; &gt;          WEBPROCESSCACHE_RELEASE_LOG(&quot;canCacheProcess: Not caching process because this session has been destroyed&quot;, process.processIdentifier());
&gt; &gt;          return false;
&gt; &gt;      }
&gt; 
&gt; Why are we doing this only for ephemeral sessions? With this patch I think
&gt; we can do:
&gt; 
&gt; if (!WebsiteDataStore::existingDataStoreForSessionID(process.sessionID())
&gt; 
&gt; if there isn&apos;t a data store for the process session ID is because the
&gt; session has been destroyed.

Thanks for looking into this! I will update the patch as suggested.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1863329</commentid>
    <comment_count>12</comment_count>
      <attachid>458073</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-04-21 10:05:20 -0700</bug_when>
    <thetext>Created attachment 458073
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1864363</commentid>
    <comment_count>13</comment_count>
      <attachid>458073</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-04-25 23:11:12 -0700</bug_when>
    <thetext>Comment on attachment 458073
Patch

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

&gt; Source/WebKit/UIProcess/ProvisionalPageProxy.cpp:119
&gt; +        if (m_process-&gt;sessionID() != m_page.websiteDataStore().sessionID())

So we could now have a WebProcessProxy with a session ID pointing to nothing.
Should we proactively destroy WebProcessProxies in case its session data store is destroyed?

&gt; Source/WebKit/UIProcess/WebProcessProxy.cpp:1752
&gt; +    return m_sessionID;

We could probably add an ASSERT(m_sessionID.isValid()).
Previously we would return m_websiteDataStore which might cause a nullptr crash.
If we return an invalid session ID and query the website data store map, we will corrupt the map.

&gt; Source/WebKit/UIProcess/WebProcessProxy.h:-170
&gt; -    WebsiteDataStore&amp; websiteDataStore() const { ASSERT(m_websiteDataStore); return *m_websiteDataStore; }

WebProcessProxy could continue providing a WebsiteDataStore* getter() which would call WebsiteDataStore::existingDataStoreForSessionID under the hood.
If we later think we should use a WeakPtr&lt;WebsiteDataStore&gt; instead, that will make the code easier to migrate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1866950</commentid>
    <comment_count>14</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-05-05 12:27:39 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #13)
&gt; Comment on attachment 458073 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=458073&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/UIProcess/ProvisionalPageProxy.cpp:119
&gt; &gt; +        if (m_process-&gt;sessionID() != m_page.websiteDataStore().sessionID())
&gt; 
&gt; So we could now have a WebProcessProxy with a session ID pointing to nothing.
&gt; Should we proactively destroy WebProcessProxies in case its session data
&gt; store is destroyed?

I think WebProcessProxy may have an invalid sessionID if it&apos;s pre-warmed; so we cannot say WebProcessProxy with invalid session is invalid.

&gt; 
&gt; &gt; Source/WebKit/UIProcess/WebProcessProxy.cpp:1752
&gt; &gt; +    return m_sessionID;
&gt; 
&gt; We could probably add an ASSERT(m_sessionID.isValid()).
&gt; Previously we would return m_websiteDataStore which might cause a nullptr
&gt; crash.
&gt; If we return an invalid session ID and query the website data store map, we
&gt; will corrupt the map.
&gt; 
&gt; &gt; Source/WebKit/UIProcess/WebProcessProxy.h:-170
&gt; &gt; -    WebsiteDataStore&amp; websiteDataStore() const { ASSERT(m_websiteDataStore); return *m_websiteDataStore; }
&gt; 
&gt; WebProcessProxy could continue providing a WebsiteDataStore* getter() which
&gt; would call WebsiteDataStore::existingDataStoreForSessionID under the hood.
&gt; If we later think we should use a WeakPtr&lt;WebsiteDataStore&gt; instead, that
&gt; will make the code easier to migrate.

Sounds good; and I can add the SessionID validity check inside websiteDataStore().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1868903</commentid>
    <comment_count>15</comment_count>
      <attachid>459325</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-05-13 16:09:38 -0700</bug_when>
    <thetext>Created attachment 459325
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1869744</commentid>
    <comment_count>16</comment_count>
      <attachid>459509</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-05-17 11:18:41 -0700</bug_when>
    <thetext>Created attachment 459509
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1869768</commentid>
    <comment_count>17</comment_count>
      <attachid>459511</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-05-17 12:54:48 -0700</bug_when>
    <thetext>Created attachment 459511
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1869903</commentid>
    <comment_count>18</comment_count>
      <attachid>459522</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2022-05-17 19:19:14 -0700</bug_when>
    <thetext>Created attachment 459522
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1869910</commentid>
    <comment_count>19</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-05-17 20:25:00 -0700</bug_when>
    <thetext>Committed r294381 (250678@main): &lt;https://commits.webkit.org/250678@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 459522.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456860</attachid>
            <date>2022-04-06 14:36:36 -0700</date>
            <delta_ts>2022-04-06 15:13:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238892-20220406143635.patch</filename>
            <type>text/plain</type>
            <size>33171</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMzk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGY0Y2JjNzEwMWVmYWNjNmE1
NWNhOTRjMGU3YjcwODVkNmZjYmU3NTguLjliMzUyOGUyZGQwZmY5Yzc5MjVmNzAwNGI1OGEyYjUy
MDlhYWJhMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjAgQEAKKzIwMjItMDQtMDYgIFNpaHVpIExp
dSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViUHJvY2Vzc1Byb3h5IHNob3Vs
ZCBub3QgaG9sZCBXZWJzaXRlRGF0YVN0b3JlIGFsaXZlIHdoZW4gdGhlcmUgaXMgbm8gcGFnZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4ODkyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBXZWJQ
cm9jZXNzUHJveHkgaG9sZCBTZXNzaW9uSUQgaW5zdGVhZCBvZiBzdHJvbmcgcmVmZXJlbmNlIHRv
IFdlYnNpdGVEYXRhU3RvcmUuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkdQVVByb2Nlc3NQcm94eTo6Z2V0R1BVUHJvY2Vz
c0Nvbm5lY3Rpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlByb3Zpc2lvbmFsUGFnZVByb3h5OjpQcm92aXNpb25hbFBh
Z2VQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlByb3Zpc2lvbmFsUGFnZVByb3h5Ojp+UHJvdmlz
aW9uYWxQYWdlUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94
eS5oOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQcm94eTo6d2Vic2l0ZURhdGFT
dG9yZSBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlN1c3BlbmRlZFBhZ2VQcm94eTo6ZmluZFJldXNhYmxlU3VzcGVu
ZGVkUGFnZVByb2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZENhY2hl
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRDYWNoZTo6cmVtb3ZlRW50cmll
c0ZvclNlc3Npb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJMb2NrUmVnaXN0cnlQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkxvY2tSZWdpc3RyeVByb3h5OjpyZXF1ZXN0TG9jayk6
CisgICAgICAgIChXZWJLaXQ6OldlYkxvY2tSZWdpc3RyeVByb3h5OjpyZWxlYXNlTG9jayk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkxvY2tSZWdpc3RyeVByb3h5OjphYm9ydExvY2tSZXF1ZXN0KToK
KyAgICAgICAgKFdlYktpdDo6V2ViTG9ja1JlZ2lzdHJ5UHJveHk6OnNuYXBzaG90KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViTG9ja1JlZ2lzdHJ5UHJveHk6OmNsaWVudElzR29pbmdBd2F5KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViTG9ja1JlZ2lzdHJ5UHJveHk6OnByb2Nlc3NEaWRFeGl0KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5Ojpzd2FwVG9Qcm92aXNpb25hbFBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OmNvbW1pdFByb3Zpc2lvbmFsUGFnZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlByb2Nlc3NDYWNoZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDYWNoZTo6Y2Fu
Q2FjaGVQcm9jZXNzIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0NhY2hlOjp0
YWtlUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDYWNoZTo6Y2xlYXJBbGxQ
cm9jZXNzZXNGb3JTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0NhY2hlOjpD
YWNoZWRQcm9jZXNzOjpDYWNoZWRQcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNo
UmVtb3RlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NGb3JSZWdpc3RyYWJsZURvbWFpbik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwYWdlQmVnaW5Vc2luZ1dlYnNpdGVEYXRh
U3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cGFnZUVuZFVzaW5nV2Vi
c2l0ZURhdGFTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpoYXNQYWdl
c1VzaW5nV2Vic2l0ZURhdGFTdG9yZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQb29sOjpwcm9jZXNzRm9yTmF2aWdhdGlvbkludGVybmFsKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpXZWJQcm9jZXNzUHJveHkp
OgorICAgICAgICAoV2ViS2l0OjptX3dlYkxvY2tSZWdpc3RyeSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQcm94eTo6c2V0V2Vic2l0ZURhdGFTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQcm94eTo6aXNEdW1teVByb2Nlc3NQcm94eSBjb25zdCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6dXBkYXRlUmVnaXN0cmF0aW9uV2l0aERhdGFTdG9yZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6YWRkRXhpc3RpbmdXZWJQYWdlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpyZW1vdmVXZWJQYWdlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24p
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxM
b2FkRm9yTWFpbkZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpzZXNz
aW9uSUQgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojp3ZWJzaXRlRGF0YVN0b3JlIGNvbnN0KTog
RGVsZXRlZC4KKwogMjAyMi0wNC0wNSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxl
LmNvbT4KIAogICAgICAgICBQYXNzIGFuIElPU3VyZmFjZVBvb2wgdG8gSW1hZ2VCdWZmZXI6OnJl
bGVhc2VCdWZmZXJUb1Bvb2woKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
R1BVL0dQVVByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HUFUvR1BV
UHJvY2Vzc1Byb3h5LmNwcAppbmRleCA4M2FmMWU1NWRkZjc0ODgyMzlmODY5MTkyNzcyMGFiNmE4
NjMxOTdkLi5iNjMxOGQ3ZGE4ODBjYjAzOWQxYWE4ZmI0YTU2OWNmZTY1ZTE5M2JjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmNwcApAQCAtMzg3
LDcgKzM4Nyw4IEBAIHZvaWQgR1BVUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzV2lsbFNodXREb3duKElQ
Qzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKIAogdm9pZCBHUFVQcm9jZXNzUHJveHk6OmdldEdQ
VVByb2Nlc3NDb25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYgd2ViUHJvY2Vzc1Byb3h5LCBjb25z
dCBHUFVQcm9jZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIE1lc3NhZ2VzOjpX
ZWJQcm9jZXNzUHJveHk6OkdldEdQVVByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHkmJiBy
ZXBseSkKIHsKLSAgICBhZGRTZXNzaW9uKHdlYlByb2Nlc3NQcm94eS53ZWJzaXRlRGF0YVN0b3Jl
KCkpOworICAgIGlmIChhdXRvKiBkYXRhU3RvcmUgPSBXZWJzaXRlRGF0YVN0b3JlOjpleGlzdGlu
Z0RhdGFTdG9yZUZvclNlc3Npb25JRCh3ZWJQcm9jZXNzUHJveHkuc2Vzc2lvbklEKCkpKQorICAg
ICAgICBhZGRTZXNzaW9uKCpkYXRhU3RvcmUpOwogCiAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1
c3BlbnNpb24sICIlcCAtIEdQVVByb2Nlc3NQcm94eSBpcyB0YWtpbmcgYSBiYWNrZ3JvdW5kIGFz
c2VydGlvbiBiZWNhdXNlIGEgd2ViIHByb2Nlc3MgaXMgcmVxdWVzdGluZyBhIGNvbm5lY3Rpb24i
LCB0aGlzKTsKICAgICBzdGFydFJlc3BvbnNpdmVuZXNzVGltZXIoVXNlTGF6eVN0b3A6Ok5vKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcApp
bmRleCA2MmI4NWI3MjYzZjJhODEyNDQ0NGYwZmUyNWNiMjIwMjIwNDI3YzhhLi5hOTA2MDY1NGUz
NDRkODA3MDgzMDI0ZGU2YjYwNjFjMmYwMGViZGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCkBAIC04Myw4ICs4MywxMSBAQCBQcm92
aXNpb25hbFBhZ2VQcm94eTo6UHJvdmlzaW9uYWxQYWdlUHJveHkoV2ViUGFnZVByb3h5JiBwYWdl
LCBSZWY8V2ViUHJvY2Vzc1BybwogICAgIG1fcHJvY2Vzcy0+YWRkTWVzc2FnZVJlY2VpdmVyKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV93ZWJQYWdlSUQs
ICp0aGlzKTsKICAgICBtX3Byb2Nlc3MtPmFkZFByb3Zpc2lvbmFsUGFnZVByb3h5KCp0aGlzKTsK
IAotICAgIGlmICgmbV9wcm9jZXNzLT53ZWJzaXRlRGF0YVN0b3JlKCkgIT0gJm1fcGFnZS53ZWJz
aXRlRGF0YVN0b3JlKCkpCi0gICAgICAgIG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5wYWdlQmVn
aW5Vc2luZ1dlYnNpdGVEYXRhU3RvcmUobV9wYWdlLmlkZW50aWZpZXIoKSwgbV9wcm9jZXNzLT53
ZWJzaXRlRGF0YVN0b3JlKCkpOworICAgIGF1dG8gcHJvY2Vzc1Nlc3Npb25JRCA9IG1fcHJvY2Vz
cy0+c2Vzc2lvbklEKCk7CisgICAgaWYgKHByb2Nlc3NTZXNzaW9uSUQgIT0gbV9wYWdlLndlYnNp
dGVEYXRhU3RvcmUoKS5zZXNzaW9uSUQoKSkKKyAgICAgICAgbV9wcm9jZXNzLT5wcm9jZXNzUG9v
bCgpLnBhZ2VCZWdpblVzaW5nV2Vic2l0ZURhdGFTdG9yZShtX3BhZ2UuaWRlbnRpZmllcigpLCBw
cm9jZXNzU2Vzc2lvbklEKTsKKyAgICBtX3dlYnNpdGVEYXRhU3RvcmUgPSBXZWJzaXRlRGF0YVN0
b3JlOjpleGlzdGluZ0RhdGFTdG9yZUZvclNlc3Npb25JRChwcm9jZXNzU2Vzc2lvbklEKTsKKyAg
ICBBU1NFUlQobV93ZWJzaXRlRGF0YVN0b3JlKTsKIAogICAgIC8vIElmIHdlIGFyZSByZWF0dGFj
aGluZyB0byBhIFN1c3BlbmRlZFBhZ2UsIHRoZW4gdGhlIFdlYlByb2Nlc3MnIFdlYlBhZ2UgYWxy
ZWFkeSBleGlzdHMgYW5kCiAgICAgLy8gV2ViUGFnZVByb3h5OjpkaWRDcmVhdGVNYWluRnJhbWUo
KSB3aWxsIG5vdCBiZSBjYWxsZWQgdG8gaW5pdGlhbGl6ZSBtX21haW5GcmFtZS4gSW4gc3VjaApA
QCAtMTEyLDggKzExNSw4IEBAIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojp+UHJvdmlzaW9uYWxQYWdl
UHJveHkoKQogICAgIGlmICghbV93YXNDb21taXR0ZWQpIHsKICAgICAgICAgbV9wYWdlLmluc3Bl
Y3RvckNvbnRyb2xsZXIoKS53aWxsRGVzdHJveVByb3Zpc2lvbmFsUGFnZSgqdGhpcyk7CiAKLSAg
ICAgICAgaWYgKCZtX3Byb2Nlc3MtPndlYnNpdGVEYXRhU3RvcmUoKSAhPSAmbV9wYWdlLndlYnNp
dGVEYXRhU3RvcmUoKSkKLSAgICAgICAgICAgIG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5wYWdl
RW5kVXNpbmdXZWJzaXRlRGF0YVN0b3JlKG1fcGFnZS5pZGVudGlmaWVyKCksIG1fcHJvY2Vzcy0+
d2Vic2l0ZURhdGFTdG9yZSgpKTsKKyAgICAgICAgaWYgKG1fcHJvY2Vzcy0+c2Vzc2lvbklEKCkg
IT0gbV9wYWdlLndlYnNpdGVEYXRhU3RvcmUoKS5zZXNzaW9uSUQoKSkKKyAgICAgICAgICAgIG1f
cHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5wYWdlRW5kVXNpbmdXZWJzaXRlRGF0YVN0b3JlKG1fcGFn
ZS5pZGVudGlmaWVyKCksIG1fcHJvY2Vzcy0+c2Vzc2lvbklEKCkpOwogCiAgICAgICAgIG1fcHJv
Y2Vzcy0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Om1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSwgbV93ZWJQYWdlSUQpOwogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpDbG9zZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1By
b3Zpc2lvbmFsUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25h
bFBhZ2VQcm94eS5oCmluZGV4IDIyZDJiYjEyY2E2YWQ1OGYyZWY3YjdhOTk1OTNiM2YwNmU2NGE4
OGYuLjJkMDgwYTdkZjkwZjFlYzIyOWMwOTEwMzMyODk4NGI1MDBmNzNmODkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaApAQCAtODMsNiArODMs
NyBAQCBwdWJsaWM6CiAgICAgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNzU3dh
cFJlcXVlc3RlZEJ5Q2xpZW50KCkgY29uc3QgeyByZXR1cm4gbV9wcm9jZXNzU3dhcFJlcXVlc3Rl
ZEJ5Q2xpZW50OyB9CiAgICAgdWludDY0X3QgbmF2aWdhdGlvbklEKCkgY29uc3QgeyByZXR1cm4g
bV9uYXZpZ2F0aW9uSUQ7IH0KICAgICBjb25zdCBVUkwmIHByb3Zpc2lvbmFsVVJMKCkgY29uc3Qg
eyByZXR1cm4gbV9wcm92aXNpb25hbExvYWRVUkw7IH0KKyAgICBXZWJzaXRlRGF0YVN0b3JlKiB3
ZWJzaXRlRGF0YVN0b3JlKCkgY29uc3QgeyByZXR1cm4gbV93ZWJzaXRlRGF0YVN0b3JlLmdldCgp
OyB9CiAKICAgICBib29sIGlzUHJvY2Vzc1N3YXBwaW5nT25OYXZpZ2F0aW9uUmVzcG9uc2UoKSBj
b25zdCB7IHJldHVybiBtX2lzUHJvY2Vzc1N3YXBwaW5nT25OYXZpZ2F0aW9uUmVzcG9uc2U7IH0K
IApAQCAtMTYzLDYgKzE2NCw3IEBAIHByaXZhdGU6CiAgICAgV2ViUGFnZVByb3h5JiBtX3BhZ2U7
CiAgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV93ZWJQYWdlSUQ7CiAgICAgUmVmPFdlYlBy
b2Nlc3NQcm94eT4gbV9wcm9jZXNzOworICAgIFJlZlB0cjxXZWJzaXRlRGF0YVN0b3JlPiBtX3dl
YnNpdGVEYXRhU3RvcmU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPERyYXdpbmdBcmVhUHJveHk+IG1f
ZHJhd2luZ0FyZWE7CiAgICAgUmVmUHRyPFdlYkZyYW1lUHJveHk+IG1fbWFpbkZyYW1lOwogICAg
IHVpbnQ2NF90IG1fbmF2aWdhdGlvbklEOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1
c3BlbmRlZFBhZ2VQcm94eS5jcHAKaW5kZXggY2NiZDYxMjg3ODUwZTczMTY5MWEzMzBjNGUzMGFk
M2EzNmUxZjA3ZC4uNjJmMWRhMzUwNzY4OTUxNTQwYzhlMDFmNDFjZjgzNjExZmEzYWUxZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwCkBAIC01
Myw3ICs1Myw3IEBAIFJlZlB0cjxXZWJQcm9jZXNzUHJveHk+IFN1c3BlbmRlZFBhZ2VQcm94eTo6
ZmluZFJldXNhYmxlU3VzcGVuZGVkUGFnZVByb2Nlc3MoV2ViCiB7CiAgICAgZm9yIChhdXRvKiBz
dXNwZW5kZWRQYWdlIDogYWxsU3VzcGVuZGVkUGFnZXMoKSkgewogICAgICAgICBhdXRvJiBwcm9j
ZXNzID0gc3VzcGVuZGVkUGFnZS0+cHJvY2VzcygpOwotICAgICAgICBpZiAoJnByb2Nlc3MucHJv
Y2Vzc1Bvb2woKSA9PSAmcHJvY2Vzc1Bvb2wgJiYgcHJvY2Vzcy5yZWdpc3RyYWJsZURvbWFpbigp
ID09IHJlZ2lzdHJhYmxlRG9tYWluICYmICZwcm9jZXNzLndlYnNpdGVEYXRhU3RvcmUoKSA9PSAm
ZGF0YVN0b3JlICYmIHByb2Nlc3MuY3Jvc3NPcmlnaW5Nb2RlKCkgIT0gQ3Jvc3NPcmlnaW5Nb2Rl
OjpJc29sYXRlZCAmJiBwcm9jZXNzLmNhcHRpdmVQb3J0YWxNb2RlKCkgPT0gY2FwdGl2ZVBvcnRh
bE1vZGUpCisgICAgICAgIGlmICgmcHJvY2Vzcy5wcm9jZXNzUG9vbCgpID09ICZwcm9jZXNzUG9v
bCAmJiBwcm9jZXNzLnJlZ2lzdHJhYmxlRG9tYWluKCkgPT0gcmVnaXN0cmFibGVEb21haW4gJiYg
cHJvY2Vzcy5zZXNzaW9uSUQoKSA9PSBkYXRhU3RvcmUuc2Vzc2lvbklEKCkgJiYgcHJvY2Vzcy5j
cm9zc09yaWdpbk1vZGUoKSAhPSBDcm9zc09yaWdpbk1vZGU6Oklzb2xhdGVkICYmIHByb2Nlc3Mu
Y2FwdGl2ZVBvcnRhbE1vZGUoKSA9PSBjYXB0aXZlUG9ydGFsTW9kZSkKICAgICAgICAgICAgIHJl
dHVybiAmcHJvY2VzczsKICAgICB9CiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZENhY2hlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkQ2FjaGUuY3BwCmluZGV4IDY0YTFhOWY2OWM2
YzQ2MjI0NDE3YmRhYzIwY2MwZTgxNDNmNWEwMzQuLmU1N2Q3OTRjYWUwODVlMzYyZWE4YmJiYTIx
ZGJmZDFkZjIwY2MyYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJh
Y2tGb3J3YXJkQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tG
b3J3YXJkQ2FjaGUuY3BwCkBAIC0xMzQsNyArMTM0LDcgQEAgdm9pZCBXZWJCYWNrRm9yd2FyZENh
Y2hlOjpyZW1vdmVFbnRyaWVzRm9yUHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MpCiB2
b2lkIFdlYkJhY2tGb3J3YXJkQ2FjaGU6OnJlbW92ZUVudHJpZXNGb3JTZXNzaW9uKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCkKIHsKICAgICByZW1vdmVFbnRyaWVzTWF0Y2hpbmcoW3Nlc3Npb25J
RF0oYXV0byYgaXRlbSkgewotICAgICAgICByZXR1cm4gaXRlbS5iYWNrRm9yd2FyZENhY2hlRW50
cnkoKS0+cHJvY2VzcygpLndlYnNpdGVEYXRhU3RvcmUoKS5zZXNzaW9uSUQoKSA9PSBzZXNzaW9u
SUQ7CisgICAgICAgIHJldHVybiBpdGVtLmJhY2tGb3J3YXJkQ2FjaGVFbnRyeSgpLT5wcm9jZXNz
KCkuc2Vzc2lvbklEKCkgPT0gc2Vzc2lvbklEOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJMb2NrUmVnaXN0cnlQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJMb2NrUmVnaXN0cnlQcm94eS5jcHAKaW5kZXggZGU4NzkwZWMx
ZjIwMGRmNTE0YjY0ZDU0NTkyNTY0OGUzMTgyMmMyNy4uYzgzZWI2NTc1ODg4ZWJmNDdmMTc4ZWYx
NDJlMjNiZWY5MDlhZmZmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
TG9ja1JlZ2lzdHJ5UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkxv
Y2tSZWdpc3RyeVByb3h5LmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIldlYlByb2Nl
c3NQcm94eS5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlIDxXZWJD
b3JlL1dlYkxvY2tJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9XZWJMb2NrTWFuYWdl
clNuYXBzaG90Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9XZWJMb2NrUmVnaXN0cnkuaD4KIAogbmFt
ZXNwYWNlIFdlYktpdCB7CkBAIC01NSw0NCArNTYsNTggQEAgdm9pZCBXZWJMb2NrUmVnaXN0cnlQ
cm94eTo6cmVxdWVzdExvY2soV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYgY2xpZW50T3JpZ2luLCBX
ZWIKICAgICBNRVNTQUdFX0NIRUNLKGNsaWVudElELnByb2Nlc3NJZGVudGlmaWVyKCkgPT0gbV9w
cm9jZXNzLmNvcmVQcm9jZXNzSWRlbnRpZmllcigpKTsKICAgICBtX2hhc0V2ZXJSZXF1ZXN0ZWRM
b2NrcyA9IHRydWU7CiAKLSAgICBtX3Byb2Nlc3Mud2Vic2l0ZURhdGFTdG9yZSgpLndlYkxvY2tS
ZWdpc3RyeSgpLnJlcXVlc3RMb2NrKFdURk1vdmUoY2xpZW50T3JpZ2luKSwgbG9ja0lkZW50aWZp
ZXIsIGNsaWVudElELCBXVEZNb3ZlKG5hbWUpLCBsb2NrTW9kZSwgc3RlYWwsIGlmQXZhaWxhYmxl
LCBbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgbG9ja0lkZW50aWZpZXIsIGNsaWVudElE
XShib29sIHN1Y2Nlc3MpIHsKLSAgICAgICAgaWYgKHdlYWtUaGlzKQotICAgICAgICAgICAgd2Vh
a1RoaXMtPm1fcHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVXZWJMb2NrUmVnaXN0cnk6OkRp
ZENvbXBsZXRlTG9ja1JlcXVlc3QobG9ja0lkZW50aWZpZXIsIGNsaWVudElELCBzdWNjZXNzKSwg
MCk7Ci0gICAgfSwgW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIGxvY2tJZGVudGlmaWVy
LCBjbGllbnRJRF0gewotICAgICAgICBpZiAod2Vha1RoaXMpCi0gICAgICAgICAgICB3ZWFrVGhp
cy0+bV9wcm9jZXNzLnNlbmQoTWVzc2FnZXM6OlJlbW90ZVdlYkxvY2tSZWdpc3RyeTo6RGlkU3Rl
YWxMb2NrKGxvY2tJZGVudGlmaWVyLCBjbGllbnRJRCksIDApOwotICAgIH0pOworICAgIGlmIChh
dXRvKiBkYXRhU3RvcmUgPSBXZWJzaXRlRGF0YVN0b3JlOjpleGlzdGluZ0RhdGFTdG9yZUZvclNl
c3Npb25JRChtX3Byb2Nlc3Muc2Vzc2lvbklEKCkpKSB7CisgICAgICAgIGRhdGFTdG9yZS0+d2Vi
TG9ja1JlZ2lzdHJ5KCkucmVxdWVzdExvY2soV1RGTW92ZShjbGllbnRPcmlnaW4pLCBsb2NrSWRl
bnRpZmllciwgY2xpZW50SUQsIFdURk1vdmUobmFtZSksIGxvY2tNb2RlLCBzdGVhbCwgaWZBdmFp
bGFibGUsIFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBsb2NrSWRlbnRpZmllciwgY2xp
ZW50SURdKGJvb2wgc3VjY2VzcykgeworICAgICAgICAgICAgaWYgKHdlYWtUaGlzKQorICAgICAg
ICAgICAgICAgIHdlYWtUaGlzLT5tX3Byb2Nlc3Muc2VuZChNZXNzYWdlczo6UmVtb3RlV2ViTG9j
a1JlZ2lzdHJ5OjpEaWRDb21wbGV0ZUxvY2tSZXF1ZXN0KGxvY2tJZGVudGlmaWVyLCBjbGllbnRJ
RCwgc3VjY2VzcyksIDApOworICAgICAgICB9LCBbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMg
fSwgbG9ja0lkZW50aWZpZXIsIGNsaWVudElEXSB7CisgICAgICAgICAgICBpZiAod2Vha1RoaXMp
CisgICAgICAgICAgICAgICAgd2Vha1RoaXMtPm1fcHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpSZW1v
dGVXZWJMb2NrUmVnaXN0cnk6OkRpZFN0ZWFsTG9jayhsb2NrSWRlbnRpZmllciwgY2xpZW50SUQp
LCAwKTsKKyAgICAgICAgfSk7CisgICAgfSBlbHNlCisgICAgICAgIG1fcHJvY2Vzcy5zZW5kKE1l
c3NhZ2VzOjpSZW1vdGVXZWJMb2NrUmVnaXN0cnk6OkRpZENvbXBsZXRlTG9ja1JlcXVlc3QobG9j
a0lkZW50aWZpZXIsIGNsaWVudElELCBmYWxzZSksIDApOwogfQogCiB2b2lkIFdlYkxvY2tSZWdp
c3RyeVByb3h5OjpyZWxlYXNlTG9jayhXZWJDb3JlOjpDbGllbnRPcmlnaW4mJiBjbGllbnRPcmln
aW4sIFdlYkNvcmU6OldlYkxvY2tJZGVudGlmaWVyIGxvY2tJZGVudGlmaWVyLCBXZWJDb3JlOjpT
Y3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciBjbGllbnRJRCwgU3RyaW5nJiYgbmFtZSkK
IHsKICAgICBNRVNTQUdFX0NIRUNLKGxvY2tJZGVudGlmaWVyLnByb2Nlc3NJZGVudGlmaWVyKCkg
PT0gbV9wcm9jZXNzLmNvcmVQcm9jZXNzSWRlbnRpZmllcigpKTsKICAgICBNRVNTQUdFX0NIRUNL
KGNsaWVudElELnByb2Nlc3NJZGVudGlmaWVyKCkgPT0gbV9wcm9jZXNzLmNvcmVQcm9jZXNzSWRl
bnRpZmllcigpKTsKLSAgICBtX3Byb2Nlc3Mud2Vic2l0ZURhdGFTdG9yZSgpLndlYkxvY2tSZWdp
c3RyeSgpLnJlbGVhc2VMb2NrKFdURk1vdmUoY2xpZW50T3JpZ2luKSwgbG9ja0lkZW50aWZpZXIs
IGNsaWVudElELCBXVEZNb3ZlKG5hbWUpKTsKKyAgICBpZiAoYXV0byogZGF0YVN0b3JlID0gV2Vi
c2l0ZURhdGFTdG9yZTo6ZXhpc3RpbmdEYXRhU3RvcmVGb3JTZXNzaW9uSUQobV9wcm9jZXNzLnNl
c3Npb25JRCgpKSkKKyAgICAgICAgZGF0YVN0b3JlLT53ZWJMb2NrUmVnaXN0cnkoKS5yZWxlYXNl
TG9jayhXVEZNb3ZlKGNsaWVudE9yaWdpbiksIGxvY2tJZGVudGlmaWVyLCBjbGllbnRJRCwgV1RG
TW92ZShuYW1lKSk7CiB9CiAKIHZvaWQgV2ViTG9ja1JlZ2lzdHJ5UHJveHk6OmFib3J0TG9ja1Jl
cXVlc3QoV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYgY2xpZW50T3JpZ2luLCBXZWJDb3JlOjpXZWJM
b2NrSWRlbnRpZmllciBsb2NrSWRlbnRpZmllciwgV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dElkZW50aWZpZXIgY2xpZW50SUQsIFN0cmluZyYmIG5hbWUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgTUVTU0FHRV9DSEVDSyhs
b2NrSWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmllcigpID09IG1fcHJvY2Vzcy5jb3JlUHJvY2Vz
c0lkZW50aWZpZXIoKSk7CiAgICAgTUVTU0FHRV9DSEVDSyhjbGllbnRJRC5wcm9jZXNzSWRlbnRp
ZmllcigpID09IG1fcHJvY2Vzcy5jb3JlUHJvY2Vzc0lkZW50aWZpZXIoKSk7Ci0gICAgbV9wcm9j
ZXNzLndlYnNpdGVEYXRhU3RvcmUoKS53ZWJMb2NrUmVnaXN0cnkoKS5hYm9ydExvY2tSZXF1ZXN0
KFdURk1vdmUoY2xpZW50T3JpZ2luKSwgbG9ja0lkZW50aWZpZXIsIGNsaWVudElELCBXVEZNb3Zl
KG5hbWUpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgaWYgKGF1dG8qIGRhdGFT
dG9yZSA9IFdlYnNpdGVEYXRhU3RvcmU6OmV4aXN0aW5nRGF0YVN0b3JlRm9yU2Vzc2lvbklEKG1f
cHJvY2Vzcy5zZXNzaW9uSUQoKSkpCisgICAgICAgIGRhdGFTdG9yZS0+d2ViTG9ja1JlZ2lzdHJ5
KCkuYWJvcnRMb2NrUmVxdWVzdChXVEZNb3ZlKGNsaWVudE9yaWdpbiksIGxvY2tJZGVudGlmaWVy
LCBjbGllbnRJRCwgV1RGTW92ZShuYW1lKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwor
ICAgIGVsc2UKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwogfQogCiB2b2lkIFdl
YkxvY2tSZWdpc3RyeVByb3h5OjpzbmFwc2hvdChXZWJDb3JlOjpDbGllbnRPcmlnaW4mJiBjbGll
bnRPcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6V2ViTG9ja01hbmFnZXJT
bmFwc2hvdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBtX3Byb2Nlc3Mud2Vic2l0
ZURhdGFTdG9yZSgpLndlYkxvY2tSZWdpc3RyeSgpLnNuYXBzaG90KFdURk1vdmUoY2xpZW50T3Jp
Z2luKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIGlmIChhdXRvKiBkYXRhU3Rv
cmUgPSBXZWJzaXRlRGF0YVN0b3JlOjpleGlzdGluZ0RhdGFTdG9yZUZvclNlc3Npb25JRChtX3By
b2Nlc3Muc2Vzc2lvbklEKCkpKQorICAgICAgICBkYXRhU3RvcmUtPndlYkxvY2tSZWdpc3RyeSgp
LnNuYXBzaG90KFdURk1vdmUoY2xpZW50T3JpZ2luKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOworICAgIGVsc2UKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV2ViQ29yZTo6V2ViTG9j
a01hbmFnZXJTbmFwc2hvdCB7IH0pOwogfQogCiB2b2lkIFdlYkxvY2tSZWdpc3RyeVByb3h5Ojpj
bGllbnRJc0dvaW5nQXdheShXZWJDb3JlOjpDbGllbnRPcmlnaW4mJiBjbGllbnRPcmlnaW4sIFdl
YkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyIGNsaWVudElEKQogewogICAg
IE1FU1NBR0VfQ0hFQ0soY2xpZW50SUQucHJvY2Vzc0lkZW50aWZpZXIoKSA9PSBtX3Byb2Nlc3Mu
Y29yZVByb2Nlc3NJZGVudGlmaWVyKCkpOwotICAgIG1fcHJvY2Vzcy53ZWJzaXRlRGF0YVN0b3Jl
KCkud2ViTG9ja1JlZ2lzdHJ5KCkuY2xpZW50SXNHb2luZ0F3YXkoV1RGTW92ZShjbGllbnRPcmln
aW4pLCBjbGllbnRJRCk7CisgICAgaWYgKGF1dG8qIGRhdGFTdG9yZSA9IFdlYnNpdGVEYXRhU3Rv
cmU6OmV4aXN0aW5nRGF0YVN0b3JlRm9yU2Vzc2lvbklEKG1fcHJvY2Vzcy5zZXNzaW9uSUQoKSkp
CisgICAgICAgIGRhdGFTdG9yZS0+d2ViTG9ja1JlZ2lzdHJ5KCkuY2xpZW50SXNHb2luZ0F3YXko
V1RGTW92ZShjbGllbnRPcmlnaW4pLCBjbGllbnRJRCk7CiB9CiAKIHZvaWQgV2ViTG9ja1JlZ2lz
dHJ5UHJveHk6OnByb2Nlc3NEaWRFeGl0KCkKIHsKLSAgICBpZiAobV9oYXNFdmVyUmVxdWVzdGVk
TG9ja3MpCi0gICAgICAgIG1fcHJvY2Vzcy53ZWJzaXRlRGF0YVN0b3JlKCkud2ViTG9ja1JlZ2lz
dHJ5KCkuY2xpZW50c0FyZUdvaW5nQXdheShtX3Byb2Nlc3MuY29yZVByb2Nlc3NJZGVudGlmaWVy
KCkpOworICAgIGlmICghbV9oYXNFdmVyUmVxdWVzdGVkTG9ja3MpCisgICAgICAgIHJldHVybjsK
KworICAgIGlmIChhdXRvKiBkYXRhU3RvcmUgPSBXZWJzaXRlRGF0YVN0b3JlOjpleGlzdGluZ0Rh
dGFTdG9yZUZvclNlc3Npb25JRChtX3Byb2Nlc3Muc2Vzc2lvbklEKCkpKQorICAgICAgICBkYXRh
U3RvcmUtPndlYkxvY2tSZWdpc3RyeSgpLmNsaWVudHNBcmVHb2luZ0F3YXkobV9wcm9jZXNzLmNv
cmVQcm9jZXNzSWRlbnRpZmllcigpKTsKIH0KIAogI3VuZGVmIE1FU1NBR0VfQ0hFQ0sKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDkwNzM2OTZhMjVkYzllOTE1
YjMyNWQ3ZDZjMzlkZjMyOTFlM2Y5ZTMuLjhlN2I1NDdhYmI5MjhjMDEzMGE4OGY3OTQ0MzBhNzBh
YTYxYTAzNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAt
OTc4LDcgKzk3OCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpzd2FwVG9Qcm92aXNpb25hbFBhZ2Uo
c3RkOjp1bmlxdWVfcHRyPFByb3Zpc2lvbmFsUGFnZVByb3h5PiBwCiAgICAgbV9wcm9jZXNzID0g
cHJvdmlzaW9uYWxQYWdlLT5wcm9jZXNzKCk7CiAgICAgbV93ZWJQYWdlSUQgPSBwcm92aXNpb25h
bFBhZ2UtPndlYlBhZ2VJRCgpOwogICAgIHBhZ2VDbGllbnQoKS5kaWRDaGFuZ2VXZWJQYWdlSUQo
KTsKLSAgICBtX3dlYnNpdGVEYXRhU3RvcmUgPSBtX3Byb2Nlc3MtPndlYnNpdGVEYXRhU3RvcmUo
KTsKKyAgICBtX3dlYnNpdGVEYXRhU3RvcmUgPSAqcHJvdmlzaW9uYWxQYWdlLT53ZWJzaXRlRGF0
YVN0b3JlKCk7CiAKICNpZiBIQVZFKFZJU0lCSUxJVFlfUFJPUEFHQVRJT05fVklFVykKICAgICBt
X2NvbnRleHRJREZvclZpc2liaWxpdHlQcm9wYWdhdGlvbkluV2ViUHJvY2VzcyA9IHByb3Zpc2lv
bmFsUGFnZS0+Y29udGV4dElERm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uSW5XZWJQcm9jZXNzKCk7
CkBAIC0zNjE0LDcgKzM2MTQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y29tbWl0UHJvdmlzaW9u
YWxQYWdlKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBGcmFtZUluZm9EYXRhJgogICAgIHJlbW92
ZUFsbE1lc3NhZ2VSZWNlaXZlcnMoKTsKICAgICBhdXRvKiBuYXZpZ2F0aW9uID0gbmF2aWdhdGlv
blN0YXRlKCkubmF2aWdhdGlvbihtX3Byb3Zpc2lvbmFsUGFnZS0+bmF2aWdhdGlvbklEKCkpOwog
ICAgIGJvb2wgZGlkU3VzcGVuZFByZXZpb3VzUGFnZSA9IG5hdmlnYXRpb24gJiYgIW1fcHJvdmlz
aW9uYWxQYWdlLT5pc1Byb2Nlc3NTd2FwcGluZ09uTmF2aWdhdGlvblJlc3BvbnNlKCkgPyBzdXNw
ZW5kQ3VycmVudFBhZ2VJZlBvc3NpYmxlKCpuYXZpZ2F0aW9uLCBtYWluRnJhbWVJREluUHJldmlv
dXNQcm9jZXNzLCBtX3Byb3Zpc2lvbmFsUGFnZS0+cHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVu
dCgpLCBzaG91bGREZWxheUNsb3NpbmdVbnRpbEZpcnN0TGF5ZXJGbHVzaCkgOiBmYWxzZTsKLSAg
ICBtX3Byb2Nlc3MtPnJlbW92ZVdlYlBhZ2UoKnRoaXMsIG1fd2Vic2l0ZURhdGFTdG9yZS5wdHIo
KSA9PSAmbV9wcm92aXNpb25hbFBhZ2UtPnByb2Nlc3MoKS53ZWJzaXRlRGF0YVN0b3JlKCkgPyBX
ZWJQcm9jZXNzUHJveHk6OkVuZHNVc2luZ0RhdGFTdG9yZTo6Tm8gOiBXZWJQcm9jZXNzUHJveHk6
OkVuZHNVc2luZ0RhdGFTdG9yZTo6WWVzKTsKKyAgICBtX3Byb2Nlc3MtPnJlbW92ZVdlYlBhZ2Uo
KnRoaXMsIG1fd2Vic2l0ZURhdGFTdG9yZS5wdHIoKSA9PSBtX3Byb3Zpc2lvbmFsUGFnZS0+d2Vi
c2l0ZURhdGFTdG9yZSgpID8gV2ViUHJvY2Vzc1Byb3h5OjpFbmRzVXNpbmdEYXRhU3RvcmU6Ok5v
IDogV2ViUHJvY2Vzc1Byb3h5OjpFbmRzVXNpbmdEYXRhU3RvcmU6Olllcyk7CiAKICAgICAvLyBU
aGVyZSBpcyBubyB3YXkgd2UnbGwgYmUgYWJsZSB0byByZXR1cm4gdG8gdGhlIHBhZ2UgaW4gdGhl
IHByZXZpb3VzIHBhZ2Ugc28gY2xvc2UgaXQuCiAgICAgaWYgKCFkaWRTdXNwZW5kUHJldmlvdXNQ
YWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc0NhY2hl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NDYWNoZS5jcHAKaW5kZXgg
NTFmY2JlNjYzNDFhOTkzMGY3OGM0MjcxMzQ4YTAxZWIxNGIzYzI3MS4uMDY5MTMzNDUyZGIxNTdj
ZDYzMzg4ZTdmMDViYmVhNzM1ZjY2ZTViMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc0NhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzQ2FjaGUuY3BwCkBAIC03Niw4ICs3Niw4IEBAIGJvb2wgV2ViUHJvY2Vzc0NhY2hl
OjpjYW5DYWNoZVByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzKSBjb25zdAogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgYXV0byBzZXNzaW9uSUQgPSBwcm9jZXNzLndl
YnNpdGVEYXRhU3RvcmUoKS5zZXNzaW9uSUQoKTsKLSAgICBpZiAoc2Vzc2lvbklELmlzRXBoZW1l
cmFsKCkgJiYgIXByb2Nlc3MucHJvY2Vzc1Bvb2woKS5oYXNQYWdlc1VzaW5nV2Vic2l0ZURhdGFT
dG9yZShwcm9jZXNzLndlYnNpdGVEYXRhU3RvcmUoKSkpIHsKKyAgICBhdXRvIHNlc3Npb25JRCA9
IHByb2Nlc3Muc2Vzc2lvbklEKCk7CisgICAgaWYgKHNlc3Npb25JRC5pc0VwaGVtZXJhbCgpICYm
ICFwcm9jZXNzLnByb2Nlc3NQb29sKCkuaGFzUGFnZXNVc2luZ1dlYnNpdGVEYXRhU3RvcmUocHJv
Y2Vzcy5zZXNzaW9uSUQoKSkpIHsKICAgICAgICAgV0VCUFJPQ0VTU0NBQ0hFX1JFTEVBU0VfTE9H
KCJjYW5DYWNoZVByb2Nlc3M6IE5vdCBjYWNoaW5nIHByb2Nlc3MgYmVjYXVzZSB0aGlzIHNlc3Np
b24gaGFzIGJlZW4gZGVzdHJveWVkIiwgcHJvY2Vzcy5wcm9jZXNzSWRlbnRpZmllcigpKTsKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTE1Myw3ICsxNTMsNyBAQCBSZWZQdHI8V2Vi
UHJvY2Vzc1Byb3h5PiBXZWJQcm9jZXNzQ2FjaGU6OnRha2VQcm9jZXNzKGNvbnN0IFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRAogICAgIGlmIChpdCA9PSBtX3Byb2Nlc3Nlc1BlclJlZ2lzdHJhYmxlRG9t
YWluLmVuZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGlmICgmaXQtPnZhbHVl
LT5wcm9jZXNzKCkud2Vic2l0ZURhdGFTdG9yZSgpICE9ICZkYXRhU3RvcmUpCisgICAgaWYgKGl0
LT52YWx1ZS0+cHJvY2VzcygpLnNlc3Npb25JRCgpICE9IGRhdGFTdG9yZS5zZXNzaW9uSUQoKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAoaXQtPnZhbHVlLT5wcm9jZXNzKCku
Y2FwdGl2ZVBvcnRhbE1vZGUoKSAhPSBjYXB0aXZlUG9ydGFsTW9kZSkKQEAgLTIxMiw3ICsyMTIs
NyBAQCB2b2lkIFdlYlByb2Nlc3NDYWNoZTo6Y2xlYXJBbGxQcm9jZXNzZXNGb3JTZXNzaW9uKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKICAgICBWZWN0b3I8V2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4+IGtleXNUb1JlbW92ZTsKICAgICBmb3IgKGF1dG8mIHBhaXIgOiBtX3Byb2Nlc3Nl
c1BlclJlZ2lzdHJhYmxlRG9tYWluKSB7Ci0gICAgICAgIGlmIChwYWlyLnZhbHVlLT5wcm9jZXNz
KCkud2Vic2l0ZURhdGFTdG9yZSgpLnNlc3Npb25JRCgpID09IHNlc3Npb25JRCkgeworICAgICAg
ICBpZiAocGFpci52YWx1ZS0+cHJvY2VzcygpLnNlc3Npb25JRCgpID09IHNlc3Npb25JRCkgewog
ICAgICAgICAgICAgV0VCUFJPQ0VTU0NBQ0hFX1JFTEVBU0VfTE9HKCJjbGVhckFsbFByb2Nlc3Nl
c0ZvclNlc3Npb246IEV2aWN0aW5nIHByb2Nlc3MgYmVjYXVzZSBpdHMgc2Vzc2lvbiB3YXMgZGVz
dHJveWVkIiwgcGFpci52YWx1ZS0+cHJvY2VzcygpLnByb2Nlc3NJZGVudGlmaWVyKCkpOwogICAg
ICAgICAgICAga2V5c1RvUmVtb3ZlLmFwcGVuZChwYWlyLmtleSk7CiAgICAgICAgIH0KQEAgLTIy
Miw3ICsyMjIsNyBAQCB2b2lkIFdlYlByb2Nlc3NDYWNoZTo6Y2xlYXJBbGxQcm9jZXNzZXNGb3JT
ZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIAogICAgIFZlY3Rvcjx1aW50NjRfdD4g
cGVuZGluZ1JlcXVlc3RzVG9SZW1vdmU7CiAgICAgZm9yIChhdXRvJiBwYWlyIDogbV9wZW5kaW5n
QWRkUmVxdWVzdHMpIHsKLSAgICAgICAgaWYgKHBhaXIudmFsdWUtPnByb2Nlc3MoKS53ZWJzaXRl
RGF0YVN0b3JlKCkuc2Vzc2lvbklEKCkgPT0gc2Vzc2lvbklEKSB7CisgICAgICAgIGlmIChwYWly
LnZhbHVlLT5wcm9jZXNzKCkuc2Vzc2lvbklEKCkgPT0gc2Vzc2lvbklEKSB7CiAgICAgICAgICAg
ICBXRUJQUk9DRVNTQ0FDSEVfUkVMRUFTRV9MT0coImNsZWFyQWxsUHJvY2Vzc2VzRm9yU2Vzc2lv
bjogRXZpY3RpbmcgcHJvY2VzcyBiZWNhdXNlIGl0cyBzZXNzaW9uIHdhcyBkZXN0cm95ZWQiLCBw
YWlyLnZhbHVlLT5wcm9jZXNzKCkucHJvY2Vzc0lkZW50aWZpZXIoKSk7CiAgICAgICAgICAgICBw
ZW5kaW5nUmVxdWVzdHNUb1JlbW92ZS5hcHBlbmQocGFpci5rZXkpOwogICAgICAgICB9CkBAIC0y
NzYsNyArMjc2LDkgQEAgV2ViUHJvY2Vzc0NhY2hlOjpDYWNoZWRQcm9jZXNzOjpDYWNoZWRQcm9j
ZXNzKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcykKICNlbmRpZgogewogICAgIFJFTEVB
U0VfQVNTRVJUKCFtX3Byb2Nlc3MtPnBhZ2VDb3VudCgpKTsKLSAgICBSRUxFQVNFX0FTU0VSVF9X
SVRIX01FU1NBR0UoIW1fcHJvY2Vzcy0+d2Vic2l0ZURhdGFTdG9yZSgpLnByb2Nlc3NlcygpLmNv
bnRhaW5zKCptX3Byb2Nlc3MpLCAiT25seSBwcm9jZXNzZXMgd2l0aCBwYWdlcyBzaG91bGQgYmUg
cmVnaXN0ZXJlZCB3aXRoIHRoZSBkYXRhIHN0b3JlIik7CisgICAgYXV0byogZGF0YVN0b3JlID0g
V2Vic2l0ZURhdGFTdG9yZTo6ZXhpc3RpbmdEYXRhU3RvcmVGb3JTZXNzaW9uSUQobV9wcm9jZXNz
LT5zZXNzaW9uSUQoKSk7CisgICAgUkVMRUFTRV9BU1NFUlQoZGF0YVN0b3JlKTsKKyAgICBSRUxF
QVNFX0FTU0VSVF9XSVRIX01FU1NBR0UoIWRhdGFTdG9yZS0+cHJvY2Vzc2VzKCkuY29udGFpbnMo
Km1fcHJvY2VzcyksICJPbmx5IHByb2Nlc3NlcyB3aXRoIHBhZ2VzIHNob3VsZCBiZSByZWdpc3Rl
cmVkIHdpdGggdGhlIGRhdGEgc3RvcmUiKTsKICAgICBtX3Byb2Nlc3MtPnNldElzSW5Qcm9jZXNz
Q2FjaGUodHJ1ZSk7CiAgICAgbV9ldmljdGlvblRpbWVyLnN0YXJ0T25lU2hvdChjYWNoZWRQcm9j
ZXNzTGlmZXRpbWUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
Y3BwCmluZGV4IDFiMmI4NTFlOTcyNGFjNTBmZTM5OGY5MDRmYjNlYzU3YWU1MDlhMDUuLmQ4ZjZk
MGNkMTAyYzUyZDc0MjgzODY5ZDdiMTc5NWFlMGZkMDNiMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTU3MSw3ICs1NzEsNyBAQCB2b2lkIFdlYlBy
b2Nlc3NQb29sOjplc3RhYmxpc2hSZW1vdGVXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29y
a1Byb2Nlc3MoUmVtbwogCiAgICAgLy8gUHJpb3JpdGl6ZSB0aGUgcmVxdWVzdGluZyBXZWJQcm9j
ZXNzIGZvciBydW5uaW5nIHRoZSBzZXJ2aWNlIHdvcmtlci4KICAgICBpZiAoIXJlbW90ZVdvcmtl
clByb2Nlc3NQcm94eSAmJiAhc2hvdWxkVXNlU2VwYXJhdGVSZW1vdGVXb3JrZXJQcm9jZXNzICYm
IHJlcXVlc3RpbmdQcm9jZXNzKSB7Ci0gICAgICAgIGlmICgmcmVxdWVzdGluZ1Byb2Nlc3MtPndl
YnNpdGVEYXRhU3RvcmUoKSA9PSB3ZWJzaXRlRGF0YVN0b3JlICYmIHJlcXVlc3RpbmdQcm9jZXNz
LT5pc01hdGNoaW5nUmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21haW4pKQorICAgICAg
ICBpZiAocmVxdWVzdGluZ1Byb2Nlc3MtPnNlc3Npb25JRCgpID09IHdlYnNpdGVEYXRhU3RvcmUt
PnNlc3Npb25JRCgpICYmIHJlcXVlc3RpbmdQcm9jZXNzLT5pc01hdGNoaW5nUmVnaXN0cmFibGVE
b21haW4ocmVnaXN0cmFibGVEb21haW4pKQogICAgICAgICAgICAgdXNlUHJvY2Vzc0ZvclJlbW90
ZVdvcmtlcnMoKnJlcXVlc3RpbmdQcm9jZXNzKTsKICAgICB9CiAKQEAgLTU3OSw3ICs1NzksNyBA
QCB2b2lkIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hSZW1vdGVXb3JrZXJDb250ZXh0Q29ubmVj
dGlvblRvTmV0d29ya1Byb2Nlc3MoUmVtbwogICAgICAgICBmb3IgKGF1dG8mIHByb2Nlc3MgOiBw
cm9jZXNzUG9vbC0+bV9wcm9jZXNzZXMpIHsKICAgICAgICAgICAgIGlmIChwcm9jZXNzLnB0cigp
ID09IHByb2Nlc3NQb29sLT5tX3ByZXdhcm1lZFByb2Nlc3MuZ2V0KCkgfHwgcHJvY2Vzcy0+aXNE
dW1teVByb2Nlc3NQcm94eSgpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAg
ICAgaWYgKCZwcm9jZXNzLT53ZWJzaXRlRGF0YVN0b3JlKCkgIT0gd2Vic2l0ZURhdGFTdG9yZSkK
KyAgICAgICAgICAgIGlmIChwcm9jZXNzLT5zZXNzaW9uSUQoKSAhPSB3ZWJzaXRlRGF0YVN0b3Jl
LT5zZXNzaW9uSUQoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGlm
ICghcHJvY2Vzcy0+aXNNYXRjaGluZ1JlZ2lzdHJhYmxlRG9tYWluKHJlZ2lzdHJhYmxlRG9tYWlu
KSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTEwODUsNyArMTA4NSw3IEBAIFJlZjxX
ZWJQcm9jZXNzUHJveHk+IFdlYlByb2Nlc3NQb29sOjpwcm9jZXNzRm9yUmVnaXN0cmFibGVEb21h
aW4oV2Vic2l0ZURhdGFTdG9yCiAgICAgICAgICAgICBpZiAocHJvY2Vzcy0+aXNSdW5uaW5nU2Vy
dmljZVdvcmtlcnMoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICNlbmRpZgotICAgICAg
ICAgICAgaWYgKG11c3RNYXRjaERhdGFTdG9yZSAmJiAmcHJvY2Vzcy0+d2Vic2l0ZURhdGFTdG9y
ZSgpICE9ICZ3ZWJzaXRlRGF0YVN0b3JlKQorICAgICAgICAgICAgaWYgKG11c3RNYXRjaERhdGFT
dG9yZSAmJiBwcm9jZXNzLT5zZXNzaW9uSUQoKSAhPSB3ZWJzaXRlRGF0YVN0b3JlLnNlc3Npb25J
RCgpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgcmV0dXJuIHByb2Nl
c3M7CiAgICAgICAgIH0KQEAgLTExODIsMTkgKzExODIsMTggQEAgdm9pZCBXZWJQcm9jZXNzUG9v
bDo6dXBkYXRlUmVtb3RlV29ya2VyVXNlckFnZW50KGNvbnN0IFN0cmluZyYgdXNlckFnZW50KQog
ICAgICAgICB3b3JrZXJQcm9jZXNzLnNldFJlbW90ZVdvcmtlclVzZXJBZ2VudChtX3JlbW90ZVdv
cmtlclVzZXJBZ2VudCk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBhZ2VCZWdpblVzaW5n
V2Vic2l0ZURhdGFTdG9yZShXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCwgV2Vic2l0ZURh
dGFTdG9yZSYgZGF0YVN0b3JlKQordm9pZCBXZWJQcm9jZXNzUG9vbDo6cGFnZUJlZ2luVXNpbmdX
ZWJzaXRlRGF0YVN0b3JlKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCBQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkp
OwotICAgIFJFTEVBU0VfQVNTRVJUKG1fc2Vzc2lvblRvUGFnZUlEc01hcC5pc1ZhbGlkS2V5KGRh
dGFTdG9yZS5zZXNzaW9uSUQoKSkpOwotICAgIGF1dG8gcmVzdWx0ID0gbV9zZXNzaW9uVG9QYWdl
SURzTWFwLmFkZChkYXRhU3RvcmUuc2Vzc2lvbklEKCksIEhhc2hTZXQ8V2ViUGFnZVByb3h5SWRl
bnRpZmllcj4oKSkuaXRlcmF0b3ItPnZhbHVlLmFkZChwYWdlSUQpOworICAgIFJFTEVBU0VfQVNT
RVJUKG1fc2Vzc2lvblRvUGFnZUlEc01hcC5pc1ZhbGlkS2V5KHNlc3Npb25JRCkpOworICAgIGF1
dG8gcmVzdWx0ID0gbV9zZXNzaW9uVG9QYWdlSURzTWFwLmFkZChzZXNzaW9uSUQsIEhhc2hTZXQ8
V2ViUGFnZVByb3h5SWRlbnRpZmllcj4oKSkuaXRlcmF0b3ItPnZhbHVlLmFkZChwYWdlSUQpOwog
ICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CiB9CiAKLXZvaWQg
V2ViUHJvY2Vzc1Bvb2w6OnBhZ2VFbmRVc2luZ1dlYnNpdGVEYXRhU3RvcmUoV2ViUGFnZVByb3h5
SWRlbnRpZmllciBwYWdlSUQsIFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSkKK3ZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OnBhZ2VFbmRVc2luZ1dlYnNpdGVEYXRhU3RvcmUoV2ViUGFnZVByb3h5SWRl
bnRpZmllciBwYWdlSUQsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKICAgICBSRUxFQVNF
X0FTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgYXV0byBzZXNzaW9uSUQgPSBkYXRhU3Rv
cmUuc2Vzc2lvbklEKCk7Ci0gICAgUkVMRUFTRV9BU1NFUlQobV9zZXNzaW9uVG9QYWdlSURzTWFw
LmlzVmFsaWRLZXkoZGF0YVN0b3JlLnNlc3Npb25JRCgpKSk7CisgICAgUkVMRUFTRV9BU1NFUlQo
bV9zZXNzaW9uVG9QYWdlSURzTWFwLmlzVmFsaWRLZXkoc2Vzc2lvbklEKSk7CiAgICAgYXV0byBp
dGVyYXRvciA9IG1fc2Vzc2lvblRvUGFnZUlEc01hcC5maW5kKHNlc3Npb25JRCk7CiAgICAgUkVM
RUFTRV9BU1NFUlQoaXRlcmF0b3IgIT0gbV9zZXNzaW9uVG9QYWdlSURzTWFwLmVuZCgpKTsKIApA
QCAtMTIwOSwxMSArMTIwOCwxMSBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwYWdlRW5kVXNpbmdX
ZWJzaXRlRGF0YVN0b3JlKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlELAogICAgIH0KIH0K
IAotYm9vbCBXZWJQcm9jZXNzUG9vbDo6aGFzUGFnZXNVc2luZ1dlYnNpdGVEYXRhU3RvcmUoV2Vi
c2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlKSBjb25zdAorYm9vbCBXZWJQcm9jZXNzUG9vbDo6aGFz
UGFnZXNVc2luZ1dlYnNpdGVEYXRhU3RvcmUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSBjb25z
dAogewogICAgIFJFTEVBU0VfQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBSRUxFQVNF
X0FTU0VSVChtX3Nlc3Npb25Ub1BhZ2VJRHNNYXAuaXNWYWxpZEtleShkYXRhU3RvcmUuc2Vzc2lv
bklEKCkpKTsKLSAgICByZXR1cm4gbV9zZXNzaW9uVG9QYWdlSURzTWFwLmNvbnRhaW5zKGRhdGFT
dG9yZS5zZXNzaW9uSUQoKSk7CisgICAgUkVMRUFTRV9BU1NFUlQobV9zZXNzaW9uVG9QYWdlSURz
TWFwLmlzVmFsaWRLZXkoc2Vzc2lvbklEKSk7CisgICAgcmV0dXJuIG1fc2Vzc2lvblRvUGFnZUlE
c01hcC5jb250YWlucyhzZXNzaW9uSUQpOwogfQogCiBEb3dubG9hZFByb3h5JiBXZWJQcm9jZXNz
UG9vbDo6ZG93bmxvYWQoV2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlLCBXZWJQYWdlUHJveHkq
IGluaXRpYXRpbmdQYWdlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN0
cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUpCkBAIC0xOTc1LDcgKzE5NzQsNyBAQCB2b2lkIFdlYlBy
b2Nlc3NQb29sOjpwcm9jZXNzRm9yTmF2aWdhdGlvbkludGVybmFsKFdlYlBhZ2VQcm94eSYgcGFn
ZSwgY29uc3QgQVBJOgogICAgICAgICBMT0coUHJvY2Vzc1N3YXBwaW5nLCAiKFByb2Nlc3NTd2Fw
cGluZykgQ29uc2lkZXJpbmcgcmUtdXNlIG9mIGEgcHJldmlvdXNseSBjYWNoZWQgcHJvY2VzcyBm
b3IgZG9tYWluICVzIiwgdGFyZ2V0UmVnaXN0cmFibGVEb21haW4uc3RyaW5nKCkudXRmOCgpLmRh
dGEoKSk7CiAKICAgICAgICAgaWYgKGF1dG8qIHByb2Nlc3MgPSBtX3N3YXBwZWRQcm9jZXNzZXNQ
ZXJSZWdpc3RyYWJsZURvbWFpbi5nZXQodGFyZ2V0UmVnaXN0cmFibGVEb21haW4pKSB7Ci0gICAg
ICAgICAgICBpZiAoJnByb2Nlc3MtPndlYnNpdGVEYXRhU3RvcmUoKSA9PSBkYXRhU3RvcmUucHRy
KCkpIHsKKyAgICAgICAgICAgIGlmIChwcm9jZXNzLT5zZXNzaW9uSUQoKSA9PSBkYXRhU3RvcmUt
PnNlc3Npb25JRCgpKSB7CiAgICAgICAgICAgICAgICAgTE9HKFByb2Nlc3NTd2FwcGluZywgIihQ
cm9jZXNzU3dhcHBpbmcpIFJldXNpbmcgYSBwcmV2aW91c2x5IGNhY2hlZCBwcm9jZXNzIHdpdGgg
cGlkICVpIHRvIGNvbnRpbnVlIG5hdmlnYXRpb24gdG8gVVJMICVzIiwgcHJvY2Vzcy0+cHJvY2Vz
c0lkZW50aWZpZXIoKSwgdGFyZ2V0VVJMLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKCpwcm9jZXNzLCBudWxscHRyLCBy
ZWFzb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKaW5kZXggNDA5
YTc5YjUxYjcwNTBkMTA4YmUxMzEwZmUyZjBhMmMwZjc1NTdlNy4uMzgyOWIyZTZhODcwY2U5MWFj
NWZjZjUwZjM1M2M2N2NjNmU4MzQ4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5oCkBAIC0yMTQsOSArMjE0LDkgQEAgcHVibGljOgogCiAgICAgUmVmPFdlYlBhZ2VQ
cm94eT4gY3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50JiwgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRp
b24+JiYpOwogCi0gICAgdm9pZCBwYWdlQmVnaW5Vc2luZ1dlYnNpdGVEYXRhU3RvcmUoV2ViUGFn
ZVByb3h5SWRlbnRpZmllciwgV2Vic2l0ZURhdGFTdG9yZSYpOwotICAgIHZvaWQgcGFnZUVuZFVz
aW5nV2Vic2l0ZURhdGFTdG9yZShXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJzaXRlRGF0YVN0
b3JlJik7Ci0gICAgYm9vbCBoYXNQYWdlc1VzaW5nV2Vic2l0ZURhdGFTdG9yZShXZWJzaXRlRGF0
YVN0b3JlJikgY29uc3Q7CisgICAgdm9pZCBwYWdlQmVnaW5Vc2luZ1dlYnNpdGVEYXRhU3RvcmUo
V2ViUGFnZVByb3h5SWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQpOworICAgIHZvaWQgcGFnZUVu
ZFVzaW5nV2Vic2l0ZURhdGFTdG9yZShXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBQQUw6OlNlc3Np
b25JRCk7CisgICAgYm9vbCBoYXNQYWdlc1VzaW5nV2Vic2l0ZURhdGFTdG9yZShQQUw6OlNlc3Np
b25JRCkgY29uc3Q7CiAKICAgICBjb25zdCBTdHJpbmcmIGluamVjdGVkQnVuZGxlUGF0aCgpIGNv
bnN0IHsgcmV0dXJuIG1fY29uZmlndXJhdGlvbi0+aW5qZWN0ZWRCdW5kbGVQYXRoKCk7IH0KICNp
ZiBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuY3BwCmluZGV4IDE3MDQ1MGE5NWJhNmU4YTQ5ZWU1ZmM4MWUxMWI1NTA5MWJiOTRiNjIuLjBi
NDE2ODM1MjY4YThhMzcxNTI0OGZjNmI1YjhlZDA2NmFiZTZjYzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtMjQxLDcgKzI0MSw2IEBAIFdlYlBy
b2Nlc3NQcm94eTo6V2ViUHJvY2Vzc1Byb3h5KFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwg
V2Vic2l0ZURhdGFTdG9yZSoKICNlbmRpZgogICAgICwgbV9pc1Jlc3BvbnNpdmUoTm9Pck1heWJl
OjpNYXliZSkKICAgICAsIG1fdmlzaWJsZVBhZ2VDb3VudGVyKFt0aGlzXShSZWZDb3VudGVyRXZl
bnQpIHsgdXBkYXRlQmFja2dyb3VuZFJlc3BvbnNpdmVuZXNzVGltZXIoKTsgfSkKLSAgICAsIG1f
d2Vic2l0ZURhdGFTdG9yZSh3ZWJzaXRlRGF0YVN0b3JlKQogI2lmIFBMQVRGT1JNKENPQ09BKSAm
JiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAgICwgbV91c2VyTWVkaWFDYXB0dXJlTWFuYWdlclBy
b3h5KG1ha2VVbmlxdWU8VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eT4obWFrZVVuaXF1ZVJl
ZjxVSVByb3h5Rm9yQ2FwdHVyZT4oKnRoaXMpKSkKICNlbmRpZgpAQCAtMjU4LDcgKzI1Nyw4IEBA
IFdlYlByb2Nlc3NQcm94eTo6V2ViUHJvY2Vzc1Byb3h5KFdlYlByb2Nlc3NQb29sJiBwcm9jZXNz
UG9vbCwgV2Vic2l0ZURhdGFTdG9yZSoKICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0
LmlzTmV3RW50cnkpOwogCiAgICAgV2ViUGFzdGVib2FyZFByb3h5OjpzaW5nbGV0b24oKS5hZGRX
ZWJQcm9jZXNzUHJveHkoKnRoaXMpOwotCisgICAgaWYgKHdlYnNpdGVEYXRhU3RvcmUpCisgICAg
ICAgIG1fc2Vzc2lvbklEID0gd2Vic2l0ZURhdGFTdG9yZS0+c2Vzc2lvbklEKCk7CiAgICAgcGxh
dGZvcm1Jbml0aWFsaXplKCk7CiB9CiAKQEAgLTM0OCwzMiArMzQ4LDM0IEBAIHZvaWQgV2ViUHJv
Y2Vzc1Byb3h5OjpzZXRJc0luUHJvY2Vzc0NhY2hlKGJvb2wgdmFsdWUsIFdpbGxTaHV0RG93biB3
aWxsU2h1dERvd24pCiAKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzZXRXZWJzaXRlRGF0YVN0b3Jl
KFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSkKIHsKLSAgICBBU1NFUlQoIW1fd2Vic2l0ZURh
dGFTdG9yZSk7CisgICAgQVNTRVJUKCFtX3Nlc3Npb25JRC5pc1ZhbGlkKCkpOwogICAgIFdFQlBS
T0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzLCAic2V0V2Vic2l0ZURhdGFTdG9yZSgpIGRh
dGFTdG9yZT0lcCwgc2Vzc2lvbklEPSUiIFBSSXU2NCwgJmRhdGFTdG9yZSwgZGF0YVN0b3JlLnNl
c3Npb25JRCgpLnRvVUludDY0KCkpOwotICAgIG1fd2Vic2l0ZURhdGFTdG9yZSA9ICZkYXRhU3Rv
cmU7CiAgICAgdXBkYXRlUmVnaXN0cmF0aW9uV2l0aERhdGFTdG9yZSgpOwogICAgIHNlbmQoTWVz
c2FnZXM6OldlYlByb2Nlc3M6OlNldFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzKHByb2Nlc3NQ
b29sKCkud2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMoKnRoaXMsIGRhdGFTdG9yZSkpLCAw
KTsKIAogICAgIC8vIERlbGF5IGNvbnN0cnVjdGlvbiBvZiB0aGUgV2ViTG9ja1JlZ2lzdHJ5UHJv
eHkgdW50aWwgdGhlIFdlYlByb2Nlc3NQcm94eSBoYXMgYSBkYXRhIHN0b3JlIHNpbmNlIHRoZSBk
YXRhIHN0b3JlIGhvbGRzIHRoZQogICAgIC8vIExvY2FsV2ViTG9ja1JlZ2lzdHJ5LgogICAgIG1f
d2ViTG9ja1JlZ2lzdHJ5ID0gbWFrZVVuaXF1ZTxXZWJMb2NrUmVnaXN0cnlQcm94eT4oKnRoaXMp
OworICAgIG1fc2Vzc2lvbklEID0gZGF0YVN0b3JlLnNlc3Npb25JRCgpOwogfQogCiBib29sIFdl
YlByb2Nlc3NQcm94eTo6aXNEdW1teVByb2Nlc3NQcm94eSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IG1fd2Vic2l0ZURhdGFTdG9yZSAmJiBwcm9jZXNzUG9vbCgpLmR1bW15UHJvY2Vzc1Byb3h5KG1f
d2Vic2l0ZURhdGFTdG9yZS0+c2Vzc2lvbklEKCkpID09IHRoaXM7CisgICAgcmV0dXJuIG1fc2Vz
c2lvbklELmlzVmFsaWQoKSAmJiBwcm9jZXNzUG9vbCgpLmR1bW15UHJvY2Vzc1Byb3h5KHNlc3Np
b25JRCgpKSA9PSB0aGlzOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6dXBkYXRlUmVnaXN0
cmF0aW9uV2l0aERhdGFTdG9yZSgpCiB7Ci0gICAgaWYgKCFtX3dlYnNpdGVEYXRhU3RvcmUpCisg
ICAgaWYgKCFtX3Nlc3Npb25JRC5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybjsKLSAgICAKKwog
ICAgIGJvb2wgc2hvdWxkQmVSZWdpc3RlcmVkID0gcGFnZUNvdW50KCkgfHwgcHJvdmlzaW9uYWxQ
YWdlQ291bnQoKTsKLSAgICBpZiAoc2hvdWxkQmVSZWdpc3RlcmVkKQotICAgICAgICBtX3dlYnNp
dGVEYXRhU3RvcmUtPnJlZ2lzdGVyUHJvY2VzcygqdGhpcyk7Ci0gICAgZWxzZQotICAgICAgICBt
X3dlYnNpdGVEYXRhU3RvcmUtPnVucmVnaXN0ZXJQcm9jZXNzKCp0aGlzKTsKKyAgICBpZiAoYXV0
byogZGF0YVN0b3JlID0gV2Vic2l0ZURhdGFTdG9yZTo6ZXhpc3RpbmdEYXRhU3RvcmVGb3JTZXNz
aW9uSUQoc2Vzc2lvbklEKCkpKSB7CisgICAgICAgIGlmIChzaG91bGRCZVJlZ2lzdGVyZWQpCisg
ICAgICAgICAgICBkYXRhU3RvcmUtPnJlZ2lzdGVyUHJvY2VzcygqdGhpcyk7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIGRhdGFTdG9yZS0+dW5yZWdpc3RlclByb2Nlc3MoKnRoaXMpOworICAg
IH0KIH0KIAogdm9pZCBXZWJQcm9jZXNzUHJveHk6OmFkZFByb3Zpc2lvbmFsUGFnZVByb3h5KFBy
b3Zpc2lvbmFsUGFnZVByb3h5JiBwcm92aXNpb25hbFBhZ2UpCkBAIC01OTYsMTEgKzU5OCwxMSBA
QCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6YWRkRXhpc3RpbmdXZWJQYWdlKFdlYlBhZ2VQcm94eSYg
d2ViUGFnZSwgQmVnaW5zVXNpbmdEYXRhUwogICAgIEFTU0VSVCghbV9wYWdlTWFwLmNvbnRhaW5z
KHdlYlBhZ2UuaWRlbnRpZmllcigpKSk7CiAgICAgQVNTRVJUKCFnbG9iYWxQYWdlTWFwKCkuY29u
dGFpbnMod2ViUGFnZS5pZGVudGlmaWVyKCkpKTsKICAgICBSRUxFQVNFX0FTU0VSVCghbV9pc0lu
UHJvY2Vzc0NhY2hlKTsKLSAgICBBU1NFUlQoIW1fd2Vic2l0ZURhdGFTdG9yZSB8fCBtX3dlYnNp
dGVEYXRhU3RvcmUgPT0gJndlYlBhZ2Uud2Vic2l0ZURhdGFTdG9yZSgpKTsKKyAgICBBU1NFUlQo
IW1fc2Vzc2lvbklELmlzVmFsaWQoKSB8fCBtX3Nlc3Npb25JRCA9PSB3ZWJQYWdlLndlYnNpdGVE
YXRhU3RvcmUoKS5zZXNzaW9uSUQoKSk7CiAKICAgICBpZiAoYmVnaW5zVXNpbmdEYXRhU3RvcmUg
PT0gQmVnaW5zVXNpbmdEYXRhU3RvcmU6OlllcykgewogICAgICAgICBSRUxFQVNFX0FTU0VSVCht
X3Byb2Nlc3NQb29sKTsKLSAgICAgICAgbV9wcm9jZXNzUG9vbC0+cGFnZUJlZ2luVXNpbmdXZWJz
aXRlRGF0YVN0b3JlKHdlYlBhZ2UuaWRlbnRpZmllcigpLCB3ZWJQYWdlLndlYnNpdGVEYXRhU3Rv
cmUoKSk7CisgICAgICAgIG1fcHJvY2Vzc1Bvb2wtPnBhZ2VCZWdpblVzaW5nV2Vic2l0ZURhdGFT
dG9yZSh3ZWJQYWdlLmlkZW50aWZpZXIoKSwgd2ViUGFnZS53ZWJzaXRlRGF0YVN0b3JlKCkuc2Vz
c2lvbklEKCkpOwogICAgIH0KIAogICAgIG1hcmtQcm9jZXNzQXNSZWNlbnRseVVzZWQoKTsKQEAg
LTYzMiw3ICs2MzQsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6cmVtb3ZlV2ViUGFnZShXZWJQ
YWdlUHJveHkmIHdlYlBhZ2UsIEVuZHNVc2luZ0RhdGFTdG9yZSBlbgogICAgIEFTU0VSVF9VTlVT
RUQocmVtb3ZlZFBhZ2UsIHJlbW92ZWRQYWdlID09ICZ3ZWJQYWdlKTsKIAogICAgIGlmIChlbmRz
VXNpbmdEYXRhU3RvcmUgPT0gRW5kc1VzaW5nRGF0YVN0b3JlOjpZZXMpCi0gICAgICAgIG1fcHJv
Y2Vzc1Bvb2wtPnBhZ2VFbmRVc2luZ1dlYnNpdGVEYXRhU3RvcmUod2ViUGFnZS5pZGVudGlmaWVy
KCksIHdlYlBhZ2Uud2Vic2l0ZURhdGFTdG9yZSgpKTsKKyAgICAgICAgbV9wcm9jZXNzUG9vbC0+
cGFnZUVuZFVzaW5nV2Vic2l0ZURhdGFTdG9yZSh3ZWJQYWdlLmlkZW50aWZpZXIoKSwgd2ViUGFn
ZS53ZWJzaXRlRGF0YVN0b3JlKCkuc2Vzc2lvbklEKCkpOwogCiAgICAgcmVtb3ZlVmlzaXRlZExp
bmtTdG9yZVVzZXIod2ViUGFnZS52aXNpdGVkTGlua1N0b3JlKCksIHdlYlBhZ2UuaWRlbnRpZmll
cigpKTsKICAgICB1cGRhdGVSZWdpc3RyYXRpb25XaXRoRGF0YVN0b3JlKCk7CkBAIC04MTUsNyAr
ODE3LDggQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZUJhY2tGb3J3YXJkSXRlbShjb25z
dCBCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUmIGl0ZW0KIAogdm9pZCBXZWJQcm9jZXNzUHJveHk6
OmdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbihNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpH
ZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewotICAg
IHdlYnNpdGVEYXRhU3RvcmUoKS5nZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKnRoaXMsIFdU
Rk1vdmUocmVwbHkpKTsKKyAgICBpZiAoYXV0byogZGF0YVN0b3JlID0gV2Vic2l0ZURhdGFTdG9y
ZTo6ZXhpc3RpbmdEYXRhU3RvcmVGb3JTZXNzaW9uSUQoc2Vzc2lvbklEKCkpKQorICAgICAgICBk
YXRhU3RvcmUtPmdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigqdGhpcywgV1RGTW92ZShyZXBs
eSkpOwogfQogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQpAQCAtMTcwNCwxMCArMTcwNywxMiBA
QCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JNYWluRnJh
bWUoY29uc3QgVVJMJiB1cmwpCiAKICAgICBhdXRvIHJlZ2lzdHJhYmxlRG9tYWluID0gV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4geyB1cmwgfTsKICAgICBpZiAobV9yZWdpc3RyYWJsZURvbWFp
biAmJiAqbV9yZWdpc3RyYWJsZURvbWFpbiAhPSByZWdpc3RyYWJsZURvbWFpbikgewotICAgICAg
ICBpZiAoaXNSdW5uaW5nU2VydmljZVdvcmtlcnMoKSkKLSAgICAgICAgICAgIHdlYnNpdGVEYXRh
U3RvcmUoKS5uZXR3b3JrUHJvY2VzcygpLnRlcm1pbmF0ZVJlbW90ZVdvcmtlckNvbnRleHRDb25u
ZWN0aW9uV2hlblBvc3NpYmxlKFJlbW90ZVdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIsIHdlYnNp
dGVEYXRhU3RvcmUoKS5zZXNzaW9uSUQoKSwgKm1fcmVnaXN0cmFibGVEb21haW4sIGNvcmVQcm9j
ZXNzSWRlbnRpZmllcigpKTsKLSAgICAgICAgaWYgKGlzUnVubmluZ1NoYXJlZFdvcmtlcnMoKSkK
LSAgICAgICAgICAgIHdlYnNpdGVEYXRhU3RvcmUoKS5uZXR3b3JrUHJvY2VzcygpLnRlcm1pbmF0
ZVJlbW90ZVdvcmtlckNvbnRleHRDb25uZWN0aW9uV2hlblBvc3NpYmxlKFJlbW90ZVdvcmtlclR5
cGU6OlNoYXJlZFdvcmtlciwgd2Vic2l0ZURhdGFTdG9yZSgpLnNlc3Npb25JRCgpLCAqbV9yZWdp
c3RyYWJsZURvbWFpbiwgY29yZVByb2Nlc3NJZGVudGlmaWVyKCkpOworICAgICAgICBhdXRvKiBk
YXRhU3RvcmUgPSBXZWJzaXRlRGF0YVN0b3JlOjpleGlzdGluZ0RhdGFTdG9yZUZvclNlc3Npb25J
RChzZXNzaW9uSUQoKSk7CisgICAgICAgIGlmIChkYXRhU3RvcmUgJiYgaXNSdW5uaW5nU2Vydmlj
ZVdvcmtlcnMoKSkKKyAgICAgICAgICAgIGRhdGFTdG9yZS0+bmV0d29ya1Byb2Nlc3MoKS50ZXJt
aW5hdGVSZW1vdGVXb3JrZXJDb250ZXh0Q29ubmVjdGlvbldoZW5Qb3NzaWJsZShSZW1vdGVXb3Jr
ZXJUeXBlOjpTZXJ2aWNlV29ya2VyLCBzZXNzaW9uSUQoKSwgKm1fcmVnaXN0cmFibGVEb21haW4s
IGNvcmVQcm9jZXNzSWRlbnRpZmllcigpKTsKKworICAgICAgICBpZiAoZGF0YVN0b3JlICYmIGlz
UnVubmluZ1NoYXJlZFdvcmtlcnMoKSkKKyAgICAgICAgICAgIGRhdGFTdG9yZS0+bmV0d29ya1By
b2Nlc3MoKS50ZXJtaW5hdGVSZW1vdGVXb3JrZXJDb250ZXh0Q29ubmVjdGlvbldoZW5Qb3NzaWJs
ZShSZW1vdGVXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIsIHNlc3Npb25JRCgpLCAqbV9yZWdpc3Ry
YWJsZURvbWFpbiwgY29yZVByb2Nlc3NJZGVudGlmaWVyKCkpOwogCiAgICAgICAgIC8vIE51bGwg
b3V0IHJlZ2lzdHJhYmxlIGRvbWFpbiBzaW5jZSB0aGlzIHByb2Nlc3MgaGFzIG5vdyBiZWVuIHVz
ZWQgZm9yIHNldmVyYWwgZG9tYWlucy4KICAgICAgICAgbV9yZWdpc3RyYWJsZURvbWFpbiA9IFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHsgfTsKQEAgLTE3NTQsOCArMTc1OSw3IEBAIFdlYlBy
b2Nlc3NQb29sJiBXZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NQb29sKCkgY29uc3QKIAogUEFMOjpT
ZXNzaW9uSUQgV2ViUHJvY2Vzc1Byb3h5OjpzZXNzaW9uSUQoKSBjb25zdAogewotICAgIEFTU0VS
VChtX3dlYnNpdGVEYXRhU3RvcmUpOwotICAgIHJldHVybiBtX3dlYnNpdGVEYXRhU3RvcmUtPnNl
c3Npb25JRCgpOworICAgIHJldHVybiBtX3Nlc3Npb25JRDsKIH0KIAogdm9pZCBXZWJQcm9jZXNz
UHJveHk6OmNyZWF0ZVNwZWVjaFJlY29nbml0aW9uU2VydmVyKFNwZWVjaFJlY29nbml0aW9uU2Vy
dmVySWRlbnRpZmllciBpZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuaAppbmRleCAwNTU1ZDNkNTc2MzQ1YmIyNDk2MTA4NThkNjk0NjZlNDkxNTlmMWFj
Li5mODZmNDM3ZGQ1NDM5NTBlZTM4Mzg0YzE3MGNmMmEzMWM5MWE1Yjg3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaApAQCAtMTY3LDcgKzE2Nyw2IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGVuYWJsZVJlbW90ZVdvcmtlcnMoUmVtb3RlV29ya2VyVHlwZSwgY29uc3Qg
VXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciYpOwogICAgIHZvaWQgZGlzYWJsZVJlbW90
ZVdvcmtlcnMoUmVtb3RlV29ya2VyVHlwZSk7CiAKLSAgICBXZWJzaXRlRGF0YVN0b3JlJiB3ZWJz
aXRlRGF0YVN0b3JlKCkgY29uc3QgeyBBU1NFUlQobV93ZWJzaXRlRGF0YVN0b3JlKTsgcmV0dXJu
ICptX3dlYnNpdGVEYXRhU3RvcmU7IH0KICAgICB2b2lkIHNldFdlYnNpdGVEYXRhU3RvcmUoV2Vi
c2l0ZURhdGFTdG9yZSYpOwogICAgIAogICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNv
bnN0OwpAQCAtNjE0LDcgKzYxMyw3IEBAIHByaXZhdGU6CiAKICAgICBWaXNpYmxlV2ViUGFnZUNv
dW50ZXIgbV92aXNpYmxlUGFnZUNvdW50ZXI7CiAKLSAgICBSZWZQdHI8V2Vic2l0ZURhdGFTdG9y
ZT4gbV93ZWJzaXRlRGF0YVN0b3JlOworICAgIFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lvbklEIHsg
MCB9OwogCiAgICAgYm9vbCBtX2lzVW5kZXJNZW1vcnlQcmVzc3VyZSB7IGZhbHNlIH07CiAK
</data>
<flag name="commit-queue"
          id="485302"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456869</attachid>
            <date>2022-04-06 15:04:29 -0700</date>
            <delta_ts>2022-04-06 21:19:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238892-20220406150428.patch</filename>
            <type>text/plain</type>
            <size>34033</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMzk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGY0Y2JjNzEwMWVmYWNjNmE1
NWNhOTRjMGU3YjcwODVkNmZjYmU3NTguLjliMzUyOGUyZGQwZmY5Yzc5MjVmNzAwNGI1OGEyYjUy
MDlhYWJhMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjAgQEAKKzIwMjItMDQtMDYgIFNpaHVpIExp
dSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViUHJvY2Vzc1Byb3h5IHNob3Vs
ZCBub3QgaG9sZCBXZWJzaXRlRGF0YVN0b3JlIGFsaXZlIHdoZW4gdGhlcmUgaXMgbm8gcGFnZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4ODkyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBXZWJQ
cm9jZXNzUHJveHkgaG9sZCBTZXNzaW9uSUQgaW5zdGVhZCBvZiBzdHJvbmcgcmVmZXJlbmNlIHRv
IFdlYnNpdGVEYXRhU3RvcmUuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkdQVVByb2Nlc3NQcm94eTo6Z2V0R1BVUHJvY2Vz
c0Nvbm5lY3Rpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlByb3Zpc2lvbmFsUGFnZVByb3h5OjpQcm92aXNpb25hbFBh
Z2VQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlByb3Zpc2lvbmFsUGFnZVByb3h5Ojp+UHJvdmlz
aW9uYWxQYWdlUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94
eS5oOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQcm94eTo6d2Vic2l0ZURhdGFT
dG9yZSBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlN1c3BlbmRlZFBhZ2VQcm94eTo6ZmluZFJldXNhYmxlU3VzcGVu
ZGVkUGFnZVByb2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZENhY2hl
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRDYWNoZTo6cmVtb3ZlRW50cmll
c0ZvclNlc3Npb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJMb2NrUmVnaXN0cnlQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkxvY2tSZWdpc3RyeVByb3h5OjpyZXF1ZXN0TG9jayk6
CisgICAgICAgIChXZWJLaXQ6OldlYkxvY2tSZWdpc3RyeVByb3h5OjpyZWxlYXNlTG9jayk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkxvY2tSZWdpc3RyeVByb3h5OjphYm9ydExvY2tSZXF1ZXN0KToK
KyAgICAgICAgKFdlYktpdDo6V2ViTG9ja1JlZ2lzdHJ5UHJveHk6OnNuYXBzaG90KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViTG9ja1JlZ2lzdHJ5UHJveHk6OmNsaWVudElzR29pbmdBd2F5KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViTG9ja1JlZ2lzdHJ5UHJveHk6OnByb2Nlc3NEaWRFeGl0KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5Ojpzd2FwVG9Qcm92aXNpb25hbFBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OmNvbW1pdFByb3Zpc2lvbmFsUGFnZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlByb2Nlc3NDYWNoZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDYWNoZTo6Y2Fu
Q2FjaGVQcm9jZXNzIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0NhY2hlOjp0
YWtlUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDYWNoZTo6Y2xlYXJBbGxQ
cm9jZXNzZXNGb3JTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0NhY2hlOjpD
YWNoZWRQcm9jZXNzOjpDYWNoZWRQcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNo
UmVtb3RlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NGb3JSZWdpc3RyYWJsZURvbWFpbik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwYWdlQmVnaW5Vc2luZ1dlYnNpdGVEYXRh
U3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cGFnZUVuZFVzaW5nV2Vi
c2l0ZURhdGFTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpoYXNQYWdl
c1VzaW5nV2Vic2l0ZURhdGFTdG9yZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQb29sOjpwcm9jZXNzRm9yTmF2aWdhdGlvbkludGVybmFsKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpXZWJQcm9jZXNzUHJveHkp
OgorICAgICAgICAoV2ViS2l0OjptX3dlYkxvY2tSZWdpc3RyeSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQcm94eTo6c2V0V2Vic2l0ZURhdGFTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQcm94eTo6aXNEdW1teVByb2Nlc3NQcm94eSBjb25zdCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6dXBkYXRlUmVnaXN0cmF0aW9uV2l0aERhdGFTdG9yZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6YWRkRXhpc3RpbmdXZWJQYWdlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpyZW1vdmVXZWJQYWdlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24p
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxM
b2FkRm9yTWFpbkZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpzZXNz
aW9uSUQgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojp3ZWJzaXRlRGF0YVN0b3JlIGNvbnN0KTog
RGVsZXRlZC4KKwogMjAyMi0wNC0wNSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxl
LmNvbT4KIAogICAgICAgICBQYXNzIGFuIElPU3VyZmFjZVBvb2wgdG8gSW1hZ2VCdWZmZXI6OnJl
bGVhc2VCdWZmZXJUb1Bvb2woKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
R1BVL0dQVVByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HUFUvR1BV
UHJvY2Vzc1Byb3h5LmNwcAppbmRleCA4M2FmMWU1NWRkZjc0ODgyMzlmODY5MTkyNzcyMGFiNmE4
NjMxOTdkLi5iNjMxOGQ3ZGE4ODBjYjAzOWQxYWE4ZmI0YTU2OWNmZTY1ZTE5M2JjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmNwcApAQCAtMzg3
LDcgKzM4Nyw4IEBAIHZvaWQgR1BVUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzV2lsbFNodXREb3duKElQ
Qzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKIAogdm9pZCBHUFVQcm9jZXNzUHJveHk6OmdldEdQ
VVByb2Nlc3NDb25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYgd2ViUHJvY2Vzc1Byb3h5LCBjb25z
dCBHUFVQcm9jZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIE1lc3NhZ2VzOjpX
ZWJQcm9jZXNzUHJveHk6OkdldEdQVVByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHkmJiBy
ZXBseSkKIHsKLSAgICBhZGRTZXNzaW9uKHdlYlByb2Nlc3NQcm94eS53ZWJzaXRlRGF0YVN0b3Jl
KCkpOworICAgIGlmIChhdXRvKiBkYXRhU3RvcmUgPSBXZWJzaXRlRGF0YVN0b3JlOjpleGlzdGlu
Z0RhdGFTdG9yZUZvclNlc3Npb25JRCh3ZWJQcm9jZXNzUHJveHkuc2Vzc2lvbklEKCkpKQorICAg
ICAgICBhZGRTZXNzaW9uKCpkYXRhU3RvcmUpOwogCiAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1
c3BlbnNpb24sICIlcCAtIEdQVVByb2Nlc3NQcm94eSBpcyB0YWtpbmcgYSBiYWNrZ3JvdW5kIGFz
c2VydGlvbiBiZWNhdXNlIGEgd2ViIHByb2Nlc3MgaXMgcmVxdWVzdGluZyBhIGNvbm5lY3Rpb24i
LCB0aGlzKTsKICAgICBzdGFydFJlc3BvbnNpdmVuZXNzVGltZXIoVXNlTGF6eVN0b3A6Ok5vKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcApp
bmRleCA2MmI4NWI3MjYzZjJhODEyNDQ0NGYwZmUyNWNiMjIwMjIwNDI3YzhhLi5hOTA2MDY1NGUz
NDRkODA3MDgzMDI0ZGU2YjYwNjFjMmYwMGViZGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCkBAIC04Myw4ICs4MywxMSBAQCBQcm92
aXNpb25hbFBhZ2VQcm94eTo6UHJvdmlzaW9uYWxQYWdlUHJveHkoV2ViUGFnZVByb3h5JiBwYWdl
LCBSZWY8V2ViUHJvY2Vzc1BybwogICAgIG1fcHJvY2Vzcy0+YWRkTWVzc2FnZVJlY2VpdmVyKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV93ZWJQYWdlSUQs
ICp0aGlzKTsKICAgICBtX3Byb2Nlc3MtPmFkZFByb3Zpc2lvbmFsUGFnZVByb3h5KCp0aGlzKTsK
IAotICAgIGlmICgmbV9wcm9jZXNzLT53ZWJzaXRlRGF0YVN0b3JlKCkgIT0gJm1fcGFnZS53ZWJz
aXRlRGF0YVN0b3JlKCkpCi0gICAgICAgIG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5wYWdlQmVn
aW5Vc2luZ1dlYnNpdGVEYXRhU3RvcmUobV9wYWdlLmlkZW50aWZpZXIoKSwgbV9wcm9jZXNzLT53
ZWJzaXRlRGF0YVN0b3JlKCkpOworICAgIGF1dG8gcHJvY2Vzc1Nlc3Npb25JRCA9IG1fcHJvY2Vz
cy0+c2Vzc2lvbklEKCk7CisgICAgaWYgKHByb2Nlc3NTZXNzaW9uSUQgIT0gbV9wYWdlLndlYnNp
dGVEYXRhU3RvcmUoKS5zZXNzaW9uSUQoKSkKKyAgICAgICAgbV9wcm9jZXNzLT5wcm9jZXNzUG9v
bCgpLnBhZ2VCZWdpblVzaW5nV2Vic2l0ZURhdGFTdG9yZShtX3BhZ2UuaWRlbnRpZmllcigpLCBw
cm9jZXNzU2Vzc2lvbklEKTsKKyAgICBtX3dlYnNpdGVEYXRhU3RvcmUgPSBXZWJzaXRlRGF0YVN0
b3JlOjpleGlzdGluZ0RhdGFTdG9yZUZvclNlc3Npb25JRChwcm9jZXNzU2Vzc2lvbklEKTsKKyAg
ICBBU1NFUlQobV93ZWJzaXRlRGF0YVN0b3JlKTsKIAogICAgIC8vIElmIHdlIGFyZSByZWF0dGFj
aGluZyB0byBhIFN1c3BlbmRlZFBhZ2UsIHRoZW4gdGhlIFdlYlByb2Nlc3MnIFdlYlBhZ2UgYWxy
ZWFkeSBleGlzdHMgYW5kCiAgICAgLy8gV2ViUGFnZVByb3h5OjpkaWRDcmVhdGVNYWluRnJhbWUo
KSB3aWxsIG5vdCBiZSBjYWxsZWQgdG8gaW5pdGlhbGl6ZSBtX21haW5GcmFtZS4gSW4gc3VjaApA
QCAtMTEyLDggKzExNSw4IEBAIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojp+UHJvdmlzaW9uYWxQYWdl
UHJveHkoKQogICAgIGlmICghbV93YXNDb21taXR0ZWQpIHsKICAgICAgICAgbV9wYWdlLmluc3Bl
Y3RvckNvbnRyb2xsZXIoKS53aWxsRGVzdHJveVByb3Zpc2lvbmFsUGFnZSgqdGhpcyk7CiAKLSAg
ICAgICAgaWYgKCZtX3Byb2Nlc3MtPndlYnNpdGVEYXRhU3RvcmUoKSAhPSAmbV9wYWdlLndlYnNp
dGVEYXRhU3RvcmUoKSkKLSAgICAgICAgICAgIG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5wYWdl
RW5kVXNpbmdXZWJzaXRlRGF0YVN0b3JlKG1fcGFnZS5pZGVudGlmaWVyKCksIG1fcHJvY2Vzcy0+
d2Vic2l0ZURhdGFTdG9yZSgpKTsKKyAgICAgICAgaWYgKG1fcHJvY2Vzcy0+c2Vzc2lvbklEKCkg
IT0gbV9wYWdlLndlYnNpdGVEYXRhU3RvcmUoKS5zZXNzaW9uSUQoKSkKKyAgICAgICAgICAgIG1f
cHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5wYWdlRW5kVXNpbmdXZWJzaXRlRGF0YVN0b3JlKG1fcGFn
ZS5pZGVudGlmaWVyKCksIG1fcHJvY2Vzcy0+c2Vzc2lvbklEKCkpOwogCiAgICAgICAgIG1fcHJv
Y2Vzcy0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Om1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSwgbV93ZWJQYWdlSUQpOwogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpDbG9zZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1By
b3Zpc2lvbmFsUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25h
bFBhZ2VQcm94eS5oCmluZGV4IDIyZDJiYjEyY2E2YWQ1OGYyZWY3YjdhOTk1OTNiM2YwNmU2NGE4
OGYuLjJkMDgwYTdkZjkwZjFlYzIyOWMwOTEwMzMyODk4NGI1MDBmNzNmODkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaApAQCAtODMsNiArODMs
NyBAQCBwdWJsaWM6CiAgICAgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNzU3dh
cFJlcXVlc3RlZEJ5Q2xpZW50KCkgY29uc3QgeyByZXR1cm4gbV9wcm9jZXNzU3dhcFJlcXVlc3Rl
ZEJ5Q2xpZW50OyB9CiAgICAgdWludDY0X3QgbmF2aWdhdGlvbklEKCkgY29uc3QgeyByZXR1cm4g
bV9uYXZpZ2F0aW9uSUQ7IH0KICAgICBjb25zdCBVUkwmIHByb3Zpc2lvbmFsVVJMKCkgY29uc3Qg
eyByZXR1cm4gbV9wcm92aXNpb25hbExvYWRVUkw7IH0KKyAgICBXZWJzaXRlRGF0YVN0b3JlKiB3
ZWJzaXRlRGF0YVN0b3JlKCkgY29uc3QgeyByZXR1cm4gbV93ZWJzaXRlRGF0YVN0b3JlLmdldCgp
OyB9CiAKICAgICBib29sIGlzUHJvY2Vzc1N3YXBwaW5nT25OYXZpZ2F0aW9uUmVzcG9uc2UoKSBj
b25zdCB7IHJldHVybiBtX2lzUHJvY2Vzc1N3YXBwaW5nT25OYXZpZ2F0aW9uUmVzcG9uc2U7IH0K
IApAQCAtMTYzLDYgKzE2NCw3IEBAIHByaXZhdGU6CiAgICAgV2ViUGFnZVByb3h5JiBtX3BhZ2U7
CiAgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV93ZWJQYWdlSUQ7CiAgICAgUmVmPFdlYlBy
b2Nlc3NQcm94eT4gbV9wcm9jZXNzOworICAgIFJlZlB0cjxXZWJzaXRlRGF0YVN0b3JlPiBtX3dl
YnNpdGVEYXRhU3RvcmU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPERyYXdpbmdBcmVhUHJveHk+IG1f
ZHJhd2luZ0FyZWE7CiAgICAgUmVmUHRyPFdlYkZyYW1lUHJveHk+IG1fbWFpbkZyYW1lOwogICAg
IHVpbnQ2NF90IG1fbmF2aWdhdGlvbklEOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1
c3BlbmRlZFBhZ2VQcm94eS5jcHAKaW5kZXggY2NiZDYxMjg3ODUwZTczMTY5MWEzMzBjNGUzMGFk
M2EzNmUxZjA3ZC4uNjJmMWRhMzUwNzY4OTUxNTQwYzhlMDFmNDFjZjgzNjExZmEzYWUxZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwCkBAIC01
Myw3ICs1Myw3IEBAIFJlZlB0cjxXZWJQcm9jZXNzUHJveHk+IFN1c3BlbmRlZFBhZ2VQcm94eTo6
ZmluZFJldXNhYmxlU3VzcGVuZGVkUGFnZVByb2Nlc3MoV2ViCiB7CiAgICAgZm9yIChhdXRvKiBz
dXNwZW5kZWRQYWdlIDogYWxsU3VzcGVuZGVkUGFnZXMoKSkgewogICAgICAgICBhdXRvJiBwcm9j
ZXNzID0gc3VzcGVuZGVkUGFnZS0+cHJvY2VzcygpOwotICAgICAgICBpZiAoJnByb2Nlc3MucHJv
Y2Vzc1Bvb2woKSA9PSAmcHJvY2Vzc1Bvb2wgJiYgcHJvY2Vzcy5yZWdpc3RyYWJsZURvbWFpbigp
ID09IHJlZ2lzdHJhYmxlRG9tYWluICYmICZwcm9jZXNzLndlYnNpdGVEYXRhU3RvcmUoKSA9PSAm
ZGF0YVN0b3JlICYmIHByb2Nlc3MuY3Jvc3NPcmlnaW5Nb2RlKCkgIT0gQ3Jvc3NPcmlnaW5Nb2Rl
OjpJc29sYXRlZCAmJiBwcm9jZXNzLmNhcHRpdmVQb3J0YWxNb2RlKCkgPT0gY2FwdGl2ZVBvcnRh
bE1vZGUpCisgICAgICAgIGlmICgmcHJvY2Vzcy5wcm9jZXNzUG9vbCgpID09ICZwcm9jZXNzUG9v
bCAmJiBwcm9jZXNzLnJlZ2lzdHJhYmxlRG9tYWluKCkgPT0gcmVnaXN0cmFibGVEb21haW4gJiYg
cHJvY2Vzcy5zZXNzaW9uSUQoKSA9PSBkYXRhU3RvcmUuc2Vzc2lvbklEKCkgJiYgcHJvY2Vzcy5j
cm9zc09yaWdpbk1vZGUoKSAhPSBDcm9zc09yaWdpbk1vZGU6Oklzb2xhdGVkICYmIHByb2Nlc3Mu
Y2FwdGl2ZVBvcnRhbE1vZGUoKSA9PSBjYXB0aXZlUG9ydGFsTW9kZSkKICAgICAgICAgICAgIHJl
dHVybiAmcHJvY2VzczsKICAgICB9CiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZENhY2hlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkQ2FjaGUuY3BwCmluZGV4IDY0YTFhOWY2OWM2
YzQ2MjI0NDE3YmRhYzIwY2MwZTgxNDNmNWEwMzQuLmU1N2Q3OTRjYWUwODVlMzYyZWE4YmJiYTIx
ZGJmZDFkZjIwY2MyYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJh
Y2tGb3J3YXJkQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tG
b3J3YXJkQ2FjaGUuY3BwCkBAIC0xMzQsNyArMTM0LDcgQEAgdm9pZCBXZWJCYWNrRm9yd2FyZENh
Y2hlOjpyZW1vdmVFbnRyaWVzRm9yUHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MpCiB2
b2lkIFdlYkJhY2tGb3J3YXJkQ2FjaGU6OnJlbW92ZUVudHJpZXNGb3JTZXNzaW9uKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCkKIHsKICAgICByZW1vdmVFbnRyaWVzTWF0Y2hpbmcoW3Nlc3Npb25J
RF0oYXV0byYgaXRlbSkgewotICAgICAgICByZXR1cm4gaXRlbS5iYWNrRm9yd2FyZENhY2hlRW50
cnkoKS0+cHJvY2VzcygpLndlYnNpdGVEYXRhU3RvcmUoKS5zZXNzaW9uSUQoKSA9PSBzZXNzaW9u
SUQ7CisgICAgICAgIHJldHVybiBpdGVtLmJhY2tGb3J3YXJkQ2FjaGVFbnRyeSgpLT5wcm9jZXNz
KCkuc2Vzc2lvbklEKCkgPT0gc2Vzc2lvbklEOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJMb2NrUmVnaXN0cnlQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJMb2NrUmVnaXN0cnlQcm94eS5jcHAKaW5kZXggZGU4NzkwZWMx
ZjIwMGRmNTE0YjY0ZDU0NTkyNTY0OGUzMTgyMmMyNy4uYzgzZWI2NTc1ODg4ZWJmNDdmMTc4ZWYx
NDJlMjNiZWY5MDlhZmZmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
TG9ja1JlZ2lzdHJ5UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkxv
Y2tSZWdpc3RyeVByb3h5LmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIldlYlByb2Nl
c3NQcm94eS5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlIDxXZWJD
b3JlL1dlYkxvY2tJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9XZWJMb2NrTWFuYWdl
clNuYXBzaG90Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9XZWJMb2NrUmVnaXN0cnkuaD4KIAogbmFt
ZXNwYWNlIFdlYktpdCB7CkBAIC01NSw0NCArNTYsNTggQEAgdm9pZCBXZWJMb2NrUmVnaXN0cnlQ
cm94eTo6cmVxdWVzdExvY2soV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYgY2xpZW50T3JpZ2luLCBX
ZWIKICAgICBNRVNTQUdFX0NIRUNLKGNsaWVudElELnByb2Nlc3NJZGVudGlmaWVyKCkgPT0gbV9w
cm9jZXNzLmNvcmVQcm9jZXNzSWRlbnRpZmllcigpKTsKICAgICBtX2hhc0V2ZXJSZXF1ZXN0ZWRM
b2NrcyA9IHRydWU7CiAKLSAgICBtX3Byb2Nlc3Mud2Vic2l0ZURhdGFTdG9yZSgpLndlYkxvY2tS
ZWdpc3RyeSgpLnJlcXVlc3RMb2NrKFdURk1vdmUoY2xpZW50T3JpZ2luKSwgbG9ja0lkZW50aWZp
ZXIsIGNsaWVudElELCBXVEZNb3ZlKG5hbWUpLCBsb2NrTW9kZSwgc3RlYWwsIGlmQXZhaWxhYmxl
LCBbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgbG9ja0lkZW50aWZpZXIsIGNsaWVudElE
XShib29sIHN1Y2Nlc3MpIHsKLSAgICAgICAgaWYgKHdlYWtUaGlzKQotICAgICAgICAgICAgd2Vh
a1RoaXMtPm1fcHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVXZWJMb2NrUmVnaXN0cnk6OkRp
ZENvbXBsZXRlTG9ja1JlcXVlc3QobG9ja0lkZW50aWZpZXIsIGNsaWVudElELCBzdWNjZXNzKSwg
MCk7Ci0gICAgfSwgW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIGxvY2tJZGVudGlmaWVy
LCBjbGllbnRJRF0gewotICAgICAgICBpZiAod2Vha1RoaXMpCi0gICAgICAgICAgICB3ZWFrVGhp
cy0+bV9wcm9jZXNzLnNlbmQoTWVzc2FnZXM6OlJlbW90ZVdlYkxvY2tSZWdpc3RyeTo6RGlkU3Rl
YWxMb2NrKGxvY2tJZGVudGlmaWVyLCBjbGllbnRJRCksIDApOwotICAgIH0pOworICAgIGlmIChh
dXRvKiBkYXRhU3RvcmUgPSBXZWJzaXRlRGF0YVN0b3JlOjpleGlzdGluZ0RhdGFTdG9yZUZvclNl
c3Npb25JRChtX3Byb2Nlc3Muc2Vzc2lvbklEKCkpKSB7CisgICAgICAgIGRhdGFTdG9yZS0+d2Vi
TG9ja1JlZ2lzdHJ5KCkucmVxdWVzdExvY2soV1RGTW92ZShjbGllbnRPcmlnaW4pLCBsb2NrSWRl
bnRpZmllciwgY2xpZW50SUQsIFdURk1vdmUobmFtZSksIGxvY2tNb2RlLCBzdGVhbCwgaWZBdmFp
bGFibGUsIFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBsb2NrSWRlbnRpZmllciwgY2xp
ZW50SURdKGJvb2wgc3VjY2VzcykgeworICAgICAgICAgICAgaWYgKHdlYWtUaGlzKQorICAgICAg
ICAgICAgICAgIHdlYWtUaGlzLT5tX3Byb2Nlc3Muc2VuZChNZXNzYWdlczo6UmVtb3RlV2ViTG9j
a1JlZ2lzdHJ5OjpEaWRDb21wbGV0ZUxvY2tSZXF1ZXN0KGxvY2tJZGVudGlmaWVyLCBjbGllbnRJ
RCwgc3VjY2VzcyksIDApOworICAgICAgICB9LCBbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMg
fSwgbG9ja0lkZW50aWZpZXIsIGNsaWVudElEXSB7CisgICAgICAgICAgICBpZiAod2Vha1RoaXMp
CisgICAgICAgICAgICAgICAgd2Vha1RoaXMtPm1fcHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpSZW1v
dGVXZWJMb2NrUmVnaXN0cnk6OkRpZFN0ZWFsTG9jayhsb2NrSWRlbnRpZmllciwgY2xpZW50SUQp
LCAwKTsKKyAgICAgICAgfSk7CisgICAgfSBlbHNlCisgICAgICAgIG1fcHJvY2Vzcy5zZW5kKE1l
c3NhZ2VzOjpSZW1vdGVXZWJMb2NrUmVnaXN0cnk6OkRpZENvbXBsZXRlTG9ja1JlcXVlc3QobG9j
a0lkZW50aWZpZXIsIGNsaWVudElELCBmYWxzZSksIDApOwogfQogCiB2b2lkIFdlYkxvY2tSZWdp
c3RyeVByb3h5OjpyZWxlYXNlTG9jayhXZWJDb3JlOjpDbGllbnRPcmlnaW4mJiBjbGllbnRPcmln
aW4sIFdlYkNvcmU6OldlYkxvY2tJZGVudGlmaWVyIGxvY2tJZGVudGlmaWVyLCBXZWJDb3JlOjpT
Y3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciBjbGllbnRJRCwgU3RyaW5nJiYgbmFtZSkK
IHsKICAgICBNRVNTQUdFX0NIRUNLKGxvY2tJZGVudGlmaWVyLnByb2Nlc3NJZGVudGlmaWVyKCkg
PT0gbV9wcm9jZXNzLmNvcmVQcm9jZXNzSWRlbnRpZmllcigpKTsKICAgICBNRVNTQUdFX0NIRUNL
KGNsaWVudElELnByb2Nlc3NJZGVudGlmaWVyKCkgPT0gbV9wcm9jZXNzLmNvcmVQcm9jZXNzSWRl
bnRpZmllcigpKTsKLSAgICBtX3Byb2Nlc3Mud2Vic2l0ZURhdGFTdG9yZSgpLndlYkxvY2tSZWdp
c3RyeSgpLnJlbGVhc2VMb2NrKFdURk1vdmUoY2xpZW50T3JpZ2luKSwgbG9ja0lkZW50aWZpZXIs
IGNsaWVudElELCBXVEZNb3ZlKG5hbWUpKTsKKyAgICBpZiAoYXV0byogZGF0YVN0b3JlID0gV2Vi
c2l0ZURhdGFTdG9yZTo6ZXhpc3RpbmdEYXRhU3RvcmVGb3JTZXNzaW9uSUQobV9wcm9jZXNzLnNl
c3Npb25JRCgpKSkKKyAgICAgICAgZGF0YVN0b3JlLT53ZWJMb2NrUmVnaXN0cnkoKS5yZWxlYXNl
TG9jayhXVEZNb3ZlKGNsaWVudE9yaWdpbiksIGxvY2tJZGVudGlmaWVyLCBjbGllbnRJRCwgV1RG
TW92ZShuYW1lKSk7CiB9CiAKIHZvaWQgV2ViTG9ja1JlZ2lzdHJ5UHJveHk6OmFib3J0TG9ja1Jl
cXVlc3QoV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYgY2xpZW50T3JpZ2luLCBXZWJDb3JlOjpXZWJM
b2NrSWRlbnRpZmllciBsb2NrSWRlbnRpZmllciwgV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dElkZW50aWZpZXIgY2xpZW50SUQsIFN0cmluZyYmIG5hbWUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgTUVTU0FHRV9DSEVDSyhs
b2NrSWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmllcigpID09IG1fcHJvY2Vzcy5jb3JlUHJvY2Vz
c0lkZW50aWZpZXIoKSk7CiAgICAgTUVTU0FHRV9DSEVDSyhjbGllbnRJRC5wcm9jZXNzSWRlbnRp
ZmllcigpID09IG1fcHJvY2Vzcy5jb3JlUHJvY2Vzc0lkZW50aWZpZXIoKSk7Ci0gICAgbV9wcm9j
ZXNzLndlYnNpdGVEYXRhU3RvcmUoKS53ZWJMb2NrUmVnaXN0cnkoKS5hYm9ydExvY2tSZXF1ZXN0
KFdURk1vdmUoY2xpZW50T3JpZ2luKSwgbG9ja0lkZW50aWZpZXIsIGNsaWVudElELCBXVEZNb3Zl
KG5hbWUpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgaWYgKGF1dG8qIGRhdGFT
dG9yZSA9IFdlYnNpdGVEYXRhU3RvcmU6OmV4aXN0aW5nRGF0YVN0b3JlRm9yU2Vzc2lvbklEKG1f
cHJvY2Vzcy5zZXNzaW9uSUQoKSkpCisgICAgICAgIGRhdGFTdG9yZS0+d2ViTG9ja1JlZ2lzdHJ5
KCkuYWJvcnRMb2NrUmVxdWVzdChXVEZNb3ZlKGNsaWVudE9yaWdpbiksIGxvY2tJZGVudGlmaWVy
LCBjbGllbnRJRCwgV1RGTW92ZShuYW1lKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwor
ICAgIGVsc2UKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwogfQogCiB2b2lkIFdl
YkxvY2tSZWdpc3RyeVByb3h5OjpzbmFwc2hvdChXZWJDb3JlOjpDbGllbnRPcmlnaW4mJiBjbGll
bnRPcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6V2ViTG9ja01hbmFnZXJT
bmFwc2hvdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBtX3Byb2Nlc3Mud2Vic2l0
ZURhdGFTdG9yZSgpLndlYkxvY2tSZWdpc3RyeSgpLnNuYXBzaG90KFdURk1vdmUoY2xpZW50T3Jp
Z2luKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIGlmIChhdXRvKiBkYXRhU3Rv
cmUgPSBXZWJzaXRlRGF0YVN0b3JlOjpleGlzdGluZ0RhdGFTdG9yZUZvclNlc3Npb25JRChtX3By
b2Nlc3Muc2Vzc2lvbklEKCkpKQorICAgICAgICBkYXRhU3RvcmUtPndlYkxvY2tSZWdpc3RyeSgp
LnNuYXBzaG90KFdURk1vdmUoY2xpZW50T3JpZ2luKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOworICAgIGVsc2UKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV2ViQ29yZTo6V2ViTG9j
a01hbmFnZXJTbmFwc2hvdCB7IH0pOwogfQogCiB2b2lkIFdlYkxvY2tSZWdpc3RyeVByb3h5Ojpj
bGllbnRJc0dvaW5nQXdheShXZWJDb3JlOjpDbGllbnRPcmlnaW4mJiBjbGllbnRPcmlnaW4sIFdl
YkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyIGNsaWVudElEKQogewogICAg
IE1FU1NBR0VfQ0hFQ0soY2xpZW50SUQucHJvY2Vzc0lkZW50aWZpZXIoKSA9PSBtX3Byb2Nlc3Mu
Y29yZVByb2Nlc3NJZGVudGlmaWVyKCkpOwotICAgIG1fcHJvY2Vzcy53ZWJzaXRlRGF0YVN0b3Jl
KCkud2ViTG9ja1JlZ2lzdHJ5KCkuY2xpZW50SXNHb2luZ0F3YXkoV1RGTW92ZShjbGllbnRPcmln
aW4pLCBjbGllbnRJRCk7CisgICAgaWYgKGF1dG8qIGRhdGFTdG9yZSA9IFdlYnNpdGVEYXRhU3Rv
cmU6OmV4aXN0aW5nRGF0YVN0b3JlRm9yU2Vzc2lvbklEKG1fcHJvY2Vzcy5zZXNzaW9uSUQoKSkp
CisgICAgICAgIGRhdGFTdG9yZS0+d2ViTG9ja1JlZ2lzdHJ5KCkuY2xpZW50SXNHb2luZ0F3YXko
V1RGTW92ZShjbGllbnRPcmlnaW4pLCBjbGllbnRJRCk7CiB9CiAKIHZvaWQgV2ViTG9ja1JlZ2lz
dHJ5UHJveHk6OnByb2Nlc3NEaWRFeGl0KCkKIHsKLSAgICBpZiAobV9oYXNFdmVyUmVxdWVzdGVk
TG9ja3MpCi0gICAgICAgIG1fcHJvY2Vzcy53ZWJzaXRlRGF0YVN0b3JlKCkud2ViTG9ja1JlZ2lz
dHJ5KCkuY2xpZW50c0FyZUdvaW5nQXdheShtX3Byb2Nlc3MuY29yZVByb2Nlc3NJZGVudGlmaWVy
KCkpOworICAgIGlmICghbV9oYXNFdmVyUmVxdWVzdGVkTG9ja3MpCisgICAgICAgIHJldHVybjsK
KworICAgIGlmIChhdXRvKiBkYXRhU3RvcmUgPSBXZWJzaXRlRGF0YVN0b3JlOjpleGlzdGluZ0Rh
dGFTdG9yZUZvclNlc3Npb25JRChtX3Byb2Nlc3Muc2Vzc2lvbklEKCkpKQorICAgICAgICBkYXRh
U3RvcmUtPndlYkxvY2tSZWdpc3RyeSgpLmNsaWVudHNBcmVHb2luZ0F3YXkobV9wcm9jZXNzLmNv
cmVQcm9jZXNzSWRlbnRpZmllcigpKTsKIH0KIAogI3VuZGVmIE1FU1NBR0VfQ0hFQ0sKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDkwNzM2OTZhMjVkYzllOTE1
YjMyNWQ3ZDZjMzlkZjMyOTFlM2Y5ZTMuLjhlN2I1NDdhYmI5MjhjMDEzMGE4OGY3OTQ0MzBhNzBh
YTYxYTAzNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAt
OTc4LDcgKzk3OCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpzd2FwVG9Qcm92aXNpb25hbFBhZ2Uo
c3RkOjp1bmlxdWVfcHRyPFByb3Zpc2lvbmFsUGFnZVByb3h5PiBwCiAgICAgbV9wcm9jZXNzID0g
cHJvdmlzaW9uYWxQYWdlLT5wcm9jZXNzKCk7CiAgICAgbV93ZWJQYWdlSUQgPSBwcm92aXNpb25h
bFBhZ2UtPndlYlBhZ2VJRCgpOwogICAgIHBhZ2VDbGllbnQoKS5kaWRDaGFuZ2VXZWJQYWdlSUQo
KTsKLSAgICBtX3dlYnNpdGVEYXRhU3RvcmUgPSBtX3Byb2Nlc3MtPndlYnNpdGVEYXRhU3RvcmUo
KTsKKyAgICBtX3dlYnNpdGVEYXRhU3RvcmUgPSAqcHJvdmlzaW9uYWxQYWdlLT53ZWJzaXRlRGF0
YVN0b3JlKCk7CiAKICNpZiBIQVZFKFZJU0lCSUxJVFlfUFJPUEFHQVRJT05fVklFVykKICAgICBt
X2NvbnRleHRJREZvclZpc2liaWxpdHlQcm9wYWdhdGlvbkluV2ViUHJvY2VzcyA9IHByb3Zpc2lv
bmFsUGFnZS0+Y29udGV4dElERm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uSW5XZWJQcm9jZXNzKCk7
CkBAIC0zNjE0LDcgKzM2MTQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y29tbWl0UHJvdmlzaW9u
YWxQYWdlKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBGcmFtZUluZm9EYXRhJgogICAgIHJlbW92
ZUFsbE1lc3NhZ2VSZWNlaXZlcnMoKTsKICAgICBhdXRvKiBuYXZpZ2F0aW9uID0gbmF2aWdhdGlv
blN0YXRlKCkubmF2aWdhdGlvbihtX3Byb3Zpc2lvbmFsUGFnZS0+bmF2aWdhdGlvbklEKCkpOwog
ICAgIGJvb2wgZGlkU3VzcGVuZFByZXZpb3VzUGFnZSA9IG5hdmlnYXRpb24gJiYgIW1fcHJvdmlz
aW9uYWxQYWdlLT5pc1Byb2Nlc3NTd2FwcGluZ09uTmF2aWdhdGlvblJlc3BvbnNlKCkgPyBzdXNw
ZW5kQ3VycmVudFBhZ2VJZlBvc3NpYmxlKCpuYXZpZ2F0aW9uLCBtYWluRnJhbWVJREluUHJldmlv
dXNQcm9jZXNzLCBtX3Byb3Zpc2lvbmFsUGFnZS0+cHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVu
dCgpLCBzaG91bGREZWxheUNsb3NpbmdVbnRpbEZpcnN0TGF5ZXJGbHVzaCkgOiBmYWxzZTsKLSAg
ICBtX3Byb2Nlc3MtPnJlbW92ZVdlYlBhZ2UoKnRoaXMsIG1fd2Vic2l0ZURhdGFTdG9yZS5wdHIo
KSA9PSAmbV9wcm92aXNpb25hbFBhZ2UtPnByb2Nlc3MoKS53ZWJzaXRlRGF0YVN0b3JlKCkgPyBX
ZWJQcm9jZXNzUHJveHk6OkVuZHNVc2luZ0RhdGFTdG9yZTo6Tm8gOiBXZWJQcm9jZXNzUHJveHk6
OkVuZHNVc2luZ0RhdGFTdG9yZTo6WWVzKTsKKyAgICBtX3Byb2Nlc3MtPnJlbW92ZVdlYlBhZ2Uo
KnRoaXMsIG1fd2Vic2l0ZURhdGFTdG9yZS5wdHIoKSA9PSBtX3Byb3Zpc2lvbmFsUGFnZS0+d2Vi
c2l0ZURhdGFTdG9yZSgpID8gV2ViUHJvY2Vzc1Byb3h5OjpFbmRzVXNpbmdEYXRhU3RvcmU6Ok5v
IDogV2ViUHJvY2Vzc1Byb3h5OjpFbmRzVXNpbmdEYXRhU3RvcmU6Olllcyk7CiAKICAgICAvLyBU
aGVyZSBpcyBubyB3YXkgd2UnbGwgYmUgYWJsZSB0byByZXR1cm4gdG8gdGhlIHBhZ2UgaW4gdGhl
IHByZXZpb3VzIHBhZ2Ugc28gY2xvc2UgaXQuCiAgICAgaWYgKCFkaWRTdXNwZW5kUHJldmlvdXNQ
YWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc0NhY2hl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NDYWNoZS5jcHAKaW5kZXgg
NTFmY2JlNjYzNDFhOTkzMGY3OGM0MjcxMzQ4YTAxZWIxNGIzYzI3MS4uMDY5MTMzNDUyZGIxNTdj
ZDYzMzg4ZTdmMDViYmVhNzM1ZjY2ZTViMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc0NhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzQ2FjaGUuY3BwCkBAIC03Niw4ICs3Niw4IEBAIGJvb2wgV2ViUHJvY2Vzc0NhY2hl
OjpjYW5DYWNoZVByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzKSBjb25zdAogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgYXV0byBzZXNzaW9uSUQgPSBwcm9jZXNzLndl
YnNpdGVEYXRhU3RvcmUoKS5zZXNzaW9uSUQoKTsKLSAgICBpZiAoc2Vzc2lvbklELmlzRXBoZW1l
cmFsKCkgJiYgIXByb2Nlc3MucHJvY2Vzc1Bvb2woKS5oYXNQYWdlc1VzaW5nV2Vic2l0ZURhdGFT
dG9yZShwcm9jZXNzLndlYnNpdGVEYXRhU3RvcmUoKSkpIHsKKyAgICBhdXRvIHNlc3Npb25JRCA9
IHByb2Nlc3Muc2Vzc2lvbklEKCk7CisgICAgaWYgKHNlc3Npb25JRC5pc0VwaGVtZXJhbCgpICYm
ICFwcm9jZXNzLnByb2Nlc3NQb29sKCkuaGFzUGFnZXNVc2luZ1dlYnNpdGVEYXRhU3RvcmUocHJv
Y2Vzcy5zZXNzaW9uSUQoKSkpIHsKICAgICAgICAgV0VCUFJPQ0VTU0NBQ0hFX1JFTEVBU0VfTE9H
KCJjYW5DYWNoZVByb2Nlc3M6IE5vdCBjYWNoaW5nIHByb2Nlc3MgYmVjYXVzZSB0aGlzIHNlc3Np
b24gaGFzIGJlZW4gZGVzdHJveWVkIiwgcHJvY2Vzcy5wcm9jZXNzSWRlbnRpZmllcigpKTsKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTE1Myw3ICsxNTMsNyBAQCBSZWZQdHI8V2Vi
UHJvY2Vzc1Byb3h5PiBXZWJQcm9jZXNzQ2FjaGU6OnRha2VQcm9jZXNzKGNvbnN0IFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRAogICAgIGlmIChpdCA9PSBtX3Byb2Nlc3Nlc1BlclJlZ2lzdHJhYmxlRG9t
YWluLmVuZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGlmICgmaXQtPnZhbHVl
LT5wcm9jZXNzKCkud2Vic2l0ZURhdGFTdG9yZSgpICE9ICZkYXRhU3RvcmUpCisgICAgaWYgKGl0
LT52YWx1ZS0+cHJvY2VzcygpLnNlc3Npb25JRCgpICE9IGRhdGFTdG9yZS5zZXNzaW9uSUQoKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAoaXQtPnZhbHVlLT5wcm9jZXNzKCku
Y2FwdGl2ZVBvcnRhbE1vZGUoKSAhPSBjYXB0aXZlUG9ydGFsTW9kZSkKQEAgLTIxMiw3ICsyMTIs
NyBAQCB2b2lkIFdlYlByb2Nlc3NDYWNoZTo6Y2xlYXJBbGxQcm9jZXNzZXNGb3JTZXNzaW9uKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKICAgICBWZWN0b3I8V2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4+IGtleXNUb1JlbW92ZTsKICAgICBmb3IgKGF1dG8mIHBhaXIgOiBtX3Byb2Nlc3Nl
c1BlclJlZ2lzdHJhYmxlRG9tYWluKSB7Ci0gICAgICAgIGlmIChwYWlyLnZhbHVlLT5wcm9jZXNz
KCkud2Vic2l0ZURhdGFTdG9yZSgpLnNlc3Npb25JRCgpID09IHNlc3Npb25JRCkgeworICAgICAg
ICBpZiAocGFpci52YWx1ZS0+cHJvY2VzcygpLnNlc3Npb25JRCgpID09IHNlc3Npb25JRCkgewog
ICAgICAgICAgICAgV0VCUFJPQ0VTU0NBQ0hFX1JFTEVBU0VfTE9HKCJjbGVhckFsbFByb2Nlc3Nl
c0ZvclNlc3Npb246IEV2aWN0aW5nIHByb2Nlc3MgYmVjYXVzZSBpdHMgc2Vzc2lvbiB3YXMgZGVz
dHJveWVkIiwgcGFpci52YWx1ZS0+cHJvY2VzcygpLnByb2Nlc3NJZGVudGlmaWVyKCkpOwogICAg
ICAgICAgICAga2V5c1RvUmVtb3ZlLmFwcGVuZChwYWlyLmtleSk7CiAgICAgICAgIH0KQEAgLTIy
Miw3ICsyMjIsNyBAQCB2b2lkIFdlYlByb2Nlc3NDYWNoZTo6Y2xlYXJBbGxQcm9jZXNzZXNGb3JT
ZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIAogICAgIFZlY3Rvcjx1aW50NjRfdD4g
cGVuZGluZ1JlcXVlc3RzVG9SZW1vdmU7CiAgICAgZm9yIChhdXRvJiBwYWlyIDogbV9wZW5kaW5n
QWRkUmVxdWVzdHMpIHsKLSAgICAgICAgaWYgKHBhaXIudmFsdWUtPnByb2Nlc3MoKS53ZWJzaXRl
RGF0YVN0b3JlKCkuc2Vzc2lvbklEKCkgPT0gc2Vzc2lvbklEKSB7CisgICAgICAgIGlmIChwYWly
LnZhbHVlLT5wcm9jZXNzKCkuc2Vzc2lvbklEKCkgPT0gc2Vzc2lvbklEKSB7CiAgICAgICAgICAg
ICBXRUJQUk9DRVNTQ0FDSEVfUkVMRUFTRV9MT0coImNsZWFyQWxsUHJvY2Vzc2VzRm9yU2Vzc2lv
bjogRXZpY3RpbmcgcHJvY2VzcyBiZWNhdXNlIGl0cyBzZXNzaW9uIHdhcyBkZXN0cm95ZWQiLCBw
YWlyLnZhbHVlLT5wcm9jZXNzKCkucHJvY2Vzc0lkZW50aWZpZXIoKSk7CiAgICAgICAgICAgICBw
ZW5kaW5nUmVxdWVzdHNUb1JlbW92ZS5hcHBlbmQocGFpci5rZXkpOwogICAgICAgICB9CkBAIC0y
NzYsNyArMjc2LDkgQEAgV2ViUHJvY2Vzc0NhY2hlOjpDYWNoZWRQcm9jZXNzOjpDYWNoZWRQcm9j
ZXNzKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcykKICNlbmRpZgogewogICAgIFJFTEVB
U0VfQVNTRVJUKCFtX3Byb2Nlc3MtPnBhZ2VDb3VudCgpKTsKLSAgICBSRUxFQVNFX0FTU0VSVF9X
SVRIX01FU1NBR0UoIW1fcHJvY2Vzcy0+d2Vic2l0ZURhdGFTdG9yZSgpLnByb2Nlc3NlcygpLmNv
bnRhaW5zKCptX3Byb2Nlc3MpLCAiT25seSBwcm9jZXNzZXMgd2l0aCBwYWdlcyBzaG91bGQgYmUg
cmVnaXN0ZXJlZCB3aXRoIHRoZSBkYXRhIHN0b3JlIik7CisgICAgYXV0byogZGF0YVN0b3JlID0g
V2Vic2l0ZURhdGFTdG9yZTo6ZXhpc3RpbmdEYXRhU3RvcmVGb3JTZXNzaW9uSUQobV9wcm9jZXNz
LT5zZXNzaW9uSUQoKSk7CisgICAgUkVMRUFTRV9BU1NFUlQoZGF0YVN0b3JlKTsKKyAgICBSRUxF
QVNFX0FTU0VSVF9XSVRIX01FU1NBR0UoIWRhdGFTdG9yZS0+cHJvY2Vzc2VzKCkuY29udGFpbnMo
Km1fcHJvY2VzcyksICJPbmx5IHByb2Nlc3NlcyB3aXRoIHBhZ2VzIHNob3VsZCBiZSByZWdpc3Rl
cmVkIHdpdGggdGhlIGRhdGEgc3RvcmUiKTsKICAgICBtX3Byb2Nlc3MtPnNldElzSW5Qcm9jZXNz
Q2FjaGUodHJ1ZSk7CiAgICAgbV9ldmljdGlvblRpbWVyLnN0YXJ0T25lU2hvdChjYWNoZWRQcm9j
ZXNzTGlmZXRpbWUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
Y3BwCmluZGV4IDFiMmI4NTFlOTcyNGFjNTBmZTM5OGY5MDRmYjNlYzU3YWU1MDlhMDUuLmJhMWE2
OTI0NDU5NmMwMTI0ODQxNTMxYmFjYjA5MzI4MWVlNjZlYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTU3MSw3ICs1NzEsNyBAQCB2b2lkIFdlYlBy
b2Nlc3NQb29sOjplc3RhYmxpc2hSZW1vdGVXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29y
a1Byb2Nlc3MoUmVtbwogCiAgICAgLy8gUHJpb3JpdGl6ZSB0aGUgcmVxdWVzdGluZyBXZWJQcm9j
ZXNzIGZvciBydW5uaW5nIHRoZSBzZXJ2aWNlIHdvcmtlci4KICAgICBpZiAoIXJlbW90ZVdvcmtl
clByb2Nlc3NQcm94eSAmJiAhc2hvdWxkVXNlU2VwYXJhdGVSZW1vdGVXb3JrZXJQcm9jZXNzICYm
IHJlcXVlc3RpbmdQcm9jZXNzKSB7Ci0gICAgICAgIGlmICgmcmVxdWVzdGluZ1Byb2Nlc3MtPndl
YnNpdGVEYXRhU3RvcmUoKSA9PSB3ZWJzaXRlRGF0YVN0b3JlICYmIHJlcXVlc3RpbmdQcm9jZXNz
LT5pc01hdGNoaW5nUmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21haW4pKQorICAgICAg
ICBpZiAocmVxdWVzdGluZ1Byb2Nlc3MtPnNlc3Npb25JRCgpID09IHdlYnNpdGVEYXRhU3RvcmUt
PnNlc3Npb25JRCgpICYmIHJlcXVlc3RpbmdQcm9jZXNzLT5pc01hdGNoaW5nUmVnaXN0cmFibGVE
b21haW4ocmVnaXN0cmFibGVEb21haW4pKQogICAgICAgICAgICAgdXNlUHJvY2Vzc0ZvclJlbW90
ZVdvcmtlcnMoKnJlcXVlc3RpbmdQcm9jZXNzKTsKICAgICB9CiAKQEAgLTU3OSw3ICs1NzksNyBA
QCB2b2lkIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hSZW1vdGVXb3JrZXJDb250ZXh0Q29ubmVj
dGlvblRvTmV0d29ya1Byb2Nlc3MoUmVtbwogICAgICAgICBmb3IgKGF1dG8mIHByb2Nlc3MgOiBw
cm9jZXNzUG9vbC0+bV9wcm9jZXNzZXMpIHsKICAgICAgICAgICAgIGlmIChwcm9jZXNzLnB0cigp
ID09IHByb2Nlc3NQb29sLT5tX3ByZXdhcm1lZFByb2Nlc3MuZ2V0KCkgfHwgcHJvY2Vzcy0+aXNE
dW1teVByb2Nlc3NQcm94eSgpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAg
ICAgaWYgKCZwcm9jZXNzLT53ZWJzaXRlRGF0YVN0b3JlKCkgIT0gd2Vic2l0ZURhdGFTdG9yZSkK
KyAgICAgICAgICAgIGlmIChwcm9jZXNzLT5zZXNzaW9uSUQoKSAhPSB3ZWJzaXRlRGF0YVN0b3Jl
LT5zZXNzaW9uSUQoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGlm
ICghcHJvY2Vzcy0+aXNNYXRjaGluZ1JlZ2lzdHJhYmxlRG9tYWluKHJlZ2lzdHJhYmxlRG9tYWlu
KSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTEwODUsNyArMTA4NSw3IEBAIFJlZjxX
ZWJQcm9jZXNzUHJveHk+IFdlYlByb2Nlc3NQb29sOjpwcm9jZXNzRm9yUmVnaXN0cmFibGVEb21h
aW4oV2Vic2l0ZURhdGFTdG9yCiAgICAgICAgICAgICBpZiAocHJvY2Vzcy0+aXNSdW5uaW5nU2Vy
dmljZVdvcmtlcnMoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICNlbmRpZgotICAgICAg
ICAgICAgaWYgKG11c3RNYXRjaERhdGFTdG9yZSAmJiAmcHJvY2Vzcy0+d2Vic2l0ZURhdGFTdG9y
ZSgpICE9ICZ3ZWJzaXRlRGF0YVN0b3JlKQorICAgICAgICAgICAgaWYgKG11c3RNYXRjaERhdGFT
dG9yZSAmJiBwcm9jZXNzLT5zZXNzaW9uSUQoKSAhPSB3ZWJzaXRlRGF0YVN0b3JlLnNlc3Npb25J
RCgpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgcmV0dXJuIHByb2Nl
c3M7CiAgICAgICAgIH0KQEAgLTExMjUsNyArMTEyNSw3IEBAIFJlZjxXZWJQYWdlUHJveHk+IFdl
YlByb2Nlc3NQb29sOjpjcmVhdGVXZWJQYWdlKFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFJlZjxB
UEk6CiAgICAgICAgIC8vIFNoYXJpbmcgcHJvY2Vzc2VzLCBlLmcuIHdoZW4gY3JlYXRpbmcgdGhl
IHBhZ2UgdmlhIHdpbmRvdy5vcGVuKCkuCiAgICAgICAgIHByb2Nlc3MgPSAmcGFnZUNvbmZpZ3Vy
YXRpb24tPnJlbGF0ZWRQYWdlKCktPmVuc3VyZVJ1bm5pbmdQcm9jZXNzKCk7CiAgICAgICAgIC8v
IFdlIGRvIG5vdCBzdXBwb3J0IHNldmVyYWwgV2Vic2l0ZURhdGFTdG9yZXMgc2hhcmluZyBhIHNp
bmdsZSBwcm9jZXNzLgotICAgICAgICBBU1NFUlQocHJvY2Vzcy0+aXNEdW1teVByb2Nlc3NQcm94
eSgpIHx8IHBhZ2VDb25maWd1cmF0aW9uLT53ZWJzaXRlRGF0YVN0b3JlKCkgPT0gJnByb2Nlc3Mt
PndlYnNpdGVEYXRhU3RvcmUoKSk7CisgICAgICAgIEFTU0VSVChwcm9jZXNzLT5pc0R1bW15UHJv
Y2Vzc1Byb3h5KCkgfHwgcGFnZUNvbmZpZ3VyYXRpb24tPndlYnNpdGVEYXRhU3RvcmUoKS5zZXNz
aW9uSUQoKSA9PSBwcm9jZXNzLT5zZXNzaW9uSUQoKSk7CiAgICAgICAgIEFTU0VSVCgmcGFnZUNv
bmZpZ3VyYXRpb24tPnJlbGF0ZWRQYWdlKCktPndlYnNpdGVEYXRhU3RvcmUoKSA9PSBwYWdlQ29u
ZmlndXJhdGlvbi0+d2Vic2l0ZURhdGFTdG9yZSgpKTsKICAgICB9IGVsc2UgaWYgKCFtX2lzRGVs
YXllZFdlYlByb2Nlc3NMYXVuY2hEaXNhYmxlZCkgewogICAgICAgICAvLyBJbiB0aGUgY29tbW9u
IGNhc2UsIHdlIGRlbGF5IHByb2Nlc3MgbGF1bmNoIHVudGlsIHNvbWV0aGluZyBpcyBhY3R1YWxs
eSBsb2FkZWQgaW4gdGhlIHBhZ2UuCkBAIC0xMTgyLDE5ICsxMTgyLDE4IEBAIHZvaWQgV2ViUHJv
Y2Vzc1Bvb2w6OnVwZGF0ZVJlbW90ZVdvcmtlclVzZXJBZ2VudChjb25zdCBTdHJpbmcmIHVzZXJB
Z2VudCkKICAgICAgICAgd29ya2VyUHJvY2Vzcy5zZXRSZW1vdGVXb3JrZXJVc2VyQWdlbnQobV9y
ZW1vdGVXb3JrZXJVc2VyQWdlbnQpOwogfQogCi12b2lkIFdlYlByb2Nlc3NQb29sOjpwYWdlQmVn
aW5Vc2luZ1dlYnNpdGVEYXRhU3RvcmUoV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIFdl
YnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSkKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBhZ2VCZWdp
blVzaW5nV2Vic2l0ZURhdGFTdG9yZShXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCwgUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogewogICAgIFJFTEVBU0VfQVNTRVJUKFJ1bkxvb3A6Omlz
TWFpbigpKTsKLSAgICBSRUxFQVNFX0FTU0VSVChtX3Nlc3Npb25Ub1BhZ2VJRHNNYXAuaXNWYWxp
ZEtleShkYXRhU3RvcmUuc2Vzc2lvbklEKCkpKTsKLSAgICBhdXRvIHJlc3VsdCA9IG1fc2Vzc2lv
blRvUGFnZUlEc01hcC5hZGQoZGF0YVN0b3JlLnNlc3Npb25JRCgpLCBIYXNoU2V0PFdlYlBhZ2VQ
cm94eUlkZW50aWZpZXI+KCkpLml0ZXJhdG9yLT52YWx1ZS5hZGQocGFnZUlEKTsKKyAgICBSRUxF
QVNFX0FTU0VSVChtX3Nlc3Npb25Ub1BhZ2VJRHNNYXAuaXNWYWxpZEtleShzZXNzaW9uSUQpKTsK
KyAgICBhdXRvIHJlc3VsdCA9IG1fc2Vzc2lvblRvUGFnZUlEc01hcC5hZGQoc2Vzc2lvbklELCBI
YXNoU2V0PFdlYlBhZ2VQcm94eUlkZW50aWZpZXI+KCkpLml0ZXJhdG9yLT52YWx1ZS5hZGQocGFn
ZUlEKTsKICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwogfQog
Ci12b2lkIFdlYlByb2Nlc3NQb29sOjpwYWdlRW5kVXNpbmdXZWJzaXRlRGF0YVN0b3JlKFdlYlBh
Z2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCBXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUpCit2
b2lkIFdlYlByb2Nlc3NQb29sOjpwYWdlRW5kVXNpbmdXZWJzaXRlRGF0YVN0b3JlKFdlYlBhZ2VQ
cm94eUlkZW50aWZpZXIgcGFnZUlELCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiB7CiAgICAg
UkVMRUFTRV9BU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIGF1dG8gc2Vzc2lvbklEID0g
ZGF0YVN0b3JlLnNlc3Npb25JRCgpOwotICAgIFJFTEVBU0VfQVNTRVJUKG1fc2Vzc2lvblRvUGFn
ZUlEc01hcC5pc1ZhbGlkS2V5KGRhdGFTdG9yZS5zZXNzaW9uSUQoKSkpOworICAgIFJFTEVBU0Vf
QVNTRVJUKG1fc2Vzc2lvblRvUGFnZUlEc01hcC5pc1ZhbGlkS2V5KHNlc3Npb25JRCkpOwogICAg
IGF1dG8gaXRlcmF0b3IgPSBtX3Nlc3Npb25Ub1BhZ2VJRHNNYXAuZmluZChzZXNzaW9uSUQpOwog
ICAgIFJFTEVBU0VfQVNTRVJUKGl0ZXJhdG9yICE9IG1fc2Vzc2lvblRvUGFnZUlEc01hcC5lbmQo
KSk7CiAKQEAgLTEyMDksMTEgKzEyMDgsMTEgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGFnZUVu
ZFVzaW5nV2Vic2l0ZURhdGFTdG9yZShXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCwKICAg
ICB9CiB9CiAKLWJvb2wgV2ViUHJvY2Vzc1Bvb2w6Omhhc1BhZ2VzVXNpbmdXZWJzaXRlRGF0YVN0
b3JlKFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSkgY29uc3QKK2Jvb2wgV2ViUHJvY2Vzc1Bv
b2w6Omhhc1BhZ2VzVXNpbmdXZWJzaXRlRGF0YVN0b3JlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCkgY29uc3QKIHsKICAgICBSRUxFQVNFX0FTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0gICAg
UkVMRUFTRV9BU1NFUlQobV9zZXNzaW9uVG9QYWdlSURzTWFwLmlzVmFsaWRLZXkoZGF0YVN0b3Jl
LnNlc3Npb25JRCgpKSk7Ci0gICAgcmV0dXJuIG1fc2Vzc2lvblRvUGFnZUlEc01hcC5jb250YWlu
cyhkYXRhU3RvcmUuc2Vzc2lvbklEKCkpOworICAgIFJFTEVBU0VfQVNTRVJUKG1fc2Vzc2lvblRv
UGFnZUlEc01hcC5pc1ZhbGlkS2V5KHNlc3Npb25JRCkpOworICAgIHJldHVybiBtX3Nlc3Npb25U
b1BhZ2VJRHNNYXAuY29udGFpbnMoc2Vzc2lvbklEKTsKIH0KIAogRG93bmxvYWRQcm94eSYgV2Vi
UHJvY2Vzc1Bvb2w6OmRvd25sb2FkKFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSwgV2ViUGFn
ZVByb3h5KiBpbml0aWF0aW5nUGFnZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBj
b25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lKQpAQCAtMTk3NSw3ICsxOTc0LDcgQEAgdm9p
ZCBXZWJQcm9jZXNzUG9vbDo6cHJvY2Vzc0Zvck5hdmlnYXRpb25JbnRlcm5hbChXZWJQYWdlUHJv
eHkmIHBhZ2UsIGNvbnN0IEFQSToKICAgICAgICAgTE9HKFByb2Nlc3NTd2FwcGluZywgIihQcm9j
ZXNzU3dhcHBpbmcpIENvbnNpZGVyaW5nIHJlLXVzZSBvZiBhIHByZXZpb3VzbHkgY2FjaGVkIHBy
b2Nlc3MgZm9yIGRvbWFpbiAlcyIsIHRhcmdldFJlZ2lzdHJhYmxlRG9tYWluLnN0cmluZygpLnV0
ZjgoKS5kYXRhKCkpOwogCiAgICAgICAgIGlmIChhdXRvKiBwcm9jZXNzID0gbV9zd2FwcGVkUHJv
Y2Vzc2VzUGVyUmVnaXN0cmFibGVEb21haW4uZ2V0KHRhcmdldFJlZ2lzdHJhYmxlRG9tYWluKSkg
ewotICAgICAgICAgICAgaWYgKCZwcm9jZXNzLT53ZWJzaXRlRGF0YVN0b3JlKCkgPT0gZGF0YVN0
b3JlLnB0cigpKSB7CisgICAgICAgICAgICBpZiAocHJvY2Vzcy0+c2Vzc2lvbklEKCkgPT0gZGF0
YVN0b3JlLT5zZXNzaW9uSUQoKSkgewogICAgICAgICAgICAgICAgIExPRyhQcm9jZXNzU3dhcHBp
bmcsICIoUHJvY2Vzc1N3YXBwaW5nKSBSZXVzaW5nIGEgcHJldmlvdXNseSBjYWNoZWQgcHJvY2Vz
cyB3aXRoIHBpZCAlaSB0byBjb250aW51ZSBuYXZpZ2F0aW9uIHRvIFVSTCAlcyIsIHByb2Nlc3Mt
PnByb2Nlc3NJZGVudGlmaWVyKCksIHRhcmdldFVSTC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsK
IAogICAgICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcigqcHJvY2VzcywgbnVs
bHB0ciwgcmVhc29uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCmlu
ZGV4IDQwOWE3OWI1MWI3MDUwZDEwOGJlMTMxMGZlMmYwYTJjMGY3NTU3ZTcuLjM4MjliMmU2YTg3
MGNlOTFhYzVmY2Y1MGYzNTNjNjdjYzZlODM0ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuaApAQCAtMjE0LDkgKzIxNCw5IEBAIHB1YmxpYzoKIAogICAgIFJlZjxX
ZWJQYWdlUHJveHk+IGNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYsIFJlZjxBUEk6OlBhZ2VDb25m
aWd1cmF0aW9uPiYmKTsKIAotICAgIHZvaWQgcGFnZUJlZ2luVXNpbmdXZWJzaXRlRGF0YVN0b3Jl
KFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYnNpdGVEYXRhU3RvcmUmKTsKLSAgICB2b2lkIHBh
Z2VFbmRVc2luZ1dlYnNpdGVEYXRhU3RvcmUoV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2Vic2l0
ZURhdGFTdG9yZSYpOwotICAgIGJvb2wgaGFzUGFnZXNVc2luZ1dlYnNpdGVEYXRhU3RvcmUoV2Vi
c2l0ZURhdGFTdG9yZSYpIGNvbnN0OworICAgIHZvaWQgcGFnZUJlZ2luVXNpbmdXZWJzaXRlRGF0
YVN0b3JlKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklEKTsKKyAgICB2b2lk
IHBhZ2VFbmRVc2luZ1dlYnNpdGVEYXRhU3RvcmUoV2ViUGFnZVByb3h5SWRlbnRpZmllciwgUEFM
OjpTZXNzaW9uSUQpOworICAgIGJvb2wgaGFzUGFnZXNVc2luZ1dlYnNpdGVEYXRhU3RvcmUoUEFM
OjpTZXNzaW9uSUQpIGNvbnN0OwogCiAgICAgY29uc3QgU3RyaW5nJiBpbmplY3RlZEJ1bmRsZVBh
dGgoKSBjb25zdCB7IHJldHVybiBtX2NvbmZpZ3VyYXRpb24tPmluamVjdGVkQnVuZGxlUGF0aCgp
OyB9CiAjaWYgUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Byb3h5LmNwcAppbmRleCAxNzA0NTBhOTViYTZlOGE0OWVlNWZjODFlMTFiNTUwOTFiYjk0
YjYyLi4wYjQxNjgzNTI2OGE4YTM3MTUyNDhmYzZiNWI4ZWQwNjZhYmU2Y2MxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKQEAgLTI0MSw3ICsyNDEsNiBA
QCBXZWJQcm9jZXNzUHJveHk6OldlYlByb2Nlc3NQcm94eShXZWJQcm9jZXNzUG9vbCYgcHJvY2Vz
c1Bvb2wsIFdlYnNpdGVEYXRhU3RvcmUqCiAjZW5kaWYKICAgICAsIG1faXNSZXNwb25zaXZlKE5v
T3JNYXliZTo6TWF5YmUpCiAgICAgLCBtX3Zpc2libGVQYWdlQ291bnRlcihbdGhpc10oUmVmQ291
bnRlckV2ZW50KSB7IHVwZGF0ZUJhY2tncm91bmRSZXNwb25zaXZlbmVzc1RpbWVyKCk7IH0pCi0g
ICAgLCBtX3dlYnNpdGVEYXRhU3RvcmUod2Vic2l0ZURhdGFTdG9yZSkKICNpZiBQTEFURk9STShD
T0NPQSkgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICAgICAsIG1fdXNlck1lZGlhQ2FwdHVyZU1h
bmFnZXJQcm94eShtYWtlVW5pcXVlPFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk+KG1ha2VV
bmlxdWVSZWY8VUlQcm94eUZvckNhcHR1cmU+KCp0aGlzKSkpCiAjZW5kaWYKQEAgLTI1OCw3ICsy
NTcsOCBAQCBXZWJQcm9jZXNzUHJveHk6OldlYlByb2Nlc3NQcm94eShXZWJQcm9jZXNzUG9vbCYg
cHJvY2Vzc1Bvb2wsIFdlYnNpdGVEYXRhU3RvcmUqCiAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQs
IHJlc3VsdC5pc05ld0VudHJ5KTsKIAogICAgIFdlYlBhc3RlYm9hcmRQcm94eTo6c2luZ2xldG9u
KCkuYWRkV2ViUHJvY2Vzc1Byb3h5KCp0aGlzKTsKLQorICAgIGlmICh3ZWJzaXRlRGF0YVN0b3Jl
KQorICAgICAgICBtX3Nlc3Npb25JRCA9IHdlYnNpdGVEYXRhU3RvcmUtPnNlc3Npb25JRCgpOwog
ICAgIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOwogfQogCkBAIC0zNDgsMzIgKzM0OCwzNCBAQCB2b2lk
IFdlYlByb2Nlc3NQcm94eTo6c2V0SXNJblByb2Nlc3NDYWNoZShib29sIHZhbHVlLCBXaWxsU2h1
dERvd24gd2lsbFNodXREb3duKQogCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6c2V0V2Vic2l0ZURh
dGFTdG9yZShXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUpCiB7Ci0gICAgQVNTRVJUKCFtX3dl
YnNpdGVEYXRhU3RvcmUpOworICAgIEFTU0VSVCghbV9zZXNzaW9uSUQuaXNWYWxpZCgpKTsKICAg
ICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coUHJvY2VzcywgInNldFdlYnNpdGVEYXRhU3Rv
cmUoKSBkYXRhU3RvcmU9JXAsIHNlc3Npb25JRD0lIiBQUkl1NjQsICZkYXRhU3RvcmUsIGRhdGFT
dG9yZS5zZXNzaW9uSUQoKS50b1VJbnQ2NCgpKTsKLSAgICBtX3dlYnNpdGVEYXRhU3RvcmUgPSAm
ZGF0YVN0b3JlOwogICAgIHVwZGF0ZVJlZ2lzdHJhdGlvbldpdGhEYXRhU3RvcmUoKTsKICAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTZXRXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyhw
cm9jZXNzUG9vbCgpLndlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzKCp0aGlzLCBkYXRhU3Rv
cmUpKSwgMCk7CiAKICAgICAvLyBEZWxheSBjb25zdHJ1Y3Rpb24gb2YgdGhlIFdlYkxvY2tSZWdp
c3RyeVByb3h5IHVudGlsIHRoZSBXZWJQcm9jZXNzUHJveHkgaGFzIGEgZGF0YSBzdG9yZSBzaW5j
ZSB0aGUgZGF0YSBzdG9yZSBob2xkcyB0aGUKICAgICAvLyBMb2NhbFdlYkxvY2tSZWdpc3RyeS4K
ICAgICBtX3dlYkxvY2tSZWdpc3RyeSA9IG1ha2VVbmlxdWU8V2ViTG9ja1JlZ2lzdHJ5UHJveHk+
KCp0aGlzKTsKKyAgICBtX3Nlc3Npb25JRCA9IGRhdGFTdG9yZS5zZXNzaW9uSUQoKTsKIH0KIAog
Ym9vbCBXZWJQcm9jZXNzUHJveHk6OmlzRHVtbXlQcm9jZXNzUHJveHkoKSBjb25zdAogewotICAg
IHJldHVybiBtX3dlYnNpdGVEYXRhU3RvcmUgJiYgcHJvY2Vzc1Bvb2woKS5kdW1teVByb2Nlc3NQ
cm94eShtX3dlYnNpdGVEYXRhU3RvcmUtPnNlc3Npb25JRCgpKSA9PSB0aGlzOworICAgIHJldHVy
biBtX3Nlc3Npb25JRC5pc1ZhbGlkKCkgJiYgcHJvY2Vzc1Bvb2woKS5kdW1teVByb2Nlc3NQcm94
eShzZXNzaW9uSUQoKSkgPT0gdGhpczsKIH0KIAogdm9pZCBXZWJQcm9jZXNzUHJveHk6OnVwZGF0
ZVJlZ2lzdHJhdGlvbldpdGhEYXRhU3RvcmUoKQogewotICAgIGlmICghbV93ZWJzaXRlRGF0YVN0
b3JlKQorICAgIGlmICghbV9zZXNzaW9uSUQuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm47Ci0g
ICAgCisKICAgICBib29sIHNob3VsZEJlUmVnaXN0ZXJlZCA9IHBhZ2VDb3VudCgpIHx8IHByb3Zp
c2lvbmFsUGFnZUNvdW50KCk7Ci0gICAgaWYgKHNob3VsZEJlUmVnaXN0ZXJlZCkKLSAgICAgICAg
bV93ZWJzaXRlRGF0YVN0b3JlLT5yZWdpc3RlclByb2Nlc3MoKnRoaXMpOwotICAgIGVsc2UKLSAg
ICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlLT51bnJlZ2lzdGVyUHJvY2VzcygqdGhpcyk7CisgICAg
aWYgKGF1dG8qIGRhdGFTdG9yZSA9IFdlYnNpdGVEYXRhU3RvcmU6OmV4aXN0aW5nRGF0YVN0b3Jl
Rm9yU2Vzc2lvbklEKHNlc3Npb25JRCgpKSkgeworICAgICAgICBpZiAoc2hvdWxkQmVSZWdpc3Rl
cmVkKQorICAgICAgICAgICAgZGF0YVN0b3JlLT5yZWdpc3RlclByb2Nlc3MoKnRoaXMpOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICBkYXRhU3RvcmUtPnVucmVnaXN0ZXJQcm9jZXNzKCp0aGlz
KTsKKyAgICB9CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjphZGRQcm92aXNpb25hbFBhZ2VQ
cm94eShQcm92aXNpb25hbFBhZ2VQcm94eSYgcHJvdmlzaW9uYWxQYWdlKQpAQCAtNTk2LDExICs1
OTgsMTEgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmFkZEV4aXN0aW5nV2ViUGFnZShXZWJQYWdl
UHJveHkmIHdlYlBhZ2UsIEJlZ2luc1VzaW5nRGF0YVMKICAgICBBU1NFUlQoIW1fcGFnZU1hcC5j
b250YWlucyh3ZWJQYWdlLmlkZW50aWZpZXIoKSkpOwogICAgIEFTU0VSVCghZ2xvYmFsUGFnZU1h
cCgpLmNvbnRhaW5zKHdlYlBhZ2UuaWRlbnRpZmllcigpKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQo
IW1faXNJblByb2Nlc3NDYWNoZSk7Ci0gICAgQVNTRVJUKCFtX3dlYnNpdGVEYXRhU3RvcmUgfHwg
bV93ZWJzaXRlRGF0YVN0b3JlID09ICZ3ZWJQYWdlLndlYnNpdGVEYXRhU3RvcmUoKSk7CisgICAg
QVNTRVJUKCFtX3Nlc3Npb25JRC5pc1ZhbGlkKCkgfHwgbV9zZXNzaW9uSUQgPT0gd2ViUGFnZS53
ZWJzaXRlRGF0YVN0b3JlKCkuc2Vzc2lvbklEKCkpOwogCiAgICAgaWYgKGJlZ2luc1VzaW5nRGF0
YVN0b3JlID09IEJlZ2luc1VzaW5nRGF0YVN0b3JlOjpZZXMpIHsKICAgICAgICAgUkVMRUFTRV9B
U1NFUlQobV9wcm9jZXNzUG9vbCk7Ci0gICAgICAgIG1fcHJvY2Vzc1Bvb2wtPnBhZ2VCZWdpblVz
aW5nV2Vic2l0ZURhdGFTdG9yZSh3ZWJQYWdlLmlkZW50aWZpZXIoKSwgd2ViUGFnZS53ZWJzaXRl
RGF0YVN0b3JlKCkpOworICAgICAgICBtX3Byb2Nlc3NQb29sLT5wYWdlQmVnaW5Vc2luZ1dlYnNp
dGVEYXRhU3RvcmUod2ViUGFnZS5pZGVudGlmaWVyKCksIHdlYlBhZ2Uud2Vic2l0ZURhdGFTdG9y
ZSgpLnNlc3Npb25JRCgpKTsKICAgICB9CiAKICAgICBtYXJrUHJvY2Vzc0FzUmVjZW50bHlVc2Vk
KCk7CkBAIC02MzIsNyArNjM0LDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnJlbW92ZVdlYlBh
Z2UoV2ViUGFnZVByb3h5JiB3ZWJQYWdlLCBFbmRzVXNpbmdEYXRhU3RvcmUgZW4KICAgICBBU1NF
UlRfVU5VU0VEKHJlbW92ZWRQYWdlLCByZW1vdmVkUGFnZSA9PSAmd2ViUGFnZSk7CiAKICAgICBp
ZiAoZW5kc1VzaW5nRGF0YVN0b3JlID09IEVuZHNVc2luZ0RhdGFTdG9yZTo6WWVzKQotICAgICAg
ICBtX3Byb2Nlc3NQb29sLT5wYWdlRW5kVXNpbmdXZWJzaXRlRGF0YVN0b3JlKHdlYlBhZ2UuaWRl
bnRpZmllcigpLCB3ZWJQYWdlLndlYnNpdGVEYXRhU3RvcmUoKSk7CisgICAgICAgIG1fcHJvY2Vz
c1Bvb2wtPnBhZ2VFbmRVc2luZ1dlYnNpdGVEYXRhU3RvcmUod2ViUGFnZS5pZGVudGlmaWVyKCks
IHdlYlBhZ2Uud2Vic2l0ZURhdGFTdG9yZSgpLnNlc3Npb25JRCgpKTsKIAogICAgIHJlbW92ZVZp
c2l0ZWRMaW5rU3RvcmVVc2VyKHdlYlBhZ2UudmlzaXRlZExpbmtTdG9yZSgpLCB3ZWJQYWdlLmlk
ZW50aWZpZXIoKSk7CiAgICAgdXBkYXRlUmVnaXN0cmF0aW9uV2l0aERhdGFTdG9yZSgpOwpAQCAt
ODE1LDcgKzgxNyw4IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp1cGRhdGVCYWNrRm9yd2FyZEl0
ZW0oY29uc3QgQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlJiBpdGVtCiAKIHZvaWQgV2ViUHJvY2Vz
c1Byb3h5OjpnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oTWVzc2FnZXM6OldlYlByb2Nlc3NQ
cm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHkmJiByZXBseSkK
IHsKLSAgICB3ZWJzaXRlRGF0YVN0b3JlKCkuZ2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCp0
aGlzLCBXVEZNb3ZlKHJlcGx5KSk7CisgICAgaWYgKGF1dG8qIGRhdGFTdG9yZSA9IFdlYnNpdGVE
YXRhU3RvcmU6OmV4aXN0aW5nRGF0YVN0b3JlRm9yU2Vzc2lvbklEKHNlc3Npb25JRCgpKSkKKyAg
ICAgICAgZGF0YVN0b3JlLT5nZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKnRoaXMsIFdURk1v
dmUocmVwbHkpKTsKIH0KIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKQEAgLTE3MDQsMTAgKzE3
MDcsMTIgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9y
TWFpbkZyYW1lKGNvbnN0IFVSTCYgdXJsKQogCiAgICAgYXV0byByZWdpc3RyYWJsZURvbWFpbiA9
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHsgdXJsIH07CiAgICAgaWYgKG1fcmVnaXN0cmFi
bGVEb21haW4gJiYgKm1fcmVnaXN0cmFibGVEb21haW4gIT0gcmVnaXN0cmFibGVEb21haW4pIHsK
LSAgICAgICAgaWYgKGlzUnVubmluZ1NlcnZpY2VXb3JrZXJzKCkpCi0gICAgICAgICAgICB3ZWJz
aXRlRGF0YVN0b3JlKCkubmV0d29ya1Byb2Nlc3MoKS50ZXJtaW5hdGVSZW1vdGVXb3JrZXJDb250
ZXh0Q29ubmVjdGlvbldoZW5Qb3NzaWJsZShSZW1vdGVXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2Vy
LCB3ZWJzaXRlRGF0YVN0b3JlKCkuc2Vzc2lvbklEKCksICptX3JlZ2lzdHJhYmxlRG9tYWluLCBj
b3JlUHJvY2Vzc0lkZW50aWZpZXIoKSk7Ci0gICAgICAgIGlmIChpc1J1bm5pbmdTaGFyZWRXb3Jr
ZXJzKCkpCi0gICAgICAgICAgICB3ZWJzaXRlRGF0YVN0b3JlKCkubmV0d29ya1Byb2Nlc3MoKS50
ZXJtaW5hdGVSZW1vdGVXb3JrZXJDb250ZXh0Q29ubmVjdGlvbldoZW5Qb3NzaWJsZShSZW1vdGVX
b3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIsIHdlYnNpdGVEYXRhU3RvcmUoKS5zZXNzaW9uSUQoKSwg
Km1fcmVnaXN0cmFibGVEb21haW4sIGNvcmVQcm9jZXNzSWRlbnRpZmllcigpKTsKKyAgICAgICAg
YXV0byogZGF0YVN0b3JlID0gV2Vic2l0ZURhdGFTdG9yZTo6ZXhpc3RpbmdEYXRhU3RvcmVGb3JT
ZXNzaW9uSUQoc2Vzc2lvbklEKCkpOworICAgICAgICBpZiAoZGF0YVN0b3JlICYmIGlzUnVubmlu
Z1NlcnZpY2VXb3JrZXJzKCkpCisgICAgICAgICAgICBkYXRhU3RvcmUtPm5ldHdvcmtQcm9jZXNz
KCkudGVybWluYXRlUmVtb3RlV29ya2VyQ29udGV4dENvbm5lY3Rpb25XaGVuUG9zc2libGUoUmVt
b3RlV29ya2VyVHlwZTo6U2VydmljZVdvcmtlciwgc2Vzc2lvbklEKCksICptX3JlZ2lzdHJhYmxl
RG9tYWluLCBjb3JlUHJvY2Vzc0lkZW50aWZpZXIoKSk7CisKKyAgICAgICAgaWYgKGRhdGFTdG9y
ZSAmJiBpc1J1bm5pbmdTaGFyZWRXb3JrZXJzKCkpCisgICAgICAgICAgICBkYXRhU3RvcmUtPm5l
dHdvcmtQcm9jZXNzKCkudGVybWluYXRlUmVtb3RlV29ya2VyQ29udGV4dENvbm5lY3Rpb25XaGVu
UG9zc2libGUoUmVtb3RlV29ya2VyVHlwZTo6U2hhcmVkV29ya2VyLCBzZXNzaW9uSUQoKSwgKm1f
cmVnaXN0cmFibGVEb21haW4sIGNvcmVQcm9jZXNzSWRlbnRpZmllcigpKTsKIAogICAgICAgICAv
LyBOdWxsIG91dCByZWdpc3RyYWJsZSBkb21haW4gc2luY2UgdGhpcyBwcm9jZXNzIGhhcyBub3cg
YmVlbiB1c2VkIGZvciBzZXZlcmFsIGRvbWFpbnMuCiAgICAgICAgIG1fcmVnaXN0cmFibGVEb21h
aW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7IH07CkBAIC0xNzU0LDggKzE3NTksNyBA
QCBXZWJQcm9jZXNzUG9vbCYgV2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzUG9vbCgpIGNvbnN0CiAK
IFBBTDo6U2Vzc2lvbklEIFdlYlByb2Nlc3NQcm94eTo6c2Vzc2lvbklEKCkgY29uc3QKIHsKLSAg
ICBBU1NFUlQobV93ZWJzaXRlRGF0YVN0b3JlKTsKLSAgICByZXR1cm4gbV93ZWJzaXRlRGF0YVN0
b3JlLT5zZXNzaW9uSUQoKTsKKyAgICByZXR1cm4gbV9zZXNzaW9uSUQ7CiB9CiAKIHZvaWQgV2Vi
UHJvY2Vzc1Byb3h5OjpjcmVhdGVTcGVlY2hSZWNvZ25pdGlvblNlcnZlcihTcGVlY2hSZWNvZ25p
dGlvblNlcnZlcklkZW50aWZpZXIgaWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmgKaW5kZXggMDU1NWQzZDU3NjM0NWJiMjQ5NjEwODU4ZDY5NDY2ZTQ5
MTU5ZjFhYy4uZjg2ZjQzN2RkNTQzOTUwZWUzODM4NGMxNzBjZjJhMzFjOTFhNWI4NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKQEAgLTE2Nyw3ICsxNjcsNiBA
QCBwdWJsaWM6CiAgICAgdm9pZCBlbmFibGVSZW1vdGVXb3JrZXJzKFJlbW90ZVdvcmtlclR5cGUs
IGNvbnN0IFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXImKTsKICAgICB2b2lkIGRpc2Fi
bGVSZW1vdGVXb3JrZXJzKFJlbW90ZVdvcmtlclR5cGUpOwogCi0gICAgV2Vic2l0ZURhdGFTdG9y
ZSYgd2Vic2l0ZURhdGFTdG9yZSgpIGNvbnN0IHsgQVNTRVJUKG1fd2Vic2l0ZURhdGFTdG9yZSk7
IHJldHVybiAqbV93ZWJzaXRlRGF0YVN0b3JlOyB9CiAgICAgdm9pZCBzZXRXZWJzaXRlRGF0YVN0
b3JlKFdlYnNpdGVEYXRhU3RvcmUmKTsKICAgICAKICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQoKSBjb25zdDsKQEAgLTYxNCw3ICs2MTMsNyBAQCBwcml2YXRlOgogCiAgICAgVmlzaWJsZVdl
YlBhZ2VDb3VudGVyIG1fdmlzaWJsZVBhZ2VDb3VudGVyOwogCi0gICAgUmVmUHRyPFdlYnNpdGVE
YXRhU3RvcmU+IG1fd2Vic2l0ZURhdGFTdG9yZTsKKyAgICBQQUw6OlNlc3Npb25JRCBtX3Nlc3Np
b25JRCB7IDAgfTsKIAogICAgIGJvb2wgbV9pc1VuZGVyTWVtb3J5UHJlc3N1cmUgeyBmYWxzZSB9
OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456887</attachid>
            <date>2022-04-06 21:19:42 -0700</date>
            <delta_ts>2022-04-08 10:46:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238892-20220406211941.patch</filename>
            <type>text/plain</type>
            <size>34060</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyNTEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDE5MjZiMTU1MzNkYTMwYmNm
NDc3OTMwMzQ3NWFhY2E4ODQ4MzQ4NjcuLjJiMTIyOTZlYTE4ZjllZDcxM2ZkZjM3Yjc2OGNhZThl
YWVjZWE0ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjAgQEAKKzIwMjItMDQtMDYgIFNpaHVpIExp
dSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViUHJvY2Vzc1Byb3h5IHNob3Vs
ZCBub3QgaG9sZCBXZWJzaXRlRGF0YVN0b3JlIGFsaXZlIHdoZW4gdGhlcmUgaXMgbm8gcGFnZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4ODkyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBXZWJQ
cm9jZXNzUHJveHkgaG9sZCBTZXNzaW9uSUQgaW5zdGVhZCBvZiBzdHJvbmcgcmVmZXJlbmNlIHRv
IFdlYnNpdGVEYXRhU3RvcmUuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkdQVVByb2Nlc3NQcm94eTo6Z2V0R1BVUHJvY2Vz
c0Nvbm5lY3Rpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlByb3Zpc2lvbmFsUGFnZVByb3h5OjpQcm92aXNpb25hbFBh
Z2VQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlByb3Zpc2lvbmFsUGFnZVByb3h5Ojp+UHJvdmlz
aW9uYWxQYWdlUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94
eS5oOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQcm94eTo6d2Vic2l0ZURhdGFT
dG9yZSBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlN1c3BlbmRlZFBhZ2VQcm94eTo6ZmluZFJldXNhYmxlU3VzcGVu
ZGVkUGFnZVByb2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZENhY2hl
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRDYWNoZTo6cmVtb3ZlRW50cmll
c0ZvclNlc3Npb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJMb2NrUmVnaXN0cnlQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkxvY2tSZWdpc3RyeVByb3h5OjpyZXF1ZXN0TG9jayk6
CisgICAgICAgIChXZWJLaXQ6OldlYkxvY2tSZWdpc3RyeVByb3h5OjpyZWxlYXNlTG9jayk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkxvY2tSZWdpc3RyeVByb3h5OjphYm9ydExvY2tSZXF1ZXN0KToK
KyAgICAgICAgKFdlYktpdDo6V2ViTG9ja1JlZ2lzdHJ5UHJveHk6OnNuYXBzaG90KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViTG9ja1JlZ2lzdHJ5UHJveHk6OmNsaWVudElzR29pbmdBd2F5KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViTG9ja1JlZ2lzdHJ5UHJveHk6OnByb2Nlc3NEaWRFeGl0KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5Ojpzd2FwVG9Qcm92aXNpb25hbFBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OmNvbW1pdFByb3Zpc2lvbmFsUGFnZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlByb2Nlc3NDYWNoZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDYWNoZTo6Y2Fu
Q2FjaGVQcm9jZXNzIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0NhY2hlOjp0
YWtlUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDYWNoZTo6Y2xlYXJBbGxQ
cm9jZXNzZXNGb3JTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0NhY2hlOjpD
YWNoZWRQcm9jZXNzOjpDYWNoZWRQcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNo
UmVtb3RlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NGb3JSZWdpc3RyYWJsZURvbWFpbik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwYWdlQmVnaW5Vc2luZ1dlYnNpdGVEYXRh
U3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cGFnZUVuZFVzaW5nV2Vi
c2l0ZURhdGFTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpoYXNQYWdl
c1VzaW5nV2Vic2l0ZURhdGFTdG9yZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQb29sOjpwcm9jZXNzRm9yTmF2aWdhdGlvbkludGVybmFsKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpXZWJQcm9jZXNzUHJveHkp
OgorICAgICAgICAoV2ViS2l0OjptX3dlYkxvY2tSZWdpc3RyeSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQcm94eTo6c2V0V2Vic2l0ZURhdGFTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQcm94eTo6aXNEdW1teVByb2Nlc3NQcm94eSBjb25zdCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6dXBkYXRlUmVnaXN0cmF0aW9uV2l0aERhdGFTdG9yZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6YWRkRXhpc3RpbmdXZWJQYWdlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpyZW1vdmVXZWJQYWdlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24p
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxM
b2FkRm9yTWFpbkZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpzZXNz
aW9uSUQgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojp3ZWJzaXRlRGF0YVN0b3JlIGNvbnN0KTog
RGVsZXRlZC4KKwogMjAyMi0wNC0wNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgog
CiAgICAgICAgIEltcHJvdmUgQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2VyaWFsaXpl
IHRvIG5vdCBhbGxvY2F0ZSBhIG5ldyBKU0NvbnRleHQgZXZlcnkgc2Vjb25kCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuY3BwCmluZGV4IDgzYWYxZTU1
ZGRmNzQ4ODIzOWY4NjkxOTI3NzIwYWI2YTg2MzE5N2QuLmI2MzE4ZDdkYTg4MGNiMDM5ZDFhYThm
YjRhNTY5Y2ZlNjVlMTkzYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQ
VS9HUFVQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQVS9H
UFVQcm9jZXNzUHJveHkuY3BwCkBAIC0zODcsNyArMzg3LDggQEAgdm9pZCBHUFVQcm9jZXNzUHJv
eHk6OnByb2Nlc3NXaWxsU2h1dERvd24oSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogCiB2
b2lkIEdQVVByb2Nlc3NQcm94eTo6Z2V0R1BVUHJvY2Vzc0Nvbm5lY3Rpb24oV2ViUHJvY2Vzc1By
b3h5JiB3ZWJQcm9jZXNzUHJveHksIGNvbnN0IEdQVVByb2Nlc3NDb25uZWN0aW9uUGFyYW1ldGVy
cyYgcGFyYW1ldGVycywgTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0R1BVUHJvY2Vzc0Nv
bm5lY3Rpb246OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewotICAgIGFkZFNlc3Npb24od2ViUHJv
Y2Vzc1Byb3h5LndlYnNpdGVEYXRhU3RvcmUoKSk7CisgICAgaWYgKGF1dG8qIGRhdGFTdG9yZSA9
IFdlYnNpdGVEYXRhU3RvcmU6OmV4aXN0aW5nRGF0YVN0b3JlRm9yU2Vzc2lvbklEKHdlYlByb2Nl
c3NQcm94eS5zZXNzaW9uSUQoKSkpCisgICAgICAgIGFkZFNlc3Npb24oKmRhdGFTdG9yZSk7CiAK
ICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gR1BVUHJvY2Vzc1Byb3h5
IGlzIHRha2luZyBhIGJhY2tncm91bmQgYXNzZXJ0aW9uIGJlY2F1c2UgYSB3ZWIgcHJvY2VzcyBp
cyByZXF1ZXN0aW5nIGEgY29ubmVjdGlvbiIsIHRoaXMpOwogICAgIHN0YXJ0UmVzcG9uc2l2ZW5l
c3NUaW1lcihVc2VMYXp5U3RvcDo6Tm8pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCmluZGV4IDg4YjJlYTgzODY3MmFjNzE4NjVlYjY5YmNh
ZjVmYjIyY2EwMGE4N2YuLjliNDRkNTgxMTdmYWQxN2MzZTlkZjEzYjRkMmFkMmM1YzdjNmM4YTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5j
cHAKQEAgLTgzLDggKzgzLDExIEBAIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpQcm92aXNpb25hbFBh
Z2VQcm94eShXZWJQYWdlUHJveHkmIHBhZ2UsIFJlZjxXZWJQcm9jZXNzUHJvCiAgICAgbV9wcm9j
ZXNzLT5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJl
Y2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2VJRCwgKnRoaXMpOwogICAgIG1fcHJvY2Vzcy0+YWRkUHJv
dmlzaW9uYWxQYWdlUHJveHkoKnRoaXMpOwogCi0gICAgaWYgKCZtX3Byb2Nlc3MtPndlYnNpdGVE
YXRhU3RvcmUoKSAhPSAmbV9wYWdlLndlYnNpdGVEYXRhU3RvcmUoKSkKLSAgICAgICAgbV9wcm9j
ZXNzLT5wcm9jZXNzUG9vbCgpLnBhZ2VCZWdpblVzaW5nV2Vic2l0ZURhdGFTdG9yZShtX3BhZ2Uu
aWRlbnRpZmllcigpLCBtX3Byb2Nlc3MtPndlYnNpdGVEYXRhU3RvcmUoKSk7CisgICAgYXV0byBw
cm9jZXNzU2Vzc2lvbklEID0gbV9wcm9jZXNzLT5zZXNzaW9uSUQoKTsKKyAgICBpZiAocHJvY2Vz
c1Nlc3Npb25JRCAhPSBtX3BhZ2Uud2Vic2l0ZURhdGFTdG9yZSgpLnNlc3Npb25JRCgpKQorICAg
ICAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkucGFnZUJlZ2luVXNpbmdXZWJzaXRlRGF0YVN0
b3JlKG1fcGFnZS5pZGVudGlmaWVyKCksIHByb2Nlc3NTZXNzaW9uSUQpOworICAgIG1fd2Vic2l0
ZURhdGFTdG9yZSA9IFdlYnNpdGVEYXRhU3RvcmU6OmV4aXN0aW5nRGF0YVN0b3JlRm9yU2Vzc2lv
bklEKHByb2Nlc3NTZXNzaW9uSUQpOworICAgIEFTU0VSVChtX3dlYnNpdGVEYXRhU3RvcmUpOwog
CiAgICAgLy8gSWYgd2UgYXJlIHJlYXR0YWNoaW5nIHRvIGEgU3VzcGVuZGVkUGFnZSwgdGhlbiB0
aGUgV2ViUHJvY2VzcycgV2ViUGFnZSBhbHJlYWR5IGV4aXN0cyBhbmQKICAgICAvLyBXZWJQYWdl
UHJveHk6OmRpZENyZWF0ZU1haW5GcmFtZSgpIHdpbGwgbm90IGJlIGNhbGxlZCB0byBpbml0aWFs
aXplIG1fbWFpbkZyYW1lLiBJbiBzdWNoCkBAIC0xMTIsOCArMTE1LDggQEAgUHJvdmlzaW9uYWxQ
YWdlUHJveHk6On5Qcm92aXNpb25hbFBhZ2VQcm94eSgpCiAgICAgaWYgKCFtX3dhc0NvbW1pdHRl
ZCkgewogICAgICAgICBtX3BhZ2UuaW5zcGVjdG9yQ29udHJvbGxlcigpLndpbGxEZXN0cm95UHJv
dmlzaW9uYWxQYWdlKCp0aGlzKTsKIAotICAgICAgICBpZiAoJm1fcHJvY2Vzcy0+d2Vic2l0ZURh
dGFTdG9yZSgpICE9ICZtX3BhZ2Uud2Vic2l0ZURhdGFTdG9yZSgpKQotICAgICAgICAgICAgbV9w
cm9jZXNzLT5wcm9jZXNzUG9vbCgpLnBhZ2VFbmRVc2luZ1dlYnNpdGVEYXRhU3RvcmUobV9wYWdl
LmlkZW50aWZpZXIoKSwgbV9wcm9jZXNzLT53ZWJzaXRlRGF0YVN0b3JlKCkpOworICAgICAgICBp
ZiAobV9wcm9jZXNzLT5zZXNzaW9uSUQoKSAhPSBtX3BhZ2Uud2Vic2l0ZURhdGFTdG9yZSgpLnNl
c3Npb25JRCgpKQorICAgICAgICAgICAgbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLnBhZ2VFbmRV
c2luZ1dlYnNpdGVEYXRhU3RvcmUobV9wYWdlLmlkZW50aWZpZXIoKSwgbV9wcm9jZXNzLT5zZXNz
aW9uSUQoKSk7CiAKICAgICAgICAgbV9wcm9jZXNzLT5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2VJRCk7
CiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNsb3NlKCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmgKaW5kZXggMjJkMmJiMTJjYTZh
ZDU4ZjJlZjdiN2E5OTU5M2IzZjA2ZTY0YTg4Zi4uMmQwODBhN2RmOTBmMWVjMjI5YzA5MTAzMzI4
OTg0YjUwMGY3M2Y4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlz
aW9uYWxQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25h
bFBhZ2VQcm94eS5oCkBAIC04Myw2ICs4Myw3IEBAIHB1YmxpYzoKICAgICBQcm9jZXNzU3dhcFJl
cXVlc3RlZEJ5Q2xpZW50IHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQoKSBjb25zdCB7IHJl
dHVybiBtX3Byb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQ7IH0KICAgICB1aW50NjRfdCBuYXZp
Z2F0aW9uSUQoKSBjb25zdCB7IHJldHVybiBtX25hdmlnYXRpb25JRDsgfQogICAgIGNvbnN0IFVS
TCYgcHJvdmlzaW9uYWxVUkwoKSBjb25zdCB7IHJldHVybiBtX3Byb3Zpc2lvbmFsTG9hZFVSTDsg
fQorICAgIFdlYnNpdGVEYXRhU3RvcmUqIHdlYnNpdGVEYXRhU3RvcmUoKSBjb25zdCB7IHJldHVy
biBtX3dlYnNpdGVEYXRhU3RvcmUuZ2V0KCk7IH0KIAogICAgIGJvb2wgaXNQcm9jZXNzU3dhcHBp
bmdPbk5hdmlnYXRpb25SZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNQcm9jZXNzU3dhcHBp
bmdPbk5hdmlnYXRpb25SZXNwb25zZTsgfQogCkBAIC0xNjMsNiArMTY0LDcgQEAgcHJpdmF0ZToK
ICAgICBXZWJQYWdlUHJveHkmIG1fcGFnZTsKICAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBt
X3dlYlBhZ2VJRDsKICAgICBSZWY8V2ViUHJvY2Vzc1Byb3h5PiBtX3Byb2Nlc3M7CisgICAgUmVm
UHRyPFdlYnNpdGVEYXRhU3RvcmU+IG1fd2Vic2l0ZURhdGFTdG9yZTsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8RHJhd2luZ0FyZWFQcm94eT4gbV9kcmF3aW5nQXJlYTsKICAgICBSZWZQdHI8V2ViRnJh
bWVQcm94eT4gbV9tYWluRnJhbWU7CiAgICAgdWludDY0X3QgbV9uYXZpZ2F0aW9uSUQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcAppbmRleCBjY2Jk
NjEyODc4NTBlNzMxNjkxYTMzMGM0ZTMwYWQzYTM2ZTFmMDdkLi42MmYxZGEzNTA3Njg5NTE1NDBj
OGUwMWY0MWNmODM2MTFmYTNhZTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1
c3BlbmRlZFBhZ2VQcm94eS5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgUmVmUHRyPFdlYlByb2Nlc3NQ
cm94eT4gU3VzcGVuZGVkUGFnZVByb3h5OjpmaW5kUmV1c2FibGVTdXNwZW5kZWRQYWdlUHJvY2Vz
cyhXZWIKIHsKICAgICBmb3IgKGF1dG8qIHN1c3BlbmRlZFBhZ2UgOiBhbGxTdXNwZW5kZWRQYWdl
cygpKSB7CiAgICAgICAgIGF1dG8mIHByb2Nlc3MgPSBzdXNwZW5kZWRQYWdlLT5wcm9jZXNzKCk7
Ci0gICAgICAgIGlmICgmcHJvY2Vzcy5wcm9jZXNzUG9vbCgpID09ICZwcm9jZXNzUG9vbCAmJiBw
cm9jZXNzLnJlZ2lzdHJhYmxlRG9tYWluKCkgPT0gcmVnaXN0cmFibGVEb21haW4gJiYgJnByb2Nl
c3Mud2Vic2l0ZURhdGFTdG9yZSgpID09ICZkYXRhU3RvcmUgJiYgcHJvY2Vzcy5jcm9zc09yaWdp
bk1vZGUoKSAhPSBDcm9zc09yaWdpbk1vZGU6Oklzb2xhdGVkICYmIHByb2Nlc3MuY2FwdGl2ZVBv
cnRhbE1vZGUoKSA9PSBjYXB0aXZlUG9ydGFsTW9kZSkKKyAgICAgICAgaWYgKCZwcm9jZXNzLnBy
b2Nlc3NQb29sKCkgPT0gJnByb2Nlc3NQb29sICYmIHByb2Nlc3MucmVnaXN0cmFibGVEb21haW4o
KSA9PSByZWdpc3RyYWJsZURvbWFpbiAmJiBwcm9jZXNzLnNlc3Npb25JRCgpID09IGRhdGFTdG9y
ZS5zZXNzaW9uSUQoKSAmJiBwcm9jZXNzLmNyb3NzT3JpZ2luTW9kZSgpICE9IENyb3NzT3JpZ2lu
TW9kZTo6SXNvbGF0ZWQgJiYgcHJvY2Vzcy5jYXB0aXZlUG9ydGFsTW9kZSgpID09IGNhcHRpdmVQ
b3J0YWxNb2RlKQogICAgICAgICAgICAgcmV0dXJuICZwcm9jZXNzOwogICAgIH0KICAgICByZXR1
cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tG
b3J3YXJkQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRD
YWNoZS5jcHAKaW5kZXggNjRhMWE5ZjY5YzZjNDYyMjQ0MTdiZGFjMjBjYzBlODE0M2Y1YTAzNC4u
ZTU3ZDc5NGNhZTA4NWUzNjJlYThiYmJhMjFkYmZkMWRmMjBjYzJiZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRDYWNoZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRDYWNoZS5jcHAKQEAgLTEzNCw3ICsxMzQs
NyBAQCB2b2lkIFdlYkJhY2tGb3J3YXJkQ2FjaGU6OnJlbW92ZUVudHJpZXNGb3JQcm9jZXNzKFdl
YlByb2Nlc3NQcm94eSYgcHJvY2VzcykKIHZvaWQgV2ViQmFja0ZvcndhcmRDYWNoZTo6cmVtb3Zl
RW50cmllc0ZvclNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogewogICAgIHJlbW92
ZUVudHJpZXNNYXRjaGluZyhbc2Vzc2lvbklEXShhdXRvJiBpdGVtKSB7Ci0gICAgICAgIHJldHVy
biBpdGVtLmJhY2tGb3J3YXJkQ2FjaGVFbnRyeSgpLT5wcm9jZXNzKCkud2Vic2l0ZURhdGFTdG9y
ZSgpLnNlc3Npb25JRCgpID09IHNlc3Npb25JRDsKKyAgICAgICAgcmV0dXJuIGl0ZW0uYmFja0Zv
cndhcmRDYWNoZUVudHJ5KCktPnByb2Nlc3MoKS5zZXNzaW9uSUQoKSA9PSBzZXNzaW9uSUQ7CiAg
ICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkxvY2tS
ZWdpc3RyeVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkxvY2tSZWdpc3Ry
eVByb3h5LmNwcAppbmRleCBkZTg3OTBlYzFmMjAwZGY1MTRiNjRkNTQ1OTI1NjQ4ZTMxODIyYzI3
Li5jODNlYjY1NzU4ODhlYmY0N2YxNzhlZjE0MmUyM2JlZjkwOWFmZmYxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJMb2NrUmVnaXN0cnlQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViTG9ja1JlZ2lzdHJ5UHJveHkuY3BwCkBAIC0zMiw2ICsz
Miw3IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURh
dGFTdG9yZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvV2ViTG9ja0lkZW50aWZpZXIuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL1dlYkxvY2tNYW5hZ2VyU25hcHNob3QuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1dlYkxvY2tSZWdpc3RyeS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTU1LDQ0ICs1Niw1
OCBAQCB2b2lkIFdlYkxvY2tSZWdpc3RyeVByb3h5OjpyZXF1ZXN0TG9jayhXZWJDb3JlOjpDbGll
bnRPcmlnaW4mJiBjbGllbnRPcmlnaW4sIFdlYgogICAgIE1FU1NBR0VfQ0hFQ0soY2xpZW50SUQu
cHJvY2Vzc0lkZW50aWZpZXIoKSA9PSBtX3Byb2Nlc3MuY29yZVByb2Nlc3NJZGVudGlmaWVyKCkp
OwogICAgIG1faGFzRXZlclJlcXVlc3RlZExvY2tzID0gdHJ1ZTsKIAotICAgIG1fcHJvY2Vzcy53
ZWJzaXRlRGF0YVN0b3JlKCkud2ViTG9ja1JlZ2lzdHJ5KCkucmVxdWVzdExvY2soV1RGTW92ZShj
bGllbnRPcmlnaW4pLCBsb2NrSWRlbnRpZmllciwgY2xpZW50SUQsIFdURk1vdmUobmFtZSksIGxv
Y2tNb2RlLCBzdGVhbCwgaWZBdmFpbGFibGUsIFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9
LCBsb2NrSWRlbnRpZmllciwgY2xpZW50SURdKGJvb2wgc3VjY2VzcykgewotICAgICAgICBpZiAo
d2Vha1RoaXMpCi0gICAgICAgICAgICB3ZWFrVGhpcy0+bV9wcm9jZXNzLnNlbmQoTWVzc2FnZXM6
OlJlbW90ZVdlYkxvY2tSZWdpc3RyeTo6RGlkQ29tcGxldGVMb2NrUmVxdWVzdChsb2NrSWRlbnRp
ZmllciwgY2xpZW50SUQsIHN1Y2Nlc3MpLCAwKTsKLSAgICB9LCBbd2Vha1RoaXMgPSBXZWFrUHRy
IHsgKnRoaXMgfSwgbG9ja0lkZW50aWZpZXIsIGNsaWVudElEXSB7Ci0gICAgICAgIGlmICh3ZWFr
VGhpcykKLSAgICAgICAgICAgIHdlYWtUaGlzLT5tX3Byb2Nlc3Muc2VuZChNZXNzYWdlczo6UmVt
b3RlV2ViTG9ja1JlZ2lzdHJ5OjpEaWRTdGVhbExvY2sobG9ja0lkZW50aWZpZXIsIGNsaWVudElE
KSwgMCk7Ci0gICAgfSk7CisgICAgaWYgKGF1dG8qIGRhdGFTdG9yZSA9IFdlYnNpdGVEYXRhU3Rv
cmU6OmV4aXN0aW5nRGF0YVN0b3JlRm9yU2Vzc2lvbklEKG1fcHJvY2Vzcy5zZXNzaW9uSUQoKSkp
IHsKKyAgICAgICAgZGF0YVN0b3JlLT53ZWJMb2NrUmVnaXN0cnkoKS5yZXF1ZXN0TG9jayhXVEZN
b3ZlKGNsaWVudE9yaWdpbiksIGxvY2tJZGVudGlmaWVyLCBjbGllbnRJRCwgV1RGTW92ZShuYW1l
KSwgbG9ja01vZGUsIHN0ZWFsLCBpZkF2YWlsYWJsZSwgW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0
aGlzIH0sIGxvY2tJZGVudGlmaWVyLCBjbGllbnRJRF0oYm9vbCBzdWNjZXNzKSB7CisgICAgICAg
ICAgICBpZiAod2Vha1RoaXMpCisgICAgICAgICAgICAgICAgd2Vha1RoaXMtPm1fcHJvY2Vzcy5z
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVXZWJMb2NrUmVnaXN0cnk6OkRpZENvbXBsZXRlTG9ja1JlcXVl
c3QobG9ja0lkZW50aWZpZXIsIGNsaWVudElELCBzdWNjZXNzKSwgMCk7CisgICAgICAgIH0sIFt3
ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBsb2NrSWRlbnRpZmllciwgY2xpZW50SURdIHsK
KyAgICAgICAgICAgIGlmICh3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICB3ZWFrVGhpcy0+bV9w
cm9jZXNzLnNlbmQoTWVzc2FnZXM6OlJlbW90ZVdlYkxvY2tSZWdpc3RyeTo6RGlkU3RlYWxMb2Nr
KGxvY2tJZGVudGlmaWVyLCBjbGllbnRJRCksIDApOworICAgICAgICB9KTsKKyAgICB9IGVsc2UK
KyAgICAgICAgbV9wcm9jZXNzLnNlbmQoTWVzc2FnZXM6OlJlbW90ZVdlYkxvY2tSZWdpc3RyeTo6
RGlkQ29tcGxldGVMb2NrUmVxdWVzdChsb2NrSWRlbnRpZmllciwgY2xpZW50SUQsIGZhbHNlKSwg
MCk7CiB9CiAKIHZvaWQgV2ViTG9ja1JlZ2lzdHJ5UHJveHk6OnJlbGVhc2VMb2NrKFdlYkNvcmU6
OkNsaWVudE9yaWdpbiYmIGNsaWVudE9yaWdpbiwgV2ViQ29yZTo6V2ViTG9ja0lkZW50aWZpZXIg
bG9ja0lkZW50aWZpZXIsIFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVy
IGNsaWVudElELCBTdHJpbmcmJiBuYW1lKQogewogICAgIE1FU1NBR0VfQ0hFQ0sobG9ja0lkZW50
aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIoKSA9PSBtX3Byb2Nlc3MuY29yZVByb2Nlc3NJZGVudGlm
aWVyKCkpOwogICAgIE1FU1NBR0VfQ0hFQ0soY2xpZW50SUQucHJvY2Vzc0lkZW50aWZpZXIoKSA9
PSBtX3Byb2Nlc3MuY29yZVByb2Nlc3NJZGVudGlmaWVyKCkpOwotICAgIG1fcHJvY2Vzcy53ZWJz
aXRlRGF0YVN0b3JlKCkud2ViTG9ja1JlZ2lzdHJ5KCkucmVsZWFzZUxvY2soV1RGTW92ZShjbGll
bnRPcmlnaW4pLCBsb2NrSWRlbnRpZmllciwgY2xpZW50SUQsIFdURk1vdmUobmFtZSkpOworICAg
IGlmIChhdXRvKiBkYXRhU3RvcmUgPSBXZWJzaXRlRGF0YVN0b3JlOjpleGlzdGluZ0RhdGFTdG9y
ZUZvclNlc3Npb25JRChtX3Byb2Nlc3Muc2Vzc2lvbklEKCkpKQorICAgICAgICBkYXRhU3RvcmUt
PndlYkxvY2tSZWdpc3RyeSgpLnJlbGVhc2VMb2NrKFdURk1vdmUoY2xpZW50T3JpZ2luKSwgbG9j
a0lkZW50aWZpZXIsIGNsaWVudElELCBXVEZNb3ZlKG5hbWUpKTsKIH0KIAogdm9pZCBXZWJMb2Nr
UmVnaXN0cnlQcm94eTo6YWJvcnRMb2NrUmVxdWVzdChXZWJDb3JlOjpDbGllbnRPcmlnaW4mJiBj
bGllbnRPcmlnaW4sIFdlYkNvcmU6OldlYkxvY2tJZGVudGlmaWVyIGxvY2tJZGVudGlmaWVyLCBX
ZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciBjbGllbnRJRCwgU3RyaW5n
JiYgbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKICAgICBNRVNTQUdFX0NIRUNLKGxvY2tJZGVudGlmaWVyLnByb2Nlc3NJZGVudGlmaWVy
KCkgPT0gbV9wcm9jZXNzLmNvcmVQcm9jZXNzSWRlbnRpZmllcigpKTsKICAgICBNRVNTQUdFX0NI
RUNLKGNsaWVudElELnByb2Nlc3NJZGVudGlmaWVyKCkgPT0gbV9wcm9jZXNzLmNvcmVQcm9jZXNz
SWRlbnRpZmllcigpKTsKLSAgICBtX3Byb2Nlc3Mud2Vic2l0ZURhdGFTdG9yZSgpLndlYkxvY2tS
ZWdpc3RyeSgpLmFib3J0TG9ja1JlcXVlc3QoV1RGTW92ZShjbGllbnRPcmlnaW4pLCBsb2NrSWRl
bnRpZmllciwgY2xpZW50SUQsIFdURk1vdmUobmFtZSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKKyAgICBpZiAoYXV0byogZGF0YVN0b3JlID0gV2Vic2l0ZURhdGFTdG9yZTo6ZXhpc3Rp
bmdEYXRhU3RvcmVGb3JTZXNzaW9uSUQobV9wcm9jZXNzLnNlc3Npb25JRCgpKSkKKyAgICAgICAg
ZGF0YVN0b3JlLT53ZWJMb2NrUmVnaXN0cnkoKS5hYm9ydExvY2tSZXF1ZXN0KFdURk1vdmUoY2xp
ZW50T3JpZ2luKSwgbG9ja0lkZW50aWZpZXIsIGNsaWVudElELCBXVEZNb3ZlKG5hbWUpLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgZWxzZQorICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihmYWxzZSk7CiB9CiAKIHZvaWQgV2ViTG9ja1JlZ2lzdHJ5UHJveHk6OnNuYXBzaG90KFdl
YkNvcmU6OkNsaWVudE9yaWdpbiYmIGNsaWVudE9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChXZWJDb3JlOjpXZWJMb2NrTWFuYWdlclNuYXBzaG90JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewotICAgIG1fcHJvY2Vzcy53ZWJzaXRlRGF0YVN0b3JlKCkud2ViTG9ja1JlZ2lzdHJ5KCku
c25hcHNob3QoV1RGTW92ZShjbGllbnRPcmlnaW4pLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CisgICAgaWYgKGF1dG8qIGRhdGFTdG9yZSA9IFdlYnNpdGVEYXRhU3RvcmU6OmV4aXN0aW5n
RGF0YVN0b3JlRm9yU2Vzc2lvbklEKG1fcHJvY2Vzcy5zZXNzaW9uSUQoKSkpCisgICAgICAgIGRh
dGFTdG9yZS0+d2ViTG9ja1JlZ2lzdHJ5KCkuc25hcHNob3QoV1RGTW92ZShjbGllbnRPcmlnaW4p
LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgZWxzZQorICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihXZWJDb3JlOjpXZWJMb2NrTWFuYWdlclNuYXBzaG90IHsgfSk7CiB9CiAKIHZv
aWQgV2ViTG9ja1JlZ2lzdHJ5UHJveHk6OmNsaWVudElzR29pbmdBd2F5KFdlYkNvcmU6OkNsaWVu
dE9yaWdpbiYmIGNsaWVudE9yaWdpbiwgV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dElk
ZW50aWZpZXIgY2xpZW50SUQpCiB7CiAgICAgTUVTU0FHRV9DSEVDSyhjbGllbnRJRC5wcm9jZXNz
SWRlbnRpZmllcigpID09IG1fcHJvY2Vzcy5jb3JlUHJvY2Vzc0lkZW50aWZpZXIoKSk7Ci0gICAg
bV9wcm9jZXNzLndlYnNpdGVEYXRhU3RvcmUoKS53ZWJMb2NrUmVnaXN0cnkoKS5jbGllbnRJc0dv
aW5nQXdheShXVEZNb3ZlKGNsaWVudE9yaWdpbiksIGNsaWVudElEKTsKKyAgICBpZiAoYXV0byog
ZGF0YVN0b3JlID0gV2Vic2l0ZURhdGFTdG9yZTo6ZXhpc3RpbmdEYXRhU3RvcmVGb3JTZXNzaW9u
SUQobV9wcm9jZXNzLnNlc3Npb25JRCgpKSkKKyAgICAgICAgZGF0YVN0b3JlLT53ZWJMb2NrUmVn
aXN0cnkoKS5jbGllbnRJc0dvaW5nQXdheShXVEZNb3ZlKGNsaWVudE9yaWdpbiksIGNsaWVudElE
KTsKIH0KIAogdm9pZCBXZWJMb2NrUmVnaXN0cnlQcm94eTo6cHJvY2Vzc0RpZEV4aXQoKQogewot
ICAgIGlmIChtX2hhc0V2ZXJSZXF1ZXN0ZWRMb2NrcykKLSAgICAgICAgbV9wcm9jZXNzLndlYnNp
dGVEYXRhU3RvcmUoKS53ZWJMb2NrUmVnaXN0cnkoKS5jbGllbnRzQXJlR29pbmdBd2F5KG1fcHJv
Y2Vzcy5jb3JlUHJvY2Vzc0lkZW50aWZpZXIoKSk7CisgICAgaWYgKCFtX2hhc0V2ZXJSZXF1ZXN0
ZWRMb2NrcykKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGF1dG8qIGRhdGFTdG9yZSA9IFdl
YnNpdGVEYXRhU3RvcmU6OmV4aXN0aW5nRGF0YVN0b3JlRm9yU2Vzc2lvbklEKG1fcHJvY2Vzcy5z
ZXNzaW9uSUQoKSkpCisgICAgICAgIGRhdGFTdG9yZS0+d2ViTG9ja1JlZ2lzdHJ5KCkuY2xpZW50
c0FyZUdvaW5nQXdheShtX3Byb2Nlc3MuY29yZVByb2Nlc3NJZGVudGlmaWVyKCkpOwogfQogCiAj
dW5kZWYgTUVTU0FHRV9DSEVDSwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAKaW5kZXggODU1YjNhN2QyZTA1YjBhMjZjODM2ODQxZTlkYmMxNjYwMzY4ZGYyOS4uYjdlYjZj
MDI3YzgyZDgwNzNkMGViZjliODczNmM3MzAwMTdlNGY2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC05NzgsNyArOTc4LDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnN3YXBUb1Byb3Zpc2lvbmFsUGFnZShzdGQ6OnVuaXF1ZV9wdHI8UHJvdmlzaW9uYWxQYWdl
UHJveHk+IHAKICAgICBtX3Byb2Nlc3MgPSBwcm92aXNpb25hbFBhZ2UtPnByb2Nlc3MoKTsKICAg
ICBtX3dlYlBhZ2VJRCA9IHByb3Zpc2lvbmFsUGFnZS0+d2ViUGFnZUlEKCk7CiAgICAgcGFnZUNs
aWVudCgpLmRpZENoYW5nZVdlYlBhZ2VJRCgpOwotICAgIG1fd2Vic2l0ZURhdGFTdG9yZSA9IG1f
cHJvY2Vzcy0+d2Vic2l0ZURhdGFTdG9yZSgpOworICAgIG1fd2Vic2l0ZURhdGFTdG9yZSA9ICpw
cm92aXNpb25hbFBhZ2UtPndlYnNpdGVEYXRhU3RvcmUoKTsKIAogI2lmIEhBVkUoVklTSUJJTElU
WV9QUk9QQUdBVElPTl9WSUVXKQogICAgIG1fY29udGV4dElERm9yVmlzaWJpbGl0eVByb3BhZ2F0
aW9uSW5XZWJQcm9jZXNzID0gcHJvdmlzaW9uYWxQYWdlLT5jb250ZXh0SURGb3JWaXNpYmlsaXR5
UHJvcGFnYXRpb25JbldlYlByb2Nlc3MoKTsKQEAgLTM2MTQsNyArMzYxNCw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5Ojpjb21taXRQcm92aXNpb25hbFBhZ2UoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQs
IEZyYW1lSW5mb0RhdGEmCiAgICAgcmVtb3ZlQWxsTWVzc2FnZVJlY2VpdmVycygpOwogICAgIGF1
dG8qIG5hdmlnYXRpb24gPSBuYXZpZ2F0aW9uU3RhdGUoKS5uYXZpZ2F0aW9uKG1fcHJvdmlzaW9u
YWxQYWdlLT5uYXZpZ2F0aW9uSUQoKSk7CiAgICAgYm9vbCBkaWRTdXNwZW5kUHJldmlvdXNQYWdl
ID0gbmF2aWdhdGlvbiAmJiAhbV9wcm92aXNpb25hbFBhZ2UtPmlzUHJvY2Vzc1N3YXBwaW5nT25O
YXZpZ2F0aW9uUmVzcG9uc2UoKSA/IHN1c3BlbmRDdXJyZW50UGFnZUlmUG9zc2libGUoKm5hdmln
YXRpb24sIG1haW5GcmFtZUlESW5QcmV2aW91c1Byb2Nlc3MsIG1fcHJvdmlzaW9uYWxQYWdlLT5w
cm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50KCksIHNob3VsZERlbGF5Q2xvc2luZ1VudGlsRmly
c3RMYXllckZsdXNoKSA6IGZhbHNlOwotICAgIG1fcHJvY2Vzcy0+cmVtb3ZlV2ViUGFnZSgqdGhp
cywgbV93ZWJzaXRlRGF0YVN0b3JlLnB0cigpID09ICZtX3Byb3Zpc2lvbmFsUGFnZS0+cHJvY2Vz
cygpLndlYnNpdGVEYXRhU3RvcmUoKSA/IFdlYlByb2Nlc3NQcm94eTo6RW5kc1VzaW5nRGF0YVN0
b3JlOjpObyA6IFdlYlByb2Nlc3NQcm94eTo6RW5kc1VzaW5nRGF0YVN0b3JlOjpZZXMpOworICAg
IG1fcHJvY2Vzcy0+cmVtb3ZlV2ViUGFnZSgqdGhpcywgbV93ZWJzaXRlRGF0YVN0b3JlLnB0cigp
ID09IG1fcHJvdmlzaW9uYWxQYWdlLT53ZWJzaXRlRGF0YVN0b3JlKCkgPyBXZWJQcm9jZXNzUHJv
eHk6OkVuZHNVc2luZ0RhdGFTdG9yZTo6Tm8gOiBXZWJQcm9jZXNzUHJveHk6OkVuZHNVc2luZ0Rh
dGFTdG9yZTo6WWVzKTsKIAogICAgIC8vIFRoZXJlIGlzIG5vIHdheSB3ZSdsbCBiZSBhYmxlIHRv
IHJldHVybiB0byB0aGUgcGFnZSBpbiB0aGUgcHJldmlvdXMgcGFnZSBzbyBjbG9zZSBpdC4KICAg
ICBpZiAoIWRpZFN1c3BlbmRQcmV2aW91c1BhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc0NhY2hlLmNwcAppbmRleCA1MWZjYmU2NjM0MWE5OTMwZjc4YzQyNzEzNDhhMDFl
YjE0YjNjMjcxLi4wNjkxMzM0NTJkYjE1N2NkNjMzODhlN2YwNWJiZWE3MzVmNjZlNWIzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzQ2FjaGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NDYWNoZS5jcHAKQEAgLTc2LDggKzc2
LDggQEAgYm9vbCBXZWJQcm9jZXNzQ2FjaGU6OmNhbkNhY2hlUHJvY2VzcyhXZWJQcm9jZXNzUHJv
eHkmIHByb2Nlc3MpIGNvbnN0CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBh
dXRvIHNlc3Npb25JRCA9IHByb2Nlc3Mud2Vic2l0ZURhdGFTdG9yZSgpLnNlc3Npb25JRCgpOwot
ICAgIGlmIChzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSAmJiAhcHJvY2Vzcy5wcm9jZXNzUG9vbCgp
Lmhhc1BhZ2VzVXNpbmdXZWJzaXRlRGF0YVN0b3JlKHByb2Nlc3Mud2Vic2l0ZURhdGFTdG9yZSgp
KSkgeworICAgIGF1dG8gc2Vzc2lvbklEID0gcHJvY2Vzcy5zZXNzaW9uSUQoKTsKKyAgICBpZiAo
c2Vzc2lvbklELmlzRXBoZW1lcmFsKCkgJiYgIXByb2Nlc3MucHJvY2Vzc1Bvb2woKS5oYXNQYWdl
c1VzaW5nV2Vic2l0ZURhdGFTdG9yZShwcm9jZXNzLnNlc3Npb25JRCgpKSkgewogICAgICAgICBX
RUJQUk9DRVNTQ0FDSEVfUkVMRUFTRV9MT0coImNhbkNhY2hlUHJvY2VzczogTm90IGNhY2hpbmcg
cHJvY2VzcyBiZWNhdXNlIHRoaXMgc2Vzc2lvbiBoYXMgYmVlbiBkZXN0cm95ZWQiLCBwcm9jZXNz
LnByb2Nlc3NJZGVudGlmaWVyKCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAt
MTUzLDcgKzE1Myw3IEBAIFJlZlB0cjxXZWJQcm9jZXNzUHJveHk+IFdlYlByb2Nlc3NDYWNoZTo6
dGFrZVByb2Nlc3MoY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVECiAgICAgaWYgKGl0ID09IG1f
cHJvY2Vzc2VzUGVyUmVnaXN0cmFibGVEb21haW4uZW5kKCkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCi0gICAgaWYgKCZpdC0+dmFsdWUtPnByb2Nlc3MoKS53ZWJzaXRlRGF0YVN0b3JlKCkg
IT0gJmRhdGFTdG9yZSkKKyAgICBpZiAoaXQtPnZhbHVlLT5wcm9jZXNzKCkuc2Vzc2lvbklEKCkg
IT0gZGF0YVN0b3JlLnNlc3Npb25JRCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAg
IGlmIChpdC0+dmFsdWUtPnByb2Nlc3MoKS5jYXB0aXZlUG9ydGFsTW9kZSgpICE9IGNhcHRpdmVQ
b3J0YWxNb2RlKQpAQCAtMjEyLDcgKzIxMiw3IEBAIHZvaWQgV2ViUHJvY2Vzc0NhY2hlOjpjbGVh
ckFsbFByb2Nlc3Nlc0ZvclNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogewogICAg
IFZlY3RvcjxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4ga2V5c1RvUmVtb3ZlOwogICAgIGZv
ciAoYXV0byYgcGFpciA6IG1fcHJvY2Vzc2VzUGVyUmVnaXN0cmFibGVEb21haW4pIHsKLSAgICAg
ICAgaWYgKHBhaXIudmFsdWUtPnByb2Nlc3MoKS53ZWJzaXRlRGF0YVN0b3JlKCkuc2Vzc2lvbklE
KCkgPT0gc2Vzc2lvbklEKSB7CisgICAgICAgIGlmIChwYWlyLnZhbHVlLT5wcm9jZXNzKCkuc2Vz
c2lvbklEKCkgPT0gc2Vzc2lvbklEKSB7CiAgICAgICAgICAgICBXRUJQUk9DRVNTQ0FDSEVfUkVM
RUFTRV9MT0coImNsZWFyQWxsUHJvY2Vzc2VzRm9yU2Vzc2lvbjogRXZpY3RpbmcgcHJvY2VzcyBi
ZWNhdXNlIGl0cyBzZXNzaW9uIHdhcyBkZXN0cm95ZWQiLCBwYWlyLnZhbHVlLT5wcm9jZXNzKCku
cHJvY2Vzc0lkZW50aWZpZXIoKSk7CiAgICAgICAgICAgICBrZXlzVG9SZW1vdmUuYXBwZW5kKHBh
aXIua2V5KTsKICAgICAgICAgfQpAQCAtMjIyLDcgKzIyMiw3IEBAIHZvaWQgV2ViUHJvY2Vzc0Nh
Y2hlOjpjbGVhckFsbFByb2Nlc3Nlc0ZvclNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
KQogCiAgICAgVmVjdG9yPHVpbnQ2NF90PiBwZW5kaW5nUmVxdWVzdHNUb1JlbW92ZTsKICAgICBm
b3IgKGF1dG8mIHBhaXIgOiBtX3BlbmRpbmdBZGRSZXF1ZXN0cykgewotICAgICAgICBpZiAocGFp
ci52YWx1ZS0+cHJvY2VzcygpLndlYnNpdGVEYXRhU3RvcmUoKS5zZXNzaW9uSUQoKSA9PSBzZXNz
aW9uSUQpIHsKKyAgICAgICAgaWYgKHBhaXIudmFsdWUtPnByb2Nlc3MoKS5zZXNzaW9uSUQoKSA9
PSBzZXNzaW9uSUQpIHsKICAgICAgICAgICAgIFdFQlBST0NFU1NDQUNIRV9SRUxFQVNFX0xPRygi
Y2xlYXJBbGxQcm9jZXNzZXNGb3JTZXNzaW9uOiBFdmljdGluZyBwcm9jZXNzIGJlY2F1c2UgaXRz
IHNlc3Npb24gd2FzIGRlc3Ryb3llZCIsIHBhaXIudmFsdWUtPnByb2Nlc3MoKS5wcm9jZXNzSWRl
bnRpZmllcigpKTsKICAgICAgICAgICAgIHBlbmRpbmdSZXF1ZXN0c1RvUmVtb3ZlLmFwcGVuZChw
YWlyLmtleSk7CiAgICAgICAgIH0KQEAgLTI3Niw3ICsyNzYsOSBAQCBXZWJQcm9jZXNzQ2FjaGU6
OkNhY2hlZFByb2Nlc3M6OkNhY2hlZFByb2Nlc3MoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9j
ZXNzKQogI2VuZGlmCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoIW1fcHJvY2Vzcy0+cGFnZUNvdW50
KCkpOwotICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfTUVTU0FHRSghbV9wcm9jZXNzLT53ZWJzaXRl
RGF0YVN0b3JlKCkucHJvY2Vzc2VzKCkuY29udGFpbnMoKm1fcHJvY2VzcyksICJPbmx5IHByb2Nl
c3NlcyB3aXRoIHBhZ2VzIHNob3VsZCBiZSByZWdpc3RlcmVkIHdpdGggdGhlIGRhdGEgc3RvcmUi
KTsKKyAgICBhdXRvKiBkYXRhU3RvcmUgPSBXZWJzaXRlRGF0YVN0b3JlOjpleGlzdGluZ0RhdGFT
dG9yZUZvclNlc3Npb25JRChtX3Byb2Nlc3MtPnNlc3Npb25JRCgpKTsKKyAgICBSRUxFQVNFX0FT
U0VSVChkYXRhU3RvcmUpOworICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfTUVTU0FHRSghZGF0YVN0
b3JlLT5wcm9jZXNzZXMoKS5jb250YWlucygqbV9wcm9jZXNzKSwgIk9ubHkgcHJvY2Vzc2VzIHdp
dGggcGFnZXMgc2hvdWxkIGJlIHJlZ2lzdGVyZWQgd2l0aCB0aGUgZGF0YSBzdG9yZSIpOwogICAg
IG1fcHJvY2Vzcy0+c2V0SXNJblByb2Nlc3NDYWNoZSh0cnVlKTsKICAgICBtX2V2aWN0aW9uVGlt
ZXIuc3RhcnRPbmVTaG90KGNhY2hlZFByb2Nlc3NMaWZldGltZSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggMWIyYjg1MWU5NzI0YWM1MGZlMzk4
ZjkwNGZiM2VjNTdhZTUwOWEwNS4uZGE4MTlhYmQ4MTQzM2QwNzVjMmJiZmU1MGUzN2JiMmM2OWVj
YTlkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAt
NTcxLDcgKzU3MSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFJlbW90ZVdvcmtl
ckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhSZW1vCiAKICAgICAvLyBQcmlvcml0
aXplIHRoZSByZXF1ZXN0aW5nIFdlYlByb2Nlc3MgZm9yIHJ1bm5pbmcgdGhlIHNlcnZpY2Ugd29y
a2VyLgogICAgIGlmICghcmVtb3RlV29ya2VyUHJvY2Vzc1Byb3h5ICYmICFzaG91bGRVc2VTZXBh
cmF0ZVJlbW90ZVdvcmtlclByb2Nlc3MgJiYgcmVxdWVzdGluZ1Byb2Nlc3MpIHsKLSAgICAgICAg
aWYgKCZyZXF1ZXN0aW5nUHJvY2Vzcy0+d2Vic2l0ZURhdGFTdG9yZSgpID09IHdlYnNpdGVEYXRh
U3RvcmUgJiYgcmVxdWVzdGluZ1Byb2Nlc3MtPmlzTWF0Y2hpbmdSZWdpc3RyYWJsZURvbWFpbihy
ZWdpc3RyYWJsZURvbWFpbikpCisgICAgICAgIGlmIChyZXF1ZXN0aW5nUHJvY2Vzcy0+c2Vzc2lv
bklEKCkgPT0gd2Vic2l0ZURhdGFTdG9yZS0+c2Vzc2lvbklEKCkgJiYgcmVxdWVzdGluZ1Byb2Nl
c3MtPmlzTWF0Y2hpbmdSZWdpc3RyYWJsZURvbWFpbihyZWdpc3RyYWJsZURvbWFpbikpCiAgICAg
ICAgICAgICB1c2VQcm9jZXNzRm9yUmVtb3RlV29ya2VycygqcmVxdWVzdGluZ1Byb2Nlc3MpOwog
ICAgIH0KIApAQCAtNTc5LDcgKzU3OSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlz
aFJlbW90ZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhSZW1vCiAgICAg
ICAgIGZvciAoYXV0byYgcHJvY2VzcyA6IHByb2Nlc3NQb29sLT5tX3Byb2Nlc3NlcykgewogICAg
ICAgICAgICAgaWYgKHByb2Nlc3MucHRyKCkgPT0gcHJvY2Vzc1Bvb2wtPm1fcHJld2FybWVkUHJv
Y2Vzcy5nZXQoKSB8fCBwcm9jZXNzLT5pc0R1bW15UHJvY2Vzc1Byb3h5KCkpCiAgICAgICAgICAg
ICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBpZiAoJnByb2Nlc3MtPndlYnNpdGVEYXRhU3Rv
cmUoKSAhPSB3ZWJzaXRlRGF0YVN0b3JlKQorICAgICAgICAgICAgaWYgKHByb2Nlc3MtPnNlc3Np
b25JRCgpICE9IHdlYnNpdGVEYXRhU3RvcmUtPnNlc3Npb25JRCgpKQogICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICAgICAgaWYgKCFwcm9jZXNzLT5pc01hdGNoaW5nUmVnaXN0cmFi
bGVEb21haW4ocmVnaXN0cmFibGVEb21haW4pKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpA
QCAtMTA4NSw3ICsxMDg1LDcgQEAgUmVmPFdlYlByb2Nlc3NQcm94eT4gV2ViUHJvY2Vzc1Bvb2w6
OnByb2Nlc3NGb3JSZWdpc3RyYWJsZURvbWFpbihXZWJzaXRlRGF0YVN0b3IKICAgICAgICAgICAg
IGlmIChwcm9jZXNzLT5pc1J1bm5pbmdTZXJ2aWNlV29ya2VycygpKQogICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwogI2VuZGlmCi0gICAgICAgICAgICBpZiAobXVzdE1hdGNoRGF0YVN0b3JlICYm
ICZwcm9jZXNzLT53ZWJzaXRlRGF0YVN0b3JlKCkgIT0gJndlYnNpdGVEYXRhU3RvcmUpCisgICAg
ICAgICAgICBpZiAobXVzdE1hdGNoRGF0YVN0b3JlICYmIHByb2Nlc3MtPnNlc3Npb25JRCgpICE9
IHdlYnNpdGVEYXRhU3RvcmUuc2Vzc2lvbklEKCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgICAgICByZXR1cm4gcHJvY2VzczsKICAgICAgICAgfQpAQCAtMTEyNSw3ICsxMTI1
LDcgQEAgUmVmPFdlYlBhZ2VQcm94eT4gV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZVdlYlBhZ2UoUGFn
ZUNsaWVudCYgcGFnZUNsaWVudCwgUmVmPEFQSToKICAgICAgICAgLy8gU2hhcmluZyBwcm9jZXNz
ZXMsIGUuZy4gd2hlbiBjcmVhdGluZyB0aGUgcGFnZSB2aWEgd2luZG93Lm9wZW4oKS4KICAgICAg
ICAgcHJvY2VzcyA9ICZwYWdlQ29uZmlndXJhdGlvbi0+cmVsYXRlZFBhZ2UoKS0+ZW5zdXJlUnVu
bmluZ1Byb2Nlc3MoKTsKICAgICAgICAgLy8gV2UgZG8gbm90IHN1cHBvcnQgc2V2ZXJhbCBXZWJz
aXRlRGF0YVN0b3JlcyBzaGFyaW5nIGEgc2luZ2xlIHByb2Nlc3MuCi0gICAgICAgIEFTU0VSVChw
cm9jZXNzLT5pc0R1bW15UHJvY2Vzc1Byb3h5KCkgfHwgcGFnZUNvbmZpZ3VyYXRpb24tPndlYnNp
dGVEYXRhU3RvcmUoKSA9PSAmcHJvY2Vzcy0+d2Vic2l0ZURhdGFTdG9yZSgpKTsKKyAgICAgICAg
QVNTRVJUKHByb2Nlc3MtPmlzRHVtbXlQcm9jZXNzUHJveHkoKSB8fCBwYWdlQ29uZmlndXJhdGlv
bi0+d2Vic2l0ZURhdGFTdG9yZSgpLT5zZXNzaW9uSUQoKSA9PSBwcm9jZXNzLT5zZXNzaW9uSUQo
KSk7CiAgICAgICAgIEFTU0VSVCgmcGFnZUNvbmZpZ3VyYXRpb24tPnJlbGF0ZWRQYWdlKCktPndl
YnNpdGVEYXRhU3RvcmUoKSA9PSBwYWdlQ29uZmlndXJhdGlvbi0+d2Vic2l0ZURhdGFTdG9yZSgp
KTsKICAgICB9IGVsc2UgaWYgKCFtX2lzRGVsYXllZFdlYlByb2Nlc3NMYXVuY2hEaXNhYmxlZCkg
ewogICAgICAgICAvLyBJbiB0aGUgY29tbW9uIGNhc2UsIHdlIGRlbGF5IHByb2Nlc3MgbGF1bmNo
IHVudGlsIHNvbWV0aGluZyBpcyBhY3R1YWxseSBsb2FkZWQgaW4gdGhlIHBhZ2UuCkBAIC0xMTgy
LDE5ICsxMTgyLDE4IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnVwZGF0ZVJlbW90ZVdvcmtlclVz
ZXJBZ2VudChjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkKICAgICAgICAgd29ya2VyUHJvY2Vzcy5z
ZXRSZW1vdGVXb3JrZXJVc2VyQWdlbnQobV9yZW1vdGVXb3JrZXJVc2VyQWdlbnQpOwogfQogCi12
b2lkIFdlYlByb2Nlc3NQb29sOjpwYWdlQmVnaW5Vc2luZ1dlYnNpdGVEYXRhU3RvcmUoV2ViUGFn
ZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSkKK3Zv
aWQgV2ViUHJvY2Vzc1Bvb2w6OnBhZ2VCZWdpblVzaW5nV2Vic2l0ZURhdGFTdG9yZShXZWJQYWdl
UHJveHlJZGVudGlmaWVyIHBhZ2VJRCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogewogICAg
IFJFTEVBU0VfQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBSRUxFQVNFX0FTU0VSVCht
X3Nlc3Npb25Ub1BhZ2VJRHNNYXAuaXNWYWxpZEtleShkYXRhU3RvcmUuc2Vzc2lvbklEKCkpKTsK
LSAgICBhdXRvIHJlc3VsdCA9IG1fc2Vzc2lvblRvUGFnZUlEc01hcC5hZGQoZGF0YVN0b3JlLnNl
c3Npb25JRCgpLCBIYXNoU2V0PFdlYlBhZ2VQcm94eUlkZW50aWZpZXI+KCkpLml0ZXJhdG9yLT52
YWx1ZS5hZGQocGFnZUlEKTsKKyAgICBSRUxFQVNFX0FTU0VSVChtX3Nlc3Npb25Ub1BhZ2VJRHNN
YXAuaXNWYWxpZEtleShzZXNzaW9uSUQpKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1fc2Vzc2lvblRv
UGFnZUlEc01hcC5hZGQoc2Vzc2lvbklELCBIYXNoU2V0PFdlYlBhZ2VQcm94eUlkZW50aWZpZXI+
KCkpLml0ZXJhdG9yLT52YWx1ZS5hZGQocGFnZUlEKTsKICAgICBBU1NFUlRfVU5VU0VEKHJlc3Vs
dCwgcmVzdWx0LmlzTmV3RW50cnkpOwogfQogCi12b2lkIFdlYlByb2Nlc3NQb29sOjpwYWdlRW5k
VXNpbmdXZWJzaXRlRGF0YVN0b3JlKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCBXZWJz
aXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUpCit2b2lkIFdlYlByb2Nlc3NQb29sOjpwYWdlRW5kVXNp
bmdXZWJzaXRlRGF0YVN0b3JlKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCBQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoUnVuTG9vcDo6aXNNYWlu
KCkpOwotICAgIGF1dG8gc2Vzc2lvbklEID0gZGF0YVN0b3JlLnNlc3Npb25JRCgpOwotICAgIFJF
TEVBU0VfQVNTRVJUKG1fc2Vzc2lvblRvUGFnZUlEc01hcC5pc1ZhbGlkS2V5KGRhdGFTdG9yZS5z
ZXNzaW9uSUQoKSkpOworICAgIFJFTEVBU0VfQVNTRVJUKG1fc2Vzc2lvblRvUGFnZUlEc01hcC5p
c1ZhbGlkS2V5KHNlc3Npb25JRCkpOwogICAgIGF1dG8gaXRlcmF0b3IgPSBtX3Nlc3Npb25Ub1Bh
Z2VJRHNNYXAuZmluZChzZXNzaW9uSUQpOwogICAgIFJFTEVBU0VfQVNTRVJUKGl0ZXJhdG9yICE9
IG1fc2Vzc2lvblRvUGFnZUlEc01hcC5lbmQoKSk7CiAKQEAgLTEyMDksMTEgKzEyMDgsMTEgQEAg
dm9pZCBXZWJQcm9jZXNzUG9vbDo6cGFnZUVuZFVzaW5nV2Vic2l0ZURhdGFTdG9yZShXZWJQYWdl
UHJveHlJZGVudGlmaWVyIHBhZ2VJRCwKICAgICB9CiB9CiAKLWJvb2wgV2ViUHJvY2Vzc1Bvb2w6
Omhhc1BhZ2VzVXNpbmdXZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9y
ZSkgY29uc3QKK2Jvb2wgV2ViUHJvY2Vzc1Bvb2w6Omhhc1BhZ2VzVXNpbmdXZWJzaXRlRGF0YVN0
b3JlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgY29uc3QKIHsKICAgICBSRUxFQVNFX0FTU0VS
VChSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgUkVMRUFTRV9BU1NFUlQobV9zZXNzaW9uVG9QYWdl
SURzTWFwLmlzVmFsaWRLZXkoZGF0YVN0b3JlLnNlc3Npb25JRCgpKSk7Ci0gICAgcmV0dXJuIG1f
c2Vzc2lvblRvUGFnZUlEc01hcC5jb250YWlucyhkYXRhU3RvcmUuc2Vzc2lvbklEKCkpOworICAg
IFJFTEVBU0VfQVNTRVJUKG1fc2Vzc2lvblRvUGFnZUlEc01hcC5pc1ZhbGlkS2V5KHNlc3Npb25J
RCkpOworICAgIHJldHVybiBtX3Nlc3Npb25Ub1BhZ2VJRHNNYXAuY29udGFpbnMoc2Vzc2lvbklE
KTsKIH0KIAogRG93bmxvYWRQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmRvd25sb2FkKFdlYnNpdGVE
YXRhU3RvcmUmIGRhdGFTdG9yZSwgV2ViUGFnZVByb3h5KiBpbml0aWF0aW5nUGFnZSwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1l
KQpAQCAtMTk3NSw3ICsxOTc0LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cHJvY2Vzc0Zvck5h
dmlnYXRpb25JbnRlcm5hbChXZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0IEFQSToKICAgICAgICAg
TE9HKFByb2Nlc3NTd2FwcGluZywgIihQcm9jZXNzU3dhcHBpbmcpIENvbnNpZGVyaW5nIHJlLXVz
ZSBvZiBhIHByZXZpb3VzbHkgY2FjaGVkIHByb2Nlc3MgZm9yIGRvbWFpbiAlcyIsIHRhcmdldFJl
Z2lzdHJhYmxlRG9tYWluLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgICAgIGlmIChh
dXRvKiBwcm9jZXNzID0gbV9zd2FwcGVkUHJvY2Vzc2VzUGVyUmVnaXN0cmFibGVEb21haW4uZ2V0
KHRhcmdldFJlZ2lzdHJhYmxlRG9tYWluKSkgewotICAgICAgICAgICAgaWYgKCZwcm9jZXNzLT53
ZWJzaXRlRGF0YVN0b3JlKCkgPT0gZGF0YVN0b3JlLnB0cigpKSB7CisgICAgICAgICAgICBpZiAo
cHJvY2Vzcy0+c2Vzc2lvbklEKCkgPT0gZGF0YVN0b3JlLT5zZXNzaW9uSUQoKSkgewogICAgICAg
ICAgICAgICAgIExPRyhQcm9jZXNzU3dhcHBpbmcsICIoUHJvY2Vzc1N3YXBwaW5nKSBSZXVzaW5n
IGEgcHJldmlvdXNseSBjYWNoZWQgcHJvY2VzcyB3aXRoIHBpZCAlaSB0byBjb250aW51ZSBuYXZp
Z2F0aW9uIHRvIFVSTCAlcyIsIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIHRhcmdldFVS
TC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAogICAgICAgICAgICAgICAgIHJldHVybiBjb21w
bGV0aW9uSGFuZGxlcigqcHJvY2VzcywgbnVsbHB0ciwgcmVhc29uKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4IDQwOWE3OWI1MWI3MDUwZDEwOGJlMTMxMGZl
MmYwYTJjMGY3NTU3ZTcuLjM4MjliMmU2YTg3MGNlOTFhYzVmY2Y1MGYzNTNjNjdjYzZlODM0ODcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtMjE0LDkgKzIx
NCw5IEBAIHB1YmxpYzoKIAogICAgIFJlZjxXZWJQYWdlUHJveHk+IGNyZWF0ZVdlYlBhZ2UoUGFn
ZUNsaWVudCYsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmKTsKIAotICAgIHZvaWQgcGFn
ZUJlZ2luVXNpbmdXZWJzaXRlRGF0YVN0b3JlKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYnNp
dGVEYXRhU3RvcmUmKTsKLSAgICB2b2lkIHBhZ2VFbmRVc2luZ1dlYnNpdGVEYXRhU3RvcmUoV2Vi
UGFnZVByb3h5SWRlbnRpZmllciwgV2Vic2l0ZURhdGFTdG9yZSYpOwotICAgIGJvb2wgaGFzUGFn
ZXNVc2luZ1dlYnNpdGVEYXRhU3RvcmUoV2Vic2l0ZURhdGFTdG9yZSYpIGNvbnN0OworICAgIHZv
aWQgcGFnZUJlZ2luVXNpbmdXZWJzaXRlRGF0YVN0b3JlKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIs
IFBBTDo6U2Vzc2lvbklEKTsKKyAgICB2b2lkIHBhZ2VFbmRVc2luZ1dlYnNpdGVEYXRhU3RvcmUo
V2ViUGFnZVByb3h5SWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQpOworICAgIGJvb2wgaGFzUGFn
ZXNVc2luZ1dlYnNpdGVEYXRhU3RvcmUoUEFMOjpTZXNzaW9uSUQpIGNvbnN0OwogCiAgICAgY29u
c3QgU3RyaW5nJiBpbmplY3RlZEJ1bmRsZVBhdGgoKSBjb25zdCB7IHJldHVybiBtX2NvbmZpZ3Vy
YXRpb24tPmluamVjdGVkQnVuZGxlUGF0aCgpOyB9CiAjaWYgUExBVEZPUk0oQ09DT0EpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCAxNzA0NTBhOTVi
YTZlOGE0OWVlNWZjODFlMTFiNTUwOTFiYjk0YjYyLi4wYjQxNjgzNTI2OGE4YTM3MTUyNDhmYzZi
NWI4ZWQwNjZhYmU2Y2MxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5jcHAKQEAgLTI0MSw3ICsyNDEsNiBAQCBXZWJQcm9jZXNzUHJveHk6OldlYlByb2Nlc3NQ
cm94eShXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIFdlYnNpdGVEYXRhU3RvcmUqCiAjZW5k
aWYKICAgICAsIG1faXNSZXNwb25zaXZlKE5vT3JNYXliZTo6TWF5YmUpCiAgICAgLCBtX3Zpc2li
bGVQYWdlQ291bnRlcihbdGhpc10oUmVmQ291bnRlckV2ZW50KSB7IHVwZGF0ZUJhY2tncm91bmRS
ZXNwb25zaXZlbmVzc1RpbWVyKCk7IH0pCi0gICAgLCBtX3dlYnNpdGVEYXRhU3RvcmUod2Vic2l0
ZURhdGFTdG9yZSkKICNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
ICAgICAsIG1fdXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eShtYWtlVW5pcXVlPFVzZXJNZWRp
YUNhcHR1cmVNYW5hZ2VyUHJveHk+KG1ha2VVbmlxdWVSZWY8VUlQcm94eUZvckNhcHR1cmU+KCp0
aGlzKSkpCiAjZW5kaWYKQEAgLTI1OCw3ICsyNTcsOCBAQCBXZWJQcm9jZXNzUHJveHk6OldlYlBy
b2Nlc3NQcm94eShXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIFdlYnNpdGVEYXRhU3RvcmUq
CiAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKIAogICAgIFdl
YlBhc3RlYm9hcmRQcm94eTo6c2luZ2xldG9uKCkuYWRkV2ViUHJvY2Vzc1Byb3h5KCp0aGlzKTsK
LQorICAgIGlmICh3ZWJzaXRlRGF0YVN0b3JlKQorICAgICAgICBtX3Nlc3Npb25JRCA9IHdlYnNp
dGVEYXRhU3RvcmUtPnNlc3Npb25JRCgpOwogICAgIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOwogfQog
CkBAIC0zNDgsMzIgKzM0OCwzNCBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6c2V0SXNJblByb2Nl
c3NDYWNoZShib29sIHZhbHVlLCBXaWxsU2h1dERvd24gd2lsbFNodXREb3duKQogCiB2b2lkIFdl
YlByb2Nlc3NQcm94eTo6c2V0V2Vic2l0ZURhdGFTdG9yZShXZWJzaXRlRGF0YVN0b3JlJiBkYXRh
U3RvcmUpCiB7Ci0gICAgQVNTRVJUKCFtX3dlYnNpdGVEYXRhU3RvcmUpOworICAgIEFTU0VSVCgh
bV9zZXNzaW9uSUQuaXNWYWxpZCgpKTsKICAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0co
UHJvY2VzcywgInNldFdlYnNpdGVEYXRhU3RvcmUoKSBkYXRhU3RvcmU9JXAsIHNlc3Npb25JRD0l
IiBQUkl1NjQsICZkYXRhU3RvcmUsIGRhdGFTdG9yZS5zZXNzaW9uSUQoKS50b1VJbnQ2NCgpKTsK
LSAgICBtX3dlYnNpdGVEYXRhU3RvcmUgPSAmZGF0YVN0b3JlOwogICAgIHVwZGF0ZVJlZ2lzdHJh
dGlvbldpdGhEYXRhU3RvcmUoKTsKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTZXRX
ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyhwcm9jZXNzUG9vbCgpLndlYlByb2Nlc3NEYXRhU3Rv
cmVQYXJhbWV0ZXJzKCp0aGlzLCBkYXRhU3RvcmUpKSwgMCk7CiAKICAgICAvLyBEZWxheSBjb25z
dHJ1Y3Rpb24gb2YgdGhlIFdlYkxvY2tSZWdpc3RyeVByb3h5IHVudGlsIHRoZSBXZWJQcm9jZXNz
UHJveHkgaGFzIGEgZGF0YSBzdG9yZSBzaW5jZSB0aGUgZGF0YSBzdG9yZSBob2xkcyB0aGUKICAg
ICAvLyBMb2NhbFdlYkxvY2tSZWdpc3RyeS4KICAgICBtX3dlYkxvY2tSZWdpc3RyeSA9IG1ha2VV
bmlxdWU8V2ViTG9ja1JlZ2lzdHJ5UHJveHk+KCp0aGlzKTsKKyAgICBtX3Nlc3Npb25JRCA9IGRh
dGFTdG9yZS5zZXNzaW9uSUQoKTsKIH0KIAogYm9vbCBXZWJQcm9jZXNzUHJveHk6OmlzRHVtbXlQ
cm9jZXNzUHJveHkoKSBjb25zdAogewotICAgIHJldHVybiBtX3dlYnNpdGVEYXRhU3RvcmUgJiYg
cHJvY2Vzc1Bvb2woKS5kdW1teVByb2Nlc3NQcm94eShtX3dlYnNpdGVEYXRhU3RvcmUtPnNlc3Np
b25JRCgpKSA9PSB0aGlzOworICAgIHJldHVybiBtX3Nlc3Npb25JRC5pc1ZhbGlkKCkgJiYgcHJv
Y2Vzc1Bvb2woKS5kdW1teVByb2Nlc3NQcm94eShzZXNzaW9uSUQoKSkgPT0gdGhpczsKIH0KIAog
dm9pZCBXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZVJlZ2lzdHJhdGlvbldpdGhEYXRhU3RvcmUoKQog
ewotICAgIGlmICghbV93ZWJzaXRlRGF0YVN0b3JlKQorICAgIGlmICghbV9zZXNzaW9uSUQuaXNW
YWxpZCgpKQogICAgICAgICByZXR1cm47Ci0gICAgCisKICAgICBib29sIHNob3VsZEJlUmVnaXN0
ZXJlZCA9IHBhZ2VDb3VudCgpIHx8IHByb3Zpc2lvbmFsUGFnZUNvdW50KCk7Ci0gICAgaWYgKHNo
b3VsZEJlUmVnaXN0ZXJlZCkKLSAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlLT5yZWdpc3RlclBy
b2Nlc3MoKnRoaXMpOwotICAgIGVsc2UKLSAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlLT51bnJl
Z2lzdGVyUHJvY2VzcygqdGhpcyk7CisgICAgaWYgKGF1dG8qIGRhdGFTdG9yZSA9IFdlYnNpdGVE
YXRhU3RvcmU6OmV4aXN0aW5nRGF0YVN0b3JlRm9yU2Vzc2lvbklEKHNlc3Npb25JRCgpKSkgewor
ICAgICAgICBpZiAoc2hvdWxkQmVSZWdpc3RlcmVkKQorICAgICAgICAgICAgZGF0YVN0b3JlLT5y
ZWdpc3RlclByb2Nlc3MoKnRoaXMpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBkYXRhU3Rv
cmUtPnVucmVnaXN0ZXJQcm9jZXNzKCp0aGlzKTsKKyAgICB9CiB9CiAKIHZvaWQgV2ViUHJvY2Vz
c1Byb3h5OjphZGRQcm92aXNpb25hbFBhZ2VQcm94eShQcm92aXNpb25hbFBhZ2VQcm94eSYgcHJv
dmlzaW9uYWxQYWdlKQpAQCAtNTk2LDExICs1OTgsMTEgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6
OmFkZEV4aXN0aW5nV2ViUGFnZShXZWJQYWdlUHJveHkmIHdlYlBhZ2UsIEJlZ2luc1VzaW5nRGF0
YVMKICAgICBBU1NFUlQoIW1fcGFnZU1hcC5jb250YWlucyh3ZWJQYWdlLmlkZW50aWZpZXIoKSkp
OwogICAgIEFTU0VSVCghZ2xvYmFsUGFnZU1hcCgpLmNvbnRhaW5zKHdlYlBhZ2UuaWRlbnRpZmll
cigpKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoIW1faXNJblByb2Nlc3NDYWNoZSk7Ci0gICAgQVNT
RVJUKCFtX3dlYnNpdGVEYXRhU3RvcmUgfHwgbV93ZWJzaXRlRGF0YVN0b3JlID09ICZ3ZWJQYWdl
LndlYnNpdGVEYXRhU3RvcmUoKSk7CisgICAgQVNTRVJUKCFtX3Nlc3Npb25JRC5pc1ZhbGlkKCkg
fHwgbV9zZXNzaW9uSUQgPT0gd2ViUGFnZS53ZWJzaXRlRGF0YVN0b3JlKCkuc2Vzc2lvbklEKCkp
OwogCiAgICAgaWYgKGJlZ2luc1VzaW5nRGF0YVN0b3JlID09IEJlZ2luc1VzaW5nRGF0YVN0b3Jl
OjpZZXMpIHsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9wcm9jZXNzUG9vbCk7Ci0gICAgICAg
IG1fcHJvY2Vzc1Bvb2wtPnBhZ2VCZWdpblVzaW5nV2Vic2l0ZURhdGFTdG9yZSh3ZWJQYWdlLmlk
ZW50aWZpZXIoKSwgd2ViUGFnZS53ZWJzaXRlRGF0YVN0b3JlKCkpOworICAgICAgICBtX3Byb2Nl
c3NQb29sLT5wYWdlQmVnaW5Vc2luZ1dlYnNpdGVEYXRhU3RvcmUod2ViUGFnZS5pZGVudGlmaWVy
KCksIHdlYlBhZ2Uud2Vic2l0ZURhdGFTdG9yZSgpLnNlc3Npb25JRCgpKTsKICAgICB9CiAKICAg
ICBtYXJrUHJvY2Vzc0FzUmVjZW50bHlVc2VkKCk7CkBAIC02MzIsNyArNjM0LDcgQEAgdm9pZCBX
ZWJQcm9jZXNzUHJveHk6OnJlbW92ZVdlYlBhZ2UoV2ViUGFnZVByb3h5JiB3ZWJQYWdlLCBFbmRz
VXNpbmdEYXRhU3RvcmUgZW4KICAgICBBU1NFUlRfVU5VU0VEKHJlbW92ZWRQYWdlLCByZW1vdmVk
UGFnZSA9PSAmd2ViUGFnZSk7CiAKICAgICBpZiAoZW5kc1VzaW5nRGF0YVN0b3JlID09IEVuZHNV
c2luZ0RhdGFTdG9yZTo6WWVzKQotICAgICAgICBtX3Byb2Nlc3NQb29sLT5wYWdlRW5kVXNpbmdX
ZWJzaXRlRGF0YVN0b3JlKHdlYlBhZ2UuaWRlbnRpZmllcigpLCB3ZWJQYWdlLndlYnNpdGVEYXRh
U3RvcmUoKSk7CisgICAgICAgIG1fcHJvY2Vzc1Bvb2wtPnBhZ2VFbmRVc2luZ1dlYnNpdGVEYXRh
U3RvcmUod2ViUGFnZS5pZGVudGlmaWVyKCksIHdlYlBhZ2Uud2Vic2l0ZURhdGFTdG9yZSgpLnNl
c3Npb25JRCgpKTsKIAogICAgIHJlbW92ZVZpc2l0ZWRMaW5rU3RvcmVVc2VyKHdlYlBhZ2Uudmlz
aXRlZExpbmtTdG9yZSgpLCB3ZWJQYWdlLmlkZW50aWZpZXIoKSk7CiAgICAgdXBkYXRlUmVnaXN0
cmF0aW9uV2l0aERhdGFTdG9yZSgpOwpAQCAtODE1LDcgKzgxNyw4IEBAIHZvaWQgV2ViUHJvY2Vz
c1Byb3h5Ojp1cGRhdGVCYWNrRm9yd2FyZEl0ZW0oY29uc3QgQmFja0ZvcndhcmRMaXN0SXRlbVN0
YXRlJiBpdGVtCiAKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpnZXROZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24oTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uOjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKLSAgICB3ZWJzaXRlRGF0YVN0b3JlKCkuZ2V0
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCp0aGlzLCBXVEZNb3ZlKHJlcGx5KSk7CisgICAgaWYg
KGF1dG8qIGRhdGFTdG9yZSA9IFdlYnNpdGVEYXRhU3RvcmU6OmV4aXN0aW5nRGF0YVN0b3JlRm9y
U2Vzc2lvbklEKHNlc3Npb25JRCgpKSkKKyAgICAgICAgZGF0YVN0b3JlLT5nZXROZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24oKnRoaXMsIFdURk1vdmUocmVwbHkpKTsKIH0KIAogI2lmIEVOQUJMRShH
UFVfUFJPQ0VTUykKQEAgLTE3MDQsMTAgKzE3MDcsMTIgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6
OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yTWFpbkZyYW1lKGNvbnN0IFVSTCYgdXJsKQogCiAg
ICAgYXV0byByZWdpc3RyYWJsZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHsg
dXJsIH07CiAgICAgaWYgKG1fcmVnaXN0cmFibGVEb21haW4gJiYgKm1fcmVnaXN0cmFibGVEb21h
aW4gIT0gcmVnaXN0cmFibGVEb21haW4pIHsKLSAgICAgICAgaWYgKGlzUnVubmluZ1NlcnZpY2VX
b3JrZXJzKCkpCi0gICAgICAgICAgICB3ZWJzaXRlRGF0YVN0b3JlKCkubmV0d29ya1Byb2Nlc3Mo
KS50ZXJtaW5hdGVSZW1vdGVXb3JrZXJDb250ZXh0Q29ubmVjdGlvbldoZW5Qb3NzaWJsZShSZW1v
dGVXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyLCB3ZWJzaXRlRGF0YVN0b3JlKCkuc2Vzc2lvbklE
KCksICptX3JlZ2lzdHJhYmxlRG9tYWluLCBjb3JlUHJvY2Vzc0lkZW50aWZpZXIoKSk7Ci0gICAg
ICAgIGlmIChpc1J1bm5pbmdTaGFyZWRXb3JrZXJzKCkpCi0gICAgICAgICAgICB3ZWJzaXRlRGF0
YVN0b3JlKCkubmV0d29ya1Byb2Nlc3MoKS50ZXJtaW5hdGVSZW1vdGVXb3JrZXJDb250ZXh0Q29u
bmVjdGlvbldoZW5Qb3NzaWJsZShSZW1vdGVXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIsIHdlYnNp
dGVEYXRhU3RvcmUoKS5zZXNzaW9uSUQoKSwgKm1fcmVnaXN0cmFibGVEb21haW4sIGNvcmVQcm9j
ZXNzSWRlbnRpZmllcigpKTsKKyAgICAgICAgYXV0byogZGF0YVN0b3JlID0gV2Vic2l0ZURhdGFT
dG9yZTo6ZXhpc3RpbmdEYXRhU3RvcmVGb3JTZXNzaW9uSUQoc2Vzc2lvbklEKCkpOworICAgICAg
ICBpZiAoZGF0YVN0b3JlICYmIGlzUnVubmluZ1NlcnZpY2VXb3JrZXJzKCkpCisgICAgICAgICAg
ICBkYXRhU3RvcmUtPm5ldHdvcmtQcm9jZXNzKCkudGVybWluYXRlUmVtb3RlV29ya2VyQ29udGV4
dENvbm5lY3Rpb25XaGVuUG9zc2libGUoUmVtb3RlV29ya2VyVHlwZTo6U2VydmljZVdvcmtlciwg
c2Vzc2lvbklEKCksICptX3JlZ2lzdHJhYmxlRG9tYWluLCBjb3JlUHJvY2Vzc0lkZW50aWZpZXIo
KSk7CisKKyAgICAgICAgaWYgKGRhdGFTdG9yZSAmJiBpc1J1bm5pbmdTaGFyZWRXb3JrZXJzKCkp
CisgICAgICAgICAgICBkYXRhU3RvcmUtPm5ldHdvcmtQcm9jZXNzKCkudGVybWluYXRlUmVtb3Rl
V29ya2VyQ29udGV4dENvbm5lY3Rpb25XaGVuUG9zc2libGUoUmVtb3RlV29ya2VyVHlwZTo6U2hh
cmVkV29ya2VyLCBzZXNzaW9uSUQoKSwgKm1fcmVnaXN0cmFibGVEb21haW4sIGNvcmVQcm9jZXNz
SWRlbnRpZmllcigpKTsKIAogICAgICAgICAvLyBOdWxsIG91dCByZWdpc3RyYWJsZSBkb21haW4g
c2luY2UgdGhpcyBwcm9jZXNzIGhhcyBub3cgYmVlbiB1c2VkIGZvciBzZXZlcmFsIGRvbWFpbnMu
CiAgICAgICAgIG1fcmVnaXN0cmFibGVEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biB7IH07CkBAIC0xNzU0LDggKzE3NTksNyBAQCBXZWJQcm9jZXNzUG9vbCYgV2ViUHJvY2Vzc1By
b3h5Ojpwcm9jZXNzUG9vbCgpIGNvbnN0CiAKIFBBTDo6U2Vzc2lvbklEIFdlYlByb2Nlc3NQcm94
eTo6c2Vzc2lvbklEKCkgY29uc3QKIHsKLSAgICBBU1NFUlQobV93ZWJzaXRlRGF0YVN0b3JlKTsK
LSAgICByZXR1cm4gbV93ZWJzaXRlRGF0YVN0b3JlLT5zZXNzaW9uSUQoKTsKKyAgICByZXR1cm4g
bV9zZXNzaW9uSUQ7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVTcGVlY2hSZWNv
Z25pdGlvblNlcnZlcihTcGVlY2hSZWNvZ25pdGlvblNlcnZlcklkZW50aWZpZXIgaWRlbnRpZmll
cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKaW5kZXggMDU1NWQz
ZDU3NjM0NWJiMjQ5NjEwODU4ZDY5NDY2ZTQ5MTU5ZjFhYy4uZjg2ZjQzN2RkNTQzOTUwZWUzODM4
NGMxNzBjZjJhMzFjOTFhNWI4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5LmgKQEAgLTE2Nyw3ICsxNjcsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBlbmFibGVSZW1v
dGVXb3JrZXJzKFJlbW90ZVdvcmtlclR5cGUsIGNvbnN0IFVzZXJDb250ZW50Q29udHJvbGxlcklk
ZW50aWZpZXImKTsKICAgICB2b2lkIGRpc2FibGVSZW1vdGVXb3JrZXJzKFJlbW90ZVdvcmtlclR5
cGUpOwogCi0gICAgV2Vic2l0ZURhdGFTdG9yZSYgd2Vic2l0ZURhdGFTdG9yZSgpIGNvbnN0IHsg
QVNTRVJUKG1fd2Vic2l0ZURhdGFTdG9yZSk7IHJldHVybiAqbV93ZWJzaXRlRGF0YVN0b3JlOyB9
CiAgICAgdm9pZCBzZXRXZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmUmKTsKICAgICAK
ICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdDsKQEAgLTYxNCw3ICs2MTMsNyBA
QCBwcml2YXRlOgogCiAgICAgVmlzaWJsZVdlYlBhZ2VDb3VudGVyIG1fdmlzaWJsZVBhZ2VDb3Vu
dGVyOwogCi0gICAgUmVmUHRyPFdlYnNpdGVEYXRhU3RvcmU+IG1fd2Vic2l0ZURhdGFTdG9yZTsK
KyAgICBQQUw6OlNlc3Npb25JRCBtX3Nlc3Npb25JRCB7IDAgfTsKIAogICAgIGJvb2wgbV9pc1Vu
ZGVyTWVtb3J5UHJlc3N1cmUgeyBmYWxzZSB9OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457092</attachid>
            <date>2022-04-08 10:46:49 -0700</date>
            <delta_ts>2022-04-08 12:39:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238892-20220408104645.patch</filename>
            <type>text/plain</type>
            <size>35624</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyNjA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDU0MzBlMWI2MTY1NGE0YzIw
YjEzMDUxY2VhNjg0ODI0OGI2ZGY0OWEuLmU0MmQ4Y2M3ODc1NGU5YWE1YmQ4YTY0M2E1ZTc4NzMx
NGI3NmQ4ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjQgQEAKKzIwMjItMDQtMDggIFNpaHVpIExp
dSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViUHJvY2Vzc1Byb3h5IHNob3Vs
ZCBub3QgaG9sZCBXZWJzaXRlRGF0YVN0b3JlIGFsaXZlIHdoZW4gdGhlcmUgaXMgbm8gcGFnZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4ODkyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2l0aCBvdXIg
Y3VycmVudCBpbXBsZW1lbnRhdGlvbiwgV2ViUHJvY2Vzc1Byb3h5IGNhbiBvdXRsaXZlIFdlYlBh
Z2VQcm94eS4gQW5kIGFzIFdlYlByb2Nlc3NQcm94eSBob2xkcyBzdHJvbmcKKyAgICAgICAgcmVm
ZXJlbmNlIHRvIFdlYnNpdGVEYXRhU3RvcmUsIFdlYnNpdGVEYXRhU3RvcmUgd2lsbCBiZSBrZXB0
IGFsaXZlIGV2ZW4gaXQncyBub3QgdXNlZCBieSBhbnkgcGFnZS4KKworICAgICAgICAqIFVJUHJv
Y2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVUHJvY2Vz
c1Byb3h5OjpnZXRHUFVQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL1By
b3Zpc2lvbmFsUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UHJvdmlzaW9uYWxQYWdl
UHJveHk6OlByb3Zpc2lvbmFsUGFnZVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UHJvdmlzaW9u
YWxQYWdlUHJveHk6On5Qcm92aXNpb25hbFBhZ2VQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNz
L1Byb3Zpc2lvbmFsUGFnZVByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OlByb3Zpc2lvbmFsUGFn
ZVByb3h5Ojp3ZWJzaXRlRGF0YVN0b3JlIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvU3Vz
cGVuZGVkUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3VzcGVuZGVkUGFnZVByb3h5
OjpmaW5kUmV1c2FibGVTdXNwZW5kZWRQYWdlUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYkJhY2tGb3J3YXJkQ2FjaGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2Fy
ZENhY2hlOjpyZW1vdmVFbnRyaWVzRm9yU2Vzc2lvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YkxvY2tSZWdpc3RyeVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTG9ja1JlZ2lzdHJ5
UHJveHk6OnJlcXVlc3RMb2NrKToKKyAgICAgICAgKFdlYktpdDo6V2ViTG9ja1JlZ2lzdHJ5UHJv
eHk6OnJlbGVhc2VMb2NrKToKKyAgICAgICAgKFdlYktpdDo6V2ViTG9ja1JlZ2lzdHJ5UHJveHk6
OmFib3J0TG9ja1JlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2NrUmVnaXN0cnlQcm94
eTo6c25hcHNob3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2NrUmVnaXN0cnlQcm94eTo6Y2xp
ZW50SXNHb2luZ0F3YXkpOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2NrUmVnaXN0cnlQcm94eTo6
cHJvY2Vzc0RpZEV4aXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnN3YXBUb1Byb3Zpc2lvbmFsUGFnZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y29tbWl0UHJvdmlzaW9uYWxQYWdlKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc0NhY2hlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc0NhY2hlOjpjYW5DYWNoZVByb2Nlc3MgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzQ2FjaGU6OnRha2VQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzc0NhY2hlOjpjbGVhckFsbFByb2Nlc3Nlc0ZvclNlc3Npb24pOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzQ2FjaGU6OkNhY2hlZFByb2Nlc3M6OkNhY2hlZFByb2Nlc3MpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3NQb29sOjplc3RhYmxpc2hSZW1vdGVXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29y
a1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cHJvY2Vzc0ZvclJl
Z2lzdHJhYmxlRG9tYWluKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmNyZWF0
ZVdlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cGFnZUJlZ2luVXNp
bmdXZWJzaXRlRGF0YVN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnBh
Z2VFbmRVc2luZ1dlYnNpdGVEYXRhU3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
UG9vbDo6aGFzUGFnZXNVc2luZ1dlYnNpdGVEYXRhU3RvcmUgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUG9vbDo6cHJvY2Vzc0Zvck5hdmlnYXRpb25JbnRlcm5hbCk6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6V2Vi
UHJvY2Vzc1Byb3h5KToKKyAgICAgICAgKFdlYktpdDo6bV93ZWJMb2NrUmVnaXN0cnkpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnNldFdlYnNpdGVEYXRhU3RvcmUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmlzRHVtbXlQcm9jZXNzUHJveHkgY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZVJlZ2lzdHJhdGlvbldp
dGhEYXRhU3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmFkZEV4aXN0
aW5nV2ViUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6cmVtb3ZlV2Vi
UGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6Z2V0TmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpkaWRTdGFy
dFByb3Zpc2lvbmFsTG9hZEZvck1haW5GcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQcm94eTo6c2Vzc2lvbklEIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6d2Vic2l0ZURhdGFT
dG9yZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vz
c1Byb3h5R0xpYi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6cGxhdGZv
cm1HZXRMYXVuY2hPcHRpb25zKToKKwogMjAyMi0wNC0wOCAgQ2FybG9zIEdhcmNpYSBDYW1wb3Mg
IDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gUmVtb3RlSW5zcGVjdG9yOiB1
cGRhdGUgdGFyZ2V0IGxpc3QgcGFnZSBjb250ZW50cyBvbiBjaGFuZ2UgaW5zdGVhZCBvZiByZWxv
YWRpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNz
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5j
cHAKaW5kZXggODNhZjFlNTVkZGY3NDg4MjM5Zjg2OTE5Mjc3MjBhYjZhODYzMTk3ZC4uYjYzMThk
N2RhODgwY2IwMzlkMWFhOGZiNGE1NjljZmU2NWUxOTNiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5jcHAKQEAgLTM4Nyw3ICszODcsOCBAQCB2
b2lkIEdQVVByb2Nlc3NQcm94eTo6cHJvY2Vzc1dpbGxTaHV0RG93bihJUEM6OkNvbm5lY3Rpb24m
IGNvbm5lY3Rpb24pCiAKIHZvaWQgR1BVUHJvY2Vzc1Byb3h5OjpnZXRHUFVQcm9jZXNzQ29ubmVj
dGlvbihXZWJQcm9jZXNzUHJveHkmIHdlYlByb2Nlc3NQcm94eSwgY29uc3QgR1BVUHJvY2Vzc0Nv
bm5lY3Rpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5
OjpHZXRHUFVQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7Ci0gICAg
YWRkU2Vzc2lvbih3ZWJQcm9jZXNzUHJveHkud2Vic2l0ZURhdGFTdG9yZSgpKTsKKyAgICBpZiAo
YXV0byogZGF0YVN0b3JlID0gV2Vic2l0ZURhdGFTdG9yZTo6ZXhpc3RpbmdEYXRhU3RvcmVGb3JT
ZXNzaW9uSUQod2ViUHJvY2Vzc1Byb3h5LnNlc3Npb25JRCgpKSkKKyAgICAgICAgYWRkU2Vzc2lv
bigqZGF0YVN0b3JlKTsKIAogICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAg
LSBHUFVQcm9jZXNzUHJveHkgaXMgdGFraW5nIGEgYmFja2dyb3VuZCBhc3NlcnRpb24gYmVjYXVz
ZSBhIHdlYiBwcm9jZXNzIGlzIHJlcXVlc3RpbmcgYSBjb25uZWN0aW9uIiwgdGhpcyk7CiAgICAg
c3RhcnRSZXNwb25zaXZlbmVzc1RpbWVyKFVzZUxhenlTdG9wOjpObyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKaW5kZXggODhiMmVhODM4
NjcyYWM3MTg2NWViNjliY2FmNWZiMjJjYTAwYTg3Zi4uOWI0NGQ1ODExN2ZhZDE3YzNlOWRmMTNi
NGQyYWQyYzVjN2M2YzhhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJv
dmlzaW9uYWxQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zp
c2lvbmFsUGFnZVByb3h5LmNwcApAQCAtODMsOCArODMsMTEgQEAgUHJvdmlzaW9uYWxQYWdlUHJv
eHk6OlByb3Zpc2lvbmFsUGFnZVByb3h5KFdlYlBhZ2VQcm94eSYgcGFnZSwgUmVmPFdlYlByb2Nl
c3NQcm8KICAgICBtX3Byb2Nlc3MtPmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fd2ViUGFnZUlELCAqdGhpcyk7CiAgICAg
bV9wcm9jZXNzLT5hZGRQcm92aXNpb25hbFBhZ2VQcm94eSgqdGhpcyk7CiAKLSAgICBpZiAoJm1f
cHJvY2Vzcy0+d2Vic2l0ZURhdGFTdG9yZSgpICE9ICZtX3BhZ2Uud2Vic2l0ZURhdGFTdG9yZSgp
KQotICAgICAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkucGFnZUJlZ2luVXNpbmdXZWJzaXRl
RGF0YVN0b3JlKG1fcGFnZS5pZGVudGlmaWVyKCksIG1fcHJvY2Vzcy0+d2Vic2l0ZURhdGFTdG9y
ZSgpKTsKKyAgICBhdXRvIHByb2Nlc3NTZXNzaW9uSUQgPSBtX3Byb2Nlc3MtPnNlc3Npb25JRCgp
OworICAgIGlmIChwcm9jZXNzU2Vzc2lvbklEICE9IG1fcGFnZS53ZWJzaXRlRGF0YVN0b3JlKCku
c2Vzc2lvbklEKCkpCisgICAgICAgIG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5wYWdlQmVnaW5V
c2luZ1dlYnNpdGVEYXRhU3RvcmUobV9wYWdlLmlkZW50aWZpZXIoKSwgcHJvY2Vzc1Nlc3Npb25J
RCk7CisgICAgbV93ZWJzaXRlRGF0YVN0b3JlID0gV2Vic2l0ZURhdGFTdG9yZTo6ZXhpc3RpbmdE
YXRhU3RvcmVGb3JTZXNzaW9uSUQocHJvY2Vzc1Nlc3Npb25JRCk7CisgICAgQVNTRVJUKG1fd2Vi
c2l0ZURhdGFTdG9yZSk7CiAKICAgICAvLyBJZiB3ZSBhcmUgcmVhdHRhY2hpbmcgdG8gYSBTdXNw
ZW5kZWRQYWdlLCB0aGVuIHRoZSBXZWJQcm9jZXNzJyBXZWJQYWdlIGFscmVhZHkgZXhpc3RzIGFu
ZAogICAgIC8vIFdlYlBhZ2VQcm94eTo6ZGlkQ3JlYXRlTWFpbkZyYW1lKCkgd2lsbCBub3QgYmUg
Y2FsbGVkIHRvIGluaXRpYWxpemUgbV9tYWluRnJhbWUuIEluIHN1Y2gKQEAgLTExMiw4ICsxMTUs
OCBAQCBQcm92aXNpb25hbFBhZ2VQcm94eTo6flByb3Zpc2lvbmFsUGFnZVByb3h5KCkKICAgICBp
ZiAoIW1fd2FzQ29tbWl0dGVkKSB7CiAgICAgICAgIG1fcGFnZS5pbnNwZWN0b3JDb250cm9sbGVy
KCkud2lsbERlc3Ryb3lQcm92aXNpb25hbFBhZ2UoKnRoaXMpOwogCi0gICAgICAgIGlmICgmbV9w
cm9jZXNzLT53ZWJzaXRlRGF0YVN0b3JlKCkgIT0gJm1fcGFnZS53ZWJzaXRlRGF0YVN0b3JlKCkp
Ci0gICAgICAgICAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkucGFnZUVuZFVzaW5nV2Vic2l0
ZURhdGFTdG9yZShtX3BhZ2UuaWRlbnRpZmllcigpLCBtX3Byb2Nlc3MtPndlYnNpdGVEYXRhU3Rv
cmUoKSk7CisgICAgICAgIGlmIChtX3Byb2Nlc3MtPnNlc3Npb25JRCgpICE9IG1fcGFnZS53ZWJz
aXRlRGF0YVN0b3JlKCkuc2Vzc2lvbklEKCkpCisgICAgICAgICAgICBtX3Byb2Nlc3MtPnByb2Nl
c3NQb29sKCkucGFnZUVuZFVzaW5nV2Vic2l0ZURhdGFTdG9yZShtX3BhZ2UuaWRlbnRpZmllcigp
LCBtX3Byb2Nlc3MtPnNlc3Npb25JRCgpKTsKIAogICAgICAgICBtX3Byb2Nlc3MtPnJlbW92ZU1l
c3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUGFnZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1l
KCksIG1fd2ViUGFnZUlEKTsKICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2xvc2Uo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQ
cm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaApp
bmRleCAyMmQyYmIxMmNhNmFkNThmMmVmN2I3YTk5NTkzYjNmMDZlNjRhODhmLi44ODM1MDBmYWJh
MDM2NjhjNjMzM2NjYzljOTUxNjE4ZGNjYzM5NDRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmgKQEAgLTYxLDYgKzYxLDcgQEAgY2xhc3MgVXNl
ckRhdGE7CiBjbGFzcyBXZWJGcmFtZVByb3h5OwogY2xhc3MgV2ViUGFnZVByb3h5OwogY2xhc3Mg
V2ViUHJvY2Vzc1Byb3h5OworY2xhc3MgV2Vic2l0ZURhdGFTdG9yZTsKIHN0cnVjdCBGcmFtZUlu
Zm9EYXRhOwogc3RydWN0IE5hdmlnYXRpb25BY3Rpb25EYXRhOwogc3RydWN0IFVSTFNjaGVtZVRh
c2tQYXJhbWV0ZXJzOwpAQCAtODMsNiArODQsNyBAQCBwdWJsaWM6CiAgICAgUHJvY2Vzc1N3YXBS
ZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9wcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50OyB9CiAgICAgdWludDY0X3QgbmF2
aWdhdGlvbklEKCkgY29uc3QgeyByZXR1cm4gbV9uYXZpZ2F0aW9uSUQ7IH0KICAgICBjb25zdCBV
UkwmIHByb3Zpc2lvbmFsVVJMKCkgY29uc3QgeyByZXR1cm4gbV9wcm92aXNpb25hbExvYWRVUkw7
IH0KKyAgICBXZWJzaXRlRGF0YVN0b3JlKiB3ZWJzaXRlRGF0YVN0b3JlKCkgY29uc3QgeyByZXR1
cm4gbV93ZWJzaXRlRGF0YVN0b3JlLmdldCgpOyB9CiAKICAgICBib29sIGlzUHJvY2Vzc1N3YXBw
aW5nT25OYXZpZ2F0aW9uUmVzcG9uc2UoKSBjb25zdCB7IHJldHVybiBtX2lzUHJvY2Vzc1N3YXBw
aW5nT25OYXZpZ2F0aW9uUmVzcG9uc2U7IH0KIApAQCAtMTYzLDYgKzE2NSw3IEBAIHByaXZhdGU6
CiAgICAgV2ViUGFnZVByb3h5JiBtX3BhZ2U7CiAgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIg
bV93ZWJQYWdlSUQ7CiAgICAgUmVmPFdlYlByb2Nlc3NQcm94eT4gbV9wcm9jZXNzOworICAgIFJl
ZlB0cjxXZWJzaXRlRGF0YVN0b3JlPiBtX3dlYnNpdGVEYXRhU3RvcmU7CiAgICAgc3RkOjp1bmlx
dWVfcHRyPERyYXdpbmdBcmVhUHJveHk+IG1fZHJhd2luZ0FyZWE7CiAgICAgUmVmUHRyPFdlYkZy
YW1lUHJveHk+IG1fbWFpbkZyYW1lOwogICAgIHVpbnQ2NF90IG1fbmF2aWdhdGlvbklEOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAKaW5kZXggY2Ni
ZDYxMjg3ODUwZTczMTY5MWEzMzBjNGUzMGFkM2EzNmUxZjA3ZC4uNjJmMWRhMzUwNzY4OTUxNTQw
YzhlMDFmNDFjZjgzNjExZmEzYWUxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9T
dXNwZW5kZWRQYWdlUHJveHkuY3BwCkBAIC01Myw3ICs1Myw3IEBAIFJlZlB0cjxXZWJQcm9jZXNz
UHJveHk+IFN1c3BlbmRlZFBhZ2VQcm94eTo6ZmluZFJldXNhYmxlU3VzcGVuZGVkUGFnZVByb2Nl
c3MoV2ViCiB7CiAgICAgZm9yIChhdXRvKiBzdXNwZW5kZWRQYWdlIDogYWxsU3VzcGVuZGVkUGFn
ZXMoKSkgewogICAgICAgICBhdXRvJiBwcm9jZXNzID0gc3VzcGVuZGVkUGFnZS0+cHJvY2Vzcygp
OwotICAgICAgICBpZiAoJnByb2Nlc3MucHJvY2Vzc1Bvb2woKSA9PSAmcHJvY2Vzc1Bvb2wgJiYg
cHJvY2Vzcy5yZWdpc3RyYWJsZURvbWFpbigpID09IHJlZ2lzdHJhYmxlRG9tYWluICYmICZwcm9j
ZXNzLndlYnNpdGVEYXRhU3RvcmUoKSA9PSAmZGF0YVN0b3JlICYmIHByb2Nlc3MuY3Jvc3NPcmln
aW5Nb2RlKCkgIT0gQ3Jvc3NPcmlnaW5Nb2RlOjpJc29sYXRlZCAmJiBwcm9jZXNzLmNhcHRpdmVQ
b3J0YWxNb2RlKCkgPT0gY2FwdGl2ZVBvcnRhbE1vZGUpCisgICAgICAgIGlmICgmcHJvY2Vzcy5w
cm9jZXNzUG9vbCgpID09ICZwcm9jZXNzUG9vbCAmJiBwcm9jZXNzLnJlZ2lzdHJhYmxlRG9tYWlu
KCkgPT0gcmVnaXN0cmFibGVEb21haW4gJiYgcHJvY2Vzcy5zZXNzaW9uSUQoKSA9PSBkYXRhU3Rv
cmUuc2Vzc2lvbklEKCkgJiYgcHJvY2Vzcy5jcm9zc09yaWdpbk1vZGUoKSAhPSBDcm9zc09yaWdp
bk1vZGU6Oklzb2xhdGVkICYmIHByb2Nlc3MuY2FwdGl2ZVBvcnRhbE1vZGUoKSA9PSBjYXB0aXZl
UG9ydGFsTW9kZSkKICAgICAgICAgICAgIHJldHVybiAmcHJvY2VzczsKICAgICB9CiAgICAgcmV0
dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNr
Rm9yd2FyZENhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJk
Q2FjaGUuY3BwCmluZGV4IDY0YTFhOWY2OWM2YzQ2MjI0NDE3YmRhYzIwY2MwZTgxNDNmNWEwMzQu
LmU1N2Q3OTRjYWUwODVlMzYyZWE4YmJiYTIxZGJmZDFkZjIwY2MyYmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkQ2FjaGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkQ2FjaGUuY3BwCkBAIC0xMzQsNyArMTM0
LDcgQEAgdm9pZCBXZWJCYWNrRm9yd2FyZENhY2hlOjpyZW1vdmVFbnRyaWVzRm9yUHJvY2VzcyhX
ZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MpCiB2b2lkIFdlYkJhY2tGb3J3YXJkQ2FjaGU6OnJlbW92
ZUVudHJpZXNGb3JTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKICAgICByZW1v
dmVFbnRyaWVzTWF0Y2hpbmcoW3Nlc3Npb25JRF0oYXV0byYgaXRlbSkgewotICAgICAgICByZXR1
cm4gaXRlbS5iYWNrRm9yd2FyZENhY2hlRW50cnkoKS0+cHJvY2VzcygpLndlYnNpdGVEYXRhU3Rv
cmUoKS5zZXNzaW9uSUQoKSA9PSBzZXNzaW9uSUQ7CisgICAgICAgIHJldHVybiBpdGVtLmJhY2tG
b3J3YXJkQ2FjaGVFbnRyeSgpLT5wcm9jZXNzKCkuc2Vzc2lvbklEKCkgPT0gc2Vzc2lvbklEOwog
ICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJMb2Nr
UmVnaXN0cnlQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJMb2NrUmVnaXN0
cnlQcm94eS5jcHAKaW5kZXggZGU4NzkwZWMxZjIwMGRmNTE0YjY0ZDU0NTkyNTY0OGUzMTgyMmMy
Ny4uYzgzZWI2NTc1ODg4ZWJmNDdmMTc4ZWYxNDJlMjNiZWY5MDlhZmZmMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViTG9ja1JlZ2lzdHJ5UHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkxvY2tSZWdpc3RyeVByb3h5LmNwcApAQCAtMzIsNiAr
MzIsNyBAQAogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgogI2luY2x1ZGUgIldlYnNpdGVE
YXRhU3RvcmUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1dlYkxvY2tJZGVudGlmaWVyLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9XZWJMb2NrTWFuYWdlclNuYXBzaG90Lmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9XZWJMb2NrUmVnaXN0cnkuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC01NSw0NCArNTYs
NTggQEAgdm9pZCBXZWJMb2NrUmVnaXN0cnlQcm94eTo6cmVxdWVzdExvY2soV2ViQ29yZTo6Q2xp
ZW50T3JpZ2luJiYgY2xpZW50T3JpZ2luLCBXZWIKICAgICBNRVNTQUdFX0NIRUNLKGNsaWVudElE
LnByb2Nlc3NJZGVudGlmaWVyKCkgPT0gbV9wcm9jZXNzLmNvcmVQcm9jZXNzSWRlbnRpZmllcigp
KTsKICAgICBtX2hhc0V2ZXJSZXF1ZXN0ZWRMb2NrcyA9IHRydWU7CiAKLSAgICBtX3Byb2Nlc3Mu
d2Vic2l0ZURhdGFTdG9yZSgpLndlYkxvY2tSZWdpc3RyeSgpLnJlcXVlc3RMb2NrKFdURk1vdmUo
Y2xpZW50T3JpZ2luKSwgbG9ja0lkZW50aWZpZXIsIGNsaWVudElELCBXVEZNb3ZlKG5hbWUpLCBs
b2NrTW9kZSwgc3RlYWwsIGlmQXZhaWxhYmxlLCBbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMg
fSwgbG9ja0lkZW50aWZpZXIsIGNsaWVudElEXShib29sIHN1Y2Nlc3MpIHsKLSAgICAgICAgaWYg
KHdlYWtUaGlzKQotICAgICAgICAgICAgd2Vha1RoaXMtPm1fcHJvY2Vzcy5zZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVXZWJMb2NrUmVnaXN0cnk6OkRpZENvbXBsZXRlTG9ja1JlcXVlc3QobG9ja0lkZW50
aWZpZXIsIGNsaWVudElELCBzdWNjZXNzKSwgMCk7Ci0gICAgfSwgW3dlYWtUaGlzID0gV2Vha1B0
ciB7ICp0aGlzIH0sIGxvY2tJZGVudGlmaWVyLCBjbGllbnRJRF0gewotICAgICAgICBpZiAod2Vh
a1RoaXMpCi0gICAgICAgICAgICB3ZWFrVGhpcy0+bV9wcm9jZXNzLnNlbmQoTWVzc2FnZXM6OlJl
bW90ZVdlYkxvY2tSZWdpc3RyeTo6RGlkU3RlYWxMb2NrKGxvY2tJZGVudGlmaWVyLCBjbGllbnRJ
RCksIDApOwotICAgIH0pOworICAgIGlmIChhdXRvKiBkYXRhU3RvcmUgPSBXZWJzaXRlRGF0YVN0
b3JlOjpleGlzdGluZ0RhdGFTdG9yZUZvclNlc3Npb25JRChtX3Byb2Nlc3Muc2Vzc2lvbklEKCkp
KSB7CisgICAgICAgIGRhdGFTdG9yZS0+d2ViTG9ja1JlZ2lzdHJ5KCkucmVxdWVzdExvY2soV1RG
TW92ZShjbGllbnRPcmlnaW4pLCBsb2NrSWRlbnRpZmllciwgY2xpZW50SUQsIFdURk1vdmUobmFt
ZSksIGxvY2tNb2RlLCBzdGVhbCwgaWZBdmFpbGFibGUsIFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAq
dGhpcyB9LCBsb2NrSWRlbnRpZmllciwgY2xpZW50SURdKGJvb2wgc3VjY2VzcykgeworICAgICAg
ICAgICAgaWYgKHdlYWtUaGlzKQorICAgICAgICAgICAgICAgIHdlYWtUaGlzLT5tX3Byb2Nlc3Mu
c2VuZChNZXNzYWdlczo6UmVtb3RlV2ViTG9ja1JlZ2lzdHJ5OjpEaWRDb21wbGV0ZUxvY2tSZXF1
ZXN0KGxvY2tJZGVudGlmaWVyLCBjbGllbnRJRCwgc3VjY2VzcyksIDApOworICAgICAgICB9LCBb
d2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgbG9ja0lkZW50aWZpZXIsIGNsaWVudElEXSB7
CisgICAgICAgICAgICBpZiAod2Vha1RoaXMpCisgICAgICAgICAgICAgICAgd2Vha1RoaXMtPm1f
cHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVXZWJMb2NrUmVnaXN0cnk6OkRpZFN0ZWFsTG9j
ayhsb2NrSWRlbnRpZmllciwgY2xpZW50SUQpLCAwKTsKKyAgICAgICAgfSk7CisgICAgfSBlbHNl
CisgICAgICAgIG1fcHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVXZWJMb2NrUmVnaXN0cnk6
OkRpZENvbXBsZXRlTG9ja1JlcXVlc3QobG9ja0lkZW50aWZpZXIsIGNsaWVudElELCBmYWxzZSks
IDApOwogfQogCiB2b2lkIFdlYkxvY2tSZWdpc3RyeVByb3h5OjpyZWxlYXNlTG9jayhXZWJDb3Jl
OjpDbGllbnRPcmlnaW4mJiBjbGllbnRPcmlnaW4sIFdlYkNvcmU6OldlYkxvY2tJZGVudGlmaWVy
IGxvY2tJZGVudGlmaWVyLCBXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmll
ciBjbGllbnRJRCwgU3RyaW5nJiYgbmFtZSkKIHsKICAgICBNRVNTQUdFX0NIRUNLKGxvY2tJZGVu
dGlmaWVyLnByb2Nlc3NJZGVudGlmaWVyKCkgPT0gbV9wcm9jZXNzLmNvcmVQcm9jZXNzSWRlbnRp
ZmllcigpKTsKICAgICBNRVNTQUdFX0NIRUNLKGNsaWVudElELnByb2Nlc3NJZGVudGlmaWVyKCkg
PT0gbV9wcm9jZXNzLmNvcmVQcm9jZXNzSWRlbnRpZmllcigpKTsKLSAgICBtX3Byb2Nlc3Mud2Vi
c2l0ZURhdGFTdG9yZSgpLndlYkxvY2tSZWdpc3RyeSgpLnJlbGVhc2VMb2NrKFdURk1vdmUoY2xp
ZW50T3JpZ2luKSwgbG9ja0lkZW50aWZpZXIsIGNsaWVudElELCBXVEZNb3ZlKG5hbWUpKTsKKyAg
ICBpZiAoYXV0byogZGF0YVN0b3JlID0gV2Vic2l0ZURhdGFTdG9yZTo6ZXhpc3RpbmdEYXRhU3Rv
cmVGb3JTZXNzaW9uSUQobV9wcm9jZXNzLnNlc3Npb25JRCgpKSkKKyAgICAgICAgZGF0YVN0b3Jl
LT53ZWJMb2NrUmVnaXN0cnkoKS5yZWxlYXNlTG9jayhXVEZNb3ZlKGNsaWVudE9yaWdpbiksIGxv
Y2tJZGVudGlmaWVyLCBjbGllbnRJRCwgV1RGTW92ZShuYW1lKSk7CiB9CiAKIHZvaWQgV2ViTG9j
a1JlZ2lzdHJ5UHJveHk6OmFib3J0TG9ja1JlcXVlc3QoV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYg
Y2xpZW50T3JpZ2luLCBXZWJDb3JlOjpXZWJMb2NrSWRlbnRpZmllciBsb2NrSWRlbnRpZmllciwg
V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIgY2xpZW50SUQsIFN0cmlu
ZyYmIG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgTUVTU0FHRV9DSEVDSyhsb2NrSWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmll
cigpID09IG1fcHJvY2Vzcy5jb3JlUHJvY2Vzc0lkZW50aWZpZXIoKSk7CiAgICAgTUVTU0FHRV9D
SEVDSyhjbGllbnRJRC5wcm9jZXNzSWRlbnRpZmllcigpID09IG1fcHJvY2Vzcy5jb3JlUHJvY2Vz
c0lkZW50aWZpZXIoKSk7Ci0gICAgbV9wcm9jZXNzLndlYnNpdGVEYXRhU3RvcmUoKS53ZWJMb2Nr
UmVnaXN0cnkoKS5hYm9ydExvY2tSZXF1ZXN0KFdURk1vdmUoY2xpZW50T3JpZ2luKSwgbG9ja0lk
ZW50aWZpZXIsIGNsaWVudElELCBXVEZNb3ZlKG5hbWUpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CisgICAgaWYgKGF1dG8qIGRhdGFTdG9yZSA9IFdlYnNpdGVEYXRhU3RvcmU6OmV4aXN0
aW5nRGF0YVN0b3JlRm9yU2Vzc2lvbklEKG1fcHJvY2Vzcy5zZXNzaW9uSUQoKSkpCisgICAgICAg
IGRhdGFTdG9yZS0+d2ViTG9ja1JlZ2lzdHJ5KCkuYWJvcnRMb2NrUmVxdWVzdChXVEZNb3ZlKGNs
aWVudE9yaWdpbiksIGxvY2tJZGVudGlmaWVyLCBjbGllbnRJRCwgV1RGTW92ZShuYW1lKSwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIGVsc2UKKyAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoZmFsc2UpOwogfQogCiB2b2lkIFdlYkxvY2tSZWdpc3RyeVByb3h5OjpzbmFwc2hvdChX
ZWJDb3JlOjpDbGllbnRPcmlnaW4mJiBjbGllbnRPcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoV2ViQ29yZTo6V2ViTG9ja01hbmFnZXJTbmFwc2hvdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKLSAgICBtX3Byb2Nlc3Mud2Vic2l0ZURhdGFTdG9yZSgpLndlYkxvY2tSZWdpc3RyeSgp
LnNuYXBzaG90KFdURk1vdmUoY2xpZW50T3JpZ2luKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOworICAgIGlmIChhdXRvKiBkYXRhU3RvcmUgPSBXZWJzaXRlRGF0YVN0b3JlOjpleGlzdGlu
Z0RhdGFTdG9yZUZvclNlc3Npb25JRChtX3Byb2Nlc3Muc2Vzc2lvbklEKCkpKQorICAgICAgICBk
YXRhU3RvcmUtPndlYkxvY2tSZWdpc3RyeSgpLnNuYXBzaG90KFdURk1vdmUoY2xpZW50T3JpZ2lu
KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIGVsc2UKKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoV2ViQ29yZTo6V2ViTG9ja01hbmFnZXJTbmFwc2hvdCB7IH0pOwogfQogCiB2
b2lkIFdlYkxvY2tSZWdpc3RyeVByb3h5OjpjbGllbnRJc0dvaW5nQXdheShXZWJDb3JlOjpDbGll
bnRPcmlnaW4mJiBjbGllbnRPcmlnaW4sIFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJ
ZGVudGlmaWVyIGNsaWVudElEKQogewogICAgIE1FU1NBR0VfQ0hFQ0soY2xpZW50SUQucHJvY2Vz
c0lkZW50aWZpZXIoKSA9PSBtX3Byb2Nlc3MuY29yZVByb2Nlc3NJZGVudGlmaWVyKCkpOwotICAg
IG1fcHJvY2Vzcy53ZWJzaXRlRGF0YVN0b3JlKCkud2ViTG9ja1JlZ2lzdHJ5KCkuY2xpZW50SXNH
b2luZ0F3YXkoV1RGTW92ZShjbGllbnRPcmlnaW4pLCBjbGllbnRJRCk7CisgICAgaWYgKGF1dG8q
IGRhdGFTdG9yZSA9IFdlYnNpdGVEYXRhU3RvcmU6OmV4aXN0aW5nRGF0YVN0b3JlRm9yU2Vzc2lv
bklEKG1fcHJvY2Vzcy5zZXNzaW9uSUQoKSkpCisgICAgICAgIGRhdGFTdG9yZS0+d2ViTG9ja1Jl
Z2lzdHJ5KCkuY2xpZW50SXNHb2luZ0F3YXkoV1RGTW92ZShjbGllbnRPcmlnaW4pLCBjbGllbnRJ
RCk7CiB9CiAKIHZvaWQgV2ViTG9ja1JlZ2lzdHJ5UHJveHk6OnByb2Nlc3NEaWRFeGl0KCkKIHsK
LSAgICBpZiAobV9oYXNFdmVyUmVxdWVzdGVkTG9ja3MpCi0gICAgICAgIG1fcHJvY2Vzcy53ZWJz
aXRlRGF0YVN0b3JlKCkud2ViTG9ja1JlZ2lzdHJ5KCkuY2xpZW50c0FyZUdvaW5nQXdheShtX3By
b2Nlc3MuY29yZVByb2Nlc3NJZGVudGlmaWVyKCkpOworICAgIGlmICghbV9oYXNFdmVyUmVxdWVz
dGVkTG9ja3MpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChhdXRvKiBkYXRhU3RvcmUgPSBX
ZWJzaXRlRGF0YVN0b3JlOjpleGlzdGluZ0RhdGFTdG9yZUZvclNlc3Npb25JRChtX3Byb2Nlc3Mu
c2Vzc2lvbklEKCkpKQorICAgICAgICBkYXRhU3RvcmUtPndlYkxvY2tSZWdpc3RyeSgpLmNsaWVu
dHNBcmVHb2luZ0F3YXkobV9wcm9jZXNzLmNvcmVQcm9jZXNzSWRlbnRpZmllcigpKTsKIH0KIAog
I3VuZGVmIE1FU1NBR0VfQ0hFQ0sKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCmluZGV4IGViZmNjOGI0NTk2NDY3NThiYWMzMmI3MzU1NDYwNWE3YmJiOTJkODAuLmIwY2M5
NDZjNTg1ZWFhNjg1NWYwMGRiNmRkYzc2ZDE2NmYzYzQxNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtOTc4LDcgKzk3OCw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5Ojpzd2FwVG9Qcm92aXNpb25hbFBhZ2Uoc3RkOjp1bmlxdWVfcHRyPFByb3Zpc2lvbmFsUGFn
ZVByb3h5PiBwCiAgICAgbV9wcm9jZXNzID0gcHJvdmlzaW9uYWxQYWdlLT5wcm9jZXNzKCk7CiAg
ICAgbV93ZWJQYWdlSUQgPSBwcm92aXNpb25hbFBhZ2UtPndlYlBhZ2VJRCgpOwogICAgIHBhZ2VD
bGllbnQoKS5kaWRDaGFuZ2VXZWJQYWdlSUQoKTsKLSAgICBtX3dlYnNpdGVEYXRhU3RvcmUgPSBt
X3Byb2Nlc3MtPndlYnNpdGVEYXRhU3RvcmUoKTsKKyAgICBtX3dlYnNpdGVEYXRhU3RvcmUgPSAq
cHJvdmlzaW9uYWxQYWdlLT53ZWJzaXRlRGF0YVN0b3JlKCk7CiAKICNpZiBIQVZFKFZJU0lCSUxJ
VFlfUFJPUEFHQVRJT05fVklFVykKICAgICBtX2NvbnRleHRJREZvclZpc2liaWxpdHlQcm9wYWdh
dGlvbkluV2ViUHJvY2VzcyA9IHByb3Zpc2lvbmFsUGFnZS0+Y29udGV4dElERm9yVmlzaWJpbGl0
eVByb3BhZ2F0aW9uSW5XZWJQcm9jZXNzKCk7CkBAIC0zNjE0LDcgKzM2MTQsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6Y29tbWl0UHJvdmlzaW9uYWxQYWdlKEZyYW1lSWRlbnRpZmllciBmcmFtZUlE
LCBGcmFtZUluZm9EYXRhJgogICAgIHJlbW92ZUFsbE1lc3NhZ2VSZWNlaXZlcnMoKTsKICAgICBh
dXRvKiBuYXZpZ2F0aW9uID0gbmF2aWdhdGlvblN0YXRlKCkubmF2aWdhdGlvbihtX3Byb3Zpc2lv
bmFsUGFnZS0+bmF2aWdhdGlvbklEKCkpOwogICAgIGJvb2wgZGlkU3VzcGVuZFByZXZpb3VzUGFn
ZSA9IG5hdmlnYXRpb24gJiYgIW1fcHJvdmlzaW9uYWxQYWdlLT5pc1Byb2Nlc3NTd2FwcGluZ09u
TmF2aWdhdGlvblJlc3BvbnNlKCkgPyBzdXNwZW5kQ3VycmVudFBhZ2VJZlBvc3NpYmxlKCpuYXZp
Z2F0aW9uLCBtYWluRnJhbWVJREluUHJldmlvdXNQcm9jZXNzLCBtX3Byb3Zpc2lvbmFsUGFnZS0+
cHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCgpLCBzaG91bGREZWxheUNsb3NpbmdVbnRpbEZp
cnN0TGF5ZXJGbHVzaCkgOiBmYWxzZTsKLSAgICBtX3Byb2Nlc3MtPnJlbW92ZVdlYlBhZ2UoKnRo
aXMsIG1fd2Vic2l0ZURhdGFTdG9yZS5wdHIoKSA9PSAmbV9wcm92aXNpb25hbFBhZ2UtPnByb2Nl
c3MoKS53ZWJzaXRlRGF0YVN0b3JlKCkgPyBXZWJQcm9jZXNzUHJveHk6OkVuZHNVc2luZ0RhdGFT
dG9yZTo6Tm8gOiBXZWJQcm9jZXNzUHJveHk6OkVuZHNVc2luZ0RhdGFTdG9yZTo6WWVzKTsKKyAg
ICBtX3Byb2Nlc3MtPnJlbW92ZVdlYlBhZ2UoKnRoaXMsIG1fd2Vic2l0ZURhdGFTdG9yZS5wdHIo
KSA9PSBtX3Byb3Zpc2lvbmFsUGFnZS0+d2Vic2l0ZURhdGFTdG9yZSgpID8gV2ViUHJvY2Vzc1By
b3h5OjpFbmRzVXNpbmdEYXRhU3RvcmU6Ok5vIDogV2ViUHJvY2Vzc1Byb3h5OjpFbmRzVXNpbmdE
YXRhU3RvcmU6Olllcyk7CiAKICAgICAvLyBUaGVyZSBpcyBubyB3YXkgd2UnbGwgYmUgYWJsZSB0
byByZXR1cm4gdG8gdGhlIHBhZ2UgaW4gdGhlIHByZXZpb3VzIHBhZ2Ugc28gY2xvc2UgaXQuCiAg
ICAgaWYgKCFkaWRTdXNwZW5kUHJldmlvdXNQYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc0NhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NDYWNoZS5jcHAKaW5kZXggNTFmY2JlNjYzNDFhOTkzMGY3OGM0MjcxMzQ4YTAx
ZWIxNGIzYzI3MS4uMDY5MTMzNDUyZGIxNTdjZDYzMzg4ZTdmMDViYmVhNzM1ZjY2ZTViMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc0NhY2hlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzQ2FjaGUuY3BwCkBAIC03Niw4ICs3
Niw4IEBAIGJvb2wgV2ViUHJvY2Vzc0NhY2hlOjpjYW5DYWNoZVByb2Nlc3MoV2ViUHJvY2Vzc1By
b3h5JiBwcm9jZXNzKSBjb25zdAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAg
YXV0byBzZXNzaW9uSUQgPSBwcm9jZXNzLndlYnNpdGVEYXRhU3RvcmUoKS5zZXNzaW9uSUQoKTsK
LSAgICBpZiAoc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkgJiYgIXByb2Nlc3MucHJvY2Vzc1Bvb2wo
KS5oYXNQYWdlc1VzaW5nV2Vic2l0ZURhdGFTdG9yZShwcm9jZXNzLndlYnNpdGVEYXRhU3RvcmUo
KSkpIHsKKyAgICBhdXRvIHNlc3Npb25JRCA9IHByb2Nlc3Muc2Vzc2lvbklEKCk7CisgICAgaWYg
KHNlc3Npb25JRC5pc0VwaGVtZXJhbCgpICYmICFwcm9jZXNzLnByb2Nlc3NQb29sKCkuaGFzUGFn
ZXNVc2luZ1dlYnNpdGVEYXRhU3RvcmUocHJvY2Vzcy5zZXNzaW9uSUQoKSkpIHsKICAgICAgICAg
V0VCUFJPQ0VTU0NBQ0hFX1JFTEVBU0VfTE9HKCJjYW5DYWNoZVByb2Nlc3M6IE5vdCBjYWNoaW5n
IHByb2Nlc3MgYmVjYXVzZSB0aGlzIHNlc3Npb24gaGFzIGJlZW4gZGVzdHJveWVkIiwgcHJvY2Vz
cy5wcm9jZXNzSWRlbnRpZmllcigpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAg
LTE1Myw3ICsxNTMsNyBAQCBSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiBXZWJQcm9jZXNzQ2FjaGU6
OnRha2VQcm9jZXNzKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRAogICAgIGlmIChpdCA9PSBt
X3Byb2Nlc3Nlc1BlclJlZ2lzdHJhYmxlRG9tYWluLmVuZCgpKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAotICAgIGlmICgmaXQtPnZhbHVlLT5wcm9jZXNzKCkud2Vic2l0ZURhdGFTdG9yZSgp
ICE9ICZkYXRhU3RvcmUpCisgICAgaWYgKGl0LT52YWx1ZS0+cHJvY2VzcygpLnNlc3Npb25JRCgp
ICE9IGRhdGFTdG9yZS5zZXNzaW9uSUQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAg
ICBpZiAoaXQtPnZhbHVlLT5wcm9jZXNzKCkuY2FwdGl2ZVBvcnRhbE1vZGUoKSAhPSBjYXB0aXZl
UG9ydGFsTW9kZSkKQEAgLTIxMiw3ICsyMTIsNyBAQCB2b2lkIFdlYlByb2Nlc3NDYWNoZTo6Y2xl
YXJBbGxQcm9jZXNzZXNGb3JTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKICAg
ICBWZWN0b3I8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IGtleXNUb1JlbW92ZTsKICAgICBm
b3IgKGF1dG8mIHBhaXIgOiBtX3Byb2Nlc3Nlc1BlclJlZ2lzdHJhYmxlRG9tYWluKSB7Ci0gICAg
ICAgIGlmIChwYWlyLnZhbHVlLT5wcm9jZXNzKCkud2Vic2l0ZURhdGFTdG9yZSgpLnNlc3Npb25J
RCgpID09IHNlc3Npb25JRCkgeworICAgICAgICBpZiAocGFpci52YWx1ZS0+cHJvY2VzcygpLnNl
c3Npb25JRCgpID09IHNlc3Npb25JRCkgewogICAgICAgICAgICAgV0VCUFJPQ0VTU0NBQ0hFX1JF
TEVBU0VfTE9HKCJjbGVhckFsbFByb2Nlc3Nlc0ZvclNlc3Npb246IEV2aWN0aW5nIHByb2Nlc3Mg
YmVjYXVzZSBpdHMgc2Vzc2lvbiB3YXMgZGVzdHJveWVkIiwgcGFpci52YWx1ZS0+cHJvY2Vzcygp
LnByb2Nlc3NJZGVudGlmaWVyKCkpOwogICAgICAgICAgICAga2V5c1RvUmVtb3ZlLmFwcGVuZChw
YWlyLmtleSk7CiAgICAgICAgIH0KQEAgLTIyMiw3ICsyMjIsNyBAQCB2b2lkIFdlYlByb2Nlc3ND
YWNoZTo6Y2xlYXJBbGxQcm9jZXNzZXNGb3JTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCkKIAogICAgIFZlY3Rvcjx1aW50NjRfdD4gcGVuZGluZ1JlcXVlc3RzVG9SZW1vdmU7CiAgICAg
Zm9yIChhdXRvJiBwYWlyIDogbV9wZW5kaW5nQWRkUmVxdWVzdHMpIHsKLSAgICAgICAgaWYgKHBh
aXIudmFsdWUtPnByb2Nlc3MoKS53ZWJzaXRlRGF0YVN0b3JlKCkuc2Vzc2lvbklEKCkgPT0gc2Vz
c2lvbklEKSB7CisgICAgICAgIGlmIChwYWlyLnZhbHVlLT5wcm9jZXNzKCkuc2Vzc2lvbklEKCkg
PT0gc2Vzc2lvbklEKSB7CiAgICAgICAgICAgICBXRUJQUk9DRVNTQ0FDSEVfUkVMRUFTRV9MT0co
ImNsZWFyQWxsUHJvY2Vzc2VzRm9yU2Vzc2lvbjogRXZpY3RpbmcgcHJvY2VzcyBiZWNhdXNlIGl0
cyBzZXNzaW9uIHdhcyBkZXN0cm95ZWQiLCBwYWlyLnZhbHVlLT5wcm9jZXNzKCkucHJvY2Vzc0lk
ZW50aWZpZXIoKSk7CiAgICAgICAgICAgICBwZW5kaW5nUmVxdWVzdHNUb1JlbW92ZS5hcHBlbmQo
cGFpci5rZXkpOwogICAgICAgICB9CkBAIC0yNzYsNyArMjc2LDkgQEAgV2ViUHJvY2Vzc0NhY2hl
OjpDYWNoZWRQcm9jZXNzOjpDYWNoZWRQcm9jZXNzKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJv
Y2VzcykKICNlbmRpZgogewogICAgIFJFTEVBU0VfQVNTRVJUKCFtX3Byb2Nlc3MtPnBhZ2VDb3Vu
dCgpKTsKLSAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX01FU1NBR0UoIW1fcHJvY2Vzcy0+d2Vic2l0
ZURhdGFTdG9yZSgpLnByb2Nlc3NlcygpLmNvbnRhaW5zKCptX3Byb2Nlc3MpLCAiT25seSBwcm9j
ZXNzZXMgd2l0aCBwYWdlcyBzaG91bGQgYmUgcmVnaXN0ZXJlZCB3aXRoIHRoZSBkYXRhIHN0b3Jl
Iik7CisgICAgYXV0byogZGF0YVN0b3JlID0gV2Vic2l0ZURhdGFTdG9yZTo6ZXhpc3RpbmdEYXRh
U3RvcmVGb3JTZXNzaW9uSUQobV9wcm9jZXNzLT5zZXNzaW9uSUQoKSk7CisgICAgUkVMRUFTRV9B
U1NFUlQoZGF0YVN0b3JlKTsKKyAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX01FU1NBR0UoIWRhdGFT
dG9yZS0+cHJvY2Vzc2VzKCkuY29udGFpbnMoKm1fcHJvY2VzcyksICJPbmx5IHByb2Nlc3NlcyB3
aXRoIHBhZ2VzIHNob3VsZCBiZSByZWdpc3RlcmVkIHdpdGggdGhlIGRhdGEgc3RvcmUiKTsKICAg
ICBtX3Byb2Nlc3MtPnNldElzSW5Qcm9jZXNzQ2FjaGUodHJ1ZSk7CiAgICAgbV9ldmljdGlvblRp
bWVyLnN0YXJ0T25lU2hvdChjYWNoZWRQcm9jZXNzTGlmZXRpbWUpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IDc3YzRiZTc5NDNkMWIwMjQyMmU3
Njc2Mjc4YzIwZjhjMDk1M2IwNDkuLjdkZTNhODdlZjZjZWZjMDJkZjI4MGE5YWM4MWE3YjFmODAw
YjRkMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAg
LTU3MSw3ICs1NzEsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hSZW1vdGVXb3Jr
ZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoUmVtbwogCiAgICAgLy8gUHJpb3Jp
dGl6ZSB0aGUgcmVxdWVzdGluZyBXZWJQcm9jZXNzIGZvciBydW5uaW5nIHRoZSBzZXJ2aWNlIHdv
cmtlci4KICAgICBpZiAoIXJlbW90ZVdvcmtlclByb2Nlc3NQcm94eSAmJiAhc2hvdWxkVXNlU2Vw
YXJhdGVSZW1vdGVXb3JrZXJQcm9jZXNzICYmIHJlcXVlc3RpbmdQcm9jZXNzKSB7Ci0gICAgICAg
IGlmICgmcmVxdWVzdGluZ1Byb2Nlc3MtPndlYnNpdGVEYXRhU3RvcmUoKSA9PSB3ZWJzaXRlRGF0
YVN0b3JlICYmIHJlcXVlc3RpbmdQcm9jZXNzLT5pc01hdGNoaW5nUmVnaXN0cmFibGVEb21haW4o
cmVnaXN0cmFibGVEb21haW4pKQorICAgICAgICBpZiAocmVxdWVzdGluZ1Byb2Nlc3MtPnNlc3Np
b25JRCgpID09IHdlYnNpdGVEYXRhU3RvcmUtPnNlc3Npb25JRCgpICYmIHJlcXVlc3RpbmdQcm9j
ZXNzLT5pc01hdGNoaW5nUmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21haW4pKQogICAg
ICAgICAgICAgdXNlUHJvY2Vzc0ZvclJlbW90ZVdvcmtlcnMoKnJlcXVlc3RpbmdQcm9jZXNzKTsK
ICAgICB9CiAKQEAgLTU3OSw3ICs1NzksNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjplc3RhYmxp
c2hSZW1vdGVXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoUmVtbwogICAg
ICAgICBmb3IgKGF1dG8mIHByb2Nlc3MgOiBwcm9jZXNzUG9vbC0+bV9wcm9jZXNzZXMpIHsKICAg
ICAgICAgICAgIGlmIChwcm9jZXNzLnB0cigpID09IHByb2Nlc3NQb29sLT5tX3ByZXdhcm1lZFBy
b2Nlc3MuZ2V0KCkgfHwgcHJvY2Vzcy0+aXNEdW1teVByb2Nlc3NQcm94eSgpKQogICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgaWYgKCZwcm9jZXNzLT53ZWJzaXRlRGF0YVN0
b3JlKCkgIT0gd2Vic2l0ZURhdGFTdG9yZSkKKyAgICAgICAgICAgIGlmIChwcm9jZXNzLT5zZXNz
aW9uSUQoKSAhPSB3ZWJzaXRlRGF0YVN0b3JlLT5zZXNzaW9uSUQoKSkKICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgICAgIGlmICghcHJvY2Vzcy0+aXNNYXRjaGluZ1JlZ2lzdHJh
YmxlRG9tYWluKHJlZ2lzdHJhYmxlRG9tYWluKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsK
QEAgLTEwODUsNyArMTA4NSw3IEBAIFJlZjxXZWJQcm9jZXNzUHJveHk+IFdlYlByb2Nlc3NQb29s
Ojpwcm9jZXNzRm9yUmVnaXN0cmFibGVEb21haW4oV2Vic2l0ZURhdGFTdG9yCiAgICAgICAgICAg
ICBpZiAocHJvY2Vzcy0+aXNSdW5uaW5nU2VydmljZVdvcmtlcnMoKSkKICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKICNlbmRpZgotICAgICAgICAgICAgaWYgKG11c3RNYXRjaERhdGFTdG9yZSAm
JiAmcHJvY2Vzcy0+d2Vic2l0ZURhdGFTdG9yZSgpICE9ICZ3ZWJzaXRlRGF0YVN0b3JlKQorICAg
ICAgICAgICAgaWYgKG11c3RNYXRjaERhdGFTdG9yZSAmJiBwcm9jZXNzLT5zZXNzaW9uSUQoKSAh
PSB3ZWJzaXRlRGF0YVN0b3JlLnNlc3Npb25JRCgpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICAgICAgcmV0dXJuIHByb2Nlc3M7CiAgICAgICAgIH0KQEAgLTExMjUsNyArMTEy
NSw3IEBAIFJlZjxXZWJQYWdlUHJveHk+IFdlYlByb2Nlc3NQb29sOjpjcmVhdGVXZWJQYWdlKFBh
Z2VDbGllbnQmIHBhZ2VDbGllbnQsIFJlZjxBUEk6CiAgICAgICAgIC8vIFNoYXJpbmcgcHJvY2Vz
c2VzLCBlLmcuIHdoZW4gY3JlYXRpbmcgdGhlIHBhZ2UgdmlhIHdpbmRvdy5vcGVuKCkuCiAgICAg
ICAgIHByb2Nlc3MgPSAmcGFnZUNvbmZpZ3VyYXRpb24tPnJlbGF0ZWRQYWdlKCktPmVuc3VyZVJ1
bm5pbmdQcm9jZXNzKCk7CiAgICAgICAgIC8vIFdlIGRvIG5vdCBzdXBwb3J0IHNldmVyYWwgV2Vi
c2l0ZURhdGFTdG9yZXMgc2hhcmluZyBhIHNpbmdsZSBwcm9jZXNzLgotICAgICAgICBBU1NFUlQo
cHJvY2Vzcy0+aXNEdW1teVByb2Nlc3NQcm94eSgpIHx8IHBhZ2VDb25maWd1cmF0aW9uLT53ZWJz
aXRlRGF0YVN0b3JlKCkgPT0gJnByb2Nlc3MtPndlYnNpdGVEYXRhU3RvcmUoKSk7CisgICAgICAg
IEFTU0VSVChwcm9jZXNzLT5pc0R1bW15UHJvY2Vzc1Byb3h5KCkgfHwgcGFnZUNvbmZpZ3VyYXRp
b24tPndPZWJzaXRlRGF0YVN0b3JlKCktPnNlc3Npb25JRCgpID09IHByb2Nlc3MtPnNlc3Npb25J
RCgpKTsKICAgICAgICAgQVNTRVJUKCZwYWdlQ29uZmlndXJhdGlvbi0+cmVsYXRlZFBhZ2UoKS0+
d2Vic2l0ZURhdGFTdG9yZSgpID09IHBhZ2VDb25maWd1cmF0aW9uLT53ZWJzaXRlRGF0YVN0b3Jl
KCkpOwogICAgIH0gZWxzZSBpZiAoIW1faXNEZWxheWVkV2ViUHJvY2Vzc0xhdW5jaERpc2FibGVk
KSB7CiAgICAgICAgIC8vIEluIHRoZSBjb21tb24gY2FzZSwgd2UgZGVsYXkgcHJvY2VzcyBsYXVu
Y2ggdW50aWwgc29tZXRoaW5nIGlzIGFjdHVhbGx5IGxvYWRlZCBpbiB0aGUgcGFnZS4KQEAgLTEx
ODIsMTkgKzExODIsMTggQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6dXBkYXRlUmVtb3RlV29ya2Vy
VXNlckFnZW50KGNvbnN0IFN0cmluZyYgdXNlckFnZW50KQogICAgICAgICB3b3JrZXJQcm9jZXNz
LnNldFJlbW90ZVdvcmtlclVzZXJBZ2VudChtX3JlbW90ZVdvcmtlclVzZXJBZ2VudCk7CiB9CiAK
LXZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBhZ2VCZWdpblVzaW5nV2Vic2l0ZURhdGFTdG9yZShXZWJQ
YWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCwgV2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlKQor
dm9pZCBXZWJQcm9jZXNzUG9vbDo6cGFnZUJlZ2luVXNpbmdXZWJzaXRlRGF0YVN0b3JlKFdlYlBh
Z2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiB7CiAg
ICAgUkVMRUFTRV9BU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIFJFTEVBU0VfQVNTRVJU
KG1fc2Vzc2lvblRvUGFnZUlEc01hcC5pc1ZhbGlkS2V5KGRhdGFTdG9yZS5zZXNzaW9uSUQoKSkp
OwotICAgIGF1dG8gcmVzdWx0ID0gbV9zZXNzaW9uVG9QYWdlSURzTWFwLmFkZChkYXRhU3RvcmUu
c2Vzc2lvbklEKCksIEhhc2hTZXQ8V2ViUGFnZVByb3h5SWRlbnRpZmllcj4oKSkuaXRlcmF0b3It
PnZhbHVlLmFkZChwYWdlSUQpOworICAgIFJFTEVBU0VfQVNTRVJUKG1fc2Vzc2lvblRvUGFnZUlE
c01hcC5pc1ZhbGlkS2V5KHNlc3Npb25JRCkpOworICAgIGF1dG8gcmVzdWx0ID0gbV9zZXNzaW9u
VG9QYWdlSURzTWFwLmFkZChzZXNzaW9uSUQsIEhhc2hTZXQ8V2ViUGFnZVByb3h5SWRlbnRpZmll
cj4oKSkuaXRlcmF0b3ItPnZhbHVlLmFkZChwYWdlSUQpOwogICAgIEFTU0VSVF9VTlVTRUQocmVz
dWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBhZ2VF
bmRVc2luZ1dlYnNpdGVEYXRhU3RvcmUoV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIFdl
YnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSkKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBhZ2VFbmRV
c2luZ1dlYnNpdGVEYXRhU3RvcmUoV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChSdW5Mb29wOjppc01h
aW4oKSk7Ci0gICAgYXV0byBzZXNzaW9uSUQgPSBkYXRhU3RvcmUuc2Vzc2lvbklEKCk7Ci0gICAg
UkVMRUFTRV9BU1NFUlQobV9zZXNzaW9uVG9QYWdlSURzTWFwLmlzVmFsaWRLZXkoZGF0YVN0b3Jl
LnNlc3Npb25JRCgpKSk7CisgICAgUkVMRUFTRV9BU1NFUlQobV9zZXNzaW9uVG9QYWdlSURzTWFw
LmlzVmFsaWRLZXkoc2Vzc2lvbklEKSk7CiAgICAgYXV0byBpdGVyYXRvciA9IG1fc2Vzc2lvblRv
UGFnZUlEc01hcC5maW5kKHNlc3Npb25JRCk7CiAgICAgUkVMRUFTRV9BU1NFUlQoaXRlcmF0b3Ig
IT0gbV9zZXNzaW9uVG9QYWdlSURzTWFwLmVuZCgpKTsKIApAQCAtMTIwOSwxMSArMTIwOCwxMSBA
QCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwYWdlRW5kVXNpbmdXZWJzaXRlRGF0YVN0b3JlKFdlYlBh
Z2VQcm94eUlkZW50aWZpZXIgcGFnZUlELAogICAgIH0KIH0KIAotYm9vbCBXZWJQcm9jZXNzUG9v
bDo6aGFzUGFnZXNVc2luZ1dlYnNpdGVEYXRhU3RvcmUoV2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0
b3JlKSBjb25zdAorYm9vbCBXZWJQcm9jZXNzUG9vbDo6aGFzUGFnZXNVc2luZ1dlYnNpdGVEYXRh
U3RvcmUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSBjb25zdAogewogICAgIFJFTEVBU0VfQVNT
RVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBSRUxFQVNFX0FTU0VSVChtX3Nlc3Npb25Ub1Bh
Z2VJRHNNYXAuaXNWYWxpZEtleShkYXRhU3RvcmUuc2Vzc2lvbklEKCkpKTsKLSAgICByZXR1cm4g
bV9zZXNzaW9uVG9QYWdlSURzTWFwLmNvbnRhaW5zKGRhdGFTdG9yZS5zZXNzaW9uSUQoKSk7Cisg
ICAgUkVMRUFTRV9BU1NFUlQobV9zZXNzaW9uVG9QYWdlSURzTWFwLmlzVmFsaWRLZXkoc2Vzc2lv
bklEKSk7CisgICAgcmV0dXJuIG1fc2Vzc2lvblRvUGFnZUlEc01hcC5jb250YWlucyhzZXNzaW9u
SUQpOwogfQogCiBEb3dubG9hZFByb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZG93bmxvYWQoV2Vic2l0
ZURhdGFTdG9yZSYgZGF0YVN0b3JlLCBXZWJQYWdlUHJveHkqIGluaXRpYXRpbmdQYWdlLCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5h
bWUpCkBAIC0xOTc1LDcgKzE5NzQsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwcm9jZXNzRm9y
TmF2aWdhdGlvbkludGVybmFsKFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgQVBJOgogICAgICAg
ICBMT0coUHJvY2Vzc1N3YXBwaW5nLCAiKFByb2Nlc3NTd2FwcGluZykgQ29uc2lkZXJpbmcgcmUt
dXNlIG9mIGEgcHJldmlvdXNseSBjYWNoZWQgcHJvY2VzcyBmb3IgZG9tYWluICVzIiwgdGFyZ2V0
UmVnaXN0cmFibGVEb21haW4uc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKICAgICAgICAgaWYg
KGF1dG8qIHByb2Nlc3MgPSBtX3N3YXBwZWRQcm9jZXNzZXNQZXJSZWdpc3RyYWJsZURvbWFpbi5n
ZXQodGFyZ2V0UmVnaXN0cmFibGVEb21haW4pKSB7Ci0gICAgICAgICAgICBpZiAoJnByb2Nlc3Mt
PndlYnNpdGVEYXRhU3RvcmUoKSA9PSBkYXRhU3RvcmUucHRyKCkpIHsKKyAgICAgICAgICAgIGlm
IChwcm9jZXNzLT5zZXNzaW9uSUQoKSA9PSBkYXRhU3RvcmUtPnNlc3Npb25JRCgpKSB7CiAgICAg
ICAgICAgICAgICAgTE9HKFByb2Nlc3NTd2FwcGluZywgIihQcm9jZXNzU3dhcHBpbmcpIFJldXNp
bmcgYSBwcmV2aW91c2x5IGNhY2hlZCBwcm9jZXNzIHdpdGggcGlkICVpIHRvIGNvbnRpbnVlIG5h
dmlnYXRpb24gdG8gVVJMICVzIiwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgdGFyZ2V0
VVJMLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgICAgICAgICAgICAgcmV0dXJuIGNv
bXBsZXRpb25IYW5kbGVyKCpwcm9jZXNzLCBudWxscHRyLCByZWFzb24pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKaW5kZXggNDA5YTc5YjUxYjcwNTBkMTA4YmUxMzEw
ZmUyZjBhMmMwZjc1NTdlNy4uMzgyOWIyZTZhODcwY2U5MWFjNWZjZjUwZjM1M2M2N2NjNmU4MzQ4
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCkBAIC0yMTQsOSAr
MjE0LDkgQEAgcHVibGljOgogCiAgICAgUmVmPFdlYlBhZ2VQcm94eT4gY3JlYXRlV2ViUGFnZShQ
YWdlQ2xpZW50JiwgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYpOwogCi0gICAgdm9pZCBw
YWdlQmVnaW5Vc2luZ1dlYnNpdGVEYXRhU3RvcmUoV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2Vi
c2l0ZURhdGFTdG9yZSYpOwotICAgIHZvaWQgcGFnZUVuZFVzaW5nV2Vic2l0ZURhdGFTdG9yZShX
ZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJzaXRlRGF0YVN0b3JlJik7Ci0gICAgYm9vbCBoYXNQ
YWdlc1VzaW5nV2Vic2l0ZURhdGFTdG9yZShXZWJzaXRlRGF0YVN0b3JlJikgY29uc3Q7CisgICAg
dm9pZCBwYWdlQmVnaW5Vc2luZ1dlYnNpdGVEYXRhU3RvcmUoV2ViUGFnZVByb3h5SWRlbnRpZmll
ciwgUEFMOjpTZXNzaW9uSUQpOworICAgIHZvaWQgcGFnZUVuZFVzaW5nV2Vic2l0ZURhdGFTdG9y
ZShXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCk7CisgICAgYm9vbCBoYXNQ
YWdlc1VzaW5nV2Vic2l0ZURhdGFTdG9yZShQQUw6OlNlc3Npb25JRCkgY29uc3Q7CiAKICAgICBj
b25zdCBTdHJpbmcmIGluamVjdGVkQnVuZGxlUGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fY29uZmln
dXJhdGlvbi0+aW5qZWN0ZWRCdW5kbGVQYXRoKCk7IH0KICNpZiBQTEFURk9STShDT0NPQSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IDE3MDQ1MGE5
NWJhNmU4YTQ5ZWU1ZmM4MWUxMWI1NTA5MWJiOTRiNjIuLjBiNDE2ODM1MjY4YThhMzcxNTI0OGZj
NmI1YjhlZDA2NmFiZTZjYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5LmNwcApAQCAtMjQxLDcgKzI0MSw2IEBAIFdlYlByb2Nlc3NQcm94eTo6V2ViUHJvY2Vz
c1Byb3h5KFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgV2Vic2l0ZURhdGFTdG9yZSoKICNl
bmRpZgogICAgICwgbV9pc1Jlc3BvbnNpdmUoTm9Pck1heWJlOjpNYXliZSkKICAgICAsIG1fdmlz
aWJsZVBhZ2VDb3VudGVyKFt0aGlzXShSZWZDb3VudGVyRXZlbnQpIHsgdXBkYXRlQmFja2dyb3Vu
ZFJlc3BvbnNpdmVuZXNzVGltZXIoKTsgfSkKLSAgICAsIG1fd2Vic2l0ZURhdGFTdG9yZSh3ZWJz
aXRlRGF0YVN0b3JlKQogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFN
KQogICAgICwgbV91c2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5KG1ha2VVbmlxdWU8VXNlck1l
ZGlhQ2FwdHVyZU1hbmFnZXJQcm94eT4obWFrZVVuaXF1ZVJlZjxVSVByb3h5Rm9yQ2FwdHVyZT4o
KnRoaXMpKSkKICNlbmRpZgpAQCAtMjU4LDcgKzI1Nyw4IEBAIFdlYlByb2Nlc3NQcm94eTo6V2Vi
UHJvY2Vzc1Byb3h5KFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgV2Vic2l0ZURhdGFTdG9y
ZSoKICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwogCiAgICAg
V2ViUGFzdGVib2FyZFByb3h5OjpzaW5nbGV0b24oKS5hZGRXZWJQcm9jZXNzUHJveHkoKnRoaXMp
OwotCisgICAgaWYgKHdlYnNpdGVEYXRhU3RvcmUpCisgICAgICAgIG1fc2Vzc2lvbklEID0gd2Vi
c2l0ZURhdGFTdG9yZS0+c2Vzc2lvbklEKCk7CiAgICAgcGxhdGZvcm1Jbml0aWFsaXplKCk7CiB9
CiAKQEAgLTM0OCwzMiArMzQ4LDM0IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzZXRJc0luUHJv
Y2Vzc0NhY2hlKGJvb2wgdmFsdWUsIFdpbGxTaHV0RG93biB3aWxsU2h1dERvd24pCiAKIHZvaWQg
V2ViUHJvY2Vzc1Byb3h5OjpzZXRXZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmUmIGRh
dGFTdG9yZSkKIHsKLSAgICBBU1NFUlQoIW1fd2Vic2l0ZURhdGFTdG9yZSk7CisgICAgQVNTRVJU
KCFtX3Nlc3Npb25JRC5pc1ZhbGlkKCkpOwogICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xP
RyhQcm9jZXNzLCAic2V0V2Vic2l0ZURhdGFTdG9yZSgpIGRhdGFTdG9yZT0lcCwgc2Vzc2lvbklE
PSUiIFBSSXU2NCwgJmRhdGFTdG9yZSwgZGF0YVN0b3JlLnNlc3Npb25JRCgpLnRvVUludDY0KCkp
OwotICAgIG1fd2Vic2l0ZURhdGFTdG9yZSA9ICZkYXRhU3RvcmU7CiAgICAgdXBkYXRlUmVnaXN0
cmF0aW9uV2l0aERhdGFTdG9yZSgpOwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlNl
dFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzKHByb2Nlc3NQb29sKCkud2ViUHJvY2Vzc0RhdGFT
dG9yZVBhcmFtZXRlcnMoKnRoaXMsIGRhdGFTdG9yZSkpLCAwKTsKIAogICAgIC8vIERlbGF5IGNv
bnN0cnVjdGlvbiBvZiB0aGUgV2ViTG9ja1JlZ2lzdHJ5UHJveHkgdW50aWwgdGhlIFdlYlByb2Nl
c3NQcm94eSBoYXMgYSBkYXRhIHN0b3JlIHNpbmNlIHRoZSBkYXRhIHN0b3JlIGhvbGRzIHRoZQog
ICAgIC8vIExvY2FsV2ViTG9ja1JlZ2lzdHJ5LgogICAgIG1fd2ViTG9ja1JlZ2lzdHJ5ID0gbWFr
ZVVuaXF1ZTxXZWJMb2NrUmVnaXN0cnlQcm94eT4oKnRoaXMpOworICAgIG1fc2Vzc2lvbklEID0g
ZGF0YVN0b3JlLnNlc3Npb25JRCgpOwogfQogCiBib29sIFdlYlByb2Nlc3NQcm94eTo6aXNEdW1t
eVByb2Nlc3NQcm94eSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fd2Vic2l0ZURhdGFTdG9yZSAm
JiBwcm9jZXNzUG9vbCgpLmR1bW15UHJvY2Vzc1Byb3h5KG1fd2Vic2l0ZURhdGFTdG9yZS0+c2Vz
c2lvbklEKCkpID09IHRoaXM7CisgICAgcmV0dXJuIG1fc2Vzc2lvbklELmlzVmFsaWQoKSAmJiBw
cm9jZXNzUG9vbCgpLmR1bW15UHJvY2Vzc1Byb3h5KHNlc3Npb25JRCgpKSA9PSB0aGlzOwogfQog
CiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6dXBkYXRlUmVnaXN0cmF0aW9uV2l0aERhdGFTdG9yZSgp
CiB7Ci0gICAgaWYgKCFtX3dlYnNpdGVEYXRhU3RvcmUpCisgICAgaWYgKCFtX3Nlc3Npb25JRC5p
c1ZhbGlkKCkpCiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAgIGJvb2wgc2hvdWxkQmVSZWdp
c3RlcmVkID0gcGFnZUNvdW50KCkgfHwgcHJvdmlzaW9uYWxQYWdlQ291bnQoKTsKLSAgICBpZiAo
c2hvdWxkQmVSZWdpc3RlcmVkKQotICAgICAgICBtX3dlYnNpdGVEYXRhU3RvcmUtPnJlZ2lzdGVy
UHJvY2VzcygqdGhpcyk7Ci0gICAgZWxzZQotICAgICAgICBtX3dlYnNpdGVEYXRhU3RvcmUtPnVu
cmVnaXN0ZXJQcm9jZXNzKCp0aGlzKTsKKyAgICBpZiAoYXV0byogZGF0YVN0b3JlID0gV2Vic2l0
ZURhdGFTdG9yZTo6ZXhpc3RpbmdEYXRhU3RvcmVGb3JTZXNzaW9uSUQoc2Vzc2lvbklEKCkpKSB7
CisgICAgICAgIGlmIChzaG91bGRCZVJlZ2lzdGVyZWQpCisgICAgICAgICAgICBkYXRhU3RvcmUt
PnJlZ2lzdGVyUHJvY2VzcygqdGhpcyk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGRhdGFT
dG9yZS0+dW5yZWdpc3RlclByb2Nlc3MoKnRoaXMpOworICAgIH0KIH0KIAogdm9pZCBXZWJQcm9j
ZXNzUHJveHk6OmFkZFByb3Zpc2lvbmFsUGFnZVByb3h5KFByb3Zpc2lvbmFsUGFnZVByb3h5JiBw
cm92aXNpb25hbFBhZ2UpCkBAIC01OTYsMTEgKzU5OCwxMSBAQCB2b2lkIFdlYlByb2Nlc3NQcm94
eTo6YWRkRXhpc3RpbmdXZWJQYWdlKFdlYlBhZ2VQcm94eSYgd2ViUGFnZSwgQmVnaW5zVXNpbmdE
YXRhUwogICAgIEFTU0VSVCghbV9wYWdlTWFwLmNvbnRhaW5zKHdlYlBhZ2UuaWRlbnRpZmllcigp
KSk7CiAgICAgQVNTRVJUKCFnbG9iYWxQYWdlTWFwKCkuY29udGFpbnMod2ViUGFnZS5pZGVudGlm
aWVyKCkpKTsKICAgICBSRUxFQVNFX0FTU0VSVCghbV9pc0luUHJvY2Vzc0NhY2hlKTsKLSAgICBB
U1NFUlQoIW1fd2Vic2l0ZURhdGFTdG9yZSB8fCBtX3dlYnNpdGVEYXRhU3RvcmUgPT0gJndlYlBh
Z2Uud2Vic2l0ZURhdGFTdG9yZSgpKTsKKyAgICBBU1NFUlQoIW1fc2Vzc2lvbklELmlzVmFsaWQo
KSB8fCBtX3Nlc3Npb25JRCA9PSB3ZWJQYWdlLndlYnNpdGVEYXRhU3RvcmUoKS5zZXNzaW9uSUQo
KSk7CiAKICAgICBpZiAoYmVnaW5zVXNpbmdEYXRhU3RvcmUgPT0gQmVnaW5zVXNpbmdEYXRhU3Rv
cmU6OlllcykgewogICAgICAgICBSRUxFQVNFX0FTU0VSVChtX3Byb2Nlc3NQb29sKTsKLSAgICAg
ICAgbV9wcm9jZXNzUG9vbC0+cGFnZUJlZ2luVXNpbmdXZWJzaXRlRGF0YVN0b3JlKHdlYlBhZ2Uu
aWRlbnRpZmllcigpLCB3ZWJQYWdlLndlYnNpdGVEYXRhU3RvcmUoKSk7CisgICAgICAgIG1fcHJv
Y2Vzc1Bvb2wtPnBhZ2VCZWdpblVzaW5nV2Vic2l0ZURhdGFTdG9yZSh3ZWJQYWdlLmlkZW50aWZp
ZXIoKSwgd2ViUGFnZS53ZWJzaXRlRGF0YVN0b3JlKCkuc2Vzc2lvbklEKCkpOwogICAgIH0KIAog
ICAgIG1hcmtQcm9jZXNzQXNSZWNlbnRseVVzZWQoKTsKQEAgLTYzMiw3ICs2MzQsNyBAQCB2b2lk
IFdlYlByb2Nlc3NQcm94eTo6cmVtb3ZlV2ViUGFnZShXZWJQYWdlUHJveHkmIHdlYlBhZ2UsIEVu
ZHNVc2luZ0RhdGFTdG9yZSBlbgogICAgIEFTU0VSVF9VTlVTRUQocmVtb3ZlZFBhZ2UsIHJlbW92
ZWRQYWdlID09ICZ3ZWJQYWdlKTsKIAogICAgIGlmIChlbmRzVXNpbmdEYXRhU3RvcmUgPT0gRW5k
c1VzaW5nRGF0YVN0b3JlOjpZZXMpCi0gICAgICAgIG1fcHJvY2Vzc1Bvb2wtPnBhZ2VFbmRVc2lu
Z1dlYnNpdGVEYXRhU3RvcmUod2ViUGFnZS5pZGVudGlmaWVyKCksIHdlYlBhZ2Uud2Vic2l0ZURh
dGFTdG9yZSgpKTsKKyAgICAgICAgbV9wcm9jZXNzUG9vbC0+cGFnZUVuZFVzaW5nV2Vic2l0ZURh
dGFTdG9yZSh3ZWJQYWdlLmlkZW50aWZpZXIoKSwgd2ViUGFnZS53ZWJzaXRlRGF0YVN0b3JlKCku
c2Vzc2lvbklEKCkpOwogCiAgICAgcmVtb3ZlVmlzaXRlZExpbmtTdG9yZVVzZXIod2ViUGFnZS52
aXNpdGVkTGlua1N0b3JlKCksIHdlYlBhZ2UuaWRlbnRpZmllcigpKTsKICAgICB1cGRhdGVSZWdp
c3RyYXRpb25XaXRoRGF0YVN0b3JlKCk7CkBAIC04MTUsNyArODE3LDggQEAgdm9pZCBXZWJQcm9j
ZXNzUHJveHk6OnVwZGF0ZUJhY2tGb3J3YXJkSXRlbShjb25zdCBCYWNrRm9yd2FyZExpc3RJdGVt
U3RhdGUmIGl0ZW0KIAogdm9pZCBXZWJQcm9jZXNzUHJveHk6OmdldE5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbihNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb246OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewotICAgIHdlYnNpdGVEYXRhU3RvcmUoKS5n
ZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKnRoaXMsIFdURk1vdmUocmVwbHkpKTsKKyAgICBp
ZiAoYXV0byogZGF0YVN0b3JlID0gV2Vic2l0ZURhdGFTdG9yZTo6ZXhpc3RpbmdEYXRhU3RvcmVG
b3JTZXNzaW9uSUQoc2Vzc2lvbklEKCkpKQorICAgICAgICBkYXRhU3RvcmUtPmdldE5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbigqdGhpcywgV1RGTW92ZShyZXBseSkpOwogfQogCiAjaWYgRU5BQkxF
KEdQVV9QUk9DRVNTKQpAQCAtMTcwNCwxMCArMTcwNywxMiBAQCB2b2lkIFdlYlByb2Nlc3NQcm94
eTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JNYWluRnJhbWUoY29uc3QgVVJMJiB1cmwpCiAK
ICAgICBhdXRvIHJlZ2lzdHJhYmxlRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4g
eyB1cmwgfTsKICAgICBpZiAobV9yZWdpc3RyYWJsZURvbWFpbiAmJiAqbV9yZWdpc3RyYWJsZURv
bWFpbiAhPSByZWdpc3RyYWJsZURvbWFpbikgewotICAgICAgICBpZiAoaXNSdW5uaW5nU2Vydmlj
ZVdvcmtlcnMoKSkKLSAgICAgICAgICAgIHdlYnNpdGVEYXRhU3RvcmUoKS5uZXR3b3JrUHJvY2Vz
cygpLnRlcm1pbmF0ZVJlbW90ZVdvcmtlckNvbnRleHRDb25uZWN0aW9uV2hlblBvc3NpYmxlKFJl
bW90ZVdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIsIHdlYnNpdGVEYXRhU3RvcmUoKS5zZXNzaW9u
SUQoKSwgKm1fcmVnaXN0cmFibGVEb21haW4sIGNvcmVQcm9jZXNzSWRlbnRpZmllcigpKTsKLSAg
ICAgICAgaWYgKGlzUnVubmluZ1NoYXJlZFdvcmtlcnMoKSkKLSAgICAgICAgICAgIHdlYnNpdGVE
YXRhU3RvcmUoKS5uZXR3b3JrUHJvY2VzcygpLnRlcm1pbmF0ZVJlbW90ZVdvcmtlckNvbnRleHRD
b25uZWN0aW9uV2hlblBvc3NpYmxlKFJlbW90ZVdvcmtlclR5cGU6OlNoYXJlZFdvcmtlciwgd2Vi
c2l0ZURhdGFTdG9yZSgpLnNlc3Npb25JRCgpLCAqbV9yZWdpc3RyYWJsZURvbWFpbiwgY29yZVBy
b2Nlc3NJZGVudGlmaWVyKCkpOworICAgICAgICBhdXRvKiBkYXRhU3RvcmUgPSBXZWJzaXRlRGF0
YVN0b3JlOjpleGlzdGluZ0RhdGFTdG9yZUZvclNlc3Npb25JRChzZXNzaW9uSUQoKSk7CisgICAg
ICAgIGlmIChkYXRhU3RvcmUgJiYgaXNSdW5uaW5nU2VydmljZVdvcmtlcnMoKSkKKyAgICAgICAg
ICAgIGRhdGFTdG9yZS0+bmV0d29ya1Byb2Nlc3MoKS50ZXJtaW5hdGVSZW1vdGVXb3JrZXJDb250
ZXh0Q29ubmVjdGlvbldoZW5Qb3NzaWJsZShSZW1vdGVXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2Vy
LCBzZXNzaW9uSUQoKSwgKm1fcmVnaXN0cmFibGVEb21haW4sIGNvcmVQcm9jZXNzSWRlbnRpZmll
cigpKTsKKworICAgICAgICBpZiAoZGF0YVN0b3JlICYmIGlzUnVubmluZ1NoYXJlZFdvcmtlcnMo
KSkKKyAgICAgICAgICAgIGRhdGFTdG9yZS0+bmV0d29ya1Byb2Nlc3MoKS50ZXJtaW5hdGVSZW1v
dGVXb3JrZXJDb250ZXh0Q29ubmVjdGlvbldoZW5Qb3NzaWJsZShSZW1vdGVXb3JrZXJUeXBlOjpT
aGFyZWRXb3JrZXIsIHNlc3Npb25JRCgpLCAqbV9yZWdpc3RyYWJsZURvbWFpbiwgY29yZVByb2Nl
c3NJZGVudGlmaWVyKCkpOwogCiAgICAgICAgIC8vIE51bGwgb3V0IHJlZ2lzdHJhYmxlIGRvbWFp
biBzaW5jZSB0aGlzIHByb2Nlc3MgaGFzIG5vdyBiZWVuIHVzZWQgZm9yIHNldmVyYWwgZG9tYWlu
cy4KICAgICAgICAgbV9yZWdpc3RyYWJsZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluIHsgfTsKQEAgLTE3NTQsOCArMTc1OSw3IEBAIFdlYlByb2Nlc3NQb29sJiBXZWJQcm9jZXNz
UHJveHk6OnByb2Nlc3NQb29sKCkgY29uc3QKIAogUEFMOjpTZXNzaW9uSUQgV2ViUHJvY2Vzc1By
b3h5OjpzZXNzaW9uSUQoKSBjb25zdAogewotICAgIEFTU0VSVChtX3dlYnNpdGVEYXRhU3RvcmUp
OwotICAgIHJldHVybiBtX3dlYnNpdGVEYXRhU3RvcmUtPnNlc3Npb25JRCgpOworICAgIHJldHVy
biBtX3Nlc3Npb25JRDsKIH0KIAogdm9pZCBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZVNwZWVjaFJl
Y29nbml0aW9uU2VydmVyKFNwZWVjaFJlY29nbml0aW9uU2VydmVySWRlbnRpZmllciBpZGVudGlm
aWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAppbmRleCAwNTU1
ZDNkNTc2MzQ1YmIyNDk2MTA4NThkNjk0NjZlNDkxNTlmMWFjLi5mODZmNDM3ZGQ1NDM5NTBlZTM4
Mzg0YzE3MGNmMmEzMWM5MWE1Yjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuaApAQCAtMTY3LDcgKzE2Nyw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGVuYWJsZVJl
bW90ZVdvcmtlcnMoUmVtb3RlV29ya2VyVHlwZSwgY29uc3QgVXNlckNvbnRlbnRDb250cm9sbGVy
SWRlbnRpZmllciYpOwogICAgIHZvaWQgZGlzYWJsZVJlbW90ZVdvcmtlcnMoUmVtb3RlV29ya2Vy
VHlwZSk7CiAKLSAgICBXZWJzaXRlRGF0YVN0b3JlJiB3ZWJzaXRlRGF0YVN0b3JlKCkgY29uc3Qg
eyBBU1NFUlQobV93ZWJzaXRlRGF0YVN0b3JlKTsgcmV0dXJuICptX3dlYnNpdGVEYXRhU3RvcmU7
IH0KICAgICB2b2lkIHNldFdlYnNpdGVEYXRhU3RvcmUoV2Vic2l0ZURhdGFTdG9yZSYpOwogICAg
IAogICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0OwpAQCAtNjE0LDcgKzYxMyw3
IEBAIHByaXZhdGU6CiAKICAgICBWaXNpYmxlV2ViUGFnZUNvdW50ZXIgbV92aXNpYmxlUGFnZUNv
dW50ZXI7CiAKLSAgICBSZWZQdHI8V2Vic2l0ZURhdGFTdG9yZT4gbV93ZWJzaXRlRGF0YVN0b3Jl
OworICAgIFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lvbklEIHsgMCB9OwogCiAgICAgYm9vbCBtX2lz
VW5kZXJNZW1vcnlQcmVzc3VyZSB7IGZhbHNlIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Byb3h5R0xpYi5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NQcm94eUdMaWIuY3BwCmluZGV4IDg2NGQwZTM2ZmI4
ZGEyNTZkNTEzMmVlMzU2MzA2YzUyOGM2ZTY0ZTcuLjM2NzEzOGYwY2YwZTY3YjQ2MmE0NDQwZGM3
MmU3ZjQyZmZhZjllMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIv
V2ViUHJvY2Vzc1Byb3h5R0xpYi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xp
Yi9XZWJQcm9jZXNzUHJveHlHTGliLmNwcApAQCAtNDIsNyArNDIsNyBAQCB2b2lkIFdlYlByb2Nl
c3NQcm94eTo6cGxhdGZvcm1HZXRMYXVuY2hPcHRpb25zKFByb2Nlc3NMYXVuY2hlcjo6TGF1bmNo
T3B0aW9ucyYgbAogICAgIGxhdW5jaE9wdGlvbnMuZXh0cmFJbml0aWFsaXphdGlvbkRhdGEuc2V0
KCJlbmFibGUtc2FuZGJveCJfcywgbV9wcm9jZXNzUG9vbC0+c2FuZGJveEVuYWJsZWQoKSA/ICJ0
cnVlIl9zIDogImZhbHNlIl9zKTsKIAogICAgIGlmIChtX3Byb2Nlc3NQb29sLT5zYW5kYm94RW5h
YmxlZCgpKSB7Ci0gICAgICAgIFdlYnNpdGVEYXRhU3RvcmUqIGRhdGFTdG9yZSA9IG1fd2Vic2l0
ZURhdGFTdG9yZS5nZXQoKTsKKyAgICAgICAgV2Vic2l0ZURhdGFTdG9yZSogZGF0YVN0b3JlID0g
V2Vic2l0ZURhdGFTdG9yZTo6ZXhpc3RpbmdEYXRhU3RvcmVGb3JTZXNzaW9uSUQobV9zZXNzaW9u
SUQpOwogICAgICAgICBpZiAoIWRhdGFTdG9yZSkgewogICAgICAgICAgICAgLy8gUHJld2FybWVk
IHByb2Nlc3NlcyBkb24ndCBoYXZlIGEgV2Vic2l0ZURhdGFTdG9yZSB5ZXQsIHNvIHVzZSB0aGUg
cHJpbWFyeSBXZWJzaXRlRGF0YVN0b3JlIGZyb20gdGhlIFdlYlByb2Nlc3NQb29sLgogICAgICAg
ICAgICAgLy8gVGhlIHByb2Nlc3Mgd29uJ3QgYmUgdXNlZCBpZiBjdXJyZW50IFdlYnNpdGVEYXRh
U3RvcmUgaXMgZGlmZmVyZW50IHRoYW4gdGhlIFdlYlByb2Nlc3NQb29sIHByaW1hcnkgb25lLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457110</attachid>
            <date>2022-04-08 12:39:08 -0700</date>
            <delta_ts>2022-04-08 13:51:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238892-20220408123907.patch</filename>
            <type>text/plain</type>
            <size>35559</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyNjI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDcwN2Y2ZjlhNGZkZDQ2NzFk
MzhhN2IxNjNlYWUxY2ZlNmI5ZGM0MjcuLmVkMDI2NWQ3YzVlN2RlZWNiNTZlNTc3ZDcxN2I0YjY0
NDMyZDYzMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjQgQEAKKzIwMjItMDQtMDggIFNpaHVpIExp
dSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViUHJvY2Vzc1Byb3h5IHNob3Vs
ZCBub3QgaG9sZCBXZWJzaXRlRGF0YVN0b3JlIGFsaXZlIHdoZW4gdGhlcmUgaXMgbm8gcGFnZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4ODkyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2l0aCBvdXIg
Y3VycmVudCBpbXBsZW1lbnRhdGlvbiwgV2ViUHJvY2Vzc1Byb3h5IGNhbiBvdXRsaXZlIFdlYlBh
Z2VQcm94eS4gQW5kIGFzIFdlYlByb2Nlc3NQcm94eSBob2xkcyBzdHJvbmcKKyAgICAgICAgcmVm
ZXJlbmNlIHRvIFdlYnNpdGVEYXRhU3RvcmUsIFdlYnNpdGVEYXRhU3RvcmUgd2lsbCBiZSBrZXB0
IGFsaXZlIGV2ZW4gaXQncyBub3QgdXNlZCBieSBhbnkgcGFnZS4KKworICAgICAgICAqIFVJUHJv
Y2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVUHJvY2Vz
c1Byb3h5OjpnZXRHUFVQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL1By
b3Zpc2lvbmFsUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UHJvdmlzaW9uYWxQYWdl
UHJveHk6OlByb3Zpc2lvbmFsUGFnZVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UHJvdmlzaW9u
YWxQYWdlUHJveHk6On5Qcm92aXNpb25hbFBhZ2VQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNz
L1Byb3Zpc2lvbmFsUGFnZVByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OlByb3Zpc2lvbmFsUGFn
ZVByb3h5Ojp3ZWJzaXRlRGF0YVN0b3JlIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvU3Vz
cGVuZGVkUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3VzcGVuZGVkUGFnZVByb3h5
OjpmaW5kUmV1c2FibGVTdXNwZW5kZWRQYWdlUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYkJhY2tGb3J3YXJkQ2FjaGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2Fy
ZENhY2hlOjpyZW1vdmVFbnRyaWVzRm9yU2Vzc2lvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YkxvY2tSZWdpc3RyeVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTG9ja1JlZ2lzdHJ5
UHJveHk6OnJlcXVlc3RMb2NrKToKKyAgICAgICAgKFdlYktpdDo6V2ViTG9ja1JlZ2lzdHJ5UHJv
eHk6OnJlbGVhc2VMb2NrKToKKyAgICAgICAgKFdlYktpdDo6V2ViTG9ja1JlZ2lzdHJ5UHJveHk6
OmFib3J0TG9ja1JlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2NrUmVnaXN0cnlQcm94
eTo6c25hcHNob3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2NrUmVnaXN0cnlQcm94eTo6Y2xp
ZW50SXNHb2luZ0F3YXkpOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2NrUmVnaXN0cnlQcm94eTo6
cHJvY2Vzc0RpZEV4aXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnN3YXBUb1Byb3Zpc2lvbmFsUGFnZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y29tbWl0UHJvdmlzaW9uYWxQYWdlKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc0NhY2hlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc0NhY2hlOjpjYW5DYWNoZVByb2Nlc3MgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzQ2FjaGU6OnRha2VQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzc0NhY2hlOjpjbGVhckFsbFByb2Nlc3Nlc0ZvclNlc3Npb24pOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzQ2FjaGU6OkNhY2hlZFByb2Nlc3M6OkNhY2hlZFByb2Nlc3MpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3NQb29sOjplc3RhYmxpc2hSZW1vdGVXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29y
a1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cHJvY2Vzc0ZvclJl
Z2lzdHJhYmxlRG9tYWluKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmNyZWF0
ZVdlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cGFnZUJlZ2luVXNp
bmdXZWJzaXRlRGF0YVN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnBh
Z2VFbmRVc2luZ1dlYnNpdGVEYXRhU3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
UG9vbDo6aGFzUGFnZXNVc2luZ1dlYnNpdGVEYXRhU3RvcmUgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUG9vbDo6cHJvY2Vzc0Zvck5hdmlnYXRpb25JbnRlcm5hbCk6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6V2Vi
UHJvY2Vzc1Byb3h5KToKKyAgICAgICAgKFdlYktpdDo6bV93ZWJMb2NrUmVnaXN0cnkpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnNldFdlYnNpdGVEYXRhU3RvcmUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmlzRHVtbXlQcm9jZXNzUHJveHkgY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZVJlZ2lzdHJhdGlvbldp
dGhEYXRhU3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmFkZEV4aXN0
aW5nV2ViUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6cmVtb3ZlV2Vi
UGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6Z2V0TmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpkaWRTdGFy
dFByb3Zpc2lvbmFsTG9hZEZvck1haW5GcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQcm94eTo6c2Vzc2lvbklEIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6d2Vic2l0ZURhdGFT
dG9yZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vz
c1Byb3h5R0xpYi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6cGxhdGZv
cm1HZXRMYXVuY2hPcHRpb25zKToKKwogMjAyMi0wNC0wOCAgRWxsaW90dCBXaWxsaWFtcyAgPGVt
d0BhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyOTI1OTEuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuY3BwCmluZGV4
IDgzYWYxZTU1ZGRmNzQ4ODIzOWY4NjkxOTI3NzIwYWI2YTg2MzE5N2QuLmI2MzE4ZDdkYTg4MGNi
MDM5ZDFhYThmYjRhNTY5Y2ZlNjVlMTkzYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuY3BwCkBAIC0zODcsNyArMzg3LDggQEAgdm9pZCBHUFVQ
cm9jZXNzUHJveHk6OnByb2Nlc3NXaWxsU2h1dERvd24oSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uKQogCiB2b2lkIEdQVVByb2Nlc3NQcm94eTo6Z2V0R1BVUHJvY2Vzc0Nvbm5lY3Rpb24oV2Vi
UHJvY2Vzc1Byb3h5JiB3ZWJQcm9jZXNzUHJveHksIGNvbnN0IEdQVVByb2Nlc3NDb25uZWN0aW9u
UGFyYW1ldGVycyYgcGFyYW1ldGVycywgTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0R1BV
UHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewotICAgIGFkZFNlc3Np
b24od2ViUHJvY2Vzc1Byb3h5LndlYnNpdGVEYXRhU3RvcmUoKSk7CisgICAgaWYgKGF1dG8qIGRh
dGFTdG9yZSA9IFdlYnNpdGVEYXRhU3RvcmU6OmV4aXN0aW5nRGF0YVN0b3JlRm9yU2Vzc2lvbklE
KHdlYlByb2Nlc3NQcm94eS5zZXNzaW9uSUQoKSkpCisgICAgICAgIGFkZFNlc3Npb24oKmRhdGFT
dG9yZSk7CiAKICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gR1BVUHJv
Y2Vzc1Byb3h5IGlzIHRha2luZyBhIGJhY2tncm91bmQgYXNzZXJ0aW9uIGJlY2F1c2UgYSB3ZWIg
cHJvY2VzcyBpcyByZXF1ZXN0aW5nIGEgY29ubmVjdGlvbiIsIHRoaXMpOwogICAgIHN0YXJ0UmVz
cG9uc2l2ZW5lc3NUaW1lcihVc2VMYXp5U3RvcDo6Tm8pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCmluZGV4IDg4YjJlYTgzODY3MmFjNzE4
NjVlYjY5YmNhZjVmYjIyY2EwMGE4N2YuLjliNDRkNTgxMTdmYWQxN2MzZTlkZjEzYjRkMmFkMmM1
YzdjNmM4YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFs
UGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBh
Z2VQcm94eS5jcHAKQEAgLTgzLDggKzgzLDExIEBAIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpQcm92
aXNpb25hbFBhZ2VQcm94eShXZWJQYWdlUHJveHkmIHBhZ2UsIFJlZjxXZWJQcm9jZXNzUHJvCiAg
ICAgbV9wcm9jZXNzLT5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2VJRCwgKnRoaXMpOwogICAgIG1fcHJvY2Vz
cy0+YWRkUHJvdmlzaW9uYWxQYWdlUHJveHkoKnRoaXMpOwogCi0gICAgaWYgKCZtX3Byb2Nlc3Mt
PndlYnNpdGVEYXRhU3RvcmUoKSAhPSAmbV9wYWdlLndlYnNpdGVEYXRhU3RvcmUoKSkKLSAgICAg
ICAgbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLnBhZ2VCZWdpblVzaW5nV2Vic2l0ZURhdGFTdG9y
ZShtX3BhZ2UuaWRlbnRpZmllcigpLCBtX3Byb2Nlc3MtPndlYnNpdGVEYXRhU3RvcmUoKSk7Cisg
ICAgYXV0byBwcm9jZXNzU2Vzc2lvbklEID0gbV9wcm9jZXNzLT5zZXNzaW9uSUQoKTsKKyAgICBp
ZiAocHJvY2Vzc1Nlc3Npb25JRCAhPSBtX3BhZ2Uud2Vic2l0ZURhdGFTdG9yZSgpLnNlc3Npb25J
RCgpKQorICAgICAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkucGFnZUJlZ2luVXNpbmdXZWJz
aXRlRGF0YVN0b3JlKG1fcGFnZS5pZGVudGlmaWVyKCksIHByb2Nlc3NTZXNzaW9uSUQpOworICAg
IG1fd2Vic2l0ZURhdGFTdG9yZSA9IFdlYnNpdGVEYXRhU3RvcmU6OmV4aXN0aW5nRGF0YVN0b3Jl
Rm9yU2Vzc2lvbklEKHByb2Nlc3NTZXNzaW9uSUQpOworICAgIEFTU0VSVChtX3dlYnNpdGVEYXRh
U3RvcmUpOwogCiAgICAgLy8gSWYgd2UgYXJlIHJlYXR0YWNoaW5nIHRvIGEgU3VzcGVuZGVkUGFn
ZSwgdGhlbiB0aGUgV2ViUHJvY2VzcycgV2ViUGFnZSBhbHJlYWR5IGV4aXN0cyBhbmQKICAgICAv
LyBXZWJQYWdlUHJveHk6OmRpZENyZWF0ZU1haW5GcmFtZSgpIHdpbGwgbm90IGJlIGNhbGxlZCB0
byBpbml0aWFsaXplIG1fbWFpbkZyYW1lLiBJbiBzdWNoCkBAIC0xMTIsOCArMTE1LDggQEAgUHJv
dmlzaW9uYWxQYWdlUHJveHk6On5Qcm92aXNpb25hbFBhZ2VQcm94eSgpCiAgICAgaWYgKCFtX3dh
c0NvbW1pdHRlZCkgewogICAgICAgICBtX3BhZ2UuaW5zcGVjdG9yQ29udHJvbGxlcigpLndpbGxE
ZXN0cm95UHJvdmlzaW9uYWxQYWdlKCp0aGlzKTsKIAotICAgICAgICBpZiAoJm1fcHJvY2Vzcy0+
d2Vic2l0ZURhdGFTdG9yZSgpICE9ICZtX3BhZ2Uud2Vic2l0ZURhdGFTdG9yZSgpKQotICAgICAg
ICAgICAgbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLnBhZ2VFbmRVc2luZ1dlYnNpdGVEYXRhU3Rv
cmUobV9wYWdlLmlkZW50aWZpZXIoKSwgbV9wcm9jZXNzLT53ZWJzaXRlRGF0YVN0b3JlKCkpOwor
ICAgICAgICBpZiAobV9wcm9jZXNzLT5zZXNzaW9uSUQoKSAhPSBtX3BhZ2Uud2Vic2l0ZURhdGFT
dG9yZSgpLnNlc3Npb25JRCgpKQorICAgICAgICAgICAgbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgp
LnBhZ2VFbmRVc2luZ1dlYnNpdGVEYXRhU3RvcmUobV9wYWdlLmlkZW50aWZpZXIoKSwgbV9wcm9j
ZXNzLT5zZXNzaW9uSUQoKSk7CiAKICAgICAgICAgbV9wcm9jZXNzLT5yZW1vdmVNZXNzYWdlUmVj
ZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3dl
YlBhZ2VJRCk7CiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNsb3NlKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmgKaW5kZXggMjJk
MmJiMTJjYTZhZDU4ZjJlZjdiN2E5OTU5M2IzZjA2ZTY0YTg4Zi4uODgzNTAwZmFiYTAzNjY4YzYz
MzNjY2M5Yzk1MTYxOGRjY2MzOTQ0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Q
cm92aXNpb25hbFBhZ2VQcm94eS5oCkBAIC02MSw2ICs2MSw3IEBAIGNsYXNzIFVzZXJEYXRhOwog
Y2xhc3MgV2ViRnJhbWVQcm94eTsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKIGNsYXNzIFdlYlByb2Nl
c3NQcm94eTsKK2NsYXNzIFdlYnNpdGVEYXRhU3RvcmU7CiBzdHJ1Y3QgRnJhbWVJbmZvRGF0YTsK
IHN0cnVjdCBOYXZpZ2F0aW9uQWN0aW9uRGF0YTsKIHN0cnVjdCBVUkxTY2hlbWVUYXNrUGFyYW1l
dGVyczsKQEAgLTgzLDYgKzg0LDcgQEAgcHVibGljOgogICAgIFByb2Nlc3NTd2FwUmVxdWVzdGVk
QnlDbGllbnQgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1f
cHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudDsgfQogICAgIHVpbnQ2NF90IG5hdmlnYXRpb25J
RCgpIGNvbnN0IHsgcmV0dXJuIG1fbmF2aWdhdGlvbklEOyB9CiAgICAgY29uc3QgVVJMJiBwcm92
aXNpb25hbFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvdmlzaW9uYWxMb2FkVVJMOyB9CisgICAg
V2Vic2l0ZURhdGFTdG9yZSogd2Vic2l0ZURhdGFTdG9yZSgpIGNvbnN0IHsgcmV0dXJuIG1fd2Vi
c2l0ZURhdGFTdG9yZS5nZXQoKTsgfQogCiAgICAgYm9vbCBpc1Byb2Nlc3NTd2FwcGluZ09uTmF2
aWdhdGlvblJlc3BvbnNlKCkgY29uc3QgeyByZXR1cm4gbV9pc1Byb2Nlc3NTd2FwcGluZ09uTmF2
aWdhdGlvblJlc3BvbnNlOyB9CiAKQEAgLTE2Myw2ICsxNjUsNyBAQCBwcml2YXRlOgogICAgIFdl
YlBhZ2VQcm94eSYgbV9wYWdlOwogICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fd2ViUGFn
ZUlEOwogICAgIFJlZjxXZWJQcm9jZXNzUHJveHk+IG1fcHJvY2VzczsKKyAgICBSZWZQdHI8V2Vi
c2l0ZURhdGFTdG9yZT4gbV93ZWJzaXRlRGF0YVN0b3JlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxE
cmF3aW5nQXJlYVByb3h5PiBtX2RyYXdpbmdBcmVhOwogICAgIFJlZlB0cjxXZWJGcmFtZVByb3h5
PiBtX21haW5GcmFtZTsKICAgICB1aW50NjRfdCBtX25hdmlnYXRpb25JRDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwCmluZGV4IGNjYmQ2MTI4Nzg1
MGU3MzE2OTFhMzMwYzRlMzBhZDNhMzZlMWYwN2QuLjYyZjFkYTM1MDc2ODk1MTU0MGM4ZTAxZjQx
Y2Y4MzYxMWZhM2FlMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3Bl
bmRlZFBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVk
UGFnZVByb3h5LmNwcApAQCAtNTMsNyArNTMsNyBAQCBSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiBT
dXNwZW5kZWRQYWdlUHJveHk6OmZpbmRSZXVzYWJsZVN1c3BlbmRlZFBhZ2VQcm9jZXNzKFdlYgog
ewogICAgIGZvciAoYXV0byogc3VzcGVuZGVkUGFnZSA6IGFsbFN1c3BlbmRlZFBhZ2VzKCkpIHsK
ICAgICAgICAgYXV0byYgcHJvY2VzcyA9IHN1c3BlbmRlZFBhZ2UtPnByb2Nlc3MoKTsKLSAgICAg
ICAgaWYgKCZwcm9jZXNzLnByb2Nlc3NQb29sKCkgPT0gJnByb2Nlc3NQb29sICYmIHByb2Nlc3Mu
cmVnaXN0cmFibGVEb21haW4oKSA9PSByZWdpc3RyYWJsZURvbWFpbiAmJiAmcHJvY2Vzcy53ZWJz
aXRlRGF0YVN0b3JlKCkgPT0gJmRhdGFTdG9yZSAmJiBwcm9jZXNzLmNyb3NzT3JpZ2luTW9kZSgp
ICE9IENyb3NzT3JpZ2luTW9kZTo6SXNvbGF0ZWQgJiYgcHJvY2Vzcy5jYXB0aXZlUG9ydGFsTW9k
ZSgpID09IGNhcHRpdmVQb3J0YWxNb2RlKQorICAgICAgICBpZiAoJnByb2Nlc3MucHJvY2Vzc1Bv
b2woKSA9PSAmcHJvY2Vzc1Bvb2wgJiYgcHJvY2Vzcy5yZWdpc3RyYWJsZURvbWFpbigpID09IHJl
Z2lzdHJhYmxlRG9tYWluICYmIHByb2Nlc3Muc2Vzc2lvbklEKCkgPT0gZGF0YVN0b3JlLnNlc3Np
b25JRCgpICYmIHByb2Nlc3MuY3Jvc3NPcmlnaW5Nb2RlKCkgIT0gQ3Jvc3NPcmlnaW5Nb2RlOjpJ
c29sYXRlZCAmJiBwcm9jZXNzLmNhcHRpdmVQb3J0YWxNb2RlKCkgPT0gY2FwdGl2ZVBvcnRhbE1v
ZGUpCiAgICAgICAgICAgICByZXR1cm4gJnByb2Nlc3M7CiAgICAgfQogICAgIHJldHVybiBudWxs
cHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRD
YWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZENhY2hlLmNw
cAppbmRleCA2NGExYTlmNjljNmM0NjIyNDQxN2JkYWMyMGNjMGU4MTQzZjVhMDM0Li5lNTdkNzk0
Y2FlMDg1ZTM2MmVhOGJiYmEyMWRiZmQxZGYyMGNjMmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZENhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZENhY2hlLmNwcApAQCAtMTM0LDcgKzEzNCw3IEBAIHZv
aWQgV2ViQmFja0ZvcndhcmRDYWNoZTo6cmVtb3ZlRW50cmllc0ZvclByb2Nlc3MoV2ViUHJvY2Vz
c1Byb3h5JiBwcm9jZXNzKQogdm9pZCBXZWJCYWNrRm9yd2FyZENhY2hlOjpyZW1vdmVFbnRyaWVz
Rm9yU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiB7CiAgICAgcmVtb3ZlRW50cmll
c01hdGNoaW5nKFtzZXNzaW9uSURdKGF1dG8mIGl0ZW0pIHsKLSAgICAgICAgcmV0dXJuIGl0ZW0u
YmFja0ZvcndhcmRDYWNoZUVudHJ5KCktPnByb2Nlc3MoKS53ZWJzaXRlRGF0YVN0b3JlKCkuc2Vz
c2lvbklEKCkgPT0gc2Vzc2lvbklEOworICAgICAgICByZXR1cm4gaXRlbS5iYWNrRm9yd2FyZENh
Y2hlRW50cnkoKS0+cHJvY2VzcygpLnNlc3Npb25JRCgpID09IHNlc3Npb25JRDsKICAgICB9KTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViTG9ja1JlZ2lzdHJ5
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViTG9ja1JlZ2lzdHJ5UHJveHku
Y3BwCmluZGV4IGRlODc5MGVjMWYyMDBkZjUxNGI2NGQ1NDU5MjU2NDhlMzE4MjJjMjcuLmM4M2Vi
NjU3NTg4OGViZjQ3ZjE3OGVmMTQyZTIzYmVmOTA5YWZmZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkxvY2tSZWdpc3RyeVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJMb2NrUmVnaXN0cnlQcm94eS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAK
ICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3Jl
LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9XZWJMb2NrSWRlbnRpZmllci5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvV2ViTG9ja01hbmFnZXJTbmFwc2hvdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvV2ViTG9j
a1JlZ2lzdHJ5Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTUsNDQgKzU2LDU4IEBAIHZv
aWQgV2ViTG9ja1JlZ2lzdHJ5UHJveHk6OnJlcXVlc3RMb2NrKFdlYkNvcmU6OkNsaWVudE9yaWdp
biYmIGNsaWVudE9yaWdpbiwgV2ViCiAgICAgTUVTU0FHRV9DSEVDSyhjbGllbnRJRC5wcm9jZXNz
SWRlbnRpZmllcigpID09IG1fcHJvY2Vzcy5jb3JlUHJvY2Vzc0lkZW50aWZpZXIoKSk7CiAgICAg
bV9oYXNFdmVyUmVxdWVzdGVkTG9ja3MgPSB0cnVlOwogCi0gICAgbV9wcm9jZXNzLndlYnNpdGVE
YXRhU3RvcmUoKS53ZWJMb2NrUmVnaXN0cnkoKS5yZXF1ZXN0TG9jayhXVEZNb3ZlKGNsaWVudE9y
aWdpbiksIGxvY2tJZGVudGlmaWVyLCBjbGllbnRJRCwgV1RGTW92ZShuYW1lKSwgbG9ja01vZGUs
IHN0ZWFsLCBpZkF2YWlsYWJsZSwgW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIGxvY2tJ
ZGVudGlmaWVyLCBjbGllbnRJRF0oYm9vbCBzdWNjZXNzKSB7Ci0gICAgICAgIGlmICh3ZWFrVGhp
cykKLSAgICAgICAgICAgIHdlYWtUaGlzLT5tX3Byb2Nlc3Muc2VuZChNZXNzYWdlczo6UmVtb3Rl
V2ViTG9ja1JlZ2lzdHJ5OjpEaWRDb21wbGV0ZUxvY2tSZXF1ZXN0KGxvY2tJZGVudGlmaWVyLCBj
bGllbnRJRCwgc3VjY2VzcyksIDApOwotICAgIH0sIFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhp
cyB9LCBsb2NrSWRlbnRpZmllciwgY2xpZW50SURdIHsKLSAgICAgICAgaWYgKHdlYWtUaGlzKQot
ICAgICAgICAgICAgd2Vha1RoaXMtPm1fcHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVXZWJM
b2NrUmVnaXN0cnk6OkRpZFN0ZWFsTG9jayhsb2NrSWRlbnRpZmllciwgY2xpZW50SUQpLCAwKTsK
LSAgICB9KTsKKyAgICBpZiAoYXV0byogZGF0YVN0b3JlID0gV2Vic2l0ZURhdGFTdG9yZTo6ZXhp
c3RpbmdEYXRhU3RvcmVGb3JTZXNzaW9uSUQobV9wcm9jZXNzLnNlc3Npb25JRCgpKSkgeworICAg
ICAgICBkYXRhU3RvcmUtPndlYkxvY2tSZWdpc3RyeSgpLnJlcXVlc3RMb2NrKFdURk1vdmUoY2xp
ZW50T3JpZ2luKSwgbG9ja0lkZW50aWZpZXIsIGNsaWVudElELCBXVEZNb3ZlKG5hbWUpLCBsb2Nr
TW9kZSwgc3RlYWwsIGlmQXZhaWxhYmxlLCBbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwg
bG9ja0lkZW50aWZpZXIsIGNsaWVudElEXShib29sIHN1Y2Nlc3MpIHsKKyAgICAgICAgICAgIGlm
ICh3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICB3ZWFrVGhpcy0+bV9wcm9jZXNzLnNlbmQoTWVz
c2FnZXM6OlJlbW90ZVdlYkxvY2tSZWdpc3RyeTo6RGlkQ29tcGxldGVMb2NrUmVxdWVzdChsb2Nr
SWRlbnRpZmllciwgY2xpZW50SUQsIHN1Y2Nlc3MpLCAwKTsKKyAgICAgICAgfSwgW3dlYWtUaGlz
ID0gV2Vha1B0ciB7ICp0aGlzIH0sIGxvY2tJZGVudGlmaWVyLCBjbGllbnRJRF0geworICAgICAg
ICAgICAgaWYgKHdlYWtUaGlzKQorICAgICAgICAgICAgICAgIHdlYWtUaGlzLT5tX3Byb2Nlc3Mu
c2VuZChNZXNzYWdlczo6UmVtb3RlV2ViTG9ja1JlZ2lzdHJ5OjpEaWRTdGVhbExvY2sobG9ja0lk
ZW50aWZpZXIsIGNsaWVudElEKSwgMCk7CisgICAgICAgIH0pOworICAgIH0gZWxzZQorICAgICAg
ICBtX3Byb2Nlc3Muc2VuZChNZXNzYWdlczo6UmVtb3RlV2ViTG9ja1JlZ2lzdHJ5OjpEaWRDb21w
bGV0ZUxvY2tSZXF1ZXN0KGxvY2tJZGVudGlmaWVyLCBjbGllbnRJRCwgZmFsc2UpLCAwKTsKIH0K
IAogdm9pZCBXZWJMb2NrUmVnaXN0cnlQcm94eTo6cmVsZWFzZUxvY2soV2ViQ29yZTo6Q2xpZW50
T3JpZ2luJiYgY2xpZW50T3JpZ2luLCBXZWJDb3JlOjpXZWJMb2NrSWRlbnRpZmllciBsb2NrSWRl
bnRpZmllciwgV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIgY2xpZW50
SUQsIFN0cmluZyYmIG5hbWUpCiB7CiAgICAgTUVTU0FHRV9DSEVDSyhsb2NrSWRlbnRpZmllci5w
cm9jZXNzSWRlbnRpZmllcigpID09IG1fcHJvY2Vzcy5jb3JlUHJvY2Vzc0lkZW50aWZpZXIoKSk7
CiAgICAgTUVTU0FHRV9DSEVDSyhjbGllbnRJRC5wcm9jZXNzSWRlbnRpZmllcigpID09IG1fcHJv
Y2Vzcy5jb3JlUHJvY2Vzc0lkZW50aWZpZXIoKSk7Ci0gICAgbV9wcm9jZXNzLndlYnNpdGVEYXRh
U3RvcmUoKS53ZWJMb2NrUmVnaXN0cnkoKS5yZWxlYXNlTG9jayhXVEZNb3ZlKGNsaWVudE9yaWdp
biksIGxvY2tJZGVudGlmaWVyLCBjbGllbnRJRCwgV1RGTW92ZShuYW1lKSk7CisgICAgaWYgKGF1
dG8qIGRhdGFTdG9yZSA9IFdlYnNpdGVEYXRhU3RvcmU6OmV4aXN0aW5nRGF0YVN0b3JlRm9yU2Vz
c2lvbklEKG1fcHJvY2Vzcy5zZXNzaW9uSUQoKSkpCisgICAgICAgIGRhdGFTdG9yZS0+d2ViTG9j
a1JlZ2lzdHJ5KCkucmVsZWFzZUxvY2soV1RGTW92ZShjbGllbnRPcmlnaW4pLCBsb2NrSWRlbnRp
ZmllciwgY2xpZW50SUQsIFdURk1vdmUobmFtZSkpOwogfQogCiB2b2lkIFdlYkxvY2tSZWdpc3Ry
eVByb3h5OjphYm9ydExvY2tSZXF1ZXN0KFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmIGNsaWVudE9y
aWdpbiwgV2ViQ29yZTo6V2ViTG9ja0lkZW50aWZpZXIgbG9ja0lkZW50aWZpZXIsIFdlYkNvcmU6
OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyIGNsaWVudElELCBTdHJpbmcmJiBuYW1l
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewog
ICAgIE1FU1NBR0VfQ0hFQ0sobG9ja0lkZW50aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIoKSA9PSBt
X3Byb2Nlc3MuY29yZVByb2Nlc3NJZGVudGlmaWVyKCkpOwogICAgIE1FU1NBR0VfQ0hFQ0soY2xp
ZW50SUQucHJvY2Vzc0lkZW50aWZpZXIoKSA9PSBtX3Byb2Nlc3MuY29yZVByb2Nlc3NJZGVudGlm
aWVyKCkpOwotICAgIG1fcHJvY2Vzcy53ZWJzaXRlRGF0YVN0b3JlKCkud2ViTG9ja1JlZ2lzdHJ5
KCkuYWJvcnRMb2NrUmVxdWVzdChXVEZNb3ZlKGNsaWVudE9yaWdpbiksIGxvY2tJZGVudGlmaWVy
LCBjbGllbnRJRCwgV1RGTW92ZShuYW1lKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwor
ICAgIGlmIChhdXRvKiBkYXRhU3RvcmUgPSBXZWJzaXRlRGF0YVN0b3JlOjpleGlzdGluZ0RhdGFT
dG9yZUZvclNlc3Npb25JRChtX3Byb2Nlc3Muc2Vzc2lvbklEKCkpKQorICAgICAgICBkYXRhU3Rv
cmUtPndlYkxvY2tSZWdpc3RyeSgpLmFib3J0TG9ja1JlcXVlc3QoV1RGTW92ZShjbGllbnRPcmln
aW4pLCBsb2NrSWRlbnRpZmllciwgY2xpZW50SUQsIFdURk1vdmUobmFtZSksIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKKyAgICBlbHNlCisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZh
bHNlKTsKIH0KIAogdm9pZCBXZWJMb2NrUmVnaXN0cnlQcm94eTo6c25hcHNob3QoV2ViQ29yZTo6
Q2xpZW50T3JpZ2luJiYgY2xpZW50T3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNv
cmU6OldlYkxvY2tNYW5hZ2VyU25hcHNob3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0g
ICAgbV9wcm9jZXNzLndlYnNpdGVEYXRhU3RvcmUoKS53ZWJMb2NrUmVnaXN0cnkoKS5zbmFwc2hv
dChXVEZNb3ZlKGNsaWVudE9yaWdpbiksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAg
ICBpZiAoYXV0byogZGF0YVN0b3JlID0gV2Vic2l0ZURhdGFTdG9yZTo6ZXhpc3RpbmdEYXRhU3Rv
cmVGb3JTZXNzaW9uSUQobV9wcm9jZXNzLnNlc3Npb25JRCgpKSkKKyAgICAgICAgZGF0YVN0b3Jl
LT53ZWJMb2NrUmVnaXN0cnkoKS5zbmFwc2hvdChXVEZNb3ZlKGNsaWVudE9yaWdpbiksIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBlbHNlCisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKFdlYkNvcmU6OldlYkxvY2tNYW5hZ2VyU25hcHNob3QgeyB9KTsKIH0KIAogdm9pZCBXZWJM
b2NrUmVnaXN0cnlQcm94eTo6Y2xpZW50SXNHb2luZ0F3YXkoV2ViQ29yZTo6Q2xpZW50T3JpZ2lu
JiYgY2xpZW50T3JpZ2luLCBXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmll
ciBjbGllbnRJRCkKIHsKICAgICBNRVNTQUdFX0NIRUNLKGNsaWVudElELnByb2Nlc3NJZGVudGlm
aWVyKCkgPT0gbV9wcm9jZXNzLmNvcmVQcm9jZXNzSWRlbnRpZmllcigpKTsKLSAgICBtX3Byb2Nl
c3Mud2Vic2l0ZURhdGFTdG9yZSgpLndlYkxvY2tSZWdpc3RyeSgpLmNsaWVudElzR29pbmdBd2F5
KFdURk1vdmUoY2xpZW50T3JpZ2luKSwgY2xpZW50SUQpOworICAgIGlmIChhdXRvKiBkYXRhU3Rv
cmUgPSBXZWJzaXRlRGF0YVN0b3JlOjpleGlzdGluZ0RhdGFTdG9yZUZvclNlc3Npb25JRChtX3By
b2Nlc3Muc2Vzc2lvbklEKCkpKQorICAgICAgICBkYXRhU3RvcmUtPndlYkxvY2tSZWdpc3RyeSgp
LmNsaWVudElzR29pbmdBd2F5KFdURk1vdmUoY2xpZW50T3JpZ2luKSwgY2xpZW50SUQpOwogfQog
CiB2b2lkIFdlYkxvY2tSZWdpc3RyeVByb3h5Ojpwcm9jZXNzRGlkRXhpdCgpCiB7Ci0gICAgaWYg
KG1faGFzRXZlclJlcXVlc3RlZExvY2tzKQotICAgICAgICBtX3Byb2Nlc3Mud2Vic2l0ZURhdGFT
dG9yZSgpLndlYkxvY2tSZWdpc3RyeSgpLmNsaWVudHNBcmVHb2luZ0F3YXkobV9wcm9jZXNzLmNv
cmVQcm9jZXNzSWRlbnRpZmllcigpKTsKKyAgICBpZiAoIW1faGFzRXZlclJlcXVlc3RlZExvY2tz
KQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoYXV0byogZGF0YVN0b3JlID0gV2Vic2l0ZURh
dGFTdG9yZTo6ZXhpc3RpbmdEYXRhU3RvcmVGb3JTZXNzaW9uSUQobV9wcm9jZXNzLnNlc3Npb25J
RCgpKSkKKyAgICAgICAgZGF0YVN0b3JlLT53ZWJMb2NrUmVnaXN0cnkoKS5jbGllbnRzQXJlR29p
bmdBd2F5KG1fcHJvY2Vzcy5jb3JlUHJvY2Vzc0lkZW50aWZpZXIoKSk7CiB9CiAKICN1bmRlZiBN
RVNTQUdFX0NIRUNLCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRl
eCBlYmZjYzhiNDU5NjQ2NzU4YmFjMzJiNzM1NTQ2MDVhN2JiYjkyZDgwLi5iMGNjOTQ2YzU4NWVh
YTY4NTVmMDBkYjZkZGM3NmQxNjZmM2M0MTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAKQEAgLTk3OCw3ICs5NzgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c3dh
cFRvUHJvdmlzaW9uYWxQYWdlKHN0ZDo6dW5pcXVlX3B0cjxQcm92aXNpb25hbFBhZ2VQcm94eT4g
cAogICAgIG1fcHJvY2VzcyA9IHByb3Zpc2lvbmFsUGFnZS0+cHJvY2VzcygpOwogICAgIG1fd2Vi
UGFnZUlEID0gcHJvdmlzaW9uYWxQYWdlLT53ZWJQYWdlSUQoKTsKICAgICBwYWdlQ2xpZW50KCku
ZGlkQ2hhbmdlV2ViUGFnZUlEKCk7Ci0gICAgbV93ZWJzaXRlRGF0YVN0b3JlID0gbV9wcm9jZXNz
LT53ZWJzaXRlRGF0YVN0b3JlKCk7CisgICAgbV93ZWJzaXRlRGF0YVN0b3JlID0gKnByb3Zpc2lv
bmFsUGFnZS0+d2Vic2l0ZURhdGFTdG9yZSgpOwogCiAjaWYgSEFWRShWSVNJQklMSVRZX1BST1BB
R0FUSU9OX1ZJRVcpCiAgICAgbV9jb250ZXh0SURGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb25Jbldl
YlByb2Nlc3MgPSBwcm92aXNpb25hbFBhZ2UtPmNvbnRleHRJREZvclZpc2liaWxpdHlQcm9wYWdh
dGlvbkluV2ViUHJvY2VzcygpOwpAQCAtMzYxNCw3ICszNjE0LDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmNvbW1pdFByb3Zpc2lvbmFsUGFnZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWVJ
bmZvRGF0YSYKICAgICByZW1vdmVBbGxNZXNzYWdlUmVjZWl2ZXJzKCk7CiAgICAgYXV0byogbmF2
aWdhdGlvbiA9IG5hdmlnYXRpb25TdGF0ZSgpLm5hdmlnYXRpb24obV9wcm92aXNpb25hbFBhZ2Ut
Pm5hdmlnYXRpb25JRCgpKTsKICAgICBib29sIGRpZFN1c3BlbmRQcmV2aW91c1BhZ2UgPSBuYXZp
Z2F0aW9uICYmICFtX3Byb3Zpc2lvbmFsUGFnZS0+aXNQcm9jZXNzU3dhcHBpbmdPbk5hdmlnYXRp
b25SZXNwb25zZSgpID8gc3VzcGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJsZSgqbmF2aWdhdGlvbiwg
bWFpbkZyYW1lSURJblByZXZpb3VzUHJvY2VzcywgbV9wcm92aXNpb25hbFBhZ2UtPnByb2Nlc3NT
d2FwUmVxdWVzdGVkQnlDbGllbnQoKSwgc2hvdWxkRGVsYXlDbG9zaW5nVW50aWxGaXJzdExheWVy
Rmx1c2gpIDogZmFsc2U7Ci0gICAgbV9wcm9jZXNzLT5yZW1vdmVXZWJQYWdlKCp0aGlzLCBtX3dl
YnNpdGVEYXRhU3RvcmUucHRyKCkgPT0gJm1fcHJvdmlzaW9uYWxQYWdlLT5wcm9jZXNzKCkud2Vi
c2l0ZURhdGFTdG9yZSgpID8gV2ViUHJvY2Vzc1Byb3h5OjpFbmRzVXNpbmdEYXRhU3RvcmU6Ok5v
IDogV2ViUHJvY2Vzc1Byb3h5OjpFbmRzVXNpbmdEYXRhU3RvcmU6Olllcyk7CisgICAgbV9wcm9j
ZXNzLT5yZW1vdmVXZWJQYWdlKCp0aGlzLCBtX3dlYnNpdGVEYXRhU3RvcmUucHRyKCkgPT0gbV9w
cm92aXNpb25hbFBhZ2UtPndlYnNpdGVEYXRhU3RvcmUoKSA/IFdlYlByb2Nlc3NQcm94eTo6RW5k
c1VzaW5nRGF0YVN0b3JlOjpObyA6IFdlYlByb2Nlc3NQcm94eTo6RW5kc1VzaW5nRGF0YVN0b3Jl
OjpZZXMpOwogCiAgICAgLy8gVGhlcmUgaXMgbm8gd2F5IHdlJ2xsIGJlIGFibGUgdG8gcmV0dXJu
IHRvIHRoZSBwYWdlIGluIHRoZSBwcmV2aW91cyBwYWdlIHNvIGNsb3NlIGl0LgogICAgIGlmICgh
ZGlkU3VzcGVuZFByZXZpb3VzUGFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzQ2FjaGUuY3BwCmluZGV4IDUxZmNiZTY2MzQxYTk5MzBmNzhjNDI3MTM0OGEwMWViMTRiM2My
NzEuLjA2OTEzMzQ1MmRiMTU3Y2Q2MzM4OGU3ZjA1YmJlYTczNWY2NmU1YjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NDYWNoZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc0NhY2hlLmNwcApAQCAtNzYsOCArNzYsOCBAQCBi
b29sIFdlYlByb2Nlc3NDYWNoZTo6Y2FuQ2FjaGVQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYgcHJv
Y2VzcykgY29uc3QKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGF1dG8gc2Vz
c2lvbklEID0gcHJvY2Vzcy53ZWJzaXRlRGF0YVN0b3JlKCkuc2Vzc2lvbklEKCk7Ci0gICAgaWYg
KHNlc3Npb25JRC5pc0VwaGVtZXJhbCgpICYmICFwcm9jZXNzLnByb2Nlc3NQb29sKCkuaGFzUGFn
ZXNVc2luZ1dlYnNpdGVEYXRhU3RvcmUocHJvY2Vzcy53ZWJzaXRlRGF0YVN0b3JlKCkpKSB7Cisg
ICAgYXV0byBzZXNzaW9uSUQgPSBwcm9jZXNzLnNlc3Npb25JRCgpOworICAgIGlmIChzZXNzaW9u
SUQuaXNFcGhlbWVyYWwoKSAmJiAhcHJvY2Vzcy5wcm9jZXNzUG9vbCgpLmhhc1BhZ2VzVXNpbmdX
ZWJzaXRlRGF0YVN0b3JlKHByb2Nlc3Muc2Vzc2lvbklEKCkpKSB7CiAgICAgICAgIFdFQlBST0NF
U1NDQUNIRV9SRUxFQVNFX0xPRygiY2FuQ2FjaGVQcm9jZXNzOiBOb3QgY2FjaGluZyBwcm9jZXNz
IGJlY2F1c2UgdGhpcyBzZXNzaW9uIGhhcyBiZWVuIGRlc3Ryb3llZCIsIHByb2Nlc3MucHJvY2Vz
c0lkZW50aWZpZXIoKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC0xNTMsNyAr
MTUzLDcgQEAgUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gV2ViUHJvY2Vzc0NhY2hlOjp0YWtlUHJv
Y2Vzcyhjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZUQKICAgICBpZiAoaXQgPT0gbV9wcm9jZXNz
ZXNQZXJSZWdpc3RyYWJsZURvbWFpbi5lbmQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
LSAgICBpZiAoJml0LT52YWx1ZS0+cHJvY2VzcygpLndlYnNpdGVEYXRhU3RvcmUoKSAhPSAmZGF0
YVN0b3JlKQorICAgIGlmIChpdC0+dmFsdWUtPnByb2Nlc3MoKS5zZXNzaW9uSUQoKSAhPSBkYXRh
U3RvcmUuc2Vzc2lvbklEKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgaWYgKGl0
LT52YWx1ZS0+cHJvY2VzcygpLmNhcHRpdmVQb3J0YWxNb2RlKCkgIT0gY2FwdGl2ZVBvcnRhbE1v
ZGUpCkBAIC0yMTIsNyArMjEyLDcgQEAgdm9pZCBXZWJQcm9jZXNzQ2FjaGU6OmNsZWFyQWxsUHJv
Y2Vzc2VzRm9yU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiB7CiAgICAgVmVjdG9y
PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBrZXlzVG9SZW1vdmU7CiAgICAgZm9yIChhdXRv
JiBwYWlyIDogbV9wcm9jZXNzZXNQZXJSZWdpc3RyYWJsZURvbWFpbikgewotICAgICAgICBpZiAo
cGFpci52YWx1ZS0+cHJvY2VzcygpLndlYnNpdGVEYXRhU3RvcmUoKS5zZXNzaW9uSUQoKSA9PSBz
ZXNzaW9uSUQpIHsKKyAgICAgICAgaWYgKHBhaXIudmFsdWUtPnByb2Nlc3MoKS5zZXNzaW9uSUQo
KSA9PSBzZXNzaW9uSUQpIHsKICAgICAgICAgICAgIFdFQlBST0NFU1NDQUNIRV9SRUxFQVNFX0xP
RygiY2xlYXJBbGxQcm9jZXNzZXNGb3JTZXNzaW9uOiBFdmljdGluZyBwcm9jZXNzIGJlY2F1c2Ug
aXRzIHNlc3Npb24gd2FzIGRlc3Ryb3llZCIsIHBhaXIudmFsdWUtPnByb2Nlc3MoKS5wcm9jZXNz
SWRlbnRpZmllcigpKTsKICAgICAgICAgICAgIGtleXNUb1JlbW92ZS5hcHBlbmQocGFpci5rZXkp
OwogICAgICAgICB9CkBAIC0yMjIsNyArMjIyLDcgQEAgdm9pZCBXZWJQcm9jZXNzQ2FjaGU6OmNs
ZWFyQWxsUHJvY2Vzc2VzRm9yU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAKICAg
ICBWZWN0b3I8dWludDY0X3Q+IHBlbmRpbmdSZXF1ZXN0c1RvUmVtb3ZlOwogICAgIGZvciAoYXV0
byYgcGFpciA6IG1fcGVuZGluZ0FkZFJlcXVlc3RzKSB7Ci0gICAgICAgIGlmIChwYWlyLnZhbHVl
LT5wcm9jZXNzKCkud2Vic2l0ZURhdGFTdG9yZSgpLnNlc3Npb25JRCgpID09IHNlc3Npb25JRCkg
eworICAgICAgICBpZiAocGFpci52YWx1ZS0+cHJvY2VzcygpLnNlc3Npb25JRCgpID09IHNlc3Np
b25JRCkgewogICAgICAgICAgICAgV0VCUFJPQ0VTU0NBQ0hFX1JFTEVBU0VfTE9HKCJjbGVhckFs
bFByb2Nlc3Nlc0ZvclNlc3Npb246IEV2aWN0aW5nIHByb2Nlc3MgYmVjYXVzZSBpdHMgc2Vzc2lv
biB3YXMgZGVzdHJveWVkIiwgcGFpci52YWx1ZS0+cHJvY2VzcygpLnByb2Nlc3NJZGVudGlmaWVy
KCkpOwogICAgICAgICAgICAgcGVuZGluZ1JlcXVlc3RzVG9SZW1vdmUuYXBwZW5kKHBhaXIua2V5
KTsKICAgICAgICAgfQpAQCAtMjc2LDcgKzI3Niw5IEBAIFdlYlByb2Nlc3NDYWNoZTo6Q2FjaGVk
UHJvY2Vzczo6Q2FjaGVkUHJvY2VzcyhSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MpCiAj
ZW5kaWYKIHsKICAgICBSRUxFQVNFX0FTU0VSVCghbV9wcm9jZXNzLT5wYWdlQ291bnQoKSk7Ci0g
ICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9NRVNTQUdFKCFtX3Byb2Nlc3MtPndlYnNpdGVEYXRhU3Rv
cmUoKS5wcm9jZXNzZXMoKS5jb250YWlucygqbV9wcm9jZXNzKSwgIk9ubHkgcHJvY2Vzc2VzIHdp
dGggcGFnZXMgc2hvdWxkIGJlIHJlZ2lzdGVyZWQgd2l0aCB0aGUgZGF0YSBzdG9yZSIpOworICAg
IGF1dG8qIGRhdGFTdG9yZSA9IFdlYnNpdGVEYXRhU3RvcmU6OmV4aXN0aW5nRGF0YVN0b3JlRm9y
U2Vzc2lvbklEKG1fcHJvY2Vzcy0+c2Vzc2lvbklEKCkpOworICAgIFJFTEVBU0VfQVNTRVJUKGRh
dGFTdG9yZSk7CisgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9NRVNTQUdFKCFkYXRhU3RvcmUtPnBy
b2Nlc3NlcygpLmNvbnRhaW5zKCptX3Byb2Nlc3MpLCAiT25seSBwcm9jZXNzZXMgd2l0aCBwYWdl
cyBzaG91bGQgYmUgcmVnaXN0ZXJlZCB3aXRoIHRoZSBkYXRhIHN0b3JlIik7CiAgICAgbV9wcm9j
ZXNzLT5zZXRJc0luUHJvY2Vzc0NhY2hlKHRydWUpOwogICAgIG1fZXZpY3Rpb25UaW1lci5zdGFy
dE9uZVNob3QoY2FjaGVkUHJvY2Vzc0xpZmV0aW1lKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCA3N2M0YmU3OTQzZDFiMDI0MjJlNzY3NjI3OGMy
MGY4YzA5NTNiMDQ5Li43ZGUzYTg3ZWY2Y2VmYzAyZGYyODBhOWFjODFhN2IxZjgwMGI0ZDIyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC01NzEsNyAr
NTcxLDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoUmVtb3RlV29ya2VyQ29udGV4
dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFJlbW8KIAogICAgIC8vIFByaW9yaXRpemUgdGhl
IHJlcXVlc3RpbmcgV2ViUHJvY2VzcyBmb3IgcnVubmluZyB0aGUgc2VydmljZSB3b3JrZXIuCiAg
ICAgaWYgKCFyZW1vdGVXb3JrZXJQcm9jZXNzUHJveHkgJiYgIXNob3VsZFVzZVNlcGFyYXRlUmVt
b3RlV29ya2VyUHJvY2VzcyAmJiByZXF1ZXN0aW5nUHJvY2VzcykgewotICAgICAgICBpZiAoJnJl
cXVlc3RpbmdQcm9jZXNzLT53ZWJzaXRlRGF0YVN0b3JlKCkgPT0gd2Vic2l0ZURhdGFTdG9yZSAm
JiByZXF1ZXN0aW5nUHJvY2Vzcy0+aXNNYXRjaGluZ1JlZ2lzdHJhYmxlRG9tYWluKHJlZ2lzdHJh
YmxlRG9tYWluKSkKKyAgICAgICAgaWYgKHJlcXVlc3RpbmdQcm9jZXNzLT5zZXNzaW9uSUQoKSA9
PSB3ZWJzaXRlRGF0YVN0b3JlLT5zZXNzaW9uSUQoKSAmJiByZXF1ZXN0aW5nUHJvY2Vzcy0+aXNN
YXRjaGluZ1JlZ2lzdHJhYmxlRG9tYWluKHJlZ2lzdHJhYmxlRG9tYWluKSkKICAgICAgICAgICAg
IHVzZVByb2Nlc3NGb3JSZW1vdGVXb3JrZXJzKCpyZXF1ZXN0aW5nUHJvY2Vzcyk7CiAgICAgfQog
CkBAIC01NzksNyArNTc5LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoUmVtb3Rl
V29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFJlbW8KICAgICAgICAgZm9y
IChhdXRvJiBwcm9jZXNzIDogcHJvY2Vzc1Bvb2wtPm1fcHJvY2Vzc2VzKSB7CiAgICAgICAgICAg
ICBpZiAocHJvY2Vzcy5wdHIoKSA9PSBwcm9jZXNzUG9vbC0+bV9wcmV3YXJtZWRQcm9jZXNzLmdl
dCgpIHx8IHByb2Nlc3MtPmlzRHVtbXlQcm9jZXNzUHJveHkoKSkKICAgICAgICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgICAgIGlmICgmcHJvY2Vzcy0+d2Vic2l0ZURhdGFTdG9yZSgpICE9
IHdlYnNpdGVEYXRhU3RvcmUpCisgICAgICAgICAgICBpZiAocHJvY2Vzcy0+c2Vzc2lvbklEKCkg
IT0gd2Vic2l0ZURhdGFTdG9yZS0+c2Vzc2lvbklEKCkpCiAgICAgICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgICAgICBpZiAoIXByb2Nlc3MtPmlzTWF0Y2hpbmdSZWdpc3RyYWJsZURvbWFp
bihyZWdpc3RyYWJsZURvbWFpbikpCiAgICAgICAgICAgICAgICAgY29udGludWU7CkBAIC0xMDg1
LDcgKzEwODUsNyBAQCBSZWY8V2ViUHJvY2Vzc1Byb3h5PiBXZWJQcm9jZXNzUG9vbDo6cHJvY2Vz
c0ZvclJlZ2lzdHJhYmxlRG9tYWluKFdlYnNpdGVEYXRhU3RvcgogICAgICAgICAgICAgaWYgKHBy
b2Nlc3MtPmlzUnVubmluZ1NlcnZpY2VXb3JrZXJzKCkpCiAgICAgICAgICAgICAgICAgY29udGlu
dWU7CiAjZW5kaWYKLSAgICAgICAgICAgIGlmIChtdXN0TWF0Y2hEYXRhU3RvcmUgJiYgJnByb2Nl
c3MtPndlYnNpdGVEYXRhU3RvcmUoKSAhPSAmd2Vic2l0ZURhdGFTdG9yZSkKKyAgICAgICAgICAg
IGlmIChtdXN0TWF0Y2hEYXRhU3RvcmUgJiYgcHJvY2Vzcy0+c2Vzc2lvbklEKCkgIT0gd2Vic2l0
ZURhdGFTdG9yZS5zZXNzaW9uSUQoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgICAgIHJldHVybiBwcm9jZXNzOwogICAgICAgICB9CkBAIC0xMTI1LDcgKzExMjUsNyBAQCBS
ZWY8V2ViUGFnZVByb3h5PiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50
JiBwYWdlQ2xpZW50LCBSZWY8QVBJOgogICAgICAgICAvLyBTaGFyaW5nIHByb2Nlc3NlcywgZS5n
LiB3aGVuIGNyZWF0aW5nIHRoZSBwYWdlIHZpYSB3aW5kb3cub3BlbigpLgogICAgICAgICBwcm9j
ZXNzID0gJnBhZ2VDb25maWd1cmF0aW9uLT5yZWxhdGVkUGFnZSgpLT5lbnN1cmVSdW5uaW5nUHJv
Y2VzcygpOwogICAgICAgICAvLyBXZSBkbyBub3Qgc3VwcG9ydCBzZXZlcmFsIFdlYnNpdGVEYXRh
U3RvcmVzIHNoYXJpbmcgYSBzaW5nbGUgcHJvY2Vzcy4KLSAgICAgICAgQVNTRVJUKHByb2Nlc3Mt
PmlzRHVtbXlQcm9jZXNzUHJveHkoKSB8fCBwYWdlQ29uZmlndXJhdGlvbi0+d2Vic2l0ZURhdGFT
dG9yZSgpID09ICZwcm9jZXNzLT53ZWJzaXRlRGF0YVN0b3JlKCkpOworICAgICAgICBBU1NFUlQo
cHJvY2Vzcy0+aXNEdW1teVByb2Nlc3NQcm94eSgpIHx8IHBhZ2VDb25maWd1cmF0aW9uLT53T2Vi
c2l0ZURhdGFTdG9yZSgpLT5zZXNzaW9uSUQoKSA9PSBwcm9jZXNzLT5zZXNzaW9uSUQoKSk7CiAg
ICAgICAgIEFTU0VSVCgmcGFnZUNvbmZpZ3VyYXRpb24tPnJlbGF0ZWRQYWdlKCktPndlYnNpdGVE
YXRhU3RvcmUoKSA9PSBwYWdlQ29uZmlndXJhdGlvbi0+d2Vic2l0ZURhdGFTdG9yZSgpKTsKICAg
ICB9IGVsc2UgaWYgKCFtX2lzRGVsYXllZFdlYlByb2Nlc3NMYXVuY2hEaXNhYmxlZCkgewogICAg
ICAgICAvLyBJbiB0aGUgY29tbW9uIGNhc2UsIHdlIGRlbGF5IHByb2Nlc3MgbGF1bmNoIHVudGls
IHNvbWV0aGluZyBpcyBhY3R1YWxseSBsb2FkZWQgaW4gdGhlIHBhZ2UuCkBAIC0xMTgyLDE5ICsx
MTgyLDE4IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnVwZGF0ZVJlbW90ZVdvcmtlclVzZXJBZ2Vu
dChjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkKICAgICAgICAgd29ya2VyUHJvY2Vzcy5zZXRSZW1v
dGVXb3JrZXJVc2VyQWdlbnQobV9yZW1vdGVXb3JrZXJVc2VyQWdlbnQpOwogfQogCi12b2lkIFdl
YlByb2Nlc3NQb29sOjpwYWdlQmVnaW5Vc2luZ1dlYnNpdGVEYXRhU3RvcmUoV2ViUGFnZVByb3h5
SWRlbnRpZmllciBwYWdlSUQsIFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSkKK3ZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OnBhZ2VCZWdpblVzaW5nV2Vic2l0ZURhdGFTdG9yZShXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyIHBhZ2VJRCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogewogICAgIFJFTEVB
U0VfQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBSRUxFQVNFX0FTU0VSVChtX3Nlc3Np
b25Ub1BhZ2VJRHNNYXAuaXNWYWxpZEtleShkYXRhU3RvcmUuc2Vzc2lvbklEKCkpKTsKLSAgICBh
dXRvIHJlc3VsdCA9IG1fc2Vzc2lvblRvUGFnZUlEc01hcC5hZGQoZGF0YVN0b3JlLnNlc3Npb25J
RCgpLCBIYXNoU2V0PFdlYlBhZ2VQcm94eUlkZW50aWZpZXI+KCkpLml0ZXJhdG9yLT52YWx1ZS5h
ZGQocGFnZUlEKTsKKyAgICBSRUxFQVNFX0FTU0VSVChtX3Nlc3Npb25Ub1BhZ2VJRHNNYXAuaXNW
YWxpZEtleShzZXNzaW9uSUQpKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1fc2Vzc2lvblRvUGFnZUlE
c01hcC5hZGQoc2Vzc2lvbklELCBIYXNoU2V0PFdlYlBhZ2VQcm94eUlkZW50aWZpZXI+KCkpLml0
ZXJhdG9yLT52YWx1ZS5hZGQocGFnZUlEKTsKICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVz
dWx0LmlzTmV3RW50cnkpOwogfQogCi12b2lkIFdlYlByb2Nlc3NQb29sOjpwYWdlRW5kVXNpbmdX
ZWJzaXRlRGF0YVN0b3JlKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCBXZWJzaXRlRGF0
YVN0b3JlJiBkYXRhU3RvcmUpCit2b2lkIFdlYlByb2Nlc3NQb29sOjpwYWdlRW5kVXNpbmdXZWJz
aXRlRGF0YVN0b3JlKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCBQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwot
ICAgIGF1dG8gc2Vzc2lvbklEID0gZGF0YVN0b3JlLnNlc3Npb25JRCgpOwotICAgIFJFTEVBU0Vf
QVNTRVJUKG1fc2Vzc2lvblRvUGFnZUlEc01hcC5pc1ZhbGlkS2V5KGRhdGFTdG9yZS5zZXNzaW9u
SUQoKSkpOworICAgIFJFTEVBU0VfQVNTRVJUKG1fc2Vzc2lvblRvUGFnZUlEc01hcC5pc1ZhbGlk
S2V5KHNlc3Npb25JRCkpOwogICAgIGF1dG8gaXRlcmF0b3IgPSBtX3Nlc3Npb25Ub1BhZ2VJRHNN
YXAuZmluZChzZXNzaW9uSUQpOwogICAgIFJFTEVBU0VfQVNTRVJUKGl0ZXJhdG9yICE9IG1fc2Vz
c2lvblRvUGFnZUlEc01hcC5lbmQoKSk7CiAKQEAgLTEyMDksMTEgKzEyMDgsMTEgQEAgdm9pZCBX
ZWJQcm9jZXNzUG9vbDo6cGFnZUVuZFVzaW5nV2Vic2l0ZURhdGFTdG9yZShXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyIHBhZ2VJRCwKICAgICB9CiB9CiAKLWJvb2wgV2ViUHJvY2Vzc1Bvb2w6Omhhc1Bh
Z2VzVXNpbmdXZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSkgY29u
c3QKK2Jvb2wgV2ViUHJvY2Vzc1Bvb2w6Omhhc1BhZ2VzVXNpbmdXZWJzaXRlRGF0YVN0b3JlKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgY29uc3QKIHsKICAgICBSRUxFQVNFX0FTU0VSVChSdW5M
b29wOjppc01haW4oKSk7Ci0gICAgUkVMRUFTRV9BU1NFUlQobV9zZXNzaW9uVG9QYWdlSURzTWFw
LmlzVmFsaWRLZXkoZGF0YVN0b3JlLnNlc3Npb25JRCgpKSk7Ci0gICAgcmV0dXJuIG1fc2Vzc2lv
blRvUGFnZUlEc01hcC5jb250YWlucyhkYXRhU3RvcmUuc2Vzc2lvbklEKCkpOworICAgIFJFTEVB
U0VfQVNTRVJUKG1fc2Vzc2lvblRvUGFnZUlEc01hcC5pc1ZhbGlkS2V5KHNlc3Npb25JRCkpOwor
ICAgIHJldHVybiBtX3Nlc3Npb25Ub1BhZ2VJRHNNYXAuY29udGFpbnMoc2Vzc2lvbklEKTsKIH0K
IAogRG93bmxvYWRQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmRvd25sb2FkKFdlYnNpdGVEYXRhU3Rv
cmUmIGRhdGFTdG9yZSwgV2ViUGFnZVByb3h5KiBpbml0aWF0aW5nUGFnZSwgY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lKQpAQCAt
MTk3NSw3ICsxOTc0LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cHJvY2Vzc0Zvck5hdmlnYXRp
b25JbnRlcm5hbChXZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0IEFQSToKICAgICAgICAgTE9HKFBy
b2Nlc3NTd2FwcGluZywgIihQcm9jZXNzU3dhcHBpbmcpIENvbnNpZGVyaW5nIHJlLXVzZSBvZiBh
IHByZXZpb3VzbHkgY2FjaGVkIHByb2Nlc3MgZm9yIGRvbWFpbiAlcyIsIHRhcmdldFJlZ2lzdHJh
YmxlRG9tYWluLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgICAgIGlmIChhdXRvKiBw
cm9jZXNzID0gbV9zd2FwcGVkUHJvY2Vzc2VzUGVyUmVnaXN0cmFibGVEb21haW4uZ2V0KHRhcmdl
dFJlZ2lzdHJhYmxlRG9tYWluKSkgewotICAgICAgICAgICAgaWYgKCZwcm9jZXNzLT53ZWJzaXRl
RGF0YVN0b3JlKCkgPT0gZGF0YVN0b3JlLnB0cigpKSB7CisgICAgICAgICAgICBpZiAocHJvY2Vz
cy0+c2Vzc2lvbklEKCkgPT0gZGF0YVN0b3JlLT5zZXNzaW9uSUQoKSkgewogICAgICAgICAgICAg
ICAgIExPRyhQcm9jZXNzU3dhcHBpbmcsICIoUHJvY2Vzc1N3YXBwaW5nKSBSZXVzaW5nIGEgcHJl
dmlvdXNseSBjYWNoZWQgcHJvY2VzcyB3aXRoIHBpZCAlaSB0byBjb250aW51ZSBuYXZpZ2F0aW9u
IHRvIFVSTCAlcyIsIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIHRhcmdldFVSTC5zdHJp
bmcoKS51dGY4KCkuZGF0YSgpKTsKIAogICAgICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9u
SGFuZGxlcigqcHJvY2VzcywgbnVsbHB0ciwgcmVhc29uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4IDQwOWE3OWI1MWI3MDUwZDEwOGJlMTMxMGZlMmYwYTJj
MGY3NTU3ZTcuLjM4MjliMmU2YTg3MGNlOTFhYzVmY2Y1MGYzNTNjNjdjYzZlODM0ODcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtMjE0LDkgKzIxNCw5IEBA
IHB1YmxpYzoKIAogICAgIFJlZjxXZWJQYWdlUHJveHk+IGNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVu
dCYsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmKTsKIAotICAgIHZvaWQgcGFnZUJlZ2lu
VXNpbmdXZWJzaXRlRGF0YVN0b3JlKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYnNpdGVEYXRh
U3RvcmUmKTsKLSAgICB2b2lkIHBhZ2VFbmRVc2luZ1dlYnNpdGVEYXRhU3RvcmUoV2ViUGFnZVBy
b3h5SWRlbnRpZmllciwgV2Vic2l0ZURhdGFTdG9yZSYpOwotICAgIGJvb2wgaGFzUGFnZXNVc2lu
Z1dlYnNpdGVEYXRhU3RvcmUoV2Vic2l0ZURhdGFTdG9yZSYpIGNvbnN0OworICAgIHZvaWQgcGFn
ZUJlZ2luVXNpbmdXZWJzaXRlRGF0YVN0b3JlKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFBBTDo6
U2Vzc2lvbklEKTsKKyAgICB2b2lkIHBhZ2VFbmRVc2luZ1dlYnNpdGVEYXRhU3RvcmUoV2ViUGFn
ZVByb3h5SWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQpOworICAgIGJvb2wgaGFzUGFnZXNVc2lu
Z1dlYnNpdGVEYXRhU3RvcmUoUEFMOjpTZXNzaW9uSUQpIGNvbnN0OwogCiAgICAgY29uc3QgU3Ry
aW5nJiBpbmplY3RlZEJ1bmRsZVBhdGgoKSBjb25zdCB7IHJldHVybiBtX2NvbmZpZ3VyYXRpb24t
PmluamVjdGVkQnVuZGxlUGF0aCgpOyB9CiAjaWYgUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCAxNzA0NTBhOTViYTZlOGE0
OWVlNWZjODFlMTFiNTUwOTFiYjk0YjYyLi4wYjQxNjgzNTI2OGE4YTM3MTUyNDhmYzZiNWI4ZWQw
NjZhYmU2Y2MxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5j
cHAKQEAgLTI0MSw3ICsyNDEsNiBAQCBXZWJQcm9jZXNzUHJveHk6OldlYlByb2Nlc3NQcm94eShX
ZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIFdlYnNpdGVEYXRhU3RvcmUqCiAjZW5kaWYKICAg
ICAsIG1faXNSZXNwb25zaXZlKE5vT3JNYXliZTo6TWF5YmUpCiAgICAgLCBtX3Zpc2libGVQYWdl
Q291bnRlcihbdGhpc10oUmVmQ291bnRlckV2ZW50KSB7IHVwZGF0ZUJhY2tncm91bmRSZXNwb25z
aXZlbmVzc1RpbWVyKCk7IH0pCi0gICAgLCBtX3dlYnNpdGVEYXRhU3RvcmUod2Vic2l0ZURhdGFT
dG9yZSkKICNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICAgICAs
IG1fdXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eShtYWtlVW5pcXVlPFVzZXJNZWRpYUNhcHR1
cmVNYW5hZ2VyUHJveHk+KG1ha2VVbmlxdWVSZWY8VUlQcm94eUZvckNhcHR1cmU+KCp0aGlzKSkp
CiAjZW5kaWYKQEAgLTI1OCw3ICsyNTcsOCBAQCBXZWJQcm9jZXNzUHJveHk6OldlYlByb2Nlc3NQ
cm94eShXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIFdlYnNpdGVEYXRhU3RvcmUqCiAgICAg
QVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKIAogICAgIFdlYlBhc3Rl
Ym9hcmRQcm94eTo6c2luZ2xldG9uKCkuYWRkV2ViUHJvY2Vzc1Byb3h5KCp0aGlzKTsKLQorICAg
IGlmICh3ZWJzaXRlRGF0YVN0b3JlKQorICAgICAgICBtX3Nlc3Npb25JRCA9IHdlYnNpdGVEYXRh
U3RvcmUtPnNlc3Npb25JRCgpOwogICAgIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOwogfQogCkBAIC0z
NDgsMzIgKzM0OCwzNCBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6c2V0SXNJblByb2Nlc3NDYWNo
ZShib29sIHZhbHVlLCBXaWxsU2h1dERvd24gd2lsbFNodXREb3duKQogCiB2b2lkIFdlYlByb2Nl
c3NQcm94eTo6c2V0V2Vic2l0ZURhdGFTdG9yZShXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUp
CiB7Ci0gICAgQVNTRVJUKCFtX3dlYnNpdGVEYXRhU3RvcmUpOworICAgIEFTU0VSVCghbV9zZXNz
aW9uSUQuaXNWYWxpZCgpKTsKICAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vz
cywgInNldFdlYnNpdGVEYXRhU3RvcmUoKSBkYXRhU3RvcmU9JXAsIHNlc3Npb25JRD0lIiBQUkl1
NjQsICZkYXRhU3RvcmUsIGRhdGFTdG9yZS5zZXNzaW9uSUQoKS50b1VJbnQ2NCgpKTsKLSAgICBt
X3dlYnNpdGVEYXRhU3RvcmUgPSAmZGF0YVN0b3JlOwogICAgIHVwZGF0ZVJlZ2lzdHJhdGlvbldp
dGhEYXRhU3RvcmUoKTsKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTZXRXZWJzaXRl
RGF0YVN0b3JlUGFyYW1ldGVycyhwcm9jZXNzUG9vbCgpLndlYlByb2Nlc3NEYXRhU3RvcmVQYXJh
bWV0ZXJzKCp0aGlzLCBkYXRhU3RvcmUpKSwgMCk7CiAKICAgICAvLyBEZWxheSBjb25zdHJ1Y3Rp
b24gb2YgdGhlIFdlYkxvY2tSZWdpc3RyeVByb3h5IHVudGlsIHRoZSBXZWJQcm9jZXNzUHJveHkg
aGFzIGEgZGF0YSBzdG9yZSBzaW5jZSB0aGUgZGF0YSBzdG9yZSBob2xkcyB0aGUKICAgICAvLyBM
b2NhbFdlYkxvY2tSZWdpc3RyeS4KICAgICBtX3dlYkxvY2tSZWdpc3RyeSA9IG1ha2VVbmlxdWU8
V2ViTG9ja1JlZ2lzdHJ5UHJveHk+KCp0aGlzKTsKKyAgICBtX3Nlc3Npb25JRCA9IGRhdGFTdG9y
ZS5zZXNzaW9uSUQoKTsKIH0KIAogYm9vbCBXZWJQcm9jZXNzUHJveHk6OmlzRHVtbXlQcm9jZXNz
UHJveHkoKSBjb25zdAogewotICAgIHJldHVybiBtX3dlYnNpdGVEYXRhU3RvcmUgJiYgcHJvY2Vz
c1Bvb2woKS5kdW1teVByb2Nlc3NQcm94eShtX3dlYnNpdGVEYXRhU3RvcmUtPnNlc3Npb25JRCgp
KSA9PSB0aGlzOworICAgIHJldHVybiBtX3Nlc3Npb25JRC5pc1ZhbGlkKCkgJiYgcHJvY2Vzc1Bv
b2woKS5kdW1teVByb2Nlc3NQcm94eShzZXNzaW9uSUQoKSkgPT0gdGhpczsKIH0KIAogdm9pZCBX
ZWJQcm9jZXNzUHJveHk6OnVwZGF0ZVJlZ2lzdHJhdGlvbldpdGhEYXRhU3RvcmUoKQogewotICAg
IGlmICghbV93ZWJzaXRlRGF0YVN0b3JlKQorICAgIGlmICghbV9zZXNzaW9uSUQuaXNWYWxpZCgp
KQogICAgICAgICByZXR1cm47Ci0gICAgCisKICAgICBib29sIHNob3VsZEJlUmVnaXN0ZXJlZCA9
IHBhZ2VDb3VudCgpIHx8IHByb3Zpc2lvbmFsUGFnZUNvdW50KCk7Ci0gICAgaWYgKHNob3VsZEJl
UmVnaXN0ZXJlZCkKLSAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlLT5yZWdpc3RlclByb2Nlc3Mo
KnRoaXMpOwotICAgIGVsc2UKLSAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlLT51bnJlZ2lzdGVy
UHJvY2VzcygqdGhpcyk7CisgICAgaWYgKGF1dG8qIGRhdGFTdG9yZSA9IFdlYnNpdGVEYXRhU3Rv
cmU6OmV4aXN0aW5nRGF0YVN0b3JlRm9yU2Vzc2lvbklEKHNlc3Npb25JRCgpKSkgeworICAgICAg
ICBpZiAoc2hvdWxkQmVSZWdpc3RlcmVkKQorICAgICAgICAgICAgZGF0YVN0b3JlLT5yZWdpc3Rl
clByb2Nlc3MoKnRoaXMpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBkYXRhU3RvcmUtPnVu
cmVnaXN0ZXJQcm9jZXNzKCp0aGlzKTsKKyAgICB9CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5
OjphZGRQcm92aXNpb25hbFBhZ2VQcm94eShQcm92aXNpb25hbFBhZ2VQcm94eSYgcHJvdmlzaW9u
YWxQYWdlKQpAQCAtNTk2LDExICs1OTgsMTEgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmFkZEV4
aXN0aW5nV2ViUGFnZShXZWJQYWdlUHJveHkmIHdlYlBhZ2UsIEJlZ2luc1VzaW5nRGF0YVMKICAg
ICBBU1NFUlQoIW1fcGFnZU1hcC5jb250YWlucyh3ZWJQYWdlLmlkZW50aWZpZXIoKSkpOwogICAg
IEFTU0VSVCghZ2xvYmFsUGFnZU1hcCgpLmNvbnRhaW5zKHdlYlBhZ2UuaWRlbnRpZmllcigpKSk7
CiAgICAgUkVMRUFTRV9BU1NFUlQoIW1faXNJblByb2Nlc3NDYWNoZSk7Ci0gICAgQVNTRVJUKCFt
X3dlYnNpdGVEYXRhU3RvcmUgfHwgbV93ZWJzaXRlRGF0YVN0b3JlID09ICZ3ZWJQYWdlLndlYnNp
dGVEYXRhU3RvcmUoKSk7CisgICAgQVNTRVJUKCFtX3Nlc3Npb25JRC5pc1ZhbGlkKCkgfHwgbV9z
ZXNzaW9uSUQgPT0gd2ViUGFnZS53ZWJzaXRlRGF0YVN0b3JlKCkuc2Vzc2lvbklEKCkpOwogCiAg
ICAgaWYgKGJlZ2luc1VzaW5nRGF0YVN0b3JlID09IEJlZ2luc1VzaW5nRGF0YVN0b3JlOjpZZXMp
IHsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9wcm9jZXNzUG9vbCk7Ci0gICAgICAgIG1fcHJv
Y2Vzc1Bvb2wtPnBhZ2VCZWdpblVzaW5nV2Vic2l0ZURhdGFTdG9yZSh3ZWJQYWdlLmlkZW50aWZp
ZXIoKSwgd2ViUGFnZS53ZWJzaXRlRGF0YVN0b3JlKCkpOworICAgICAgICBtX3Byb2Nlc3NQb29s
LT5wYWdlQmVnaW5Vc2luZ1dlYnNpdGVEYXRhU3RvcmUod2ViUGFnZS5pZGVudGlmaWVyKCksIHdl
YlBhZ2Uud2Vic2l0ZURhdGFTdG9yZSgpLnNlc3Npb25JRCgpKTsKICAgICB9CiAKICAgICBtYXJr
UHJvY2Vzc0FzUmVjZW50bHlVc2VkKCk7CkBAIC02MzIsNyArNjM0LDcgQEAgdm9pZCBXZWJQcm9j
ZXNzUHJveHk6OnJlbW92ZVdlYlBhZ2UoV2ViUGFnZVByb3h5JiB3ZWJQYWdlLCBFbmRzVXNpbmdE
YXRhU3RvcmUgZW4KICAgICBBU1NFUlRfVU5VU0VEKHJlbW92ZWRQYWdlLCByZW1vdmVkUGFnZSA9
PSAmd2ViUGFnZSk7CiAKICAgICBpZiAoZW5kc1VzaW5nRGF0YVN0b3JlID09IEVuZHNVc2luZ0Rh
dGFTdG9yZTo6WWVzKQotICAgICAgICBtX3Byb2Nlc3NQb29sLT5wYWdlRW5kVXNpbmdXZWJzaXRl
RGF0YVN0b3JlKHdlYlBhZ2UuaWRlbnRpZmllcigpLCB3ZWJQYWdlLndlYnNpdGVEYXRhU3RvcmUo
KSk7CisgICAgICAgIG1fcHJvY2Vzc1Bvb2wtPnBhZ2VFbmRVc2luZ1dlYnNpdGVEYXRhU3RvcmUo
d2ViUGFnZS5pZGVudGlmaWVyKCksIHdlYlBhZ2Uud2Vic2l0ZURhdGFTdG9yZSgpLnNlc3Npb25J
RCgpKTsKIAogICAgIHJlbW92ZVZpc2l0ZWRMaW5rU3RvcmVVc2VyKHdlYlBhZ2UudmlzaXRlZExp
bmtTdG9yZSgpLCB3ZWJQYWdlLmlkZW50aWZpZXIoKSk7CiAgICAgdXBkYXRlUmVnaXN0cmF0aW9u
V2l0aERhdGFTdG9yZSgpOwpAQCAtODE1LDcgKzgxNyw4IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5
Ojp1cGRhdGVCYWNrRm9yd2FyZEl0ZW0oY29uc3QgQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlJiBp
dGVtCiAKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24o
TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpE
ZWxheWVkUmVwbHkmJiByZXBseSkKIHsKLSAgICB3ZWJzaXRlRGF0YVN0b3JlKCkuZ2V0TmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uKCp0aGlzLCBXVEZNb3ZlKHJlcGx5KSk7CisgICAgaWYgKGF1dG8q
IGRhdGFTdG9yZSA9IFdlYnNpdGVEYXRhU3RvcmU6OmV4aXN0aW5nRGF0YVN0b3JlRm9yU2Vzc2lv
bklEKHNlc3Npb25JRCgpKSkKKyAgICAgICAgZGF0YVN0b3JlLT5nZXROZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24oKnRoaXMsIFdURk1vdmUocmVwbHkpKTsKIH0KIAogI2lmIEVOQUJMRShHUFVfUFJP
Q0VTUykKQEAgLTE3MDQsMTAgKzE3MDcsMTIgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZFN0
YXJ0UHJvdmlzaW9uYWxMb2FkRm9yTWFpbkZyYW1lKGNvbnN0IFVSTCYgdXJsKQogCiAgICAgYXV0
byByZWdpc3RyYWJsZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHsgdXJsIH07
CiAgICAgaWYgKG1fcmVnaXN0cmFibGVEb21haW4gJiYgKm1fcmVnaXN0cmFibGVEb21haW4gIT0g
cmVnaXN0cmFibGVEb21haW4pIHsKLSAgICAgICAgaWYgKGlzUnVubmluZ1NlcnZpY2VXb3JrZXJz
KCkpCi0gICAgICAgICAgICB3ZWJzaXRlRGF0YVN0b3JlKCkubmV0d29ya1Byb2Nlc3MoKS50ZXJt
aW5hdGVSZW1vdGVXb3JrZXJDb250ZXh0Q29ubmVjdGlvbldoZW5Qb3NzaWJsZShSZW1vdGVXb3Jr
ZXJUeXBlOjpTZXJ2aWNlV29ya2VyLCB3ZWJzaXRlRGF0YVN0b3JlKCkuc2Vzc2lvbklEKCksICpt
X3JlZ2lzdHJhYmxlRG9tYWluLCBjb3JlUHJvY2Vzc0lkZW50aWZpZXIoKSk7Ci0gICAgICAgIGlm
IChpc1J1bm5pbmdTaGFyZWRXb3JrZXJzKCkpCi0gICAgICAgICAgICB3ZWJzaXRlRGF0YVN0b3Jl
KCkubmV0d29ya1Byb2Nlc3MoKS50ZXJtaW5hdGVSZW1vdGVXb3JrZXJDb250ZXh0Q29ubmVjdGlv
bldoZW5Qb3NzaWJsZShSZW1vdGVXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIsIHdlYnNpdGVEYXRh
U3RvcmUoKS5zZXNzaW9uSUQoKSwgKm1fcmVnaXN0cmFibGVEb21haW4sIGNvcmVQcm9jZXNzSWRl
bnRpZmllcigpKTsKKyAgICAgICAgYXV0byogZGF0YVN0b3JlID0gV2Vic2l0ZURhdGFTdG9yZTo6
ZXhpc3RpbmdEYXRhU3RvcmVGb3JTZXNzaW9uSUQoc2Vzc2lvbklEKCkpOworICAgICAgICBpZiAo
ZGF0YVN0b3JlICYmIGlzUnVubmluZ1NlcnZpY2VXb3JrZXJzKCkpCisgICAgICAgICAgICBkYXRh
U3RvcmUtPm5ldHdvcmtQcm9jZXNzKCkudGVybWluYXRlUmVtb3RlV29ya2VyQ29udGV4dENvbm5l
Y3Rpb25XaGVuUG9zc2libGUoUmVtb3RlV29ya2VyVHlwZTo6U2VydmljZVdvcmtlciwgc2Vzc2lv
bklEKCksICptX3JlZ2lzdHJhYmxlRG9tYWluLCBjb3JlUHJvY2Vzc0lkZW50aWZpZXIoKSk7CisK
KyAgICAgICAgaWYgKGRhdGFTdG9yZSAmJiBpc1J1bm5pbmdTaGFyZWRXb3JrZXJzKCkpCisgICAg
ICAgICAgICBkYXRhU3RvcmUtPm5ldHdvcmtQcm9jZXNzKCkudGVybWluYXRlUmVtb3RlV29ya2Vy
Q29udGV4dENvbm5lY3Rpb25XaGVuUG9zc2libGUoUmVtb3RlV29ya2VyVHlwZTo6U2hhcmVkV29y
a2VyLCBzZXNzaW9uSUQoKSwgKm1fcmVnaXN0cmFibGVEb21haW4sIGNvcmVQcm9jZXNzSWRlbnRp
ZmllcigpKTsKIAogICAgICAgICAvLyBOdWxsIG91dCByZWdpc3RyYWJsZSBkb21haW4gc2luY2Ug
dGhpcyBwcm9jZXNzIGhhcyBub3cgYmVlbiB1c2VkIGZvciBzZXZlcmFsIGRvbWFpbnMuCiAgICAg
ICAgIG1fcmVnaXN0cmFibGVEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7IH07
CkBAIC0xNzU0LDggKzE3NTksNyBAQCBXZWJQcm9jZXNzUG9vbCYgV2ViUHJvY2Vzc1Byb3h5Ojpw
cm9jZXNzUG9vbCgpIGNvbnN0CiAKIFBBTDo6U2Vzc2lvbklEIFdlYlByb2Nlc3NQcm94eTo6c2Vz
c2lvbklEKCkgY29uc3QKIHsKLSAgICBBU1NFUlQobV93ZWJzaXRlRGF0YVN0b3JlKTsKLSAgICBy
ZXR1cm4gbV93ZWJzaXRlRGF0YVN0b3JlLT5zZXNzaW9uSUQoKTsKKyAgICByZXR1cm4gbV9zZXNz
aW9uSUQ7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVTcGVlY2hSZWNvZ25pdGlv
blNlcnZlcihTcGVlY2hSZWNvZ25pdGlvblNlcnZlcklkZW50aWZpZXIgaWRlbnRpZmllcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKaW5kZXggMDU1NWQzZDU3NjM0
NWJiMjQ5NjEwODU4ZDY5NDY2ZTQ5MTU5ZjFhYy4uZjg2ZjQzN2RkNTQzOTUwZWUzODM4NGMxNzBj
ZjJhMzFjOTFhNWI4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5
LmgKQEAgLTE2Nyw3ICsxNjcsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBlbmFibGVSZW1vdGVXb3Jr
ZXJzKFJlbW90ZVdvcmtlclR5cGUsIGNvbnN0IFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZp
ZXImKTsKICAgICB2b2lkIGRpc2FibGVSZW1vdGVXb3JrZXJzKFJlbW90ZVdvcmtlclR5cGUpOwog
Ci0gICAgV2Vic2l0ZURhdGFTdG9yZSYgd2Vic2l0ZURhdGFTdG9yZSgpIGNvbnN0IHsgQVNTRVJU
KG1fd2Vic2l0ZURhdGFTdG9yZSk7IHJldHVybiAqbV93ZWJzaXRlRGF0YVN0b3JlOyB9CiAgICAg
dm9pZCBzZXRXZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmUmKTsKICAgICAKICAgICBQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdDsKQEAgLTYxNCw3ICs2MTMsNyBAQCBwcml2
YXRlOgogCiAgICAgVmlzaWJsZVdlYlBhZ2VDb3VudGVyIG1fdmlzaWJsZVBhZ2VDb3VudGVyOwog
Ci0gICAgUmVmUHRyPFdlYnNpdGVEYXRhU3RvcmU+IG1fd2Vic2l0ZURhdGFTdG9yZTsKKyAgICBQ
QUw6OlNlc3Npb25JRCBtX3Nlc3Npb25JRCB7IDAgfTsKIAogICAgIGJvb2wgbV9pc1VuZGVyTWVt
b3J5UHJlc3N1cmUgeyBmYWxzZSB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9nbGliL1dlYlByb2Nlc3NQcm94eUdMaWIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvZ2xpYi9XZWJQcm9jZXNzUHJveHlHTGliLmNwcAppbmRleCA4NjRkMGUzNmZiOGRhMjU2ZDUx
MzJlZTM1NjMwNmM1MjhjNmU2NGU3Li4zNjcxMzhmMGNmMGU2N2I0NjJhNDQ0MGRjNzJlN2Y0MmZm
YWY5ZTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dlYlByb2Nl
c3NQcm94eUdMaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2ViUHJv
Y2Vzc1Byb3h5R0xpYi5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6
OnBsYXRmb3JtR2V0TGF1bmNoT3B0aW9ucyhQcm9jZXNzTGF1bmNoZXI6OkxhdW5jaE9wdGlvbnMm
IGwKICAgICBsYXVuY2hPcHRpb25zLmV4dHJhSW5pdGlhbGl6YXRpb25EYXRhLnNldCgiZW5hYmxl
LXNhbmRib3giX3MsIG1fcHJvY2Vzc1Bvb2wtPnNhbmRib3hFbmFibGVkKCkgPyAidHJ1ZSJfcyA6
ICJmYWxzZSJfcyk7CiAKICAgICBpZiAobV9wcm9jZXNzUG9vbC0+c2FuZGJveEVuYWJsZWQoKSkg
ewotICAgICAgICBXZWJzaXRlRGF0YVN0b3JlKiBkYXRhU3RvcmUgPSBtX3dlYnNpdGVEYXRhU3Rv
cmUuZ2V0KCk7CisgICAgICAgIFdlYnNpdGVEYXRhU3RvcmUqIGRhdGFTdG9yZSA9IFdlYnNpdGVE
YXRhU3RvcmU6OmV4aXN0aW5nRGF0YVN0b3JlRm9yU2Vzc2lvbklEKG1fc2Vzc2lvbklEKTsKICAg
ICAgICAgaWYgKCFkYXRhU3RvcmUpIHsKICAgICAgICAgICAgIC8vIFByZXdhcm1lZCBwcm9jZXNz
ZXMgZG9uJ3QgaGF2ZSBhIFdlYnNpdGVEYXRhU3RvcmUgeWV0LCBzbyB1c2UgdGhlIHByaW1hcnkg
V2Vic2l0ZURhdGFTdG9yZSBmcm9tIHRoZSBXZWJQcm9jZXNzUG9vbC4KICAgICAgICAgICAgIC8v
IFRoZSBwcm9jZXNzIHdvbid0IGJlIHVzZWQgaWYgY3VycmVudCBXZWJzaXRlRGF0YVN0b3JlIGlz
IGRpZmZlcmVudCB0aGFuIHRoZSBXZWJQcm9jZXNzUG9vbCBwcmltYXJ5IG9uZS4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457115</attachid>
            <date>2022-04-08 13:51:59 -0700</date>
            <delta_ts>2022-04-12 16:22:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238892-20220408135158.patch</filename>
            <type>text/plain</type>
            <size>35623</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyNjA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDU0MzBlMWI2MTY1NGE0YzIw
YjEzMDUxY2VhNjg0ODI0OGI2ZGY0OWEuLmU0MmQ4Y2M3ODc1NGU5YWE1YmQ4YTY0M2E1ZTc4NzMx
NGI3NmQ4ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjQgQEAKKzIwMjItMDQtMDggIFNpaHVpIExp
dSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViUHJvY2Vzc1Byb3h5IHNob3Vs
ZCBub3QgaG9sZCBXZWJzaXRlRGF0YVN0b3JlIGFsaXZlIHdoZW4gdGhlcmUgaXMgbm8gcGFnZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4ODkyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2l0aCBvdXIg
Y3VycmVudCBpbXBsZW1lbnRhdGlvbiwgV2ViUHJvY2Vzc1Byb3h5IGNhbiBvdXRsaXZlIFdlYlBh
Z2VQcm94eS4gQW5kIGFzIFdlYlByb2Nlc3NQcm94eSBob2xkcyBzdHJvbmcKKyAgICAgICAgcmVm
ZXJlbmNlIHRvIFdlYnNpdGVEYXRhU3RvcmUsIFdlYnNpdGVEYXRhU3RvcmUgd2lsbCBiZSBrZXB0
IGFsaXZlIGV2ZW4gaXQncyBub3QgdXNlZCBieSBhbnkgcGFnZS4KKworICAgICAgICAqIFVJUHJv
Y2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVUHJvY2Vz
c1Byb3h5OjpnZXRHUFVQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL1By
b3Zpc2lvbmFsUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UHJvdmlzaW9uYWxQYWdl
UHJveHk6OlByb3Zpc2lvbmFsUGFnZVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UHJvdmlzaW9u
YWxQYWdlUHJveHk6On5Qcm92aXNpb25hbFBhZ2VQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNz
L1Byb3Zpc2lvbmFsUGFnZVByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OlByb3Zpc2lvbmFsUGFn
ZVByb3h5Ojp3ZWJzaXRlRGF0YVN0b3JlIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvU3Vz
cGVuZGVkUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3VzcGVuZGVkUGFnZVByb3h5
OjpmaW5kUmV1c2FibGVTdXNwZW5kZWRQYWdlUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYkJhY2tGb3J3YXJkQ2FjaGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2Fy
ZENhY2hlOjpyZW1vdmVFbnRyaWVzRm9yU2Vzc2lvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YkxvY2tSZWdpc3RyeVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTG9ja1JlZ2lzdHJ5
UHJveHk6OnJlcXVlc3RMb2NrKToKKyAgICAgICAgKFdlYktpdDo6V2ViTG9ja1JlZ2lzdHJ5UHJv
eHk6OnJlbGVhc2VMb2NrKToKKyAgICAgICAgKFdlYktpdDo6V2ViTG9ja1JlZ2lzdHJ5UHJveHk6
OmFib3J0TG9ja1JlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2NrUmVnaXN0cnlQcm94
eTo6c25hcHNob3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2NrUmVnaXN0cnlQcm94eTo6Y2xp
ZW50SXNHb2luZ0F3YXkpOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2NrUmVnaXN0cnlQcm94eTo6
cHJvY2Vzc0RpZEV4aXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnN3YXBUb1Byb3Zpc2lvbmFsUGFnZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y29tbWl0UHJvdmlzaW9uYWxQYWdlKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc0NhY2hlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc0NhY2hlOjpjYW5DYWNoZVByb2Nlc3MgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzQ2FjaGU6OnRha2VQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzc0NhY2hlOjpjbGVhckFsbFByb2Nlc3Nlc0ZvclNlc3Npb24pOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzQ2FjaGU6OkNhY2hlZFByb2Nlc3M6OkNhY2hlZFByb2Nlc3MpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3NQb29sOjplc3RhYmxpc2hSZW1vdGVXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29y
a1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cHJvY2Vzc0ZvclJl
Z2lzdHJhYmxlRG9tYWluKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmNyZWF0
ZVdlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cGFnZUJlZ2luVXNp
bmdXZWJzaXRlRGF0YVN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnBh
Z2VFbmRVc2luZ1dlYnNpdGVEYXRhU3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
UG9vbDo6aGFzUGFnZXNVc2luZ1dlYnNpdGVEYXRhU3RvcmUgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUG9vbDo6cHJvY2Vzc0Zvck5hdmlnYXRpb25JbnRlcm5hbCk6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6V2Vi
UHJvY2Vzc1Byb3h5KToKKyAgICAgICAgKFdlYktpdDo6bV93ZWJMb2NrUmVnaXN0cnkpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnNldFdlYnNpdGVEYXRhU3RvcmUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmlzRHVtbXlQcm9jZXNzUHJveHkgY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZVJlZ2lzdHJhdGlvbldp
dGhEYXRhU3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmFkZEV4aXN0
aW5nV2ViUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6cmVtb3ZlV2Vi
UGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6Z2V0TmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpkaWRTdGFy
dFByb3Zpc2lvbmFsTG9hZEZvck1haW5GcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQcm94eTo6c2Vzc2lvbklEIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6d2Vic2l0ZURhdGFT
dG9yZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vz
c1Byb3h5R0xpYi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6cGxhdGZv
cm1HZXRMYXVuY2hPcHRpb25zKToKKwogMjAyMi0wNC0wOCAgQ2FybG9zIEdhcmNpYSBDYW1wb3Mg
IDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gUmVtb3RlSW5zcGVjdG9yOiB1
cGRhdGUgdGFyZ2V0IGxpc3QgcGFnZSBjb250ZW50cyBvbiBjaGFuZ2UgaW5zdGVhZCBvZiByZWxv
YWRpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNz
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5j
cHAKaW5kZXggODNhZjFlNTVkZGY3NDg4MjM5Zjg2OTE5Mjc3MjBhYjZhODYzMTk3ZC4uYjYzMThk
N2RhODgwY2IwMzlkMWFhOGZiNGE1NjljZmU2NWUxOTNiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5jcHAKQEAgLTM4Nyw3ICszODcsOCBAQCB2
b2lkIEdQVVByb2Nlc3NQcm94eTo6cHJvY2Vzc1dpbGxTaHV0RG93bihJUEM6OkNvbm5lY3Rpb24m
IGNvbm5lY3Rpb24pCiAKIHZvaWQgR1BVUHJvY2Vzc1Byb3h5OjpnZXRHUFVQcm9jZXNzQ29ubmVj
dGlvbihXZWJQcm9jZXNzUHJveHkmIHdlYlByb2Nlc3NQcm94eSwgY29uc3QgR1BVUHJvY2Vzc0Nv
bm5lY3Rpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5
OjpHZXRHUFVQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7Ci0gICAg
YWRkU2Vzc2lvbih3ZWJQcm9jZXNzUHJveHkud2Vic2l0ZURhdGFTdG9yZSgpKTsKKyAgICBpZiAo
YXV0byogZGF0YVN0b3JlID0gV2Vic2l0ZURhdGFTdG9yZTo6ZXhpc3RpbmdEYXRhU3RvcmVGb3JT
ZXNzaW9uSUQod2ViUHJvY2Vzc1Byb3h5LnNlc3Npb25JRCgpKSkKKyAgICAgICAgYWRkU2Vzc2lv
bigqZGF0YVN0b3JlKTsKIAogICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAg
LSBHUFVQcm9jZXNzUHJveHkgaXMgdGFraW5nIGEgYmFja2dyb3VuZCBhc3NlcnRpb24gYmVjYXVz
ZSBhIHdlYiBwcm9jZXNzIGlzIHJlcXVlc3RpbmcgYSBjb25uZWN0aW9uIiwgdGhpcyk7CiAgICAg
c3RhcnRSZXNwb25zaXZlbmVzc1RpbWVyKFVzZUxhenlTdG9wOjpObyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKaW5kZXggODhiMmVhODM4
NjcyYWM3MTg2NWViNjliY2FmNWZiMjJjYTAwYTg3Zi4uOWI0NGQ1ODExN2ZhZDE3YzNlOWRmMTNi
NGQyYWQyYzVjN2M2YzhhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJv
dmlzaW9uYWxQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zp
c2lvbmFsUGFnZVByb3h5LmNwcApAQCAtODMsOCArODMsMTEgQEAgUHJvdmlzaW9uYWxQYWdlUHJv
eHk6OlByb3Zpc2lvbmFsUGFnZVByb3h5KFdlYlBhZ2VQcm94eSYgcGFnZSwgUmVmPFdlYlByb2Nl
c3NQcm8KICAgICBtX3Byb2Nlc3MtPmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fd2ViUGFnZUlELCAqdGhpcyk7CiAgICAg
bV9wcm9jZXNzLT5hZGRQcm92aXNpb25hbFBhZ2VQcm94eSgqdGhpcyk7CiAKLSAgICBpZiAoJm1f
cHJvY2Vzcy0+d2Vic2l0ZURhdGFTdG9yZSgpICE9ICZtX3BhZ2Uud2Vic2l0ZURhdGFTdG9yZSgp
KQotICAgICAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkucGFnZUJlZ2luVXNpbmdXZWJzaXRl
RGF0YVN0b3JlKG1fcGFnZS5pZGVudGlmaWVyKCksIG1fcHJvY2Vzcy0+d2Vic2l0ZURhdGFTdG9y
ZSgpKTsKKyAgICBhdXRvIHByb2Nlc3NTZXNzaW9uSUQgPSBtX3Byb2Nlc3MtPnNlc3Npb25JRCgp
OworICAgIGlmIChwcm9jZXNzU2Vzc2lvbklEICE9IG1fcGFnZS53ZWJzaXRlRGF0YVN0b3JlKCku
c2Vzc2lvbklEKCkpCisgICAgICAgIG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5wYWdlQmVnaW5V
c2luZ1dlYnNpdGVEYXRhU3RvcmUobV9wYWdlLmlkZW50aWZpZXIoKSwgcHJvY2Vzc1Nlc3Npb25J
RCk7CisgICAgbV93ZWJzaXRlRGF0YVN0b3JlID0gV2Vic2l0ZURhdGFTdG9yZTo6ZXhpc3RpbmdE
YXRhU3RvcmVGb3JTZXNzaW9uSUQocHJvY2Vzc1Nlc3Npb25JRCk7CisgICAgQVNTRVJUKG1fd2Vi
c2l0ZURhdGFTdG9yZSk7CiAKICAgICAvLyBJZiB3ZSBhcmUgcmVhdHRhY2hpbmcgdG8gYSBTdXNw
ZW5kZWRQYWdlLCB0aGVuIHRoZSBXZWJQcm9jZXNzJyBXZWJQYWdlIGFscmVhZHkgZXhpc3RzIGFu
ZAogICAgIC8vIFdlYlBhZ2VQcm94eTo6ZGlkQ3JlYXRlTWFpbkZyYW1lKCkgd2lsbCBub3QgYmUg
Y2FsbGVkIHRvIGluaXRpYWxpemUgbV9tYWluRnJhbWUuIEluIHN1Y2gKQEAgLTExMiw4ICsxMTUs
OCBAQCBQcm92aXNpb25hbFBhZ2VQcm94eTo6flByb3Zpc2lvbmFsUGFnZVByb3h5KCkKICAgICBp
ZiAoIW1fd2FzQ29tbWl0dGVkKSB7CiAgICAgICAgIG1fcGFnZS5pbnNwZWN0b3JDb250cm9sbGVy
KCkud2lsbERlc3Ryb3lQcm92aXNpb25hbFBhZ2UoKnRoaXMpOwogCi0gICAgICAgIGlmICgmbV9w
cm9jZXNzLT53ZWJzaXRlRGF0YVN0b3JlKCkgIT0gJm1fcGFnZS53ZWJzaXRlRGF0YVN0b3JlKCkp
Ci0gICAgICAgICAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkucGFnZUVuZFVzaW5nV2Vic2l0
ZURhdGFTdG9yZShtX3BhZ2UuaWRlbnRpZmllcigpLCBtX3Byb2Nlc3MtPndlYnNpdGVEYXRhU3Rv
cmUoKSk7CisgICAgICAgIGlmIChtX3Byb2Nlc3MtPnNlc3Npb25JRCgpICE9IG1fcGFnZS53ZWJz
aXRlRGF0YVN0b3JlKCkuc2Vzc2lvbklEKCkpCisgICAgICAgICAgICBtX3Byb2Nlc3MtPnByb2Nl
c3NQb29sKCkucGFnZUVuZFVzaW5nV2Vic2l0ZURhdGFTdG9yZShtX3BhZ2UuaWRlbnRpZmllcigp
LCBtX3Byb2Nlc3MtPnNlc3Npb25JRCgpKTsKIAogICAgICAgICBtX3Byb2Nlc3MtPnJlbW92ZU1l
c3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUGFnZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1l
KCksIG1fd2ViUGFnZUlEKTsKICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2xvc2Uo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQ
cm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaApp
bmRleCAyMmQyYmIxMmNhNmFkNThmMmVmN2I3YTk5NTkzYjNmMDZlNjRhODhmLi44ODM1MDBmYWJh
MDM2NjhjNjMzM2NjYzljOTUxNjE4ZGNjYzM5NDRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmgKQEAgLTYxLDYgKzYxLDcgQEAgY2xhc3MgVXNl
ckRhdGE7CiBjbGFzcyBXZWJGcmFtZVByb3h5OwogY2xhc3MgV2ViUGFnZVByb3h5OwogY2xhc3Mg
V2ViUHJvY2Vzc1Byb3h5OworY2xhc3MgV2Vic2l0ZURhdGFTdG9yZTsKIHN0cnVjdCBGcmFtZUlu
Zm9EYXRhOwogc3RydWN0IE5hdmlnYXRpb25BY3Rpb25EYXRhOwogc3RydWN0IFVSTFNjaGVtZVRh
c2tQYXJhbWV0ZXJzOwpAQCAtODMsNiArODQsNyBAQCBwdWJsaWM6CiAgICAgUHJvY2Vzc1N3YXBS
ZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9wcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50OyB9CiAgICAgdWludDY0X3QgbmF2
aWdhdGlvbklEKCkgY29uc3QgeyByZXR1cm4gbV9uYXZpZ2F0aW9uSUQ7IH0KICAgICBjb25zdCBV
UkwmIHByb3Zpc2lvbmFsVVJMKCkgY29uc3QgeyByZXR1cm4gbV9wcm92aXNpb25hbExvYWRVUkw7
IH0KKyAgICBXZWJzaXRlRGF0YVN0b3JlKiB3ZWJzaXRlRGF0YVN0b3JlKCkgY29uc3QgeyByZXR1
cm4gbV93ZWJzaXRlRGF0YVN0b3JlLmdldCgpOyB9CiAKICAgICBib29sIGlzUHJvY2Vzc1N3YXBw
aW5nT25OYXZpZ2F0aW9uUmVzcG9uc2UoKSBjb25zdCB7IHJldHVybiBtX2lzUHJvY2Vzc1N3YXBw
aW5nT25OYXZpZ2F0aW9uUmVzcG9uc2U7IH0KIApAQCAtMTYzLDYgKzE2NSw3IEBAIHByaXZhdGU6
CiAgICAgV2ViUGFnZVByb3h5JiBtX3BhZ2U7CiAgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIg
bV93ZWJQYWdlSUQ7CiAgICAgUmVmPFdlYlByb2Nlc3NQcm94eT4gbV9wcm9jZXNzOworICAgIFJl
ZlB0cjxXZWJzaXRlRGF0YVN0b3JlPiBtX3dlYnNpdGVEYXRhU3RvcmU7CiAgICAgc3RkOjp1bmlx
dWVfcHRyPERyYXdpbmdBcmVhUHJveHk+IG1fZHJhd2luZ0FyZWE7CiAgICAgUmVmUHRyPFdlYkZy
YW1lUHJveHk+IG1fbWFpbkZyYW1lOwogICAgIHVpbnQ2NF90IG1fbmF2aWdhdGlvbklEOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAKaW5kZXggY2Ni
ZDYxMjg3ODUwZTczMTY5MWEzMzBjNGUzMGFkM2EzNmUxZjA3ZC4uNjJmMWRhMzUwNzY4OTUxNTQw
YzhlMDFmNDFjZjgzNjExZmEzYWUxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9T
dXNwZW5kZWRQYWdlUHJveHkuY3BwCkBAIC01Myw3ICs1Myw3IEBAIFJlZlB0cjxXZWJQcm9jZXNz
UHJveHk+IFN1c3BlbmRlZFBhZ2VQcm94eTo6ZmluZFJldXNhYmxlU3VzcGVuZGVkUGFnZVByb2Nl
c3MoV2ViCiB7CiAgICAgZm9yIChhdXRvKiBzdXNwZW5kZWRQYWdlIDogYWxsU3VzcGVuZGVkUGFn
ZXMoKSkgewogICAgICAgICBhdXRvJiBwcm9jZXNzID0gc3VzcGVuZGVkUGFnZS0+cHJvY2Vzcygp
OwotICAgICAgICBpZiAoJnByb2Nlc3MucHJvY2Vzc1Bvb2woKSA9PSAmcHJvY2Vzc1Bvb2wgJiYg
cHJvY2Vzcy5yZWdpc3RyYWJsZURvbWFpbigpID09IHJlZ2lzdHJhYmxlRG9tYWluICYmICZwcm9j
ZXNzLndlYnNpdGVEYXRhU3RvcmUoKSA9PSAmZGF0YVN0b3JlICYmIHByb2Nlc3MuY3Jvc3NPcmln
aW5Nb2RlKCkgIT0gQ3Jvc3NPcmlnaW5Nb2RlOjpJc29sYXRlZCAmJiBwcm9jZXNzLmNhcHRpdmVQ
b3J0YWxNb2RlKCkgPT0gY2FwdGl2ZVBvcnRhbE1vZGUpCisgICAgICAgIGlmICgmcHJvY2Vzcy5w
cm9jZXNzUG9vbCgpID09ICZwcm9jZXNzUG9vbCAmJiBwcm9jZXNzLnJlZ2lzdHJhYmxlRG9tYWlu
KCkgPT0gcmVnaXN0cmFibGVEb21haW4gJiYgcHJvY2Vzcy5zZXNzaW9uSUQoKSA9PSBkYXRhU3Rv
cmUuc2Vzc2lvbklEKCkgJiYgcHJvY2Vzcy5jcm9zc09yaWdpbk1vZGUoKSAhPSBDcm9zc09yaWdp
bk1vZGU6Oklzb2xhdGVkICYmIHByb2Nlc3MuY2FwdGl2ZVBvcnRhbE1vZGUoKSA9PSBjYXB0aXZl
UG9ydGFsTW9kZSkKICAgICAgICAgICAgIHJldHVybiAmcHJvY2VzczsKICAgICB9CiAgICAgcmV0
dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNr
Rm9yd2FyZENhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJk
Q2FjaGUuY3BwCmluZGV4IDY0YTFhOWY2OWM2YzQ2MjI0NDE3YmRhYzIwY2MwZTgxNDNmNWEwMzQu
LmU1N2Q3OTRjYWUwODVlMzYyZWE4YmJiYTIxZGJmZDFkZjIwY2MyYmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkQ2FjaGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkQ2FjaGUuY3BwCkBAIC0xMzQsNyArMTM0
LDcgQEAgdm9pZCBXZWJCYWNrRm9yd2FyZENhY2hlOjpyZW1vdmVFbnRyaWVzRm9yUHJvY2VzcyhX
ZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MpCiB2b2lkIFdlYkJhY2tGb3J3YXJkQ2FjaGU6OnJlbW92
ZUVudHJpZXNGb3JTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKICAgICByZW1v
dmVFbnRyaWVzTWF0Y2hpbmcoW3Nlc3Npb25JRF0oYXV0byYgaXRlbSkgewotICAgICAgICByZXR1
cm4gaXRlbS5iYWNrRm9yd2FyZENhY2hlRW50cnkoKS0+cHJvY2VzcygpLndlYnNpdGVEYXRhU3Rv
cmUoKS5zZXNzaW9uSUQoKSA9PSBzZXNzaW9uSUQ7CisgICAgICAgIHJldHVybiBpdGVtLmJhY2tG
b3J3YXJkQ2FjaGVFbnRyeSgpLT5wcm9jZXNzKCkuc2Vzc2lvbklEKCkgPT0gc2Vzc2lvbklEOwog
ICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJMb2Nr
UmVnaXN0cnlQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJMb2NrUmVnaXN0
cnlQcm94eS5jcHAKaW5kZXggZGU4NzkwZWMxZjIwMGRmNTE0YjY0ZDU0NTkyNTY0OGUzMTgyMmMy
Ny4uYzgzZWI2NTc1ODg4ZWJmNDdmMTc4ZWYxNDJlMjNiZWY5MDlhZmZmMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViTG9ja1JlZ2lzdHJ5UHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkxvY2tSZWdpc3RyeVByb3h5LmNwcApAQCAtMzIsNiAr
MzIsNyBAQAogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgogI2luY2x1ZGUgIldlYnNpdGVE
YXRhU3RvcmUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1dlYkxvY2tJZGVudGlmaWVyLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9XZWJMb2NrTWFuYWdlclNuYXBzaG90Lmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9XZWJMb2NrUmVnaXN0cnkuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC01NSw0NCArNTYs
NTggQEAgdm9pZCBXZWJMb2NrUmVnaXN0cnlQcm94eTo6cmVxdWVzdExvY2soV2ViQ29yZTo6Q2xp
ZW50T3JpZ2luJiYgY2xpZW50T3JpZ2luLCBXZWIKICAgICBNRVNTQUdFX0NIRUNLKGNsaWVudElE
LnByb2Nlc3NJZGVudGlmaWVyKCkgPT0gbV9wcm9jZXNzLmNvcmVQcm9jZXNzSWRlbnRpZmllcigp
KTsKICAgICBtX2hhc0V2ZXJSZXF1ZXN0ZWRMb2NrcyA9IHRydWU7CiAKLSAgICBtX3Byb2Nlc3Mu
d2Vic2l0ZURhdGFTdG9yZSgpLndlYkxvY2tSZWdpc3RyeSgpLnJlcXVlc3RMb2NrKFdURk1vdmUo
Y2xpZW50T3JpZ2luKSwgbG9ja0lkZW50aWZpZXIsIGNsaWVudElELCBXVEZNb3ZlKG5hbWUpLCBs
b2NrTW9kZSwgc3RlYWwsIGlmQXZhaWxhYmxlLCBbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMg
fSwgbG9ja0lkZW50aWZpZXIsIGNsaWVudElEXShib29sIHN1Y2Nlc3MpIHsKLSAgICAgICAgaWYg
KHdlYWtUaGlzKQotICAgICAgICAgICAgd2Vha1RoaXMtPm1fcHJvY2Vzcy5zZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVXZWJMb2NrUmVnaXN0cnk6OkRpZENvbXBsZXRlTG9ja1JlcXVlc3QobG9ja0lkZW50
aWZpZXIsIGNsaWVudElELCBzdWNjZXNzKSwgMCk7Ci0gICAgfSwgW3dlYWtUaGlzID0gV2Vha1B0
ciB7ICp0aGlzIH0sIGxvY2tJZGVudGlmaWVyLCBjbGllbnRJRF0gewotICAgICAgICBpZiAod2Vh
a1RoaXMpCi0gICAgICAgICAgICB3ZWFrVGhpcy0+bV9wcm9jZXNzLnNlbmQoTWVzc2FnZXM6OlJl
bW90ZVdlYkxvY2tSZWdpc3RyeTo6RGlkU3RlYWxMb2NrKGxvY2tJZGVudGlmaWVyLCBjbGllbnRJ
RCksIDApOwotICAgIH0pOworICAgIGlmIChhdXRvKiBkYXRhU3RvcmUgPSBXZWJzaXRlRGF0YVN0
b3JlOjpleGlzdGluZ0RhdGFTdG9yZUZvclNlc3Npb25JRChtX3Byb2Nlc3Muc2Vzc2lvbklEKCkp
KSB7CisgICAgICAgIGRhdGFTdG9yZS0+d2ViTG9ja1JlZ2lzdHJ5KCkucmVxdWVzdExvY2soV1RG
TW92ZShjbGllbnRPcmlnaW4pLCBsb2NrSWRlbnRpZmllciwgY2xpZW50SUQsIFdURk1vdmUobmFt
ZSksIGxvY2tNb2RlLCBzdGVhbCwgaWZBdmFpbGFibGUsIFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAq
dGhpcyB9LCBsb2NrSWRlbnRpZmllciwgY2xpZW50SURdKGJvb2wgc3VjY2VzcykgeworICAgICAg
ICAgICAgaWYgKHdlYWtUaGlzKQorICAgICAgICAgICAgICAgIHdlYWtUaGlzLT5tX3Byb2Nlc3Mu
c2VuZChNZXNzYWdlczo6UmVtb3RlV2ViTG9ja1JlZ2lzdHJ5OjpEaWRDb21wbGV0ZUxvY2tSZXF1
ZXN0KGxvY2tJZGVudGlmaWVyLCBjbGllbnRJRCwgc3VjY2VzcyksIDApOworICAgICAgICB9LCBb
d2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgbG9ja0lkZW50aWZpZXIsIGNsaWVudElEXSB7
CisgICAgICAgICAgICBpZiAod2Vha1RoaXMpCisgICAgICAgICAgICAgICAgd2Vha1RoaXMtPm1f
cHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVXZWJMb2NrUmVnaXN0cnk6OkRpZFN0ZWFsTG9j
ayhsb2NrSWRlbnRpZmllciwgY2xpZW50SUQpLCAwKTsKKyAgICAgICAgfSk7CisgICAgfSBlbHNl
CisgICAgICAgIG1fcHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVXZWJMb2NrUmVnaXN0cnk6
OkRpZENvbXBsZXRlTG9ja1JlcXVlc3QobG9ja0lkZW50aWZpZXIsIGNsaWVudElELCBmYWxzZSks
IDApOwogfQogCiB2b2lkIFdlYkxvY2tSZWdpc3RyeVByb3h5OjpyZWxlYXNlTG9jayhXZWJDb3Jl
OjpDbGllbnRPcmlnaW4mJiBjbGllbnRPcmlnaW4sIFdlYkNvcmU6OldlYkxvY2tJZGVudGlmaWVy
IGxvY2tJZGVudGlmaWVyLCBXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmll
ciBjbGllbnRJRCwgU3RyaW5nJiYgbmFtZSkKIHsKICAgICBNRVNTQUdFX0NIRUNLKGxvY2tJZGVu
dGlmaWVyLnByb2Nlc3NJZGVudGlmaWVyKCkgPT0gbV9wcm9jZXNzLmNvcmVQcm9jZXNzSWRlbnRp
ZmllcigpKTsKICAgICBNRVNTQUdFX0NIRUNLKGNsaWVudElELnByb2Nlc3NJZGVudGlmaWVyKCkg
PT0gbV9wcm9jZXNzLmNvcmVQcm9jZXNzSWRlbnRpZmllcigpKTsKLSAgICBtX3Byb2Nlc3Mud2Vi
c2l0ZURhdGFTdG9yZSgpLndlYkxvY2tSZWdpc3RyeSgpLnJlbGVhc2VMb2NrKFdURk1vdmUoY2xp
ZW50T3JpZ2luKSwgbG9ja0lkZW50aWZpZXIsIGNsaWVudElELCBXVEZNb3ZlKG5hbWUpKTsKKyAg
ICBpZiAoYXV0byogZGF0YVN0b3JlID0gV2Vic2l0ZURhdGFTdG9yZTo6ZXhpc3RpbmdEYXRhU3Rv
cmVGb3JTZXNzaW9uSUQobV9wcm9jZXNzLnNlc3Npb25JRCgpKSkKKyAgICAgICAgZGF0YVN0b3Jl
LT53ZWJMb2NrUmVnaXN0cnkoKS5yZWxlYXNlTG9jayhXVEZNb3ZlKGNsaWVudE9yaWdpbiksIGxv
Y2tJZGVudGlmaWVyLCBjbGllbnRJRCwgV1RGTW92ZShuYW1lKSk7CiB9CiAKIHZvaWQgV2ViTG9j
a1JlZ2lzdHJ5UHJveHk6OmFib3J0TG9ja1JlcXVlc3QoV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYg
Y2xpZW50T3JpZ2luLCBXZWJDb3JlOjpXZWJMb2NrSWRlbnRpZmllciBsb2NrSWRlbnRpZmllciwg
V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIgY2xpZW50SUQsIFN0cmlu
ZyYmIG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgTUVTU0FHRV9DSEVDSyhsb2NrSWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmll
cigpID09IG1fcHJvY2Vzcy5jb3JlUHJvY2Vzc0lkZW50aWZpZXIoKSk7CiAgICAgTUVTU0FHRV9D
SEVDSyhjbGllbnRJRC5wcm9jZXNzSWRlbnRpZmllcigpID09IG1fcHJvY2Vzcy5jb3JlUHJvY2Vz
c0lkZW50aWZpZXIoKSk7Ci0gICAgbV9wcm9jZXNzLndlYnNpdGVEYXRhU3RvcmUoKS53ZWJMb2Nr
UmVnaXN0cnkoKS5hYm9ydExvY2tSZXF1ZXN0KFdURk1vdmUoY2xpZW50T3JpZ2luKSwgbG9ja0lk
ZW50aWZpZXIsIGNsaWVudElELCBXVEZNb3ZlKG5hbWUpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CisgICAgaWYgKGF1dG8qIGRhdGFTdG9yZSA9IFdlYnNpdGVEYXRhU3RvcmU6OmV4aXN0
aW5nRGF0YVN0b3JlRm9yU2Vzc2lvbklEKG1fcHJvY2Vzcy5zZXNzaW9uSUQoKSkpCisgICAgICAg
IGRhdGFTdG9yZS0+d2ViTG9ja1JlZ2lzdHJ5KCkuYWJvcnRMb2NrUmVxdWVzdChXVEZNb3ZlKGNs
aWVudE9yaWdpbiksIGxvY2tJZGVudGlmaWVyLCBjbGllbnRJRCwgV1RGTW92ZShuYW1lKSwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIGVsc2UKKyAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoZmFsc2UpOwogfQogCiB2b2lkIFdlYkxvY2tSZWdpc3RyeVByb3h5OjpzbmFwc2hvdChX
ZWJDb3JlOjpDbGllbnRPcmlnaW4mJiBjbGllbnRPcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoV2ViQ29yZTo6V2ViTG9ja01hbmFnZXJTbmFwc2hvdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKLSAgICBtX3Byb2Nlc3Mud2Vic2l0ZURhdGFTdG9yZSgpLndlYkxvY2tSZWdpc3RyeSgp
LnNuYXBzaG90KFdURk1vdmUoY2xpZW50T3JpZ2luKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOworICAgIGlmIChhdXRvKiBkYXRhU3RvcmUgPSBXZWJzaXRlRGF0YVN0b3JlOjpleGlzdGlu
Z0RhdGFTdG9yZUZvclNlc3Npb25JRChtX3Byb2Nlc3Muc2Vzc2lvbklEKCkpKQorICAgICAgICBk
YXRhU3RvcmUtPndlYkxvY2tSZWdpc3RyeSgpLnNuYXBzaG90KFdURk1vdmUoY2xpZW50T3JpZ2lu
KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIGVsc2UKKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoV2ViQ29yZTo6V2ViTG9ja01hbmFnZXJTbmFwc2hvdCB7IH0pOwogfQogCiB2
b2lkIFdlYkxvY2tSZWdpc3RyeVByb3h5OjpjbGllbnRJc0dvaW5nQXdheShXZWJDb3JlOjpDbGll
bnRPcmlnaW4mJiBjbGllbnRPcmlnaW4sIFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJ
ZGVudGlmaWVyIGNsaWVudElEKQogewogICAgIE1FU1NBR0VfQ0hFQ0soY2xpZW50SUQucHJvY2Vz
c0lkZW50aWZpZXIoKSA9PSBtX3Byb2Nlc3MuY29yZVByb2Nlc3NJZGVudGlmaWVyKCkpOwotICAg
IG1fcHJvY2Vzcy53ZWJzaXRlRGF0YVN0b3JlKCkud2ViTG9ja1JlZ2lzdHJ5KCkuY2xpZW50SXNH
b2luZ0F3YXkoV1RGTW92ZShjbGllbnRPcmlnaW4pLCBjbGllbnRJRCk7CisgICAgaWYgKGF1dG8q
IGRhdGFTdG9yZSA9IFdlYnNpdGVEYXRhU3RvcmU6OmV4aXN0aW5nRGF0YVN0b3JlRm9yU2Vzc2lv
bklEKG1fcHJvY2Vzcy5zZXNzaW9uSUQoKSkpCisgICAgICAgIGRhdGFTdG9yZS0+d2ViTG9ja1Jl
Z2lzdHJ5KCkuY2xpZW50SXNHb2luZ0F3YXkoV1RGTW92ZShjbGllbnRPcmlnaW4pLCBjbGllbnRJ
RCk7CiB9CiAKIHZvaWQgV2ViTG9ja1JlZ2lzdHJ5UHJveHk6OnByb2Nlc3NEaWRFeGl0KCkKIHsK
LSAgICBpZiAobV9oYXNFdmVyUmVxdWVzdGVkTG9ja3MpCi0gICAgICAgIG1fcHJvY2Vzcy53ZWJz
aXRlRGF0YVN0b3JlKCkud2ViTG9ja1JlZ2lzdHJ5KCkuY2xpZW50c0FyZUdvaW5nQXdheShtX3By
b2Nlc3MuY29yZVByb2Nlc3NJZGVudGlmaWVyKCkpOworICAgIGlmICghbV9oYXNFdmVyUmVxdWVz
dGVkTG9ja3MpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChhdXRvKiBkYXRhU3RvcmUgPSBX
ZWJzaXRlRGF0YVN0b3JlOjpleGlzdGluZ0RhdGFTdG9yZUZvclNlc3Npb25JRChtX3Byb2Nlc3Mu
c2Vzc2lvbklEKCkpKQorICAgICAgICBkYXRhU3RvcmUtPndlYkxvY2tSZWdpc3RyeSgpLmNsaWVu
dHNBcmVHb2luZ0F3YXkobV9wcm9jZXNzLmNvcmVQcm9jZXNzSWRlbnRpZmllcigpKTsKIH0KIAog
I3VuZGVmIE1FU1NBR0VfQ0hFQ0sKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCmluZGV4IGViZmNjOGI0NTk2NDY3NThiYWMzMmI3MzU1NDYwNWE3YmJiOTJkODAuLmIwY2M5
NDZjNTg1ZWFhNjg1NWYwMGRiNmRkYzc2ZDE2NmYzYzQxNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtOTc4LDcgKzk3OCw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5Ojpzd2FwVG9Qcm92aXNpb25hbFBhZ2Uoc3RkOjp1bmlxdWVfcHRyPFByb3Zpc2lvbmFsUGFn
ZVByb3h5PiBwCiAgICAgbV9wcm9jZXNzID0gcHJvdmlzaW9uYWxQYWdlLT5wcm9jZXNzKCk7CiAg
ICAgbV93ZWJQYWdlSUQgPSBwcm92aXNpb25hbFBhZ2UtPndlYlBhZ2VJRCgpOwogICAgIHBhZ2VD
bGllbnQoKS5kaWRDaGFuZ2VXZWJQYWdlSUQoKTsKLSAgICBtX3dlYnNpdGVEYXRhU3RvcmUgPSBt
X3Byb2Nlc3MtPndlYnNpdGVEYXRhU3RvcmUoKTsKKyAgICBtX3dlYnNpdGVEYXRhU3RvcmUgPSAq
cHJvdmlzaW9uYWxQYWdlLT53ZWJzaXRlRGF0YVN0b3JlKCk7CiAKICNpZiBIQVZFKFZJU0lCSUxJ
VFlfUFJPUEFHQVRJT05fVklFVykKICAgICBtX2NvbnRleHRJREZvclZpc2liaWxpdHlQcm9wYWdh
dGlvbkluV2ViUHJvY2VzcyA9IHByb3Zpc2lvbmFsUGFnZS0+Y29udGV4dElERm9yVmlzaWJpbGl0
eVByb3BhZ2F0aW9uSW5XZWJQcm9jZXNzKCk7CkBAIC0zNjE0LDcgKzM2MTQsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6Y29tbWl0UHJvdmlzaW9uYWxQYWdlKEZyYW1lSWRlbnRpZmllciBmcmFtZUlE
LCBGcmFtZUluZm9EYXRhJgogICAgIHJlbW92ZUFsbE1lc3NhZ2VSZWNlaXZlcnMoKTsKICAgICBh
dXRvKiBuYXZpZ2F0aW9uID0gbmF2aWdhdGlvblN0YXRlKCkubmF2aWdhdGlvbihtX3Byb3Zpc2lv
bmFsUGFnZS0+bmF2aWdhdGlvbklEKCkpOwogICAgIGJvb2wgZGlkU3VzcGVuZFByZXZpb3VzUGFn
ZSA9IG5hdmlnYXRpb24gJiYgIW1fcHJvdmlzaW9uYWxQYWdlLT5pc1Byb2Nlc3NTd2FwcGluZ09u
TmF2aWdhdGlvblJlc3BvbnNlKCkgPyBzdXNwZW5kQ3VycmVudFBhZ2VJZlBvc3NpYmxlKCpuYXZp
Z2F0aW9uLCBtYWluRnJhbWVJREluUHJldmlvdXNQcm9jZXNzLCBtX3Byb3Zpc2lvbmFsUGFnZS0+
cHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCgpLCBzaG91bGREZWxheUNsb3NpbmdVbnRpbEZp
cnN0TGF5ZXJGbHVzaCkgOiBmYWxzZTsKLSAgICBtX3Byb2Nlc3MtPnJlbW92ZVdlYlBhZ2UoKnRo
aXMsIG1fd2Vic2l0ZURhdGFTdG9yZS5wdHIoKSA9PSAmbV9wcm92aXNpb25hbFBhZ2UtPnByb2Nl
c3MoKS53ZWJzaXRlRGF0YVN0b3JlKCkgPyBXZWJQcm9jZXNzUHJveHk6OkVuZHNVc2luZ0RhdGFT
dG9yZTo6Tm8gOiBXZWJQcm9jZXNzUHJveHk6OkVuZHNVc2luZ0RhdGFTdG9yZTo6WWVzKTsKKyAg
ICBtX3Byb2Nlc3MtPnJlbW92ZVdlYlBhZ2UoKnRoaXMsIG1fd2Vic2l0ZURhdGFTdG9yZS5wdHIo
KSA9PSBtX3Byb3Zpc2lvbmFsUGFnZS0+d2Vic2l0ZURhdGFTdG9yZSgpID8gV2ViUHJvY2Vzc1By
b3h5OjpFbmRzVXNpbmdEYXRhU3RvcmU6Ok5vIDogV2ViUHJvY2Vzc1Byb3h5OjpFbmRzVXNpbmdE
YXRhU3RvcmU6Olllcyk7CiAKICAgICAvLyBUaGVyZSBpcyBubyB3YXkgd2UnbGwgYmUgYWJsZSB0
byByZXR1cm4gdG8gdGhlIHBhZ2UgaW4gdGhlIHByZXZpb3VzIHBhZ2Ugc28gY2xvc2UgaXQuCiAg
ICAgaWYgKCFkaWRTdXNwZW5kUHJldmlvdXNQYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc0NhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NDYWNoZS5jcHAKaW5kZXggNTFmY2JlNjYzNDFhOTkzMGY3OGM0MjcxMzQ4YTAx
ZWIxNGIzYzI3MS4uMDY5MTMzNDUyZGIxNTdjZDYzMzg4ZTdmMDViYmVhNzM1ZjY2ZTViMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc0NhY2hlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzQ2FjaGUuY3BwCkBAIC03Niw4ICs3
Niw4IEBAIGJvb2wgV2ViUHJvY2Vzc0NhY2hlOjpjYW5DYWNoZVByb2Nlc3MoV2ViUHJvY2Vzc1By
b3h5JiBwcm9jZXNzKSBjb25zdAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAg
YXV0byBzZXNzaW9uSUQgPSBwcm9jZXNzLndlYnNpdGVEYXRhU3RvcmUoKS5zZXNzaW9uSUQoKTsK
LSAgICBpZiAoc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkgJiYgIXByb2Nlc3MucHJvY2Vzc1Bvb2wo
KS5oYXNQYWdlc1VzaW5nV2Vic2l0ZURhdGFTdG9yZShwcm9jZXNzLndlYnNpdGVEYXRhU3RvcmUo
KSkpIHsKKyAgICBhdXRvIHNlc3Npb25JRCA9IHByb2Nlc3Muc2Vzc2lvbklEKCk7CisgICAgaWYg
KHNlc3Npb25JRC5pc0VwaGVtZXJhbCgpICYmICFwcm9jZXNzLnByb2Nlc3NQb29sKCkuaGFzUGFn
ZXNVc2luZ1dlYnNpdGVEYXRhU3RvcmUocHJvY2Vzcy5zZXNzaW9uSUQoKSkpIHsKICAgICAgICAg
V0VCUFJPQ0VTU0NBQ0hFX1JFTEVBU0VfTE9HKCJjYW5DYWNoZVByb2Nlc3M6IE5vdCBjYWNoaW5n
IHByb2Nlc3MgYmVjYXVzZSB0aGlzIHNlc3Npb24gaGFzIGJlZW4gZGVzdHJveWVkIiwgcHJvY2Vz
cy5wcm9jZXNzSWRlbnRpZmllcigpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAg
LTE1Myw3ICsxNTMsNyBAQCBSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiBXZWJQcm9jZXNzQ2FjaGU6
OnRha2VQcm9jZXNzKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRAogICAgIGlmIChpdCA9PSBt
X3Byb2Nlc3Nlc1BlclJlZ2lzdHJhYmxlRG9tYWluLmVuZCgpKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAotICAgIGlmICgmaXQtPnZhbHVlLT5wcm9jZXNzKCkud2Vic2l0ZURhdGFTdG9yZSgp
ICE9ICZkYXRhU3RvcmUpCisgICAgaWYgKGl0LT52YWx1ZS0+cHJvY2VzcygpLnNlc3Npb25JRCgp
ICE9IGRhdGFTdG9yZS5zZXNzaW9uSUQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAg
ICBpZiAoaXQtPnZhbHVlLT5wcm9jZXNzKCkuY2FwdGl2ZVBvcnRhbE1vZGUoKSAhPSBjYXB0aXZl
UG9ydGFsTW9kZSkKQEAgLTIxMiw3ICsyMTIsNyBAQCB2b2lkIFdlYlByb2Nlc3NDYWNoZTo6Y2xl
YXJBbGxQcm9jZXNzZXNGb3JTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKICAg
ICBWZWN0b3I8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IGtleXNUb1JlbW92ZTsKICAgICBm
b3IgKGF1dG8mIHBhaXIgOiBtX3Byb2Nlc3Nlc1BlclJlZ2lzdHJhYmxlRG9tYWluKSB7Ci0gICAg
ICAgIGlmIChwYWlyLnZhbHVlLT5wcm9jZXNzKCkud2Vic2l0ZURhdGFTdG9yZSgpLnNlc3Npb25J
RCgpID09IHNlc3Npb25JRCkgeworICAgICAgICBpZiAocGFpci52YWx1ZS0+cHJvY2VzcygpLnNl
c3Npb25JRCgpID09IHNlc3Npb25JRCkgewogICAgICAgICAgICAgV0VCUFJPQ0VTU0NBQ0hFX1JF
TEVBU0VfTE9HKCJjbGVhckFsbFByb2Nlc3Nlc0ZvclNlc3Npb246IEV2aWN0aW5nIHByb2Nlc3Mg
YmVjYXVzZSBpdHMgc2Vzc2lvbiB3YXMgZGVzdHJveWVkIiwgcGFpci52YWx1ZS0+cHJvY2Vzcygp
LnByb2Nlc3NJZGVudGlmaWVyKCkpOwogICAgICAgICAgICAga2V5c1RvUmVtb3ZlLmFwcGVuZChw
YWlyLmtleSk7CiAgICAgICAgIH0KQEAgLTIyMiw3ICsyMjIsNyBAQCB2b2lkIFdlYlByb2Nlc3ND
YWNoZTo6Y2xlYXJBbGxQcm9jZXNzZXNGb3JTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCkKIAogICAgIFZlY3Rvcjx1aW50NjRfdD4gcGVuZGluZ1JlcXVlc3RzVG9SZW1vdmU7CiAgICAg
Zm9yIChhdXRvJiBwYWlyIDogbV9wZW5kaW5nQWRkUmVxdWVzdHMpIHsKLSAgICAgICAgaWYgKHBh
aXIudmFsdWUtPnByb2Nlc3MoKS53ZWJzaXRlRGF0YVN0b3JlKCkuc2Vzc2lvbklEKCkgPT0gc2Vz
c2lvbklEKSB7CisgICAgICAgIGlmIChwYWlyLnZhbHVlLT5wcm9jZXNzKCkuc2Vzc2lvbklEKCkg
PT0gc2Vzc2lvbklEKSB7CiAgICAgICAgICAgICBXRUJQUk9DRVNTQ0FDSEVfUkVMRUFTRV9MT0co
ImNsZWFyQWxsUHJvY2Vzc2VzRm9yU2Vzc2lvbjogRXZpY3RpbmcgcHJvY2VzcyBiZWNhdXNlIGl0
cyBzZXNzaW9uIHdhcyBkZXN0cm95ZWQiLCBwYWlyLnZhbHVlLT5wcm9jZXNzKCkucHJvY2Vzc0lk
ZW50aWZpZXIoKSk7CiAgICAgICAgICAgICBwZW5kaW5nUmVxdWVzdHNUb1JlbW92ZS5hcHBlbmQo
cGFpci5rZXkpOwogICAgICAgICB9CkBAIC0yNzYsNyArMjc2LDkgQEAgV2ViUHJvY2Vzc0NhY2hl
OjpDYWNoZWRQcm9jZXNzOjpDYWNoZWRQcm9jZXNzKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJv
Y2VzcykKICNlbmRpZgogewogICAgIFJFTEVBU0VfQVNTRVJUKCFtX3Byb2Nlc3MtPnBhZ2VDb3Vu
dCgpKTsKLSAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX01FU1NBR0UoIW1fcHJvY2Vzcy0+d2Vic2l0
ZURhdGFTdG9yZSgpLnByb2Nlc3NlcygpLmNvbnRhaW5zKCptX3Byb2Nlc3MpLCAiT25seSBwcm9j
ZXNzZXMgd2l0aCBwYWdlcyBzaG91bGQgYmUgcmVnaXN0ZXJlZCB3aXRoIHRoZSBkYXRhIHN0b3Jl
Iik7CisgICAgYXV0byogZGF0YVN0b3JlID0gV2Vic2l0ZURhdGFTdG9yZTo6ZXhpc3RpbmdEYXRh
U3RvcmVGb3JTZXNzaW9uSUQobV9wcm9jZXNzLT5zZXNzaW9uSUQoKSk7CisgICAgUkVMRUFTRV9B
U1NFUlQoZGF0YVN0b3JlKTsKKyAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX01FU1NBR0UoIWRhdGFT
dG9yZS0+cHJvY2Vzc2VzKCkuY29udGFpbnMoKm1fcHJvY2VzcyksICJPbmx5IHByb2Nlc3NlcyB3
aXRoIHBhZ2VzIHNob3VsZCBiZSByZWdpc3RlcmVkIHdpdGggdGhlIGRhdGEgc3RvcmUiKTsKICAg
ICBtX3Byb2Nlc3MtPnNldElzSW5Qcm9jZXNzQ2FjaGUodHJ1ZSk7CiAgICAgbV9ldmljdGlvblRp
bWVyLnN0YXJ0T25lU2hvdChjYWNoZWRQcm9jZXNzTGlmZXRpbWUpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IDc3YzRiZTc5NDNkMWIwMjQyMmU3
Njc2Mjc4YzIwZjhjMDk1M2IwNDkuLmVjMDkwY2Y3NTVkN2I3NTk0ZDkyZTUzOTI2ZDM2NDcxMTJj
Y2Q4MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAg
LTU3MSw3ICs1NzEsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hSZW1vdGVXb3Jr
ZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoUmVtbwogCiAgICAgLy8gUHJpb3Jp
dGl6ZSB0aGUgcmVxdWVzdGluZyBXZWJQcm9jZXNzIGZvciBydW5uaW5nIHRoZSBzZXJ2aWNlIHdv
cmtlci4KICAgICBpZiAoIXJlbW90ZVdvcmtlclByb2Nlc3NQcm94eSAmJiAhc2hvdWxkVXNlU2Vw
YXJhdGVSZW1vdGVXb3JrZXJQcm9jZXNzICYmIHJlcXVlc3RpbmdQcm9jZXNzKSB7Ci0gICAgICAg
IGlmICgmcmVxdWVzdGluZ1Byb2Nlc3MtPndlYnNpdGVEYXRhU3RvcmUoKSA9PSB3ZWJzaXRlRGF0
YVN0b3JlICYmIHJlcXVlc3RpbmdQcm9jZXNzLT5pc01hdGNoaW5nUmVnaXN0cmFibGVEb21haW4o
cmVnaXN0cmFibGVEb21haW4pKQorICAgICAgICBpZiAocmVxdWVzdGluZ1Byb2Nlc3MtPnNlc3Np
b25JRCgpID09IHdlYnNpdGVEYXRhU3RvcmUtPnNlc3Npb25JRCgpICYmIHJlcXVlc3RpbmdQcm9j
ZXNzLT5pc01hdGNoaW5nUmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21haW4pKQogICAg
ICAgICAgICAgdXNlUHJvY2Vzc0ZvclJlbW90ZVdvcmtlcnMoKnJlcXVlc3RpbmdQcm9jZXNzKTsK
ICAgICB9CiAKQEAgLTU3OSw3ICs1NzksNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjplc3RhYmxp
c2hSZW1vdGVXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoUmVtbwogICAg
ICAgICBmb3IgKGF1dG8mIHByb2Nlc3MgOiBwcm9jZXNzUG9vbC0+bV9wcm9jZXNzZXMpIHsKICAg
ICAgICAgICAgIGlmIChwcm9jZXNzLnB0cigpID09IHByb2Nlc3NQb29sLT5tX3ByZXdhcm1lZFBy
b2Nlc3MuZ2V0KCkgfHwgcHJvY2Vzcy0+aXNEdW1teVByb2Nlc3NQcm94eSgpKQogICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgaWYgKCZwcm9jZXNzLT53ZWJzaXRlRGF0YVN0
b3JlKCkgIT0gd2Vic2l0ZURhdGFTdG9yZSkKKyAgICAgICAgICAgIGlmIChwcm9jZXNzLT5zZXNz
aW9uSUQoKSAhPSB3ZWJzaXRlRGF0YVN0b3JlLT5zZXNzaW9uSUQoKSkKICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgICAgIGlmICghcHJvY2Vzcy0+aXNNYXRjaGluZ1JlZ2lzdHJh
YmxlRG9tYWluKHJlZ2lzdHJhYmxlRG9tYWluKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsK
QEAgLTEwODUsNyArMTA4NSw3IEBAIFJlZjxXZWJQcm9jZXNzUHJveHk+IFdlYlByb2Nlc3NQb29s
Ojpwcm9jZXNzRm9yUmVnaXN0cmFibGVEb21haW4oV2Vic2l0ZURhdGFTdG9yCiAgICAgICAgICAg
ICBpZiAocHJvY2Vzcy0+aXNSdW5uaW5nU2VydmljZVdvcmtlcnMoKSkKICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKICNlbmRpZgotICAgICAgICAgICAgaWYgKG11c3RNYXRjaERhdGFTdG9yZSAm
JiAmcHJvY2Vzcy0+d2Vic2l0ZURhdGFTdG9yZSgpICE9ICZ3ZWJzaXRlRGF0YVN0b3JlKQorICAg
ICAgICAgICAgaWYgKG11c3RNYXRjaERhdGFTdG9yZSAmJiBwcm9jZXNzLT5zZXNzaW9uSUQoKSAh
PSB3ZWJzaXRlRGF0YVN0b3JlLnNlc3Npb25JRCgpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICAgICAgcmV0dXJuIHByb2Nlc3M7CiAgICAgICAgIH0KQEAgLTExMjUsNyArMTEy
NSw3IEBAIFJlZjxXZWJQYWdlUHJveHk+IFdlYlByb2Nlc3NQb29sOjpjcmVhdGVXZWJQYWdlKFBh
Z2VDbGllbnQmIHBhZ2VDbGllbnQsIFJlZjxBUEk6CiAgICAgICAgIC8vIFNoYXJpbmcgcHJvY2Vz
c2VzLCBlLmcuIHdoZW4gY3JlYXRpbmcgdGhlIHBhZ2UgdmlhIHdpbmRvdy5vcGVuKCkuCiAgICAg
ICAgIHByb2Nlc3MgPSAmcGFnZUNvbmZpZ3VyYXRpb24tPnJlbGF0ZWRQYWdlKCktPmVuc3VyZVJ1
bm5pbmdQcm9jZXNzKCk7CiAgICAgICAgIC8vIFdlIGRvIG5vdCBzdXBwb3J0IHNldmVyYWwgV2Vi
c2l0ZURhdGFTdG9yZXMgc2hhcmluZyBhIHNpbmdsZSBwcm9jZXNzLgotICAgICAgICBBU1NFUlQo
cHJvY2Vzcy0+aXNEdW1teVByb2Nlc3NQcm94eSgpIHx8IHBhZ2VDb25maWd1cmF0aW9uLT53ZWJz
aXRlRGF0YVN0b3JlKCkgPT0gJnByb2Nlc3MtPndlYnNpdGVEYXRhU3RvcmUoKSk7CisgICAgICAg
IEFTU0VSVChwcm9jZXNzLT5pc0R1bW15UHJvY2Vzc1Byb3h5KCkgfHwgcGFnZUNvbmZpZ3VyYXRp
b24tPndlYnNpdGVEYXRhU3RvcmUoKS0+c2Vzc2lvbklEKCkgPT0gcHJvY2Vzcy0+c2Vzc2lvbklE
KCkpOwogICAgICAgICBBU1NFUlQoJnBhZ2VDb25maWd1cmF0aW9uLT5yZWxhdGVkUGFnZSgpLT53
ZWJzaXRlRGF0YVN0b3JlKCkgPT0gcGFnZUNvbmZpZ3VyYXRpb24tPndlYnNpdGVEYXRhU3RvcmUo
KSk7CiAgICAgfSBlbHNlIGlmICghbV9pc0RlbGF5ZWRXZWJQcm9jZXNzTGF1bmNoRGlzYWJsZWQp
IHsKICAgICAgICAgLy8gSW4gdGhlIGNvbW1vbiBjYXNlLCB3ZSBkZWxheSBwcm9jZXNzIGxhdW5j
aCB1bnRpbCBzb21ldGhpbmcgaXMgYWN0dWFsbHkgbG9hZGVkIGluIHRoZSBwYWdlLgpAQCAtMTE4
MiwxOSArMTE4MiwxOCBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjp1cGRhdGVSZW1vdGVXb3JrZXJV
c2VyQWdlbnQoY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpCiAgICAgICAgIHdvcmtlclByb2Nlc3Mu
c2V0UmVtb3RlV29ya2VyVXNlckFnZW50KG1fcmVtb3RlV29ya2VyVXNlckFnZW50KTsKIH0KIAot
dm9pZCBXZWJQcm9jZXNzUG9vbDo6cGFnZUJlZ2luVXNpbmdXZWJzaXRlRGF0YVN0b3JlKFdlYlBh
Z2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCBXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUpCit2
b2lkIFdlYlByb2Nlc3NQb29sOjpwYWdlQmVnaW5Vc2luZ1dlYnNpdGVEYXRhU3RvcmUoV2ViUGFn
ZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKICAg
ICBSRUxFQVNFX0FTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgUkVMRUFTRV9BU1NFUlQo
bV9zZXNzaW9uVG9QYWdlSURzTWFwLmlzVmFsaWRLZXkoZGF0YVN0b3JlLnNlc3Npb25JRCgpKSk7
Ci0gICAgYXV0byByZXN1bHQgPSBtX3Nlc3Npb25Ub1BhZ2VJRHNNYXAuYWRkKGRhdGFTdG9yZS5z
ZXNzaW9uSUQoKSwgSGFzaFNldDxXZWJQYWdlUHJveHlJZGVudGlmaWVyPigpKS5pdGVyYXRvci0+
dmFsdWUuYWRkKHBhZ2VJRCk7CisgICAgUkVMRUFTRV9BU1NFUlQobV9zZXNzaW9uVG9QYWdlSURz
TWFwLmlzVmFsaWRLZXkoc2Vzc2lvbklEKSk7CisgICAgYXV0byByZXN1bHQgPSBtX3Nlc3Npb25U
b1BhZ2VJRHNNYXAuYWRkKHNlc3Npb25JRCwgSGFzaFNldDxXZWJQYWdlUHJveHlJZGVudGlmaWVy
PigpKS5pdGVyYXRvci0+dmFsdWUuYWRkKHBhZ2VJRCk7CiAgICAgQVNTRVJUX1VOVVNFRChyZXN1
bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGFnZUVu
ZFVzaW5nV2Vic2l0ZURhdGFTdG9yZShXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCwgV2Vi
c2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlKQordm9pZCBXZWJQcm9jZXNzUG9vbDo6cGFnZUVuZFVz
aW5nV2Vic2l0ZURhdGFTdG9yZShXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCwgUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklEKQogewogICAgIFJFTEVBU0VfQVNTRVJUKFJ1bkxvb3A6OmlzTWFp
bigpKTsKLSAgICBhdXRvIHNlc3Npb25JRCA9IGRhdGFTdG9yZS5zZXNzaW9uSUQoKTsKLSAgICBS
RUxFQVNFX0FTU0VSVChtX3Nlc3Npb25Ub1BhZ2VJRHNNYXAuaXNWYWxpZEtleShkYXRhU3RvcmUu
c2Vzc2lvbklEKCkpKTsKKyAgICBSRUxFQVNFX0FTU0VSVChtX3Nlc3Npb25Ub1BhZ2VJRHNNYXAu
aXNWYWxpZEtleShzZXNzaW9uSUQpKTsKICAgICBhdXRvIGl0ZXJhdG9yID0gbV9zZXNzaW9uVG9Q
YWdlSURzTWFwLmZpbmQoc2Vzc2lvbklEKTsKICAgICBSRUxFQVNFX0FTU0VSVChpdGVyYXRvciAh
PSBtX3Nlc3Npb25Ub1BhZ2VJRHNNYXAuZW5kKCkpOwogCkBAIC0xMjA5LDExICsxMjA4LDExIEBA
IHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBhZ2VFbmRVc2luZ1dlYnNpdGVEYXRhU3RvcmUoV2ViUGFn
ZVByb3h5SWRlbnRpZmllciBwYWdlSUQsCiAgICAgfQogfQogCi1ib29sIFdlYlByb2Nlc3NQb29s
OjpoYXNQYWdlc1VzaW5nV2Vic2l0ZURhdGFTdG9yZShXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3Rv
cmUpIGNvbnN0Citib29sIFdlYlByb2Nlc3NQb29sOjpoYXNQYWdlc1VzaW5nV2Vic2l0ZURhdGFT
dG9yZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIGNvbnN0CiB7CiAgICAgUkVMRUFTRV9BU1NF
UlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIFJFTEVBU0VfQVNTRVJUKG1fc2Vzc2lvblRvUGFn
ZUlEc01hcC5pc1ZhbGlkS2V5KGRhdGFTdG9yZS5zZXNzaW9uSUQoKSkpOwotICAgIHJldHVybiBt
X3Nlc3Npb25Ub1BhZ2VJRHNNYXAuY29udGFpbnMoZGF0YVN0b3JlLnNlc3Npb25JRCgpKTsKKyAg
ICBSRUxFQVNFX0FTU0VSVChtX3Nlc3Npb25Ub1BhZ2VJRHNNYXAuaXNWYWxpZEtleShzZXNzaW9u
SUQpKTsKKyAgICByZXR1cm4gbV9zZXNzaW9uVG9QYWdlSURzTWFwLmNvbnRhaW5zKHNlc3Npb25J
RCk7CiB9CiAKIERvd25sb2FkUHJveHkmIFdlYlByb2Nlc3NQb29sOjpkb3dubG9hZChXZWJzaXRl
RGF0YVN0b3JlJiBkYXRhU3RvcmUsIFdlYlBhZ2VQcm94eSogaW5pdGlhdGluZ1BhZ2UsIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFt
ZSkKQEAgLTE5NzUsNyArMTk3NCw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NGb3JO
YXZpZ2F0aW9uSW50ZXJuYWwoV2ViUGFnZVByb3h5JiBwYWdlLCBjb25zdCBBUEk6CiAgICAgICAg
IExPRyhQcm9jZXNzU3dhcHBpbmcsICIoUHJvY2Vzc1N3YXBwaW5nKSBDb25zaWRlcmluZyByZS11
c2Ugb2YgYSBwcmV2aW91c2x5IGNhY2hlZCBwcm9jZXNzIGZvciBkb21haW4gJXMiLCB0YXJnZXRS
ZWdpc3RyYWJsZURvbWFpbi5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAogICAgICAgICBpZiAo
YXV0byogcHJvY2VzcyA9IG1fc3dhcHBlZFByb2Nlc3Nlc1BlclJlZ2lzdHJhYmxlRG9tYWluLmdl
dCh0YXJnZXRSZWdpc3RyYWJsZURvbWFpbikpIHsKLSAgICAgICAgICAgIGlmICgmcHJvY2Vzcy0+
d2Vic2l0ZURhdGFTdG9yZSgpID09IGRhdGFTdG9yZS5wdHIoKSkgeworICAgICAgICAgICAgaWYg
KHByb2Nlc3MtPnNlc3Npb25JRCgpID09IGRhdGFTdG9yZS0+c2Vzc2lvbklEKCkpIHsKICAgICAg
ICAgICAgICAgICBMT0coUHJvY2Vzc1N3YXBwaW5nLCAiKFByb2Nlc3NTd2FwcGluZykgUmV1c2lu
ZyBhIHByZXZpb3VzbHkgY2FjaGVkIHByb2Nlc3Mgd2l0aCBwaWQgJWkgdG8gY29udGludWUgbmF2
aWdhdGlvbiB0byBVUkwgJXMiLCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCB0YXJnZXRV
Ukwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKICAgICAgICAgICAgICAgICByZXR1cm4gY29t
cGxldGlvbkhhbmRsZXIoKnByb2Nlc3MsIG51bGxwdHIsIHJlYXNvbik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAppbmRleCA0MDlhNzliNTFiNzA1MGQxMDhiZTEzMTBm
ZTJmMGEyYzBmNzU1N2U3Li4zODI5YjJlNmE4NzBjZTkxYWM1ZmNmNTBmMzUzYzY3Y2M2ZTgzNDg3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAgLTIxNCw5ICsy
MTQsOSBAQCBwdWJsaWM6CiAKICAgICBSZWY8V2ViUGFnZVByb3h5PiBjcmVhdGVXZWJQYWdlKFBh
Z2VDbGllbnQmLCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJik7CiAKLSAgICB2b2lkIHBh
Z2VCZWdpblVzaW5nV2Vic2l0ZURhdGFTdG9yZShXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJz
aXRlRGF0YVN0b3JlJik7Ci0gICAgdm9pZCBwYWdlRW5kVXNpbmdXZWJzaXRlRGF0YVN0b3JlKFdl
YlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYnNpdGVEYXRhU3RvcmUmKTsKLSAgICBib29sIGhhc1Bh
Z2VzVXNpbmdXZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmUmKSBjb25zdDsKKyAgICB2
b2lkIHBhZ2VCZWdpblVzaW5nV2Vic2l0ZURhdGFTdG9yZShXZWJQYWdlUHJveHlJZGVudGlmaWVy
LCBQQUw6OlNlc3Npb25JRCk7CisgICAgdm9pZCBwYWdlRW5kVXNpbmdXZWJzaXRlRGF0YVN0b3Jl
KFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklEKTsKKyAgICBib29sIGhhc1Bh
Z2VzVXNpbmdXZWJzaXRlRGF0YVN0b3JlKFBBTDo6U2Vzc2lvbklEKSBjb25zdDsKIAogICAgIGNv
bnN0IFN0cmluZyYgaW5qZWN0ZWRCdW5kbGVQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9jb25maWd1
cmF0aW9uLT5pbmplY3RlZEJ1bmRsZVBhdGgoKTsgfQogI2lmIFBMQVRGT1JNKENPQ09BKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggMTcwNDUwYTk1
YmE2ZThhNDllZTVmYzgxZTExYjU1MDkxYmI5NGI2Mi4uMGI0MTY4MzUyNjhhOGEzNzE1MjQ4ZmM2
YjViOGVkMDY2YWJlNmNjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UHJveHkuY3BwCkBAIC0yNDEsNyArMjQxLDYgQEAgV2ViUHJvY2Vzc1Byb3h5OjpXZWJQcm9jZXNz
UHJveHkoV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBXZWJzaXRlRGF0YVN0b3JlKgogI2Vu
ZGlmCiAgICAgLCBtX2lzUmVzcG9uc2l2ZShOb09yTWF5YmU6Ok1heWJlKQogICAgICwgbV92aXNp
YmxlUGFnZUNvdW50ZXIoW3RoaXNdKFJlZkNvdW50ZXJFdmVudCkgeyB1cGRhdGVCYWNrZ3JvdW5k
UmVzcG9uc2l2ZW5lc3NUaW1lcigpOyB9KQotICAgICwgbV93ZWJzaXRlRGF0YVN0b3JlKHdlYnNp
dGVEYXRhU3RvcmUpCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShNRURJQV9TVFJFQU0p
CiAgICAgLCBtX3VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkobWFrZVVuaXF1ZTxVc2VyTWVk
aWFDYXB0dXJlTWFuYWdlclByb3h5PihtYWtlVW5pcXVlUmVmPFVJUHJveHlGb3JDYXB0dXJlPigq
dGhpcykpKQogI2VuZGlmCkBAIC0yNTgsNyArMjU3LDggQEAgV2ViUHJvY2Vzc1Byb3h5OjpXZWJQ
cm9jZXNzUHJveHkoV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBXZWJzaXRlRGF0YVN0b3Jl
KgogICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CiAKICAgICBX
ZWJQYXN0ZWJvYXJkUHJveHk6OnNpbmdsZXRvbigpLmFkZFdlYlByb2Nlc3NQcm94eSgqdGhpcyk7
Ci0KKyAgICBpZiAod2Vic2l0ZURhdGFTdG9yZSkKKyAgICAgICAgbV9zZXNzaW9uSUQgPSB3ZWJz
aXRlRGF0YVN0b3JlLT5zZXNzaW9uSUQoKTsKICAgICBwbGF0Zm9ybUluaXRpYWxpemUoKTsKIH0K
IApAQCAtMzQ4LDMyICszNDgsMzQgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnNldElzSW5Qcm9j
ZXNzQ2FjaGUoYm9vbCB2YWx1ZSwgV2lsbFNodXREb3duIHdpbGxTaHV0RG93bikKIAogdm9pZCBX
ZWJQcm9jZXNzUHJveHk6OnNldFdlYnNpdGVEYXRhU3RvcmUoV2Vic2l0ZURhdGFTdG9yZSYgZGF0
YVN0b3JlKQogewotICAgIEFTU0VSVCghbV93ZWJzaXRlRGF0YVN0b3JlKTsKKyAgICBBU1NFUlQo
IW1fc2Vzc2lvbklELmlzVmFsaWQoKSk7CiAgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9H
KFByb2Nlc3MsICJzZXRXZWJzaXRlRGF0YVN0b3JlKCkgZGF0YVN0b3JlPSVwLCBzZXNzaW9uSUQ9
JSIgUFJJdTY0LCAmZGF0YVN0b3JlLCBkYXRhU3RvcmUuc2Vzc2lvbklEKCkudG9VSW50NjQoKSk7
Ci0gICAgbV93ZWJzaXRlRGF0YVN0b3JlID0gJmRhdGFTdG9yZTsKICAgICB1cGRhdGVSZWdpc3Ry
YXRpb25XaXRoRGF0YVN0b3JlKCk7CiAgICAgc2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6U2V0
V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMocHJvY2Vzc1Bvb2woKS53ZWJQcm9jZXNzRGF0YVN0
b3JlUGFyYW1ldGVycygqdGhpcywgZGF0YVN0b3JlKSksIDApOwogCiAgICAgLy8gRGVsYXkgY29u
c3RydWN0aW9uIG9mIHRoZSBXZWJMb2NrUmVnaXN0cnlQcm94eSB1bnRpbCB0aGUgV2ViUHJvY2Vz
c1Byb3h5IGhhcyBhIGRhdGEgc3RvcmUgc2luY2UgdGhlIGRhdGEgc3RvcmUgaG9sZHMgdGhlCiAg
ICAgLy8gTG9jYWxXZWJMb2NrUmVnaXN0cnkuCiAgICAgbV93ZWJMb2NrUmVnaXN0cnkgPSBtYWtl
VW5pcXVlPFdlYkxvY2tSZWdpc3RyeVByb3h5PigqdGhpcyk7CisgICAgbV9zZXNzaW9uSUQgPSBk
YXRhU3RvcmUuc2Vzc2lvbklEKCk7CiB9CiAKIGJvb2wgV2ViUHJvY2Vzc1Byb3h5Ojppc0R1bW15
UHJvY2Vzc1Byb3h5KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV93ZWJzaXRlRGF0YVN0b3JlICYm
IHByb2Nlc3NQb29sKCkuZHVtbXlQcm9jZXNzUHJveHkobV93ZWJzaXRlRGF0YVN0b3JlLT5zZXNz
aW9uSUQoKSkgPT0gdGhpczsKKyAgICByZXR1cm4gbV9zZXNzaW9uSUQuaXNWYWxpZCgpICYmIHBy
b2Nlc3NQb29sKCkuZHVtbXlQcm9jZXNzUHJveHkoc2Vzc2lvbklEKCkpID09IHRoaXM7CiB9CiAK
IHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp1cGRhdGVSZWdpc3RyYXRpb25XaXRoRGF0YVN0b3JlKCkK
IHsKLSAgICBpZiAoIW1fd2Vic2l0ZURhdGFTdG9yZSkKKyAgICBpZiAoIW1fc2Vzc2lvbklELmlz
VmFsaWQoKSkKICAgICAgICAgcmV0dXJuOwotICAgIAorCiAgICAgYm9vbCBzaG91bGRCZVJlZ2lz
dGVyZWQgPSBwYWdlQ291bnQoKSB8fCBwcm92aXNpb25hbFBhZ2VDb3VudCgpOwotICAgIGlmIChz
aG91bGRCZVJlZ2lzdGVyZWQpCi0gICAgICAgIG1fd2Vic2l0ZURhdGFTdG9yZS0+cmVnaXN0ZXJQ
cm9jZXNzKCp0aGlzKTsKLSAgICBlbHNlCi0gICAgICAgIG1fd2Vic2l0ZURhdGFTdG9yZS0+dW5y
ZWdpc3RlclByb2Nlc3MoKnRoaXMpOworICAgIGlmIChhdXRvKiBkYXRhU3RvcmUgPSBXZWJzaXRl
RGF0YVN0b3JlOjpleGlzdGluZ0RhdGFTdG9yZUZvclNlc3Npb25JRChzZXNzaW9uSUQoKSkpIHsK
KyAgICAgICAgaWYgKHNob3VsZEJlUmVnaXN0ZXJlZCkKKyAgICAgICAgICAgIGRhdGFTdG9yZS0+
cmVnaXN0ZXJQcm9jZXNzKCp0aGlzKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZGF0YVN0
b3JlLT51bnJlZ2lzdGVyUHJvY2VzcygqdGhpcyk7CisgICAgfQogfQogCiB2b2lkIFdlYlByb2Nl
c3NQcm94eTo6YWRkUHJvdmlzaW9uYWxQYWdlUHJveHkoUHJvdmlzaW9uYWxQYWdlUHJveHkmIHBy
b3Zpc2lvbmFsUGFnZSkKQEAgLTU5NiwxMSArNTk4LDExIEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5
OjphZGRFeGlzdGluZ1dlYlBhZ2UoV2ViUGFnZVByb3h5JiB3ZWJQYWdlLCBCZWdpbnNVc2luZ0Rh
dGFTCiAgICAgQVNTRVJUKCFtX3BhZ2VNYXAuY29udGFpbnMod2ViUGFnZS5pZGVudGlmaWVyKCkp
KTsKICAgICBBU1NFUlQoIWdsb2JhbFBhZ2VNYXAoKS5jb250YWlucyh3ZWJQYWdlLmlkZW50aWZp
ZXIoKSkpOwogICAgIFJFTEVBU0VfQVNTRVJUKCFtX2lzSW5Qcm9jZXNzQ2FjaGUpOwotICAgIEFT
U0VSVCghbV93ZWJzaXRlRGF0YVN0b3JlIHx8IG1fd2Vic2l0ZURhdGFTdG9yZSA9PSAmd2ViUGFn
ZS53ZWJzaXRlRGF0YVN0b3JlKCkpOworICAgIEFTU0VSVCghbV9zZXNzaW9uSUQuaXNWYWxpZCgp
IHx8IG1fc2Vzc2lvbklEID09IHdlYlBhZ2Uud2Vic2l0ZURhdGFTdG9yZSgpLnNlc3Npb25JRCgp
KTsKIAogICAgIGlmIChiZWdpbnNVc2luZ0RhdGFTdG9yZSA9PSBCZWdpbnNVc2luZ0RhdGFTdG9y
ZTo6WWVzKSB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fcHJvY2Vzc1Bvb2wpOwotICAgICAg
ICBtX3Byb2Nlc3NQb29sLT5wYWdlQmVnaW5Vc2luZ1dlYnNpdGVEYXRhU3RvcmUod2ViUGFnZS5p
ZGVudGlmaWVyKCksIHdlYlBhZ2Uud2Vic2l0ZURhdGFTdG9yZSgpKTsKKyAgICAgICAgbV9wcm9j
ZXNzUG9vbC0+cGFnZUJlZ2luVXNpbmdXZWJzaXRlRGF0YVN0b3JlKHdlYlBhZ2UuaWRlbnRpZmll
cigpLCB3ZWJQYWdlLndlYnNpdGVEYXRhU3RvcmUoKS5zZXNzaW9uSUQoKSk7CiAgICAgfQogCiAg
ICAgbWFya1Byb2Nlc3NBc1JlY2VudGx5VXNlZCgpOwpAQCAtNjMyLDcgKzYzNCw3IEBAIHZvaWQg
V2ViUHJvY2Vzc1Byb3h5OjpyZW1vdmVXZWJQYWdlKFdlYlBhZ2VQcm94eSYgd2ViUGFnZSwgRW5k
c1VzaW5nRGF0YVN0b3JlIGVuCiAgICAgQVNTRVJUX1VOVVNFRChyZW1vdmVkUGFnZSwgcmVtb3Zl
ZFBhZ2UgPT0gJndlYlBhZ2UpOwogCiAgICAgaWYgKGVuZHNVc2luZ0RhdGFTdG9yZSA9PSBFbmRz
VXNpbmdEYXRhU3RvcmU6OlllcykKLSAgICAgICAgbV9wcm9jZXNzUG9vbC0+cGFnZUVuZFVzaW5n
V2Vic2l0ZURhdGFTdG9yZSh3ZWJQYWdlLmlkZW50aWZpZXIoKSwgd2ViUGFnZS53ZWJzaXRlRGF0
YVN0b3JlKCkpOworICAgICAgICBtX3Byb2Nlc3NQb29sLT5wYWdlRW5kVXNpbmdXZWJzaXRlRGF0
YVN0b3JlKHdlYlBhZ2UuaWRlbnRpZmllcigpLCB3ZWJQYWdlLndlYnNpdGVEYXRhU3RvcmUoKS5z
ZXNzaW9uSUQoKSk7CiAKICAgICByZW1vdmVWaXNpdGVkTGlua1N0b3JlVXNlcih3ZWJQYWdlLnZp
c2l0ZWRMaW5rU3RvcmUoKSwgd2ViUGFnZS5pZGVudGlmaWVyKCkpOwogICAgIHVwZGF0ZVJlZ2lz
dHJhdGlvbldpdGhEYXRhU3RvcmUoKTsKQEAgLTgxNSw3ICs4MTcsOCBAQCB2b2lkIFdlYlByb2Nl
c3NQcm94eTo6dXBkYXRlQmFja0ZvcndhcmRJdGVtKGNvbnN0IEJhY2tGb3J3YXJkTGlzdEl0ZW1T
dGF0ZSYgaXRlbQogCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6Z2V0TmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uKE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbjo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7Ci0gICAgd2Vic2l0ZURhdGFTdG9yZSgpLmdl
dE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigqdGhpcywgV1RGTW92ZShyZXBseSkpOworICAgIGlm
IChhdXRvKiBkYXRhU3RvcmUgPSBXZWJzaXRlRGF0YVN0b3JlOjpleGlzdGluZ0RhdGFTdG9yZUZv
clNlc3Npb25JRChzZXNzaW9uSUQoKSkpCisgICAgICAgIGRhdGFTdG9yZS0+Z2V0TmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uKCp0aGlzLCBXVEZNb3ZlKHJlcGx5KSk7CiB9CiAKICNpZiBFTkFCTEUo
R1BVX1BST0NFU1MpCkBAIC0xNzA0LDEwICsxNzA3LDEyIEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5
OjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvck1haW5GcmFtZShjb25zdCBVUkwmIHVybCkKIAog
ICAgIGF1dG8gcmVnaXN0cmFibGVEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7
IHVybCB9OwogICAgIGlmIChtX3JlZ2lzdHJhYmxlRG9tYWluICYmICptX3JlZ2lzdHJhYmxlRG9t
YWluICE9IHJlZ2lzdHJhYmxlRG9tYWluKSB7Ci0gICAgICAgIGlmIChpc1J1bm5pbmdTZXJ2aWNl
V29ya2VycygpKQotICAgICAgICAgICAgd2Vic2l0ZURhdGFTdG9yZSgpLm5ldHdvcmtQcm9jZXNz
KCkudGVybWluYXRlUmVtb3RlV29ya2VyQ29udGV4dENvbm5lY3Rpb25XaGVuUG9zc2libGUoUmVt
b3RlV29ya2VyVHlwZTo6U2VydmljZVdvcmtlciwgd2Vic2l0ZURhdGFTdG9yZSgpLnNlc3Npb25J
RCgpLCAqbV9yZWdpc3RyYWJsZURvbWFpbiwgY29yZVByb2Nlc3NJZGVudGlmaWVyKCkpOwotICAg
ICAgICBpZiAoaXNSdW5uaW5nU2hhcmVkV29ya2VycygpKQotICAgICAgICAgICAgd2Vic2l0ZURh
dGFTdG9yZSgpLm5ldHdvcmtQcm9jZXNzKCkudGVybWluYXRlUmVtb3RlV29ya2VyQ29udGV4dENv
bm5lY3Rpb25XaGVuUG9zc2libGUoUmVtb3RlV29ya2VyVHlwZTo6U2hhcmVkV29ya2VyLCB3ZWJz
aXRlRGF0YVN0b3JlKCkuc2Vzc2lvbklEKCksICptX3JlZ2lzdHJhYmxlRG9tYWluLCBjb3JlUHJv
Y2Vzc0lkZW50aWZpZXIoKSk7CisgICAgICAgIGF1dG8qIGRhdGFTdG9yZSA9IFdlYnNpdGVEYXRh
U3RvcmU6OmV4aXN0aW5nRGF0YVN0b3JlRm9yU2Vzc2lvbklEKHNlc3Npb25JRCgpKTsKKyAgICAg
ICAgaWYgKGRhdGFTdG9yZSAmJiBpc1J1bm5pbmdTZXJ2aWNlV29ya2VycygpKQorICAgICAgICAg
ICAgZGF0YVN0b3JlLT5uZXR3b3JrUHJvY2VzcygpLnRlcm1pbmF0ZVJlbW90ZVdvcmtlckNvbnRl
eHRDb25uZWN0aW9uV2hlblBvc3NpYmxlKFJlbW90ZVdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIs
IHNlc3Npb25JRCgpLCAqbV9yZWdpc3RyYWJsZURvbWFpbiwgY29yZVByb2Nlc3NJZGVudGlmaWVy
KCkpOworCisgICAgICAgIGlmIChkYXRhU3RvcmUgJiYgaXNSdW5uaW5nU2hhcmVkV29ya2Vycygp
KQorICAgICAgICAgICAgZGF0YVN0b3JlLT5uZXR3b3JrUHJvY2VzcygpLnRlcm1pbmF0ZVJlbW90
ZVdvcmtlckNvbnRleHRDb25uZWN0aW9uV2hlblBvc3NpYmxlKFJlbW90ZVdvcmtlclR5cGU6OlNo
YXJlZFdvcmtlciwgc2Vzc2lvbklEKCksICptX3JlZ2lzdHJhYmxlRG9tYWluLCBjb3JlUHJvY2Vz
c0lkZW50aWZpZXIoKSk7CiAKICAgICAgICAgLy8gTnVsbCBvdXQgcmVnaXN0cmFibGUgZG9tYWlu
IHNpbmNlIHRoaXMgcHJvY2VzcyBoYXMgbm93IGJlZW4gdXNlZCBmb3Igc2V2ZXJhbCBkb21haW5z
LgogICAgICAgICBtX3JlZ2lzdHJhYmxlRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4geyB9OwpAQCAtMTc1NCw4ICsxNzU5LDcgQEAgV2ViUHJvY2Vzc1Bvb2wmIFdlYlByb2Nlc3NQ
cm94eTo6cHJvY2Vzc1Bvb2woKSBjb25zdAogCiBQQUw6OlNlc3Npb25JRCBXZWJQcm9jZXNzUHJv
eHk6OnNlc3Npb25JRCgpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKG1fd2Vic2l0ZURhdGFTdG9yZSk7
Ci0gICAgcmV0dXJuIG1fd2Vic2l0ZURhdGFTdG9yZS0+c2Vzc2lvbklEKCk7CisgICAgcmV0dXJu
IG1fc2Vzc2lvbklEOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlU3BlZWNoUmVj
b2duaXRpb25TZXJ2ZXIoU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJJZGVudGlmaWVyIGlkZW50aWZp
ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCmluZGV4IDA1NTVk
M2Q1NzYzNDViYjI0OTYxMDg1OGQ2OTQ2NmU0OTE1OWYxYWMuLmY4NmY0MzdkZDU0Mzk1MGVlMzgz
ODRjMTcwY2YyYTMxYzkxYTViODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5oCkBAIC0xNjcsNyArMTY3LDYgQEAgcHVibGljOgogICAgIHZvaWQgZW5hYmxlUmVt
b3RlV29ya2VycyhSZW1vdGVXb3JrZXJUeXBlLCBjb25zdCBVc2VyQ29udGVudENvbnRyb2xsZXJJ
ZGVudGlmaWVyJik7CiAgICAgdm9pZCBkaXNhYmxlUmVtb3RlV29ya2VycyhSZW1vdGVXb3JrZXJU
eXBlKTsKIAotICAgIFdlYnNpdGVEYXRhU3RvcmUmIHdlYnNpdGVEYXRhU3RvcmUoKSBjb25zdCB7
IEFTU0VSVChtX3dlYnNpdGVEYXRhU3RvcmUpOyByZXR1cm4gKm1fd2Vic2l0ZURhdGFTdG9yZTsg
fQogICAgIHZvaWQgc2V0V2Vic2l0ZURhdGFTdG9yZShXZWJzaXRlRGF0YVN0b3JlJik7CiAgICAg
CiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3Q7CkBAIC02MTQsNyArNjEzLDcg
QEAgcHJpdmF0ZToKIAogICAgIFZpc2libGVXZWJQYWdlQ291bnRlciBtX3Zpc2libGVQYWdlQ291
bnRlcjsKIAotICAgIFJlZlB0cjxXZWJzaXRlRGF0YVN0b3JlPiBtX3dlYnNpdGVEYXRhU3RvcmU7
CisgICAgUEFMOjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQgeyAwIH07CiAKICAgICBib29sIG1faXNV
bmRlck1lbW9yeVByZXNzdXJlIHsgZmFsc2UgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzUHJveHlHTGliLmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Byb3h5R0xpYi5jcHAKaW5kZXggODY0ZDBlMzZmYjhk
YTI1NmQ1MTMyZWUzNTYzMDZjNTI4YzZlNjRlNy4uMzY3MTM4ZjBjZjBlNjdiNDYyYTQ0NDBkYzcy
ZTdmNDJmZmFmOWUwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9X
ZWJQcm9jZXNzUHJveHlHTGliLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGli
L1dlYlByb2Nlc3NQcm94eUdMaWIuY3BwCkBAIC00Miw3ICs0Miw3IEBAIHZvaWQgV2ViUHJvY2Vz
c1Byb3h5OjpwbGF0Zm9ybUdldExhdW5jaE9wdGlvbnMoUHJvY2Vzc0xhdW5jaGVyOjpMYXVuY2hP
cHRpb25zJiBsCiAgICAgbGF1bmNoT3B0aW9ucy5leHRyYUluaXRpYWxpemF0aW9uRGF0YS5zZXQo
ImVuYWJsZS1zYW5kYm94Il9zLCBtX3Byb2Nlc3NQb29sLT5zYW5kYm94RW5hYmxlZCgpID8gInRy
dWUiX3MgOiAiZmFsc2UiX3MpOwogCiAgICAgaWYgKG1fcHJvY2Vzc1Bvb2wtPnNhbmRib3hFbmFi
bGVkKCkpIHsKLSAgICAgICAgV2Vic2l0ZURhdGFTdG9yZSogZGF0YVN0b3JlID0gbV93ZWJzaXRl
RGF0YVN0b3JlLmdldCgpOworICAgICAgICBXZWJzaXRlRGF0YVN0b3JlKiBkYXRhU3RvcmUgPSBX
ZWJzaXRlRGF0YVN0b3JlOjpleGlzdGluZ0RhdGFTdG9yZUZvclNlc3Npb25JRChtX3Nlc3Npb25J
RCk7CiAgICAgICAgIGlmICghZGF0YVN0b3JlKSB7CiAgICAgICAgICAgICAvLyBQcmV3YXJtZWQg
cHJvY2Vzc2VzIGRvbid0IGhhdmUgYSBXZWJzaXRlRGF0YVN0b3JlIHlldCwgc28gdXNlIHRoZSBw
cmltYXJ5IFdlYnNpdGVEYXRhU3RvcmUgZnJvbSB0aGUgV2ViUHJvY2Vzc1Bvb2wuCiAgICAgICAg
ICAgICAvLyBUaGUgcHJvY2VzcyB3b24ndCBiZSB1c2VkIGlmIGN1cnJlbnQgV2Vic2l0ZURhdGFT
dG9yZSBpcyBkaWZmZXJlbnQgdGhhbiB0aGUgV2ViUHJvY2Vzc1Bvb2wgcHJpbWFyeSBvbmUuCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457489</attachid>
            <date>2022-04-12 16:22:37 -0700</date>
            <delta_ts>2022-04-21 10:05:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238892-20220412162236.patch</filename>
            <type>text/plain</type>
            <size>35940</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyNzkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGMwMjU4NzhjMjMyZjc4OTA4
ZTIyMjEyNTIxNjAxM2YyYTY3MWQ4YmYuLjdkZjE3ZjY3OTMyZjA5OGQzZDA4ZmFjZjdiYWVlNTll
MjcyNDRkNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjQgQEAKKzIwMjItMDQtMTIgIFNpaHVpIExp
dSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViUHJvY2Vzc1Byb3h5IHNob3Vs
ZCBub3QgaG9sZCBXZWJzaXRlRGF0YVN0b3JlIGFsaXZlIHdoZW4gdGhlcmUgaXMgbm8gcGFnZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4ODkyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViUHJvY2Vz
c1Byb3h5IGNhbiBvdXRsaXZlIFdlYlBhZ2VQcm94eSwgYW5kIGJlY2F1c2UgV2ViUHJvY2Vzc1By
b3h5IGhvbGRzIHN0cm9uZyByZWZlcmVuY2UgdG8gV2Vic2l0ZURhdGFTdG9yZSwgCisgICAgICAg
IFdlYnNpdGVEYXRhU3RvcmUgd2lsbCBiZSBrZXB0IGFsaXZlIGV2ZW4gd2hlbiBpdCdzIG5vdCB1
c2VkIGJ5IGFueSBwYWdlLgorCisgICAgICAgICogVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpHUFVQcm9jZXNzUHJveHk6OmdldEdQVVByb2Nlc3ND
b25uZWN0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQcm94eTo6UHJvdmlzaW9uYWxQYWdl
UHJveHkpOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQcm94eTo6flByb3Zpc2lv
bmFsUGFnZVByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHku
aDoKKyAgICAgICAgKFdlYktpdDo6UHJvdmlzaW9uYWxQYWdlUHJveHk6OndlYnNpdGVEYXRhU3Rv
cmUgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpTdXNwZW5kZWRQYWdlUHJveHk6OmZpbmRSZXVzYWJsZVN1c3BlbmRl
ZFBhZ2VQcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRDYWNoZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkQ2FjaGU6OnJlbW92ZUVudHJpZXNG
b3JTZXNzaW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViTG9ja1JlZ2lzdHJ5UHJveHkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJMb2NrUmVnaXN0cnlQcm94eTo6cmVxdWVzdExvY2spOgor
ICAgICAgICAoV2ViS2l0OjpXZWJMb2NrUmVnaXN0cnlQcm94eTo6cmVsZWFzZUxvY2spOgorICAg
ICAgICAoV2ViS2l0OjpXZWJMb2NrUmVnaXN0cnlQcm94eTo6YWJvcnRMb2NrUmVxdWVzdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkxvY2tSZWdpc3RyeVByb3h5OjpzbmFwc2hvdCk6CisgICAgICAg
IChXZWJLaXQ6OldlYkxvY2tSZWdpc3RyeVByb3h5OjpjbGllbnRJc0dvaW5nQXdheSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkxvY2tSZWdpc3RyeVByb3h5Ojpwcm9jZXNzRGlkRXhpdCk6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6c3dhcFRvUHJvdmlzaW9uYWxQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5Ojpjb21taXRQcm92aXNpb25hbFBhZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
cm9jZXNzQ2FjaGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ2FjaGU6OmNhbkNh
Y2hlUHJvY2VzcyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDYWNoZTo6dGFr
ZVByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ2FjaGU6OmNsZWFyQWxsUHJv
Y2Vzc2VzRm9yU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDYWNoZTo6Q2Fj
aGVkUHJvY2Vzczo6Q2FjaGVkUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFJl
bW90ZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwcm9jZXNzRm9yUmVnaXN0cmFibGVEb21haW4pOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlV2ViUGFnZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwYWdlQmVnaW5Vc2luZ1dlYnNpdGVEYXRhU3RvcmUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cGFnZUVuZFVzaW5nV2Vic2l0ZURhdGFT
dG9yZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpoYXNQYWdlc1VzaW5nV2Vi
c2l0ZURhdGFTdG9yZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpw
cm9jZXNzRm9yTmF2aWdhdGlvbkludGVybmFsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpXZWJQcm9jZXNzUHJveHkpOgorICAgICAg
ICAoV2ViS2l0OjptX3dlYkxvY2tSZWdpc3RyeSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQcm94eTo6c2V0V2Vic2l0ZURhdGFTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQcm94eTo6aXNEdW1teVByb2Nlc3NQcm94eSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQcm94eTo6dXBkYXRlUmVnaXN0cmF0aW9uV2l0aERhdGFTdG9yZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6YWRkRXhpc3RpbmdXZWJQYWdlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpyZW1vdmVXZWJQYWdlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc1Byb3h5OjpnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yTWFp
bkZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpzZXNzaW9uSUQgY29u
c3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojp3ZWJzaXRlRGF0YVN0b3JlIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKiBVSVByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzUHJveHlHTGliLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpwbGF0Zm9ybUdldExhdW5jaE9wdGlvbnMpOgor
CiAyMDIyLTA0LTEyICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAg
IExlYWsgb2YgTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQyBhbmQgUmVtb3RlTWVkaWFTb3VyY2VQ
cm94eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmNw
cAppbmRleCA4M2FmMWU1NWRkZjc0ODgyMzlmODY5MTkyNzcyMGFiNmE4NjMxOTdkLi5iNjMxOGQ3
ZGE4ODBjYjAzOWQxYWE4ZmI0YTU2OWNmZTY1ZTE5M2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmNwcApAQCAtMzg3LDcgKzM4Nyw4IEBAIHZv
aWQgR1BVUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzV2lsbFNodXREb3duKElQQzo6Q29ubmVjdGlvbiYg
Y29ubmVjdGlvbikKIAogdm9pZCBHUFVQcm9jZXNzUHJveHk6OmdldEdQVVByb2Nlc3NDb25uZWN0
aW9uKFdlYlByb2Nlc3NQcm94eSYgd2ViUHJvY2Vzc1Byb3h5LCBjb25zdCBHUFVQcm9jZXNzQ29u
bmVjdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6
OkdldEdQVVByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKLSAgICBh
ZGRTZXNzaW9uKHdlYlByb2Nlc3NQcm94eS53ZWJzaXRlRGF0YVN0b3JlKCkpOworICAgIGlmIChh
dXRvKiBkYXRhU3RvcmUgPSBXZWJzaXRlRGF0YVN0b3JlOjpleGlzdGluZ0RhdGFTdG9yZUZvclNl
c3Npb25JRCh3ZWJQcm9jZXNzUHJveHkuc2Vzc2lvbklEKCkpKQorICAgICAgICBhZGRTZXNzaW9u
KCpkYXRhU3RvcmUpOwogCiAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICIlcCAt
IEdQVVByb2Nlc3NQcm94eSBpcyB0YWtpbmcgYSBiYWNrZ3JvdW5kIGFzc2VydGlvbiBiZWNhdXNl
IGEgd2ViIHByb2Nlc3MgaXMgcmVxdWVzdGluZyBhIGNvbm5lY3Rpb24iLCB0aGlzKTsKICAgICBz
dGFydFJlc3BvbnNpdmVuZXNzVGltZXIoVXNlTGF6eVN0b3A6Ok5vKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcAppbmRleCA4OGIyZWE4Mzg2
NzJhYzcxODY1ZWI2OWJjYWY1ZmIyMmNhMDBhODdmLi45YjQ0ZDU4MTE3ZmFkMTdjM2U5ZGYxM2I0
ZDJhZDJjNWM3YzZjOGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92
aXNpb25hbFBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlz
aW9uYWxQYWdlUHJveHkuY3BwCkBAIC04Myw4ICs4MywxMSBAQCBQcm92aXNpb25hbFBhZ2VQcm94
eTo6UHJvdmlzaW9uYWxQYWdlUHJveHkoV2ViUGFnZVByb3h5JiBwYWdlLCBSZWY8V2ViUHJvY2Vz
c1BybwogICAgIG1fcHJvY2Vzcy0+YWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV93ZWJQYWdlSUQsICp0aGlzKTsKICAgICBt
X3Byb2Nlc3MtPmFkZFByb3Zpc2lvbmFsUGFnZVByb3h5KCp0aGlzKTsKIAotICAgIGlmICgmbV9w
cm9jZXNzLT53ZWJzaXRlRGF0YVN0b3JlKCkgIT0gJm1fcGFnZS53ZWJzaXRlRGF0YVN0b3JlKCkp
Ci0gICAgICAgIG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5wYWdlQmVnaW5Vc2luZ1dlYnNpdGVE
YXRhU3RvcmUobV9wYWdlLmlkZW50aWZpZXIoKSwgbV9wcm9jZXNzLT53ZWJzaXRlRGF0YVN0b3Jl
KCkpOworICAgIGF1dG8gcHJvY2Vzc1Nlc3Npb25JRCA9IG1fcHJvY2Vzcy0+c2Vzc2lvbklEKCk7
CisgICAgaWYgKHByb2Nlc3NTZXNzaW9uSUQgIT0gbV9wYWdlLndlYnNpdGVEYXRhU3RvcmUoKS5z
ZXNzaW9uSUQoKSkKKyAgICAgICAgbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLnBhZ2VCZWdpblVz
aW5nV2Vic2l0ZURhdGFTdG9yZShtX3BhZ2UuaWRlbnRpZmllcigpLCBwcm9jZXNzU2Vzc2lvbklE
KTsKKyAgICBtX3dlYnNpdGVEYXRhU3RvcmUgPSBXZWJzaXRlRGF0YVN0b3JlOjpleGlzdGluZ0Rh
dGFTdG9yZUZvclNlc3Npb25JRChwcm9jZXNzU2Vzc2lvbklEKTsKKyAgICBBU1NFUlQobV93ZWJz
aXRlRGF0YVN0b3JlKTsKIAogICAgIC8vIElmIHdlIGFyZSByZWF0dGFjaGluZyB0byBhIFN1c3Bl
bmRlZFBhZ2UsIHRoZW4gdGhlIFdlYlByb2Nlc3MnIFdlYlBhZ2UgYWxyZWFkeSBleGlzdHMgYW5k
CiAgICAgLy8gV2ViUGFnZVByb3h5OjpkaWRDcmVhdGVNYWluRnJhbWUoKSB3aWxsIG5vdCBiZSBj
YWxsZWQgdG8gaW5pdGlhbGl6ZSBtX21haW5GcmFtZS4gSW4gc3VjaApAQCAtMTEyLDggKzExNSw4
IEBAIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojp+UHJvdmlzaW9uYWxQYWdlUHJveHkoKQogICAgIGlm
ICghbV93YXNDb21taXR0ZWQpIHsKICAgICAgICAgbV9wYWdlLmluc3BlY3RvckNvbnRyb2xsZXIo
KS53aWxsRGVzdHJveVByb3Zpc2lvbmFsUGFnZSgqdGhpcyk7CiAKLSAgICAgICAgaWYgKCZtX3By
b2Nlc3MtPndlYnNpdGVEYXRhU3RvcmUoKSAhPSAmbV9wYWdlLndlYnNpdGVEYXRhU3RvcmUoKSkK
LSAgICAgICAgICAgIG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5wYWdlRW5kVXNpbmdXZWJzaXRl
RGF0YVN0b3JlKG1fcGFnZS5pZGVudGlmaWVyKCksIG1fcHJvY2Vzcy0+d2Vic2l0ZURhdGFTdG9y
ZSgpKTsKKyAgICAgICAgaWYgKG1fcHJvY2Vzcy0+c2Vzc2lvbklEKCkgIT0gbV9wYWdlLndlYnNp
dGVEYXRhU3RvcmUoKS5zZXNzaW9uSUQoKSkKKyAgICAgICAgICAgIG1fcHJvY2Vzcy0+cHJvY2Vz
c1Bvb2woKS5wYWdlRW5kVXNpbmdXZWJzaXRlRGF0YVN0b3JlKG1fcGFnZS5pZGVudGlmaWVyKCks
IG1fcHJvY2Vzcy0+c2Vzc2lvbklEKCkpOwogCiAgICAgICAgIG1fcHJvY2Vzcy0+cmVtb3ZlTWVz
c2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUo
KSwgbV93ZWJQYWdlSUQpOwogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDbG9zZSgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVBy
b3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCmlu
ZGV4IDIyZDJiYjEyY2E2YWQ1OGYyZWY3YjdhOTk1OTNiM2YwNmU2NGE4OGYuLjg4MzUwMGZhYmEw
MzY2OGM2MzMzY2NjOWM5NTE2MThkY2NjMzk0NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaApAQCAtNjEsNiArNjEsNyBAQCBjbGFzcyBVc2Vy
RGF0YTsKIGNsYXNzIFdlYkZyYW1lUHJveHk7CiBjbGFzcyBXZWJQYWdlUHJveHk7CiBjbGFzcyBX
ZWJQcm9jZXNzUHJveHk7CitjbGFzcyBXZWJzaXRlRGF0YVN0b3JlOwogc3RydWN0IEZyYW1lSW5m
b0RhdGE7CiBzdHJ1Y3QgTmF2aWdhdGlvbkFjdGlvbkRhdGE7CiBzdHJ1Y3QgVVJMU2NoZW1lVGFz
a1BhcmFtZXRlcnM7CkBAIC04Myw2ICs4NCw3IEBAIHB1YmxpYzoKICAgICBQcm9jZXNzU3dhcFJl
cXVlc3RlZEJ5Q2xpZW50IHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQoKSBjb25zdCB7IHJl
dHVybiBtX3Byb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQ7IH0KICAgICB1aW50NjRfdCBuYXZp
Z2F0aW9uSUQoKSBjb25zdCB7IHJldHVybiBtX25hdmlnYXRpb25JRDsgfQogICAgIGNvbnN0IFVS
TCYgcHJvdmlzaW9uYWxVUkwoKSBjb25zdCB7IHJldHVybiBtX3Byb3Zpc2lvbmFsTG9hZFVSTDsg
fQorICAgIFdlYnNpdGVEYXRhU3RvcmUqIHdlYnNpdGVEYXRhU3RvcmUoKSBjb25zdCB7IHJldHVy
biBtX3dlYnNpdGVEYXRhU3RvcmUuZ2V0KCk7IH0KIAogICAgIGJvb2wgaXNQcm9jZXNzU3dhcHBp
bmdPbk5hdmlnYXRpb25SZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNQcm9jZXNzU3dhcHBp
bmdPbk5hdmlnYXRpb25SZXNwb25zZTsgfQogCkBAIC0xNjMsNiArMTY1LDcgQEAgcHJpdmF0ZToK
ICAgICBXZWJQYWdlUHJveHkmIG1fcGFnZTsKICAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBt
X3dlYlBhZ2VJRDsKICAgICBSZWY8V2ViUHJvY2Vzc1Byb3h5PiBtX3Byb2Nlc3M7CisgICAgUmVm
UHRyPFdlYnNpdGVEYXRhU3RvcmU+IG1fd2Vic2l0ZURhdGFTdG9yZTsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8RHJhd2luZ0FyZWFQcm94eT4gbV9kcmF3aW5nQXJlYTsKICAgICBSZWZQdHI8V2ViRnJh
bWVQcm94eT4gbV9tYWluRnJhbWU7CiAgICAgdWludDY0X3QgbV9uYXZpZ2F0aW9uSUQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcAppbmRleCBjY2Jk
NjEyODc4NTBlNzMxNjkxYTMzMGM0ZTMwYWQzYTM2ZTFmMDdkLi42MmYxZGEzNTA3Njg5NTE1NDBj
OGUwMWY0MWNmODM2MTFmYTNhZTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1
c3BlbmRlZFBhZ2VQcm94eS5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgUmVmUHRyPFdlYlByb2Nlc3NQ
cm94eT4gU3VzcGVuZGVkUGFnZVByb3h5OjpmaW5kUmV1c2FibGVTdXNwZW5kZWRQYWdlUHJvY2Vz
cyhXZWIKIHsKICAgICBmb3IgKGF1dG8qIHN1c3BlbmRlZFBhZ2UgOiBhbGxTdXNwZW5kZWRQYWdl
cygpKSB7CiAgICAgICAgIGF1dG8mIHByb2Nlc3MgPSBzdXNwZW5kZWRQYWdlLT5wcm9jZXNzKCk7
Ci0gICAgICAgIGlmICgmcHJvY2Vzcy5wcm9jZXNzUG9vbCgpID09ICZwcm9jZXNzUG9vbCAmJiBw
cm9jZXNzLnJlZ2lzdHJhYmxlRG9tYWluKCkgPT0gcmVnaXN0cmFibGVEb21haW4gJiYgJnByb2Nl
c3Mud2Vic2l0ZURhdGFTdG9yZSgpID09ICZkYXRhU3RvcmUgJiYgcHJvY2Vzcy5jcm9zc09yaWdp
bk1vZGUoKSAhPSBDcm9zc09yaWdpbk1vZGU6Oklzb2xhdGVkICYmIHByb2Nlc3MuY2FwdGl2ZVBv
cnRhbE1vZGUoKSA9PSBjYXB0aXZlUG9ydGFsTW9kZSkKKyAgICAgICAgaWYgKCZwcm9jZXNzLnBy
b2Nlc3NQb29sKCkgPT0gJnByb2Nlc3NQb29sICYmIHByb2Nlc3MucmVnaXN0cmFibGVEb21haW4o
KSA9PSByZWdpc3RyYWJsZURvbWFpbiAmJiBwcm9jZXNzLnNlc3Npb25JRCgpID09IGRhdGFTdG9y
ZS5zZXNzaW9uSUQoKSAmJiBwcm9jZXNzLmNyb3NzT3JpZ2luTW9kZSgpICE9IENyb3NzT3JpZ2lu
TW9kZTo6SXNvbGF0ZWQgJiYgcHJvY2Vzcy5jYXB0aXZlUG9ydGFsTW9kZSgpID09IGNhcHRpdmVQ
b3J0YWxNb2RlKQogICAgICAgICAgICAgcmV0dXJuICZwcm9jZXNzOwogICAgIH0KICAgICByZXR1
cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tG
b3J3YXJkQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRD
YWNoZS5jcHAKaW5kZXggNjRhMWE5ZjY5YzZjNDYyMjQ0MTdiZGFjMjBjYzBlODE0M2Y1YTAzNC4u
ZTU3ZDc5NGNhZTA4NWUzNjJlYThiYmJhMjFkYmZkMWRmMjBjYzJiZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRDYWNoZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRDYWNoZS5jcHAKQEAgLTEzNCw3ICsxMzQs
NyBAQCB2b2lkIFdlYkJhY2tGb3J3YXJkQ2FjaGU6OnJlbW92ZUVudHJpZXNGb3JQcm9jZXNzKFdl
YlByb2Nlc3NQcm94eSYgcHJvY2VzcykKIHZvaWQgV2ViQmFja0ZvcndhcmRDYWNoZTo6cmVtb3Zl
RW50cmllc0ZvclNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogewogICAgIHJlbW92
ZUVudHJpZXNNYXRjaGluZyhbc2Vzc2lvbklEXShhdXRvJiBpdGVtKSB7Ci0gICAgICAgIHJldHVy
biBpdGVtLmJhY2tGb3J3YXJkQ2FjaGVFbnRyeSgpLT5wcm9jZXNzKCkud2Vic2l0ZURhdGFTdG9y
ZSgpLnNlc3Npb25JRCgpID09IHNlc3Npb25JRDsKKyAgICAgICAgcmV0dXJuIGl0ZW0uYmFja0Zv
cndhcmRDYWNoZUVudHJ5KCktPnByb2Nlc3MoKS5zZXNzaW9uSUQoKSA9PSBzZXNzaW9uSUQ7CiAg
ICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkxvY2tS
ZWdpc3RyeVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkxvY2tSZWdpc3Ry
eVByb3h5LmNwcAppbmRleCBkZTg3OTBlYzFmMjAwZGY1MTRiNjRkNTQ1OTI1NjQ4ZTMxODIyYzI3
Li5jODNlYjY1NzU4ODhlYmY0N2YxNzhlZjE0MmUyM2JlZjkwOWFmZmYxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJMb2NrUmVnaXN0cnlQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViTG9ja1JlZ2lzdHJ5UHJveHkuY3BwCkBAIC0zMiw2ICsz
Miw3IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURh
dGFTdG9yZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvV2ViTG9ja0lkZW50aWZpZXIuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL1dlYkxvY2tNYW5hZ2VyU25hcHNob3QuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1dlYkxvY2tSZWdpc3RyeS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTU1LDQ0ICs1Niw1
OCBAQCB2b2lkIFdlYkxvY2tSZWdpc3RyeVByb3h5OjpyZXF1ZXN0TG9jayhXZWJDb3JlOjpDbGll
bnRPcmlnaW4mJiBjbGllbnRPcmlnaW4sIFdlYgogICAgIE1FU1NBR0VfQ0hFQ0soY2xpZW50SUQu
cHJvY2Vzc0lkZW50aWZpZXIoKSA9PSBtX3Byb2Nlc3MuY29yZVByb2Nlc3NJZGVudGlmaWVyKCkp
OwogICAgIG1faGFzRXZlclJlcXVlc3RlZExvY2tzID0gdHJ1ZTsKIAotICAgIG1fcHJvY2Vzcy53
ZWJzaXRlRGF0YVN0b3JlKCkud2ViTG9ja1JlZ2lzdHJ5KCkucmVxdWVzdExvY2soV1RGTW92ZShj
bGllbnRPcmlnaW4pLCBsb2NrSWRlbnRpZmllciwgY2xpZW50SUQsIFdURk1vdmUobmFtZSksIGxv
Y2tNb2RlLCBzdGVhbCwgaWZBdmFpbGFibGUsIFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9
LCBsb2NrSWRlbnRpZmllciwgY2xpZW50SURdKGJvb2wgc3VjY2VzcykgewotICAgICAgICBpZiAo
d2Vha1RoaXMpCi0gICAgICAgICAgICB3ZWFrVGhpcy0+bV9wcm9jZXNzLnNlbmQoTWVzc2FnZXM6
OlJlbW90ZVdlYkxvY2tSZWdpc3RyeTo6RGlkQ29tcGxldGVMb2NrUmVxdWVzdChsb2NrSWRlbnRp
ZmllciwgY2xpZW50SUQsIHN1Y2Nlc3MpLCAwKTsKLSAgICB9LCBbd2Vha1RoaXMgPSBXZWFrUHRy
IHsgKnRoaXMgfSwgbG9ja0lkZW50aWZpZXIsIGNsaWVudElEXSB7Ci0gICAgICAgIGlmICh3ZWFr
VGhpcykKLSAgICAgICAgICAgIHdlYWtUaGlzLT5tX3Byb2Nlc3Muc2VuZChNZXNzYWdlczo6UmVt
b3RlV2ViTG9ja1JlZ2lzdHJ5OjpEaWRTdGVhbExvY2sobG9ja0lkZW50aWZpZXIsIGNsaWVudElE
KSwgMCk7Ci0gICAgfSk7CisgICAgaWYgKGF1dG8qIGRhdGFTdG9yZSA9IFdlYnNpdGVEYXRhU3Rv
cmU6OmV4aXN0aW5nRGF0YVN0b3JlRm9yU2Vzc2lvbklEKG1fcHJvY2Vzcy5zZXNzaW9uSUQoKSkp
IHsKKyAgICAgICAgZGF0YVN0b3JlLT53ZWJMb2NrUmVnaXN0cnkoKS5yZXF1ZXN0TG9jayhXVEZN
b3ZlKGNsaWVudE9yaWdpbiksIGxvY2tJZGVudGlmaWVyLCBjbGllbnRJRCwgV1RGTW92ZShuYW1l
KSwgbG9ja01vZGUsIHN0ZWFsLCBpZkF2YWlsYWJsZSwgW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0
aGlzIH0sIGxvY2tJZGVudGlmaWVyLCBjbGllbnRJRF0oYm9vbCBzdWNjZXNzKSB7CisgICAgICAg
ICAgICBpZiAod2Vha1RoaXMpCisgICAgICAgICAgICAgICAgd2Vha1RoaXMtPm1fcHJvY2Vzcy5z
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVXZWJMb2NrUmVnaXN0cnk6OkRpZENvbXBsZXRlTG9ja1JlcXVl
c3QobG9ja0lkZW50aWZpZXIsIGNsaWVudElELCBzdWNjZXNzKSwgMCk7CisgICAgICAgIH0sIFt3
ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBsb2NrSWRlbnRpZmllciwgY2xpZW50SURdIHsK
KyAgICAgICAgICAgIGlmICh3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICB3ZWFrVGhpcy0+bV9w
cm9jZXNzLnNlbmQoTWVzc2FnZXM6OlJlbW90ZVdlYkxvY2tSZWdpc3RyeTo6RGlkU3RlYWxMb2Nr
KGxvY2tJZGVudGlmaWVyLCBjbGllbnRJRCksIDApOworICAgICAgICB9KTsKKyAgICB9IGVsc2UK
KyAgICAgICAgbV9wcm9jZXNzLnNlbmQoTWVzc2FnZXM6OlJlbW90ZVdlYkxvY2tSZWdpc3RyeTo6
RGlkQ29tcGxldGVMb2NrUmVxdWVzdChsb2NrSWRlbnRpZmllciwgY2xpZW50SUQsIGZhbHNlKSwg
MCk7CiB9CiAKIHZvaWQgV2ViTG9ja1JlZ2lzdHJ5UHJveHk6OnJlbGVhc2VMb2NrKFdlYkNvcmU6
OkNsaWVudE9yaWdpbiYmIGNsaWVudE9yaWdpbiwgV2ViQ29yZTo6V2ViTG9ja0lkZW50aWZpZXIg
bG9ja0lkZW50aWZpZXIsIFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVy
IGNsaWVudElELCBTdHJpbmcmJiBuYW1lKQogewogICAgIE1FU1NBR0VfQ0hFQ0sobG9ja0lkZW50
aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIoKSA9PSBtX3Byb2Nlc3MuY29yZVByb2Nlc3NJZGVudGlm
aWVyKCkpOwogICAgIE1FU1NBR0VfQ0hFQ0soY2xpZW50SUQucHJvY2Vzc0lkZW50aWZpZXIoKSA9
PSBtX3Byb2Nlc3MuY29yZVByb2Nlc3NJZGVudGlmaWVyKCkpOwotICAgIG1fcHJvY2Vzcy53ZWJz
aXRlRGF0YVN0b3JlKCkud2ViTG9ja1JlZ2lzdHJ5KCkucmVsZWFzZUxvY2soV1RGTW92ZShjbGll
bnRPcmlnaW4pLCBsb2NrSWRlbnRpZmllciwgY2xpZW50SUQsIFdURk1vdmUobmFtZSkpOworICAg
IGlmIChhdXRvKiBkYXRhU3RvcmUgPSBXZWJzaXRlRGF0YVN0b3JlOjpleGlzdGluZ0RhdGFTdG9y
ZUZvclNlc3Npb25JRChtX3Byb2Nlc3Muc2Vzc2lvbklEKCkpKQorICAgICAgICBkYXRhU3RvcmUt
PndlYkxvY2tSZWdpc3RyeSgpLnJlbGVhc2VMb2NrKFdURk1vdmUoY2xpZW50T3JpZ2luKSwgbG9j
a0lkZW50aWZpZXIsIGNsaWVudElELCBXVEZNb3ZlKG5hbWUpKTsKIH0KIAogdm9pZCBXZWJMb2Nr
UmVnaXN0cnlQcm94eTo6YWJvcnRMb2NrUmVxdWVzdChXZWJDb3JlOjpDbGllbnRPcmlnaW4mJiBj
bGllbnRPcmlnaW4sIFdlYkNvcmU6OldlYkxvY2tJZGVudGlmaWVyIGxvY2tJZGVudGlmaWVyLCBX
ZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciBjbGllbnRJRCwgU3RyaW5n
JiYgbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKICAgICBNRVNTQUdFX0NIRUNLKGxvY2tJZGVudGlmaWVyLnByb2Nlc3NJZGVudGlmaWVy
KCkgPT0gbV9wcm9jZXNzLmNvcmVQcm9jZXNzSWRlbnRpZmllcigpKTsKICAgICBNRVNTQUdFX0NI
RUNLKGNsaWVudElELnByb2Nlc3NJZGVudGlmaWVyKCkgPT0gbV9wcm9jZXNzLmNvcmVQcm9jZXNz
SWRlbnRpZmllcigpKTsKLSAgICBtX3Byb2Nlc3Mud2Vic2l0ZURhdGFTdG9yZSgpLndlYkxvY2tS
ZWdpc3RyeSgpLmFib3J0TG9ja1JlcXVlc3QoV1RGTW92ZShjbGllbnRPcmlnaW4pLCBsb2NrSWRl
bnRpZmllciwgY2xpZW50SUQsIFdURk1vdmUobmFtZSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKKyAgICBpZiAoYXV0byogZGF0YVN0b3JlID0gV2Vic2l0ZURhdGFTdG9yZTo6ZXhpc3Rp
bmdEYXRhU3RvcmVGb3JTZXNzaW9uSUQobV9wcm9jZXNzLnNlc3Npb25JRCgpKSkKKyAgICAgICAg
ZGF0YVN0b3JlLT53ZWJMb2NrUmVnaXN0cnkoKS5hYm9ydExvY2tSZXF1ZXN0KFdURk1vdmUoY2xp
ZW50T3JpZ2luKSwgbG9ja0lkZW50aWZpZXIsIGNsaWVudElELCBXVEZNb3ZlKG5hbWUpLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgZWxzZQorICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihmYWxzZSk7CiB9CiAKIHZvaWQgV2ViTG9ja1JlZ2lzdHJ5UHJveHk6OnNuYXBzaG90KFdl
YkNvcmU6OkNsaWVudE9yaWdpbiYmIGNsaWVudE9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChXZWJDb3JlOjpXZWJMb2NrTWFuYWdlclNuYXBzaG90JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewotICAgIG1fcHJvY2Vzcy53ZWJzaXRlRGF0YVN0b3JlKCkud2ViTG9ja1JlZ2lzdHJ5KCku
c25hcHNob3QoV1RGTW92ZShjbGllbnRPcmlnaW4pLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CisgICAgaWYgKGF1dG8qIGRhdGFTdG9yZSA9IFdlYnNpdGVEYXRhU3RvcmU6OmV4aXN0aW5n
RGF0YVN0b3JlRm9yU2Vzc2lvbklEKG1fcHJvY2Vzcy5zZXNzaW9uSUQoKSkpCisgICAgICAgIGRh
dGFTdG9yZS0+d2ViTG9ja1JlZ2lzdHJ5KCkuc25hcHNob3QoV1RGTW92ZShjbGllbnRPcmlnaW4p
LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgZWxzZQorICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihXZWJDb3JlOjpXZWJMb2NrTWFuYWdlclNuYXBzaG90IHsgfSk7CiB9CiAKIHZv
aWQgV2ViTG9ja1JlZ2lzdHJ5UHJveHk6OmNsaWVudElzR29pbmdBd2F5KFdlYkNvcmU6OkNsaWVu
dE9yaWdpbiYmIGNsaWVudE9yaWdpbiwgV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dElk
ZW50aWZpZXIgY2xpZW50SUQpCiB7CiAgICAgTUVTU0FHRV9DSEVDSyhjbGllbnRJRC5wcm9jZXNz
SWRlbnRpZmllcigpID09IG1fcHJvY2Vzcy5jb3JlUHJvY2Vzc0lkZW50aWZpZXIoKSk7Ci0gICAg
bV9wcm9jZXNzLndlYnNpdGVEYXRhU3RvcmUoKS53ZWJMb2NrUmVnaXN0cnkoKS5jbGllbnRJc0dv
aW5nQXdheShXVEZNb3ZlKGNsaWVudE9yaWdpbiksIGNsaWVudElEKTsKKyAgICBpZiAoYXV0byog
ZGF0YVN0b3JlID0gV2Vic2l0ZURhdGFTdG9yZTo6ZXhpc3RpbmdEYXRhU3RvcmVGb3JTZXNzaW9u
SUQobV9wcm9jZXNzLnNlc3Npb25JRCgpKSkKKyAgICAgICAgZGF0YVN0b3JlLT53ZWJMb2NrUmVn
aXN0cnkoKS5jbGllbnRJc0dvaW5nQXdheShXVEZNb3ZlKGNsaWVudE9yaWdpbiksIGNsaWVudElE
KTsKIH0KIAogdm9pZCBXZWJMb2NrUmVnaXN0cnlQcm94eTo6cHJvY2Vzc0RpZEV4aXQoKQogewot
ICAgIGlmIChtX2hhc0V2ZXJSZXF1ZXN0ZWRMb2NrcykKLSAgICAgICAgbV9wcm9jZXNzLndlYnNp
dGVEYXRhU3RvcmUoKS53ZWJMb2NrUmVnaXN0cnkoKS5jbGllbnRzQXJlR29pbmdBd2F5KG1fcHJv
Y2Vzcy5jb3JlUHJvY2Vzc0lkZW50aWZpZXIoKSk7CisgICAgaWYgKCFtX2hhc0V2ZXJSZXF1ZXN0
ZWRMb2NrcykKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGF1dG8qIGRhdGFTdG9yZSA9IFdl
YnNpdGVEYXRhU3RvcmU6OmV4aXN0aW5nRGF0YVN0b3JlRm9yU2Vzc2lvbklEKG1fcHJvY2Vzcy5z
ZXNzaW9uSUQoKSkpCisgICAgICAgIGRhdGFTdG9yZS0+d2ViTG9ja1JlZ2lzdHJ5KCkuY2xpZW50
c0FyZUdvaW5nQXdheShtX3Byb2Nlc3MuY29yZVByb2Nlc3NJZGVudGlmaWVyKCkpOwogfQogCiAj
dW5kZWYgTUVTU0FHRV9DSEVDSwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAKaW5kZXggZWJmY2M4YjQ1OTY0Njc1OGJhYzMyYjczNTU0NjA1YTdiYmI5MmQ4MC4uYjBjYzk0
NmM1ODVlYWE2ODU1ZjAwZGI2ZGRjNzZkMTY2ZjNjNDE3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC05NzgsNyArOTc4LDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnN3YXBUb1Byb3Zpc2lvbmFsUGFnZShzdGQ6OnVuaXF1ZV9wdHI8UHJvdmlzaW9uYWxQYWdl
UHJveHk+IHAKICAgICBtX3Byb2Nlc3MgPSBwcm92aXNpb25hbFBhZ2UtPnByb2Nlc3MoKTsKICAg
ICBtX3dlYlBhZ2VJRCA9IHByb3Zpc2lvbmFsUGFnZS0+d2ViUGFnZUlEKCk7CiAgICAgcGFnZUNs
aWVudCgpLmRpZENoYW5nZVdlYlBhZ2VJRCgpOwotICAgIG1fd2Vic2l0ZURhdGFTdG9yZSA9IG1f
cHJvY2Vzcy0+d2Vic2l0ZURhdGFTdG9yZSgpOworICAgIG1fd2Vic2l0ZURhdGFTdG9yZSA9ICpw
cm92aXNpb25hbFBhZ2UtPndlYnNpdGVEYXRhU3RvcmUoKTsKIAogI2lmIEhBVkUoVklTSUJJTElU
WV9QUk9QQUdBVElPTl9WSUVXKQogICAgIG1fY29udGV4dElERm9yVmlzaWJpbGl0eVByb3BhZ2F0
aW9uSW5XZWJQcm9jZXNzID0gcHJvdmlzaW9uYWxQYWdlLT5jb250ZXh0SURGb3JWaXNpYmlsaXR5
UHJvcGFnYXRpb25JbldlYlByb2Nlc3MoKTsKQEAgLTM2MTQsNyArMzYxNCw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5Ojpjb21taXRQcm92aXNpb25hbFBhZ2UoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQs
IEZyYW1lSW5mb0RhdGEmCiAgICAgcmVtb3ZlQWxsTWVzc2FnZVJlY2VpdmVycygpOwogICAgIGF1
dG8qIG5hdmlnYXRpb24gPSBuYXZpZ2F0aW9uU3RhdGUoKS5uYXZpZ2F0aW9uKG1fcHJvdmlzaW9u
YWxQYWdlLT5uYXZpZ2F0aW9uSUQoKSk7CiAgICAgYm9vbCBkaWRTdXNwZW5kUHJldmlvdXNQYWdl
ID0gbmF2aWdhdGlvbiAmJiAhbV9wcm92aXNpb25hbFBhZ2UtPmlzUHJvY2Vzc1N3YXBwaW5nT25O
YXZpZ2F0aW9uUmVzcG9uc2UoKSA/IHN1c3BlbmRDdXJyZW50UGFnZUlmUG9zc2libGUoKm5hdmln
YXRpb24sIG1haW5GcmFtZUlESW5QcmV2aW91c1Byb2Nlc3MsIG1fcHJvdmlzaW9uYWxQYWdlLT5w
cm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50KCksIHNob3VsZERlbGF5Q2xvc2luZ1VudGlsRmly
c3RMYXllckZsdXNoKSA6IGZhbHNlOwotICAgIG1fcHJvY2Vzcy0+cmVtb3ZlV2ViUGFnZSgqdGhp
cywgbV93ZWJzaXRlRGF0YVN0b3JlLnB0cigpID09ICZtX3Byb3Zpc2lvbmFsUGFnZS0+cHJvY2Vz
cygpLndlYnNpdGVEYXRhU3RvcmUoKSA/IFdlYlByb2Nlc3NQcm94eTo6RW5kc1VzaW5nRGF0YVN0
b3JlOjpObyA6IFdlYlByb2Nlc3NQcm94eTo6RW5kc1VzaW5nRGF0YVN0b3JlOjpZZXMpOworICAg
IG1fcHJvY2Vzcy0+cmVtb3ZlV2ViUGFnZSgqdGhpcywgbV93ZWJzaXRlRGF0YVN0b3JlLnB0cigp
ID09IG1fcHJvdmlzaW9uYWxQYWdlLT53ZWJzaXRlRGF0YVN0b3JlKCkgPyBXZWJQcm9jZXNzUHJv
eHk6OkVuZHNVc2luZ0RhdGFTdG9yZTo6Tm8gOiBXZWJQcm9jZXNzUHJveHk6OkVuZHNVc2luZ0Rh
dGFTdG9yZTo6WWVzKTsKIAogICAgIC8vIFRoZXJlIGlzIG5vIHdheSB3ZSdsbCBiZSBhYmxlIHRv
IHJldHVybiB0byB0aGUgcGFnZSBpbiB0aGUgcHJldmlvdXMgcGFnZSBzbyBjbG9zZSBpdC4KICAg
ICBpZiAoIWRpZFN1c3BlbmRQcmV2aW91c1BhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc0NhY2hlLmNwcAppbmRleCA1MWZjYmU2NjM0MWE5OTMwZjc4YzQyNzEzNDhhMDFl
YjE0YjNjMjcxLi4wNjkxMzM0NTJkYjE1N2NkNjMzODhlN2YwNWJiZWE3MzVmNjZlNWIzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzQ2FjaGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NDYWNoZS5jcHAKQEAgLTc2LDggKzc2
LDggQEAgYm9vbCBXZWJQcm9jZXNzQ2FjaGU6OmNhbkNhY2hlUHJvY2VzcyhXZWJQcm9jZXNzUHJv
eHkmIHByb2Nlc3MpIGNvbnN0CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBh
dXRvIHNlc3Npb25JRCA9IHByb2Nlc3Mud2Vic2l0ZURhdGFTdG9yZSgpLnNlc3Npb25JRCgpOwot
ICAgIGlmIChzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSAmJiAhcHJvY2Vzcy5wcm9jZXNzUG9vbCgp
Lmhhc1BhZ2VzVXNpbmdXZWJzaXRlRGF0YVN0b3JlKHByb2Nlc3Mud2Vic2l0ZURhdGFTdG9yZSgp
KSkgeworICAgIGF1dG8gc2Vzc2lvbklEID0gcHJvY2Vzcy5zZXNzaW9uSUQoKTsKKyAgICBpZiAo
c2Vzc2lvbklELmlzRXBoZW1lcmFsKCkgJiYgIXByb2Nlc3MucHJvY2Vzc1Bvb2woKS5oYXNQYWdl
c1VzaW5nV2Vic2l0ZURhdGFTdG9yZShwcm9jZXNzLnNlc3Npb25JRCgpKSkgewogICAgICAgICBX
RUJQUk9DRVNTQ0FDSEVfUkVMRUFTRV9MT0coImNhbkNhY2hlUHJvY2VzczogTm90IGNhY2hpbmcg
cHJvY2VzcyBiZWNhdXNlIHRoaXMgc2Vzc2lvbiBoYXMgYmVlbiBkZXN0cm95ZWQiLCBwcm9jZXNz
LnByb2Nlc3NJZGVudGlmaWVyKCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAt
MTUzLDcgKzE1Myw3IEBAIFJlZlB0cjxXZWJQcm9jZXNzUHJveHk+IFdlYlByb2Nlc3NDYWNoZTo6
dGFrZVByb2Nlc3MoY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVECiAgICAgaWYgKGl0ID09IG1f
cHJvY2Vzc2VzUGVyUmVnaXN0cmFibGVEb21haW4uZW5kKCkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCi0gICAgaWYgKCZpdC0+dmFsdWUtPnByb2Nlc3MoKS53ZWJzaXRlRGF0YVN0b3JlKCkg
IT0gJmRhdGFTdG9yZSkKKyAgICBpZiAoaXQtPnZhbHVlLT5wcm9jZXNzKCkuc2Vzc2lvbklEKCkg
IT0gZGF0YVN0b3JlLnNlc3Npb25JRCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAg
IGlmIChpdC0+dmFsdWUtPnByb2Nlc3MoKS5jYXB0aXZlUG9ydGFsTW9kZSgpICE9IGNhcHRpdmVQ
b3J0YWxNb2RlKQpAQCAtMjEyLDcgKzIxMiw3IEBAIHZvaWQgV2ViUHJvY2Vzc0NhY2hlOjpjbGVh
ckFsbFByb2Nlc3Nlc0ZvclNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogewogICAg
IFZlY3RvcjxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4ga2V5c1RvUmVtb3ZlOwogICAgIGZv
ciAoYXV0byYgcGFpciA6IG1fcHJvY2Vzc2VzUGVyUmVnaXN0cmFibGVEb21haW4pIHsKLSAgICAg
ICAgaWYgKHBhaXIudmFsdWUtPnByb2Nlc3MoKS53ZWJzaXRlRGF0YVN0b3JlKCkuc2Vzc2lvbklE
KCkgPT0gc2Vzc2lvbklEKSB7CisgICAgICAgIGlmIChwYWlyLnZhbHVlLT5wcm9jZXNzKCkuc2Vz
c2lvbklEKCkgPT0gc2Vzc2lvbklEKSB7CiAgICAgICAgICAgICBXRUJQUk9DRVNTQ0FDSEVfUkVM
RUFTRV9MT0coImNsZWFyQWxsUHJvY2Vzc2VzRm9yU2Vzc2lvbjogRXZpY3RpbmcgcHJvY2VzcyBi
ZWNhdXNlIGl0cyBzZXNzaW9uIHdhcyBkZXN0cm95ZWQiLCBwYWlyLnZhbHVlLT5wcm9jZXNzKCku
cHJvY2Vzc0lkZW50aWZpZXIoKSk7CiAgICAgICAgICAgICBrZXlzVG9SZW1vdmUuYXBwZW5kKHBh
aXIua2V5KTsKICAgICAgICAgfQpAQCAtMjIyLDcgKzIyMiw3IEBAIHZvaWQgV2ViUHJvY2Vzc0Nh
Y2hlOjpjbGVhckFsbFByb2Nlc3Nlc0ZvclNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
KQogCiAgICAgVmVjdG9yPHVpbnQ2NF90PiBwZW5kaW5nUmVxdWVzdHNUb1JlbW92ZTsKICAgICBm
b3IgKGF1dG8mIHBhaXIgOiBtX3BlbmRpbmdBZGRSZXF1ZXN0cykgewotICAgICAgICBpZiAocGFp
ci52YWx1ZS0+cHJvY2VzcygpLndlYnNpdGVEYXRhU3RvcmUoKS5zZXNzaW9uSUQoKSA9PSBzZXNz
aW9uSUQpIHsKKyAgICAgICAgaWYgKHBhaXIudmFsdWUtPnByb2Nlc3MoKS5zZXNzaW9uSUQoKSA9
PSBzZXNzaW9uSUQpIHsKICAgICAgICAgICAgIFdFQlBST0NFU1NDQUNIRV9SRUxFQVNFX0xPRygi
Y2xlYXJBbGxQcm9jZXNzZXNGb3JTZXNzaW9uOiBFdmljdGluZyBwcm9jZXNzIGJlY2F1c2UgaXRz
IHNlc3Npb24gd2FzIGRlc3Ryb3llZCIsIHBhaXIudmFsdWUtPnByb2Nlc3MoKS5wcm9jZXNzSWRl
bnRpZmllcigpKTsKICAgICAgICAgICAgIHBlbmRpbmdSZXF1ZXN0c1RvUmVtb3ZlLmFwcGVuZChw
YWlyLmtleSk7CiAgICAgICAgIH0KQEAgLTI3Niw3ICsyNzYsOSBAQCBXZWJQcm9jZXNzQ2FjaGU6
OkNhY2hlZFByb2Nlc3M6OkNhY2hlZFByb2Nlc3MoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9j
ZXNzKQogI2VuZGlmCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoIW1fcHJvY2Vzcy0+cGFnZUNvdW50
KCkpOwotICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfTUVTU0FHRSghbV9wcm9jZXNzLT53ZWJzaXRl
RGF0YVN0b3JlKCkucHJvY2Vzc2VzKCkuY29udGFpbnMoKm1fcHJvY2VzcyksICJPbmx5IHByb2Nl
c3NlcyB3aXRoIHBhZ2VzIHNob3VsZCBiZSByZWdpc3RlcmVkIHdpdGggdGhlIGRhdGEgc3RvcmUi
KTsKKyAgICBhdXRvKiBkYXRhU3RvcmUgPSBXZWJzaXRlRGF0YVN0b3JlOjpleGlzdGluZ0RhdGFT
dG9yZUZvclNlc3Npb25JRChtX3Byb2Nlc3MtPnNlc3Npb25JRCgpKTsKKyAgICBSRUxFQVNFX0FT
U0VSVChkYXRhU3RvcmUpOworICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfTUVTU0FHRSghZGF0YVN0
b3JlLT5wcm9jZXNzZXMoKS5jb250YWlucygqbV9wcm9jZXNzKSwgIk9ubHkgcHJvY2Vzc2VzIHdp
dGggcGFnZXMgc2hvdWxkIGJlIHJlZ2lzdGVyZWQgd2l0aCB0aGUgZGF0YSBzdG9yZSIpOwogICAg
IG1fcHJvY2Vzcy0+c2V0SXNJblByb2Nlc3NDYWNoZSh0cnVlKTsKICAgICBtX2V2aWN0aW9uVGlt
ZXIuc3RhcnRPbmVTaG90KGNhY2hlZFByb2Nlc3NMaWZldGltZSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggNzdjNGJlNzk0M2QxYjAyNDIyZTc2
NzYyNzhjMjBmOGMwOTUzYjA0OS4uZWMwOTBjZjc1NWQ3Yjc1OTRkOTJlNTM5MjZkMzY0NzExMmNj
ZDgyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAt
NTcxLDcgKzU3MSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFJlbW90ZVdvcmtl
ckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhSZW1vCiAKICAgICAvLyBQcmlvcml0
aXplIHRoZSByZXF1ZXN0aW5nIFdlYlByb2Nlc3MgZm9yIHJ1bm5pbmcgdGhlIHNlcnZpY2Ugd29y
a2VyLgogICAgIGlmICghcmVtb3RlV29ya2VyUHJvY2Vzc1Byb3h5ICYmICFzaG91bGRVc2VTZXBh
cmF0ZVJlbW90ZVdvcmtlclByb2Nlc3MgJiYgcmVxdWVzdGluZ1Byb2Nlc3MpIHsKLSAgICAgICAg
aWYgKCZyZXF1ZXN0aW5nUHJvY2Vzcy0+d2Vic2l0ZURhdGFTdG9yZSgpID09IHdlYnNpdGVEYXRh
U3RvcmUgJiYgcmVxdWVzdGluZ1Byb2Nlc3MtPmlzTWF0Y2hpbmdSZWdpc3RyYWJsZURvbWFpbihy
ZWdpc3RyYWJsZURvbWFpbikpCisgICAgICAgIGlmIChyZXF1ZXN0aW5nUHJvY2Vzcy0+c2Vzc2lv
bklEKCkgPT0gd2Vic2l0ZURhdGFTdG9yZS0+c2Vzc2lvbklEKCkgJiYgcmVxdWVzdGluZ1Byb2Nl
c3MtPmlzTWF0Y2hpbmdSZWdpc3RyYWJsZURvbWFpbihyZWdpc3RyYWJsZURvbWFpbikpCiAgICAg
ICAgICAgICB1c2VQcm9jZXNzRm9yUmVtb3RlV29ya2VycygqcmVxdWVzdGluZ1Byb2Nlc3MpOwog
ICAgIH0KIApAQCAtNTc5LDcgKzU3OSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlz
aFJlbW90ZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhSZW1vCiAgICAg
ICAgIGZvciAoYXV0byYgcHJvY2VzcyA6IHByb2Nlc3NQb29sLT5tX3Byb2Nlc3NlcykgewogICAg
ICAgICAgICAgaWYgKHByb2Nlc3MucHRyKCkgPT0gcHJvY2Vzc1Bvb2wtPm1fcHJld2FybWVkUHJv
Y2Vzcy5nZXQoKSB8fCBwcm9jZXNzLT5pc0R1bW15UHJvY2Vzc1Byb3h5KCkpCiAgICAgICAgICAg
ICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBpZiAoJnByb2Nlc3MtPndlYnNpdGVEYXRhU3Rv
cmUoKSAhPSB3ZWJzaXRlRGF0YVN0b3JlKQorICAgICAgICAgICAgaWYgKHByb2Nlc3MtPnNlc3Np
b25JRCgpICE9IHdlYnNpdGVEYXRhU3RvcmUtPnNlc3Npb25JRCgpKQogICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICAgICAgaWYgKCFwcm9jZXNzLT5pc01hdGNoaW5nUmVnaXN0cmFi
bGVEb21haW4ocmVnaXN0cmFibGVEb21haW4pKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpA
QCAtMTA4NSw3ICsxMDg1LDcgQEAgUmVmPFdlYlByb2Nlc3NQcm94eT4gV2ViUHJvY2Vzc1Bvb2w6
OnByb2Nlc3NGb3JSZWdpc3RyYWJsZURvbWFpbihXZWJzaXRlRGF0YVN0b3IKICAgICAgICAgICAg
IGlmIChwcm9jZXNzLT5pc1J1bm5pbmdTZXJ2aWNlV29ya2VycygpKQogICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwogI2VuZGlmCi0gICAgICAgICAgICBpZiAobXVzdE1hdGNoRGF0YVN0b3JlICYm
ICZwcm9jZXNzLT53ZWJzaXRlRGF0YVN0b3JlKCkgIT0gJndlYnNpdGVEYXRhU3RvcmUpCisgICAg
ICAgICAgICBpZiAobXVzdE1hdGNoRGF0YVN0b3JlICYmIHByb2Nlc3MtPnNlc3Npb25JRCgpICE9
IHdlYnNpdGVEYXRhU3RvcmUuc2Vzc2lvbklEKCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgICAgICByZXR1cm4gcHJvY2VzczsKICAgICAgICAgfQpAQCAtMTEyNSw3ICsxMTI1
LDcgQEAgUmVmPFdlYlBhZ2VQcm94eT4gV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZVdlYlBhZ2UoUGFn
ZUNsaWVudCYgcGFnZUNsaWVudCwgUmVmPEFQSToKICAgICAgICAgLy8gU2hhcmluZyBwcm9jZXNz
ZXMsIGUuZy4gd2hlbiBjcmVhdGluZyB0aGUgcGFnZSB2aWEgd2luZG93Lm9wZW4oKS4KICAgICAg
ICAgcHJvY2VzcyA9ICZwYWdlQ29uZmlndXJhdGlvbi0+cmVsYXRlZFBhZ2UoKS0+ZW5zdXJlUnVu
bmluZ1Byb2Nlc3MoKTsKICAgICAgICAgLy8gV2UgZG8gbm90IHN1cHBvcnQgc2V2ZXJhbCBXZWJz
aXRlRGF0YVN0b3JlcyBzaGFyaW5nIGEgc2luZ2xlIHByb2Nlc3MuCi0gICAgICAgIEFTU0VSVChw
cm9jZXNzLT5pc0R1bW15UHJvY2Vzc1Byb3h5KCkgfHwgcGFnZUNvbmZpZ3VyYXRpb24tPndlYnNp
dGVEYXRhU3RvcmUoKSA9PSAmcHJvY2Vzcy0+d2Vic2l0ZURhdGFTdG9yZSgpKTsKKyAgICAgICAg
QVNTRVJUKHByb2Nlc3MtPmlzRHVtbXlQcm9jZXNzUHJveHkoKSB8fCBwYWdlQ29uZmlndXJhdGlv
bi0+d2Vic2l0ZURhdGFTdG9yZSgpLT5zZXNzaW9uSUQoKSA9PSBwcm9jZXNzLT5zZXNzaW9uSUQo
KSk7CiAgICAgICAgIEFTU0VSVCgmcGFnZUNvbmZpZ3VyYXRpb24tPnJlbGF0ZWRQYWdlKCktPndl
YnNpdGVEYXRhU3RvcmUoKSA9PSBwYWdlQ29uZmlndXJhdGlvbi0+d2Vic2l0ZURhdGFTdG9yZSgp
KTsKICAgICB9IGVsc2UgaWYgKCFtX2lzRGVsYXllZFdlYlByb2Nlc3NMYXVuY2hEaXNhYmxlZCkg
ewogICAgICAgICAvLyBJbiB0aGUgY29tbW9uIGNhc2UsIHdlIGRlbGF5IHByb2Nlc3MgbGF1bmNo
IHVudGlsIHNvbWV0aGluZyBpcyBhY3R1YWxseSBsb2FkZWQgaW4gdGhlIHBhZ2UuCkBAIC0xMTgy
LDE5ICsxMTgyLDE4IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnVwZGF0ZVJlbW90ZVdvcmtlclVz
ZXJBZ2VudChjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkKICAgICAgICAgd29ya2VyUHJvY2Vzcy5z
ZXRSZW1vdGVXb3JrZXJVc2VyQWdlbnQobV9yZW1vdGVXb3JrZXJVc2VyQWdlbnQpOwogfQogCi12
b2lkIFdlYlByb2Nlc3NQb29sOjpwYWdlQmVnaW5Vc2luZ1dlYnNpdGVEYXRhU3RvcmUoV2ViUGFn
ZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSkKK3Zv
aWQgV2ViUHJvY2Vzc1Bvb2w6OnBhZ2VCZWdpblVzaW5nV2Vic2l0ZURhdGFTdG9yZShXZWJQYWdl
UHJveHlJZGVudGlmaWVyIHBhZ2VJRCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogewogICAg
IFJFTEVBU0VfQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBSRUxFQVNFX0FTU0VSVCht
X3Nlc3Npb25Ub1BhZ2VJRHNNYXAuaXNWYWxpZEtleShkYXRhU3RvcmUuc2Vzc2lvbklEKCkpKTsK
LSAgICBhdXRvIHJlc3VsdCA9IG1fc2Vzc2lvblRvUGFnZUlEc01hcC5hZGQoZGF0YVN0b3JlLnNl
c3Npb25JRCgpLCBIYXNoU2V0PFdlYlBhZ2VQcm94eUlkZW50aWZpZXI+KCkpLml0ZXJhdG9yLT52
YWx1ZS5hZGQocGFnZUlEKTsKKyAgICBSRUxFQVNFX0FTU0VSVChtX3Nlc3Npb25Ub1BhZ2VJRHNN
YXAuaXNWYWxpZEtleShzZXNzaW9uSUQpKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1fc2Vzc2lvblRv
UGFnZUlEc01hcC5hZGQoc2Vzc2lvbklELCBIYXNoU2V0PFdlYlBhZ2VQcm94eUlkZW50aWZpZXI+
KCkpLml0ZXJhdG9yLT52YWx1ZS5hZGQocGFnZUlEKTsKICAgICBBU1NFUlRfVU5VU0VEKHJlc3Vs
dCwgcmVzdWx0LmlzTmV3RW50cnkpOwogfQogCi12b2lkIFdlYlByb2Nlc3NQb29sOjpwYWdlRW5k
VXNpbmdXZWJzaXRlRGF0YVN0b3JlKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCBXZWJz
aXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUpCit2b2lkIFdlYlByb2Nlc3NQb29sOjpwYWdlRW5kVXNp
bmdXZWJzaXRlRGF0YVN0b3JlKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCBQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoUnVuTG9vcDo6aXNNYWlu
KCkpOwotICAgIGF1dG8gc2Vzc2lvbklEID0gZGF0YVN0b3JlLnNlc3Npb25JRCgpOwotICAgIFJF
TEVBU0VfQVNTRVJUKG1fc2Vzc2lvblRvUGFnZUlEc01hcC5pc1ZhbGlkS2V5KGRhdGFTdG9yZS5z
ZXNzaW9uSUQoKSkpOworICAgIFJFTEVBU0VfQVNTRVJUKG1fc2Vzc2lvblRvUGFnZUlEc01hcC5p
c1ZhbGlkS2V5KHNlc3Npb25JRCkpOwogICAgIGF1dG8gaXRlcmF0b3IgPSBtX3Nlc3Npb25Ub1Bh
Z2VJRHNNYXAuZmluZChzZXNzaW9uSUQpOwogICAgIFJFTEVBU0VfQVNTRVJUKGl0ZXJhdG9yICE9
IG1fc2Vzc2lvblRvUGFnZUlEc01hcC5lbmQoKSk7CiAKQEAgLTEyMDksMTEgKzEyMDgsMTEgQEAg
dm9pZCBXZWJQcm9jZXNzUG9vbDo6cGFnZUVuZFVzaW5nV2Vic2l0ZURhdGFTdG9yZShXZWJQYWdl
UHJveHlJZGVudGlmaWVyIHBhZ2VJRCwKICAgICB9CiB9CiAKLWJvb2wgV2ViUHJvY2Vzc1Bvb2w6
Omhhc1BhZ2VzVXNpbmdXZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9y
ZSkgY29uc3QKK2Jvb2wgV2ViUHJvY2Vzc1Bvb2w6Omhhc1BhZ2VzVXNpbmdXZWJzaXRlRGF0YVN0
b3JlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgY29uc3QKIHsKICAgICBSRUxFQVNFX0FTU0VS
VChSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgUkVMRUFTRV9BU1NFUlQobV9zZXNzaW9uVG9QYWdl
SURzTWFwLmlzVmFsaWRLZXkoZGF0YVN0b3JlLnNlc3Npb25JRCgpKSk7Ci0gICAgcmV0dXJuIG1f
c2Vzc2lvblRvUGFnZUlEc01hcC5jb250YWlucyhkYXRhU3RvcmUuc2Vzc2lvbklEKCkpOworICAg
IFJFTEVBU0VfQVNTRVJUKG1fc2Vzc2lvblRvUGFnZUlEc01hcC5pc1ZhbGlkS2V5KHNlc3Npb25J
RCkpOworICAgIHJldHVybiBtX3Nlc3Npb25Ub1BhZ2VJRHNNYXAuY29udGFpbnMoc2Vzc2lvbklE
KTsKIH0KIAogRG93bmxvYWRQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmRvd25sb2FkKFdlYnNpdGVE
YXRhU3RvcmUmIGRhdGFTdG9yZSwgV2ViUGFnZVByb3h5KiBpbml0aWF0aW5nUGFnZSwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1l
KQpAQCAtMTk3NSw3ICsxOTc0LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cHJvY2Vzc0Zvck5h
dmlnYXRpb25JbnRlcm5hbChXZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0IEFQSToKICAgICAgICAg
TE9HKFByb2Nlc3NTd2FwcGluZywgIihQcm9jZXNzU3dhcHBpbmcpIENvbnNpZGVyaW5nIHJlLXVz
ZSBvZiBhIHByZXZpb3VzbHkgY2FjaGVkIHByb2Nlc3MgZm9yIGRvbWFpbiAlcyIsIHRhcmdldFJl
Z2lzdHJhYmxlRG9tYWluLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgICAgIGlmIChh
dXRvKiBwcm9jZXNzID0gbV9zd2FwcGVkUHJvY2Vzc2VzUGVyUmVnaXN0cmFibGVEb21haW4uZ2V0
KHRhcmdldFJlZ2lzdHJhYmxlRG9tYWluKSkgewotICAgICAgICAgICAgaWYgKCZwcm9jZXNzLT53
ZWJzaXRlRGF0YVN0b3JlKCkgPT0gZGF0YVN0b3JlLnB0cigpKSB7CisgICAgICAgICAgICBpZiAo
cHJvY2Vzcy0+c2Vzc2lvbklEKCkgPT0gZGF0YVN0b3JlLT5zZXNzaW9uSUQoKSkgewogICAgICAg
ICAgICAgICAgIExPRyhQcm9jZXNzU3dhcHBpbmcsICIoUHJvY2Vzc1N3YXBwaW5nKSBSZXVzaW5n
IGEgcHJldmlvdXNseSBjYWNoZWQgcHJvY2VzcyB3aXRoIHBpZCAlaSB0byBjb250aW51ZSBuYXZp
Z2F0aW9uIHRvIFVSTCAlcyIsIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIHRhcmdldFVS
TC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAogICAgICAgICAgICAgICAgIHJldHVybiBjb21w
bGV0aW9uSGFuZGxlcigqcHJvY2VzcywgbnVsbHB0ciwgcmVhc29uKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4IDQwOWE3OWI1MWI3MDUwZDEwOGJlMTMxMGZl
MmYwYTJjMGY3NTU3ZTcuLjM4MjliMmU2YTg3MGNlOTFhYzVmY2Y1MGYzNTNjNjdjYzZlODM0ODcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtMjE0LDkgKzIx
NCw5IEBAIHB1YmxpYzoKIAogICAgIFJlZjxXZWJQYWdlUHJveHk+IGNyZWF0ZVdlYlBhZ2UoUGFn
ZUNsaWVudCYsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmKTsKIAotICAgIHZvaWQgcGFn
ZUJlZ2luVXNpbmdXZWJzaXRlRGF0YVN0b3JlKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYnNp
dGVEYXRhU3RvcmUmKTsKLSAgICB2b2lkIHBhZ2VFbmRVc2luZ1dlYnNpdGVEYXRhU3RvcmUoV2Vi
UGFnZVByb3h5SWRlbnRpZmllciwgV2Vic2l0ZURhdGFTdG9yZSYpOwotICAgIGJvb2wgaGFzUGFn
ZXNVc2luZ1dlYnNpdGVEYXRhU3RvcmUoV2Vic2l0ZURhdGFTdG9yZSYpIGNvbnN0OworICAgIHZv
aWQgcGFnZUJlZ2luVXNpbmdXZWJzaXRlRGF0YVN0b3JlKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIs
IFBBTDo6U2Vzc2lvbklEKTsKKyAgICB2b2lkIHBhZ2VFbmRVc2luZ1dlYnNpdGVEYXRhU3RvcmUo
V2ViUGFnZVByb3h5SWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQpOworICAgIGJvb2wgaGFzUGFn
ZXNVc2luZ1dlYnNpdGVEYXRhU3RvcmUoUEFMOjpTZXNzaW9uSUQpIGNvbnN0OwogCiAgICAgY29u
c3QgU3RyaW5nJiBpbmplY3RlZEJ1bmRsZVBhdGgoKSBjb25zdCB7IHJldHVybiBtX2NvbmZpZ3Vy
YXRpb24tPmluamVjdGVkQnVuZGxlUGF0aCgpOyB9CiAjaWYgUExBVEZPUk0oQ09DT0EpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCAxNzA0NTBhOTVi
YTZlOGE0OWVlNWZjODFlMTFiNTUwOTFiYjk0YjYyLi4wYjQxNjgzNTI2OGE4YTM3MTUyNDhmYzZi
NWI4ZWQwNjZhYmU2Y2MxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5jcHAKQEAgLTI0MSw3ICsyNDEsNiBAQCBXZWJQcm9jZXNzUHJveHk6OldlYlByb2Nlc3NQ
cm94eShXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIFdlYnNpdGVEYXRhU3RvcmUqCiAjZW5k
aWYKICAgICAsIG1faXNSZXNwb25zaXZlKE5vT3JNYXliZTo6TWF5YmUpCiAgICAgLCBtX3Zpc2li
bGVQYWdlQ291bnRlcihbdGhpc10oUmVmQ291bnRlckV2ZW50KSB7IHVwZGF0ZUJhY2tncm91bmRS
ZXNwb25zaXZlbmVzc1RpbWVyKCk7IH0pCi0gICAgLCBtX3dlYnNpdGVEYXRhU3RvcmUod2Vic2l0
ZURhdGFTdG9yZSkKICNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
ICAgICAsIG1fdXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eShtYWtlVW5pcXVlPFVzZXJNZWRp
YUNhcHR1cmVNYW5hZ2VyUHJveHk+KG1ha2VVbmlxdWVSZWY8VUlQcm94eUZvckNhcHR1cmU+KCp0
aGlzKSkpCiAjZW5kaWYKQEAgLTI1OCw3ICsyNTcsOCBAQCBXZWJQcm9jZXNzUHJveHk6OldlYlBy
b2Nlc3NQcm94eShXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIFdlYnNpdGVEYXRhU3RvcmUq
CiAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKIAogICAgIFdl
YlBhc3RlYm9hcmRQcm94eTo6c2luZ2xldG9uKCkuYWRkV2ViUHJvY2Vzc1Byb3h5KCp0aGlzKTsK
LQorICAgIGlmICh3ZWJzaXRlRGF0YVN0b3JlKQorICAgICAgICBtX3Nlc3Npb25JRCA9IHdlYnNp
dGVEYXRhU3RvcmUtPnNlc3Npb25JRCgpOwogICAgIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOwogfQog
CkBAIC0zNDgsMzIgKzM0OCwzNCBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6c2V0SXNJblByb2Nl
c3NDYWNoZShib29sIHZhbHVlLCBXaWxsU2h1dERvd24gd2lsbFNodXREb3duKQogCiB2b2lkIFdl
YlByb2Nlc3NQcm94eTo6c2V0V2Vic2l0ZURhdGFTdG9yZShXZWJzaXRlRGF0YVN0b3JlJiBkYXRh
U3RvcmUpCiB7Ci0gICAgQVNTRVJUKCFtX3dlYnNpdGVEYXRhU3RvcmUpOworICAgIEFTU0VSVCgh
bV9zZXNzaW9uSUQuaXNWYWxpZCgpKTsKICAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0co
UHJvY2VzcywgInNldFdlYnNpdGVEYXRhU3RvcmUoKSBkYXRhU3RvcmU9JXAsIHNlc3Npb25JRD0l
IiBQUkl1NjQsICZkYXRhU3RvcmUsIGRhdGFTdG9yZS5zZXNzaW9uSUQoKS50b1VJbnQ2NCgpKTsK
LSAgICBtX3dlYnNpdGVEYXRhU3RvcmUgPSAmZGF0YVN0b3JlOwogICAgIHVwZGF0ZVJlZ2lzdHJh
dGlvbldpdGhEYXRhU3RvcmUoKTsKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTZXRX
ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyhwcm9jZXNzUG9vbCgpLndlYlByb2Nlc3NEYXRhU3Rv
cmVQYXJhbWV0ZXJzKCp0aGlzLCBkYXRhU3RvcmUpKSwgMCk7CiAKICAgICAvLyBEZWxheSBjb25z
dHJ1Y3Rpb24gb2YgdGhlIFdlYkxvY2tSZWdpc3RyeVByb3h5IHVudGlsIHRoZSBXZWJQcm9jZXNz
UHJveHkgaGFzIGEgZGF0YSBzdG9yZSBzaW5jZSB0aGUgZGF0YSBzdG9yZSBob2xkcyB0aGUKICAg
ICAvLyBMb2NhbFdlYkxvY2tSZWdpc3RyeS4KICAgICBtX3dlYkxvY2tSZWdpc3RyeSA9IG1ha2VV
bmlxdWU8V2ViTG9ja1JlZ2lzdHJ5UHJveHk+KCp0aGlzKTsKKyAgICBtX3Nlc3Npb25JRCA9IGRh
dGFTdG9yZS5zZXNzaW9uSUQoKTsKIH0KIAogYm9vbCBXZWJQcm9jZXNzUHJveHk6OmlzRHVtbXlQ
cm9jZXNzUHJveHkoKSBjb25zdAogewotICAgIHJldHVybiBtX3dlYnNpdGVEYXRhU3RvcmUgJiYg
cHJvY2Vzc1Bvb2woKS5kdW1teVByb2Nlc3NQcm94eShtX3dlYnNpdGVEYXRhU3RvcmUtPnNlc3Np
b25JRCgpKSA9PSB0aGlzOworICAgIHJldHVybiBtX3Nlc3Npb25JRC5pc1ZhbGlkKCkgJiYgcHJv
Y2Vzc1Bvb2woKS5kdW1teVByb2Nlc3NQcm94eShzZXNzaW9uSUQoKSkgPT0gdGhpczsKIH0KIAog
dm9pZCBXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZVJlZ2lzdHJhdGlvbldpdGhEYXRhU3RvcmUoKQog
ewotICAgIGlmICghbV93ZWJzaXRlRGF0YVN0b3JlKQorICAgIGlmICghbV9zZXNzaW9uSUQuaXNW
YWxpZCgpKQogICAgICAgICByZXR1cm47Ci0gICAgCisKICAgICBib29sIHNob3VsZEJlUmVnaXN0
ZXJlZCA9IHBhZ2VDb3VudCgpIHx8IHByb3Zpc2lvbmFsUGFnZUNvdW50KCk7Ci0gICAgaWYgKHNo
b3VsZEJlUmVnaXN0ZXJlZCkKLSAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlLT5yZWdpc3RlclBy
b2Nlc3MoKnRoaXMpOwotICAgIGVsc2UKLSAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlLT51bnJl
Z2lzdGVyUHJvY2VzcygqdGhpcyk7CisgICAgaWYgKGF1dG8qIGRhdGFTdG9yZSA9IFdlYnNpdGVE
YXRhU3RvcmU6OmV4aXN0aW5nRGF0YVN0b3JlRm9yU2Vzc2lvbklEKHNlc3Npb25JRCgpKSkgewor
ICAgICAgICBpZiAoc2hvdWxkQmVSZWdpc3RlcmVkKQorICAgICAgICAgICAgZGF0YVN0b3JlLT5y
ZWdpc3RlclByb2Nlc3MoKnRoaXMpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBkYXRhU3Rv
cmUtPnVucmVnaXN0ZXJQcm9jZXNzKCp0aGlzKTsKKyAgICB9CiB9CiAKIHZvaWQgV2ViUHJvY2Vz
c1Byb3h5OjphZGRQcm92aXNpb25hbFBhZ2VQcm94eShQcm92aXNpb25hbFBhZ2VQcm94eSYgcHJv
dmlzaW9uYWxQYWdlKQpAQCAtNTk2LDExICs1OTgsMTEgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6
OmFkZEV4aXN0aW5nV2ViUGFnZShXZWJQYWdlUHJveHkmIHdlYlBhZ2UsIEJlZ2luc1VzaW5nRGF0
YVMKICAgICBBU1NFUlQoIW1fcGFnZU1hcC5jb250YWlucyh3ZWJQYWdlLmlkZW50aWZpZXIoKSkp
OwogICAgIEFTU0VSVCghZ2xvYmFsUGFnZU1hcCgpLmNvbnRhaW5zKHdlYlBhZ2UuaWRlbnRpZmll
cigpKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoIW1faXNJblByb2Nlc3NDYWNoZSk7Ci0gICAgQVNT
RVJUKCFtX3dlYnNpdGVEYXRhU3RvcmUgfHwgbV93ZWJzaXRlRGF0YVN0b3JlID09ICZ3ZWJQYWdl
LndlYnNpdGVEYXRhU3RvcmUoKSk7CisgICAgQVNTRVJUKCFtX3Nlc3Npb25JRC5pc1ZhbGlkKCkg
fHwgbV9zZXNzaW9uSUQgPT0gd2ViUGFnZS53ZWJzaXRlRGF0YVN0b3JlKCkuc2Vzc2lvbklEKCkp
OwogCiAgICAgaWYgKGJlZ2luc1VzaW5nRGF0YVN0b3JlID09IEJlZ2luc1VzaW5nRGF0YVN0b3Jl
OjpZZXMpIHsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9wcm9jZXNzUG9vbCk7Ci0gICAgICAg
IG1fcHJvY2Vzc1Bvb2wtPnBhZ2VCZWdpblVzaW5nV2Vic2l0ZURhdGFTdG9yZSh3ZWJQYWdlLmlk
ZW50aWZpZXIoKSwgd2ViUGFnZS53ZWJzaXRlRGF0YVN0b3JlKCkpOworICAgICAgICBtX3Byb2Nl
c3NQb29sLT5wYWdlQmVnaW5Vc2luZ1dlYnNpdGVEYXRhU3RvcmUod2ViUGFnZS5pZGVudGlmaWVy
KCksIHdlYlBhZ2Uud2Vic2l0ZURhdGFTdG9yZSgpLnNlc3Npb25JRCgpKTsKICAgICB9CiAKICAg
ICBtYXJrUHJvY2Vzc0FzUmVjZW50bHlVc2VkKCk7CkBAIC02MzIsNyArNjM0LDcgQEAgdm9pZCBX
ZWJQcm9jZXNzUHJveHk6OnJlbW92ZVdlYlBhZ2UoV2ViUGFnZVByb3h5JiB3ZWJQYWdlLCBFbmRz
VXNpbmdEYXRhU3RvcmUgZW4KICAgICBBU1NFUlRfVU5VU0VEKHJlbW92ZWRQYWdlLCByZW1vdmVk
UGFnZSA9PSAmd2ViUGFnZSk7CiAKICAgICBpZiAoZW5kc1VzaW5nRGF0YVN0b3JlID09IEVuZHNV
c2luZ0RhdGFTdG9yZTo6WWVzKQotICAgICAgICBtX3Byb2Nlc3NQb29sLT5wYWdlRW5kVXNpbmdX
ZWJzaXRlRGF0YVN0b3JlKHdlYlBhZ2UuaWRlbnRpZmllcigpLCB3ZWJQYWdlLndlYnNpdGVEYXRh
U3RvcmUoKSk7CisgICAgICAgIG1fcHJvY2Vzc1Bvb2wtPnBhZ2VFbmRVc2luZ1dlYnNpdGVEYXRh
U3RvcmUod2ViUGFnZS5pZGVudGlmaWVyKCksIHdlYlBhZ2Uud2Vic2l0ZURhdGFTdG9yZSgpLnNl
c3Npb25JRCgpKTsKIAogICAgIHJlbW92ZVZpc2l0ZWRMaW5rU3RvcmVVc2VyKHdlYlBhZ2Uudmlz
aXRlZExpbmtTdG9yZSgpLCB3ZWJQYWdlLmlkZW50aWZpZXIoKSk7CiAgICAgdXBkYXRlUmVnaXN0
cmF0aW9uV2l0aERhdGFTdG9yZSgpOwpAQCAtODE1LDcgKzgxNyw4IEBAIHZvaWQgV2ViUHJvY2Vz
c1Byb3h5Ojp1cGRhdGVCYWNrRm9yd2FyZEl0ZW0oY29uc3QgQmFja0ZvcndhcmRMaXN0SXRlbVN0
YXRlJiBpdGVtCiAKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpnZXROZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24oTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uOjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKLSAgICB3ZWJzaXRlRGF0YVN0b3JlKCkuZ2V0
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCp0aGlzLCBXVEZNb3ZlKHJlcGx5KSk7CisgICAgaWYg
KGF1dG8qIGRhdGFTdG9yZSA9IFdlYnNpdGVEYXRhU3RvcmU6OmV4aXN0aW5nRGF0YVN0b3JlRm9y
U2Vzc2lvbklEKHNlc3Npb25JRCgpKSkKKyAgICAgICAgZGF0YVN0b3JlLT5nZXROZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24oKnRoaXMsIFdURk1vdmUocmVwbHkpKTsKIH0KIAogI2lmIEVOQUJMRShH
UFVfUFJPQ0VTUykKQEAgLTE3MDQsMTAgKzE3MDcsMTIgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6
OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yTWFpbkZyYW1lKGNvbnN0IFVSTCYgdXJsKQogCiAg
ICAgYXV0byByZWdpc3RyYWJsZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHsg
dXJsIH07CiAgICAgaWYgKG1fcmVnaXN0cmFibGVEb21haW4gJiYgKm1fcmVnaXN0cmFibGVEb21h
aW4gIT0gcmVnaXN0cmFibGVEb21haW4pIHsKLSAgICAgICAgaWYgKGlzUnVubmluZ1NlcnZpY2VX
b3JrZXJzKCkpCi0gICAgICAgICAgICB3ZWJzaXRlRGF0YVN0b3JlKCkubmV0d29ya1Byb2Nlc3Mo
KS50ZXJtaW5hdGVSZW1vdGVXb3JrZXJDb250ZXh0Q29ubmVjdGlvbldoZW5Qb3NzaWJsZShSZW1v
dGVXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyLCB3ZWJzaXRlRGF0YVN0b3JlKCkuc2Vzc2lvbklE
KCksICptX3JlZ2lzdHJhYmxlRG9tYWluLCBjb3JlUHJvY2Vzc0lkZW50aWZpZXIoKSk7Ci0gICAg
ICAgIGlmIChpc1J1bm5pbmdTaGFyZWRXb3JrZXJzKCkpCi0gICAgICAgICAgICB3ZWJzaXRlRGF0
YVN0b3JlKCkubmV0d29ya1Byb2Nlc3MoKS50ZXJtaW5hdGVSZW1vdGVXb3JrZXJDb250ZXh0Q29u
bmVjdGlvbldoZW5Qb3NzaWJsZShSZW1vdGVXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIsIHdlYnNp
dGVEYXRhU3RvcmUoKS5zZXNzaW9uSUQoKSwgKm1fcmVnaXN0cmFibGVEb21haW4sIGNvcmVQcm9j
ZXNzSWRlbnRpZmllcigpKTsKKyAgICAgICAgYXV0byogZGF0YVN0b3JlID0gV2Vic2l0ZURhdGFT
dG9yZTo6ZXhpc3RpbmdEYXRhU3RvcmVGb3JTZXNzaW9uSUQoc2Vzc2lvbklEKCkpOworICAgICAg
ICBpZiAoZGF0YVN0b3JlICYmIGlzUnVubmluZ1NlcnZpY2VXb3JrZXJzKCkpCisgICAgICAgICAg
ICBkYXRhU3RvcmUtPm5ldHdvcmtQcm9jZXNzKCkudGVybWluYXRlUmVtb3RlV29ya2VyQ29udGV4
dENvbm5lY3Rpb25XaGVuUG9zc2libGUoUmVtb3RlV29ya2VyVHlwZTo6U2VydmljZVdvcmtlciwg
c2Vzc2lvbklEKCksICptX3JlZ2lzdHJhYmxlRG9tYWluLCBjb3JlUHJvY2Vzc0lkZW50aWZpZXIo
KSk7CisKKyAgICAgICAgaWYgKGRhdGFTdG9yZSAmJiBpc1J1bm5pbmdTaGFyZWRXb3JrZXJzKCkp
CisgICAgICAgICAgICBkYXRhU3RvcmUtPm5ldHdvcmtQcm9jZXNzKCkudGVybWluYXRlUmVtb3Rl
V29ya2VyQ29udGV4dENvbm5lY3Rpb25XaGVuUG9zc2libGUoUmVtb3RlV29ya2VyVHlwZTo6U2hh
cmVkV29ya2VyLCBzZXNzaW9uSUQoKSwgKm1fcmVnaXN0cmFibGVEb21haW4sIGNvcmVQcm9jZXNz
SWRlbnRpZmllcigpKTsKIAogICAgICAgICAvLyBOdWxsIG91dCByZWdpc3RyYWJsZSBkb21haW4g
c2luY2UgdGhpcyBwcm9jZXNzIGhhcyBub3cgYmVlbiB1c2VkIGZvciBzZXZlcmFsIGRvbWFpbnMu
CiAgICAgICAgIG1fcmVnaXN0cmFibGVEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biB7IH07CkBAIC0xNzU0LDggKzE3NTksNyBAQCBXZWJQcm9jZXNzUG9vbCYgV2ViUHJvY2Vzc1By
b3h5Ojpwcm9jZXNzUG9vbCgpIGNvbnN0CiAKIFBBTDo6U2Vzc2lvbklEIFdlYlByb2Nlc3NQcm94
eTo6c2Vzc2lvbklEKCkgY29uc3QKIHsKLSAgICBBU1NFUlQobV93ZWJzaXRlRGF0YVN0b3JlKTsK
LSAgICByZXR1cm4gbV93ZWJzaXRlRGF0YVN0b3JlLT5zZXNzaW9uSUQoKTsKKyAgICByZXR1cm4g
bV9zZXNzaW9uSUQ7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVTcGVlY2hSZWNv
Z25pdGlvblNlcnZlcihTcGVlY2hSZWNvZ25pdGlvblNlcnZlcklkZW50aWZpZXIgaWRlbnRpZmll
cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKaW5kZXggMDU1NWQz
ZDU3NjM0NWJiMjQ5NjEwODU4ZDY5NDY2ZTQ5MTU5ZjFhYy4uZjg2ZjQzN2RkNTQzOTUwZWUzODM4
NGMxNzBjZjJhMzFjOTFhNWI4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5LmgKQEAgLTE2Nyw3ICsxNjcsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBlbmFibGVSZW1v
dGVXb3JrZXJzKFJlbW90ZVdvcmtlclR5cGUsIGNvbnN0IFVzZXJDb250ZW50Q29udHJvbGxlcklk
ZW50aWZpZXImKTsKICAgICB2b2lkIGRpc2FibGVSZW1vdGVXb3JrZXJzKFJlbW90ZVdvcmtlclR5
cGUpOwogCi0gICAgV2Vic2l0ZURhdGFTdG9yZSYgd2Vic2l0ZURhdGFTdG9yZSgpIGNvbnN0IHsg
QVNTRVJUKG1fd2Vic2l0ZURhdGFTdG9yZSk7IHJldHVybiAqbV93ZWJzaXRlRGF0YVN0b3JlOyB9
CiAgICAgdm9pZCBzZXRXZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmUmKTsKICAgICAK
ICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdDsKQEAgLTYxNCw3ICs2MTMsNyBA
QCBwcml2YXRlOgogCiAgICAgVmlzaWJsZVdlYlBhZ2VDb3VudGVyIG1fdmlzaWJsZVBhZ2VDb3Vu
dGVyOwogCi0gICAgUmVmUHRyPFdlYnNpdGVEYXRhU3RvcmU+IG1fd2Vic2l0ZURhdGFTdG9yZTsK
KyAgICBQQUw6OlNlc3Npb25JRCBtX3Nlc3Npb25JRCB7IDAgfTsKIAogICAgIGJvb2wgbV9pc1Vu
ZGVyTWVtb3J5UHJlc3N1cmUgeyBmYWxzZSB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NQcm94eUdMaWIuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzUHJveHlHTGliLmNwcAppbmRleCA4NjRkMGUzNmZiOGRh
MjU2ZDUxMzJlZTM1NjMwNmM1MjhjNmU2NGU3Li5mM2ViYmI5ZjU5OGI4ZTNmNDI1ZTYyNzM3YWQy
ZDI5ZTFlYjQ5M2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dl
YlByb2Nlc3NQcm94eUdMaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIv
V2ViUHJvY2Vzc1Byb3h5R0xpYi5jcHAKQEAgLTQyLDEyICs0MiwxMyBAQCB2b2lkIFdlYlByb2Nl
c3NQcm94eTo6cGxhdGZvcm1HZXRMYXVuY2hPcHRpb25zKFByb2Nlc3NMYXVuY2hlcjo6TGF1bmNo
T3B0aW9ucyYgbAogICAgIGxhdW5jaE9wdGlvbnMuZXh0cmFJbml0aWFsaXphdGlvbkRhdGEuc2V0
KCJlbmFibGUtc2FuZGJveCJfcywgbV9wcm9jZXNzUG9vbC0+c2FuZGJveEVuYWJsZWQoKSA/ICJ0
cnVlIl9zIDogImZhbHNlIl9zKTsKIAogICAgIGlmIChtX3Byb2Nlc3NQb29sLT5zYW5kYm94RW5h
YmxlZCgpKSB7Ci0gICAgICAgIFdlYnNpdGVEYXRhU3RvcmUqIGRhdGFTdG9yZSA9IG1fd2Vic2l0
ZURhdGFTdG9yZS5nZXQoKTsKLSAgICAgICAgaWYgKCFkYXRhU3RvcmUpIHsKLSAgICAgICAgICAg
IC8vIFByZXdhcm1lZCBwcm9jZXNzZXMgZG9uJ3QgaGF2ZSBhIFdlYnNpdGVEYXRhU3RvcmUgeWV0
LCBzbyB1c2UgdGhlIHByaW1hcnkgV2Vic2l0ZURhdGFTdG9yZSBmcm9tIHRoZSBXZWJQcm9jZXNz
UG9vbC4KLSAgICAgICAgICAgIC8vIFRoZSBwcm9jZXNzIHdvbid0IGJlIHVzZWQgaWYgY3VycmVu
dCBXZWJzaXRlRGF0YVN0b3JlIGlzIGRpZmZlcmVudCB0aGFuIHRoZSBXZWJQcm9jZXNzUG9vbCBw
cmltYXJ5IG9uZS4KKyAgICAgICAgV2Vic2l0ZURhdGFTdG9yZSogZGF0YVN0b3JlID0gbnVsbHB0
cjsKKyAgICAgICAgaWYgKG1fc2Vzc2lvbklELmlzVmFsaWQoKSkKKyAgICAgICAgICAgIGRhdGFT
dG9yZSA9IFdlYnNpdGVEYXRhU3RvcmU6OmV4aXN0aW5nRGF0YVN0b3JlRm9yU2Vzc2lvbklEKG1f
c2Vzc2lvbklEKTsKKworICAgICAgICAvLyBGb3IgcHJld2FybWVkIHdlYiBwcm9jZXNzZXMsIFdl
YnNpdGVEYXRhU3RvcmUgbWF5IG5vdCBleGlzdCB5ZXQsIHNvIHdlIHVzZSBkZWZhdWx0IFdlYnNp
dGVEYXRhU3RvcmUuCisgICAgICAgIGlmICghZGF0YVN0b3JlKQogICAgICAgICAgICAgZGF0YVN0
b3JlID0gV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpLnB0cigpOwotICAgICAg
ICB9CiAKICAgICAgICAgQVNTRVJUKGRhdGFTdG9yZSk7CiAgICAgICAgIGRhdGFTdG9yZS0+cmVz
b2x2ZURpcmVjdG9yaWVzSWZOZWNlc3NhcnkoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458073</attachid>
            <date>2022-04-21 10:05:20 -0700</date>
            <delta_ts>2022-05-13 16:09:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238892-20220421100519.patch</filename>
            <type>text/plain</type>
            <size>35932</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzMTcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGUyZjc5NGNiOGQ3ZjdjMWE1
ODM3MmMwN2E3MDgyZjk2MDg2MWI3OGUuLmNlMmI0ZjFkOGUzOWQ1NTNlYzYwODUyYzQ1OWE2Njk0
NjY0ZjZiYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjQgQEAKKzIwMjItMDQtMjEgIFNpaHVpIExp
dSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViUHJvY2Vzc1Byb3h5IHNob3Vs
ZCBub3QgaG9sZCBXZWJzaXRlRGF0YVN0b3JlIGFsaXZlIHdoZW4gdGhlcmUgaXMgbm8gcGFnZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4ODkyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViUHJvY2Vz
c1Byb3h5IGNhbiBvdXRsaXZlIFdlYlBhZ2VQcm94eSwgYW5kIGJlY2F1c2UgV2ViUHJvY2Vzc1By
b3h5IGhvbGRzIHN0cm9uZyByZWZlcmVuY2UgdG8gV2Vic2l0ZURhdGFTdG9yZSwgCisgICAgICAg
IFdlYnNpdGVEYXRhU3RvcmUgd2lsbCBiZSBrZXB0IGFsaXZlIGV2ZW4gd2hlbiBpdCdzIG5vdCB1
c2VkIGJ5IGFueSBwYWdlIGFuZCB3aWxsIG5vdCBiZSB1c2VkIGJ5IGFueSBwYWdlLgorCisgICAg
ICAgICogVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpHUFVQcm9jZXNzUHJveHk6OmdldEdQVVByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpQcm92
aXNpb25hbFBhZ2VQcm94eTo6UHJvdmlzaW9uYWxQYWdlUHJveHkpOgorICAgICAgICAoV2ViS2l0
OjpQcm92aXNpb25hbFBhZ2VQcm94eTo6flByb3Zpc2lvbmFsUGFnZVByb3h5KToKKyAgICAgICAg
KiBVSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6UHJv
dmlzaW9uYWxQYWdlUHJveHk6OndlYnNpdGVEYXRhU3RvcmUgY29uc3QpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpTdXNwZW5k
ZWRQYWdlUHJveHk6OmZpbmRSZXVzYWJsZVN1c3BlbmRlZFBhZ2VQcm9jZXNzKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRDYWNoZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkJhY2tGb3J3YXJkQ2FjaGU6OnJlbW92ZUVudHJpZXNGb3JTZXNzaW9uKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViTG9ja1JlZ2lzdHJ5UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJM
b2NrUmVnaXN0cnlQcm94eTo6cmVxdWVzdExvY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2Nr
UmVnaXN0cnlQcm94eTo6cmVsZWFzZUxvY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2NrUmVn
aXN0cnlQcm94eTo6YWJvcnRMb2NrUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkxvY2tS
ZWdpc3RyeVByb3h5OjpzbmFwc2hvdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkxvY2tSZWdpc3Ry
eVByb3h5OjpjbGllbnRJc0dvaW5nQXdheSk6CisgICAgICAgIChXZWJLaXQ6OldlYkxvY2tSZWdp
c3RyeVByb3h5Ojpwcm9jZXNzRGlkRXhpdCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c3dhcFRvUHJvdmlzaW9u
YWxQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpjb21taXRQcm92aXNpb25h
bFBhZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzQ2FjaGUuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzQ2FjaGU6OmNhbkNhY2hlUHJvY2VzcyBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDYWNoZTo6dGFrZVByb2Nlc3MpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzQ2FjaGU6OmNsZWFyQWxsUHJvY2Vzc2VzRm9yU2Vzc2lvbik6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDYWNoZTo6Q2FjaGVkUHJvY2Vzczo6Q2FjaGVkUHJvY2Vz
cyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFJlbW90ZVdvcmtlckNvbnRleHRDb25uZWN0
aW9uVG9OZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpw
cm9jZXNzRm9yUmVnaXN0cmFibGVEb21haW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
UG9vbDo6Y3JlYXRlV2ViUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpw
YWdlQmVnaW5Vc2luZ1dlYnNpdGVEYXRhU3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUG9vbDo6cGFnZUVuZFVzaW5nV2Vic2l0ZURhdGFTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQb29sOjpoYXNQYWdlc1VzaW5nV2Vic2l0ZURhdGFTdG9yZSBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwcm9jZXNzRm9yTmF2aWdhdGlvbkludGVy
bmFsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Byb3h5OjpXZWJQcm9jZXNzUHJveHkpOgorICAgICAgICAoV2ViS2l0OjptX3dlYkxvY2tSZWdp
c3RyeSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6c2V0V2Vic2l0ZURhdGFT
dG9yZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6aXNEdW1teVByb2Nlc3NQ
cm94eSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6dXBkYXRlUmVn
aXN0cmF0aW9uV2l0aERhdGFTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94
eTo6YWRkRXhpc3RpbmdXZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5
OjpyZW1vdmVXZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpnZXRO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJv
eHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yTWFpbkZyYW1lKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc1Byb3h5OjpzZXNzaW9uSUQgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojp3
ZWJzaXRlRGF0YVN0b3JlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvZ2xp
Yi9XZWJQcm9jZXNzUHJveHlHTGliLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1By
b3h5OjpwbGF0Zm9ybUdldExhdW5jaE9wdGlvbnMpOgorCiAyMDIyLTA0LTIxICBFcmljIENhcmxz
b24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgogCiAgICAgICAgIEFWU2FtcGxlQnVmZmVyUmVu
ZGVyU3luY2hyb25pemVyIHRpbWVsaW5lIHNvbWV0aW1lcyBnb2VzIGJhY2t3YXJkcyB3aGVuIHBs
YXliYWNrIGJlZ2lucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQ
VVByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vz
c1Byb3h5LmNwcAppbmRleCA2MWNmYzMwZTAyOGRhM2VjNmViN2Q2OTAxNDU3ZGY3MDNjNjM0ZDUz
Li5iNTZlZjI4NWFmOTk0NjJkN2Y3ZTA5OTAxZGU1NDVkZWJiY2JhOTljIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmNwcApAQCAtMzg3LDcgKzM4
Nyw4IEBAIHZvaWQgR1BVUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzV2lsbFNodXREb3duKElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbikKIAogdm9pZCBHUFVQcm9jZXNzUHJveHk6OmdldEdQVVByb2Nl
c3NDb25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYgd2ViUHJvY2Vzc1Byb3h5LCBjb25zdCBHUFVQ
cm9jZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIE1lc3NhZ2VzOjpXZWJQcm9j
ZXNzUHJveHk6OkdldEdQVVByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHkmJiByZXBseSkK
IHsKLSAgICBhZGRTZXNzaW9uKHdlYlByb2Nlc3NQcm94eS53ZWJzaXRlRGF0YVN0b3JlKCkpOwor
ICAgIGlmIChhdXRvKiBkYXRhU3RvcmUgPSBXZWJzaXRlRGF0YVN0b3JlOjpleGlzdGluZ0RhdGFT
dG9yZUZvclNlc3Npb25JRCh3ZWJQcm9jZXNzUHJveHkuc2Vzc2lvbklEKCkpKQorICAgICAgICBh
ZGRTZXNzaW9uKCpkYXRhU3RvcmUpOwogCiAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNp
b24sICIlcCAtIEdQVVByb2Nlc3NQcm94eSBpcyB0YWtpbmcgYSBiYWNrZ3JvdW5kIGFzc2VydGlv
biBiZWNhdXNlIGEgd2ViIHByb2Nlc3MgaXMgcmVxdWVzdGluZyBhIGNvbm5lY3Rpb24iLCB0aGlz
KTsKICAgICBzdGFydFJlc3BvbnNpdmVuZXNzVGltZXIoVXNlTGF6eVN0b3A6Ok5vKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcAppbmRleCBl
ZDVkZmRkYTQ3OGRlNDExNmIwZmU5NTMwNmYxOTViYTg0NTFkNGZkLi44ZWNiN2UwYWE4ZmZlZDU2
YzBkZWNiZjVhZGJiNmVmMWE3YmY1OWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCkBAIC04NCw4ICs4NCwxMSBAQCBQcm92aXNpb25h
bFBhZ2VQcm94eTo6UHJvdmlzaW9uYWxQYWdlUHJveHkoV2ViUGFnZVByb3h5JiBwYWdlLCBSZWY8
V2ViUHJvY2Vzc1BybwogICAgIG1fcHJvY2Vzcy0+YWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV93ZWJQYWdlSUQsICp0aGlz
KTsKICAgICBtX3Byb2Nlc3MtPmFkZFByb3Zpc2lvbmFsUGFnZVByb3h5KCp0aGlzKTsKIAotICAg
IGlmICgmbV9wcm9jZXNzLT53ZWJzaXRlRGF0YVN0b3JlKCkgIT0gJm1fcGFnZS53ZWJzaXRlRGF0
YVN0b3JlKCkpCi0gICAgICAgIG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5wYWdlQmVnaW5Vc2lu
Z1dlYnNpdGVEYXRhU3RvcmUobV9wYWdlLmlkZW50aWZpZXIoKSwgbV9wcm9jZXNzLT53ZWJzaXRl
RGF0YVN0b3JlKCkpOworICAgIGF1dG8gcHJvY2Vzc1Nlc3Npb25JRCA9IG1fcHJvY2Vzcy0+c2Vz
c2lvbklEKCk7CisgICAgaWYgKHByb2Nlc3NTZXNzaW9uSUQgIT0gbV9wYWdlLndlYnNpdGVEYXRh
U3RvcmUoKS5zZXNzaW9uSUQoKSkKKyAgICAgICAgbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLnBh
Z2VCZWdpblVzaW5nV2Vic2l0ZURhdGFTdG9yZShtX3BhZ2UuaWRlbnRpZmllcigpLCBwcm9jZXNz
U2Vzc2lvbklEKTsKKyAgICBtX3dlYnNpdGVEYXRhU3RvcmUgPSBXZWJzaXRlRGF0YVN0b3JlOjpl
eGlzdGluZ0RhdGFTdG9yZUZvclNlc3Npb25JRChwcm9jZXNzU2Vzc2lvbklEKTsKKyAgICBBU1NF
UlQobV93ZWJzaXRlRGF0YVN0b3JlKTsKIAogICAgIC8vIElmIHdlIGFyZSByZWF0dGFjaGluZyB0
byBhIFN1c3BlbmRlZFBhZ2UsIHRoZW4gdGhlIFdlYlByb2Nlc3MnIFdlYlBhZ2UgYWxyZWFkeSBl
eGlzdHMgYW5kCiAgICAgLy8gV2ViUGFnZVByb3h5OjpkaWRDcmVhdGVNYWluRnJhbWUoKSB3aWxs
IG5vdCBiZSBjYWxsZWQgdG8gaW5pdGlhbGl6ZSBtX21haW5GcmFtZS4gSW4gc3VjaApAQCAtMTEz
LDggKzExNiw4IEBAIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojp+UHJvdmlzaW9uYWxQYWdlUHJveHko
KQogICAgIGlmICghbV93YXNDb21taXR0ZWQpIHsKICAgICAgICAgbV9wYWdlLmluc3BlY3RvckNv
bnRyb2xsZXIoKS53aWxsRGVzdHJveVByb3Zpc2lvbmFsUGFnZSgqdGhpcyk7CiAKLSAgICAgICAg
aWYgKCZtX3Byb2Nlc3MtPndlYnNpdGVEYXRhU3RvcmUoKSAhPSAmbV9wYWdlLndlYnNpdGVEYXRh
U3RvcmUoKSkKLSAgICAgICAgICAgIG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5wYWdlRW5kVXNp
bmdXZWJzaXRlRGF0YVN0b3JlKG1fcGFnZS5pZGVudGlmaWVyKCksIG1fcHJvY2Vzcy0+d2Vic2l0
ZURhdGFTdG9yZSgpKTsKKyAgICAgICAgaWYgKG1fcHJvY2Vzcy0+c2Vzc2lvbklEKCkgIT0gbV9w
YWdlLndlYnNpdGVEYXRhU3RvcmUoKS5zZXNzaW9uSUQoKSkKKyAgICAgICAgICAgIG1fcHJvY2Vz
cy0+cHJvY2Vzc1Bvb2woKS5wYWdlRW5kVXNpbmdXZWJzaXRlRGF0YVN0b3JlKG1fcGFnZS5pZGVu
dGlmaWVyKCksIG1fcHJvY2Vzcy0+c2Vzc2lvbklEKCkpOwogCiAgICAgICAgIG1fcHJvY2Vzcy0+
cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Om1lc3NhZ2VSZWNl
aXZlck5hbWUoKSwgbV93ZWJQYWdlSUQpOwogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpDbG9zZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lv
bmFsUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQ
cm94eS5oCmluZGV4IDIyZDJiYjEyY2E2YWQ1OGYyZWY3YjdhOTk1OTNiM2YwNmU2NGE4OGYuLjg4
MzUwMGZhYmEwMzY2OGM2MzMzY2NjOWM5NTE2MThkY2NjMzk0NGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaApAQCAtNjEsNiArNjEsNyBAQCBj
bGFzcyBVc2VyRGF0YTsKIGNsYXNzIFdlYkZyYW1lUHJveHk7CiBjbGFzcyBXZWJQYWdlUHJveHk7
CiBjbGFzcyBXZWJQcm9jZXNzUHJveHk7CitjbGFzcyBXZWJzaXRlRGF0YVN0b3JlOwogc3RydWN0
IEZyYW1lSW5mb0RhdGE7CiBzdHJ1Y3QgTmF2aWdhdGlvbkFjdGlvbkRhdGE7CiBzdHJ1Y3QgVVJM
U2NoZW1lVGFza1BhcmFtZXRlcnM7CkBAIC04Myw2ICs4NCw3IEBAIHB1YmxpYzoKICAgICBQcm9j
ZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50IHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQoKSBj
b25zdCB7IHJldHVybiBtX3Byb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQ7IH0KICAgICB1aW50
NjRfdCBuYXZpZ2F0aW9uSUQoKSBjb25zdCB7IHJldHVybiBtX25hdmlnYXRpb25JRDsgfQogICAg
IGNvbnN0IFVSTCYgcHJvdmlzaW9uYWxVUkwoKSBjb25zdCB7IHJldHVybiBtX3Byb3Zpc2lvbmFs
TG9hZFVSTDsgfQorICAgIFdlYnNpdGVEYXRhU3RvcmUqIHdlYnNpdGVEYXRhU3RvcmUoKSBjb25z
dCB7IHJldHVybiBtX3dlYnNpdGVEYXRhU3RvcmUuZ2V0KCk7IH0KIAogICAgIGJvb2wgaXNQcm9j
ZXNzU3dhcHBpbmdPbk5hdmlnYXRpb25SZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNQcm9j
ZXNzU3dhcHBpbmdPbk5hdmlnYXRpb25SZXNwb25zZTsgfQogCkBAIC0xNjMsNiArMTY1LDcgQEAg
cHJpdmF0ZToKICAgICBXZWJQYWdlUHJveHkmIG1fcGFnZTsKICAgICBXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciBtX3dlYlBhZ2VJRDsKICAgICBSZWY8V2ViUHJvY2Vzc1Byb3h5PiBtX3Byb2Nlc3M7
CisgICAgUmVmUHRyPFdlYnNpdGVEYXRhU3RvcmU+IG1fd2Vic2l0ZURhdGFTdG9yZTsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8RHJhd2luZ0FyZWFQcm94eT4gbV9kcmF3aW5nQXJlYTsKICAgICBSZWZQ
dHI8V2ViRnJhbWVQcm94eT4gbV9tYWluRnJhbWU7CiAgICAgdWludDY0X3QgbV9uYXZpZ2F0aW9u
SUQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcApp
bmRleCBjY2JkNjEyODc4NTBlNzMxNjkxYTMzMGM0ZTMwYWQzYTM2ZTFmMDdkLi42MmYxZGEzNTA3
Njg5NTE1NDBjOGUwMWY0MWNmODM2MTFmYTNhZTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgUmVmUHRyPFdl
YlByb2Nlc3NQcm94eT4gU3VzcGVuZGVkUGFnZVByb3h5OjpmaW5kUmV1c2FibGVTdXNwZW5kZWRQ
YWdlUHJvY2VzcyhXZWIKIHsKICAgICBmb3IgKGF1dG8qIHN1c3BlbmRlZFBhZ2UgOiBhbGxTdXNw
ZW5kZWRQYWdlcygpKSB7CiAgICAgICAgIGF1dG8mIHByb2Nlc3MgPSBzdXNwZW5kZWRQYWdlLT5w
cm9jZXNzKCk7Ci0gICAgICAgIGlmICgmcHJvY2Vzcy5wcm9jZXNzUG9vbCgpID09ICZwcm9jZXNz
UG9vbCAmJiBwcm9jZXNzLnJlZ2lzdHJhYmxlRG9tYWluKCkgPT0gcmVnaXN0cmFibGVEb21haW4g
JiYgJnByb2Nlc3Mud2Vic2l0ZURhdGFTdG9yZSgpID09ICZkYXRhU3RvcmUgJiYgcHJvY2Vzcy5j
cm9zc09yaWdpbk1vZGUoKSAhPSBDcm9zc09yaWdpbk1vZGU6Oklzb2xhdGVkICYmIHByb2Nlc3Mu
Y2FwdGl2ZVBvcnRhbE1vZGUoKSA9PSBjYXB0aXZlUG9ydGFsTW9kZSkKKyAgICAgICAgaWYgKCZw
cm9jZXNzLnByb2Nlc3NQb29sKCkgPT0gJnByb2Nlc3NQb29sICYmIHByb2Nlc3MucmVnaXN0cmFi
bGVEb21haW4oKSA9PSByZWdpc3RyYWJsZURvbWFpbiAmJiBwcm9jZXNzLnNlc3Npb25JRCgpID09
IGRhdGFTdG9yZS5zZXNzaW9uSUQoKSAmJiBwcm9jZXNzLmNyb3NzT3JpZ2luTW9kZSgpICE9IENy
b3NzT3JpZ2luTW9kZTo6SXNvbGF0ZWQgJiYgcHJvY2Vzcy5jYXB0aXZlUG9ydGFsTW9kZSgpID09
IGNhcHRpdmVQb3J0YWxNb2RlKQogICAgICAgICAgICAgcmV0dXJuICZwcm9jZXNzOwogICAgIH0K
ICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkJhY2tGb3J3YXJkQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQmFj
a0ZvcndhcmRDYWNoZS5jcHAKaW5kZXggNjRhMWE5ZjY5YzZjNDYyMjQ0MTdiZGFjMjBjYzBlODE0
M2Y1YTAzNC4uZTU3ZDc5NGNhZTA4NWUzNjJlYThiYmJhMjFkYmZkMWRmMjBjYzJiZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRDYWNoZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRDYWNoZS5jcHAKQEAgLTEz
NCw3ICsxMzQsNyBAQCB2b2lkIFdlYkJhY2tGb3J3YXJkQ2FjaGU6OnJlbW92ZUVudHJpZXNGb3JQ
cm9jZXNzKFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcykKIHZvaWQgV2ViQmFja0ZvcndhcmRDYWNo
ZTo6cmVtb3ZlRW50cmllc0ZvclNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogewog
ICAgIHJlbW92ZUVudHJpZXNNYXRjaGluZyhbc2Vzc2lvbklEXShhdXRvJiBpdGVtKSB7Ci0gICAg
ICAgIHJldHVybiBpdGVtLmJhY2tGb3J3YXJkQ2FjaGVFbnRyeSgpLT5wcm9jZXNzKCkud2Vic2l0
ZURhdGFTdG9yZSgpLnNlc3Npb25JRCgpID09IHNlc3Npb25JRDsKKyAgICAgICAgcmV0dXJuIGl0
ZW0uYmFja0ZvcndhcmRDYWNoZUVudHJ5KCktPnByb2Nlc3MoKS5zZXNzaW9uSUQoKSA9PSBzZXNz
aW9uSUQ7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkxvY2tSZWdpc3RyeVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkxv
Y2tSZWdpc3RyeVByb3h5LmNwcAppbmRleCBkZTg3OTBlYzFmMjAwZGY1MTRiNjRkNTQ1OTI1NjQ4
ZTMxODIyYzI3Li5jODNlYjY1NzU4ODhlYmY0N2YxNzhlZjE0MmUyM2JlZjkwOWFmZmYxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJMb2NrUmVnaXN0cnlQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViTG9ja1JlZ2lzdHJ5UHJveHkuY3BwCkBA
IC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSAi
V2Vic2l0ZURhdGFTdG9yZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvV2ViTG9ja0lkZW50aWZpZXIu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL1dlYkxvY2tNYW5hZ2VyU25hcHNob3QuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1dlYkxvY2tSZWdpc3RyeS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTU1
LDQ0ICs1Niw1OCBAQCB2b2lkIFdlYkxvY2tSZWdpc3RyeVByb3h5OjpyZXF1ZXN0TG9jayhXZWJD
b3JlOjpDbGllbnRPcmlnaW4mJiBjbGllbnRPcmlnaW4sIFdlYgogICAgIE1FU1NBR0VfQ0hFQ0so
Y2xpZW50SUQucHJvY2Vzc0lkZW50aWZpZXIoKSA9PSBtX3Byb2Nlc3MuY29yZVByb2Nlc3NJZGVu
dGlmaWVyKCkpOwogICAgIG1faGFzRXZlclJlcXVlc3RlZExvY2tzID0gdHJ1ZTsKIAotICAgIG1f
cHJvY2Vzcy53ZWJzaXRlRGF0YVN0b3JlKCkud2ViTG9ja1JlZ2lzdHJ5KCkucmVxdWVzdExvY2so
V1RGTW92ZShjbGllbnRPcmlnaW4pLCBsb2NrSWRlbnRpZmllciwgY2xpZW50SUQsIFdURk1vdmUo
bmFtZSksIGxvY2tNb2RlLCBzdGVhbCwgaWZBdmFpbGFibGUsIFt3ZWFrVGhpcyA9IFdlYWtQdHIg
eyAqdGhpcyB9LCBsb2NrSWRlbnRpZmllciwgY2xpZW50SURdKGJvb2wgc3VjY2VzcykgewotICAg
ICAgICBpZiAod2Vha1RoaXMpCi0gICAgICAgICAgICB3ZWFrVGhpcy0+bV9wcm9jZXNzLnNlbmQo
TWVzc2FnZXM6OlJlbW90ZVdlYkxvY2tSZWdpc3RyeTo6RGlkQ29tcGxldGVMb2NrUmVxdWVzdChs
b2NrSWRlbnRpZmllciwgY2xpZW50SUQsIHN1Y2Nlc3MpLCAwKTsKLSAgICB9LCBbd2Vha1RoaXMg
PSBXZWFrUHRyIHsgKnRoaXMgfSwgbG9ja0lkZW50aWZpZXIsIGNsaWVudElEXSB7Ci0gICAgICAg
IGlmICh3ZWFrVGhpcykKLSAgICAgICAgICAgIHdlYWtUaGlzLT5tX3Byb2Nlc3Muc2VuZChNZXNz
YWdlczo6UmVtb3RlV2ViTG9ja1JlZ2lzdHJ5OjpEaWRTdGVhbExvY2sobG9ja0lkZW50aWZpZXIs
IGNsaWVudElEKSwgMCk7Ci0gICAgfSk7CisgICAgaWYgKGF1dG8qIGRhdGFTdG9yZSA9IFdlYnNp
dGVEYXRhU3RvcmU6OmV4aXN0aW5nRGF0YVN0b3JlRm9yU2Vzc2lvbklEKG1fcHJvY2Vzcy5zZXNz
aW9uSUQoKSkpIHsKKyAgICAgICAgZGF0YVN0b3JlLT53ZWJMb2NrUmVnaXN0cnkoKS5yZXF1ZXN0
TG9jayhXVEZNb3ZlKGNsaWVudE9yaWdpbiksIGxvY2tJZGVudGlmaWVyLCBjbGllbnRJRCwgV1RG
TW92ZShuYW1lKSwgbG9ja01vZGUsIHN0ZWFsLCBpZkF2YWlsYWJsZSwgW3dlYWtUaGlzID0gV2Vh
a1B0ciB7ICp0aGlzIH0sIGxvY2tJZGVudGlmaWVyLCBjbGllbnRJRF0oYm9vbCBzdWNjZXNzKSB7
CisgICAgICAgICAgICBpZiAod2Vha1RoaXMpCisgICAgICAgICAgICAgICAgd2Vha1RoaXMtPm1f
cHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVXZWJMb2NrUmVnaXN0cnk6OkRpZENvbXBsZXRl
TG9ja1JlcXVlc3QobG9ja0lkZW50aWZpZXIsIGNsaWVudElELCBzdWNjZXNzKSwgMCk7CisgICAg
ICAgIH0sIFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBsb2NrSWRlbnRpZmllciwgY2xp
ZW50SURdIHsKKyAgICAgICAgICAgIGlmICh3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICB3ZWFr
VGhpcy0+bV9wcm9jZXNzLnNlbmQoTWVzc2FnZXM6OlJlbW90ZVdlYkxvY2tSZWdpc3RyeTo6RGlk
U3RlYWxMb2NrKGxvY2tJZGVudGlmaWVyLCBjbGllbnRJRCksIDApOworICAgICAgICB9KTsKKyAg
ICB9IGVsc2UKKyAgICAgICAgbV9wcm9jZXNzLnNlbmQoTWVzc2FnZXM6OlJlbW90ZVdlYkxvY2tS
ZWdpc3RyeTo6RGlkQ29tcGxldGVMb2NrUmVxdWVzdChsb2NrSWRlbnRpZmllciwgY2xpZW50SUQs
IGZhbHNlKSwgMCk7CiB9CiAKIHZvaWQgV2ViTG9ja1JlZ2lzdHJ5UHJveHk6OnJlbGVhc2VMb2Nr
KFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmIGNsaWVudE9yaWdpbiwgV2ViQ29yZTo6V2ViTG9ja0lk
ZW50aWZpZXIgbG9ja0lkZW50aWZpZXIsIFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJ
ZGVudGlmaWVyIGNsaWVudElELCBTdHJpbmcmJiBuYW1lKQogewogICAgIE1FU1NBR0VfQ0hFQ0so
bG9ja0lkZW50aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIoKSA9PSBtX3Byb2Nlc3MuY29yZVByb2Nl
c3NJZGVudGlmaWVyKCkpOwogICAgIE1FU1NBR0VfQ0hFQ0soY2xpZW50SUQucHJvY2Vzc0lkZW50
aWZpZXIoKSA9PSBtX3Byb2Nlc3MuY29yZVByb2Nlc3NJZGVudGlmaWVyKCkpOwotICAgIG1fcHJv
Y2Vzcy53ZWJzaXRlRGF0YVN0b3JlKCkud2ViTG9ja1JlZ2lzdHJ5KCkucmVsZWFzZUxvY2soV1RG
TW92ZShjbGllbnRPcmlnaW4pLCBsb2NrSWRlbnRpZmllciwgY2xpZW50SUQsIFdURk1vdmUobmFt
ZSkpOworICAgIGlmIChhdXRvKiBkYXRhU3RvcmUgPSBXZWJzaXRlRGF0YVN0b3JlOjpleGlzdGlu
Z0RhdGFTdG9yZUZvclNlc3Npb25JRChtX3Byb2Nlc3Muc2Vzc2lvbklEKCkpKQorICAgICAgICBk
YXRhU3RvcmUtPndlYkxvY2tSZWdpc3RyeSgpLnJlbGVhc2VMb2NrKFdURk1vdmUoY2xpZW50T3Jp
Z2luKSwgbG9ja0lkZW50aWZpZXIsIGNsaWVudElELCBXVEZNb3ZlKG5hbWUpKTsKIH0KIAogdm9p
ZCBXZWJMb2NrUmVnaXN0cnlQcm94eTo6YWJvcnRMb2NrUmVxdWVzdChXZWJDb3JlOjpDbGllbnRP
cmlnaW4mJiBjbGllbnRPcmlnaW4sIFdlYkNvcmU6OldlYkxvY2tJZGVudGlmaWVyIGxvY2tJZGVu
dGlmaWVyLCBXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciBjbGllbnRJ
RCwgU3RyaW5nJiYgbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICBNRVNTQUdFX0NIRUNLKGxvY2tJZGVudGlmaWVyLnByb2Nlc3NJ
ZGVudGlmaWVyKCkgPT0gbV9wcm9jZXNzLmNvcmVQcm9jZXNzSWRlbnRpZmllcigpKTsKICAgICBN
RVNTQUdFX0NIRUNLKGNsaWVudElELnByb2Nlc3NJZGVudGlmaWVyKCkgPT0gbV9wcm9jZXNzLmNv
cmVQcm9jZXNzSWRlbnRpZmllcigpKTsKLSAgICBtX3Byb2Nlc3Mud2Vic2l0ZURhdGFTdG9yZSgp
LndlYkxvY2tSZWdpc3RyeSgpLmFib3J0TG9ja1JlcXVlc3QoV1RGTW92ZShjbGllbnRPcmlnaW4p
LCBsb2NrSWRlbnRpZmllciwgY2xpZW50SUQsIFdURk1vdmUobmFtZSksIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKKyAgICBpZiAoYXV0byogZGF0YVN0b3JlID0gV2Vic2l0ZURhdGFTdG9y
ZTo6ZXhpc3RpbmdEYXRhU3RvcmVGb3JTZXNzaW9uSUQobV9wcm9jZXNzLnNlc3Npb25JRCgpKSkK
KyAgICAgICAgZGF0YVN0b3JlLT53ZWJMb2NrUmVnaXN0cnkoKS5hYm9ydExvY2tSZXF1ZXN0KFdU
Rk1vdmUoY2xpZW50T3JpZ2luKSwgbG9ja0lkZW50aWZpZXIsIGNsaWVudElELCBXVEZNb3ZlKG5h
bWUpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgZWxzZQorICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihmYWxzZSk7CiB9CiAKIHZvaWQgV2ViTG9ja1JlZ2lzdHJ5UHJveHk6OnNu
YXBzaG90KFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmIGNsaWVudE9yaWdpbiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChXZWJDb3JlOjpXZWJMb2NrTWFuYWdlclNuYXBzaG90JiYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewotICAgIG1fcHJvY2Vzcy53ZWJzaXRlRGF0YVN0b3JlKCkud2ViTG9ja1Jl
Z2lzdHJ5KCkuc25hcHNob3QoV1RGTW92ZShjbGllbnRPcmlnaW4pLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CisgICAgaWYgKGF1dG8qIGRhdGFTdG9yZSA9IFdlYnNpdGVEYXRhU3RvcmU6
OmV4aXN0aW5nRGF0YVN0b3JlRm9yU2Vzc2lvbklEKG1fcHJvY2Vzcy5zZXNzaW9uSUQoKSkpCisg
ICAgICAgIGRhdGFTdG9yZS0+d2ViTG9ja1JlZ2lzdHJ5KCkuc25hcHNob3QoV1RGTW92ZShjbGll
bnRPcmlnaW4pLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgZWxzZQorICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihXZWJDb3JlOjpXZWJMb2NrTWFuYWdlclNuYXBzaG90IHsgfSk7
CiB9CiAKIHZvaWQgV2ViTG9ja1JlZ2lzdHJ5UHJveHk6OmNsaWVudElzR29pbmdBd2F5KFdlYkNv
cmU6OkNsaWVudE9yaWdpbiYmIGNsaWVudE9yaWdpbiwgV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9u
Q29udGV4dElkZW50aWZpZXIgY2xpZW50SUQpCiB7CiAgICAgTUVTU0FHRV9DSEVDSyhjbGllbnRJ
RC5wcm9jZXNzSWRlbnRpZmllcigpID09IG1fcHJvY2Vzcy5jb3JlUHJvY2Vzc0lkZW50aWZpZXIo
KSk7Ci0gICAgbV9wcm9jZXNzLndlYnNpdGVEYXRhU3RvcmUoKS53ZWJMb2NrUmVnaXN0cnkoKS5j
bGllbnRJc0dvaW5nQXdheShXVEZNb3ZlKGNsaWVudE9yaWdpbiksIGNsaWVudElEKTsKKyAgICBp
ZiAoYXV0byogZGF0YVN0b3JlID0gV2Vic2l0ZURhdGFTdG9yZTo6ZXhpc3RpbmdEYXRhU3RvcmVG
b3JTZXNzaW9uSUQobV9wcm9jZXNzLnNlc3Npb25JRCgpKSkKKyAgICAgICAgZGF0YVN0b3JlLT53
ZWJMb2NrUmVnaXN0cnkoKS5jbGllbnRJc0dvaW5nQXdheShXVEZNb3ZlKGNsaWVudE9yaWdpbiks
IGNsaWVudElEKTsKIH0KIAogdm9pZCBXZWJMb2NrUmVnaXN0cnlQcm94eTo6cHJvY2Vzc0RpZEV4
aXQoKQogewotICAgIGlmIChtX2hhc0V2ZXJSZXF1ZXN0ZWRMb2NrcykKLSAgICAgICAgbV9wcm9j
ZXNzLndlYnNpdGVEYXRhU3RvcmUoKS53ZWJMb2NrUmVnaXN0cnkoKS5jbGllbnRzQXJlR29pbmdB
d2F5KG1fcHJvY2Vzcy5jb3JlUHJvY2Vzc0lkZW50aWZpZXIoKSk7CisgICAgaWYgKCFtX2hhc0V2
ZXJSZXF1ZXN0ZWRMb2NrcykKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGF1dG8qIGRhdGFT
dG9yZSA9IFdlYnNpdGVEYXRhU3RvcmU6OmV4aXN0aW5nRGF0YVN0b3JlRm9yU2Vzc2lvbklEKG1f
cHJvY2Vzcy5zZXNzaW9uSUQoKSkpCisgICAgICAgIGRhdGFTdG9yZS0+d2ViTG9ja1JlZ2lzdHJ5
KCkuY2xpZW50c0FyZUdvaW5nQXdheShtX3Byb2Nlc3MuY29yZVByb2Nlc3NJZGVudGlmaWVyKCkp
OwogfQogCiAjdW5kZWYgTUVTU0FHRV9DSEVDSwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAKaW5kZXggMGYzNmNjNTRjYTgyNzM5OTBjMDY4MGE5YjdkMmFjYTYyOTY5OGJm
NS4uYzMzYzA0ZGU5MjkzZDY4ZDBmNGQ5MzM2MTc2NzI2Y2I1ZmEyY2VmZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC05NzgsNyArOTc4LDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OnN3YXBUb1Byb3Zpc2lvbmFsUGFnZShzdGQ6OnVuaXF1ZV9wdHI8UHJvdmlz
aW9uYWxQYWdlUHJveHk+IHAKICAgICBtX3Byb2Nlc3MgPSBwcm92aXNpb25hbFBhZ2UtPnByb2Nl
c3MoKTsKICAgICBtX3dlYlBhZ2VJRCA9IHByb3Zpc2lvbmFsUGFnZS0+d2ViUGFnZUlEKCk7CiAg
ICAgcGFnZUNsaWVudCgpLmRpZENoYW5nZVdlYlBhZ2VJRCgpOwotICAgIG1fd2Vic2l0ZURhdGFT
dG9yZSA9IG1fcHJvY2Vzcy0+d2Vic2l0ZURhdGFTdG9yZSgpOworICAgIG1fd2Vic2l0ZURhdGFT
dG9yZSA9ICpwcm92aXNpb25hbFBhZ2UtPndlYnNpdGVEYXRhU3RvcmUoKTsKIAogI2lmIEhBVkUo
VklTSUJJTElUWV9QUk9QQUdBVElPTl9WSUVXKQogICAgIG1fY29udGV4dElERm9yVmlzaWJpbGl0
eVByb3BhZ2F0aW9uSW5XZWJQcm9jZXNzID0gcHJvdmlzaW9uYWxQYWdlLT5jb250ZXh0SURGb3JW
aXNpYmlsaXR5UHJvcGFnYXRpb25JbldlYlByb2Nlc3MoKTsKQEAgLTM2MTQsNyArMzYxNCw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5Ojpjb21taXRQcm92aXNpb25hbFBhZ2UoRnJhbWVJZGVudGlmaWVy
IGZyYW1lSUQsIEZyYW1lSW5mb0RhdGEmCiAgICAgcmVtb3ZlQWxsTWVzc2FnZVJlY2VpdmVycygp
OwogICAgIGF1dG8qIG5hdmlnYXRpb24gPSBuYXZpZ2F0aW9uU3RhdGUoKS5uYXZpZ2F0aW9uKG1f
cHJvdmlzaW9uYWxQYWdlLT5uYXZpZ2F0aW9uSUQoKSk7CiAgICAgYm9vbCBkaWRTdXNwZW5kUHJl
dmlvdXNQYWdlID0gbmF2aWdhdGlvbiAmJiAhbV9wcm92aXNpb25hbFBhZ2UtPmlzUHJvY2Vzc1N3
YXBwaW5nT25OYXZpZ2F0aW9uUmVzcG9uc2UoKSA/IHN1c3BlbmRDdXJyZW50UGFnZUlmUG9zc2li
bGUoKm5hdmlnYXRpb24sIG1haW5GcmFtZUlESW5QcmV2aW91c1Byb2Nlc3MsIG1fcHJvdmlzaW9u
YWxQYWdlLT5wcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50KCksIHNob3VsZERlbGF5Q2xvc2lu
Z1VudGlsRmlyc3RMYXllckZsdXNoKSA6IGZhbHNlOwotICAgIG1fcHJvY2Vzcy0+cmVtb3ZlV2Vi
UGFnZSgqdGhpcywgbV93ZWJzaXRlRGF0YVN0b3JlLnB0cigpID09ICZtX3Byb3Zpc2lvbmFsUGFn
ZS0+cHJvY2VzcygpLndlYnNpdGVEYXRhU3RvcmUoKSA/IFdlYlByb2Nlc3NQcm94eTo6RW5kc1Vz
aW5nRGF0YVN0b3JlOjpObyA6IFdlYlByb2Nlc3NQcm94eTo6RW5kc1VzaW5nRGF0YVN0b3JlOjpZ
ZXMpOworICAgIG1fcHJvY2Vzcy0+cmVtb3ZlV2ViUGFnZSgqdGhpcywgbV93ZWJzaXRlRGF0YVN0
b3JlLnB0cigpID09IG1fcHJvdmlzaW9uYWxQYWdlLT53ZWJzaXRlRGF0YVN0b3JlKCkgPyBXZWJQ
cm9jZXNzUHJveHk6OkVuZHNVc2luZ0RhdGFTdG9yZTo6Tm8gOiBXZWJQcm9jZXNzUHJveHk6OkVu
ZHNVc2luZ0RhdGFTdG9yZTo6WWVzKTsKIAogICAgIC8vIFRoZXJlIGlzIG5vIHdheSB3ZSdsbCBi
ZSBhYmxlIHRvIHJldHVybiB0byB0aGUgcGFnZSBpbiB0aGUgcHJldmlvdXMgcGFnZSBzbyBjbG9z
ZSBpdC4KICAgICBpZiAoIWRpZFN1c3BlbmRQcmV2aW91c1BhZ2UpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc0NhY2hlLmNwcAppbmRleCA1MWZjYmU2NjM0MWE5OTMwZjc4YzQy
NzEzNDhhMDFlYjE0YjNjMjcxLi5hNzk0OWUzZThlYjc2MGU3YmE5MTgyNTM2NDc0YTU5YjQ1YThh
YmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzQ2FjaGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NDYWNoZS5jcHAKQEAg
LTc2LDggKzc2LDcgQEAgYm9vbCBXZWJQcm9jZXNzQ2FjaGU6OmNhbkNhY2hlUHJvY2VzcyhXZWJQ
cm9jZXNzUHJveHkmIHByb2Nlc3MpIGNvbnN0CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CiAKLSAgICBhdXRvIHNlc3Npb25JRCA9IHByb2Nlc3Mud2Vic2l0ZURhdGFTdG9yZSgpLnNlc3Np
b25JRCgpOwotICAgIGlmIChzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSAmJiAhcHJvY2Vzcy5wcm9j
ZXNzUG9vbCgpLmhhc1BhZ2VzVXNpbmdXZWJzaXRlRGF0YVN0b3JlKHByb2Nlc3Mud2Vic2l0ZURh
dGFTdG9yZSgpKSkgeworICAgIGlmICghV2Vic2l0ZURhdGFTdG9yZTo6ZXhpc3RpbmdEYXRhU3Rv
cmVGb3JTZXNzaW9uSUQocHJvY2Vzcy5zZXNzaW9uSUQoKSkpIHsKICAgICAgICAgV0VCUFJPQ0VT
U0NBQ0hFX1JFTEVBU0VfTE9HKCJjYW5DYWNoZVByb2Nlc3M6IE5vdCBjYWNoaW5nIHByb2Nlc3Mg
YmVjYXVzZSB0aGlzIHNlc3Npb24gaGFzIGJlZW4gZGVzdHJveWVkIiwgcHJvY2Vzcy5wcm9jZXNz
SWRlbnRpZmllcigpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTE1Myw3ICsx
NTIsNyBAQCBSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiBXZWJQcm9jZXNzQ2FjaGU6OnRha2VQcm9j
ZXNzKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRAogICAgIGlmIChpdCA9PSBtX3Byb2Nlc3Nl
c1BlclJlZ2lzdHJhYmxlRG9tYWluLmVuZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAot
ICAgIGlmICgmaXQtPnZhbHVlLT5wcm9jZXNzKCkud2Vic2l0ZURhdGFTdG9yZSgpICE9ICZkYXRh
U3RvcmUpCisgICAgaWYgKGl0LT52YWx1ZS0+cHJvY2VzcygpLnNlc3Npb25JRCgpICE9IGRhdGFT
dG9yZS5zZXNzaW9uSUQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAoaXQt
PnZhbHVlLT5wcm9jZXNzKCkuY2FwdGl2ZVBvcnRhbE1vZGUoKSAhPSBjYXB0aXZlUG9ydGFsTW9k
ZSkKQEAgLTIxMiw3ICsyMTEsNyBAQCB2b2lkIFdlYlByb2Nlc3NDYWNoZTo6Y2xlYXJBbGxQcm9j
ZXNzZXNGb3JTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKICAgICBWZWN0b3I8
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IGtleXNUb1JlbW92ZTsKICAgICBmb3IgKGF1dG8m
IHBhaXIgOiBtX3Byb2Nlc3Nlc1BlclJlZ2lzdHJhYmxlRG9tYWluKSB7Ci0gICAgICAgIGlmIChw
YWlyLnZhbHVlLT5wcm9jZXNzKCkud2Vic2l0ZURhdGFTdG9yZSgpLnNlc3Npb25JRCgpID09IHNl
c3Npb25JRCkgeworICAgICAgICBpZiAocGFpci52YWx1ZS0+cHJvY2VzcygpLnNlc3Npb25JRCgp
ID09IHNlc3Npb25JRCkgewogICAgICAgICAgICAgV0VCUFJPQ0VTU0NBQ0hFX1JFTEVBU0VfTE9H
KCJjbGVhckFsbFByb2Nlc3Nlc0ZvclNlc3Npb246IEV2aWN0aW5nIHByb2Nlc3MgYmVjYXVzZSBp
dHMgc2Vzc2lvbiB3YXMgZGVzdHJveWVkIiwgcGFpci52YWx1ZS0+cHJvY2VzcygpLnByb2Nlc3NJ
ZGVudGlmaWVyKCkpOwogICAgICAgICAgICAga2V5c1RvUmVtb3ZlLmFwcGVuZChwYWlyLmtleSk7
CiAgICAgICAgIH0KQEAgLTIyMiw3ICsyMjEsNyBAQCB2b2lkIFdlYlByb2Nlc3NDYWNoZTo6Y2xl
YXJBbGxQcm9jZXNzZXNGb3JTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIAogICAg
IFZlY3Rvcjx1aW50NjRfdD4gcGVuZGluZ1JlcXVlc3RzVG9SZW1vdmU7CiAgICAgZm9yIChhdXRv
JiBwYWlyIDogbV9wZW5kaW5nQWRkUmVxdWVzdHMpIHsKLSAgICAgICAgaWYgKHBhaXIudmFsdWUt
PnByb2Nlc3MoKS53ZWJzaXRlRGF0YVN0b3JlKCkuc2Vzc2lvbklEKCkgPT0gc2Vzc2lvbklEKSB7
CisgICAgICAgIGlmIChwYWlyLnZhbHVlLT5wcm9jZXNzKCkuc2Vzc2lvbklEKCkgPT0gc2Vzc2lv
bklEKSB7CiAgICAgICAgICAgICBXRUJQUk9DRVNTQ0FDSEVfUkVMRUFTRV9MT0coImNsZWFyQWxs
UHJvY2Vzc2VzRm9yU2Vzc2lvbjogRXZpY3RpbmcgcHJvY2VzcyBiZWNhdXNlIGl0cyBzZXNzaW9u
IHdhcyBkZXN0cm95ZWQiLCBwYWlyLnZhbHVlLT5wcm9jZXNzKCkucHJvY2Vzc0lkZW50aWZpZXIo
KSk7CiAgICAgICAgICAgICBwZW5kaW5nUmVxdWVzdHNUb1JlbW92ZS5hcHBlbmQocGFpci5rZXkp
OwogICAgICAgICB9CkBAIC0yNzYsNyArMjc1LDkgQEAgV2ViUHJvY2Vzc0NhY2hlOjpDYWNoZWRQ
cm9jZXNzOjpDYWNoZWRQcm9jZXNzKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcykKICNl
bmRpZgogewogICAgIFJFTEVBU0VfQVNTRVJUKCFtX3Byb2Nlc3MtPnBhZ2VDb3VudCgpKTsKLSAg
ICBSRUxFQVNFX0FTU0VSVF9XSVRIX01FU1NBR0UoIW1fcHJvY2Vzcy0+d2Vic2l0ZURhdGFTdG9y
ZSgpLnByb2Nlc3NlcygpLmNvbnRhaW5zKCptX3Byb2Nlc3MpLCAiT25seSBwcm9jZXNzZXMgd2l0
aCBwYWdlcyBzaG91bGQgYmUgcmVnaXN0ZXJlZCB3aXRoIHRoZSBkYXRhIHN0b3JlIik7CisgICAg
YXV0byogZGF0YVN0b3JlID0gV2Vic2l0ZURhdGFTdG9yZTo6ZXhpc3RpbmdEYXRhU3RvcmVGb3JT
ZXNzaW9uSUQobV9wcm9jZXNzLT5zZXNzaW9uSUQoKSk7CisgICAgUkVMRUFTRV9BU1NFUlQoZGF0
YVN0b3JlKTsKKyAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX01FU1NBR0UoIWRhdGFTdG9yZS0+cHJv
Y2Vzc2VzKCkuY29udGFpbnMoKm1fcHJvY2VzcyksICJPbmx5IHByb2Nlc3NlcyB3aXRoIHBhZ2Vz
IHNob3VsZCBiZSByZWdpc3RlcmVkIHdpdGggdGhlIGRhdGEgc3RvcmUiKTsKICAgICBtX3Byb2Nl
c3MtPnNldElzSW5Qcm9jZXNzQ2FjaGUodHJ1ZSk7CiAgICAgbV9ldmljdGlvblRpbWVyLnN0YXJ0
T25lU2hvdChjYWNoZWRQcm9jZXNzTGlmZXRpbWUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IDllYzBlMTU1YmQ1Nzc5NWZmNWVkZmI2NDgyZjA0
YjljMjVkODQ5MGQuLjRjYzc5NTdiMWE1ZGEzNGFmZDFlZWM2YTQ0OGYxZTQxZTQ0Y2YxZDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTU3Miw3ICs1
NzIsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hSZW1vdGVXb3JrZXJDb250ZXh0
Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoUmVtbwogCiAgICAgLy8gUHJpb3JpdGl6ZSB0aGUg
cmVxdWVzdGluZyBXZWJQcm9jZXNzIGZvciBydW5uaW5nIHRoZSBzZXJ2aWNlIHdvcmtlci4KICAg
ICBpZiAoIXJlbW90ZVdvcmtlclByb2Nlc3NQcm94eSAmJiAhc2hvdWxkVXNlU2VwYXJhdGVSZW1v
dGVXb3JrZXJQcm9jZXNzICYmIHJlcXVlc3RpbmdQcm9jZXNzKSB7Ci0gICAgICAgIGlmICgmcmVx
dWVzdGluZ1Byb2Nlc3MtPndlYnNpdGVEYXRhU3RvcmUoKSA9PSB3ZWJzaXRlRGF0YVN0b3JlICYm
IHJlcXVlc3RpbmdQcm9jZXNzLT5pc01hdGNoaW5nUmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFi
bGVEb21haW4pKQorICAgICAgICBpZiAocmVxdWVzdGluZ1Byb2Nlc3MtPnNlc3Npb25JRCgpID09
IHdlYnNpdGVEYXRhU3RvcmUtPnNlc3Npb25JRCgpICYmIHJlcXVlc3RpbmdQcm9jZXNzLT5pc01h
dGNoaW5nUmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21haW4pKQogICAgICAgICAgICAg
dXNlUHJvY2Vzc0ZvclJlbW90ZVdvcmtlcnMoKnJlcXVlc3RpbmdQcm9jZXNzKTsKICAgICB9CiAK
QEAgLTU4MCw3ICs1ODAsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hSZW1vdGVX
b3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoUmVtbwogICAgICAgICBmb3Ig
KGF1dG8mIHByb2Nlc3MgOiBwcm9jZXNzUG9vbC0+bV9wcm9jZXNzZXMpIHsKICAgICAgICAgICAg
IGlmIChwcm9jZXNzLnB0cigpID09IHByb2Nlc3NQb29sLT5tX3ByZXdhcm1lZFByb2Nlc3MuZ2V0
KCkgfHwgcHJvY2Vzcy0+aXNEdW1teVByb2Nlc3NQcm94eSgpKQogICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwotICAgICAgICAgICAgaWYgKCZwcm9jZXNzLT53ZWJzaXRlRGF0YVN0b3JlKCkgIT0g
d2Vic2l0ZURhdGFTdG9yZSkKKyAgICAgICAgICAgIGlmIChwcm9jZXNzLT5zZXNzaW9uSUQoKSAh
PSB3ZWJzaXRlRGF0YVN0b3JlLT5zZXNzaW9uSUQoKSkKICAgICAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgICAgIGlmICghcHJvY2Vzcy0+aXNNYXRjaGluZ1JlZ2lzdHJhYmxlRG9tYWlu
KHJlZ2lzdHJhYmxlRG9tYWluKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTEwODYs
NyArMTA4Niw3IEBAIFJlZjxXZWJQcm9jZXNzUHJveHk+IFdlYlByb2Nlc3NQb29sOjpwcm9jZXNz
Rm9yUmVnaXN0cmFibGVEb21haW4oV2Vic2l0ZURhdGFTdG9yCiAgICAgICAgICAgICBpZiAocHJv
Y2Vzcy0+aXNSdW5uaW5nU2VydmljZVdvcmtlcnMoKSkKICAgICAgICAgICAgICAgICBjb250aW51
ZTsKICNlbmRpZgotICAgICAgICAgICAgaWYgKG11c3RNYXRjaERhdGFTdG9yZSAmJiAmcHJvY2Vz
cy0+d2Vic2l0ZURhdGFTdG9yZSgpICE9ICZ3ZWJzaXRlRGF0YVN0b3JlKQorICAgICAgICAgICAg
aWYgKG11c3RNYXRjaERhdGFTdG9yZSAmJiBwcm9jZXNzLT5zZXNzaW9uSUQoKSAhPSB3ZWJzaXRl
RGF0YVN0b3JlLnNlc3Npb25JRCgpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICAgICAgcmV0dXJuIHByb2Nlc3M7CiAgICAgICAgIH0KQEAgLTExMjYsNyArMTEyNiw3IEBAIFJl
ZjxXZWJQYWdlUHJveHk+IFdlYlByb2Nlc3NQb29sOjpjcmVhdGVXZWJQYWdlKFBhZ2VDbGllbnQm
IHBhZ2VDbGllbnQsIFJlZjxBUEk6CiAgICAgICAgIC8vIFNoYXJpbmcgcHJvY2Vzc2VzLCBlLmcu
IHdoZW4gY3JlYXRpbmcgdGhlIHBhZ2UgdmlhIHdpbmRvdy5vcGVuKCkuCiAgICAgICAgIHByb2Nl
c3MgPSAmcGFnZUNvbmZpZ3VyYXRpb24tPnJlbGF0ZWRQYWdlKCktPmVuc3VyZVJ1bm5pbmdQcm9j
ZXNzKCk7CiAgICAgICAgIC8vIFdlIGRvIG5vdCBzdXBwb3J0IHNldmVyYWwgV2Vic2l0ZURhdGFT
dG9yZXMgc2hhcmluZyBhIHNpbmdsZSBwcm9jZXNzLgotICAgICAgICBBU1NFUlQocHJvY2Vzcy0+
aXNEdW1teVByb2Nlc3NQcm94eSgpIHx8IHBhZ2VDb25maWd1cmF0aW9uLT53ZWJzaXRlRGF0YVN0
b3JlKCkgPT0gJnByb2Nlc3MtPndlYnNpdGVEYXRhU3RvcmUoKSk7CisgICAgICAgIEFTU0VSVChw
cm9jZXNzLT5pc0R1bW15UHJvY2Vzc1Byb3h5KCkgfHwgcGFnZUNvbmZpZ3VyYXRpb24tPndlYnNp
dGVEYXRhU3RvcmUoKS0+c2Vzc2lvbklEKCkgPT0gcHJvY2Vzcy0+c2Vzc2lvbklEKCkpOwogICAg
ICAgICBBU1NFUlQoJnBhZ2VDb25maWd1cmF0aW9uLT5yZWxhdGVkUGFnZSgpLT53ZWJzaXRlRGF0
YVN0b3JlKCkgPT0gcGFnZUNvbmZpZ3VyYXRpb24tPndlYnNpdGVEYXRhU3RvcmUoKSk7CiAgICAg
fSBlbHNlIGlmICghbV9pc0RlbGF5ZWRXZWJQcm9jZXNzTGF1bmNoRGlzYWJsZWQpIHsKICAgICAg
ICAgLy8gSW4gdGhlIGNvbW1vbiBjYXNlLCB3ZSBkZWxheSBwcm9jZXNzIGxhdW5jaCB1bnRpbCBz
b21ldGhpbmcgaXMgYWN0dWFsbHkgbG9hZGVkIGluIHRoZSBwYWdlLgpAQCAtMTE4MywxOSArMTE4
MywxOCBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjp1cGRhdGVSZW1vdGVXb3JrZXJVc2VyQWdlbnQo
Y29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpCiAgICAgICAgIHdvcmtlclByb2Nlc3Muc2V0UmVtb3Rl
V29ya2VyVXNlckFnZW50KG1fcmVtb3RlV29ya2VyVXNlckFnZW50KTsKIH0KIAotdm9pZCBXZWJQ
cm9jZXNzUG9vbDo6cGFnZUJlZ2luVXNpbmdXZWJzaXRlRGF0YVN0b3JlKFdlYlBhZ2VQcm94eUlk
ZW50aWZpZXIgcGFnZUlELCBXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUpCit2b2lkIFdlYlBy
b2Nlc3NQb29sOjpwYWdlQmVnaW5Vc2luZ1dlYnNpdGVEYXRhU3RvcmUoV2ViUGFnZVByb3h5SWRl
bnRpZmllciBwYWdlSUQsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKICAgICBSRUxFQVNF
X0FTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgUkVMRUFTRV9BU1NFUlQobV9zZXNzaW9u
VG9QYWdlSURzTWFwLmlzVmFsaWRLZXkoZGF0YVN0b3JlLnNlc3Npb25JRCgpKSk7Ci0gICAgYXV0
byByZXN1bHQgPSBtX3Nlc3Npb25Ub1BhZ2VJRHNNYXAuYWRkKGRhdGFTdG9yZS5zZXNzaW9uSUQo
KSwgSGFzaFNldDxXZWJQYWdlUHJveHlJZGVudGlmaWVyPigpKS5pdGVyYXRvci0+dmFsdWUuYWRk
KHBhZ2VJRCk7CisgICAgUkVMRUFTRV9BU1NFUlQobV9zZXNzaW9uVG9QYWdlSURzTWFwLmlzVmFs
aWRLZXkoc2Vzc2lvbklEKSk7CisgICAgYXV0byByZXN1bHQgPSBtX3Nlc3Npb25Ub1BhZ2VJRHNN
YXAuYWRkKHNlc3Npb25JRCwgSGFzaFNldDxXZWJQYWdlUHJveHlJZGVudGlmaWVyPigpKS5pdGVy
YXRvci0+dmFsdWUuYWRkKHBhZ2VJRCk7CiAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3Vs
dC5pc05ld0VudHJ5KTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGFnZUVuZFVzaW5nV2Vi
c2l0ZURhdGFTdG9yZShXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCwgV2Vic2l0ZURhdGFT
dG9yZSYgZGF0YVN0b3JlKQordm9pZCBXZWJQcm9jZXNzUG9vbDo6cGFnZUVuZFVzaW5nV2Vic2l0
ZURhdGFTdG9yZShXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCwgUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklEKQogewogICAgIFJFTEVBU0VfQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAg
ICBhdXRvIHNlc3Npb25JRCA9IGRhdGFTdG9yZS5zZXNzaW9uSUQoKTsKLSAgICBSRUxFQVNFX0FT
U0VSVChtX3Nlc3Npb25Ub1BhZ2VJRHNNYXAuaXNWYWxpZEtleShkYXRhU3RvcmUuc2Vzc2lvbklE
KCkpKTsKKyAgICBSRUxFQVNFX0FTU0VSVChtX3Nlc3Npb25Ub1BhZ2VJRHNNYXAuaXNWYWxpZEtl
eShzZXNzaW9uSUQpKTsKICAgICBhdXRvIGl0ZXJhdG9yID0gbV9zZXNzaW9uVG9QYWdlSURzTWFw
LmZpbmQoc2Vzc2lvbklEKTsKICAgICBSRUxFQVNFX0FTU0VSVChpdGVyYXRvciAhPSBtX3Nlc3Np
b25Ub1BhZ2VJRHNNYXAuZW5kKCkpOwogCkBAIC0xMjEwLDExICsxMjA5LDExIEBAIHZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OnBhZ2VFbmRVc2luZ1dlYnNpdGVEYXRhU3RvcmUoV2ViUGFnZVByb3h5SWRl
bnRpZmllciBwYWdlSUQsCiAgICAgfQogfQogCi1ib29sIFdlYlByb2Nlc3NQb29sOjpoYXNQYWdl
c1VzaW5nV2Vic2l0ZURhdGFTdG9yZShXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUpIGNvbnN0
Citib29sIFdlYlByb2Nlc3NQb29sOjpoYXNQYWdlc1VzaW5nV2Vic2l0ZURhdGFTdG9yZShQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQpIGNvbnN0CiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoUnVuTG9v
cDo6aXNNYWluKCkpOwotICAgIFJFTEVBU0VfQVNTRVJUKG1fc2Vzc2lvblRvUGFnZUlEc01hcC5p
c1ZhbGlkS2V5KGRhdGFTdG9yZS5zZXNzaW9uSUQoKSkpOwotICAgIHJldHVybiBtX3Nlc3Npb25U
b1BhZ2VJRHNNYXAuY29udGFpbnMoZGF0YVN0b3JlLnNlc3Npb25JRCgpKTsKKyAgICBSRUxFQVNF
X0FTU0VSVChtX3Nlc3Npb25Ub1BhZ2VJRHNNYXAuaXNWYWxpZEtleShzZXNzaW9uSUQpKTsKKyAg
ICByZXR1cm4gbV9zZXNzaW9uVG9QYWdlSURzTWFwLmNvbnRhaW5zKHNlc3Npb25JRCk7CiB9CiAK
IERvd25sb2FkUHJveHkmIFdlYlByb2Nlc3NQb29sOjpkb3dubG9hZChXZWJzaXRlRGF0YVN0b3Jl
JiBkYXRhU3RvcmUsIFdlYlBhZ2VQcm94eSogaW5pdGlhdGluZ1BhZ2UsIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSkKQEAgLTE5
NzYsNyArMTk3NSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NGb3JOYXZpZ2F0aW9u
SW50ZXJuYWwoV2ViUGFnZVByb3h5JiBwYWdlLCBjb25zdCBBUEk6CiAgICAgICAgIExPRyhQcm9j
ZXNzU3dhcHBpbmcsICIoUHJvY2Vzc1N3YXBwaW5nKSBDb25zaWRlcmluZyByZS11c2Ugb2YgYSBw
cmV2aW91c2x5IGNhY2hlZCBwcm9jZXNzIGZvciBkb21haW4gJXMiLCB0YXJnZXRSZWdpc3RyYWJs
ZURvbWFpbi5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAogICAgICAgICBpZiAoYXV0byogcHJv
Y2VzcyA9IG1fc3dhcHBlZFByb2Nlc3Nlc1BlclJlZ2lzdHJhYmxlRG9tYWluLmdldCh0YXJnZXRS
ZWdpc3RyYWJsZURvbWFpbikpIHsKLSAgICAgICAgICAgIGlmICgmcHJvY2Vzcy0+d2Vic2l0ZURh
dGFTdG9yZSgpID09IGRhdGFTdG9yZS5wdHIoKSkgeworICAgICAgICAgICAgaWYgKHByb2Nlc3Mt
PnNlc3Npb25JRCgpID09IGRhdGFTdG9yZS0+c2Vzc2lvbklEKCkpIHsKICAgICAgICAgICAgICAg
ICBMT0coUHJvY2Vzc1N3YXBwaW5nLCAiKFByb2Nlc3NTd2FwcGluZykgUmV1c2luZyBhIHByZXZp
b3VzbHkgY2FjaGVkIHByb2Nlc3Mgd2l0aCBwaWQgJWkgdG8gY29udGludWUgbmF2aWdhdGlvbiB0
byBVUkwgJXMiLCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCB0YXJnZXRVUkwuc3RyaW5n
KCkudXRmOCgpLmRhdGEoKSk7CiAKICAgICAgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhh
bmRsZXIoKnByb2Nlc3MsIG51bGxwdHIsIHJlYXNvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuaAppbmRleCA4YTA1NzNiNWNiNjc3NTQ4MDQ3ZDFhMWU1OWNiNzljYzQx
NzlhM2FmLi45ZDVlNDg0Y2I2YWI1NDk2MWVhMGQ0NmNmYTNhZTlhZGY4MTEwYmU1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAgLTIxNCw5ICsyMTQsOSBAQCBw
dWJsaWM6CiAKICAgICBSZWY8V2ViUGFnZVByb3h5PiBjcmVhdGVXZWJQYWdlKFBhZ2VDbGllbnQm
LCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJik7CiAKLSAgICB2b2lkIHBhZ2VCZWdpblVz
aW5nV2Vic2l0ZURhdGFTdG9yZShXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJzaXRlRGF0YVN0
b3JlJik7Ci0gICAgdm9pZCBwYWdlRW5kVXNpbmdXZWJzaXRlRGF0YVN0b3JlKFdlYlBhZ2VQcm94
eUlkZW50aWZpZXIsIFdlYnNpdGVEYXRhU3RvcmUmKTsKLSAgICBib29sIGhhc1BhZ2VzVXNpbmdX
ZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmUmKSBjb25zdDsKKyAgICB2b2lkIHBhZ2VC
ZWdpblVzaW5nV2Vic2l0ZURhdGFTdG9yZShXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBQQUw6OlNl
c3Npb25JRCk7CisgICAgdm9pZCBwYWdlRW5kVXNpbmdXZWJzaXRlRGF0YVN0b3JlKFdlYlBhZ2VQ
cm94eUlkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklEKTsKKyAgICBib29sIGhhc1BhZ2VzVXNpbmdX
ZWJzaXRlRGF0YVN0b3JlKFBBTDo6U2Vzc2lvbklEKSBjb25zdDsKIAogICAgIGNvbnN0IFN0cmlu
ZyYgaW5qZWN0ZWRCdW5kbGVQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9jb25maWd1cmF0aW9uLT5p
bmplY3RlZEJ1bmRsZVBhdGgoKTsgfQogI2lmIFBMQVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggZGExNTQyYTMyYzY5MzYzODcx
ZmMwNDFjNjIwNzlkMzUxYmJiZjM1Mi4uMjQ5ZTdjZjdmYTM0MTdmNWU5Yzg4N2Q3MGRkYmNiYzJh
NzYyNGE4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1By
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3Bw
CkBAIC0yNDEsNyArMjQxLDYgQEAgV2ViUHJvY2Vzc1Byb3h5OjpXZWJQcm9jZXNzUHJveHkoV2Vi
UHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBXZWJzaXRlRGF0YVN0b3JlKgogI2VuZGlmCiAgICAg
LCBtX2lzUmVzcG9uc2l2ZShOb09yTWF5YmU6Ok1heWJlKQogICAgICwgbV92aXNpYmxlUGFnZUNv
dW50ZXIoW3RoaXNdKFJlZkNvdW50ZXJFdmVudCkgeyB1cGRhdGVCYWNrZ3JvdW5kUmVzcG9uc2l2
ZW5lc3NUaW1lcigpOyB9KQotICAgICwgbV93ZWJzaXRlRGF0YVN0b3JlKHdlYnNpdGVEYXRhU3Rv
cmUpCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgLCBt
X3VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHkobWFrZVVuaXF1ZTxVc2VyTWVkaWFDYXB0dXJl
TWFuYWdlclByb3h5PihtYWtlVW5pcXVlUmVmPFVJUHJveHlGb3JDYXB0dXJlPigqdGhpcykpKQog
I2VuZGlmCkBAIC0yNTgsNyArMjU3LDggQEAgV2ViUHJvY2Vzc1Byb3h5OjpXZWJQcm9jZXNzUHJv
eHkoV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBXZWJzaXRlRGF0YVN0b3JlKgogICAgIEFT
U0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CiAKICAgICBXZWJQYXN0ZWJv
YXJkUHJveHk6OnNpbmdsZXRvbigpLmFkZFdlYlByb2Nlc3NQcm94eSgqdGhpcyk7Ci0KKyAgICBp
ZiAod2Vic2l0ZURhdGFTdG9yZSkKKyAgICAgICAgbV9zZXNzaW9uSUQgPSB3ZWJzaXRlRGF0YVN0
b3JlLT5zZXNzaW9uSUQoKTsKICAgICBwbGF0Zm9ybUluaXRpYWxpemUoKTsKIH0KIApAQCAtMzQ4
LDMyICszNDgsMzQgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnNldElzSW5Qcm9jZXNzQ2FjaGUo
Ym9vbCB2YWx1ZSwgV2lsbFNodXREb3duIHdpbGxTaHV0RG93bikKIAogdm9pZCBXZWJQcm9jZXNz
UHJveHk6OnNldFdlYnNpdGVEYXRhU3RvcmUoV2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlKQog
ewotICAgIEFTU0VSVCghbV93ZWJzaXRlRGF0YVN0b3JlKTsKKyAgICBBU1NFUlQoIW1fc2Vzc2lv
bklELmlzVmFsaWQoKSk7CiAgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3Ms
ICJzZXRXZWJzaXRlRGF0YVN0b3JlKCkgZGF0YVN0b3JlPSVwLCBzZXNzaW9uSUQ9JSIgUFJJdTY0
LCAmZGF0YVN0b3JlLCBkYXRhU3RvcmUuc2Vzc2lvbklEKCkudG9VSW50NjQoKSk7Ci0gICAgbV93
ZWJzaXRlRGF0YVN0b3JlID0gJmRhdGFTdG9yZTsKICAgICB1cGRhdGVSZWdpc3RyYXRpb25XaXRo
RGF0YVN0b3JlKCk7CiAgICAgc2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6U2V0V2Vic2l0ZURh
dGFTdG9yZVBhcmFtZXRlcnMocHJvY2Vzc1Bvb2woKS53ZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1l
dGVycygqdGhpcywgZGF0YVN0b3JlKSksIDApOwogCiAgICAgLy8gRGVsYXkgY29uc3RydWN0aW9u
IG9mIHRoZSBXZWJMb2NrUmVnaXN0cnlQcm94eSB1bnRpbCB0aGUgV2ViUHJvY2Vzc1Byb3h5IGhh
cyBhIGRhdGEgc3RvcmUgc2luY2UgdGhlIGRhdGEgc3RvcmUgaG9sZHMgdGhlCiAgICAgLy8gTG9j
YWxXZWJMb2NrUmVnaXN0cnkuCiAgICAgbV93ZWJMb2NrUmVnaXN0cnkgPSBtYWtlVW5pcXVlPFdl
YkxvY2tSZWdpc3RyeVByb3h5PigqdGhpcyk7CisgICAgbV9zZXNzaW9uSUQgPSBkYXRhU3RvcmUu
c2Vzc2lvbklEKCk7CiB9CiAKIGJvb2wgV2ViUHJvY2Vzc1Byb3h5Ojppc0R1bW15UHJvY2Vzc1By
b3h5KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV93ZWJzaXRlRGF0YVN0b3JlICYmIHByb2Nlc3NQ
b29sKCkuZHVtbXlQcm9jZXNzUHJveHkobV93ZWJzaXRlRGF0YVN0b3JlLT5zZXNzaW9uSUQoKSkg
PT0gdGhpczsKKyAgICByZXR1cm4gbV9zZXNzaW9uSUQuaXNWYWxpZCgpICYmIHByb2Nlc3NQb29s
KCkuZHVtbXlQcm9jZXNzUHJveHkoc2Vzc2lvbklEKCkpID09IHRoaXM7CiB9CiAKIHZvaWQgV2Vi
UHJvY2Vzc1Byb3h5Ojp1cGRhdGVSZWdpc3RyYXRpb25XaXRoRGF0YVN0b3JlKCkKIHsKLSAgICBp
ZiAoIW1fd2Vic2l0ZURhdGFTdG9yZSkKKyAgICBpZiAoIW1fc2Vzc2lvbklELmlzVmFsaWQoKSkK
ICAgICAgICAgcmV0dXJuOwotICAgIAorCiAgICAgYm9vbCBzaG91bGRCZVJlZ2lzdGVyZWQgPSBw
YWdlQ291bnQoKSB8fCBwcm92aXNpb25hbFBhZ2VDb3VudCgpOwotICAgIGlmIChzaG91bGRCZVJl
Z2lzdGVyZWQpCi0gICAgICAgIG1fd2Vic2l0ZURhdGFTdG9yZS0+cmVnaXN0ZXJQcm9jZXNzKCp0
aGlzKTsKLSAgICBlbHNlCi0gICAgICAgIG1fd2Vic2l0ZURhdGFTdG9yZS0+dW5yZWdpc3RlclBy
b2Nlc3MoKnRoaXMpOworICAgIGlmIChhdXRvKiBkYXRhU3RvcmUgPSBXZWJzaXRlRGF0YVN0b3Jl
OjpleGlzdGluZ0RhdGFTdG9yZUZvclNlc3Npb25JRChzZXNzaW9uSUQoKSkpIHsKKyAgICAgICAg
aWYgKHNob3VsZEJlUmVnaXN0ZXJlZCkKKyAgICAgICAgICAgIGRhdGFTdG9yZS0+cmVnaXN0ZXJQ
cm9jZXNzKCp0aGlzKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZGF0YVN0b3JlLT51bnJl
Z2lzdGVyUHJvY2VzcygqdGhpcyk7CisgICAgfQogfQogCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6
YWRkUHJvdmlzaW9uYWxQYWdlUHJveHkoUHJvdmlzaW9uYWxQYWdlUHJveHkmIHByb3Zpc2lvbmFs
UGFnZSkKQEAgLTU5NiwxMSArNTk4LDExIEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjphZGRFeGlz
dGluZ1dlYlBhZ2UoV2ViUGFnZVByb3h5JiB3ZWJQYWdlLCBCZWdpbnNVc2luZ0RhdGFTCiAgICAg
QVNTRVJUKCFtX3BhZ2VNYXAuY29udGFpbnMod2ViUGFnZS5pZGVudGlmaWVyKCkpKTsKICAgICBB
U1NFUlQoIWdsb2JhbFBhZ2VNYXAoKS5jb250YWlucyh3ZWJQYWdlLmlkZW50aWZpZXIoKSkpOwog
ICAgIFJFTEVBU0VfQVNTRVJUKCFtX2lzSW5Qcm9jZXNzQ2FjaGUpOwotICAgIEFTU0VSVCghbV93
ZWJzaXRlRGF0YVN0b3JlIHx8IG1fd2Vic2l0ZURhdGFTdG9yZSA9PSAmd2ViUGFnZS53ZWJzaXRl
RGF0YVN0b3JlKCkpOworICAgIEFTU0VSVCghbV9zZXNzaW9uSUQuaXNWYWxpZCgpIHx8IG1fc2Vz
c2lvbklEID09IHdlYlBhZ2Uud2Vic2l0ZURhdGFTdG9yZSgpLnNlc3Npb25JRCgpKTsKIAogICAg
IGlmIChiZWdpbnNVc2luZ0RhdGFTdG9yZSA9PSBCZWdpbnNVc2luZ0RhdGFTdG9yZTo6WWVzKSB7
CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fcHJvY2Vzc1Bvb2wpOwotICAgICAgICBtX3Byb2Nl
c3NQb29sLT5wYWdlQmVnaW5Vc2luZ1dlYnNpdGVEYXRhU3RvcmUod2ViUGFnZS5pZGVudGlmaWVy
KCksIHdlYlBhZ2Uud2Vic2l0ZURhdGFTdG9yZSgpKTsKKyAgICAgICAgbV9wcm9jZXNzUG9vbC0+
cGFnZUJlZ2luVXNpbmdXZWJzaXRlRGF0YVN0b3JlKHdlYlBhZ2UuaWRlbnRpZmllcigpLCB3ZWJQ
YWdlLndlYnNpdGVEYXRhU3RvcmUoKS5zZXNzaW9uSUQoKSk7CiAgICAgfQogCiAgICAgbWFya1By
b2Nlc3NBc1JlY2VudGx5VXNlZCgpOwpAQCAtNjMyLDcgKzYzNCw3IEBAIHZvaWQgV2ViUHJvY2Vz
c1Byb3h5OjpyZW1vdmVXZWJQYWdlKFdlYlBhZ2VQcm94eSYgd2ViUGFnZSwgRW5kc1VzaW5nRGF0
YVN0b3JlIGVuCiAgICAgQVNTRVJUX1VOVVNFRChyZW1vdmVkUGFnZSwgcmVtb3ZlZFBhZ2UgPT0g
JndlYlBhZ2UpOwogCiAgICAgaWYgKGVuZHNVc2luZ0RhdGFTdG9yZSA9PSBFbmRzVXNpbmdEYXRh
U3RvcmU6OlllcykKLSAgICAgICAgbV9wcm9jZXNzUG9vbC0+cGFnZUVuZFVzaW5nV2Vic2l0ZURh
dGFTdG9yZSh3ZWJQYWdlLmlkZW50aWZpZXIoKSwgd2ViUGFnZS53ZWJzaXRlRGF0YVN0b3JlKCkp
OworICAgICAgICBtX3Byb2Nlc3NQb29sLT5wYWdlRW5kVXNpbmdXZWJzaXRlRGF0YVN0b3JlKHdl
YlBhZ2UuaWRlbnRpZmllcigpLCB3ZWJQYWdlLndlYnNpdGVEYXRhU3RvcmUoKS5zZXNzaW9uSUQo
KSk7CiAKICAgICByZW1vdmVWaXNpdGVkTGlua1N0b3JlVXNlcih3ZWJQYWdlLnZpc2l0ZWRMaW5r
U3RvcmUoKSwgd2ViUGFnZS5pZGVudGlmaWVyKCkpOwogICAgIHVwZGF0ZVJlZ2lzdHJhdGlvbldp
dGhEYXRhU3RvcmUoKTsKQEAgLTgxNSw3ICs4MTcsOCBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6
dXBkYXRlQmFja0ZvcndhcmRJdGVtKGNvbnN0IEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSYgaXRl
bQogCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6Z2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKE1l
c3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVs
YXllZFJlcGx5JiYgcmVwbHkpCiB7Ci0gICAgd2Vic2l0ZURhdGFTdG9yZSgpLmdldE5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbigqdGhpcywgV1RGTW92ZShyZXBseSkpOworICAgIGlmIChhdXRvKiBk
YXRhU3RvcmUgPSBXZWJzaXRlRGF0YVN0b3JlOjpleGlzdGluZ0RhdGFTdG9yZUZvclNlc3Npb25J
RChzZXNzaW9uSUQoKSkpCisgICAgICAgIGRhdGFTdG9yZS0+Z2V0TmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uKCp0aGlzLCBXVEZNb3ZlKHJlcGx5KSk7CiB9CiAKICNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpCkBAIC0xNjk0LDEwICsxNjk3LDEyIEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRTdGFy
dFByb3Zpc2lvbmFsTG9hZEZvck1haW5GcmFtZShjb25zdCBVUkwmIHVybCkKIAogICAgIGF1dG8g
cmVnaXN0cmFibGVEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7IHVybCB9Owog
ICAgIGlmIChtX3JlZ2lzdHJhYmxlRG9tYWluICYmICptX3JlZ2lzdHJhYmxlRG9tYWluICE9IHJl
Z2lzdHJhYmxlRG9tYWluKSB7Ci0gICAgICAgIGlmIChpc1J1bm5pbmdTZXJ2aWNlV29ya2Vycygp
KQotICAgICAgICAgICAgd2Vic2l0ZURhdGFTdG9yZSgpLm5ldHdvcmtQcm9jZXNzKCkudGVybWlu
YXRlUmVtb3RlV29ya2VyQ29udGV4dENvbm5lY3Rpb25XaGVuUG9zc2libGUoUmVtb3RlV29ya2Vy
VHlwZTo6U2VydmljZVdvcmtlciwgd2Vic2l0ZURhdGFTdG9yZSgpLnNlc3Npb25JRCgpLCAqbV9y
ZWdpc3RyYWJsZURvbWFpbiwgY29yZVByb2Nlc3NJZGVudGlmaWVyKCkpOwotICAgICAgICBpZiAo
aXNSdW5uaW5nU2hhcmVkV29ya2VycygpKQotICAgICAgICAgICAgd2Vic2l0ZURhdGFTdG9yZSgp
Lm5ldHdvcmtQcm9jZXNzKCkudGVybWluYXRlUmVtb3RlV29ya2VyQ29udGV4dENvbm5lY3Rpb25X
aGVuUG9zc2libGUoUmVtb3RlV29ya2VyVHlwZTo6U2hhcmVkV29ya2VyLCB3ZWJzaXRlRGF0YVN0
b3JlKCkuc2Vzc2lvbklEKCksICptX3JlZ2lzdHJhYmxlRG9tYWluLCBjb3JlUHJvY2Vzc0lkZW50
aWZpZXIoKSk7CisgICAgICAgIGF1dG8qIGRhdGFTdG9yZSA9IFdlYnNpdGVEYXRhU3RvcmU6OmV4
aXN0aW5nRGF0YVN0b3JlRm9yU2Vzc2lvbklEKHNlc3Npb25JRCgpKTsKKyAgICAgICAgaWYgKGRh
dGFTdG9yZSAmJiBpc1J1bm5pbmdTZXJ2aWNlV29ya2VycygpKQorICAgICAgICAgICAgZGF0YVN0
b3JlLT5uZXR3b3JrUHJvY2VzcygpLnRlcm1pbmF0ZVJlbW90ZVdvcmtlckNvbnRleHRDb25uZWN0
aW9uV2hlblBvc3NpYmxlKFJlbW90ZVdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIsIHNlc3Npb25J
RCgpLCAqbV9yZWdpc3RyYWJsZURvbWFpbiwgY29yZVByb2Nlc3NJZGVudGlmaWVyKCkpOworCisg
ICAgICAgIGlmIChkYXRhU3RvcmUgJiYgaXNSdW5uaW5nU2hhcmVkV29ya2VycygpKQorICAgICAg
ICAgICAgZGF0YVN0b3JlLT5uZXR3b3JrUHJvY2VzcygpLnRlcm1pbmF0ZVJlbW90ZVdvcmtlckNv
bnRleHRDb25uZWN0aW9uV2hlblBvc3NpYmxlKFJlbW90ZVdvcmtlclR5cGU6OlNoYXJlZFdvcmtl
ciwgc2Vzc2lvbklEKCksICptX3JlZ2lzdHJhYmxlRG9tYWluLCBjb3JlUHJvY2Vzc0lkZW50aWZp
ZXIoKSk7CiAKICAgICAgICAgLy8gTnVsbCBvdXQgcmVnaXN0cmFibGUgZG9tYWluIHNpbmNlIHRo
aXMgcHJvY2VzcyBoYXMgbm93IGJlZW4gdXNlZCBmb3Igc2V2ZXJhbCBkb21haW5zLgogICAgICAg
ICBtX3JlZ2lzdHJhYmxlRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4geyB9OwpA
QCAtMTc0NCw4ICsxNzQ5LDcgQEAgV2ViUHJvY2Vzc1Bvb2wmIFdlYlByb2Nlc3NQcm94eTo6cHJv
Y2Vzc1Bvb2woKSBjb25zdAogCiBQQUw6OlNlc3Npb25JRCBXZWJQcm9jZXNzUHJveHk6OnNlc3Np
b25JRCgpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKG1fd2Vic2l0ZURhdGFTdG9yZSk7Ci0gICAgcmV0
dXJuIG1fd2Vic2l0ZURhdGFTdG9yZS0+c2Vzc2lvbklEKCk7CisgICAgcmV0dXJuIG1fc2Vzc2lv
bklEOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlU3BlZWNoUmVjb2duaXRpb25T
ZXJ2ZXIoU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCmluZGV4IDQ4OGRiOTU1NmI1ZDhi
NDE4ZGY5OGMyY2I4MmY0NzEwOGE4OWIxM2IuLjgwMjVmM2I2NGNjMjUxNmI2OTJlZmFkZjFjNDE3
NjEwY2RmNDI4MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5o
CkBAIC0xNjcsNyArMTY3LDYgQEAgcHVibGljOgogICAgIHZvaWQgZW5hYmxlUmVtb3RlV29ya2Vy
cyhSZW1vdGVXb3JrZXJUeXBlLCBjb25zdCBVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVy
Jik7CiAgICAgdm9pZCBkaXNhYmxlUmVtb3RlV29ya2VycyhSZW1vdGVXb3JrZXJUeXBlKTsKIAot
ICAgIFdlYnNpdGVEYXRhU3RvcmUmIHdlYnNpdGVEYXRhU3RvcmUoKSBjb25zdCB7IEFTU0VSVCht
X3dlYnNpdGVEYXRhU3RvcmUpOyByZXR1cm4gKm1fd2Vic2l0ZURhdGFTdG9yZTsgfQogICAgIHZv
aWQgc2V0V2Vic2l0ZURhdGFTdG9yZShXZWJzaXRlRGF0YVN0b3JlJik7CiAgICAgCiAgICAgUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3Q7CkBAIC02MTAsNyArNjA5LDcgQEAgcHJpdmF0
ZToKIAogICAgIFZpc2libGVXZWJQYWdlQ291bnRlciBtX3Zpc2libGVQYWdlQ291bnRlcjsKIAot
ICAgIFJlZlB0cjxXZWJzaXRlRGF0YVN0b3JlPiBtX3dlYnNpdGVEYXRhU3RvcmU7CisgICAgUEFM
OjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQgeyAwIH07CiAKICAgICBib29sIG1faXNVbmRlck1lbW9y
eVByZXNzdXJlIHsgZmFsc2UgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvZ2xpYi9XZWJQcm9jZXNzUHJveHlHTGliLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2dsaWIvV2ViUHJvY2Vzc1Byb3h5R0xpYi5jcHAKaW5kZXggODY0ZDBlMzZmYjhkYTI1NmQ1MTMy
ZWUzNTYzMDZjNTI4YzZlNjRlNy4uZjNlYmJiOWY1OThiOGUzZjQyNWU2MjczN2FkMmQyOWUxZWI0
OTNlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNz
UHJveHlHTGliLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dlYlByb2Nl
c3NQcm94eUdMaWIuY3BwCkBAIC00MiwxMiArNDIsMTMgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6
OnBsYXRmb3JtR2V0TGF1bmNoT3B0aW9ucyhQcm9jZXNzTGF1bmNoZXI6OkxhdW5jaE9wdGlvbnMm
IGwKICAgICBsYXVuY2hPcHRpb25zLmV4dHJhSW5pdGlhbGl6YXRpb25EYXRhLnNldCgiZW5hYmxl
LXNhbmRib3giX3MsIG1fcHJvY2Vzc1Bvb2wtPnNhbmRib3hFbmFibGVkKCkgPyAidHJ1ZSJfcyA6
ICJmYWxzZSJfcyk7CiAKICAgICBpZiAobV9wcm9jZXNzUG9vbC0+c2FuZGJveEVuYWJsZWQoKSkg
ewotICAgICAgICBXZWJzaXRlRGF0YVN0b3JlKiBkYXRhU3RvcmUgPSBtX3dlYnNpdGVEYXRhU3Rv
cmUuZ2V0KCk7Ci0gICAgICAgIGlmICghZGF0YVN0b3JlKSB7Ci0gICAgICAgICAgICAvLyBQcmV3
YXJtZWQgcHJvY2Vzc2VzIGRvbid0IGhhdmUgYSBXZWJzaXRlRGF0YVN0b3JlIHlldCwgc28gdXNl
IHRoZSBwcmltYXJ5IFdlYnNpdGVEYXRhU3RvcmUgZnJvbSB0aGUgV2ViUHJvY2Vzc1Bvb2wuCi0g
ICAgICAgICAgICAvLyBUaGUgcHJvY2VzcyB3b24ndCBiZSB1c2VkIGlmIGN1cnJlbnQgV2Vic2l0
ZURhdGFTdG9yZSBpcyBkaWZmZXJlbnQgdGhhbiB0aGUgV2ViUHJvY2Vzc1Bvb2wgcHJpbWFyeSBv
bmUuCisgICAgICAgIFdlYnNpdGVEYXRhU3RvcmUqIGRhdGFTdG9yZSA9IG51bGxwdHI7CisgICAg
ICAgIGlmIChtX3Nlc3Npb25JRC5pc1ZhbGlkKCkpCisgICAgICAgICAgICBkYXRhU3RvcmUgPSBX
ZWJzaXRlRGF0YVN0b3JlOjpleGlzdGluZ0RhdGFTdG9yZUZvclNlc3Npb25JRChtX3Nlc3Npb25J
RCk7CisKKyAgICAgICAgLy8gRm9yIHByZXdhcm1lZCB3ZWIgcHJvY2Vzc2VzLCBXZWJzaXRlRGF0
YVN0b3JlIG1heSBub3QgZXhpc3QgeWV0LCBzbyB3ZSB1c2UgZGVmYXVsdCBXZWJzaXRlRGF0YVN0
b3JlLgorICAgICAgICBpZiAoIWRhdGFTdG9yZSkKICAgICAgICAgICAgIGRhdGFTdG9yZSA9IFdl
YnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmUoKS5wdHIoKTsKLSAgICAgICAgfQogCiAg
ICAgICAgIEFTU0VSVChkYXRhU3RvcmUpOwogICAgICAgICBkYXRhU3RvcmUtPnJlc29sdmVEaXJl
Y3Rvcmllc0lmTmVjZXNzYXJ5KCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>459325</attachid>
            <date>2022-05-13 16:09:38 -0700</date>
            <delta_ts>2022-05-17 11:18:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238892-20220513160937.patch</filename>
            <type>text/plain</type>
            <size>29740</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjk0MTcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGU3NzRjZjQ0MmI3OGRjM2Vl
ZTkwOTcxMmZlNDNhYzI1NGJiYWE1Y2UuLmE0ZDEwYzJhMWIwYWE3MTQ3ZmEwYTE4YmVjOTkxNjYw
Y2VlOWM0NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTggQEAKKzIwMjItMDUtMTMgIFNpaHVpIExp
dSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViUHJvY2Vzc1Byb3h5IHNob3Vs
ZCBub3QgaG9sZCBXZWJzaXRlRGF0YVN0b3JlIGFsaXZlIHdoZW4gdGhlcmUgaXMgbm8gcGFnZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4ODkyCisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS85MTcxNTUxNz4KKworICAgICAgICBSZXZpZXdlZCBieSBZ
b3Vlbm4gRmFibGV0LgorCisgICAgICAgIFdlYlByb2Nlc3NQcm94eSBjYW4gb3V0bGl2ZSBXZWJQ
YWdlUHJveHksIGFuZCBiZWNhdXNlIFdlYlByb2Nlc3NQcm94eSBob2xkcyBzdHJvbmcgcmVmZXJl
bmNlIHRvIFdlYnNpdGVEYXRhU3RvcmUsIAorICAgICAgICBXZWJzaXRlRGF0YVN0b3JlIHdpbGwg
YmUga2VwdCBhbGl2ZSBldmVuIHdoZW4gaXQncyBub3QgdXNlZCBieSBhbnkgcGFnZSBhbmQgd2ls
bCBub3QgYmUgdXNlZCBieSBhbnkgcGFnZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9HUFUvR1BV
UHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVUHJvY2Vzc1Byb3h5OjpjcmVh
dGVHUFVQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL1Byb3Zpc2lvbmFs
UGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UHJvdmlzaW9uYWxQYWdlUHJveHk6OlBy
b3Zpc2lvbmFsUGFnZVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UHJvdmlzaW9uYWxQYWdlUHJv
eHk6On5Qcm92aXNpb25hbFBhZ2VQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNzL1Byb3Zpc2lv
bmFsUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlN1c3BlbmRlZFBhZ2VQcm94eTo6ZmluZFJldXNhYmxlU3Vz
cGVuZGVkUGFnZVByb2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZENh
Y2hlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRDYWNoZTo6cmVtb3ZlRW50
cmllc0ZvclNlc3Npb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJMb2NrUmVnaXN0cnlQcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkxvY2tSZWdpc3RyeVByb3h5OjpyZXF1ZXN0TG9j
ayk6CisgICAgICAgIChXZWJLaXQ6OldlYkxvY2tSZWdpc3RyeVByb3h5OjpyZWxlYXNlTG9jayk6
CisgICAgICAgIChXZWJLaXQ6OldlYkxvY2tSZWdpc3RyeVByb3h5OjphYm9ydExvY2tSZXF1ZXN0
KToKKyAgICAgICAgKFdlYktpdDo6V2ViTG9ja1JlZ2lzdHJ5UHJveHk6OnNuYXBzaG90KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViTG9ja1JlZ2lzdHJ5UHJveHk6OmNsaWVudElzR29pbmdBd2F5KToK
KyAgICAgICAgKFdlYktpdDo6V2ViTG9ja1JlZ2lzdHJ5UHJveHk6OnByb2Nlc3NEaWRFeGl0KToK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5Ojpzd2FwVG9Qcm92aXNpb25hbFBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmNvbW1pdFByb3Zpc2lvbmFsUGFnZSk6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlByb2Nlc3NDYWNoZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDYWNoZTo6
Y2FuQ2FjaGVQcm9jZXNzIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0NhY2hl
Ojp0YWtlUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDYWNoZTo6Y2xlYXJB
bGxQcm9jZXNzZXNGb3JTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0NhY2hl
OjpDYWNoZWRQcm9jZXNzOjpDYWNoZWRQcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6ZXN0YWJs
aXNoUmVtb3RlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NGb3JSZWdpc3RyYWJsZURvbWFpbik6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpjcmVhdGVXZWJQYWdlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NGb3JOYXZpZ2F0aW9uSW50ZXJuYWwp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUHJveHk6OldlYlByb2Nlc3NQcm94eSk6CisgICAgICAgIChXZWJLaXQ6
Om1fd2ViTG9ja1JlZ2lzdHJ5KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojp3
ZWJzaXRlRGF0YVN0b3JlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5
OjpzZXRXZWJzaXRlRGF0YVN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5
Ojppc0R1bW15UHJvY2Vzc1Byb3h5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Byb3h5Ojp1cGRhdGVSZWdpc3RyYXRpb25XaXRoRGF0YVN0b3JlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc1Byb3h5OjphZGRFeGlzdGluZ1dlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzUHJveHk6OmdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JNYWlu
RnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnNlc3Npb25JRCBjb25z
dCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUHJveHk6OndlYnNpdGVEYXRhU3RvcmUgY29uc3QpOiBEZWxldGVkLgor
CiAyMDIyLTA1LTEzICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgSVBDIGNhbm5vdCBlbmNvZGUsIGRlY29kZSBSZWY8PiwgY2F1c2luZyBkdXBsaWNhdGUg
Y29kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmNw
cAppbmRleCBjYTdhY2ZkMmE5NDE1Njk1MTViZGNhMzg4OWQ3YmE3YTZjOGExODlhLi44YmY5ZTA1
YjU3NWE3NWI0NTk2NzkyZDg2NDczZDk0NTEzZjBjY2U3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmNwcApAQCAtMzcwLDcgKzM3MCw5IEBAIHZv
aWQgR1BVUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzV2lsbFNodXREb3duKElQQzo6Q29ubmVjdGlvbiYg
Y29ubmVjdGlvbikKIAogdm9pZCBHUFVQcm9jZXNzUHJveHk6OmNyZWF0ZUdQVVByb2Nlc3NDb25u
ZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYgd2ViUHJvY2Vzc1Byb3h5LCBJUEM6OkF0dGFjaG1lbnQm
JiBjb25uZWN0aW9uSWRlbnRpZmllciwgR1BVUHJvY2Vzc0Nvbm5lY3Rpb25QYXJhbWV0ZXJzJiYg
cGFyYW1ldGVycykKIHsKLSAgICBhZGRTZXNzaW9uKHdlYlByb2Nlc3NQcm94eS53ZWJzaXRlRGF0
YVN0b3JlKCkpOworICAgIGlmIChhdXRvKiBzdG9yZSA9IHdlYlByb2Nlc3NQcm94eS53ZWJzaXRl
RGF0YVN0b3JlKCkpCisgICAgICAgIGFkZFNlc3Npb24oKnN0b3JlKTsKKwogICAgIFJFTEVBU0Vf
TE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBHUFVQcm9jZXNzUHJveHkgaXMgdGFraW5nIGEg
YmFja2dyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSBhIHdlYiBwcm9jZXNzIGlzIHJlcXVlc3Rpbmcg
YSBjb25uZWN0aW9uIiwgdGhpcyk7CiAgICAgc3RhcnRSZXNwb25zaXZlbmVzc1RpbWVyKFVzZUxh
enlTdG9wOjpObyk7CiAgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpHUFVQcm9jZXNz
OjpDcmVhdGVHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzIHsgd2ViUHJvY2Vzc1Byb3h5LmNvcmVQ
cm9jZXNzSWRlbnRpZmllcigpLCB3ZWJQcm9jZXNzUHJveHkuc2Vzc2lvbklEKCksIGNvbm5lY3Rp
b25JZGVudGlmaWVyLCBwYXJhbWV0ZXJzIH0sIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAq
dGhpcyB9XSgpIG11dGFibGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlz
aW9uYWxQYWdlUHJveHkuY3BwCmluZGV4IGVkNWRmZGRhNDc4ZGU0MTE2YjBmZTk1MzA2ZjE5NWJh
ODQ1MWQ0ZmQuLmY4NWUyYTY1M2QwZGZmODNhMjk3MGIwYTA1ZTc1NDU5ODMwYTVjMjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKQEAg
LTg0LDggKzg0LDEwIEBAIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpQcm92aXNpb25hbFBhZ2VQcm94
eShXZWJQYWdlUHJveHkmIHBhZ2UsIFJlZjxXZWJQcm9jZXNzUHJvCiAgICAgbV9wcm9jZXNzLT5h
ZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVy
TmFtZSgpLCBtX3dlYlBhZ2VJRCwgKnRoaXMpOwogICAgIG1fcHJvY2Vzcy0+YWRkUHJvdmlzaW9u
YWxQYWdlUHJveHkoKnRoaXMpOwogCi0gICAgaWYgKCZtX3Byb2Nlc3MtPndlYnNpdGVEYXRhU3Rv
cmUoKSAhPSAmbV9wYWdlLndlYnNpdGVEYXRhU3RvcmUoKSkKLSAgICAgICAgbV9wcm9jZXNzLT5w
cm9jZXNzUG9vbCgpLnBhZ2VCZWdpblVzaW5nV2Vic2l0ZURhdGFTdG9yZShtX3BhZ2UuaWRlbnRp
ZmllcigpLCBtX3Byb2Nlc3MtPndlYnNpdGVEYXRhU3RvcmUoKSk7CisgICAgbV93ZWJzaXRlRGF0
YVN0b3JlID0gbV9wcm9jZXNzLT53ZWJzaXRlRGF0YVN0b3JlKCk7CisgICAgQVNTRVJUKG1fd2Vi
c2l0ZURhdGFTdG9yZSk7CisgICAgaWYgKG1fd2Vic2l0ZURhdGFTdG9yZSAmJiBtX3dlYnNpdGVE
YXRhU3RvcmUgIT0gJm1fcGFnZS53ZWJzaXRlRGF0YVN0b3JlKCkpCisgICAgICAgIG1fcHJvY2Vz
cy0+cHJvY2Vzc1Bvb2woKS5wYWdlQmVnaW5Vc2luZ1dlYnNpdGVEYXRhU3RvcmUobV9wYWdlLmlk
ZW50aWZpZXIoKSwgKm1fd2Vic2l0ZURhdGFTdG9yZSk7CiAKICAgICAvLyBJZiB3ZSBhcmUgcmVh
dHRhY2hpbmcgdG8gYSBTdXNwZW5kZWRQYWdlLCB0aGVuIHRoZSBXZWJQcm9jZXNzJyBXZWJQYWdl
IGFscmVhZHkgZXhpc3RzIGFuZAogICAgIC8vIFdlYlBhZ2VQcm94eTo6ZGlkQ3JlYXRlTWFpbkZy
YW1lKCkgd2lsbCBub3QgYmUgY2FsbGVkIHRvIGluaXRpYWxpemUgbV9tYWluRnJhbWUuIEluIHN1
Y2gKQEAgLTExMyw4ICsxMTUsOSBAQCBQcm92aXNpb25hbFBhZ2VQcm94eTo6flByb3Zpc2lvbmFs
UGFnZVByb3h5KCkKICAgICBpZiAoIW1fd2FzQ29tbWl0dGVkKSB7CiAgICAgICAgIG1fcGFnZS5p
bnNwZWN0b3JDb250cm9sbGVyKCkud2lsbERlc3Ryb3lQcm92aXNpb25hbFBhZ2UoKnRoaXMpOwog
Ci0gICAgICAgIGlmICgmbV9wcm9jZXNzLT53ZWJzaXRlRGF0YVN0b3JlKCkgIT0gJm1fcGFnZS53
ZWJzaXRlRGF0YVN0b3JlKCkpCi0gICAgICAgICAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCku
cGFnZUVuZFVzaW5nV2Vic2l0ZURhdGFTdG9yZShtX3BhZ2UuaWRlbnRpZmllcigpLCBtX3Byb2Nl
c3MtPndlYnNpdGVEYXRhU3RvcmUoKSk7CisgICAgICAgIGF1dG8gZGF0YVN0b3JlID0gbV9wcm9j
ZXNzLT53ZWJzaXRlRGF0YVN0b3JlKCk7CisgICAgICAgIGlmIChkYXRhU3RvcmUgJiYgZGF0YVN0
b3JlIT0gJm1fcGFnZS53ZWJzaXRlRGF0YVN0b3JlKCkpCisgICAgICAgICAgICBtX3Byb2Nlc3Mt
PnByb2Nlc3NQb29sKCkucGFnZUVuZFVzaW5nV2Vic2l0ZURhdGFTdG9yZShtX3BhZ2UuaWRlbnRp
ZmllcigpLCAqZGF0YVN0b3JlKTsKIAogICAgICAgICBtX3Byb2Nlc3MtPnJlbW92ZU1lc3NhZ2VS
ZWNlaXZlcihNZXNzYWdlczo6V2ViUGFnZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1f
d2ViUGFnZUlEKTsKICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2xvc2UoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaAppbmRleCAy
MmQyYmIxMmNhNmFkNThmMmVmN2I3YTk5NTkzYjNmMDZlNjRhODhmLi4zZjUxOWIwNmQzMTJhMTBl
ZDNhYWEzNzAwNGRhY2ExYjA5Zjk5ODQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1Byb3Zpc2lvbmFsUGFnZVByb3h5LmgKQEAgLTYxLDYgKzYxLDcgQEAgY2xhc3MgVXNlckRhdGE7
CiBjbGFzcyBXZWJGcmFtZVByb3h5OwogY2xhc3MgV2ViUGFnZVByb3h5OwogY2xhc3MgV2ViUHJv
Y2Vzc1Byb3h5OworY2xhc3MgV2Vic2l0ZURhdGFTdG9yZTsKIHN0cnVjdCBGcmFtZUluZm9EYXRh
Owogc3RydWN0IE5hdmlnYXRpb25BY3Rpb25EYXRhOwogc3RydWN0IFVSTFNjaGVtZVRhc2tQYXJh
bWV0ZXJzOwpAQCAtMTYzLDYgKzE2NCw4IEBAIHByaXZhdGU6CiAgICAgV2ViUGFnZVByb3h5JiBt
X3BhZ2U7CiAgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV93ZWJQYWdlSUQ7CiAgICAgUmVm
PFdlYlByb2Nlc3NQcm94eT4gbV9wcm9jZXNzOworICAgIC8vIEtlZXAgV2Vic2l0ZURhdGFTdG9y
ZSBhbGl2ZSBmb3IgcHJvdmlzaW9uYWwgcGFnZSBsb2FkLgorICAgIFJlZlB0cjxXZWJzaXRlRGF0
YVN0b3JlPiBtX3dlYnNpdGVEYXRhU3RvcmU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPERyYXdpbmdB
cmVhUHJveHk+IG1fZHJhd2luZ0FyZWE7CiAgICAgUmVmUHRyPFdlYkZyYW1lUHJveHk+IG1fbWFp
bkZyYW1lOwogICAgIHVpbnQ2NF90IG1fbmF2aWdhdGlvbklEOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAKaW5kZXggY2NiZDYxMjg3ODUwZTczMTY5
MWEzMzBjNGUzMGFkM2EzNmUxZjA3ZC4uNjMyMmFlNWVkZjUyYzkzZDczYjQ4MzY0MTU4ZDI5OGNh
NGExNTU0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFn
ZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJv
eHkuY3BwCkBAIC01Myw3ICs1Myw3IEBAIFJlZlB0cjxXZWJQcm9jZXNzUHJveHk+IFN1c3BlbmRl
ZFBhZ2VQcm94eTo6ZmluZFJldXNhYmxlU3VzcGVuZGVkUGFnZVByb2Nlc3MoV2ViCiB7CiAgICAg
Zm9yIChhdXRvKiBzdXNwZW5kZWRQYWdlIDogYWxsU3VzcGVuZGVkUGFnZXMoKSkgewogICAgICAg
ICBhdXRvJiBwcm9jZXNzID0gc3VzcGVuZGVkUGFnZS0+cHJvY2VzcygpOwotICAgICAgICBpZiAo
JnByb2Nlc3MucHJvY2Vzc1Bvb2woKSA9PSAmcHJvY2Vzc1Bvb2wgJiYgcHJvY2Vzcy5yZWdpc3Ry
YWJsZURvbWFpbigpID09IHJlZ2lzdHJhYmxlRG9tYWluICYmICZwcm9jZXNzLndlYnNpdGVEYXRh
U3RvcmUoKSA9PSAmZGF0YVN0b3JlICYmIHByb2Nlc3MuY3Jvc3NPcmlnaW5Nb2RlKCkgIT0gQ3Jv
c3NPcmlnaW5Nb2RlOjpJc29sYXRlZCAmJiBwcm9jZXNzLmNhcHRpdmVQb3J0YWxNb2RlKCkgPT0g
Y2FwdGl2ZVBvcnRhbE1vZGUpCisgICAgICAgIGlmICgmcHJvY2Vzcy5wcm9jZXNzUG9vbCgpID09
ICZwcm9jZXNzUG9vbCAmJiBwcm9jZXNzLnJlZ2lzdHJhYmxlRG9tYWluKCkgPT0gcmVnaXN0cmFi
bGVEb21haW4gJiYgcHJvY2Vzcy53ZWJzaXRlRGF0YVN0b3JlKCkgPT0gJmRhdGFTdG9yZSAmJiBw
cm9jZXNzLmNyb3NzT3JpZ2luTW9kZSgpICE9IENyb3NzT3JpZ2luTW9kZTo6SXNvbGF0ZWQgJiYg
cHJvY2Vzcy5jYXB0aXZlUG9ydGFsTW9kZSgpID09IGNhcHRpdmVQb3J0YWxNb2RlKQogICAgICAg
ICAgICAgcmV0dXJuICZwcm9jZXNzOwogICAgIH0KICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkQ2FjaGUuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRDYWNoZS5jcHAKaW5kZXggNjRh
MWE5ZjY5YzZjNDYyMjQ0MTdiZGFjMjBjYzBlODE0M2Y1YTAzNC4uMTg3MzJmZDQ1ZDRhMzk4YjJh
MmI3ZTIzNGZlOTk3ZmI2YTkzODI5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQmFja0ZvcndhcmRDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQmFja0ZvcndhcmRDYWNoZS5jcHAKQEAgLTEzNCw3ICsxMzQsOCBAQCB2b2lkIFdlYkJhY2tG
b3J3YXJkQ2FjaGU6OnJlbW92ZUVudHJpZXNGb3JQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYgcHJv
Y2VzcykKIHZvaWQgV2ViQmFja0ZvcndhcmRDYWNoZTo6cmVtb3ZlRW50cmllc0ZvclNlc3Npb24o
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogewogICAgIHJlbW92ZUVudHJpZXNNYXRjaGluZyhb
c2Vzc2lvbklEXShhdXRvJiBpdGVtKSB7Ci0gICAgICAgIHJldHVybiBpdGVtLmJhY2tGb3J3YXJk
Q2FjaGVFbnRyeSgpLT5wcm9jZXNzKCkud2Vic2l0ZURhdGFTdG9yZSgpLnNlc3Npb25JRCgpID09
IHNlc3Npb25JRDsKKyAgICAgICAgYXV0byogZGF0YVN0b3JlID0gaXRlbS5iYWNrRm9yd2FyZENh
Y2hlRW50cnkoKS0+cHJvY2VzcygpLndlYnNpdGVEYXRhU3RvcmUoKTsKKyAgICAgICAgcmV0dXJu
IGRhdGFTdG9yZSAmJiBkYXRhU3RvcmUtPnNlc3Npb25JRCgpID09IHNlc3Npb25JRDsKICAgICB9
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViTG9ja1JlZ2lz
dHJ5UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViTG9ja1JlZ2lzdHJ5UHJv
eHkuY3BwCmluZGV4IDFjMTQyMWM2NTJjMmFmN2YxY2IzMWQyZjQ0NTAxMTdmYzEyOTZkNzEuLjc5
OWJjMjgwMTkyM2JmOGUwNDRiMzNmYTdiNmNkZWMxYWE4MTRjZmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkxvY2tSZWdpc3RyeVByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJMb2NrUmVnaXN0cnlQcm94eS5jcHAKQEAgLTMyLDYgKzMyLDcg
QEAKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0
b3JlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9XZWJMb2NrSWRlbnRpZmllci5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvV2ViTG9ja01hbmFnZXJTbmFwc2hvdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvV2Vi
TG9ja1JlZ2lzdHJ5Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTUsNyArNTYsMTMgQEAg
dm9pZCBXZWJMb2NrUmVnaXN0cnlQcm94eTo6cmVxdWVzdExvY2soV2ViQ29yZTo6Q2xpZW50T3Jp
Z2luJiYgY2xpZW50T3JpZ2luLCBXZWIKICAgICBNRVNTQUdFX0NIRUNLKGNsaWVudElELnByb2Nl
c3NJZGVudGlmaWVyKCkgPT0gbV9wcm9jZXNzLmNvcmVQcm9jZXNzSWRlbnRpZmllcigpKTsKICAg
ICBtX2hhc0V2ZXJSZXF1ZXN0ZWRMb2NrcyA9IHRydWU7CiAKLSAgICBtX3Byb2Nlc3Mud2Vic2l0
ZURhdGFTdG9yZSgpLndlYkxvY2tSZWdpc3RyeSgpLnJlcXVlc3RMb2NrKG1fcHJvY2Vzcy5zZXNz
aW9uSUQoKSwgV1RGTW92ZShjbGllbnRPcmlnaW4pLCBsb2NrSWRlbnRpZmllciwgY2xpZW50SUQs
IFdURk1vdmUobmFtZSksIGxvY2tNb2RlLCBzdGVhbCwgaWZBdmFpbGFibGUsIFt3ZWFrVGhpcyA9
IFdlYWtQdHIgeyAqdGhpcyB9LCBsb2NrSWRlbnRpZmllciwgY2xpZW50SURdKGJvb2wgc3VjY2Vz
cykgeworICAgIGF1dG8qIGRhdGFTdG9yZSA9IG1fcHJvY2Vzcy53ZWJzaXRlRGF0YVN0b3JlKCk7
CisgICAgaWYgKCFkYXRhU3RvcmUpIHsKKyAgICAgICAgbV9wcm9jZXNzLnNlbmQoTWVzc2FnZXM6
OlJlbW90ZVdlYkxvY2tSZWdpc3RyeTo6RGlkQ29tcGxldGVMb2NrUmVxdWVzdChsb2NrSWRlbnRp
ZmllciwgY2xpZW50SUQsIGZhbHNlKSwgMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBkYXRhU3RvcmUtPndlYkxvY2tSZWdpc3RyeSgpLnJlcXVlc3RMb2NrKG1fcHJvY2Vzcy5zZXNz
aW9uSUQoKSwgV1RGTW92ZShjbGllbnRPcmlnaW4pLCBsb2NrSWRlbnRpZmllciwgY2xpZW50SUQs
IFdURk1vdmUobmFtZSksIGxvY2tNb2RlLCBzdGVhbCwgaWZBdmFpbGFibGUsIFt3ZWFrVGhpcyA9
IFdlYWtQdHIgeyAqdGhpcyB9LCBsb2NrSWRlbnRpZmllciwgY2xpZW50SURdKGJvb2wgc3VjY2Vz
cykgewogICAgICAgICBpZiAod2Vha1RoaXMpCiAgICAgICAgICAgICB3ZWFrVGhpcy0+bV9wcm9j
ZXNzLnNlbmQoTWVzc2FnZXM6OlJlbW90ZVdlYkxvY2tSZWdpc3RyeTo6RGlkQ29tcGxldGVMb2Nr
UmVxdWVzdChsb2NrSWRlbnRpZmllciwgY2xpZW50SUQsIHN1Y2Nlc3MpLCAwKTsKICAgICB9LCBb
d2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgbG9ja0lkZW50aWZpZXIsIGNsaWVudElEXSB7
CkBAIC02OCwzMSArNzUsNDggQEAgdm9pZCBXZWJMb2NrUmVnaXN0cnlQcm94eTo6cmVsZWFzZUxv
Y2soV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYgY2xpZW50T3JpZ2luLCBXZWIKIHsKICAgICBNRVNT
QUdFX0NIRUNLKGxvY2tJZGVudGlmaWVyLnByb2Nlc3NJZGVudGlmaWVyKCkgPT0gbV9wcm9jZXNz
LmNvcmVQcm9jZXNzSWRlbnRpZmllcigpKTsKICAgICBNRVNTQUdFX0NIRUNLKGNsaWVudElELnBy
b2Nlc3NJZGVudGlmaWVyKCkgPT0gbV9wcm9jZXNzLmNvcmVQcm9jZXNzSWRlbnRpZmllcigpKTsK
LSAgICBtX3Byb2Nlc3Mud2Vic2l0ZURhdGFTdG9yZSgpLndlYkxvY2tSZWdpc3RyeSgpLnJlbGVh
c2VMb2NrKG1fcHJvY2Vzcy5zZXNzaW9uSUQoKSwgV1RGTW92ZShjbGllbnRPcmlnaW4pLCBsb2Nr
SWRlbnRpZmllciwgY2xpZW50SUQsIFdURk1vdmUobmFtZSkpOworICAgIGlmIChhdXRvKiBkYXRh
U3RvcmUgPSBtX3Byb2Nlc3Mud2Vic2l0ZURhdGFTdG9yZSgpKQorICAgICAgICBkYXRhU3RvcmUt
PndlYkxvY2tSZWdpc3RyeSgpLnJlbGVhc2VMb2NrKG1fcHJvY2Vzcy5zZXNzaW9uSUQoKSwgV1RG
TW92ZShjbGllbnRPcmlnaW4pLCBsb2NrSWRlbnRpZmllciwgY2xpZW50SUQsIFdURk1vdmUobmFt
ZSkpOwogfQogCiB2b2lkIFdlYkxvY2tSZWdpc3RyeVByb3h5OjphYm9ydExvY2tSZXF1ZXN0KFdl
YkNvcmU6OkNsaWVudE9yaWdpbiYmIGNsaWVudE9yaWdpbiwgV2ViQ29yZTo6V2ViTG9ja0lkZW50
aWZpZXIgbG9ja0lkZW50aWZpZXIsIFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVu
dGlmaWVyIGNsaWVudElELCBTdHJpbmcmJiBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIE1FU1NBR0VfQ0hFQ0sobG9ja0lkZW50
aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIoKSA9PSBtX3Byb2Nlc3MuY29yZVByb2Nlc3NJZGVudGlm
aWVyKCkpOwogICAgIE1FU1NBR0VfQ0hFQ0soY2xpZW50SUQucHJvY2Vzc0lkZW50aWZpZXIoKSA9
PSBtX3Byb2Nlc3MuY29yZVByb2Nlc3NJZGVudGlmaWVyKCkpOwotICAgIG1fcHJvY2Vzcy53ZWJz
aXRlRGF0YVN0b3JlKCkud2ViTG9ja1JlZ2lzdHJ5KCkuYWJvcnRMb2NrUmVxdWVzdChtX3Byb2Nl
c3Muc2Vzc2lvbklEKCksIFdURk1vdmUoY2xpZW50T3JpZ2luKSwgbG9ja0lkZW50aWZpZXIsIGNs
aWVudElELCBXVEZNb3ZlKG5hbWUpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAg
YXV0byogZGF0YVN0b3JlID0gbV9wcm9jZXNzLndlYnNpdGVEYXRhU3RvcmUoKTsKKyAgICBpZiAo
IWRhdGFTdG9yZSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBkYXRhU3RvcmUtPndlYkxvY2tSZWdpc3RyeSgpLmFib3J0
TG9ja1JlcXVlc3QobV9wcm9jZXNzLnNlc3Npb25JRCgpLCBXVEZNb3ZlKGNsaWVudE9yaWdpbiks
IGxvY2tJZGVudGlmaWVyLCBjbGllbnRJRCwgV1RGTW92ZShuYW1lKSwgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOwogfQogCiB2b2lkIFdlYkxvY2tSZWdpc3RyeVByb3h5OjpzbmFwc2hvdChX
ZWJDb3JlOjpDbGllbnRPcmlnaW4mJiBjbGllbnRPcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoV2ViQ29yZTo6V2ViTG9ja01hbmFnZXJTbmFwc2hvdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKLSAgICBtX3Byb2Nlc3Mud2Vic2l0ZURhdGFTdG9yZSgpLndlYkxvY2tSZWdpc3RyeSgp
LnNuYXBzaG90KG1fcHJvY2Vzcy5zZXNzaW9uSUQoKSwgV1RGTW92ZShjbGllbnRPcmlnaW4pLCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgYXV0byogZGF0YVN0b3JlID0gbV9wcm9j
ZXNzLndlYnNpdGVEYXRhU3RvcmUoKTsKKyAgICBpZiAoIWRhdGFTdG9yZSkgeworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihXZWJDb3JlOjpXZWJMb2NrTWFuYWdlclNuYXBzaG90IHsgfSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBkYXRhU3RvcmUtPndlYkxvY2tSZWdpc3RyeSgp
LnNuYXBzaG90KG1fcHJvY2Vzcy5zZXNzaW9uSUQoKSwgV1RGTW92ZShjbGllbnRPcmlnaW4pLCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgV2ViTG9ja1JlZ2lzdHJ5UHJv
eHk6OmNsaWVudElzR29pbmdBd2F5KFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmIGNsaWVudE9yaWdp
biwgV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIgY2xpZW50SUQpCiB7
CiAgICAgTUVTU0FHRV9DSEVDSyhjbGllbnRJRC5wcm9jZXNzSWRlbnRpZmllcigpID09IG1fcHJv
Y2Vzcy5jb3JlUHJvY2Vzc0lkZW50aWZpZXIoKSk7Ci0gICAgbV9wcm9jZXNzLndlYnNpdGVEYXRh
U3RvcmUoKS53ZWJMb2NrUmVnaXN0cnkoKS5jbGllbnRJc0dvaW5nQXdheShtX3Byb2Nlc3Muc2Vz
c2lvbklEKCksIFdURk1vdmUoY2xpZW50T3JpZ2luKSwgY2xpZW50SUQpOworICAgIGlmIChhdXRv
KiBkYXRhU3RvcmUgPSBXZWJzaXRlRGF0YVN0b3JlOjpleGlzdGluZ0RhdGFTdG9yZUZvclNlc3Np
b25JRChtX3Byb2Nlc3Muc2Vzc2lvbklEKCkpKQorICAgICAgICBkYXRhU3RvcmUtPndlYkxvY2tS
ZWdpc3RyeSgpLmNsaWVudElzR29pbmdBd2F5KG1fcHJvY2Vzcy5zZXNzaW9uSUQoKSwgV1RGTW92
ZShjbGllbnRPcmlnaW4pLCBjbGllbnRJRCk7CiB9CiAKIHZvaWQgV2ViTG9ja1JlZ2lzdHJ5UHJv
eHk6OnByb2Nlc3NEaWRFeGl0KCkKIHsKLSAgICBpZiAobV9oYXNFdmVyUmVxdWVzdGVkTG9ja3Mp
Ci0gICAgICAgIG1fcHJvY2Vzcy53ZWJzaXRlRGF0YVN0b3JlKCkud2ViTG9ja1JlZ2lzdHJ5KCku
Y2xpZW50c0FyZUdvaW5nQXdheShtX3Byb2Nlc3MuY29yZVByb2Nlc3NJZGVudGlmaWVyKCkpOwor
ICAgIGlmICghbV9oYXNFdmVyUmVxdWVzdGVkTG9ja3MpCisgICAgICAgIHJldHVybjsKKworICAg
IGlmIChhdXRvKiBkYXRhU3RvcmUgPSBXZWJzaXRlRGF0YVN0b3JlOjpleGlzdGluZ0RhdGFTdG9y
ZUZvclNlc3Npb25JRChtX3Byb2Nlc3Muc2Vzc2lvbklEKCkpKQorICAgICAgICBkYXRhU3RvcmUt
PndlYkxvY2tSZWdpc3RyeSgpLmNsaWVudHNBcmVHb2luZ0F3YXkobV9wcm9jZXNzLmNvcmVQcm9j
ZXNzSWRlbnRpZmllcigpKTsKIH0KIAogI3VuZGVmIE1FU1NBR0VfQ0hFQ0sKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDc1MGViZjg5MTA2OWI0ZTgwZmVmZTA1
MTkyNTM1YTE4NWVjMDBlOTUuLmJjMjdkY2I0NWU5MTMxYTJjNDNhNzgwYTk2MjVjZDdiMGM4OTEz
YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtOTc4LDcg
Kzk3OCw4IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpzd2FwVG9Qcm92aXNpb25hbFBhZ2Uoc3RkOjp1
bmlxdWVfcHRyPFByb3Zpc2lvbmFsUGFnZVByb3h5PiBwCiAgICAgbV9wcm9jZXNzID0gcHJvdmlz
aW9uYWxQYWdlLT5wcm9jZXNzKCk7CiAgICAgbV93ZWJQYWdlSUQgPSBwcm92aXNpb25hbFBhZ2Ut
PndlYlBhZ2VJRCgpOwogICAgIHBhZ2VDbGllbnQoKS5kaWRDaGFuZ2VXZWJQYWdlSUQoKTsKLSAg
ICBtX3dlYnNpdGVEYXRhU3RvcmUgPSBtX3Byb2Nlc3MtPndlYnNpdGVEYXRhU3RvcmUoKTsKKyAg
ICBBU1NFUlQobV9wcm9jZXNzLT53ZWJzaXRlRGF0YVN0b3JlKCkpOworICAgIG1fd2Vic2l0ZURh
dGFTdG9yZSA9ICptX3Byb2Nlc3MtPndlYnNpdGVEYXRhU3RvcmUoKTsKIAogI2lmIEhBVkUoVklT
SUJJTElUWV9QUk9QQUdBVElPTl9WSUVXKQogICAgIG1fY29udGV4dElERm9yVmlzaWJpbGl0eVBy
b3BhZ2F0aW9uSW5XZWJQcm9jZXNzID0gcHJvdmlzaW9uYWxQYWdlLT5jb250ZXh0SURGb3JWaXNp
YmlsaXR5UHJvcGFnYXRpb25JbldlYlByb2Nlc3MoKTsKQEAgLTM2MjQsNyArMzYyNSw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5Ojpjb21taXRQcm92aXNpb25hbFBhZ2UoRnJhbWVJZGVudGlmaWVyIGZy
YW1lSUQsIEZyYW1lSW5mb0RhdGEmCiAgICAgcmVtb3ZlQWxsTWVzc2FnZVJlY2VpdmVycygpOwog
ICAgIGF1dG8qIG5hdmlnYXRpb24gPSBuYXZpZ2F0aW9uU3RhdGUoKS5uYXZpZ2F0aW9uKG1fcHJv
dmlzaW9uYWxQYWdlLT5uYXZpZ2F0aW9uSUQoKSk7CiAgICAgYm9vbCBkaWRTdXNwZW5kUHJldmlv
dXNQYWdlID0gbmF2aWdhdGlvbiAmJiAhbV9wcm92aXNpb25hbFBhZ2UtPmlzUHJvY2Vzc1N3YXBw
aW5nT25OYXZpZ2F0aW9uUmVzcG9uc2UoKSA/IHN1c3BlbmRDdXJyZW50UGFnZUlmUG9zc2libGUo
Km5hdmlnYXRpb24sIG1haW5GcmFtZUlESW5QcmV2aW91c1Byb2Nlc3MsIG1fcHJvdmlzaW9uYWxQ
YWdlLT5wcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50KCksIHNob3VsZERlbGF5Q2xvc2luZ1Vu
dGlsRmlyc3RMYXllckZsdXNoKSA6IGZhbHNlOwotICAgIG1fcHJvY2Vzcy0+cmVtb3ZlV2ViUGFn
ZSgqdGhpcywgbV93ZWJzaXRlRGF0YVN0b3JlLnB0cigpID09ICZtX3Byb3Zpc2lvbmFsUGFnZS0+
cHJvY2VzcygpLndlYnNpdGVEYXRhU3RvcmUoKSA/IFdlYlByb2Nlc3NQcm94eTo6RW5kc1VzaW5n
RGF0YVN0b3JlOjpObyA6IFdlYlByb2Nlc3NQcm94eTo6RW5kc1VzaW5nRGF0YVN0b3JlOjpZZXMp
OworICAgIG1fcHJvY2Vzcy0+cmVtb3ZlV2ViUGFnZSgqdGhpcywgbV93ZWJzaXRlRGF0YVN0b3Jl
LnB0cigpID09IG1fcHJvdmlzaW9uYWxQYWdlLT5wcm9jZXNzKCkud2Vic2l0ZURhdGFTdG9yZSgp
ID8gV2ViUHJvY2Vzc1Byb3h5OjpFbmRzVXNpbmdEYXRhU3RvcmU6Ok5vIDogV2ViUHJvY2Vzc1By
b3h5OjpFbmRzVXNpbmdEYXRhU3RvcmU6Olllcyk7CiAKICAgICAvLyBUaGVyZSBpcyBubyB3YXkg
d2UnbGwgYmUgYWJsZSB0byByZXR1cm4gdG8gdGhlIHBhZ2UgaW4gdGhlIHByZXZpb3VzIHBhZ2Ug
c28gY2xvc2UgaXQuCiAgICAgaWYgKCFkaWRTdXNwZW5kUHJldmlvdXNQYWdlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc0NhY2hlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NDYWNoZS5jcHAKaW5kZXggNTFmY2JlNjYzNDFhOTkz
MGY3OGM0MjcxMzQ4YTAxZWIxNGIzYzI3MS4uZDE4ZDllMTk3ZjhhMzY2Y2Q1ZWZlYWE2MzYwMGJl
YzRlN2YxZDlkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c0NhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzQ2FjaGUu
Y3BwCkBAIC03Niw4ICs3Niw3IEBAIGJvb2wgV2ViUHJvY2Vzc0NhY2hlOjpjYW5DYWNoZVByb2Nl
c3MoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzKSBjb25zdAogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQogCi0gICAgYXV0byBzZXNzaW9uSUQgPSBwcm9jZXNzLndlYnNpdGVEYXRhU3RvcmUo
KS5zZXNzaW9uSUQoKTsKLSAgICBpZiAoc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkgJiYgIXByb2Nl
c3MucHJvY2Vzc1Bvb2woKS5oYXNQYWdlc1VzaW5nV2Vic2l0ZURhdGFTdG9yZShwcm9jZXNzLndl
YnNpdGVEYXRhU3RvcmUoKSkpIHsKKyAgICBpZiAoIXByb2Nlc3Mud2Vic2l0ZURhdGFTdG9yZSgp
KSB7CiAgICAgICAgIFdFQlBST0NFU1NDQUNIRV9SRUxFQVNFX0xPRygiY2FuQ2FjaGVQcm9jZXNz
OiBOb3QgY2FjaGluZyBwcm9jZXNzIGJlY2F1c2UgdGhpcyBzZXNzaW9uIGhhcyBiZWVuIGRlc3Ry
b3llZCIsIHByb2Nlc3MucHJvY2Vzc0lkZW50aWZpZXIoKSk7CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CkBAIC0xNTMsNyArMTUyLDcgQEAgUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gV2Vi
UHJvY2Vzc0NhY2hlOjp0YWtlUHJvY2Vzcyhjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZUQKICAg
ICBpZiAoaXQgPT0gbV9wcm9jZXNzZXNQZXJSZWdpc3RyYWJsZURvbWFpbi5lbmQoKSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBpZiAoJml0LT52YWx1ZS0+cHJvY2VzcygpLndlYnNp
dGVEYXRhU3RvcmUoKSAhPSAmZGF0YVN0b3JlKQorICAgIGlmIChpdC0+dmFsdWUtPnByb2Nlc3Mo
KS53ZWJzaXRlRGF0YVN0b3JlKCkgIT0gJmRhdGFTdG9yZSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKICAgICBpZiAoaXQtPnZhbHVlLT5wcm9jZXNzKCkuY2FwdGl2ZVBvcnRhbE1vZGUoKSAh
PSBjYXB0aXZlUG9ydGFsTW9kZSkKQEAgLTIxMiw3ICsyMTEsOCBAQCB2b2lkIFdlYlByb2Nlc3ND
YWNoZTo6Y2xlYXJBbGxQcm9jZXNzZXNGb3JTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCkKIHsKICAgICBWZWN0b3I8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IGtleXNUb1JlbW92
ZTsKICAgICBmb3IgKGF1dG8mIHBhaXIgOiBtX3Byb2Nlc3Nlc1BlclJlZ2lzdHJhYmxlRG9tYWlu
KSB7Ci0gICAgICAgIGlmIChwYWlyLnZhbHVlLT5wcm9jZXNzKCkud2Vic2l0ZURhdGFTdG9yZSgp
LnNlc3Npb25JRCgpID09IHNlc3Npb25JRCkgeworICAgICAgICBhdXRvKiBkYXRhU3RvcmUgPSBw
YWlyLnZhbHVlLT5wcm9jZXNzKCkud2Vic2l0ZURhdGFTdG9yZSgpOworICAgICAgICBpZiAoIWRh
dGFTdG9yZSB8fCBkYXRhU3RvcmUtPnNlc3Npb25JRCgpID09IHNlc3Npb25JRCkgewogICAgICAg
ICAgICAgV0VCUFJPQ0VTU0NBQ0hFX1JFTEVBU0VfTE9HKCJjbGVhckFsbFByb2Nlc3Nlc0ZvclNl
c3Npb246IEV2aWN0aW5nIHByb2Nlc3MgYmVjYXVzZSBpdHMgc2Vzc2lvbiB3YXMgZGVzdHJveWVk
IiwgcGFpci52YWx1ZS0+cHJvY2VzcygpLnByb2Nlc3NJZGVudGlmaWVyKCkpOwogICAgICAgICAg
ICAga2V5c1RvUmVtb3ZlLmFwcGVuZChwYWlyLmtleSk7CiAgICAgICAgIH0KQEAgLTIyMiw3ICsy
MjIsOCBAQCB2b2lkIFdlYlByb2Nlc3NDYWNoZTo6Y2xlYXJBbGxQcm9jZXNzZXNGb3JTZXNzaW9u
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIAogICAgIFZlY3Rvcjx1aW50NjRfdD4gcGVuZGlu
Z1JlcXVlc3RzVG9SZW1vdmU7CiAgICAgZm9yIChhdXRvJiBwYWlyIDogbV9wZW5kaW5nQWRkUmVx
dWVzdHMpIHsKLSAgICAgICAgaWYgKHBhaXIudmFsdWUtPnByb2Nlc3MoKS53ZWJzaXRlRGF0YVN0
b3JlKCkuc2Vzc2lvbklEKCkgPT0gc2Vzc2lvbklEKSB7CisgICAgICAgIGF1dG8qIGRhdGFTdG9y
ZSA9IHBhaXIudmFsdWUtPnByb2Nlc3MoKS53ZWJzaXRlRGF0YVN0b3JlKCk7CisgICAgICAgIGlm
ICghZGF0YVN0b3JlIHx8IGRhdGFTdG9yZS0+c2Vzc2lvbklEKCkgPT0gc2Vzc2lvbklEKSB7CiAg
ICAgICAgICAgICBXRUJQUk9DRVNTQ0FDSEVfUkVMRUFTRV9MT0coImNsZWFyQWxsUHJvY2Vzc2Vz
Rm9yU2Vzc2lvbjogRXZpY3RpbmcgcHJvY2VzcyBiZWNhdXNlIGl0cyBzZXNzaW9uIHdhcyBkZXN0
cm95ZWQiLCBwYWlyLnZhbHVlLT5wcm9jZXNzKCkucHJvY2Vzc0lkZW50aWZpZXIoKSk7CiAgICAg
ICAgICAgICBwZW5kaW5nUmVxdWVzdHNUb1JlbW92ZS5hcHBlbmQocGFpci5rZXkpOwogICAgICAg
ICB9CkBAIC0yNzYsNyArMjc3LDggQEAgV2ViUHJvY2Vzc0NhY2hlOjpDYWNoZWRQcm9jZXNzOjpD
YWNoZWRQcm9jZXNzKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcykKICNlbmRpZgogewog
ICAgIFJFTEVBU0VfQVNTRVJUKCFtX3Byb2Nlc3MtPnBhZ2VDb3VudCgpKTsKLSAgICBSRUxFQVNF
X0FTU0VSVF9XSVRIX01FU1NBR0UoIW1fcHJvY2Vzcy0+d2Vic2l0ZURhdGFTdG9yZSgpLnByb2Nl
c3NlcygpLmNvbnRhaW5zKCptX3Byb2Nlc3MpLCAiT25seSBwcm9jZXNzZXMgd2l0aCBwYWdlcyBz
aG91bGQgYmUgcmVnaXN0ZXJlZCB3aXRoIHRoZSBkYXRhIHN0b3JlIik7CisgICAgYXV0byogZGF0
YVN0b3JlID0gbV9wcm9jZXNzLT53ZWJzaXRlRGF0YVN0b3JlKCk7CisgICAgUkVMRUFTRV9BU1NF
UlRfV0lUSF9NRVNTQUdFKGRhdGFTdG9yZSAmJiAhZGF0YVN0b3JlLT5wcm9jZXNzZXMoKS5jb250
YWlucygqbV9wcm9jZXNzKSwgIk9ubHkgcHJvY2Vzc2VzIHdpdGggcGFnZXMgc2hvdWxkIGJlIHJl
Z2lzdGVyZWQgd2l0aCB0aGUgZGF0YSBzdG9yZSIpOwogICAgIG1fcHJvY2Vzcy0+c2V0SXNJblBy
b2Nlc3NDYWNoZSh0cnVlKTsKICAgICBtX2V2aWN0aW9uVGltZXIuc3RhcnRPbmVTaG90KGNhY2hl
ZFByb2Nlc3NMaWZldGltZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5jcHAKaW5kZXggNDVlMzU2ZjE2NWIwNzg3YzUxZDE2NGFkZWFmMGM4M2U5NjFmYTdiYS4u
Zjg5ZjllMDk1NTMxMWU0MTM3MmFhMzJkMWMxNDc3MWEwMDM2YjRlMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtNTc2LDcgKzU3Niw3IEBAIHZvaWQg
V2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFJlbW90ZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9O
ZXR3b3JrUHJvY2VzcyhSZW1vCiAKICAgICAvLyBQcmlvcml0aXplIHRoZSByZXF1ZXN0aW5nIFdl
YlByb2Nlc3MgZm9yIHJ1bm5pbmcgdGhlIHNlcnZpY2Ugd29ya2VyLgogICAgIGlmICghcmVtb3Rl
V29ya2VyUHJvY2Vzc1Byb3h5ICYmICFzX3VzZVNlcGFyYXRlU2VydmljZVdvcmtlclByb2Nlc3Mg
JiYgcmVxdWVzdGluZ1Byb2Nlc3MpIHsKLSAgICAgICAgaWYgKCZyZXF1ZXN0aW5nUHJvY2Vzcy0+
d2Vic2l0ZURhdGFTdG9yZSgpID09IHdlYnNpdGVEYXRhU3RvcmUgJiYgcmVxdWVzdGluZ1Byb2Nl
c3MtPmlzTWF0Y2hpbmdSZWdpc3RyYWJsZURvbWFpbihyZWdpc3RyYWJsZURvbWFpbikpCisgICAg
ICAgIGlmIChyZXF1ZXN0aW5nUHJvY2Vzcy0+d2Vic2l0ZURhdGFTdG9yZSgpID09IHdlYnNpdGVE
YXRhU3RvcmUgJiYgcmVxdWVzdGluZ1Byb2Nlc3MtPmlzTWF0Y2hpbmdSZWdpc3RyYWJsZURvbWFp
bihyZWdpc3RyYWJsZURvbWFpbikpCiAgICAgICAgICAgICB1c2VQcm9jZXNzRm9yUmVtb3RlV29y
a2VycygqcmVxdWVzdGluZ1Byb2Nlc3MpOwogICAgIH0KIApAQCAtNTg0LDcgKzU4NCw3IEBAIHZv
aWQgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFJlbW90ZVdvcmtlckNvbnRleHRDb25uZWN0aW9u
VG9OZXR3b3JrUHJvY2VzcyhSZW1vCiAgICAgICAgIGZvciAoYXV0byYgcHJvY2VzcyA6IHByb2Nl
c3NQb29sLT5tX3Byb2Nlc3NlcykgewogICAgICAgICAgICAgaWYgKHByb2Nlc3MucHRyKCkgPT0g
cHJvY2Vzc1Bvb2wtPm1fcHJld2FybWVkUHJvY2Vzcy5nZXQoKSB8fCBwcm9jZXNzLT5pc0R1bW15
UHJvY2Vzc1Byb3h5KCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBp
ZiAoJnByb2Nlc3MtPndlYnNpdGVEYXRhU3RvcmUoKSAhPSB3ZWJzaXRlRGF0YVN0b3JlKQorICAg
ICAgICAgICAgaWYgKHByb2Nlc3MtPndlYnNpdGVEYXRhU3RvcmUoKSAhPSB3ZWJzaXRlRGF0YVN0
b3JlKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgaWYgKCFwcm9jZXNz
LT5pc01hdGNoaW5nUmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21haW4pKQogICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMTA5Miw3ICsxMDkyLDcgQEAgUmVmPFdlYlByb2Nlc3NQ
cm94eT4gV2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NGb3JSZWdpc3RyYWJsZURvbWFpbihXZWJzaXRl
RGF0YVN0b3IKICAgICAgICAgICAgIGlmIChwcm9jZXNzLT5pc1J1bm5pbmdTZXJ2aWNlV29ya2Vy
cygpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogI2VuZGlmCi0gICAgICAgICAgICBpZiAo
bXVzdE1hdGNoRGF0YVN0b3JlICYmICZwcm9jZXNzLT53ZWJzaXRlRGF0YVN0b3JlKCkgIT0gJndl
YnNpdGVEYXRhU3RvcmUpCisgICAgICAgICAgICBpZiAobXVzdE1hdGNoRGF0YVN0b3JlICYmIHBy
b2Nlc3MtPndlYnNpdGVEYXRhU3RvcmUoKSAhPSAmd2Vic2l0ZURhdGFTdG9yZSkKICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIHJldHVybiBwcm9jZXNzOwogICAgICAgICB9
CkBAIC0xMTMyLDcgKzExMzIsNyBAQCBSZWY8V2ViUGFnZVByb3h5PiBXZWJQcm9jZXNzUG9vbDo6
Y3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBSZWY8QVBJOgogICAgICAgICAv
LyBTaGFyaW5nIHByb2Nlc3NlcywgZS5nLiB3aGVuIGNyZWF0aW5nIHRoZSBwYWdlIHZpYSB3aW5k
b3cub3BlbigpLgogICAgICAgICBwcm9jZXNzID0gJnBhZ2VDb25maWd1cmF0aW9uLT5yZWxhdGVk
UGFnZSgpLT5lbnN1cmVSdW5uaW5nUHJvY2VzcygpOwogICAgICAgICAvLyBXZSBkbyBub3Qgc3Vw
cG9ydCBzZXZlcmFsIFdlYnNpdGVEYXRhU3RvcmVzIHNoYXJpbmcgYSBzaW5nbGUgcHJvY2Vzcy4K
LSAgICAgICAgQVNTRVJUKHByb2Nlc3MtPmlzRHVtbXlQcm9jZXNzUHJveHkoKSB8fCBwYWdlQ29u
ZmlndXJhdGlvbi0+d2Vic2l0ZURhdGFTdG9yZSgpID09ICZwcm9jZXNzLT53ZWJzaXRlRGF0YVN0
b3JlKCkpOworICAgICAgICBBU1NFUlQocHJvY2Vzcy0+aXNEdW1teVByb2Nlc3NQcm94eSgpIHx8
IHBhZ2VDb25maWd1cmF0aW9uLT53ZWJzaXRlRGF0YVN0b3JlKCkgPT0gcHJvY2Vzcy0+d2Vic2l0
ZURhdGFTdG9yZSgpKTsKICAgICAgICAgQVNTRVJUKCZwYWdlQ29uZmlndXJhdGlvbi0+cmVsYXRl
ZFBhZ2UoKS0+d2Vic2l0ZURhdGFTdG9yZSgpID09IHBhZ2VDb25maWd1cmF0aW9uLT53ZWJzaXRl
RGF0YVN0b3JlKCkpOwogICAgIH0gZWxzZSBpZiAoIW1faXNEZWxheWVkV2ViUHJvY2Vzc0xhdW5j
aERpc2FibGVkKSB7CiAgICAgICAgIC8vIEluIHRoZSBjb21tb24gY2FzZSwgd2UgZGVsYXkgcHJv
Y2VzcyBsYXVuY2ggdW50aWwgc29tZXRoaW5nIGlzIGFjdHVhbGx5IGxvYWRlZCBpbiB0aGUgcGFn
ZS4KQEAgLTE5ODIsNyArMTk4Miw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NGb3JO
YXZpZ2F0aW9uSW50ZXJuYWwoV2ViUGFnZVByb3h5JiBwYWdlLCBjb25zdCBBUEk6CiAgICAgICAg
IExPRyhQcm9jZXNzU3dhcHBpbmcsICIoUHJvY2Vzc1N3YXBwaW5nKSBDb25zaWRlcmluZyByZS11
c2Ugb2YgYSBwcmV2aW91c2x5IGNhY2hlZCBwcm9jZXNzIGZvciBkb21haW4gJXMiLCB0YXJnZXRS
ZWdpc3RyYWJsZURvbWFpbi5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAogICAgICAgICBpZiAo
YXV0byogcHJvY2VzcyA9IG1fc3dhcHBlZFByb2Nlc3Nlc1BlclJlZ2lzdHJhYmxlRG9tYWluLmdl
dCh0YXJnZXRSZWdpc3RyYWJsZURvbWFpbikpIHsKLSAgICAgICAgICAgIGlmICgmcHJvY2Vzcy0+
d2Vic2l0ZURhdGFTdG9yZSgpID09IGRhdGFTdG9yZS5wdHIoKSkgeworICAgICAgICAgICAgaWYg
KHByb2Nlc3MtPndlYnNpdGVEYXRhU3RvcmUoKSA9PSBkYXRhU3RvcmUucHRyKCkpIHsKICAgICAg
ICAgICAgICAgICBMT0coUHJvY2Vzc1N3YXBwaW5nLCAiKFByb2Nlc3NTd2FwcGluZykgUmV1c2lu
ZyBhIHByZXZpb3VzbHkgY2FjaGVkIHByb2Nlc3Mgd2l0aCBwaWQgJWkgdG8gY29udGludWUgbmF2
aWdhdGlvbiB0byBVUkwgJXMiLCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCB0YXJnZXRV
Ukwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKICAgICAgICAgICAgICAgICByZXR1cm4gY29t
cGxldGlvbkhhbmRsZXIoKnByb2Nlc3MsIG51bGxwdHIsIHJlYXNvbik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCBkNzU2YTNkNjkzZjZhNDNmNzQz
ZTIwOWVkNmQwZTc1YzMzNTFkYmMxLi4zMTE4Yzg4YmRlNjJhOGJjMzI1ZmQ1MjlmZTM1OWMyYjc0
YTgyNjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAK
QEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJEb3dubG9hZFByb3h5TWFwLmgiCiAjaW5jbHVk
ZSAiTG9hZFBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uSW5mby5oIgogI2luY2x1ZGUgIk5vdGlmaWNhdGlvbk1hbmFn
ZXJNZXNzYWdlSGFuZGxlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUHJvdmlzaW9uYWxQYWdlUHJv
eHkuaCIKICNpbmNsdWRlICJSZW1vdGVXb3JrZXJUeXBlLmgiCkBAIC0yNDEsNyArMjQyLDYgQEAg
V2ViUHJvY2Vzc1Byb3h5OjpXZWJQcm9jZXNzUHJveHkoV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQ
b29sLCBXZWJzaXRlRGF0YVN0b3JlKgogI2VuZGlmCiAgICAgLCBtX2lzUmVzcG9uc2l2ZShOb09y
TWF5YmU6Ok1heWJlKQogICAgICwgbV92aXNpYmxlUGFnZUNvdW50ZXIoW3RoaXNdKFJlZkNvdW50
ZXJFdmVudCkgeyB1cGRhdGVCYWNrZ3JvdW5kUmVzcG9uc2l2ZW5lc3NUaW1lcigpOyB9KQotICAg
ICwgbV93ZWJzaXRlRGF0YVN0b3JlKHdlYnNpdGVEYXRhU3RvcmUpCiAjaWYgUExBVEZPUk0oQ09D
T0EpICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgLCBtX3VzZXJNZWRpYUNhcHR1cmVNYW5h
Z2VyUHJveHkobWFrZVVuaXF1ZTxVc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5PihtYWtlVW5p
cXVlUmVmPFVJUHJveHlGb3JDYXB0dXJlPigqdGhpcykpKQogI2VuZGlmCkBAIC0yNTksNiArMjU5
LDggQEAgV2ViUHJvY2Vzc1Byb3h5OjpXZWJQcm9jZXNzUHJveHkoV2ViUHJvY2Vzc1Bvb2wmIHBy
b2Nlc3NQb29sLCBXZWJzaXRlRGF0YVN0b3JlKgogCiAgICAgV2ViUGFzdGVib2FyZFByb3h5Ojpz
aW5nbGV0b24oKS5hZGRXZWJQcm9jZXNzUHJveHkoKnRoaXMpOwogCisgICAgaWYgKHdlYnNpdGVE
YXRhU3RvcmUpCisgICAgICAgIG1fc2Vzc2lvbklEID0gd2Vic2l0ZURhdGFTdG9yZS0+c2Vzc2lv
bklEKCk7CiAgICAgcGxhdGZvcm1Jbml0aWFsaXplKCk7CiB9CiAKQEAgLTM0NiwxMSArMzQ4LDE5
IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzZXRJc0luUHJvY2Vzc0NhY2hlKGJvb2wgdmFsdWUs
IFdpbGxTaHV0RG93biB3aWxsU2h1dERvd24pCiAgICAgfQogfQogCitXZWJzaXRlRGF0YVN0b3Jl
KiBXZWJQcm9jZXNzUHJveHk6OndlYnNpdGVEYXRhU3RvcmUoKSBjb25zdAoreworICAgIGlmICht
X3Nlc3Npb25JRCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gV2Vic2l0
ZURhdGFTdG9yZTo6ZXhpc3RpbmdEYXRhU3RvcmVGb3JTZXNzaW9uSUQoKm1fc2Vzc2lvbklEKTsK
K30KKwogdm9pZCBXZWJQcm9jZXNzUHJveHk6OnNldFdlYnNpdGVEYXRhU3RvcmUoV2Vic2l0ZURh
dGFTdG9yZSYgZGF0YVN0b3JlKQogewotICAgIEFTU0VSVCghbV93ZWJzaXRlRGF0YVN0b3JlKTsK
KyAgICBBU1NFUlQoIW1fc2Vzc2lvbklEKTsKICAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9M
T0coUHJvY2VzcywgInNldFdlYnNpdGVEYXRhU3RvcmUoKSBkYXRhU3RvcmU9JXAsIHNlc3Npb25J
RD0lIiBQUkl1NjQsICZkYXRhU3RvcmUsIGRhdGFTdG9yZS5zZXNzaW9uSUQoKS50b1VJbnQ2NCgp
KTsKLSAgICBtX3dlYnNpdGVEYXRhU3RvcmUgPSAmZGF0YVN0b3JlOworICAgIG1fc2Vzc2lvbklE
ID0gZGF0YVN0b3JlLnNlc3Npb25JRCgpOwogICAgIHVwZGF0ZVJlZ2lzdHJhdGlvbldpdGhEYXRh
U3RvcmUoKTsKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTZXRXZWJzaXRlRGF0YVN0
b3JlUGFyYW1ldGVycyhwcm9jZXNzUG9vbCgpLndlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJz
KCp0aGlzLCBkYXRhU3RvcmUpKSwgMCk7CiAKQEAgLTM2MSwxOSArMzcxLDE3IEBAIHZvaWQgV2Vi
UHJvY2Vzc1Byb3h5OjpzZXRXZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFT
dG9yZSkKIAogYm9vbCBXZWJQcm9jZXNzUHJveHk6OmlzRHVtbXlQcm9jZXNzUHJveHkoKSBjb25z
dAogewotICAgIHJldHVybiBtX3dlYnNpdGVEYXRhU3RvcmUgJiYgcHJvY2Vzc1Bvb2woKS5kdW1t
eVByb2Nlc3NQcm94eShtX3dlYnNpdGVEYXRhU3RvcmUtPnNlc3Npb25JRCgpKSA9PSB0aGlzOwor
ICAgIHJldHVybiBtX3Nlc3Npb25JRCAmJiBwcm9jZXNzUG9vbCgpLmR1bW15UHJvY2Vzc1Byb3h5
KCptX3Nlc3Npb25JRCkgPT0gdGhpczsKIH0KIAogdm9pZCBXZWJQcm9jZXNzUHJveHk6OnVwZGF0
ZVJlZ2lzdHJhdGlvbldpdGhEYXRhU3RvcmUoKQogewotICAgIGlmICghbV93ZWJzaXRlRGF0YVN0
b3JlKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgYm9vbCBzaG91bGRCZVJlZ2lzdGVyZWQg
PSBwYWdlQ291bnQoKSB8fCBwcm92aXNpb25hbFBhZ2VDb3VudCgpOwotICAgIGlmIChzaG91bGRC
ZVJlZ2lzdGVyZWQpCi0gICAgICAgIG1fd2Vic2l0ZURhdGFTdG9yZS0+cmVnaXN0ZXJQcm9jZXNz
KCp0aGlzKTsKLSAgICBlbHNlCi0gICAgICAgIG1fd2Vic2l0ZURhdGFTdG9yZS0+dW5yZWdpc3Rl
clByb2Nlc3MoKnRoaXMpOworICAgIGlmIChhdXRvKiBkYXRhU3RvcmUgPSB3ZWJzaXRlRGF0YVN0
b3JlKCkpIHsKKyAgICAgICAgaWYgKHBhZ2VDb3VudCgpIHx8IHByb3Zpc2lvbmFsUGFnZUNvdW50
KCkpCisgICAgICAgICAgICBkYXRhU3RvcmUtPnJlZ2lzdGVyUHJvY2VzcygqdGhpcyk7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIGRhdGFTdG9yZS0+dW5yZWdpc3RlclByb2Nlc3MoKnRoaXMp
OworICAgIH0KIH0KIAogdm9pZCBXZWJQcm9jZXNzUHJveHk6OmFkZFByb3Zpc2lvbmFsUGFnZVBy
b3h5KFByb3Zpc2lvbmFsUGFnZVByb3h5JiBwcm92aXNpb25hbFBhZ2UpCkBAIC01OTYsNyArNjA0
LDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmFkZEV4aXN0aW5nV2ViUGFnZShXZWJQYWdlUHJv
eHkmIHdlYlBhZ2UsIEJlZ2luc1VzaW5nRGF0YVMKICAgICBBU1NFUlQoIW1fcGFnZU1hcC5jb250
YWlucyh3ZWJQYWdlLmlkZW50aWZpZXIoKSkpOwogICAgIEFTU0VSVCghZ2xvYmFsUGFnZU1hcCgp
LmNvbnRhaW5zKHdlYlBhZ2UuaWRlbnRpZmllcigpKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoIW1f
aXNJblByb2Nlc3NDYWNoZSk7Ci0gICAgQVNTRVJUKCFtX3dlYnNpdGVEYXRhU3RvcmUgfHwgbV93
ZWJzaXRlRGF0YVN0b3JlID09ICZ3ZWJQYWdlLndlYnNpdGVEYXRhU3RvcmUoKSk7CisgICAgQVNT
RVJUKCFtX3Nlc3Npb25JRCB8fCB3ZWJzaXRlRGF0YVN0b3JlKCkgPT0gJndlYlBhZ2Uud2Vic2l0
ZURhdGFTdG9yZSgpKTsKIAogICAgIGlmIChiZWdpbnNVc2luZ0RhdGFTdG9yZSA9PSBCZWdpbnNV
c2luZ0RhdGFTdG9yZTo6WWVzKSB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fcHJvY2Vzc1Bv
b2wpOwpAQCAtODE1LDcgKzgyMywxMSBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6dXBkYXRlQmFj
a0ZvcndhcmRJdGVtKGNvbnN0IEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSYgaXRlbQogCiB2b2lk
IFdlYlByb2Nlc3NQcm94eTo6Z2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKE1lc3NhZ2VzOjpX
ZWJQcm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5
JiYgcmVwbHkpCiB7Ci0gICAgd2Vic2l0ZURhdGFTdG9yZSgpLmdldE5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbigqdGhpcywgV1RGTW92ZShyZXBseSkpOworICAgIGF1dG8qIGRhdGFTdG9yZSA9IHdl
YnNpdGVEYXRhU3RvcmUoKTsKKyAgICBpZiAoIWRhdGFTdG9yZSkKKyAgICAgICAgcmV0dXJuIHJl
cGx5KHsgfSk7CisKKyAgICBkYXRhU3RvcmUtPmdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigq
dGhpcywgV1RGTW92ZShyZXBseSkpOwogfQogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQpAQCAt
MTcwMSwxMSArMTcxMywxMiBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkU3RhcnRQcm92aXNp
b25hbExvYWRGb3JNYWluRnJhbWUoY29uc3QgVVJMJiB1cmwpCiAgICAgfQogCiAgICAgYXV0byBy
ZWdpc3RyYWJsZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHsgdXJsIH07Ci0g
ICAgaWYgKG1fcmVnaXN0cmFibGVEb21haW4gJiYgKm1fcmVnaXN0cmFibGVEb21haW4gIT0gcmVn
aXN0cmFibGVEb21haW4pIHsKKyAgICBhdXRvKiBkYXRhU3RvcmUgPSB3ZWJzaXRlRGF0YVN0b3Jl
KCk7CisgICAgaWYgKGRhdGFTdG9yZSAmJiBtX3JlZ2lzdHJhYmxlRG9tYWluICYmICptX3JlZ2lz
dHJhYmxlRG9tYWluICE9IHJlZ2lzdHJhYmxlRG9tYWluKSB7CiAgICAgICAgIGlmIChpc1J1bm5p
bmdTZXJ2aWNlV29ya2VycygpKQotICAgICAgICAgICAgd2Vic2l0ZURhdGFTdG9yZSgpLm5ldHdv
cmtQcm9jZXNzKCkudGVybWluYXRlUmVtb3RlV29ya2VyQ29udGV4dENvbm5lY3Rpb25XaGVuUG9z
c2libGUoUmVtb3RlV29ya2VyVHlwZTo6U2VydmljZVdvcmtlciwgd2Vic2l0ZURhdGFTdG9yZSgp
LnNlc3Npb25JRCgpLCAqbV9yZWdpc3RyYWJsZURvbWFpbiwgY29yZVByb2Nlc3NJZGVudGlmaWVy
KCkpOworICAgICAgICAgICAgZGF0YVN0b3JlLT5uZXR3b3JrUHJvY2VzcygpLnRlcm1pbmF0ZVJl
bW90ZVdvcmtlckNvbnRleHRDb25uZWN0aW9uV2hlblBvc3NpYmxlKFJlbW90ZVdvcmtlclR5cGU6
OlNlcnZpY2VXb3JrZXIsIGRhdGFTdG9yZS0+c2Vzc2lvbklEKCksICptX3JlZ2lzdHJhYmxlRG9t
YWluLCBjb3JlUHJvY2Vzc0lkZW50aWZpZXIoKSk7CiAgICAgICAgIGlmIChpc1J1bm5pbmdTaGFy
ZWRXb3JrZXJzKCkpCi0gICAgICAgICAgICB3ZWJzaXRlRGF0YVN0b3JlKCkubmV0d29ya1Byb2Nl
c3MoKS50ZXJtaW5hdGVSZW1vdGVXb3JrZXJDb250ZXh0Q29ubmVjdGlvbldoZW5Qb3NzaWJsZShS
ZW1vdGVXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIsIHdlYnNpdGVEYXRhU3RvcmUoKS5zZXNzaW9u
SUQoKSwgKm1fcmVnaXN0cmFibGVEb21haW4sIGNvcmVQcm9jZXNzSWRlbnRpZmllcigpKTsKKyAg
ICAgICAgICAgIGRhdGFTdG9yZS0+bmV0d29ya1Byb2Nlc3MoKS50ZXJtaW5hdGVSZW1vdGVXb3Jr
ZXJDb250ZXh0Q29ubmVjdGlvbldoZW5Qb3NzaWJsZShSZW1vdGVXb3JrZXJUeXBlOjpTaGFyZWRX
b3JrZXIsIGRhdGFTdG9yZS0+c2Vzc2lvbklEKCksICptX3JlZ2lzdHJhYmxlRG9tYWluLCBjb3Jl
UHJvY2Vzc0lkZW50aWZpZXIoKSk7CiAKICAgICAgICAgLy8gTnVsbCBvdXQgcmVnaXN0cmFibGUg
ZG9tYWluIHNpbmNlIHRoaXMgcHJvY2VzcyBoYXMgbm93IGJlZW4gdXNlZCBmb3Igc2V2ZXJhbCBk
b21haW5zLgogICAgICAgICBtX3JlZ2lzdHJhYmxlRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4geyB9OwpAQCAtMTc1Miw4ICsxNzY1LDggQEAgV2ViUHJvY2Vzc1Bvb2wmIFdlYlBy
b2Nlc3NQcm94eTo6cHJvY2Vzc1Bvb2woKSBjb25zdAogCiBQQUw6OlNlc3Npb25JRCBXZWJQcm9j
ZXNzUHJveHk6OnNlc3Npb25JRCgpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKG1fd2Vic2l0ZURhdGFT
dG9yZSk7Ci0gICAgcmV0dXJuIG1fd2Vic2l0ZURhdGFTdG9yZS0+c2Vzc2lvbklEKCk7CisgICAg
QVNTRVJUKG1fc2Vzc2lvbklEKTsKKyAgICByZXR1cm4gKm1fc2Vzc2lvbklEOwogfQogCiB2b2lk
IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIoU3BlZWNoUmVj
b2duaXRpb25TZXJ2ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5oCmluZGV4IDRjMjJkYWIxODBlMDgwNzU0MGY2MDJmNGU3ZTE4
MDdiYTI4MTZkOWEuLjc2Mjc4NTMxOTY0OTgxYzIwM2ViNDI5MDdjNTUzZDdjNTNkYjMyZDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCkBAIC0xNjcsNyArMTY3
LDcgQEAgcHVibGljOgogICAgIHZvaWQgZW5hYmxlUmVtb3RlV29ya2VycyhSZW1vdGVXb3JrZXJU
eXBlLCBjb25zdCBVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyJik7CiAgICAgdm9pZCBk
aXNhYmxlUmVtb3RlV29ya2VycyhSZW1vdGVXb3JrZXJUeXBlKTsKIAotICAgIFdlYnNpdGVEYXRh
U3RvcmUmIHdlYnNpdGVEYXRhU3RvcmUoKSBjb25zdCB7IEFTU0VSVChtX3dlYnNpdGVEYXRhU3Rv
cmUpOyByZXR1cm4gKm1fd2Vic2l0ZURhdGFTdG9yZTsgfQorICAgIFdlYnNpdGVEYXRhU3RvcmUq
IHdlYnNpdGVEYXRhU3RvcmUoKSBjb25zdDsKICAgICB2b2lkIHNldFdlYnNpdGVEYXRhU3RvcmUo
V2Vic2l0ZURhdGFTdG9yZSYpOwogICAgIAogICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgp
IGNvbnN0OwpAQCAtNjE3LDggKzYxNyw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCB3ZWJQcm9jZXNzSXNSZXNwb25zaXZlKT4+IG1faXNSZXNwb25z
aXZlQ2FsbGJhY2tzOwogCiAgICAgVmlzaWJsZVdlYlBhZ2VDb3VudGVyIG1fdmlzaWJsZVBhZ2VD
b3VudGVyOwotCi0gICAgUmVmUHRyPFdlYnNpdGVEYXRhU3RvcmU+IG1fd2Vic2l0ZURhdGFTdG9y
ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFBBTDo6U2Vzc2lvbklEPiBtX3Nlc3Npb25JRDsKIAogICAg
IGJvb2wgbV9pc1VuZGVyTWVtb3J5UHJlc3N1cmUgeyBmYWxzZSB9OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>459509</attachid>
            <date>2022-05-17 11:18:41 -0700</date>
            <delta_ts>2022-05-17 12:54:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238892-20220517111840.patch</filename>
            <type>text/plain</type>
            <size>29141</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">RnJvbSA2ZTQ1NTNiNDk0ZTEzM2M1NDNlNzY5MWMzYWU4Mzk5YTQ2OTg2MzZjIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBTaWh1aSBMaXUgPHNpaHVpX2xpdUBhcHBsZS5jb20+CkRhdGU6
IFR1ZSwgMTcgTWF5IDIwMjIgMTE6MTQ6NTAgLTA3MDAKU3ViamVjdDogW1BBVENIXSBXZWJQcm9j
ZXNzUHJveHkgc2hvdWxkIG5vdCBob2xkIFdlYnNpdGVEYXRhU3RvcmUgYWxpdmUgd2hlbgogdGhl
cmUgaXMgbm8gcGFnZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4
ODkyCiA8cmRhcjovL3Byb2JsZW0vOTE3MTU1MTc+CgpSZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0
LgoKV2ViUHJvY2Vzc1Byb3h5IGNhbiBvdXRsaXZlIFdlYlBhZ2VQcm94eSwgYW5kIGJlY2F1c2Ug
V2ViUHJvY2Vzc1Byb3h5IGhvbGRzIHN0cm9uZyByZWZlcmVuY2UgdG8gV2Vic2l0ZURhdGFTdG9y
ZSwKV2Vic2l0ZURhdGFTdG9yZSB3aWxsIGJlIGtlcHQgYWxpdmUgZXZlbiB3aGVuIGl0J3Mgbm90
IHVzZWQgYnkgYW55IHBhZ2UgYW5kIHdpbGwgbm90IGJlIHVzZWQgYnkgYW55IHBhZ2UuCgoqIFVJ
UHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmNwcDoKKFdlYktpdDo6R1BVUHJvY2Vzc1Byb3h5
OjpjcmVhdGVHUFVQcm9jZXNzQ29ubmVjdGlvbik6CiogVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFn
ZVByb3h5LmNwcDoKKFdlYktpdDo6UHJvdmlzaW9uYWxQYWdlUHJveHk6OlByb3Zpc2lvbmFsUGFn
ZVByb3h5KToKKFdlYktpdDo6UHJvdmlzaW9uYWxQYWdlUHJveHk6On5Qcm92aXNpb25hbFBhZ2VQ
cm94eSk6CiogVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5Lmg6CiogVUlQcm9jZXNzL1N1
c3BlbmRlZFBhZ2VQcm94eS5jcHA6CihXZWJLaXQ6OlN1c3BlbmRlZFBhZ2VQcm94eTo6ZmluZFJl
dXNhYmxlU3VzcGVuZGVkUGFnZVByb2Nlc3MpOgoqIFVJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZENh
Y2hlLmNwcDoKKFdlYktpdDo6V2ViQmFja0ZvcndhcmRDYWNoZTo6cmVtb3ZlRW50cmllc0ZvclNl
c3Npb24pOgoqIFVJUHJvY2Vzcy9XZWJMb2NrUmVnaXN0cnlQcm94eS5jcHA6CihXZWJLaXQ6Oldl
YkxvY2tSZWdpc3RyeVByb3h5OjpyZXF1ZXN0TG9jayk6CihXZWJLaXQ6OldlYkxvY2tSZWdpc3Ry
eVByb3h5OjpyZWxlYXNlTG9jayk6CihXZWJLaXQ6OldlYkxvY2tSZWdpc3RyeVByb3h5OjphYm9y
dExvY2tSZXF1ZXN0KToKKFdlYktpdDo6V2ViTG9ja1JlZ2lzdHJ5UHJveHk6OnNuYXBzaG90KToK
KFdlYktpdDo6V2ViTG9ja1JlZ2lzdHJ5UHJveHk6OmNsaWVudElzR29pbmdBd2F5KToKKFdlYktp
dDo6V2ViTG9ja1JlZ2lzdHJ5UHJveHk6OnByb2Nlc3NEaWRFeGl0KToKKiBVSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcDoKKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpzd2FwVG9Qcm92aXNpb25hbFBh
Z2UpOgooV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNvbW1pdFByb3Zpc2lvbmFsUGFnZSk6CiogVUlQ
cm9jZXNzL1dlYlByb2Nlc3NDYWNoZS5jcHA6CihXZWJLaXQ6OldlYlByb2Nlc3NDYWNoZTo6Y2Fu
Q2FjaGVQcm9jZXNzIGNvbnN0KToKKFdlYktpdDo6V2ViUHJvY2Vzc0NhY2hlOjp0YWtlUHJvY2Vz
cyk6CihXZWJLaXQ6OldlYlByb2Nlc3NDYWNoZTo6Y2xlYXJBbGxQcm9jZXNzZXNGb3JTZXNzaW9u
KToKKFdlYktpdDo6V2ViUHJvY2Vzc0NhY2hlOjpDYWNoZWRQcm9jZXNzOjpDYWNoZWRQcm9jZXNz
KToKKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgooV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bDo6ZXN0YWJsaXNoUmVtb3RlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNz
KToKKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NGb3JSZWdpc3RyYWJsZURvbWFpbik6
CihXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpjcmVhdGVXZWJQYWdlKToKKFdlYktpdDo6V2ViUHJv
Y2Vzc1Bvb2w6OnByb2Nlc3NGb3JOYXZpZ2F0aW9uSW50ZXJuYWwpOgoqIFVJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkuY3BwOgooV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OldlYlByb2Nlc3NQcm94
eSk6CihXZWJLaXQ6Om1fd2ViTG9ja1JlZ2lzdHJ5KToKKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5
Ojp3ZWJzaXRlRGF0YVN0b3JlIGNvbnN0KToKKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpzZXRX
ZWJzaXRlRGF0YVN0b3JlKToKKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojppc0R1bW15UHJvY2Vz
c1Byb3h5IGNvbnN0KToKKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojp1cGRhdGVSZWdpc3RyYXRp
b25XaXRoRGF0YVN0b3JlKToKKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjphZGRFeGlzdGluZ1dl
YlBhZ2UpOgooV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmdldE5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbik6CihXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRG
b3JNYWluRnJhbWUpOgooV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnNlc3Npb25JRCBjb25zdCk6
CiogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oOgooV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6
OndlYnNpdGVEYXRhU3RvcmUgY29uc3QpOiBEZWxldGVkLgotLS0KIC4uLi9XZWJLaXQvVUlQcm9j
ZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuY3BwICB8ICA0ICstCiAuLi4vV2ViS2l0L1VJUHJvY2Vz
cy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAgfCAxMSArKy0tCiAuLi4vV2ViS2l0L1VJUHJvY2Vz
cy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oICAgfCAgMyArKwogLi4uL1dlYktpdC9VSVByb2Nlc3Mv
U3VzcGVuZGVkUGFnZVByb3h5LmNwcCAgIHwgIDIgKy0KIC4uLi9XZWJLaXQvVUlQcm9jZXNzL1dl
YkJhY2tGb3J3YXJkQ2FjaGUuY3BwICB8ICAzICstCiAuLi4vV2ViS2l0L1VJUHJvY2Vzcy9XZWJM
b2NrUmVnaXN0cnlQcm94eS5jcHAgfCAzOCArKysrKysrKysrKy0tLQogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCAgICAgIHwgIDUgKy0KIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NDYWNoZS5jcHAgICB8IDE0ICsrLS0tCiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgICAgfCAxMCArKy0tCiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwICAgfCA1MSArKysrKysrKysrKystLS0tLS0tCiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaCAgICAgfCAgNSArLQogMTEg
ZmlsZXMgY2hhbmdlZCwgOTcgaW5zZXJ0aW9ucygrKSwgNDkgZGVsZXRpb25zKC0pCgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmNwcAppbmRleCBjOGEx
YzdkMjYzMDQuLjQ3OGZmNmJiN2FkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvR1BVL0dQVVByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
R1BVL0dQVVByb2Nlc3NQcm94eS5jcHAKQEAgLTM3MCw3ICszNzAsOSBAQCB2b2lkIEdQVVByb2Nl
c3NQcm94eTo6cHJvY2Vzc1dpbGxTaHV0RG93bihJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24p
CiAKIHZvaWQgR1BVUHJvY2Vzc1Byb3h5OjpjcmVhdGVHUFVQcm9jZXNzQ29ubmVjdGlvbihXZWJQ
cm9jZXNzUHJveHkmIHdlYlByb2Nlc3NQcm94eSwgSVBDOjpBdHRhY2htZW50JiYgY29ubmVjdGlv
bklkZW50aWZpZXIsIEdQVVByb2Nlc3NDb25uZWN0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMp
CiB7Ci0gICAgYWRkU2Vzc2lvbih3ZWJQcm9jZXNzUHJveHkud2Vic2l0ZURhdGFTdG9yZSgpKTsK
KyAgICBpZiAoYXV0byogc3RvcmUgPSB3ZWJQcm9jZXNzUHJveHkud2Vic2l0ZURhdGFTdG9yZSgp
KQorICAgICAgICBhZGRTZXNzaW9uKCpzdG9yZSk7CisKICAgICBSRUxFQVNFX0xPRyhQcm9jZXNz
U3VzcGVuc2lvbiwgIiVwIC0gR1BVUHJvY2Vzc1Byb3h5IGlzIHRha2luZyBhIGJhY2tncm91bmQg
YXNzZXJ0aW9uIGJlY2F1c2UgYSB3ZWIgcHJvY2VzcyBpcyByZXF1ZXN0aW5nIGEgY29ubmVjdGlv
biIsIHRoaXMpOwogICAgIHN0YXJ0UmVzcG9uc2l2ZW5lc3NUaW1lcihVc2VMYXp5U3RvcDo6Tm8p
OwogICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6R1BVUHJvY2Vzczo6Q3JlYXRlR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyB7IHdlYlByb2Nlc3NQcm94eS5jb3JlUHJvY2Vzc0lkZW50
aWZpZXIoKSwgd2ViUHJvY2Vzc1Byb3h5LnNlc3Npb25JRCgpLCBjb25uZWN0aW9uSWRlbnRpZmll
ciwgcGFyYW1ldGVycyB9LCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0oKSBt
dXRhYmxlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFs
UGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVBy
b3h5LmNwcAppbmRleCBlZDVkZmRkYTQ3OGQuLmY4NWUyYTY1M2QwZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcApAQCAtODQsOCArODQs
MTAgQEAgUHJvdmlzaW9uYWxQYWdlUHJveHk6OlByb3Zpc2lvbmFsUGFnZVByb3h5KFdlYlBhZ2VQ
cm94eSYgcGFnZSwgUmVmPFdlYlByb2Nlc3NQcm8KICAgICBtX3Byb2Nlc3MtPmFkZE1lc3NhZ2VS
ZWNlaXZlcihNZXNzYWdlczo6V2ViUGFnZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1f
d2ViUGFnZUlELCAqdGhpcyk7CiAgICAgbV9wcm9jZXNzLT5hZGRQcm92aXNpb25hbFBhZ2VQcm94
eSgqdGhpcyk7CiAKLSAgICBpZiAoJm1fcHJvY2Vzcy0+d2Vic2l0ZURhdGFTdG9yZSgpICE9ICZt
X3BhZ2Uud2Vic2l0ZURhdGFTdG9yZSgpKQotICAgICAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29s
KCkucGFnZUJlZ2luVXNpbmdXZWJzaXRlRGF0YVN0b3JlKG1fcGFnZS5pZGVudGlmaWVyKCksIG1f
cHJvY2Vzcy0+d2Vic2l0ZURhdGFTdG9yZSgpKTsKKyAgICBtX3dlYnNpdGVEYXRhU3RvcmUgPSBt
X3Byb2Nlc3MtPndlYnNpdGVEYXRhU3RvcmUoKTsKKyAgICBBU1NFUlQobV93ZWJzaXRlRGF0YVN0
b3JlKTsKKyAgICBpZiAobV93ZWJzaXRlRGF0YVN0b3JlICYmIG1fd2Vic2l0ZURhdGFTdG9yZSAh
PSAmbV9wYWdlLndlYnNpdGVEYXRhU3RvcmUoKSkKKyAgICAgICAgbV9wcm9jZXNzLT5wcm9jZXNz
UG9vbCgpLnBhZ2VCZWdpblVzaW5nV2Vic2l0ZURhdGFTdG9yZShtX3BhZ2UuaWRlbnRpZmllcigp
LCAqbV93ZWJzaXRlRGF0YVN0b3JlKTsKIAogICAgIC8vIElmIHdlIGFyZSByZWF0dGFjaGluZyB0
byBhIFN1c3BlbmRlZFBhZ2UsIHRoZW4gdGhlIFdlYlByb2Nlc3MnIFdlYlBhZ2UgYWxyZWFkeSBl
eGlzdHMgYW5kCiAgICAgLy8gV2ViUGFnZVByb3h5OjpkaWRDcmVhdGVNYWluRnJhbWUoKSB3aWxs
IG5vdCBiZSBjYWxsZWQgdG8gaW5pdGlhbGl6ZSBtX21haW5GcmFtZS4gSW4gc3VjaApAQCAtMTEz
LDggKzExNSw5IEBAIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojp+UHJvdmlzaW9uYWxQYWdlUHJveHko
KQogICAgIGlmICghbV93YXNDb21taXR0ZWQpIHsKICAgICAgICAgbV9wYWdlLmluc3BlY3RvckNv
bnRyb2xsZXIoKS53aWxsRGVzdHJveVByb3Zpc2lvbmFsUGFnZSgqdGhpcyk7CiAKLSAgICAgICAg
aWYgKCZtX3Byb2Nlc3MtPndlYnNpdGVEYXRhU3RvcmUoKSAhPSAmbV9wYWdlLndlYnNpdGVEYXRh
U3RvcmUoKSkKLSAgICAgICAgICAgIG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5wYWdlRW5kVXNp
bmdXZWJzaXRlRGF0YVN0b3JlKG1fcGFnZS5pZGVudGlmaWVyKCksIG1fcHJvY2Vzcy0+d2Vic2l0
ZURhdGFTdG9yZSgpKTsKKyAgICAgICAgYXV0byBkYXRhU3RvcmUgPSBtX3Byb2Nlc3MtPndlYnNp
dGVEYXRhU3RvcmUoKTsKKyAgICAgICAgaWYgKGRhdGFTdG9yZSAmJiBkYXRhU3RvcmUhPSAmbV9w
YWdlLndlYnNpdGVEYXRhU3RvcmUoKSkKKyAgICAgICAgICAgIG1fcHJvY2Vzcy0+cHJvY2Vzc1Bv
b2woKS5wYWdlRW5kVXNpbmdXZWJzaXRlRGF0YVN0b3JlKG1fcGFnZS5pZGVudGlmaWVyKCksICpk
YXRhU3RvcmUpOwogCiAgICAgICAgIG1fcHJvY2Vzcy0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV93ZWJQYWdlSUQp
OwogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDbG9zZSgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCmluZGV4IDIyZDJiYjEyY2E2
YS4uM2Y1MTliMDZkMzEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92
aXNpb25hbFBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lv
bmFsUGFnZVByb3h5LmgKQEAgLTYxLDYgKzYxLDcgQEAgY2xhc3MgVXNlckRhdGE7CiBjbGFzcyBX
ZWJGcmFtZVByb3h5OwogY2xhc3MgV2ViUGFnZVByb3h5OwogY2xhc3MgV2ViUHJvY2Vzc1Byb3h5
OworY2xhc3MgV2Vic2l0ZURhdGFTdG9yZTsKIHN0cnVjdCBGcmFtZUluZm9EYXRhOwogc3RydWN0
IE5hdmlnYXRpb25BY3Rpb25EYXRhOwogc3RydWN0IFVSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzOwpA
QCAtMTYzLDYgKzE2NCw4IEBAIHByaXZhdGU6CiAgICAgV2ViUGFnZVByb3h5JiBtX3BhZ2U7CiAg
ICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV93ZWJQYWdlSUQ7CiAgICAgUmVmPFdlYlByb2Nl
c3NQcm94eT4gbV9wcm9jZXNzOworICAgIC8vIEtlZXAgV2Vic2l0ZURhdGFTdG9yZSBhbGl2ZSBm
b3IgcHJvdmlzaW9uYWwgcGFnZSBsb2FkLgorICAgIFJlZlB0cjxXZWJzaXRlRGF0YVN0b3JlPiBt
X3dlYnNpdGVEYXRhU3RvcmU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPERyYXdpbmdBcmVhUHJveHk+
IG1fZHJhd2luZ0FyZWE7CiAgICAgUmVmUHRyPFdlYkZyYW1lUHJveHk+IG1fbWFpbkZyYW1lOwog
ICAgIHVpbnQ2NF90IG1fbmF2aWdhdGlvbklEOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAKaW5kZXggY2NiZDYxMjg3ODUwLi42MzIyYWU1ZWRmNTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcApA
QCAtNTMsNyArNTMsNyBAQCBSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiBTdXNwZW5kZWRQYWdlUHJv
eHk6OmZpbmRSZXVzYWJsZVN1c3BlbmRlZFBhZ2VQcm9jZXNzKFdlYgogewogICAgIGZvciAoYXV0
byogc3VzcGVuZGVkUGFnZSA6IGFsbFN1c3BlbmRlZFBhZ2VzKCkpIHsKICAgICAgICAgYXV0byYg
cHJvY2VzcyA9IHN1c3BlbmRlZFBhZ2UtPnByb2Nlc3MoKTsKLSAgICAgICAgaWYgKCZwcm9jZXNz
LnByb2Nlc3NQb29sKCkgPT0gJnByb2Nlc3NQb29sICYmIHByb2Nlc3MucmVnaXN0cmFibGVEb21h
aW4oKSA9PSByZWdpc3RyYWJsZURvbWFpbiAmJiAmcHJvY2Vzcy53ZWJzaXRlRGF0YVN0b3JlKCkg
PT0gJmRhdGFTdG9yZSAmJiBwcm9jZXNzLmNyb3NzT3JpZ2luTW9kZSgpICE9IENyb3NzT3JpZ2lu
TW9kZTo6SXNvbGF0ZWQgJiYgcHJvY2Vzcy5jYXB0aXZlUG9ydGFsTW9kZSgpID09IGNhcHRpdmVQ
b3J0YWxNb2RlKQorICAgICAgICBpZiAoJnByb2Nlc3MucHJvY2Vzc1Bvb2woKSA9PSAmcHJvY2Vz
c1Bvb2wgJiYgcHJvY2Vzcy5yZWdpc3RyYWJsZURvbWFpbigpID09IHJlZ2lzdHJhYmxlRG9tYWlu
ICYmIHByb2Nlc3Mud2Vic2l0ZURhdGFTdG9yZSgpID09ICZkYXRhU3RvcmUgJiYgcHJvY2Vzcy5j
cm9zc09yaWdpbk1vZGUoKSAhPSBDcm9zc09yaWdpbk1vZGU6Oklzb2xhdGVkICYmIHByb2Nlc3Mu
Y2FwdGl2ZVBvcnRhbE1vZGUoKSA9PSBjYXB0aXZlUG9ydGFsTW9kZSkKICAgICAgICAgICAgIHJl
dHVybiAmcHJvY2VzczsKICAgICB9CiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZENhY2hlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkQ2FjaGUuY3BwCmluZGV4IDY0YTFhOWY2OWM2
Yy4uMTg3MzJmZDQ1ZDRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJC
YWNrRm9yd2FyZENhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNr
Rm9yd2FyZENhY2hlLmNwcApAQCAtMTM0LDcgKzEzNCw4IEBAIHZvaWQgV2ViQmFja0ZvcndhcmRD
YWNoZTo6cmVtb3ZlRW50cmllc0ZvclByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzKQog
dm9pZCBXZWJCYWNrRm9yd2FyZENhY2hlOjpyZW1vdmVFbnRyaWVzRm9yU2Vzc2lvbihQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQpCiB7CiAgICAgcmVtb3ZlRW50cmllc01hdGNoaW5nKFtzZXNzaW9u
SURdKGF1dG8mIGl0ZW0pIHsKLSAgICAgICAgcmV0dXJuIGl0ZW0uYmFja0ZvcndhcmRDYWNoZUVu
dHJ5KCktPnByb2Nlc3MoKS53ZWJzaXRlRGF0YVN0b3JlKCkuc2Vzc2lvbklEKCkgPT0gc2Vzc2lv
bklEOworICAgICAgICBhdXRvKiBkYXRhU3RvcmUgPSBpdGVtLmJhY2tGb3J3YXJkQ2FjaGVFbnRy
eSgpLT5wcm9jZXNzKCkud2Vic2l0ZURhdGFTdG9yZSgpOworICAgICAgICByZXR1cm4gZGF0YVN0
b3JlICYmIGRhdGFTdG9yZS0+c2Vzc2lvbklEKCkgPT0gc2Vzc2lvbklEOwogICAgIH0pOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJMb2NrUmVnaXN0cnlQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJMb2NrUmVnaXN0cnlQcm94eS5jcHAK
aW5kZXggMWMxNDIxYzY1MmMyLi43OTliYzI4MDE5MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkxvY2tSZWdpc3RyeVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJMb2NrUmVnaXN0cnlQcm94eS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNp
bmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgi
CiAjaW5jbHVkZSA8V2ViQ29yZS9XZWJMb2NrSWRlbnRpZmllci5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvV2ViTG9ja01hbmFnZXJTbmFwc2hvdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvV2ViTG9ja1Jl
Z2lzdHJ5Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTUsNyArNTYsMTMgQEAgdm9pZCBX
ZWJMb2NrUmVnaXN0cnlQcm94eTo6cmVxdWVzdExvY2soV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYg
Y2xpZW50T3JpZ2luLCBXZWIKICAgICBNRVNTQUdFX0NIRUNLKGNsaWVudElELnByb2Nlc3NJZGVu
dGlmaWVyKCkgPT0gbV9wcm9jZXNzLmNvcmVQcm9jZXNzSWRlbnRpZmllcigpKTsKICAgICBtX2hh
c0V2ZXJSZXF1ZXN0ZWRMb2NrcyA9IHRydWU7CiAKLSAgICBtX3Byb2Nlc3Mud2Vic2l0ZURhdGFT
dG9yZSgpLndlYkxvY2tSZWdpc3RyeSgpLnJlcXVlc3RMb2NrKG1fcHJvY2Vzcy5zZXNzaW9uSUQo
KSwgV1RGTW92ZShjbGllbnRPcmlnaW4pLCBsb2NrSWRlbnRpZmllciwgY2xpZW50SUQsIFdURk1v
dmUobmFtZSksIGxvY2tNb2RlLCBzdGVhbCwgaWZBdmFpbGFibGUsIFt3ZWFrVGhpcyA9IFdlYWtQ
dHIgeyAqdGhpcyB9LCBsb2NrSWRlbnRpZmllciwgY2xpZW50SURdKGJvb2wgc3VjY2Vzcykgewor
ICAgIGF1dG8qIGRhdGFTdG9yZSA9IG1fcHJvY2Vzcy53ZWJzaXRlRGF0YVN0b3JlKCk7CisgICAg
aWYgKCFkYXRhU3RvcmUpIHsKKyAgICAgICAgbV9wcm9jZXNzLnNlbmQoTWVzc2FnZXM6OlJlbW90
ZVdlYkxvY2tSZWdpc3RyeTo6RGlkQ29tcGxldGVMb2NrUmVxdWVzdChsb2NrSWRlbnRpZmllciwg
Y2xpZW50SUQsIGZhbHNlKSwgMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBkYXRh
U3RvcmUtPndlYkxvY2tSZWdpc3RyeSgpLnJlcXVlc3RMb2NrKG1fcHJvY2Vzcy5zZXNzaW9uSUQo
KSwgV1RGTW92ZShjbGllbnRPcmlnaW4pLCBsb2NrSWRlbnRpZmllciwgY2xpZW50SUQsIFdURk1v
dmUobmFtZSksIGxvY2tNb2RlLCBzdGVhbCwgaWZBdmFpbGFibGUsIFt3ZWFrVGhpcyA9IFdlYWtQ
dHIgeyAqdGhpcyB9LCBsb2NrSWRlbnRpZmllciwgY2xpZW50SURdKGJvb2wgc3VjY2Vzcykgewog
ICAgICAgICBpZiAod2Vha1RoaXMpCiAgICAgICAgICAgICB3ZWFrVGhpcy0+bV9wcm9jZXNzLnNl
bmQoTWVzc2FnZXM6OlJlbW90ZVdlYkxvY2tSZWdpc3RyeTo6RGlkQ29tcGxldGVMb2NrUmVxdWVz
dChsb2NrSWRlbnRpZmllciwgY2xpZW50SUQsIHN1Y2Nlc3MpLCAwKTsKICAgICB9LCBbd2Vha1Ro
aXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgbG9ja0lkZW50aWZpZXIsIGNsaWVudElEXSB7CkBAIC02
OCwzMSArNzUsNDggQEAgdm9pZCBXZWJMb2NrUmVnaXN0cnlQcm94eTo6cmVsZWFzZUxvY2soV2Vi
Q29yZTo6Q2xpZW50T3JpZ2luJiYgY2xpZW50T3JpZ2luLCBXZWIKIHsKICAgICBNRVNTQUdFX0NI
RUNLKGxvY2tJZGVudGlmaWVyLnByb2Nlc3NJZGVudGlmaWVyKCkgPT0gbV9wcm9jZXNzLmNvcmVQ
cm9jZXNzSWRlbnRpZmllcigpKTsKICAgICBNRVNTQUdFX0NIRUNLKGNsaWVudElELnByb2Nlc3NJ
ZGVudGlmaWVyKCkgPT0gbV9wcm9jZXNzLmNvcmVQcm9jZXNzSWRlbnRpZmllcigpKTsKLSAgICBt
X3Byb2Nlc3Mud2Vic2l0ZURhdGFTdG9yZSgpLndlYkxvY2tSZWdpc3RyeSgpLnJlbGVhc2VMb2Nr
KG1fcHJvY2Vzcy5zZXNzaW9uSUQoKSwgV1RGTW92ZShjbGllbnRPcmlnaW4pLCBsb2NrSWRlbnRp
ZmllciwgY2xpZW50SUQsIFdURk1vdmUobmFtZSkpOworICAgIGlmIChhdXRvKiBkYXRhU3RvcmUg
PSBtX3Byb2Nlc3Mud2Vic2l0ZURhdGFTdG9yZSgpKQorICAgICAgICBkYXRhU3RvcmUtPndlYkxv
Y2tSZWdpc3RyeSgpLnJlbGVhc2VMb2NrKG1fcHJvY2Vzcy5zZXNzaW9uSUQoKSwgV1RGTW92ZShj
bGllbnRPcmlnaW4pLCBsb2NrSWRlbnRpZmllciwgY2xpZW50SUQsIFdURk1vdmUobmFtZSkpOwog
fQogCiB2b2lkIFdlYkxvY2tSZWdpc3RyeVByb3h5OjphYm9ydExvY2tSZXF1ZXN0KFdlYkNvcmU6
OkNsaWVudE9yaWdpbiYmIGNsaWVudE9yaWdpbiwgV2ViQ29yZTo6V2ViTG9ja0lkZW50aWZpZXIg
bG9ja0lkZW50aWZpZXIsIFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVy
IGNsaWVudElELCBTdHJpbmcmJiBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIE1FU1NBR0VfQ0hFQ0sobG9ja0lkZW50aWZpZXIu
cHJvY2Vzc0lkZW50aWZpZXIoKSA9PSBtX3Byb2Nlc3MuY29yZVByb2Nlc3NJZGVudGlmaWVyKCkp
OwogICAgIE1FU1NBR0VfQ0hFQ0soY2xpZW50SUQucHJvY2Vzc0lkZW50aWZpZXIoKSA9PSBtX3By
b2Nlc3MuY29yZVByb2Nlc3NJZGVudGlmaWVyKCkpOwotICAgIG1fcHJvY2Vzcy53ZWJzaXRlRGF0
YVN0b3JlKCkud2ViTG9ja1JlZ2lzdHJ5KCkuYWJvcnRMb2NrUmVxdWVzdChtX3Byb2Nlc3Muc2Vz
c2lvbklEKCksIFdURk1vdmUoY2xpZW50T3JpZ2luKSwgbG9ja0lkZW50aWZpZXIsIGNsaWVudElE
LCBXVEZNb3ZlKG5hbWUpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgYXV0byog
ZGF0YVN0b3JlID0gbV9wcm9jZXNzLndlYnNpdGVEYXRhU3RvcmUoKTsKKyAgICBpZiAoIWRhdGFT
dG9yZSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBkYXRhU3RvcmUtPndlYkxvY2tSZWdpc3RyeSgpLmFib3J0TG9ja1Jl
cXVlc3QobV9wcm9jZXNzLnNlc3Npb25JRCgpLCBXVEZNb3ZlKGNsaWVudE9yaWdpbiksIGxvY2tJ
ZGVudGlmaWVyLCBjbGllbnRJRCwgV1RGTW92ZShuYW1lKSwgV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOwogfQogCiB2b2lkIFdlYkxvY2tSZWdpc3RyeVByb3h5OjpzbmFwc2hvdChXZWJDb3Jl
OjpDbGllbnRPcmlnaW4mJiBjbGllbnRPcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2Vi
Q29yZTo6V2ViTG9ja01hbmFnZXJTbmFwc2hvdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
LSAgICBtX3Byb2Nlc3Mud2Vic2l0ZURhdGFTdG9yZSgpLndlYkxvY2tSZWdpc3RyeSgpLnNuYXBz
aG90KG1fcHJvY2Vzcy5zZXNzaW9uSUQoKSwgV1RGTW92ZShjbGllbnRPcmlnaW4pLCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgYXV0byogZGF0YVN0b3JlID0gbV9wcm9jZXNzLndl
YnNpdGVEYXRhU3RvcmUoKTsKKyAgICBpZiAoIWRhdGFTdG9yZSkgeworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihXZWJDb3JlOjpXZWJMb2NrTWFuYWdlclNuYXBzaG90IHsgfSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBkYXRhU3RvcmUtPndlYkxvY2tSZWdpc3RyeSgpLnNuYXBz
aG90KG1fcHJvY2Vzcy5zZXNzaW9uSUQoKSwgV1RGTW92ZShjbGllbnRPcmlnaW4pLCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgV2ViTG9ja1JlZ2lzdHJ5UHJveHk6OmNs
aWVudElzR29pbmdBd2F5KFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmIGNsaWVudE9yaWdpbiwgV2Vi
Q29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIgY2xpZW50SUQpCiB7CiAgICAg
TUVTU0FHRV9DSEVDSyhjbGllbnRJRC5wcm9jZXNzSWRlbnRpZmllcigpID09IG1fcHJvY2Vzcy5j
b3JlUHJvY2Vzc0lkZW50aWZpZXIoKSk7Ci0gICAgbV9wcm9jZXNzLndlYnNpdGVEYXRhU3RvcmUo
KS53ZWJMb2NrUmVnaXN0cnkoKS5jbGllbnRJc0dvaW5nQXdheShtX3Byb2Nlc3Muc2Vzc2lvbklE
KCksIFdURk1vdmUoY2xpZW50T3JpZ2luKSwgY2xpZW50SUQpOworICAgIGlmIChhdXRvKiBkYXRh
U3RvcmUgPSBXZWJzaXRlRGF0YVN0b3JlOjpleGlzdGluZ0RhdGFTdG9yZUZvclNlc3Npb25JRCht
X3Byb2Nlc3Muc2Vzc2lvbklEKCkpKQorICAgICAgICBkYXRhU3RvcmUtPndlYkxvY2tSZWdpc3Ry
eSgpLmNsaWVudElzR29pbmdBd2F5KG1fcHJvY2Vzcy5zZXNzaW9uSUQoKSwgV1RGTW92ZShjbGll
bnRPcmlnaW4pLCBjbGllbnRJRCk7CiB9CiAKIHZvaWQgV2ViTG9ja1JlZ2lzdHJ5UHJveHk6OnBy
b2Nlc3NEaWRFeGl0KCkKIHsKLSAgICBpZiAobV9oYXNFdmVyUmVxdWVzdGVkTG9ja3MpCi0gICAg
ICAgIG1fcHJvY2Vzcy53ZWJzaXRlRGF0YVN0b3JlKCkud2ViTG9ja1JlZ2lzdHJ5KCkuY2xpZW50
c0FyZUdvaW5nQXdheShtX3Byb2Nlc3MuY29yZVByb2Nlc3NJZGVudGlmaWVyKCkpOworICAgIGlm
ICghbV9oYXNFdmVyUmVxdWVzdGVkTG9ja3MpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChh
dXRvKiBkYXRhU3RvcmUgPSBXZWJzaXRlRGF0YVN0b3JlOjpleGlzdGluZ0RhdGFTdG9yZUZvclNl
c3Npb25JRChtX3Byb2Nlc3Muc2Vzc2lvbklEKCkpKQorICAgICAgICBkYXRhU3RvcmUtPndlYkxv
Y2tSZWdpc3RyeSgpLmNsaWVudHNBcmVHb2luZ0F3YXkobV9wcm9jZXNzLmNvcmVQcm9jZXNzSWRl
bnRpZmllcigpKTsKIH0KIAogI3VuZGVmIE1FU1NBR0VfQ0hFQ0sKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDM2YmE5OTJjNDgwMC4uM2QyOGM4MjA2NDJmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTk3OCw3ICs5Nzgs
OCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c3dhcFRvUHJvdmlzaW9uYWxQYWdlKHN0ZDo6dW5pcXVl
X3B0cjxQcm92aXNpb25hbFBhZ2VQcm94eT4gcAogICAgIG1fcHJvY2VzcyA9IHByb3Zpc2lvbmFs
UGFnZS0+cHJvY2VzcygpOwogICAgIG1fd2ViUGFnZUlEID0gcHJvdmlzaW9uYWxQYWdlLT53ZWJQ
YWdlSUQoKTsKICAgICBwYWdlQ2xpZW50KCkuZGlkQ2hhbmdlV2ViUGFnZUlEKCk7Ci0gICAgbV93
ZWJzaXRlRGF0YVN0b3JlID0gbV9wcm9jZXNzLT53ZWJzaXRlRGF0YVN0b3JlKCk7CisgICAgQVNT
RVJUKG1fcHJvY2Vzcy0+d2Vic2l0ZURhdGFTdG9yZSgpKTsKKyAgICBtX3dlYnNpdGVEYXRhU3Rv
cmUgPSAqbV9wcm9jZXNzLT53ZWJzaXRlRGF0YVN0b3JlKCk7CiAKICNpZiBIQVZFKFZJU0lCSUxJ
VFlfUFJPUEFHQVRJT05fVklFVykKICAgICBtX2NvbnRleHRJREZvclZpc2liaWxpdHlQcm9wYWdh
dGlvbkluV2ViUHJvY2VzcyA9IHByb3Zpc2lvbmFsUGFnZS0+Y29udGV4dElERm9yVmlzaWJpbGl0
eVByb3BhZ2F0aW9uSW5XZWJQcm9jZXNzKCk7CkBAIC0zNjI0LDcgKzM2MjUsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6Y29tbWl0UHJvdmlzaW9uYWxQYWdlKEZyYW1lSWRlbnRpZmllciBmcmFtZUlE
LCBGcmFtZUluZm9EYXRhJgogICAgIHJlbW92ZUFsbE1lc3NhZ2VSZWNlaXZlcnMoKTsKICAgICBh
dXRvKiBuYXZpZ2F0aW9uID0gbmF2aWdhdGlvblN0YXRlKCkubmF2aWdhdGlvbihtX3Byb3Zpc2lv
bmFsUGFnZS0+bmF2aWdhdGlvbklEKCkpOwogICAgIGJvb2wgZGlkU3VzcGVuZFByZXZpb3VzUGFn
ZSA9IG5hdmlnYXRpb24gJiYgIW1fcHJvdmlzaW9uYWxQYWdlLT5pc1Byb2Nlc3NTd2FwcGluZ09u
TmF2aWdhdGlvblJlc3BvbnNlKCkgPyBzdXNwZW5kQ3VycmVudFBhZ2VJZlBvc3NpYmxlKCpuYXZp
Z2F0aW9uLCBtYWluRnJhbWVJREluUHJldmlvdXNQcm9jZXNzLCBtX3Byb3Zpc2lvbmFsUGFnZS0+
cHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCgpLCBzaG91bGREZWxheUNsb3NpbmdVbnRpbEZp
cnN0TGF5ZXJGbHVzaCkgOiBmYWxzZTsKLSAgICBtX3Byb2Nlc3MtPnJlbW92ZVdlYlBhZ2UoKnRo
aXMsIG1fd2Vic2l0ZURhdGFTdG9yZS5wdHIoKSA9PSAmbV9wcm92aXNpb25hbFBhZ2UtPnByb2Nl
c3MoKS53ZWJzaXRlRGF0YVN0b3JlKCkgPyBXZWJQcm9jZXNzUHJveHk6OkVuZHNVc2luZ0RhdGFT
dG9yZTo6Tm8gOiBXZWJQcm9jZXNzUHJveHk6OkVuZHNVc2luZ0RhdGFTdG9yZTo6WWVzKTsKKyAg
ICBtX3Byb2Nlc3MtPnJlbW92ZVdlYlBhZ2UoKnRoaXMsIG1fd2Vic2l0ZURhdGFTdG9yZS5wdHIo
KSA9PSBtX3Byb3Zpc2lvbmFsUGFnZS0+cHJvY2VzcygpLndlYnNpdGVEYXRhU3RvcmUoKSA/IFdl
YlByb2Nlc3NQcm94eTo6RW5kc1VzaW5nRGF0YVN0b3JlOjpObyA6IFdlYlByb2Nlc3NQcm94eTo6
RW5kc1VzaW5nRGF0YVN0b3JlOjpZZXMpOwogCiAgICAgLy8gVGhlcmUgaXMgbm8gd2F5IHdlJ2xs
IGJlIGFibGUgdG8gcmV0dXJuIHRvIHRoZSBwYWdlIGluIHRoZSBwcmV2aW91cyBwYWdlIHNvIGNs
b3NlIGl0LgogICAgIGlmICghZGlkU3VzcGVuZFByZXZpb3VzUGFnZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzQ2FjaGUuY3BwCmluZGV4IDUxZmNiZTY2MzQxYS4uZDE4ZDll
MTk3ZjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzQ2Fj
aGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NDYWNoZS5jcHAK
QEAgLTc2LDggKzc2LDcgQEAgYm9vbCBXZWJQcm9jZXNzQ2FjaGU6OmNhbkNhY2hlUHJvY2VzcyhX
ZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MpIGNvbnN0CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAKLSAgICBhdXRvIHNlc3Npb25JRCA9IHByb2Nlc3Mud2Vic2l0ZURhdGFTdG9yZSgpLnNl
c3Npb25JRCgpOwotICAgIGlmIChzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSAmJiAhcHJvY2Vzcy5w
cm9jZXNzUG9vbCgpLmhhc1BhZ2VzVXNpbmdXZWJzaXRlRGF0YVN0b3JlKHByb2Nlc3Mud2Vic2l0
ZURhdGFTdG9yZSgpKSkgeworICAgIGlmICghcHJvY2Vzcy53ZWJzaXRlRGF0YVN0b3JlKCkpIHsK
ICAgICAgICAgV0VCUFJPQ0VTU0NBQ0hFX1JFTEVBU0VfTE9HKCJjYW5DYWNoZVByb2Nlc3M6IE5v
dCBjYWNoaW5nIHByb2Nlc3MgYmVjYXVzZSB0aGlzIHNlc3Npb24gaGFzIGJlZW4gZGVzdHJveWVk
IiwgcHJvY2Vzcy5wcm9jZXNzSWRlbnRpZmllcigpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KQEAgLTE1Myw3ICsxNTIsNyBAQCBSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiBXZWJQcm9j
ZXNzQ2FjaGU6OnRha2VQcm9jZXNzKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRAogICAgIGlm
IChpdCA9PSBtX3Byb2Nlc3Nlc1BlclJlZ2lzdHJhYmxlRG9tYWluLmVuZCgpKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAotICAgIGlmICgmaXQtPnZhbHVlLT5wcm9jZXNzKCkud2Vic2l0ZURh
dGFTdG9yZSgpICE9ICZkYXRhU3RvcmUpCisgICAgaWYgKGl0LT52YWx1ZS0+cHJvY2VzcygpLndl
YnNpdGVEYXRhU3RvcmUoKSAhPSAmZGF0YVN0b3JlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAogICAgIGlmIChpdC0+dmFsdWUtPnByb2Nlc3MoKS5jYXB0aXZlUG9ydGFsTW9kZSgpICE9IGNh
cHRpdmVQb3J0YWxNb2RlKQpAQCAtMjEyLDcgKzIxMSw4IEBAIHZvaWQgV2ViUHJvY2Vzc0NhY2hl
OjpjbGVhckFsbFByb2Nlc3Nlc0ZvclNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQog
ewogICAgIFZlY3RvcjxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4ga2V5c1RvUmVtb3ZlOwog
ICAgIGZvciAoYXV0byYgcGFpciA6IG1fcHJvY2Vzc2VzUGVyUmVnaXN0cmFibGVEb21haW4pIHsK
LSAgICAgICAgaWYgKHBhaXIudmFsdWUtPnByb2Nlc3MoKS53ZWJzaXRlRGF0YVN0b3JlKCkuc2Vz
c2lvbklEKCkgPT0gc2Vzc2lvbklEKSB7CisgICAgICAgIGF1dG8qIGRhdGFTdG9yZSA9IHBhaXIu
dmFsdWUtPnByb2Nlc3MoKS53ZWJzaXRlRGF0YVN0b3JlKCk7CisgICAgICAgIGlmICghZGF0YVN0
b3JlIHx8IGRhdGFTdG9yZS0+c2Vzc2lvbklEKCkgPT0gc2Vzc2lvbklEKSB7CiAgICAgICAgICAg
ICBXRUJQUk9DRVNTQ0FDSEVfUkVMRUFTRV9MT0coImNsZWFyQWxsUHJvY2Vzc2VzRm9yU2Vzc2lv
bjogRXZpY3RpbmcgcHJvY2VzcyBiZWNhdXNlIGl0cyBzZXNzaW9uIHdhcyBkZXN0cm95ZWQiLCBw
YWlyLnZhbHVlLT5wcm9jZXNzKCkucHJvY2Vzc0lkZW50aWZpZXIoKSk7CiAgICAgICAgICAgICBr
ZXlzVG9SZW1vdmUuYXBwZW5kKHBhaXIua2V5KTsKICAgICAgICAgfQpAQCAtMjIyLDcgKzIyMiw4
IEBAIHZvaWQgV2ViUHJvY2Vzc0NhY2hlOjpjbGVhckFsbFByb2Nlc3Nlc0ZvclNlc3Npb24oUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogCiAgICAgVmVjdG9yPHVpbnQ2NF90PiBwZW5kaW5nUmVx
dWVzdHNUb1JlbW92ZTsKICAgICBmb3IgKGF1dG8mIHBhaXIgOiBtX3BlbmRpbmdBZGRSZXF1ZXN0
cykgewotICAgICAgICBpZiAocGFpci52YWx1ZS0+cHJvY2VzcygpLndlYnNpdGVEYXRhU3RvcmUo
KS5zZXNzaW9uSUQoKSA9PSBzZXNzaW9uSUQpIHsKKyAgICAgICAgYXV0byogZGF0YVN0b3JlID0g
cGFpci52YWx1ZS0+cHJvY2VzcygpLndlYnNpdGVEYXRhU3RvcmUoKTsKKyAgICAgICAgaWYgKCFk
YXRhU3RvcmUgfHwgZGF0YVN0b3JlLT5zZXNzaW9uSUQoKSA9PSBzZXNzaW9uSUQpIHsKICAgICAg
ICAgICAgIFdFQlBST0NFU1NDQUNIRV9SRUxFQVNFX0xPRygiY2xlYXJBbGxQcm9jZXNzZXNGb3JT
ZXNzaW9uOiBFdmljdGluZyBwcm9jZXNzIGJlY2F1c2UgaXRzIHNlc3Npb24gd2FzIGRlc3Ryb3ll
ZCIsIHBhaXIudmFsdWUtPnByb2Nlc3MoKS5wcm9jZXNzSWRlbnRpZmllcigpKTsKICAgICAgICAg
ICAgIHBlbmRpbmdSZXF1ZXN0c1RvUmVtb3ZlLmFwcGVuZChwYWlyLmtleSk7CiAgICAgICAgIH0K
QEAgLTI3Niw3ICsyNzcsOCBAQCBXZWJQcm9jZXNzQ2FjaGU6OkNhY2hlZFByb2Nlc3M6OkNhY2hl
ZFByb2Nlc3MoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzKQogI2VuZGlmCiB7CiAgICAg
UkVMRUFTRV9BU1NFUlQoIW1fcHJvY2Vzcy0+cGFnZUNvdW50KCkpOwotICAgIFJFTEVBU0VfQVNT
RVJUX1dJVEhfTUVTU0FHRSghbV9wcm9jZXNzLT53ZWJzaXRlRGF0YVN0b3JlKCkucHJvY2Vzc2Vz
KCkuY29udGFpbnMoKm1fcHJvY2VzcyksICJPbmx5IHByb2Nlc3NlcyB3aXRoIHBhZ2VzIHNob3Vs
ZCBiZSByZWdpc3RlcmVkIHdpdGggdGhlIGRhdGEgc3RvcmUiKTsKKyAgICBhdXRvKiBkYXRhU3Rv
cmUgPSBtX3Byb2Nlc3MtPndlYnNpdGVEYXRhU3RvcmUoKTsKKyAgICBSRUxFQVNFX0FTU0VSVF9X
SVRIX01FU1NBR0UoZGF0YVN0b3JlICYmICFkYXRhU3RvcmUtPnByb2Nlc3NlcygpLmNvbnRhaW5z
KCptX3Byb2Nlc3MpLCAiT25seSBwcm9jZXNzZXMgd2l0aCBwYWdlcyBzaG91bGQgYmUgcmVnaXN0
ZXJlZCB3aXRoIHRoZSBkYXRhIHN0b3JlIik7CiAgICAgbV9wcm9jZXNzLT5zZXRJc0luUHJvY2Vz
c0NhY2hlKHRydWUpOwogICAgIG1fZXZpY3Rpb25UaW1lci5zdGFydE9uZVNob3QoY2FjaGVkUHJv
Y2Vzc0xpZmV0aW1lKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmNwcAppbmRleCA0NWUzNTZmMTY1YjAuLmY4OWY5ZTA5NTUzMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtNTc2LDcgKzU3Niw3IEBAIHZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFJlbW90ZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3
b3JrUHJvY2VzcyhSZW1vCiAKICAgICAvLyBQcmlvcml0aXplIHRoZSByZXF1ZXN0aW5nIFdlYlBy
b2Nlc3MgZm9yIHJ1bm5pbmcgdGhlIHNlcnZpY2Ugd29ya2VyLgogICAgIGlmICghcmVtb3RlV29y
a2VyUHJvY2Vzc1Byb3h5ICYmICFzX3VzZVNlcGFyYXRlU2VydmljZVdvcmtlclByb2Nlc3MgJiYg
cmVxdWVzdGluZ1Byb2Nlc3MpIHsKLSAgICAgICAgaWYgKCZyZXF1ZXN0aW5nUHJvY2Vzcy0+d2Vi
c2l0ZURhdGFTdG9yZSgpID09IHdlYnNpdGVEYXRhU3RvcmUgJiYgcmVxdWVzdGluZ1Byb2Nlc3Mt
PmlzTWF0Y2hpbmdSZWdpc3RyYWJsZURvbWFpbihyZWdpc3RyYWJsZURvbWFpbikpCisgICAgICAg
IGlmIChyZXF1ZXN0aW5nUHJvY2Vzcy0+d2Vic2l0ZURhdGFTdG9yZSgpID09IHdlYnNpdGVEYXRh
U3RvcmUgJiYgcmVxdWVzdGluZ1Byb2Nlc3MtPmlzTWF0Y2hpbmdSZWdpc3RyYWJsZURvbWFpbihy
ZWdpc3RyYWJsZURvbWFpbikpCiAgICAgICAgICAgICB1c2VQcm9jZXNzRm9yUmVtb3RlV29ya2Vy
cygqcmVxdWVzdGluZ1Byb2Nlc3MpOwogICAgIH0KIApAQCAtNTg0LDcgKzU4NCw3IEBAIHZvaWQg
V2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFJlbW90ZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9O
ZXR3b3JrUHJvY2VzcyhSZW1vCiAgICAgICAgIGZvciAoYXV0byYgcHJvY2VzcyA6IHByb2Nlc3NQ
b29sLT5tX3Byb2Nlc3NlcykgewogICAgICAgICAgICAgaWYgKHByb2Nlc3MucHRyKCkgPT0gcHJv
Y2Vzc1Bvb2wtPm1fcHJld2FybWVkUHJvY2Vzcy5nZXQoKSB8fCBwcm9jZXNzLT5pc0R1bW15UHJv
Y2Vzc1Byb3h5KCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBpZiAo
JnByb2Nlc3MtPndlYnNpdGVEYXRhU3RvcmUoKSAhPSB3ZWJzaXRlRGF0YVN0b3JlKQorICAgICAg
ICAgICAgaWYgKHByb2Nlc3MtPndlYnNpdGVEYXRhU3RvcmUoKSAhPSB3ZWJzaXRlRGF0YVN0b3Jl
KQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgaWYgKCFwcm9jZXNzLT5p
c01hdGNoaW5nUmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21haW4pKQogICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwpAQCAtMTA5Miw3ICsxMDkyLDcgQEAgUmVmPFdlYlByb2Nlc3NQcm94
eT4gV2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NGb3JSZWdpc3RyYWJsZURvbWFpbihXZWJzaXRlRGF0
YVN0b3IKICAgICAgICAgICAgIGlmIChwcm9jZXNzLT5pc1J1bm5pbmdTZXJ2aWNlV29ya2Vycygp
KQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogI2VuZGlmCi0gICAgICAgICAgICBpZiAobXVz
dE1hdGNoRGF0YVN0b3JlICYmICZwcm9jZXNzLT53ZWJzaXRlRGF0YVN0b3JlKCkgIT0gJndlYnNp
dGVEYXRhU3RvcmUpCisgICAgICAgICAgICBpZiAobXVzdE1hdGNoRGF0YVN0b3JlICYmIHByb2Nl
c3MtPndlYnNpdGVEYXRhU3RvcmUoKSAhPSAmd2Vic2l0ZURhdGFTdG9yZSkKICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgICAgIHJldHVybiBwcm9jZXNzOwogICAgICAgICB9CkBA
IC0xMTMyLDcgKzExMzIsNyBAQCBSZWY8V2ViUGFnZVByb3h5PiBXZWJQcm9jZXNzUG9vbDo6Y3Jl
YXRlV2ViUGFnZShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBSZWY8QVBJOgogICAgICAgICAvLyBT
aGFyaW5nIHByb2Nlc3NlcywgZS5nLiB3aGVuIGNyZWF0aW5nIHRoZSBwYWdlIHZpYSB3aW5kb3cu
b3BlbigpLgogICAgICAgICBwcm9jZXNzID0gJnBhZ2VDb25maWd1cmF0aW9uLT5yZWxhdGVkUGFn
ZSgpLT5lbnN1cmVSdW5uaW5nUHJvY2VzcygpOwogICAgICAgICAvLyBXZSBkbyBub3Qgc3VwcG9y
dCBzZXZlcmFsIFdlYnNpdGVEYXRhU3RvcmVzIHNoYXJpbmcgYSBzaW5nbGUgcHJvY2Vzcy4KLSAg
ICAgICAgQVNTRVJUKHByb2Nlc3MtPmlzRHVtbXlQcm9jZXNzUHJveHkoKSB8fCBwYWdlQ29uZmln
dXJhdGlvbi0+d2Vic2l0ZURhdGFTdG9yZSgpID09ICZwcm9jZXNzLT53ZWJzaXRlRGF0YVN0b3Jl
KCkpOworICAgICAgICBBU1NFUlQocHJvY2Vzcy0+aXNEdW1teVByb2Nlc3NQcm94eSgpIHx8IHBh
Z2VDb25maWd1cmF0aW9uLT53ZWJzaXRlRGF0YVN0b3JlKCkgPT0gcHJvY2Vzcy0+d2Vic2l0ZURh
dGFTdG9yZSgpKTsKICAgICAgICAgQVNTRVJUKCZwYWdlQ29uZmlndXJhdGlvbi0+cmVsYXRlZFBh
Z2UoKS0+d2Vic2l0ZURhdGFTdG9yZSgpID09IHBhZ2VDb25maWd1cmF0aW9uLT53ZWJzaXRlRGF0
YVN0b3JlKCkpOwogICAgIH0gZWxzZSBpZiAoIW1faXNEZWxheWVkV2ViUHJvY2Vzc0xhdW5jaERp
c2FibGVkKSB7CiAgICAgICAgIC8vIEluIHRoZSBjb21tb24gY2FzZSwgd2UgZGVsYXkgcHJvY2Vz
cyBsYXVuY2ggdW50aWwgc29tZXRoaW5nIGlzIGFjdHVhbGx5IGxvYWRlZCBpbiB0aGUgcGFnZS4K
QEAgLTE5ODIsNyArMTk4Miw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NGb3JOYXZp
Z2F0aW9uSW50ZXJuYWwoV2ViUGFnZVByb3h5JiBwYWdlLCBjb25zdCBBUEk6CiAgICAgICAgIExP
RyhQcm9jZXNzU3dhcHBpbmcsICIoUHJvY2Vzc1N3YXBwaW5nKSBDb25zaWRlcmluZyByZS11c2Ug
b2YgYSBwcmV2aW91c2x5IGNhY2hlZCBwcm9jZXNzIGZvciBkb21haW4gJXMiLCB0YXJnZXRSZWdp
c3RyYWJsZURvbWFpbi5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAogICAgICAgICBpZiAoYXV0
byogcHJvY2VzcyA9IG1fc3dhcHBlZFByb2Nlc3Nlc1BlclJlZ2lzdHJhYmxlRG9tYWluLmdldCh0
YXJnZXRSZWdpc3RyYWJsZURvbWFpbikpIHsKLSAgICAgICAgICAgIGlmICgmcHJvY2Vzcy0+d2Vi
c2l0ZURhdGFTdG9yZSgpID09IGRhdGFTdG9yZS5wdHIoKSkgeworICAgICAgICAgICAgaWYgKHBy
b2Nlc3MtPndlYnNpdGVEYXRhU3RvcmUoKSA9PSBkYXRhU3RvcmUucHRyKCkpIHsKICAgICAgICAg
ICAgICAgICBMT0coUHJvY2Vzc1N3YXBwaW5nLCAiKFByb2Nlc3NTd2FwcGluZykgUmV1c2luZyBh
IHByZXZpb3VzbHkgY2FjaGVkIHByb2Nlc3Mgd2l0aCBwaWQgJWkgdG8gY29udGludWUgbmF2aWdh
dGlvbiB0byBVUkwgJXMiLCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCB0YXJnZXRVUkwu
c3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKICAgICAgICAgICAgICAgICByZXR1cm4gY29tcGxl
dGlvbkhhbmRsZXIoKnByb2Nlc3MsIG51bGxwdHIsIHJlYXNvbik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCBkNzU2YTNkNjkzZjYuLmM2NmQ0YzI3
NjkwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBA
IC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiRG93bmxvYWRQcm94eU1hcC5oIgogI2luY2x1ZGUg
IkxvYWRQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbkluZm8uaCIKICNpbmNsdWRlICJOb3RpZmljYXRpb25NYW5hZ2Vy
TWVzc2FnZUhhbmRsZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlByb3Zpc2lvbmFsUGFnZVByb3h5
LmgiCiAjaW5jbHVkZSAiUmVtb3RlV29ya2VyVHlwZS5oIgpAQCAtMjQxLDcgKzI0Miw2IEBAIFdl
YlByb2Nlc3NQcm94eTo6V2ViUHJvY2Vzc1Byb3h5KFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9v
bCwgV2Vic2l0ZURhdGFTdG9yZSoKICNlbmRpZgogICAgICwgbV9pc1Jlc3BvbnNpdmUoTm9Pck1h
eWJlOjpNYXliZSkKICAgICAsIG1fdmlzaWJsZVBhZ2VDb3VudGVyKFt0aGlzXShSZWZDb3VudGVy
RXZlbnQpIHsgdXBkYXRlQmFja2dyb3VuZFJlc3BvbnNpdmVuZXNzVGltZXIoKTsgfSkKLSAgICAs
IG1fd2Vic2l0ZURhdGFTdG9yZSh3ZWJzaXRlRGF0YVN0b3JlKQogI2lmIFBMQVRGT1JNKENPQ09B
KSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAgICwgbV91c2VyTWVkaWFDYXB0dXJlTWFuYWdl
clByb3h5KG1ha2VVbmlxdWU8VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eT4obWFrZVVuaXF1
ZVJlZjxVSVByb3h5Rm9yQ2FwdHVyZT4oKnRoaXMpKSkKICNlbmRpZgpAQCAtMjU5LDYgKzI1OSw4
IEBAIFdlYlByb2Nlc3NQcm94eTo6V2ViUHJvY2Vzc1Byb3h5KFdlYlByb2Nlc3NQb29sJiBwcm9j
ZXNzUG9vbCwgV2Vic2l0ZURhdGFTdG9yZSoKIAogICAgIFdlYlBhc3RlYm9hcmRQcm94eTo6c2lu
Z2xldG9uKCkuYWRkV2ViUHJvY2Vzc1Byb3h5KCp0aGlzKTsKIAorICAgIGlmICh3ZWJzaXRlRGF0
YVN0b3JlKQorICAgICAgICBtX3Nlc3Npb25JRCA9IHdlYnNpdGVEYXRhU3RvcmUtPnNlc3Npb25J
RCgpOwogICAgIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOwogfQogCkBAIC0zNDYsMTEgKzM0OCwxOSBA
QCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6c2V0SXNJblByb2Nlc3NDYWNoZShib29sIHZhbHVlLCBX
aWxsU2h1dERvd24gd2lsbFNodXREb3duKQogICAgIH0KIH0KIAorV2Vic2l0ZURhdGFTdG9yZSog
V2ViUHJvY2Vzc1Byb3h5Ojp3ZWJzaXRlRGF0YVN0b3JlKCkgY29uc3QKK3sKKyAgICBpZiAoIW1f
c2Vzc2lvbklEKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBXZWJzaXRl
RGF0YVN0b3JlOjpleGlzdGluZ0RhdGFTdG9yZUZvclNlc3Npb25JRCgqbV9zZXNzaW9uSUQpOwor
fQorCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6c2V0V2Vic2l0ZURhdGFTdG9yZShXZWJzaXRlRGF0
YVN0b3JlJiBkYXRhU3RvcmUpCiB7Ci0gICAgQVNTRVJUKCFtX3dlYnNpdGVEYXRhU3RvcmUpOwor
ICAgIEFTU0VSVCghbV9zZXNzaW9uSUQpOwogICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xP
RyhQcm9jZXNzLCAic2V0V2Vic2l0ZURhdGFTdG9yZSgpIGRhdGFTdG9yZT0lcCwgc2Vzc2lvbklE
PSUiIFBSSXU2NCwgJmRhdGFTdG9yZSwgZGF0YVN0b3JlLnNlc3Npb25JRCgpLnRvVUludDY0KCkp
OwotICAgIG1fd2Vic2l0ZURhdGFTdG9yZSA9ICZkYXRhU3RvcmU7CisgICAgbV9zZXNzaW9uSUQg
PSBkYXRhU3RvcmUuc2Vzc2lvbklEKCk7CiAgICAgdXBkYXRlUmVnaXN0cmF0aW9uV2l0aERhdGFT
dG9yZSgpOwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlNldFdlYnNpdGVEYXRhU3Rv
cmVQYXJhbWV0ZXJzKHByb2Nlc3NQb29sKCkud2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMo
KnRoaXMsIGRhdGFTdG9yZSkpLCAwKTsKIApAQCAtMzYxLDE5ICszNzEsMTcgQEAgdm9pZCBXZWJQ
cm9jZXNzUHJveHk6OnNldFdlYnNpdGVEYXRhU3RvcmUoV2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0
b3JlKQogCiBib29sIFdlYlByb2Nlc3NQcm94eTo6aXNEdW1teVByb2Nlc3NQcm94eSgpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIG1fd2Vic2l0ZURhdGFTdG9yZSAmJiBwcm9jZXNzUG9vbCgpLmR1bW15
UHJvY2Vzc1Byb3h5KG1fd2Vic2l0ZURhdGFTdG9yZS0+c2Vzc2lvbklEKCkpID09IHRoaXM7Cisg
ICAgcmV0dXJuIG1fc2Vzc2lvbklEICYmIHByb2Nlc3NQb29sKCkuZHVtbXlQcm9jZXNzUHJveHko
Km1fc2Vzc2lvbklEKSA9PSB0aGlzOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6dXBkYXRl
UmVnaXN0cmF0aW9uV2l0aERhdGFTdG9yZSgpCiB7Ci0gICAgaWYgKCFtX3dlYnNpdGVEYXRhU3Rv
cmUpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBib29sIHNob3VsZEJlUmVnaXN0ZXJlZCA9
IHBhZ2VDb3VudCgpIHx8IHByb3Zpc2lvbmFsUGFnZUNvdW50KCk7Ci0gICAgaWYgKHNob3VsZEJl
UmVnaXN0ZXJlZCkKLSAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlLT5yZWdpc3RlclByb2Nlc3Mo
KnRoaXMpOwotICAgIGVsc2UKLSAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlLT51bnJlZ2lzdGVy
UHJvY2VzcygqdGhpcyk7CisgICAgaWYgKGF1dG8qIGRhdGFTdG9yZSA9IHdlYnNpdGVEYXRhU3Rv
cmUoKSkgeworICAgICAgICBpZiAocGFnZUNvdW50KCkgfHwgcHJvdmlzaW9uYWxQYWdlQ291bnQo
KSkKKyAgICAgICAgICAgIGRhdGFTdG9yZS0+cmVnaXN0ZXJQcm9jZXNzKCp0aGlzKTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgZGF0YVN0b3JlLT51bnJlZ2lzdGVyUHJvY2VzcygqdGhpcyk7
CisgICAgfQogfQogCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6YWRkUHJvdmlzaW9uYWxQYWdlUHJv
eHkoUHJvdmlzaW9uYWxQYWdlUHJveHkmIHByb3Zpc2lvbmFsUGFnZSkKQEAgLTU5Niw3ICs2MDQs
NyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6YWRkRXhpc3RpbmdXZWJQYWdlKFdlYlBhZ2VQcm94
eSYgd2ViUGFnZSwgQmVnaW5zVXNpbmdEYXRhUwogICAgIEFTU0VSVCghbV9wYWdlTWFwLmNvbnRh
aW5zKHdlYlBhZ2UuaWRlbnRpZmllcigpKSk7CiAgICAgQVNTRVJUKCFnbG9iYWxQYWdlTWFwKCku
Y29udGFpbnMod2ViUGFnZS5pZGVudGlmaWVyKCkpKTsKICAgICBSRUxFQVNFX0FTU0VSVCghbV9p
c0luUHJvY2Vzc0NhY2hlKTsKLSAgICBBU1NFUlQoIW1fd2Vic2l0ZURhdGFTdG9yZSB8fCBtX3dl
YnNpdGVEYXRhU3RvcmUgPT0gJndlYlBhZ2Uud2Vic2l0ZURhdGFTdG9yZSgpKTsKKyAgICBBU1NF
UlQoIW1fc2Vzc2lvbklEIHx8IHdlYnNpdGVEYXRhU3RvcmUoKSA9PSAmd2ViUGFnZS53ZWJzaXRl
RGF0YVN0b3JlKCkpOwogCiAgICAgaWYgKGJlZ2luc1VzaW5nRGF0YVN0b3JlID09IEJlZ2luc1Vz
aW5nRGF0YVN0b3JlOjpZZXMpIHsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9wcm9jZXNzUG9v
bCk7CkBAIC04MTUsNyArODIzLDExIEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp1cGRhdGVCYWNr
Rm9yd2FyZEl0ZW0oY29uc3QgQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlJiBpdGVtCiAKIHZvaWQg
V2ViUHJvY2Vzc1Byb3h5OjpnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oTWVzc2FnZXM6Oldl
YlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHkm
JiByZXBseSkKIHsKLSAgICB3ZWJzaXRlRGF0YVN0b3JlKCkuZ2V0TmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uKCp0aGlzLCBXVEZNb3ZlKHJlcGx5KSk7CisgICAgYXV0byogZGF0YVN0b3JlID0gd2Vi
c2l0ZURhdGFTdG9yZSgpOworICAgIGlmICghZGF0YVN0b3JlKQorICAgICAgICByZXR1cm4gcmVw
bHkoeyB9KTsKKworICAgIGRhdGFTdG9yZS0+Z2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCp0
aGlzLCBXVEZNb3ZlKHJlcGx5KSk7CiB9CiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCkBAIC0x
NzAxLDExICsxNzEzLDEyIEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRTdGFydFByb3Zpc2lv
bmFsTG9hZEZvck1haW5GcmFtZShjb25zdCBVUkwmIHVybCkKICAgICB9CiAKICAgICBhdXRvIHJl
Z2lzdHJhYmxlRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4geyB1cmwgfTsKLSAg
ICBpZiAobV9yZWdpc3RyYWJsZURvbWFpbiAmJiAqbV9yZWdpc3RyYWJsZURvbWFpbiAhPSByZWdp
c3RyYWJsZURvbWFpbikgeworICAgIGF1dG8qIGRhdGFTdG9yZSA9IHdlYnNpdGVEYXRhU3RvcmUo
KTsKKyAgICBpZiAoZGF0YVN0b3JlICYmIG1fcmVnaXN0cmFibGVEb21haW4gJiYgKm1fcmVnaXN0
cmFibGVEb21haW4gIT0gcmVnaXN0cmFibGVEb21haW4pIHsKICAgICAgICAgaWYgKGlzUnVubmlu
Z1NlcnZpY2VXb3JrZXJzKCkpCi0gICAgICAgICAgICB3ZWJzaXRlRGF0YVN0b3JlKCkubmV0d29y
a1Byb2Nlc3MoKS50ZXJtaW5hdGVSZW1vdGVXb3JrZXJDb250ZXh0Q29ubmVjdGlvbldoZW5Qb3Nz
aWJsZShSZW1vdGVXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyLCB3ZWJzaXRlRGF0YVN0b3JlKCku
c2Vzc2lvbklEKCksICptX3JlZ2lzdHJhYmxlRG9tYWluLCBjb3JlUHJvY2Vzc0lkZW50aWZpZXIo
KSk7CisgICAgICAgICAgICBkYXRhU3RvcmUtPm5ldHdvcmtQcm9jZXNzKCkudGVybWluYXRlUmVt
b3RlV29ya2VyQ29udGV4dENvbm5lY3Rpb25XaGVuUG9zc2libGUoUmVtb3RlV29ya2VyVHlwZTo6
U2VydmljZVdvcmtlciwgZGF0YVN0b3JlLT5zZXNzaW9uSUQoKSwgKm1fcmVnaXN0cmFibGVEb21h
aW4sIGNvcmVQcm9jZXNzSWRlbnRpZmllcigpKTsKICAgICAgICAgaWYgKGlzUnVubmluZ1NoYXJl
ZFdvcmtlcnMoKSkKLSAgICAgICAgICAgIHdlYnNpdGVEYXRhU3RvcmUoKS5uZXR3b3JrUHJvY2Vz
cygpLnRlcm1pbmF0ZVJlbW90ZVdvcmtlckNvbnRleHRDb25uZWN0aW9uV2hlblBvc3NpYmxlKFJl
bW90ZVdvcmtlclR5cGU6OlNoYXJlZFdvcmtlciwgd2Vic2l0ZURhdGFTdG9yZSgpLnNlc3Npb25J
RCgpLCAqbV9yZWdpc3RyYWJsZURvbWFpbiwgY29yZVByb2Nlc3NJZGVudGlmaWVyKCkpOworICAg
ICAgICAgICAgZGF0YVN0b3JlLT5uZXR3b3JrUHJvY2VzcygpLnRlcm1pbmF0ZVJlbW90ZVdvcmtl
ckNvbnRleHRDb25uZWN0aW9uV2hlblBvc3NpYmxlKFJlbW90ZVdvcmtlclR5cGU6OlNoYXJlZFdv
cmtlciwgZGF0YVN0b3JlLT5zZXNzaW9uSUQoKSwgKm1fcmVnaXN0cmFibGVEb21haW4sIGNvcmVQ
cm9jZXNzSWRlbnRpZmllcigpKTsKIAogICAgICAgICAvLyBOdWxsIG91dCByZWdpc3RyYWJsZSBk
b21haW4gc2luY2UgdGhpcyBwcm9jZXNzIGhhcyBub3cgYmVlbiB1c2VkIGZvciBzZXZlcmFsIGRv
bWFpbnMuCiAgICAgICAgIG1fcmVnaXN0cmFibGVEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiB7IH07CkBAIC0xNzUyLDggKzE3NjUsOCBAQCBXZWJQcm9jZXNzUG9vbCYgV2ViUHJv
Y2Vzc1Byb3h5Ojpwcm9jZXNzUG9vbCgpIGNvbnN0CiAKIFBBTDo6U2Vzc2lvbklEIFdlYlByb2Nl
c3NQcm94eTo6c2Vzc2lvbklEKCkgY29uc3QKIHsKLSAgICBBU1NFUlQobV93ZWJzaXRlRGF0YVN0
b3JlKTsKLSAgICByZXR1cm4gbV93ZWJzaXRlRGF0YVN0b3JlLT5zZXNzaW9uSUQoKTsKKyAgICBB
U1NFUlQobV9zZXNzaW9uSUQpOworICAgIHJldHVybiAqbV9zZXNzaW9uSUQ7CiB9CiAKIHZvaWQg
V2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVTcGVlY2hSZWNvZ25pdGlvblNlcnZlcihTcGVlY2hSZWNv
Z25pdGlvblNlcnZlcklkZW50aWZpZXIgaWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5LmgKaW5kZXggNGMyMmRhYjE4MGUwLi43NjI3ODUzMTk2NDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCkBAIC0xNjcsNyArMTY3
LDcgQEAgcHVibGljOgogICAgIHZvaWQgZW5hYmxlUmVtb3RlV29ya2VycyhSZW1vdGVXb3JrZXJU
eXBlLCBjb25zdCBVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyJik7CiAgICAgdm9pZCBk
aXNhYmxlUmVtb3RlV29ya2VycyhSZW1vdGVXb3JrZXJUeXBlKTsKIAotICAgIFdlYnNpdGVEYXRh
U3RvcmUmIHdlYnNpdGVEYXRhU3RvcmUoKSBjb25zdCB7IEFTU0VSVChtX3dlYnNpdGVEYXRhU3Rv
cmUpOyByZXR1cm4gKm1fd2Vic2l0ZURhdGFTdG9yZTsgfQorICAgIFdlYnNpdGVEYXRhU3RvcmUq
IHdlYnNpdGVEYXRhU3RvcmUoKSBjb25zdDsKICAgICB2b2lkIHNldFdlYnNpdGVEYXRhU3RvcmUo
V2Vic2l0ZURhdGFTdG9yZSYpOwogICAgIAogICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgp
IGNvbnN0OwpAQCAtNjE3LDggKzYxNyw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCB3ZWJQcm9jZXNzSXNSZXNwb25zaXZlKT4+IG1faXNSZXNwb25z
aXZlQ2FsbGJhY2tzOwogCiAgICAgVmlzaWJsZVdlYlBhZ2VDb3VudGVyIG1fdmlzaWJsZVBhZ2VD
b3VudGVyOwotCi0gICAgUmVmUHRyPFdlYnNpdGVEYXRhU3RvcmU+IG1fd2Vic2l0ZURhdGFTdG9y
ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFBBTDo6U2Vzc2lvbklEPiBtX3Nlc3Npb25JRDsKIAogICAg
IGJvb2wgbV9pc1VuZGVyTWVtb3J5UHJlc3N1cmUgeyBmYWxzZSB9OwogCi0tIAoyLjMyLjAgKEFw
cGxlIEdpdC0xMzIpCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>459511</attachid>
            <date>2022-05-17 12:54:48 -0700</date>
            <delta_ts>2022-05-17 19:19:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238892-20220517125445.patch</filename>
            <type>text/plain</type>
            <size>30243</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">RnJvbSA4NDA4YWU4ZTE0MGYyNDRkMmFlOTlmMzcwOTk3NDJlZDNmMWQ0YWJmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBTaWh1aSBMaXUgPHNpaHVpX2xpdUBhcHBsZS5jb20+CkRhdGU6
IFR1ZSwgMTcgTWF5IDIwMjIgMTI6NTI6MjcgLTA3MDAKU3ViamVjdDogW1BBVENIXSBXZWJQcm9j
ZXNzUHJveHkgc2hvdWxkIG5vdCBob2xkIFdlYnNpdGVEYXRhU3RvcmUgYWxpdmUgd2hlbgogdGhl
cmUgaXMgbm8gcGFnZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4
ODkyCiA8cmRhcjovL3Byb2JsZW0vOTE3MTU1MTc+CgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KCldlYlByb2Nlc3NQcm94eSBjYW4gb3V0bGl2ZSBXZWJQYWdlUHJveHksIGFuZCBiZWNhdXNl
IFdlYlByb2Nlc3NQcm94eSBob2xkcyBzdHJvbmcgcmVmZXJlbmNlIHRvIFdlYnNpdGVEYXRhU3Rv
cmUsCldlYnNpdGVEYXRhU3RvcmUgd2lsbCBiZSBrZXB0IGFsaXZlIGV2ZW4gd2hlbiBpdCdzIG5v
dCB1c2VkIGJ5IGFueSBwYWdlIGFuZCB3aWxsIG5vdCBiZSB1c2VkIGJ5IGFueSBwYWdlLgoKKiBV
SVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5jcHA6CihXZWJLaXQ6OkdQVVByb2Nlc3NQcm94
eTo6Y3JlYXRlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24pOgoqIFVJUHJvY2Vzcy9Qcm92aXNpb25hbFBh
Z2VQcm94eS5jcHA6CihXZWJLaXQ6OlByb3Zpc2lvbmFsUGFnZVByb3h5OjpQcm92aXNpb25hbFBh
Z2VQcm94eSk6CihXZWJLaXQ6OlByb3Zpc2lvbmFsUGFnZVByb3h5Ojp+UHJvdmlzaW9uYWxQYWdl
UHJveHkpOgoqIFVJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oOgoqIFVJUHJvY2Vzcy9T
dXNwZW5kZWRQYWdlUHJveHkuY3BwOgooV2ViS2l0OjpTdXNwZW5kZWRQYWdlUHJveHk6OmZpbmRS
ZXVzYWJsZVN1c3BlbmRlZFBhZ2VQcm9jZXNzKToKKiBVSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRD
YWNoZS5jcHA6CihXZWJLaXQ6OldlYkJhY2tGb3J3YXJkQ2FjaGU6OnJlbW92ZUVudHJpZXNGb3JT
ZXNzaW9uKToKKiBVSVByb2Nlc3MvV2ViTG9ja1JlZ2lzdHJ5UHJveHkuY3BwOgooV2ViS2l0OjpX
ZWJMb2NrUmVnaXN0cnlQcm94eTo6cmVxdWVzdExvY2spOgooV2ViS2l0OjpXZWJMb2NrUmVnaXN0
cnlQcm94eTo6cmVsZWFzZUxvY2spOgooV2ViS2l0OjpXZWJMb2NrUmVnaXN0cnlQcm94eTo6YWJv
cnRMb2NrUmVxdWVzdCk6CihXZWJLaXQ6OldlYkxvY2tSZWdpc3RyeVByb3h5OjpzbmFwc2hvdCk6
CihXZWJLaXQ6OldlYkxvY2tSZWdpc3RyeVByb3h5OjpjbGllbnRJc0dvaW5nQXdheSk6CihXZWJL
aXQ6OldlYkxvY2tSZWdpc3RyeVByb3h5Ojpwcm9jZXNzRGlkRXhpdCk6CiogVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHA6CihXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c3dhcFRvUHJvdmlzaW9uYWxQ
YWdlKToKKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpjb21taXRQcm92aXNpb25hbFBhZ2UpOgoqIFVJ
UHJvY2Vzcy9XZWJQcm9jZXNzQ2FjaGUuY3BwOgooV2ViS2l0OjpXZWJQcm9jZXNzQ2FjaGU6OmNh
bkNhY2hlUHJvY2VzcyBjb25zdCk6CihXZWJLaXQ6OldlYlByb2Nlc3NDYWNoZTo6dGFrZVByb2Nl
c3MpOgooV2ViS2l0OjpXZWJQcm9jZXNzQ2FjaGU6OmNsZWFyQWxsUHJvY2Vzc2VzRm9yU2Vzc2lv
bik6CihXZWJLaXQ6OldlYlByb2Nlc3NDYWNoZTo6Q2FjaGVkUHJvY2Vzczo6Q2FjaGVkUHJvY2Vz
cyk6CiogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKFdlYktpdDo6V2ViUHJvY2Vzc1Bv
b2w6OmVzdGFibGlzaFJlbW90ZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vz
cyk6CihXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwcm9jZXNzRm9yUmVnaXN0cmFibGVEb21haW4p
OgooV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlV2ViUGFnZSk6CihXZWJLaXQ6OldlYlBy
b2Nlc3NQb29sOjpwcm9jZXNzRm9yTmF2aWdhdGlvbkludGVybmFsKToKKiBVSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5LmNwcDoKKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpXZWJQcm9jZXNzUHJv
eHkpOgooV2ViS2l0OjptX3dlYkxvY2tSZWdpc3RyeSk6CihXZWJLaXQ6OldlYlByb2Nlc3NQcm94
eTo6d2Vic2l0ZURhdGFTdG9yZSBjb25zdCk6CihXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6c2V0
V2Vic2l0ZURhdGFTdG9yZSk6CihXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6aXNEdW1teVByb2Nl
c3NQcm94eSBjb25zdCk6CihXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6dXBkYXRlUmVnaXN0cmF0
aW9uV2l0aERhdGFTdG9yZSk6CihXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6YWRkRXhpc3RpbmdX
ZWJQYWdlKToKKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpnZXROZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24pOgooV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2Fk
Rm9yTWFpbkZyYW1lKToKKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpzZXNzaW9uSUQgY29uc3Qp
OgoqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5
Ojp3ZWJzaXRlRGF0YVN0b3JlIGNvbnN0KTogRGVsZXRlZC4KKiBVSVByb2Nlc3MvZ2xpYi9XZWJQ
cm9jZXNzUHJveHlHTGliLmNwcDoKKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpwbGF0Zm9ybUdl
dExhdW5jaE9wdGlvbnMpOgotLS0KIC4uLi9XZWJLaXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNz
UHJveHkuY3BwICB8ICA0ICstCiAuLi4vV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQ
cm94eS5jcHAgfCAxMSArKy0tCiAuLi4vV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQ
cm94eS5oICAgfCAgMyArKwogLi4uL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5
LmNwcCAgIHwgIDIgKy0KIC4uLi9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkQ2FjaGUu
Y3BwICB8ICAzICstCiAuLi4vV2ViS2l0L1VJUHJvY2Vzcy9XZWJMb2NrUmVnaXN0cnlQcm94eS5j
cHAgfCAzOCArKysrKysrKysrKy0tLQogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcCAgICAgIHwgIDUgKy0KIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3ND
YWNoZS5jcHAgICB8IDE0ICsrLS0tCiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5jcHAgICAgfCAxMCArKy0tCiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UHJveHkuY3BwICAgfCA1MSArKysrKysrKysrKystLS0tLS0tCiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkuaCAgICAgfCAgNSArLQogLi4uL1VJUHJvY2Vzcy9nbGliL1dl
YlByb2Nlc3NQcm94eUdMaWIuY3BwICAgIHwgIDIgKy0KIDEyIGZpbGVzIGNoYW5nZWQsIDk4IGlu
c2VydGlvbnMoKyksIDUwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvR1BVL0dQVVByb2Nlc3NQcm94eS5jcHAKaW5kZXggYzhhMWM3ZDI2MzA0Li40NzhmZjZiYjdh
ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHku
Y3BwCkBAIC0zNzAsNyArMzcwLDkgQEAgdm9pZCBHUFVQcm9jZXNzUHJveHk6OnByb2Nlc3NXaWxs
U2h1dERvd24oSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogCiB2b2lkIEdQVVByb2Nlc3NQ
cm94eTo6Y3JlYXRlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oV2ViUHJvY2Vzc1Byb3h5JiB3ZWJQcm9j
ZXNzUHJveHksIElQQzo6QXR0YWNobWVudCYmIGNvbm5lY3Rpb25JZGVudGlmaWVyLCBHUFVQcm9j
ZXNzQ29ubmVjdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogewotICAgIGFkZFNlc3Npb24o
d2ViUHJvY2Vzc1Byb3h5LndlYnNpdGVEYXRhU3RvcmUoKSk7CisgICAgaWYgKGF1dG8qIHN0b3Jl
ID0gd2ViUHJvY2Vzc1Byb3h5LndlYnNpdGVEYXRhU3RvcmUoKSkKKyAgICAgICAgYWRkU2Vzc2lv
bigqc3RvcmUpOworCiAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICIlcCAtIEdQ
VVByb2Nlc3NQcm94eSBpcyB0YWtpbmcgYSBiYWNrZ3JvdW5kIGFzc2VydGlvbiBiZWNhdXNlIGEg
d2ViIHByb2Nlc3MgaXMgcmVxdWVzdGluZyBhIGNvbm5lY3Rpb24iLCB0aGlzKTsKICAgICBzdGFy
dFJlc3BvbnNpdmVuZXNzVGltZXIoVXNlTGF6eVN0b3A6Ok5vKTsKICAgICBzZW5kV2l0aEFzeW5j
UmVwbHkoTWVzc2FnZXM6OkdQVVByb2Nlc3M6OkNyZWF0ZUdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MgeyB3ZWJQcm9jZXNzUHJveHkuY29yZVByb2Nlc3NJZGVudGlmaWVyKCksIHdlYlByb2Nlc3NQ
cm94eS5zZXNzaW9uSUQoKSwgY29ubmVjdGlvbklkZW50aWZpZXIsIHBhcmFtZXRlcnMgfSwgW3Ro
aXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dKCkgbXV0YWJsZSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKaW5kZXggZWQ1ZGZk
ZGE0NzhkLi5mODVlMmE2NTNkMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Q
cm92aXNpb25hbFBhZ2VQcm94eS5jcHAKQEAgLTg0LDggKzg0LDEwIEBAIFByb3Zpc2lvbmFsUGFn
ZVByb3h5OjpQcm92aXNpb25hbFBhZ2VQcm94eShXZWJQYWdlUHJveHkmIHBhZ2UsIFJlZjxXZWJQ
cm9jZXNzUHJvCiAgICAgbV9wcm9jZXNzLT5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2VJRCwgKnRoaXMpOwog
ICAgIG1fcHJvY2Vzcy0+YWRkUHJvdmlzaW9uYWxQYWdlUHJveHkoKnRoaXMpOwogCi0gICAgaWYg
KCZtX3Byb2Nlc3MtPndlYnNpdGVEYXRhU3RvcmUoKSAhPSAmbV9wYWdlLndlYnNpdGVEYXRhU3Rv
cmUoKSkKLSAgICAgICAgbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLnBhZ2VCZWdpblVzaW5nV2Vi
c2l0ZURhdGFTdG9yZShtX3BhZ2UuaWRlbnRpZmllcigpLCBtX3Byb2Nlc3MtPndlYnNpdGVEYXRh
U3RvcmUoKSk7CisgICAgbV93ZWJzaXRlRGF0YVN0b3JlID0gbV9wcm9jZXNzLT53ZWJzaXRlRGF0
YVN0b3JlKCk7CisgICAgQVNTRVJUKG1fd2Vic2l0ZURhdGFTdG9yZSk7CisgICAgaWYgKG1fd2Vi
c2l0ZURhdGFTdG9yZSAmJiBtX3dlYnNpdGVEYXRhU3RvcmUgIT0gJm1fcGFnZS53ZWJzaXRlRGF0
YVN0b3JlKCkpCisgICAgICAgIG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5wYWdlQmVnaW5Vc2lu
Z1dlYnNpdGVEYXRhU3RvcmUobV9wYWdlLmlkZW50aWZpZXIoKSwgKm1fd2Vic2l0ZURhdGFTdG9y
ZSk7CiAKICAgICAvLyBJZiB3ZSBhcmUgcmVhdHRhY2hpbmcgdG8gYSBTdXNwZW5kZWRQYWdlLCB0
aGVuIHRoZSBXZWJQcm9jZXNzJyBXZWJQYWdlIGFscmVhZHkgZXhpc3RzIGFuZAogICAgIC8vIFdl
YlBhZ2VQcm94eTo6ZGlkQ3JlYXRlTWFpbkZyYW1lKCkgd2lsbCBub3QgYmUgY2FsbGVkIHRvIGlu
aXRpYWxpemUgbV9tYWluRnJhbWUuIEluIHN1Y2gKQEAgLTExMyw4ICsxMTUsOSBAQCBQcm92aXNp
b25hbFBhZ2VQcm94eTo6flByb3Zpc2lvbmFsUGFnZVByb3h5KCkKICAgICBpZiAoIW1fd2FzQ29t
bWl0dGVkKSB7CiAgICAgICAgIG1fcGFnZS5pbnNwZWN0b3JDb250cm9sbGVyKCkud2lsbERlc3Ry
b3lQcm92aXNpb25hbFBhZ2UoKnRoaXMpOwogCi0gICAgICAgIGlmICgmbV9wcm9jZXNzLT53ZWJz
aXRlRGF0YVN0b3JlKCkgIT0gJm1fcGFnZS53ZWJzaXRlRGF0YVN0b3JlKCkpCi0gICAgICAgICAg
ICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkucGFnZUVuZFVzaW5nV2Vic2l0ZURhdGFTdG9yZSht
X3BhZ2UuaWRlbnRpZmllcigpLCBtX3Byb2Nlc3MtPndlYnNpdGVEYXRhU3RvcmUoKSk7CisgICAg
ICAgIGF1dG8gZGF0YVN0b3JlID0gbV9wcm9jZXNzLT53ZWJzaXRlRGF0YVN0b3JlKCk7CisgICAg
ICAgIGlmIChkYXRhU3RvcmUgJiYgZGF0YVN0b3JlIT0gJm1fcGFnZS53ZWJzaXRlRGF0YVN0b3Jl
KCkpCisgICAgICAgICAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkucGFnZUVuZFVzaW5nV2Vi
c2l0ZURhdGFTdG9yZShtX3BhZ2UuaWRlbnRpZmllcigpLCAqZGF0YVN0b3JlKTsKIAogICAgICAg
ICBtX3Byb2Nlc3MtPnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fd2ViUGFnZUlEKTsKICAgICAgICAgc2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6Q2xvc2UoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJv
dmlzaW9uYWxQYWdlUHJveHkuaAppbmRleCAyMmQyYmIxMmNhNmEuLjNmNTE5YjA2ZDMxMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCkBAIC02
MSw2ICs2MSw3IEBAIGNsYXNzIFVzZXJEYXRhOwogY2xhc3MgV2ViRnJhbWVQcm94eTsKIGNsYXNz
IFdlYlBhZ2VQcm94eTsKIGNsYXNzIFdlYlByb2Nlc3NQcm94eTsKK2NsYXNzIFdlYnNpdGVEYXRh
U3RvcmU7CiBzdHJ1Y3QgRnJhbWVJbmZvRGF0YTsKIHN0cnVjdCBOYXZpZ2F0aW9uQWN0aW9uRGF0
YTsKIHN0cnVjdCBVUkxTY2hlbWVUYXNrUGFyYW1ldGVyczsKQEAgLTE2Myw2ICsxNjQsOCBAQCBw
cml2YXRlOgogICAgIFdlYlBhZ2VQcm94eSYgbV9wYWdlOwogICAgIFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyIG1fd2ViUGFnZUlEOwogICAgIFJlZjxXZWJQcm9jZXNzUHJveHk+IG1fcHJvY2VzczsK
KyAgICAvLyBLZWVwIFdlYnNpdGVEYXRhU3RvcmUgYWxpdmUgZm9yIHByb3Zpc2lvbmFsIHBhZ2Ug
bG9hZC4KKyAgICBSZWZQdHI8V2Vic2l0ZURhdGFTdG9yZT4gbV93ZWJzaXRlRGF0YVN0b3JlOwog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxEcmF3aW5nQXJlYVByb3h5PiBtX2RyYXdpbmdBcmVhOwogICAg
IFJlZlB0cjxXZWJGcmFtZVByb3h5PiBtX21haW5GcmFtZTsKICAgICB1aW50NjRfdCBtX25hdmln
YXRpb25JRDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBh
Z2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHku
Y3BwCmluZGV4IGNjYmQ2MTI4Nzg1MC4uNjMyMmFlNWVkZjUyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgUmVm
UHRyPFdlYlByb2Nlc3NQcm94eT4gU3VzcGVuZGVkUGFnZVByb3h5OjpmaW5kUmV1c2FibGVTdXNw
ZW5kZWRQYWdlUHJvY2VzcyhXZWIKIHsKICAgICBmb3IgKGF1dG8qIHN1c3BlbmRlZFBhZ2UgOiBh
bGxTdXNwZW5kZWRQYWdlcygpKSB7CiAgICAgICAgIGF1dG8mIHByb2Nlc3MgPSBzdXNwZW5kZWRQ
YWdlLT5wcm9jZXNzKCk7Ci0gICAgICAgIGlmICgmcHJvY2Vzcy5wcm9jZXNzUG9vbCgpID09ICZw
cm9jZXNzUG9vbCAmJiBwcm9jZXNzLnJlZ2lzdHJhYmxlRG9tYWluKCkgPT0gcmVnaXN0cmFibGVE
b21haW4gJiYgJnByb2Nlc3Mud2Vic2l0ZURhdGFTdG9yZSgpID09ICZkYXRhU3RvcmUgJiYgcHJv
Y2Vzcy5jcm9zc09yaWdpbk1vZGUoKSAhPSBDcm9zc09yaWdpbk1vZGU6Oklzb2xhdGVkICYmIHBy
b2Nlc3MuY2FwdGl2ZVBvcnRhbE1vZGUoKSA9PSBjYXB0aXZlUG9ydGFsTW9kZSkKKyAgICAgICAg
aWYgKCZwcm9jZXNzLnByb2Nlc3NQb29sKCkgPT0gJnByb2Nlc3NQb29sICYmIHByb2Nlc3MucmVn
aXN0cmFibGVEb21haW4oKSA9PSByZWdpc3RyYWJsZURvbWFpbiAmJiBwcm9jZXNzLndlYnNpdGVE
YXRhU3RvcmUoKSA9PSAmZGF0YVN0b3JlICYmIHByb2Nlc3MuY3Jvc3NPcmlnaW5Nb2RlKCkgIT0g
Q3Jvc3NPcmlnaW5Nb2RlOjpJc29sYXRlZCAmJiBwcm9jZXNzLmNhcHRpdmVQb3J0YWxNb2RlKCkg
PT0gY2FwdGl2ZVBvcnRhbE1vZGUpCiAgICAgICAgICAgICByZXR1cm4gJnByb2Nlc3M7CiAgICAg
fQogICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQmFja0ZvcndhcmRDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJC
YWNrRm9yd2FyZENhY2hlLmNwcAppbmRleCA2NGExYTlmNjljNmMuLjE4NzMyZmQ0NWQ0YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRDYWNoZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRDYWNoZS5jcHAKQEAg
LTEzNCw3ICsxMzQsOCBAQCB2b2lkIFdlYkJhY2tGb3J3YXJkQ2FjaGU6OnJlbW92ZUVudHJpZXNG
b3JQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcykKIHZvaWQgV2ViQmFja0ZvcndhcmRD
YWNoZTo6cmVtb3ZlRW50cmllc0ZvclNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQog
ewogICAgIHJlbW92ZUVudHJpZXNNYXRjaGluZyhbc2Vzc2lvbklEXShhdXRvJiBpdGVtKSB7Ci0g
ICAgICAgIHJldHVybiBpdGVtLmJhY2tGb3J3YXJkQ2FjaGVFbnRyeSgpLT5wcm9jZXNzKCkud2Vi
c2l0ZURhdGFTdG9yZSgpLnNlc3Npb25JRCgpID09IHNlc3Npb25JRDsKKyAgICAgICAgYXV0byog
ZGF0YVN0b3JlID0gaXRlbS5iYWNrRm9yd2FyZENhY2hlRW50cnkoKS0+cHJvY2VzcygpLndlYnNp
dGVEYXRhU3RvcmUoKTsKKyAgICAgICAgcmV0dXJuIGRhdGFTdG9yZSAmJiBkYXRhU3RvcmUtPnNl
c3Npb25JRCgpID09IHNlc3Npb25JRDsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViTG9ja1JlZ2lzdHJ5UHJveHkuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViTG9ja1JlZ2lzdHJ5UHJveHkuY3BwCmluZGV4IDFjMTQyMWM2NTJjMi4u
Nzk5YmMyODAxOTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJMb2Nr
UmVnaXN0cnlQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViTG9ja1Jl
Z2lzdHJ5UHJveHkuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1By
b3h5LmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUv
V2ViTG9ja0lkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1dlYkxvY2tNYW5hZ2VyU25h
cHNob3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1dlYkxvY2tSZWdpc3RyeS5oPgogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKQEAgLTU1LDcgKzU2LDEzIEBAIHZvaWQgV2ViTG9ja1JlZ2lzdHJ5UHJveHk6
OnJlcXVlc3RMb2NrKFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmIGNsaWVudE9yaWdpbiwgV2ViCiAg
ICAgTUVTU0FHRV9DSEVDSyhjbGllbnRJRC5wcm9jZXNzSWRlbnRpZmllcigpID09IG1fcHJvY2Vz
cy5jb3JlUHJvY2Vzc0lkZW50aWZpZXIoKSk7CiAgICAgbV9oYXNFdmVyUmVxdWVzdGVkTG9ja3Mg
PSB0cnVlOwogCi0gICAgbV9wcm9jZXNzLndlYnNpdGVEYXRhU3RvcmUoKS53ZWJMb2NrUmVnaXN0
cnkoKS5yZXF1ZXN0TG9jayhtX3Byb2Nlc3Muc2Vzc2lvbklEKCksIFdURk1vdmUoY2xpZW50T3Jp
Z2luKSwgbG9ja0lkZW50aWZpZXIsIGNsaWVudElELCBXVEZNb3ZlKG5hbWUpLCBsb2NrTW9kZSwg
c3RlYWwsIGlmQXZhaWxhYmxlLCBbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgbG9ja0lk
ZW50aWZpZXIsIGNsaWVudElEXShib29sIHN1Y2Nlc3MpIHsKKyAgICBhdXRvKiBkYXRhU3RvcmUg
PSBtX3Byb2Nlc3Mud2Vic2l0ZURhdGFTdG9yZSgpOworICAgIGlmICghZGF0YVN0b3JlKSB7Cisg
ICAgICAgIG1fcHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVXZWJMb2NrUmVnaXN0cnk6OkRp
ZENvbXBsZXRlTG9ja1JlcXVlc3QobG9ja0lkZW50aWZpZXIsIGNsaWVudElELCBmYWxzZSksIDAp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZGF0YVN0b3JlLT53ZWJMb2NrUmVnaXN0
cnkoKS5yZXF1ZXN0TG9jayhtX3Byb2Nlc3Muc2Vzc2lvbklEKCksIFdURk1vdmUoY2xpZW50T3Jp
Z2luKSwgbG9ja0lkZW50aWZpZXIsIGNsaWVudElELCBXVEZNb3ZlKG5hbWUpLCBsb2NrTW9kZSwg
c3RlYWwsIGlmQXZhaWxhYmxlLCBbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgbG9ja0lk
ZW50aWZpZXIsIGNsaWVudElEXShib29sIHN1Y2Nlc3MpIHsKICAgICAgICAgaWYgKHdlYWtUaGlz
KQogICAgICAgICAgICAgd2Vha1RoaXMtPm1fcHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVX
ZWJMb2NrUmVnaXN0cnk6OkRpZENvbXBsZXRlTG9ja1JlcXVlc3QobG9ja0lkZW50aWZpZXIsIGNs
aWVudElELCBzdWNjZXNzKSwgMCk7CiAgICAgfSwgW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlz
IH0sIGxvY2tJZGVudGlmaWVyLCBjbGllbnRJRF0gewpAQCAtNjgsMzEgKzc1LDQ4IEBAIHZvaWQg
V2ViTG9ja1JlZ2lzdHJ5UHJveHk6OnJlbGVhc2VMb2NrKFdlYkNvcmU6OkNsaWVudE9yaWdpbiYm
IGNsaWVudE9yaWdpbiwgV2ViCiB7CiAgICAgTUVTU0FHRV9DSEVDSyhsb2NrSWRlbnRpZmllci5w
cm9jZXNzSWRlbnRpZmllcigpID09IG1fcHJvY2Vzcy5jb3JlUHJvY2Vzc0lkZW50aWZpZXIoKSk7
CiAgICAgTUVTU0FHRV9DSEVDSyhjbGllbnRJRC5wcm9jZXNzSWRlbnRpZmllcigpID09IG1fcHJv
Y2Vzcy5jb3JlUHJvY2Vzc0lkZW50aWZpZXIoKSk7Ci0gICAgbV9wcm9jZXNzLndlYnNpdGVEYXRh
U3RvcmUoKS53ZWJMb2NrUmVnaXN0cnkoKS5yZWxlYXNlTG9jayhtX3Byb2Nlc3Muc2Vzc2lvbklE
KCksIFdURk1vdmUoY2xpZW50T3JpZ2luKSwgbG9ja0lkZW50aWZpZXIsIGNsaWVudElELCBXVEZN
b3ZlKG5hbWUpKTsKKyAgICBpZiAoYXV0byogZGF0YVN0b3JlID0gbV9wcm9jZXNzLndlYnNpdGVE
YXRhU3RvcmUoKSkKKyAgICAgICAgZGF0YVN0b3JlLT53ZWJMb2NrUmVnaXN0cnkoKS5yZWxlYXNl
TG9jayhtX3Byb2Nlc3Muc2Vzc2lvbklEKCksIFdURk1vdmUoY2xpZW50T3JpZ2luKSwgbG9ja0lk
ZW50aWZpZXIsIGNsaWVudElELCBXVEZNb3ZlKG5hbWUpKTsKIH0KIAogdm9pZCBXZWJMb2NrUmVn
aXN0cnlQcm94eTo6YWJvcnRMb2NrUmVxdWVzdChXZWJDb3JlOjpDbGllbnRPcmlnaW4mJiBjbGll
bnRPcmlnaW4sIFdlYkNvcmU6OldlYkxvY2tJZGVudGlmaWVyIGxvY2tJZGVudGlmaWVyLCBXZWJD
b3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciBjbGllbnRJRCwgU3RyaW5nJiYg
bmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKICAgICBNRVNTQUdFX0NIRUNLKGxvY2tJZGVudGlmaWVyLnByb2Nlc3NJZGVudGlmaWVyKCkg
PT0gbV9wcm9jZXNzLmNvcmVQcm9jZXNzSWRlbnRpZmllcigpKTsKICAgICBNRVNTQUdFX0NIRUNL
KGNsaWVudElELnByb2Nlc3NJZGVudGlmaWVyKCkgPT0gbV9wcm9jZXNzLmNvcmVQcm9jZXNzSWRl
bnRpZmllcigpKTsKLSAgICBtX3Byb2Nlc3Mud2Vic2l0ZURhdGFTdG9yZSgpLndlYkxvY2tSZWdp
c3RyeSgpLmFib3J0TG9ja1JlcXVlc3QobV9wcm9jZXNzLnNlc3Npb25JRCgpLCBXVEZNb3ZlKGNs
aWVudE9yaWdpbiksIGxvY2tJZGVudGlmaWVyLCBjbGllbnRJRCwgV1RGTW92ZShuYW1lKSwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIGF1dG8qIGRhdGFTdG9yZSA9IG1fcHJvY2Vz
cy53ZWJzaXRlRGF0YVN0b3JlKCk7CisgICAgaWYgKCFkYXRhU3RvcmUpIHsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoZmFsc2UpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZGF0
YVN0b3JlLT53ZWJMb2NrUmVnaXN0cnkoKS5hYm9ydExvY2tSZXF1ZXN0KG1fcHJvY2Vzcy5zZXNz
aW9uSUQoKSwgV1RGTW92ZShjbGllbnRPcmlnaW4pLCBsb2NrSWRlbnRpZmllciwgY2xpZW50SUQs
IFdURk1vdmUobmFtZSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBX
ZWJMb2NrUmVnaXN0cnlQcm94eTo6c25hcHNob3QoV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYgY2xp
ZW50T3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OldlYkxvY2tNYW5hZ2Vy
U25hcHNob3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgbV9wcm9jZXNzLndlYnNp
dGVEYXRhU3RvcmUoKS53ZWJMb2NrUmVnaXN0cnkoKS5zbmFwc2hvdChtX3Byb2Nlc3Muc2Vzc2lv
bklEKCksIFdURk1vdmUoY2xpZW50T3JpZ2luKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OworICAgIGF1dG8qIGRhdGFTdG9yZSA9IG1fcHJvY2Vzcy53ZWJzaXRlRGF0YVN0b3JlKCk7Cisg
ICAgaWYgKCFkYXRhU3RvcmUpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV2ViQ29yZTo6
V2ViTG9ja01hbmFnZXJTbmFwc2hvdCB7IH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgZGF0YVN0b3JlLT53ZWJMb2NrUmVnaXN0cnkoKS5zbmFwc2hvdChtX3Byb2Nlc3Muc2Vzc2lv
bklEKCksIFdURk1vdmUoY2xpZW50T3JpZ2luKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OwogfQogCiB2b2lkIFdlYkxvY2tSZWdpc3RyeVByb3h5OjpjbGllbnRJc0dvaW5nQXdheShXZWJD
b3JlOjpDbGllbnRPcmlnaW4mJiBjbGllbnRPcmlnaW4sIFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRJZGVudGlmaWVyIGNsaWVudElEKQogewogICAgIE1FU1NBR0VfQ0hFQ0soY2xpZW50
SUQucHJvY2Vzc0lkZW50aWZpZXIoKSA9PSBtX3Byb2Nlc3MuY29yZVByb2Nlc3NJZGVudGlmaWVy
KCkpOwotICAgIG1fcHJvY2Vzcy53ZWJzaXRlRGF0YVN0b3JlKCkud2ViTG9ja1JlZ2lzdHJ5KCku
Y2xpZW50SXNHb2luZ0F3YXkobV9wcm9jZXNzLnNlc3Npb25JRCgpLCBXVEZNb3ZlKGNsaWVudE9y
aWdpbiksIGNsaWVudElEKTsKKyAgICBpZiAoYXV0byogZGF0YVN0b3JlID0gV2Vic2l0ZURhdGFT
dG9yZTo6ZXhpc3RpbmdEYXRhU3RvcmVGb3JTZXNzaW9uSUQobV9wcm9jZXNzLnNlc3Npb25JRCgp
KSkKKyAgICAgICAgZGF0YVN0b3JlLT53ZWJMb2NrUmVnaXN0cnkoKS5jbGllbnRJc0dvaW5nQXdh
eShtX3Byb2Nlc3Muc2Vzc2lvbklEKCksIFdURk1vdmUoY2xpZW50T3JpZ2luKSwgY2xpZW50SUQp
OwogfQogCiB2b2lkIFdlYkxvY2tSZWdpc3RyeVByb3h5Ojpwcm9jZXNzRGlkRXhpdCgpCiB7Ci0g
ICAgaWYgKG1faGFzRXZlclJlcXVlc3RlZExvY2tzKQotICAgICAgICBtX3Byb2Nlc3Mud2Vic2l0
ZURhdGFTdG9yZSgpLndlYkxvY2tSZWdpc3RyeSgpLmNsaWVudHNBcmVHb2luZ0F3YXkobV9wcm9j
ZXNzLmNvcmVQcm9jZXNzSWRlbnRpZmllcigpKTsKKyAgICBpZiAoIW1faGFzRXZlclJlcXVlc3Rl
ZExvY2tzKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoYXV0byogZGF0YVN0b3JlID0gV2Vi
c2l0ZURhdGFTdG9yZTo6ZXhpc3RpbmdEYXRhU3RvcmVGb3JTZXNzaW9uSUQobV9wcm9jZXNzLnNl
c3Npb25JRCgpKSkKKyAgICAgICAgZGF0YVN0b3JlLT53ZWJMb2NrUmVnaXN0cnkoKS5jbGllbnRz
QXJlR29pbmdBd2F5KG1fcHJvY2Vzcy5jb3JlUHJvY2Vzc0lkZW50aWZpZXIoKSk7CiB9CiAKICN1
bmRlZiBNRVNTQUdFX0NIRUNLCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cAppbmRleCAzNmJhOTkyYzQ4MDAuLjNkMjhjODIwNjQyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC05NzgsNyArOTc4LDggQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnN3YXBUb1Byb3Zpc2lvbmFsUGFnZShzdGQ6OnVuaXF1ZV9wdHI8UHJvdmlzaW9uYWxQYWdl
UHJveHk+IHAKICAgICBtX3Byb2Nlc3MgPSBwcm92aXNpb25hbFBhZ2UtPnByb2Nlc3MoKTsKICAg
ICBtX3dlYlBhZ2VJRCA9IHByb3Zpc2lvbmFsUGFnZS0+d2ViUGFnZUlEKCk7CiAgICAgcGFnZUNs
aWVudCgpLmRpZENoYW5nZVdlYlBhZ2VJRCgpOwotICAgIG1fd2Vic2l0ZURhdGFTdG9yZSA9IG1f
cHJvY2Vzcy0+d2Vic2l0ZURhdGFTdG9yZSgpOworICAgIEFTU0VSVChtX3Byb2Nlc3MtPndlYnNp
dGVEYXRhU3RvcmUoKSk7CisgICAgbV93ZWJzaXRlRGF0YVN0b3JlID0gKm1fcHJvY2Vzcy0+d2Vi
c2l0ZURhdGFTdG9yZSgpOwogCiAjaWYgSEFWRShWSVNJQklMSVRZX1BST1BBR0FUSU9OX1ZJRVcp
CiAgICAgbV9jb250ZXh0SURGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb25JbldlYlByb2Nlc3MgPSBw
cm92aXNpb25hbFBhZ2UtPmNvbnRleHRJREZvclZpc2liaWxpdHlQcm9wYWdhdGlvbkluV2ViUHJv
Y2VzcygpOwpAQCAtMzYyNCw3ICszNjI1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNvbW1pdFBy
b3Zpc2lvbmFsUGFnZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWVJbmZvRGF0YSYKICAg
ICByZW1vdmVBbGxNZXNzYWdlUmVjZWl2ZXJzKCk7CiAgICAgYXV0byogbmF2aWdhdGlvbiA9IG5h
dmlnYXRpb25TdGF0ZSgpLm5hdmlnYXRpb24obV9wcm92aXNpb25hbFBhZ2UtPm5hdmlnYXRpb25J
RCgpKTsKICAgICBib29sIGRpZFN1c3BlbmRQcmV2aW91c1BhZ2UgPSBuYXZpZ2F0aW9uICYmICFt
X3Byb3Zpc2lvbmFsUGFnZS0+aXNQcm9jZXNzU3dhcHBpbmdPbk5hdmlnYXRpb25SZXNwb25zZSgp
ID8gc3VzcGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJsZSgqbmF2aWdhdGlvbiwgbWFpbkZyYW1lSURJ
blByZXZpb3VzUHJvY2VzcywgbV9wcm92aXNpb25hbFBhZ2UtPnByb2Nlc3NTd2FwUmVxdWVzdGVk
QnlDbGllbnQoKSwgc2hvdWxkRGVsYXlDbG9zaW5nVW50aWxGaXJzdExheWVyRmx1c2gpIDogZmFs
c2U7Ci0gICAgbV9wcm9jZXNzLT5yZW1vdmVXZWJQYWdlKCp0aGlzLCBtX3dlYnNpdGVEYXRhU3Rv
cmUucHRyKCkgPT0gJm1fcHJvdmlzaW9uYWxQYWdlLT5wcm9jZXNzKCkud2Vic2l0ZURhdGFTdG9y
ZSgpID8gV2ViUHJvY2Vzc1Byb3h5OjpFbmRzVXNpbmdEYXRhU3RvcmU6Ok5vIDogV2ViUHJvY2Vz
c1Byb3h5OjpFbmRzVXNpbmdEYXRhU3RvcmU6Olllcyk7CisgICAgbV9wcm9jZXNzLT5yZW1vdmVX
ZWJQYWdlKCp0aGlzLCBtX3dlYnNpdGVEYXRhU3RvcmUucHRyKCkgPT0gbV9wcm92aXNpb25hbFBh
Z2UtPnByb2Nlc3MoKS53ZWJzaXRlRGF0YVN0b3JlKCkgPyBXZWJQcm9jZXNzUHJveHk6OkVuZHNV
c2luZ0RhdGFTdG9yZTo6Tm8gOiBXZWJQcm9jZXNzUHJveHk6OkVuZHNVc2luZ0RhdGFTdG9yZTo6
WWVzKTsKIAogICAgIC8vIFRoZXJlIGlzIG5vIHdheSB3ZSdsbCBiZSBhYmxlIHRvIHJldHVybiB0
byB0aGUgcGFnZSBpbiB0aGUgcHJldmlvdXMgcGFnZSBzbyBjbG9zZSBpdC4KICAgICBpZiAoIWRp
ZFN1c3BlbmRQcmV2aW91c1BhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c0NhY2hlLmNwcAppbmRleCA1MWZjYmU2NjM0MWEuLmQxOGQ5ZTE5N2Y4YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc0NhY2hlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzQ2FjaGUuY3BwCkBAIC03Niw4ICs3Niw3IEBAIGJv
b2wgV2ViUHJvY2Vzc0NhY2hlOjpjYW5DYWNoZVByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5JiBwcm9j
ZXNzKSBjb25zdAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgYXV0byBzZXNz
aW9uSUQgPSBwcm9jZXNzLndlYnNpdGVEYXRhU3RvcmUoKS5zZXNzaW9uSUQoKTsKLSAgICBpZiAo
c2Vzc2lvbklELmlzRXBoZW1lcmFsKCkgJiYgIXByb2Nlc3MucHJvY2Vzc1Bvb2woKS5oYXNQYWdl
c1VzaW5nV2Vic2l0ZURhdGFTdG9yZShwcm9jZXNzLndlYnNpdGVEYXRhU3RvcmUoKSkpIHsKKyAg
ICBpZiAoIXByb2Nlc3Mud2Vic2l0ZURhdGFTdG9yZSgpKSB7CiAgICAgICAgIFdFQlBST0NFU1ND
QUNIRV9SRUxFQVNFX0xPRygiY2FuQ2FjaGVQcm9jZXNzOiBOb3QgY2FjaGluZyBwcm9jZXNzIGJl
Y2F1c2UgdGhpcyBzZXNzaW9uIGhhcyBiZWVuIGRlc3Ryb3llZCIsIHByb2Nlc3MucHJvY2Vzc0lk
ZW50aWZpZXIoKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC0xNTMsNyArMTUy
LDcgQEAgUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gV2ViUHJvY2Vzc0NhY2hlOjp0YWtlUHJvY2Vz
cyhjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZUQKICAgICBpZiAoaXQgPT0gbV9wcm9jZXNzZXNQ
ZXJSZWdpc3RyYWJsZURvbWFpbi5lbmQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAg
ICBpZiAoJml0LT52YWx1ZS0+cHJvY2VzcygpLndlYnNpdGVEYXRhU3RvcmUoKSAhPSAmZGF0YVN0
b3JlKQorICAgIGlmIChpdC0+dmFsdWUtPnByb2Nlc3MoKS53ZWJzaXRlRGF0YVN0b3JlKCkgIT0g
JmRhdGFTdG9yZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAoaXQtPnZhbHVl
LT5wcm9jZXNzKCkuY2FwdGl2ZVBvcnRhbE1vZGUoKSAhPSBjYXB0aXZlUG9ydGFsTW9kZSkKQEAg
LTIxMiw3ICsyMTEsOCBAQCB2b2lkIFdlYlByb2Nlc3NDYWNoZTo6Y2xlYXJBbGxQcm9jZXNzZXNG
b3JTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKICAgICBWZWN0b3I8V2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4+IGtleXNUb1JlbW92ZTsKICAgICBmb3IgKGF1dG8mIHBhaXIg
OiBtX3Byb2Nlc3Nlc1BlclJlZ2lzdHJhYmxlRG9tYWluKSB7Ci0gICAgICAgIGlmIChwYWlyLnZh
bHVlLT5wcm9jZXNzKCkud2Vic2l0ZURhdGFTdG9yZSgpLnNlc3Npb25JRCgpID09IHNlc3Npb25J
RCkgeworICAgICAgICBhdXRvKiBkYXRhU3RvcmUgPSBwYWlyLnZhbHVlLT5wcm9jZXNzKCkud2Vi
c2l0ZURhdGFTdG9yZSgpOworICAgICAgICBpZiAoIWRhdGFTdG9yZSB8fCBkYXRhU3RvcmUtPnNl
c3Npb25JRCgpID09IHNlc3Npb25JRCkgewogICAgICAgICAgICAgV0VCUFJPQ0VTU0NBQ0hFX1JF
TEVBU0VfTE9HKCJjbGVhckFsbFByb2Nlc3Nlc0ZvclNlc3Npb246IEV2aWN0aW5nIHByb2Nlc3Mg
YmVjYXVzZSBpdHMgc2Vzc2lvbiB3YXMgZGVzdHJveWVkIiwgcGFpci52YWx1ZS0+cHJvY2Vzcygp
LnByb2Nlc3NJZGVudGlmaWVyKCkpOwogICAgICAgICAgICAga2V5c1RvUmVtb3ZlLmFwcGVuZChw
YWlyLmtleSk7CiAgICAgICAgIH0KQEAgLTIyMiw3ICsyMjIsOCBAQCB2b2lkIFdlYlByb2Nlc3ND
YWNoZTo6Y2xlYXJBbGxQcm9jZXNzZXNGb3JTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCkKIAogICAgIFZlY3Rvcjx1aW50NjRfdD4gcGVuZGluZ1JlcXVlc3RzVG9SZW1vdmU7CiAgICAg
Zm9yIChhdXRvJiBwYWlyIDogbV9wZW5kaW5nQWRkUmVxdWVzdHMpIHsKLSAgICAgICAgaWYgKHBh
aXIudmFsdWUtPnByb2Nlc3MoKS53ZWJzaXRlRGF0YVN0b3JlKCkuc2Vzc2lvbklEKCkgPT0gc2Vz
c2lvbklEKSB7CisgICAgICAgIGF1dG8qIGRhdGFTdG9yZSA9IHBhaXIudmFsdWUtPnByb2Nlc3Mo
KS53ZWJzaXRlRGF0YVN0b3JlKCk7CisgICAgICAgIGlmICghZGF0YVN0b3JlIHx8IGRhdGFTdG9y
ZS0+c2Vzc2lvbklEKCkgPT0gc2Vzc2lvbklEKSB7CiAgICAgICAgICAgICBXRUJQUk9DRVNTQ0FD
SEVfUkVMRUFTRV9MT0coImNsZWFyQWxsUHJvY2Vzc2VzRm9yU2Vzc2lvbjogRXZpY3RpbmcgcHJv
Y2VzcyBiZWNhdXNlIGl0cyBzZXNzaW9uIHdhcyBkZXN0cm95ZWQiLCBwYWlyLnZhbHVlLT5wcm9j
ZXNzKCkucHJvY2Vzc0lkZW50aWZpZXIoKSk7CiAgICAgICAgICAgICBwZW5kaW5nUmVxdWVzdHNU
b1JlbW92ZS5hcHBlbmQocGFpci5rZXkpOwogICAgICAgICB9CkBAIC0yNzYsNyArMjc3LDggQEAg
V2ViUHJvY2Vzc0NhY2hlOjpDYWNoZWRQcm9jZXNzOjpDYWNoZWRQcm9jZXNzKFJlZjxXZWJQcm9j
ZXNzUHJveHk+JiYgcHJvY2VzcykKICNlbmRpZgogewogICAgIFJFTEVBU0VfQVNTRVJUKCFtX3By
b2Nlc3MtPnBhZ2VDb3VudCgpKTsKLSAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX01FU1NBR0UoIW1f
cHJvY2Vzcy0+d2Vic2l0ZURhdGFTdG9yZSgpLnByb2Nlc3NlcygpLmNvbnRhaW5zKCptX3Byb2Nl
c3MpLCAiT25seSBwcm9jZXNzZXMgd2l0aCBwYWdlcyBzaG91bGQgYmUgcmVnaXN0ZXJlZCB3aXRo
IHRoZSBkYXRhIHN0b3JlIik7CisgICAgYXV0byogZGF0YVN0b3JlID0gbV9wcm9jZXNzLT53ZWJz
aXRlRGF0YVN0b3JlKCk7CisgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9NRVNTQUdFKGRhdGFTdG9y
ZSAmJiAhZGF0YVN0b3JlLT5wcm9jZXNzZXMoKS5jb250YWlucygqbV9wcm9jZXNzKSwgIk9ubHkg
cHJvY2Vzc2VzIHdpdGggcGFnZXMgc2hvdWxkIGJlIHJlZ2lzdGVyZWQgd2l0aCB0aGUgZGF0YSBz
dG9yZSIpOwogICAgIG1fcHJvY2Vzcy0+c2V0SXNJblByb2Nlc3NDYWNoZSh0cnVlKTsKICAgICBt
X2V2aWN0aW9uVGltZXIuc3RhcnRPbmVTaG90KGNhY2hlZFByb2Nlc3NMaWZldGltZSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggNDVlMzU2ZjE2
NWIwLi5mODlmOWUwOTU1MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5jcHAKQEAgLTU3Niw3ICs1NzYsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjplc3RhYmxp
c2hSZW1vdGVXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoUmVtbwogCiAg
ICAgLy8gUHJpb3JpdGl6ZSB0aGUgcmVxdWVzdGluZyBXZWJQcm9jZXNzIGZvciBydW5uaW5nIHRo
ZSBzZXJ2aWNlIHdvcmtlci4KICAgICBpZiAoIXJlbW90ZVdvcmtlclByb2Nlc3NQcm94eSAmJiAh
c191c2VTZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzICYmIHJlcXVlc3RpbmdQcm9jZXNzKSB7
Ci0gICAgICAgIGlmICgmcmVxdWVzdGluZ1Byb2Nlc3MtPndlYnNpdGVEYXRhU3RvcmUoKSA9PSB3
ZWJzaXRlRGF0YVN0b3JlICYmIHJlcXVlc3RpbmdQcm9jZXNzLT5pc01hdGNoaW5nUmVnaXN0cmFi
bGVEb21haW4ocmVnaXN0cmFibGVEb21haW4pKQorICAgICAgICBpZiAocmVxdWVzdGluZ1Byb2Nl
c3MtPndlYnNpdGVEYXRhU3RvcmUoKSA9PSB3ZWJzaXRlRGF0YVN0b3JlICYmIHJlcXVlc3RpbmdQ
cm9jZXNzLT5pc01hdGNoaW5nUmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21haW4pKQog
ICAgICAgICAgICAgdXNlUHJvY2Vzc0ZvclJlbW90ZVdvcmtlcnMoKnJlcXVlc3RpbmdQcm9jZXNz
KTsKICAgICB9CiAKQEAgLTU4NCw3ICs1ODQsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjplc3Rh
Ymxpc2hSZW1vdGVXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoUmVtbwog
ICAgICAgICBmb3IgKGF1dG8mIHByb2Nlc3MgOiBwcm9jZXNzUG9vbC0+bV9wcm9jZXNzZXMpIHsK
ICAgICAgICAgICAgIGlmIChwcm9jZXNzLnB0cigpID09IHByb2Nlc3NQb29sLT5tX3ByZXdhcm1l
ZFByb2Nlc3MuZ2V0KCkgfHwgcHJvY2Vzcy0+aXNEdW1teVByb2Nlc3NQcm94eSgpKQogICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgaWYgKCZwcm9jZXNzLT53ZWJzaXRlRGF0
YVN0b3JlKCkgIT0gd2Vic2l0ZURhdGFTdG9yZSkKKyAgICAgICAgICAgIGlmIChwcm9jZXNzLT53
ZWJzaXRlRGF0YVN0b3JlKCkgIT0gd2Vic2l0ZURhdGFTdG9yZSkKICAgICAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgICAgIGlmICghcHJvY2Vzcy0+aXNNYXRjaGluZ1JlZ2lzdHJhYmxl
RG9tYWluKHJlZ2lzdHJhYmxlRG9tYWluKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKQEAg
LTEwOTIsNyArMTA5Miw3IEBAIFJlZjxXZWJQcm9jZXNzUHJveHk+IFdlYlByb2Nlc3NQb29sOjpw
cm9jZXNzRm9yUmVnaXN0cmFibGVEb21haW4oV2Vic2l0ZURhdGFTdG9yCiAgICAgICAgICAgICBp
ZiAocHJvY2Vzcy0+aXNSdW5uaW5nU2VydmljZVdvcmtlcnMoKSkKICAgICAgICAgICAgICAgICBj
b250aW51ZTsKICNlbmRpZgotICAgICAgICAgICAgaWYgKG11c3RNYXRjaERhdGFTdG9yZSAmJiAm
cHJvY2Vzcy0+d2Vic2l0ZURhdGFTdG9yZSgpICE9ICZ3ZWJzaXRlRGF0YVN0b3JlKQorICAgICAg
ICAgICAgaWYgKG11c3RNYXRjaERhdGFTdG9yZSAmJiBwcm9jZXNzLT53ZWJzaXRlRGF0YVN0b3Jl
KCkgIT0gJndlYnNpdGVEYXRhU3RvcmUpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgICAgICByZXR1cm4gcHJvY2VzczsKICAgICAgICAgfQpAQCAtMTEzMiw3ICsxMTMyLDcgQEAg
UmVmPFdlYlBhZ2VQcm94eT4gV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVu
dCYgcGFnZUNsaWVudCwgUmVmPEFQSToKICAgICAgICAgLy8gU2hhcmluZyBwcm9jZXNzZXMsIGUu
Zy4gd2hlbiBjcmVhdGluZyB0aGUgcGFnZSB2aWEgd2luZG93Lm9wZW4oKS4KICAgICAgICAgcHJv
Y2VzcyA9ICZwYWdlQ29uZmlndXJhdGlvbi0+cmVsYXRlZFBhZ2UoKS0+ZW5zdXJlUnVubmluZ1By
b2Nlc3MoKTsKICAgICAgICAgLy8gV2UgZG8gbm90IHN1cHBvcnQgc2V2ZXJhbCBXZWJzaXRlRGF0
YVN0b3JlcyBzaGFyaW5nIGEgc2luZ2xlIHByb2Nlc3MuCi0gICAgICAgIEFTU0VSVChwcm9jZXNz
LT5pc0R1bW15UHJvY2Vzc1Byb3h5KCkgfHwgcGFnZUNvbmZpZ3VyYXRpb24tPndlYnNpdGVEYXRh
U3RvcmUoKSA9PSAmcHJvY2Vzcy0+d2Vic2l0ZURhdGFTdG9yZSgpKTsKKyAgICAgICAgQVNTRVJU
KHByb2Nlc3MtPmlzRHVtbXlQcm9jZXNzUHJveHkoKSB8fCBwYWdlQ29uZmlndXJhdGlvbi0+d2Vi
c2l0ZURhdGFTdG9yZSgpID09IHByb2Nlc3MtPndlYnNpdGVEYXRhU3RvcmUoKSk7CiAgICAgICAg
IEFTU0VSVCgmcGFnZUNvbmZpZ3VyYXRpb24tPnJlbGF0ZWRQYWdlKCktPndlYnNpdGVEYXRhU3Rv
cmUoKSA9PSBwYWdlQ29uZmlndXJhdGlvbi0+d2Vic2l0ZURhdGFTdG9yZSgpKTsKICAgICB9IGVs
c2UgaWYgKCFtX2lzRGVsYXllZFdlYlByb2Nlc3NMYXVuY2hEaXNhYmxlZCkgewogICAgICAgICAv
LyBJbiB0aGUgY29tbW9uIGNhc2UsIHdlIGRlbGF5IHByb2Nlc3MgbGF1bmNoIHVudGlsIHNvbWV0
aGluZyBpcyBhY3R1YWxseSBsb2FkZWQgaW4gdGhlIHBhZ2UuCkBAIC0xOTgyLDcgKzE5ODIsNyBA
QCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwcm9jZXNzRm9yTmF2aWdhdGlvbkludGVybmFsKFdlYlBh
Z2VQcm94eSYgcGFnZSwgY29uc3QgQVBJOgogICAgICAgICBMT0coUHJvY2Vzc1N3YXBwaW5nLCAi
KFByb2Nlc3NTd2FwcGluZykgQ29uc2lkZXJpbmcgcmUtdXNlIG9mIGEgcHJldmlvdXNseSBjYWNo
ZWQgcHJvY2VzcyBmb3IgZG9tYWluICVzIiwgdGFyZ2V0UmVnaXN0cmFibGVEb21haW4uc3RyaW5n
KCkudXRmOCgpLmRhdGEoKSk7CiAKICAgICAgICAgaWYgKGF1dG8qIHByb2Nlc3MgPSBtX3N3YXBw
ZWRQcm9jZXNzZXNQZXJSZWdpc3RyYWJsZURvbWFpbi5nZXQodGFyZ2V0UmVnaXN0cmFibGVEb21h
aW4pKSB7Ci0gICAgICAgICAgICBpZiAoJnByb2Nlc3MtPndlYnNpdGVEYXRhU3RvcmUoKSA9PSBk
YXRhU3RvcmUucHRyKCkpIHsKKyAgICAgICAgICAgIGlmIChwcm9jZXNzLT53ZWJzaXRlRGF0YVN0
b3JlKCkgPT0gZGF0YVN0b3JlLnB0cigpKSB7CiAgICAgICAgICAgICAgICAgTE9HKFByb2Nlc3NT
d2FwcGluZywgIihQcm9jZXNzU3dhcHBpbmcpIFJldXNpbmcgYSBwcmV2aW91c2x5IGNhY2hlZCBw
cm9jZXNzIHdpdGggcGlkICVpIHRvIGNvbnRpbnVlIG5hdmlnYXRpb24gdG8gVVJMICVzIiwgcHJv
Y2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgdGFyZ2V0VVJMLnN0cmluZygpLnV0ZjgoKS5kYXRh
KCkpOwogCiAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKCpwcm9jZXNz
LCBudWxscHRyLCByZWFzb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5jcHAKaW5kZXggZDc1NmEzZDY5M2Y2Li5jNjZkNGMyNzY5MGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2lu
Y2x1ZGUgIkRvd25sb2FkUHJveHlNYXAuaCIKICNpbmNsdWRlICJMb2FkUGFyYW1ldGVycy5oIgog
I2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25J
bmZvLmgiCiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyTWVzc2Fn
ZXMuaCIKICNpbmNsdWRlICJQcm92aXNpb25hbFBhZ2VQcm94eS5oIgogI2luY2x1ZGUgIlJlbW90
ZVdvcmtlclR5cGUuaCIKQEAgLTI0MSw3ICsyNDIsNiBAQCBXZWJQcm9jZXNzUHJveHk6OldlYlBy
b2Nlc3NQcm94eShXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIFdlYnNpdGVEYXRhU3RvcmUq
CiAjZW5kaWYKICAgICAsIG1faXNSZXNwb25zaXZlKE5vT3JNYXliZTo6TWF5YmUpCiAgICAgLCBt
X3Zpc2libGVQYWdlQ291bnRlcihbdGhpc10oUmVmQ291bnRlckV2ZW50KSB7IHVwZGF0ZUJhY2tn
cm91bmRSZXNwb25zaXZlbmVzc1RpbWVyKCk7IH0pCi0gICAgLCBtX3dlYnNpdGVEYXRhU3RvcmUo
d2Vic2l0ZURhdGFTdG9yZSkKICNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKICAgICAsIG1fdXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eShtYWtlVW5pcXVlPFVz
ZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHk+KG1ha2VVbmlxdWVSZWY8VUlQcm94eUZvckNhcHR1
cmU+KCp0aGlzKSkpCiAjZW5kaWYKQEAgLTI1OSw2ICsyNTksOCBAQCBXZWJQcm9jZXNzUHJveHk6
OldlYlByb2Nlc3NQcm94eShXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIFdlYnNpdGVEYXRh
U3RvcmUqCiAKICAgICBXZWJQYXN0ZWJvYXJkUHJveHk6OnNpbmdsZXRvbigpLmFkZFdlYlByb2Nl
c3NQcm94eSgqdGhpcyk7CiAKKyAgICBpZiAod2Vic2l0ZURhdGFTdG9yZSkKKyAgICAgICAgbV9z
ZXNzaW9uSUQgPSB3ZWJzaXRlRGF0YVN0b3JlLT5zZXNzaW9uSUQoKTsKICAgICBwbGF0Zm9ybUlu
aXRpYWxpemUoKTsKIH0KIApAQCAtMzQ2LDExICszNDgsMTkgQEAgdm9pZCBXZWJQcm9jZXNzUHJv
eHk6OnNldElzSW5Qcm9jZXNzQ2FjaGUoYm9vbCB2YWx1ZSwgV2lsbFNodXREb3duIHdpbGxTaHV0
RG93bikKICAgICB9CiB9CiAKK1dlYnNpdGVEYXRhU3RvcmUqIFdlYlByb2Nlc3NQcm94eTo6d2Vi
c2l0ZURhdGFTdG9yZSgpIGNvbnN0Cit7CisgICAgaWYgKCFtX3Nlc3Npb25JRCkKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gV2Vic2l0ZURhdGFTdG9yZTo6ZXhpc3RpbmdE
YXRhU3RvcmVGb3JTZXNzaW9uSUQoKm1fc2Vzc2lvbklEKTsKK30KKwogdm9pZCBXZWJQcm9jZXNz
UHJveHk6OnNldFdlYnNpdGVEYXRhU3RvcmUoV2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlKQog
ewotICAgIEFTU0VSVCghbV93ZWJzaXRlRGF0YVN0b3JlKTsKKyAgICBBU1NFUlQoIW1fc2Vzc2lv
bklEKTsKICAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coUHJvY2VzcywgInNldFdlYnNp
dGVEYXRhU3RvcmUoKSBkYXRhU3RvcmU9JXAsIHNlc3Npb25JRD0lIiBQUkl1NjQsICZkYXRhU3Rv
cmUsIGRhdGFTdG9yZS5zZXNzaW9uSUQoKS50b1VJbnQ2NCgpKTsKLSAgICBtX3dlYnNpdGVEYXRh
U3RvcmUgPSAmZGF0YVN0b3JlOworICAgIG1fc2Vzc2lvbklEID0gZGF0YVN0b3JlLnNlc3Npb25J
RCgpOwogICAgIHVwZGF0ZVJlZ2lzdHJhdGlvbldpdGhEYXRhU3RvcmUoKTsKICAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQcm9jZXNzOjpTZXRXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyhwcm9jZXNz
UG9vbCgpLndlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzKCp0aGlzLCBkYXRhU3RvcmUpKSwg
MCk7CiAKQEAgLTM2MSwxOSArMzcxLDE3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzZXRXZWJz
aXRlRGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSkKIAogYm9vbCBXZWJQcm9j
ZXNzUHJveHk6OmlzRHVtbXlQcm9jZXNzUHJveHkoKSBjb25zdAogewotICAgIHJldHVybiBtX3dl
YnNpdGVEYXRhU3RvcmUgJiYgcHJvY2Vzc1Bvb2woKS5kdW1teVByb2Nlc3NQcm94eShtX3dlYnNp
dGVEYXRhU3RvcmUtPnNlc3Npb25JRCgpKSA9PSB0aGlzOworICAgIHJldHVybiBtX3Nlc3Npb25J
RCAmJiBwcm9jZXNzUG9vbCgpLmR1bW15UHJvY2Vzc1Byb3h5KCptX3Nlc3Npb25JRCkgPT0gdGhp
czsKIH0KIAogdm9pZCBXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZVJlZ2lzdHJhdGlvbldpdGhEYXRh
U3RvcmUoKQogewotICAgIGlmICghbV93ZWJzaXRlRGF0YVN0b3JlKQotICAgICAgICByZXR1cm47
Ci0gICAgCi0gICAgYm9vbCBzaG91bGRCZVJlZ2lzdGVyZWQgPSBwYWdlQ291bnQoKSB8fCBwcm92
aXNpb25hbFBhZ2VDb3VudCgpOwotICAgIGlmIChzaG91bGRCZVJlZ2lzdGVyZWQpCi0gICAgICAg
IG1fd2Vic2l0ZURhdGFTdG9yZS0+cmVnaXN0ZXJQcm9jZXNzKCp0aGlzKTsKLSAgICBlbHNlCi0g
ICAgICAgIG1fd2Vic2l0ZURhdGFTdG9yZS0+dW5yZWdpc3RlclByb2Nlc3MoKnRoaXMpOworICAg
IGlmIChhdXRvKiBkYXRhU3RvcmUgPSB3ZWJzaXRlRGF0YVN0b3JlKCkpIHsKKyAgICAgICAgaWYg
KHBhZ2VDb3VudCgpIHx8IHByb3Zpc2lvbmFsUGFnZUNvdW50KCkpCisgICAgICAgICAgICBkYXRh
U3RvcmUtPnJlZ2lzdGVyUHJvY2VzcygqdGhpcyk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IGRhdGFTdG9yZS0+dW5yZWdpc3RlclByb2Nlc3MoKnRoaXMpOworICAgIH0KIH0KIAogdm9pZCBX
ZWJQcm9jZXNzUHJveHk6OmFkZFByb3Zpc2lvbmFsUGFnZVByb3h5KFByb3Zpc2lvbmFsUGFnZVBy
b3h5JiBwcm92aXNpb25hbFBhZ2UpCkBAIC01OTYsNyArNjA0LDcgQEAgdm9pZCBXZWJQcm9jZXNz
UHJveHk6OmFkZEV4aXN0aW5nV2ViUGFnZShXZWJQYWdlUHJveHkmIHdlYlBhZ2UsIEJlZ2luc1Vz
aW5nRGF0YVMKICAgICBBU1NFUlQoIW1fcGFnZU1hcC5jb250YWlucyh3ZWJQYWdlLmlkZW50aWZp
ZXIoKSkpOwogICAgIEFTU0VSVCghZ2xvYmFsUGFnZU1hcCgpLmNvbnRhaW5zKHdlYlBhZ2UuaWRl
bnRpZmllcigpKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoIW1faXNJblByb2Nlc3NDYWNoZSk7Ci0g
ICAgQVNTRVJUKCFtX3dlYnNpdGVEYXRhU3RvcmUgfHwgbV93ZWJzaXRlRGF0YVN0b3JlID09ICZ3
ZWJQYWdlLndlYnNpdGVEYXRhU3RvcmUoKSk7CisgICAgQVNTRVJUKCFtX3Nlc3Npb25JRCB8fCB3
ZWJzaXRlRGF0YVN0b3JlKCkgPT0gJndlYlBhZ2Uud2Vic2l0ZURhdGFTdG9yZSgpKTsKIAogICAg
IGlmIChiZWdpbnNVc2luZ0RhdGFTdG9yZSA9PSBCZWdpbnNVc2luZ0RhdGFTdG9yZTo6WWVzKSB7
CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fcHJvY2Vzc1Bvb2wpOwpAQCAtODE1LDcgKzgyMywx
MSBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6dXBkYXRlQmFja0ZvcndhcmRJdGVtKGNvbnN0IEJh
Y2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSYgaXRlbQogCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6Z2V0
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7Ci0gICAgd2Vi
c2l0ZURhdGFTdG9yZSgpLmdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigqdGhpcywgV1RGTW92
ZShyZXBseSkpOworICAgIGF1dG8qIGRhdGFTdG9yZSA9IHdlYnNpdGVEYXRhU3RvcmUoKTsKKyAg
ICBpZiAoIWRhdGFTdG9yZSkKKyAgICAgICAgcmV0dXJuIHJlcGx5KHsgfSk7CisKKyAgICBkYXRh
U3RvcmUtPmdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigqdGhpcywgV1RGTW92ZShyZXBseSkp
OwogfQogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQpAQCAtMTcwMSwxMSArMTcxMywxMiBAQCB2
b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JNYWluRnJhbWUo
Y29uc3QgVVJMJiB1cmwpCiAgICAgfQogCiAgICAgYXV0byByZWdpc3RyYWJsZURvbWFpbiA9IFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHsgdXJsIH07Ci0gICAgaWYgKG1fcmVnaXN0cmFibGVE
b21haW4gJiYgKm1fcmVnaXN0cmFibGVEb21haW4gIT0gcmVnaXN0cmFibGVEb21haW4pIHsKKyAg
ICBhdXRvKiBkYXRhU3RvcmUgPSB3ZWJzaXRlRGF0YVN0b3JlKCk7CisgICAgaWYgKGRhdGFTdG9y
ZSAmJiBtX3JlZ2lzdHJhYmxlRG9tYWluICYmICptX3JlZ2lzdHJhYmxlRG9tYWluICE9IHJlZ2lz
dHJhYmxlRG9tYWluKSB7CiAgICAgICAgIGlmIChpc1J1bm5pbmdTZXJ2aWNlV29ya2VycygpKQot
ICAgICAgICAgICAgd2Vic2l0ZURhdGFTdG9yZSgpLm5ldHdvcmtQcm9jZXNzKCkudGVybWluYXRl
UmVtb3RlV29ya2VyQ29udGV4dENvbm5lY3Rpb25XaGVuUG9zc2libGUoUmVtb3RlV29ya2VyVHlw
ZTo6U2VydmljZVdvcmtlciwgd2Vic2l0ZURhdGFTdG9yZSgpLnNlc3Npb25JRCgpLCAqbV9yZWdp
c3RyYWJsZURvbWFpbiwgY29yZVByb2Nlc3NJZGVudGlmaWVyKCkpOworICAgICAgICAgICAgZGF0
YVN0b3JlLT5uZXR3b3JrUHJvY2VzcygpLnRlcm1pbmF0ZVJlbW90ZVdvcmtlckNvbnRleHRDb25u
ZWN0aW9uV2hlblBvc3NpYmxlKFJlbW90ZVdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIsIGRhdGFT
dG9yZS0+c2Vzc2lvbklEKCksICptX3JlZ2lzdHJhYmxlRG9tYWluLCBjb3JlUHJvY2Vzc0lkZW50
aWZpZXIoKSk7CiAgICAgICAgIGlmIChpc1J1bm5pbmdTaGFyZWRXb3JrZXJzKCkpCi0gICAgICAg
ICAgICB3ZWJzaXRlRGF0YVN0b3JlKCkubmV0d29ya1Byb2Nlc3MoKS50ZXJtaW5hdGVSZW1vdGVX
b3JrZXJDb250ZXh0Q29ubmVjdGlvbldoZW5Qb3NzaWJsZShSZW1vdGVXb3JrZXJUeXBlOjpTaGFy
ZWRXb3JrZXIsIHdlYnNpdGVEYXRhU3RvcmUoKS5zZXNzaW9uSUQoKSwgKm1fcmVnaXN0cmFibGVE
b21haW4sIGNvcmVQcm9jZXNzSWRlbnRpZmllcigpKTsKKyAgICAgICAgICAgIGRhdGFTdG9yZS0+
bmV0d29ya1Byb2Nlc3MoKS50ZXJtaW5hdGVSZW1vdGVXb3JrZXJDb250ZXh0Q29ubmVjdGlvbldo
ZW5Qb3NzaWJsZShSZW1vdGVXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIsIGRhdGFTdG9yZS0+c2Vz
c2lvbklEKCksICptX3JlZ2lzdHJhYmxlRG9tYWluLCBjb3JlUHJvY2Vzc0lkZW50aWZpZXIoKSk7
CiAKICAgICAgICAgLy8gTnVsbCBvdXQgcmVnaXN0cmFibGUgZG9tYWluIHNpbmNlIHRoaXMgcHJv
Y2VzcyBoYXMgbm93IGJlZW4gdXNlZCBmb3Igc2V2ZXJhbCBkb21haW5zLgogICAgICAgICBtX3Jl
Z2lzdHJhYmxlRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4geyB9OwpAQCAtMTc1
Miw4ICsxNzY1LDggQEAgV2ViUHJvY2Vzc1Bvb2wmIFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc1Bv
b2woKSBjb25zdAogCiBQQUw6OlNlc3Npb25JRCBXZWJQcm9jZXNzUHJveHk6OnNlc3Npb25JRCgp
IGNvbnN0CiB7Ci0gICAgQVNTRVJUKG1fd2Vic2l0ZURhdGFTdG9yZSk7Ci0gICAgcmV0dXJuIG1f
d2Vic2l0ZURhdGFTdG9yZS0+c2Vzc2lvbklEKCk7CisgICAgQVNTRVJUKG1fc2Vzc2lvbklEKTsK
KyAgICByZXR1cm4gKm1fc2Vzc2lvbklEOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6Y3Jl
YXRlU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIoU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJJZGVudGlm
aWVyIGlkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5o
CmluZGV4IDRjMjJkYWIxODBlMC4uNzYyNzg1MzE5NjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkuaApAQCAtMTY3LDcgKzE2Nyw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIGVuYWJsZVJlbW90ZVdvcmtlcnMoUmVtb3RlV29ya2VyVHlwZSwgY29uc3QgVXNlckNvbnRl
bnRDb250cm9sbGVySWRlbnRpZmllciYpOwogICAgIHZvaWQgZGlzYWJsZVJlbW90ZVdvcmtlcnMo
UmVtb3RlV29ya2VyVHlwZSk7CiAKLSAgICBXZWJzaXRlRGF0YVN0b3JlJiB3ZWJzaXRlRGF0YVN0
b3JlKCkgY29uc3QgeyBBU1NFUlQobV93ZWJzaXRlRGF0YVN0b3JlKTsgcmV0dXJuICptX3dlYnNp
dGVEYXRhU3RvcmU7IH0KKyAgICBXZWJzaXRlRGF0YVN0b3JlKiB3ZWJzaXRlRGF0YVN0b3JlKCkg
Y29uc3Q7CiAgICAgdm9pZCBzZXRXZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmUmKTsK
ICAgICAKICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdDsKQEAgLTYxNyw4ICs2
MTcsNyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wg
d2ViUHJvY2Vzc0lzUmVzcG9uc2l2ZSk+PiBtX2lzUmVzcG9uc2l2ZUNhbGxiYWNrczsKIAogICAg
IFZpc2libGVXZWJQYWdlQ291bnRlciBtX3Zpc2libGVQYWdlQ291bnRlcjsKLQotICAgIFJlZlB0
cjxXZWJzaXRlRGF0YVN0b3JlPiBtX3dlYnNpdGVEYXRhU3RvcmU7CisgICAgc3RkOjpvcHRpb25h
bDxQQUw6OlNlc3Npb25JRD4gbV9zZXNzaW9uSUQ7CiAKICAgICBib29sIG1faXNVbmRlck1lbW9y
eVByZXNzdXJlIHsgZmFsc2UgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvZ2xpYi9XZWJQcm9jZXNzUHJveHlHTGliLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2dsaWIvV2ViUHJvY2Vzc1Byb3h5R0xpYi5jcHAKaW5kZXggODY0ZDBlMzZmYjhkLi40YmY5N2Uz
NGVlYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vz
c1Byb3h5R0xpYi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJQcm9j
ZXNzUHJveHlHTGliLmNwcApAQCAtNDIsNyArNDIsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6
cGxhdGZvcm1HZXRMYXVuY2hPcHRpb25zKFByb2Nlc3NMYXVuY2hlcjo6TGF1bmNoT3B0aW9ucyYg
bAogICAgIGxhdW5jaE9wdGlvbnMuZXh0cmFJbml0aWFsaXphdGlvbkRhdGEuc2V0KCJlbmFibGUt
c2FuZGJveCJfcywgbV9wcm9jZXNzUG9vbC0+c2FuZGJveEVuYWJsZWQoKSA/ICJ0cnVlIl9zIDog
ImZhbHNlIl9zKTsKIAogICAgIGlmIChtX3Byb2Nlc3NQb29sLT5zYW5kYm94RW5hYmxlZCgpKSB7
Ci0gICAgICAgIFdlYnNpdGVEYXRhU3RvcmUqIGRhdGFTdG9yZSA9IG1fd2Vic2l0ZURhdGFTdG9y
ZS5nZXQoKTsKKyAgICAgICAgV2Vic2l0ZURhdGFTdG9yZSogZGF0YVN0b3JlID0gd2Vic2l0ZURh
dGFTdG9yZSgpOwogICAgICAgICBpZiAoIWRhdGFTdG9yZSkgewogICAgICAgICAgICAgLy8gUHJl
d2FybWVkIHByb2Nlc3NlcyBkb24ndCBoYXZlIGEgV2Vic2l0ZURhdGFTdG9yZSB5ZXQsIHNvIHVz
ZSB0aGUgcHJpbWFyeSBXZWJzaXRlRGF0YVN0b3JlIGZyb20gdGhlIFdlYlByb2Nlc3NQb29sLgog
ICAgICAgICAgICAgLy8gVGhlIHByb2Nlc3Mgd29uJ3QgYmUgdXNlZCBpZiBjdXJyZW50IFdlYnNp
dGVEYXRhU3RvcmUgaXMgZGlmZmVyZW50IHRoYW4gdGhlIFdlYlByb2Nlc3NQb29sIHByaW1hcnkg
b25lLgotLSAKMi4zMi4wIChBcHBsZSBHaXQtMTMyKQoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>459522</attachid>
            <date>2022-05-17 19:19:14 -0700</date>
            <delta_ts>2022-05-17 20:25:02 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-238892-20220517191913.patch</filename>
            <type>text/plain</type>
            <size>30242</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">RnJvbSBmZjQ0ZjY5MTcxMDc1MDc3NmNiYjY0OTU3NmI5Y2Q2YTMyOGM0N2U4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBTaWh1aSBMaXUgPHNpaHVpX2xpdUBhcHBsZS5jb20+CkRhdGU6
IFR1ZSwgMTcgTWF5IDIwMjIgMTI6NTI6MjcgLTA3MDAKU3ViamVjdDogW1BBVENIXSBXZWJQcm9j
ZXNzUHJveHkgc2hvdWxkIG5vdCBob2xkIFdlYnNpdGVEYXRhU3RvcmUgYWxpdmUgd2hlbgogdGhl
cmUgaXMgbm8gcGFnZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4
ODkyCiA8cmRhcjovL3Byb2JsZW0vOTE3MTU1MTc+CgpSZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0
LgoKV2ViUHJvY2Vzc1Byb3h5IGNhbiBvdXRsaXZlIFdlYlBhZ2VQcm94eSwgYW5kIGJlY2F1c2Ug
V2ViUHJvY2Vzc1Byb3h5IGhvbGRzIHN0cm9uZyByZWZlcmVuY2UgdG8gV2Vic2l0ZURhdGFTdG9y
ZSwKV2Vic2l0ZURhdGFTdG9yZSB3aWxsIGJlIGtlcHQgYWxpdmUgZXZlbiB3aGVuIGl0J3Mgbm90
IHVzZWQgYnkgYW55IHBhZ2UgYW5kIHdpbGwgbm90IGJlIHVzZWQgYnkgYW55IHBhZ2UuCgoqIFVJ
UHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmNwcDoKKFdlYktpdDo6R1BVUHJvY2Vzc1Byb3h5
OjpjcmVhdGVHUFVQcm9jZXNzQ29ubmVjdGlvbik6CiogVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFn
ZVByb3h5LmNwcDoKKFdlYktpdDo6UHJvdmlzaW9uYWxQYWdlUHJveHk6OlByb3Zpc2lvbmFsUGFn
ZVByb3h5KToKKFdlYktpdDo6UHJvdmlzaW9uYWxQYWdlUHJveHk6On5Qcm92aXNpb25hbFBhZ2VQ
cm94eSk6CiogVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5Lmg6CiogVUlQcm9jZXNzL1N1
c3BlbmRlZFBhZ2VQcm94eS5jcHA6CihXZWJLaXQ6OlN1c3BlbmRlZFBhZ2VQcm94eTo6ZmluZFJl
dXNhYmxlU3VzcGVuZGVkUGFnZVByb2Nlc3MpOgoqIFVJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZENh
Y2hlLmNwcDoKKFdlYktpdDo6V2ViQmFja0ZvcndhcmRDYWNoZTo6cmVtb3ZlRW50cmllc0ZvclNl
c3Npb24pOgoqIFVJUHJvY2Vzcy9XZWJMb2NrUmVnaXN0cnlQcm94eS5jcHA6CihXZWJLaXQ6Oldl
YkxvY2tSZWdpc3RyeVByb3h5OjpyZXF1ZXN0TG9jayk6CihXZWJLaXQ6OldlYkxvY2tSZWdpc3Ry
eVByb3h5OjpyZWxlYXNlTG9jayk6CihXZWJLaXQ6OldlYkxvY2tSZWdpc3RyeVByb3h5OjphYm9y
dExvY2tSZXF1ZXN0KToKKFdlYktpdDo6V2ViTG9ja1JlZ2lzdHJ5UHJveHk6OnNuYXBzaG90KToK
KFdlYktpdDo6V2ViTG9ja1JlZ2lzdHJ5UHJveHk6OmNsaWVudElzR29pbmdBd2F5KToKKFdlYktp
dDo6V2ViTG9ja1JlZ2lzdHJ5UHJveHk6OnByb2Nlc3NEaWRFeGl0KToKKiBVSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcDoKKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpzd2FwVG9Qcm92aXNpb25hbFBh
Z2UpOgooV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNvbW1pdFByb3Zpc2lvbmFsUGFnZSk6CiogVUlQ
cm9jZXNzL1dlYlByb2Nlc3NDYWNoZS5jcHA6CihXZWJLaXQ6OldlYlByb2Nlc3NDYWNoZTo6Y2Fu
Q2FjaGVQcm9jZXNzIGNvbnN0KToKKFdlYktpdDo6V2ViUHJvY2Vzc0NhY2hlOjp0YWtlUHJvY2Vz
cyk6CihXZWJLaXQ6OldlYlByb2Nlc3NDYWNoZTo6Y2xlYXJBbGxQcm9jZXNzZXNGb3JTZXNzaW9u
KToKKFdlYktpdDo6V2ViUHJvY2Vzc0NhY2hlOjpDYWNoZWRQcm9jZXNzOjpDYWNoZWRQcm9jZXNz
KToKKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgooV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bDo6ZXN0YWJsaXNoUmVtb3RlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNz
KToKKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NGb3JSZWdpc3RyYWJsZURvbWFpbik6
CihXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpjcmVhdGVXZWJQYWdlKToKKFdlYktpdDo6V2ViUHJv
Y2Vzc1Bvb2w6OnByb2Nlc3NGb3JOYXZpZ2F0aW9uSW50ZXJuYWwpOgoqIFVJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkuY3BwOgooV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OldlYlByb2Nlc3NQcm94
eSk6CihXZWJLaXQ6Om1fd2ViTG9ja1JlZ2lzdHJ5KToKKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5
Ojp3ZWJzaXRlRGF0YVN0b3JlIGNvbnN0KToKKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpzZXRX
ZWJzaXRlRGF0YVN0b3JlKToKKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojppc0R1bW15UHJvY2Vz
c1Byb3h5IGNvbnN0KToKKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojp1cGRhdGVSZWdpc3RyYXRp
b25XaXRoRGF0YVN0b3JlKToKKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjphZGRFeGlzdGluZ1dl
YlBhZ2UpOgooV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmdldE5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbik6CihXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRG
b3JNYWluRnJhbWUpOgooV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnNlc3Npb25JRCBjb25zdCk6
CiogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oOgooV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6
OndlYnNpdGVEYXRhU3RvcmUgY29uc3QpOiBEZWxldGVkLgoqIFVJUHJvY2Vzcy9nbGliL1dlYlBy
b2Nlc3NQcm94eUdMaWIuY3BwOgooV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnBsYXRmb3JtR2V0
TGF1bmNoT3B0aW9ucyk6Ci0tLQogLi4uL1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQ
cm94eS5jcHAgIHwgIDQgKy0KIC4uLi9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVBy
b3h5LmNwcCB8IDExICsrLS0KIC4uLi9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVBy
b3h5LmggICB8ICAzICsrCiAuLi4vV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHku
Y3BwICAgfCAgMiArLQogLi4uL1dlYktpdC9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRDYWNoZS5j
cHAgIHwgIDMgKy0KIC4uLi9XZWJLaXQvVUlQcm9jZXNzL1dlYkxvY2tSZWdpc3RyeVByb3h5LmNw
cCB8IDM4ICsrKysrKysrKysrLS0tCiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwICAgICAgfCAgNSArLQogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc0Nh
Y2hlLmNwcCAgIHwgMTQgKystLS0KIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmNwcCAgICB8IDEwICsrLS0KIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5jcHAgICB8IDUxICsrKysrKysrKysrKy0tLS0tLS0KIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5oICAgICB8ICA1ICstCiAuLi4vVUlQcm9jZXNzL2dsaWIvV2Vi
UHJvY2Vzc1Byb3h5R0xpYi5jcHAgICAgfCAgMiArLQogMTIgZmlsZXMgY2hhbmdlZCwgOTggaW5z
ZXJ0aW9ucygrKSwgNTAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmNwcAppbmRleCBjOGExYzdkMjYzMDQuLjQ3OGZmNmJiN2Fk
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5j
cHAKQEAgLTM3MCw3ICszNzAsOSBAQCB2b2lkIEdQVVByb2Nlc3NQcm94eTo6cHJvY2Vzc1dpbGxT
aHV0RG93bihJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiAKIHZvaWQgR1BVUHJvY2Vzc1By
b3h5OjpjcmVhdGVHUFVQcm9jZXNzQ29ubmVjdGlvbihXZWJQcm9jZXNzUHJveHkmIHdlYlByb2Nl
c3NQcm94eSwgSVBDOjpBdHRhY2htZW50JiYgY29ubmVjdGlvbklkZW50aWZpZXIsIEdQVVByb2Nl
c3NDb25uZWN0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiB7Ci0gICAgYWRkU2Vzc2lvbih3
ZWJQcm9jZXNzUHJveHkud2Vic2l0ZURhdGFTdG9yZSgpKTsKKyAgICBpZiAoYXV0byogc3RvcmUg
PSB3ZWJQcm9jZXNzUHJveHkud2Vic2l0ZURhdGFTdG9yZSgpKQorICAgICAgICBhZGRTZXNzaW9u
KCpzdG9yZSk7CisKICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gR1BV
UHJvY2Vzc1Byb3h5IGlzIHRha2luZyBhIGJhY2tncm91bmQgYXNzZXJ0aW9uIGJlY2F1c2UgYSB3
ZWIgcHJvY2VzcyBpcyByZXF1ZXN0aW5nIGEgY29ubmVjdGlvbiIsIHRoaXMpOwogICAgIHN0YXJ0
UmVzcG9uc2l2ZW5lc3NUaW1lcihVc2VMYXp5U3RvcDo6Tm8pOwogICAgIHNlbmRXaXRoQXN5bmNS
ZXBseShNZXNzYWdlczo6R1BVUHJvY2Vzczo6Q3JlYXRlR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cyB7IHdlYlByb2Nlc3NQcm94eS5jb3JlUHJvY2Vzc0lkZW50aWZpZXIoKSwgd2ViUHJvY2Vzc1By
b3h5LnNlc3Npb25JRCgpLCBjb25uZWN0aW9uSWRlbnRpZmllciwgcGFyYW1ldGVycyB9LCBbdGhp
cywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0oKSBtdXRhYmxlIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcAppbmRleCBlZDVkZmRk
YTQ3OGQuLmY4NWUyYTY1M2QwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1By
b3Zpc2lvbmFsUGFnZVByb3h5LmNwcApAQCAtODQsOCArODQsMTAgQEAgUHJvdmlzaW9uYWxQYWdl
UHJveHk6OlByb3Zpc2lvbmFsUGFnZVByb3h5KFdlYlBhZ2VQcm94eSYgcGFnZSwgUmVmPFdlYlBy
b2Nlc3NQcm8KICAgICBtX3Byb2Nlc3MtPmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fd2ViUGFnZUlELCAqdGhpcyk7CiAg
ICAgbV9wcm9jZXNzLT5hZGRQcm92aXNpb25hbFBhZ2VQcm94eSgqdGhpcyk7CiAKLSAgICBpZiAo
Jm1fcHJvY2Vzcy0+d2Vic2l0ZURhdGFTdG9yZSgpICE9ICZtX3BhZ2Uud2Vic2l0ZURhdGFTdG9y
ZSgpKQotICAgICAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkucGFnZUJlZ2luVXNpbmdXZWJz
aXRlRGF0YVN0b3JlKG1fcGFnZS5pZGVudGlmaWVyKCksIG1fcHJvY2Vzcy0+d2Vic2l0ZURhdGFT
dG9yZSgpKTsKKyAgICBtX3dlYnNpdGVEYXRhU3RvcmUgPSBtX3Byb2Nlc3MtPndlYnNpdGVEYXRh
U3RvcmUoKTsKKyAgICBBU1NFUlQobV93ZWJzaXRlRGF0YVN0b3JlKTsKKyAgICBpZiAobV93ZWJz
aXRlRGF0YVN0b3JlICYmIG1fd2Vic2l0ZURhdGFTdG9yZSAhPSAmbV9wYWdlLndlYnNpdGVEYXRh
U3RvcmUoKSkKKyAgICAgICAgbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLnBhZ2VCZWdpblVzaW5n
V2Vic2l0ZURhdGFTdG9yZShtX3BhZ2UuaWRlbnRpZmllcigpLCAqbV93ZWJzaXRlRGF0YVN0b3Jl
KTsKIAogICAgIC8vIElmIHdlIGFyZSByZWF0dGFjaGluZyB0byBhIFN1c3BlbmRlZFBhZ2UsIHRo
ZW4gdGhlIFdlYlByb2Nlc3MnIFdlYlBhZ2UgYWxyZWFkeSBleGlzdHMgYW5kCiAgICAgLy8gV2Vi
UGFnZVByb3h5OjpkaWRDcmVhdGVNYWluRnJhbWUoKSB3aWxsIG5vdCBiZSBjYWxsZWQgdG8gaW5p
dGlhbGl6ZSBtX21haW5GcmFtZS4gSW4gc3VjaApAQCAtMTEzLDggKzExNSw5IEBAIFByb3Zpc2lv
bmFsUGFnZVByb3h5Ojp+UHJvdmlzaW9uYWxQYWdlUHJveHkoKQogICAgIGlmICghbV93YXNDb21t
aXR0ZWQpIHsKICAgICAgICAgbV9wYWdlLmluc3BlY3RvckNvbnRyb2xsZXIoKS53aWxsRGVzdHJv
eVByb3Zpc2lvbmFsUGFnZSgqdGhpcyk7CiAKLSAgICAgICAgaWYgKCZtX3Byb2Nlc3MtPndlYnNp
dGVEYXRhU3RvcmUoKSAhPSAmbV9wYWdlLndlYnNpdGVEYXRhU3RvcmUoKSkKLSAgICAgICAgICAg
IG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5wYWdlRW5kVXNpbmdXZWJzaXRlRGF0YVN0b3JlKG1f
cGFnZS5pZGVudGlmaWVyKCksIG1fcHJvY2Vzcy0+d2Vic2l0ZURhdGFTdG9yZSgpKTsKKyAgICAg
ICAgYXV0byBkYXRhU3RvcmUgPSBtX3Byb2Nlc3MtPndlYnNpdGVEYXRhU3RvcmUoKTsKKyAgICAg
ICAgaWYgKGRhdGFTdG9yZSAmJiBkYXRhU3RvcmUhPSAmbV9wYWdlLndlYnNpdGVEYXRhU3RvcmUo
KSkKKyAgICAgICAgICAgIG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5wYWdlRW5kVXNpbmdXZWJz
aXRlRGF0YVN0b3JlKG1fcGFnZS5pZGVudGlmaWVyKCksICpkYXRhU3RvcmUpOwogCiAgICAgICAg
IG1fcHJvY2Vzcy0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV93ZWJQYWdlSUQpOwogICAgICAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpDbG9zZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92
aXNpb25hbFBhZ2VQcm94eS5oCmluZGV4IDIyZDJiYjEyY2E2YS4uM2Y1MTliMDZkMzEyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmgKQEAgLTYx
LDYgKzYxLDcgQEAgY2xhc3MgVXNlckRhdGE7CiBjbGFzcyBXZWJGcmFtZVByb3h5OwogY2xhc3Mg
V2ViUGFnZVByb3h5OwogY2xhc3MgV2ViUHJvY2Vzc1Byb3h5OworY2xhc3MgV2Vic2l0ZURhdGFT
dG9yZTsKIHN0cnVjdCBGcmFtZUluZm9EYXRhOwogc3RydWN0IE5hdmlnYXRpb25BY3Rpb25EYXRh
Owogc3RydWN0IFVSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzOwpAQCAtMTYzLDYgKzE2NCw4IEBAIHBy
aXZhdGU6CiAgICAgV2ViUGFnZVByb3h5JiBtX3BhZ2U7CiAgICAgV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIgbV93ZWJQYWdlSUQ7CiAgICAgUmVmPFdlYlByb2Nlc3NQcm94eT4gbV9wcm9jZXNzOwor
ICAgIC8vIEtlZXAgV2Vic2l0ZURhdGFTdG9yZSBhbGl2ZSBmb3IgcHJvdmlzaW9uYWwgcGFnZSBs
b2FkLgorICAgIFJlZlB0cjxXZWJzaXRlRGF0YVN0b3JlPiBtX3dlYnNpdGVEYXRhU3RvcmU7CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPERyYXdpbmdBcmVhUHJveHk+IG1fZHJhd2luZ0FyZWE7CiAgICAg
UmVmUHRyPFdlYkZyYW1lUHJveHk+IG1fbWFpbkZyYW1lOwogICAgIHVpbnQ2NF90IG1fbmF2aWdh
dGlvbklEOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFn
ZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5j
cHAKaW5kZXggY2NiZDYxMjg3ODUwLi42MzIyYWU1ZWRmNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcApAQCAtNTMsNyArNTMsNyBAQCBSZWZQ
dHI8V2ViUHJvY2Vzc1Byb3h5PiBTdXNwZW5kZWRQYWdlUHJveHk6OmZpbmRSZXVzYWJsZVN1c3Bl
bmRlZFBhZ2VQcm9jZXNzKFdlYgogewogICAgIGZvciAoYXV0byogc3VzcGVuZGVkUGFnZSA6IGFs
bFN1c3BlbmRlZFBhZ2VzKCkpIHsKICAgICAgICAgYXV0byYgcHJvY2VzcyA9IHN1c3BlbmRlZFBh
Z2UtPnByb2Nlc3MoKTsKLSAgICAgICAgaWYgKCZwcm9jZXNzLnByb2Nlc3NQb29sKCkgPT0gJnBy
b2Nlc3NQb29sICYmIHByb2Nlc3MucmVnaXN0cmFibGVEb21haW4oKSA9PSByZWdpc3RyYWJsZURv
bWFpbiAmJiAmcHJvY2Vzcy53ZWJzaXRlRGF0YVN0b3JlKCkgPT0gJmRhdGFTdG9yZSAmJiBwcm9j
ZXNzLmNyb3NzT3JpZ2luTW9kZSgpICE9IENyb3NzT3JpZ2luTW9kZTo6SXNvbGF0ZWQgJiYgcHJv
Y2Vzcy5jYXB0aXZlUG9ydGFsTW9kZSgpID09IGNhcHRpdmVQb3J0YWxNb2RlKQorICAgICAgICBp
ZiAoJnByb2Nlc3MucHJvY2Vzc1Bvb2woKSA9PSAmcHJvY2Vzc1Bvb2wgJiYgcHJvY2Vzcy5yZWdp
c3RyYWJsZURvbWFpbigpID09IHJlZ2lzdHJhYmxlRG9tYWluICYmIHByb2Nlc3Mud2Vic2l0ZURh
dGFTdG9yZSgpID09ICZkYXRhU3RvcmUgJiYgcHJvY2Vzcy5jcm9zc09yaWdpbk1vZGUoKSAhPSBD
cm9zc09yaWdpbk1vZGU6Oklzb2xhdGVkICYmIHByb2Nlc3MuY2FwdGl2ZVBvcnRhbE1vZGUoKSA9
PSBjYXB0aXZlUG9ydGFsTW9kZSkKICAgICAgICAgICAgIHJldHVybiAmcHJvY2VzczsKICAgICB9
CiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJCYWNrRm9yd2FyZENhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJh
Y2tGb3J3YXJkQ2FjaGUuY3BwCmluZGV4IDY0YTFhOWY2OWM2Yy4uMTg3MzJmZDQ1ZDRhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZENhY2hlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZENhY2hlLmNwcApAQCAt
MTM0LDcgKzEzNCw4IEBAIHZvaWQgV2ViQmFja0ZvcndhcmRDYWNoZTo6cmVtb3ZlRW50cmllc0Zv
clByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzKQogdm9pZCBXZWJCYWNrRm9yd2FyZENh
Y2hlOjpyZW1vdmVFbnRyaWVzRm9yU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiB7
CiAgICAgcmVtb3ZlRW50cmllc01hdGNoaW5nKFtzZXNzaW9uSURdKGF1dG8mIGl0ZW0pIHsKLSAg
ICAgICAgcmV0dXJuIGl0ZW0uYmFja0ZvcndhcmRDYWNoZUVudHJ5KCktPnByb2Nlc3MoKS53ZWJz
aXRlRGF0YVN0b3JlKCkuc2Vzc2lvbklEKCkgPT0gc2Vzc2lvbklEOworICAgICAgICBhdXRvKiBk
YXRhU3RvcmUgPSBpdGVtLmJhY2tGb3J3YXJkQ2FjaGVFbnRyeSgpLT5wcm9jZXNzKCkud2Vic2l0
ZURhdGFTdG9yZSgpOworICAgICAgICByZXR1cm4gZGF0YVN0b3JlICYmIGRhdGFTdG9yZS0+c2Vz
c2lvbklEKCkgPT0gc2Vzc2lvbklEOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJMb2NrUmVnaXN0cnlQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJMb2NrUmVnaXN0cnlQcm94eS5jcHAKaW5kZXggMWMxNDIxYzY1MmMyLi43
OTliYzI4MDE5MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkxvY2tS
ZWdpc3RyeVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJMb2NrUmVn
aXN0cnlQcm94eS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJv
eHkuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9X
ZWJMb2NrSWRlbnRpZmllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvV2ViTG9ja01hbmFnZXJTbmFw
c2hvdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvV2ViTG9ja1JlZ2lzdHJ5Lmg+CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewpAQCAtNTUsNyArNTYsMTMgQEAgdm9pZCBXZWJMb2NrUmVnaXN0cnlQcm94eTo6
cmVxdWVzdExvY2soV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYgY2xpZW50T3JpZ2luLCBXZWIKICAg
ICBNRVNTQUdFX0NIRUNLKGNsaWVudElELnByb2Nlc3NJZGVudGlmaWVyKCkgPT0gbV9wcm9jZXNz
LmNvcmVQcm9jZXNzSWRlbnRpZmllcigpKTsKICAgICBtX2hhc0V2ZXJSZXF1ZXN0ZWRMb2NrcyA9
IHRydWU7CiAKLSAgICBtX3Byb2Nlc3Mud2Vic2l0ZURhdGFTdG9yZSgpLndlYkxvY2tSZWdpc3Ry
eSgpLnJlcXVlc3RMb2NrKG1fcHJvY2Vzcy5zZXNzaW9uSUQoKSwgV1RGTW92ZShjbGllbnRPcmln
aW4pLCBsb2NrSWRlbnRpZmllciwgY2xpZW50SUQsIFdURk1vdmUobmFtZSksIGxvY2tNb2RlLCBz
dGVhbCwgaWZBdmFpbGFibGUsIFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBsb2NrSWRl
bnRpZmllciwgY2xpZW50SURdKGJvb2wgc3VjY2VzcykgeworICAgIGF1dG8qIGRhdGFTdG9yZSA9
IG1fcHJvY2Vzcy53ZWJzaXRlRGF0YVN0b3JlKCk7CisgICAgaWYgKCFkYXRhU3RvcmUpIHsKKyAg
ICAgICAgbV9wcm9jZXNzLnNlbmQoTWVzc2FnZXM6OlJlbW90ZVdlYkxvY2tSZWdpc3RyeTo6RGlk
Q29tcGxldGVMb2NrUmVxdWVzdChsb2NrSWRlbnRpZmllciwgY2xpZW50SUQsIGZhbHNlKSwgMCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBkYXRhU3RvcmUtPndlYkxvY2tSZWdpc3Ry
eSgpLnJlcXVlc3RMb2NrKG1fcHJvY2Vzcy5zZXNzaW9uSUQoKSwgV1RGTW92ZShjbGllbnRPcmln
aW4pLCBsb2NrSWRlbnRpZmllciwgY2xpZW50SUQsIFdURk1vdmUobmFtZSksIGxvY2tNb2RlLCBz
dGVhbCwgaWZBdmFpbGFibGUsIFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBsb2NrSWRl
bnRpZmllciwgY2xpZW50SURdKGJvb2wgc3VjY2VzcykgewogICAgICAgICBpZiAod2Vha1RoaXMp
CiAgICAgICAgICAgICB3ZWFrVGhpcy0+bV9wcm9jZXNzLnNlbmQoTWVzc2FnZXM6OlJlbW90ZVdl
YkxvY2tSZWdpc3RyeTo6RGlkQ29tcGxldGVMb2NrUmVxdWVzdChsb2NrSWRlbnRpZmllciwgY2xp
ZW50SUQsIHN1Y2Nlc3MpLCAwKTsKICAgICB9LCBbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMg
fSwgbG9ja0lkZW50aWZpZXIsIGNsaWVudElEXSB7CkBAIC02OCwzMSArNzUsNDggQEAgdm9pZCBX
ZWJMb2NrUmVnaXN0cnlQcm94eTo6cmVsZWFzZUxvY2soV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiYg
Y2xpZW50T3JpZ2luLCBXZWIKIHsKICAgICBNRVNTQUdFX0NIRUNLKGxvY2tJZGVudGlmaWVyLnBy
b2Nlc3NJZGVudGlmaWVyKCkgPT0gbV9wcm9jZXNzLmNvcmVQcm9jZXNzSWRlbnRpZmllcigpKTsK
ICAgICBNRVNTQUdFX0NIRUNLKGNsaWVudElELnByb2Nlc3NJZGVudGlmaWVyKCkgPT0gbV9wcm9j
ZXNzLmNvcmVQcm9jZXNzSWRlbnRpZmllcigpKTsKLSAgICBtX3Byb2Nlc3Mud2Vic2l0ZURhdGFT
dG9yZSgpLndlYkxvY2tSZWdpc3RyeSgpLnJlbGVhc2VMb2NrKG1fcHJvY2Vzcy5zZXNzaW9uSUQo
KSwgV1RGTW92ZShjbGllbnRPcmlnaW4pLCBsb2NrSWRlbnRpZmllciwgY2xpZW50SUQsIFdURk1v
dmUobmFtZSkpOworICAgIGlmIChhdXRvKiBkYXRhU3RvcmUgPSBtX3Byb2Nlc3Mud2Vic2l0ZURh
dGFTdG9yZSgpKQorICAgICAgICBkYXRhU3RvcmUtPndlYkxvY2tSZWdpc3RyeSgpLnJlbGVhc2VM
b2NrKG1fcHJvY2Vzcy5zZXNzaW9uSUQoKSwgV1RGTW92ZShjbGllbnRPcmlnaW4pLCBsb2NrSWRl
bnRpZmllciwgY2xpZW50SUQsIFdURk1vdmUobmFtZSkpOwogfQogCiB2b2lkIFdlYkxvY2tSZWdp
c3RyeVByb3h5OjphYm9ydExvY2tSZXF1ZXN0KFdlYkNvcmU6OkNsaWVudE9yaWdpbiYmIGNsaWVu
dE9yaWdpbiwgV2ViQ29yZTo6V2ViTG9ja0lkZW50aWZpZXIgbG9ja0lkZW50aWZpZXIsIFdlYkNv
cmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyIGNsaWVudElELCBTdHJpbmcmJiBu
YW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogICAgIE1FU1NBR0VfQ0hFQ0sobG9ja0lkZW50aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIoKSA9
PSBtX3Byb2Nlc3MuY29yZVByb2Nlc3NJZGVudGlmaWVyKCkpOwogICAgIE1FU1NBR0VfQ0hFQ0so
Y2xpZW50SUQucHJvY2Vzc0lkZW50aWZpZXIoKSA9PSBtX3Byb2Nlc3MuY29yZVByb2Nlc3NJZGVu
dGlmaWVyKCkpOwotICAgIG1fcHJvY2Vzcy53ZWJzaXRlRGF0YVN0b3JlKCkud2ViTG9ja1JlZ2lz
dHJ5KCkuYWJvcnRMb2NrUmVxdWVzdChtX3Byb2Nlc3Muc2Vzc2lvbklEKCksIFdURk1vdmUoY2xp
ZW50T3JpZ2luKSwgbG9ja0lkZW50aWZpZXIsIGNsaWVudElELCBXVEZNb3ZlKG5hbWUpLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgYXV0byogZGF0YVN0b3JlID0gbV9wcm9jZXNz
LndlYnNpdGVEYXRhU3RvcmUoKTsKKyAgICBpZiAoIWRhdGFTdG9yZSkgeworICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihmYWxzZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBkYXRh
U3RvcmUtPndlYkxvY2tSZWdpc3RyeSgpLmFib3J0TG9ja1JlcXVlc3QobV9wcm9jZXNzLnNlc3Np
b25JRCgpLCBXVEZNb3ZlKGNsaWVudE9yaWdpbiksIGxvY2tJZGVudGlmaWVyLCBjbGllbnRJRCwg
V1RGTW92ZShuYW1lKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB2b2lkIFdl
YkxvY2tSZWdpc3RyeVByb3h5OjpzbmFwc2hvdChXZWJDb3JlOjpDbGllbnRPcmlnaW4mJiBjbGll
bnRPcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6V2ViTG9ja01hbmFnZXJT
bmFwc2hvdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBtX3Byb2Nlc3Mud2Vic2l0
ZURhdGFTdG9yZSgpLndlYkxvY2tSZWdpc3RyeSgpLnNuYXBzaG90KG1fcHJvY2Vzcy5zZXNzaW9u
SUQoKSwgV1RGTW92ZShjbGllbnRPcmlnaW4pLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
CisgICAgYXV0byogZGF0YVN0b3JlID0gbV9wcm9jZXNzLndlYnNpdGVEYXRhU3RvcmUoKTsKKyAg
ICBpZiAoIWRhdGFTdG9yZSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXZWJDb3JlOjpX
ZWJMb2NrTWFuYWdlclNuYXBzaG90IHsgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBkYXRhU3RvcmUtPndlYkxvY2tSZWdpc3RyeSgpLnNuYXBzaG90KG1fcHJvY2Vzcy5zZXNzaW9u
SUQoKSwgV1RGTW92ZShjbGllbnRPcmlnaW4pLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
CiB9CiAKIHZvaWQgV2ViTG9ja1JlZ2lzdHJ5UHJveHk6OmNsaWVudElzR29pbmdBd2F5KFdlYkNv
cmU6OkNsaWVudE9yaWdpbiYmIGNsaWVudE9yaWdpbiwgV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9u
Q29udGV4dElkZW50aWZpZXIgY2xpZW50SUQpCiB7CiAgICAgTUVTU0FHRV9DSEVDSyhjbGllbnRJ
RC5wcm9jZXNzSWRlbnRpZmllcigpID09IG1fcHJvY2Vzcy5jb3JlUHJvY2Vzc0lkZW50aWZpZXIo
KSk7Ci0gICAgbV9wcm9jZXNzLndlYnNpdGVEYXRhU3RvcmUoKS53ZWJMb2NrUmVnaXN0cnkoKS5j
bGllbnRJc0dvaW5nQXdheShtX3Byb2Nlc3Muc2Vzc2lvbklEKCksIFdURk1vdmUoY2xpZW50T3Jp
Z2luKSwgY2xpZW50SUQpOworICAgIGlmIChhdXRvKiBkYXRhU3RvcmUgPSBXZWJzaXRlRGF0YVN0
b3JlOjpleGlzdGluZ0RhdGFTdG9yZUZvclNlc3Npb25JRChtX3Byb2Nlc3Muc2Vzc2lvbklEKCkp
KQorICAgICAgICBkYXRhU3RvcmUtPndlYkxvY2tSZWdpc3RyeSgpLmNsaWVudElzR29pbmdBd2F5
KG1fcHJvY2Vzcy5zZXNzaW9uSUQoKSwgV1RGTW92ZShjbGllbnRPcmlnaW4pLCBjbGllbnRJRCk7
CiB9CiAKIHZvaWQgV2ViTG9ja1JlZ2lzdHJ5UHJveHk6OnByb2Nlc3NEaWRFeGl0KCkKIHsKLSAg
ICBpZiAobV9oYXNFdmVyUmVxdWVzdGVkTG9ja3MpCi0gICAgICAgIG1fcHJvY2Vzcy53ZWJzaXRl
RGF0YVN0b3JlKCkud2ViTG9ja1JlZ2lzdHJ5KCkuY2xpZW50c0FyZUdvaW5nQXdheShtX3Byb2Nl
c3MuY29yZVByb2Nlc3NJZGVudGlmaWVyKCkpOworICAgIGlmICghbV9oYXNFdmVyUmVxdWVzdGVk
TG9ja3MpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChhdXRvKiBkYXRhU3RvcmUgPSBXZWJz
aXRlRGF0YVN0b3JlOjpleGlzdGluZ0RhdGFTdG9yZUZvclNlc3Npb25JRChtX3Byb2Nlc3Muc2Vz
c2lvbklEKCkpKQorICAgICAgICBkYXRhU3RvcmUtPndlYkxvY2tSZWdpc3RyeSgpLmNsaWVudHNB
cmVHb2luZ0F3YXkobV9wcm9jZXNzLmNvcmVQcm9jZXNzSWRlbnRpZmllcigpKTsKIH0KIAogI3Vu
ZGVmIE1FU1NBR0VfQ0hFQ0sKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CmluZGV4IDM2YmE5OTJjNDgwMC4uM2QyOGM4MjA2NDJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTk3OCw3ICs5NzgsOCBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6c3dhcFRvUHJvdmlzaW9uYWxQYWdlKHN0ZDo6dW5pcXVlX3B0cjxQcm92aXNpb25hbFBhZ2VQ
cm94eT4gcAogICAgIG1fcHJvY2VzcyA9IHByb3Zpc2lvbmFsUGFnZS0+cHJvY2VzcygpOwogICAg
IG1fd2ViUGFnZUlEID0gcHJvdmlzaW9uYWxQYWdlLT53ZWJQYWdlSUQoKTsKICAgICBwYWdlQ2xp
ZW50KCkuZGlkQ2hhbmdlV2ViUGFnZUlEKCk7Ci0gICAgbV93ZWJzaXRlRGF0YVN0b3JlID0gbV9w
cm9jZXNzLT53ZWJzaXRlRGF0YVN0b3JlKCk7CisgICAgQVNTRVJUKG1fcHJvY2Vzcy0+d2Vic2l0
ZURhdGFTdG9yZSgpKTsKKyAgICBtX3dlYnNpdGVEYXRhU3RvcmUgPSAqbV9wcm9jZXNzLT53ZWJz
aXRlRGF0YVN0b3JlKCk7CiAKICNpZiBIQVZFKFZJU0lCSUxJVFlfUFJPUEFHQVRJT05fVklFVykK
ICAgICBtX2NvbnRleHRJREZvclZpc2liaWxpdHlQcm9wYWdhdGlvbkluV2ViUHJvY2VzcyA9IHBy
b3Zpc2lvbmFsUGFnZS0+Y29udGV4dElERm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uSW5XZWJQcm9j
ZXNzKCk7CkBAIC0zNjI0LDcgKzM2MjUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y29tbWl0UHJv
dmlzaW9uYWxQYWdlKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBGcmFtZUluZm9EYXRhJgogICAg
IHJlbW92ZUFsbE1lc3NhZ2VSZWNlaXZlcnMoKTsKICAgICBhdXRvKiBuYXZpZ2F0aW9uID0gbmF2
aWdhdGlvblN0YXRlKCkubmF2aWdhdGlvbihtX3Byb3Zpc2lvbmFsUGFnZS0+bmF2aWdhdGlvbklE
KCkpOwogICAgIGJvb2wgZGlkU3VzcGVuZFByZXZpb3VzUGFnZSA9IG5hdmlnYXRpb24gJiYgIW1f
cHJvdmlzaW9uYWxQYWdlLT5pc1Byb2Nlc3NTd2FwcGluZ09uTmF2aWdhdGlvblJlc3BvbnNlKCkg
PyBzdXNwZW5kQ3VycmVudFBhZ2VJZlBvc3NpYmxlKCpuYXZpZ2F0aW9uLCBtYWluRnJhbWVJRElu
UHJldmlvdXNQcm9jZXNzLCBtX3Byb3Zpc2lvbmFsUGFnZS0+cHJvY2Vzc1N3YXBSZXF1ZXN0ZWRC
eUNsaWVudCgpLCBzaG91bGREZWxheUNsb3NpbmdVbnRpbEZpcnN0TGF5ZXJGbHVzaCkgOiBmYWxz
ZTsKLSAgICBtX3Byb2Nlc3MtPnJlbW92ZVdlYlBhZ2UoKnRoaXMsIG1fd2Vic2l0ZURhdGFTdG9y
ZS5wdHIoKSA9PSAmbV9wcm92aXNpb25hbFBhZ2UtPnByb2Nlc3MoKS53ZWJzaXRlRGF0YVN0b3Jl
KCkgPyBXZWJQcm9jZXNzUHJveHk6OkVuZHNVc2luZ0RhdGFTdG9yZTo6Tm8gOiBXZWJQcm9jZXNz
UHJveHk6OkVuZHNVc2luZ0RhdGFTdG9yZTo6WWVzKTsKKyAgICBtX3Byb2Nlc3MtPnJlbW92ZVdl
YlBhZ2UoKnRoaXMsIG1fd2Vic2l0ZURhdGFTdG9yZS5wdHIoKSA9PSBtX3Byb3Zpc2lvbmFsUGFn
ZS0+cHJvY2VzcygpLndlYnNpdGVEYXRhU3RvcmUoKSA/IFdlYlByb2Nlc3NQcm94eTo6RW5kc1Vz
aW5nRGF0YVN0b3JlOjpObyA6IFdlYlByb2Nlc3NQcm94eTo6RW5kc1VzaW5nRGF0YVN0b3JlOjpZ
ZXMpOwogCiAgICAgLy8gVGhlcmUgaXMgbm8gd2F5IHdlJ2xsIGJlIGFibGUgdG8gcmV0dXJuIHRv
IHRoZSBwYWdlIGluIHRoZSBwcmV2aW91cyBwYWdlIHNvIGNsb3NlIGl0LgogICAgIGlmICghZGlk
U3VzcGVuZFByZXZpb3VzUGFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
Q2FjaGUuY3BwCmluZGV4IDUxZmNiZTY2MzQxYS4uZDE4ZDllMTk3ZjhhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NDYWNoZS5jcHAKQEAgLTc2LDggKzc2LDcgQEAgYm9v
bCBXZWJQcm9jZXNzQ2FjaGU6OmNhbkNhY2hlUHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmIHByb2Nl
c3MpIGNvbnN0CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBhdXRvIHNlc3Np
b25JRCA9IHByb2Nlc3Mud2Vic2l0ZURhdGFTdG9yZSgpLnNlc3Npb25JRCgpOwotICAgIGlmIChz
ZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSAmJiAhcHJvY2Vzcy5wcm9jZXNzUG9vbCgpLmhhc1BhZ2Vz
VXNpbmdXZWJzaXRlRGF0YVN0b3JlKHByb2Nlc3Mud2Vic2l0ZURhdGFTdG9yZSgpKSkgeworICAg
IGlmICghcHJvY2Vzcy53ZWJzaXRlRGF0YVN0b3JlKCkpIHsKICAgICAgICAgV0VCUFJPQ0VTU0NB
Q0hFX1JFTEVBU0VfTE9HKCJjYW5DYWNoZVByb2Nlc3M6IE5vdCBjYWNoaW5nIHByb2Nlc3MgYmVj
YXVzZSB0aGlzIHNlc3Npb24gaGFzIGJlZW4gZGVzdHJveWVkIiwgcHJvY2Vzcy5wcm9jZXNzSWRl
bnRpZmllcigpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTE1Myw3ICsxNTIs
NyBAQCBSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiBXZWJQcm9jZXNzQ2FjaGU6OnRha2VQcm9jZXNz
KGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRAogICAgIGlmIChpdCA9PSBtX3Byb2Nlc3Nlc1Bl
clJlZ2lzdHJhYmxlRG9tYWluLmVuZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAg
IGlmICgmaXQtPnZhbHVlLT5wcm9jZXNzKCkud2Vic2l0ZURhdGFTdG9yZSgpICE9ICZkYXRhU3Rv
cmUpCisgICAgaWYgKGl0LT52YWx1ZS0+cHJvY2VzcygpLndlYnNpdGVEYXRhU3RvcmUoKSAhPSAm
ZGF0YVN0b3JlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGlmIChpdC0+dmFsdWUt
PnByb2Nlc3MoKS5jYXB0aXZlUG9ydGFsTW9kZSgpICE9IGNhcHRpdmVQb3J0YWxNb2RlKQpAQCAt
MjEyLDcgKzIxMSw4IEBAIHZvaWQgV2ViUHJvY2Vzc0NhY2hlOjpjbGVhckFsbFByb2Nlc3Nlc0Zv
clNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogewogICAgIFZlY3RvcjxXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbj4ga2V5c1RvUmVtb3ZlOwogICAgIGZvciAoYXV0byYgcGFpciA6
IG1fcHJvY2Vzc2VzUGVyUmVnaXN0cmFibGVEb21haW4pIHsKLSAgICAgICAgaWYgKHBhaXIudmFs
dWUtPnByb2Nlc3MoKS53ZWJzaXRlRGF0YVN0b3JlKCkuc2Vzc2lvbklEKCkgPT0gc2Vzc2lvbklE
KSB7CisgICAgICAgIGF1dG8qIGRhdGFTdG9yZSA9IHBhaXIudmFsdWUtPnByb2Nlc3MoKS53ZWJz
aXRlRGF0YVN0b3JlKCk7CisgICAgICAgIGlmICghZGF0YVN0b3JlIHx8IGRhdGFTdG9yZS0+c2Vz
c2lvbklEKCkgPT0gc2Vzc2lvbklEKSB7CiAgICAgICAgICAgICBXRUJQUk9DRVNTQ0FDSEVfUkVM
RUFTRV9MT0coImNsZWFyQWxsUHJvY2Vzc2VzRm9yU2Vzc2lvbjogRXZpY3RpbmcgcHJvY2VzcyBi
ZWNhdXNlIGl0cyBzZXNzaW9uIHdhcyBkZXN0cm95ZWQiLCBwYWlyLnZhbHVlLT5wcm9jZXNzKCku
cHJvY2Vzc0lkZW50aWZpZXIoKSk7CiAgICAgICAgICAgICBrZXlzVG9SZW1vdmUuYXBwZW5kKHBh
aXIua2V5KTsKICAgICAgICAgfQpAQCAtMjIyLDcgKzIyMiw4IEBAIHZvaWQgV2ViUHJvY2Vzc0Nh
Y2hlOjpjbGVhckFsbFByb2Nlc3Nlc0ZvclNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
KQogCiAgICAgVmVjdG9yPHVpbnQ2NF90PiBwZW5kaW5nUmVxdWVzdHNUb1JlbW92ZTsKICAgICBm
b3IgKGF1dG8mIHBhaXIgOiBtX3BlbmRpbmdBZGRSZXF1ZXN0cykgewotICAgICAgICBpZiAocGFp
ci52YWx1ZS0+cHJvY2VzcygpLndlYnNpdGVEYXRhU3RvcmUoKS5zZXNzaW9uSUQoKSA9PSBzZXNz
aW9uSUQpIHsKKyAgICAgICAgYXV0byogZGF0YVN0b3JlID0gcGFpci52YWx1ZS0+cHJvY2Vzcygp
LndlYnNpdGVEYXRhU3RvcmUoKTsKKyAgICAgICAgaWYgKCFkYXRhU3RvcmUgfHwgZGF0YVN0b3Jl
LT5zZXNzaW9uSUQoKSA9PSBzZXNzaW9uSUQpIHsKICAgICAgICAgICAgIFdFQlBST0NFU1NDQUNI
RV9SRUxFQVNFX0xPRygiY2xlYXJBbGxQcm9jZXNzZXNGb3JTZXNzaW9uOiBFdmljdGluZyBwcm9j
ZXNzIGJlY2F1c2UgaXRzIHNlc3Npb24gd2FzIGRlc3Ryb3llZCIsIHBhaXIudmFsdWUtPnByb2Nl
c3MoKS5wcm9jZXNzSWRlbnRpZmllcigpKTsKICAgICAgICAgICAgIHBlbmRpbmdSZXF1ZXN0c1Rv
UmVtb3ZlLmFwcGVuZChwYWlyLmtleSk7CiAgICAgICAgIH0KQEAgLTI3Niw3ICsyNzcsOCBAQCBX
ZWJQcm9jZXNzQ2FjaGU6OkNhY2hlZFByb2Nlc3M6OkNhY2hlZFByb2Nlc3MoUmVmPFdlYlByb2Nl
c3NQcm94eT4mJiBwcm9jZXNzKQogI2VuZGlmCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoIW1fcHJv
Y2Vzcy0+cGFnZUNvdW50KCkpOwotICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfTUVTU0FHRSghbV9w
cm9jZXNzLT53ZWJzaXRlRGF0YVN0b3JlKCkucHJvY2Vzc2VzKCkuY29udGFpbnMoKm1fcHJvY2Vz
cyksICJPbmx5IHByb2Nlc3NlcyB3aXRoIHBhZ2VzIHNob3VsZCBiZSByZWdpc3RlcmVkIHdpdGgg
dGhlIGRhdGEgc3RvcmUiKTsKKyAgICBhdXRvKiBkYXRhU3RvcmUgPSBtX3Byb2Nlc3MtPndlYnNp
dGVEYXRhU3RvcmUoKTsKKyAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX01FU1NBR0UoZGF0YVN0b3Jl
ICYmICFkYXRhU3RvcmUtPnByb2Nlc3NlcygpLmNvbnRhaW5zKCptX3Byb2Nlc3MpLCAiT25seSBw
cm9jZXNzZXMgd2l0aCBwYWdlcyBzaG91bGQgYmUgcmVnaXN0ZXJlZCB3aXRoIHRoZSBkYXRhIHN0
b3JlIik7CiAgICAgbV9wcm9jZXNzLT5zZXRJc0luUHJvY2Vzc0NhY2hlKHRydWUpOwogICAgIG1f
ZXZpY3Rpb25UaW1lci5zdGFydE9uZVNob3QoY2FjaGVkUHJvY2Vzc0xpZmV0aW1lKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCA0NWUzNTZmMTY1
YjAuLmY4OWY5ZTA5NTUzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmNwcApAQCAtNTc2LDcgKzU3Niw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlz
aFJlbW90ZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhSZW1vCiAKICAg
ICAvLyBQcmlvcml0aXplIHRoZSByZXF1ZXN0aW5nIFdlYlByb2Nlc3MgZm9yIHJ1bm5pbmcgdGhl
IHNlcnZpY2Ugd29ya2VyLgogICAgIGlmICghcmVtb3RlV29ya2VyUHJvY2Vzc1Byb3h5ICYmICFz
X3VzZVNlcGFyYXRlU2VydmljZVdvcmtlclByb2Nlc3MgJiYgcmVxdWVzdGluZ1Byb2Nlc3MpIHsK
LSAgICAgICAgaWYgKCZyZXF1ZXN0aW5nUHJvY2Vzcy0+d2Vic2l0ZURhdGFTdG9yZSgpID09IHdl
YnNpdGVEYXRhU3RvcmUgJiYgcmVxdWVzdGluZ1Byb2Nlc3MtPmlzTWF0Y2hpbmdSZWdpc3RyYWJs
ZURvbWFpbihyZWdpc3RyYWJsZURvbWFpbikpCisgICAgICAgIGlmIChyZXF1ZXN0aW5nUHJvY2Vz
cy0+d2Vic2l0ZURhdGFTdG9yZSgpID09IHdlYnNpdGVEYXRhU3RvcmUgJiYgcmVxdWVzdGluZ1By
b2Nlc3MtPmlzTWF0Y2hpbmdSZWdpc3RyYWJsZURvbWFpbihyZWdpc3RyYWJsZURvbWFpbikpCiAg
ICAgICAgICAgICB1c2VQcm9jZXNzRm9yUmVtb3RlV29ya2VycygqcmVxdWVzdGluZ1Byb2Nlc3Mp
OwogICAgIH0KIApAQCAtNTg0LDcgKzU4NCw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFi
bGlzaFJlbW90ZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhSZW1vCiAg
ICAgICAgIGZvciAoYXV0byYgcHJvY2VzcyA6IHByb2Nlc3NQb29sLT5tX3Byb2Nlc3Nlcykgewog
ICAgICAgICAgICAgaWYgKHByb2Nlc3MucHRyKCkgPT0gcHJvY2Vzc1Bvb2wtPm1fcHJld2FybWVk
UHJvY2Vzcy5nZXQoKSB8fCBwcm9jZXNzLT5pc0R1bW15UHJvY2Vzc1Byb3h5KCkpCiAgICAgICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBpZiAoJnByb2Nlc3MtPndlYnNpdGVEYXRh
U3RvcmUoKSAhPSB3ZWJzaXRlRGF0YVN0b3JlKQorICAgICAgICAgICAgaWYgKHByb2Nlc3MtPndl
YnNpdGVEYXRhU3RvcmUoKSAhPSB3ZWJzaXRlRGF0YVN0b3JlKQogICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICAgICAgaWYgKCFwcm9jZXNzLT5pc01hdGNoaW5nUmVnaXN0cmFibGVE
b21haW4ocmVnaXN0cmFibGVEb21haW4pKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAt
MTA5Miw3ICsxMDkyLDcgQEAgUmVmPFdlYlByb2Nlc3NQcm94eT4gV2ViUHJvY2Vzc1Bvb2w6OnBy
b2Nlc3NGb3JSZWdpc3RyYWJsZURvbWFpbihXZWJzaXRlRGF0YVN0b3IKICAgICAgICAgICAgIGlm
IChwcm9jZXNzLT5pc1J1bm5pbmdTZXJ2aWNlV29ya2VycygpKQogICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwogI2VuZGlmCi0gICAgICAgICAgICBpZiAobXVzdE1hdGNoRGF0YVN0b3JlICYmICZw
cm9jZXNzLT53ZWJzaXRlRGF0YVN0b3JlKCkgIT0gJndlYnNpdGVEYXRhU3RvcmUpCisgICAgICAg
ICAgICBpZiAobXVzdE1hdGNoRGF0YVN0b3JlICYmIHByb2Nlc3MtPndlYnNpdGVEYXRhU3RvcmUo
KSAhPSAmd2Vic2l0ZURhdGFTdG9yZSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgICAgIHJldHVybiBwcm9jZXNzOwogICAgICAgICB9CkBAIC0xMTMyLDcgKzExMzIsNyBAQCBS
ZWY8V2ViUGFnZVByb3h5PiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50
JiBwYWdlQ2xpZW50LCBSZWY8QVBJOgogICAgICAgICAvLyBTaGFyaW5nIHByb2Nlc3NlcywgZS5n
LiB3aGVuIGNyZWF0aW5nIHRoZSBwYWdlIHZpYSB3aW5kb3cub3BlbigpLgogICAgICAgICBwcm9j
ZXNzID0gJnBhZ2VDb25maWd1cmF0aW9uLT5yZWxhdGVkUGFnZSgpLT5lbnN1cmVSdW5uaW5nUHJv
Y2VzcygpOwogICAgICAgICAvLyBXZSBkbyBub3Qgc3VwcG9ydCBzZXZlcmFsIFdlYnNpdGVEYXRh
U3RvcmVzIHNoYXJpbmcgYSBzaW5nbGUgcHJvY2Vzcy4KLSAgICAgICAgQVNTRVJUKHByb2Nlc3Mt
PmlzRHVtbXlQcm9jZXNzUHJveHkoKSB8fCBwYWdlQ29uZmlndXJhdGlvbi0+d2Vic2l0ZURhdGFT
dG9yZSgpID09ICZwcm9jZXNzLT53ZWJzaXRlRGF0YVN0b3JlKCkpOworICAgICAgICBBU1NFUlQo
cHJvY2Vzcy0+aXNEdW1teVByb2Nlc3NQcm94eSgpIHx8IHBhZ2VDb25maWd1cmF0aW9uLT53ZWJz
aXRlRGF0YVN0b3JlKCkgPT0gcHJvY2Vzcy0+d2Vic2l0ZURhdGFTdG9yZSgpKTsKICAgICAgICAg
QVNTRVJUKCZwYWdlQ29uZmlndXJhdGlvbi0+cmVsYXRlZFBhZ2UoKS0+d2Vic2l0ZURhdGFTdG9y
ZSgpID09IHBhZ2VDb25maWd1cmF0aW9uLT53ZWJzaXRlRGF0YVN0b3JlKCkpOwogICAgIH0gZWxz
ZSBpZiAoIW1faXNEZWxheWVkV2ViUHJvY2Vzc0xhdW5jaERpc2FibGVkKSB7CiAgICAgICAgIC8v
IEluIHRoZSBjb21tb24gY2FzZSwgd2UgZGVsYXkgcHJvY2VzcyBsYXVuY2ggdW50aWwgc29tZXRo
aW5nIGlzIGFjdHVhbGx5IGxvYWRlZCBpbiB0aGUgcGFnZS4KQEAgLTE5ODIsNyArMTk4Miw3IEBA
IHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NGb3JOYXZpZ2F0aW9uSW50ZXJuYWwoV2ViUGFn
ZVByb3h5JiBwYWdlLCBjb25zdCBBUEk6CiAgICAgICAgIExPRyhQcm9jZXNzU3dhcHBpbmcsICIo
UHJvY2Vzc1N3YXBwaW5nKSBDb25zaWRlcmluZyByZS11c2Ugb2YgYSBwcmV2aW91c2x5IGNhY2hl
ZCBwcm9jZXNzIGZvciBkb21haW4gJXMiLCB0YXJnZXRSZWdpc3RyYWJsZURvbWFpbi5zdHJpbmco
KS51dGY4KCkuZGF0YSgpKTsKIAogICAgICAgICBpZiAoYXV0byogcHJvY2VzcyA9IG1fc3dhcHBl
ZFByb2Nlc3Nlc1BlclJlZ2lzdHJhYmxlRG9tYWluLmdldCh0YXJnZXRSZWdpc3RyYWJsZURvbWFp
bikpIHsKLSAgICAgICAgICAgIGlmICgmcHJvY2Vzcy0+d2Vic2l0ZURhdGFTdG9yZSgpID09IGRh
dGFTdG9yZS5wdHIoKSkgeworICAgICAgICAgICAgaWYgKHByb2Nlc3MtPndlYnNpdGVEYXRhU3Rv
cmUoKSA9PSBkYXRhU3RvcmUucHRyKCkpIHsKICAgICAgICAgICAgICAgICBMT0coUHJvY2Vzc1N3
YXBwaW5nLCAiKFByb2Nlc3NTd2FwcGluZykgUmV1c2luZyBhIHByZXZpb3VzbHkgY2FjaGVkIHBy
b2Nlc3Mgd2l0aCBwaWQgJWkgdG8gY29udGludWUgbmF2aWdhdGlvbiB0byBVUkwgJXMiLCBwcm9j
ZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCB0YXJnZXRVUkwuc3RyaW5nKCkudXRmOCgpLmRhdGEo
KSk7CiAKICAgICAgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoKnByb2Nlc3Ms
IG51bGxwdHIsIHJlYXNvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1By
b3h5LmNwcAppbmRleCBkNzU2YTNkNjkzZjYuLmM2NmQ0YzI3NjkwYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5j
bHVkZSAiRG93bmxvYWRQcm94eU1hcC5oIgogI2luY2x1ZGUgIkxvYWRQYXJhbWV0ZXJzLmgiCiAj
aW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbklu
Zm8uaCIKICNpbmNsdWRlICJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXJNZXNzYWdl
cy5oIgogI2luY2x1ZGUgIlByb3Zpc2lvbmFsUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiUmVtb3Rl
V29ya2VyVHlwZS5oIgpAQCAtMjQxLDcgKzI0Miw2IEBAIFdlYlByb2Nlc3NQcm94eTo6V2ViUHJv
Y2Vzc1Byb3h5KFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgV2Vic2l0ZURhdGFTdG9yZSoK
ICNlbmRpZgogICAgICwgbV9pc1Jlc3BvbnNpdmUoTm9Pck1heWJlOjpNYXliZSkKICAgICAsIG1f
dmlzaWJsZVBhZ2VDb3VudGVyKFt0aGlzXShSZWZDb3VudGVyRXZlbnQpIHsgdXBkYXRlQmFja2dy
b3VuZFJlc3BvbnNpdmVuZXNzVGltZXIoKTsgfSkKLSAgICAsIG1fd2Vic2l0ZURhdGFTdG9yZSh3
ZWJzaXRlRGF0YVN0b3JlKQogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoTUVESUFfU1RS
RUFNKQogICAgICwgbV91c2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5KG1ha2VVbmlxdWU8VXNl
ck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eT4obWFrZVVuaXF1ZVJlZjxVSVByb3h5Rm9yQ2FwdHVy
ZT4oKnRoaXMpKSkKICNlbmRpZgpAQCAtMjU5LDYgKzI1OSw4IEBAIFdlYlByb2Nlc3NQcm94eTo6
V2ViUHJvY2Vzc1Byb3h5KFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgV2Vic2l0ZURhdGFT
dG9yZSoKIAogICAgIFdlYlBhc3RlYm9hcmRQcm94eTo6c2luZ2xldG9uKCkuYWRkV2ViUHJvY2Vz
c1Byb3h5KCp0aGlzKTsKIAorICAgIGlmICh3ZWJzaXRlRGF0YVN0b3JlKQorICAgICAgICBtX3Nl
c3Npb25JRCA9IHdlYnNpdGVEYXRhU3RvcmUtPnNlc3Npb25JRCgpOwogICAgIHBsYXRmb3JtSW5p
dGlhbGl6ZSgpOwogfQogCkBAIC0zNDYsMTEgKzM0OCwxOSBAQCB2b2lkIFdlYlByb2Nlc3NQcm94
eTo6c2V0SXNJblByb2Nlc3NDYWNoZShib29sIHZhbHVlLCBXaWxsU2h1dERvd24gd2lsbFNodXRE
b3duKQogICAgIH0KIH0KIAorV2Vic2l0ZURhdGFTdG9yZSogV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJz
aXRlRGF0YVN0b3JlKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fc2Vzc2lvbklEKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBXZWJzaXRlRGF0YVN0b3JlOjpleGlzdGluZ0Rh
dGFTdG9yZUZvclNlc3Npb25JRCgqbV9zZXNzaW9uSUQpOworfQorCiB2b2lkIFdlYlByb2Nlc3NQ
cm94eTo6c2V0V2Vic2l0ZURhdGFTdG9yZShXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUpCiB7
Ci0gICAgQVNTRVJUKCFtX3dlYnNpdGVEYXRhU3RvcmUpOworICAgIEFTU0VSVCghbV9zZXNzaW9u
SUQpOwogICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzLCAic2V0V2Vic2l0
ZURhdGFTdG9yZSgpIGRhdGFTdG9yZT0lcCwgc2Vzc2lvbklEPSUiIFBSSXU2NCwgJmRhdGFTdG9y
ZSwgZGF0YVN0b3JlLnNlc3Npb25JRCgpLnRvVUludDY0KCkpOwotICAgIG1fd2Vic2l0ZURhdGFT
dG9yZSA9ICZkYXRhU3RvcmU7CisgICAgbV9zZXNzaW9uSUQgPSBkYXRhU3RvcmUuc2Vzc2lvbklE
KCk7CiAgICAgdXBkYXRlUmVnaXN0cmF0aW9uV2l0aERhdGFTdG9yZSgpOwogICAgIHNlbmQoTWVz
c2FnZXM6OldlYlByb2Nlc3M6OlNldFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzKHByb2Nlc3NQ
b29sKCkud2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMoKnRoaXMsIGRhdGFTdG9yZSkpLCAw
KTsKIApAQCAtMzYxLDE5ICszNzEsMTcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnNldFdlYnNp
dGVEYXRhU3RvcmUoV2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlKQogCiBib29sIFdlYlByb2Nl
c3NQcm94eTo6aXNEdW1teVByb2Nlc3NQcm94eSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fd2Vi
c2l0ZURhdGFTdG9yZSAmJiBwcm9jZXNzUG9vbCgpLmR1bW15UHJvY2Vzc1Byb3h5KG1fd2Vic2l0
ZURhdGFTdG9yZS0+c2Vzc2lvbklEKCkpID09IHRoaXM7CisgICAgcmV0dXJuIG1fc2Vzc2lvbklE
ICYmIHByb2Nlc3NQb29sKCkuZHVtbXlQcm9jZXNzUHJveHkoKm1fc2Vzc2lvbklEKSA9PSB0aGlz
OwogfQogCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6dXBkYXRlUmVnaXN0cmF0aW9uV2l0aERhdGFT
dG9yZSgpCiB7Ci0gICAgaWYgKCFtX3dlYnNpdGVEYXRhU3RvcmUpCi0gICAgICAgIHJldHVybjsK
LSAgICAKLSAgICBib29sIHNob3VsZEJlUmVnaXN0ZXJlZCA9IHBhZ2VDb3VudCgpIHx8IHByb3Zp
c2lvbmFsUGFnZUNvdW50KCk7Ci0gICAgaWYgKHNob3VsZEJlUmVnaXN0ZXJlZCkKLSAgICAgICAg
bV93ZWJzaXRlRGF0YVN0b3JlLT5yZWdpc3RlclByb2Nlc3MoKnRoaXMpOwotICAgIGVsc2UKLSAg
ICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlLT51bnJlZ2lzdGVyUHJvY2VzcygqdGhpcyk7CisgICAg
aWYgKGF1dG8qIGRhdGFTdG9yZSA9IHdlYnNpdGVEYXRhU3RvcmUoKSkgeworICAgICAgICBpZiAo
cGFnZUNvdW50KCkgfHwgcHJvdmlzaW9uYWxQYWdlQ291bnQoKSkKKyAgICAgICAgICAgIGRhdGFT
dG9yZS0+cmVnaXN0ZXJQcm9jZXNzKCp0aGlzKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
ZGF0YVN0b3JlLT51bnJlZ2lzdGVyUHJvY2VzcygqdGhpcyk7CisgICAgfQogfQogCiB2b2lkIFdl
YlByb2Nlc3NQcm94eTo6YWRkUHJvdmlzaW9uYWxQYWdlUHJveHkoUHJvdmlzaW9uYWxQYWdlUHJv
eHkmIHByb3Zpc2lvbmFsUGFnZSkKQEAgLTU5Niw3ICs2MDQsNyBAQCB2b2lkIFdlYlByb2Nlc3NQ
cm94eTo6YWRkRXhpc3RpbmdXZWJQYWdlKFdlYlBhZ2VQcm94eSYgd2ViUGFnZSwgQmVnaW5zVXNp
bmdEYXRhUwogICAgIEFTU0VSVCghbV9wYWdlTWFwLmNvbnRhaW5zKHdlYlBhZ2UuaWRlbnRpZmll
cigpKSk7CiAgICAgQVNTRVJUKCFnbG9iYWxQYWdlTWFwKCkuY29udGFpbnMod2ViUGFnZS5pZGVu
dGlmaWVyKCkpKTsKICAgICBSRUxFQVNFX0FTU0VSVCghbV9pc0luUHJvY2Vzc0NhY2hlKTsKLSAg
ICBBU1NFUlQoIW1fd2Vic2l0ZURhdGFTdG9yZSB8fCBtX3dlYnNpdGVEYXRhU3RvcmUgPT0gJndl
YlBhZ2Uud2Vic2l0ZURhdGFTdG9yZSgpKTsKKyAgICBBU1NFUlQoIW1fc2Vzc2lvbklEIHx8IHdl
YnNpdGVEYXRhU3RvcmUoKSA9PSAmd2ViUGFnZS53ZWJzaXRlRGF0YVN0b3JlKCkpOwogCiAgICAg
aWYgKGJlZ2luc1VzaW5nRGF0YVN0b3JlID09IEJlZ2luc1VzaW5nRGF0YVN0b3JlOjpZZXMpIHsK
ICAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9wcm9jZXNzUG9vbCk7CkBAIC04MTUsNyArODIzLDEx
IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp1cGRhdGVCYWNrRm9yd2FyZEl0ZW0oY29uc3QgQmFj
a0ZvcndhcmRMaXN0SXRlbVN0YXRlJiBpdGVtCiAKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpnZXRO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKLSAgICB3ZWJz
aXRlRGF0YVN0b3JlKCkuZ2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCp0aGlzLCBXVEZNb3Zl
KHJlcGx5KSk7CisgICAgYXV0byogZGF0YVN0b3JlID0gd2Vic2l0ZURhdGFTdG9yZSgpOworICAg
IGlmICghZGF0YVN0b3JlKQorICAgICAgICByZXR1cm4gcmVwbHkoeyB9KTsKKworICAgIGRhdGFT
dG9yZS0+Z2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCp0aGlzLCBXVEZNb3ZlKHJlcGx5KSk7
CiB9CiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCkBAIC0xNzAxLDExICsxNzEzLDEyIEBAIHZv
aWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvck1haW5GcmFtZShj
b25zdCBVUkwmIHVybCkKICAgICB9CiAKICAgICBhdXRvIHJlZ2lzdHJhYmxlRG9tYWluID0gV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4geyB1cmwgfTsKLSAgICBpZiAobV9yZWdpc3RyYWJsZURv
bWFpbiAmJiAqbV9yZWdpc3RyYWJsZURvbWFpbiAhPSByZWdpc3RyYWJsZURvbWFpbikgeworICAg
IGF1dG8qIGRhdGFTdG9yZSA9IHdlYnNpdGVEYXRhU3RvcmUoKTsKKyAgICBpZiAoZGF0YVN0b3Jl
ICYmIG1fcmVnaXN0cmFibGVEb21haW4gJiYgKm1fcmVnaXN0cmFibGVEb21haW4gIT0gcmVnaXN0
cmFibGVEb21haW4pIHsKICAgICAgICAgaWYgKGlzUnVubmluZ1NlcnZpY2VXb3JrZXJzKCkpCi0g
ICAgICAgICAgICB3ZWJzaXRlRGF0YVN0b3JlKCkubmV0d29ya1Byb2Nlc3MoKS50ZXJtaW5hdGVS
ZW1vdGVXb3JrZXJDb250ZXh0Q29ubmVjdGlvbldoZW5Qb3NzaWJsZShSZW1vdGVXb3JrZXJUeXBl
OjpTZXJ2aWNlV29ya2VyLCB3ZWJzaXRlRGF0YVN0b3JlKCkuc2Vzc2lvbklEKCksICptX3JlZ2lz
dHJhYmxlRG9tYWluLCBjb3JlUHJvY2Vzc0lkZW50aWZpZXIoKSk7CisgICAgICAgICAgICBkYXRh
U3RvcmUtPm5ldHdvcmtQcm9jZXNzKCkudGVybWluYXRlUmVtb3RlV29ya2VyQ29udGV4dENvbm5l
Y3Rpb25XaGVuUG9zc2libGUoUmVtb3RlV29ya2VyVHlwZTo6U2VydmljZVdvcmtlciwgZGF0YVN0
b3JlLT5zZXNzaW9uSUQoKSwgKm1fcmVnaXN0cmFibGVEb21haW4sIGNvcmVQcm9jZXNzSWRlbnRp
ZmllcigpKTsKICAgICAgICAgaWYgKGlzUnVubmluZ1NoYXJlZFdvcmtlcnMoKSkKLSAgICAgICAg
ICAgIHdlYnNpdGVEYXRhU3RvcmUoKS5uZXR3b3JrUHJvY2VzcygpLnRlcm1pbmF0ZVJlbW90ZVdv
cmtlckNvbnRleHRDb25uZWN0aW9uV2hlblBvc3NpYmxlKFJlbW90ZVdvcmtlclR5cGU6OlNoYXJl
ZFdvcmtlciwgd2Vic2l0ZURhdGFTdG9yZSgpLnNlc3Npb25JRCgpLCAqbV9yZWdpc3RyYWJsZURv
bWFpbiwgY29yZVByb2Nlc3NJZGVudGlmaWVyKCkpOworICAgICAgICAgICAgZGF0YVN0b3JlLT5u
ZXR3b3JrUHJvY2VzcygpLnRlcm1pbmF0ZVJlbW90ZVdvcmtlckNvbnRleHRDb25uZWN0aW9uV2hl
blBvc3NpYmxlKFJlbW90ZVdvcmtlclR5cGU6OlNoYXJlZFdvcmtlciwgZGF0YVN0b3JlLT5zZXNz
aW9uSUQoKSwgKm1fcmVnaXN0cmFibGVEb21haW4sIGNvcmVQcm9jZXNzSWRlbnRpZmllcigpKTsK
IAogICAgICAgICAvLyBOdWxsIG91dCByZWdpc3RyYWJsZSBkb21haW4gc2luY2UgdGhpcyBwcm9j
ZXNzIGhhcyBub3cgYmVlbiB1c2VkIGZvciBzZXZlcmFsIGRvbWFpbnMuCiAgICAgICAgIG1fcmVn
aXN0cmFibGVEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7IH07CkBAIC0xNzUy
LDggKzE3NjUsOCBAQCBXZWJQcm9jZXNzUG9vbCYgV2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzUG9v
bCgpIGNvbnN0CiAKIFBBTDo6U2Vzc2lvbklEIFdlYlByb2Nlc3NQcm94eTo6c2Vzc2lvbklEKCkg
Y29uc3QKIHsKLSAgICBBU1NFUlQobV93ZWJzaXRlRGF0YVN0b3JlKTsKLSAgICByZXR1cm4gbV93
ZWJzaXRlRGF0YVN0b3JlLT5zZXNzaW9uSUQoKTsKKyAgICBBU1NFUlQobV9zZXNzaW9uSUQpOwor
ICAgIHJldHVybiAqbV9zZXNzaW9uSUQ7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpjcmVh
dGVTcGVlY2hSZWNvZ25pdGlvblNlcnZlcihTcGVlY2hSZWNvZ25pdGlvblNlcnZlcklkZW50aWZp
ZXIgaWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgK
aW5kZXggNGMyMmRhYjE4MGUwLi43NjI3ODUzMTk2NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5oCkBAIC0xNjcsNyArMTY3LDcgQEAgcHVibGljOgogICAgIHZv
aWQgZW5hYmxlUmVtb3RlV29ya2VycyhSZW1vdGVXb3JrZXJUeXBlLCBjb25zdCBVc2VyQ29udGVu
dENvbnRyb2xsZXJJZGVudGlmaWVyJik7CiAgICAgdm9pZCBkaXNhYmxlUmVtb3RlV29ya2VycyhS
ZW1vdGVXb3JrZXJUeXBlKTsKIAotICAgIFdlYnNpdGVEYXRhU3RvcmUmIHdlYnNpdGVEYXRhU3Rv
cmUoKSBjb25zdCB7IEFTU0VSVChtX3dlYnNpdGVEYXRhU3RvcmUpOyByZXR1cm4gKm1fd2Vic2l0
ZURhdGFTdG9yZTsgfQorICAgIFdlYnNpdGVEYXRhU3RvcmUqIHdlYnNpdGVEYXRhU3RvcmUoKSBj
b25zdDsKICAgICB2b2lkIHNldFdlYnNpdGVEYXRhU3RvcmUoV2Vic2l0ZURhdGFTdG9yZSYpOwog
ICAgIAogICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0OwpAQCAtNjE3LDggKzYx
Nyw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCB3
ZWJQcm9jZXNzSXNSZXNwb25zaXZlKT4+IG1faXNSZXNwb25zaXZlQ2FsbGJhY2tzOwogCiAgICAg
VmlzaWJsZVdlYlBhZ2VDb3VudGVyIG1fdmlzaWJsZVBhZ2VDb3VudGVyOwotCi0gICAgUmVmUHRy
PFdlYnNpdGVEYXRhU3RvcmU+IG1fd2Vic2l0ZURhdGFTdG9yZTsKKyAgICBzdGQ6Om9wdGlvbmFs
PFBBTDo6U2Vzc2lvbklEPiBtX3Nlc3Npb25JRDsKIAogICAgIGJvb2wgbV9pc1VuZGVyTWVtb3J5
UHJlc3N1cmUgeyBmYWxzZSB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9nbGliL1dlYlByb2Nlc3NQcm94eUdMaWIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Z2xpYi9XZWJQcm9jZXNzUHJveHlHTGliLmNwcAppbmRleCA4NjRkMGUzNmZiOGQuLjRiZjk3ZTM0
ZWViMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNz
UHJveHlHTGliLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dlYlByb2Nl
c3NQcm94eUdMaWIuY3BwCkBAIC00Miw3ICs0Miw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojpw
bGF0Zm9ybUdldExhdW5jaE9wdGlvbnMoUHJvY2Vzc0xhdW5jaGVyOjpMYXVuY2hPcHRpb25zJiBs
CiAgICAgbGF1bmNoT3B0aW9ucy5leHRyYUluaXRpYWxpemF0aW9uRGF0YS5zZXQoImVuYWJsZS1z
YW5kYm94Il9zLCBtX3Byb2Nlc3NQb29sLT5zYW5kYm94RW5hYmxlZCgpID8gInRydWUiX3MgOiAi
ZmFsc2UiX3MpOwogCiAgICAgaWYgKG1fcHJvY2Vzc1Bvb2wtPnNhbmRib3hFbmFibGVkKCkpIHsK
LSAgICAgICAgV2Vic2l0ZURhdGFTdG9yZSogZGF0YVN0b3JlID0gbV93ZWJzaXRlRGF0YVN0b3Jl
LmdldCgpOworICAgICAgICBXZWJzaXRlRGF0YVN0b3JlKiBkYXRhU3RvcmUgPSB3ZWJzaXRlRGF0
YVN0b3JlKCk7CiAgICAgICAgIGlmICghZGF0YVN0b3JlKSB7CiAgICAgICAgICAgICAvLyBQcmV3
YXJtZWQgcHJvY2Vzc2VzIGRvbid0IGhhdmUgYSBXZWJzaXRlRGF0YVN0b3JlIHlldCwgc28gdXNl
IHRoZSBwcmltYXJ5IFdlYnNpdGVEYXRhU3RvcmUgZnJvbSB0aGUgV2ViUHJvY2Vzc1Bvb2wuCiAg
ICAgICAgICAgICAvLyBUaGUgcHJvY2VzcyB3b24ndCBiZSB1c2VkIGlmIGN1cnJlbnQgV2Vic2l0
ZURhdGFTdG9yZSBpcyBkaWZmZXJlbnQgdGhhbiB0aGUgV2ViUHJvY2Vzc1Bvb2wgcHJpbWFyeSBv
bmUuCi0tIAoyLjMyLjAgKEFwcGxlIEdpdC0xMzIpCgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>